<?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>CGCalendar</name>
	<version>2.5</version>
    <mincmsversion>2.1.6</mincmsversion>
	<help><![CDATA[PGgzPldoYXQgZG9lcyB0aGlzIGRvPzwvaDM+CjxwPkNhbGd1eXMgQ2FsZW5kYXIgaXMgYSBtb2R1bGUgZm9yIGRpc3BsYXlpbmcgZXZlbnRzIG9uIHlvdXIgcGFnZS4gV2hlbiB0aGUgbW9kdWxlIGlzIGluc3RhbGxlZCwgYSAmcXVvdDtDYWxndXlzIENhbGVuZGFyJnF1b3Q7IGFkbWluIHBhZ2UgaXMgYWRkZWQgdG8gdGhlIHBsdWdpbnMgbWVudQp0aGF0IHdpbGwgYWxsb3cgeW91IHRvIG1hbmFnZSB5b3VyIGV2ZW50cy48L3A+Cgo8aDM+U2VjdXJpdHk8L2gzPgo8cD5UaGUgdXNlciBtdXN0IGJlbG9uZyB0byBhIGdyb3VwIHdpdGggdGhlICdNb2RpZnkgQ2FsZW5kYXInIHBlcm1pc3Npb24gaW4gb3JkZXIgdG8gYWRkLCBlZGl0LCBvciBkZWxldGUgY2FsZW5kYXIgZXZlbnQgZW50cmllcy48L3A+Cgo8aDM+SG93IGRvIEkgdXNlIGl0PzwvaDM+CjxvbD4KICA8bGk+RW5zdXJlIGpxdWVyeSwgYW5kIGpxdWVyeS11aSBhcmUgZW5hYmxlZCBpbiB5b3VyIHBhZ2UgcmVuZGVyaW5nLgogICAgIDxwPmkuZTogIGFkZCA8Y29kZT57Y21zX2pxdWVyeX08L2NvZGU+IHRvIHRoZSBoZWFkIHNlY3Rpb24gb2YgeW91ciBwYWdlIHRlbXBsYXRlLjwvcD4KICA8L2xpPgogIDxsaT5FbnN1cmUgdGhhdCA8Y29kZT57Y2dqc19yZW5kZXJ9PC9jb2RlPiBpcyBjYWxsZWQgaW4geW91ciBwYWdlIHRlbXBsYXRlIDxlbT5hZnRlcjwvZW0+IGpxdWVyeSBpcyBsb2FkZWQuPC9saT4KICA8bGk+UHV0IHRoZSBjbXNfbW9kdWxlIHRhZyBpbiB0aGUgcGFnZSBjb250ZW50LiBNYWtlIHN1cmUgaXQgaXMgbm90IGVuY2xvc2VkIGluICZsdDtwcmUmZ3Q7Li4uJmx0Oy9wcmUmZ3Q7IHRhZ3MuICBZb3Ugd2lsbCBuZWVkIHRvIHZpZXcgc291cmNlIGNvZGUgZm9yIHRoaXMuICBUaGUgY29kZSB3b3VsZCBsb29rIHNvbWV0aGluZyBsaWtlOjxiciAvPgogIDx0dD57Y21zX21vZHVsZSBtb2R1bGU9IkNHQ2FsZW5kYXIifTwvdHQ+PGJyIC8+CiAgPGxpPlN0eWxlIHRoZSBjYWxlbmRhciBhcHByb3ByaWF0ZWx5IGZvciB5b3VyIGRpc3BsYXk8L2xpPgo8L29sPgoKPGgzPk5vdGVzOjwvaDM+Cjx1bD4KICA8bGk+QWRtaW4gVGhlbWVzCiAgICA8cD5UaGlzIG1vZHVsZXMgYWRtaW4gcGFuZWwgPGVtPih2ZXJzaW9uIDEuMTQrKSByZWxpZXMgaGVhdmlseSBvbiBzdHlsZXMgYW5kIHRvb2xzIGluIHRoZSBDTVNNUyBPbmVFbGV2ZW4gYWRtaW4gdGhlbWUuICBJdCBtYXkgbm90IGZ1bmN0aW9uIHByb3BlcnkgKG9yIGF0IGxlYXN0IGxvb2sgcHJvcGVybHkpIGluIG90aGVyIGFkbWluIHRoZW1lcyB0aGF0IGRvbid0IGRpcmVjdGx5IHJlcGxpY2F0ZSB0aGVzZSBzdHlsZXMuPC9wPgogIDwvbGk+CiAgPGxpPlRlbXBsYXRlcwogICAgPHA+VGhlIGRlZmF1bHQgdGVtcGxhdGVzIHByb3ZpZGVkIHdpdGggdGhpcyBtb2R1bGUgYXJlIHB1cmVseSBzYW1wbGVzLiAgSXQgaXMgZXhwZWN0ZWQgdGhhdCB5b3Ugd2lsbCBuZWVkIHRvIGFkanVzdCB0aGUgdGVtcGxhdGVzLCBhbmQgYWRkIHN0eWxlcyB0byB5b3VyIHN0eWxlc2hlZXRzIGluIG9yZGVyIHRvIGFkanVzdCB0aGUgb3V0cHV0IG9mIHRoaXMgbW9kdWxlIHRvIG1hdGNoIHlvdXIgdXNhZ2UsIGFuZCB5b3VyIHNpdGVzIHRoZW1lLjwvcD4KICA8L2xpPgogIDxsaT5qUXVlcnkKICAgIDxwPlRoZSB0ZW1wbGF0ZXMgcHJvdmlkZWQgYnkgZGVmYXVsdCB3aXRoIHRoaXMgbW9kdWxlIG1ha2UgdXNlIG9mIEpRdWVyeSwgYW5kIEpRdWVyeVVJLiBJbiBvcmRlciBmb3IgdGhlIHByb3BlciBmdW5jdGlvbmluZyBvZiB0aGlzIG1vZHVsZSBvbiBhIGRlZmF1bHQgaW5zdGFsbCB5b3Ugc2hvdWxkIGVuc3VyZSB0aGF0IHRoZXNlIGxpYnJhcmllcyBhcmUgcHJvcGVybHkgY29uZmlndXJlZCBvbiB0aGUgd2ViIHBhZ2VzIHRoYXQgd2lsbCBiZSBkaXNwbGF5aW5nIHRoZSBvdXRwdXQgb2YgdGhpcyBtb2R1bGUuPC9wPgogIDwvbGk+CjwvdWw+Cgo8aDM+UGFyYW1ldGVyczwvaDM+Cjx0YWJsZSBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTA+CiAgPHRyPgogICAgIDx0ZD5hY3Rpb248L3RkPgogICAgIDx0ZD5BY2NlcHRhYmxlIHZhbHVlczo8YnI+CiAgICAgICAgImRlZmF1bHQiIC0gU3BlY2lmaWVzIHRoZSBkZWZhdWx0IGFjdGlvbiwgd29ya3MgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgImRpc3BsYXkiIHBhcmFtZXRlciBiZWxvdy48YnIvPgoJImZ1bGxjYWxlbmRhciIgLSBVc2VzIHRoZSBmdWxsQ2FsZW5kYXIganF1ZXJ5IHBsdWdpbiAocmVxdWlyZXMganF1ZXJ5LCBqcXVlcnktdWkgYW5kIGpzcmVuZGVyIHRvIGJlIGVuYWJsZWQpIHRvIHByb3ZpZGUgYSBkeW5hbWljIGludGVyYWN0aXZlIGNhbGVuZGFyIGRpc3BsYXkuCgkic2VhcmNoIiAtIERpc3BsYXkgYSBmb3JtIGZvciBhZHZhbmNlZCBzZWFyY2hpbmcgb2YgY2FsZW5kYXIgZXZlbnRzLjxici8+CiAgICAgICAgIm15ZXZlbnRzIiAtIERpc3BsYXkgYSBsaXN0IG9mIGFsbCBvZiBhIHVzZXJzIGV2ZW50cywgYW5kIGFsbG93IGFkZGluZywgZWRpdGluZyBvciBkZWxldGluZyB0aG9zZSBldmVudHM8YnIvPgogICAgICAgICJhZGRlZGl0X2V2ZW50IiAtIERpc3BsYXkgYSBmb3JtIGFsbG93aW5nIHRvIGFkZCBvciBlZGl0IGEgc2luZ2xlIGV2ZW50LjsKICAgICA8L3RkPgogIDwvdHI+CgogIDx0cj4KICAgICA8dGQ+ZGlzcGxheTwvdGQ+CiAgICAgPHRkPkFjY2VwdGFibGUgdmFsdWVzOjxicj4KCSAiZnVsbGNhbGVuZGFyIiAtIGRpc3BsYXlzIGV2ZW50cyBmb3IgdGhlIGN1cnJlbnQgbW9udGggaW4gYSBkeW5hbWljIGphdmFzY3JpcHQgZm9ybS48L3A+CgkgImV2ZW50IiAtIGRpc3BsYXkgYSBkZXRhaWwgcmVwb3J0IGZvciBhIHNwZWNpZmljIGV2ZW50LiAgVG8gdXNlIHRoaXMgZGlzcGxheSBtb2RlLCB0aGUgZXZlbnRfaWQgcGFyYW1ldGVyIG11c3QgYmUgc3BlY2lmaWVkLjxici8+CgkgImxpc3QvbW9udGgiIC0gZGlzcGxheXMgZXZlbnRzIGZvciB0aGUgY3VycmVudCBtb250aCBhcyBhIGxpc3QuICBJbmNsdWRlcyBsaW5rcyB0byBwcmV2LiBhbmQgbmV4dCBtb250aHMuPGJyLz4KCSAiZGF5bGlzdCIgLSBkaXNwbGF5cyBldmVudHMgZm9yIHRoZSBjdXJyZW50IGRheSBhcyBhIGxpc3QuICBJbmNsdWRlcyBsaW5rcyB0byBwcmV2LiBhbmQgbmV4dCB3ZWVrcy48YnIvPgoJICJ3ZWVrbGlzdCIgLSBkaXNwbGF5cyBldmVudHMgZm9yIHRoZSBjdXJyZW50IHdlZWsgYXMgYSBsaXN0LiAgSW5jbHVkZXMgbGlua3MgdG8gcHJldi4gYW5kIG5leHQgd2Vla3MuPGJyLz4KCSAieWVhcmxpc3QiIC0gZGlzcGxheXMgZXZlbnRzIGZvciB0aGUgY3VycmVudCB5ZWFyIGluIGEgbGlzdC4gIEluY2x1ZGVzIGxpbmtzIHRvIHByZXYuIGFuZCBuZXh0IHllYXJzLjxici8+CgkgInBhc3RsaXN0IiAtIGRpc3BsYXlzIGFsbCBwYXN0IGV2ZW50cy4gIE5vIHByZXYvbmV4dCBsaW5rcy48YnIvPgoJICJ1cGNvbWluZ2xpc3QiIC0gZGlzcGxheXMgYWxsIHVwY29taW5nIGV2ZW50cy4gIE5vIHByZXYvbmV4dCBsaW5rcy48YnIvPgogIAkgIERlZmF1bHRzIHRvICJmdWxsY2FsZW5kYXIiIDxlbT4ob3B0aW9uYWwpPC9lbT4KICAgICA8L3RkPgogIDwvdHI+CgogIDx0cj4KICAgICA8dGQ+Y2F0ZWdvcnk8L3RkPgogICAgIDx0ZD5Pbmx5IGRpc3BsYXkgaXRlbXMgZm9yIHRoYXQgY2F0ZWdvcnkuIExlYXZpbmcgdW5zZXQsIHdpbGwgc2hvdyBhbGwgY2F0ZWdvcmllcy4KICAgICAgICAgPHA+Tm90ZSB0aGF0IHlvdSBjYW4gbGltaXQgdG8gbXVsdGlwbGUgY2F0ZWdvcmllcyBieSBzZXBhcmF0aW5nIGVhY2ggb25lIHdpdGggYSBjb21tYS4gVGhpcyBwYXJhbWV0ZXIgY2FuIGJlCiAgICAgICAgIHVzZWQgd2l0aCB0aGUgbXlldmVudHMgYWN0aW9uIGFuZCB3aXRoIHRoZSB2YXJpb3VzIGRpc3BsYXkgb3B0aW9ucy4gIElmIG11bHRpcGxlIGNhdGVnb3J5IG5hbWVzIGFyZSBzcGVjaWZpZWQKICAgICAgICAgYSBtYXRjaCBpcyBkb25lIG9uIEFOWSBvZiB0aGUgY2F0ZWdvcmllcyBzcGVjaWZpZWQuIDxlbT4ob3B0aW9uYWwpPC9lbT48L3A+CgkgPC90ZD4KICA8L3RyPgoKICA8dHI+CiAgICAgPHRkPm1vbnRoPC90ZD4KICAgICA8dGQ+RGlzcGxheSBlbnRyaWVzIGZvciBhIHBhcnRpY3VsYXIgbW9udGguIElmIHllYXIgaXMgbm90IHNldCwgdGhlbiB0aGUgY3VycmVudCB5ZWFyIGlzCgkgYXNzdW1lZC4gVGhpcyBvcHRpb24gb25seSB3b3JrcyBpZiBkaXNwbGF5IGlzIG9uZSBvZiB0aGUgbGlzdCB2aWV3cy48ZW0+KG9wdGlvbmFsKTwvZW0+PC90ZD4KICA8L3RyPgoKICA8dHI+CiAgICAgPHRkPnllYXI8L3RkPgogICAgIDx0ZD5EaXNwbGF5IGVudHJpZXMgZm9yIGEgcGFydGljdWxhciB5ZWFyLgoJVGhpcyBvcHRpb24gb25seSB3b3JrcyBpZiBkaXNwbGF5IGlzIHNldCB0byAibGlzdCIgPGVtPihvcHRpb25hbCk8L2VtPjwvdGQ+CiAgPC90cj4KCiAgPHRyPgogICAgIDx0ZD5saW1pdDwvdGQ+Cgk8dGQ+PGVtPihvcHRpb25hbCk8L2VtPiAgU2V0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBldmVudHMgdG8gZGlzcGxheS4gVGhpcyBvcHRpb24gb25seSBhcHBsaWVzIHRvIHRoZSB2YXJpb3VzICJsaXN0IiB2aWV3cy4gIFRoZSBtYXhpbXVtIHZhbHVlIGZvciB0aGUgbGltaXQgcGFyYW1ldGVyIGlzIDUwMDAgZXZlbnRzLjwvdGQ+CiAgPC90cj4KCiAgPHRyPgogICAgIDx0ZD51c2Vfc2Vzc2lvbjwvdGQ+CiAgICAgPHRkPlVzZSBzZXNzaW9uIHZhcmlhYmxlcyB0byBzdG9yZSB0aGUgY3VycmVudCBkYXRlIG9mIGEgY2FsZW5kYXIgdmlldy4gVGhpcyBpcyB1c2VkIG9ubHkgaW4gdGhlIHNlYXJjaCBmb3JtIHRvIGFsbG93IHNhdmluZyB0aGUgc2VhcmNoIHNldHRpbmdzIHVudGlsIHRoZSBicm93c2VyIGlzIHJlc2V0LiAgRGVmYXVsdCBpcyBmYWxzZS48L3RkPgogIDwvdHI+CgogIDx0cj4KICAgICA8dGQ+cmV2ZXJzZTwvdGQ+CiAgICAgPHRkPlNldCB0byB0cnVlIHRvIGRpc3BsYXkgZXZlbnRzIGluIHJldmVyc2UgY2hyb25vbG9naWNhbCBvcmRlci4gQXBwbGljYWJsZSB0byAibGlzdCIsICJwYXN0bGlzdCIgYW5kICJ1cGNvbWluZ2xpc3QiIGRpc3BsYXlzLiBEZWZhdWx0IGlzIGZhbHNlLiBGb3IgdGhlICJwYXN0bGlzdCIgZGlzcGxheSB0aGlzIHdpbGwgcmVzdWx0IGluIG91dHB1dCBiZWluZyBkaXNwbGF5ZWQgaW4gaW5jcmVhc2luZyBjaHJvbm9sb2dpY2FsIG9yZGVyLjwvZW0+PC90ZD4KICA8L3RyPgoKICA8dHI+CiAgICAgPHRkPmRldGFpbHBhZ2U9InBhZ2VhbGlhcyI8L3RkPgogICAgIDx0ZD5QYWdlIHRvIGRpc3BsYXkgQ2FsZW5kYXIgZXZlbnQgZGV0YWlscyBpbi4gVGhpcyBjYW4gZWl0aGVyIGJlIGEgcGFnZSBhbGlhcyBvciBhbiBpZC4gVXNlZCB0byBhbGxvdyBkZXRhaWxzIHRvIGJlIGRpc3BsYXllZCBpbiBhIGRpZmZlcmVudCB0ZW1wbGF0ZSBmcm9tIHRoZSBzdW1tYXJ5LiBEZWZhdWx0IGlzIGN1cnJlbnQgcGFnZS4gPGVtPihvcHRpb25hbCk8L2VtPjwvdGQ+CiAgPC90cj4KCiAgPHRyPgogICAgIDx0ZD5ldmVudF9pZDwvdGQ+CiAgICAgPHRkPlVzZWQgd2l0aCB0aGUgZGlzcGxheT1ldmVudCBtb2RlLCB0aGlzIHBhcmFtZXRlciBhbGxvd3MgeW91IHRvIGRpc3BsYXkgaW5mb3JtYXRpb24gYWJvdXQgYSBzcGVjaWZpYyBldmVudCBvbiBkZW1hbmQuPC90ZD4KICA8L3RyPgoKICA8dHI+CiAgICAgPHRkPmZ1bGxjYWxlbmRhcnRlbXBsYXRlPC90ZD4KICAgICA8dGQ+VXNlZCB3aXRoIGRpc3BsYXk9ZnVsbGNhbGVuZGFyLCB0aGlzIHBhcmFtZXRlciBhbGxvd3MgeW91IHRvIHNwZWNpZnkgYSBub24gZGVmYXVsdCB0ZW1wbGF0ZS48L3RkPgogIDwvdHI+CgogIDx0cj4KICAgICA8dGQ+ZXZlbnR0ZW1wbGF0ZTwvdGQ+CiAgICAgPHRkPlVzZWQgd2l0aCBkaXNwbGF5PWV2ZW50LCBvciB5b3UgY2FuIGFsc28gc3BlY2lmeSB0aGlzIHBhcmFtZXRlciBvbiBhbnkgQ2FsZW5kYXIgbW9kdWxlIGNhbGwsIHRoaXMgcGFyYW1ldGVyIGFsbG93cyB5b3UgdG8gc3BlY2lmeSBhIG5vbiBkZWZhdWx0IGV2ZW50IHRlbXBsYXRlLiAgVGhpcyBwYXJhbWV0ZXIgd2lsbCBoYXZlIG5vIGVmZmVjdCBpZiBwcmV0dHkgdXJscyBhcmUgZW5hYmxlZC48L3RkPgogIDwvdHI+CgogIDx0cj4KICAgICA8dGQ+bGlzdHRlbXBsYXRlPC90ZD4KICAgICA8dGQ+VXNlZCB3aXRoIGRpc3BsYXk9bGlzdCwgdGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IGEgbm9uIGRlZmF1bHQgbGlzdCB0ZW1wbGF0ZS48L3RkPgogIDwvdHI+CgogIDx0cj4KICAgICA8dGQ+dW5pcXVlX29ubHk8L3RkPgogICAgIDx0ZD5Vc2VkIHdpdGggYWN0aW9uPXNlYXJjaCwgdGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IHRoYXQgb25seSBvbmUgZXZlbnQgd2l0aCBhIGNlcnRhaW4gbmFtZSBzaG91bGQgYmUgcmV0dXJuZWQuICBEZWZhdWx0IHZhbHVlIGlzIDAnOwogIDwvdHI+CjwvdGFibGU+Cgo8aDM+Q3VzdG9tIEZpZWxkczwvaDM+CjxwPkl0IGlzIHBvc3NpYmxlIHRvIGRlZmluZSBhIG51bWJlciBvZiBjdXN0b20gZmllbGRzIHRvIGFzc29jaWF0ZSB3aXRoIGVhY2ggZXZlbnQgdXNpbmcgdGhlIEZpZWxkcyB0YWIgaW4gdGhlIGFkbWluLiBPbmNlIG9uZSBvciBtb3JlIGZpZWxkcyBoYXMgYmVlbiBkZWZpbmVkIHRoZSB2YWx1ZXMgb2YgdGhhdCBmaWVsZCBmb3IgZWFjaCBldmVudCBjYW4gYmUgc2V0IHVzaW5nIHRoZSBldmVudHMgdGFiIGluIHRoZSBhZG1pbi4gVGhlc2UgZmllbGQgdmFsdWVzIGNhbiBiZSByZW5kZXJlZCB1c2luZyBhIHRlbXBsYXRlIHVzaW5nIHRoZSBzeW50YXggZXZlbnQuZmllbGRzLmZpZWxkbmFtZS4gSGludCAtIGluc2VydCB7ZGVidWd9IGludG8geW91ciB0ZW1wbGF0ZSBzZWUgYWxsIHRoZSBkYXRhIHBhc3NlZCB0byB0aGUgdGVtcGxhdGUuPC9wPgoKPGgzPkV4YW1wbGVzPC9oMz4KPGg0PkV4YW1wbGUgb2YgYWxsb3dpbmcgQ29tbWVudHMgb24gQ2FsZW5kYXIgZXZlbnRzPC9oND4KPHA+SW5zdGFsbCB0aGUgQ0dGZWVkYmFjayBtb2R1bGUgYW5kIHB1dCB0aGlzIGluIHlvdXIgQ2FsZW5kYXIgIkV2ZW50IFRlbXBsYXRlIjo8L3A+CjxwcmU+e0NHRmVlZEJhY2sna2V5MT0nQ0dDYWxlbmRhcicga2V5Mj0kZXZlbnQuZXZlbnRfaWR9PC9wcmU+Cgo8aDM+U3VwcG9ydDwvaDM+CjxwPlRoZSBtb2R1bGUgYXV0aG9yIGlzIGluIG5vIHdheSBvYmxpZ2F0ZWQgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0aGlzIGNvZGUgaW4gYW55IGZhc2hpb24uICBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4KPHVsPgo8bGk+QSBidWcgdHJhY2tpbmcgYW5kIGZlYXR1cmUgcmVxdWVzdCBzeXN0ZW0gaGFzIGJlZW4gY3JlYXRlZCBmb3IgdGhpcyBtb2R1bGUgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jZ2NhbGVuZGFyIj5oZXJlPC9hPi4gIFBsZWFzZSBiZSB2ZXJib3NlIGFuZCBkZXNjcmlwdGl2ZSB3aGVuIHN1Ym1pdHRpbmcgYnVnIHJlcG9ydHMgYW5kIGZlYXR1cmUgcmVxdWVzdHMsIGFuZCBmb3IgYnVnIHJlcG9ydHMgZW5zdXJlIHRoYXQgeW91IGhhdmUgcHJvdmlkZWQgc3VmZmljaWVudCBpbmZvcm1hdGlvbiB0byByZWxpYWJseSByZXByb2R1Y2UgdGhlIGlzc3VlLjwvbGk+CjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uICBXaGVuIGRlc2NyaWJpbmcgYW4gaXNzdWUgcGxlYXNlIG1ha2UgYW4gZWZmb3J0IHRvIHByb3ZpZGUgYWxsIHJlbGF2YW50IGluZm9ybWF0aW9uLCBhIHRob3JvdWdoIGRlc2NyaXB0aW9uIG9mIHlvdXIgaXNzdWUsIGFuZCBzdGVwcyB0byByZXByb2R1Y2UgaXQgb3IgeW91ciBkaXNjdXNzaW9uIG1heSBiZSBpZ25vcmVkLjwvbGk+CjxsaT5UaGUgYXV0aG9yLCBjYWxndXkxMDAwLCBjYW4gb2Z0ZW4gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9ImlyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyI+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPgo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkuICBIb3dldmVyLCBwbGVhc2UgdXNlIHRoaXMgYXMgYSBsYXN0IHJlc29ydCwgYW5kIGVuc3VyZSB0aGF0IHlvdSBoYXZlIGZvbGxvd2VkIGFsbCBhcHBsaWNhYmxlIGluc3RydWN0aW9ucyBvbiB0aGUgZm9yZ2UsIGluIHRoZSBmb3J1bXMsIGV0Yy48L2xpPgo8L3VsPgoKPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CjxwPkNvcHlyaWdodCAmY29weTsgMjAwOC0yMDE2LCBSb2JlcnQgQ2FtcGJlbGwgPGEgaHJlZj0ibWFpbHRvOmNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmciPiZsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi48L3A+CjxwPkhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAphcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwpNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4Kc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLApidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCk9yIHJlYWQgaXQgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5vbmxpbmU8L2E+PC9wPgo8aDM+SGlzdG9yeTwvaDM+CjxwPlRoaXMgbW9kdWxlIG9yaWdpbmF0ZWQgYXMgdGhlIENhbGVuZGFyIG1vZHVsZSBmb3IgQ01TTVMgYnkgUm9iIEFsbGVuIDxlbT4oYWtyYWJhdCk8L2VtPi4gIEl0IHdhcyBmb3JrZWQgdG8gQ0dDYWxlbmRhciBieSBSb2JlcnQgQ2FtcGJlbGwgPGVtPihjYWxndXkxMDAwKTwvZW0+IGluIDIwMDgsIGFuZCBzaW5jZSB0aGVuIGhhcyBoYWQgbnVtZXJvdXMgY29udHJpYnV0aW9ucyBieSBNb3J0ZW4gUG91bHNlbiA8ZW0+KG1vcnRlbkBwb3Vsc2VuLm9yZyk8L2VtPi48L3A+CjxoMz5EZXBlbmRlbmNpZXM8L2gzPjx1bD48bGk+Q0dFeHRlbnNpb25zID0mZ3Q7IDEuNTUuMzwvbGk+PGxpPkNHU2ltcGxlU21hcnR5ID0mZ3Q7IDIuMS42PC9saT48L3VsPjxoMz5QYXJhbWV0ZXJzPC9oMz48dWw+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gbXlldmVudHN0ZW1wbGF0ZT0iIiAtIEFwcGxpY2FibGUgb25seSB0byB0aGUgbXlldmVudHMgYWN0aW9uLCB0aGlzIHBhcmFtZXRlciBhbGxvd3Mgc3BlY2lmeWluZyBhIG5vbiBkZWZhdWx0IHRlbXBsYXRlIHRvIHVzZTwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gZWRpdGV2ZW50dGVtcGxhdGU9IiIgLSBBcHBsaWNhYmxlIG9ubHkgdG8gdGhlIG15ZXZlbnRzIGFjdGlvbiwgdGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHNwZWNpZnlpbmcgYSBub24gZGVmYXVsdCBlZGl0IGV2ZW50IHRlbXBsYXRlIHRvIHVzZSB3aGVuIGEgdXNlciBjcmVhdGVzIG9yIGVkaXRzIGFuIGV2ZW50PC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBkZWxldGVldmVudHRlbXBsYXRlPSIiIC0gQXBwbGljYWJsZSBvbmx5IHRvIHRoZSBkZWxldGVfZXZlbnQgYWN0aW9uLCB0aGlzIHBhcmFtZXRlciBhbGxvd3Mgc3BlY2lmeWluZyBhIG5vbiBkZWZhdWx0IGRlbGV0ZSBldmVudCB0ZW1wbGF0ZSB0byB1c2UgZm9yIHRoYXQgYWN0aW9uLjwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gZWRpdHBhZ2U9IiIgLSBBcHBsaWNhYmxlIG9ubHkgdG8gdGhlIG15ZXZlbnRzIGFjdGlvbiwgdGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHNwZWNpZnlpbmcgYSBkaWZmZXJlbnQgcGFnZSBmb3IgdGhlIGVkaXQgZm9ybS48L2xpPjwvdWw+]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBSb2JlcnQgQ2FtcGJlbGwgJmx0O2NhbGd1eTEwMDBAZ21haWwuY29tJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDIuNTxiciAvPjxiciAvPkNoYW5nZSBIaXN0b3J5OjxiciAvPjxoMz5GdXR1cmUgY2hhbmdlczwvaDM+CjxwPkluIHVwY29taW5nIHZlcnNpb25zIG9mIHRoaXMgbW9kdWxlIHdlIHdpbGwgYmU6PC9wPgoJPHVsPgoJPGxpPlV0aWxpemUgY2FjaGluZyB3aGVuIGxvYWRpbmcgZXZlbnRzIHRvIGltcHJvdmUgcGVyZm9ybWFuY2UgKG5vdCBsb2FkaW5nIHRoZSBzYW1lIGV2ZW50IG11bHRpcGxlIHRpbWVzIGluIHNvbWUgdmlld3MpPC9saT4KCTxsaT5JbXByb3ZpbmcgcHJldHR5IHVybCBzdXBwb3J0PC9saT4KCTxsaT5GdXJ0aGVyIE9PUGlmeWluZyB0aGUgY29kZSB0byBhbGxvdyBmb3IgZnV0dXJlIGV4cGFuc2lvbi48L2xpPgoJPGxpPkFsbG93IGZpbHRlcmluZyBieSBjdXN0b20gZmllbGRzLi4uIGkuZTogYSBkcm9wZG93biB2YWx1ZSBzbyB0aGF0IHlvdSBjYW4gZmlsdGVyIGJ5IGEgcmVzb3VyY2UuPC9saT4KCTwvdWw+Cgo8aDM+SGlzdG9yeTwvaDM+CiAgPHVsPgogIDxsaT5WZXJzaW9uIDIuNQogICAgPHVsPgogICAgICA8bGk+Tm93IHVzZSB0aGUgQ01TTVMgRmlsZVBpY2tlciBpbiB0aGUgYWRtaW4gZm9yIGZpbGUgYXR0YWNobWVudCBmaWVsZHMuICBUaGlzIGZpZWxkIG5vIGxvbmdlciB1c2VzIHRoZSB1cGxvYWQtZGlyZWN0b3J5IHByZWZlcmVuY2UuPC9saT4KICAgICAgPGxpPkFkZHMgYSBuZXcgaW1hZ2UgYXR0YWNobWVudCBmaWVsZCB0eXBlLiBVc2FibGUgaW4gdGhlIGFkbWluIGVkaXRvciBvbmx5LjwvbGk+CiAgICA8L3VsPgogIDwvbGk+CiAgPGxpPlZlcnNpb24gMi40LjkKICAgIDx1bD4KICAgICAgPGxpPk1vcmUgaW1wcm92ZW1lbnRzIHRvIHRoZSBlZGl0LWV2ZW50IHRlbXBsYXRlIGxheW91dC48L2xpPgogICAgICA8bGk+Tm93IGFzc3VtZSB0aGF0IHRoZSBhZGQtZXZlbnQgbGlua3MgYW5kIGRheWNsaWNrIGV2ZW50cyBhcmUgaW4gVVRDLjwvbGk+CiAgICA8L3VsPgogIDwvbGk+CiAgPGxpPlZlcnNpb24gMi40LjgKICAgIDx1bD4KICAgICAgPGxpPkltcHJvdmVtZW50cyB0byB0aGUgZWRpdC1ldmVudCB0ZW1wbGF0ZSBsYXlvdXQuPC9saT4KICAgICAgPGxpPkZpeGVzIG9mZi1ieS1vbmUgZXJyb3IgaW4gdGhlIGRheWNsaWNrIHN0dWZmLjwvbGk+CiAgICAgIDxsaT5GaXhlcyB0byB0aGUgdXBncmFkZSByb3V0aW5lIHdydCB0ZW1wbGF0ZXMuPC9saT4KICAgIDwvdWw+CiAgPC9saT4KICA8bGk+VmVyc2lvbiAyLjQuMwoJPHVsPgoJPGxpPkZpeCBhbiBpc3N1ZSB3aXRoIGZyb250ZW5kIGZ1bGxjYWxlbmRhciBkaXNwbGF5cy4gIFlvdSBtYXkgbmVlZCB0byBjcmVhdGUgbmV3IGZ1bGxjYWxlbmRhciB2aWV3IHRlbXBsYXRlcyBhZnRlciByZXNldHRpbmcgdGhlIGRlZmF1bHQgZnVsbGNhbGVuZGFyIHRlbXBsYXRlIHRvIGZhY3RvcnkgZGVmYXVsdHMuPC9saT4KCTwvdWw+CiAgPC9saT4KICA8bGk+VmVyc2lvbiAyLjQuMwogICAgIDx1bD4KICAgICAgIDxsaT5BZGRzIHRoZSBFdmVudEVkaXRlZFByZSBDTVNNUyBFdmVudCB0aGF0IGlzIHNlbnQgcHJpb3IgdG8gYW4gZXZlbnQgYmVpbmcgbW9kaWZpZWQuPC9saT4KICAgICAgIDxsaT5BZGRzIHRoZSBhYmlsaXR5IHRvIGV4cG9ydCBldmVudHMgdG8gYSBzaW1wbGUgQ1NWIGZpbGUuPC9saT4KICAgICAgIDxsaT5NaW5vciBpbXByb3ZlbWVudHMgdG8gaW1wb3J0IGZ1bmN0aW9uYWxpdHkuPC9saT4KICAgICAgIDxsaT5GaXhlcyB0byBhZG1pbiB2aWV3IG9mIEZ1bGxDYWxlbmRhciBkaXNwbGF5IGlmIG5vIGhvbGlkYXlzIGRlZmluZWQuPC9saT4KICAgICA8L3VsPgogIDwvbGk+CiAgPGxpPlZlcnNpb24gMi4zCiAgICAgPHVsPgogICAgICAgPGxpPkFkZHMgYWJpbGl0eSB0byBzYXZlIGFuIGV2ZW50IGFzIERyYWZ0IChEKSBvciBQdWJsaXNoZWQgKFApLgogICAgICAgICAgIDxwPiBEcmFmdCBldmVudHMgYXJlIG5ldmVyIGFkZGVkIHRvIHRoZSBzZWFyY2ggbW9kdWxlLgogICAgICAgICAgIE9uIHVwZ3JhZGUgYWxsIGV2ZW50cyBhcmUgbWFya2VkIGFzICdQdWJsaXNoZWQnLjwvcD4KICAgICAgIDwvbGk+CiAgICAgICA8bGk+SW1wcm92ZXMgaW50ZXJmYWNlIHdpdGggdGhlIFNlYXJjaCBtb2R1bGUuPC9saT4KICAgICAgIDxsaT5VcGdyYWRlIEZ1bGxDYWxlbmRhciB0byB0aGUgbGF0ZXN0IHZlcnNpb24gKDMuMS54KTwvbGk+CiAgICAgICA8bGk+QWRkcyB0aGUgeWVhciBsaXN0IHZpZXcgdG8gdGhlIGFkbWluIGludGVyZmFjZSBGdWxsQ2FsZW5kYXIgaW1wbGVtZW50YXRpb24uPC9saT4KICAgICA8L3VsPgogIDwvbGk+CiAgPGxpPlZlcnNpb24gMi4yCiAgICAgPHVsPgogICAgIDxsaT5NaW5vciBidWcgZml4ZXMuPC9saT4KICAgICA8bGk+QWRkcyBhYmlsaXR5IHRvIGNsaWNrIG9uIGEgZGF0ZSBvbiB0aGUgZnVsbGNhbGVuZGFyIHZpZXcgdG8gYWRkIGFuIGV2ZW50IG9uIHRoYXQgZGF0ZS48L2xpPgogICAgIDwvdWw+CiAgPC9saT4KICA8bGk+VmVyc2lvbiAyLjEuNAogICAgIDx1bD4KICAgICA8bGk+TWlub3IgYnVnIGZpeGVzIHRvIHN1bW1hcnkgdmlld3MuPC9saT4KICAgICA8bGk+TW9yZSBmaXhlcyB3cnQgdXBncmFkaW5nIGZyb20gdGhlIDEueCBzZXJpZXMuPC9saT4KICAgICA8L3VsPgogIDwvbGk+CiAgPGxpPlZlcnNpb24gMi4xLjMKCTxwIGNsYXNzPSJ3YXJuaW5nIj48c3Ryb25nPldhcm5pbmc6PC9zdHJvbmc+IEluIGZ1dHVyZSB2ZXJzaW9ucyBJIHdpbGwgYmUgY29udmVydGluZyBhbGwgTXlJU0FNIHRhYmxlcyB0byBJbm5vREIgb24gdXBncmFkZS4gIFlvdSB3aWxsIGxvc2UgZnVsbCB0ZXh0IHNlYXJjaCBjYXBhYmlsaXRpZXMgaWYgeW91IGFyZSBub3QgcnVubmluZyBNeVNRTCA1LjYgb3IgbGF0ZXIuPC9wPgoJPHVsPgoJPGxpPkJ1ZyBmaXhlcy48L2xpPgoJPC91bD4KICA8bGk+VmVyc2lvbiAyLjEuMwoJPHVsPgoJICA8bGk+QnVnIGZpeGVzLjwvbGk+Cgk8L3VsPgoJPC9saT4KICA8bGk+VmVyc2lvbiAyLjEuMgogICAgIAk8dWw+Cgk8bGk+Rml4IHByb2JsZW0gb24gbmV3IGluc3RhbGxzIHdpdGggZGVmYXVsdCB0ZW1wbGF0ZXMgbm90IGJlaW5nIHNwZWNpZmllZC48L2xpPgoJPGxpPkZpeCBwcm9ibGVtIHdpdGggY2F0ZWdvcnk9IG5vdCB3b3JraW5nIGluIHZhcmlvdXMgZGlzcGxheXMuPC9saT4KICAgICAgICA8bGk+Rml4IHByb2JsZW1zIHdpdGggdXBncmFkZSBmcm9tIDEueAogICAgICAgIDwvbGk+Cgk8L3VsPgogIDwvbGk+Cgk8bGk+VmVyc2lvbiAyLjEKCTxwIGNsYXNzPSJ3YXJuaW5nIj48c3Ryb25nPldhcm5pbmc6PC9zdHJvbmc+IElmIHlvdXIgaG9zdCBpcyBub3QgdXNpbmcgTXlTUUwgNS42IG9yIGJleW9uZCB0aGUgZnVsbCB0ZXh0IHNlYXJjaCBjYXBhYmlsaXRpZXMgd2lsbCBub3Qgb3BlcmF0ZSBvbiBuZXcgaW5zdGFsbHMuPC9wPgoJPHVsPgoJPGxpPkFkZHMgdGhlIGFiaWxpdHkgZm9yIG1lbWJlcnMgb2YgYSBzcGVjaWFsIEZFVSBncm91cCB0byBlZGl0IG9yIGRlbGV0ZSBhbnkgZXZlbnQgZnJvbSB0aGUgZnJvbnRlbmQuPC9saT4KCTxsaT5BYWRzIHRoZSBhYmlsaXR5IHRvIGJ1bGsgZGVsZXRlIGV4cGlyZWQgZXZlbnRzLjwvbGk+Cgk8bGk+TmV3IGluc3RhbGxzIHVzZSBJbm5vREIgaW5zdGVhZCBvZiBNeUlTQU0gd2hpY2ggYWxsb3dzIGZvciBkYXRhIGludGVncml0eS48L2xpPgoJPC91bD4KICA8L2xpPgoKICA8bGk+VmVyc2lvbiAyLjAKCTxwIGNsYXNzPSJ3YXJuaW5nIj48c3Ryb25nPldhcm5pbmc6PC9zdHJvbmc+IFRoaXMgdmVyc2lvbiBtYXJrcyBhIG1ham9yIGNoYW5nZSBmb3IgdGhlIENHQ2FsZW5kYXIgbW9kdWxlLiAgVGhpcyB2ZXJzaW9uIHJlcXVpcmVzIENNU01TIDIuMS4yIG9yIGJleW9uZCwgYW5kIGludGVncmF0ZXMgd2l0aCB0aGUgRGVzaWduIE1hbmFnZXIuICBBbHNvLCBzb21lIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBvciBjaGFuZ2VkLiAgVXBncmFkaW5nIHdpbGwgcmVxdWlyZSBjcmVhdGluZyBuZXcgdGVtcGxhdGVzLCBhbmQgYWRqdXN0aW5nIHRoZWlyIHN0eWxlcywgYW5kIHBvdGVudGlhbGx5IGFkanVzdGluZyB0aGUgd2F5IHRoZSBtb2R1bGUgaXMgY2FsbGVkLjwvcD4KCTxwIGNsYXNzPSJ3YXJuaW5nIj48c3Ryb25nPldhcm5pbmc6PC9zdHJvbmc+IENNU01TIDIueCByZXF1aXJlcyB0aGF0IGFsbCB0ZW1wbGF0ZXMgYmUgdW5pcXVlbHkgbmFtZWQuICBEdXJpbmcgdGhlIHVwZ3JhZGUgcHJvY2VzcyB3ZSBlbnN1cmUgdGhhdCBhbGwgQ0dDYWxlbmRhciB0ZW1wbGF0ZXMgYXJlIHVuaXF1ZWx5IG5hbWVkIHVwb24gY29udmVyc2lvbi4gIEhvd2V2ZXIsIHdlIGNhbm5vdCBhbmQgZG8gbm90IGVkaXQgeW91ciBjYWxscyB0byB0aGUgQ0dDYWxlbmRhciBtb2R1bGUuICBUaGVyZWZvcmUsIHlvdSBtYXkgbmVlZCB0byBhZGp1c3QgeW91ciBjYWxscyB0byBDR0NhbGVuZGFyIHRvIGFkanVzdCBhIG1hbnVhbGx5IHNwZWNpZmllZCB0ZW1wbGF0ZSBuYW1lLjwvcD4KCTx1bD4KCTxsaT5SZW1vdmVzIHRoZSBwcmV2aW91c2x5IGRlcHJlY2F0ZWQgY2FsZW5kYXIgdmlldy48L2xpPgoJPGxpPk1pZ3JhdGVzIGFsbCB0ZW1wbGF0ZSBmdW5jdGlvbmFsaXR5IGludG8gdGhlIENNU01TIDIuMCBMYXlvdXQgc2NoZW1lLiAgQWxsIHRlbXBsYXRlcyBmb3IgQ0dDYWxlbmRhciBhcmUgbm93IGF2YWlsYWJsZSBpbiBEZXNpZ25NYW5hZ2VyLjwvbGk+Cgk8bGk+TW92ZXMgYWxsIHNldHRpbmdzIGNvbnRyb2xzIGludG8gdGhlaXIgb3duIG5hdmlnYXRpb24gaXRlbSBpbiB0aGUgYWRtaW4gY29uc29sZS48L2xpPgoJPGxpPlJlbW92ZXMgdGhlIHVwY29taW5nbGlzdCB0ZW1wbGF0ZSB0eXBlLCBhbmQgcmVwbGFjZXMgaXQgd2l0aCB0aGUgc3RhbmRhcmQgbGlzdCB0ZW1wbGF0ZSB0eXBlLiAgPHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBUaGlzIG1heSBjYXVzZSBjb21wYXRpYmlsaXR5IGlzc3Vlcy4gIFBhc3RsaXN0IGFuZCB1cGNvbWluZ2xpc3Qgdmlld3Mgbm8gbG9uZ2VyIHN1cHBvcnQgcGFnaW5hdGlvbi48L2xpPgoJPGxpPkFkZHMgc3VwcG9ydCBmb3IgYSBkYXkgdmlldy48L2xpPgoJPGxpPlVuaWZpZXMgYWxsIHN1bW1hcnkgdmlld3MgKHllYXIsIG1vbnRoLCBkYXksIHVwY29taW5nbGlzdCwgcGFzdGxpc3QpIHRvIHVzZSB0aGUgc2FtZSBldmVudGxpc3QgdGVtcGxhdGVzLiBUaGUgZm9ybWF0IG9mIHRoaXMgdGVtcGxhdGUgaGFzIGNoYW5nZWQgc2lnbmlmaWNhbnRseS48L2xpPgoJPGxpPk5vIGxvbmdlciBwYXNzIHRoZSBldmVudHRlbXBsYXRlIHBhcmFtZXRlciBmcm9tIHRoZSBzdW1tYXJ5IHZpZXcgaW50byBkZXRhaWwgdXJscyB0byBwb3RlbnRpYWxseSBhbGxvdyBmb3IgcHJldHR5IHVybHMgaW4gZGV0YWlsIChldmVudCkgdmlld3MuICBVc2UgdGhlIHtjZ2VfbW9kdWxlX2hpbnR9IHRhZyBpbnN0ZWFkLjwvbGk+Cgk8bGk+Tm8gbG9uZ2VyIHVzZSB0aGUgdXNlX3Nlc3Npb24gcGFyYW1ldGVycyBmb3IgbGlzdCB2aWV3cy4gIFRoZSBkZWZhdWx0IHRlbXBsYXRlIGFsbG93cyBmb3Igc2Nyb2xsaW5nIGJ5IGFqYXguPC9saT4KCTxsaT5ObyBsb25nZXIgdXNlIHRoZSBkaXNwbGF5Zm9yZGF5IHBhcmFtZXRlciBmb3IgcGFzdGxpc3Qgb3IgdXBjb21pbmdsaXN0LiAgVXBjb21pbmdsaXN0IGF1dG9tYXRpY2FsbHkgaW5jbHVkZXMgZXZlbnRzIGZvciB0aGUgY3VycmVudCBkYXksIGFzIGRvZXMgcGFzdGxpc3QuPC9saT4KCTxsaT5ObyBsb25nZXIgdXNlIHRoZSB1bmlxdWVfb25seSBwYXJhbWV0ZXJzIGZvciB0aGUgcGFzdGxpc3QgYW5kIHVwY29taW5nbGlzdCB2aWV3cyBhcyB0aGUgZXZlbnQgbmFtZSBjYW5ub3QgYmUgYXNzdW1lZCB0byBiZSBhIGtleS4gIFBvc3QgZmlsdGVyaW5nIGluIHRoZSBsaXN0IHRlbXBsYXRlIG1heSBiZSBhIHZhbGlkIHNvbHV0aW9uIGZvciB0aGlzIGlmIG9uIGEgcGFydGljdWxhciBzaXRlIGl0IGNhbiBiZSBhc3N1bWVkIHRoYXQgdGhlIGV2ZW50IG5hbWUgaXMgdW5pcXVlLjwvbGk+Cgk8L3VsPgogIDwvbGk+CgogIDxsaT5WZXJzaW9uIDEuMTYueAogICAgIDxwPjxzdHJvbmc+V2FybmluZzo8L3N0cm9uZz4gTW9zdCBmcm9udGVuZCB0ZW1wbGF0ZXMgaGF2ZSBjaGFuZ2VkIGluIHRoaXMgdmVyc2lvbi4gIEV2ZW50IGRpc3BsYXkgdGVtcGxhdGVzIGhhdmUgZGlmZmVyZW50IGZ1bmN0aW9uYWxpdHkgZm9yIGFjY2Vzc2luZyBjdXN0b20gZmllbGRzLiAgUGxlYXNlIHNlZSB0aGUgZXhhbXBsZXMsIGFuZCByZS1zdHlsZSB5b3VyIHdlYnNpdGVzIGFmdGVyIHVwZ3JhZGluZy48L3A+CiAgICAgPHVsPgogICAgICAgPGxpPkFkZGVkIGNoZWNrYm94IGFuZCBkcm9wZG93biBjdXN0b20gZmllbGQgdHlwZXMuPC9saT4KICAgICAgIDxsaT5BZGRlZCB0aGUgYWJpbGl0eSB0byBtYW5pcHVsYXRlIHJlY3VycmluZyBldmVudHMgZnJvbSB0aGUgZnJvbnRlbmQgaW50ZXJmYWNlLjwvbGk+CiAgICAgICA8bGk+UmV3aXRlcyB0aGUgZnJvbnRlbmQgZGVsZXRlIGFjdGlvbi48L2xpPgogICAgICAgPGxpPnJld3JpdGUgdGhlIGZyb250ZW5kIGFkZC9lZGl0IGV2ZW50IGFjdGlvbi48L2xpPgogICAgICAgPGxpPk1vZGlmeSBkZWZhdWx0IGV2ZW50IHRlbXBsYXRlIHRvIGFsbG93IGVkaXRpbmcgdGhlIGV2ZW50IGlmIGxvZ2dlZCBpbiB0byBGRVUuPC9saT4KICAgICAgIDxsaT5Ob3cgZmllbGRzIGFuZCBjYXRlZ29yaWVzIGFyZSBwcmVzZXJ2ZWQgYW5kIHdvcmtpbmcgcHJvcGVybHkgd2hlbiBlZGl0aW5nIGNoaWxkIGV2ZW50cyBpbiB0aGUgZnJvbnRlbmQgb3IgYWRtaW4uPC9saT4KICAgICAgIDxsaT5OdW1lcm91cyBtaW5vciBidWcgZml4ZXMgYW5kIGNvZGUgb3B0aW1pemF0aW9ucy48L2xpPgogICAgICAgPGxpPk1ha2UgcmVhZHkgcGxhbnMgdG8gcmVtb3ZlIHRlbXBsYXRlIGNvZGUgZW50aXJlbHkgaW4gZmF2b3Igb2YgRGVzaWduTWFuYWdlci48L2xpPgogICAgIDwvdWw+CiAgPC9saT4KCiAgPGxpPlZlcnNpb24gMS4xNS54Cgk8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+ICBXZSBub3cgY3JlYXRlIGEgc2VwYXJhdGUgc21hcnR5IHNjb3BlIGZvciBlYWNoIHZpc2libGUgdGVtcGxhdGUgdG8gcHJldmVudCBzbWFydHkgdmFyaWFibGUgbmFtZSBjb2xsaXNpb24gaXNzdWVzLCBhbmQgZm9yIG1lbW9yeSBvcHRpbWl6YXRpb24gcHVycG9zZXMuICBUaGlzIG1heSBjYXVzZSBwcm9ibGVtcyB3aGVuIHRyeWluZyB0byBleHBvcnQgdmFyaWFibGVzIHRvIG90aGVyIHRlbXBsYXRlcywgb3Igd2hlbiB0cnlpbmcgdG8gdXNlIGEgdmFyaWFibGUgY3JlYXRlZCBpbiBhbm90aGVyIHRlbXBsYXRlLjwvcD4KCTxwPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gVGhlIG5ldyBkZWZhdWx0IGFjdGlvbiBmb3IgdGhlIENHQ2FsZW5kYXIgbW9kdWxlIGlzIHRoZSBmdWxsY2FsZW5kYXIgdmlldy4gIFRoaXMgdmlldyByZXF1aXJlcyBqcXVlcnkgYW5kIGpxdWVyeS11aSB0byBvcGVyYXRlLiAgVGhlcmVmb3JlIHlvdXIgc2l0ZSBtYXkgYnJlYWsgb24gdXBncmFkZS4gIFRvIGZvcmNlIHRoZSBvbGQgPGVtPihkZXByZWNhdGVkKTwvZW0+IGNhbGVkbmFyIHZpZXcsIGNoYW5nZSB5b3VyIGNhbGwgdG8gPGNvZGU+e0NHQ2FsZW5kYXIgZGlzcGxheT1jYWxlbmRhcn08L2NvZGU+PC9wPgogICAgIDxwPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gIEZpeGVkIGVycm9ycyBpbiBtYW55IG9mIHRoZSBkaXNwbGF5IHRlbXBsYXRlcy48L3A+Cgk8dWw+Cgk8bGk+VmVyc2lvbiAxLjE1Cgk8dWw+CgkgICA8bGk+SW50cm9kdWNlcyBzZXBhcmF0ZSBzbWFydHkgc2NvcGVzIGZvciBhbGwgZnJvbnRlbmQsIGFuZCBzb21lIGJhY2tlbmQgZGlzcGxheXMuPC9saT4KCSAgIDxsaT5VcGdyYWRlcyBmdWxsY2FsZW5kYXIgdG8gdGhlIGxhdGVzdCByZWxlYXNlZCB2ZXJzaW9uLjwvbGk+CgkgICA8bGk+QWRkcyB0aGUgZnVsbGNhbGVuZGFyIGFjdGlvbiB0byB0aGUgZnJvbnRlbmQsIHdoaWNoIGlzIG5vdyB0aGUgZGVmYXVsdCBhY3Rpb24uIChyZXF1aXJlcyBqcXVlcnkgYW5kIGpxdWVyeS11aSk8L2xpPgogICAgICAgICAgIDxsaT5BZGRzIHN1cHBvcnQgZm9yIGFuIGljYWwgZmVlZCB0byBoaWxpdGUgaG9saWRheXMgaW4gZnVsbGNhbGVuZGFyIHZpZXdzLjwvbGk+CgkgICA8bGk+TnVtZXJvdXMgYnVnIGZpeGVzLjwvbGk+Cgk8L3VsPgoJPC9saT4KCTxsaT5WZXJzaW9uIDEuMTUuMQoJPHVsPgoJICAgPGxpPkZpeGVzIGVycm9yIHdpdGggZXZlbnQgZGlzcGxheSBpbiBhZG1pbiBhbmQgZnJvbnRlbmQgaWYgdGhlcmUgd2VyZSBubyBob2xpZGF5cy48L2xpPgoJPC91bD4KCTwvbGk+Cgk8bGk+VmVyc2lvbiAxLjE1LjIKCTx1bD4KCSAgIDxsaT5GaXhlcyBqYXZhc2NyaXB0IGVycm9ycyB3aXRoIGRhdGUgZm9ybWF0cyBpbiBmdWxsY2FsZW5kYXIgaW4gdGhlIGFkbWluIHBhbmVsLjwvbGk+Cgk8L3VsPgoJPGxpPlZlcnNpb24gMS4xNS4yCgk8dWw+CgkgICA8bGk+QWRkcyBtaXNzaW5nIGNvZGUgZnJvbSB1cGdyYWRlIHJvdXRpbmUgdG8gY3JlYXRlIGEgbmV3IHN5c3RlbSBkZWZhdWx0IGFuZCBpbml0aWFsIGZ1bGxjYWxlbmRhciB0ZW1wbGF0ZS48L2xpPgoJPC91bD4KCTwvbGk+CiAgICAgICAgPGxpPlZlcnNpb24gMS4xNS4zCiAgICAgICAgPHVsPgogICAgICAgICAgIDxsaT5BZGRzIG1pc3NpbmcgdXBncmFkZSByb3V0aW5lIHRvIHBvcHVsYXRlIHNhbXBsZSBmdWxsY2FsZW5kYXIgdGVtcGxhdGUuPC9saT4KICAgICAgICA8L3VsPgogICAgICAgIDxsaT5WZXJzaW9uIDEuMTUuNAogICAgICAgIDx1bD4KCSAgIDxsaT5DYXRlZ29yeSBwYXJhbSBub3cgd29ya3MgZm9yIHRoZSBmdWxsY2FsZW5kYXIgYWN0aW9uLjwvbGk+CgkgICA8bGk+Rml4ZXMgYW4gaXNzdWUgd2l0aCB3ZWVrbHkgcmVjdXJyaW5nIGV2ZW50cy48L2xpPgoJICAgPGxpPm1pbm9yIFVJIGNoYW5nZXMgaW4gdGhlIGFkZCBldmVudCB0ZW1wbGF0ZS48L2xpPgoJICAgPGxpPm1pbm9yIGJ1ZyBmaXhlcy48L2xpPgogICAgICAgIDwvdWw+Cgk8L2xpPgogICAgICAgIDxsaT5WZXJzaW9uIDEuMTUuNQogICAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+Rml4ZXMgcHJvYmxvZW0gd2l0aCBjaGFuZ2luZyBmaWVsZCBuYW1lcy48L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICA8L2xpPgogICAgICAgIDxsaT5WZXJzaW9uIDEuMTUuNgogICAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+Rml4ZXMgcHJvYmxvZW0gd2l0aCBkaXNwbGF5aW5nIGNoaWxkIGV2ZW50cyBpbiBmdWxsY2FsZW5kYXIgdmlldyA8ZW0+KE5vdGU6IGZ1bGxjYWxlbmRhciB0ZW1wbGF0ZSBuZWVkcyB0byBiZSByZXNldCB0byBmYWN0b3J5IHNldHRpbmdzKTwvZW0+PC9saT4KICAgICAgICAgICAgPGxpPkFkZHMgc2FtcGxlIGRhdGUgZm9ybWF0dGluZyB0byBmdWxsY2FsZW5kYXI8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICA8L2xpPgogICAgICAgIDxsaT5WZXJzaW9uIDEuMTUuOAogICAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+RW5oYW5jZSB0aGUgaW1hZ2UgdXBsb2FkIGRpcmVjdG9yeSBiZWhhdmlvciBzbyB0aGF0IHBhdGhzIHJlbGF0aXZlIHRvIHRoZSByb290IG9yIHVwbG9hZHMgZGlyZWN0b3J5IGNhbiBiZSBzcGVjaWZpZWQuPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9saT4KICAgICA8L3VsPgogIDwvbGk+CiAgPGxpPlZlcnNpb24gMS4xNC54CiAgPHA+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiAtIFRoZSAxLjE0IHNlcmllcyBpbnRyb2R1Y2VzIGEgZ3JlYXQgZGVhbCBvZiBpbXByb3ZlbWVudHMuICBJdCBhbHNvIGZpeGVzIGEgbG90IG9mIG91dHN0YW5kaW5nIGlzc3Vlcy4gIFRoZXJlIHdpbGwgcHJvYmFibHkgYmUgdGVtcGxhdGUgaW5jb21wYXRpYmlsaXRpZXMuPC9wPgogIDxwPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gLSBGdXR1cmUgcmVsZWFzZXMgaW4gdGhpcyBzZXJpZXMgd2lsbCBiZSByZXBsYWNpbmcgdGhlIGZyb250ZW5kIGNhbGVuZGFyIHZpZXcgd2l0aCBmdWxsY2FsZW5kYXIuPC9wPgogICAgPHVsPgoJPGxpPlZlcnNpb24gMS4xNC40CiAgICAgICAgICA8dWw+CgkgICAgPGxpPmZpeGVzIHRvIGVudGl0aWVzIHdpdGggcmVzcGVjdCB0byB0aGUgZnJvbnRlbmQgZm9ybS4gIE5vdyBpdCBpcyBwb3NzaWJsZSB0byBzdWJtaXQgSFRNTCB2aWEgYWxsIHRleHQgYXJlYXMuICBIVE1MIGlzIHNhbml0aXplZCBiZWZvcmUgYmVpbmcgc3RvcmVkLiAgVGV4dCBpbnB1dCBmaWVsZHMgYXJlIGFsc28gc2FuaXRpemVkIG9uIGZyb250ZW5kIGZvcm1zLiAgPHN0cm9uZz5Ob3RlOjwvc3Ryb25nPlRoaXMgbWF5IGludHJvZHVjZSBhIGNvbXBhdGliaWxpdHkgcHJvYmxlbS48L2xpPgogICAgICAgICAgICA8bGk+Tm93IHJlcXVpcmVzIFBIUCA1LjQuMys8L2xpPgogICAgICAgICAgPC91bD4KCTwvbGk+CgoKCTxsaT5WZXJzaW9uIDEuMTQuMwoJPHA+VGhlIDEuMTQueCBzZXJpZXMgc3RvcHMgdXNpbmcgdGhlIGhhcmRjb2RlZCBtb250aCBhbmQgZGF5IG5hbWVzIGluIHRoZSBsYW5nIGZpbGUgYW5kIGJlZ2FuIHVzaW5nIGxvY2FsZSBzcGVjaWZpZWQgZGF0ZSBuYW1lcy4gIElmIHlvdSBhcmUgZW5jb3VudGVyaW5nIGFuICdvZmYgYnkgb25lJyBwcm9ibGVtIGluIHRoZSBDR0NhbGVuZGFyIGRpc3BsYXkgdGVtcGxhdGVzIHlvdSB3aWxsIHdhbnQgdG8gZml4IHVwIHlvdXIgZnJvbnRlbmQgdGVtcGxhdGVzLiAgUmVzdG9yaW5nIGZyb250ZW5kIHRlbXBsYXRlcyB0byBmYWN0b3J5IGRlZmF1bHRzIHNob3VsZCBzb2x2ZSB0aGUgaXNzdWUuICBFc3NlbnRpYWxseSwgeW91IHNob3VsZCBub3QgdXNlIHRoZSB7JG1vbnRoX25hbWVzfSBvciB7JGRheV9uYW1lc30gYXJyYXkgKHRoZXkgYXJlIG9uZSBiYXNlZCkuICBBbmQgaW5zdGVhZCBzaG91bGQgdXNlIHRoZSB7JGV2ZW50LmV2ZW50X2RhdGVfc3RhcnR9IGFuZCB7JGV2ZW50LmV2ZW50X2RhdGVfZW5kfSBzbWFydHkgdmFyaWFibGVzLCBhbmQgdGhlIGRhdGVfZm9ybWF0IG1vZGlmaWVyIHRvIGZvcm1hdCBkYXRlcyBhcHByb3ByaWF0ZWx5LjwvcD4KCTx1bD4KCSAgPGxpPkZpeGVzIHRvIHRoZSB1cGNvbWluZyBsaXN0IHRlbXBsYXRlLjwvbGk+Cgk8L3VsPgoJPC9saT4KCgk8bGk+VmVyc2lvbiAxLjE0LjIKCTx1bD4KCTxsaT5SZXN0b3JlcyBpbXBvcnQgbGluayAob29wcykuPC9saT4KCTwvdWw+Cgk8L2xpPgoKCTxsaT5WZXJzaW9uIDEuMTQuMgoJPHA+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiAgaW4gdGhlIG5lYXIgZnV0dXJlIChkZXBlbmRpbmcgdXBvbiBzcG9uc29yc2hpcCkgSSBwbGFuIHRvIHJlcGxhY2UgdGhlIGNhbGVuZGFyIHZpZXcgd2l0aCBhbiBhamF4eSBjYWxlbmRhciAoZnVsbGNhbGVuZGFyKS4gICBUaGlzIHdpbGwgcHJvYmFibHkgYnJlYWsKICAgICBjb21wYXRpYmlsaXR5LiAgWW91IGFyZSBmb3Jld2FybmVkLjwvcD4KCTx1bD4KCTxsaT5CdWcgZml4ZXMuPC9saT4KCTxsaT5SZXZpc2UgbGlzdCB0ZW1wbGF0ZSB0byB1c2UgZGF0ZV9mb3JtYXQgaW5zdGVhZCBvZiBoYXJkY29kZWQgbW9udGgvZGF5IHN0dWZmLiAoc3RpbGwgaGF2ZSB0byBkbyBjYWxlbmRhciB0ZW1wbGF0ZSk8L2xpPgoJPGxpPlJldmlzZWQgdXBjb21pbmcgbGlzdCBhY3Rpb24gdG8gY2FsbCB0aGUgdGVtcGxhdGUgZXZlbiBpZiB0aGVyZSBhcmUgbm8gZXZlbnRzLjwvbGk+Cgk8bGk+UmV2aXNlZCB0aGUgZXZlbnQgbG9hZGVyIHRvIGZpZ3VyZSBvdXQgYSBjb2xvciBmb3IgZXZlbnQgKGJhc2VkIG9uIGNhdGVnb3J5IGNvbG9ycykuPC9sST4KCTxsaT5SZXZpc2UgdGhlIGxpc3QsIGFuZCBjYWxlbmRhciB0ZW1wbGF0ZXMgdG8gc2hvdyBzb21lIGFqYXh5IHN0dWZmLCBhbmQgdGhlIHVzZSBvZiBjb2xvcnMuPC9saT4KCTwvdWw+Cgk8L2xpPgoKCTxsaT5WZXJzaW9uIDEuMTQuMQoJPHVsPgoJPGxpPkJ1ZyBmaXhlcy48L2xpPgoJPGxpPldlZWsgYW5kIGRheSBuYW1lcyBhcmUgbm93IGdlbmVyYXRlZCBieSB0aGUgbG9jYWxlLCBub3QgZnJvbSBsYW5nIHN0cmluZ3MuPC9saT4KCTwvdWw+Cgk8L2xpPgoKCTxsaT5WZXJzaW9uIDEuMTQKCTx1bD4KCTxsaT5JbXBsZW1lbnRzIGZ1bGxjYWxlbmRhciBmb3IgdGhlIHByaW1hcnkgZXZlbnQgbGlzdGluZy4KCTx1bD4KICAJICA8bGk+RHJhZyBhbmQgZHJvcCBldmVudHMgdG8gbW92ZSB0aGVtIHRvIGRpZmZlcmVudCBkYXRlcywgb3IgYWRqdXN0IGVuZCB0aW1lIChhamF4KTwvbGk+CgkgIDxsaT5EZWxldGUgZXZlbnRzIHZpYSBhamF4PGxpPgoJPC91bD4KCTwvbGk+Cgk8bGk+QWRkcyB0aGUgQWxsIGRheSBldmVudCBmbGFnPC9saT4KCTxsaT5Bc3NvY2lhdGVzIGNvbG9ycyB3aXRoIGNhdGVnb3JpZXMgKHNleHkgaW4gdGhlIGZ1bGxjYWxlbmRhciB2aWV3KS4uLiBub3QgeWV0IGF2YWlsYWJsZSBpbiB0aGUgZnJvbnRlbmQuPC9saT4KCTxsaT5SZXdvcmsgdG8gdGhlIGFkZC9lZGl0IGV2ZW50IGZvcm0gKGFkbWluKTwvbGk+Cgk8bGk+Tm93IGRlcGVuZHMgb24gQ0dTaW1wbGVTbWFydHkuPC9saT4KCTxsaT5idWcgZml4ZXMuPC9saT4KCTwvdWw+Cgk8L2xpPgogICAgPC91bD4KICA8L2xpPgoKCjxsaT5WZXJzaW9uIDEuMTMueAogIDx1bD4KICAgIDxsaT5BZGRzIHR3byBuZXcgcGVybWlzc2lvbnMgKEFkZCBDYWxlbmRhciBFdmVudHMsIEVkaXQgTXkgQ2FsZW5kYXIgRXZlbnRzKS48L2xpPgogICAgPGxpPk1pbm9yIGNsZWFudXAgb2YgdGhlIGFkbWluIGFkZCBldmVudCB0ZW1wbGF0ZS48L2xpPgogICAgPGxpPk1pbm9yIHR3ZWFraW5nIHRvIHRoZSBldmVudCBsaXN0IHRlbXBsYXRlLjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb24gMS4xMi54IC0gTm92ZW1iZXIsIDIwMTMKICAgPHA+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBJbiB0aGUgZnV0dXJlIEkgd2lsbCBiZSBtb3ZpbmcgaW1hZ2VzIGludG8gdGhlaXIgb3duIGRpcmVjdG9yeSwgYW5kIGNsZWFuaW5nIHVwIHByZWZlcmVuY2VzIG1vcmUuICBUaGlzIHdpbGwgcHJvYmFibHkgY2F1c2UgY29tcGF0aWJpbGl0eSBwcm9ibGVtcyBpbiB0aGUgZnV0dXJlLjwvcD4KICA8dWw+CiAgICA8bGk+UmVtb3ZlZCBhbGwgaW1hZ2UgY3JvcHBpbmcgb24gdXBsb2FkLgogICAgICAgPHA+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBUaGlzIGNvdWxkIGNhdXNlIGNvbXBhdGliaWxpdHkgcHJvYmxlbSB3aXRoIGRpc3BsYXlpbmcgaW1hZ2VzIGluIHlvdXIgZXhpc3RpbmcgdGVtcGxhdGVzLjwvcD4KICAgIDwvbGk+CiAgICA8bGk+QWRkcyB0aGUgZmlsZSBhdHRhY2htZW50IGZpZWxkIHR5cGUuPC9saT4KICAgIDxsaT5Db2RlIGNsZWFudXAgYW5kIGJ1ZyBmaXhlcy48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uIDEuMTEueCAtIE9jdG9iZXIsIDIwMTMKICA8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFRoZXJlIHByb2JhYmx5IHdpbGwgYmUgY29tcGF0aWJpbGl0eSBwcm9ibGVtcyBmb3IgcGVvcGxlIHVwZ3JhZGluZyB0byBDR0NhbGVuZGFyIDEuMTEueCBhbmQgYmV5b25kIGZyb20KICBwcmV2aW91cyB2ZXJzaW9ucy4gIFBhcnRpY3VsYXJseSByZWxhdGVkIHRvIHRoZSBkcm9wcGVkIHBhcmFtZXRlcnMgPGVtPihzZWUgYmVsb3cpPC9lbT4gYW5kIHNvbWUgb2YgdGhlIGlubGluZSBmaXhlcyBhbmQgY2hhbmdlcy4KICBZb3Ugd2lsbCBuZWVkIHRvIGRvIHRlc3Rpbmcgb24geW91ciBDR0NhbGVuZGFyIGluc3RhbGxzIGFuZCBmaXggYW55IGNhbGxzIHRvIENHQ2FsZW5kYXIsIGFuZCBhbHNvIG1ha2Ugc29tZSBjaGFuZ2VzIHRvIHRlbXBsYXRlcy48L3A+CiAgPHVsPgogICAgPGxpPkJ1ZyBmaXhlcy48L2xpPgogICAgPGxpPkRyb3BwZWQgdGhlIGNvbHVtbiBwYXJhbWV0ZXJzICh0aGlzIGlzIGEgZGVzaWduIHJlbGF0ZWQgaXRlbSwgbm90IHJlbGF0ZWQgdG8gYnVzaW5lc3MgbG9naWMgYW5kIHNob3VsZCBiZSBkb25lIGluIHRlbXBsYXRlcy4pLjwvbGk+CiAgICA8bGk+RHJvcHBlZCB0aGUgcmV0dXJubGluayBwYXJhbWV0ZXJzIGFzIHRoZXkgZGlkbnQgd29yayBwcm9wZXJseS4gIFRoaXMgc2hvdWxkIGJlIGRvbmUgaW4gdGhlIHRlbXBsYXRlcy4gIChoaXN0b3J5LmdvKC0xKSBvciBzb21ldGhpbmcpLjwvbGk+CiAgICA8bGk+RHJvcHBlZCB0aGUgZmlyc3QtZGF5LW9mLXdlZWsgcGFyYW1ldGVyLCBhbmQgcmVwbGFjZWQgaXQgd2l0aCBhIHByZWZlcmVuY2UuPC9saT4KICAgIDxsaT5BbGwgbmF2aWdhdGlvbiBsaW5rcyBvbiBwcm90b3R5cGUgdGVtcGxhdGVzIG5vdyB1c2Ugbm9uLWlubGluZSBVUkxTLjwvbGk+CiAgICA8bGk+QWRkZWQgZGlzcGxheT13ZWVrbGlzdDwvbGk+CiAgICA8bGk+UmVmYWN0b3JlZCB0aGUgZXZlbnQgZGlzcGxheSBpbiB0aGUgYWRtaW4gcGFuZWwuCiAgICAgIDx1bD4KICAgICAgICA8bGk+RXZlbnRzIGFyZSBub3cgZGlzcGxheWVkIG9ubHkgZm9yIGEgc3BlY2lmaWVkIG1vbnRoIGFuZCB5ZWFyLjwvbGk+CiAgICAgICAgPGxpPkVhc3kgc2VsZWN0aW9uIG9mIG1vbnRoIGFuZCB5ZWFyLCBhbmQgc2Nyb2xsaW5nIGJldHdlZW4gbW9udGhzLjwvbGk+CiAgICAgICAgPGxpPlRoZSBhYmlsaXR5IHRvIGVkaXQgYSBwYXJlbnQgZXZlbnQgZnJvbSBhIGNoaWxkIGV2ZW50LjwvbGk+CiAgICAgICAgPGxpPkZpbHRlcnMgYXJlIHN0b3JlZCBpbiB0aGUgdXNlciBzZXNzaW9uLjwvbGk+CiAgICAgIDwvdWw+CiAgICA8L2xpPgogICAgPGxpPlJlZmFjdG9yZWQgYW5kIGNoZWNrZWQgYWxsIHBhcmFtZXRlcnMgcGFzc2VkIHRvIG5hdmlnYXRpb24gbGlua3MgaW4gdGhlIGluZGl2aWR1YWwgdmllZXdzPC9saT4KICAgIDxsaT5BbGwgbmF2aWdhdGlvbiB2aWV3cyBoYXZlIGluXyBhbmQgbmlfIHZhcmlhbnRzIHRvIGFsbG93IHNlbGVjdGluZyBhbiBpbmxpbmUsIG9yIG5vbiBpbmxpbmUgdmFyaWFudCBvZiB0aGUgbmF2aWdhdGlvbiBsaW5rLiAgVGhvdWdoIHRoZSBuaV8gcHJlZml4ZWQgVVJMUyBtYXkgaW5mYWN0IGJlIGlubGluZSBsaW5rcyBkZXBlbmRpbmcgdXBvbiB0aGUgdXNlX3Nlc3Npb24gc3R1ZmYuPC9saT4KICAgIDxsaT5EYXkgdmlldyBVUkxTIGZyb20gdGhlIGNhbGVuZGFyIHZpZXcgbm93IGhhdmUgbmlfIGFuZCBpbl8gdmFyaWFudHMuPC9saT4KICAgIDxsaT5UaGUgaW5saW5lIHBhcmFtZXRlciBpcyBkZXByZWNhdGVkLCBhbmQgd2lsbCBiZSBkcm9wcGVkIGF0IHRoZSBuZXh0IG1ham9yIHZlcnNpb24uPC9saT4KICAgIDxsaT5SZWZhY3RvcmVkIGFsbCBldmVudCB2aWV3cwogICAgICA8dWw+CiAgICAgICAgPGxpPkFsbCBldmVudCB2aWV3cyB1c2UgdGhlIGNnY19ldmVudF9sb2FkZXIgY2xhc3MuPC9saT4KICAgICAgICA8bGk+T3B0aW1pemUgY3VzdG9tIGZpZWxkLCBhbmQgY2F0ZWdvcnkgbG9hZGluZy48L2xpPgogICAgICAgIDxsaT5DdXN0b20gZmllbGRzIGFuZCBjYXRlZ29yaWVzIGFyZSBub3cgY29waWVkIGZyb20gdGhlIHBhcmVudCBldmVudCBpZiBub3Qgc3BlY2lmaWVkIGZvciB0aGUgY2hpbGQgZXZlbnQuPC9saT4KICAgICAgICA8bGk+QWxsIGxpbmtzL1VSTHMgZ2VuZXJhdGVkIHRvIGV2ZW50cyB1c2UgcHJldHR5IFVSTFMgKGlmIGVuYWJsZWQpIGFuZCBhcmUgbm9uIGlubGluZS48L2xpPgogICAgICAgIDxsaT5hdXRob3IgZmllbGQgbWF5IGJlIHByZXNlbnQgZm9yIGVhY2ggZXZlbnQgdGhhdCBoYXMgYW4gYXV0aG9yLi4uIGJ1dCBhdXRob3JuYW1lICh3aGljaCB3YXMgaW5jb25zaXN0ZW50bHkgYXBwbGllZCkgaGFzIGJlZW4gZHJvcHBlZC4gIFVzZSBhIHNtYXJ0eSBwbHVnaW4gdG8gZXh0cmFjdCB0aGUgYXV0aG9yIGluZm9ybWF0aW9uIGFuZCBkaXNwbGF5IGl0LjwvbGk+CiAgICAgICAgPGxpPnVzZV9zZXNzaW9uIG5vdyBhdXRvbWF0aWNhbGx5IHR1cm5zIG9uIGlubGluZSBtb2RlLi4gYW5kIHdpbGwgdXNlIGlubGluZSBtb2RlIGZvciBldmVuIG5pXyBsaW5rcy91cmxzPC9saT4KICAgICAgICA8bGk+dXNlX3Nlc3Npb24gdmFsdWUgaXMgb25seSB1c2VkIGFzIGEgcHJlZml4IGZvciB0aGUgc2Vzc2lvbiBrZXkuICBUaGUgc2Vzc2lvbiBrZXkgaXMgdW5pcXVlIHRvIGFsbCBjYWxscyBvZiBDR0NhbGVuZGFyLjwvbGk+CiAgICAgICAgPGxpPmZpZWxkIG91dHB1dCBpcyBub3cgY29uc2lzdGVudCB3aXRoIGZpZWxkIG9yZGVyaW5nIChieSBkZWZhdWx0KS48L2xpPgogICAgICA8L3VsPgogICAgPC9saT4KICAgIDxsaT5SZWZhY3RvcmVkIHRoZSBhZG1pbiBjYXRlZ29yaWVzIHRhYi4KICAgICAgPHVsPgogICAgICAgIDxsaT5BZGRzIGRyYWcgYW5kIGRyb3AgcmVvcmRlcmluZy48L2xpPgogICAgICA8L3VsPgogICAgPC9saT4KICAgIDxsaT5SZWZhY3RvcmVkIHRoZSBhZG1pbiBmaWVsZHMgdGFiLgogICAgICA8dWw+CiAgICAgICAgPGxpPkFkZHMgZHJhZyBhbmQgZHJvcCByZW9yZGVyaW5nLjwvbGk+CiAgICAgICAgPGxpPkFkZHMgdGhlIGFiaWxpdHkgdG8gc3BlY2lmeSB3ZXRoZXIgYSB0ZXh0IGFyZWEgZmllbGQgaGFzIGEgd3lzaXd5ZyAoYWRtaW4gaW50ZXJmYWNlIG9ubHkpLjwvbGk+CiAgICAgIDwvdWw+CiAgICA8L2xpPgogICAgPGxpPk1vcmU8L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uIDEuMTAuMiAtIEZlYnJ1YXJ5LCAyMDEzCiAgPHVsPgogICAgPGxpPkJ1ZyBmaXhlcy48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uIDEuMTAgLSBBdWd1c3QgMjAxMgogIDx1bD4KICAgIDxsaT5BZGRzIGEgdG9nZ2xlIHRvIHVzZSB3eXNpd3lncyBmb3IgdGV4dGFyZWEgY3VzdG9tIGZpZWxkcy48L2xpPgogICAgPGxpPkFkZHMgYSBwcmVmZXJlbmNlIGZvciB0aGUgZnJpZW5kbHkgbmFtZS48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjkuNyAtIEp1bHkgMjAxMgogIDx1bD4KICAgPGxpPk51bWVyb3VzIG1pbm9yIGJ1ZyBmaXhlcy48L2xpPgogICA8bGk+TW92ZSBoZWxwIG91dCBvZiBsYW5nIGZpbGUuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS45LjYgLSBBcHJpbCAyMDEyCiAgPHVsPgogICA8bGk+TnVtZXJvdXMgbWlub3IgYnVnIGZpeGVzLjwvbGk+CiAgIDxsaT5GaXggamF2YXNjcmlwdCBpc3N1ZSBpbiBlZGl0IGV2ZW50LjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuOS40IC0gTWFyY2gsIDIwMTIKICA8dWw+CiAgIDxsaT5OdW1lcm91cyBtaW5vciBidWcgZml4ZXMuPC9saT4KICAgPGxpPkZpeGVkIG5vdGljZXMgaW4gZGVmYXVsdCB0ZW1wbGF0ZXMuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS45LjEgLSBNYXJjaCwgMjAxMgogIDx1bD4KICAgPGxpPkFkZGVkIGFiaWxpdHkgdG8gc3BlY2lmeSBpbXBvcnQgY29sdW1uIGRlbGltaXRlcjwvbGk+CiAgIDxsaT5NaW5vciBidWcgZml4ZXMuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS45IC0gSmFudWFyeSwgMjAxMgogIDx1bD4KICAgPGxpPkltcHJvdmVkIGV2ZW50IGltcG9ydCBjYXBhYmlsaXRpZXMuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS44LjIgLSBPY3RvYmVyLCAyMDExCiAgPHVsPgogICA8bGk+TWlub3IgZXZlbnQgbmFtZSBmaXguPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS43LjUgLSBBdWd1c3QsIDIwMTEKICA8dWw+CiAgPGxpPkFkcyBmaXJzdCBkYXksIGFuZCBsYXN0IGRheSBzdHVmZiB0byB0aGUgZXZlbnQgaW4gdGhlIGNhbGVuZGFyIHZpZXcuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS43LjMgLSBKdWx5LCAyMDExCiAgPHVsPgogIDxsaT5Nb3JlIEZpeGVzIHRvIHRoZSBsaXN0IHZpZXcuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS43LjIgLSBKdWx5LCAyMDExCiAgPHVsPgogIDxsaT5GaXhlcyB0byB0aGUgbGlzdCB2aWV3LjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuNy4xIC0gSnVseSwgMjAxMQogIDx1bD4KICA8bGk+VGhlIHVuaXF1ZV9vbmx5IHBhcmFtZXRlciBub3cgZGVmYXVsdHMgdG8gJnF1b3Q7b2ZmJnF1b3Q7IGZvciBhbGwgdmlld3MuPC9saT4KICA8bGk+QWRkcyB0aGUgZGlzcGxheWZvcmRheSBwYXJhbWV0ZXIgdG8gdGhlIHVwY29taW5nbGlzdCB2aWV3LjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuNyAtIEp1bmUsIDIwMTEKICA8dWw+CiAgPGxpPkFkZHMgdGhlIGFiaWxpdHkgdG8gZmlsdGVyIHRoZSAmcXVvdDtteWV2ZW50cyZxdW90OyB2aWV3IGJ5IGEgY2F0ZWdvcnkuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS42LjEgLSBBcHJpbCwgMjAxMQogIDx1bD4KICAgIDxsaT5SZW1vdmUgZGVidWcgc3RhdGVtZW50cy48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjYgLSBBcHJpbCwgMjAxMQogIDx1bD4KICAgIDxsaT5BZGRzIGEgY29tcGFueSBkaXJlY3RvcnkgZmllbGQgdHlwZS48L2xpPgogICAgPGxpPkJ1ZyBGaXhlcy48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjUuNyAtIFNlcHRlbWJlciAyMDEwCiAgPHVsPgogICAgPGxpPk1vcmUgZml4ZXMgdG8gZGlzcGxheWNhbGVuZGFyIGFuZCBkaXNwbGF5dXBjb21pbmdsaXN0LjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuNS42IC0gU2VwdGVtYmVyIDIwMTAKICA8dWw+CiAgICA8bGk+Rml4ZXMgdG8gdXBjb21pbmcgbGlzdCBwYWdpbmF0aW9uLjwvbGk+CiAgICA8bGk+Rml4ZXMgdG8gdW5pcXVlIG9ubHkgcGFyYW0gaW4gdXBjb21pbmcgbGlzdC48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjUuNSAtIEF1Z3VzdCAyMDEwCiAgPHVsPgogICAgPGxpPk5vdyBSZXF1aXJlIENHRXh0ZW5zaW9ucyAxLjE5LjQ8L2xpPgogICAgPGxpPkFkZHMgYSBwcmVmZXJlbmNlIGZvciB0aGUgVVJMIHByZWZpeC48L2xpPgogICAgPGxpPkFkZHMgYSBwcmVmZXJlbmNlIHRvIGRlZmF1bHQgbmV3IGV2ZW50cyB0byBhbGwgZGF5IGV2ZW50cy48L2xpPgogICAgPGxpPkFkZHMgYSBwcmVmZXJlbmNlIGZvciB0aGUgZGVmYXVsdCBzdGFydCB0aW1lIGZvciBub24tYWxsZGF5IGV2ZW50cy48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjUuNCAtIEF1Z3VzdCAyMDEwCiAgPHVsPgogICAgPGxpPkJ1ZyBmaXhlcy48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjUuMyAtIEp1bHkgMjAxMAogIDx1bD4KICAgIDxsaT5NaW5vciBidWcgZml4LjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuNS4yIC0gQXByaWwgMjAxMAogIDx1bD4KICAgIDxsaT5SZW1vdmUgbGVmdG92ZXIgZGVidWcgc3RhdGVtZW50cy48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjUuMSAtIEFwcmlsIDIwMTAKICA8dWw+CiAgICA8bGk+QnVnIGZpeGVzLjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuNSAtIEFwcmlsIDIwMTAKICA8dWw+CiAgICA8bGk+QWRkcyB0aGUgYWJpbGl0eSB0byBwZXJmb3JtIHNlYXJjaCBvbiBjdXN0b20gZmllbGQgdmFsdWVzLjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuNCAtIEFwcmlsIDIwMTAKICA8dWw+CiAgICA8bGk+QnVnIGZpeGVzIHdydCBkZWxldGluZyBldmVudHMuPC9saT4KICAgIDxsaT5BZGRzIHRoZSBhYmlsaXR5IGZvciBsb2dnZWQgaW4gZnJvbnRlbmQgdXNlcnMgdG8gYWRkLCBlZGl0LCBvciBkZWxldGUgY2FsZW5kYXIgZXZlbnRzLjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuMy4xIC0gTWFyY2ggMjAxMAogIDx1bD4KICAgIDxsaT5NaW5vciBidWdmaXggaW4gaW5zdGFsbGVyLjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuMyAtIERlY2VtYmVyIDIwMDkKICA8dWw+CiAgICA8bGk+QWRkcyB0aGUgY29uY2VwdCBvZiBhbGwgZGF5IGV2ZW50cy48L2xpPgogICAgPGxpPkFkZHMgdGhlIGFiaWxpdHkgdG8gYWxsb3cgZXZlbnRzIHRvIG92ZXJsYXAgb3Igbm90LjwvbGk+CiAgICA8bGk+QWRkcyB0aGUgYWJpbGl0eSB0byByZW1vdmUgYWxsIGNvbmZsaWN0aW5nL292ZXJsYXBwaW5nIGV2ZW50cy48L2xpPgogICAgPGxpPlZhcmlvdXMgYnVnIGZpeGVzLjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuMi41IC0gU2VwdGVtYmVyIDIwMDkKICA8dWw+CiAgICA8bGk+TWlub3IgYnVnIGZpeGVzLjwvbGk+CiAgPC91bD4KPC9saT4KCjxsaT5WZXJzaW9uOiAxLjIuNCAtIFNlcHRlbWJlciAyMDA5CiAgPHVsPgogICAgPGxpPkFkZHMgc3VwcG9ydCBmb3IgdGV4dGFyZWEgZmllbGRzLjwvbGk+CiAgICA8bGk+TWlub3IgYnVnIGZpeGVzLjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuMi4zIC0gU2VwdGVtYmVyIDIwMDkKICA8dWw+CiAgICA8bGk+Rml4ZXMgc3R1cGlkIGVycm9ycyB3aXRoIHRoZSBpbnN0YWxsZXIuPC9saT4KICAgIDxsaT5BZGRzIHVuaXF1ZV9vbmx5IHBhcmFtZXRlci48L2xpPgogICAgPGxpPkFkZHMgYmFzaWMgaWNhbCBzdXBwb3J0IGluIGV2ZW50IHZpZXdzLihUZWQpPC9saT4KICAgIDxsaT5NaW5vciBidWcgZml4ZXMuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS4yLjIgLSBNYXkgMjAwOQogIDx1bD4KICAgIDxsaT5GaXhlcyBlZGdlIGNhc2UgcHJvYmxlbSB3aXRoIGRhdGVzIHJlY3VycmluZyBtb250aGx5IG9uIHRoZSBOdGggd2Vla2RheTwvbGk+CiAgICA8bGk+Rml4ZXMgdXBjb21pbmdsaXN0IHZpZXcuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS4yLjEgLSBNYXkgMjAwOQogIDx1bD4KICAgIDxsaT5GaXhlcyBwcm9ibGVtIHdpdGggZGF0ZXMgcmVjdXJyaW5nIG1vbnRobHkgb24gdGhlIE50aCB3ZWVrZGF5PC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS4yIC0gQXByaWwgMjAwOQogIDx1bD4KICAgIDxsaT5BZGRzIHBhZ2luYXRpb24gdG8gdXBjb21pbmcgbGlzdCB2aWV3LjwvbGk+CiAgICA8bGk+VmFyaW91cyBidWcgZml4ZXMuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS4xIC0gTWFyY2ggMjAwOQogPHVsPgogICA8bGk+TWlub3IgYnVnIGZpeGVzLjwvbGk+CiAgIDxsaT5BZGQgZW5oYW5jZWQgbW9udGhseSByZWN1cmluZyBldmVudCBjYXBhYmlsaXRpZXMuPC9saT4KICAgPGxpPkFkZCBzZWFyY2ggZm9ybS48L2xpPgogPC91bD4KPC9saT4KPGxpPjxwPlZlcnNpb246IDEuMDwvcD4KPHA+Rm9yayB2ZXJzaW9uIDAuOC4yIG9mIHRoZSBDYWxlbmRhciBtb2R1bGUsIGFuZCBjb21wbGV0ZWx5IHJlLWRvIGV2ZW50IGFkZGluZywgZWRpdGluZywgcmVjdXJyaW5nIGV2ZW50cywgYW5kIHRlbXBsYXRlcy4gIFRoaXMgbW9kdWxlIGlzIG5vdCBjb21wdGlibGUgd2l0aCBwcmV2aW91cyB2ZXJzaW9ucyBvZiB0aGUgQ2FsZW5kYXIgbW9kdWxlPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC44LjI8L3A+CiAgPHA+Rml4IHRvIHByZXR0eSB1cmxzLjwvcD4KPC9saT4KPGxpPjxwPlZlcnNpb246IDAuOC4xPC9wPgogIDxwPk1pbm9yIGZpeCB0byBzZWFyY2ggaW50ZWdyYXRpb24gd2hlbiB1cGRhdGluZyBhbiBldmVudC48L3A+CiAgPHA+QWRkIGNhdGVnb3JpZXMgaW5mb3JtYXRpb24gdG8gdGhlIGxpc3QgZGlzcGxheS48L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjg8L3A+CiAgPHA+QWRkcyBzZWFyY2ggY2FwYWJpbGl0aWVzPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC43LjE0PC9wPgogIDxwPkZpeGVzIGEgc2VyaW91cyBpc3N1ZSB0aGF0IGNvdWxkIHJlc3VsdCBpbiB0aG91c2FuZHMgb2YgbmVlZGxlc3MgY2FsZW5kYXIgZW50cmllcyBiZWluZyBpbnNlcnRlZCBpbnRvIHRoZSB0YWJsZS48L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjcuMTM8L3A+CiAgPHA+Rml4ZXMgZnJpZW5kbHkgdXJscyBmb3IgZGV0YWlsIGFydGljbGVzPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC43LjEyPC9wPgogIDxwPkZpeGVzIGZpbGUgdXBsb2FkIGZpZWxkczwvcD4KICA8cD5GaXhlcyBpc3N1ZXMgd2l0aCByZWZlcmVuY2VzIHRvIHRoZSBBbGJ1bSBtb2R1bGU8L3A+CiAgPHA+QWRkcyByZWN1cnJpbmcgZXZlbnRzPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC43LjExPC9wPgogIDxwPkZpeGVkIGEgYnVnIGludHJvZHVjZWQgYnkgYnJpbmluZyBpbiB0aGUgY2F0ZWdvcmllcywgd2hlcmVieSB0aGUgam9pbiBkaWQgbm90IHdvcmsgb24gZWFybGllciB2ZXJzaW9ucyBvbiBteVNRTC4gKGNvZGVwb2V0KTwvcD4KICA8cD5BZGRlZCBhIGxpc3Qgb2YgY2F0ZWdvcmllcyB0aGF0IGVhY2ggZXZlbnQgaXMgYXNzb2NpYXRlZCB3aXRoIHRvIHRoZSBkYXRhIGF2YWlsYWJsZSB0byB0aGUgdGVtcGxhdGUuIChjb2RlcG9ldCk8L3A+CiAgPHA+Rml4ZWQgYSBidWcgaW50cm9kdWNlZCBpbiAwLjcuMTAgdGhhdCBwcmV2ZW50cyBhIGNsZWFuIGluc3RhbGwgZnJvbSB3b3JraW5nLCBiZWNhdXNlIG9mIGFuIGV4dHJhIGNvbW1hIG9uIHRoZSBlbmQgb2YgdGhlIGZpZWxkIGxpc3QgZm9yIHRhYmxlIGNtc19tb2R1bGVfZWNhbGFuZGVyX2V2ZW50X2ZpZWxkX3ZhbHVlcyAoY29kZXBvZXQpPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC43LjEwIC0gY2FsZ3V5MTAwMDwvcD4KPHA+QWRkZWQgc3VwcG9ydCBmb3IgZmlsZSB1cGxvYWRzIGluIGN1c3RvbSBmaWVsZHM8L3A+CjxwPkFkZGVkIHRoZSBhYmlsaXR5IHRvIHN1cHBseSBcJ25leHRcJyBhcyB0aGUgZXZlbnRfaWQgaW4gdGhlIGV2ZW50IGRpc3BsYXksIHRvIGRpc3BsYXkgdGhlIG5leHQgdXBjb21pbmcgZXZlbnQuPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC43Ljk8L3A+CiAgPHA+QWRkZWQgY3VzdG9tIGZpZWxkcyB0aGF0IGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggZWFjaCBldmVudC48L3A+CjwvbGk+Cgo8bGk+PHA+VmVyc2lvbjogMC43Ljg8L3A+CiAgPHA+Rml4ZWQgYSBkZXRhaWxwYWdlL3JldHVybmxpbmsgYnVnLi4uIGFnYWluLi4uPC9wPgo8L2xpPgoKPGxpPjxwPlZlcnNpb246IDAuNy43PC9wPgogIDxwPkFkZGVkIGEgZGVmYXVsdCBjYXRlZ29yeTwvcD4KICA8cD5BZGRlZCBhbiBvcHRpb24gdG8gYWxsb3cgYW4gZXZlbnQgdG8gYmUgZm9yY2VkIGEgbWVtYmVyIG9mIGF0IGxlYXN0IDEgY2F0ZWdvcnk8L3A+CiAgPHA+QWRkZWQgb3B0aW9ucyBvZiBob3cgbWFueSB5ZWFycyBpbiB0aGUgcGFzdCBhbmQgZnV0dXJlIHlvdSBzaG91bGQgYmUgYWJsZSB0byBzZWxlY3Q8L3A+CiAgPHA+UHJvZ3Jlc3MgdG93YXJkcyBtb3JlIHVwdG9kYXRlIEFQSS11c2FnZSwgdXNpbmcgdGVtcGxhdGVzLCBhY3Rpb25zIGV0Yy48L3A+CiAgPHA+TnVtZXJvdXMgYnVnZml4ZXM8L3A+CjwvbGk+Cgo8bGk+PHA+VmVyc2lvbjogMC43LjY8L3A+CiAgPHA+QWRkZWQgY29sdW1uIHN0eWxlIG91dHB1dCBmb3IgdXBjb21pbmdsaXN0IGFuZCBwYXN0bGlzdDwvcD4KICA8cD5Nb3ZlZCBleGFtcGxlIHN0eWxlc2hlZXQgdG8gdGhlIHN0eWxlc2hlZXRsaXN0PC9wPgogIDxwPkFkZGVkIHRhZ2dpbmcgb2YgZXZlbnRzIGFuZCBkZWxldGlvbnMgb2YgdGFnZ2VkIG9uZXM8L3A+CiAgPHA+UmV3b3JrZWQgZm9yIHVzZSBvZiBleHRlcm5hbCBhY3Rpb25maWxlczwvcD4KICA8cD5JbXByb3ZlZCB0YWItZnVuY3Rpb25hbGl5IGFuZCBhY3Rpb25tZXNzYWdlczwvcD4KPC9saT4KCjxsaT48cD5WZXJzaW9uOiAwLjcuNTwvcD4KICA8cD5GaXhlZCBhIGxvdCBvZiBvcGVuYmFzZWRpci1pc3N1ZXM8L3A+Cgo8L2xpPgoKPGxpPjxwPlZlcnNpb246IDAuNy40PC9wPgogIDxwPkZpeGVkIGhhcmRjb2RlZCBsZW5ndGggb2YgdGl0bGUgaW5wdXQgZmllbGQ8L3A+CiAgPHA+Rml4ZWQgc29tZSBtaXNzaW5nIGxvY2FsaXphdGlvbjwvcD4KICA8cD5SZW1vdmVkIHN1cHBvcnQgZm9yIHByZXR0eSB1cmxzIChpdCB3YXMgbm90IHdvcmtpbmcsIGFzIHNvbWUgcGFyYW1ldGVycyB3ZXJlIG1pc3NpbmcsIGFuZCBwdXR0aW5nIHRoZW0gaW4gd291bGQgaGF2ZSBtYWRlIHRoZSB1cmxzIHVucHJldHR5IGFueXdheXM8L3A+CgogIDxwPlVwZGF0ZWQgcGVybWlzc2lvbnMgbW9kZWwuICBOb3cgbmVlZCBcJ01vZGlmeSBUZW1wbGF0ZXNcJyBwZXJtaXNzaW9uIHRvIG1vZGlmeSB0aGUgdGVtcGxhdGVzLCBhbmQgXCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlc1wnIHBlcm1pc3Npb24gdG8gYWRqdXN0IHRoZSBwcmVmZXJlbmNlcy48L3A+Cgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC43LjM8L3A+CiAgICA8cD5BZGRlZCBNaW5pbXVtIENNUyBWZXJzaW9uPC9wPgogICAgPHA+QWRkZWQgdGhlIHBhc3RsaXN0IG9wdGlvbjwvcD4KPC9saT4KPGxpPjxwPlZlcnNpb246IDAuNy4yPC9wPgogICAgPHA+Q01TIDEuMCBjb21wYXRpYmxpdHk8L3A+CiAgICA8cD5TcGxpdCBvdXQgaW50byBudW1lcm91cyBmaWxlcyBmb3IgYmV0dGVyIG1lbW9yeSBlZmZpY2llbmN5PC9wPgogICAgPHA+SW50cm9kdWNlZCByZWZlcmVuY2VzIHdoZXJlIG5lY2Vzc2FyeSB0byBpbXByb3ZlIG1lbW9yeSBlZmZpY2llbmN5PC9wPgogICAgPHA+QWRkZWQgZnVuY3Rpb25zIHRvIGFsbG93IGZvciB0YWxraW5nIHdpdGggdGhpcyBtb2R1bGUgdmlhIG90aGVyIG1vZHVsZXM8L3A+CiAgICA8cD5BZGRlZCBldmVudHM8L3A+CiAgICA8cD5JbXByb3ZlZCBzZWN1cml0eSBhbmQgcmVkdWNlZCBtZW1vcnkgZm9vdHByaW50PC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC43IHN0YWJsZTwvcD4KICAgIDxwPkZpeGVkIHByb2JsZW0gd2l0aCBicm9rZW4gbW9udGggbGlzdCBvbiAzMXN0IG9mIGVhY2ggbW9udGg7PC9wPgogICAgPHA+Rml4ZWQgcHJvYmxlbSB3aXRoIENhbGVuZGFyIHNob3dpbmcgaW4gdGhlIG1lbnUgZm9yIHVuYXV0aG9yaXplZCBhZG1pbiB1c2Vycy48L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjdiZXRhMzwvcD4KICAgIDxwPkFkZGVkIHRoZSB5ZWFybGlzdCB2aWV3IG9wdGlvbiB0byBsaXN0IGFsbCBldmVudHMgaW4gdGhlIHllYXIuIEFjdHMgbGlrZSB0aGUgbGlzdCBvcHRpb24uPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC43YmV0YTI8L3A+CiAgICA8cD5BZGRlZCB0aGUgcmV2ZXJzZSBwYXJhbWV0ZXIgdG8gc2hvdyBldmVudHMgaW4gcmV2ZXJzZSBjaHJvbm9sb2dpY2FsIG9yZGVyLjwvcD4KPC9saT4KPGxpPjxwPlZlcnNpb246IDAuN2JldGExPC9wPgogICAgPHA+QWRkZWQgbmF2aWdhdGlvbiBpbiB0aGUgbGlzdCB2aWV3LCBmaXhlZCBwcm9ibGVtIHdpdGggZXZlbnRzIG5vdCBzaG93aW5nIHVwIGluIHRoZSBsaXN0IHZpZXcuPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC43YWxwaGEyPC9wPgogICAgPHA+PHVsPgogICAgICAgPGxpPkJ1ZyBmaXg6IGluY2x1ZGUgbGFzdCBkYXkgb2YgdGhlIG1vbnRoITwvbGk+CiAgICAgICA8bGk+QnVnIGZpeDogdGVtcGxhdGUgdXNlIG9mICR0YWJsZV9pZCBzaG91bGQgaGF2ZSB7fSBhcm91bmQgaXQuPC9saT4KICAgICAgIDxsaT5JbmNsdWRlIGljb24gZm9yIGNvbnRlbnQgcGFnZS48L2xpPgogICAgICAgPGxpPldoaXRlc3BhY2UgY2hhbmdlcyAtIHRyYWlsaW5nIHNwYWNlcyBhbmQgdGFicy9zcGFjZSB0aWR5IHVwLjwvbGk+CiAgICAgICA8bGk+TWFrZSBkZWZhdWx0IHRlbXBsYXRlcyBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsIGNvbXBsaWFudC48L2xpPgogICAgPC91bD48L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjdhbHBoYTE8L3A+CiAgICA8cD5Db21wbGV0ZSByZXdyaXRlIHRvIGZpdCBpbnRvIDAuMTAueCBiZXR0ZXIuPC9wPgogICAgPHA+U3VwcG9ydCBsYW5ndWFnZSBmb3IgZGF5IGFuZCBtb250aCBuYW1lczwvcD4KICAgIDxwPlVzZSBzbWFydHkgdGVtcGxhdGVzIGZvciBjb250cm9sbGluZyB0aGUgZGlzcGxheS48L3A+CiAgICA8cD5SZXdyaXRlIHRoZSBTUUwgdXNlZCB0byBzZWxlY3QgdGhlIGV2ZW50cyB0byBob3BlZnVsbHkgYmUgbW9yZSBtYWludGFpbmFibGUuPC9wPgogICAgPHA+PHN0cm9uZz5Ob3RlPC9zdHJvbmc+IHRoYXQgdGhlIGxhbmd1YWdlIGZpbGVzIGFyZSBub3QgZnVsbHkgdXBkYXRlZCBmb3IgdGhpcyB2ZXJzaW9uITwvcD4KPC9saT4KPGxpPjxwPlZlcnNpb246IDAuNi4xPC9wPgogICAgPHA+TW9yZSBmaXhlcyBmb3IgbXVsdGktZGF5IGV2ZW50IG9uIGNhbGVuZGFyLiBBZGRlZCBuZXcgcGFyYW1ldGVyICJ0aW1lX2Zvcm1hdCIgc28gd2UgY2FuIG1ha2UgdGhlIGRpc3BsYXkgb2YgYSBzaW5nbGUgZGF5IGV2ZW50IHdpdGggYSBzdGFydCBhbmQgc3RvcCB0aW1lIGxvb2sgYmV0dGVyLiBDaGFuZ2UgZGVfREVcJ3MgInRvIiB0byAiYmlzIiBhcyBwZXIgTW9yZHJhblwncyBwb3N0IG9uIHRoZSBib2FyZHMuPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC42PC9wPgogICA8cD5GaXggZXZlbnQgZGlzcGxheSBzbyB0aGF0IGlmIHRoZSBlbmQgZGF0ZSBpcyBub3Qgc2V0LCB3ZSBkb25cJ3QgZGlzcGxheSAidG8iLjwvcD4KICAgPHA+RmlsdGVyIGJ5IGNhdGVnb3J5IHdoZW4gZGlzcGxheWluZyBhbiB1cGNvbWluZ2xpc3QuPC9wPgogICA8cD5GaXggRW5kIGRhdGUgc2V0dGluZyB0aGF0IHdhcyBvZmYgYnkgb25lLjwvcD4KICAgPHA+Rml4IG9kZCBiZWhhdmlvdXIgb2YgeWVhciB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBKYW4gdG8gRGVjIG9yIERlYyB0byBKYW4gaW4gdGhlIGNhbGVuZGFyIHZpZXcuPC9wPgogICA8cD5TdXBwb3J0IG11dGxpLWRheSBldmVudHMgaW4gdGhlIGNhbGVuZGFyIHZpZXcuPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC41PC9wPgogICAgPHA+Rml4IHRoZSBkcm9wIGRvd24gbGlzdCBmb3IgZW5kIGRhdGUgeWVhci4gRml4IERFIHRyYW5zbGF0aW9uIG9mICJSZXR1cm4iICh0aGFua3MgUGlyYXRvcyEpLjwvcD4KICAgIDxwPkZpeCBzcGFjaW5nIGFyb3VuZCAidG8iICh0aGFua3MgR3JlZyEpLiBBZGQgRGFuaXNoIGFuZCBEdXRjaCB0cmFuc2xhdGlvbnMgY291cnRlc3kgb2YgYm9hcmQgbWVtYmVycyBlc21hbm4gYW5kIGRvbnQuPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC40PC9wPgogICAgPHA+U3VwcG9ydCBmb3IgbGFuZ3VhZ2UgdHJhbnNsYXRpb25zLiBEZWZhdWx0IHRvIGEgTlVMTCBlbmQgZGF0ZS4gSW1wcm92ZWQgdGhlIGhlbHAgaW5mb3JtYXRpb24uPC9wPgogICAgPHA+RGlzcGxheSB1cGNvbWluZyBldmVudHMgaW4gdGhlIGNvcnJlY3Qgb3JkZXIhIE90aGVyIG1pbm9yIGJ1ZyBmaXhlcy48L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjM8L3A+CiAgICA8cD5Jbml0aWFsIHN1cHBvcnQgZm9yICJGcm9tIiBhbmQgIlRvIiBkYXRlcyBmb3IgZXZlbnRzLiBBYmlsaXR5IHRvIGZpbHRlciBhZG1pbiBsaXN0IG9mIGV2ZW50cyBieSBjYXRlZ29yeS48L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjI8L3A+CiAgICA8cD5OZXcgZGlzcGxheSBvcHRpb246ICJ1cGNvbWluZ2xpc3QiLiBBbHNvIG1hbnkgYnVnZml4ZXMhPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC4xPC9wPgogICAgPHA+SW5pdGlhbCByZWxlYXNlLjwvcD4KPC9saT4KPC91bD4KPGJyIC8+]]></about>
	<description><![CDATA[A full featured, and flexible module to allow displaying information about events in numerous formats.]]></description>
	<requires>
	  <requiredname>CGExtensions</requiredname>
	  <requiredversion>1.55.3</requiredversion>
	</requires>
	<requires>
	  <requiredname>CGSimpleSmarty</requiredname>
	  <requiredversion>2.1.6</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.addedit_event.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiRoYW5kbGVfbnVsbF9kYXRlX3RzID0gZnVuY3Rpb24oJHZhbCkKewogICAgaWYoICR2YWwgKSB7CiAgICAgICAgJGRiID0gQ21zQXBwOjpnZXRfaW5zdGFuY2UoKS0+R2V0RGIoKTsKICAgICAgICAkc3RyID0gJGRiLT5EYlRpbWVTdGFtcCgkdmFsKTsKICAgICAgICByZXR1cm4gdHJpbSgkc3RyLCInIik7CiAgICB9Cn07CgokaGFuZGxlX251bGxfZGF0ZSA9IGZ1bmN0aW9uKCRzdHIpCnsKICBpZiggIWlzX251bGwoJHN0cikgKSByZXR1cm4gdHJpbSgkc3RyLCInIik7CiAgcmV0dXJuICRzdHI7Cn07CgovLwovLyBzYWZldHkgY2hlY2tzCi8vCiRmZXUgPSAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoJ0Zyb250RW5kVXNlcnMnKTsKaWYoICEkZmV1ICkgewogIGVjaG8gJzxoMz48Zm9udCBjb2xvcj0icmVkIj4nLiR0aGlzLT5MYW5nKCdlcnJvcl9ub2ZldScpLiI8L2ZvbnQ+PC9oMz5cbiI7CiAgcmV0dXJuOwp9CmVsc2UgaWYoICEkZmV1LT5Mb2dnZWRJbigpICkgewogIGVjaG8gJzxoMz48Zm9udCBjb2xvcj0icmVkIj4nLiR0aGlzLT5MYW5nKCdlcnJvcl9mZXVfbG9nZ2VkaW4nKS4iPC9mb250PjwvaDM+XG4iOwogIHJldHVybjsKfQoKLy8KLy8gaW5pdGlhbGl6YXRpb24KLy8KJGZldV91aWQgPSAkZmV1LT5Mb2dnZWRJbklkKCk7CiR0aGV0ZW1wbGF0ZSA9IFxjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnZWRpdGV2ZW50dGVtcGxhdGUnKTsKaWYoICEkdGhldGVtcGxhdGUgKSB7CiAgICAkdHBsID0gQ21zTGF5b3V0VGVtcGxhdGU6OmxvYWRfZGZsdF9ieV90eXBlKCdDR0NhbGVuZGFyOjplZGl0ZXZlbnQnKTsKICAgIGlmKCAhaXNfb2JqZWN0KCR0cGwpICkgewogICAgICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ05vIGRlZmF1bHQgZWRpdGV2ZW50IHRlbXBsYXRlIGZvdW5kJyk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgJHRoZXRlbXBsYXRlID0gJHRwbC0+Z2V0X25hbWUoKTsKICAgIHVuc2V0KCR0cGwpOwp9CiRldmVudF9pZCA9IFxjZ2VfcGFyYW06OmdldF9pbnQoJHBhcmFtcywgJ2V2ZW50X2lkJywgLTEpOwokZXZlbnQgPSAkdGhpcy0+R2V0RXZlbnQoJGV2ZW50X2lkLCRmZXVfdWlkKTsKJGZpZWxkcyA9ICR0aGlzLT5HZXRGaWVsZHMoKTsKJGNhdGVnb3JpZXMgPSAkdGhpcy0+R2V0Q2F0ZWdvcmllcygpOwokcG9saWN5ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ292ZXJsYXBfcG9saWN5JywnYWxsJyk7CiRmb3JjZV9jYXRlZ29yeSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmb3JjZV9jYXRlZ29yeScsMCk7CiRkZXN0cGFnZSA9IFxjZ2VfcGFyYW06OmdldF9pbnQoJHBhcmFtcywncmV0dXJuX2lkJywkcmV0dXJuaWQpOwppZiggIVxjZ2VfcGFyYW06OmV4aXN0cygkcGFyYW1zLCdyZXR1cm5faWQnKSApIHsKICAgICR0bXAgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZnJvbnRlbmRfcmVkaXJlY3RwYWdlJywnJyk7CiAgICBpZiggJHRtcCApIHsKICAgICAgICAkdG1wID0gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCR0bXApOwogICAgICAgIGlmKCAkdG1wICkgewogICAgICAgICAgICAkdG1wID0gJHRoaXMtPnJlc29sdmVfYWxpYXNfb3JfaWQoJHRtcCk7CiAgICAgICAgICAgIGlmKCAkdG1wICkgJGRlc3RwYWdlID0gJHRtcDsKICAgICAgICB9CiAgICB9Cn0KJHN0YXR1cyA9ICcnOwokbWVzc2FnZSA9ICcnOwoKLy8gQWRkIGlucHV0IGNvbnRyb2xzIGZvciBlYWNoIG9mIHRoZSBjdXN0b20gZmllbGRzIHRoYXQgYXJlIGRlZmluZWQuCmlmKCAkZmllbGRzICkgewogICAgJHRtcCA9IGFycmF5KCk7CiAgICBmb3JlYWNoKCRmaWVsZHMgYXMgJGZpZWxkKSB7CiAgICAgICAgJGZpZWxkX3ZhbHVlcyA9ICRldmVudFsnZmllbGRzJ107CiAgICAgICAgJGZpZWxkX25hbWUgPSAkZmllbGRbJ2ZpZWxkX25hbWUnXTsKICAgICAgICAkZmllbGRfdHlwZSA9ICRmaWVsZFsnZmllbGRfdHlwZSddOwogICAgICAgICRmaWVsZF92YWx1ZSA9ICIiOwogICAgICAgIGlmKCBpc3NldCgkZmllbGRfdmFsdWVzWyRmaWVsZF9uYW1lXSkgKSAkZmllbGRfdmFsdWUgPSAkZmllbGRfdmFsdWVzWyRmaWVsZF9uYW1lXTsKCiAgICAgICAgLy8gUmVwbGFjZSBzcGFjZXMgd2l0aCB1bmRlcmJhcnMgZm9yIHRoZSBmb3JtIHBhcmFtZXRlciAoYSBiaXQgb2YgYW4gaWtreSBoYWNrIEkga25vdywKICAgICAgICAvLyBidXQgSSBjYW4gd2VsbCBpbWFnaW5lIGZvbGsgZGVmaW5pbmcgY3VzdG9tIGZpZWxkcyB3aXRoIHNwYWNlcyBpbiB0aGUgbmFtZSkKICAgICAgICAvLyBQZXJoYXBzIGl0IHdvdWxkIGhhdmUgYmVlbiBiZXR0ZXIgaWYgY3VzdG9tIGZpZWxkcyBhbHNvIGhhZCBhIG51bWVyaWMga2V5IC0gaG9odW0gbGl2ZSBhbmQgbGVhcm4hCgogICAgICAgICRvYmogPSBuZXcgU3RkQ2xhc3MoKTsKICAgICAgICAkb2JqLT5uYW1lID0gJGZpZWxkWydmaWVsZF9uYW1lJ107CiAgICAgICAgJG9iai0+c2FmZW5hbWUgPSAgc3RyX3JlcGxhY2UgKCAiICIsICJfIiwgJGZpZWxkX25hbWUgKTsKICAgICAgICAkb2JqLT5zZWFyY2hhYmxlID0gJGZpZWxkWydmaWVsZF9zZWFyY2hhYmxlJ107CiAgICAgICAgJG9iai0+dmFsdWUgPSAkZmllbGRfdmFsdWU7CiAgICAgICAgJG9iai0+dHlwZSA9ICRmaWVsZF90eXBlOwogICAgICAgIGlmKCBpc3NldCgkZmllbGRbJ2ZpZWxkX2V4dHJhJ10pICkgJG9iai0+ZXh0cmEgPSAkZmllbGRbJ2ZpZWxkX2V4dHJhJ107CiAgICAgICAgc3dpdGNoKCAkZmllbGRfdHlwZSApIHsKICAgICAgICBjYXNlIDA6IC8vIHRoZSBub3JtYWwgdGV4dCBmaWVsZAogICAgICAgICAgICAkb2JqLT5maWVsZCA9ICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnY2FsX2ZpZWxkXycuJG9iai0+c2FmZW5hbWUsICRmaWVsZF92YWx1ZSwgNTAsIDI1NSk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgIC8vIGFuIHVwbG9hZCBmaWVsZCB0eXBlCiAgICAgICAgICAgIC8vIGRpc3BsYXkgYSBsYWJlbCB3aXRoIHRoZSBjdXJyZW50IHZhbHVlLCBhbmQgdGhlbiBhbiB1cGxvYWQgZmllbGQKICAgICAgICAgICAgJG9iai0+dmFsdWUgPSAkZmllbGRfdmFsdWU7CiAgICAgICAgICAgICRvYmotPmZpZWxkID0gJHRoaXMtPkNyZWF0ZUZpbGVVcGxvYWRJbnB1dCgkaWQsJ2NhbF9maWVsZF8nLiRvYmotPnNhZmVuYW1lLCcnLDUwKS4KICAgICAgICAgICAgICAgICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ2NhbF91cGxvYWRfZmllbGRfJy4kb2JqLT5zYWZlbmFtZSwkZmllbGRfbmFtZSkuCiAgICAgICAgICAgICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdjYWxfdXBsb2FkX2ZpZWxkX29sZHZhbHVlXycuJG9iai0+c2FmZW5hbWUsJGZpZWxkX3ZhbHVlKTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgLy8gdGV4dCBhcmVhCiAgICAgICAgICAgICRvYmotPmZpZWxkID0gJHRoaXMtPkNyZWF0ZVRleHRBcmVhKGZhbHNlLCRpZCwkZmllbGRfdmFsdWUsJ2NhbF9maWVsZF8nLiRvYmotPnNhZmVuYW1lKTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgLy8gY29tcGFueSBkaXJlY3RvcnkgZW50cnkuCiAgICAgICAgICAgICRjZG1vZCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ29tcGFueURpcmVjdG9yeScpOwogICAgICAgICAgICBpZiggISRjZG1vZCApIHsKICAgICAgICAgICAgICAgIC8vIGhhdmUgZmllbGQgdHlwZSwgYnV0IG5vIGNvbXBhbnlkaXJlY3RvcnkgbW9kdWxlLgogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gZ2V0IGEgbGlzdCBvZiB0aGUgY29tcGFuaWVzIHRoYXQgd2Ugd2FudCB0byBkaXNwbGF5CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgaWQsY29tcGFueV9uYW1lIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9jb21wZGlyX2NvbXBhbmllcyBPUkRFUiBCWSBjb21wYW55X25hbWUnOwogICAgICAgICAgICAgICAgJGRiciA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5KTsKICAgICAgICAgICAgICAgIGlmKCAkZGJyICkgewogICAgICAgICAgICAgICAgICAgICR0bXAyID0gYXJyYXkoJHRoaXMtPkxhbmcoJ25vbmUnKT0+LTEpOwogICAgICAgICAgICAgICAgICAgIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCRkYnIpOyAkaSsrICkgewogICAgICAgICAgICAgICAgICAgICAgICAkdG1wMlskZGJyWyRpXVsnY29tcGFueV9uYW1lJ11dID0gJGRiclskaV1bJ2lkJ107CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRvYmotPmZpZWxkID0gJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdjYWxfZmllbGRfJy4kb2JqLT5zYWZlbmFtZSwkdG1wMiwtMSwkZmllbGRfdmFsdWUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgIC8vIGZpbGUgYXR0YWNobWVudAogICAgICAgICAgICAkb2JqLT5maWVsZCA9IG51bGw7CiAgICAgICAgICAgICRkaXIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXBsb2FkZGlyZWN0b3J5Jyk7CiAgICAgICAgICAgIGlmKCAhJGRpciApICRkaXIgPSAkY29uZmlnWyd1cGxvYWRzX3BhdGgnXTsKICAgICAgICAgICAgJHBhdHRlcm4gPSBleHBsb2RlKCcsJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXBsb2FkZmlsZXR5cGVzJywnanBnLGpwZWcsZ2lmLHBuZycpKTsKICAgICAgICAgICAgJGV4Y2x1ZGVzID0gYXJyYXkoJ18qJywnLj8/KicpOwogICAgICAgICAgICBmb3JlYWNoKCAkcGF0dGVybiBhcyAmJG9uZSApIHsKICAgICAgICAgICAgICAgICRvbmUgPSAnKi4nLiRvbmU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGZpbGVzID0gY2dlX2Rpcjo6cmVjdXJzaXZlX2dsb2IoJGRpciwkcGF0dGVybiwnRklMRVMnLCRleGNsdWRlcyk7CiAgICAgICAgICAgIGlmKCAhaXNfYXJyYXkoJGZpbGVzKSB8fCBjb3VudCgkZmlsZXMpID09IDAgKSBjb250aW51ZTsKCiAgICAgICAgICAgICRvdXQgPSBhcnJheSgkdGhpcy0+TGFuZygnbm9uZScpPT4tMSk7CiAgICAgICAgICAgIGZvcmVhY2goICRmaWxlcyBhcyAkb25lICkgewogICAgICAgICAgICAgICAgJG9uZSA9IHN1YnN0cigkb25lLHN0cmxlbigkZGlyKSk7CiAgICAgICAgICAgICAgICBpZiggc3RhcnRzd2l0aCgkb25lLCcvJykgKSAkb25lID0gc3Vic3RyKCRvbmUsMSk7CiAgICAgICAgICAgICAgICAkb3V0WyRvbmVdID0gJG9uZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkb2JqLT5maWVsZCA9ICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnY2FsX2ZpZWxkXycuJG9iai0+c2FmZW5hbWUsJG91dCwtMSwkZmllbGRfdmFsdWUpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAvLyBjaGVja2JveAogICAgICAgICAgICAkb2JqLT5maWVsZCA9ICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ2NhbF9maWVsZF8nLiRvYmotPnNhZmVuYW1lLDApOwogICAgICAgICAgICAkb2JqLT5maWVsZCAuPSAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ2NhbF9maWVsZF8nLiRvYmotPnNhZmVuYW1lLDEsJGZpZWxkX3ZhbHVlKTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgLy8gZHJvcGRvd24KICAgICAgICAgICAgJG9iai0+ZmllbGQgPSBudWxsOwogICAgICAgICAgICBpZiggIWVtcHR5KCRmaWVsZFsnZmllbGRfZXh0cmEnXVsnZGRvcHRzJ10pICkgewogICAgICAgICAgICAgICAgJG9wdHMgPSBcY2dlX2FycmF5OjpleHBsb2RlX3dpdGhfa2V5KCRmaWVsZFsnZmllbGRfZXh0cmEnXVsnZGRvcHRzJ10sJz0nLCJcbiIpOwogICAgICAgICAgICAgICAgaWYoIGlzX2FycmF5KCRvcHRzKSAmJiBjb3VudCgkb3B0cykpICRvYmotPmZpZWxkID0gJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdjYWxfZmllbGRfJy4kb2JqLT5zYWZlbmFtZSxhcnJheV9mbGlwKCRvcHRzKSwtMSwkZmllbGRfdmFsdWUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICAkdG1wWyRvYmotPnNhZmVuYW1lXSA9ICRvYmo7CiAgICB9CiAgICBpZiggY291bnQoJHRtcCkgKSAkZmllbGRzID0gJHRtcDsKfQoKaWYoICRjYXRlZ29yaWVzICkgewogICAgJGRmbHRfY2F0ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlZmF1bHRfY2F0ZWdvcnknLCcnKTsKICAgICR0bXAgPSBhcnJheSgpOwogICAgZm9yZWFjaCggJGNhdGVnb3JpZXMgYXMgJGNhdGVnb3J5ICkgewogICAgICAgICRvYmogPSBuZXcgU3RkQ2xhc3MoKTsKICAgICAgICAkb2JqLT5pZCA9ICRjYXRlZ29yeVsnY2F0ZWdvcnlfaWQnXTsKICAgICAgICAkb2JqLT5uYW1lID0gJGNhdGVnb3J5WydjYXRlZ29yeV9uYW1lJ107CiAgICAgICAgJG9iai0+Y2hlY2tlZCA9IDA7CiAgICAgICAgaWYoICRvYmotPmlkID09ICRkZmx0X2NhdCAmJiAkZXZlbnRfaWQgPT0gLTEgKSB7CiAgICAgICAgICAgICRvYmotPmNoZWNrZWQgPSAxOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmKCBpbl9hcnJheSgkb2JqLT5pZCwkZXZlbnRbJ2NhdGVnb3JpZXMnXSkgKSB7CiAgICAgICAgICAgICRvYmotPmNoZWNrZWQgPSAxOwogICAgICAgIH0KICAgICAgICAkb2JqLT5maWVsZCA9CiAgICAgICAgICAgICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ2NhbF9ldmVudF9jYXRlZ29yaWVzWycuJG9iai0+aWQuJ10nLDApLgogICAgICAgICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ2NhbF9ldmVudF9jYXRlZ29yaWVzWycuJG9iai0+aWQuJ10nLDEsJG9iai0+Y2hlY2tlZCwiaWQ9J2NhdGVnb3J5Ii4kb2JqLT5pZC4iJyIpOwogICAgICAgICR0bXBbJG9iai0+aWRdID0gJG9iajsKICAgIH0KICAgICRjYXRlZ29yaWVzID0gJHRtcDsKfQoKLy8KLy8gUHJvY2VzcyB0aGUgZm9ybQovLwppZiggaXNzZXQoJHBhcmFtc1snY2FsX2NhbmNlbCddKSApIHsKICAgICR0aGlzLT5SZWRpcmVjdENvbnRlbnQoJGRlc3RwYWdlKTsKfQplbHNlIGlmKCBpc3NldCgkcGFyYW1zWydjYWxfc3VibWl0J10pICkgewoKICAgIGlmKCAhY2xhc3NfZXhpc3RzKCdDR0NhbEV2ZW50RXhjZXB0aW9uJykgKSB7CiAgICAgICAgY2xhc3MgQ0dDYWxFdmVudEV4Y2VwdGlvbiBleHRlbmRzIFxFeGNlcHRpb24ge30KICAgIH0KCiAgICAkdG1wID0gYXJyYXkoKTsKICAgIGZvcmVhY2goICRwYXJhbXMgYXMgJGtleSA9PiAkdmFsdWUgKSB7CiAgICAgICAgaWYoIHN0YXJ0c3dpdGgoJGtleSwnY2FsXycpICkgJGtleSA9IHN1YnN0cigka2V5LHN0cmxlbignY2FsXycpKTsKICAgICAgICBzd2l0Y2goICRrZXkgKSB7CiAgICAgICAgY2FzZSAnZXZlbnRfdGl0bGUnOgogICAgICAgIGNhc2UgJ2V2ZW50X3N1bW1hcnknOgogICAgICAgICAgICAkdmFsdWUgPSBmaWx0ZXJfdmFyKHRyaW0oJHZhbHVlKSxGSUxURVJfU0FOSVRJWkVfU1RSSU5HKTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ2V2ZW50X3JlY3VyX2RhdGUnOgogICAgICAgICAgICAka2V5ID0gJ2V2ZW50X3JlY3VyX2RhdGVfdXQnOwogICAgICAgICAgICAkdmFsdWUgPSBzdHJ0b3RpbWUoJHZhbHVlKTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ2V2ZW50X2RldGFpbHMnOgogICAgICAgICAgICAkdmFsdWUgPSBodG1sX2VudGl0eV9kZWNvZGUodHJpbSgkdmFsdWUpKTsKICAgICAgICAgICAgJHZhbHVlID0gY2dlX3V0aWxzOjpjbGVhbl9pbnB1dF9odG1sKCR2YWx1ZSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICAkdG1wWyRrZXldID0gJHZhbHVlOwogICAgfQogICAgJHBhcmFtcyA9ICR0bXA7CiAgICB1bnNldCgkdG1wKTsKCiAgICB0cnkgewogICAgICAgIGlmKCAkZXZlbnRfaWQgPiAwICkgJHRoaXMtPlNlbmRFdmVudCgnRXZlbnRFZGl0ZWRQcmUnLCBbJ2V2ZW50X2lkJz0+JGV2ZW50X2lkLCdldmVudCc9PiRldmVudF0gKTsKICAgICAgICAvLyB0b2RvOiBzZW5kIGV2ZW50IGJlZm9yZSBtb2RpZnkgaWYgd2UgaGF2ZSBhbiBldmVudCBpZC4KICAgICAgICBcY2djX2V2ZW50X3V0aWxzOjpnZXRfZXZlbnRfZnJvbV9wYXJhbXMoJGV2ZW50LCRwYXJhbXMsdHJ1ZSk7CiAgICAgICAgaWYoIGlzc2V0KCRldmVudFsnY2F0ZWdvcmllcyddKSApIHsKICAgICAgICAgICAgZm9yZWFjaCggJGV2ZW50WydjYXRlZ29yaWVzJ10gYXMgJGNhdF9pZCA9PiAkZmxhZyApIHsKICAgICAgICAgICAgICAgIGlmKCBpc3NldCgkY2F0ZWdvcmllc1skY2F0X2lkXSkgKSB7CiAgICAgICAgICAgICAgICAgICAgJGNhdGVnb3JpZXNbJGNhdF9pZF0tPmNoZWNrZWQgPSAoaW50KSAkZmxhZzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gY2hlY2sgZm9yIGRhdGEgcXVhbGl0eQogICAgICAgIGlmKCAkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kX3V0J10gIT0gTlVMTCAmJiAkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kX3V0J10gPCAkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnRfdXQnXSApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxDR0NhbEV2ZW50RXhjZXB0aW9uKCdlcnJvcl9pbnZhbGlkX2RhdGVzJyk7CiAgICAgICAgfQogICAgICAgIGlmKCBlbXB0eSgkZXZlbnRbJ2V2ZW50X3RpdGxlJ10pICkgdGhyb3cgbmV3IFxDR0NhbEV2ZW50RXhjZXB0aW9uKCdlcnJvcl9ub2V2ZW50bmFtZScpOwogICAgICAgIGlmKCAhaXNzZXQoJHBhcmFtc1snZXZlbnRfY2F0ZWdvcmllcyddKSB8fCBlbXB0eSgkcGFyYW1zWydldmVudF9jYXRlZ29yaWVzJ10pICkgIHRocm93IG5ldyBcQ0dDYWxFdmVudEV4Y2VwdGlvbignZXJyb3Jfbm9jYXRlZ29yeScpOwoKICAgICAgICAvLyB0b2RvOiBjaGVjayByZWN1cnJpbmcgZXZlbnQgZGV0YWlscwogICAgICAgIC8vIGNoZWNrIGV2ZW50IGZvciBjb25mbGljdHMuCiAgICAgICAgaWYoICRwb2xpY3kgIT0gJ2FsbCcgKSB7CiAgICAgICAgICAgIGlmKCBjZ2NfZXZlbnRfdXRpbHM6OmlzX2V2ZW50X2NvbmZsaWN0ZWQoJGV2ZW50LCRwb2xpY3kpICkgdGhyb3cgbmV3IFxDR0NhbEV2ZW50RXhjZXB0aW9uKCdlcnJvcl9ldmVudF9jb25mbGljdCcpOwogICAgICAgIH0KCiAgICAgICAgJHJlY3VycmluZ19ldmVudHMgPSBudWxsOwogICAgICAgIGlmKCAkZXZlbnRbJ2V2ZW50X3BhcmVudF9pZCddIDwgMSAmJiAkZXZlbnRbJ2V2ZW50X3JlY3VyX3BlcmlvZCddICE9ICdub25lJyApIHsKICAgICAgICAgICAgJHJlY3VycmluZ19ldmVudHMgPSBcY2djX2V2ZW50X3V0aWxzOjpjYWxjdWxhdGVfcmVjdXJyaW5nX2V2ZW50cygkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnRfdXQnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kX3V0J10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9yZWN1cl9wZXJpb2QnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X2RhdGVfcmVjdXJfZW5kX3V0J10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9yZWN1cl9pbnRlcnZhbCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfcmVjdXJfY291bnQnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X3JlY3VyX3dlZWtkYXlzJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9yZWN1cl9tb250aGRheXMnXSk7CiAgICAgICAgICAgIGlmKCAhY291bnQoJHJlY3VycmluZ19ldmVudHMpICkgdGhyb3cgbmV3IFxDR0NhbEV2ZW50RXhjZXB0aW9uKCdlcnJvcl9yZWN1cnJpbmdfZGF0YScpOwoKICAgICAgICAgICAgZm9yKCAkaSA9IDAsICRuID0gY291bnQoJHJlY3VycmluZ19ldmVudHMpOyAkaSA8ICRuOyAkaSsrICkgewogICAgICAgICAgICAgICAgJHJlY3VycmluZ19ldmVudHNbJGldWydldmVudF9hbGxfZGF5J10gPSAkZXZlbnRbJ2V2ZW50X2FsbF9kYXknXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG92ZXJsYXAgPSBcY2djX2V2ZW50X3V0aWxzOjpjaGVja19vdmVybGFwcGluZ19ldmVudHMoJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0X3V0J10sJGV2ZW50WydldmVudF9kYXRlX2VuZF91dCddLCRyZWN1cnJpbmdfZXZlbnRzKTsKICAgICAgICAgICAgaWYoICRvdmVybGFwID09PSB0cnVlICkgdGhyb3cgbmV3IFxDR0NhbEV2ZW50RXhjZXB0aW9uKCdlcnJvcl9ldmVudG92ZXJsYXAnKTsKCiAgICAgICAgICAgIGlmKCAkcG9saWN5ICE9ICdhbGwnICkgewogICAgICAgICAgICAgICAgLy8gY2hlY2sgY2hpbGQgZXZlbnRzIGZvciBjb25mbGljdHMuCiAgICAgICAgICAgICAgICAkbmV3X3JlY3VycmluZyA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICBmb3JlYWNoKCAkcmVjdXJyaW5nX2V2ZW50cyBhcyAkb25lZXZlbnQgKSB7CiAgICAgICAgICAgICAgICAgICAgJGNvbmZsaWN0ID0gXGNnY19ldmVudF91dGlsczo6Y2hlY2tfZGJfZm9yX2NvbmZsaWN0cygkb25lZXZlbnQsJGV2ZW50WydldmVudF9pZCddLCRwb2xpY3ksJGV2ZW50WydldmVudF9hbGxvd3Nfb3ZlcmxhcCddKTsKICAgICAgICAgICAgICAgICAgICBpZiggJGNvbmZsaWN0ICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiggJHRoaXMtPkdldFByZWZlcmVuY2UoJ292ZXJsYXBfYWN0aW9uJywnZXJyb3InKSA9PSAnZXJyb3InICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxDR0NhbEV2ZW50RXhjZXB0aW9uKCdlcnJvcl9ldmVudF9jb25mbGljdCcpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2lsZW50bHkgcmVtb3ZlIHRoaXMgZXZlbnQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkbmV3X3JlY3VycmluZ1tdID0gJG9uZWV2ZW50OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHJlY3VycmluZ19ldmVudHMgPSAkbmV3X3JlY3VycmluZzsKICAgICAgICAgICAgICAgIGlmKCAhY291bnQoJHJlY3VycmluZ19ldmVudHMpICkgdGhyb3cgbmV3IFxDR0NhbEV2ZW50RXhjZXB0aW9uKCdlcnJvcl9yZWN1cnJpbmdfZGF0YScpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBoYW5kbGUgYW55IGZpbGUgZmllbGRzLi4uCiAgICAgICAgaWYoIGlzc2V0KCRfRklMRVMpICkgewogICAgICAgICAgICBmb3JlYWNoKCAkcGFyYW1zIGFzICRrZXkgPT4gJHZhbHVlICkgewogICAgICAgICAgICAgICAgaWYoICFzdGFydHN3aXRoKCRrZXksJ3VwbG9hZF9maWVsZF8nKSApIGNvbnRpbnVlOwoKICAgICAgICAgICAgICAgICR0aGVmaWVsZCA9IHN1YnN0cigka2V5LHN0cmxlbigndXBsb2FkX2ZpZWxkXycpKTsKICAgICAgICAgICAgICAgICRmbGRuYW1lID0gJGlkLidjYWxfZmllbGRfJy4kdGhlZmllbGQ7CiAgICAgICAgICAgICAgICBpZiggIWlzc2V0KCRfRklMRVNbJGZsZG5hbWVdKSB8fCBlbXB0eSgkX0ZJTEVTWyRmbGRuYW1lXVsndG1wX25hbWUnXSkgKSBjb250aW51ZTsKCiAgICAgICAgICAgICAgICAkZXJyb3IgPSAnJzsKICAgICAgICAgICAgICAgICRmaWxlbmFtZSA9ICR0aGlzLT5IYW5kbGVVcGxvYWQoJGZsZG5hbWUsJGVycm9yKTsKICAgICAgICAgICAgICAgIGlmKCAkZmlsZW5hbWUgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgICAgICRzdGF0dXMgPSAnZXJyb3JfdXBsb2FkJzsKICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZSA9ICRlcnJvcjsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRwYXJhbXNbJ2ZpZWxkXycuJHRoZWZpZWxkXSA9ICRmaWxlbmFtZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gbWVyZ2UgZmllbGQgdmFsdWVzIGJhY2sgaW50byB0aGUgZmllbGRzIGFycmF5CiAgICAgICAgZm9yZWFjaCggJHBhcmFtcyBhcyAka2V5ID0+ICR2YWx1ZSApIHsKICAgICAgICAgICAgaWYoICFzdGFydHN3aXRoKCRrZXksJ2ZpZWxkXycpICkgY29udGludWU7CiAgICAgICAgICAgICRmaWVsZG5hbWUgPSBzdWJzdHIoJGtleSxzdHJsZW4oJ2ZpZWxkXycpKTsKICAgICAgICAgICAgc3dpdGNoKCAkZmllbGRzWyRmaWVsZG5hbWVdLT50eXBlICkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAkdmFsdWUgPSBmaWx0ZXJfdmFyKHRyaW0oJHZhbHVlKSxGSUxURVJfU0FOSVRJWkVfU1RSSU5HKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAkdmFsdWUgPSBodG1sX2VudGl0eV9kZWNvZGUodHJpbSgkdmFsdWUpKTsKICAgICAgICAgICAgICAgICR2YWx1ZSA9IGNnZV91dGlsczo6Y2xlYW5faW5wdXRfaHRtbCgkdmFsdWUpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGZpZWxkc1skZmllbGRuYW1lXS0+dmFsdWUgPSAkdmFsdWU7CiAgICAgICAgfQoKICAgICAgICAvLyBtZXJnZSBjYXRlZ29yeSB2YWx1ZXMgYmFjayBpbnRvIHRoZSBjYXRlZ29yaWVzIGFycmF5CiAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2V2ZW50X2NhdGVnb3JpZXMnXSkgKSB7CiAgICAgICAgICAgIGZvcmVhY2goICRjYXRlZ29yaWVzIGFzICYkb25lICkgewogICAgICAgICAgICAgICAgJG9uZS0+Y2hlY2tlZCA9IDA7CiAgICAgICAgICAgICAgICBpZiggaXNzZXQoJHBhcmFtc1snZXZlbnRfY2F0ZWdvcmllcyddWyRvbmUtPmlkXSkgKSAkb25lLT5jaGVja2VkID0gJHBhcmFtc1snZXZlbnRfY2F0ZWdvcmllcyddWyRvbmUtPmlkXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gcmVhZHkgdG8gaW5zZXJ0IG9yIHVwZGF0ZQogICAgICAgICRjaGlsZF9pZHMgPSBudWxsOwogICAgICAgICRmaWVsZHRleHQgPSAnJzsKICAgICAgICAkZG9faW5zZXJ0ID0gZmFsc2U7CiAgICAgICAgJGRiciA9IG51bGw7CgogICAgICAgIGlmKCAkZXZlbnRbJ2V2ZW50X2lkJ10gPiAwICkgewogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyAgaXQncyBhbiB1cGRhdGUgdG8gYW4gZXhpc3RpbmcgZXZlbnQKICAgICAgICAgICAgLy8KCiAgICAgICAgICAgIC8vIGdldCB0aGUgY2hpbGQgaWQncyBvZiB0aGlzIGV2ZW50IGlmIGFueS4KICAgICAgICAgICAgJHNxbCA9ICdTRUxFQ1QgZXZlbnRfaWQgRlJPTSAnLiR0aGlzLT5ldmVudHNfdGFibGVfbmFtZS4nIFdIRVJFIGV2ZW50X3BhcmVudF9pZCA9ID8nOwogICAgICAgICAgICAkY2hpbGRfaWRzID0gJGRiLT5HZXRDb2woJHNxbCxhcnJheSgkZXZlbnRbJ2V2ZW50X2lkJ10pKTsKCiAgICAgICAgICAgIC8vIGRlbGV0ZSBhbGwgb2YgdGhlIGNoaWxkIGV2ZW50cy4KICAgICAgICAgICAgJHRtcCA9IGFycmF5KChpbnQpICRldmVudFsnZXZlbnRfaWQnXSk7CiAgICAgICAgICAgIGlmKCBjb3VudCgkY2hpbGRfaWRzKSApICR0bXAgPSBhcnJheV9tZXJnZSgkdG1wLCRjaGlsZF9pZHMpOwogICAgICAgICAgICAkY2hpbGRyZW5fc3RyID0gJygnLmltcGxvZGUoJywnLCR0bXApLicpJzsKICAgICAgICAgICAgJHNxbCA9ICdERUxFVEUgRlJPTSAnLiR0aGlzLT5ldmVudF9maWVsZF92YWx1ZXNfdGFibGVfbmFtZS4nIFdIRVJFIGV2ZW50X2lkIElOICcuJGNoaWxkcmVuX3N0cjsKICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCRzcWwpOwogICAgICAgICAgICAkc3FsID0gJ0RFTEVURSBGUk9NICcuJHRoaXMtPmV2ZW50c190b19jYXRlZ29yaWVzX3RhYmxlX25hbWUuJyBXSEVSRSBldmVudF9pZCBJTiAnLiRjaGlsZHJlbl9zdHI7CiAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgkc3FsKTsKICAgICAgICAgICAgJHNxbCA9ICdERUxFVEUgRlJPTSAnLiR0aGlzLT5ldmVudHNfdGFibGVfbmFtZS4nIFdIRVJFIGV2ZW50X3BhcmVudF9pZCA9ID8nOwogICAgICAgICAgICAkZGItPkV4ZWN1dGUoJHNxbCxhcnJheSgkZXZlbnRbJ2V2ZW50X2lkJ10pKTsKCiAgICAgICAgICAgIC8vIGRvIHRoZSB1cGRhdGUKICAgICAgICAgICAgJHNxbCA9ICJVUERBVEUgIiAuICR0aGlzLT5ldmVudHNfdGFibGVfbmFtZSAuICIKICAgICAgICAgICAgICAgICAgU0VUIGV2ZW50X3RpdGxlID0gPywgZXZlbnRfc3VtbWFyeSA9ID8sIGV2ZW50X2RldGFpbHMgPSA/LCBldmVudF9kYXRlX3N0YXJ0ID0gPywgZXZlbnRfZGF0ZV9lbmQgPSA/LCBldmVudF9yZWN1cl9wZXJpb2QgPSA/LCBldmVudF9kYXRlX3JlY3VyX2VuZCA9ID8sCiAgICAgICAgICAgICAgICAgIGV2ZW50X3JlY3VyX25ldmVudHMgPSA/LCBldmVudF9yZWN1cl9pbnRlcnZhbCA9ID8sIGV2ZW50X3JlY3VyX3dlZWtkYXlzID0gPywgZXZlbnRfcmVjdXJfbW9udGhkYXlzID0gPywgZXZlbnRfbW9kaWZpZWRfZGF0ZSA9IE5PVygpLAogICAgICAgICAgICAgICAgICBldmVudF9hbGxvd3Nfb3ZlcmxhcCA9ID8sIGV2ZW50X2FsbF9kYXkgPSA/CgkgICAgICAgICAgICAgIFdIRVJFIGV2ZW50X2lkID0gPyI7CiAgICAgICAgICAgICRkYnIgPSAgJGRiLT5FeGVjdXRlKCRzcWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCRldmVudFsnZXZlbnRfdGl0bGUnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9zdW1tYXJ5J10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfZGV0YWlscyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmltKCRldmVudFsnZXZlbnRfZGF0ZV9zdGFydCddLCInIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRoYW5kbGVfbnVsbF9kYXRlKCRldmVudFsnZXZlbnRfZGF0ZV9lbmQnXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfcmVjdXJfcGVyaW9kJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRoYW5kbGVfbnVsbF9kYXRlKCRldmVudFsnZXZlbnRfZGF0ZV9yZWN1cl9lbmQnXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfcmVjdXJfY291bnQnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9yZWN1cl9pbnRlcnZhbCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsb2RlKCcsJywkZXZlbnRbJ2V2ZW50X3JlY3VyX3dlZWtkYXlzJ10pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsb2RlKCcsJywkZXZlbnRbJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyddKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9hbGxvd3Nfb3ZlcmxhcCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X2FsbF9kYXknXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9pZCddKSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyB3ZSBhcmUgaW5zZXJ0aW5nIGEgbmV3IHJlY29yZAogICAgICAgICAgICAvLwogICAgICAgICAgICAkZG9faW5zZXJ0ID0gdHJ1ZTsKCiAgICAgICAgICAgICRldmVudFsnZXZlbnRfaWQnXSA9ICRkYi0+R2VuSUQoJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lIC4gIl9zZXEiKTsKCiAgICAgICAgICAgICRzcWwgPSAiSU5TRVJUIElOVE8gIiAuICR0aGlzLT5ldmVudHNfdGFibGVfbmFtZSAuICIKICAgICAgICAgICAgICAgICAgKGV2ZW50X2lkLGV2ZW50X3RpdGxlLGV2ZW50X3N1bW1hcnksZXZlbnRfZGV0YWlscwoJICAgICAgICAgICAgICAsZXZlbnRfZGF0ZV9zdGFydCxldmVudF9kYXRlX2VuZCxldmVudF9wYXJlbnRfaWQKCSAgICAgICAgICAgICAgLGV2ZW50X3JlY3VyX3BlcmlvZCwgZXZlbnRfZGF0ZV9yZWN1cl9lbmQsIGV2ZW50X2NyZWF0ZWRfYnkKICAgICAgICAgICAgICAgICAgLGV2ZW50X3JlY3VyX25ldmVudHMsIGV2ZW50X3JlY3VyX2ludGVydmFsLCBldmVudF9yZWN1cl93ZWVrZGF5cwogICAgICAgICAgICAgICAgICAsZXZlbnRfcmVjdXJfbW9udGhkYXlzLCBldmVudF9hbGxvd3Nfb3ZlcmxhcCwgZXZlbnRfYWxsX2RheSwgZXZlbnRfc3RhdHVzCgkgICAgICAgICAgICAgICxldmVudF9jcmVhdGVfZGF0ZSwgZXZlbnRfbW9kaWZpZWRfZGF0ZSkKICAgICAgICAgICAgICAgICAgVkFMVUVTICg/LD8sPyw/LD8sPyw/LD8sPyw/LD8sPyw/LD8sPyw/LD8sTk9XKCksTk9XKCkpIjsKICAgICAgICAgICAgJGRicj0kZGItPkV4ZWN1dGUoJHNxbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkoJGV2ZW50WydldmVudF9pZCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X3RpdGxlJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfc3VtbWFyeSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X2RldGFpbHMnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpbSgkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnQnXSwiJyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaGFuZGxlX251bGxfZGF0ZSgkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kJ10pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X3BhcmVudF9pZCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X3JlY3VyX3BlcmlvZCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaGFuZGxlX251bGxfZGF0ZSgkZXZlbnRbJ2V2ZW50X2RhdGVfcmVjdXJfZW5kJ10pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmV1X3VpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9yZWN1cl9jb3VudCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X3JlY3VyX2ludGVydmFsJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcGxvZGUoJywnLCRldmVudFsnZXZlbnRfcmVjdXJfd2Vla2RheXMnXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcGxvZGUoJywnLCRldmVudFsnZXZlbnRfcmVjdXJfbW9udGhkYXlzJ10pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X2FsbG93c19vdmVybGFwJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfYWxsX2RheSddLAoJCQkJICAgICRldmVudFsnZXZlbnRfc3RhdHVzJ10pKTsKICAgICAgICB9CgogICAgICAgIGlmKCAhJGRiciApIHRocm93IG5ldyBcQ0dDYWxFdmVudEV4Y2VwdGlvbignZXJyb3JfZGJlcnJvcicpOwoKICAgICAgICAvLyBpbnNlcnQgZmllbGQgZGVmaW5pdGlvbnMKICAgICAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJy4kdGhpcy0+ZXZlbnRfZmllbGRfdmFsdWVzX3RhYmxlX25hbWUuJyAoZmllbGRfbmFtZSwgZXZlbnRfaWQsIGZpZWxkX3ZhbHVlKSBWQUxVRVMgKD8sPyw/KSc7CgogICAgICAgIGZvcmVhY2goICRmaWVsZHMgYXMgJGZpZWxkICkgewogICAgICAgICAgICAkZmllbGRuYW1lID0gJGZpZWxkLT5uYW1lOwogICAgICAgICAgICBpZiggIWVtcHR5KCRmaWVsZC0+dmFsdWUpICkgewogICAgICAgICAgICAgICAgaWYoICRmaWVsZC0+c2VhcmNoYWJsZSApICRmaWVsZHRleHQgLj0gJGZpZWxkLT52YWx1ZS4nICc7CiAgICAgICAgICAgICAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRmaWVsZC0+bmFtZSwkZXZlbnRbJ2V2ZW50X2lkJ10sJGZpZWxkLT52YWx1ZSkpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBpbnNlcnQgY2F0ZWdvcnkgdmFsdWVzCiAgICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcuJHRoaXMtPmV2ZW50c190b19jYXRlZ29yaWVzX3RhYmxlX25hbWUuJyAoY2F0ZWdvcnlfaWQsZXZlbnRfaWQpIFZBTFVFUyAoPyw/KSc7CiAgICAgICAgZm9yZWFjaCggJGNhdGVnb3JpZXMgYXMgJiRvbmUgKSB7CiAgICAgICAgICAgIGlmKCAhJG9uZS0+Y2hlY2tlZCApIGNvbnRpbnVlOwogICAgICAgICAgICBpZiggJG9uZS0+aWQgPD0gMCApIGNvbnRpbnVlOwoKICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgoaW50KSAkb25lLT5pZCwoaW50KSAkZXZlbnRbJ2V2ZW50X2lkJ10pKTsKICAgICAgICB9CgogICAgICAgIGlmKCBjb3VudCgkcmVjdXJyaW5nX2V2ZW50cykgKSB7CiAgICAgICAgICAgIC8vIGFkZCB0aGUgcmVjdXJyaW5nIGV2ZW50cy4KICAgICAgICAgICAgJHNxbCA9ICJJTlNFUlQgSU5UTyAiIC4gJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lIC4gIihldmVudF9pZCxldmVudF90aXRsZSxldmVudF9zdW1tYXJ5LGV2ZW50X2RldGFpbHMsZXZlbnRfZGF0ZV9zdGFydCxldmVudF9kYXRlX2VuZCxldmVudF9wYXJlbnRfaWQKICAgICAgICAgICAgICAgICAgICAsZXZlbnRfY3JlYXRlZF9ieSxldmVudF9hbGxvd3Nfb3ZlcmxhcCxldmVudF9hbGxfZGF5LGV2ZW50X2NyZWF0ZV9kYXRlLCBldmVudF9tb2RpZmllZF9kYXRlKQogICAgICAgICAgICAgICAgICAgIFZBTFVFUyAoPyw/LD8sPyw/LD8sPyw/LD8sPyxOT1coKSxOT1coKSkiOwogICAgICAgICAgICBmb3JlYWNoKCAkcmVjdXJyaW5nX2V2ZW50cyBhcyAkb25lZXZlbnQgKSB7CiAgICAgICAgICAgICAgICAkY2hpbGRfZXZlbnRfaWQgPSAkZGItPkdlbklEKCR0aGlzLT5ldmVudHNfdGFibGVfbmFtZSAuICJfc2VxIik7CiAgICAgICAgICAgICAgICAkZGItPkV4ZWN1dGUoJHNxbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgkY2hpbGRfZXZlbnRfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF90aXRsZSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfc3VtbWFyeSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfZGV0YWlscyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaW0oJGRiLT5EYlRpbWVTdGFtcCgkb25lZXZlbnRbJ3N0YXJ0J10pLCInIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGhhbmRsZV9udWxsX2RhdGVfdHMoJG9uZWV2ZW50WydlbmQnXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9pZCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmZXVfdWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfYWxsb3dzX292ZXJsYXAnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X2FsbF9kYXknXSkpOwoKICAgICAgICAgICAgICAgIGlmKGlzX2FycmF5KCRjYXRlZ29yaWVzKSAmJiAoY291bnQoJGNhdGVnb3JpZXMpID4gMCkpIHsKICAgICAgICAgICAgICAgICAgICBkZWJ1Z190b19sb2coJGNhdGVnb3JpZXMsJ2NhdGVnb3JpZXMnKTsKICAgICAgICAgICAgICAgICAgICAkc3FsMiA9ICJJTlNFUlQgSU5UTyAiIC4gJHRoaXMtPmV2ZW50c190b19jYXRlZ29yaWVzX3RhYmxlX25hbWUgLiAiIChjYXRlZ29yeV9pZCwgZXZlbnRfaWQpIFZBTFVFUyAoPyw/KSI7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCgkY2F0ZWdvcmllcyBhcyAmJG9uZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiggISRvbmUtPmNoZWNrZWQgKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgJGNhdGVnb3J5X2lkID0gKGludCkgJG9uZS0+aWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCRjYXRlZ29yeV9pZCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgkc3FsMixhcnJheSgkY2F0ZWdvcnlfaWQsKGludCkgJGNoaWxkX2V2ZW50X2lkKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z190b19sb2coJGRiLT5zcWwpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIG5vdGUsIHdlIGRvIG5vdCBkbyBmaWVsZCB2YWx1ZXMgZm9yIHJlY3VycmluZyBldmVudHMgaGVyZS4KICAgICAgICAgICAgICAgIC8vIHRoZSB2YXJpb3VzIHZpZXdzIGNhbiByZWFkIGZpZWxkIHZhbHVlcyBmcm9tIHBhcmVudCBldmVudHMuCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIHNlbmQgYSBzaW5nbGUgZXZlbnQKICAgICAgICAkZXZlbnRuYW1lID0gJ0V2ZW50QWRkZWQnOwogICAgICAgICRwYXJtcyA9IGFycmF5KCk7CiAgICAgICAgJHBhcm1zWydldmVudF90aXRsZSddID0gJGV2ZW50WydldmVudF90aXRsZSddOwogICAgICAgICRwYXJtc1snZXZlbnRfc3VtbWFyeSddID0gJGV2ZW50WydldmVudF9zdW1tYXJ5J107CiAgICAgICAgJHBhcm1zWydldmVudF9kZXRhaWxzJ10gPSAkZXZlbnRbJ2V2ZW50X2RldGFpbHMnXTsKICAgICAgICAkcGFybXNbJ2V2ZW50X2RhdGVfc3RhcnQnXSA9ICRldmVudFsnZXZlbnRfZGF0ZV9zdGFydCddOwogICAgICAgICRwYXJtc1snZXZlbnRfZGF0ZV9lbmQnXSA9ICRldmVudFsnZXZlbnRfZGF0ZV9lbmQnXTsKICAgICAgICAkcGFybXNbJ2V2ZW50X2lkJ10gPSAkZXZlbnRbJ2V2ZW50X2lkJ107CiAgICAgICAgaWYoICEkZG9faW5zZXJ0ICkgJGV2ZW50bmFtZSA9ICdFdmVudEVkaXRlZCc7CiAgICAgICAgJHRoaXMtPlNlbmRFdmVudCggJGV2ZW50bmFtZSwgJHBhcm1zICk7CgogICAgICAgIC8vIHVwZGF0ZSB0aGUgc2VhcmNoIGluZGV4CiAgICAgICAgJHNlYXJjaCA9IGNtc191dGlsczo6Z2V0X3NlYXJjaF9tb2R1bGUoKTsKICAgICAgICBpZiggJHNlYXJjaCAhPSBGQUxTRSApIHsKICAgICAgICAgICAgJHRleHQgPSAieyRldmVudFsnZXZlbnRfdGl0bGUnXX0geyRldmVudFsnZXZlbnRfc3VtbWFyeSddfSB7JGV2ZW50WydldmVudF9kZXRhaWxzJ119IjsKICAgICAgICAgICAgJHRleHQgLj0gJyAnLiRmaWVsZHRleHQ7CiAgICAgICAgICAgICRzZWFyY2gtPkFkZFdvcmRzKCR0aGlzLT5HZXROYW1lKCksICRldmVudFsnZXZlbnRfaWQnXSwgJ2V2ZW50JywgJHRleHQsIE5VTEwpOwogICAgICAgIH0KCiAgICAgICAgLy8gYW5kIGRvbmUKICAgICAgICAkdGhpcy0+UmVkaXJlY3RDb250ZW50KCRkZXN0cGFnZSk7CiAgICB9CiAgICBjYXRjaCggXENHQ2FsRXZlbnRFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgJHN0YXR1cyA9ICRlLT5HZXRNZXNzYWdlKCk7CiAgICAgICAgJG1lc3NhZ2UgPSAkdGhpcy0+TGFuZygkc3RhdHVzKTsKICAgIH0KICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgICRzdGF0dXMgPSAnZXJyb3InOwogICAgICAgICRtZXNzYWdlID0gJGUtPkdldE1lc3NhZ2UoKTsKICAgIH0KfSAvLyBpZiBzdWJtaXQKCi8vCi8vIGJ1aWxkIHRoZSBmb3JtCi8vCiR0cGwgPSAkc21hcnR5LT5DcmVhdGVUZW1wbGF0ZSgkdGhpcy0+R2V0VGVtcGxhdGVSZXNvdXJjZSgkdGhldGVtcGxhdGUpLG51bGwsbnVsbCwkc21hcnR5KTsKJHRwbC0+YXNzaWduKCdldmVudCcsJGV2ZW50KTsKaWYoICFlbXB0eSgkc3RhdHVzKSApICR0cGwtPmFzc2lnbignc3RhdHVzJywkc3RhdHVzKTsKaWYoICFlbXB0eSgkbWVzc2FnZSkgKSAkdHBsLT5hc3NpZ24oJ21lc3NhZ2UnLCRtZXNzYWdlKTsKaWYoICRmaWVsZHMgKSAkdHBsLT5hc3NpZ24oJ2ZpZWxkcycsJGZpZWxkcyk7CmlmKCAkY2F0ZWdvcmllcyApICR0cGwtPmFzc2lnbignY2F0ZWdvcmllcycsJGNhdGVnb3JpZXMpOwoKLy8gc3R1ZmYgZm9yIHJlY3VycmluZyBldmVudHMKJHJlY3VyX2RheXMgPSBhcnJheSgpOwokcmVjdXJfZGF5c1snc3BlY2lmaWVkJ10gICAgICAgID0gJHRoaXMtPkxhbmcoJ3NwZWNpZmllZF9kYXRlJyk7CiRyZWN1cl9kYXlzWycxLDAnXSAgPSAkdGhpcy0+TGFuZygnZmlyc3Rfc3VuZGF5Jyk7CiRyZWN1cl9kYXlzWycxLDEnXSAgPSAkdGhpcy0+TGFuZygnZmlyc3RfbW9uZGF5Jyk7CiRyZWN1cl9kYXlzWycxLDInXSAgPSAkdGhpcy0+TGFuZygnZmlyc3RfdHVlc2RheScpOwokcmVjdXJfZGF5c1snMSwzJ10gID0gJHRoaXMtPkxhbmcoJ2ZpcnN0X3dlZG5lc2RheScpOwokcmVjdXJfZGF5c1snMSw0J10gID0gJHRoaXMtPkxhbmcoJ2ZpcnN0X3RodXJzZGF5Jyk7CiRyZWN1cl9kYXlzWycxLDUnXSAgPSAkdGhpcy0+TGFuZygnZmlyc3RfZnJpZGF5Jyk7CiRyZWN1cl9kYXlzWycxLDYnXSAgPSAkdGhpcy0+TGFuZygnZmlyc3Rfc2F0dXJkYXknKTsKJHJlY3VyX2RheXNbJzIsMCddICA9ICR0aGlzLT5MYW5nKCdzZWNvbmRfc3VuZGF5Jyk7CiRyZWN1cl9kYXlzWycyLDEnXSAgPSAkdGhpcy0+TGFuZygnc2Vjb25kX21vbmRheScpOwokcmVjdXJfZGF5c1snMiwyJ10gID0gJHRoaXMtPkxhbmcoJ3NlY29uZF90dWVzZGF5Jyk7CiRyZWN1cl9kYXlzWycyLDMnXSAgPSAkdGhpcy0+TGFuZygnc2Vjb25kX3dlZG5lc2RheScpOwokcmVjdXJfZGF5c1snMiw0J10gID0gJHRoaXMtPkxhbmcoJ3NlY29uZF90aHVyc2RheScpOwokcmVjdXJfZGF5c1snMiw1J10gID0gJHRoaXMtPkxhbmcoJ3NlY29uZF9mcmlkYXknKTsKJHJlY3VyX2RheXNbJzIsNiddICA9ICR0aGlzLT5MYW5nKCdzZWNvbmRfc2F0dXJkYXknKTsKJHJlY3VyX2RheXNbJzMsMCddICA9ICR0aGlzLT5MYW5nKCd0aGlyZF9zdW5kYXknKTsKJHJlY3VyX2RheXNbJzMsMSddICA9ICR0aGlzLT5MYW5nKCd0aGlyZF9tb25kYXknKTsKJHJlY3VyX2RheXNbJzMsMiddICA9ICR0aGlzLT5MYW5nKCd0aGlyZF90dWVzZGF5Jyk7CiRyZWN1cl9kYXlzWyczLDMnXSAgPSAkdGhpcy0+TGFuZygndGhpcmRfd2VkbmVzZGF5Jyk7CiRyZWN1cl9kYXlzWyczLDQnXSAgPSAkdGhpcy0+TGFuZygndGhpcmRfdGh1cnNkYXknKTsKJHJlY3VyX2RheXNbJzMsNSddICA9ICR0aGlzLT5MYW5nKCd0aGlyZF9mcmlkYXknKTsKJHJlY3VyX2RheXNbJzMsNiddICA9ICR0aGlzLT5MYW5nKCd0aGlyZF9zYXR1cmRheScpOwokcmVjdXJfZGF5c1snNCwwJ10gID0gJHRoaXMtPkxhbmcoJ2ZvdXJ0aF9zdW5kYXknKTsKJHJlY3VyX2RheXNbJzQsMSddICA9ICR0aGlzLT5MYW5nKCdmb3VydGhfbW9uZGF5Jyk7CiRyZWN1cl9kYXlzWyc0LDInXSAgPSAkdGhpcy0+TGFuZygnZm91cnRoX3R1ZXNkYXknKTsKJHJlY3VyX2RheXNbJzQsMyddICA9ICR0aGlzLT5MYW5nKCdmb3VydGhfd2VkbmVzZGF5Jyk7CiRyZWN1cl9kYXlzWyc0LDQnXSAgPSAkdGhpcy0+TGFuZygnZm91cnRoX3RodXJzZGF5Jyk7CiRyZWN1cl9kYXlzWyc0LDUnXSAgPSAkdGhpcy0+TGFuZygnZm91cnRoX2ZyaWRheScpOwokcmVjdXJfZGF5c1snNCw2J10gID0gJHRoaXMtPkxhbmcoJ2ZvdXJ0aF9zYXR1cmRheScpOwokcmVjdXJfZGF5c1snLTEsMCddID0gJHRoaXMtPkxhbmcoJ2xhc3Rfc3VuZGF5Jyk7CiRyZWN1cl9kYXlzWyctMSwxJ10gPSAkdGhpcy0+TGFuZygnbGFzdF9tb25kYXknKTsKJHJlY3VyX2RheXNbJy0xLDInXSA9ICR0aGlzLT5MYW5nKCdsYXN0X3R1ZXNkYXknKTsKJHJlY3VyX2RheXNbJy0xLDMnXSA9ICR0aGlzLT5MYW5nKCdsYXN0X3dlZG5lc2RheScpOwokcmVjdXJfZGF5c1snLTEsNCddID0gJHRoaXMtPkxhbmcoJ2xhc3RfdGh1cnNkYXknKTsKJHJlY3VyX2RheXNbJy0xLDUnXSA9ICR0aGlzLT5MYW5nKCdsYXN0X2ZyaWRheScpOwokcmVjdXJfZGF5c1snLTEsNiddID0gJHRoaXMtPkxhbmcoJ2xhc3Rfc2F0dXJkYXknKTsKJHRwbC0+YXNzaWduKCdyZWN1cl9kYXlzJywkcmVjdXJfZGF5cyk7Cgokd2Vla2RheXMgPSAkdGhpcy0+R2V0RGF5TmFtZXMoKTsKJHRwbC0+YXNzaWduKCdpbnB1dF93ZWVrZGF5cycsICR0aGlzLT5DcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCdldmVudF9yZWN1cl93ZWVrZGF5c1tdJyxhcnJheV9mbGlwKCR3ZWVrZGF5cyksJGV2ZW50WydldmVudF9yZWN1cl93ZWVrZGF5cyddLDcpKTsKJHRwbC0+YXNzaWduKCdyZXBlYXRfc3RyJywkdGhpcy0+TGFuZygncGx1cmFsXycuJGV2ZW50WydldmVudF9yZWN1cl9wZXJpb2QnXSkpOwokdHBsLT5hc3NpZ24oJ3dlZWtkYXlzJywkd2Vla2RheXMpOwokbnVtcyA9IGFycmF5KCk7CiRudW1zWy0xXSA9ICR0aGlzLT5MYW5nKCd1bmxpbWl0ZWQnKTsKZm9yKCAkaSA9IDA7ICRpIDwgNTA7ICRpKysgKSB7CiAgICAkbnVtc1skaSsxXSA9ICRpKzE7Cn0KJG51bXNbMTAwXSA9IDEwMDsKJG51bXNbMjUwXSA9IDI1MDsKJHRwbC0+YXNzaWduKCdtYXhpdGVycycsJG51bXMpOwokbnVtcyA9IGFycmF5KCk7CmZvciggJGkgPSAwOyAkaSA8IDMwOyAkaSsrICkgewogICAgJG51bXNbJGkrMV0gPSAkaSsxOwp9CiR0cGwtPmFzc2lnbignbnVtcycsJG51bXMpOwokdHBsLT5hc3NpZ24oJ3JlY3VyX29wdGlvbnMnLAogICAgICAgICAgICAgYXJyYXkoJ25vbmUnPT4kdGhpcy0+TGFuZygnbm8nKSwKICAgICAgICAgICAgICAgICAgICdkYWlseSc9PiR0aGlzLT5MYW5nKCdkYWlseScpLAogICAgICAgICAgICAgICAgICAgJ3dlZWtseSc9PiR0aGlzLT5MYW5nKCd3ZWVrbHknKSwKICAgICAgICAgICAgICAgICAgICdtb250aGx5Jz0+JHRoaXMtPkxhbmcoJ21vbnRobHknKSwKICAgICAgICAgICAgICAgICAgICd5ZWFybHknPT4kdGhpcy0+TGFuZygneWVhcmx5JykpKTsKJHBsdXJhbHMgPSBhcnJheSgnZGFpbHknPT4kdGhpcy0+TGFuZygncGx1cmFsX2RhaWx5JyksCiAgICAgICAgICAgICAgICAgICAnd2Vla2x5Jz0+JHRoaXMtPkxhbmcoJ3BsdXJhbF93ZWVrbHknKSwKICAgICAgICAgICAgICAgICAgICdtb250aGx5Jz0+JHRoaXMtPkxhbmcoJ3BsdXJhbF9tb250aGx5JyksCiAgICAgICAgICAgICAgICAgICAneWVhcmx5Jz0+JHRoaXMtPkxhbmcoJ3BsdXJhbF95ZWFybHknKQogICAgKTsKJHRwbC0+YXNzaWduKCdwbHVyYWxzX2pzb24nLGpzb25fZW5jb2RlKCRwbHVyYWxzKSk7CgovLyBvdGhlciBzdHVmZi4uCiRwYXJtcyA9IGFycmF5KCk7CiRwYXJtc1snZXZlbnRfaWQnXSA9ICRldmVudF9pZDsKaWYoIGlzc2V0KCRwYXJhbXNbJ2VkaXRldmVudHRlbXBsYXRlJ10pICkgJHBhcm1zWydlZGl0ZXZlbnR0ZW1wbGF0ZSddID0gJHBhcmFtc1snZWRpdGV2ZW50dGVtcGxhdGUnXTsKaWYoIGlzc2V0KCRwYXJhbXNbJ3JldHVybl9pZCddKSApICRwYXJtc1sncmV0dXJuX2lkJ10gPSAkcGFyYW1zWydyZXR1cm5faWQnXTsKJHRwbC0+YXNzaWduKCdmb3Jtc3RhcnQnLCR0aGlzLT5DR0NyZWF0ZUZvcm1TdGFydCgkaWQsJ2FkZGVkaXRfZXZlbnQnLCRyZXR1cm5pZCwkcGFybXMsZmFsc2UsJ3Bvc3QnLCdtdWx0aXBhcnQvZm9ybS1kYXRhJykpOwokdHBsLT5hc3NpZ24oJ2Zvcm1lbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwokY3VycmVudF95ZWFyID0gZGF0ZSgnWScpOwokc3RhcnQgPSAkY3VycmVudF95ZWFyIC0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Nob3dwYXN0eWVhcnMnLDIpOwokZW5kID0gJGN1cnJlbnRfeWVhciArICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzaG93ZnV0dXJleWVhcnMnLDEwKTsKJHRwbC0+YXNzaWduKCdzdGFydF95ZWFyJywkc3RhcnQpOwokdHBsLT5hc3NpZ24oJ2VuZF95ZWFyJywkZW5kKTsKJHRwbC0+ZGlzcGxheSgpOwoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_addedit_category.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgQ2FsZW5kYXIgQXR0cmlidXRlcycpICkgcmV0dXJuOwokdGhpcy0+U2V0Q3VycmVudEFjdGlvbignYWRtaW5fc2V0dGluZ3MnKTsKJHRoaXMtPlNldEN1cnJlbnRUYWIoJ2FkbWluX21hbmFnZV9jYXRlZ29yaWVzJyk7CgovLyBoYW5kbGUgY2FuY2VsCmlmKCBpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkgKSAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwoKLy8gc2V0dXAKJGNhdGlkID0gKGludCljZ2VfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCdjYXRpZCcpOwokY2F0ZWdvcnkgPSBudWxsOwp0cnkgewogICAgLy8gY3JlYXRlL2dldCBpbml0aWFsIGVtcHR5IGNhdGVnb3J5IChmb3IgYWRkaW5nKQogICAgJGNhdGVnb3J5ID0gbmV3IFxDR0NhbGVuZGFyXGNhdGVnb3J5OwoKICAgIC8vIGlmIHdlIGhhdmUgYSBjYXRlZ29yeSBsb2FkIGl0LgogICAgaWYoICRjYXRpZCA+IDAgKSAkY2F0ZWdvcnkgPSBcQ0dDYWxlbmRhclxjYXRlZ29yeTo6bG9hZCgkY2F0aWQpOwoKICAgIC8vIGhhbmRsZSBzdWJtaXQKICAgIGlmKCBpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgKSB7CiAgICAgICAgLy8gbWVyZ2UgdGhlIGZvcm0gZGF0YSBpbnRvIHRoZSBjYXRlZ29yeQogICAgICAgICRjYXRlZ29yeVsnbmFtZSddID0gJHBhcmFtc1snbmFtZSddOwogICAgICAgICRjYXRlZ29yeVsnYmdjb2xvciddID0gJHBhcmFtc1snYmdjb2xvciddOwogICAgICAgICRjYXRlZ29yeVsnZmdjb2xvciddID0gJHBhcmFtc1snZmdjb2xvciddOwoKICAgICAgICAvLyBzYXZlCiAgICAgICAgJGNhdGVnb3J5LT5zYXZlKCk7CgogICAgICAgIC8vIHJlZGlyZWN0IG91dGEgaGVyZS4KICAgICAgICAkdGhpcy0+U2V0TWVzc2FnZSgkdGhpcy0+TGFuZygnY2F0ZWdvcnl1cGRhdGVkJykpOwogICAgICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCk7CiAgICB9Cgp9CmNhdGNoKCBFeGNlcHRpb24gJGUgKSB7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCRlLT5HZXRNZXNzYWdlKCkpOwp9CgovLyBnaXZlIHRoZSBjYXRlZ29yeSB0byBzbWFydHkKJHBhcm1zID0gYXJyYXkoKTsKaWYoICRjYXRpZCA+IDAgKSAkcGFybXNbJ2NhdGlkJ10gPSAkY2F0aWQ7CiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywkdGhpcy0+Q0dDcmVhdGVGb3JtU3RhcnQoJGlkLCdhZG1pbl9hZGRlZGl0X2NhdGVnb3J5JywkcmV0dXJuaWQsJHBhcm1zKSk7CiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiRzbWFydHktPmFzc2lnbignY2F0ZWdvcnknLCRjYXRlZ29yeSk7CgovLyBkaXNwbGF5IHRoZSB0ZW1wbGF0ZQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluX2FkZGVkaXRfY2F0ZWdvcnkudHBsJyk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_add_event.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKJHRoaXMtPlNldEN1cnJlbnRUYWIoJ2RlZmF1bHRhZG1pbicpOwoKLy8gcGVybWlzc2lvbnMgY2hlY2sKJGV2ZW50X2lkID0gY2dlX3V0aWxzOjpnZXRfcGFyYW0oJHBhcmFtcywnZXZlbnRfaWQnLC0xKTsKaWYoICRldmVudF9pZCA8IDEgKSB7CiAgICAvLyBhZGRpbmcKICAgIGlmKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IENhbGVuZGFyJykgJiYgISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ0FkZCBDYWxlbmRhciBFdmVudHMnKSApIHsKICAgICAgICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX3Blcm1pc3Npb24nKSk7CiAgICAgICAgJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigpOwogICAgfQp9CmVsc2UgewogICAgLy8gZWRpdGluZwogICAgaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgQ2FsZW5kYXInKSAmJgogICAgICAgICEoJHRoaXMtPkNoZWNrUGVybWlzc2lvbignRWRpdCBNeSBDYWxlbmRhciBFdmVudHMnKSAmJiAkZXZlbnRbJ2V2ZW50X2NyZWF0ZWRfYnknXSA9PSAkdXNlcl9pZCkgKSB7CiAgICAgICAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9wZXJtaXNzaW9uJykpOwogICAgICAgICR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoKTsKICAgIH0KfQoKLy8gc2V0dXAKJHVzZXJfaWQgPSBnZXRfdXNlcmlkKCkgKiAtMSAtIDEwMDsKJGNhdGVnb3JpZXMgPSAkdGhpcy0+R2V0Q2F0ZWdvcmllcygpOwoKLy8gR2V0IHRoZSBldmVudAokZXZlbnQgPSAkdGhpcy0+R2V0RXZlbnQoJGV2ZW50X2lkKTsKaWYoICRldmVudF9pZCA8IDEgKSAgewogICAgLy8gaXQncyBhbiBhZGQgb3BlcmF0aW9uCiAgICBpZiggaXNzZXQoJHBhcmFtc1snc3RhcnQnXSkgKSB7CiAgICAgICAgLy8gaW5wdXQgZm9ybWF0IGlzIGluIFVUQyhadWx1KSB0aW1lIHpvbmUuLi4gc28gYWRkIG91ciBjb25maWcgdGltZXpvbmUgb2Zmc2V0LgogICAgICAgICRzdGFydCA9IFxjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnc3RhcnQnKTsKICAgICAgICAkdHpvZmZzZXQgPSAnKzAwOjAwJzsKICAgICAgICBpZiggJGNvbmZpZ1sndGltZXpvbmUnXSApICR0em9mZnNldCA9IChuZXcgRGF0ZVRpbWUoJ25vdycsIG5ldyBEYXRlVGltZVpvbmUoICRjb25maWdbJ3RpbWV6b25lJ10gKSkpLT5mb3JtYXQoJ1AnKTsKICAgICAgICAkdGltZSA9IHN0cnRvdGltZSgkc3RhcnQuJHR6b2Zmc2V0KTsKICAgICAgICAkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnRfdXQnXSA9ICR0aW1lOwogICAgICAgICRldmVudFsnZXZlbnRfZGF0ZV9zdGFydCddID0gJGRiLT5Vbml4VGltZVN0YW1wKCRldmVudFsnZXZlbnRfZGF0ZV9zdGFydF91dCddKTsKICAgIH0gZWxzZSBpZiggaXNzZXQoJHBhcmFtc1sndGltZSddKSApIHsKICAgICAgICAvLyB1c2UgdGhlIGRhdGUgcGFzc2VkIGluLCBidXQgYWRqdXN0IHRvIGN1cnJlbnQgdGltZS4KICAgICAgICAkdGltZSA9IFxjZ2VfcGFyYW06OmdldF9pbnQoJHBhcmFtcywndGltZScpOwogICAgICAgIGlmKCAkdGltZSA+IDAgKSB7CiAgICAgICAgICAgICRkYXRlID0gbmV3IERhdGVUaW1lKCk7CiAgICAgICAgICAgICRkYXRlLT5zZXRUaW1lU3RhbXAoJHRpbWUpOwogICAgICAgICAgICAkZGF0ZS0+c2V0VGltZSggZGF0ZSgnSCcpLCBkYXRlKCdNJykgJSAxNSApOwogICAgICAgICAgICAkdGltZSA9ICRkYXRlLT5nZXRUaW1lU3RhbXAoKTsKICAgICAgICAgICAgJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0X3V0J10gPSAkdGltZTsKICAgICAgICAgICAgJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0J10gPSAkZGItPkRiVGltZVN0YW1wKCRldmVudFsnZXZlbnRfZGF0ZV9zdGFydF91dCddKTsKICAgICAgICB9CiAgICB9Cn0KaWYoIGlzc2V0KCRwYXJhbXNbJ2RvX2dldF9mcm9tX3BhcmFtcyddKSAmJiAkcGFyYW1zWydkb19nZXRfZnJvbV9wYXJhbXMnXSA9PSAxICkgXGNnY19ldmVudF91dGlsczo6Z2V0X2V2ZW50X2Zyb21fcGFyYW1zKCRldmVudCwkcGFyYW1zKTsKCiRleHRyYT0iIjsKaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJmb3JjZV9jYXRlZ29yeSIpPT0xKSB7CiAgICAkZXh0cmE9Im9uc3VibWl0PSdmb3IoaT0wO2k8Ii5jb3VudCgkY2F0ZWdvcmllcykuIjtpKyspe3ZhciBuYW1lPVwiY2F0ZWdvcnlcIitpOyB2YXIgZWxlbWVudD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChuYW1lKTsgaWYgKGVsZW1lbnQuY2hlY2tlZCkgcmV0dXJuIHRydWU7fTsgYWxlcnQoXCIiLiR0aGlzLT5MYW5nKCJjYXRlZ29yeV9yZW1pbmRlciIpLiJcIik7IHJldHVybiBmYWxzZTsnIjsKfQokc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdhZG1pbl9ldmVudF91cGRhdGUnLCAkcmV0dXJuaWQsICRtZXRob2Q9J3Bvc3QnLCAkZW5jdHlwZT0nbXVsdGlwYXJ0L2Zvcm0tZGF0YScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCIiLGFycmF5KCksJGV4dHJhKSk7CiRzbWFydHktPmFzc2lnbignaGlkZGVuJywkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAnZXZlbnRfaWQnLCAkZXZlbnRfaWQpKTsKCiRjdXJyZW50X3llYXIgPSBkYXRlKCdZJyk7CiRzdGFydCA9ICRjdXJyZW50X3llYXIgLSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2hvd3Bhc3R5ZWFycycsMik7CiRlbmQgPSAkY3VycmVudF95ZWFyICsgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Nob3dmdXR1cmV5ZWFycycsMTApOwokc21hcnR5LT5hc3NpZ24oJ3N0YXJ0X3llYXInLCRzdGFydCk7CiRzbWFydHktPmFzc2lnbignZW5kX3llYXInLCRlbmQpOwokdG1wID0gY2djYWxlbmRhcl91dGlsczo6Z2V0X3VzZXJuYW1lKCRldmVudFsnZXZlbnRfY3JlYXRlZF9ieSddKTsKaWYoICR0bXAgKSAkZXZlbnRbJ293bmVyX25hbWUnXSA9ICR0bXA7CiRzbWFydHktPmFzc2lnbignZXZlbnQnLCRldmVudCk7CgokZXZlbnRfZGF0ZV9zdGFydF91dCA9IHRpbWUoKTsKaWYoaXNzZXQoJHBhcmFtc1snc3RhcnRkYXRlX0hvdXInXSkpIHsKICAgICRldmVudF9kYXRlX3N0YXJ0X3V0ID0gbWt0aW1lKCRwYXJhbXNbJ3N0YXJ0ZGF0ZV9Ib3VyJ10sJHBhcmFtc1snc3RhcnRkYXRlX01pbnV0ZSddLDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1zWydzdGFydGRhdGVfTW9udGgnXSwkcGFyYW1zWydzdGFydGRhdGVfRGF5J10sJHBhcmFtc1snc3RhcnRkYXRlX1llYXInXSk7Cn0KCiRldmVudF9kYXRlX2VuZF91dCA9IDA7CmlmKGlzc2V0KCRwYXJhbXNbJ2VuZGRhdGVfSG91ciddKSkgewogICAgJGV2ZW50X2RhdGVfZW5kX3V0ID0gbWt0aW1lKCRwYXJhbXNbJ2VuZGRhdGVfSG91ciddLCRwYXJhbXNbJ2VuZGRhdGVfTWludXRlJ10sNTksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcmFtc1snZW5kZGF0ZV9Nb250aCddLCRwYXJhbXNbJ2VuZGRhdGVfRGF5J10sJHBhcmFtc1snZW5kZGF0ZV9ZZWFyJ10pOwp9CgokZXZlbnRfcmVjdXJfcGVyaW9kCiA9ICdub25lJzsKaWYgKGlzc2V0KCRldmVudFsnZXZlbnRfcmVjdXJfcGVyaW9kJ10pKSAgJGV2ZW50X3JlY3VyX3BlcmlvZCA9ICRldmVudFsnZXZlbnRfcmVjdXJfcGVyaW9kJ107CgoKLy8gZm9yIHJlY3VycmluZyBldmVudHMKJHJlY3VyX2RheXMgPSBhcnJheSgpOwokcmVjdXJfZGF5c1snc3BlY2lmaWVkJ10gICAgICAgID0gJHRoaXMtPkxhbmcoJ3NwZWNpZmllZF9kYXRlJyk7CiRyZWN1cl9kYXlzWycxLDAnXSAgPSAkdGhpcy0+TGFuZygnZmlyc3Rfc3VuZGF5Jyk7CiRyZWN1cl9kYXlzWycxLDEnXSAgPSAkdGhpcy0+TGFuZygnZmlyc3RfbW9uZGF5Jyk7CiRyZWN1cl9kYXlzWycxLDInXSAgPSAkdGhpcy0+TGFuZygnZmlyc3RfdHVlc2RheScpOwokcmVjdXJfZGF5c1snMSwzJ10gID0gJHRoaXMtPkxhbmcoJ2ZpcnN0X3dlZG5lc2RheScpOwokcmVjdXJfZGF5c1snMSw0J10gID0gJHRoaXMtPkxhbmcoJ2ZpcnN0X3RodXJzZGF5Jyk7CiRyZWN1cl9kYXlzWycxLDUnXSAgPSAkdGhpcy0+TGFuZygnZmlyc3RfZnJpZGF5Jyk7CiRyZWN1cl9kYXlzWycxLDYnXSAgPSAkdGhpcy0+TGFuZygnZmlyc3Rfc2F0dXJkYXknKTsKJHJlY3VyX2RheXNbJzIsMCddICA9ICR0aGlzLT5MYW5nKCdzZWNvbmRfc3VuZGF5Jyk7CiRyZWN1cl9kYXlzWycyLDEnXSAgPSAkdGhpcy0+TGFuZygnc2Vjb25kX21vbmRheScpOwokcmVjdXJfZGF5c1snMiwyJ10gID0gJHRoaXMtPkxhbmcoJ3NlY29uZF90dWVzZGF5Jyk7CiRyZWN1cl9kYXlzWycyLDMnXSAgPSAkdGhpcy0+TGFuZygnc2Vjb25kX3dlZG5lc2RheScpOwokcmVjdXJfZGF5c1snMiw0J10gID0gJHRoaXMtPkxhbmcoJ3NlY29uZF90aHVyc2RheScpOwokcmVjdXJfZGF5c1snMiw1J10gID0gJHRoaXMtPkxhbmcoJ3NlY29uZF9mcmlkYXknKTsKJHJlY3VyX2RheXNbJzIsNiddICA9ICR0aGlzLT5MYW5nKCdzZWNvbmRfc2F0dXJkYXknKTsKJHJlY3VyX2RheXNbJzMsMCddICA9ICR0aGlzLT5MYW5nKCd0aGlyZF9zdW5kYXknKTsKJHJlY3VyX2RheXNbJzMsMSddICA9ICR0aGlzLT5MYW5nKCd0aGlyZF9tb25kYXknKTsKJHJlY3VyX2RheXNbJzMsMiddICA9ICR0aGlzLT5MYW5nKCd0aGlyZF90dWVzZGF5Jyk7CiRyZWN1cl9kYXlzWyczLDMnXSAgPSAkdGhpcy0+TGFuZygndGhpcmRfd2VkbmVzZGF5Jyk7CiRyZWN1cl9kYXlzWyczLDQnXSAgPSAkdGhpcy0+TGFuZygndGhpcmRfdGh1cnNkYXknKTsKJHJlY3VyX2RheXNbJzMsNSddICA9ICR0aGlzLT5MYW5nKCd0aGlyZF9mcmlkYXknKTsKJHJlY3VyX2RheXNbJzMsNiddICA9ICR0aGlzLT5MYW5nKCd0aGlyZF9zYXR1cmRheScpOwokcmVjdXJfZGF5c1snNCwwJ10gID0gJHRoaXMtPkxhbmcoJ2ZvdXJ0aF9zdW5kYXknKTsKJHJlY3VyX2RheXNbJzQsMSddICA9ICR0aGlzLT5MYW5nKCdmb3VydGhfbW9uZGF5Jyk7CiRyZWN1cl9kYXlzWyc0LDInXSAgPSAkdGhpcy0+TGFuZygnZm91cnRoX3R1ZXNkYXknKTsKJHJlY3VyX2RheXNbJzQsMyddICA9ICR0aGlzLT5MYW5nKCdmb3VydGhfd2VkbmVzZGF5Jyk7CiRyZWN1cl9kYXlzWyc0LDQnXSAgPSAkdGhpcy0+TGFuZygnZm91cnRoX3RodXJzZGF5Jyk7CiRyZWN1cl9kYXlzWyc0LDUnXSAgPSAkdGhpcy0+TGFuZygnZm91cnRoX2ZyaWRheScpOwokcmVjdXJfZGF5c1snNCw2J10gID0gJHRoaXMtPkxhbmcoJ2ZvdXJ0aF9zYXR1cmRheScpOwokcmVjdXJfZGF5c1snLTEsMCddID0gJHRoaXMtPkxhbmcoJ2xhc3Rfc3VuZGF5Jyk7CiRyZWN1cl9kYXlzWyctMSwxJ10gPSAkdGhpcy0+TGFuZygnbGFzdF9tb25kYXknKTsKJHJlY3VyX2RheXNbJy0xLDInXSA9ICR0aGlzLT5MYW5nKCdsYXN0X3R1ZXNkYXknKTsKJHJlY3VyX2RheXNbJy0xLDMnXSA9ICR0aGlzLT5MYW5nKCdsYXN0X3dlZG5lc2RheScpOwokcmVjdXJfZGF5c1snLTEsNCddID0gJHRoaXMtPkxhbmcoJ2xhc3RfdGh1cnNkYXknKTsKJHJlY3VyX2RheXNbJy0xLDUnXSA9ICR0aGlzLT5MYW5nKCdsYXN0X2ZyaWRheScpOwokcmVjdXJfZGF5c1snLTEsNiddID0gJHRoaXMtPkxhbmcoJ2xhc3Rfc2F0dXJkYXknKTsKJHNtYXJ0eS0+YXNzaWduKCdyZWN1cl9kYXlzJywkcmVjdXJfZGF5cyk7Cgokd2Vla2RheXMgPSAkdGhpcy0+R2V0RGF5TmFtZXMoKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF93ZWVrZGF5cycsICR0aGlzLT5DcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCdldmVudF9yZWN1cl93ZWVrZGF5c1tdJyxhcnJheV9mbGlwKCR3ZWVrZGF5cyksJGV2ZW50WydldmVudF9yZWN1cl93ZWVrZGF5cyddLDcpKTsKJHNtYXJ0eS0+YXNzaWduKCdyZXBlYXRfc3RyJywkdGhpcy0+TGFuZygncGx1cmFsXycuJGV2ZW50WydldmVudF9yZWN1cl9wZXJpb2QnXSkpOwokc21hcnR5LT5hc3NpZ24oJ3dlZWtkYXlzJywkd2Vla2RheXMpOwokbnVtcyA9IGFycmF5KCk7CiRudW1zWy0xXSA9ICR0aGlzLT5MYW5nKCd1bmxpbWl0ZWQnKTsKZm9yKCAkaSA9IDA7ICRpIDwgNTA7ICRpKysgKSB7CiAgICAkbnVtc1skaSsxXSA9ICRpKzE7Cn0KJG51bXNbMTAwXSA9IDEwMDsKJG51bXNbMjUwXSA9IDI1MDsKJHNtYXJ0eS0+YXNzaWduKCdtYXhpdGVycycsJG51bXMpOwokbnVtcyA9IGFycmF5KCk7CmZvciggJGkgPSAwOyAkaSA8IDMwOyAkaSsrICkgewogICAgJG51bXNbJGkrMV0gPSAkaSsxOwp9CiRzbWFydHktPmFzc2lnbignbnVtcycsJG51bXMpOwokc21hcnR5LT5hc3NpZ24oJ3JlY3VyX29wdGlvbnMnLAogICAgICAgICAgICAgICAgYXJyYXkoJHRoaXMtPkxhbmcoJ25vJyk9PiJub25lIiwKICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5MYW5nKCdkYWlseScpPT4nZGFpbHknLAogICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkxhbmcoJ3dlZWtseScpPT4nd2Vla2x5JywKICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5MYW5nKCdtb250aGx5Jyk9Pidtb250aGx5JywKICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5MYW5nKCd5ZWFybHknKT0+J3llYXJseScpKTsKJHNtYXJ0eS0+YXNzaWduKCdldmVudF9yZWN1cl9wZXJpb2QnLCRldmVudF9yZWN1cl9wZXJpb2QpOwoKaWYoICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdvdmVybGFwX3BvbGljeScsJ2FsbCcpID09ICdpbmRpdmlkdWFsJyApICRzbWFydHktPmFzc2lnbignYWxsb3dfb3ZlcmxhcCcsMSk7Cgokc21hcnR5LT5hc3NpZ24oJ2V2ZW50X3RpdGxlJywkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2V2ZW50X3RpdGxlJywgJGV2ZW50WydldmVudF90aXRsZSddLCA1MCwgMjU1KSk7CgppZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoImhpZGVzdW1tYXJ5IikhPTEpIHsKICAgICRzbWFydHktPmFzc2lnbignZXZlbnRfc3VtbWFyeScsJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdldmVudF9zdW1tYXJ5JywgJGV2ZW50WydldmVudF9zdW1tYXJ5J10sIDUwLCAyNTUpKTsKfQoKLy8gQWRkIGlucHV0IGNvbnRyb2xzIGZvciBlYWNoIG9mIHRoZSBjdXN0b20gZmllbGRzIHRoYXQgYXJlIGRlZmluZWQuCiR0bXAgPSBhcnJheSgpOwokZmllbGRzID0gJHRoaXMtPkdldEZpZWxkcygpOwpmb3JlYWNoKCRmaWVsZHMgYXMgJGZpZWxkKSB7CiAgICAkZmllbGRfdmFsdWVzID0gJGV2ZW50WydmaWVsZHMnXTsKICAgICRmaWVsZF9uYW1lID0gJGZpZWxkWydmaWVsZF9uYW1lJ107CiAgICAkZmllbGRfdHlwZSA9ICRmaWVsZFsnZmllbGRfdHlwZSddOwogICAgJGZpZWxkX3ZhbHVlID0gIiI7CiAgICBpZiggaXNzZXQoJGZpZWxkX3ZhbHVlc1skZmllbGRfbmFtZV0pICkgJGZpZWxkX3ZhbHVlID0gJGZpZWxkX3ZhbHVlc1skZmllbGRfbmFtZV07CgogICAgLy8gUmVwbGFjZSBzcGFjZXMgd2l0aCB1bmRlcmJhcnMgZm9yIHRoZSBmb3JtIHBhcmFtZXRlciAoYSBiaXQgb2YgYW4gaWtreSBoYWNrIEkga25vdywKICAgIC8vIGJ1dCBJIGNhbiB3ZWxsIGltYWdpbmUgZm9sayBkZWZpbmluZyBjdXN0b20gZmllbGRzIHdpdGggc3BhY2VzIGluIHRoZSBuYW1lKQogICAgLy8gUGVyaGFwcyBpdCB3b3VsZCBoYXZlIGJlZW4gYmV0dGVyIGlmIGN1c3RvbSBmaWVsZHMgYWxzbyBoYWQgYSBudW1lcmljIGtleSAtIGhvaHVtIGxpdmUgYW5kIGxlYXJuIQogICAgJHNhZmVmaWVsZG5hbWUgPSAgc3RyX3JlcGxhY2UgKCAiICIsICJfIiwgJGZpZWxkX25hbWUgKTsKICAgICRzYWZlZmllbGRuYW1lID0gIHN0cl9yZXBsYWNlICggIi4iLCAiXyIsICRmaWVsZF9uYW1lICk7CgogICAgJG9iaiA9IG5ldyBTdGRDbGFzcygpOwogICAgJG9iai0+bmFtZSA9ICRmaWVsZFsnZmllbGRfbmFtZSddOwogICAgJG9iai0+dmFsdWUgPSAkZmllbGRfdmFsdWU7CiAgICAkb2JqLT50eXBlID0gJGZpZWxkWydmaWVsZF90eXBlJ107CiAgICBzd2l0Y2goICRmaWVsZF90eXBlICkgewogICAgY2FzZSAwOiAvLyB0aGUgbm9ybWFsIHRleHQgZmllbGQKICAgICAgICAkb2JqLT5maWVsZCA9ICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnZmllbGRfJy4kc2FmZWZpZWxkbmFtZSwgJGZpZWxkX3ZhbHVlLCA1MCwgMjU1KTsKICAgICAgICBicmVhazsKCiAgICBjYXNlIDE6IC8vIGFuIHVwbG9hZCBmaWVsZCB0eXBlCiAgICAgICAgLy8gZGlzcGxheSBhIGxhYmVsIHdpdGggdGhlIGN1cnJlbnQgdmFsdWUsIGFuZCB0aGVuIGFuIHVwbG9hZCBmaWVsZAogICAgICAgICRvYmotPnZhbHVlID0gJGZpZWxkX3ZhbHVlOwogICAgICAgICRvYmotPmZpZWxkID0gJHRoaXMtPkNyZWF0ZUZpbGVVcGxvYWRJbnB1dCgkaWQsJ2ZpZWxkXycuJHNhZmVmaWVsZG5hbWUsJycsNTApLgogICAgICAgICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCd1cGxvYWRfZmllbGRfJy4kc2FmZWZpZWxkbmFtZSwkZmllbGRfbmFtZSkuCiAgICAgICAgICAgICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ3VwbG9hZF9maWVsZF9vbGR2YWx1ZV8nLiRzYWZlZmllbGRuYW1lLCRmaWVsZF92YWx1ZSk7CiAgICAgICAgaWYoICRmaWVsZF92YWx1ZSApICRvYmotPmZpZWxkIC49CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdyZW1vdmVfZmllbGRfJy4kc2FmZWZpZWxkbmFtZSwwKS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvYmotPnZhbHVlLicmbmJzcDsnLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCdyZW1vdmVfZmllbGRfJy4kc2FmZWZpZWxkbmFtZSwxKS4nJm5ic3A7Jy4kdGhpcy0+TGFuZygnZGVsZXRlJyk7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAyOgogICAgICAgICR3eXNpd3lnID0gZmFsc2U7CiAgICAgICAgaWYoIGlzc2V0KCRmaWVsZFsnZmllbGRfZXh0cmEnXVsnd3lzaXd5ZyddKSApICR3eXNpd3lnID0gJGZpZWxkWydmaWVsZF9leHRyYSddWyd3eXNpd3lnJ107CiAgICAgICAgJG9iai0+ZmllbGQgPSAkdGhpcy0+Q3JlYXRlVGV4dEFyZWEoJHd5c2l3eWcsJGlkLCRmaWVsZF92YWx1ZSwnZmllbGRfJy4kc2FmZWZpZWxkbmFtZSk7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAzOgogICAgICAgIC8vIGNvbXBhbnkgZGlyZWN0b3J5IGVudHJ5LgogICAgICAgICRjZG1vZCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ29tcGFueURpcmVjdG9yeScpOwogICAgICAgIGlmKCAhJGNkbW9kICkgewogICAgICAgICAgICAvLyBoYXZlIGZpZWxkIHR5cGUsIGJ1dCBubyBjb21wYW55ZGlyZWN0b3J5IG1vZHVsZS4KICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIC8vIGdldCBhIGxpc3Qgb2YgdGhlIGNvbXBhbmllcyB0aGF0IHdlIHdhbnQgdG8gZGlzcGxheQogICAgICAgIHsKICAgICAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBpZCxjb21wYW55X25hbWUgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2NvbXBkaXJfY29tcGFuaWVzIE9SREVSIEJZIGNvbXBhbnlfbmFtZSc7CiAgICAgICAgICAgICRkYnIgPSAkZGItPkdldEFycmF5KCRxdWVyeSk7CiAgICAgICAgICAgIGlmKCAkZGJyICkgewogICAgICAgICAgICAgICAgJHRtcDIgPSBhcnJheSgkdGhpcy0+TGFuZygnbm9uZScpPT4tMSk7CiAgICAgICAgICAgICAgICBmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkZGJyKTsgJGkrKyApIHsKICAgICAgICAgICAgICAgICAgICAkdG1wMlskZGJyWyRpXVsnY29tcGFueV9uYW1lJ11dID0gJGRiclskaV1bJ2lkJ107CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkb2JqLT5maWVsZCA9ICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnZmllbGRfJy4kc2FmZWZpZWxkbmFtZSwkdG1wMiwtMSwkZmllbGRfdmFsdWUpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgNDoKICAgICAgICAvLyBmaWxlIGF0dGFjaG1lbnQKICAgICAgICAkb2JqLT5maWVsZCA9IG51bGw7CiAgICAgICAgJGZpbGVwaWNrZXIgPSBcY21zX3V0aWxzOjpnZXRfZmlsZXBpY2tlcl9tb2R1bGUoKTsKICAgICAgICBpZiggISRmaWxlcGlja2VyICkgYnJlYWs7CiAgICAgICAgJHByb2ZpbGUgPSAkZmlsZXBpY2tlci0+Z2V0X2RlZmF1bHRfcHJvZmlsZSgpOwogICAgICAgICRvYmotPmZpZWxkID0gJGZpbGVwaWNrZXItPmdldF9odG1sKCAkaWQuJ2ZpZWxkXycuJHNhZmVmaWVsZG5hbWUsICRmaWVsZF92YWx1ZSwgJHByb2ZpbGUgKTsKICAgICAgICBicmVhazsKCiAgICBjYXNlIDU6CiAgICAgICAgLy8gY2hlY2tib3gKICAgICAgICAkb2JqLT5maWVsZCA9ICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ2ZpZWxkXycuJHNhZmVmaWVsZG5hbWUsMCk7CiAgICAgICAgJG9iai0+ZmllbGQgLj0gJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCdmaWVsZF8nLiRzYWZlZmllbGRuYW1lLDEsJGZpZWxkX3ZhbHVlKTsKICAgICAgICBicmVhazsKCiAgICBjYXNlIDY6CiAgICAgICAgLy8gZHJvcGRvd24KICAgICAgICAkb2JqLT5maWVsZCA9IG51bGw7CiAgICAgICAgaWYoICFlbXB0eSgkZmllbGRbJ2ZpZWxkX2V4dHJhJ11bJ2Rkb3B0cyddKSApIHsKICAgICAgICAgICAgJG9wdHMgPSBcY2dlX2FycmF5OjpleHBsb2RlX3dpdGhfa2V5KCRmaWVsZFsnZmllbGRfZXh0cmEnXVsnZGRvcHRzJ10sJz0nLCJcbiIpOwogICAgICAgICAgICBpZiggaXNfYXJyYXkoJG9wdHMpICYmIGNvdW50KCRvcHRzKSkgJG9iai0+ZmllbGQgPSAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ2ZpZWxkXycuJHNhZmVmaWVsZG5hbWUsYXJyYXlfZmxpcCgkb3B0cyksLTEsJGZpZWxkX3ZhbHVlKTsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSA3OgogICAgICAgIC8vIGltYWdlIGF0dGFjaG1lbnQKICAgICAgICAkZmlsZXBpY2tlciA9IFxjbXNfdXRpbHM6OmdldF9maWxlcGlja2VyX21vZHVsZSgpOwogICAgICAgIGlmKCAhJGZpbGVwaWNrZXIgKSBicmVhazsKICAgICAgICAkcHJvZmlsZSA9ICRmaWxlcGlja2VyLT5nZXRfZGVmYXVsdF9wcm9maWxlKCk7CiAgICAgICAgJHByb2ZpbGUgPSAkcHJvZmlsZS0+b3ZlcnJpZGVXaXRoKCBbICd0eXBlJz0+J2ltYWdlJyBdICk7CiAgICAgICAgJG9iai0+ZmllbGQgPSAkZmlsZXBpY2tlci0+Z2V0X2h0bWwoICRpZC4nZmllbGRfJy4kc2FmZWZpZWxkbmFtZSwgJGZpZWxkX3ZhbHVlLCAkcHJvZmlsZSApOwogICAgICAgIGJyZWFrOwogICAgfQogICAgJHRtcFtdID0gJG9iajsKfQppZiggY291bnQoJHRtcCkgKSAkc21hcnR5LT5hc3NpZ24oJ2ZpZWxkcycsJHRtcCk7CgppZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoImhpZGVjb250ZW50IikhPTEpIHsKICAgICRzbWFydHktPmFzc2lnbignZXZlbnRfZGV0YWlscycsICR0aGlzLT5DcmVhdGVUZXh0QXJlYSh0cnVlLCAkaWQsICRldmVudFsnZXZlbnRfZGV0YWlscyddLCAnZXZlbnRfZGV0YWlscycsICdjb250ZW50JywgJGlkKSk7Cn0KCiRudW1fY2F0cyA9IGNvdW50KCRjYXRlZ29yaWVzKTsKJGNvdW50ID0gMDsKJHRtcCA9IGFycmF5KCk7CmZvcigkaSA9IDA7ICRpIDwgJG51bV9jYXRzOyAkaSsrLCRjb3VudCArKykgewogICAgJGNhdGVnb3J5ID0gJGNhdGVnb3JpZXNbJGldOwogICAgJGNhdF9pZCA9ICRjYXRlZ29yeVsnY2F0ZWdvcnlfaWQnXTsKICAgICRjYXRfbmFtZSA9ICRjYXRlZ29yeVsnY2F0ZWdvcnlfbmFtZSddOwogICAgJGNoZWNrZWQgPSAnJzsKICAgIC8vIEZvbGxvd2luZyBsaW5lIHNlZW1zIG5vbi1mdW5jdGlvbi4gY29tbWVudGluZyBvdXQuIC0gRWxpamFoCiAgICAvLyBpZihpbl9hcnJheSgkY2F0X2lkLCAkZXZlbnRbJ2NhdGVnb3JpZXMnXSkpCSRjaGVja2VkID0gJGNhdF9pZDsKCiAgICAvL09ubHkgdGFnIHRoZSBkZWZhdWx0LWNhdGVnb3J5IGlzIHlvdSBhcmUgYWRkaW5nIGFuIGV2ZW50LCBub3QgaXQgeW91IGFyZSBlZGl0aW5nCiAgICBpZiAoJGV2ZW50X2lkPT0tMSkgewogICAgICAgIGlmKCRjYXRfaWQgPT0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlZmF1bHRfY2F0ZWdvcnknLCAnJykpICRjaGVja2VkID0gJGNhdF9pZDsKICAgIH0gZWxzZSB7CiAgICAgICAgaWYoaW5fYXJyYXkoJGNhdF9pZCwgJGV2ZW50WydjYXRlZ29yaWVzJ10pKQkkY2hlY2tlZCA9ICRjYXRfaWQ7CiAgICB9CiAgICAkb2JqID0gbmV3IFN0ZENsYXNzKCk7CiAgICAkb2JqLT5maWVsZCA9ICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ2V2ZW50X2NhdGVnb3JpZXNbXScsICRjYXRfaWQsICRjaGVja2VkLCJpZD0nY2F0ZWdvcnkkaSciKTsKICAgICRvYmotPm5hbWUgPSAkY2F0X25hbWU7CiAgICAkb2JqLT5pZCA9ICRjYXRfaWQ7CiAgICAkdG1wW10gPSAkb2JqOwp9CmlmKCBjb3VudCgkdG1wKSApICRzbWFydHktPmFzc2lnbignY2F0ZWdvcmllcycsJHRtcCk7Cgokc21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnY2FuY2VsJywkdGhpcy0+TGFuZygnY2FuY2VsJykpKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3JtZW5kJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5fYWRkX2V2ZW50LnRwbCcpOwo=]]></data>
	</file>
	<file>
	  <filename>/action.admin_ajax_deleteevent.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgQ2FsZW5kYXInKSAmJiAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignQWRkIENhbGVuZGFyIEV2ZW50cycpICYmCiAgICAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignRWRpdCBNeSBDYWxlbmRhciBFdmVudHMnKSApIGV4aXQ7CgokdXNlcmlkID0gbnVsbDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgQ2FsZW5kYXInKSApICR1c2VyaWQgPSBnZXRfdXNlcmlkKEZBTFNFKSAqIC0xIC0gMTAwOwoKJHJlc3VsdCA9IG5ldyBzdGRDbGFzczsKJHJlc3VsdC0+c3RhdHVzID0gMDsKJHJlc3VsdC0+bXNnID0gJHRoaXMtPkxhbmcoJ2Vycm9yX3Vua25vd24nKTsKCnRyeSB7CiAgICAkZXZlbnRfaWQgPSAoaW50KWNnZV91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJ2V2ZW50X2lkJyk7CiAgICAkZGVsZXRlX2NoaWxkcmVuID0gKGludCljZ2VfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCdkZWxldGVfY2hpbGRyZW4nLDApOwoKICAgIC8vIGdldCB0aGUgZXZlbnQgKG1ha2Ugc3VyZSBpdCdzIHZhbGlkLCBhbmQgd2UgaGF2ZSBwZXJtaXNzaW9uIHRvIGRlbGV0ZSBpdCwgQU5EIHRoYXQgaXQgaXMgbm90IGEgcGFyZW50KQogICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy4kdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUuJyBXSEVSRSBldmVudF9pZCA9ID8nOwogICAgJHBhcm1zID0gYXJyYXkoJGV2ZW50X2lkKTsKICAgIGlmKCAhaXNfbnVsbCgkdXNlcmlkKSApIHsKICAgICAgICAkcXVlcnkgLj0gJyBBTkQgZXZlbnRfY3JlYXRlZF9ieSA9ID8nOwogICAgICAgICRwYXJtc1tdID0gJHVzZXJpZDsKICAgIH0KCiAgICAkZXZlbnQgPSAkZGItPkdldFJvdygkcXVlcnksYXJyYXkoJGV2ZW50X2lkKSk7CiAgICBpZiggISRldmVudCApIHRocm93IG5ldyBFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2V2ZW50bm90Zm91bmQnKSk7CgogICAgaWYoICEkZGVsZXRlX2NoaWxkcmVuICkgewogICAgICAgIC8vIG5vdyBtYWtlIHN1cmUgaXQncyBub3QgYSBwYXJlbnQgKGRvbid0IHdhbm5hIGxlYXZlIG9ycGhhbmVkIGV2ZW50cyBseWluZyBhcm91bmQpCiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBldmVudF9pZCBGUk9NICcuJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lLicgV0hFUkUgZXZlbnRfcGFyZW50X2lkID0gPyc7CiAgICAgICAgJHRtcCA9ICRkYi0+R2V0T25lKCRxdWVyeSxhcnJheSgkZXZlbnRfaWQpKTsKICAgICAgICBpZiggJHRtcCA+IDAgKSB0aHJvdyBuZXcgRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9kZWxldGVwYXJlbnRldmVudCcpKTsKICAgIH0KCiAgICAvLyB3b290LCB3ZSBjYW4gZGVsZXRlIHRoZSB0aGluZy4KICAgIGNnY2FsZW5kYXJfdXRpbHM6OmRlbGV0ZV9ldmVudCgkZXZlbnRfaWQpOwogICAgJHJlc3VsdC0+c3RhdHVzID0gMTsKfQpjYXRjaCggRXhjZXB0aW9uICRlICkgewogICAgJHJlc3VsdC0+bXNnID0gJGUtPkdldE1lc3NhZ2UoKTsKICAgIGRlYnVnX3RvX2xvZygnYWRtaW5fYWpheF9kZWxldGVldmVudCBlcnIgJy4kZS0+R2V0TWVzc2FnZSgpKTsKfQoKZWNobyBqc29uX2VuY29kZSgkcmVzdWx0KTsKZXhpdDsKCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_ajax_editevent.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgQ2FsZW5kYXInKSAmJiAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignQWRkIENhbGVuZGFyIEV2ZW50cycpICYmCiAgICAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignRWRpdCBNeSBDYWxlbmRhciBFdmVudHMnKSApIGV4aXQ7CgokdXNlcmlkID0gbnVsbDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgQ2FsZW5kYXInKSApICR1c2VyaWQgPSBnZXRfdXNlcmlkKEZBTFNFKSAqIC0xIC0gMTAwOwoKJHJlc3VsdCA9IG5ldyBzdGRDbGFzczsKJHJlc3VsdC0+c3RhdHVzID0gMDsKJHJlc3VsdC0+bXNnID0gJHRoaXMtPkxhbmcoJ2Vycm9yX3Vua25vd24nKTsKCnRyeSB7CiAgICBkZWJ1Z190b19sb2coJ2FkbWluX2FqYXhfZWRpdGV2ZW50Jyk7CiAgICBkZWJ1Z190b19sb2coJHBhcmFtcyk7CiAgICAkZXZlbnRfaWQgPSAoaW50KWNnZV91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJ2V2ZW50X2lkJyk7CiAgICAkZGF5RGVsdGEgPSAoaW50KWNnZV91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJ2RheURlbHRhJyk7CiAgICAkbWludXRlRGVsdGEgPSAoaW50KWNnZV91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJ21pbnV0ZURlbHRhJyk7CiAgICAkYWxsRGF5ID0gKGludCljZ2VfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCdhbGxEYXknKTsKICAgICRtb3ZlID0gKGludCljZ2VfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCdtb3ZlJywwKTsKICAgIGlmKCAkZXZlbnRfaWQgPCAxICkgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJykpOwogICAgaWYoICRkYXlEZWx0YSA9PSAwICYmICRtaW51dGVEZWx0YSA9PSAwICYmICRhbGxEYXkgPT0gMCApIHRocm93IG5ldyBFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpKTsKCiAgICAvLyBnZXQgdGhlIGV2ZW50IChtYWtlIHN1cmUgaXQncyB2YWxpZCwgYW5kIHdlIGhhdmUgcGVybWlzc2lvbiB0byBlZGl0IGl0KQogICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy4kdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUuJyBXSEVSRSBldmVudF9pZCA9ID8nOwogICAgJHBhcm1zID0gYXJyYXkoJGV2ZW50X2lkKTsKICAgIGlmKCAhaXNfbnVsbCgkdXNlcmlkKSApIHsKICAgICAgICAkcXVlcnkgLj0gJyBBTkQgZXZlbnRfY3JlYXRlZF9ieSA9ID8nOwogICAgICAgICRwYXJtc1tdID0gJHVzZXJpZDsKICAgIH0KCiAgICAkZXZlbnQgPSAkZGItPkdldFJvdygkcXVlcnksYXJyYXkoJGV2ZW50X2lkKSk7CiAgICBpZiggISRldmVudCApIHRocm93IG5ldyBFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2V2ZW50bm90Zm91bmQnKSk7CgogICAgJGRheSA9IDI0ICogMzYwMDsKICAgICR0ZGlmZiA9ICRkYXlEZWx0YSAqICRkYXkgKyAkbWludXRlRGVsdGEgKiA2MDsKICAgIGlmKCAkbW92ZSApIHsKICAgICAgICAkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnQnXSA9ICRkYi0+VW5peFRpbWVTdGFtcCgkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnQnXSk7CiAgICAgICAgJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0J10gKz0gJHRkaWZmOwogICAgICAgIGlmKCAkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kJ10gKSB7CiAgICAgICAgICAgICRldmVudFsnZXZlbnRfZGF0ZV9lbmQnXSA9ICRkYi0+VW5peFRpbWVTdGFtcCgkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kJ10pICsgJHRkaWZmOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRldmVudFsnZXZlbnRfZGF0ZV9zdGFydCddID0gJGRiLT5Vbml4VGltZVN0YW1wKCRldmVudFsnZXZlbnRfZGF0ZV9zdGFydCddKTsKICAgICAgICBpZiggJHRkaWZmIDwgMCApIHsKICAgICAgICAgICAgJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0J10gKz0gJHRkaWZmOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgLy8gaWYgdGhlcmUgaXMgbm8gZW5kIGRhdGUgeWV0LgogICAgICAgICAgICAvLyB3ZSBoYXZlIHRvIGNyZWF0ZSBvbmUuCiAgICAgICAgICAgICRldmVudFsnZXZlbnRfZGF0ZV9lbmQnXSA9ICRkYi0+VW5peFRpbWVTdGFtcCgkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kJ10pOwogICAgICAgICAgICBpZiggJGV2ZW50WydldmVudF9kYXRlX2VuZCddID09IDAgKSAkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kJ10gPSAkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnQnXSArIDE1ICogNjA7IC8vIGZpZnRlZW4gbWludXRlcyBpZiB0aGVyZSBpcyBubyBlbmQgdGltZS4KICAgICAgICAgICAgJGV2ZW50WydldmVudF9kYXRlX2VuZCddICs9ICR0ZGlmZjsKICAgICAgICB9CiAgICB9CiAgICAkZXZlbnRbJ2V2ZW50X2FsbF9kYXknXSA9ICRhbGxEYXk7CiAgICBkZWJ1Z190b19sb2coJ3N0YXJ0IGRhdGUgJy5zdHJmdGltZSgnJXggJVgnLCRldmVudFsnZXZlbnRfZGF0ZV9zdGFydCddKSk7CiAgICBkZWJ1Z190b19sb2coJ2VuZCBkYXRlICcuc3RyZnRpbWUoJyV4ICVYJywkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kJ10pKTsKCiAgICAvLyBhbmQgc2F2ZSB0aGUgdGhpbmcuCiAgICAkcXVlcnkgPSAnVVBEQVRFICcuJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lLicgU0VUIGV2ZW50X2RhdGVfc3RhcnQgPSBGUk9NX1VOSVhUSU1FKD8pLCBldmVudF9kYXRlX2VuZCA9IEZST01fVU5JWFRJTUUoPyksIGV2ZW50X2FsbF9kYXkgPSA/LCBldmVudF9tb2RpZmllZF9kYXRlID0gTk9XKCkKICAgICAgICAgICAgICBXSEVSRSBldmVudF9pZCA9ID8nOwogICAgJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnQnXSwkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kJ10sJGV2ZW50WydldmVudF9hbGxfZGF5J10sJGV2ZW50WydldmVudF9pZCddKSk7CiAgICAkcmVzdWx0LT5zdGF0dXMgPSAxOwp9CmNhdGNoKCBFeGNlcHRpb24gJGUgKSB7CiAgICAkcmVzdWx0LT5tc2cgPSAkdGhpcy0+R2V0TWVzc2FnZSgpOwp9CgplY2hvIGpzb25fZW5jb2RlKCRyZXN1bHQpOwpleGl0OwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.admin_ajax_fetchevents.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgQ2FsZW5kYXInKSAmJgogICAgISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ0FkZCBDYWxlbmRhciBFdmVudHMnKSAmJgogICAgISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ0VkaXQgTXkgQ2FsZW5kYXIgRXZlbnRzJykgKSBleGl0OwoKJHN0YXJ0ID0gY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRfUkVRVUVTVCwnc3RhcnQnKTsKJGVuZCA9IGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkX1JFUVVFU1QsJ2VuZCcpOwokc2hvd2NoaWxkcmVuID0gKGludCljZ2VfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCdzaG93Y2hpbGRyZW4nLDApOwokY2F0ZWdvcnkgPSAoaW50KWNnZV91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJ2NhdGVnb3J5JywtMSk7CiRrZXl3b3JkID0gdHJpbShjZ2VfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCdrZXl3b3JkJykpOwokd2hlbiA9IHN0cnRvbG93ZXIodHJpbShjZ2VfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCd3aGVuJywnYW55JykpKTsKJGZpbHRlciA9IFxjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnZmlsdGVyJywnYWxsJyk7CgovLyB3aGVuIGNhbiBvbmx5IGJlIHVzZWQgd2hlbiBzdGFydC9lbmQgYXJlIG5vdCBzcGVjaWZpZWQuCiRsaW1pdCA9IGNnZV91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJ2xpbWl0JywxMDAwKTsgLy8gMTAwMCBpcyBtb3JlIHRoYW4gZW5vdWdoLgokc3RfZHMgPSAkZGItPkRiVGltZVN0YW1wKCRzdGFydCk7CiRlbl9kcyA9ICRkYi0+RGJUaW1lU3RhbXAoJGVuZCk7CgppZiggJHN0YXJ0IDwgMSB8fCAkZW5kIDwgMSApIHsKICAgIHN3aXRjaCggJHdoZW4gKSB7CiAgICBjYXNlICdwYXN0JzoKICAgICAgICAkc3RhcnQgPSAxOwogICAgICAgICRlbmQgPSB0aW1lKCk7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAnZnV0dXJlJzoKICAgICAgICAkc3RhcnQgPSB0aW1lKCk7CiAgICAgICAgJGVuZCA9IDIxNDc0ODM2NDg7IC8vIG1heCB1bml4IHRpbWUKICAgICAgICBicmVhazsKCiAgICBjYXNlICdhbnknOgogICAgICAgIGJyZWFrOwogICAgfQp9CmlmKCAkc3RhcnQgPiAkZW5kICkgewogICAgJGMgPSAkc3RhcnQ7CiAgICAkc3RhcnQgPSAkZW5kOwogICAgJGVuZCA9ICRjOwp9Cgokd2hlcmUgPSBhcnJheSgpOwokcGFybXMgPSBhcnJheSgpOwovLyBnZXQgYWxsIG9mIHRoZSBldmVudHMKJHF1ZXJ5ID0gJ1NFTEVDVCBFLiogRlJPTSAnLiR0aGlzLT5ldmVudHNfdGFibGVfbmFtZS4nIEUnOwppZiggJGNhdGVnb3J5ID4gMCApIHsKICAgICRxdWVyeSAuPSAnIExFRlQgSk9JTiAnLiR0aGlzLT5ldmVudHNfdG9fY2F0ZWdvcmllc190YWJsZV9uYW1lLicgRUMgT04gRS5ldmVudF9pZCA9IEVDLmV2ZW50X2lkJzsKICAgICR3aGVyZVtdID0gJ0VDLmNhdGVnb3J5X2lkID0gPyc7CiAgICAkcGFybXNbXSA9ICRjYXRlZ29yeTsKfQpzd2l0Y2goICRmaWx0ZXIgKSB7CmNhc2UgJ3B1Ymxpc2hlZCc6CiAgICAkd2hlcmVbXSA9ICdFLmV2ZW50X3N0YXR1cyA9ID8nOwogICAgJHBhcm1zW10gPSAnUCc7CiAgICBicmVhazsKY2FzZSAnZHJhZnQnOgogICAgJHdoZXJlW10gPSAnRS5ldmVudF9zdGF0dXMgPSA/JzsKICAgICRwYXJtc1tdID0gJ0QnOwogICAgYnJlYWs7CmNhc2UgJ2FsbCc6CmRlZmF1bHQ6Cn0KaWYoICRzdGFydCAmJiAkZW5kICkgewogICAgJHdoZXJlW10gPSAnKChFLmV2ZW50X2RhdGVfc3RhcnQgQkVUV0VFTiA/IEFORCA/KSBPUiAoRS5ldmVudF9kYXRlX2VuZCBCRVRXRUVOID8gQU5EID8pKSc7CiAgICAkcGFybXNbXSA9IHRyaW0oJGRiLT5EYlRpbWVTdGFtcCgkc3RhcnQpLCInIik7CiAgICAkcGFybXNbXSA9IHRyaW0oJGRiLT5EYlRpbWVTdGFtcCgkZW5kKSwiJyIpOwogICAgJHBhcm1zW10gPSB0cmltKCRkYi0+RGJUaW1lU3RhbXAoJHN0YXJ0KSwiJyIpOwogICAgJHBhcm1zW10gPSB0cmltKCRkYi0+RGJUaW1lU3RhbXAoJGVuZCksIiciKTsKfQppZiggISRzaG93Y2hpbGRyZW4gKSAkd2hlcmVbXSA9ICdDT0FMRVNDRShFLmV2ZW50X3BhcmVudF9pZCwwKSA8IDEnOwppZiggJGtleXdvcmQgKSB7CiAgICAka2V5d29yZCA9IHN0cmlwX3RhZ3MoJGtleXdvcmQpOwogICAgJHRfd29yZHMgPSBwcmVnX3NwbGl0KCcvW1xzLF0rLycsJGtleXdvcmQpOwogICAgJHdvcmRzID0gW107CiAgICBmb3JlYWNoKCAkdF93b3JkcyBhcyAkd29yZCApIHsKICAgICAgICAkd29yZCA9IHRyaW0oJHdvcmQpOwogICAgICAgIGlmKCBzdHJsZW4oJHdvcmQpIDwgMykgY29udGludWU7ICAvLyBpZ25vcmUgYW55IG9uZSBvciAyIGNoYXJhY3RlciB3b3Jkcy4KICAgICAgICBpZiggJHdvcmQgJiYgIWluX2FycmF5KCR3b3JkLCR3b3JkcykgKSAkd29yZHNbXSA9ICR3b3JkOwogICAgfQogICAgaWYoIGNvdW50KCR3b3JkcykgKSB7CiAgICAgICAgJGFyciA9IFtdOwogICAgICAgICRmbXQgPSAiRS5ldmVudF90aXRsZSBMSUtFICclcycgT1IgRS5ldmVudF9zdW1tYXJ5IExJS0UgJyVzJyBPUiBFLmV2ZW50X2RldGFpbHMgTElLRSAnJXMnIjsKICAgICAgICBmb3JlYWNoKCAkd29yZHMgYXMgJHdvcmQgKSB7CiAgICAgICAgICAgICR3b3JkID0gJyUnLiR3b3JkLiclJzsKICAgICAgICAgICAgJGFycltdID0gc3ByaW50ZigkZm10LCR3b3JkLCR3b3JkLCR3b3JkKTsKICAgICAgICB9CiAgICAgICAgJHdoZXJlW10gPSAnKCcuaW1wbG9kZSgnIE9SICcsJGFycikuJyknOwogICAgfQp9CgovLyBwdXQgdGhlIHF1ZXJ5IHRvZ2V0aGVyCmlmKCBjb3VudCgkd2hlcmUpICkgJHF1ZXJ5IC49ICcgV0hFUkUgJyAuIGltcGxvZGUoJyBBTkQgJywkd2hlcmUpOwoKJHJzID0gJGRiLT5TZWxlY3RMaW1pdCgkcXVlcnksJGxpbWl0LDAsJHBhcm1zKTsKZGVidWdfdG9fbG9nKCJBSkFYIik7IGRlYnVnX3RvX2xvZygkZGItPnNxbCk7IGRlYnVnX3RvX2xvZygkZGItPkVycm9yTXNnKCkpOwokbGlzdDEgPSBhcnJheSgpOwppZiggJHJzICkgewogICAgd2hpbGUoICEkcnMtPkVPRiApIHsKICAgICAgICAkbGlzdDFbXSA9ICRycy0+ZmllbGRzOwogICAgICAgICRycy0+TW92ZU5leHQoKTsKICAgIH0KfQp1bnNldCgkcnMpOwppZiggY291bnQoJGxpc3QxKSApIHsKICAgIC8vIGdldCB0aGUgY2F0ZWdvcmllKHMpIGZvciB0aGVzZSBldmVudHMKICAgICRpZGxpc3QgPSBjZ2VfYXJyYXk6OmV4dHJhY3RfZmllbGQoJGxpc3QxLCdldmVudF9pZCcpOwogICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy4kdGhpcy0+ZXZlbnRzX3RvX2NhdGVnb3JpZXNfdGFibGVfbmFtZS4nIFdIRVJFIGV2ZW50X2lkIElOICgnLmltcGxvZGUoJywnLCRpZGxpc3QpLicpIE9SREVSIEJZIGV2ZW50X2lkLGNhdGVnb3J5X2lkJzsKICAgICR0bXAgPSAkZGItPkdldEFycmF5KCRxdWVyeSk7CiAgICAkY2F0ZWdvcnlfbGlzdCA9IGFycmF5KCk7CiAgICBpZiggaXNfYXJyYXkoJHRtcCkgJiYgY291bnQoJHRtcCkgKSB7CiAgICAgICAgZm9yZWFjaCggJHRtcCBhcyAkcmVjICkgewogICAgICAgICAgICAkY2F0ZWdvcnlfbGlzdFskcmVjWydldmVudF9pZCddXVtdID0gJHJlY1snY2F0ZWdvcnlfaWQnXTsKICAgICAgICB9CiAgICB9CgogICAgLy8gbm93IGNvbnZlcnQgdGhpcyBpbnRvIHNvbWV0aGluZyBjb21wYXRpYmxlIHdpdGggZnVsbGNhbGVuZGFyCiAgICAkb3V0bGlzdCA9IGFycmF5KCk7CiAgICBmb3JlYWNoKCAkbGlzdDEgYXMgJHJlYyApIHsKICAgICAgICB0cnkgewogICAgICAgICAgICAkb3V0ID0gbmV3IHN0ZENsYXNzOwogICAgICAgICAgICAkb3V0LT5pZCA9ICRyZWNbJ2V2ZW50X2lkJ107CiAgICAgICAgICAgICRvdXQtPnRpdGxlID0gJHJlY1snZXZlbnRfdGl0bGUnXTsKICAgICAgICAgICAgJG91dC0+c3VtbWFyeSA9ICRyZWNbJ2V2ZW50X3N1bW1hcnknXTsKICAgICAgICAgICAgJG91dC0+c3RhdHVzID0gJHJlY1snZXZlbnRfc3RhdHVzJ107CiAgICAgICAgICAgICRvdXQtPmNhbmVkaXQgPSAxOwogICAgICAgICAgICAkb3V0LT5jYW5kZWxldGUgPSAwOwoKICAgICAgICAgICAgaWYoIGlzc2V0KCRjYXRlZ29yeV9saXN0WyRvdXQtPmlkXSkgJiYgY291bnQoJGNhdGVnb3J5X2xpc3RbJG91dC0+aWRdKSA+PSAxICkgewogICAgICAgICAgICAgICAgLy8gdGhpcyBldmVudCBpcyBpbiBvbmx5IG9uZSBjYXRlZ29yeQogICAgICAgICAgICAgICAgLy8gd2UgY2FuIHNldCB0aGUgY29sb3IgYW5kIHRleHRjb2xvcgogICAgICAgICAgICAgICAgJGNhdGVnb3J5ID0gXENHQ2FsZW5kYXJcY2F0ZWdvcnk6OmxvYWQoJGNhdGVnb3J5X2xpc3RbJG91dC0+aWRdWzBdKTsKICAgICAgICAgICAgICAgICRvdXQtPmNvbG9yID0gJGNhdGVnb3J5WydiZ2NvbG9yJ107CiAgICAgICAgICAgICAgICAkb3V0LT50ZXh0Q29sb3IgPSAkY2F0ZWdvcnlbJ2ZnY29sb3InXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYoICRyZWNbJ2V2ZW50X3BhcmVudF9pZCddID4gMSApIHsKICAgICAgICAgICAgICAgIC8vIGlzIGEgY2hpbGQgZXZlbnQKICAgICAgICAgICAgICAgICRvdXQtPmNoaWxkID0gJHJlY1snZXZlbnRfcGFyZW50X2lkJ107CiAgICAgICAgICAgICAgICAkb3V0LT5jYW5kZWxldGUgPSAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYoICRyZWNbJ2V2ZW50X3JlY3VyX3BlcmlvZCddICYmICRyZWNbJ2V2ZW50X3JlY3VyX3BlcmlvZCddICE9ICdub25lJyApIHsKICAgICAgICAgICAgICAgIC8vIGlzIGEgcGFyZW50IGV2ZW50IG9mIGEgcmVjdXJyaW5nIGV2ZW50CiAgICAgICAgICAgICAgICAkb3V0LT50aXRsZSAuPSAiICgiLiR0aGlzLT5MYW5nKCdyZXBlYXRzJykuJyknOwogICAgICAgICAgICAgICAgJG91dC0+cmVjdXJzID0gMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRvdXQtPmNhbmRlbGV0ZSA9IDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmKCAkb3V0LT5zdGF0dXMgPT0gJ0QnICkgewogICAgICAgICAgICAgICAgJG91dC0+dGl0bGUgLj0gJyAoJy4kdGhpcy0+TGFuZygnZHJhZnQnKS4nKSc7CiAgICAgICAgICAgICAgICAkb3V0LT50ZXh0Q29sb3IgPSAnIzY2NkE2RCc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vJG91dC0+c3RhcnQgPSAkZGItPlVuaXhUaW1lU3RhbXAoJHJlY1snZXZlbnRfZGF0ZV9zdGFydCddKTsKICAgICAgICAgICAgLy8kb3V0LT5lbmQgPSAkZGItPlVuaXhUaW1lU3RhbXAoJHJlY1snZXZlbnRfZGF0ZV9lbmQnXSk7CiAgICAgICAgICAgICRvdXQtPnN0YXJ0ID0gJHJlY1snZXZlbnRfZGF0ZV9zdGFydCddOwogICAgICAgICAgICAkb3V0LT5lbmQgPSAkcmVjWydldmVudF9kYXRlX2VuZCddOwogICAgICAgICAgICAkb3V0LT5hbGxEYXkgPSAoJHJlY1snZXZlbnRfYWxsX2RheSddKT90cnVlOmZhbHNlOwoKICAgICAgICAgICAgJG91dC0+ZWRpdF91cmwgPSAkdGhpcy0+Y3JlYXRlX3VybCgkaWQsJ2FkbWluX2FkZF9ldmVudCcsJHJldHVybmlkLGFycmF5KCdldmVudF9pZCc9PiRyZWNbJ2V2ZW50X2lkJ10pKTsKICAgICAgICAgICAgJG91dC0+ZWRpdF91cmwgPSBzdHJfcmVwbGFjZSgnJmFtcDsnLCcmJywkb3V0LT5lZGl0X3VybCk7CiAgICAgICAgICAgICRvdXRsaXN0W10gPSAkb3V0OwogICAgICAgIH0KICAgICAgICBjYXRjaCggRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICBcY2dlX3V0aWxzOjpsb2dfZXhjZXB0aW9uKCAkZSApOwogICAgICAgIH0KICAgIH0KCiAgICAkb3V0ID0ganNvbl9lbmNvZGUoJG91dGxpc3QpOwogICAgZWNobyAkb3V0Owp9CmV4aXQ7Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.admin_ajax_getcategories.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiRjYXRlZ29yaWVzID0gXENHQ2FsZW5kYXJcY2F0ZWdvcnk6OmdldF9jYXRlZ29yaWVzKCk7CmlmKCBjb3VudCgkY2F0ZWdvcmllcykpICRzbWFydHktPmFzc2lnbignY2F0ZWdvcmllcycsJGNhdGVnb3JpZXMpOwokb3V0ID0gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5fYWpheF9nZXRjYXRlZ29yaWVzLnRwbCcpOwplY2hvICRvdXQ7CmV4aXQ7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_ajax_ordercategories.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgQ2FsZW5kYXIgQXR0cmlidXRlcycpICkgZXhpdDsKaWYoICFpc3NldCgkX1JFUVVFU1RbJ2NhdCddKSB8fCAhaXNfYXJyYXkoJF9SRVFVRVNUWydjYXQnXSkgKSBleGl0OwoKJHF1ZXJ5ID0gJ1VQREFURSAnLiR0aGlzLT5jYXRlZ29yaWVzX3RhYmxlX25hbWUuJyBTRVQgY2F0ZWdvcnlfb3JkZXIgPSA/IFdIRVJFIGNhdGVnb3J5X2lkID0gPyc7CmZvciggJGkgPSAwOyAkaSA8IGNvdW50KCRfUkVRVUVTVFsnY2F0J10pOyAkaSsrICkgewogICAgJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkaSsxLCRfUkVRVUVTVFsnY2F0J11bJGldKSk7Cn0KCmV4aXQ7Cj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_delete_category.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgQ2FsZW5kYXIgQXR0cmlidXRlcycpICkgcmV0dXJuOwokdGhpcy0+U2V0Q3VycmVudEFjdGlvbignYWRtaW5fc2V0dGluZ3MnKTsKJHRoaXMtPlNldEN1cnJlbnRUYWIoJ2FkbWluX21hbmFnZV9jYXRlZ29yaWVzJyk7CgokY2F0aWQgPSAoaW50KWNnZV91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJ2NhdGlkJyk7CmlmKCAkY2F0aWQgPCAxICkgewogICAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKSk7Cn0KCnRyeSB7CiAgICBcQ0dDYWxlbmRhclxjYXRlZ29yeTo6ZGVsZXRlKCRjYXRpZCk7CiAgICAkdGhpcy0+U2V0TWVzc2FnZSgkdGhpcy0+TGFuZygnY2F0ZWdvcnlkZWxldGVkJykpOwp9CmNhdGNoKCBFeGNlcHRpb24gJGUgKSB7CiAgICAkdGhpcy0+U2V0RXJyb3IoJGUtPkdldE1lc3NhZ2UoKSk7Cn0KCiR0aGlzLT5SZWRpcmVjdFRvVGFiKCk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_delete_event.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgcmV0dXJuOwppZiggIWlzc2V0KCRwYXJhbXNbJ2V2ZW50X2lkJ10pICkgcmV0dXJuOwpkaWUoJ25vdCB1c2VkJyk7Cg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_event_update.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKJHRoaXMtPlNldEN1cnJlbnRUYWIoJ2RlZmF1bHRhZG1pbicpOwokbWVzc2FnZT0iIjsKJHNlYXJjaCA9IGNtc191dGlsczo6Z2V0X3NlYXJjaF9tb2R1bGUoKTsKCmZ1bmN0aW9uIGhhbmRsZV9udWxsX2RhdGVfdHMoJHZhbCkKewogICAgaWYoICR2YWwgKSB7CiAgICAgICAgJGRiID0gQ21zQXBwOjpnZXRfaW5zdGFuY2UoKS0+R2V0RGIoKTsKICAgICAgICAkc3RyID0gJGRiLT5EYlRpbWVTdGFtcCgkdmFsKTsKICAgICAgICByZXR1cm4gdHJpbSgkc3RyLCInIik7CiAgICB9Cn0KCmZ1bmN0aW9uIGhhbmRsZV9udWxsX2RhdGUoJHN0cikKewogICAgaWYoICFpc19udWxsKCRzdHIpICkgcmV0dXJuIHRyaW0oJHN0ciwiJyIpOwogICAgcmV0dXJuICRzdHI7Cn0KCiRldmVudHNfdG9fY2F0ZWdvcmllc190YWJsZV9uYW1lID0gJHRoaXMtPmV2ZW50c190b19jYXRlZ29yaWVzX3RhYmxlX25hbWU7CmlmKCBpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkgKSAkdGhpcy0+UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4nLCRyZXR1cm5pZCxhcnJheSgibW9kdWxlX21lc3NhZ2UiPT4kbWVzc2FnZSkpOwoKLy8KLy8gR2F0aGVyIHBhcmFtZXRlcnMKLy8KJGV2ZW50X2lkID0gKGludCkgY2dlX3V0aWxzOjpnZXRfcGFyYW0oJHBhcmFtcywnZXZlbnRfaWQnLC0xKTsKJHJlY3VycmluZ19ldmVudHMgPSBudWxsOwokdXNlcl9pZCA9IGdldF91c2VyaWQoRkFMU0UpICogLTEgLSAxMDA7CiRjYXRlZ29yaWVzID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAnZXZlbnRfY2F0ZWdvcmllcycsLTEpOwokZXZlbnQgPSAkdGhpcy0+R2V0RXZlbnQoJGV2ZW50X2lkKTsKaWYoICRldmVudF9pZCA+IDAgKSAkdGhpcy0+U2VuZEV2ZW50KCdFdmVudEVkaXRlZFByZScsIFsnZXZlbnRfaWQnPT4kZXZlbnRfaWQsJ2V2ZW50Jz0+JGV2ZW50XSApOwpcY2djX2V2ZW50X3V0aWxzOjpnZXRfZXZlbnRfZnJvbV9wYXJhbXMoJGV2ZW50LCRwYXJhbXMsdHJ1ZSk7CiRldmVudF9wYXJlbnRfaWQgPSAkZXZlbnRfaWQ7CgovLyBwZXJtaXNzaW9ucyBjaGVjawppZiggJGV2ZW50X2lkIDwgMSApIHsKICAgIC8vIGFkZGluZwogICAgaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgQ2FsZW5kYXInKSAmJiAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignQWRkIENhbGVuZGFyIEV2ZW50cycpICkgewogICAgICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfcGVybWlzc2lvbicpKTsKICAgICAgICAkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCk7CiAgICB9Cn0KZWxzZSB7CiAgICAvLyBlZGl0aW5nCiAgICBpZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBDYWxlbmRhcicpICYmCiAgICAgICAgISgkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdFZGl0IE15IENhbGVuZGFyIEV2ZW50cycpICYmICRldmVudFsnZXZlbnRfY3JlYXRlZF9ieSddID09ICR1c2VyX2lkKSApIHsKICAgICAgICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX3Blcm1pc3Npb24nKSk7CiAgICAgICAgJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigpOwogICAgfQp9CgovLyBDYXJyeSB0aHJvdWdoIGFueSBvbGQgdmFsdWVzCi8vIGp1c3QgaW5jYXNlIGEgbmV3IGZpbGUgd2FzIG5vdCB1cGxvYWRlZApmb3JlYWNoKCAkcGFyYW1zIGFzICRrID0+ICR2ICkgewogICAgaWYoIHByZWdfbWF0Y2goJy9edXBsb2FkX2ZpZWxkX29sZHZhbHVlXy8nLCAkaykgKSB7CiAgICAgICAgJHRoZWZpZWxkID0gc3Vic3RyKCRrLHN0cmxlbigndXBsb2FkX2ZpZWxkX29sZHZhbHVlXycpKTsKICAgICAgICAkcGFyYW1zWydmaWVsZF8nLiR0aGVmaWVsZF0gPSAkdjsKICAgIH0KfQovLyBoYW5kbGUgZGVsZXRpb24KZm9yZWFjaCggJHBhcmFtcyBhcyAkayA9PiAkdiApCnsKICAgIGlmKCBwcmVnX21hdGNoKCcvXnJlbW92ZV9maWVsZF8vJywgJGspICYmICR2ID09IDEgKQogICAgewogICAgICAgICR0aGVmaWVsZCA9IHN1YnN0cigkayxzdHJsZW4oJ3JlbW92ZV9maWVsZF8nKSk7CiAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ3VwbG9hZF9maWVsZF9vbGR2YWx1ZV8nLiR0aGVmaWVsZF0pICkKICAgICAgICB7CiAgICAgICAgICAgICR2ID0gJHBhcmFtc1sndXBsb2FkX2ZpZWxkX29sZHZhbHVlXycuJHRoZWZpZWxkXTsKICAgICAgICAgICAgJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOwogICAgICAgICAgICAkZGVzdERpciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1cGxvYWRkaXJlY3RvcnknLCRjb25maWdbJ3VwbG9hZHNfcGF0aCddKTsKICAgICAgICAgICAgJGRuID0gY21zX2pvaW5fcGF0aCgkZGVzdERpciwkdik7CgogICAgICAgICAgICBAdW5saW5rKCRkbik7CiAgICAgICAgICAgIHVuc2V0KCRwYXJhbXNbJ2ZpZWxkXycuJHRoZWZpZWxkXSk7CiAgICAgICAgfQogICAgfTsKfQoKLy8KLy8gRXJyb3IgSGFuZGxpbmcKLy8KaWYoICRldmVudFsnZXZlbnRfZGF0ZV9lbmRfdXQnXSAhPSBOVUxMICYmCiAgICAkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kX3V0J10gPCAkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnRfdXQnXSApIHsKICAgICRwYXJhbXNbJ21vZHVsZV9lcnJvciddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRfZGF0ZXMnKTsKICAgICRwYXJhbXNbJ2V2ZW50X3JlY3VyX3dlZWtkYXlzJ10gPSBpbXBsb2RlKCcsJywkcGFyYW1zWydldmVudF9yZWN1cl93ZWVrZGF5cyddKTsKICAgICRwYXJhbXNbJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyddID0gaW1wbG9kZSgnLCcsJHBhcmFtc1snZXZlbnRfcmVjdXJfbW9udGhkYXlzJ10pOwogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2V2ZW50X2NhdGVnb3JpZXMnXSkgJiYgJHBhcmFtc1snZXZlbnRfY2F0ZWdvcmllc10nXSApICRwYXJhbXNbJ2V2ZW50X2NhdGVnb3JpZXMnXSA9IHNlcmlhbGl6ZSgkcGFyYW1zWydldmVudF9jYXRlZ29yaWVzJ10pOwogICAgJHBhcmFtc1snZG9fZ2V0X2Zyb21fcGFyYW1zJ10gPSAxOwogICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwnYWRtaW5fYWRkX2V2ZW50JywkcmV0dXJuaWQsJHBhcmFtcyk7Cn0KaWYoJGV2ZW50WydldmVudF9yZWN1cl9wZXJpb2QnXSAhPSAnbm9uZScgJiYKICAgJGV2ZW50WydldmVudF9kYXRlX3JlY3VyX2VuZF91dCddICE9IE5VTEwgJiYKICAgKCRldmVudFsnZXZlbnRfZGF0ZV9yZWN1cl9lbmRfdXQnXSA8ICRldmVudFsnZXZlbnRfZGF0ZV9zdGFydF91dCddIHx8CiAgICAoJGV2ZW50WydldmVudF9kYXRlX2VuZF91dCddICE9IE5VTEwgJiYKICAgICAkZXZlbnRbJ2V2ZW50X2RhdGVfcmVjdXJfZW5kX3V0J10gPCAkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kX3V0J10pKSApIHsKICAgICRwYXJhbXNbJ21vZHVsZV9lcnJvciddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRfZGF0ZXMnKTsKICAgICRwYXJhbXNbJ2V2ZW50X3JlY3VyX3dlZWtkYXlzJ10gPSBpbXBsb2RlKCcsJywkZXZlbnRbJ2V2ZW50X3JlY3VyX3dlZWtkYXlzJ10pOwogICAgJHBhcmFtc1snZXZlbnRfcmVjdXJfbW9udGhkYXlzJ10gPSBpbXBsb2RlKCcsJywkZXZlbnRbJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyddKTsKICAgIGlmKCBpc3NldCgkcGFyYW1zWydldmVudF9jYXRlZ29yaWVzJ10pICYmICRwYXJhbXNbJ2V2ZW50X2NhdGVnb3JpZXMnXSApICRwYXJhbXNbJ2V2ZW50X2NhdGVnb3JpZXMnXSA9IHNlcmlhbGl6ZSgkcGFyYW1zWydldmVudF9jYXRlZ29yaWVzJ10pOwogICAgJHBhcmFtc1snZG9fZ2V0X2Zyb21fcGFyYW1zJ10gPSAxOwogICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwnYWRtaW5fYWRkX2V2ZW50JywkcmV0dXJuaWQsJHBhcmFtcyk7Cn0KaWYoJGV2ZW50WydldmVudF9yZWN1cl9wZXJpb2QnXSA9PSAnbW9udGhseScgJiYKICAgY291bnQoJGV2ZW50WydldmVudF9yZWN1cl9tb250aGRheXMnXSkgPiAxICYmCiAgICRldmVudFsnZXZlbnRfcmVjdXJfbW9udGhkYXlzJ11bMF0gPT0gJ3NwZWNpZmllZCcpIHsKICAgICRwYXJhbXNbJ21vZHVsZV9lcnJvciddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRfcmVjdXJfbW9udGhseV9mcmVxJyk7CiAgICAkcGFyYW1zWydldmVudF9yZWN1cl93ZWVrZGF5cyddID0gaW1wbG9kZSgnLCcsJGV2ZW50WydldmVudF9yZWN1cl93ZWVrZGF5cyddKTsKICAgICRwYXJhbXNbJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyddID0gaW1wbG9kZSgnLCcsJGV2ZW50WydldmVudF9yZWN1cl9tb250aGRheXMnXSk7CiAgICBpZiggaXNzZXQoJHBhcmFtc1snZXZlbnRfY2F0ZWdvcmllcyddKSAmJiAkcGFyYW1zWydldmVudF9jYXRlZ29yaWVzJ10gKSAkcGFyYW1zWydldmVudF9jYXRlZ29yaWVzJ10gPSBzZXJpYWxpemUoJHBhcmFtc1snZXZlbnRfY2F0ZWdvcmllcyddKTsKICAgICRwYXJhbXNbJ2RvX2dldF9mcm9tX3BhcmFtcyddID0gMTsKICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsJ2FkbWluX2FkZF9ldmVudCcsJHJldHVybmlkLCRwYXJhbXMpOwp9CmlmKCBlbXB0eSgkZXZlbnRbJ2V2ZW50X3RpdGxlJ10pICkgewogICAgJHBhcmFtc1snbW9kdWxlX2Vycm9yJ10gPSAkdGhpcy0+TGFuZygnZXJyb3Jfbm9ldmVudG5hbWUnKTsKICAgICRwYXJhbXNbJ2V2ZW50X3JlY3VyX3dlZWtkYXlzJ10gPSBpbXBsb2RlKCcsJywkZXZlbnRbJ2V2ZW50X3JlY3VyX3dlZWtkYXlzJ10pOwogICAgJHBhcmFtc1snZXZlbnRfcmVjdXJfbW9udGhkYXlzJ10gPSBpbXBsb2RlKCcsJywkZXZlbnRbJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyddKTsKICAgIGlmKCBpc3NldCgkcGFyYW1zWydldmVudF9jYXRlZ29yaWVzJ10pICYmICRwYXJhbXNbJ2V2ZW50X2NhdGVnb3JpZXMnXSApICRwYXJhbXNbJ2V2ZW50X2NhdGVnb3JpZXMnXSA9IHNlcmlhbGl6ZSgkcGFyYW1zWydldmVudF9jYXRlZ29yaWVzJ10pOwogICAgJHBhcmFtc1snZG9fZ2V0X2Zyb21fcGFyYW1zJ10gPSAxOwogICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwnYWRtaW5fYWRkX2V2ZW50JywkcmV0dXJuaWQsJHBhcmFtcyk7Cn0KaWYoICgkY2F0ZWdvcmllcyA9PSAtMSkgJiYgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ZvcmNlX2NhdGVnb3J5JykgPT0gMSkgewogICAgJHBhcmFtc1snbW9kdWxlX2Vycm9yJ10gPSAkdGhpcy0+TGFuZygnZXJyb3Jfbm9jYXRlZ29yeScpOwogICAgJHBhcmFtc1snZXZlbnRfcmVjdXJfd2Vla2RheXMnXSA9IGltcGxvZGUoJywnLCRldmVudFsnZXZlbnRfcmVjdXJfd2Vla2RheXMnXSk7CiAgICAkcGFyYW1zWydldmVudF9yZWN1cl9tb250aGRheXMnXSA9IGltcGxvZGUoJywnLCRldmVudFsnZXZlbnRfcmVjdXJfbW9udGhkYXlzJ10pOwogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2V2ZW50X2NhdGVnb3JpZXMnXSkgJiYgJHBhcmFtc1snZXZlbnRfY2F0ZWdvcmllcyddICkgJHBhcmFtc1snZXZlbnRfY2F0ZWdvcmllcyddID0gc2VyaWFsaXplKCRwYXJhbXNbJ2V2ZW50X2NhdGVnb3JpZXMnXSk7CiAgICAkcGFyYW1zWydkb19nZXRfZnJvbV9wYXJhbXMnXSA9IDE7CiAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCdhZG1pbl9hZGRfZXZlbnQnLCRyZXR1cm5pZCwkcGFyYW1zKTsKfQppZiggJGV2ZW50WydldmVudF9yZWN1cl9wZXJpb2QnXSAhPSAnbm9uZScgKSB7CiAgICAvLyBjYWxjdWxhdGUgcmVjdXJyaW5nIGV2ZW50cwogICAgJHJlY3VycmluZ19ldmVudHMgPSBcY2djX2V2ZW50X3V0aWxzOjpjYWxjdWxhdGVfcmVjdXJyaW5nX2V2ZW50cygkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnRfdXQnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9kYXRlX2VuZF91dCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X3JlY3VyX3BlcmlvZCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X2RhdGVfcmVjdXJfZW5kX3V0J10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfcmVjdXJfaW50ZXJ2YWwnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9yZWN1cl9jb3VudCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X3JlY3VyX3dlZWtkYXlzJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfcmVjdXJfbW9udGhkYXlzJ10pOwogICAgZm9yKCAkaSA9IDAsICRuID0gY291bnQoJHJlY3VycmluZ19ldmVudHMpOyAkaSA8ICRuOyAkaSsrICkgewogICAgICAgICRyZWN1cnJpbmdfZXZlbnRzWyRpXVsnZXZlbnRfYWxsX2RheSddID0gJGV2ZW50WydldmVudF9hbGxfZGF5J107CiAgICB9CgogICAgLy8gY2hlY2sgcmVjdXJyaW5nIGV2ZW50cyBmb3Igb3ZlcmxhcAogICAgJG92ZXJsYXAgPSBcY2djX2V2ZW50X3V0aWxzOjpjaGVja19vdmVybGFwcGluZ19ldmVudHMoJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0X3V0J10sJGV2ZW50WydldmVudF9kYXRlX2VuZF91dCddLCRyZWN1cnJpbmdfZXZlbnRzKTsKICAgIGlmKCAkb3ZlcmxhcCA9PT0gdHJ1ZSApIHsKICAgICAgICAkcGFyYW1zWydtb2R1bGVfZXJyb3InXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9ldmVudG92ZXJsYXAnKTsKICAgICAgICAkcGFyYW1zWydldmVudF9yZWN1cl93ZWVrZGF5cyddID0gaW1wbG9kZSgnLCcsJHBhcmFtc1snZXZlbnRfcmVjdXJfd2Vla2RheXMnXSk7CiAgICAgICAgJHBhcmFtc1snZXZlbnRfcmVjdXJfbW9udGhkYXlzJ10gPSBpbXBsb2RlKCcsJywkcGFyYW1zWydldmVudF9yZWN1cl9tb250aGRheXMnXSk7CiAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2V2ZW50X2NhdGVnb3JpZXMnXSkgJiYgJHBhcmFtc1snZXZlbnRfY2F0ZWdvcmllcyddICkgJHBhcmFtc1snZXZlbnRfY2F0ZWdvcmllcyddID0gc2VyaWFsaXplKCRwYXJhbXNbJ2V2ZW50X2NhdGVnb3JpZXMnXSk7CiAgICAgICAgJHBhcmFtc1snZG9fZ2V0X2Zyb21fcGFyYW1zJ10gPSAxOwogICAgICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsJ2FkbWluX2FkZF9ldmVudCcsJHJldHVybmlkLCRwYXJhbXMpOwogICAgfQp9CgoKLy8KLy8gY2hlY2sgZm9yIGNvbmZsaWN0aW5nIGV2ZW50cy4KLy8KJHBvbGljeSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdvdmVybGFwX3BvbGljeScsJ2FsbCcpOwppZiggJHBvbGljeSAhPSAnYWxsJyApIHsKICAgICRjb25mbGljdCA9IFxjZ2NfZXZlbnRfdXRpbHM6OmNoZWNrX2RiX2Zvcl9jb25mbGljdHMoJGV2ZW50LCRldmVudFsnZXZlbnRfaWQnXSwkcG9saWN5LCAkZXZlbnRbJ2V2ZW50X2FsbG93c19vdmVybGFwJ10pOwogICAgaWYoICRjb25mbGljdCApICB7CiAgICAgICAgLy8gdGhpcyBpcyB0aGUgcGFyZW50IGV2ZW50Li4uIHdlIGFsd2F5cyBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2UgaWYKICAgICAgICAvLyB0aGlzIHBhcmVudCBldmVudCBjb25mbGljdHMgd2l0aCBhbm90aGVyIGV2ZW50LgogICAgICAgICRwYXJhbXNbJ21vZHVsZV9lcnJvciddID0gICR0aGlzLT5MYW5nKCdlcnJvcl9ldmVudF9jb25mbGljdCcpOwogICAgICAgICRwYXJhbXNbJ2V2ZW50X3JlY3VyX3dlZWtkYXlzJ10gPSBpbXBsb2RlKCcsJywkcGFyYW1zWydldmVudF9yZWN1cl93ZWVrZGF5cyddKTsKICAgICAgICAkcGFyYW1zWydldmVudF9yZWN1cl9tb250aGRheXMnXSA9IGltcGxvZGUoJywnLCRwYXJhbXNbJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyddKTsKICAgICAgICBpZiggaXNzZXQoJHBhcmFtc1snZXZlbnRfY2F0ZWdvcmllcyddKSAmJiAkcGFyYW1zWydldmVudF9jYXRlZ29yaWVzJ10gKSAkcGFyYW1zWydldmVudF9jYXRlZ29yaWVzJ10gPSBzZXJpYWxpemUoJHBhcmFtc1snZXZlbnRfY2F0ZWdvcmllcyddKTsKICAgICAgICAkcGFyYW1zWydkb19nZXRfZnJvbV9wYXJhbXMnXSA9IDE7CiAgICAgICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwnYWRtaW5fYWRkX2V2ZW50JywkcmV0dXJuaWQsJHBhcmFtcyk7CiAgICB9CgogICAgLy8gbm93IGNoZWNrIGFueSBjaGlsZCBldmVudHMKICAgIGlmKCAkZXZlbnRbJ2V2ZW50X3JlY3VyX3BlcmlvZCddICE9ICdub25lJyAmJiBjb3VudCgkcmVjdXJyaW5nX2V2ZW50cykgPiAwICkgewogICAgICAgICRuZXdfcmVjdXJyaW5nID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoKCAkcmVjdXJyaW5nX2V2ZW50cyBhcyAkb25lZXZlbnQgKSB7CiAgICAgICAgICAgICRjb25mbGljdCA9IFxjZ2NfZXZlbnRfdXRpbHM6OmNoZWNrX2RiX2Zvcl9jb25mbGljdHMoJG9uZWV2ZW50LCRldmVudFsnZXZlbnRfaWQnXSwkcG9saWN5LCRldmVudFsnZXZlbnRfYWxsb3dzX292ZXJsYXAnXSk7CiAgICAgICAgICAgIGlmKCAkY29uZmxpY3QgKSB7CiAgICAgICAgICAgICAgICBpZiggJHRoaXMtPkdldFByZWZlcmVuY2UoJ292ZXJsYXBfYWN0aW9uJywnZXJyb3InKSA9PSAnZXJyb3InICkgewogICAgICAgICAgICAgICAgICAgICRwYXJhbXNbJ21vZHVsZV9lcnJvciddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2V2ZW50X2NvbmZsaWN0Jyk7CiAgICAgICAgICAgICAgICAgICAgJHBhcmFtc1snZXZlbnRfcmVjdXJfd2Vla2RheXMnXSA9IGltcGxvZGUoJywnLCRwYXJhbXNbJ2V2ZW50X3JlY3VyX3dlZWtkYXlzJ10pOwogICAgICAgICAgICAgICAgICAgICRwYXJhbXNbJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyddID0gaW1wbG9kZSgnLCcsJHBhcmFtc1snZXZlbnRfcmVjdXJfbW9udGhkYXlzJ10pOwogICAgICAgICAgICAgICAgICAgIGlmKCBpc3NldCgkcGFyYW1zWydldmVudF9jYXRlZ29yaWVzJ10pICYmICRwYXJhbXNbJ2V2ZW50X2NhdGVnb3JpZXMnXSApICRwYXJhbXNbJ2V2ZW50X2NhdGVnb3JpZXMnXSA9IHNlcmlhbGl6ZSgkcGFyYW1zWydldmVudF9jYXRlZ29yaWVzJ10pOwogICAgICAgICAgICAgICAgICAgICRwYXJhbXNbJ2RvX2dldF9mcm9tX3BhcmFtcyddID0gMTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCdhZG1pbl9hZGRfZXZlbnQnLCRyZXR1cm5pZCwkcGFyYW1zKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIC8vIHNpbGVudGx5IHJlbW92ZSB0aGlzIGV2ZW50LgogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRuZXdfcmVjdXJyaW5nW10gPSAkb25lZXZlbnQ7CiAgICAgICAgfQogICAgICAgICRyZWN1cnJpbmdfZXZlbnRzID0gJG5ld19yZWN1cnJpbmc7CiAgICAgfQp9CgoKCi8vCi8vIEZpeCB1cCB0aGUgZXZlbnQgc28gaXQncyBzdWl0YWJsZSBmb3IgdGhlIGRhdGFiYXNlCi8vCgovLwovLyBQcm9jZXNzIGFueSBmaWxlIHVwbG9hZHMgdGhhdCBtYXkgaGF2ZSBvY2N1cnJlZAovLwppZiggaXNzZXQoICRfRklMRVMgKSApIHsKICAgICRmbGRuYW1lID0gJyc7CiAgICAkdGhlZmllbGQgPSAnJzsKICAgIGZvcmVhY2goICRwYXJhbXMgYXMgJGsgPT4gJHYgKSB7CiAgICAgICAgLy8gc2VlIGlmIHdlJ3JlIGV4cGVjdGluZyBhbiB1cGxvYWQKICAgICAgICBpZiggcHJlZ19tYXRjaCgnL151cGxvYWRfZmllbGRfLycsICRrKSApIHsKICAgICAgICAgICAgLy8gd2UgYXJlIGl0IGFwcGVhcnMKICAgICAgICAgICAgJHRoZWZpZWxkID0gc3Vic3RyKCRrLHN0cmxlbigndXBsb2FkX2ZpZWxkXycpKTsKICAgICAgICAgICAgJGZsZG5hbWUgPSAkaWQuJ2ZpZWxkXycuJHRoZWZpZWxkOwoKICAgICAgICAgICAgaWYoICFpc3NldCgkX0ZJTEVTWyRmbGRuYW1lXSkgfHwgZW1wdHkoJF9GSUxFU1skZmxkbmFtZV1bJ3RtcF9uYW1lJ10pICkgY29udGludWU7CgogICAgICAgICAgICAkZXJyb3IgPSAnJzsKICAgICAgICAgICAgJGZpbGVuYW1lID0gJHRoaXMtPkhhbmRsZVVwbG9hZCgkZmxkbmFtZSwkZXJyb3IpOwogICAgICAgICAgICBpZiggJGZpbGVuYW1lID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgIC8vIGFuIGVycm9yIG9jY3VycmVkCiAgICAgICAgICAgICAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4nLCRyZXR1cm5pZCxhcnJheSgibW9kdWxlX2Vycm9yIj0+JGVycm9yKSk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRwYXJhbXNbJ2ZpZWxkXycuJHRoZWZpZWxkXSA9ICRmaWxlbmFtZTsKICAgICAgICB9CiAgICB9Cn0KCi8vCi8vIFByb2Nlc3MgdGhlIGluc2VydCBvciB1cGRhdGUKLy8KJGRvX2luc2VydCA9IHRydWU7CmlmKCRldmVudFsnZXZlbnRfaWQnXSA+IC0xKSB7CiAgICAkZG9faW5zZXJ0ID0gZmFsc2U7CiAgICAvLyB1cGRhdGUKICAgICRzcWwgPSAiVVBEQVRFICIgLiAkdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUgLiAiCiAgICAgICAgICAgICAgIFNFVCBldmVudF90aXRsZSA9ID8sIGV2ZW50X3N1bW1hcnkgPSA/LCBldmVudF9kZXRhaWxzID0gPywgZXZlbnRfZGF0ZV9zdGFydCA9ID8sIGV2ZW50X2RhdGVfZW5kID0gPywgZXZlbnRfcGFyZW50X2lkID0gPywKICAgICAgICAgICAgICAgICAgIGV2ZW50X3JlY3VyX3BlcmlvZCA9ID8sIGV2ZW50X2RhdGVfcmVjdXJfZW5kID0gPywgZXZlbnRfcmVjdXJfbmV2ZW50cyA9ID8sCiAgICAgICAgICAgICAgICAgICBldmVudF9yZWN1cl9pbnRlcnZhbCA9ID8sZXZlbnRfcmVjdXJfd2Vla2RheXMgPSA/LGV2ZW50X3JlY3VyX21vbnRoZGF5cyA9ID8sZXZlbnRfbW9kaWZpZWRfZGF0ZSA9IE5PVygpLAogICAgICAgICAgICAgICAgICAgZXZlbnRfYWxsb3dzX292ZXJsYXAgPSA/LCBldmVudF9hbGxfZGF5ID0gPywgZXZlbnRfc3RhdHVzID0gPwoJICAgICBXSEVSRSBldmVudF9pZCA9ID8iOwogICAgJGRiciA9ICAkZGItPkV4ZWN1dGUoJHNxbCwKICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCRldmVudFsnZXZlbnRfdGl0bGUnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfc3VtbWFyeSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9kZXRhaWxzJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmltKCRldmVudFsnZXZlbnRfZGF0ZV9zdGFydCddLCInIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfbnVsbF9kYXRlKCRldmVudFsnZXZlbnRfZGF0ZV9lbmQnXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X3BhcmVudF9pZCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9yZWN1cl9wZXJpb2QnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9udWxsX2RhdGUoJGV2ZW50WydldmVudF9kYXRlX3JlY3VyX2VuZCddKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfcmVjdXJfY291bnQnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfcmVjdXJfaW50ZXJ2YWwnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcGxvZGUoJywnLCRldmVudFsnZXZlbnRfcmVjdXJfd2Vla2RheXMnXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsb2RlKCcsJywkZXZlbnRbJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyddKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfYWxsb3dzX292ZXJsYXAnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfYWxsX2RheSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9zdGF0dXMnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfaWQnXSkpOwogICAgaWYoICEkZGJyICkgewogICAgICAgIGVjaG8gIkZBVEFMIEVSUk9SOjxici8+IjsKICAgICAgICBlY2hvICJRVUVSWSA9ICIuJGRiLT5zcWwuIjxici8+IjsKICAgICAgICBlY2hvICJFUlJPUiA9ICIuJGRiLT5FcnJvck1zZygpLiI8YnIvPjxici8+IjsKICAgICAgICBkaWUoKTsKICAgIH0KCiAgICBpZiggaXNzZXQoJHBhcmFtc1sndXBkYXRlX2NoaWxkcmVuJ10pICkgewogICAgICAgIC8vaGVyZSB3ZSBhbHNvIGRlbGV0ZSBhbnkgYW5kIGFsbCBjaGlsZHJlbiwgYW5kIGFsbCBzdWItdGFibGVzIHRoYXQgbWF5IGhhdmUgYmVlbiBmaWxsZWQgd2l0aCBjaGlsZCBkYXRhLgogICAgICAgICRyZXN1bHQ9JGRiLT5FeGVjdXRlKCJTRUxFQ1QgZXZlbnRfaWQgRlJPTSAiIC4gJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lIC4gIiBXSEVSRSBldmVudF9wYXJlbnRfaWQgPSA/IixhcnJheSgkZXZlbnRbJ2V2ZW50X2lkJ10pKTsKICAgICAgICAkZGItPkV4ZWN1dGUoIkRFTEVURSBGUk9NICIgLiAkdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUgLiAiIFdIRVJFIGV2ZW50X3BhcmVudF9pZCA9ID8iLGFycmF5KCRldmVudFsnZXZlbnRfaWQnXSkpOwoKICAgICAgICB3aGlsZSAoJHJvdyA9ICRyZXN1bHQtPkZldGNoUm93KCkpIHsKICAgICAgICAgICAgLy9XZSBjbGVhciB0aGVzZSBhcyB0aGV5IHdpbGwgYmUgYWRkZWQgbGF0ZXIgb24KCiAgICAgICAgICAgIGlmKCAkc2VhcmNoICkgewogICAgICAgICAgICAgICAgJHNlYXJjaC0+RGVsZXRlV29yZHMoJHRoaXMtPkdldE5hbWUoKSwgJHJvd1snZXZlbnRfaWQnXSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vZGVsZXRlIGZyb20gY2F0ZWdvcmllcwogICAgICAgICAgICAkZGItPkV4ZWN1dGUoIkRFTEVURSBGUk9NICIgLiAkdGhpcy0+ZXZlbnRzX3RvX2NhdGVnb3JpZXNfdGFibGVfbmFtZSAuICIgV0hFUkUgZXZlbnRfaWQgPSA/IExJTUlUIDEiLGFycmF5KCRyb3dbJ2V2ZW50X2lkJ10pKTsKICAgICAgICAgICAgLy9kZWxldGUgZnJvbSBjdXN0b20gZmllbGRzCiAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgiREVMRVRFIEZST00gIiAuICR0aGlzLT5ldmVudF9maWVsZF92YWx1ZXNfdGFibGVfbmFtZSAuICIgV0hFUkUgZXZlbnRfaWQgPSA/IExJTUlUIDEiLGFycmF5KCRyb3dbJ2V2ZW50X2lkJ10pKTsKICAgICAgICB9CiAgICB9Cgp9Ci8vb3RoZXJ3aXNlIHdlIGFyZSBqdXN0IGFkZGluZyBhIG5ldyBldmVudAplbHNlIHsKICAgICRldmVudFsnZXZlbnRfaWQnXSA9ICRkYi0+R2VuSUQoJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lIC4gIl9zZXEiKTsKCiAgICAkc3FsID0gIklOU0VSVCBJTlRPICIgLiAkdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUgLiAiCiAgICAgICAgICAgKGV2ZW50X2lkLCBldmVudF90aXRsZSwgZXZlbnRfc3VtbWFyeSwgZXZlbnRfZGV0YWlscywKICAJICAgICAgICBldmVudF9kYXRlX3N0YXJ0LCBldmVudF9kYXRlX2VuZCwgZXZlbnRfcGFyZW50X2lkLAogICAJICAgICAgICBldmVudF9yZWN1cl9wZXJpb2QsIGV2ZW50X2RhdGVfcmVjdXJfZW5kLCBldmVudF9jcmVhdGVkX2J5LAogICAgICAgICAgICBldmVudF9yZWN1cl9uZXZlbnRzLCBldmVudF9yZWN1cl9pbnRlcnZhbCwgZXZlbnRfcmVjdXJfd2Vla2RheXMsCiAgICAgICAgICAgIGV2ZW50X3JlY3VyX21vbnRoZGF5cywgZXZlbnRfYWxsb3dzX292ZXJsYXAsZXZlbnRfYWxsX2RheSxldmVudF9zdGF0dXMsCgkgICAgICAgIGV2ZW50X2NyZWF0ZV9kYXRlLCBldmVudF9tb2RpZmllZF9kYXRlKQogICAgICAgICAgICBWQUxVRVMgKD8sPyw/LD8sPyw/LD8sPyw/LD8sPyw/LD8sPyw/LD8sPyxOT1coKSxOT1coKSkiOwoKICAgICRkYnI9JGRiLT5FeGVjdXRlKCRzcWwsCiAgICAgICAgICAgICAgICAgICAgICBhcnJheSgkZXZlbnRbJ2V2ZW50X2lkJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X3RpdGxlJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X3N1bW1hcnknXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfZGV0YWlscyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpbSgkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnQnXSwiJyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX251bGxfZGF0ZSgkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kJ10pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9wYXJlbnRfaWQnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfcmVjdXJfcGVyaW9kJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfbnVsbF9kYXRlKCRldmVudFsnZXZlbnRfZGF0ZV9yZWN1cl9lbmQnXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdXNlcl9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfcmVjdXJfY291bnQnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfcmVjdXJfaW50ZXJ2YWwnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcGxvZGUoJywnLCRldmVudFsnZXZlbnRfcmVjdXJfd2Vla2RheXMnXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsb2RlKCcsJywkZXZlbnRbJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyddKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfYWxsb3dzX292ZXJsYXAnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfYWxsX2RheSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9zdGF0dXMnXSkpOwogICAgaWYoICEkZGJyICkgewogICAgICAgIGVjaG8gIkZBVEFMIEVSUk9SOjxici8+IjsKICAgICAgICBlY2hvICJRVUVSWSA9ICIuJGRiLT5zcWwuIjxici8+IjsKICAgICAgICBlY2hvICJFUlJPUiA9ICIuJGRiLT5FcnJvck1zZygpLiI8YnIvPjxici8+IjsKICAgICAgICBkaWUoKTsKICAgIH0KfQoKCi8vIGRlbGV0ZSBjdXJyZW50IGV2ZW50c190b19jYXRlZ29yaWVzIHJlY29yZHMgZm9yIHRoaXMgZXZlbnQKJHNxbCA9ICJERUxFVEUgRlJPTSAiIC4gJHRoaXMtPmV2ZW50c190b19jYXRlZ29yaWVzX3RhYmxlX25hbWUgLiAiIFdIRVJFIGV2ZW50X2lkID0gPyI7CiRyZXN1bHQ9JGRiLT5FeGVjdXRlKCRzcWwsYXJyYXkoJGV2ZW50WydldmVudF9pZCddKSk7CgovLyB1cGRhdGUgZXZlbnRzX3RvX2NhdGVnb3JpZXMKaWYoaXNfYXJyYXkoJGNhdGVnb3JpZXMpICYmIChjb3VudCgkY2F0ZWdvcmllcykgPiAwKSkgewogICAgZm9yZWFjaCgkY2F0ZWdvcmllcyBhcyAkY2F0ZWdvcnlfaWQpIHsKICAgICAgICAkY2F0ZWdvcnlfaWQgPSBpbnR2YWwoJGNhdGVnb3J5X2lkKTsKICAgICAgICBpZigkY2F0ZWdvcnlfaWQgPiAwKSB7CiAgICAgICAgICAgICRzcWwgPSAiSU5TRVJUIElOVE8gIiAuICR0aGlzLT5ldmVudHNfdG9fY2F0ZWdvcmllc190YWJsZV9uYW1lIC4gIiAoY2F0ZWdvcnlfaWQsIGV2ZW50X2lkKSBWQUxVRVMgKD8sPykiOwogICAgICAgICAgICAkZGItPkV4ZWN1dGUoJHNxbCxhcnJheSgkY2F0ZWdvcnlfaWQsJGV2ZW50WydldmVudF9pZCddKSk7CiAgICAgICAgICAgIC8vZWNobyAkc3FsOwogICAgICAgIH0KICAgIH0KfQoKJGZpZWxkdGV4dCA9ICRzZWFyY2h0ZXh0ID0gbnVsbDsKLy8gQ2xlYXIgb3V0IGFsbCB0aGUgY3VzdG9tIGZpZWxkIHZhbHVlcyBmb3IgdGhpcyBldmVudCwgYW5kIGFkZCB0aGUgbmV3IG9uZXMgZnJvbSB0aGUgZm9ybQp7CiAgICAkZmllbGRzID0gJHRoaXMtPkdldEZpZWxkcygpOwogICAgLy8gRGVsZXRlIHRoZSBjdXN0b20gZmllbGQgdmFsdWVzIGZpcnN0CiAgICB7CiAgICAgICAgJHNxbCA9ICJERUxFVEUgRlJPTSAiIC4gJHRoaXMtPmV2ZW50X2ZpZWxkX3ZhbHVlc190YWJsZV9uYW1lIC4gIiBXSEVSRSBldmVudF9pZCA9ID8iOwogICAgICAgICRyZXN1bHQ9JGRiLT5FeGVjdXRlKCRzcWwsYXJyYXkoJGV2ZW50WydldmVudF9pZCddKSk7CiAgICB9CgogICAgJGN1c3RvbWZpZWxkc3ZhbHVlcyA9IGFycmF5KCk7CiAgICBmb3JlYWNoICgkZmllbGRzIGFzICRmaWVsZCkgewogICAgICAgICRmaWVsZG5hbWUgPSAkZmllbGRbJ2ZpZWxkX25hbWUnXTsKICAgICAgICAvLyBSZXBsYWNlIHNwYWNlcyB3aXRoIHVuZGVyYmFycyBmb3IgdGhlIGZvcm0gcGFyYW1ldGVyIChhIGJpdCBvZiBhbiBpa2t5IGhhY2sgSSBrbm93LCBidXQgSSBjYW4gd2VsbCBpbWFnaW5lIGZvbGsgZGVmaW5pbmcgY3VzdG9tIGZpZWxkcyB3aXRoIHNwYWNlcyBpbiB0aGUgbmFtZSkgUGVyaGFwcyBpdCB3b3VsZCBoYXZlIGJlZW4gYmV0dGVyIGlmIGN1c3RvbSBmaWVsZHMgYWxzbyBoYWQgYSBudW1lcmljIGtleSAtIGhvaHVtIGxpdmUgYW5kIGxlYXJuIQogICAgICAgICRzYWZlZmllbGRuYW1lID0gIHN0cl9yZXBsYWNlKCAiLiIsICJfIiwgJGZpZWxkbmFtZSApOwogICAgICAgICRzYWZlZmllbGRuYW1lID0gICdmaWVsZF8nLnN0cl9yZXBsYWNlICggIiAiLCAiXyIsICRzYWZlZmllbGRuYW1lICk7CiAgICAgICAgJGZpZWxkX3ZhbHVlID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAkc2FmZWZpZWxkbmFtZSwgJycpOwoKICAgICAgICAkc3FsID0gIklOU0VSVCBJTlRPICIgLiAkdGhpcy0+ZXZlbnRfZmllbGRfdmFsdWVzX3RhYmxlX25hbWUgLiAiIChmaWVsZF9uYW1lLCBldmVudF9pZCwgZmllbGRfdmFsdWUpIFZBTFVFUyAoPyw/LD8pIjsKCiAgICAgICAgaWYgKCRmaWVsZF92YWx1ZSkgewogICAgICAgICAgICAkcmVzdWx0PSRkYi0+RXhlY3V0ZSgkc3FsLGFycmF5KCRmaWVsZG5hbWUsJGV2ZW50WydldmVudF9pZCddLCRmaWVsZF92YWx1ZSkpOwogICAgICAgIH0KCiAgICAgICAgJGN1c3RvbWZpZWxkc3ZhbHVlc1tdID0gYXJyYXkoJGZpZWxkbmFtZSwkZXZlbnRbJ2V2ZW50X2lkJ10sJGZpZWxkX3ZhbHVlKTsKICAgICAgICBpZiggJGZpZWxkWydmaWVsZF9zZWFyY2hhYmxlJ10gKSAkZmllbGR0ZXh0IC49ICRmaWVsZF92YWx1ZS4nICc7CiAgICB9Cn0KCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi8vIFVwZGF0ZSBTZWFyY2gKLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwppZiggJHNlYXJjaCAhPSBGQUxTRSApIHsKICAgIGlmKCAkZXZlbnRbJ2V2ZW50X3N0YXR1cyddID09ICdQJyApIHsKICAgICAgICAkc2VhcmNodGV4dCA9ICJ7JGV2ZW50WydldmVudF90aXRsZSddfSB7JGV2ZW50WydldmVudF9zdW1tYXJ5J119IHskZXZlbnRbJ2V2ZW50X2RldGFpbHMnXX0iOwogICAgICAgICRzZWFyY2h0ZXh0IC49ICcgJy4kZmllbGR0ZXh0OwogICAgICAgICRzZWFyY2gtPkFkZFdvcmRzKCR0aGlzLT5HZXROYW1lKCksICRldmVudFsnZXZlbnRfaWQnXSwgJ2V2ZW50JywgJHNlYXJjaHRleHQsIE5VTEwpOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJHNlYXJjaC0+RGVsZXRlV29yZHMoJHRoaXMtPkdldE5hbWUoKSwgJGV2ZW50WydldmVudF9pZCddKTsKICAgIH0KfQoKCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi8vIEFkZCByZWN1cnJpbmcgZXZlbnRzCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KaWYoICgkZXZlbnRbJ2V2ZW50X3JlY3VyX3BlcmlvZCddICE9ICdub25lJykgJiYKICAgIChpc19hcnJheSgkcmVjdXJyaW5nX2V2ZW50cykgJiYgY291bnQoJHJlY3VycmluZ19ldmVudHMpID4gMCkgJiYKICAgIChpc3NldCgkcGFyYW1zWyd1cGRhdGVfY2hpbGRyZW4nXSkgfHwgKCRkb19pbnNlcnQgPT0gdHJ1ZSkgKSApIHsKICAgICRzcWwgPSAiSU5TRVJUIElOVE8gIiAuICR0aGlzLT5ldmVudHNfdGFibGVfbmFtZSAuICIKICAgICAgICAgICAgIChldmVudF9pZAogICAgICAgICAgICAgICxldmVudF90aXRsZQogICAgICAgICAgICAgICxldmVudF9zdW1tYXJ5CiAgICAgICAgICAgICAgLGV2ZW50X2RldGFpbHMKCSAgICAgICAgICAsZXZlbnRfZGF0ZV9zdGFydAogICAgICAgICAgICAgICxldmVudF9kYXRlX2VuZAogICAgICAgICAgICAgICxldmVudF9wYXJlbnRfaWQKICAgICAgICAgICAgICAsZXZlbnRfY3JlYXRlZF9ieQogICAgICAgICAgICAgICxldmVudF9hbGxvd3Nfb3ZlcmxhcAogICAgICAgICAgICAgICxldmVudF9hbGxfZGF5CiAgICAgICAgICAgICAgLGV2ZW50X3N0YXR1cwogICAgCSAgICAgICxldmVudF9jcmVhdGVfZGF0ZSwgZXZlbnRfbW9kaWZpZWRfZGF0ZSkKICAgICAgICAgICAgICBWQUxVRVMgKD8sPyw/LD8sPyw/LD8sPyw/LD8sPyxOT1coKSxOT1coKSkiOwogICAgZm9yZWFjaCggJHJlY3VycmluZ19ldmVudHMgYXMgJG9uZWV2ZW50ICkgewogICAgICAgICRjaGlsZF9ldmVudF9pZCA9ICRkYi0+R2VuSUQoJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lIC4gIl9zZXEiKTsKICAgICAgICAkZGJyID0gJGRiLT5FeGVjdXRlKCRzcWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgkY2hpbGRfZXZlbnRfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X3RpdGxlJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X3N1bW1hcnknXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfZGV0YWlscyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpbSgkZGItPkRiVGltZVN0YW1wKCRvbmVldmVudFsnc3RhcnQnXSksIiciKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9udWxsX2RhdGVfdHMoJG9uZWV2ZW50WydlbmQnXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X2lkJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdXNlcl9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfYWxsb3dzX292ZXJsYXAnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfYWxsX2RheSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9zdGF0dXMnXSkpOwoKICAgICAgICBpZiggJGRiciApIHsKICAgICAgICAgICAgaWYoICRzZWFyY2ggJiYgJGV2ZW50WydldmVudF9zdGF0dXMnXSA9PSAnUCcgJiYgJHNlYXJjaHRleHQgKSB7CiAgICAgICAgICAgICAgICAkc2VhcmNoLT5BZGRXb3JkcyggJHRoaXMtPkdldE5hbWUoKSwgJGNoaWxkX2V2ZW50X2lkLCAnZXZlbnQnLCAkc2VhcmNodGV4dCwgTlVMTCApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKGlzX2FycmF5KCRjYXRlZ29yaWVzKSAmJiAoY291bnQoJGNhdGVnb3JpZXMpID4gMCkpIHsKICAgICAgICAgICAgICAgIGZvcmVhY2goJGNhdGVnb3JpZXMgYXMgJGNhdGVnb3J5X2lkKSB7CiAgICAgICAgICAgICAgICAgICAgJGNhdGVnb3J5X2lkID0gaW50dmFsKCRjYXRlZ29yeV9pZCk7CiAgICAgICAgICAgICAgICAgICAgaWYoJGNhdGVnb3J5X2lkID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAkc3FsMiA9ICJJTlNFUlQgSU5UTyAiIC4gJHRoaXMtPmV2ZW50c190b19jYXRlZ29yaWVzX3RhYmxlX25hbWUgLiAiIChjYXRlZ29yeV9pZCwgZXZlbnRfaWQpIFZBTFVFUyAoPyw/KSI7CiAgICAgICAgICAgICAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgkc3FsMixhcnJheSgkY2F0ZWdvcnlfaWQsJGNoaWxkX2V2ZW50X2lkKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgokZXZlbnRuYW1lID0gJ0V2ZW50QWRkZWQnOwokcGFybXMgPSBhcnJheSgpOwokcGFybXNbJ2V2ZW50J10gPSAkZXZlbnQ7IC8vIHRoZSB3aG9sZSBhcnJheS4KJHBhcm1zWydldmVudF90aXRsZSddID0gJGV2ZW50WydldmVudF90aXRsZSddOwokcGFybXNbJ2V2ZW50X3N1bW1hcnknXSA9ICRldmVudFsnZXZlbnRfc3VtbWFyeSddOwokcGFybXNbJ2V2ZW50X2RldGFpbHMnXSA9ICRldmVudFsnZXZlbnRfZGV0YWlscyddOwokcGFybXNbJ2V2ZW50X2RhdGVfc3RhcnQnXSA9ICRldmVudFsnZXZlbnRfZGF0ZV9zdGFydCddOwokcGFybXNbJ2V2ZW50X2RhdGVfZW5kJ10gPSAkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kJ107CiRwYXJtc1snZXZlbnRfY3JlYXRlZF9ieSddID0gJHVzZXJfaWQ7CiRwYXJtc1snZXZlbnRfaWQnXSA9ICRldmVudFsnZXZlbnRfaWQnXTsKaWYoICEkZG9faW5zZXJ0ICkgJGV2ZW50bmFtZSA9ICdFdmVudEVkaXRlZCc7CiR0aGlzLT5TZW5kRXZlbnQoICRldmVudG5hbWUsICRwYXJtcyApOwoKJG1lc3NhZ2U9JHRoaXMtPkxhbmcoImV2ZW50dXBkYXRlZCIpOwoKLy8KLy8gZG9uZQovLwokdGhpcy0+UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4nLCRyZXR1cm5pZCxhcnJheSgibW9kdWxlX21lc3NhZ2UiPT4kbWVzc2FnZSkpOwoKCi8vIEVPRgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.admin_export.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMTcKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgQ2FsZW5kYXInKSApIHJldHVybjsKCiRhbGxfY2F0ZWdvcmllcyA9IFxDR0NhbGVuZGFyXGNhdGVnb3J5OjpnZXRfY2F0ZWdvcmllcygpOwokY2F0ZWdvcmllcyA9IG51bGw7CmlmKCBjb3VudCgkYWxsX2NhdGVnb3JpZXMpICkgewogICAgZm9yZWFjaCggJGFsbF9jYXRlZ29yaWVzIGFzICRvbmUgKSB7CiAgICAgICAgJGNhdGVnb3JpZXNbJG9uZVsnY2F0ZWdvcnlfaWQnXV0gPSAkb25lWydjYXRlZ29yeV9uYW1lJ107CiAgICB9Cn0KJHNldHRpbmdzID0gbmV3IFxDR0NhbGVuZGFyXEV4cG9ydFNldHRpbmdzOwppZiggKCR0bXAgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZXhwb3J0c2V0dGluZ3MnKSkgKSAkc2V0dGluZ3MgPSB1bnNlcmlhbGl6ZSgkdG1wKTsKCmlmKCBcY2dlX3BhcmFtOjpleGlzdHMoJHBhcmFtcywnY2FuY2VsJykgKSB7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigpOwp9CmVsc2UgaWYoIFxjZ2VfcGFyYW06OmV4aXN0cygkcGFyYW1zLCdzdWJtaXQnKSApIHsKICAgICRzZXR0aW5ncy0+ZGF0ZXNlbCA9IFxjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnZGF0ZXNlbCcpOwogICAgJHRtcCA9IFxjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnZnJvbWRhdGUnKTsKICAgIGlmKCAkdG1wICkgJHRtcCA9IHN0cnRvdGltZSgkdG1wKTsKICAgICRzZXR0aW5ncy0+ZnJvbWRhdGUgPSAkdG1wOwogICAgJHNldHRpbmdzLT5jYXRlZ29yeSA9IFxjZ2VfcGFyYW06OmdldF9pbnQoJHBhcmFtcywnY2F0ZWdvcnknKTsKICAgICRzZXR0aW5ncy0+ZGVsaW1pdGVyID0gXGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdkZWxpbWl0ZXInKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdleHBvcnRzZXR0aW5ncycsc2VyaWFsaXplKCRzZXR0aW5ncykpOwoKICAgICRleHBvcnRlciA9IG5ldyBcQ0dDYWxlbmRhclxFeHBvcnRlciggJHRoaXMsICRzZXR0aW5ncyApOwogICAgJGV4cG9ydGVyLT5nZW5lcmF0ZSgpOwoKICAgIC8vIGlmIHdlIGV2ZW4gZ2V0IGhlcmUsIG5vdGhpbmcgd2FzIGV4cG9ydGVkCiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdlcnJfZXhwb3J0ZWRfbm9tYXRjaGVzJykpOwp9CiR0cGwgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJ2FkbWluX2V4cG9ydC50cGwnKTsKJHRwbC0+YXNzaWduKCdjYXRlZ29yaWVzJywkY2F0ZWdvcmllcyk7CiR0cGwtPmFzc2lnbignc2V0dGluZ3MnLCRzZXR0aW5ncyk7CiR0cGwtPmRpc3BsYXkoKTsK]]></data>
	</file>
	<file>
	  <filename>/action.admin_fields_update.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhJGdDbXMgKSBleGl0OwppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oIk1hbmFnZSBDYWxlbmRhciBBdHRyaWJ1dGVzIikgKSByZXR1cm47CiR0aGlzLT5TZXRDdXJyZW50QWN0aW9uKCdhZG1pbl9zZXR0aW5ncycpOwokdGhpcy0+U2V0Q3VycmVudFRhYignYWRtaW5fbWFuYWdlX2NhdGVnb3JpZXMnKTsKCmZ1bmN0aW9uIF9jZ2NhbERlbGV0ZUZpZWxkKCRmaWVsZF9vbGRuYW1lKQp7CiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgJG1vZCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ0dDYWxlbmRhcicpOwogICAgJGZpZWxkc190YWJsZV9uYW1lID0gJG1vZC0+ZmllbGRzX3RhYmxlX25hbWU7CiAgICAkZXZlbnRfZmllbGRfdmFsdWVzX3RhYmxlX25hbWUgPSAkbW9kLT5ldmVudF9maWVsZF92YWx1ZXNfdGFibGVfbmFtZTsKCiAgICAkc3FsID0gIkRFTEVURSBGUk9NICQkZXZlbnRfZmllbGRfdmFsdWVzX3RhYmxlX25hbWUgd2hlcmUgZmllbGRfbmFtZT0nJGZpZWxkX29sZG5hbWUnIjsKICAgICRkYi0+RXhlY3V0ZSgkc3FsKTsKCiAgICAkc3FsID0gIkRFTEVURSBGUk9NICRmaWVsZHNfdGFibGVfbmFtZSB3aGVyZSBmaWVsZF9uYW1lPSckZmllbGRfb2xkbmFtZSciOwogICAgJGRiLT5FeGVjdXRlKCRzcWwpOwp9CgoKJGVycm9yPSIiOwokbWVzc2FnZT0iIjsKJHNlYXJjaGFibGUgPSBudWxsOwokd3lzaXd5ZyA9IG51bGw7CiRkZG9wdHMgPSBudWxsOwokdGhpcy0+U2V0Q3VycmVudFRhYignZmllbGRzJyk7CiRudXBkYXRlcyA9IDA7CiRuYWRkcyA9IDA7CgokaWRzID0gJHBhcmFtc1snZmllbGRfaWRzJ107IC8vIChvbGQgbmFtZXMuLi4gZW1wdHkgdmFsdWUgaW5kaWNhdGVzIGFuIGFkZCkKJG5ld19uYW1lcyA9ICRwYXJhbXNbJ2ZpZWxkX25hbWVzJ107CiR0eXBlcyA9ICRwYXJhbXNbJ2ZpZWxkX3R5cGVzJ107CmlmKCBpc3NldCgkcGFyYW1zWydmaWVsZF9zZWFyY2hhYmxlJ10pICkgJHNlYXJjaGFibGUgPSAkcGFyYW1zWydmaWVsZF9zZWFyY2hhYmxlJ107CmlmKCBpc3NldCgkcGFyYW1zWydmaWVsZF93eXNpd3lnJ10pICkgJHd5c2l3eWcgPSAkcGFyYW1zWydmaWVsZF93eXNpd3lnJ107CmlmKCBpc3NldCgkcGFyYW1zWydmaWVsZF9kZG9wdHMnXSkgKSAkZGRvcHRzID0gJHBhcmFtc1snZmllbGRfZGRvcHRzJ107CgovLyBmaW5kIGRlbGV0aW9ucy4KJGZpZWxkcyA9ICR0aGlzLT5HZXRGaWVsZHMoKTsKJGZpZWxkX25hbWVzID0gY2dlX2FycmF5OjpleHRyYWN0X2ZpZWxkKCRmaWVsZHMsJ2ZpZWxkX25hbWUnKTsKJGRlbGV0ZWQgPSBhcnJheSgpOwoKZm9yZWFjaCggJGZpZWxkX25hbWVzIGFzICRuYW1lICkgewogICAgaWYoICRuYW1lID09ICcnICkgY29udGludWU7CiAgICBpZiggIWluX2FycmF5KCRuYW1lLCRpZHMpICkgX2NnY2FsRGVsZXRlRmllbGQoJG5hbWUpOwp9CgovLyBub3cgcHJvY2VzcyBuZXcgcmVjb3JkcyBhbmQgdXBkYXRlcwokbnVtX3JlY29yZHMgPSBjb3VudCgkaWRzKTsKJGZpZWxkX29yZGVyID0gLTE7CmZvcigkaSA9IDA7ICRpIDwgJG51bV9yZWNvcmRzOyAkaSsrKSB7CiAgICAkZmllbGRfb2xkbmFtZSA9ICRpZHNbJGldOwogICAgJGZpZWxkX25ld25hbWUgPSB0cmltKCRuZXdfbmFtZXNbJGldKTsKICAgICRmaWVsZF90eXBlID0gKGludCkkdHlwZXNbJGldOwogICAgJGZpZWxkX3NlYXJjaGFibGUgPSAoaXNzZXQoJHNlYXJjaGFibGVbJGldKSk/JHNlYXJjaGFibGVbJGldOjA7CiAgICAkZmllbGRfZXh0cmEgPSBhcnJheSgnc2VhcmNoYWJsZSc9PjAsJ3d5c2l3eWcnPT4wKTsKICAgICRmaWVsZF9leHRyYVsnc2VhcmNoYWJsZSddID0gKGlzc2V0KCRzZWFyY2hhYmxlWyRpXSkpPyRzZWFyY2hhYmxlWyRpXTowOwogICAgJGZpZWxkX2V4dHJhWyd3eXNpd3lnJ10gPSAoaXNzZXQoJHd5c2l3eWdbJGldKSk/JHd5c2l3eWdbJGldOjA7CiAgICAkZmllbGRfZXh0cmFbJ2Rkb3B0cyddID0gKGlzc2V0KCRkZG9wdHNbJGldKSk/JGRkb3B0c1skaV06bnVsbDsKCiAgICAkZmllbGRfb3JkZXIrKzsKCiAgICBpZiggJGZpZWxkX29sZG5hbWUgPT0gJycgJiYgJGZpZWxkX25ld25hbWUgPT0gJycgKSBjb250aW51ZTsgLy8gZW1wdHkuLi4gbm90aGluZyB0byBkby4KCiAgICBpZiggJGZpZWxkX29sZG5hbWUgPT0gJycgJiYgJGZpZWxkX25ld25hbWUgIT0gJycgKSB7CiAgICAgICAgLy8gYW4gYWRkLi4KICAgICAgICAkc3FsID0gJ0lOU0VSVCBJTlRPICcgLiAkdGhpcy0+ZmllbGRzX3RhYmxlX25hbWUgLiAnIChmaWVsZF9uYW1lLGZpZWxkX3R5cGUsZmllbGRfc2VhcmNoYWJsZSxmaWVsZF9leHRyYSxmaWVsZF9vcmRlcikgVkFMVUVTICg/LD8sPyw/LD8pJzsKICAgICAgICBpZiggJGZpZWxkX2V4dHJhICkgJGZpZWxkX2V4dHJhID0gc2VyaWFsaXplKCRmaWVsZF9leHRyYSk7CiAgICAgICAgJGRiLT5FeGVjdXRlKCRzcWwsYXJyYXkoJGZpZWxkX25ld25hbWUsJGZpZWxkX3R5cGUsJGZpZWxkX3NlYXJjaGFibGUsJGZpZWxkX2V4dHJhLCRmaWVsZF9vcmRlcikpOwogICAgICAgICRuYWRkcysrOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgLy8gYW4gdXBkYXRlCiAgICAgICAgJHNxbCA9ICdVUERBVEUgJyAuICR0aGlzLT5maWVsZHNfdGFibGVfbmFtZSAuICcgU0VUIGZpZWxkX25hbWUgPSA/LCBmaWVsZF90eXBlID0gPywgZmllbGRfc2VhcmNoYWJsZSA9ID8sCiAgICAgICAgICAgICAgIGZpZWxkX2V4dHJhID0gPywgZmllbGRfb3JkZXIgPSA/IFdIRVJFIGZpZWxkX25hbWUgPSA/JzsKICAgICAgICBpZiggJGZpZWxkX2V4dHJhICkgJGZpZWxkX2V4dHJhID0gc2VyaWFsaXplKCRmaWVsZF9leHRyYSk7CiAgICAgICAgJGRiLT5FeGVjdXRlKCRzcWwsYXJyYXkoJGZpZWxkX25ld25hbWUsICRmaWVsZF90eXBlLCAkZmllbGRfc2VhcmNoYWJsZSwgJGZpZWxkX2V4dHJhLCAkZmllbGRfb3JkZXIsICRmaWVsZF9vbGRuYW1lKSk7CiAgICAgICAgaWYoICRmaWVsZF9uZXduYW1lICE9ICRmaWVsZF9vbGRuYW1lICkgewogICAgICAgICAgICAkc3FsID0gJ1VQREFURSAnIC4gJHRoaXMtPmV2ZW50X2ZpZWxkX3ZhbHVlc190YWJsZV9uYW1lIC4gJyBTRVQgZmllbGRfbmFtZSA9ID8gV0hFUkUgZmllbGRfbmFtZSA9ID8nOwogICAgICAgICAgICAkZGItPkV4ZWN1dGUoJHNxbCxhcnJheSgkZmllbGRfbmV3bmFtZSwgJGZpZWxkX29sZG5hbWUpKTsKICAgICAgICB9CiAgICAgICAgJG51cGRhdGVzKys7CiAgICB9Cn0KCiR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdtc2dfZmllbGRzdXBkYXRlZCcpKTsKJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkKTsKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.admin_import.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgQ2FsZW5kYXInKSApIHJldHVybjsKCiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2FkbWluX2ltcG9ydF9ldmVudHMnLCAkcmV0dXJuaWQsICdwb3N0JywgJ211bHRpcGFydC9mb3JtLWRhdGEnKSk7CiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiRzbWFydHktPmFzc2lnbignaW1wb3J0X2RlbGltaXRlcicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ltcG9ydF9kZWxpbWl0ZXInLCcsJykpOwplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluX2ltcG9ydC50cGwnKTsK]]></data>
	</file>
	<file>
	  <filename>/action.admin_import_events.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgQ2FsZW5kYXInKSApIHJldHVybjsKCmZ1bmN0aW9uIF9mZ2V0cygkZmgsJG51bSA9IDQwOTYpCnsKICBpZiggISRmaCApIHJldHVybjsKICAkcG9zMSA9IGZ0ZWxsKCRmaCk7CgogICRsaW5lID0gZmdldHMoJGZoLCRudW0pOwogIGlmKCBzdHJwb3MoJGxpbmUsIlxyIikgPT09IEZBTFNFICkgcmV0dXJuICRsaW5lOwoKICAvLyBsaW5lIGlzIHByb2JhYmx5IGEgY3JhcHB5IG1hYyBsaW5lLgogICRsZW4xID0gc3RybGVuKCRsaW5lKTsKICAkcG9zID0gc3RycG9zKCRsaW5lLCJcciIpOwoKICAkbGluZSA9IHN1YnN0cigkbGluZSwwLCRwb3MpOwogIGZzZWVrKCRmaCwoJGxlbjEgLSAkcG9zIC0xICkgKiAtMSxTRUVLX0NVUik7CiAgcmV0dXJuICRsaW5lOwp9CgpmdW5jdGlvbiBfZ2V0bGluZSgkZmgpCnsKICBpZiggISRmaCApIHJldHVybjsKICAkbGluZSA9IF9mZ2V0cygkZmgpOwogICRwb3MgPSBzdHJwb3MoJGxpbmUsJy8vJyk7CiAgaWYoICRwb3MgIT09IEZBTFNFICkgewogICAgJHRtcCA9IHN0cnBvcygkbGluZSwnOi8vJyk7CiAgICBpZiggJHRtcCA9PT0gRkFMU0UgfHwgJHRtcCAhPSAkcG9zIC0gMSApICRsaW5lID0gc3Vic3RyKCRsaW5lLDAsJHBvcyk7CiAgfQogICRsaW5lID0gdHJpbSgkbGluZSk7CiAgcmV0dXJuICRsaW5lOwp9CgpmdW5jdGlvbiBfbWFwX2ZpZWxkKCRmaWVsZG1hcCwkZGF0YSwkZmxkbmFtZSkKewogIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCRmaWVsZG1hcCk7ICRpKysgKSB7CiAgICBpZiggc3RydG9sb3dlcigkZmllbGRtYXBbJGldKSA9PSBzdHJ0b2xvd2VyKCRmbGRuYW1lKSApIHJldHVybiAkZGF0YVskaV07CiAgfQp9CgokdGhpcy0+U2V0Q3VycmVudFRhYignZGVmYXVsdGFkbWluJyk7CmlmKCBpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkgKSAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwppZiAoIWlzc2V0KCRfRklMRVNbJGlkLidjc3ZfZmlsZSddKSkgewogICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfY3N2ZmlsZW5vdGZvdW5kJykpOwogICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCk7Cn0KZWxzZSB7CiAgJGRlbGltaXRlciA9IChpc3NldCgkcGFyYW1zWydkZWxpbWl0ZXInXSkpP3RyaW0oJHBhcmFtc1snZGVsaW1pdGVyJ10pOiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdpbXBvcnRfZGVsaW1pdGVyJywnLCcpOwogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdpbXBvcnRfZGVsaW1pdGVyJywkZGVsaW1pdGVyKTsKCiAgJHVzZXJfaWQgPSBnZXRfdXNlcmlkKCk7CgogIC8vIGdldCBhIGNhdGVnb3J5IG1hcC4KICAkc3FsID0gJ1NFTEVDVCBjYXRlZ29yeV9pZCwgY2F0ZWdvcnlfbmFtZSBGUk9NICcgLiAkdGhpcy0+Y2F0ZWdvcmllc190YWJsZV9uYW1lOwogICRycyA9ICRkYi0+RXhlY3V0ZSgkc3FsKTsKICAkY2F0ID0gYXJyYXkoKTsKICB3aGlsZSggJHJzICYmICRyb3cgPSAkcnMtPkZldGNoUm93KCkpIHsKICAgICRjYXRbJHJvd1snY2F0ZWdvcnlfbmFtZSddXT0kcm93WydjYXRlZ29yeV9pZCddOwogIH0KCiAgLy8gZ2V0IGEgZmllbGQgbWFwLgogICRmaWVsZHMgPSBhcnJheSgpOwogIHsKICAgICR0bXAgPSAkdGhpcy0+R2V0RmllbGRzKCk7CiAgICBpZiggaXNfYXJyYXkoJHRtcCkgJiYgY291bnQoJHRtcCkgKQkkZmllbGRzID0gY2dlX2FycmF5Ojp0b19oYXNoKCR0bXAsJ2ZpZWxkX25hbWUnKTsKICB9CgogIC8vIG9wZW4gdGhlIGZpbGUKICAkaGFuZGxlID0gZm9wZW4oJF9GSUxFU1skaWQuJ2Nzdl9maWxlJ11bJ3RtcF9uYW1lJ10sICJyIik7CiAgaWYgKCRoYW5kbGUgPT09IGZhbHNlKSB7CiAgICAkdGhpcy0+U2V0RXJyb3IoJ2Vycm9yX2NhbnRvcGVuZmlsZScpOwogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkKTsKICB9CgogIC8vIGdldCB0aGUgZmlyc3QgbGluZS4KICAkbGluZW51bSA9IDE7CiAgJGxpbmUgPSBfZ2V0bGluZSgkaGFuZGxlKTsKICBpZiggZmVvZigkaGFuZGxlKSB8fCAkbGluZSA9PSAnJyApIHsKICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfY3N2aW52YWxpZGZpcnN0bGluZScpKTsKICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCk7CiAgfQoKICAvLyBwYXJzZSB0aGUgZmlyc3QgbGluZSBpbnRvIGEgZmllbGQgbWFwLgogICRmaWVsZG1hcCA9IGNnZV9hcnJheTo6c21hcnRfZXhwbG9kZSgkbGluZSwkZGVsaW1pdGVyKTsKICBmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkZmllbGRtYXApOyAkaSsrICkgewogICAgJGZpZWxkbWFwWyRpXSA9IHRyaW0oJGZpZWxkbWFwWyRpXSk7CiAgfQoKICAvLyBjaGVjayBmb3IgcmVxdWlyZWQgZmllbGRzLgogICRyZXF1aXJlZF9maWVsZHMgPSBhcnJheSgnc3RhcnQgdGltZScsJ2VuZCB0aW1lJywndGl0bGUnKTsKICAkb3B0aW9uYWxfZmllbGRzID0gYXJyYXkoJ2NhdGVnb3J5Jywnc3VtbWFyeScsJ2Rlc2NyaXB0aW9uJyk7CiAgZm9yZWFjaCggJHJlcXVpcmVkX2ZpZWxkcyBhcyAkcmVxZCApIHsKICAgICAgJGZvdW5kID0gZmFsc2U7CiAgICAgIGZvcmVhY2goICRmaWVsZG1hcCBhcyAkZmxkICkgewogICAgICAgICAgaWYoIHN0cnRvbG93ZXIoJGZsZCkgPT0gJHJlcWQgKSB7CiAgICAgICAgICAgICAgJGZvdW5kID0gdHJ1ZTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgfQogICAgICBpZiggISRmb3VuZCApIHsKICAgICAgICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfY3N2Zmlyc3RsaW5lZmxkbm90Zm91bmQnLCRyZXFkKSk7CiAgICAgICAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwogICAgICB9CiAgfQoKICAvLyBub3cgY2hlY2sgZm9yIGZpZWxkcyBvZiB0eXBlICdmaWxlJyBhbmQgZm9yIHVua25vd24gZmllbGRzLgogIGlmKCAwICYmIGNvdW50KCRmaWVsZHMpICkgeyAgIC8vIGNvbW1lbnRlZCBvdXQuCiAgICAgIGZvcmVhY2goICRmaWVsZG1hcCBhcyAkb25lICkgewogICAgICAgICAgaWYoIGluX2FycmF5KHN0cnRvbG93ZXIoJG9uZSksJHJlcXVpcmVkX2ZpZWxkcykgKSBjb250aW51ZTsKICAgICAgICAgIGlmKCBpbl9hcnJheShzdHJ0b2xvd2VyKCRvbmUpLCRvcHRpb25hbF9maWVsZHMpICkgY29udGludWU7CgogICAgICAgICAgJGZuZCA9IGZhbHNlOwogICAgICAgICAgZm9yZWFjaCggJGZpZWxkcyBhcyAkbmFtZSA9PiAkcmVjICkgewogICAgICAgICAgICAgIGlmKCAkb25lID09ICRuYW1lICkgewogICAgICAgICAgICAgICAgICAkZm5kID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgaWYoICRyZWNbJ2ZpZWxkX3R5cGUnXSA9PSAxICkgewogICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9jc3ZmaXJzdGxpbmVmaWxlZmxkJykpOwogICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBpZiggISRmbmQgKSB7CiAgICAgICAgICAgICAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9jc3ZmaXJzdGxpbmVpbnZhbGlkZmllbGQnLCRvbmUpKTsKICAgICAgICAgICAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwogICAgICAgICAgfQogICAgICB9CiAgfQoKICAvLyBub3cgYmVnaW4gaW1wb3J0aW5nLgogICRlcnJvcnMgPSBhcnJheSgpOwogICRpbXBvcnRlZCA9IDA7CiAgd2hpbGUoICFmZW9mKCRoYW5kbGUpICkgewogICAgICAkZXZlbnRfc3RhdHVzID0gJ1AnOyAvLyBleHBvcnRlZCBldmVudHMgYXJlIG9ubHkgcHVibGlzaGVkIGV2ZW50cy4KICAgICAgJHN0YXJ0X3RpbWUgPSBudWxsOyAkZW5kX3RpbWUgPSBudWxsOyAkYWxsX2RheSA9IGZhbHNlOyAkc3RhcnRfdGltZV90cyA9IG51bGw7ICRlbmRfdGltZV90cyA9IG51bGw7CiAgICAgICRsaW5lID0gX2dldGxpbmUoJGhhbmRsZSk7CiAgICAgICRsaW5lbnVtKys7CiAgICAgIGlmKCAhJGxpbmUgKSBjb250aW51ZTsKICAgICAgJGRhdGEgPSBjZ2VfYXJyYXk6OnNtYXJ0X2V4cGxvZGUoJGxpbmUsJGRlbGltaXRlcik7CgogICAgICAkZXZlbnRfaWQgPSAkZGItPkdlbklEKCR0aGlzLT5ldmVudHNfdGFibGVfbmFtZSAuICJfc2VxIik7CgogICAgICAkdG1wID0gX21hcF9maWVsZCgkZmllbGRtYXAsJGRhdGEsJ3N0YXJ0IHRpbWUnKTsKICAgICAgaWYoICR0bXAgPT0gJ05VTEwnIHx8ICR0bXAgPT0gJycgKSB7CiAgICAgICAgICAvLyBubyBzdGFydCB0aW1lIGlzIGFuIGVycm9yLgogICAgICAgICAgJGVycm9yc1tdID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2Nzdl9pbnNlcnQnLCRsaW5lbnVtKS4nIDEnOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgICAgJHN0YXJ0X3RpbWVfdHMgPSBzdHJ0b3RpbWUoJHRtcCk7CiAgICAgICAgICBpZiggISRzdGFydF90aW1lX3RzICkgJHN0YXJ0X3RpbWVfdHMgPSAkZGItPlVuaXhUaW1lU3RhbXAoJHRtcCk7CiAgICAgICAgICBpZiggISRzdGFydF90aW1lX3RzICkgewogICAgICAgICAgICAgICRlcnJvcnNbXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9jc3ZfaW5zZXJ0JywkbGluZW51bSkuJyAxYSc7CiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICB9CiAgICAgIH0KCiAgICAgICR0bXAgPSBfbWFwX2ZpZWxkKCRmaWVsZG1hcCwkZGF0YSwnYWxsIGRheScpOwogICAgICBpZiggJHRtcCApIHsKICAgICAgICAgICRhbGxfZGF5ID0gMTsKICAgICAgfQoKICAgICAgJHRtcCA9IF9tYXBfZmllbGQoJGZpZWxkbWFwLCRkYXRhLCdlbmQgdGltZScpOwogICAgICBpZiggc3RydG9sb3dlcigkdG1wKSA9PSAnYWxsIGRheScgKSB7CiAgICAgICAgICAvLyBmdWxsIGRheSwgdXNlIHN0YXJ0IGRhdGUsIGJ1dCAyMzo1OSBlbmQgdGltZS4KICAgICAgICAgICRhbGxfZGF5ID0gMTsKICAgICAgfQogICAgICBlbHNlIGlmKCAkdG1wID09ICdOVUxMJyB8fCAkdG1wID09ICcnICkgewogICAgICAgICAgLy8gbm8gZW5kIHRpbWUuCiAgICAgICAgICAkZW5kX3RpbWVfdHMgPSBudWxsOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgICAgJGVuZF90aW1lX3RzID0gc3RydG90aW1lKCR0bXAsJHN0YXJ0X3RpbWVfdHMpOwogICAgICAgICAgaWYoICEkZW5kX3RpbWVfdHMgKSAkZW5kX3RpbWVfdHMgPSAkZGItPlVuaXhUaW1lU3RhbXAoJHRtcCk7CiAgICAgIH0KICAgICAgaWYoICRlbmRfdGltZV90cyAmJiAkZW5kX3RpbWVfdHMgPCAkc3RhcnRfdGltZV90cyApIHsKICAgICAgICAgICRlcnJvcnNbXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9jc3ZfaW5zZXJ0JywkbGluZW51bSkuJyAyJzsKICAgICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgICAgIC8vIHRvZG86IGNoZWNrIGZvciB0b28gbG9uZyBvZiBhbiBldmVudC4uCgogICAgICAkc3RhcnRfdGltZSA9IHRyaW0oJGRiLT5EYlRpbWVTdGFtcCgkc3RhcnRfdGltZV90cyksIiciKTsKICAgICAgaWYoICRlbmRfdGltZV90cyApICRlbmRfdGltZSA9IHRyaW0oJGRiLT5EYlRpbWVTdGFtcCgkZW5kX3RpbWVfdHMpLCInIik7CgogICAgICAkdGl0bGUgPSBfbWFwX2ZpZWxkKCRmaWVsZG1hcCwkZGF0YSwndGl0bGUnKTsKICAgICAgJGRlc2NyaXB0aW9uID0gX21hcF9maWVsZCgkZmllbGRtYXAsJGRhdGEsJ2Rlc2NyaXB0aW9uJyk7CgogICAgICBpZiggJHRpdGxlID09ICcnICkgewogICAgICAgICAgJGVycm9yc1tdID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2Nzdl9pbnNlcnQnLCRsaW5lbnVtKS4nIDJhJzsKICAgICAgICAgIGNvbnRpbnVlOwogICAgICB9CgogICAgICAkc3FsID0gIklOU0VSVCBJTlRPICIgLiAkdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUgLiAiICgKICAgICAgICAgICAgICAgZXZlbnRfaWQKICAgICAgICAgICAgICAsZXZlbnRfc3RhdHVzCiAgICAgICAgICAgICAgLGV2ZW50X3RpdGxlCiAgICAgICAgICAgICAgLGV2ZW50X3N1bW1hcnkKICAgICAgICAgICAgICAsZXZlbnRfZGV0YWlscwogICAgICAgICAgICAgICxldmVudF9wYXJlbnRfaWQKICAgICAgICAgICAgICAsZXZlbnRfZGF0ZV9zdGFydAogICAgICAgICAgICAgICxldmVudF9kYXRlX2VuZAogICAgICAgICAgICAgICxldmVudF9hbGxfZGF5CiAgICAgICAgICAgICAgLGV2ZW50X2FsbG93c19vdmVybGFwCiAgICAgICAgICAgICAgLGV2ZW50X2NyZWF0ZWRfYnkKICAgICAgICAgICAgICAsZXZlbnRfY3JlYXRlX2RhdGUKICAgICAgICAgICAgICAsZXZlbnRfbW9kaWZpZWRfZGF0ZQogICAgICAgICAgICAgICkgVkFMVUVTICg/LD8sPyw/LD8sPyw/LD8sPyw/LD8sTk9XKCksTk9XKCkpIjsKCiAgICAgIC8vIGluc2VydCB0aGUgZXZlbnQgcmVjb3JkLgogICAgICAkcGFybXMgPSBhcnJheSgkZXZlbnRfaWQKICAgICAgICAgICAgICAgICAgICAgLCRldmVudF9zdGF0dXMKICAgICAgICAgICAgICAgICAgICAgLCR0aXRsZQogICAgICAgICAgICAgICAgICAgICAsX21hcF9maWVsZCgkZmllbGRtYXAsJGRhdGEsJ3N1bW1hcnknKQogICAgICAgICAgICAgICAgICAgICAsJGRlc2NyaXB0aW9uCiAgICAgICAgICAgICAgICAgICAgICwtMQogICAgICAgICAgICAgICAgICAgICAsJHN0YXJ0X3RpbWUKICAgICAgICAgICAgICAgICAgICAgLCRlbmRfdGltZQogICAgICAgICAgICAgICAgICAgICAsJGFsbF9kYXkKICAgICAgICAgICAgICAgICAgICAgLDEKICAgICAgICAgICAgICAgICAgICAgLCR1c2VyX2lkCiAgICAgICAgICApOwogICAgICAkZGJyID0gJGRiLT5FeGVjdXRlKCAkc3FsLCAkcGFybXMgKTsKICAgICAgaWYoICEkZGJyICkgewogICAgICAgICAgJGVycm9yc1tdID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2Nzdl9pbnNlcnQnLCRsaW5lbnVtKS4nIDMnOwogICAgICAgICAgY29udGludWU7CiAgICAgIH0KCiAgICAgIC8vIGluc2VydCB0aGUgY2F0ZWdvcmllKHMpCiAgICAgICR2YWwgPSBfbWFwX2ZpZWxkKCRmaWVsZG1hcCwkZGF0YSwnY2F0ZWdvcnknKTsKICAgICAgaWYoICR2YWwgKSB7CiAgICAgICAgICAkY2F0ZWdvcmllcyA9IGV4cGxvZGUoJzsnLCR2YWwpOwogICAgICAgICAgJF9iYWQgPSBmYWxzZTsKICAgICAgICAgIGZvcmVhY2goICRjYXRlZ29yaWVzIGFzICRvbmUgKSB7CiAgICAgICAgICAgICAgJG9uZSA9IHRyaW0oJG9uZSk7CiAgICAgICAgICAgICAgaWYoIGlzc2V0KCRjYXRbJG9uZV0pICkgewogICAgICAgICAgICAgICAgICAkZGJyID0gJGRiLT5FeGVjdXRlKCdJTlNFUlQgSU5UTyAnLiR0aGlzLT5ldmVudHNfdG9fY2F0ZWdvcmllc190YWJsZV9uYW1lLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgKGNhdGVnb3J5X2lkLCBldmVudF9pZCkgVkFMVUVTICg/LD8pJyxhcnJheSgkY2F0WyRvbmVdLCRldmVudF9pZCkpOwogICAgICAgICAgICAgICAgICBpZiggISRkYnIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAvLyBkZWxldGUgdGhlIGluc2VydGVkIHJlY29yZAogICAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ0RFTEVURSBGUk9NICcuJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lLicgV0hFUkUgZXZlbnRfaWQgPSA/JzsKICAgICAgICAgICAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGV2ZW50X2lkKSk7CgogICAgICAgICAgICAgICAgICAgICAgLy8gZGVsZXRlIGFueSBvdGhlciBjYXRlZ29yaWVzLgogICAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ0RFTEVURSBGUk9NICcuJHRoaXMtPmV2ZW50c190b19jYXRlZ29yaWVzX3RhYmxlX25hbWUuJyBXSEVSRSBldmVudF9pZCA9ID8nOwogICAgICAgICAgICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkZXZlbnRfaWQpKTsKCiAgICAgICAgICAgICAgICAgICAgICAkZXJyb3JzW10gPSAkdGhpcy0+TGFuZygnZXJyb3JfY3N2X2luc2VydCcsJGxpbmVudW0pLicgNCc7CiAgICAgICAgICAgICAgICAgICAgICAkX2JhZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmKCAkX2JhZCApIGNvbnRpbnVlOwogICAgICB9CgogICAgICAvLyBpbnNlcnQgdGhlIGZpZWxkcy4KICAgICAgJF9iYWQgPSBmYWxzZTsKICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcuJHRoaXMtPmV2ZW50X2ZpZWxkX3ZhbHVlc190YWJsZV9uYW1lLicgKGZpZWxkX25hbWUsZXZlbnRfaWQsZmllbGRfdmFsdWUpIFZBTFVFUyAoPyw/LD8pJzsKICAgICAgZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJGZpZWxkbWFwKTsgJGkrKyApIHsKICAgICAgICAgICRmbGRuYW1lID0gJGZpZWxkbWFwWyRpXTsKICAgICAgICAgIGlmKCBpbl9hcnJheSgkZmxkbmFtZSwkcmVxdWlyZWRfZmllbGRzKSApIGNvbnRpbnVlOwogICAgICAgICAgaWYoIGluX2FycmF5KCRmbGRuYW1lLCRvcHRpb25hbF9maWVsZHMpICkgY29udGludWU7CiAgICAgICAgICBpZiggIWlzc2V0KCRmaWVsZHNbJGZsZG5hbWVdKSApIGNvbnRpbnVlOyAvLyBhbiB1bmtub3duIGZpZWxkLgogICAgICAgICAgaWYoICRmaWVsZHNbJGZsZG5hbWVdWydmaWVsZF90eXBlJ10gPT0gMSApIGNvbnRpbnVlOyAvLyBmaWxlIHR5cGUuCgogICAgICAgICAgJHZhbHVlID0gbnVsbDsKICAgICAgICAgIGlmKCBpc3NldCgkZGF0YVskaV0pICkgJHZhbHVlID0gJGRhdGFbJGldOwogICAgICAgICAgaWYoIGVtcHR5KCR2YWx1ZSkgKSBjb250aW51ZTsKCiAgICAgICAgICAkZGJyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkZmxkbmFtZSwkZXZlbnRfaWQsJHZhbHVlKSk7CiAgICAgICAgICBpZiggISRkYnIgKSB7CiAgICAgICAgICAgICAgLy8gZGVsZXRlIHRoZSBpbnNlcnRlZCByZWNvcmQKICAgICAgICAgICAgICAkcXVlcnkgPSAnREVMRVRFIEZST00gJy4kdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUuJyBXSEVSRSBldmVudF9pZCA9ID8nOwogICAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGV2ZW50X2lkKSk7CgogICAgICAgICAgICAgIC8vIGRlbGV0ZSB0aGUgY2F0ZWdvcmllcwogICAgICAgICAgICAgICRxdWVyeSA9ICdERUxFVEUgRlJPTSAnLiR0aGlzLT5ldmVudHNfdG9fY2F0ZWdvcmllc190YWJsZV9uYW1lLicgV0hFUkUgZXZlbnRfaWQgPSA/JzsKICAgICAgICAgICAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRldmVudF9pZCkpOwoKICAgICAgICAgICAgICAkZXJyb3JzW10gPSAkdGhpcy0+TGFuZygnZXJyb3JfY3N2X2luc2VydCcsJGxpbmVudW0pLicgNSc7CiAgICAgICAgICAgICAgJF9iYWQgPSB0cnVlOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICB9CiAgICAgIGlmKCAkX2JhZCApIGNvbnRpbnVlOwoKICAgICAgJGltcG9ydGVkKys7CiAgfSAvLyBub3QgZW5kIG9mIGZpbGUuCgogIGZjbG9zZSgkaGFuZGxlKTsKCiAgLy8gZG8gZmluYWwgcmVwb3J0LgogICRzbWFydHktPmFzc2lnbignaW1wb3J0ZWQnLCRpbXBvcnRlZCk7CiAgaWYoIGNvdW50KCRlcnJvcnMpICkgJHNtYXJ0eS0+YXNzaWduKCdlcnJvcnMnLCRlcnJvcnMpOwogICRzbWFydHktPmFzc2lnbignbGluZW51bScsJGxpbmVudW0pOwogIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5faW1wb3J0LnRwbCcpOwp9IC8vIGVsc2UuCgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.admin_remove_conflicted.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgQ2FsZW5kYXInKSApIHJldHVybjsKCi8vIGZpbmQgYWxsIG9mIHRoZSBldmVudHMgdGhhdCBkbyBub3QgYWxsb3cgb3ZlcmxhcC4KJHF1ZXJ5ID0gJ1NFTEVDVCBldmVudF9pZCxldmVudF9wYXJlbnRfaWQsZXZlbnRfZGF0ZV9zdGFydCxldmVudF9kYXRlX2VuZCBGUk9NICcuJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lLicKICAgICAgICAgICBXSEVSRSBldmVudF9hbGxvd3Nfb3ZlcmxhcCA9IDAgT1JERVIgQlkgZXZlbnRfaWQgQVNDJzsKJGlkcyA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5KTsKaWYoICEkaWRzICkKICB7CiAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4nLCRyZXR1cm5pZCk7CiAgfQoKJHF1ZXJ5MSA9ICdTRUxFQ1QgZXZlbnRfaWQsZXZlbnRfcGFyZW50X2lkLCBqMS5uY2hpbGRyZW4KICAgICAgICAgICAgRlJPTSAnLiR0aGlzLT5ldmVudHNfdGFibGVfbmFtZS4iIGV2CiAgICAgICAgICBMRUZUIEpPSU4gKFNFTEVDVCBldmVudF9wYXJlbnRfaWQgQVMgcGFyZW50LCBjb3VudChldmVudF9pZCkgQVMgbmNoaWxkcmVuIEZST00gIi4kdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUuIiBXSEVSRSBldmVudF9wYXJlbnRfaWQgIT0gLTEgR1JPVVAgQlkgZXZlbnRfcGFyZW50X2lkKSBqMSBPTiBldi5ldmVudF9pZCA9IGoxLnBhcmVudAogICAgICAgICAgIFdIRVJFIGV2ZW50X2lkICE9ID8KICAgICAgICAgICAgIEFORCBldmVudF9wYXJlbnRfaWQgIT0gPwogICAgICAgICAgICAgQU5EICgoZXZlbnRfZGF0ZV9zdGFydCBCRVRXRUVOID8gYW5kID8pIE9SIChldmVudF9kYXRlX2VuZCBCRVRXRUVOID8gYW5kID8pKSI7CmZvcmVhY2goICRpZHMgYXMgJG9uZV9ldmVudCApCnsKICAkdG1wID0gJGRiLT5HZXRSb3coJHF1ZXJ5MSxhcnJheSgkb25lX2V2ZW50WydldmVudF9pZCddLAoJCQkJICAkb25lX2V2ZW50WydldmVudF9pZCddLAoJCQkJICB0cmltKCRvbmVfZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnQnXSwiJyIpLAoJCQkJICB0cmltKCRvbmVfZXZlbnRbJ2V2ZW50X2RhdGVfZW5kJ10sIiciKSwKCQkJCSAgdHJpbSgkb25lX2V2ZW50WydldmVudF9kYXRlX3N0YXJ0J10sIiciKSwKCQkJCSAgdHJpbSgkb25lX2V2ZW50WydldmVudF9kYXRlX2VuZCddLCInIikKCQkJCSAgKSk7CiAgaWYoICEkdG1wICkKICAgIHsKICAgICAgLy8gbm90aGluZyBjb25mbGljdHMgd2l0aCB0aGlzIGV2ZW50LgogICAgICBjb250aW51ZTsKICAgIH0KCiAgLy8gd2UgaGF2ZSBhIGNvbmZsaWN0LgoKICAvLyBpcyB0aGlzIGEgcGFyZW50IGV2ZW50ID8KICBpZiggJHRtcFsnbmNoaWxkcmVuJ10gIT0gLTEgKQogICAgewogICAgICAvLyB5ZXMuLi4gZ2V0IHRoZSBmaXJzdCBjaGlsZCBldmVudCBpZC4uCiAgICAgICRxdWVyeSA9ICdTRUxFQ1QgZXZlbnRfaWQgRlJPTSAnLiR0aGlzLT5ldmVudHNfdGFibGVfbmFtZS4iCiAgICAgICAgICAgICAgICAgV0hFUkUgZXZlbnRfcGFyZW50X2lkID0gPyBPUkRFUiBCWSBldmVudF9pZCBBU0MiOwogICAgICAkbmV3X3BhcmVudF9pZCA9ICRkYi0+R2V0T25lKCRxdWVyeSxhcnJheSgkdG1wWydldmVudF9pZCddKSk7CgogICAgICAvLyBhbmQgbWFrZSBpdCB0aGUgcGFyZW50CiAgICAgICRxdWVyeSA9ICdVUERBVEUgJy4kdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUuJwogICAgICAgICAgICAgICAgICAgU0VUIGV2ZW50X3BhcmVudF9pZCA9ID8KICAgICAgICAgICAgICAgICBXSEVSRSBldmVudF9wYXJlbnRfaWQgPSA/CiAgICAgICAgICAgICAgICAgICBBTkQgZXZlbnRfaWQgIT0gPyc7CiAgICAgICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJG5ld19wYXJlbnRfaWQsJHRtcFsnZXZlbnRfaWQnXSwkbmV3X3BhcmVudF9pZCkpOwoKICAgICAgLy8gYW5kIHVwZGF0ZSB0aGUgbmV3IHBhcmVudCByZWNvcmQKICAgICAgJHF1ZXJ5ID0gJ1VQREFURSAnLiR0aGlzLT5ldmVudHNfdGFibGVfbmFtZS4nCiAgICAgICAgICAgICAgICAgICBTRVQgZXZlbnRfcGFyZW50X2lkID0gPwogICAgICAgICAgICAgICAgIFdIRVJFIGV2ZW50X2lkID0gPyc7CiAgICAgICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoLTEsJG5ld19wYXJlbnRfaWQpKTsKICAgIH0KCiAgLy8gZGVsZXRlIHRoaXMgZXZlbnQsIHVubGVzcyBpdCBoYXMgY2hpbGQgZXZlbnRzCiAgLy8gaW4gd2hpY2ggY2FzZSB3ZSBtYWtlIHRoZSBmaXJzdCBjaGlsZCBldmVudCB0aGUgcGFyZW50CiAgJHF1ZXJ5ID0gJ0RFTEVURSBGUk9NICcuJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lLicKICAgICAgICAgICAgIFdIRVJFIGV2ZW50X2lkID0gPyc7CiAgJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkdG1wWydldmVudF9pZCddKSk7CgogICRxdWVyeSA9ICdERUxFVEUgRlJPTSAnLiR0aGlzLT5ldmVudHNfdG9fY2F0ZWdvcmllc190YWJsZV9uYW1lLicKICAgICAgICAgICAgIFdIRVJFIGV2ZW50X2lkID0gPyc7CiAgJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkdG1wWydldmVudF9pZCddKSk7Cn0KCiR0aGlzLT5TZXRDdXJyZW50VGFiKCdkZWZhdWx0YWRtaW4nKTsKJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkKTsKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_remove_expired.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgQ2FsZW5kYXInKSApIHJldHVybjsKCnRyeSB7CiAgICBpZiggaXNzZXQoJHBhcmFtc1snY2FsX2NhbmNlbCddKSApIHsKICAgICAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwogICAgfQoKICAgIC8vIGdldCBhIGxpc3Qgb2YgdGhlIGV2ZW50cyAoYW5kIGV2ZW50IG5hbWVzLCBhbmQgd2V0aGVyIHRoZXkgYXJlIGEgY2hpbGQgZXZlbnQpCiAgICAvLyB0aGF0IGFyZSBleHBpcmVkLgogICAgJHNxbCA9ICdTRUxFQ1QgZXZlbnRfaWQsIGV2ZW50X3RpdGxlLCBldmVudF9zdW1tYXJ5LCBldmVudF9kYXRlX3N0YXJ0LCBldmVudF9kYXRlX2VuZCwgZXZlbnRfcmVjdXJfcGVyaW9kLCBldmVudF9wYXJlbnRfaWQgRlJPTSAnLiR0aGlzLT5ldmVudHNfdGFibGVfbmFtZS4nCiAgICAgICAgV0hFUkUgKGV2ZW50X2RhdGVfc3RhcnQgPCBOT1coKSkgT1IgKGV2ZW50X2RhdGVfZW5kIElTIE5PVCBOVUxMIEFORCBldmVudF9kYXRlX2VuZCA8IE5PVygpKQogICAgICAgIE9SREVSIEJZIGV2ZW50X2RhdGVfc3RhcnQgREVTQwogICAgICAgIExJTUlUIDUwMCc7CiAgICAkbGlzdCA9ICRkYi0+R2V0QXJyYXkoJHNxbCk7CiAgICBpZiggIWNvdW50KCRsaXN0KSApIHsKICAgICAgICAkdGhpcy0+U2V0TWVzc2FnZSgkdGhpcy0+TGFuZygnbXNnX25vZXhwaXJlZGV2ZW50cycpKTsKICAgICAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwogICAgfQoKICAgIC8vIGNvbnZlcnQgdGhlIGxpc3QgdG8gYSBoYXNoIGJhc2VkIG9uIHRoZSBldmVudCBpZAogICAgJGxpc3QgPSBcY2dlX2FycmF5Ojp0b19oYXNoKCRsaXN0LCdldmVudF9pZCcpOwoKICAgIC8vIG5vdywgZm9yIGFsbCB0aGUgcGFyZW50IGV2ZW50cywgZ2V0IHRoZSBsYXN0IGNoaWxkIGluIHRoZSBmdXR1cmUuCiAgICAkcGFyZW50X2lkcyA9IGFycmF5KCk7CiAgICAkbGlzdF9mdXR1cmVfcGFyZW50cyA9IGFycmF5KCk7IC8vIGV2ZW50IGlkcyB0aGF0IGhhdmUgY2hpbGRyZW4gaW4gdGhlIGZ1dHVyZS4KICAgIGZvcmVhY2goICRsaXN0IGFzICRyb3cgKSB7CiAgICAgICAgaWYoICFlbXB0eSgkcm93WydldmVudF9yZWN1cl9wZXJpb2QnXSkgJiYgJHJvd1snZXZlbnRfcmVjdXJfcGVyaW9kJ10gIT0gJ25vbmUnICkgewogICAgICAgICAgICAkcGFyZW50X2lkc1tdID0gKGludCkgJHJvd1snZXZlbnRfaWQnXTsKICAgICAgICB9CiAgICB9CiAgICBpZiggY291bnQoJHBhcmVudF9pZHMpICkgewogICAgICAgICRzcWwgPSAnU0VMRUNUIHQxLmV2ZW50X2lkLHQxLmV2ZW50X3BhcmVudF9pZCx0MS5ldmVudF9kYXRlX3N0YXJ0LHQxLmV2ZW50X2RhdGVfZW5kIGZyb20gJXRhYmxlJSB0MQogICAgICAgICAgICAgICAgSk9JTiAoU0VMRUNUIGV2ZW50X3BhcmVudF9pZCxNQVgoZXZlbnRfZGF0ZV9zdGFydCkgZXZlbnRfZGF0ZV9zdGFydAogICAgICAgICAgICAgICAgICAgICAgRlJPTSAldGFibGUlCiAgICAgICAgICAgICAgICAgICAgICBXSEVSRSBldmVudF9wYXJlbnRfaWQgSU4gKCcuaW1wbG9kZSgnLCcsJHBhcmVudF9pZHMpLicpCiAgICAgICAgICAgICAgICAgICAgICBHUk9VUCBCWSBldmVudF9wYXJlbnRfaWQpIHQyCiAgICAgICAgICAgICAgICBPTiB0MS5ldmVudF9wYXJlbnRfaWQgPSB0Mi5ldmVudF9wYXJlbnRfaWQgQU5EIHQxLmV2ZW50X2RhdGVfc3RhcnQgPSB0Mi5ldmVudF9kYXRlX3N0YXJ0JzsKICAgICAgICAkc3FsID0gc3RyX3JlcGxhY2UoJyV0YWJsZSUnLCR0aGlzLT5ldmVudHNfdGFibGVfbmFtZSwkc3FsKTsKICAgICAgICAkbGlzdDIgPSAkZGItPkdldEFycmF5KCRzcWwpOwogICAgICAgIGFycmF5X3dhbGsoJGxpc3QyLGZ1bmN0aW9uKCRmdXR1cmVfcmVjb3JkKSB1c2UgKCYkbGlzdCwmJGRiKSB7CiAgICAgICAgICAgICAgICAkdGFyZ2V0X2V2ZW50ID0gKGludCkgJGZ1dHVyZV9yZWNvcmRbJ2V2ZW50X3BhcmVudF9pZCddOwogICAgICAgICAgICAgICAgaWYoICR0YXJnZXRfZXZlbnQgPCAxICkgcmV0dXJuOwogICAgICAgICAgICAgICAgaWYoICFpc3NldCgkbGlzdFskdGFyZ2V0X2V2ZW50XSkgKSByZXR1cm47CiAgICAgICAgICAgICAgICAkdHMgPSAkZGItPlVuaXhUaW1lU3RhbXAoJGZ1dHVyZV9yZWNvcmRbJ2V2ZW50X2RhdGVfc3RhcnQnXSk7CiAgICAgICAgICAgICAgICAkbGlzdFskdGFyZ2V0X2V2ZW50XVsnZXZlbnRfcmVjdXJfbGFzdCddID0gJHRzOwogICAgICAgICAgICAgICAgaWYoICR0cyA+IHRpbWUoKSApICRsaXN0X2Z1dHVyZV9wYXJlbnRzW10gPSAkdGFyZ2V0X2V2ZW50OwogICAgICAgICAgICB9KTsKICAgIH0KCiAgICBpZiggaXNzZXQoJHBhcmFtc1snY2FsX3N1Ym1pdCddKSApIHsKICAgICAgICB0cnkgewogICAgICAgICAgICAkY2FsX3NlbGVjdCA9IFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCdjYWxfc2VsZWN0Jyk7CiAgICAgICAgICAgIGlmKCAhaXNfYXJyYXkoJGNhbF9zZWxlY3QpIHx8ICFjb3VudCgkY2FsX3NlbGVjdCkgKSB0aHJvdyBuZXcgXEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3Jfbm90aGluZ3NlbGVjdGVkJykpOwoKICAgICAgICAgICAgJG4gPSAwOwogICAgICAgICAgICBmb3JlYWNoKCAkY2FsX3NlbGVjdCBhcyAkZXZlbnRfaWQgKSB7CiAgICAgICAgICAgICAgICAvLyBkb3VibGUgY2hlY2sgdGhhdCB0aGlzIGV2ZW50IGlzIG5vdCBhIHBhcmVudCB3aXRoIGNoaWxkcmVuIGluIHRoZSBmdXR1cmUKICAgICAgICAgICAgICAgIGlmKCBpbl9hcnJheSgkZXZlbnRfaWQsJGxpc3RfZnV0dXJlX3BhcmVudHMpICkgY29udGludWU7CiAgICAgICAgICAgICAgICBjZ2NhbGVuZGFyX3V0aWxzOjpkZWxldGVfZXZlbnQoJGV2ZW50X2lkKTsKICAgICAgICAgICAgICAgICRuKys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnQnVsayBkZWxldGVkIGV4cGlyZWQgZXZlbnRzJyk7CiAgICAgICAgICAgICR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdkZWxldGVkX24nLCRuKSk7CiAgICAgICAgICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCk7CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCRlLT5HZXRNZXNzYWdlKCkpOwogICAgICAgIH0KICAgIH0KCiAgICAkdHBsID0gJHNtYXJ0eS0+Q3JlYXRlVGVtcGxhdGUoJHRoaXMtPkdldFRlbXBsYXRlUmVzb3VyY2UoJ2FkbWluX3JlbW92ZV9leHBpcmVkLnRwbCcpKTsKICAgICR0cGwtPmFzc2lnbignbW9kJywkdGhpcyk7CiAgICAkdHBsLT5hc3NpZ24oJ2FjdGlvbmlkJywkaWQpOwogICAgJHRwbC0+YXNzaWduKCdldmVudHMnLCRsaXN0KTsKICAgICR0cGwtPmRpc3BsYXkoKTsKfQpjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJGUtPkdldE1lc3NhZ2UoKSk7Cn0=]]></data>
	</file>
	<file>
	  <filename>/action.admin_settings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpICYmICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgQ2FsZW5kYXIgQXR0cmlidXRlcycpICkgZXhpdDsKCgplY2hvICR0aGlzLT5TdGFydFRhYkhlYWRlcnMoKTsKaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBDYWxlbmRhciBBdHRyaWJ1dGVzJykgKSB7CiAgICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2FkbWluX21hbmFnZV9jYXRlZ29yaWVzJywgJHRoaXMtPkxhbmcoJ2NhbF9jYXRlZ29yaWVzJykpOwogICAgZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdmaWVsZHMnLCR0aGlzLT5MYW5nKCdmaWVsZHMnKSk7Cn0KaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJykgKSBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2FkbWluX21hbmFnZV9zZXR0aW5ncycsJHRoaXMtPkxhbmcoJ2NhbF9zZXR0aW5ncycpKTsKZWNobyAkdGhpcy0+RW5kVGFiSGVhZGVycygpOwoKZWNobyAkdGhpcy0+U3RhcnRUYWJDb250ZW50KCk7CmlmKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgQ2FsZW5kYXIgQXR0cmlidXRlcycpICkgewogICAgZWNobyAkdGhpcy0+U3RhcnRUYWIoImFkbWluX21hbmFnZV9jYXRlZ29yaWVzIiwkcGFyYW1zKTsKICAgIGluY2x1ZGUoX19ESVJfXy4nL2Z1bmN0aW9uLmFkbWluX2NhdGVnb3JpZXNfdGFiLnBocCcpOwogICAgZWNobyAkdGhpcy0+RW5kVGFiKCk7CgogICAgZWNobyAkdGhpcy0+U3RhcnRUYWIoImZpZWxkcyIsJHBhcmFtcyk7CiAgICBpbmNsdWRlKF9fRElSX18uJy9mdW5jdGlvbi5hZG1pbl9maWVsZHN0YWIucGhwJyk7CiAgICBlY2hvICR0aGlzLT5FbmRUYWIoKTsKfQoKaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJykgKSB7CiAgICBlY2hvICR0aGlzLT5TdGFydFRhYigiYWRtaW5fbWFuYWdlX3NldHRpbmdzIik7CiAgICBpbmNsdWRlKF9fRElSX18uJy9mdW5jdGlvbi5hZG1pbl9zZXR0aW5nc3RhYi5waHAnKTsKICAgIGVjaG8gJHRoaXMtPkVuZFRhYigpOwp9CmVjaG8gJHRoaXMtPkVuZFRhYkNvbnRlbnQoKTsK]]></data>
	</file>
	<file>
	  <filename>/action.admin_settings_update.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpICkgZXhpdDsKCiR0aGlzLT5TZXRDdXJyZW50QWN0aW9uKCdhZG1pbl9zZXR0aW5ncycpOwokdGhpcy0+U2V0Q3VycmVudFRhYignYWRtaW5fbWFuYWdlX2NhdGVnb3JpZXMnKTsKJHN1Ym1pdCA9IGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcmFtcywgJ3N1Ym1pdCcpOwppZigkc3VibWl0ICE9ICcnKSB7CgogICAgJHRoaXMtPlNldEN1cnJlbnRUYWIoJ2FkbWluX21hbmFnZV9zZXR0aW5ncycpOwoKICAgICRmaXJzdGRheW9md2VlayA9IGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcmFtcywnZmlyc3RkYXlvZndlZWsnKTsKICAgICR1c2VfdHdlbHZlX2hvdXJfY2xvY2sgPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsJ3VzZV90d2VsdmVfaG91cl9jbG9jaycpOwogICAgJGZvcmNlX2NhdGVnb3J5ID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAnZm9yY2VfY2F0ZWdvcnknKTsKICAgICRzaG93cGFzdHllYXJzID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAnc2hvd3Bhc3R5ZWFycycpOwogICAgJHNob3dmdXR1cmV5ZWFycyA9IGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcmFtcywgJ3Nob3dmdXR1cmV5ZWFycycpOwogICAgJGRlZmF1bHRfY2F0ZWdvcnkgPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsICdkZWZhdWx0X2NhdGVnb3J5JywnJyk7CiAgICAkaGlkZXN1bW1hcnkgPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsICdoaWRlc3VtbWFyeScsMCk7CiAgICAkaGlkZWNvbnRlbnQgPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsICdoaWRlY29udGVudCcsMCk7CiAgICAkdXBsb2FkZGlyZWN0b3J5ID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAndXBsb2FkZGlyZWN0b3J5Jyk7CiAgICAkdXBsb2FkZmlsZXR5cGVzID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAndXBsb2FkZmlsZXR5cGVzJyk7CiAgICAkdXBsb2FkdW5pcXVlID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAndXBsb2FkdW5pcXVlJyk7CiAgICAkb3ZlcmxhcF9wb2xpY3kgPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsICdvdmVybGFwX3BvbGljeScpOwogICAgJG92ZXJsYXBfYWN0aW9uID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAnb3ZlcmxhcF9hY3Rpb24nKTsKICAgICRmcm9udGVuZF9yZWRpcmVjdHBhZ2UgPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsICdmcm9udGVuZF9yZWRpcmVjdHBhZ2UnKTsKCiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnb3ZlcmxhcF9wb2xpY3knLCRvdmVybGFwX3BvbGljeSk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnb3ZlcmxhcF9hY3Rpb24nLCRvdmVybGFwX2FjdGlvbik7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZmlyc3RkYXlvZndlZWsnLCRmaXJzdGRheW9md2Vlayk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlX3R3ZWx2ZV9ob3VyX2Nsb2NrJywgJHVzZV90d2VsdmVfaG91cl9jbG9jayk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmYXVsdGNhbGVuZGFycGFnZScsICRfUE9TVFsncGFyZW50X2lkJ10pOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZmF1bHRfY2F0ZWdvcnknLCAkZGVmYXVsdF9jYXRlZ29yeSk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZm9yY2VfY2F0ZWdvcnknLCAkZm9yY2VfY2F0ZWdvcnkpOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3Nob3dwYXN0eWVhcnMnLCAkc2hvd3Bhc3R5ZWFycyk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnc2hvd2Z1dHVyZXllYXJzJywgJHNob3dmdXR1cmV5ZWFycyk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnaGlkZXN1bW1hcnknLCAkaGlkZXN1bW1hcnkpOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2hpZGVjb250ZW50JywgJGhpZGVjb250ZW50KTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1cGxvYWRkaXJlY3RvcnknLCAkdXBsb2FkZGlyZWN0b3J5KTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1cGxvYWRmaWxldHlwZXMnLCAkdXBsb2FkZmlsZXR5cGVzKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1cGxvYWR1bmlxdWUnLCAkdXBsb2FkdW5pcXVlKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdmcmllbmRseW5hbWUnLCB0cmltKCRwYXJhbXNbJ2ZyaWVuZGx5bmFtZSddKSk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGZsdF9mZ2NvbG9yJywgdHJpbSgkcGFyYW1zWydkZmx0X2ZnY29sb3InXSkpOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RmbHRfYmdjb2xvcicsIHRyaW0oJHBhcmFtc1snZGZsdF9iZ2NvbG9yJ10pKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdpY2FsX2hvbGlkYXlzJyxcY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ2ljYWxfaG9saWRheXMnKSk7CgogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RmbHRfc3RhdHVzJyxnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsJ2RmbHRfc3RhdHVzJywnRCcpKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1cmxfcHJlZml4JyxnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsJ3VybF9wcmVmaXgnLCdjYWxlbmRhcicpKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZmx0X2FsbGRheWV2ZW50JyxnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsJ2RmbHRfYWxsZGF5ZXZlbnQnLDApKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdob2xpZGF5X2ZnY29sb3InLCB0cmltKCRwYXJhbXNbJ2hvbGlkYXlfZmdjb2xvciddKSk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnaG9saWRheV9iZ2NvbG9yJywgdHJpbSgkcGFyYW1zWydob2xpZGF5X2JnY29sb3InXSkpOwogICAgJHN0YXJ0X3RpbWUgPSAnJzsKICAgICRzdGFydF90aW1lID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCdkZmx0X3N0YXJ0dGltZV9Ib3VyJywxMikuJzonLmdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcmFtcywnZGZsdF9zdGFydHRpbWVfTWludXRlJywwMCk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGZsdF9zdGFydHRpbWUnLCRzdGFydF90aW1lKTsKCiAgICBpZiggaXNzZXQoJHBhcmFtc1snZnJvbnRlbmRfZ3JvdXAnXSkgKSAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZnJvbnRlbmRfZ3JvdXAnLCRwYXJhbXNbJ2Zyb250ZW5kX2dyb3VwJ10pOwogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2Zyb250ZW5kX21hc3Rlcmdyb3VwJ10pICkgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Zyb250ZW5kX21hc3Rlcmdyb3VwJywkcGFyYW1zWydmcm9udGVuZF9tYXN0ZXJncm91cCddKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdmcm9udGVuZF9yZWRpcmVjdHBhZ2UnLCRmcm9udGVuZF9yZWRpcmVjdHBhZ2UpOwogICAgJHRoaXMtPlNldE1lc3NhZ2UoJHRoaXMtPkxhbmcoJ21zZ19zZXR0aW5nc19jaGFuZ2VkJykpOwp9CgokdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwo=]]></data>
	</file>
	<file>
	  <filename>/action.ajax_fetchevents.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiRzdGFydCA9IHN0cnRvdGltZShcY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRfUkVRVUVTVCwnc3RhcnQnKSk7CiRlbmQgPSBzdHJ0b3RpbWUoXGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkX1JFUVVFU1QsJ2VuZCcpKTsKJHNob3djaGlsZHJlbiA9IChpbnQpY2dlX3BhcmFtOjpnZXRfYm9vbCgkcGFyYW1zLCdzaG93Y2hpbGRyZW4nLDApOwokY2F0ZWdvcnlfc3RyID0gY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ2NhdGVnb3J5Jyk7CiRrZXl3b3JkID0gdHJpbShjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywna2V5d29yZCcpKTsKJHdoZW4gPSBzdHJ0b2xvd2VyKHRyaW0oY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ3doZW4nLCdhbnknKSkpOwokbGltaXQgPSBjZ2VfcGFyYW06OmdldF9pbnQoJHBhcmFtcywnbGltaXQnLDEwMDApOyAvLyAxMDAwIGlzIG1vcmUgdGhhbiBlbm91Z2guCiRkZXRhaWxwYWdlID0gKGludCkgY2dlX3BhcmFtOjpnZXRfaW50KCRwYXJhbXMsJ2RldGFpbHBhZ2UnLCRyZXR1cm5pZCk7CmlmKCAkZGV0YWlscGFnZSA8IDEgKSAkZGV0YWlscGFnZSA9ICRyZXR1cm5pZDsKJGV2ZW50dGVtcGxhdGUgPSBjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnZXZlbnR0ZW1wbGF0ZScpOwokZWRpdHBhZ2UgPSBjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnZWRpdHBhZ2UnKTsKJGVkaXRldmVudHRlbXBsYXRlID0gY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ2VkaXRldmVudHRlbXBsYXRlJyk7CgovLyByZXNvbHZlIHRoZSBjYXRlZ29yaWVzLgokY2F0ZWdvcmllcyA9IGFycmF5KCk7CmlmKCAkY2F0ZWdvcnlfc3RyICkgewogICAgJGNhdF9tYXAgPSBhcnJheSgpOwogICAgJHRtcCA9IFxDR0NhbGVuZGFyXGNhdGVnb3J5OjpnZXRfY2F0ZWdvcmllcygpOwogICAgZm9yZWFjaCggJHRtcCBhcyAkb25lICkgewogICAgICAgICRjYXRfbWFwWyRvbmVbJ2NhdGVnb3J5X25hbWUnXV0gPSAoaW50KSAkb25lWydjYXRlZ29yeV9pZCddOwogICAgfQoKICAgICRsaXN0ID0gZXhwbG9kZSgnLCcsJGNhdGVnb3J5X3N0cik7CiAgICBmb3JlYWNoKCAkbGlzdCBhcyAkb25lICkgewogICAgICAgICRvbmUgPSB0cmltKCRvbmUpOwogICAgICAgIGlmKCBpc19udW1lcmljKCRvbmUpICYmIChpbnQpICRvbmUgPiAwICkgewogICAgICAgICAgICBpZiggIWluX2FycmF5KCRvbmUsJGNhdGVnb3JpZXMpICkgJGNhdGVnb3JpZXNbXSA9IChpbnQpICRvbmU7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoIGlzc2V0KCRjYXRfbWFwWyRvbmVdKSApIHsKICAgICAgICAgICAgJGNhdGVnb3JpZXNbXSA9ICRjYXRfbWFwWyRvbmVdOwogICAgICAgIH0KICAgIH0KfQoKLy8gcmVzb2x2ZSB0aGUgZWRpdHBhZ2UKJGVkaXRwYWdlID0gJHJldHVybmlkOwp7CiAgICAkdG1wID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Zyb250ZW5kX3JlZGlyZWN0cGFnZScsJycpOwogICAgaWYoICR0bXAgKSB7CiAgICAgICAgJHRtcCA9ICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkdG1wKTsKICAgICAgICAkZWRpdHBhZ2UgPSAkdGhpcy0+cmVzb2x2ZV9hbGlhc19vcl9pZCgkdG1wLCRlZGl0cGFnZSk7CiAgICB9CiAgICAkdG1wID0gXGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdlZGl0cGFnZScpOwogICAgaWYoICR0bXAgKSB7CiAgICAgICAgJGVkaXRwYWdlID0gJHRoaXMtPnJlc29sdmVfYWxpYXNfb3JfaWQoJHRtcCwkZWRpdHBhZ2UpOwogICAgfQp9CiRmZXUgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdGcm9udEVuZFVzZXJzJyk7CiRmZXVfdWlkID0gbnVsbDsKaWYoICRmZXUgKSAkZmV1X3VpZCA9ICRmZXUtPkxvZ2dlZEluSWQoKTsKCiRzdF9kcyA9ICRkYi0+RGJUaW1lU3RhbXAoJHN0YXJ0KTsKJGVuX2RzID0gJGRiLT5EYlRpbWVTdGFtcCgkZW5kKTsKaWYoICRzdGFydCA8IDEgfHwgJGVuZCA8IDEgKSB7CiAgICBzd2l0Y2goICR3aGVuICkgewogICAgY2FzZSAncGFzdCc6CiAgICAgICAgJHN0YXJ0ID0gMTsKICAgICAgICAkZW5kID0gdGltZSgpOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgJ2Z1dHVyZSc6CiAgICAgICAgJHN0YXJ0ID0gdGltZSgpOwogICAgICAgICRlbmQgPSAyMTQ3NDgzNjQ4OyAvLyBtYXggdW5peCB0aW1lCiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAnYW55JzoKICAgICAgICBicmVhazsKICAgIH0KfQppZiggJHN0YXJ0ID4gJGVuZCApIHsKICAgICRjID0gJHN0YXJ0OwogICAgJHN0YXJ0ID0gJGVuZDsKICAgICRlbmQgPSAkYzsKfQoKJHdoZXJlID0gYXJyYXkoKTsKJHBhcm1zID0gYXJyYXkoKTsKLy8gZ2V0IGFsbCBvZiB0aGUgZXZlbnRzCiRxdWVyeSA9ICdTRUxFQ1QgRS4qIEZST00gJy4kdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUuJyBFJzsKaWYoICRnQ21zLT5pc19mcm9udGVuZF9yZXF1ZXN0KCkgKSB7CiAgICAkd2hlcmVbXSA9ICdFLmV2ZW50X3N0YXR1cyA9ID8nOwogICAgJHBhcm1zW10gPSAnUCc7Cn0KaWYoIGNvdW50KCRjYXRlZ29yaWVzKSApIHsKICAgICRxdWVyeSAuPSAnIExFRlQgSk9JTiAnLiR0aGlzLT5ldmVudHNfdG9fY2F0ZWdvcmllc190YWJsZV9uYW1lLicgRUMgT04gRS5ldmVudF9pZCA9IEVDLmV2ZW50X2lkJzsKICAgICR3aGVyZVtdID0gJ0VDLmNhdGVnb3J5X2lkIGluICgnLmltcGxvZGUoJywnLCRjYXRlZ29yaWVzKS4nKSc7Cn0KaWYoICRzdGFydCAmJiAkZW5kICkgewogICAgJHdoZXJlW10gPSAnKChFLmV2ZW50X2RhdGVfc3RhcnQgQkVUV0VFTiA/IEFORCA/KSBPUiAoRS5ldmVudF9kYXRlX2VuZCBCRVRXRUVOID8gQU5EID8pKSc7CiAgICAkcGFybXNbXSA9IHRyaW0oJGRiLT5EYlRpbWVTdGFtcCgkc3RhcnQpLCInIik7CiAgICAkcGFybXNbXSA9IHRyaW0oJGRiLT5EYlRpbWVTdGFtcCgkZW5kKSwiJyIpOwogICAgJHBhcm1zW10gPSB0cmltKCRkYi0+RGJUaW1lU3RhbXAoJHN0YXJ0KSwiJyIpOwogICAgJHBhcm1zW10gPSB0cmltKCRkYi0+RGJUaW1lU3RhbXAoJGVuZCksIiciKTsKfQppZiggISRzaG93Y2hpbGRyZW4gKSAkd2hlcmVbXSA9ICdDT0FMRVNDRShFLmV2ZW50X3BhcmVudF9pZCwwKSA8IDEnOwppZiggJGtleXdvcmQgKSB7CiAgICAka2V5d29yZCA9IHN0cmlwX3RhZ3MoJGtleXdvcmQpOwogICAgJHRfd29yZHMgPSBwcmVnX3NwbGl0KCcvW1xzLF0rLycsJGtleXdvcmQpOwogICAgJHdvcmRzID0gW107CiAgICBmb3JlYWNoKCAkdF93b3JkcyBhcyAkd29yZCApIHsKICAgICAgICAkd29yZCA9IHRyaW0oJHdvcmQpOwogICAgICAgIGlmKCBzdHJsZW4oJHdvcmQpIDwgMykgY29udGludWU7ICAvLyBpZ25vcmUgYW55IG9uZSBvciAyIGNoYXJhY3RlciB3b3Jkcy4KICAgICAgICBpZiggJHdvcmQgJiYgIWluX2FycmF5KCR3b3JkLCR3b3JkcykgKSAkd29yZHNbXSA9ICR3b3JkOwogICAgfQogICAgaWYoIGNvdW50KCR3b3JkcykgKSB7CiAgICAgICAgJGFyciA9IFtdOwogICAgICAgICRmbXQgPSAiRS5ldmVudF90aXRsZSBMSUtFICclcycgT1IgRS5ldmVudF9zdW1tYXJ5IExJS0UgJyVzJyBPUiBFLmV2ZW50X2RldGFpbHMgTElLRSAnJXMnIjsKICAgICAgICBmb3JlYWNoKCAkd29yZHMgYXMgJHdvcmQgKSB7CiAgICAgICAgICAgICR3b3JkID0gJyUnLiR3b3JkLiclJzsKICAgICAgICAgICAgJGFycltdID0gc3ByaW50ZigkZm10LCR3b3JkLCR3b3JkLCR3b3JkKTsKICAgICAgICB9CiAgICAgICAgJHdoZXJlW10gPSAnKCcuaW1wbG9kZSgnIE9SICcsJGFycikuJyknOwogICAgfQp9CgovLyBwdXQgdGhlIHF1ZXJ5IHRvZ2V0aGVyCmlmKCBjb3VudCgkd2hlcmUpICkgJHF1ZXJ5IC49ICcgV0hFUkUgJyAuIGltcGxvZGUoJyBBTkQgJywkd2hlcmUpOwokcnMgPSAkZGItPlNlbGVjdExpbWl0KCRxdWVyeSwkbGltaXQsMCwkcGFybXMpOwokbGlzdDEgPSBhcnJheSgpOwp3aGlsZSggISRycy0+RU9GICkgewogICAgJGxpc3QxW10gPSAkcnMtPmZpZWxkczsKICAgICRycy0+TW92ZU5leHQoKTsKfQp1bnNldCgkcnMpOwoKJG91dGxpc3QgPSBhcnJheSgpOwppZiggY291bnQoJGxpc3QxKSApIHsKICAgIC8vIGdldCB0aGUgY2F0ZWdvcmllKHMpIGZvciB0aGVzZSBldmVudHMKICAgICRpZGxpc3QgPSBjZ2VfYXJyYXk6OmV4dHJhY3RfZmllbGQoJGxpc3QxLCdldmVudF9pZCcpOwogICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy4kdGhpcy0+ZXZlbnRzX3RvX2NhdGVnb3JpZXNfdGFibGVfbmFtZS4nIFdIRVJFIGV2ZW50X2lkIElOICgnLmltcGxvZGUoJywnLCRpZGxpc3QpLicpIE9SREVSIEJZIGV2ZW50X2lkLGNhdGVnb3J5X2lkJzsKICAgICR0bXAgPSAkZGItPkdldEFycmF5KCRxdWVyeSk7CiAgICAkY2F0ZWdvcnlfbGlzdCA9IGFycmF5KCk7CiAgICBpZiggaXNfYXJyYXkoJHRtcCkgJiYgY291bnQoJHRtcCkgKSB7CiAgICAgICAgZm9yZWFjaCggJHRtcCBhcyAkcmVjICkgewogICAgICAgICAgICAkY2F0ZWdvcnlfbGlzdFskcmVjWydldmVudF9pZCddXVtdID0gJHJlY1snY2F0ZWdvcnlfaWQnXTsKICAgICAgICB9CiAgICB9CgogICAgLy8gbm93IGNvbnZlcnQgdGhpcyBpbnRvIHNvbWV0aGluZyBjb21wYXRpYmxlIHdpdGggZnVsbGNhbGVuZGFyCiAgICBmb3JlYWNoKCAkbGlzdDEgYXMgJHJlYyApIHsKICAgICAgICB0cnkgewogICAgICAgICAgICAkb3V0ID0gbmV3IHN0ZENsYXNzOwogICAgICAgICAgICAkb3V0LT5pZCA9ICRyZWNbJ2V2ZW50X2lkJ107CiAgICAgICAgICAgICRvdXQtPnRpdGxlID0gJHJlY1snZXZlbnRfdGl0bGUnXTsKICAgICAgICAgICAgJG91dC0+c3VtbWFyeSA9ICRyZWNbJ2V2ZW50X3N1bW1hcnknXTsKICAgICAgICAgICAgJG91dC0+ZGV0YWlscyA9ICRyZWNbJ2V2ZW50X2RldGFpbHMnXTsKICAgICAgICAgICAgJG91dC0+Y2FuZWRpdCA9IDE7CiAgICAgICAgICAgICRvdXQtPmNhbmRlbGV0ZSA9IDA7CgogICAgICAgICAgICBpZiggaXNzZXQoJGNhdGVnb3J5X2xpc3RbJG91dC0+aWRdKSAmJiBjb3VudCgkY2F0ZWdvcnlfbGlzdFskb3V0LT5pZF0pID49IDEgKSB7CiAgICAgICAgICAgICAgICAvLyB0aGlzIGV2ZW50IGlzIGluIG9ubHkgb25lIGNhdGVnb3J5CiAgICAgICAgICAgICAgICAvLyB3ZSBjYW4gc2V0IHRoZSBjb2xvciBhbmQgdGV4dGNvbG9yCiAgICAgICAgICAgICAgICAkY2F0ZWdvcnkgPSBcQ0dDYWxlbmRhclxjYXRlZ29yeTo6bG9hZCgkY2F0ZWdvcnlfbGlzdFskb3V0LT5pZF1bMF0pOwogICAgICAgICAgICAgICAgJG91dC0+Y29sb3IgPSAkY2F0ZWdvcnlbJ2JnY29sb3InXTsKICAgICAgICAgICAgICAgICRvdXQtPnRleHRDb2xvciA9ICRjYXRlZ29yeVsnZmdjb2xvciddOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiggJHJlY1snZXZlbnRfcGFyZW50X2lkJ10gPiAxICkgewogICAgICAgICAgICAgICAgLy8gaXMgYSBjaGlsZCBldmVudAogICAgICAgICAgICAgICAgJG91dC0+dGl0bGUgLj0gIiAoIi4kdGhpcy0+TGFuZygnY2hpbGQnKS4iKSI7CiAgICAgICAgICAgICAgICAkb3V0LT5jaGlsZCA9ICRyZWNbJ2V2ZW50X3BhcmVudF9pZCddOwogICAgICAgICAgICAgICAgJG91dC0+Y2FuZGVsZXRlID0gMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKCAkcmVjWydldmVudF9yZWN1cl9wZXJpb2QnXSAmJiAkcmVjWydldmVudF9yZWN1cl9wZXJpb2QnXSAhPSAnbm9uZScgKSB7CiAgICAgICAgICAgICAgICAvLyBpcyBhIHBhcmVudCBldmVudCBvZiBhIHJlY3VycmluZyBldmVudAogICAgICAgICAgICAgICAgJG91dC0+dGl0bGUgLj0gIiAoIi4kdGhpcy0+TGFuZygncmVwZWF0cycpLicpJzsKICAgICAgICAgICAgICAgICRvdXQtPnJlY3VycyA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkb3V0LT5jYW5kZWxldGUgPSAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRvdXQtPnN0YXJ0ID0gJHJlY1snZXZlbnRfZGF0ZV9zdGFydCddOwogICAgICAgICAgICAkb3V0LT5lbmQgPSAkcmVjWydldmVudF9kYXRlX2VuZCddOwogICAgICAgICAgICAkb3V0LT5hbGxEYXkgPSAoJHJlY1snZXZlbnRfYWxsX2RheSddKT90cnVlOmZhbHNlOwoKICAgICAgICAgICAgJHBhcm1zID0gYXJyYXkoJ2V2ZW50X2lkJz0+JHJlY1snZXZlbnRfaWQnXSk7CiAgICAgICAgICAgICRwYXJtc1snZGlzcGxheSddID0gJ2V2ZW50JzsKICAgICAgICAgICAgaWYoICRldmVudHRlbXBsYXRlICkgJHBhcm1zWydldmVudHRlbXBsYXRlJ10gPSAkZXZlbnR0ZW1wbGF0ZTsKICAgICAgICAgICAgJG91dC0+ZGV0YWlsX3VybCA9ICR0aGlzLT5jcmVhdGVfdXJsKCdjbnRudDAxJywnZGVmYXVsdCcsJGRldGFpbHBhZ2UsJHBhcm1zKTsKICAgICAgICAgICAgJG91dC0+ZGV0YWlsX3VybCA9IHN0cl9yZXBsYWNlKCcmYW1wOycsJyYnLCRvdXQtPmRldGFpbF91cmwpOwoKICAgICAgICAgICAgaWYoICRmZXVfdWlkICYmICRyZWNbJ2V2ZW50X2NyZWF0ZWRfYnknXSA9PSAkZmV1X3VpZCApIHsKICAgICAgICAgICAgICAgICRwYXJtcyA9IGFycmF5KCdldmVudF9pZCc9PiRyZWNbJ2V2ZW50X2lkJ10pOwogICAgICAgICAgICAgICAgaWYoICRlZGl0ZXZlbnR0ZW1wbGF0ZSApICRwYXJtc1snZWRpdGV2ZW50dGVtcGxhdGUnXSA9ICRlZGl0ZXZlbnR0ZW1wbGF0ZTsKICAgICAgICAgICAgICAgICRwYXJtc1sncmV0dXJuX2lkJ10gPSAkcmV0dXJuaWQ7CiAgICAgICAgICAgICAgICAkb3V0LT5lZGl0X3VybCA9ICR0aGlzLT5jcmVhdGVfdXJsKCdjbnRudDAxJywnYWRkZWRpdF9ldmVudCcsJGVkaXRwYWdlLCRwYXJtcyk7CiAgICAgICAgICAgICAgICAkb3V0LT5lZGl0X3VybCA9IHN0cl9yZXBsYWNlKCcmYW1wOycsJyYnLCRvdXQtPmVkaXRfdXJsKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkb3V0bGlzdFtdID0gJG91dDsKCiAgICAgICAgfQogICAgICAgIGNhdGNoKCBFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgIGRlYnVnX3RvX2xvZyhfX0ZJTEVfXyk7CiAgICAgICAgICAgIGRlYnVnX3RvX2xvZygkZS0+R2V0TWVzc2FnZSgpKTsKICAgICAgICB9CiAgICB9Cgp9CmNnZV91dGlsczo6c2VuZF9hamF4X2FuZF9leGl0KCRvdXRsaXN0KTsK]]></data>
	</file>
	<file>
	  <filename>/action.ajax_fetchholidays.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiR1cmwgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaWNhbF9ob2xpZGF5cycpOwppZiggISR1cmwgKSByZXR1cm47CiRtaW51dGVzID0gNyAqIDI0ICogNjA7ICAvLyA3IERBWVMKCiRjYWNoZWRmaWxlID0gbmV3IGNnZV9jYWNoZWRfcmVtb3RlX2ZpbGUoJHVybCwkbWludXRlcyk7CmlmKCAhJGNhY2hlZGZpbGUtPnNpemUoKSApIHJldHVybjsKCiRpY2FsID0gbmV3IFxDR0NhbGVuZGFyXEljYWxQYXJzZXI7CiRpY2FsLT5wYXJzZUZpbGUoJGNhY2hlZGZpbGUtPmdldF9kZXN0KCkpOwokZXZlbnRzID0gJGljYWwtPmdldFNvcnRlZEV2ZW50cygpOwppZiggY291bnQoJGV2ZW50cykgKSB7CiAgICAkb3V0ID0gYXJyYXkoKTsKICAgIGZvcmVhY2goICRldmVudHMgYXMgJGV2ZW50ICkgewogICAgICAgICRvYmogPSBhcnJheSgpOwogICAgICAgICRvYmpbJ3N0YXJ0J10gPSAkZXZlbnRbJ0RUU1RBUlQnXS0+Zm9ybWF0KCdZLW0tZCcpOwogICAgICAgICRvYmpbJ2VuZCddID0gJGV2ZW50WydEVEVORCddLT5mb3JtYXQoJ1ktbS1kJyk7CiAgICAgICAgJG9ialsnYWxsRGF5J10gPSB0cnVlOwogICAgICAgICRvYmpbJ3RpdGxlJ10gPSAkZXZlbnRbJ1NVTU1BUlknXTsKICAgICAgICAkb2JqWyd0eXBlJ10gPSAnaG9saWRheSc7CiAgICAgICAgJG91dFtdID0gJG9iajsKICAgIH0KICAgIFxjZ2VfdXRpbHM6OnNlbmRfYWpheF9hbmRfZXhpdCgkb3V0KTsKfQpleGl0KCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgokZGlzcGxheSA9IHN0cnRvbG93ZXIoXGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdkaXNwbGF5JywnZnVsbGNhbGVuZGFyJykpOwpzd2l0Y2goJGRpc3BsYXkpIHsKY2FzZSAnZXZlbnQnOgogICAgcmVxdWlyZShfX0RJUl9fLicvZnVuY3Rpb24uZGlzcGxheWV2ZW50LnBocCcpOwogICAgYnJlYWs7CgpjYXNlICdtb250aCc6CmNhc2UgJ21vbnRobGlzdCc6CmNhc2UgJ2xpc3QnOgogICAgJHBhcmFtc1snbGlzdHR5cGUnXSA9ICdtb250aCc7CiAgICByZXF1aXJlKF9fRElSX18uJy9hY3Rpb24ubGlzdC5waHAnKTsKICAgIGJyZWFrOwoKY2FzZSAnZGF5bGlzdCc6CiAgICAkcGFyYW1zWydsaXN0dHlwZSddID0gJ2RheSc7CiAgICByZXF1aXJlKF9fRElSX18uJy9hY3Rpb24ubGlzdC5waHAnKTsKICAgIGJyZWFrOwoKY2FzZSAnd2Vla2xpc3QnOgogICAgJHBhcmFtc1snbGlzdHR5cGUnXSA9ICd3ZWVrJzsKICAgIHJlcXVpcmUoX19ESVJfXy4nL2FjdGlvbi5saXN0LnBocCcpOwogICAgYnJlYWs7CgpjYXNlICd5ZWFybGlzdCc6CiAgICAkcGFyYW1zWydsaXN0dHlwZSddID0gJ3llYXInOwogICAgcmVxdWlyZShfX0RJUl9fLicvYWN0aW9uLmxpc3QucGhwJyk7CiAgICBicmVhazsKCmNhc2UgJ3Bhc3RsaXN0JzoKICAgICRwYXJhbXNbJ2xpc3R0eXBlJ10gPSAncGFzdGxpc3QnOwogICAgcmVxdWlyZShfX0RJUl9fLicvYWN0aW9uLmxpc3QucGhwJyk7CiAgICBicmVhazsKCmNhc2UgJ3VwY29taW5nbGlzdCc6CiAgICAkcGFyYW1zWydsaXN0dHlwZSddID0gJ3VwY29taW5nbGlzdCc7CiAgICByZXF1aXJlKF9fRElSX18uJy9hY3Rpb24ubGlzdC5waHAnKTsKICAgIGJyZWFrOwoKY2FzZSAnY2FsZW5kYXInOgpjYXNlICdmdWxsY2FsZW5kYXInOgogICByZXF1aXJlKF9fRElSX18uJy9hY3Rpb24uZnVsbGNhbGVuZGFyLnBocCcpOwogICBicmVhazsKCmRlZmF1bHQ6CiAgIGVjaG8gIkNhbGVuZGFyOiB1bmtub3duIGRpc3BsYXkgYXR0cmlidXRlICckZGlzcGxheSchIjsKICAgYnJlYWs7Cn0K]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgQ2FsZW5kYXInKSAmJiAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignQWRkIENhbGVuZGFyIEV2ZW50cycpICYmCiAgICAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignRWRpdCBNeSBDYWxlbmRhciBFdmVudHMnKSApIGV4aXQ7CgovLyBjb3VsZCBpbnNlcnQgdGhlIGZpbGUgaGVyZSwgYnV0IGZvciBub3cgbGV0cyBsZWF2ZSBpdC4KcmVxdWlyZV9vbmNlKF9fRElSX18uJy9mdW5jdGlvbi5hZG1pbmRpc3BsYXltYW5hZ2VldmVudHMucGhwJyk7Cg==]]></data>
	</file>
	<file>
	  <filename>/action.deleteevents.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKJHRoaXMtPlNldEN1cnJlbnRUYWIoJ2RlZmF1bHRhZG1pbicpOwoKJGV2ZW50X2lkcyA9IGFycmF5KCk7CmlmKCBpc3NldCgkcGFyYW1zWyd0YWcnXSkgKSAkZXZlbnRfaWRzID0gJHBhcmFtc1sndGFnJ107CgppZiggY291bnQoJGV2ZW50X2lkcykgPT0gMCApIHsKICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX25vdGhpbmdzZWxlY3RlZCcpKTsKICAkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCk7Cn0KCiRuZGVsZXRlZCA9IDA7CmZvcmVhY2goICRldmVudF9pZHMgYXMgJGV2ZW50X2lkICkKewogICRyZXMgPSBjZ2NhbGVuZGFyX3V0aWxzOjpkZWxldGVfZXZlbnQoJGV2ZW50X2lkKTsKICBpZiggJHJlcyApICRuZGVsZXRlZCsrOwp9CgppZiggJG5kZWxldGVkID09IDAgKSB7CiAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9ub25lZGVsZXRlZCcpKTsKfQplbHNlIGlmKCAkbmRlbGV0ZWQgPCBjb3VudCgkZXZlbnRfaWRzKSApIHsKICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX3NvbWVkZWxldGVkJykpOwp9CmVsc2UgewogICR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCd0YWdnZWRkZWxldGVkJykpOwp9CiR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoKTsKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.delete_event.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCnRyeSB7CiAgICAkZmV1ID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCdGcm9udEVuZFVzZXJzJyk7CiAgICBpZiggISRmZXUgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDYW5ub3QgZGVsZXRlIGFuIGV2ZW50IGZyb20gdGhlIGZyb250ZW5kIHdpdGhvdXQgYmVpbmcgbG9nZ2VkIGluIHRvIHRoZSBGRVUgbW9kdWxlJyk7CgogICAgJGZldV91aWQgPSAkZmV1LT5Mb2dnZWRJbklkKCk7CiAgICBpZiggJGZldV91aWQgPCAxICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignQ2Fubm90IGRlbGV0ZSBhbiBldmVudCBmcm9tIHRoZSBmcm9udGVuZCB3aXRob3V0IGJlaW5nIGxvZ2dlZCBpbiB0byB0aGUgRkVVIG1vZHVsZScpOwoKICAgICRldmVudF9pZCA9IFxjZ2VfcGFyYW06OmdldF9pbnQoJHBhcmFtcywnZXZlbnRfaWQnKTsKICAgIGlmKCAkZXZlbnRfaWQgPCAxICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignSW52YWxpZCBldmVudCBpZCBwYXNzZWQgdG8gZGVsZXRlX2V2ZW50IGFjdGlvbicpOwoKICAgICRldmVudCA9IG51bGw7CiAgICBpZiggJHRoaXMtPkhhdmVNYW5hZ2VSaWdodCgpICkgewogICAgICAgICRldmVudCA9ICR0aGlzLT5HZXRFdmVudCgkZXZlbnRfaWQpOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJGV2ZW50ID0gJHRoaXMtPkdldEV2ZW50KCRldmVudF9pZCwkZmV1X3VpZCk7CiAgICAgICAgaWYoICRldmVudFsnZXZlbnRfY3JlYXRlZF9ieSddICE9ICRmZXVfdWlkICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignUGVybWlzc2lvbiBEZW5pZWQnKTsKICAgIH0KICAgIGlmKCAkZXZlbnRbJ2V2ZW50X2lkJ10gIT0gJGV2ZW50X2lkICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignRXZlbnQgbm90IGZvdW5kJyk7CgogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2NhbF9jYW5jZWwnXSkgKSB7CiAgICAgICAgJHRoaXMtPlJlZGlyZWN0Q29udGVudCgkcmV0dXJuaWQpOwogICAgfQogICAgZWxzZSBpZiggaXNzZXQoJHBhcmFtc1snY2FsX3N1Ym1pdCddKSApIHsKICAgICAgICAkcmVzID0gY2djYWxlbmRhcl91dGlsczo6ZGVsZXRlX2V2ZW50KCRldmVudF9pZCk7CiAgICAgICAgJHRoaXMtPlJlZGlyZWN0Q29udGVudCgkcmV0dXJuaWQpOwogICAgfQoKICAgICR0aGV0ZW1wbGF0ZSA9IFxjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnZGVsZXRlZXZlbnR0ZW1wbGF0ZScpOwogICAgaWYoICEkdGhldGVtcGxhdGUgKSB7CiAgICAgICAgJHRwbCA9IENtc0xheW91dFRlbXBsYXRlOjpsb2FkX2RmbHRfYnlfdHlwZSgnQ0dDYWxlbmRhcjo6ZGVsZXRlZXZlbnQnKTsKICAgICAgICBpZiggIWlzX29iamVjdCgkdHBsKSApIHsKICAgICAgICAgICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnTm8gZGVmYXVsdCBkZWxldGUgZXZlbnQgdGVtcGxhdGUgZm91bmQnKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkdGhldGVtcGxhdGUgPSAkdHBsLT5nZXRfbmFtZSgpOwogICAgICAgIHVuc2V0KCR0cGwpOwogICAgfQogICAgJHRwbCA9ICRzbWFydHktPkNyZWF0ZVRlbXBsYXRlKCR0aGlzLT5HZXRUZW1wbGF0ZVJlc291cmNlKCR0aGV0ZW1wbGF0ZSksbnVsbCxudWxsLCRzbWFydHkpOwogICAgJHRwbC0+YXNzaWduKCdmb3Jtc3RhcnQnLCR0aGlzLT5DR0NyZWF0ZUZvcm1TdGFydCgkaWQsJ2RlbGV0ZV9ldmVudCcsJHJldHVybmlkLCRwYXJhbXMpKTsKICAgICR0cGwtPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiAgICAkdHBsLT5hc3NpZ24oJ2V2ZW50JywkZXZlbnQpOwogICAgJHRwbC0+ZGlzcGxheSgpOwp9CmNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgZWNobyAkdGhpcy0+RGlzcGxheUVycm9yTWVzc2FnZSgkZS0+R2V0TWVzc2FnZSgpKTsKfQoKIwojIEVPRgojCg==]]></data>
	</file>
	<file>
	  <filename>/action.fullcalendar.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiR0aGV0ZW1wbGF0ZSA9IFxjZ2NhbGVuZGFyX3V0aWxzOjpmaW5kX2xheW91dF90ZW1wbGF0ZSgkcGFyYW1zLCdmdWxsY2FsZW5kYXJ0ZW1wbGF0ZScsJ0NHQ2FsZW5kYXI6OmZ1bGxjYWxlbmRhcicpOwokdHBsID0gJHNtYXJ0eS0+Q3JlYXRlVGVtcGxhdGUoJHRoaXMtPkdldFRlbXBsYXRlUmVzb3VyY2UoJHRoZXRlbXBsYXRlKSxudWxsLG51bGwsJHNtYXJ0eSk7CiRvcmlnX2xvY2FsZV9pbmZvID0gJGxvY2FsZV9pbmZvID0gY2djYWxlbmRhcl91dGlsczo6Z2V0X2xvY2FsZV9kYXRlcygpOwpmb3JlYWNoKCAkbG9jYWxlX2luZm8gYXMgJGtleSA9PiAmJHZhbHVlICkgewogICAgJHZhbHVlID0ganNvbl9lbmNvZGUoJHZhbHVlKTsKfQoKJGNhdGVnb3J5ID0gXGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdjYXRlZ29yeScpOwokdHBsLT5hc3NpZ24oJ2FsbF9jYXRlZ29yaWVzJyxcQ0dDYWxlbmRhclxjYXRlZ29yeTo6Z2V0X2NhdGVnb3JpZXMoVFJVRSkpOwokdHBsLT5hc3NpZ24oJ2ZpcnN0ZGF5b2Z3ZWVrJywoaW50KSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZmlyc3RkYXlvZndlZWsnLDEpKTsKJHRwbC0+YXNzaWduKCdkYXRlc3RyaW5ncycsJGxvY2FsZV9pbmZvKTsKJHRwbC0+YXNzaWduKCdkYXRlc3RyaW5nc2pzb24nLGpzb25fZW5jb2RlKCRvcmlnX2xvY2FsZV9pbmZvKSk7CiR0cGwtPmFzc2lnbigndGV4dF93ZWVrJywkdGhpcy0+TGFuZygnd2VlaycpKTsKJHRwbC0+YXNzaWduKCd0ZXh0X21vbnRoJywkdGhpcy0+TGFuZygnbW9udGgnKSk7CiR0cGwtPmFzc2lnbigndGV4dF9kYXknLCR0aGlzLT5MYW5nKCdkYXknKSk7CiR0cGwtPmFzc2lnbigndGV4dF90b2RheScsJHRoaXMtPkxhbmcoJ3RvZGF5JykpOwokdHBsLT5hc3NpZ24oJ2RmbHRfZmdjb2xvcicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RmbHRfZmdjb2xvcicsJyNmZmZmZmYnKSk7CiR0cGwtPmFzc2lnbignZGZsdF9iZ2NvbG9yJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGZsdF9iZ2NvbG9yJywnIzAwOTkwMCcpKTsKCiRkZXRhaWxwYWdlID0gJHJldHVybmlkOwokZGV0YWlscGFnZV9zdHIgPSBcY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ2RldGFpbHBhZ2UnKTsKaWYoICRkZXRhaWxwYWdlX3N0ciApICRkZXRhaWxwYWdlID0gJHRoaXMtPnJlc29sdmVfYWxpYXNfb3JfaWQoJGRldGFpbHBhZ2Vfc3RyLCRkZXRhaWxwYWdlKTsKCiRwYXJtcyA9IGFycmF5KCk7CiRwYXJtc1snZGV0YWlscGFnZSddID0gJGRldGFpbHBhZ2U7CmlmKCAkY2F0ZWdvcnkgKSAkcGFybXNbJ2NhdGVnb3J5J10gPSAkY2F0ZWdvcnk7CiRmZXRjaF91cmwgPSAkdGhpcy0+Y3JlYXRlX3VybCgnY250bnQwMScsJ2FqYXhfZmV0Y2hldmVudHMnLCRyZXR1cm5pZCwkcGFybXMpOwokZmV0Y2hfdXJsID0gc3RyX3JlcGxhY2UoJ2FtcDsnLCcnLCRmZXRjaF91cmwpOwoKJHRwbC0+YXNzaWduKCdmZXRjaF91cmwnLCRmZXRjaF91cmwpOwokdHBsLT5hc3NpZ24oJ2RmbHRfZmdjb2xvcicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RmbHRfZmdjb2xvcicsJyNmZmZmZmYnKSk7CiR0cGwtPmFzc2lnbignZGZsdF9iZ2NvbG9yJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGZsdF9iZ2NvbG9yJywnIzAwOTkwMCcpKTsKJHRwbC0+YXNzaWduKCdob2xpZGF5X2ZnY29sb3InLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdob2xpZGF5Zmdjb2xvcicsJyMwMDAwMDAnKSk7CiR0cGwtPmFzc2lnbignaG9saWRheV9iZ2NvbG9yJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaG9saWRheWJnY29sb3InLCcjY2NmZmZmJykpOwokdHBsLT5hc3NpZ24oJ2RldGFpbHBhZ2UnLCRkZXRhaWxwYWdlKTsKJHRwbC0+ZGlzcGxheSgpOwoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.importtemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLy8gZHVtbXkgcGhwIGZpbGUKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.list.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiRkZXRhaWxwYWdlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlZmF1bHRjYWxlbmRhcnBhZ2UnLCRyZXR1cm5pZCk7CiRkZXRhaWxwYWdlPSgkZGV0YWlscGFnZT4wKT8kZGV0YWlscGFnZTokcmV0dXJuaWQ7CmlmIChpc3NldCgkcGFyYW1zWydkZXRhaWxwYWdlJ10pKSAkZGV0YWlscGFnZSA9ICR0aGlzLT5yZXNvbHZlX2FsaWFzX29yX2lkKCRwYXJhbXNbJ2RldGFpbHBhZ2UnXSwkZGV0YWlscGFnZSk7CiR0aGV0ZW1wbGF0ZSA9IFxjZ2NhbGVuZGFyX3V0aWxzOjpmaW5kX2xheW91dF90ZW1wbGF0ZSgkcGFyYW1zLCdsaXN0dGVtcGxhdGUnLCdDR0NhbGVuZGFyOjpldmVudGxpc3QnKTsKCiR5ZWFyID0gJG1vbnRoID0gJGRheSA9ICR3ZWVrID0gJG9yaWdfeWVhciA9ICRvcmlnX3dlZWsgPSAkb3JpZ19tb250aCA9ICRvcmlnX2RheSA9IG51bGw7CiRsaXN0dHlwZSA9IFxjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnbGlzdHR5cGUnLCdtb250aCcpOwokcmV2ZXJzZSA9IFxjZ2VfcGFyYW06OmdldF9ib29sKCRwYXJhbXMsJ3JldmVyc2UnKTsKJGxpbWl0ID0gbWluKDUwMDAsXGNnZV9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCdsaW1pdCcsMTAwMCkpOwokY2F0ZWdvcnkgPSBodG1sX2VudGl0eV9kZWNvZGUoaHRtbF9lbnRpdHlfZGVjb2RlKFxjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywgJ2NhdGVnb3J5JywgbnVsbCkpKTsKCi8vIGJ1aWxkIHRoZSBpbml0aWFsIGxpc3Qgb2YgcGFyYWV0ZXJzIHRoYXQgd2lsbCBiZSB1c2VkIG9uIGFsbCBuYXZpZ2F0aW9uIGxpbmtzCiRuYXZwYXJtcyA9IGFycmF5KCk7CmlmKCBpc3NldCgkcGFyYW1zWydsaXN0dGVtcGxhdGUnXSkgKSAkbmF2cGFybXNbJ2xpc3R0ZW1wbGF0ZSddID0gJHBhcmFtc1snbGlzdHRlbXBsYXRlJ107CmlmKCBpc3NldCgkcGFyYW1zWydkZXRhaWxwYWdlJ10pICkgJG5hdnBhcm1zWydkZXRhaWxwYWdlJ10gPSAkcGFyYW1zWydkZXRhaWxwYWdlJ107CgppZiggaXNzZXQoJHBhcmFtc1snY2FsX29yaWdwYXJhbXMnXSkgKSB7CiAgICAvLyBwcm9sbHkgdGhlIHJlc3VsdCBvZiBhIHBhZ2luYXRpb24gbGluayBvciBzb21ldGhpbmcKICAgIC8vIHNldCBzb21lIGRlZmF1bHRzLCBidXQgYWxsb3cgcGFyYW1zIHRvIG92ZXJyaWRlIHRoZSBkYXRlIHN0dWZmLCBidXQgbm90IHRoZSB0ZW1wbGF0ZSBzdHVmZi4KICAgIGxpc3QoJGxpc3R0eXBlLCR5ZWFyLCRtb250aCwkZGF5LCR3ZWVrLCRyZXZlcnNlLCRsaW1pdCwkY2F0ZWdvcnkpID0gdW5zZXJpYWxpemUoYmFzZTY0X2RlY29kZShcY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ2NhbF9vcmlncGFyYW1zJykpKTsKICAgICRuYXZwYXJtc1snY2FsX29yaWdwYXJhbXMnXSA9ICRwYXJhbXNbJ2NhbF9vcmlncGFyYW1zJ107CiAgICAkb3JpZ19tb250aCA9ICRtb250aDsKICAgICRvcmlnX3dlZWsgPSAkd2VlazsKICAgICRvcmlnX2RheSA9ICRkYXk7CiAgICAkb3JpZ195ZWFyID0gJHllYXI7Cn0KCi8vIHdlIGRvIHRoZSBtYXggMCBzdHVmZi4uLiB0byBoYW5kbGUgLTEgaW4gbW9udGgsIHdlZWsgYW5kIGRheSBwYXJhbXMuCiR5ZWFyID0gXGNnZV9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCd5ZWFyJyxkYXRlKCdZJykpOwokbW9udGggPSBtYXgoMCxcY2dlX3BhcmFtOjpnZXRfaW50KCRwYXJhbXMsJ21vbnRoJyxkYXRlKCdtJykpKTsKJHdlZWsgPSBtYXgoMCxcY2dlX3BhcmFtOjpnZXRfaW50KCRwYXJhbXMsJ3dlZWsnLGRhdGUoJ1cnKSkpOwokZGF5ID0gbWF4KDAsXGNnZV9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCdkYXknLGRhdGUoJ2QnKSkpOwoKaWYoICFpc3NldCgkcGFyYW1zWydjYWxfb3JpZ3BhcmFtcyddKSApIHsKICAgIC8vIHJhdyBleGVjdXRpb24gb2YgdGhlIHZpZXcgKG5vdCB2aWEgYSBwYWdpbmF0aW9uIGxpbmsgb3Igc29tZXRoaW5nKSB3ZSBzdG9yZSB0aGUgb3JpZ3BhcmFtcwogICAgJG5hdnBhcm1zWydjYWxfb3JpZ3BhcmFtcyddID0gYmFzZTY0X2VuY29kZShzZXJpYWxpemUoYXJyYXkoJGxpc3R0eXBlLCR5ZWFyLCRtb250aCwkZGF5LCR3ZWVrLCRyZXZlcnNlLCRsaW1pdCwkY2F0ZWdvcnkpKSk7CiAgICAkb3JpZ19tb250aCA9ICRtb250aDsKICAgICRvcmlnX3dlZWsgPSAkd2VlazsKICAgICRvcmlnX2RheSA9ICRkYXk7CiAgICAkb3JpZ195ZWFyID0gJHllYXI7Cn0KCi8vIGdldCB0aGUgZXZlbnRzIGJhc2VkIG9uIHRoZSBsaXN0dHlwZSBhbmQgdGhlIHllYXIvbW9udGgvZGF5IHBhcmFtZXRlcnMuCiRoYXNfbmF2ID0gVFJVRTsKJHN0YXJ0X3RzID0gJGVuZF90cyA9IG51bGw7CnN3aXRjaCggJGxpc3R0eXBlICkgewpjYXNlICdkYXknOgogICAgLy8gZGlzcGxheSBhIGRheSB2aWV3IHNwZWNpZmllZCBieSBtb250aCwgZGF5LCBhbmQgeWVhcgogICAgLy8gc3RhcnQgYW5kIGVuZCBhcmUgZm9yIHRvZGF5CiAgICAkc3RhcnRfdHMgPSBta3RpbWUoMDAsMDAsMDEsJG1vbnRoLCRkYXksJHllYXIpOwogICAgJGVuZF90cyA9IG1rdGltZSgyMyw1OSw1OSwkbW9udGgsJGRheSwkeWVhcik7CiAgICAvLyBjb3JyZWN0ICRtb250aCwgJGRheSwgJHllYXIgaW5jYXNlIG9mIG5lZ2F0aXZlIG9yIGludmFsaWQgdmFsdWVzIChpLmU6ICAzMiBkYXlzIGluIEphbnVhcnkpCiAgICAkZGF5ID0gZGF0ZSgnZCcsJHN0YXJ0X3RzKTsKICAgICRtb250aCA9IGRhdGUoJ20nLCRzdGFydF90cyk7CiAgICAkeWVhciA9IGRhdGUoJ1knLCRzdGFydF90cyk7CiAgICBicmVhazsKCmNhc2UgJ3dlZWsnOgogICAgLy8gZGlzcGxhIGEgd2VlayB2aWV3IHNwZWNpZmllZCBieSB5ZWFyLCBhbmQgd2VlawogICAgLy8gZml4IHVwIHdlZWsgYW5kIHllYXIgaW5jYXNlIG9mIG5lZ2F0aXZlIG9yIGludmFsaWQgdmFsdWVzIChpLmU6IHdlZWsgNTMgb3Igd2VlayAwKQogICAgaWYoICR3ZWVrIDwgMSApIHsKICAgICAgICAkd2VlayA9IDUzOwogICAgICAgICR5ZWFyLS07CiAgICB9IGVsc2UgaWYoICR3ZWVrID4gNTMgKSB7CiAgICAgICAgJHdlZWsgPSAxOwogICAgICAgICR5ZWFyKys7CiAgICB9CiAgICAvLyBhZGp1c3QgZm9yIGZpcnN0IGRheSBvZiB3ZWVrCiAgICAkZmlyc3RfZGF5X29mX3dlZWsgPSAoaW50KSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZmlyc3RkYXlvZndlZWsnLDEpOwogICAgaWYoICRmaXJzdF9kYXlfb2Zfd2VlayA9PSAxICkgewogICAgICAgICRzZGF5ID0gMTsKICAgICAgICAkZWRheSA9IDc7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkc2RheSA9IDA7CiAgICAgICAgJGVkYXkgPSA2OwogICAgfQogICAgLy8gY2FsY3VsYXRlIHN0YXJ0IGFuZCBlbmQgdHMKICAgICRmbXQgPSAnJTA0ZC1XJTAyZC0lZCc7CiAgICAkc3RhcnRfdHMgPSBzdHJ0b3RpbWUoc3ByaW50ZigkZm10LCR5ZWFyLCR3ZWVrLCRzZGF5KSk7CiAgICAkZW5kX3RzID0gc3RydG90aW1lKHNwcmludGYoJGZtdCwkeWVhciwkd2VlaywkZWRheSkuJyAyMzo1OTo1OScpOwogICAgYnJlYWs7CgpjYXNlICdtb250aCc6CmRlZmF1bHQ6CiAgICAvLyBkZWZhdWx0LCBkaXNwbGF5IGEgbW9udGggdmlldwogICAgJGxpc3R0eXBlID0gJ21vbnRoJzsKICAgICRzdGFydF90cyA9IG1rdGltZSgwLDAsMCwkbW9udGgsMSwkeWVhcik7CiAgICAkbGFzdF9kYXlfb2ZfbW9udGggPSBkYXRlKCd0Jywkc3RhcnRfdHMpOwogICAgJGVuZF90cyA9IG1rdGltZSgyMyw1OSw1OSwkbW9udGgsJGxhc3RfZGF5X29mX21vbnRoLCR5ZWFyKTsKICAgIC8vIGZpeCB1cCBtb250aCBhbmQgeWVhciBpbiBjYXNlIG9mIGludmFsaWQgb3IgbmVnYXRpdmUgdmFsdWVzIChpLmU6IG1vbnRoIC0xIG9yIG1vbnRoIDEzKQogICAgJG1vbnRoID0gZGF0ZSgnbScsJHN0YXJ0X3RzKTsKICAgICR5ZWFyID0gZGF0ZSgnWScsJHN0YXJ0X3RzKTsKICAgIGJyZWFrOwoKY2FzZSAneWVhcic6CiAgICAkc3RhcnRfdHMgPSBta3RpbWUoMCwwLDAsMSwxLCR5ZWFyKTsKICAgICRlbmRfdHMgPSBta3RpbWUoMjMsNTksNTksMTIsMzEsJHllYXIpOwogICAgYnJlYWs7CgpjYXNlICdmdXR1cmUnOgpjYXNlICd1cGNvbWluZyc6CmNhc2UgJ3VwY29taW5nbGlzdCc6CiAgICAvLyBkaXNwbGF5IGZ1dHVyZSBldmVudHMKICAgICRsaXN0dHlwZSA9ICd1cGNvbWluZ2xpc3QnOwogICAgLy8gbm8gbmF2aWdhdGlvbiwgYW5kIG5vIHVzZSBvZiBtb250aC9kYXkveWVhciBwYXJhbXMKICAgICRzdGFydF90cyA9IG1rdGltZSgwLDAsMSk7ICAvLyBldmVyeXRoaW5nIGFmdGVyIHRoZSBzdGFydCBvZiB0aGUgZGF5CiAgICAkaGFzX25hdiA9IGZhbHNlOwogICAgYnJlYWs7CgpjYXNlICdwYXN0JzoKY2FzZSAncGFzdGxpc3QnOgogICAgLy8gZGlzcGxheSBwYXN0IGV2ZW50cwogICAgJGxpc3R0eXBlID0gJ3Bhc3RsaXN0JzsKICAgIC8vIG5vIG5hdmlnYXRpb24sIGFuZCBubyB1c2Ugb2YgbW9udGgvZGF5L3llYXIgcGFyYW1zCiAgICAkZW5kX3RzID0gbWt0aW1lKDAsMCwxKTsgIC8vIGV2ZXJ5dGhpbmcgYmVmb3JlIHRoZSBzdGFydCBvZiB0aGUgZGF5LgogICAgJGhhc19uYXYgPSBmYWxzZTsKICAgICRyZXZlcnNlID0gISRyZXZlcnNlOwogICAgYnJlYWs7Cn0KCiRldmVudHMgPSBudWxsOwokc3FsID0gY2djYWxlbmRhcl91dGlsczo6Z2V0X3F1ZXJ5KCRzdGFydF90cywkZW5kX3RzLCRjYXRlZ29yeSwkcmV2ZXJzZSwkbGltaXQpOwokZXZlbnRfaWRzID0gJGRiLT5HZXRDb2woY2djYWxlbmRhcl91dGlsczo6Z2V0X3F1ZXJ5KCRzdGFydF90cywkZW5kX3RzLCRjYXRlZ29yeSwkcmV2ZXJzZSwkbGltaXQpKTsKaWYoIGlzX2FycmF5KCRldmVudF9pZHMpICYmIGNvdW50KCRldmVudF9pZHMpICkgewogICAgJGxvYWRlciA9IG5ldyBjZ2NfZXZlbnRfbG9hZGVyKCRpZCwkZXZlbnRfaWRzLCRkZXRhaWxwYWdlLCRyZXZlcnNlKTsKICAgIGlmKCBpc3NldCgkcGFyYW1zWydldmVudHRlbXBsYXRlJ10pICkgJGxvYWRlci0+c2V0X2V2ZW50X3RlbXBsYXRlKCRwYXJhbXNbJ2V2ZW50dGVtcGxhdGUnXSk7CiAgICAkZXZlbnRzID0gJGxvYWRlci0+Z2V0X2V2ZW50cygpOwp9CgokdHBsID0gJHNtYXJ0eS0+Q3JlYXRlVGVtcGxhdGUoJHRoaXMtPkdldFRlbXBsYXRlUmVzb3VyY2UoJHRoZXRlbXBsYXRlKSxudWxsLG51bGwsJHNtYXJ0eSk7CiRuYXYgPSBudWxsOwppZiggJGhhc19uYXYgKSB7CiAgICAkbmF2ID0gYXJyYXkoKTsKICAgICRvcGFybXMgPSAkbmF2cGFybXM7CiAgICBzd2l0Y2goICRsaXN0dHlwZSApIHsKICAgIGNhc2UgJ2RheSc6CiAgICAgICAgJG9wYXJtc1snbW9udGgnXSA9ICRtb250aDsKICAgICAgICAkb3Bhcm1zWyd5ZWFyJ10gPSAkeWVhcjsKICAgICAgICBpZiggJGRheSA9PSAxICkgewogICAgICAgICAgICAkb3Bhcm1zWydkYXknXSA9IC0xOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJG9wYXJtc1snZGF5J10gPSAkZGF5IC0gMTsKICAgICAgICB9CiAgICAgICAgJG5hdlsncHJldl91cmwnXSA9ICR0aGlzLT5jcmVhdGVfdXJsKCRpZCwnbGlzdCcsJHJldHVybmlkLCRvcGFybXMpOwogICAgICAgICRvcGFybXNbJ2RheSddID0gJGRheSArIDE7CiAgICAgICAgJG5hdlsnbmV4dF91cmwnXSA9ICR0aGlzLT5jcmVhdGVfdXJsKCRpZCwnbGlzdCcsJHJldHVybmlkLCRvcGFybXMpOwogICAgICAgICRvcGFybXNbJ21vbnRoJ10gPSAkb3JpZ19tb250aDsKICAgICAgICAkb3Bhcm1zWydkYXknXSA9ICRvcmlnX2RheTsKICAgICAgICAkb3Bhcm1zWyd5ZWFyJ10gPSAkb3JpZ195ZWFyOwogICAgICAgICRuYXZbJ2hvbWVfdXJsJ10gPSAkdGhpcy0+Y3JlYXRlX3VybCgkaWQsJ2xpc3QnLCRyZXR1cm5pZCwkb3Bhcm1zKTsKICAgICAgICBicmVhazsKCiAgICBjYXNlICd3ZWVrJzoKICAgICAgICAkb3Bhcm1zWyd5ZWFyJ10gPSAkeWVhcjsKICAgICAgICBpZiggJHdlZWsgPT0gMSApIHsKICAgICAgICAgICAgJG9wYXJtc1snd2VlayddID0gLTE7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkb3Bhcm1zWyd3ZWVrJ10gPSAkd2VlayAtIDE7CiAgICAgICAgfQogICAgICAgICRuYXZbJ3ByZXZfdXJsJ10gPSAkdGhpcy0+Y3JlYXRlX3VybCgkaWQsJ2xpc3QnLCRyZXR1cm5pZCwkb3Bhcm1zKTsKICAgICAgICAkb3Bhcm1zWyd3ZWVrJ10gPSAkd2VlayArIDE7CiAgICAgICAgJG5hdlsnbmV4dF91cmwnXSA9ICR0aGlzLT5jcmVhdGVfdXJsKCRpZCwnbGlzdCcsJHJldHVybmlkLCRvcGFybXMpOwogICAgICAgICRvcGFybXNbJ3dlZWsnXSA9ICRvcmlnX3dlZWs7CiAgICAgICAgJG9wYXJtc1sneWVhciddID0gJG9yaWdfeWVhcjsKICAgICAgICAkbmF2Wydob21lX3VybCddID0gJHRoaXMtPmNyZWF0ZV91cmwoJGlkLCdsaXN0JywkcmV0dXJuaWQsJG9wYXJtcyk7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAneWVhcic6CiAgICAgICAgJG9wYXJtc1sneWVhciddID0gJHllYXIgLSAxOwogICAgICAgICRuYXZbJ3ByZXZfdXJsJ10gPSAkdGhpcy0+Y3JlYXRlX3VybCgkaWQsJ2xpc3QnLCRyZXR1cm5pZCwkb3Bhcm1zKTsKICAgICAgICAkb3Bhcm1zWyd5ZWFyJ10gPSAkeWVhciArIDE7CiAgICAgICAgJG5hdlsnbmV4dF91cmwnXSA9ICR0aGlzLT5jcmVhdGVfdXJsKCRpZCwnbGlzdCcsJHJldHVybmlkLCRvcGFybXMpOwogICAgICAgICRvcGFybXNbJ3llYXInXSA9ICRvcmlnX3llYXI7CiAgICAgICAgJG5hdlsnaG9tZV91cmwnXSA9ICR0aGlzLT5jcmVhdGVfdXJsKCRpZCwnbGlzdCcsJHJldHVybmlkLCRvcGFybXMpOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgJ21vbnRoJzoKICAgICAgICAkb3Bhcm1zWyd5ZWFyJ10gPSAkeWVhcjsKICAgICAgICBpZiggJG1vbnRoID09IDEgKSB7CiAgICAgICAgICAgICRvcGFybXNbJ21vbnRoJ10gPSAtMTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkb3Bhcm1zWydtb250aCddID0gJG1vbnRoIC0gMTsKICAgICAgICB9CiAgICAgICAgJG5hdlsncHJldl91cmwnXSA9ICR0aGlzLT5jcmVhdGVfdXJsKCRpZCwnbGlzdCcsJHJldHVybmlkLCRvcGFybXMpOwogICAgICAgICRvcGFybXNbJ21vbnRoJ10gPSAkbW9udGggKyAxOwogICAgICAgICRuYXZbJ25leHRfdXJsJ10gPSAkdGhpcy0+Y3JlYXRlX3VybCgkaWQsJ2xpc3QnLCRyZXR1cm5pZCwkb3Bhcm1zKTsKICAgICAgICAkb3Bhcm1zWydtb250aCddID0gJG9yaWdfbW9udGg7CiAgICAgICAgJG9wYXJtc1sneWVhciddID0gJG9yaWdfeWVhcjsKICAgICAgICAkbmF2Wydob21lX3VybCddID0gJHRoaXMtPmNyZWF0ZV91cmwoJGlkLCdsaXN0JywkcmV0dXJuaWQsJG9wYXJtcyk7CiAgICAgICAgYnJlYWs7CiAgICB9Cn0KCgovLyBvdGhlciBsYW5ndWFnZSBmaWVsZHMKJGRheV9uYW1lcyA9ICR0aGlzLT5HZXREYXlOYW1lcygpOwokZGF5X3Nob3J0X25hbWVzID0gJHRoaXMtPkdldERheVNob3J0TmFtZXMoKTsKJGxhbmcgPSAkdGhpcy0+R2V0TGFiZWxzKCk7CgovLyBhc3NpZ24gdG8gU21hcnR5CiR0cGwtPmFzc2lnbignYWxsX2NhdGVnb3JpZXMnLFxDR0NhbGVuZGFyXGNhdGVnb3J5OjpnZXRfY2F0ZWdvcmllcyhUUlVFKSk7CiR0cGwtPmFzc2lnbignZXZlbnRzJywgJGV2ZW50cyk7CiR0cGwtPmFzc2lnbignc3RhcnRfdHMnLCRzdGFydF90cyk7CiR0cGwtPmFzc2lnbignZW5kX3RzJywkZW5kX3RzKTsKJHRwbC0+YXNzaWduKCduYXYnLCRuYXYpOwokdHBsLT5hc3NpZ24oJ2RheV9uYW1lcycsICRkYXlfbmFtZXMpOwokdHBsLT5hc3NpZ24oJ2RheV9zaG9ydF9uYW1lcycsICRkYXlfc2hvcnRfbmFtZXMpOwokdHBsLT5hc3NpZ24oJ3JldmVyc2UnLCRyZXZlcnNlKTsKJHRwbC0+YXNzaWduKCdsaXN0dHlwZScsJGxpc3R0eXBlKTsKJHRwbC0+YXNzaWduKCdkYXknLCAkZGF5KTsKJHRwbC0+YXNzaWduKCdtb250aCcsICRtb250aCk7CiR0cGwtPmFzc2lnbignd2VlaycsJHdlZWspOwokdHBsLT5hc3NpZ24oJ3llYXInLCAkeWVhcik7CiR0cGwtPmFzc2lnbignbGFuZycsICRsYW5nKTsKJHRwbC0+YXNzaWduKCdmaWxlX2xvY2F0aW9uJyxjZ2NhbGVuZGFyX3V0aWxzOjpnZXRfdXBsb2FkX2xvY2F0aW9uKCkpOwokdHBsLT5kaXNwbGF5KCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/action.myevents.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCi8vCi8vIEluaXRpYWxpemF0aW9uCi8vCiRmZXUgPSAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoJ0Zyb250RW5kVXNlcnMnKTsKaWYoICFpc19vYmplY3QoJGZldSkgKSByZXR1cm47IC8vIG5vIGZldSBtb2R1bGUuCiRmZXVfdWlkID0gJGZldS0+TG9nZ2VkSW5JZCgpOwppZiggJGZldV91aWQgPD0gMCApIHJldHVybjsgLy8gbm90IGxvZ2dlZCBpbgoKJHRoZXRlbXBsYXRlID0gXGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdteWV2ZW50c3RlbXBsYXRlJyk7CmlmKCAhJHRoZXRlbXBsYXRlICkgewogICAgJHRwbCA9IENtc0xheW91dFRlbXBsYXRlOjpsb2FkX2RmbHRfYnlfdHlwZSgnQ0dDYWxlbmRhcjo6bXlldmVudHMnKTsKICAgIGlmKCAhaXNfb2JqZWN0KCR0cGwpICkgewogICAgICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ05vIGRlZmF1bHQgbXlldmVudHMgdGVtcGxhdGUgZm91bmQnKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICAkdGhldGVtcGxhdGUgPSAkdHBsLT5nZXRfbmFtZSgpOwogICAgdW5zZXQoJHRwbCk7Cn0KCiRkZXN0cGFnZSA9ICRyZXR1cm5pZDsKewogICAgJHRtcCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmcm9udGVuZF9yZWRpcmVjdHBhZ2UnLCcnKTsKICAgICR0bXAgPSAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJHRtcCk7CiAgICBpZiggaXNzZXQoJHBhcmFtc1snZWRpdHBhZ2UnXSkgKSAkdG1wID0gdHJpbSgkcGFyYW1zWydlZGl0cGFnZSddKTsKICAgIGlmKCAkdG1wICkgJHRtcCA9ICR0aGlzLT5yZXNvbHZlX2FsaWFzX29yX2lkKCR0bXApOwogICAgaWYoICR0bXAgKSAkZGVzdHBhZ2UgPSAkdG1wOwp9CgovLwovLyBHZXQgZGF0YQovLwokY2F0ZWdvcnlfaWRzID0gJyc7CmlmKCBpc3NldCgkcGFyYW1zWydjYXRlZ29yeSddKSAmJiAkcGFyYW1zWydjYXRlZ29yeSddICE9ICcnICkgewogICRjYXRlZ29yeSA9IGV4cGxvZGUoJywnLCRwYXJhbXNbJ2NhdGVnb3J5J10pOwogIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCRjYXRlZ29yeSk7ICRpKysgKSB7CiAgICAkY2F0ZWdvcnlbJGldID0gIiciLnRyaW0oJGNhdGVnb3J5WyRpXSkuIiciOwogIH0KICAkcXVlcnkgPSAnU0VMRUNUIGNhdGVnb3J5X2lkIEZST00gJy4kdGhpcy0+Y2F0ZWdvcmllc190YWJsZV9uYW1lLicgV0hFUkUgY2F0ZWdvcnlfbmFtZSBJTiAoJy5pbXBsb2RlKCcsJywkY2F0ZWdvcnkpLicpJzsKICAkY2F0ZWdvcnlfaWRzID0gJGRiLT5HZXRDb2woJHF1ZXJ5KTsKfQoKJHFwYXJtcyA9IGFycmF5KCk7CiR3aGVyZSAgPSBhcnJheSgpOwokam9pbnMgID0gYXJyYXkoKTsKJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy4kdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUuJyBldic7CiR3aGVyZVtdID0gJ2V2ZW50X2NyZWF0ZWRfYnkgPSA/JzsKJHdoZXJlW10gPSAnZXZlbnRfcGFyZW50X2lkIDwgMSc7CiRxcGFybXNbXSA9IChpbnQpJGZldV91aWQ7CmlmKCBpc19hcnJheSgkY2F0ZWdvcnlfaWRzKSAmJiBjb3VudCgkY2F0ZWdvcnlfaWRzKSA+IDAgKSB7CiAgJGpvaW5zW10gPSAnIExFRlQgSk9JTiAnLiR0aGlzLT5ldmVudHNfdG9fY2F0ZWdvcmllc190YWJsZV9uYW1lLicgZWMgT04gZXYuZXZlbnRfaWQgPSBlYy5ldmVudF9pZCc7CiAgJHdoZXJlW10gPSAnZWMuY2F0ZWdvcnlfaWQgSU4gKCcuaW1wbG9kZSgnLCcsJGNhdGVnb3J5X2lkcykuJyknOwp9CiRvcmRlciA9ICcgT1JERVIgQlkgZXZlbnRfbW9kaWZpZWRfZGF0ZSc7Ci8vIGJ1aWxkIHRoZSBxdWVyeS4KaWYoIGNvdW50KCRqb2lucykgKSAkcXVlcnkgLj0gaW1wbG9kZSgnICcsJGpvaW5zKTsKaWYoIGNvdW50KCR3aGVyZSkgKSAkcXVlcnkgLj0gJyBXSEVSRSAnLmltcGxvZGUoJyBBTkQgJywkd2hlcmUpOwokcXVlcnkgLj0gJG9yZGVyOwokZGF0YSA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5LCRxcGFybXMpOwoKLy8KLy8gR2l2ZSBkYXRhIHRvIHNtYXJ0eQovLwokdHBsID0gJHNtYXJ0eS0+Q3JlYXRlVGVtcGxhdGUoJHRoaXMtPkdldFRlbXBsYXRlUmVzb3VyY2UoJHRoZXRlbXBsYXRlKSxudWxsLG51bGwsJHNtYXJ0eSk7CiRzbWFydHktPmNsZWFyX2Fzc2lnbigncmVjb3JkcycpOwppZiggaXNfYXJyYXkoJGRhdGEpICYmIGNvdW50KCRkYXRhKSA+IDAgKSB7CiAgICBmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkZGF0YSk7ICRpKysgKSB7CiAgICAgICAgJHJlYyA9JiAkZGF0YVskaV07CiAgICAgICAgJHBhcm1zID0gJHBhcmFtczsKICAgICAgICB1bnNldCgkcGFybXNbJ3JldHVybmlkJ10pOwogICAgICAgIC8vJHBhcm1zWydyZXR1cm5faWQnXSA9ICRyZXR1cm5pZDsKICAgICAgICAkcGFybXNbJ2V2ZW50X2lkJ10gPSAkcmVjWydldmVudF9pZCddOwogICAgICAgICRyZWNbJ2VkaXRfdXJsJ10gPSAkdGhpcy0+Q3JlYXRlVVJMKCRpZCwnYWRkZWRpdF9ldmVudCcsJGRlc3RwYWdlLCRwYXJtcyk7CiAgICAgICAgJHJlY1snZGVsZXRlX3VybCddID0gJHRoaXMtPkNyZWF0ZVVSTCgkaWQsJ2RlbGV0ZV9ldmVudCcsJGRlc3RwYWdlLCRwYXJtcyk7CiAgICB9CiAgICAkdHBsLT5hc3NpZ24oJ3JlY29yZHMnLCRkYXRhKTsKfQokZ2lkID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Zyb250ZW5kX2dyb3VwJywnJyk7CmlmKCAkZ2lkICYmICRmZXUtPk1lbWJlck9mR3JvdXAoJGZldV91aWQsJGdpZCkgKSB7CiAgICAkdHBsLT5hc3NpZ24oJ2FkZF9ldmVudF91cmwnLCR0aGlzLT5DcmVhdGVVUkwoJGlkLCdhZGRlZGl0X2V2ZW50JywkcmV0dXJuaWQpKTsKfQokdHBsLT5kaXNwbGF5KCk7CgoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.search.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiMKIyBJbml0aWFsaXphdGlvbgojCiRkZXN0cGFnZSA9ICRyZXR1cm5pZDsKJGlubGluZSA9IDA7CiRzZWFyY2hfY2F0ZWdvcnkgPSAtMTsKJHNlYXJjaF9zdGFydF9kYXRlID0gdGltZSgpOwokc2VhcmNoX2VuZF9kYXRlID0gc3RydG90aW1lKCcrMSBtb250aCcsJHNlYXJjaF9zdGFydF9kYXRlKTsKJHNlYXJjaF90ZXh0PScnOwokc2VhcmNocmVzdWx0cyA9ICcnOwokZXJyb3IgPSAnJzsKJHVzZV9zZXNzaW9uID0gJyc7CgojCiMgU2V0dXAKIwokdGhldGVtcGxhdGUgPSBcY2djYWxlbmRhcl91dGlsczo6ZmluZF9sYXlvdXRfdGVtcGxhdGUoJHBhcmFtcywnc2VhcmNodGVtcGxhdGUnLCdDR0NhbGVuZGFyOjpzZWFyY2hmb3JtJyk7CiRpbmxpbmUgPSBcY2dlX3BhcmFtOjpnZXRfaW50KCRwYXJhbXMsJ2lubGluZScsMCk7CmlmKCBpc3NldCgkcGFyYW1zWydzZWFyY2hyZXN1bHRwYWdlJ10pICkgewogICAgJHRtcCA9ICR0aGlzLT5yZXNvbHZlX2FsaWFzX29yX2lkKCRwYXJhbXNbJ3NlYXJjaHJlc3VsdHBhZ2UnXSk7CiAgICBpZiggIWVtcHR5KCR0bXApICkgJGRlc3RwYWdlID0gJHRtcDsKfQppZiggJGRlc3RwYWdlICE9ICRyZXR1cm5pZCApICRpbmxpbmUgPSAwOwppZiggaXNzZXQoJHBhcmFtc1sndXNlX3Nlc3Npb24nXSkgKSB7CiAgICAkc2VhcmNoX3RleHQgPSAkdGhpcy0+c2Vzc2lvbl9nZXQoJHVzZV9zZXNzaW9uLidzZWFyY2hfdGV4dCcsJHNlYXJjaF90ZXh0KTsKICAgICRzZWFyY2hfY2F0ZWdvcnkgPSAkdGhpcy0+c2Vzc2lvbl9nZXQoJHVzZV9zZXNzaW9uLidzZWFyY2hfY2F0ZWdvcnknLCRzZWFyY2hfY2F0ZWdvcnkpOwogICAgJHNlYXJjaF9zdGFydF9kYXRlID0gJHRoaXMtPnNlc3Npb25fZ2V0KCR1c2Vfc2Vzc2lvbi4nc2VhcmNoX3N0YXJ0X2RhdGUnLCRzZWFyY2hfc3RhcnRfZGF0ZSk7CiAgICAkc2VhcmNoX2VuZF9kYXRlID0gJHRoaXMtPnNlc3Npb25fZ2V0KCR1c2Vfc2Vzc2lvbi4nc2VhcmNoX2VuZF9kYXRlJywkc2VhcmNoX2VuZF9kYXRlKTsKfQoKIwojIEdldCB0aGUgRGF0YQojCgoKCiMKIyBCdWlsZCB0aGUgZm9ybSBkYXRhCiMKJGNhdGVnb3J5cyA9IGFycmF5KCk7CiRjYXRlZ29yaWVzWy0xXSA9ICR0aGlzLT5MYW5nKCdjYWxfYW55X2NhdGVnb3J5Jyk7CnsKICAgICRxdWVyeSA9ICdTRUxFQ1QgY2F0ZWdvcnlfaWQsY2F0ZWdvcnlfbmFtZSBGUk9NICcuJHRoaXMtPmNhdGVnb3JpZXNfdGFibGVfbmFtZS4nIE9SREVSIEJZIGNhdGVnb3J5X29yZGVyIEFTQyc7CiAgICAkdG1wID0gJGRiLT5HZXRBcnJheSgkcXVlcnkpOwogICAgaWYoIGlzX2FycmF5KCR0bXApICkgewogICAgICAgIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCR0bXApOyAkaSsrICkgewogICAgICAgICAgICAkY2F0ZWdvcmllc1skdG1wWyRpXVsnY2F0ZWdvcnlfaWQnXV0gPSAkdG1wWyRpXVsnY2F0ZWdvcnlfbmFtZSddOwogICAgICAgIH0KICAgIH0KfQoKIwojIEdpdmUgRXZlcnl0aGluZyB0byBTbWFydHkKIwokdHBsID0gJHNtYXJ0eS0+Q3JlYXRlVGVtcGxhdGUoJHRoaXMtPkdldFRlbXBsYXRlUmVzb3VyY2UoJHRoZXRlbXBsYXRlKSxudWxsLG51bGwsJHNtYXJ0eSk7CiR0cGwtPmFzc2lnbignZm9ybXN0YXJ0JywkdGhpcy0+Q0dDcmVhdGVGb3JtU3RhcnQoJGlkLCdzZWFyY2hyZXN1bHRzJywkZGVzdHBhZ2UsJHBhcmFtcywkaW5saW5lKSk7CiR0cGwtPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiR0cGwtPmFzc2lnbignbGlzdF9jYXRlZ29yaWVzJywkY2F0ZWdvcmllcyk7CiR0cGwtPmFzc2lnbignc2VhcmNoX2NhdGVnb3J5Jywkc2VhcmNoX2NhdGVnb3J5KTsKJHRwbC0+YXNzaWduKCdzZWFyY2hfc3RhcnRfZGF0ZScsJHNlYXJjaF9zdGFydF9kYXRlKTsKJHRwbC0+YXNzaWduKCdzZWFyY2hfZW5kX2RhdGUnLCRzZWFyY2hfZW5kX2RhdGUpOwokdHBsLT5hc3NpZ24oJ3NlYXJjaF90ZXh0Jywkc2VhcmNoX3RleHQpOwokdHBsLT5kaXNwbGF5KCk7CgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.searchresults.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiMKIyBJbml0aWFsaXphdGlvbgojCiRwYWdlbnVtID0gMTsKJGxpbWl0ID0gMTAwMDsKJHNlYXJjaF90ZXh0ID0gJyc7CiRzZWFyY2hfdHlwZSA9ICdvcic7CgojCiMgU2V0dXAKIwokbGltaXQgPSBcY2dlX3BhcmFtOjpnZXRfaW50KCRwYXJhbXMsJ2ltaXQnLCRsaW1pdCk7CiRwYWdlbnVtID0gXGNnZV9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCdjYWxfcGFnZW51bScsJHBhZ2VudW0pOwoKIwojIEdldCBEYXRhCiMKCiMKIyBIYW5kbGUgRm9ybSBTdWJtaXNzaW9uCiMKaWYoIGlzc2V0KCRwYXJhbXNbJ2NhbF9zZWFyY2hfc3VibWl0J10pICkKewogICAgJHNlYXJjaF90eXBlID0gXGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdjYWxfc2VhcmNoX3R5cGUnKTsKICAgICRzZWFyY2hfdGV4dCA9IFxjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnY2FsX3NlYXJjaF90ZXh0Jyk7CiAgICAkc2VhcmNoX2NhdGVnb3J5ID0gXGNnZV9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCdjYWxfc2VhcmNoX2NhdGVnb3J5Jyk7CiAgICBpZiggaXNzZXQoJHBhcmFtc1snY2FsX3NlYXJjaF9zdGFydF9kYXRlX01vbnRoJ10pICkgewogICAgICAgICRzZWFyY2hfc3RhcnRfZGF0ZSA9IG1rdGltZShpc3NldCgkcGFyYW1zWydjYWxfc2VhcmNoX3N0YXJ0X2RhdGVfSG91ciddKT8oaW50KSRwYXJhbXNbJ2NhbF9zZWFyY2hfc3RhcnRfZGF0ZV9Ib3VyJ106MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNzZXQoJHBhcmFtc1snY2FsX3NlYXJjaF9zdGFydF9kYXRlX01pbnV0ZSddKT8oaW50KSRwYXJhbXNbJ2NhbF9zZWFyY2hfc3RhcnRfZGF0ZV9NaW51dGUnXTowLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSRwYXJhbXNbJ2NhbF9zZWFyY2hfc3RhcnRfZGF0ZV9Nb250aCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSRwYXJhbXNbJ2NhbF9zZWFyY2hfc3RhcnRfZGF0ZV9EYXknXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkkcGFyYW1zWydjYWxfc2VhcmNoX3N0YXJ0X2RhdGVfWWVhciddKTsKICAgIH0KICAgIGlmKCBpc3NldCgkcGFyYW1zWydjYWxfc2VhcmNoX2VuZF9kYXRlX01vbnRoJ10pICkgewogICAgICAgICRzZWFyY2hfZW5kX2RhdGUgPSBta3RpbWUoaXNzZXQoJHBhcmFtc1snY2FsX3NlYXJjaF9lbmRfZGF0ZV9Ib3VyJ10pPyhpbnQpJHBhcmFtc1snY2FsX3NlYXJjaF9lbmRfZGF0ZV9Ib3VyJ106MjMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc3NldCgkcGFyYW1zWydjYWxfc2VhcmNoX2VuZF9kYXRlX01pbnV0ZSddKT8oaW50KSRwYXJhbXNbJ2NhbF9zZWFyY2hfZW5kX2RhdGVfTWludXRlJ106NTksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkkcGFyYW1zWydjYWxfc2VhcmNoX2VuZF9kYXRlX01vbnRoJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSRwYXJhbXNbJ2NhbF9zZWFyY2hfZW5kX2RhdGVfRGF5J10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSRwYXJhbXNbJ2NhbF9zZWFyY2hfZW5kX2RhdGVfWWVhciddKTsKICAgIH0KCiAgICAvLyB2YWxpZGF0ZSByZXN1bHRzCiAgICBpZiggJHNlYXJjaF9lbmRfZGF0ZSA8ICRzZWFyY2hfc3RhcnRfZGF0ZSApIHsKICAgICAgICAkdG1wID0gJHNlYXJjaF9zdGFydF9kYXRlOwogICAgICAgICRzZWFyY2hfc3RhcnRfZGF0ZSA9ICRzZWFyY2hfZW5kX2RhdGU7CiAgICAgICAgJHNlYXJjaF9lbmRfZGF0ZSA9ICR0bXA7CiAgICB9CgogICAgaWYoICRzZWFyY2hfZW5kX2RhdGUgLSAkc2VhcmNoX3N0YXJ0X2RhdGUgPCA2MCApICRlcnJvciA9ICR0aGlzLT5MYW5nKCdlcnJvcl9zZWFyY2hfaW52YWxpZF9kYXRlcycpOwoKICAgIC8vIHN0b3JlIHRoZSByZXN1bHRzCiAgICBpZiggaXNzZXQoJHBhcmFtc1sndXNlX3Nlc3Npb24nXSkgICkgewogICAgICAgICR0aGlzLT5zZXNzaW9uX3B1dCgkdXNlX3Nlc3Npb24uJ3NlYXJjaF90ZXh0Jywkc2VhcmNoX3RleHQpOwogICAgICAgICR0aGlzLT5zZXNzaW9uX3B1dCgkdXNlX3Nlc3Npb24uJ3NlYXJjaF9jYXRlZ29yeScsJHNlYXJjaF9jYXRlZ29yeSk7CiAgICAgICAgJHRoaXMtPnNlc3Npb25fcHV0KCR1c2Vfc2Vzc2lvbi4nc2VhcmNoX3N0YXJ0X2RhdGUnLCRzZWFyY2hfc3RhcnRfZGF0ZSk7CiAgICAgICAgJHRoaXMtPnNlc3Npb25fcHV0KCR1c2Vfc2Vzc2lvbi4nc2VhcmNoX2VuZF9kYXRlJywkc2VhcmNoX2VuZF9kYXRlKTsKICAgIH0KCiAgICAvLyBkbyB0aGUgc2VhcmNoCiAgICBpZiggZW1wdHkoJGVycm9yKSApIHsKICAgICAgICAvLyBmaW5kIGFsbCB0aGUgc2VhcmNoYWJsZSBmaWVsZCBuYW1lcy4KICAgICAgICAkcXVlcnkgPSAnU0VMRUNUIGZpZWxkX25hbWUgRlJPTSAnLiR0aGlzLT5maWVsZHNfdGFibGVfbmFtZS4nIFdIRVJFIGZpZWxkX3NlYXJjaGFibGUgPSAxJzsKICAgICAgICAkc2VhcmNoYWJsZV9maWVsZHMgPSAkZGItPkdldENvbCgkcXVlcnkpOwoKICAgICAgICAvLyBhc3NlbWJsZSB0aGUgcXVlcnkgZmlyc3QuCiAgICAgICAgJGZyb20gPSBhcnJheSgpOwogICAgICAgICRmaWVsZHMgPSBhcnJheSgpOwogICAgICAgIC8vJHF1ZXJ5ID0gJ1NFTEVDVCBESVNUSU5DVCBldi5ldmVudF9pZCxldi5ldmVudF9wYXJlbnRfaWQsZXYuZXZlbnRfdGl0bGUnOyBGUk9NICcuJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lLicgZXYnOwogICAgICAgICR3aGVyZSA9IGFycmF5KCk7CiAgICAgICAgJHdoZXJlMiA9IGFycmF5KCk7CiAgICAgICAgJHdoZXJlMyA9IGFycmF5KCk7CiAgICAgICAgJGhhdmluZyA9IGFycmF5KCk7CiAgICAgICAgJGpvaW5zID0gYXJyYXkoKTsKICAgICAgICAkcXBhcm1zID0gYXJyYXkoKTsKICAgICAgICAkZGJfc3QgPSAkZGItPkRiVGltZVN0YW1wKCRzZWFyY2hfc3RhcnRfZGF0ZSk7CiAgICAgICAgJGRiX2V0ID0gJGRiLT5EYlRpbWVTdGFtcCgkc2VhcmNoX2VuZF9kYXRlKTsKCiAgICAgICAgJGZyb21bJ2V2J10gPSAkdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWU7CiAgICAgICAgJGZpZWxkc1tdID0gJ2V2LmV2ZW50X2lkJzsKICAgICAgICAkZmllbGRzW10gPSAnZXYuZXZlbnRfcGFyZW50X2lkJzsKICAgICAgICAkZmllbGRzW10gPSAnZXYuZXZlbnRfdGl0bGUnOwoKICAgICAgICAvLyBhdXRvbWF0aWMgZmlsdGVyaW5nIGJ5IGRhdGUuCiAgICAgICAgJHdoZXJlW10gPSAiKChldi5ldmVudF9kYXRlX3N0YXJ0IEJFVFdFRU4gJGRiX3N0IEFORCAkZGJfZXQpIE9SIChldi5ldmVudF9kYXRlX2VuZCBCRVRXRUVOICRkYl9zdCBhbmQgJGRiX2V0KSkiOwoKICAgICAgICBpZiggaXNfYXJyYXkoJHNlYXJjaGFibGVfZmllbGRzKSAmJiBjb3VudCgkc2VhcmNoYWJsZV9maWVsZHMpICkgewogICAgICAgICAgICAkdG1wID0gYXJyYXkoKTsKICAgICAgICAgICAgZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJHNlYXJjaGFibGVfZmllbGRzKTsgJGkrKyApIHsKICAgICAgICAgICAgICAgICR0bXBbXSA9ICInIi4kc2VhcmNoYWJsZV9maWVsZHNbJGldLiInIjsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyRmcm9tWydmdiddID0gJHRoaXMtPmV2ZW50X2ZpZWxkX3ZhbHVlc190YWJsZV9uYW1lOwogICAgICAgICAgICAkam9pbnNbXSA9ICdMRUZUIEpPSU4KICAgICAgICAgICAgICAgICAgICAgICAgKFNFTEVDVCBldmVudF9pZCxncm91cF9jb25jYXQoZmllbGRfdmFsdWUpIEFTIHZhbHMKICAgICAgICAgICAgICAgICAgICAgICAgIEZST00gJy4kdGhpcy0+ZXZlbnRfZmllbGRfdmFsdWVzX3RhYmxlX25hbWUuJwogICAgICAgICAgICAgICAgICAgICAgICAgV0hFUkUgZmllbGRfbmFtZSBJTiAoJy5pbXBsb2RlKCcsJywkdG1wKS4nKQogICAgICAgICAgICAgICAgICAgICAgICAgR1JPVVAgQlkgZXZlbnRfaWQpIEFTIGZ2IE9OIGV2LmV2ZW50X2lkID0gZnYuZXZlbnRfaWQnOwogICAgICAgIH0KCiAgICAgICAgaWYoICRzZWFyY2hfY2F0ZWdvcnkgPiAwICkgewogICAgICAgICAgICAvLyBmaWx0ZXJpbmcgYnkgY2F0ZWdvcnkKICAgICAgICAgICAgJHRtcDIgPSBhcnJheSgpOwogICAgICAgICAgICBmb3JlYWNoKCAkc2VhcmNoYWJsZV9maWVsZHMgYXMgJG9uZSApIHsKICAgICAgICAgICAgICAgICR0bXAyW10gPSAiJyIuJG9uZS4iJyI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHN0ciA9IGltcGxvZGUoJywnLCR0bXAyKTsKICAgICAgICAgICAgJGpvaW5zW10gPSAnTEVGVCBKT0lOICcuJHRoaXMtPmV2ZW50c190b19jYXRlZ29yaWVzX3RhYmxlX25hbWUuJyBlYyBPTiBlYy5ldmVudF9pZCA9IGV2LmV2ZW50X2lkJzsKICAgICAgICAgICAgJHdoZXJlW10gPSAnZWMuY2F0ZWdvcnlfaWQgPSA/JzsKICAgICAgICAgICAgJHFwYXJtc1tdID0gJHNlYXJjaF9jYXRlZ29yeTsKICAgICAgICB9CgogICAgICAgIGlmKCAhZW1wdHkoJHNlYXJjaF90ZXh0KSApIHsKICAgICAgICAgICAgaWYoICRzZWFyY2hfdHlwZSA9PSAnb3InICkgewogICAgICAgICAgICAgICAgJHdoZXJlMltdID0gJyhNQVRDSCAoZXYuZXZlbnRfdGl0bGUsZXYuZXZlbnRfc3VtbWFyeSxldi5ldmVudF9kZXRhaWxzKSBBR0FJTlNUICg/KSknOwogICAgICAgICAgICAgICAgJHFwYXJtc1tdID0gJHNlYXJjaF90ZXh0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJHdoZXJlMltdID0gJyhNQVRDSCAoZXYuZXZlbnRfdGl0bGUsZXYuZXZlbnRfc3VtbWFyeSxldi5ldmVudF9kZXRhaWxzKSBBR0FJTlNUICg/IElOIEJPT0xFQU4gTU9ERSkpJzsKICAgICAgICAgICAgICAgICRxcGFybXNbXSA9ICRzZWFyY2hfdGV4dDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYoIGlzX2FycmF5KCRzZWFyY2hhYmxlX2ZpZWxkcykgJiYgY291bnQoJHNlYXJjaGFibGVfZmllbGRzKSApIHsKICAgICAgICAgICAgLy8gc3BsaXQgYW5kIGNsZWFuIHVwIHRoZSBzZWFyY2ggd29yZHMuCiAgICAgICAgICAgICR0bXAgPSBleHBsb2RlKCcgJywkc2VhcmNoX3RleHQpOwogICAgICAgICAgICAkd29yZHMgPSBhcnJheSgpOwogICAgICAgICAgICBmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkdG1wKTsgJGkrKyApIHsKICAgICAgICAgICAgICAgICR0bXAyID0gdHJpbSgkdG1wWyRpXSk7CiAgICAgICAgICAgICAgICBpZiggISR0bXAyICkgY29udGludWU7CiAgICAgICAgICAgICAgICAkd29yZHNbXSA9ICclJy50cmltKCR0bXBbJGldKS4nJSc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCR3b3Jkcyk7ICRpKysgKSB7CiAgICAgICAgICAgICAgICAkd2hlcmUzW10gPSAnKGZ2LnZhbHMgTElLRSA/KSc7CiAgICAgICAgICAgICAgICAkcXBhcm1zW10gPSAkd29yZHNbJGldOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkcXVlcnkgPSAnU0VMRUNUIERJU1RJTkNUICcuaW1wbG9kZSgnLCcsJGZpZWxkcykuJyBGUk9NICc7CiAgICAgICAgewogICAgICAgICAgICAkdG1wID0gYXJyYXkoKTsKICAgICAgICAgICAgZm9yZWFjaCgkZnJvbSBhcyAkdGJsID0+ICRzdHIgKSB7CiAgICAgICAgICAgICAgICAkdG1wW10gPSAiICRzdHIgJHRibCI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHF1ZXJ5IC49ICIgIi5pbXBsb2RlKCcsJywkdG1wKTsKICAgICAgICB9CiAgICAgICAgaWYoIGNvdW50KCRqb2lucykgKSAkcXVlcnkgLj0gJyAnLmltcGxvZGUoJyAnLCRqb2lucyk7CiAgICAgICAgaWYoIGNvdW50KCR3aGVyZSkgfHwgJGNvdW50KCR3aGVyZTIpICkgJHF1ZXJ5IC49ICcgV0hFUkUgJzsKICAgICAgICBpZiggY291bnQoJHdoZXJlKSApICRxdWVyeSAuPSBpbXBsb2RlKCcgQU5EICcsJHdoZXJlKTsKICAgICAgICBpZiggY291bnQoJHdoZXJlMikgKSB7CiAgICAgICAgICAgICRleHByID0gJyBBTkQgJzsKICAgICAgICAgICAgaWYoICRzZWFyY2hfdHlwZSA9PSAnb3InICkgJGV4cHIgPSAnIE9SICc7CiAgICAgICAgICAgIGlmKCBjb3VudCgkd2hlcmUpICkgJHF1ZXJ5IC49ICcgQU5EICc7CiAgICAgICAgICAgICRxdWVyeSAuPSAnKCc7CiAgICAgICAgICAgICRxdWVyeSAuPSBpbXBsb2RlKCRleHByLCR3aGVyZTIpOwogICAgICAgICAgICBpZiggY291bnQoJHdoZXJlMykgKSB7CiAgICAgICAgICAgICAgICAkcXVlcnkgLj0gJyBPUiAnOwogICAgICAgICAgICAgICAgJHF1ZXJ5IC49ICcoJyAuIGltcGxvZGUoJGV4cHIsICR3aGVyZTMpIC4gJyknOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRxdWVyeSAuPSAnKSc7CiAgICAgICAgfQoKICAgICAgICBpZihpc3NldCgkcGFyYW1zWyd1bmlxdWVfb25seSddKSAmJiAoJHBhcmFtc1sndW5pcXVlX29ubHknXSkpICRxdWVyeSAuPSAnIEdST1VQIEJZIGV2LmV2ZW50X3RpdGxlJzsKCiAgICAgICAgaWYoIGNvdW50KCRoYXZpbmcpICkgewogICAgICAgICAgICAkcXVlcnkgLj0gJyBIQVZJTkcgJzsKICAgICAgICAgICAgJHF1ZXJ5IC49ICcoJyAuIGltcGxvZGUoJyBBTkQgJywkaGF2aW5nKS4gJyknOwogICAgICAgIH0KCiAgICAgICAgJHF1ZXJ5IC49ICcgT1JERVIgQlkgZXYuZXZlbnRfZGF0ZV9zdGFydCBBU0MnOwogICAgICAgICRzZWFyY2hyZXN1bHRzID0gJGRiLT5HZXRBcnJheSgkcXVlcnksJHFwYXJtcyk7CiAgICAgICAgaWYoICEkc2VhcmNocmVzdWx0cyAmJiAkZGItPkVycm9yTXNnKCkgIT0gJycgKSAkZXJyb3IgPSAkdGhpcy0+TGFuZygnZXJyb3JfcXVlcnlfZmFpbGVkJyk7CiAgICAgICAgJHNlYXJjaHJlc3VsdHMgPSBjZ2VfYXJyYXk6OmV4dHJhY3RfZmllbGQoJHNlYXJjaHJlc3VsdHMsJ2V2ZW50X2lkJyk7CiAgICB9Cn0KCiR0aGV0ZW1wbGF0ZSA9IFxjZ2NhbGVuZGFyX3V0aWxzOjpmaW5kX2xheW91dF90ZW1wbGF0ZSgkcGFyYW1zLCdzZWFyY2hyZXN1bHR0ZW1wbGF0ZScsJ0NHQ2FsZW5kYXI6OnNlYXJjaHJlc3VsdCcpOwokdHBsID0gJHNtYXJ0eS0+Q3JlYXRlVGVtcGxhdGUoJHRoaXMtPkdldFRlbXBsYXRlUmVzb3VyY2UoJHRoZXRlbXBsYXRlKSxudWxsLG51bGwsJHNtYXJ0eSk7Ci8vIGNhbGN1bGF0ZSBwYWdpbmF0aW9uIHN0dWZmCi8vIGFuZCB0aGUgc3Vic2V0IG9mIGV2ZW50IGlkcy4KJG51bXBhZ2VzID0gMDsKJG51bV9tYXRjaGVzID0gMDsKaWYoICFlbXB0eSgkc2VhcmNocmVzdWx0cykgKSB7CiAgICAkbnVtX21hdGNoZXMgPSBjb3VudCgkc2VhcmNocmVzdWx0cyk7CiAgICAkbnVtcGFnZXMgPSAoaW50KShjb3VudCgkc2VhcmNocmVzdWx0cykgLyAkbGltaXQpOwogICAgaWYoIGNvdW50KCRzZWFyY2hyZXN1bHRzKSAlICRsaW1pdCA+IDAgKSAkbnVtcGFnZXMrKzsKICAgICRzdGFydG9mZnNldCA9ICgkcGFnZW51bSAtIDEpKiRsaW1pdDsKICAgICRlbnRyaWVzID0gY2djYWxlbmRhcl91dGlsczo6ZXhwYW5kX2V2ZW50cygkc2VhcmNocmVzdWx0cywkcmV0dXJuaWQsJHBhcmFtcywkbGltaXQsJHN0YXJ0b2Zmc2V0KTsKICAgIGlmKCBpc19hcnJheSgkZW50cmllcykgJiYgY291bnQoJGVudHJpZXMpICkgewogICAgICAgICRwYXJtcyA9ICRwYXJhbXM7CiAgICAgICAgaWYoICRwYWdlbnVtID4gMSApIHsKICAgICAgICAgICAgJHBhcm1zWydjYWxfcGFnZW51bSddID0gJHBhZ2VudW0gLSAxOwogICAgICAgICAgICAkdHBsLT5hc3NpZ24oJ3ByZXZwYWdlX3VybCcsJHRoaXMtPkNyZWF0ZVVSTCgkaWQsJ3NlYXJjaHJlc3VsdHMnLCRyZXR1cm5pZCwkcGFybXMpKTsKICAgICAgICAgICAgJHBhcm1zWydjYWxfcGFnZW51bSddID0gMTsKICAgICAgICAgICAgJHRwbC0+YXNzaWduKCdmaXJzdHBhZ2VfdXJsJywkdGhpcy0+Q3JlYXRlVVJMKCRpZCwnc2VhcmNocmVzdWx0cycsJHJldHVybmlkLCRwYXJtcykpOwogICAgICAgIH0KICAgICAgICBpZiggJHBhZ2VudW0gPCAkbnVtcGFnZXMgKSB7CiAgICAgICAgICAgICRwYXJtc1snY2FsX3BhZ2VudW0nXSA9ICRwYWdlbnVtICsgMTsKICAgICAgICAgICAgJHRwbC0+YXNzaWduKCduZXh0cGFnZV91cmwnLCR0aGlzLT5DcmVhdGVVUkwoJGlkLCdzZWFyY2hyZXN1bHRzJywkcmV0dXJuaWQsJHBhcm1zKSk7CiAgICAgICAgICAgICRwYXJtc1snY2FsX3BhZ2VudW0nXSA9ICRudW1wYWdlczsKICAgICAgICAgICAgJHRwbC0+YXNzaWduKCdsYXN0cGFnZV91cmwnLCR0aGlzLT5DcmVhdGVVUkwoJGlkLCdzZWFyY2hyZXN1bHRzJywkcmV0dXJuaWQsJHBhcm1zKSk7CiAgICAgICAgfQogICAgICAgICR0cGwtPmFzc2lnbignZXZlbnRzJywkZW50cmllcyk7CiAgICB9Cn0KCiMKIyBHaXZlIEV2ZXJ5dGhpbmcgdG8gc21hcnR5CiMKJHRwbC0+YXNzaWduKCdudW1wYWdlcycsJG51bXBhZ2VzKTsKJHRwbC0+YXNzaWduKCdwYWdlbnVtJywkcGFnZW51bSk7CiR0cGwtPmFzc2lnbignc2VhcmNoX3N0YXJ0X2RhdGUnLCRzZWFyY2hfc3RhcnRfZGF0ZSk7CiR0cGwtPmFzc2lnbignc2VhcmNoX2VuZF9kYXRlJywkc2VhcmNoX2VuZF9kYXRlKTsKJHRwbC0+YXNzaWduKCdzZWFyY2hfY2F0ZWdvcnknLCRzZWFyY2hfY2F0ZWdvcnkpOwokdHBsLT5hc3NpZ24oJ3NlYXJjaF90ZXh0Jywkc2VhcmNoX3RleHQpOwokdHBsLT5kaXNwbGF5KCk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.storesession.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLy8gZHVtbXkgZmlsZS4=]]></data>
	</file>
	<file>
	  <filename>/CGCalendar.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgpmaW5hbCBjbGFzcyBDR0NhbGVuZGFyIGV4dGVuZHMgQ0dFeHRlbnNpb25zCnsKICB2YXIgJGNhdGVnb3JpZXNfdGFibGVfbmFtZTsKICB2YXIgJGV2ZW50c190b19jYXRlZ29yaWVzX3RhYmxlX25hbWU7CiAgdmFyICRldmVudHNfdGFibGVfbmFtZTsKICB2YXIgJGZpZWxkc190YWJsZV9uYW1lOwogIHZhciAkZXZlbnRfZmllbGRfdmFsdWVzX3RhYmxlX25hbWU7CiAgdmFyICRhZG1pbl90b29sc19sb2FkZWQ7CiAgc3RhdGljICRfY2FjaGVkX2ZpZWxkczsKCiAgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQogIHsKCXBhcmVudDo6X19jb25zdHJ1Y3QoKTsKCSR0aGlzLT5BZGRJbWFnZURpcignaW1hZ2VzJyk7CgoJJHRoaXMtPmNhdGVnb3JpZXNfdGFibGVfbmFtZSA9IGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfY2djYWxlbmRhcl9jYXRlZ29yaWVzJzsKCSR0aGlzLT5ldmVudHNfdG9fY2F0ZWdvcmllc190YWJsZV9uYW1lID0gY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfY2djYWxlbmRhcl9ldmVudHNfdG9fY2F0ZWdvcmllcyc7CgkkdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUgPSBjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9jZ2NhbGVuZGFyX2V2ZW50cyc7CgkkdGhpcy0+ZXZlbnRfZmllbGRfdmFsdWVzX3RhYmxlX25hbWUgPSBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX2NnY2FsZW5kYXJfZXZlbnRfZmllbGRfdmFsdWVzJzsKCSR0aGlzLT5maWVsZHNfdGFibGVfbmFtZSA9IGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfY2djYWxlbmRhcl9maWVsZHMnOwoJJHRoaXMtPmFkbWluX3Rvb2xzX2xvYWRlZCA9IGZhbHNlOwogIH0KCiAgZnVuY3Rpb24gU2V0UGFyYW1ldGVycygpCiAgewoJJHRoaXMtPlJlZ2lzdGVyTW9kdWxlUGx1Z2luKCk7CgkkdGhpcy0+UmVzdHJpY3RVbmtub3duUGFyYW1zKCk7CgoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2RheScsQ0xFQU5fSU5UKTsKCgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZGlzcGxheScsQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdjYXRlZ29yeScsQ0xFQU5fU1RSSU5HKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdsaXN0dHlwZScsQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCd3ZWVrJyxDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ21vbnRoJyxDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3llYXInLENMRUFOX0lOVCk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgndXNlX3Nlc3Npb24nLENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnaW5saW5lJyxDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3JldmVyc2UnLENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZGV0YWlscGFnZScsQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdldmVudHRlbXBsYXRlJyxDTEVBTl9TVFJJTkcpOwoKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdldmVudF9pZCcsQ0xFQU5fSU5UKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdsaW1pdCcsQ0xFQU5fSU5UKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdmdWxsY2FsZW5kYXJ0ZW1wbGF0ZScsQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdldmVudHRlbXBsYXRlJyxDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2xpc3R0ZW1wbGF0ZScsQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdzZWFyY2h0ZW1wbGF0ZScsQ0xFQU5fU1RSSU5HKTsgLy8gdG9kbywgZG9jIHRoaXMuCgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnc2VhcmNocmVzdWx0dGVtcGxhdGUnLENMRUFOX1NUUklORyk7IC8vIHRvZG8sIGRvYyB0aGlzLgoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3NlYXJjaHJlc3VsdHBhZ2UnLENMRUFOX1NUUklORyk7IC8vIHRvZG8sIGRvYyB0aGlzCgoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ215ZXZlbnRzdGVtcGxhdGUnLENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZWRpdGV2ZW50dGVtcGxhdGUnLENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZGVsZXRlZXZlbnR0ZW1wbGF0ZScsQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdlZGl0cGFnZScsQ0xFQU5fSU5UKTsKCgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgndW5pcXVlX29ubHknLENMRUFOX0lOVCk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgncmV0dXJuX2lkJyxDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3Nob3dfaWNhbCcsQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdzaG93Y2hpbGRyZW4nLENMRUFOX0lOVCk7CgoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoQ0xFQU5fUkVHRVhQLicvY2FsXy4qLycsQ0xFQU5fU1RSSU5HKTsKCgkkcHJlZml4ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VybF9wcmVmaXgnKTsKCWlmKCAhJHByZWZpeCApICRwcmVmaXggPSAnY2FsZW5kYXInOwoJJHRoaXMtPlJlZ2lzdGVyUm91dGUoJy8nLiRwcmVmaXguJ1wvKD9QPHJldHVybmlkPlswLTldKylcLyg/UDxldmVudF9pZD5bMC05XSspLS4qJC8nLGFycmF5KCdhY3Rpb24nPT4nZGVmYXVsdCcsJ2Rpc3BsYXknPT4nZXZlbnQnKSk7CiAgfQoKICBmdW5jdGlvbiBJbml0aWFsaXplQWRtaW4oKQogIHsKCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ215ZXZlbnRzdGVtcGxhdGUnLCcnLCR0aGlzLT5MYW5nKCdoZWxwX3BhcmFtX215ZXZlbnRzdGVtcGxhdGUnKSk7CgkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdlZGl0ZXZlbnR0ZW1wbGF0ZScsJycsJHRoaXMtPkxhbmcoJ2hlbHBfcGFyYW1fZWRpdGV2ZW50dGVtcGxhdGUnKSk7CgkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdkZWxldGVldmVudHRlbXBsYXRlJywnJywkdGhpcy0+TGFuZygnaGVscF9wYXJhbV9kZWxldGVldmVudHRlbXBsYXRlJykpOwoJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignZWRpdHBhZ2UnLCcnLCR0aGlzLT5MYW5nKCdoZWxwX3BhcmFtX2VkaXRwYWdlJykpOwogIH0KCiAgZnVuY3Rpb24gSW5pdGlhbGl6ZUZyb250ZW5kKCkgeyAkdGhpcy0+U2V0UGFyYW1ldGVycygpOyB9CiAgZnVuY3Rpb24gR2V0TmFtZSgpIHsgcmV0dXJuICdDR0NhbGVuZGFyJzsgfQogIGZ1bmN0aW9uIEdldEF1dGhvcigpIHsgcmV0dXJuICdSb2JlcnQgQ2FtcGJlbGwnOyB9CiAgZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKSB7IHJldHVybiAnY2FsZ3V5MTAwMEBnbWFpbC5jb20nOyB9CiAgZnVuY3Rpb24gSXNQbHVnaW5Nb2R1bGUoKSB7IHJldHVybiB0cnVlOyB9CiAgZnVuY3Rpb24gSGFzQWRtaW4oKSB7IHJldHVybiB0cnVlOyB9CiAgZnVuY3Rpb24gR2V0RXZlbnREZXNjcmlwdGlvbiggJGV2ZW50bmFtZSApIHsgcmV0dXJuICR0aGlzLT5sYW5nKCdldmVudGRlc2MtJyAuICRldmVudG5hbWUpOyB9CiAgZnVuY3Rpb24gR2V0RXZlbnRIZWxwKCAkZXZlbnRuYW1lICkgewlyZXR1cm4gJHRoaXMtPmxhbmcoJ2V2ZW50aGVscC0nIC4gJGV2ZW50bmFtZSk7IH0KICBmdW5jdGlvbiBHZXRWZXJzaW9uKCkgeyByZXR1cm4gJzIuNSc7IH0KICBmdW5jdGlvbiBHZXREZXBlbmRlbmNpZXMoKSB7IHJldHVybiBbICdDR0V4dGVuc2lvbnMnPT4nMS41NS4zJywnQ0dTaW1wbGVTbWFydHknPT4nMi4xLjYnIF07IH0KICBmdW5jdGlvbiBHZXREZXNjcmlwdGlvbigkbGFuZyA9ICdlbl9VUycpIHsgcmV0dXJuICR0aGlzLT5MYW5nKCJkZXNjcmlwdGlvbiIpOyB9CiAgZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpIHsgcmV0dXJuICR0aGlzLT5MYW5nKCdjYWxfZGVzY3JpcHRpb24nKTsgfQogIGZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbigpIHsgcmV0dXJuICdjb250ZW50JzsgfQogIGZ1bmN0aW9uIE1pbmltdW1DTVNWZXJzaW9uKCkgeyByZXR1cm4gJzIuMS42JzsgfQogIGZ1bmN0aW9uIEdldENoYW5nZUxvZygpIHsgcmV0dXJuIGZpbGVfZ2V0X2NvbnRlbnRzKF9fRElSX18uJy9jaGFuZ2Vsb2cuaW5jJyk7IH0KICBmdW5jdGlvbiBJbnN0YWxsUG9zdE1lc3NhZ2UoKSB7IHJldHVybiAkdGhpcy0+TGFuZygnaW5zdGFsbF9wb3N0bWVzc2FnZScpOyB9CiAgZnVuY3Rpb24gVW5pbnN0YWxsUHJlTWVzc2FnZSgpIHsgcmV0dXJuICR0aGlzLT5MYW5nKCdhcmV5b3VzdXJlX3VuaW5zdGFsbCcpOyB9CiAgZnVuY3Rpb24gQWxsb3dBdXRvSW5zdGFsbCgpIHsgcmV0dXJuIEZBTFNFOyB9CiAgZnVuY3Rpb24gQWxsb3dBdXRvVXBncmFkZSgpIHsgcmV0dXJuIEZBTFNFOyB9CiAgZnVuY3Rpb24gVW5pbnN0YWxsUG9zdE1lc3NhZ2UoKSB7IHJldHVybiAkdGhpcy0+TGFuZygncG9zdF91bmluc3RhbGwnKTsgfQogIHB1YmxpYyBmdW5jdGlvbiBMYXp5TG9hZEZyb250ZW5kKCkgeyByZXR1cm4gRkFMU0U7IH0KICBwdWJsaWMgZnVuY3Rpb24gTGF6eUxvYWRBZG1pbigpIHsgcmV0dXJuIFRSVUU7IH0KCiAgZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkKICB7CgkkdG1wID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ZyaWVuZGx5bmFtZScpOwoJaWYoICEkdG1wICkgJHRtcCA9ICR0aGlzLT5MYW5nKCdjYWxfY2FsZW5kYXInKTsKCXJldHVybiAkdG1wOwogIH0KCiAgZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCkKICB7CiAgICAgIHJldHVybiAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgQ2FsZW5kYXInKSB8fAogICAgICAgICAgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignQWRkIENhbGVuZGFyIEV2ZW50cycpIHx8CiAgICAgICAgICAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdFZGl0IE15IENhbGVuZGFyIEV2ZW50cycpIHx8CiAgICAgICAgICAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgQ2FsZW5kYXIgQXR0cmlidXRlcycpIHx8CiAgICAgICAgICAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpOwogIH0KCiAgcHJvdGVjdGVkIGZ1bmN0aW9uIEhhdmVNYW5hZ2VSaWdodCgpCiAgewogICAgICBpZiggQ21zQXBwOjpnZXRfaW5zdGFuY2UoKS0+aXNfZnJvbnRlbmRfcmVxdWVzdCgpICkgewogICAgICAgICAgJGZldSA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0Zyb250RW5kVXNlcnMnKTsKICAgICAgICAgIGlmKCAhJGZldSApIHJldHVybiBGQUxTRTsgLy8gbm8gZmV1CiAgICAgICAgICAkZmV1X3VpZCA9ICRmZXUtPkxvZ2dlZEluSWQoKTsKICAgICAgICAgIGlmKCAkZmV1X3VpZCA8IDEgKSByZXR1cm4gRkFMU0U7IC8vIG5vdCBsb2dnZWQgaW4KICAgICAgICAgICRtYXN0ZXJfZ3JvdXAgPSAoaW50KSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZnJvbnRlbmRfbWFzdGVyZ3JvdXAnKTsKICAgICAgICAgIGlmKCAkbWFzdGVyX2dyb3VwID4gMCApIHsKICAgICAgICAgICAgICBpZiggJGZldS0+TWVtYmVyT2ZHcm91cCgkZmV1X3VpZCwkbWFzdGVyX2dyb3VwKSApIHJldHVybiBUUlVFOyAvLyBjYW4gbWFuYWdlIGFueSBncm91cAogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICB9CiAgICAgIGlmKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgQ2FsZW5kYXInKSApIHJldHVybiBUUlVFOyAvLyBjYW4gbWFuYWdlIGFueSBldmVudAogICAgICByZXR1cm4gRkFMU0U7CiAgfQoKICBwcm90ZWN0ZWQgZnVuY3Rpb24gQ2FuTWFuYWdlRXZlbnQoJGV2ZW50X2lkKQogIHsKICAgICAgJGV2ZW50X2lkID0gKGludCkgJGV2ZW50X2lkOwogICAgICBpZiggJHRoaXMtPkhhdmVNYW5hZ2VSaWdodCgpICkgcmV0dXJuIFRSVUU7CiAgICAgIGlmKCBDbXNBcHA6OmdldF9pbnN0YW5jZSgpLT5pc19mcm9udGVuZF9yZXF1ZXN0KCkgKSB7CiAgICAgICAgICAvLyBoYXZlIHRvIGNoZWNrIHRoZSBkYXRhYmFzZSBmb3Igb3duZXJzaGlwLgogICAgICAgICAgJGRiID0gXGNnZV91dGlsczo6Z2V0X2RiKCk7CiAgICAgICAgICAkc3FsID0gJ1NFTEVDVCBldmVudF9jcmVhdGVkX2J5IEZST00gJy4kdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUuJyBXSEVSRSBldmVudF9pZCA9ID8nOwogICAgICAgICAgJHJlcyA9IChpbnQpICRkYi0+R2V0T25lKCRzcWwsYXJyYXkoJGV2ZW50X2lkKSk7CiAgICAgICAgICBpZiggJHJlcyA9PSAkZmV1X3VpZCApIHJldHVybiBUUlVFOwogICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICB9CgogICAgICAvLyBhZG1pbiByZXF1ZXN0cwogICAgICBpZiggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignRWRpdCBNeSBDYWxlbmRhckV2ZW50cycpICkgewogICAgICAgICAgLy8gaGF2ZSB0byBjaGVjayB0aGUgZGF0YWJhc2UKICAgICAgICAgICR1c2VyX2lkID0gZ2V0X3VzZXJpZChGQUxTRSkgKiAtMSAtIDEwMDsKICAgICAgICAgICRkYiA9IFxjZ2VfdXRpbHM6OmdldF9kYigpOwogICAgICAgICAgJHNxbCA9ICdTRUxFQ1QgZXZlbnRfY3JlYXRlZF9ieSBGUk9NICcuJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lLicgV0hFUkUgZXZlbnRfaWQgPSA/JzsKICAgICAgICAgICRyZXMgPSAoaW50KSAkZGItPkdldE9uZSgkc3FsLGFycmF5KCRldmVudF9pZCkpOwogICAgICAgICAgaWYoICRyZXMgPT0gJHVzZXJfaWQgKSByZXR1cm4gVFJVRTsKICAgICAgfQogICAgICByZXR1cm4gRkFMU0U7CiAgfQoKICBwcm90ZWN0ZWQgZnVuY3Rpb24gR2V0RXZlbnQoJGV2ZW50X2lkLCR1aWQgPSAtMSkKICB7CiAgICAgICRleHBsb2RlMiA9IGZ1bmN0aW9uKCRkZWxpbSwkaW5fc3RyKSB7CiAgICAgICAgICAvLyBleHBsb2RlIGEgc3RyaW5nIGJ5IGV2ZXJ5IHNlY29uZCAsCiAgICAgICAgICAkdG1wID0gZXhwbG9kZSgkZGVsaW0sJGluX3N0cik7CiAgICAgICAgICAkb3V0ID0gW107CiAgICAgICAgICB3aGlsZSggJHRtcCApIHsKICAgICAgICAgICAgICAkb3V0W10gPSBpbXBsb2RlKCRkZWxpbSxhcnJheV9zcGxpY2UoJHRtcCwwLDIpKTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiAkb3V0OwogICAgICB9OwoKICAgICAgJHJzID0gbnVsbDsKICAgICAgJGV2ZW50X2lkID0gKGludCkgJGV2ZW50X2lkOwogICAgICAkdWlkID0gKGludCkgJHVpZDsKCiAgICAgIGlmKCAkZXZlbnRfaWQgPiAwICkgewogICAgICAgICAgJGRiID0gJHRoaXMtPkdldERiKCk7IC8qIEB2YXIgJGRiIEFET0Nvbm5lY3Rpb24gKi8KICAgICAgICAgICRzcWwgPSAnU0VMRUNUICogRlJPTSAnIC4gJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lIC4nIFdIRVJFIGV2ZW50X2lkID0gPyc7CiAgICAgICAgICAkcGFybXMgPSBhcnJheSgkZXZlbnRfaWQpOwogICAgICAgICAgaWYoICR1aWQgPiAwICYmICEkdGhpcy0+SGF2ZU1hbmFnZVJpZ2h0KCkgKSB7CiAgICAgICAgICAgICAgJHNxbCAuPSAnIEFORCBldmVudF9jcmVhdGVkX2J5ID0gPyc7CiAgICAgICAgICAgICAgJHBhcm1zW10gPSAkdWlkOwogICAgICAgICAgfQogICAgICAgICAgJHJzID0gJGRiLT5FeGVjdXRlKCRzcWwsJHBhcm1zKTsKICAgICAgfQoKICAgICAgaWYoICRycyAmJiAkcnMtPlJlY29yZENvdW50KCkgPiAwKSB7CiAgICAgICAgICAkcmVzdWx0ID0gJHJzLT5GZXRjaFJvdygpOwogICAgICAgICAgJHJlc3VsdFsnZXZlbnRfZGF0ZV9zdGFydF91dCddID0gJGRiLT5Vbml4VGltZVN0YW1wKCRyZXN1bHRbJ2V2ZW50X2RhdGVfc3RhcnQnXSk7CiAgICAgICAgICBpZiggaXNfbnVsbCgkcmVzdWx0WydldmVudF9kYXRlX2VuZCddKSB8fCAkcmVzdWx0WydldmVudF9kYXRlX2VuZCddID09ICcwMDAwLTAwLTAwIDAwOjAwOjAwJykgJHJlc3VsdFsnZXZlbnRfZGF0ZV9lbmQnXSA9IE5VTEw7CiAgICAgICAgICAkcmVzdWx0WydldmVudF9kYXRlX2VuZF91dCddID0gJGRiLT5Vbml4VGltZVN0YW1wKCRyZXN1bHRbJ2V2ZW50X2RhdGVfZW5kJ10pOwogICAgICAgICAgaWYoIGlzX251bGwoJHJlc3VsdFsnZXZlbnRfZGF0ZV9yZWN1cl9lbmQnXSkgfHwgJHJlc3VsdFsnZXZlbnRfZGF0ZV9yZWN1cl9lbmQnXSA9PSAnMDAwMC0wMC0wMCAwMDowMDowMCcgKSB7CiAgICAgICAgICAgICAgJHJlc3VsdFsnZXZlbnRfZGF0ZV9yZWN1cl9lbmQnXSA9IE5VTEw7CiAgICAgICAgICB9CiAgICAgICAgICAkcmVzdWx0WydldmVudF9kYXRlX3JlY3VyX2VuZF91dCddID0gJGRiLT5Vbml4VGltZVN0YW1wKCRyZXN1bHRbJ2V2ZW50X2RhdGVfcmVjdXJfZW5kJ10pOwogICAgICAgICAgJHJlc3VsdFsnZXZlbnRfcmVjdXJfY291bnQnXSA9ICRyZXN1bHRbJ2V2ZW50X3JlY3VyX25ldmVudHMnXTsKICAgICAgICAgICRyZXN1bHRbJ2V2ZW50X3JlY3VyX3dlZWtkYXlzJ10gPSAkZXhwbG9kZTIoJywnLCRyZXN1bHRbJ2V2ZW50X3JlY3VyX3dlZWtkYXlzJ10pOwogICAgICAgICAgJHJlc3VsdFsnZXZlbnRfcmVjdXJfbW9udGhkYXlzJ10gPSAkZXhwbG9kZTIoJywnLCRyZXN1bHRbJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyddKTsKICAgICAgICAgICRyZXN1bHRbJ2NhdGVnb3JpZXMnXSA9IGFycmF5KCk7CgogICAgICAgICAgLy8gbm93IHBpY2sgdXAgY2F0ZWdvcmllcwogICAgICAgICAgJHNxbCA9ICdTRUxFQ1QgY2F0ZWdvcnlfaWQgRlJPTSAnIC4gJHRoaXMtPmV2ZW50c190b19jYXRlZ29yaWVzX3RhYmxlX25hbWUgLiAnIFdIRVJFIGV2ZW50X2lkID0gPyc7CiAgICAgICAgICAkcnMgPSAkZGItPkV4ZWN1dGUoJHNxbCxhcnJheSgkZXZlbnRfaWQpKTsKICAgICAgICAgIGlmKCRycykgewogICAgICAgICAgICAgIHdoaWxlKCRyb3cgPSAkcnMtPkZldGNoUm93KCkpIHsKICAgICAgICAgICAgICAgICAgJHJlc3VsdFsnY2F0ZWdvcmllcyddW10gPSAkcm93WydjYXRlZ29yeV9pZCddOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KCiAgICAgICAgICAvLyBub3cgcGljayB1cCB0aGUgY3VzdG9tIGZpZWxkcwogICAgICAgICAgJHJlc3VsdFsnZmllbGRzJ10gPSBhcnJheSgpOwogICAgICAgICAgJHNxbCA9ICdTRUxFQ1QgZmllbGRfbmFtZSwgZmllbGRfdmFsdWUgRlJPTSAnIC4gJHRoaXMtPmV2ZW50X2ZpZWxkX3ZhbHVlc190YWJsZV9uYW1lIC4gJyBXSEVSRSBldmVudF9pZCA9ID8nOwogICAgICAgICAgJHJzID0gJGRiLT5HZXRBcnJheSgkc3FsLGFycmF5KCRldmVudF9pZCkpOwogICAgICAgICAgaWYoIGVtcHR5KCRycykgJiYgJHJlc3VsdFsnZXZlbnRfcGFyZW50X2lkJ10gPiAwICkgewogICAgICAgICAgICAgICRzcWwgPSAnU0VMRUNUIGZpZWxkX25hbWUsIGZpZWxkX3ZhbHVlIEZST00gJyAuICR0aGlzLT5ldmVudF9maWVsZF92YWx1ZXNfdGFibGVfbmFtZSAuICcgV0hFUkUgZXZlbnRfaWQgPSA/JzsKICAgICAgICAgICAgICAkcnMgPSAkZGItPkdldEFycmF5KCRzcWwsYXJyYXkoJHJlc3VsdFsnZXZlbnRfcGFyZW50X2lkJ10pKTsKICAgICAgICAgIH0KICAgICAgICAgIGlmKCBpc19hcnJheSgkcnMpICYmIGNvdW50KCRycykgKSB7CiAgICAgICAgICAgICAgZm9yZWFjaCggJHJzIGFzICRyb3cgKSB7CiAgICAgICAgICAgICAgICAgICRyZXN1bHRbJ2ZpZWxkcyddWyRyb3dbJ2ZpZWxkX25hbWUnXV0gPSAkcm93WydmaWVsZF92YWx1ZSddOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KCiAgICAgICAgICAvLyB0ZXN0IGlmIHRoaXMgaXMgYW4gYWxsIGRheSBldmVudC4KICAgICAgICAgIC8vIGN1eiB3ZSBkb24ndCBzdG9yZSB0aGF0IGluZm8gaW4gdGhlIGRhdGFiYXNlLgogICAgICAgICAgJHNkID0gZGF0ZSgneicsJHJlc3VsdFsnZXZlbnRfZGF0ZV9zdGFydF91dCddKTsKICAgICAgICAgICRzaCA9IGRhdGUoJ0cnLCRyZXN1bHRbJ2V2ZW50X2RhdGVfc3RhcnRfdXQnXSk7CiAgICAgICAgICAkc20gPSBkYXRlKCdpJywkcmVzdWx0WydldmVudF9kYXRlX3N0YXJ0X3V0J10pOwogICAgICAgICAgJGVkID0gZGF0ZSgneicsJHJlc3VsdFsnZXZlbnRfZGF0ZV9lbmRfdXQnXSk7CiAgICAgICAgICAkZWggPSBkYXRlKCdHJywkcmVzdWx0WydldmVudF9kYXRlX2VuZF91dCddKTsKICAgICAgICAgICRlbSA9IGRhdGUoJ2knLCRyZXN1bHRbJ2V2ZW50X2RhdGVfZW5kX3V0J10pOwogICAgICAgICAgJHJlc3VsdFsnYWxsX2RheV9ldmVudCddID0gJHJlc3VsdFsnZXZlbnRfYWxsX2RheSddOwogICAgICAgICAgJHJlc3VsdFsnYWx0X2VuZF9kYXRlJ10gPSAwOwogICAgICAgICAgaWYoICRyZXN1bHRbJ2V2ZW50X2RhdGVfc3RhcnRfdXQnXSA8ICRyZXN1bHRbJ2V2ZW50X2RhdGVfZW5kX3V0J10gKSAkcmVzdWx0WydhbHRfZW5kX2RhdGUnXSA9IDE7CiAgICAgICAgICAvL2lmKCAkc2QgIT0kZWQgKSAkcmVzdWx0WydhbHRfZW5kX2RhdGUnXSA9IDE7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgICAvLyBjcmVhdGUgYW4gZW1wdHkgcmVjb3JkCiAgICAgICAgICAkcmVzdWx0ID0gYXJyYXkoKTsKICAgICAgICAgICRyZXN1bHRbJ2V2ZW50X2lkJ10gPSAtMTsKICAgICAgICAgICRyZXN1bHRbJ2V2ZW50X3RpdGxlJ10gPSAnJzsKICAgICAgICAgICRyZXN1bHRbJ2V2ZW50X3N1bW1hcnknXSA9ICcnOwogICAgICAgICAgJHJlc3VsdFsnZXZlbnRfZGV0YWlscyddID0gJyc7CiAgICAgICAgICAkcmVzdWx0WydldmVudF9kYXRlX3N0YXJ0J10gPSBOVUxMOwogICAgICAgICAgJHJlc3VsdFsnZXZlbnRfZGF0ZV9lbmQnXSA9IE5VTEw7CiAgICAgICAgICAkcmVzdWx0WydldmVudF9kYXRlX3N0YXJ0X3V0J10gPSBzdHJ0b3RpbWUoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RmbHRfc3RhcnR0aW1lJykpOwogICAgICAgICAgJHJlc3VsdFsnZXZlbnRfZGF0ZV9lbmRfdXQnXSA9IE5VTEw7CiAgICAgICAgICAkcmVzdWx0WydldmVudF9jcmVhdGVkX2J5J10gPSAtMTsKICAgICAgICAgICRyZXN1bHRbJ2V2ZW50X2NyZWF0ZV9kYXRlJ10gPSBOVUxMOwogICAgICAgICAgJHJlc3VsdFsnZXZlbnRfbW9kaWZpZWRfZGF0ZSddID0gTlVMTDsKICAgICAgICAgICRyZXN1bHRbJ2V2ZW50X3JlY3VyX3BlcmlvZCddID0gJ25vbmUnOwogICAgICAgICAgJHJlc3VsdFsnZXZlbnRfZGF0ZV9yZWN1cl9lbmRfdXQnXSA9IE5VTEw7CiAgICAgICAgICAkcmVzdWx0WydldmVudF9kYXRlX3JlY3VyX2VuZCddID0gTlVMTDsKICAgICAgICAgICRyZXN1bHRbJ2V2ZW50X3JlY3VyX2ludGVydmFsJ10gPSAtMTsKICAgICAgICAgICRyZXN1bHRbJ2V2ZW50X3BhcmVudF9pZCddID0gLTE7CiAgICAgICAgICAkcmVzdWx0WydldmVudF9yZWN1cl9jb3VudCddID0gLTE7CiAgICAgICAgICAkcmVzdWx0WydldmVudF9yZWN1cl93ZWVrZGF5cyddID0gYXJyYXkoKTsKICAgICAgICAgICRyZXN1bHRbJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyddID0gYXJyYXkoKTsKICAgICAgICAgICRyZXN1bHRbJ2V2ZW50X2FsbG93c19vdmVybGFwJ10gPSAxOyAvLyBkZWZhdWx0IHRvIHllcy4KICAgICAgICAgICRyZXN1bHRbJ2NhdGVnb3JpZXMnXSA9IGFycmF5KCk7CiAgICAgICAgICAkcmVzdWx0WydmaWVsZHMnXSA9IGFycmF5KCk7CiAgICAgICAgICAkcmVzdWx0WydhbGxfZGF5X2V2ZW50J10gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGZsdF9hbGxkYXlldmVudCcpOwogICAgICAgICAgJHJlc3VsdFsnYWx0X2VuZF9kYXRlJ10gPSAwOwogICAgICAgICAgJHJlc3VsdFsnZXZlbnRfc3RhdHVzJ10gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGZsdF9zdGF0dXMnLCdEJyk7CiAgICAgIH0KCiAgICAgIHJldHVybiAkcmVzdWx0OwogIH0KCiAgLy8gZGVwcmVjYXRlZAogIGZ1bmN0aW9uIEdldENhdGVnb3JpZXMoKQogIHsKICAgICAgcmV0dXJuIFxDR0NhbGVuZGFyXGNhdGVnb3J5OjpnZXRfY2F0ZWdvcmllcygpOwogIH0KCiAgcHJpdmF0ZSBmdW5jdGlvbiBfTG9hZEFkbWluKCkKICB7CiAgICAgIGlmKCAkdGhpcy0+YWRtaW5fdG9vbHNfbG9hZGVkID09PSBmYWxzZSkgcmVxdWlyZV9vbmNlKCdmdW5jdGlvbnMuYWRtaW5fdG9vbHMucGhwJyk7CiAgfQoKICBmdW5jdGlvbiBHZXRGaWVsZHMoKQogIHsKICAgICAgaWYoICFpc19hcnJheShzZWxmOjokX2NhY2hlZF9maWVsZHMpICkgewogICAgICAgICAgc2VsZjo6JF9jYWNoZWRfZmllbGRzID0gYXJyYXkoKTsKCiAgICAgICAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsgLyogQHZhciAkZGIgQURPQ29ubmVjdGlvbiAqLwogICAgICAgICAgJGZpZWxkc190YWJsZV9uYW1lID0gJHRoaXMtPmZpZWxkc190YWJsZV9uYW1lOwogICAgICAgICAgJHNxbCA9ICJTRUxFQ1QgKiBGUk9NICRmaWVsZHNfdGFibGVfbmFtZSBPUkRFUiBCWSBmaWVsZF9vcmRlcixmaWVsZF9uYW1lIjsKCiAgICAgICAgICAkcmVzdWx0ID0gYXJyYXkoKTsKICAgICAgICAgICRycyA9ICRkYi0+RXhlY3V0ZSgkc3FsKTsKICAgICAgICAgIGlmKCRycyAmJiAkcnMtPlJlY29yZENvdW50KCkgPiAwKSB7CiAgICAgICAgICAgICAgJHJlc3VsdCA9ICRycy0+R2V0QXJyYXkoKTsKICAgICAgICAgICAgICBpZiggaXNfYXJyYXkoJHJlc3VsdCkgJiYgY291bnQoJHJlc3VsdCkgKSB7CiAgICAgICAgICAgICAgICAgIGZvcmVhY2goICRyZXN1bHQgYXMgJiRvbmUgKSB7CiAgICAgICAgICAgICAgICAgICAgICBpZiggJG9uZVsnZmllbGRfZXh0cmEnXSAhPSAnJyApICRvbmVbJ2ZpZWxkX2V4dHJhJ10gPSB1bnNlcmlhbGl6ZSgkb25lWydmaWVsZF9leHRyYSddKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBzZWxmOjokX2NhY2hlZF9maWVsZHMgPSAkcmVzdWx0OwogICAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBzZWxmOjokX2NhY2hlZF9maWVsZHM7CiAgfQoKICBmdW5jdGlvbiBHZXREYXlOYW1lcygpCiAgewogICAgICAkdG1wID0gY2djYWxlbmRhcl91dGlsczo6Z2V0X2xvY2FsZV9kYXRlcygpOwogICAgICAkZGF5X25hbWVzID0gJHRtcFsnZGF5TmFtZXMnXTsKCiAgICAgIGlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmaXJzdGRheW9md2VlaycsMSkpIHsKICAgICAgICAgICRmaXJzdCA9IGFycmF5X3NoaWZ0KCRkYXlfbmFtZXMpOwogICAgICAgICAgJGRheV9uYW1lc1tdID0gJGZpcnN0OwogICAgICB9CiAgICAgIHJldHVybiAkZGF5X25hbWVzOwogIH0KCiAgZnVuY3Rpb24gR2V0RGF5U2hvcnROYW1lcygpCiAgewogICAgICAkdG1wID0gY2djYWxlbmRhcl91dGlsczo6Z2V0X2xvY2FsZV9kYXRlcygpOwogICAgICAkZGF5X3Nob3J0X25hbWVzID0gJHRtcFsnZGF5TmFtZXNTaG9ydCddOwoKICAgICAgaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ZpcnN0ZGF5b2Z3ZWVrJywxKSkgewogICAgICAgICAgJGZpcnN0ID0gYXJyYXlfc2hpZnQoJGRheV9zaG9ydF9uYW1lcyk7CiAgICAgICAgICAkZGF5X3Nob3J0X25hbWVzW10gPSAkZmlyc3Q7CiAgICAgIH0KICAgICAgcmV0dXJuICRkYXlfc2hvcnRfbmFtZXM7CiAgfQoKICBmdW5jdGlvbiBHZXRNb250aE5hbWVzKCkKICB7CiAgICAgICR0bXAgPSBjZ2NhbGVuZGFyX3V0aWxzOjpnZXRfbG9jYWxlX2RhdGVzKCk7CiAgICAgICRtb250aF9uYW1lcyA9ICR0bXBbJ21vbnRoTmFtZXMnXTsKICAgICAgcmV0dXJuICRtb250aF9uYW1lczsKICB9CgogIGZ1bmN0aW9uIEdldExhYmVscygpCiAgewogICAgICAkbGFuZ1snZGF0ZSddID0gJHRoaXMtPkxhbmcoJ2NhbF9kYXRlJyk7CiAgICAgICRsYW5nWydzdW1tYXJ5J10gPSAkdGhpcy0+TGFuZygnY2FsX3N1bW1hcnknKTsKCiAgICAgICRsYW5nWydkZXRhaWxzJ10gPSAkdGhpcy0+TGFuZygnY2FsX2RldGFpbHMnKTsKICAgICAgJGxhbmdbJ3JldHVybiddID0gJHRoaXMtPkxhbmcoJ2NhbF9yZXR1cm4nKTsKCSAgJGxhbmdbJ2N1cnJlbnQnXSA9ICR0aGlzLT5MYW5nKCdjYWxfY3VycmVudCcpOwogICAgICAkbGFuZ1sndG9kYXknXSA9ICR0aGlzLT5MYW5nKCdjYWxfdG9kYXknKTsKCSAgJGxhbmdbJ2Zyb20nXSA9ICR0aGlzLT5MYW5nKCdjYWxfZnJvbScpOwogICAgICAkbGFuZ1sndG8nXSA9ICR0aGlzLT5MYW5nKCdjYWxfdG8nKTsKICAgICAgJGxhbmdbJ25leHQnXSA9ICR0aGlzLT5MYW5nKCdjYWxfbmV4dCcpOwogICAgICAkbGFuZ1sncHJldiddID0gJHRoaXMtPkxhbmcoJ2NhbF9wcmV2Jyk7CiAgICAgICRsYW5nWydwYXN0X2V2ZW50cyddID0gJHRoaXMtPkxhbmcoJ2NhbF9wYXN0X2V2ZW50cycpOwogICAgICAkbGFuZ1sndXBjb21pbmdfZXZlbnRzJ10gPSAkdGhpcy0+TGFuZygnY2FsX3VwY29taW5nX2V2ZW50cycpOwogICAgICAkbGFuZ1sncmVjdXJfcGVyaW9kJ10gPSBhcnJheSgnZGFpbHknPT4kdGhpcy0+TGFuZygnZGFpbHknKSwnd2Vla2x5Jz0+JHRoaXMtPkxhbmcoJ3dlZWtseScpLCdtb250aGx5Jz0+JHRoaXMtPkxhbmcoJ21vbnRobHknKSwneWVhcmx5Jz0+JHRoaXMtPkxhbmcoJ3llYXJseScpKTsKICAgICAgcmV0dXJuICRsYW5nOwogIH0KCgogIGZ1bmN0aW9uIGlzVmFsaWRGaWxlbmFtZSgkZmlsZW5hbWUpCiAgewogICAgICAkdGhpcy0+X0xvYWRBZG1pbigpOwogICAgICByZXR1cm4gY2FsZW5kYXJfaXNWYWxpZEZpbGVuYW1lKCR0aGlzLCRmaWxlbmFtZSk7CiAgfQoKCiAgZnVuY3Rpb24gSGFuZGxlVXBsb2FkKCRmbGRuYW1lLCYkZXJyb3IpCiAgewogICAgICAkdGhpcy0+X0xvYWRBZG1pbigpOwogICAgICByZXR1cm4gY2FsZW5kYXJfSGFuZGxlVXBsb2FkKCR0aGlzLCRmbGRuYW1lLCRlcnJvcik7CiAgfQoKICBmdW5jdGlvbiBHZXREZWZhdWx0VGVtcGxhdGUoJHRlbXBsYXRlKQogIHsKICAgICAgJGZuID0gc3ByaW50Zignb3JpZ18lc190ZW1wbGF0ZS50cGwnLCR0ZW1wbGF0ZSk7CiAgICAgICRmbiA9IGNtc19qb2luX3BhdGgoX19ESVJfXywndGVtcGxhdGVzJywkZm4pOwogICAgICAkZGF0YSA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOwogICAgICByZXR1cm4gJGRhdGE7CiAgfQoKICBmdW5jdGlvbiBOb0JyZWFrKCRzdHJpbmcpIHsKICAgIHJldHVybiBzdHJfcmVwbGFjZSgiICIsIiZuYnNwOyIsJHN0cmluZyk7CiAgfQoKICBmdW5jdGlvbiBTZWFyY2hSZXN1bHQoJHJldHVybmlkLCAkZXZlbnRfaWQsICRhdHRyID0gJycpCiAgewogICAgICAkcmVzdWx0ID0gYXJyYXkoKTsKICAgICAgaWYoICRhdHRyICE9ICdldmVudCcpIHJldHVybiAkcmVzdWx0OwoKICAgICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAgICRxdWVyeSA9ICdTRUxFQ1QgZXZlbnRfdGl0bGUgRlJPTSAnLiR0aGlzLT5ldmVudHNfdGFibGVfbmFtZS4nIFdIRVJFIGV2ZW50X2lkID0gPyBBTkQgZXZlbnRfc3RhdHVzID0gPyc7CiAgICAgICR0aXRsZSA9ICRkYi0+R2V0T25lKCAkcXVlcnksIFsgJGV2ZW50X2lkLCAnUCcgXSApOwogICAgICBpZiggISAkdGl0bGUgKSByZXR1cm4gJHJlc3VsdDsKCiAgICAgICRyZXN1bHRbMF0gPSAkdGhpcy0+R2V0RnJpZW5kbHlOYW1lKCk7CiAgICAgICRyZXN1bHRbMV0gPSAkdGl0bGU7CgogICAgICAkdGl0bGVTRU8gPSBtdW5nZV9zdHJpbmdfdG9fdXJsKCR0aXRsZSk7CiAgICAgICRkZXN0cGFnZSA9IChpbnQpICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZWZhdWx0Y2FsZW5kYXJwYWdlJyk7CiAgICAgIGlmKCAkZGVzdHBhZ2UgPCAxICkgJGRlc3RwYWdlID0gJHJldHVybmlkOwoKICAgICAgJHByZWZpeCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1cmxfcHJlZml4Jyk7CiAgICAgIGlmKCAhJHByZWZpeCApICRwcmVmaXggPSAnY2FsZW5kYXInOwogICAgICAkcHJldHR5dXJsID0gc3ByaW50ZigkcHJlZml4LiIvJWQvJWQtJXMiLCAkZGVzdHBhZ2UsJGV2ZW50X2lkLCR0aXRsZVNFTyk7CiAgICAgICRyZXN1bHRbMl0gPSAkdGhpcy0+Q3JlYXRlTGluaygnY250bnQwMScsJ2RlZmF1bHQnLCRkZXN0cGFnZSwnJywKCQkJCQkgYXJyYXkoJ2V2ZW50X2lkJz0+JGV2ZW50X2lkLCdkaXNwbGF5Jz0+J2V2ZW50JywnZGV0YWlscGFnZSc9PiRkZXN0cGFnZSwncmV0dXJuX2lkJz0+JHJldHVybmlkKSwKCQkJCQkgJycsIHRydWUsICcnLCAnJywgJHByZXR0eXVybCk7CiAgICAgIHJldHVybiAkcmVzdWx0OwogIH0KCiAgZnVuY3Rpb24gU2VhcmNoUmVpbmRleCgmJG1vZHVsZSkKICB7CiAgICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwoKICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy4kdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUuJyBXSEVSRSBldmVudF9zdGF0dXMgPSA/IE9SREVSIEJZIGV2ZW50X2RhdGVfc3RhcnQnOwogICAgICAkZGJyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgWyAnUCcgXSApOwoKCSAgJGZxdWVyeSA9ICdTRUxFQ1QgZnYuZmllbGRfdmFsdWUgRlJPTSAnLiR0aGlzLT5maWVsZHNfdGFibGVfbmFtZS4nIGZkCiAgICAgICAgICAgICAgICAgICBMRUZUIEpPSU4gJy4kdGhpcy0+ZXZlbnRfZmllbGRfdmFsdWVzX3RhYmxlX25hbWUuJyBmdgogICAgICAgICAgICAgICAgICAgICBPTiBmZC5maWVsZF9uYW1lID0gZnYuZmllbGRfbmFtZSBBTkQgZmQuZmllbGRfc2VhcmNoYWJsZSA9IDEKICAgICAgICAgICAgICAgICAgV0hFUkUgZnYuZXZlbnRfaWQgPSA/JzsKCiAgICAgIHdoaWxlICgkZGJyICYmICEkZGJyLT5FT0YpIHsKICAgICAgICAgICR0ZXh0ID0gJGRici0+ZmllbGRzWydldmVudF90aXRsZSddLicgJy4kZGJyLT5maWVsZHNbJ2V2ZW50X3N1bW1hcnknXS4nICcuJGRici0+ZmllbGRzWydldmVudF9kZXRhaWxzJ107CgogICAgICAgICAgJG1vcmV3b3JkcyA9ICRkYi0+R2V0Q29sKCRmcXVlcnksYXJyYXkoJGRici0+ZmllbGRzWydldmVudF9pZCddKSk7CiAgICAgICAgICBpZiggJG1vcmV3b3JkcyApICR0ZXh0IC49ICcgJy5pbXBsb2RlKCcgJywkbW9yZXdvcmRzKTsKICAgICAgICAgICRtb2R1bGUtPkFkZFdvcmRzKCR0aGlzLT5HZXROYW1lKCksICRkYnItPmZpZWxkc1snZXZlbnRfaWQnXSwgJ2V2ZW50JywgJHRleHQsIE5VTEwpOwogICAgICAgICAgJGRici0+TW92ZU5leHQoKTsKCSAgfQogIH0KCiAgZnVuY3Rpb24gVG9BYmJyZXZpYXRlZFdlZWtkYXlzKCRkYXRhKQogIHsKCWlmKCAhaXNfYXJyYXkoJGRhdGEpICkgJGRhdGEgPSBleHBsb2RlKCcsJywkZGF0YSk7CgoJJHdlZWtkYXlzID0gYXJyYXkoMD0+J3N1bmRheScsCgkJCQkJICAxPT4nbW9uZGF5JywKCQkJCQkgIDI9Pid0dWVzZGF5JywKCQkJCQkgIDM9Pid3ZWRuZXNkYXknLAoJCQkJCSAgND0+J3RodXJzZGF5JywKCQkJCQkgIDU9PidmcmlkYXknLAoJCQkJCSAgNj0+J3NhdHVyZGF5Jyk7CgkkcmVzdWx0ID0gYXJyYXkoKTsKCWZvcmVhY2goICRkYXRhIGFzICRvbmUgKSB7CgkgICRyZXN1bHRbXSA9ICR0aGlzLT5MYW5nKCdhYmJyXycuJHdlZWtkYXlzWyRvbmVdKTsKCX0KICAgIGlmKCAhY291bnQoJHJlc3VsdCkgKSByZXR1cm4gJyc7CgkkdG1wID0gaW1wbG9kZSgnLCcsJHJlc3VsdCk7CglyZXR1cm4gJHRtcDsKICB9CgogIC8vIHRpbWVzdGFtcCBpcyBhIFVuaXggdGltZXN0YW1wIChzZWNvbmRzIHNpbmNlIGVwb2NoKQogIC8vIHR6b25lIGlzIGFuIHRpbWUtem9uZSBvZmZzZXQgZnJvbSBHTVQKICBmdW5jdGlvbiBVbml4VGltZXN0YW1wVG9pQ2FsKCR0aW1lc3RhbXAsICR0em9uZSA9IDApCiAgewoJJHp1bHUgPSAkdGltZXN0YW1wICsgKCR0em9uZSAqIDM2MDApOwoJJGlDYWwgID0gZGF0ZSgiWW1kXFRIaXNcWiIsICR6dWx1KTsKCXJldHVybiAkaUNhbDsKICB9CgogIGZ1bmN0aW9uIEdldENhdGVnb3J5TmFtZXMoJGNhdGVnb3J5X2lkcykKICB7CglpZiggIWlzX2FycmF5KCRjYXRlZ29yeV9pZHMpICYmIChpbnQpJGNhdGVnb3J5X2lkcyA+IDAgKSB7CgkgICRjYXRlZ29yeV9pZHMgPSBhcnJheSgkY2F0ZXRlZ29yeV9pZHMpOwoJfQoKCSRhbGxjYXRzID0gJHRoaXMtPkdldENhdGVnb3JpZXMoKTsKCWlmKCAhaXNfYXJyYXkoJGFsbGNhdHMpIHx8IGNvdW50KCRhbGxjYXRzKSA9PSAwICkgcmV0dXJuOwoKCSR0bXAgPSBhcnJheSgpOwoJZm9yZWFjaCggJGNhdGVnb3J5X2lkcyBhcyAkb25lICkgewoJICBmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkYWxsY2F0cyk7ICRpKysgKSB7CgkJaWYoICRvbmUgPT0gJGFsbGNhdHNbJGldWydjYXRlZ29yeV9pZCddICkgewoJCSAgJHRtcFtdID0gJGFsbGNhdHNbJGldWydjYXRlZ29yeV9uYW1lJ107CgkJICBicmVhazsKCQl9CgkgIH0KCX0KCWlmKCBjb3VudCgkdG1wKSA+IDAgKSByZXR1cm4gaW1wbG9kZSgnLCAnLCR0bXApOwogIH0KCiAgZnVuY3Rpb24gQ29udmVydENhdGVnb3JpZXNUb1N0cmluZygkY2F0ZWdvcmllcykKICB7CgkkYXJ5ID0gYXJyYXkoKTsKCWZvcmVhY2ggKCRjYXRlZ29yaWVzIGFzICRvbmUpIHsKCSAgJGFyeVtdID0gJG9uZVsnY2F0ZWdvcnlfbmFtZSddOwoJfQoJcmV0dXJuIGltcGxvZGUoJywnLCAkYXJ5KTsKICB9CgogIHN0YXRpYyBwdWJsaWMgZnVuY3Rpb24gcGFnZV90eXBlX2xhbmdfY2FsbGJhY2soJHN0cikKICB7CiAgICAgICRtb2QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0NHQ2FsZW5kYXInKTsKICAgICAgaWYoIGlzX29iamVjdCgkbW9kKSApIHJldHVybiAkbW9kLT5MYW5nKCd0cGx0eXBlXycuJHN0cik7CiAgfQoKICBzdGF0aWMgcHVibGljIGZ1bmN0aW9uIHJlc2V0X3BhZ2VfdHlwZV9kZWZhdWx0cyhDbXNMYXlvdXRUZW1wbGF0ZVR5cGUgJHR5cGUpCiAgewogICAgICBpZiggJHR5cGUtPmdldF9vcmlnaW5hdG9yKCkgIT0gJ0NHQ2FsZW5kYXInICkgdGhyb3cgbmV3IENtc0xvZ2ljRXhjZXB0aW9uKCdDYW5ub3QgcmVzZXQgY29udGVudHMgZm9yIHRoaXMgdGVtcGxhdGUgdHlwZScpOwoKICAgICAgJGZuID0gbnVsbDsKICAgICAgc3dpdGNoKCAkdHlwZS0+Z2V0X25hbWUoKSApIHsKICAgICAgY2FzZSAnc2VhcmNoZm9ybSc6CiAgICAgICAgICAkZm4gPSAnb3JpZ19zZWFyY2hfdGVtcGxhdGUudHBsJzsKICAgICAgICAgIGJyZWFrOwogICAgICBjYXNlICdzZWFyY2hyZXN1bHQnOgogICAgICAgICAgJGZuID0gJ29yaWdfc2VhcmNocmVzdWx0X3RlbXBsYXRlLnRwbCc7CiAgICAgICAgICBicmVhazsKICAgICAgY2FzZSAnZXZlbnQnOgogICAgICAgICAgJGZuID0gJ29yaWdfZXZlbnRfdGVtcGxhdGUudHBsJzsKICAgICAgICAgIGJyZWFrOwogICAgICBjYXNlICdldmVudGxpc3QnOgogICAgICAgICAgJGZuID0gJ29yaWdfbGlzdF90ZW1wbGF0ZS50cGwnOwogICAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ215ZXZlbnRzJzoKICAgICAgICAgICRmbiA9ICdvcmlnX215ZXZlbnRzX3RlbXBsYXRlLnRwbCc7CiAgICAgICAgICBicmVhazsKICAgICAgY2FzZSAnZWRpdGV2ZW50JzoKICAgICAgICAgICRmbiA9ICdvcmlnX2VkaXRldmVudF90ZW1wbGF0ZS50cGwnOwogICAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ2RlbGV0ZWV2ZW50JzoKICAgICAgICAgICRmbiA9ICdvcmlnX2RlbGV0ZWV2ZW50X3RlbXBsYXRlLnRwbCc7CiAgICAgICAgICBicmVhazsKICAgICAgY2FzZSAnZnVsbGNhbGVuZGFyJzoKICAgICAgICAgICRmbiA9ICdvcmlnX2Z1bGxjYWxlbmRhcl90ZW1wbGF0ZS50cGwnOwogICAgICAgICAgYnJlYWs7CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCR0eXBlLT5nZXRfbmFtZSgpLicgaXMgbm90IGEga25vd24gdHlwZSBmb3IgdGhlICcuJHR5cGUtPmdldF9vcmlnaW5hdG9yKCkuJyBvcmlnaW5hdG9yJyk7CiAgICAgIH0KCiAgICAgICRmbiA9IGNtc19qb2luX3BhdGgoX19ESVJfXywndGVtcGxhdGVzJywkZm4pOwogICAgICBpZiggZmlsZV9leGlzdHMoJGZuKSApIHJldHVybiBAZmlsZV9nZXRfY29udGVudHMoJGZuKTsKICB9CgogIHB1YmxpYyBmdW5jdGlvbiBHZXRBZG1pbk1lbnVJdGVtcygpCiAgewogICAgICAkb3V0ID0gYXJyYXkoKTsKICAgICAgaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBDYWxlbmRhcicpIHx8CiAgICAgICAgICAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdBZGQgQ2FsZW5kYXIgRXZlbnRzJykgfHwKICAgICAgICAgICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ0VkaXQgTXkgQ2FsZW5kYXIgRXZlbnRzJykgKSAkb3V0W10gPSBDbXNBZG1pbk1lbnVJdGVtOjpmcm9tX21vZHVsZSgkdGhpcyk7CgogICAgICBpZiggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSB8fAogICAgICAgICAgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIENhbGVuZGFyIEF0dHJpYnV0ZXMnKSkgewogICAgICAgICAgJG9iaiA9IG5ldyBDbXNBZG1pbk1lbnVJdGVtKCk7CiAgICAgICAgICAkb2JqLT5tb2R1bGUgPSAkdGhpcy0+R2V0TmFtZSgpOwogICAgICAgICAgJG9iai0+c2VjdGlvbiA9ICdzaXRlYWRtaW4nOwogICAgICAgICAgJG9iai0+dGl0bGUgPSAkdGhpcy0+TGFuZygndGl0bGVfYWRtaW5uYXZfc2V0dGluZ3MnKTsKICAgICAgICAgICRvYmotPmRlc2NyaXB0aW9uID0gJHRoaXMtPkxhbmcoJ2Rlc2NfYWRtaW5uYXZfc2V0dGluZ3MnKTsKICAgICAgICAgICRvYmotPmFjdGlvbiA9ICdhZG1pbl9zZXR0aW5ncyc7CiAgICAgICAgICAkb2JqLT51cmwgPSAkdGhpcy0+Y3JlYXRlX3VybCgnbTFfJywkb2JqLT5hY3Rpb24pOwogICAgICAgICAgJG91dFtdID0gJG9iajsKICAgICAgfQogICAgICByZXR1cm4gJG91dDsKICB9Cgp9OyAvLyBjbGFzcwo=]]></data>
	</file>
	<file>
	  <filename>/changelog.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPkZ1dHVyZSBjaGFuZ2VzPC9oMz4KPHA+SW4gdXBjb21pbmcgdmVyc2lvbnMgb2YgdGhpcyBtb2R1bGUgd2Ugd2lsbCBiZTo8L3A+Cgk8dWw+Cgk8bGk+VXRpbGl6ZSBjYWNoaW5nIHdoZW4gbG9hZGluZyBldmVudHMgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZSAobm90IGxvYWRpbmcgdGhlIHNhbWUgZXZlbnQgbXVsdGlwbGUgdGltZXMgaW4gc29tZSB2aWV3cyk8L2xpPgoJPGxpPkltcHJvdmluZyBwcmV0dHkgdXJsIHN1cHBvcnQ8L2xpPgoJPGxpPkZ1cnRoZXIgT09QaWZ5aW5nIHRoZSBjb2RlIHRvIGFsbG93IGZvciBmdXR1cmUgZXhwYW5zaW9uLjwvbGk+Cgk8bGk+QWxsb3cgZmlsdGVyaW5nIGJ5IGN1c3RvbSBmaWVsZHMuLi4gaS5lOiBhIGRyb3Bkb3duIHZhbHVlIHNvIHRoYXQgeW91IGNhbiBmaWx0ZXIgYnkgYSByZXNvdXJjZS48L2xpPgoJPC91bD4KCjxoMz5IaXN0b3J5PC9oMz4KICA8dWw+CiAgPGxpPlZlcnNpb24gMi41CiAgICA8dWw+CiAgICAgIDxsaT5Ob3cgdXNlIHRoZSBDTVNNUyBGaWxlUGlja2VyIGluIHRoZSBhZG1pbiBmb3IgZmlsZSBhdHRhY2htZW50IGZpZWxkcy4gIFRoaXMgZmllbGQgbm8gbG9uZ2VyIHVzZXMgdGhlIHVwbG9hZC1kaXJlY3RvcnkgcHJlZmVyZW5jZS48L2xpPgogICAgICA8bGk+QWRkcyBhIG5ldyBpbWFnZSBhdHRhY2htZW50IGZpZWxkIHR5cGUuIFVzYWJsZSBpbiB0aGUgYWRtaW4gZWRpdG9yIG9ubHkuPC9saT4KICAgIDwvdWw+CiAgPC9saT4KICA8bGk+VmVyc2lvbiAyLjQuOQogICAgPHVsPgogICAgICA8bGk+TW9yZSBpbXByb3ZlbWVudHMgdG8gdGhlIGVkaXQtZXZlbnQgdGVtcGxhdGUgbGF5b3V0LjwvbGk+CiAgICAgIDxsaT5Ob3cgYXNzdW1lIHRoYXQgdGhlIGFkZC1ldmVudCBsaW5rcyBhbmQgZGF5Y2xpY2sgZXZlbnRzIGFyZSBpbiBVVEMuPC9saT4KICAgIDwvdWw+CiAgPC9saT4KICA8bGk+VmVyc2lvbiAyLjQuOAogICAgPHVsPgogICAgICA8bGk+SW1wcm92ZW1lbnRzIHRvIHRoZSBlZGl0LWV2ZW50IHRlbXBsYXRlIGxheW91dC48L2xpPgogICAgICA8bGk+Rml4ZXMgb2ZmLWJ5LW9uZSBlcnJvciBpbiB0aGUgZGF5Y2xpY2sgc3R1ZmYuPC9saT4KICAgICAgPGxpPkZpeGVzIHRvIHRoZSB1cGdyYWRlIHJvdXRpbmUgd3J0IHRlbXBsYXRlcy48L2xpPgogICAgPC91bD4KICA8L2xpPgogIDxsaT5WZXJzaW9uIDIuNC4zCgk8dWw+Cgk8bGk+Rml4IGFuIGlzc3VlIHdpdGggZnJvbnRlbmQgZnVsbGNhbGVuZGFyIGRpc3BsYXlzLiAgWW91IG1heSBuZWVkIHRvIGNyZWF0ZSBuZXcgZnVsbGNhbGVuZGFyIHZpZXcgdGVtcGxhdGVzIGFmdGVyIHJlc2V0dGluZyB0aGUgZGVmYXVsdCBmdWxsY2FsZW5kYXIgdGVtcGxhdGUgdG8gZmFjdG9yeSBkZWZhdWx0cy48L2xpPgoJPC91bD4KICA8L2xpPgogIDxsaT5WZXJzaW9uIDIuNC4zCiAgICAgPHVsPgogICAgICAgPGxpPkFkZHMgdGhlIEV2ZW50RWRpdGVkUHJlIENNU01TIEV2ZW50IHRoYXQgaXMgc2VudCBwcmlvciB0byBhbiBldmVudCBiZWluZyBtb2RpZmllZC48L2xpPgogICAgICAgPGxpPkFkZHMgdGhlIGFiaWxpdHkgdG8gZXhwb3J0IGV2ZW50cyB0byBhIHNpbXBsZSBDU1YgZmlsZS48L2xpPgogICAgICAgPGxpPk1pbm9yIGltcHJvdmVtZW50cyB0byBpbXBvcnQgZnVuY3Rpb25hbGl0eS48L2xpPgogICAgICAgPGxpPkZpeGVzIHRvIGFkbWluIHZpZXcgb2YgRnVsbENhbGVuZGFyIGRpc3BsYXkgaWYgbm8gaG9saWRheXMgZGVmaW5lZC48L2xpPgogICAgIDwvdWw+CiAgPC9saT4KICA8bGk+VmVyc2lvbiAyLjMKICAgICA8dWw+CiAgICAgICA8bGk+QWRkcyBhYmlsaXR5IHRvIHNhdmUgYW4gZXZlbnQgYXMgRHJhZnQgKEQpIG9yIFB1Ymxpc2hlZCAoUCkuCiAgICAgICAgICAgPHA+IERyYWZ0IGV2ZW50cyBhcmUgbmV2ZXIgYWRkZWQgdG8gdGhlIHNlYXJjaCBtb2R1bGUuCiAgICAgICAgICAgT24gdXBncmFkZSBhbGwgZXZlbnRzIGFyZSBtYXJrZWQgYXMgJ1B1Ymxpc2hlZCcuPC9wPgogICAgICAgPC9saT4KICAgICAgIDxsaT5JbXByb3ZlcyBpbnRlcmZhY2Ugd2l0aCB0aGUgU2VhcmNoIG1vZHVsZS48L2xpPgogICAgICAgPGxpPlVwZ3JhZGUgRnVsbENhbGVuZGFyIHRvIHRoZSBsYXRlc3QgdmVyc2lvbiAoMy4xLngpPC9saT4KICAgICAgIDxsaT5BZGRzIHRoZSB5ZWFyIGxpc3QgdmlldyB0byB0aGUgYWRtaW4gaW50ZXJmYWNlIEZ1bGxDYWxlbmRhciBpbXBsZW1lbnRhdGlvbi48L2xpPgogICAgIDwvdWw+CiAgPC9saT4KICA8bGk+VmVyc2lvbiAyLjIKICAgICA8dWw+CiAgICAgPGxpPk1pbm9yIGJ1ZyBmaXhlcy48L2xpPgogICAgIDxsaT5BZGRzIGFiaWxpdHkgdG8gY2xpY2sgb24gYSBkYXRlIG9uIHRoZSBmdWxsY2FsZW5kYXIgdmlldyB0byBhZGQgYW4gZXZlbnQgb24gdGhhdCBkYXRlLjwvbGk+CiAgICAgPC91bD4KICA8L2xpPgogIDxsaT5WZXJzaW9uIDIuMS40CiAgICAgPHVsPgogICAgIDxsaT5NaW5vciBidWcgZml4ZXMgdG8gc3VtbWFyeSB2aWV3cy48L2xpPgogICAgIDxsaT5Nb3JlIGZpeGVzIHdydCB1cGdyYWRpbmcgZnJvbSB0aGUgMS54IHNlcmllcy48L2xpPgogICAgIDwvdWw+CiAgPC9saT4KICA8bGk+VmVyc2lvbiAyLjEuMwoJPHAgY2xhc3M9Indhcm5pbmciPjxzdHJvbmc+V2FybmluZzo8L3N0cm9uZz4gSW4gZnV0dXJlIHZlcnNpb25zIEkgd2lsbCBiZSBjb252ZXJ0aW5nIGFsbCBNeUlTQU0gdGFibGVzIHRvIElubm9EQiBvbiB1cGdyYWRlLiAgWW91IHdpbGwgbG9zZSBmdWxsIHRleHQgc2VhcmNoIGNhcGFiaWxpdGllcyBpZiB5b3UgYXJlIG5vdCBydW5uaW5nIE15U1FMIDUuNiBvciBsYXRlci48L3A+Cgk8dWw+Cgk8bGk+QnVnIGZpeGVzLjwvbGk+Cgk8L3VsPgogIDxsaT5WZXJzaW9uIDIuMS4zCgk8dWw+CgkgIDxsaT5CdWcgZml4ZXMuPC9saT4KCTwvdWw+Cgk8L2xpPgogIDxsaT5WZXJzaW9uIDIuMS4yCiAgICAgCTx1bD4KCTxsaT5GaXggcHJvYmxlbSBvbiBuZXcgaW5zdGFsbHMgd2l0aCBkZWZhdWx0IHRlbXBsYXRlcyBub3QgYmVpbmcgc3BlY2lmaWVkLjwvbGk+Cgk8bGk+Rml4IHByb2JsZW0gd2l0aCBjYXRlZ29yeT0gbm90IHdvcmtpbmcgaW4gdmFyaW91cyBkaXNwbGF5cy48L2xpPgogICAgICAgIDxsaT5GaXggcHJvYmxlbXMgd2l0aCB1cGdyYWRlIGZyb20gMS54CiAgICAgICAgPC9saT4KCTwvdWw+CiAgPC9saT4KCTxsaT5WZXJzaW9uIDIuMQoJPHAgY2xhc3M9Indhcm5pbmciPjxzdHJvbmc+V2FybmluZzo8L3N0cm9uZz4gSWYgeW91ciBob3N0IGlzIG5vdCB1c2luZyBNeVNRTCA1LjYgb3IgYmV5b25kIHRoZSBmdWxsIHRleHQgc2VhcmNoIGNhcGFiaWxpdGllcyB3aWxsIG5vdCBvcGVyYXRlIG9uIG5ldyBpbnN0YWxscy48L3A+Cgk8dWw+Cgk8bGk+QWRkcyB0aGUgYWJpbGl0eSBmb3IgbWVtYmVycyBvZiBhIHNwZWNpYWwgRkVVIGdyb3VwIHRvIGVkaXQgb3IgZGVsZXRlIGFueSBldmVudCBmcm9tIHRoZSBmcm9udGVuZC48L2xpPgoJPGxpPkFhZHMgdGhlIGFiaWxpdHkgdG8gYnVsayBkZWxldGUgZXhwaXJlZCBldmVudHMuPC9saT4KCTxsaT5OZXcgaW5zdGFsbHMgdXNlIElubm9EQiBpbnN0ZWFkIG9mIE15SVNBTSB3aGljaCBhbGxvd3MgZm9yIGRhdGEgaW50ZWdyaXR5LjwvbGk+Cgk8L3VsPgogIDwvbGk+CgogIDxsaT5WZXJzaW9uIDIuMAoJPHAgY2xhc3M9Indhcm5pbmciPjxzdHJvbmc+V2FybmluZzo8L3N0cm9uZz4gVGhpcyB2ZXJzaW9uIG1hcmtzIGEgbWFqb3IgY2hhbmdlIGZvciB0aGUgQ0dDYWxlbmRhciBtb2R1bGUuICBUaGlzIHZlcnNpb24gcmVxdWlyZXMgQ01TTVMgMi4xLjIgb3IgYmV5b25kLCBhbmQgaW50ZWdyYXRlcyB3aXRoIHRoZSBEZXNpZ24gTWFuYWdlci4gIEFsc28sIHNvbWUgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVkIG9yIGNoYW5nZWQuICBVcGdyYWRpbmcgd2lsbCByZXF1aXJlIGNyZWF0aW5nIG5ldyB0ZW1wbGF0ZXMsIGFuZCBhZGp1c3RpbmcgdGhlaXIgc3R5bGVzLCBhbmQgcG90ZW50aWFsbHkgYWRqdXN0aW5nIHRoZSB3YXkgdGhlIG1vZHVsZSBpcyBjYWxsZWQuPC9wPgoJPHAgY2xhc3M9Indhcm5pbmciPjxzdHJvbmc+V2FybmluZzo8L3N0cm9uZz4gQ01TTVMgMi54IHJlcXVpcmVzIHRoYXQgYWxsIHRlbXBsYXRlcyBiZSB1bmlxdWVseSBuYW1lZC4gIER1cmluZyB0aGUgdXBncmFkZSBwcm9jZXNzIHdlIGVuc3VyZSB0aGF0IGFsbCBDR0NhbGVuZGFyIHRlbXBsYXRlcyBhcmUgdW5pcXVlbHkgbmFtZWQgdXBvbiBjb252ZXJzaW9uLiAgSG93ZXZlciwgd2UgY2Fubm90IGFuZCBkbyBub3QgZWRpdCB5b3VyIGNhbGxzIHRvIHRoZSBDR0NhbGVuZGFyIG1vZHVsZS4gIFRoZXJlZm9yZSwgeW91IG1heSBuZWVkIHRvIGFkanVzdCB5b3VyIGNhbGxzIHRvIENHQ2FsZW5kYXIgdG8gYWRqdXN0IGEgbWFudWFsbHkgc3BlY2lmaWVkIHRlbXBsYXRlIG5hbWUuPC9wPgoJPHVsPgoJPGxpPlJlbW92ZXMgdGhlIHByZXZpb3VzbHkgZGVwcmVjYXRlZCBjYWxlbmRhciB2aWV3LjwvbGk+Cgk8bGk+TWlncmF0ZXMgYWxsIHRlbXBsYXRlIGZ1bmN0aW9uYWxpdHkgaW50byB0aGUgQ01TTVMgMi4wIExheW91dCBzY2hlbWUuICBBbGwgdGVtcGxhdGVzIGZvciBDR0NhbGVuZGFyIGFyZSBub3cgYXZhaWxhYmxlIGluIERlc2lnbk1hbmFnZXIuPC9saT4KCTxsaT5Nb3ZlcyBhbGwgc2V0dGluZ3MgY29udHJvbHMgaW50byB0aGVpciBvd24gbmF2aWdhdGlvbiBpdGVtIGluIHRoZSBhZG1pbiBjb25zb2xlLjwvbGk+Cgk8bGk+UmVtb3ZlcyB0aGUgdXBjb21pbmdsaXN0IHRlbXBsYXRlIHR5cGUsIGFuZCByZXBsYWNlcyBpdCB3aXRoIHRoZSBzdGFuZGFyZCBsaXN0IHRlbXBsYXRlIHR5cGUuICA8c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFRoaXMgbWF5IGNhdXNlIGNvbXBhdGliaWxpdHkgaXNzdWVzLiAgUGFzdGxpc3QgYW5kIHVwY29taW5nbGlzdCB2aWV3cyBubyBsb25nZXIgc3VwcG9ydCBwYWdpbmF0aW9uLjwvbGk+Cgk8bGk+QWRkcyBzdXBwb3J0IGZvciBhIGRheSB2aWV3LjwvbGk+Cgk8bGk+VW5pZmllcyBhbGwgc3VtbWFyeSB2aWV3cyAoeWVhciwgbW9udGgsIGRheSwgdXBjb21pbmdsaXN0LCBwYXN0bGlzdCkgdG8gdXNlIHRoZSBzYW1lIGV2ZW50bGlzdCB0ZW1wbGF0ZXMuIFRoZSBmb3JtYXQgb2YgdGhpcyB0ZW1wbGF0ZSBoYXMgY2hhbmdlZCBzaWduaWZpY2FudGx5LjwvbGk+Cgk8bGk+Tm8gbG9uZ2VyIHBhc3MgdGhlIGV2ZW50dGVtcGxhdGUgcGFyYW1ldGVyIGZyb20gdGhlIHN1bW1hcnkgdmlldyBpbnRvIGRldGFpbCB1cmxzIHRvIHBvdGVudGlhbGx5IGFsbG93IGZvciBwcmV0dHkgdXJscyBpbiBkZXRhaWwgKGV2ZW50KSB2aWV3cy4gIFVzZSB0aGUge2NnZV9tb2R1bGVfaGludH0gdGFnIGluc3RlYWQuPC9saT4KCTxsaT5ObyBsb25nZXIgdXNlIHRoZSB1c2Vfc2Vzc2lvbiBwYXJhbWV0ZXJzIGZvciBsaXN0IHZpZXdzLiAgVGhlIGRlZmF1bHQgdGVtcGxhdGUgYWxsb3dzIGZvciBzY3JvbGxpbmcgYnkgYWpheC48L2xpPgoJPGxpPk5vIGxvbmdlciB1c2UgdGhlIGRpc3BsYXlmb3JkYXkgcGFyYW1ldGVyIGZvciBwYXN0bGlzdCBvciB1cGNvbWluZ2xpc3QuICBVcGNvbWluZ2xpc3QgYXV0b21hdGljYWxseSBpbmNsdWRlcyBldmVudHMgZm9yIHRoZSBjdXJyZW50IGRheSwgYXMgZG9lcyBwYXN0bGlzdC48L2xpPgoJPGxpPk5vIGxvbmdlciB1c2UgdGhlIHVuaXF1ZV9vbmx5IHBhcmFtZXRlcnMgZm9yIHRoZSBwYXN0bGlzdCBhbmQgdXBjb21pbmdsaXN0IHZpZXdzIGFzIHRoZSBldmVudCBuYW1lIGNhbm5vdCBiZSBhc3N1bWVkIHRvIGJlIGEga2V5LiAgUG9zdCBmaWx0ZXJpbmcgaW4gdGhlIGxpc3QgdGVtcGxhdGUgbWF5IGJlIGEgdmFsaWQgc29sdXRpb24gZm9yIHRoaXMgaWYgb24gYSBwYXJ0aWN1bGFyIHNpdGUgaXQgY2FuIGJlIGFzc3VtZWQgdGhhdCB0aGUgZXZlbnQgbmFtZSBpcyB1bmlxdWUuPC9saT4KCTwvdWw+CiAgPC9saT4KCiAgPGxpPlZlcnNpb24gMS4xNi54CiAgICAgPHA+PHN0cm9uZz5XYXJuaW5nOjwvc3Ryb25nPiBNb3N0IGZyb250ZW5kIHRlbXBsYXRlcyBoYXZlIGNoYW5nZWQgaW4gdGhpcyB2ZXJzaW9uLiAgRXZlbnQgZGlzcGxheSB0ZW1wbGF0ZXMgaGF2ZSBkaWZmZXJlbnQgZnVuY3Rpb25hbGl0eSBmb3IgYWNjZXNzaW5nIGN1c3RvbSBmaWVsZHMuICBQbGVhc2Ugc2VlIHRoZSBleGFtcGxlcywgYW5kIHJlLXN0eWxlIHlvdXIgd2Vic2l0ZXMgYWZ0ZXIgdXBncmFkaW5nLjwvcD4KICAgICA8dWw+CiAgICAgICA8bGk+QWRkZWQgY2hlY2tib3ggYW5kIGRyb3Bkb3duIGN1c3RvbSBmaWVsZCB0eXBlcy48L2xpPgogICAgICAgPGxpPkFkZGVkIHRoZSBhYmlsaXR5IHRvIG1hbmlwdWxhdGUgcmVjdXJyaW5nIGV2ZW50cyBmcm9tIHRoZSBmcm9udGVuZCBpbnRlcmZhY2UuPC9saT4KICAgICAgIDxsaT5SZXdpdGVzIHRoZSBmcm9udGVuZCBkZWxldGUgYWN0aW9uLjwvbGk+CiAgICAgICA8bGk+cmV3cml0ZSB0aGUgZnJvbnRlbmQgYWRkL2VkaXQgZXZlbnQgYWN0aW9uLjwvbGk+CiAgICAgICA8bGk+TW9kaWZ5IGRlZmF1bHQgZXZlbnQgdGVtcGxhdGUgdG8gYWxsb3cgZWRpdGluZyB0aGUgZXZlbnQgaWYgbG9nZ2VkIGluIHRvIEZFVS48L2xpPgogICAgICAgPGxpPk5vdyBmaWVsZHMgYW5kIGNhdGVnb3JpZXMgYXJlIHByZXNlcnZlZCBhbmQgd29ya2luZyBwcm9wZXJseSB3aGVuIGVkaXRpbmcgY2hpbGQgZXZlbnRzIGluIHRoZSBmcm9udGVuZCBvciBhZG1pbi48L2xpPgogICAgICAgPGxpPk51bWVyb3VzIG1pbm9yIGJ1ZyBmaXhlcyBhbmQgY29kZSBvcHRpbWl6YXRpb25zLjwvbGk+CiAgICAgICA8bGk+TWFrZSByZWFkeSBwbGFucyB0byByZW1vdmUgdGVtcGxhdGUgY29kZSBlbnRpcmVseSBpbiBmYXZvciBvZiBEZXNpZ25NYW5hZ2VyLjwvbGk+CiAgICAgPC91bD4KICA8L2xpPgoKICA8bGk+VmVyc2lvbiAxLjE1LngKCTxwPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gIFdlIG5vdyBjcmVhdGUgYSBzZXBhcmF0ZSBzbWFydHkgc2NvcGUgZm9yIGVhY2ggdmlzaWJsZSB0ZW1wbGF0ZSB0byBwcmV2ZW50IHNtYXJ0eSB2YXJpYWJsZSBuYW1lIGNvbGxpc2lvbiBpc3N1ZXMsIGFuZCBmb3IgbWVtb3J5IG9wdGltaXphdGlvbiBwdXJwb3Nlcy4gIFRoaXMgbWF5IGNhdXNlIHByb2JsZW1zIHdoZW4gdHJ5aW5nIHRvIGV4cG9ydCB2YXJpYWJsZXMgdG8gb3RoZXIgdGVtcGxhdGVzLCBvciB3aGVuIHRyeWluZyB0byB1c2UgYSB2YXJpYWJsZSBjcmVhdGVkIGluIGFub3RoZXIgdGVtcGxhdGUuPC9wPgoJPHA+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBUaGUgbmV3IGRlZmF1bHQgYWN0aW9uIGZvciB0aGUgQ0dDYWxlbmRhciBtb2R1bGUgaXMgdGhlIGZ1bGxjYWxlbmRhciB2aWV3LiAgVGhpcyB2aWV3IHJlcXVpcmVzIGpxdWVyeSBhbmQganF1ZXJ5LXVpIHRvIG9wZXJhdGUuICBUaGVyZWZvcmUgeW91ciBzaXRlIG1heSBicmVhayBvbiB1cGdyYWRlLiAgVG8gZm9yY2UgdGhlIG9sZCA8ZW0+KGRlcHJlY2F0ZWQpPC9lbT4gY2FsZWRuYXIgdmlldywgY2hhbmdlIHlvdXIgY2FsbCB0byA8Y29kZT57Q0dDYWxlbmRhciBkaXNwbGF5PWNhbGVuZGFyfTwvY29kZT48L3A+CiAgICAgPHA+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiAgRml4ZWQgZXJyb3JzIGluIG1hbnkgb2YgdGhlIGRpc3BsYXkgdGVtcGxhdGVzLjwvcD4KCTx1bD4KCTxsaT5WZXJzaW9uIDEuMTUKCTx1bD4KCSAgIDxsaT5JbnRyb2R1Y2VzIHNlcGFyYXRlIHNtYXJ0eSBzY29wZXMgZm9yIGFsbCBmcm9udGVuZCwgYW5kIHNvbWUgYmFja2VuZCBkaXNwbGF5cy48L2xpPgoJICAgPGxpPlVwZ3JhZGVzIGZ1bGxjYWxlbmRhciB0byB0aGUgbGF0ZXN0IHJlbGVhc2VkIHZlcnNpb24uPC9saT4KCSAgIDxsaT5BZGRzIHRoZSBmdWxsY2FsZW5kYXIgYWN0aW9uIHRvIHRoZSBmcm9udGVuZCwgd2hpY2ggaXMgbm93IHRoZSBkZWZhdWx0IGFjdGlvbi4gKHJlcXVpcmVzIGpxdWVyeSBhbmQganF1ZXJ5LXVpKTwvbGk+CiAgICAgICAgICAgPGxpPkFkZHMgc3VwcG9ydCBmb3IgYW4gaWNhbCBmZWVkIHRvIGhpbGl0ZSBob2xpZGF5cyBpbiBmdWxsY2FsZW5kYXIgdmlld3MuPC9saT4KCSAgIDxsaT5OdW1lcm91cyBidWcgZml4ZXMuPC9saT4KCTwvdWw+Cgk8L2xpPgoJPGxpPlZlcnNpb24gMS4xNS4xCgk8dWw+CgkgICA8bGk+Rml4ZXMgZXJyb3Igd2l0aCBldmVudCBkaXNwbGF5IGluIGFkbWluIGFuZCBmcm9udGVuZCBpZiB0aGVyZSB3ZXJlIG5vIGhvbGlkYXlzLjwvbGk+Cgk8L3VsPgoJPC9saT4KCTxsaT5WZXJzaW9uIDEuMTUuMgoJPHVsPgoJICAgPGxpPkZpeGVzIGphdmFzY3JpcHQgZXJyb3JzIHdpdGggZGF0ZSBmb3JtYXRzIGluIGZ1bGxjYWxlbmRhciBpbiB0aGUgYWRtaW4gcGFuZWwuPC9saT4KCTwvdWw+Cgk8bGk+VmVyc2lvbiAxLjE1LjIKCTx1bD4KCSAgIDxsaT5BZGRzIG1pc3NpbmcgY29kZSBmcm9tIHVwZ3JhZGUgcm91dGluZSB0byBjcmVhdGUgYSBuZXcgc3lzdGVtIGRlZmF1bHQgYW5kIGluaXRpYWwgZnVsbGNhbGVuZGFyIHRlbXBsYXRlLjwvbGk+Cgk8L3VsPgoJPC9saT4KICAgICAgICA8bGk+VmVyc2lvbiAxLjE1LjMKICAgICAgICA8dWw+CiAgICAgICAgICAgPGxpPkFkZHMgbWlzc2luZyB1cGdyYWRlIHJvdXRpbmUgdG8gcG9wdWxhdGUgc2FtcGxlIGZ1bGxjYWxlbmRhciB0ZW1wbGF0ZS48L2xpPgogICAgICAgIDwvdWw+CiAgICAgICAgPGxpPlZlcnNpb24gMS4xNS40CiAgICAgICAgPHVsPgoJICAgPGxpPkNhdGVnb3J5IHBhcmFtIG5vdyB3b3JrcyBmb3IgdGhlIGZ1bGxjYWxlbmRhciBhY3Rpb24uPC9saT4KCSAgIDxsaT5GaXhlcyBhbiBpc3N1ZSB3aXRoIHdlZWtseSByZWN1cnJpbmcgZXZlbnRzLjwvbGk+CgkgICA8bGk+bWlub3IgVUkgY2hhbmdlcyBpbiB0aGUgYWRkIGV2ZW50IHRlbXBsYXRlLjwvbGk+CgkgICA8bGk+bWlub3IgYnVnIGZpeGVzLjwvbGk+CiAgICAgICAgPC91bD4KCTwvbGk+CiAgICAgICAgPGxpPlZlcnNpb24gMS4xNS41CiAgICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaT5GaXhlcyBwcm9ibG9lbSB3aXRoIGNoYW5naW5nIGZpZWxkIG5hbWVzLjwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgIDwvbGk+CiAgICAgICAgPGxpPlZlcnNpb24gMS4xNS42CiAgICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaT5GaXhlcyBwcm9ibG9lbSB3aXRoIGRpc3BsYXlpbmcgY2hpbGQgZXZlbnRzIGluIGZ1bGxjYWxlbmRhciB2aWV3IDxlbT4oTm90ZTogZnVsbGNhbGVuZGFyIHRlbXBsYXRlIG5lZWRzIHRvIGJlIHJlc2V0IHRvIGZhY3Rvcnkgc2V0dGluZ3MpPC9lbT48L2xpPgogICAgICAgICAgICA8bGk+QWRkcyBzYW1wbGUgZGF0ZSBmb3JtYXR0aW5nIHRvIGZ1bGxjYWxlbmRhcjwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgIDwvbGk+CiAgICAgICAgPGxpPlZlcnNpb24gMS4xNS44CiAgICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaT5FbmhhbmNlIHRoZSBpbWFnZSB1cGxvYWQgZGlyZWN0b3J5IGJlaGF2aW9yIHNvIHRoYXQgcGF0aHMgcmVsYXRpdmUgdG8gdGhlIHJvb3Qgb3IgdXBsb2FkcyBkaXJlY3RvcnkgY2FuIGJlIHNwZWNpZmllZC48L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICA8L2xpPgogICAgIDwvdWw+CiAgPC9saT4KICA8bGk+VmVyc2lvbiAxLjE0LngKICA8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IC0gVGhlIDEuMTQgc2VyaWVzIGludHJvZHVjZXMgYSBncmVhdCBkZWFsIG9mIGltcHJvdmVtZW50cy4gIEl0IGFsc28gZml4ZXMgYSBsb3Qgb2Ygb3V0c3RhbmRpbmcgaXNzdWVzLiAgVGhlcmUgd2lsbCBwcm9iYWJseSBiZSB0ZW1wbGF0ZSBpbmNvbXBhdGliaWxpdGllcy48L3A+CiAgPHA+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiAtIEZ1dHVyZSByZWxlYXNlcyBpbiB0aGlzIHNlcmllcyB3aWxsIGJlIHJlcGxhY2luZyB0aGUgZnJvbnRlbmQgY2FsZW5kYXIgdmlldyB3aXRoIGZ1bGxjYWxlbmRhci48L3A+CiAgICA8dWw+Cgk8bGk+VmVyc2lvbiAxLjE0LjQKICAgICAgICAgIDx1bD4KCSAgICA8bGk+Zml4ZXMgdG8gZW50aXRpZXMgd2l0aCByZXNwZWN0IHRvIHRoZSBmcm9udGVuZCBmb3JtLiAgTm93IGl0IGlzIHBvc3NpYmxlIHRvIHN1Ym1pdCBIVE1MIHZpYSBhbGwgdGV4dCBhcmVhcy4gIEhUTUwgaXMgc2FuaXRpemVkIGJlZm9yZSBiZWluZyBzdG9yZWQuICBUZXh0IGlucHV0IGZpZWxkcyBhcmUgYWxzbyBzYW5pdGl6ZWQgb24gZnJvbnRlbmQgZm9ybXMuICA8c3Ryb25nPk5vdGU6PC9zdHJvbmc+VGhpcyBtYXkgaW50cm9kdWNlIGEgY29tcGF0aWJpbGl0eSBwcm9ibGVtLjwvbGk+CiAgICAgICAgICAgIDxsaT5Ob3cgcmVxdWlyZXMgUEhQIDUuNC4zKzwvbGk+CiAgICAgICAgICA8L3VsPgoJPC9saT4KCgoJPGxpPlZlcnNpb24gMS4xNC4zCgk8cD5UaGUgMS4xNC54IHNlcmllcyBzdG9wcyB1c2luZyB0aGUgaGFyZGNvZGVkIG1vbnRoIGFuZCBkYXkgbmFtZXMgaW4gdGhlIGxhbmcgZmlsZSBhbmQgYmVnYW4gdXNpbmcgbG9jYWxlIHNwZWNpZmllZCBkYXRlIG5hbWVzLiAgSWYgeW91IGFyZSBlbmNvdW50ZXJpbmcgYW4gJ29mZiBieSBvbmUnIHByb2JsZW0gaW4gdGhlIENHQ2FsZW5kYXIgZGlzcGxheSB0ZW1wbGF0ZXMgeW91IHdpbGwgd2FudCB0byBmaXggdXAgeW91ciBmcm9udGVuZCB0ZW1wbGF0ZXMuICBSZXN0b3JpbmcgZnJvbnRlbmQgdGVtcGxhdGVzIHRvIGZhY3RvcnkgZGVmYXVsdHMgc2hvdWxkIHNvbHZlIHRoZSBpc3N1ZS4gIEVzc2VudGlhbGx5LCB5b3Ugc2hvdWxkIG5vdCB1c2UgdGhlIHskbW9udGhfbmFtZXN9IG9yIHskZGF5X25hbWVzfSBhcnJheSAodGhleSBhcmUgb25lIGJhc2VkKS4gIEFuZCBpbnN0ZWFkIHNob3VsZCB1c2UgdGhlIHskZXZlbnQuZXZlbnRfZGF0ZV9zdGFydH0gYW5kIHskZXZlbnQuZXZlbnRfZGF0ZV9lbmR9IHNtYXJ0eSB2YXJpYWJsZXMsIGFuZCB0aGUgZGF0ZV9mb3JtYXQgbW9kaWZpZXIgdG8gZm9ybWF0IGRhdGVzIGFwcHJvcHJpYXRlbHkuPC9wPgoJPHVsPgoJICA8bGk+Rml4ZXMgdG8gdGhlIHVwY29taW5nIGxpc3QgdGVtcGxhdGUuPC9saT4KCTwvdWw+Cgk8L2xpPgoKCTxsaT5WZXJzaW9uIDEuMTQuMgoJPHVsPgoJPGxpPlJlc3RvcmVzIGltcG9ydCBsaW5rIChvb3BzKS48L2xpPgoJPC91bD4KCTwvbGk+CgoJPGxpPlZlcnNpb24gMS4xNC4yCgk8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+ICBpbiB0aGUgbmVhciBmdXR1cmUgKGRlcGVuZGluZyB1cG9uIHNwb25zb3JzaGlwKSBJIHBsYW4gdG8gcmVwbGFjZSB0aGUgY2FsZW5kYXIgdmlldyB3aXRoIGFuIGFqYXh5IGNhbGVuZGFyIChmdWxsY2FsZW5kYXIpLiAgIFRoaXMgd2lsbCBwcm9iYWJseSBicmVhawogICAgIGNvbXBhdGliaWxpdHkuICBZb3UgYXJlIGZvcmV3YXJuZWQuPC9wPgoJPHVsPgoJPGxpPkJ1ZyBmaXhlcy48L2xpPgoJPGxpPlJldmlzZSBsaXN0IHRlbXBsYXRlIHRvIHVzZSBkYXRlX2Zvcm1hdCBpbnN0ZWFkIG9mIGhhcmRjb2RlZCBtb250aC9kYXkgc3R1ZmYuIChzdGlsbCBoYXZlIHRvIGRvIGNhbGVuZGFyIHRlbXBsYXRlKTwvbGk+Cgk8bGk+UmV2aXNlZCB1cGNvbWluZyBsaXN0IGFjdGlvbiB0byBjYWxsIHRoZSB0ZW1wbGF0ZSBldmVuIGlmIHRoZXJlIGFyZSBubyBldmVudHMuPC9saT4KCTxsaT5SZXZpc2VkIHRoZSBldmVudCBsb2FkZXIgdG8gZmlndXJlIG91dCBhIGNvbG9yIGZvciBldmVudCAoYmFzZWQgb24gY2F0ZWdvcnkgY29sb3JzKS48L2xJPgoJPGxpPlJldmlzZSB0aGUgbGlzdCwgYW5kIGNhbGVuZGFyIHRlbXBsYXRlcyB0byBzaG93IHNvbWUgYWpheHkgc3R1ZmYsIGFuZCB0aGUgdXNlIG9mIGNvbG9ycy48L2xpPgoJPC91bD4KCTwvbGk+CgoJPGxpPlZlcnNpb24gMS4xNC4xCgk8dWw+Cgk8bGk+QnVnIGZpeGVzLjwvbGk+Cgk8bGk+V2VlayBhbmQgZGF5IG5hbWVzIGFyZSBub3cgZ2VuZXJhdGVkIGJ5IHRoZSBsb2NhbGUsIG5vdCBmcm9tIGxhbmcgc3RyaW5ncy48L2xpPgoJPC91bD4KCTwvbGk+CgoJPGxpPlZlcnNpb24gMS4xNAoJPHVsPgoJPGxpPkltcGxlbWVudHMgZnVsbGNhbGVuZGFyIGZvciB0aGUgcHJpbWFyeSBldmVudCBsaXN0aW5nLgoJPHVsPgogIAkgIDxsaT5EcmFnIGFuZCBkcm9wIGV2ZW50cyB0byBtb3ZlIHRoZW0gdG8gZGlmZmVyZW50IGRhdGVzLCBvciBhZGp1c3QgZW5kIHRpbWUgKGFqYXgpPC9saT4KCSAgPGxpPkRlbGV0ZSBldmVudHMgdmlhIGFqYXg8bGk+Cgk8L3VsPgoJPC9saT4KCTxsaT5BZGRzIHRoZSBBbGwgZGF5IGV2ZW50IGZsYWc8L2xpPgoJPGxpPkFzc29jaWF0ZXMgY29sb3JzIHdpdGggY2F0ZWdvcmllcyAoc2V4eSBpbiB0aGUgZnVsbGNhbGVuZGFyIHZpZXcpLi4uIG5vdCB5ZXQgYXZhaWxhYmxlIGluIHRoZSBmcm9udGVuZC48L2xpPgoJPGxpPlJld29yayB0byB0aGUgYWRkL2VkaXQgZXZlbnQgZm9ybSAoYWRtaW4pPC9saT4KCTxsaT5Ob3cgZGVwZW5kcyBvbiBDR1NpbXBsZVNtYXJ0eS48L2xpPgoJPGxpPmJ1ZyBmaXhlcy48L2xpPgoJPC91bD4KCTwvbGk+CiAgICA8L3VsPgogIDwvbGk+CgoKPGxpPlZlcnNpb24gMS4xMy54CiAgPHVsPgogICAgPGxpPkFkZHMgdHdvIG5ldyBwZXJtaXNzaW9ucyAoQWRkIENhbGVuZGFyIEV2ZW50cywgRWRpdCBNeSBDYWxlbmRhciBFdmVudHMpLjwvbGk+CiAgICA8bGk+TWlub3IgY2xlYW51cCBvZiB0aGUgYWRtaW4gYWRkIGV2ZW50IHRlbXBsYXRlLjwvbGk+CiAgICA8bGk+TWlub3IgdHdlYWtpbmcgdG8gdGhlIGV2ZW50IGxpc3QgdGVtcGxhdGUuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbiAxLjEyLnggLSBOb3ZlbWJlciwgMjAxMwogICA8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IEluIHRoZSBmdXR1cmUgSSB3aWxsIGJlIG1vdmluZyBpbWFnZXMgaW50byB0aGVpciBvd24gZGlyZWN0b3J5LCBhbmQgY2xlYW5pbmcgdXAgcHJlZmVyZW5jZXMgbW9yZS4gIFRoaXMgd2lsbCBwcm9iYWJseSBjYXVzZSBjb21wYXRpYmlsaXR5IHByb2JsZW1zIGluIHRoZSBmdXR1cmUuPC9wPgogIDx1bD4KICAgIDxsaT5SZW1vdmVkIGFsbCBpbWFnZSBjcm9wcGluZyBvbiB1cGxvYWQuCiAgICAgICA8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFRoaXMgY291bGQgY2F1c2UgY29tcGF0aWJpbGl0eSBwcm9ibGVtIHdpdGggZGlzcGxheWluZyBpbWFnZXMgaW4geW91ciBleGlzdGluZyB0ZW1wbGF0ZXMuPC9wPgogICAgPC9saT4KICAgIDxsaT5BZGRzIHRoZSBmaWxlIGF0dGFjaG1lbnQgZmllbGQgdHlwZS48L2xpPgogICAgPGxpPkNvZGUgY2xlYW51cCBhbmQgYnVnIGZpeGVzLjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb24gMS4xMS54IC0gT2N0b2JlciwgMjAxMwogIDxwPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gVGhlcmUgcHJvYmFibHkgd2lsbCBiZSBjb21wYXRpYmlsaXR5IHByb2JsZW1zIGZvciBwZW9wbGUgdXBncmFkaW5nIHRvIENHQ2FsZW5kYXIgMS4xMS54IGFuZCBiZXlvbmQgZnJvbQogIHByZXZpb3VzIHZlcnNpb25zLiAgUGFydGljdWxhcmx5IHJlbGF0ZWQgdG8gdGhlIGRyb3BwZWQgcGFyYW1ldGVycyA8ZW0+KHNlZSBiZWxvdyk8L2VtPiBhbmQgc29tZSBvZiB0aGUgaW5saW5lIGZpeGVzIGFuZCBjaGFuZ2VzLgogIFlvdSB3aWxsIG5lZWQgdG8gZG8gdGVzdGluZyBvbiB5b3VyIENHQ2FsZW5kYXIgaW5zdGFsbHMgYW5kIGZpeCBhbnkgY2FsbHMgdG8gQ0dDYWxlbmRhciwgYW5kIGFsc28gbWFrZSBzb21lIGNoYW5nZXMgdG8gdGVtcGxhdGVzLjwvcD4KICA8dWw+CiAgICA8bGk+QnVnIGZpeGVzLjwvbGk+CiAgICA8bGk+RHJvcHBlZCB0aGUgY29sdW1uIHBhcmFtZXRlcnMgKHRoaXMgaXMgYSBkZXNpZ24gcmVsYXRlZCBpdGVtLCBub3QgcmVsYXRlZCB0byBidXNpbmVzcyBsb2dpYyBhbmQgc2hvdWxkIGJlIGRvbmUgaW4gdGVtcGxhdGVzLikuPC9saT4KICAgIDxsaT5Ecm9wcGVkIHRoZSByZXR1cm5saW5rIHBhcmFtZXRlcnMgYXMgdGhleSBkaWRudCB3b3JrIHByb3Blcmx5LiAgVGhpcyBzaG91bGQgYmUgZG9uZSBpbiB0aGUgdGVtcGxhdGVzLiAgKGhpc3RvcnkuZ28oLTEpIG9yIHNvbWV0aGluZykuPC9saT4KICAgIDxsaT5Ecm9wcGVkIHRoZSBmaXJzdC1kYXktb2Ytd2VlayBwYXJhbWV0ZXIsIGFuZCByZXBsYWNlZCBpdCB3aXRoIGEgcHJlZmVyZW5jZS48L2xpPgogICAgPGxpPkFsbCBuYXZpZ2F0aW9uIGxpbmtzIG9uIHByb3RvdHlwZSB0ZW1wbGF0ZXMgbm93IHVzZSBub24taW5saW5lIFVSTFMuPC9saT4KICAgIDxsaT5BZGRlZCBkaXNwbGF5PXdlZWtsaXN0PC9saT4KICAgIDxsaT5SZWZhY3RvcmVkIHRoZSBldmVudCBkaXNwbGF5IGluIHRoZSBhZG1pbiBwYW5lbC4KICAgICAgPHVsPgogICAgICAgIDxsaT5FdmVudHMgYXJlIG5vdyBkaXNwbGF5ZWQgb25seSBmb3IgYSBzcGVjaWZpZWQgbW9udGggYW5kIHllYXIuPC9saT4KICAgICAgICA8bGk+RWFzeSBzZWxlY3Rpb24gb2YgbW9udGggYW5kIHllYXIsIGFuZCBzY3JvbGxpbmcgYmV0d2VlbiBtb250aHMuPC9saT4KICAgICAgICA8bGk+VGhlIGFiaWxpdHkgdG8gZWRpdCBhIHBhcmVudCBldmVudCBmcm9tIGEgY2hpbGQgZXZlbnQuPC9saT4KICAgICAgICA8bGk+RmlsdGVycyBhcmUgc3RvcmVkIGluIHRoZSB1c2VyIHNlc3Npb24uPC9saT4KICAgICAgPC91bD4KICAgIDwvbGk+CiAgICA8bGk+UmVmYWN0b3JlZCBhbmQgY2hlY2tlZCBhbGwgcGFyYW1ldGVycyBwYXNzZWQgdG8gbmF2aWdhdGlvbiBsaW5rcyBpbiB0aGUgaW5kaXZpZHVhbCB2aWVld3M8L2xpPgogICAgPGxpPkFsbCBuYXZpZ2F0aW9uIHZpZXdzIGhhdmUgaW5fIGFuZCBuaV8gdmFyaWFudHMgdG8gYWxsb3cgc2VsZWN0aW5nIGFuIGlubGluZSwgb3Igbm9uIGlubGluZSB2YXJpYW50IG9mIHRoZSBuYXZpZ2F0aW9uIGxpbmsuICBUaG91Z2ggdGhlIG5pXyBwcmVmaXhlZCBVUkxTIG1heSBpbmZhY3QgYmUgaW5saW5lIGxpbmtzIGRlcGVuZGluZyB1cG9uIHRoZSB1c2Vfc2Vzc2lvbiBzdHVmZi48L2xpPgogICAgPGxpPkRheSB2aWV3IFVSTFMgZnJvbSB0aGUgY2FsZW5kYXIgdmlldyBub3cgaGF2ZSBuaV8gYW5kIGluXyB2YXJpYW50cy48L2xpPgogICAgPGxpPlRoZSBpbmxpbmUgcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQsIGFuZCB3aWxsIGJlIGRyb3BwZWQgYXQgdGhlIG5leHQgbWFqb3IgdmVyc2lvbi48L2xpPgogICAgPGxpPlJlZmFjdG9yZWQgYWxsIGV2ZW50IHZpZXdzCiAgICAgIDx1bD4KICAgICAgICA8bGk+QWxsIGV2ZW50IHZpZXdzIHVzZSB0aGUgY2djX2V2ZW50X2xvYWRlciBjbGFzcy48L2xpPgogICAgICAgIDxsaT5PcHRpbWl6ZSBjdXN0b20gZmllbGQsIGFuZCBjYXRlZ29yeSBsb2FkaW5nLjwvbGk+CiAgICAgICAgPGxpPkN1c3RvbSBmaWVsZHMgYW5kIGNhdGVnb3JpZXMgYXJlIG5vdyBjb3BpZWQgZnJvbSB0aGUgcGFyZW50IGV2ZW50IGlmIG5vdCBzcGVjaWZpZWQgZm9yIHRoZSBjaGlsZCBldmVudC48L2xpPgogICAgICAgIDxsaT5BbGwgbGlua3MvVVJMcyBnZW5lcmF0ZWQgdG8gZXZlbnRzIHVzZSBwcmV0dHkgVVJMUyAoaWYgZW5hYmxlZCkgYW5kIGFyZSBub24gaW5saW5lLjwvbGk+CiAgICAgICAgPGxpPmF1dGhvciBmaWVsZCBtYXkgYmUgcHJlc2VudCBmb3IgZWFjaCBldmVudCB0aGF0IGhhcyBhbiBhdXRob3IuLi4gYnV0IGF1dGhvcm5hbWUgKHdoaWNoIHdhcyBpbmNvbnNpc3RlbnRseSBhcHBsaWVkKSBoYXMgYmVlbiBkcm9wcGVkLiAgVXNlIGEgc21hcnR5IHBsdWdpbiB0byBleHRyYWN0IHRoZSBhdXRob3IgaW5mb3JtYXRpb24gYW5kIGRpc3BsYXkgaXQuPC9saT4KICAgICAgICA8bGk+dXNlX3Nlc3Npb24gbm93IGF1dG9tYXRpY2FsbHkgdHVybnMgb24gaW5saW5lIG1vZGUuLiBhbmQgd2lsbCB1c2UgaW5saW5lIG1vZGUgZm9yIGV2ZW4gbmlfIGxpbmtzL3VybHM8L2xpPgogICAgICAgIDxsaT51c2Vfc2Vzc2lvbiB2YWx1ZSBpcyBvbmx5IHVzZWQgYXMgYSBwcmVmaXggZm9yIHRoZSBzZXNzaW9uIGtleS4gIFRoZSBzZXNzaW9uIGtleSBpcyB1bmlxdWUgdG8gYWxsIGNhbGxzIG9mIENHQ2FsZW5kYXIuPC9saT4KICAgICAgICA8bGk+ZmllbGQgb3V0cHV0IGlzIG5vdyBjb25zaXN0ZW50IHdpdGggZmllbGQgb3JkZXJpbmcgKGJ5IGRlZmF1bHQpLjwvbGk+CiAgICAgIDwvdWw+CiAgICA8L2xpPgogICAgPGxpPlJlZmFjdG9yZWQgdGhlIGFkbWluIGNhdGVnb3JpZXMgdGFiLgogICAgICA8dWw+CiAgICAgICAgPGxpPkFkZHMgZHJhZyBhbmQgZHJvcCByZW9yZGVyaW5nLjwvbGk+CiAgICAgIDwvdWw+CiAgICA8L2xpPgogICAgPGxpPlJlZmFjdG9yZWQgdGhlIGFkbWluIGZpZWxkcyB0YWIuCiAgICAgIDx1bD4KICAgICAgICA8bGk+QWRkcyBkcmFnIGFuZCBkcm9wIHJlb3JkZXJpbmcuPC9saT4KICAgICAgICA8bGk+QWRkcyB0aGUgYWJpbGl0eSB0byBzcGVjaWZ5IHdldGhlciBhIHRleHQgYXJlYSBmaWVsZCBoYXMgYSB3eXNpd3lnIChhZG1pbiBpbnRlcmZhY2Ugb25seSkuPC9saT4KICAgICAgPC91bD4KICAgIDwvbGk+CiAgICA8bGk+TW9yZTwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb24gMS4xMC4yIC0gRmVicnVhcnksIDIwMTMKICA8dWw+CiAgICA8bGk+QnVnIGZpeGVzLjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb24gMS4xMCAtIEF1Z3VzdCAyMDEyCiAgPHVsPgogICAgPGxpPkFkZHMgYSB0b2dnbGUgdG8gdXNlIHd5c2l3eWdzIGZvciB0ZXh0YXJlYSBjdXN0b20gZmllbGRzLjwvbGk+CiAgICA8bGk+QWRkcyBhIHByZWZlcmVuY2UgZm9yIHRoZSBmcmllbmRseSBuYW1lLjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuOS43IC0gSnVseSAyMDEyCiAgPHVsPgogICA8bGk+TnVtZXJvdXMgbWlub3IgYnVnIGZpeGVzLjwvbGk+CiAgIDxsaT5Nb3ZlIGhlbHAgb3V0IG9mIGxhbmcgZmlsZS48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjkuNiAtIEFwcmlsIDIwMTIKICA8dWw+CiAgIDxsaT5OdW1lcm91cyBtaW5vciBidWcgZml4ZXMuPC9saT4KICAgPGxpPkZpeCBqYXZhc2NyaXB0IGlzc3VlIGluIGVkaXQgZXZlbnQuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS45LjQgLSBNYXJjaCwgMjAxMgogIDx1bD4KICAgPGxpPk51bWVyb3VzIG1pbm9yIGJ1ZyBmaXhlcy48L2xpPgogICA8bGk+Rml4ZWQgbm90aWNlcyBpbiBkZWZhdWx0IHRlbXBsYXRlcy48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjkuMSAtIE1hcmNoLCAyMDEyCiAgPHVsPgogICA8bGk+QWRkZWQgYWJpbGl0eSB0byBzcGVjaWZ5IGltcG9ydCBjb2x1bW4gZGVsaW1pdGVyPC9saT4KICAgPGxpPk1pbm9yIGJ1ZyBmaXhlcy48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjkgLSBKYW51YXJ5LCAyMDEyCiAgPHVsPgogICA8bGk+SW1wcm92ZWQgZXZlbnQgaW1wb3J0IGNhcGFiaWxpdGllcy48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjguMiAtIE9jdG9iZXIsIDIwMTEKICA8dWw+CiAgIDxsaT5NaW5vciBldmVudCBuYW1lIGZpeC48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjcuNSAtIEF1Z3VzdCwgMjAxMQogIDx1bD4KICA8bGk+QWRzIGZpcnN0IGRheSwgYW5kIGxhc3QgZGF5IHN0dWZmIHRvIHRoZSBldmVudCBpbiB0aGUgY2FsZW5kYXIgdmlldy48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjcuMyAtIEp1bHksIDIwMTEKICA8dWw+CiAgPGxpPk1vcmUgRml4ZXMgdG8gdGhlIGxpc3Qgdmlldy48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjcuMiAtIEp1bHksIDIwMTEKICA8dWw+CiAgPGxpPkZpeGVzIHRvIHRoZSBsaXN0IHZpZXcuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS43LjEgLSBKdWx5LCAyMDExCiAgPHVsPgogIDxsaT5UaGUgdW5pcXVlX29ubHkgcGFyYW1ldGVyIG5vdyBkZWZhdWx0cyB0byAmcXVvdDtvZmYmcXVvdDsgZm9yIGFsbCB2aWV3cy48L2xpPgogIDxsaT5BZGRzIHRoZSBkaXNwbGF5Zm9yZGF5IHBhcmFtZXRlciB0byB0aGUgdXBjb21pbmdsaXN0IHZpZXcuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS43IC0gSnVuZSwgMjAxMQogIDx1bD4KICA8bGk+QWRkcyB0aGUgYWJpbGl0eSB0byBmaWx0ZXIgdGhlICZxdW90O215ZXZlbnRzJnF1b3Q7IHZpZXcgYnkgYSBjYXRlZ29yeS48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjYuMSAtIEFwcmlsLCAyMDExCiAgPHVsPgogICAgPGxpPlJlbW92ZSBkZWJ1ZyBzdGF0ZW1lbnRzLjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuNiAtIEFwcmlsLCAyMDExCiAgPHVsPgogICAgPGxpPkFkZHMgYSBjb21wYW55IGRpcmVjdG9yeSBmaWVsZCB0eXBlLjwvbGk+CiAgICA8bGk+QnVnIEZpeGVzLjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuNS43IC0gU2VwdGVtYmVyIDIwMTAKICA8dWw+CiAgICA8bGk+TW9yZSBmaXhlcyB0byBkaXNwbGF5Y2FsZW5kYXIgYW5kIGRpc3BsYXl1cGNvbWluZ2xpc3QuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS41LjYgLSBTZXB0ZW1iZXIgMjAxMAogIDx1bD4KICAgIDxsaT5GaXhlcyB0byB1cGNvbWluZyBsaXN0IHBhZ2luYXRpb24uPC9saT4KICAgIDxsaT5GaXhlcyB0byB1bmlxdWUgb25seSBwYXJhbSBpbiB1cGNvbWluZyBsaXN0LjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuNS41IC0gQXVndXN0IDIwMTAKICA8dWw+CiAgICA8bGk+Tm93IFJlcXVpcmUgQ0dFeHRlbnNpb25zIDEuMTkuNDwvbGk+CiAgICA8bGk+QWRkcyBhIHByZWZlcmVuY2UgZm9yIHRoZSBVUkwgcHJlZml4LjwvbGk+CiAgICA8bGk+QWRkcyBhIHByZWZlcmVuY2UgdG8gZGVmYXVsdCBuZXcgZXZlbnRzIHRvIGFsbCBkYXkgZXZlbnRzLjwvbGk+CiAgICA8bGk+QWRkcyBhIHByZWZlcmVuY2UgZm9yIHRoZSBkZWZhdWx0IHN0YXJ0IHRpbWUgZm9yIG5vbi1hbGxkYXkgZXZlbnRzLjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuNS40IC0gQXVndXN0IDIwMTAKICA8dWw+CiAgICA8bGk+QnVnIGZpeGVzLjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuNS4zIC0gSnVseSAyMDEwCiAgPHVsPgogICAgPGxpPk1pbm9yIGJ1ZyBmaXguPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS41LjIgLSBBcHJpbCAyMDEwCiAgPHVsPgogICAgPGxpPlJlbW92ZSBsZWZ0b3ZlciBkZWJ1ZyBzdGF0ZW1lbnRzLjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb246IDEuNS4xIC0gQXByaWwgMjAxMAogIDx1bD4KICAgIDxsaT5CdWcgZml4ZXMuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS41IC0gQXByaWwgMjAxMAogIDx1bD4KICAgIDxsaT5BZGRzIHRoZSBhYmlsaXR5IHRvIHBlcmZvcm0gc2VhcmNoIG9uIGN1c3RvbSBmaWVsZCB2YWx1ZXMuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS40IC0gQXByaWwgMjAxMAogIDx1bD4KICAgIDxsaT5CdWcgZml4ZXMgd3J0IGRlbGV0aW5nIGV2ZW50cy48L2xpPgogICAgPGxpPkFkZHMgdGhlIGFiaWxpdHkgZm9yIGxvZ2dlZCBpbiBmcm9udGVuZCB1c2VycyB0byBhZGQsIGVkaXQsIG9yIGRlbGV0ZSBjYWxlbmRhciBldmVudHMuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS4zLjEgLSBNYXJjaCAyMDEwCiAgPHVsPgogICAgPGxpPk1pbm9yIGJ1Z2ZpeCBpbiBpbnN0YWxsZXIuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS4zIC0gRGVjZW1iZXIgMjAwOQogIDx1bD4KICAgIDxsaT5BZGRzIHRoZSBjb25jZXB0IG9mIGFsbCBkYXkgZXZlbnRzLjwvbGk+CiAgICA8bGk+QWRkcyB0aGUgYWJpbGl0eSB0byBhbGxvdyBldmVudHMgdG8gb3ZlcmxhcCBvciBub3QuPC9saT4KICAgIDxsaT5BZGRzIHRoZSBhYmlsaXR5IHRvIHJlbW92ZSBhbGwgY29uZmxpY3Rpbmcvb3ZlcmxhcHBpbmcgZXZlbnRzLjwvbGk+CiAgICA8bGk+VmFyaW91cyBidWcgZml4ZXMuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS4yLjUgLSBTZXB0ZW1iZXIgMjAwOQogIDx1bD4KICAgIDxsaT5NaW5vciBidWcgZml4ZXMuPC9saT4KICA8L3VsPgo8L2xpPgoKPGxpPlZlcnNpb246IDEuMi40IC0gU2VwdGVtYmVyIDIwMDkKICA8dWw+CiAgICA8bGk+QWRkcyBzdXBwb3J0IGZvciB0ZXh0YXJlYSBmaWVsZHMuPC9saT4KICAgIDxsaT5NaW5vciBidWcgZml4ZXMuPC9saT4KICA8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbjogMS4yLjMgLSBTZXB0ZW1iZXIgMjAwOQogIDx1bD4KICAgIDxsaT5GaXhlcyBzdHVwaWQgZXJyb3JzIHdpdGggdGhlIGluc3RhbGxlci48L2xpPgogICAgPGxpPkFkZHMgdW5pcXVlX29ubHkgcGFyYW1ldGVyLjwvbGk+CiAgICA8bGk+QWRkcyBiYXNpYyBpY2FsIHN1cHBvcnQgaW4gZXZlbnQgdmlld3MuKFRlZCk8L2xpPgogICAgPGxpPk1pbm9yIGJ1ZyBmaXhlcy48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjIuMiAtIE1heSAyMDA5CiAgPHVsPgogICAgPGxpPkZpeGVzIGVkZ2UgY2FzZSBwcm9ibGVtIHdpdGggZGF0ZXMgcmVjdXJyaW5nIG1vbnRobHkgb24gdGhlIE50aCB3ZWVrZGF5PC9saT4KICAgIDxsaT5GaXhlcyB1cGNvbWluZ2xpc3Qgdmlldy48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjIuMSAtIE1heSAyMDA5CiAgPHVsPgogICAgPGxpPkZpeGVzIHByb2JsZW0gd2l0aCBkYXRlcyByZWN1cnJpbmcgbW9udGhseSBvbiB0aGUgTnRoIHdlZWtkYXk8L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjIgLSBBcHJpbCAyMDA5CiAgPHVsPgogICAgPGxpPkFkZHMgcGFnaW5hdGlvbiB0byB1cGNvbWluZyBsaXN0IHZpZXcuPC9saT4KICAgIDxsaT5WYXJpb3VzIGJ1ZyBmaXhlcy48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5WZXJzaW9uOiAxLjEgLSBNYXJjaCAyMDA5CiA8dWw+CiAgIDxsaT5NaW5vciBidWcgZml4ZXMuPC9saT4KICAgPGxpPkFkZCBlbmhhbmNlZCBtb250aGx5IHJlY3VyaW5nIGV2ZW50IGNhcGFiaWxpdGllcy48L2xpPgogICA8bGk+QWRkIHNlYXJjaCBmb3JtLjwvbGk+CiA8L3VsPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMS4wPC9wPgo8cD5Gb3JrIHZlcnNpb24gMC44LjIgb2YgdGhlIENhbGVuZGFyIG1vZHVsZSwgYW5kIGNvbXBsZXRlbHkgcmUtZG8gZXZlbnQgYWRkaW5nLCBlZGl0aW5nLCByZWN1cnJpbmcgZXZlbnRzLCBhbmQgdGVtcGxhdGVzLiAgVGhpcyBtb2R1bGUgaXMgbm90IGNvbXB0aWJsZSB3aXRoIHByZXZpb3VzIHZlcnNpb25zIG9mIHRoZSBDYWxlbmRhciBtb2R1bGU8L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjguMjwvcD4KICA8cD5GaXggdG8gcHJldHR5IHVybHMuPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC44LjE8L3A+CiAgPHA+TWlub3IgZml4IHRvIHNlYXJjaCBpbnRlZ3JhdGlvbiB3aGVuIHVwZGF0aW5nIGFuIGV2ZW50LjwvcD4KICA8cD5BZGQgY2F0ZWdvcmllcyBpbmZvcm1hdGlvbiB0byB0aGUgbGlzdCBkaXNwbGF5LjwvcD4KPC9saT4KPGxpPjxwPlZlcnNpb246IDAuODwvcD4KICA8cD5BZGRzIHNlYXJjaCBjYXBhYmlsaXRpZXM8L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjcuMTQ8L3A+CiAgPHA+Rml4ZXMgYSBzZXJpb3VzIGlzc3VlIHRoYXQgY291bGQgcmVzdWx0IGluIHRob3VzYW5kcyBvZiBuZWVkbGVzcyBjYWxlbmRhciBlbnRyaWVzIGJlaW5nIGluc2VydGVkIGludG8gdGhlIHRhYmxlLjwvcD4KPC9saT4KPGxpPjxwPlZlcnNpb246IDAuNy4xMzwvcD4KICA8cD5GaXhlcyBmcmllbmRseSB1cmxzIGZvciBkZXRhaWwgYXJ0aWNsZXM8L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjcuMTI8L3A+CiAgPHA+Rml4ZXMgZmlsZSB1cGxvYWQgZmllbGRzPC9wPgogIDxwPkZpeGVzIGlzc3VlcyB3aXRoIHJlZmVyZW5jZXMgdG8gdGhlIEFsYnVtIG1vZHVsZTwvcD4KICA8cD5BZGRzIHJlY3VycmluZyBldmVudHM8L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjcuMTE8L3A+CiAgPHA+Rml4ZWQgYSBidWcgaW50cm9kdWNlZCBieSBicmluaW5nIGluIHRoZSBjYXRlZ29yaWVzLCB3aGVyZWJ5IHRoZSBqb2luIGRpZCBub3Qgd29yayBvbiBlYXJsaWVyIHZlcnNpb25zIG9uIG15U1FMLiAoY29kZXBvZXQpPC9wPgogIDxwPkFkZGVkIGEgbGlzdCBvZiBjYXRlZ29yaWVzIHRoYXQgZWFjaCBldmVudCBpcyBhc3NvY2lhdGVkIHdpdGggdG8gdGhlIGRhdGEgYXZhaWxhYmxlIHRvIHRoZSB0ZW1wbGF0ZS4gKGNvZGVwb2V0KTwvcD4KICA8cD5GaXhlZCBhIGJ1ZyBpbnRyb2R1Y2VkIGluIDAuNy4xMCB0aGF0IHByZXZlbnRzIGEgY2xlYW4gaW5zdGFsbCBmcm9tIHdvcmtpbmcsIGJlY2F1c2Ugb2YgYW4gZXh0cmEgY29tbWEgb24gdGhlIGVuZCBvZiB0aGUgZmllbGQgbGlzdCBmb3IgdGFibGUgY21zX21vZHVsZV9lY2FsYW5kZXJfZXZlbnRfZmllbGRfdmFsdWVzIChjb2RlcG9ldCk8L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjcuMTAgLSBjYWxndXkxMDAwPC9wPgo8cD5BZGRlZCBzdXBwb3J0IGZvciBmaWxlIHVwbG9hZHMgaW4gY3VzdG9tIGZpZWxkczwvcD4KPHA+QWRkZWQgdGhlIGFiaWxpdHkgdG8gc3VwcGx5IFwnbmV4dFwnIGFzIHRoZSBldmVudF9pZCBpbiB0aGUgZXZlbnQgZGlzcGxheSwgdG8gZGlzcGxheSB0aGUgbmV4dCB1cGNvbWluZyBldmVudC48L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjcuOTwvcD4KICA8cD5BZGRlZCBjdXN0b20gZmllbGRzIHRoYXQgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBlYWNoIGV2ZW50LjwvcD4KPC9saT4KCjxsaT48cD5WZXJzaW9uOiAwLjcuODwvcD4KICA8cD5GaXhlZCBhIGRldGFpbHBhZ2UvcmV0dXJubGluayBidWcuLi4gYWdhaW4uLi48L3A+CjwvbGk+Cgo8bGk+PHA+VmVyc2lvbjogMC43Ljc8L3A+CiAgPHA+QWRkZWQgYSBkZWZhdWx0IGNhdGVnb3J5PC9wPgogIDxwPkFkZGVkIGFuIG9wdGlvbiB0byBhbGxvdyBhbiBldmVudCB0byBiZSBmb3JjZWQgYSBtZW1iZXIgb2YgYXQgbGVhc3QgMSBjYXRlZ29yeTwvcD4KICA8cD5BZGRlZCBvcHRpb25zIG9mIGhvdyBtYW55IHllYXJzIGluIHRoZSBwYXN0IGFuZCBmdXR1cmUgeW91IHNob3VsZCBiZSBhYmxlIHRvIHNlbGVjdDwvcD4KICA8cD5Qcm9ncmVzcyB0b3dhcmRzIG1vcmUgdXB0b2RhdGUgQVBJLXVzYWdlLCB1c2luZyB0ZW1wbGF0ZXMsIGFjdGlvbnMgZXRjLjwvcD4KICA8cD5OdW1lcm91cyBidWdmaXhlczwvcD4KPC9saT4KCjxsaT48cD5WZXJzaW9uOiAwLjcuNjwvcD4KICA8cD5BZGRlZCBjb2x1bW4gc3R5bGUgb3V0cHV0IGZvciB1cGNvbWluZ2xpc3QgYW5kIHBhc3RsaXN0PC9wPgogIDxwPk1vdmVkIGV4YW1wbGUgc3R5bGVzaGVldCB0byB0aGUgc3R5bGVzaGVldGxpc3Q8L3A+CiAgPHA+QWRkZWQgdGFnZ2luZyBvZiBldmVudHMgYW5kIGRlbGV0aW9ucyBvZiB0YWdnZWQgb25lczwvcD4KICA8cD5SZXdvcmtlZCBmb3IgdXNlIG9mIGV4dGVybmFsIGFjdGlvbmZpbGVzPC9wPgogIDxwPkltcHJvdmVkIHRhYi1mdW5jdGlvbmFsaXkgYW5kIGFjdGlvbm1lc3NhZ2VzPC9wPgo8L2xpPgoKPGxpPjxwPlZlcnNpb246IDAuNy41PC9wPgogIDxwPkZpeGVkIGEgbG90IG9mIG9wZW5iYXNlZGlyLWlzc3VlczwvcD4KCjwvbGk+Cgo8bGk+PHA+VmVyc2lvbjogMC43LjQ8L3A+CiAgPHA+Rml4ZWQgaGFyZGNvZGVkIGxlbmd0aCBvZiB0aXRsZSBpbnB1dCBmaWVsZDwvcD4KICA8cD5GaXhlZCBzb21lIG1pc3NpbmcgbG9jYWxpemF0aW9uPC9wPgogIDxwPlJlbW92ZWQgc3VwcG9ydCBmb3IgcHJldHR5IHVybHMgKGl0IHdhcyBub3Qgd29ya2luZywgYXMgc29tZSBwYXJhbWV0ZXJzIHdlcmUgbWlzc2luZywgYW5kIHB1dHRpbmcgdGhlbSBpbiB3b3VsZCBoYXZlIG1hZGUgdGhlIHVybHMgdW5wcmV0dHkgYW55d2F5czwvcD4KCiAgPHA+VXBkYXRlZCBwZXJtaXNzaW9ucyBtb2RlbC4gIE5vdyBuZWVkIFwnTW9kaWZ5IFRlbXBsYXRlc1wnIHBlcm1pc3Npb24gdG8gbW9kaWZ5IHRoZSB0ZW1wbGF0ZXMsIGFuZCBcJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzXCcgcGVybWlzc2lvbiB0byBhZGp1c3QgdGhlIHByZWZlcmVuY2VzLjwvcD4KCjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjcuMzwvcD4KICAgIDxwPkFkZGVkIE1pbmltdW0gQ01TIFZlcnNpb248L3A+CiAgICA8cD5BZGRlZCB0aGUgcGFzdGxpc3Qgb3B0aW9uPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC43LjI8L3A+CiAgICA8cD5DTVMgMS4wIGNvbXBhdGlibGl0eTwvcD4KICAgIDxwPlNwbGl0IG91dCBpbnRvIG51bWVyb3VzIGZpbGVzIGZvciBiZXR0ZXIgbWVtb3J5IGVmZmljaWVuY3k8L3A+CiAgICA8cD5JbnRyb2R1Y2VkIHJlZmVyZW5jZXMgd2hlcmUgbmVjZXNzYXJ5IHRvIGltcHJvdmUgbWVtb3J5IGVmZmljaWVuY3k8L3A+CiAgICA8cD5BZGRlZCBmdW5jdGlvbnMgdG8gYWxsb3cgZm9yIHRhbGtpbmcgd2l0aCB0aGlzIG1vZHVsZSB2aWEgb3RoZXIgbW9kdWxlczwvcD4KICAgIDxwPkFkZGVkIGV2ZW50czwvcD4KICAgIDxwPkltcHJvdmVkIHNlY3VyaXR5IGFuZCByZWR1Y2VkIG1lbW9yeSBmb290cHJpbnQ8L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjcgc3RhYmxlPC9wPgogICAgPHA+Rml4ZWQgcHJvYmxlbSB3aXRoIGJyb2tlbiBtb250aCBsaXN0IG9uIDMxc3Qgb2YgZWFjaCBtb250aDs8L3A+CiAgICA8cD5GaXhlZCBwcm9ibGVtIHdpdGggQ2FsZW5kYXIgc2hvd2luZyBpbiB0aGUgbWVudSBmb3IgdW5hdXRob3JpemVkIGFkbWluIHVzZXJzLjwvcD4KPC9saT4KPGxpPjxwPlZlcnNpb246IDAuN2JldGEzPC9wPgogICAgPHA+QWRkZWQgdGhlIHllYXJsaXN0IHZpZXcgb3B0aW9uIHRvIGxpc3QgYWxsIGV2ZW50cyBpbiB0aGUgeWVhci4gQWN0cyBsaWtlIHRoZSBsaXN0IG9wdGlvbi48L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjdiZXRhMjwvcD4KICAgIDxwPkFkZGVkIHRoZSByZXZlcnNlIHBhcmFtZXRlciB0byBzaG93IGV2ZW50cyBpbiByZXZlcnNlIGNocm9ub2xvZ2ljYWwgb3JkZXIuPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC43YmV0YTE8L3A+CiAgICA8cD5BZGRlZCBuYXZpZ2F0aW9uIGluIHRoZSBsaXN0IHZpZXcsIGZpeGVkIHByb2JsZW0gd2l0aCBldmVudHMgbm90IHNob3dpbmcgdXAgaW4gdGhlIGxpc3Qgdmlldy48L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjdhbHBoYTI8L3A+CiAgICA8cD48dWw+CiAgICAgICA8bGk+QnVnIGZpeDogaW5jbHVkZSBsYXN0IGRheSBvZiB0aGUgbW9udGghPC9saT4KICAgICAgIDxsaT5CdWcgZml4OiB0ZW1wbGF0ZSB1c2Ugb2YgJHRhYmxlX2lkIHNob3VsZCBoYXZlIHt9IGFyb3VuZCBpdC48L2xpPgogICAgICAgPGxpPkluY2x1ZGUgaWNvbiBmb3IgY29udGVudCBwYWdlLjwvbGk+CiAgICAgICA8bGk+V2hpdGVzcGFjZSBjaGFuZ2VzIC0gdHJhaWxpbmcgc3BhY2VzIGFuZCB0YWJzL3NwYWNlIHRpZHkgdXAuPC9saT4KICAgICAgIDxsaT5NYWtlIGRlZmF1bHQgdGVtcGxhdGVzIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwgY29tcGxpYW50LjwvbGk+CiAgICA8L3VsPjwvcD4KPC9saT4KPGxpPjxwPlZlcnNpb246IDAuN2FscGhhMTwvcD4KICAgIDxwPkNvbXBsZXRlIHJld3JpdGUgdG8gZml0IGludG8gMC4xMC54IGJldHRlci48L3A+CiAgICA8cD5TdXBwb3J0IGxhbmd1YWdlIGZvciBkYXkgYW5kIG1vbnRoIG5hbWVzPC9wPgogICAgPHA+VXNlIHNtYXJ0eSB0ZW1wbGF0ZXMgZm9yIGNvbnRyb2xsaW5nIHRoZSBkaXNwbGF5LjwvcD4KICAgIDxwPlJld3JpdGUgdGhlIFNRTCB1c2VkIHRvIHNlbGVjdCB0aGUgZXZlbnRzIHRvIGhvcGVmdWxseSBiZSBtb3JlIG1haW50YWluYWJsZS48L3A+CiAgICA8cD48c3Ryb25nPk5vdGU8L3N0cm9uZz4gdGhhdCB0aGUgbGFuZ3VhZ2UgZmlsZXMgYXJlIG5vdCBmdWxseSB1cGRhdGVkIGZvciB0aGlzIHZlcnNpb24hPC9wPgo8L2xpPgo8bGk+PHA+VmVyc2lvbjogMC42LjE8L3A+CiAgICA8cD5Nb3JlIGZpeGVzIGZvciBtdWx0aS1kYXkgZXZlbnQgb24gY2FsZW5kYXIuIEFkZGVkIG5ldyBwYXJhbWV0ZXIgInRpbWVfZm9ybWF0IiBzbyB3ZSBjYW4gbWFrZSB0aGUgZGlzcGxheSBvZiBhIHNpbmdsZSBkYXkgZXZlbnQgd2l0aCBhIHN0YXJ0IGFuZCBzdG9wIHRpbWUgbG9vayBiZXR0ZXIuIENoYW5nZSBkZV9ERVwncyAidG8iIHRvICJiaXMiIGFzIHBlciBNb3JkcmFuXCdzIHBvc3Qgb24gdGhlIGJvYXJkcy48L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjY8L3A+CiAgIDxwPkZpeCBldmVudCBkaXNwbGF5IHNvIHRoYXQgaWYgdGhlIGVuZCBkYXRlIGlzIG5vdCBzZXQsIHdlIGRvblwndCBkaXNwbGF5ICJ0byIuPC9wPgogICA8cD5GaWx0ZXIgYnkgY2F0ZWdvcnkgd2hlbiBkaXNwbGF5aW5nIGFuIHVwY29taW5nbGlzdC48L3A+CiAgIDxwPkZpeCBFbmQgZGF0ZSBzZXR0aW5nIHRoYXQgd2FzIG9mZiBieSBvbmUuPC9wPgogICA8cD5GaXggb2RkIGJlaGF2aW91ciBvZiB5ZWFyIHdoZW4gdHJhbnNpdGlvbmluZyBmcm9tIEphbiB0byBEZWMgb3IgRGVjIHRvIEphbiBpbiB0aGUgY2FsZW5kYXIgdmlldy48L3A+CiAgIDxwPlN1cHBvcnQgbXV0bGktZGF5IGV2ZW50cyBpbiB0aGUgY2FsZW5kYXIgdmlldy48L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjU8L3A+CiAgICA8cD5GaXggdGhlIGRyb3AgZG93biBsaXN0IGZvciBlbmQgZGF0ZSB5ZWFyLiBGaXggREUgdHJhbnNsYXRpb24gb2YgIlJldHVybiIgKHRoYW5rcyBQaXJhdG9zISkuPC9wPgogICAgPHA+Rml4IHNwYWNpbmcgYXJvdW5kICJ0byIgKHRoYW5rcyBHcmVnISkuIEFkZCBEYW5pc2ggYW5kIER1dGNoIHRyYW5zbGF0aW9ucyBjb3VydGVzeSBvZiBib2FyZCBtZW1iZXJzIGVzbWFubiBhbmQgZG9udC48L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjQ8L3A+CiAgICA8cD5TdXBwb3J0IGZvciBsYW5ndWFnZSB0cmFuc2xhdGlvbnMuIERlZmF1bHQgdG8gYSBOVUxMIGVuZCBkYXRlLiBJbXByb3ZlZCB0aGUgaGVscCBpbmZvcm1hdGlvbi48L3A+CiAgICA8cD5EaXNwbGF5IHVwY29taW5nIGV2ZW50cyBpbiB0aGUgY29ycmVjdCBvcmRlciEgT3RoZXIgbWlub3IgYnVnIGZpeGVzLjwvcD4KPC9saT4KPGxpPjxwPlZlcnNpb246IDAuMzwvcD4KICAgIDxwPkluaXRpYWwgc3VwcG9ydCBmb3IgIkZyb20iIGFuZCAiVG8iIGRhdGVzIGZvciBldmVudHMuIEFiaWxpdHkgdG8gZmlsdGVyIGFkbWluIGxpc3Qgb2YgZXZlbnRzIGJ5IGNhdGVnb3J5LjwvcD4KPC9saT4KPGxpPjxwPlZlcnNpb246IDAuMjwvcD4KICAgIDxwPk5ldyBkaXNwbGF5IG9wdGlvbjogInVwY29taW5nbGlzdCIuIEFsc28gbWFueSBidWdmaXhlcyE8L3A+CjwvbGk+CjxsaT48cD5WZXJzaW9uOiAwLjE8L3A+CiAgICA8cD5Jbml0aWFsIHJlbGVhc2UuPC9wPgo8L2xpPgo8L3VsPgo=]]></data>
	</file>
	<file>
	  <filename>/doc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/COPYING</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQogICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMiwgSnVuZSAxOTkxCgogQ29weXJpZ2h0IChDKSAxOTg5LCAxOTkxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcwogb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlYW1ibGUKCiAgVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgpmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgaXQuICBCeSBjb250cmFzdCwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwpMaWNlbnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBmcmVlCnNvZnR3YXJlLS10byBtYWtlIHN1cmUgdGhlIHNvZnR3YXJlIGlzIGZyZWUgZm9yIGFsbCBpdHMgdXNlcnMuICBUaGlzCkdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBtb3N0IG9mIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24ncyBzb2Z0d2FyZSBhbmQgdG8gYW55IG90aGVyIHByb2dyYW0gd2hvc2UgYXV0aG9ycyBjb21taXQgdG8KdXNpbmcgaXQuICAoU29tZSBvdGhlciBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gc29mdHdhcmUgaXMgY292ZXJlZCBieQp0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGluc3RlYWQuKSAgWW91IGNhbiBhcHBseSBpdCB0bwp5b3VyIHByb2dyYW1zLCB0b28uCgogIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKcHJpY2UuICBPdXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZXMgYXJlIGRlc2lnbmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdQpoYXZlIHRoZSBmcmVlZG9tIHRvIGRpc3RyaWJ1dGUgY29waWVzIG9mIGZyZWUgc29mdHdhcmUgKGFuZCBjaGFyZ2UgZm9yCnRoaXMgc2VydmljZSBpZiB5b3Ugd2lzaCksIHRoYXQgeW91IHJlY2VpdmUgc291cmNlIGNvZGUgb3IgY2FuIGdldCBpdAppZiB5b3Ugd2FudCBpdCwgdGhhdCB5b3UgY2FuIGNoYW5nZSB0aGUgc29mdHdhcmUgb3IgdXNlIHBpZWNlcyBvZiBpdAppbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGtub3cgeW91IGNhbiBkbyB0aGVzZSB0aGluZ3MuCgogIFRvIHByb3RlY3QgeW91ciByaWdodHMsIHdlIG5lZWQgdG8gbWFrZSByZXN0cmljdGlvbnMgdGhhdCBmb3JiaWQKYW55b25lIHRvIGRlbnkgeW91IHRoZXNlIHJpZ2h0cyBvciB0byBhc2sgeW91IHRvIHN1cnJlbmRlciB0aGUgcmlnaHRzLgpUaGVzZSByZXN0cmljdGlvbnMgdHJhbnNsYXRlIHRvIGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBmb3IgeW91IGlmIHlvdQpkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgc29mdHdhcmUsIG9yIGlmIHlvdSBtb2RpZnkgaXQuCgogIEZvciBleGFtcGxlLCBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2Ygc3VjaCBhIHByb2dyYW0sIHdoZXRoZXIKZ3JhdGlzIG9yIGZvciBhIGZlZSwgeW91IG11c3QgZ2l2ZSB0aGUgcmVjaXBpZW50cyBhbGwgdGhlIHJpZ2h0cyB0aGF0CnlvdSBoYXZlLiAgWW91IG11c3QgbWFrZSBzdXJlIHRoYXQgdGhleSwgdG9vLCByZWNlaXZlIG9yIGNhbiBnZXQgdGhlCnNvdXJjZSBjb2RlLiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIKcmlnaHRzLgoKICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggdHdvIHN0ZXBzOiAoMSkgY29weXJpZ2h0IHRoZSBzb2Z0d2FyZSwgYW5kCigyKSBvZmZlciB5b3UgdGhpcyBsaWNlbnNlIHdoaWNoIGdpdmVzIHlvdSBsZWdhbCBwZXJtaXNzaW9uIHRvIGNvcHksCmRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGUgc29mdHdhcmUuCgogIEFsc28sIGZvciBlYWNoIGF1dGhvcidzIHByb3RlY3Rpb24gYW5kIG91cnMsIHdlIHdhbnQgdG8gbWFrZSBjZXJ0YWluCnRoYXQgZXZlcnlvbmUgdW5kZXJzdGFuZHMgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBmcmVlCnNvZnR3YXJlLiAgSWYgdGhlIHNvZnR3YXJlIGlzIG1vZGlmaWVkIGJ5IHNvbWVvbmUgZWxzZSBhbmQgcGFzc2VkIG9uLCB3ZQp3YW50IGl0cyByZWNpcGllbnRzIHRvIGtub3cgdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdpbmFsLCBzbwp0aGF0IGFueSBwcm9ibGVtcyBpbnRyb2R1Y2VkIGJ5IG90aGVycyB3aWxsIG5vdCByZWZsZWN0IG9uIHRoZSBvcmlnaW5hbAphdXRob3JzJyByZXB1dGF0aW9ucy4KCiAgRmluYWxseSwgYW55IGZyZWUgcHJvZ3JhbSBpcyB0aHJlYXRlbmVkIGNvbnN0YW50bHkgYnkgc29mdHdhcmUKcGF0ZW50cy4gIFdlIHdpc2ggdG8gYXZvaWQgdGhlIGRhbmdlciB0aGF0IHJlZGlzdHJpYnV0b3JzIG9mIGEgZnJlZQpwcm9ncmFtIHdpbGwgaW5kaXZpZHVhbGx5IG9idGFpbiBwYXRlbnQgbGljZW5zZXMsIGluIGVmZmVjdCBtYWtpbmcgdGhlCnByb2dyYW0gcHJvcHJpZXRhcnkuICBUbyBwcmV2ZW50IHRoaXMsIHdlIGhhdmUgbWFkZSBpdCBjbGVhciB0aGF0IGFueQpwYXRlbnQgbXVzdCBiZSBsaWNlbnNlZCBmb3IgZXZlcnlvbmUncyBmcmVlIHVzZSBvciBub3QgbGljZW5zZWQgYXQgYWxsLgoKICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZAptb2RpZmljYXRpb24gZm9sbG93LgoKICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQogICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgQ09QWUlORywgRElTVFJJQlVUSU9OIEFORCBNT0RJRklDQVRJT04KCiAgMC4gVGhpcyBMaWNlbnNlIGFwcGxpZXMgdG8gYW55IHByb2dyYW0gb3Igb3RoZXIgd29yayB3aGljaCBjb250YWlucwphIG5vdGljZSBwbGFjZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXIgc2F5aW5nIGl0IG1heSBiZSBkaXN0cmlidXRlZAp1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhlICJQcm9ncmFtIiwgYmVsb3csCnJlZmVycyB0byBhbnkgc3VjaCBwcm9ncmFtIG9yIHdvcmssIGFuZCBhICJ3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtIgptZWFucyBlaXRoZXIgdGhlIFByb2dyYW0gb3IgYW55IGRlcml2YXRpdmUgd29yayB1bmRlciBjb3B5cmlnaHQgbGF3Ogp0aGF0IGlzIHRvIHNheSwgYSB3b3JrIGNvbnRhaW5pbmcgdGhlIFByb2dyYW0gb3IgYSBwb3J0aW9uIG9mIGl0LAplaXRoZXIgdmVyYmF0aW0gb3Igd2l0aCBtb2RpZmljYXRpb25zIGFuZC9vciB0cmFuc2xhdGVkIGludG8gYW5vdGhlcgpsYW5ndWFnZS4gIChIZXJlaW5hZnRlciwgdHJhbnNsYXRpb24gaXMgaW5jbHVkZWQgd2l0aG91dCBsaW1pdGF0aW9uIGluCnRoZSB0ZXJtICJtb2RpZmljYXRpb24iLikgIEVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLgoKQWN0aXZpdGllcyBvdGhlciB0aGFuIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQgbW9kaWZpY2F0aW9uIGFyZSBub3QKY292ZXJlZCBieSB0aGlzIExpY2Vuc2U7IHRoZXkgYXJlIG91dHNpZGUgaXRzIHNjb3BlLiAgVGhlIGFjdCBvZgpydW5uaW5nIHRoZSBQcm9ncmFtIGlzIG5vdCByZXN0cmljdGVkLCBhbmQgdGhlIG91dHB1dCBmcm9tIHRoZSBQcm9ncmFtCmlzIGNvdmVyZWQgb25seSBpZiBpdHMgY29udGVudHMgY29uc3RpdHV0ZSBhIHdvcmsgYmFzZWQgb24gdGhlClByb2dyYW0gKGluZGVwZW5kZW50IG9mIGhhdmluZyBiZWVuIG1hZGUgYnkgcnVubmluZyB0aGUgUHJvZ3JhbSkuCldoZXRoZXIgdGhhdCBpcyB0cnVlIGRlcGVuZHMgb24gd2hhdCB0aGUgUHJvZ3JhbSBkb2VzLgoKICAxLiBZb3UgbWF5IGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzIG9mIHRoZSBQcm9ncmFtJ3MKc291cmNlIGNvZGUgYXMgeW91IHJlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQgeW91CmNvbnNwaWN1b3VzbHkgYW5kIGFwcHJvcHJpYXRlbHkgcHVibGlzaCBvbiBlYWNoIGNvcHkgYW4gYXBwcm9wcmlhdGUKY29weXJpZ2h0IG5vdGljZSBhbmQgZGlzY2xhaW1lciBvZiB3YXJyYW50eTsga2VlcCBpbnRhY3QgYWxsIHRoZQpub3RpY2VzIHRoYXQgcmVmZXIgdG8gdGhpcyBMaWNlbnNlIGFuZCB0byB0aGUgYWJzZW5jZSBvZiBhbnkgd2FycmFudHk7CmFuZCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBQcm9ncmFtIGEgY29weSBvZiB0aGlzIExpY2Vuc2UKYWxvbmcgd2l0aCB0aGUgUHJvZ3JhbS4KCllvdSBtYXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksIGFuZAp5b3UgbWF5IGF0IHlvdXIgb3B0aW9uIG9mZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEgZmVlLgoKICAyLiBZb3UgbWF5IG1vZGlmeSB5b3VyIGNvcHkgb3IgY29waWVzIG9mIHRoZSBQcm9ncmFtIG9yIGFueSBwb3J0aW9uCm9mIGl0LCB0aHVzIGZvcm1pbmcgYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtLCBhbmQgY29weSBhbmQKZGlzdHJpYnV0ZSBzdWNoIG1vZGlmaWNhdGlvbnMgb3Igd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiAxCmFib3ZlLCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNvbmRpdGlvbnM6CgogICAgYSkgWW91IG11c3QgY2F1c2UgdGhlIG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVudCBub3RpY2VzCiAgICBzdGF0aW5nIHRoYXQgeW91IGNoYW5nZWQgdGhlIGZpbGVzIGFuZCB0aGUgZGF0ZSBvZiBhbnkgY2hhbmdlLgoKICAgIGIpIFlvdSBtdXN0IGNhdXNlIGFueSB3b3JrIHRoYXQgeW91IGRpc3RyaWJ1dGUgb3IgcHVibGlzaCwgdGhhdCBpbgogICAgd2hvbGUgb3IgaW4gcGFydCBjb250YWlucyBvciBpcyBkZXJpdmVkIGZyb20gdGhlIFByb2dyYW0gb3IgYW55CiAgICBwYXJ0IHRoZXJlb2YsIHRvIGJlIGxpY2Vuc2VkIGFzIGEgd2hvbGUgYXQgbm8gY2hhcmdlIHRvIGFsbCB0aGlyZAogICAgcGFydGllcyB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLgoKICAgIGMpIElmIHRoZSBtb2RpZmllZCBwcm9ncmFtIG5vcm1hbGx5IHJlYWRzIGNvbW1hbmRzIGludGVyYWN0aXZlbHkKICAgIHdoZW4gcnVuLCB5b3UgbXVzdCBjYXVzZSBpdCwgd2hlbiBzdGFydGVkIHJ1bm5pbmcgZm9yIHN1Y2gKICAgIGludGVyYWN0aXZlIHVzZSBpbiB0aGUgbW9zdCBvcmRpbmFyeSB3YXksIHRvIHByaW50IG9yIGRpc3BsYXkgYW4KICAgIGFubm91bmNlbWVudCBpbmNsdWRpbmcgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSBhbmQgYQogICAgbm90aWNlIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgKG9yIGVsc2UsIHNheWluZyB0aGF0IHlvdSBwcm92aWRlCiAgICBhIHdhcnJhbnR5KSBhbmQgdGhhdCB1c2VycyBtYXkgcmVkaXN0cmlidXRlIHRoZSBwcm9ncmFtIHVuZGVyCiAgICB0aGVzZSBjb25kaXRpb25zLCBhbmQgdGVsbGluZyB0aGUgdXNlciBob3cgdG8gdmlldyBhIGNvcHkgb2YgdGhpcwogICAgTGljZW5zZS4gIChFeGNlcHRpb246IGlmIHRoZSBQcm9ncmFtIGl0c2VsZiBpcyBpbnRlcmFjdGl2ZSBidXQKICAgIGRvZXMgbm90IG5vcm1hbGx5IHByaW50IHN1Y2ggYW4gYW5ub3VuY2VtZW50LCB5b3VyIHdvcmsgYmFzZWQgb24KICAgIHRoZSBQcm9ncmFtIGlzIG5vdCByZXF1aXJlZCB0byBwcmludCBhbiBhbm5vdW5jZW1lbnQuKQoKVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hvbGUuICBJZgppZGVudGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBQcm9ncmFtLAphbmQgY2FuIGJlIHJlYXNvbmFibHkgY29uc2lkZXJlZCBpbmRlcGVuZGVudCBhbmQgc2VwYXJhdGUgd29ya3MgaW4KdGhlbXNlbHZlcywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQpzZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuICBCdXQgd2hlbiB5b3UKZGlzdHJpYnV0ZSB0aGUgc2FtZSBzZWN0aW9ucyBhcyBwYXJ0IG9mIGEgd2hvbGUgd2hpY2ggaXMgYSB3b3JrIGJhc2VkCm9uIHRoZSBQcm9ncmFtLCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgp0aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZQplbnRpcmUgd2hvbGUsIGFuZCB0aHVzIHRvIGVhY2ggYW5kIGV2ZXJ5IHBhcnQgcmVnYXJkbGVzcyBvZiB3aG8gd3JvdGUgaXQuCgpUaHVzLCBpdCBpcyBub3QgdGhlIGludGVudCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3QKeW91ciByaWdodHMgdG8gd29yayB3cml0dGVuIGVudGlyZWx5IGJ5IHlvdTsgcmF0aGVyLCB0aGUgaW50ZW50IGlzIHRvCmV4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgpjb2xsZWN0aXZlIHdvcmtzIGJhc2VkIG9uIHRoZSBQcm9ncmFtLgoKSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgUHJvZ3JhbQp3aXRoIHRoZSBQcm9ncmFtIChvciB3aXRoIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSkgb24gYSB2b2x1bWUgb2YKYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0gZG9lcyBub3QgYnJpbmcgdGhlIG90aGVyIHdvcmsgdW5kZXIKdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KCiAgMy4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhIHdvcmsgYmFzZWQgb24gaXQsCnVuZGVyIFNlY3Rpb24gMikgaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHVuZGVyIHRoZSB0ZXJtcyBvZgpTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gZG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6CgogICAgYSkgQWNjb21wYW55IGl0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZQogICAgc291cmNlIGNvZGUsIHdoaWNoIG11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zCiAgICAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlOyBvciwKCiAgICBiKSBBY2NvbXBhbnkgaXQgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdCBsZWFzdCB0aHJlZQogICAgeWVhcnMsIHRvIGdpdmUgYW55IHRoaXJkIHBhcnR5LCBmb3IgYSBjaGFyZ2Ugbm8gbW9yZSB0aGFuIHlvdXIKICAgIGNvc3Qgb2YgcGh5c2ljYWxseSBwZXJmb3JtaW5nIHNvdXJjZSBkaXN0cmlidXRpb24sIGEgY29tcGxldGUKICAgIG1hY2hpbmUtcmVhZGFibGUgY29weSBvZiB0aGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZSwgdG8gYmUKICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtCiAgICBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCgogICAgYykgQWNjb21wYW55IGl0IHdpdGggdGhlIGluZm9ybWF0aW9uIHlvdSByZWNlaXZlZCBhcyB0byB0aGUgb2ZmZXIKICAgIHRvIGRpc3RyaWJ1dGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZS4gIChUaGlzIGFsdGVybmF0aXZlIGlzCiAgICBhbGxvd2VkIG9ubHkgZm9yIG5vbmNvbW1lcmNpYWwgZGlzdHJpYnV0aW9uIGFuZCBvbmx5IGlmIHlvdQogICAgcmVjZWl2ZWQgdGhlIHByb2dyYW0gaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHdpdGggc3VjaAogICAgYW4gb2ZmZXIsIGluIGFjY29yZCB3aXRoIFN1YnNlY3Rpb24gYiBhYm92ZS4pCgpUaGUgc291cmNlIGNvZGUgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yCm1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGFuIGV4ZWN1dGFibGUgd29yaywgY29tcGxldGUgc291cmNlCmNvZGUgbWVhbnMgYWxsIHRoZSBzb3VyY2UgY29kZSBmb3IgYWxsIG1vZHVsZXMgaXQgY29udGFpbnMsIHBsdXMgYW55CmFzc29jaWF0ZWQgaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0bwpjb250cm9sIGNvbXBpbGF0aW9uIGFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGV4ZWN1dGFibGUuICBIb3dldmVyLCBhcyBhCnNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgc291cmNlIGNvZGUgZGlzdHJpYnV0ZWQgbmVlZCBub3QgaW5jbHVkZQphbnl0aGluZyB0aGF0IGlzIG5vcm1hbGx5IGRpc3RyaWJ1dGVkIChpbiBlaXRoZXIgc291cmNlIG9yIGJpbmFyeQpmb3JtKSB3aXRoIHRoZSBtYWpvciBjb21wb25lbnRzIChjb21waWxlciwga2VybmVsLCBhbmQgc28gb24pIG9mIHRoZQpvcGVyYXRpbmcgc3lzdGVtIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxlIHJ1bnMsIHVubGVzcyB0aGF0IGNvbXBvbmVudAppdHNlbGYgYWNjb21wYW5pZXMgdGhlIGV4ZWN1dGFibGUuCgpJZiBkaXN0cmlidXRpb24gb2YgZXhlY3V0YWJsZSBvciBvYmplY3QgY29kZSBpcyBtYWRlIGJ5IG9mZmVyaW5nCmFjY2VzcyB0byBjb3B5IGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCB0aGVuIG9mZmVyaW5nIGVxdWl2YWxlbnQKYWNjZXNzIHRvIGNvcHkgdGhlIHNvdXJjZSBjb2RlIGZyb20gdGhlIHNhbWUgcGxhY2UgY291bnRzIGFzCmRpc3RyaWJ1dGlvbiBvZiB0aGUgc291cmNlIGNvZGUsIGV2ZW4gdGhvdWdoIHRoaXJkIHBhcnRpZXMgYXJlIG5vdApjb21wZWxsZWQgdG8gY29weSB0aGUgc291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBjb2RlLgoKICA0LiBZb3UgbWF5IG5vdCBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2UsIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0KZXhjZXB0IGFzIGV4cHJlc3NseSBwcm92aWRlZCB1bmRlciB0aGlzIExpY2Vuc2UuICBBbnkgYXR0ZW1wdApvdGhlcndpc2UgdG8gY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gaXMKdm9pZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91ciByaWdodHMgdW5kZXIgdGhpcyBMaWNlbnNlLgpIb3dldmVyLCBwYXJ0aWVzIHdobyBoYXZlIHJlY2VpdmVkIGNvcGllcywgb3IgcmlnaHRzLCBmcm9tIHlvdSB1bmRlcgp0aGlzIExpY2Vuc2Ugd2lsbCBub3QgaGF2ZSB0aGVpciBsaWNlbnNlcyB0ZXJtaW5hdGVkIHNvIGxvbmcgYXMgc3VjaApwYXJ0aWVzIHJlbWFpbiBpbiBmdWxsIGNvbXBsaWFuY2UuCgogIDUuIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vuc2UsIHNpbmNlIHlvdSBoYXZlIG5vdApzaWduZWQgaXQuICBIb3dldmVyLCBub3RoaW5nIGVsc2UgZ3JhbnRzIHlvdSBwZXJtaXNzaW9uIHRvIG1vZGlmeSBvcgpkaXN0cmlidXRlIHRoZSBQcm9ncmFtIG9yIGl0cyBkZXJpdmF0aXZlIHdvcmtzLiAgVGhlc2UgYWN0aW9ucyBhcmUKcHJvaGliaXRlZCBieSBsYXcgaWYgeW91IGRvIG5vdCBhY2NlcHQgdGhpcyBMaWNlbnNlLiAgVGhlcmVmb3JlLCBieQptb2RpZnlpbmcgb3IgZGlzdHJpYnV0aW5nIHRoZSBQcm9ncmFtIChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKUHJvZ3JhbSksIHlvdSBpbmRpY2F0ZSB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhpcyBMaWNlbnNlIHRvIGRvIHNvLCBhbmQKYWxsIGl0cyB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW5nIG9yIG1vZGlmeWluZwp0aGUgUHJvZ3JhbSBvciB3b3JrcyBiYXNlZCBvbiBpdC4KCiAgNi4gRWFjaCB0aW1lIHlvdSByZWRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQpQcm9ncmFtKSwgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5IHJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZQpvcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlIG9yIG1vZGlmeSB0aGUgUHJvZ3JhbSBzdWJqZWN0IHRvCnRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgWW91IG1heSBub3QgaW1wb3NlIGFueSBmdXJ0aGVyCnJlc3RyaWN0aW9ucyBvbiB0aGUgcmVjaXBpZW50cycgZXhlcmNpc2Ugb2YgdGhlIHJpZ2h0cyBncmFudGVkIGhlcmVpbi4KWW91IGFyZSBub3QgcmVzcG9uc2libGUgZm9yIGVuZm9yY2luZyBjb21wbGlhbmNlIGJ5IHRoaXJkIHBhcnRpZXMgdG8KdGhpcyBMaWNlbnNlLgoKICA3LiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50CmluZnJpbmdlbWVudCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQgdG8gcGF0ZW50IGlzc3VlcyksCmNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3IKb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdApleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdApkaXN0cmlidXRlIHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCkxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UKbWF5IG5vdCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiBhIHBhdGVudApsaWNlbnNlIHdvdWxkIG5vdCBwZXJtaXQgcm95YWx0eS1mcmVlIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtIGJ5CmFsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwgdGhlbgp0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCBpdCBhbmQgdGhpcyBMaWNlbnNlIHdvdWxkIGJlIHRvCnJlZnJhaW4gZW50aXJlbHkgZnJvbSBkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0uCgpJZiBhbnkgcG9ydGlvbiBvZiB0aGlzIHNlY3Rpb24gaXMgaGVsZCBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIKYW55IHBhcnRpY3VsYXIgY2lyY3Vtc3RhbmNlLCB0aGUgYmFsYW5jZSBvZiB0aGUgc2VjdGlvbiBpcyBpbnRlbmRlZCB0bwphcHBseSBhbmQgdGhlIHNlY3Rpb24gYXMgYSB3aG9sZSBpcyBpbnRlbmRlZCB0byBhcHBseSBpbiBvdGhlcgpjaXJjdW1zdGFuY2VzLgoKSXQgaXMgbm90IHRoZSBwdXJwb3NlIG9mIHRoaXMgc2VjdGlvbiB0byBpbmR1Y2UgeW91IHRvIGluZnJpbmdlIGFueQpwYXRlbnRzIG9yIG90aGVyIHByb3BlcnR5IHJpZ2h0IGNsYWltcyBvciB0byBjb250ZXN0IHZhbGlkaXR5IG9mIGFueQpzdWNoIGNsYWltczsgdGhpcyBzZWN0aW9uIGhhcyB0aGUgc29sZSBwdXJwb3NlIG9mIHByb3RlY3RpbmcgdGhlCmludGVncml0eSBvZiB0aGUgZnJlZSBzb2Z0d2FyZSBkaXN0cmlidXRpb24gc3lzdGVtLCB3aGljaCBpcwppbXBsZW1lbnRlZCBieSBwdWJsaWMgbGljZW5zZSBwcmFjdGljZXMuICBNYW55IHBlb3BsZSBoYXZlIG1hZGUKZ2VuZXJvdXMgY29udHJpYnV0aW9ucyB0byB0aGUgd2lkZSByYW5nZSBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZAp0aHJvdWdoIHRoYXQgc3lzdGVtIGluIHJlbGlhbmNlIG9uIGNvbnNpc3RlbnQgYXBwbGljYXRpb24gb2YgdGhhdApzeXN0ZW07IGl0IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRlIGlmIGhlIG9yIHNoZSBpcyB3aWxsaW5nCnRvIGRpc3RyaWJ1dGUgc29mdHdhcmUgdGhyb3VnaCBhbnkgb3RoZXIgc3lzdGVtIGFuZCBhIGxpY2Vuc2VlIGNhbm5vdAppbXBvc2UgdGhhdCBjaG9pY2UuCgpUaGlzIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8gbWFrZSB0aG9yb3VnaGx5IGNsZWFyIHdoYXQgaXMgYmVsaWV2ZWQgdG8KYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBvZiB0aGlzIExpY2Vuc2UuCgogIDguIElmIHRoZSBkaXN0cmlidXRpb24gYW5kL29yIHVzZSBvZiB0aGUgUHJvZ3JhbSBpcyByZXN0cmljdGVkIGluCmNlcnRhaW4gY291bnRyaWVzIGVpdGhlciBieSBwYXRlbnRzIG9yIGJ5IGNvcHlyaWdodGVkIGludGVyZmFjZXMsIHRoZQpvcmlnaW5hbCBjb3B5cmlnaHQgaG9sZGVyIHdobyBwbGFjZXMgdGhlIFByb2dyYW0gdW5kZXIgdGhpcyBMaWNlbnNlCm1heSBhZGQgYW4gZXhwbGljaXQgZ2VvZ3JhcGhpY2FsIGRpc3RyaWJ1dGlvbiBsaW1pdGF0aW9uIGV4Y2x1ZGluZwp0aG9zZSBjb3VudHJpZXMsIHNvIHRoYXQgZGlzdHJpYnV0aW9uIGlzIHBlcm1pdHRlZCBvbmx5IGluIG9yIGFtb25nCmNvdW50cmllcyBub3QgdGh1cyBleGNsdWRlZC4gIEluIHN1Y2ggY2FzZSwgdGhpcyBMaWNlbnNlIGluY29ycG9yYXRlcwp0aGUgbGltaXRhdGlvbiBhcyBpZiB3cml0dGVuIGluIHRoZSBib2R5IG9mIHRoaXMgTGljZW5zZS4KCiAgOS4gVGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBtYXkgcHVibGlzaCByZXZpc2VkIGFuZC9vciBuZXcgdmVyc2lvbnMKb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsCmJlIHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sIGJ1dCBtYXkgZGlmZmVyIGluIGRldGFpbCB0bwphZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KCkVhY2ggdmVyc2lvbiBpcyBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiAgSWYgdGhlIFByb2dyYW0Kc3BlY2lmaWVzIGEgdmVyc2lvbiBudW1iZXIgb2YgdGhpcyBMaWNlbnNlIHdoaWNoIGFwcGxpZXMgdG8gaXQgYW5kICJhbnkKbGF0ZXIgdmVyc2lvbiIsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucwplaXRoZXIgb2YgdGhhdCB2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgSWYgdGhlIFByb2dyYW0gZG9lcyBub3Qgc3BlY2lmeSBhIHZlcnNpb24gbnVtYmVyIG9mCnRoaXMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbi4KCiAgMTAuIElmIHlvdSB3aXNoIHRvIGluY29ycG9yYXRlIHBhcnRzIG9mIHRoZSBQcm9ncmFtIGludG8gb3RoZXIgZnJlZQpwcm9ncmFtcyB3aG9zZSBkaXN0cmlidXRpb24gY29uZGl0aW9ucyBhcmUgZGlmZmVyZW50LCB3cml0ZSB0byB0aGUgYXV0aG9yCnRvIGFzayBmb3IgcGVybWlzc2lvbi4gIEZvciBzb2Z0d2FyZSB3aGljaCBpcyBjb3B5cmlnaHRlZCBieSB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMKbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLiAgT3VyIGRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMKb2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMgb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBmcmVlIHNvZnR3YXJlIGFuZApvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcgYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTyBXQVJSQU5UWQoKICAxMS4gQkVDQVVTRSBUSEUgUFJPR1JBTSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8gV0FSUkFOVFkKRk9SIFRIRSBQUk9HUkFNLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4gIEVYQ0VQVCBXSEVOCk9USEVSV0lTRSBTVEFURUQgSU4gV1JJVElORyBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EL09SIE9USEVSIFBBUlRJRVMKUFJPVklERSBUSEUgUFJPR1JBTSAiQVMgSVMiIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTRUQKT1IgSU1QTElFRCwgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUwpUTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFIFBST0dSQU0gSVMgV0lUSCBZT1UuICBTSE9VTEQgVEhFClBST0dSQU0gUFJPVkUgREVGRUNUSVZFLCBZT1UgQVNTVU1FIFRIRSBDT1NUIE9GIEFMTCBORUNFU1NBUlkgU0VSVklDSU5HLApSRVBBSVIgT1IgQ09SUkVDVElPTi4KCiAgMTIuIElOIE5PIEVWRU5UIFVOTEVTUyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1JFRUQgVE8gSU4gV1JJVElORwpXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1BWSBNT0RJRlkgQU5EL09SClJFRElTVFJJQlVURSBUSEUgUFJPR1JBTSBBUyBQRVJNSVRURUQgQUJPVkUsIEJFIExJQUJMRSBUTyBZT1UgRk9SIERBTUFHRVMsCklOQ0xVRElORyBBTlkgR0VORVJBTCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORwpPVVQgT0YgVEhFIFVTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRIRSBQUk9HUkFNIChJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEClRPIExPU1MgT0YgREFUQSBPUiBEQVRBIEJFSU5HIFJFTkRFUkVEIElOQUNDVVJBVEUgT1IgTE9TU0VTIFNVU1RBSU5FRCBCWQpZT1UgT1IgVEhJUkQgUEFSVElFUyBPUiBBIEZBSUxVUkUgT0YgVEhFIFBST0dSQU0gVE8gT1BFUkFURSBXSVRIIEFOWSBPVEhFUgpQUk9HUkFNUyksIEVWRU4gSUYgU1VDSCBIT0xERVIgT1IgT1RIRVIgUEFSVFkgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUKUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLgoKICAgICAgICAgICAgICAgICAgICAgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05TCgogICAgICAgICAgICBIb3cgdG8gQXBwbHkgVGhlc2UgVGVybXMgdG8gWW91ciBOZXcgUHJvZ3JhbXMKCiAgSWYgeW91IGRldmVsb3AgYSBuZXcgcHJvZ3JhbSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdApwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgdGhlIGJlc3Qgd2F5IHRvIGFjaGlldmUgdGhpcyBpcyB0byBtYWtlIGl0CmZyZWUgc29mdHdhcmUgd2hpY2ggZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlIHVuZGVyIHRoZXNlIHRlcm1zLgoKICBUbyBkbyBzbywgYXR0YWNoIHRoZSBmb2xsb3dpbmcgbm90aWNlcyB0byB0aGUgcHJvZ3JhbS4gIEl0IGlzIHNhZmVzdAp0byBhdHRhY2ggdGhlbSB0byB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgZmlsZSB0byBtb3N0IGVmZmVjdGl2ZWx5CmNvbnZleSB0aGUgZXhjbHVzaW9uIG9mIHdhcnJhbnR5OyBhbmQgZWFjaCBmaWxlIHNob3VsZCBoYXZlIGF0IGxlYXN0CnRoZSAiY29weXJpZ2h0IiBsaW5lIGFuZCBhIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGZ1bGwgbm90aWNlIGlzIGZvdW5kLgoKICAgIDxvbmUgbGluZSB0byBnaXZlIHRoZSBwcm9ncmFtJ3MgbmFtZSBhbmQgYSBicmllZiBpZGVhIG9mIHdoYXQgaXQgZG9lcy4+CiAgICBDb3B5cmlnaHQgKEMpIDx5ZWFyPiAgPG5hbWUgb2YgYXV0aG9yPgoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwogICAgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKICAgIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCgpBbHNvIGFkZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY29udGFjdCB5b3UgYnkgZWxlY3Ryb25pYyBhbmQgcGFwZXIgbWFpbC4KCklmIHRoZSBwcm9ncmFtIGlzIGludGVyYWN0aXZlLCBtYWtlIGl0IG91dHB1dCBhIHNob3J0IG5vdGljZSBsaWtlIHRoaXMKd2hlbiBpdCBzdGFydHMgaW4gYW4gaW50ZXJhY3RpdmUgbW9kZToKCiAgICBHbm9tb3Zpc2lvbiB2ZXJzaW9uIDY5LCBDb3B5cmlnaHQgKEMpIHllYXIgbmFtZSBvZiBhdXRob3IKICAgIEdub21vdmlzaW9uIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWTsgZm9yIGRldGFpbHMgdHlwZSBgc2hvdyB3Jy4KICAgIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZSwgYW5kIHlvdSBhcmUgd2VsY29tZSB0byByZWRpc3RyaWJ1dGUgaXQKICAgIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9uczsgdHlwZSBgc2hvdyBjJyBmb3IgZGV0YWlscy4KClRoZSBoeXBvdGhldGljYWwgY29tbWFuZHMgYHNob3cgdycgYW5kIGBzaG93IGMnIHNob3VsZCBzaG93IHRoZSBhcHByb3ByaWF0ZQpwYXJ0cyBvZiB0aGUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIE9mIGNvdXJzZSwgdGhlIGNvbW1hbmRzIHlvdSB1c2UgbWF5CmJlIGNhbGxlZCBzb21ldGhpbmcgb3RoZXIgdGhhbiBgc2hvdyB3JyBhbmQgYHNob3cgYyc7IHRoZXkgY291bGQgZXZlbiBiZQptb3VzZS1jbGlja3Mgb3IgbWVudSBpdGVtcy0td2hhdGV2ZXIgc3VpdHMgeW91ciBwcm9ncmFtLgoKWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHlvdXIKc2Nob29sLCBpZiBhbnksIHRvIHNpZ24gYSAiY29weXJpZ2h0IGRpc2NsYWltZXIiIGZvciB0aGUgcHJvZ3JhbSwgaWYKbmVjZXNzYXJ5LiAgSGVyZSBpcyBhIHNhbXBsZTsgYWx0ZXIgdGhlIG5hbWVzOgoKICBZb3lvZHluZSwgSW5jLiwgaGVyZWJ5IGRpc2NsYWltcyBhbGwgY29weXJpZ2h0IGludGVyZXN0IGluIHRoZSBwcm9ncmFtCiAgYEdub21vdmlzaW9uJyAod2hpY2ggbWFrZXMgcGFzc2VzIGF0IGNvbXBpbGVycykgd3JpdHRlbiBieSBKYW1lcyBIYWNrZXIuCgogIDxzaWduYXR1cmUgb2YgVHkgQ29vbj4sIDEgQXByaWwgMTk4OQogIFR5IENvb24sIFByZXNpZGVudCBvZiBWaWNlCgpUaGlzIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGluY29ycG9yYXRpbmcgeW91ciBwcm9ncmFtIGludG8KcHJvcHJpZXRhcnkgcHJvZ3JhbXMuICBJZiB5b3VyIHByb2dyYW0gaXMgYSBzdWJyb3V0aW5lIGxpYnJhcnksIHlvdSBtYXkKY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGggdGhlCmxpYnJhcnkuICBJZiB0aGlzIGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLgo=]]></data>
	</file>
	<file>
	  <filename>/function.admindisplaymanageevents.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhJGdDbXMgKSBleGl0OwppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBDYWxlbmRhcicpICYmCiAgICAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignQWRkIENhbGVuZGFyIEV2ZW50cycpICYmCiAgICAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignRWRpdCBNeSBDYWxlbmRhciBFdmVudHMnKSApIHJldHVybjsKCgovLyBnZXQgdGhlIGxvY2FsZSBzcGVjaWZpZWQgZGF0ZXMKJGxvY2FsZV9pbmZvID0gY2djYWxlbmRhcl91dGlsczo6Z2V0X2xvY2FsZV9kYXRlcygpOwovKgpmb3JlYWNoKCAkbG9jYWxlX2luZm8gYXMgJGtleSA9PiAmJHZhbHVlICkgewogICAgJHZhbHVlID0ganNvbl9lbmNvZGUoJHZhbHVlKTsKfQoqLwokZGZsdF9zdGFydHRpbWUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGZsdF9zdGFydHRpbWUnLCcwNzowMCcpOwokcGFydHMgPSBleHBsb2RlKCc6Jyx0cmltKCRkZmx0X3N0YXJ0dGltZSksMik7CiRzbWFydHktPmFzc2lnbigndGltZXpvbmUnLCRjb25maWdbJ3RpbWV6b25lJ10pOwokc21hcnR5LT5hc3NpZ24oJ2RmbHRfc3RhcnR0aW1lJyxqc29uX2VuY29kZSgkcGFydHMpKTsKJHNtYXJ0eS0+YXNzaWduKCdjYW5fbWFuYWdlJywkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgQ2FsZW5kYXInKSk7CiRzbWFydHktPmFzc2lnbignZmlyc3RkYXlvZndlZWsnLChpbnQpICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmaXJzdGRheW9md2VlaycsMSkpOwokc21hcnR5LT5hc3NpZ24oJ2RhdGVzdHJpbmdzJyxqc29uX2VuY29kZSgkbG9jYWxlX2luZm8pKTsKJHNtYXJ0eS0+YXNzaWduKCd0ZXh0X3dlZWsnLCR0aGlzLT5MYW5nKCd3ZWVrJykpOwokc21hcnR5LT5hc3NpZ24oJ3RleHRfbW9udGgnLCR0aGlzLT5MYW5nKCdtb250aCcpKTsKJHNtYXJ0eS0+YXNzaWduKCd0ZXh0X2RheScsJHRoaXMtPkxhbmcoJ2RheScpKTsKJHNtYXJ0eS0+YXNzaWduKCd0ZXh0X3RvZGF5JywkdGhpcy0+TGFuZygndG9kYXknKSk7CiRzbWFydHktPmFzc2lnbignZGZsdF9mZ2NvbG9yJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGZsdF9mZ2NvbG9yJywnYmxhY2snKSk7CiRzbWFydHktPmFzc2lnbignZGZsdF9iZ2NvbG9yJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGZsdF9iZ2NvbG9yJywnbGlnaHRjeWFuJykpOwokc21hcnR5LT5hc3NpZ24oJ2hvbGlkYXlfZmdjb2xvcicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2hvbGlkYXlmZ2NvbG9yJywnIzAwMDAwMCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdob2xpZGF5X2JnY29sb3InLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdob2xpZGF5Ymdjb2xvcicsJyNjY2ZmZmYnKSk7CiRjYXRlZ29yaWVzID0gJHRoaXMtPkdldENhdGVnb3JpZXMoKTsKaWYoIGlzX2FycmF5KCRjYXRlZ29yaWVzKSAmJiBjb3VudCgkY2F0ZWdvcmllcykgKSB7CiAgICAkb3V0ID0gYXJyYXkoKTsKICAgICRvdXRbLTFdID0gJHRoaXMtPkxhbmcoJ2FueScpOwogICAgZm9yZWFjaCggJGNhdGVnb3JpZXMgYXMgJHJvdyApIHsKICAgICAgICAkb3V0WyRyb3dbJ2NhdGVnb3J5X2lkJ11dID0gJHJvd1snY2F0ZWdvcnlfbmFtZSddOwogICAgfQogICAgJHNtYXJ0eS0+YXNzaWduKCdjYXRlZ29yaWVzJywkb3V0KTsKfQoKJG9wdHMgPSBbXTsKJG9wdHNbJ2FsbCddID0gJHRoaXMtPkxhbmcoJ2ZpbHRlcl9hbGwnKTsKJG9wdHNbJ3B1Ymxpc2hlZCddID0gJHRoaXMtPkxhbmcoJ2ZpbHRlcl9wdWJsaXNoZWQnKTsKJG9wdHNbJ2RyYWZ0J10gPSAkdGhpcy0+TGFuZygnZmlsdGVyX2RyYWZ0Jyk7CiRzbWFydHktPmFzc2lnbignZmlsdGVyX29wdHMnLCRvcHRzKTsKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZG1pbl9ldmVudHNfdGFiLnRwbCcpOwo=]]></data>
	</file>
	<file>
	  <filename>/function.admin_categories_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCiAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAkY2F0ZWdvcmllcyA9IFxDR0NhbGVuZGFyXGNhdGVnb3J5OjpnZXRfY2F0ZWdvcmllcygpOwoKICAkc21hcnR5LT5hc3NpZ24oJ2NhdGVnb3JpZXMnLCRjYXRlZ29yaWVzKTsKICBlY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluX2NhdGVnb3JpZXNfdGFiLnRwbCcpOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_fieldstab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdhZG1pbl9maWVsZHNfdXBkYXRlJywgJHJldHVybmlkLCAncG9zdCcsICcnKSk7CiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiRmaWVsZHMgPSAkdGhpcy0+R2V0RmllbGRzKCk7CmlmKCBpc19hcnJheSgkZmllbGRzKSAmJiBjb3VudCgkZmllbGRzKSApICRzbWFydHktPmFzc2lnbignZmllbGRzJywkZmllbGRzKTsKCiR0eXBlcyA9IGFycmF5KCk7CiR0eXBlc1skdGhpcy0+TGFuZygndGV4dGZpZWxkJyldID0gJzAnOwokdHlwZXNbJHRoaXMtPkxhbmcoJ3VwbG9hZGZpZWxkJyldID0gJzEnOwokdHlwZXNbJHRoaXMtPkxhbmcoJ3RleHRhcmVhJyldID0gJzInOwokY2Rtb2QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0NvbXBhbnlEaXJlY3RvcnknKTsKaWYoIGlzX29iamVjdCgkY2Rtb2QpICkgJHR5cGVzWyR0aGlzLT5MYW5nKCdjZF9jb21wYW55JyldID0gJzMnOwokdHlwZXNbJHRoaXMtPkxhbmcoJ2ZpbGVhdHRhY2htZW50JyldID0gNDsKJHR5cGVzWyR0aGlzLT5MYW5nKCdpbWFnZWF0dGFjaG1lbnQnKV0gPSA3OwokdHlwZXNbJHRoaXMtPkxhbmcoJ2NoZWNrYm94JyldID0gNTsKJHR5cGVzWyR0aGlzLT5MYW5nKCdkcm9wZG93bicpXSA9IDY7CiR0eXBlc1skdGhpcy0+TGFuZygnZHJvcGRvd25mcm9tdWR0JyldID0gODsKJHNtYXJ0eS0+YXNzaWduKCd0eXBlcycsYXJyYXlfZmxpcCgkdHlwZXMpKTsKCgokc21hcnR5LT5hc3NpZ24oJ3R5cGV0ZXh0JywkdGhpcy0+TGFuZygndHlwZScpKTsKJHNtYXJ0eS0+YXNzaWduKCduYW1ldGV4dCcsJHRoaXMtPkxhbmcoJ25hbWUnKSk7CmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZmllbGRzdGFiLnRwbCcpOwoKLy8gRU9GCj8+]]></data>
	</file>
	<file>
	  <filename>/function.admin_settingstab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCiRnQ21zID0gY21zbXMoKTsKCiRzbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdhZG1pbl9zZXR0aW5nc191cGRhdGUnLCAkcmV0dXJuaWQsICRtZXRob2Q9J3Bvc3QnLCAkZW5jdHlwZT0nJykpOwokc21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCiRzbWFydHktPmFzc2lnbignZnJpZW5kbHluYW1lJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZnJpZW5kbHluYW1lJykpOwokc21hcnR5LT5hc3NpZ24oJ3R3ZWx2ZWhvdXJ0ZXh0JywkdGhpcy0+TGFuZygnY2FsX3VzZV90d2VsdmVfaG91cl9jbG9jaycpKTsKJHNtYXJ0eS0+YXNzaWduKCd0d2VsdmVob3VyaW5wdXQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwndXNlX3R3ZWx2ZV9ob3VyX2Nsb2NrJywgMSwKICAJICAgICAgICAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlX3R3ZWx2ZV9ob3VyX2Nsb2NrJywwKSkpOwoKJHNtYXJ0eS0+YXNzaWduKCdmb3JjZWNhdHRleHQnLCR0aGlzLT5MYW5nKCdmb3JjZV9jYXRlZ29yeScpKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3JjZWNhdGlucHV0JywkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdmb3JjZV9jYXRlZ29yeScsIDEsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmb3JjZV9jYXRlZ29yeScsIDApKSk7CgokY2F0ZWdvcmllcyA9ICR0aGlzLT5HZXRDYXRlZ29yaWVzKCk7CmlmKCBpc19hcnJheSgkY2F0ZWdvcmllcykgJiYgY291bnQoJGNhdGVnb3JpZXMpICkgewogICRzbWFydHktPmFzc2lnbignZGVmY2F0dGV4dCcsJHRoaXMtPkxhbmcoJ2NhbF9kZWZhdWx0X2NhdGVnb3J5JykpOwogIGZvcmVhY2ggKCRjYXRlZ29yaWVzIGFzICRrZXkgPT4gJGNhdCkgewogICAgJGxpc3RfY2F0ZWdvcmllc1skY2F0WydjYXRlZ29yeV9uYW1lJ11dID0gJGNhdFsnY2F0ZWdvcnlfaWQnXTsKICB9CiAgJHNtYXJ0eS0+YXNzaWduKCdkZWZjYXRpbnB1dCcsJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnZGVmYXVsdF9jYXRlZ29yeScsICRsaXN0X2NhdGVnb3JpZXMsIC0xLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9jYXRlZ29yeScsJycpKSk7Cn0KCiR5ZWFyc19hcnJheT1hcnJheSgxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCk7CiR5ZWFyc19hcnJheT1hcnJheV9jb21iaW5lKCR5ZWFyc19hcnJheSwkeWVhcnNfYXJyYXkpOwokc21hcnR5LT5hc3NpZ24oInBhc3R5ZWFyc3RleHQiLCR0aGlzLT5MYW5nKCJzaG93cGFzdHllYXJzIikpOwokc21hcnR5LT5hc3NpZ24oInBhc3R5ZWFyc2lucHV0IiwkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdzaG93cGFzdHllYXJzJywgJHllYXJzX2FycmF5LCAtMSwgJHRoaXMtPkdldFByZWZlcmVuY2UoInNob3dwYXN0eWVhcnMiLDIpKSk7Cgokc21hcnR5LT5hc3NpZ24oImZ1dHVyZXllYXJzdGV4dCIsJHRoaXMtPkxhbmcoInNob3dmdXR1cmV5ZWFycyIpKTsKJHNtYXJ0eS0+YXNzaWduKCJmdXR1cmV5ZWFyc2lucHV0IiwkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdzaG93ZnV0dXJleWVhcnMnLCAkeWVhcnNfYXJyYXksIC0xLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgic2hvd2Z1dHVyZXllYXJzIiwxMCkpKTsKCiRzbWFydHktPmFzc2lnbignaGlkZXN1bW1hcnl0ZXh0JywkdGhpcy0+TGFuZygnaGlkZXN1bW1hcnknKSk7CiRzbWFydHktPmFzc2lnbignaGlkZXN1bW1hcnlpbnB1dCcsJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnaGlkZXN1bW1hcnknLCAxLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaGlkZXN1bW1hcnknLCAwKSkpOwoKJHNtYXJ0eS0+YXNzaWduKCdoaWRlY29udGVudHRleHQnLCR0aGlzLT5MYW5nKCdoaWRlY29udGVudCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdoaWRlY29udGVudGlucHV0JywkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdoaWRlY29udGVudCcsIDEsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdoaWRlY29udGVudCcsIDApKSk7Cgokc21hcnR5LT5hc3NpZ24oJ2RmbHRfZmdjb2xvcicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RmbHRfZmdjb2xvcicsJyNmZmZmZmYnKSk7CiRzbWFydHktPmFzc2lnbignZGZsdF9iZ2NvbG9yJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGZsdF9iZ2NvbG9yJywnIzAwOTkwMCcpKTsKCiRjb250ZW50b3BzID0gJGdDbXMtPkdldENvbnRlbnRPcGVyYXRpb25zKCk7CiRzbWFydHktPmFzc2lnbignZGVmYXVsdGNhbGVuZGFycGFnZV90ZXh0JywgJHRoaXMtPkxhbmcoJ2RlZmF1bHRjYWxlbmRhcnBhZ2UnKSk7CiRzbWFydHktPmFzc2lnbignZGVmYXVsdGNhbGVuZGFycGFnZV9pbnB1dCcsICRjb250ZW50b3BzLT5DcmVhdGVIaWVyYXJjaHlEcm9wZG93bignJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlZmF1bHRjYWxlbmRhcnBhZ2UnLCctMScpKSk7Cgokc21hcnR5LT5hc3NpZ24oJ3VwbG9hZGRpcmVjdG9yeV90ZXh0JywkdGhpcy0+TGFuZygndXBsb2FkZGlyZWN0b3J5JykpOwokc21hcnR5LT5hc3NpZ24oJ3VwbG9hZGRpcmVjdG9yeV9pbnB1dCcsJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ3VwbG9hZGRpcmVjdG9yeScsCgkJCQkJCQkgICAgICAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VwbG9hZGRpcmVjdG9yeScsJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10pLAoJCQkJCQkJICAgICAgIDMwKSk7CgokdmFsID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VwbG9hZGZpbGV0eXBlcycsJ2pwZyxqcGVnLGdpZixwbmcnKTsKJHNtYXJ0eS0+YXNzaWduKCd1cGxvYWRmaWxldHlwZXNfdGV4dCcsJHRoaXMtPkxhbmcoJ3VwbG9hZGZpbGV0eXBlcycpKTsKJHNtYXJ0eS0+YXNzaWduKCd1cGxvYWRmaWxldHlwZXNfaW5wdXQnLCR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCd1cGxvYWRmaWxldHlwZXMnLCR2YWwsIDMwKSk7CgokdmFsID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VwbG9hZHVuaXF1ZScsMSk7CiRzbWFydHktPmFzc2lnbigndXBsb2FkdW5pcXVlX3RleHQnLCR0aGlzLT5MYW5nKCd1cGxvYWR1bmlxdWUnKSk7CiRzbWFydHktPmFzc2lnbigndXBsb2FkdW5pcXVlX2lucHV0JywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ3VwbG9hZHVuaXF1ZScsIDEsICR2YWwpKTsKCiRzbWFydHktPmFzc2lnbignZnJvbnRlbmRfcmVkaXJlY3RwYWdlJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZnJvbnRlbmRfcmVkaXJlY3RwYWdlJykpOwoKJHBvbGljaWVzID0gYXJyYXkoKTsKJHBvbGljaWVzWydhbGwnXSA9ICR0aGlzLT5MYW5nKCdwb2xpY3lfYWxsJyk7CiRwb2xpY2llc1snbm9uZSddID0gJHRoaXMtPkxhbmcoJ3BvbGljeV9ub25lJyk7CiRwb2xpY2llc1snaW5kaXZpZHVhbCddID0gJHRoaXMtPkxhbmcoJ3BvbGljeV9pbmRpdmlkdWFsJyk7CiRzbWFydHktPmFzc2lnbignb3ZlcmxhcF9wb2xpY2llcycsJHBvbGljaWVzKTsKJHNtYXJ0eS0+YXNzaWduKCdvdmVybGFwX3BvbGljeScsJHRoaXMtPkdldFByZWZlcmVuY2UoJ292ZXJsYXBfcG9saWN5JywnYWxsJykpOwoKJG92ZXJsYXBfYWN0aW9ucyA9IGFycmF5KCk7CiRvdmVybGFwX2FjdGlvbnNbJ3JlbW92ZSddID0gJHRoaXMtPkxhbmcoJ292ZXJsYXBfYWN0aW9uX3JlbW92ZScpOwokb3ZlcmxhcF9hY3Rpb25zWydlcnJvciddID0gJHRoaXMtPkxhbmcoJ292ZXJsYXBfYWN0aW9uX2Vycm9yJyk7CiRzbWFydHktPmFzc2lnbignb3ZlcmxhcF9hY3Rpb25zJywkb3ZlcmxhcF9hY3Rpb25zKTsKJHNtYXJ0eS0+YXNzaWduKCdvdmVybGFwX2FjdGlvbicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ292ZXJsYXBfYWN0aW9uJywnZXJyb3InKSk7Cgokc21hcnR5LT5hc3NpZ24oJ2RmbHRfc3RhdHVzJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGZsdF9zdGF0dXMnLCdEJykpOwokcHJlZml4ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VybF9wcmVmaXgnKTsKaWYoICEkcHJlZml4ICkgJHByZWZpeCA9ICdjYWxlbmRhcic7CiRzbWFydHktPmFzc2lnbigndXJsX3ByZWZpeCcsJHByZWZpeCk7CiRzbWFydHktPmFzc2lnbignZGZsdF9zdGFydHRpbWUnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZmx0X3N0YXJ0dGltZScsJzEyOjAwJykpOwokc21hcnR5LT5hc3NpZ24oJ2RmbHRfYWxsZGF5ZXZlbnQnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZmx0X2FsbGRheWV2ZW50JywwKSk7CiRzbWFydHktPmFzc2lnbignZmlyc3RkYXlvZndlZWsnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmaXJzdGRheW9md2VlaycsMSkpOwokc21hcnR5LT5hc3NpZ24oJ2RheW9wdGlvbnMnLGFycmF5KDA9PiR0aGlzLT5MYW5nKCdzdW5kYXknKSwxPT4kdGhpcy0+TGFuZygnbW9uZGF5JykpKTsKJHNtYXJ0eS0+YXNzaWduKCdpY2FsX2hvbGlkYXlzJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaWNhbF9ob2xpZGF5cycpKTsKJHNtYXJ0eS0+YXNzaWduKCdob2xpZGF5X2ZnY29sb3InLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdob2xpZGF5X2ZnY29sb3InLCcjMDAwMDAwJykpOwokc21hcnR5LT5hc3NpZ24oJ2hvbGlkYXlfYmdjb2xvcicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2hvbGlkYXlfYmdjb2xvcicsJyNjY2ZmZmY3JykpOwoKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkdGhpcy0+TGFuZygnY2FsX3VwZGF0ZXNldHRpbmdzJykpKTsKCiRmZXUgPSBjZ2VfdXRpbHM6OmdldF9tb2R1bGUoJ0Zyb250RW5kVXNlcnMnKTsKaWYoICRmZXUgKSB7CiAgICAkdG1wID0gJGZldS0+R2V0R3JvdXBMaXN0KCk7CiAgICAkdG1wID0gY2dlX2FycmF5OjpoYXNoX3ByZXBlbmQoJHRtcCwkdGhpcy0+TGFuZygnbm9uZScpLC0xKTsKICAgICRzbWFydHktPmFzc2lnbignZ3JvdXBsaXN0JyxhcnJheV9mbGlwKCR0bXApKTsKICAgICRzbWFydHktPmFzc2lnbignZnJvbnRlbmRfZ3JvdXAnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmcm9udGVuZF9ncm91cCcsLTEpKTsKICAgICRzbWFydHktPmFzc2lnbignZnJvbnRlbmRfbWFzdGVyZ3JvdXAnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmcm9udGVuZF9tYXN0ZXJncm91cCcsLTEpKTsKfQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ3NldHRpbmdzLnRwbCcpOwoKLy8gRU9GCg==]]></data>
	</file>
	<file>
	  <filename>/function.displayevent.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiRldmVudHNfdGFibGVfbmFtZSA9ICR0aGlzLT5ldmVudHNfdGFibGVfbmFtZTsKJGV2ZW50X2lkID0gXGNnZV9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCdldmVudF9pZCcpOwppZiggJGV2ZW50X2lkIDwgMSApICRldmVudF9pZCA9ICduZXh0JzsKCiR0aGV0ZW1wbGF0ZSA9IFxjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnZXZlbnR0ZW1wbGF0ZScpOwppZiggISR0aGV0ZW1wbGF0ZSApIHsKICAgICR0cGwgPSBDbXNMYXlvdXRUZW1wbGF0ZTo6bG9hZF9kZmx0X2J5X3R5cGUoJ0NHQ2FsZW5kYXI6OmV2ZW50Jyk7CiAgICBpZiggIWlzX29iamVjdCgkdHBsKSApIHsKICAgICAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdObyBkZWZhdWx0IGV2ZW50IHRlbXBsYXRlIGZvdW5kJyk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgJHRoZXRlbXBsYXRlID0gJHRwbC0+Z2V0X25hbWUoKTsKICAgIHVuc2V0KCR0cGwpOwp9CgppZiggJGV2ZW50X2lkID09ICduZXh0JyApIHsKICAgICRzdGFydCA9IGRhdGUoJ1ktbS1kIEg6aTpzJyk7IC8vIHN0YXJ0IG5vdyAhCiAgICAkc3FsID0gIlNFTEVDVCBESVNUSU5DVCBldmVudF9pZCBGUk9NICRldmVudHNfdGFibGVfbmFtZSAiOwogICAgJHNxbCAuPSAiV0hFUkUgZXZlbnRfc3RhdHVzID0gJ1AnIEFORCAoZXZlbnRfZGF0ZV9zdGFydCA+ICckc3RhcnQnIE9SIGV2ZW50X2RhdGVfZW5kID4gJyRzdGFydCcpIjsKICAgICRzcWwgLj0gJyBMSU1JVCAxJzsKICAgICRldmVudF9pZCA9ICRkYi0+R2V0T25lKCRzcWwpOwp9CmVsc2UgaWYoIChpbnQpJGV2ZW50X2lkID4gMCApIHsKICAgICRzcWwgPSAiU0VMRUNUIGV2ZW50X3N0YXR1cyBGUk9NICRldmVudHNfdGFibGVfbmFtZSBXSEVSRSBldmVudF9pZCA9ID8iOwogICAgJHRtcCA9ICRkYi0+R2V0T25lKCAkc3FsLCAgWyAoaW50KSAkZXZlbnRfaWQgXSk7CiAgICBpZiggJHRtcCAhPSAnUCcgKSB7CiAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0iY2FsZW5kYXItZXJyb3IiPicuJHRoaXMtPkxhbmcoJ2Vycm9yX2V2ZW50X25vdF9mb3VuZCcsJGV2ZW50X2lkKS4nPC9kaXY+JzsKICAgICAgICByZXR1cm47CiAgICB9Cn0KZWxzZSB7CiAgICAvLyBubyBldmVudAogICAgZWNobyAnPGRpdiBjbGFzcz0iY2FsZW5kYXItZXJyb3IiPicuJHRoaXMtPkxhbmcoJ2Vycm9yX2V2ZW50X25vdF9mb3VuZCcsJGV2ZW50X2lkKS4nPC9kaXY+JzsKICAgIHJldHVybjsKfQoKJGxvYWRlciA9IG5ldyBjZ2NfZXZlbnRfbG9hZGVyKCRpZCxhcnJheSgkZXZlbnRfaWQpLCRyZXR1cm5pZCxGQUxTRSk7CiRldmVudHMgPSAkbG9hZGVyLT5nZXRfZXZlbnRzKCk7CmlmKCAhaXNfYXJyYXkoJGV2ZW50cykgfHwgY291bnQoJGV2ZW50cykgIT0gMSApIHsKICAgIGVjaG8gJzxkaXYgY2xhc3M9ImNhbGVuZGFyLWVycm9yIj4nLiR0aGlzLT5MYW5nKCdlcnJvcl9ldmVudF9ub3RfZm91bmQnLCRldmVudF9pZCkuJzwvZGl2Pic7CiAgICByZXR1cm47Cn0KJGV2ZW50ID0gJGV2ZW50c1swXTsKCi8vIG90aGVyIGxhbmd1YWdlIGZpZWxkcwokbGFuZyA9ICR0aGlzLT5HZXRMYWJlbHMoKTsKCmlmIChpc3NldCgkcGFyYW1zWydzaG93X2ljYWwnXSkpIHsKICAgICRkb21haW4gPSAkZ0Ntcy0+Y29uZmlnWydyb290X3VybCddOwogICAgJHRpbWVfem9uZSA9IDA7CiAgICAkb3V0c3RyICA9ICJCRUdJTjpWQ0FMRU5EQVJcbiI7CiAgICAkb3V0c3RyIC49ICJQUk9ESUQ6LS8vIi4kZG9tYWluLiIvL0NHQ2FsZW5kYXIgIi4kdGhpcy0+R2V0VmVyc2lvbigpLiIvL0VOXG4iOwogICAgJG91dHN0ciAuPSAiVkVSU0lPTjoyLjBcbiI7CiAgICAkb3V0c3RyIC49ICJDQUxTQ0FMRTpHUkVHT1JJQU5cbiI7CiAgICAkb3V0c3RyIC49ICJNRVRIT0Q6UFVCTElTSFxuIjsKICAgICRvdXRzdHIgLj0gIlgtV1ItQ0FMTkFNRToiLnN0cnRvdXBwZXIoJHRoaXMtPkNvbnZlcnRDYXRlZ29yaWVzVG9TdHJpbmcoJGNhdGVnb3JpZXMpKS4iXG4iOwogICAgaWYgKGRhdGUoJ2UnLCBzdHJ0b3RpbWUoJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0J10pKSAhPSAnZScpCiAgICAgICAgJG91dHN0ciAuPSAiWC1XUi1USU1FWk9ORToiLmRhdGUoJ2UnLCBzdHJ0b3RpbWUoJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0J10pKS4iXG4iOwogICAgJG91dHN0ciAuPSAiWC1XUi1DQUxERVNDOlNjaGVkdWxlIGZyb20gIi5nZXRfc2l0ZV9wcmVmZXJlbmNlKCdzaXRlbmFtZScsICdDTVNNUyBTaXRlJykuIlxuIjsKCiAgICAkb3V0c3RyIC49ICJCRUdJTjpWRVZFTlRcbiI7CiAgICAkb3V0c3RyIC49ICJEVFNUQVJUOiI7CiAgICAkb3V0c3RyIC49ICR0aGlzLT5Vbml4VGltZXN0YW1wVG9pQ2FsKHN0cnRvdGltZSgkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnQnXSksICR0aW1lX3pvbmUpLiJcbiI7CiAgICAkb3V0c3RyIC49ICJEVEVORDoiOwogICAgJGVuZF9kYXRlID0gc3RydG90aW1lKCRldmVudFsnZXZlbnRfZGF0ZV9zdGFydCddKSArIDM2MDA7CiAgICBpZighKGVtcHR5KCRldmVudFsnZXZlbnRfZGF0ZV9lbmQnXSkgfHwgJGV2ZW50WydldmVudF9kYXRlX2VuZCddID09IG51bGwgfHwgJGV2ZW50WydldmVudF9kYXRlX2VuZCddID09IDApKSB7CiAgICAgICAgJGVuZF9kYXRlID0gc3RydG90aW1lKCRldmVudFsnZXZlbnRfZGF0ZV9lbmQnXSk7CiAgICB9CiAgICAkb3V0c3RyIC49ICR0aGlzLT5Vbml4VGltZXN0YW1wVG9pQ2FsKCRlbmRfZGF0ZSwgJHRpbWVfem9uZSkuIlxuIjsKICAgICRvdXRzdHIgLj0gJ1NVTU1BUlk6Jy5zdHJfcmVwbGFjZSgiXG4iLCAiXFxuIiwgJGV2ZW50WydldmVudF90aXRsZSddKS4iXG4iOwogICAgJG91dHN0ciAuPSAnREVTQ1JJUFRJT046Jy5zdHJfcmVwbGFjZSgiXG4iLCAiXFxuIiwgJGV2ZW50WydldmVudF9kZXRhaWxzJ10pOwogICAgJGV4dHJhZmllbGRzID0gIlNFTEVDVCBmaWVsZF9uYW1lLGZpZWxkX3ZhbHVlIEZST00gIi4kdGhpcy0+ZXZlbnRfZmllbGRfdmFsdWVzX3RhYmxlX25hbWUuIiBXSEVSRSBldmVudF9pZCA9ID8iOwogICAgJGZycyA9ICRkYi0+RXhlY3V0ZSgkZXh0cmFmaWVsZHMsYXJyYXkoJGV2ZW50X2lkKSk7CiAgICB3aGlsZSAoJGZycyAmJiAkcm93PSRmcnMtPkZldGNoUm93KCkpIHsKICAgICAgICAkb3V0c3RyIC49ICJcXG4iIC4gJHJvd1snZmllbGRfbmFtZSddLic6ICcuc3RyX3JlcGxhY2UoIlxuIiwgIlxcbiIsICRyb3dbJ2ZpZWxkX3ZhbHVlJ10pOwogICAgfQogICAgJG91dHN0ciAuPSAiXG4iOwogICAgJG91dHN0ciAuPSAnVUlEOicuJGV2ZW50X2lkLidAJy4kZG9tYWluLiJcbiI7CiAgICAkb3V0c3RyIC49ICdEVFNUQU1QOicuJHRoaXMtPnVuaXhUaW1lc3RhbXBUb2lDYWwodGltZSgpLCAkdGltZV96b25lKS4iXG4iOwogICAgJG91dHN0ciAuPSAiQ0xBU1M6UFVCTElDXG4iOwogICAgJG91dHN0ciAuPSAiRU5EOlZFVkVOVFxuIjsKICAgICRvdXRzdHIgLj0gIkVORDpWQ0FMRU5EQVJcbiI7CgogICAgd2hpbGUoQG9iX2VuZF9jbGVhbigpKTsKICAgIGhlYWRlcignUHJhZ21hOiBwdWJsaWMnKTsKICAgIGhlYWRlcignRXhwaXJlczogMCcpOwogICAgaGVhZGVyKCdDYWNoZS1Db250cm9sOiBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hlY2s9MCwgcHJlLWNoZWNrPTAnKTsKICAgIGhlYWRlcignQ2FjaGUtQ29udHJvbDogcHJpdmF0ZScsZmFsc2UpOwogICAgaGVhZGVyKCdDb250ZW50LURlc2NyaXB0aW9uOiBGaWxlIFRyYW5zZmVyJyk7CiAgICBoZWFkZXIoJ0NvbnRlbnQtVHlwZTogdGV4dC9jYWxlbmRhcicpOwogICAgaGVhZGVyKCdDb250ZW50LUxlbmd0aDogJyAuIHN0cmxlbigkb3V0c3RyKSk7CiAgICBoZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPWNhbGVuZGFyLmljcycpOwogICAgZWNobyAkb3V0c3RyOwogICAgZXhpdDsKfQplbHNlIHsKICAgIC8vIGFzc2lnbiB0byBTbWFydHkKICAgIC8vJHRwbCA9ICRzbWFydHktPkNyZWF0ZVRlbXBsYXRlKCR0aGlzLT5HZXRUZW1wbGF0ZVJlc291cmNlKCdvcmlnX2V2ZW50X3RlbXBsYXRlLnRwbCcpLG51bGwsbnVsbCwkc21hcnR5KTsKICAgICR0cGwgPSAkc21hcnR5LT5DcmVhdGVUZW1wbGF0ZSgkdGhpcy0+R2V0VGVtcGxhdGVSZXNvdXJjZSgkdGhldGVtcGxhdGUpLG51bGwsbnVsbCwkc21hcnR5KTsKICAgICR0cGwtPmFzc2lnbignZXZlbnQnLCAkZXZlbnQpOwogICAgJHRwbC0+YXNzaWduKCdsYW5nJywgJGxhbmcpOwogICAgJHRwbC0+YXNzaWduKCdpY2FsX3VybCcsICR0aGlzLT5DcmVhdGVMaW5rKCdjbnRudDAxJywgJ2RlZmF1bHQnLCAkcmV0dXJuaWQsICcnLCBhcnJheSgnc2hvd19pY2FsJyA9PiAndHJ1ZScsICdkaXNwbGF5JyA9PiAnZXZlbnQnLCAnZXZlbnRfaWQnID0+ICRldmVudF9pZCksICcnLCB0cnVlKSk7CiAgICAkdHBsLT5hc3NpZ24oJ2ZpbGVfbG9jYXRpb24nLGNnY2FsZW5kYXJfdXRpbHM6OmdldF91cGxvYWRfbG9jYXRpb24oKSk7CiAgICAkdHBsLT5hc3NpZ24oJ2FsbF9jYXRlZ29yaWVzJyxcQ0dDYWxlbmRhclxjYXRlZ29yeTo6Z2V0X2NhdGVnb3JpZXMoVFJVRSkpOwoKICAgICRmZXUgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdGcm9udEVuZFVzZXJzJyk7CiAgICBpZiggJGZldSApIHsKICAgICAgICAkZmV1X3VpZCA9ICRmZXUtPkxvZ2dlZEluSWQoKTsKICAgICAgICAkbWFzdGVyX2dyb3VwID0gJHRoaXMtPkdldFByZWZlcm5jZSgnZnJvbnRlbmRfbWFzdGVyZ3JvdXAnKTsKICAgICAgICBpZiggJHRoaXMtPkhhdmVNYW5hZ2VSaWdodCgpIHx8ICgkZmV1X3VpZCA+IDAgJiYgJGV2ZW50WydldmVudF9jcmVhdGVkX2J5J10gPT0gJGZldV91aWQpICkgewogICAgICAgICAgICAkZWRpdHBhZ2UgPSAkcmV0dXJuaWQ7CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICR0bXAgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZnJvbnRlbmRfcmVkaXJlY3RwYWdlJywnJyk7CiAgICAgICAgICAgICAgICBpZiggJHRtcCApIHsKICAgICAgICAgICAgICAgICAgICAkdG1wID0gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCR0bXApOwogICAgICAgICAgICAgICAgICAgICRlZGl0cGFnZSA9ICR0aGlzLT5yZXNvbHZlX2FsaWFzX29yX2lkKCR0bXAsJGVkaXRwYWdlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICR0bXAgPSBcY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ2VkaXRwYWdlJyk7CiAgICAgICAgICAgICAgICBpZiggJHRtcCApIHsKICAgICAgICAgICAgICAgICAgICAkZWRpdHBhZ2UgPSAkdGhpcy0+cmVzb2x2ZV9hbGlhc19vcl9pZCgkdG1wLCRlZGl0cGFnZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHBhcm1zID0gYXJyYXkoJ2V2ZW50X2lkJz0+JGV2ZW50X2lkKTsKICAgICAgICAgICAgJHBhcm1zWydyZXR1cm5faWQnXSA9ICRyZXR1cm5pZDsKICAgICAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2VkaXRldmVudHRlbXBsYXRlJ10pICkgJHBhcm1zWydlZGl0ZXZlbnR0ZW1wbGF0ZSddID0gJHBhcmFtc1snZWRpdGV2ZW50dGVtcGxhdGUnXTsKICAgICAgICAgICAgJGVkaXRfdXJsID0gJHRoaXMtPmNyZWF0ZV91cmwoJ2NudG50MDEnLCdhZGRlZGl0X2V2ZW50JywgJGVkaXRwYWdlLCAkcGFybXMpOwogICAgICAgICAgICAkdHBsLT5hc3NpZ24oJ2VkaXRfdXJsJywkZWRpdF91cmwpOwogICAgICAgIH0KICAgIH0KICAgIC8vIEFzc2lnbiB0aXRsZSB0byBjbGFzcyB2YXIgc28gZXZlbnQgdGl0bGUgY2FuIGJlIGFkZGVkIHRvIHBhZ2UgdGl0bGUgaW4gIENvbnRlbnRQb3N0UmVuZGVyKCkKICAgICR0aGlzLT5jdXJyZW50X2V2ZW50X3RpdGxlID0gJGV2ZW50WydldmVudF90aXRsZSddOwoKICAgIC8vIERpc3BsYXkgdGVtcGxhdGUKICAgICR0cGwtPmRpc3BsYXkoKTsKfQoKPz4=]]></data>
	</file>
	<file>
	  <filename>/functions.admin_tools.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgpmdW5jdGlvbiBjYWxlbmRhcl9pc1ZhbGlkRmlsZW5hbWUoJiRtb2QsJGZpbGVuYW1lKQp7CiAgJGZpbGVfbmFtZSA9IHRyaW0gKCRmaWxlbmFtZSk7CiAgJGV4dGVuc2lvbiA9IHN0cnRvbG93ZXIgKHN0cnJjaHIgKCRmaWxlX25hbWUsICIuIikpOwoKICAkdmFsaWRfZXh0ZW5zaW9ucyA9IGV4cGxvZGUoJywnLHN0cnRvbG93ZXIoJG1vZC0+R2V0UHJlZmVyZW5jZSgndXBsb2FkZmlsZXR5cGVzJywnanBnLGpwZWcsZ2lmLHBuZycpKSk7CiAgJGNvdW50ID0gY291bnQoJHZhbGlkX2V4dGVuc2lvbnMpOwoKICBpZiggISRmaWxlX25hbWUgKSByZXR1cm4gZmFsc2U7CiAgaWYoICRjb3VudCA9PSAwICkgcmV0dXJuIHRydWU7CiAgZm9yZWFjaCggJHZhbGlkX2V4dGVuc2lvbnMgYXMgJG9uZWV4dGVuc2lvbiApIHsKICAgICRmYyA9IHN1YnN0cigkb25lZXh0ZW5zaW9uLCAwLCAxKTsKICAgIGlmKCAkZmMgIT0gJy4nICkgJG9uZWV4dGVuc2lvbiA9ICcuJy4kb25lZXh0ZW5zaW9uOwogICAgaWYoICRvbmVleHRlbnNpb24gPT0gJGV4dGVuc2lvbiApIHJldHVybiB0cnVlOwogIH0KICByZXR1cm4gZmFsc2U7Cn0KCmZ1bmN0aW9uIGNhbGVuZGFyX0hhbmRsZVVwbG9hZCgmJG1vZCwkZmxkbmFtZSwmJGVycm9yKQp7CiAgJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOwogICRkZXN0RGlyID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgndXBsb2FkZGlyZWN0b3J5Jyk7CiAgaWYoICEkZGVzdERpciApICRkZXN0RGlyID0gJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ107CgogIGlmKCAhaXNzZXQoJF9GSUxFUykgfHwgIWlzc2V0KCRfRklMRVNbJGZsZG5hbWVdKSB8fCAhJF9GSUxFU1skZmxkbmFtZV1bJ25hbWUnXSApIHsKICAgICRlcnJvciA9ICRtb2QtPkxhbmcoJ2Vycm9yX25vdXBsb2FkJyk7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICAkZmlsZSA9JiAkX0ZJTEVTWyRmbGRuYW1lXTsKICBpZiggIWlzc2V0KCRmaWxlWyd0eXBlJ10pICkgJGZpbGVbJ3R5cGUnXSA9ICcnOwogIGlmKCAhaXNzZXQoJGZpbGVbJ25hbWUnXSkgKSAkZmlsZVsnbmFtZSddID0gJyc7CiAgaWYoICFpc3NldCgkZmlsZVsnc2l6ZSddKSApICRmaWxlWydzaXplJ10gPSAnJzsKICAvLyRmaWxlWyduYW1lJ10gPSBwcmVnX3JlcGxhY2UoJy9bXmEtekEtWjAtOVwuXCRcJVwnXGBcLVxAXHtcfVx+XCFcI1woXClcJlxfXF5dLycsICcnLCBzdHJfcmVwbGFjZSAoYXJyYXkgKCcgJywgJyUyMCcpLCBhcnJheSAoJ18nLCAnXycpLCAkZmlsZVsnbmFtZSddKSk7CiAgJGZpbGVbJ25hbWUnXSA9IG1iX2VyZWdfcmVwbGFjZSgnW15cd1xzXGRcLlwtX34sOzpcJVxAXCRcJ1x7XH1cI1wmXFtcXVwoXF1dJywgJycsIHN0cl9yZXBsYWNlIChhcnJheSAoJyAnLCAnJTIwJyksIGFycmF5ICgnXycsICdfJyksICRmaWxlWyduYW1lJ10pKTsKICBpZiggISRtb2QtPmlzVmFsaWRGaWxlbmFtZSggJGZpbGVbJ25hbWUnXSApICkgewogICAgJGVycm9yID0gJG1vZC0+TGFuZygnZXJyb3JfaW52YWxpZGZpbGVuYW1lJyk7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICBpZiggJGZpbGVbJ2Vycm9yJ10gIT0gMCB8fCAkZmlsZVsnc2l6ZSddID09ICcnIHx8ICRmaWxlWydzaXplJ10gPT0gMCApIHsKICAgICRlcnJvciA9ICRtb2QtPkxhbmcoJ2Vycm9yX3Byb2JsZW13aXRodXBsb2FkJyk7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICAkZGVzdG5hbWUgPSAkZmlsZVsnbmFtZSddOwogICRkZXN0ZmlsZXNwZWMgPSBjbXNfam9pbl9wYXRoKCAkZGVzdERpciwgJGRlc3RuYW1lICk7CiAgaWYoIGZpbGVfZXhpc3RzKCAkZGVzdGZpbGVzcGVjICkgKSB7CiAgICBpZiggJG1vZC0+R2V0UHJlZmVyZW5jZSgndXBsb2FkdW5pcXVlJywxKSA9PSAxICkgewogICAgICAkaSA9IDA7CiAgICAgIGZvciggJGkgPSAwOyAgJGkgPCAxMDA7ICRpKysgKSB7CgkkZGVzdG5hbWUgPSAkZmlsZVsnbmFtZSddOwoJaWYoICRpID4gMCApICRkZXN0bmFtZSA9ICRpLidfJy4kZmlsZVsnbmFtZSddOwoJJGRlc3RmaWxlc3BlYyA9IGNtc19qb2luX3BhdGgoICRkZXN0RGlyLCAkZGVzdG5hbWUgKTsKCWlmKCAhZmlsZV9leGlzdHMoICRkZXN0ZmlsZXNwZWMgKSApIGJyZWFrOwogICAgICB9CiAgICAgIGlmKCAkaSA9PSAxMDAgKSB7CgkkZXJyb3IgPSAkbW9kLT5MYW5nKCdlcnJvcl9maWxlZXhpc3RzJyk7CglyZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAkZXJyb3IgPSAkbW9kLT5MYW5nKCdlcnJvcl9maWxlZXhpc3RzJyk7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICB9CgogIGlmKCAhQGNvcHkoJGZpbGVbJ3RtcF9uYW1lJ10sICRkZXN0ZmlsZXNwZWMpICkgewogICAgJGVycm9yID0gJG1vZC0+TGFuZygnZXJyb3JfZmlsZWNvcHlmYWlsZWQnKTsKICAgIHJldHVybiBmYWxzZTsKICB9CgogIHJldHVybiAkZGVzdG5hbWU7Cn0KCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/help.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPldoYXQgZG9lcyB0aGlzIGRvPzwvaDM+CjxwPkNhbGd1eXMgQ2FsZW5kYXIgaXMgYSBtb2R1bGUgZm9yIGRpc3BsYXlpbmcgZXZlbnRzIG9uIHlvdXIgcGFnZS4gV2hlbiB0aGUgbW9kdWxlIGlzIGluc3RhbGxlZCwgYSAmcXVvdDtDYWxndXlzIENhbGVuZGFyJnF1b3Q7IGFkbWluIHBhZ2UgaXMgYWRkZWQgdG8gdGhlIHBsdWdpbnMgbWVudQp0aGF0IHdpbGwgYWxsb3cgeW91IHRvIG1hbmFnZSB5b3VyIGV2ZW50cy48L3A+Cgo8aDM+U2VjdXJpdHk8L2gzPgo8cD5UaGUgdXNlciBtdXN0IGJlbG9uZyB0byBhIGdyb3VwIHdpdGggdGhlICdNb2RpZnkgQ2FsZW5kYXInIHBlcm1pc3Npb24gaW4gb3JkZXIgdG8gYWRkLCBlZGl0LCBvciBkZWxldGUgY2FsZW5kYXIgZXZlbnQgZW50cmllcy48L3A+Cgo8aDM+SG93IGRvIEkgdXNlIGl0PzwvaDM+CjxvbD4KICA8bGk+RW5zdXJlIGpxdWVyeSwgYW5kIGpxdWVyeS11aSBhcmUgZW5hYmxlZCBpbiB5b3VyIHBhZ2UgcmVuZGVyaW5nLgogICAgIDxwPmkuZTogIGFkZCA8Y29kZT57Y21zX2pxdWVyeX08L2NvZGU+IHRvIHRoZSBoZWFkIHNlY3Rpb24gb2YgeW91ciBwYWdlIHRlbXBsYXRlLjwvcD4KICA8L2xpPgogIDxsaT5FbnN1cmUgdGhhdCA8Y29kZT57Y2dqc19yZW5kZXJ9PC9jb2RlPiBpcyBjYWxsZWQgaW4geW91ciBwYWdlIHRlbXBsYXRlIDxlbT5hZnRlcjwvZW0+IGpxdWVyeSBpcyBsb2FkZWQuPC9saT4KICA8bGk+UHV0IHRoZSBjbXNfbW9kdWxlIHRhZyBpbiB0aGUgcGFnZSBjb250ZW50LiBNYWtlIHN1cmUgaXQgaXMgbm90IGVuY2xvc2VkIGluICZsdDtwcmUmZ3Q7Li4uJmx0Oy9wcmUmZ3Q7IHRhZ3MuICBZb3Ugd2lsbCBuZWVkIHRvIHZpZXcgc291cmNlIGNvZGUgZm9yIHRoaXMuICBUaGUgY29kZSB3b3VsZCBsb29rIHNvbWV0aGluZyBsaWtlOjxiciAvPgogIDx0dD57Y21zX21vZHVsZSBtb2R1bGU9IkNHQ2FsZW5kYXIifTwvdHQ+PGJyIC8+CiAgPGxpPlN0eWxlIHRoZSBjYWxlbmRhciBhcHByb3ByaWF0ZWx5IGZvciB5b3VyIGRpc3BsYXk8L2xpPgo8L29sPgoKPGgzPk5vdGVzOjwvaDM+Cjx1bD4KICA8bGk+QWRtaW4gVGhlbWVzCiAgICA8cD5UaGlzIG1vZHVsZXMgYWRtaW4gcGFuZWwgPGVtPih2ZXJzaW9uIDEuMTQrKSByZWxpZXMgaGVhdmlseSBvbiBzdHlsZXMgYW5kIHRvb2xzIGluIHRoZSBDTVNNUyBPbmVFbGV2ZW4gYWRtaW4gdGhlbWUuICBJdCBtYXkgbm90IGZ1bmN0aW9uIHByb3BlcnkgKG9yIGF0IGxlYXN0IGxvb2sgcHJvcGVybHkpIGluIG90aGVyIGFkbWluIHRoZW1lcyB0aGF0IGRvbid0IGRpcmVjdGx5IHJlcGxpY2F0ZSB0aGVzZSBzdHlsZXMuPC9wPgogIDwvbGk+CiAgPGxpPlRlbXBsYXRlcwogICAgPHA+VGhlIGRlZmF1bHQgdGVtcGxhdGVzIHByb3ZpZGVkIHdpdGggdGhpcyBtb2R1bGUgYXJlIHB1cmVseSBzYW1wbGVzLiAgSXQgaXMgZXhwZWN0ZWQgdGhhdCB5b3Ugd2lsbCBuZWVkIHRvIGFkanVzdCB0aGUgdGVtcGxhdGVzLCBhbmQgYWRkIHN0eWxlcyB0byB5b3VyIHN0eWxlc2hlZXRzIGluIG9yZGVyIHRvIGFkanVzdCB0aGUgb3V0cHV0IG9mIHRoaXMgbW9kdWxlIHRvIG1hdGNoIHlvdXIgdXNhZ2UsIGFuZCB5b3VyIHNpdGVzIHRoZW1lLjwvcD4KICA8L2xpPgogIDxsaT5qUXVlcnkKICAgIDxwPlRoZSB0ZW1wbGF0ZXMgcHJvdmlkZWQgYnkgZGVmYXVsdCB3aXRoIHRoaXMgbW9kdWxlIG1ha2UgdXNlIG9mIEpRdWVyeSwgYW5kIEpRdWVyeVVJLiBJbiBvcmRlciBmb3IgdGhlIHByb3BlciBmdW5jdGlvbmluZyBvZiB0aGlzIG1vZHVsZSBvbiBhIGRlZmF1bHQgaW5zdGFsbCB5b3Ugc2hvdWxkIGVuc3VyZSB0aGF0IHRoZXNlIGxpYnJhcmllcyBhcmUgcHJvcGVybHkgY29uZmlndXJlZCBvbiB0aGUgd2ViIHBhZ2VzIHRoYXQgd2lsbCBiZSBkaXNwbGF5aW5nIHRoZSBvdXRwdXQgb2YgdGhpcyBtb2R1bGUuPC9wPgogIDwvbGk+CjwvdWw+Cgo8aDM+UGFyYW1ldGVyczwvaDM+Cjx0YWJsZSBib3JkZXI9MCBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTA+CiAgPHRyPgogICAgIDx0ZD5hY3Rpb248L3RkPgogICAgIDx0ZD5BY2NlcHRhYmxlIHZhbHVlczo8YnI+CiAgICAgICAgImRlZmF1bHQiIC0gU3BlY2lmaWVzIHRoZSBkZWZhdWx0IGFjdGlvbiwgd29ya3MgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgImRpc3BsYXkiIHBhcmFtZXRlciBiZWxvdy48YnIvPgoJImZ1bGxjYWxlbmRhciIgLSBVc2VzIHRoZSBmdWxsQ2FsZW5kYXIganF1ZXJ5IHBsdWdpbiAocmVxdWlyZXMganF1ZXJ5LCBqcXVlcnktdWkgYW5kIGpzcmVuZGVyIHRvIGJlIGVuYWJsZWQpIHRvIHByb3ZpZGUgYSBkeW5hbWljIGludGVyYWN0aXZlIGNhbGVuZGFyIGRpc3BsYXkuCgkic2VhcmNoIiAtIERpc3BsYXkgYSBmb3JtIGZvciBhZHZhbmNlZCBzZWFyY2hpbmcgb2YgY2FsZW5kYXIgZXZlbnRzLjxici8+CiAgICAgICAgIm15ZXZlbnRzIiAtIERpc3BsYXkgYSBsaXN0IG9mIGFsbCBvZiBhIHVzZXJzIGV2ZW50cywgYW5kIGFsbG93IGFkZGluZywgZWRpdGluZyBvciBkZWxldGluZyB0aG9zZSBldmVudHM8YnIvPgogICAgICAgICJhZGRlZGl0X2V2ZW50IiAtIERpc3BsYXkgYSBmb3JtIGFsbG93aW5nIHRvIGFkZCBvciBlZGl0IGEgc2luZ2xlIGV2ZW50LjsKICAgICA8L3RkPgogIDwvdHI+CgogIDx0cj4KICAgICA8dGQ+ZGlzcGxheTwvdGQ+CiAgICAgPHRkPkFjY2VwdGFibGUgdmFsdWVzOjxicj4KCSAiZnVsbGNhbGVuZGFyIiAtIGRpc3BsYXlzIGV2ZW50cyBmb3IgdGhlIGN1cnJlbnQgbW9udGggaW4gYSBkeW5hbWljIGphdmFzY3JpcHQgZm9ybS48L3A+CgkgImV2ZW50IiAtIGRpc3BsYXkgYSBkZXRhaWwgcmVwb3J0IGZvciBhIHNwZWNpZmljIGV2ZW50LiAgVG8gdXNlIHRoaXMgZGlzcGxheSBtb2RlLCB0aGUgZXZlbnRfaWQgcGFyYW1ldGVyIG11c3QgYmUgc3BlY2lmaWVkLjxici8+CgkgImxpc3QvbW9udGgiIC0gZGlzcGxheXMgZXZlbnRzIGZvciB0aGUgY3VycmVudCBtb250aCBhcyBhIGxpc3QuICBJbmNsdWRlcyBsaW5rcyB0byBwcmV2LiBhbmQgbmV4dCBtb250aHMuPGJyLz4KCSAiZGF5bGlzdCIgLSBkaXNwbGF5cyBldmVudHMgZm9yIHRoZSBjdXJyZW50IGRheSBhcyBhIGxpc3QuICBJbmNsdWRlcyBsaW5rcyB0byBwcmV2LiBhbmQgbmV4dCB3ZWVrcy48YnIvPgoJICJ3ZWVrbGlzdCIgLSBkaXNwbGF5cyBldmVudHMgZm9yIHRoZSBjdXJyZW50IHdlZWsgYXMgYSBsaXN0LiAgSW5jbHVkZXMgbGlua3MgdG8gcHJldi4gYW5kIG5leHQgd2Vla3MuPGJyLz4KCSAieWVhcmxpc3QiIC0gZGlzcGxheXMgZXZlbnRzIGZvciB0aGUgY3VycmVudCB5ZWFyIGluIGEgbGlzdC4gIEluY2x1ZGVzIGxpbmtzIHRvIHByZXYuIGFuZCBuZXh0IHllYXJzLjxici8+CgkgInBhc3RsaXN0IiAtIGRpc3BsYXlzIGFsbCBwYXN0IGV2ZW50cy4gIE5vIHByZXYvbmV4dCBsaW5rcy48YnIvPgoJICJ1cGNvbWluZ2xpc3QiIC0gZGlzcGxheXMgYWxsIHVwY29taW5nIGV2ZW50cy4gIE5vIHByZXYvbmV4dCBsaW5rcy48YnIvPgogIAkgIERlZmF1bHRzIHRvICJmdWxsY2FsZW5kYXIiIDxlbT4ob3B0aW9uYWwpPC9lbT4KICAgICA8L3RkPgogIDwvdHI+CgogIDx0cj4KICAgICA8dGQ+Y2F0ZWdvcnk8L3RkPgogICAgIDx0ZD5Pbmx5IGRpc3BsYXkgaXRlbXMgZm9yIHRoYXQgY2F0ZWdvcnkuIExlYXZpbmcgdW5zZXQsIHdpbGwgc2hvdyBhbGwgY2F0ZWdvcmllcy4KICAgICAgICAgPHA+Tm90ZSB0aGF0IHlvdSBjYW4gbGltaXQgdG8gbXVsdGlwbGUgY2F0ZWdvcmllcyBieSBzZXBhcmF0aW5nIGVhY2ggb25lIHdpdGggYSBjb21tYS4gVGhpcyBwYXJhbWV0ZXIgY2FuIGJlCiAgICAgICAgIHVzZWQgd2l0aCB0aGUgbXlldmVudHMgYWN0aW9uIGFuZCB3aXRoIHRoZSB2YXJpb3VzIGRpc3BsYXkgb3B0aW9ucy4gIElmIG11bHRpcGxlIGNhdGVnb3J5IG5hbWVzIGFyZSBzcGVjaWZpZWQKICAgICAgICAgYSBtYXRjaCBpcyBkb25lIG9uIEFOWSBvZiB0aGUgY2F0ZWdvcmllcyBzcGVjaWZpZWQuIDxlbT4ob3B0aW9uYWwpPC9lbT48L3A+CgkgPC90ZD4KICA8L3RyPgoKICA8dHI+CiAgICAgPHRkPm1vbnRoPC90ZD4KICAgICA8dGQ+RGlzcGxheSBlbnRyaWVzIGZvciBhIHBhcnRpY3VsYXIgbW9udGguIElmIHllYXIgaXMgbm90IHNldCwgdGhlbiB0aGUgY3VycmVudCB5ZWFyIGlzCgkgYXNzdW1lZC4gVGhpcyBvcHRpb24gb25seSB3b3JrcyBpZiBkaXNwbGF5IGlzIG9uZSBvZiB0aGUgbGlzdCB2aWV3cy48ZW0+KG9wdGlvbmFsKTwvZW0+PC90ZD4KICA8L3RyPgoKICA8dHI+CiAgICAgPHRkPnllYXI8L3RkPgogICAgIDx0ZD5EaXNwbGF5IGVudHJpZXMgZm9yIGEgcGFydGljdWxhciB5ZWFyLgoJVGhpcyBvcHRpb24gb25seSB3b3JrcyBpZiBkaXNwbGF5IGlzIHNldCB0byAibGlzdCIgPGVtPihvcHRpb25hbCk8L2VtPjwvdGQ+CiAgPC90cj4KCiAgPHRyPgogICAgIDx0ZD5saW1pdDwvdGQ+Cgk8dGQ+PGVtPihvcHRpb25hbCk8L2VtPiAgU2V0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBldmVudHMgdG8gZGlzcGxheS4gVGhpcyBvcHRpb24gb25seSBhcHBsaWVzIHRvIHRoZSB2YXJpb3VzICJsaXN0IiB2aWV3cy4gIFRoZSBtYXhpbXVtIHZhbHVlIGZvciB0aGUgbGltaXQgcGFyYW1ldGVyIGlzIDUwMDAgZXZlbnRzLjwvdGQ+CiAgPC90cj4KCiAgPHRyPgogICAgIDx0ZD51c2Vfc2Vzc2lvbjwvdGQ+CiAgICAgPHRkPlVzZSBzZXNzaW9uIHZhcmlhYmxlcyB0byBzdG9yZSB0aGUgY3VycmVudCBkYXRlIG9mIGEgY2FsZW5kYXIgdmlldy4gVGhpcyBpcyB1c2VkIG9ubHkgaW4gdGhlIHNlYXJjaCBmb3JtIHRvIGFsbG93IHNhdmluZyB0aGUgc2VhcmNoIHNldHRpbmdzIHVudGlsIHRoZSBicm93c2VyIGlzIHJlc2V0LiAgRGVmYXVsdCBpcyBmYWxzZS48L3RkPgogIDwvdHI+CgogIDx0cj4KICAgICA8dGQ+cmV2ZXJzZTwvdGQ+CiAgICAgPHRkPlNldCB0byB0cnVlIHRvIGRpc3BsYXkgZXZlbnRzIGluIHJldmVyc2UgY2hyb25vbG9naWNhbCBvcmRlci4gQXBwbGljYWJsZSB0byAibGlzdCIsICJwYXN0bGlzdCIgYW5kICJ1cGNvbWluZ2xpc3QiIGRpc3BsYXlzLiBEZWZhdWx0IGlzIGZhbHNlLiBGb3IgdGhlICJwYXN0bGlzdCIgZGlzcGxheSB0aGlzIHdpbGwgcmVzdWx0IGluIG91dHB1dCBiZWluZyBkaXNwbGF5ZWQgaW4gaW5jcmVhc2luZyBjaHJvbm9sb2dpY2FsIG9yZGVyLjwvZW0+PC90ZD4KICA8L3RyPgoKICA8dHI+CiAgICAgPHRkPmRldGFpbHBhZ2U9InBhZ2VhbGlhcyI8L3RkPgogICAgIDx0ZD5QYWdlIHRvIGRpc3BsYXkgQ2FsZW5kYXIgZXZlbnQgZGV0YWlscyBpbi4gVGhpcyBjYW4gZWl0aGVyIGJlIGEgcGFnZSBhbGlhcyBvciBhbiBpZC4gVXNlZCB0byBhbGxvdyBkZXRhaWxzIHRvIGJlIGRpc3BsYXllZCBpbiBhIGRpZmZlcmVudCB0ZW1wbGF0ZSBmcm9tIHRoZSBzdW1tYXJ5LiBEZWZhdWx0IGlzIGN1cnJlbnQgcGFnZS4gPGVtPihvcHRpb25hbCk8L2VtPjwvdGQ+CiAgPC90cj4KCiAgPHRyPgogICAgIDx0ZD5ldmVudF9pZDwvdGQ+CiAgICAgPHRkPlVzZWQgd2l0aCB0aGUgZGlzcGxheT1ldmVudCBtb2RlLCB0aGlzIHBhcmFtZXRlciBhbGxvd3MgeW91IHRvIGRpc3BsYXkgaW5mb3JtYXRpb24gYWJvdXQgYSBzcGVjaWZpYyBldmVudCBvbiBkZW1hbmQuPC90ZD4KICA8L3RyPgoKICA8dHI+CiAgICAgPHRkPmZ1bGxjYWxlbmRhcnRlbXBsYXRlPC90ZD4KICAgICA8dGQ+VXNlZCB3aXRoIGRpc3BsYXk9ZnVsbGNhbGVuZGFyLCB0aGlzIHBhcmFtZXRlciBhbGxvd3MgeW91IHRvIHNwZWNpZnkgYSBub24gZGVmYXVsdCB0ZW1wbGF0ZS48L3RkPgogIDwvdHI+CgogIDx0cj4KICAgICA8dGQ+ZXZlbnR0ZW1wbGF0ZTwvdGQ+CiAgICAgPHRkPlVzZWQgd2l0aCBkaXNwbGF5PWV2ZW50LCBvciB5b3UgY2FuIGFsc28gc3BlY2lmeSB0aGlzIHBhcmFtZXRlciBvbiBhbnkgQ2FsZW5kYXIgbW9kdWxlIGNhbGwsIHRoaXMgcGFyYW1ldGVyIGFsbG93cyB5b3UgdG8gc3BlY2lmeSBhIG5vbiBkZWZhdWx0IGV2ZW50IHRlbXBsYXRlLiAgVGhpcyBwYXJhbWV0ZXIgd2lsbCBoYXZlIG5vIGVmZmVjdCBpZiBwcmV0dHkgdXJscyBhcmUgZW5hYmxlZC48L3RkPgogIDwvdHI+CgogIDx0cj4KICAgICA8dGQ+bGlzdHRlbXBsYXRlPC90ZD4KICAgICA8dGQ+VXNlZCB3aXRoIGRpc3BsYXk9bGlzdCwgdGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IGEgbm9uIGRlZmF1bHQgbGlzdCB0ZW1wbGF0ZS48L3RkPgogIDwvdHI+CgogIDx0cj4KICAgICA8dGQ+dW5pcXVlX29ubHk8L3RkPgogICAgIDx0ZD5Vc2VkIHdpdGggYWN0aW9uPXNlYXJjaCwgdGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IHRoYXQgb25seSBvbmUgZXZlbnQgd2l0aCBhIGNlcnRhaW4gbmFtZSBzaG91bGQgYmUgcmV0dXJuZWQuICBEZWZhdWx0IHZhbHVlIGlzIDAnOwogIDwvdHI+CjwvdGFibGU+Cgo8aDM+Q3VzdG9tIEZpZWxkczwvaDM+CjxwPkl0IGlzIHBvc3NpYmxlIHRvIGRlZmluZSBhIG51bWJlciBvZiBjdXN0b20gZmllbGRzIHRvIGFzc29jaWF0ZSB3aXRoIGVhY2ggZXZlbnQgdXNpbmcgdGhlIEZpZWxkcyB0YWIgaW4gdGhlIGFkbWluLiBPbmNlIG9uZSBvciBtb3JlIGZpZWxkcyBoYXMgYmVlbiBkZWZpbmVkIHRoZSB2YWx1ZXMgb2YgdGhhdCBmaWVsZCBmb3IgZWFjaCBldmVudCBjYW4gYmUgc2V0IHVzaW5nIHRoZSBldmVudHMgdGFiIGluIHRoZSBhZG1pbi4gVGhlc2UgZmllbGQgdmFsdWVzIGNhbiBiZSByZW5kZXJlZCB1c2luZyBhIHRlbXBsYXRlIHVzaW5nIHRoZSBzeW50YXggZXZlbnQuZmllbGRzLmZpZWxkbmFtZS4gSGludCAtIGluc2VydCB7ZGVidWd9IGludG8geW91ciB0ZW1wbGF0ZSBzZWUgYWxsIHRoZSBkYXRhIHBhc3NlZCB0byB0aGUgdGVtcGxhdGUuPC9wPgoKPGgzPkV4YW1wbGVzPC9oMz4KPGg0PkV4YW1wbGUgb2YgYWxsb3dpbmcgQ29tbWVudHMgb24gQ2FsZW5kYXIgZXZlbnRzPC9oND4KPHA+SW5zdGFsbCB0aGUgQ0dGZWVkYmFjayBtb2R1bGUgYW5kIHB1dCB0aGlzIGluIHlvdXIgQ2FsZW5kYXIgIkV2ZW50IFRlbXBsYXRlIjo8L3A+CjxwcmU+e0NHRmVlZEJhY2sna2V5MT0nQ0dDYWxlbmRhcicga2V5Mj0kZXZlbnQuZXZlbnRfaWR9PC9wcmU+Cgo8aDM+U3VwcG9ydDwvaDM+CjxwPlRoZSBtb2R1bGUgYXV0aG9yIGlzIGluIG5vIHdheSBvYmxpZ2F0ZWQgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0aGlzIGNvZGUgaW4gYW55IGZhc2hpb24uICBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4KPHVsPgo8bGk+QSBidWcgdHJhY2tpbmcgYW5kIGZlYXR1cmUgcmVxdWVzdCBzeXN0ZW0gaGFzIGJlZW4gY3JlYXRlZCBmb3IgdGhpcyBtb2R1bGUgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jZ2NhbGVuZGFyIj5oZXJlPC9hPi4gIFBsZWFzZSBiZSB2ZXJib3NlIGFuZCBkZXNjcmlwdGl2ZSB3aGVuIHN1Ym1pdHRpbmcgYnVnIHJlcG9ydHMgYW5kIGZlYXR1cmUgcmVxdWVzdHMsIGFuZCBmb3IgYnVnIHJlcG9ydHMgZW5zdXJlIHRoYXQgeW91IGhhdmUgcHJvdmlkZWQgc3VmZmljaWVudCBpbmZvcm1hdGlvbiB0byByZWxpYWJseSByZXByb2R1Y2UgdGhlIGlzc3VlLjwvbGk+CjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uICBXaGVuIGRlc2NyaWJpbmcgYW4gaXNzdWUgcGxlYXNlIG1ha2UgYW4gZWZmb3J0IHRvIHByb3ZpZGUgYWxsIHJlbGF2YW50IGluZm9ybWF0aW9uLCBhIHRob3JvdWdoIGRlc2NyaXB0aW9uIG9mIHlvdXIgaXNzdWUsIGFuZCBzdGVwcyB0byByZXByb2R1Y2UgaXQgb3IgeW91ciBkaXNjdXNzaW9uIG1heSBiZSBpZ25vcmVkLjwvbGk+CjxsaT5UaGUgYXV0aG9yLCBjYWxndXkxMDAwLCBjYW4gb2Z0ZW4gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9ImlyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyI+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPgo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkuICBIb3dldmVyLCBwbGVhc2UgdXNlIHRoaXMgYXMgYSBsYXN0IHJlc29ydCwgYW5kIGVuc3VyZSB0aGF0IHlvdSBoYXZlIGZvbGxvd2VkIGFsbCBhcHBsaWNhYmxlIGluc3RydWN0aW9ucyBvbiB0aGUgZm9yZ2UsIGluIHRoZSBmb3J1bXMsIGV0Yy48L2xpPgo8L3VsPgoKPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CjxwPkNvcHlyaWdodCAmY29weTsgMjAwOC0yMDE2LCBSb2JlcnQgQ2FtcGJlbGwgPGEgaHJlZj0ibWFpbHRvOmNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmciPiZsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi48L3A+CjxwPkhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAphcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwpNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4Kc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLApidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCk9yIHJlYWQgaXQgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5vbmxpbmU8L2E+PC9wPgo8aDM+SGlzdG9yeTwvaDM+CjxwPlRoaXMgbW9kdWxlIG9yaWdpbmF0ZWQgYXMgdGhlIENhbGVuZGFyIG1vZHVsZSBmb3IgQ01TTVMgYnkgUm9iIEFsbGVuIDxlbT4oYWtyYWJhdCk8L2VtPi4gIEl0IHdhcyBmb3JrZWQgdG8gQ0dDYWxlbmRhciBieSBSb2JlcnQgQ2FtcGJlbGwgPGVtPihjYWxndXkxMDAwKTwvZW0+IGluIDIwMDgsIGFuZCBzaW5jZSB0aGVuIGhhcyBoYWQgbnVtZXJvdXMgY29udHJpYnV0aW9ucyBieSBNb3J0ZW4gUG91bHNlbiA8ZW0+KG1vcnRlbkBwb3Vsc2VuLm9yZyk8L2VtPi48L3A+Cg==]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/calendar_delete.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJdSURBVDjLpZP7S1NhGMf9W7YfogSJboSEUVCY8zJ31trcps6zTI9bLGJpjp1hmkGNxVz4Q6ildtXKXzJNbJRaRmrXoeWx8tJOTWptnrNryre5YCYuI3rh+8vL+/m8PA/PkwIg5X+y5mJWrxfOUBXm91QZM6UluUmthntHqplxUml2lciF6wrmdHriI0Wx3xw2hAediLwZRWRkCPzdDswaSvGqkGCfq8VEUsEyPF1O8Qu3O7A09RbRvjuIttsRbT6HHzebsDjcB4/JgFFlNv9MnkmsEszodIIY7Oaut2OJcSF68Qx8dgv8tmqEL1gQaaARtp5A+N4NzB0lMXxon/uxbI8gIYjB9HytGYuusfiPIQcN71kjgnW6VeFOkgh3XcHLvAwMSDPohOADdYQJdF1FtLMZPmslvhZJk2ahkgRvq4HHUoWHRDqTEDDl2mDkfheiDgt8pw340/EocuClCuFvboQzb0cwIZgki4KhzlaE6w0InipbVzBfqoK/qRH94i0rgokSFeO11iBkp8EdV8cfJo0yD75aE2ZNRvSJ0lZKcBXLaUYmQrCzDT6tDN5SyRqYlWeDLZAg0H4JQ+Jt6M3atNLE10VSwQsN4Z6r0CBwqzXesHmV+BeoyAUri8EyMfi2FowXS5dhd7doo2DVII0V5BAjigP89GEVAtda8b2ehodU4rNaAW+dGfzlFkyo89GTlcrHYCLpKD+V7yeeHNzLjkp24Uu1Ed6G8/F8qjqGRzlbl2H2dzjpMg1KdwsHxOlmJ7GTeZC/nesXbeZ6c9OYnuxUc3fmBuFft/Ff8xMd0s65SXIb/gAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/images/calendar_edit.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKbSURBVDjLpZNLbIxRGIaf/9Lfpa1rZ0hNtYpEVRBiNkUiEZFoKjSxQmLBglizIQiJILEgWHQlgkpLGg1BU6E3imorLkElLmOmM1XV6mXm/8/5LH5GI7EQJ/lyztm85/ne872GiPA/ywa40NC3X4TtSnRIa43S4GmNUhqlBU/pUaVQnqC0fnRk89ywDaBFdpeHs3P+5eUDlW8XpgmU1jkAmdU7QQSUB1qB6/rnVBLcFCRdcF0G99bjumrMKIFfPgjkBkB7fon3UyQJbhK8FLyIAuB66rcHSumfAgZ8ToBon0Rrn0T5+6AzyKd5eVi3j7HDuUfnmchWRITTN6PyfdiViw3dIiJS2RgTEZErzf69qiUmg59rJFq/R/o6a0UGIvK1s0paTqyN2QCu0mgRbAuqW+JYlsnVB3FsC2pa4yQSuxjKLmbK3BJ6u17iGCmyJ0wna+rMiekWBLAtgw3hADWtCdaHg9Q+jrO64BVDmUVMKlxDMnoZZ7zB+/ZX9A+ZGMmeRWkC0WCbUPskQWvPcR7eEEI6xvDYPCbNKWMkcg7T8cjIysfxPnC+dwun95a/Nn1HNSJChgWlSwMAFNtDbJw+g4lzyhiJnMXMcEn1F9B9vwNZto/vTggAE/ypA7BMg7qOHnL6PrBYxhEsXkcqVoHlCMn+fLob2mDVSQIFC9M/ZwN4nud7YMKMgTpyJ8/GkyDRZ6eYHHQY6c2jp/Ul5qqTBHLz0VqwTH4TuMpvYcHMLDoaK5i/fAdjPjbyuqaJ9lu9PL/zFKPkEMFQoU9qGWgtetQgSdPBS28Wp5TOzO1KkHpey6xFK/iW+EJX2xvuhg7z5do34GE6C30DI9cBjD/jvGnllOElhdPscNEsJCPZPBxPbCs92vnub6H6AWmNdrgLt0FkAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/images/false.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhFAAUANUAAP/U1P7S0v7MzP7Ly/7Dw/7CwvzBwf+9vf68vP25uf63t/23t/y1tfu0tPyzs/+ysvyysvutrf+srP2pqf+oqP+np/2mpv2jo/Sfn/+bm/SdnfyZmfScnPSamvSbm/Obm/Kbm/OZmfaZmfKamvOamvGZmfCZmfKZmeyZmeuZmeqZmeWZmeaZmeGZmeCZmeKZmd+Zmd2ZmdyZmduZmdmZmdiZmdeZmdqZmdaZmdWZmdSZmdOZmc+Zmc2ZmdGZmf///yH5BAEHAD8ALAAAAAAUABQAAAaXwJ9wSCwaj8jkDdlKyg4qIwuAOroei8SM6Ao4KqyiTAIBgRY04UyAAUUoTWJrVCqNFrAVu85xHVt1dgwDGnwxSS+BJR98aUk/MSeKJX6PPzIGig07ljcIHpMTOEk2BB11JCeqJxY8VgUhsSE5NKsnFzJFOgqys0IyqxsZo0SJda5DNSYiKT1HMiY+RjoqzkjSR9iW29xHQQA7]]></data>
	</file>
	<file>
	  <filename>/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhQAAvAPcAAHIcFnshHm8oJXAxLn4wL24zMHg1Mk1PT1ZTU19QUV1eWWtFRGFOTXpIR3dOTGlXVmBZV2dUUntaWV5gXmZlZG5ua2tmZH1sam9wa3FybXR1cXd4cnh5dJwZD4QbFIoYEJwbE5UeGLQOAK8VB6QWDKsXC64bD7MUB7wUBLQWCb0XCbMZDKIdE6gcEoUiHZkgF5YhGZwoH6ogFqYiGasoH7coHIktK4kpJJonIZwqI5YuKZYqJYcwLJoyL4szMI07N544M5k7N6EoILktI6oyLKU0Lqk6NMMUA8wVBMUYB88YBsoXCMUaCs0dDdQWBNoXBN0YBNUaCeQXA+MZBesaBOUbB/EcBMciFeQjDu0iCuwiBPMiBPMjCfQsDuUrGPMtE/MxFvI0G8YrIcs5Lt0+MOo/LeI8LPQ+JfI6JYRBPpZBP55AO6NDP9lFOPRELPZILe9JNulMPvBGMPRKNPROOfdRN/RTPYpKRpVKRZ5IRJZTUphVU5pcXJFcWKpFQatTT6VaWIhhXqFjX4djYIZrZpVsbIJ8eId4dpd6eKx+e+hURvNUQvVZRPVdSvZhTeZnWvVlU/ZsW/RnWfdxXu51aepyZvZ0Y/h5Zfd8a/h+bvh1Ye98cvd/cHmAeIOEf+uCefiEdPiHePiLfPSFeIaFg4mKho2OipiIiI+QjJKTjpSUkpeYk5qblpubm6KKiJ+gm6GinaSko6eoo6mqpqysq6+wq7Gyrq+vsLS0s7e4s7q6try8u+mPh/WNgvmOgPmSg/aUifmWifeZjfmajeyel/abk/idkfmilPejnPmlmfmpnvmsovauqfmxp/Syrfq0qui1s/O2tPq+tvO7uL/Au8HCvvXCvvvAuMTEw8bIw8nKxszNys/Qy9LTzs7R0tTV0tfY09rb1t3e2trX2erEwuzOzfvLxPfKxfrSzOjb2vrb2fjX0t/g2+Lj3vzh3eXm4efo4urr5e3u6eri4fzl4vrp5/vu6+/w6/Lz7fzx7fX28f318vf48/r69v3++gAAACH5BAEAAP8ALAAAAABAAC8AAAj+AP/9MySwgsAJnQQqXMiwocOHECOSM8IHEBE8ifw0cPVvwaF/DwgiIPXvQMSTKCUO8ZFDRIwgI0DokQFijxEYfPzcKPTHAKI7DlwtuIAowSkEFv4hSMlUYbkxPFwcgSHgyIoBI1QQKKHCx4oTP0yYyFMiRx4SeYDkEHRjDx4ehQoQWiDhAQMLEAxRINlUYLo2Y2o8EaMDSRMbKJQESIEEQIolAE6oCHCkhdQdLE7YOKFjxoogJYLIKAJkBp4ce3b08REozaA7hAZd+PgwnSIquKtgKVPGjBcqUaRISfJEigolTko8WaK8xOMPRzqUOOJBhYsRLDqsCLFiR4odK3r+mAAiIwiNPEUA1X6khcuWLW/QIRMlqUsXK1a45MfP3wqVLLhRUUUVwmFxBRRJIMEEE06cgEQJSJCQhIQgqBBCCiCYAMND41SixXvwuQOKG2BM4ksXjDQyByeRfDFHI464IUcydHxxxhdccAFJL5ygkYUVi0jin3BSQDEFGVU4AYUTTjCowkPdfAJiiMqE8oYd6NgxjCPSIGNOJJmYs4wyjaADSTHDzMHFGc7M8cUboUQSSSh1WHKGI46EYYcwctzooxZUTPGQN7xM+YY7k9jXRTPXBBPfL5PMAcoykDxDhzRnYNIMJGs+E8YWdCSzjCa+IPPMJcskE4ooxjhyzCX+ony6hRaDErOFFe+d8cwxvmjChSPmMLLFJcXQeUkwjihzRjNyLgNKF18EA0ojvjyzDCeiABNKI9KKMswxvzwT5xY5boGFQ9hAE8cccrwhBx102DFHGGjIEQYYYLgxbxhn5GvjGWfUmGMYjDASMB1unEHwGXO84UYjjMzhSB1uvGeFFlk4hMs89dRjDz0g06POyOiUfM7J50wzTTTROOMMM8yMiQwyxRQDDDC99PLJJ5tsQgklllQSiSSQONLI0RAvYociDtESjz9QRy311FRXbTXV/fQDtdb79LNPPmDb41As70wtTjXvsAOP1PHswk07a0ftjTjz6BP1PNqIMw7+P1DHs808fPuDzzhx+yOPOIWPLY7WcpOiSiq2MO5PO6WUkgotkm8TCyrdRD0OKa208o7W8NACyzdQy5MLNoy3A0sudvsztjeS+6OPPPLcg48/WfOODz66S94P8IFrrc/vjPejz/K889571vjo83xDrXhjd+1SZ63981rX3j30vUONz+iM47O49vG0sz3120iv/dbdO7/9+/O/f48s98QvTyy78y3PK/Ho3TZqkTXpNUQV1cDH/JpXvwY6cHjUCKD28KGN3fWDH/wQh/uGd4/lKe+AuMjf9uSXNX6U8IElxKDyGkjCCyqwgLhbnj4OeAt51G9rKuSH9ExYP33AI3/+MuxHOL7BQwxSYxva40cuWAGOrN3DFrWQhwwZgopYzON7F4QHNmyIQRVWoxYbLOEsqqG85fFjFp4IYj90QcAL9oMasmji8rqxDSkujyGqINsCwZEBbVwQg9KrxQbg4UYeVgMeOpRhO7hhRh0ir4s8lN7yfnc8fOCxFXtLYj/kcYu94YMf0dPHPdjRyAImcpJmlCEG8SGPd3ySH/foRjYC6ENasEIev7OkQlSBSQUWUR+Q/GQQVSlDeMQjHLnERzuqMYt2yFAcqyBFOzB4v1nAY3n3yEUt4JHLhfDSG/KAJCjj8Q5kClMf4fhiNU6pD1vIYgOk/CQ7VvGKdS5PddT+eMcq4TbJZALvHgtphSq28Y5G8uMbqshGKRBJyW6YYhaskOHytmGLQ+ZylD8MpQz9CY92RA8f8NCFLnB5D3koRKDY2FsiM1gKXKTClbmMBzfC4Ux/9jOX8ohHRqPXDl3YIh6/gwcsPNGNoMKCFeL450lbsYtxfBSY+IgH7vx5Tn/eAxzgQOY9dNcNWMACHLlsRypW8Y1/6oIaHt3qO4yJO5MKJHS48IbuNHq83AHvd/eoRi5eUVS83s8Uq4jHVkfJCllwQ3f3iAc42AHUwQ62rSXNaTzi8dZWxFWKydTFLkyBP8dSIwMVkMU/t0qNXOjih1uVB2odq1rG4g4euZj+RThyKtnJTrayuNAGN+eKD1pUrhSOvQc3qFGNcLAWl8CTKu7aAY5DtnUcpthANbYaj1qsohq0NSY8trvdf8SiFbfAhkeRi49wZIOmiG2rXxMrWHhkQxe5sK1iPZEBW7AXHrKABTck2w64cfe/222Hd1tBC2ywg5XqTWZbc1oNZoJDvkLFAAUebEx2yEIX3ZisduWrU+6+Y60d7W9/BzzGbyxYtdXQRi1mq1x51MITnuCGbY3Jxl2o7b8aBnCHPdwOdoSDjtroBjgU8t1WVKOOUpUqPFahAQXAgrZS1YUs0LbjD68Vbu14B5YBvN13iGOI28DGLnJxC1rcAhe72Mb+OE6qCgRmw5g61SkrYFGLbNS2w1W2spZFzGd26O0b3MjGLnBxi1nIghZmxoWid7GLbDBEoKjYRTX8C+DX7rjL8Pgwn73c4x9zoxqlpUUsRj0LRN/CtIzexUlU8Y/w6oLSXI51n4cY6F1A0dCwkIUsZnHmRTO6LwoJb1PjMQ89g5i7Iv5xmAct6lE7+8yaTTWwH5Lbangjy5reszi+IUtq6AIXtJhFqW9BbkWLVKSqnnZKtpGNa+vNG8smc6FlUYtalJvRDRazutXtDW9oQ9CDJnS5cWFaXVQDGw3et8IV4o1xhBkbEEc4oyO+8IozRBzv7vc2tmHxjj+Esh4POUMCAgIAOw==]]></data>
	</file>
	<file>
	  <filename>/images/true.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhFgASAOYAAPb68vT58fD56PD17+L5y935wdz5wdz5wNz4wNjn09nn09Phz7HOpofTR4bSR4bSRoTRRoXRRnnFP3jEPnjFPnfDPXfDPo+0hnS8Q3K6QIaufYaufHC6Pm+5Pm+5PHW2TnC5PnC5P3S1S3W1TXO1THO1S3S1TXS1TGy4OWy3OnO0THS0TW23On+pdXGuUX2ocnCuT3GtUHCtT2+tTm2sSnajam2oUmSsOW2nUnOhZ3ShaGaoQmqiVm+eY2agUWmdWWqeWWqbXmmbXWSXV1ucPWOWVleOSU+MPFCJQiqVKiaTJiWTJRaLFheLFxOKExKJEg+IDwuFCwqFCgiECAKBAgCAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHAFYALAAAAAAWABIAAAfDgFaCg4SFggpVAYaLhQpRO1QAjIwJUTQlGVUCk4UJTDQiGBINVZyDnjOhFKQFgwsDi6gnHBQOVa2CC1JPsISeMicgtVUGgwNSLRpNvVYJTTMjIBO2xYIDVT0XGzVOC81LMCYhEw/EhFVG2i85Q1AMSjAfHeRVB4ZTRS86QkA+STEkPFgoZ29RFSRBfvCwEUMFCgsR6nGqcoQHDhcqUkCsgsCUlSpEXKxIUSFiR48fb7CoAIEjykFVWLp8CXMmzUEEUAYCADs=]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyBTaW1wbGUgTGFuZ3VhZ2UgZmlsZSBmb3IgdGhlIENhbGVuZGFyIG1vZHVsZS4KIyBDb3B5cmlnaHQgKGMpIDIwMDQgYnkgUm9iIEFsbGVuIDxyb2JAYWtyYWJhdC5jb20+CiMgQ29weXJpZ2h0IChjKSAyMDA1IGJ5IFJvYmVydCBDYW1wYmVsbCA8Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZz4KJGxhbmdbJ2Ryb3Bkb3duZnJvbXVkdCddID0gJ0Ryb3Bkb3duIGZyb20gVURUJzsKJGxhbmdbJ2ltYWdlYXR0YWNobWVudCddID0gJ0ltYWdlIEF0dGFjaG1lbnQnOwokbGFuZ1snZXJyX2V4cG9ydGVkX25vbWF0Y2hlcyddID0gJ1NvcnJ5LCB3ZSBkaWQgbm90IGZpbmQgYW55ICBldmVudHMgbWFjaGluZyB5b3VyIGNyaXRlcmlhIHRvIGV4cG9ydCc7CiRsYW5nWydleHBvcnRfZGVsaW1pdGVyJ10gPSAnRmllbGQgZGVsaW1pdGVyJzsKJGxhbmdbJ2luZm9fZXhwb3J0X2V2ZW50cyddID0gJ1RoaXMgYWN0aW9uIHdpbGwgZ2VuZXJhdGUgYW4gQVNDSUkgQ1NWIGZpbGUgdGhhdCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZXZlbnRzJzsKJGxhbmdbJ2V4cG9ydF9jYXRlZ29yeSddID0gJ0V4cG9ydCBldmVudHMgdGhhdCBhcmUgaW4gdGhpcyBjYXRlZ29yeSc7CiRsYW5nWydleHBvcnRfZGF0ZXNlbCddID0gJ0V4cG9ydCBldmVudHMgdGhhdCB3ZXJlJzsKJGxhbmdbJ2V4cG9ydF9kYXRlc2VsX2NyZWF0ZWQnXSA9ICdDcmVhdGVkIG9uIG9yIGFmdGVyJzsKJGxhbmdbJ2V4cG9ydF9kYXRlc2VsX21vZGlmaWVkJ10gPSAnTW9kaWZpZWQgb24gb3IgYWZ0ZXInOwokbGFuZ1snZXhwb3J0X2RhdGVzZWxfc3RhcnQnXSA9ICdTdGFydCBvbiBvciBhZnRlcic7CiRsYW5nWydleHBvcnRfZnJvbV9kYXRlJ10gPSAnRGF0ZSc7CiRsYW5nWydjYWxfZXhwb3J0X2V2ZW50cyddID0gJ0V4cG9ydCBldmVudHMnOwokbGFuZ1snd2Fybl9pbXBvcnQnXSA9ICc8c3Ryb25nPldhcm5pbmc6PC9zdHJvbmc+IFRoaXMgaXMgYSBzaW1wbGUgaW1wb3J0IGZ1bmN0aW9uYWxpdHkuICBUaGVyZSBpcyBubyBjaGVja2luZyBmb3IgZHVwbGljYXRlIGV2ZW50cywga25vd2xlZGdlIG9mIHBhcmVudCBhbmQgY2hpbGQgcmVsYXRpb25zaGlwcywgIG9yIHVwZGF0aW5nIG9mIGV4aXN0aW5nIGV2ZW50cy4gIEl0IGlzIGVudGlyZWx5IHBvc3NpYmxlIHRoYXQgeW91IGNvdWxkIGdlbmVyYXRlIGR1cGxpY2F0ZSBldmVudHMsIGNvbGxpc2lvbnMsIGFuZCBkaXNjb25uZWN0ZWQgcmVjdXJyaW5nIGV2ZW50cy4gIFVzZSB3aXRoIGNhdXRpb24uJzsKJGxhbmdbJ2hkcl9wYXN0bGlzdCddID0gJ1Bhc3QgRXZlbnRzJzsKJGxhbmdbJ2ZpbHRlcl9hbGwnXSA9ICdBbGwnOwokbGFuZ1snZmlsdGVyX2RyYWZ0J10gPSAnRHJhZnQnOwokbGFuZ1snZmlsdGVyX3B1Ymxpc2hlZCddID0gJ1B1Ymxpc2hlZCc7CiRsYW5nWydkaXNwbGF5J10gPSAnRGlzcGxheSc7CiRsYW5nWydkZmx0X3N0YXR1c19uZXdldmVudHMnXSA9ICdEZWZhdWx0IHN0YXR1cyBmb3IgbmV3IGV2ZW50cyc7CiRsYW5nWydkZXNjMiddID0gJ0Rlc2NyaXB0aW9uJzsKJGxhbmdbJ3N0YXR1c19kcmFmdCddID0gJ1RoaXMgZXZlbnQgaXMgbm90IHlldCBwdWJsaXNoZWQgZm9yIGZyb250ZW5kIGRpc3BsYXkuJzsKJGxhbmdbJ3N0YXR1cyddID0gJ1N0YXR1cyc7CiRsYW5nWydwdWJsaXNoZWQnXSA9ICdQdWJsaXNoZWQnOwokbGFuZ1snZHJhZnQnXSA9ICdEcmFmdCc7CiRsYW5nWydjb25maXJtX2FkZF9ldmVudF9oZXJlJ10gPSAnQ3JlYXRlIG5ldyBldmVudCBvbiB0aGlzIGRhdGUnOwokbGFuZ1snZGVsZXRlZF9uJ10gPSAnRGVsZXRlZCAlZCBldmVudHMnOwokbGFuZ1snbXNnX25vZXhwaXJlZGV2ZW50cyddID0gJ1RoZXJlIGFyZSBubyBleHBpcmVkIGV2ZW50cyB0byByZW1vdmUnOwokbGFuZ1snY2FsX2RlbGV0ZV9leHBpcmVkJ10gPSAnRGVsZXRlIEV4cGlyZWQgRXZlbnRzJzsKJGxhbmdbJ3Byb21wdF9mZWVkaXRfbWFzdGVyZ3JvdXAnXSA9ICdGRVUgR3JvdXAgdGhhdCBpcyBhbGxvd2VkIHRvIGVkaXQgYW55IHVzZXJzIGV2ZW50cyc7CiRsYW5nWydjYWxfcmVjdXJfc3RyJ10gPSAnVGhpcyBldmVudCByZWN1cnMgJXMgdW50aWwgJXMgdG8gYSBtYXhpbXVtIG9mICVkIHRpbWVzJzsKJGxhbmdbJ2NhbF9yZWN1cl9zdHIyJ10gPSAnVGhpcyBldmVudCByZWN1cnMgJXMgdW50aWwgJXMnOwokbGFuZ1snaW5mb19hYm91dF9wYXJlbnRfZXZlbnQnXSA9ICdUaGlzIGV2ZW50IHJlY3Vycyc7CiRsYW5nWydpbmZvX2Fib3V0X2NoaWxkX2V2ZW50J10gPSAnVGhpcyBldmVudCBpcyBhY3R1YWxseSBhIHJlY3VycmFuY2Ugb2YgYW5vdGhlciBldmVudCBpbiBvdXIgZGF0YWJhc2UuICBZb3UgY2FuIHZpZXcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBhcmVudCBldmVudCBieSBjbGlja2luZyBvbiB0aGUgbGluayBiZWxvdy4nOzsKJGxhbmdbJ3ZpZXdfcGFyZW50X2V2ZW50J10gPSAnVmlldyBwYXJlbnQgZXZlbnQnOwokbGFuZ1snaGRyX2RheWxpc3QnXSA9ICdFdmVudHMgZm9yIHRoZSBkYXkgb2YnOwokbGFuZ1snaGRyX3llYXJsaXN0J10gPSAnRXZlbnRzIGZvciB0aGUgWWVhcic7CiRsYW5nWydoZHJfd2Vla2xpc3QnXSA9ICdFdmVudHMgZm9yIFdlZWsgJWQgb2YgJWQnOwokbGFuZ1snaGRyX3VwY29taW5nbGlzdCddID0gJ1VwY29taW5nIEV2ZW50cyc7CiRsYW5nWydoZHJfbW9udGhsaXN0J10gPSAnRXZlbnRzIGZvciB0aGUgTW9udGggb2YgJzsKJGxhbmdbJ2NhbF90b2RheSddID0gJ1RvZGF5JzsKJGxhbmdbJ21zZ19zZXR0aW5nc19jaGFuZ2VkJ10gPSAnU2V0dGluZ3MgY2hhbmdlZCc7CiRsYW5nWyd0aXRsZV9hZG1pbm5hdl9zZXR0aW5ncyddID0gJ0NHQ2FsZW5kYXIgU2V0dGluZ3MnOwokbGFuZ1snZGVzY19hZG1pbm5hdl9zZXR0aW5ncyddID0gJ01hbmFnZSBTZXR0aW5ncyBmb3IgdGhlIENHQ2FsZW5kYXIgTW9kdWxlJzsKJGxhbmdbJ3RwbHR5cGVfc2VhcmNoZm9ybSddID0gJ1NlYXJjaCBGb3JtJzsKJGxhbmdbJ3RwbHR5cGVfc2VhcmNocmVzdWx0J10gPSAnU2VhcmNoIFJlc3VsdCBWaWV3JzsKJGxhbmdbJ3RwbHR5cGVfZnVsbGNhbGVuZGFyJ10gPSAnZnVsbENhbGVuZGFyIFZpZXcnOwokbGFuZ1sndHBsdHlwZV9kZWxldGVldmVudCddID0gJ0RlbGV0ZSBFdmVudCBGb3JtJzsKJGxhbmdbJ3RwbHR5cGVfZWRpdGV2ZW50J10gPSAnRWRpdCBFdmVudCBGb3JtJzsKJGxhbmdbJ3RwbHR5cGVfZXZlbnQnXSA9ICdFdmVudCBWaWV3JzsKJGxhbmdbJ3RwbHR5cGVfZXZlbnRsaXN0J10gPSAnRXZlbnQgTGlzdCBWaWV3JzsKJGxhbmdbJ3RwbHR5cGVfbXlldmVudHMnXSA9ICdNeUV2ZW50cyBMaXN0IFZpZXcnOwokbGFuZ1sndHBsdHlwZV9DR0NhbGVuZGFyJ10gPSAnQ0dDYWxlbmRhcic7CiRsYW5nWydkZWxldGVldmVudF93YXJuX2NoaWxkcmVuJ10gPSAnPHN0cm9uZz5XYXJuaW5nITwvc3Ryb25nPiAgVGhpcyBldmVudCBhcHBlYXJzIHRvIHJlY3VyIG9uIG11bHRpcGxlIGRhdGVzLiAgRGVsZXRpbmcgdGhpcyBldmVudCB3aWxsIGRlbGV0ZSBpdCwgYW5kIGFsbCBvZiB0aGUgb3RoZXIgcmVjdXJyaW5nIGRhdGVzLiAgUHJvY2VlZCB3aXRoIGNhdXRpb24uJzsKJGxhbmdbJ2RlbGV0ZWV2ZW50X3dhcm5fY2hpbGQnXSA9ICc8c3Ryb25nPldhcm5pbmchPC9zdHJvbmc+ICBUaGlzIGV2ZW50IGFwcGVhcnMgdG8gYmUgdGhlIGNoaWxkIG9mIGEgcmVjdXJyaW5nIGV2ZW50LiAgRGVsZXRpbmcgdGhpcyBvYmplY3Qgd2lsbCBvbmx5IGRlbGV0ZSB0aGlzIHJlY3VycmFuY2UsIGFuZCBub3QgYWxsIHJlY3VycmFuY2VzIG9mIHRoaXMgZXZlbnQuICBQcm9jZWVkIHdpdGggY2F1dGlvbi4nOwokbGFuZ1sncHJvbXB0X2Rkb3B0cyddID0gJ0Ryb3Bkb3duIE9wdGlvbnMnOwokbGFuZ1snaW5mb19kZG9wdHMnXSA9ICdTb21lIGluZm9ybWF0aW9uIGlzIHJlcXVpcmVkIGZvciBhIGRyb3Bkb3duIGZpZWxkLiAgRW50ZXIgb25lIG9wdGlvbiBwZXIgbGluZS4gIFZhbHVlcyBjYW4gYmUgc2VwYXJhdGVkIGZyb20gbGFiZWxzIHdpdGggdGhlID0gY2hhcmFjdGVyLiAgaS5lOiAgZj1GZW1hbGUnOwokbGFuZ1snb2snXSA9ICdPayc7CiRsYW5nWyd0aXRsZV9lZGl0X2Rkb3B0cyddID0gJ0VkaXQgZHJvcGRvd24gb3B0aW9ucyc7CiRsYW5nWydkcm9wZG93biddID0gJ0Ryb3Bkb3duJzsKJGxhbmdbJ2NoZWNrYm94J10gPSAnQ2hlY2tib3gnOwokbGFuZ1snaG9saWRheV9jb2xvcnMnXSA9ICdIb2xpZGF5IGhpbGl0ZSBjb2xvcnMnOwokbGFuZ1sncHJvbXB0X2ljYWxfaG9saWRheXMnXSA9ICdJQ0FMIGZlZWQgZm9yIGhvbGlkYXlzJzsKJGxhbmdbJ2luZm9faWNhbF9ob2xpZGF5cyddID0gJ1RoaXMgaXMgdXNlZCBvbiB0aGUgZnVsbGNhbGVuZGFyIHZpZXdzIHRvIGhpbGl0ZSBwdWJsaWMgaG9saWRheXMuIFRoZXJlIGlzIG5vIGZ1cnRoZXIgaW50ZXJhY3Rpb24gd2l0aCB0aGUgZXZlbnRzIGluIHRoaXMgaWNhbCBmZWVkLic7CiRsYW5nWydhbGxkYXknXSA9ICdBbGwgRGF5JzsKJGxhbmdbJ2RheXZpZXcnXSA9ICdEYXkgVmlldyc7CiRsYW5nWydlZGl0J10gPSAnRWRpdCc7CiRsYW5nWydlcnJvcl9mZXRjaGluZ19ldmVudHMnXSA9ICdPb3BzLi4uIHNvbWV0aGluZyBoYXBwZW5lZCB3aGVuIHdlIHdlcmUgdGFsa2luZyB0byB0aGUgc2VydmVyLCBwbGVhc2UgdHJ5IGFnYWluJzsKJGxhbmdbJ25vcmVzdWx0cyddID0gJ1NvcnJ5LCBubyBldmVudHMgbWF0Y2hpbmcgeW91ciBjcml0ZXJpYSB3ZXJlIGZvdW5kJzsKJGxhbmdbJ2hlbHBfZmluZF93aGVuJ10gPSAnUGFzdCBhbmQgZnV0dXJlIGV2ZW50cyBhcmUgYWx3YXlzIHJlbGF0aXZlIHRvIHRoZSBhY3R1YWwgZGF0ZSc7CiRsYW5nWydyZW9yZGVyJ10gPSAnUmVvcmRlcic7CiRsYW5nWydkZmx0X2NvbG9ycyddID0gJ0RlZmF1bHQgQ29sb3JzJzsKJGxhbmdbJ2VkaXRfY2F0ZWdvcnknXSA9ICdFZGl0IGNhdGVnb3J5JzsKJGxhbmdbJ2ZnY29sb3InXSA9ICdGb3JlZ3JvdW5kIENvbG9yJzsKJGxhbmdbJ2JnY29sb3InXSA9ICdCYWNrZ3JvdW5kIENvbG9yJzsKJGxhbmdbJ2hlbHBfZmluZF9zaG93Y2hpbGRyZW4nXSA9ICdJbmRpY2F0ZXMgaWYgY2hpbGQgZXZlbnRzIHNob3VsZCBiZSBpbmNsdWRlZCBpbiBzZWFyY2ggcmVzdWx0cz8nOwokbGFuZ1snaGVscF9maW5kX2V2ZW50X2tleXdvcmQnXSA9ICdFbnRlciBvbmUgb3IgbW9yZSBrZXl3b3JkcyB0byBzZWFyY2ggYnkuICBUaGUgZXZlbnQgdGl0bGUsIHN1bW1hcnksIGFuZCBkZXRhaWwgZmllbGRzIHdpbGwgYmUgc2VhcmNoZWQgZm9yIHRoZSBtYXRjaGluZyB3b3Jkcy4nOwokbGFuZ1snaW5mb19maW5kX3Jlc3VsdHMnXSA9ICdUaGUgZmlyc3QgMTAgbWF0Y2hlcyBvZiB5b3VyIHF1ZXJ5IGFyZSBkaXNwbGF5ZWQgYmVsb3cuPGJyLz5DbGlja2luZyBvbiB0aGUgZXZlbnQgdGl0bGUgd2lsbCBhbGxvdyB5b3UgdG8gZWRpdCB0aGUgZXZlbnQuPGJyLz5DbGljayBvbiB0aGUgdmlldyBpY29uIHRvIG5hdmlnYXRlIHRoZSBjYWxlbmRhciB0byB0aGUgYXBwcm94aW1hdGUgZGF0ZSBvZiB0aGUgZXZlbnQgPGVtPihkZXBlbmRpbmcgb24gdGhlIHZpZXcpPC9lbT4nOwokbGFuZ1snZ290b19kYXRlJ10gPSAnR28gdG8gdGhpcyBkYXRlJzsKJGxhbmdbJ2luZm9fZmluZF9ldmVudHMnXSA9ICdTZWFyY2ggZm9yIG1hdGNoaW5nIGV2ZW50cy4gIFVwIHRvIDEwIG1hdGNoaW5nIGV2ZW50cyB3aWxsIGJlIHJldHVybmVkLic7CiRsYW5nWydyZXN1bHRzJ10gPSAnUmVzdWx0cyc7CiRsYW5nWydrZXl3b3JkcyddID0gJ0tleXdvcmRzJzsKJGxhbmdbJ2ZpbmRfc2hvd2NoaWxkcmVuJ10gPSAnU2hvdyBDaGlsZHJlbic7CiRsYW5nWydhbnknXSA9ICdBbnknOwokbGFuZ1sncGFzdCddID0gJ1Bhc3QnOwokbGFuZ1snZnV0dXJlJ10gPSAnRnV0dXJlJzsKJGxhbmdbJ2ZpbmRfd2hlbiddID0gJ1doZW4nOwokbGFuZ1snZmluZF9wYXJlbnRzb25seSddID0gJ1BhcmVudHMgT25seSc7CiRsYW5nWydmaW5kJ10gPSAnRmluZC4uLic7CiRsYW5nWydlZGl0cGFyZW50J10gPSAnRWRpdCBwYXJlbnQnOwokbGFuZ1snaGVscF9ldmVudHN0YWInXSA9ICc8cD5UaGUgZXZlbnRzIHRhYiBwcm92aWRlcyBhIHNpbXBsZSB3YXkgdG8gYnJvd3NlIGV2ZW50cyBieSBkYXRlLiAgVGhlIHNlbGVjdGVkIGRhdGUgaXMgc2F2ZWQgPGVtPihpbiBhIGNvb2tpZSk8L2VtPiBmb3IgdHdvIGRheXMuICBUaGlzIHZpZXcgYWxzbyBwcm92aWRlcyBzaW1wbGUgZWRpdGluZyBhbmQgZGVsZXRpb24gZnVuY3Rpb25hbGl0eS48L3A+PGJyLz48cD5JbiB0aGUgbW9udGggdmlldyBkcmFnZ2luZyBhbiBldmVudCB3aWxsIGNoYW5nZSB0aGUgc3RhcnQgZGF5IDxlbT4oYnV0IG5vdCB0aGUgdGltZSkuPC9lbT4uICBSZXNpemluZyB0aGUgZXZlbnQgd2lsbCBjaGFuZ2UgdGhlIGV2ZW50cyBlbmQgZGF0ZS48L3A+PGJyLz48cD5JbiB0aGUgd2VlaywgYW5kIGRheSB2aWV3cyB0aGUgc3RhcnQgZGF0ZS90aW1lIG9mIHRoZSBldmVudCBjYW4gYmUgY2hhbmdlZCBieSBkcmFnZ2luZyB0aGUgZXZlbnQuICBUaGUgZW5kIGRhdGUvdGltZSBvZiB0aGUgZXZlbnQgY2FuIGJlIGNoYW5nZWQgYnkgcmVzaXppbmcgaXQuICBBZGRpdGlvbmFsbHksIHRoZXNlIHZpZXdzIHN1cHBvcnQgdGhlIGFiaWxpdHkgdG8gcXVpY2tseSBjaGFuZ2UgYW4gZXZlbnQgdG8gYW4gYWxsIGRheSBldmVudCBieSBkcmFnZ2luZyBpdCBpbnRvIHRoZSAmcXVvdDtBbGwgRGF5JnF1b3Q7IGFyZWEgYXQgdGhlIHRvcC48L3A+PGJyLz48cD5ObyBjaGVja3MgZm9yIGNvbmZsaWN0cyBhcmUgcGVyZm9ybWVkIHdoZW4gZHJhZ2dpbmcgZXZlbnRzLjwvcD4nOwokbGFuZ1sncHJvbXB0X3JlbW92ZWZyb21wYXJlbnQnXSA9ICdSZW1vdmUgdGhpcyBldmVudCBmcm9tIHRoZSBwYXJlbnQgZXZlbnQnOwokbGFuZ1snaW5mb19yZW1vdmVmcm9tcGFyZW50J10gPSAnSWYgc2VsZWN0ZWQsIHRoaXMgcGFydGljdWxhciBldmVudCB3aWxsIG5vdCBiZSBlZmZlY3RlZCBieSBhbnkgY2hhbmdlcyBpbiB0aGUgcGFyZW50IGV2ZW50Lic7CiRsYW5nWydpbmZvX2VkaXRfcGFyZW50ZXZlbnQnXSA9ICc8c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFRoaXMgZXZlbnQgcmVjdXJzIG9uIG9uZSBvciBtb3JlIGRpZmZlcmVudCBkYXRlcy4gIENsaWNrIHRoZSBvcHRpb24gYmVsb3cgdXBkYXRlIGNoaWxkIGV2ZW50cyB3aXRoIHRoZSBkZXRhaWxzIG9mIHRoaXMgZXZlbnQuJzsKJGxhbmdbJ2luZm9fZWRpdF9jaGlsZGV2ZW50J10gPSAnPHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBUaGlzIGV2ZW50IGlzIHRoZSBjaGlsZCBvZiBhbm90aGVyIGV2ZW50LiAgQ2hhbmdlcyBtYWRlIGhlcmUgd2lsbCBlZmZlY3Qgb25seSB0aGlzIHBhcnRpY3VsYXIgY2hpbGQuICBUbyBlZmZlY3QgYWxsIHJlY3VycmFuY2VzIHlvdSBzaG91bGQgYWRqdXN0IHRoZSBwYXJlbnQgZXZlbnQuJzsKJGxhbmdbJ2FsbGRheV9ldmVudCddID0gJ1RoaXMgaXMgYW4gYWxsZGF5IGV2ZW50JzsKJGxhbmdbJ25vdGUnXSA9ICdOb3RlJzsKJGxhbmdbJ3RpdGxlX3BhcmVudF9ldmVudCddID0gJ1RoaXMgZXZlbnQgcmVjdXJzLCBhbmQgY29udGFpbnMgY2hpbGQgZXZlbnRzJzsKJGxhbmdbJ3N0YXJ0J10gPSAnU3RhcnQnOwokbGFuZ1snZW5kJ10gPSAnRW5kJzsKJGxhbmdbJ2V2ZW50X2FjdGlvbiddID0gJ0V2ZW50IEFjdGlvbic7CiRsYW5nWydpbmZvX2V2ZW50X2FjdGlvbiddID0gJ1NlbGVjdCB0aGUgYWN0aW9uIHRvIHBlcmZvcm0gb24gdGhpcyBldmVudC48YnIvPkVkaXRpbmcgdGhlIGV2ZW50IHdpbGwgcmVkaXJlY3QgdG8gYSBuZXcgcGFnZS4nOwokbGFuZ1snZXJyb3JfZGVsZXRlcGFyZW50ZXZlbnQnXSA9ICdTb3JyeSwgYnV0IHlvdSBjYW5ub3QgZGVsZXRlIGEgcGFyZW50IGV2ZW50JzsKJGxhbmdbJ2NoaWxkJ10gPSAnQ2hpbGQnOwokbGFuZ1sncmVwZWF0cyddID0gJ3JlcGVhdHMnOwokbGFuZ1snZXJyb3JfZXZlbnRub3Rmb3VuZCddID0gJ0V2ZW50IG5vdCBmb3VuZCc7CiRsYW5nWydlcnJvcl91bmtub3duJ10gPSAnVW5rbm93biBlcnJvcic7CiRsYW5nWydpbmZvX2NhbF9maWx0ZXJfYnknXSA9ICdXaGVuIHNlYXJjaGluZyA8ZW0+KGZpbHRlcmluZyk8L2VtPiBieSB3b3JkcyBpbiB0aGUgdGl0bGUsIGRhdGUgc2Nyb2xsaW5nIGlzIG5vdCBhdmFpbGFibGUnOwokbGFuZ1snbXNnX25vZGF0ZXMnXSA9ICdUaXRsZSBzZWFyY2ggYXBwbGllZCc7CiRsYW5nWyd0aXRsZV9yZWN1cnJpbmdfZXZlbnQnXSA9ICdUaGlzIGlzIGEgcmVjdXJyaW5nIGV2ZW50IHdpdGggY2hpbGRyZW4nOwokbGFuZ1sndGl0bGVfY2hpbGRfZXZlbnQnXSA9ICdUaGlzIGlzIGEgcmVjdXJyYW5jZSBvZiBhIHBhcmVudCBldmVudCc7CiRsYW5nWydlcnJvcl9zb21lZGVsZXRlZCddID0gJ1NvbWUgb2YgdGhlIGV2ZW50cyB3ZXJlIGRlbGV0ZWQuICBIb3dldmVyLCBkdWUgdG8gcGVybWlzc2lvbnMgc29tZSB3ZXJlIG5vdCc7CiRsYW5nWydlcnJvcl9ub25lZGVsZXRlZCddID0gJ0R1ZSB0byBwZXJtaXNzaW9ucyBvciBvdGhlciBlcnJvcnMsIG5vbmUgb2YgdGhlIHNlbGVjdGVkIGV2ZW50cyB3ZXJlIGRlbGV0ZWQnOwokbGFuZ1snZXJyb3JfZGVsZXRlZmFpbGVkJ10gPSAnRXZlbnQgZGVsZXRpb24gZmFpbGVkJzsKJGxhbmdbJ2ZpbGVhdHRhY2htZW50J10gPSAnRmlsZSBBdHRhY2htZW50JzsKJGxhbmdbJ3Byb21wdF9nZW5lcmFsX3NldHRpbmdzJ10gPSAnR2VuZXJhbCBTZXR0aW5ncyc7CiRsYW5nWydwcm9tcHRfZWRpdGluZ19zZXR0aW5ncyddID0gJ0V2ZW50IEVkaXRpbmcgU2V0dGluZ3MnOwokbGFuZ1sncHJvbXB0X2ZlZWRpdF9zZXR0aW5ncyddID0gJ0Zyb250ZW5kIEVkaXRpbmcgU2V0dGluZ3MnOwokbGFuZ1sncHJldl9tb250aCddID0gJ0dvIHRvIHRoZSBwcmV2aW91cyBtb250aCc7CiRsYW5nWyduZXh0X21vbnRoJ10gPSAnR28gdG8gdGhlIG5leHQgbW9udGgnOwokbGFuZ1snaW5mb19jdXN0b21maWVsZHNfdGFiJ10gPSAnQ3VzdG9tIGZpZWxkcyBjYW4gYmUgcmVvcmRlcmVkIGJ5IGRyYWdnaW5nIGFuZCBkcm9wcGluZyByb3dzLiAgT25seSB0ZXh0IGZpZWxkcyBhcmUgc2VhcmNoYWJsZSwgYW5kIG9ubHkgdGV4dCBhcmVhcyBjYW4gaGF2ZSBXWVNJV1lHIGZpZWxkcyBhdHRhY2hlZC4gPHN0cm9uZyBzdHlsZT0iY29sb3I6IHJlZDsiPk5vdGU6PC9zdHJvbmc+IFdZU0lXWUcgZmllbGRzIHdpbGwgbm90IGJlIHNob3duIGZvciB0ZXh0YXJlYSBmaWVsZHMgb24gdGhlIGZyb250ZW5kLic7CiRsYW5nWydtc2dfY2F0ZWdvcmllc191cGRhdGVkJ10gPSAnQ2F0ZWdvcmllcyB1cGRhdGVkJzsKJGxhbmdbJ21zZ19maWVsZHN1cGRhdGVkJ10gPSAnRmllbGQgZGVmaW5pdGlvbnMgdXBkYXRlZCc7CiRsYW5nWyd3eXNpd3lnJ10gPSAnV1lTSVdZRyc7CiRsYW5nWydpbmZvX3Jlb3JkZXJfY2F0ZWdvcmllcyddID0gJ0NhdGVnb3J5IG9yZGVyIGNhbiBiZSBkZWZpbmVkIGJ5IGRyYWdnaW5nIGFuZCBkcm9wcGluZyByb3dzJzsKJGxhbmdbJ2Vycm9yX2NhdGVnb3J5bmFtZXJvdyddID0gJ1RoZSBuYW1lIGhhcyBiZWVuIGVyYXNlZCBmb3IgYSB2YWxpZCBjYXRlZ29yeSBhdCByb3c6JzsKJGxhbmdbJ2NvbmZpcm1fbm9jYXRlZ29yaWVzJ10gPSAnV2UgZGV0ZWN0ZWQgbm8gdmFsaWQgY2F0ZWdvcmllcy4gIEFyZSB5b3Ugc3VyZSB0aGF0IHRoaXMgaXMgd2hhdCB5b3Ugd2FudCB0byBkbz8nOwokbGFuZ1snYWRkX2ZpZWxkJ10gPSAnQWRkIGZpZWxkJzsKJGxhbmdbJ2FkZF9jYXRlZ29yeSddID0gJ0FkZCBjYXRlZ29yeSc7CiRsYW5nWydwcm9tcHRfZmlyc3RkYXlvZndlZWsnXSA9ICdGaXJzdCBkYXkgb2YgdGhlIHdlZWsnOwokbGFuZ1snZWRpdF9ldmVudCddID0gJ0VkaXQgdGhpcyBldmVudCc7CiRsYW5nWydlZGl0X3BhcmVudF9ldmVudCddID0gJ0VkaXQgdGhlIHBhcmVudCBldmVudCc7CiRsYW5nWyd0aXRsZV9jaGlsZF9ldmVudCddID0gJ1RoaXMgaXMgYSBjaGlsZCBvZiBhIHBhcmVudCByZWN1cnJpbmcgZXZlbnQnOwokbGFuZ1snc2VsZWN0X3BlcmlvZCddID0gJ1BlcmlvZCc7CiRsYW5nWydzaG93X2ZpbHRlciddID0gJ1Nob3cgZmlsdGVyJzsKJGxhbmdbJ3Nob3dfZmlsdGVyX2FwcGxpZWQnXSA9ICdTaG93IGZpbHRlciA8ZW0+KGFwcGxpZWQpPC9lbT4nOwokbGFuZ1sncmVzZXQnXSA9ICdSZXNldCc7CiRsYW5nWydjYWxfY3VycmVudCddID0gJ1RoaXMgcGVyaW9kJzsKJGxhbmdbJ2NhbF9mcm9tJ10gPSAnRnJvbSc7CiRsYW5nWydlcnJvcl9mZXVfbG9nZ2VkaW4nXSA9ICdUaGUgdXNlciBpcyBub3QgbG9nZ2VkIGluIHRvIEZFVS4gIEFkZGluZyBvciBlZGl0aW5nIGV2ZW50cyBpcyBub3QgcGVybWl0dGVkJzsKJGxhbmdbJ3Byb21wdF9mcmllbmRseW5hbWUnXSA9ICdGcmllbmRseSBOYW1lIGZvciB0aGlzIE1vZHVsZSBpbiBBZG1pbiBOYXZpZ2F0aW9uJzsKJGxhbmdbJ2luZm9fZnJpZW5kbHluYW1lJ10gPSAnTm90ZTogWW91IG1heSBuZWVkIHRvIGNsZWFyIHRoZSBzaXRlIGNhY2hlIGZvciB0aGlzIHByZWZlcmVuY2UgdG8gaGF2ZSBlZmZlY3QuICBJZiBubyB2YWx1ZSBpcyBzdXBwbGllZCBhIGRlZmF1bHQgd2lsbCBiZSB1c2VkLic7CiRsYW5nWyd1c2Vfd3lzaXd5ZyddID0gJ1VzZSBXeXNpd3lnJzsKJGxhbmdbJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcyddID0gJ0luc3VmZmljaWVudCBvciBpbnZhbGlkIHBhcmFtZXRlcnMnOwokbGFuZ1snY29sdW1uX2RlbGltaXRlciddID0gJ0ltcG9ydCBmaWxlIGNvbHVtbiBkZWxpbWl0ZXInOwokbGFuZ1snaW1wb3J0X2NvbXBsZXRlZCddID0gJ0ltcG9ydCBDb21wbGV0ZSc7CiRsYW5nWydudW1faW1wb3J0ZWQnXSA9ICdOdW1iZXIgb2YgZXZlbnRzIGNyZWF0ZWQ6ICVkJzsKJGxhbmdbJ2ltcG9ydF9saW5lcyddID0gJ051bWJlciBvZiBsaW5lcyBwcm9jZXNzZWQgZnJvbSBmaWxlOiAlZCc7CiRsYW5nWydlcnJvcnMnXSA9ICdFcnJvcnMnOwokbGFuZ1snZXJyb3JfY3N2Zmlyc3RsaW5laW52YWxpZGZpZWxkJ10gPSAnRmllbGQ6ICVzIGlzIG5vdCByZWNvZ25pemVkLCBhbmQgaXMgbm90IGEgY3VzdG9tIGZpZWxkJzsKJGxhbmdbJ2luZm9fY3N2X2Zvcm1hdCddID0gPDw8RU9UCjxoND5DU1YgRmlsZSBGb3JtYXQgSW5mb3JtYXRpb24uPC9oND4KPHVsPgogIDxsaT5HZW5lcmFsIEluZm9ybWF0aW9uOgogICA8dWw+CiAgICAgPGxpPlRoZSBmaWxlIG11c3QgYmUgYW4gQVNDSUkgZmlsZSB3aXRoIHVuaXggKHByZWZlcnJlZCksIGRvcywgb3IgbWFjIGxpbmUgZW5kaW5ncy48L2xpPgogICAgIDxsaT5Db21tZW50cyBzdGFydCB3aXRoIC8vIGFueSBjaGFyYWN0ZXJzIGFmdGVyIHRoaXMgb24gYSBsaW5lIHdpbGwgYmUgaWdub3JlZCAoaW5jbHVkaW5nIHdpdGhpbiBxdW90ZXMuPC9saT4KICAgICA8bGk+RW1wdHkgbGluZXMgYXJlIGlnbm9yZWQ8L2xpPgogICAgIDxsaT5GaWVsZCBkZWxpbWl0ZXJzIGFyZSB1c2VyIGNvbnRyb2xsYWJsZSwgaG93ZXZlciBhIGRlbGltaXRlciBjYW4gYmUgdXNlZCBhcyBhIHZhbHVlIHdpdGhpbiBhIGZpZWxkIGlmIHRoZSBmaWVsZCBpcyBkZWxpbWl0ZWQgYnkgZG91YmxlIHF1b3Rlcy48L2xpPgogICAgIDxsaT5Sb3dzIGFyZSBkZWxpbWl0ZWQgYnkgbmV3bGluZSBjaGFycyAoYXMgYWJvdmUpLjwvbGk+CiAgIDwvdWw+CiAgPC9saT4KICA8bGk+VGhlIEZpZWxkIE1hcDoKICAgPHVsPgogICAgPGxpPlRoZSBmaXJzdCBsaW5lIGRlZmluZXMgdGhlIG9yZGVyIG9mIHRoZSBmaWVsZHMsIGFuZCB3aGF0ICZxdW90O2N1c3RvbSBmaWVsZHMmcXVvdDsgYXJlIGRlZmluZWQgaW4gdGhlIGZpbGUuIERhdGEgY2FuIHN0YXJ0IG9uIHRoZSBzZWNvbmQgbm9uLWVtcHR5IGxpbmUsIG9yIGFmdGVyLjwvbGk+CiAgICA8bGk+VGhlcmVzIGFyZSB0aGUgcmVxdWlyZWQgZmllbGRzOiBzdGFydCB0aW1lLCBlbmQgdGltZSwgdGl0bGUsIHN1bW1hcnksIGFuZCBkZXNjcmlwdGlvbi4gIFdpdGhvdXQgZGVmaW5pbmcgdGhlc2UgZmllbGRzIGluIHRoZSBoZWFkZXIgdGhlIGltcG9ydCB3aWxsIG5vdCBwcm9jZWVkLiAgUmVxdWlyZWQgZmllbGQgbmFtZXMgYXJlIG5vdCBjYXNlIHNlbnNpdGl2ZS48L2xpPgogICAgPGxpPlRoZXJlIGlzIG9uZSBvcHRpb25hbCBjb2x1bW46OiAmcXVvdDtjYXRlZ29yeSZxdW90Oy4gIElmIHNwZWNpZmllZCBpdCBjYW4gY29udGFpbiBhIDsgc2VwYXJhdGVkIGxpc3Qgb2YgY2F0ZWdvcnkgbmFtZXMgdGhhdCB0aGUgZXZlbnQgd2lsbCBiZWxvbmcgdG8uPC9saT4KICAgPC91bD4KICA8L2xpPgogIDxsaT5UaGUgRGF0YSBSb3dzOgogICA8dWw+CiAgICA8bGk+VGhlIHN0YXJ0IHRpbWUsIHRpdGxlLCBhbmQgZGVzY3JpcHRpb24gZmllbGRzIG11c3Qgbm90IGJlIGVtcHR5LjwvbGk+CjxsaT5TdGFydCBhbmQgRW5kIFRpbWVzOjwvbGk+CiAgPHVsPgogICA8bGk+U3RhcnQgdGltZSBwcm9jZXNzaW5nIGlzIGZsZXhpYmxlLiAgWW91IGNhbiBzcGVjaWZ5IGVpdGhlciAgWVlZWS1NTS1ERCBISDpNTSBmb3JtYXQsIG9yIG1hbnkgZm9ybWF0cyBhcyBkZWZpbmVkIGJ5IHRoZSBzdHJ0b3RpbWUgZnVuY3Rpb24sIGluY2x1ZGluZyByZWxhdGl2ZSB0aW1lcy4gIElmIGEgcmVsYXRpdmUgdGltZSBpcyBzdXBwbGllZCBpdCBpcyBhc3N1bWVkIHRvIGJlIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHRpbWUuPC9saT4KICAgPGxpPkVuZCB0aW1lIHByb2Nlc3NpbmcgaXMgZmxleGlibGUsIGFuZCBtYXkgYmUgZW1wdHkuICBZb3UgY2FuIHNwZWNpZnkgZWl0aGVyIGFuIGFic29sdXRlIHRpbWUgKGluIHRoZSBzYW1lIGZvcm1hdCBhcyB0aGUgc3RhcnQgdGltZSkgb3IgYSByZWxhdGl2ZSB0aW1lLiAgSWYgYSByZWxhdGl2ZSB0aW1lIGlzIHNwZWNpZmllZCwgaXQgaXMgYXNzdW1lZCB0byBiZSByZWxhdGl2ZSB0byB0aGUgc3RhcnQgdGltZS4gICBpLmU6ICZxdW90Oys0IGhvdXJzJnF1b3Q7IHdvdWxkIGluZGljYXRlIDQgaG91cnMgZnJvbSB0aGUgc3RhcnQgdGltZSBjb2x1bW4uPC9saT4KICAgPGxpPklmIHRoZSBlbmQgdGltZSBjb2x1bWUgaXMgdGhlIHN0cmluZyAmcXVvdDtBbGwgZGF5JnF1b3Q7IDxlbT4oY2FzZSBpbnNlbnNpdGl2ZSk8L2VtPiBpdCB3aWxsIGFzc3VtZSBhbiBhbGwgZGF5IGV2ZW50IGZyb20gdGhlIHN0YXJ0IHRpbWUuPC9saT4KICAgPGxpPklmIHRoZSBlbmQgdGltZSBjb2x1bW4gaXMgZW1wdHksIHRoZW4gbm8gZW5kIHRpbWUgdmFsdWUgd2lsbCBiZSBjcmVhdGVkIGluIHRoZSBkYXRhYmFzZS48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5DYXRlZ29yaWVzCiAgPHVsPgogICA8bGk+SWYgc3BlY2lmaWVkLCB0aGUgY2F0ZWdvcnkgY29sdW1uIGNhbiBjb250YWluIGEgbGlzdCAoc2VwYXJhdGVkIGJ5IDspIG9mIGNhdGVnb3J5IG5hbWVzIGZvciB3aGljaCB0aGUgZXZlbnQgc2hvdWxkIGJlbG9uZy48L2xpPgogICA8bGk+Q2F0ZWdvcnkgbmFtZXMgYXJlIGNhc2Ugc2Vuc2l0aXZlLjwvbGk+CiAgIDxsaT5DYXRlZ29yaWVzIGFyZSBub3QgY3JlYXRlZCBpZiB0aGV5IGRvIG5vdCBleGlzdC48L2xpPgogIDwvdWw+CjwvbGk+CjxsaT5DdXN0b20gRmllbGRzOgogIDx1bD4KICAgIDxsaT5DdXN0b20gZmllbGQgbmFtZXMgKGV2ZW4gaW4gdGhlIGZpcnN0IGxpbmUgdGhhdCBkZXRlcm1pbmVzIHRoZSBmaWVsZCBtYXBwaW5nKSBhcmUgY2FzZSBzZW5zaXRpdmUuPC9saT4KICAgIDxsaT5DdXRvbSBmaWVsZHMgYXJlIG5vdCBjcmVhdGVkIGlmIHNwZWNpZmllZCBpbiB0aGUgQ1NWIGZpbGUuICBVbmtub3duIGN1c3RvbSBmaWVsZCBjb2x1bW5zIHdpbGwgYmUgaWdub3JlZC48L2xpPgogICAgPGxpPkN1c3RvbSBmaWVsZHMgb2YgdHlwZSAmcXVvdDtmaWxlJnF1b3Q7IGNhbm5vdCBiZSBpbXBvcnRlZC4gIFRoZSBlbnRpcmUgaW1wb3J0IG9wZXJhdGlvbiB3aWxsIGZhaWwuPC9saT4KICA8L3VsPgogIDwvbGk+CiAgPC91bD4KPC9saT4KPGxpPkEgc2FtcGxlIGNzdiBmaWxlIGV4aXN0cyBpbiB0aGUgbW9kdWxlcyBzb3VyY2UgY29kZSBkaXJlY3RvcnkuPC9saT4KPC91bD4KRU9UOwokbGFuZ1sncHJvbXB0X2Nzdl9maWxlJ10gPSAnU2VsZWN0IEltcG9ydCBGaWxlJzsKJGxhbmdbJ2RlbGV0ZSddID0gJ0RlbGV0ZSc7CiRsYW5nWydjZF9jb21wYW55J10gPSAnQ29tcGFueSBEaXJlY3RvcnkgQ29tcGFueSc7CiRsYW5nWydkZmx0X3VybHByZWZpeCddID0gJ0RlZmF1bHQgVVJMIHByZWZpeCBmb3IgUHJldHR5IFVSTFMnOwokbGFuZ1snZGZsdF9hbGxkYXlldmVudCddID0gJ05ldyBldmVudHMgYXJlICZxdW90O0FsbCBEYXkmcXVvdDsgZXZlbnRzIGJ5IGRlZmF1bHQnOwokbGFuZ1snZGZsdF9zdGFydHRpbWUnXSA9ICdEZWZhdWx0IHN0YXJ0IHRpbWUgZm9yIG5ldyBldmVudHMnOwokbGFuZ1snaW5mb19kZmx0X3N0YXJ0dGltZSddID0gJzxlbT4oYXBwbGllcyBvbmx5IGlmIG5ldyBldmVudHMgYXJlIG5vdCAmcXVvdDtBbGwgRGF5JnF1b3Q7IGV2ZW50cy4pPC9lbT4nOwokbGFuZ1snc2VhcmNoX3R5cGUnXSA9ICdTZWFyY2ggVHlwZSc7CiRsYW5nWydzZWFyY2hfYW55J10gPSAnUmV0dXJuIHJlc3VsdHMgbWF0Y2hpbmcgYW55IHdvcmQnOwokbGFuZ1snc2VhcmNoX2FsbCddID0gJ1JldHVybiByZXN1bHRzIG1hdGNoaW5nIGFsbCB3b3Jkcyc7CiRsYW5nWydzZWFyY2hhYmxlJ10gPSAnU2VhcmNoYWJsZSc7CiRsYW5nWydoZWxwX3BhcmFtX2RlbGV0ZWV2ZW50dGVtcGxhdGUnXSA9ICdBcHBsaWNhYmxlIG9ubHkgdG8gdGhlIGRlbGV0ZV9ldmVudCBhY3Rpb24sIHRoaXMgcGFyYW1ldGVyIGFsbG93cyBzcGVjaWZ5aW5nIGEgbm9uIGRlZmF1bHQgZGVsZXRlIGV2ZW50IHRlbXBsYXRlIHRvIHVzZSBmb3IgdGhhdCBhY3Rpb24uJzsKJGxhbmdbJ2hlbHBfcGFyYW1fZWRpdGV2ZW50dGVtcGxhdGUnXSA9ICdBcHBsaWNhYmxlIG9ubHkgdG8gdGhlIG15ZXZlbnRzIGFjdGlvbiwgdGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHNwZWNpZnlpbmcgYSBub24gZGVmYXVsdCBlZGl0IGV2ZW50IHRlbXBsYXRlIHRvIHVzZSB3aGVuIGEgdXNlciBjcmVhdGVzIG9yIGVkaXRzIGFuIGV2ZW50JzsKJGxhbmdbJ2hlbHBfcGFyYW1fZWRpdHBhZ2UnXSA9ICdBcHBsaWNhYmxlIG9ubHkgdG8gdGhlIG15ZXZlbnRzIGFjdGlvbiwgdGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHNwZWNpZnlpbmcgYSBkaWZmZXJlbnQgcGFnZSBmb3IgdGhlIGVkaXQgZm9ybS4nOwokbGFuZ1snaGVscF9wYXJhbV9teWV2ZW50c3RlbXBsYXRlJ10gPSAnQXBwbGljYWJsZSBvbmx5IHRvIHRoZSBteWV2ZW50cyBhY3Rpb24sIHRoaXMgcGFyYW1ldGVyIGFsbG93cyBzcGVjaWZ5aW5nIGEgbm9uIGRlZmF1bHQgdGVtcGxhdGUgdG8gdXNlJzsKJGxhbmdbJ2NhbF9lZGl0X2V2ZW50J10gPSAnRWRpdCBDYWxlbmRhciBFdmVudCc7CiRsYW5nWydlcnJvcl9kYmVycm9yJ10gPSAnRGF0YWJhc2UgRXJyb3InOwokbGFuZ1snc3VibWl0J10gPSAnU3VibWl0JzsKJGxhbmdbJ3Byb21wdF9mZWVkaXRfZ3JvdXAnXSA9ICdNZW1iZXJzIG9mIHRoaXMgRkVVIGdyb3VwIGNhbiBhZGQgZXZlbnRzJzsKJGxhbmdbJ3Byb21wdF9mZWVkaXRfcGFnZSddID0gJ0RlZmF1bHQgcGFnZSBmb3IgdGhlIGZyb250ZW5kIGVkaXQgZm9ybS4nOwokbGFuZ1snbm9uZSddID0gJ05vbmUnOwokbGFuZ1snb3duZXInXSA9ICdPd25lcic7CiRsYW5nWydhcmV5b3VzdXJlX3JlbW92ZWNvbmZsaWN0aW5nJ10gPSAnVGhpcyBhY3Rpb24gd2lsbCByZW1vdmUgYW55IGV2ZW50cyB0aGF0IGNvbmZsaWN0IHdpdGggbm9uLW92ZXJsYXBwYWJsZSBldmVudHMuICBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZG8gdGhpcz8nOwokbGFuZ1snZmlsdGVyX2NvbmZsaWN0aW5nJ10gPSAnRmlsdGVyIENvbmZsaWN0aW5nIEV2ZW50cyc7CiRsYW5nWydvdmVybGFwX2FjdGlvbl9yZW1vdmUnXSA9ICdTaWxlbnRseSByZW1vdmUgY29uZmxpY3RpbmcgZXZlbnRzJzsKJGxhbmdbJ292ZXJsYXBfYWN0aW9uX2Vycm9yJ10gPSAnRGlzcGxheSBhbiBlcnJvcic7CiRsYW5nWydwcm9tcHRfb3ZlcmxhcF9hY3Rpb24nXSA9ICdXaGF0IHNob3VsZCBoYXBwZW4gd2hlbiBhIGNvbmZsaWN0IGlzIGRldGVjdGVkIGR1cmluZyBlZGl0aW5nIG9yIGFkZGluZyBvZiBhbiBldmVudCc7CiRsYW5nWydlcnJvcl9ldmVudF9jb25mbGljdCddID0gJ1RoZSBldmVudCB2YWx1ZXMgc3BlY2lmaWVkIG92ZXJsYXAgd2l0aCBhbiBleGlzdGluZyBldmVudCB0aGF0IGRvZXMgbm90IGFsbG93IGNvbmZsaWN0cyc7CiRsYW5nWydjYWxfaW5mb19vdmVybGFwJ10gPSAnQXBwbGllcyBvbmx5IHRvIGV2ZW50cyB3aXRoIGFuIGVuZCB0aW1lIChvciBhbGwgZGF5IGV2ZW50cyknOwokbGFuZ1snY2FsX292ZXJsYXAnXSA9ICdBbGxvdyBuZXcgZXZlbnRzIHRvIG92ZXJsYXAgd2l0aCB0aGlzIG9uZSc7CiRsYW5nWydwcm9tcHRfb3ZlcmxhcF9wb2xpY3knXSA9ICdFdmVudCBPdmVybGFwIFBvbGljeSc7CiRsYW5nWydwb2xpY3lfYWxsJ10gPSAnQWxsIEV2ZW50cyBjYW4gb3ZlcmxhcCc7CiRsYW5nWydwb2xpY3lfbm9uZSddID0gJ05vIEV2ZW50cyBjYW4gb3ZlcmxhcCc7CiRsYW5nWydwb2xpY3lfaW5kaXZpZHVhbCddID0gJ0RlY2lkZWQgb24gYW4gZXZlbnQgYnkgZXZlbnQgYmFzaXMnOwokbGFuZ1snbGJsX2JhY2snXSA9ICdCYWNrJzsKJGxhbmdbJ3RleHRhcmVhJ10gPSAnVGV4dCBBcmVhJzsKJGxhbmdbJ2Vycm9yX2NhbGVuZGFyX2luY29tcGF0aWJsZSddID0gJ1dlIGhhdmUgZGV0ZWN0ZWQgdGhhdCB0aGUgQ2FsZW5kYXIgbW9kdWxlIGlzIGFsc28gaW5zdGFsbGVkLi4gIFRoaXMgbW9kdWxlIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIENhbGVuZGFyIG1vZHVsZSBhbmQgY2Fubm90IGNvLWV4aXN0IHdpdGggaXQgb24gdGhlIHNhbWUgaW5zdGFsbC4gIFBsZWFzZSB1bmluc3RhbGwgdGhlIENhbGVuZGFyIG1vZHVsZSc7CiRsYW5nWydlcnJvcl9ldmVudF9ub3RfZm91bmQnXSA9ICdFaXRoZXIgZXZlbnRfaWQgaXMgbm90IGluIHRoZSBkYXRhYmFzZSwgb3IgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBldmVudCB3aXRoIHRoaXMgaWQhICglZCknOwokbGFuZ1snZmlyc3RfcGFnZSddID0gJyZsdDsmbHQ7JzsKJGxhbmdbJ3ByZXZfcGFnZSddID0gJyZsdDsnOwokbGFuZ1snbmV4dF9wYWdlJ10gPSAnJmd0Oyc7CiRsYW5nWydsYXN0X3BhZ2UnXSA9ICcmZ3Q7Jmd0Oyc7CiRsYW5nWydwYWdlX29mJ10gPSAnUGFnZSAlZCBvZiAlZCc7CiRsYW5nWydzZWFyY2hfcmVzdWx0cyddID0gJ0NhbGVuZGFyIFNlYXJjaCBSZXN1bHRzJzsKJGxhbmdbJ3NlYXJjaF93b3JkcyddID0gJ1NlYXJjaCBXb3Jkcyc7CiRsYW5nWydub19yZXN1bHRzX2ZvdW5kJ10gPSAnTm8gZGlzcGxheWFibGUgZXZlbnRzIGZvdW5kIGZvciB0aGlzIHBlcmlvZC4nOwokbGFuZ1snZnJlcXVlbmN5J10gPSAnRnJlcXVlbmN5JzsKJGxhbmdbJ3NwZWNpZmllZF9kYXRlJ10gPSAnVXNlIHRoZSBzcGVjaWZpZWQgZGF0ZSc7CiRsYW5nWydmaXJzdF9zdW5kYXknXSA9ICdGaXJzdCBTdW5kYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZpcnN0X21vbmRheSddID0gJ0ZpcnN0IE1vbmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZmlyc3RfdHVlc2RheSddID0gJ0ZpcnN0IFR1ZXNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZpcnN0X3dlZG5lc2RheSddID0gJ0ZpcnN0IFdlZG5lc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZmlyc3RfdGh1cnNkYXknXSA9ICdGaXJzdCBUaHVyc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZmlyc3RfZnJpZGF5J10gPSAnRmlyc3QgRnJpZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydmaXJzdF9zYXR1cmRheSddID0gJ0ZpcnN0IFNhdHVyZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydzZWNvbmRfc3VuZGF5J10gPSAnU2Vjb25kIFN1bmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snc2Vjb25kX21vbmRheSddID0gJ1NlY29uZCBNb25kYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3NlY29uZF90dWVzZGF5J10gPSAnU2Vjb25kIFR1ZXNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3NlY29uZF93ZWRuZXNkYXknXSA9ICdTZWNvbmQgV2VkbmVzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydzZWNvbmRfdGh1cnNkYXknXSA9ICdTZWNvbmQgVGh1cnNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3NlY29uZF9mcmlkYXknXSA9ICdTZWNvbmQgRnJpZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydzZWNvbmRfc2F0dXJkYXknXSA9ICdTZWNvbmQgU2F0dXJkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3RoaXJkX3N1bmRheSddID0gJ1RoaXJkIFN1bmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1sndGhpcmRfbW9uZGF5J10gPSAnVGhpcmQgTW9uZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWyd0aGlyZF90dWVzZGF5J10gPSAnVGhpcmQgVHVlc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1sndGhpcmRfd2VkbmVzZGF5J10gPSAnVGhpcmQgV2VkbmVzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWyd0aGlyZF90aHVyc2RheSddID0gJ1RoaXJkIFRodXJzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWyd0aGlyZF9mcmlkYXknXSA9ICdUaGlyZCBGcmlkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3RoaXJkX3NhdHVyZGF5J10gPSAnVGhpcmQgU2F0dXJkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZvdXJ0aF9zdW5kYXknXSA9ICdGb3VydGggU3VuZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydmb3VydGhfbW9uZGF5J10gPSAnRm91cnRoIE1vbmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZm91cnRoX3R1ZXNkYXknXSA9ICdGb3VydGggVHVlc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZm91cnRoX3dlZG5lc2RheSddID0gJ0ZvdXJ0aCBXZWRuZXNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZvdXJ0aF90aHVyc2RheSddID0gJ0ZvdXJ0aCBUaHVyc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZm91cnRoX2ZyaWRheSddID0gJ0ZvdXJ0aCBGcmlkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZvdXJ0aF9zYXR1cmRheSddID0gJ0ZvdXJ0aCBTYXR1cmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snbGFzdF9zdW5kYXknXSA9ICdMYXN0IFN1bmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snbGFzdF9tb25kYXknXSA9ICdMYXN0IE1vbmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snbGFzdF90dWVzZGF5J10gPSAnTGFzdCBUdWVzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydsYXN0X3dlZG5lc2RheSddID0gJ0xhc3QgV2VkbmVzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydsYXN0X3RodXJzZGF5J10gPSAnTGFzdCBUaHVyc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snbGFzdF9mcmlkYXknXSA9ICdMYXN0IEZyaWRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snbGFzdF9zYXR1cmRheSddID0gJ0xhc3QgU2F0dXJkYXkgb2YgdGhlIE1vbnRoJzsKCiRsYW5nWydlcnJvcl9pbnZhbGlkX3JlY3VyX21vbnRobHlfZnJlcSddID0gJ0ludmFsaWQgZnJlcXVlbmN5Li4uLiB5b3UgY2Fubm90IHNwZWNpZnkgYm90aCB0aGUgc3BlY2lmaWVkIGRhdGUgQU5EIG90aGVyIHZhbHVlcyc7CiRsYW5nWydlcnJvcl9xdWVyeV9mYWlsZWQnXSA9ICdEYXRhYmFzZSBRdWVyeSBGYWlsZWQnOwokbGFuZ1snZXJyb3Jfc2VhcmNoX2ludmFsaWRfZGF0ZXMnXSA9ICdJbnZhbGlkIFNlYXJjaCBEYXRlcyBTcGVjaWZpZWQnOwokbGFuZ1sndGV4dCddID0gJ1RleHQnOwokbGFuZ1snc2VhcmNoJ10gPSAnU2VhcmNoJzsKJGxhbmdbJ2NhdGVnb3J5J10gPSAnQ2F0ZWdvcnknOwokbGFuZ1snbWF4J10gPSAnbWF4JzsKJGxhbmdbJ3RpbWVzJ10gPSAndGltZXMnOwokbGFuZ1snb24nXSA9ICdvbic7CiRsYW5nWydhcmV5b3VzdXJlX3VuaW5zdGFsbCddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkbyB0aGlzPyAgQ29udGludWluZyB3aWxsIHBlcm1hbmVuZW50bHkgZXJhc2UgYWxsIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbW9kdWxlLic7CiRsYW5nWydwb3N0X3VuaW5zdGFsbCddID0gJ1RoZSBDYWxlbmRhciBtb2R1bGUgaGFzIGJlZW4gdW5pbnN0YWxsZWQgYW5kIGFsbCBldmVudCBhbmQgdGVtcGxhdGUgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbW92ZWQnOwokbGFuZ1snZmllbGR1cGRhdGVkJ10gPSAnRmllbGQgVXBkYXRlZCc7CiRsYW5nWydldmVyeSddID0gJ0V2ZXJ5JzsKJGxhbmdbJ29yJ10gPSAnb3InOwokbGFuZ1sndXBkYXRlX2NoaWxkcmVuJ10gPSAnVXBkYXRlIENoaWxkIEV2ZW50cyc7CiRsYW5nWydlcnJvcl9ub2NhdGVnb3J5J10gPSAnWW91IG11c3Qgc2VsZWN0IGF0IGxlYXN0IG9uZSBjYXRlZ29yeSc7CiRsYW5nWydlcnJvcl9ub3RoaW5nc2VsZWN0ZWQnXSA9ICdOb3RoaW5nIGhhcyBiZWVuIHNlbGVjdGVkIHRvIGRlbGV0ZSc7CiRsYW5nWydlcnJvcl9ldmVudG92ZXJsYXAnXSA9ICdUaGUgcmVjdXJpbmcgZXZlbnQgcGFyYW1ldGVycyB5b3UgaGF2ZSBzcGVjaWZpZWQgd291bGQgcmVzdWx0IGluIG92ZXJsYXBwaW5nIGV2ZW50cy4nOwokbGFuZ1sncmVjdXJzJ10gPSAnUmVjdXJzJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRfZGF0ZXMnXSA9ICdPbmUgb3IgbW9yZSBvZiB0aGUgZGF0ZSB2YWx1ZXMgZW50ZXJlZCB3ZXJlIGludmFsaWQnOwokbGFuZ1snc3VuZGF5J10gPSAnU3VuZGF5JzsKJGxhbmdbJ21vbmRheSddID0gJ01vbmRheSc7CiRsYW5nWyd0dWVzZGF5J10gPSAnVHVlc2RheSc7CiRsYW5nWyd3ZWRuZXNkYXknXSA9ICdXZWRuZXNkYXknOwokbGFuZ1sndGh1cnNkYXknXSA9ICdUaHVyc2RheSc7CiRsYW5nWydmcmlkYXknXSA9ICdGcmlkYXknOwokbGFuZ1snc2F0dXJkYXknXSA9ICdTYXR1cmRheSc7CgokbGFuZ1snYWJicl9zdW5kYXknXSA9ICdTdSc7CiRsYW5nWydhYmJyX21vbmRheSddID0gJ01vJzsKJGxhbmdbJ2FiYnJfdHVlc2RheSddID0gJ1R1JzsKJGxhbmdbJ2FiYnJfd2VkbmVzZGF5J10gPSAnV2UnOwokbGFuZ1snYWJicl90aHVyc2RheSddID0gJ1RoJzsKJGxhbmdbJ2FiYnJfZnJpZGF5J10gPSAnRnInOwokbGFuZ1snYWJicl9zYXR1cmRheSddID0gJ1NhJzsKCiRsYW5nWyd3ZWVrJ10gPSAnV2Vlayc7CiRsYW5nWydtb250aCddID0gJ01vbnRoJzsKJGxhbmdbJ2RheSddID0gJ0RheSc7CiRsYW5nWyd0b2RheSddID0gJ1RvZGF5JzsKJGxhbmdbJ3dlZWtkYXlzJ10gPSAnV2Vla2RheXMnOwokbGFuZ1sncGx1cmFsX25vbmUnXSA9ICdOb25lJzsKJGxhbmdbJ3BsdXJhbF9kYWlseSddID0gJ0RheXMnOwokbGFuZ1sncGx1cmFsX3dlZWtseSddID0gJ1dlZWtzJzsKJGxhbmdbJ3BsdXJhbF9tb250aGx5J10gPSAnTW9udGhzJzsKJGxhbmdbJ3BsdXJhbF95ZWFybHknXSA9ICdZZWFycyc7CiRsYW5nWydubyddID0gJ05vJzsKJGxhbmdbJ3llcyddID0gJ1llcyc7CiRsYW5nWydkYWlseSddID0gJ0RhaWx5JzsKJGxhbmdbJ3dlZWtseSddID0gJ1dlZWtseSc7CiRsYW5nWydtb250aGx5J10gPSAnTW9udGhseSc7CiRsYW5nWyd5ZWFybHknXSA9ICdZZWFybHknOwokbGFuZ1snaW50ZXJ2YWwnXSA9ICdSZXBlYXQgZXZlcnknOwokbGFuZ1snY2FsX3JlY3VyX2RldGFpbHMnXSA9ICdSZWN1cnJpbmcgRXZlbnQgRGV0YWlscyc7CiRsYW5nWyd1bmxpbWl0ZWQnXSA9ICdVbmxpbWl0ZWQnOwokbGFuZ1snbWF4X3JlY3VyX2V2ZW50cyddID0gJ01heGltdW0gbnVtYmVyIG9mIGNoaWxkIGV2ZW50cyc7CiRsYW5nWyd1c2VfdG9fZGF0ZSddID0gJ1NwZWNpZnkgYSBkaWZmZXJlbnQgZW5kIGRhdGUvdGltZT8nOwokbGFuZ1snY2FuY2VsJ10gPSAnQ2FuY2VsJzsKJGxhbmdbJ3Nob3dfY2hpbGRfZXZlbnRzJ10gPSAnU2hvdyBDaGlsZCBFdmVudHMgPGVtPihtYXkgcmVzdWx0IGluIHZlcnkgbG9uZyBkaXNwbGF5KTwvZW0+JzsKJGxhbmdbJ24vYSddID0gJ24vYSc7CiRsYW5nWydyZWN1cnNfdW50aWwnXSA9ICdSZWN1ciBVbnRpbCc7CiRsYW5nWydwYXJlbnQnXSA9ICdQYXJlbnQnOwokbGFuZ1sncmVjdXJfcGVyaW9kJ10gPSAnUmVjdXIgUGVyaW9kJzsKJGxhbmdbJ2ZpbHRlciddID0gJ0ZpbHRlcic7CiRsYW5nWydzdGFydF9kYXRlJ10gPSAnU3RhcnQgRGF0ZSc7CiRsYW5nWydlbmRfZGF0ZSddID0gJ0VuZCBEYXRlJzsKCiMgTGFuZ3VhZ2U6IGVuX1VTCiRsYW5nWydldmVudGRlc2MtRXZlbnRBZGRlZCddID0gJ1NlbnQgYWZ0ZXIgYWRkaW5nIGEgY2FsZW5kYXIgZXZlbnQnOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RWRpdGVkJ10gPSAnU2VudCBhZnRlciBlZGl0aW5nIGFuIGV4aXN0aW5nIGNhbGVuZGFyIGV2ZW50JzsKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudEVkaXRlZFByZSddID0gJ1NlbnQgcHJpb3IgdG8gZWRpdGluZyBhbiBleGlzdGluZyBjYWxlbmRhciBldmVudCc7CiRsYW5nWydldmVudGRlc2MtRXZlbnREZWxldGVkJ10gPSAnU2VudCBhZnRlciBhbiBldmVudCBoYXMgYmVlbiBkZWxldGVkJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUFkZGVkJ10gPSAnU2VudCBhZnRlciBhIGNhdGVnb3J5IGlzIGNyZWF0ZWQnOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5RWRpdGVkJ10gPSAnU2VudCBhZnRlciBhIGNhdGVnb3J5IGlzIGVkaXRlZCc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnU2VudCBhZnRlciBhIGNhdGVnb3J5IGlzIGRlbGV0ZWQnOwoKJGxhbmdbJ2V2ZW50aGVscC1FdmVudEFkZGVkJ10gPSAnCjxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIGFkZGVkLjwvcD4KPGg0PlBhcmFtZXRlcnM8L2g0Pgo8dWw+CjxsaT5cImV2ZW50XCIgLSAoYXJyYXkpIFRoZSBlbnRpcmUgZXZlbnQgcmVjb3JkPC9saT4KPGxpPlwiZXZlbnRfdGl0bGVcIiAtIEV2ZW50IFRpdGxlPC9saT4KPGxpPlwiZXZlbnRfc3VtbWFyeVwiIC0gU3VtbWFyeSBUZXh0PC9saT4KPGxpPlwiZXZlbnRfZGV0YWlsc1wiIC0gRGV0YWlsZWQgRGVzY3JpcHRpb248L2xpPgo8bGk+XCJldmVudF9kYXRlX3N0YXJ0XCIgLSBUaGUgZXZlbnQgc3RhcnQgZGF0ZS90aW1lPC9saT4KPGxpPlwiZXZlbnRfZGF0ZV9lbmRcIiAtIFRoZSBldmVudCBlbmQgZGF0ZS90aW1lPC9saT4KPGxpPlwiZXZlbnRfY3JlYXRlZF9ieVwiIC0gVGhlIHVzZXJpZCBvZiB0aGUgYXV0aG9yPC9saT4KPGxpPlwiZXZlbnRfaWRcIiAtIFRoZSBldmVudCBpZDwvbGk+CjwvdWw+Cic7CiRsYW5nWydldmVudGhlbHAtRXZlbnRFZGl0ZWRQcmUnXSA9ICcKPHA+U2VudCBwcmlvciB0byBhbiBleGlzdGluZyBldmVudCBiZWluZyBlZGl0ZWQuPC9wPgo8aDQ+UGFyYW1ldGVyczo8L2g0Pgo8dWw+CjxsaT5cImV2ZW50XCIgLSAoYXJyYXkpIFRoZSBlbnRpcmUgZXZlbnQgcmVjb3JkPC9saT4KPGxpPlwiZXZlbnRfaWRcIiAtIFRoZSBldmVudCBpZDwvbGk+CjwvdWw+Cic7CiRsYW5nWydldmVudGhlbHAtRXZlbnRFZGl0ZWQnXSA9ICcKPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgZXZlbnQgaXMgZWRpdGVkLjwvcD4KPGg0PlBhcmFtZXRlcnM8L2g0Pgo8dWw+CjxsaT5cImV2ZW50XCIgLSAoYXJyYXkpIFRoZSBlbnRpcmUgZXZlbnQgcmVjb3JkPC9saT4KPGxpPlwiZXZlbnRfdGl0bGVcIiAtIEV2ZW50IFRpdGxlPC9saT4KPGxpPlwiZXZlbnRfc3VtbWFyeVwiIC0gU3VtbWFyeSBUZXh0PC9saT4KPGxpPlwiZXZlbnRfZGV0YWlsc1wiIC0gRGV0YWlsZWQgRGVzY3JpcHRpb248L2xpPgo8bGk+XCJldmVudF9kYXRlX3N0YXJ0XCIgLSBUaGUgZXZlbnQgc3RhcnQgZGF0ZS90aW1lPC9saT4KPGxpPlwiZXZlbnRfZGF0ZV9lbmRcIiAtIFRoZSBldmVudCBlbmQgZGF0ZS90aW1lPC9saT4KPGxpPlwiZXZlbnRfY3JlYXRlZF9ieVwiIC0gVGhlIHVzZXJpZCBvZiB0aGUgYXV0aG9yPC9saT4KPGxpPlwiZXZlbnRfaWRcIiAtIFRoZSBldmVudCBpZDwvbGk+CjwvdWw+Cic7CiRsYW5nWydldmVudGhlbHAtRXZlbnREZWxldGVkJ10gPSAnCjxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIGRlbGV0ZWQuPC9wPgo8aDQ+UGFyYW1ldGVyczwvaDQ+Cjx1bD4KPGxpPlwiZXZlbnRfaWRcIiAtIFRoZSBldmVudCBpZDwvbGk+CjwvdWw+Cic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlBZGRlZCddID0gJwo8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBjYXRlZ29yeSBpcyBhZGRlZC48L3A+CjxoND5QYXJhbWV0ZXJzPC9oND4KPHVsPgo8bGk+XCJjYXRlZ29yeV9pZFwiIC0gVGhlIGNhdGVnb3J5IGlkPC9saT4KPC91bD4KJzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeUVkaXRlZCddID0gJwo8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBjYXRlZ29yeSBpcyBlZGl0ZWQuPC9wPgo8aDQ+UGFyYW1ldGVyczwvaDQ+Cjx1bD4KPGxpPlwiY2F0ZWdvcnlfaWRcIiAtIFRoZSBjYXRlZ29yeSBpZDwvbGk+CjxsaT5cImNhdGVnb3J5X25hbWVcIiAtIFRoZSBjYXRlZ29yeSBuYW1lPC9saT4KPGxpPlwiY2F0ZWdvcnlfb3JkZXJcIiAtIFRoZSBjYXRlZ29yeSBzb3J0IG9yZGVyPC9saT4KPC91bD4KJzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeURlbGV0ZWQnXSA9ICcKPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgY2F0ZWdvcnkgaXMgZGVsZXRlZC48L3A+CjxoND5QYXJhbWV0ZXJzPC9oND4KPHVsPgo8bGk+XCJjYXRlZ29yeV9pZFwiIC0gVGhlIGNhdGVnb3J5IGlkPC9saT4KPGxpPlwiY2F0ZWdvcnlfbmFtZVwiIC0gVGhlIGNhdGVnb3J5IG5hbWU8L2xpPgo8bGk+XCJjYXRlZ29yeV9vcmRlclwiIC0gVGhlIGNhdGVnb3J5IHNvcnQgb3JkZXI8L2xpPgo8L3VsPgonOwoKJGxhbmdbJ2Vycm9yX2Nzdl9pbnNlcnQnXSA9ICdFcnJvciBpbXBvcnRpbmcgZXZlbnQgZnJvbSBjc3YgYXQgbGluZSAlZCc7CiRsYW5nWydlcnJvcl9jc3ZmaXJzdGxpbmVmbGRub3Rmb3VuZCddID0gJ0EgcmVxdWlyZWQgZmllbGQ6ICVzLCBjb3VsZCBub3QgYmUgZm91bmQgaW4gdGhlIGNzdiBmaWxlIGhlYWRlciBsaW5lJzsKJGxhbmdbJ2Vycm9yX2NzdmludmFsaWRmaXJzdGxpbmUnXSA9ICdDb3VsZCBub3QgZmluZCBhIHZhbGlkIGZpcnN0IGxpbmUgb2YgdGhlIENTViBmaWxlJzsKJGxhbmdbJ21zZ19ldmVudGFkZGVkJ10gPSAnRXZlbnQgQWRkZWQnOwokbGFuZ1snZXJyb3Jfbm9ldmVudG5hbWUnXSA9ICdBIHRpdGxlIGZvciB0aGUgZXZlbnQgaXMgcmVxdWlyZWQnOwokbGFuZ1snZXJyb3Jfbm91cGxvYWQnXSA9ICdFUlJPUjogTm8gdXBsb2FkZWQgZmlsZSBmb3VuZCc7CiRsYW5nWydlcnJvcl9pbnZhbGlkZmlsZW5hbWUnXSA9ICdFUlJPUjogVGhlIGZpbGUgdXBsb2FkZWQgY2Fubm90IGJlIGFjY2VwdGVkJzsKJGxhbmdbJ2Vycm9yX3Byb2JsZW13aXRodXBsb2FkJ10gPSAnRVJST1I6IEEgcHJvYmxlbSBvY2N1cnJlZCB0cnlpbmcgdG8gdXBsb2FkIHRoZSBmaWxlJzsKJGxhbmdbJ2Vycm9yX2ZpbGVjb3B5ZmFpbGVkJ10gPSAnRVJST1I6IEEgUHJvYmxlbSBvY2N1cnJlZCB3aGVuIGNvcHlpbmcgdGhlIGZpbGUgdG8gaXRzIGZpbmFsIGRlc3RpbmF0aW9uJzsKJGxhbmdbJ2Vycm9yX2ZpbGVleGlzdHMnXSA9ICdFUlJPUjogQSBmaWxlIGJ5IHRoYXQgbmFtZSBhbHJlYWR5IGV4aXN0cyc7CiRsYW5nWydlcnJvcl9jc3ZmaWxlbm90Zm91bmQnXSA9ICdFUlJPUjogQ291bGQgbm90IGZpbmQgdGhlIENTViBGaWxlJzsKJGxhbmdbJ2Vycm9yX2NhbnRvcGVuZmlsZSddID0gJ0VSUk9SOiBDYW5ub3Qgb3BlbiBmaWxlJzsKJGxhbmdbJ2Vycm9yX2NhdGVnb3J5ZXhpc3RzJ10gPSAnRVJST1I6IEEgY2F0ZWdvcnkgd2l0aCB0aGUgbmFtZSAlcyBhbHJlYWR5IGV4aXN0cyc7CgokbGFuZ1snY2FsX2lkJ10gPSAnSWQnOwokbGFuZ1snY2FsX2NhbGVuZGFyJ10gPSAnQ2FsZ3V5cyBDYWxlbmRhcic7CiRsYW5nWydjYWxfZGVzY3JpcHRpb24nXSA9ICdBZGQsIGVkaXQgYW5kIHJlbW92ZSBldmVudHMnOwokbGFuZ1snY2FsX2FkZGV2ZW50J10gPSAnQWRkIGV2ZW50JzsKJGxhbmdbJ2NhbF9pbXBvcnRfZXZlbnRzJ10gPSAnSW1wb3J0IGV2ZW50cyc7CiRsYW5nWydjYWxfZXZlbnRzJ10gPSAnRXZlbnRzJzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzJ10gPSAnQ2F0ZWdvcmllcyc7CiRsYW5nWydjYWxfc2V0dGluZ3MnXSA9ICdTZXR0aW5ncyc7CiRsYW5nWydjYWxfcHJldiddID0gJyZsYXF1bzsgUHJldic7CiRsYW5nWydjYWxfbmV4dCddID0gJ05leHQgJnJhcXVvOyc7CgokbGFuZ1snY2FsX2NhdGVnb3JpZXNfdXBkYXRlZCddID0gJ0NhdGVnb3JpZXMgdXBkYXRlZCc7CiRsYW5nWydjYWxfc2V0dGluZ3NfdXBkYXRlZCddID0gJ1NldHRpbmdzIHVwZGF0ZWQnOwokbGFuZ1snY2FsX2FkZF9ldmVudCddID0gJ0FkZCBldmVudCc7CiRsYW5nWydjYWxfZWRpdCddID0gJ0VkaXQgdGhpcyBldmVudCc7CiRsYW5nWydjYWxfZGVsZXRlJ10gPSAnRGVsZXRlIHRoaXMgZXZlbnQnOwokbGFuZ1snY2FsX2FyZXlvdXN1cmUnXSA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgaXRlbT8nOwoKJGxhbmdbJ2NhbF9zdW5kYXknXSA9ICdTdW5kYXknOwokbGFuZ1snY2FsX21vbmRheSddID0gJ01vbmRheSc7CiRsYW5nWydjYWxfdHVlc2RheSddID0gJ1R1ZXNkYXknOwokbGFuZ1snY2FsX3dlZG5lc2RheSddID0gJ1dlZG5lc2RheSc7CiRsYW5nWydjYWxfdGh1cnNkYXknXSA9ICdUaHVyc2RheSc7CiRsYW5nWydjYWxfZnJpZGF5J10gPSAnRnJpZGF5JzsKJGxhbmdbJ2NhbF9zYXR1cmRheSddID0gJ1NhdHVyZGF5JzsKJGxhbmdbJ2NhbF9zdW4nXSA9ICdTdW4nOwokbGFuZ1snY2FsX21vbiddID0gJ01vbic7CiRsYW5nWydjYWxfdHVlcyddID0gJ1R1ZSc7CiRsYW5nWydjYWxfd2VkJ10gPSAnV2VkJzsKJGxhbmdbJ2NhbF90aHVycyddID0gJ1RodSc7CiRsYW5nWydjYWxfZnJpJ10gPSAnRnJpJzsKJGxhbmdbJ2NhbF9zYXQnXSA9ICdTYXQnOwoKJGxhbmdbJ2NhbF9qYW51YXJ5J10gPSAnSmFudWFyeSc7CiRsYW5nWydjYWxfZmVicnVhcnknXSA9ICdGZWJydWFyeSc7CiRsYW5nWydjYWxfbWFyY2gnXSA9ICdNYXJjaCc7CiRsYW5nWydjYWxfYXByaWwnXSA9ICdBcHJpbCc7CiRsYW5nWydjYWxfbWF5J10gPSAnTWF5JzsKJGxhbmdbJ2NhbF9qdW5lJ10gPSAnSnVuZSc7CiRsYW5nWydjYWxfanVseSddID0gJ0p1bHknOwokbGFuZ1snY2FsX2F1Z3VzdCddID0gJ0F1Z3VzdCc7CiRsYW5nWydjYWxfc2VwdGVtYmVyJ10gPSAnU2VwdGVtYmVyJzsKJGxhbmdbJ2NhbF9vY3RvYmVyJ10gPSAnT2N0b2Jlcic7CiRsYW5nWydjYWxfbm92ZW1iZXInXSA9ICdOb3ZlbWJlcic7CiRsYW5nWydjYWxfZGVjZW1iZXInXSA9ICdEZWNlbWJlcic7CgokbGFuZ1snY2FsX2FkZCddID0gJ0FkZCc7CiRsYW5nWydjYWxfdXBkYXRlJ10gPSAnVXBkYXRlJzsKJGxhbmdbJ2NhbF9ldmVudCddID0gJ0V2ZW50JzsKJGxhbmdbJ2NhbF9kYXRlJ10gPSAnRGF0ZSc7CiRsYW5nWydjYWxfc3VtbWFyeSddID0gJ1N1bW1hcnknOwokbGFuZ1snY2FsX2RldGFpbHMnXSA9ICdEZXRhaWxzJzsKJGxhbmdbJ2NhbF9tb3JlJ10gPSAnbW9yZSA+Pic7CiRsYW5nWydjYWxfcmV0dXJuJ10gPSAnUmV0dXJuJzsKJGxhbmdbJ2NhbF90byddID0gJ3RvJzsKJGxhbmdbJ2NhbF9wYXN0X2V2ZW50cyddID0gJ1Bhc3QgZXZlbnRzJzsKJGxhbmdbJ2NhbF91cGNvbWluZ19ldmVudHMnXSA9ICdVcGNvbWluZyBldmVudHMnOwokbGFuZ1snY2FsX2FueV9jYXRlZ29yeSddID0gJ0FueSBjYXRlZ29yeSc7CiRsYW5nWydjYWxfc2hvd19vbmx5X2V2ZW50c19pbiddID0gJ1Nob3cgb25seSBldmVudHMgaW4nOwokbGFuZ1snY2FsX2ZpbHRlcl9ieSddID0gJ1NlYXJjaCB0aXRsZSA8ZW0+KHJlZ2V4KTwvZW0+JzsKJGxhbmdbJ2NhbF9nbyddID0gJ0dvJzsKJGxhbmdbJ2NhbF90aXRsZSddID0gJ1RpdGxlJzsKJGxhbmdbJ2NhbF9mcm9tZGF0ZSddID0gJ1N0YXJ0IERhdGUnOwokbGFuZ1snY2FsX3RvZGF0ZSddID0gJ1RvIERhdGUnOwokbGFuZ1snY2FsX3N1bW1hcnknXSA9ICdTdW1tYXJ5JzsKJGxhbmdbJ2NhbF9kZXNjcmlwdGlvbiddID0gJ0EgZnVsbCBmZWF0dXJlZCwgYW5kIGZsZXhpYmxlIG1vZHVsZSB0byBhbGxvdyBkaXNwbGF5aW5nIGluZm9ybWF0aW9uIGFib3V0IGV2ZW50cyBpbiBudW1lcm91cyBmb3JtYXRzLic7CiRsYW5nWydjYWxfdXBkYXRlX2NhdGVnb3JpZXMnXSA9ICdVcGRhdGUgQ2F0ZWdvcmllcyc7CiRsYW5nWydjYWxfbGFuZ3VhZ2UnXSA9ICdMYW5ndWFnZSc7CiRsYW5nWydjYWxfdXBkYXRlc2V0dGluZ3MnXSA9ICdVcGRhdGUgU2V0dGluZ3MnOwokbGFuZ1snY2FsX3VzZV90d2VsdmVfaG91cl9jbG9jayddID0gJ1VzZSB0d2VsdmUgaG91ciBjbG9jayBvbiBob3VyIGRyb3AtZG93bnM/JzsKJGxhbmdbJ2NhbF9kZWZhdWx0X2NhdGVnb3J5J10gPSAnRGVmYXVsdCBDYXRlZ29yeSc7CiRsYW5nWydjYWxfdXBkYXRlX2ZpZWxkcyddID0gJ1VwZGF0ZSBGaWVsZHMnOwokbGFuZ1snZm9yY2VfY2F0ZWdvcnknXT0nRm9yY2UgYXQgbGVhc3Qgb25lIGNhdGVnb3J5JzsKJGxhbmdbJ3Nob3dwYXN0eWVhcnMnXT0nSG93IG1hbnkgeWVhcnMgaW4gdGhlIHBhc3QgaXMgYWxsb3dlZCc7CiRsYW5nWydzaG93ZnV0dXJleWVhcnMnXT0nSG93IG1hbnkgeWVhciBpbnRvIHRoZSBmdXR1cmUgaXMgYWxsb3dlZCc7CiRsYW5nWydoaWRlc3VtbWFyeSddPSdTaG91bGQgdGhlIHN1bW1hcnkgZmllbGQgYmUgaGlkZGVuJzsKJGxhbmdbJ2hpZGVjb250ZW50J109J1Nob3VsZCB0aGUgY29udGVudCBmaWVsZCBiZSBoaWRkZW4nOwoKJGxhbmdbJ2NhdGVnb3J5X3JlbWluZGVyJ109J1BsZWFzZSBjaGVjayBvbmUgb3IgbW9yZSBjYXRlZ29yaWVzIGZvciB0aGlzIGV2ZW50JzsKJGxhbmdbIm1vZHVsZV9leGFtcGxlX3N0eWxlc2hlZXQiXT0iQ2FsZ3V5cyBDYWxlbmRhciBDU1MgZXhhbXBsZSI7CgokbGFuZ1snZXJyb3JfcGVybWlzc2lvbiddID0gJ1lvdSBkbyBub3QgaGF2ZSB0aGUgYXBwcm9wcmlhdGUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhpcyBmdW5jdGlvbmFsaXR5IChvciB5b3UgbWF5IG5vdCBvd24gdGhlIGV2ZW50IHlvdSBhcmUgdHJ5aW5nIHRvIG1vZGlmeSknOwokbGFuZ1snaW5zdGFsbF9wb3N0bWVzc2FnZSddID0gJ01ha2Ugc3VyZSB0byBzZXQgdGhlICJNb2RpZnkgQ2FsZW5kYXIiIHBlcm1pc3Npb24gb24gdXNlcnMgd2hvIHdpbGwgYmUgYWRtaW5pc3RlcmluZyBjYWxlbmRhciBldmVudHMuJzsKCiRsYW5nWyJkZWxldGV0YWdnZWQiXT0iRGVsZXRlIHRhZ2dlZCBldmVudHMiOwokbGFuZ1siY29uZmlybWRlbGV0ZXRhZ2dlZCJdPSJBcmUgeW91IHN1cmUgdGhlc2UgZXZlbnRzIHNob3VsZCBiZSBkZWxldGVkPyI7CiRsYW5nWyJ0YWdnZWRkZWxldGVkIl09IlRhZ2dlZCBldmVudHMgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQiOwokbGFuZ1sndGVtcGxhdGVzJ10gPSAnVGVtcGxhdGVzJzsKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnVGVtcGxhdGUnOwokbGFuZ1sndmlld19kZWZhdWx0X3N0eWxlc2hlZXQnXSA9ICdWaWV3IERlZmF1bHQgU3R5bGVzaGVldCc7CiRsYW5nWydmaWxlbmFtZSddID0gJ0ZpbGVuYW1lJzsKJGxhbmdbInNldHRpbmdzc2F2ZWQiXT0iU2V0dGluZ3Mgd2VyZSBzYXZlZCBzdWNjZXNzZnVsbHkiOwokbGFuZ1siY2F0ZWdvcnlkZWxldGVkIl09IkNhdGVnb3J5IGRlbGV0ZWQiOwokbGFuZ1siY2F0ZWdvcnl1cGRhdGVkIl09IkNhdGVnb3J5IHVwZGF0ZWQiOwokbGFuZ1siY2F0ZWdvcnlhZGRlZCJdPSJDYXRlZ29yeSBhZGRlZCI7CiRsYW5nWyJldmVudGRlbGV0ZWQiXT0iRXZlbnQocykgZGVsZXRlZCBzdWNjZXNzZnVsbHkiOwokbGFuZ1siZXZlbnR1cGRhdGVkIl09IlRoZSBldmVudCB3YXMgdXBkYXRlZCI7CiRsYW5nWydkZWZhdWx0X3BhZ2VfZXJyb3InXSA9ICdFcnJvcjogWW91IG11c3Qgc2V0IGEgZGVmYXVsdCBwYWdlIGluIG9yZGVyIHRvIHVzZSBDYWxlbmRhciB3aXRoIHByZXR0eSBVUkxzIHR1cm5lZCBvbi4gUGxlYXNlIGdvIHRvIHRoZSBDYWxlbmRhciBzZXR0aW5ncyB0YWIgYW5kIGNob29zZSBvbmUuJzsKJGxhbmdbInRpbWVfYXQiXT0iYXQiOwokbGFuZ1sndHlwZSddPSdUeXBlJzsKJGxhbmdbIm5hbWUiXT0iTmFtZSI7CiRsYW5nWyJvcmRlciJdPSJPcmRlciI7CgokbGFuZ1snZmllbGRhZGRlZCddID0gJ0ZpZWxkIFN1Y2Nlc3NmdWxseSBBZGRlZCc7CiRsYW5nWydmaWVsZGRlbGV0ZWQnXSA9ICdGaWVsZCBEZWxldGVkJzsKJGxhbmdbJ2ZpZWxkcyddID0gJ0N1c3RvbSBGaWVsZHMnOwokbGFuZ1sndGV4dGZpZWxkJ10gPSAnVGV4dCBGaWVsZCc7CiRsYW5nWyd1cGxvYWRmaWVsZCddID0gJ0ZpbGUgdXBsb2FkIGZpZWxkJzsKJGxhbmdbImRlc2NyaXB0aW9uIl09IkNHQ2FsZW5kYXIgaXMgYSBtb2R1bGUgZm9yIGRpc3BsYXlpbmcgYW5kIG1hbmFnaW5nIGV2ZW50cyBvbiB5b3VyIHdlYnNpdGUiOwokbGFuZ1snZGVmYXVsdGNhbGVuZGFycGFnZSddID0gJ0RlZmF1bHQgZXZlbnQgdmlldyBwYWdlJzsKJGxhbmdbJ3VwbG9hZGRpcmVjdG9yeSddID0gJ0RpcmVjdG9yeSB3aGVyZSBmaWxlIHVwbG9hZHMgc2hvdWxkIGJlIHBsYWNlZCc7CiRsYW5nWyd1cGxvYWRmaWxldHlwZXMnXSA9ICdBbGxvd2VkIGZpbGUgdHlwZXMnOwokbGFuZ1sndXBsb2FkdW5pcXVlJ10gPSAnRW5zdXJlIHVuaXF1ZSBmaWxlbmFtZXMnOwoKJGxhbmdbJ2NhbF9yZWN1cl9wZXJpb2QnXSA9ICdSZWN1cnMnOwokbGFuZ1snY2FsX3JlY3VyX3VudGlsJ10gPSAnUmVjdXJzIFVudGlsJzsKCgokbGFuZ1snaGVscF90ZW1wbGF0ZSddID0gJwo8cD48Yj5QcmludCBBdXRob3IgTmFtZTo8L2I+PC9wPgo8Y29kZT5BdXRob3I6IHskZXZlbnQuYXV0aG9ybmFtZX08L2NvZGU+Cic7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/ca_ES.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ21heCddID0gJ20mYWdyYXZlO3hpbSc7CiRsYW5nWyd0aW1lcyddID0gJ3ZlZ2FkZXMnOwokbGFuZ1snb24nXSA9ICdhJzsKJGxhbmdbJ2FyZXlvdXN1cmVfdW5pbnN0YWxsJ10gPSAnTiYjMDM5O2VzdCZhZ3JhdmU7cyBzZWd1ciBxdWUgdm9scyBmZXIgYWl4Jm9ncmF2ZTs/IFNpIGNvbnRpbnVlcywgZXNib3JyYXImYWdyYXZlO3MgcGVybWFuZW50bWVudCB0b3RlcyBsZXMgZGFkZXMgYXNzb2NpYWRlcyBhIGFxdWVzdCBtJm9ncmF2ZTtkdWwuJzsKJGxhbmdbJ3Bvc3RfdW5pbnN0YWxsJ10gPSAnRWwgbSZvZ3JhdmU7ZHVsIENhbGVuZGFyaSBoYSBlc3RhdCBkZXNpbnN0YWwubGF0IGkgdG90YSBsYSBpbmZvcm1hY2kmb2FjdXRlOyBkJiMwMzk7ZXNkZXZlbmltZW50cyBpIHBsYW54ZXRlcyBhc3NpY2lhZGEgYSBhcXVlc3QgbSZvZ3JhdmU7ZHVsIGhhIGVzdGF0IGVsaW1pbmFkYS4nOwokbGFuZ1snZmllbGR1cGRhdGVkJ10gPSAnQ2FtcCBhY3R1YWxpdHphdCc7CiRsYW5nWydldmVyeSddID0gJ0NhZGEnOwokbGFuZ1snb3InXSA9ICdvJzsKJGxhbmdbJ3VwZGF0ZV9jaGlsZHJlbiddID0gJ0FjdHVhbGl0emEgZWxzIGV2ZW50IGZpbGxzJzsKJGxhbmdbJ2Vycm9yX25vY2F0ZWdvcnknXSA9ICdDYWwgcXVlIHRyaSZpdW1sO3MgYWxlbW55cyB1bmEgY2F0ZWdvcmlhJzsKJGxhbmdbJ2Vycm9yX25vdGhpbmdzZWxlY3RlZCddID0gJ05vIHMmIzAzOTtoYSB0cmlhdCByZXMgcGVyIGVzYm9ycmFyJzsKJGxhbmdbJ2Vycm9yX2V2ZW50b3ZlcmxhcCddID0gJ0VscyBwYXImYWdyYXZlO21ldHJlcyBxdWUgaGFzIGVzcGVjaWZpY2F0IHBlciBsJiMwMzk7ZXNkZXZlbmltZW50IHJlY3VycmVudCByZXN1bHRhcmFuIGVuIGVzZGV2ZW5pbWVudHMgc29icmVwb3NhdHMuJzsKJGxhbmdbJ3JlY3VycyddID0gJ1JlcGV0ZWl4JzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRfZGF0ZXMnXSA9ICdVbmEgbyBtJmVhY3V0ZTtzIGRlIGxlcyBkYXRlcyBlbnRyYWRlcyBlcmEgaW52JmFncmF2ZTtsaWRhJzsKJGxhbmdbJ3N1bmRheSddID0gJ0RpdW1lbmdlJzsKJGxhbmdbJ21vbmRheSddID0gJ0RpbGx1bnMnOwokbGFuZ1sndHVlc2RheSddID0gJ0RpbWFydHMnOwokbGFuZ1snd2VkbmVzZGF5J10gPSAnRGltZWNyZXMnOwokbGFuZ1sndGh1cnNkYXknXSA9ICdEaWpvdXMnOwokbGFuZ1snZnJpZGF5J10gPSAnRGl2ZW5kcmVzJzsKJGxhbmdbJ3NhdHVyZGF5J10gPSAnRGlzc2FidGUnOwokbGFuZ1snYWJicl9zdW5kYXknXSA9ICdEZyc7CiRsYW5nWydhYmJyX21vbmRheSddID0gJ0RsJzsKJGxhbmdbJ2FiYnJfdHVlc2RheSddID0gJ0RtJzsKJGxhbmdbJ2FiYnJfd2VkbmVzZGF5J10gPSAnRGMnOwokbGFuZ1snYWJicl90aHVyc2RheSddID0gJ0RqJzsKJGxhbmdbJ2FiYnJfZnJpZGF5J10gPSAnRHYnOwokbGFuZ1snYWJicl9zYXR1cmRheSddID0gJ0RzJzsKJGxhbmdbJ3dlZWtkYXlzJ10gPSAnRGllcyBkZSBjYWRhIGRpYSc7CiRsYW5nWydwbHVyYWxfZGFpbHknXSA9ICdEaWVzJzsKJGxhbmdbJ3BsdXJhbF93ZWVrbHknXSA9ICdTZXRtYW5lcyc7CiRsYW5nWydwbHVyYWxfbW9udGhseSddID0gJ01lc29zJzsKJGxhbmdbJ3BsdXJhbF95ZWFybHknXSA9ICdBbnlzJzsKJGxhbmdbJ25vJ10gPSAnTm8nOwokbGFuZ1snZGFpbHknXSA9ICdEaSZhZ3JhdmU7cmlhbWVudCc7CiRsYW5nWyd3ZWVrbHknXSA9ICdTZXRtYW5hbG1lbnQnOwokbGFuZ1snbW9udGhseSddID0gJ01lbnN1YWxtZW50JzsKJGxhbmdbJ3llYXJseSddID0gJ0FudWFsbWFuZXQnOwokbGFuZ1snaW50ZXJ2YWwnXSA9ICdSZXBldGVpeCBjYWRhJzsKJGxhbmdbJ2NhbF9yZWN1cl9kZXRhaWxzJ10gPSAnRGV0YWxscyBkJiMwMzk7ZXNkZXZlbmltZW50IHJlY3VycmVudC4nOwokbGFuZ1sndW5saW1pdGVkJ10gPSAnSWwubGltaXRhdCc7CiRsYW5nWydtYXhfcmVjdXJfZXZlbnRzJ10gPSAnTm9tYnJlIG0mYWdyYXZlO3hpbSBkJiMwMzk7ZXNkZXZlbmltZW50cyBmaWxscyc7CiRsYW5nWyd1c2VfdG9fZGF0ZSddID0gJ0VzcGVjaWZpY2EgdW5hIGRhdGEgZGUgZmluYWwgZGlmZXJlbnQ/JzsKJGxhbmdbJ2NhbmNlbCddID0gJ0NhbmNlbC5sYSc7CiRsYW5nWydzaG93X2NoaWxkX2V2ZW50cyddID0gJ01vc3RyYSBlc2RldmVuaW1lbnRzIGZpbGxzIDxlbT4ocG90IHJlc3VsdGFyIGVuIHVuYSBsbGlzdGEgbW9sdCBsbGFyZ2EpPC9lbT4nOwokbGFuZ1snbi9hJ10gPSAnbi9hJzsKJGxhbmdbJ3JlY3Vyc191bnRpbCddID0gJ1JlcGV0aXIgZmlucyc7CiRsYW5nWydwYXJlbnQnXSA9ICdQYXJlJzsKJGxhbmdbJ3JlY3VyX3BlcmlvZCddID0gJ1BlcmlvZGUgZGUgcmVwZXRpY2kmb2FjdXRlOyc7CiRsYW5nWydmaWx0ZXInXSA9ICdGaWx0cmUnOwokbGFuZ1snc3RhcnRfZGF0ZSddID0gJ0RhdGEgaW5pY2lhbCc7CiRsYW5nWydlbmRfZGF0ZSddID0gJ0RhdGEgZmluYWwnOwokbGFuZ1snaW5mb191cGNvbWluZ2xpc3RfdGVtcGxhdGVfdGFiJ10gPSAnTGEgbGxpc3RhIGRlIHBsYW50aWxsZXMgcXVlIGVzdGFuIGRpc3BvbmlibGVzIHBlciBsZXMgdmlzdGVzIGRlIFByb3BlcnMgRXNkZXZlJzsKJGxhbmdbJ3VwY29taW5nbGlzdHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZmVnZWl4L21vZGlmaWNhIHVuYSBwbGFudGlsbGEgZCYjMDM5O0VzZGV2ZW5pbWVudCBQcm9wZXInOwokbGFuZ1snaW5mb19zeXNkZmx0X3VwY29taW5nbGlzdF90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IFVwY29taW5nbGlzdCBUZW1wbGF0ZSc7CiRsYW5nWydpbmZvX2xpc3RfdGVtcGxhdGVfdGFiJ10gPSAnVGhlIGxpc3Qgb2YgdGVtcGxhdGVzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgbGlzdCB2aWV3cyc7CiRsYW5nWydsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ0FkZC9FZGl0IGFuIExpc3QgRGlzcGxheSBUZW1wbGF0ZSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfbGlzdF90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IExpc3QgVGVtcGxhdGUnOwokbGFuZ1snaW5mb19ldmVudF90ZW1wbGF0ZV90YWInXSA9ICdUaGUgbGlzdCBvZiB0ZW1wbGF0ZXMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBldmVudCB2aWV3cyc7CiRsYW5nWydldmVudHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZGQvRWRpdCBhbiBFdmVudCBEaXNwbGF5IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9ldmVudF90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IEV2ZW50IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fY2FsZW5kYXJfdGVtcGxhdGVfdGFiJ10gPSAnVGhlIGxpc3Qgb2YgdGVtcGxhdGVzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgY2FsZW5kYXIgdmlld3MnOwokbGFuZ1snY2FsZW5kYXJ0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnQWRkL0VkaXQgYSBDYWxlbmRhciBEaXNwbGF5IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IENhbGVuZGFyIFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF90ZW1wbGF0ZSddID0gJ1RoaXMgZm9ybSBkZWZpbmVzIHRoZSB0ZW1wbGF0ZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIHlvdSBjbGljayAmcXVvdDtOZXcgVGVtcGxhdGUmcXVvdDsgaW4gdGhlIGFwcHJvcHJpYXRlIHRhYi4gIENoYW5naW5nIHRoaXMgdmFsdWUgd2lsbCBoYXZlIG5vIGltbWVkaWF0ZSBlZmZlY3Qgb24gdGhlIGRpc3BsYXlzIGdlbmVyYXRlZCBmcm9tIHRoaXMgbW9kdWxlLic7CiRsYW5nWydldmVudGRlc2MtRXZlbnRBZGRlZCddID0gJ0NyaWRhdCBkZXNwciZlYWN1dGU7cyBkJiMwMzk7YWZlZ2lyIHVuIGVzZGV2ZW5pbWVudCBkZWwgY2FsZW5kYXJpJzsKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudEVkaXRlZCddID0gJ0NyaWRhdCBkZXNwciZlYWN1dGU7cyBkZSBtb2RpaWZjYXIgdW4gZXNkZXZlbmltZW50IGRlbCBjYWxlbmRhcmknOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RGVsZXRlZCddID0gJ0NyaWRhdCBkZXNwciZlYWN1dGU7cyBkJiMwMzk7ZXNib3JyYSB1biBlc2RldmVuaW1lbnQnOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5QWRkZWQnXSA9ICdDcmlkYXRzIGRlc3ByJmVhY3V0ZTtzIGRlIGNyZWFyIHVuYSBjYXRlZ29yaWEnOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5RWRpdGVkJ10gPSAnQ3JpZGF0IGRlc3ByJmVhY3V0ZTtzIGRlIG1vZGlmaWNhciB1bmEgY2F0ZWdvcmlhJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeURlbGV0ZWQnXSA9ICdDcmlkYXQgZGVzcHImZWFjdXRlO3MgZCYjMDM5O2VzYm9ycmFyIHVuYSBjYXRlZ29yaWEnOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50QWRkZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBldmVudCBpcyBhZGRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X3RpdGxlXCZxdW90OyAtIEV2ZW50IFRpdGxlPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfc3VtbWFyeVwmcXVvdDsgLSBTdW1tYXJ5IFRleHQ8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kZXRhaWxzXCZxdW90OyAtIERldGFpbGVkIERlc2NyaXB0aW9uPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9zdGFydFwmcXVvdDsgLSBUaGUgZXZlbnQgc3RhcnQgZGF0ZS90aW1lPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9lbmRcJnF1b3Q7IC0gVGhlIGV2ZW50IGVuZCBkYXRlL3RpbWU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9jcmVhdGVkX2J5XCZxdW90OyAtIFRoZSB1c2VyaWQgb2YgdGhlIGF1dGhvcjwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2lkXCZxdW90OyAtIFRoZSBldmVudCBpZDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudEVkaXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIGVkaXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X3RpdGxlXCZxdW90OyAtIEV2ZW50IFRpdGxlPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfc3VtbWFyeVwmcXVvdDsgLSBTdW1tYXJ5IFRleHQ8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kZXRhaWxzXCZxdW90OyAtIERldGFpbGVkIERlc2NyaXB0aW9uPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9zdGFydFwmcXVvdDsgLSBUaGUgZXZlbnQgc3RhcnQgZGF0ZS90aW1lPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9lbmRcJnF1b3Q7IC0gVGhlIGV2ZW50IGVuZCBkYXRlL3RpbWU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9jcmVhdGVkX2J5XCZxdW90OyAtIFRoZSB1c2VyaWQgb2YgdGhlIGF1dGhvcjwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2lkXCZxdW90OyAtIFRoZSBldmVudCBpZDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudERlbGV0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBldmVudCBpcyBkZWxldGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7ZXZlbnRfaWRcJnF1b3Q7IC0gVGhlIGV2ZW50IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5QWRkZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBjYXRlZ29yeSBpcyBhZGRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2NhdGVnb3J5X2lkXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBpZDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeUVkaXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGNhdGVnb3J5IGlzIGVkaXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2NhdGVnb3J5X2lkXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBpZDwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X25hbWVcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IG5hbWU8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9vcmRlclwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgc29ydCBvcmRlcjwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeURlbGV0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBjYXRlZ29yeSBpcyBkZWxldGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfaWRcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IGlkPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfbmFtZVwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgbmFtZTwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X29yZGVyXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBzb3J0IG9yZGVyPC9saT4NCjwvdWw+DQonOwokbGFuZ1snbXNnX2V2ZW50YWRkZWQnXSA9ICdFdmVudCBBZGRlZCc7CiRsYW5nWydlcnJvcl9ub2V2ZW50bmFtZSddID0gJ0EgbmFtZSBmb3IgdGhlIGV2ZW50IGlzIHJlcXVpcmVkJzsKJGxhbmdbJ2Vycm9yX25vdXBsb2FkJ10gPSAnRVJST1I6IE5vIHVwbG9hZGVkIGZpbGUgZm91bmQnOwokbGFuZ1snZXJyb3JfaW52YWxpZGZpbGVuYW1lJ10gPSAnRVJST1I6IFRoZSBmaWxlIHVwbG9hZGVkIGNhbm5vdCBiZSBhY2NlcHRlZCc7CiRsYW5nWydlcnJvcl9wcm9ibGVtd2l0aHVwbG9hZCddID0gJ0VSUk9SOiBBIHByb2JsZW0gb2NjdXJyZWQgdHJ5aW5nIHRvIHVwbG9hZCB0aGUgZmlsZSc7CiRsYW5nWydlcnJvcl9maWxlY29weWZhaWxlZCddID0gJ0VSUk9SOiBBIFByb2JsZW0gb2NjdXJyZWQgd2hlbiBjb3B5aW5nIHRoZSBmaWxlIHRvIGl0cyBmaW5hbCBkZXN0aW5hdGlvbic7CiRsYW5nWydlcnJvcl9maWxlZXhpc3RzJ10gPSAnRVJST1I6IEEgZmlsZSBieSB0aGF0IG5hbWUgYWxyZWFkeSBleGlzdHMnOwokbGFuZ1snZXJyb3JfY3N2ZmlsZW5vdGZvdW5kJ10gPSAnRVJST1I6IENvdWxkIG5vdCBmaW5kIHRoZSBDU1YgRmlsZSc7CiRsYW5nWydlcnJvcl9jYW50b3BlbmZpbGUnXSA9ICdFUlJPUjogQ2Fubm90IG9wZW4gZmlsZSc7CiRsYW5nWydlcnJvcl9jYXRlZ29yeWV4aXN0cyddID0gJ0VSUk9SOiBBIGNhdGVnb3J5IHdpdGggdGhlIG5hbWUgJXMgYWxyZWFkeSBleGlzdHMnOwokbGFuZ1snY2FsX2lkJ10gPSAnSWQnOwokbGFuZ1snY2FsX2NhbGVuZGFyJ10gPSAnQ2FsZW5kYXInOwokbGFuZ1snY2FsX2RlZmF1bHRfdGVtcGxhdGVzJ10gPSAnRGVmYXVsdCBUZW1wbGF0ZXMnOwokbGFuZ1snY2FsX2Rlc2NyaXB0aW9uJ10gPSAnQSBmdWxsIGZlYXR1cmVkLCBhbmQgZmxleGlibGUgbW9kdWxlIHRvIGFsbG93IGRpc3BsYXlpbmcgaW5mb3JtYXRpb24gYWJvdXQgZXZlbnRzIGluIG51bWVyb3VzIGZvcm1hdHMuJzsKJGxhbmdbJ2NhbF9hZGRldmVudCddID0gJ0FkZCBFdmVudCc7CiRsYW5nWydjYWxfaW1wb3J0X2V2ZW50cyddID0gJ0ltcG9ydCBFdmVudHMnOwokbGFuZ1snY2FsX2V2ZW50cyddID0gJ0V2ZW50cyc7CiRsYW5nWydjYWxfY2F0ZWdvcmllcyddID0gJ0NhdGVnb3JpZXMnOwokbGFuZ1snY2FsX2NhbGVuZGFyX3RlbXBsYXRlJ10gPSAnQ2FsZW5kYXIgVGVtcGxhdGVzJzsKJGxhbmdbJ2NhbF9saXN0X3RlbXBsYXRlJ10gPSAnTGlzdCBUZW1wbGF0ZXMnOwokbGFuZ1snY2FsX3VwY29taW5nbGlzdF90ZW1wbGF0ZSddID0gJ1VwY29taW5nIFRlbXBsYXRlcyc7CiRsYW5nWydjYWxfZXZlbnRfdGVtcGxhdGUnXSA9ICdFdmVudCBUZW1wbGF0ZXMnOwokbGFuZ1snY2FsX3NldHRpbmdzJ10gPSAnU2V0dGluZ3MnOwokbGFuZ1snY2FsX3ByZXYnXSA9ICcmbGFxdW87IFByZXYnOwokbGFuZ1snY2FsX25leHQnXSA9ICdOZXh0ICZyYXF1bzsnOwokbGFuZ1snY2FsX2NhdGVnb3JpZXNfdXBkYXRlZCddID0gJ0NhdGVnb3JpZXMgVXBkYXRlZCc7CiRsYW5nWydjYWxfc2V0dGluZ3NfdXBkYXRlZCddID0gJ1NldHRpbmdzIFVwZGF0ZWQnOwokbGFuZ1snY2FsX2FkZF9ldmVudCddID0gJ0FkZCBFdmVudCc7CiRsYW5nWydjYWxfZWRpdCddID0gJ0VkaXQnOwokbGFuZ1snY2FsX2RlbGV0ZSddID0gJ0RlbGV0ZSc7CiRsYW5nWydjYWxfYXJleW91c3VyZSddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUnOwokbGFuZ1snY2FsX3VwZGF0ZV90ZW1wbGF0ZSddID0gJ1VwZGF0ZSBUZW1wbGF0ZSc7CiRsYW5nWydjYWxfc3VuZGF5J10gPSAnRGl1bWVuZ2UnOwokbGFuZ1snY2FsX21vbmRheSddID0gJ0RpbGx1bnMnOwokbGFuZ1snY2FsX3R1ZXNkYXknXSA9ICdEaW1hcnRzJzsKJGxhbmdbJ2NhbF93ZWRuZXNkYXknXSA9ICdEaW1lY3Jlcyc7CiRsYW5nWydjYWxfdGh1cnNkYXknXSA9ICdEaWpvdXMnOwokbGFuZ1snY2FsX2ZyaWRheSddID0gJ0RpdmVuZHJlcyc7CiRsYW5nWydjYWxfc2F0dXJkYXknXSA9ICdEaXNzYWJ0ZSc7CiRsYW5nWydjYWxfc3VuJ10gPSAnRGcnOwokbGFuZ1snY2FsX21vbiddID0gJ0RsJzsKJGxhbmdbJ2NhbF90dWVzJ10gPSAnRG0nOwokbGFuZ1snY2FsX3dlZCddID0gJ0RjJzsKJGxhbmdbJ2NhbF90aHVycyddID0gJ0RqJzsKJGxhbmdbJ2NhbF9mcmknXSA9ICdEdic7CiRsYW5nWydjYWxfc2F0J10gPSAnRHMnOwokbGFuZ1snY2FsX2phbnVhcnknXSA9ICdHZW5lcic7CiRsYW5nWydjYWxfZmVicnVhcnknXSA9ICdGZWJyZXInOwokbGFuZ1snY2FsX21hcmNoJ10gPSAnTWFyJmNjZWRpbDsnOwokbGFuZ1snY2FsX2FwcmlsJ10gPSAnQWJyaWwnOwokbGFuZ1snY2FsX21heSddID0gJ01haWcnOwokbGFuZ1snY2FsX2p1bmUnXSA9ICdKdW55JzsKJGxhbmdbJ2NhbF9qdWx5J10gPSAnSnVsaW9sJzsKJGxhbmdbJ2NhbF9hdWd1c3QnXSA9ICdBZ29zdCc7CiRsYW5nWydjYWxfc2VwdGVtYmVyJ10gPSAnU2V0ZW1icmUnOwokbGFuZ1snY2FsX29jdG9iZXInXSA9ICdPY3R1YnJlJzsKJGxhbmdbJ2NhbF9ub3ZlbWJlciddID0gJ05vdmVtYnJlJzsKJGxhbmdbJ2NhbF9kZWNlbWJlciddID0gJ0Rlc2VtYnJlJzsKJGxhbmdbJ2NhbF9hZGQnXSA9ICdBZmVnZWl4JzsKJGxhbmdbJ2NhbF91cGRhdGUnXSA9ICdNb2RpZmljYSc7CiRsYW5nWydjYWxfZXZlbnQnXSA9ICdFc2RldmVuaW1lbnQnOwokbGFuZ1snY2FsX2RhdGUnXSA9ICdEYXRhJzsKJGxhbmdbJ2NhbF9zdW1tYXJ5J10gPSAnUmVzdW0nOwokbGFuZ1snY2FsX2RldGFpbHMnXSA9ICdEZXRhbGxzJzsKJGxhbmdbJ2NhbF9tb3JlJ10gPSAnbSZlYWN1dGU7cyA+Pic7CiRsYW5nWydjYWxfcmV0dXJuJ10gPSAnVHJvbmEnOwokbGFuZ1snY2FsX3RvJ10gPSAndG9hJzsKJGxhbmdbJ2NhbF9wYXN0X2V2ZW50cyddID0gJ0VzZGV2ZW5pbWVudHMgcGFzc2F0cyc7CiRsYW5nWydjYWxfdXBjb21pbmdfZXZlbnRzJ10gPSAnRXNkZXZlbmltZW50cyBwcm9wZXJzJzsKJGxhbmdbJ2NhbF9hbnlfY2F0ZWdvcnknXSA9ICdRdWFsc2V2b2wgY2F0ZWdvcmlhJzsKJGxhbmdbJ2NhbF9zaG93X29ubHlfZXZlbnRzX2luJ10gPSAnTW9zdHJhIG5vbSZlYWN1dGU7cyBlc2RldmVuaW1lbnRzIGVuICc7CiRsYW5nWydjYWxfZmlsdGVyX2J5J10gPSAnRmlsdHJhIFQmaWFjdXRlO3RvbCBwZXIgPGVtPihyZWdleCk8L2VtPic7CiRsYW5nWydjYWxfZ28nXSA9ICdWJmVhY3V0ZTtzJzsKJGxhbmdbJ2NhbF90aXRsZSddID0gJ1QmaWFjdXRlO3RvbCc7CiRsYW5nWydjYWxfZnJvbWRhdGUnXSA9ICdEZXMgZGUgbGEgZGF0YSc7CiRsYW5nWydjYWxfdG9kYXRlJ10gPSAnQSBsYSBkYXRhJzsKJGxhbmdbJ2NhbF91cGRhdGVfY2F0ZWdvcmllcyddID0gJ01vZGlmaWNhIGNhdGVnb3JpZXMnOwokbGFuZ1snY2FsX2xhbmd1YWdlJ10gPSAnSWRpb21hJzsKJGxhbmdbJ2NhbF91cGRhdGVzZXR0aW5ncyddID0gJ0FjdHVhbGl0emEgdmFsb3MgZGUgY29uZmlndXJhY2kmb2FjdXRlOyc7CiRsYW5nWydjYWxfdXNlX3R3ZWx2ZV9ob3VyX2Nsb2NrJ10gPSAnVXRpbGl0emEgcmVsbG90Z2UgZGUgZG90emUgaG9yZXMgZW4gZWxzIGRlc3BsZWdhYmxlcz8nOwokbGFuZ1snY2FsX2RlZmF1bHRfY2F0ZWdvcnknXSA9ICdDYXRlZ29yaWEgcGVyIGRlZmVjdGUnOwokbGFuZ1snY2FsX3VwZGF0ZV9maWVsZHMnXSA9ICdNb2RpZmljYSBjYW1wcyc7CiRsYW5nWydmb3JjZV9jYXRlZ29yeSddID0gJ0ZvciZjY2VkaWw7YSBhbG1lbnlzIHVuYSBjYXRlZ29yaWEnOwokbGFuZ1snc2hvd3Bhc3R5ZWFycyddID0gJ1F1YW50cyBhbnlzIGNhcCBhbCBwYXNzYXQgZXMgcGVybWV0ZW4nOwokbGFuZ1snc2hvd2Z1dHVyZXllYXJzJ10gPSAnUXVhbnRzIGFueXMgY2FwIGFsIGZ1dHVyIGVzIHBlcm1ldGVuJzsKJGxhbmdbJ2hpZGVzdW1tYXJ5J10gPSAnQ2FsIG9jdWx0YXIgZWwgY2FtcCBkZSByZXN1bSc7CiRsYW5nWydoaWRlY29udGVudCddID0gJ0NhbCBvY3VsdGFyIGVsIGNhbXAgZGUgY29udGluZ3V0JzsKJGxhbmdbJ2NhdGVnb3J5X3JlbWluZGVyJ10gPSAnU2kgZXQgcGxhdSwgdHJpYSB1bmEgbyBtJmVhY3V0ZTtzIGNhdGVnb3JpZXMgcGVyIGwmIzAzOTtlc2RldmVuaW1lbnQnOwokbGFuZ1snbW9kdWxlX2V4YW1wbGVfc3R5bGVzaGVldCddID0gJ0V4ZW1wbGUgZGUgQ2FsZW5kYXJpIENTUyc7CiRsYW5nWydlcnJvcl9wZXJtaXNzaW9uJ10gPSAnWW91IG5lZWQgdGhlIGFwcHJvcHJpYXRlIHBlcm1pc3Npb24gKCVzKSB0byBhY2Nlc3MgdGhpcyBmdW5jdGlvbmFsaXR5JzsKJGxhbmdbJ2luc3RhbGxfcG9zdG1lc3NhZ2UnXSA9ICdNYWtlIHN1cmUgdG8gc2V0IHRoZSAmcXVvdDtNb2RpZnkgQ2FsZW5kYXImcXVvdDsgcGVybWlzc2lvbiBvbiB1c2VycyB3aG8gd2lsbCBiZSBhZG1pbmlzdGVyaW5nIGNhbGVuZGFyIGV2ZW50cy4nOwokbGFuZ1snZGVsZXRldGFnZ2VkJ10gPSAnRGVsZXRlIHRhZ2dlZCBldmVudHMnOwokbGFuZ1snY29uZmlybWRlbGV0ZXRhZ2dlZCddID0gJ0FyZSB5b3Ugc3VyZSB0aGVzZSBldmVudHMgc2hvdWxkIGJlIGRlbGV0ZWQ/JzsKJGxhbmdbJ3RhZ2dlZGRlbGV0ZWQnXSA9ICdUYWdnZWQgZXZlbnRzIHN1Y2Nlc3NmdWxseSBkZWxldGVkJzsKJGxhbmdbJ3RlbXBsYXRlcyddID0gJ1RlbXBsYXRlcyc7CiRsYW5nWyd0ZW1wbGF0ZV9oZWxwJ10gPSAnVGVtcGxhdGUgSGVscCc7CiRsYW5nWydmaWxlX3RlbXBsYXRlcyddID0gJ0ZpbGUgVGVtcGxhdGVzJzsKJGxhbmdbJ2FkZHRlbXBsYXRlJ10gPSAnQWRkIFRlbXBsYXRlJzsKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnVGVtcGxhdGUnOwokbGFuZ1sndGVtcGxhdGVuYW1ldGV4dCddID0gJ1RlbXBsYXRlIE5hbWUnOwokbGFuZ1snZWRpdHRlbXBsYXRlJ10gPSAnRWRpdCBUZW1wbGF0ZSc7CiRsYW5nWydkZWxldGV0ZW1wbGF0ZSddID0gJ0RlbGV0ZSBUZW1wbGF0ZSc7CiRsYW5nWyduZXd0ZW1wbGF0ZSddID0gJ05ldyBUZW1wbGF0ZSBOYW1lJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZWV4aXN0cyddID0gJ0Vycm9yOiBBIHRlbXBsYXRlIHdpdGggdGhhdCBuYW1lIGFscmVhZHkgZXhpc3RzLiBQbGVhc2UgY2hvb3NlIGEgZGlmZmVyZW50IG5hbWUuJzsKJGxhbmdbJ3RlbXBsYXRlaW1wb3J0ZWQnXSA9ICdUaGUgdGVtcGxhdGUgd2FzIHN1Y2Vzc2Z1bGx5IGltcG9ydGVkIGludG8gdGhlIGRhdGFiYXNlIGFuZCBpcyBub3cgaW5zdGFsbGVkIGZvciB1c2UuJzsKJGxhbmdbJ3ZpZXdfZGVmYXVsdF9zdHlsZXNoZWV0J10gPSAnVmlldyBEZWZhdWx0IFN0eWxlc2hlZXQnOwokbGFuZ1snZmlsZW5hbWUnXSA9ICdGaWxlbmFtZSc7CiRsYW5nWydpbXBvcnR0ZW1wbGF0ZSddID0gJ0ltcG9ydCBUZW1wbGF0ZSc7CiRsYW5nWyd0ZW1wbGF0ZV9kZWxldGVkJ10gPSAnVGhlIHRlbXBsYXRlIHdhcyBzdWNjZXNzZnVsbHkgZGVsZXRlZCBmcm9tIHRoZSBkYXRhYmFzZS4nOwokbGFuZ1sndXBkYXRldGVtcGxhdGVzdWNjZXNzJ10gPSAnVGhlIHRlbXBsYXRlIHdhcyB1cGRhdGVkIHN1Y2Nlc3NmdWxseSc7CiRsYW5nWyd1cGRhdGV0ZW1wbGF0ZWZhaWx1cmUnXSA9ICdBbiBlcnJvciBvY2N1cnJlZCB1cGRhdGluZyB0aGUgdGVtcGxhdGUnOwokbGFuZ1snc2V0dGluZ3NzYXZlZCddID0gJ1NldHRpbmdzIHdhcyBzYXZlZCBzdWNjZXNzZnVsbHknOwokbGFuZ1snY2F0ZWdvcnlkZWxldGVkJ10gPSAnQ2F0ZWdvcnkgZGVsZXRlZCc7CiRsYW5nWydjYXRlZ29yeXVwZGF0ZWQnXSA9ICdDYXRlZ29yeSB1cGRhdGVkJzsKJGxhbmdbJ2NhdGVnb3J5YWRkZWQnXSA9ICdDYXRlZ29yeSBhZGRlZCc7CiRsYW5nWydldmVudGRlbGV0ZWQnXSA9ICdUaGUgZXZlbnQgd2FzIGRlbGV0ZWQnOwokbGFuZ1snZXZlbnR1cGRhdGVkJ10gPSAnVGhlIGV2ZW50IHdhcyB1cGRhdGVkJzsKJGxhbmdbJ2RlZmF1bHRfcGFnZV9lcnJvciddID0gJ0Vycm9yOiBZb3UgbXVzdCBzZXQgYSBkZWZhdWx0IHBhZ2UgaW4gb3JkZXIgdG8gdXNlIENhbGVuZGFyIHdpdGggcHJldHR5IFVSTHMgdHVybmVkIG9uLiBQbGVhc2UgZ28gdG8gdGhlIENhbGVuZGFyIHNldHRpbmdzIHRhYiBhbmQgY2hvb3NlIG9uZS4nOwokbGFuZ1sndGltZV9hdCddID0gJ2F0JzsKJGxhbmdbJ3R5cGUnXSA9ICdUeXBlJzsKJGxhbmdbJ25hbWUnXSA9ICdOYW1lJzsKJGxhbmdbJ29yZGVyJ10gPSAnT3JkZXInOwokbGFuZ1snZmllbGRhZGRlZCddID0gJ0ZpZWxkIFN1Y2Nlc3NmdWxseSBBZGRlZCc7CiRsYW5nWydmaWVsZGRlbGV0ZWQnXSA9ICdGaWVsZCBEZWxldGVkJzsKJGxhbmdbJ2ZpZWxkcyddID0gJ0N1c3RvbSBGaWVsZHMnOwokbGFuZ1sndGV4dGZpZWxkJ10gPSAnVGV4dCBGaWVsZCc7CiRsYW5nWyd1cGxvYWRmaWVsZCddID0gJ0ZpbGUgdXBsb2FkIGZpZWxkJzsKJGxhbmdbJ2Rlc2NyaXB0aW9uJ10gPSAnPHA+Q2FsZW5kYXIgaXMgYSBtb2R1bGUgZm9yIGRpc3BsYXlpbmcgZXZlbnRzIG9uIHlvdXIgcGFnZS4gV2hlbiB0aGUNCgkJbW9kdWxlIGlzIGluc3RhbGxlZCwgYSBDYWxlbmRhciBhZG1pbiBwYWdlIGlzIGFkZGVkIHRvIHRoZSBjb250ZW50IG1lbnUNCgkJdGhhdCB3aWxsIGFsbG93IHlvdSB0byBtYW5hZ2UgeW91ciBldmVudHMuPC9wPic7CiRsYW5nWydkZWZhdWx0Y2FsZW5kYXJwYWdlJ10gPSAnRGVmYXVsdCBwYWdlIHRoYXQgY29udGFpbnMgQ2FsZW5kYXIuIFRoaXMgcGFnZSBtdXN0IGNvbnRhaW4gYSBTbWFydHkgdGFnIHRoYXQgY2FsbHMgQ2FsZW5kYXIuIFJlcXVpcmVkIGlmIHlvdSB1c2UgdGhlIHByZXR0eSBVUkxzLic7CiRsYW5nWyd1cGxvYWRkaXJlY3RvcnknXSA9ICdEaXJlY3Rvcnkgd2hlcmUgZmlsZSB1cGxvYWRzIHNob3VsZCBiZSBwbGFjZWQnOwokbGFuZ1sndXBsb2FkZmlsZXR5cGVzJ10gPSAnQWxsb3dlZCBmaWxlIHR5cGVzJzsKJGxhbmdbJ3VwbG9hZHVuaXF1ZSddID0gJ0Vuc3VyZSB1bmlxdWUgZmlsZW5hbWVzJzsKJGxhbmdbJ3RodW1iX3dpZHRoJ10gPSAnVGh1bWJuYWlsIFdpZHRoJzsKJGxhbmdbJ3RodW1iX2hlaWdodCddID0gJ1RodW1ibmFpbCBIZWlnaHQnOwokbGFuZ1snbGFyZ2Vfd2lkdGgnXSA9ICdMYXJnZSBJbWFnZSBXaWR0aCc7CiRsYW5nWydsYXJnZV9oZWlnaHQnXSA9ICdMYXJnZSBJbWFnZSBIZWlnaHQnOwokbGFuZ1snY2FsX3JlY3VyX3BlcmlvZCddID0gJ1JlY3Vycyc7CiRsYW5nWydjYWxfcmVjdXJfdW50aWwnXSA9ICdSZWN1cnMgVW50aWwnOwokbGFuZ1snaGVscF90ZW1wbGF0ZSddID0gJzxwPjxiPlByaW50IEF1dGhvciBOYW1lOjwvYj48L3A+DQo8Y29kZT5BdXRob3I6IHskZXZlbnQuYXV0aG9ybmFtZX08L2NvZGU+DQonOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/cs_CZ.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ21heCddID0gJ21heCc7CiRsYW5nWyd0aW1lcyddID0gJ2tyJmFhY3V0ZTt0JzsKJGxhbmdbJ29uJ10gPSAnbmEnOwokbGFuZ1snYXJleW91c3VyZV91bmluc3RhbGwnXSA9ICdPcHJhdmR1IHRvIGNoY2V0ZSBwcm92JmVhY3V0ZTtzdD8gIFRhdG8gYWtjZSBrb21wbGV0bsSbIHZ5bWHFvmUgZGF0YSBzcG9qZW4mYWFjdXRlOyBzIG1vZHVsZW0uJzsKJGxhbmdbJ3Bvc3RfdW5pbnN0YWxsJ10gPSAnTW9kdWwgS2FsZW5kJmFhY3V0ZTvFmSBieWwgb2RpbnN0YWxvdiZhYWN1dGU7biBhIHYmc2Nhcm9uO2VjaG55IHVkJmFhY3V0ZTtsb3N0aSBhICZzY2Fyb247YWJsb255IHMgbiZpYWN1dGU7bSBzcG9qZW4mZWFjdXRlOyBieWx5IG9kZWJyJmFhY3V0ZTtueS4nOwokbGFuZ1snZmllbGR1cGRhdGVkJ10gPSAnUG9sZSBieWxvIGFrdHVhbGl6b3YmYWFjdXRlO25vJzsKJGxhbmdbJ2V2ZXJ5J10gPSAnS2HFvmQmeWFjdXRlOyc7CiRsYW5nWydvciddID0gJ25lYm8nOwokbGFuZ1sndXBkYXRlX2NoaWxkcmVuJ10gPSAnQWt0dWFsaXpvdmF0IHZub8WZZW4mZWFjdXRlOyB1ZCZhYWN1dGU7bG9zdGknOwokbGFuZ1snZXJyb3Jfbm9jYXRlZ29yeSddID0gJ011cyZpYWN1dGU7dGUgdnlicmF0IG5lam0mZWFjdXRlO27EmyBqZWRudSBrYXRlZ29yaWknOwokbGFuZ1snZXJyb3Jfbm90aGluZ3NlbGVjdGVkJ10gPSAnTmljIG5lYnlsbyB2eWJyJmFhY3V0ZTtubyBrZSBzbWF6JmFhY3V0ZTtuJmlhY3V0ZTsnOwokbGFuZ1snZXJyb3JfZXZlbnRvdmVybGFwJ10gPSAnT3Bha292JmFhY3V0ZTtuJmlhY3V0ZTsgdWQmYWFjdXRlO2xvc3RpLCBrdGVyJmVhY3V0ZTsganN0ZSB6YWRhbGksIHpwxa9zb2ImaWFjdXRlOyBwxZlla3ImeWFjdXRlO3YmYWFjdXRlO24maWFjdXRlOyB1ZCZhYWN1dGU7bG9zdCZpYWN1dGU7Lic7CiRsYW5nWydyZWN1cnMnXSA9ICdPcGFrdWplIHNlJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRfZGF0ZXMnXSA9ICdKZWRlbiBuZWJvIHYmaWFjdXRlO2NlIHphZGFuJnlhY3V0ZTtjaCBkYXR1bcWvIGplIG5lcGxhdG4meWFjdXRlO2NoJzsKJGxhbmdbJ3N1bmRheSddID0gJ05lZMSbbGUnOwokbGFuZ1snbW9uZGF5J10gPSAnUG9uZMSbbCZpYWN1dGU7JzsKJGxhbmdbJ3R1ZXNkYXknXSA9ICcmVWFjdXRlO3RlciZ5YWN1dGU7JzsKJGxhbmdbJ3dlZG5lc2RheSddID0gJ1N0xZllZGEnOwokbGFuZ1sndGh1cnNkYXknXSA9ICfEjHR2cnRlayc7CiRsYW5nWydmcmlkYXknXSA9ICdQJmFhY3V0ZTt0ZWsnOwokbGFuZ1snc2F0dXJkYXknXSA9ICdTb2JvdGEnOwokbGFuZ1snYWJicl9zdW5kYXknXSA9ICdOZSc7CiRsYW5nWydhYmJyX21vbmRheSddID0gJ1BvJzsKJGxhbmdbJ2FiYnJfdHVlc2RheSddID0gJyZVYWN1dGU7dCc7CiRsYW5nWydhYmJyX3dlZG5lc2RheSddID0gJ1N0JzsKJGxhbmdbJ2FiYnJfdGh1cnNkYXknXSA9ICfEjHQnOwokbGFuZ1snYWJicl9mcmlkYXknXSA9ICdQJmFhY3V0ZTsnOwokbGFuZ1snYWJicl9zYXR1cmRheSddID0gJ1NvJzsKJGxhbmdbJ3dlZWtkYXlzJ10gPSAnRG55IHYgdCZ5YWN1dGU7ZG51JzsKJGxhbmdbJ3BsdXJhbF9kYWlseSddID0gJ0RueSc7CiRsYW5nWydwbHVyYWxfd2Vla2x5J10gPSAnVCZ5YWN1dGU7ZG55JzsKJGxhbmdbJ3BsdXJhbF9tb250aGx5J10gPSAnTcSbcyZpYWN1dGU7Y2UnOwokbGFuZ1sncGx1cmFsX3llYXJseSddID0gJ1Jva3knOwokbGFuZ1snbm8nXSA9ICdOZSc7CiRsYW5nWydkYWlseSddID0gJ0Rlbm7Emyc7CiRsYW5nWyd3ZWVrbHknXSA9ICdUJnlhY3V0ZTtkbsSbJzsKJGxhbmdbJ21vbnRobHknXSA9ICdNxJtzJmlhY3V0ZTvEjW7Emyc7CiRsYW5nWyd5ZWFybHknXSA9ICdSb8SNbsSbJzsKJGxhbmdbJ2ludGVydmFsJ10gPSAnT3Bha292YXQnOwokbGFuZ1snY2FsX3JlY3VyX2RldGFpbHMnXSA9ICdEZXRhaWx5IG9wYWt1aiZpYWN1dGU7YyZpYWN1dGU7Y2ggc2UgdWQmYWFjdXRlO2xvc3QmaWFjdXRlOyc7CiRsYW5nWyd1bmxpbWl0ZWQnXSA9ICdOZW9tZXplbiZlYWN1dGU7JzsKJGxhbmdbJ21heF9yZWN1cl9ldmVudHMnXSA9ICdNYXhpbSZhYWN1dGU7bG4maWFjdXRlOyBwb8SNZXQgdm5vxZllbiZ5YWN1dGU7Y2ggdWQmYWFjdXRlO2xvc3QmaWFjdXRlOyc7CiRsYW5nWyd1c2VfdG9fZGF0ZSddID0gJ1VyxI1pdCBvZGxpJnNjYXJvbjtuJmVhY3V0ZTsgZGF0dW0ga29uY2UgdWQmYWFjdXRlO2xvc3RpPyc7CiRsYW5nWydjYW5jZWwnXSA9ICdTdG9ybm8nOwokbGFuZ1snc2hvd19jaGlsZF9ldmVudHMnXSA9ICdVayZhYWN1dGU7emF0IHZub8WZZW4mZWFjdXRlOyB1ZCZhYWN1dGU7bG9zdGkgPGVtPihzZXpuYW0gbcWvxb5lIGImeWFjdXRlO3QgdmVsbWkgZGxvdWgmeWFjdXRlOyk8L2VtPic7CiRsYW5nWyduL2EnXSA9ICduL2EnOwokbGFuZ1sncmVjdXJzX3VudGlsJ10gPSAnT3Bha292YXQgZG8nOwokbGFuZ1sncGFyZW50J10gPSAnU291xI0mYWFjdXRlO3N0IHVkJmFhY3V0ZTtsb3N0aSc7CiRsYW5nWydyZWN1cl9wZXJpb2QnXSA9ICdQZXJpb2RhIG9wYWtvdiZhYWN1dGU7biZpYWN1dGU7JzsKJGxhbmdbJ2ZpbHRlciddID0gJ0ZpbHRyJzsKJGxhbmdbJ3N0YXJ0X2RhdGUnXSA9ICdEYXR1bSB6YcSNJmFhY3V0ZTt0a3UnOwokbGFuZ1snZW5kX2RhdGUnXSA9ICdEYXR1bSBrb25jZSc7CiRsYW5nWydpbmZvX3VwY29taW5nbGlzdF90ZW1wbGF0ZV90YWInXSA9ICdTZXpuYW0gJnNjYXJvbjthYmxvbiwga3RlciZlYWN1dGU7IGpzb3UgayBkaXNwb3ppY2kgcHJvIHBvaGxlZCBuYSBidWRvdWMmaWFjdXRlOyB1ZCZhYWN1dGU7bG9zdGknOwokbGFuZ1sndXBjb21pbmdsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ1DFmWlkYXQvVXByYXZpdCAmc2Nhcm9uO2FibG9udSBzZXpuYW11IGJ1ZG91YyZpYWN1dGU7Y2ggdWQmYWFjdXRlO2xvc3QmaWFjdXRlOyc7CiRsYW5nWydpbmZvX3N5c2RmbHRfdXBjb21pbmdsaXN0X3RlbXBsYXRlJ10gPSAnUMWZZWRuYXN0YXZlbiZhYWN1dGU7ICZzY2Fyb247YWJsb25hIHNlem5hbXUgYnVkb3VjJmlhY3V0ZTtjaCB1ZCZhYWN1dGU7bG9zdCZpYWN1dGU7JzsKJGxhbmdbJ2luZm9fbGlzdF90ZW1wbGF0ZV90YWInXSA9ICdTZXpuYW0gJnNjYXJvbjthYmxvbiwga3RlciZlYWN1dGU7IGpzb3UgayBkaXNwb3ppY2kgcHJvIHBvaGxlZCBuYSBzZXpuYW0gdWQmYWFjdXRlO2xvc3QmaWFjdXRlOyc7CiRsYW5nWydsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ1DFmWlkYXQvVXByYXZpdCAmc2Nhcm9uO2FibG9udSBzZXpuYW11IHVkJmFhY3V0ZTtsb3N0JmlhY3V0ZTsnOwokbGFuZ1snaW5mb19zeXNkZmx0X2xpc3RfdGVtcGxhdGUnXSA9ICdQxZllZG5hc3RhdmVuJmFhY3V0ZTsgJnNjYXJvbjthYmxvbmEgc2V6bmFtdSB1ZCZhYWN1dGU7bG9zdCZpYWN1dGU7JzsKJGxhbmdbJ2luZm9fZXZlbnRfdGVtcGxhdGVfdGFiJ10gPSAnU2V6bmFtICZzY2Fyb247YWJsb24sIGt0ZXImZWFjdXRlOyBqc291IGsgZGlzcG96aWNpIHBybyBwb2hsZWQgbmEgamVkbm90bGl2b3UgdWQmYWFjdXRlO2xvc3QnOwokbGFuZ1snZXZlbnR0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnUMWZaWRhdC9VcHJhdml0ICZzY2Fyb247YWJsb251IGplZG5vdGxpdiZlYWN1dGU7IHVkJmFhY3V0ZTtsb3N0aSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfZXZlbnRfdGVtcGxhdGUnXSA9ICdQxZllZG5hc3RhdmVuJmFhY3V0ZTsgJnNjYXJvbjthYmxvbmEgamVkbm90bGl2JmVhY3V0ZTsgdWQmYWFjdXRlO2xvc3RpJzsKJGxhbmdbJ2luZm9fY2FsZW5kYXJfdGVtcGxhdGVfdGFiJ10gPSAnU2V6bmFtICZzY2Fyb247YWJsb24sIGt0ZXImZWFjdXRlOyBqc291IGsgZGlzcG96aWNpIHBybyBwb2hsZWQgbmEga2FsZW5kJmFhY3V0ZTvFmSc7CiRsYW5nWydjYWxlbmRhcnRlbXBsYXRlX2FkZGVkaXQnXSA9ICdQxZlpZGF0L1VwcmF2aXQgJnNjYXJvbjthYmxvbnUga2FsZW5kJmFhY3V0ZTvFmWUnOwokbGFuZ1snaW5mb19zeXNkZmx0X2NhbGVuZGFyX3RlbXBsYXRlJ10gPSAnUMWZZWRuYXN0YXZlbiZhYWN1dGU7ICZzY2Fyb247YWJsb25hIGthbGVuZCZhYWN1dGU7xZllJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF90ZW1wbGF0ZSddID0gJ1QmaWFjdXRlO210byBmb3JtdWwmYWFjdXRlO8WZZW0gbcWvxb5ldGUgbmFzdGF2aXQgJnNjYXJvbjthYmxvbnUsIGt0ZXImYWFjdXRlOyBzZSBvYmpldiZpYWN1dGU7LCBrZHnFviBrbGlrbmV0ZSBuYSAmYW1wO3F1b3Q7Tm92JmFhY3V0ZTsgJnNjYXJvbjthYmxvbmEmYW1wO3F1b3Q7IHYgcMWZJmlhY3V0ZTtzbHUmc2Nhcm9uO24mZWFjdXRlOyB6JmFhY3V0ZTtsb8W+Y2UuIFptxJtuYSB0JmVhY3V0ZTt0byBob2Rub3R5IG5lbSZhYWN1dGU7IMW+JmFhY3V0ZTtkbiZ5YWN1dGU7IGJlenByb3N0xZllZG4maWFjdXRlOyBlZmVrdCBuYSB2JnlhY3V0ZTtzdHVweSBnZW5lcm92YW4mZWFjdXRlOyB0JmlhY3V0ZTttdG8gbW9kdWxlbS4nOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50QWRkZWQnXSA9ICdaYXZvbCZhYWN1dGU7bm8gcG8gcMWZaWQmYWFjdXRlO24maWFjdXRlOyB1ZCZhYWN1dGU7bG9zdGkgdiBrYWxlbmQmYWFjdXRlO8WZaSc7CiRsYW5nWydldmVudGRlc2MtRXZlbnRFZGl0ZWQnXSA9ICdaYXZvbCZhYWN1dGU7bm8gcG8gZWRpdGFjaSBleGlzdHVqJmlhY3V0ZTtjJmlhY3V0ZTsgdWQmYWFjdXRlO2xvc3RpIHYga2FsZW5kJmFhY3V0ZTvFmWknOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RGVsZXRlZCddID0gJ1phdm9sJmFhY3V0ZTtubyBwbyB0b20sIGNvIGJ5bGEgdiBrYWxlZG4mYWFjdXRlO8WZaSBzbWF6JmFhY3V0ZTtuYSB1ZCZhYWN1dGU7bG9zdCc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlBZGRlZCddID0gJ1phdm9sJmFhY3V0ZTtubyBwbyB2eXR2b8WZZW4maWFjdXRlOyBrYWdvcmllJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUVkaXRlZCddID0gJ1phdm9sJmFhY3V0ZTtubyBwbyBlZGl0YWNpIGthdGVnb3JpZSc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnWmF2b2wmYWFjdXRlO25vIHBvIHNtYXomYWFjdXRlO24maWFjdXRlOyBrYXRlZ29yaWUnOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50QWRkZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBldmVudCBpcyBhZGRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X3RpdGxlXCZxdW90OyAtIEV2ZW50IFRpdGxlPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfc3VtbWFyeVwmcXVvdDsgLSBTdW1tYXJ5IFRleHQ8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kZXRhaWxzXCZxdW90OyAtIERldGFpbGVkIERlc2NyaXB0aW9uPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9zdGFydFwmcXVvdDsgLSBUaGUgZXZlbnQgc3RhcnQgZGF0ZS90aW1lPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9lbmRcJnF1b3Q7IC0gVGhlIGV2ZW50IGVuZCBkYXRlL3RpbWU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9jcmVhdGVkX2J5XCZxdW90OyAtIFRoZSB1c2VyaWQgb2YgdGhlIGF1dGhvcjwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2lkXCZxdW90OyAtIFRoZSBldmVudCBpZDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudEVkaXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIGVkaXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X3RpdGxlXCZxdW90OyAtIEV2ZW50IFRpdGxlPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfc3VtbWFyeVwmcXVvdDsgLSBTdW1tYXJ5IFRleHQ8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kZXRhaWxzXCZxdW90OyAtIERldGFpbGVkIERlc2NyaXB0aW9uPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9zdGFydFwmcXVvdDsgLSBUaGUgZXZlbnQgc3RhcnQgZGF0ZS90aW1lPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9lbmRcJnF1b3Q7IC0gVGhlIGV2ZW50IGVuZCBkYXRlL3RpbWU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9jcmVhdGVkX2J5XCZxdW90OyAtIFRoZSB1c2VyaWQgb2YgdGhlIGF1dGhvcjwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2lkXCZxdW90OyAtIFRoZSBldmVudCBpZDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudERlbGV0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBldmVudCBpcyBkZWxldGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7ZXZlbnRfaWRcJnF1b3Q7IC0gVGhlIGV2ZW50IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5QWRkZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBjYXRlZ29yeSBpcyBhZGRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2NhdGVnb3J5X2lkXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBpZDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeUVkaXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGNhdGVnb3J5IGlzIGVkaXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2NhdGVnb3J5X2lkXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBpZDwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X25hbWVcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IG5hbWU8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9vcmRlclwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgc29ydCBvcmRlcjwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeURlbGV0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBjYXRlZ29yeSBpcyBkZWxldGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfaWRcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IGlkPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfbmFtZVwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgbmFtZTwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X29yZGVyXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBzb3J0IG9yZGVyPC9saT4NCjwvdWw+DQonOwokbGFuZ1snbXNnX2V2ZW50YWRkZWQnXSA9ICdVZCZhYWN1dGU7bG9zdCBwxZlpZCZhYWN1dGU7bmEnOwokbGFuZ1snZXJyb3Jfbm9ldmVudG5hbWUnXSA9ICdBIG5hbWUgZm9yIHRoZSBldmVudCBpcyByZXF1aXJlZCc7CiRsYW5nWydlcnJvcl9ub3VwbG9hZCddID0gJ0NIWUJBOiBzb3Vib3IgdXLEjWVuJnlhY3V0ZTsgayB1cGxvYWR1IG5lbmFsZXplbic7CiRsYW5nWydlcnJvcl9pbnZhbGlkZmlsZW5hbWUnXSA9ICdDSFlCQTogc291Ym9yIHVyxI1lbiZ5YWN1dGU7IGsgdXBsb2FkdSBuZWJ5bCBwxZlpamF0JzsKJGxhbmdbJ2Vycm9yX3Byb2JsZW13aXRodXBsb2FkJ10gPSAnQ0hZQkE6IHDFmWkgdXBsb2FkdSBzb3Vib3J1IGRvJnNjYXJvbjtsbyBrIHByb2JsJmVhY3V0ZTttdSc7CiRsYW5nWydlcnJvcl9maWxlY29weWZhaWxlZCddID0gJ0NIWUJBOiBwxZlpIGtvcCZpYWN1dGU7cm92JmFhY3V0ZTtuJmlhY3V0ZTsgc291Ym9ydSBkbyBjJmlhY3V0ZTtsb3YmZWFjdXRlO2hvIHVtJmlhY3V0ZTtzdMSbbiZpYWN1dGU7IGRvJnNjYXJvbjtsbyBrIHByb2JsJmVhY3V0ZTttdSc7CiRsYW5nWydlcnJvcl9maWxlZXhpc3RzJ10gPSAnQ0hZQkE6IHNvdWJvciBzIHQmaWFjdXRlO210byBqbSZlYWN1dGU7bmVtIGppxb4gZXhpc3R1amUnOwokbGFuZ1snZXJyb3JfY3N2ZmlsZW5vdGZvdW5kJ10gPSAnQ0hZQkE6IE5lbHplIG5hbCZlYWN1dGU7enQgc291Ym9yIHZlIGZvcm0mYWFjdXRlO3R1IC5jc3YnOwokbGFuZ1snZXJyb3JfY2FudG9wZW5maWxlJ10gPSAnQ0hZQkE6IE5lbHplIG90ZXbFmSZpYWN1dGU7dCBzb3Vib3InOwokbGFuZ1snZXJyb3JfY2F0ZWdvcnlleGlzdHMnXSA9ICdDSFlCQTogS2F0ZWdvcmllIHBvam1lbm92YW4mYWFjdXRlOyAlcyBqacW+IGV4aXN0dWplJzsKJGxhbmdbJ2NhbF9pZCddID0gJ0lkJzsKJGxhbmdbJ2NhbF9jYWxlbmRhciddID0gJ0thbGVuZCZhYWN1dGU7xZknOwokbGFuZ1snY2FsX2RlZmF1bHRfdGVtcGxhdGVzJ10gPSAnViZ5YWN1dGU7Y2hveiZpYWN1dGU7ICZzY2Fyb247YWJsb255JzsKJGxhbmdbJ2NhbF9kZXNjcmlwdGlvbiddID0gJ1Zsb8W+aXQsIHVwcmF2aXQgYSBvZGVicmF0IHVkJmFhY3V0ZTtsb3N0aSc7CiRsYW5nWydjYWxfYWRkZXZlbnQnXSA9ICdWbG/Fvml0IHVkJmFhY3V0ZTtsb3N0JzsKJGxhbmdbJ2NhbF9pbXBvcnRfZXZlbnRzJ10gPSAnSW1wb3J0b3ZhdCB1ZCZhYWN1dGU7bG9zdGknOwokbGFuZ1snY2FsX2V2ZW50cyddID0gJ1VkJmFhY3V0ZTtsb3N0aSc7CiRsYW5nWydjYWxfY2F0ZWdvcmllcyddID0gJ0thdGVnb3JpZSc7CiRsYW5nWydjYWxfY2FsZW5kYXJfdGVtcGxhdGUnXSA9ICcmU2Nhcm9uO2FibG9uYSBrYWxlbmQmYWFjdXRlO8WZZSc7CiRsYW5nWydjYWxfbGlzdF90ZW1wbGF0ZSddID0gJyZTY2Fyb247YWJsb25hIHNlem5hbXUnOwokbGFuZ1snY2FsX3VwY29taW5nbGlzdF90ZW1wbGF0ZSddID0gJyZTY2Fyb247YWJsb25hIG5hZGNoJmFhY3V0ZTt6ZWomaWFjdXRlO2MmaWFjdXRlO2NoIHVkJmFhY3V0ZTtsb3N0JmlhY3V0ZTsnOwokbGFuZ1snY2FsX2V2ZW50X3RlbXBsYXRlJ10gPSAnJlNjYXJvbjthYmxvbmEgdWQmYWFjdXRlO2xvc3RpJzsKJGxhbmdbJ2NhbF9zZXR0aW5ncyddID0gJ05hc3RhdmVuJmlhY3V0ZTsnOwokbGFuZ1snY2FsX3ByZXYnXSA9ICcmbGFxdW87IFDFmWVkY2hveiZpYWN1dGU7JzsKJGxhbmdbJ2NhbF9uZXh0J10gPSAnRGFsJnNjYXJvbjsmaWFjdXRlOyAmcmFxdW87JzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzX3VwZGF0ZWQnXSA9ICdLYXRlZ29yaWUgYWt0dWFsaXpvdiZhYWN1dGU7bnknOwokbGFuZ1snY2FsX3NldHRpbmdzX3VwZGF0ZWQnXSA9ICdOYXN0YXZlbiZpYWN1dGU7IGFrdHVhbGl6b3YmYWFjdXRlO25vJzsKJGxhbmdbJ2NhbF9hZGRfZXZlbnQnXSA9ICdWbG/Fvml0IHVkJmFhY3V0ZTtsb3N0JzsKJGxhbmdbJ2NhbF9lZGl0J10gPSAnVXByYXZpdCc7CiRsYW5nWydjYWxfZGVsZXRlJ10gPSAnU21hemF0JzsKJGxhbmdbJ2NhbF9hcmV5b3VzdXJlJ10gPSAnT3ByYXZkdSBjaGNldGUgc21hemF0JzsKJGxhbmdbJ2NhbF91cGRhdGVfdGVtcGxhdGUnXSA9ICdBa3R1YWxpem92YXQgJnNjYXJvbjthYmxvbnUnOwokbGFuZ1snY2FsX3N1bmRheSddID0gJ05lZMSbbGUnOwokbGFuZ1snY2FsX21vbmRheSddID0gJ1BvbmTEm2wmaWFjdXRlOyc7CiRsYW5nWydjYWxfdHVlc2RheSddID0gJyZVYWN1dGU7dGVyJnlhY3V0ZTsnOwokbGFuZ1snY2FsX3dlZG5lc2RheSddID0gJ1N0xZllZGEnOwokbGFuZ1snY2FsX3RodXJzZGF5J10gPSAnxIx0dnJ0ZWsnOwokbGFuZ1snY2FsX2ZyaWRheSddID0gJ1AmYWFjdXRlO3Rlayc7CiRsYW5nWydjYWxfc2F0dXJkYXknXSA9ICdTb2JvdGEnOwokbGFuZ1snY2FsX3N1biddID0gJ05lJzsKJGxhbmdbJ2NhbF9tb24nXSA9ICdQbyc7CiRsYW5nWydjYWxfdHVlcyddID0gJyZVYWN1dGU7dCc7CiRsYW5nWydjYWxfd2VkJ10gPSAnU3QnOwokbGFuZ1snY2FsX3RodXJzJ10gPSAnxIx0JzsKJGxhbmdbJ2NhbF9mcmknXSA9ICdQJmFhY3V0ZTsnOwokbGFuZ1snY2FsX3NhdCddID0gJ1NvJzsKJGxhbmdbJ2NhbF9qYW51YXJ5J10gPSAnTGVkbmEnOwokbGFuZ1snY2FsX2ZlYnJ1YXJ5J10gPSAnJlVhY3V0ZTtub3JhJzsKJGxhbmdbJ2NhbF9tYXJjaCddID0gJ0LFmWV6bmEnOwokbGFuZ1snY2FsX2FwcmlsJ10gPSAnRHVibmEnOwokbGFuZ1snY2FsX21heSddID0gJ0t2xJt0bmEnOwokbGFuZ1snY2FsX2p1bmUnXSA9ICfEjGVydm5hJzsKJGxhbmdbJ2NhbF9qdWx5J10gPSAnxIxlcnZlbmNlJzsKJGxhbmdbJ2NhbF9hdWd1c3QnXSA9ICdTcnBuYSc7CiRsYW5nWydjYWxfc2VwdGVtYmVyJ10gPSAnWiZhYWN1dGU7xZkmaWFjdXRlOyc7CiRsYW5nWydjYWxfb2N0b2JlciddID0gJ8WYJmlhY3V0ZTtqbmEnOwokbGFuZ1snY2FsX25vdmVtYmVyJ10gPSAnTGlzdG9wYWR1JzsKJGxhbmdbJ2NhbF9kZWNlbWJlciddID0gJ1Byb3NpbmNlJzsKJGxhbmdbJ2NhbF9hZGQnXSA9ICdQxZlpZGF0JzsKJGxhbmdbJ2NhbF91cGRhdGUnXSA9ICdBa3R1YWxpem92YXQnOwokbGFuZ1snY2FsX2V2ZW50J10gPSAnVWQmYWFjdXRlO2xvc3QnOwokbGFuZ1snY2FsX2RhdGUnXSA9ICdEYXR1bSc7CiRsYW5nWydjYWxfc3VtbWFyeSddID0gJ1NvdWhybic7CiRsYW5nWydjYWxfZGV0YWlscyddID0gJ0RldGFpbHknOwokbGFuZ1snY2FsX21vcmUnXSA9ICd2JmlhY3V0ZTtjZSA+Pic7CiRsYW5nWydjYWxfcmV0dXJuJ10gPSAnTiZhYWN1dGU7dnJhdCc7CiRsYW5nWydjYWxfdG8nXSA9ICdkbyc7CiRsYW5nWydjYWxfcGFzdF9ldmVudHMnXSA9ICdVZCZhYWN1dGU7bG9zdGkgdiBtaW51bG9zdGknOwokbGFuZ1snY2FsX3VwY29taW5nX2V2ZW50cyddID0gJ05hZGNoJmFhY3V0ZTt6ZWomaWFjdXRlO2MmaWFjdXRlOyB1ZCZhYWN1dGU7bG9zdGknOwokbGFuZ1snY2FsX2FueV9jYXRlZ29yeSddID0gJ0phayZhYWN1dGU7a29saXYga2F0ZWdvcmllJzsKJGxhbmdbJ2NhbF9zaG93X29ubHlfZXZlbnRzX2luJ10gPSAnWm9icmF6aXQgcG91emUgdWQmYWFjdXRlO2xvc3RpIHYnOwokbGFuZ1snY2FsX2ZpbHRlcl9ieSddID0gJ1TFmSZpYWN1dGU7ZGl0IHBvZGxlJzsKJGxhbmdbJ2NhbF9nbyddID0gJ0pkaSc7CiRsYW5nWydjYWxfdGl0bGUnXSA9ICdUaXR1bGVrJzsKJGxhbmdbJ2NhbF9mcm9tZGF0ZSddID0gJ0RhdHVtIHphxI0mYWFjdXRlO3RrdSc7CiRsYW5nWydjYWxfdG9kYXRlJ10gPSAnRGF0dW0ga29uY2UnOwokbGFuZ1snY2FsX3VwZGF0ZV9jYXRlZ29yaWVzJ10gPSAnQWt0dWFsaXpvdmF0IGthdGVnb3JpZSc7CiRsYW5nWydjYWxfbGFuZ3VhZ2UnXSA9ICdKYXp5ayc7CiRsYW5nWydjYWxfdXBkYXRlc2V0dGluZ3MnXSA9ICdBa3R1YWxpem92YXQgbmFzdGF2ZW4maWFjdXRlOyc7CiRsYW5nWydjYWxfdXNlX3R3ZWx2ZV9ob3VyX2Nsb2NrJ10gPSAnUG91xb4maWFjdXRlO3ZhdCBkdmFuJmFhY3V0ZTtjdGlob2Rpbm92JmVhY3V0ZTsgcm96ZMSbbGVuJmlhY3V0ZTsgxI1hc3UgcMWZaSB2JnlhY3V0ZTtixJtydSBob2Rpbj8nOwokbGFuZ1snY2FsX2RlZmF1bHRfY2F0ZWdvcnknXSA9ICdQxZllZG5hc3RhdmVuJmFhY3V0ZTsga2F0ZWdvcmllJzsKJGxhbmdbJ2NhbF91cGRhdGVfZmllbGRzJ10gPSAnQWt0dWFsaXpvdmF0IFBvbGUnOwokbGFuZ1snZm9yY2VfY2F0ZWdvcnknXSA9ICdWeW51dGl0IHZ5dHZvxZllbiZpYWN1dGU7IGFsc3BvxYggamVkbiZlYWN1dGU7IGthdGVnb3JpZSc7CiRsYW5nWydzaG93cGFzdHllYXJzJ10gPSAnS29saWsgbGV0IGRvIG1pbnVsb3N0aSBqZSBwb3ZvbGVubyc7CiRsYW5nWydzaG93ZnV0dXJleWVhcnMnXSA9ICdLb2xpayBsZXQgZG8gYnVkb3Vjbm9zdGkgamUgcG92b2xlbm8nOwokbGFuZ1snaGlkZXN1bW1hcnknXSA9ICdNxJtsbyBieSBiJnlhY3V0ZTt0IHN1bW1hcnkgcG9sZSBza3J5dCZlYWN1dGU7JzsKJGxhbmdbJ2hpZGVjb250ZW50J10gPSAnTcSbbG8gYnkgYiZ5YWN1dGU7dCBjb250ZW50IHBvbGUgc2tyeXQmZWFjdXRlOyc7CiRsYW5nWydjYXRlZ29yeV9yZW1pbmRlciddID0gJ1Byb3MmaWFjdXRlO20gdnliZXJ0ZSBqZWRudSBuZWJvIHYmaWFjdXRlO2NlIGthdGVnb3JpJmlhY3V0ZTssIGRvIGt0ZXImeWFjdXRlO2NoIHNwYWQmYWFjdXRlOyB0YXRvIHVkJmFhY3V0ZTtsb3N0Lic7CiRsYW5nWydtb2R1bGVfZXhhbXBsZV9zdHlsZXNoZWV0J10gPSAnVWsmYWFjdXRlO3prb3YmZWFjdXRlOyBDU1Mga2FsZW5kJmFhY3V0ZTvFmWUnOwokbGFuZ1snZXJyb3JfcGVybWlzc2lvbiddID0gJ1BvdMWZZWJ1amV0ZSBvZHBvdiZpYWN1dGU7ZGFqJmlhY3V0ZTtjJmlhY3V0ZTsgb3ByJmFhY3V0ZTt2bsSbbiZpYWN1dGU7ICglcykgcHJvIHDFmSZpYWN1dGU7c3R1cCBrIHQmZWFjdXRlO3RvIGZ1bmtjaSc7CiRsYW5nWydpbnN0YWxsX3Bvc3RtZXNzYWdlJ10gPSAnWmFqaXN0xJt0ZSBuYXN0YXZlbiZpYWN1dGU7ICZxdW90O01vZGlmeSBjYWxlbmRhciZxdW90OyBvcHImYWFjdXRlO3ZuxJtuJmlhY3V0ZTsgcHJvIHYmc2Nhcm9uO2VjaG55IHXFvml2YXRlbGUsIGt0ZcWZJmlhY3V0ZTsgYnVkb3Uga2FsZWRuJmFhY3V0ZTvFmSBzcHJhdm92YXQuJzsKJGxhbmdbJ2RlbGV0ZXRhZ2dlZCddID0gJ1NtYXphdCBvem5hxI1lbiZlYWN1dGU7IHVkJmFhY3V0ZTtsb3N0aSc7CiRsYW5nWydjb25maXJtZGVsZXRldGFnZ2VkJ10gPSAnSnN0ZSBzaSBqaXN0aSB2eW1heiZhYWN1dGU7biZpYWN1dGU7bSB0xJtjaHRvIHVkJmFhY3V0ZTtsb3N0JmlhY3V0ZTs/JzsKJGxhbmdbJ3RhZ2dlZGRlbGV0ZWQnXSA9ICdPem5hxI1lbiZlYWN1dGU7IHVkJmFhY3V0ZTtsb3N0aSBieWx5IHNtYXomYWFjdXRlO255JzsKJGxhbmdbJ3RlbXBsYXRlcyddID0gJyZTY2Fyb247YWJsb255JzsKJGxhbmdbJ3RlbXBsYXRlX2hlbHAnXSA9ICdOJmFhY3V0ZTtwb3bEm2RhIGsgJnNjYXJvbjthYmxvbiZhYWN1dGU7bSc7CiRsYW5nWydmaWxlX3RlbXBsYXRlcyddID0gJyZTY2Fyb247YWJsb255IHNvdWJvcsWvJzsKJGxhbmdbJ2FkZHRlbXBsYXRlJ10gPSAnUMWZaWRhdCAmc2Nhcm9uO2FibG9udSc7CiRsYW5nWyd0ZW1wbGF0ZSddID0gJyZTY2Fyb247YWJsb25hJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZXRleHQnXSA9ICdKbSZlYWN1dGU7bm8gJnNjYXJvbjthYmxvbnknOwokbGFuZ1snZWRpdHRlbXBsYXRlJ10gPSAnVXByYXZpdCAmc2Nhcm9uO2FibG9udSc7CiRsYW5nWydkZWxldGV0ZW1wbGF0ZSddID0gJ1NtYXphdCAmc2Nhcm9uO2FibG9udSc7CiRsYW5nWyduZXd0ZW1wbGF0ZSddID0gJ0ptJmVhY3V0ZTtubyBub3YmZWFjdXRlOyAmc2Nhcm9uO2FibG9ueSc7CiRsYW5nWyd0ZW1wbGF0ZW5hbWVleGlzdHMnXSA9ICdDSFlCQTogJnNjYXJvbjthYmxvbmEgcyB0JmlhY3V0ZTttdG8gam0mZWFjdXRlO25lbSBqacW+IGV4aXN0dWplLiBWeWJlcnRlIHByb3MmaWFjdXRlO20gamluJmVhY3V0ZTsgam0mZWFjdXRlO25vLic7CiRsYW5nWyd0ZW1wbGF0ZWltcG9ydGVkJ10gPSAnJlNjYXJvbjthYmxvbmEgYnlsYSAmdWFjdXRlO3NwxJsmc2Nhcm9uO27EmyBpbXBvcnRvdiZhYWN1dGU7bmEgZG8gZGF0YWImYWFjdXRlO3plIGEgamUgbmFpbnN0YWxvdiZhYWN1dGU7bmEgYSBwxZlpcHJhdmVuYSBrIHBvdcW+aXQmaWFjdXRlOy4nOwokbGFuZ1sndmlld19kZWZhdWx0X3N0eWxlc2hlZXQnXSA9ICdab2JyYXppdCBwxZllZG5hc3RhdmVuJnlhY3V0ZTsgc3R5bCAoQ1NTKSc7CiRsYW5nWydmaWxlbmFtZSddID0gJ0ptJmVhY3V0ZTtubyBzb3Vib3J1JzsKJGxhbmdbJ2ltcG9ydHRlbXBsYXRlJ10gPSAnSW1wb3J0b3ZhdCAmc2Nhcm9uO2FibG9udSc7CiRsYW5nWyd0ZW1wbGF0ZV9kZWxldGVkJ10gPSAnJlNjYXJvbjthYmxvbmEgYnlsYSAmdWFjdXRlO3NwxJsmc2Nhcm9uO27EmyBzbWF6JmFhY3V0ZTtuYSB6IGRhdGFiJmFhY3V0ZTt6ZS4nOwokbGFuZ1sndXBkYXRldGVtcGxhdGVzdWNjZXNzJ10gPSAnJlNjYXJvbjthYmxvbmEgYnlsYSAmdWFjdXRlO3NwxJsmc2Nhcm9uO27EmyBha3R1YWxpem92JmFhY3V0ZTtuYSc7CiRsYW5nWyd1cGRhdGV0ZW1wbGF0ZWZhaWx1cmUnXSA9ICdQxZlpIGFrdHVhbGl6YWNpICZzY2Fyb247YWJsb255IGRvJnNjYXJvbjtsbyBrIGNoeWLEmyc7CiRsYW5nWydzZXR0aW5nc3NhdmVkJ10gPSAnTmFzdGF2ZW4maWFjdXRlOyBieWxhICZ1YWN1dGU7c3DEmyZzY2Fyb247bsSbIHVsb8W+ZW5hJzsKJGxhbmdbJ2NhdGVnb3J5ZGVsZXRlZCddID0gJ0thdGVnb3JpZSBieWxhIHNtYXomYWFjdXRlO25hJzsKJGxhbmdbJ2NhdGVnb3J5dXBkYXRlZCddID0gJ0thdGVnb3JpZSBieWxhIGFrdHVhbGl6b3YmYWFjdXRlO25hJzsKJGxhbmdbJ2NhdGVnb3J5YWRkZWQnXSA9ICdLYXRlZ29yaWUgYnlsYSBwxZlpZCZhYWN1dGU7bmEnOwokbGFuZ1snZXZlbnRkZWxldGVkJ10gPSAnVWQmYWFjdXRlO2xvc3QgYnlsYSBzbWF6JmFhY3V0ZTtuYSc7CiRsYW5nWydldmVudHVwZGF0ZWQnXSA9ICdVZCZhYWN1dGU7bG9zdCBieWxhIGFrdHVhbGl6b3YmYWFjdXRlO25hJzsKJGxhbmdbJ2RlZmF1bHRfcGFnZV9lcnJvciddID0gJ0NoeWJhOiBNdXMmaWFjdXRlO3RlIG5lamTFmSZpYWN1dGU7dmUgbmFzdGF2aXQgdiZ5YWN1dGU7Y2hveiZpYWN1dGU7IHN0ciZhYWN1dGU7bmt1IGFieSBqc3RlIG1vaGxpIHBvdcW+JmlhY3V0ZTt2YXQgS2FsZW5kJmFhY3V0ZTvFmSBzZSB6YXBudXQmeWFjdXRlO21hIHByZXR0eSBVUkwuIFByb3MmaWFjdXRlO20gamTEm3RlIG5hIG5hc3RhdmVuJmlhY3V0ZTsgS2FsZW5kJmFhY3V0ZTvFmWUgYSB2eWJlcnRlIGplZG51Lic7CiRsYW5nWyd0aW1lX2F0J10gPSAndmUnOwokbGFuZ1sndHlwZSddID0gJ1R5cCc7CiRsYW5nWyduYW1lJ10gPSAnSm0mZWFjdXRlO25vJzsKJGxhbmdbJ29yZGVyJ10gPSAnUG/FmWFkJmlhY3V0ZTsnOwokbGFuZ1snZmllbGRhZGRlZCddID0gJ1BvbGUgJnVhY3V0ZTtzcMSbJnNjYXJvbjtuxJsgcMWZaWQmYWFjdXRlO25vJzsKJGxhbmdbJ2ZpZWxkZGVsZXRlZCddID0gJ1BvbGUgc21heiZhYWN1dGU7bm8nOwokbGFuZ1snZmllbGRzJ10gPSAnVmxhc3RuJmlhY3V0ZTsgUG9sZSc7CiRsYW5nWyd0ZXh0ZmllbGQnXSA9ICdUZXh0b3YmZWFjdXRlOyBwb2xlJzsKJGxhbmdbJ3VwbG9hZGZpZWxkJ10gPSAnUG9sZSBwcm8gdXBsb2FkIHNvdWJvcnUnOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICc8cD5LYWxlbmQmYWFjdXRlO8WZIGplIG1vZHVsIHBybyB6b2JyYXpvdiZhYWN1dGU7biZpYWN1dGU7IHVkJmFhY3V0ZTtsb3N0JmlhY3V0ZTsgbmEgVmEmc2Nhcm9uO2ljaCBzdHImYWFjdXRlO25rJmFhY3V0ZTtjaC4gS2R5xb4gamUgbW9kdWwgbmFpbnN0YWxvdiZhYWN1dGU7biwgYWRtaW5pc3RyYcSNbiZpYWN1dGU7IHJvemhyYW4maWFjdXRlOyBLYWxlbmQmYWFjdXRlO8WZZSBqZSBwxZlpZCZhYWN1dGU7bm8gZG8gbWVudSBPYnNhaCwgY2/FviB2JmFhY3V0ZTttIHVtb8W+biZpYWN1dGU7IHNwcmF2b3ZhdCB1ZCZhYWN1dGU7bG9zdGkuPC9wPic7CiRsYW5nWydkZWZhdWx0Y2FsZW5kYXJwYWdlJ10gPSAnU3RyJmFhY3V0ZTtua2EsIGt0ZXImYWFjdXRlOyBvYnNhaHVqZSBrYWxlbmQmYWFjdXRlO8WZLiBUYXRvIHN0ciZhYWN1dGU7bmthIG11cyZpYWN1dGU7IG9ic2Fob3ZhdCBTbWFydHkgdGFnLCBrdGVyJnlhY3V0ZTsgdm9sJmFhY3V0ZTsga2FsZW5kJmFhY3V0ZTvFmS4gUG/FmWFkb3ZhbiZlYWN1dGU7IHBva3VkIHBvdcW+JmlhY3V0ZTt2JmFhY3V0ZTt0ZSBwcmV0dHkgVVJMcy4nOwokbGFuZ1sndXBsb2FkZGlyZWN0b3J5J10gPSAnQWRyZXMmYWFjdXRlO8WZIHBybyB1a2wmYWFjdXRlO2QmYWFjdXRlO24maWFjdXRlOyB1cGxvYWTFryc7CiRsYW5nWyd1cGxvYWRmaWxldHlwZXMnXSA9ICdQb3ZvbGVuJmVhY3V0ZTsgdHlweSBzb3Vib3LFryc7CiRsYW5nWyd1cGxvYWR1bmlxdWUnXSA9ICdaYWppc3RpdCBqZWRpbmXEjW4mYWFjdXRlOyBqbSZlYWN1dGU7bmEgc291Ym9yxa8nOwokbGFuZ1sndGh1bWJfd2lkdGgnXSA9ICcmU2Nhcm9uOyZpYWN1dGU7xZlrYSBtaW5pYXR1cnknOwokbGFuZ1sndGh1bWJfaGVpZ2h0J10gPSAnViZ5YWN1dGU7JnNjYXJvbjtrYSBtaW5pYXR1cnknOwokbGFuZ1snbGFyZ2Vfd2lkdGgnXSA9ICcmU2Nhcm9uOyZpYWN1dGU7xZlrYSB2ZWxrJmVhY3V0ZTtobyBvYnImYWFjdXRlO3prdSc7CiRsYW5nWydsYXJnZV9oZWlnaHQnXSA9ICdWJnlhY3V0ZTsmc2Nhcm9uO2thIHZlbGsmZWFjdXRlO2hvIG9iciZhYWN1dGU7emt1JzsKJGxhbmdbJ2NhbF9yZWN1cl9wZXJpb2QnXSA9ICdPcGFrdWplIHNlJzsKJGxhbmdbJ2NhbF9yZWN1cl91bnRpbCddID0gJ09wYWt1amUgc2UgZG8nOwokbGFuZ1snaGVscF90ZW1wbGF0ZSddID0gJzxwPjxiPlZ5cCZpYWN1dGU7JnNjYXJvbjtlIEF1dG9yb3ZvIEptJmVhY3V0ZTtubzo8L2I+PC9wPg0KPGNvZGU+QXV0b3I6IHskZXZlbnQuYXV0aG9ybmFtZX08L2NvZGU+DQonOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/da_DK.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ3RleHRhcmVhJ10gPSAnVGV4dCBBcmVhJzsKJGxhbmdbJ2Vycm9yX2NhbGVuZGFyX2luY29tcGF0aWJsZSddID0gJ1dlIGhhdmUgZGV0ZWN0ZWQgdGhhdCB0aGUgQ2FsZW5kYXIgbW9kdWxlIGlzIGFsc28gaW5zdGFsbGVkLi4gIFRoaXMgbW9kdWxlIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIENhbGVuZGFyIG1vZHVsZSBhbmQgY2Fubm90IGNvLWV4aXN0IHdpdGggaXQgb24gdGhlIHNhbWUgaW5zdGFsbC4gIFBsZWFzZSB1bmluc3RhbGwgdGhlIENhbGVuZGFyIG1vZHVsZSc7CiRsYW5nWydlcnJvcl9ldmVudF9ub3RfZm91bmQnXSA9ICdFaXRoZXIgZXZlbnRfaWQgaXMgbm90IGluIHRoZSBkYXRhYmFzZSwgb3IgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBldmVudCB3aXRoIHRoaXMgaWQhICglZCknOwokbGFuZ1snZmlyc3RfcGFnZSddID0gJzw8JzsKJGxhbmdbJ3ByZXZfcGFnZSddID0gJzwnOwokbGFuZ1snbmV4dF9wYWdlJ10gPSAnPic7CiRsYW5nWydsYXN0X3BhZ2UnXSA9ICc+Pic7CiRsYW5nWydwYWdlX29mJ10gPSAnUGFnZSAlZCBvZiAlZCc7CiRsYW5nWydzZWFyY2hfcmVzdWx0cyddID0gJ0NhbGVuZGFyIFNlYXJjaCBSZXN1bHRzJzsKJGxhbmdbJ3NlYXJjaF93b3JkcyddID0gJ1NlYXJjaCBXb3Jkcyc7CiRsYW5nWydub19yZXN1bHRzX2ZvdW5kJ10gPSAnTm8gcmVzdWx0cyBmb3VuZCBtYXRjaGluZyB0aGUgcXVlcnkgc3BlY2lmaWVkJzsKJGxhbmdbJ2ZyZXF1ZW5jeSddID0gJ0ZyZXF1ZW5jeSc7CiRsYW5nWydzcGVjaWZpZWRfZGF0ZSddID0gJ1VzZSB0aGUgc3BlY2lmaWVkIGRhdGUnOwokbGFuZ1snZmlyc3Rfc3VuZGF5J10gPSAnRmlyc3QgU3VuZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydmaXJzdF9tb25kYXknXSA9ICdGaXJzdCBNb25kYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZpcnN0X3R1ZXNkYXknXSA9ICdGaXJzdCBUdWVzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydmaXJzdF93ZWRuZXNkYXknXSA9ICdGaXJzdCBXZWRuZXNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZpcnN0X3RodXJzZGF5J10gPSAnRmlyc3QgVGh1cnNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZpcnN0X2ZyaWRheSddID0gJ0ZpcnN0IEZyaWRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZmlyc3Rfc2F0dXJkYXknXSA9ICdGaXJzdCBTYXR1cmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snc2Vjb25kX3N1bmRheSddID0gJ1NlY29uZCBTdW5kYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3NlY29uZF9tb25kYXknXSA9ICdTZWNvbmQgTW9uZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydzZWNvbmRfdHVlc2RheSddID0gJ1NlY29uZCBUdWVzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydzZWNvbmRfd2VkbmVzZGF5J10gPSAnU2Vjb25kIFdlZG5lc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snc2Vjb25kX3RodXJzZGF5J10gPSAnU2Vjb25kIFRodXJzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydzZWNvbmRfZnJpZGF5J10gPSAnU2Vjb25kIEZyaWRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snc2Vjb25kX3NhdHVyZGF5J10gPSAnU2Vjb25kIFNhdHVyZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWyd0aGlyZF9zdW5kYXknXSA9ICdUaGlyZCBTdW5kYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3RoaXJkX21vbmRheSddID0gJ1RoaXJkIE1vbmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1sndGhpcmRfdHVlc2RheSddID0gJ1RoaXJkIFR1ZXNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3RoaXJkX3dlZG5lc2RheSddID0gJ1RoaXJkIFdlZG5lc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1sndGhpcmRfdGh1cnNkYXknXSA9ICdUaGlyZCBUaHVyc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1sndGhpcmRfZnJpZGF5J10gPSAnVGhpcmQgRnJpZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWyd0aGlyZF9zYXR1cmRheSddID0gJ1RoaXJkIFNhdHVyZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydmb3VydGhfc3VuZGF5J10gPSAnRm91cnRoIFN1bmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZm91cnRoX21vbmRheSddID0gJ0ZvdXJ0aCBNb25kYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZvdXJ0aF90dWVzZGF5J10gPSAnRm91cnRoIFR1ZXNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZvdXJ0aF93ZWRuZXNkYXknXSA9ICdGb3VydGggV2VkbmVzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydmb3VydGhfdGh1cnNkYXknXSA9ICdGb3VydGggVGh1cnNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZvdXJ0aF9mcmlkYXknXSA9ICdGb3VydGggRnJpZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydmb3VydGhfc2F0dXJkYXknXSA9ICdGb3VydGggU2F0dXJkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2xhc3Rfc3VuZGF5J10gPSAnTGFzdCBTdW5kYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2xhc3RfbW9uZGF5J10gPSAnTGFzdCBNb25kYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2xhc3RfdHVlc2RheSddID0gJ0xhc3QgVHVlc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snbGFzdF93ZWRuZXNkYXknXSA9ICdMYXN0IFdlZG5lc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snbGFzdF90aHVyc2RheSddID0gJ0xhc3QgVGh1cnNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2xhc3RfZnJpZGF5J10gPSAnTGFzdCBGcmlkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2xhc3Rfc2F0dXJkYXknXSA9ICdMYXN0IFNhdHVyZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydlcnJvcl9pbnZhbGlkX3JlY3VyX21vbnRobHlfZnJlcSddID0gJ0ludmFsaWQgZnJlcXVlbmN5Li4uLiB5b3UgY2Fubm90IHNwZWNpZnkgYm90aCB0aGUgc3BlY2lmaWVkIGRhdGUgQU5EIG90aGVyIHZhbHVlcyc7CiRsYW5nWydzZWFyY2hyZXN1bHR0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnQWRkL0VkaXQgYSBTZWFyY2ggUmVzdWx0IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc2VhcmNocmVzdWx0X3RlbXBsYXRlX3RhYiddID0gJ1RoZSBsaXN0IG9mIHRlbXBsYXRlcyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIHRoZSBzZWFyY2ggcmVzdWx0cyBkaXNwbGF5JzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9zZWFyY2hyZXN1bHRfdGVtcGxhdGUnXSA9ICdTeXN0ZW0gRGVmYXVsdCBTZWFyY2ggUmVzdWx0IFRlbXBsYXRlJzsKJGxhbmdbJ2NhbF9zZWFyY2hfcmVzdWx0X3RlbXBsYXRlcyddID0gJ1NlYXJjaCBSZXN1bHQgVGVtcGxhdGVzJzsKJGxhbmdbJ2Vycm9yX3F1ZXJ5X2ZhaWxlZCddID0gJ0RhdGFiYXNlIFF1ZXJ5IEZhaWxlZCc7CiRsYW5nWydlcnJvcl9zZWFyY2hfaW52YWxpZF9kYXRlcyddID0gJ0ludmFsaWQgU2VhcmNoIERhdGVzIFNwZWNpZmllZCc7CiRsYW5nWyd0ZXh0J10gPSAnVGV4dCc7CiRsYW5nWydzZWFyY2gnXSA9ICdTZWFyY2gnOwokbGFuZ1snY2F0ZWdvcnknXSA9ICdDYXRlZ29yeSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfc2VhcmNoX3RlbXBsYXRlJ10gPSAnU3lzdGVtIERlZmF1bHQgU2VhcmNoIEZvcm0gVGVtcGxhdGUnOwokbGFuZ1snc2VhcmNodGVtcGxhdGVfYWRkZWRpdCddID0gJ0FkZC9FZGl0IGEgU2VhcmNoIEZvcm0gVGVtcGxhdGUnOwokbGFuZ1snaW5mb19zZWFyY2hfdGVtcGxhdGVfdGFiJ10gPSAnVGhlIGxpc3Qgb2YgdGVtcGxhdGVzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgdGhlIHNlYXJjaCBmb3JtJzsKJGxhbmdbJ2NhbF9zZWFyY2hfZm9ybV90ZW1wbGF0ZXMnXSA9ICdTZWFyY2ggRm9ybSBUZW1wbGF0ZXMnOwokbGFuZ1snbWF4J10gPSAnbWFrcyc7CiRsYW5nWyd0aW1lcyddID0gJ2dhbmdlJzsKJGxhbmdbJ29uJ10gPSAndGlsJzsKJGxhbmdbJ2FyZXlvdXN1cmVfdW5pbnN0YWxsJ10gPSAnRXIgZHUgc2lra2VyIHAmYXJpbmc7IGR1IHZpbCBnJm9zbGFzaDtyZSBkZXR0ZT8gSHZpcyBkdSBmb3J0cyZhZWxpZzt0dGVyIHNsZXR0ZXMgYWxsZSBkYXRhIHRpbGtueXR0ZXQgZGV0dGUgbW9kdWwgcGVybWFuZW50Lic7CiRsYW5nWydwb3N0X3VuaW5zdGFsbCddID0gJ1RoZSBDYWxlbmRhciBtb2R1bGUgaGFzIGJlZW4gdW5pbnN0YWxsZWQgYW5kIGFsbCBldmVudCBhbmQgdGVtcGxhdGUgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbW92ZWQnOwokbGFuZ1snZmllbGR1cGRhdGVkJ10gPSAnRmVsdCBvcGRhdGVyZXQnOwokbGFuZ1snZXZlcnknXSA9ICdIdmVyJzsKJGxhbmdbJ29yJ10gPSAnZWxsZXInOwokbGFuZ1sndXBkYXRlX2NoaWxkcmVuJ10gPSAnT3BkYXQmZWFjdXRlO3IgdW5kZXItaCZhZWxpZztuZGVsc2VyJzsKJGxhbmdbJ2Vycm9yX25vY2F0ZWdvcnknXSA9ICdEdSBza2FsIHYmYWVsaWc7bGdlIG1pbmRzdCBlbiBrYXRlZ29yaSc7CiRsYW5nWydlcnJvcl9ub3RoaW5nc2VsZWN0ZWQnXSA9ICdEZXIgZXIgaWtrZSB2YWxndCBub2dldCB0aWwgc2xldG5pbmcnOwokbGFuZ1snZXJyb3JfZXZlbnRvdmVybGFwJ10gPSAnRGVuIGdlbnRhZ2VuZGUgaCZhZWxpZztuZGVsc2UgZHUgaGFyIGFuZ2l2ZXQgdmlsbGUgcmVzdWx0ZXJlIGkgb3ZlcmxhcHBlbmRlIGgmYWVsaWc7bmRlbHNlci4nOwokbGFuZ1sncmVjdXJzJ10gPSAnR2VudGFnZXMnOwokbGFuZ1snZXJyb3JfaW52YWxpZF9kYXRlcyddID0gJ0VuIGVsbGVyIGZsZXJlIGF0IGRlIGFuZ2l2bmUgZGF0b2VyIGVyIHVneWxkaWcnOwokbGFuZ1snc3VuZGF5J10gPSAnUyZvc2xhc2g7bmRhZyc7CiRsYW5nWydtb25kYXknXSA9ICdNYW5kYWcnOwokbGFuZ1sndHVlc2RheSddID0gJ1RpcnNkYWcnOwokbGFuZ1snd2VkbmVzZGF5J10gPSAnT25zZGFnJzsKJGxhbmdbJ3RodXJzZGF5J10gPSAnVG9yc2RhZyc7CiRsYW5nWydmcmlkYXknXSA9ICdGcmVkYWcnOwokbGFuZ1snc2F0dXJkYXknXSA9ICdMJm9zbGFzaDtyZGFnJzsKJGxhbmdbJ2FiYnJfc3VuZGF5J10gPSAnUyZvc2xhc2g7bic7CiRsYW5nWydhYmJyX21vbmRheSddID0gJ01hbic7CiRsYW5nWydhYmJyX3R1ZXNkYXknXSA9ICdUaXInOwokbGFuZ1snYWJicl93ZWRuZXNkYXknXSA9ICdPbnMnOwokbGFuZ1snYWJicl90aHVyc2RheSddID0gJ1Rvcic7CiRsYW5nWydhYmJyX2ZyaWRheSddID0gJ0ZyZSc7CiRsYW5nWydhYmJyX3NhdHVyZGF5J10gPSAnTCZvc2xhc2g7cic7CiRsYW5nWyd3ZWVrZGF5cyddID0gJ1VnZWRhZ2UnOwokbGFuZ1sncGx1cmFsX2RhaWx5J10gPSAnRGFnZSc7CiRsYW5nWydwbHVyYWxfd2Vla2x5J10gPSAnVWdlcic7CiRsYW5nWydwbHVyYWxfbW9udGhseSddID0gJ00mYXJpbmc7bmVkZXInOwokbGFuZ1sncGx1cmFsX3llYXJseSddID0gJyZBcmluZztyJzsKJGxhbmdbJ25vJ10gPSAnTmVqJzsKJGxhbmdbJ2RhaWx5J10gPSAnRGFnbGlndCc7CiRsYW5nWyd3ZWVrbHknXSA9ICdVZ2VudGxpZ3QnOwokbGFuZ1snbW9udGhseSddID0gJ00mYXJpbmc7bmVkbGlndCc7CiRsYW5nWyd5ZWFybHknXSA9ICcmQXJpbmc7cmxpZ3QnOwokbGFuZ1snaW50ZXJ2YWwnXSA9ICdHZW50YWcgaHZlcic7CiRsYW5nWydjYWxfcmVjdXJfZGV0YWlscyddID0gJ0RldGFsamVyIG9tIHRpbGJhZ2V2ZW5kZW5kZSBoJmFlbGlnO25kZWxzZSc7CiRsYW5nWyd1bmxpbWl0ZWQnXSA9ICdVYmVnciZhZWxpZztuc2V0JzsKJGxhbmdbJ21heF9yZWN1cl9ldmVudHMnXSA9ICdNYWtzaW1hbHQgYW50YWwgdW5kZXIgaCZhZWxpZztuZGVsc2VyJzsKJGxhbmdbJ3VzZV90b19kYXRlJ10gPSAnQW5naXYgZW4gYWx0ZXJuYXRpdiBzbHV0IGRhdG8/JzsKJGxhbmdbJ2NhbmNlbCddID0gJ0FmYnJ5ZCc7CiRsYW5nWydzaG93X2NoaWxkX2V2ZW50cyddID0gJ1ZpcyB1bmRlci1oJmFlbGlnO25kZWxzZXIgPGVtPihrYW4gbWVkZiZvc2xhc2g7cmUgbWVnZXQgbGFuZyB2aXNuaW5nKTwvZW0+JzsKJGxhbmdbJ24vYSddID0gJ24vYSc7CiRsYW5nWydyZWN1cnNfdW50aWwnXSA9ICdHZW50YWcgaW5kdGlsJzsKJGxhbmdbJ3BhcmVudCddID0gJ092ZXJoJmFlbGlnO25kZWxzZXInOwokbGFuZ1sncmVjdXJfcGVyaW9kJ10gPSAnR2VudGFnZWxzZXNwZXJpb2RlJzsKJGxhbmdbJ2ZpbHRlciddID0gJ0ZpbHRlcic7CiRsYW5nWydzdGFydF9kYXRlJ10gPSAnU3RhcnQgZGF0byc7CiRsYW5nWydlbmRfZGF0ZSddID0gJ1NsdXQgZGF0byc7CiRsYW5nWydpbmZvX3VwY29taW5nbGlzdF90ZW1wbGF0ZV90YWInXSA9ICdUaGUgbGlzdCBvZiB0ZW1wbGF0ZXMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciB1cGNvbWluZ2xpc3Qgdmlld3MnOwokbGFuZ1sndXBjb21pbmdsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ0FkZC9FZGl0IGFuIFVwY29taW5nbGlzdCBEaXNwbGF5IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICdTeXN0ZW0gRGVmYXVsdCBVcGNvbWluZ2xpc3QgVGVtcGxhdGUnOwokbGFuZ1snaW5mb19saXN0X3RlbXBsYXRlX3RhYiddID0gJ1RoZSBsaXN0IG9mIHRlbXBsYXRlcyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIGxpc3Qgdmlld3MnOwokbGFuZ1snbGlzdHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZGQvRWRpdCBhbiBMaXN0IERpc3BsYXkgVGVtcGxhdGUnOwokbGFuZ1snaW5mb19zeXNkZmx0X2xpc3RfdGVtcGxhdGUnXSA9ICdTeXN0ZW0gRGVmYXVsdCBMaXN0IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fZXZlbnRfdGVtcGxhdGVfdGFiJ10gPSAnVGhlIGxpc3Qgb2YgdGVtcGxhdGVzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgZXZlbnQgdmlld3MnOwokbGFuZ1snZXZlbnR0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnQWRkL0VkaXQgYW4gRXZlbnQgRGlzcGxheSBUZW1wbGF0ZSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfZXZlbnRfdGVtcGxhdGUnXSA9ICdTeXN0ZW0gRGVmYXVsdCBFdmVudCBUZW1wbGF0ZSc7CiRsYW5nWydpbmZvX2NhbGVuZGFyX3RlbXBsYXRlX3RhYiddID0gJ1RoZSBsaXN0IG9mIHRlbXBsYXRlcyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIGNhbGVuZGFyIHZpZXdzJzsKJGxhbmdbJ2NhbGVuZGFydGVtcGxhdGVfYWRkZWRpdCddID0gJ0FkZC9FZGl0IGEgQ2FsZW5kYXIgRGlzcGxheSBUZW1wbGF0ZSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfY2FsZW5kYXJfdGVtcGxhdGUnXSA9ICdTeXN0ZW0gRGVmYXVsdCBDYWxlbmRhciBUZW1wbGF0ZSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfdGVtcGxhdGUnXSA9ICdUaGlzIGZvcm0gZGVmaW5lcyB0aGUgdGVtcGxhdGUgdGhhdCB3aWxsIGJlIHVzZWQgd2hlbiB5b3UgY2xpY2sgJnF1b3Q7TmV3IFRlbXBsYXRlJnF1b3Q7IGluIHRoZSBhcHByb3ByaWF0ZSB0YWIuICBDaGFuZ2luZyB0aGlzIHZhbHVlIHdpbGwgaGF2ZSBubyBpbW1lZGlhdGUgZWZmZWN0IG9uIHRoZSBkaXNwbGF5cyBnZW5lcmF0ZWQgZnJvbSB0aGlzIG1vZHVsZS4nOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50QWRkZWQnXSA9ICdLYWxkZXMgZWZ0ZXIgZW4gaCZhZWxpZztuZGVsc2UgZXIgdGlsZiZvc2xhc2g7amV0JzsKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudEVkaXRlZCddID0gJ0thbGRlcyBlZnRlciBlbiBoJmFlbGlnO25kZWxzZSBlciBibGV2ZXQgJmFlbGlnO25kcmV0JzsKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudERlbGV0ZWQnXSA9ICdLYWxkZXMgZWZ0ZXIgZW4gaCZhZWxpZztuZGVsc2UgZXIgYmxldmV0IHNsZXR0ZXQnOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5QWRkZWQnXSA9ICdLYWxkZXMgZWZ0ZXIgZW4ga2F0ZWdvcmkgZXIgb3ByZXR0ZXQnOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5RWRpdGVkJ10gPSAnS2FsZGVzIGVmdGVyIGVuIGthdGVnb3JpIGVyIGJsZXZldCByZWRpZ2VyZXQnOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5RGVsZXRlZCddID0gJ0thbGRlcyBlZnRlciBlbiBrYXRlZ29yaSBlciBibGV2ZXQgc2xldHRldCc7CiRsYW5nWydldmVudGhlbHAtRXZlbnRBZGRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIGFkZGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7ZXZlbnRfdGl0bGVcJnF1b3Q7IC0gRXZlbnQgVGl0bGU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9zdW1tYXJ5XCZxdW90OyAtIFN1bW1hcnkgVGV4dDwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RldGFpbHNcJnF1b3Q7IC0gRGV0YWlsZWQgRGVzY3JpcHRpb248L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX3N0YXJ0XCZxdW90OyAtIFRoZSBldmVudCBzdGFydCBkYXRlL3RpbWU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX2VuZFwmcXVvdDsgLSBUaGUgZXZlbnQgZW5kIGRhdGUvdGltZTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2NyZWF0ZWRfYnlcJnF1b3Q7IC0gVGhlIHVzZXJpZCBvZiB0aGUgYXV0aG9yPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfaWRcJnF1b3Q7IC0gVGhlIGV2ZW50IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50RWRpdGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgZXZlbnQgaXMgZWRpdGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7ZXZlbnRfdGl0bGVcJnF1b3Q7IC0gRXZlbnQgVGl0bGU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9zdW1tYXJ5XCZxdW90OyAtIFN1bW1hcnkgVGV4dDwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RldGFpbHNcJnF1b3Q7IC0gRGV0YWlsZWQgRGVzY3JpcHRpb248L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX3N0YXJ0XCZxdW90OyAtIFRoZSBldmVudCBzdGFydCBkYXRlL3RpbWU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX2VuZFwmcXVvdDsgLSBUaGUgZXZlbnQgZW5kIGRhdGUvdGltZTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2NyZWF0ZWRfYnlcJnF1b3Q7IC0gVGhlIHVzZXJpZCBvZiB0aGUgYXV0aG9yPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfaWRcJnF1b3Q7IC0gVGhlIGV2ZW50IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50RGVsZXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIGRlbGV0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtldmVudF9pZFwmcXVvdDsgLSBUaGUgZXZlbnQgaWQ8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlBZGRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGNhdGVnb3J5IGlzIGFkZGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfaWRcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5RWRpdGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgY2F0ZWdvcnkgaXMgZWRpdGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfaWRcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IGlkPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfbmFtZVwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgbmFtZTwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X29yZGVyXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBzb3J0IG9yZGVyPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5RGVsZXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGNhdGVnb3J5IGlzIGRlbGV0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9pZFwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgaWQ8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9uYW1lXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBuYW1lPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfb3JkZXJcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IHNvcnQgb3JkZXI8L2xpPg0KPC91bD4NCic7CiRsYW5nWydtc2dfZXZlbnRhZGRlZCddID0gJ0gmYWVsaWc7bmRlbHNlIHRpbGYmb3NsYXNoO2pldCc7CiRsYW5nWydlcnJvcl9ub2V2ZW50bmFtZSddID0gJ0gmYWVsaWc7bmRlbHNlbiBza2FsIGhhdmUgZXQgbmF2bic7CiRsYW5nWydlcnJvcl9ub3VwbG9hZCddID0gJ0VSUk9SOiBObyB1cGxvYWRlZCBmaWxlIGZvdW5kJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRmaWxlbmFtZSddID0gJ0VSUk9SOiBUaGUgZmlsZSB1cGxvYWRlZCBjYW5ub3QgYmUgYWNjZXB0ZWQnOwokbGFuZ1snZXJyb3JfcHJvYmxlbXdpdGh1cGxvYWQnXSA9ICdFUlJPUjogQSBwcm9ibGVtIG9jY3VycmVkIHRyeWluZyB0byB1cGxvYWQgdGhlIGZpbGUnOwokbGFuZ1snZXJyb3JfZmlsZWNvcHlmYWlsZWQnXSA9ICdFUlJPUjogQSBQcm9ibGVtIG9jY3VycmVkIHdoZW4gY29weWluZyB0aGUgZmlsZSB0byBpdHMgZmluYWwgZGVzdGluYXRpb24nOwokbGFuZ1snZXJyb3JfZmlsZWV4aXN0cyddID0gJ0VSUk9SOiBBIGZpbGUgYnkgdGhhdCBuYW1lIGFscmVhZHkgZXhpc3RzJzsKJGxhbmdbJ2Vycm9yX2NzdmZpbGVub3Rmb3VuZCddID0gJ0Zlamw6IGt1bm5lIGlra2UgZmluZGUgQ1NWLWZpbGVuJzsKJGxhbmdbJ2Vycm9yX2NhbnRvcGVuZmlsZSddID0gJ0Zlamw6IGthbiBpa2tlICZhcmluZztibmUgZmlsZW4nOwokbGFuZ1snZXJyb3JfY2F0ZWdvcnlleGlzdHMnXSA9ICdFUlJPUjogQSBjYXRlZ29yeSB3aXRoIHRoZSBuYW1lICVzIGFscmVhZHkgZXhpc3RzJzsKJGxhbmdbJ2NhbF9pZCddID0gJ0lkJzsKJGxhbmdbJ2NhbF9jYWxlbmRhciddID0gJ0thbGVuZGVyJzsKJGxhbmdbJ2NhbF9kZWZhdWx0X3RlbXBsYXRlcyddID0gJ1N0YW5kYXJkIHNrYWJlbG9uZXInOwokbGFuZ1snY2FsX2Rlc2NyaXB0aW9uJ10gPSAnVGlsZiZvc2xhc2g7aiwgcmV0IG9nIHNsZXQgaCZhZWxpZztuZGVsc2VyJzsKJGxhbmdbJ2NhbF9hZGRldmVudCddID0gJ1RpbGYmb3NsYXNoO2ogaCZhZWxpZztuZGVsc2UnOwokbGFuZ1snY2FsX2ltcG9ydF9ldmVudHMnXSA9ICdJbXBvcnQmZWFjdXRlO3IgaCZhZWxpZztuZGVsc2VyJzsKJGxhbmdbJ2NhbF9ldmVudHMnXSA9ICdIJmFlbGlnO25kZWxzZXInOwokbGFuZ1snY2FsX2NhdGVnb3JpZXMnXSA9ICdLYXRlZ29yaWVyJzsKJGxhbmdbJ2NhbF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ0thbGVuZGVyIHNrYWJlbG9uJzsKJGxhbmdbJ2NhbF9saXN0X3RlbXBsYXRlJ10gPSAnTGlzdGUgc2thYmVsb24nOwokbGFuZ1snY2FsX3VwY29taW5nbGlzdF90ZW1wbGF0ZSddID0gJ1NrYWJlbG9uIGZvciBrb21tZW5kZSBoJmFlbGlnO25kZWxzZXInOwokbGFuZ1snY2FsX2V2ZW50X3RlbXBsYXRlJ10gPSAnU2thYmVsb24gZm9yIGgmYWVsaWc7bmRlbHNlJzsKJGxhbmdbJ2NhbF9zZXR0aW5ncyddID0gJ0luZHN0aWxsaW5nZXInOwokbGFuZ1snY2FsX3ByZXYnXSA9ICcmbGFxdW87IEZvcnJpZ2UnOwokbGFuZ1snY2FsX25leHQnXSA9ICdOJmFlbGlnO3N0ZSAmcmFxdW87JzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzX3VwZGF0ZWQnXSA9ICdLYXRlZ29yaWVyIG9wZGF0ZXJldCc7CiRsYW5nWydjYWxfc2V0dGluZ3NfdXBkYXRlZCddID0gJ0luZHN0aWxsaW5nZXIgb3BkYXRlcmV0JzsKJGxhbmdbJ2NhbF9hZGRfZXZlbnQnXSA9ICdUaWxmJm9zbGFzaDtqIGgmYWVsaWc7bmRlbHNlJzsKJGxhbmdbJ2NhbF9lZGl0J10gPSAnUmV0JzsKJGxhbmdbJ2NhbF9kZWxldGUnXSA9ICdTbGV0JzsKJGxhbmdbJ2NhbF9hcmV5b3VzdXJlJ10gPSAnRXIgZHUgc2lra2VyIHAmYXJpbmc7IGR1IHZpbCBzbGV0dGUnOwokbGFuZ1snY2FsX3VwZGF0ZV90ZW1wbGF0ZSddID0gJ09wZGF0JmVhY3V0ZTtyIHNrYWJlbG9uJzsKJGxhbmdbJ2NhbF9zdW5kYXknXSA9ICdTJm9zbGFzaDtuZGFnJzsKJGxhbmdbJ2NhbF9tb25kYXknXSA9ICdNYW5kYWcnOwokbGFuZ1snY2FsX3R1ZXNkYXknXSA9ICdUaXJzZGFnJzsKJGxhbmdbJ2NhbF93ZWRuZXNkYXknXSA9ICdPbnNkYWcnOwokbGFuZ1snY2FsX3RodXJzZGF5J10gPSAnVG9yc2RhZyc7CiRsYW5nWydjYWxfZnJpZGF5J10gPSAnRnJlZGFnJzsKJGxhbmdbJ2NhbF9zYXR1cmRheSddID0gJ0wmb3NsYXNoO3JkYWcnOwokbGFuZ1snY2FsX3N1biddID0gJ1Mmb3NsYXNoO24nOwokbGFuZ1snY2FsX21vbiddID0gJ01hbic7CiRsYW5nWydjYWxfdHVlcyddID0gJ1Rpcic7CiRsYW5nWydjYWxfd2VkJ10gPSAnT25zJzsKJGxhbmdbJ2NhbF90aHVycyddID0gJ1Rvcic7CiRsYW5nWydjYWxfZnJpJ10gPSAnRnJlJzsKJGxhbmdbJ2NhbF9zYXQnXSA9ICdMJm9zbGFzaDtyJzsKJGxhbmdbJ2NhbF9qYW51YXJ5J10gPSAnSmFudWFyJzsKJGxhbmdbJ2NhbF9mZWJydWFyeSddID0gJ0ZlYnJ1YXInOwokbGFuZ1snY2FsX21hcmNoJ10gPSAnTWFydHMnOwokbGFuZ1snY2FsX2FwcmlsJ10gPSAnQXByaWwnOwokbGFuZ1snY2FsX21heSddID0gJ01haic7CiRsYW5nWydjYWxfanVuZSddID0gJ0p1bmknOwokbGFuZ1snY2FsX2p1bHknXSA9ICdKdWxpJzsKJGxhbmdbJ2NhbF9hdWd1c3QnXSA9ICdBdWd1c3QnOwokbGFuZ1snY2FsX3NlcHRlbWJlciddID0gJ1NlcHRlbWJlcic7CiRsYW5nWydjYWxfb2N0b2JlciddID0gJ09rdG9iZXInOwokbGFuZ1snY2FsX25vdmVtYmVyJ10gPSAnTm92ZW1iZXInOwokbGFuZ1snY2FsX2RlY2VtYmVyJ10gPSAnRGVjZW1iZXInOwokbGFuZ1snY2FsX2FkZCddID0gJ09wZGF0JmVhY3V0ZTtyJzsKJGxhbmdbJ2NhbF91cGRhdGUnXSA9ICdUaWxmJm9zbGFzaDtqJzsKJGxhbmdbJ2NhbF9ldmVudCddID0gJ0gmYWVsaWc7bmRlbHNlJzsKJGxhbmdbJ2NhbF9kYXRlJ10gPSAnRGF0byc7CiRsYW5nWydjYWxfc3VtbWFyeSddID0gJ092ZXJzaWd0JzsKJGxhbmdbJ2NhbF9kZXRhaWxzJ10gPSAnRGV0YWxqZXInOwokbGFuZ1snY2FsX21vcmUnXSA9ICdtZXJlID4+JzsKJGxhbmdbJ2NhbF9yZXR1cm4nXSA9ICdUaWxiYWdlJzsKJGxhbmdbJ2NhbF90byddID0gJ3RpbCc7CiRsYW5nWydjYWxfcGFzdF9ldmVudHMnXSA9ICdPdmVyc3QmYXJpbmc7ZWRlIGgmYWVsaWc7bmRlbHNlcic7CiRsYW5nWydjYWxfdXBjb21pbmdfZXZlbnRzJ10gPSAnS29tbWVuZGUgaCZhZWxpZztuZGVsc2VyJzsKJGxhbmdbJ2NhbF9hbnlfY2F0ZWdvcnknXSA9ICdBbGxlIGthdGVnb3JpZXInOwokbGFuZ1snY2FsX3Nob3dfb25seV9ldmVudHNfaW4nXSA9ICdWaXMga3VuIGgmYWVsaWc7bmRlbHNlciBpJzsKJGxhbmdbJ2NhbF9maWx0ZXJfYnknXSA9ICdGaWx0ciZlYWN1dGU7ciBwJmFyaW5nOyc7CiRsYW5nWydjYWxfZ28nXSA9ICdLJm9zbGFzaDtyJzsKJGxhbmdbJ2NhbF90aXRsZSddID0gJ1RpdGVsJzsKJGxhbmdbJ2NhbF9mcm9tZGF0ZSddID0gJ0ZyYSBkYXRvJzsKJGxhbmdbJ2NhbF90b2RhdGUnXSA9ICdUaWwgZGF0byc7CiRsYW5nWydjYWxfdXBkYXRlX2NhdGVnb3JpZXMnXSA9ICdPcGRhdCZlYWN1dGU7ciBrYXRlZ29yaWVyJzsKJGxhbmdbJ2NhbF9sYW5ndWFnZSddID0gJ1Nwcm9nJzsKJGxhbmdbJ2NhbF91cGRhdGVzZXR0aW5ncyddID0gJ09wZGF0JmVhY3V0ZTtyIGluZHN0aWxsaW5nZXInOwokbGFuZ1snY2FsX3VzZV90d2VsdmVfaG91cl9jbG9jayddID0gJ0Jlbnl0IDEyLXRpZHNhbmdpdmVsc2UgaSBkcm9wZG93bi4nOwokbGFuZ1snY2FsX2RlZmF1bHRfY2F0ZWdvcnknXSA9ICdTdGFuZGFyZCBrYXRlZ29yaSc7CiRsYW5nWydjYWxfdXBkYXRlX2ZpZWxkcyddID0gJ09wZGF0ZXIgZmVsdGVyJzsKJGxhbmdbJ2ZvcmNlX2NhdGVnb3J5J10gPSAnUCZhcmluZzt0dmluZyBtaW5kc3QgZW4ga2F0ZWdvcmknOwokbGFuZ1snc2hvd3Bhc3R5ZWFycyddID0gJ0h2b3IgbWFuZ2UgJmFyaW5nO3IgdGlsYmFnZSBpIHRpZGVuIGRlciBrYW4gYW5naXZlcyc7CiRsYW5nWydzaG93ZnV0dXJleWVhcnMnXSA9ICdIdm9yIG1hbmdlICZhcmluZztyIHVkIGkgZnJlbXRpZGVuIGRlciBrYW4gYW5naXZlcyc7CiRsYW5nWydoaWRlc3VtbWFyeSddID0gJ1NrYWwgcmVzdW1lIGZlbHRldCBza2p1bGVzJzsKJGxhbmdbJ2hpZGVjb250ZW50J10gPSAnU2thbCBpbmRob2xkc2ZlbHRldCBza2p1bGVzJzsKJGxhbmdbJ2NhdGVnb3J5X3JlbWluZGVyJ10gPSAnQW5naXYgbWluZHN0IGVuIGthdGVnb3JpIGZvciBkZW5uZSBoJmFlbGlnO25kZWxzZSc7CiRsYW5nWydtb2R1bGVfZXhhbXBsZV9zdHlsZXNoZWV0J10gPSAnS2FsZW5kZXIgQ1NTIGVrc2VtcGVsJzsKJGxhbmdbJ2Vycm9yX3Blcm1pc3Npb24nXSA9ICdEdSBza2FsIGhhdmUgZGVuIG4mb3NsYXNoO2R2ZW5kaWdlIHRpbGxhZGVsc2UgKCVzKSBmb3IgYXQga3VubmUgYmVueXR0ZSBkZW4gZnVua3Rpb24nOwokbGFuZ1snaW5zdGFsbF9wb3N0bWVzc2FnZSddID0gJ0h1c2sgYXQgc2wmYXJpbmc7IHRpbGxhZGVsc2VuICZxdW90O01vZGlmeSBDYWxlbmRhciZxdW90OyB0aWwgZm9yIGJydWdlcmUgZGVyIHNrYWwga3VubmUgYWRtaW5pc3RyZXJlIGthbGVuZGVyZW4uJzsKJGxhbmdbJ2RlbGV0ZXRhZ2dlZCddID0gJ1NsZXQgbWFya2VyZWRlIGgmYWVsaWc7bmRlbHNlcic7CiRsYW5nWydjb25maXJtZGVsZXRldGFnZ2VkJ10gPSAnRXIgZHUgc2lra2VyIHAmYXJpbmc7IGRpc3NlIGgmYWVsaWc7bmRlbHNlciBza2FsIHNsZXR0ZXM/JzsKJGxhbmdbJ3RhZ2dlZGRlbGV0ZWQnXSA9ICdNYXJrZXJlZGUgaCZhZWxpZztuZGVsc2VyIGJsZXYgc2xldHRldCc7CiRsYW5nWyd0ZW1wbGF0ZXMnXSA9ICdTa2FiZWxvbmVyJzsKJGxhbmdbJ3RlbXBsYXRlX2hlbHAnXSA9ICdTa2FiZWxvbiBoaiZhZWxpZztscCc7CiRsYW5nWydmaWxlX3RlbXBsYXRlcyddID0gJ0ZpbC1za2FiZWxvbmVyJzsKJGxhbmdbJ2FkZHRlbXBsYXRlJ10gPSAnVGlsZiZvc2xhc2g7aiBza2FiZWxvbic7CiRsYW5nWyd0ZW1wbGF0ZSddID0gJ1NrYWJlbG9uJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZXRleHQnXSA9ICdTa2FiZWxvbiBuYXZuJzsKJGxhbmdbJ2VkaXR0ZW1wbGF0ZSddID0gJ1JlZGlnJmVhY3V0ZTtyIHNrYWJlbG9uJzsKJGxhbmdbJ2RlbGV0ZXRlbXBsYXRlJ10gPSAnU2xldCBza2FiZWxvbic7CiRsYW5nWyduZXd0ZW1wbGF0ZSddID0gJ055dCBza2FiZWxvbiBuYXZuJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZWV4aXN0cyddID0gJ0Zlamw6IEVuIHNrYWJlbG9uIG1lZCBkZXQgbmF2biBla3Npc3RlcmVyIGFsbGVyZWRlJzsKJGxhbmdbJ3RlbXBsYXRlaW1wb3J0ZWQnXSA9ICdTa2FiZWxvbmVuIGJsZXYgaW1wb3J0ZXJldCBpIGRhdGFiYXNlbiBvZyBlciBudSBrbGFyIHRpbCBicnVnLic7CiRsYW5nWyd2aWV3X2RlZmF1bHRfc3R5bGVzaGVldCddID0gJ1ZpcyBzdGFuZGFyZCBzdHlsZXNoZWV0JzsKJGxhbmdbJ2ZpbGVuYW1lJ10gPSAnRmlsbmF2bic7CiRsYW5nWydpbXBvcnR0ZW1wbGF0ZSddID0gJ0ltcG9ydCZlYWN1dGU7ciBza2FiZWxvbic7CiRsYW5nWyd0ZW1wbGF0ZV9kZWxldGVkJ10gPSAnU2thYmVsb25lbiBibGV2IHNsZXR0ZXQgZnJhIGRhdGFiYXNlbic7CiRsYW5nWyd1cGRhdGV0ZW1wbGF0ZXN1Y2Nlc3MnXSA9ICdTa2FiZWxvbmVuIGJsZXYgb3BkYXRlcmV0JzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlZmFpbHVyZSddID0gJ0RlciBza2V0ZSBlbiBmZWpsIHZlZCBvcGRhdGVyaW5nJzsKJGxhbmdbJ3NldHRpbmdzc2F2ZWQnXSA9ICdJbmRzdGlsbGluZ2VybmUgYmxldiBnZW10JzsKJGxhbmdbJ2NhdGVnb3J5ZGVsZXRlZCddID0gJ0thdGVnb3JpZW4gYmxldiBzbGV0dGV0JzsKJGxhbmdbJ2NhdGVnb3J5dXBkYXRlZCddID0gJ0thdGVnb3JpZW4gYmxldiBvcGRhdGVyZXQnOwokbGFuZ1snY2F0ZWdvcnlhZGRlZCddID0gJ0thdGVnb3JpZW4gYmxldiB0aWxmJm9zbGFzaDtqZXQnOwokbGFuZ1snZXZlbnRkZWxldGVkJ10gPSAnSCZhZWxpZztuZGVsc2VuIGJsZXYgc2xldHRldCc7CiRsYW5nWydldmVudHVwZGF0ZWQnXSA9ICdIJmFlbGlnO25kZWxzZSBibGV2IG9wZGF0ZXJldCc7CiRsYW5nWydkZWZhdWx0X3BhZ2VfZXJyb3InXSA9ICdGZWpsOiBEdSBza2FsIGFuZ2l2ZSBlbiBzdGFuZGFyZHNpZGUgaHZpcyBkdSB2aWwgYmVueXR0ZSBrYWxlbmRlcmVuIG1lZCBwcmV0dHkgVVJMJiMwMzk7cyBzbCZhcmluZztldCB0aWwuIEcmYXJpbmc7IHZlbmxpZ3N0IHRpbCBrYWxlbmRlciBpbmRzdGlsbGluZ2VybmUgb2cgdiZhZWxpZztsZyBlbi4nOwokbGFuZ1sndGltZV9hdCddID0gJ2tsLic7CiRsYW5nWyd0eXBlJ10gPSAnVHlwZSc7CiRsYW5nWyduYW1lJ10gPSAnTmF2bic7CiRsYW5nWydvcmRlciddID0gJ1ImYWVsaWc7a2tlZiZvc2xhc2g7bGdlJzsKJGxhbmdbJ2ZpZWxkYWRkZWQnXSA9ICdGZWx0ZXQgYmxldiB0aWxmJm9zbGFzaDtqZXQnOwokbGFuZ1snZmllbGRkZWxldGVkJ10gPSAnRmVsdGV0IHNsZXR0ZXQnOwokbGFuZ1snZmllbGRzJ10gPSAnQnJ1Z2VyZGVmaW5lcmVkZSBmZWx0ZXInOwokbGFuZ1sndGV4dGZpZWxkJ10gPSAnVGVrc3QgZmVsdCc7CiRsYW5nWyd1cGxvYWRmaWVsZCddID0gJ0ZpbC11cGxvYWQgZmVsdCc7CiRsYW5nWydkZXNjcmlwdGlvbiddID0gJzxwPkthbGVuZGVyIG1vZHVsZXQgYnJ1Z2VzIHRpbCBhdCB2aXNlIGJlZ2l2ZW5oZWRlciBwJmFyaW5nOyBkaW4gc2lkZS4gTiZhcmluZztyIG1vZHVsZXQgZXIgaW5zdGFsbGVyZXQgYmxpdmVyIGRlciB0aWxmJm9zbGFzaDtqZXQgZW4ga2FsZW5kZSBhZG1pbiBzaWRlIHRpbCBpbmRob2xkc21lbnVlbiwgZGVyIHZpbCBsYWRlIGRpZyBzdHlyZSBkaW5lIGJlZ2l2ZW5oZWRlci48L3A+JzsKJGxhbmdbJ2RlZmF1bHRjYWxlbmRhcnBhZ2UnXSA9ICdTaWRlbiwgZGVyIHNvbSBzdGFuZGFyZCBpbmRlaG9sZGVyIEthbGVuZGVyZW4uIERlbm5lIHNpZGUgc2thbCBpbmRlaG9sZGUgZW4gU21hcnR5IHRhZyBkZXIga2FsZGVyIEthbGVuZGVyLiBOJm9zbGFzaDtkdmVuZGlnIGh2aXMgZHUgJm9zbGFzaDtuc2tlciBhdCBiZW55dHRlICZxdW90O3ByZXR0eSBVUkxzJnF1b3Q7JzsKJGxhbmdbJ3VwbG9hZGRpcmVjdG9yeSddID0gJ0RpcmVjdG9yeSB3aGVyZXIgZmlsZSB1cGxvYWRzIHNob3VsZCBiZSBwbGFjZWQnOwokbGFuZ1sndXBsb2FkZmlsZXR5cGVzJ10gPSAnVGlsbGFkdGUgZmlsdHlwZXInOwokbGFuZ1sndXBsb2FkdW5pcXVlJ10gPSAnVHZpbmcgdW5pa2tlIGZpbG5hdm5lJzsKJGxhbmdbJ3RodW1iX3dpZHRoJ10gPSAnVGh1bWJuYWlsIGJyZWRkZSc7CiRsYW5nWyd0aHVtYl9oZWlnaHQnXSA9ICdUaHVtYm5haWwgaCZvc2xhc2g7amRlJzsKJGxhbmdbJ2xhcmdlX3dpZHRoJ10gPSAnU3RvcnQgYmlsbGVkZSBicmVkZGUnOwokbGFuZ1snbGFyZ2VfaGVpZ2h0J10gPSAnU3RvcnQgYmlsbGVkZSBoJm9zbGFzaDtqZGUnOwokbGFuZ1snY2FsX3JlY3VyX3BlcmlvZCddID0gJ0dlbnRhZ2VzJzsKJGxhbmdbJ2NhbF9yZWN1cl91bnRpbCddID0gJ0dlbnRhZ2VzIGluZHRpbCc7CiRsYW5nWydoZWxwX3RlbXBsYXRlJ10gPSAnPHA+PGI+UHJpbnQgQXV0aG9yIE5hbWU6PC9iPjwvcD4NCjxjb2RlPkF1dGhvcjogeyRldmVudC5hdXRob3JuYW1lfTwvY29kZT4NCic7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/de_DE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ3Byb21wdF9kZG9wdHMnXSA9ICdPcHRpb25lbiBmw7xyIGRhcyBBdXN3YWhsZmVsZCc7CiRsYW5nWydvayddID0gJ09LJzsKJGxhbmdbJ3RpdGxlX2VkaXRfZGRvcHRzJ10gPSAnT3B0aW9uZW4gZsO8ciBkYXMgQXVzd2FobGZlbGQgYmVhcmJlaXRlbic7CiRsYW5nWydkcm9wZG93biddID0gJ0F1c3dhaGxmZWxkJzsKJGxhbmdbJ2NoZWNrYm94J10gPSAnS29udHJvbGxrw6RzdGNoZW4nOwokbGFuZ1snaG9saWRheV9jb2xvcnMnXSA9ICdNYXJraWVydW5nc2ZhcmJlbiBmw7xyIEZlaWVydGFnZSc7CiRsYW5nWydwcm9tcHRfaWNhbF9ob2xpZGF5cyddID0gJ0lDQUwtRmVlZCBmw7xyIEZlaWVydGFnZSc7CiRsYW5nWydpbmZvX2ljYWxfaG9saWRheXMnXSA9ICdEaWVzIHdpcmQgYmVpIGRlciBLYWxlbmRlcmFuc2ljaHQgdmVyd2VuZGV0LCB1bSBnZXNldHpsaWNoZSBGZWllcnRhZ2UgZmFyYmxpY2ggenUgbWFya2llcmVuLiBFcyBnaWJ0IGtlaW5lIHdlaXRlcmUgSW50ZXJha3Rpb24gbWl0IEVyZWlnbmlzc2VuIGluIGRpZXNlbSBGZWVkLic7CiRsYW5nWydhbGxkYXknXSA9ICdHYW56dGFncyc7CiRsYW5nWydkYXl2aWV3J10gPSAnVGFnZXNhbnNpY2h0JzsKJGxhbmdbJ2VkaXQnXSA9ICdFZGl0aWVyZW4nOwokbGFuZ1snZXJyb3JfZmV0Y2hpbmdfZXZlbnRzJ10gPSAnSG9wcGxh4oCmIEJlaW0gVmVyc3VjaCBkZW4gU2VydmVyIHp1IGtvbnRha3RpZXJlbiBnaW5nIGV0d2FzIHNjaGllZi4gQml0dGUgbm9jaG1hbHMgdmVyc3VjaGVuISc7CiRsYW5nWydub3Jlc3VsdHMnXSA9ICdFcyBrb25udGVuIGtlaW5lIFRlcm1pbmUgZsO8ciBkaWUgYW5nZWdlYmVuZW4gU3VjaGtyaXRlcmllbiBnZWZ1bmRlbiB3ZXJkZW4uJzsKJGxhbmdbJ2hlbHBfZmluZF93aGVuJ10gPSAnVmVyZ2FuZ2VuZSB1bmQgenVrw7xuZnRpZ2UgVGVybWluZSBzaW5kIGltbWVyIHJlbGF0aXYgenVtIGVpZ2VudGxpY2hlbiBEYXR1bSc7CiRsYW5nWydyZW9yZGVyJ10gPSAnTmV1IGFub3JkbmVuJzsKJGxhbmdbJ2RmbHRfY29sb3JzJ10gPSAnU3RhbmRhcmRmYXJiZW4nOwokbGFuZ1snZWRpdF9jYXRlZ29yeSddID0gJ0thdGVnb3JpZSBiZWFyYmVpdGVuJzsKJGxhbmdbJ2ZnY29sb3InXSA9ICdUZXh0ZmFyYmUnOwokbGFuZ1snYmdjb2xvciddID0gJ0hpbnRlcmdydW5kZmFyYmUnOwokbGFuZ1snaGVscF9maW5kX3Nob3djaGlsZHJlbiddID0gJ0dpYnQgYW4sIG9iIHVudGVyZ2VvcmRuZXRlIFRlcm1pbmUgaW4gZGllIFN1Y2hlcmdlYm5pc3NlIGVpbmdlc2NobG9zc2VuIHNlaW4gc29sbGVuLic7CiRsYW5nWydoZWxwX2ZpbmRfZXZlbnRfa2V5d29yZCddID0gJ0VpbmVuIG9kZXIgbWVocmVyZSBTdWNoYmVncmlmZmUgZWluZ2ViZW4uIFRpdGVsLCBadXNhbW1lbmZhc3N1bmcgdW5kIGRhcyBEZXRhaWxzLUZlbGQgd2VyZGVuIG5hY2ggcGFzc2VuZGVuIEJlZ3JpZmZlbiBkdXJjaHN1Y2h0JzsKJGxhbmdbJ2luZm9fZmluZF9yZXN1bHRzJ10gPSAnRGllIGVyc3RlbiB6ZWhuIFRyZWZmZXIgZGVyIEFuZnJhZ2Ugd2VyZGVuIHVudGVuIGFuZ2V6ZWlndC48YnIvPkRlciBBbmxhc3Mga2FubiBkdXJjaCBBbmtsaWNrZW4gZGVzIFRpdGVscyBiZWFyYmVpdGV0IHdlcmRlbi48YnIvPkVpbiBLbGljayBhdWYgZGFzIOKAnlZpZXfigJwtSWNvbiBuYXZpZ2llcnQgZGVuIEthbGVuZGVyIHVuZ2Vmw6RociB6dW0gRGF0dW0gZGVzIEFubGFzc2VzLjxlbT4oamUgbmFjaCBBbnNpY2h0KTwvZW0+JzsKJGxhbmdbJ2dvdG9fZGF0ZSddID0gJ1p1IGRpZXNlbSBEYXR1bSBzcHJpbmdlbic7CiRsYW5nWydpbmZvX2ZpbmRfZXZlbnRzJ10gPSAnU3VjaGUgbmFjaCBwYXNzZW5kZW4gVGVybWluZW47IGJpcyB6dSB6ZWhuIFRlcm1pbmUgd2VyZGVuIGF1c2dlZ2ViZW4nOwokbGFuZ1sncmVzdWx0cyddID0gJ0VyZ2Vibmlzc2UnOwokbGFuZ1sna2V5d29yZHMnXSA9ICdTdWNoYmVncmlmZmUnOwokbGFuZ1snZmluZF9zaG93Y2hpbGRyZW4nXSA9ICdVbnRlcmdlb3JkbmV0ZSBhbnplaWdlbic7CiRsYW5nWydhbnknXSA9ICdlZ2FsJzsKJGxhbmdbJ3Bhc3QnXSA9ICd2ZXJnYW5nZW4nOwokbGFuZ1snZnV0dXJlJ10gPSAnenVrw7xuZnRpZyc7CiRsYW5nWydmaW5kX3doZW4nXSA9ICdXYW5uJzsKJGxhbmdbJ2ZpbmRfcGFyZW50c29ubHknXSA9ICdOdXIgw7xiZXJnZW9yZG5ldGUnOwokbGFuZ1snZmluZCddID0gJ0ZpbmRlbuKApic7CiRsYW5nWydlZGl0cGFyZW50J10gPSAnw5xiZXJnZW9yZG5ldGVzIGJlYXJiZWl0ZW4nOwokbGFuZ1sncHJvbXB0X3JlbW92ZWZyb21wYXJlbnQnXSA9ICdEaWVzZW4gVGVybWluIGF1cyBkZW0gw7xiZXJnZW9yZG5ldGVuIFRlcm1pbiBlbnRmZXJuZW4nOwokbGFuZ1snYWxsZGF5X2V2ZW50J10gPSAnRGllcyBpc3QgZWluIGdhbnp0w6RnaWdlciBUZXJtaW4nOwokbGFuZ1snbm90ZSddID0gJ0hpbndlaXMnOwokbGFuZ1sndGl0bGVfcGFyZW50X2V2ZW50J10gPSAnRGllc2VyIFRlcm1pbiBpc3Qgd2llZGVya2VocmVuZCB1bmQgZW50aMOkbHQgdW50ZXJnZW9yZG5ldGUnOwokbGFuZ1snc3RhcnQnXSA9ICdCZWdpbm4nOwokbGFuZ1snZW5kJ10gPSAnRW5kZSc7CiRsYW5nWydldmVudF9hY3Rpb24nXSA9ICdUZXJtaW5ha3Rpb24nOwokbGFuZ1snZXJyb3JfZGVsZXRlcGFyZW50ZXZlbnQnXSA9ICdFaW4gVGVybWluIG1pdCB1bnRlcmdlb3JkbmV0ZW4gVGVybWluZW4ga2FubiBuaWNodCBnZWzDtnNjaHQgd2VyZGVuJzsKJGxhbmdbJ2NoaWxkJ10gPSAndW50ZXJnZW9yZG5ldCc7CiRsYW5nWydyZXBlYXRzJ10gPSAnd2llZGVya2VocmVuZCc7CiRsYW5nWydlcnJvcl9ldmVudG5vdGZvdW5kJ10gPSAnVGVybWluIG5pY2h0IGdlZnVuZGVuJzsKJGxhbmdbJ2Vycm9yX3Vua25vd24nXSA9ICdVbmJla2FubnRlciBGZWhsZXInOwokbGFuZ1snbXNnX25vZGF0ZXMnXSA9ICdUaXRlbHN1Y2hlIGFuZ2V3ZW5kZXQnOwokbGFuZ1sndGl0bGVfcmVjdXJyaW5nX2V2ZW50J10gPSAnRGllcyBpc3QgZWluIHdpZWRlcmtlaHJlbmRlcyBFcmVpZ25pcyBtaXQgdW50ZXJnZW9yZG5ldGVuIEVpbnRyw6RnZW4nOwokbGFuZ1sndGl0bGVfY2hpbGRfZXZlbnQnXSA9ICdEaWVzIGlzdCBlaW4gdW50ZXJnZW9yZG5ldGVyIEVpbnRyYWcgZWluZXMgd2llZGVya2VocmVuZGVuIEVyZWlnbmlzc2VzJzsKJGxhbmdbJ2Vycm9yX3NvbWVkZWxldGVkJ10gPSAnQXVmZ3J1bmQgdm9uIEJlcmVjaHRpZ3VuZ3NlaW5zY2hyw6Rua3VuZ2VuIHd1cmRlbiBlaW5pZ2UgVGVybWluZSBuaWNodCBnZWzDtnNjaHQuJzsKJGxhbmdbJ2Vycm9yX25vbmVkZWxldGVkJ10gPSAnQXVmZ3J1bmQgdm9uIEJlcmVjaHRpZ3VuZ3MtIG9kZXIgYW5kZXJlbiBGZWhsZXJuIHd1cmRlIGtlaW5lciBkZXIgYXVzZ2V3w6RobHRlbiBUZXJtaW5lIGdlbMO2c2NodC4nOwokbGFuZ1snZXJyb3JfZGVsZXRlZmFpbGVkJ10gPSAnTMO2c2NoZW4gZGVzIFRlcm1pbnMgZmVobGdlc2NobGFnZW4nOwokbGFuZ1snZmlsZWF0dGFjaG1lbnQnXSA9ICdEYXRlaWFuaGFuZyc7CiRsYW5nWydwcm9tcHRfZ2VuZXJhbF9zZXR0aW5ncyddID0gJ0FsbGdlbWVpbmUgRWluc3RlbGx1bmdlbic7CiRsYW5nWydwcm9tcHRfZWRpdGluZ19zZXR0aW5ncyddID0gJ1Rlcm1pbmJlYXJiZWl0dW5nc2VpbnN0ZWxsdW5nZW4nOwokbGFuZ1sncHJvbXB0X2ZlZWRpdF9zZXR0aW5ncyddID0gJ0VpbnN0ZWxsdW5nZW4gZsO8ciDDtmZmZW50bGljaGUgQmVhcmJlaXR1bmcnOwokbGFuZ1sncHJldl9tb250aCddID0gJ1p1bSB2b3JpZ2VuIE1vbmF0JzsKJGxhbmdbJ25leHRfbW9udGgnXSA9ICdadW0gbsOkY2hzdGVuIE1vbmF0JzsKJGxhbmdbJ21zZ19jYXRlZ29yaWVzX3VwZGF0ZWQnXSA9ICdLYXRlZ29yaWVuIGFrdHVhbGlzaWVydCc7CiRsYW5nWydtc2dfZmllbGRzdXBkYXRlZCddID0gJ0ZlbGRkZWZpbml0aW9uZW4gYWt0dWFsaXNpZXJ0JzsKJGxhbmdbJ3d5c2l3eWcnXSA9ICdXWVNJV1lHJzsKJGxhbmdbJ2luZm9fcmVvcmRlcl9jYXRlZ29yaWVzJ10gPSAnRGllIFJlaWhlbmZvbGdlIGRlciBLYXRlZ29yaWVuIGthbm4gZHVyY2ggWmllaGVuIGRlciBaZWlsZW4gZ2XDpG5kZXJ0IHdlcmRlbi4nOwokbGFuZ1snYWRkX2ZpZWxkJ10gPSAnRmVsZCBoaW56dWbDvGdlbic7CiRsYW5nWydhZGRfY2F0ZWdvcnknXSA9ICdLYXRlZ29yaWUgaGluenVmw7xnZW4nOwokbGFuZ1sncHJvbXB0X2ZpcnN0ZGF5b2Z3ZWVrJ10gPSAnV29jaGUgYmVnaW5udCBhbSc7CiRsYW5nWydlZGl0X2V2ZW50J10gPSAnRXJlaWduaXMgYmVhcmJlaXRlbic7CiRsYW5nWydlZGl0X3BhcmVudF9ldmVudCddID0gJ8OcYmVyZ2VvcmRuZXRlcyBFcmVpZ25pcyBiZWFyYmVpdGVuJzsKJGxhbmdbJ3NlbGVjdF9wZXJpb2QnXSA9ICdaZWl0cmF1bSc7CiRsYW5nWydzaG93X2ZpbHRlciddID0gJ0ZpbHRlciBhbnplaWdlbic7CiRsYW5nWydzaG93X2ZpbHRlcl9hcHBsaWVkJ10gPSAnRmlsdGVyIGFuemVpZ2VuIDxlbT4oYW5nZXdlbmRldCk8L2VtPic7CiRsYW5nWydyZXNldCddID0gJ1p1csO8Y2tzZXR6ZW4nOwokbGFuZ1snY2FsX2N1cnJlbnQnXSA9ICdEaWVzZXIgWmVpdHJhdW0nOwokbGFuZ1snY2FsX2Zyb20nXSA9ICd2b24nOwokbGFuZ1snZXJyb3JfZmV1X2xvZ2dlZGluJ10gPSAnRGVyIEJlbnV0emVyIGlzdCBuaWNodCBhbmdlbWVsZGV0LiBEYXMgSGluenVmw7xnZW4gb2RlciBCZWFyYmVpdGVuIHZvbiBUZXJtaW5lbiBpc3QgbmljaHQgZ2VzdGF0dGV0Lic7CiRsYW5nWydwcm9tcHRfZnJpZW5kbHluYW1lJ10gPSAnU2VsYnN0Z2V3w6RobHRlciBOYW1lIGbDvHIgZGllc2VzIE1vZHVsIGltIEFkbWluaXN0cmF0aW9uc2JlcmVpY2gnOwokbGFuZ1snaW5mb19mcmllbmRseW5hbWUnXSA9ICdIaW53ZWlzOiBEYW1pdCBkaWVzZSDDhG5kZXJ1bmcgc2ljaHRiYXIgd2lyZCwgbXVzcyB1LiBVLiBkZXIgWndpc2NoZW5zcGVpY2hlciBnZWxlZXJ0IHdlcmRlbi4gV2VubiBuaWNodHMgYW5nZWdlYmVuIHdpcmQsIHdpcmQgZGllIFN0YW5kYXJkYmV6ZWljaG51bmcgdmVyd2VuZGV0Lic7CiRsYW5nWyd1c2Vfd3lzaXd5ZyddID0gJ1dZU0lXWUctRWRpdG9yIHZlcndlbmRlbic7CiRsYW5nWydlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnXSA9ICdVbmdlbsO8Z2VuZGUgUGFyYW1ldGVyJzsKJGxhbmdbJ2NvbHVtbl9kZWxpbWl0ZXInXSA9ICdTcGFsdGVudHJlbm5lcic7CiRsYW5nWydpbXBvcnRfY29tcGxldGVkJ10gPSAnSW1wb3J0IHZvbGxzdMOkbmRpZyc7CiRsYW5nWydudW1faW1wb3J0ZWQnXSA9ICdBbnphaGwgZGVyIGVpbmdldHJhZ2VuZW4gVGVybWluZTogJWQnOwokbGFuZ1snaW1wb3J0X2xpbmVzJ10gPSAnQW56YWhsIGRlciBhdXMgZGVyIERhdGVpIHZlcmFyYmVpdGV0ZW4gWmVpbGVuOiAlZCc7CiRsYW5nWydlcnJvcnMnXSA9ICdGZWhsZXInOwokbGFuZ1snZXJyb3JfY3N2Zmlyc3RsaW5laW52YWxpZGZpZWxkJ10gPSAnRmVsZCAlcyB3dXJkZSBuaWNodCBlcmthbm50IHVuZCBpc3Qga2VpbiBhbmdlcGFzc3RlcyBGZWxkJzsKJGxhbmdbJ2luZm9fY3N2X2Zvcm1hdCddID0gJzxoND5DU1YgRmlsZSBGb3JtYXQgSW5mb3JtYXRpb24uPC9oND4NCjx1bD4NCiAgPGxpPkdlbmVyYWwgSW5mb3JtYXRpb246DQogICA8dWw+DQogICAgIDxsaT5UaGUgZmlsZSBtdXN0IGJlIGFuIEFTQ0lJIGZpbGUgd2l0aCB1bml4LCBkb3MsIG9yIChob3BlZnVsbHkpIG1hYyBsaW5lIGVuZGluZ3MuPC9saT4NCiAgICAgPGxpPkNvbW1lbnRzIHN0YXJ0IHdpdGggLy8gYW55IGNoYXJhY3RlcnMgYWZ0ZXIgdGhpcyBvbiBhIGxpbmUgd2lsbCBiZSBpZ25vcmVkIChpbmNsdWRpbmcgd2l0aGluIHF1b3Rlcy48L2xpPg0KICAgICA8bGk+RW1wdHkgbGluZXMgYXJlIGlnbm9yZS5kPC9saT4NCiAgICAgPGxpPkZpZWxkcyBhcmUgZGVsaW1pdGVkIHdpdGggYSAsIGhvd2V2ZXIgYSAsIGNhbiBiZSB1c2VkIGFzIGEgdmFsdWUgd2l0aGluIGEgZmllbGQgaWYgdGhlIGZpZWxkIGlzIGRlbGltaXRlZCBieSBkb3VibGUgcXVvdGVzLjwvbGk+DQogICAgIDxsaT5Sb3dzIGFyZSBkZWxpbWl0ZWQgYnkgbmV3bGluZSBjaGFycyAoYXMgYWJvdmUpLjwvbGk+DQogICA8L3VsPg0KICA8L2xpPg0KICA8bGk+VGhlIEZpZWxkIE1hcDoNCiAgIDx1bD4NCiAgICA8bGk+VGhlIGZpcnN0IGxpbmUgZGVmaW5lcyB0aGUgb3JkZXIgb2YgdGhlIGZpZWxkcywgYW5kIHdoYXQgImN1c3RvbSBmaWVsZHMiIGFyZSBkZWZpbmVkIGluIHRoZSBmaWxlLiBEYXRhIGNhbiBzdGFydCBvbiB0aGUgc2Vjb25kIG5vbi1lbXB0eSBsaW5lLCBvciBhZnRlci48L2xpPg0KICAgIDxsaT5UaGVyZXMgYXJlIHRoZSByZXF1aXJlZCBmaWVsZHM6IHN0YXJ0IHRpbWUsIGVuZCB0aW1lLCB0aXRsZSwgc3VtbWFyeSwgYW5kIGRlc2NyaXB0aW9uLiAgV2l0aG91dCBkZWZpbmluZyB0aGVzZSBmaWVsZHMgaW4gdGhlIGhlYWRlciB0aGUgaW1wb3J0IHdpbGwgbm90IHByb2NlZWQuICBSZXF1aXJlZCBmaWVsZCBuYW1lcyBhcmUgbm90IGNhc2Ugc2Vuc2l0aXZlLjwvbGk+DQogICAgPGxpPlRoZXJlIGlzIG9uZSBvcHRpb25hbCBjb2x1bW46OiAiY2F0ZWdvcnkiLiAgSWYgc3BlY2lmaWVkIGl0IGNhbiBjb250YWluIGEgOyBzZXBhcmF0ZWQgbGlzdCBvZiBjYXRlZ29yeSBuYW1lcyB0aGF0IHRoZSBldmVudCB3aWxsIGJlbG9uZyB0by48L2xpPg0KICAgPC91bD4NCiAgPC9saT4NCiAgPGxpPlRoZSBEYXRhIFJvd3M6DQogICA8dWw+DQogICAgPGxpPlRoZSBzdGFydCB0aW1lLCB0aXRsZSwgYW5kIGRlc2NyaXB0aW9uIGZpZWxkcyBtdXN0IG5vdCBiZSBlbXB0eS48L2xpPg0KPGxpPlN0YXJ0IGFuZCBFbmQgVGltZXM6PC9saT4NCiAgPHVsPg0KICAgPGxpPlN0YXJ0IHRpbWUgcHJvY2Vzc2luZyBpcyBmbGV4aWJsZS4gIFlvdSBjYW4gc3BlY2lmeSBlaXRoZXIgIFlZWVktTU0tREQgSEg6TU0gZm9ybWF0LCBvciBtYW55IGZvcm1hdHMgYXMgZGVmaW5lZCBieSB0aGUgc3RydG90aW1lIGZ1bmN0aW9uLCBpbmNsdWRpbmcgcmVsYXRpdmUgdGltZXMuICBJZiBhIHJlbGF0aXZlIHRpbWUgaXMgc3VwcGxpZWQgaXQgaXMgYXNzdW1lZCB0byBiZSByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB0aW1lLjwvbGk+DQogICA8bGk+RW5kIHRpbWUgcHJvY2Vzc2luZyBpcyBmbGV4aWJsZSwgYW5kIG1heSBiZSBlbXB0eS4gIFlvdSBjYW4gc3BlY2lmeSBlaXRoZXIgYW4gYWJzb2x1dGUgdGltZSAoaW4gdGhlIHNhbWUgZm9ybWF0IGFzIHRoZSBzdGFydCB0aW1lKSBvciBhIHJlbGF0aXZlIHRpbWUuICBJZiBhIHJlbGF0aXZlIHRpbWUgaXMgc3BlY2lmaWVkLCBpdCBpcyBhc3N1bWVkIHRvIGJlIHJlbGF0aXZlIHRvIHRoZSBzdGFydCB0aW1lLiAgIGkuZTogIis0IGhvdXJzIiB3b3VsZCBpbmRpY2F0ZSA0IGhvdXJzIGZyb20gdGhlIHN0YXJ0IHRpbWUgY29sdW1uLjwvbGk+DQogICA8bGk+SWYgdGhlIGVuZCB0aW1lIGNvbHVtZSBpcyB0aGUgc3RyaW5nICJBbGwgZGF5IiA8ZW0+KGNhc2UgaW5zZW5zaXRpdmUpPC9lbT4gaXQgd2lsbCBhc3N1bWUgYW4gYWxsIGRheSBldmVudCBmcm9tIHRoZSBzdGFydCB0aW1lLjwvbGk+DQogICA8bGk+SWYgdGhlIGVuZCB0aW1lIGNvbHVtbiBpcyBlbXB0eSwgdGhlbiBubyBlbmQgdGltZSB2YWx1ZSB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhlIGRhdGFiYXNlLjwvbGk+DQogIDwvdWw+DQo8L2xpPg0KPGxpPkNhdGVnb3JpZXMNCiAgPHVsPg0KICAgPGxpPklmIHNwZWNpZmllZCwgdGhlIGNhdGVnb3J5IGNvbHVtbiBjYW4gY29udGFpbiBhIGxpc3QgKHNlcGFyYXRlZCBieSA7KSBvZiBjYXRlZ29yeSBuYW1lcyBmb3Igd2hpY2ggdGhlIGV2ZW50IHNob3VsZCBiZWxvbmcuPC9saT4NCiAgIDxsaT5DYXRlZ29yeSBuYW1lcyBhcmUgY2FzZSBzZW5zaXRpdmUuPC9saT4NCiAgIDxsaT5DYXRlZ29yaWVzIGFyZSBub3QgY3JlYXRlZCBpZiB0aGV5IGRvIG5vdCBleGlzdC48L2xpPg0KICA8L3VsPg0KPC9saT4NCjxsaT5DdXN0b20gRmllbGRzOg0KICA8dWw+DQogICAgPGxpPkN1c3RvbSBmaWVsZCBuYW1lcyAoZXZlbiBpbiB0aGUgZmlyc3QgbGluZSB0aGF0IGRldGVybWluZXMgdGhlIGZpZWxkIG1hcHBpbmcpIGFyZSBjYXNlIHNlbnNpdGl2ZS48L2xpPg0KICAgIDxsaT5DdXRvbSBmaWVsZHMgYXJlIG5vdCBjcmVhdGVkIGlmIHNwZWNpZmllZCBpbiB0aGUgQ1NWIGZpbGUuICBVbmtub3duIGN1c3RvbSBmaWVsZCBjb2x1bW5zIHdpbGwgYmUgaWdub3JlZC48L2xpPg0KICAgIDxsaT5DdXN0b20gZmllbGRzIG9mIHR5cGUgImZpbGUiIGNhbm5vdCBiZSBpbXBvcnRlZC4gIFRoZSBlbnRpcmUgaW1wb3J0IG9wZXJhdGlvbiB3aWxsIGZhaWwuPC9saT4NCiAgPC91bD4NCiAgPC9saT4NCiAgPC91bD4NCjwvbGk+DQo8bGk+QSBzYW1wbGUgY3N2IGZpbGUgZXhpc3RzIGluIHRoZSBtb2R1bGVzIHNvdXJjZSBjb2RlIGRpcmVjdG9yeS48L2xpPg0KPC91bD4nOwokbGFuZ1sncHJvbXB0X2Nzdl9maWxlJ10gPSAnRGllIHp1IGltcG9ydGllcmVuZGUgRGF0ZWkgYXVzd8OkaGxlbic7CiRsYW5nWydkZWxldGUnXSA9ICdMw7ZzY2hlbic7CiRsYW5nWydjZF9jb21wYW55J10gPSAnRmlybWVudmVyemVpY2huaXMnOwokbGFuZ1snZGZsdF91cmxwcmVmaXgnXSA9ICdWb3JlaW5nZXN0ZWxsdGVzIFVSTC1QcsOkZml4IGbDvHIgUHJldHR5IFVSTHMnOwokbGFuZ1snZGZsdF9hbGxkYXlldmVudCddID0gJ05ldWUgVGVybWluZSBzb2xsZW4gdm9yZWluZ2VzdGVsbHQgZ2FuenTDpGdpZyBzZWluJzsKJGxhbmdbJ2RmbHRfc3RhcnR0aW1lJ10gPSAnVm9yZWluZ2VzdGVsbHRlIFN0YXJ0emVpdCBmw7xyIG5ldWUgVGVybWluZSc7CiRsYW5nWydpbmZvX2RmbHRfc3RhcnR0aW1lJ10gPSAnPGVtPih3aXJkIG51ciBkYW5uIGFuZ2V3ZW5kZXQsIHdlbm4gbmV1ZSBUZXJtaW5lIGtlaW5lIGdhbnp0w6R0aWdlbiBUZXJtaW5lIHNpbmQuKTwvZW0+JzsKJGxhbmdbJ3NlYXJjaF90eXBlJ10gPSAnU3VjaC1UeXAnOwokbGFuZ1snc2VhcmNoX2FueSddID0gJ0dpYnQgRXJnZWJuaXNzZSB6dXLDvGNrLCB3ZW5uIGlyZ2VuZCBlaW4gV29ydCBlbnRoYWx0ZW4gaXN0JzsKJGxhbmdbJ3NlYXJjaF9hbGwnXSA9ICdHaWJ0IEVyZ2Vibmlzc2UgenVyw7xjaywgd2VubiBhbGxlIFdvcnRlIGVudGhhbHRlbiBzaW5kJzsKJGxhbmdbJ3NlYXJjaGFibGUnXSA9ICdEdXJjaHN1Y2hiYXInOwokbGFuZ1snaGVscF9wYXJhbV9lZGl0ZXZlbnR0ZW1wbGF0ZSddID0gJ0thbm4gbnVyIHp1c2FtbWVuIG1pdCBkZXIgQWt0aW9uIOKAnm15ZXZlbnRz4oCcIHZlcndlbmRldCB3ZXJkZW4uIE1pdCBkaWVzZW0gUGFyYW1ldGVyIGthbm4gZWluZSB2b24gZGVuIFZvcmVpbnN0ZWxsdW5nZW4gYWJ3ZWljaGVuZGUgVm9ybGFnZSBmZXN0Z2VsZWd0IHdlcmRlbiwgd2VubiBlaW4gQmVudXR6ZXIgZWluZW4gVGVybWluIGVyc3RlbGx0IG9kZXIgYmVhcmJlaXRldCc7CiRsYW5nWydoZWxwX3BhcmFtX2VkaXRwYWdlJ10gPSAnS2FubiBudXIgenVzYW1tZW4gbWl0IGRlciBBa3Rpb24gbXlldmVudHMgdmVyd2VuZGV0IHdlcmRlbi4gTWl0IGRpZXNlbSBQYXJhbWV0ZXIga2FubiBlaW5lIHZvbiBkZW4gVm9yZWluc3RlbGx1bmdlbiBhYndlaWNoZW5kZSBTZWl0ZSBmw7xyIGRhcyBCZWFyYmVpdHVuZ3Nmb3JtdWxhciBmZXN0Z2VsZWd0IHdlcmRlbi4nOwokbGFuZ1snaGVscF9wYXJhbV9teWV2ZW50c3RlbXBsYXRlJ10gPSAnS2FubiBudXIgenVzYW1tZW4gbWl0IGRlciBBa3Rpb24gbXlldmVudHMgdmVyd2VuZGV0IHdlcmRlbi4gTWl0IGRpZXNlbSBQYXJhbWV0ZXIga2FubiBlaW5lIHZvbiBkZW4gVm9yZWluc3RlbGx1bmdlbiBhYndlaWNoZW5kZSBWb3JsYWdlIGZlc3RnZWxlZ3Qgd2VyZGVuLic7CiRsYW5nWydjYWxfZWRpdF9ldmVudCddID0gJ0thbGVuZGVyLUVpbnRyYWcgYmVhcmJlaXRlbic7CiRsYW5nWydlcnJvcl9kYmVycm9yJ10gPSAnRGF0ZW5iYW5rZmVobGVyJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ0Fic2VuZGVuJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9lZGl0ZXZlbnRfdGVtcGxhdGUnXSA9ICdWb3JlaW5nZXN0ZWxsdGUgVm9ybGFnZSBmw7xyIOKAnlRlcm1pbiBiZWFyYmVpdGVu4oCcJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9teWV2ZW50c190ZW1wbGF0ZSddID0gJ1ZvcmVpbmdlc3RlbGx0ZSBWb3JsYWdlIGbDvHIg4oCeTWVpbmUgVGVybWluZeKAnCc7CiRsYW5nWydwcm9tcHRfZmVlZGl0X2dyb3VwJ10gPSAnTWl0Z2xpZWRlciBkaWVzZXIgRkVVLUdydXBwZSBkw7xyZmVuIFRlcm1pbmUgaGluenVmw7xnZW4nOwokbGFuZ1sncHJvbXB0X2ZlZWRpdF9wYWdlJ10gPSAnVm9yZWluZ2VzdGVsbHRlIFNlaXRlIGbDvHIgZGFzIEJlYXJiZWl0dW5nc2Zvcm11bGFyIGF1ZiBkZXIgV2Vic2VpdGUvRnJvbnRlbmQnOwokbGFuZ1snbm9uZSddID0gJ0tlaW4oZSkvb2huZSBWb3JnYWJlJzsKJGxhbmdbJ293bmVyJ10gPSAnRWlnZW50w7xtZXInOwokbGFuZ1snY2FsX2VkaXRldmVudF90ZW1wbGF0ZXMnXSA9ICdWb3JsYWdlbiB6dW0gQmVhcmJlaXRlbiB2b24gVGVybWluLUZvcm11bGFyZW4nOwokbGFuZ1snaW5mb19lZGl0ZXZlbnRfdGVtcGxhdGVfdGFiJ10gPSAnRGllIExpc3RlIGRlciBWb3JsYWdlbiwgZGllIGbDvHIgZGllIEJlYXJiZWl0dW5nIHZvbiBUZXJtaW4tRm9ybXVsYXJlbiB2ZXJmw7xnYmFyIHNpbmQnOwokbGFuZ1snZWRpdGV2ZW50dGVtcGxhdGVfYWRkZWRpdCddID0gJ0VpbmUgVm9ybGFnZSB6dW0gQmVhcmJlaXRlbiB2b24gVGVybWluLUZvcm11bGFyZW4gaGluenVmw7xnZW4vYmVhcmJlaXRlbic7CiRsYW5nWydjYWxfbXlldmVudHNfdGVtcGxhdGVzJ10gPSAnTWVpbmUgVGVybWlubGlzdGVuLVZvcmxhZ2VuJzsKJGxhbmdbJ2luZm9fbXlldmVudHNfdGVtcGxhdGVfdGFiJ10gPSAnRGllIExpc3RlIGRlciBWb3JsYWdlbiwgZGllIGbDvHIgZGllIEFuemVpZ2UgZWluZXIgTGlzdGUgdm9uIEJlbnV0emVydGVybWluZW4gdmVyZsO8Z2JhciBzaW5kJzsKJGxhbmdbJ215ZXZlbnRzdGVtcGxhdGVfYWRkZWRpdCddID0gJ0VpbmUg4oCeTWVpbmUgVGVybWluZeKAnC1CZXJpY2h0c3ZvcmxhZ2UgaGluenVmw7xnZW4vYmVhcmJlaXRlbic7CiRsYW5nWydhcmV5b3VzdXJlX3JlbW92ZWNvbmZsaWN0aW5nJ10gPSAnTWl0IGRpZXNlciBBa3Rpb24gd2VyZGVuIGFsbGUgVGVybWluZSBlbnRmZXJudCwgZGllIEtvbmZsaWt0ZSBtaXQgVGVybWluZW4gaGVydm9ycnVmZW4sIGRpZSBuaWNodCB2b24gYW5kZXJlbiBUZXJtaW5lbiDDvGJlcmxhcHB0IHdlcmRlbiBkw7xyZmVuLiBXb2xsZW4gU2llIGRhcyB3aXJrbGljaD8nOwokbGFuZ1snZmlsdGVyX2NvbmZsaWN0aW5nJ10gPSAnS29uZmxpa3RiZWhhZnRldGUgVGVybWluZSBmaWx0ZXJuJzsKJGxhbmdbJ292ZXJsYXBfYWN0aW9uX3JlbW92ZSddID0gJ0tvbmZsaWt0YmVoYWZ0ZXRlIFRlcm1pbmUgc3RpbGwgZW50ZmVybmVuJzsKJGxhbmdbJ292ZXJsYXBfYWN0aW9uX2Vycm9yJ10gPSAnRWluZW4gRmVobGVyIGFuemVpZ2VuJzsKJGxhbmdbJ3Byb21wdF9vdmVybGFwX2FjdGlvbiddID0gJ1dhcyBzb2xsIHBhc3NpZXJlbiwgd2VubiBlaW4gS29uZmxpa3QgYmVpbSBFcnN0ZWxsZW4gb2RlciBCZWFyYmVpdGVuIGVpbmVzIFRlcm1pbnMgZmVzdGdlc3RlbGx0IHdpcmQ/JzsKJGxhbmdbJ2Vycm9yX2V2ZW50X2NvbmZsaWN0J10gPSAnRGllIGbDvHIgZGVuIFRlcm1pbiBlaW5nZWdlYmVuZW4gV2VydGUgw7xiZXJzY2huZWlkZW4gc2ljaCBtaXQgZWluZW0gYmVyZWl0cyBleGlzdGllcmVuZGVuIFRlcm1pbiwgZGVyIG5pY2h0IMO8YmVybGFwcHQgd2VyZGVuIGRhcmYnOwokbGFuZ1snY2FsX2luZm9fb3ZlcmxhcCddID0gJ051ciBhdWYgVGVybWluZSBtaXQgZWluZXIgRW5kemVpdCBvZGVyIGdhbnp0w6RnaWdlbiBUZXJtaW5lbiBhbndlbmRlbic7CiRsYW5nWydjYWxfb3ZlcmxhcCddID0gJ05ldWVuIFRlcm1pbmVuIGVybGF1YmVuLCBzaWNoIG1pdCBkaWVzZW4genUgw7xiZXJzY2huZWlkZW4nOwokbGFuZ1sncHJvbXB0X292ZXJsYXBfcG9saWN5J10gPSAnUmVnZWwgZsO8ciBUZXJtaW7DvGJlcnNjaG5laWR1bmdlbic7CiRsYW5nWydwb2xpY3lfYWxsJ10gPSAnQWxsZSBUZXJtaW5lIGvDtm5uZW4gc2ljaCDDvGJlcnNjaG5laWRlbic7CiRsYW5nWydwb2xpY3lfbm9uZSddID0gJ0tlaW4gVGVybWluIGRhcmYgc2ljaCDDvGJlcnNjaG5laWRlbic7CiRsYW5nWydwb2xpY3lfaW5kaXZpZHVhbCddID0gJ1NvbGwgZsO8ciBqZWRlbiBUZXJtaW4gaW5kaXZpZHVlbGwgZmVzdGdlbGVndCB3ZXJkZW4ga8O2bm5lbic7CiRsYW5nWydsYmxfYmFjayddID0gJ1p1csO8Y2snOwokbGFuZ1snbGJsX3RlbXBsYXRlcyddID0gJ1ZvcmxhZ2VuJzsKJGxhbmdbJ3RleHRhcmVhJ10gPSAnVGV4dGJlcmVpY2gnOwokbGFuZ1snZXJyb3JfY2FsZW5kYXJfaW5jb21wYXRpYmxlJ10gPSAnRXMgd3VyZGUgZmVzdGdlc3RlbGx0LCBkYXNzIGRhcyBNb2R1bCDigJ5DYWxlbmRhcuKAnCBlYmVuZmFsbHMgaW5zdGFsbGllcnQgaXN0LiBEaWVzZXMgTW9kdWwgaXN0IE5JQ0hUIGtvbXBhdGliZWwgbWl0IGRpZXNlbSBLYWxlbmRlcm1vZHVsIHVuZCBrYW5uIGF1Y2ggTklDSFQgZ2xlaWNoemVpdGlnIGluc3RhbGxpZXJ0IHNlaW4uIEJpdHRlIGRlaW5zdGFsbGllcmVuIFNpZSBkYXMg4oCeQ2FsZW5kYXLigJwtTW9kdWwuJzsKJGxhbmdbJ2Vycm9yX2V2ZW50X25vdF9mb3VuZCddID0gJ0VudHdlZGVyIGlzdCBkaWUgZXZlbnRfaWQgbmljaHQgaW4gZGVyIERhdGVuYmFuayB2b3JoYW5kZW4sIG9kZXIgZXMgZ2lidCBtZWhyZXJlIEVpbnRyw6RnZSBtaXQgZGllc2VyIElEISAoJWQpJzsKJGxhbmdbJ2ZpcnN0X3BhZ2UnXSA9ICfCqyc7CiRsYW5nWydwcmV2X3BhZ2UnXSA9ICfigLknOwokbGFuZ1snbmV4dF9wYWdlJ10gPSAn4oC6JzsKJGxhbmdbJ2xhc3RfcGFnZSddID0gJ8K7JzsKJGxhbmdbJ3BhZ2Vfb2YnXSA9ICdTZWl0ZSAlZCB2b24gJWQnOwokbGFuZ1snc2VhcmNoX3Jlc3VsdHMnXSA9ICdLYWxlbmRlci1TdWNoZXJnZWJuaXNzZSc7CiRsYW5nWydzZWFyY2hfd29yZHMnXSA9ICdTdWNoYmVncmlmZmUnOwokbGFuZ1snbm9fcmVzdWx0c19mb3VuZCddID0gJ0VzIHd1cmRlbiBrZWluZSBFcmdlYm5pc3NlIHp1bSBhbmdlZ2ViZW5lbiBTdWNoYmVncmlmZiBnZWZ1bmRlbic7CiRsYW5nWydmcmVxdWVuY3knXSA9ICdXaWVkZXJob2x1bmcnOwokbGFuZ1snc3BlY2lmaWVkX2RhdGUnXSA9ICdFaW4gYmVzdGltbXRlcyBEYXR1bSBiZW51dHplbic7CiRsYW5nWydmaXJzdF9zdW5kYXknXSA9ICdFcnN0ZXIgU29ubnRhZyBkZXMgTW9uYXRzJzsKJGxhbmdbJ2ZpcnN0X21vbmRheSddID0gJ0Vyc3RlciBNb250YWcgZGVzIE1vbmF0cyc7CiRsYW5nWydmaXJzdF90dWVzZGF5J10gPSAnRXJzdGVyIERpZW5zdGFnIGRlcyBNb25hdHMnOwokbGFuZ1snZmlyc3Rfd2VkbmVzZGF5J10gPSAnRXJzdGVyIE1pdHR3b2NoIGRlcyBNb25hdHMnOwokbGFuZ1snZmlyc3RfdGh1cnNkYXknXSA9ICdFcnN0ZXIgRG9ubmVyc3RhZyBkZXMgTW9uYXRzJzsKJGxhbmdbJ2ZpcnN0X2ZyaWRheSddID0gJ0Vyc3RlciBGcmVpdGFnIGRlcyBNb25hdHMnOwokbGFuZ1snZmlyc3Rfc2F0dXJkYXknXSA9ICdFcnN0ZXIgU2Ftc3RhZyBkZXMgTW9uYXRzJzsKJGxhbmdbJ3NlY29uZF9zdW5kYXknXSA9ICdad2VpdGVyIFNvbm50YWcgZGVzIE1vbmF0cyc7CiRsYW5nWydzZWNvbmRfbW9uZGF5J10gPSAnWndlaXRlciBNb250YWcgZGVzIE1vbmF0cyc7CiRsYW5nWydzZWNvbmRfdHVlc2RheSddID0gJ1p3ZWl0ZXIgRGllbnN0YWcgZGVzIE1vbmF0cyc7CiRsYW5nWydzZWNvbmRfd2VkbmVzZGF5J10gPSAnWndlaXRlciBNaXR0d29jaCBkZXMgTW9uYXRzJzsKJGxhbmdbJ3NlY29uZF90aHVyc2RheSddID0gJ1p3ZWl0ZXIgRG9ubmVyc3RhZyBkZXMgTW9uYXRzJzsKJGxhbmdbJ3NlY29uZF9mcmlkYXknXSA9ICdad2VpdGVyIEZyZWl0YWcgZGVzIE1vbmF0cyc7CiRsYW5nWydzZWNvbmRfc2F0dXJkYXknXSA9ICdad2VpdGVyIFNhbXN0YWcgZGVzIE1vbmF0cyc7CiRsYW5nWyd0aGlyZF9zdW5kYXknXSA9ICdEcml0dGVyIFNvbm50YWcgZGVzIE1vbmF0cyc7CiRsYW5nWyd0aGlyZF9tb25kYXknXSA9ICdEcml0dGVyIE1vbnRhZyBkZXMgTW9uYXRzJzsKJGxhbmdbJ3RoaXJkX3R1ZXNkYXknXSA9ICdEcml0dGVyIERpZW5zdGFnIGRlcyBNb25hdHMnOwokbGFuZ1sndGhpcmRfd2VkbmVzZGF5J10gPSAnRHJpdHRlciBNaXR0d29jaCBkZXMgTW9uYXRzJzsKJGxhbmdbJ3RoaXJkX3RodXJzZGF5J10gPSAnRHJpdHRlciBEb25uZXJzdGFnIGRlcyBNb25hdHMnOwokbGFuZ1sndGhpcmRfZnJpZGF5J10gPSAnRHJpdHRlciBGcmVpdGFnIGRlcyBNb25hdHMnOwokbGFuZ1sndGhpcmRfc2F0dXJkYXknXSA9ICdEcml0dGVyIFNhbXN0YWcgZGVzIE1vbmF0cyc7CiRsYW5nWydmb3VydGhfc3VuZGF5J10gPSAnVmllcnRlciBTb25udGFnIGRlcyBNb25hdHMnOwokbGFuZ1snZm91cnRoX21vbmRheSddID0gJ1ZpZXJ0ZXIgTW9udGFnIGRlcyBNb25hdHMnOwokbGFuZ1snZm91cnRoX3R1ZXNkYXknXSA9ICdWaWVydGVyIERpZW5zdGFnIGRlcyBNb25hdHMnOwokbGFuZ1snZm91cnRoX3dlZG5lc2RheSddID0gJ1ZpZXJ0ZXIgTWl0dHdvY2ggZGVzIE1vbmF0cyc7CiRsYW5nWydmb3VydGhfdGh1cnNkYXknXSA9ICdWaWVydGVyIERvbm5lcnN0YWcgZGVzIE1vbmF0cyc7CiRsYW5nWydmb3VydGhfZnJpZGF5J10gPSAnVmllcnRlciBGcmVpdGFnIGRlcyBNb25hdHMnOwokbGFuZ1snZm91cnRoX3NhdHVyZGF5J10gPSAnVmllcnRlciBTYW1zdGFnIGRlcyBNb25hdHMnOwokbGFuZ1snbGFzdF9zdW5kYXknXSA9ICdMZXR6dGVyIFNvbm50YWcgZGVzIE1vbmF0cyc7CiRsYW5nWydsYXN0X21vbmRheSddID0gJ0xldHp0ZXIgTW9udGFnIGRlcyBNb25hdHMnOwokbGFuZ1snbGFzdF90dWVzZGF5J10gPSAnTGV0enRlciBEaWVuc3RhZyBkZXMgTW9uYXRzJzsKJGxhbmdbJ2xhc3Rfd2VkbmVzZGF5J10gPSAnTGV0enRlciBNaXR0d29jaCBkZXMgTW9uYXRzJzsKJGxhbmdbJ2xhc3RfdGh1cnNkYXknXSA9ICdMZXR6dGVyIERvbm5lcnN0YWcgZGVzIE1vbmF0cyc7CiRsYW5nWydsYXN0X2ZyaWRheSddID0gJ0xldHp0ZXIgRnJlaXRhZyBkZXMgTW9uYXRzJzsKJGxhbmdbJ2xhc3Rfc2F0dXJkYXknXSA9ICdMZXR6dGVyIFNhbXN0YWcgZGVzIE1vbmF0cyc7CiRsYW5nWydlcnJvcl9pbnZhbGlkX3JlY3VyX21vbnRobHlfZnJlcSddID0gJ1VuZ8O8bHRpZ2UgV2llZGVyaG9sdW5nIOKAkyBlaW4gYmVzdGltbXRlcyBEYXR1bSBrYW5uIG5pY2h0IHp1c2FtbWVuIG1pdCBhbmRlcmVuIFdlcnRlbiBhbmdlZ2ViZW4gd2VyZGVuJzsKJGxhbmdbJ3NlYXJjaHJlc3VsdHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdFaW5lIFN1Y2hlcmdlYm5pc3ZvcmxhZ2UgaGluenVmw7xnZW4vYmVhcmJlaXRlbic7CiRsYW5nWydpbmZvX3NlYXJjaHJlc3VsdF90ZW1wbGF0ZV90YWInXSA9ICdFaW5lIExpc3RlIGRlciBWb3JsYWdlbiwgZGllIGbDvHIgZGllIEFuemVpZ2UgZGVyIFN1Y2hlcmdlYm5pc3NlIHZlcmbDvGdiYXIgc2luZCc7CiRsYW5nWydpbmZvX3N5c2RmbHRfc2VhcmNocmVzdWx0X3RlbXBsYXRlJ10gPSAnVm9yZWluZ2VzdGVsbHRlIFZvcmxhZ2UgZsO8ciBTdWNoZXJnZWJuaXMnOwokbGFuZ1snY2FsX3NlYXJjaF9yZXN1bHRfdGVtcGxhdGVzJ10gPSAnVm9ybGFnZW4gZsO8ciBTdWNoZXJnZWJuaXNzZSc7CiRsYW5nWydlcnJvcl9xdWVyeV9mYWlsZWQnXSA9ICdEYXRlbmJhbmthYmZyYWdlIGZlaGxnZXNjaGxhZ2VuJzsKJGxhbmdbJ2Vycm9yX3NlYXJjaF9pbnZhbGlkX2RhdGVzJ10gPSAnVW5nw7xsdGlnZSBTdWNoZGF0ZW4gYW5nZWdlYmVuJzsKJGxhbmdbJ3RleHQnXSA9ICdUZXh0JzsKJGxhbmdbJ3NlYXJjaCddID0gJ1N1Y2hlJzsKJGxhbmdbJ2NhdGVnb3J5J10gPSAnS2F0ZWdvcmllJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9zZWFyY2hfdGVtcGxhdGUnXSA9ICdWb3JlaW5nZXN0ZWxsdGUgU3VjaGZvcm11bGFydm9ybGFnZSc7CiRsYW5nWydzZWFyY2h0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnRWluIFN1Y2hmb3JtdWxhcnZvcmxhZ2UgaGluenVmw7xnZW4vYmVhcmJlaXRlbic7CiRsYW5nWydpbmZvX3NlYXJjaF90ZW1wbGF0ZV90YWInXSA9ICdMaXN0ZSBkZXIgVm9ybGFnZW4sIGRpZSBmw7xyIGRpZSBBbnplaWdlIGRlcyBTdWNoZm9ybXVsYXJzIHZlcmbDvGdiYXIgc2luZCc7CiRsYW5nWydjYWxfc2VhcmNoX2Zvcm1fdGVtcGxhdGVzJ10gPSAnU3VjaGZvcm11bGFydm9ybGFnZW4nOwokbGFuZ1snbWF4J10gPSAnbWF4aW1hbCc7CiRsYW5nWyd0aW1lcyddID0gJ01hbCc7CiRsYW5nWydvbiddID0gJ2FuJzsKJGxhbmdbJ2FyZXlvdXN1cmVfdW5pbnN0YWxsJ10gPSAnV29sbGVuIFNpZSBkYXMgd2lya2xpY2ggdHVuPyBJbiBkaWVzZW0gRmFsbCB3ZXJkZW4gYWxsZSBtaXQgZGllc2VtIE1vZHVsIHZlcmJ1bmRlbmVuIERhdGVuIGRhdWVyaGFmdCBnZWzDtnNjaHQuJzsKJGxhbmdbJ3Bvc3RfdW5pbnN0YWxsJ10gPSAnRGFzIEthbGVuZGVyLU1vZHVsIHd1cmRlIGRlaW5zdGFsbGllcnQuIFPDpG10bGljaGUsIGluIGRlbSBNb2R1bCB2b3JoYW5kZW5lbiBFcmVpZ25pc3NlIHVuZCBUZW1wbGF0ZXMgd3VyZGVuIGVudGZlcm50Lic7CiRsYW5nWydmaWVsZHVwZGF0ZWQnXSA9ICdGZWxkIGFrdHVhbGlzaWVydCc7CiRsYW5nWydldmVyeSddID0gJ0plZGVuJzsKJGxhbmdbJ29yJ10gPSAnb2Rlcic7CiRsYW5nWyd1cGRhdGVfY2hpbGRyZW4nXSA9ICdVbnRlcmdlb3JkbmV0ZSBFcmVpZ25pc3NlIGFrdHVhbGlzaWVyZW4nOwokbGFuZ1snZXJyb3Jfbm9jYXRlZ29yeSddID0gJ1NpZSBtw7xzc2VuIG1pbmRlc3RlbnMgZWluZSBLYXRlZ29yaWUgYXVzd8OkaGxlbic7CiRsYW5nWydlcnJvcl9ub3RoaW5nc2VsZWN0ZWQnXSA9ICdFcyB3dXJkZSBuaWNodHMgenVtIEzDtnNjaGVuIGF1c2dld8OkaGx0JzsKJGxhbmdbJ2Vycm9yX2V2ZW50b3ZlcmxhcCddID0gJ0RpZSB2b3JnZWdlYmVuZW4gUGFyYW1ldGVyIGbDvHIgZGFzIEVyZWlnbmlzIGhhdCBlaW5lIMOcYmVyc2NobmVpZHVuZyB2b24gRXJlaWduaXNzZW4genVyIEZvbGdlLic7CiRsYW5nWydyZWN1cnMnXSA9ICdXaWVkZXJrZWhyZW5kJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRfZGF0ZXMnXSA9ICdFaW4gb2RlciBtZWhyZXJlIGRlciBlaW5nZWdlYmVuZW4gRGF0ZW4gc2luZCB1bmfDvGx0aWcnOwokbGFuZ1snc3VuZGF5J10gPSAnU29ubnRhZyc7CiRsYW5nWydtb25kYXknXSA9ICdNb250YWcnOwokbGFuZ1sndHVlc2RheSddID0gJ0RpZW5zdGFnJzsKJGxhbmdbJ3dlZG5lc2RheSddID0gJ01pdHR3b2NoJzsKJGxhbmdbJ3RodXJzZGF5J10gPSAnRG9ubmVyc3RhZyc7CiRsYW5nWydmcmlkYXknXSA9ICdGcmVpdGFnJzsKJGxhbmdbJ3NhdHVyZGF5J10gPSAnU29ubmFiZW5kJzsKJGxhbmdbJ2FiYnJfc3VuZGF5J10gPSAnU28nOwokbGFuZ1snYWJicl9tb25kYXknXSA9ICdNbyc7CiRsYW5nWydhYmJyX3R1ZXNkYXknXSA9ICdEaSc7CiRsYW5nWydhYmJyX3dlZG5lc2RheSddID0gJ01pJzsKJGxhbmdbJ2FiYnJfdGh1cnNkYXknXSA9ICdEbyc7CiRsYW5nWydhYmJyX2ZyaWRheSddID0gJ0ZyJzsKJGxhbmdbJ2FiYnJfc2F0dXJkYXknXSA9ICdTYSc7CiRsYW5nWyd3ZWVrJ10gPSAnV29jaGUnOwokbGFuZ1snbW9udGgnXSA9ICdNb25hdCc7CiRsYW5nWydkYXknXSA9ICdUYWcnOwokbGFuZ1sndG9kYXknXSA9ICdIZXV0ZSc7CiRsYW5nWyd3ZWVrZGF5cyddID0gJ1dvY2hlbnRhZ2UnOwokbGFuZ1sncGx1cmFsX2RhaWx5J10gPSAnVGFnZSc7CiRsYW5nWydwbHVyYWxfd2Vla2x5J10gPSAnV29jaGVuJzsKJGxhbmdbJ3BsdXJhbF9tb250aGx5J10gPSAnTW9uYXRlJzsKJGxhbmdbJ3BsdXJhbF95ZWFybHknXSA9ICdKYWhyZSc7CiRsYW5nWydubyddID0gJ05laW4nOwokbGFuZ1snZGFpbHknXSA9ICdUw6RnbGljaCc7CiRsYW5nWyd3ZWVrbHknXSA9ICdXw7ZjaGVudGxpY2gnOwokbGFuZ1snbW9udGhseSddID0gJ01vbmF0bGljaCc7CiRsYW5nWyd5ZWFybHknXSA9ICdKw6RocmxpY2gnOwokbGFuZ1snaW50ZXJ2YWwnXSA9ICdXaWVkZXJob2x1bmcnOwokbGFuZ1snY2FsX3JlY3VyX2RldGFpbHMnXSA9ICdEZXRhaWxzIHp1IHdpZWRlcmtlaHJlbmRlbiBUZXJtaW5lbic7CiRsYW5nWyd1bmxpbWl0ZWQnXSA9ICdVbmJlc2NocsOkbmt0JzsKJGxhbmdbJ21heF9yZWN1cl9ldmVudHMnXSA9ICdNYXhpbWFsZSBBbnphaGwgdm9uIHVudGVyZ2VvcmRuZXRlbiBUZXJtaW5lbic7CiRsYW5nWyd1c2VfdG9fZGF0ZSddID0gJ03DtmNodGVuIFNpZSBlaW4gYWJ3ZWljaGVuZGVzIEVuZGRhdHVtIGVpbmdlYmVuPyc7CiRsYW5nWydjYW5jZWwnXSA9ICdBYmJyZWNoZW4nOwokbGFuZ1snc2hvd19jaGlsZF9ldmVudHMnXSA9ICdVbnRlcmdlb3JkbmV0ZSBUZXJtaW5lIGFuemVpZ2VuIDxlbT4oZGFzIEVyZ2VibmlzIGthbm4gZWluZSBzZWhyIGxhbmdlIExpc3RlIHNlaW4pPC9lbT4nOwokbGFuZ1snbi9hJ10gPSAna2VpbmUgQW5nYWJlJzsKJGxhbmdbJ3JlY3Vyc191bnRpbCddID0gJ1dpZWRlcmtlaHJlbmQgYmlzJzsKJGxhbmdbJ3BhcmVudCddID0gJ8OcYmVyZ2VvcmRuZXQnOwokbGFuZ1sncmVjdXJfcGVyaW9kJ10gPSAnSMOkdWZpZ2tlaXQnOwokbGFuZ1snZmlsdGVyJ10gPSAnQW56ZWlnZSBmaWx0ZXJuJzsKJGxhbmdbJ3N0YXJ0X2RhdGUnXSA9ICdCZWdpbm4nOwokbGFuZ1snZW5kX2RhdGUnXSA9ICdFbmRlJzsKJGxhbmdbJ2luZm9fdXBjb21pbmdsaXN0X3RlbXBsYXRlX3RhYiddID0gJ0xpc3RlIGRlciBWb3JsYWdlbiwgZGllIGbDvHIgZGllIEFuemVpZ2UgZGVyIExpc3RlIGbDvHIgenVrw7xuZnRpZ2UgVGVybWluZSB2ZXJmw7xnYmFyIHNpbmQnOwokbGFuZ1sndXBjb21pbmdsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ0VpbmUgVm9ybGFnZSBmw7xyIGRpZSBBbnplaWdlIGVpbmVyIExpc3RlIG1pdCB6dWvDvG5mdGlnZW4gVGVybWluZW4gaGluenVmw7xnZW4vYmVhcmJlaXRlbic7CiRsYW5nWydpbmZvX3N5c2RmbHRfdXBjb21pbmdsaXN0X3RlbXBsYXRlJ10gPSAnU3RhbmRhcmR2b3JsYWdlIGbDvHIgenVrw7xuZnRpZ2UgRXJlaWduaXNzZSc7CiRsYW5nWydpbmZvX2xpc3RfdGVtcGxhdGVfdGFiJ10gPSAnRGllIExpc3RlIGRlciBWb3JsYWdlbiwgZGllIGbDvHIgZGllIEFuemVpZ2UgZGVyIExpc3RlIGbDvHIgRXJlaWduaXNzZSB2ZXJmw7xnYmFyIHNpbmQnOwokbGFuZ1snbGlzdHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdFaW5lIFZvcmxhZ2UgZsO8ciBkaWUgQW56ZWlnZSB2b24gTGlzdGVuIGhpbnp1ZsO8Z2VuL2JlYXJiZWl0ZW4nOwokbGFuZ1snaW5mb19zeXNkZmx0X2xpc3RfdGVtcGxhdGUnXSA9ICdTdGFuZGFyZC1MaXN0ZW52b3JsYWdlJzsKJGxhbmdbJ2luZm9fZXZlbnRfdGVtcGxhdGVfdGFiJ10gPSAnTGlzdGUgZGVyIFZvcmxhZ2VuLCBkaWUgZsO8ciBkaWUgQW56ZWlnZSBkZXIgVGVybWluZW4gYmVyZWl0IHN0ZWhlbic7CiRsYW5nWydldmVudHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdFaW5lIFZvcmxhZ2UgZsO8ciBkaWUgQW56ZWlnZSB2b24gVGVybWluZW4gaGluenVmw7xnZW4vYmVhcmJlaXRlbic7CiRsYW5nWydpbmZvX3N5c2RmbHRfZXZlbnRfdGVtcGxhdGUnXSA9ICdTdGFuZGFyZC1FcmVpZ25pc3ZvcmxhZ2UnOwokbGFuZ1snaW5mb19zeXNkZmx0X2Z1bGxjYWxlbmRhcl90ZW1wbGF0ZSddID0gJ1Byb3RvdHlwIGRlciDigJ5mdWxsQ2FsZW5kYXLigJwtVm9ybGFnZSc7CiRsYW5nWydpbmZvX2NhbGVuZGFyX3RlbXBsYXRlX3RhYiddID0gJ0RpZSBMaXN0ZSBkZXIgVm9ybGFnZW4sIGRpZSBmw7xyIGRpZSBBbnplaWdlIGRlcyBLYWxlbmRlcnMgYmVyZWl0IHN0ZWhlbic7CiRsYW5nWydpbmZvX2Z1bGxjYWxlbmRhcl90ZW1wbGF0ZV90YWInXSA9ICdEaWUgTGlzdGUgZGVyIFZvcmxhZ2VuLCBkaWUgZsO8ciBkaWUg4oCeZnVsbENhbGVuZGFy4oCcLUFuc2ljaHQgdmVyZsO8Z2JhciBzaW5kLic7CiRsYW5nWydmdWxsY2FsZW5kYXJ0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnZnVsbENhbGVuZGFyLVZvcmxhZ2UgaGluenVmw7xnZW4gb2RlciBiZWFyYmVpdGVuJzsKJGxhbmdbJ2NhbGVuZGFydGVtcGxhdGVfYWRkZWRpdCddID0gJ0VpbmUgVm9ybGFnZSBmw7xyIGRpZSBBbnplaWdlIGVpbmVzIEthbGVuZGVycyBoaW56dWbDvGdlbi9iZWFyYmVpdGVuJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ1N0YW5kYXJkLUthbGVuZGVydm9ybGFnZSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfdGVtcGxhdGUnXSA9ICdJbiBkaWVzZW0gRm9ybXVsYXIga8O2bm5lbiBWb3JsYWdlbiBmZXN0Z2VsZWd0IHdlcmRlbiwgZGllIGRhbm4gZWluZ2Vmw7xndCB3ZXJkZW4sIHdlbm4gU2llIGluIGRlciBqZXdlaWxpZ2VuIFJlZ2lzdGVya2FydGUgYXVmIOKAnk5ldWUgVm9ybGFnZeKAnCBrbGlja2VuLiBIaWVyIHZvcmdlbm9tbWVuZSDDhG5kZXJ1bmdlbiBoYWJlbiBrZWluZSBkaXJla3RlIEF1c3dpcmt1bmdlbiBhdWYgZGllIEF1c2dhYmUgZGllc2VzIE1vZHVscy4nOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50QWRkZWQnXSA9ICdBdXNmw7xocmVuLCBuYWNoZGVtIGVpbiBUZXJtaW4gaGluenVmw7xndCB3dXJkZSc7CiRsYW5nWydldmVudGRlc2MtRXZlbnRFZGl0ZWQnXSA9ICdBdXNmw7xocmVuLCBuYWNoZGVtIGVpbiBUZXJtaW4gYmVhcmJlaXRldCB3dXJkZSc7CiRsYW5nWydldmVudGRlc2MtRXZlbnREZWxldGVkJ10gPSAnQXVzZsO8aHJlbiwgbmFjaGRlbSBlaW4gVGVybWluIGdlbMO2c2NodCB3dXJkZSc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlBZGRlZCddID0gJ0F1c2bDvGhyZW4sIG5hY2hkZW0gZWluZSBLYXRlZ29yaWUgaGluenVnZWbDvGd0IHd1cmRlJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUVkaXRlZCddID0gJ0F1c2bDvGhyZW4sIG5hY2hkZW0gZWluZSBLYXRlZ29yaWUgYmVhcmJlaXRldCB3dXJkZSc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnQXVzZsO8aHJlbiwgbmFjaGRlbSBlaW5lIEthdGVnb3JpZSBnZWzDtnNjaHQgd3VyZGUnOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50QWRkZWQnXSA9ICc8cD5BdXNmw7xocmVuLCB3ZW5uIGVpbiBUZXJtaW4gaGluenVnZWbDvGd0IHd1cmRlLjwvcD4NCjx0YWJsZT4NCgk8dGhlYWQ+DQoJCTx0cj4NCgkJCTx0aD5QYXJhbWV0ZXI8L3RoPg0KCQkJPHRkPkJlc2NocmVpYnVuZzwvdGQ+DQoJCTwvdHI+DQoJPC90aGVhZD4NCgk8dGJvZHk+DQo8dHI+DQo8dGg+ZXZlbnRfdGl0bGU8L3RoPg0KPHRkPk5hbWUgZGVzIFRlcm1pbnM8L3RkPg0KPC90cj4NCjx0cj4NCjx0aD5ldmVudF9zdW1tYXJ5PC90aD4NCjx0ZD5adXNhbW1lbmZhc3N1bmcgZGVzIFRlcm1pbnM8L3RkPg0KPC90cj4NCjx0cj4NCjx0aD5ldmVudF9kZXRhaWxzPC90aD4NCjx0ZD5EZXRhaWxsaWVydGUgQmVzY2hyZWlidW5nPC90ZD4NCjwvdHI+DQo8dHI+DQo8dGg+ZXZlbnRfZGF0ZV9zdGFydDwvdGg+DQo8dGQ+U3RhcnRkYXR1bS8temVpdCBkZXMgVGVybWluczwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRoPmV2ZW50X2RhdGVfZW5kPC90aD4NCjx0ZD5FbmRkYXR1bS8temVpdCBkZXMgVGVybWluczwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRoPmV2ZW50X2NyZWF0ZWRfYnk8L3RoPg0KPHRkPkJlbnV0emVyLUlEIGRlcyBBdXRvcnM8L3RkPg0KPC90cj4NCjx0cj4NCjx0aD5ldmVudF9pZDwvdGg+DQo8dGQ+SUQgZGVzIFRlcm1pbnM8L3RkPg0KPC90cj4NCjwvdGJvZHk+DQo8L3RhYmxlPic7CiRsYW5nWydldmVudGhlbHAtRXZlbnRFZGl0ZWQnXSA9ICc8cD5BdXNmw7xocmVuLCB3ZW5uIGVpbiBUZXJtaW4gYmVhcmJlaXRldCB3dXJkZS48L3A+DQo8dGFibGU+DQoJPHRoZWFkPg0KCQk8dHI+DQoJCQk8dGg+UGFyYW1ldGVyPC90aD4NCgkJCTx0ZD5CZXNjaHJlaWJ1bmc8L3RkPg0KCQk8L3RyPg0KCTwvdGhlYWQ+DQoJPHRib2R5Pg0KPHRyPg0KPHRoPmV2ZW50X3RpdGxlPC90aD4NCjx0ZD5OYW1lIGRlcyBUZXJtaW5zPC90ZD4NCjwvdHI+DQo8dHI+DQo8dGg+ZXZlbnRfc3VtbWFyeTwvdGg+DQo8dGQ+WnVzYW1tZW5mYXNzdW5nIGRlcyBUZXJtaW5zPC90ZD4NCjwvdHI+DQo8dHI+DQo8dGg+ZXZlbnRfZGV0YWlsczwvdGg+DQo8dGQ+RGV0YWlsbGllcnRlIEJlc2NocmVpYnVuZzwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRoPmV2ZW50X2RhdGVfc3RhcnQ8L3RoPg0KPHRkPlN0YXJ0ZGF0dW0vLXplaXQgZGVzIFRlcm1pbnM8L3RkPg0KPC90cj4NCjx0cj4NCjx0aD5ldmVudF9kYXRlX2VuZDwvdGg+DQo8dGQ+RW5kZGF0dW0vLXplaXQgZGVzIFRlcm1pbnM8L3RkPg0KPC90cj4NCjx0cj4NCjx0aD5ldmVudF9jcmVhdGVkX2J5PC90aD4NCjx0ZD5CZW51dHplci1JRCBkZXMgQXV0b3JzPC90ZD4NCjwvdHI+DQo8dHI+DQo8dGg+ZXZlbnRfaWQ8L3RoPg0KPHRkPklEIGRlcyBUZXJtaW5zPC90ZD4NCjwvdHI+DQo8L3Rib2R5Pg0KPC90YWJsZT4nOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50RGVsZXRlZCddID0gJzxwPkF1c2bDvGhyZW4sIHdlbm4gZWluIFRlcm1pbiBnZWzDtnNjaHQgd3VyZGUuPC9wPg0KPHRhYmxlPg0KCTx0aGVhZD4NCgkJPHRyPg0KCQkJPHRoPlBhcmFtZXRlcjwvdGg+DQoJCQk8dGQ+QmVzY2hyZWlidW5nPC90ZD4NCgkJPC90cj4NCgk8L3RoZWFkPg0KCTx0Ym9keT4NCjx0cj4NCjx0aD5ldmVudF9pZDwvdGg+DQo8dGQ+SUQgZGVzIFRlcm1pbnM8L3RkPg0KPC90cj4NCjwvdGJvZHk+DQo8L3RhYmxlPic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlBZGRlZCddID0gJzxwPkF1c2bDvGhyZW4sIHdlbm4gZWluZSBLYWxlbmRlci1LYXRlZ29yaWUgaGluenVnZWbDvGd0IHd1cmRlLjwvcD4NCjx0YWJsZT4NCgk8dGhlYWQ+DQoJCTx0cj4NCgkJCTx0aD5QYXJhbWV0ZXI8L3RoPg0KCQkJPHRkPkJlc2NocmVpYnVuZzwvdGQ+DQoJCTwvdHI+DQoJPC90aGVhZD4NCgk8dGJvZHk+DQo8dHI+DQo8dGg+Y2F0ZWdvcnlfaWQ8L3RoPg0KPHRkPklEIGRlciBLYXRlZ29yaWU8L3RkPg0KPC90cj4NCjwvdGJvZHk+DQo8L3RhYmxlPic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlFZGl0ZWQnXSA9ICc8cD5BdXNmw7xocmVuLCB3ZW5uIGVpbmUgS2FsZW5kZXItS2F0ZWdvcmllIGJlYXJiZWl0ZXQgd3VyZGUuPC9wPg0KPHRhYmxlPg0KCTx0aGVhZD4NCgkJPHRyPg0KCQkJPHRoPlBhcmFtZXRlcjwvdGg+DQoJCQk8dGQ+QmVzY2hyZWlidW5nPC90ZD4NCgkJPC90cj4NCgk8L3RoZWFkPg0KCTx0Ym9keT4NCjx0cj4NCjx0aD5jYXRlZ29yeV9pZDwvdGg+DQo8dGQ+SUQgZGVyIEthdGVnb3JpZTwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRoPmNhdGVnb3J5X25hbWU8L3RoPg0KPHRkPk5hbWUgZGVyIEthdGVnb3JpZTwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRoPmNhdGVnb3J5X29yZGVyPC90aD4NCjx0ZD5Tb3J0aWVydW5nIGRlciBLYXRlZ29yaWU8L3RkPg0KPC90cj4NCjwvdGJvZHk+DQo8L3RhYmxlPic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnPHA+QXVzZsO8aHJlbiwgd2VubiBlaW5lIEthbGVuZGVyLUthdGVnb3JpZSBnZWzDtnNjaHQgd3VyZGUuPC9wPg0KPHRhYmxlPg0KCTx0aGVhZD4NCgkJPHRyPg0KCQkJPHRoPlBhcmFtZXRlcjwvdGg+DQoJCQk8dGQ+QmVzY2hyZWlidW5nPC90ZD4NCgkJPC90cj4NCgk8L3RoZWFkPg0KCTx0Ym9keT4NCjx0cj4NCjx0aD5jYXRlZ29yeV9pZDwvdGg+DQo8dGQ+SUQgZGVyIEthdGVnb3JpZTwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRoPmNhdGVnb3J5X25hbWU8L3RoPg0KPHRkPk5hbWUgZGVyIEthdGVnb3JpZTwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRoPmNhdGVnb3J5X29yZGVyPC90aD4NCjx0ZD5Tb3J0aWVydW5nIGRlciBLYXRlZ29yaWU8L3RkPg0KPC90cj4NCjwvdGJvZHk+DQo8L3RhYmxlPic7CiRsYW5nWydlcnJvcl9jc3ZfaW5zZXJ0J10gPSAnRmVobGVyIGJlaW0gSW1wb3J0aWVyZW4gZWluZXMgVGVybWlucyBpbiBkZXIgQ1NWLURhdGVpIGluIFplaWxlICVkJzsKJGxhbmdbJ2Vycm9yX2NzdmZpcnN0bGluZWZsZG5vdGZvdW5kJ10gPSAnRGFzIFBmbGljaHRmZWxkICVzIGtvbm50ZSBpbiBkZXIgS29wZnplaWxlIGRlciBDU1YgbmljaHQgZ2VmdW5kZW4gd2VyZGVuJzsKJGxhbmdbJ2Vycm9yX2NzdmludmFsaWRmaXJzdGxpbmUnXSA9ICdJbiBkZXIgQ1NWLURhdGVpIGtvbm50ZSBrZWluZSBnw7xsdGlnZSBlcnN0ZSBaZWlsZSBnZWZ1bmRlbiB3ZXJkZW4nOwokbGFuZ1snbXNnX2V2ZW50YWRkZWQnXSA9ICdUZXJtaW4gaGluenVnZWbDvGd0JzsKJGxhbmdbJ2Vycm9yX25vZXZlbnRuYW1lJ10gPSAnU2llIG3DvHNzZW4gZWluZW4gTmFtZW4gZsO8ciBkZW4gVGVybWluIGVpbmdlYmVuJzsKJGxhbmdbJ2Vycm9yX25vdXBsb2FkJ10gPSAnRkVITEVSOiBFcyB3dXJkZSBrZWluZSBob2NoZ2VsYWRlbmUgRGF0ZWkgZ2VmdW5kZW4nOwokbGFuZ1snZXJyb3JfaW52YWxpZGZpbGVuYW1lJ10gPSAnRkVITEVSOiBEaWUgaG9jaGdlbGFkZW5lIERhdGVpIGthbm4gbmljaHQgYWt6ZXB0aWVydCB3ZXJkZW4nOwokbGFuZ1snZXJyb3JfcHJvYmxlbXdpdGh1cGxvYWQnXSA9ICdGRUhMRVI6IEJlaW0gSG9jaGxhZGVuIGRlciBEYXRlaSBpc3QgZWluIEZlaGxlciBhdWZnZXRyZXRlbic7CiRsYW5nWydlcnJvcl9maWxlY29weWZhaWxlZCddID0gJ0ZFSExFUjogQmVpbSBLb3BpZXJlbiBkZXIgRGF0ZWkgYW4gZGVuIFppZWxvcnQgaXN0IGVpbiBGZWhsZXIgYXVmZ2V0cmV0ZW4nOwokbGFuZ1snZXJyb3JfZmlsZWV4aXN0cyddID0gJ0ZFSExFUjogRWluZSBEYXRlaSBtaXQgZGllc2VtIE5hbWVuIGV4aXN0aWVydCBiZXJlaXRzJzsKJGxhbmdbJ2Vycm9yX2NzdmZpbGVub3Rmb3VuZCddID0gJ0ZFSExFUjogS29ubnRlIGRpZSBDU1YtRGF0ZWkgbmljaHQgZmluZGVuJzsKJGxhbmdbJ2Vycm9yX2NhbnRvcGVuZmlsZSddID0gJ0ZFSExFUjogS29ubnRlIGRpZSBEYXRlaSBuaWNodCDDtmZmbmVuJzsKJGxhbmdbJ2Vycm9yX2NhdGVnb3J5ZXhpc3RzJ10gPSAnRkVITEVSOiBFaW5lIEthdGVnb3JpZSBtaXQgZGVtIE5hbWVuICVzIGV4aXN0aWVydCBiZXJlaXRzJzsKJGxhbmdbJ2NhbF9pZCddID0gJ0lEJzsKJGxhbmdbJ2NhbF9mdWxsY2FsZW5kYXJfdGVtcGxhdGUnXSA9ICdmdWxsQ2FsZW5kYXItVm9ybGFnZW4nOwokbGFuZ1snY2FsX2NhbGVuZGFyJ10gPSAnS2FsZW5kZXIgKOKAnkNHQ2FsZW5kYXLigJwpJzsKJGxhbmdbJ2NhbF9kZWZhdWx0X3RlbXBsYXRlcyddID0gJ1N0YW5kYXJkdm9ybGFnZW4nOwokbGFuZ1snY2FsX2Rlc2NyaXB0aW9uJ10gPSAnRWluIGZsZXhpYmxlcyBNb2R1bCwgdW0gSW5mb3JtYXRpb25lbiDDvGJlciBUZXJtaW5lIGluIHZlcnNjaGllZGVuZW4gRm9ybWF0ZW4gYW56dXplaWdlbi4nOwokbGFuZ1snY2FsX2FkZGV2ZW50J10gPSAnVGVybWluIGhpbnp1ZsO8Z2VuJzsKJGxhbmdbJ2NhbF9pbXBvcnRfZXZlbnRzJ10gPSAnVGVybWluZSBpbXBvcnRpZXJlbic7CiRsYW5nWydjYWxfZXZlbnRzJ10gPSAnVGVybWluZSc7CiRsYW5nWydjYWxfY2F0ZWdvcmllcyddID0gJ0thdGVnb3JpZW4nOwokbGFuZ1snY2FsX2NhbGVuZGFyX3RlbXBsYXRlJ10gPSAnS2FsZW5kZXJ2b3JsYWdlJzsKJGxhbmdbJ2NhbF9saXN0X3RlbXBsYXRlJ10gPSAnTGlzdGVudm9ybGFnZSc7CiRsYW5nWydjYWxfdXBjb21pbmdsaXN0X3RlbXBsYXRlJ10gPSAnVm9ybGFnZSBmw7xyIGJldm9yc3RlaGVuZGUgVGVybWluZSc7CiRsYW5nWydjYWxfZXZlbnRfdGVtcGxhdGUnXSA9ICdUZXJtaW52b3JsYWdlJzsKJGxhbmdbJ2NhbF9zZXR0aW5ncyddID0gJ0VpbnN0ZWxsdW5nZW4nOwokbGFuZ1snY2FsX3ByZXYnXSA9ICfigLkgenVyw7xjayc7CiRsYW5nWydjYWxfbmV4dCddID0gJ3dlaXRlciDigLonOwokbGFuZ1snY2FsX2NhdGVnb3JpZXNfdXBkYXRlZCddID0gJ0thdGVnb3JpZW4gYWt0dWFsaXNpZXJ0JzsKJGxhbmdbJ2NhbF9zZXR0aW5nc191cGRhdGVkJ10gPSAnRWluc3RlbGx1bmdlbiBha3R1YWxpc2llcnQnOwokbGFuZ1snY2FsX2FkZF9ldmVudCddID0gJ1Rlcm1pbiBoaW56dWbDvGdlbic7CiRsYW5nWydjYWxfZWRpdCddID0gJ0JlYXJiZWl0ZW4nOwokbGFuZ1snY2FsX2RlbGV0ZSddID0gJ0zDtnNjaGVuJzsKJGxhbmdbJ2NhbF9hcmV5b3VzdXJlJ10gPSAnV29sbGVuIFNpZSBkaWVzIHdpcmtsaWNoIGzDtnNjaGVuPyc7CiRsYW5nWydjYWxfdXBkYXRlX3RlbXBsYXRlJ10gPSAnVm9ybGFnZSBha3R1YWxpc2llcmVuJzsKJGxhbmdbJ2NhbF9zdW5kYXknXSA9ICdTb25udGFnJzsKJGxhbmdbJ2NhbF9tb25kYXknXSA9ICdNb250YWcnOwokbGFuZ1snY2FsX3R1ZXNkYXknXSA9ICdEaWVuc3RhZyc7CiRsYW5nWydjYWxfd2VkbmVzZGF5J10gPSAnTWl0dHdvY2gnOwokbGFuZ1snY2FsX3RodXJzZGF5J10gPSAnRG9ubmVyc3RhZyc7CiRsYW5nWydjYWxfZnJpZGF5J10gPSAnRnJlaXRhZyc7CiRsYW5nWydjYWxfc2F0dXJkYXknXSA9ICdTYW1zdGFnJzsKJGxhbmdbJ2NhbF9zdW4nXSA9ICdTbyc7CiRsYW5nWydjYWxfbW9uJ10gPSAnTW8nOwokbGFuZ1snY2FsX3R1ZXMnXSA9ICdEaSc7CiRsYW5nWydjYWxfd2VkJ10gPSAnTWknOwokbGFuZ1snY2FsX3RodXJzJ10gPSAnRG8nOwokbGFuZ1snY2FsX2ZyaSddID0gJ0ZyJzsKJGxhbmdbJ2NhbF9zYXQnXSA9ICdTYSc7CiRsYW5nWydjYWxfamFudWFyeSddID0gJ0phbnVhcic7CiRsYW5nWydjYWxfZmVicnVhcnknXSA9ICdGZWJydWFyJzsKJGxhbmdbJ2NhbF9tYXJjaCddID0gJ03DpHJ6JzsKJGxhbmdbJ2NhbF9hcHJpbCddID0gJ0FwcmlsJzsKJGxhbmdbJ2NhbF9tYXknXSA9ICdNYWknOwokbGFuZ1snY2FsX2p1bmUnXSA9ICdKdW5pJzsKJGxhbmdbJ2NhbF9qdWx5J10gPSAnSnVsaSc7CiRsYW5nWydjYWxfYXVndXN0J10gPSAnQXVndXN0JzsKJGxhbmdbJ2NhbF9zZXB0ZW1iZXInXSA9ICdTZXB0ZW1iZXInOwokbGFuZ1snY2FsX29jdG9iZXInXSA9ICdPa3RvYmVyJzsKJGxhbmdbJ2NhbF9ub3ZlbWJlciddID0gJ05vdmVtYmVyJzsKJGxhbmdbJ2NhbF9kZWNlbWJlciddID0gJ0RlemVtYmVyJzsKJGxhbmdbJ2NhbF9hZGQnXSA9ICdIaW56dWbDvGdlbic7CiRsYW5nWydjYWxfdXBkYXRlJ10gPSAnQWt0dWFsaXNpZXJlbic7CiRsYW5nWydjYWxfZXZlbnQnXSA9ICdUZXJtaW4nOwokbGFuZ1snY2FsX2RhdGUnXSA9ICdEYXR1bSc7CiRsYW5nWydjYWxfc3VtbWFyeSddID0gJ1p1c2FtbWVuZmFzc3VuZyc7CiRsYW5nWydjYWxfZGV0YWlscyddID0gJ0RldGFpbHMnOwokbGFuZ1snY2FsX21vcmUnXSA9ICdtZWhyJzsKJGxhbmdbJ2NhbF9yZXR1cm4nXSA9ICdadXLDvGNrJzsKJGxhbmdbJ2NhbF90byddID0gJ2Jpcyc7CiRsYW5nWydjYWxfcGFzdF9ldmVudHMnXSA9ICdWZXJnYW5nZW5lIFRlcm1pbmUnOwokbGFuZ1snY2FsX3VwY29taW5nX2V2ZW50cyddID0gJ0Jldm9yc3RlaGVuZGUgVGVybWluZSc7CiRsYW5nWydjYWxfYW55X2NhdGVnb3J5J10gPSAnSXJnZW5kZWluZXIgS2F0ZWdvcmllJzsKJGxhbmdbJ2NhbF9zaG93X29ubHlfZXZlbnRzX2luJ10gPSAnTnVyIFRlcm1pbmUgYW56ZWlnZW4gYXVzJzsKJGxhbmdbJ2NhbF9maWx0ZXJfYnknXSA9ICdUaXRlbCBmaWx0ZXJuIG1pdCA8ZW0+KHJlZ2V4KTwvZW0+JzsKJGxhbmdbJ2NhbF9nbyddID0gJ0ZpbHRlcm4nOwokbGFuZ1snY2FsX3RpdGxlJ10gPSAnVGl0ZWwnOwokbGFuZ1snY2FsX2Zyb21kYXRlJ10gPSAnQW5mYW5nc2RhdHVtJzsKJGxhbmdbJ2NhbF90b2RhdGUnXSA9ICdFbmRkYXR1bSc7CiRsYW5nWydjYWxfdXBkYXRlX2NhdGVnb3JpZXMnXSA9ICdLYXRlZ29yaWVuIGFrdHVhbGlzaWVyZW4nOwokbGFuZ1snY2FsX2xhbmd1YWdlJ10gPSAnU3ByYWNoZSc7CiRsYW5nWydjYWxfdXBkYXRlc2V0dGluZ3MnXSA9ICdFaW5zdGVsbHVuZ2VuIGFrdHVhbGlzaWVyZW4nOwokbGFuZ1snY2FsX3VzZV90d2VsdmVfaG91cl9jbG9jayddID0gJ0luIGRlbiBMaXN0ZW5tZW7DvGZlbGRlcm4gZGllIDEyLVN0dW5kZW4tQW56ZWlnZSB2ZXJ3ZW5kZW4/JzsKJGxhbmdbJ2NhbF9kZWZhdWx0X2NhdGVnb3J5J10gPSAnU3RhbmRhcmRrYXRlZ29yaWUnOwokbGFuZ1snY2FsX3VwZGF0ZV9maWVsZHMnXSA9ICdGZWxkZXIgYWt0dWFsaXNpZXJlbic7CiRsYW5nWydmb3JjZV9jYXRlZ29yeSddID0gJ0bDvHIgZGVuIFRlcm1pbiBtdXNzIG1pbmRlc3RlbnMgZWluZSBLYXRlZ29yaWUgZmVzdGdlbGVndCB3ZXJkZW4nOwokbGFuZ1snc2hvd3Bhc3R5ZWFycyddID0gJ1dpZXZpZWxlIEphaHJlIGluIGRpZSBWZXJnYW5nZW5oZWl0IHNvbGxlbiBhbmdlemVpZ3Qgd2VyZGVuJzsKJGxhbmdbJ3Nob3dmdXR1cmV5ZWFycyddID0gJ1dpZXZpZWxlIEphaHJlIGluIGRpZSBadWt1bmZ0IHNvbGxlbiBhbmdlemVpZ3Qgd2VyZGVuJzsKJGxhbmdbJ2hpZGVzdW1tYXJ5J10gPSAnRGllIEFuemVpZ2UgZGVzIFp1c2FtbWVuZmFzc3VuZ3NmZWxkZXMgZGVha3RpdmVyZW4gKG51ciBpbiBkZXIgQWRtaW5pc3RyYXRpb24pJzsKJGxhbmdbJ2hpZGVjb250ZW50J10gPSAnRGllIEFuemVpZ2UgZGVzIERldGFpbGZlbGRlcyBkZWFrdGl2ZXJlbiAobnVyIGluIGRlciBBZG1pbmlzdHJhdGlvbiknOwokbGFuZ1snY2F0ZWdvcnlfcmVtaW5kZXInXSA9ICdCaXR0ZSBsZWdlbiBTaWUgZWluZSBvZGVyIG1laHJlcmUgS2F0ZWdvcmllbiBmw7xyIGRpZXNlbiBUZXJtaW4gZmVzdC4nOwokbGFuZ1snbW9kdWxlX2V4YW1wbGVfc3R5bGVzaGVldCddID0gJ0NTUy1CZWlzcGllbCBmw7xyIGRlbiBLYWxlbmRlcic7CiRsYW5nWydlcnJvcl9wZXJtaXNzaW9uJ10gPSAnU2llIGJlbsO2dGlnZW4gZGllIEJlcmVjaHRpZ3VuZyAlcywgdW0gZGllc2UgRnVua3Rpb24gbnV0emVuIHp1IGvDtm5uZW4uJzsKJGxhbmdbJ2luc3RhbGxfcG9zdG1lc3NhZ2UnXSA9ICdTdGVsbGVuIFNpZSBzaWNoZXIsIGRhc3MgZGllIEJlbnV0emVyLCBkaWUgZGllIFRlcm1pbmUgaW0gS2FsZW5kZXIgdmVyd2FsdGVuLCBkaWUgQmVyZWNodGlndW5nIOKAnk1vZGlmeSBDYWxlbmRhcuKAnCBoYWJlbi4nOwokbGFuZ1snZGVsZXRldGFnZ2VkJ10gPSAnTWFya2llcnRlIFRlcm1pbmUgbMO2c2NoZW4nOwokbGFuZ1snY29uZmlybWRlbGV0ZXRhZ2dlZCddID0gJ1dvbGxlbiBTaWUgZGllc2UgVGVybWluZSB3aXJrbGljaCBsw7ZzY2hlbj8nOwokbGFuZ1sndGFnZ2VkZGVsZXRlZCddID0gJ0RpZSBtYXJraWVydGVuIFRlcm1pbmUgd3VyZGVuIGdlbMO2c2NodCc7CiRsYW5nWyd0ZW1wbGF0ZXMnXSA9ICdWb3JsYWdlbic7CiRsYW5nWyd0ZW1wbGF0ZV9oZWxwJ10gPSAnVm9ybGFnZW5oaWxmZSc7CiRsYW5nWydmaWxlX3RlbXBsYXRlcyddID0gJ0RhdGVpdm9ybGFnZW4nOwokbGFuZ1snYWRkdGVtcGxhdGUnXSA9ICdWb3JsYWdlIGhpbnp1ZsO8Z2VuJzsKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnVm9ybGFnZSc7CiRsYW5nWyd0ZW1wbGF0ZW5hbWV0ZXh0J10gPSAnVm9ybGFnZW5uYW1lJzsKJGxhbmdbJ2VkaXR0ZW1wbGF0ZSddID0gJ1ZvcmxhZ2UgYmVhcmJlaXRlbic7CiRsYW5nWydkZWxldGV0ZW1wbGF0ZSddID0gJ1ZvcmxhZ2UgbMO2c2NoZW4nOwokbGFuZ1snbmV3dGVtcGxhdGUnXSA9ICdOZXVlciBWb3JsYWdlbm5hbWUnOwokbGFuZ1sndGVtcGxhdGVuYW1lZXhpc3RzJ10gPSAnRmVobGVyOiBFaW5lIFZvcmxhZ2UgbWl0IGRpZXNlbSBOYW1lbiBleGlzdGllcnQgYmVyZWl0cy4gQml0dGUgd8OkaGxlbiBTaWUgZWluZW4gYW5kZXJlbiBOYW1lbi4nOwokbGFuZ1sndGVtcGxhdGVpbXBvcnRlZCddID0gJ0RpZSBWb3JsYWdlIHd1cmRlIGVyZm9sZ3JlaWNoIGluIGRpZSBEYXRlbmJhbmsgaW1wb3J0aWVydCB1bmQgc3RlaHQgbnVuIHp1ciB3ZWl0ZXJlbiBWZXJ3ZW5kdW5nIGJlcmVpdC4nOwokbGFuZ1sndmlld19kZWZhdWx0X3N0eWxlc2hlZXQnXSA9ICdTdGFuZGFyZC1TdHlsZXNoZWV0IGFuemVpZ2VuJzsKJGxhbmdbJ2ZpbGVuYW1lJ10gPSAnRGF0ZWluYW1lJzsKJGxhbmdbJ2ltcG9ydHRlbXBsYXRlJ10gPSAnVm9ybGFnZSBpbXBvcnRpZXJlbic7CiRsYW5nWyd0ZW1wbGF0ZV9kZWxldGVkJ10gPSAnRGllIFZvcmxhZ2Ugd3VyZGUgYXVzIGRlciBEYXRlbmJhbmsgZ2Vsw7ZzY2h0Lic7CiRsYW5nWyd1cGRhdGV0ZW1wbGF0ZXN1Y2Nlc3MnXSA9ICdEaWUgVm9ybGFnZSB3dXJkZSBha3R1YWxpc2llcnQuJzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlZmFpbHVyZSddID0gJ0JlaW0gQWt0dWFsaXNpZXJlbiBkZXIgVm9ybGFnZSBpc3QgZWluIEZlaGxlciBhdWZnZXRyZXRlbi4nOwokbGFuZ1snc2V0dGluZ3NzYXZlZCddID0gJ0RpZSBFaW5zdGVsbHVuZ2VuIHd1cmRlbiBlcmZvbGdyZWljaCBnZXNwZWljaGVydC4nOwokbGFuZ1snY2F0ZWdvcnlkZWxldGVkJ10gPSAnS2F0ZWdvcmllIGdlbMO2c2NodCc7CiRsYW5nWydjYXRlZ29yeXVwZGF0ZWQnXSA9ICdLYXRlZ29yaWUgYWt0dWFsaXNpZXJ0JzsKJGxhbmdbJ2NhdGVnb3J5YWRkZWQnXSA9ICdLYXRlZ29yaWUgaGluenVnZWbDvGd0JzsKJGxhbmdbJ2V2ZW50ZGVsZXRlZCddID0gJ0RlciBUZXJtaW4gd3VyZGUgZ2Vsw7ZzY2h0Lic7CiRsYW5nWydldmVudHVwZGF0ZWQnXSA9ICdEZXIgVGVybWluIHd1cmRlIGFrdHVhbGlzaWVydC4nOwokbGFuZ1snZGVmYXVsdF9wYWdlX2Vycm9yJ10gPSAnRkVITEVSOiBVbSBkYXMgS2FsZW5kZXItTW9kdWwgbWl0IGRlciBGdW5rdGlvbiDigJ5QcmV0dHkgVVJM4oCcIG51dHplbiB6dSBrw7ZubmVuLCBtdXNzIGVpbmUgU3RhbmRhcmRzZWl0ZSBmZXN0Z2VsZWd0IHdlcmRlbi4gR2VoZW4gU2llIGRhZsO8ciBpbiBkaWUgUmVnaXN0ZXJrYXJ0ZSDigJ5FaW5zdGVsbHVuZ2Vu4oCcIHVuZCB3w6RobGVuIGRvcnQgZWluZSBTZWl0ZSBhdXMuJzsKJGxhbmdbJ3RpbWVfYXQnXSA9ICdhbSc7CiRsYW5nWyd0eXBlJ10gPSAnVHlwJzsKJGxhbmdbJ25hbWUnXSA9ICdOYW1lJzsKJGxhbmdbJ29yZGVyJ10gPSAnU29ydGllcnVuZyc7CiRsYW5nWydmaWVsZGFkZGVkJ10gPSAnRGFzIEZlbGQgd3VyZGUgZXJmb2xncmVpY2ggaGluenVnZWbDvGd0JzsKJGxhbmdbJ2ZpZWxkZGVsZXRlZCddID0gJ0RhcyBGZWxkIHd1cmRlIGdlbMO2c2NodCc7CiRsYW5nWydmaWVsZHMnXSA9ICdCZW51dHplcmRlZmluaWVydGUgRmVsZGVyJzsKJGxhbmdbJ3RleHRmaWVsZCddID0gJ1RleHRmZWxkJzsKJGxhbmdbJ3VwbG9hZGZpZWxkJ10gPSAnRmVsZCB6dW0gSG9jaGxhZGVuIHZvbiBEYXRlaSc7CiRsYW5nWydkZXNjcmlwdGlvbiddID0gJzxwPk1pdCBkZW0gS2FsZW5kZXItTW9kdWwga8O2bm5lbiBUZXJtaW5lbiBhdWYgSWhyZXIgV2Vic2VpdGUgYW5nZXplaWd0IHdlcmRlbi4gTmFjaCBkZXIgSW5zdGFsbGF0aW9uIGvDtm5uZW4gU2llIGluIGRlciBBZG1pbmlzdHJhdGlvbiDDvGJlciBkYXMgTWVuw7wg4oCeSW5oYWx0ZSA+IEthbGVuZGVy4oCcIElocmUgVGVybWluZS9FcmVpZ25pc3NlIHZlcndhbHRlbi48L3A+JzsKJGxhbmdbJ2RlZmF1bHRjYWxlbmRhcnBhZ2UnXSA9ICdTdGFuZGFyZHNlaXRlLCBhdWYgZGVyIGRhcyBLYWxlbmRlci1Nb2R1bCBhbmdlemVpZ3Qgd2lyZC4gKERpZXNlIFNlaXRlIG11c3MgZGVuIFNtYXJ0eS1UYWcgenVtIEF1ZnJ1ZiBkZXMgS2FsZW5kZXItTW9kdWxzIGVudGhhbHRlbi4gV2VubiBTaWUgZGllIEZ1bmt0aW9uIOKAnlByZXR0eSBVUkzigJwgbnV0emVuIHdvbGxlbiwgaXN0IGRpZXNlIEVpbnN0ZWxsdW5nIHp3aW5nZW5kIGVyZm9yZGVybGljaC4pJzsKJGxhbmdbJ3VwbG9hZGRpcmVjdG9yeSddID0gJ1ZlcnplaWNobmlzLCBpbiBkZW0gZGllIGhvY2hnZWxhZGVuZW4gRGF0ZWllbiBhYmdlbGVndCB3ZXJkZW4gc29sbGVuJzsKJGxhbmdbJ3VwbG9hZGZpbGV0eXBlcyddID0gJ0VybGF1YnRlIERhdGVpdHlwZW4nOwokbGFuZ1sndXBsb2FkdW5pcXVlJ10gPSAnQXVmIGVpbmRldXRpZ2UgRGF0ZWluYW1lbiBhY2h0ZW4nOwokbGFuZ1snY2FsX3JlY3VyX3BlcmlvZCddID0gJ1dpZWRlcmhvbGVuJzsKJGxhbmdbJ2NhbF9yZWN1cl91bnRpbCddID0gJ1dpZWRlcmhvbGVuIGJpcyc7CiRsYW5nWydoZWxwX3RlbXBsYXRlJ10gPSAnPHA+PHN0cm9uZz5OYW1lIGRlcyBBdXRvcnMgYXVzZ2ViZW46PC9zdHJvbmc+PC9wPg0KPGNvZGU+QXV0b3I6IHskZXZlbnQuYXV0aG9ybmFtZX08L2NvZGU+JzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/el_GR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2NhbF9jYWxlbmRhciddID0gJ86XzrzOtc+Bzr/Ou8+MzrPOuc6/JzsKJGxhbmdbJ2NhbF9kZXNjcmlwdGlvbiddID0gJ86gz4HOv8+DzrjOrs66zrcsIM6Vz4DOtc6+zrXPgc6zzrHPg86vzrEsIM66zrHOuSDOus6xz4TOrM+BzrPOt8+DzrcgzrTPgc6sz4POtc+Jzr0nOwokbGFuZ1snY2FsX2FkZGV2ZW50J10gPSAnzqDPgc6/z4POuM6uzrrOtyDOtM+BzqzPg863z4InOwokbGFuZ1snY2FsX2V2ZW50cyddID0gJ86Uz4HOrM+DzrXOuc+CJzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzJ10gPSAnzprOsc+EzrfOs86/z4HOr861z4InOwokbGFuZ1snY2FsX2NhbGVuZGFyX3RlbXBsYXRlJ10gPSAnzqDPgc+Mz4TPhc+Azr8gzrfOvM61z4HOv867zr/Os86vzr/PhSc7CiRsYW5nWydjYWxfbGlzdF90ZW1wbGF0ZSddID0gJ86gz4HPjM+Ez4XPgM6/IM66zrHPhM6xzrvPjM6zzr/PhSc7CiRsYW5nWydjYWxfdXBjb21pbmdsaXN0X3RlbXBsYXRlJ10gPSAnzqDPgc+Mz4TPhc+Azr8gzrXPgM61z4HPh86/zrzOrc69z4nOvSc7CiRsYW5nWydjYWxfZXZlbnRfdGVtcGxhdGUnXSA9ICfOoM+Bz4zPhM+Fz4DOvyDOtM+BzqzPg863z4InOwokbGFuZ1snY2FsX3NldHRpbmdzJ10gPSAnzqHPhc64zrzOr8+DzrXOuc+CJzsKJGxhbmdbJ2NhbF9wcmV2J10gPSAnwqsgzqDPgc6/zrfOs86/z43OvM61zr3Ovyc7CiRsYW5nWydjYWxfbmV4dCddID0gJ86Vz4DPjM68zrXOvc6/IMK7JzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzX3VwZGF0ZWQnXSA9ICfOn865IM66zrHPhM63zrPOv8+Bzq/Otc+CIM61zr3Ot868zrXPgc+OzrjOt866zrHOvSc7CiRsYW5nWydjYWxfc2V0dGluZ3NfdXBkYXRlZCddID0gJ86fzrkgz4HPhc64zrzOr8+DzrXOuc+CIM61zr3Ot868zrXPgc+OzrjOt866zrHOvSc7CiRsYW5nWydjYWxfYWRkX2V2ZW50J10gPSAnzqDPgc6/z4POuM6uzrrOtyDOtM+BzqzPg863z4InOwokbGFuZ1snY2FsX2VkaXQnXSA9ICfOlc+AzrXOvs61z4HOs86xz4POr86xJzsKJGxhbmdbJ2NhbF9kZWxldGUnXSA9ICfOlM65zrHOs8+BzrHPhs6uJzsKJGxhbmdbJ2NhbF9hcmV5b3VzdXJlJ10gPSAnzpXPgM65zrLOtc6yzrHOr8+Jz4POtyDOtM65zrHOs8+BzrHPhs6uz4InOwokbGFuZ1snY2FsX3VwZGF0ZV90ZW1wbGF0ZSddID0gJ86Vzr3Ot868zq3Pgc+Jz4POtyDPgM+Bzr/PhM+Nz4DOv8+FJzsKJGxhbmdbJ2NhbF9zdW5kYXknXSA9ICfOms+Fz4HOuc6xzrrOric7CiRsYW5nWydjYWxfbW9uZGF5J10gPSAnzpTOtc+Fz4TOrc+BzrEnOwokbGFuZ1snY2FsX3R1ZXNkYXknXSA9ICfOpM+Bzq/PhM63JzsKJGxhbmdbJ2NhbF93ZWRuZXNkYXknXSA9ICfOpM61z4TOrM+Bz4TOtyc7CiRsYW5nWydjYWxfdGh1cnNkYXknXSA9ICfOoM6tzrzPgM+EzrcnOwokbGFuZ1snY2FsX2ZyaWRheSddID0gJ86gzrHPgc6xz4POus61z4XOric7CiRsYW5nWydjYWxfc2F0dXJkYXknXSA9ICfOo86szrLOss6xz4TOvyc7CiRsYW5nWydjYWxfc3VuJ10gPSAnzprPhc+BzrnOsc66zq4nOwokbGFuZ1snY2FsX21vbiddID0gJ86UzrUnOwokbGFuZ1snY2FsX3R1ZXMnXSA9ICfOpM+BJzsKJGxhbmdbJ2NhbF93ZWQnXSA9ICfOpM61JzsKJGxhbmdbJ2NhbF90aHVycyddID0gJ86gzrUnOwokbGFuZ1snY2FsX2ZyaSddID0gJ86gzrEnOwokbGFuZ1snY2FsX3NhdCddID0gJ86jzrEnOwokbGFuZ1snY2FsX2phbnVhcnknXSA9ICfOmc6xzr3Ov8+FzqzPgc65zr/Pgic7CiRsYW5nWydjYWxfZmVicnVhcnknXSA9ICfOps61zrLPgc6/z4XOrM+BzrnOv8+CJzsKJGxhbmdbJ2NhbF9tYXJjaCddID0gJ86czqzPgc+EzrnOv8+CJzsKJGxhbmdbJ2NhbF9hcHJpbCddID0gJ86Rz4DPgc6vzrvOuc6/z4InOwokbGFuZ1snY2FsX21heSddID0gJ86czqzPis6/z4InOwokbGFuZ1snY2FsX2p1bmUnXSA9ICfOmc6/z43Ovc65zr/Pgic7CiRsYW5nWydjYWxfanVseSddID0gJ86Zzr/Pjc67zrnOv8+CJzsKJGxhbmdbJ2NhbF9hdWd1c3QnXSA9ICfOkc+NzrPOv8+Fz4PPhM6/z4InOwokbGFuZ1snY2FsX3NlcHRlbWJlciddID0gJ86jzrXPgM+Ezq3OvM6yz4HOuc6/z4InOwokbGFuZ1snY2FsX29jdG9iZXInXSA9ICfOn866z4TPjs6yz4HOuc6/z4InOwokbGFuZ1snY2FsX25vdmVtYmVyJ10gPSAnzp3Ov86tzrzOss+BzrnOv8+CJzsKJGxhbmdbJ2NhbF9kZWNlbWJlciddID0gJ86UzrXOus6tzrzOss+BzrnOv8+CJzsKJGxhbmdbJ2NhbF9kYXRlJ10gPSAnzpfOvM61z4HOv868zrfOvc6vzrEnOwokbGFuZ1snY2FsX3N1bW1hcnknXSA9ICfOo8+Nzr3Ov8+IzrcnOwokbGFuZ1snY2FsX2RldGFpbHMnXSA9ICfOm861z4DPhM6/zrzOrc+BzrXOuc61z4InOwokbGFuZ1snY2FsX21vcmUnXSA9ICfPgM61z4HOuc+Dz4PPjM+EzrXPgc6xID4+JzsKJGxhbmdbJ2NhbF9yZXR1cm4nXSA9ICfOlc+AzrnPg8+Ez4HOv8+Gzq4nOwokbGFuZ1snY2FsX3RvJ10gPSAnz4POtSc7CiRsYW5nWydjYWxfdXBjb21pbmdfZXZlbnRzJ10gPSAnzpXPgM61z4HPh8+MzrzOtc69zrXPgiDOtM+BzqzPg861zrnPgic7CiRsYW5nWydjYWxfYW55X2NhdGVnb3J5J10gPSAnzp/PgM6/zrnOsc60zq7PgM6/z4TOtSDOus6xz4TOt86zzr/Pgc6vzrEnOwokbGFuZ1snY2FsX3Nob3dfb25seV9ldmVudHNfaW4nXSA9ICfOlc68z4bOrM69zrnPg863IM+Ez4nOvSDOtM+BzqzPg861z4nOvSDOvM+Mzr3Ov869IM+DzrUnOwokbGFuZ1snY2FsX2ZpbHRlcl9ieSddID0gJ86czrUgzrXPhs6xz4HOvM6/zrPOriDPhs6vzrvPhM+Bzr/PhSDOus6xz4TOsSc7CiRsYW5nWydjYWxfZ28nXSA9ICfOnM61z4TOsc+Gzr/Pgc6sIM+DzrUnOwokbGFuZ1snY2FsX3RpdGxlJ10gPSAnzqTOr8+EzrvOv8+CJzsKJGxhbmdbJ2NhbF9mcm9tZGF0ZSddID0gJ86Rz4DOvyDPhM63zr0gzrfOvM61z4HOv868zrfOvc6vzrEnOwokbGFuZ1snY2FsX3RvZGF0ZSddID0gJ86jz4TOt869IM63zrzOtc+Bzr/OvM63zr3Or86xJzsKJGxhbmdbJ2NhbF91cGRhdGVfY2F0ZWdvcmllcyddID0gJ86Vzr3Ot868zq3Pgc+Jz4POtyDOus6xz4TOt86zzr/Pgc65z47OvSc7CiRsYW5nWydjYWxfbGFuZ3VhZ2UnXSA9ICfOk867z47Pg8+DzrEnOwokbGFuZ1snY2FsX3VwZGF0ZXNldHRpbmdzJ10gPSAnzpXOvc63zrzOrc+Bz4nPg863IM+Bz4XOuM68zq/Pg861z4nOvSc7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/en_GB.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyBTaW1wbGUgTGFuZ3VhZ2UgZmlsZSBmb3IgdGhlIENhbGVuZGFyIG1vZHVsZS4KIyBDb3B5cmlnaHQgKGMpIDIwMDQgYnkgUm9iIEFsbGVuIDxyb2JAYWtyYWJhdC5jb20+CgojIExhbmd1YWdlOiBlbl9VUwoKJGxhbmdbJ2NhbF9kZXNjcmlwdGlvbiddID0gJ0FkZCwgZWRpdCBhbmQgcmVtb3ZlIGV2ZW50cyc7CiRsYW5nWydjYWxfYWRkZXZlbnQnXSA9ICdBZGQgRXZlbnQnOwokbGFuZ1snY2FsX2V2ZW50cyddID0gJ0V2ZW50cyc7CiRsYW5nWydjYWxfY2F0ZWdvcmllcyddID0gJ0NhdGVnb3JpZXMnOwokbGFuZ1snY2FsX2NhbGVuZGFyX3RlbXBsYXRlJ10gPSAnQ2FsZW5kYXIgVGVtcGxhdGUnOwokbGFuZ1snY2FsX2xpc3RfdGVtcGxhdGUnXSA9ICdMaXN0IFRlbXBsYXRlJzsKJGxhbmdbJ2NhbF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICdVcGNvbWluZyBUZW1wbGF0ZSc7CiRsYW5nWydjYWxfZXZlbnRfdGVtcGxhdGUnXSA9ICdFdmVudCBUZW1wbGF0ZSc7CiRsYW5nWydjYWxfc2V0dGluZ3MnXSA9ICdTZXR0aW5ncyc7CgokbGFuZ1snY2FsX2NhdGVnb3JpZXNfdXBkYXRlZCddID0gJ0NhdGVnb3JpZXMgVXBkYXRlZCc7CiRsYW5nWydjYWxfc2V0dGluZ3NfdXBkYXRlZCddID0gJ1NldHRpbmdzIFVwZGF0ZWQnOwokbGFuZ1snY2FsX2FkZF9ldmVudCddID0gJ0FkZCBFdmVudCc7CiRsYW5nWydjYWxfZWRpdCddID0gJ0VkaXQnOwokbGFuZ1snY2FsX2RlbGV0ZSddID0gJ0RlbGV0ZSc7CiRsYW5nWydjYWxfYXJleW91c3VyZSddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUnOwokbGFuZ1snY2FsX3VwZGF0ZV90ZW1wbGF0ZSddID0gJ1VwZGF0ZSBUZW1wbGF0ZSc7CgokbGFuZ1snY2FsX3N1bmRheSddID0gJ1N1bmRheSc7CiRsYW5nWydjYWxfbW9uZGF5J10gPSAnTW9uZGF5JzsKJGxhbmdbJ2NhbF90dWVzZGF5J10gPSAnVHVlc2RheSc7CiRsYW5nWydjYWxfd2VkbmVzZGF5J10gPSAnV2VkbmVzZGF5JzsKJGxhbmdbJ2NhbF90aHVyc2RheSddID0gJ1RodXJzZGF5JzsKJGxhbmdbJ2NhbF9mcmlkYXknXSA9ICdGcmlkYXknOwokbGFuZ1snY2FsX3NhdHVyZGF5J10gPSAnU2F0dXJkYXknOwokbGFuZ1snY2FsX3N1biddID0gJ1N1bic7CiRsYW5nWydjYWxfbW9uJ10gPSAnTW9uJzsKJGxhbmdbJ2NhbF90dWVzJ10gPSAnVHVlcyc7CiRsYW5nWydjYWxfd2VkJ10gPSAnV2VkJzsKJGxhbmdbJ2NhbF90aHVycyddID0gJ1RodXJzJzsKJGxhbmdbJ2NhbF9mcmknXSA9ICdGcmknOwokbGFuZ1snY2FsX3NhdCddID0gJ1NhdCc7CgokbGFuZ1snY2FsX2phbnVhcnknXSA9ICdKYW51YXJ5JzsKJGxhbmdbJ2NhbF9mZWJydWFyeSddID0gJ0ZlYnJ1YXJ5JzsKJGxhbmdbJ2NhbF9tYXJjaCddID0gJ01hcmNoJzsKJGxhbmdbJ2NhbF9hcHJpbCddID0gJ0FwcmlsJzsKJGxhbmdbJ2NhbF9tYXknXSA9ICdNYXknOwokbGFuZ1snY2FsX2p1bmUnXSA9ICdKdW5lJzsKJGxhbmdbJ2NhbF9qdWx5J10gPSAnSnVseSc7CiRsYW5nWydjYWxfYXVndXN0J10gPSAnQXVndXN0JzsKJGxhbmdbJ2NhbF9zZXB0ZW1iZXInXSA9ICdTZXB0ZW1iZXInOwokbGFuZ1snY2FsX29jdG9iZXInXSA9ICdPY3RvYmVyJzsKJGxhbmdbJ2NhbF9ub3ZlbWJlciddID0gJ05vdmVtYmVyJzsKJGxhbmdbJ2NhbF9kZWNlbWJlciddID0gJ0RlY2VtYmVyJzsKCiRsYW5nWydjYWxfZGF0ZSddID0gJ0RhdGUnOwokbGFuZ1snY2FsX3N1bW1hcnknXSA9ICdTdW1tYXJ5JzsKJGxhbmdbJ2NhbF9kZXRhaWxzJ10gPSAnRGV0YWlscyc7CiRsYW5nWydjYWxfcmV0dXJuJ10gPSAnUmV0dXJuJzsKJGxhbmdbJ2NhbF90byddID0gJ3RvJzsKJGxhbmdbJ2NhbF91cGNvbWluZ19ldmVudHMnXSA9ICdVcGNvbWluZyBFdmVudHMnOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/es_ES.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ21heCddID0gJ21heGltbyc7CiRsYW5nWyd0aW1lcyddID0gJ3RpZW1wb3MnOwokbGFuZ1snb24nXSA9ICdhY3Rpdm8nOwokbGFuZ1snYXJleW91c3VyZV91bmluc3RhbGwnXSA9ICdFc3QmYWFjdXRlOyBzZWd1cm8gZGUgcXVlcmVyIGhhY2VyIGVzdG8/IFNpIGNvbnRpbnVhLCBsYSBpbmZvcm1hY2lvbiBhc29jaWFkYSBjb24gZXN0ZSBtb2R1bG8gIHNlIGJvcnJhciZhYWN1dGU7IHBlcm1hbmVudGVtZW50ZS4nOwokbGFuZ1sncG9zdF91bmluc3RhbGwnXSA9ICdFbCBtb2R1bG8gQ2FsZW5kYXJpbyBoYSBzaWRvIGRlc2luc3RhbGFkbyB5IHRvZGEgbGEgaW5mb3JtYWNpJm9hY3V0ZTtuIGRlIGV2ZW50b3MgYXNvY2lhZGEgYWwgbSZvYWN1dGU7ZHVsbyBmdWUgcmVtb3ZpZGEgdGFtYmllbi4nOwokbGFuZ1snZmllbGR1cGRhdGVkJ10gPSAnQ2FtcG8gYWN0dWFsaXphZG8nOwokbGFuZ1snZXZlcnknXSA9ICdDYWRhJzsKJGxhbmdbJ29yJ10gPSAnJm9hY3V0ZTsnOwokbGFuZ1sndXBkYXRlX2NoaWxkcmVuJ10gPSAnQWN0dWFsaXphciBFdmVudG9zICZxdW90O0hpam8mcXVvdDsnOwokbGFuZ1snZXJyb3Jfbm9jYXRlZ29yeSddID0gJ0RlYmUgc2VsZWNjaW9uYXIgcG9yIGxvIG1lbm9zIHVuYSBjYXRlZ29yaWEnOwokbGFuZ1snZXJyb3Jfbm90aGluZ3NlbGVjdGVkJ10gPSAnTm8gc2UgaGEgc2VsZWNjaW9uYWRvIG5hZGEgcGFyYSBib3JyYXInOwokbGFuZ1snZXJyb3JfZXZlbnRvdmVybGFwJ10gPSAnTG9zIHBhcmFtZXRyb3MgZGUgcmVwZXRpY2kmb2FjdXRlO24gZXNwZWNpZmljYWRvcyByZXN1bHRhcmFuIGVuIGV2ZW50b3MgdHJhc2xhcGFkb3MuJzsKJGxhbmdbJ3JlY3VycyddID0gJ1NlIHJlcGl0ZSc7CiRsYW5nWydlcnJvcl9pbnZhbGlkX2RhdGVzJ10gPSAnVW5vIG8gbWFzIGRlIGxvcyB2YWxvcmVzIGRlIGZlY2hhIGluZ3Jlc2Fkb3Mgc29uIGludmFsaWRvcyc7CiRsYW5nWydzdW5kYXknXSA9ICdEb21pbmdvJzsKJGxhbmdbJ21vbmRheSddID0gJ0x1bmVzJzsKJGxhbmdbJ3R1ZXNkYXknXSA9ICdNYXJ0ZXMnOwokbGFuZ1snd2VkbmVzZGF5J10gPSAnTWllcmNvbGVzJzsKJGxhbmdbJ3RodXJzZGF5J10gPSAnSnVldmVzJzsKJGxhbmdbJ2ZyaWRheSddID0gJ1ZpZXJuZXMnOwokbGFuZ1snc2F0dXJkYXknXSA9ICdTJmFhY3V0ZTtiYWRvJzsKJGxhbmdbJ2FiYnJfc3VuZGF5J10gPSAnRG8nOwokbGFuZ1snYWJicl9tb25kYXknXSA9ICdMdSc7CiRsYW5nWydhYmJyX3R1ZXNkYXknXSA9ICdNYSc7CiRsYW5nWydhYmJyX3dlZG5lc2RheSddID0gJ01pJzsKJGxhbmdbJ2FiYnJfdGh1cnNkYXknXSA9ICdKdSc7CiRsYW5nWydhYmJyX2ZyaWRheSddID0gJ1ZpJzsKJGxhbmdbJ2FiYnJfc2F0dXJkYXknXSA9ICdTYSc7CiRsYW5nWyd3ZWVrZGF5cyddID0gJ0RpYXMgZGUgU2VtYW5hJzsKJGxhbmdbJ3BsdXJhbF9kYWlseSddID0gJ0RpYXMnOwokbGFuZ1sncGx1cmFsX3dlZWtseSddID0gJ1NlbWFuYXMnOwokbGFuZ1sncGx1cmFsX21vbnRobHknXSA9ICdNZXNlcyc7CiRsYW5nWydwbHVyYWxfeWVhcmx5J10gPSAnQSZudGlsZGU7b3MnOwokbGFuZ1snbm8nXSA9ICdObyAnOwokbGFuZ1snZGFpbHknXSA9ICdEaWFyaW8nOwokbGFuZ1snd2Vla2x5J10gPSAnU2VtYW5hbCc7CiRsYW5nWydtb250aGx5J10gPSAnTWVuc3VhbCc7CiRsYW5nWyd5ZWFybHknXSA9ICdBbmFsJzsKJGxhbmdbJ2ludGVydmFsJ10gPSAnUmVwZXRpciBjYWRhJzsKJGxhbmdbJ2NhbF9yZWN1cl9kZXRhaWxzJ10gPSAnRGV0YWxsZXMgZGUgZXZlbnRvIHJlcGV0aXRpdm8nOwokbGFuZ1sndW5saW1pdGVkJ10gPSAnSWxpbWl0YWRvJzsKJGxhbmdbJ21heF9yZWN1cl9ldmVudHMnXSA9ICdOdW1lcm8gbWF4aW1vIGRlIGV2ZW50b3MgJnF1b3Q7aGlqbyZxdW90Oyc7CiRsYW5nWyd1c2VfdG9fZGF0ZSddID0gJ0VzcGVjaWZpY2FyIGZlY2hhIGZpbmFsIGRpc3RpbnRhPyc7CiRsYW5nWydjYW5jZWwnXSA9ICdDYW5jZWxhcic7CiRsYW5nWydzaG93X2NoaWxkX2V2ZW50cyddID0gJ1Nob3cgQ2hpbGQgRXZlbnRzJzsKJGxhbmdbJ24vYSddID0gJ24vYSAnOwokbGFuZ1sncmVjdXJzX3VudGlsJ10gPSAnUmVjdXJyaXIgSGFzdGEnOwokbGFuZ1sncGFyZW50J10gPSAnUGFkcmUnOwokbGFuZ1sncmVjdXJfcGVyaW9kJ10gPSAnUGVyaW9kbyBSZWN1cnJpcic7CiRsYW5nWydmaWx0ZXInXSA9ICdGaWx0cm8nOwokbGFuZ1snc3RhcnRfZGF0ZSddID0gJ0ZlY2hhIGRlIEluaWNpbyc7CiRsYW5nWydlbmRfZGF0ZSddID0gJ0ZlY2hhIEZpbmFsJzsKJGxhbmdbJ2luZm9fdXBjb21pbmdsaXN0X3RlbXBsYXRlX3RhYiddID0gJ0xpc3RhIGRlIHBsYW50aWxsYXMgZGlzcG9uaWJsZXMgcGFyYSBsYSB2aXN0YSAmcXVvdDt1cGNvbWluZ2xpc3QmcXVvdDsnOwokbGFuZ1sndXBjb21pbmdsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ0FncmVnYXIvRWRpdGFyIHVuYSBwbGFudGlsbGEgZGUgdmlzdGEgJnF1b3Q7dXBjb21pbmdsaXN0JnF1b3Q7JzsKJGxhbmdbJ2luZm9fc3lzZGZsdF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICdQbGFudGlsbGEgcG9yIG9taXNpJm9hY3V0ZTtuIFVwY29taW5nbGlzdCc7CiRsYW5nWydpbmZvX2xpc3RfdGVtcGxhdGVfdGFiJ10gPSAnRWwgbGlzdGFkbyBkZSBwbGFudGlsbGFzIHF1ZSBlc3RhbiBkaXNwb25pYmxlcyBwYXJhIHZpc3RhIGRlIGxpc3Rhcyc7CiRsYW5nWydsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ0FncmVnYXIvRWRpdGFyIHVuYSBwbGFudGlsbGEgZGUgZGVzcGxpZWd1ZSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfbGlzdF90ZW1wbGF0ZSddID0gJ1BsYW50aWxsYSBwb3Igb21pc2kmb2FjdXRlO24gZGUgTGlzdGFkbyc7CiRsYW5nWydpbmZvX2V2ZW50X3RlbXBsYXRlX3RhYiddID0gJ0xpc3RhZG8gZGUgcGxhbnRpbGxhcyBkaXNwb25pYmxlcyBwYXJhIHZpc3RhcyBkZSBldmVudG9zJzsKJGxhbmdbJ2V2ZW50dGVtcGxhdGVfYWRkZWRpdCddID0gJ0FncmVnYXIvRWRpdGFyIHVuYSBwbGFudGlsbGEgZGUgRGVzcGxpZWd1ZSBkZSBFdmVudG9zJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9ldmVudF90ZW1wbGF0ZSddID0gJ1BsYW50aWxsYSBwb3Igb21pc2kmb2FjdXRlO24gZGUgRXZlbnRvcyc7CiRsYW5nWydpbmZvX2NhbGVuZGFyX3RlbXBsYXRlX3RhYiddID0gJ0xpc3RhZG8gZGUgcGxhbnRpbGxhcyBkaXNwb25pYmxlcyBwYXJhIHZpc3RhcyBkZSBjYWxlbmRhcmlvJzsKJGxhbmdbJ2NhbGVuZGFydGVtcGxhdGVfYWRkZWRpdCddID0gJ0FncmVnYXIvRWRpdGFyIHVuYSBwbGFudGlsbGEgZGUgRGVzcGxpZWd1ZSBkZSBDYWxlbmRhcmlvJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ1BsYW50aWxsYSBwb3Igb21pc2kmb2FjdXRlO24gZGUgQ2FsZW5kYXJpbyc7CiRsYW5nWydpbmZvX3N5c2RmbHRfdGVtcGxhdGUnXSA9ICdFc3RlIGZvcm11bGFyaW8gZGVmaW5lIGxhIHBsYW50aWxsYSBxdSBzZXJhIHVzYWRhIGN1YW5kbyBoYWdhcyBjbGljayBlbiAmcXVvdDtOdWV2YSBQbGFudGlsbGEmcXVvdDsgZW4gbGEgcGVzdGEmbnRpbGRlO2EgY29ycmVzcG9uZGllbnRlLiBDYW1iaWFyIGVzdGUgdmFsb3Igbm8gdGVuZHImYWFjdXRlOyBlZmVjdG8gaW5tZWRpYXRvIGVuIGVsIGRpc3BsYXkgZGUgZXN0ZSBtJm9hY3V0ZTtkdWxvLic7CiRsYW5nWydldmVudGRlc2MtRXZlbnRBZGRlZCddID0gJ0xsYW1hZG8gbHVlZ28gZGUgYWdyZWdhciB1biBldmVudG8gYWwgY2FsZW5kYXJpbyc7CiRsYW5nWydldmVudGRlc2MtRXZlbnRFZGl0ZWQnXSA9ICdMbGFtYWRvIGx1ZWdvIGRlIGVkaXRhciB1biBldmVudG8gZXhpc3RlbnRlIGVuIGVsIGNhbGVuZGFyaW8nOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RGVsZXRlZCddID0gJ0xsYW1hZG8gbHVlZ28gZGUgZWxpbWluYXIgdW4gZXZlbnRvJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUFkZGVkJ10gPSAnTGxhbWFkbyBsdWVnbyBkZSBjcmVhciB1bmEgY2F0ZWdvciZpYWN1dGU7YSc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlFZGl0ZWQnXSA9ICdMbGFtYWRvIGx1ZWdvIGRlIGVkaXRhciB1bmEgY2F0ZWdvciZpYWN1dGU7YSc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnTGxhbWFkbyBsdWVnbyBkZSBlbGltaW5hciB1bmEgY2F0ZWdvciZpYWN1dGU7YSc7CiRsYW5nWydldmVudGhlbHAtRXZlbnRBZGRlZCddID0gJzxwPkVudmlhZG8gY3VhbmRvIHVuIGV2ZW50byBlcyBhZ3JlZ2FkbyBlbiBlbCBjYWxlbmRhcmlvLjwvcD4NCjxoND5QYXImYWFjdXRlO21ldHJvczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X3RpdGxlXCZxdW90OyAtIFQmaWFjdXRlO3R1bG8gZGVsIEV2ZW50bzwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X3N1bW1hcnlcJnF1b3Q7IC0gVGV4dG8gZGVsIFJlc3VtZW48L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kZXRhaWxzXCZxdW90OyAtIERlc2NyaXBjaSZvYWN1dGU7biBEZXRhbGxhZGE8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX3N0YXJ0XCZxdW90OyAtIExhIGZlY2hhL2hvcmEgZGUgY29taWVuem8gZGVsIGV2ZW50bzwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RhdGVfZW5kXCZxdW90OyAtIExhIGZlY2hhL2hvcmEgZGUgZmluIGRlbCBldmVudG88L2xpPg0KPGxpPlwmcXVvdDtldmVudF9jcmVhdGVkX2J5XCZxdW90OyAtIEVsIGlkIGRlIHVzdWFyaW8gZGVsIGF1dG9yPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfaWRcJnF1b3Q7IC0gRWwgaWQgZGVsIGV2ZW50bzwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudEVkaXRlZCddID0gJzxwPkVudmlhZG8gY3VhbmRvIHVuIGV2ZW50byBlcyBlZGl0YWRvIGVuIGVsIGNhbGVuZGFyaW8uPC9wPg0KPGg0PlBhciZhYWN1dGU7bWV0cm9zPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7ZXZlbnRfdGl0bGVcJnF1b3Q7IC0gVCZpYWN1dGU7dHVsbyBkZWwgRXZlbnRvPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfc3VtbWFyeVwmcXVvdDsgLSBUZXh0byBkZWwgUmVzdW1lbjwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RldGFpbHNcJnF1b3Q7IC0gRGVzY3JpcGNpJm9hY3V0ZTtuIERldGFsbGFkYTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RhdGVfc3RhcnRcJnF1b3Q7IC0gTGEgZmVjaGEvaG9yYSBkZSBjb21pZW56byBkZWwgZXZlbnRvPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9lbmRcJnF1b3Q7IC0gTGEgZmVjaGEvaG9yYSBkZSBmaW4gZGVsIGV2ZW50bzwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2NyZWF0ZWRfYnlcJnF1b3Q7IC0gRWwgaWQgZGUgdXN1YXJpbyBkZWwgYXV0b3I8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9pZFwmcXVvdDsgLSBFbCBpZCBkZWwgZXZlbnRvPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50RGVsZXRlZCddID0gJzxwPkVudmlhZG8gY3VhbmRvIHVuIGV2ZW50byBlcyBlbGltaW5hZG8gZW4gZWwgY2FsZW5kYXJpby48L3A+DQo8aDQ+UGFyJmFhY3V0ZTttZXRyb3M8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtldmVudF9pZFwmcXVvdDsgLSBFbCBpZCBkZWwgZXZlbnRvPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5QWRkZWQnXSA9ICc8cD5FbnZpYWRvIGN1YW5kbyB1bmEgY2F0ZWdvciZpYWN1dGU7YSBkZWwgY2FsZW5kYXJpbyBlcyBhZ3JlZ2FkYS48L3A+DQo8aDQ+UGFyJmFhY3V0ZTttZXRyb3M8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9pZFwmcXVvdDsgLSBJZCBkZSBsYSBDYXRlZ29yJmlhY3V0ZTthPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5RWRpdGVkJ10gPSAnPHA+RW52aWFkbyBjdWFuZG8gdW5hIGNhdGVnb3ImaWFjdXRlO2EgZGVsIGNhbGVuZGFyaW8gZXMgZWRpdGFkYS48L3A+DQo8aDQ+UGFyJmFhY3V0ZTttZXRyb3M8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9pZFwmcXVvdDsgLSBJZCBkZSBsYSBjYXRlZ29yJmlhY3V0ZTthPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfbmFtZVwmcXVvdDsgLSBOb21icmUgZGUgbGEgY2F0ZWdvciZpYWN1dGU7YTwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X29yZGVyXCZxdW90OyAtIEZvcm1hIGRlIG9yZGVuYXIgbGEgY2F0ZWdvciZpYWN1dGU7YTwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeURlbGV0ZWQnXSA9ICc8cD5FbnZpYWRvIGN1YW5kbyB1bmEgY2F0ZWdvciZpYWN1dGU7YSBkZWwgY2FsZW5kYXJpbyBlcyBlbGltaW5hZGEuPC9wPg0KPGg0PlBhciZhYWN1dGU7bWV0cm9zPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfaWRcJnF1b3Q7IC0gSWQgZGUgbGEgY2F0ZWdvciZpYWN1dGU7YTwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X25hbWVcJnF1b3Q7IC0gTm9tYnJlIGRlIGxhIGNhdGVnb3ImaWFjdXRlO2E8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9vcmRlclwmcXVvdDsgLSBGb3JtYSBkZSBvcmRlbmFyIGxhIGNhdGVnb3ImaWFjdXRlO2E8L2xpPg0KPC91bD4NCic7CiRsYW5nWydtc2dfZXZlbnRhZGRlZCddID0gJ0V2ZW50byBBZ3JlZ2Fkbyc7CiRsYW5nWydlcnJvcl9ub2V2ZW50bmFtZSddID0gJ0VsIG5vbWJyZSBwYXJhIGVzdGUgZXZlbnRvIGVzIHJlcXVlcmlkbyc7CiRsYW5nWydlcnJvcl9ub3VwbG9hZCddID0gJ0VSUk9SOiBObyBzZSBlbmNvbnRyJm9hY3V0ZTsgYXJjaGl2byBzdWJpZG8nOwokbGFuZ1snZXJyb3JfaW52YWxpZGZpbGVuYW1lJ10gPSAnRVJST1I6IEVsIGFyY2hpdm8gc3ViaWRvIGVzIGluYWNlcHRhYmxlJzsKJGxhbmdbJ2Vycm9yX3Byb2JsZW13aXRodXBsb2FkJ10gPSAnRVJST1I6IE9jdXJyaSZvYWN1dGU7IHVuIHByb2JsZW1hIHN1YmllbmRvIGVsIGFyY2hpdm8nOwokbGFuZ1snZXJyb3JfZmlsZWNvcHlmYWlsZWQnXSA9ICdFUlJPUjogT2N1cnJpJm9hY3V0ZTsgdW4gcHJvYmxlbWEgYWwgY29waWFyIGVsIGFyY2hpdm8gZW4gc3UgZGVzdGlubyBmaW5hbCc7CiRsYW5nWydlcnJvcl9maWxlZXhpc3RzJ10gPSAnRVJST1I6IFlhIGV4aXN0ZSB1biBhcmNoaXZvIGNvbiBlc2Ugbm9tYnJlJzsKJGxhbmdbJ2Vycm9yX2NzdmZpbGVub3Rmb3VuZCddID0gJ0VSUk9SOiBObyBzZSBwdWRvIGhhbGxhciBlbCBhcmNoaXZvIENTVic7CiRsYW5nWydlcnJvcl9jYW50b3BlbmZpbGUnXSA9ICdFUlJPUjogTm9zIHNlIHB1ZWRlIGFicmlyaSBlbCBhcmNoaXZvaSc7CiRsYW5nWydlcnJvcl9jYXRlZ29yeWV4aXN0cyddID0gJ0VSUk9SOiBZYSBoYXkgdW5hIGNhdGVnb3JpYSBjb24gZWwgbm9tYnJlICVzJzsKJGxhbmdbJ2NhbF9pZCddID0gJ0lkICc7CiRsYW5nWydjYWxfY2FsZW5kYXInXSA9ICdDYWxlbmRhcmlvJzsKJGxhbmdbJ2NhbF9kZWZhdWx0X3RlbXBsYXRlcyddID0gJ1BsYW50aWxsYXMgcG9yIERlZmVjdG8nOwokbGFuZ1snY2FsX2Rlc2NyaXB0aW9uJ10gPSAnQSZudGlsZGU7YWRpciwgZWRpdGFyIHkgYm9ycmFyIGV2ZW50b3MnOwokbGFuZ1snY2FsX2FkZGV2ZW50J10gPSAnQSZudGlsZGU7YWRpciBFdmVudG8nOwokbGFuZ1snY2FsX2ltcG9ydF9ldmVudHMnXSA9ICdJbXBvcnRhciBFdmVudG9zJzsKJGxhbmdbJ2NhbF9ldmVudHMnXSA9ICdFdmVudG9zJzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzJ10gPSAnQ2F0ZWdvciZpYWN1dGU7YXMnOwokbGFuZ1snY2FsX2NhbGVuZGFyX3RlbXBsYXRlJ10gPSAnUGxhbnRpbGxhIGRlbCBDYWxlbmRhcmlvJzsKJGxhbmdbJ2NhbF9saXN0X3RlbXBsYXRlJ10gPSAnUGxhbnRpbGxhIGRlbCBMaXN0YWRvJzsKJGxhbmdbJ2NhbF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICdQbGFudGlsbGEgZGUgQXZhbmNlcyc7CiRsYW5nWydjYWxfZXZlbnRfdGVtcGxhdGUnXSA9ICdQbGFudGlsbGEgZGUgRXZlbnRvJzsKJGxhbmdbJ2NhbF9zZXR0aW5ncyddID0gJ0NvbmZpZ3VyYWNpJm9hY3V0ZTtuJzsKJGxhbmdbJ2NhbF9wcmV2J10gPSAnJmxhcXVvOyBQcmUuJzsKJGxhbmdbJ2NhbF9uZXh0J10gPSAnU2lnLiAmcmFxdW87JzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzX3VwZGF0ZWQnXSA9ICdDYXRlZ29yJmlhY3V0ZTthcyBBY3R1YWxpemFkYXMnOwokbGFuZ1snY2FsX3NldHRpbmdzX3VwZGF0ZWQnXSA9ICdDb25maWd1cmFjaSZvYWN1dGU7biBBY3R1YWxpemFkYSc7CiRsYW5nWydjYWxfYWRkX2V2ZW50J10gPSAnQSZudGlsZGU7YWRpciBFdmVudG8nOwokbGFuZ1snY2FsX2VkaXQnXSA9ICdFZGl0YXInOwokbGFuZ1snY2FsX2RlbGV0ZSddID0gJ0JvcnJhcic7CiRsYW5nWydjYWxfYXJleW91c3VyZSddID0gJyZpcXVlc3Q7U2VndXJvIHF1ZSBxdWllcmVzIGJvcnJhcj8nOwokbGFuZ1snY2FsX3VwZGF0ZV90ZW1wbGF0ZSddID0gJ1BsYW50aWxsYSBBY3R1YWxpemFkYSc7CiRsYW5nWydjYWxfc3VuZGF5J10gPSAnRG9taW5nbyc7CiRsYW5nWydjYWxfbW9uZGF5J10gPSAnTHVuZXMnOwokbGFuZ1snY2FsX3R1ZXNkYXknXSA9ICdNYXJ0ZXMnOwokbGFuZ1snY2FsX3dlZG5lc2RheSddID0gJ01pJmVhY3V0ZTtyY29sZXMnOwokbGFuZ1snY2FsX3RodXJzZGF5J10gPSAnSnVldmVzJzsKJGxhbmdbJ2NhbF9mcmlkYXknXSA9ICdWaWVybmVzJzsKJGxhbmdbJ2NhbF9zYXR1cmRheSddID0gJ1MmYWFjdXRlO2JhZG8nOwokbGFuZ1snY2FsX3N1biddID0gJ0RvbSc7CiRsYW5nWydjYWxfbW9uJ10gPSAnTHVuJzsKJGxhbmdbJ2NhbF90dWVzJ10gPSAnTWFyJzsKJGxhbmdbJ2NhbF93ZWQnXSA9ICdNaWUnOwokbGFuZ1snY2FsX3RodXJzJ10gPSAnSnVlJzsKJGxhbmdbJ2NhbF9mcmknXSA9ICdWaWUnOwokbGFuZ1snY2FsX3NhdCddID0gJ1NhYic7CiRsYW5nWydjYWxfamFudWFyeSddID0gJ0VuZXJvJzsKJGxhbmdbJ2NhbF9mZWJydWFyeSddID0gJ0ZlYnJlcm8nOwokbGFuZ1snY2FsX21hcmNoJ10gPSAnTWFyem8nOwokbGFuZ1snY2FsX2FwcmlsJ10gPSAnQWJyaWwnOwokbGFuZ1snY2FsX21heSddID0gJ01heW8nOwokbGFuZ1snY2FsX2p1bmUnXSA9ICdKdW5pbyc7CiRsYW5nWydjYWxfanVseSddID0gJ0p1bGlvJzsKJGxhbmdbJ2NhbF9hdWd1c3QnXSA9ICdBZ29zdG8nOwokbGFuZ1snY2FsX3NlcHRlbWJlciddID0gJ1NlcHRpZW1icmUnOwokbGFuZ1snY2FsX29jdG9iZXInXSA9ICdPY3R1YnJlJzsKJGxhbmdbJ2NhbF9ub3ZlbWJlciddID0gJ05vdmllbWJyZSc7CiRsYW5nWydjYWxfZGVjZW1iZXInXSA9ICdEaWNpZW1icmUnOwokbGFuZ1snY2FsX2FkZCddID0gJ0FncmVnYXInOwokbGFuZ1snY2FsX3VwZGF0ZSddID0gJ0FjdHVhbGl6YXInOwokbGFuZ1snY2FsX2V2ZW50J10gPSAnRXZlbnRvJzsKJGxhbmdbJ2NhbF9kYXRlJ10gPSAnRmVjaGEnOwokbGFuZ1snY2FsX3N1bW1hcnknXSA9ICdTdW1hcmlvJzsKJGxhbmdbJ2NhbF9kZXRhaWxzJ10gPSAnRGV0YWxsZXMnOwokbGFuZ1snY2FsX21vcmUnXSA9ICdtJmFhY3V0ZTtzRSA+Pic7CiRsYW5nWydjYWxfcmV0dXJuJ10gPSAnVm9sdmVyJzsKJGxhbmdbJ2NhbF90byddID0gJ2EnOwokbGFuZ1snY2FsX3Bhc3RfZXZlbnRzJ10gPSAnRXZlbnRvcyBPY3Vycmlkb3MnOwokbGFuZ1snY2FsX3VwY29taW5nX2V2ZW50cyddID0gJ0F2YW5jZSBkZSBFdmVudG9zJzsKJGxhbmdbJ2NhbF9hbnlfY2F0ZWdvcnknXSA9ICdDdWFscXVpZXIgQ2F0ZWdvciZpYWN1dGU7YSc7CiRsYW5nWydjYWxfc2hvd19vbmx5X2V2ZW50c19pbiddID0gJ01vc3RyYXIgUyZvYWN1dGU7bG8gRXZlbnRvcyBFbic7CiRsYW5nWydjYWxfZmlsdGVyX2J5J10gPSAnRmlsdHJhciBwb3InOwokbGFuZ1snY2FsX2dvJ10gPSAnSXInOwokbGFuZ1snY2FsX3RpdGxlJ10gPSAnVCZpYWN1dGU7dHVsbyc7CiRsYW5nWydjYWxfZnJvbWRhdGUnXSA9ICdEZXNkZSBGZWNoYSc7CiRsYW5nWydjYWxfdG9kYXRlJ10gPSAnSGFzdGEgRmVjaGEnOwokbGFuZ1snY2FsX3VwZGF0ZV9jYXRlZ29yaWVzJ10gPSAnQWN0dWFsaXphciBDYXRlZ29yJmlhY3V0ZTthcyc7CiRsYW5nWydjYWxfbGFuZ3VhZ2UnXSA9ICdJZGlvbWFBJzsKJGxhbmdbJ2NhbF91cGRhdGVzZXR0aW5ncyddID0gJ0FjdHVhbGl6YXIgQ29uZmlndXJhY2kmb2FjdXRlO24nOwokbGFuZ1snY2FsX3VzZV90d2VsdmVfaG91cl9jbG9jayddID0gJyZpcXVlc3Q7VXNhciBkb2NlIGhvcmFzIGVuIGxvcyBkZXNwbGVnYWJsZXMgZGUgaG9yYT8nOwokbGFuZ1snY2FsX2RlZmF1bHRfY2F0ZWdvcnknXSA9ICdDYXRlZ29yJmlhY3V0ZTthIHBvciBEZWZlY3RvQSc7CiRsYW5nWydjYWxfdXBkYXRlX2ZpZWxkcyddID0gJ0FjdHVhbGl6YXIgQ2FtcG9zJzsKJGxhbmdbJ2ZvcmNlX2NhdGVnb3J5J10gPSAnRm9yemFyIGFsIG1lbm9zIHVuYSBjYXRlZ29yJmlhY3V0ZTthJzsKJGxhbmdbJ3Nob3dwYXN0eWVhcnMnXSA9ICdDdWFudG9zIGEmbnRpbGRlO29zIGVuIGVsIHBhc2FkbyBlcyBwZXJtaXRpZG8nOwokbGFuZ1snc2hvd2Z1dHVyZXllYXJzJ10gPSAnQ3VhbnRvcyBhJm50aWxkZTtvcyBlbiBlbCBmdXR1cm8gZXMgcGVybWl0aWRvJzsKJGxhbmdbJ2hpZGVzdW1tYXJ5J10gPSAnRGViZXImaWFjdXRlO2EgZXN0YXIgZWwgY2FtcG8gcmVzdW1lbiBlc2NvbmRpZG8nOwokbGFuZ1snaGlkZWNvbnRlbnQnXSA9ICdEZWJlciZpYWN1dGU7YSBlc3RhciBlbCBjYW1wbyBjb250ZW5pZG8gZXNjb25kaWRvJzsKJGxhbmdbJ2NhdGVnb3J5X3JlbWluZGVyJ10gPSAnUG9yIGZhdm9yIGNoZXF1ZWFyIHVuYSBvIG0mYWFjdXRlO3MgY2F0ZWdvciZpYWN1dGU7YXMgcGFyYSBlc3RlIGV2ZW50byc7CiRsYW5nWydtb2R1bGVfZXhhbXBsZV9zdHlsZXNoZWV0J10gPSAnRWplbXBsbyBkZSBDU1MgcGFyYSBDYWxlbmRhcmlvJzsKJGxhbmdbJ2Vycm9yX3Blcm1pc3Npb24nXSA9ICdVc3RlZCBuZWNlc2l0YSBkZSBsb3MgcGVybWlzb3MgZGUgKCVzKSBhcHJvcGlhZG9zIHBhcmEgYWNjZWRlciBhIGVzdGEgZnVuY2lvbmFsaWRhZCc7CiRsYW5nWydpbnN0YWxsX3Bvc3RtZXNzYWdlJ10gPSAnQXNlZ3VyYXJzZSBkZSBxdWUgc2UgaGFuIGNvbmZpZ3VyYWRvIGxvcyBwZXJtaXNvcyBhZGVjdWFkb3MgcGFyYSAmcXVvdDtNb2RpZmljYXIgZWwgQ2FsZW5kYXJpbyZxdW90OyBlbiBsb3MgdXN1YXJpb3MgcXVlIHNlIG9jdXBhciZhYWN1dGU7biBkZSBhZG1pbmlzdHJhciBsb3MgZXZlbnRvcyBkZW50cm8gZGVsIGNhbGVuZGFyaW8uJzsKJGxhbmdbJ2RlbGV0ZXRhZ2dlZCddID0gJ0VsaW1pbmFyIGxvcyBldmVudG9zIGV0aXF1ZXRhZG9zJzsKJGxhbmdbJ2NvbmZpcm1kZWxldGV0YWdnZWQnXSA9ICcmaXF1ZXN0O0VzdCZhYWN1dGU7IHNlZ3VybyBxdWUgZWwgZXZlbnRvIGRlYmUgc2VyIGVsaW1pbmFkbz8nOwokbGFuZ1sndGFnZ2VkZGVsZXRlZCddID0gJ0xvcyBldmVudG9zIGV0aXF1ZXRhZG9zIHNlIGhhbiBlbGltaW5hZG8nOwokbGFuZ1sndGVtcGxhdGVzJ10gPSAnUGxhbnRpbGxhcyc7CiRsYW5nWyd0ZW1wbGF0ZV9oZWxwJ10gPSAnQXl1ZGEgcGFyYSBQbGFudGlsbGFzJzsKJGxhbmdbJ2ZpbGVfdGVtcGxhdGVzJ10gPSAnQXJjaGl2b3MgZGUgUGxhbnRpbGxhcyc7CiRsYW5nWydhZGR0ZW1wbGF0ZSddID0gJ0FncmVnYXIgUGxhbnRpbGxhJzsKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnUGxhbnRpbGxhJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZXRleHQnXSA9ICdOb21icmUgZGUgUGxhbnRpbGxhJzsKJGxhbmdbJ2VkaXR0ZW1wbGF0ZSddID0gJ0VkaXRhciBQbGFudGlsbGEnOwokbGFuZ1snZGVsZXRldGVtcGxhdGUnXSA9ICdFbGltaW5hciBQbGFudGlsbGEnOwokbGFuZ1snbmV3dGVtcGxhdGUnXSA9ICdOb21icmUgZGUgTnVldmEgUGxhbnRpbGxhJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZWV4aXN0cyddID0gJ0Vycm9yOiBVbmEgcGxhbnRpbGxhIGNvbiBlc2Ugbm9tYnJlIHlhIGV4aXN0ZS4gUG9yIGZhdm9yIGVsaWphIG90cm8gbm9tYnJlLic7CiRsYW5nWyd0ZW1wbGF0ZWltcG9ydGVkJ10gPSAnTGEgcGxhbnRpbGxhIHNlIGltcG9ydG8gY29uICZlYWN1dGU7eGl0byBhIGxhIGJhc2UgZGUgZGF0b3MgeSBlc3QmYWFjdXRlOyBhaG9yYSBpbnN0YWxhZGEgbGlzdGEgcGFyYSBzdSB1c28uJzsKJGxhbmdbJ3ZpZXdfZGVmYXVsdF9zdHlsZXNoZWV0J10gPSAnVmVyIEhvamEgZGUgRXN0aWxvIHBvciBETm9lZmVjdG8nOwokbGFuZ1snZmlsZW5hbWUnXSA9ICdOb21icmUgZGUgQXJjaGl2byc7CiRsYW5nWydpbXBvcnR0ZW1wbGF0ZSddID0gJ0ltcG9ydGFyIFBsYW50aWxsYSc7CiRsYW5nWyd0ZW1wbGF0ZV9kZWxldGVkJ10gPSAnTGEgcGxhbnRpbGxhIGZ1JmVhY3V0ZTsgZWxpbWluYWRhIGNvbiBleGl0byBlbiBsYSBiYXNlIGRlIGRhdG9zLic7CiRsYW5nWyd1cGRhdGV0ZW1wbGF0ZXN1Y2Nlc3MnXSA9ICdMYSBwbGFudGlsbGEgZnUmZWFjdXRlOyBhY3R1YWxpemFkYSBjb24gJmVhY3V0ZTt4aXRvJzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlZmFpbHVyZSddID0gJ0hhIG9jdXJyaWRvIHVuIGVycm9yIGFsIGFjdHVhbGl6YXIgbGEgcGxhbnRpbGxhJzsKJGxhbmdbJ3NldHRpbmdzc2F2ZWQnXSA9ICdTZSBndWFyZG8gY29uICZlYWN1dGU7eGl0byBsYXMgY29uZmlndXJhY2lvbmVzJzsKJGxhbmdbJ2NhdGVnb3J5ZGVsZXRlZCddID0gJ0NhdGVnb3ImaWFjdXRlO2EgZWxpbWluYWRhJzsKJGxhbmdbJ2NhdGVnb3J5dXBkYXRlZCddID0gJ0NhdGVnb3ImaWFjdXRlO2EgYWN0dWFsaXphZGEmaWFjdXRlOyc7CiRsYW5nWydjYXRlZ29yeWFkZGVkJ10gPSAnQ2F0ZWdvciZpYWN1dGU7YSBhZ3JlZ2FkYSc7CiRsYW5nWydldmVudGRlbGV0ZWQnXSA9ICdFbCBldmVudG8gc2UgaGEgZWxpbWluYWRvJzsKJGxhbmdbJ2V2ZW50dXBkYXRlZCddID0gJ0VsIGV2ZW50byBzZSBoYSBhY3R1YWxpemFkbyc7CiRsYW5nWydkZWZhdWx0X3BhZ2VfZXJyb3InXSA9ICdFcnJvcjogVXN0ZWQgZGViZSBlc3RhYmxlY2VyIHVuYSBwJmFhY3V0ZTtnaW5hIHBvciBkZWZlY3RvIHBhcmEgdXRpbGl6YXIgYWwgQ2FsZW5kYXJpbyBjb24gcHJldHR5IFVSTHMgcHJlbmRpZG8uIFBvciBmYXZvciB2YXlhIGEgbGEgc29sYXBhIGRlIENvbmZpZ3VyYWNpJm9hY3V0ZTtuIGRlbCBDYWxlbmRhcmlvIHkgZWxpamEgdW5hLic7CiRsYW5nWyd0aW1lX2F0J10gPSAnZW4nOwokbGFuZ1sndHlwZSddID0gJ1RpcG8nOwokbGFuZ1snbmFtZSddID0gJ05vbWJyZSc7CiRsYW5nWydvcmRlciddID0gJ09yZGVuJzsKJGxhbmdbJ2ZpZWxkYWRkZWQnXSA9ICdDYW1wbyBBZ3JlZ2FkbyBjb24gJkVhY3V0ZTt4aXRvJzsKJGxhbmdbJ2ZpZWxkZGVsZXRlZCddID0gJ0NhbXBvIEVsaW1pbmFkbyc7CiRsYW5nWydmaWVsZHMnXSA9ICdDYW1wb3MgYSBNZWRpZGEnOwokbGFuZ1sndGV4dGZpZWxkJ10gPSAnQ2FtcG8gVGV4dG8nOwokbGFuZ1sndXBsb2FkZmllbGQnXSA9ICdDYW1wbyBkZSBzdWJpZGEgZGUgYXJjaGl2byc7CiRsYW5nWydkZXNjcmlwdGlvbiddID0gJzxwPkNhbGVuZGFyIGlzIGEgbW9kdWxlIGZvciBkaXNwbGF5aW5nIGV2ZW50cyBvbiB5b3VyIHBhZ2UuIFdoZW4gdGhlDQoJCW1vZHVsZSBpcyBpbnN0YWxsZWQsIGEgQ2FsZW5kYXIgYWRtaW4gcGFnZSBpcyBhZGRlZCB0byB0aGUgY29udGVudCBtZW51DQoJCXRoYXQgd2lsbCBhbGxvdyB5b3UgdG8gbWFuYWdlIHlvdXIgZXZlbnRzLjwvcD4nOwokbGFuZ1snZGVmYXVsdGNhbGVuZGFycGFnZSddID0gJ1AmYWFjdXRlO2dpbmEgcG9yIGRlZmVjdG8gcXVlIGNvbnRpZW5lIGVsIENhbGVuZGFyaW8uIEVzdGEgcCZhYWN1dGU7Z2luYSBkZWJlIGNvbnRlbmVyIHVuIHRhZyBTbWFydHkgcXVlIGxsYW1lIGFsIENhbGVuZGFyaW8uIEVzIHJlcXVlcmlkbyBzaSB1c3RlZCB1c2EgbGFzIHByZXR0eSBVUkxzLic7CiRsYW5nWyd1cGxvYWRkaXJlY3RvcnknXSA9ICdEaXJlY3RvcmlvIGRvbmRlIGxvcyBhcmNoaXZvcyBzdWJpZG9zIGRlYmVuIHViaWNhcnNlJzsKJGxhbmdbJ3VwbG9hZGZpbGV0eXBlcyddID0gJ1RpcG8gZGUgYXJjaGl2b3MgcGVybWl0aWRvcyc7CiRsYW5nWyd1cGxvYWR1bmlxdWUnXSA9ICdBc2VndXJhciBub21icmUgJnVhY3V0ZTtuaWNvIGRlIGFyY2hpdm9zJzsKJGxhbmdbJ3RodW1iX3dpZHRoJ10gPSAnTWluaWF0dXJhIChhbmNobyknOwokbGFuZ1sndGh1bWJfaGVpZ2h0J10gPSAnTWluaWF0dXJhIChhbHR1cmEpJzsKJGxhbmdbJ2xhcmdlX3dpZHRoJ10gPSAnSW1hZ2VuIGdyYW5kZSAoYW5jaG8pJzsKJGxhbmdbJ2xhcmdlX2hlaWdodCddID0gJ0ltYWdlbiBncmFuZGUgKGFsdG8pJzsKJGxhbmdbJ2NhbF9yZWN1cl9wZXJpb2QnXSA9ICdSZXNlcnZhcic7CiRsYW5nWydjYWxfcmVjdXJfdW50aWwnXSA9ICdSZXNlcnZhciBoYXN0YSc7CiRsYW5nWydoZWxwX3RlbXBsYXRlJ10gPSAnPHA+PGI+SW1wcmltaXIgTm9tYnJlIGRlIEF1dG9yOjwvYj48L3A+DQo8Y29kZT5BdXRvcjogeyRldmVudC5hdXRob3JuYW1lfTwvY29kZT4NCic7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/et_EE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMgU2ltcGxlIExhbmd1YWdlIGZpbGUgZm9yIHRoZSBDYWxlbmRhciBtb2R1bGUuDQojIENvcHlyaWdodCAoYykgMjAwNCBieSBSb2IgQWxsZW4gPHJvYkBha3JhYmF0LmNvbT4NCg0KIyBMYW5ndWFnZTogZXRfRVQNCg0KJGxhbmdbJ2NhbF9jYWxlbmRhciddID0gJ0thbGVuZGVyJzsNCiRsYW5nWydjYWxfZGVzY3JpcHRpb24nXSA9ICdMaXNhLCBtdXVkYSBqYSBrdXN0dXRhICYjMjUyO3JpdHVzaSc7DQokbGFuZ1snY2FsX2FkZGV2ZW50J10gPSAnTGlzYSAmIzI1MjtyaXR1cyc7DQokbGFuZ1snY2FsX2V2ZW50cyddID0gJyYjMjIwO3JpdHVzZWQnOw0KJGxhbmdbJ2NhbF9jYXRlZ29yaWVzJ10gPSAnS2F0ZWdvb3JpYWQnOw0KJGxhbmdbJ2NhbF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ0thbGVuZHJpIHZhYXRlIGt1anVuZHVzJzsNCiRsYW5nWydjYWxfbGlzdF90ZW1wbGF0ZSddID0gJ05pbWVraXJqYSB2YWF0ZSBrdWp1bmR1cyc7DQokbGFuZ1snY2FsX3VwY29taW5nbGlzdF90ZW1wbGF0ZSddID0gJ0VlbHNlaXN2YXRlICYjMjUyO3JpdHVzdGUgdmFhdGUga3VqdW5kdXMnOw0KJGxhbmdbJ2NhbF9ldmVudF90ZW1wbGF0ZSddID0gJyYjMjIwO3JpdHVzZSB2YWF0ZSBrdWp1bmR1cyc7DQokbGFuZ1snY2FsX3NldHRpbmdzJ10gPSAnU2VhZGVkJzsNCiRsYW5nWydjYWxfcHJldiddID0gJyZsYXF1bzsgRWVlbG1pbmUnOw0KJGxhbmdbJ2NhbF9uZXh0J10gPSAnSiYjMjI4O3JnbWluZSAmcmFxdW87JzsNCg0KJGxhbmdbJ2NhbF9jYXRlZ29yaWVzX3VwZGF0ZWQnXSA9ICdLYXRlZ29vcmlhZCB1dWVuZGF0dWQnOw0KJGxhbmdbJ2NhbF9zZXR0aW5nc191cGRhdGVkJ10gPSAnU2VhZGVkIHV1ZW5kYXR1ZCc7DQokbGFuZ1snY2FsX2FkZF9ldmVudCddID0gJ0xpc2EgJiMyNTI7cml0dXMnOw0KJGxhbmdbJ2NhbF9lZGl0J10gPSAnTXV1ZGEnOw0KJGxhbmdbJ2NhbF9kZWxldGUnXSA9ICdLdXN0dXRhJzsNCiRsYW5nWydjYWxfYXJleW91c3VyZSddID0gJ09sZWQga2luZGVsLCBldCBzb292aWQga3VzdHV0YWRhJzsNCiRsYW5nWydjYWxfdXBkYXRlX3RlbXBsYXRlJ10gPSAnVXVlbmRhIGt1anVuZHVzdCc7DQoNCiRsYW5nWydjYWxfc3VuZGF5J10gPSAnUCYjMjUyO2hhcCYjMjI4O2V2JzsNCiRsYW5nWydjYWxfbW9uZGF5J10gPSAnRXNtYXNwJiMyMjg7ZXYnOw0KJGxhbmdbJ2NhbF90dWVzZGF5J10gPSAnVGVpc2lwJiMyMjg7ZXYnOw0KJGxhbmdbJ2NhbF93ZWRuZXNkYXknXSA9ICdLb2xtYXAmIzIyODtldic7DQokbGFuZ1snY2FsX3RodXJzZGF5J10gPSAnTmVsamFwJiMyMjg7ZXYnOw0KJGxhbmdbJ2NhbF9mcmlkYXknXSA9ICdSZWVkZSc7DQokbGFuZ1snY2FsX3NhdHVyZGF5J10gPSAnTGF1cCYjMjI4O2V2JzsNCiRsYW5nWydjYWxfc3VuJ10gPSAnUCYjMjUyO2hhcCc7DQokbGFuZ1snY2FsX21vbiddID0gJ0VzbWFzcCc7DQokbGFuZ1snY2FsX3R1ZXMnXSA9ICdUZWlzaXAnOw0KJGxhbmdbJ2NhbF93ZWQnXSA9ICdLb2xtYXAnOw0KJGxhbmdbJ2NhbF90aHVycyddID0gJ05lbGphcCc7DQokbGFuZ1snY2FsX2ZyaSddID0gJ1JlZWRlJzsNCiRsYW5nWydjYWxfc2F0J10gPSAnTGF1cCc7DQoNCiRsYW5nWydjYWxfamFudWFyeSddID0gJ0phYW51YXInOw0KJGxhbmdbJ2NhbF9mZWJydWFyeSddID0gJ1ZlZWJydWFyJzsNCiRsYW5nWydjYWxfbWFyY2gnXSA9ICdNJiMyMjg7cnRzJzsNCiRsYW5nWydjYWxfYXByaWwnXSA9ICdBcHJpbGwnOw0KJGxhbmdbJ2NhbF9tYXknXSA9ICdNYWknOw0KJGxhbmdbJ2NhbF9qdW5lJ10gPSAnSnV1bmknOw0KJGxhbmdbJ2NhbF9qdWx5J10gPSAnSnV1bGknOw0KJGxhbmdbJ2NhbF9hdWd1c3QnXSA9ICdBdWd1c3QnOw0KJGxhbmdbJ2NhbF9zZXB0ZW1iZXInXSA9ICdTZXB0ZW1iZXInOw0KJGxhbmdbJ2NhbF9vY3RvYmVyJ10gPSAnT2t0b29iZXInOw0KJGxhbmdbJ2NhbF9ub3ZlbWJlciddID0gJ05vdmVtYmVyJzsNCiRsYW5nWydjYWxfZGVjZW1iZXInXSA9ICdEZXRzZW1iZXInOw0KJGxhbmdbJ2NhbF9kYXRlJ10gPSAnS3V1cCYjMjI4O2V2JzsNCiRsYW5nWydjYWxfc3VtbWFyeSddID0gJ0tpcmplbGR1cyc7DQokbGFuZ1snY2FsX2RldGFpbHMnXSA9ICdUJiMyMjg7cHNlbWFsdCc7DQokbGFuZ1snY2FsX21vcmUnXSA9ICd2ZWVsID4+JzsNCiRsYW5nWydjYWxfcmV0dXJuJ10gPSAnVGFnYXNpJzsNCiRsYW5nWydjYWxfdG8nXSA9ICcnOw0KJGxhbmdbJ2NhbF91cGNvbWluZ19ldmVudHMnXSA9ICdFZWxzZWlzdmFkICYjMjUyO3JpdHVzZWQnOw0KJGxhbmdbJ2NhbF9hbnlfY2F0ZWdvcnknXSA9ICdLJiMyNDU7aWsga2F0ZWdvb3JpYWQnOw0KJGxhbmdbJ2NhbF9zaG93X29ubHlfZXZlbnRzX2luJ10gPSAnTiYjMjI4O2l0YSAmIzI1MjtyaXR1c2kgYWludWx0JzsNCiRsYW5nWydjYWxfZmlsdGVyX2J5J10gPSAnRmlsdGVyJzsNCiRsYW5nWydjYWxfZ28nXSA9ICdNaW5lJzsNCiRsYW5nWydjYWxfdGl0bGUnXSA9ICdOaW1ldHVzJzsNCiRsYW5nWydjYWxfZnJvbWRhdGUnXSA9ICdBbGdhYic7DQokbGFuZ1snY2FsX3RvZGF0ZSddID0gJ0tlc3RhYiBrdW5pJzsNCiRsYW5nWydjYWxfc3VtbWFyeSddID0gJ0tpcmplbGR1cyc7DQokbGFuZ1snY2FsX3VwZGF0ZV9jYXRlZ29yaWVzJ10gPSAnVXVlbmRhIGthdGVnb29yaWFpZCc7DQokbGFuZ1snY2FsX2xhbmd1YWdlJ10gPSAnS2VlbCc7DQokbGFuZ1snY2FsX3VwZGF0ZXNldHRpbmdzJ10gPSAnVXVlbmRhIHNlYWRlaWQnOw0KPz4K]]></data>
	</file>
	<file>
	  <filename>/lang/ext/fi_FI.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2Vycm9yX2ZldV9sb2dnZWRpbiddID0gJ0smYXVtbDt5dHQmYXVtbDtqJmF1bWw7IGVpIG9sZSBraXJqYXV0dW51dCAoRkVVKS4gVGFwYWh0dW1pZW4gbGlzJmF1bWw7JmF1bWw7bWluZW4gdGFpIG11b2trYWFtaW5lbiBlaSBvbGUgc2FsbGl0dHVhJzsKJGxhbmdbJ3Byb21wdF9mcmllbmRseW5hbWUnXSA9ICdGcmllbmRseSBOYW1lIGZvciB0aGlzIE1vZHVsZSBpbiBBZG1pbiBOYXZpZ2F0aW9uJzsKJGxhbmdbJ2luZm9fZnJpZW5kbHluYW1lJ10gPSAnTm90ZTogWW91IG1heSBuZWVkIHRvIGNsZWFyIHRoZSBzaXRlIGNhY2hlIGZvciB0aGlzIHByZWZlcmVuY2UgdG8gaGF2ZSBlZmZlY3QuICBJZiBubyB2YWx1ZSBpcyBzdXBwbGllZCBhIGRlZmF1bHQgd2lsbCBiZSB1c2VkLic7CiRsYW5nWyd1c2Vfd3lzaXd5ZyddID0gJ0smYXVtbDt5dCZhdW1sOyBXeXNpd3lnaSZhdW1sOyc7CiRsYW5nWydlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnXSA9ICdQdXV0dGVlbGxpc2V0IHBhcmFtZXRyaXQnOwokbGFuZ1snY29sdW1uX2RlbGltaXRlciddID0gJ0ltcG9ydCBmaWxlIGNvbHVtbiBkZWxpbWl0ZXInOwokbGFuZ1snaW1wb3J0X2NvbXBsZXRlZCddID0gJ1R1b250aSBzdW9yaXRldHR1JzsKJGxhbmdbJ251bV9pbXBvcnRlZCddID0gJ051bWJlciBvZiBldmVudHMgY3JlYXRlZDogJWQnOwokbGFuZ1snaW1wb3J0X2xpbmVzJ10gPSAnTnVtYmVyIG9mIGxpbmVzIHByb2Nlc3NlZCBmcm9tIGZpbGU6ICVkJzsKJGxhbmdbJ2Vycm9ycyddID0gJ0Vycm9yaXQnOwokbGFuZ1snZXJyb3JfY3N2Zmlyc3RsaW5laW52YWxpZGZpZWxkJ10gPSAnRmllbGQ6ICVzIGlzIG5vdCByZWNvZ25pemVkLCBhbmQgaXMgbm90IGEgY3VzdG9tIGZpZWxkJzsKJGxhbmdbJ2luZm9fY3N2X2Zvcm1hdCddID0gJzxoND5DU1YgRmlsZSBGb3JtYXQgSW5mb3JtYXRpb24uPC9oND4NCjx1bD4NCiAgPGxpPkdlbmVyYWwgSW5mb3JtYXRpb246DQogICA8dWw+DQogICAgIDxsaT5UaGUgZmlsZSBtdXN0IGJlIGFuIEFTQ0lJIGZpbGUgd2l0aCB1bml4IChwcmVmZXJyZWQpLCBkb3MsIG9yIG1hYyBsaW5lIGVuZGluZ3MuPC9saT4NCiAgICAgPGxpPkNvbW1lbnRzIHN0YXJ0IHdpdGggLy8gYW55IGNoYXJhY3RlcnMgYWZ0ZXIgdGhpcyBvbiBhIGxpbmUgd2lsbCBiZSBpZ25vcmVkIChpbmNsdWRpbmcgd2l0aGluIHF1b3Rlcy48L2xpPg0KICAgICA8bGk+RW1wdHkgbGluZXMgYXJlIGlnbm9yZWQ8L2xpPg0KICAgICA8bGk+RmllbGQgZGVsaW1pdGVycyBhcmUgdXNlciBjb250cm9sbGFibGUsIGhvd2V2ZXIgYSBkZWxpbWl0ZXIgY2FuIGJlIHVzZWQgYXMgYSB2YWx1ZSB3aXRoaW4gYSBmaWVsZCBpZiB0aGUgZmllbGQgaXMgZGVsaW1pdGVkIGJ5IGRvdWJsZSBxdW90ZXMuPC9saT4NCiAgICAgPGxpPlJvd3MgYXJlIGRlbGltaXRlZCBieSBuZXdsaW5lIGNoYXJzIChhcyBhYm92ZSkuPC9saT4NCiAgIDwvdWw+DQogIDwvbGk+DQogIDxsaT5UaGUgRmllbGQgTWFwOg0KICAgPHVsPg0KICAgIDxsaT5UaGUgZmlyc3QgbGluZSBkZWZpbmVzIHRoZSBvcmRlciBvZiB0aGUgZmllbGRzLCBhbmQgd2hhdCAmcXVvdDtjdXN0b20gZmllbGRzJnF1b3Q7IGFyZSBkZWZpbmVkIGluIHRoZSBmaWxlLiBEYXRhIGNhbiBzdGFydCBvbiB0aGUgc2Vjb25kIG5vbi1lbXB0eSBsaW5lLCBvciBhZnRlci48L2xpPg0KICAgIDxsaT5UaGVyZXMgYXJlIHRoZSByZXF1aXJlZCBmaWVsZHM6IHN0YXJ0IHRpbWUsIGVuZCB0aW1lLCB0aXRsZSwgc3VtbWFyeSwgYW5kIGRlc2NyaXB0aW9uLiAgV2l0aG91dCBkZWZpbmluZyB0aGVzZSBmaWVsZHMgaW4gdGhlIGhlYWRlciB0aGUgaW1wb3J0IHdpbGwgbm90IHByb2NlZWQuICBSZXF1aXJlZCBmaWVsZCBuYW1lcyBhcmUgbm90IGNhc2Ugc2Vuc2l0aXZlLjwvbGk+DQogICAgPGxpPlRoZXJlIGlzIG9uZSBvcHRpb25hbCBjb2x1bW46OiAmcXVvdDtjYXRlZ29yeSZxdW90Oy4gIElmIHNwZWNpZmllZCBpdCBjYW4gY29udGFpbiBhIDsgc2VwYXJhdGVkIGxpc3Qgb2YgY2F0ZWdvcnkgbmFtZXMgdGhhdCB0aGUgZXZlbnQgd2lsbCBiZWxvbmcgdG8uPC9saT4NCiAgIDwvdWw+DQogIDwvbGk+DQogIDxsaT5UaGUgRGF0YSBSb3dzOg0KICAgPHVsPg0KICAgIDxsaT5UaGUgc3RhcnQgdGltZSwgdGl0bGUsIGFuZCBkZXNjcmlwdGlvbiBmaWVsZHMgbXVzdCBub3QgYmUgZW1wdHkuPC9saT4NCjxsaT5TdGFydCBhbmQgRW5kIFRpbWVzOjwvbGk+DQogIDx1bD4NCiAgIDxsaT5TdGFydCB0aW1lIHByb2Nlc3NpbmcgaXMgZmxleGlibGUuICBZb3UgY2FuIHNwZWNpZnkgZWl0aGVyICBZWVlZLU1NLUREIEhIOk1NIGZvcm1hdCwgb3IgbWFueSBmb3JtYXRzIGFzIGRlZmluZWQgYnkgdGhlIHN0cnRvdGltZSBmdW5jdGlvbiwgaW5jbHVkaW5nIHJlbGF0aXZlIHRpbWVzLiAgSWYgYSByZWxhdGl2ZSB0aW1lIGlzIHN1cHBsaWVkIGl0IGlzIGFzc3VtZWQgdG8gYmUgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgdGltZS48L2xpPg0KICAgPGxpPkVuZCB0aW1lIHByb2Nlc3NpbmcgaXMgZmxleGlibGUsIGFuZCBtYXkgYmUgZW1wdHkuICBZb3UgY2FuIHNwZWNpZnkgZWl0aGVyIGFuIGFic29sdXRlIHRpbWUgKGluIHRoZSBzYW1lIGZvcm1hdCBhcyB0aGUgc3RhcnQgdGltZSkgb3IgYSByZWxhdGl2ZSB0aW1lLiAgSWYgYSByZWxhdGl2ZSB0aW1lIGlzIHNwZWNpZmllZCwgaXQgaXMgYXNzdW1lZCB0byBiZSByZWxhdGl2ZSB0byB0aGUgc3RhcnQgdGltZS4gICBpLmU6ICZxdW90Oys0IGhvdXJzJnF1b3Q7IHdvdWxkIGluZGljYXRlIDQgaG91cnMgZnJvbSB0aGUgc3RhcnQgdGltZSBjb2x1bW4uPC9saT4NCiAgIDxsaT5JZiB0aGUgZW5kIHRpbWUgY29sdW1lIGlzIHRoZSBzdHJpbmcgJnF1b3Q7QWxsIGRheSZxdW90OyA8ZW0+KGNhc2UgaW5zZW5zaXRpdmUpPC9lbT4gaXQgd2lsbCBhc3N1bWUgYW4gYWxsIGRheSBldmVudCBmcm9tIHRoZSBzdGFydCB0aW1lLjwvbGk+DQogICA8bGk+SWYgdGhlIGVuZCB0aW1lIGNvbHVtbiBpcyBlbXB0eSwgdGhlbiBubyBlbmQgdGltZSB2YWx1ZSB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhlIGRhdGFiYXNlLjwvbGk+DQogIDwvdWw+DQo8L2xpPg0KPGxpPkNhdGVnb3JpZXMNCiAgPHVsPg0KICAgPGxpPklmIHNwZWNpZmllZCwgdGhlIGNhdGVnb3J5IGNvbHVtbiBjYW4gY29udGFpbiBhIGxpc3QgKHNlcGFyYXRlZCBieSA7KSBvZiBjYXRlZ29yeSBuYW1lcyBmb3Igd2hpY2ggdGhlIGV2ZW50IHNob3VsZCBiZWxvbmcuPC9saT4NCiAgIDxsaT5DYXRlZ29yeSBuYW1lcyBhcmUgY2FzZSBzZW5zaXRpdmUuPC9saT4NCiAgIDxsaT5DYXRlZ29yaWVzIGFyZSBub3QgY3JlYXRlZCBpZiB0aGV5IGRvIG5vdCBleGlzdC48L2xpPg0KICA8L3VsPg0KPC9saT4NCjxsaT5DdXN0b20gRmllbGRzOg0KICA8dWw+DQogICAgPGxpPkN1c3RvbSBmaWVsZCBuYW1lcyAoZXZlbiBpbiB0aGUgZmlyc3QgbGluZSB0aGF0IGRldGVybWluZXMgdGhlIGZpZWxkIG1hcHBpbmcpIGFyZSBjYXNlIHNlbnNpdGl2ZS48L2xpPg0KICAgIDxsaT5DdXRvbSBmaWVsZHMgYXJlIG5vdCBjcmVhdGVkIGlmIHNwZWNpZmllZCBpbiB0aGUgQ1NWIGZpbGUuICBVbmtub3duIGN1c3RvbSBmaWVsZCBjb2x1bW5zIHdpbGwgYmUgaWdub3JlZC48L2xpPg0KICAgIDxsaT5DdXN0b20gZmllbGRzIG9mIHR5cGUgJnF1b3Q7ZmlsZSZxdW90OyBjYW5ub3QgYmUgaW1wb3J0ZWQuICBUaGUgZW50aXJlIGltcG9ydCBvcGVyYXRpb24gd2lsbCBmYWlsLjwvbGk+DQogIDwvdWw+DQogIDwvbGk+DQogIDwvdWw+DQo8L2xpPg0KPGxpPkEgc2FtcGxlIGNzdiBmaWxlIGV4aXN0cyBpbiB0aGUgbW9kdWxlcyBzb3VyY2UgY29kZSBkaXJlY3RvcnkuPC9saT4NCjwvdWw+JzsKJGxhbmdbJ3Byb21wdF9jc3ZfZmlsZSddID0gJ1NlbGVjdCBJbXBvcnQgRmlsZSc7CiRsYW5nWydkZWxldGUnXSA9ICdQb2lzdGEnOwokbGFuZ1snY2RfY29tcGFueSddID0gJ1lodGkmb3VtbDsgSGFrZW1pc3RvIFlodGkmb3VtbDsnOwokbGFuZ1snZGZsdF91cmxwcmVmaXgnXSA9ICdVUkwtb3NvaXR0ZWlkZW4gb2xldHVzIGV0dWxpaXRlJzsKJGxhbmdbJ2RmbHRfYWxsZGF5ZXZlbnQnXSA9ICdVdWRldCB0YXBhaHR1bWF0IG92YXQgb2xldHVrc2VuYSAmcXVvdDtLb2tvIHAmYXVtbDtpdiZhdW1sO24mcXVvdDstdGFwYWh0dW1pYSc7CiRsYW5nWydkZmx0X3N0YXJ0dGltZSddID0gJ1V1c2llbiB0YXBhaHR1bWllbiBvbGV0dXMgYWxrYW1pc2Fpa2EnOwokbGFuZ1snaW5mb19kZmx0X3N0YXJ0dGltZSddID0gJzxlbT4ocCZhdW1sO3RlZSBhaW5vYXN0YWFuLCBqb3MgdXVkZXQgdGFwYWh0dW1hdCBlaXYmYXVtbDt0IG9sZSAmYW1wO3F1b3Q7S29rbyBwJmF1bWw7aXYmYXVtbDtuJnF1b3Q7LXRhcGFodHVtaWEpPC9lbT4nOwokbGFuZ1snc2VhcmNoX3R5cGUnXSA9ICdIYWt1dHl5cHBpJzsKJGxhbmdbJ3NlYXJjaF9hbnknXSA9ICdOJmF1bWw7eXQmYXVtbDsgdHVsb2tzZXQsIGpvdGthIHQmYXVtbDtzbSZhdW1sOyZhdW1sO3YmYXVtbDt0IG1paGluIHRhaGFuc2Egc2FuYWFuJzsKJGxhbmdbJ3NlYXJjaF9hbGwnXSA9ICdOJmF1bWw7eXQmYXVtbDsgdHVsb2tzZXQsIGpvdGthIHQmYXVtbDtzbSZhdW1sOyZhdW1sO3YmYXVtbDt0IGthaWtraWluIHNhbm9paGluJzsKJGxhbmdbJ2luZm9fY3VzdG9tZmllbGRzJ10gPSAnPHNwYW4gc3R5bGU9JnF1b3Q7Y29sb3I6IHJlZDsmcXVvdDs+SHVvbWFhOjwvc3Bhbj4gJnF1b3Q7VGllZG9zdG9ubCZhdW1sO2hldHlzJnF1b3Q7LWtlbnR0JmF1bWw7IGVpIG9sZSBoYWV0dGF2aXNzYS4nOwokbGFuZ1snc2VhcmNoYWJsZSddID0gJ0hhZXR0YXZpc3NhJzsKJGxhbmdbJ2hlbHBfcGFyYW1fZWRpdGV2ZW50dGVtcGxhdGUnXSA9ICdLb3NrZWUgYWlub2FzdGFhbiBteWV2ZW50cy10b2ltaW50b2EsIHQmYXVtbDttJmF1bWw7IHBhcmFtZXRyaSBzYWxsaWkgbSZhdW1sOyZhdW1sO3JpdGVsbCZhdW1sOyBvbGV0dWtzZXN0YSBwb2lra2VhdmFuIHNpdnVwb2hqYW4gdGFwYWh0dW1pZW4gbXVva2thYW1pc2Vlbiwga3VuIGsmYXVtbDt5dHQmYXVtbDtqJmF1bWw7IGx1byB0YWkgbXVva2thYSB0YXBhaHR1bWFhLic7CiRsYW5nWydoZWxwX3BhcmFtX2VkaXRwYWdlJ10gPSAnS29za2VlIGFpbm9hc3RhYW4gbXlldmVudHMtdG9pbWludG9hLCB0JmF1bWw7bSZhdW1sOyBwYXJhbWV0cmkgc2FsbGlpIHRvaXNlbiBzaXZ1biBtJmF1bWw7JmF1bWw7cml0dGVsZW1pc2VuIGxvbWFra2VlbGxlLic7CiRsYW5nWydoZWxwX3BhcmFtX215ZXZlbnRzdGVtcGxhdGUnXSA9ICdLb3NrZWUgYWlub2FzdGFhbiBteWV2ZW50cy10b2ltaW50b2EsIHQmYXVtbDttJmF1bWw7IHNhbGxpaSBvbGV0dWtzZXN0YSBwb2lra2VhdmFuIHNpdnVwb2hqYW4gbSZhdW1sOyZhdW1sO3JpdHRlbGVtaXNlbi4nOwokbGFuZ1snY2FsX2VkaXRfZXZlbnQnXSA9ICdNdW9ra2FhIGthbGVudGVyaXRhcGFodHVtYWEnOwokbGFuZ1snZXJyb3JfZGJlcnJvciddID0gJ1RpZXRva2FudGF2aXJoZSc7CiRsYW5nWydzdWJtaXQnXSA9ICdMJmF1bWw7aGV0JmF1bWw7JzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9lZGl0ZXZlbnRfdGVtcGxhdGUnXSA9ICdKJmF1bWw7cmplc3RlbG0mYXVtbDtuIG9sZXR1cyAmcXVvdDtNdW9ra2FhIHRhcGFodHVtYWEmcXVvdDstc2l2dXBvaGphJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9teWV2ZW50c190ZW1wbGF0ZSddID0gJ0omYXVtbDtyamVzdGVsbSZhdW1sO24gb2xldHVzICZxdW90O09tYXQgdGFwYWh0dW1hdCZxdW90Oy1zaXZ1cG9oamEnOwokbGFuZ1sncHJvbXB0X2ZlZWRpdF9ncm91cCddID0gJ1QmYXVtbDttJmF1bWw7biByeWhtJmF1bWw7biBGcm9udEVuZFVzZXJzLW1vZHV1bGluIGomYXVtbDtzZW5ldCB2b2l2YXQgbGlzJmF1bWw7dCZhdW1sOyB0YXBhaHR1bWlhLic7CiRsYW5nWydwcm9tcHRfZmVlZGl0X3BhZ2UnXSA9ICdPbGV0dXNzaXZ1IGp1bGtpc3RlbiBzaXZ1amVuIG11b2trYXVzbG9tYWtrZWVsbGUuJzsKJGxhbmdbJ25vbmUnXSA9ICdFaSBtaXQmYXVtbDsmYXVtbDtuJzsKJGxhbmdbJ293bmVyJ10gPSAnT21pc3RhamEnOwokbGFuZ1snY2FsX2VkaXRldmVudF90ZW1wbGF0ZXMnXSA9ICdUYXBhaHR1bWFuIG11b2trYXVzIC1sb21ha2UnOwokbGFuZ1snaW5mb19lZGl0ZXZlbnRfdGVtcGxhdGVfdGFiJ10gPSAnU2FhdGF2aWxsYSBvbGV2aWVuIHNpdnVwb2hqaWVuIGxpc3RhIHRhcGFodHVtYW4gbXVva2thdXNsb21ha2tlZWxsZS4nOwokbGFuZ1snZWRpdGV2ZW50dGVtcGxhdGVfYWRkZWRpdCddID0gJ0xpcyZhdW1sOyZhdW1sOy9tdW9ra2FhIHRhcGFodHVtYW4gbXVva2thdXMgLWxvbWFra2VlbiBzaXZ1cG9oamFhJzsKJGxhbmdbJ2NhbF9teWV2ZW50c190ZW1wbGF0ZXMnXSA9ICdPbWF0IHRhcGFodHVtYXQgLWxpc3RhJzsKJGxhbmdbJ2luZm9fbXlldmVudHNfdGVtcGxhdGVfdGFiJ10gPSAnU2FhdGF2aWxsYSBvbGV2aWVuIHNpdnVwb2hqaWVuIGxpc3RhLCBqb2lsbGEgdm9pIG4mYXVtbDt5dHQmYXVtbDsmYXVtbDsgayZhdW1sO3l0dCZhdW1sO2omYXVtbDtuIHRhcGFodHVtaWVuIGxpc3Rhbic7CiRsYW5nWydteWV2ZW50c3RlbXBsYXRlX2FkZGVkaXQnXSA9ICdMaXMmYXVtbDsmYXVtbDsgdGFpIHBvaXN0YSAmcXVvdDtPbWF0IHRhcGFodHVtYXQmcXVvdDsgcmFwb3J0aW4gc2l2dXBvaGphYSc7CiRsYW5nWydhcmV5b3VzdXJlX3JlbW92ZWNvbmZsaWN0aW5nJ10gPSAnVCZhdW1sO20mYXVtbDsgdG9pbWludGEgcG9pc3RhYSB0YXBhaHR1bWF0LCBqb3RrYSBvdmF0IHJpc3RpcmlpZGFzc2Egc2VsbGFpc3RlbiB0YXBhaHR1bWllbiBrYW5zc2EsIGpvdGthIGVpdiZhdW1sO3Qgdm9pIG9sbGEgcCZhdW1sOyZhdW1sO2xsZWtrJmF1bWw7aW4uIE9sZXRrbyB2YXJtYSwgZXR0JmF1bWw7IGhhbHVhdCB0ZWhkJmF1bWw7IHQmYXVtbDttJmF1bWw7bj8nOwokbGFuZ1snZmlsdGVyX2NvbmZsaWN0aW5nJ10gPSAnU3VvZGF0YSBwJmF1bWw7JmF1bWw7bGxla2smYXVtbDtpbiBtZW5ldiZhdW1sO3QgdGFwYWh0dW1hdCc7CiRsYW5nWydvdmVybGFwX2FjdGlvbl9yZW1vdmUnXSA9ICdQb2lzdGEgcCZhdW1sOyZhdW1sO2xsZWtrJmF1bWw7aW4gbWVuZXYmYXVtbDt0IHRhcGFodHVtYXQgaGlsamFpc2VzdGknOwokbGFuZ1snb3ZlcmxhcF9hY3Rpb25fZXJyb3InXSA9ICdOJmF1bWw7eXQmYXVtbDsgdmlyaGUnOwokbGFuZ1sncHJvbXB0X292ZXJsYXBfYWN0aW9uJ10gPSAnTWl0JmF1bWw7IHRhcGFodHV1LCBrdW4gdGFwYWh0dW1hbiBsaXMmYXVtbDt5a3Nlc3MmYXVtbDsgdGFpIG11b2trYXVrc2Vzc2EgaHVvbWF0YWFuIHAmYXVtbDsmYXVtbDtsbGVrayZhdW1sO2lzeXlzJzsKJGxhbmdbJ2Vycm9yX2V2ZW50X2NvbmZsaWN0J10gPSAnVGFwYWh0dW1hbiBwJmF1bWw7aXYmYXVtbDttJmF1bWw7JmF1bWw7ciZhdW1sO3QgbWVuZXYmYXVtbDt0IHAmYXVtbDsmYXVtbDtsbGVrayZhdW1sO2luIHNlbGxhaXNlbiB0YXBhaHR1bWFuIGthbnNzYSwgam9ua2EgcCZhdW1sOyZhdW1sO2xsZSBlaSB2b2kgbGFpdHRhYSB0b2lzdGEgdGFwYWh0dW1hYSc7CiRsYW5nWydjYWxfaW5mb19vdmVybGFwJ10gPSAnS29za2VlIGFpbm9hc3RhYW4gdGFwYWh0dW1pYSwgam9pbGxhIG9uIGxvcHB1bWlzYWlrYSAodGFpIGtva28gcCZhdW1sO2l2JmF1bWw7biBrZXN0JmF1bWw7dmkmYXVtbDsgdGFwYWh0dW1pYSknOwokbGFuZ1snY2FsX292ZXJsYXAnXSA9ICdTYWxsaSB1dXNpZW4gdGFwYWh0dW1pZW4gbWVubiZhdW1sOyBwJmF1bWw7JmF1bWw7bGxla2smYXVtbDtpbiB0JmF1bWw7bSZhdW1sO24ga2Fuc3NhJzsKJGxhbmdbJ3Byb21wdF9vdmVybGFwX3BvbGljeSddID0gJ1RhcGFodHVtYW4gcCZhdW1sOyZhdW1sO2xsZWtrJmF1bWw7aXN5eXMgayZhdW1sO3l0JmF1bWw7bnQmb3VtbDsnOwokbGFuZ1sncG9saWN5X2FsbCddID0gJ0thaWtraSB0YXBhaHR1bWF0IHZvaXZhdCBtZW5uJmF1bWw7IHAmYXVtbDsmYXVtbDtsbGVrayZhdW1sO2luJzsKJGxhbmdbJ3BvbGljeV9ub25lJ10gPSAnVGFwYWh0dW1hdCBlaXYmYXVtbDt0IHZvaSBtZW5uJmF1bWw7IHAmYXVtbDsmYXVtbDtsbGVrayZhdW1sO2luJzsKJGxhbmdbJ3BvbGljeV9pbmRpdmlkdWFsJ10gPSAnVmFsaXRhYW4gdGFwYWh0dW1ha29odGFpc2VzdGknOwokbGFuZ1snbGJsX2JhY2snXSA9ICdUYWthaXNpbic7CiRsYW5nWydsYmxfdGVtcGxhdGVzJ10gPSAnU2l2dXBvaGphdCc7CiRsYW5nWyd0ZXh0YXJlYSddID0gJ1Rla3N0aWtlbnR0JmF1bWw7JzsKJGxhbmdbJ2Vycm9yX2NhbGVuZGFyX2luY29tcGF0aWJsZSddID0gJ0h1b21hc2ltbWUsIGV0dCZhdW1sOyBteSZvdW1sO3Mga2FsZW50ZXJpbW9kdXVsaSBvbiBhc2VubmV0dHVuYS4gVCZhdW1sO20mYXVtbDsgbW9kdXVsaSBlaSBvbGUgc2VuIGthbnNzYSB5aHRlZW5zb3BpdmEgZWlrJmF1bWw7IG5lIHZvaSBvbGxhIHlodCZhdW1sO2Fpa2FhIGFzZW5uZXR0dW5hLiBPbGUgaHl2JmF1bWw7IGphIHBvaXN0YSBrYWxlbnRlcmltb2R1dWxpIGVuc2luLic7CiRsYW5nWydlcnJvcl9ldmVudF9ub3RfZm91bmQnXSA9ICdKb2tvIHRhcGFodHVtYW4gdHVubmlzdGV0dGEgZWkgb2xlIHRpZXRva2FubmFzc2EsIHRhaSB0aWV0b2thbm5hc3NhIG9uIHVzZWFtcGkgdGFwYWh0dW1hIHQmYXVtbDtsbCZhdW1sOyB0dW5uaXN0ZWVsbGEhICglZCknOwokbGFuZ1snZmlyc3RfcGFnZSddID0gJzw8JzsKJGxhbmdbJ3ByZXZfcGFnZSddID0gJzwnOwokbGFuZ1snbmV4dF9wYWdlJ10gPSAnPic7CiRsYW5nWydsYXN0X3BhZ2UnXSA9ICc+Pic7CiRsYW5nWydwYWdlX29mJ10gPSAnU2l2dSAlZCAvICZhbXA7ZCc7CiRsYW5nWydzZWFyY2hfcmVzdWx0cyddID0gJ0thbGVudGVyaW4gaGFrdXR1bG9rc2V0JzsKJGxhbmdbJ3NlYXJjaF93b3JkcyddID0gJ0hha3VzYW5hdCc7CiRsYW5nWydub19yZXN1bHRzX2ZvdW5kJ10gPSAnRWkgdHVsb2tzaWEnOwokbGFuZ1snZnJlcXVlbmN5J10gPSAnRnJla3ZlbnNzaSc7CiRsYW5nWydzcGVjaWZpZWRfZGF0ZSddID0gJ0smYXVtbDt5dCZhdW1sOyB0aWV0dHkmYXVtbDsgcCZhdW1sO2l2JmF1bWw7bSZhdW1sOyZhdW1sO3ImYXVtbDsmYXVtbDsnOwokbGFuZ1snZmlyc3Rfc3VuZGF5J10gPSAnS3V1a2F1ZGVuIGVuc2ltbSZhdW1sO2luZW4gc3VubnVudGFpJzsKJGxhbmdbJ2ZpcnN0X21vbmRheSddID0gJ0t1dWthdWRlbiBlbnNpbW0mYXVtbDtpbmVuIG1hYW5hbnRhaSc7CiRsYW5nWydmaXJzdF90dWVzZGF5J10gPSAnS3V1a2F1ZGVuIGVuc2ltbSZhdW1sO2luZW4gdGlpc3RhaSc7CiRsYW5nWydmaXJzdF93ZWRuZXNkYXknXSA9ICdLdXVrYXVkZW4gZW5zaW1tJmF1bWw7aW5lbiBrZXNraXZpaWtrbyc7CiRsYW5nWydmaXJzdF90aHVyc2RheSddID0gJ0t1dWthdWRlbiBlbnNpbW0mYXVtbDtpbmVuIHRvcnN0YWknOwokbGFuZ1snZmlyc3RfZnJpZGF5J10gPSAnS3V1a2F1ZGVuIGVuc2ltbSZhdW1sO2luZW4gcGVyamFudGFpJzsKJGxhbmdbJ2ZpcnN0X3NhdHVyZGF5J10gPSAnS3V1a2F1ZGVuIGVuc2ltbSZhdW1sO2luZW4gbGF1YW50YWknOwokbGFuZ1snc2Vjb25kX3N1bmRheSddID0gJ0t1dWthdWRlbiB0b2luZW4gc3VubnVudGFpJzsKJGxhbmdbJ3NlY29uZF9tb25kYXknXSA9ICdLdXVrYXVkZW4gdG9pbmVuIG1hYW5hbnRhaSc7CiRsYW5nWydzZWNvbmRfdHVlc2RheSddID0gJ0t1dWthdWRlbiB0b2luZW4gdGlpc3RhaSc7CiRsYW5nWydzZWNvbmRfd2VkbmVzZGF5J10gPSAnS3V1a2F1ZGVuIHRvaW5lbiBrZXNraXZpaWtrbyc7CiRsYW5nWydzZWNvbmRfdGh1cnNkYXknXSA9ICdLdXVrYXVkZW4gdG9pbmVuIHRvcnN0YWknOwokbGFuZ1snc2Vjb25kX2ZyaWRheSddID0gJ0t1dWthdWRlbiB0b2luZW4gcGVyamFudGFpJzsKJGxhbmdbJ3NlY29uZF9zYXR1cmRheSddID0gJ0t1dWthdWRlbiB0b2luZW4gbGF1YW50YWknOwokbGFuZ1sndGhpcmRfc3VuZGF5J10gPSAnS3V1a2F1ZGVuIGtvbG1hcyBzdW5udW50YWknOwokbGFuZ1sndGhpcmRfbW9uZGF5J10gPSAnS3V1a2F1ZGVuIGtvbG1hcyBtYWFuYW50YWknOwokbGFuZ1sndGhpcmRfdHVlc2RheSddID0gJ0t1dWthdWRlbiBrb2xtYXMgdGlpc3RhaSc7CiRsYW5nWyd0aGlyZF93ZWRuZXNkYXknXSA9ICdLdXVrYXVkZW4ga29sbWFzIGtlc2tpdmlpa2tvJzsKJGxhbmdbJ3RoaXJkX3RodXJzZGF5J10gPSAnS3V1a2F1ZGVuIGtvbG1hcyB0b3JzdGFpJzsKJGxhbmdbJ3RoaXJkX2ZyaWRheSddID0gJ0t1dWthdWRlbiBrb2xtYXMgcGVyamFudGFpJzsKJGxhbmdbJ3RoaXJkX3NhdHVyZGF5J10gPSAnS3V1a2F1ZGVuIGtvbG1hcyBsYXVhbmF0YWknOwokbGFuZ1snZm91cnRoX3N1bmRheSddID0gJ0t1dWthdWRlbiBuZWxqJmF1bWw7cyBzdW5udW50YWknOwokbGFuZ1snZm91cnRoX21vbmRheSddID0gJ0t1dWthdWRlbiBuZWxqJmF1bWw7cyBtYWFuYW50YWknOwokbGFuZ1snZm91cnRoX3R1ZXNkYXknXSA9ICdLdXVrYXVkZW4gbmVsaiZhdW1sO3MgdGlpc3RhaSc7CiRsYW5nWydmb3VydGhfd2VkbmVzZGF5J10gPSAnS3V1a2F1ZGVuIG5lbGomYXVtbDtzIGtlc2tpdmlpa2tvJzsKJGxhbmdbJ2ZvdXJ0aF90aHVyc2RheSddID0gJ0t1dWthdWRlbiBuZWxqJmF1bWw7cyB0b3JzdGFpJzsKJGxhbmdbJ2ZvdXJ0aF9mcmlkYXknXSA9ICdLdXVrYXVkZW4gbmVsaiZhdW1sO3MgcGVyamFudGFpJzsKJGxhbmdbJ2ZvdXJ0aF9zYXR1cmRheSddID0gJ0t1dWthdWRlbiBuZWxqJmF1bWw7cyBsYXVhbnRhaSc7CiRsYW5nWydsYXN0X3N1bmRheSddID0gJ0t1dWthdWRlbiB2aWltZWluZW4gc3VubnVudGFpJzsKJGxhbmdbJ2xhc3RfbW9uZGF5J10gPSAnS3V1a2F1ZGVuIHZpaW1laW5lbiBtYWFuYW50YWknOwokbGFuZ1snbGFzdF90dWVzZGF5J10gPSAnS3V1a2F1ZGVuIHZpaW1laW5lbiB0aWlzdGFpJzsKJGxhbmdbJ2xhc3Rfd2VkbmVzZGF5J10gPSAnS3V1a2F1ZGVuIHZpaW1laW5lbiBrZXNraXZpaWtrbyc7CiRsYW5nWydsYXN0X3RodXJzZGF5J10gPSAnS3V1a2F1ZGVuIHZpaW1laW5lbiB0b3JzdGFpJzsKJGxhbmdbJ2xhc3RfZnJpZGF5J10gPSAnS3V1a2F1ZGVuIHZpaW1laW5lbiBwZXJqYW50YWknOwokbGFuZ1snbGFzdF9zYXR1cmRheSddID0gJ0t1dWthdWRlbiB2aWltZWluZW4gbGF1YW50YWknOwokbGFuZ1snZXJyb3JfaW52YWxpZF9yZWN1cl9tb250aGx5X2ZyZXEnXSA9ICdWaXJoZWVsbGluZW4gZnJla3ZlbnNzaS4uLiBldCB2b2kgbSZhdW1sOyZhdW1sO3JpdGVsbCZhdW1sOyBzZWsmYXVtbDsgdGlldHR5JmF1bWw7IHAmYXVtbDtpdiZhdW1sO20mYXVtbDsmYXVtbDtyJmF1bWw7JmF1bWw7IEpBIG11aXRhIGFydm9qYSc7CiRsYW5nWydzZWFyY2hyZXN1bHR0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnTGlzJmF1bWw7JmF1bWw7L211b2trYWEgaGFrdXR1bG9zdGVuIHNpdnVwb2hqYWEnOwokbGFuZ1snaW5mb19zZWFyY2hyZXN1bHRfdGVtcGxhdGVfdGFiJ10gPSAnU2FhdGF2aWxsYSBvbGV2YSBsaXN0YSBoYWt1dHVsb3N0ZW4gc2l2dXBvaGppc3RhJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9zZWFyY2hyZXN1bHRfdGVtcGxhdGUnXSA9ICdKJmF1bWw7cmplc3RlbG0mYXVtbDtuIG9sZXR1c3NpdnVwb2hqYSBoYWt1dHVsb2tzaWxsZSc7CiRsYW5nWydjYWxfc2VhcmNoX3Jlc3VsdF90ZW1wbGF0ZXMnXSA9ICdIYWt1dHVsb2tzZXQnOwokbGFuZ1snZXJyb3JfcXVlcnlfZmFpbGVkJ10gPSAnVGlldG9rYW5uYXN0YSBoYWt1IGVwJmF1bWw7b25uaXN0dWknOwokbGFuZ1snZXJyb3Jfc2VhcmNoX2ludmFsaWRfZGF0ZXMnXSA9ICdWaXJoZWVsbGlzZXQgcCZhdW1sO2l2JmF1bWw7bSZhdW1sOyZhdW1sO3ImYXVtbDt0JzsKJGxhbmdbJ3RleHQnXSA9ICdUZWtzdGknOwokbGFuZ1snc2VhcmNoJ10gPSAnSGFrdSc7CiRsYW5nWydjYXRlZ29yeSddID0gJ0thdGVnb3JpYSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfc2VhcmNoX3RlbXBsYXRlJ10gPSAnSiZhdW1sO3JqZXN0ZWxtJmF1bWw7biBvbGV0dXNzaXZ1cG9oamEgaGFrdWxvbWFra2VlbGxlJzsKJGxhbmdbJ3NlYXJjaHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdMaXMmYXVtbDsmYXVtbDsvbXVva2thYSBoYWt1bG9tYWtrZWVuIHNpdnVwb2hqYWEnOwokbGFuZ1snaW5mb19zZWFyY2hfdGVtcGxhdGVfdGFiJ10gPSAnU2FhdGF2aWxsYSBvbGV2YSBsaXN0YSBoYWt1bG9tYWtrZWVuIHNpdnVwb2hqaXN0YSc7CiRsYW5nWydjYWxfc2VhcmNoX2Zvcm1fdGVtcGxhdGVzJ10gPSAnSGFrdWxvbWFrZSc7CiRsYW5nWydtYXgnXSA9ICdtYXguJzsKJGxhbmdbJ3RpbWVzJ10gPSAna2VydGFhJzsKJGxhbmdbJ29uJ10gPSAnb24gJzsKJGxhbmdbJ2FyZXlvdXN1cmVfdW5pbnN0YWxsJ10gPSAnT2xldGtvIHZhcm1hLCBldHQmYXVtbDsgaGFsdWF0IHRlaGQmYXVtbDsgdCZhdW1sO20mYXVtbDtuPyBKYXRrYW1pbmVuIHBvaXN0YWEga2Fpa2tpIHQmYXVtbDtoJmF1bWw7biBtb2R1dWxpaW4gbGlpdHR5diZhdW1sO3QgdGllZG90Lic7CiRsYW5nWydwb3N0X3VuaW5zdGFsbCddID0gJ0thbGVudGVyaW1vZHV1bGkgb24gcG9pc3RldHR1IG9ubmlzdHVuZWVzdGkgamEgdCZhdW1sO2gmYXVtbDtuIG1vZHV1bGlpbiBsaWl0dHl2JmF1bWw7dCBzaXZ1cG9oamF0IG9uIHBvaXN0ZXR0dS4nOwokbGFuZ1snZmllbGR1cGRhdGVkJ10gPSAnS2VudHQmYXVtbDsgcCZhdW1sO2l2aXRldHR5JzsKJGxhbmdbJ2V2ZXJ5J10gPSAnSm9rYSc7CiRsYW5nWydvciddID0gJ3RhaSc7CiRsYW5nWyd1cGRhdGVfY2hpbGRyZW4nXSA9ICdQJmF1bWw7aXZpdCZhdW1sOyBhbGF0YXBhaHR1bWF0JzsKJGxhbmdbJ2Vycm9yX25vY2F0ZWdvcnknXSA9ICdTaW51biB0JmF1bWw7eXR5eSB2YWxpdGEgYWluYWtpbiB5a3NpIGthdGVnb3JpYSc7CiRsYW5nWydlcnJvcl9ub3RoaW5nc2VsZWN0ZWQnXSA9ICdFaSB2YWxpdHR1IG1pdCZhdW1sOyZhdW1sO24gcG9pc3RldHRhdmFrc2knOwokbGFuZ1snZXJyb3JfZXZlbnRvdmVybGFwJ10gPSAnQW50YW1hc2kgcGFyYW1ldHJpdCB0b2lzdHV2YWxsZSB0YXBhaHR1bWFsbGEgYWloZXV0dGFpc2kgcCZhdW1sOyZhdW1sO2xsZWtrJmF1bWw7aXNlbiB0YXBhaHR1bWFuLic7CiRsYW5nWydyZWN1cnMnXSA9ICdUb2lzdHV1JzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRfZGF0ZXMnXSA9ICdZa3NpIHRhaSB1c2VhbXBpIGFubmV0dHUgYXJ2byBvbGkgdmlyaGVlbGxpbmVuJzsKJGxhbmdbJ3N1bmRheSddID0gJ3N1bm51bnRhaSc7CiRsYW5nWydtb25kYXknXSA9ICdtYWFuYW50YWknOwokbGFuZ1sndHVlc2RheSddID0gJ3RpaXN0YWknOwokbGFuZ1snd2VkbmVzZGF5J10gPSAna2Vza2l2aWlra28nOwokbGFuZ1sndGh1cnNkYXknXSA9ICd0b3JzdGFpJzsKJGxhbmdbJ2ZyaWRheSddID0gJ3BlcmphbnRhaSc7CiRsYW5nWydzYXR1cmRheSddID0gJ2xhdWFudGFpJzsKJGxhbmdbJ2FiYnJfc3VuZGF5J10gPSAnc3UnOwokbGFuZ1snYWJicl9tb25kYXknXSA9ICdtYSc7CiRsYW5nWydhYmJyX3R1ZXNkYXknXSA9ICd0aSc7CiRsYW5nWydhYmJyX3dlZG5lc2RheSddID0gJ2tlJzsKJGxhbmdbJ2FiYnJfdGh1cnNkYXknXSA9ICd0byc7CiRsYW5nWydhYmJyX2ZyaWRheSddID0gJ3BlJzsKJGxhbmdbJ2FiYnJfc2F0dXJkYXknXSA9ICdsYSc7CiRsYW5nWyd3ZWVrZGF5cyddID0gJ1ZpaWtvbnAmYXVtbDtpdiZhdW1sO3QnOwokbGFuZ1sncGx1cmFsX2RhaWx5J10gPSAnUCZhdW1sO2l2JmF1bWw7JmF1bWw7JzsKJGxhbmdbJ3BsdXJhbF93ZWVrbHknXSA9ICdWaWlra29hJzsKJGxhbmdbJ3BsdXJhbF9tb250aGx5J10gPSAnS3V1a2F1dHRhJzsKJGxhbmdbJ3BsdXJhbF95ZWFybHknXSA9ICdWdW90dGEnOwokbGFuZ1snbm8nXSA9ICdFaSc7CiRsYW5nWydkYWlseSddID0gJ1AmYXVtbDtpdml0dCZhdW1sO2luJzsKJGxhbmdbJ3dlZWtseSddID0gJ1ZpaWtvdHRhaW4nOwokbGFuZ1snbW9udGhseSddID0gJ0t1dWthdXNpdHRhaW4nOwokbGFuZ1sneWVhcmx5J10gPSAnVnVvc2l0dGFpbic7CiRsYW5nWydpbnRlcnZhbCddID0gJ1RvaXN0YSBqb2thJzsKJGxhbmdbJ2NhbF9yZWN1cl9kZXRhaWxzJ10gPSAnVG9pc3R1dmFuIHRhcGFodHVtYW4gdGllZG90JzsKJGxhbmdbJ3VubGltaXRlZCddID0gJ1Jham9pdHRhbWF0b24nOwokbGFuZ1snbWF4X3JlY3VyX2V2ZW50cyddID0gJ0FsYXRhcGFodHVtaWVuIG1ha3NpbWltJmF1bWw7JmF1bWw7ciZhdW1sOyc7CiRsYW5nWyd1c2VfdG9fZGF0ZSddID0gJ00mYXVtbDsmYXVtbDtyaXR0ZWxlIHRvaW5lbiBsb3BwdW1pc3AmYXVtbDtpdiZhdW1sO20mYXVtbDsmYXVtbDtyJmF1bWw7Pyc7CiRsYW5nWydjYW5jZWwnXSA9ICdQZXJ1dXRhJzsKJGxhbmdbJ3Nob3dfY2hpbGRfZXZlbnRzJ10gPSAnTiZhdW1sO3l0JmF1bWw7IGFsYXRhcGFodHVtYXQgPGVtPih2b2kgYWloZXV0dGFhIGVyaXR0JmF1bWw7aW4gcGl0ayZhdW1sO24gbGlzdGFuKTwvZW0+JzsKJGxhbmdbJ24vYSddID0gJ2VpIG1pdCZhdW1sOyZhdW1sO24nOwokbGFuZ1sncmVjdXJzX3VudGlsJ10gPSAnVG9pc3RhIGt1bm5lcyc7CiRsYW5nWydwYXJlbnQnXSA9ICdQJmF1bWw7JmF1bWw7dGFwYWh0dW1hJzsKJGxhbmdbJ3JlY3VyX3BlcmlvZCddID0gJ1RvaXN0dW1pc2Fpa2EnOwokbGFuZ1snZmlsdGVyJ10gPSAnU3VvZGF0YSc7CiRsYW5nWydzdGFydF9kYXRlJ10gPSAnQWxrYW1pc3AmYXVtbDtpdiZhdW1sO20mYXVtbDsmYXVtbDtyJmF1bWw7JzsKJGxhbmdbJ2VuZF9kYXRlJ10gPSAnTG9wcHVtaXNwJmF1bWw7aXYmYXVtbDttJmF1bWw7JmF1bWw7ciZhdW1sOyc7CiRsYW5nWydpbmZvX3VwY29taW5nbGlzdF90ZW1wbGF0ZV90YWInXSA9ICdTYWF0YXZpbGxhIG9sZXZhIGxpc3RhIHNpdnVwb2hqaXN0YSB0dWxldmlsbGUgdGFwYWh0dW1pbGxlJzsKJGxhbmdbJ3VwY29taW5nbGlzdHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdMaXMmYXVtbDsmYXVtbDsvbXVva2thYSB0dWxldmllbiB0YXBhaHR1bWllbiBuJmF1bWw7eXR0JmF1bWw7bWlzZW4gc2l2dXBvaGppYSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfdXBjb21pbmdsaXN0X3RlbXBsYXRlJ10gPSAnSiZhdW1sO3JqZXN0ZWxtJmF1bWw7biBvbGV0dXNzaXZ1cG9oamEgdHVsZXZpZW4gdGFwYWh0dW1pZW4gbiZhdW1sO3l0dCZhdW1sO21pc2Vrc2knOwokbGFuZ1snaW5mb19saXN0X3RlbXBsYXRlX3RhYiddID0gJ1NhYXRhdmlsbGEgb2xldmEgbGlzdGEgc2l2dXBvaGppc3RhIHRhcGFodHVtaWVuIGxpc3RhbiBuJmF1bWw7eXR0JmF1bWw7bWlzZWtzaSc7CiRsYW5nWydsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ0xpcyZhdW1sOyZhdW1sOy9tdW9ra2FhIHNpdnVwb2hqYWEgdGFwYWh0dW1hbGlzdGFuIG4mYXVtbDt5dHQmYXVtbDttaXNla3NpJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9saXN0X3RlbXBsYXRlJ10gPSAnSiZhdW1sO3JqZXN0ZWxtJmF1bWw7biBvbGV0dXNzaXZ1cG9oamEgdGFwYWh0dW1hbGlzdGFsbGUnOwokbGFuZ1snaW5mb19ldmVudF90ZW1wbGF0ZV90YWInXSA9ICdTYWF0YXZpbGxhIG9sZXZpZW4gc2l2dXBvaGppZW4gbGlzdGEgdGFwYWh0dW1pZW4gbiZhdW1sO3l0dCZhdW1sO21pc2Vrc2knOwokbGFuZ1snZXZlbnR0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnTGlzJmF1bWw7JmF1bWw7L211b2trYWEgc2l2dXBvaGphYSB0YXBhaHR1bWFuIG4mYXVtbDt5dHQmYXVtbDttaXNla3NpJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9ldmVudF90ZW1wbGF0ZSddID0gJ0omYXVtbDtyamVzdGVsbSZhdW1sO24gb2xldHVzIHNpdnVwb2hqYSB0YXBhaHR1bWFuIG4mYXVtbDt5dHQmYXVtbDttaXNla3NpJzsKJGxhbmdbJ2luZm9fY2FsZW5kYXJfdGVtcGxhdGVfdGFiJ10gPSAnU2FhdGF2aWxsYSBvbGV2YSBsaXN0YSBzaXZ1cG9oamlzdGEga2FsZW50ZXJpbiBuJmF1bWw7eXR0JmF1bWw7bWlzZWtzaSc7CiRsYW5nWydjYWxlbmRhcnRlbXBsYXRlX2FkZGVkaXQnXSA9ICdMaXMmYXVtbDsmYXVtbDsvbXVva2thYSBzaXZ1cG9oamlhIGthbGVudGVyaW4gbiZhdW1sO3l0dCZhdW1sO21pc2Vrc2knOwokbGFuZ1snaW5mb19zeXNkZmx0X2NhbGVuZGFyX3RlbXBsYXRlJ10gPSAnSiZhdW1sO3JqZXN0ZWxtJmF1bWw7biBvbGV0dXNzaXZ1cG9oamEga2FsZW50ZXJpbiBuJmF1bWw7eXR0JmF1bWw7bWlzZWtzaSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfdGVtcGxhdGUnXSA9ICdUJmF1bWw7bSZhdW1sOyBsb21ha2UgbSZhdW1sOyZhdW1sO3JpdHRlbGVlIHNpdnVwb2hqYW4sIGpvdGEgayZhdW1sO3l0ZXQmYXVtbDsmYXVtbDtuLCBrdW4ga2xpa2thYXQgJnF1b3Q7VXVzaSBzaXZ1cG9oamEmcXVvdDstcGFpbmlrZXR0YSB2JmF1bWw7bGlsZWhkZXNzJmF1bWw7LiBUJmF1bWw7bSZhdW1sO24gYXJ2b24gbXV1dHRhbWlzZWxsZSBlaSBvbGUgdmFpa3V0dXN0YSBoZXRpIHQmYXVtbDttJmF1bWw7biBtb2R1dWxpbiBsdW9taWxsZSBzaXZ1aWxsZS4nOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50QWRkZWQnXSA9ICdLdXRzdXRhYW4ga2FsZW50ZXJpdGFwYWh0dW1hbiBsaXMmYXVtbDsmYXVtbDttaXNlbiBqJmF1bWw7bGtlZW4nOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RWRpdGVkJ10gPSAnS3V0c3V0YWFuIGthbGVudGVyaXRhcGFodHVtYW4gbXV1dG9rc2VuIGomYXVtbDtsa2Vlbic7CiRsYW5nWydldmVudGRlc2MtRXZlbnREZWxldGVkJ10gPSAnS3V0c3V0YWFuIHRhcGFodHVtYW4gcG9pc3RvbiBqJmF1bWw7bGtlZW4nOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5QWRkZWQnXSA9ICdLdXRzdXRhYW4ga2F0ZWdvcmlhbiBsaXMmYXVtbDsmYXVtbDttaXNlbiBqJmF1bWw7bGtlZW4nOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5RWRpdGVkJ10gPSAnS3V0c3V0YWFuIGthdGVnb3JpYW4gbXV1dG9rc2VuIGomYXVtbDtsa2Vlbic7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnS3V0c3V0YWFuIGthdGVnb3JpYW4gcG9pc3RvbiBqJmF1bWw7bGtlZW4nOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50QWRkZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBldmVudCBpcyBhZGRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X3RpdGxlXCZxdW90OyAtIEV2ZW50IFRpdGxlPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfc3VtbWFyeVwmcXVvdDsgLSBTdW1tYXJ5IFRleHQ8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kZXRhaWxzXCZxdW90OyAtIERldGFpbGVkIERlc2NyaXB0aW9uPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9zdGFydFwmcXVvdDsgLSBUaGUgZXZlbnQgc3RhcnQgZGF0ZS90aW1lPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9lbmRcJnF1b3Q7IC0gVGhlIGV2ZW50IGVuZCBkYXRlL3RpbWU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9jcmVhdGVkX2J5XCZxdW90OyAtIFRoZSB1c2VyaWQgb2YgdGhlIGF1dGhvcjwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2lkXCZxdW90OyAtIFRoZSBldmVudCBpZDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudEVkaXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIGVkaXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X3RpdGxlXCZxdW90OyAtIEV2ZW50IFRpdGxlPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfc3VtbWFyeVwmcXVvdDsgLSBTdW1tYXJ5IFRleHQ8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kZXRhaWxzXCZxdW90OyAtIERldGFpbGVkIERlc2NyaXB0aW9uPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9zdGFydFwmcXVvdDsgLSBUaGUgZXZlbnQgc3RhcnQgZGF0ZS90aW1lPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9lbmRcJnF1b3Q7IC0gVGhlIGV2ZW50IGVuZCBkYXRlL3RpbWU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9jcmVhdGVkX2J5XCZxdW90OyAtIFRoZSB1c2VyaWQgb2YgdGhlIGF1dGhvcjwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2lkXCZxdW90OyAtIFRoZSBldmVudCBpZDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudERlbGV0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBldmVudCBpcyBkZWxldGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7ZXZlbnRfaWRcJnF1b3Q7IC0gVGhlIGV2ZW50IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5QWRkZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBjYXRlZ29yeSBpcyBhZGRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2NhdGVnb3J5X2lkXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBpZDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeUVkaXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGNhdGVnb3J5IGlzIGVkaXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2NhdGVnb3J5X2lkXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBpZDwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X25hbWVcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IG5hbWU8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9vcmRlclwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgc29ydCBvcmRlcjwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeURlbGV0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBjYXRlZ29yeSBpcyBkZWxldGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfaWRcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IGlkPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfbmFtZVwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgbmFtZTwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X29yZGVyXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBzb3J0IG9yZGVyPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXJyb3JfY3N2X2luc2VydCddID0gJ0Vycm9yIGltcG9ydGluZyBldmVudCBmcm9tIGNzdiBhdCBsaW5lICVkJzsKJGxhbmdbJ2Vycm9yX2NzdmZpcnN0bGluZWZsZG5vdGZvdW5kJ10gPSAnQSByZXF1aXJlZCBmaWVsZDogJXMsIGNvdWxkIG5vdCBiZSBmb3VuZCBpbiB0aGUgY3N2IGZpbGUgaGVhZGVyIGxpbmUnOwokbGFuZ1snZXJyb3JfY3N2aW52YWxpZGZpcnN0bGluZSddID0gJ0NvdWxkIG5vdCBmaW5kIGEgdmFsaWQgZmlyc3QgbGluZSBvZiB0aGUgQ1NWIGZpbGUnOwokbGFuZ1snbXNnX2V2ZW50YWRkZWQnXSA9ICdUYXBhaHR1bWEgbGlzJmF1bWw7dHR5JzsKJGxhbmdbJ2Vycm9yX25vZXZlbnRuYW1lJ10gPSAnVGFwYWh0dW1hbGxhIHQmYXVtbDt5dHl5IG9sbGEgbmltaSc7CiRsYW5nWydlcnJvcl9ub3VwbG9hZCddID0gJ1ZpcmhlOiBQYWx2ZWxpbWVsbGUgc2lpcnJldHR5JmF1bWw7IHRpZWRvc3RvYSBlaSBsJm91bWw7eXR5bnl0JzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRmaWxlbmFtZSddID0gJ1ZpcmhlOiBUaWVkb3N0b24gc2lpcnRvYSBlaSB2b2lkYSBoeXYmYXVtbDtrc3kmYXVtbDsnOwokbGFuZ1snZXJyb3JfcHJvYmxlbXdpdGh1cGxvYWQnXSA9ICdWaXJoZTogVGllZG9zdG9uIHNpaXJyb3NzYSB0YXBhaHR1aSB2aXJoZSc7CiRsYW5nWydlcnJvcl9maWxlY29weWZhaWxlZCddID0gJ1ZpcmhlOiBUaWVkb3N0b24ga29waW9pbm5pc3NhIGxvcHVsbGlzZWVuIHNpamFpbnRpaW5zYSB0YXBhaHR1aSB2aXJoZSc7CiRsYW5nWydlcnJvcl9maWxlZXhpc3RzJ10gPSAnVmlyaGU6IFNhbWFubmltaW5lbiB0aWVkb3N0byBvbiBqbyBvbGVtYXNzYSc7CiRsYW5nWydlcnJvcl9jc3ZmaWxlbm90Zm91bmQnXSA9ICdWaXJoZTogIENTVi10aWVkb3N0b2EgZWkgdm9pdHUgbCZvdW1sO3l0JmF1bWw7JmF1bWw7JzsKJGxhbmdbJ2Vycm9yX2NhbnRvcGVuZmlsZSddID0gJ1ZpcmhlOiBUaWVkb3N0b2EgZWkgdm9pZGEgYXZhdGEnOwokbGFuZ1snZXJyb3JfY2F0ZWdvcnlleGlzdHMnXSA9ICdWaXJoZTogS2F0ZWdvcmlhIG5pbWVsbCZhdW1sOyAlcyBvbiBqbyBvbGVtYXNzYSc7CiRsYW5nWydjYWxfaWQnXSA9ICdJRCc7CiRsYW5nWydjYWxfY2FsZW5kYXInXSA9ICdLYWxlbnRlcmknOwokbGFuZ1snY2FsX2RlZmF1bHRfdGVtcGxhdGVzJ10gPSAnT2xldHVrc2V0JzsKJGxhbmdbJ2NhbF9kZXNjcmlwdGlvbiddID0gJ01vbmlwdW9saW5lbiBtb2R1dWxpLCBqb25rYSBhdnVsbGEgdm9pdCBuJmF1bWw7eXR0JmF1bWw7JmF1bWw7IHRhcGFodHVtaWEgdXNlaXNzYSBlcmkgbXVvZG9pc3NhLic7CiRsYW5nWydjYWxfYWRkZXZlbnQnXSA9ICdMaXMmYXVtbDsmYXVtbDsgdGFwYWh0dW1hJzsKJGxhbmdbJ2NhbF9pbXBvcnRfZXZlbnRzJ10gPSAnVHVvIHRhcGFodHVtaWEnOwokbGFuZ1snY2FsX2V2ZW50cyddID0gJ1RhcGFodHVtYXQnOwokbGFuZ1snY2FsX2NhdGVnb3JpZXMnXSA9ICdLYXRlZ29yaWF0JzsKJGxhbmdbJ2NhbF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ0thbGVudGVyaSc7CiRsYW5nWydjYWxfbGlzdF90ZW1wbGF0ZSddID0gJ1RhcGFodHVtYWxpc3RhJzsKJGxhbmdbJ2NhbF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICdUdWxldmF0IHRhcGFodHVtYXQnOwokbGFuZ1snY2FsX2V2ZW50X3RlbXBsYXRlJ10gPSAnVGFwYWh0dW1hJzsKJGxhbmdbJ2NhbF9zZXR0aW5ncyddID0gJ0FzZXR1a3NldCc7CiRsYW5nWydjYWxfcHJldiddID0gJyZsYXF1bzsgRWRlbGxpbmVuJzsKJGxhbmdbJ2NhbF9uZXh0J10gPSAnU2V1cmFhdmEgJnJhcXVvOyc7CiRsYW5nWydjYWxfY2F0ZWdvcmllc191cGRhdGVkJ10gPSAnS2F0ZWdvcmlhdCBwJmF1bWw7aXZpdGV0dHknOwokbGFuZ1snY2FsX3NldHRpbmdzX3VwZGF0ZWQnXSA9ICdBc2V0dWtzZXQgcCZhdW1sO2l2aXRldHR5JzsKJGxhbmdbJ2NhbF9hZGRfZXZlbnQnXSA9ICdMaXMmYXVtbDsmYXVtbDsgdGFwYWh0dW1hJzsKJGxhbmdbJ2NhbF9lZGl0J10gPSAnTXVva2thYSc7CiRsYW5nWydjYWxfZGVsZXRlJ10gPSAnUG9pc3RhJzsKJGxhbmdbJ2NhbF9hcmV5b3VzdXJlJ10gPSAnT2xldGtvIHZhcm1hPyc7CiRsYW5nWydjYWxfdXBkYXRlX3RlbXBsYXRlJ10gPSAnUCZhdW1sO2l2aXQmYXVtbDsgcG9oamEnOwokbGFuZ1snY2FsX3N1bmRheSddID0gJ3N1bm51bnRhaSc7CiRsYW5nWydjYWxfbW9uZGF5J10gPSAnbWFhbmFudGFpJzsKJGxhbmdbJ2NhbF90dWVzZGF5J10gPSAndGlpc3RhaSc7CiRsYW5nWydjYWxfd2VkbmVzZGF5J10gPSAna2Vza2l2aWlra28nOwokbGFuZ1snY2FsX3RodXJzZGF5J10gPSAndG9yc3RhaSc7CiRsYW5nWydjYWxfZnJpZGF5J10gPSAncGVyamFudGFpJzsKJGxhbmdbJ2NhbF9zYXR1cmRheSddID0gJ2xhdWFudGFpJzsKJGxhbmdbJ2NhbF9zdW4nXSA9ICdzdSc7CiRsYW5nWydjYWxfbW9uJ10gPSAnbWEnOwokbGFuZ1snY2FsX3R1ZXMnXSA9ICd0aSc7CiRsYW5nWydjYWxfd2VkJ10gPSAna2UnOwokbGFuZ1snY2FsX3RodXJzJ10gPSAndG8nOwokbGFuZ1snY2FsX2ZyaSddID0gJ3BlJzsKJGxhbmdbJ2NhbF9zYXQnXSA9ICdsYSc7CiRsYW5nWydjYWxfamFudWFyeSddID0gJ3RhbW1pa3V1JzsKJGxhbmdbJ2NhbF9mZWJydWFyeSddID0gJ2hlbG1pa3V1JzsKJGxhbmdbJ2NhbF9tYXJjaCddID0gJ21hYWxpc2t1dSc7CiRsYW5nWydjYWxfYXByaWwnXSA9ICdodWh0aWt1dSc7CiRsYW5nWydjYWxfbWF5J10gPSAndG91a29rdXUnOwokbGFuZ1snY2FsX2p1bmUnXSA9ICdrZXMmYXVtbDtrdXUnOwokbGFuZ1snY2FsX2p1bHknXSA9ICdoZWluJmF1bWw7a3V1JzsKJGxhbmdbJ2NhbF9hdWd1c3QnXSA9ICdlbG9rdXUnOwokbGFuZ1snY2FsX3NlcHRlbWJlciddID0gJ3N5eXNrdXUnOwokbGFuZ1snY2FsX29jdG9iZXInXSA9ICdsb2tha3V1JzsKJGxhbmdbJ2NhbF9ub3ZlbWJlciddID0gJ21hcnJhc2t1dSc7CiRsYW5nWydjYWxfZGVjZW1iZXInXSA9ICdqb3VsdWt1dSc7CiRsYW5nWydjYWxfYWRkJ10gPSAnTGlzJmF1bWw7JmF1bWw7JzsKJGxhbmdbJ2NhbF91cGRhdGUnXSA9ICdQJmF1bWw7aXZpdCZhdW1sOyc7CiRsYW5nWydjYWxfZXZlbnQnXSA9ICdUYXBhaHR1bWEnOwokbGFuZ1snY2FsX2RhdGUnXSA9ICdQJmF1bWw7aXYmYXVtbDsnOwokbGFuZ1snY2FsX3N1bW1hcnknXSA9ICdUaWl2aXN0ZWxtJmF1bWw7JzsKJGxhbmdbJ2NhbF9kZXRhaWxzJ10gPSAnTGlzJmF1bWw7dGllZG90JzsKJGxhbmdbJ2NhbF9tb3JlJ10gPSAnTGlzJmF1bWw7JmF1bWw7ICZyYXF1bzsnOwokbGFuZ1snY2FsX3JldHVybiddID0gJ1BhbGFhJzsKJGxhbmdbJ2NhbF90byddID0gJyAtICc7CiRsYW5nWydjYWxfcGFzdF9ldmVudHMnXSA9ICdNZW5uZWV0IHRhcGFodHVtYXQnOwokbGFuZ1snY2FsX3VwY29taW5nX2V2ZW50cyddID0gJ1R1bGV2YXQgdGFwYWh0dW1hdCc7CiRsYW5nWydjYWxfYW55X2NhdGVnb3J5J10gPSAnS2Fpa2tpIGthdGVnb3JpYXQnOwokbGFuZ1snY2FsX3Nob3dfb25seV9ldmVudHNfaW4nXSA9ICdOJmF1bWw7eXQmYXVtbDsgdmFpbiAnOwokbGFuZ1snY2FsX2ZpbHRlcl9ieSddID0gJ1N1b2RhdGEgb3RzaWtrbyc7CiRsYW5nWydjYWxfZ28nXSA9ICdNZW5lJzsKJGxhbmdbJ2NhbF90aXRsZSddID0gJ090c2lra28nOwokbGFuZ1snY2FsX2Zyb21kYXRlJ10gPSAnTWlzdCZhdW1sOyc7CiRsYW5nWydjYWxfdG9kYXRlJ10gPSAnTWloaW4nOwokbGFuZ1snY2FsX3VwZGF0ZV9jYXRlZ29yaWVzJ10gPSAnUCZhdW1sO2l2aXQmYXVtbDsga2F0ZWdvcmlhdCc7CiRsYW5nWydjYWxfbGFuZ3VhZ2UnXSA9ICdLaWVsaSc7CiRsYW5nWydjYWxfdXBkYXRlc2V0dGluZ3MnXSA9ICdQJmF1bWw7aXZpdCZhdW1sOyBhc2V0dWtzZXQnOwokbGFuZ1snY2FsX3VzZV90d2VsdmVfaG91cl9jbG9jayddID0gJ0smYXVtbDt5dGV0JmF1bWw7JmF1bWw7bmsmb3VtbDsgcHVkb3R1c3ZhbGlrb2lzc2EgMTItdHVubmluIGtlbGxvYT8nOwokbGFuZ1snY2FsX2RlZmF1bHRfY2F0ZWdvcnknXSA9ICdPbGV0dXNrYXRlZ29yaWEnOwokbGFuZ1snY2FsX3VwZGF0ZV9maWVsZHMnXSA9ICdQJmF1bWw7aXZpdCZhdW1sOyBrZW50JmF1bWw7dCc7CiRsYW5nWydmb3JjZV9jYXRlZ29yeSddID0gJ1Bha290YSB2JmF1bWw7aGludCZhdW1sOyZhdW1sO24geWtzaSBrYXRlZ29yaWEnOwokbGFuZ1snc2hvd3Bhc3R5ZWFycyddID0gJ0t1aW5rYSBtb250YSB2dW90dGEgbWVubmVpc3l5dGVlbiBvbiBzYWxsaXR0dWEnOwokbGFuZ1snc2hvd2Z1dHVyZXllYXJzJ10gPSAnS3VpbmthIG1vbnRhIHZ1b3R0YSB0dWxldmFpc3V1dGVlbiBvbiBzYWxsaXR0dWEnOwokbGFuZ1snaGlkZXN1bW1hcnknXSA9ICdQaWlsb3RldGFhbmtvIHlodGVlbnZldG9rZW50dCZhdW1sOyc7CiRsYW5nWydoaWRlY29udGVudCddID0gJ1BpaWxvdGV0YWFua28gc2lzJmF1bWw7bHQmb3VtbDtrZW50dCZhdW1sOyc7CiRsYW5nWydjYXRlZ29yeV9yZW1pbmRlciddID0gJ1ZhbGl0c2UgdGFwYWh0dW1hbGxlIHlrc2kgdGFpIHVzZWFtcGlhIGthdGVnb3JpYSc7CiRsYW5nWydtb2R1bGVfZXhhbXBsZV9zdHlsZXNoZWV0J10gPSAnQ1NTLWVzaW1lcmtraSBrYWxlbnRlcmlsbGUnOwokbGFuZ1snZXJyb3JfcGVybWlzc2lvbiddID0gJ1RhcnZpdHNldCBhc2lhYW5rdWx1dmF0IG9pa2V1ZGV0ICglcykgdCZhdW1sO2gmYXVtbDtuIHRvaW1pbm5hbGxpc3V1dGVlbic7CiRsYW5nWydpbnN0YWxsX3Bvc3RtZXNzYWdlJ10gPSAnVmFybWlzdGEsIGV0dCZhdW1sOyBsaXMmYXVtbDsmYXVtbDt0IG9pa2V1ZGVuICZxdW90O011b2thdGEga2FsZW50ZXJpYSZxdW90OyBuaWlsbGUgayZhdW1sO3l0dCZhdW1sO2ppbGxlLCBqb3RrYSB5bGwmYXVtbDtwaXQmYXVtbDt2JmF1bWw7dCBrYWxlbnRlcml0YXBhaHR1bWlhLic7CiRsYW5nWydkZWxldGV0YWdnZWQnXSA9ICdQb2lzdGEgdmFsaXR1dCB0YXBhaHR1bWF0JzsKJGxhbmdbJ2NvbmZpcm1kZWxldGV0YWdnZWQnXSA9ICdIYWx1YXRrbyB2YXJtYXN0aSBwb2lzdGFhIG4mYXVtbDttJmF1bWw7IHRhcGFodHVtYXQ/JzsKJGxhbmdbJ3RhZ2dlZGRlbGV0ZWQnXSA9ICdWYWxpdHV0IHRhcGFodHVtYXQgcG9pc3RldHR1JzsKJGxhbmdbJ3RlbXBsYXRlcyddID0gJ1NpdnVwb2hqYXQnOwokbGFuZ1sndGVtcGxhdGVfaGVscCddID0gJ1NpdnVwb2hqaWVuIG9oamUnOwokbGFuZ1snZmlsZV90ZW1wbGF0ZXMnXSA9ICdUaWVkb3N0b3BvaGphdCc7CiRsYW5nWydhZGR0ZW1wbGF0ZSddID0gJ0xpcyZhdW1sOyZhdW1sOyBzaXZ1cG9oamEnOwokbGFuZ1sndGVtcGxhdGUnXSA9ICdTaXZ1cG9oamEnOwokbGFuZ1sndGVtcGxhdGVuYW1ldGV4dCddID0gJ1NpdnVwb2hqYW4gbmltaSc7CiRsYW5nWydlZGl0dGVtcGxhdGUnXSA9ICdNdW9ra2FhIHNpdnVwb2hqYWEnOwokbGFuZ1snZGVsZXRldGVtcGxhdGUnXSA9ICdQb2lzdGEgc2l2dXBvaGphJzsKJGxhbmdbJ25ld3RlbXBsYXRlJ10gPSAnVXVkZW4gc2l2dXBvaGphbiBuaW1pJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZWV4aXN0cyddID0gJ1ZpcmhlOiBTYW1hbm5pbWluZW4gc2l2dXBvaGphIG9uIGpvIG9sZW1hc3NhLiBWYWxpdHNlIHRvaW5lbiBuaW1pJzsKJGxhbmdbJ3RlbXBsYXRlaW1wb3J0ZWQnXSA9ICdQb2hqYSB0dW90aWluIG9ubmlzdHVuZWVzdGkgdGlldG9rYW50YWFuIGphIG9uIG55dCBhc2VubmV0dHUgayZhdW1sO3l0ZXR0JmF1bWw7diZhdW1sO2tzaS4nOwokbGFuZ1sndmlld19kZWZhdWx0X3N0eWxlc2hlZXQnXSA9ICdOJmF1bWw7eXQmYXVtbDsgb2xldHVzdHl5bGlzaXZ1IChDU1MpJzsKJGxhbmdbJ2ZpbGVuYW1lJ10gPSAnVGllZG9zdG9uaW1pJzsKJGxhbmdbJ2ltcG9ydHRlbXBsYXRlJ10gPSAnVHVvIHNpdnVwb2hqYSc7CiRsYW5nWyd0ZW1wbGF0ZV9kZWxldGVkJ10gPSAnU2l2dXBvaGphIHBvaXN0ZXR0dSBvbm5pc3R1bmVlc3RpIHRpZXRva2FubmFzdGEnOwokbGFuZ1sndXBkYXRldGVtcGxhdGVzdWNjZXNzJ10gPSAnU2l2dXBvaGphIHAmYXVtbDtpdml0ZXR0eSBvbm5pc3R1bmVlc3RpJzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlZmFpbHVyZSddID0gJ1NpdnVwb2hqYW4gcCZhdW1sO2l2aXR5a3Nlc3MmYXVtbDsgdGFwYWh0dWkgdmlyaGUnOwokbGFuZ1snc2V0dGluZ3NzYXZlZCddID0gJ0FzZXR1a3NldCB0YWxsZW5uZXR0dSBvbm5pc3R1bmVlc3RpJzsKJGxhbmdbJ2NhdGVnb3J5ZGVsZXRlZCddID0gJ0thdGVnb3JpYSBwb2lzdGV0dHUnOwokbGFuZ1snY2F0ZWdvcnl1cGRhdGVkJ10gPSAnS2F0ZWdvcmlhIHAmYXVtbDtpdml0ZXR0eSc7CiRsYW5nWydjYXRlZ29yeWFkZGVkJ10gPSAnS2F0ZWdvcmlhIGxpcyZhdW1sO3R0eSc7CiRsYW5nWydldmVudGRlbGV0ZWQnXSA9ICdUYXBhaHR1bWEgcG9pc3RldHR1JzsKJGxhbmdbJ2V2ZW50dXBkYXRlZCddID0gJ1RhcGFodHVtYSBwJmF1bWw7aXZpdGV0dHknOwokbGFuZ1snZGVmYXVsdF9wYWdlX2Vycm9yJ10gPSAnVmlyaGU6IFNpbnVuIHQmYXVtbDt5dHl5IGFzZXR0YWEgb2xldHVzc2l2dSwgam90dGEgdm9pdCBrJmF1bWw7eXR0JmF1bWw7JmF1bWw7IGthbGVudGVyaWEgc2lldmllbiBVUkwtb3NvaXR0ZWlkZW4gb2xsZXNzYSBwJmF1bWw7JmF1bWw7bGwmYXVtbDsuIE1lbmUga2FsZW50ZXJpbiBhc2V0dWtzaWluIGphIHZhbGl0c2Ugb2xldHVzc2l2dS4nOwokbGFuZ1sndGltZV9hdCddID0gJ2tsbyc7CiRsYW5nWyd0eXBlJ10gPSAnVHl5cHBpJzsKJGxhbmdbJ25hbWUnXSA9ICdOaW1pJzsKJGxhbmdbJ29yZGVyJ10gPSAnSiZhdW1sO3JqZXN0eXMnOwokbGFuZ1snZmllbGRhZGRlZCddID0gJ0tlbnR0JmF1bWw7IGxpcyZhdW1sO3R0eSBvbm5pc3R1bmVlc3RpJzsKJGxhbmdbJ2ZpZWxkZGVsZXRlZCddID0gJ0tlbnR0JmF1bWw7IHBvaXN0ZXR0dSc7CiRsYW5nWydmaWVsZHMnXSA9ICdNdWthdXRldHV0IGtlbnQmYXVtbDt0JzsKJGxhbmdbJ3RleHRmaWVsZCddID0gJ1Rla3N0aWtlbnR0JmF1bWw7JzsKJGxhbmdbJ3VwbG9hZGZpZWxkJ10gPSAnVGllZG9zdG9ubGF0YXVza2VudHQmYXVtbDsnOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICc8cD5DYWxlbmRhciBpcyBhIG1vZHVsZSBmb3IgZGlzcGxheWluZyBldmVudHMgb24geW91ciBwYWdlLiBXaGVuIHRoZQ0KCQltb2R1bGUgaXMgaW5zdGFsbGVkLCBhIENhbGVuZGFyIGFkbWluIHBhZ2UgaXMgYWRkZWQgdG8gdGhlIGNvbnRlbnQgbWVudQ0KCQl0aGF0IHdpbGwgYWxsb3cgeW91IHRvIG1hbmFnZSB5b3VyIGV2ZW50cy48L3A+JzsKJGxhbmdbJ2RlZmF1bHRjYWxlbmRhcnBhZ2UnXSA9ICdLYWxlbnRlcmluIHNpcyZhdW1sO2x0JmF1bWw7diZhdW1sOyBvbGV0dXNzaXZ1LiBUJmF1bWw7bSZhdW1sO24gc2l2dW4gdHVsZWUgc2lzJmF1bWw7bHQmYXVtbDsmYXVtbDsgU21hcnR5LXRhZ2ksIGpva2Ega3V0c3V1IGthbGVudGVyaWEuIFQmYXVtbDtsbGFpbmVuIHZhYWRpdGFhbiwgam9zIGsmYXVtbDt5dCZhdW1sO3Qga2F1bmlzdGV0dHVqYSBVUkxlamEuJzsKJGxhbmdbJ3VwbG9hZGRpcmVjdG9yeSddID0gJ0hha2VtaXN0byBwYWx2ZWxpbWVsbGUgc2lpcnJldHlpbGxlIHRpZWRvc3RvaWxsZSc7CiRsYW5nWyd1cGxvYWRmaWxldHlwZXMnXSA9ICdTYWxsaXR1dCB0aWVkb3N0b3R5eXBpdCc7CiRsYW5nWyd1cGxvYWR1bmlxdWUnXSA9ICdWYXJtaXN0YSB1bmlpa2l0IHRpZWRvc3RvbmltZXQnOwokbGFuZ1sndGh1bWJfd2lkdGgnXSA9ICdQaWVub2lza3V2YW4gbGV2ZXlzJzsKJGxhbmdbJ3RodW1iX2hlaWdodCddID0gJ1BpZW5vaXNrdXZhbiBrb3JrZXVzJzsKJGxhbmdbJ2xhcmdlX3dpZHRoJ10gPSAnVCZhdW1sO3lzaWtva29pc2VuIGt1dmFuIGxldmV5cyc7CiRsYW5nWydsYXJnZV9oZWlnaHQnXSA9ICdUJmF1bWw7eXNpa29rb2lzZW4ga3V2YW4ga29ya2V1cyc7CiRsYW5nWydjYWxfcmVjdXJfcGVyaW9kJ10gPSAnVG9pc3R1dSc7CiRsYW5nWydjYWxfcmVjdXJfdW50aWwnXSA9ICdUb2lzdHV1IGt1bm5lcyc7CiRsYW5nWydoZWxwX3RlbXBsYXRlJ10gPSAnPHA+PGI+UHJpbnQgQXV0aG9yIE5hbWU6PC9iPjwvcD4NCjxjb2RlPkF1dGhvcjogeyRldmVudC5hdXRob3JuYW1lfTwvY29kZT4NCic7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjE0NzQ3Nzc4MzkuMTM2MjA3OTQ2Ni4xMzYyMDc5NDY2LjEzNjIwNzk0NjYuMSc7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTM2MjA3OTQ2Ni4xLjEudXRtY2NuPShkaXJlY3QpfHV0bWNzcj0oZGlyZWN0KXx1dG1jbWQ9KG5vbmUpJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/fr_FR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2Vycl9leHBvcnRlZF9ub21hdGNoZXMnXSA9ICdEw6lzb2zDqSwgbm91cyBuXCdhdm9ucyBwYXMgdHJvdXbDqSBkXCfDqXbDqW5lbWVudHMgw6AgZXhwb3J0ZXIgcsOpcG9uZGFudCBhdXggY3JpdMOocmVzIGRvbm7DqXMnOwokbGFuZ1snZXhwb3J0X2RlbGltaXRlciddID0gJ0TDqWxpbWl0ZXVyIGRlIGNoYW1wJzsKJGxhbmdbJ2luZm9fZXhwb3J0X2V2ZW50cyddID0gJ0NldHRlIGFjdGlvbiB2YSBnw6luw6lyZXIgdW4gZmljaGllciBDU1YgZW4gQVNDSUkgcXVpIGNvbnRpZW50IGxlcyBpbmZvcm1hdGlvbnMgc3VyIGxlcyDDqXbDqW5lbWVudHMnOwokbGFuZ1snZXhwb3J0X2NhdGVnb3J5J10gPSAnRXhwb3J0ZXIgbGVzIMOpdsOpbmVtZW50cyBkZSBjZXR0ZSBjYXTDqWdvcmllJzsKJGxhbmdbJ2V4cG9ydF9kYXRlc2VsJ10gPSAnRXhwb3J0ZXIgbGVzIMOpdsOpbmVtZW50cyBxdWkgw6l0YWllbnQnOwokbGFuZ1snZXhwb3J0X2RhdGVzZWxfY3JlYXRlZCddID0gJ0Nyw6nDqXMgbGUgb3UgYXByw6hzIGxlJzsKJGxhbmdbJ2V4cG9ydF9kYXRlc2VsX21vZGlmaWVkJ10gPSAnTW9kaWZpw6lzIGxlIG91IGFwcsOocyBsZSc7CiRsYW5nWydleHBvcnRfZGF0ZXNlbF9zdGFydCddID0gJ0TDqWJ1dMOpcyBsZSBvdSBhcHLDqHMgbGUnOwokbGFuZ1snZXhwb3J0X2Zyb21fZGF0ZSddID0gJ0RhdGUnOwokbGFuZ1snY2FsX2V4cG9ydF9ldmVudHMnXSA9ICdFeHBvcnRlciBsZXMgw6l2w6luZW1lbnRzJzsKJGxhbmdbJ3dhcm5faW1wb3J0J10gPSAnPHN0cm9uZz5BdHRlbnRpb24gOjwvc3Ryb25nPiBDXCdlc3QgdW5lIHNpbXBsZSBmb25jdGlvbm5hbGl0w6kgZFwnZXhwb3J0LiBJbCBuXCd5IGEgcGFzIGRlIHbDqXJpZmljYXRpb24gZFwnw6l2w6luZW1lbnRzIGR1cGxpcXXDqXMsIGRlIGNvbm5haXNzYW5jZSBkZSByZWxhdGlvbnMgZW50cmUgw6l2w6luZW1lbnRzIHBhcmVudHMgZXQgZW5mYW50LCBvdSBkZSBtaXNlIMOgIGpvdXIgZFwnw6l2w6luZW1lbnRzIGV4aXN0YW50cy4gSWwgZXN0IHRvdXQgw6AgZmFpdCBwb3NzaWJsZSBkZSBnw6luw6lyZXIgZGVzIMOpdsOpbmVtZW50cyBkdXBsaXF1w6lzLCBkZXMgY29sbGlzaW9ucywgZXQgZGVzIMOpdsOpbmVtZW50cyByw6ljdXJyZW50cyBkw6ljb25uZWN0w6lzLiDDgCB1dGlsaXNlciBhdmVjIHBydWRlbmNlLic7CiRsYW5nWydoZHJfcGFzdGxpc3QnXSA9ICdFdsOpbmVtZW50cyBwYXNzw6lzJzsKJGxhbmdbJ2ZpbHRlcl9hbGwnXSA9ICdUb3VzJzsKJGxhbmdbJ2ZpbHRlcl9kcmFmdCddID0gJ0ViYXVjaGUnOwokbGFuZ1snZmlsdGVyX3B1Ymxpc2hlZCddID0gJ1B1Ymxpw6knOwokbGFuZ1snZGlzcGxheSddID0gJ0FmZmljaGVyJzsKJGxhbmdbJ2RmbHRfc3RhdHVzX25ld2V2ZW50cyddID0gJ1N0YXR1dCBwYXIgZMOpZmF1dCBwb3VyIGxlcyBub3V2ZWF1eCDDqXbDqW5lbWVudHMnOwokbGFuZ1snZGVzYzInXSA9ICdEZXNjcmlwdGlvbic7CiRsYW5nWydzdGF0dXNfZHJhZnQnXSA9ICdDZXQgw6l2w6luZW1lbnQgblwnZXN0IHBhcyBlbmNvcmUgcHVibGnDqSBwb3VyIGxcJ2FmZmljaGFnZSBzdXIgbGUgc2l0ZS4nOwokbGFuZ1snc3RhdHVzJ10gPSAnU3RhdHV0JzsKJGxhbmdbJ3B1Ymxpc2hlZCddID0gJ1B1Ymxpw6knOwokbGFuZ1snZHJhZnQnXSA9ICdFYmF1Y2hlJzsKJGxhbmdbJ2NvbmZpcm1fYWRkX2V2ZW50X2hlcmUnXSA9ICdDcsOpZXIgdW4gbm91dmVsIMOpdsOpbmVtZW50IMOgIGNldHRlIGRhdGUnOwokbGFuZ1snZGVsZXRlZF9uJ10gPSAnJWQgw6l2w6luZW1lbnRzIG9udCDDqXTDqSBzdXBwcmltw6lzJzsKJGxhbmdbJ21zZ19ub2V4cGlyZWRldmVudHMnXSA9ICdJbCBuXCd5IGEgcGFzIGRcJ8OpdsOpbmVtZW50cyBwYXNzw6lzIMOgIHN1cHByaW1lcic7CiRsYW5nWydjYWxfZGVsZXRlX2V4cGlyZWQnXSA9ICdTdXBwcmltZXIgbGVzIMOpdsOpbmVtZW50cyBwYXNzw6lzJzsKJGxhbmdbJ3Byb21wdF9mZWVkaXRfbWFzdGVyZ3JvdXAnXSA9ICdHcm91cGUgRkVVIGF1dG9yaXPDqSDDoCDDqWRpdGVyIHRvdXMgbGVzIMOpdsOpbmVtZW50cyBkXCd1dGlsaXNhdGV1cnMnOwokbGFuZ1snY2FsX3JlY3VyX3N0ciddID0gJ0NldCDDqXbDqW5lbWVudCBzZSByw6lww6h0ZSAlcyBqdXNxdVwnw6AgJXMgYXZlYyB1biBtYXhpbXVtIGRlICVkIGZvaXMnOwokbGFuZ1snY2FsX3JlY3VyX3N0cjInXSA9ICdDZXQgw6l2w6luZW1lbnQgc2UgcsOpcMOodGUgJXMganVzcXVcJ8OgICVzJzsKJGxhbmdbJ2luZm9fYWJvdXRfcGFyZW50X2V2ZW50J10gPSAnQ2V0IMOpdsOpbmVtZW50IHNlIHLDqXDDqHRlJzsKJGxhbmdbJ2luZm9fYWJvdXRfY2hpbGRfZXZlbnQnXSA9ICdDZXQgw6l2w6luZW1lbnQgZXN0IHVuZSByw6ljdXJyZW5jZSBkXCd1biBhdXRyZSDDqXbDqW5lbWVudCBkYW5zIGxhIGJhc2UgZGUgZG9ubsOpZXMuIFZvdXMgcG91dmV6IHZvaXIgbGVzIGluZm9ybWF0aW9ucyBkZSBsXCfDqXbDqW5lbWVudCBwYXJlbnQgZW4gY2xpcXVhbnQgc3VyIGxlIGxpZW4gY2ktZGVzc291cy4nOwokbGFuZ1sndmlld19wYXJlbnRfZXZlbnQnXSA9ICdWb2lyIGxcJ8OpdsOpbmVtZW50IHBhcmVudCc7CiRsYW5nWydoZHJfZGF5bGlzdCddID0gJ0V2w6luZW1lbnRzIHBvdXIgbGUgam91cic7CiRsYW5nWydoZHJfeWVhcmxpc3QnXSA9ICdFdsOpbmVtZW50cyBwb3VyIGxcJ2FubsOpZSc7CiRsYW5nWydoZHJfd2Vla2xpc3QnXSA9ICdFdsOpbmVtZW50cyBwb3VyIGxhIHNlbWFpbmUgJWQgZGUgJWQnOwokbGFuZ1snaGRyX3VwY29taW5nbGlzdCddID0gJ0V2w6luZW1lbnRzIMOgIHZlbmlyJzsKJGxhbmdbJ2hkcl9tb250aGxpc3QnXSA9ICdFdsOpbmVtZW50cyBwb3VyIGxlIG1vaXMgZGUnOwokbGFuZ1snY2FsX3RvZGF5J10gPSAnQXVqb3VyZFwnaHVpJzsKJGxhbmdbJ21zZ19zZXR0aW5nc19jaGFuZ2VkJ10gPSAnUGFyYW3DqHRyZXMgbW9kaWZpw6lzJzsKJGxhbmdbJ3RpdGxlX2FkbWlubmF2X3NldHRpbmdzJ10gPSAnUGFyYW3DqHRyZXMgQ2FsZW5kcmllciAoQ0cpJzsKJGxhbmdbJ2Rlc2NfYWRtaW5uYXZfc2V0dGluZ3MnXSA9ICdHw6lyZXIgbGVzIHBhcmFtw6h0cmVzIHBvdXIgbGUgbW9kdWxlIENhbGVuZHJpZXIgKENHKSc7CiRsYW5nWyd0cGx0eXBlX3NlYXJjaGZvcm0nXSA9ICdGb3JtdWxhaXJlIGRlIHJlY2hlcmNoZSc7CiRsYW5nWyd0cGx0eXBlX3NlYXJjaHJlc3VsdCddID0gJ1Z1ZSBkZSByw6lzdWx0YXRzIGRlIHJlY2hlcmNoZSc7CiRsYW5nWyd0cGx0eXBlX2Z1bGxjYWxlbmRhciddID0gJ1Z1ZSBGdWxsQ2FsZW5kYXInOwokbGFuZ1sndHBsdHlwZV9kZWxldGVldmVudCddID0gJ1N1cHByaW1lciBsZSBmb3JtdWxhaXJlIGRcJ8OpdsOpbmVtZW50JzsKJGxhbmdbJ3RwbHR5cGVfZWRpdGV2ZW50J10gPSAnRWRpdGVyIGxlIGZvcm11bGFpcmUgZFwnw6l2w6luZW1lbnQnOwokbGFuZ1sndHBsdHlwZV9ldmVudCddID0gJ1Z1ZSBkXCfDqXbDqW5lbWVudCc7CiRsYW5nWyd0cGx0eXBlX2V2ZW50bGlzdCddID0gJ1Z1ZSBkZSBsaXN0ZSBkXCfDqXbDqW5lbWVudHMnOwokbGFuZ1sndHBsdHlwZV9teWV2ZW50cyddID0gJ1Z1ZSBkZSBsaXN0ZSBkZSBNZXMgRXbDqW5lbWVudHMnOwokbGFuZ1sndHBsdHlwZV9DR0NhbGVuZGFyJ10gPSAnQ2FsZW5kcmllciAoQ0cpJzsKJGxhbmdbJ2RlbGV0ZWV2ZW50X3dhcm5fY2hpbGRyZW4nXSA9ICc8c3Ryb25nPkF0dGVudGlvbiAhPC9zdHJvbmc+IENldCDDqXbDqW5lbWVudCBzZSByw6lww6h0ZSBzdXIgcGx1c2lldXJzIGRhdGVzLiBTdXBwcmltZXIgY2V0IMOpdsOpbmVtZW50IHZhIMOpZ2FsZW1lbnQgc3VwcHJpbWVyIGxlcyBhdXRyZXMgZGF0ZXMuIFByb2PDqWRlciBhdmVjIHBydWRlbmNlLic7CiRsYW5nWydkZWxldGVldmVudF93YXJuX2NoaWxkJ10gPSAnPHN0cm9uZz5BdHRlbnRpb24gITwvc3Ryb25nPiBDZXQgw6l2w6luZW1lbnQgZXN0IGVuZmFudCBkXCd1biDDqXbDqW5lbWVudCBxdWkgc2UgcsOpcMOodGUuIFN1cHByaW1lciBjZXQgb2JqZXQgdmEgdW5pcXVlbWVudCBzdXBwcmltZXIgY2V0dGUgb2NjdXJyZW5jZSwgZXQgbm9uIHRvdXRlcyBsZXMgb2NjdXJyZW5jZXMgZGUgY2V0IMOpdsOpbmVtZW50LiBQcm9jw6lkZXIgYXZlYyBwcnVkZW5jZS4nOwokbGFuZ1sncHJvbXB0X2Rkb3B0cyddID0gJ09wdGlvbnMgZGUgbWVudSBkw6lyb3VsYW50JzsKJGxhbmdbJ2luZm9fZGRvcHRzJ10gPSAnRGUgbFwnaW5mb3JtYXRpb24gZXN0IHJlcXVpc2UgcG91ciB1biBjaGFtcCBtZW51IGTDqXJvdWxhbnQuIFNhaXNpciB1bmUgb3B0aW9uIHBhciBsaWduZS4gTGVzIHZhbGV1cnMgcGV1dmVudCDDqnRyZSBzw6lwYXLDqWVzIGRlcyBpbnRpdHVsw6lzIGF2ZWMgbGUgY2FyYWN0w6hyZSA9LiBFeCA6IGY9RsOpbWluaW4nOwokbGFuZ1snb2snXSA9ICdPayc7CiRsYW5nWyd0aXRsZV9lZGl0X2Rkb3B0cyddID0gJ0VkaXRlciBsZXMgb3B0aW9ucyBkdSBtZW51IGTDqXJvdWxhbnQnOwokbGFuZ1snZHJvcGRvd24nXSA9ICdNZW51IGTDqXJvdWxhbnQgKGRyb3Bkb3duKSc7CiRsYW5nWydjaGVja2JveCddID0gJ0Nhc2Ugw6AgY29jaGVyJzsKJGxhbmdbJ2hvbGlkYXlfY29sb3JzJ10gPSAnQ291bGV1cnMgZGUgc3VybGlnbmFnZSBwb3VyIGxlcyB2YWNhbmNlcyc7CiRsYW5nWydwcm9tcHRfaWNhbF9ob2xpZGF5cyddID0gJ0ZsdXggaUNhbCBwb3VyIGxlcyB2YWNhbmNlcyc7CiRsYW5nWydpbmZvX2ljYWxfaG9saWRheXMnXSA9ICdDZWNpIGVzdCB1dGlsaXPDqSBzdXIgbGVzIHZ1ZXMgZHUgY2FsZW5kcmllciBmdWxsQ2FsZW5kYXIgcG91ciBzdXJsaWduZXIgbFwnYWZmaWNoYWdlIHB1YmxpYyBkZXMgdmFjYW5jZXMuIElsIG5cJ3kgYSBwYXMgZFwnYXV0cmUgaW50ZXJhY3Rpb24gYXZlYyBjZXMgw6l2w6luZW1lbnRzIGRhbnMgY2UgZmx1eCBpQ2FsLic7CiRsYW5nWydhbGxkYXknXSA9ICdKb3VyIGVudGllcic7CiRsYW5nWydkYXl2aWV3J10gPSAnVnVlIGpvdXInOwokbGFuZ1snZWRpdCddID0gJ0VkaXRlcic7CiRsYW5nWydlcnJvcl9mZXRjaGluZ19ldmVudHMnXSA9ICdBw69lLi4uIHF1ZWxxdWUgY2hvc2UgZXN0IGFycml2w6kgcGVuZGFudCBsXCfDqWNoYW5nZSBhdmVjIGxlIHNlcnZldXIsIHZldWlsbGV6IHLDqWVzc2F5ZXInOwokbGFuZ1snbm9yZXN1bHRzJ10gPSAnRMOpc29sw6ksIGF1Y3VuIMOpdsOpbmVtZW50IG5lIGNvcnJlc3BvbmQgw6Agdm9zIGNyaXTDqHJlcyc7CiRsYW5nWydoZWxwX2ZpbmRfd2hlbiddID0gJ0xlcyDDqXbDqW5lbWVudHMgcGFzc8OpcyBldCBmdXR1cnMgc29udCB0b3Vqb3VycyByZWxhdGlmcyDDoCBsYSBkYXRlIGFjdHVlbGxlJzsKJGxhbmdbJ3Jlb3JkZXInXSA9ICdSw6lvcmRvbm5lcic7CiRsYW5nWydkZmx0X2NvbG9ycyddID0gJ0NvdWxldXJzIHBhciBkw6lmYXV0JzsKJGxhbmdbJ2VkaXRfY2F0ZWdvcnknXSA9ICdFZGl0ZXIgbGEgY2F0w6lnb3JpZSc7CiRsYW5nWydmZ2NvbG9yJ10gPSAnQ291bGV1ciBkZSBwcmVtaWVyIHBsYW4nOwokbGFuZ1snYmdjb2xvciddID0gJ0NvdWxldXIgZGUgZm9uZCc7CiRsYW5nWydoZWxwX2ZpbmRfc2hvd2NoaWxkcmVuJ10gPSAnSW5kaXF1ZSBzaSBkZXMgw6l2w6luZW1lbnRzIGVuZmFudHMgZG9pdmVudCDDqnRyZSBpbmNsdXMgZGFucyBsZXMgcsOpc3VsdGF0cyBkZSByZWNoZXJjaGUnOwokbGFuZ1snaGVscF9maW5kX2V2ZW50X2tleXdvcmQnXSA9ICdFbnRyZXogdW4gb3UgcGx1c2lldXJzIG1vdHMtY2zDqXMgw6AgcmVjaGVyY2hlci4gTGEgcmVjaGVyY2hlIHN1ciBsZXMgbW90cyBjb3JyZXNwb25kYW50cyBzZXJhIGVmZmVjdHXDqWUgZGFucyBsZXMgY2hhbXBzIHRpdHJlLCBzb21tYWlyZSBldCBkw6l0YWlsIGRlIGxcJ8OpdsOpbmVtZW50JzsKJGxhbmdbJ2luZm9fZmluZF9yZXN1bHRzJ10gPSAnTGVzIDEwIHByZW1pw6hyZXMgb2NjdXJyZW5jZXMgZGUgdm90cmUgcmVxdcOqdGUgc29udCBhZmZpY2jDqXMgY2ktZGVzc291cy48YnIvPkNsaXF1ZXIgc3VyIGxlIHRpdHJlIGRlIGxcJ8OpdsOpbmVtZW50IHZvdXMgcGVybWV0IGRlIGxcJ8OpZGl0ZXIuPGJyLz5DbGlxdWVyIHN1ciBsXCdpY8O0bmUgdnVlIHBvdXIgZMOpcGxhY2VyIGxlIGNhbGVuZHJpZXIgc3VyIGxhIGRhdGUgYXBwcm94aW1hdGl2ZSBkZSBsXCfDqXbDqW5lbWVudCA8ZW0+KGTDqXBlbmQgZGUgbGEgdnVlIHV0aWxpc8OpZSk8L2VtPic7CiRsYW5nWydnb3RvX2RhdGUnXSA9ICdBbGxlciDDoCBjZXR0ZSBkYXRlJzsKJGxhbmdbJ2luZm9fZmluZF9ldmVudHMnXSA9ICdSZWNoZXJjaGVyIGxlcyDDqXbDqW5lbWVudHMgY29ycmVzcG9uZGFudHMuIEp1c3F1XCfDoCAxMCBvY2N1cnJlbmNlcyBwZXV2ZW50IMOqdHJlIGFmZmljaMOpZXMuJzsKJGxhbmdbJ3Jlc3VsdHMnXSA9ICdSw6lzdWx0YXRzJzsKJGxhbmdbJ2tleXdvcmRzJ10gPSAnTW90cy1jbMOpcyc7CiRsYW5nWydmaW5kX3Nob3djaGlsZHJlbiddID0gJ01vbnRyZXIgbGVzIGVuZmFudHMnOwokbGFuZ1snYW55J10gPSAnVG91cyc7CiRsYW5nWydwYXN0J10gPSAnUGFzc8Opcyc7CiRsYW5nWydmdXR1cmUnXSA9ICdGdXR1cnMnOwokbGFuZ1snZmluZF93aGVuJ10gPSAnUXVhbmQgPyc7CiRsYW5nWydmaW5kX3BhcmVudHNvbmx5J10gPSAnVW5pcXVlbWVudCBsZXMgcGFyZW50cyc7CiRsYW5nWydmaW5kJ10gPSAnVHJvdXZlci4uLic7CiRsYW5nWydlZGl0cGFyZW50J10gPSAnRWRpdGVyIGxlIHBhcmVudCc7CiRsYW5nWydoZWxwX2V2ZW50c3RhYiddID0gJzxwPkxcJ29uZ2xldCBkZXMgw6l2w6luZW1lbnRzIGZvdXJuaXQgdW4gbW95ZW4gc2ltcGxlIGRlIHBhcmNvdXJpciBsZXMgw6l2w6luZW1lbnRzIHBhciBkYXRlLiBMYSBkYXRlIHPDqWxlY3Rpb25uw6llIGVzdCBzYXV2w6llIDxlbT4oZGFucyB1biBjb29raWUpPC9lbT4gcGVuZGFudCBkZXV4IGpvdXJzLiBDZXR0ZSB2dWUgcGVybWV0IMOpZ2FsZW1lbnQgbFwnw6lkaXRpb24gZXQgbGEgc3VwcHJlc3Npb24uPC9wPjxici8+PHA+R2xpc3Nlci1kw6lwb3NlciB1biDDqXbDqW5lbWVudCBkYW5zIGxhIHZ1ZSBtZW5zdWVsbGUgdmEgbW9kaWZpZXIgbGEgZGF0ZSBkZSBkw6lwYXJ0IDxlbT4obWFpcyBwYXMgbGEgZHVyw6llKTwvZW0+LiBSZWRpbWVuc2lvbm5lciBsXCfDqXbDqW5lbWVudCB2YSBtb2RpZmllciBzYSBkYXRlIGRlIGZpbi48L3A+PGJyLz48cD5EYW5zIGxlcyB2dWVzIGhlYmRvbWFkYWlyZSBldCBqb3VybmFsacOocmUsIGxhIGRhdGUgZGUgZMOpcGFydC9kdXLDqWUgZFwndW4gw6l2w6luZW1lbnQgcGV1dC3DqnRyZSBtb2RpZmnDqWUgYXZlYyB1biBnbGlzc2VyLWTDqXBvc2VyLiBMYSBkYXRlIGRlIGZpbi9kdXLDqWUgZGUgbFwnw6l2w6luZW1lbnQgcGV1dC3DqnRyZSBtb2RpZmnDqWUgZW4gbGUgcmVkaW1lbnNpb25uYW50LiBEZSBwbHVzLCBjZXMgdnVlcyBzdXBwb3J0ZW50IGxhIGNhcGFjaXTDqSBkZSBtb2RpZmllciByYXBpZGVtZW50IHVuIMOpdsOpbmVtZW50IGVuIHVuIMOpdsOpbmVtZW50IGRcJ3VuZSBqb3VybsOpZSBjb21wbMOodGUgYXZlYyB1biBnbGlzc2VyLWTDqXBvc2VyIGRhbnMgbGEgem9uZSAiSm91ciBlbnRpZXIiIHNpdHXDqWUgZW4gaGF1dC48L3A+PGJyLz48cD5BdWN1bmUgdsOpcmlmaWNhdGlvbiBkZSBjb25mbGl0IG5cJ2VzdCBlZmZlY3R1w6llIGxvcnMgZGVzIGdsaXNzZXItZMOpcG9zZXIgZFwnw6l2w6luZW1lbnQuPC9wPic7CiRsYW5nWydwcm9tcHRfcmVtb3ZlZnJvbXBhcmVudCddID0gJ0VubGV2ZXIgY2V0IMOpdsOpbmVtZW50IGRlIHNvbiBwYXJlbnQnOwokbGFuZ1snaW5mb19yZW1vdmVmcm9tcGFyZW50J10gPSAnU2kgc8OpbGVjdGlvbm7DqSwgY2V0IMOpdsOpbmVtZW50IG5lIHNlcmEgcGFzIGFmZmVjdMOpIHBhciBsZXMgY2hhbmdlbWVudHMgZGUgc29uIHBhcmVudC4nOwokbGFuZ1snaW5mb19lZGl0X3BhcmVudGV2ZW50J10gPSAnPHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBDZXQgw6l2w6luZW1lbnQgZXN0IHLDqWN1cnJlbnQuIENvY2hlciBsYSBjYXNlIDxlbT5NZXR0cmUgw6Agam91ciBsZXMgc291cy3DqXbDqW5lbWVudHMgYXNzb2Npw6lzPC9lbT4gcsOpcGVyY3V0ZXJhIGxlcyBtb2RpZmljYXRpb25zIHN1ciB0b3V0ZXMgbGVzIG9jY3VycmVuY2VzLic7CiRsYW5nWydpbmZvX2VkaXRfY2hpbGRldmVudCddID0gJzxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gQ2V0IMOpdsOpbmVtZW50IGVzdCB1bmUgb2NjdXJyZW5jZSBkXCd1biBhdXRyZS4gTGVzIGNoYW5nZW1lbnRzIG9ww6lyw6lzIGljaSBuXCdhZmZlY3Rlcm9udCBxdWUgbHVpLiBQb3VyIG1ldHRyZSDDoCBqb3VyIHRvdXRlcyBsZXMgb2NjdXJyZW5jZXMsIHZvdXMgZGV2cmV6IG1vZGlmaWVyIGxcJ8OpdsOpbmVtZW50IHBhcmVudC4nOwokbGFuZ1snYWxsZGF5X2V2ZW50J10gPSAnQ1wnZXN0IHVuIMOpdsOpbmVtZW50IHN1ciBsYSBqb3VybsOpZSc7CiRsYW5nWydub3RlJ10gPSAnTm90ZSc7CiRsYW5nWyd0aXRsZV9wYXJlbnRfZXZlbnQnXSA9ICdDZXQgw6l2w6luZW1lbnQgZXN0IHLDqWN1cnJlbnQgZXQgY29udGllbnQgZGVzIMOpdsOpbmVtZW50cyBlbmZhbnRzJzsKJGxhbmdbJ3N0YXJ0J10gPSAnRMOpYnV0JzsKJGxhbmdbJ2VuZCddID0gJ0Zpbic7CiRsYW5nWydldmVudF9hY3Rpb24nXSA9ICdBY3Rpb24nOwokbGFuZ1snaW5mb19ldmVudF9hY3Rpb24nXSA9ICdDaG9pc2lzc2V6IHVuZSBhY3Rpb24gw6AgZmFpcmUgc3VyIGNldCDDqXbDqW5lbWVudCAuPGJyLz5Nb2RpZmllciBjZXQgw6l2w6luZW1lbnQgcmVkaXJpZ2VyYSB2ZXJzIHVuZSBub3V2ZWxsZSBwYWdlLic7CiRsYW5nWydlcnJvcl9kZWxldGVwYXJlbnRldmVudCddID0gJ0TDqXNvbMOpLCBtYWlzIHZvdXMgbmUgcG91dmV6IHBhcyBzdXBwcmltZXIgdW4gw6l2w6luZW1lbnQgcGFyZW50Lic7CiRsYW5nWydjaGlsZCddID0gJ0VuZmFudCc7CiRsYW5nWydyZXBlYXRzJ10gPSAncsOpY3VycmVuY2VzJzsKJGxhbmdbJ2Vycm9yX2V2ZW50bm90Zm91bmQnXSA9ICdFdsOobmVtZW50IG5vbiB0cm91dsOpJzsKJGxhbmdbJ2Vycm9yX3Vua25vd24nXSA9ICdFcnJldXIgaW5jb25udWUnOwokbGFuZ1snaW5mb19jYWxfZmlsdGVyX2J5J10gPSAnU2kgb24gcmVjaGVyY2hlIDxlbT4oZmlsdHJlKTwvZW0+IHBhciBtb3RzIGRhbnMgbGUgdGl0cmUsIGxlIGTDqWZpbGVtZW50IGRlIGxhIGRhdGUgblwnZXN0IHBhcyBkaXNwb25pYmxlJzsKJGxhbmdbJ21zZ19ub2RhdGVzJ10gPSAnUmVjaGVyY2hlIGR1IHRpdHJlIGFwcGxpcXXDqWUnOwokbGFuZ1sndGl0bGVfcmVjdXJyaW5nX2V2ZW50J10gPSAnQ1wnZXN0IHVuIMOpdsOpbmVtZW50IHLDqWN1cnJlbnQgYXZlYyBlbmZhbnRzJzsKJGxhbmdbJ3RpdGxlX2NoaWxkX2V2ZW50J10gPSAnQ1wnZXN0IHVuIGVuZmFudCBkXCd1biDDqXbDqW5lbWVudCBwYXJlbnQgcsOpY3VycmVudCc7CiRsYW5nWydlcnJvcl9zb21lZGVsZXRlZCddID0gJ0NlcnRhaW5zIMOpdsOpbmVtZW50cyBvbnQgw6l0w6kgc3VwcHJpbcOpcy4gQ2VwZW5kYW50LCBkXCdhdXRyZXMgbmUgbFwnb250IHBhcyDDqXTDqSwgw6AgY2F1c2UgZGUgcGVybWlzc2lvbnMnOwokbGFuZ1snZXJyb3Jfbm9uZWRlbGV0ZWQnXSA9ICfDgCBjYXVzZSBkZSBwZXJtaXNzaW9ucyBvdSBkXCdhdXRyZXMgZXJyZXVycywgYXVjdW4gZGVzIMOpdsOpbmVtZW50cyBzw6lsZWN0aW9ubsOpcyBuXCdvbnQgw6l0w6kgc3VwcHJpbcOpcyc7CiRsYW5nWydlcnJvcl9kZWxldGVmYWlsZWQnXSA9ICdMYSBzdXBwcmVzc2lvbiBkXCfDqXbDqW5lbWVudCBhIMOpY2hvdcOpJzsKJGxhbmdbJ2ZpbGVhdHRhY2htZW50J10gPSAnRmljaGllciBqb2ludCc7CiRsYW5nWydwcm9tcHRfZ2VuZXJhbF9zZXR0aW5ncyddID0gJ1BhcmFtw6h0cmVzIGdsb2JhdXgnOwokbGFuZ1sncHJvbXB0X2VkaXRpbmdfc2V0dGluZ3MnXSA9ICdQYXJhbcOodHJlcyBkXCfDqWRpdGlvbiBkXCfDqXbDqW5lbWVudHMnOwokbGFuZ1sncHJvbXB0X2ZlZWRpdF9zZXR0aW5ncyddID0gJ1BhcmFtw6h0cmVzIGRcJ8OpZGl0aW9uIGRlIGxhIHBhcnRpZSBwdWJsaXF1ZSBkdSBzaXRlIChmcm9udGVuZCknOwokbGFuZ1sncHJldl9tb250aCddID0gJ0FsbGVyIGF1IG1vaXMgcHLDqWPDqWRlbnQnOwokbGFuZ1snbmV4dF9tb250aCddID0gJ0FsbGVyIGF1IG1vaXMgc3VpdmFudCc7CiRsYW5nWydpbmZvX2N1c3RvbWZpZWxkc190YWInXSA9ICdMZXMgY2hhbXBzIHBlcnNvbm5hbGlzw6lzIHBldXZlbnQgw6p0cmUgcsOpb3Jkb25uw6lzIGVuIGdsaXNzYW50IC8gZMOpcG9zYW50IGxlcyBsaWduZXMuIExhIHJlY2hlcmNoZSBuXCdlc3QgcG9zc2libGUgcXVlIGRhbnMgbGVzIGNoYW1wcyB0ZXh0ZSwgZXQgc2V1bGVzIGxlcyB6b25lcyBkZSB0ZXh0ZSBwZXV2ZW50IGF2b2lyIGRlcyBjaGFtcHMgV1lTSVdZRyBsacOpcy4gPHN0cm9uZyBzdHlsZT0iY29sb3I6IHJlZDsiPk5vdGUgOjwvc3Ryb25nPiBMZXMgY2hhbXBzIFdZU0lXWUcgbmUgc2Vyb250IHBhcyBhZmZpY2jDqXMgcG91ciBsZXMgem9uZXMgZGUgdGV4dGUgc3VyIGxhIHBhcnRpZSBwdWJsaXF1ZSBkdSBzaXRlIChmcm9udGVuZCkuJzsKJGxhbmdbJ21zZ19jYXRlZ29yaWVzX3VwZGF0ZWQnXSA9ICdDYXTDqWdvcmllcyBtaXNlcyDDoCBqb3VyJzsKJGxhbmdbJ21zZ19maWVsZHN1cGRhdGVkJ10gPSAnRMOpZmluaXRpb25zIGRlIGNoYW1wIG1pc2VzIMOgIGpvdXInOwokbGFuZ1snd3lzaXd5ZyddID0gJ1dZU0lXWUfCoCc7CiRsYW5nWydpbmZvX3Jlb3JkZXJfY2F0ZWdvcmllcyddID0gJ0xcJ29yZHJlIGRlcyBjYXTDqWdvcmllcyBwZXV0LcOqdHJlIGTDqWZpbmkgZW4gZ2xpc3NhbnQgLyBkw6lwb3NhbnQgbGVzIGxpZ25lcyc7CiRsYW5nWydlcnJvcl9jYXRlZ29yeW5hbWVyb3cnXSA9ICdMZSBub20gYSDDqXTDqSBlZmZhY8OpIHBvdXIgdW5lIGNhdMOpZ29yaWUgdmFsaWRlIMOgIGxhIGxpZ25lJm5ic3A7Oic7CiRsYW5nWydjb25maXJtX25vY2F0ZWdvcmllcyddID0gJ05vdXMgblwnYXZvbnMgZMOpdGVjdMOpIGF1Y3VuZSBjYXTDqWdvcmllIHZhbGlkZS4gw4p0ZXMtdm91cyBzw7tyIHF1ZSBjXCdlc3QgYmllbiBjZSBxdWUgdm91cyB2b3VsZXogZmFpcmUgPyc7CiRsYW5nWydhZGRfZmllbGQnXSA9ICdBam91dGVyIHVuIGNoYW1wJzsKJGxhbmdbJ2FkZF9jYXRlZ29yeSddID0gJ0Fqb3V0ZXIgdW5lIGNhdMOpZ29yaWUnOwokbGFuZ1sncHJvbXB0X2ZpcnN0ZGF5b2Z3ZWVrJ10gPSAnUHJlbWllciBqb3VyIGRlIGxhIHNlbWFpbmUnOwokbGFuZ1snZWRpdF9ldmVudCddID0gJ8OJZGl0ZXIgbFwnw6l2w6luZW1lbnQnOwokbGFuZ1snZWRpdF9wYXJlbnRfZXZlbnQnXSA9ICfDiWRpdGVyIGxcJ8OpdsOpbmVtZW50IHBhcmVudCc7CiRsYW5nWydzZWxlY3RfcGVyaW9kJ10gPSAnUMOpcmlvZGUnOwokbGFuZ1snc2hvd19maWx0ZXInXSA9ICdNb250cmVyIGxlIGZpbHRyZSc7CiRsYW5nWydzaG93X2ZpbHRlcl9hcHBsaWVkJ10gPSAnTW9udHJlciBsZSBmaWx0cmUgPGVtPihhcHBsaXF1w6kpPC9lbT4nOwokbGFuZ1sncmVzZXQnXSA9ICdSZW1ldHRyZSDDoCB6w6lybyc7CiRsYW5nWydjYWxfY3VycmVudCddID0gJ0NldHRlIHDDqXJpb2RlJzsKJGxhbmdbJ2NhbF9mcm9tJ10gPSAnRGUnOwokbGFuZ1snZXJyb3JfZmV1X2xvZ2dlZGluJ10gPSAnQ2V0IHV0aWxpc2F0ZXVyIG5cJ2VzdCBwYXMgY29ubmVjdMOpIMOgIEZFVS4gQWpvdXRlciBvdSBtb2RpZmllciBsZXMgw6l2w6luZW1lbnRzIG5cJ2VzdCBwYXMgcGVybWlzLic7CiRsYW5nWydwcm9tcHRfZnJpZW5kbHluYW1lJ10gPSAnTm9tICJjb252aXZpYWwiIHBvdXIgY2UgbW9kdWxlIGRhbnMgbGEgbmF2aWdhdGlvbiBkZSBsXCdhZG1pbmlzdHJhdGlvbic7CiRsYW5nWydpbmZvX2ZyaWVuZGx5bmFtZSddID0gJ05vdGUgOiBJbCBzZSBwZXV0IHF1ZSB2b3VzIGF5ZXogw6AgdmlkZXIgbGUgY2FjaGUgZHUgc2l0ZSBwb3VyIHF1ZSBjZXR0ZSBwcsOpZsOpcmVuY2UgcHJlbm5lIGVmZmV0LiBTaSBhdWN1bmUgdmFsZXVyIG5cJ2VzdCBmb3VybmllLCB1bmUgdmFsZXVyIHBhciBkw6lmYXV0IHNlcmEgdXRpbGlzw6llLic7CiRsYW5nWyd1c2Vfd3lzaXd5ZyddID0gJ1V0aWxpc2UgbGUgV3lzaXd5Zyc7CiRsYW5nWydlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnXSA9ICdQYXJhbcOodHJlcyBpbnN1ZmZpc2FudHMgb3Ugbm9uIHZhbGlkZXMuJzsKJGxhbmdbJ2NvbHVtbl9kZWxpbWl0ZXInXSA9ICdTw6lwYXJhdGV1ciBkZSBjb2xvbm5lcyBkYW5zIGxlIGZpY2hpZXIgaW1wb3J0w6knOwokbGFuZ1snaW1wb3J0X2NvbXBsZXRlZCddID0gJ0ltcG9ydGF0aW9uIHRlcm1pbsOpZSc7CiRsYW5nWydudW1faW1wb3J0ZWQnXSA9ICdOb21icmUgZFwnw6l2w6luZW1lbnRzIGNyw6nDqXMgOiAlZCc7CiRsYW5nWydpbXBvcnRfbGluZXMnXSA9ICdOb21icmUgZGUgbGlnbmVzIGR1IGZpY2hpZXIgdHJhaXTDqWVzIDogJWQnOwokbGFuZ1snZXJyb3JzJ10gPSAnRXJyZXVycyc7CiRsYW5nWydlcnJvcl9jc3ZmaXJzdGxpbmVpbnZhbGlkZmllbGQnXSA9ICdDaGFtcCA6ICVzIG5vbiByZWNvbm51LCBldCBuXCdlc3QgcGFzIHVuIGNoYW1wIHBlcnNvbm5hbGlzw6kuJzsKJGxhbmdbJ2luZm9fY3N2X2Zvcm1hdCddID0gJzxoND5JbmZvcm1hdGlvbiBzdXIgbGUgZm9ybWF0IGRlIGZpY2hpZXIgQ1NWLjwvaDQ+DQo8dWw+DQogIDxsaT5JbmZvcm1hdGlvbiBnw6luw6lyYWxlIDoNCiAgIDx1bD4NCiAgICAgPGxpPkxlIGZpY2hpZXIgZG9pdCDDqnRyZSBkZSB0eXBlIEFTQ0lJIGF2ZWMgZGVzIGZpbnMgZGUgbGlnbmVzIGVuIHVuaXggKGRlIHByw6lmw6lyZW5jZSksIGRvcywgb3UgbWFjLjwvbGk+DQogICAgIDxsaT5MZXMgY29tbWVudGFpcmVzIGNvbW1lbmNlbnQgYXZlYyAvLyB0b3V0IGNhcmFjdMOocmUgc3VyIHVuZSBsaWduZSBhcHLDqHMgY2VjaSBzZXJvbnQgaWdub3LDqXMgKHkgY29tcHJpcyBkYW5zIGxlcyBndWlsbGVtZXRzKS48L2xpPg0KICAgICA8bGk+TGVzIGxpZ25lcyB2aWRlcyBzb250IGlnbm9yw6llcy48L2xpPg0KICAgICA8bGk+TGVzIHPDqXBhcmF0ZXVycyBkZSBjaGFtcCBzb250IGTDqWZpbmlzc2FibGVzIHBhciBsXCd1dGlsaXNhdGV1ciwgY2VwZW5kYW50IHVuIHPDqXBhcmF0ZXVyIHBldXQgw6p0cmUgdXRpbGlzw6kgZGFucyB1biBjaGFtcCBzaSBjZSBkZXJuaWVyIGVzdCBkw6lsaW1pdMOpIHBhciBkZXMgZG91YmxlcyBndWlsbGVtZXRzLjwvbGk+DQogICAgIDxsaT5MZXMgbGlnbmVzIHNvbnQgc8OpcGFyw6llcyBwYXIgZGVzIGNhcmFjdMOocmVzIHN1ciB1bmUgbm91dmVsbGUgbGlnbmUgKGNvbW1lIGNpLWRlc3N1cykuPC9saT4NCiAgIDwvdWw+DQogIDwvbGk+DQogIDxsaT5PcmRyZSBkXCdpbXBvcnQgZGVzIGNoYW1wcyA6DQogICA8dWw+DQogICAgPGxpPkxhIHByZW1pw6hyZSBsaWduZSBkw6lmaW5pdCBsXCdvcmRyZSBkZXMgY2hhbXBzLCBldCBjZSBxdWUgc29udCBsZXMgY2hhbXBzIHBlcnNvbm5hbGlzw6lzIGRhbnMgbGUgZmljaGllci4gTGVzIGRvbm7DqWVzIHBldXZlbnQgZMOpYnV0ZXIgw6AgbGEgMiBsaWduZSBub24gdmlkZSwgb3UgYXByw6hzLjwvbGk+DQogICAgPGxpPlZvaWNpIGxlcyBjaGFtcHMgb2JsaWdhdG9pcmVzIDogc3RhcnQgdGltZSwgZW5kIHRpbWUsIHRpdGxlLCBzdW1tYXJ5LCBldCBkZXNjcmlwdGlvbi4gU2FucyBkw6lmaW5pciBjZXMgY2hhbXBzIGVuIGVudMOqdGUgZHUgZmljaGllciwgbFwnaW1wb3J0IG5lIHBvdXJyYSBzZSBmYWlyZS4gTGVzIGNoYW1wcyBvYmxpZ2F0b2lyZXMgbmUgc29udCBwYXMgc2Vuc2libGVzIMOgIGxhIGNhc3NlLjwvbGk+DQogICAgPGxpPklsIHkgYSB1bmUgY29sb25uZSBvcHRpb25uZWxsZSA6ICJjYXRlZ29yeSIuIFNpIHNww6ljaWZpw6llLCBlbGxlIHBldXQgY29udGVuaXIgdW5lIGxpc3RlIGRlIG5vbXMgZGUgY2F0w6lnb3JpZXMgc8OpcGFyw6lzIHBhciA7IGF1eHF1ZWxsZXMgbFwnw6l2w6luZW1lbnQgYXBwYXJ0aWVudC48L2xpPg0KICAgPC91bD4NCiAgPC9saT4NCiAgPGxpPkxlcyBsaWduZXMgZGUgZG9ubsOpZXMgOg0KICAgPHVsPg0KICAgIDxsaT5MZXMgY2hhbXBzIHN0YXJ0IHRpbWUsIHRpdGxlLCBldCBkZXNjcmlwdGlvbiBuZSBkb2l2ZW50IHBhcyDDqnRyZSB2aWRlcy48L2xpPg0KPGxpPlN0YXJ0IGV0IEVuZCBUaW1lcyA6PC9saT4NCiAgPHVsPg0KICAgPGxpPkxlIHRyYWl0ZW1lbnQgZGUgU3RhcnQgdGltZSBlc3QgZmxleGlibGUuICBWb3VzIHBvdXZleiBzcMOpY2lmaWVyIGNlIGZvcm1hdCBZWVlZLU1NLUREIEhIOk1NLCBvdSBwbHVzaWV1cnMgZm9ybWF0cyBkw6lmaW5pcyBwYXIgbGEgZm9uY3Rpb24gc3RydG90aW1lLCB5IGNvbXByaXMgZGVzIHRlbXBzIHJlbGF0aWZzLiBTaSB1biB0ZW1wcyByZWxhdGlmIGVzdCBkb25uw6ksIG9uIHN1cHBvc2UgcXVcJ2lsIGVzdCByZWxhdGlmIGF1IHRlbXBzIHByw6lzZW50LjwvbGk+DQogICA8bGk+TGUgdHJhaXRlbWVudCBkZSBFbmQgdGltZSBlc3QgZmxleGlibGUsIGV0IHBldXQgw6p0cmUgdmlkZS4gVm91cyBwb3V2ZXogc3DDqWNpZmllciBzb2l0IHVuIHRlbXBzIGFic29sdSAoZGFucyBsZSBtw6ptZSBmb3JtYXQgcXVlIGxlIHN0YXJ0IHRpbWUpIHNvaXQgdW4gdGVtcHMgcmVsYXRpZi4gIFNpIHVuIHRlbXBzIHJlbGF0aWYgZXN0IGRvbm7DqSwgb24gc3VwcG9zZSBxdVwnaWwgZXN0IHJlbGF0aWYgYXUgdGVtcHMgZGUgZMOpYnV0LiBleC46ICIrNCBoZXVyZXMiIGluZGlxdWVyYWl0IDQgaGV1cmVzIGRlcHVpcyBsYSBjb2xvbm5lIHN0YXJ0IHRpbWUuPC9saT4NCiAgIDxsaT5TaSBsYSBjb2xvbm5lIGRlIGVuZCB0aW1lIGVzdCAiSm91ciBlbnRpZXIgKEFsbCBkYXkpIiA8ZW0+KGluc2Vuc2libGUgw6AgbGEgY2Fzc2UpPC9lbT4gb24gc3VwcG9zZXJhIHF1XCdpbCBzXCdhZ2l0IGRcJ3VuIMOpdsOpbmVtZW50IHN1ciB0b3V0ZSBsYSBqb3VybsOpZSDDoCBwYXJ0aXIgZHUgdGVtcHMgZGUgZMOpYnV0LjwvbGk+DQogICA8bGk+U2kgbGEgY29sb25uZSBkZSBlbmQgdGltZSBlc3QgdmlkZSwgYXVjdW5lIHZhbGV1ciBkZSB0ZW1wcyBkZSBmaW4gbmUgc2VyYSBjcsOpw6llIGRhbnMgbGEgYmFzZSBkZSBkb25uw6llcy48L2xpPg0KICA8L3VsPg0KPC9saT4NCjxsaT5DYXTDqWdvcmllcw0KICA8dWw+DQogICA8bGk+U2kgcHLDqWNpc8OpLCBsYSBjb2xvbm5lIGNhdGVnb3J5IHBldXQgY29udGVuaXIgdW5lIGxpc3RlIChzw6lwYXLDqWUgcGFyIDspIGRlIG5vbXMgZGUgY2F0w6lnb3JpZXMgYXV4cXVlbGxlcyBsXCfDqXbDqW5lbWVudCBkZXZyYWl0IGFwcGFydGVuaXIuPC9saT4NCiAgIDxsaT5MZXMgbm9tcyBkZSBjYXTDqWdvcmllcyBzb250IHNlbnNpYmxlcyDDoCBsYSBjYXNzZS48L2xpPg0KICAgPGxpPkxlcyBjYXTDqWdvcmllcyBuZSBzb250IHBhcyBjcsOpw6llcyBzaSBlbGxlcyBuXCdleGlzdGVudCBwYXMuPC9saT4NCiAgPC91bD4NCjwvbGk+DQo8bGk+TGVzIGNoYW1wcyBwZXJzb25uYWxpc8OpcyA6DQogIDx1bD4NCiAgICA8bGk+bm9tcyBkZXMgY2hhbXBzIHBlcnNvbm5hbGlzw6lzIChtw6ptZSBkYW5zIGxhIHByZW1pw6hyZSBsaWduZSBxdWkgZMOpZmluaXQgbFwnb3JkcmUgZFwnaW1wb3J0IGRlcyBjaGFtcHMpIHNvbnQgc2Vuc2libGVzIMOgIGxhIGNhc3NlLjwvbGk+DQogICAgPGxpPkxlcyBjaGFtcHMgcGVyc29ubmFsaXPDqXMgbmUgc29udCBwYXMgY3LDqcOpcyBzaSBwcsOpY2lzw6kgZGFucyBsZSBmaWNoaWVyIENTVi4gRGVzIGNoYW1wcyBwZXJzb25uYWxpc8OpcyBpbmNvbm51cyBzZXJvbnQgaWdub3LDqXMuPC9saT4NCiAgICA8bGk+TGVzIGNoYW1wcyBwZXJzb25uYWxpc8OpcyBkZSB0eXBlICJmaWxlIiAoZmljaGllcikgbmUgcGV1dmVudCBwYXMgw6p0cmUgaW1wb3J0w6lzLiBMXCdvcMOpcmF0aW9uIGRcJ2ltcG9ydCDDqWNob3VlcmEuPC9saT4NCiAgPC91bD4NCiAgPC9saT4NCiAgPC91bD4NCjwvbGk+DQo8bGk+VW4gZmljaGllciBjc3YgZFwnZXhlbXBsZSBlc3QgcHLDqXNlbnQgZGFucyBsZSByw6lwZXJ0b2lyZSBkdSBjb2RlIHNvdXJjZSBkdSBtb2R1bGUuPC9saT4NCjwvdWw+JzsKJGxhbmdbJ3Byb21wdF9jc3ZfZmlsZSddID0gJ1PDqWxlY3Rpb25uZXIgbGUgZmljaGllciBkXCdpbXBvcnRhdGlvbic7CiRsYW5nWydkZWxldGUnXSA9ICdFZmZhY2VyJzsKJGxhbmdbJ2NkX2NvbXBhbnknXSA9ICdFbnRyZXByaXNlIGRlIGxcJ2FubnVhaXJlIGRcJ2VudHJlcHJpc2VzJzsKJGxhbmdbJ2RmbHRfdXJscHJlZml4J10gPSAnUHLDqWZpeGUgZFwnVVJMIHBhciBkw6lmYXV0IHBvdXIgInByZXR0eSBVUkxTIic7CiRsYW5nWydkZmx0X2FsbGRheWV2ZW50J10gPSAnTGVzIG5vdXZlYXV4IMOpdsOpbmVtZW50cyBzb250IGRlcyDDqXbDqW5lbWVudHMgImpvdXIgZW50aWVyIChhbGwgZGF5KSIgcGFyIGTDqWZhdXQnOwokbGFuZ1snZGZsdF9zdGFydHRpbWUnXSA9ICdIZXVyZSBkZSBkw6lidXQgcGFyIGTDqWZhdXQgcG91ciBsZXMgbm91dmVhdXggw6l2w6luZW1lbnRzJzsKJGxhbmdbJ2luZm9fZGZsdF9zdGFydHRpbWUnXSA9ICc8ZW0+KFNcJ2FwcGxpcXVlIHVuaXF1ZW1lbnQgc2kgbGVzIG5vdXZlYXV4IMOpdsOpbmVtZW50cyBuZSBzb250IHBhcyBkZXMgw6l2w6luZW1lbnRzICJqb3VyIGVudGllciAvIEFsbCBEYXkiLik8L2VtPic7CiRsYW5nWydzZWFyY2hfdHlwZSddID0gJ1R5cGUgZGUgcmVjaGVyY2hlJzsKJGxhbmdbJ3NlYXJjaF9hbnknXSA9ICdSZW52b2llIGxlIHLDqXN1bHRhdCBzdXIgblwnaW1wb3J0ZSBsZXF1ZWwgZGVzIG1vdHMgcmVjaGVyY2jDqXMnOwokbGFuZ1snc2VhcmNoX2FsbCddID0gJ1JlbnZvaWUgbGUgcsOpc3VsdGF0IGRlIHJlY2hlcmNoZSBzdXIgdG91cyBsZXMgbW90cyByZWNoZXJjaMOpcyc7CiRsYW5nWydzZWFyY2hhYmxlJ10gPSAnVXRpbGlzYWJsZSBjb21tZSBjcml0w6hyZSBkZSByZWNoZXJjaGUnOwokbGFuZ1snaGVscF9wYXJhbV9kZWxldGVldmVudHRlbXBsYXRlJ10gPSAnQXBwbGljYWJsZSB1bmlxdWVtZW50IMOgIGxcJ2FjdGlvbiBkZWxldGVfZXZlbnQsIGNlIHBhcmFtw6h0cmUgcGVybWV0IGRlIGTDqWZpbmlyIHVuIGdhYmFyaXQgZGUgc3VwcHJlc3Npb24gZFwnw6l2w6luZW1lbnQgZGlmZsOpcmVudCBkZSBjZWx1aSBwYXIgZMOpZmF1dCDDoCB1dGlsaXNlciBwb3VyIGNldHRlIGFjdGlvbi4nOwokbGFuZ1snaGVscF9wYXJhbV9lZGl0ZXZlbnR0ZW1wbGF0ZSddID0gJ0FwcGxpY2FibGUgdW5pcXVlbWVudCBwb3VyIGxcJ2FjdGlvbiBNZXMgw4l2w6luZW1lbnRzLCBjZSBwYXJhbcOodHJlIHBlcm1ldCBkZSBzcMOpY2lmaWVyIHVuIGF1dHJlIGdhYmFyaXQgZFwnw6lkaXRpb24gZFwnw6l2w6luZW1lbnQgKGludm9xdcOpIGxvcnNxdWUgbFwndXRpbGlzYXRldXIgY3LDqWUgb3Ugw6lkaXRlIHVuIMOpdsOpbmVtZW50KSBxdWUgY2VsdWkgdXRpbGlzw6kgcGFyIGTDqWZhdXQuJzsKJGxhbmdbJ2hlbHBfcGFyYW1fZWRpdHBhZ2UnXSA9ICdBcHBsaWNhYmxlIHVuaXF1ZW1lbnQgcG91ciBsXCdhY3Rpb24gTWVzIMOJdsOpbmVtZW50cywgY2UgcGFyYW3DqHRyZSBwZXJtZXQgZGUgc3DDqWNpZmllciB1bmUgYXV0cmUgcGFnZSBwb3VyIGxlIGZvcm11bGFpcmUgZFwnw6lkaXRpb24uJzsKJGxhbmdbJ2hlbHBfcGFyYW1fbXlldmVudHN0ZW1wbGF0ZSddID0gJ0FwcGxpY2FibGUgdW5pcXVlbWVudCBwb3VyIGxcJ2FjdGlvbiBNZXMgw4l2w6luZW1lbnRzLCBjZSBwYXJhbcOodHJlIHBlcm1ldCBkZSBzcMOpY2lmaWVyIHVuIGF1dHJlIGdhYmFyaXQgcXVlIGNlbHVpIHV0aWxpc8OpIHBhciBkw6lmYXV0Lic7CiRsYW5nWydjYWxfZWRpdF9ldmVudCddID0gJ0VkaXRlciB1biDDqXbDqW5lbWVudCBkdSBjYWxlbmRyaWVyJzsKJGxhbmdbJ2Vycm9yX2RiZXJyb3InXSA9ICdFcnJldXIgZGUgYmFzZSBkZSBkb25uw6llcyc7CiRsYW5nWydzdWJtaXQnXSA9ICdTb3VtZXR0cmUnOwokbGFuZ1sncHJvbXB0X2ZlZWRpdF9ncm91cCddID0gJ0xlcyBtZW1icmVzIGRlIGNlIGdyb3VwZSBGRVUgcGV1dmVudCBham91dGVyIGRlcyDDqXbDqW5lbWVudHMnOwokbGFuZ1sncHJvbXB0X2ZlZWRpdF9wYWdlJ10gPSAnUGFnZSBwYXIgZMOpZmF1dCBwb3VyIGxlIGZvcm11bGFpcmUgZFwnw6lkaXRpb24gZW4gZnJvbnRlbmQuJzsKJGxhbmdbJ25vbmUnXSA9ICdBdWN1bic7CiRsYW5nWydvd25lciddID0gJ1Byb3ByacOpdGFpcmUnOwokbGFuZ1snYXJleW91c3VyZV9yZW1vdmVjb25mbGljdGluZyddID0gJ0NldHRlIGFjdGlvbiB2YSBzdXBwcmltZXIgdG91cyBsZXMgw6l2w6luZW1lbnRzIGVuIGNvbmZsaXQgYXZlYyBkZXMgw6l2w6luZW1lbnRzIHF1aSBuZSBwZXV2ZW50IHNlIGNoZXZhdWNoZXIuIMOKdGVzLXZvdXMgc8O7ciBkZSB2b3Vsb2lyIGZhaXJlIMOnYSA/JzsKJGxhbmdbJ2ZpbHRlcl9jb25mbGljdGluZyddID0gJ0ZpbHRyZSBkZXMgw6l2w6luZW1lbnRzIGVuIGNvbmZsaXQnOwokbGFuZ1snb3ZlcmxhcF9hY3Rpb25fcmVtb3ZlJ10gPSAnRWZmYWNlciBzaWxlbmNpZXVzZW1lbnQgZGVzIMOpdsOpbmVtZW50cyBlbiBjb25mbGl0JzsKJGxhbmdbJ292ZXJsYXBfYWN0aW9uX2Vycm9yJ10gPSAnQWZmaWNoZSB1bmUgZXJyZXVyJzsKJGxhbmdbJ3Byb21wdF9vdmVybGFwX2FjdGlvbiddID0gJ0NlIHF1XCdpbCBkZXZyYWl0IHNlIHBhc3NlciBxdWFuZCB1biBjb25mbGl0IGVzdCBkw6l0ZWN0w6kgw6AgbFwnw6lkaXRpb24gb3Ugw6AgbFwnYWpvdXQgZFwndW4gw6l2w6luZW1lbnQnOwokbGFuZ1snZXJyb3JfZXZlbnRfY29uZmxpY3QnXSA9ICdMZXMgdmFsZXVycyBzcMOpY2lmacOpZXMgZGUgbFwnw6l2w6luZW1lbnQgY2hldmF1Y2hlbnQgdW4gw6l2w6luZW1lbnQgZXhpc3RhbnQgcXVpIG5cJ2F1dG9yaXNlIHBhcyBsZSBjb25mbGl0Lic7CiRsYW5nWydjYWxfaW5mb19vdmVybGFwJ10gPSAnU1wnYXBwbGlxdWUgc2V1bGVtZW50IGF1eCDDqXbDqW5lbWVudHMgY29tcG9ydGFudCB1bmUgaGV1cmUgZGUgZmluIChvdSBsZXMgw6l2w6luZW1lbnRzIGRlIHRvdXMgbGVzIGpvdXJzKSc7CiRsYW5nWydjYWxfb3ZlcmxhcCddID0gJ0F1dG9yaXNlIGxlcyBub3V2ZWF1eCDDqXbDqW5lbWVudHMgw6AgY2hldmF1Y2hlciBjZWx1aS1sw6AnOwokbGFuZ1sncHJvbXB0X292ZXJsYXBfcG9saWN5J10gPSAnUG9saXRpcXVlIGRlIGNoZXZhdWNoZW1lbnQgZFwnw6l2w6luZW1lbnQnOwokbGFuZ1sncG9saWN5X2FsbCddID0gJ1RvdXMgbGVzIMOpdsOpbmVtZW50cyBwZXV2ZW50IHNlIGNoZXZhdWNoZXInOwokbGFuZ1sncG9saWN5X25vbmUnXSA9ICdBdWN1biDDqXbDqW5lbWVudCBuZSBwZXV0IHNlIGNoZXZhdWNoZXInOwokbGFuZ1sncG9saWN5X2luZGl2aWR1YWwnXSA9ICdDaG9peCBwb3VyIGNoYXF1ZSDDqXbDqW5lbWVudCc7CiRsYW5nWydsYmxfYmFjayddID0gJ1JldG91cic7CiRsYW5nWyd0ZXh0YXJlYSddID0gJ1pvbmUgZGUgVGV4dGUgKFRleHRhcmVhKSc7CiRsYW5nWydlcnJvcl9jYWxlbmRhcl9pbmNvbXBhdGlibGUnXSA9ICdOb3VzIGF2b25zIGTDqXRlY3TDqSBxdWUgbGUgbW9kdWxlIENhbGVuZGFyIGVzdCBkw6lqw6AgaW5zdGFsbMOpLiBDZSBtb2R1bGUgblwnZXN0IHBhcyBjb21wYXRpYmxlIGF2ZWMgbGUgbW9kdWxlIENhbGVuZGFyIGV0IG5lIHBldXQgcGFzIGNvZXhpc3RlciBhdmVjIGx1aSBzdXIgbGEgbcOqbWUgaW5zdGFsbGF0aW9uLiBWZXVpbGxleiBkw6lzaW5zdGFsbGVyIGxlIG1vZHVsZSBDYWxlbmRhcic7CiRsYW5nWydlcnJvcl9ldmVudF9ub3RfZm91bmQnXSA9ICdTb2l0IGxcJ2V2ZW50X2lkIG5cJ2VzdCBwYXMgcHLDqXNlbnQgZW4gYmFzZSBkZSBkb25uw6llcywgc29pdCBpbCB5IGEgcGx1cyBkXCd1biDDqXbDqW5lbWVudCBwb3Nzw6lkYW50IGNldCBpZCAhICglZCknOwokbGFuZ1snZmlyc3RfcGFnZSddID0gJzw8JzsKJGxhbmdbJ3ByZXZfcGFnZSddID0gJzwnOwokbGFuZ1snbmV4dF9wYWdlJ10gPSAnPic7CiRsYW5nWydsYXN0X3BhZ2UnXSA9ICc+Pic7CiRsYW5nWydwYWdlX29mJ10gPSAnUGFnZSAlZCBzdXIgJWQnOwokbGFuZ1snc2VhcmNoX3Jlc3VsdHMnXSA9ICdSw6lzdWx0YXRzIGRlIGxhIFJlY2hlcmNoZSBkdSBDYWxlbmRyaWVyJzsKJGxhbmdbJ3NlYXJjaF93b3JkcyddID0gJ01vdHMgUmVjaGVyY2jDqXMnOwokbGFuZ1snbm9fcmVzdWx0c19mb3VuZCddID0gJ0F1Y3VuIHLDqXN1bHRhdCB0cm91dsOpIGNvcnJlc3BvbmRhbnQgw6AgbGEgZGVtYW5kZSc7CiRsYW5nWydmcmVxdWVuY3knXSA9ICdGcsOpcXVlbmNlJzsKJGxhbmdbJ3NwZWNpZmllZF9kYXRlJ10gPSAnVXRpbGlzZXIgbGEgZGF0ZSBzcMOpY2lmacOpZSc7CiRsYW5nWydmaXJzdF9zdW5kYXknXSA9ICdQcmVtaWVyIGRpbWFuY2hlIGR1IG1vaXMnOwokbGFuZ1snZmlyc3RfbW9uZGF5J10gPSAnUHJlbWllciBsdW5kaSBkdSBtb2lzJzsKJGxhbmdbJ2ZpcnN0X3R1ZXNkYXknXSA9ICdQcmVtaWVyIG1hcmRpIGR1IG1vaXMnOwokbGFuZ1snZmlyc3Rfd2VkbmVzZGF5J10gPSAnUHJlbWllciBtZXJjcmVkaSBkdSBtb2lzJzsKJGxhbmdbJ2ZpcnN0X3RodXJzZGF5J10gPSAnUHJlbWllciBqZXVkaSBkdSBtb2lzJzsKJGxhbmdbJ2ZpcnN0X2ZyaWRheSddID0gJ1ByZW1pZXIgdmVuZHJlZGkgZHUgbW9pcyc7CiRsYW5nWydmaXJzdF9zYXR1cmRheSddID0gJ1ByZW1pZXIgc2FtZWRpIGR1IG1vaXMnOwokbGFuZ1snc2Vjb25kX3N1bmRheSddID0gJ0RldXhpw6htZSBkaW1hbmNoZSBkdSBtb2lzJzsKJGxhbmdbJ3NlY29uZF9tb25kYXknXSA9ICdEZXV4acOobWUgbHVuZGkgZHUgbW9pcyc7CiRsYW5nWydzZWNvbmRfdHVlc2RheSddID0gJ0RldXhpw6htZSBtYXJkaSBkdSBtb2lzJzsKJGxhbmdbJ3NlY29uZF93ZWRuZXNkYXknXSA9ICdEZXV4acOobWUgbWVyY3JlZGkgZHUgbW9pcyc7CiRsYW5nWydzZWNvbmRfdGh1cnNkYXknXSA9ICdEZXV4acOobWUgamV1ZGkgZHUgbW9pcyc7CiRsYW5nWydzZWNvbmRfZnJpZGF5J10gPSAnRGV1eGnDqG1lIHZlbmRyZWRpIGR1IG1vaXMnOwokbGFuZ1snc2Vjb25kX3NhdHVyZGF5J10gPSAnRGV1eGnDqG1lIHNhbWVkaSBkdSBtb2lzJzsKJGxhbmdbJ3RoaXJkX3N1bmRheSddID0gJ1Ryb2lzacOobWUgZGltYW5jaGUgZHUgbW9pcyc7CiRsYW5nWyd0aGlyZF9tb25kYXknXSA9ICdUcm9pc2nDqG1lIGx1bmRpIGR1IG1vaXMnOwokbGFuZ1sndGhpcmRfdHVlc2RheSddID0gJ1Ryb2lzacOobWUgbWFyZGkgZHUgbW9pcyc7CiRsYW5nWyd0aGlyZF93ZWRuZXNkYXknXSA9ICdUcm9pc2nDqG1lIG1lcmNyZWRpIGR1IG1vaXMnOwokbGFuZ1sndGhpcmRfdGh1cnNkYXknXSA9ICdUcm9pc2nDqG1lIGpldWRpIGR1IG1vaXMnOwokbGFuZ1sndGhpcmRfZnJpZGF5J10gPSAnVHJvaXNpw6htZSB2ZW5kcmVkaSBkdSBtb2lzJzsKJGxhbmdbJ3RoaXJkX3NhdHVyZGF5J10gPSAnVHJvaXNpw6htZSBzYW1lZGkgZHUgbW9pcyc7CiRsYW5nWydmb3VydGhfc3VuZGF5J10gPSAnUXVhdHJpw6htZSBkaW1hbmNoZSBkdSBtb2lzJzsKJGxhbmdbJ2ZvdXJ0aF9tb25kYXknXSA9ICdRdWF0cmnDqG1lIGx1bmRpIGR1IG1vaXMnOwokbGFuZ1snZm91cnRoX3R1ZXNkYXknXSA9ICdRdWF0cmnDqG1lIG1hcmRpIGR1IG1vaXMnOwokbGFuZ1snZm91cnRoX3dlZG5lc2RheSddID0gJ1F1YXRyacOobWUgbWVyY3JlZGkgZHUgbW9pcyc7CiRsYW5nWydmb3VydGhfdGh1cnNkYXknXSA9ICdRdWF0cmnDqG1lIGpldWRpIGR1IG1vaXMnOwokbGFuZ1snZm91cnRoX2ZyaWRheSddID0gJ1F1YXRyacOobWUgdmVuZHJlZGkgZHUgbW9pcyc7CiRsYW5nWydmb3VydGhfc2F0dXJkYXknXSA9ICdRdWF0cmnDqG1lIHNhbWVkaSBkdSBtb2lzJzsKJGxhbmdbJ2xhc3Rfc3VuZGF5J10gPSAnRGVybmllciBkaW1hbmNoZSBkdSBtb2lzJzsKJGxhbmdbJ2xhc3RfbW9uZGF5J10gPSAnRGVybmllciBsdW5kaSBkdSBtb2lzJzsKJGxhbmdbJ2xhc3RfdHVlc2RheSddID0gJ0Rlcm5pZXIgbWFyZGkgZHUgbW9pcyc7CiRsYW5nWydsYXN0X3dlZG5lc2RheSddID0gJ0Rlcm5pZXIgbWVyY3JlZGkgZHUgbW9pcyc7CiRsYW5nWydsYXN0X3RodXJzZGF5J10gPSAnRGVybmllciBqZXVkaSBkdSBtb2lzJzsKJGxhbmdbJ2xhc3RfZnJpZGF5J10gPSAnRGVybmllciB2ZW5kcmVkaSBkdSBtb2lzJzsKJGxhbmdbJ2xhc3Rfc2F0dXJkYXknXSA9ICdEZXJuaWVyIHNhbWVkaSBkdSBtb2lzJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRfcmVjdXJfbW9udGhseV9mcmVxJ10gPSAnRnLDqXF1ZW5jZSBpbnZhbGlkZS4uLiB2b3VzIG5lIHBvdXZleiBzcMOpY2lmaWVyIEVUIGxhIGRhdGUgRVQgZFwnYXV0cmVzIHZhbGV1cnMnOwokbGFuZ1snZXJyb3JfcXVlcnlfZmFpbGVkJ10gPSAnTGEgcmVxdcOqdGUgZGUgYmFzZSBkZSBkb25uw6llcyBhIMOpY2hvdcOpZSc7CiRsYW5nWydlcnJvcl9zZWFyY2hfaW52YWxpZF9kYXRlcyddID0gJ0xlcyBkYXRlcyBpbmRpcXXDqWVzIHBvdXIgbGEgcmVjaGVyY2hlIHNvbnQgaW52YWxpZGVzJzsKJGxhbmdbJ3RleHQnXSA9ICdUZXh0ZSc7CiRsYW5nWydzZWFyY2gnXSA9ICdSZWNoZXJjaGUnOwokbGFuZ1snY2F0ZWdvcnknXSA9ICdDYXTDqWdvcmllJzsKJGxhbmdbJ21heCddID0gJ21heC4nOwokbGFuZ1sndGltZXMnXSA9ICdmb2lzJzsKJGxhbmdbJ29uJ10gPSAnc3VyJzsKJGxhbmdbJ2FyZXlvdXN1cmVfdW5pbnN0YWxsJ10gPSAnw4p0ZXMtdm91cyBzw7tyIGRlIHZvdWxvaXIgZmFpcmUgY2VjaSA/IFNpIHZvdXMgcG91cnN1aXZleiwgdm91cyBhbGxlciBlZmZhY2VyIGRlIG1hbmnDqHJlIGTDqWZpbml0aXZlIHRvdXRlcyBsZXMgZG9ubsOpZXMgYXNzb2Npw6llcyDDoCBjZSBtb2R1bGUuJzsKJGxhbmdbJ3Bvc3RfdW5pbnN0YWxsJ10gPSAnTGUgbW9kdWxlIENhbGVuZHJpZXIgKENHKSBhIMOpdMOpIGTDqXNpbnN0YWxsw6kgZXQgdG91cyBsZXMgw6l2w6luZW1lbnRzIGV0IGxlcyBpbmZvcm1hdGlvbnMgZGUgZ2FiYXJpdCBhc3NvY2nDqXMgw6AgY2UgbW9kdWxlIG9udCDDqXTDqSBzdXBwcmltw6lzLic7CiRsYW5nWydmaWVsZHVwZGF0ZWQnXSA9ICdDaGFtcCBtaXMgw6Agam91ci4nOwokbGFuZ1snZXZlcnknXSA9ICdUb3VzIGxlcyc7CiRsYW5nWydvciddID0gJ291JzsKJGxhbmdbJ3VwZGF0ZV9jaGlsZHJlbiddID0gJ01ldHRyZSDDoCBqb3VyIGxlcyBzb3VzLcOpdsOpbmVtZW50cyBhc3NvY2nDqXMnOwokbGFuZ1snZXJyb3Jfbm9jYXRlZ29yeSddID0gJ1ZvdXMgZGV2ZXogc8OpbGVjdGlvbm5lciBhdSBtb2lucyB1bmUgY2F0w6lnb3JpZS4nOwokbGFuZ1snZXJyb3Jfbm90aGluZ3NlbGVjdGVkJ10gPSAnUmllbiBuXCdhIMOpdMOpIHPDqWxlY3Rpb25uw6kgcG91ciBsXCdlZmZhY2VtZW50Lic7CiRsYW5nWydlcnJvcl9ldmVudG92ZXJsYXAnXSA9ICdWb3MgcGFyYW3DqHRyZXMgZGUgcsOpcMOpdGl0aW9uIGRcJ8OpdsOpbmVtZW50IGVuZ2VuZHJlbnQgdW4gY2hldmF1Y2hlbWVudCBkXCfDqXbDqW5lbWVudHMuJzsKJGxhbmdbJ3JlY3VycyddID0gJ1LDqXDDqXRpdGlvbnMnOwokbGFuZ1snZXJyb3JfaW52YWxpZF9kYXRlcyddID0gJ1VuZSBvdSBwbHVzaWV1cnMgdmFsZXVycyBlbnRyw6llcyBwb3VyIGxhIGRhdGUgc29udCBpbmNvcnJlY3Rlcyc7CiRsYW5nWydzdW5kYXknXSA9ICdEaW1hbmNoZSc7CiRsYW5nWydtb25kYXknXSA9ICdMdW5kaSc7CiRsYW5nWyd0dWVzZGF5J10gPSAnTWFyZGknOwokbGFuZ1snd2VkbmVzZGF5J10gPSAnTWVyY3JlZGknOwokbGFuZ1sndGh1cnNkYXknXSA9ICdKZXVkaSc7CiRsYW5nWydmcmlkYXknXSA9ICdWZW5kcmVkaSc7CiRsYW5nWydzYXR1cmRheSddID0gJ1NhbWVkaSc7CiRsYW5nWydhYmJyX3N1bmRheSddID0gJ0RpJzsKJGxhbmdbJ2FiYnJfbW9uZGF5J10gPSAnTHUnOwokbGFuZ1snYWJicl90dWVzZGF5J10gPSAnTWEnOwokbGFuZ1snYWJicl93ZWRuZXNkYXknXSA9ICdNZSc7CiRsYW5nWydhYmJyX3RodXJzZGF5J10gPSAnSmUnOwokbGFuZ1snYWJicl9mcmlkYXknXSA9ICdWZSc7CiRsYW5nWydhYmJyX3NhdHVyZGF5J10gPSAnU2EnOwokbGFuZ1snd2VlayddID0gJ1NlbWFpbmUnOwokbGFuZ1snbW9udGgnXSA9ICdNb2lzJzsKJGxhbmdbJ2RheSddID0gJ0pvdXInOwokbGFuZ1sndG9kYXknXSA9ICdBdWpvdXJk4oCyaHVpJzsKJGxhbmdbJ3dlZWtkYXlzJ10gPSAnSm91cnMgZGUgbGEgc2VtYWluZSc7CiRsYW5nWydwbHVyYWxfbm9uZSddID0gJ1JpZW4nOwokbGFuZ1sncGx1cmFsX2RhaWx5J10gPSAnSm91cnMnOwokbGFuZ1sncGx1cmFsX3dlZWtseSddID0gJ1NlbWFpbmVzJzsKJGxhbmdbJ3BsdXJhbF9tb250aGx5J10gPSAnTW9pcyc7CiRsYW5nWydwbHVyYWxfeWVhcmx5J10gPSAnQW5uw6llcyc7CiRsYW5nWydubyddID0gJ05vbic7CiRsYW5nWyd5ZXMnXSA9ICdPdWknOwokbGFuZ1snZGFpbHknXSA9ICdDaGFxdWUgam91cic7CiRsYW5nWyd3ZWVrbHknXSA9ICdDaGFxdWUgc2VtYWluZSc7CiRsYW5nWydtb250aGx5J10gPSAnQ2hhcXVlIG1vaXMnOwokbGFuZ1sneWVhcmx5J10gPSAnQ2hhcXVlIGFubsOpZSc7CiRsYW5nWydpbnRlcnZhbCddID0gJ1LDqXDDqXRlciBjaGFxdWUnOwokbGFuZ1snY2FsX3JlY3VyX2RldGFpbHMnXSA9ICdEw6l0YWlscyBkZXMgw6l2w6luZW1lbnRzIHLDqXDDqXRpdGlmcyc7CiRsYW5nWyd1bmxpbWl0ZWQnXSA9ICdJbGxpbWl0w6knOwokbGFuZ1snbWF4X3JlY3VyX2V2ZW50cyddID0gJ05vbWJyZSBtYXhpbXVtIGRlIHNvdXMtw6l2w6luZW1lbnRzJzsKJGxhbmdbJ3VzZV90b19kYXRlJ10gPSAnU3DDqWNpZmllciB1bmUgZGF0ZSBkZSBmaW4gZGlmZsOpcmVudGUgPyc7CiRsYW5nWydjYW5jZWwnXSA9ICdBbm51bGVyJzsKJGxhbmdbJ3Nob3dfY2hpbGRfZXZlbnRzJ10gPSAnQWZmaWNoZXIgbGVzIHNvdXMtw6l2w6luZW1lbnRzIDxlbT4ocGV1dCBjYXVzZXIgdW4gYWZmaWNoYWdlIHRyw6hzIGxvbmcpPC9lbT4nOwokbGFuZ1snbi9hJ10gPSAnbi9hJzsKJGxhbmdbJ3JlY3Vyc191bnRpbCddID0gJ1LDqXDDqXRpdGlvbiBqdXNxdVwnw6AnOwokbGFuZ1sncGFyZW50J10gPSAnUGFyZW50JzsKJGxhbmdbJ3JlY3VyX3BlcmlvZCddID0gJ1DDqXJpb2RlIGRlIHLDqXDDqXRpdGlvbic7CiRsYW5nWydmaWx0ZXInXSA9ICdGaWx0cmUnOwokbGFuZ1snc3RhcnRfZGF0ZSddID0gJ0RhdGUgZGUgZMOpYnV0JzsKJGxhbmdbJ2VuZF9kYXRlJ10gPSAnRGF0ZSBkZSBmaW4nOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50QWRkZWQnXSA9ICdBcHBlbMOpIGFwcsOocyBsXCdham91dCBkXCd1biDDqXbDqW5lbWVudCBkZSBjYWxlbmRyaWVyJzsKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudEVkaXRlZCddID0gJ0FwcGVsw6kgYXByw6hzIGxcJ8OpZGl0aW9uIGRcJ3VuIMOpdsOpbmVtZW50IGRlIGNhbGVuZHJpZXIgZXhpc3RhbnQnOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RWRpdGVkUHJlJ10gPSAnQXBwZWzDqSBhdmFudCBsXCfDqWRpdGlvbiBkXCd1biDDqXbDqW5lbWVudCBkZSBjYWxlbmRyaWVyIGV4aXN0YW50JzsKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudERlbGV0ZWQnXSA9ICdBcHBlbMOpIGFwcsOocyBxdVwndW4gw6l2w6luZW1lbnQgYWl0IMOpdMOpIHN1cHByaW3DqSc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlBZGRlZCddID0gJ0FwcGVsw6kgYXByw6hzIGxhIGNyw6lhdGlvbiBkXCd1bmUgY2F0w6lnb3JpZSc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlFZGl0ZWQnXSA9ICdBcHBlbMOpIGFwcsOocyBsXCfDqWRpdGlvbiBkXCd1bmUgY2F0w6lnb3JpZSc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnQXBwZWzDqSBhcHLDqHMgcXVcJ3VuZSBjYXTDqWdvcmllIGFpZSDDqXTDqSBzdXBwcmltw6llJzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudEFkZGVkJ10gPSAnPHA+RW52b3nDqSBxdWFuZCB1biDDqXbDqW5lbWVudCBkZSBjYWxlbmRyaWVyIGVzdCBham91dMOpLjwvcD4NCjxoND5QYXJhbcOodHJlczwvaDQ+DQo8dWw+DQo8bGk+XFwiZXZlbnRfdGl0bGVcXCIgLSBUaXRyZSBkZSBsXCfDqXbDqW5lbWVudDwvbGk+DQo8bGk+XFwiZXZlbnRfc3VtbWFyeVxcIiAtIFRleHRlIGR1IHNvbW1haXJlPC9saT4NCjxsaT5cXCJldmVudF9kZXRhaWxzXFwiIC0gRGVzY3JpcHRpb24gZMOpdGFpbGzDqWU8L2xpPg0KPGxpPlxcImV2ZW50X2RhdGVfc3RhcnRcXCIgLSBEYXRlIGV0IGhldXJlIGR1IGTDqWJ1dCBkZSBsXCfDqXbDqW5lbWVudDwvbGk+DQo8bGk+XFwiZXZlbnRfZGF0ZV9lbmRcXCIgLSBEYXRlIGV0IGhldXJlIGRlIGxhIGZpbiBkZSBsXCfDqXbDqW5lbWVudDwvbGk+DQo8bGk+XFwiZXZlbnRfY3JlYXRlZF9ieVxcIiAtIExlIHVzZXJpZCBkZSBsXCdhdXRldXI8L2xpPg0KPGxpPlxcImV2ZW50X2lkXFwiIC0gTFwnaWQgZGUgbFwnw6l2w6luZW1lbnQ8L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50RWRpdGVkUHJlJ10gPSAnPHA+RW52b3nDqSBhdmFudCBxdVwndW4gw6l2w6luZW1lbnQgZXhpc3RhbnQgYWl0IMOpdMOpIMOpZGl0w6kuPC9wPg0KPGg0PlBhcmFtw6h0cmVzIDo8L2g0Pg0KPHVsPg0KPGxpPlxcImV2ZW50XFwiIC0gKGFycmF5KSBMXCdlbnJlZ2lzdHJlbWVudCBjb21wbGV0IGRlIGxcJ8OpdsOpbmVtZW50PC9saT4NCjxsaT5cXCJldmVudF9pZFxcIiAtIExcJ2lkIGRlIGxcJ8OpdsOpbmVtZW50PC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudEVkaXRlZCddID0gJzxwPkVudm95w6kgcXVhbmQgdW4gw6l2w6luZW1lbnQgZGUgY2FsZW5kcmllciBlc3Qgw6lkaXTDqS48L3A+DQo8aDQ+UGFyYW3DqHRyZXM8L2g0Pg0KPHVsPg0KPGxpPlxcImV2ZW50XFwiIC0gKGFycmF5KSBMXCdlbnJlZ2lzdHJlbWVudCBjb21wbGV0IGRlIGxcJ8OpdsOpbmVtZW50PC9saT4NCjxsaT5cXCJldmVudF90aXRsZVxcIiAtIFRpdHJlIGRlIGxcJ8OpdsOpbmVtZW50PC9saT4NCjxsaT5cXCJldmVudF9zdW1tYXJ5XFwiIC0gVGV4dGUgZHUgc29tbWFpcmU8L2xpPg0KPGxpPlxcImV2ZW50X2RldGFpbHNcXCIgLSBEZXNjcmlwdGlvbiBkw6l0YWlsbMOpZTwvbGk+DQo8bGk+XFwiZXZlbnRfZGF0ZV9zdGFydFxcIiAtIERhdGUgZXQgaGV1cmUgZHUgZMOpYnV0IGRlIGxcJ8OpdsOpbmVtZW50PC9saT4NCjxsaT5cXCJldmVudF9kYXRlX2VuZFxcIiAtIERhdGUgZXQgaGV1cmUgZGUgbGEgZmluIGRlIGxcJ8OpdsOpbmVtZW50PC9saT4NCjxsaT5cXCJldmVudF9jcmVhdGVkX2J5XFwiIC0gTGUgdXNlcmlkIGRlIGxcJ2F1dGV1cjwvbGk+DQo8bGk+XFwiZXZlbnRfaWRcXCIgLSBMXCdpZCBkZSBsXCfDqXbDqW5lbWVudDwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGhlbHAtRXZlbnREZWxldGVkJ10gPSAnPHA+RW52b3nDqSBxdWFuZCB1biDDqXbDqW5lbWVudCBkZSBjYWxlbmRyaWVyIGVzdCBzdXBwcmltw6kuPC9wPg0KPGg0PlBhcmFtw6h0cmVzPC9oND4NCjx1bD4NCjxsaT5cXCJldmVudF9pZFxcIiAtIExcJ2lkIGRlIGxcJ8OpdsOpbmVtZW50PC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeUFkZGVkJ10gPSAnPHA+RW52b3nDqSBxdWFuZCB1bmUgY2F0w6lnb3JpZSBkZSBjYWxlbmRyaWVyIGVzdCBham91dMOpZS48L3A+DQo8aDQ+UGFyYW3DqHRyZXM8L2g0Pg0KPHVsPg0KPGxpPlxcImNhdGVnb3J5X2lkXFwiIC0gTFwnaWQgZGUgbGEgY2F0w6lnb3JpZTwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlFZGl0ZWQnXSA9ICc8cD5FbnZvecOpIHF1YW5kIHVuZSBjYXTDqWdvcmllIGRlIGNhbGVuZHJpZXIgZXN0IMOpZGl0w6llLjwvcD4NCjxoND5QYXJhbcOodHJlczwvaDQ+DQo8dWw+DQo8bGk+XFwiY2F0ZWdvcnlfaWRcXCIgLSBMXCdpZCBkZSBsYSBjYXTDqWdvcmllPC9saT4NCjxsaT5cXCJjYXRlZ29yeV9uYW1lXFwiIC0gTGUgbm9tIGRlIGxhIGNhdMOpZ29yaWU8L2xpPg0KPGxpPlxcImNhdGVnb3J5X29yZGVyXFwiIC0gTFwnb3JkcmUgZGUgdHJpIGRlIGxhIGNhdMOpZ29yaWU8L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5RGVsZXRlZCddID0gJzxwPkVudm95w6kgcXVhbmQgdW5lIGNhdMOpZ29yaWUgZGUgY2FsZW5kcmllciBlc3Qgc3VwcHJpbcOpZS48L3A+DQo8aDQ+UGFyYW3DqHRyZXM8L2g0Pg0KPHVsPg0KPGxpPlxcImNhdGVnb3J5X2lkXFwiIC0gTFwnaWQgZGUgbGEgY2F0w6lnb3JpZTwvbGk+DQo8bGk+XFwiY2F0ZWdvcnlfbmFtZVxcIiAtIExlIG5vbSBkZSBsYSBjYXTDqWdvcmllPC9saT4NCjxsaT5cXCJjYXRlZ29yeV9vcmRlclxcIiAtIExcJ29yZHJlIGRlIHRyaSBkZSBsYSBjYXTDqWdvcmllPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2Vycm9yX2Nzdl9pbnNlcnQnXSA9ICdFcnJldXIgZHVyYW50IGxcJ2ltcG9ydGF0aW9uIGRlcyDDqXbDqW5lbWVudHMgZGVwdWlzIGxlIGNzcyDDoCBsYSBsaWduZSAlZCc7CiRsYW5nWydlcnJvcl9jc3ZmaXJzdGxpbmVmbGRub3Rmb3VuZCddID0gJ1VuIGNoYW1wcyBvYmxpZ2F0b2lyZTogJXMsIG5cJ2EgcHUgw6p0cmUgdHJvdXbDqSBkYW5zIGxhIGxpZ25lIGRcJ2VudMOqdGUgZHUgZmljaGllciBjc3YnOwokbGFuZ1snZXJyb3JfY3N2aW52YWxpZGZpcnN0bGluZSddID0gJ05lIHBldXQgdHJvdXZlciB1bmUgbGlnbmUgZFwnZW50w6p0ZSB2YWxpZGUgZGFucyBsZSBmaWNoaWVyIENTVic7CiRsYW5nWydtc2dfZXZlbnRhZGRlZCddID0gJ8OJdsOpbmVtZW50IGFqb3V0w6knOwokbGFuZ1snZXJyb3Jfbm9ldmVudG5hbWUnXSA9ICdVbiBub20gcG91ciBsXCfDqXbDqW5lbWVudCBkb2l0IMOqdHJlIGTDqWZpbml0JzsKJGxhbmdbJ2Vycm9yX25vdXBsb2FkJ10gPSAnRVJSRVVSJm5ic3A7OiBBdWN1biBmaWNoaWVyIHVwbG9hZMOpIHRyb3V2w6knOwokbGFuZ1snZXJyb3JfaW52YWxpZGZpbGVuYW1lJ10gPSAnRVJSRVVSJm5ic3A7OiBMZSBmaWNoaWVyIHVwbG9hZMOpIG5lIHBldXQgcGFzIMOqdHJlIGFjY2VwdMOpJzsKJGxhbmdbJ2Vycm9yX3Byb2JsZW13aXRodXBsb2FkJ10gPSAnRVJSRVVSJm5ic3A7OiBJbCB5IGEgZXUgdW4gcHJvYmzDqG1lIGxvcnMgZGUgbFwndXBsb2FkIGR1IGZpY2hpZXInOwokbGFuZ1snZXJyb3JfZmlsZWNvcHlmYWlsZWQnXSA9ICdFUlJFVVImbmJzcDs6IElsIHkgYSBldSB1biBwcm9ibMOobWUgbG9ycyBkZSBsYSBjb3BpZSBkdSBmaWNoaWVyIMOgIHNvbiBlbXBsYWNlbWVudCBmaW5hbCc7CiRsYW5nWydlcnJvcl9maWxlZXhpc3RzJ10gPSAnRVJSRVVSJm5ic3A7OiBVbiBmaWNoaWVyIGF2ZWMgbGUgbcOqbWUgbm9tIGV4aXN0ZSBkw6lqw6AnOwokbGFuZ1snZXJyb3JfY3N2ZmlsZW5vdGZvdW5kJ10gPSAnRVJSRVVSJm5ic3A7OiBJbXBvc3NpYmxlIGRlIHRyb3V2ZXIgbGUgZmljaGllciBDU1YnOwokbGFuZ1snZXJyb3JfY2FudG9wZW5maWxlJ10gPSAnRVJSRVVSJm5ic3A7OiBJbXBvc3NpYmxlIGRcJ291dnJpciBsZSBmaWNoaWVyJzsKJGxhbmdbJ2Vycm9yX2NhdGVnb3J5ZXhpc3RzJ10gPSAnRVJSRVVSJm5ic3A7OiBVbmUgY2F0w6lnb3JpZSBhdmVjIGxlIG5vbSAlcyBleGlzdGUgZMOpasOgJzsKJGxhbmdbJ2NhbF9pZCddID0gJ0lEJzsKJGxhbmdbJ2NhbF9jYWxlbmRhciddID0gJ0NhbGVuZHJpZXIgKENHKSc7CiRsYW5nWydjYWxfZGVzY3JpcHRpb24nXSA9ICdBam91dCwgw6lkaXRpb24gZXQgc3VwcHJlc3Npb24gZFwnw6l2w6luZW1lbnRzJzsKJGxhbmdbJ2NhbF9hZGRldmVudCddID0gJ0Fqb3V0ZXIgdW4gw6l2w6luZW1lbnQnOwokbGFuZ1snY2FsX2ltcG9ydF9ldmVudHMnXSA9ICdJbXBvcnRlciBkZXMgw6l2w6luZW1lbnRzJzsKJGxhbmdbJ2NhbF9ldmVudHMnXSA9ICfDiXbDqW5lbWVudHMnOwokbGFuZ1snY2FsX2NhdGVnb3JpZXMnXSA9ICdDYXTDqWdvcmllcyc7CiRsYW5nWydjYWxfc2V0dGluZ3MnXSA9ICdQYXJhbcOodHJlcyc7CiRsYW5nWydjYWxfcHJldiddID0gJ8KrIFByw6ljw6lkZW50JzsKJGxhbmdbJ2NhbF9uZXh0J10gPSAnU3VpdmFudCDCuyc7CiRsYW5nWydjYWxfY2F0ZWdvcmllc191cGRhdGVkJ10gPSAnQ2F0w6lnb3JpZXMgbWlzZXMgw6Agam91cic7CiRsYW5nWydjYWxfc2V0dGluZ3NfdXBkYXRlZCddID0gJ1BhcmFtw6h0cmVzIG1pcyDDoCBqb3VyJzsKJGxhbmdbJ2NhbF9hZGRfZXZlbnQnXSA9ICdBam91dGVyIHVuIMOpdsOpbmVtZW50JzsKJGxhbmdbJ2NhbF9lZGl0J10gPSAnRWRpdGVyJzsKJGxhbmdbJ2NhbF9kZWxldGUnXSA9ICdTdXBwcmltZXInOwokbGFuZ1snY2FsX2FyZXlvdXN1cmUnXSA9ICfDinRlcy12b3VzIHPDu3IgZGUgdm91bG9pciBzdXBwcmltZXIgPyc7CiRsYW5nWydjYWxfc3VuZGF5J10gPSAnRGltYW5jaGUnOwokbGFuZ1snY2FsX21vbmRheSddID0gJ0x1bmRpJzsKJGxhbmdbJ2NhbF90dWVzZGF5J10gPSAnTWFyZGknOwokbGFuZ1snY2FsX3dlZG5lc2RheSddID0gJ01lcmNyZWRpJzsKJGxhbmdbJ2NhbF90aHVyc2RheSddID0gJ0pldWRpJzsKJGxhbmdbJ2NhbF9mcmlkYXknXSA9ICdWZW5kcmVkaSc7CiRsYW5nWydjYWxfc2F0dXJkYXknXSA9ICdTYW1lZGknOwokbGFuZ1snY2FsX3N1biddID0gJ0RpbSc7CiRsYW5nWydjYWxfbW9uJ10gPSAnTHVuJzsKJGxhbmdbJ2NhbF90dWVzJ10gPSAnTWFyJzsKJGxhbmdbJ2NhbF93ZWQnXSA9ICdNZXInOwokbGFuZ1snY2FsX3RodXJzJ10gPSAnSmV1JzsKJGxhbmdbJ2NhbF9mcmknXSA9ICdWZW4nOwokbGFuZ1snY2FsX3NhdCddID0gJ1NhbSc7CiRsYW5nWydjYWxfamFudWFyeSddID0gJ0phbnZpZXInOwokbGFuZ1snY2FsX2ZlYnJ1YXJ5J10gPSAnRsOpdnJpZXInOwokbGFuZ1snY2FsX21hcmNoJ10gPSAnTWFycyc7CiRsYW5nWydjYWxfYXByaWwnXSA9ICdBdnJpbCc7CiRsYW5nWydjYWxfbWF5J10gPSAnTWFpJzsKJGxhbmdbJ2NhbF9qdW5lJ10gPSAnSnVpbic7CiRsYW5nWydjYWxfanVseSddID0gJ0p1aWxsZXQnOwokbGFuZ1snY2FsX2F1Z3VzdCddID0gJ0Fvw7t0JzsKJGxhbmdbJ2NhbF9zZXB0ZW1iZXInXSA9ICdTZXB0ZW1icmUnOwokbGFuZ1snY2FsX29jdG9iZXInXSA9ICdPY3RvYnJlJzsKJGxhbmdbJ2NhbF9ub3ZlbWJlciddID0gJ05vdmVtYnJlJzsKJGxhbmdbJ2NhbF9kZWNlbWJlciddID0gJ0TDqWNlbWJyZSc7CiRsYW5nWydjYWxfYWRkJ10gPSAnQWpvdXQnOwokbGFuZ1snY2FsX3VwZGF0ZSddID0gJ01pc2Ugw6Agam91cic7CiRsYW5nWydjYWxfZXZlbnQnXSA9ICfDiXbDqW5lbWVudCc7CiRsYW5nWydjYWxfZGF0ZSddID0gJ0RhdGUnOwokbGFuZ1snY2FsX3N1bW1hcnknXSA9ICdTb21tYWlyZSc7CiRsYW5nWydjYWxfZGV0YWlscyddID0gJ0TDqXRhaWxzJzsKJGxhbmdbJ2NhbF9tb3JlJ10gPSAncGx1cyA+Pic7CiRsYW5nWydjYWxfcmV0dXJuJ10gPSAnUmV0b3VyJzsKJGxhbmdbJ2NhbF90byddID0gJ2F1JzsKJGxhbmdbJ2NhbF9wYXN0X2V2ZW50cyddID0gJ0V2w6luZW1lbnRzIHBhc3PDqXMnOwokbGFuZ1snY2FsX3VwY29taW5nX2V2ZW50cyddID0gJ0V2w6luZW1lbnRzIMOgIHZlbmlyJzsKJGxhbmdbJ2NhbF9hbnlfY2F0ZWdvcnknXSA9ICdOXCdpbXBvcnRlIHF1ZWxsZSBjYXTDqWdvcmllJzsKJGxhbmdbJ2NhbF9zaG93X29ubHlfZXZlbnRzX2luJ10gPSAnQWZmaWNoZXIgc2V1bGVtZW50IGxlcyDDqXbDqW5lbWVudHMgZGUgbGEgY2F0w6lnb3JpZSc7CiRsYW5nWydjYWxfZmlsdGVyX2J5J10gPSAnRmlsdHJlIHBhciA8ZW0+KGV4cHJlc3Npb24gcsOpZ3VsacOocmUpPC9lbT4nOwokbGFuZ1snY2FsX2dvJ10gPSAnQWxsZXInOwokbGFuZ1snY2FsX3RpdGxlJ10gPSAnVGl0cmUnOwokbGFuZ1snY2FsX2Zyb21kYXRlJ10gPSAnRGF0ZSBkZSBkw6lidXQnOwokbGFuZ1snY2FsX3RvZGF0ZSddID0gJ0RhdGUgZGUgZmluJzsKJGxhbmdbJ2NhbF91cGRhdGVfY2F0ZWdvcmllcyddID0gJ01pc2Ugw6Agam91ciBkZXMgY2F0w6lnb3JpZXMnOwokbGFuZ1snY2FsX2xhbmd1YWdlJ10gPSAnTGFuZ3VlJzsKJGxhbmdbJ2NhbF91cGRhdGVzZXR0aW5ncyddID0gJ01pc2Ugw6Agam91ciBkZXMgcGFyYW3DqHRyZXMnOwokbGFuZ1snY2FsX3VzZV90d2VsdmVfaG91cl9jbG9jayddID0gJ1V0aWxpc2VyIGxlIGZvcm1hdCAxMiBoZXVyZXMgZGFucyBsZXMgbWVudXMgZMOpcm91bGFudHMgZFwnaGV1cmVzID8nOwokbGFuZ1snY2FsX2RlZmF1bHRfY2F0ZWdvcnknXSA9ICdDYXTDqWdvcmllIHBhciBkw6lmYXV0JzsKJGxhbmdbJ2NhbF91cGRhdGVfZmllbGRzJ10gPSAnTWV0dHJlIMOgIGpvdXIgbGVzIGNoYW1wcyc7CiRsYW5nWydmb3JjZV9jYXRlZ29yeSddID0gJ0ZvcmNlciBhdSBtb2lucyB1bmUgY2F0w6lnb3JpZSc7CiRsYW5nWydzaG93cGFzdHllYXJzJ10gPSAnTm9tYnJlIGRcJ2FubsOpZXMgYXV0b3Jpc8OpZXMgZGFucyBsZSBwYXNzw6knOwokbGFuZ1snc2hvd2Z1dHVyZXllYXJzJ10gPSAnTm9tYnJlIGRcJ2FubsOpZXMgYXV0b3Jpc8OpZXMgZGFucyBsZSBmdXR1cic7CiRsYW5nWydoaWRlc3VtbWFyeSddID0gJ0xlIGNoYW1wIHNvbW1haXJlIGRvaXQtaWwgw6p0cmUgY2FjaMOpID8nOwokbGFuZ1snaGlkZWNvbnRlbnQnXSA9ICdMZSBjaGFtcCBjb250ZW51IGRvaXQtaWwgw6p0cmUgY2FjaMOpID8nOwokbGFuZ1snY2F0ZWdvcnlfcmVtaW5kZXInXSA9ICdWZXVpbGxleiBzw6lsZWN0aW9ubmVyIHVuZSBvdSBwbHVzaWV1cnMgY2F0w6lnb3JpZShzKSBwb3VyIGNldCDDqXbDqW5lbWVudCc7CiRsYW5nWydtb2R1bGVfZXhhbXBsZV9zdHlsZXNoZWV0J10gPSAnQ2FsZW5kcmllciAoQ0cpIDogZXhlbXBsZSBkZSBDU1MnOwokbGFuZ1snZXJyb3JfcGVybWlzc2lvbiddID0gJ1ZvdXMgYXZleiBiZXNvaW4gZGUgbGEgcGVybWlzc2lvbiBhcHByb3ByacOpZSAoJXMpIHBvdXIgYWNjw6lkZXIgw6AgY2V0dGUgZm9uY3Rpb25uYWxpdMOpJzsKJGxhbmdbJ2luc3RhbGxfcG9zdG1lc3NhZ2UnXSA9ICdBc3N1cmV6LXZvdXMgZGUgZMOpZmluaXIgbGEgcGVybWlzc2lvbiAiTW9kaWZ5IENhbGVuZGFyIiBwb3VyIGxlcyB1dGlsaXNhdGV1cnMgcXVpIGFkbWluaXN0cmVyb250IGxlcyDDqXbDqW5lbWVudHMgZGUgY2FsZW5kcmllcic7CiRsYW5nWydkZWxldGV0YWdnZWQnXSA9ICdTdXBwcmltZXIgbGVzIMOpdsOpbmVtZW50cyBzw6lsZWN0aW9ubsOpcyc7CiRsYW5nWydjb25maXJtZGVsZXRldGFnZ2VkJ10gPSAnw4p0ZXMtdm91cyBzw7tyIGRlIHZvdWxvaXIgc3VwcHJpbWVyIGNlcyDDqXbDqW5lbWVudHMgPyc7CiRsYW5nWyd0YWdnZWRkZWxldGVkJ10gPSAnTGVzIMOpdsOpbmVtZW50cyBzw6lsZWN0aW9ubsOpcyBvbnQgw6l0w6kgc3VwcHJpbcOpcyc7CiRsYW5nWyd0ZW1wbGF0ZXMnXSA9ICdHYWJhcml0cyc7CiRsYW5nWyd0ZW1wbGF0ZSddID0gJ0dhYmFyaXQnOwokbGFuZ1sndmlld19kZWZhdWx0X3N0eWxlc2hlZXQnXSA9ICdWb2lyIGxhIGZldWlsbGUgZGUgc3R5bGUgcGFyIGTDqWZhdXQnOwokbGFuZ1snZmlsZW5hbWUnXSA9ICdOb20gZGUgZmljaGllcic7CiRsYW5nWydzZXR0aW5nc3NhdmVkJ10gPSAnTGVzIHBhcmFtw6h0cmVzIG9udCDDqXTDqSBzYXV2ZWdhcmTDqXMgYXZlYyBzdWNjw6hzJzsKJGxhbmdbJ2NhdGVnb3J5ZGVsZXRlZCddID0gJ0xhIGNhdMOpZ29yaWUgYSDDqXTDqSBzdXBwcmltw6llJzsKJGxhbmdbJ2NhdGVnb3J5dXBkYXRlZCddID0gJ0xhIGNhdMOpZ29yaWUgYSDDqXTDqSBtaXNlIMOgIGpvdXInOwokbGFuZ1snY2F0ZWdvcnlhZGRlZCddID0gJ0xhIGNhdMOpZ29yaWUgYSDDqXTDqSBham91dMOpZSc7CiRsYW5nWydldmVudGRlbGV0ZWQnXSA9ICdMXCfDqXbDqW5lbWVudCBhIMOpdMOpIHN1cHByaW3DqSc7CiRsYW5nWydldmVudHVwZGF0ZWQnXSA9ICdMXCfDqXbDqW5lbWVudCBhIMOpdMOpIG1pcyDDoCBqb3VyJzsKJGxhbmdbJ2RlZmF1bHRfcGFnZV9lcnJvciddID0gJ0VycmV1ciZuYnNwOzogVm91cyBkZXZleiBkw6lmaW5pciB1bmUgcGFnZSBwYXIgZMOpZmF1dCBwb3VyIHV0aWxpc2VyIGxlIGNhbGVuZHJpZXIgbG9yc3F1ZSAicHJldHR5IFVSTHMiIGVzdCBhY3RpdsOpLiBWZXVpbGxleiBhbGxlciDDoCBsXCdvbmdsZXQgZGVzIHBhcmFtw6h0cmVzIGR1IGNhbGVuZHJpZXIgZXQgZMOpZmluaXIgdW5lIHBhZ2UgcGFyIGTDqWZhdXQuJzsKJGxhbmdbJ3RpbWVfYXQnXSA9ICfDoCc7CiRsYW5nWyd0eXBlJ10gPSAnVHlwZSc7CiRsYW5nWyduYW1lJ10gPSAnTm9tJzsKJGxhbmdbJ29yZGVyJ10gPSAnT3JkcmUnOwokbGFuZ1snZmllbGRhZGRlZCddID0gJ0NoYW1wIGFqb3V0w6kgYXZlYyBzdWNjw6hzJzsKJGxhbmdbJ2ZpZWxkZGVsZXRlZCddID0gJ0NoYW1wIHN1cHByaW3DqSc7CiRsYW5nWydmaWVsZHMnXSA9ICdDaGFtcHMgcGVyc29ubmFsaXPDqXMnOwokbGFuZ1sndGV4dGZpZWxkJ10gPSAnQ2hhbXAgdGV4dGUnOwokbGFuZ1sndXBsb2FkZmllbGQnXSA9ICdDaGFtcCBkXCd1cGxvYWQgZGUgZmljaGllcic7CiRsYW5nWydkZXNjcmlwdGlvbiddID0gJ0xlIG1vZHVsZSBDYWxlbmRyaWVyIChDRykgcGVybWV0IGRlIGfDqXJlciBldCBkXCdhZmZpY2hlciBkZXMgw6l2w6luZW1lbnRzIHN1ciB2b3RyZSBzaXRlIHdlYi4nOwokbGFuZ1snZGVmYXVsdGNhbGVuZGFycGFnZSddID0gJ1BhZ2UgcGFyIGTDqWZhdXQgcXVpIGNvbnRpZW50IGxlIGNhbGVuZHJpZXIuIENldHRlIHBhZ2UgZG9pdCBjb250ZW5pciBsYSBiYWxpc2Ugc21hcnR5IHF1aSBhcHBlbGxlIGxlIGNhbGVuZHJpZXIuIE7DqWNlc3NhaXJlIHNpIHZvdXMgdXRpbGlzZXogbGVzICJwcmV0dHkgVVJMcyIuJzsKJGxhbmdbJ3VwbG9hZGRpcmVjdG9yeSddID0gJ0Rvc3NpZXIgb8O5IGxlcyBmaWNoaWVycyB1cGxvYWTDqXMgZG9pdmVudCDDqnRyZSBzdG9ja8Opcyc7CiRsYW5nWyd1cGxvYWRmaWxldHlwZXMnXSA9ICdUeXBlcyBkZSBmaWNoaWVycyBhdXRvcmlzw6lzJzsKJGxhbmdbJ3VwbG9hZHVuaXF1ZSddID0gJ1NcJ2Fzc3VyZXIgcXVlIGxlcyBub21zIGRlIGZpY2hpZXJzIHNvaWVudCB1bmlxdWVzJzsKJGxhbmdbJ2NhbF9yZWN1cl9wZXJpb2QnXSA9ICdSw6lww6l0aXRpb24nOwokbGFuZ1snY2FsX3JlY3VyX3VudGlsJ10gPSAnUsOpcMOodGUganVzcXVcJ8OgJzsKJGxhbmdbJ2hlbHBfdGVtcGxhdGUnXSA9ICc8cD48Yj5BZmZpY2hlIGxlIG5vbSBkZSBsXCdhdXRldXIgOjwvYj48L3A+DQo8Y29kZT5BdXRldXIgOiB7JGV2ZW50LmF1dGhvcm5hbWV9PC9jb2RlPic7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/hu_HU.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudEFkZGVkJ10gPSAnTmFwdCZhYWN1dGU7ciBlc2VtJmVhY3V0ZTtueSBmZWx2JmVhY3V0ZTt0ZWxlIHV0JmFhY3V0ZTtuIGgmaWFjdXRlO3Ymb2FjdXRlO2Rpayc7CiRsYW5nWydldmVudGRlc2MtRXZlbnRFZGl0ZWQnXSA9ICdOYXB0JmFhY3V0ZTtyIGVzZW0mZWFjdXRlO255IHN6ZWtyZXN6dCZlYWN1dGU7c2UgdXQmYWFjdXRlO24gaCZpYWN1dGU7diZvYWN1dGU7ZGlrJzsKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudERlbGV0ZWQnXSA9ICdOYXB0JmFhY3V0ZTtyIGVzZW0mZWFjdXRlO255IHQmb3VtbDtybCZlYWN1dGU7c2UgdXQmYWFjdXRlO24gaCZpYWN1dGU7diZvYWN1dGU7ZGlrJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUFkZGVkJ10gPSAnS2F0ZWcmb2FjdXRlO3JpYSBsJmVhY3V0ZTt0cmVob3omYWFjdXRlO3NhIHV0JmFhY3V0ZTtuIGgmaWFjdXRlO3Ymb2FjdXRlO2Rpayc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlFZGl0ZWQnXSA9ICdLYXRlZyZvYWN1dGU7cmlhIHN6ZXJrZXN6dCZlYWN1dGU7c2UgdXQmYWFjdXRlO24gaCZpYWN1dGU7diZvYWN1dGU7ZGlrJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeURlbGV0ZWQnXSA9ICdLYXRlZyZvYWN1dGU7cmlhIHQmb3VtbDtybCZlYWN1dGU7c2UgdXQmYWFjdXRlO24gaCZpYWN1dGU7diZvYWN1dGU7ZGlrJzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudEFkZGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgZXZlbnQgaXMgYWRkZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtldmVudF90aXRsZVwmcXVvdDsgLSBFdmVudCBUaXRsZTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X3N1bW1hcnlcJnF1b3Q7IC0gU3VtbWFyeSBUZXh0PC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGV0YWlsc1wmcXVvdDsgLSBEZXRhaWxlZCBEZXNjcmlwdGlvbjwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RhdGVfc3RhcnRcJnF1b3Q7IC0gVGhlIGV2ZW50IHN0YXJ0IGRhdGUvdGltZTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RhdGVfZW5kXCZxdW90OyAtIFRoZSBldmVudCBlbmQgZGF0ZS90aW1lPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfY3JlYXRlZF9ieVwmcXVvdDsgLSBUaGUgdXNlcmlkIG9mIHRoZSBhdXRob3I8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9pZFwmcXVvdDsgLSBUaGUgZXZlbnQgaWQ8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtRXZlbnRFZGl0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBldmVudCBpcyBlZGl0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtldmVudF90aXRsZVwmcXVvdDsgLSBFdmVudCBUaXRsZTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X3N1bW1hcnlcJnF1b3Q7IC0gU3VtbWFyeSBUZXh0PC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGV0YWlsc1wmcXVvdDsgLSBEZXRhaWxlZCBEZXNjcmlwdGlvbjwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RhdGVfc3RhcnRcJnF1b3Q7IC0gVGhlIGV2ZW50IHN0YXJ0IGRhdGUvdGltZTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RhdGVfZW5kXCZxdW90OyAtIFRoZSBldmVudCBlbmQgZGF0ZS90aW1lPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfY3JlYXRlZF9ieVwmcXVvdDsgLSBUaGUgdXNlcmlkIG9mIHRoZSBhdXRob3I8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9pZFwmcXVvdDsgLSBUaGUgZXZlbnQgaWQ8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtRXZlbnREZWxldGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgZXZlbnQgaXMgZGVsZXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X2lkXCZxdW90OyAtIFRoZSBldmVudCBpZDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeUFkZGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgY2F0ZWdvcnkgaXMgYWRkZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9pZFwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgaWQ8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlFZGl0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBjYXRlZ29yeSBpcyBlZGl0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9pZFwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgaWQ8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9uYW1lXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBuYW1lPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfb3JkZXJcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IHNvcnQgb3JkZXI8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgY2F0ZWdvcnkgaXMgZGVsZXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2NhdGVnb3J5X2lkXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBpZDwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X25hbWVcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IG5hbWU8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9vcmRlclwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgc29ydCBvcmRlcjwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ21zZ19ldmVudGFkZGVkJ10gPSAnQXogZXNlbSZlYWN1dGU7bnl0IGhvenomYWFjdXRlO2FkdHVrLic7CiRsYW5nWydlcnJvcl9ub3VwbG9hZCddID0gJ0hJQkE6IE5pbmNzIGZlbHQmb3VtbDtsdHZlIGYmYWFjdXRlO2psLic7CiRsYW5nWydlcnJvcl9pbnZhbGlkZmlsZW5hbWUnXSA9ICdISUJBOiBBIGZlbHQmb3VtbDtsdCZvdW1sO3R0IGYmYWFjdXRlO2psIG5lbSBlbGZvZ2FkaGF0Jm9hY3V0ZTsnOwokbGFuZ1snZXJyb3JfcHJvYmxlbXdpdGh1cGxvYWQnXSA9ICdISUJBOiBBIGYmYWFjdXRlO2psIGZlbHQmb3VtbDtsdCZlYWN1dGU7c2UgayZvdW1sO3piZW4gaGliYSB0Jm91bWw7cnQmZWFjdXRlO250JzsKJGxhbmdbJ2Vycm9yX2ZpbGVjb3B5ZmFpbGVkJ10gPSAnSElCQTogSGliYSB0Jm91bWw7cnQmZWFjdXRlO250IG1payZvdW1sO3piZW4gYSB2JmVhY3V0ZTtnbGVnZXMgaGVseSZlYWN1dGU7cmUgbSZhYWN1dGU7c29sdHVrIGEgZiZhYWN1dGU7amx0JzsKJGxhbmdbJ2Vycm9yX2ZpbGVleGlzdHMnXSA9ICdISUJBOiBJbHllbiBuZXbFsSBmJmFhY3V0ZTtqbCBtJmFhY3V0ZTtyIGwmZWFjdXRlO3RlemlrJzsKJGxhbmdbJ2Vycm9yX2NzdmZpbGVub3Rmb3VuZCddID0gJ0hJQkE6IE5lbSB0YWwmYWFjdXRlO2xvbSBhIENTViBmJmFhY3V0ZTtqbHQnOwokbGFuZ1snZXJyb3JfY2FudG9wZW5maWxlJ10gPSAnSElCQTogTmVtIHR1ZG9tIG1lZ255aXRuaSBhIGYmYWFjdXRlO2psdCc7CiRsYW5nWydjYWxfY2FsZW5kYXInXSA9ICdOYXB0JmFhY3V0ZTtyJzsKJGxhbmdbJ2NhbF9kZXNjcmlwdGlvbiddID0gJ0xlJmlhY3V0ZTtyJmFhY3V0ZTtzJzsKJGxhbmdbJ2NhbF9hZGRldmVudCddID0gJ0VzZW0mZWFjdXRlO255IGZlbHYmZWFjdXRlO3RlbGUnOwokbGFuZ1snY2FsX2ltcG9ydF9ldmVudHMnXSA9ICdFc2VtJmVhY3V0ZTtueWVrIGltcG9ydCZhYWN1dGU7bCZhYWN1dGU7c2EnOwokbGFuZ1snY2FsX2V2ZW50cyddID0gJ0VzZW0mZWFjdXRlO255ZWsnOwokbGFuZ1snY2FsX2NhdGVnb3JpZXMnXSA9ICdLYXRlZyZvYWN1dGU7cmkmYWFjdXRlO2snOwokbGFuZ1snY2FsX2NhbGVuZGFyX3RlbXBsYXRlJ10gPSAnTmFwdCZhYWN1dGU7ciBzYWJsb24nOwokbGFuZ1snY2FsX2xpc3RfdGVtcGxhdGUnXSA9ICdMaXN0YSBzYWJsb24nOwokbGFuZ1snY2FsX3VwY29taW5nbGlzdF90ZW1wbGF0ZSddID0gJ0smdXVtbDtzeiZvdW1sO2Imb3VtbDtuICZhYWN1dGU7bGwmb2FjdXRlOyBlc2VtJmVhY3V0ZTtueWVrIHNhYmxvbmphJzsKJGxhbmdbJ2NhbF9ldmVudF90ZW1wbGF0ZSddID0gJ0VzZW0mZWFjdXRlO255IHNhYmxvbic7CiRsYW5nWydjYWxfc2V0dGluZ3MnXSA9ICdCZSZhYWN1dGU7bGwmaWFjdXRlO3QmYWFjdXRlO3Nvayc7CiRsYW5nWydjYWxfcHJldiddID0gJyZsYXF1bzsgRWzFkXrFkSc7CiRsYW5nWydjYWxfbmV4dCddID0gJ0smb3VtbDt2ZXRrZXrFkSAmcmFxdW87JzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzX3VwZGF0ZWQnXSA9ICdBIGthdGVnJm9hY3V0ZTtyaSZhYWN1dGU7a2F0IGZyaXNzJmlhY3V0ZTt0ZXR0JnV1bWw7ayc7CiRsYW5nWydjYWxfc2V0dGluZ3NfdXBkYXRlZCddID0gJ0EgYmUmYWFjdXRlO2xsJmlhY3V0ZTt0JmFhY3V0ZTtzb2thdCBmcnNzJmlhY3V0ZTt0ZXR0JnV1bWw7ayc7CiRsYW5nWydjYWxfYWRkX2V2ZW50J10gPSAnRXNlbSZlYWN1dGU7bnkgZmVsdiZlYWN1dGU7dGVsZSc7CiRsYW5nWydjYWxfZWRpdCddID0gJ1N6ZXJrZXN6dCZlYWN1dGU7cyc7CiRsYW5nWydjYWxfZGVsZXRlJ10gPSAnVCZvdW1sO3JsJmVhY3V0ZTtzJzsKJGxhbmdbJ2NhbF9hcmV5b3VzdXJlJ10gPSAnQml6dG9zYW4gdCZvdW1sO3Imb3VtbDtsbmkgYWthcm9kJzsKJGxhbmdbJ2NhbF91cGRhdGVfdGVtcGxhdGUnXSA9ICdTYWJsb24gZnJpc3MmaWFjdXRlO3QmZWFjdXRlO3NlJzsKJGxhbmdbJ2NhbF9zdW5kYXknXSA9ICdWYXMmYWFjdXRlO3JuYXAnOwokbGFuZ1snY2FsX21vbmRheSddID0gJ0gmZWFjdXRlO3RmxZEnOwokbGFuZ1snY2FsX3R1ZXNkYXknXSA9ICdLZWRkJzsKJGxhbmdbJ2NhbF93ZWRuZXNkYXknXSA9ICdTemVyZGEnOwokbGFuZ1snY2FsX3RodXJzZGF5J10gPSAnQ3MmdXVtbDt0Jm91bWw7cnQmb3VtbDtrJzsKJGxhbmdbJ2NhbF9mcmlkYXknXSA9ICdQJmVhY3V0ZTtudGVrJzsKJGxhbmdbJ2NhbF9zYXR1cmRheSddID0gJ1N6b21iYXQnOwokbGFuZ1snY2FsX3N1biddID0gJ1Zhcyc7CiRsYW5nWydjYWxfbW9uJ10gPSAnSCZlYWN1dGU7dCc7CiRsYW5nWydjYWxfdHVlcyddID0gJ0tlZCc7CiRsYW5nWydjYWxfd2VkJ10gPSAnU3plJzsKJGxhbmdbJ2NhbF90aHVycyddID0gJ0NzJnV1bWw7JzsKJGxhbmdbJ2NhbF9mcmknXSA9ICdQJmVhY3V0ZTtuJzsKJGxhbmdbJ2NhbF9zYXQnXSA9ICdTem8nOwokbGFuZ1snY2FsX2phbnVhcnknXSA9ICdqYW51JmFhY3V0ZTtyJzsKJGxhbmdbJ2NhbF9mZWJydWFyeSddID0gJ2ZlYnJ1JmFhY3V0ZTtyJzsKJGxhbmdbJ2NhbF9tYXJjaCddID0gJ20mYWFjdXRlO3JjaXVzJzsKJGxhbmdbJ2NhbF9hcHJpbCddID0gJyZhYWN1dGU7cHJpbGlzJzsKJGxhbmdbJ2NhbF9tYXknXSA9ICdtJmFhY3V0ZTtqdXMnOwokbGFuZ1snY2FsX2p1bmUnXSA9ICdqJnVhY3V0ZTtuaXVzJzsKJGxhbmdbJ2NhbF9qdWx5J10gPSAnaiZ1YWN1dGU7bGl1cyc7CiRsYW5nWydjYWxfYXVndXN0J10gPSAnYXVndXN6dHVzJzsKJGxhbmdbJ2NhbF9zZXB0ZW1iZXInXSA9ICdzemVwdGVtYmVyJzsKJGxhbmdbJ2NhbF9vY3RvYmVyJ10gPSAnb2t0Jm9hY3V0ZTtiZXInOwokbGFuZ1snY2FsX25vdmVtYmVyJ10gPSAnbm92ZW1iZXInOwokbGFuZ1snY2FsX2RlY2VtYmVyJ10gPSAnZGVjZW1iZXInOwokbGFuZ1snY2FsX2FkZCddID0gJ0hvenomYWFjdXRlO2FkJmFhY3V0ZTtzJzsKJGxhbmdbJ2NhbF91cGRhdGUnXSA9ICdGcmlzcyZpYWN1dGU7dCZlYWN1dGU7cyc7CiRsYW5nWydjYWxfZXZlbnQnXSA9ICdFc2VtJmVhY3V0ZTtueSc7CiRsYW5nWydjYWxfZGF0ZSddID0gJ0QmYWFjdXRlO3R1bSc7CiRsYW5nWydjYWxfc3VtbWFyeSddID0gJyZPdW1sO3NzemVmb2dsYWwmb2FjdXRlOyc7CiRsYW5nWydjYWxfZGV0YWlscyddID0gJ1ImZWFjdXRlO3N6bGV0ZWsnOwokbGFuZ1snY2FsX21vcmUnXSA9ICd0b3YmYWFjdXRlO2JiID4+JzsKJGxhbmdbJ2NhbF9yZXR1cm4nXSA9ICdWaXNzemEnOwokbGFuZ1snY2FsX3RvJ10gPSAnaWcnOwokbGFuZ1snY2FsX3Bhc3RfZXZlbnRzJ10gPSAnTSZ1YWN1dGU7bHRiZWxpIGVzZW0mZWFjdXRlO255ZWsnOwokbGFuZ1snY2FsX3VwY29taW5nX2V2ZW50cyddID0gJ0smdXVtbDtzeiZvdW1sO2Imb3VtbDtuICZhYWN1dGU7bGwmb2FjdXRlOyBlc2VtJmVhY3V0ZTtueWVrJzsKJGxhbmdbJ2NhbF9hbnlfY2F0ZWdvcnknXSA9ICdUZXRzesWRbGVnZXMga2F0ZWcmb2FjdXRlO3JpYSc7CiRsYW5nWydjYWxfc2hvd19vbmx5X2V2ZW50c19pbiddID0gJ0NzYWsgYXogZXplbiBpZMWRc3pha3JhIGVzxZEgZXNlbSZlYWN1dGU7bnllayBtdXRhdCZhYWN1dGU7c2E6JzsKJGxhbmdbJ2NhbF9maWx0ZXJfYnknXSA9ICdTesWxciZlYWN1dGU7c2kgZmVsdCZlYWN1dGU7dGVsJzsKJGxhbmdbJ2NhbF9nbyddID0gJ0hhZGQgbWVuamVuJzsKJGxhbmdbJ2NhbF90aXRsZSddID0gJ0MmaWFjdXRlO20nOwokbGFuZ1snY2FsX2Zyb21kYXRlJ10gPSAnS2V6ZMWRZCZhYWN1dGU7dHVtJzsKJGxhbmdbJ2NhbF90b2RhdGUnXSA9ICdCZWZlamV6xZEgZCZhYWN1dGU7dHVtJzsKJGxhbmdbJ2NhbF91cGRhdGVfY2F0ZWdvcmllcyddID0gJ0thdGVnJm9hY3V0ZTtyaSZhYWN1dGU7ayBmcmlzcyZpYWN1dGU7dCZlYWN1dGU7c2UnOwokbGFuZ1snY2FsX2xhbmd1YWdlJ10gPSAnTnllbHYnOwokbGFuZ1snY2FsX3VwZGF0ZXNldHRpbmdzJ10gPSAnQmUmYWFjdXRlO2xsJmlhY3V0ZTt0JmFhY3V0ZTtzb2sgZnJpc3MmaWFjdXRlO3QmZWFjdXRlO3NlJzsKJGxhbmdbJ2NhbF91c2VfdHdlbHZlX2hvdXJfY2xvY2snXSA9ICcxMiAmb2FjdXRlO3ImYWFjdXRlO3MgJm9hY3V0ZTtyJmFhY3V0ZTt0IGhhc3puJmFhY3V0ZTtsanVuayBhIGxlZyZvdW1sO3JkJnV1bWw7bMWRIGxpc3QmYWFjdXRlO2tiYW4/JzsKJGxhbmdbJ2NhbF9kZWZhdWx0X2NhdGVnb3J5J10gPSAnQWxhcCZlYWN1dGU7cnRlbG1lemV0dCBrYXRlZyZvYWN1dGU7cmlhJzsKJGxhbmdbJ2NhbF91cGRhdGVfZmllbGRzJ10gPSAnTWV6xZFrIGZyaXNzJmlhY3V0ZTt0JmVhY3V0ZTtzZSc7CiRsYW5nWydmb3JjZV9jYXRlZ29yeSddID0gJ0xlZ2FsJmFhY3V0ZTtiYiBlZ3kga2F0ZWcmb2FjdXRlO3JpYSBtZWdhZCZhYWN1dGU7cyZhYWN1dGU7bmFrIGsmb3VtbDt0ZWxlesWRdiZlYWN1dGU7IHQmZWFjdXRlO3RlbGUnOwokbGFuZ1snc2hvd3Bhc3R5ZWFycyddID0gJ0gmYWFjdXRlO255IG0mdWFjdXRlO2x0YmVsaSAmZWFjdXRlO3YgbWVnZW5nZWRldHQ/JzsKJGxhbmdbJ3Nob3dmdXR1cmV5ZWFycyddID0gJ0gmYWFjdXRlO255IGomb3VtbDt2xZFiZWxpICZlYWN1dGU7diBtZWdlbmdlZGV0dD8nOwokbGFuZ1snaGlkZXN1bW1hcnknXSA9ICdFbHJlanRzJnV1bWw7ayBheiAmb3VtbDtzc3plZm9nbGFsJm9hY3V0ZTsgbWV6xZF0Pyc7CiRsYW5nWydoaWRlY29udGVudCddID0gJ0VscmVqdHMmdXVtbDtrIGEgdGFydGFsb20gbWV6xZF0Pyc7CiRsYW5nWydjYXRlZ29yeV9yZW1pbmRlciddID0gJ0smZWFjdXRlO3JsZWssIGVsbGVuxZFyaXpkIGEga2F0ZWcmb2FjdXRlO3JpJmFhY3V0ZTtrYXQgZWhoZXogYXogZXNlbSZlYWN1dGU7bnloZXonOwokbGFuZ1snbW9kdWxlX2V4YW1wbGVfc3R5bGVzaGVldCddID0gJ1AmZWFjdXRlO2xkYSBuYXB0JmFhY3V0ZTtyIENTUy1yZSc7CiRsYW5nWydlcnJvcl9wZXJtaXNzaW9uJ10gPSAnTWVnZmVsZWzFkSBqb2dvc3VsdHMmYWFjdXRlO2dyYSAoJXMpIHZhbiBzeiZ1dW1sO2tzJmVhY3V0ZTtnIGV6ZW4gZnVua2Npb25hbGl0JmFhY3V0ZTtzIGVsJmVhY3V0ZTtyJmVhY3V0ZTtzJmVhY3V0ZTtoZXonOwokbGFuZ1snaW5zdGFsbF9wb3N0bWVzc2FnZSddID0gJ0d5xZF6xZFkaiBtZWcgciZvYWN1dGU7bGEsIGhvZ3kgbWVnYWR0YWQgYSAmcXVvdDtNb2RpZnkgQ2FsZW5kYXImcXVvdDsgam9nb3N1bHRzJmFhY3V0ZTtnb3QgYXpva25hayBhIGZlbGhhc3puJmFhY3V0ZTtsJm9hY3V0ZTtrbmFrLCBha2lrIGEgbmFwdCZhYWN1dGU7cmF0IGZvZ2omYWFjdXRlO2sga2FyYmFudGFydGFuaSc7CiRsYW5nWydkZWxldGV0YWdnZWQnXSA9ICdNZWdqZWwmb3VtbDtsdCBlc2VtJmVhY3V0ZTtueWVrIHQmb3VtbDtybCZlYWN1dGU7c2UnOwokbGFuZ1snY29uZmlybWRlbGV0ZXRhZ2dlZCddID0gJ0JpenRvc2FuIHQmb3VtbDtybCZvdW1sO2QgZXpla2V0IGF6IGVzZW0mZWFjdXRlO255ZWtldD8nOwokbGFuZ1sndGFnZ2VkZGVsZXRlZCddID0gJ0EgbWVnamVsJm91bWw7bHQgZXNlbSZlYWN1dGU7bnlla2V0IHQmb3VtbDtyJm91bWw7bHQmdXVtbDtrJzsKJGxhbmdbJ3RlbXBsYXRlcyddID0gJ1NhYmxvbm9rJzsKJGxhbmdbJ3RlbXBsYXRlX2hlbHAnXSA9ICdTYWJsb24gcyZ1YWN1dGU7ZyZvYWN1dGU7JzsKJGxhbmdbJ2ZpbGVfdGVtcGxhdGVzJ10gPSAnRiZhYWN1dGU7amwgc2FibG9ub2snOwokbGFuZ1snYWRkdGVtcGxhdGUnXSA9ICdTYWJsb24gaG96eiZhYWN1dGU7YWQmYWFjdXRlO3NhJzsKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnU2FibG9uJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZXRleHQnXSA9ICdTYWJsb24gbmV2ZSc7CiRsYW5nWydlZGl0dGVtcGxhdGUnXSA9ICdTYWJsb24gc3plcmtlc3p0JmVhY3V0ZTtzZSc7CiRsYW5nWydkZWxldGV0ZW1wbGF0ZSddID0gJ1NhYmxvbiB0Jm91bWw7cmwmZWFjdXRlO3NlJzsKJGxhbmdbJ25ld3RlbXBsYXRlJ10gPSAnJlVhY3V0ZTtqIHNhYmxvbiBuZXZlJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZWV4aXN0cyddID0gJ0hpYmE6IGlseWVuIG5ldsWxIHNhYmxvbiBtJmFhY3V0ZTtyIHZhbi4gSyZlYWN1dGU7cmxlaywgdiZhYWN1dGU7bGFzc3ogbSZhYWN1dGU7cyBuZXZldC4nOwokbGFuZ1sndGVtcGxhdGVpbXBvcnRlZCddID0gJ0Egc2FibG9udCBzaWtlcmVzZW4gaW1wb3J0JmFhY3V0ZTtsdHVrIGF6IGFkYXRiJmFhY3V0ZTt6aXNiYSwgbW9zdCBtJmFhY3V0ZTtyIGhhc3puJmFhY3V0ZTtsaGF0Jm9hY3V0ZTsuJzsKJGxhbmdbJ3ZpZXdfZGVmYXVsdF9zdHlsZXNoZWV0J10gPSAnQWxhcCZlYWN1dGU7cnRlbG1lemV0dCBzdCZpYWN1dGU7bHVzbGFwIG1lZ3Rla2ludCZlYWN1dGU7c2UnOwokbGFuZ1snZmlsZW5hbWUnXSA9ICdGJmFhY3V0ZTtqbG4mZWFjdXRlO3YnOwokbGFuZ1snaW1wb3J0dGVtcGxhdGUnXSA9ICdTYWJsb24gaW1wb3J0JmFhY3V0ZTtsJmFhY3V0ZTtzYSc7CiRsYW5nWyd0ZW1wbGF0ZV9kZWxldGVkJ10gPSAnQSBzYWJsb250IHNpa2VyZXNlbiB0Jm91bWw7ciZvdW1sO2x0JnV1bWw7ayBheiBhZGF0YiZhYWN1dGU7emlzYiZvYWN1dGU7bCc7CiRsYW5nWyd1cGRhdGV0ZW1wbGF0ZXN1Y2Nlc3MnXSA9ICdBIHNhYmxvbnQgc2lrZXJlc2VuIGZyaXNzJmlhY3V0ZTt0ZXR0JnV1bWw7ayc7CiRsYW5nWyd1cGRhdGV0ZW1wbGF0ZWZhaWx1cmUnXSA9ICdIaWJhIHQmb3VtbDtydCZlYWN1dGU7bnQgYSBzYWJsb24gZnJpc3MmaWFjdXRlO3QmZWFjdXRlO3NlIGsmb3VtbDt6YmVuJzsKJGxhbmdbJ3NldHRpbmdzc2F2ZWQnXSA9ICdBIGJlJmFhY3V0ZTtsbCZpYWN1dGU7dCZhYWN1dGU7c29rYXQgbWVudGV0dCZ1dW1sO2suJzsKJGxhbmdbJ2NhdGVnb3J5ZGVsZXRlZCddID0gJ0Ega2F0ZWcmb2FjdXRlO3JpJmFhY3V0ZTt0IHNpa2VyZXNlbiB0Jm91bWw7ciZvdW1sO2x0JnV1bWw7ay4nOwokbGFuZ1snY2F0ZWdvcnl1cGRhdGVkJ10gPSAnQSBrYXRlZyZvYWN1dGU7cmkmYWFjdXRlO3Qgc2lrZXJlc2VuIGZyaXNzJmlhY3V0ZTt0ZXR0JnV1bWw7ay4nOwokbGFuZ1snY2F0ZWdvcnlhZGRlZCddID0gJ0Ega2F0ZWcmb2FjdXRlO3JpJmFhY3V0ZTt0IHNpa2VyZXNlbiBob3p6JmFhY3V0ZTthZHR1ay4nOwokbGFuZ1snZXZlbnRkZWxldGVkJ10gPSAnQXogZXNlbSZlYWN1dGU7bnl0IHQmb3VtbDtyJm91bWw7bHQmdXVtbDtrLic7CiRsYW5nWydldmVudHVwZGF0ZWQnXSA9ICdBeiBlc2VtJmVhY3V0ZTt5dCBmcmlzcyZpYWN1dGU7dGV0dCZ1dW1sO2suJzsKJGxhbmdbJ2RlZmF1bHRfcGFnZV9lcnJvciddID0gJ0hpYmE6IEsmb3VtbDt0ZWxlesWRIGFsYXAmZWFjdXRlO3J0ZWxtZXpldHQgb2xkYWx0IGJlJmFhY3V0ZTtsbCZpYWN1dGU7dGFuaSwgaGEgYSBuYXB0JmFhY3V0ZTtydCBwcmV0dHkgdXJsLWVra2VsIGVneSZ1dW1sO3R0IGFrYXJvZCBoYXN6biZhYWN1dGU7bG5pLiBLJmVhY3V0ZTtybGVrLCBrYXR0aW50cyBhIG5hcHQmYWFjdXRlO3IgYmUmYWFjdXRlO2xsJmlhY3V0ZTt0JmFhY3V0ZTtzb2sgZiZ1dW1sO2xyZSwgJmVhY3V0ZTtzIHYmYWFjdXRlO2xhc3N6IGtpIGVneWV0Lic7CiRsYW5nWyd0aW1lX2F0J10gPSAnLWtvcic7CiRsYW5nWyd0eXBlJ10gPSAnVCZpYWN1dGU7cHVzJzsKJGxhbmdbJ25hbWUnXSA9ICdOJmVhY3V0ZTt2JzsKJGxhbmdbJ29yZGVyJ10gPSAnU29ycmVuZCc7CiRsYW5nWydmaWVsZGFkZGVkJ10gPSAnQSBtZXrFkXQgc2lrZXJlc2VuIGhvenomYWFjdXRlO2FkdHVrLic7CiRsYW5nWydmaWVsZGRlbGV0ZWQnXSA9ICdBIG1lesWRdCBzaWtlcmVzZW4gdCZvdW1sO3Imb3VtbDtsdCZ1dW1sO2suJzsKJGxhbmdbJ2ZpZWxkcyddID0gJ1NhaiZhYWN1dGU7dCBtZXrFkWsnOwokbGFuZ1sndGV4dGZpZWxkJ10gPSAnU3omb3VtbDt2ZWdlcyBtZXrFkSc7CiRsYW5nWyd1cGxvYWRmaWVsZCddID0gJ0YmYWFjdXRlO2psIGZlbHQmb3VtbDtsdMWRIG1lesWRJzsKJGxhbmdbJ2Rlc2NyaXB0aW9uJ10gPSAnPHA+Q2FsZW5kYXIgaXMgYSBtb2R1bGUgZm9yIGRpc3BsYXlpbmcgZXZlbnRzIG9uIHlvdXIgcGFnZS4gV2hlbiB0aGUNCgkJbW9kdWxlIGlzIGluc3RhbGxlZCwgYSBDYWxlbmRhciBhZG1pbiBwYWdlIGlzIGFkZGVkIHRvIHRoZSBjb250ZW50IG1lbnUNCgkJdGhhdCB3aWxsIGFsbG93IHlvdSB0byBtYW5hZ2UgeW91ciBldmVudHMuPC9wPic7CiRsYW5nWydkZWZhdWx0Y2FsZW5kYXJwYWdlJ10gPSAnQXogYWxhcCZlYWN1dGU7cnRlbG1lemV0dCBvbGRhbCwgYW1pIGEgTmFwdCZhYWN1dGU7cmF0IHRhcnRhbG1henphLiBFeiBrZWxsLCBob2d5IHRhcnRhbG1henpvbiBvbHlhbiBTbWFydHkgdGFnLWV0LCBhbWkgYSBOYXB0JmFhY3V0ZTtycmEgaGl2YXRrb3ppay4gSyZvdW1sO3RlbGV6xZEgYmUmYWFjdXRlO2xsJmlhY3V0ZTt0YW5pLCBoYSBwcmV0dHkgdXJsLWVrZXQgaGFzem4mYWFjdXRlO2xzei4nOwokbGFuZ1sndXBsb2FkZGlyZWN0b3J5J10gPSAnQXogYSBrJm91bWw7bnl2dCZhYWN1dGU7ciwgYWhvdmEgYSBmZWx0Jm91bWw7bHQmb3VtbDt0dCBmJmFhY3V0ZTtqbG9rIGtlciZ1dW1sO2xuZWsuJzsKJGxhbmdbJ3VwbG9hZGZpbGV0eXBlcyddID0gJ01lZ2VuZ2VkZXR0IGYmYWFjdXRlO2psdCZpYWN1dGU7cHVzb2snOwokbGFuZ1sndXBsb2FkdW5pcXVlJ10gPSAnRWd5ZWRpIGYmYWFjdXRlO2psbmV2ZWsgYml6dG9zJmlhY3V0ZTt0JmFhY3V0ZTtzYSc7CiRsYW5nWyd0aHVtYl93aWR0aCddID0gJ01pbmlhdMWxciBzeiZlYWN1dGU7bGVzcyZlYWN1dGU7Zyc7CiRsYW5nWyd0aHVtYl9oZWlnaHQnXSA9ICdNaW5pYXTFsXIgbWFnYXNzJmFhY3V0ZTtnJzsKJGxhbmdbJ2xhcmdlX3dpZHRoJ10gPSAnTm9ybSZhYWN1dGU7bCBrJmVhY3V0ZTtwIHN6JmVhY3V0ZTtsZXNzJmVhY3V0ZTtnJzsKJGxhbmdbJ2xhcmdlX2hlaWdodCddID0gJ05vcm0mYWFjdXRlO2wgayZlYWN1dGU7cCBtYWdhc3MmYWFjdXRlO2cnOwokbGFuZ1snY2FsX3JlY3VyX3BlcmlvZCddID0gJ1Zpc3N6YWhpdmF0a296JmFhY3V0ZTtzb2snOwokbGFuZ1snY2FsX3JlY3VyX3VudGlsJ10gPSAnVmlzc3phaGl2YXRrb3omYWFjdXRlO3NvayBlZGRpZzonOwokbGFuZ1snaGVscF90ZW1wbGF0ZSddID0gJzxwPjxiPlByaW50IEF1dGhvciBOYW1lOjwvYj48L3A+DQo8Y29kZT5BdXRob3I6IHskZXZlbnQuYXV0aG9ybmFtZX08L2NvZGU+DQonOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/it_IT.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2hvbGlkYXlfY29sb3JzJ10gPSAnQ29sb3JlIGZlc3Rpdml0w6AnOwokbGFuZ1sncHJvbXB0X2ljYWxfaG9saWRheXMnXSA9ICdGZWVkIGlDYWwgcGVyIGxlIGZlc3Rpdml0w6AnOwokbGFuZ1snaW5mb19pY2FsX2hvbGlkYXlzJ10gPSAnRVwnIHVzYXRvIG5lbGxhIHZpc3RhICJmdWxsY2FsZW5kYXIiIHBlciBldmlkZW56aWFyZSBsZSBmZXN0aWJpdMOgLiBOb24gY2kgc29ubyBhbHRyZSBpbnRlcmF6aW9uaSBjb24gZ2xpIGV2ZW50aSBkaSBxdWVzdG8gZmVlZC4nOwokbGFuZ1snYWxsZGF5J10gPSAnVHV0dG8gaWwgZ2lvcm5vJzsKJGxhbmdbJ2RheXZpZXcnXSA9ICdWaXRhIGdpb3Jubyc7CiRsYW5nWydlZGl0J10gPSAnTW9kaWZpY2EnOwokbGFuZ1snZXJyb3JfZmV0Y2hpbmdfZXZlbnRzJ10gPSAnT29wcy4uLiBxdWFsY29zYSBkaSBzdHJhbm8gw6ggc3VjY2Vzc28gbWVudHJlIGNvbXVuaWNhdmFtbyBjb24gaWwgc2VydmVyLCBwcm92YSBkaSBudW92byc7CiRsYW5nWydub3Jlc3VsdHMnXSA9ICdNaSBkaXNwaWFjZSwgbm9uIGNpIHNvbm8gZXZlbnRpIGNoZSBjb3JyaXNwb25kb25vIGFsIGNyaXRlcmlvIGltcG9zdGF0byc7CiRsYW5nWydoZWxwX2ZpbmRfd2hlbiddID0gJ0V2ZW50aSBwYXNzYXRpIGUgZnV0dXJpIHNvbyBzZW1wcmUgcmVhbHRpdmkgYWxsYSBkYXRhIGF0dHVhbGUnOwokbGFuZ1sncmVvcmRlciddID0gJ1Jpb3JkaW5hJzsKJGxhbmdbJ2RmbHRfY29sb3JzJ10gPSAnQ29sb3JpIHByZWRlZmluaXRpJzsKJGxhbmdbJ2VkaXRfY2F0ZWdvcnknXSA9ICdNb2RpZmljYSBjYXRlZ29yaWEnOwokbGFuZ1snZmdjb2xvciddID0gJ0NvbG9yZSB0ZXN0byc7CiRsYW5nWydiZ2NvbG9yJ10gPSAnQ29sb3JlIHNmb25kbyc7CiRsYW5nWydoZWxwX2ZpbmRfc2hvd2NoaWxkcmVuJ10gPSAnSW5kaWNhIHNlIGdsaSBldmVudGkgZmlnbGlvIGRlYmJhbm8gZXNzZXJlIGluY2x1c2kgbmVpIHJpc3VsdGF0aSBkaSByaWNlcmNhJzsKJGxhbmdbJ2hlbHBfZmluZF9ldmVudF9rZXl3b3JkJ10gPSAnSW5zZXJpc2NpIHVuYSBvIHBpw7kgcGFyb2xlIGNoaWF2ZSBwZXIgbGEgcmljZXJjYS4gSWwgdGl0b2xvIGRlbGxcJ2V2ZW50bywgc29tbWFyaW8sIGUgY2FtcGkgZGkgZGV0dGFnbGlvIHZlcnJhbm5vIHJpY2VyY2F0aSBwZXIgbGUgcGFyb2xlIGNvcnJpc3BvbmRlbnRpLic7CiRsYW5nWydpbmZvX2ZpbmRfcmVzdWx0cyddID0gJ0xlIHByaW1lIDEwIGNvcnJpc3BvbmRlbnplIGRlbGxhIHF1ZXJ5IHZlbmdvbm8gdmlzdWFsaXp6YXRlIGluIGJhc3NvLiA8YnIvPiBDbGljY2FuZG8gc3VsIHRpdG9sbyBkZWxsXCdldmVudG8gY29uc2VudGlyw6AgZGkgbW9kaWZpY2FyZSBsXCdldmVudG8uIDxici8+IENsaWNjYSBzdWxsXCdpY29uYSB2aXN0YSBwZXIgbmF2aWdhcmUgaWwgY2FsZW5kYXJpbyBhbGxhIGxhIGRhdGEgYXBwcm9zc2ltYXRpdmEgZGVsbFwnZXZlbnRvIDxlbT4gKGluIGJhc2UgYWxsYSB2aXN0YSkgPC8gZW0+JzsKJGxhbmdbJ2dvdG9fZGF0ZSddID0gJ1ZhaSBhIHF1ZXN0YSBkYXRhJzsKJGxhbmdbJ2luZm9fZmluZF9ldmVudHMnXSA9ICdDZXJjYSBldmVudGkgY29ycmlzcG9uZGVudGkuIFNhcmFubm8gcmVzdGl0dWl0aSBmaW5vIGEgMTAgZXZlbnRpIGNvcnJpc3BvbmRlbnRpLic7CiRsYW5nWydyZXN1bHRzJ10gPSAnUmlzdWx0YXRpJzsKJGxhbmdbJ2tleXdvcmRzJ10gPSAnUGFyb2xlIGNoaWF2ZSc7CiRsYW5nWydmaW5kX3Nob3djaGlsZHJlbiddID0gJ01vc3RyYSBGaWdsaSc7CiRsYW5nWydhbnknXSA9ICdRdWFsc2lhaSc7CiRsYW5nWydwYXN0J10gPSAnUGFzc2F0byc7CiRsYW5nWydmdXR1cmUnXSA9ICdGdXR1cm8nOwokbGFuZ1snZmluZF93aGVuJ10gPSAnUXVhbmRvJzsKJGxhbmdbJ2ZpbmRfcGFyZW50c29ubHknXSA9ICdTb2x0YW50byBpIGdlbml0b3JpJzsKJGxhbmdbJ2ZpbmQnXSA9ICdDZXJjYS4uLic7CiRsYW5nWydlZGl0cGFyZW50J10gPSAnTW9kaWZpY2EgZ2VuaXRvcmUnOwokbGFuZ1snaGVscF9ldmVudHN0YWInXSA9ICc8cD5MYSBzY2hlZGEgZXZlbnRpIGZvcm5pc2NlIHVuIG1vZG8gc2VtcGxpY2UgcGVyIGVzcGxvcmFyZSBnbGkgZXZlbnRpIGluIGJhc2UgYWxsYSBkYXRhLiBMYSBkYXRhIHNlbGV6aW9uYXRhIHZpZW5lIHNhbHZhdGEgPGVtPiAoaW4gdW4gY29va2llKSA8L2VtPiBwZXIgZHVlIGdpb3JuaS4gUXVlc3RhIHZpc3RhIGZvcm5pc2NlIGFuY2hlIHNlbXBsaWNpIGZ1bnppb25hbGl0w6AgZGkgZWRpdGluZyBlIGNhbmNlbGxhemlvbmUuIDwvIHA+PGJyLz48cD4gTmVsbGEgdmlzdGEgbWVzZSwgdHJhc2NpbmFuZG8gdW4gZXZlbnRvIGNhbWJpZXLDoCBpbCBnaW9ybm8gZGkgaW5pemlvIDxlbT4obWEgbm9uIGlsIHRlbXBvKS48L2VtPi4gUmlkaW1lbnNpb25hcmUgbFwnZXZlbnRvIGNhbWJpZXLDoCBsYSBkYXRhIGRpIGZpbmUgZXZlbnRvLiA8L3A+PGJyLz48cD5OZWxsYSB2aXN0YSBzZXR0aW1hbmEsIGUgZ2lvcm5vIHZlZGUgbGEgZGF0YSBkaSBpbml6aW8vb3JhIGRlbGxcJ2V2ZW50byBwdcOyIGVzc2VyZSBjYW1iaWF0YSB0cmFzY2luYW5kbyBsXCdldmVudG8uIExhIGRhdGEgZGkgZmluZS9vcmEgZGVsbFwnZXZlbnRvIHB1w7IgZXNzZXJlIGNhbWJpYXRhIHJpZGltZW5zaW9uYW5kb2xvLiBJbm9sdHJlLCBxdWVzdGUgdmlzdGEgc3VwcG9ydGFubyBsYSBjYXBhY2l0w6AgZGkgY2FtYmlhcmUgcmFwaWRhbWVudGUgdW4gZXZlbnRvIGEgdW4gZXZlbnRvIHR1dHRvIGlsIGdpb3JubyB0cmFzY2luYW5kb2xhIG5lbGxhIHpvbmEgaW4gYWx0byAiIFR1dHRvIGlsIGdpb3JubyAiLjwvIHA+PGJyLz48cD5OZXNzdW4gY29udHJvbGxvIHBlciBpIGNvbmZsaXR0aSB2ZW5nb25vIGVzZWd1aXRpIGR1cmFudGUgaWwgdHJhc2NpbmFtZW50byBldmVudGkuPC9wPic7CiRsYW5nWydwcm9tcHRfcmVtb3ZlZnJvbXBhcmVudCddID0gJ1JpbXVvdmVyZSBxdWVzdG8gZXZlbnRvIGRhbGxcJ2V2ZW50byBnZW5pdG9yZSc7CiRsYW5nWydpbmZvX3JlbW92ZWZyb21wYXJlbnQnXSA9ICdTZSBzZWxlemlvbmF0bywgcXVlc3RvIHBhcnRpY29sYXJlIGV2ZW50byBub24gc2Fyw6AgaW5mbHVlbnphdG8gZGEgZXZlbnR1YWxpIG1vZGlmaWNoZSBuZWxsXCdldmVudG8gZ2VuaXRvcmUuJzsKJGxhbmdbJ2luZm9fZWRpdF9wYXJlbnRldmVudCddID0gJzxzdHJvbmc+Tm90YTo8L3N0cm9uZz4gUXVlc3RvIGV2ZW50byBzaSB2ZXJpZmljYSBzdSB1bmEgbyBwacO5IGRhdGUgZGlmZmVyZW50aS4gU2VsZXppb25hcmUgbFwnb3B6aW9uZSBpbiBiYXNzbyBhZ2dpb3JuYSBldmVudGkgZmlnbGkgY29uIGkgZGV0dGFnbGkgZGkgcXVlc3RvIGV2ZW50by4nOwokbGFuZ1snaW5mb19lZGl0X2NoaWxkZXZlbnQnXSA9ICc8c3Ryb25nPk5vdGE6PC9zdHJvbmc+IFF1ZXN0byBldmVudG8gw6ggaWwgZmlnbGlvIGRpIHVuIGFsdHJvIGV2ZW50by4gTGUgbW9kaWZpY2hlIGFwcG9ydGF0ZSBxdWkgYXZyYW5ubyBlZmZldHRvIHNvbG8gaW4gcXVlc3RvIHBhcnRpY29sYXJlIGZpZ2xpby4gUGVyIGluZmx1ZW56YXJlIHR1dHRlIGxlIG9jY29ycmVuemUgw6ggbmVjZXNzYXJpbyBhZ2dpb3JuYXJlIGxcJ2V2ZW50byBwcmluY2lwYWxlLic7CiRsYW5nWydhbGxkYXlfZXZlbnQnXSA9ICdRdWVzdG8gw6ggdW4gZXZlbnRvIGRpIHR1dHRvIGlsIGdpb3Jubyc7CiRsYW5nWydub3RlJ10gPSAnTm90YSc7CiRsYW5nWyd0aXRsZV9wYXJlbnRfZXZlbnQnXSA9ICdRdWVzdG8gZXZlbnRvIHNpIHJpcGV0ZSwgZSBjb250aWVuZSBldmVudGkgZmlnbGlvJzsKJGxhbmdbJ3N0YXJ0J10gPSAnSW5pemlvJzsKJGxhbmdbJ2VuZCddID0gJ0ZpbmUnOwokbGFuZ1snZXZlbnRfYWN0aW9uJ10gPSAnQXppb25lIEV2ZW50byc7CiRsYW5nWydpbmZvX2V2ZW50X2FjdGlvbiddID0gJ1NlbGV6aW9uYXJlIGxcJ2F6aW9uZSBkYSBlc2VndWlyZSBzdSBxdWVzdG8gZXZlbnRvLiA8YnIvPiBMYSBtb2RpZmljYSBkZWxsXCdldmVudG8gc2kgcmVpbmRpcml6emVyw6Agc3UgdW5hIG51b3ZhIHBhZ2luYS4nOwokbGFuZ1snZXJyb3JfZGVsZXRlcGFyZW50ZXZlbnQnXSA9ICdDaSBkaXNwaWFjZSwgbWEgbm9uIMOoIHBvc3NpYmlsZSBlbGltaW5hcmUgdW4gZXZlbnRvIGdlbml0b3JlJzsKJGxhbmdbJ2NoaWxkJ10gPSAnRmlnbGlvJzsKJGxhbmdbJ3JlcGVhdHMnXSA9ICdyaXBldGl6aW9uaSc7CiRsYW5nWydlcnJvcl9ldmVudG5vdGZvdW5kJ10gPSAnRXZlbnRvIG5vbiB0cm92YXRvJzsKJGxhbmdbJ2Vycm9yX3Vua25vd24nXSA9ICdFcnJvcmUgc2Nvbm9zY2l1dG8nOwokbGFuZ1snaW5mb19jYWxfZmlsdGVyX2J5J10gPSAnUXVhbmRvIHNpIHJpY2VyY2EgPGVtPihmaWx0cm8pPC9lbT4gdHJhbWl0ZSBwYXJvbGUgbmVsIHRpdG9sbywgbG8gc2NvcnJpbWVudG8gZGVsbGUgZGF0ZSBub24gw6ggZGlzcG9uaWJpbGUnOwokbGFuZ1snbXNnX25vZGF0ZXMnXSA9ICdSaWNlcmNhIHBlciB0aXRvbG8gYXR0aXZhdGEnOwokbGFuZ1sndGl0bGVfcmVjdXJyaW5nX2V2ZW50J10gPSAnUXVlc3RvIMOoIHVuIGV2ZW50byByaXBldGl0aXZvIGNvbiBkZXJpdmF0aSc7CiRsYW5nWyd0aXRsZV9jaGlsZF9ldmVudCddID0gJ1F1ZXN0byDDqCB1biBkZXJpdmF0byBkaSB1biBlbGVtZW50byByaXBldGl0aXZvIHN1cGVyaW9yZSc7CiRsYW5nWydlcnJvcl9zb21lZGVsZXRlZCddID0gJ1BhcnRlIGRlZ2xpIGV2ZW50aSBzb25vIHN0YXRpIGVsaW1pbmF0aS4gVHV0dGF2aWEgYWxjdW5pIG5vbiBzb25vIHN0YXRpIGNhbmNlbGxhdGkgYSBjYXVzYSBkZWkgcGVybWVzc2knOwokbGFuZ1snZXJyb3Jfbm9uZWRlbGV0ZWQnXSA9ICdBIGNhdXNhIGRlaSBwZXJtZXNzaSBvIGFsdHJpIGVycm9yaSwgbmVzc3VubyBkZWdsaSBlbGVtZW50aSBzZWxlemlvbmF0aSDDqCBzdGF0byBlbGltaW5hdG8nOwokbGFuZ1snZXJyb3JfZGVsZXRlZmFpbGVkJ10gPSAnRWxpbWluYXppb25lIGRlZ2xpIGVsZW1lbnRpIGZhbGxpdGEnOwokbGFuZ1snZmlsZWF0dGFjaG1lbnQnXSA9ICdBbGxlZ2EgZmlsZSc7CiRsYW5nWydwcm9tcHRfZ2VuZXJhbF9zZXR0aW5ncyddID0gJ0ltcG9zdGF6aW9uaSBHZW5lcmFsaSc7CiRsYW5nWydwcm9tcHRfZWRpdGluZ19zZXR0aW5ncyddID0gJ0ltcG9zdGF6aW9uaSBkaSBNb2RpZmljYSBFdmVudG8nOwokbGFuZ1sncHJvbXB0X2ZlZWRpdF9zZXR0aW5ncyddID0gJ0ltcG9zdGF6aW9uaSBkaSBNb2RpZmljYSBMYXRvIFV0ZW50ZSc7CiRsYW5nWydwcmV2X21vbnRoJ10gPSAnVmFpIGFsIG1lc2UgcHJlY2VkZW50ZSc7CiRsYW5nWyduZXh0X21vbnRoJ10gPSAnVmFpIGFsIG1lc2Ugc3VjY2Vzc2l2byc7CiRsYW5nWydpbmZvX2N1c3RvbWZpZWxkc190YWInXSA9ICdJIGNhbXBpIHBlcnNvbmFsaXp6YXRpIHBvc3Nvbm8gZXNzZXJlIHJpb3JkaW5hdGkgdHJhc2NpbmFuZG8gbGUgcmlnaGUuIFNvbG8gaSBjYW1waSBkaSB0ZXN0byBzb25vIHJpY2VyY2FiaWxpIGUgc29sbyBsZSB0ZXh0IGFyZWEgcG9zc29ubyBhdmVyZSBjYW1waSBXWVNJV1lHIGFsbGVnYXRpLiA8c3Ryb25nIHN0eWxlPSJjb2xvcjogcmVkOyI+Tm90YTo8L3N0cm9uZz4gSSBjYW1waSBXWVNJV1lHIG5vbiB2ZXJyYW5ubyB2aXN1YWxpenphdGkgcGVyIGkgY2FtcGkgdGV4dCBhcmVhIGxhdG8gdXRlbnRlLic7CiRsYW5nWydtc2dfY2F0ZWdvcmllc191cGRhdGVkJ10gPSAnQ2F0ZWdvcmllIGFnZ2lvcm5hdGUnOwokbGFuZ1snbXNnX2ZpZWxkc3VwZGF0ZWQnXSA9ICdEZWZpbml6aW9uaSBkZWwgY2FtcG8gYWdnaW9ybmF0ZSc7CiRsYW5nWyd3eXNpd3lnJ10gPSAnV1lTSVdZRyc7CiRsYW5nWydpbmZvX3Jlb3JkZXJfY2F0ZWdvcmllcyddID0gJ0xcJ29yZGluZSBkZWxsZSBjYXRlZ29yaWUgcHXDsiBlc3NlcmUgZGVmaW5pdG8gdHJhc2NpbmFuZG8gbGUgcmlnaGUnOwokbGFuZ1snZXJyb3JfY2F0ZWdvcnluYW1lcm93J10gPSAnSWwgbm9tZSDDqCBzdGF0byBjYW5jZWxsYXRvIHBlciB1bmEgY2F0ZWdvcmlhIHZhbGlkYSBhbGxhIHJpZ2E6JzsKJGxhbmdbJ2NvbmZpcm1fbm9jYXRlZ29yaWVzJ10gPSAnTm9uIGFiYmlhbW8gaW5kaXZpZHVhdG8gY2F0ZWdvcmllIHZhbGlkZS4gU2lldGUgY2VydGkgZGkgdm9sZXJlIGVzZWd1aXJlIGxcJ29wZXJhemlvbmU/JzsKJGxhbmdbJ2FkZF9maWVsZCddID0gJ0FnZ2l1bmdpIENhbXBvJzsKJGxhbmdbJ2FkZF9jYXRlZ29yeSddID0gJ0FnZ2l1bmdpIENhdGVnb3JpYSc7CiRsYW5nWydwcm9tcHRfZmlyc3RkYXlvZndlZWsnXSA9ICdQcmltbyBnaW9ybm8gZGVsbGEgc2V0dGltYW5hJzsKJGxhbmdbJ2VkaXRfZXZlbnQnXSA9ICdNb2RpZmljYSBFdmVudG8nOwokbGFuZ1snZWRpdF9wYXJlbnRfZXZlbnQnXSA9ICdNb2RpZmljYSBsXCdldmVudG8gZ2VuaXRvcmUnOwokbGFuZ1snc2VsZWN0X3BlcmlvZCddID0gJ1BlcmlvZG8nOwokbGFuZ1snc2hvd19maWx0ZXInXSA9ICdNb3N0cmEgRmlsdHJvJzsKJGxhbmdbJ3Nob3dfZmlsdGVyX2FwcGxpZWQnXSA9ICdNb3N0cmEgRmlsdHJvIDxlbT4oZXNlZ3VpdG8pPC9lbT4nOwokbGFuZ1sncmVzZXQnXSA9ICdSZXNldCc7CiRsYW5nWydjYWxfY3VycmVudCddID0gJ1F1ZXN0byBQZXJpb2RvJzsKJGxhbmdbJ2NhbF9mcm9tJ10gPSAnRGEnOwokbGFuZ1snZXJyb3JfZmV1X2xvZ2dlZGluJ10gPSAnTFwndXRlbnRlIG5vbiBoYSBlZmZldHR1YXRvIGlsIGxvZ2luIGluIEZFVS4gIE5vbiDDqCBwZXJtZXNzbyBhZ2dpdW5nZXJlIG8gbW9kaWZpY2FyZSBldmVudGknOwokbGFuZ1sncHJvbXB0X2ZyaWVuZGx5bmFtZSddID0gJ05vbWUgc2VtcGxpY2UgcGVyIHF1ZXN0byBtb2R1bG8gbmVsbGEgbmF2aWdhemlvbmUgbGF0byBhbW1pbmlzdHJhdG9yZSc7CiRsYW5nWydpbmZvX2ZyaWVuZGx5bmFtZSddID0gJ05vdGEgYmVuZTogRVwnIHBvc3NpYmlsZSBjaGUgc2lhIG5lY2Vzc2FyaW8gY2FuY2VsbGFyZSBsYSBjYWNoZSBwZXJjaMOoIHF1ZXN0XCdvcHppb25lIGFiYmlhIGVmZmV0dG8uIFNlIG5vbiB2aWVuZSBpbnNlcml0byBhbGN1biB2YWxvcmUgbmUgdmVycsOgIHV0aWxpenphdG8gdW5vIHByZWRlZmluaXRvLic7CiRsYW5nWyd1c2Vfd3lzaXd5ZyddID0gJ1VzYSBlZGl0b3IgV3lzaXd5Zyc7CiRsYW5nWydlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnXSA9ICdQYXJhbWVudHJpIEluc3VmZmljaWVudGknOwokbGFuZ1snY29sdW1uX2RlbGltaXRlciddID0gJ0RlbGltaXRhdG9yZSBkaSBjb2xvbm5hIGRlbCBmaWxlIGltcG9ydGF0byc7CiRsYW5nWydpbXBvcnRfY29tcGxldGVkJ10gPSAnSW1wb3J0YXppb25lIENvbXBsZXRhdGEnOwokbGFuZ1snbnVtX2ltcG9ydGVkJ10gPSAnTnVtZXJvIGRpIGV2ZW50aSBjcmVhdGk6ICVkJzsKJGxhbmdbJ2ltcG9ydF9saW5lcyddID0gJ051bWVybyBkaSBsaW5lZSBlbGFib3JhdGUgZGFsIGZpbGU6ICVkJzsKJGxhbmdbJ2Vycm9ycyddID0gJ0Vycm9yaSc7CiRsYW5nWydlcnJvcl9jc3ZmaXJzdGxpbmVpbnZhbGlkZmllbGQnXSA9ICdDYW1wbzogJXMgbm9uIMOoIHN0YXRvIHJpY29ub3NjaXV0byBlIG5vbiDDqCB1biBjYW1wbyBwZXJzb25hbGl6emF0byc7CiRsYW5nWydpbmZvX2Nzdl9mb3JtYXQnXSA9ICc8aDQ+SW5mb3JtYXppb25pIHN1bCBmb3JtYXRvIENTVi48L2g0Pg0KPHVsPg0KICA8bGk+SW5mb3JtYXppb25pIEdlbmVyYWxpOg0KICAgPHVsPg0KICAgICA8bGk+SWwgZmlsZSBkZXZcJ2Vzc2VyZSBkaSB0aXBvIEFTQ0lJIGNvbiBmaW5lIGxpbmVhIGRpIHRpcG8gdW5peCwgZG9zLCBvIG1hYy48L2xpPg0KICAgICA8bGk+SSBjb21tZW50aSBpbml6aWFubyBjb24gLy8gPGJyIC8+T2duaSBjYXJhdHRlcmUgZG9wbyBxdWVzdGkgc3UgdW5hIHJpZ2EgdmVycmFubm8gaWdub3JhdGkgKGNvbXByZXNpIHF1ZWxsaSB0cmEgdmlyZ29sZXR0ZSBlIGFwaWNpKS48L2xpPg0KICAgICA8bGk+TGUgbGluZWUgdnVvdGUgdmVuZ29ubyBpZ25vcmF0ZS48L2xpPg0KICAgICA8bGk+SSBjYW1waSBzb25vIGRlbGltaXRhdGkgZGEgIiwiLCB0dXR0YXZpYSB1bmEgIiwiIHB1w7IgZXNzZXJlIHV0aWxpenphdGEgY29tZSB2YWxvcmUgYWxsXCdpbnRlcm5vIGRpIHVuIGNhbXBvIHNlIGlsIGNhbXBvIMOoIGRlbGltaXRhdG8gZGEgdmlyZ29sZXR0ZS48L2xpPg0KICAgICA8bGk+TGUgUmlnaGUgc29ubyBkZWxpbWl0YXRlIGRhIGNhcmF0dGVyaSBkaSBpbnRlcnJ1emlvbmUgZGkgbGluZWEgKGNvbWUgc29wcmEpLjwvbGk+DQogICA8L3VsPg0KICA8L2xpPg0KICA8bGk+VGhlIEZpZWxkIE1hcDoNCiAgIDx1bD4NCiAgICA8bGk+VGhlIGZpcnN0IGxpbmUgZGVmaW5lcyB0aGUgb3JkZXIgb2YgdGhlIGZpZWxkcywgYW5kIHdoYXQgImN1c3RvbSBmaWVsZHMiIGFyZSBkZWZpbmVkIGluIHRoZSBmaWxlLiBEYXRhIGNhbiBzdGFydCBvbiB0aGUgc2Vjb25kIG5vbi1lbXB0eSBsaW5lLCBvciBhZnRlci48L2xpPg0KICAgIDxsaT5UaGVyZXMgYXJlIHRoZSByZXF1aXJlZCBmaWVsZHM6IHN0YXJ0IHRpbWUsIGVuZCB0aW1lLCB0aXRsZSwgc3VtbWFyeSwgYW5kIGRlc2NyaXB0aW9uLiAgV2l0aG91dCBkZWZpbmluZyB0aGVzZSBmaWVsZHMgaW4gdGhlIGhlYWRlciB0aGUgaW1wb3J0IHdpbGwgbm90IHByb2NlZWQuICBSZXF1aXJlZCBmaWVsZCBuYW1lcyBhcmUgbm90IGNhc2Ugc2Vuc2l0aXZlLjwvbGk+DQogICAgPGxpPlRoZXJlIGlzIG9uZSBvcHRpb25hbCBjb2x1bW46OiAiY2F0ZWdvcnkiLiAgSWYgc3BlY2lmaWVkIGl0IGNhbiBjb250YWluIGEgOyBzZXBhcmF0ZWQgbGlzdCBvZiBjYXRlZ29yeSBuYW1lcyB0aGF0IHRoZSBldmVudCB3aWxsIGJlbG9uZyB0by48L2xpPg0KICAgPC91bD4NCiAgPC9saT4NCiAgPGxpPlRoZSBEYXRhIFJvd3M6DQogICA8dWw+DQogICAgPGxpPlRoZSBzdGFydCB0aW1lLCB0aXRsZSwgYW5kIGRlc2NyaXB0aW9uIGZpZWxkcyBtdXN0IG5vdCBiZSBlbXB0eS48L2xpPg0KPGxpPlN0YXJ0IGFuZCBFbmQgVGltZXM6PC9saT4NCiAgPHVsPg0KICAgPGxpPlN0YXJ0IHRpbWUgcHJvY2Vzc2luZyBpcyBmbGV4aWJsZS4gIFlvdSBjYW4gc3BlY2lmeSBlaXRoZXIgIFlZWVktTU0tREQgSEg6TU0gZm9ybWF0LCBvciBtYW55IGZvcm1hdHMgYXMgZGVmaW5lZCBieSB0aGUgc3RydG90aW1lIGZ1bmN0aW9uLCBpbmNsdWRpbmcgcmVsYXRpdmUgdGltZXMuICBJZiBhIHJlbGF0aXZlIHRpbWUgaXMgc3VwcGxpZWQgaXQgaXMgYXNzdW1lZCB0byBiZSByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB0aW1lLjwvbGk+DQogICA8bGk+RW5kIHRpbWUgcHJvY2Vzc2luZyBpcyBmbGV4aWJsZSwgYW5kIG1heSBiZSBlbXB0eS4gIFlvdSBjYW4gc3BlY2lmeSBlaXRoZXIgYW4gYWJzb2x1dGUgdGltZSAoaW4gdGhlIHNhbWUgZm9ybWF0IGFzIHRoZSBzdGFydCB0aW1lKSBvciBhIHJlbGF0aXZlIHRpbWUuICBJZiBhIHJlbGF0aXZlIHRpbWUgaXMgc3BlY2lmaWVkLCBpdCBpcyBhc3N1bWVkIHRvIGJlIHJlbGF0aXZlIHRvIHRoZSBzdGFydCB0aW1lLiAgIGkuZTogIis0IGhvdXJzIiB3b3VsZCBpbmRpY2F0ZSA0IGhvdXJzIGZyb20gdGhlIHN0YXJ0IHRpbWUgY29sdW1uLjwvbGk+DQogICA8bGk+SWYgdGhlIGVuZCB0aW1lIGNvbHVtZSBpcyB0aGUgc3RyaW5nICJBbGwgZGF5IiA8ZW0+KGNhc2UgaW5zZW5zaXRpdmUpPC9lbT4gaXQgd2lsbCBhc3N1bWUgYW4gYWxsIGRheSBldmVudCBmcm9tIHRoZSBzdGFydCB0aW1lLjwvbGk+DQogICA8bGk+SWYgdGhlIGVuZCB0aW1lIGNvbHVtbiBpcyBlbXB0eSwgdGhlbiBubyBlbmQgdGltZSB2YWx1ZSB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhlIGRhdGFiYXNlLjwvbGk+DQogIDwvdWw+DQo8L2xpPg0KPGxpPkNhdGVnb3JpZXMNCiAgPHVsPg0KICAgPGxpPklmIHNwZWNpZmllZCwgdGhlIGNhdGVnb3J5IGNvbHVtbiBjYW4gY29udGFpbiBhIGxpc3QgKHNlcGFyYXRlZCBieSA7KSBvZiBjYXRlZ29yeSBuYW1lcyBmb3Igd2hpY2ggdGhlIGV2ZW50IHNob3VsZCBiZWxvbmcuPC9saT4NCiAgIDxsaT5DYXRlZ29yeSBuYW1lcyBhcmUgY2FzZSBzZW5zaXRpdmUuPC9saT4NCiAgIDxsaT5DYXRlZ29yaWVzIGFyZSBub3QgY3JlYXRlZCBpZiB0aGV5IGRvIG5vdCBleGlzdC48L2xpPg0KICA8L3VsPg0KPC9saT4NCjxsaT5DdXN0b20gRmllbGRzOg0KICA8dWw+DQogICAgPGxpPkN1c3RvbSBmaWVsZCBuYW1lcyAoZXZlbiBpbiB0aGUgZmlyc3QgbGluZSB0aGF0IGRldGVybWluZXMgdGhlIGZpZWxkIG1hcHBpbmcpIGFyZSBjYXNlIHNlbnNpdGl2ZS48L2xpPg0KICAgIDxsaT5DdXRvbSBmaWVsZHMgYXJlIG5vdCBjcmVhdGVkIGlmIHNwZWNpZmllZCBpbiB0aGUgQ1NWIGZpbGUuICBVbmtub3duIGN1c3RvbSBmaWVsZCBjb2x1bW5zIHdpbGwgYmUgaWdub3JlZC48L2xpPg0KICAgIDxsaT5DdXN0b20gZmllbGRzIG9mIHR5cGUgImZpbGUiIGNhbm5vdCBiZSBpbXBvcnRlZC4gIFRoZSBlbnRpcmUgaW1wb3J0IG9wZXJhdGlvbiB3aWxsIGZhaWwuPC9saT4NCiAgPC91bD4NCiAgPC9saT4NCiAgPC91bD4NCjwvbGk+DQo8bGk+QSBzYW1wbGUgY3N2IGZpbGUgZXhpc3RzIGluIHRoZSBtb2R1bGVzIHNvdXJjZSBjb2RlIGRpcmVjdG9yeS48L2xpPg0KPC91bD4nOwokbGFuZ1sncHJvbXB0X2Nzdl9maWxlJ10gPSAnU2VsZXppb25hcmUgRmlsZSBkYSBJbXBvcnRhcmUnOwokbGFuZ1snZGVsZXRlJ10gPSAnRWxpbWluYSc7CiRsYW5nWydjZF9jb21wYW55J10gPSAnQXppZW5kYSBEaXJlY3RvcnkgQ29tcGFueSc7CiRsYW5nWydkZmx0X3VybHByZWZpeCddID0gJ1ByZWZpc3NvIFVSTCBwcmVkZWZpbml0byBwZXIgUHJldHR5IFVSTCc7CiRsYW5nWydkZmx0X2FsbGRheWV2ZW50J10gPSAnSSBudW92aSBldmVudGkgc29ubyAiVHV0dG8gaWwgZ2lvcm5vIiBkaSBkZWZhdWx0JzsKJGxhbmdbJ2RmbHRfc3RhcnR0aW1lJ10gPSAnT3JhIGRpIGluaXppbyBwcmVkZWZpbml0YSBwZXIgaSBudW92aSBldmVudGknOwokbGFuZ1snaW5mb19kZmx0X3N0YXJ0dGltZSddID0gJzxlbT4oc2kgYXBwbGljYSBzb2xvIHNlIGkgbnVvdmkgZXZlbnRpIG5vbiBzb25vICJUdXR0byBpbCBnaW9ybm8iLik8L2VtPic7CiRsYW5nWydzZWFyY2hfdHlwZSddID0gJ0NlcmNhIFRpcG8nOwokbGFuZ1snc2VhcmNoX2FueSddID0gJ0NvcnJpc3BvbmRlbnphIGRpIHF1YWxzaWFzaSB0ZXJtaW5lJzsKJGxhbmdbJ3NlYXJjaF9hbGwnXSA9ICdDb3JyaXNwb25kZW56YSBkaSB0dXR0aSBpIHRlcm1pbmknOwokbGFuZ1snc2VhcmNoYWJsZSddID0gJ1JpY2VyY2FiaWxlJzsKJGxhbmdbJ2hlbHBfcGFyYW1fZWRpdGV2ZW50dGVtcGxhdGUnXSA9ICdBcHBsaWNhYmlsZSBzb2xvIGFsbFwnYXppb25lICJteWV2ZW50cyIsIHF1ZXN0byBwYXJhbWV0cm8gcGVybWV0dGUgZGkgc3BlY2lmaWNhcmUgdW4gbW9kZWxsbyBkaSBtb2RpZmljYSBldmVudG8gbm9uIHByZWRlZmluaXRvIHF1YW5kbyB1biB1dGVudGUgY3JlYSBvIG1vZGlmaWNhIHVuIGV2ZW50byc7CiRsYW5nWydoZWxwX3BhcmFtX2VkaXRwYWdlJ10gPSAnQXBwbGljYWJpbGUgc29sbyBhbGxcJ2F6aW9uZSAibXlldmVudCIsIHF1ZXN0byBwYXJhbWV0cm8gcGVybWV0dGUgZGkgc3BlY2lmaWNhcmUgdW5hIHBhZ2luYSBkaWZmZXJlbnRlIHBlciBpbCBtb2R1bG8gZGkgbW9kaWZpY2EuJzsKJGxhbmdbJ2hlbHBfcGFyYW1fbXlldmVudHN0ZW1wbGF0ZSddID0gJ0FwcGxpY2FiaWxlIHNvbG8gYWxsXCdhemlvbmUgIm15ZXZlbnQiLCBxdWVzdG8gcGFyYW1ldHJvIHBlcm1ldHRlIGRpIHNwZWNpZmljYXJlIGxcJ3VzbyBkaSB1biBtb2RlbGxvIG5vbiBwcmVkZWZpbml0byc7CiRsYW5nWydjYWxfZWRpdF9ldmVudCddID0gJ01vZGlmaWNhIEV2ZW50byBDYWxlbmRhcmlvJzsKJGxhbmdbJ2Vycm9yX2RiZXJyb3InXSA9ICdFcnJvcmUgZGVsIERhdGFiYXNlJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ0ludmlhJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9lZGl0ZXZlbnRfdGVtcGxhdGUnXSA9ICdNb2RlbGxvIFByZWRlZmluaXRvIGRpIFNpc3RlbWEgIk1vZGlmaWNhIEV2ZW50byInOwokbGFuZ1snaW5mb19zeXNkZmx0X215ZXZlbnRzX3RlbXBsYXRlJ10gPSAnTW9kZWxsbyBQcmVkZWZpbml0byBkaSBTaXN0ZW1hICJNaWVpIEV2ZW50aSInOwokbGFuZ1sncHJvbXB0X2ZlZWRpdF9ncm91cCddID0gJ0kgbWVtYnJpIGRpIHF1ZXN0byBncnVwcG8gRkVVIHBvc3Nvbm8gYWdnaXVuZ2VyZSBldmVudGknOwokbGFuZ1sncHJvbXB0X2ZlZWRpdF9wYWdlJ10gPSAnUGFnaW5hIHByZWRlZmluaXRhIGxhdG8gdXRlbnRlIHBlciBpbCBtb2R1bG8gZGkgbW9kaWZpY2EuJzsKJGxhbmdbJ25vbmUnXSA9ICdOZXNzdW5vJzsKJGxhbmdbJ293bmVyJ10gPSAnUHJvcHJpZXRhcmlvJzsKJGxhbmdbJ2NhbF9lZGl0ZXZlbnRfdGVtcGxhdGVzJ10gPSAnTW9kZWxsaSBkZWwgTW9kdWxvIGRpIE1vZGlmaWNhIEV2ZW50byc7CiRsYW5nWydpbmZvX2VkaXRldmVudF90ZW1wbGF0ZV90YWInXSA9ICdMYSBsaXN0YSBkZWkgbW9kZWxsaSBkaXNwb25pYmlsaSBwZXIgaWwgbW9kdWxvIGRpIG1vZGlmaWNhIGV2ZW50byc7CiRsYW5nWydlZGl0ZXZlbnR0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnQWdnaXVuZ2kvbW9kaWZpY2EgdW4gTW9kZWxsbyBNb2R1bG8gZGkgTW9kaWZpY2EgRXZlbnRvJzsKJGxhbmdbJ2NhbF9teWV2ZW50c190ZW1wbGF0ZXMnXSA9ICdNb2RlbGxpIGRpIExpc3RhIE1pZWkgRXZlbnRpJzsKJGxhbmdbJ2luZm9fbXlldmVudHNfdGVtcGxhdGVfdGFiJ10gPSAnTGEgbGlzdGEgZGVpIG1vZGVsbGkgZGlzcG9uaWJpbGkgcGVyIGxhIHZpc3VhbGl6emF6aW9uZSBkaSB1bmEgbGlzdGEgZGkgZXZlbnRpIGRlbGxcJ3V0ZW50ZSc7CiRsYW5nWydteWV2ZW50c3RlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZ2dpdW5naS9Nb2RpZmljYSB1biBtb2RlbGxvIGRpIHJlcG9ydCAiTWllaSBFdmVudGkiJzsKJGxhbmdbJ2FyZXlvdXN1cmVfcmVtb3ZlY29uZmxpY3RpbmcnXSA9ICdRdWVzdGEgYXppb25lIHJpbXVvdmVyw6Agb2duaSBldmVudG8gaW4gY29uZmxpdHRvIGNvbiBldmVudGkgbm9uIHNvdnJhcHBvbmliaWxpLiBTaWV0ZSBjZXJ0aSBkaSB2b2xlcmUgcHJvY2VkZXJlPyc7CiRsYW5nWydmaWx0ZXJfY29uZmxpY3RpbmcnXSA9ICdGaWx0cmEgRXZlbnRpIGluIENvbmZsaXR0byc7CiRsYW5nWydvdmVybGFwX2FjdGlvbl9yZW1vdmUnXSA9ICdSaW11b3ZpIGV2ZW50aSBpbiBjb25mbGl0dG8gc2lsZW56aW9zYW1lbnRlJzsKJGxhbmdbJ292ZXJsYXBfYWN0aW9uX2Vycm9yJ10gPSAnVmlzdWFsaXp6YSB1biBlcnJvcmUnOwokbGFuZ1sncHJvbXB0X292ZXJsYXBfYWN0aW9uJ10gPSAnQ29zYSBkb3ZyZWJiZSBhY2NhZGVyZSBxdWFuZG8gdmllbmUgdHJvdmF0byB1biBjb25mbGl0dG8gZHVyYW50ZSBsXCdhZ2dpdW50YSBvIGxhIG1vZGlmaWNhIGRpIHVuIGV2ZW50byc7CiRsYW5nWydlcnJvcl9ldmVudF9jb25mbGljdCddID0gJ0kgdmFsb3JpIGRlbGxcJ2V2ZW50byBzcGVjaWZpY2F0byBzaSBzb3ZyYXBwb25nb25vIGNvbiB1biBldmVudG8gZXNpc3RlbnRlIGNoZSBub24gcGVybWV0dGUgY29uZmxpdHRpJzsKJGxhbmdbJ2NhbF9pbmZvX292ZXJsYXAnXSA9ICdTaSBhcHBsaWNhIHNvbG8gYWdsaSBldmVudGkgY29uIHVuYSBkYXRhIGRpIGZpbmUgKG8gZXZlbnRpIGdpb3JuYWxpZXJpKSc7CiRsYW5nWydjYWxfb3ZlcmxhcCddID0gJ1Blcm1ldHRlIGxhIHNvdnJhcHBvc2l6aW9uZSBkaSBudW92aSBldmVudGkgY29uIGlsIGNvcnJlbnRlJzsKJGxhbmdbJ3Byb21wdF9vdmVybGFwX3BvbGljeSddID0gJ0dlc3Rpb25lIFNvdnJhcHBvc2l6aW9uZSBFdmVudGknOwokbGFuZ1sncG9saWN5X2FsbCddID0gJ1R1dHRpIGdsaSBldmVudGkgc2kgcG9zc29ubyBzb3ZyYXBwb3JyZSc7CiRsYW5nWydwb2xpY3lfbm9uZSddID0gJ05lc3N1biBldmVudG8gc2kgcHXDsiBzb3ZyYXBwb3JyZSc7CiRsYW5nWydwb2xpY3lfaW5kaXZpZHVhbCddID0gJ0RlZmluaXRvIGV2ZW50byBwZXIgZXZlbnRvJzsKJGxhbmdbJ2xibF9iYWNrJ10gPSAnSW5kaWV0cm8nOwokbGFuZ1snbGJsX3RlbXBsYXRlcyddID0gJ01vZGVsbGknOwokbGFuZ1sndGV4dGFyZWEnXSA9ICdBcmVhIGRpIFRlc3RvJzsKJGxhbmdbJ2Vycm9yX2NhbGVuZGFyX2luY29tcGF0aWJsZSddID0gJ0FiYmlhbW8gdmVyaWZpY2F0byBsYSBwcmVzZW56YSBhbmNoZSBkZWwgbW9kdWxvIENhbGVuZGFyLiBRdWVzdG8gbW9kdWxvIG5vbiDDqCBjb21wYXRpYmlsZSBjb24gaWwgbW9kdWxvIENhbGVuZGFyIGUgaSBkdWUgbm9uIHBvc3Nvbm8gY29lc2lzdGVyZSBuZWxsYSBzdGVzc2EgaW5zdGFsbGF6aW9uZS4gVmkgY2hpZWRpYW1vIGRpIGRpc2luc3RhbGxhcmUgaWwgbW9kdWxvIENhbGVuZGFyLic7CiRsYW5nWydlcnJvcl9ldmVudF9ub3RfZm91bmQnXSA9ICdFdmVudF9pZCBub24gcHJlc2VudGUgbmVsIGRhdGFiYXNlLCBvcHB1cmUgY1wnw6ggcGnDuSBkaSB1biBldmVudG8gY29uIHF1ZXN0byBpZCEgKCVkKSc7CiRsYW5nWydmaXJzdF9wYWdlJ10gPSAnPDwnOwokbGFuZ1sncHJldl9wYWdlJ10gPSAnPCc7CiRsYW5nWyduZXh0X3BhZ2UnXSA9ICc+JzsKJGxhbmdbJ2xhc3RfcGFnZSddID0gJz4+JzsKJGxhbmdbJ3BhZ2Vfb2YnXSA9ICdQYWdpbmEgJWQgZGkgJWQnOwokbGFuZ1snc2VhcmNoX3Jlc3VsdHMnXSA9ICdSaXN1bHRhdGkgUmljZXJjYSBDYWxlbmRhcmlvJzsKJGxhbmdbJ3NlYXJjaF93b3JkcyddID0gJ0NlcmNhIFBhcm9sZSc7CiRsYW5nWydub19yZXN1bHRzX2ZvdW5kJ10gPSAnTmVzc3VuIHJpc3VsdGF0byBpbiBiYXNlIGFpIGNyaXRlcmkgc3BlY2lmaWNhdGknOwokbGFuZ1snZnJlcXVlbmN5J10gPSAnRnJlcXVlbnphJzsKJGxhbmdbJ3NwZWNpZmllZF9kYXRlJ10gPSAnVXNhIGxhIGRhdGEgc3BlY2lmaWNhdGEnOwokbGFuZ1snZmlyc3Rfc3VuZGF5J10gPSAnUHJpbWEgRG9tZW5pY2EgZGVsIE1lc2UnOwokbGFuZ1snZmlyc3RfbW9uZGF5J10gPSAnUHJpbW8gTHVuZWTDrCBkZWwgTWVzZSc7CiRsYW5nWydmaXJzdF90dWVzZGF5J10gPSAnUHJpbW8gTWFydGVkw6wgZGVsIE1lc2UnOwokbGFuZ1snZmlyc3Rfd2VkbmVzZGF5J10gPSAnUHJpbW8gTWVyY29sZWTDrCBkZWwgTWVzZSc7CiRsYW5nWydmaXJzdF90aHVyc2RheSddID0gJ1ByaW1vIEdpb3ZlZMOsIGRlbCBNZXNlJzsKJGxhbmdbJ2ZpcnN0X2ZyaWRheSddID0gJ1ByaW1vIFZlbmVyZMOsIGRlbCBNZXNlJzsKJGxhbmdbJ2ZpcnN0X3NhdHVyZGF5J10gPSAnUHJpbW8gU2FiYXRvIGRlbCBNZXNlJzsKJGxhbmdbJ3NlY29uZF9zdW5kYXknXSA9ICdTZWNvbmRhIERvbWVuaWNhIGRlbCBNZXNlJzsKJGxhbmdbJ3NlY29uZF9tb25kYXknXSA9ICdTZWNvbmRvIEx1bmVkw6wgZGVsIE1lc2UnOwokbGFuZ1snc2Vjb25kX3R1ZXNkYXknXSA9ICdTZWNvbmRvIE1hcnRlZMOsIGRlbCBNZXNlJzsKJGxhbmdbJ3NlY29uZF93ZWRuZXNkYXknXSA9ICdTZWNvbmRvIE1lcmNvbGVkw6wgZGVsIE1lc2UnOwokbGFuZ1snc2Vjb25kX3RodXJzZGF5J10gPSAnU2Vjb25kbyBHaW92ZWTDrCBkZWwgTWVzZSc7CiRsYW5nWydzZWNvbmRfZnJpZGF5J10gPSAnU2Vjb25kbyBWZW5lcmTDrCBkZWwgTWVzZSc7CiRsYW5nWydzZWNvbmRfc2F0dXJkYXknXSA9ICdTZWNvbmRvIFNhYmF0byBkZWwgTWVzZSc7CiRsYW5nWyd0aGlyZF9zdW5kYXknXSA9ICdUZXJ6YSBEb21lbmljYSBkZWwgTWVzZSc7CiRsYW5nWyd0aGlyZF9tb25kYXknXSA9ICdUZXJ6byBMdW5lZMOsIGRlbCBNZXNlJzsKJGxhbmdbJ3RoaXJkX3R1ZXNkYXknXSA9ICdUZXJ6byBNYXJ0ZWTDrCBkZWwgTWVzZSc7CiRsYW5nWyd0aGlyZF93ZWRuZXNkYXknXSA9ICdUZXJ6byBNZXJjb2xlZMOsIGRlbCBNZXNlJzsKJGxhbmdbJ3RoaXJkX3RodXJzZGF5J10gPSAnVGVyem8gR2lvdmVkw6wgZGVsIE1lc2UnOwokbGFuZ1sndGhpcmRfZnJpZGF5J10gPSAnVGVyem8gVmVuZXJkw6wgZGVsIE1lc2UnOwokbGFuZ1sndGhpcmRfc2F0dXJkYXknXSA9ICdUZXJ6byBTYWJhdG8gZGVsIE1lc2UnOwokbGFuZ1snZm91cnRoX3N1bmRheSddID0gJ1F1YXJ0YSBEb21lbmljYSBkZWwgTWVzZSc7CiRsYW5nWydmb3VydGhfbW9uZGF5J10gPSAnUXVhcnRvIEx1bmVkw6wgZGVsIE1lc2UnOwokbGFuZ1snZm91cnRoX3R1ZXNkYXknXSA9ICdRdWFydG8gTWFydGVkw6wgZGVsIE1lc2UnOwokbGFuZ1snZm91cnRoX3dlZG5lc2RheSddID0gJ1F1YXJ0byBNZXJjb2xlZMOsIGRlbCBNZXNlJzsKJGxhbmdbJ2ZvdXJ0aF90aHVyc2RheSddID0gJ1F1YXJ0byBHaW92ZWTDrCBkZWwgTWVzZSc7CiRsYW5nWydmb3VydGhfZnJpZGF5J10gPSAnUXVhcnRvIFZlbmVyZMOsIGRlbCBNZXNlJzsKJGxhbmdbJ2ZvdXJ0aF9zYXR1cmRheSddID0gJ1F1YXJ0byBTYWJhdG8gZGVsIE1lc2UnOwokbGFuZ1snbGFzdF9zdW5kYXknXSA9ICdVbHRpbWEgRG9tZW5pY2EgZGVsIE1lc2UnOwokbGFuZ1snbGFzdF9tb25kYXknXSA9ICdVbHRpbW8gTHVuZWTDrCBkZWwgTWVzZSc7CiRsYW5nWydsYXN0X3R1ZXNkYXknXSA9ICdVbHRpbW8gTWFydGVkw6wgZGVsIE1lc2UnOwokbGFuZ1snbGFzdF93ZWRuZXNkYXknXSA9ICdVbHRpbW8gTWVyY29sZWTDrCBkZWwgTWVzZSc7CiRsYW5nWydsYXN0X3RodXJzZGF5J10gPSAnVWx0aW1vIEdpb3ZlZMOsIGRlbCBNZXNlJzsKJGxhbmdbJ2xhc3RfZnJpZGF5J10gPSAnVWx0aW1vIFZlbmVyZMOsIGRlbCBNZXNlJzsKJGxhbmdbJ2xhc3Rfc2F0dXJkYXknXSA9ICdVbHRpbW8gU2FiYXRvIGRlbCBNZXNlJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRfcmVjdXJfbW9udGhseV9mcmVxJ10gPSAnRnJlcXVlbnphIG5vbiB2YWxpZGEuLi4gbm9uIHBvdGV0ZSB1dGlsaXp6YXJlIHNpYSBsYSBkYXRhIHNwZWNpZmljYSBjaGUgYWx0cmkgdmFsb3JpJzsKJGxhbmdbJ3NlYXJjaHJlc3VsdHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZ2dpdW5naS9Nb2RpZmljYSB1biBNb2RlbGxvIGRpIFJpc3VsdGF0byBSaWNlcmNhJzsKJGxhbmdbJ2luZm9fc2VhcmNocmVzdWx0X3RlbXBsYXRlX3RhYiddID0gJ0xhIGxpc3RhIGRlaSBNb2RlbGxpIGNoZSBzb25vIGRpc3BvbmliaWxpIHBlciBsYSB2aXN1YWxpenphemlvbmUgZGVpIHJpc3VsdGF0aSBkaSByaWNlcmNhJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9zZWFyY2hyZXN1bHRfdGVtcGxhdGUnXSA9ICdNb2RlbGxvIGRpIFJpc3VsdGF0byBSaWNlcmNhIFByZWRlZmluaXRvIGRpIFNpc3RlbWEnOwokbGFuZ1snY2FsX3NlYXJjaF9yZXN1bHRfdGVtcGxhdGVzJ10gPSAnTW9kZWxsaSBkaSBSaXN1bHRhdG8gUmljZXJjYSc7CiRsYW5nWydlcnJvcl9xdWVyeV9mYWlsZWQnXSA9ICdJbnRlcnJvZ2F6aW9uZSBEYXRhYmFzZSBGYWxsaXRhJzsKJGxhbmdbJ2Vycm9yX3NlYXJjaF9pbnZhbGlkX2RhdGVzJ10gPSAnRGF0ZSBkaSByaWNlcmNhIHNwZWNpZmljYXRlIG5vbiB2YWxpZGUnOwokbGFuZ1sndGV4dCddID0gJ1Rlc3RvJzsKJGxhbmdbJ3NlYXJjaCddID0gJ0NlcmNhJzsKJGxhbmdbJ2NhdGVnb3J5J10gPSAnQ2F0ZWdvcmlhJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9zZWFyY2hfdGVtcGxhdGUnXSA9ICdNb2RlbGxvIGRpIE1vZHVsbyBkaSBSaWNlcmNhIFByZWRlZmluaXRvIGRpIFNpc3RlbWEnOwokbGFuZ1snc2VhcmNodGVtcGxhdGVfYWRkZWRpdCddID0gJ0FnZ2l1bmdpL01vZGlmaWNhIE1vZGVsbG8gTW9kdWxvIGRpIFJpY2VyY2EnOwokbGFuZ1snaW5mb19zZWFyY2hfdGVtcGxhdGVfdGFiJ10gPSAnTGEgbGlzdGEgZGVpIG1vZGVsbGkgY2hlIHNvbm8gZGlzcG9uaWJpbGkgcGVyIGlsIG1vZHVsbyBkaSByaWNlcmNhJzsKJGxhbmdbJ2NhbF9zZWFyY2hfZm9ybV90ZW1wbGF0ZXMnXSA9ICdNb2RlbGxpIE1vZHVsbyBSaWNlcmNhJzsKJGxhbmdbJ21heCddID0gJ21hc3NpbW8nOwokbGFuZ1sndGltZXMnXSA9ICd2b2x0ZSc7CiRsYW5nWydvbiddID0gJ2EnOwokbGFuZ1snYXJleW91c3VyZV91bmluc3RhbGwnXSA9ICdTaWV0ZSBzaWN1cmkgZGkgdm9sZXJlIHByb2NlZGVyZT8gQ29udGludWFuZG8gY2FuY2VsbGVyZXRlIHBlcm1hbmVudGVtZW50ZSB0dXR0aSBpIGRhdGkgYXNzb2NpYXRpIGEgcXVlc3RvIG1vZHVsby4nOwokbGFuZ1sncG9zdF91bmluc3RhbGwnXSA9ICdJbCBtb2R1bG8gQ2FsZW5kYXIgw6ggc3RhdG8gZGlzaW5zdGFsbGF0byBlIHNvbm8gc3RhdGkgcmltb3NzaSB0dXR0aSBnbGkgZXZlbnRpIGVkIGkgdGVtcGxhdGUgYXNzb2NpYXRpIGNvbiBxdWVzdG8gbW9kdWxvJzsKJGxhbmdbJ2ZpZWxkdXBkYXRlZCddID0gJ0NhbXBvIGFnZ2lvcm5hdG8nOwokbGFuZ1snZXZlcnknXSA9ICdPZ25pJzsKJGxhbmdbJ29yJ10gPSAnbyc7CiRsYW5nWyd1cGRhdGVfY2hpbGRyZW4nXSA9ICdBZ2dpb3JuYSBnbGkgRXZlbnRpIGZpZ2xpJzsKJGxhbmdbJ2Vycm9yX25vY2F0ZWdvcnknXSA9ICdEb3ZldGUgc2VsZXppb25hcmUgYWxtZW5vIHVuYSBjYXRlZ29yaWEnOwokbGFuZ1snZXJyb3Jfbm90aGluZ3NlbGVjdGVkJ10gPSAnTm9uIMOoIHN0YXRvIHNlbGV6aW9uYXRvIG51bGxhIHBlciBsYSBjYW5jZWxsYXppb25lJzsKJGxhbmdbJ2Vycm9yX2V2ZW50b3ZlcmxhcCddID0gJ0kgcGFyYW1ldHJpIGRpIHJpcGV0aXppb25lIGRlZ2xpIGV2ZW50aSBjaGUgYXZldGUgc3BlY2lmaWNhdG8gcG90cmViYmVybyByaXN1bHRhcmUgaW4gdW5hIHNvdnJhcHBvc2l6aW9uZSBkaSBldmVudGkuJzsKJGxhbmdbJ3JlY3VycyddID0gJ1JpY29ycmUnOwokbGFuZ1snZXJyb3JfaW52YWxpZF9kYXRlcyddID0gJ1VubyBvIHBpw7kgdmFsb3JpIGRpIGRhdGEgaW5zZXJpdGkgZXJhbm8gaW52YWxpZGknOwokbGFuZ1snc3VuZGF5J10gPSAnRG9tZW5pY2EnOwokbGFuZ1snbW9uZGF5J10gPSAnTHVuZWTDrCc7CiRsYW5nWyd0dWVzZGF5J10gPSAnTWFydGVkw6wnOwokbGFuZ1snd2VkbmVzZGF5J10gPSAnTWVyY29sZWTDrCc7CiRsYW5nWyd0aHVyc2RheSddID0gJ0dpb3ZlZMOsJzsKJGxhbmdbJ2ZyaWRheSddID0gJ1ZlbmVyZMOsJzsKJGxhbmdbJ3NhdHVyZGF5J10gPSAnU2FiYXRvJzsKJGxhbmdbJ2FiYnJfc3VuZGF5J10gPSAnRG8nOwokbGFuZ1snYWJicl9tb25kYXknXSA9ICdMdSc7CiRsYW5nWydhYmJyX3R1ZXNkYXknXSA9ICdNYSc7CiRsYW5nWydhYmJyX3dlZG5lc2RheSddID0gJ01lJzsKJGxhbmdbJ2FiYnJfdGh1cnNkYXknXSA9ICdHaSc7CiRsYW5nWydhYmJyX2ZyaWRheSddID0gJ1ZlJzsKJGxhbmdbJ2FiYnJfc2F0dXJkYXknXSA9ICdTYSc7CiRsYW5nWyd3ZWVrJ10gPSAnU2V0dGltYW5hJzsKJGxhbmdbJ21vbnRoJ10gPSAnTWVzZSc7CiRsYW5nWydkYXknXSA9ICdHaW9ybm8nOwokbGFuZ1sndG9kYXknXSA9ICdPZ2dpJzsKJGxhbmdbJ3dlZWtkYXlzJ10gPSAnR2lvcm5pIHNldHRpbWFuYSc7CiRsYW5nWydwbHVyYWxfbm9uZSddID0gJ05lc3N1bm8nOwokbGFuZ1sncGx1cmFsX2RhaWx5J10gPSAnR2lvcm5pJzsKJGxhbmdbJ3BsdXJhbF93ZWVrbHknXSA9ICdTZXR0aW1hbmUnOwokbGFuZ1sncGx1cmFsX21vbnRobHknXSA9ICdNZXNpJzsKJGxhbmdbJ3BsdXJhbF95ZWFybHknXSA9ICdBbm5pJzsKJGxhbmdbJ25vJ10gPSAnTm8nOwokbGFuZ1snZGFpbHknXSA9ICdHaW9ybmFsbWVudGUnOwokbGFuZ1snd2Vla2x5J10gPSAnU2V0dGltYW5hbG1lbnRlJzsKJGxhbmdbJ21vbnRobHknXSA9ICdNZW5zaWxtZW50ZSc7CiRsYW5nWyd5ZWFybHknXSA9ICdBbm51YWxtZW50ZSc7CiRsYW5nWydpbnRlcnZhbCddID0gJ1JpcGV0aSBvZ25pJzsKJGxhbmdbJ2NhbF9yZWN1cl9kZXRhaWxzJ10gPSAnRGV0dGFnbGlvIGV2ZW50byByaWNvcnJlbnRlJzsKJGxhbmdbJ3VubGltaXRlZCddID0gJ05vbiBsaW1pdGF0byc7CiRsYW5nWydtYXhfcmVjdXJfZXZlbnRzJ10gPSAnTWFzc2ltbyBudW1lcm8gZGkgZXZlbnRpIGZpZ2xpJzsKJGxhbmdbJ3VzZV90b19kYXRlJ10gPSAnU3BlY2lmaWNhcmUgZGF0YSBkaSBmaW5lIGRpdmVyc2E/JzsKJGxhbmdbJ2NhbmNlbCddID0gJ0NhbmNlbGxhJzsKJGxhbmdbJ3Nob3dfY2hpbGRfZXZlbnRzJ10gPSAnTW9zdHJhIEV2ZW50aSBmaWdsaSA8ZW0+KHBvdHJlYmJlIHJlc3RpdHVpcmUgdW5hIHNjaGVybWF0YSBtb2x0byBsdW5nYSk8L2VtPic7CiRsYW5nWyduL2EnXSA9ICduL2QnOwokbGFuZ1sncmVjdXJzX3VudGlsJ10gPSAnUmlwZXRpIGZpbm8nOwokbGFuZ1sncGFyZW50J10gPSAnR2VuaXRvcmUnOwokbGFuZ1sncmVjdXJfcGVyaW9kJ10gPSAnUGVyaW9kbyBkaSByaWNvcnNpb25lJzsKJGxhbmdbJ2ZpbHRlciddID0gJ0ZpbHRybyc7CiRsYW5nWydzdGFydF9kYXRlJ10gPSAnRGF0YSBwYXJ0ZW56YSc7CiRsYW5nWydlbmRfZGF0ZSddID0gJ0RhdGEgYXJyaXZvJzsKJGxhbmdbJ2luZm9fdXBjb21pbmdsaXN0X3RlbXBsYXRlX3RhYiddID0gJ0xhIGxpc3RhIGRlaSB0ZW1wbGF0ZSBjaGUgc29ubyB1dGlsaXp6YWJpbGkgcGVyIGdsaSBldmVudGkgaW1taW5lbnRpJzsKJGxhbmdbJ3VwY29taW5nbGlzdHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZ2dpdW5naS9Nb2RpZmljYSB1biBNb2RlbGxvIHBlciBsYSB2aXN1YWxpenphemlvbmUgVXBjb21pbmdsaXN0IChwcm9zc2ltaSBldmVudGkpJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICdNb2RlbGxvIFByZWRlZmluaXRvIGRpIFNpc3RlbWEgcGVyIGxhIHZpc3VhbGl6emF6aW9uZSBVcGNvbWluZ2xpc3QgKHByb3NzaW1pIGV2ZW50aSknOwokbGFuZ1snaW5mb19saXN0X3RlbXBsYXRlX3RhYiddID0gJ0xhIGxpc3RhIGRlaSBtb2RlbGxpIGNoZSBzb25vIGRpc3BvbmliaWxpIHBlciBsYSB2aXN0YSBkaSBsaXN0ZSc7CiRsYW5nWydsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ0FnZ2l1bmdpL01vZGlmaWNhIHVuIE1vZGVsbG8gcGVyIGxhIHZpc3VhbGl6emF6aW9uZSBMaXN0IChsaXN0YSknOwokbGFuZ1snaW5mb19zeXNkZmx0X2xpc3RfdGVtcGxhdGUnXSA9ICdNb2RlbGxvIFByZWRlZmluaXRvIGRpIFNpc3RlbWEgcGVyIGxhIHZpc3VhbGl6emF6aW9uZSBMaXN0IChsaXN0YSknOwokbGFuZ1snaW5mb19ldmVudF90ZW1wbGF0ZV90YWInXSA9ICdMYSBsaXN0YSBkZWkgbW9kZWxsaSBjaGUgc29ubyBkaXNwb25pYmlsaSBwZXIgbGEgdmlzdGEgZGkgZXZlbnRpJzsKJGxhbmdbJ2V2ZW50dGVtcGxhdGVfYWRkZWRpdCddID0gJ0FnZ2l1bmdpL01vZGlmaWNhIHVuIE1vZGVsbG8gcGVyIGxhIHZpc3VhbGl6emF6aW9uZSBFdmVudCAoZXZlbnRvKSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfZXZlbnRfdGVtcGxhdGUnXSA9ICdNb2RlbGxvIFByZWRlZmluaXRvIGRpIFNpc3RlbWEgcGVyIGxhIHZpc3VhbGl6emF6aW9uZSBFdmVudCAoZXZlbnRvKSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfZnVsbGNhbGVuZGFyX3RlbXBsYXRlJ10gPSAnTW9kZWxsbyBwcmVkZWZpbml0byBwZXIgbGEgdmlzdWFsaXp6YXppb25lIGZ1bGxDYWxlbmRhcic7CiRsYW5nWydpbmZvX2NhbGVuZGFyX3RlbXBsYXRlX3RhYiddID0gJ0xhIGxpc3RhIGRlaSBtb2RlbGxpIGNoZSBzb25vIGRpc3BvbmliaWxpIHBlciBsYSB2aXN0YSBkaSBjYWxlbmRhcmknOwokbGFuZ1snaW5mb19mdWxsY2FsZW5kYXJfdGVtcGxhdGVfdGFiJ10gPSAnTGEgbGlzdGEgZGVpIG1vZGVsbGkgY2hlIHNvbm8gZGlzcG9uaWJpbGkgcGVyIGxhIHZpc3RhIGZ1bGxDYWxlbmRhcic7CiRsYW5nWydmdWxsY2FsZW5kYXJ0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnQWdnaXVuZ2kvTW9kaWZpY2EgdW4gTW9kZWxsbyBwZXIgbGEgdmlzdWFsaXp6YXppb25lIGZ1bGxDYWxlbmRhcic7CiRsYW5nWydjYWxlbmRhcnRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZ2dpdW5naS9Nb2RpZmljYSB1biBNb2RlbGxvIHBlciBsYSB2aXN1YWxpenphemlvbmUgQ2FsZW5kYXIgKGNhbGVuZGFyaW8pJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ01vZGVsbG8gUHJlZGVmaW5pdG8gZGkgU2lzdGVtYSBwZXIgbGEgdmlzdWFsaXp6YXppb25lIENhbGVuZGFyIChjYWxlbmRhcmlvKSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfdGVtcGxhdGUnXSA9ICdRdWVzdG8gbW9kdWxvIGRlZmluaXNjZSBpbCBtb2RlbGxvIGNoZSBzYXLDoCB1dGlsaXp6YXRvIHF1YW5kbyBjbGljY2F0ZSBzdSAiTnVvdm8gTW9kZWxsbyIgbmVsbGEgc2NoZWRhIGFwcHJvcHJpYXRhLiAgTW9kaWZpY2FyZSBxdWVzdG8gdmFsb3JlIG5vbiBhdnLDoCBlZmZldHRpIGltbWVkaWF0aSBzdWxsZSB2aXN1YWxpenphemlvbmkgZ2VuZXJhdGUgZGEgcXVlc3RvIG1vZHVsby4nOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50QWRkZWQnXSA9ICdDaGlhbWF0byBkb3BvIGF2ZXIgYWdnaXVudG8gdW4gZXZlbnRvIGFsIGNhbGVuZGFyaW8nOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RWRpdGVkJ10gPSAnQ2hpYW1hdG8gZG9wbyBhdmVyIG1vZGlmaWNhdG8gdW4gZXZlbnRvIGVzaXN0ZW50ZSc7CiRsYW5nWydldmVudGRlc2MtRXZlbnREZWxldGVkJ10gPSAnQ2hpYW1hdG8gZG9wbyBhdmVyIGVsaW1pbmF0byB1biBldmVudG8nOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5QWRkZWQnXSA9ICdDaGlhbWF0byBkb3BvIGxhIGNyZWF6aW9uZSBkaSB1bmEgY2F0ZWdvcmlhJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUVkaXRlZCddID0gJ0NoaWFtYXRvIGRvcG8gYXZlciBtb2RpZmljYXRvIHVuYSBjYXRlZ29yaWEnOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5RGVsZXRlZCddID0gJ0NoaWFtYXRvIGRvcG8gYXZlciBlbGltaW5hdG8gdW5hIGNhdGVnb3JpYSc7CiRsYW5nWydldmVudGhlbHAtRXZlbnRBZGRlZCddID0gJzxwPkludmlhdG8gcXVhbmRvIHZpZW5lIGFnZ2l1bnRvIHVuIGV2ZW50byBhbCBjYWxlbmRhcmlvLjwvcD4NCjxoND5QYXJhbWV0ZXJpPC9oND4NCjx1bD4NCjxsaT5cImV2ZW50X3RpdGxlXCIgLSBUaXRvbG8gZXZlbnRvPC9saT4NCjxsaT5cImV2ZW50X3N1bW1hcnlcIiAtIFNvbW1hcmlvPC9saT4NCjxsaT5cImV2ZW50X2RldGFpbHNcIiAtIERldHRhZ2xpbzwvbGk+DQo8bGk+XCJldmVudF9kYXRlX3N0YXJ0XCIgLSBEYXRhIGUgb3JhIGRlbGxcJ2luaXppbyBkZWxsXCdldmVudG88L2xpPg0KPGxpPlwiZXZlbnRfZGF0ZV9lbmRcIiAtIERhdGEgZSBvcmEgZGVsbGEgZmluZSBkZWxsXCdldmVudG88L2xpPg0KPGxpPlwiZXZlbnRfY3JlYXRlZF9ieVwiIC0gTGEgdXNlcmlkIGRlbGxcJ2F1dG9yZTwvbGk+DQo8bGk+XCJldmVudF9pZFwiIC0gaWQgZGVsbFwnZXZlbnRvPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudEVkaXRlZCddID0gJzxwPkludmlhdG8gcXVhbmRvIHZpZW5lIG1vZGlmaWNhdG8gdW4gZXZlbnRvIGVzaXN0ZW50ZS48L3A+DQo8aDQ+UGFyYW1ldGVyaTwvaDQ+DQo8dWw+DQo8bGk+XCJldmVudF90aXRsZVwiIC0gVGl0b2xvIGV2ZW50bzwvbGk+DQo8bGk+XCJldmVudF9zdW1tYXJ5XCIgLSBTb21tYXJpbzwvbGk+DQo8bGk+XCJldmVudF9kZXRhaWxzXCIgLSBEZXR0YWdsaW88L2xpPg0KPGxpPlwiZXZlbnRfZGF0ZV9zdGFydFwiIC0gRGF0YSBlIG9yYSBkZWxsXCdpbml6aW8gZGVsbFwnZXZlbnRvPC9saT4NCjxsaT5cImV2ZW50X2RhdGVfZW5kXCIgLSBEYXRhIGUgb3JhIGRlbGxhIGZpbmUgZGVsbFwnZXZlbnRvPC9saT4NCjxsaT5cImV2ZW50X2NyZWF0ZWRfYnlcIiAtIExhIHVzZXJpZCBkZWxsXCdhdXRvcmU8L2xpPg0KPGxpPlwiZXZlbnRfaWRcIiAtIGlkIGRlbGxcJ2V2ZW50bzwvbGk+DQo8L3VsPic7CiRsYW5nWydldmVudGhlbHAtRXZlbnREZWxldGVkJ10gPSAnPHA+SW52aWF0byBxdWFuZG8gdmllbmUgZWxpbWluYXRvIHVuIGV2ZW50by48L3A+DQo8aDQ+UGFyYW1ldGVyaTwvaDQ+DQo8dWw+DQo8bGk+XCJldmVudF9pZFwiIC0gaWQgZGVsbFwnZXZlbnRvPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeUFkZGVkJ10gPSAnPHA+SW52aWF0byBxdWFuZG8gdmllbmUgYWdnaXVudGEgdW5hIGNhdGVnb3JpYS48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCJjYXRlZ29yeV9pZFwiIC0gaWQgZGVsbGEgY2F0ZWdvcmlhPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeUVkaXRlZCddID0gJzxwPkludmlhdG8gcXVhbmRvIHZpZW5lIG1vZGlmaWNhdGEgdW5hIGNhdGVnb3JpYS48L3A+DQo8aDQ+UGFyYW1ldGVyaTwvaDQ+DQo8dWw+DQo8bGk+XCJjYXRlZ29yeV9pZFwiIC0gaWQgZGVsbGEgY2F0ZWdvcmlhPC9saQ0KPGxpPlwiY2F0ZWdvcnlfbmFtZVwiIC0gTm9tZSBkZWxsYSBjYXRlZ29yaWE8L2xpPg0KPGxpPlwiY2F0ZWdvcnlfb3JkZXJcIiAtIFBvc2l6aW9uZSBkZWxsYSBjYXRlZ29yaWEgbmVsbFwnb3JkaW5hbWVudG88L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5RGVsZXRlZCddID0gJzxwPkludmlhdG8gcXVhbmRvIHZpZW5lIGVsaW1pbmF0YSB1bmEgY2F0ZWdvcmlhLjwvcD4NCjxoND5QYXJhbWV0ZXJpPC9oND4NCjx1bD4NCjxsaT5cImNhdGVnb3J5X2lkXCIgLSBpZCBkZWxsYSBjYXRlZ29yaWE8L2xpDQo8bGk+XCJjYXRlZ29yeV9uYW1lXCIgLSBOb21lIGRlbGxhIGNhdGVnb3JpYTwvbGk+DQo8bGk+XCJjYXRlZ29yeV9vcmRlclwiIC0gUG9zaXppb25lIGRlbGxhIGNhdGVnb3JpYSBuZWxsXCdvcmRpbmFtZW50bzwvbGk+DQo8L3VsPic7CiRsYW5nWydlcnJvcl9jc3ZfaW5zZXJ0J10gPSAnRXJyb3JlIGR1cmFudGUgbFwnaW1wb3J0YXppb25lIGRpIGV2ZW50aSBkYSBjc3YgYWxsYSBsaW5lYSAlZCc7CiRsYW5nWydlcnJvcl9jc3ZmaXJzdGxpbmVmbGRub3Rmb3VuZCddID0gJ1VuIGNhbXBvIHJpY2hpZXN0byAoICVzICkgbm9uIMOoIHN0YXRvIHRyb3ZhdG8gbmVsbGEgcmlnYSBkaSBpbnRlc3RhemlvbmUgZGVsIGZpbGUgY3N2JzsKJGxhbmdbJ2Vycm9yX2NzdmludmFsaWRmaXJzdGxpbmUnXSA9ICdOb24gw6ggcG9zc2liaWxlIGluZGl2aWR1YXJlIHVuYSBwcmltYSByaWdhIHZhbGlkYSBuZWwgZmlsZSBDU1YnOwokbGFuZ1snbXNnX2V2ZW50YWRkZWQnXSA9ICdFdmVudG8gYWdnaXVudG8nOwokbGFuZ1snZXJyb3Jfbm9ldmVudG5hbWUnXSA9ICdVbiBub21lIHBlciBsXCdldmVudG8gw6ggcmljaGllc3RvJzsKJGxhbmdbJ2Vycm9yX25vdXBsb2FkJ10gPSAnRVJST1JFOiBOb24gw6ggc3RhdG8gdHJvdmF0byBhbGN1biBmaWxlIGNhcmljYXRvJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRmaWxlbmFtZSddID0gJ0VSUk9SRTogSWwgZmlsZSBjYXJpY2F0byBub24gcHXDsiBlc3NlcmUgYWNjZXR0YXRvJzsKJGxhbmdbJ2Vycm9yX3Byb2JsZW13aXRodXBsb2FkJ10gPSAnRVJST1JFOiBFXCcgYXZ2ZW51dG8gdW4gcHJvYmxlbWEgZHVyYW50ZSBpbCBjYXJpY2FtZW50byBkZWwgZmlsZSc7CiRsYW5nWydlcnJvcl9maWxlY29weWZhaWxlZCddID0gJ0VSUk9SRTogRVwnIGF2dmVudXRvIHVuIHByb2JsZW1hIG1lbnRyZSBpbCBmaWxlIHZlbml2YSBjb3BpYXRvIG5lbGxhIHN1YSBkZXN0aW5hemlvbmUgZmluYWxlJzsKJGxhbmdbJ2Vycm9yX2ZpbGVleGlzdHMnXSA9ICdFUlJPUkU6IEVzaXN0ZSBnacOgIHVuIGZpbGUgY29uIHF1ZWwgbm9tZSc7CiRsYW5nWydlcnJvcl9jc3ZmaWxlbm90Zm91bmQnXSA9ICdFUlJPUkU6IE5vbiBwb3NzbyB0cm92YXJlIGlsIGZpbGUgQ1NWJzsKJGxhbmdbJ2Vycm9yX2NhbnRvcGVuZmlsZSddID0gJ0VSUk9SRTogTm9uIHBvc3NvIGFwcmlyZSBpbCBmaWxlJzsKJGxhbmdbJ2Vycm9yX2NhdGVnb3J5ZXhpc3RzJ10gPSAnRVJST1JFOiBVbmEgY2F0ZWdvcmlhIGNvbiBpbCBub21lICVzIGdpw6AgZXNpc3RlJzsKJGxhbmdbJ2NhbF9pZCddID0gJ0lEJzsKJGxhbmdbJ2NhbF9mdWxsY2FsZW5kYXJfdGVtcGxhdGUnXSA9ICdNb2RlbGxpIGZ1bGxDYWxlbmRhcic7CiRsYW5nWydjYWxfY2FsZW5kYXInXSA9ICdDYWxlbmRhcmlvJzsKJGxhbmdbJ2NhbF9kZWZhdWx0X3RlbXBsYXRlcyddID0gJ1RlbXBsYXRlIHByZWRlZmluaXRpJzsKJGxhbmdbJ2NhbF9kZXNjcmlwdGlvbiddID0gJ0FnZ2l1bmdlLCBtb2RpZmljYSBlIHJpbXVvdmUgZXZlbnRpJzsKJGxhbmdbJ2NhbF9hZGRldmVudCddID0gJ0FnZ2l1bmdpIEV2ZW50aSc7CiRsYW5nWydjYWxfaW1wb3J0X2V2ZW50cyddID0gJ0ltcG9ydGEgRXZlbnRpJzsKJGxhbmdbJ2NhbF9ldmVudHMnXSA9ICdFdmVudGknOwokbGFuZ1snY2FsX2NhdGVnb3JpZXMnXSA9ICdDYXRlZ29yaWUnOwokbGFuZ1snY2FsX2NhbGVuZGFyX3RlbXBsYXRlJ10gPSAnTW9kZWxsbyBkZWwgY2FsZW5kYXJpbyc7CiRsYW5nWydjYWxfbGlzdF90ZW1wbGF0ZSddID0gJ01vZGVsbG8gZGVsbGEgbGlzdGEnOwokbGFuZ1snY2FsX3VwY29taW5nbGlzdF90ZW1wbGF0ZSddID0gJ01vZGVsbG8gZGkgZXZlbnRvIGltbWluZW50ZSc7CiRsYW5nWydjYWxfZXZlbnRfdGVtcGxhdGUnXSA9ICdNb2RlbGxvIGRlZ2xpIGV2ZW50aSc7CiRsYW5nWydjYWxfc2V0dGluZ3MnXSA9ICdDb25maWd1cmF6aW9uaSc7CiRsYW5nWydjYWxfcHJldiddID0gJ8KrIFByZWNlZGVudGUnOwokbGFuZ1snY2FsX25leHQnXSA9ICdQcm9zc2ltbyDCuyc7CiRsYW5nWydjYWxfY2F0ZWdvcmllc191cGRhdGVkJ10gPSAnQ2F0ZWdvcmllIGFnZ2lvcm5hdGUnOwokbGFuZ1snY2FsX3NldHRpbmdzX3VwZGF0ZWQnXSA9ICdDb25maWd1cmF6aW9uaSBhZ2dpb3JuYXRlJzsKJGxhbmdbJ2NhbF9hZGRfZXZlbnQnXSA9ICdBZ2dpdW5naSBldmVudG8nOwokbGFuZ1snY2FsX2VkaXQnXSA9ICdNb2RpZmljYSc7CiRsYW5nWydjYWxfZGVsZXRlJ10gPSAnQ2FuY2VsbGEnOwokbGFuZ1snY2FsX2FyZXlvdXN1cmUnXSA9ICdTZWkgc2ljdXJvIGRpIHZvbGVyIGNhbmNlbGxhcmUnOwokbGFuZ1snY2FsX3VwZGF0ZV90ZW1wbGF0ZSddID0gJ0FnZ2lvcm5hbWVudG8gTW9kZWxsbyc7CiRsYW5nWydjYWxfc3VuZGF5J10gPSAnRG9tZW5pY2EnOwokbGFuZ1snY2FsX21vbmRheSddID0gJ0x1bmVkw6wnOwokbGFuZ1snY2FsX3R1ZXNkYXknXSA9ICdNYXJ0ZWTDrCc7CiRsYW5nWydjYWxfd2VkbmVzZGF5J10gPSAnTWVyY29sZWTDrCc7CiRsYW5nWydjYWxfdGh1cnNkYXknXSA9ICdHaW92ZWTDrCc7CiRsYW5nWydjYWxfZnJpZGF5J10gPSAnVmVuZXJkw6wnOwokbGFuZ1snY2FsX3NhdHVyZGF5J10gPSAnU2FiYXRvJzsKJGxhbmdbJ2NhbF9zdW4nXSA9ICdEb20nOwokbGFuZ1snY2FsX21vbiddID0gJ0x1bic7CiRsYW5nWydjYWxfdHVlcyddID0gJ01hcic7CiRsYW5nWydjYWxfd2VkJ10gPSAnTWVyJzsKJGxhbmdbJ2NhbF90aHVycyddID0gJ0dpbyc7CiRsYW5nWydjYWxfZnJpJ10gPSAnVmVuJzsKJGxhbmdbJ2NhbF9zYXQnXSA9ICdTYWInOwokbGFuZ1snY2FsX2phbnVhcnknXSA9ICdHZW5uYWlvJzsKJGxhbmdbJ2NhbF9mZWJydWFyeSddID0gJ0ZlYmJyYWlvJzsKJGxhbmdbJ2NhbF9tYXJjaCddID0gJ01hcnpvJzsKJGxhbmdbJ2NhbF9hcHJpbCddID0gJ0FwcmlsZSc7CiRsYW5nWydjYWxfbWF5J10gPSAnTWFnZ2lvJzsKJGxhbmdbJ2NhbF9qdW5lJ10gPSAnR2l1Z25vJzsKJGxhbmdbJ2NhbF9qdWx5J10gPSAnTHVnbGlvJzsKJGxhbmdbJ2NhbF9hdWd1c3QnXSA9ICdBZ29zdG8nOwokbGFuZ1snY2FsX3NlcHRlbWJlciddID0gJ1NldHRlbWJyZSc7CiRsYW5nWydjYWxfb2N0b2JlciddID0gJ090dG9icmUnOwokbGFuZ1snY2FsX25vdmVtYmVyJ10gPSAnTm92ZW1icmUnOwokbGFuZ1snY2FsX2RlY2VtYmVyJ10gPSAnRGljZW1icmUnOwokbGFuZ1snY2FsX2FkZCddID0gJ0FnZ2lvcm5hJzsKJGxhbmdbJ2NhbF91cGRhdGUnXSA9ICdBZ2dpdW5naSc7CiRsYW5nWydjYWxfZXZlbnQnXSA9ICdFdmVudG8nOwokbGFuZ1snY2FsX2RhdGUnXSA9ICdEYXRhJzsKJGxhbmdbJ2NhbF9zdW1tYXJ5J10gPSAnU29tbWFyaW8nOwokbGFuZ1snY2FsX2RldGFpbHMnXSA9ICdEZXR0YWdsaW8nOwokbGFuZ1snY2FsX21vcmUnXSA9ICdhbHRybyA+Pic7CiRsYW5nWydjYWxfcmV0dXJuJ10gPSAnUml0b3Jubyc7CiRsYW5nWydjYWxfdG8nXSA9ICdhJzsKJGxhbmdbJ2NhbF9wYXN0X2V2ZW50cyddID0gJ0V2ZW50aSBwYXNzYXRpJzsKJGxhbmdbJ2NhbF91cGNvbWluZ19ldmVudHMnXSA9ICdFdmVudGkgZnV0dXJpJzsKJGxhbmdbJ2NhbF9hbnlfY2F0ZWdvcnknXSA9ICdRdWFsc2lhc2kgY2F0ZWdvcmlhJzsKJGxhbmdbJ2NhbF9zaG93X29ubHlfZXZlbnRzX2luJ10gPSAnTW9zdHJhIHNvbG8gZ2xpIGV2ZW50aSBpbic7CiRsYW5nWydjYWxfZmlsdGVyX2J5J10gPSAnRmlsdHJhIFRpdG9sbyBwZXIgPGVtPihyZWdleCk8L2VtPic7CiRsYW5nWydjYWxfZ28nXSA9ICdWYWknOwokbGFuZ1snY2FsX3RpdGxlJ10gPSAnVGl0b2xvJzsKJGxhbmdbJ2NhbF9mcm9tZGF0ZSddID0gJ0RhbGxhIGRhdGEnOwokbGFuZ1snY2FsX3RvZGF0ZSddID0gJ0FsbGEgZGF0YSc7CiRsYW5nWydjYWxfdXBkYXRlX2NhdGVnb3JpZXMnXSA9ICdBZ2dpb25hIGNhdGVnb3JpZSc7CiRsYW5nWydjYWxfbGFuZ3VhZ2UnXSA9ICdMaW5ndWEnOwokbGFuZ1snY2FsX3VwZGF0ZXNldHRpbmdzJ10gPSAnQWdnaW9ybmEgY29uZmlndXJhemlvbmUnOwokbGFuZ1snY2FsX3VzZV90d2VsdmVfaG91cl9jbG9jayddID0gJ1VzYXJlIGlsIGxcJ29yb2xvZ2lvIGEgMTIgb3JlIG5lbCBtZW51IGEgdGVuZGluYSBkZWxsZSBvcmU/JzsKJGxhbmdbJ2NhbF9kZWZhdWx0X2NhdGVnb3J5J10gPSAnQ2F0ZWdvcmlhIFByZWRlZmluaXRhJzsKJGxhbmdbJ2NhbF91cGRhdGVfZmllbGRzJ10gPSAnQWdnaW9ybmEgQ2FtcGknOwokbGFuZ1snZm9yY2VfY2F0ZWdvcnknXSA9ICdGb3J6YSBhbG1lbm8gdW5hIGNhdGVnb3JpYSc7CiRsYW5nWydzaG93cGFzdHllYXJzJ10gPSAnTnVtZXJvIGRpIGFubmkgcGFzc2F0aSBwZXJtZXNzaSc7CiRsYW5nWydzaG93ZnV0dXJleWVhcnMnXSA9ICdOdW1lcm8gZGkgYW5uaSBmdXR1cmkgcGVybWVzc2knOwokbGFuZ1snaGlkZXN1bW1hcnknXSA9ICdEZXZlIGVzc2VyZSBuYXNjb3N0byBpbCBjYW1wbyBTb21tYXJpbyc7CiRsYW5nWydoaWRlY29udGVudCddID0gJ0RldmUgZXNzZXJlIG5hc2Nvc3RvIGlsIGNhbXBvIENvbnRlbnV0byc7CiRsYW5nWydjYXRlZ29yeV9yZW1pbmRlciddID0gJ1NlbGV6aW9uYXRlIHVuYSBvIHBpw7kgY2F0ZWdvcmllIHBlciBxdXN0byBldmVudG8nOwokbGFuZ1snbW9kdWxlX2V4YW1wbGVfc3R5bGVzaGVldCddID0gJ0VzZW1waW8gZGkgRm9nbGlvIGRpIFN0aWxlIHBlciBpbCBDYWxlbmRhcmlvJzsKJGxhbmdbJ2Vycm9yX3Blcm1pc3Npb24nXSA9ICdBdmV0ZSBiaXNvZ25vIGRpIHBlcm1lc3NpIGFwcHJvcHJpYXRpICglcykgcGVyIGFjY2VkZXJlIGEgcXVlc3RhIGZ1bnppb25hbGl0w6AnOwokbGFuZ1snaW5zdGFsbF9wb3N0bWVzc2FnZSddID0gJ0Vzc2VyZSBzaWN1cmkgZGkgY29uZmlndXJhcmUgaWwgcGVybWVzc28gIk1vZGlmeSBDYWxlbmRhciIgcGVyIGdsaSB1dGVudGkgY2hlIGRvdnJhbm5vIGFtbWluaXN0cmFyZSBnbGkgZXZlbnRpIGRlbCBjYWxlbmRhcmlvLic7CiRsYW5nWydkZWxldGV0YWdnZWQnXSA9ICdDYW5jZWxsYSBldmVudGkgc2VsZXppb25hdGknOwokbGFuZ1snY29uZmlybWRlbGV0ZXRhZ2dlZCddID0gJ1NpZXRlIHNpY3VyaSBjaGUgcXVlc3RpIGV2ZW50aSBkZWJiYW5vIGVzc2VyZSBjYW5jZWxsYXRpPyc7CiRsYW5nWyd0YWdnZWRkZWxldGVkJ10gPSAnR2xpIGV2ZW50aSBzZWxlemlvbmF0aSBzb25vIHN0YXRpIGNhbmNlbGxhdGknOwokbGFuZ1sndGVtcGxhdGVzJ10gPSAnTW9kZWxsaSAodGVtcGxhdGVzKSc7CiRsYW5nWyd0ZW1wbGF0ZV9oZWxwJ10gPSAnQWl1dG8gcGVyIGkgTW9kZWxsaSc7CiRsYW5nWydmaWxlX3RlbXBsYXRlcyddID0gJ01vZGVsbGkgZGkgRmlsZSc7CiRsYW5nWydhZGR0ZW1wbGF0ZSddID0gJ0FnZ2l1bmdpIE1vZGVsbG8nOwokbGFuZ1sndGVtcGxhdGUnXSA9ICdNb2RlbGxvJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZXRleHQnXSA9ICdOb21lIE1vZGVsbG8nOwokbGFuZ1snZWRpdHRlbXBsYXRlJ10gPSAnTW9kaWZpY2EgTW9kZWxsbyc7CiRsYW5nWydkZWxldGV0ZW1wbGF0ZSddID0gJ0NhbmNlbGxhIE1vZGVsbG8nOwokbGFuZ1snbmV3dGVtcGxhdGUnXSA9ICdOb21lIGRlbCBOdW92byBNb2RlbGxvJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZWV4aXN0cyddID0gJ0Vycm9yZTogw6ggZ2nDoCBwcmVzZW50ZSB1biBtb2RlbGxvIGNvbiBsbyBzdGVzc28gbm9tZS4gU2NlZ2xpZXRlbmUgdW5vIGRpdmVyc28nOwokbGFuZ1sndGVtcGxhdGVpbXBvcnRlZCddID0gJ0lsIG1vZGVsbG8gw6ggc3RhdG8gaW1wb3J0YXRvIG5lbCBkYXRhYmFzZSBjb24gc3VjY2Vzc28gZSBvcmEgw6ggaW5zdGFsbGF0byBwZXIgbFwndXNvLic7CiRsYW5nWyd2aWV3X2RlZmF1bHRfc3R5bGVzaGVldCddID0gJ1Zpc3VhbGl6emEgRm9nbGlvIGRpIFN0aWxlIHByZWRlZmluaXRvJzsKJGxhbmdbJ2ZpbGVuYW1lJ10gPSAnTm9tZSBmaWxlJzsKJGxhbmdbJ2ltcG9ydHRlbXBsYXRlJ10gPSAnSW1wb3J0YSBNb2RlbGxvJzsKJGxhbmdbJ3RlbXBsYXRlX2RlbGV0ZWQnXSA9ICdJbCBNb2RlbGxvIMOoIHN0YXRvIGNhbmNlbGxhdG8gZGFsIGRhdGFiYXNlIGNvbiBzdWNjZXNzby4nOwokbGFuZ1sndXBkYXRldGVtcGxhdGVzdWNjZXNzJ10gPSAnSWwgbW9kZWxsbyDDqCBzdGF0byBhZ2dpb3JuYXRvIGNvbiBzdWNjZXNzbyc7CiRsYW5nWyd1cGRhdGV0ZW1wbGF0ZWZhaWx1cmUnXSA9ICdTaSDDqCB2ZXJpZmljYXRvIHVuIGVycm9yZSBhZ2dpb3JuYW5kbyBpbCBtb2RlbGxvJzsKJGxhbmdbJ3NldHRpbmdzc2F2ZWQnXSA9ICdMZSBpbXBvc3Rhemlvbmkgc29ubyBzdGF0ZSBzYWx2YXRlIGNvbiBzdWNjZXNzbyc7CiRsYW5nWydjYXRlZ29yeWRlbGV0ZWQnXSA9ICdDYXRlZ29yaWEgY2FuY2VsbGF0YSc7CiRsYW5nWydjYXRlZ29yeXVwZGF0ZWQnXSA9ICdDYXRlZ29yaWEgYWdnaW9ybmF0YSc7CiRsYW5nWydjYXRlZ29yeWFkZGVkJ10gPSAnQ2F0ZWdvcmlhIGFnZ2l1bnRhJzsKJGxhbmdbJ2V2ZW50ZGVsZXRlZCddID0gJ0xcJ2V2ZW50byDDqCBzdGF0byBjYW5jZWxsYXRvJzsKJGxhbmdbJ2V2ZW50dXBkYXRlZCddID0gJ1F1ZXN0byBldmVudG8gw6ggc3RhdG8gYWdnaW9ybmF0byc7CiRsYW5nWydkZWZhdWx0X3BhZ2VfZXJyb3InXSA9ICdFcnJvcmU6IGRvdmV0ZSBpbXBvc3RhcmUgdW5hIHBhZ2luYSBwcmVkZWZpbml0YSBwZXIgcG90ZXJlIHV0aWxpenphcmUgaWwgbW9kdWxvIENhbGVuZGFyIGNvbiBpIHByZXR0eSBVUkwgYXR0aXZhdGkuIEFuZGF0ZSBuZWwgbWVudSBkZWxsZSBpbXBvc3RhemlvbmkgZGkgQ2FsZW5kYXIgZSBzY2VnbGlldGVuZSB1bmEuJzsKJGxhbmdbJ3RpbWVfYXQnXSA9ICdhbGxlJzsKJGxhbmdbJ3R5cGUnXSA9ICdUaXBvJzsKJGxhbmdbJ25hbWUnXSA9ICdOb21lJzsKJGxhbmdbJ29yZGVyJ10gPSAnT3JkaW5lJzsKJGxhbmdbJ2ZpZWxkYWRkZWQnXSA9ICdDYW1wbyBhZ2dpdW50byBjb24gc3VjY2Vzc28nOwokbGFuZ1snZmllbGRkZWxldGVkJ10gPSAnQ2FtcG8gY2FuY2VsbGF0byc7CiRsYW5nWydmaWVsZHMnXSA9ICdDYW1waSBwZXJzb25hbGl6emF0aSc7CiRsYW5nWyd0ZXh0ZmllbGQnXSA9ICdDYW1wbyB0ZXN0byc7CiRsYW5nWyd1cGxvYWRmaWVsZCddID0gJ0NhbXBvIGRpIGNhcmljYW1lbnRvIGZpbGUnOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICc8cD5DYWxlbmRhciDDqCB1biBtb2R1bG8gcGVyIHZpc3VhbGl6emFyZSBldmVudGkgc3VsbGUgY29zdHJlIHBhZ2luZS4gUXVhbmRvIGlsIG1vZHVsbyDDqCBpbnN0YWxsYXRvIHZpZW5lIGFnZ2l1bnRhIHVuYSBQYWdpbmEgZGkgQW1taW5pc3RyYXppb25lIENhbGVuZGFyIG5lbCBtZW51IGRpIGNvbnRlbnV0bywgY2hlIHBlcm1ldHRlIGRpIGdlc3RpcmUgaSB2b3N0cmkgZXZlbnRpLjwvcD4nOwokbGFuZ1snZGVmYXVsdGNhbGVuZGFycGFnZSddID0gJ1BhZ2luYSBwcmVkZWZpbml0YSBjaGUgY29udGllbmUgQ2FsZW5kYXIuIERldmUgY29udGVuZXJlIHVubyBTbWFydHkgdGFnIGNoZSByaWNoaWFtYSBDYWxlbmRhci4gT2JibGlnYXRvcmlvIHNlIHVzYXRlIGxcJ29wemlvbmUgcHJldHR5IFVSTC4nOwokbGFuZ1sndXBsb2FkZGlyZWN0b3J5J10gPSAnQ2FydGVsbGEgaW4gcG9zaXppb25hcmUgaSBmaWxlIGNhcmljYXRpJzsKJGxhbmdbJ3VwbG9hZGZpbGV0eXBlcyddID0gJ1RpcGkgZGkgZmlsZSBwZXJtZXNzaSc7CiRsYW5nWyd1cGxvYWR1bmlxdWUnXSA9ICdWZXJpZmljYSBub21pIGRpIGZpbGUgdW5pY2knOwokbGFuZ1snY2FsX3JlY3VyX3BlcmlvZCddID0gJ1JpcGV0aXppb25lIEV2ZW50byc7CiRsYW5nWydjYWxfcmVjdXJfdW50aWwnXSA9ICdTaSByaXBldGUgZmlubyBhbCc7CiRsYW5nWydoZWxwX3RlbXBsYXRlJ10gPSAnPHA+PGI+U3RhbXBhIE5vbWUgQXV0b3JlOjwvYj48L3A+DQo8Y29kZT5BdXRvcmU6IHskZXZlbnQuYXV0aG9ybmFtZX08L2NvZGU+JzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/lt_LT.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudEFkZGVkJ10gPSAnUHJhbmUmc2Nhcm9uO3RpIHBvIMSvdnlraW8gxK9kxJdqaW1vJzsKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudEVkaXRlZCddID0gJ1ByYW5lJnNjYXJvbjt0aSBwbyBlc2FuxI1pbyDEr3Z5a2lvIHJlZGFnYXZpbW8nOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RGVsZXRlZCddID0gJ1ByYW5lJnNjYXJvbjt0aSBwbyDEr3Z5a2lvIGkmc2Nhcm9uO3RyaW5pbW8nOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5QWRkZWQnXSA9ICdQcmFuZSZzY2Fyb247dGkgcG8ga2F0ZWdvcmlqb3Mgc3VrxatyaW1vJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUVkaXRlZCddID0gJ1ByYW5lJnNjYXJvbjt0aSBwbyBrYXRlZ29yaWpvcyByZWRhZ2F2aW1vJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeURlbGV0ZWQnXSA9ICdQcmFuZXMmc2Nhcm9uO3RpIHBvIGthdGVnb3Jpam9zIGkmc2Nhcm9uO3RyeW5pbW8nOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50QWRkZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBldmVudCBpcyBhZGRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X3RpdGxlXCZxdW90OyAtIEV2ZW50IFRpdGxlPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfc3VtbWFyeVwmcXVvdDsgLSBTdW1tYXJ5IFRleHQ8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kZXRhaWxzXCZxdW90OyAtIERldGFpbGVkIERlc2NyaXB0aW9uPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9zdGFydFwmcXVvdDsgLSBUaGUgZXZlbnQgc3RhcnQgZGF0ZS90aW1lPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9lbmRcJnF1b3Q7IC0gVGhlIGV2ZW50IGVuZCBkYXRlL3RpbWU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9jcmVhdGVkX2J5XCZxdW90OyAtIFRoZSB1c2VyaWQgb2YgdGhlIGF1dGhvcjwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2lkXCZxdW90OyAtIFRoZSBldmVudCBpZDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudEVkaXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIGVkaXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X3RpdGxlXCZxdW90OyAtIEV2ZW50IFRpdGxlPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfc3VtbWFyeVwmcXVvdDsgLSBTdW1tYXJ5IFRleHQ8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kZXRhaWxzXCZxdW90OyAtIERldGFpbGVkIERlc2NyaXB0aW9uPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9zdGFydFwmcXVvdDsgLSBUaGUgZXZlbnQgc3RhcnQgZGF0ZS90aW1lPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9lbmRcJnF1b3Q7IC0gVGhlIGV2ZW50IGVuZCBkYXRlL3RpbWU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9jcmVhdGVkX2J5XCZxdW90OyAtIFRoZSB1c2VyaWQgb2YgdGhlIGF1dGhvcjwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2lkXCZxdW90OyAtIFRoZSBldmVudCBpZDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudERlbGV0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBldmVudCBpcyBkZWxldGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7ZXZlbnRfaWRcJnF1b3Q7IC0gVGhlIGV2ZW50IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5QWRkZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBjYXRlZ29yeSBpcyBhZGRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2NhdGVnb3J5X2lkXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBpZDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeUVkaXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGNhdGVnb3J5IGlzIGVkaXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2NhdGVnb3J5X2lkXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBpZDwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X25hbWVcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IG5hbWU8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9vcmRlclwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgc29ydCBvcmRlcjwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeURlbGV0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBjYXRlZ29yeSBpcyBkZWxldGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfaWRcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IGlkPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfbmFtZVwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgbmFtZTwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X29yZGVyXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBzb3J0IG9yZGVyPC9saT4NCjwvdWw+DQonOwokbGFuZ1snbXNnX2V2ZW50YWRkZWQnXSA9ICfErnZ5a2lzIHByaWTEl3Rhcyc7CiRsYW5nWydlcnJvcl9ub3VwbG9hZCddID0gJ0VSUk9SOiBObyB1cGxvYWRlZCBmaWxlIGZvdW5kJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRmaWxlbmFtZSddID0gJ0VSUk9SOiBUaGUgZmlsZSB1cGxvYWRlZCBjYW5ub3QgYmUgYWNjZXB0ZWQnOwokbGFuZ1snZXJyb3JfcHJvYmxlbXdpdGh1cGxvYWQnXSA9ICdFUlJPUjogQSBwcm9ibGVtIG9jY3VycmVkIHRyeWluZyB0byB1cGxvYWQgdGhlIGZpbGUnOwokbGFuZ1snZXJyb3JfZmlsZWNvcHlmYWlsZWQnXSA9ICdFUlJPUjogQSBQcm9ibGVtIG9jY3VycmVkIHdoZW4gY29weWluZyB0aGUgZmlsZSB0byBpdHMgZmluYWwgZGVzdGluYXRpb24nOwokbGFuZ1snZXJyb3JfZmlsZWV4aXN0cyddID0gJ0VSUk9SOiBBIGZpbGUgYnkgdGhhdCBuYW1lIGFscmVhZHkgZXhpc3RzJzsKJGxhbmdbJ2Vycm9yX2NzdmZpbGVub3Rmb3VuZCddID0gJ0tsYWlkYTogTmXEr21hbm8gcmFzdGkgQ1NWIGJ5bGEnOwokbGFuZ1snZXJyb3JfY2FudG9wZW5maWxlJ10gPSAnS2xhaWRhOiBOZcSvbWFub21hIGF0aWRhcnl0aSBieWxvcyc7CiRsYW5nWydjYWxfY2FsZW5kYXInXSA9ICdLYWxlbmRvcml1cyc7CiRsYW5nWydjYWxfZGVzY3JpcHRpb24nXSA9ICdTdWt1cnRpLCByZWRhZ3VvdGkgaXIgcGEmc2Nhcm9uO2FsaW50aSDEr3Z5a2l1cyc7CiRsYW5nWydjYWxfYWRkZXZlbnQnXSA9ICdTdWt1cnRpIMSvdnlrxK8nOwokbGFuZ1snY2FsX2ltcG9ydF9ldmVudHMnXSA9ICdJbXBvcnR1b3RpIMSvdnlraXVzJzsKJGxhbmdbJ2NhbF9ldmVudHMnXSA9ICfErnZ5a2lhaSc7CiRsYW5nWydjYWxfY2F0ZWdvcmllcyddID0gJ0thdGVnb3Jpam9zJzsKJGxhbmdbJ2NhbF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ0thbGVuZG9yaWF1cyAmc2Nhcm9uO2FibG9uYXMnOwokbGFuZ1snY2FsX2xpc3RfdGVtcGxhdGUnXSA9ICdTxIVyYSZzY2Fyb247byAmc2Nhcm9uO2FibG9uYXMnOwokbGFuZ1snY2FsX3VwY29taW5nbGlzdF90ZW1wbGF0ZSddID0gJ0LFq3NpbcWzIMSvdnlracWzICZzY2Fyb247YWJsb25hcyc7CiRsYW5nWydjYWxfZXZlbnRfdGVtcGxhdGUnXSA9ICfErnZ5a2lvICZzY2Fyb247YWJsb25hcyc7CiRsYW5nWydjYWxfc2V0dGluZ3MnXSA9ICdOdXN0YXR5bWFpJzsKJGxhbmdbJ2NhbF9wcmV2J10gPSAnJmxhcXVvOyBBbmtzdGVzbmlzJzsKJGxhbmdbJ2NhbF9uZXh0J10gPSAnVsSXbGVzbmlzICZyYXF1bzsnOwokbGFuZ1snY2FsX2NhdGVnb3JpZXNfdXBkYXRlZCddID0gJ0thdGVnb3Jpam9zIGF0bmF1amludG9zJzsKJGxhbmdbJ2NhbF9zZXR0aW5nc191cGRhdGVkJ10gPSAnTnVzdGF0eW1haSBhdG5hdWppbnRpJzsKJGxhbmdbJ2NhbF9hZGRfZXZlbnQnXSA9ICdTdWt1cnRpIMSvdnlrxK8nOwokbGFuZ1snY2FsX2VkaXQnXSA9ICdSZWRhZ3VvdGknOwokbGFuZ1snY2FsX2RlbGV0ZSddID0gJ0kmc2Nhcm9uO3RyaW50aSc7CiRsYW5nWydjYWxfYXJleW91c3VyZSddID0gJ0FyIHRpa3JhaSBub3JpdGUgaSZzY2Fyb247dHJpbnRpJzsKJGxhbmdbJ2NhbF91cGRhdGVfdGVtcGxhdGUnXSA9ICdBdG5hdWppbnRpICZzY2Fyb247YWJsb27EhSc7CiRsYW5nWydjYWxfc3VuZGF5J10gPSAnU2VrbWFkaWVuaXMnOwokbGFuZ1snY2FsX21vbmRheSddID0gJ1Bpcm1hZGllbmlzJzsKJGxhbmdbJ2NhbF90dWVzZGF5J10gPSAnQW50cmFkaWVuaXMnOwokbGFuZ1snY2FsX3dlZG5lc2RheSddID0gJ1RyZcSNaWFkaWVuaXMnOwokbGFuZ1snY2FsX3RodXJzZGF5J10gPSAnS2V0dmlydGFkaWVuaXMnOwokbGFuZ1snY2FsX2ZyaWRheSddID0gJ1Blbmt0YWRpZW5pcyc7CiRsYW5nWydjYWxfc2F0dXJkYXknXSA9ICcmU2Nhcm9uO2Umc2Nhcm9uO3RhZGllbmlzJzsKJGxhbmdbJ2NhbF9zdW4nXSA9ICdTZWsnOwokbGFuZ1snY2FsX21vbiddID0gJ1Bpcic7CiRsYW5nWydjYWxfdHVlcyddID0gJ0FudCc7CiRsYW5nWydjYWxfd2VkJ10gPSAnVHJlJzsKJGxhbmdbJ2NhbF90aHVycyddID0gJ0tldCc7CiRsYW5nWydjYWxfZnJpJ10gPSAnUGVuJzsKJGxhbmdbJ2NhbF9zYXQnXSA9ICcmU2Nhcm9uO2Umc2Nhcm9uOyc7CiRsYW5nWydjYWxfamFudWFyeSddID0gJ1NhdXNpbyc7CiRsYW5nWydjYWxfZmVicnVhcnknXSA9ICdWYXNhcmlvJzsKJGxhbmdbJ2NhbF9tYXJjaCddID0gJ0tvdm8nOwokbGFuZ1snY2FsX2FwcmlsJ10gPSAnQmFsYW5kxb5pbyc7CiRsYW5nWydjYWxfbWF5J10gPSAnR2VndcW+xJdzJzsKJGxhbmdbJ2NhbF9qdW5lJ10gPSAnQmlyxb5lbGlvJzsKJGxhbmdbJ2NhbF9qdWx5J10gPSAnTGllcG9zJzsKJGxhbmdbJ2NhbF9hdWd1c3QnXSA9ICdSdWdwasWrxI1pbyc7CiRsYW5nWydjYWxfc2VwdGVtYmVyJ10gPSAnUnVnc8SXam8nOwokbGFuZ1snY2FsX29jdG9iZXInXSA9ICdTcGFsaW8nOwokbGFuZ1snY2FsX25vdmVtYmVyJ10gPSAnTGFwa3JpxI1pbyc7CiRsYW5nWydjYWxfZGVjZW1iZXInXSA9ICdHcnVvZMW+aW8nOwokbGFuZ1snY2FsX2FkZCddID0gJ1ByaWTEl3RpJzsKJGxhbmdbJ2NhbF91cGRhdGUnXSA9ICdBdG5hdWppbnRpJzsKJGxhbmdbJ2NhbF9ldmVudCddID0gJ8SudnlraXMnOwokbGFuZ1snY2FsX2RhdGUnXSA9ICdEYXRhJzsKJGxhbmdbJ2NhbF9zdW1tYXJ5J10gPSAnU2FudHJhdWthJzsKJGxhbmdbJ2NhbF9kZXRhaWxzJ10gPSAnRGV0YWzEl3MnOwokbGFuZ1snY2FsX21vcmUnXSA9ICdwbGHEjWlhdSA+Pic7CiRsYW5nWydjYWxfcmV0dXJuJ10gPSAnR3LEr8W+dGknOwokbGFuZ1snY2FsX3RvJ10gPSAnaWtpJzsKJGxhbmdbJ2NhbF9wYXN0X2V2ZW50cyddID0gJ1ByYcSXasSZIMSvdnlraWFpJzsKJGxhbmdbJ2NhbF91cGNvbWluZ19ldmVudHMnXSA9ICdBcnTEl2phbnR5cyDEr3Z5a2lhaSc7CiRsYW5nWydjYWxfYW55X2NhdGVnb3J5J10gPSAnVmlzb3Mga2F0ZWdvcmlqb3MnOwokbGFuZ1snY2FsX3Nob3dfb25seV9ldmVudHNfaW4nXSA9ICfErnZ5a2l1cyByb2R5dGkgdGlrJzsKJGxhbmdbJ2NhbF9maWx0ZXJfYnknXSA9ICdGaWx0cnVvdGkgcGFnYWwnOwokbGFuZ1snY2FsX2dvJ10gPSAnUGlybXluJzsKJGxhbmdbJ2NhbF90aXRsZSddID0gJ1BhdmFkaW5pbWFzJzsKJGxhbmdbJ2NhbF9mcm9tZGF0ZSddID0gJ051byBkYXRvcyc7CiRsYW5nWydjYWxfdG9kYXRlJ10gPSAnSWtpIGRhdG9zJzsKJGxhbmdbJ2NhbF91cGRhdGVfY2F0ZWdvcmllcyddID0gJ0F0bmF1amludGkga2F0ZWdvcmlqYXMnOwokbGFuZ1snY2FsX2xhbmd1YWdlJ10gPSAnS2FsYmEnOwokbGFuZ1snY2FsX3VwZGF0ZXNldHRpbmdzJ10gPSAnQXRuYXVqaW50aSBudXN0YXR5bXVzJzsKJGxhbmdbJ2NhbF91c2VfdHdlbHZlX2hvdXJfY2xvY2snXSA9ICduYXVkb3RpIDEyIHZhbGFuxbMgZm9ybWF0xIU/JzsKJGxhbmdbJ2NhbF9kZWZhdWx0X2NhdGVnb3J5J10gPSAnxK5wcmFzdGEga2F0ZWdvcmlqYSc7CiRsYW5nWydjYWxfdXBkYXRlX2ZpZWxkcyddID0gJ1VwZGF0ZSBGaWVsZHMnOwokbGFuZ1snZm9yY2VfY2F0ZWdvcnknXSA9ICdCxat0aW5haSBiZW50IHZpZW5hIGthdGVnb3JpamEgcGFzaXJpbmt0aSc7CiRsYW5nWydzaG93cGFzdHllYXJzJ10gPSAnS2llayBtZXTFsyDEryBwcmFlaXRpIGxlaXN0aSc7CiRsYW5nWydzaG93ZnV0dXJleWVhcnMnXSA9ICdLaWVrIG1ldMWzIMSvIGF0ZWl0xK8gbGVpc3RpJzsKJGxhbmdbJ2hpZGVzdW1tYXJ5J10gPSAnQXIgc2FudHJhdWtvcyBsYXVrZWxpcyB0dXLEl3TFsyBixat0IHBhc2zEl3B0YXMnOwokbGFuZ1snaGlkZWNvbnRlbnQnXSA9ICdBciB0dXJpbmlvbGF1a2VsaXMgdHVyxJd0xbMgYsWrdCBwYXNsxJdwdGFzJzsKJGxhbmdbJ2NhdGVnb3J5X3JlbWluZGVyJ10gPSAnUHJhJnNjYXJvbjtvbWUgcGFzaXJpbmt0aSB2aWVuYSBhciBrZWxpYXMga2F0ZWdvcmlqYXMnOwokbGFuZ1snbW9kdWxlX2V4YW1wbGVfc3R5bGVzaGVldCddID0gJ0thbGVuZG9yaWF1cyBDU1MgcGF2eXpkeXMnOwokbGFuZ1snZXJyb3JfcGVybWlzc2lvbiddID0gJ1R1cml0ZSB0dXLEl3RpIGF0aXRpbmthbcSFICglcykgbGVpZG3EhSAmc2Nhcm9uO2lhaSBmdW5rY2lqYWknOwokbGFuZ1snaW5zdGFsbF9wb3N0bWVzc2FnZSddID0gJ8Suc2l0aW5raXRlLCBrYWQgJnF1b3Q7bW9kaWZ5IGNhbGVuZGFyJnF1b3Q7IGxlaWRpbWFpIG51c3RhdHl0aSB0aW5rYW1haSB2YXJ0b3RvamFtcyBrdXJpZSBuYXVkb3NpIGthbGVuZG9yaWF1cyBmdW5rY2lqYSc7CiRsYW5nWydkZWxldGV0YWdnZWQnXSA9ICdUcmludGkgcGHFvnltxJd0dXMgxK92eWtpdXMnOwokbGFuZ1snY29uZmlybWRlbGV0ZXRhZ2dlZCddID0gJ0FyIHRpa3JhaSBub3JpdCBpJnNjYXJvbjt0cmludGk/JzsKJGxhbmdbJ3RhZ2dlZGRlbGV0ZWQnXSA9ICdQYXNpcmlua3RpIMSvdnlraWFpIGkmc2Nhcm9uO3RyaW50aSc7CiRsYW5nWyd0ZW1wbGF0ZXMnXSA9ICcmU2Nhcm9uO2FibG9uYWknOwokbGFuZ1sndGVtcGxhdGVfaGVscCddID0gJyZTY2Fyb247YWJsb25vIHBhZ2FsYmEnOwokbGFuZ1snZmlsZV90ZW1wbGF0ZXMnXSA9ICdCeWzFsyAmc2Nhcm9uO2FibG9uYWknOwokbGFuZ1snYWRkdGVtcGxhdGUnXSA9ICdQcmlkxJd0aSAmc2Nhcm9uO2FibG9uxIUnOwokbGFuZ1sndGVtcGxhdGUnXSA9ICcmU2Nhcm9uO2FibG9uYXMnOwokbGFuZ1sndGVtcGxhdGVuYW1ldGV4dCddID0gJyZTY2Fyb247YWJsb25vIHBhdmFkaW5pbWFzJzsKJGxhbmdbJ2VkaXR0ZW1wbGF0ZSddID0gJ1JlZGFndW90aSAmc2Nhcm9uO2FibG9uxIUnOwokbGFuZ1snZGVsZXRldGVtcGxhdGUnXSA9ICdJJnNjYXJvbjt0cmludGkgJnNjYXJvbjthYmxvbsSFJzsKJGxhbmdbJ25ld3RlbXBsYXRlJ10gPSAnTmF1am8gJnNjYXJvbjthYmxvbm8gcGF2YWRpbmltYXMnOwokbGFuZ1sndGVtcGxhdGVuYW1lZXhpc3RzJ10gPSAnRXJyb3I6IEEgdGVtcGxhdGUgd2l0aCB0aGF0IG5hbWUgYWxyZWFkeSBleGlzdHMuIFBsZWFzZSBjaG9vc2UgYSBkaWZmZXJlbnQgbmFtZS4nOwokbGFuZ1sndGVtcGxhdGVpbXBvcnRlZCddID0gJ1RoZSB0ZW1wbGF0ZSB3YXMgc3VjZXNzZnVsbHkgaW1wb3J0ZWQgaW50byB0aGUgZGF0YWJhc2UgYW5kIGlzIG5vdyBpbnN0YWxsZWQgZm9yIHVzZS4nOwokbGFuZ1sndmlld19kZWZhdWx0X3N0eWxlc2hlZXQnXSA9ICdWaWV3IERlZmF1bHQgU3R5bGVzaGVldCc7CiRsYW5nWydmaWxlbmFtZSddID0gJ0J5bG9zIHBhdmFkaW5pbWFzJzsKJGxhbmdbJ2ltcG9ydHRlbXBsYXRlJ10gPSAnSW1wb3J0dW90aSAmc2Nhcm9uO2FibG9uxIUnOwokbGFuZ1sndGVtcGxhdGVfZGVsZXRlZCddID0gJyZTY2Fyb247YWJsb25hcyBidXZvIHPEl2ttaW5nYWkgaSZzY2Fyb247IGR1b21lbsWzIGJhesSXcyBpJnNjYXJvbjt0cmludGFzJzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlc3VjY2VzcyddID0gJyZTY2Fyb247YWJsb25hcyBhdG5hdWppbnRhcyBzxJdrbWluZ2FpJzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlZmFpbHVyZSddID0gJ0tsYWlkYSBhdG5hdWppbmFudCAmc2Nhcm9uO2FibG9uxIUnOwokbGFuZ1snc2V0dGluZ3NzYXZlZCddID0gJ051c3RhdHltYWkgc8SXa21pbmdhaSBpJnNjYXJvbjtzYXVnb3RpJzsKJGxhbmdbJ2NhdGVnb3J5ZGVsZXRlZCddID0gJ0thdGVnb3JpamEgcGEmc2Nhcm9uO2FsaW50YSc7CiRsYW5nWydjYXRlZ29yeXVwZGF0ZWQnXSA9ICdLYXRlZ29yaWphIGF0bmF1amludGEnOwokbGFuZ1snY2F0ZWdvcnlhZGRlZCddID0gJ0thdGVnb3JpamEgcHJpZMSXdGEnOwokbGFuZ1snZXZlbnRkZWxldGVkJ10gPSAnxK52eWtpcyBwYSZzY2Fyb247YWxpbnRhcyc7CiRsYW5nWydldmVudHVwZGF0ZWQnXSA9ICfErnZ5a2lzIGF0bmF1amludGFzJzsKJGxhbmdbJ2RlZmF1bHRfcGFnZV9lcnJvciddID0gJ0Vycm9yOiBZb3UgbXVzdCBzZXQgYSBkZWZhdWx0IHBhZ2UgaW4gb3JkZXIgdG8gdXNlIENhbGVuZGFyIHdpdGggcHJldHR5IFVSTHMgdHVybmVkIG9uLiBQbGVhc2UgZ28gdG8gdGhlIENhbGVuZGFyIHNldHRpbmdzIHRhYiBhbmQgY2hvb3NlIG9uZS4nOwokbGFuZ1sndGltZV9hdCddID0gJ2lraSc7CiRsYW5nWyd0eXBlJ10gPSAnVGlwYXMnOwokbGFuZ1snbmFtZSddID0gJ1BhdmFkaW5pbWFzJzsKJGxhbmdbJ29yZGVyJ10gPSAnVHZhcmthJzsKJGxhbmdbJ2ZpZWxkYWRkZWQnXSA9ICdMYXVrYXMgc8SXa21pbmdhaSBwcmlkxJd0YXMnOwokbGFuZ1snZmllbGRkZWxldGVkJ10gPSAnTGF1a2FzIGkmc2Nhcm9uO3RyaW50YXMnOwokbGFuZ1snZmllbGRzJ10gPSAnQ3VzdG9tIEZpZWxkcyc7CiRsYW5nWyd0ZXh0ZmllbGQnXSA9ICdUZXh0IEZpZWxkJzsKJGxhbmdbJ3VwbG9hZGZpZWxkJ10gPSAnRmlsZSB1cGxvYWQgZmllbGQnOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICc8cD5DYWxlbmRhciBpcyBhIG1vZHVsZSBmb3IgZGlzcGxheWluZyBldmVudHMgb24geW91ciBwYWdlLiBXaGVuIHRoZQ0KCQltb2R1bGUgaXMgaW5zdGFsbGVkLCBhIENhbGVuZGFyIGFkbWluIHBhZ2UgaXMgYWRkZWQgdG8gdGhlIGNvbnRlbnQgbWVudQ0KCQl0aGF0IHdpbGwgYWxsb3cgeW91IHRvIG1hbmFnZSB5b3VyIGV2ZW50cy48L3A+JzsKJGxhbmdbJ2RlZmF1bHRjYWxlbmRhcnBhZ2UnXSA9ICdEZWZhdWx0IHBhZ2UgdGhhdCBjb250YWlucyBDYWxlbmRhci4gVGhpcyBwYWdlIG11c3QgY29udGFpbiBhIFNtYXJ0eSB0YWcgdGhhdCBjYWxscyBDYWxlbmRhci4gUmVxdWlyZWQgaWYgeW91IHVzZSB0aGUgcHJldHR5IFVSTHMuJzsKJGxhbmdbJ3VwbG9hZGRpcmVjdG9yeSddID0gJ0RpcmVjdG9yeSB3aGVyZXIgZmlsZSB1cGxvYWRzIHNob3VsZCBiZSBwbGFjZWQnOwokbGFuZ1sndXBsb2FkZmlsZXR5cGVzJ10gPSAnTGVpZMW+aWFtaSBieWzFsyB0aXBhaSc7CiRsYW5nWyd1cGxvYWR1bmlxdWUnXSA9ICdFbnN1cmUgdW5pcXVlIGZpbGVzbmFtZXMnOwokbGFuZ1sndGh1bWJfd2lkdGgnXSA9ICdUaHVtYm5haWwgV2lkdGgnOwokbGFuZ1sndGh1bWJfaGVpZ2h0J10gPSAnVGh1bWJuYWlsIEhlaWdodCc7CiRsYW5nWydsYXJnZV93aWR0aCddID0gJ0xhcmdlIEltYWdlIFdpZHRoJzsKJGxhbmdbJ2xhcmdlX2hlaWdodCddID0gJ0xhcmdlIEltYWdlIEhlaWdodCc7CiRsYW5nWydjYWxfcmVjdXJfcGVyaW9kJ10gPSAnUmVjdXJzJzsKJGxhbmdbJ2NhbF9yZWN1cl91bnRpbCddID0gJ1JlY3VycyBVbnRpbCc7CiRsYW5nWydoZWxwX3RlbXBsYXRlJ10gPSAnPHA+PGI+UHJpbnQgQXV0aG9yIE5hbWU6PC9iPjwvcD4NCjxjb2RlPkF1dGhvcjogeyRldmVudC5hdXRob3JuYW1lfTwvY29kZT4NCic7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nb_NO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2Vycm9yX2ZldV9sb2dnZWRpbiddID0gJ0JydWtlcmVuIGVyIGlra2UgbG9nZ2V0IGlubiBpIEZFVS4gTGVnZ2UgdGlsIGVsbGVyIHJlZGlnZXJlIGhlbmRlbHNlciBlciBpa2tlIHRpbGxhdHQnOwokbGFuZ1sncHJvbXB0X2ZyaWVuZGx5bmFtZSddID0gJ1Zlbm5saWcgbmF2biBmb3IgZGVubmUgbW9kdWxlbiBpIGFkbWluIG1lbnllbic7CiRsYW5nWydpbmZvX2ZyaWVuZGx5bmFtZSddID0gJ01lcms6IER1IHZpbCBrYW5za2plIHRyZW5nZSDDpSB0w7htbWUgbmV0dHN0ZWRldHMgbWVsbG9tbGFnZXIgZm9yIGF0IGRlbm5lIGlubnN0aWxsaW5nZW4gc2thbCBmw6UgZWZmZWt0LiBPbSBpbmdlbiB2ZXJkaSBlciBvcHBnaXR0IHPDpSB2aWwgZW4gc3RhbmRhcmQgYmVueXR0ZXMuJzsKJGxhbmdbJ3VzZV93eXNpd3lnJ10gPSAnQmVueXR0IFd5c2l3eWcnOwokbGFuZ1snZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJ10gPSAnVXRpbHN0cmVra2VsaWdlIHBhcmFtZXRlcmUnOwokbGFuZ1snY29sdW1uX2RlbGltaXRlciddID0gJ1NraWxsZXRlZ24gZm9yIGltcG9ydGZpbGVucyBrb2xvbm5lcic7CiRsYW5nWydpbXBvcnRfY29tcGxldGVkJ10gPSAnSW1wb3J0IGZ1bGxmw7hydCc7CiRsYW5nWydudW1faW1wb3J0ZWQnXSA9ICdBbnRhbGwgYmVnaXZlbmhldGVyIG9wcHJldHRldDogJWQnOwokbGFuZ1snaW1wb3J0X2xpbmVzJ10gPSAnQW50YWxsIGxpbmplciBiZWhhbmRsZXQgZnJhIGZpbGVuOiAlZCc7CiRsYW5nWydlcnJvcnMnXSA9ICdGZWlsJzsKJGxhbmdbJ2Vycm9yX2NzdmZpcnN0bGluZWludmFsaWRmaWVsZCddID0gJ0ZlbHQ6ICVzIGVyIGlra2UgZ2plbmtqZW50LCBvZyBlciBpa2tlIGV0IGVnZW5kZWZpbmVydCBmZWx0JzsKJGxhbmdbJ3Byb21wdF9jc3ZfZmlsZSddID0gJ1ZlbGcgZmlsIMOlIGltcG9ydGVyZSc7CiRsYW5nWydkZWxldGUnXSA9ICdTbGV0dCc7CiRsYW5nWydjZF9jb21wYW55J10gPSAnQ29tcGFueSBEaXJlY3RvcnkgZmlybWEnOwokbGFuZ1snZGZsdF91cmxwcmVmaXgnXSA9ICdTdGFuZGFyZCBVUkwtcHJlZmlrcyBmb3IgYnJ1a2VydmVubmxpZ2UgVVJMZXInOwokbGFuZ1snZGZsdF9hbGxkYXlldmVudCddID0gJ055ZSBiZWdpdmVuaGV0ZXIgZXIgIkhlbGUgZGFnZW4iIGJlZ2l2ZW5oZXRlciBzb20gc3RhbmRhcmQnOwokbGFuZ1snZGZsdF9zdGFydHRpbWUnXSA9ICdTdGFuZGFyZCBzdGFydHRpZCBmb3IgbnllIGJlZ2l2ZW5oZXRlcic7CiRsYW5nWydpbmZvX2RmbHRfc3RhcnR0aW1lJ10gPSAnPGVtPihrdW4gZ3lsZGlnIG9tIG55ZSBiZWdpdmVuaGV0ZXIgaWtrZSBlciAiSGVsZSBkYWdlbiIgYmVnaXZlbmhldGVyLik8L2VtPic7CiRsYW5nWydzZWFyY2hfdHlwZSddID0gJ1PDuGtldHlwZSc7CiRsYW5nWydzZWFyY2hfYW55J10gPSAnVmlzIHJlc3VsdGF0ZXIgc29tIHBhc3NlciBodmlsa2V0IHNvbSBoZWxzdCBvcmQnOwokbGFuZ1snc2VhcmNoX2FsbCddID0gJ1ZpcyByZXN1bHRhdGVyIHNvbSBwYXNzZXIgYWxsZSBvcmRlbmUnOwokbGFuZ1snc2VhcmNoYWJsZSddID0gJ1PDuGtiYXInOwokbGFuZ1snaGVscF9wYXJhbV9lZGl0ZXZlbnR0ZW1wbGF0ZSddID0gJ0dqZWxkZXIga3VuIHRpbCBteWV2ZW50cyBoYW5kbGluZ2VuLCBkZW5uZSBwYXJhbWV0ZXJlbiBrYW4gYW5naSBlbiBpa2tlIHN0YW5kYXJkICJyZWRpZ2VyIGJlZ2l2ZW5oZXQiIG1hbCBzb20gc2thbCBicnVrZXMgbsOlciBlbiBicnVrZXIgb3BwcmV0dGVyIGVsbGVyIHJlZGlnZXJlciBlbiBiZWdpdmVuaGV0JzsKJGxhbmdbJ2hlbHBfcGFyYW1fZWRpdHBhZ2UnXSA9ICdHamVsZGVyIGt1biB0aWwgbXlldmVudHMgaGFuZGxpbmdlbiwgZGVubmUgcGFyYW1ldGVyZW4ga2FuIGFuZ2kgZW4gYW5uZW4gc2lkZSBmb3IgcmVkaWdlcmluZ3Mgc2tqZW1hZXQuJzsKJGxhbmdbJ2hlbHBfcGFyYW1fbXlldmVudHN0ZW1wbGF0ZSddID0gJ0dqZWxkZXIga3VuIHRpbCBteWV2ZW50cyBoYW5kbGluZ2VuLCBkZW5uZSBwYXJhbWV0ZXJlbiBrYW4gYW5naSBlbiBpa2tlIHN0YW5kYXJkIG1hbCDDpSBiZW55dHRlJzsKJGxhbmdbJ2NhbF9lZGl0X2V2ZW50J10gPSAnUmVkaWdlciBLYWxlbmRlcmJlZ2l2ZW5oZXQnOwokbGFuZ1snZXJyb3JfZGJlcnJvciddID0gJ0RhdGFzZWZlaWwnOwokbGFuZ1snc3VibWl0J10gPSAnTGFncmUnOwokbGFuZ1snaW5mb19zeXNkZmx0X2VkaXRldmVudF90ZW1wbGF0ZSddID0gJ1N5c3RlbXN0YW5kYXJkICJSZWRpZ2VyIGJlZ2l2ZW5oZXQiIG1hbCc7CiRsYW5nWydpbmZvX3N5c2RmbHRfbXlldmVudHNfdGVtcGxhdGUnXSA9ICdTeXN0ZW1zdGFuZGFyZCAiTWluZSBiZWdpdmVuaGV0ZXIiIG1hbCc7CiRsYW5nWydwcm9tcHRfZmVlZGl0X2dyb3VwJ10gPSAnTWVkbGVtbWVyIGF2IGRlbm5lIEZFVS1ncnVwcGUga2FuIGxlZ2dlIHRpbCBiZWdpdmVuaGV0ZXInOwokbGFuZ1sncHJvbXB0X2ZlZWRpdF9wYWdlJ10gPSAnU3RhbmRhcmQgc2lkZSBmb3IgZnJvbnRlbmQgcmVkaWdlcmluZ3NramVtYSc7CiRsYW5nWydub25lJ10gPSAnSW5nZW4nOwokbGFuZ1snb3duZXInXSA9ICdFaWVyJzsKJGxhbmdbJ2NhbF9lZGl0ZXZlbnRfdGVtcGxhdGVzJ10gPSAnUmVkaWdlciBCZWdpdmVoZXRza2plbWEgbWFsZXInOwokbGFuZ1snaW5mb19lZGl0ZXZlbnRfdGVtcGxhdGVfdGFiJ10gPSAnTGlzdGVuIG1lZCBtYWxlciBzb20gZXIgdGlsZ2plbmdlbGlnZSBmb3IgIlJlZGlnZXIgaGFuZGVsc2UiIHNramVtYSc7CiRsYW5nWydlZGl0ZXZlbnR0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnTGVnZyB0aWwvcmVkaWdlciBlbiAiUmVkaWdlciBiZWdpdmVuaGV0IiBza2plbWFtYWwnOwokbGFuZ1snY2FsX215ZXZlbnRzX3RlbXBsYXRlcyddID0gJyJNaW5lIEJlZ2l2ZW5oZXRlciIgbGlzdGVtYWxlcic7CiRsYW5nWydpbmZvX215ZXZlbnRzX3RlbXBsYXRlX3RhYiddID0gJ0xpc3RlbiBtZWQgbWFsZXIgc29tIGVyIHRpbGdqZW5nZWxpZ2UgZm9yIMOlIHZpc2UgZW4gbGlzdGUgbWVkIGJydWtlcmJlZ2l2ZW5oZXRlcic7CiRsYW5nWydteWV2ZW50c3RlbXBsYXRlX2FkZGVkaXQnXSA9ICdMZWdnIHRpbC9yZWRpZ2VyIGVuICJNaW5lIGJlZ2l2ZW5oZXRlciIgcmFwcG9ydG1hbCc7CiRsYW5nWydhcmV5b3VzdXJlX3JlbW92ZWNvbmZsaWN0aW5nJ10gPSAnRGVubmUgaGFuZGxpbmdlbiB2aWwgZmplcm5lIGV2ZW50dWVsbGUgYmVnaXZlbmhldGVyIHNvbSBlciBpIGtvbmZsaWt0IG1lZCBiZWdpdmVuaGV0ZXIgc29tIGlra2Ugc2thbCB2w6ZyZSBvdmVybGFwcGVuZGUuIEVyIGR1IHNpa2tlciBww6UgYXQgZHUgdmlsIGdqw7hyZSBkZXR0ZT8nOwokbGFuZ1snZmlsdGVyX2NvbmZsaWN0aW5nJ10gPSAnRmlsdHJlciBtb3RzdHJpZGVuZGUgYmVnaXZlbmhldGVyJzsKJGxhbmdbJ292ZXJsYXBfYWN0aW9uX3JlbW92ZSddID0gJ0ZqZXJuIG1vdHN0cmlkZW5kZSBiZWdpdmVuaGV0ZXIgc3RpbGxlJzsKJGxhbmdbJ292ZXJsYXBfYWN0aW9uX2Vycm9yJ10gPSAnVmlzIGVuIGZlaWxtZWxkaW5nJzsKJGxhbmdbJ3Byb21wdF9vdmVybGFwX2FjdGlvbiddID0gJ0h2YSBiw7hyIHNramUgbsOlciBlbiBrb25mbGlrdCBvcHBkYWdlcyB1bmRlciByZWRpZ2VyaW5nIGVsbGVyIHVuZGVyIG9wcHJldHRlbHNlIGF2IGVuIGJlZ2l2ZW5oZXQnOwokbGFuZ1snZXJyb3JfZXZlbnRfY29uZmxpY3QnXSA9ICdCZWdpdmVuaGV0c3ZlcmRpZW5lIGFuZ2l0dCBvdmVybGFwcGVyIG1lZCBlbiBla3Npc3RlcmVuZGUgYmVnaXZlbmhldCBzb20gaWtrZSB0aWxsYXRlciBrb25mbGlrdGVyJzsKJGxhbmdbJ2NhbF9pbmZvX292ZXJsYXAnXSA9ICdHamVsZGVyIGJhcmUgZm9yIGJlZ2l2ZW5oZXRlciBtZWQgZW4gc2x1dHRpZCAoZWxsZXIgaGVsZSBkYWdlbiBiZWdpdmVuaGV0ZXIpJzsKJGxhbmdbJ2NhbF9vdmVybGFwJ10gPSAnVGlsbGF0IG55ZSBhcnJhbmdlbWVudGVyIGZvciDDpSBvdmVybGFwcGUgbWVkIGRlbm5lJzsKJGxhbmdbJ3Byb21wdF9vdmVybGFwX3BvbGljeSddID0gJ0JlZ2l2ZW5oZXQgb3ZlcmxhcHBpbmdzcmVnbGVyJzsKJGxhbmdbJ3BvbGljeV9hbGwnXSA9ICdBbGxlIGJlZ2l2ZW5oZXRlciBrYW4gb3ZlcmxhcHBlJzsKJGxhbmdbJ3BvbGljeV9ub25lJ10gPSAnSW5nZW4gYmVnaXZlbmhldGVyIGthbiBvdmVybGFwcGUnOwokbGFuZ1sncG9saWN5X2luZGl2aWR1YWwnXSA9ICdCZXN0ZW10IHZlZCBodmVyIGJlZ2l2ZW5oZXQnOwokbGFuZ1snbGJsX2JhY2snXSA9ICdUaWxiYWtlJzsKJGxhbmdbJ2xibF90ZW1wbGF0ZXMnXSA9ICdNYWxlcic7CiRsYW5nWyd0ZXh0YXJlYSddID0gJ1Rla3N0b21yw6VkZSc7CiRsYW5nWydlcnJvcl9jYWxlbmRhcl9pbmNvbXBhdGlibGUnXSA9ICdWaSBoYXIgb3BwZGFnZXQgYXQgY2FsZW5kYXIgbW9kdWxlbiBlciBpbnN0YWxsZXJ0IG9nc8OlLi4uIERlbm5lIG1vZHVsZW4gZXIgaWtrZSBrb21wYXRpYmVsIG1lZCBjYWxlbmRhciBtb2R1bGVuIG9nIGthbiBpa2tlIHbDpnJlIGluc3RhbGxlcnQgcMOlIHNhbW1lIG5ldHRzdGVkLiBWZW5ubGlnc3QgYXZpbnN0YWxsZXIgQ2FsZW5kYXIgbW9kdWxlbic7CiRsYW5nWydlcnJvcl9ldmVudF9ub3RfZm91bmQnXSA9ICdFbnRlbiBlciBpa2tlIGV2ZW50X2lkIGkgZGF0YWJhc2VuLCBlbGxlciBzw6UgZXIgZGV0IG1lciBlbm4gZW4gYmVnaXZlbmhldCBtZWQgZGVubmUgaWQhICglZCknOwokbGFuZ1snZmlyc3RfcGFnZSddID0gJzw8JzsKJGxhbmdbJ3ByZXZfcGFnZSddID0gJzwnOwokbGFuZ1snbmV4dF9wYWdlJ10gPSAnPic7CiRsYW5nWydsYXN0X3BhZ2UnXSA9ICc+Pic7CiRsYW5nWydwYWdlX29mJ10gPSAnU2lkZSAlZCBhdiAlZCc7CiRsYW5nWydzZWFyY2hfcmVzdWx0cyddID0gJ0thbGVuZGVyIHPDuGtlcmVzdWx0YXRlcic7CiRsYW5nWydzZWFyY2hfd29yZHMnXSA9ICdTw7hrZW9yZCc7CiRsYW5nWydub19yZXN1bHRzX2ZvdW5kJ10gPSAnSW5nZW4gZnVubiBmb3Igc3DDuHJyaW5nZW4gZHUgYW5nYSc7CiRsYW5nWydmcmVxdWVuY3knXSA9ICdIeXBwaWdoZXQnOwokbGFuZ1snc3BlY2lmaWVkX2RhdGUnXSA9ICdCcnVrIGRlbiBzcGVzaWZpc2VydGUgZGF0byc7CiRsYW5nWydmaXJzdF9zdW5kYXknXSA9ICdGw7hyc3RlIHPDuG5kYWcgaSBtw6VuZWRlbic7CiRsYW5nWydmaXJzdF9tb25kYXknXSA9ICdmw7hyc3RlIG1hbmRhZyBpIG3DpW5lZGVuJzsKJGxhbmdbJ2ZpcnN0X3R1ZXNkYXknXSA9ICdGw7hyc3RlIHRpcnNkYWcgaSBtw6VuZWRlbic7CiRsYW5nWydmaXJzdF93ZWRuZXNkYXknXSA9ICdmw7hyc3RlIG9uc2RhZyBpIG3DpW5lZGVuJzsKJGxhbmdbJ2ZpcnN0X3RodXJzZGF5J10gPSAnRsO4cnN0ZSB0b3JzZGFnIGkgbcOlbmVkZW4nOwokbGFuZ1snZmlyc3RfZnJpZGF5J10gPSAnRsO4cnN0ZSBmcmVkYWcgaSBtw6VuZWRlbic7CiRsYW5nWydmaXJzdF9zYXR1cmRheSddID0gJ2bDuHJzdGUgbMO4cmRhZyBpIG3DpW5lZGVuJzsKJGxhbmdbJ3NlY29uZF9zdW5kYXknXSA9ICdBbmRyZSBzw7huZGFnIGkgbcOlbmVkZW4nOwokbGFuZ1snc2Vjb25kX21vbmRheSddID0gJ0FuZHJlIG1hbmRhZyBpIG3DpW5lZGVuJzsKJGxhbmdbJ3NlY29uZF90dWVzZGF5J10gPSAnQW5kcmUgdGlyc2RhZyBpIG3DpW5lZGVuJzsKJGxhbmdbJ3NlY29uZF93ZWRuZXNkYXknXSA9ICdBbmRyZSBvbnNkYWcgaSBtw6VuZWRlbic7CiRsYW5nWydzZWNvbmRfdGh1cnNkYXknXSA9ICdBbmRyZSB0b3JzZGFnIGkgbcOlbmVkZW4nOwokbGFuZ1snc2Vjb25kX2ZyaWRheSddID0gJ0FuZHJlIGZyZWRhZyBpIG3DpW5lZGVuJzsKJGxhbmdbJ3NlY29uZF9zYXR1cmRheSddID0gJ0FuZHJlIGzDuHJkYWcgaSBtw6VuZWRlbic7CiRsYW5nWyd0aGlyZF9zdW5kYXknXSA9ICdUcmVkamUgc8O4bmRhZyBpIG3DpW5lZGVuJzsKJGxhbmdbJ3RoaXJkX21vbmRheSddID0gJ1RyZWRqZSBtYW5kYWcgaSBtw6VuZWRlbic7CiRsYW5nWyd0aGlyZF90dWVzZGF5J10gPSAnVHJlZGplIHRpcnNkYWcgaSBtw6VuZWRlbic7CiRsYW5nWyd0aGlyZF93ZWRuZXNkYXknXSA9ICdUcmVkamUgb25zZGFnIGkgbcOlbmVkZW4nOwokbGFuZ1sndGhpcmRfdGh1cnNkYXknXSA9ICdUcmVkamUgdG9yc2RhZyBpIG3DpW5lZGVuJzsKJGxhbmdbJ3RoaXJkX2ZyaWRheSddID0gJ1RyZWRqZSBmcmVkYWcgaSBtw6VuZWRlbic7CiRsYW5nWyd0aGlyZF9zYXR1cmRheSddID0gJ3RyZWRqZSBsw7hyZGFnIGkgbcOlbmVkZW4nOwokbGFuZ1snZm91cnRoX3N1bmRheSddID0gJ0ZqZXJkZSBzw7huZGFnIGkgbcOlbmVkZW4nOwokbGFuZ1snZm91cnRoX21vbmRheSddID0gJ0ZqZXJkZSBtYW5kYWcgaSBtw6VuZWRlbic7CiRsYW5nWydmb3VydGhfdHVlc2RheSddID0gJ0ZqZXJkZSB0aXJzZGFnIGkgbcOlbmVkZW4nOwokbGFuZ1snZm91cnRoX3dlZG5lc2RheSddID0gJ0ZqZXJkZSBvbnNkYWcgaSBtw6VuZWRlbic7CiRsYW5nWydmb3VydGhfdGh1cnNkYXknXSA9ICdGamVyZGUgdG9yc2RhZyBpIG3DpW5lZGVuJzsKJGxhbmdbJ2ZvdXJ0aF9mcmlkYXknXSA9ICdGamVyZGUgZnJlZGFnIGkgbcOlbmVkZW4nOwokbGFuZ1snZm91cnRoX3NhdHVyZGF5J10gPSAnRmplcmRlIGzDuHJkYWcgaSBtw6VuZWRlbic7CiRsYW5nWydsYXN0X3N1bmRheSddID0gJ1Npc3RlIHPDuG5kYWcgaSBtw6VuZWRlbic7CiRsYW5nWydsYXN0X21vbmRheSddID0gJ1Npc3RlIG1hbmRhZyBpIG3DpW5lZGVuJzsKJGxhbmdbJ2xhc3RfdHVlc2RheSddID0gJ1Npc3RlIHRpcnNkYWcgaSBtw6VuZWRlbic7CiRsYW5nWydsYXN0X3dlZG5lc2RheSddID0gJ1Npc3RlIG9uc2RhZyBpIG3DpW5lZGVuJzsKJGxhbmdbJ2xhc3RfdGh1cnNkYXknXSA9ICdTaXN0ZSB0b3JzZGFnIGkgbcOlbmVkZW4nOwokbGFuZ1snbGFzdF9mcmlkYXknXSA9ICdTaXN0ZSBmcmVkYWcgaSBtw6VuZWRlbic7CiRsYW5nWydsYXN0X3NhdHVyZGF5J10gPSAnU2lzdGUgbMO4cmRhZyBpIG3DpW5lZGVuJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRfcmVjdXJfbW9udGhseV9mcmVxJ10gPSAnVWd5bGRpZyBoeXBwaWdoZXQuLi4uIGR1IGthbiBpa2tlIHNwZXNpZmlzZXJlIGLDpWRlIGVuIHNwZXNpZmlrayBkYXRvIE9HIGFuZHJlIHZhbGcnOwokbGFuZ1snc2VhcmNocmVzdWx0dGVtcGxhdGVfYWRkZWRpdCddID0gJ0xlZ2cgdGlsL3JlZGlnZXIgZW4gc8O4a2VyZXN1bHRhdCBtYWwnOwokbGFuZ1snaW5mb19zZWFyY2hyZXN1bHRfdGVtcGxhdGVfdGFiJ10gPSAnTGlzdGVuIG1lZCBtYWxlciBzb20gZXIgdGlsZ2plbmdlbGlnIGZvciBzw7hrZXJlc3VsdGF0IHZpc25pbmdlbic7CiRsYW5nWydpbmZvX3N5c2RmbHRfc2VhcmNocmVzdWx0X3RlbXBsYXRlJ10gPSAnU3lzdGVtc3RhbmRhcmQgc8O4a2VyZXN1bHRhdCBtYWwnOwokbGFuZ1snY2FsX3NlYXJjaF9yZXN1bHRfdGVtcGxhdGVzJ10gPSAnU8O4a2VyZXN1bHRhdCBtYWxlcic7CiRsYW5nWydlcnJvcl9xdWVyeV9mYWlsZWQnXSA9ICdEYXRhYmFzZXNww7hycmluZyBmZWlsZXQnOwokbGFuZ1snZXJyb3Jfc2VhcmNoX2ludmFsaWRfZGF0ZXMnXSA9ICcqVWd5bGRpZ2Ugc8O4a2VkYXRvZXIgc3Blc2lmaXNlcnQnOwokbGFuZ1sndGV4dCddID0gJ1Rla3N0JzsKJGxhbmdbJ3NlYXJjaCddID0gJ1PDuGsnOwokbGFuZ1snY2F0ZWdvcnknXSA9ICdLYXRlZ29yaSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfc2VhcmNoX3RlbXBsYXRlJ10gPSAnU3lzdGVtc3RhbmRhcmQgc8O4a2Vza2plbWEgbWFsJzsKJGxhbmdbJ3NlYXJjaHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdMZWdnIHRpbC9yZWRpZ2VyIHPDuGtlc2tqZW1hIG1hbCc7CiRsYW5nWydpbmZvX3NlYXJjaF90ZW1wbGF0ZV90YWInXSA9ICdMaXN0ZW4gbWVkIG1hbGVyIHNvbSBlciB0aWxnamVuZ2VsaWcgZm9yIHPDuGtlc2tqZW1hZXQnOwokbGFuZ1snY2FsX3NlYXJjaF9mb3JtX3RlbXBsYXRlcyddID0gJ1PDuGtlc2tqZW1hIG1hbGVyJzsKJGxhbmdbJ21heCddID0gJ21ha3MnOwokbGFuZ1sndGltZXMnXSA9ICdnYW5nZXInOwokbGFuZ1snb24nXSA9ICdww6UnOwokbGFuZ1snYXJleW91c3VyZV91bmluc3RhbGwnXSA9ICdFciBkdSBzaWtrZXIgcMOlIGF0IGR1IHZpbCBnasO4cmUgZGV0dGU/IMOFIGZvcnRzZXR0ZSB2aWwgcGVybWFuZW50IHNsZXR0ZSBhbGwgZGF0YSBhc3Nvc2llcnQgbWVkIGRlbm5lIG1vZHVsZW4uJzsKJGxhbmdbJ3Bvc3RfdW5pbnN0YWxsJ10gPSAnQ2FsZW5kYXIgbW9kdWxlbiBoYXIgYmxpdHQgYXZpbnN0YWxsZXJ0IG9nIGFsbCBiZWdpdmVuaGV0LSBvZyBtYWxpbmZvcm1hc2pvbiBhc3Nvc2llcnQgbWVkIGRlbm5lIG1vZHVsZW4gaGFyIGJsaXR0IGZqZXJuZXQnOwokbGFuZ1snZmllbGR1cGRhdGVkJ10gPSAnRmVsdCBvcHBkYXRlcnQnOwokbGFuZ1snZXZlcnknXSA9ICdIdmVyJzsKJGxhbmdbJ29yJ10gPSAnZWxsZXInOwokbGFuZ1sndXBkYXRlX2NoaWxkcmVuJ10gPSAnT3BwZGF0ZXIgdW5kZXJsaWdnZW5kZSBiZWdpdmVuaGV0ZXInOwokbGFuZ1snZXJyb3Jfbm9jYXRlZ29yeSddID0gJ0R1IG3DpSB2ZWxnZSBtaW5zdCBlbiBrYXRlZ29yaSc7CiRsYW5nWydlcnJvcl9ub3RoaW5nc2VsZWN0ZWQnXSA9ICdJbmdlbnRpbmcgZXIgdmFsZ3QgZm9yIHNsZXR0aW5nJzsKJGxhbmdbJ2Vycm9yX2V2ZW50b3ZlcmxhcCddID0gJ0dqZW50YXR0IGJlZ2l2ZW5oZXQgcGFyYW1ldGVybmUgZHUgaGFyIG9wcGdpdHQgdmlsIHJlc3VsdGVyZSBpIG92ZXJsYXBwZW5kZSBiZWdpdmVuaGV0ZXIuJzsKJGxhbmdbJ3JlY3VycyddID0gJ0dqZW50YXMnOwokbGFuZ1snZXJyb3JfaW52YWxpZF9kYXRlcyddID0gJ0VuIGVsbGVyIGZsZXJlIGF2IGRhdG92ZXJkaWVuZSBzb20gZWVyIG9wcGdpdHQgdmFyIGlra2UgZ3lsZGlnJzsKJGxhbmdbJ3N1bmRheSddID0gJ1PDuG5kYWcnOwokbGFuZ1snbW9uZGF5J10gPSAnTWFuZGFnJzsKJGxhbmdbJ3R1ZXNkYXknXSA9ICdUaXJzZGFnJzsKJGxhbmdbJ3dlZG5lc2RheSddID0gJ09uc2RhZyc7CiRsYW5nWyd0aHVyc2RheSddID0gJ1RvcnNkYWcnOwokbGFuZ1snZnJpZGF5J10gPSAnRnJlZGFnJzsKJGxhbmdbJ3NhdHVyZGF5J10gPSAnTMO4cmRhZyc7CiRsYW5nWydhYmJyX3N1bmRheSddID0gJ1PDuCc7CiRsYW5nWydhYmJyX21vbmRheSddID0gJ01hJzsKJGxhbmdbJ2FiYnJfdHVlc2RheSddID0gJ1RpJzsKJGxhbmdbJ2FiYnJfd2VkbmVzZGF5J10gPSAnT24nOwokbGFuZ1snYWJicl90aHVyc2RheSddID0gJ1RvJzsKJGxhbmdbJ2FiYnJfZnJpZGF5J10gPSAnRnInOwokbGFuZ1snYWJicl9zYXR1cmRheSddID0gJ0zDuCc7CiRsYW5nWyd3ZWVrJ10gPSAnVWtlJzsKJGxhbmdbJ21vbnRoJ10gPSAnTcOlbmVkJzsKJGxhbmdbJ2RheSddID0gJ0RhZyc7CiRsYW5nWyd0b2RheSddID0gJ0kgZGFnJzsKJGxhbmdbJ3dlZWtkYXlzJ10gPSAnVWtlZGFnZXInOwokbGFuZ1sncGx1cmFsX25vbmUnXSA9ICdJbmdlbic7CiRsYW5nWydwbHVyYWxfZGFpbHknXSA9ICdEYWdlcic7CiRsYW5nWydwbHVyYWxfd2Vla2x5J10gPSAnVWtlcic7CiRsYW5nWydwbHVyYWxfbW9udGhseSddID0gJ03DpW5lZGVyJzsKJGxhbmdbJ3BsdXJhbF95ZWFybHknXSA9ICfDhXInOwokbGFuZ1snbm8nXSA9ICdOZWknOwokbGFuZ1snZGFpbHknXSA9ICdEYWdsaWcnOwokbGFuZ1snd2Vla2x5J10gPSAnVWtlbnRsaWcnOwokbGFuZ1snbW9udGhseSddID0gJ03DpW5lZGxpZyc7CiRsYW5nWyd5ZWFybHknXSA9ICfDhXJsaWcnOwokbGFuZ1snaW50ZXJ2YWwnXSA9ICdHamVudGEgaHZlcic7CiRsYW5nWydjYWxfcmVjdXJfZGV0YWlscyddID0gJ0dqZW50YWtlbmRlIGJlZ2l2ZW5oZXRzZGV0YWxqZXInOwokbGFuZ1sndW5saW1pdGVkJ10gPSAnVWJlZ3JlbnNldCc7CiRsYW5nWydtYXhfcmVjdXJfZXZlbnRzJ10gPSAnTWFrc2ltYWx0IGFudGFsbCB1bmRlcmxpZ2dlbmRlIGJlZ2l2ZW5oZXRlcic7CiRsYW5nWyd1c2VfdG9fZGF0ZSddID0gJ1NwZXNpZmlzZXIgZW4gYW5uZW4gc2x1dHRkYXRvPyc7CiRsYW5nWydjYW5jZWwnXSA9ICdBdmJyeXQnOwokbGFuZ1snc2hvd19jaGlsZF9ldmVudHMnXSA9ICdWaXMgdW5kZXItYmVnaXZlbmhldCc7CiRsYW5nWyduL2EnXSA9ICdpL3QnOwokbGFuZ1sncmVjdXJzX3VudGlsJ10gPSAnR2plbnRhIGlubnRpbCc7CiRsYW5nWydwYXJlbnQnXSA9ICdPdmVyb3JkbmV0JzsKJGxhbmdbJ3JlY3VyX3BlcmlvZCddID0gJ0dqZW50YWtlbHNlc3BlcmlvZGUnOwokbGFuZ1snZmlsdGVyJ10gPSAnRmlsdHJlcic7CiRsYW5nWydzdGFydF9kYXRlJ10gPSAnU3RhcnRkYXRvJzsKJGxhbmdbJ2VuZF9kYXRlJ10gPSAnU3V0dGRhdG8nOwokbGFuZ1snaW5mb191cGNvbWluZ2xpc3RfdGVtcGxhdGVfdGFiJ10gPSAnTGlzdGVuIG1lZCBtYWxlciBzb20gZXIgdGlsZ2plbmdlbGlnZSBmb3IgdXBjb21pbmdsaXN0KGtvbW1lbmRlIGJlZ2l2ZW5oZXRlcnNsaXN0ZSkgdmlzbmluZyc7CiRsYW5nWyd1cGNvbWluZ2xpc3R0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnTGVnZyB0aWwvcmVkaWdlciBVcGNvbWluZ2xpc3Qoa29tbWVuZGUgYmVnaXZlbmhldGVyc2xpc3RlKSB2aXNuaW5nc21hbCc7CiRsYW5nWydpbmZvX3N5c2RmbHRfdXBjb21pbmdsaXN0X3RlbXBsYXRlJ10gPSAnU3lzdGVtc3RhbmRhcmQgVXBjb21pbmdsaXN0KGtvbW1lbmRlIGJlZ2l2ZW5oZXRlcnNsaXN0ZSkgbWFsJzsKJGxhbmdbJ2luZm9fbGlzdF90ZW1wbGF0ZV90YWInXSA9ICdMaXN0ZW4gbWVkIG1hbGVyIHNvbSBlciB0aWxnamVuZ2VsaWdlIGZvciBsaXN0ZXZpc25pbmdlcic7CiRsYW5nWydsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ0xlZ2cgdGlsL3JlZGlnZXIgZW4gTGlzdGV2aXNuaW5nc21hbCc7CiRsYW5nWydpbmZvX3N5c2RmbHRfbGlzdF90ZW1wbGF0ZSddID0gJ1N5c3RlbXN0YW5kYXJkIExpc3RldmlzbmluZ3NtYWwnOwokbGFuZ1snaW5mb19ldmVudF90ZW1wbGF0ZV90YWInXSA9ICdMaXN0ZW4gbWVkIG1hbGVyIHNvbSBlciB0aWxnamVuZ2VsaWdlIGZvciBCZWdpdmVuaGV0c3Zpc25pbmdlcic7CiRsYW5nWydldmVudHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdMZWdnIHRpbC9yZWRpZ2VyIGVuIEJlZ2l2ZW5oZXRzdmlzbmluZ3NtYWwnOwokbGFuZ1snaW5mb19zeXNkZmx0X2V2ZW50X3RlbXBsYXRlJ10gPSAnU3lzdGVtc3RhbmRhcmQgIEJlZ2l2ZW5oZXRzbWFsJzsKJGxhbmdbJ2luZm9fY2FsZW5kYXJfdGVtcGxhdGVfdGFiJ10gPSAnTGlzdGVuIG1lZCBtYWxlciBzb20gZXIgdGlsZ2plbmdlbGlnZSBmb3Iga2FsZW5kZXJ2aXNuaW5nZXInOwokbGFuZ1snY2FsZW5kYXJ0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnTGVnZyB0aWwvcmVkaWdlciBlbiBLYWxlbmRlcnZpc25pbmdzbWFsJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ1N5c3RlbXN0YW5kYXJkIEthbGVuZGVybWFsJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF90ZW1wbGF0ZSddID0gJ0RldHRlIHNramVtYSBkZWZpbmVyZXIgbWFsZW4gc29tIHZpbCBibGkgYmVueXR0ZXQgbsOlciBkdSBrbGlra2VyICJOeSBtYWwiIGkgZGVuIGFrdHVlbGxlIGZhbmVuLiDDhSBlbmRyZSBub2UgaGVyIHZpbCBpa2tlIGhhIG5vZW4gdW1pZGRlbGJhciBlZmZla3QgcMOlIHZpc25pbmdlciBnZW5lcmVydCBmcmEgZGVubmUgbW9kdWxlbi4nOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50QWRkZWQnXSA9ICdLYWxsdCBldHRlciBlbiBrYWxlbmRlcmJlZ2l2ZW5oZXQgbGVnZ2VzIHRpbCc7CiRsYW5nWydldmVudGRlc2MtRXZlbnRFZGl0ZWQnXSA9ICdLYWxsdCBldHRlciBlbiBrYWxsZW5kZXJiZWdpdmVuaGV0IGVyIHJlZGlnZXJ0JzsKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudERlbGV0ZWQnXSA9ICdLYWxsdCBldHRlciBlbiBiZWdpdmVuaGV0IGhhciBibGl0dCBzbGV0dGV0JzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUFkZGVkJ10gPSAnS2FsbHQgZXR0ZXIgZW4ga2F0ZWdvcmkgZXIgb3BwcmV0dGV0JzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUVkaXRlZCddID0gJ0thbGx0IGV0dGVyIGVuIGthdGVnb3JpIGVyIHJlZGlnZXJ0JzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeURlbGV0ZWQnXSA9ICdLYWxsdCBldHRlciBlbiBrYXRlZ29yaSBlciBzbGV0dGV0JzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudEFkZGVkJ10gPSAnPHA+U2VuZHQgbsOlciBlbiBrYWxlbmRlcmJlZ2l2ZW5oZXQgZXIgbGFndCB0aWwuPC9wPg0KPGg0PlBhcmFtZXRlcmU8L2g0Pg0KPHVsPg0KPGxpPlwiZXZlbnRfdGl0bGVcIiAtIEJlZ2l2ZW5oZXRzIFRpdHRlbDwvbGk+DQo8bGk+XCJldmVudF9zdW1tYXJ5XCIgLSBTYW1tZW5kcmFnIHRla3N0PC9saT4NCjxsaT5cImV2ZW50X2RldGFpbHNcIiAtIERldGFsamVydCBiZXNrcml2ZWxzZTwvbGk+DQo8bGk+XCJldmVudF9kYXRlX3N0YXJ0XCIgLSBCZWdpdmVuaGV0ZW5zIHN0YXJ0IGRhdG8vdGlkPC9saT4NCjxsaT5cImV2ZW50X2RhdGVfZW5kXCIgLSBCZWdpdmVuaGV0ZW5zIHNsdXR0IGRhdG8vdGlkPC9saT4NCjxsaT5cImV2ZW50X2NyZWF0ZWRfYnlcIiAtIEJydWtlcklEZW4gZm9yIG9wcGhhdnNtYW5uZW48L2xpPg0KPGxpPlwiZXZlbnRfaWRcIiAtIEJlZ2l2ZW5oZXRlbnMgSUQ8L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50RWRpdGVkJ10gPSAnPHA+U2VuZHQgbsOlciBlbiBrYWxlbmRlcmJlZ2l2ZW5oZXQgZXIgcmVkaWdlcnQuPC9wPg0KPGg0PlBhcmFtZXRlcmU8L2g0Pg0KPHVsPg0KPGxpPlwiZXZlbnRfdGl0bGVcIiAtIEJlZ2l2ZW5oZXRzIHRpdHRlbDwvbGk+DQo8bGk+XCJldmVudF9zdW1tYXJ5XCIgLSBTYW1tZW5kcmFnIHRla3N0PC9saT4NCjxsaT5cImV2ZW50X2RldGFpbHNcIiAtIERldGFsamVydCBiZXNrcml2ZWxzZTwvbGk+DQo8bGk+XCJldmVudF9kYXRlX3N0YXJ0XCIgLSBCZWdpdmVuaGV0ZW5zIHN0YXJ0IGRhdG8vdGlkPC9saT4NCjxsaT5cImV2ZW50X2RhdGVfZW5kXCIgLSBCZWdpdmVuaGV0ZW5zIHNsdXR0IGRhdG8vdGlkPC9saT4NCjxsaT5cImV2ZW50X2NyZWF0ZWRfYnlcIiAtIEJydWtlcklEZW4gZm9yIG9wcGhhdnNtYW5uZW48L2xpPg0KPGxpPlwiZXZlbnRfaWRcIiAtIEJlZ2l2ZW5oZXRlbnMgSUQ8L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50RGVsZXRlZCddID0gJzxwPlNlbmR0IG7DpXIgZW4ga2FsZW5kZXJiZWdpdmVuaGV0IGVyIHNsZXR0ZXQuPC9wPg0KPGg0PlBhcmFtZXRlcmU8L2g0Pg0KPHVsPg0KPGxpPlwiZXZlbnRfaWRcIiAtIEJlZ2l2ZW5oZXRlbnMgSUQ8L2xpPg0KPC91bD4nOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5QWRkZWQnXSA9ICc8cD5TZW5kdCBuw6VyIGVuIGthbGVuZGVyIGthdGVnb3JpIGVyIGxhZ3QgdGlsLjwvcD4NCjxoND5QYXJhbWV0ZXJlPC9oND4NCjx1bD4NCjxsaT5cImNhdGVnb3J5X2lkXCIgLSBLYXRlZ29yaSBJRGVuPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeUVkaXRlZCddID0gJzxwPlNlbmR0IG7DpXIgZW4ga2FsZW5kZXIga2F0ZWdvcmkgZXIgcmVkaWdlcnQuPC9wPg0KPGg0PlBhcmFtZXRlcmU8L2g0Pg0KPHVsPg0KPGxpPlwiY2F0ZWdvcnlfaWRcIiAtIEthdGVnb3JpIElEZW48L2xpPg0KPGxpPlwiY2F0ZWdvcnlfbmFtZVwiIC0gS2F0ZWdvcmkgbmF2bmV0PC9saT4NCjxsaT5cImNhdGVnb3J5X29yZGVyXCIgLSBLYXRlZ29yaSBzb3J0ZXJpbmdzcmVra2Vmw7hsZ2VuPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeURlbGV0ZWQnXSA9ICc8cD5TZW5kdCBuw6VyIGVuIGthbGVuZGVyIGthdGVnb3JpIGVyIHNsZXR0ZXQuPC9wPg0KPGg0PlBhcmFtZXRlcmU8L2g0Pg0KPHVsPg0KPGxpPlwiY2F0ZWdvcnlfaWRcIiAtIEthdGVnb3JpIElEZW48L2xpPg0KPGxpPlwiY2F0ZWdvcnlfbmFtZVwiIC0gS2F0ZWdvcmkgbmF2bmV0PC9saT4NCjxsaT5cImNhdGVnb3J5X29yZGVyXCIgLSBLYXRlZ29yaSBzb3J0ZXJpbmdzcmVra2Vmw7hsZ2VuPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2Vycm9yX2Nzdl9pbnNlcnQnXSA9ICdGZWlsIHZlZCBpbXBvcnQgYXYgYmVnaXZlbmhldCBmcmEgY3N2IHDDpSBsaW5qZSAlZCc7CiRsYW5nWydlcnJvcl9jc3ZmaXJzdGxpbmVmbGRub3Rmb3VuZCddID0gJ0V0IHDDpWtyZXZkIGZlbHQ6ICVzLCBibGUgaWtrZSBmdW5uZXQgaSBkZW5uZSBDU1YtZmlsZW5zIG92ZXJza3JpZnRzbGluamUnOwokbGFuZ1snZXJyb3JfY3N2aW52YWxpZGZpcnN0bGluZSddID0gJ0tsYXJ0ZSBpa2tlIMOlIGZpbm5lIGVuIGd5bGRpZyBmw7hyc3RlIGxpbmplIGkgQ1NWLWZpbGVuJzsKJGxhbmdbJ21zZ19ldmVudGFkZGVkJ10gPSAnQmVnaXZlbmhldCBsYWd0IHRpbCc7CiRsYW5nWydlcnJvcl9ub2V2ZW50bmFtZSddID0gJ0V0IG5hdm4gcMOlIGJlZ2l2ZW5oZXRlbiBlciBww6VrcmV2ZCc7CiRsYW5nWydlcnJvcl9ub3VwbG9hZCddID0gJ0ZFSUw6IEluZ2VuIG9wcGxhc3RldCBmaWwgZnVubmV0JzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRmaWxlbmFtZSddID0gJ0ZFSUw6IERlbiBvcHBsYXN0ZWRlIGZpbGVuIGthbiBpa2tlIGFrc2VwdGVyZXMnOwokbGFuZ1snZXJyb3JfcHJvYmxlbXdpdGh1cGxvYWQnXSA9ICdGRUlMOiBFdCBwcm9ibGVtIG9wcHN0b2QgdW5kZXIgZm9yc8O4ayBww6Ugw6UgbGFzdGUgb3BwIGZpbGVuJzsKJGxhbmdbJ2Vycm9yX2ZpbGVjb3B5ZmFpbGVkJ10gPSAnRkVJTDogRXQgcHJvYmxlbSBvcHBzdG9kIHVuZGVyIGtvcGllcmluZyBhdiBmaWxhIHRpbCBzaW4gbcOlbHBsYXNzZXJpbmcnOwokbGFuZ1snZXJyb3JfZmlsZWV4aXN0cyddID0gJ0ZFSUw6IEVuIGZpbCBtZWQgZGV0dGUgbmF2bmV0IGVrc2lzdGVyZXIgYWxsZXJlZGUnOwokbGFuZ1snZXJyb3JfY3N2ZmlsZW5vdGZvdW5kJ10gPSAnRkVJTDogS3VubmUgaWtrZSBmaW5uZSBDU1YgRmlsZW4nOwokbGFuZ1snZXJyb3JfY2FudG9wZW5maWxlJ10gPSAnRkVJTDogS2FuIGlra2Ugw6VwbmUgZmlsZW4nOwokbGFuZ1snZXJyb3JfY2F0ZWdvcnlleGlzdHMnXSA9ICdFUlJPUjogRW4ga2F0ZWdvcmkgbWVkIG5hdm5ldCAlcyBla3Npc3RlcmVyIGFsbGVyZWRlJzsKJGxhbmdbJ2NhbF9pZCddID0gJ0lEJzsKJGxhbmdbJ2NhbF9jYWxlbmRhciddID0gJ0NhbGd1eXMgS2FsZW5kZXInOwokbGFuZ1snY2FsX2RlZmF1bHRfdGVtcGxhdGVzJ10gPSAnU3RhbmRhcmQgbWFsZXInOwokbGFuZ1snY2FsX2Rlc2NyaXB0aW9uJ10gPSAnRW4gZmxla3NpYmVsIG1vZHVsIG1lZCBtYW5nZSBlZ2Vuc2thcGVyIHNvbSB0aWxsYXRlciB2aXNuaW5nIGF2IGluZm9ybWFzam9uIG9tIGJlZ2l2ZW5oZXRlciBww6UgbWFuZ2UgZm9yc2tqZWxsaWdlIG3DpXRlci4nOwokbGFuZ1snY2FsX2FkZGV2ZW50J10gPSAnTGVnZyB0aWwgYmVnaXZlbmhldCc7CiRsYW5nWydjYWxfaW1wb3J0X2V2ZW50cyddID0gJ0ltcG9ydCBiZWdpdmVuaGV0ZXInOwokbGFuZ1snY2FsX2V2ZW50cyddID0gJ0JlZ2l2ZW5oZXRlcic7CiRsYW5nWydjYWxfY2F0ZWdvcmllcyddID0gJ0thdGVnb3JpZXInOwokbGFuZ1snY2FsX2NhbGVuZGFyX3RlbXBsYXRlJ10gPSAnTWFsIGZvciBrYWxlbmRlcic7CiRsYW5nWydjYWxfbGlzdF90ZW1wbGF0ZSddID0gJ01hbCBmb3IgbGlzdGV2aXNuaW5nJzsKJGxhbmdbJ2NhbF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICdNYWwgZm9yIGZvcmVzdMOlZW5kZSBiZWdpdmVuaGV0ZXInOwokbGFuZ1snY2FsX2V2ZW50X3RlbXBsYXRlJ10gPSAnTWFsIGZvciBiZWdpdmVuaGV0ZXInOwokbGFuZ1snY2FsX3NldHRpbmdzJ10gPSAnS29uZmlndXJhc2pvbic7CiRsYW5nWydjYWxfcHJldiddID0gJ8KrIEZvcnJpZ2UnOwokbGFuZ1snY2FsX25leHQnXSA9ICdOZXN0ZSDCuyc7CiRsYW5nWydjYWxfY2F0ZWdvcmllc191cGRhdGVkJ10gPSAnS2F0ZWdvcmllciBlciBvcHBkYXRlcnQnOwokbGFuZ1snY2FsX3NldHRpbmdzX3VwZGF0ZWQnXSA9ICdLb25maWd1cmFzam9uIGVyIG9wcGRhdGVydCc7CiRsYW5nWydjYWxfYWRkX2V2ZW50J10gPSAnTGVnZyB0aWwgYmVnaXZlbmhldCc7CiRsYW5nWydjYWxfZWRpdCddID0gJ0VuZHJlJzsKJGxhbmdbJ2NhbF9kZWxldGUnXSA9ICdTbGV0dCc7CiRsYW5nWydjYWxfYXJleW91c3VyZSddID0gJ8OYbnNrZXIgZHUgdmlya2VsaWcgw6Ugc2xldHRlJzsKJGxhbmdbJ2NhbF91cGRhdGVfdGVtcGxhdGUnXSA9ICdPcHBkYXRlciBtYWwnOwokbGFuZ1snY2FsX3N1bmRheSddID0gJ1PDuG5kYWcnOwokbGFuZ1snY2FsX21vbmRheSddID0gJ01hbmRhZyc7CiRsYW5nWydjYWxfdHVlc2RheSddID0gJ1RpcnNkYWcnOwokbGFuZ1snY2FsX3dlZG5lc2RheSddID0gJ09uc2RhZyc7CiRsYW5nWydjYWxfdGh1cnNkYXknXSA9ICdUb3JzZGFnJzsKJGxhbmdbJ2NhbF9mcmlkYXknXSA9ICdGcmVkYWcnOwokbGFuZ1snY2FsX3NhdHVyZGF5J10gPSAnTMO4cmRhZyc7CiRsYW5nWydjYWxfc3VuJ10gPSAnU8O4bic7CiRsYW5nWydjYWxfbW9uJ10gPSAnTWFuJzsKJGxhbmdbJ2NhbF90dWVzJ10gPSAnVGlyJzsKJGxhbmdbJ2NhbF93ZWQnXSA9ICdPbnMnOwokbGFuZ1snY2FsX3RodXJzJ10gPSAnVG9yJzsKJGxhbmdbJ2NhbF9mcmknXSA9ICdGcmUnOwokbGFuZ1snY2FsX3NhdCddID0gJ0zDuHInOwokbGFuZ1snY2FsX2phbnVhcnknXSA9ICdKYW51YXInOwokbGFuZ1snY2FsX2ZlYnJ1YXJ5J10gPSAnRmVicnVhcic7CiRsYW5nWydjYWxfbWFyY2gnXSA9ICdNYXJzJzsKJGxhbmdbJ2NhbF9hcHJpbCddID0gJ0FwcmlsJzsKJGxhbmdbJ2NhbF9tYXknXSA9ICdNYWknOwokbGFuZ1snY2FsX2p1bmUnXSA9ICdKdW5pJzsKJGxhbmdbJ2NhbF9qdWx5J10gPSAnSnVsaSc7CiRsYW5nWydjYWxfYXVndXN0J10gPSAnQXVndXN0JzsKJGxhbmdbJ2NhbF9zZXB0ZW1iZXInXSA9ICdTZXB0ZW1iZXInOwokbGFuZ1snY2FsX29jdG9iZXInXSA9ICdPa3RvYmVyJzsKJGxhbmdbJ2NhbF9ub3ZlbWJlciddID0gJ05vdmVtYmVyJzsKJGxhbmdbJ2NhbF9kZWNlbWJlciddID0gJ0Rlc2VtYmVyJzsKJGxhbmdbJ2NhbF9hZGQnXSA9ICdMZWdnIHRpbCc7CiRsYW5nWydjYWxfdXBkYXRlJ10gPSAnTGFncmUgb2cgbHVrayc7CiRsYW5nWydjYWxfZXZlbnQnXSA9ICdCZWdpdmVuaGV0JzsKJGxhbmdbJ2NhbF9kYXRlJ10gPSAnRGF0byc7CiRsYW5nWydjYWxfc3VtbWFyeSddID0gJ1NhbW1lbmRyYWcnOwokbGFuZ1snY2FsX2RldGFpbHMnXSA9ICdEZXRhbGplcic7CiRsYW5nWydjYWxfbW9yZSddID0gJ21lciA+Pic7CiRsYW5nWydjYWxfcmV0dXJuJ10gPSAnVGlsYmFrZSc7CiRsYW5nWydjYWxfdG8nXSA9ICd0aWwnOwokbGFuZ1snY2FsX3Bhc3RfZXZlbnRzJ10gPSAnR2FtbGUgYmVnaXZlbmhldGVyJzsKJGxhbmdbJ2NhbF91cGNvbWluZ19ldmVudHMnXSA9ICdLb21tZW5kZSBiZWdpdmVuaGV0ZXInOwokbGFuZ1snY2FsX2FueV9jYXRlZ29yeSddID0gJ0FsbGUga2F0ZWdvcmllcic7CiRsYW5nWydjYWxfc2hvd19vbmx5X2V2ZW50c19pbiddID0gJ1ZpcyBiYXJlIGJlZ2l2ZW5oZXRlciBpJzsKJGxhbmdbJ2NhbF9maWx0ZXJfYnknXSA9ICdGaWx0cmVyIG1lZCc7CiRsYW5nWydjYWxfZ28nXSA9ICdPSyc7CiRsYW5nWydjYWxfdGl0bGUnXSA9ICdUaXR0ZWwnOwokbGFuZ1snY2FsX2Zyb21kYXRlJ10gPSAnRnJhIGRhdG8nOwokbGFuZ1snY2FsX3RvZGF0ZSddID0gJ1RpbCBkYXRvJzsKJGxhbmdbJ2NhbF91cGRhdGVfY2F0ZWdvcmllcyddID0gJ09wcGRhdGVyIGthdGVnb3JpZXInOwokbGFuZ1snY2FsX2xhbmd1YWdlJ10gPSAnU3Byw6VrJzsKJGxhbmdbJ2NhbF91cGRhdGVzZXR0aW5ncyddID0gJ09wcGRhdGVyIGlubnN0aWxsaW5nZXInOwokbGFuZ1snY2FsX3VzZV90d2VsdmVfaG91cl9jbG9jayddID0gJ0JydWsgdG9sdi10aW1lcnMga2xva2tlIGZvciB0aW1lIG5lZHRyZWtrPyc7CiRsYW5nWydjYWxfZGVmYXVsdF9jYXRlZ29yeSddID0gJ1N0YW5kYXJkIEthdGVnb3JpJzsKJGxhbmdbJ2NhbF91cGRhdGVfZmllbGRzJ10gPSAnT3BwZGF0ZXIgZmVsdGVyJzsKJGxhbmdbJ2ZvcmNlX2NhdGVnb3J5J10gPSAnS3JldiBtaW5zdCBlbiBrYXRlZ29yaSc7CiRsYW5nWydzaG93cGFzdHllYXJzJ10gPSAnSHZvciBtYW5nZSBoaXN0b3Jpc2tlIMOlciBlciB0aWxsYXR0JzsKJGxhbmdbJ3Nob3dmdXR1cmV5ZWFycyddID0gJ0h2b3IgbWFuZ2UgZnJlbXRpZGlnZSDDpXIgZXIgdGlsbGF0dCc7CiRsYW5nWydoaWRlc3VtbWFyeSddID0gJ1NrYWwgc2FtbWVuZHJhZy1mZWx0ZXQgdsOmcmUgc2tqdWx0JzsKJGxhbmdbJ2hpZGVjb250ZW50J10gPSAnU2thbCBpbm5ob2xkLWZlbHRldCB2w6ZyZSBza2p1bHQnOwokbGFuZ1snY2F0ZWdvcnlfcmVtaW5kZXInXSA9ICdWZW5ubGlnc3QgdmVsZyBlbiBlbGxlciBmbGVyZSBrYXRlZ29yaWVyIGZvciBkZW5uZSBiZWdpdmVuaGV0JzsKJGxhbmdbJ21vZHVsZV9leGFtcGxlX3N0eWxlc2hlZXQnXSA9ICdLYWxlbmRlciBDU1MgZWtzZW1wZWwnOwokbGFuZ1snZXJyb3JfcGVybWlzc2lvbiddID0gJ0R1IHRyZW5nZXIgbsO4ZHZlbmRpZyB0aWxsYXRlbHNlICglcykgZm9yIMOlIGbDpSB0aWxnYW5nIHRpbCBkZW5uZSBmdW5rc2pvbmVuJzsKJGxhbmdbJ2luc3RhbGxfcG9zdG1lc3NhZ2UnXSA9ICdIdXNrIMOlIHNldHRlICJNb2RpZnkgQ2FsZW5kYXIiIHRpbGxhdGVsc2UgZm9yIGJydWtlcmUgc29tIHNrYWwgYWRtaW5pc3RyZXJlIEthbGVuZGVyIGJlZ2l2ZW5oZXRlci4nOwokbGFuZ1snZGVsZXRldGFnZ2VkJ10gPSAnU2xldHQgbWVya2VkZSBiZWdpdmVuaGV0ZXInOwokbGFuZ1snY29uZmlybWRlbGV0ZXRhZ2dlZCddID0gJ0VyIGR1IHNpa2tlciBww6UgYXQgZGlzc2UgYmVnaXZlbmhldGVyIHNrYWwgc2xldHRlcz8nOwokbGFuZ1sndGFnZ2VkZGVsZXRlZCddID0gJ01lcmtlZGUgYmVnaXZlbmhldGVyIGJsZSBzbGV0dGV0JzsKJGxhbmdbJ3RlbXBsYXRlcyddID0gJ01hbGVyJzsKJGxhbmdbJ3RlbXBsYXRlX2hlbHAnXSA9ICdNYWwgSGplbHAnOwokbGFuZ1snZmlsZV90ZW1wbGF0ZXMnXSA9ICdGaWwgTWFsZXInOwokbGFuZ1snYWRkdGVtcGxhdGUnXSA9ICdMZWdnIHRpbCBtYWwnOwokbGFuZ1sndGVtcGxhdGUnXSA9ICdNYWwnOwokbGFuZ1sndGVtcGxhdGVuYW1ldGV4dCddID0gJ01hbG5hdm4nOwokbGFuZ1snZWRpdHRlbXBsYXRlJ10gPSAnUmVkaWdlciBtYWwnOwokbGFuZ1snZGVsZXRldGVtcGxhdGUnXSA9ICdTbGV0dCBtYWwnOwokbGFuZ1snbmV3dGVtcGxhdGUnXSA9ICdOeXR0IG1hbG5hdm4nOwokbGFuZ1sndGVtcGxhdGVuYW1lZXhpc3RzJ10gPSAnRmVpbDogRW4gbWFsIG1lZCBkZXQgbmF2bmV0IGVrc2lzdGVyZXIgYWxsZXJlZGUuIFZlbm5saWdzdCB2ZWxnIGV0IGFubmV0IG5hdm4uJzsKJGxhbmdbJ3RlbXBsYXRlaW1wb3J0ZWQnXSA9ICdFbiBtYWwgYmxlIHZlbGx5a2tldCBpbXBvcnRlcnQgdGlsIGRhdGFiYXNlbiBvZyBlciBuw6UgaW5zdGFsbGVydCBmb3IgYnJ1ay4nOwokbGFuZ1sndmlld19kZWZhdWx0X3N0eWxlc2hlZXQnXSA9ICdWaXMgU3RhbmRhcmQgc3RpbGFyayc7CiRsYW5nWydmaWxlbmFtZSddID0gJ0ZpbG5hdm4nOwokbGFuZ1snaW1wb3J0dGVtcGxhdGUnXSA9ICdJbXBvcnRlciBtYWwnOwokbGFuZ1sndGVtcGxhdGVfZGVsZXRlZCddID0gJ01hbGVuIGJsZSBzbGV0dGV0IGZyYSBkYXRhYmFzZW4uJzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlc3VjY2VzcyddID0gJ01hbGVuIGJsZSB2ZWxseWtrZXQgb3BwZGF0ZXJ0JzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlZmFpbHVyZSddID0gJ0VuIGZlaWwgb3Bwc3RvZCB1bmRlciBvcHBkYXRlcmluZyBhdiBtYWxlbic7CiRsYW5nWydzZXR0aW5nc3NhdmVkJ10gPSAnSW5uc3RpbGxpbmdlbmUgYmxlIGxhZ3JldCc7CiRsYW5nWydjYXRlZ29yeWRlbGV0ZWQnXSA9ICdLYXRlZ29yaSBzbGV0dGV0JzsKJGxhbmdbJ2NhdGVnb3J5dXBkYXRlZCddID0gJ0thdGVnb3JpIG9wcGRhdGVydCc7CiRsYW5nWydjYXRlZ29yeWFkZGVkJ10gPSAnS2F0ZWdvcmkgbGFndCB0aWwnOwokbGFuZ1snZXZlbnRkZWxldGVkJ10gPSAnQmVnaXZlbmhldGVuIGJsZSBzbGV0dGV0JzsKJGxhbmdbJ2V2ZW50dXBkYXRlZCddID0gJ0JlZ2l2ZW5oZXRlbiBibGUgb3BwZGF0ZXJ0JzsKJGxhbmdbJ2RlZmF1bHRfcGFnZV9lcnJvciddID0gJ0ZlaWw6IER1IG3DpSBzZXR0ZSBlbiBzdGFuZGFyZCBzaWRlIGZvciDDpSBrdW5uZSBiZW55dHRlIEthbGVuZGVyIG1lZCB2YWtyZSBVUkxlciBha3RpdmVydC4gVmVubmxpZ3N0IGfDpSB0aWwgS2FsZW5kZXIgaW5uc3RpbGxpbmdlciBvZyB2ZWxnIGVuIHNpZGUuJzsKJGxhbmdbJ3RpbWVfYXQnXSA9ICdww6UnOwokbGFuZ1sndHlwZSddID0gJ1R5cGUnOwokbGFuZ1snbmFtZSddID0gJ05hdm4nOwokbGFuZ1snb3JkZXInXSA9ICdTb3J0ZXInOwokbGFuZ1snZmllbGRhZGRlZCddID0gJ0ZlbHRldCBibGUgbGFndCB0aWwnOwokbGFuZ1snZmllbGRkZWxldGVkJ10gPSAnRmVsdCBzbGV0dGV0JzsKJGxhbmdbJ2ZpZWxkcyddID0gJ0Vrc3RyYWZlbHRlcihDdXN0b20gZmllbGRzKSc7CiRsYW5nWyd0ZXh0ZmllbGQnXSA9ICdUZWtzdGZlbHQnOwokbGFuZ1sndXBsb2FkZmllbGQnXSA9ICdGaWxvcHBsYXN0aW5nc2ZlbHQnOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICc8cD5LYWxlbmRlcihDR0NhbGVuZGFyKSBlciBlbiBtb2R1bCBmb3IgdmlzbmluZyBhdiBiZWdpdmVuaGV0ZXIgcMOlIGRpbiBuZXR0c2lkZS4gTsOlciBtb2R1bGVuIGVyIGluc3RhbGxlcnQgYmxpciBlbiBhZG1pbmlzdHJhc2pvbnNpZGUgZm9yIEthbGVuZGVyIGxhZ3QgdGlsIGlubmhvbGRzbWVueWVuIHNvbSB2aWwgdGlsbGF0ZSBkZWcgw6UgYWRtaW5pc3RyZXJlIGRpbmUgYmVnaXZlbmhldGVyLjwvcD4nOwokbGFuZ1snZGVmYXVsdGNhbGVuZGFycGFnZSddID0gJ1N0YW5kYXJkIHNpZGUgc29tIGlubmVob2xkZXIgS2FsZW5kZXIuIERlbm5lIHNpZGVuIG3DpSBpbm5laG9sZGUgZW4gU21hcnR5IHRhZ2cgc29tIGthbGxlciBvcHAgS2FsZW5kZXIuIERldHRlIGVyIGtyZXZkIG9tIGR1IGJlbnl0dGVyIHZha3JlIFVSTGVyLic7CiRsYW5nWyd1cGxvYWRkaXJlY3RvcnknXSA9ICdLYXRhbG9nIGh2b3IgZmlsb3BwbGFzdGluZ2VyIHNrYWwgcGxhc3NlcmVzJzsKJGxhbmdbJ3VwbG9hZGZpbGV0eXBlcyddID0gJ1RpbGxhdHRlIGZpbHR5cGVyJzsKJGxhbmdbJ3VwbG9hZHVuaXF1ZSddID0gJ1NqZWtrIGZvciB1bmlrZSBmaWxuYXZuJzsKJGxhbmdbJ2NhbF9yZWN1cl9wZXJpb2QnXSA9ICdnamVudGFzJzsKJGxhbmdbJ2NhbF9yZWN1cl91bnRpbCddID0gJ0dqZW50YXMgaW5udGlsJzsKJGxhbmdbJ2hlbHBfdGVtcGxhdGUnXSA9ICc8cD48Yj5Ta3JpdiBPcHBoYXZzbWFubiBuYXZuOjwvYj48L3A+DQo8Y29kZT5PcHBoYXZzbWFubjogeyRldmVudC5hdXRob3JuYW1lfTwvY29kZT4nOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nl_NL.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2RmbHRfY29sb3JzJ10gPSAnU3RhbmRhYXJkIGtsZXVyZW4nOwokbGFuZ1snZWRpdF9jYXRlZ29yeSddID0gJ1dpanppZyBjYXRlZ29yaWUnOwokbGFuZ1snZmdjb2xvciddID0gJ1Zvb3Jncm9uZCBrbGV1cic7CiRsYW5nWydiZ2NvbG9yJ10gPSAnQWNodGVyZ3JvbmQga2xldXInOwokbGFuZ1snZ290b19kYXRlJ10gPSAnR2EgbmFhciBkZXplIGRhdHVtJzsKJGxhbmdbJ3Jlc3VsdHMnXSA9ICdSZXN1bHRhYXQnOwokbGFuZ1sncGFzdCddID0gJ1ZlcmxlZGVuJzsKJGxhbmdbJ2Z1dHVyZSddID0gJ1RvZWtvbXN0JzsKJGxhbmdbJ2ZpbmRfd2hlbiddID0gJ1dhbm5lZXInOwokbGFuZ1snZmluZCddID0gJ1pvZWsuLi4nOwokbGFuZ1snbm90ZSddID0gJ09wbWVya2luZyc7CiRsYW5nWydzdGFydCddID0gJ1N0YXJ0JzsKJGxhbmdbJ2VuZCddID0gJ0VpbmRlJzsKJGxhbmdbJ2Vycm9yX3Vua25vd24nXSA9ICdPbmJla2VuZGUgZm91dCc7CiRsYW5nWydmaWxlYXR0YWNobWVudCddID0gJ0dla29wcGVsZCBiZXN0YW5kJzsKJGxhbmdbJ3Byb21wdF9nZW5lcmFsX3NldHRpbmdzJ10gPSAnQWxnZW1lbmUgSW5zdGVsbGluZ2VuJzsKJGxhbmdbJ3ByZXZfbW9udGgnXSA9ICdHYSBuYWFyIGRlIHZvcmlnZSBtYWFuZCc7CiRsYW5nWyduZXh0X21vbnRoJ10gPSAnR2EgbmFhciBkZSB2b2xnZW5kZSBtYWFuZCc7CiRsYW5nWydtc2dfY2F0ZWdvcmllc191cGRhdGVkJ10gPSAnQ2F0ZWdvcmllw6tuIHppam4gYmlqZ2V3ZXJrdCc7CiRsYW5nWydtc2dfZmllbGRzdXBkYXRlZCddID0gJ1ZlbGRlbiB6aWpuIGJpamdld2Vya3QnOwokbGFuZ1snd3lzaXd5ZyddID0gJ3d5c2l3eWcnOwokbGFuZ1snaW5mb19yZW9yZGVyX2NhdGVnb3JpZXMnXSA9ICdEZSBjYXRlZ29yaWUgdm9sZ29yZGUga2FuIHdvcmRlbiBnZXdpanppZ2QgZG9vciBkZSByZWdlbHMgdGUgc2xlcGVuJzsKJGxhbmdbJ2FkZF9maWVsZCddID0gJ1ZlbGQgdG9ldm9lZ2VuJzsKJGxhbmdbJ2FkZF9jYXRlZ29yeSddID0gJ0NhdGVnb3JpZSB0b2V2b2VnZW4nOwokbGFuZ1sncHJvbXB0X2ZpcnN0ZGF5b2Z3ZWVrJ10gPSAnRWVyc3RlIGRhZyB2YW4gZGUgd2Vlayc7CiRsYW5nWydlZGl0X2V2ZW50J10gPSAnR2ViZXVydGVuaXMgd2lqemlnZW4nOwokbGFuZ1snZWRpdF9wYXJlbnRfZXZlbnQnXSA9ICdCb3ZlbmxpZ2dlbmRlIGdlYmV1cnRlbmlzIHdpanppZ2VuJzsKJGxhbmdbJ3NlbGVjdF9wZXJpb2QnXSA9ICdQZXJpb2RlJzsKJGxhbmdbJ3Nob3dfZmlsdGVyJ10gPSAnVG9vbiBmaWx0ZXInOwokbGFuZ1snc2hvd19maWx0ZXJfYXBwbGllZCddID0gJ1Rvb24gZmlsdGVyIDxlbT4oYWN0aWVmKTwvZW0+JzsKJGxhbmdbJ3Jlc2V0J10gPSAnSGVyc3RlbGxlbic7CiRsYW5nWydjYWxfY3VycmVudCddID0gJ0RlemUgcGVyaW9kZSc7CiRsYW5nWydjYWxfZnJvbSddID0gJ3Zhbic7CiRsYW5nWydlcnJvcl9mZXVfbG9nZ2VkaW4nXSA9ICdEZSBnZWJydWlrZXIgaXMgbmlldCBhYW5nZW1lbGQgaW4gZGUgRkVVIG1vZHVsZS4gIEhldCB0b2V2b2VnZW4gb2Ygd2lqemlnZW4gdmFuIGdlYmV1cnRlbmlzc2VuIGlzIG5pZXQgbW9nZWxpamsnOwokbGFuZ1sncHJvbXB0X2ZyaWVuZGx5bmFtZSddID0gJ0dlYnJ1aWtzdnJpZW5kZWxpamtlIG5hYW0gdm9vciBkZXplIG1vZHVsZSBiaW5uZW4gaGV0IGJlaGVlcnBhbmVlbCc7CiRsYW5nWydpbmZvX2ZyaWVuZGx5bmFtZSddID0gJ09wbWVya2luZzogVSBkaWVudCBtb2dlbGlqayBkZSBjYWNoZSB0ZSBsZWdlbiBvbSBkZXplIGluc3RlbGxpbmcgdGUgbGF0ZW4gd2Vya2VuLiBXYW5uZWVyIGdlZW4gd2FhcmRlIGlzIG9wZ2VnZXZlbiB6YWwgZWVuIHN0YW5kYWFyZHdhYXJkZSB3b3JkZW4gZ2VicnVpa3QuJzsKJGxhbmdbJ3VzZV93eXNpd3lnJ10gPSAnR2VicnVpayBXWVNJV1lHJzsKJGxhbmdbJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcyddID0gJ1ZlcmtlZXJkZSBQYXJhbWV0ZXJzJzsKJGxhbmdbJ2NvbHVtbl9kZWxpbWl0ZXInXSA9ICdJbXBvcnQgYmVzdGFuZHNrb2xvbSBkZWxpbWl0ZXInOwokbGFuZ1snaW1wb3J0X2NvbXBsZXRlZCddID0gJ0ltcG9ydGVyZW4gdm9sdG9vaWQnOwokbGFuZ1snbnVtX2ltcG9ydGVkJ10gPSAnQWFudGFsIGFhbmdlbWFha3RlIGV2ZW50czogJWQnOwokbGFuZ1snaW1wb3J0X2xpbmVzJ10gPSAnQWFudGFsIHJlZ2VscyB2ZXJ3ZXJrdCB1aXQgaGV0IGJlc3RhbmQ6ICVkJzsKJGxhbmdbJ2Vycm9ycyddID0gJ0ZvdXRlbic7CiRsYW5nWydlcnJvcl9jc3ZmaXJzdGxpbmVpbnZhbGlkZmllbGQnXSA9ICdWZWxkOiAlcyBpcyBuaWV0IGhlcmVrZW5kIGVuIGhldCBpcyBnZWVuIHNwZWNpZmllayB2ZWxkJzsKJGxhbmdbJ3Byb21wdF9jc3ZfZmlsZSddID0gJ1NlbGVjdGVlciBpbXBvcnRiZXN0YW5kJzsKJGxhbmdbJ2RlbGV0ZSddID0gJ1ZlcndpamRlcic7CiRsYW5nWydjZF9jb21wYW55J10gPSAnQ29tcGFueSBEaXJlY3RvcnkgQmVkcmlqZic7CiRsYW5nWydkZmx0X3VybHByZWZpeCddID0gJ1RlIGdlYnJ1aWtlbiBwcmVmaXggdm9vciBQcmV0dHkgVVJMUyc7CiRsYW5nWydkZmx0X2FsbGRheWV2ZW50J10gPSAnTmlldXdlIGV2ZW5lbWVudGVuIGJlc2xhYW4gc3RhbmRhYXJkIGRlIGdlaGVsZSBkYWcnOwokbGFuZ1snZGZsdF9zdGFydHRpbWUnXSA9ICdTdGFuZGFhcmQgc3RhcnR0aWpkIHZvb3IgbmlldXdlIGV2ZW5lbWVudGVuJzsKJGxhbmdbJ2luZm9fZGZsdF9zdGFydHRpbWUnXSA9ICc8ZW0+KGFsbGVlbiB2YW4gdG9lcGFzc2luZyBhbHMgbmlldXdlIGV2ZW5lbWVudGVuIG5pZXQgZGUgZ2VoZWxlIGRhZyBiZXNsYWFuKTwvZW0+JzsKJGxhbmdbJ3NlYXJjaF90eXBlJ10gPSAnWm9layBUeXBlJzsKJGxhbmdbJ3NlYXJjaF9hbnknXSA9ICdFw6luIG9mIG1lZXIgem9la3Rlcm1lbiBtb2V0ZW4gb3ZlcmVlbmtvbWVuJzsKJGxhbmdbJ3NlYXJjaF9hbGwnXSA9ICdBbGxlIHpvZWt0ZXJtZW4gbW9ldGVuIG92ZXJlZW5rb21lbic7CiRsYW5nWydzZWFyY2hhYmxlJ10gPSAnRG9vcnpvZWtiYWFyJzsKJGxhbmdbJ2hlbHBfcGFyYW1fZWRpdGV2ZW50dGVtcGxhdGUnXSA9ICdBbGxlZW4gdG9lcGFzYmFhciBpbiBkZSBteWV2ZW50cy1iZXdlcmtpbmcsIGRlemUgcGFyYW1ldGVyIHNwZWNpZmljZWVydCBlZW4gbmlldC1zdGFuZGFhcmQgZXZlbmVtZW50c2phYmxvb24gb20gdGUgZ2VicnVpa2VuIHdhbm5lZXIgZWVuIGdlYnJ1aWtlciBlZW4gZXZlbmVtZW50IGFhbm1hYWt0IG9mIHdpanppZ3QuJzsKJGxhbmdbJ2hlbHBfcGFyYW1fZWRpdHBhZ2UnXSA9ICdFbmtlbCB0b2VwYXNiYWFyIG9wIGRlIG15ZXZlbnRzLWJld2Vya2luZywgZGV6ZSBwYXJhbWV0ZXIgc3BlY2lmaWNlZXJ0IGVlbiBhbmRlcmUgcGFnaW5hIHZvb3IgZGUgZWRpdC1mb3JtJzsKJGxhbmdbJ2hlbHBfcGFyYW1fbXlldmVudHN0ZW1wbGF0ZSddID0gJ0Vua2VsIHRvZXBhc2JhYXIgb3AgZGUgbXlldmVudHMtYmV3ZXJraW5nLCBkZXplIHBhcmFtZXRlciBzcGVjaWZpY2VlcnQgZWVuIG5pZXQtc3RhbmRhYXJkIHNqYWJsb29uIHZvb3IgZ2VicnVpayc7CiRsYW5nWydjYWxfZWRpdF9ldmVudCddID0gJ1dpanppZyBLYWxlbmRlciBFdmVuZW1lbnQnOwokbGFuZ1snZXJyb3JfZGJlcnJvciddID0gJ0RhdGFiYXNlIEZvdXQnOwokbGFuZ1snc3VibWl0J10gPSAnVG9ldm9lZ2VuJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9lZGl0ZXZlbnRfdGVtcGxhdGUnXSA9ICdTdGFuZGFhcmQgIldpanppZyBNaWpuIEV2ZW5lbWVudGVuIiBTamFibG9vbic7CiRsYW5nWydpbmZvX3N5c2RmbHRfbXlldmVudHNfdGVtcGxhdGUnXSA9ICdTdGFuZGFhcmQgIldpanppZyBNaWpuIEV2ZW5lbWVudGVuIiBTamFibG9vbic7CiRsYW5nWydwcm9tcHRfZmVlZGl0X2dyb3VwJ10gPSAnTGlkIHZhbiBkZXplIEZFVSBncm9lcCBrYW4gZXZlbmVtZW50ZW4gdG9ldm9lZ2VuJzsKJGxhbmdbJ3Byb21wdF9mZWVkaXRfcGFnZSddID0gJ1N0YW5kYWFyZCBwYWdpbmEgdm9vciBkZSBmcm9udGVuZCB3aWp6aWcgZm9ybXVsaWVyLic7CiRsYW5nWydub25lJ10gPSAnR2Vlbic7CiRsYW5nWydvd25lciddID0gJ0VpZ2VuYWFyJzsKJGxhbmdbJ2NhbF9lZGl0ZXZlbnRfdGVtcGxhdGVzJ10gPSAnV2lqemlnIEV2ZW5lbWVudCBGb3JtdWxpZXIgU2phYmxvbmVuJzsKJGxhbmdbJ2luZm9fZWRpdGV2ZW50X3RlbXBsYXRlX3RhYiddID0gJ0VlbiBvdmVyemljaHQgdmFuIHNqYWJsb25lbiBkaWUgYmVzY2hpa2JhYXIgemlqbiB2b29yIGVlbiB3aWp6aWctZXZlbmVtZW50IGZvcm11bGllcic7CiRsYW5nWydlZGl0ZXZlbnR0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnVG9ldm9lZ2VuL3dpanppZ2VuIHZhbiBlZW4gV2lqemlnIEV2ZW5lbWVudCBGb3JtdWxpZXIgU2phYmxvb24nOwokbGFuZ1snY2FsX215ZXZlbnRzX3RlbXBsYXRlcyddID0gJ01pam4gRXZlbmVtZW50ZW4gTGlqc3QgU2phYmxvbmVuJzsKJGxhbmdbJ2luZm9fbXlldmVudHNfdGVtcGxhdGVfdGFiJ10gPSAnRGUgbGlqc3QgbWV0IHNqYWJsb25lbiBkaWUgYnJ1aWtiYWFyIHppam4gdm9vciBoZXQgdG9uZW4gdmFuIGVlbiBsaWpzdCBtZXQgZ2VicnVpa2VycyBldmVuZW1lbnRlbic7CiRsYW5nWydteWV2ZW50c3RlbXBsYXRlX2FkZGVkaXQnXSA9ICdUb2V2b2VnZW4vd2lqemlnZW4gdmFuIGVlbiAiTWlqbiBFdmVuZW1lbnRlbiIgc2phYmxvb24nOwokbGFuZ1snYXJleW91c3VyZV9yZW1vdmVjb25mbGljdGluZyddID0gJ0RlemUgYmV3ZXJraW5nIHphbCBpZWRlciBldmVuZW1lbnQgdmVyd2lqZGVyZW4gZGllIGNvbmZsaWN0ZWVydCBtZXQgbmlldC1vdmVybGFwYmFyZSBldmVuZW1lbnRlbi4gV2VldCBqZSB6ZWtlciBkYXQgamUgZG9vciB3aWwgZ2Fhbj8nOwokbGFuZ1snZmlsdGVyX2NvbmZsaWN0aW5nJ10gPSAnRmlsdGVyIENvbmZsaWN0ZW4gYmlqIEV2ZW5lbWVudGVuJzsKJGxhbmdbJ292ZXJsYXBfYWN0aW9uX3JlbW92ZSddID0gJ1ZlcndpamRlciBzdGlsendpamdlbmQgY29uZmxpY3RlbiBiaWogRXZlbmVtZW50ZW4nOwokbGFuZ1snb3ZlcmxhcF9hY3Rpb25fZXJyb3InXSA9ICdMYXRlbiB6aWVuIGJpaiBlZW4gZm91dCc7CiRsYW5nWydwcm9tcHRfb3ZlcmxhcF9hY3Rpb24nXSA9ICdCZXdlcmtpbmcgZGllIHVpdGdldm9lcmQgbW9ldCB3b3JkZW4gYmlqIGVlbiBjb25mbGljdCBiaWogdG9ldm9lZ2VuL3dpanppZ2VuIHZhbiBlZW4gZXZlbmVtZW50JzsKJGxhbmdbJ2Vycm9yX2V2ZW50X2NvbmZsaWN0J10gPSAnRGl0IGV2ZW5lbWVudCBzcGVjaWZpY2VlcnQgb3ZlcmxhcCBtZXQgZWVuIGJlc3RhYW5kIGV2ZW5lbWVudCB3YXQgZ2VlbiBjb25mbGljdCB0b2VzdGFhdCc7CiRsYW5nWydjYWxfaW5mb19vdmVybGFwJ10gPSAnQWxsZWVuIHRvZXBhc3NlbiB2b29yIGV2ZW5lbWVudGVuIG1ldCBlZW4gZWluZHRpamQgKG9mICJnZWhlbGUgZGFnIiBldmVuZW1lbnRlbiknOwokbGFuZ1snY2FsX292ZXJsYXAnXSA9ICdTdGEgdG9lIGRhdCBuaWV1d2UgZXZlbmVtZW50ZW4gb3ZlcmxhcCBtZXQgZGV6ZSc7CiRsYW5nWydwcm9tcHRfb3ZlcmxhcF9wb2xpY3knXSA9ICdFdmVuZW1lbnRlbiBvdmVybGFwIGluc3RlbGxpbmdlbic7CiRsYW5nWydwb2xpY3lfYWxsJ10gPSAnQWxsZSBFdmVuZW1lbnRlbiBrdW5uZW4gb3ZlcmxhcHBlbic7CiRsYW5nWydwb2xpY3lfbm9uZSddID0gJ0V2ZW5lbWVudGVuIGt1bm5lbiBuaWV0IG92ZXJsYXBwZW4nOwokbGFuZ1sncG9saWN5X2luZGl2aWR1YWwnXSA9ICdCZXNsaXNzZW4gcGVyIGV2ZW5lbWVudCc7CiRsYW5nWydsYmxfYmFjayddID0gJ1RlcnVnJzsKJGxhbmdbJ2xibF90ZW1wbGF0ZXMnXSA9ICdTamFibG9uZW4nOwokbGFuZ1sndGV4dGFyZWEnXSA9ICdUZWtzdHJ1aW10ZSc7CiRsYW5nWydlcnJvcl9jYWxlbmRhcl9pbmNvbXBhdGlibGUnXSA9ICdMZXQgb3AhIERlIG1vZHVsZSBDYWxlbmRhciBpcyBvb2sgb3AgZGV6ZSB3ZWJzaXRlIGdlw69uc3RhbGxlZXJkLiBEZXplIHZlcm91ZGVyZGUgbW9kdWxlIGthbiBuaWV0IHNhbWVuIG1ldCBDR0NhbGVuZGFyIGZ1bmN0aW9uZXJlbi4gVmVyd2lqZGVyIGRlIG91ZGUgQ2FsZW5kYXIgbW9kdWxlIGVlcnN0ISc7CiRsYW5nWydlcnJvcl9ldmVudF9ub3RfZm91bmQnXSA9ICdPZiBcJ2V2ZW50X2lkXCcgc3RhYXQgbmlldCBpbiBkZSBkYXRhYmFzZSwgb2YgZXIgaXMgbWVlciBkYW4gw6nDqW4gZ2ViZXVydGVuaXMgbWV0IGRpdCBpZCEgKCVkKSc7CiRsYW5nWydmaXJzdF9wYWdlJ10gPSAnPDwnOwokbGFuZ1sncHJldl9wYWdlJ10gPSAnPCc7CiRsYW5nWyduZXh0X3BhZ2UnXSA9ICc+JzsKJGxhbmdbJ2xhc3RfcGFnZSddID0gJz4+JzsKJGxhbmdbJ3BhZ2Vfb2YnXSA9ICdQYWdpbmEgJWQgdmFuICVkJzsKJGxhbmdbJ3NlYXJjaF9yZXN1bHRzJ10gPSAnS2FsZW5kZXIgWm9layBSZXN1bHRhdGVuJzsKJGxhbmdbJ3NlYXJjaF93b3JkcyddID0gJ1pvZWt3b29yZGVuJzsKJGxhbmdbJ25vX3Jlc3VsdHNfZm91bmQnXSA9ICdHZWVuIHJlc3VsdGF0ZW4gZ2V2b25kZW4nOwokbGFuZ1snZnJlcXVlbmN5J10gPSAnRnJlcXVlbnRpZSc7CiRsYW5nWydzcGVjaWZpZWRfZGF0ZSddID0gJ0dlYnJ1aWsgZGUgZ2Vub2VtZGUgZGF0dW0nOwokbGFuZ1snZmlyc3Rfc3VuZGF5J10gPSAnRWVyc3RlIHpvbmRhZyB2YW4gZGUgbWFhbmQnOwokbGFuZ1snZmlyc3RfbW9uZGF5J10gPSAnRWVyc3RlIG1hYW5kYWcgdmFuIGRlIG1hYW5kJzsKJGxhbmdbJ2ZpcnN0X3R1ZXNkYXknXSA9ICdFZXJzdGUgZGluc2RhZyB2YW4gZGUgbWFhbmQnOwokbGFuZ1snZmlyc3Rfd2VkbmVzZGF5J10gPSAnRWVyc3RlIHdvZW5zZGFnIHZhbiBkZSBtYWFuZCc7CiRsYW5nWydmaXJzdF90aHVyc2RheSddID0gJ0VlcnN0ZSBkb25kZXJkYWcgdmFuIGRlIG1hYW5kJzsKJGxhbmdbJ2ZpcnN0X2ZyaWRheSddID0gJ0VlcnN0ZSB2cmlqZGFnIHZhbiBkZSBtYWFuZCc7CiRsYW5nWydmaXJzdF9zYXR1cmRheSddID0gJ0VlcnN0ZSB6YXRlcmRhZyB2YW4gZGUgbWFhbmQnOwokbGFuZ1snc2Vjb25kX3N1bmRheSddID0gJ1R3ZWVkZSB6b25kYWcgdmFuIGRlIG1hYW5kJzsKJGxhbmdbJ3NlY29uZF9tb25kYXknXSA9ICdUd2VlZGUgbWFhbmRhZyB2YW4gZGUgbWFhbmQnOwokbGFuZ1snc2Vjb25kX3R1ZXNkYXknXSA9ICdUd2VlZGUgZGluc2RhZyB2YW4gZGUgbWFhbmQnOwokbGFuZ1snc2Vjb25kX3dlZG5lc2RheSddID0gJ1R3ZWVkZSB3b2Vuc2RhZyB2YW4gZGUgbWFhbmQnOwokbGFuZ1snc2Vjb25kX3RodXJzZGF5J10gPSAnVHdlZWRlIGRvbmRlcmRhZyB2YW4gZGUgbWFhbmQnOwokbGFuZ1snc2Vjb25kX2ZyaWRheSddID0gJ1R3ZWVkZSB2cmlqZGFnIHZhbiBkZSBtYWFuZCc7CiRsYW5nWydzZWNvbmRfc2F0dXJkYXknXSA9ICdUd2VlZGUgemF0ZXJkYWcgdmFuIGRlIG1hYW5kJzsKJGxhbmdbJ3RoaXJkX3N1bmRheSddID0gJ0RlcmRlIHpvbmRhZyB2YW4gZGUgbWFhbmQnOwokbGFuZ1sndGhpcmRfbW9uZGF5J10gPSAnRGVyZGUgbWFhbmRhZyB2YW4gZGUgbWFhbmQnOwokbGFuZ1sndGhpcmRfdHVlc2RheSddID0gJ0RlcmRlIGRpbnNkYWcgdmFuIGRlIG1hYW5kJzsKJGxhbmdbJ3RoaXJkX3dlZG5lc2RheSddID0gJ0RlcmRlIHdvZXNkYWcgdmFuIGRlIG1hYW5kJzsKJGxhbmdbJ3RoaXJkX3RodXJzZGF5J10gPSAnRGVyZGUgZG9uZGVyZGFnIHZhbiBkZSBtYWFuZCc7CiRsYW5nWyd0aGlyZF9mcmlkYXknXSA9ICdEZXJkZSB2cmlqZGFnIHZhbiBkZSBtYWFuZCc7CiRsYW5nWyd0aGlyZF9zYXR1cmRheSddID0gJ0RlcmRlIHphdGVyZGFnIHZhbiBkZSBtYWFuZCc7CiRsYW5nWydmb3VydGhfc3VuZGF5J10gPSAnVmllcmRlIHpvbmRhZyB2YW4gZGUgbWFhbmQnOwokbGFuZ1snZm91cnRoX21vbmRheSddID0gJ1ZpZXJkZSBtYWFuZGFnIHZhbiBkZSBtYWFuZCc7CiRsYW5nWydmb3VydGhfdHVlc2RheSddID0gJ1ZpZXJkZSBkaW5zZGFnIHZhbiBkZSBtYWFuZCc7CiRsYW5nWydmb3VydGhfd2VkbmVzZGF5J10gPSAnVmllcmRlIHdvZW5zZGFnIHZhbiBkZSBtYWFuZCc7CiRsYW5nWydmb3VydGhfdGh1cnNkYXknXSA9ICdWaWVyZGUgZG9uZGVyZGFnIHZhbiBkZSBtYWFuZCc7CiRsYW5nWydmb3VydGhfZnJpZGF5J10gPSAnVmllcmRlIHZyaWpkYWcgdmFuIGRlIG1hYW5kJzsKJGxhbmdbJ2ZvdXJ0aF9zYXR1cmRheSddID0gJ1ZpZXJkZSB6YXRlcmRhZyB2YW4gZGUgbWFhbmQnOwokbGFuZ1snbGFzdF9zdW5kYXknXSA9ICdMYWF0c3RlIHpvbmRhZyB2YW4gZGUgbWFhbmQnOwokbGFuZ1snbGFzdF9tb25kYXknXSA9ICdMYWF0c3RlIG1hYW5kYWcgdmFuIGRlIG1hYW5kJzsKJGxhbmdbJ2xhc3RfdHVlc2RheSddID0gJ0xhYXRzdGUgZGluc2RhZyB2YW4gZGUgbWFhbmQnOwokbGFuZ1snbGFzdF93ZWRuZXNkYXknXSA9ICdMYWF0c3RlIHdvZW5zZGFnIHZhbiBkZSBtYWFuZCc7CiRsYW5nWydsYXN0X3RodXJzZGF5J10gPSAnTGFhdHN0ZSBkb25kZXJkYWcgdmFuIGRlIG1hYW5kJzsKJGxhbmdbJ2xhc3RfZnJpZGF5J10gPSAnTGFhdHN0ZSB2cmlqZGFnIHZhbiBkZSBtYWFuZCc7CiRsYW5nWydsYXN0X3NhdHVyZGF5J10gPSAnTGFhdHN0ZSB6YXRlcmRhZyB2YW4gZGUgbWFhbmQnOwokbGFuZ1snZXJyb3JfaW52YWxpZF9yZWN1cl9tb250aGx5X2ZyZXEnXSA9ICdWZXJrZWVyZGUgZnJlcXVlbnRpZS4uLiBVIGt1bnQgbmlldCB0ZWdlbGlqa2VydGlqZCBlZW4gZGF0dW0gZW4gZWVuIGFuZGVyZSB3YWFyZGUgc3BlY2lmaWNlcmVuJzsKJGxhbmdbJ3NlYXJjaHJlc3VsdHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdUb2V2b2VnZW4vd2lqemlnZW4gWm9la3Jlc3VsdGFhdCBTamFibG9vbic7CiRsYW5nWydpbmZvX3NlYXJjaHJlc3VsdF90ZW1wbGF0ZV90YWInXSA9ICdEZSBsaWpzdCB2YW4gYmVzY2hpa2JhcmUgc2phYmxvbmVuIHZvb3IgaGV0IHpvZWtyZXN1bHRhYXRzY2hlcm0nOwokbGFuZ1snaW5mb19zeXNkZmx0X3NlYXJjaHJlc3VsdF90ZW1wbGF0ZSddID0gJ1N5c3RlZW0gU3RhbmRhYXJkIFpvZWtyZXN1bHRhYXQgU2phYmxvb24nOwokbGFuZ1snY2FsX3NlYXJjaF9yZXN1bHRfdGVtcGxhdGVzJ10gPSAnWm9la3Jlc3VsdGFhdCBzamFibG9uZW4nOwokbGFuZ1snZXJyb3JfcXVlcnlfZmFpbGVkJ10gPSAnRGF0YWJhc2UgUXVlcnkgTWlzbHVrdCc7CiRsYW5nWydlcnJvcl9zZWFyY2hfaW52YWxpZF9kYXRlcyddID0gJ1ZlcmtlZXJkZSB6b2VrZ2VnZXZlbnMgaW5nZXZvZXJkJzsKJGxhbmdbJ3RleHQnXSA9ICdUZWtzdCc7CiRsYW5nWydzZWFyY2gnXSA9ICdab2VrJzsKJGxhbmdbJ2NhdGVnb3J5J10gPSAnQ2F0ZWdvcmllJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9zZWFyY2hfdGVtcGxhdGUnXSA9ICdTeXN0ZWVtIFN0YW5kYWFyZCBab2VrIEZvcm11bGllciBTamFibG9vbic7CiRsYW5nWydzZWFyY2h0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnVG9ldm9lZ2VuL3dpanppZ2VuIFpvZWsgRm9ybXVsaWVyIFNqYWJsb29uJzsKJGxhbmdbJ2luZm9fc2VhcmNoX3RlbXBsYXRlX3RhYiddID0gJ0RlIGxpanN0IHZhbiBiZXNjaGlrYmFyZSBzamFibG9uZW4gdm9vciBoZXQgem9la2Zvcm11bGllcic7CiRsYW5nWydjYWxfc2VhcmNoX2Zvcm1fdGVtcGxhdGVzJ10gPSAnWm9layBGb3JtdWxpZXIgU2phYmxvbmVuJzsKJGxhbmdbJ21heCddID0gJ21heGltYWFsJzsKJGxhbmdbJ3RpbWVzJ10gPSAna2Vlcic7CiRsYW5nWydvbiddID0gJ2Fhbic7CiRsYW5nWydhcmV5b3VzdXJlX3VuaW5zdGFsbCddID0gJ1dlZXQgdSB6ZWtlciBkYXQgdSBkaXQgd2lsdCBkb2VuPyBBbHMgdSBkb29yZ2FhdCB3b3JkIGFsbGUgZGF0YSBkZWZpbml0aWVmIHZlcndpamRlcmQuJzsKJGxhbmdbJ3Bvc3RfdW5pbnN0YWxsJ10gPSAnRGUgQ2FsZW5kYXIgbW9kdWxlIGlzIGdlZGXDr25zdGFsbGVlcmQgZW4gYWxsZSBnZWJldXJ0ZW5pc3NlbiBlbiB0ZW1wbGF0ZXMgemlqbiB2ZXJ3aWpkZXJkLic7CiRsYW5nWydmaWVsZHVwZGF0ZWQnXSA9ICdWZWxkIGdlw7xwZGF0ZSc7CiRsYW5nWydldmVyeSddID0gJ0llZGVyZSc7CiRsYW5nWydvciddID0gJ29mJzsKJGxhbmdbJ3VwZGF0ZV9jaGlsZHJlbiddID0gJ1VwZGF0ZSBvbmRlcmxpZ2dlbmRlIGdlYmV1cnRlbmlzc2VuJzsKJGxhbmdbJ2Vycm9yX25vY2F0ZWdvcnknXSA9ICdVIG1vZXQgaW4gaWVkZXIgZ2V2YWwgw6nDqW4gY2F0ZWdvcmllIHNlbGVjdGVyZW4nOwokbGFuZ1snZXJyb3Jfbm90aGluZ3NlbGVjdGVkJ10gPSAnRXIgaXMgbmlldHMgZ2VzZWxlY3RlZXJkIG9tIHZlcndpamRlcmQgdGUgd29yZGVuJzsKJGxhbmdbJ2Vycm9yX2V2ZW50b3ZlcmxhcCddID0gJ0RlIHBhcmFtZXRlcnMgdC5iLnYuIGRlIGhlcmhhbGVuZGUgZ2ViZXVydGVuaXNzZW4gem91ZGVuIGxlaWRlbiB0b3Qgb3ZlcmxhcHBlbmRlIGdlYmV1cnRlbmlzc2VuJzsKJGxhbmdbJ3JlY3VycyddID0gJ0hlcmhhbGluZyc7CiRsYW5nWydlcnJvcl9pbnZhbGlkX2RhdGVzJ10gPSAnRcOpbiBvZiBtZWVyZGVyZSBpbmdldm9lcmRlIGRhdHVtcyB6aWpuIG9uZ2VsZGlnJzsKJGxhbmdbJ3N1bmRheSddID0gJ1pvbmRhZyc7CiRsYW5nWydtb25kYXknXSA9ICdNYWFuZGFnJzsKJGxhbmdbJ3R1ZXNkYXknXSA9ICdEaW5zZGFnJzsKJGxhbmdbJ3dlZG5lc2RheSddID0gJ1dvZW5zZGFnJzsKJGxhbmdbJ3RodXJzZGF5J10gPSAnRG9uZGVyZGFnJzsKJGxhbmdbJ2ZyaWRheSddID0gJ1ZyaWpkYWcnOwokbGFuZ1snc2F0dXJkYXknXSA9ICdaYXRlcmRhZyc7CiRsYW5nWydhYmJyX3N1bmRheSddID0gJ1pvJzsKJGxhbmdbJ2FiYnJfbW9uZGF5J10gPSAnTWEnOwokbGFuZ1snYWJicl90dWVzZGF5J10gPSAnRGknOwokbGFuZ1snYWJicl93ZWRuZXNkYXknXSA9ICdXbyc7CiRsYW5nWydhYmJyX3RodXJzZGF5J10gPSAnRG8nOwokbGFuZ1snYWJicl9mcmlkYXknXSA9ICdWcic7CiRsYW5nWydhYmJyX3NhdHVyZGF5J10gPSAnWmEnOwokbGFuZ1snd2VlayddID0gJ1dlZWsnOwokbGFuZ1snbW9udGgnXSA9ICdNYWFuZCc7CiRsYW5nWydkYXknXSA9ICdEYWcnOwokbGFuZ1sndG9kYXknXSA9ICdWYW5kYWFnJzsKJGxhbmdbJ3dlZWtkYXlzJ10gPSAnV2Vla2RhZ2VuJzsKJGxhbmdbJ3BsdXJhbF9kYWlseSddID0gJ0RhZ2VuJzsKJGxhbmdbJ3BsdXJhbF93ZWVrbHknXSA9ICdXZWtlbic7CiRsYW5nWydwbHVyYWxfbW9udGhseSddID0gJ01hYW5kZW4nOwokbGFuZ1sncGx1cmFsX3llYXJseSddID0gJ0phcmVuJzsKJGxhbmdbJ25vJ10gPSAnTmVlJzsKJGxhbmdbJ2RhaWx5J10gPSAnRGFnZWxpamtzJzsKJGxhbmdbJ3dlZWtseSddID0gJ1dla2VsaWprcyc7CiRsYW5nWydtb250aGx5J10gPSAnTWFhbmRlbGlqa3MnOwokbGFuZ1sneWVhcmx5J10gPSAnSmFhcmxpamtzJzsKJGxhbmdbJ2ludGVydmFsJ10gPSAnSGVyaGFhbCBpZWRlcmUnOwokbGFuZ1snY2FsX3JlY3VyX2RldGFpbHMnXSA9ICdHZWdldmVucyBoZXJoYWxlbmRlIGdlYmV1cnRlbmlzJzsKJGxhbmdbJ3VubGltaXRlZCddID0gJ09uZ2VsaW1pdGVlcmQnOwokbGFuZ1snbWF4X3JlY3VyX2V2ZW50cyddID0gJ01heGltdW0gYWFudGFsIHZhbiBvbmRlcmxpZ2dlbmRlIGdlYmV1cnRlbmlzc2VuJzsKJGxhbmdbJ3VzZV90b19kYXRlJ10gPSAnRWVuIGFuZGVyZSBlaW5kZGF0dW0gaW52b2VyZW4/JzsKJGxhbmdbJ2NhbmNlbCddID0gJ0FubnVsZWVyJzsKJGxhbmdbJ3Nob3dfY2hpbGRfZXZlbnRzJ10gPSAnVG9vbiBvbmRlcmxpZ2dlbmRlIGFjdGl2aXRlaXRlbiA8ZW0+KGthbiBsZWlkZW4gdG90IGVlbiBlcmcgbGFuZ2UgbGlqc3QpPC9lbT4nOwokbGFuZ1snbi9hJ10gPSAnbi52LnQuJzsKJGxhbmdbJ3JlY3Vyc191bnRpbCddID0gJ0hlcmhhbGVuIHRvdCc7CiRsYW5nWydwYXJlbnQnXSA9ICdIb29mZGdlYmV1cnRlbmlzJzsKJGxhbmdbJ3JlY3VyX3BlcmlvZCddID0gJ0hlcmhhYWwgcGVyaW9kZSc7CiRsYW5nWydmaWx0ZXInXSA9ICdGaWx0ZXInOwokbGFuZ1snc3RhcnRfZGF0ZSddID0gJ1N0YXJ0ZGF0dW0nOwokbGFuZ1snZW5kX2RhdGUnXSA9ICdFaW5kZGF0dW0nOwokbGFuZ1snaW5mb191cGNvbWluZ2xpc3RfdGVtcGxhdGVfdGFiJ10gPSAnRWVuIG92ZXJ6aWNodCB2YW4gYmVzY2hpa2JhcmUgc2phYmxvbmVuIHZvb3IgYWFua29tZW5kZSBnZWJldXJ0ZW5pc3Nlbic7CiRsYW5nWyd1cGNvbWluZ2xpc3R0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnVG9ldm9lZ2VuL3dpanppZ2VuIHZhbiAiVXBjb21pbmdsaXN0IiBTamFibG9vbic7CiRsYW5nWydpbmZvX3N5c2RmbHRfdXBjb21pbmdsaXN0X3RlbXBsYXRlJ10gPSAnU3lzdGVlbSBTdGFuZGFhcmQgIlVwY29taW5nbGlzdCIgU2phYmxvb24nOwokbGFuZ1snaW5mb19saXN0X3RlbXBsYXRlX3RhYiddID0gJ0VlbiBvdmVyemljaHQgdmFuIGJlc2NoaWtiYXJlIHNqYWJsb25lbiB2b29yIGxpanN0d2VlcmdhdmVzJzsKJGxhbmdbJ2xpc3R0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnVG9ldm9lZ2VuL3dpanppZ2VuIHZhbiBlZW4gTGlqc3R3ZWVyZ2F2ZSBTamFibG9vbic7CiRsYW5nWydpbmZvX3N5c2RmbHRfbGlzdF90ZW1wbGF0ZSddID0gJ1N5c3RlZW0gU3RhbmRhYXJkIExpanN0d2VlcmdhdmUgU2phYmxvb24nOwokbGFuZ1snaW5mb19ldmVudF90ZW1wbGF0ZV90YWInXSA9ICdFZW4gb3ZlcnppY2h0IHZhbiBiZXNjaGlrYmFyZSBzamFibG9uZW4gdm9vciBnZWJldXJ0ZW5pcyBvdmVyemljaHRlbic7CiRsYW5nWydldmVudHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdUb2V2b2VnZW4vd2lqemlnZW4gZ2ViZXVydGVuaXN3ZWVyZ2F2ZSBzamFibG9vbic7CiRsYW5nWydpbmZvX3N5c2RmbHRfZXZlbnRfdGVtcGxhdGUnXSA9ICdTdGFuZGFhcmQgZ2ViZXVydGVuaXN3ZWVyZ2F2ZSBzamFibG9vbic7CiRsYW5nWydpbmZvX2NhbGVuZGFyX3RlbXBsYXRlX3RhYiddID0gJ0VlbiBvdmVyemljaHQgdmFuIGJlc2NoaWtiYXJlIHNqYWJsb25lbiB2b29yIEthbGVuZGVyIHdlZXJnYXZlcyc7CiRsYW5nWydjYWxlbmRhcnRlbXBsYXRlX2FkZGVkaXQnXSA9ICdUb2V2b2VnZW4vd2lqemlnZW4gZWVuIEthbGVuZGVyd2VlcmdhdmUgc2phYmxvb24nOwokbGFuZ1snaW5mb19zeXNkZmx0X2NhbGVuZGFyX3RlbXBsYXRlJ10gPSAnU3RhbmRhYXJkIGthbGVuZGVyd2VlcmdhdmUgc2phYmxvb24nOwokbGFuZ1snaW5mb19zeXNkZmx0X3RlbXBsYXRlJ10gPSAnRGV6ZSBzamFibG9uZW4gemlqbiBkZSBzdGFuZGFhcmQgd2FhcmRlbiBkaWUgd29yZGVuIGdldG9vbmQgYWxzIHUgb3AgZGUgTmlldXcgU2phYmxvb24iIHRvZXRzIGtsaWt0IGluIGRlIGdld2Vuc3RlIHRhYi4gIEhldCB3aWp6aWdlbiB2YW4gZGV6ZSBzamFibG9uZW4gemFsIGRhYXJvbSBvb2sgZ2VlbiBkaXJlY3QgZ2V2b2xnIGhlYmJlbiB2b29yIHV3IHdlYnNpdGUuJzsKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudEFkZGVkJ10gPSAnRWVuIHRhZyBkaWUgd29yZHQgYWFuZ2Vyb2VwZW4gbmEgdG9ldm9lZ2luZyB2YW4gZWVuIGthbGVuZGVyZ2ViZXVydGVuaXMnOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RWRpdGVkJ10gPSAnRWVuIHRhZyBkaWUgd29yZHQgYWFuZ2Vyb2VwZW4gbmEgYmV3ZXJraW5nIHZhbiBlZW4gYmVzdGFhbmRlIGthbGVuZGVyZ2ViZXVydGVuaXMnOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RGVsZXRlZCddID0gJ0VlbiB0YWcgZGllIHdvcmR0IGFhbmdlcm9lcGVuIG5hIHZlcndpamRlcmluZyB2YW4gZWVuIGthbGVuZGVyZ2ViZXVydGVuaXMnOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5QWRkZWQnXSA9ICdFZW4gdGFnIGRpZSB3b3JkdCBhYW5nZXJvZXBlbiBuYSBhYW5tYWtlbiB2YW4gZWVuIGNhdGVnb3JpZSc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlFZGl0ZWQnXSA9ICdFZW4gdGFnIGRpZSB3b3JkdCBhYW5nZXJvZXBlbiBuYSBiZXdlcmtpbmcgdmFuIGVlbiBjYXRlZ29yaWUnOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5RGVsZXRlZCddID0gJ0VlbiB0YWcgZGllIHdvcmR0IGFhbmdlcm9lcGVuIG5hIHZlcndpamRlcmluZyB2YW4gZWVuIGNhdGVnb3JpZSc7CiRsYW5nWydlcnJvcl9jc3ZfaW5zZXJ0J10gPSAnRm91dCBiaWogaGV0IGltcG9ydGVyZW4gdmFuIGhldCBldmVudCB1aXQgZGUgY3N2IG9wIHJlZ2VsICVkJzsKJGxhbmdbJ2Vycm9yX2NzdmZpcnN0bGluZWZsZG5vdGZvdW5kJ10gPSAnRWVuIHZlcmVpc3QgdmVsZDogJXMsIGtvbiBuaWV0IHdvcmRlbiBnZXZvbmRlbiBpbiBkZSBlZXJzdGUgcmVnZWwgdmFuIGhldCBjc3YtYmVzdGFuZCc7CiRsYW5nWydlcnJvcl9jc3ZpbnZhbGlkZmlyc3RsaW5lJ10gPSAnS2FuIGdlZW4gZ2VsZGlnZSBlZXJzdGUgcmVnZWwgdmluZGVuIHZhbiBoZXQgQ1NWLWJlc3RhbmQnOwokbGFuZ1snbXNnX2V2ZW50YWRkZWQnXSA9ICdHZWJldXJ0ZW5pcyB0b2VnZXZvZWdkJzsKJGxhbmdbJ2Vycm9yX25vZXZlbnRuYW1lJ10gPSAnRWVuIG5hYW0gdm9vciBlZW4gZ2ViZXVydGVuaXMgaXMgdmVycGxpY2h0JzsKJGxhbmdbJ2Vycm9yX25vdXBsb2FkJ10gPSAnRm91dDogZ2VlbiBnZcO8cGxvYWQgYmVzdGFuZCBnZXZvbmRlbic7CiRsYW5nWydlcnJvcl9pbnZhbGlkZmlsZW5hbWUnXSA9ICdGb3V0OiBoZXQgZ2XDvHBsb2FkZSBiZXN0YW5kIHdvcmR0IG5pZXQgZ2VhY2NlcHRlZXJkJzsKJGxhbmdbJ2Vycm9yX3Byb2JsZW13aXRodXBsb2FkJ10gPSAnRm91dDogZWVuIHByb2JsZWVtIHRyYWQgb3AgdGlqZGVucyBoZXQgdXBsb2FkZW4gdmFuIGhldCBiZXN0YW5kJzsKJGxhbmdbJ2Vycm9yX2ZpbGVjb3B5ZmFpbGVkJ10gPSAnRm91dDogZWVuIHByb2JsZWVtIHRyYWQgb3AgdGlqZGVucyBoZXQga29wacOrcmVuIHZhbiBoZXQgYmVzdGFuZCBuYWFyIGRlIHVpdGVpbmRlbGlqa2UgYmVzdGVtbWluZyc7CiRsYW5nWydlcnJvcl9maWxlZXhpc3RzJ10gPSAnRm91dDogZWVuIGJlc3RhbmQgbWV0IGRlemUgbmFhbSBiZXN0YWF0IGFsJzsKJGxhbmdbJ2Vycm9yX2NzdmZpbGVub3Rmb3VuZCddID0gJ0ZvdXQ6IGthbiBoZXQgQ1NWLWJlc3RhbmQgbmlldCB2aW5kZW4nOwokbGFuZ1snZXJyb3JfY2FudG9wZW5maWxlJ10gPSAnRm91dDoga2FuIGhldCBiZXN0YW5kIG5pZXQgb3BlbmVuJzsKJGxhbmdbJ2Vycm9yX2NhdGVnb3J5ZXhpc3RzJ10gPSAnRm91dDogRWVuIGNhdGVnb3JpZSBtZXQgZGUgbmFhbSAlcyBiZXN0YWF0IGFsJzsKJGxhbmdbJ2NhbF9pZCddID0gJ0lEJzsKJGxhbmdbJ2NhbF9jYWxlbmRhciddID0gJ0NHIEthbGVuZGVyJzsKJGxhbmdbJ2NhbF9kZWZhdWx0X3RlbXBsYXRlcyddID0gJ1N0YW5kYWFyZCBzamFibG9uZW4nOwokbGFuZ1snY2FsX2Rlc2NyaXB0aW9uJ10gPSAnVG9ldm9lZ2VuLCB3aWp6aWdlbiBlbiB2ZXJ3aWpkZXJlbiB2YW4gZ2ViZXVydGVuaXNzZW4gaW4gZGUgd2Vic2l0ZSBrYWxlbmRlci4nOwokbGFuZ1snY2FsX2FkZGV2ZW50J10gPSAnR2ViZXVydGVuaXMgdG9ldm9lZ2VuJzsKJGxhbmdbJ2NhbF9pbXBvcnRfZXZlbnRzJ10gPSAnSW1wb3J0ZWVyIEdlYmV1cnRlbmlzc2VuJzsKJGxhbmdbJ2NhbF9ldmVudHMnXSA9ICdHZWJldXJ0ZW5pc3Nlbic7CiRsYW5nWydjYWxfY2F0ZWdvcmllcyddID0gJ0NhdGVnb3JpZcOrbic7CiRsYW5nWydjYWxfY2FsZW5kYXJfdGVtcGxhdGUnXSA9ICdLYWxlbmRlcnNqYWJsb29uJzsKJGxhbmdbJ2NhbF9saXN0X3RlbXBsYXRlJ10gPSAnT3ZlcnppY2h0c3NqYWJsb29uJzsKJGxhbmdbJ2NhbF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICdUb2Vrb21zdGlnZSBnZWJldXJ0ZW5pc3NlbnNqYWJsb29uJzsKJGxhbmdbJ2NhbF9ldmVudF90ZW1wbGF0ZSddID0gJ0dlYmV1cnRlbmlzc2phYmxvb24nOwokbGFuZ1snY2FsX3NldHRpbmdzJ10gPSAnSW5zdGVsbGluZ2VuJzsKJGxhbmdbJ2NhbF9wcmV2J10gPSAnPCBWb3JpZ2UnOwokbGFuZ1snY2FsX25leHQnXSA9ICdWb2xnZW5kZSA+JzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzX3VwZGF0ZWQnXSA9ICdDYXRlZ29yaWXDq24gYmlqZ2V3ZXJrdCc7CiRsYW5nWydjYWxfc2V0dGluZ3NfdXBkYXRlZCddID0gJ0luc3RlbGxpbmdlbiBiaWpnZXdlcmt0JzsKJGxhbmdbJ2NhbF9hZGRfZXZlbnQnXSA9ICdHZWJldXJ0ZW5pcyB0b2V2b2VnZW4nOwokbGFuZ1snY2FsX2VkaXQnXSA9ICdCZXdlcmsnOwokbGFuZ1snY2FsX2RlbGV0ZSddID0gJ1ZlcndpamRlcic7CiRsYW5nWydjYWxfYXJleW91c3VyZSddID0gJ1dlZXQgdSB6ZWtlciBkYXQgdSB3aWx0IHZlcndpamRlcmVuJzsKJGxhbmdbJ2NhbF91cGRhdGVfdGVtcGxhdGUnXSA9ICdTamFibG9vbiBCaWp3ZXJrZW4nOwokbGFuZ1snY2FsX3N1bmRheSddID0gJ1pvbmRhZyc7CiRsYW5nWydjYWxfbW9uZGF5J10gPSAnTWFhbmRhZyc7CiRsYW5nWydjYWxfdHVlc2RheSddID0gJ0RpbnNkYWcnOwokbGFuZ1snY2FsX3dlZG5lc2RheSddID0gJ1dvZW5zZGFnJzsKJGxhbmdbJ2NhbF90aHVyc2RheSddID0gJ0RvbmRlcmRhZyc7CiRsYW5nWydjYWxfZnJpZGF5J10gPSAnVnJpamRhZyc7CiRsYW5nWydjYWxfc2F0dXJkYXknXSA9ICdaYXRlcmRhZyc7CiRsYW5nWydjYWxfc3VuJ10gPSAnWm9uJzsKJGxhbmdbJ2NhbF9tb24nXSA9ICdNYSc7CiRsYW5nWydjYWxfdHVlcyddID0gJ0RpJzsKJGxhbmdbJ2NhbF93ZWQnXSA9ICdXbyc7CiRsYW5nWydjYWxfdGh1cnMnXSA9ICdEbyc7CiRsYW5nWydjYWxfZnJpJ10gPSAnVnInOwokbGFuZ1snY2FsX3NhdCddID0gJ1phJzsKJGxhbmdbJ2NhbF9qYW51YXJ5J10gPSAnamFudWFyaSc7CiRsYW5nWydjYWxfZmVicnVhcnknXSA9ICdmZWJydWFyaSc7CiRsYW5nWydjYWxfbWFyY2gnXSA9ICdtYWFydCc7CiRsYW5nWydjYWxfYXByaWwnXSA9ICdhcHJpbCc7CiRsYW5nWydjYWxfbWF5J10gPSAnbWVpJzsKJGxhbmdbJ2NhbF9qdW5lJ10gPSAnanVuaSc7CiRsYW5nWydjYWxfanVseSddID0gJ2p1bGknOwokbGFuZ1snY2FsX2F1Z3VzdCddID0gJ2F1Z3VzdHVzJzsKJGxhbmdbJ2NhbF9zZXB0ZW1iZXInXSA9ICdzZXB0ZW1iZXInOwokbGFuZ1snY2FsX29jdG9iZXInXSA9ICdva3RvYmVyJzsKJGxhbmdbJ2NhbF9ub3ZlbWJlciddID0gJ25vdmVtYmVyJzsKJGxhbmdbJ2NhbF9kZWNlbWJlciddID0gJ2RlY2VtYmVyJzsKJGxhbmdbJ2NhbF9hZGQnXSA9ICdUb2V2b2VnZW4nOwokbGFuZ1snY2FsX3VwZGF0ZSddID0gJ0Jpandlcmtlbic7CiRsYW5nWydjYWxfZXZlbnQnXSA9ICdHZWJldXJ0ZW5pcyc7CiRsYW5nWydjYWxfZGF0ZSddID0gJ0RhdHVtJzsKJGxhbmdbJ2NhbF9zdW1tYXJ5J10gPSAnU2FtZW52YXR0aW5nJzsKJGxhbmdbJ2NhbF9kZXRhaWxzJ10gPSAnRGV0YWlscyc7CiRsYW5nWydjYWxfbW9yZSddID0gJ21lZXIgPj4nOwokbGFuZ1snY2FsX3JldHVybiddID0gJ1RlcnVnJzsKJGxhbmdbJ2NhbF90byddID0gJ3RvdCc7CiRsYW5nWydjYWxfcGFzdF9ldmVudHMnXSA9ICdPdWRlIGdlYmV1cnRlbmlzc2VuJzsKJGxhbmdbJ2NhbF91cGNvbWluZ19ldmVudHMnXSA9ICdLb21lbmRlIGdlYmV1cnRlbmlzc2VuJzsKJGxhbmdbJ2NhbF9hbnlfY2F0ZWdvcnknXSA9ICdJZWRlcmUgY2F0ZWdvcmllJzsKJGxhbmdbJ2NhbF9zaG93X29ubHlfZXZlbnRzX2luJ10gPSAnVG9vbiBlbmtlbCBnZWJldXJ0ZW5pc3NlbiBpbic7CiRsYW5nWydjYWxfZmlsdGVyX2J5J10gPSAnRmlsdGVyIHRpdGVsIG9wIDxlbT4ocmVnZXgpPC9lbT4nOwokbGFuZ1snY2FsX2dvJ10gPSAnR2EnOwokbGFuZ1snY2FsX3RpdGxlJ10gPSAnVGl0ZWwnOwokbGFuZ1snY2FsX2Zyb21kYXRlJ10gPSAnVmFuYWYgZGF0dW0nOwokbGFuZ1snY2FsX3RvZGF0ZSddID0gJ1RvdCBkYXR1bSc7CiRsYW5nWydjYWxfdXBkYXRlX2NhdGVnb3JpZXMnXSA9ICdDYXRlZ29yaWXDq24gYmlqd2Vya2VuJzsKJGxhbmdbJ2NhbF9sYW5ndWFnZSddID0gJ1RhYWwnOwokbGFuZ1snY2FsX3VwZGF0ZXNldHRpbmdzJ10gPSAnSW5zdGVsbGluZ2VuIG9wc2xhYW4nOwokbGFuZ1snY2FsX3VzZV90d2VsdmVfaG91cl9jbG9jayddID0gJ0dlYnJ1aWsgbWFrZW4gdmFuIHR3YWFsZiB1dXJzIGtsb2sgYmlqIGRlIHVyZW4tdWl0dm91d21lbnVcJ3M/JzsKJGxhbmdbJ2NhbF9kZWZhdWx0X2NhdGVnb3J5J10gPSAnU3RhbmRhYXJkIGNhdGVnb3JpZSc7CiRsYW5nWydjYWxfdXBkYXRlX2ZpZWxkcyddID0gJ1ZlbGRlbiBvcHNsYWFuJzsKJGxhbmdbJ2ZvcmNlX2NhdGVnb3J5J10gPSAnRWlzIG1pbnN0ZW5zIGVlbiBjYXRlZ29yaWUnOwokbGFuZ1snc2hvd3Bhc3R5ZWFycyddID0gJ0hvZXZlZWwgamFyZW4gaW4gaGV0IHZlcmxlZGVuIHppam4gdG9lZ2VzdGFhbj8nOwokbGFuZ1snc2hvd2Z1dHVyZXllYXJzJ10gPSAnSG9ldmVlbCBqYXJlbiBpbiBkZSB0b2Vrb21zdCB6aWpuIHRvZWdlc3RhYW4/JzsKJGxhbmdbJ2hpZGVzdW1tYXJ5J10gPSAnTW9ldCBoZXQgc2FtZW52YXR0aW5nc3ZlbGQgdmVyYm9yZ2VuIHppam4/JzsKJGxhbmdbJ2hpZGVjb250ZW50J10gPSAnTW9ldCBoZXQgaW5ob3Vkc3ZlbGQgdmVyYm9yZ2VuIHppam4/JzsKJGxhbmdbJ2NhdGVnb3J5X3JlbWluZGVyJ10gPSAnU2VsZWN0ZWVyIGVlbiBvZiBtZWVyZGVyZSBjYXRlZ29yaWXDq24gdm9vciBkZXplIGdlYmV1cnRlbmlzJzsKJGxhbmdbJ21vZHVsZV9leGFtcGxlX3N0eWxlc2hlZXQnXSA9ICdDRyBLYWxlbmRlciBDU1Mgdm9vcmJlZWxkJzsKJGxhbmdbJ2Vycm9yX3Blcm1pc3Npb24nXSA9ICdVIG1vZXQgZGUgZ2VzY2hpa3RlIHJlY2h0ZW4gKCVzKSBoZWJiZW4gb20gZGV6ZSBmdW5jdGlvbmFsaXRlaXQgdGUgZ2VicnVpa2VuJzsKJGxhbmdbJ2luc3RhbGxfcG9zdG1lc3NhZ2UnXSA9ICdWZXJnZWV0IG5pZXQgb20gZGUgIk1vZGlmeSBDYWxlbmRhciItcmVjaHRlbiB2b29yIGdlYnJ1aWtlcnMgZGllIGRlIGthbGVuZGVyZ2ViZXVydGVuaXNzZW4gbW9ldGVuIGJlaGVyZW4gaW4gdGUgc3RlbGxlbic7CiRsYW5nWydkZWxldGV0YWdnZWQnXSA9ICdWZXJ3aWpkZXIgZGUgZ2VzZWxlY3RlZXJkZSBnZWJldXJ0ZW5pc3Nlbic7CiRsYW5nWydjb25maXJtZGVsZXRldGFnZ2VkJ10gPSAnV2VldCB1IHpla2VyIGRhdCBkZXplIGdlYmV1cnRlbmlzc2VuIHZlcndpamRlcmQgbW9ldGVuIHdvcmRlbj8nOwokbGFuZ1sndGFnZ2VkZGVsZXRlZCddID0gJ0dlc2VsZWN0ZWVyZGUgZ2ViZXVydGVuaXNzZW4gemlqbiB2ZXJ3aWpkZXJkJzsKJGxhbmdbJ3RlbXBsYXRlcyddID0gJ1NqYWJsb25lbic7CiRsYW5nWyd0ZW1wbGF0ZV9oZWxwJ10gPSAnU2phYmxvb25odWxwJzsKJGxhbmdbJ2ZpbGVfdGVtcGxhdGVzJ10gPSAnQmVzdGFuZHNzamFibG9vbic7CiRsYW5nWydhZGR0ZW1wbGF0ZSddID0gJ1ZvZWcgZWVuIHNqYWJsb29uIHRvZSc7CiRsYW5nWyd0ZW1wbGF0ZSddID0gJ1NqYWJsb29uJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZXRleHQnXSA9ICdTamFibG9vbm5hYW0nOwokbGFuZ1snZWRpdHRlbXBsYXRlJ10gPSAnQmV3ZXJrIHNqYWJsb29uJzsKJGxhbmdbJ2RlbGV0ZXRlbXBsYXRlJ10gPSAnVmVyd2lqZGVyIHNqYWJsb29uJzsKJGxhbmdbJ25ld3RlbXBsYXRlJ10gPSAnTmFhbSBuaWV1dyBzamFibG9vbic7CiRsYW5nWyd0ZW1wbGF0ZW5hbWVleGlzdHMnXSA9ICdGb3V0OiBFZW4gc2phYmxvb24gbWV0IGRpZSBuYWFtIGJlc3RhYXQgYWwuIEtpZXMgZWVuIGFuZGVyZSBuYWFtLic7CiRsYW5nWyd0ZW1wbGF0ZWltcG9ydGVkJ10gPSAnSGV0IHNqYWJsb29uIGlzIGdlw69tcG9ydGVlcmQgaW4gZGUgZGF0YWJhc2UgZW4ga2FuIGdlYnJ1aWt0IHdvcmRlbi4nOwokbGFuZ1sndmlld19kZWZhdWx0X3N0eWxlc2hlZXQnXSA9ICdCZWtpamsgc3RhbmRhYXJkIHN0eWxlc2hlZXQnOwokbGFuZ1snZmlsZW5hbWUnXSA9ICdCZXN0YW5kc25hYW0nOwokbGFuZ1snaW1wb3J0dGVtcGxhdGUnXSA9ICdJbXBvcnRlZXIgc2phYmxvb24nOwokbGFuZ1sndGVtcGxhdGVfZGVsZXRlZCddID0gJ0RlIHNqYWJsb29uIGlzIHZlcndpamRlcmQgdWl0IGRlIGRhdGFiYXNlLic7CiRsYW5nWyd1cGRhdGV0ZW1wbGF0ZXN1Y2Nlc3MnXSA9ICdEZSBzamFibG9vbiBpcyBiaWpnZXdlcmt0JzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlZmFpbHVyZSddID0gJ0VlbiBmb3V0IGlzIHRpamRlbnMgaGV0IGJpandlcmtlbiB2YW4gaGV0IHNqYWJsb29uIG9udHN0YWFuJzsKJGxhbmdbJ3NldHRpbmdzc2F2ZWQnXSA9ICdJbnN0ZWxsaW5nZW4gemlqbiBvcGdlc2xhZ2VuJzsKJGxhbmdbJ2NhdGVnb3J5ZGVsZXRlZCddID0gJ0NhdGVnb3JpZSB2ZXJ3aWpkZXJkJzsKJGxhbmdbJ2NhdGVnb3J5dXBkYXRlZCddID0gJ0NhdGVnb3JpZSBiaWpnZXdlcmt0JzsKJGxhbmdbJ2NhdGVnb3J5YWRkZWQnXSA9ICdDYXRlZ29yaWUgdG9lZ2V2b2VnZCc7CiRsYW5nWydldmVudGRlbGV0ZWQnXSA9ICdEZSBnZWJldXJ0ZW5pcyBpcyB2ZXJ3aWpkZXJkJzsKJGxhbmdbJ2V2ZW50dXBkYXRlZCddID0gJ0RlIGdlYmV1cnRlbmlzIGlzIGJpamdld2Vya3QnOwokbGFuZ1snZGVmYXVsdF9wYWdlX2Vycm9yJ10gPSAnRm91dDogTWV0IGRlIHRvZXBhc3NpbmcgdmFuIFByZXR0eSBVUkxzIG1vZXQgZWVuIGVlbiBzdGFuZGFhcmQgcGFnaW5hIG9wZ2V2ZW4gd29yZGVuLCBvbSBkZSBrYWxlbmRlciB0ZSBrdW5uZW4gZ2VicnVpa2VuLic7CiRsYW5nWyd0aW1lX2F0J10gPSAnb20nOwokbGFuZ1sndHlwZSddID0gJ1R5cGUnOwokbGFuZ1snbmFtZSddID0gJ05hYW0nOwokbGFuZ1snb3JkZXInXSA9ICdWb2xnb3JkZSc7CiRsYW5nWydmaWVsZGFkZGVkJ10gPSAnVmVsZCB0b2VnZXZvZWdkJzsKJGxhbmdbJ2ZpZWxkZGVsZXRlZCddID0gJ1ZlbGQgdmVyd2lqZGVyZCc7CiRsYW5nWydmaWVsZHMnXSA9ICdJbnN0ZWxiYXJlIHZlbGRlbic7CiRsYW5nWyd0ZXh0ZmllbGQnXSA9ICdUZWtzdHZlbGQnOwokbGFuZ1sndXBsb2FkZmllbGQnXSA9ICdCZXN0YW5kIHVwbG9hZCB2ZWxkJzsKJGxhbmdbJ2Rlc2NyaXB0aW9uJ10gPSAnPHA+Q0cgS2FsZW5kZXIgaXMgZWVuIG1vZHVsZSBvbSBnZWJldXJ0ZW5pc3NlbiBvcCBlZW4gcGFnaW5hIHRlIHRvbmVuLiBBbHMgZGUgbW9kdWxlIGdlw69uc3RhbGxlZXJkIGlzLCB3b3JkdCBlciBlZW4gS2FsZW5kZXIgYmVoZWVyIHBhZ2luYSBhYW4gaGV0IEluaG91ZC1tZW51IHRvZWdldm9lZ2QgZGllIGhldCBiZWhlZXIgdmFuIGRlIGdlYmV1cnRlbmlzc2VuIG1vZ2VsaWprIG1hYWt0LjwvcD4nOwokbGFuZ1snZGVmYXVsdGNhbGVuZGFycGFnZSddID0gJ1N0YW5kYWFyZCBwYWdpbmEgZGllIGRlIGthbGVuZGVyIGJldmF0LiBEZXplIHBhZ2luYSBtb2V0IGVlbiBTbWFydHktdGFnIGJldmF0dGVuIGRpZSBkZSBrYWxlbmRlciBhYW5yb2VwdC4gVmVycGxpY2h0IGFscyB1IGRlIHByZXR0eSBVUkxcJ3MgZ2VicnVpa3QuJzsKJGxhbmdbJ3VwbG9hZGRpcmVjdG9yeSddID0gJ01hcCB3YWFyIGRlIGdlw7xwbG9hZGUgYmVzdGFuZGVuIG1vZXRlbiB3b3JkZW4gZ2VwbGFhdHN0JzsKJGxhbmdbJ3VwbG9hZGZpbGV0eXBlcyddID0gJ1RvZWdlc3RhbmUgYmVzdGFuZHN0eXBlbic7CiRsYW5nWyd1cGxvYWR1bmlxdWUnXSA9ICdHYXJhbmRlZXIgdW5pZWtlIGJlc3RhbmRzbmFtZW4nOwokbGFuZ1snY2FsX3JlY3VyX3BlcmlvZCddID0gJ1RlcnVna2VyZW5kJzsKJGxhbmdbJ2NhbF9yZWN1cl91bnRpbCddID0gJ1RlcnVna2VyZW5kIHRvdCc7CiRsYW5nWydoZWxwX3RlbXBsYXRlJ10gPSAnPHA+PGI+VG9vbiBhdXRldXJzbmFhbTo8L2I+PC9wPg0KPGNvZGU+QXV0ZXVyOiB7JGV2ZW50LmF1dGhvcm5hbWV9PC9jb2RlPic7CiRsYW5nWydnYSddID0gJ0dBMS4yLjc2Nzk2NTAyMC4xNDAwNjEyMzY0JzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/pl_PL.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudEFkZGVkJ10gPSAnQ2FsbGVkIGFmdGVyIGFkZGluZyBhIGNhbGVuZGFyIGV2ZW50JzsKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudEVkaXRlZCddID0gJ0NhbGxlZCBhZnRlciBlZGl0aW5nIGFuIGV4aXN0aW5nIGNhbGVuZGFyIGV2ZW50JzsKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudERlbGV0ZWQnXSA9ICdDYWxsZWQgYWZ0ZXIgYW4gZXZlbnQgaGFzIGJlZW4gZGVsZXRlZCc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlBZGRlZCddID0gJ0NhbGxlZCBhZnRlciBhIGNhdGVnb3J5IGlzIGNyZWF0ZWQnOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5RWRpdGVkJ10gPSAnQ2FsbGVkIGFmdGVyIGEgY2F0ZWdvcnkgaXMgZWRpdGVkJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeURlbGV0ZWQnXSA9ICdDYWxsZWQgYWZ0ZXIgYSBjYXRlZ29yeSBpcyBkZWxldGVkJzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudEFkZGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgZXZlbnQgaXMgYWRkZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtldmVudF90aXRsZVwmcXVvdDsgLSBFdmVudCBUaXRsZTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X3N1bW1hcnlcJnF1b3Q7IC0gU3VtbWFyeSBUZXh0PC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGV0YWlsc1wmcXVvdDsgLSBEZXRhaWxlZCBEZXNjcmlwdGlvbjwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RhdGVfc3RhcnRcJnF1b3Q7IC0gVGhlIGV2ZW50IHN0YXJ0IGRhdGUvdGltZTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RhdGVfZW5kXCZxdW90OyAtIFRoZSBldmVudCBlbmQgZGF0ZS90aW1lPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfY3JlYXRlZF9ieVwmcXVvdDsgLSBUaGUgdXNlcmlkIG9mIHRoZSBhdXRob3I8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9pZFwmcXVvdDsgLSBUaGUgZXZlbnQgaWQ8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtRXZlbnRFZGl0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBldmVudCBpcyBlZGl0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtldmVudF90aXRsZVwmcXVvdDsgLSBFdmVudCBUaXRsZTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X3N1bW1hcnlcJnF1b3Q7IC0gU3VtbWFyeSBUZXh0PC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGV0YWlsc1wmcXVvdDsgLSBEZXRhaWxlZCBEZXNjcmlwdGlvbjwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RhdGVfc3RhcnRcJnF1b3Q7IC0gVGhlIGV2ZW50IHN0YXJ0IGRhdGUvdGltZTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RhdGVfZW5kXCZxdW90OyAtIFRoZSBldmVudCBlbmQgZGF0ZS90aW1lPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfY3JlYXRlZF9ieVwmcXVvdDsgLSBUaGUgdXNlcmlkIG9mIHRoZSBhdXRob3I8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9pZFwmcXVvdDsgLSBUaGUgZXZlbnQgaWQ8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtRXZlbnREZWxldGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgZXZlbnQgaXMgZGVsZXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X2lkXCZxdW90OyAtIFRoZSBldmVudCBpZDwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeUFkZGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgY2F0ZWdvcnkgaXMgYWRkZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9pZFwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgaWQ8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlFZGl0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBjYXRlZ29yeSBpcyBlZGl0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9pZFwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgaWQ8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9uYW1lXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBuYW1lPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfb3JkZXJcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IHNvcnQgb3JkZXI8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgY2F0ZWdvcnkgaXMgZGVsZXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2NhdGVnb3J5X2lkXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBpZDwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X25hbWVcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IG5hbWU8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9vcmRlclwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgc29ydCBvcmRlcjwvbGk+DQo8L3VsPic7CiRsYW5nWydtc2dfZXZlbnRhZGRlZCddID0gJ1pkYXJ6ZW5pZSBkb2RhbmUnOwokbGFuZ1snZXJyb3Jfbm91cGxvYWQnXSA9ICdFUlJPUjogTm8gdXBsb2FkZWQgZmlsZSBmb3VuZCc7CiRsYW5nWydlcnJvcl9pbnZhbGlkZmlsZW5hbWUnXSA9ICdFUlJPUjogVGhlIGZpbGUgdXBsb2FkZWQgY2Fubm90IGJlIGFjY2VwdGVkJzsKJGxhbmdbJ2Vycm9yX3Byb2JsZW13aXRodXBsb2FkJ10gPSAnRVJST1I6IEEgcHJvYmxlbSBvY2N1cnJlZCB0cnlpbmcgdG8gdXBsb2FkIHRoZSBmaWxlJzsKJGxhbmdbJ2Vycm9yX2ZpbGVjb3B5ZmFpbGVkJ10gPSAnRVJST1I6IEEgUHJvYmxlbSBvY2N1cnJlZCB3aGVuIGNvcHlpbmcgdGhlIGZpbGUgdG8gaXRzIGZpbmFsIGRlc3RpbmF0aW9uJzsKJGxhbmdbJ2Vycm9yX2ZpbGVleGlzdHMnXSA9ICdFUlJPUjogQSBmaWxlIGJ5IHRoYXQgbmFtZSBhbHJlYWR5IGV4aXN0cyc7CiRsYW5nWydlcnJvcl9jc3ZmaWxlbm90Zm91bmQnXSA9ICdCxYHEhEQ6IG5pZSBvZG5hbGV6aW9ubyBwbGlrdSBDU1YnOwokbGFuZ1snZXJyb3JfY2FudG9wZW5maWxlJ10gPSAnQsWBxIREOiBuaWUgbW/FvG5hIG90d29yennEhyBwbGlrdSc7CiRsYW5nWydjYWxfY2FsZW5kYXInXSA9ICdLYWxlbmRhcnonOwokbGFuZ1snY2FsX2Rlc2NyaXB0aW9uJ10gPSAnT3Bpcyc7CiRsYW5nWydjYWxfYWRkZXZlbnQnXSA9ICdEb2RhaiB6ZGFyemVuaWUnOwokbGFuZ1snY2FsX2ltcG9ydF9ldmVudHMnXSA9ICdJbXBvcnR1aiB6ZGFyemVuaWEnOwokbGFuZ1snY2FsX2V2ZW50cyddID0gJ1pkYXJ6ZW5pYSc7CiRsYW5nWydjYWxfY2F0ZWdvcmllcyddID0gJ0thdGVnb3JpZSc7CiRsYW5nWydjYWxfY2FsZW5kYXJfdGVtcGxhdGUnXSA9ICdTemFibG9uIGthbGVuZGFyemEnOwokbGFuZ1snY2FsX2xpc3RfdGVtcGxhdGUnXSA9ICdTemFibG9uIGxpc3R5JzsKJGxhbmdbJ2NhbF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICdTemFibG9uIG5hZGNob2R6xIVjeWNoIHpkYXJ6ZcWEJzsKJGxhbmdbJ2NhbF9ldmVudF90ZW1wbGF0ZSddID0gJ1N6YWJsb24gemRhcnplbmlhJzsKJGxhbmdbJ2NhbF9zZXR0aW5ncyddID0gJ1VzdGF3aWVuaWEnOwokbGFuZ1snY2FsX3ByZXYnXSA9ICcmbGFxdW87IFBvcHJ6ZWRuaSc7CiRsYW5nWydjYWxfbmV4dCddID0gJ05hc3TEmXBueSAmcmFxdW87JzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzX3VwZGF0ZWQnXSA9ICdLYXRlZ29yaWUgYWt0dWFsaXpvd2Fubyc7CiRsYW5nWydjYWxfc2V0dGluZ3NfdXBkYXRlZCddID0gJ1VzdGF3aWVuaWEgYWt0dWFsaXpvd2Fubyc7CiRsYW5nWydjYWxfYWRkX2V2ZW50J10gPSAnRG9kYWogemRhcnplbmllJzsKJGxhbmdbJ2NhbF9lZGl0J10gPSAnRWR5dHVqJzsKJGxhbmdbJ2NhbF9kZWxldGUnXSA9ICdTa2FzdWonOwokbGFuZ1snY2FsX2FyZXlvdXN1cmUnXSA9ICdDenkgamVzdGXFmyBwZXduaWVuLCDFvGUgY2hjZXN6IHVzdW7EhcSHJzsKJGxhbmdbJ2NhbF91cGRhdGVfdGVtcGxhdGUnXSA9ICdBa3R1YWxpenVqIHN6YWJsb24nOwokbGFuZ1snY2FsX3N1bmRheSddID0gJ05pZWR6aWVsYSc7CiRsYW5nWydjYWxfbW9uZGF5J10gPSAnUG9uaWVkemlhxYJlayc7CiRsYW5nWydjYWxfdHVlc2RheSddID0gJ1d0b3Jlayc7CiRsYW5nWydjYWxfd2VkbmVzZGF5J10gPSAnxZpyb2RhJzsKJGxhbmdbJ2NhbF90aHVyc2RheSddID0gJ0N6d2FydGVrJzsKJGxhbmdbJ2NhbF9mcmlkYXknXSA9ICdQacSFdGVrJzsKJGxhbmdbJ2NhbF9zYXR1cmRheSddID0gJ1NvYm90YSc7CiRsYW5nWydjYWxfc3VuJ10gPSAnTic7CiRsYW5nWydjYWxfbW9uJ10gPSAnUG4nOwokbGFuZ1snY2FsX3R1ZXMnXSA9ICdXJzsKJGxhbmdbJ2NhbF93ZWQnXSA9ICfFmic7CiRsYW5nWydjYWxfdGh1cnMnXSA9ICdDeic7CiRsYW5nWydjYWxfZnJpJ10gPSAnUCc7CiRsYW5nWydjYWxfc2F0J10gPSAnUyc7CiRsYW5nWydjYWxfamFudWFyeSddID0gJ3N0eWN6ZcWEJzsKJGxhbmdbJ2NhbF9mZWJydWFyeSddID0gJ2x1dHknOwokbGFuZ1snY2FsX21hcmNoJ10gPSAnbWFyemVjJzsKJGxhbmdbJ2NhbF9hcHJpbCddID0gJ2t3aWVjaWXFhCc7CiRsYW5nWydjYWxfbWF5J10gPSAnbWFqJzsKJGxhbmdbJ2NhbF9qdW5lJ10gPSAnY3plcndpZWMnOwokbGFuZ1snY2FsX2p1bHknXSA9ICdsaXBpZWMnOwokbGFuZ1snY2FsX2F1Z3VzdCddID0gJ3NpZXJwaWXFhCc7CiRsYW5nWydjYWxfc2VwdGVtYmVyJ10gPSAnd3J6ZXNpZcWEJzsKJGxhbmdbJ2NhbF9vY3RvYmVyJ10gPSAncGHFumR6aWVybmlrJzsKJGxhbmdbJ2NhbF9ub3ZlbWJlciddID0gJ2xpc3RvcGFkJzsKJGxhbmdbJ2NhbF9kZWNlbWJlciddID0gJ2dydWR6aWXFhCc7CiRsYW5nWydjYWxfYWRkJ10gPSAnRG9kYWonOwokbGFuZ1snY2FsX3VwZGF0ZSddID0gJ0FrdHVhbGl6dWonOwokbGFuZ1snY2FsX2V2ZW50J10gPSAnWmRhcnplbmllJzsKJGxhbmdbJ2NhbF9kYXRlJ10gPSAnRGF0YSc7CiRsYW5nWydjYWxfc3VtbWFyeSddID0gJ09waXMnOwokbGFuZ1snY2FsX2RldGFpbHMnXSA9ICdTemN6ZWcmb2FjdXRlO8WCeSc7CiRsYW5nWydjYWxfbW9yZSddID0gJ3dpxJljZWogPj4nOwokbGFuZ1snY2FsX3JldHVybiddID0gJ1dyJm9hY3V0ZTvEhyc7CiRsYW5nWydjYWxfdG8nXSA9ICdkbyc7CiRsYW5nWydjYWxfcGFzdF9ldmVudHMnXSA9ICdaZGFyemVuaWEgcHJ6ZXN6xYJlJzsKJGxhbmdbJ2NhbF91cGNvbWluZ19ldmVudHMnXSA9ICdaZGFyemVuaWEgbmFkY2hvZHrEhWNlJzsKJGxhbmdbJ2NhbF9hbnlfY2F0ZWdvcnknXSA9ICdXc3p5c3RraWUga2F0ZWdvcmllJzsKJGxhbmdbJ2NhbF9zaG93X29ubHlfZXZlbnRzX2luJ10gPSAnUG9rYcW8IHR5bGtvIHpkYXJ6ZW5pYSB6JzsKJGxhbmdbJ2NhbF9maWx0ZXJfYnknXSA9ICdGaWx0cnVqIHBvJzsKJGxhbmdbJ2NhbF9nbyddID0gJ0lkxbonOwokbGFuZ1snY2FsX3RpdGxlJ10gPSAnVHl0dcWCJzsKJGxhbmdbJ2NhbF9mcm9tZGF0ZSddID0gJ0RhdGEgb2QnOwokbGFuZ1snY2FsX3RvZGF0ZSddID0gJ0RhdGEgZG8nOwokbGFuZ1snY2FsX3VwZGF0ZV9jYXRlZ29yaWVzJ10gPSAnQWt0dWFsaXp1aiBrYXRlZ29yaWUnOwokbGFuZ1snY2FsX2xhbmd1YWdlJ10gPSAnSsSZenlrJzsKJGxhbmdbJ2NhbF91cGRhdGVzZXR0aW5ncyddID0gJ0FrdHVhbGl6dWogdXN0YXdpZW5pYSc7CiRsYW5nWydjYWxfdXNlX3R3ZWx2ZV9ob3VyX2Nsb2NrJ10gPSAnVcW8eXdhaiB6ZWdhcmEgMTIgZ29kemlubmVnbyB3IGxpc3RhY2ggcm96d2lqYW55Y2g/JzsKJGxhbmdbJ2NhbF9kZWZhdWx0X2NhdGVnb3J5J10gPSAnRG9tecWbbG5hIGthdGVnb3JpYSc7CiRsYW5nWydjYWxfdXBkYXRlX2ZpZWxkcyddID0gJ0FrdHVhbGl6dWogcG9sYSc7CiRsYW5nWydmb3JjZV9jYXRlZ29yeSddID0gJ1d5bXXFmyBjbyBuYWptbmllaiBqZWRuxIUga2F0ZWdvcmnEmSc7CiRsYW5nWydzaG93cGFzdHllYXJzJ10gPSAnSmFrIGR1xbxvIGxhdCBwcnplc3rFgnljaCBqZXN0IGRvendvbG9uZSc7CiRsYW5nWydzaG93ZnV0dXJleWVhcnMnXSA9ICdKYWsgZHXFvG8gbGF0IHByenlzesWCeWNoIGplc3QgZG96d29sb25lJzsKJGxhbmdbJ2hpZGVzdW1tYXJ5J10gPSAnUG9sZSBvcGlzdSBwb3dpbm5vIGJ5xIcgdWtyeXRlJzsKJGxhbmdbJ2hpZGVjb250ZW50J10gPSAnUG9sZSB0cmXFm2NpIHBvd2lubm8gYnnEhyB1a3J5dGUnOwokbGFuZ1snY2F0ZWdvcnlfcmVtaW5kZXInXSA9ICdaYXpuYWN6IGplZG7EhSBsdWIgd2nEmWNlaiBrYXRlZ29yaWkgZGxhIHRlZ28gd3lkYXJ6ZW5pYSc7CiRsYW5nWydtb2R1bGVfZXhhbXBsZV9zdHlsZXNoZWV0J10gPSAnUHJ6eWvFgmFkIENTUy1hIGRsYSBrYWxlbmRhcnphJzsKJGxhbmdbJ2Vycm9yX3Blcm1pc3Npb24nXSA9ICdXeW1hZ2FuZSBqZXN0IG9kcG93aWVkbmllIHVwcmF3bmllbmllICglcykgYnkgbWllxIcgZG9zdMSZcCBkbyB0ZWogZnVua2NqaSc7CiRsYW5nWydpbnN0YWxsX3Bvc3RtZXNzYWdlJ10gPSAnVXBld25paiBzacSZLCDFvGUgdXN0YXdpb25lIGplc3QgdXByYXduaWVuaWUgJnF1b3Q7TW9keWZpa3VqIGthbGVuZGFyeiZxdW90OyBkbGEgZ3J1cCB1xbx5dGtvd25payZvYWN1dGU7dywga3Qmb2FjdXRlO3J6eSBixJlkxIUgemFyesSFZHphxIcga2FsZW5kYXJ6ZW0nOwokbGFuZ1snZGVsZXRldGFnZ2VkJ10gPSAnVXN1xYQgemF6bmFjem9uZSB3eWRhcnplbmlhJzsKJGxhbmdbJ2NvbmZpcm1kZWxldGV0YWdnZWQnXSA9ICdKZXN0ZcWbIHBld2llbiwgxbxlIHRlIHd5ZGFyemVuaWEgcG93aW5ueSBiecSHIHVzdW5pxJl0ZT8nOwokbGFuZ1sndGFnZ2VkZGVsZXRlZCddID0gJ1phem5hY3pvbmUgd3lkYXJ6ZW5pYSB6b3N0YcWCeSB1c3VuacSZdGUnOwokbGFuZ1sndGVtcGxhdGVzJ10gPSAnU3phYmxvbnknOwokbGFuZ1sndGVtcGxhdGVfaGVscCddID0gJ1N6YWJsb24gcG9tb2N5JzsKJGxhbmdbJ2ZpbGVfdGVtcGxhdGVzJ10gPSAnU3phYmxvbnkgdyBwbGlrYWNoJzsKJGxhbmdbJ2FkZHRlbXBsYXRlJ10gPSAnRG9kYWogc3phYmxvbic7CiRsYW5nWyd0ZW1wbGF0ZSddID0gJ1N6YWJsb24nOwokbGFuZ1sndGVtcGxhdGVuYW1ldGV4dCddID0gJ05hendhIHN6YWJsb251JzsKJGxhbmdbJ2VkaXR0ZW1wbGF0ZSddID0gJ0VkeXR1aiBzemFibG9uJzsKJGxhbmdbJ2RlbGV0ZXRlbXBsYXRlJ10gPSAnVXN1xYQgc3phYmxvbic7CiRsYW5nWyduZXd0ZW1wbGF0ZSddID0gJ05hendhIG5vd2VnbyBzemFibG9udSc7CiRsYW5nWyd0ZW1wbGF0ZW5hbWVleGlzdHMnXSA9ICdCxYHEhEQ6IFN6YWJsb24geiB0xIUgbmF6d8SFIGp1xbwgaXN0bmllamUuIFdwcm93YWTFuiBpbm7EhSBuYXp3xJkuJzsKJGxhbmdbJ3RlbXBsYXRlaW1wb3J0ZWQnXSA9ICdTemFibG9uIHpvc3RhxYIgcG9tecWbbG5pZSB6YWltcG9ydG93YW55IGRvIGJhenkgZGFueWNoIGkgamVzdCBqdcW8IGdvdG93eSBkbyB1xbx5Y2lhLic7CiRsYW5nWyd2aWV3X2RlZmF1bHRfc3R5bGVzaGVldCddID0gJ1pvYmFjeiBkb215xZtsbmUgYXJrdXN6ZSBzdHnFgiZvYWN1dGU7dyc7CiRsYW5nWydmaWxlbmFtZSddID0gJ05hendhIHBsaWt1JzsKJGxhbmdbJ2ltcG9ydHRlbXBsYXRlJ10gPSAnSW1wb3J0dWogc3phYmxvbic7CiRsYW5nWyd0ZW1wbGF0ZV9kZWxldGVkJ10gPSAnU3phYmxvbiB6b3N0YcWCIHNrYXNvd2FueSB6IGJhenkgZGFueWNoJzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlc3VjY2VzcyddID0gJ1N6YWJsb24gYWt0dWFsaXpvd2FubyBwb215xZtsbmllJzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlZmFpbHVyZSddID0gJ1BvZGN6YXMgYWt0dWFsaXphY2ppIHN6YWJsb251IHd5c3TEhXBpxYIgYsWCxIVkJzsKJGxhbmdbJ3NldHRpbmdzc2F2ZWQnXSA9ICdVc3Rhd2llbmlhIHpvc3RhxYJ5IHphcGlzYW5lIHBvbXnFm2xuaWUnOwokbGFuZ1snY2F0ZWdvcnlkZWxldGVkJ10gPSAnS2F0ZWdvcmlhIHpvc3RhxYJhIHVzdW5pxJl0YSc7CiRsYW5nWydjYXRlZ29yeXVwZGF0ZWQnXSA9ICdLYXRlZ29yaWEgem9zdGHFgmEgemFrdHVhbGl6b3dhbmEnOwokbGFuZ1snY2F0ZWdvcnlhZGRlZCddID0gJ0thdGVnb3JpYSB6b3N0YcWCYSBkb2RhbmEnOwokbGFuZ1snZXZlbnRkZWxldGVkJ10gPSAnV3lkYXJ6ZW5pZSB6b3N0YcWCbyB1c3VuacSZdGUnOwokbGFuZ1snZXZlbnR1cGRhdGVkJ10gPSAnV3lkYXJ6ZW5pZSB6b3N0YcWCdSB6YWt0dWFsaXpvd2FuZSc7CiRsYW5nWydkZWZhdWx0X3BhZ2VfZXJyb3InXSA9ICdCxYHEhEQ6IE11c2lzeiB1c3Rhd2nEhyBkb215xZtsbsSFIHN0cm9uxJkgYnkgdcW8eXdhxIcgbW9kdcWCIEthbGVuZGFyeiB6IG9wY2rEhSAmIzAzOTtwcmV0dHkgVVJMcyYjMDM5Oy4gV2VqZMW6IHcgemFrxYJhZGvEmSB1c2F0d2llxYQgbW9kdcWCdSBpIHd5YmllcnogamFrxIXFmyBkb215xZtsbsSFIHN0cm9uxJkuJzsKJGxhbmdbJ3RpbWVfYXQnXSA9ICdvJzsKJGxhbmdbJ3R5cGUnXSA9ICdUeXAnOwokbGFuZ1snbmFtZSddID0gJ05hendhJzsKJGxhbmdbJ29yZGVyJ10gPSAnS29sZWpub8WbxIcnOwokbGFuZ1snZmllbGRhZGRlZCddID0gJ1BvbGUgZG9kYW5lJzsKJGxhbmdbJ2ZpZWxkZGVsZXRlZCddID0gJ1BvbGUgc2thc293YW5lJzsKJGxhbmdbJ2ZpZWxkcyddID0gJ1BvbGEgdcW8eXRrb3duaWthJzsKJGxhbmdbJ3RleHRmaWVsZCddID0gJ1BvbGUgdGVrc3Rvd2UnOwokbGFuZ1sndXBsb2FkZmllbGQnXSA9ICdQb2xlIHdncnl3YW5pYSBwbGlrJm9hY3V0ZTt3JzsKJGxhbmdbJ2Rlc2NyaXB0aW9uJ10gPSAnPHA+TW9kdcWCIEthbGVuZGFyeiBzxYJ1xbx5IHd5xZt3aWV0bGFuaXUgemRhcnplxYQgbmEgVHdvamVqIHN0cm9uaWUuIFBvIHphaW5zdGFsb3dhbml1IG1vZHXFgnUgdyBtZW51IHBvamF3aSBzacSZIHBvenljamEgJnF1b3Q7emFyesSFZHphaiBrYWxlbmRhcnplbSZxdW90OyAtIHRhbSB1c3Rhd2lzeiB3c3p5c3RraWUgemRhcnplbmlhLg0KPC9wPic7CiRsYW5nWydkZWZhdWx0Y2FsZW5kYXJwYWdlJ10gPSAnRG9tecWbbG5hIHN0cm9uYSB3ecWbd2lldGxhasSFY2Ega2FsZW5kYXJ6LiBOYSB0ZWogc3Ryb25pZSBtdXNpIHBvamF3acSHIHNpxJkgem5hY3puaWsgc21hcnR5ICh3xIVzYXR5IG5hd2lhcykgeiB3eXdvxYJhbmllbSBtb2R1xYJ1IEthbGVuZGFyei4gVXN0YXdpZW5pZSB0ZWogb3BjamkgamVzdCBrb25pZWN6bmUgcHJ6eSB1xbx5Y2l1IG9wY2ppICYjMDM5O3ByZXR0eSBVUkxzJiMwMzk7IC0gc2tyJm9hY3V0ZTtjb255Y2ggYWRyZXMmb2FjdXRlO3cgc3Ryb24uJzsKJGxhbmdbJ3VwbG9hZGRpcmVjdG9yeSddID0gJ0thdGFsb2csIGRvIGt0Jm9hY3V0ZTtyZWdvIHRyYWZpxIUgd2dyeXdhbmUgcGxpa2knOwokbGFuZ1sndXBsb2FkZmlsZXR5cGVzJ10gPSAnRG96d29sb25lIHR5cHkgcGxpayZvYWN1dGU7dyc7CiRsYW5nWyd1cGxvYWR1bmlxdWUnXSA9ICdVcGV3bmlqIHNpxJksIMW8ZSBuYXp3eSBwbGlrJm9hY3V0ZTt3IHPEhSB1bmlrYWxuZSc7CiRsYW5nWyd0aHVtYl93aWR0aCddID0gJ1RodW1ibmFpbCBXaWR0aCc7CiRsYW5nWyd0aHVtYl9oZWlnaHQnXSA9ICdUaHVtYm5haWwgSGVpZ2h0JzsKJGxhbmdbJ2xhcmdlX3dpZHRoJ10gPSAnTGFyZ2UgSW1hZ2UgV2lkdGgnOwokbGFuZ1snbGFyZ2VfaGVpZ2h0J10gPSAnTGFyZ2UgSW1hZ2UgSGVpZ2h0JzsKJGxhbmdbJ2NhbF9yZWN1cl9wZXJpb2QnXSA9ICdQb3d0YXJ6YWxub8WbxIcnOwokbGFuZ1snY2FsX3JlY3VyX3VudGlsJ10gPSAnUG93dGFyemFqIGRvJzsKJGxhbmdbJ2hlbHBfdGVtcGxhdGUnXSA9ICc8cD48Yj5XeWRydWsgbmF6d3kgYXV0b3JhOjwvYj48L3A+DQo8Y29kZT5BdXRvcjogeyRldmVudC5hdXRob3JuYW1lfTwvY29kZT4nOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/pt_PT.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ21heCddID0gJ21heCAnOwokbGFuZ1sndGltZXMnXSA9ICd2ZXplcyc7CiRsYW5nWydvbiddID0gJ2VtJzsKJGxhbmdbJ2FyZXlvdXN1cmVfdW5pbnN0YWxsJ10gPSAnVGVtIGEgY2VydGV6YSBxdWUgcXVlciBmYXplciBpc3NvPyBDb250aW51YW5kbyB2YWkgYXBhZ2FyIHRvZG9zIG9zIGRhZG9zIGFzc29jaWFkb3MgYSBlc3RlIG0mb2FjdXRlO2R1bG8uJzsKJGxhbmdbJ3Bvc3RfdW5pbnN0YWxsJ10gPSAnTyBtJm9hY3V0ZTtkdWxvIENhbGVuZCZhYWN1dGU7cmlvIGZvaSBkZXNpbnN0YWxhZG8gZSB0b2RvcyBvcyBldmVudG9zIGRlIHRlbXBsYXRlcyBlIGFzIGluZm9ybWEmY2NlZGlsOyZvdGlsZGU7ZXMgYXNzb2NpYWRhcyBhIGVzdGUgbSZvYWN1dGU7ZHVsbyBmb3JhbSByZW1vdmlkb3MnOwokbGFuZ1snZmllbGR1cGRhdGVkJ10gPSAnQ2FtcG8gIEFjdHVhbGl6YWRvJzsKJGxhbmdbJ2V2ZXJ5J10gPSAnQ2FkYSB1bSc7CiRsYW5nWydvciddID0gJ291JzsKJGxhbmdbJ3VwZGF0ZV9jaGlsZHJlbiddID0gJ0FjdHVhbGl6YSZjY2VkaWw7JmF0aWxkZTtvIFN1Yi1FdmVudG9zJzsKJGxhbmdbJ2Vycm9yX25vY2F0ZWdvcnknXSA9ICdEZXZlIHNlbGVjaW9uYXIgcGVsbyBtZW5vcyB1bWEgY2F0ZWdvcmlhJzsKJGxhbmdbJ2Vycm9yX25vdGhpbmdzZWxlY3RlZCddID0gJ05hZGEgZm9pIHNlbGVjaW9uYWRvIHBhcmEgYXBhZ2FyJzsKJGxhbmdbJ2Vycm9yX2V2ZW50b3ZlcmxhcCddID0gJ09zIGV2ZW50b3MgZGUgcGFyJmFjaXJjO21ldHJvcyByZXBldGkmY2NlZGlsOyZhdGlsZGU7byBhbyBlc3BlY2lmaWNhciByZXN1bHRhciZhYWN1dGU7IG5hIHNvYnJlcG9zaSZjY2VkaWw7JmF0aWxkZTtvIGRlIGV2ZW50b3MuJzsKJGxhbmdbJ3JlY3VycyddID0gJ1JlcGV0aSZjY2VkaWw7JmF0aWxkZTtvJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRfZGF0ZXMnXSA9ICdVbSBvdSBtYWlzIGRvcyB2YWxvcmVzIGRhIGRhdGEgaW5zY3JpdGEgcyZhdGlsZGU7byBpbnYmYWFjdXRlO2xpZG9zJzsKJGxhbmdbJ3N1bmRheSddID0gJ0RvbWluZ28nOwokbGFuZ1snbW9uZGF5J10gPSAnU2VndW5kYSc7CiRsYW5nWyd0dWVzZGF5J10gPSAnVGVyJmNjZWRpbDthJzsKJGxhbmdbJ3dlZG5lc2RheSddID0gJ1F1YXJ0YSc7CiRsYW5nWyd0aHVyc2RheSddID0gJ1F1aW50YSc7CiRsYW5nWydmcmlkYXknXSA9ICdTZXh0YSc7CiRsYW5nWydzYXR1cmRheSddID0gJ1NhYmFkbyc7CiRsYW5nWydhYmJyX3N1bmRheSddID0gJ0RvbSc7CiRsYW5nWydhYmJyX21vbmRheSddID0gJ1NlZyc7CiRsYW5nWydhYmJyX3R1ZXNkYXknXSA9ICdUZXInOwokbGFuZ1snYWJicl93ZWRuZXNkYXknXSA9ICdRdWEnOwokbGFuZ1snYWJicl90aHVyc2RheSddID0gJ1F1aSc7CiRsYW5nWydhYmJyX2ZyaWRheSddID0gJ1NleCc7CiRsYW5nWydhYmJyX3NhdHVyZGF5J10gPSAnU2FiJzsKJGxhbmdbJ3dlZWtkYXlzJ10gPSAnRGlhcyAmdWFjdXRlO3RlaXMnOwokbGFuZ1sncGx1cmFsX2RhaWx5J10gPSAnRGlhcyc7CiRsYW5nWydwbHVyYWxfd2Vla2x5J10gPSAnU2VtYW5hcyc7CiRsYW5nWydwbHVyYWxfbW9udGhseSddID0gJ01lc2VzJzsKJGxhbmdbJ3BsdXJhbF95ZWFybHknXSA9ICdBbm9zJzsKJGxhbmdbJ25vJ10gPSAnTiZhdGlsZGU7byc7CiRsYW5nWydkYWlseSddID0gJ0RpJmFhY3V0ZTtyaWFtZW50ZSc7CiRsYW5nWyd3ZWVrbHknXSA9ICdTZW1hbmFsbWVudGUnOwokbGFuZ1snbW9udGhseSddID0gJ01lbnNhbG1lbnRlJzsKJGxhbmdbJ3llYXJseSddID0gJ0FudWFsbWVudGUnOwokbGFuZ1snaW50ZXJ2YWwnXSA9ICdSZXBldGlyIGEgY2FkYSc7CiRsYW5nWydjYWxfcmVjdXJfZGV0YWlscyddID0gJ1JlcGV0aSZjY2VkaWw7JmF0aWxkZTtvICBFdmVudG9zIERldGFsaGVzJzsKJGxhbmdbJ3VubGltaXRlZCddID0gJ0lsaW1pdGFkbyc7CiRsYW5nWydtYXhfcmVjdXJfZXZlbnRzJ10gPSAnTiZ1YWN1dGU7bWVybyBtJmFhY3V0ZTt4aW1vIGRlIHN1Yi1ldmVudG9zJzsKJGxhbmdbJ3VzZV90b19kYXRlJ10gPSAnRXNwZWNpZmljYXIgdW1hIGRhdGEgZmluYWwgZGlmZXJlbnRlPyc7CiRsYW5nWydjYW5jZWwnXSA9ICdDYW5jZWxhcic7CiRsYW5nWydzaG93X2NoaWxkX2V2ZW50cyddID0gJ01vc3RyYXIgU3ViLUV2ZW50b3MgPGVtPihwb2RlbSByZXN1bHRhciBlbSB1bSBsb25nbyBkaXNwbGF5KTwvZW0+JzsKJGxhbmdbJ24vYSddID0gJ24vYSAnOwokbGFuZ1sncmVjdXJzX3VudGlsJ10gPSAnUmVwZXRpciBBdCZlYWN1dGU7JzsKJGxhbmdbJ3BhcmVudCddID0gJ1BhcmVudGUnOwokbGFuZ1sncmVjdXJfcGVyaW9kJ10gPSAnUmVwZXRpciBQZXImaWFjdXRlO29kbyc7CiRsYW5nWydmaWx0ZXInXSA9ICdGaWx0cm8nOwokbGFuZ1snc3RhcnRfZGF0ZSddID0gJ0RhdGEgSW5pY2lvJzsKJGxhbmdbJ2VuZF9kYXRlJ10gPSAnRGF0YSBGaW5hbCc7CiRsYW5nWydpbmZvX3VwY29taW5nbGlzdF90ZW1wbGF0ZV90YWInXSA9ICdBIGxpc3RhIGRlIHRlbXBsYXRlcyBxdWUgZXN0JmF0aWxkZTtvIGRpc3BvbiZpYWN1dGU7dmVpcyBwYXJhIGEgcHImb2FjdXRlO3hpbWEgbGlzdGEgZGUgdmlzdWFsaXphJmNjZWRpbDsmb3RpbGRlO2VzJzsKJGxhbmdbJ3VwY29taW5nbGlzdHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZGljaW9uYXIvRWRpdGFyIHVtIHByJm9hY3V0ZTt4aW1vICBEaXNwbGF5IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICdTaXN0ZW1hIFBhZHImYXRpbGRlO28gZGUgUHImb2FjdXRlO3hpbW9zIFRlbXBsYXRlcyc7CiRsYW5nWydpbmZvX2xpc3RfdGVtcGxhdGVfdGFiJ10gPSAnQSBsaXN0YSBkZSB0ZW1wbGF0ZXMgcXVlIGVzdCZhdGlsZGU7byBkaXNwb24maWFjdXRlO3ZlaXMgcGFyYSBhIGxpc3RhIHZpc3VhbGl6YSZjY2VkaWw7Jm90aWxkZTtlcyc7CiRsYW5nWydsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ0FkaWNpb25hci9FZGl0YXIgYSBMaXN0YSBEaXNwbGF5IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9saXN0X3RlbXBsYXRlJ10gPSAnU2lzdGVtYSBQYWRyJmF0aWxkZTtvIExpc3RhIFRlbXBsYXRlcyc7CiRsYW5nWydpbmZvX2V2ZW50X3RlbXBsYXRlX3RhYiddID0gJ0EgbGlzdGEgZGUgdGVtcGxhdGVzIHF1ZSBlc3QmYXRpbGRlO28gZGlzcG9uJmlhY3V0ZTt2ZWlzIHBhcmEgbyBldmVudG8gdmlzdWFsaXphJmNjZWRpbDsmb3RpbGRlO2VzJzsKJGxhbmdbJ2V2ZW50dGVtcGxhdGVfYWRkZWRpdCddID0gJ0FkaWNpb25hci9FZGl0YXIgdW0gRXZlbnRvIERpc3BsYXkgVGVtcGxhdGUnOwokbGFuZ1snaW5mb19zeXNkZmx0X2V2ZW50X3RlbXBsYXRlJ10gPSAnU2lzdGVtYSBQYWRyJmF0aWxkZTtvIEV2ZW50byBUZW1wbGF0ZXMnOwokbGFuZ1snaW5mb19jYWxlbmRhcl90ZW1wbGF0ZV90YWInXSA9ICdBIGxpc3RhIGRlIHRlbXBsYXRlcyBxdWUgZXN0JmF0aWxkZTtvIGRpc3BvbiZpYWN1dGU7dmVpcyBwYXJhIGEgdmlzdWFsaXNheiZhdGlsZGU7byBkbyBDYWxlbmQmYWFjdXRlO3Jpbyc7CiRsYW5nWydjYWxlbmRhcnRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZGljaW9uYXIvRWRpdGFyIHVtIENhbGVuZCZhYWN1dGU7cmlvIERpc3BsYXkgVGVtcGxhdGUnOwokbGFuZ1snaW5mb19zeXNkZmx0X2NhbGVuZGFyX3RlbXBsYXRlJ10gPSAnU2lzdGVtYSBQYWRyJmF0aWxkZTtvIENhbGVuZCZhYWN1dGU7cmlvIFRlbXBsYXRlcyc7CiRsYW5nWydpbmZvX3N5c2RmbHRfdGVtcGxhdGUnXSA9ICdFc3RhIGZvcm11bCZhYWN1dGU7cmlvIGRlZmluZSBvIHRlbXBsYXRlIHF1ZSBzZXImYWFjdXRlOyB1c2FkbyBxdWFuZG8gIGNsaWNhciBlbSAmcXVvdDtOb3ZvIFRlbXBsYXRlJnF1b3Q7IG5hIHRhYiBhcHJvcHJpYWRhLiBBbHRlcmFyIGVzc2UgdmFsb3IgbiZhdGlsZGU7byB0ZXImYWFjdXRlOyBxdWFscXVlciBlZmVpdG8gaW1lZGlhdG8gc29icmUgb3MgZGlzcGxheXMgZ2VyYWRvcyBhIHBhcnRpciBkZXN0ZSBtJm9hY3V0ZTtkdWxvLic7CiRsYW5nWydldmVudGRlc2MtRXZlbnRBZGRlZCddID0gJ0NoYW1hZGEgYXAmb2FjdXRlO3Mgc2UgYWRpY2lvbmFyIHVtIGV2ZW50byBubyBjYWxlbmQmYWFjdXRlO3JpbyAnOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RWRpdGVkJ10gPSAnQ2hhbWFkYSBhcCZvYWN1dGU7cyBzZSBlZGl0YXIgdW0gZXZlbnRvIG5vIGNhbGVuZCZhYWN1dGU7cmlvIGV4aXN0ZW50ZSAnOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RGVsZXRlZCddID0gJ0NoYW1hZGEgYXAmb2FjdXRlO3Mgc2UgZWxpbWluYXIgdW0gZXZlbnRvJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUFkZGVkJ10gPSAnQ2hhbWFkYSBhcCZvYWN1dGU7cyBzZSBhZGljaW9uYXIgdW1hIGNhdGVnb3JpYSc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlFZGl0ZWQnXSA9ICdDaGFtYWRhIGFwJm9hY3V0ZTtzIHNlIGVkaXRhciB1bWEgY2F0ZWdvcmlhJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeURlbGV0ZWQnXSA9ICdDaGFtYWRhIGFwJm9hY3V0ZTtzIHNlIGVsaW1pbmFyIHVtYSBjYXRlZ29yaWEnOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50QWRkZWQnXSA9ICc8cD5FbnZpYWRvIHF1YW5kbyB1bSBjYWxlbmQmYWFjdXRlO3JpbyBldmVudG8gJmVhY3V0ZTsgYWRpY2lvbmFkby48L3A+DQo8aDQ+UGFyJmFjaXJjO21ldHJvczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X3RpdGxlXCZxdW90OyAtIEV2ZW50byBUaXR1bG88L2xpPg0KPGxpPlwmcXVvdDtldmVudF9zdW1tYXJ5XCZxdW90OyAtIFN1bSZhYWN1dGU7cmlvIFRleHRvPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGV0YWlsc1wmcXVvdDsgLSBEZXNjcmkmY2NlZGlsOyZhdGlsZGU7byBEZXRhbGhhZGE8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX3N0YXJ0XCZxdW90OyAtIE8gZXZlbnRvIGNvbWUmY2NlZGlsO2EgZGF0YS9ob3JhPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9lbmRcJnF1b3Q7IC0gTyBldmVudG8gdGVybWluYSBkYXRhL2hvcmE8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9jcmVhdGVkX2J5XCZxdW90OyAtIE8gdXNlcmlkIGRvIGF1dG9yPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfaWRcJnF1b3Q7IC0gTyBldmVudG8gaWQ8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtRXZlbnRFZGl0ZWQnXSA9ICc8cD5FbnZpYWRvIHF1YW5kbyB1bSBjYWxlbmQmYWFjdXRlO3JpbyBldmVudG8gJmVhY3V0ZTsgZWRpdGFkby48L3A+DQo8aDQ+UGFyJmFjaXJjO21ldHJvczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X3RpdGxlXCZxdW90OyAtIEV2ZW50byBUaXR1bG88L2xpPg0KPGxpPlwmcXVvdDtldmVudF9zdW1tYXJ5XCZxdW90OyAtIFN1bSZhYWN1dGU7cmlvIFRleHRvPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGV0YWlsc1wmcXVvdDsgLSBEZXNjcmkmY2NlZGlsOyZhdGlsZGU7byBEZXRhbGhhZGE8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX3N0YXJ0XCZxdW90OyAtIE8gZXZlbnRvIGNvbWUmY2NlZGlsO2EgZGF0YS9ob3JhPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9lbmRcJnF1b3Q7IC0gTyBldmVudG8gdGVybWluYSBkYXRhL2hvcmE8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9jcmVhdGVkX2J5XCZxdW90OyAtIE8gdXNlcmlkIGRvIGF1dG9yPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfaWRcJnF1b3Q7IC0gTyBldmVudG8gaWQ8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtRXZlbnREZWxldGVkJ10gPSAnPHA+RW52aWFkbyBxdWFuZG8gdW0gY2FsZW5kJmFhY3V0ZTtyaW8gZXZlbnRvICZlYWN1dGU7IGVsaW1pbmFkby48L3A+DQo8aDQ+UGFyJmFjaXJjO21ldHJvczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X2lkXCZxdW90OyAtIE8gZXZlbnRvIGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5QWRkZWQnXSA9ICc8cD5FbnZpYWRvIHF1YW5kbyB1bWEgY2F0ZWdvcmlhIGRhIGFnZW5kYSAgJmVhY3V0ZTsgYWRpY2lvbmFkYS48L3A+DQo8aDQ+UGFyJmFjaXJjO21ldHJvczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2NhdGVnb3J5X2lkXCZxdW90OyAtIEEgY2F0ZWdvcmlhIGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5RWRpdGVkJ10gPSAnPHA+RW52aWFkbyBxdWFuZG8gdW1hIGNhdGVnb3JpYSBkYSBhZ2VuZGEgICZlYWN1dGU7IGVkaXRhZGEuPC9wPg0KPGg0PlBhciZhY2lyYzttZXRyb3M8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9pZFwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgaWQ8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9uYW1lXCZxdW90OyAtIEEgY2F0ZWdvcmlhIG5vbWU8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9vcmRlclwmcXVvdDsgLSBBIGNhdGVnb3JpYSBvcmRhZGVuYSZjY2VkaWw7JmF0aWxkZTtvPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5RGVsZXRlZCddID0gJzxwPkVudmlhZG8gcXVhbmRvIHVtYSBjYXRlZ29yaWEgZGEgYWdlbmRhICAmZWFjdXRlOyBlbGltaW5hZGEuPC9wPg0KPGg0PlBhciZhY2lyYzttZXRyb3M8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9pZFwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgaWQ8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9uYW1lXCZxdW90OyAtIEEgY2F0ZWdvcmlhIG5vbWU8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9vcmRlclwmcXVvdDsgLSBBIGNhdGVnb3JpYSBvcmRhZGVuYSZjY2VkaWw7JmF0aWxkZTtvPC9saT4NCjwvdWw+DQonOwokbGFuZ1snbXNnX2V2ZW50YWRkZWQnXSA9ICdFdmVudG8gQWRpY2lvbmFkbyc7CiRsYW5nWydlcnJvcl9ub2V2ZW50bmFtZSddID0gJ1VtIG5vbWUgcGFyYSBvIGV2ZW50byAmZWFjdXRlOyBvYnJpZ2F0Jm9hY3V0ZTtyaW8nOwokbGFuZ1snZXJyb3Jfbm91cGxvYWQnXSA9ICdFUlJPOiBOZW5odW0gYXJxdWl2byBmb2kgZW5jb250cmFkbyc7CiRsYW5nWydlcnJvcl9pbnZhbGlkZmlsZW5hbWUnXSA9ICdFUlJPOiBPIGFycXVpdm8gY2FycmVnYWRvLCBuJmF0aWxkZTtvICZlYWN1dGU7IGFjZWl0ZSc7CiRsYW5nWydlcnJvcl9wcm9ibGVtd2l0aHVwbG9hZCddID0gJ0VSUk86IE9jb3JyZXUgdW0gcHJvYmxlbWEgYW8gdGVudGFuZG8gY2FycmVnYXIgbyBhcnF1aXZvJzsKJGxhbmdbJ2Vycm9yX2ZpbGVjb3B5ZmFpbGVkJ10gPSAnRVJSTzogT2NvcnJldSB1bSBwcm9ibGVtYSBhbyBjb3BpYXIgbyBhcnF1aXZvIHBhcmEgbyBzZXUgZGVzdGlubyBmaW5hbCc7CiRsYW5nWydlcnJvcl9maWxlZXhpc3RzJ10gPSAnRVJSTzogVW0gYXJxdWl2byBjb20gZXNzZSBub21lIGomYWFjdXRlOyBleGlzdGUnOwokbGFuZ1snZXJyb3JfY3N2ZmlsZW5vdGZvdW5kJ10gPSAnRVJSTzogTiZhdGlsZGU7byBmb2kgcG9zcyZpYWN1dGU7dmVsIGxvY2FsaXphciBvIGFycXVpdm8gQ1NWJzsKJGxhbmdbJ2Vycm9yX2NhbnRvcGVuZmlsZSddID0gJ0VSUk86IE4mYXRpbGRlO28gJmVhY3V0ZTsgcG9zcyZpYWN1dGU7dmVsIGFicmlyIG8gYXJxdWl2byc7CiRsYW5nWydlcnJvcl9jYXRlZ29yeWV4aXN0cyddID0gJ0VSUk86IFVtIGNhdGVnb3JpYSBjb20gbyBzZWd1aW50ZSBjb20gZXN0ZSBub21lICVzIGomYWFjdXRlOyBleGlzdGUnOwokbGFuZ1snY2FsX2lkJ10gPSAnSWQgJzsKJGxhbmdbJ2NhbF9jYWxlbmRhciddID0gJ0NhbGVuZCZhYWN1dGU7cmlvJzsKJGxhbmdbJ2NhbF9kZWZhdWx0X3RlbXBsYXRlcyddID0gJ1RlbXBsYXRlcyBQYWRyJmF0aWxkZTtvJzsKJGxhbmdbJ2NhbF9kZXNjcmlwdGlvbiddID0gJ0Rlc2NyaSZjY2VkaWw7JmF0aWxkZTtvJzsKJGxhbmdbJ2NhbF9hZGRldmVudCddID0gJ0FkaWNpb25hciBFdmVudG8nOwokbGFuZ1snY2FsX2ltcG9ydF9ldmVudHMnXSA9ICdJbXBvcnRhciBFdmVudG9zJzsKJGxhbmdbJ2NhbF9ldmVudHMnXSA9ICdFdmVudG9zJzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzJ10gPSAnQ2F0ZWdvcmlhcyc7CiRsYW5nWydjYWxfY2FsZW5kYXJfdGVtcGxhdGUnXSA9ICdDYWxlbmQmYWFjdXRlO3JpbyBUZW1wbGF0ZSc7CiRsYW5nWydjYWxfbGlzdF90ZW1wbGF0ZSddID0gJ0xpc3RhIFRlbXBsYXRlJzsKJGxhbmdbJ2NhbF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICdQciZvYWN1dGU7eGltb3MgRXZlbnRvcyBUZW1wbGF0ZSc7CiRsYW5nWydjYWxfZXZlbnRfdGVtcGxhdGUnXSA9ICdFdmVudG9zIFRlbXBsYXRlJzsKJGxhbmdbJ2NhbF9zZXR0aW5ncyddID0gJ0NvbmZpZ3VyYSZjY2VkaWw7Jm90aWxkZTtlcyc7CiRsYW5nWydjYWxfcHJldiddID0gJyZsYXF1bzsgVm9sdGFyJzsKJGxhbmdbJ2NhbF9uZXh0J10gPSAnU2VndWludGUgJnJhcXVvOyc7CiRsYW5nWydjYWxfY2F0ZWdvcmllc191cGRhdGVkJ10gPSAnQ2F0ZWdvcmlhcyBDYXJyZWdhbWVudG8nOwokbGFuZ1snY2FsX3NldHRpbmdzX3VwZGF0ZWQnXSA9ICdEZWZpbmkmY2NlZGlsOyZvdGlsZGU7ZXMgQWN0dWFsaXphZGFzJzsKJGxhbmdbJ2NhbF9hZGRfZXZlbnQnXSA9ICdBZGljaW9uYXIgRXZlbnRvJzsKJGxhbmdbJ2NhbF9lZGl0J10gPSAnRWRpdGFyJzsKJGxhbmdbJ2NhbF9kZWxldGUnXSA9ICdFbGltaW5hcic7CiRsYW5nWydjYWxfYXJleW91c3VyZSddID0gJ1RlbSBjZXJ0ZXphIGRlIHF1ZSBkZXNlamEgZXhjbHVpcic7CiRsYW5nWydjYWxfdXBkYXRlX3RlbXBsYXRlJ10gPSAnQWN0dWFsaXphciBUZW1wbGF0ZSc7CiRsYW5nWydjYWxfc3VuZGF5J10gPSAnRG9taW5nbyc7CiRsYW5nWydjYWxfbW9uZGF5J10gPSAnU2VndW5kYSc7CiRsYW5nWydjYWxfdHVlc2RheSddID0gJ1RlciZjY2VkaWw7YSc7CiRsYW5nWydjYWxfd2VkbmVzZGF5J10gPSAnUXVhcnRhJzsKJGxhbmdbJ2NhbF90aHVyc2RheSddID0gJ1F1aW50YSc7CiRsYW5nWydjYWxfZnJpZGF5J10gPSAnU2V4dGEnOwokbGFuZ1snY2FsX3NhdHVyZGF5J10gPSAnU2FiYWRvJzsKJGxhbmdbJ2NhbF9zdW4nXSA9ICdEb20nOwokbGFuZ1snY2FsX21vbiddID0gJ1NlZyc7CiRsYW5nWydjYWxfdHVlcyddID0gJ1Rlcic7CiRsYW5nWydjYWxfd2VkJ10gPSAnUXVhJzsKJGxhbmdbJ2NhbF90aHVycyddID0gJ1F1aSc7CiRsYW5nWydjYWxfZnJpJ10gPSAnU2V4JzsKJGxhbmdbJ2NhbF9zYXQnXSA9ICdTYWInOwokbGFuZ1snY2FsX2phbnVhcnknXSA9ICdKYW5laXJvJzsKJGxhbmdbJ2NhbF9mZWJydWFyeSddID0gJ0ZldmVyZWlybyc7CiRsYW5nWydjYWxfbWFyY2gnXSA9ICdNYXImY2NlZGlsO28nOwokbGFuZ1snY2FsX2FwcmlsJ10gPSAnQWJyaWwnOwokbGFuZ1snY2FsX21heSddID0gJ01haW8nOwokbGFuZ1snY2FsX2p1bmUnXSA9ICdKdW5obyc7CiRsYW5nWydjYWxfanVseSddID0gJ0p1bGhvJzsKJGxhbmdbJ2NhbF9hdWd1c3QnXSA9ICdBZ29zdG8nOwokbGFuZ1snY2FsX3NlcHRlbWJlciddID0gJ1NldGVtYnJvJzsKJGxhbmdbJ2NhbF9vY3RvYmVyJ10gPSAnT3V0dWJybyc7CiRsYW5nWydjYWxfbm92ZW1iZXInXSA9ICdOb3ZlbWJybyc7CiRsYW5nWydjYWxfZGVjZW1iZXInXSA9ICdEZWNlbWJybyc7CiRsYW5nWydjYWxfYWRkJ10gPSAnQWRpY2lvbmFyJzsKJGxhbmdbJ2NhbF91cGRhdGUnXSA9ICdBY3R1YWxpemFyJzsKJGxhbmdbJ2NhbF9ldmVudCddID0gJ0V2ZW50byc7CiRsYW5nWydjYWxfZGF0ZSddID0gJ0RhdGEnOwokbGFuZ1snY2FsX3N1bW1hcnknXSA9ICdTdW0mYWFjdXRlO3Jpbyc7CiRsYW5nWydjYWxfZGV0YWlscyddID0gJ0RldGFsaGVzJzsKJGxhbmdbJ2NhbF9tb3JlJ10gPSAnbWFpcyA+Pic7CiRsYW5nWydjYWxfcmV0dXJuJ10gPSAnVm9sdGEnOwokbGFuZ1snY2FsX3RvJ10gPSAnYSc7CiRsYW5nWydjYWxfcGFzdF9ldmVudHMnXSA9ICcmVWFjdXRlO2x0aW1vcyBFdmVudG9zJzsKJGxhbmdbJ2NhbF91cGNvbWluZ19ldmVudHMnXSA9ICdQciZvYWN1dGU7eGltb3MgRXZlbnRvcyc7CiRsYW5nWydjYWxfYW55X2NhdGVnb3J5J10gPSAnTmVuaHVtYSBDYXRlZ29yaWEnOwokbGFuZ1snY2FsX3Nob3dfb25seV9ldmVudHNfaW4nXSA9ICdNb3N0cmFyIGFwZW5hcyBlbSBldmVudG9zJzsKJGxhbmdbJ2NhbF9maWx0ZXJfYnknXSA9ICdGaWx0cmEgUG9yJzsKJGxhbmdbJ2NhbF9nbyddID0gJ09LJzsKJGxhbmdbJ2NhbF90aXRsZSddID0gJ1RpdHVsbyc7CiRsYW5nWydjYWxfZnJvbWRhdGUnXSA9ICdEZSBEYXRhJzsKJGxhbmdbJ2NhbF90b2RhdGUnXSA9ICdQYXJhIERhdGEnOwokbGFuZ1snY2FsX3VwZGF0ZV9jYXRlZ29yaWVzJ10gPSAnQWN0dWFsaXphciBDYXRlZ29yaWFzJzsKJGxhbmdbJ2NhbF9sYW5ndWFnZSddID0gJ0wmaWFjdXRlO25ndWFnZW0nOwokbGFuZ1snY2FsX3VwZGF0ZXNldHRpbmdzJ10gPSAnQWN0dWFsaXphciBDb25maWd1cmEmY2NlZGlsOyZvdGlsZGU7ZXMnOwokbGFuZ1snY2FsX3VzZV90d2VsdmVfaG91cl9jbG9jayddID0gJ1VzZSBhcyBkb3plIGhvcmFzIG5hIGhvcmEgZG8gcmVsJm9hY3V0ZTtnaW8gZHJvcC1kb3ducz8nOwokbGFuZ1snY2FsX2RlZmF1bHRfY2F0ZWdvcnknXSA9ICdDYXRlZ29yaWEgUGFkciZhdGlsZGU7byAnOwokbGFuZ1snY2FsX3VwZGF0ZV9maWVsZHMnXSA9ICdBY3R1YWxpemFyIENhbXBvcyc7CiRsYW5nWydmb3JjZV9jYXRlZ29yeSddID0gJ0ZvciZjY2VkaWw7YXIgcGVsbyBtZW5vcyB1bWEgY2F0ZWdvcmlhJzsKJGxhbmdbJ3Nob3dwYXN0eWVhcnMnXSA9ICdRdWFudG9zIGFub3Mgbm8gcGFzc2FkbyBzJmF0aWxkZTtvIHBlcm1pdGlkb3MnOwokbGFuZ1snc2hvd2Z1dHVyZXllYXJzJ10gPSAnUXVhbnRvcyBhbm9zIG5vIGZ1dHVybyBzJmF0aWxkZTtvIHBlcm1pdGlkb3MnOwokbGFuZ1snaGlkZXN1bW1hcnknXSA9ICdEZXZlIHNlciBjYW1wbyBzdW0mYWFjdXRlO3JpbyBlc2NvbmRpZG8nOwokbGFuZ1snaGlkZWNvbnRlbnQnXSA9ICdEZXZlIHNlciBjYW1wbyBjb250ZSZ1YWN1dGU7ZG8gZXNjb25kaWRvJzsKJGxhbmdbJ2NhdGVnb3J5X3JlbWluZGVyJ10gPSAnVmVyaWZpcXVlIHVtYSBvdSBtYWlzIGNhdGVnb3JpYXMgcGFyYSBlc3RlIGV2ZW50byc7CiRsYW5nWydtb2R1bGVfZXhhbXBsZV9zdHlsZXNoZWV0J10gPSAnQ2FsZW5kJmFhY3V0ZTtyaW8gQ1NTIGV4ZW1wbG8nOwokbGFuZ1snZXJyb3JfcGVybWlzc2lvbiddID0gJ1ByZWNpc2FyJmFhY3V0ZTsgZGEgcGVybWlzcyZhdGlsZGU7byBhcHJvcHJpYWRhICglcykgcGFyYSBhY2VkZXIgYSBlc3RhIGZ1bmNpb25hbGlkYWRlJzsKJGxhbmdbJ2luc3RhbGxfcG9zdG1lc3NhZ2UnXSA9ICdDZXJ0aWZpcXVlLXNlIGRlIGRlZmluaXIgYSBwZXJtaXNzJmF0aWxkZTtvICZxdW90O01vZGlmaWNhciBDYWxlbmQmYWFjdXRlO3JpbyZxdW90OyAgZG9zIHVzdSZhYWN1dGU7cmlvcyBxdWUgZGV2ZXImYXRpbGRlO28gYWRtaW5pc3RyYXIgYWdlbmRhIGUgZXZlbnRvcy4nOwokbGFuZ1snZGVsZXRldGFnZ2VkJ10gPSAnRXhjbHVpciBldmVudG9zIG1hcmNhZG9zICc7CiRsYW5nWydjb25maXJtZGVsZXRldGFnZ2VkJ10gPSAnVGVtIGNlcnRlemEgcXVlIGVzdGVzIGV2ZW50b3MgZGV2ZW0gc2VyIHN1cHJpbWlkb3M/JzsKJGxhbmdbJ3RhZ2dlZGRlbGV0ZWQnXSA9ICdFdmVudG9zIHNlbGVjaW9uYWRvcyBmb3JhbSBleGNsdSZpYWN1dGU7ZG9zJzsKJGxhbmdbJ3RlbXBsYXRlcyddID0gJ1RlbXBsYXRlcyAnOwokbGFuZ1sndGVtcGxhdGVfaGVscCddID0gJ1RlbXBsYXRlIEFqdWRhJzsKJGxhbmdbJ2ZpbGVfdGVtcGxhdGVzJ10gPSAnRmljaGVpcm9zIFRlbXBsYXRlcyc7CiRsYW5nWydhZGR0ZW1wbGF0ZSddID0gJ0FkaWNpb25hciBUZW1wbGF0ZSc7CiRsYW5nWyd0ZW1wbGF0ZSddID0gJ1RlbXBsYXRlICc7CiRsYW5nWyd0ZW1wbGF0ZW5hbWV0ZXh0J10gPSAnVGVtcGxhdGUgTm9tZSc7CiRsYW5nWydlZGl0dGVtcGxhdGUnXSA9ICdFZGl0YXIgVGVtcGxhdGUnOwokbGFuZ1snZGVsZXRldGVtcGxhdGUnXSA9ICdFbGltaW5hciBUZW1wbGF0ZSc7CiRsYW5nWyduZXd0ZW1wbGF0ZSddID0gJ05vdm8gVGVtcGxhdGUgTm9tZSc7CiRsYW5nWyd0ZW1wbGF0ZW5hbWVleGlzdHMnXSA9ICdFcnJvOlVtIG1vZGVsbyBjb20gZXNzZSBub21lIGomYWFjdXRlOyBleGlzdGUuIFBvciBmYXZvciwgZXNjb2xoYSB1bSBub21lIGRpZmVyZW50ZS4nOwokbGFuZ1sndGVtcGxhdGVpbXBvcnRlZCddID0gJ08gdGVtcGxhdGUgZm9pIGltcG9ydGFkbyBwYXJhIG8gYmFuY28gZGUgZGFkb3MgZSBhZ29yYSBlc3QmYWFjdXRlOyBpbnN0YWxhZG8gcGFyYSB1c28uJzsKJGxhbmdbJ3ZpZXdfZGVmYXVsdF9zdHlsZXNoZWV0J10gPSAnVmVyIEZvbGhhIGRlIGVzdGlsbyBwYWRyJmF0aWxkZTtvJzsKJGxhbmdbJ2ZpbGVuYW1lJ10gPSAnRmljaGVpcm8gTm9tZSc7CiRsYW5nWydpbXBvcnR0ZW1wbGF0ZSddID0gJ0ltcG9ydGFyIFRlbXBsYXRlJzsKJGxhbmdbJ3RlbXBsYXRlX2RlbGV0ZWQnXSA9ICdPIHRlbXBsYXRlIGZvaSBleGNsdSZpYWN1dGU7ZG8gY29tICZlY2lyYzt4aXRvIGRhIGJhc2UgZGUgZGFkb3MuJzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlc3VjY2VzcyddID0gJ08gdGVtcGxhdGUgZm9pIGF0dWFsaXphZGEgY29tIHN1Y2Vzc28nOwokbGFuZ1sndXBkYXRldGVtcGxhdGVmYWlsdXJlJ10gPSAnT2NvcnJldSB1bSBlcnJvIGFvIGFjdHVhbGl6YXIgbyB0ZW1wbGF0ZSc7CiRsYW5nWydzZXR0aW5nc3NhdmVkJ10gPSAnQ29uZmlndXJhJmNjZWRpbDsmb3RpbGRlO2VzIHNhbHZhcyBjb20gc3VjZXNzbyc7CiRsYW5nWydjYXRlZ29yeWRlbGV0ZWQnXSA9ICdDYXRlZ29yaWEgZWxpbWluYWRhJzsKJGxhbmdbJ2NhdGVnb3J5dXBkYXRlZCddID0gJ0NhdGVnb3JpYSBhY3R1YWxpemFkYSc7CiRsYW5nWydjYXRlZ29yeWFkZGVkJ10gPSAnQ2F0ZWdvcmlhIGFkaWNpb25hZGEnOwokbGFuZ1snZXZlbnRkZWxldGVkJ10gPSAnTyBldmVudG8gZm9pIHJlbW92aWRvJzsKJGxhbmdbJ2V2ZW50dXBkYXRlZCddID0gJ08gZXZlbnRvIGZvaSBhY3R1YWxpemFkbyc7CiRsYW5nWydkZWZhdWx0X3BhZ2VfZXJyb3InXSA9ICdFcnJvOiBEZXZlIGRlZmluaXIgdW1hIHAmYWFjdXRlO2dpbmEgcGFkciZhdGlsZGU7bywgYSBmaW0gZGUgdXRpbGl6YXIgYSBBZ2VuZGEgY29tIFVSTHMgY3VydGFzIGxpZ2FkYS4gUG9yIGZhdm9yLCB2JmFhY3V0ZTsgJmFncmF2ZTsgYWJhIERlZmluaSZjY2VkaWw7Jm90aWxkZTtlcyBkbyBDYWxlbmQmYWFjdXRlO3JpbyBlIGVzY29saGEgdW0uJzsKJGxhbmdbJ3RpbWVfYXQnXSA9ICdlbSc7CiRsYW5nWyd0eXBlJ10gPSAnVGlwbyc7CiRsYW5nWyduYW1lJ10gPSAnTm9tZSc7CiRsYW5nWydvcmRlciddID0gJ09yZGVtJzsKJGxhbmdbJ2ZpZWxkYWRkZWQnXSA9ICdDYW1wbyBhZGljaW9uYWRvIGNvbSBzdWNlc3NvJzsKJGxhbmdbJ2ZpZWxkZGVsZXRlZCddID0gJ0NhbXBvIGVsaW1pbmFkbyc7CiRsYW5nWydmaWVsZHMnXSA9ICdDYW1wb3MgUGVyc29uYWxpemFkb3MnOwokbGFuZ1sndGV4dGZpZWxkJ10gPSAnQ2FtcG8gZGUgdGV4dG8nOwokbGFuZ1sndXBsb2FkZmllbGQnXSA9ICdDYW1wbyBkZSBjYXJyZWdhbWVudG8nOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICc8cD5BZ2VuZGEgJmVhY3V0ZTsgdW0gbSZvYWN1dGU7ZHVsbyBwYXJhIGV4aWJpJmNjZWRpbDsmYXRpbGRlO28gZGUgZXZlbnRvcyBlbSBzdWEgcCZhYWN1dGU7Z2luYS4gUXVhbmRvIG8NCk0mb2FjdXRlO2R1bG8gZm9yIGluc3RhbGFkbywgdW1hIEFnZW5kYSBhZG1pbiBwJmFhY3V0ZTtnaW5hICZlYWN1dGU7IGFkaWNpb25hZGEgYW8gY29udGUmdWFjdXRlO2RvIG1lbnUNClF1ZSBsaGUgcGVybWl0aXImYWFjdXRlOyBnZXJpciBvcyBzZXVzIGV2ZW50b3MuPC9wPic7CiRsYW5nWydkZWZhdWx0Y2FsZW5kYXJwYWdlJ10gPSAnUCZhYWN1dGU7Z2luYSBQYWQmYXRpbGRlO28gcXVlIGNvbnQmZWFjdXRlO20gbyBDYWxlbmQmYWFjdXRlO3Jpby4gRXN0YSBwJmFhY3V0ZTtnaW5hIGRldmUgaW5jbHVpciB1bWEgdGFnIFNtYXJ0eSBxdWUgY2hhbWEgcGVsbyBDYWxlbmQmYWFjdXRlO3Jpby4gTmVjZXNzJmFhY3V0ZTtyaW8gc2Ugdm9jJmVjaXJjOyB1c2FyIGEgcHJldHR5IFVSTHMuJzsKJGxhbmdbJ3VwbG9hZGRpcmVjdG9yeSddID0gJ0RpcmV0Jm9hY3V0ZTtyaW8gb25kZSAgb3MgYXJxdWl2byBjYXJyZWdhZG9zIGRldmVtIHNlciBjb2xvY2Fkb3MnOwokbGFuZ1sndXBsb2FkZmlsZXR5cGVzJ10gPSAnUGVybWl0aXIgdGlwbyBkZSBmaWNoZWlyb3MnOwokbGFuZ1sndXBsb2FkdW5pcXVlJ10gPSAnQXNzZWd1cmFyIG5vbWVzIGRlIGZpY2hlaXJvcyAmdWFjdXRlO25pY29zJzsKJGxhbmdbJ3RodW1iX3dpZHRoJ10gPSAnTWluaWF0dXJhIGxhcmd1cmEnOwokbGFuZ1sndGh1bWJfaGVpZ2h0J10gPSAnTWluaWF0dXJhIGFsdHVyYSc7CiRsYW5nWydsYXJnZV93aWR0aCddID0gJ0ltYWdlbSBncmFuZGUgbGFyZ3VyYSc7CiRsYW5nWydsYXJnZV9oZWlnaHQnXSA9ICdJbWFnZW0gZ3JhbmRlIGVtIGFsdHVyYSc7CiRsYW5nWydjYWxfcmVjdXJfcGVyaW9kJ10gPSAnQXQmZWFjdXRlOyc7CiRsYW5nWydjYWxfcmVjdXJfdW50aWwnXSA9ICdBdCZlYWN1dGU7IHJlcGV0aXInOwokbGFuZ1snaGVscF90ZW1wbGF0ZSddID0gJzxwPjxiPkltcHJlc3MmYXRpbGRlO28gZG8gbm9tZSBkbyBhdXRvcjo8L2I+PC9wPg0KPGNvZGU+QXV0b3I6IHskZXZlbnQuYXV0aG9ybmFtZX08L2NvZGU+DQonOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/ro_RO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudEFkZGVkJ10gPSAnQXBlbGF0IGR1cGEgYWRhdWdhcmVhIHVudWkgZXZlbmltZW50IGNhbGVuZGFyaXN0aWMnOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RWRpdGVkJ10gPSAnQXBlbGF0IGR1cGEgZWRpdGFyZWEgdW51aSBldmVuaW1lbnQgY2FsZW5kYXJpc3RpYyBleGlzdGVudCc7CiRsYW5nWydldmVudGRlc2MtRXZlbnREZWxldGVkJ10gPSAnQXBlbGF0IGR1cGEgc3RlcmdlcmVhIHVudWkgZXZlbmltZW50JzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUFkZGVkJ10gPSAnQXBlbGF0IGR1cGEgY3JlYXJlYSB1bmVpIGNhdGVnb3JpaSc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlFZGl0ZWQnXSA9ICdBcGVsYXQgZHVwYSBlZGl0YXJlYSB1bmVpIGNhdGVnb3JpaSc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnQXBlbGF0IGR1cGEgc3RlcmdlcmVhIHVuZWkgY2F0ZWdvcmlpJzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudEFkZGVkJ10gPSAnPHA+VHJpbWl0ZSBjYW5kIHVuIGV2ZW5pbWVudCBjYWxlbmRhcmlzdGljIGVzdGUgYWRhdWdhdC48L3A+DQo8aDQ+UGFyYW1ldHJpPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7ZXZlbnRfdGl0bGVcJnF1b3Q7IC0gVGl0bHUgZXZlbmltZW50PC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfc3VtbWFyeVwmcXVvdDsgLSBUZXh0dWwgc3VtYXI8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kZXRhaWxzXCZxdW90OyAtIERlc2NyaWVyZSBkZXRhbGlhdGE8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX3N0YXJ0XCZxdW90OyAtIERhdGEvb3JhIGRlIGluY2VwdXQgYSBldmVuaW1lbnR1bHVpPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9lbmRcJnF1b3Q7IC0gRGF0YS9vcmEgZGUgdGVybWluYXJlIGEgZXZlbmltZW50dWx1aTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2NyZWF0ZWRfYnlcJnF1b3Q7IC0gdXNlcmlkLXVsIGF1dG9ydWx1aTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2lkXCZxdW90OyAtIGlkLXVsIGV2ZW5pbWVudHVsdWk8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtRXZlbnRFZGl0ZWQnXSA9ICc8cD5UcmltaXRlIGNhbmQgdW4gZXZlbmltZW50IGNhbGVuZGFyaXN0aWMgZXN0ZSBlZGl0YXQuPC9wPg0KPGg0PlBhcmFtZXRyaTwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X3RpdGxlXCZxdW90OyAtIFRpdGx1IGV2ZW5pbWVudDwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X3N1bW1hcnlcJnF1b3Q7IC0gVGV4dHVsIHN1bWFyPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGV0YWlsc1wmcXVvdDsgLSBEZXNjcmllcmUgZGV0YWxpYXRhPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9zdGFydFwmcXVvdDsgLSBEYXRhL29yYSBkZSBpbmNlcHV0IGEgZXZlbmltZW50dWx1aTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RhdGVfZW5kXCZxdW90OyAtIERhdGEvb3JhIGRlIHRlcm1pbmFyZSBhIGV2ZW5pbWVudHVsdWk8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9jcmVhdGVkX2J5XCZxdW90OyAtIHVzZXJpZC11bCBhdXRvcnVsdWk8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9pZFwmcXVvdDsgLSBpZC11bCBldmVuaW1lbnR1bHVpPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50RGVsZXRlZCddID0gJzxwPlRyaW1pdGUgY2FuZCB1biBldmVuaW1lbnQgY2FsZW5kYXJpc3RpYyBlc3RlIHN0ZXJzLjwvcD4NCjxoND5QYXJhbWV0cmk8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtldmVudF9pZFwmcXVvdDsgLSBpZC11bCBldmVuaW1lbnR1bHVpPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5QWRkZWQnXSA9ICc8cD5UcmltaXRlIGNhbmQgbyBjYXRlZ29yaWUgY2FsZW5kYXJpc3RpY2EgZXN0ZSBhZGF1Z2F0YS48L3A+DQo8aDQ+UGFyYW1ldHJpPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfaWRcJnF1b3Q7IC0gaWQtdWwgY2F0ZWdvcmllaTwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ2V2ZW50aGVscC1DYXRlZ29yeUVkaXRlZCddID0gJzxwPlRyaW1pdGUgY2FuZCB1biBjYWxlbmRhciBjYXRlZ29pcmllIGVzdGUgZWRpdGF0LjwvcD4NCjxoND5QYXJhbWV0cmk8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9pZFwmcXVvdDsgLSBJZC11bCBjYXRlZ29yaWVpPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfbmFtZVwmcXVvdDsgLSBOdW1lbGUgY2F0ZWdvcmllaTwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X29yZGVyXCZxdW90OyAtIE9yZGluZWEgZHVwYSBjYXRlZ29yaWU8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnPHA+VHJpbWl0ZSBjYW5kIHVuIGNhbGVuZGFyIGNhdGVnb3JpZSBlc3RlIHN0ZXJzLjwvcD4NCjxoND5QYXJhbWV0cmk8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9pZFwmcXVvdDsgLSBJZC11bCBjYXRlZ29yaWVpPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfbmFtZVwmcXVvdDsgLSBOdW1lbGUgY2F0ZWdvcmllaTwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X29yZGVyXCZxdW90OyAtIE9yZGluZWEgZHVwYSBjYXRlZ29yaWU8L2xpPg0KPC91bD4NCic7CiRsYW5nWydtc2dfZXZlbnRhZGRlZCddID0gJ0V2ZW5pbWVudCBhZGF1Z2F0JzsKJGxhbmdbJ2Vycm9yX25vdXBsb2FkJ10gPSAnRVJPQVJFOiBOdSBhIGZvc3QgZ2FzaXQgbmljaSB1biBmaXNpZXIgaW5jYXJjYXQgJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRmaWxlbmFtZSddID0gJ0VST0FSRTogRmlzaWVydWwgaW5jYXJjYXQgbnUgcG9hdGUgZmkgYWNjZXB0YXQnOwokbGFuZ1snZXJyb3JfcHJvYmxlbXdpdGh1cGxvYWQnXSA9ICdFUk9BUkU6IEEgc3VydmVuaXQgbyBwcm9ibGVtYSBsYSBpbmNlcmNhcmVhIGRlIGEgaW5jYXJjYSBmaXNpZXJ1bCc7CiRsYW5nWydlcnJvcl9maWxlY29weWZhaWxlZCddID0gJ0VST0FSRTogQSBzdXJ2ZW5pdCBvIHByb2JsZW1hIGxhIGNvcGllcmVhIGZpc2llcnVsdWkgbGEgZGVzdGluYXRpYSBmaW5hbGEnOwokbGFuZ1snZXJyb3JfZmlsZWV4aXN0cyddID0gJ0VST0FSRTogVW4gZmlzZXIgY3UgYWNlbGFzaSBudW1lIGV4aXN0YSBkZWphJzsKJGxhbmdbJ2Vycm9yX2NzdmZpbGVub3Rmb3VuZCddID0gJ0VST0FSRTogTnUgcy1hIGdhc2l0IGZpc2llcnVsIENTVic7CiRsYW5nWydlcnJvcl9jYW50b3BlbmZpbGUnXSA9ICdFUk9BUkU6IE51IHNlIHBvYXRlIGRlc2NoaWRlIGZpc2llcnVsJzsKJGxhbmdbJ2NhbF9jYWxlbmRhciddID0gJ0NhbGVuZGFyJzsKJGxhbmdbJ2NhbF9kZXNjcmlwdGlvbiddID0gJ0Rlc2NyaWVyZSc7CiRsYW5nWydjYWxfYWRkZXZlbnQnXSA9ICdBZGF1Z2EgZXZlbmltZW50JzsKJGxhbmdbJ2NhbF9pbXBvcnRfZXZlbnRzJ10gPSAnSW1wb3J0YSBldmVuaW1lbnRlJzsKJGxhbmdbJ2NhbF9ldmVudHMnXSA9ICdFdmVuaW1lbnRlJzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzJ10gPSAnQ2F0ZWdvcmlpJzsKJGxhbmdbJ2NhbF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ1NhYmxvbiBDYWxlbmRhcic7CiRsYW5nWydjYWxfbGlzdF90ZW1wbGF0ZSddID0gJ1NhYmxvbiBMaXN0YSc7CiRsYW5nWydjYWxfdXBjb21pbmdsaXN0X3RlbXBsYXRlJ10gPSAnU2FibG9uIFNvc2lyaSc7CiRsYW5nWydjYWxfZXZlbnRfdGVtcGxhdGUnXSA9ICdTYWJsb24gRXZlbmltZW50JzsKJGxhbmdbJ2NhbF9zZXR0aW5ncyddID0gJ1NldGFyaSc7CiRsYW5nWydjYWxfcHJldiddID0gJyZsYXF1bzsgQW50ZXJpb3InOwokbGFuZ1snY2FsX25leHQnXSA9ICdVcm1hdG9yICZyYXF1bzsnOwokbGFuZ1snY2FsX2NhdGVnb3JpZXNfdXBkYXRlZCddID0gJ0NhdGVnb3JpaSBhY3R1YWxpemF0ZSc7CiRsYW5nWydjYWxfc2V0dGluZ3NfdXBkYXRlZCddID0gJ1NldGFyaSBhY3R1YWxpemF0ZSc7CiRsYW5nWydjYWxfYWRkX2V2ZW50J10gPSAnQWRhdWdhIGV2ZW5pbWVudCc7CiRsYW5nWydjYWxfZWRpdCddID0gJ0VkaXRlYXphJzsKJGxhbmdbJ2NhbF9kZWxldGUnXSA9ICdTdGVyZ2UnOwokbGFuZ1snY2FsX2FyZXlvdXN1cmUnXSA9ICdTdW50ZXRpIHNpZ3VyKGEpIGNhIGRvcml0aSBzYSBzdGVyZ2V0aSc7CiRsYW5nWydjYWxfdXBkYXRlX3RlbXBsYXRlJ10gPSAnU2FibG9uIEFjdHVhbGl6YXJlJzsKJGxhbmdbJ2NhbF9zdW5kYXknXSA9ICdEdW1pbmljYSc7CiRsYW5nWydjYWxfbW9uZGF5J10gPSAnTHVuaSc7CiRsYW5nWydjYWxfdHVlc2RheSddID0gJ01hcnRpJzsKJGxhbmdbJ2NhbF93ZWRuZXNkYXknXSA9ICdNaWVyY3VyaSc7CiRsYW5nWydjYWxfdGh1cnNkYXknXSA9ICdKb2knOwokbGFuZ1snY2FsX2ZyaWRheSddID0gJ1ZpbmVyaSc7CiRsYW5nWydjYWxfc2F0dXJkYXknXSA9ICdTYW1iYXRhJzsKJGxhbmdbJ2NhbF9zdW4nXSA9ICdEdW0nOwokbGFuZ1snY2FsX21vbiddID0gJ0x1bic7CiRsYW5nWydjYWxfdHVlcyddID0gJ01hcic7CiRsYW5nWydjYWxfd2VkJ10gPSAnTWllJzsKJGxhbmdbJ2NhbF90aHVycyddID0gJ0pvaSc7CiRsYW5nWydjYWxfZnJpJ10gPSAnVmluJzsKJGxhbmdbJ2NhbF9zYXQnXSA9ICdTYW0nOwokbGFuZ1snY2FsX2phbnVhcnknXSA9ICdJYW51YXJpZSc7CiRsYW5nWydjYWxfZmVicnVhcnknXSA9ICdGZWJydWFyaWUnOwokbGFuZ1snY2FsX21hcmNoJ10gPSAnTWFydGllJzsKJGxhbmdbJ2NhbF9hcHJpbCddID0gJ0FwcmlsaWUnOwokbGFuZ1snY2FsX21heSddID0gJ01haSc7CiRsYW5nWydjYWxfanVuZSddID0gJ0l1bmknOwokbGFuZ1snY2FsX2p1bHknXSA9ICdJdWxpZSc7CiRsYW5nWydjYWxfYXVndXN0J10gPSAnQXVndXN0JzsKJGxhbmdbJ2NhbF9zZXB0ZW1iZXInXSA9ICdTZXB0ZW1icmllJzsKJGxhbmdbJ2NhbF9vY3RvYmVyJ10gPSAnT2N0b21icmllJzsKJGxhbmdbJ2NhbF9ub3ZlbWJlciddID0gJ05vaWVtYnJpZSc7CiRsYW5nWydjYWxfZGVjZW1iZXInXSA9ICdEZWNlbWJyaWUnOwokbGFuZ1snY2FsX2FkZCddID0gJ0FkYXVnYSc7CiRsYW5nWydjYWxfdXBkYXRlJ10gPSAnQWN0dWFsaXplYXphJzsKJGxhbmdbJ2NhbF9ldmVudCddID0gJ0V2ZW5pbWVudCc7CiRsYW5nWydjYWxfZGF0ZSddID0gJ0RhdGEnOwokbGFuZ1snY2FsX3N1bW1hcnknXSA9ICdTdW1hcic7CiRsYW5nWydjYWxfZGV0YWlscyddID0gJ0RldGFsaWknOwokbGFuZ1snY2FsX21vcmUnXSA9ICdtYWkgbXVsdCA+Pic7CiRsYW5nWydjYWxfcmV0dXJuJ10gPSAnUmV2ZW5pcmUnOwokbGFuZ1snY2FsX3RvJ10gPSAnbGEnOwokbGFuZ1snY2FsX3Bhc3RfZXZlbnRzJ10gPSAnRXZlbmltZW50ZSB0cmVjdXRlJzsKJGxhbmdbJ2NhbF91cGNvbWluZ19ldmVudHMnXSA9ICdFdmVuaW1lbnRlIG5vaSc7CiRsYW5nWydjYWxfYW55X2NhdGVnb3J5J10gPSAnT3JpY2UgY2F0ZWdvcmllJzsKJGxhbmdbJ2NhbF9zaG93X29ubHlfZXZlbnRzX2luJ10gPSAnQWZpc2VhemEgZG9hciBldmVuaW1lbnRlbGUgaW4nOwokbGFuZ1snY2FsX2ZpbHRlcl9ieSddID0gJ0ZpbHRyZWF6YSBkdXBhJzsKJGxhbmdbJ2NhbF9nbyddID0gJ0R1dGUnOwokbGFuZ1snY2FsX3RpdGxlJ10gPSAnVGl0bHUnOwokbGFuZ1snY2FsX2Zyb21kYXRlJ10gPSAnRGluIGRhdGEnOwokbGFuZ1snY2FsX3RvZGF0ZSddID0gJ2xhIGRhdGEnOwokbGFuZ1snY2FsX3VwZGF0ZV9jYXRlZ29yaWVzJ10gPSAnQWN0dWFsaXplYXphIGNhdGVnb3JpaSc7CiRsYW5nWydjYWxfbGFuZ3VhZ2UnXSA9ICdMaW1iYSc7CiRsYW5nWydjYWxfdXBkYXRlc2V0dGluZ3MnXSA9ICdBY3R1YWxpemVhemEgc2V0YXJpJzsKJGxhbmdbJ2NhbF91c2VfdHdlbHZlX2hvdXJfY2xvY2snXSA9ICdGb2xvc2VzdGUgZm9ybWF0dWwgY3UgZG9pc3ByZXplY2Ugb3JlIGxhIGxpc3RhIGRyb3AtZG93biBhIG9yZWxvcj8nOwokbGFuZ1snY2FsX2RlZmF1bHRfY2F0ZWdvcnknXSA9ICdDYXRlZ29yaWEgaW1wbGljaXRhJzsKJGxhbmdbJ2NhbF91cGRhdGVfZmllbGRzJ10gPSAnQ2FtcHVyaSBhY3R1YWxpemFyZSc7CiRsYW5nWydmb3JjZV9jYXRlZ29yeSddID0gJ0ZvcnRlYXphIGNlbCBwdXRpbiBvIGNhdGVnb3JpZSc7CiRsYW5nWydzaG93cGFzdHllYXJzJ10gPSAnQ2UgbnVtYXIgZGUgYW5pIGRpbiB0cmVjdXQgZXN0ZSBwZXJtaXMnOwokbGFuZ1snc2hvd2Z1dHVyZXllYXJzJ10gPSAnQ2UgbnVtYXIgZGUgYW5pIGRpbiB2aWl0b3IgZXN0ZSBwZXJtaXMnOwokbGFuZ1snaGlkZXN1bW1hcnknXSA9ICdBciB0cmVidWkgYXNjdW5zIGNhbXB1bCBzdW1hcic7CiRsYW5nWydoaWRlY29udGVudCddID0gJ0FyIHRyZWJ1aSBhc2N1bnMgY2FtcHVsIGNvbnRpbnV0JzsKJGxhbmdbJ2NhdGVnb3J5X3JlbWluZGVyJ10gPSAnVmEgcm9nIHNlbGVjdGF0aSB1bmEgc2F1IG1haSBtdWx0ZSBjYXRlZ29yaWkgcGVudHJ1IGFjZXN0IGV2ZW5pbWVudCc7CiRsYW5nWydtb2R1bGVfZXhhbXBsZV9zdHlsZXNoZWV0J10gPSAnRXhlbXBsdSBDU1MgY2FsZW5kYXJpc3RpYyc7CiRsYW5nWydlcnJvcl9wZXJtaXNzaW9uJ10gPSAnQXZldGkgbmV2b2llIGRlIHBlcm1pc2l1bmVhIGNvcmVzcHVuemF0b2FyZSAoJXMpIHBlbnRydSBhIGFjY2VzYSBhY2Vhc3RhIGZ1bmN0aW9uYWxpdGF0ZSc7CiRsYW5nWydpbnN0YWxsX3Bvc3RtZXNzYWdlJ10gPSAnQXNpZ3VyYXRpLXZhIGNhIGF0aSBzZXRhdCBwZXJtaXNpdW5lYSAmcXVvdDtNb2RpZnkgQ2FsZW5kYXImcXVvdDsgcGVudHJ1IHV0aWxpemF0b3JpaSBjYXJlIHZvciBhZG1pbmlzdHJhIGV2ZW5pbWVudGVsZSBjYWxlbmRhcmlzdGljZS4nOwokbGFuZ1snZGVsZXRldGFnZ2VkJ10gPSAnU3RlcmdlIGV2ZW5pbWVudGVsZSBtYXJjYXRlJzsKJGxhbmdbJ2NvbmZpcm1kZWxldGV0YWdnZWQnXSA9ICdTdW50ZXRpIHNpZ3VyKGEpIGNhIGFjZXN0ZSBldmVuaW1lbnRlIGFyIHRyZWJ1aSBzdGVyc2U/JzsKJGxhbmdbJ3RhZ2dlZGRlbGV0ZWQnXSA9ICdFdmVuaW1lbnRlbGUgbWFyY2F0ZSBhdSBmb3N0IHN0ZXJzZSc7CiRsYW5nWyd0ZW1wbGF0ZXMnXSA9ICdTYWJsb2FuZSc7CiRsYW5nWyd0ZW1wbGF0ZV9oZWxwJ10gPSAnQWp1dG9yIHNhYmxvbic7CiRsYW5nWydmaWxlX3RlbXBsYXRlcyddID0gJ0Zpc2llciBzYWJsb2FuZSc7CiRsYW5nWydhZGR0ZW1wbGF0ZSddID0gJ0FkYXVnYSBTYWJsb24nOwokbGFuZ1sndGVtcGxhdGUnXSA9ICdTYWJsb24nOwokbGFuZ1sndGVtcGxhdGVuYW1ldGV4dCddID0gJ051bWUgc2FibG9uJzsKJGxhbmdbJ2VkaXR0ZW1wbGF0ZSddID0gJ0VkaXRlYXphIHNhYmxvbic7CiRsYW5nWydkZWxldGV0ZW1wbGF0ZSddID0gJ1N0ZXJnZSBzYWJsb24nOwokbGFuZ1snbmV3dGVtcGxhdGUnXSA9ICdOdW1lIHNhYmxvbiBub3UnOwokbGFuZ1sndGVtcGxhdGVuYW1lZXhpc3RzJ10gPSAnRXJvYXJlOiBVbiBzYWJsb24gY3UgYWNlc3QgbnVtZSBleGlzdGEgZGVqYS4gVmEgcm9nIHNhIGFsZWdldGkgdW4gbnVtZSBkaWZlcml0Lic7CiRsYW5nWyd0ZW1wbGF0ZWltcG9ydGVkJ10gPSAnU2FibG9udWwgYSBmb3N0IGltcG9ydGF0IGN1IHN1Y2NlcyBpbiBiYXphIGRlIGRhdGUgc2kgYWN1bSBlc3RlIGdhdGEgaW5zdGFsYXQgcGVudHJ1IGEgcHV0ZWEgZmkgZm9sb3NpdC4nOwokbGFuZ1sndmlld19kZWZhdWx0X3N0eWxlc2hlZXQnXSA9ICdWaXp1YWxpemVhemEgZm9pYSBkZSBzdGlsIGltcGxpY2l0YSc7CiRsYW5nWydmaWxlbmFtZSddID0gJ051bWUgZmlzaWVyJzsKJGxhbmdbJ2ltcG9ydHRlbXBsYXRlJ10gPSAnSW1wb3J0YSBzYWJsb24nOwokbGFuZ1sndGVtcGxhdGVfZGVsZXRlZCddID0gJ0FjZXN0IHNhYmxvbiBhIGZvc3Qgc3RlcnMgY3Ugc3VjY2VzIGRpbiBiYXphIGRlIGRhdGUuJzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlc3VjY2VzcyddID0gJ1NhYmxvbnVsIGEgZm9zdCBhY3R1YWxpemF0IGN1IHN1Y2Nlcyc7CiRsYW5nWyd1cGRhdGV0ZW1wbGF0ZWZhaWx1cmUnXSA9ICdBIGludGVydmVuaXQgbyBlcm9hcmUgbGEgYWN0dWFsaXphcmVhIHNhYmxvbnVsdWknOwokbGFuZ1snc2V0dGluZ3NzYXZlZCddID0gJ1NldGFyaWxlIGF1IGZvc3Qgc2FsdmF0ZSBjdSBzdWNjZXMnOwokbGFuZ1snY2F0ZWdvcnlkZWxldGVkJ10gPSAnQ2F0ZWdvcmlhIGEgZm9zdCBzdGVhcnNhJzsKJGxhbmdbJ2NhdGVnb3J5dXBkYXRlZCddID0gJ0NhdGVnb3JpYSBhIGZvc3QgYWN0dWFsaXphdGEnOwokbGFuZ1snY2F0ZWdvcnlhZGRlZCddID0gJ0NhdGVnb3JpYSBhIGZvc3QgYWRhdWdhdGEnOwokbGFuZ1snZXZlbnRkZWxldGVkJ10gPSAnRXZlbmltZW50dWwgYSBmb3N0IHN0ZXJzJzsKJGxhbmdbJ2V2ZW50dXBkYXRlZCddID0gJ0V2ZW5pbWVudHVsIGEgZm9zdCBhY3R1YWxpemF0JzsKJGxhbmdbJ2RlZmF1bHRfcGFnZV9lcnJvciddID0gJ0Vyb2FyZTogVHJlYnVpZSBzYSBzZXRhdGkgbyBwYWdpbmEgaW1wbGljaXRhIHBlbnRydSBhIHB1dGVhIGZvbG9zaSBjYWxlbmRhcnVsIGN1IFVSTC11cmkgZHJhZ3V0ZSBhY3RpdmF0ZS4gVmEgcm9nIHNhIG1lcmdldGkgbGEgc2V0YXJpbGUgY2FsZW5kYXJ1bHVpIHNpIHNhIGFsZWdldGkgdW5hLic7CiRsYW5nWyd0aW1lX2F0J10gPSAnbGEnOwokbGFuZ1sndHlwZSddID0gJ1RpcCc7CiRsYW5nWyduYW1lJ10gPSAnTnVtZSc7CiRsYW5nWydvcmRlciddID0gJ09yZGluZSc7CiRsYW5nWydmaWVsZGFkZGVkJ10gPSAnQ2FtcCBhZGF1Z2F0IGN1IHN1Y2Nlcyc7CiRsYW5nWydmaWVsZGRlbGV0ZWQnXSA9ICdDYW1wIHN0ZXJzJzsKJGxhbmdbJ2ZpZWxkcyddID0gJ0NhbXB1cmkgcGFydGljdWxhcml6YXRlJzsKJGxhbmdbJ3RleHRmaWVsZCddID0gJ1RleHQgY2FtcCc7CiRsYW5nWyd1cGxvYWRmaWVsZCddID0gJ0NhbXAgaW5jYXJjYXJlIGZpc2llcic7CiRsYW5nWydkZXNjcmlwdGlvbiddID0gJzxwPkNhbGVuZGFyIGVzdGUgdW4gbW9kdWwgcGVudHJ1IGFmaXNhcmVhIGV2ZW5pbWVudGVsb3IgaW4gcGFnaW5hIGR1bW5lYXZhc3RyYS4gRHVwYSBpbnN0YWxhcmVhIG1vZHVsdWx1aSwgbyBwYWdpbmEgZGUgYWRtaW5pc3RyYXJlIGEgY2FsZW5kYXJ1bHVpIGVzdGUgYWRhdWdhdGEgbGEgbWVuaXVsIGNvbnRpbnV0IGNhcmUgdmEgcGVybWl0ZSBnZXN0aW9uYXJlYSBldmVuaW1lbnRlbG9yLjwvcD4nOwokbGFuZ1snZGVmYXVsdGNhbGVuZGFycGFnZSddID0gJ1BhZ2luYSBpbXBsaWNpdGEgY2FyZSBjb250aW5lIGNhbGVuZGFydWwuIEFjZWFzdGEgcGFnaW5hIHRyZWJ1aWUgc2EgY29udGluYSBvIGV0aWNoZXRhIFNtYXJ0eSBjYXJlIGFwZWxlYXphIGNhbGVuZGFydWwuIEVzdGUgbmVjZXNhcmEgZGFjYSBmb2xvc2l0aSBVUkwtdXJpIGRyYWd1dGUuJzsKJGxhbmdbJ3VwbG9hZGRpcmVjdG9yeSddID0gJ0RpcmVjdG9ydWwgdW5kZSBmaXNpZXJlbGUgaW5jYXJjYXRlIGFyIHRyZWJ1aSBzYSBmaWUgcGxhc2F0ZSc7CiRsYW5nWyd1cGxvYWRmaWxldHlwZXMnXSA9ICdUaXB1cmkgZGUgZmlzaWVyZSBwZXJtaXNlJzsKJGxhbmdbJ3VwbG9hZHVuaXF1ZSddID0gJ0FzaWd1cmEgbnVtZSBkZSBmaXNpZXJlIHVuaWNlJzsKJGxhbmdbJ3RodW1iX3dpZHRoJ10gPSAnVGh1bWJuYWlsIFdpZHRoJzsKJGxhbmdbJ3RodW1iX2hlaWdodCddID0gJ1RodW1ibmFpbCBIZWlnaHQnOwokbGFuZ1snbGFyZ2Vfd2lkdGgnXSA9ICdMYXJnZSBJbWFnZSBXaWR0aCc7CiRsYW5nWydsYXJnZV9oZWlnaHQnXSA9ICdMYXJnZSBJbWFnZSBIZWlnaHQnOwokbGFuZ1snY2FsX3JlY3VyX3BlcmlvZCddID0gJ1JlY3Vycyc7CiRsYW5nWydjYWxfcmVjdXJfdW50aWwnXSA9ICdSZWN1cnMgVW50aWwnOwokbGFuZ1snaGVscF90ZW1wbGF0ZSddID0gJzxwPjxiPlRpcGFyZXN0ZSBudW1lbGUgYXV0b3J1bHVpOjwvYj48L3A+DQo8Y29kZT5BdXRvcjogeyRldmVudC5hdXRob3JuYW1lfTwvY29kZT4NCic7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/ru_RU.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2RmbHRfdXJscHJlZml4J10gPSAnRGVmYXVsdCBVUkwgcHJlZml4IGZvciBQcmV0dHkgVVJMUyc7CiRsYW5nWydkZmx0X2FsbGRheWV2ZW50J10gPSAnTmV3IGV2ZW50cyBhcmUgIkFsbCBEYXkiIGV2ZW50cyBieSBkZWZhdWx0JzsKJGxhbmdbJ2RmbHRfc3RhcnR0aW1lJ10gPSAnRGVmYXVsdCBzdGFydCB0aW1lIGZvciBuZXcgZXZlbnRzJzsKJGxhbmdbJ2luZm9fZGZsdF9zdGFydHRpbWUnXSA9ICc8ZW0+KGFwcGxpZXMgb25seSBpZiBuZXcgZXZlbnRzIGFyZSBub3QgIkFsbCBEYXkiIGV2ZW50cy4pPC9lbT4nOwokbGFuZ1snc2VhcmNoX3R5cGUnXSA9ICdTZWFyY2ggVHlwZSc7CiRsYW5nWydzZWFyY2hfYW55J10gPSAnUmV0dXJuIHJlc3VsdHMgbWF0Y2hpbmcgYW55IHdvcmQnOwokbGFuZ1snc2VhcmNoX2FsbCddID0gJ1JldHVybiByZXN1bHRzIG1hdGNoaW5nIGFsbCB3b3Jkcyc7CiRsYW5nWydpbmZvX2N1c3RvbWZpZWxkcyddID0gJzxzcGFuIHN0eWxlPSJjb2xvcjogcmVkOyI+Tm90ZTo8L3NwYW4+ICJGaWxlIFVwbG9hZCBGaWVsZHMiIGFyZSBub3Qgc2VhcmNoYWJsZS4nOwokbGFuZ1snc2VhcmNoYWJsZSddID0gJ1NlYXJjaGFibGUnOwokbGFuZ1snaGVscF9wYXJhbV9lZGl0ZXZlbnR0ZW1wbGF0ZSddID0gJ0FwcGxpY2FibGUgb25seSB0byB0aGUgbXlldmVudHMgYWN0aW9uLCB0aGlzIHBhcmFtZXRlciBhbGxvd3Mgc3BlY2lmeWluZyBhIG5vbiBkZWZhdWx0IGVkaXQgZXZlbnQgdGVtcGxhdGUgdG8gdXNlIHdoZW4gYSB1c2VyIGNyZWF0ZXMgb3IgZWRpdHMgYW4gZXZlbnQnOwokbGFuZ1snaGVscF9wYXJhbV9lZGl0cGFnZSddID0gJ0FwcGxpY2FibGUgb25seSB0byB0aGUgbXlldmVudHMgYWN0aW9uLCB0aGlzIHBhcmFtZXRlciBhbGxvd3Mgc3BlY2lmeWluZyBhIGRpZmZlcmVudCBwYWdlIGZvciB0aGUgZWRpdCBmb3JtLic7CiRsYW5nWydoZWxwX3BhcmFtX215ZXZlbnRzdGVtcGxhdGUnXSA9ICdBcHBsaWNhYmxlIG9ubHkgdG8gdGhlIG15ZXZlbnRzIGFjdGlvbiwgdGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHNwZWNpZnlpbmcgYSBub24gZGVmYXVsdCB0ZW1wbGF0ZSB0byB1c2UnOwokbGFuZ1snY2FsX2VkaXRfZXZlbnQnXSA9ICdFZGl0IENhbGVuZGFyIEV2ZW50JzsKJGxhbmdbJ2Vycm9yX2RiZXJyb3InXSA9ICdEYXRhYmFzZSBFcnJvcic7CiRsYW5nWydzdWJtaXQnXSA9ICdTdWJtaXQnOwokbGFuZ1snaW5mb19zeXNkZmx0X2VkaXRldmVudF90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0ICJFZGl0IEV2ZW50IiBUZW1wbGF0ZSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfbXlldmVudHNfdGVtcGxhdGUnXSA9ICdTeXN0ZW0gRGVmYXVsdCAiTXkgRXZlbnRzIiBUZW1wbGF0ZSc7CiRsYW5nWydwcm9tcHRfZmVlZGl0X2dyb3VwJ10gPSAnTWVtYmVycyBvZiB0aGlzIEZFVSBncm91cCBjYW4gYWRkIGV2ZW50cyc7CiRsYW5nWydwcm9tcHRfZmVlZGl0X3BhZ2UnXSA9ICdEZWZhdWx0IHBhZ2UgZm9yIHRoZSBmcm9udGVuZCBlZGl0IGZvcm0uJzsKJGxhbmdbJ25vbmUnXSA9ICdOb25lJzsKJGxhbmdbJ293bmVyJ10gPSAnT3duZXInOwokbGFuZ1snY2FsX2VkaXRldmVudF90ZW1wbGF0ZXMnXSA9ICdFZGl0IEV2ZW50IEZvcm0gVGVtcGxhdGVzJzsKJGxhbmdbJ2luZm9fZWRpdGV2ZW50X3RlbXBsYXRlX3RhYiddID0gJ1RoZSBsaXN0IG9mIHRlbXBsYXRlcyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIHRoZSBlZGl0IGV2ZW50IGZvcm0nOwokbGFuZ1snZWRpdGV2ZW50dGVtcGxhdGVfYWRkZWRpdCddID0gJ0FkZC9FZGl0IGFuIEVkaXQgRXZlbnQgRm9ybSBUZW1wbGF0ZSc7CiRsYW5nWydjYWxfbXlldmVudHNfdGVtcGxhdGVzJ10gPSAnTXkgRXZlbnRzIExpc3QgVGVtcGxhdGVzJzsKJGxhbmdbJ2luZm9fbXlldmVudHNfdGVtcGxhdGVfdGFiJ10gPSAnVGhlIGxpc3Qgb2YgdGVtcGxhdGVzIHRoYXQgYXJlIGF2YWlsYWJsZSB0byBkaXNwbGF5IGEgbGlzdCBvZiB1c2VyIGV2ZW50cyc7CiRsYW5nWydteWV2ZW50c3RlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZGQvRWRpdCBhICJNeSBFdmVudHMiIHJlcG9ydCB0ZW1wbGF0ZSc7CiRsYW5nWydhcmV5b3VzdXJlX3JlbW92ZWNvbmZsaWN0aW5nJ10gPSAnVGhpcyBhY3Rpb24gd2lsbCByZW1vdmUgYW55IGV2ZW50cyB0aGF0IGNvbmZsaWN0IHdpdGggbm9uLW92ZXJsYXBwYWJsZSBldmVudHMuICBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZG8gdGhpcz8nOwokbGFuZ1snZmlsdGVyX2NvbmZsaWN0aW5nJ10gPSAnRmlsdGVyIENvbmZsaWN0aW5nIEV2ZW50cyc7CiRsYW5nWydvdmVybGFwX2FjdGlvbl9yZW1vdmUnXSA9ICdTaWxlbnRseSByZW1vdmUgY29uZmxpY3RpbmcgZXZlbnRzJzsKJGxhbmdbJ292ZXJsYXBfYWN0aW9uX2Vycm9yJ10gPSAnRGlzcGxheSBhbiBlcnJvcic7CiRsYW5nWydwcm9tcHRfb3ZlcmxhcF9hY3Rpb24nXSA9ICdXaGF0IHNob3VsZCBoYXBwZW4gd2hlbiBhIGNvbmZsaWN0IGlzIGRldGVjdGVkIGR1cmluZyBlZGl0aW5nIG9yIGFkZGluZyBvZiBhbiBldmVudCc7CiRsYW5nWydlcnJvcl9ldmVudF9jb25mbGljdCddID0gJ1RoZSBldmVudCB2YWx1ZXMgc3BlY2lmaWVkIG92ZXJsYXAgd2l0aCBhbiBleGlzdGluZyBldmVudCB0aGF0IGRvZXMgbm90IGFsbG93IGNvbmZsaWN0cyc7CiRsYW5nWydjYWxfaW5mb19vdmVybGFwJ10gPSAnQXBwbGllcyBvbmx5IHRvIGV2ZW50cyB3aXRoIGFuIGVuZCB0aW1lIChvciBhbGwgZGF5IGV2ZW50cyknOwokbGFuZ1snY2FsX292ZXJsYXAnXSA9ICdBbGxvdyBuZXcgZXZlbnRzIHRvIG92ZXJsYXAgd2l0aCB0aGlzIG9uZSc7CiRsYW5nWydwcm9tcHRfb3ZlcmxhcF9wb2xpY3knXSA9ICdFdmVudCBPdmVybGFwIFBvbGljeSc7CiRsYW5nWydwb2xpY3lfYWxsJ10gPSAnQWxsIEV2ZW50cyBjYW4gb3ZlcmxhcCc7CiRsYW5nWydwb2xpY3lfbm9uZSddID0gJ05vIEV2ZW50cyBjYW4gb3ZlcmxhcCc7CiRsYW5nWydwb2xpY3lfaW5kaXZpZHVhbCddID0gJ0RlY2lkZWQgb24gYW4gZXZlbnQgYnkgZXZlbnQgYmFzaXMnOwokbGFuZ1snbGJsX2JhY2snXSA9ICdCYWNrJzsKJGxhbmdbJ2xibF90ZW1wbGF0ZXMnXSA9ICdUZW1wbGF0ZXMnOwokbGFuZ1sndGV4dGFyZWEnXSA9ICdUZXh0IEFyZWEnOwokbGFuZ1snZXJyb3JfY2FsZW5kYXJfaW5jb21wYXRpYmxlJ10gPSAnV2UgaGF2ZSBkZXRlY3RlZCB0aGF0IHRoZSBDYWxlbmRhciBtb2R1bGUgaXMgYWxzbyBpbnN0YWxsZWQuLiAgVGhpcyBtb2R1bGUgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgQ2FsZW5kYXIgbW9kdWxlIGFuZCBjYW5ub3QgY28tZXhpc3Qgd2l0aCBpdCBvbiB0aGUgc2FtZSBpbnN0YWxsLiAgUGxlYXNlIHVuaW5zdGFsbCB0aGUgQ2FsZW5kYXIgbW9kdWxlJzsKJGxhbmdbJ2Vycm9yX2V2ZW50X25vdF9mb3VuZCddID0gJ0VpdGhlciBldmVudF9pZCBpcyBub3QgaW4gdGhlIGRhdGFiYXNlLCBvciB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIGV2ZW50IHdpdGggdGhpcyBpZCEgKCVkKSc7CiRsYW5nWydmaXJzdF9wYWdlJ10gPSAnPDwnOwokbGFuZ1sncHJldl9wYWdlJ10gPSAnPCc7CiRsYW5nWyduZXh0X3BhZ2UnXSA9ICc+JzsKJGxhbmdbJ2xhc3RfcGFnZSddID0gJz4+JzsKJGxhbmdbJ3BhZ2Vfb2YnXSA9ICdQYWdlICVkIG9mICVkJzsKJGxhbmdbJ3NlYXJjaF9yZXN1bHRzJ10gPSAnQ2FsZW5kYXIgU2VhcmNoIFJlc3VsdHMnOwokbGFuZ1snc2VhcmNoX3dvcmRzJ10gPSAnU2VhcmNoIFdvcmRzJzsKJGxhbmdbJ25vX3Jlc3VsdHNfZm91bmQnXSA9ICdObyByZXN1bHRzIGZvdW5kIG1hdGNoaW5nIHRoZSBxdWVyeSBzcGVjaWZpZWQnOwokbGFuZ1snZnJlcXVlbmN5J10gPSAnRnJlcXVlbmN5JzsKJGxhbmdbJ3NwZWNpZmllZF9kYXRlJ10gPSAnVXNlIHRoZSBzcGVjaWZpZWQgZGF0ZSc7CiRsYW5nWydmaXJzdF9zdW5kYXknXSA9ICdGaXJzdCBTdW5kYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZpcnN0X21vbmRheSddID0gJ0ZpcnN0IE1vbmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZmlyc3RfdHVlc2RheSddID0gJ0ZpcnN0IFR1ZXNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZpcnN0X3dlZG5lc2RheSddID0gJ0ZpcnN0IFdlZG5lc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZmlyc3RfdGh1cnNkYXknXSA9ICdGaXJzdCBUaHVyc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZmlyc3RfZnJpZGF5J10gPSAnRmlyc3QgRnJpZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydmaXJzdF9zYXR1cmRheSddID0gJ0ZpcnN0IFNhdHVyZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydzZWNvbmRfc3VuZGF5J10gPSAnU2Vjb25kIFN1bmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snc2Vjb25kX21vbmRheSddID0gJ1NlY29uZCBNb25kYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3NlY29uZF90dWVzZGF5J10gPSAnU2Vjb25kIFR1ZXNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3NlY29uZF93ZWRuZXNkYXknXSA9ICdTZWNvbmQgV2VkbmVzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydzZWNvbmRfdGh1cnNkYXknXSA9ICdTZWNvbmQgVGh1cnNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3NlY29uZF9mcmlkYXknXSA9ICdTZWNvbmQgRnJpZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydzZWNvbmRfc2F0dXJkYXknXSA9ICdTZWNvbmQgU2F0dXJkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3RoaXJkX3N1bmRheSddID0gJ1RoaXJkIFN1bmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1sndGhpcmRfbW9uZGF5J10gPSAnVGhpcmQgTW9uZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWyd0aGlyZF90dWVzZGF5J10gPSAnVGhpcmQgVHVlc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1sndGhpcmRfd2VkbmVzZGF5J10gPSAnVGhpcmQgV2VkbmVzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWyd0aGlyZF90aHVyc2RheSddID0gJ1RoaXJkIFRodXJzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWyd0aGlyZF9mcmlkYXknXSA9ICdUaGlyZCBGcmlkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3RoaXJkX3NhdHVyZGF5J10gPSAnVGhpcmQgU2F0dXJkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZvdXJ0aF9zdW5kYXknXSA9ICdGb3VydGggU3VuZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydmb3VydGhfbW9uZGF5J10gPSAnRm91cnRoIE1vbmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZm91cnRoX3R1ZXNkYXknXSA9ICdGb3VydGggVHVlc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZm91cnRoX3dlZG5lc2RheSddID0gJ0ZvdXJ0aCBXZWRuZXNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZvdXJ0aF90aHVyc2RheSddID0gJ0ZvdXJ0aCBUaHVyc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZm91cnRoX2ZyaWRheSddID0gJ0ZvdXJ0aCBGcmlkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZvdXJ0aF9zYXR1cmRheSddID0gJ0ZvdXJ0aCBTYXR1cmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snbGFzdF9zdW5kYXknXSA9ICdMYXN0IFN1bmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snbGFzdF9tb25kYXknXSA9ICdMYXN0IE1vbmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snbGFzdF90dWVzZGF5J10gPSAnTGFzdCBUdWVzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydsYXN0X3dlZG5lc2RheSddID0gJ0xhc3QgV2VkbmVzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydsYXN0X3RodXJzZGF5J10gPSAnTGFzdCBUaHVyc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snbGFzdF9mcmlkYXknXSA9ICdMYXN0IEZyaWRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snbGFzdF9zYXR1cmRheSddID0gJ0xhc3QgU2F0dXJkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRfcmVjdXJfbW9udGhseV9mcmVxJ10gPSAnSW52YWxpZCBmcmVxdWVuY3kuLi4uIHlvdSBjYW5ub3Qgc3BlY2lmeSBib3RoIHRoZSBzcGVjaWZpZWQgZGF0ZSBBTkQgb3RoZXIgdmFsdWVzJzsKJGxhbmdbJ3NlYXJjaHJlc3VsdHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZGQvRWRpdCBhIFNlYXJjaCBSZXN1bHQgVGVtcGxhdGUnOwokbGFuZ1snaW5mb19zZWFyY2hyZXN1bHRfdGVtcGxhdGVfdGFiJ10gPSAnVGhlIGxpc3Qgb2YgdGVtcGxhdGVzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgdGhlIHNlYXJjaCByZXN1bHRzIGRpc3BsYXknOwokbGFuZ1snaW5mb19zeXNkZmx0X3NlYXJjaHJlc3VsdF90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IFNlYXJjaCBSZXN1bHQgVGVtcGxhdGUnOwokbGFuZ1snY2FsX3NlYXJjaF9yZXN1bHRfdGVtcGxhdGVzJ10gPSAnU2VhcmNoIFJlc3VsdCBUZW1wbGF0ZXMnOwokbGFuZ1snZXJyb3JfcXVlcnlfZmFpbGVkJ10gPSAnRGF0YWJhc2UgUXVlcnkgRmFpbGVkJzsKJGxhbmdbJ2Vycm9yX3NlYXJjaF9pbnZhbGlkX2RhdGVzJ10gPSAnSW52YWxpZCBTZWFyY2ggRGF0ZXMgU3BlY2lmaWVkJzsKJGxhbmdbJ3RleHQnXSA9ICdUZXh0JzsKJGxhbmdbJ3NlYXJjaCddID0gJ1NlYXJjaCc7CiRsYW5nWydjYXRlZ29yeSddID0gJ0NhdGVnb3J5JzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9zZWFyY2hfdGVtcGxhdGUnXSA9ICdTeXN0ZW0gRGVmYXVsdCBTZWFyY2ggRm9ybSBUZW1wbGF0ZSc7CiRsYW5nWydzZWFyY2h0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnQWRkL0VkaXQgYSBTZWFyY2ggRm9ybSBUZW1wbGF0ZSc7CiRsYW5nWydpbmZvX3NlYXJjaF90ZW1wbGF0ZV90YWInXSA9ICdUaGUgbGlzdCBvZiB0ZW1wbGF0ZXMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciB0aGUgc2VhcmNoIGZvcm0nOwokbGFuZ1snY2FsX3NlYXJjaF9mb3JtX3RlbXBsYXRlcyddID0gJ1NlYXJjaCBGb3JtIFRlbXBsYXRlcyc7CiRsYW5nWydtYXgnXSA9ICdtYXgnOwokbGFuZ1sndGltZXMnXSA9ICd0aW1lcyc7CiRsYW5nWydvbiddID0gJ29uJzsKJGxhbmdbJ2FyZXlvdXN1cmVfdW5pbnN0YWxsJ10gPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRvIHRoaXM/ICBDb250aW51aW5nIHdpbGwgcGVybWFuZW5lbnRseSBlcmFzZSBhbGwgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhpcyBtb2R1bGUuJzsKJGxhbmdbJ3Bvc3RfdW5pbnN0YWxsJ10gPSAnVGhlIENhbGVuZGFyIG1vZHVsZSBoYXMgYmVlbiB1bmluc3RhbGxlZCBhbmQgYWxsIGV2ZW50IGFuZCB0ZW1wbGF0ZSBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVtb3ZlZCc7CiRsYW5nWydmaWVsZHVwZGF0ZWQnXSA9ICdGaWVsZCBVcGRhdGVkJzsKJGxhbmdbJ2V2ZXJ5J10gPSAnRXZlcnknOwokbGFuZ1snb3InXSA9ICdvcic7CiRsYW5nWyd1cGRhdGVfY2hpbGRyZW4nXSA9ICdVcGRhdGUgQ2hpbGQgRXZlbnRzJzsKJGxhbmdbJ2Vycm9yX25vY2F0ZWdvcnknXSA9ICdZb3UgbXVzdCBzZWxlY3QgYXQgbGVhc3Qgb25lIGNhdGVnb3J5JzsKJGxhbmdbJ2Vycm9yX25vdGhpbmdzZWxlY3RlZCddID0gJ05vdGhpbmcgaGFzIGJlZW4gc2VsZWN0ZWQgdG8gZGVsZXRlJzsKJGxhbmdbJ2Vycm9yX2V2ZW50b3ZlcmxhcCddID0gJ1RoZSByZWN1cmluZyBldmVudCBwYXJhbWV0ZXJzIHlvdSBoYXZlIHNwZWNpZmllZCB3b3VsZCByZXN1bHQgaW4gb3ZlcmxhcHBpbmcgZXZlbnRzLic7CiRsYW5nWydyZWN1cnMnXSA9ICdSZWN1cnMnOwokbGFuZ1snZXJyb3JfaW52YWxpZF9kYXRlcyddID0gJ09uZSBvciBtb3JlIG9mIHRoZSBkYXRlIHZhbHVlcyBlbnRlcmVkIHdlcmUgaW52YWxpZCc7CiRsYW5nWydzdW5kYXknXSA9ICdTdW5kYXknOwokbGFuZ1snbW9uZGF5J10gPSAnTW9uZGF5JzsKJGxhbmdbJ3R1ZXNkYXknXSA9ICdUdWVzZGF5JzsKJGxhbmdbJ3dlZG5lc2RheSddID0gJ1dlZG5lc2RheSc7CiRsYW5nWyd0aHVyc2RheSddID0gJ1RodXJzZGF5JzsKJGxhbmdbJ2ZyaWRheSddID0gJ0ZyaWRheSc7CiRsYW5nWydzYXR1cmRheSddID0gJ1NhdHVyZGF5JzsKJGxhbmdbJ2FiYnJfc3VuZGF5J10gPSAnU3UnOwokbGFuZ1snYWJicl9tb25kYXknXSA9ICdNbyc7CiRsYW5nWydhYmJyX3R1ZXNkYXknXSA9ICdUdSc7CiRsYW5nWydhYmJyX3dlZG5lc2RheSddID0gJ1dlJzsKJGxhbmdbJ2FiYnJfdGh1cnNkYXknXSA9ICdUaCc7CiRsYW5nWydhYmJyX2ZyaWRheSddID0gJ0ZyJzsKJGxhbmdbJ2FiYnJfc2F0dXJkYXknXSA9ICdTYSc7CiRsYW5nWyd3ZWVrZGF5cyddID0gJ1dlZWtkYXlzJzsKJGxhbmdbJ3BsdXJhbF9kYWlseSddID0gJ0RheXMnOwokbGFuZ1sncGx1cmFsX3dlZWtseSddID0gJ1dlZWtzJzsKJGxhbmdbJ3BsdXJhbF9tb250aGx5J10gPSAnTW9udGhzJzsKJGxhbmdbJ3BsdXJhbF95ZWFybHknXSA9ICdZZWFycyc7CiRsYW5nWydubyddID0gJ05vJzsKJGxhbmdbJ2RhaWx5J10gPSAnRGFpbHknOwokbGFuZ1snd2Vla2x5J10gPSAnV2Vla2x5JzsKJGxhbmdbJ21vbnRobHknXSA9ICdNb250aGx5JzsKJGxhbmdbJ3llYXJseSddID0gJ1llYXJseSc7CiRsYW5nWydpbnRlcnZhbCddID0gJ1JlcGVhdCBldmVyeSc7CiRsYW5nWydjYWxfcmVjdXJfZGV0YWlscyddID0gJ1JlY3VycmluZyBFdmVudCBEZXRhaWxzJzsKJGxhbmdbJ3VubGltaXRlZCddID0gJ1VubGltaXRlZCc7CiRsYW5nWydtYXhfcmVjdXJfZXZlbnRzJ10gPSAnTWF4aW11bSBudW1iZXIgb2YgY2hpbGQgZXZlbnRzJzsKJGxhbmdbJ3VzZV90b19kYXRlJ10gPSAnU3BlY2lmeSBhIGRpZmZlcmVudCBlbmQgZGF0ZT8nOwokbGFuZ1snY2FuY2VsJ10gPSAnQ2FuY2VsJzsKJGxhbmdbJ3Nob3dfY2hpbGRfZXZlbnRzJ10gPSAnU2hvdyBDaGlsZCBFdmVudHMgPGVtPihtYXkgcmVzdWx0IGluIHZlcnkgbG9uZyBkaXNwbGF5KTwvZW0+JzsKJGxhbmdbJ24vYSddID0gJ24vYSc7CiRsYW5nWydyZWN1cnNfdW50aWwnXSA9ICdSZWN1ciBVbnRpbCc7CiRsYW5nWydwYXJlbnQnXSA9ICdQYXJlbnQnOwokbGFuZ1sncmVjdXJfcGVyaW9kJ10gPSAnUmVjdXIgUGVyaW9kJzsKJGxhbmdbJ2ZpbHRlciddID0gJ0ZpbHRlcic7CiRsYW5nWydzdGFydF9kYXRlJ10gPSAnU3RhcnQgRGF0ZSc7CiRsYW5nWydlbmRfZGF0ZSddID0gJ0VuZCBEYXRlJzsKJGxhbmdbJ2luZm9fdXBjb21pbmdsaXN0X3RlbXBsYXRlX3RhYiddID0gJ1RoZSBsaXN0IG9mIHRlbXBsYXRlcyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIHVwY29taW5nbGlzdCB2aWV3cyc7CiRsYW5nWyd1cGNvbWluZ2xpc3R0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnQWRkL0VkaXQgYW4gVXBjb21pbmdsaXN0IERpc3BsYXkgVGVtcGxhdGUnOwokbGFuZ1snaW5mb19zeXNkZmx0X3VwY29taW5nbGlzdF90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IFVwY29taW5nbGlzdCBUZW1wbGF0ZSc7CiRsYW5nWydpbmZvX2xpc3RfdGVtcGxhdGVfdGFiJ10gPSAnVGhlIGxpc3Qgb2YgdGVtcGxhdGVzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgbGlzdCB2aWV3cyc7CiRsYW5nWydsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ0FkZC9FZGl0IGFuIExpc3QgRGlzcGxheSBUZW1wbGF0ZSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfbGlzdF90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IExpc3QgVGVtcGxhdGUnOwokbGFuZ1snaW5mb19ldmVudF90ZW1wbGF0ZV90YWInXSA9ICdUaGUgbGlzdCBvZiB0ZW1wbGF0ZXMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBldmVudCB2aWV3cyc7CiRsYW5nWydldmVudHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZGQvRWRpdCBhbiBFdmVudCBEaXNwbGF5IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9ldmVudF90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IEV2ZW50IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fY2FsZW5kYXJfdGVtcGxhdGVfdGFiJ10gPSAnVGhlIGxpc3Qgb2YgdGVtcGxhdGVzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgY2FsZW5kYXIgdmlld3MnOwokbGFuZ1snY2FsZW5kYXJ0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnQWRkL0VkaXQgYSBDYWxlbmRhciBEaXNwbGF5IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IENhbGVuZGFyIFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF90ZW1wbGF0ZSddID0gJ1RoaXMgZm9ybSBkZWZpbmVzIHRoZSB0ZW1wbGF0ZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIHlvdSBjbGljayAiTmV3IFRlbXBsYXRlIiBpbiB0aGUgYXBwcm9wcmlhdGUgdGFiLiAgQ2hhbmdpbmcgdGhpcyB2YWx1ZSB3aWxsIGhhdmUgbm8gaW1tZWRpYXRlIGVmZmVjdCBvbiB0aGUgZGlzcGxheXMgZ2VuZXJhdGVkIGZyb20gdGhpcyBtb2R1bGUuJzsKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudEFkZGVkJ10gPSAn0JLRi9C30YvQstCw0LXRgtGB0Y8g0L/QvtGB0LvQtSDQtNC+0LHQsNCy0LvQtdC90LjRjyDRgdC+0LHRi9GC0LjRjyDQutCw0LvQtdC90LTQsNGA0Y8nOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RWRpdGVkJ10gPSAn0JLRi9C30YvQstCw0LXRgtGB0Y8g0L/QvtGB0LvQtSDQuNC30LzQtdC90LXQvdC40Y8g0YHRg9GJ0LXRgdGC0LLRg9GO0YnQtdCz0L4g0YHQvtCx0YvRgtC40Y8g0LrQsNC70LXQvdC00LDRgNGPJzsKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudERlbGV0ZWQnXSA9ICfQktGL0LfRi9Cy0LDQtdGC0YHRjyDQv9C+0YHQu9C1INGD0LTQsNC70LXQvdC40Y8g0YHQvtCx0YvRgtC40Y8nOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5QWRkZWQnXSA9ICfQktGL0LfRi9Cy0LDQtdGC0YHRjyDQv9C+0YHQu9C1INGB0L7Qt9C00LDQvdC40Y8g0LrQsNGC0LXQs9C+0YDQuNC4JzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUVkaXRlZCddID0gJ9CS0YvQt9GL0LLQsNC10YLRgdGPINC/0L7RgdC70LUg0YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjRjyDQutCw0YLQtdCz0L7RgNC40LgnOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5RGVsZXRlZCddID0gJ9CS0YvQt9GL0LLQsNC10YLRgdGPINC/0L7RgdC70LUg0YPQtNCw0LvQtdC90LjRjyDQutCw0YLQtdCz0L7RgNC40LgnOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50QWRkZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBldmVudCBpcyBhZGRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XFwiZXZlbnRfdGl0bGVcXCIgLSBFdmVudCBUaXRsZTwvbGk+DQo8bGk+XFwiZXZlbnRfc3VtbWFyeVxcIiAtIFN1bW1hcnkgVGV4dDwvbGk+DQo8bGk+XFwiZXZlbnRfZGV0YWlsc1xcIiAtIERldGFpbGVkIERlc2NyaXB0aW9uPC9saT4NCjxsaT5cXCJldmVudF9kYXRlX3N0YXJ0XFwiIC0gVGhlIGV2ZW50IHN0YXJ0IGRhdGUvdGltZTwvbGk+DQo8bGk+XFwiZXZlbnRfZGF0ZV9lbmRcXCIgLSBUaGUgZXZlbnQgZW5kIGRhdGUvdGltZTwvbGk+DQo8bGk+XFwiZXZlbnRfY3JlYXRlZF9ieVxcIiAtIFRoZSB1c2VyaWQgb2YgdGhlIGF1dGhvcjwvbGk+DQo8bGk+XFwiZXZlbnRfaWRcXCIgLSBUaGUgZXZlbnQgaWQ8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtRXZlbnRFZGl0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBldmVudCBpcyBlZGl0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlxcImV2ZW50X3RpdGxlXFwiIC0gRXZlbnQgVGl0bGU8L2xpPg0KPGxpPlxcImV2ZW50X3N1bW1hcnlcXCIgLSBTdW1tYXJ5IFRleHQ8L2xpPg0KPGxpPlxcImV2ZW50X2RldGFpbHNcXCIgLSBEZXRhaWxlZCBEZXNjcmlwdGlvbjwvbGk+DQo8bGk+XFwiZXZlbnRfZGF0ZV9zdGFydFxcIiAtIFRoZSBldmVudCBzdGFydCBkYXRlL3RpbWU8L2xpPg0KPGxpPlxcImV2ZW50X2RhdGVfZW5kXFwiIC0gVGhlIGV2ZW50IGVuZCBkYXRlL3RpbWU8L2xpPg0KPGxpPlxcImV2ZW50X2NyZWF0ZWRfYnlcXCIgLSBUaGUgdXNlcmlkIG9mIHRoZSBhdXRob3I8L2xpPg0KPGxpPlxcImV2ZW50X2lkXFwiIC0gVGhlIGV2ZW50IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50RGVsZXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIGRlbGV0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlxcImV2ZW50X2lkXFwiIC0gVGhlIGV2ZW50IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5QWRkZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBjYXRlZ29yeSBpcyBhZGRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XFwiY2F0ZWdvcnlfaWRcXCIgLSBUaGUgY2F0ZWdvcnkgaWQ8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlFZGl0ZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBjYXRlZ29yeSBpcyBlZGl0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlxcImNhdGVnb3J5X2lkXFwiIC0gVGhlIGNhdGVnb3J5IGlkPC9saT4NCjxsaT5cXCJjYXRlZ29yeV9uYW1lXFwiIC0gVGhlIGNhdGVnb3J5IG5hbWU8L2xpPg0KPGxpPlxcImNhdGVnb3J5X29yZGVyXFwiIC0gVGhlIGNhdGVnb3J5IHNvcnQgb3JkZXI8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgY2F0ZWdvcnkgaXMgZGVsZXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XFwiY2F0ZWdvcnlfaWRcXCIgLSBUaGUgY2F0ZWdvcnkgaWQ8L2xpPg0KPGxpPlxcImNhdGVnb3J5X25hbWVcXCIgLSBUaGUgY2F0ZWdvcnkgbmFtZTwvbGk+DQo8bGk+XFwiY2F0ZWdvcnlfb3JkZXJcXCIgLSBUaGUgY2F0ZWdvcnkgc29ydCBvcmRlcjwvbGk+DQo8L3VsPg0KJzsKJGxhbmdbJ21zZ19ldmVudGFkZGVkJ10gPSAn0KHQvtCx0YvRgtC1INC00L7QsdCw0LLQu9C10L3Qvic7CiRsYW5nWydlcnJvcl9ub2V2ZW50bmFtZSddID0gJ0EgbmFtZSBmb3IgdGhlIGV2ZW50IGlzIHJlcXVpcmVkJzsKJGxhbmdbJ2Vycm9yX25vdXBsb2FkJ10gPSAn0J7QqNCY0JHQmtCQOiDQl9Cw0LPRgNGD0LbQtdC90L3Ri9C5INGE0LDQudC7INC90LUg0L3QsNC50LTQtdC9JzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRmaWxlbmFtZSddID0gJ9Ce0KjQmNCR0JrQkDog0JfQsNCz0YDRg9C20LXQvdC90YvQuSDRhNCw0LnQuyDQvdC1INC80L7QttC10YIg0LHRi9GC0Ywg0L/RgNC40L3Rj9GCJzsKJGxhbmdbJ2Vycm9yX3Byb2JsZW13aXRodXBsb2FkJ10gPSAn0J7QqNCY0JHQmtCQOiDQn9GA0L7QsdC70LXQvNCwINC/0YDQuCDQv9C+0L/Ri9GC0LrQtSDQt9Cw0LPRgNGD0LfQuNGC0Ywg0YTQsNC50LsnOwokbGFuZ1snZXJyb3JfZmlsZWNvcHlmYWlsZWQnXSA9ICdFUlJPUjogQSBQcm9ibGVtIG9jY3VycmVkIHdoZW4gY29weWluZyB0aGUgZmlsZSB0byBpdHMgZmluYWwgZGVzdGluYXRpb24nOwokbGFuZ1snZXJyb3JfZmlsZWV4aXN0cyddID0gJ9Ce0KjQmNCR0JrQkDog0KTQsNC50Lsg0YEg0YLQsNC60LjQvCDQuNC80LXQvdC10Lwg0YPQttC1INGB0YPRidC10YHRgtCy0YPQtdGCJzsKJGxhbmdbJ2Vycm9yX2NzdmZpbGVub3Rmb3VuZCddID0gJ9Ce0KjQmNCR0JrQkDog0J3QtSDRg9C00LDQu9C+0YHRjCDQvdCw0LnRgtC4IENTViDRhNCw0LnQuyc7CiRsYW5nWydlcnJvcl9jYW50b3BlbmZpbGUnXSA9ICfQntCo0JjQkdCa0JA6INCd0LUg0YPQtNCw0LXRgtGB0Y8g0L7RgtC60YDRi9GC0Ywg0YTQsNC50LsnOwokbGFuZ1snZXJyb3JfY2F0ZWdvcnlleGlzdHMnXSA9ICdFUlJPUjogQSBjYXRlZ29yeSB3aXRoIHRoZSBuYW1lICVzIGFscmVhZHkgZXhpc3RzJzsKJGxhbmdbJ2NhbF9pZCddID0gJ0lkJzsKJGxhbmdbJ2NhbF9jYWxlbmRhciddID0gJ9Ca0LDQu9C10L3QtNCw0YDRjCc7CiRsYW5nWydjYWxfZGVmYXVsdF90ZW1wbGF0ZXMnXSA9ICdEZWZhdWx0IFRlbXBsYXRlcyc7CiRsYW5nWydjYWxfZGVzY3JpcHRpb24nXSA9ICfQntC/0LjRgdCw0L3QuNC1JzsKJGxhbmdbJ2NhbF9hZGRldmVudCddID0gJ9CU0L7QsdCw0LLQuNGC0Ywg0YHQvtCx0YvRgtC40LUnOwokbGFuZ1snY2FsX2ltcG9ydF9ldmVudHMnXSA9ICfQmNC80L/QvtGA0YIg0YHQvtCx0YvRgtC40LknOwokbGFuZ1snY2FsX2V2ZW50cyddID0gJ9Ch0L7QsdGL0YLQuNGPJzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzJ10gPSAn0JrQsNGC0LXQs9C+0YDQuNC4JzsKJGxhbmdbJ2NhbF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ9Co0LDQsdC70L7QvSDQutCw0LvQtdC90LTQsNGA0Y8nOwokbGFuZ1snY2FsX2xpc3RfdGVtcGxhdGUnXSA9ICfQodC/0LjRgdC+0Log0YjQsNCx0LvQvtC90L7Qsic7CiRsYW5nWydjYWxfdXBjb21pbmdsaXN0X3RlbXBsYXRlJ10gPSAnVXBjb21pbmcgVGVtcGxhdGUnOwokbGFuZ1snY2FsX2V2ZW50X3RlbXBsYXRlJ10gPSAn0KjQsNCx0LvQvtC9INGB0L7QsdGL0YLQuNGPJzsKJGxhbmdbJ2NhbF9zZXR0aW5ncyddID0gJ9Cd0LDRgdGC0YDQvtC50LrQuCc7CiRsYW5nWydjYWxfcHJldiddID0gJ8KrINCf0YDQtdC00YvQtNGD0YnQuNC5JzsKJGxhbmdbJ2NhbF9uZXh0J10gPSAn0KHQu9C10LTRg9GO0YnQuNC5IMK7JzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzX3VwZGF0ZWQnXSA9ICfQmtCw0YLQtdCz0L7RgNC40Lgg0L7QsdC90L7QstC70LXQvdGLJzsKJGxhbmdbJ2NhbF9zZXR0aW5nc191cGRhdGVkJ10gPSAn0J3QsNGB0YLRgNC+0LnQutC4INC+0LHQvdC+0LLQu9C10L3Riyc7CiRsYW5nWydjYWxfYWRkX2V2ZW50J10gPSAn0JTQvtCx0LDQstC40YLRjCDRgdC+0LHRi9GC0LjQtSc7CiRsYW5nWydjYWxfZWRpdCddID0gJ9Cg0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMJzsKJGxhbmdbJ2NhbF9kZWxldGUnXSA9ICfQo9C00LDQu9C40YLRjCc7CiRsYW5nWydjYWxfYXJleW91c3VyZSddID0gJ9CS0Ysg0YPQstC10YDQtdC90YssINGH0YLQviDRhdC+0YLQuNGC0LUg0YPQtNCw0LvQuNGC0YwnOwokbGFuZ1snY2FsX3VwZGF0ZV90ZW1wbGF0ZSddID0gJ9Ce0LHQvdC+0LLQuNGC0Ywg0YjQsNCx0LvQvtC9JzsKJGxhbmdbJ2NhbF9zdW5kYXknXSA9ICfQktC+0YHQutGA0LXRgdC10L3RjNC1JzsKJGxhbmdbJ2NhbF9tb25kYXknXSA9ICfQn9C+0L3QtdC00LXQu9GM0L3QuNC6JzsKJGxhbmdbJ2NhbF90dWVzZGF5J10gPSAn0JLRgtC+0YDQvdC40LonOwokbGFuZ1snY2FsX3dlZG5lc2RheSddID0gJ9Ch0YDQtdC00LAnOwokbGFuZ1snY2FsX3RodXJzZGF5J10gPSAn0KfQtdGC0LLQtdGA0LMnOwokbGFuZ1snY2FsX2ZyaWRheSddID0gJ9Cf0Y/RgtC90LjRhtCwJzsKJGxhbmdbJ2NhbF9zYXR1cmRheSddID0gJ9Ch0YPQsdCx0L7RgtCwJzsKJGxhbmdbJ2NhbF9zdW4nXSA9ICfQktGBJzsKJGxhbmdbJ2NhbF9tb24nXSA9ICfQn9C9JzsKJGxhbmdbJ2NhbF90dWVzJ10gPSAn0JLRgic7CiRsYW5nWydjYWxfd2VkJ10gPSAn0KHRgCc7CiRsYW5nWydjYWxfdGh1cnMnXSA9ICfQp9GCJzsKJGxhbmdbJ2NhbF9mcmknXSA9ICfQn9GCJzsKJGxhbmdbJ2NhbF9zYXQnXSA9ICfQodCxJzsKJGxhbmdbJ2NhbF9qYW51YXJ5J10gPSAn0K/QvdCy0LDRgNGMJzsKJGxhbmdbJ2NhbF9mZWJydWFyeSddID0gJ9Ck0LXQstGA0LDQu9GMJzsKJGxhbmdbJ2NhbF9tYXJjaCddID0gJ9Cc0LDRgNGCJzsKJGxhbmdbJ2NhbF9hcHJpbCddID0gJ9CQ0L/RgNC10LvRjCc7CiRsYW5nWydjYWxfbWF5J10gPSAn0JzQsNC5JzsKJGxhbmdbJ2NhbF9qdW5lJ10gPSAn0JjRjtC90YwnOwokbGFuZ1snY2FsX2p1bHknXSA9ICfQmNGO0LvRjCc7CiRsYW5nWydjYWxfYXVndXN0J10gPSAn0JDQstCz0YPRgdGCJzsKJGxhbmdbJ2NhbF9zZXB0ZW1iZXInXSA9ICfQodC10L3RgtGP0LHRgNGMJzsKJGxhbmdbJ2NhbF9vY3RvYmVyJ10gPSAn0J7QutGC0Y/QsdGA0YwnOwokbGFuZ1snY2FsX25vdmVtYmVyJ10gPSAn0J3QvtGP0LHRgNGMJzsKJGxhbmdbJ2NhbF9kZWNlbWJlciddID0gJ9CU0LXQutCw0LHRgNGMJzsKJGxhbmdbJ2NhbF9hZGQnXSA9ICfQlNC+0LHQsNCy0LjRgtGMJzsKJGxhbmdbJ2NhbF91cGRhdGUnXSA9ICfQntCx0L3QvtCy0LjRgtGMJzsKJGxhbmdbJ2NhbF9ldmVudCddID0gJ9Ch0L7QsdGL0YLQuNC1JzsKJGxhbmdbJ2NhbF9kYXRlJ10gPSAn0JTQsNGC0LAnOwokbGFuZ1snY2FsX3N1bW1hcnknXSA9ICcg0KDQtdC30Y7QvNC1JzsKJGxhbmdbJ2NhbF9kZXRhaWxzJ10gPSAn0J/QvtC00YDQvtCx0L3Qvic7CiRsYW5nWydjYWxfbW9yZSddID0gJ9C/0L7QtNGA0L7QsdC90LXQtSA+Pic7CiRsYW5nWydjYWxfcmV0dXJuJ10gPSAn0JLQtdGA0L3Rg9GC0YzRgdGPJzsKJGxhbmdbJ2NhbF90byddID0gJ9CyJzsKJGxhbmdbJ2NhbF9wYXN0X2V2ZW50cyddID0gJ9Cf0YDQvtGI0LXQtNGI0LjQtSDRgdC+0LHRi9GC0LjRjyc7CiRsYW5nWydjYWxfdXBjb21pbmdfZXZlbnRzJ10gPSAn0J/RgNC10LTRgdGC0L7Rj9GJ0LjQtSDRgdC+0LHRi9GC0LjRjyc7CiRsYW5nWydjYWxfYW55X2NhdGVnb3J5J10gPSAn0JvRjtCx0LDRjyDQutCw0YLQtdCz0L7RgNC40Y8nOwokbGFuZ1snY2FsX3Nob3dfb25seV9ldmVudHNfaW4nXSA9ICfQn9C+0LrQsNC30LDRgtGMINGC0L7Qu9GM0LrQviDRgdC+0LHRi9GC0LjRjyDQsic7CiRsYW5nWydjYWxfZmlsdGVyX2J5J10gPSAn0KTQuNC70YzRgtGAINC/0L4nOwokbGFuZ1snY2FsX2dvJ10gPSAn0J/QtdGA0LXQudGC0LgnOwokbGFuZ1snY2FsX3RpdGxlJ10gPSAn0JfQsNCz0L7Qu9C+0LLQvtC6JzsKJGxhbmdbJ2NhbF9mcm9tZGF0ZSddID0gJ9Ce0YIg0LTQsNGC0YsnOwokbGFuZ1snY2FsX3RvZGF0ZSddID0gJ9CU0L4g0LTQsNGC0YsnOwokbGFuZ1snY2FsX3VwZGF0ZV9jYXRlZ29yaWVzJ10gPSAn0J7QsdC90L7QstC40YLRjCDQutCw0YLQtdCz0L7RgNC40LgnOwokbGFuZ1snY2FsX2xhbmd1YWdlJ10gPSAn0K/Qt9GL0LonOwokbGFuZ1snY2FsX3VwZGF0ZXNldHRpbmdzJ10gPSAn0J7QsdC90L7QstC40YLRjCDQvdCw0YHRgtGA0L7QudC60LgnOwokbGFuZ1snY2FsX3VzZV90d2VsdmVfaG91cl9jbG9jayddID0gJ1VzZSB0d2VsdmUgaG91ciBjbG9jayBvbiBob3VyIGRyb3AtZG93bnM/JzsKJGxhbmdbJ2NhbF9kZWZhdWx0X2NhdGVnb3J5J10gPSAn0JrQsNGC0LXQs9C+0YDQuNGPINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOJzsKJGxhbmdbJ2NhbF91cGRhdGVfZmllbGRzJ10gPSAn0J7QsdC90L7QstC40YLRjCDQv9C+0LvRjyc7CiRsYW5nWydmb3JjZV9jYXRlZ29yeSddID0gJ0ZvcmNlIGF0IGxlYXN0IG9uZSBjYXRlZ29yeSc7CiRsYW5nWydzaG93cGFzdHllYXJzJ10gPSAnSG93IG1hbnkgeWVhcnMgaW4gdGhlIHBhc3QgaXMgYWxsb3dlZCc7CiRsYW5nWydzaG93ZnV0dXJleWVhcnMnXSA9ICdIb3cgbWFueSB5ZWFyIGludG8gdGhlIGZ1dHVyZSBpcyBhbGxvd2VkJzsKJGxhbmdbJ2hpZGVzdW1tYXJ5J10gPSAnU2hvdWxkIHRoZSBzdW1tYXJ5IGZpZWxkIGJlIGhpZGRlbic7CiRsYW5nWydoaWRlY29udGVudCddID0gJ1Nob3VsZCB0aGUgY29udGVudCBmaWVsZCBiZSBoaWRkZW4nOwokbGFuZ1snY2F0ZWdvcnlfcmVtaW5kZXInXSA9ICdQbGVhc2UgY2hlY2sgb25lIG9yIG1vcmUgY2F0ZWdvcmllcyBmb3IgdGhpcyBldmVudCc7CiRsYW5nWydtb2R1bGVfZXhhbXBsZV9zdHlsZXNoZWV0J10gPSAn0J/RgNC40LzQtdGAIENTUyDQutCw0LvQtdC90LTQsNGA0Y8nOwokbGFuZ1snZXJyb3JfcGVybWlzc2lvbiddID0gJ1lvdSBuZWVkIHRoZSBhcHByb3ByaWF0ZSBwZXJtaXNzaW9uICglcykgdG8gYWNjZXNzIHRoaXMgZnVuY3Rpb25hbGl0eSc7CiRsYW5nWydpbnN0YWxsX3Bvc3RtZXNzYWdlJ10gPSAnTWFrZSBzdXJlIHRvIHNldCB0aGUgIk1vZGlmeSBDYWxlbmRhciIgcGVybWlzc2lvbiBvbiB1c2VycyB3aG8gd2lsbCBiZSBhZG1pbmlzdGVyaW5nIGNhbGVuZGFyIGV2ZW50cy4nOwokbGFuZ1snZGVsZXRldGFnZ2VkJ10gPSAn0KPQtNCw0LvQuNGC0Ywg0L7RgtC80LXRh9C10L3QvdGL0LUg0YHQvtCx0YvRgtC40Y8nOwokbGFuZ1snY29uZmlybWRlbGV0ZXRhZ2dlZCddID0gJ9CS0Ysg0YPQstC10YDQtdC90YssINGH0YLQviDRjdGC0Lgg0YHQvtCx0YvRgtC40Y8g0LTQvtC70LbQvdGLINCx0YvRgtGMINGD0LTQsNC70LXQvdGLPyc7CiRsYW5nWyd0YWdnZWRkZWxldGVkJ10gPSAn0J7RgtC80LXRh9C10L3QvdGL0LUg0YHQvtCx0YvRgtC40Y8g0YPQtNCw0LvQtdC90YsnOwokbGFuZ1sndGVtcGxhdGVzJ10gPSAn0KjQsNCx0LvQvtC90YsnOwokbGFuZ1sndGVtcGxhdGVfaGVscCddID0gJ9Ch0L/RgNCw0LLQutCwINGI0LDQsdC70L7QvdCwJzsKJGxhbmdbJ2ZpbGVfdGVtcGxhdGVzJ10gPSAn0KTQsNC50Lsg0YjQsNCx0LvQvtC90LAnOwokbGFuZ1snYWRkdGVtcGxhdGUnXSA9ICfQlNC+0LHQsNCy0LjRgtGMINGI0LDQsdC70L7QvSc7CiRsYW5nWyd0ZW1wbGF0ZSddID0gJ9Co0LDQsdC70L7QvSc7CiRsYW5nWyd0ZW1wbGF0ZW5hbWV0ZXh0J10gPSAn0JjQvNGPINGI0LDQsdC70L7QvdCwJzsKJGxhbmdbJ2VkaXR0ZW1wbGF0ZSddID0gJ9Cg0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMINGI0LDQsdC70L7QvSc7CiRsYW5nWydkZWxldGV0ZW1wbGF0ZSddID0gJ9Cj0LTQsNC70LjRgtGMINGI0LDQsdC70L7QvSc7CiRsYW5nWyduZXd0ZW1wbGF0ZSddID0gJ9CY0LzRjyDQvdC+0LLQvtCz0L4g0YjQsNCx0LvQvtC90LAnOwokbGFuZ1sndGVtcGxhdGVuYW1lZXhpc3RzJ10gPSAn0J7RiNC40LHQutCwOiDQqNCw0LHQu9C+0L0g0YEg0YLQsNC60LjQvCDQuNC80LXQvdC10Lwg0YPQttC1INGB0YPRidC10YHRgtCy0YPQtdGCLiDQn9C+0LbQsNC70YPQudGB0YLQsCwg0LLRi9Cx0LXRgNC40YLQtSDQtNGA0YPQs9C+0LUg0LjQvNGPLic7CiRsYW5nWyd0ZW1wbGF0ZWltcG9ydGVkJ10gPSAn0K3RgtC+0YIg0YjQsNCx0LvQvtC9INGD0YHQv9C10YjQvdC+INC40LzQv9C+0YDRgtC40YDQvtCy0LDQvSDQsiDQsdCw0LfRgyDQtNCw0L3QvdGL0YUsINC4INCyINC90LDRgdGC0L7Rj9GJ0LXQtSDQstGA0LXQvNGPINGD0YHRgtCw0L3QvtCy0LvQtdC9INC00LvRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjy4nOwokbGFuZ1sndmlld19kZWZhdWx0X3N0eWxlc2hlZXQnXSA9ICfQn9GA0L7RgdC80L7RgtGAINGC0LDQsdC70LjRhtGLINGB0YLQuNC70LXQuSDQv9C+INGD0LzQvtC70YfQsNC90LjRjic7CiRsYW5nWydmaWxlbmFtZSddID0gJ9CY0LzRjyDRhNCw0LnQu9CwJzsKJGxhbmdbJ2ltcG9ydHRlbXBsYXRlJ10gPSAn0JjQvNC+0YDRgiDRiNCw0LHQu9C+0L3QsCc7CiRsYW5nWyd0ZW1wbGF0ZV9kZWxldGVkJ10gPSAn0KjQsNCx0LvQvtC9INGD0LTQsNC70LXQvSDQuNC3INCx0LDQt9GLINC00LDQvdC90YvRhS4nOwokbGFuZ1sndXBkYXRldGVtcGxhdGVzdWNjZXNzJ10gPSAn0KjQsNCx0LvQvtC9INGD0YHQv9C10YjQvdC+INC+0LHQvdC+0LLQu9GR0L0nOwokbGFuZ1sndXBkYXRldGVtcGxhdGVmYWlsdXJlJ10gPSAn0J/RgNC+0LjQt9C+0YjQu9CwINC+0YjQuNCx0LrQsCDQvtCx0L3QvtCy0LvQtdC90LjRjyDRiNCw0LHQu9C+0L3QsCc7CiRsYW5nWydzZXR0aW5nc3NhdmVkJ10gPSAn0J3QsNGB0YLRgNC+0LnQutC4INGD0YHQv9C10YjQvdC+INGB0L7RhdGA0LDQvdC10L3Riyc7CiRsYW5nWydjYXRlZ29yeWRlbGV0ZWQnXSA9ICfQmtCw0YLQtdCz0L7RgNC40Y8g0YPQtNCw0LvQtdC90LAnOwokbGFuZ1snY2F0ZWdvcnl1cGRhdGVkJ10gPSAn0JrQsNGC0LXQs9C+0YDQuNGPINC+0LHQvdC+0LLQu9C10L3QsCc7CiRsYW5nWydjYXRlZ29yeWFkZGVkJ10gPSAn0JrQsNGC0LXQs9C+0YDQuNGPINC00L7QsdCw0LLQu9C10L3QsCc7CiRsYW5nWydldmVudGRlbGV0ZWQnXSA9ICfQodC+0LHRi9GC0LjQtSDRg9C00LDQu9C10L3Qvic7CiRsYW5nWydldmVudHVwZGF0ZWQnXSA9ICfQodC+0LHRi9GC0LjQtSDQvtCx0L3QvtCy0LvQtdC90L4nOwokbGFuZ1snZGVmYXVsdF9wYWdlX2Vycm9yJ10gPSAn0J7RiNC40LHQutCwOiDQktGLINC00L7Qu9C20L3RiyDQv9GA0LjQstC10YHRgtC4INCyINC/0L7RgNGP0LTQvtC6INGB0YLRgNCw0L3QuNGG0YMg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4sINGH0YLQvtCx0Ysg0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMINCa0LDQu9C10L3QtNCw0YDRjCDRgSDQutGA0LDRgdC40LLRi9C80LggVVJMLiDQn9C+0LbQsNC70YPQudGB0YLQsCDQstC+0LnQtNC40YLQtSDQsiDQvdCw0YHRgtGA0L7QudC60Lgg0JrQsNC70LXQvdC00LDRgNGPINC4INCy0YvQsdC10YDQuNGC0LUg0Y3RgtGDINC30LDQutC70LDQtNC60YMuJzsKJGxhbmdbJ3RpbWVfYXQnXSA9ICfQsic7CiRsYW5nWyd0eXBlJ10gPSAn0KLQuNC/JzsKJGxhbmdbJ25hbWUnXSA9ICfQmNC80Y8nOwokbGFuZ1snb3JkZXInXSA9ICfQn9C+0YDRj9C00L7Quic7CiRsYW5nWydmaWVsZGFkZGVkJ10gPSAn0J/QvtC70LUg0YPRgdC/0LXRiNC90L4g0LTQvtCx0LDQstC70LXQvdC+JzsKJGxhbmdbJ2ZpZWxkZGVsZXRlZCddID0gJ9Cf0L7Qu9C1INGD0LTQsNC70LXQvdC+JzsKJGxhbmdbJ2ZpZWxkcyddID0gJ9Cf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjNGB0LrQuNC1INC/0L7Qu9GPJzsKJGxhbmdbJ3RleHRmaWVsZCddID0gJ9Ci0LXQutGB0YLQvtCy0L7QtSDQv9C+0LvQtSc7CiRsYW5nWyd1cGxvYWRmaWVsZCddID0gJ9Ck0LDQudC7INC30LDQs9GA0YPQt9C60Lgg0L/QvtC70Y8nOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICc8cD5DYWxlbmRhciBpcyBhIG1vZHVsZSBmb3IgZGlzcGxheWluZyBldmVudHMgb24geW91ciBwYWdlLiBXaGVuIHRoZQ0KCQltb2R1bGUgaXMgaW5zdGFsbGVkLCBhIENhbGVuZGFyIGFkbWluIHBhZ2UgaXMgYWRkZWQgdG8gdGhlIGNvbnRlbnQgbWVudQ0KCQl0aGF0IHdpbGwgYWxsb3cgeW91IHRvIG1hbmFnZSB5b3VyIGV2ZW50cy48L3A+JzsKJGxhbmdbJ2RlZmF1bHRjYWxlbmRhcnBhZ2UnXSA9ICdEZWZhdWx0IHBhZ2UgdGhhdCBjb250YWlucyBDYWxlbmRhci4gVGhpcyBwYWdlIG11c3QgY29udGFpbiBhIFNtYXJ0eSB0YWcgdGhhdCBjYWxscyBDYWxlbmRhci4gUmVxdWlyZWQgaWYgeW91IHVzZSB0aGUgcHJldHR5IFVSTHMuJzsKJGxhbmdbJ3VwbG9hZGRpcmVjdG9yeSddID0gJ0RpcmVjdG9yeSB3aGVyZXIgZmlsZSB1cGxvYWRzIHNob3VsZCBiZSBwbGFjZWQnOwokbGFuZ1sndXBsb2FkZmlsZXR5cGVzJ10gPSAn0KDQsNC30YDQtdGI0LXQvdC90YvQtSDRgtC40L/RiyDRhNCw0LnQu9C+0LInOwokbGFuZ1sndXBsb2FkdW5pcXVlJ10gPSAn0J7QsdC10YHQv9C10YfQuNGC0Ywg0YPQvdC40LrQsNC70YzQvdGL0LUg0LjQvNC10L3QsCDRhNCw0LnQu9C+0LInOwokbGFuZ1sndGh1bWJfd2lkdGgnXSA9ICfQqNC40YDQuNC90LAg0LzQuNC90LjQsNGC0Y7RgNGLJzsKJGxhbmdbJ3RodW1iX2hlaWdodCddID0gJ9CS0YvRgdC+0YLQsCDQvNC40L3QuNCw0YLRjtGA0LAnOwokbGFuZ1snbGFyZ2Vfd2lkdGgnXSA9ICfQndCw0LjQsdC+0LvRjNGI0LDRjyDRiNC40YDQuNC90LAg0LjQt9C+0LHRgNCw0LbQtdC90LjRjyc7CiRsYW5nWydsYXJnZV9oZWlnaHQnXSA9ICfQndCw0LjQsdC+0LvRjNGI0LDRjyDQstGL0YHQvtGC0LAg0LjQt9C+0LHRgNCw0LbQtdC90LjRjyc7CiRsYW5nWydjYWxfcmVjdXJfcGVyaW9kJ10gPSAn0J/QvtCy0YLQvtGA0Y/QtdGC0YHRjyc7CiRsYW5nWydjYWxfcmVjdXJfdW50aWwnXSA9ICfQlNC+INGC0LXRhSDQv9C+0YAsINC/0L7QutCwINC/0L7QstGC0L7RgNGP0LXRgtGB0Y8nOwokbGFuZ1snaGVscF90ZW1wbGF0ZSddID0gJzxwPjxiPtCf0LXRh9Cw0YLRjCDQuNC80LXQvdC4INCw0LLRgtC+0YDQsDo8L2I+PC9wPg0KPGNvZGU+0JDQstGC0L7RgDogeyRldmVudC5hdXRob3JuYW1lfTwvY29kZT4NCic7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/sk_SK.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ21heCddID0gJ21heCc7CiRsYW5nWyd0aW1lcyddID0gJ8SNYXMnOwokbGFuZ1snb24nXSA9ICduYSc7CiRsYW5nWydhcmV5b3VzdXJlX3VuaW5zdGFsbCddID0gJ1N0ZSBzaSBpc3QmeWFjdXRlOz8gUG9rcmHEjW92YW4maWFjdXRlO20gb2RzdHImYWFjdXRlO25pdGUgdiZzY2Fyb247ZXRreSBkYXRhIHMmdWFjdXRlO3Zpc2lhY2UgcyB0JnlhY3V0ZTttdG8gbW9kdWxvbS4gICc7CiRsYW5nWydwb3N0X3VuaW5zdGFsbCddID0gJ01vZHVsIGthbGVuZCZhYWN1dGU7cmEgYm9sIG9kaW4mc2Nhcm9uO3RhbG92YW4meWFjdXRlOyBhIHYmc2Nhcm9uO2V0a3kgdWRhbG9zdGkgYSAmc2Nhcm9uO2FibCZvYWN1dGU7bnkgcHJpcmFkZW4mZWFjdXRlOyBrIHRvbXV0byBtb2R1bHUgYm9saSBvZHN0ciZhYWN1dGU7bmVuJmVhY3V0ZTsuJzsKJGxhbmdbJ2ZpZWxkdXBkYXRlZCddID0gJ1BvbGUgdXByYXZlbiZlYWN1dGU7JzsKJGxhbmdbJ2V2ZXJ5J10gPSAnS2HFvmQmeWFjdXRlOyc7CiRsYW5nWydvciddID0gJ2FsZWJvJzsKJGxhbmdbJ3VwZGF0ZV9jaGlsZHJlbiddID0gJ1VwcmF2IHZub3JlbiZlYWN1dGU7IHVkYWxvc3RpJzsKJGxhbmdbJ2Vycm9yX25vY2F0ZWdvcnknXSA9ICdNdXMmaWFjdXRlO3RlIHZ5YnJhxaUgbWluaW0mYWFjdXRlO2xuZSBqZWRudSBrYXRlZyZvYWN1dGU7cml1JzsKJGxhbmdbJ2Vycm9yX25vdGhpbmdzZWxlY3RlZCddID0gJ1ByZSBvZHN0ciZhYWN1dGU7bmVuaWUgbmVib2xpIHZ5YnJhbiZlYWN1dGU7IMW+aWFkbmUgcG9sb8Wla3knOwokbGFuZ1snZXJyb3JfZXZlbnRvdmVybGFwJ10gPSAnUGFyYW1ldHJlIHByZSBvcGFrb3ZhbmllIG0mb2NpcmM7xb51IHNwJm9jaXJjO3NvYmnFpSB2byB2JnlhY3V0ZTtwaXNlIHByZWtyJnlhY3V0ZTt2YW5pZSB1ZGFsb3N0JmlhY3V0ZTsnOwokbGFuZ1sncmVjdXJzJ10gPSAnT3Bha292YW5pZSc7CiRsYW5nWydlcnJvcl9pbnZhbGlkX2RhdGVzJ10gPSAnVmxvxb5lbiZlYWN1dGU7IGhvZG5vdHkgZCZhYWN1dGU7dHVtb3YgcyZ1YWN1dGU7IG5lcGxhdG4mZWFjdXRlOyc7CiRsYW5nWydzdW5kYXknXSA9ICdOZWRlxL5hJzsKJGxhbmdbJ21vbmRheSddID0gJ1BvbmRlbG9rJzsKJGxhbmdbJ3R1ZXNkYXknXSA9ICdVdG9yb2snOwokbGFuZ1snd2VkbmVzZGF5J10gPSAnU3RyZWRhJzsKJGxhbmdbJ3RodXJzZGF5J10gPSAnJlNjYXJvbjt0dnJ0b2snOwokbGFuZ1snZnJpZGF5J10gPSAnUGlhdG9rJzsKJGxhbmdbJ3NhdHVyZGF5J10gPSAnU29ib3RhJzsKJGxhbmdbJ2FiYnJfc3VuZGF5J10gPSAnTmUnOwokbGFuZ1snYWJicl9tb25kYXknXSA9ICdQbyc7CiRsYW5nWydhYmJyX3R1ZXNkYXknXSA9ICdVdCc7CiRsYW5nWydhYmJyX3dlZG5lc2RheSddID0gJ1N0JzsKJGxhbmdbJ2FiYnJfdGh1cnNkYXknXSA9ICcmU2Nhcm9uO3QnOwokbGFuZ1snYWJicl9mcmlkYXknXSA9ICdQaSc7CiRsYW5nWydhYmJyX3NhdHVyZGF5J10gPSAnU28nOwokbGFuZ1snd2Vla2RheXMnXSA9ICdQcmFjb3ZuJmVhY3V0ZTsgZG5pJzsKJGxhbmdbJ3BsdXJhbF9kYWlseSddID0gJ0Rlbm5lJzsKJGxhbmdbJ3BsdXJhbF93ZWVrbHknXSA9ICdUJnlhY3V0ZTvFvmRlbm5lJzsKJGxhbmdbJ3BsdXJhbF9tb250aGx5J10gPSAnTWVzYcSNbmUnOwokbGFuZ1sncGx1cmFsX3llYXJseSddID0gJ1JvxI1uZSc7CiRsYW5nWydubyddID0gJ05pZSc7CiRsYW5nWydkYWlseSddID0gJ0Rlbm5lJzsKJGxhbmdbJ3dlZWtseSddID0gJ1QmeWFjdXRlO8W+ZGVubmUnOwokbGFuZ1snbW9udGhseSddID0gJ01lc2HEjW5lJzsKJGxhbmdbJ3llYXJseSddID0gJ1JvxI1uZSc7CiRsYW5nWydpbnRlcnZhbCddID0gJ09wYWtvdmHFpSc7CiRsYW5nWydjYWxfcmVjdXJfZGV0YWlscyddID0gJ09wYWtvdmFuaWUgZGV0YWlsdSc7CiRsYW5nWyd1bmxpbWl0ZWQnXSA9ICdOZW9ibWVkemVuJmVhY3V0ZTsnOwokbGFuZ1snbWF4X3JlY3VyX2V2ZW50cyddID0gJ01heC4gcG/EjWV0IHZub3JlbiZ5YWN1dGU7Y2ggdWRhbG9zdGknOwokbGFuZ1sndXNlX3RvX2RhdGUnXSA9ICcmU2Nhcm9uO3BlY2lmaWtvdmHFpSBwcmVzbiZ5YWN1dGU7IGtvbmllYz8nOwokbGFuZ1snY2FuY2VsJ10gPSAnWnJ1JnNjYXJvbjtpxaUnOwokbGFuZ1snc2hvd19jaGlsZF9ldmVudHMnXSA9ICdab2JyYXppxaUgdm5vcmVuJmVhY3V0ZTsgdWRhbG9zdGknOwokbGFuZ1snbi9hJ10gPSAnxb5pYWRuZSc7CiRsYW5nWydyZWN1cnNfdW50aWwnXSA9ICdPcGFrb3ZhxaUgZG8nOwokbGFuZ1sncGFyZW50J10gPSAnUm9kacSNJzsKJGxhbmdbJ3JlY3VyX3BlcmlvZCddID0gJ0RvYmEgb3Bha292YW5pYSc7CiRsYW5nWydmaWx0ZXInXSA9ICdGaWx0ZXInOwokbGFuZ1snc3RhcnRfZGF0ZSddID0gJ1phxI1pYXRvayc7CiRsYW5nWydlbmRfZGF0ZSddID0gJ0tvbmllYyc7CiRsYW5nWydpbmZvX3VwY29taW5nbGlzdF90ZW1wbGF0ZV90YWInXSA9ICdab3puYW0gJnNjYXJvbjthYmwmb2FjdXRlO24gZG9zdHVwbiZ5YWN1dGU7Y2ggcHJlIHYmeWFjdXRlO3BpcyBuYWRjaCZhYWN1dGU7ZHphaiZ1YWN1dGU7Y2ljaCB1ZGFsb3N0JmlhY3V0ZTsnOwokbGFuZ1sndXBjb21pbmdsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ1ByaWRhxaUvVXByYXZpxaUgJnNjYXJvbjthYmwmb2FjdXRlO251IHByZSB2JnlhY3V0ZTtwaXMgbmFkY2gmYWFjdXRlO2R6YWomdWFjdXRlO2NpY2ggdWRhbG9zdCZpYWN1dGU7JzsKJGxhbmdbJ2luZm9fc3lzZGZsdF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICdTeXN0JmVhY3V0ZTttb20gcHJlZG5hc3RhdmVuJmFhY3V0ZTsgJnNjYXJvbjthYmwmb2FjdXRlO25hIG5hZGNoJmFhY3V0ZTtkemFqJnVhY3V0ZTtjaWNoIHVkYWxvc3QmaWFjdXRlOyc7CiRsYW5nWydpbmZvX2xpc3RfdGVtcGxhdGVfdGFiJ10gPSAnWm96bmFtICZzY2Fyb247YWJsJm9hY3V0ZTtuIGRvc3R1cG4meWFjdXRlO2NoIHByZSB2JnlhY3V0ZTtwaXMgdWRhbG9zdCZpYWN1dGU7JzsKJGxhbmdbJ2xpc3R0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnUHJpZGHFpS9VcHJhdmnFpSAmc2Nhcm9uO2FibCZvYWN1dGU7bnUgcHJlIHYmeWFjdXRlO3Bpc3UgdWRhbG9zdCZpYWN1dGU7JzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9saXN0X3RlbXBsYXRlJ10gPSAnU3lzdCZlYWN1dGU7bW9tIHByZWRuYXN0YXZlbiZhYWN1dGU7ICZzY2Fyb247YWJsJm9hY3V0ZTtuYSB6b3puYW11IHVkYWxvc3QmaWFjdXRlOyc7CiRsYW5nWydpbmZvX2V2ZW50X3RlbXBsYXRlX3RhYiddID0gJ1pvem5hbSAmc2Nhcm9uO2FibCZvYWN1dGU7biBkb3N0dXBuJnlhY3V0ZTsgcHJlIHpvYnJhemVuaWUgZGV0YWlsdSc7CiRsYW5nWydldmVudHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdQcmlkYcWlL1VwcmF2acWlICZzY2Fyb247YWJsJm9hY3V0ZTtudSBwcmUgZGV0YWlsdSB1ZGFsb3N0aSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfZXZlbnRfdGVtcGxhdGUnXSA9ICdTeXN0JmVhY3V0ZTttb20gcHJlZG5hc3RhdmVuJmFhY3V0ZTsgJnNjYXJvbjthYmwmb2FjdXRlO25hJzsKJGxhbmdbJ2luZm9fY2FsZW5kYXJfdGVtcGxhdGVfdGFiJ10gPSAnWm96bmFtICZzY2Fyb247YWJsJm9hY3V0ZTtuIHByZSB6b2JyYXplbmllIGthbGVuZCZhYWN1dGU7cmEnOwokbGFuZ1snY2FsZW5kYXJ0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnUHJpZGHFpS9VcHJhdmnFpSAmc2Nhcm9uO2FibCZvYWN1dGU7bnUgem9icmF6ZW5pYSBrYWxlbmQmYWFjdXRlO3JhJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ1N5c3QmZWFjdXRlO21vdiZlYWN1dGU7IHByZWRuYXN0YXZlbiZlYWN1dGU7ICZzY2Fyb247YWJsJm9hY3V0ZTtueSBrYWxlbmQmYWFjdXRlO3JhJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF90ZW1wbGF0ZSddID0gJ1RlbnRvIGZvcm11bCZhYWN1dGU7ciBkZWZpbnVqZSAmc2Nhcm9uO2FibCZvYWN1dGU7bnksIGt0b3ImZWFjdXRlOyBidWQmdWFjdXRlOyBwb3XFviZpYWN1dGU7dmFuJmVhY3V0ZTsgcHJpIGthxb5kZWogemFsb8W+a2UvdGFiZSBwbyBrbGlrbnV0JmlhY3V0ZTsgbmEgJmFtcDtxdW90O05vdiZhYWN1dGU7ICZzY2Fyb247YWJsJm9hY3V0ZTtuYSZhbXA7cXVvdDsuIFptZW55IG5lYnVkJnVhY3V0ZTsgbWHFpSDFvmlhZG55IHZwbHl2IG5hIHXFviB2eWdlbmVyb3ZhbiZlYWN1dGU7ICZzY2Fyb247YWJsJm9hY3V0ZTtueS4nOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50QWRkZWQnXSA9ICdWb2xhxaUgcG8gcHJpZGFuJmlhY3V0ZTsgdWRhbG9zdGknOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RWRpdGVkJ10gPSAnVm9sYcWlIHBvIHVwcmF2ZW4maWFjdXRlOyBleGlzdHVqJnVhY3V0ZTtjZWogdWRhbG9zdGknOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RGVsZXRlZCddID0gJ1ZvbGHFpSBwbyBvZHN0ciZhYWN1dGU7bmVuJmlhY3V0ZTsgdWRhbG9zdGknOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5QWRkZWQnXSA9ICdWb2xhxaUgcG8gdnl0dm9yZW4maWFjdXRlOyBrYXRlZyZvYWN1dGU7cmllJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUVkaXRlZCddID0gJ1ZvbGHFpSBwbyB1cHJhdmVuJmlhY3V0ZTsga2F0ZWcmb2FjdXRlO3JpZSc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnVm9sYcWlIHBvIG9kc3RyJmFhY3V0ZTtuZW4maWFjdXRlOyBrYXRlZyZvYWN1dGU7cmllJzsKJGxhbmdbJ2V2ZW50aGVscC1FdmVudEFkZGVkJ10gPSAnPHA+T2Rvc2xhbiZlYWN1dGU7IHBvIHByaWRhbiZpYWN1dGU7IHVkYWxvc3RpIGRvIGthbGVuZCZhYWN1dGU7cmEuPC9wPg0KPGg0PlBhcmFtZXRyZTwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X3RpdGxlXCZxdW90OyAtIG4mYWFjdXRlO3pvdiB1ZGFsb3N0aTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X3N1bW1hcnlcJnF1b3Q7IC0ga3ImYWFjdXRlO3RreSBwb3BpczwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RldGFpbHNcJnF1b3Q7IC0gZGV0YWlsbiZ5YWN1dGU7IHBvcGlzPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9zdGFydFwmcXVvdDsgLSB6YcSNaWF0b2sgdWRhbG9zdGk8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX2VuZFwmcXVvdDsgLSBrb25pZWMgdWRhbG9zdGk8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9jcmVhdGVkX2J5XCZxdW90OyAtIGlkIGF1dG9yYTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2lkXCZxdW90OyAtIGlkIHVkYWxvc3RpPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50RWRpdGVkJ10gPSAnPHA+T2Rvc2xhbiZlYWN1dGU7IHBvIHByaWRhbiZpYWN1dGU7IGthbGVuZCZhYWN1dGU7cmEuPC9wPg0KPGg0PlBhcmFtZXRyZTwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X3RpdGxlXCZxdW90OyAtIG4mYWFjdXRlO3pvdiB1ZGFsb3N0aTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X3N1bW1hcnlcJnF1b3Q7IC0ga3ImYWFjdXRlO3RreSBwb3BpczwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RldGFpbHNcJnF1b3Q7IC0gZGV0YWlsbiZ5YWN1dGU7IHBvcGlzPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfZGF0ZV9zdGFydFwmcXVvdDsgLSB6YcSNaWF0b2sgdWRhbG9zdGk8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX2VuZFwmcXVvdDsgLSBrb25pZWMgdWRhbG9zdGk8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9jcmVhdGVkX2J5XCZxdW90OyAtIGlkIGF1dG9yYTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2lkXCZxdW90OyAtIGlkIHVkYWxvc3RpPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50RGVsZXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIGRlbGV0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtldmVudF9pZFwmcXVvdDsgLSBUaGUgZXZlbnQgaWQ8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlBZGRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGNhdGVnb3J5IGlzIGFkZGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfaWRcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5RWRpdGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgY2F0ZWdvcnkgaXMgZWRpdGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfaWRcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IGlkPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfbmFtZVwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgbmFtZTwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X29yZGVyXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBzb3J0IG9yZGVyPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5RGVsZXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGNhdGVnb3J5IGlzIGRlbGV0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9pZFwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgaWQ8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9uYW1lXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBuYW1lPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfb3JkZXJcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IHNvcnQgb3JkZXI8L2xpPg0KPC91bD4NCic7CiRsYW5nWydtc2dfZXZlbnRhZGRlZCddID0gJ1VkYWxvc8WlIHByaWRhbiZhYWN1dGU7JzsKJGxhbmdbJ2Vycm9yX25vZXZlbnRuYW1lJ10gPSAnTiZhYWN1dGU7em92IHVkYWxvc3RpIGplIG51dG4mZWFjdXRlOyB2eXBsbmnFpSc7CiRsYW5nWydlcnJvcl9ub3VwbG9hZCddID0gJ0NoeWJhOiDFvWlhZG55IG5haHImYWFjdXRlO3ZhbiZ5YWN1dGU7IHMmdWFjdXRlO2JvciBuZWJvbCBuJmFhY3V0ZTtqZGVuJnlhY3V0ZTsnOwokbGFuZ1snZXJyb3JfaW52YWxpZGZpbGVuYW1lJ10gPSAnQ2h5YmE6IE5haHImYWFjdXRlO3ZhbiZ5YWN1dGU7IHMmdWFjdXRlO2JvciBuaWUgamUgcG92b2xlbiZ5YWN1dGU7ICh1cHJlc25pdGUgZm9ybSZhYWN1dGU7dCBzJnVhY3V0ZTtib3J1IHYgbmFzdGF2ZW5pYWNoKSc7CiRsYW5nWydlcnJvcl9wcm9ibGVtd2l0aHVwbG9hZCddID0gJ0NoeWJhOiBQcm9ibCZlYWN1dGU7bSBuYXN0YWwgcHJpIHBva3VzZSBvIG5haHJhdGllIHMmdWFjdXRlO2JvcnUnOwokbGFuZ1snZXJyb3JfZmlsZWNvcHlmYWlsZWQnXSA9ICdDaHliYTogUHJvYmwmZWFjdXRlO20gbmFzdGFsIHByaSBrb3AmaWFjdXRlO3JvdmFuJmlhY3V0ZTsgcyZ1YWN1dGU7Ym9yYSBkbyBjaWXEvm92JmVhY3V0ZTtobyB1bWllc3RuZW5pYSc7CiRsYW5nWydlcnJvcl9maWxlZXhpc3RzJ10gPSAnQ2h5YmE6IFMmdWFjdXRlO2JvciBzIHQmeWFjdXRlO210byBuJmFhY3V0ZTt6dm9tIHXFviBleGlzdHVqZSc7CiRsYW5nWydlcnJvcl9jc3ZmaWxlbm90Zm91bmQnXSA9ICdDaHliYTogTmVtJm9jaXJjO8W+ZW0gbiZhYWN1dGU7anPFpSBDU1YgcyZ1YWN1dGU7Ym9yJzsKJGxhbmdbJ2Vycm9yX2NhbnRvcGVuZmlsZSddID0gJ0NoeWJhOiBOZW0mb2NpcmM7xb5lbSBvdHZvcmnFpSBzJnVhY3V0ZTtib3InOwokbGFuZ1snZXJyb3JfY2F0ZWdvcnlleGlzdHMnXSA9ICdDaHliYTogS2F0ZWcmb2FjdXRlO3JpYSBzIG4mYWFjdXRlO3p2b20gJXMgdcW+IGV4aXN0dWplJzsKJGxhbmdbJ2NhbF9pZCddID0gJ0lkJzsKJGxhbmdbJ2NhbF9jYWxlbmRhciddID0gJ0thbGVuZCZhYWN1dGU7cic7CiRsYW5nWydjYWxfZGVmYXVsdF90ZW1wbGF0ZXMnXSA9ICdQcmVkbmFzdGF2ZW4mZWFjdXRlOyAmc2Nhcm9uO2FibCZvYWN1dGU7bnknOwokbGFuZ1snY2FsX2Rlc2NyaXB0aW9uJ10gPSAnUG9waXMnOwokbGFuZ1snY2FsX2FkZGV2ZW50J10gPSAnUHJpZGHFpSB1ZGFsb3PFpSc7CiRsYW5nWydjYWxfaW1wb3J0X2V2ZW50cyddID0gJ05haW1wb3J0b3ZhxaUgdWRhbG9zdGknOwokbGFuZ1snY2FsX2V2ZW50cyddID0gJ1VkYWxvc3RpJzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzJ10gPSAnS2F0ZWcmb2FjdXRlO3JpZSc7CiRsYW5nWydjYWxfY2FsZW5kYXJfdGVtcGxhdGUnXSA9ICcmU2Nhcm9uO2FibCZvYWN1dGU7bmEga2FsZW5kJmFhY3V0ZTtyYSc7CiRsYW5nWydjYWxfbGlzdF90ZW1wbGF0ZSddID0gJyZTY2Fyb247YWJsJm9hY3V0ZTtuYSB6b3puYW11JzsKJGxhbmdbJ2NhbF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICcmU2Nhcm9uO2FsJm9hY3V0ZTtuYSBuYWRjaCZhYWN1dGU7ZHphaiZ1YWN1dGU7Y2ljaCB1ZGFsb3N0JmlhY3V0ZTsnOwokbGFuZ1snY2FsX2V2ZW50X3RlbXBsYXRlJ10gPSAnJlNjYXJvbjthYmwmb2FjdXRlO25hIGRldGFpbHUgdWRhbG9zdGknOwokbGFuZ1snY2FsX3NldHRpbmdzJ10gPSAnTmFzdGF2ZW5pYSc7CiRsYW5nWydjYWxfcHJldiddID0gJyZsYXF1bzsgUHJlZGNoJmFhY3V0ZTtkemFqJnVhY3V0ZTtjZSc7CiRsYW5nWydjYWxfbmV4dCddID0gJ05hZGNoJmFhY3V0ZTtkemFqJnVhY3V0ZTtjZSAmcmFxdW87JzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzX3VwZGF0ZWQnXSA9ICdLYXRlZyZvYWN1dGU7cmllIGFrdHVhbGl6b3ZhbiZlYWN1dGU7JzsKJGxhbmdbJ2NhbF9zZXR0aW5nc191cGRhdGVkJ10gPSAnTmFzdGF2ZW5pYSBha3R1YWxpem92YW4mZWFjdXRlOyc7CiRsYW5nWydjYWxfYWRkX2V2ZW50J10gPSAnUHJpZGFqIHVkYWxvc8WlJzsKJGxhbmdbJ2NhbF9lZGl0J10gPSAnVXByYXYnOwokbGFuZ1snY2FsX2RlbGV0ZSddID0gJ09kc3RyJmFhY3V0ZTvFiCc7CiRsYW5nWydjYWxfYXJleW91c3VyZSddID0gJ1N0ZSBzaSBpc3QmeWFjdXRlOywgxb5lIGNoY2V0ZSBvZHN0ciZhYWN1dGU7bmnFpT8nOwokbGFuZ1snY2FsX3VwZGF0ZV90ZW1wbGF0ZSddID0gJ1VwcmF2acWlICZzY2Fyb247YWJsJm9hY3V0ZTtudSc7CiRsYW5nWydjYWxfc3VuZGF5J10gPSAnTmVkZcS+YSc7CiRsYW5nWydjYWxfbW9uZGF5J10gPSAnUG9uZGVsb2snOwokbGFuZ1snY2FsX3R1ZXNkYXknXSA9ICdVdG9yb2snOwokbGFuZ1snY2FsX3dlZG5lc2RheSddID0gJ1N0cmVkYSc7CiRsYW5nWydjYWxfdGh1cnNkYXknXSA9ICcmU2Nhcm9uO3R2cnRvayc7CiRsYW5nWydjYWxfZnJpZGF5J10gPSAnUGlhdG9rJzsKJGxhbmdbJ2NhbF9zYXR1cmRheSddID0gJ1NvYm90YSc7CiRsYW5nWydjYWxfc3VuJ10gPSAnTmUnOwokbGFuZ1snY2FsX21vbiddID0gJ1BvJzsKJGxhbmdbJ2NhbF90dWVzJ10gPSAnVXQnOwokbGFuZ1snY2FsX3dlZCddID0gJ1N0JzsKJGxhbmdbJ2NhbF90aHVycyddID0gJyZTY2Fyb247dCc7CiRsYW5nWydjYWxfZnJpJ10gPSAnUGlhJzsKJGxhbmdbJ2NhbF9zYXQnXSA9ICdTbyc7CiRsYW5nWydjYWxfamFudWFyeSddID0gJ0phbnUmYWFjdXRlO3InOwokbGFuZ1snY2FsX2ZlYnJ1YXJ5J10gPSAnRmVicnUmYWFjdXRlO3InOwokbGFuZ1snY2FsX21hcmNoJ10gPSAnTWFyZWMnOwokbGFuZ1snY2FsX2FwcmlsJ10gPSAnQXByJmlhY3V0ZTtsJzsKJGxhbmdbJ2NhbF9tYXknXSA9ICdNJmFhY3V0ZTtqJzsKJGxhbmdbJ2NhbF9qdW5lJ10gPSAnSiZ1YWN1dGU7bic7CiRsYW5nWydjYWxfanVseSddID0gJ0omdWFjdXRlO2wnOwokbGFuZ1snY2FsX2F1Z3VzdCddID0gJ0F1Z3VzdCc7CiRsYW5nWydjYWxfc2VwdGVtYmVyJ10gPSAnU2VwdGVtYmVyJzsKJGxhbmdbJ2NhbF9vY3RvYmVyJ10gPSAnT2t0Jm9hY3V0ZTtiZXInOwokbGFuZ1snY2FsX25vdmVtYmVyJ10gPSAnTm92ZW1iZXInOwokbGFuZ1snY2FsX2RlY2VtYmVyJ10gPSAnRGVjZW1iZXInOwokbGFuZ1snY2FsX2FkZCddID0gJ1ByaWRhxaUnOwokbGFuZ1snY2FsX3VwZGF0ZSddID0gJ0FrdHVhbGl6b3ZhxaUnOwokbGFuZ1snY2FsX2V2ZW50J10gPSAnVWRhbG9zxaUnOwokbGFuZ1snY2FsX2RhdGUnXSA9ICdEJmFhY3V0ZTt0dW0nOwokbGFuZ1snY2FsX3N1bW1hcnknXSA9ICdTJnVhY3V0ZTtocm4nOwokbGFuZ1snY2FsX2RldGFpbHMnXSA9ICdEZXRhaWx5JzsKJGxhbmdbJ2NhbF9tb3JlJ10gPSAndmlhYyA+Pic7CiRsYW5nWydjYWxfcmV0dXJuJ10gPSAnTiZhYWN1dGU7dnJhdCc7CiRsYW5nWydjYWxfdG8nXSA9ICdkbyc7CiRsYW5nWydjYWxfcGFzdF9ldmVudHMnXSA9ICdVZGFsb3N0aSB2IG1pbnVsb3N0aSc7CiRsYW5nWydjYWxfdXBjb21pbmdfZXZlbnRzJ10gPSAnTmFkY2gmYWFjdXRlO2R6YWomdWFjdXRlO2NlIHVkYWxvc3RpJzsKJGxhbmdbJ2NhbF9hbnlfY2F0ZWdvcnknXSA9ICfFvWlhZG5hIGthdGVnJm9hY3V0ZTtyaWEnOwokbGFuZ1snY2FsX3Nob3dfb25seV9ldmVudHNfaW4nXSA9ICdVayZhYWN1dGU7xb4gaWJhIHVkYWxvc3RpIHYnOwokbGFuZ1snY2FsX2ZpbHRlcl9ieSddID0gJ0ZpbHRlciBvZCc7CiRsYW5nWydjYWxfZ28nXSA9ICdQcmVqZGknOwokbGFuZ1snY2FsX3RpdGxlJ10gPSAnTmFkcGlzJzsKJGxhbmdbJ2NhbF9mcm9tZGF0ZSddID0gJ09kICc7CiRsYW5nWydjYWxfdG9kYXRlJ10gPSAnRG8nOwokbGFuZ1snY2FsX3VwZGF0ZV9jYXRlZ29yaWVzJ10gPSAnVXByYXYga2F0ZWcmb2FjdXRlO3JpZSc7CiRsYW5nWydjYWxfbGFuZ3VhZ2UnXSA9ICdKYXp5ayc7CiRsYW5nWydjYWxfdXBkYXRlc2V0dGluZ3MnXSA9ICdVcHJhdiBuYXN0YXZlbmllJzsKJGxhbmdbJ2NhbF91c2VfdHdlbHZlX2hvdXJfY2xvY2snXSA9ICdWIHNlbGVjdGJveG9jaCBwb3XFviZpYWN1dGU7dmFqIDEyIGhvZGlub3YmeWFjdXRlOyDEjWFzIChhbSxwbSknOwokbGFuZ1snY2FsX2RlZmF1bHRfY2F0ZWdvcnknXSA9ICdQcmVkbmFzdGF2ZW4mYWFjdXRlOyBrYXRlZyZvYWN1dGU7cmlhJzsKJGxhbmdbJ2NhbF91cGRhdGVfZmllbGRzJ10gPSAnVXByYXYgcG9saWEnOwokbGFuZ1snZm9yY2VfY2F0ZWdvcnknXSA9ICdOdXRub3PFpSBhc3BvbiBqZWRuZWoga2F0ZWcmb2FjdXRlO3JpZSc7CiRsYW5nWydzaG93cGFzdHllYXJzJ10gPSAnS2/EvmtvIHJva292IHBvdm9sacWlIHByaSBwcmlkJmFhY3V0ZTt2YW4maWFjdXRlOyBkbyBtaW51bG9zdGknOwokbGFuZ1snc2hvd2Z1dHVyZXllYXJzJ10gPSAnS2/EvmtvIHJva292IHBvdm9sacWlIHByaSBwcmlkJmFhY3V0ZTt2YW4maWFjdXRlOyBkbyBidWQmdWFjdXRlO2Nub3N0aSc7CiRsYW5nWydoaWRlc3VtbWFyeSddID0gJ1NrcnnFpSBwb2xlIHByZSBzJnVhY3V0ZTtyaG4nOwokbGFuZ1snaGlkZWNvbnRlbnQnXSA9ICdTa3J5xaUgcG9sZSBwcmUgb2JzYWggKGRldGFpbCknOwokbGFuZ1snY2F0ZWdvcnlfcmVtaW5kZXInXSA9ICdQcm9zJmlhY3V0ZTttLCB2eWJlcnRlIGFzcG/FiCBqZWRudSBrYXRlZyZvYWN1dGU7cml1IHByZSB0JnVhY3V0ZTt0byB1ZGFsb3PFpSc7CiRsYW5nWydtb2R1bGVfZXhhbXBsZV9zdHlsZXNoZWV0J10gPSAnQ1NTIHByZSBrYWxlbmQmYWFjdXRlO3InOwokbGFuZ1snZXJyb3JfcGVybWlzc2lvbiddID0gJ1BvdHJlYnVqZXRlIHByJmlhY3V0ZTtzdSZzY2Fyb247biZlYWN1dGU7IHByJmFhY3V0ZTt2YSAgKCVzKSBwcmUgcHImaWFjdXRlO3N0dXAgayB0ZWp0byBmdW5rY2lpJzsKJGxhbmdbJ2luc3RhbGxfcG9zdG1lc3NhZ2UnXSA9ICdNYWtlIHN1cmUgdG8gc2V0IHRoZSAmcXVvdDtNb2RpZnkgQ2FsZW5kYXImcXVvdDsgcGVybWlzc2lvbiBvbiB1c2VycyB3aG8gd2lsbCBiZSBhZG1pbmlzdGVyaW5nIGNhbGVuZGFyIGV2ZW50cy4nOwokbGFuZ1snZGVsZXRldGFnZ2VkJ10gPSAnT2RzdHImYWFjdXRlO8WIIG96bmHEjWVuJmVhY3V0ZTsgdWRhbG9zdGknOwokbGFuZ1snY29uZmlybWRlbGV0ZXRhZ2dlZCddID0gJ1N0ZSBzaSBpc3QmeWFjdXRlOywgxb5lIGNoY2V0ZSB0aWV0byB1ZGFsb3N0aSBvZHN0ciZhYWN1dGU7bmnFpT8nOwokbGFuZ1sndGFnZ2VkZGVsZXRlZCddID0gJ1Z5em5hxI1lbiZlYWN1dGU7IHVkYWxvc3RpIGJvbGkgb2RzdHImYWFjdXRlO25lbiZlYWN1dGU7JzsKJGxhbmdbJ3RlbXBsYXRlcyddID0gJyZTY2Fyb247YWJsJm9hY3V0ZTtueSc7CiRsYW5nWyd0ZW1wbGF0ZV9oZWxwJ10gPSAnUG9tb2NuJmlhY3V0ZTtrIGsgJnNjYXJvbjthYmwmb2FjdXRlO25lJzsKJGxhbmdbJ2ZpbGVfdGVtcGxhdGVzJ10gPSAnUyZ1YWN1dGU7Ym9yICZzY2Fyb247YWJsJm9hY3V0ZTtueSc7CiRsYW5nWydhZGR0ZW1wbGF0ZSddID0gJ1ByaWRhxaUgJnNjYXJvbjthYmwmb2FjdXRlO251JzsKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnJlNjYXJvbjthYmwmb2FjdXRlO25hJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZXRleHQnXSA9ICdOJmFhY3V0ZTt6b3YgJnNjYXJvbjthYmwmb2FjdXRlO255JzsKJGxhbmdbJ2VkaXR0ZW1wbGF0ZSddID0gJ1VwcmF2ICZzY2Fyb247YWJsJm9hY3V0ZTtudSc7CiRsYW5nWydkZWxldGV0ZW1wbGF0ZSddID0gJ09kc3RyJmFhY3V0ZTvFiCAmc2Nhcm9uO2FibCZvYWN1dGU7bnUnOwokbGFuZ1snbmV3dGVtcGxhdGUnXSA9ICdOb3YmeWFjdXRlOyBuJmFhY3V0ZTt6b3YgJnNjYXJvbjthYmwmb2FjdXRlO255JzsKJGxhbmdbJ3RlbXBsYXRlbmFtZWV4aXN0cyddID0gJ0NoeWJhOiAmU2Nhcm9uO2FibCZvYWN1dGU7bmEgcyB0JnlhY3V0ZTttdG8gbiZhYWN1dGU7enZvbSBleGlzdHVqZS4gUHJvcyZpYWN1dGU7bSB2eWJlcnRlIGluJnlhY3V0ZTsgbiZhYWN1dGU7em92Lic7CiRsYW5nWyd0ZW1wbGF0ZWltcG9ydGVkJ10gPSAnJlNjYXJvbjthYmwmb2FjdXRlO25hIGJvbGEgJnVhY3V0ZTtzcGUmc2Nhcm9uO25lIG5haW1wb3J0b3ZhbiZhYWN1dGU7IGRvIGRhdGFiJmFhY3V0ZTt6eSBhIGplIHByaXByYXZlbiZhYWN1dGU7IGsgcG91xb4maWFjdXRlO3Zhbml1Lic7CiRsYW5nWyd2aWV3X2RlZmF1bHRfc3R5bGVzaGVldCddID0gJ1BvenJpZcWlIHByZWRuYXN0YXZlbiZlYWN1dGU7IENTUyc7CiRsYW5nWydmaWxlbmFtZSddID0gJ04mYWFjdXRlO3pvdiBzJnVhY3V0ZTtib3J1JzsKJGxhbmdbJ2ltcG9ydHRlbXBsYXRlJ10gPSAnSW1wb3J0b3ZhxaUgJnNjYXJvbjthYmwmb2FjdXRlO251JzsKJGxhbmdbJ3RlbXBsYXRlX2RlbGV0ZWQnXSA9ICcmU2Nhcm9uO2FibCZvYWN1dGU7bmEgYm9sYSAmdWFjdXRlO3NwZSZzY2Fyb247bmUgb2RzdHImYWFjdXRlO25lbiZhYWN1dGU7IHogZGF0YWImYWFjdXRlO3ppJzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlc3VjY2VzcyddID0gJyZTY2Fyb247YWJsJm9hY3V0ZTtuYSBib2xhICZ1YWN1dGU7c3BlJnNjYXJvbjtuZSB1cHJhdmVuJmFhY3V0ZTsnOwokbGFuZ1sndXBkYXRldGVtcGxhdGVmYWlsdXJlJ10gPSAnRG8mc2Nhcm9uO2xvIGsgY2h5YmUgcHJpIGFrdHVhbGl6JmFhY3V0ZTtjaWkgJnNjYXJvbjthYmwmb2FjdXRlO255JzsKJGxhbmdbJ3NldHRpbmdzc2F2ZWQnXSA9ICdOYXN0YXZlbmlhIGJvbCB1bG/FvmVuJmVhY3V0ZTsnOwokbGFuZ1snY2F0ZWdvcnlkZWxldGVkJ10gPSAnS2F0ZWcmb2FjdXRlO3JpYSBvZHN0ciZhYWN1dGU7bmVuJmFhY3V0ZTsnOwokbGFuZ1snY2F0ZWdvcnl1cGRhdGVkJ10gPSAnS2F0ZWcmb2FjdXRlO3JpYSBha3R1YWxpem92YW4mYWFjdXRlOyc7CiRsYW5nWydjYXRlZ29yeWFkZGVkJ10gPSAnS2F0ZWcmb2FjdXRlO3JpYSBwcmlkYW4mYWFjdXRlOyc7CiRsYW5nWydldmVudGRlbGV0ZWQnXSA9ICdVZGFsb3PFpSBvZHN0ciZhYWN1dGU7bmVuJmFhY3V0ZTsnOwokbGFuZ1snZXZlbnR1cGRhdGVkJ10gPSAnVWRhbG9zxaUgYm9sYSBha3R1YWxpem92YW4mYWFjdXRlOyc7CiRsYW5nWydkZWZhdWx0X3BhZ2VfZXJyb3InXSA9ICdDaHliYTogViB6JmFhY3V0ZTtsb8W+a2UgJiMwMzk7TmFzdGF2ZW5pYSYjMDM5OyBtdXMmaWFjdXRlO3RlIG1hxaUgdnlicmFuJnVhY3V0ZTsgIHByZWRuYXN0YXZlbiZ1YWN1dGU7IHN0ciZhYWN1dGU7bmt1IHByZSBwb3XFviZpYWN1dGU7dmFuaWUga2FsZW5kJmFhY3V0ZTtyYSBzbyBTRU8gdXJsLiAnOwokbGFuZ1sndGltZV9hdCddID0gJ3YnOwokbGFuZ1sndHlwZSddID0gJ1R5cCc7CiRsYW5nWyduYW1lJ10gPSAnTiZhYWN1dGU7em92JzsKJGxhbmdbJ29yZGVyJ10gPSAnUG9yYWRpZSc7CiRsYW5nWydmaWVsZGFkZGVkJ10gPSAnUG9sZSBib2xvICZ1YWN1dGU7c3BlJnNjYXJvbjtuZSBwcmlkYW4mZWFjdXRlOyc7CiRsYW5nWydmaWVsZGRlbGV0ZWQnXSA9ICdQb2xlIG9kc3RyJmFhY3V0ZTtuZW4mZWFjdXRlOyc7CiRsYW5nWydmaWVsZHMnXSA9ICdWbGFzdG4mZWFjdXRlOyBwb2xpYSc7CiRsYW5nWyd0ZXh0ZmllbGQnXSA9ICdUZXh0b3YmZWFjdXRlOyBwb2xlJzsKJGxhbmdbJ3VwbG9hZGZpZWxkJ10gPSAnUG9sZSBwcmUgbmFociZhYWN1dGU7dmFuaWUgKHVwbG9hZCknOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICc8cD5LYWxlbmQmYWFjdXRlO3IgIGplIG1vZHVsLCBrdG9yJnlhY3V0ZTsgc2wmdWFjdXRlO8W+aSBuYSB6b2JyYXplbmllIGFrY2kmaWFjdXRlOy9ldmVudG92IG5hIFZhJnNjYXJvbjtlaiBzdHImYWFjdXRlO25rZS4gViBwciZpYWN1dGU7cGFkZSwgxb5lIGplIG1vZHVsIG5haW4mc2Nhcm9uO3RhbG92YW4meWFjdXRlOywgbiZhYWN1dGU7amRldGUgamVobyBhZG1pbmlzdHImYWFjdXRlO2NpdSB2IG1lbnUgT2JzYWguPC9wPic7CiRsYW5nWydkZWZhdWx0Y2FsZW5kYXJwYWdlJ10gPSAnUHJlZG5hc3RhdmVuJmFhY3V0ZTsgc3RyJmFhY3V0ZTtua2EgcHJlIGthbGVuZCZhYWN1dGU7ci4gVCZhYWN1dGU7dG8gc3RyJmFhY3V0ZTtua2EgbXVzJmlhY3V0ZTsgb2JzYWhvdmHFpSB0YWcga2FsZW5kJmFhY3V0ZTtyYS4gTmFzdGF2ZW5pZSBqZSBwb3RyZWJuJmVhY3V0ZTsgdiBwciZpYWN1dGU7cGFkZSBwb3XFviZpYWN1dGU7dmFuaWEgcHJldHR5IFVSTHMuJzsKJGxhbmdbJ3VwbG9hZGRpcmVjdG9yeSddID0gJ0FkcmVzJmFhY3V0ZTtyLCBrZGUgYnVkJnVhY3V0ZTsgbmFociZhYWN1dGU7dmFuJmVhY3V0ZTsgcyZ1YWN1dGU7Ym9yeSc7CiRsYW5nWyd1cGxvYWRmaWxldHlwZXMnXSA9ICdQb3ZvbGVuJmVhY3V0ZTsgdHlweSBzJnVhY3V0ZTtib3Jvdic7CiRsYW5nWyd1cGxvYWR1bmlxdWUnXSA9ICdaYWJlenBlxI1pxaUgdW5payZhYWN1dGU7dG5lIG4mYWFjdXRlO3p2eSBzJnVhY3V0ZTtib3Jvdic7CiRsYW5nWyd0aHVtYl93aWR0aCddID0gJ0TEusW+a2EgbiZhYWN1dGU7aMS+YWR1JzsKJGxhbmdbJ3RodW1iX2hlaWdodCddID0gJ1YmeWFjdXRlOyZzY2Fyb247a2EgbiZhYWN1dGU7aMS+YWR1JzsKJGxhbmdbJ2xhcmdlX3dpZHRoJ10gPSAnRMS6xb5rYSB2ZcS+ayZlYWN1dGU7aG8gb2JyJmFhY3V0ZTt6a3UnOwokbGFuZ1snbGFyZ2VfaGVpZ2h0J10gPSAnViZ5YWN1dGU7JnNjYXJvbjtrYSB2ZcS+ayZlYWN1dGU7aG8gb2JyJmFhY3V0ZTt6a3UnOwokbGFuZ1snY2FsX3JlY3VyX3BlcmlvZCddID0gJ09wYWt1amUgc2EnOwokbGFuZ1snY2FsX3JlY3VyX3VudGlsJ10gPSAnT3Bha3VqZSBzIGRvJzsKJGxhbmdbJ2hlbHBfdGVtcGxhdGUnXSA9ICc8cD48Yj5QcmludCBBdXRob3IgTmFtZTo8L2I+PC9wPg0KPGNvZGU+QXV0aG9yOiB7JGV2ZW50LmF1dGhvcm5hbWV9PC9jb2RlPg0KJzsKPz4K]]></data>
	</file>
	<file>
	  <filename>/lang/ext/sv_SE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2FyZXlvdXN1cmVfcmVtb3ZlY29uZmxpY3RpbmcnXSA9ICdUaGlzIGFjdGlvbiB3aWxsIHJlbW92ZSBhbnkgZXZlbnRzIHRoYXQgY29uZmxpY3Qgd2l0aCBub24tb3ZlcmxhcHBhYmxlIGV2ZW50cy4gIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkbyB0aGlzPyc7CiRsYW5nWydmaWx0ZXJfY29uZmxpY3RpbmcnXSA9ICdGaWx0ZXIgQ29uZmxpY3RpbmcgRXZlbnRzJzsKJGxhbmdbJ292ZXJsYXBfYWN0aW9uX3JlbW92ZSddID0gJ1NpbGVudGx5IHJlbW92ZSBjb25mbGljdGluZyBldmVudHMnOwokbGFuZ1snb3ZlcmxhcF9hY3Rpb25fZXJyb3InXSA9ICdWaXNhIGV0dCBmZWwnOwokbGFuZ1sncHJvbXB0X292ZXJsYXBfYWN0aW9uJ10gPSAnV2hhdCBzaG91bGQgaGFwcGVuIHdoZW4gYSBjb25mbGljdCBpcyBkZXRlY3RlZCBkdXJpbmcgZWRpdGluZyBvciBhZGRpbmcgb2YgYW4gZXZlbnQnOwokbGFuZ1snZXJyb3JfZXZlbnRfY29uZmxpY3QnXSA9ICdUaGUgZXZlbnQgdmFsdWVzIHNwZWNpZmllZCBvdmVybGFwIHdpdGggYW4gZXhpc3RpbmcgZXZlbnQgdGhhdCBkb2VzIG5vdCBhbGxvdyBjb25mbGljdHMnOwokbGFuZ1snY2FsX2luZm9fb3ZlcmxhcCddID0gJ0cmYXVtbDtsbGVyIGVuZGFzdCBmJm91bWw7ciBoJmF1bWw7bmRlbHNlciBtZWQgZW4gc2x1dHRpZCAoZWxsZXIgaGVsYS1kYWdlbiBoJmF1bWw7bmRlbHNlciknOwokbGFuZ1snY2FsX292ZXJsYXAnXSA9ICdUaWxsJmFyaW5nO3QgbnlhIGgmYXVtbDtuZGVsc2VyIGF0dCAmb3VtbDt2ZXJsYXBwYSBtZWQgZGVuIGgmYXVtbDtyJzsKJGxhbmdbJ3Byb21wdF9vdmVybGFwX3BvbGljeSddID0gJ0V2ZW50IE92ZXJsYXAgUG9saWN5JzsKJGxhbmdbJ3BvbGljeV9hbGwnXSA9ICdBbGxhIGgmYXVtbDtuZGVsc2VyIGYmYXJpbmc7ciAmb3VtbDt2ZXJsYXBwYSc7CiRsYW5nWydwb2xpY3lfbm9uZSddID0gJ0gmYXVtbDtuZGVsc2VyIGYmYXJpbmc7ciBpbnRlICZvdW1sO3ZlcmxhcHBhJzsKJGxhbmdbJ3BvbGljeV9pbmRpdmlkdWFsJ10gPSAnRGVjaWRlZCBvbiBhbiBldmVudCBieSBldmVudCBiYXNpcyc7CiRsYW5nWydsYmxfYmFjayddID0gJ1RpbGxiYWthJzsKJGxhbmdbJ2xibF90ZW1wbGF0ZXMnXSA9ICdNYWxsYXInOwokbGFuZ1sndGV4dGFyZWEnXSA9ICdUZXh0QXJlYSc7CiRsYW5nWydlcnJvcl9jYWxlbmRhcl9pbmNvbXBhdGlibGUnXSA9ICdWaSBoYXIgdXBwdCZhdW1sO2NrdCBhdHQgQ2FsZW5kZXItbW9kdWxlbiBvY2tzJmFyaW5nOyAmYXVtbDtyIGluc3RhbGxlcmFkLiBEZW4gaCZhdW1sO3IgbW9kdWxlbiAmYXVtbDtyIGludGUga29tcGF0aWJlbCBtZWQgQ2FsZW5kZXItbW9kdWxlbiBvY2gga2FuIGludGUgZmlubmFzIHRpbGxzYW1tYW5zIG1lZCBkZW4gcCZhcmluZzsgc2FtbWEgaW5zdGFsbGF0aW9uLiBWYXIgZ29kIGF2aW5zdGFsbGVyYSBDYWxlbmRlci1tb2R1bGVuLiAgJzsKJGxhbmdbJ2Vycm9yX2V2ZW50X25vdF9mb3VuZCddID0gJ0FudGluZ2VuICZhdW1sO3IgaCZhdW1sO25kZWxzZSBfaWQgaW50ZSBpIGRhdGFiYXNlbiwgZWxsZXIgcyZhcmluZzsgZmlubnMgZGV0IG1lciAmYXVtbDtuIGVuIGgmYXVtbDtuZGVsc2UgbWVkIGRldHRhIGlkISAoJWQpJzsKJGxhbmdbJ2ZpcnN0X3BhZ2UnXSA9ICc8PCc7CiRsYW5nWydwcmV2X3BhZ2UnXSA9ICc8JzsKJGxhbmdbJ25leHRfcGFnZSddID0gJz4nOwokbGFuZ1snbGFzdF9wYWdlJ10gPSAnPj4nOwokbGFuZ1sncGFnZV9vZiddID0gJ1NpZGEgJWQgYXYgJWQnOwokbGFuZ1snc2VhcmNoX3Jlc3VsdHMnXSA9ICdLYWxlbmRlciBzJm91bWw7a3Jlc3VsdGF0JzsKJGxhbmdbJ3NlYXJjaF93b3JkcyddID0gJ1Mmb3VtbDtrb3JkJzsKJGxhbmdbJ25vX3Jlc3VsdHNfZm91bmQnXSA9ICdJbmdhIHJlc3VsdGF0IGhpdHRhZGVzIHNvbSBzcGVjaWZlcmFkZXMgaSBzJm91bWw7a2ZyJmFyaW5nO2dhbic7CiRsYW5nWydmcmVxdWVuY3knXSA9ICdGcmVrdmVucyc7CiRsYW5nWydzcGVjaWZpZWRfZGF0ZSddID0gJ0FudiZhdW1sO25kIGRldCBzcGVjaWZpY2VyYWRlIGRhdHVtZXQnOwokbGFuZ1snZmlyc3Rfc3VuZGF5J10gPSAnRiZvdW1sO3JzdGEgcyZvdW1sO25kYWdlbiBpIG0mYXJpbmc7bmFkZW4nOwokbGFuZ1snZmlyc3RfbW9uZGF5J10gPSAnRiZvdW1sO3JzdGEgbSZhcmluZztuZGFnZW4gaSBtJmFyaW5nO25hZGVuJzsKJGxhbmdbJ2ZpcnN0X3R1ZXNkYXknXSA9ICdGJm91bWw7cnN0YSB0aXNkYWdlbiBpIG0mYXJpbmc7bmFkZW4nOwokbGFuZ1snZmlyc3Rfd2VkbmVzZGF5J10gPSAnRiZvdW1sO3JzdGEgb25zZGFnZW4gaSBtJmFyaW5nO25hZGVuJzsKJGxhbmdbJ2ZpcnN0X3RodXJzZGF5J10gPSAnRiZvdW1sO3JzdGEgdG9yc2RhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWydmaXJzdF9mcmlkYXknXSA9ICdGJm91bWw7cnN0YSBmcmVkYWdlbiBpIG0mYXJpbmc7bmFkZW4nOwokbGFuZ1snZmlyc3Rfc2F0dXJkYXknXSA9ICdGJm91bWw7cnN0YSBsJm91bWw7cmRhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWydzZWNvbmRfc3VuZGF5J10gPSAnQW5kcmEgcyZvdW1sO25kYWdlbiBpIG0mYXJpbmc7bmFkZW4nOwokbGFuZ1snc2Vjb25kX21vbmRheSddID0gJ0FuZHJhIG0mYXJpbmc7bmRhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWydzZWNvbmRfdHVlc2RheSddID0gJ0FuZHJhIHRpc2RhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWydzZWNvbmRfd2VkbmVzZGF5J10gPSAnQW5kcmEgb25zZGFnZW4gaSBtJmFyaW5nO25hZGVuJzsKJGxhbmdbJ3NlY29uZF90aHVyc2RheSddID0gJ0FuZHJhIHRvcnNkYWdlbiBpIG0mYXJpbmc7bmFkZW4nOwokbGFuZ1snc2Vjb25kX2ZyaWRheSddID0gJ0FuZHJhIGZyZWRhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWydzZWNvbmRfc2F0dXJkYXknXSA9ICdBbmRyYSBsJm91bWw7cmRhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWyd0aGlyZF9zdW5kYXknXSA9ICdUcmVkamUgcyZvdW1sO25kYWdlbiBpIG0mYXJpbmc7bmFkZW4nOwokbGFuZ1sndGhpcmRfbW9uZGF5J10gPSAnVHJlZGplIG0mYXJpbmc7bmRhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWyd0aGlyZF90dWVzZGF5J10gPSAnVHJlZGplIHRpc2RhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWyd0aGlyZF93ZWRuZXNkYXknXSA9ICdUcmVkamUgb25zZGFnZW4gaSBtJmFyaW5nO25hZGVuJzsKJGxhbmdbJ3RoaXJkX3RodXJzZGF5J10gPSAnVHJlZGplIHRvcnNkYWdlbiBpIG0mYXJpbmc7bmFkZW4nOwokbGFuZ1sndGhpcmRfZnJpZGF5J10gPSAnVHJlZGplIGZyZWRhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWyd0aGlyZF9zYXR1cmRheSddID0gJ1RyZWRqZSBsJm91bWw7cmRhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWydmb3VydGhfc3VuZGF5J10gPSAnRmomYXVtbDtyZGUgcyZvdW1sO25kYWdlbiBpIG0mYXJpbmc7bmFkZW4nOwokbGFuZ1snZm91cnRoX21vbmRheSddID0gJ0ZqJmF1bWw7cmRlIG0mYXJpbmc7bmRhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWydmb3VydGhfdHVlc2RheSddID0gJ0ZqJmF1bWw7cmRlIHRpc2RhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWydmb3VydGhfd2VkbmVzZGF5J10gPSAnRmomYXVtbDtyZGUgb25zZGFnZW4gaSBtJmFyaW5nO25hZGVuJzsKJGxhbmdbJ2ZvdXJ0aF90aHVyc2RheSddID0gJ0ZqJmF1bWw7cmRlIHRvcnNkYWdlbiBpIG0mYXJpbmc7bmFkZW4nOwokbGFuZ1snZm91cnRoX2ZyaWRheSddID0gJ0ZqJmF1bWw7cmRlIGZyZWRhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWydmb3VydGhfc2F0dXJkYXknXSA9ICdGaiZhdW1sO3JkZSBsJm91bWw7cmRhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWydsYXN0X3N1bmRheSddID0gJ1Npc3RhIHMmb3VtbDtuZGFnZW4gaSBtJmFyaW5nO25hZGVuJzsKJGxhbmdbJ2xhc3RfbW9uZGF5J10gPSAnU2lzdGEgbSZhcmluZztuZGFnZW4gaSBtJmFyaW5nO25hZGVuJzsKJGxhbmdbJ2xhc3RfdHVlc2RheSddID0gJ1Npc3RhIHRpc2RhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWydsYXN0X3dlZG5lc2RheSddID0gJ1Npc3RhIG9uc2RhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWydsYXN0X3RodXJzZGF5J10gPSAnU2lzdGEgdG9yc2RhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWydsYXN0X2ZyaWRheSddID0gJ1Npc3RhIGZyZWRhZ2VuIGkgbSZhcmluZztuYWRlbic7CiRsYW5nWydsYXN0X3NhdHVyZGF5J10gPSAnU2lzdGEgbCZvdW1sO3JkYWdlbiBpIG0mYXJpbmc7bmFkZW4nOwokbGFuZ1snZXJyb3JfaW52YWxpZF9yZWN1cl9tb250aGx5X2ZyZXEnXSA9ICdPZ2lsdGlnIGZyZWt2ZW5zLiBEdSBrYW4gaW50ZSBhbmdlIGImYXJpbmc7ZGUgZGV0IGFuZ2l2bmEgZGF0dW1ldCBvY2ggYW5kcmEgdiZhdW1sO3JkZW4nOwokbGFuZ1snc2VhcmNocmVzdWx0dGVtcGxhdGVfYWRkZWRpdCddID0gJ0wmYXVtbDtnZyB0aWxsL3JlZGlnZXJhIFMmb3VtbDtrcmVzdWx0YXRzbWFsbGVuJzsKJGxhbmdbJ2luZm9fc2VhcmNocmVzdWx0X3RlbXBsYXRlX3RhYiddID0gJ0xpc3RhbiAmb3VtbDt2ZXIgZGUgbWFsbGFyIHNvbSBmaW5ucyBmJm91bWw7ciBkZSBzJm91bWw7a3Jlc3VsdGF0IHNvbSB2aXNhcyc7CiRsYW5nWydpbmZvX3N5c2RmbHRfc2VhcmNocmVzdWx0X3RlbXBsYXRlJ10gPSAnU3RhbmRhcmQgUyZvdW1sO2tyZXN1bHRhdHNtYWxsJzsKJGxhbmdbJ2NhbF9zZWFyY2hfcmVzdWx0X3RlbXBsYXRlcyddID0gJ1Mmb3VtbDtrcmVzdWx0YXRzbWFsbGFyJzsKJGxhbmdbJ2Vycm9yX3F1ZXJ5X2ZhaWxlZCddID0gJ0RhdGFiYXNmciZhcmluZztnYW4gTWlzc2x5Y2thZGVzJzsKJGxhbmdbJ2Vycm9yX3NlYXJjaF9pbnZhbGlkX2RhdGVzJ10gPSAnT2dpbHRpZ2EgcyZvdW1sO2tkYXR1bSBzcGVjaWZpY2VyYWRlJzsKJGxhbmdbJ3RleHQnXSA9ICd0ZXh0JzsKJGxhbmdbJ3NlYXJjaCddID0gJ1Mmb3VtbDtrJzsKJGxhbmdbJ2NhdGVnb3J5J10gPSAnS2F0ZWdvcmknOwokbGFuZ1snaW5mb19zeXNkZmx0X3NlYXJjaF90ZW1wbGF0ZSddID0gJ1N0YW5kYXJkIFMmb3VtbDtrZm9ybXVsJmF1bWw7cnNtYWxsJzsKJGxhbmdbJ3NlYXJjaHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdMJmF1bWw7Z2cgdGlsbC9yZWRpZ2VyYSBTJm91bWw7a2Zvcm11bCZhdW1sO3JzbWFsbCc7CiRsYW5nWydpbmZvX3NlYXJjaF90ZW1wbGF0ZV90YWInXSA9ICdMaXN0YW4gbWVkIG1hbGxhciBzb20gJmF1bWw7ciB0aWxsZyZhdW1sO25nbGlnYSBmJm91bWw7ciBzJm91bWw7a2Zvcm11bCZhdW1sO3JldCc7CiRsYW5nWydjYWxfc2VhcmNoX2Zvcm1fdGVtcGxhdGVzJ10gPSAnUyZvdW1sO2tmb3JtdWwmYXVtbDtycyBtYWxsJzsKJGxhbmdbJ21heCddID0gJ21heGltYWx0JzsKJGxhbmdbJ3RpbWVzJ10gPSAnZyZhcmluZztuZ2VyJzsKJGxhbmdbJ29uJ10gPSAncCZhcmluZzsnOwokbGFuZ1snYXJleW91c3VyZV91bmluc3RhbGwnXSA9ICcmQXVtbDtyIGR1IHMmYXVtbDtrZXIgcCZhcmluZzsgYXR0IGR1IHZpbGwgZyZvdW1sO3JhIGRldHRhPyBPbSBkdSBmb3J0cyZhdW1sO3R0ZXIgcyZhcmluZzsga29tbWVyIGFsbCBkYXRhIHNvbSBhc3NvY2llcmFzIG1lZCBkZW5uYSBtb2R1bCBhdHQgcmFkZXJhcy4nOwokbGFuZ1sncG9zdF91bmluc3RhbGwnXSA9ICdLYWxlbmRlcm1vZHVsZW4gaGFyIGF2aW5zdGFsbGVyYXQgb2NoIGFsbGEgZXZlbmVtYW5nIG9jaCBtYWxsaW5mb3JtYXRpb24gaSBzYW1iYW5kIG1lZCBkZW5uYSBtb2R1bCBoYXIgdGFnaXRzIGJvcnQnOwokbGFuZ1snZmllbGR1cGRhdGVkJ10gPSAnRiZhdW1sO2x0ZXQgdXBwZGF0ZXJhdCc7CiRsYW5nWydldmVyeSddID0gJ1ZhcmplJzsKJGxhbmdbJ29yJ10gPSAnZWxsZXInOwokbGFuZ1sndXBkYXRlX2NoaWxkcmVuJ10gPSAnVXBwZGF0ZXJhIENoaWxkIEV2ZW50cyc7CiRsYW5nWydlcnJvcl9ub2NhdGVnb3J5J10gPSAnRHUgbSZhcmluZztzdGUgdiZhdW1sO2xqYSBtaW5zdCBlbiBrYXRlZ29yaSc7CiRsYW5nWydlcnJvcl9ub3RoaW5nc2VsZWN0ZWQnXSA9ICdJbmdlbnRpbmcgaGFyIHZhbHRzIGYmb3VtbDtyIGF0dCByYWRlcmEnOwokbGFuZ1snZXJyb3JfZXZlbnRvdmVybGFwJ10gPSAnRGVuICZhcmluZzt0ZXJrb21tYW5kZSBoJmF1bWw7bmRlbHNlbnMgcGFyYW1ldHJhciBzb20gZHUgaGFyIGFuZ2V0dCBza3VsbGUgcmVzdWx0ZXJhIGkgJm91bWw7dmVybGFwcGFuZGUgaCZhdW1sO25kZWxzZXIuJzsKJGxhbmdbJ3JlY3VycyddID0gJyZBcmluZzt0ZXJrb21tZXInOwokbGFuZ1snZXJyb3JfaW52YWxpZF9kYXRlcyddID0gJ0VuIGVsbGVyIGZsZXJhIGF2IGRlIGRhdHVtdiZhdW1sO3JkZW4gc29tIGFuZ2V0dHMgdmFyIG9naWx0aWcnOwokbGFuZ1snc3VuZGF5J10gPSAnUyZvdW1sO25kYWcnOwokbGFuZ1snbW9uZGF5J10gPSAnTSZhcmluZztuZGFnJzsKJGxhbmdbJ3R1ZXNkYXknXSA9ICdUaXNkYWcnOwokbGFuZ1snd2VkbmVzZGF5J10gPSAnT25zZGFnJzsKJGxhbmdbJ3RodXJzZGF5J10gPSAnVG9yc2RhZyc7CiRsYW5nWydmcmlkYXknXSA9ICdGcmVkYWcnOwokbGFuZ1snc2F0dXJkYXknXSA9ICdMJm91bWw7cmRhZyc7CiRsYW5nWydhYmJyX3N1bmRheSddID0gJ1Mmb3VtbDsnOwokbGFuZ1snYWJicl9tb25kYXknXSA9ICdNJmFyaW5nOyc7CiRsYW5nWydhYmJyX3R1ZXNkYXknXSA9ICdUaSc7CiRsYW5nWydhYmJyX3dlZG5lc2RheSddID0gJ09uJzsKJGxhbmdbJ2FiYnJfdGh1cnNkYXknXSA9ICdUbyc7CiRsYW5nWydhYmJyX2ZyaWRheSddID0gJ0ZyJzsKJGxhbmdbJ2FiYnJfc2F0dXJkYXknXSA9ICdMJm91bWw7JzsKJGxhbmdbJ3dlZWtkYXlzJ10gPSAnVmVja29kYWdhcic7CiRsYW5nWydwbHVyYWxfZGFpbHknXSA9ICdEYWdhcic7CiRsYW5nWydwbHVyYWxfd2Vla2x5J10gPSAnVmVja29yJzsKJGxhbmdbJ3BsdXJhbF9tb250aGx5J10gPSAnTSZhcmluZztuYWRlcic7CiRsYW5nWydwbHVyYWxfeWVhcmx5J10gPSAnJkFyaW5nO3InOwokbGFuZ1snbm8nXSA9ICdOZWonOwokbGFuZ1snZGFpbHknXSA9ICdEYWdsaWcnOwokbGFuZ1snd2Vla2x5J10gPSAnVmVja292aXMnOwokbGFuZ1snbW9udGhseSddID0gJ00mYXJpbmc7bmFkc3Zpcyc7CiRsYW5nWyd5ZWFybHknXSA9ICcmQXJpbmc7cmxpZyc7CiRsYW5nWydpbnRlcnZhbCddID0gJ1JlcGV0ZXJhIHZhcmplJzsKJGxhbmdbJ2NhbF9yZWN1cl9kZXRhaWxzJ10gPSAnJkFyaW5nO3RlcmtvbW1hbmRlIGgmYXVtbDtuZGVsc2VpbmZvcm1hdGlvbic7CiRsYW5nWyd1bmxpbWl0ZWQnXSA9ICdPJmF1bWw7bmRsaWd0JzsKJGxhbmdbJ21heF9yZWN1cl9ldmVudHMnXSA9ICdNYXhpbWFsdCBhbnRhbCBhdiBjaGlsZCBldmVudHMnOwokbGFuZ1sndXNlX3RvX2RhdGUnXSA9ICdTcGVjaWZlcmEgZXR0IGFubmF0IHN0b3BwZGF0dW0/JzsKJGxhbmdbJ2NhbmNlbCddID0gJ0F2YnJ5dCc7CiRsYW5nWydzaG93X2NoaWxkX2V2ZW50cyddID0gJ1Nob3cgQ2hpbGQgRXZlbnRzJzsKJGxhbmdbJ24vYSddID0gJ04vQSc7CiRsYW5nWydyZWN1cnNfdW50aWwnXSA9ICdQZXJpb2Rpc2sgdGlsbCc7CiRsYW5nWydwYXJlbnQnXSA9ICdGJm91bWw7ciZhdW1sO2xkZXInOwokbGFuZ1sncmVjdXJfcGVyaW9kJ10gPSAnUGVyaW9kaXNrIHRpZCc7CiRsYW5nWydmaWx0ZXInXSA9ICdGaWx0ZXIgJzsKJGxhbmdbJ3N0YXJ0X2RhdGUnXSA9ICdTdGFydGRhdHVtJzsKJGxhbmdbJ2VuZF9kYXRlJ10gPSAnU3RvcGRhdHVtJzsKJGxhbmdbJ2luZm9fdXBjb21pbmdsaXN0X3RlbXBsYXRlX3RhYiddID0gJ0xpc3RhbiBtZWQgbWFsbGFyIHNvbSAmYXVtbDtyIHRpbGxnJmF1bWw7bmdsaWdhIGYmb3VtbDtyIGtvbW1hbmRlbGlzdGF2aXNuaW5nYXInOwokbGFuZ1sndXBjb21pbmdsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ0wmYXVtbDtnZyB0aWxsL3JlZGlnZXJhIGVuIGtvbW1hbmRlbGlzdGEtdmlzbmluZ3NtYWxsJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICdTeXN0ZW1zdGFuZGFyZCBmJm91bWw7ciBrb21tYW5kZWxpc3RhbWFsbCc7CiRsYW5nWydpbmZvX2xpc3RfdGVtcGxhdGVfdGFiJ10gPSAnTGlzdGFuIG1lZCBtYWxsYXIgc29tICZhdW1sO3IgdGlsbGcmYXVtbDtuZ2xpZ2EgZiZvdW1sO3IgbGlzdC12aXNuaW5nYXInOwokbGFuZ1snbGlzdHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdMJmF1bWw7Z2cgdGlsbC9yZWRpZ2VyYSBlbiBsaXN0YS12aXNuaW5nc21hbGwnOwokbGFuZ1snaW5mb19zeXNkZmx0X2xpc3RfdGVtcGxhdGUnXSA9ICdTeXN0ZW1zdGFuZGFyZCBmJm91bWw7ciBsaXN0bWFsbCc7CiRsYW5nWydpbmZvX2V2ZW50X3RlbXBsYXRlX3RhYiddID0gJ0xpc3RhbiBtZWQgbWFsbGFyIHNvbSAmYXVtbDtyIHRpbGxnJmF1bWw7bmdsaWdhIGYmb3VtbDtyIGgmYXVtbDtuZGVsc2V2aXNuaW5nYXInOwokbGFuZ1snZXZlbnR0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnTCZhdW1sO2dnIHRpbGwvcmVkaWdlcmEgaCZhdW1sO25kZWxzZXZpc25pbmdzbWFsbC0nOwokbGFuZ1snaW5mb19zeXNkZmx0X2V2ZW50X3RlbXBsYXRlJ10gPSAnU3lzdGVtc3RhbmRhcmQgZiZvdW1sO3IgaCZhdW1sO25kZWxzZW1hbGwnOwokbGFuZ1snaW5mb19jYWxlbmRhcl90ZW1wbGF0ZV90YWInXSA9ICdMaXN0YW4gbWVkIG1hbGxhciBzb20gJmF1bWw7ciB0aWxsZyZhdW1sO25nbGlnYSBmJm91bWw7ciBrYWxlbmRlcnZpc25pbmdhcic7CiRsYW5nWydjYWxlbmRhcnRlbXBsYXRlX2FkZGVkaXQnXSA9ICdMJmF1bWw7Z2cgdGlsbC9yZWRpZ2VyYSBlbiBrYWxlbmRlcnZpc25pbmdzbWFsbCc7CiRsYW5nWydpbmZvX3N5c2RmbHRfY2FsZW5kYXJfdGVtcGxhdGUnXSA9ICdTeXN0ZW1zdGFuZGFyZCBmJm91bWw7ciBrYWxlbmRlcm1hbGwnOwokbGFuZ1snaW5mb19zeXNkZmx0X3RlbXBsYXRlJ10gPSAnRGV0dGEgZm9ybXVsJmF1bWw7ciBkZWZpbmllcmFyIHZpbGtlbiBtYWxsIHNvbSBza2EgYW52JmF1bWw7bmRhcyBuJmF1bWw7ciBkdSBrbGlja2FyIHAmYXJpbmc7ICZxdW90O055IG1hbGwmcXVvdDsgaSByZXNwZWt0aXZlIGZsaWsuIE9tIGRldHRhIHYmYXVtbDtyZGUgJmF1bWw7bmRyYXMgaGFyIGRldCBpbmdlbiBvbWVkZWxiYXIgcCZhcmluZzt2ZXJrYW4gcCZhcmluZzsgZGUgdmlzbmluZ2FyIHNvbSBnZW5lcmVyYXMgZnImYXJpbmc7biBkZW4gaCZhdW1sO3IgbW9kdWxlbi4nOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50QWRkZWQnXSA9ICdBbnJvcGFzIGVmdGVyIGF0dCBlbiBoJmF1bWw7bmRlbHNlIGkga2FsZW5kZXJuIGxhZ3RzIHRpbGwnOwokbGFuZ1snZXZlbnRkZXNjLUV2ZW50RWRpdGVkJ10gPSAnQW5yb3BhcyBlZnRlciBhdHQgZW4gZXhpc3RlcmFuZGUgaCZhdW1sO25kZWxzZSBpIGthbGVuZGVybiByZWRpZ2VyYXRzJzsKJGxhbmdbJ2V2ZW50ZGVzYy1FdmVudERlbGV0ZWQnXSA9ICdBbnJvcGFzIGVmdGVyIGF0dCBlbiBoJmF1bWw7bmRlbHNlIGkga2FsZW5kZXJuIGhhciB0YWdpdHMgYm9ydCc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlBZGRlZCddID0gJ0Fucm9wYXMgZWZ0ZXIgYXR0IGVuIGthdGVnb3JpIGhhciBza2FwYXRzJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUVkaXRlZCddID0gJ0Fucm9wYXMgZWZ0ZXIgYXR0IGVuIGthdGVnb3JpIGhhciByZWRpZ2VyYXRzJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeURlbGV0ZWQnXSA9ICdBbnJvcGFzIGVmdGVyIGF0dCBlbiBrYXRlZ29yaSBoYXIgdGFnaXRzIGJvcnQnOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50QWRkZWQnXSA9ICc8cD5TZW50IHdoZW4gYSBjYWxlbmRhciBldmVudCBpcyBhZGRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8dWw+DQo8bGk+XCZxdW90O2V2ZW50X3RpdGxlXCZxdW90OyAtIEV2ZW50IFRpdGxlPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfc3VtbWFyeVwmcXVvdDsgLSBTdW1tZXJhbmRlIHRleHQ8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kZXRhaWxzXCZxdW90OyAtIERldGFsamVyYWQgYmVza3Jpdm5pbmc8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX3N0YXJ0XCZxdW90OyAtIEgmYXVtbDtuZGVsc2VucyBzdGFydGRhdHVtIG9jaCB0aWQ8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX2VuZFwmcXVvdDsgLSBUaGUgZXZlbnQgZW5kIGRhdGUvdGltZTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2NyZWF0ZWRfYnlcJnF1b3Q7IC0gVGhlIHVzZXJpZCBvZiB0aGUgYXV0aG9yPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfaWRcJnF1b3Q7IC0gVGhlIGV2ZW50IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50RWRpdGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgZXZlbnQgaXMgZWRpdGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7ZXZlbnRfdGl0bGVcJnF1b3Q7IC0gRXZlbnQgVGl0bGU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9zdW1tYXJ5XCZxdW90OyAtIFN1bW1hcnkgVGV4dDwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RldGFpbHNcJnF1b3Q7IC0gRGV0YWlsZWQgRGVzY3JpcHRpb248L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX3N0YXJ0XCZxdW90OyAtIFRoZSBldmVudCBzdGFydCBkYXRlL3RpbWU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX2VuZFwmcXVvdDsgLSBUaGUgZXZlbnQgZW5kIGRhdGUvdGltZTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2NyZWF0ZWRfYnlcJnF1b3Q7IC0gVGhlIHVzZXJpZCBvZiB0aGUgYXV0aG9yPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfaWRcJnF1b3Q7IC0gVGhlIGV2ZW50IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50RGVsZXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIGRlbGV0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtldmVudF9pZFwmcXVvdDsgLSBUaGUgZXZlbnQgaWQ8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlBZGRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGNhdGVnb3J5IGlzIGFkZGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfaWRcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5RWRpdGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgY2F0ZWdvcnkgaXMgZWRpdGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfaWRcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IGlkPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfbmFtZVwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgbmFtZTwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X29yZGVyXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBzb3J0IG9yZGVyPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5RGVsZXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGNhdGVnb3J5IGlzIGRlbGV0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9pZFwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgaWQ8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9uYW1lXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBuYW1lPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfb3JkZXJcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IHNvcnQgb3JkZXI8L2xpPg0KPC91bD4NCic7CiRsYW5nWydtc2dfZXZlbnRhZGRlZCddID0gJ0gmYXVtbDtuZGVsc2UgdGlsbGFnZCc7CiRsYW5nWydlcnJvcl9ub2V2ZW50bmFtZSddID0gJ0V0dCBuYW1uIGtyJmF1bWw7dnMgZiZvdW1sO3IgaCZhdW1sO25kZWxzZW4nOwokbGFuZ1snZXJyb3Jfbm91cGxvYWQnXSA9ICdGRUw6IEhpdHRhZGUgaW5nZW4gdXBwbGFkZGFkIGZpbCc7CiRsYW5nWydlcnJvcl9pbnZhbGlkZmlsZW5hbWUnXSA9ICdGRUw6IERlbiB1cHBsYWRkYWRlIGZpbGVuIGFjY2VwdGVyYXMgaW50ZSc7CiRsYW5nWydlcnJvcl9wcm9ibGVtd2l0aHVwbG9hZCddID0gJ0ZFTDogRXR0IGZlbCB1cHBzdG9kIGQmYXJpbmc7IGZpbGVuIHNrdWxsZSBsYWRkYXMgdXBwJzsKJGxhbmdbJ2Vycm9yX2ZpbGVjb3B5ZmFpbGVkJ10gPSAnRkVMOiBFdHQgZmVsIHVwcHN0b2QgZCZhcmluZzsgZmlsZW4gc2t1bGxlIGZseXR0YXMgdGlsbCBzaW4gc2x1dGxpZ2EgcGxhdHMnOwokbGFuZ1snZXJyb3JfZmlsZWV4aXN0cyddID0gJ0ZFTDogRW4gZmlsIG1lZCBkZXQgbmFtbmV0IGV4aXN0ZXJhciByZWRhbic7CiRsYW5nWydlcnJvcl9jc3ZmaWxlbm90Zm91bmQnXSA9ICdGRUw6IEt1bmRlIGludGUgaGl0dGEgQ1NWLWZpbGVuJzsKJGxhbmdbJ2Vycm9yX2NhbnRvcGVuZmlsZSddID0gJ0ZFTDogS2FuIGludGUgJm91bWw7cHBuYSBmaWwnOwokbGFuZ1snZXJyb3JfY2F0ZWdvcnlleGlzdHMnXSA9ICdGRUw6IEVuIGthdGVnb3JpIG1lZCBkZXR0YSBuYW1uICVzIGZpbm5zIHJlZGFuJzsKJGxhbmdbJ2NhbF9pZCddID0gJ0lEJzsKJGxhbmdbJ2NhbF9jYWxlbmRhciddID0gJ0thbGVuZGVyJzsKJGxhbmdbJ2NhbF9kZWZhdWx0X3RlbXBsYXRlcyddID0gJ1N0YW5kYXJkbWFsbGFyJzsKJGxhbmdbJ2NhbF9kZXNjcmlwdGlvbiddID0gJ0wmYXVtbDtnZyB0aWxsLCByZWRpZ2VyYSBvY2ggdGEgYm9ydCBoJmF1bWw7bmRlbHNlcic7CiRsYW5nWydjYWxfYWRkZXZlbnQnXSA9ICdMJmF1bWw7Z2cgdGlsbCBoJmF1bWw7bmRlbHNlJzsKJGxhbmdbJ2NhbF9pbXBvcnRfZXZlbnRzJ10gPSAnSW1wb3J0ZXJhIGgmYXVtbDtuZGVsc2VyJzsKJGxhbmdbJ2NhbF9ldmVudHMnXSA9ICdIJmF1bWw7bmRlbHNlcic7CiRsYW5nWydjYWxfY2F0ZWdvcmllcyddID0gJ0thdGVnb3JpZXInOwokbGFuZ1snY2FsX2NhbGVuZGFyX3RlbXBsYXRlJ10gPSAnTWFsbCBmJm91bWw7ciBrYWxlbmRlcic7CiRsYW5nWydjYWxfbGlzdF90ZW1wbGF0ZSddID0gJ01hbGwgZiZvdW1sO3IgbGlzdGEnOwokbGFuZ1snY2FsX3VwY29taW5nbGlzdF90ZW1wbGF0ZSddID0gJ01hbGwgZiZvdW1sO3Iga29tbWFuZGUtbGlzdGEnOwokbGFuZ1snY2FsX2V2ZW50X3RlbXBsYXRlJ10gPSAnTWFsbCBmJm91bWw7ciBoJmF1bWw7bmRlbHNlJzsKJGxhbmdbJ2NhbF9zZXR0aW5ncyddID0gJ0luc3QmYXVtbDtsbG5pbmdhcic7CiRsYW5nWydjYWxfcHJldiddID0gJyZsYXF1bzsgRiZvdW1sO3JlZyZhcmluZztlbmRlJzsKJGxhbmdbJ2NhbF9uZXh0J10gPSAnTiZhdW1sO3N0YSAmcmFxdW87JzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzX3VwZGF0ZWQnXSA9ICdLYXRlZ29yaWVyIHVwcGRhdGVyYWRlJzsKJGxhbmdbJ2NhbF9zZXR0aW5nc191cGRhdGVkJ10gPSAnSW5zdCZhdW1sO2xsbmluZ2FyIHVwcGRhdGVyYWRlJzsKJGxhbmdbJ2NhbF9hZGRfZXZlbnQnXSA9ICdMJmF1bWw7Z2cgdGlsbCBoJmF1bWw7bmRlbHNlJzsKJGxhbmdbJ2NhbF9lZGl0J10gPSAnUmVkaWdlcmEnOwokbGFuZ1snY2FsX2RlbGV0ZSddID0gJ1RhIGJvcnQnOwokbGFuZ1snY2FsX2FyZXlvdXN1cmUnXSA9ICcmQXVtbDtyIGR1IHMmYXVtbDtrZXIgcCZhcmluZzsgYXR0IGR1IHZpbGwgdGEgYm9ydCc7CiRsYW5nWydjYWxfdXBkYXRlX3RlbXBsYXRlJ10gPSAnVXBwZGF0ZXJhIG1hbGwnOwokbGFuZ1snY2FsX3N1bmRheSddID0gJ1Mmb3VtbDtuZGFnJzsKJGxhbmdbJ2NhbF9tb25kYXknXSA9ICdNJmFyaW5nO25kYWcnOwokbGFuZ1snY2FsX3R1ZXNkYXknXSA9ICdUaXNkYWcnOwokbGFuZ1snY2FsX3dlZG5lc2RheSddID0gJ09uc2RhZyc7CiRsYW5nWydjYWxfdGh1cnNkYXknXSA9ICdUb3JzZGFnJzsKJGxhbmdbJ2NhbF9mcmlkYXknXSA9ICdGcmVkYWcnOwokbGFuZ1snY2FsX3NhdHVyZGF5J10gPSAnTCZvdW1sO3JkYWcnOwokbGFuZ1snY2FsX3N1biddID0gJ1Mmb3VtbDtuJzsKJGxhbmdbJ2NhbF9tb24nXSA9ICdNJmFyaW5nO24nOwokbGFuZ1snY2FsX3R1ZXMnXSA9ICdUaXMnOwokbGFuZ1snY2FsX3dlZCddID0gJ09ucyc7CiRsYW5nWydjYWxfdGh1cnMnXSA9ICdUb3InOwokbGFuZ1snY2FsX2ZyaSddID0gJ0ZyZSc7CiRsYW5nWydjYWxfc2F0J10gPSAnTCZvdW1sO3InOwokbGFuZ1snY2FsX2phbnVhcnknXSA9ICdqYW51YXJpJzsKJGxhbmdbJ2NhbF9mZWJydWFyeSddID0gJ2ZlYnJ1YXJpJzsKJGxhbmdbJ2NhbF9tYXJjaCddID0gJ21hcnMnOwokbGFuZ1snY2FsX2FwcmlsJ10gPSAnYXByaWwnOwokbGFuZ1snY2FsX21heSddID0gJ21haic7CiRsYW5nWydjYWxfanVuZSddID0gJ2p1bmknOwokbGFuZ1snY2FsX2p1bHknXSA9ICdqdWxpJzsKJGxhbmdbJ2NhbF9hdWd1c3QnXSA9ICdhdWd1c3RpJzsKJGxhbmdbJ2NhbF9zZXB0ZW1iZXInXSA9ICdzZXB0ZW1iZXInOwokbGFuZ1snY2FsX29jdG9iZXInXSA9ICdva3RvYmVyJzsKJGxhbmdbJ2NhbF9ub3ZlbWJlciddID0gJ25vdmVtYmVyJzsKJGxhbmdbJ2NhbF9kZWNlbWJlciddID0gJ2RlY2VtYmVyJzsKJGxhbmdbJ2NhbF9hZGQnXSA9ICdMJmF1bWw7Z2cgdGlsbCc7CiRsYW5nWydjYWxfdXBkYXRlJ10gPSAnVXBwZGF0ZXJhJzsKJGxhbmdbJ2NhbF9ldmVudCddID0gJ0gmYXVtbDtuZGVsc2UnOwokbGFuZ1snY2FsX2RhdGUnXSA9ICdEYXR1bSc7CiRsYW5nWydjYWxfc3VtbWFyeSddID0gJ1NhbW1hbmZhdHRuaW5nJzsKJGxhbmdbJ2NhbF9kZXRhaWxzJ10gPSAnRGV0YWxqZXInOwokbGFuZ1snY2FsX21vcmUnXSA9ICdtZXIgPj4nOwokbGFuZ1snY2FsX3JldHVybiddID0gJ1RpbGxiYWthJzsKJGxhbmdbJ2NhbF90byddID0gJ3RpbGwnOwokbGFuZ1snY2FsX3Bhc3RfZXZlbnRzJ10gPSAnUGFzc2VyYWRlIGgmYXVtbDtuZGVsc2VyJzsKJGxhbmdbJ2NhbF91cGNvbWluZ19ldmVudHMnXSA9ICdLb21tYW5kZSBoJmF1bWw7bmRlbHNlcic7CiRsYW5nWydjYWxfYW55X2NhdGVnb3J5J10gPSAnQWxsYSBrYXRlZ29yaWVyJzsKJGxhbmdbJ2NhbF9zaG93X29ubHlfZXZlbnRzX2luJ10gPSAnVmlzYSBiYXJhIGgmYXVtbDtuZGVsc2VyIGknOwokbGFuZ1snY2FsX2ZpbHRlcl9ieSddID0gJ0ZpbHRyZXJhIHAmYXJpbmc7JzsKJGxhbmdbJ2NhbF9nbyddID0gJ1NraWNrYSc7CiRsYW5nWydjYWxfdGl0bGUnXSA9ICdIJmF1bWw7bmRlbHNlJzsKJGxhbmdbJ2NhbF9mcm9tZGF0ZSddID0gJ0ZyJmFyaW5nO24gZGF0dW0nOwokbGFuZ1snY2FsX3RvZGF0ZSddID0gJ1RpbGwgZGF0dW0nOwokbGFuZ1snY2FsX3VwZGF0ZV9jYXRlZ29yaWVzJ10gPSAnVXBwZGF0ZXJhIGthdGVnb3JpZXInOwokbGFuZ1snY2FsX2xhbmd1YWdlJ10gPSAnU3ByJmFyaW5nO2snOwokbGFuZ1snY2FsX3VwZGF0ZXNldHRpbmdzJ10gPSAnVXBwZGF0ZXJhIGluc3QmYXVtbDtsbG5pbmdhcic7CiRsYW5nWydjYWxfdXNlX3R3ZWx2ZV9ob3VyX2Nsb2NrJ10gPSAnQW52JmF1bWw7bmQgMTItdGltbWFycyB0aWRzYW5naXZlbHNlIGkgbWVueWVyPyc7CiRsYW5nWydjYWxfZGVmYXVsdF9jYXRlZ29yeSddID0gJ1N0YW5kYXJka2F0ZWdvcmknOwokbGFuZ1snY2FsX3VwZGF0ZV9maWVsZHMnXSA9ICdVcHBkYXRlcmEgZiZhdW1sO2x0JzsKJGxhbmdbJ2ZvcmNlX2NhdGVnb3J5J10gPSAnS3ImYXVtbDt2IG1pbnN0IGVuIGthdGVnb3JpJzsKJGxhbmdbJ3Nob3dwYXN0eWVhcnMnXSA9ICdIdXIgbSZhcmluZztuZ2EgJmFyaW5nO3IgYmFrJmFyaW5nO3QgaSB0aWRlbiBzb20gJmF1bWw7ciB0aWxsJmFyaW5nO3RuYSc7CiRsYW5nWydzaG93ZnV0dXJleWVhcnMnXSA9ICdIdXIgbSZhcmluZztuZ2EgJmFyaW5nO3IgZnJhbSZhcmluZzt0IGkgdGlkZW4gc29tICZhdW1sO3IgdGlsbCZhcmluZzt0bmEnOwokbGFuZ1snaGlkZXN1bW1hcnknXSA9ICdTa2Egc3VtbWVyaW5nc2YmYXVtbDtsdCB2YXJhIGRvbHQnOwokbGFuZ1snaGlkZWNvbnRlbnQnXSA9ICdTa2EgaW5uZWgmYXJpbmc7bGxzZiZhdW1sO2x0ZXQgdmFyYSBkb2x0JzsKJGxhbmdbJ2NhdGVnb3J5X3JlbWluZGVyJ10gPSAnTWFya2VyYSBlbiBlbGxlciBmbGVyYSBrYXRlZ29yaWVyIGYmb3VtbDtyIGRlbiBoJmF1bWw7ciBoJmF1bWw7bmRlbHNlbic7CiRsYW5nWydtb2R1bGVfZXhhbXBsZV9zdHlsZXNoZWV0J10gPSAnQ1NTLWV4ZW1wZWwgZiZvdW1sO3IgQ2FsZW5kYXInOwokbGFuZ1snZXJyb3JfcGVybWlzc2lvbiddID0gJ0R1IGJlaCZvdW1sO3ZlciBwYXNzYW5kZSByJmF1bWw7dHRpZ2hldGVyICglcykgZiZvdW1sO3IgYXR0IGFudiZhdW1sO25kYSBkZW4gaCZhdW1sO3IgZnVua3Rpb25lbic7CiRsYW5nWydpbnN0YWxsX3Bvc3RtZXNzYWdlJ10gPSAnU2UgdGlsbCBhdHQgc3QmYXVtbDtsbGEgaW4gJnF1b3Q7JkF1bWw7bmRyYSBLYWxlbmRlciZxdW90OyByJmF1bWw7dHRpZ2hldGVyIGYmb3VtbDtyIGFudiZhdW1sO25kYXJlIHNvbSBrb21tZXIgYXR0IGFkbWluaXN0cmVyYSBrYWxlbmRlcmgmYXVtbDtuZGVsc2VyJzsKJGxhbmdbJ2RlbGV0ZXRhZ2dlZCddID0gJ1RhIGJvcnQgbWFya2VyYWRlIGgmYXVtbDtuZGVsc2VyJzsKJGxhbmdbJ2NvbmZpcm1kZWxldGV0YWdnZWQnXSA9ICcmQXVtbDtyIGR1IHMmYXVtbDtrZXIgcCZhcmluZzsgYXR0IGR1IHZpbGwgdGEgYm9ydCBkZXNzYSBoJmF1bWw7bmRlbHNlcj8nOwokbGFuZ1sndGFnZ2VkZGVsZXRlZCddID0gJ01hcmtlcmFkZSBoJmF1bWw7bmRlbHNlciB0b2dzIGJvcnQnOwokbGFuZ1sndGVtcGxhdGVzJ10gPSAnTWFsbGFyJzsKJGxhbmdbJ3RlbXBsYXRlX2hlbHAnXSA9ICdNYWxsaGomYXVtbDtscCc7CiRsYW5nWydmaWxlX3RlbXBsYXRlcyddID0gJ0ZpbG1hbGxhcic7CiRsYW5nWydhZGR0ZW1wbGF0ZSddID0gJ0wmYXVtbDtnZyB0aWxsIG1hbGwnOwokbGFuZ1sndGVtcGxhdGUnXSA9ICdNYWxsJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZXRleHQnXSA9ICdNYWxsbmFtbic7CiRsYW5nWydlZGl0dGVtcGxhdGUnXSA9ICdSZWRpZ2VyYSBtYWxsJzsKJGxhbmdbJ2RlbGV0ZXRlbXBsYXRlJ10gPSAnVGEgYm9ydCBtYWxsJzsKJGxhbmdbJ25ld3RlbXBsYXRlJ10gPSAnTnl0dCBtYWxsbmFtbic7CiRsYW5nWyd0ZW1wbGF0ZW5hbWVleGlzdHMnXSA9ICdGRUw6IEVuIG1hbGwgbWVkIGRldCBuYW1uZXQgZXhpc3RlcmFyIHJlZGFuLiBWJmF1bWw7bGogZXR0IGFubmF0IG5hbW4uJzsKJGxhbmdbJ3RlbXBsYXRlaW1wb3J0ZWQnXSA9ICdNYWxsZW4gJmF1bWw7ciBpbXBvcnRlcmFkIG9jaCBpbnN0YWxsZXJhZCwgcmVkbyBhdHQgYW52JmF1bWw7bmRhcy4nOwokbGFuZ1sndmlld19kZWZhdWx0X3N0eWxlc2hlZXQnXSA9ICdWaXNhIGYmb3VtbDtydmFsZCBTdHlsZXNoZWV0JzsKJGxhbmdbJ2ZpbGVuYW1lJ10gPSAnRmlsbmFtbic7CiRsYW5nWydpbXBvcnR0ZW1wbGF0ZSddID0gJ0ltcG9ydGVyYSBtYWxsJzsKJGxhbmdbJ3RlbXBsYXRlX2RlbGV0ZWQnXSA9ICdNYWxsZW4gdG9ncyBib3J0IHVyIGRhdGFiYXNlbic7CiRsYW5nWyd1cGRhdGV0ZW1wbGF0ZXN1Y2Nlc3MnXSA9ICdNYWxsZW4gdXBwZGF0ZXJhZGVzJzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlZmFpbHVyZSddID0gJ0V0dCBmZWwgdXBwc3RvZCBkJmFyaW5nOyBtYWxsZW4gc2t1bGxlIHVwcGRhdGVyYXMnOwokbGFuZ1snc2V0dGluZ3NzYXZlZCddID0gJ0luc3QmYXVtbDtsbG5pbmdhcm5hIHNwYXJhZGVzJzsKJGxhbmdbJ2NhdGVnb3J5ZGVsZXRlZCddID0gJ0thdGVnb3JpbiB0b2dzIGJvcnQnOwokbGFuZ1snY2F0ZWdvcnl1cGRhdGVkJ10gPSAnS2F0ZWdvcmluICZhdW1sO3IgdXBwZGF0ZXJhZCc7CiRsYW5nWydjYXRlZ29yeWFkZGVkJ10gPSAnS2F0ZWdvcmluIGxhZGVzIHRpbGwnOwokbGFuZ1snZXZlbnRkZWxldGVkJ10gPSAnSCZhdW1sO25kZWxzZW4gdG9ncyBib3J0JzsKJGxhbmdbJ2V2ZW50dXBkYXRlZCddID0gJ0gmYXVtbDtuZGVsc2VuIHVwcGRhdGVyYWRlcyc7CiRsYW5nWydkZWZhdWx0X3BhZ2VfZXJyb3InXSA9ICdGZWw6IER1IG0mYXJpbmc7c3RlIGFuZ2UgZW4gZiZvdW1sO3J2YWxkIHNpZGEgZiZvdW1sO3IgYXR0IGFudiZhdW1sO25kYSBDYWxlbmRhciBtZWQgJnF1b3Q7cHJldHR5IFVSTCZxdW90OyBha3RpdmVyYWQuIEcmYXJpbmc7IHRpbGwgZmxpa2VuIEluc3QmYXVtbDtsbG5pbmdhciBpIENhbGVuZGFyIG9jaCB2JmF1bWw7bGogZW4gc2lkYS4nOwokbGFuZ1sndGltZV9hdCddID0gJ3ZpZCc7CiRsYW5nWyd0eXBlJ10gPSAnVHlwJzsKJGxhbmdbJ25hbWUnXSA9ICdOYW1uJzsKJGxhbmdbJ29yZGVyJ10gPSAnT3JuaW5nJzsKJGxhbmdbJ2ZpZWxkYWRkZWQnXSA9ICdGJmF1bWw7bHQgbGFkZXMgdGlsbCc7CiRsYW5nWydmaWVsZGRlbGV0ZWQnXSA9ICdGJmF1bWw7bHQgdG9ncyBib3J0JzsKJGxhbmdbJ2ZpZWxkcyddID0gJ0FucGFzc2FkZSBmJmF1bWw7bHQnOwokbGFuZ1sndGV4dGZpZWxkJ10gPSAnVGV4dGYmYXVtbDtsdCc7CiRsYW5nWyd1cGxvYWRmaWVsZCddID0gJ0YmYXVtbDtsdCBmJm91bWw7ciBmaWx1cHBsYWRkbmluZyc7CiRsYW5nWydkZXNjcmlwdGlvbiddID0gJzxwPkNhbGVuZGFyIGlzIGEgbW9kdWxlIGZvciBkaXNwbGF5aW5nIGV2ZW50cyBvbiB5b3VyIHBhZ2UuIFdoZW4gdGhlDQoJCW1vZHVsZSBpcyBpbnN0YWxsZWQsIGEgQ2FsZW5kYXIgYWRtaW4gcGFnZSBpcyBhZGRlZCB0byB0aGUgY29udGVudCBtZW51DQoJCXRoYXQgd2lsbCBhbGxvdyB5b3UgdG8gbWFuYWdlIHlvdXIgZXZlbnRzLjwvcD4nOwokbGFuZ1snZGVmYXVsdGNhbGVuZGFycGFnZSddID0gJ0Ymb3VtbDtydmFsZCBzaWRhIHNvbSBpbm5laCZhcmluZztsbGVyIENhbGVuZGFyLiBEZW4gaCZhdW1sO3Igc2lkYW4gbSZhcmluZztzdGUgaW5uZWgmYXJpbmc7bGxhIGVuICZxdW90O1NtYXJ0eSB0YWcmcXVvdDsgc29tIGFucm9wYXIgQ2FsZW5kYXIuIEtyJmF1bWw7dnMgb20gZHUgYW52JmF1bWw7bmRlciAmcXVvdDtwcmV0dHkgVVJMcyZxdW90Oy4nOwokbGFuZ1sndXBsb2FkZGlyZWN0b3J5J10gPSAnS2F0YWxvZyBmJm91bWw7ciBmaWx1cHBsYWRkbmluZ2FyJzsKJGxhbmdbJ3VwbG9hZGZpbGV0eXBlcyddID0gJ1RpbGwmYXJpbmc7dG5hIGZpbHR5cGVyJzsKJGxhbmdbJ3VwbG9hZHVuaXF1ZSddID0gJ0Ymb3VtbDtycyZhdW1sO2tyYSB1bmlrYSBmaWxuYW1uJzsKJGxhbmdbJ3RodW1iX3dpZHRoJ10gPSAnQnJlZGQgZiZvdW1sO3IgdHVtbmFnZWxiaWxkJzsKJGxhbmdbJ3RodW1iX2hlaWdodCddID0gJ0gmb3VtbDtqZCBmJm91bWw7ciB0dW1uYWdlbGJpbGQnOwokbGFuZ1snbGFyZ2Vfd2lkdGgnXSA9ICdCcmVkZCBmJm91bWw7ciBzdG9yIGJpbGQnOwokbGFuZ1snbGFyZ2VfaGVpZ2h0J10gPSAnSCZvdW1sO2pkIGYmb3VtbDtyIHN0b3IgYmlsZCc7CiRsYW5nWydjYWxfcmVjdXJfcGVyaW9kJ10gPSAnJkFyaW5nO3RlcmtvbW1lcic7CiRsYW5nWydjYWxfcmVjdXJfdW50aWwnXSA9ICcmQXJpbmc7dGVya29tbWVyIHRpbGwgb2NoIG1lZCc7CiRsYW5nWydoZWxwX3RlbXBsYXRlJ10gPSAnPHA+PGI+UHJpbnQgQXV0aG9yIE5hbWU6PC9iPjwvcD4NCjxjb2RlPkF1dGhvcjogeyRldmVudC5hdXRob3JuYW1lfTwvY29kZT4NCic7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/tr_TR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2Vycm9yX2ZldV9sb2dnZWRpbiddID0gJ1RoZSB1c2VyIGlzIG5vdCBsb2dnZWQgaW4gdG8gRkVVLiAgQWRkaW5nIG9yIGVkaXRpbmcgZXZlbnRzIGlzIG5vdCBwZXJtaXR0ZWQnOwokbGFuZ1sncHJvbXB0X2ZyaWVuZGx5bmFtZSddID0gJ0ZyaWVuZGx5IE5hbWUgZm9yIHRoaXMgTW9kdWxlIGluIEFkbWluIE5hdmlnYXRpb24nOwokbGFuZ1snaW5mb19mcmllbmRseW5hbWUnXSA9ICdOb3RlOiBZb3UgbWF5IG5lZWQgdG8gY2xlYXIgdGhlIHNpdGUgY2FjaGUgZm9yIHRoaXMgcHJlZmVyZW5jZSB0byBoYXZlIGVmZmVjdC4gIElmIG5vIHZhbHVlIGlzIHN1cHBsaWVkIGEgZGVmYXVsdCB3aWxsIGJlIHVzZWQuJzsKJGxhbmdbJ3VzZV93eXNpd3lnJ10gPSAnV3lzaXd5ZyBFZGl0Jm91bWw7ciZ1dW1sOyBLdWxsYW4nOwokbGFuZ1snZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJ10gPSAnSW5zdWZmaWNpZW50IFBhcmFtZXRlcnMnOwokbGFuZ1snY29sdW1uX2RlbGltaXRlciddID0gJ0ltcG9ydCBmaWxlIGNvbHVtbiBkZWxpbWl0ZXInOwokbGFuZ1snaW1wb3J0X2NvbXBsZXRlZCddID0gJ0ltcG9ydCBDb21wbGV0ZSc7CiRsYW5nWydudW1faW1wb3J0ZWQnXSA9ICdOdW1iZXIgb2YgZXZlbnRzIGNyZWF0ZWQ6ICVkJzsKJGxhbmdbJ2ltcG9ydF9saW5lcyddID0gJ051bWJlciBvZiBsaW5lcyBwcm9jZXNzZWQgZnJvbSBmaWxlOiAlZCc7CiRsYW5nWydlcnJvcnMnXSA9ICdIYXRhbGFyJzsKJGxhbmdbJ2Vycm9yX2NzdmZpcnN0bGluZWludmFsaWRmaWVsZCddID0gJ0ZpZWxkOiAlcyBpcyBub3QgcmVjb2duaXplZCwgYW5kIGlzIG5vdCBhIGN1c3RvbSBmaWVsZCc7CiRsYW5nWydpbmZvX2Nzdl9mb3JtYXQnXSA9ICc8aDQ+Q1NWIEZpbGUgRm9ybWF0IEluZm9ybWF0aW9uLjwvaDQ+DQo8dWw+DQogIDxsaT5HZW5lcmFsIEluZm9ybWF0aW9uOg0KICAgPHVsPg0KICAgICA8bGk+VGhlIGZpbGUgbXVzdCBiZSBhbiBBU0NJSSBmaWxlIHdpdGggdW5peCAocHJlZmVycmVkKSwgZG9zLCBvciBtYWMgbGluZSBlbmRpbmdzLjwvbGk+DQogICAgIDxsaT5Db21tZW50cyBzdGFydCB3aXRoIC8vIGFueSBjaGFyYWN0ZXJzIGFmdGVyIHRoaXMgb24gYSBsaW5lIHdpbGwgYmUgaWdub3JlZCAoaW5jbHVkaW5nIHdpdGhpbiBxdW90ZXMuPC9saT4NCiAgICAgPGxpPkVtcHR5IGxpbmVzIGFyZSBpZ25vcmVkPC9saT4NCiAgICAgPGxpPkZpZWxkIGRlbGltaXRlcnMgYXJlIHVzZXIgY29udHJvbGxhYmxlLCBob3dldmVyIGEgZGVsaW1pdGVyIGNhbiBiZSB1c2VkIGFzIGEgdmFsdWUgd2l0aGluIGEgZmllbGQgaWYgdGhlIGZpZWxkIGlzIGRlbGltaXRlZCBieSBkb3VibGUgcXVvdGVzLjwvbGk+DQogICAgIDxsaT5Sb3dzIGFyZSBkZWxpbWl0ZWQgYnkgbmV3bGluZSBjaGFycyAoYXMgYWJvdmUpLjwvbGk+DQogICA8L3VsPg0KICA8L2xpPg0KICA8bGk+VGhlIEZpZWxkIE1hcDoNCiAgIDx1bD4NCiAgICA8bGk+VGhlIGZpcnN0IGxpbmUgZGVmaW5lcyB0aGUgb3JkZXIgb2YgdGhlIGZpZWxkcywgYW5kIHdoYXQgJnF1b3Q7Y3VzdG9tIGZpZWxkcyZxdW90OyBhcmUgZGVmaW5lZCBpbiB0aGUgZmlsZS4gRGF0YSBjYW4gc3RhcnQgb24gdGhlIHNlY29uZCBub24tZW1wdHkgbGluZSwgb3IgYWZ0ZXIuPC9saT4NCiAgICA8bGk+VGhlcmVzIGFyZSB0aGUgcmVxdWlyZWQgZmllbGRzOiBzdGFydCB0aW1lLCBlbmQgdGltZSwgdGl0bGUsIHN1bW1hcnksIGFuZCBkZXNjcmlwdGlvbi4gIFdpdGhvdXQgZGVmaW5pbmcgdGhlc2UgZmllbGRzIGluIHRoZSBoZWFkZXIgdGhlIGltcG9ydCB3aWxsIG5vdCBwcm9jZWVkLiAgUmVxdWlyZWQgZmllbGQgbmFtZXMgYXJlIG5vdCBjYXNlIHNlbnNpdGl2ZS48L2xpPg0KICAgIDxsaT5UaGVyZSBpcyBvbmUgb3B0aW9uYWwgY29sdW1uOjogJnF1b3Q7Y2F0ZWdvcnkmcXVvdDsuICBJZiBzcGVjaWZpZWQgaXQgY2FuIGNvbnRhaW4gYSA7IHNlcGFyYXRlZCBsaXN0IG9mIGNhdGVnb3J5IG5hbWVzIHRoYXQgdGhlIGV2ZW50IHdpbGwgYmVsb25nIHRvLjwvbGk+DQogICA8L3VsPg0KICA8L2xpPg0KICA8bGk+VGhlIERhdGEgUm93czoNCiAgIDx1bD4NCiAgICA8bGk+VGhlIHN0YXJ0IHRpbWUsIHRpdGxlLCBhbmQgZGVzY3JpcHRpb24gZmllbGRzIG11c3Qgbm90IGJlIGVtcHR5LjwvbGk+DQo8bGk+U3RhcnQgYW5kIEVuZCBUaW1lczo8L2xpPg0KICA8dWw+DQogICA8bGk+U3RhcnQgdGltZSBwcm9jZXNzaW5nIGlzIGZsZXhpYmxlLiAgWW91IGNhbiBzcGVjaWZ5IGVpdGhlciAgWVlZWS1NTS1ERCBISDpNTSBmb3JtYXQsIG9yIG1hbnkgZm9ybWF0cyBhcyBkZWZpbmVkIGJ5IHRoZSBzdHJ0b3RpbWUgZnVuY3Rpb24sIGluY2x1ZGluZyByZWxhdGl2ZSB0aW1lcy4gIElmIGEgcmVsYXRpdmUgdGltZSBpcyBzdXBwbGllZCBpdCBpcyBhc3N1bWVkIHRvIGJlIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHRpbWUuPC9saT4NCiAgIDxsaT5FbmQgdGltZSBwcm9jZXNzaW5nIGlzIGZsZXhpYmxlLCBhbmQgbWF5IGJlIGVtcHR5LiAgWW91IGNhbiBzcGVjaWZ5IGVpdGhlciBhbiBhYnNvbHV0ZSB0aW1lIChpbiB0aGUgc2FtZSBmb3JtYXQgYXMgdGhlIHN0YXJ0IHRpbWUpIG9yIGEgcmVsYXRpdmUgdGltZS4gIElmIGEgcmVsYXRpdmUgdGltZSBpcyBzcGVjaWZpZWQsIGl0IGlzIGFzc3VtZWQgdG8gYmUgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IHRpbWUuICAgaS5lOiAmcXVvdDsrNCBob3VycyZxdW90OyB3b3VsZCBpbmRpY2F0ZSA0IGhvdXJzIGZyb20gdGhlIHN0YXJ0IHRpbWUgY29sdW1uLjwvbGk+DQogICA8bGk+SWYgdGhlIGVuZCB0aW1lIGNvbHVtZSBpcyB0aGUgc3RyaW5nICZxdW90O0FsbCBkYXkmcXVvdDsgPGVtPihjYXNlIGluc2Vuc2l0aXZlKTwvZW0+IGl0IHdpbGwgYXNzdW1lIGFuIGFsbCBkYXkgZXZlbnQgZnJvbSB0aGUgc3RhcnQgdGltZS48L2xpPg0KICAgPGxpPklmIHRoZSBlbmQgdGltZSBjb2x1bW4gaXMgZW1wdHksIHRoZW4gbm8gZW5kIHRpbWUgdmFsdWUgd2lsbCBiZSBjcmVhdGVkIGluIHRoZSBkYXRhYmFzZS48L2xpPg0KICA8L3VsPg0KPC9saT4NCjxsaT5DYXRlZ29yaWVzDQogIDx1bD4NCiAgIDxsaT5JZiBzcGVjaWZpZWQsIHRoZSBjYXRlZ29yeSBjb2x1bW4gY2FuIGNvbnRhaW4gYSBsaXN0IChzZXBhcmF0ZWQgYnkgOykgb2YgY2F0ZWdvcnkgbmFtZXMgZm9yIHdoaWNoIHRoZSBldmVudCBzaG91bGQgYmVsb25nLjwvbGk+DQogICA8bGk+Q2F0ZWdvcnkgbmFtZXMgYXJlIGNhc2Ugc2Vuc2l0aXZlLjwvbGk+DQogICA8bGk+Q2F0ZWdvcmllcyBhcmUgbm90IGNyZWF0ZWQgaWYgdGhleSBkbyBub3QgZXhpc3QuPC9saT4NCiAgPC91bD4NCjwvbGk+DQo8bGk+Q3VzdG9tIEZpZWxkczoNCiAgPHVsPg0KICAgIDxsaT5DdXN0b20gZmllbGQgbmFtZXMgKGV2ZW4gaW4gdGhlIGZpcnN0IGxpbmUgdGhhdCBkZXRlcm1pbmVzIHRoZSBmaWVsZCBtYXBwaW5nKSBhcmUgY2FzZSBzZW5zaXRpdmUuPC9saT4NCiAgICA8bGk+Q3V0b20gZmllbGRzIGFyZSBub3QgY3JlYXRlZCBpZiBzcGVjaWZpZWQgaW4gdGhlIENTViBmaWxlLiAgVW5rbm93biBjdXN0b20gZmllbGQgY29sdW1ucyB3aWxsIGJlIGlnbm9yZWQuPC9saT4NCiAgICA8bGk+Q3VzdG9tIGZpZWxkcyBvZiB0eXBlICZxdW90O2ZpbGUmcXVvdDsgY2Fubm90IGJlIGltcG9ydGVkLiAgVGhlIGVudGlyZSBpbXBvcnQgb3BlcmF0aW9uIHdpbGwgZmFpbC48L2xpPg0KICA8L3VsPg0KICA8L2xpPg0KICA8L3VsPg0KPC9saT4NCjxsaT5BIHNhbXBsZSBjc3YgZmlsZSBleGlzdHMgaW4gdGhlIG1vZHVsZXMgc291cmNlIGNvZGUgZGlyZWN0b3J5LjwvbGk+DQo8L3VsPic7CiRsYW5nWydwcm9tcHRfY3N2X2ZpbGUnXSA9ICdTZWxlY3QgSW1wb3J0IEZpbGUnOwokbGFuZ1snZGVsZXRlJ10gPSAnU2lsJzsKJGxhbmdbJ2NkX2NvbXBhbnknXSA9ICdDb21wYW55IERpcmVjdG9yeSBDb21wYW55JzsKJGxhbmdbJ2RmbHRfdXJscHJlZml4J10gPSAnRGVmYXVsdCBVUkwgcHJlZml4IGZvciBQcmV0dHkgVVJMUyc7CiRsYW5nWydkZmx0X2FsbGRheWV2ZW50J10gPSAnTmV3IGV2ZW50cyBhcmUgJnF1b3Q7QWxsIERheSZxdW90OyBldmVudHMgYnkgZGVmYXVsdCc7CiRsYW5nWydkZmx0X3N0YXJ0dGltZSddID0gJ0RlZmF1bHQgc3RhcnQgdGltZSBmb3IgbmV3IGV2ZW50cyc7CiRsYW5nWydpbmZvX2RmbHRfc3RhcnR0aW1lJ10gPSAnPGVtPihhcHBsaWVzIG9ubHkgaWYgbmV3IGV2ZW50cyBhcmUgbm90ICZxdW90O0FsbCBEYXkmcXVvdDsgZXZlbnRzLik8L2VtPic7CiRsYW5nWydzZWFyY2hfdHlwZSddID0gJ1NlYXJjaCBUeXBlJzsKJGxhbmdbJ3NlYXJjaF9hbnknXSA9ICdSZXR1cm4gcmVzdWx0cyBtYXRjaGluZyBhbnkgd29yZCc7CiRsYW5nWydzZWFyY2hfYWxsJ10gPSAnUmV0dXJuIHJlc3VsdHMgbWF0Y2hpbmcgYWxsIHdvcmRzJzsKJGxhbmdbJ2luZm9fY3VzdG9tZmllbGRzJ10gPSAnPHNwYW4gc3R5bGU9JnF1b3Q7Y29sb3I6IHJlZDsmcXVvdDs+Tm90ZTo8L3NwYW4+IE9ubHkgdGV4dCBmaWVsZHMgYXJlIHNlYXJjaGFibGUuICBDbGlja2luZyB0aGUgY2hlY2hib3ggb24gb3RoZXIgZmllbGQgdHlwZXMgd2lsbCBoYXZlIG5vIGVmZmVjdC4nOwokbGFuZ1snc2VhcmNoYWJsZSddID0gJ0FyYW5hYmlsaXInOwokbGFuZ1snaGVscF9wYXJhbV9lZGl0ZXZlbnR0ZW1wbGF0ZSddID0gJ0FwcGxpY2FibGUgb25seSB0byB0aGUgbXlldmVudHMgYWN0aW9uLCB0aGlzIHBhcmFtZXRlciBhbGxvd3Mgc3BlY2lmeWluZyBhIG5vbiBkZWZhdWx0IGVkaXQgZXZlbnQgdGVtcGxhdGUgdG8gdXNlIHdoZW4gYSB1c2VyIGNyZWF0ZXMgb3IgZWRpdHMgYW4gZXZlbnQnOwokbGFuZ1snaGVscF9wYXJhbV9lZGl0cGFnZSddID0gJ0FwcGxpY2FibGUgb25seSB0byB0aGUgbXlldmVudHMgYWN0aW9uLCB0aGlzIHBhcmFtZXRlciBhbGxvd3Mgc3BlY2lmeWluZyBhIGRpZmZlcmVudCBwYWdlIGZvciB0aGUgZWRpdCBmb3JtLic7CiRsYW5nWydoZWxwX3BhcmFtX215ZXZlbnRzdGVtcGxhdGUnXSA9ICdBcHBsaWNhYmxlIG9ubHkgdG8gdGhlIG15ZXZlbnRzIGFjdGlvbiwgdGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHNwZWNpZnlpbmcgYSBub24gZGVmYXVsdCB0ZW1wbGF0ZSB0byB1c2UnOwokbGFuZ1snY2FsX2VkaXRfZXZlbnQnXSA9ICdUYWt2aW0gRXRraW5sacSfaW5pIEQmdXVtbDt6ZW5sZSc7CiRsYW5nWydlcnJvcl9kYmVycm9yJ10gPSAnRGF0YWJhc2UgRXJyb3InOwokbGFuZ1snc3VibWl0J10gPSAnRyZvdW1sO25kZXInOwokbGFuZ1snaW5mb19zeXNkZmx0X2VkaXRldmVudF90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0ICZxdW90O0VkaXQgRXZlbnQmcXVvdDsgVGVtcGxhdGUnOwokbGFuZ1snaW5mb19zeXNkZmx0X215ZXZlbnRzX3RlbXBsYXRlJ10gPSAnU3lzdGVtIERlZmF1bHQgJnF1b3Q7TXkgRXZlbnRzJnF1b3Q7IFRlbXBsYXRlJzsKJGxhbmdbJ3Byb21wdF9mZWVkaXRfZ3JvdXAnXSA9ICdNZW1iZXJzIG9mIHRoaXMgRkVVIGdyb3VwIGNhbiBhZGQgZXZlbnRzJzsKJGxhbmdbJ3Byb21wdF9mZWVkaXRfcGFnZSddID0gJ0RlZmF1bHQgcGFnZSBmb3IgdGhlIGZyb250ZW5kIGVkaXQgZm9ybS4nOwokbGFuZ1snbm9uZSddID0gJ05vbmUnOwokbGFuZ1snb3duZXInXSA9ICdTYWhpcCc7CiRsYW5nWydjYWxfZWRpdGV2ZW50X3RlbXBsYXRlcyddID0gJ0VkaXQgRXZlbnQgRm9ybSBUZW1wbGF0ZXMnOwokbGFuZ1snaW5mb19lZGl0ZXZlbnRfdGVtcGxhdGVfdGFiJ10gPSAnVGhlIGxpc3Qgb2YgdGVtcGxhdGVzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgdGhlIGVkaXQgZXZlbnQgZm9ybSc7CiRsYW5nWydlZGl0ZXZlbnR0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnQWRkL0VkaXQgYW4gRWRpdCBFdmVudCBGb3JtIFRlbXBsYXRlJzsKJGxhbmdbJ2NhbF9teWV2ZW50c190ZW1wbGF0ZXMnXSA9ICdNeSBFdmVudHMgTGlzdCBUZW1wbGF0ZXMnOwokbGFuZ1snaW5mb19teWV2ZW50c190ZW1wbGF0ZV90YWInXSA9ICdUaGUgbGlzdCBvZiB0ZW1wbGF0ZXMgdGhhdCBhcmUgYXZhaWxhYmxlIHRvIGRpc3BsYXkgYSBsaXN0IG9mIHVzZXIgZXZlbnRzJzsKJGxhbmdbJ215ZXZlbnRzdGVtcGxhdGVfYWRkZWRpdCddID0gJ0FkZC9FZGl0IGEgJnF1b3Q7TXkgRXZlbnRzJnF1b3Q7IHJlcG9ydCB0ZW1wbGF0ZSc7CiRsYW5nWydhcmV5b3VzdXJlX3JlbW92ZWNvbmZsaWN0aW5nJ10gPSAnVGhpcyBhY3Rpb24gd2lsbCByZW1vdmUgYW55IGV2ZW50cyB0aGF0IGNvbmZsaWN0IHdpdGggbm9uLW92ZXJsYXBwYWJsZSBldmVudHMuICBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZG8gdGhpcz8nOwokbGFuZ1snZmlsdGVyX2NvbmZsaWN0aW5nJ10gPSAnJkNjZWRpbDtha8SxxZ9hbmxhcsSxIEZpbHRyZWxlJzsKJGxhbmdbJ292ZXJsYXBfYWN0aW9uX3JlbW92ZSddID0gJ1NpbGVudGx5IHJlbW92ZSBjb25mbGljdGluZyBldmVudHMnOwokbGFuZ1snb3ZlcmxhcF9hY3Rpb25fZXJyb3InXSA9ICdEaXNwbGF5IGFuIGVycm9yJzsKJGxhbmdbJ3Byb21wdF9vdmVybGFwX2FjdGlvbiddID0gJ1doYXQgc2hvdWxkIGhhcHBlbiB3aGVuIGEgY29uZmxpY3QgaXMgZGV0ZWN0ZWQgZHVyaW5nIGVkaXRpbmcgb3IgYWRkaW5nIG9mIGFuIGV2ZW50JzsKJGxhbmdbJ2Vycm9yX2V2ZW50X2NvbmZsaWN0J10gPSAnVGhlIGV2ZW50IHZhbHVlcyBzcGVjaWZpZWQgb3ZlcmxhcCB3aXRoIGFuIGV4aXN0aW5nIGV2ZW50IHRoYXQgZG9lcyBub3QgYWxsb3cgY29uZmxpY3RzJzsKJGxhbmdbJ2NhbF9pbmZvX292ZXJsYXAnXSA9ICdBcHBsaWVzIG9ubHkgdG8gZXZlbnRzIHdpdGggYW4gZW5kIHRpbWUgKG9yIGFsbCBkYXkgZXZlbnRzKSc7CiRsYW5nWydjYWxfb3ZlcmxhcCddID0gJ0FsbG93IG5ldyBldmVudHMgdG8gb3ZlcmxhcCB3aXRoIHRoaXMgb25lJzsKJGxhbmdbJ3Byb21wdF9vdmVybGFwX3BvbGljeSddID0gJ0V2ZW50IE92ZXJsYXAgUG9saWN5JzsKJGxhbmdbJ3BvbGljeV9hbGwnXSA9ICdBbGwgRXZlbnRzIGNhbiBvdmVybGFwJzsKJGxhbmdbJ3BvbGljeV9ub25lJ10gPSAnTm8gRXZlbnRzIGNhbiBvdmVybGFwJzsKJGxhbmdbJ3BvbGljeV9pbmRpdmlkdWFsJ10gPSAnRGVjaWRlZCBvbiBhbiBldmVudCBieSBldmVudCBiYXNpcyc7CiRsYW5nWydsYmxfYmFjayddID0gJ0dlcmknOwokbGFuZ1snbGJsX3RlbXBsYXRlcyddID0gJ1RlbXBsYXRlcyc7CiRsYW5nWyd0ZXh0YXJlYSddID0gJ1RleHQgQXJlYSc7CiRsYW5nWydlcnJvcl9jYWxlbmRhcl9pbmNvbXBhdGlibGUnXSA9ICdXZSBoYXZlIGRldGVjdGVkIHRoYXQgdGhlIENhbGVuZGFyIG1vZHVsZSBpcyBhbHNvIGluc3RhbGxlZC4uICBUaGlzIG1vZHVsZSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSBDYWxlbmRhciBtb2R1bGUgYW5kIGNhbm5vdCBjby1leGlzdCB3aXRoIGl0IG9uIHRoZSBzYW1lIGluc3RhbGwuICBQbGVhc2UgdW5pbnN0YWxsIHRoZSBDYWxlbmRhciBtb2R1bGUnOwokbGFuZ1snZXJyb3JfZXZlbnRfbm90X2ZvdW5kJ10gPSAnRWl0aGVyIGV2ZW50X2lkIGlzIG5vdCBpbiB0aGUgZGF0YWJhc2UsIG9yIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgZXZlbnQgd2l0aCB0aGlzIGlkISAoJWQpJzsKJGxhbmdbJ2ZpcnN0X3BhZ2UnXSA9ICc8PCc7CiRsYW5nWydwcmV2X3BhZ2UnXSA9ICc8JzsKJGxhbmdbJ25leHRfcGFnZSddID0gJz4nOwokbGFuZ1snbGFzdF9wYWdlJ10gPSAnPj4nOwokbGFuZ1sncGFnZV9vZiddID0gJ1BhZ2UgJWQgb2YgJWQnOwokbGFuZ1snc2VhcmNoX3Jlc3VsdHMnXSA9ICdDYWxlbmRhciBTZWFyY2ggUmVzdWx0cyc7CiRsYW5nWydzZWFyY2hfd29yZHMnXSA9ICdTZWFyY2ggV29yZHMnOwokbGFuZ1snbm9fcmVzdWx0c19mb3VuZCddID0gJ05vIHJlc3VsdHMgZm91bmQgbWF0Y2hpbmcgdGhlIHF1ZXJ5IHNwZWNpZmllZCc7CiRsYW5nWydmcmVxdWVuY3knXSA9ICdGcmVrYW5zJzsKJGxhbmdbJ3NwZWNpZmllZF9kYXRlJ10gPSAnVXNlIHRoZSBzcGVjaWZpZWQgZGF0ZSc7CiRsYW5nWydmaXJzdF9zdW5kYXknXSA9ICdGaXJzdCBTdW5kYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZpcnN0X21vbmRheSddID0gJ0ZpcnN0IE1vbmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZmlyc3RfdHVlc2RheSddID0gJ0ZpcnN0IFR1ZXNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZpcnN0X3dlZG5lc2RheSddID0gJ0ZpcnN0IFdlZG5lc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZmlyc3RfdGh1cnNkYXknXSA9ICdGaXJzdCBUaHVyc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZmlyc3RfZnJpZGF5J10gPSAnRmlyc3QgRnJpZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydmaXJzdF9zYXR1cmRheSddID0gJ0ZpcnN0IFNhdHVyZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydzZWNvbmRfc3VuZGF5J10gPSAnU2Vjb25kIFN1bmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snc2Vjb25kX21vbmRheSddID0gJ1NlY29uZCBNb25kYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3NlY29uZF90dWVzZGF5J10gPSAnU2Vjb25kIFR1ZXNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3NlY29uZF93ZWRuZXNkYXknXSA9ICdTZWNvbmQgV2VkbmVzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydzZWNvbmRfdGh1cnNkYXknXSA9ICdTZWNvbmQgVGh1cnNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3NlY29uZF9mcmlkYXknXSA9ICdTZWNvbmQgRnJpZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydzZWNvbmRfc2F0dXJkYXknXSA9ICdTZWNvbmQgU2F0dXJkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3RoaXJkX3N1bmRheSddID0gJ1RoaXJkIFN1bmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1sndGhpcmRfbW9uZGF5J10gPSAnVGhpcmQgTW9uZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWyd0aGlyZF90dWVzZGF5J10gPSAnVGhpcmQgVHVlc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1sndGhpcmRfd2VkbmVzZGF5J10gPSAnVGhpcmQgV2VkbmVzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWyd0aGlyZF90aHVyc2RheSddID0gJ1RoaXJkIFRodXJzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWyd0aGlyZF9mcmlkYXknXSA9ICdUaGlyZCBGcmlkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ3RoaXJkX3NhdHVyZGF5J10gPSAnVGhpcmQgU2F0dXJkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZvdXJ0aF9zdW5kYXknXSA9ICdGb3VydGggU3VuZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydmb3VydGhfbW9uZGF5J10gPSAnRm91cnRoIE1vbmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZm91cnRoX3R1ZXNkYXknXSA9ICdGb3VydGggVHVlc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZm91cnRoX3dlZG5lc2RheSddID0gJ0ZvdXJ0aCBXZWRuZXNkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZvdXJ0aF90aHVyc2RheSddID0gJ0ZvdXJ0aCBUaHVyc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snZm91cnRoX2ZyaWRheSddID0gJ0ZvdXJ0aCBGcmlkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2ZvdXJ0aF9zYXR1cmRheSddID0gJ0ZvdXJ0aCBTYXR1cmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snbGFzdF9zdW5kYXknXSA9ICdMYXN0IFN1bmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snbGFzdF9tb25kYXknXSA9ICdMYXN0IE1vbmRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snbGFzdF90dWVzZGF5J10gPSAnTGFzdCBUdWVzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydsYXN0X3dlZG5lc2RheSddID0gJ0xhc3QgV2VkbmVzZGF5IG9mIHRoZSBNb250aCc7CiRsYW5nWydsYXN0X3RodXJzZGF5J10gPSAnTGFzdCBUaHVyc2RheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snbGFzdF9mcmlkYXknXSA9ICdMYXN0IEZyaWRheSBvZiB0aGUgTW9udGgnOwokbGFuZ1snbGFzdF9zYXR1cmRheSddID0gJ0xhc3QgU2F0dXJkYXkgb2YgdGhlIE1vbnRoJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRfcmVjdXJfbW9udGhseV9mcmVxJ10gPSAnSW52YWxpZCBmcmVxdWVuY3kuLi4uIHlvdSBjYW5ub3Qgc3BlY2lmeSBib3RoIHRoZSBzcGVjaWZpZWQgZGF0ZSBBTkQgb3RoZXIgdmFsdWVzJzsKJGxhbmdbJ3NlYXJjaHJlc3VsdHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZGQvRWRpdCBhIFNlYXJjaCBSZXN1bHQgVGVtcGxhdGUnOwokbGFuZ1snaW5mb19zZWFyY2hyZXN1bHRfdGVtcGxhdGVfdGFiJ10gPSAnVGhlIGxpc3Qgb2YgdGVtcGxhdGVzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgdGhlIHNlYXJjaCByZXN1bHRzIGRpc3BsYXknOwokbGFuZ1snaW5mb19zeXNkZmx0X3NlYXJjaHJlc3VsdF90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IFNlYXJjaCBSZXN1bHQgVGVtcGxhdGUnOwokbGFuZ1snY2FsX3NlYXJjaF9yZXN1bHRfdGVtcGxhdGVzJ10gPSAnU2VhcmNoIFJlc3VsdCBUZW1wbGF0ZXMnOwokbGFuZ1snZXJyb3JfcXVlcnlfZmFpbGVkJ10gPSAnRGF0YWJhc2UgUXVlcnkgRmFpbGVkJzsKJGxhbmdbJ2Vycm9yX3NlYXJjaF9pbnZhbGlkX2RhdGVzJ10gPSAnSW52YWxpZCBTZWFyY2ggRGF0ZXMgU3BlY2lmaWVkJzsKJGxhbmdbJ3RleHQnXSA9ICdUZXh0JzsKJGxhbmdbJ3NlYXJjaCddID0gJ0FyYW1hJzsKJGxhbmdbJ2NhdGVnb3J5J10gPSAnS2F0ZWdvcmknOwokbGFuZ1snaW5mb19zeXNkZmx0X3NlYXJjaF90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IFNlYXJjaCBGb3JtIFRlbXBsYXRlJzsKJGxhbmdbJ3NlYXJjaHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZGQvRWRpdCBhIFNlYXJjaCBGb3JtIFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc2VhcmNoX3RlbXBsYXRlX3RhYiddID0gJ1RoZSBsaXN0IG9mIHRlbXBsYXRlcyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIHRoZSBzZWFyY2ggZm9ybSc7CiRsYW5nWydjYWxfc2VhcmNoX2Zvcm1fdGVtcGxhdGVzJ10gPSAnU2VhcmNoIEZvcm0gVGVtcGxhdGVzJzsKJGxhbmdbJ21heCddID0gJ21heCc7CiRsYW5nWyd0aW1lcyddID0gJ2tlcmUnOwokbGFuZ1snb24nXSA9ICdvbic7CiRsYW5nWydhcmV5b3VzdXJlX3VuaW5zdGFsbCddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkbyB0aGlzPyAgQ29udGludWluZyB3aWxsIHBlcm1hbmVuZW50bHkgZXJhc2UgYWxsIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbW9kdWxlLic7CiRsYW5nWydwb3N0X3VuaW5zdGFsbCddID0gJ1RoZSBDYWxlbmRhciBtb2R1bGUgaGFzIGJlZW4gdW5pbnN0YWxsZWQgYW5kIGFsbCBldmVudCBhbmQgdGVtcGxhdGUgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbW92ZWQnOwokbGFuZ1snZmllbGR1cGRhdGVkJ10gPSAnRmllbGQgVXBkYXRlZCc7CiRsYW5nWydldmVyeSddID0gJ0hlcic7CiRsYW5nWydvciddID0gJ3lhZGEnOwokbGFuZ1sndXBkYXRlX2NoaWxkcmVuJ10gPSAnVXBkYXRlIENoaWxkIEV2ZW50cyc7CiRsYW5nWydlcnJvcl9ub2NhdGVnb3J5J10gPSAnWW91IG11c3Qgc2VsZWN0IGF0IGxlYXN0IG9uZSBjYXRlZ29yeSc7CiRsYW5nWydlcnJvcl9ub3RoaW5nc2VsZWN0ZWQnXSA9ICdOb3RoaW5nIGhhcyBiZWVuIHNlbGVjdGVkIHRvIGRlbGV0ZSc7CiRsYW5nWydlcnJvcl9ldmVudG92ZXJsYXAnXSA9ICdUaGUgcmVjdXJpbmcgZXZlbnQgcGFyYW1ldGVycyB5b3UgaGF2ZSBzcGVjaWZpZWQgd291bGQgcmVzdWx0IGluIG92ZXJsYXBwaW5nIGV2ZW50cy4nOwokbGFuZ1sncmVjdXJzJ10gPSAnWWluZWxlbWUnOwokbGFuZ1snZXJyb3JfaW52YWxpZF9kYXRlcyddID0gJ09uZSBvciBtb3JlIG9mIHRoZSBkYXRlIHZhbHVlcyBlbnRlcmVkIHdlcmUgaW52YWxpZCc7CiRsYW5nWydzdW5kYXknXSA9ICdQYXphcic7CiRsYW5nWydtb25kYXknXSA9ICdQYXphcnRlc2knOwokbGFuZ1sndHVlc2RheSddID0gJ1NhbMSxJzsKJGxhbmdbJ3dlZG5lc2RheSddID0gJyZDY2VkaWw7YXLFn2FtYmEnOwokbGFuZ1sndGh1cnNkYXknXSA9ICdQZXLFn2VtYm1lJzsKJGxhbmdbJ2ZyaWRheSddID0gJ0N1bWEnOwokbGFuZ1snc2F0dXJkYXknXSA9ICdDdW1hcnRlc2knOwokbGFuZ1snYWJicl9zdW5kYXknXSA9ICdQeic7CiRsYW5nWydhYmJyX21vbmRheSddID0gJ1B0JzsKJGxhbmdbJ2FiYnJfdHVlc2RheSddID0gJ1NhJzsKJGxhbmdbJ2FiYnJfd2VkbmVzZGF5J10gPSAnJkNjZWRpbDthJzsKJGxhbmdbJ2FiYnJfdGh1cnNkYXknXSA9ICdQZSc7CiRsYW5nWydhYmJyX2ZyaWRheSddID0gJ0N1JzsKJGxhbmdbJ2FiYnJfc2F0dXJkYXknXSA9ICdDdCc7CiRsYW5nWyd3ZWVrZGF5cyddID0gJ0hhZnRhIGkmY2NlZGlsO2knOwokbGFuZ1sncGx1cmFsX2RhaWx5J10gPSAnRyZ1dW1sO25sZXInOwokbGFuZ1sncGx1cmFsX3dlZWtseSddID0gJ0hhZnRhbGFyJzsKJGxhbmdbJ3BsdXJhbF9tb250aGx5J10gPSAnQXlsYXInOwokbGFuZ1sncGx1cmFsX3llYXJseSddID0gJ1nEsWxsYXInOwokbGFuZ1snbm8nXSA9ICdIYXnEsXInOwokbGFuZ1snZGFpbHknXSA9ICdHJnV1bWw7bmwmdXVtbDtrJzsKJGxhbmdbJ3dlZWtseSddID0gJ0hhZnRhbMSxayc7CiRsYW5nWydtb250aGx5J10gPSAnQXlsxLFrJzsKJGxhbmdbJ3llYXJseSddID0gJ1nEsWxsxLFrJzsKJGxhbmdbJ2ludGVydmFsJ10gPSAnVGVrcmFybGEnOwokbGFuZ1snY2FsX3JlY3VyX2RldGFpbHMnXSA9ICdZaW5lbGVuZW4gRXRraW5saWsgRGV0YXlsYXLEsSc7CiRsYW5nWyd1bmxpbWl0ZWQnXSA9ICdMaW1pdHNpeic7CiRsYW5nWydtYXhfcmVjdXJfZXZlbnRzJ10gPSAnTWF4aW11bSBudW1iZXIgb2YgY2hpbGQgZXZlbnRzJzsKJGxhbmdbJ3VzZV90b19kYXRlJ10gPSAnQml0acWfIGcmdXVtbDtuJnV1bWw7IGJlbGlybGV5aW4nOwokbGFuZ1snY2FuY2VsJ10gPSAnVmF6Z2UmY2NlZGlsOyc7CiRsYW5nWydzaG93X2NoaWxkX2V2ZW50cyddID0gJ1Nob3cgQ2hpbGQgRXZlbnRzIDxlbT4obWF5IHJlc3VsdCBpbiB2ZXJ5IGxvbmcgZGlzcGxheSk8L2VtPic7CiRsYW5nWyduL2EnXSA9ICduL2EnOwokbGFuZ1sncmVjdXJzX3VudGlsJ10gPSAnUmVjdXIgVW50aWwnOwokbGFuZ1sncGFyZW50J10gPSAnJlV1bWw7c3QnOwokbGFuZ1sncmVjdXJfcGVyaW9kJ10gPSAnWWluZWxlbWUgUGVyaXlvZHUnOwokbGFuZ1snZmlsdGVyJ10gPSAnRmlsdHJlJzsKJGxhbmdbJ3N0YXJ0X2RhdGUnXSA9ICdCYcWfbGFtYSBUYXJpaGknOwokbGFuZ1snZW5kX2RhdGUnXSA9ICdCaXRpxZ8gVGFyaWhpJzsKJGxhbmdbJ2luZm9fdXBjb21pbmdsaXN0X3RlbXBsYXRlX3RhYiddID0gJ1RoZSBsaXN0IG9mIHRlbXBsYXRlcyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIHVwY29taW5nbGlzdCB2aWV3cyc7CiRsYW5nWyd1cGNvbWluZ2xpc3R0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnQWRkL0VkaXQgYW4gVXBjb21pbmdsaXN0IERpc3BsYXkgVGVtcGxhdGUnOwokbGFuZ1snaW5mb19zeXNkZmx0X3VwY29taW5nbGlzdF90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IFVwY29taW5nbGlzdCBUZW1wbGF0ZSc7CiRsYW5nWydpbmZvX2xpc3RfdGVtcGxhdGVfdGFiJ10gPSAnVGhlIGxpc3Qgb2YgdGVtcGxhdGVzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgbGlzdCB2aWV3cyc7CiRsYW5nWydsaXN0dGVtcGxhdGVfYWRkZWRpdCddID0gJ0FkZC9FZGl0IGFuIExpc3QgRGlzcGxheSBUZW1wbGF0ZSc7CiRsYW5nWydpbmZvX3N5c2RmbHRfbGlzdF90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IExpc3QgVGVtcGxhdGUnOwokbGFuZ1snaW5mb19ldmVudF90ZW1wbGF0ZV90YWInXSA9ICdUaGUgbGlzdCBvZiB0ZW1wbGF0ZXMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBldmVudCB2aWV3cyc7CiRsYW5nWydldmVudHRlbXBsYXRlX2FkZGVkaXQnXSA9ICdBZGQvRWRpdCBhbiBFdmVudCBEaXNwbGF5IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9ldmVudF90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IEV2ZW50IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fY2FsZW5kYXJfdGVtcGxhdGVfdGFiJ10gPSAnVGhlIGxpc3Qgb2YgdGVtcGxhdGVzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgY2FsZW5kYXIgdmlld3MnOwokbGFuZ1snY2FsZW5kYXJ0ZW1wbGF0ZV9hZGRlZGl0J10gPSAnQWRkL0VkaXQgYSBDYWxlbmRhciBEaXNwbGF5IFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ1N5c3RlbSBEZWZhdWx0IENhbGVuZGFyIFRlbXBsYXRlJzsKJGxhbmdbJ2luZm9fc3lzZGZsdF90ZW1wbGF0ZSddID0gJ1RoaXMgZm9ybSBkZWZpbmVzIHRoZSB0ZW1wbGF0ZSB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIHlvdSBjbGljayAmcXVvdDtOZXcgVGVtcGxhdGUmcXVvdDsgaW4gdGhlIGFwcHJvcHJpYXRlIHRhYi4gIENoYW5naW5nIHRoaXMgdmFsdWUgd2lsbCBoYXZlIG5vIGltbWVkaWF0ZSBlZmZlY3Qgb24gdGhlIGRpc3BsYXlzIGdlbmVyYXRlZCBmcm9tIHRoaXMgbW9kdWxlLic7CiRsYW5nWydldmVudGRlc2MtRXZlbnRBZGRlZCddID0gJ0NhbGxlZCBhZnRlciBhZGRpbmcgYSBjYWxlbmRhciBldmVudCc7CiRsYW5nWydldmVudGRlc2MtRXZlbnRFZGl0ZWQnXSA9ICdDYWxsZWQgYWZ0ZXIgZWRpdGluZyBhbiBleGlzdGluZyBjYWxlbmRhciBldmVudCc7CiRsYW5nWydldmVudGRlc2MtRXZlbnREZWxldGVkJ10gPSAnQ2FsbGVkIGFmdGVyIGFuIGV2ZW50IGhhcyBiZWVuIGRlbGV0ZWQnOwokbGFuZ1snZXZlbnRkZXNjLUNhdGVnb3J5QWRkZWQnXSA9ICdDYWxsZWQgYWZ0ZXIgYSBjYXRlZ29yeSBpcyBjcmVhdGVkJzsKJGxhbmdbJ2V2ZW50ZGVzYy1DYXRlZ29yeUVkaXRlZCddID0gJ0NhbGxlZCBhZnRlciBhIGNhdGVnb3J5IGlzIGVkaXRlZCc7CiRsYW5nWydldmVudGRlc2MtQ2F0ZWdvcnlEZWxldGVkJ10gPSAnQ2FsbGVkIGFmdGVyIGEgY2F0ZWdvcnkgaXMgZGVsZXRlZCc7CiRsYW5nWydldmVudGhlbHAtRXZlbnRBZGRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIGFkZGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7ZXZlbnRfdGl0bGVcJnF1b3Q7IC0gRXZlbnQgVGl0bGU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9zdW1tYXJ5XCZxdW90OyAtIFN1bW1hcnkgVGV4dDwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RldGFpbHNcJnF1b3Q7IC0gRGV0YWlsZWQgRGVzY3JpcHRpb248L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX3N0YXJ0XCZxdW90OyAtIFRoZSBldmVudCBzdGFydCBkYXRlL3RpbWU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX2VuZFwmcXVvdDsgLSBUaGUgZXZlbnQgZW5kIGRhdGUvdGltZTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2NyZWF0ZWRfYnlcJnF1b3Q7IC0gVGhlIHVzZXJpZCBvZiB0aGUgYXV0aG9yPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfaWRcJnF1b3Q7IC0gVGhlIGV2ZW50IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50RWRpdGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgZXZlbnQgaXMgZWRpdGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7ZXZlbnRfdGl0bGVcJnF1b3Q7IC0gRXZlbnQgVGl0bGU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9zdW1tYXJ5XCZxdW90OyAtIFN1bW1hcnkgVGV4dDwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2RldGFpbHNcJnF1b3Q7IC0gRGV0YWlsZWQgRGVzY3JpcHRpb248L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX3N0YXJ0XCZxdW90OyAtIFRoZSBldmVudCBzdGFydCBkYXRlL3RpbWU8L2xpPg0KPGxpPlwmcXVvdDtldmVudF9kYXRlX2VuZFwmcXVvdDsgLSBUaGUgZXZlbnQgZW5kIGRhdGUvdGltZTwvbGk+DQo8bGk+XCZxdW90O2V2ZW50X2NyZWF0ZWRfYnlcJnF1b3Q7IC0gVGhlIHVzZXJpZCBvZiB0aGUgYXV0aG9yPC9saT4NCjxsaT5cJnF1b3Q7ZXZlbnRfaWRcJnF1b3Q7IC0gVGhlIGV2ZW50IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUV2ZW50RGVsZXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGV2ZW50IGlzIGRlbGV0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtldmVudF9pZFwmcXVvdDsgLSBUaGUgZXZlbnQgaWQ8L2xpPg0KPC91bD4NCic7CiRsYW5nWydldmVudGhlbHAtQ2F0ZWdvcnlBZGRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGNhdGVnb3J5IGlzIGFkZGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfaWRcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IGlkPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5RWRpdGVkJ10gPSAnPHA+U2VudCB3aGVuIGEgY2FsZW5kYXIgY2F0ZWdvcnkgaXMgZWRpdGVkLjwvcD4NCjxoND5QYXJhbWV0ZXJzPC9oND4NCjx1bD4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfaWRcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IGlkPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfbmFtZVwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgbmFtZTwvbGk+DQo8bGk+XCZxdW90O2NhdGVnb3J5X29yZGVyXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBzb3J0IG9yZGVyPC9saT4NCjwvdWw+DQonOwokbGFuZ1snZXZlbnRoZWxwLUNhdGVnb3J5RGVsZXRlZCddID0gJzxwPlNlbnQgd2hlbiBhIGNhbGVuZGFyIGNhdGVnb3J5IGlzIGRlbGV0ZWQuPC9wPg0KPGg0PlBhcmFtZXRlcnM8L2g0Pg0KPHVsPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9pZFwmcXVvdDsgLSBUaGUgY2F0ZWdvcnkgaWQ8L2xpPg0KPGxpPlwmcXVvdDtjYXRlZ29yeV9uYW1lXCZxdW90OyAtIFRoZSBjYXRlZ29yeSBuYW1lPC9saT4NCjxsaT5cJnF1b3Q7Y2F0ZWdvcnlfb3JkZXJcJnF1b3Q7IC0gVGhlIGNhdGVnb3J5IHNvcnQgb3JkZXI8L2xpPg0KPC91bD4NCic7CiRsYW5nWydlcnJvcl9jc3ZfaW5zZXJ0J10gPSAnRXJyb3IgaW1wb3J0aW5nIGV2ZW50IGZyb20gY3N2IGF0IGxpbmUgJWQnOwokbGFuZ1snZXJyb3JfY3N2Zmlyc3RsaW5lZmxkbm90Zm91bmQnXSA9ICdBIHJlcXVpcmVkIGZpZWxkOiAlcywgY291bGQgbm90IGJlIGZvdW5kIGluIHRoZSBjc3YgZmlsZSBoZWFkZXIgbGluZSc7CiRsYW5nWydlcnJvcl9jc3ZpbnZhbGlkZmlyc3RsaW5lJ10gPSAnQ291bGQgbm90IGZpbmQgYSB2YWxpZCBmaXJzdCBsaW5lIG9mIHRoZSBDU1YgZmlsZSc7CiRsYW5nWydtc2dfZXZlbnRhZGRlZCddID0gJ0V2ZW50IEFkZGVkJzsKJGxhbmdbJ2Vycm9yX25vZXZlbnRuYW1lJ10gPSAnQSBuYW1lIGZvciB0aGUgZXZlbnQgaXMgcmVxdWlyZWQnOwokbGFuZ1snZXJyb3Jfbm91cGxvYWQnXSA9ICdFUlJPUjogTm8gdXBsb2FkZWQgZmlsZSBmb3VuZCc7CiRsYW5nWydlcnJvcl9pbnZhbGlkZmlsZW5hbWUnXSA9ICdFUlJPUjogVGhlIGZpbGUgdXBsb2FkZWQgY2Fubm90IGJlIGFjY2VwdGVkJzsKJGxhbmdbJ2Vycm9yX3Byb2JsZW13aXRodXBsb2FkJ10gPSAnRVJST1I6IEEgcHJvYmxlbSBvY2N1cnJlZCB0cnlpbmcgdG8gdXBsb2FkIHRoZSBmaWxlJzsKJGxhbmdbJ2Vycm9yX2ZpbGVjb3B5ZmFpbGVkJ10gPSAnRVJST1I6IEEgUHJvYmxlbSBvY2N1cnJlZCB3aGVuIGNvcHlpbmcgdGhlIGZpbGUgdG8gaXRzIGZpbmFsIGRlc3RpbmF0aW9uJzsKJGxhbmdbJ2Vycm9yX2ZpbGVleGlzdHMnXSA9ICdFUlJPUjogQSBmaWxlIGJ5IHRoYXQgbmFtZSBhbHJlYWR5IGV4aXN0cyc7CiRsYW5nWydlcnJvcl9jc3ZmaWxlbm90Zm91bmQnXSA9ICdFUlJPUjogQ291bGQgbm90IGZpbmQgdGhlIENTViBGaWxlJzsKJGxhbmdbJ2Vycm9yX2NhbnRvcGVuZmlsZSddID0gJ0VSUk9SOiBDYW5ub3Qgb3BlbiBmaWxlJzsKJGxhbmdbJ2Vycm9yX2NhdGVnb3J5ZXhpc3RzJ10gPSAnRVJST1I6IEEgY2F0ZWdvcnkgd2l0aCB0aGUgbmFtZSAlcyBhbHJlYWR5IGV4aXN0cyc7CiRsYW5nWydjYWxfaWQnXSA9ICdJZCc7CiRsYW5nWydjYWxfY2FsZW5kYXInXSA9ICdUYWt2aW0nOwokbGFuZ1snY2FsX2RlZmF1bHRfdGVtcGxhdGVzJ10gPSAnRGVmYXVsdCBUZW1wbGF0ZXMnOwokbGFuZ1snY2FsX2Rlc2NyaXB0aW9uJ10gPSAnQSZjY2VkaWw7xLFrbGFtYSc7CiRsYW5nWydjYWxfYWRkZXZlbnQnXSA9ICdFdGtpbmxpayBFa2xlJzsKJGxhbmdbJ2NhbF9pbXBvcnRfZXZlbnRzJ10gPSAnSW1wb3J0IEV0JzsKJGxhbmdbJ2NhbF9ldmVudHMnXSA9ICdFdGtpbmxpa2xlcic7CiRsYW5nWydjYWxfY2F0ZWdvcmllcyddID0gJ0thdGVnb3JpbGVyJzsKJGxhbmdbJ2NhbF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ0NhbGVuZGFyIFRlbXBsYXRlcyc7CiRsYW5nWydjYWxfbGlzdF90ZW1wbGF0ZSddID0gJ0xpc3QgVGVtcGxhdGVzJzsKJGxhbmdbJ2NhbF91cGNvbWluZ2xpc3RfdGVtcGxhdGUnXSA9ICdVcGNvbWluZyBUZW1wbGF0ZXMnOwokbGFuZ1snY2FsX2V2ZW50X3RlbXBsYXRlJ10gPSAnRXZlbnQgVGVtcGxhdGVzJzsKJGxhbmdbJ2NhbF9zZXR0aW5ncyddID0gJ0F5YXJsYXInOwokbGFuZ1snY2FsX3ByZXYnXSA9ICcmbGFxdW87ICZPdW1sO25jZWtpJzsKJGxhbmdbJ2NhbF9uZXh0J10gPSAnU29ucmFraSAmcmFxdW87JzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzX3VwZGF0ZWQnXSA9ICdDYXRlZ29yaWVzIFVwZGF0ZWQnOwokbGFuZ1snY2FsX3NldHRpbmdzX3VwZGF0ZWQnXSA9ICdTZXR0aW5ncyBVcGRhdGVkJzsKJGxhbmdbJ2NhbF9hZGRfZXZlbnQnXSA9ICdFdGtpbmxpayBFa2xlJzsKJGxhbmdbJ2NhbF9lZGl0J10gPSAnRCZ1dW1sO3plbmxlJzsKJGxhbmdbJ2NhbF9kZWxldGUnXSA9ICdTaWwnOwokbGFuZ1snY2FsX2FyZXlvdXN1cmUnXSA9ICdTaWxtZWsgaXN0ZWRpxJ9pbml6ZSBlbWluIG1pc2luaXo/JzsKJGxhbmdbJ2NhbF91cGRhdGVfdGVtcGxhdGUnXSA9ICdVcGRhdGUgVGVtcGxhdGUnOwokbGFuZ1snY2FsX3N1bmRheSddID0gJ1BhemFyJzsKJGxhbmdbJ2NhbF9tb25kYXknXSA9ICdQYXphcnRlc2knOwokbGFuZ1snY2FsX3R1ZXNkYXknXSA9ICdTYWzEsSc7CiRsYW5nWydjYWxfd2VkbmVzZGF5J10gPSAnJkNjZWRpbDthcsWfYW1iYSc7CiRsYW5nWydjYWxfdGh1cnNkYXknXSA9ICdQZXLFn2VtYmUnOwokbGFuZ1snY2FsX2ZyaWRheSddID0gJ0N1bWEnOwokbGFuZ1snY2FsX3NhdHVyZGF5J10gPSAnQ3VtYXJ0ZXNpJzsKJGxhbmdbJ2NhbF9zdW4nXSA9ICdQYXonOwokbGFuZ1snY2FsX21vbiddID0gJ1B0cyc7CiRsYW5nWydjYWxfdHVlcyddID0gJ1NhbCc7CiRsYW5nWydjYWxfd2VkJ10gPSAnJkNjZWRpbDthcic7CiRsYW5nWydjYWxfdGh1cnMnXSA9ICdQZXInOwokbGFuZ1snY2FsX2ZyaSddID0gJ0N1bSc7CiRsYW5nWydjYWxfc2F0J10gPSAnQ3RzJzsKJGxhbmdbJ2NhbF9qYW51YXJ5J10gPSAnT2Nhayc7CiRsYW5nWydjYWxfZmVicnVhcnknXSA9ICfFnnViYXQnOwokbGFuZ1snY2FsX21hcmNoJ10gPSAnTWFydCc7CiRsYW5nWydjYWxfYXByaWwnXSA9ICdOaXNhbic7CiRsYW5nWydjYWxfbWF5J10gPSAnTWF5xLFzJzsKJGxhbmdbJ2NhbF9qdW5lJ10gPSAnSGF6aXJhbic7CiRsYW5nWydjYWxfanVseSddID0gJ1RlbW11eic7CiRsYW5nWydjYWxfYXVndXN0J10gPSAnQcSfdXN0b3MnOwokbGFuZ1snY2FsX3NlcHRlbWJlciddID0gJ0V5bCZ1dW1sO2wnOwokbGFuZ1snY2FsX29jdG9iZXInXSA9ICdFa2ltJzsKJGxhbmdbJ2NhbF9ub3ZlbWJlciddID0gJ0thc8SxbSc7CiRsYW5nWydjYWxfZGVjZW1iZXInXSA9ICdBcmFsxLFrJzsKJGxhbmdbJ2NhbF9hZGQnXSA9ICdFa2xlJzsKJGxhbmdbJ2NhbF91cGRhdGUnXSA9ICdHJnV1bWw7bmNlbGxlJzsKJGxhbmdbJ2NhbF9ldmVudCddID0gJ0V0a2lubGlrJzsKJGxhbmdbJ2NhbF9kYXRlJ10gPSAnVGFyaWgnOwokbGFuZ1snY2FsX3N1bW1hcnknXSA9ICcmT3VtbDt6ZXQnOwokbGFuZ1snY2FsX2RldGFpbHMnXSA9ICdBeXLEsW50xLFsYXInOwokbGFuZ1snY2FsX21vcmUnXSA9ICdkZXZhbcSxID4+JzsKJGxhbmdbJ2NhbF9yZXR1cm4nXSA9ICdHZXJpIGQmb3VtbDtuJzsKJGxhbmdbJ2NhbF90byddID0gJ3RvJzsKJGxhbmdbJ2NhbF9wYXN0X2V2ZW50cyddID0gJ0dlJmNjZWRpbDttacWfIEV0a2lubGlrbGVyJzsKJGxhbmdbJ2NhbF91cGNvbWluZ19ldmVudHMnXSA9ICdZYWtsYcWfYW4gRXRraW5saWtsZXInOwokbGFuZ1snY2FsX2FueV9jYXRlZ29yeSddID0gJ0hlcmhhbmdpIGJpciBrYXRlZ29yaSc7CiRsYW5nWydjYWxfc2hvd19vbmx5X2V2ZW50c19pbiddID0gJ1Nob3cgT25seSBFdmVudHMgSW4nOwokbGFuZ1snY2FsX2ZpbHRlcl9ieSddID0gJ0ZpbHRlciBUaXRsZSBCeSA8ZW0+KHJlZ2V4KTwvZW0+JzsKJGxhbmdbJ2NhbF9nbyddID0gJ0dpdCc7CiRsYW5nWydjYWxfdGl0bGUnXSA9ICdCYcWfbMSxayc7CiRsYW5nWydjYWxfZnJvbWRhdGUnXSA9ICdCYcWfbGFtYSBUYXJpaGknOwokbGFuZ1snY2FsX3RvZGF0ZSddID0gJ0JpdGnFnyBUYXJpaGknOwokbGFuZ1snY2FsX3VwZGF0ZV9jYXRlZ29yaWVzJ10gPSAnS2F0ZWdvcmlsZXJpIGcmdXVtbDtuY2VsbGUnOwokbGFuZ1snY2FsX2xhbmd1YWdlJ10gPSAnRGlsJzsKJGxhbmdbJ2NhbF91cGRhdGVzZXR0aW5ncyddID0gJ0F5YXJsYXLEsSBHJnV1bWw7bmNlbGxlJzsKJGxhbmdbJ2NhbF91c2VfdHdlbHZlX2hvdXJfY2xvY2snXSA9ICdVc2UgdHdlbHZlIGhvdXIgY2xvY2sgb24gaG91ciBkcm9wLWRvd25zPyc7CiRsYW5nWydjYWxfZGVmYXVsdF9jYXRlZ29yeSddID0gJ1ZhcnNhecSxbGFuIEthdGVnb3JpJzsKJGxhbmdbJ2NhbF91cGRhdGVfZmllbGRzJ10gPSAnVXBkYXRlIEZpZWxkcyc7CiRsYW5nWydmb3JjZV9jYXRlZ29yeSddID0gJ0ZvcmNlIGF0IGxlYXN0IG9uZSBjYXRlZ29yeSc7CiRsYW5nWydzaG93cGFzdHllYXJzJ10gPSAnSG93IG1hbnkgeWVhcnMgaW4gdGhlIHBhc3QgaXMgYWxsb3dlZCc7CiRsYW5nWydzaG93ZnV0dXJleWVhcnMnXSA9ICdIb3cgbWFueSB5ZWFyIGludG8gdGhlIGZ1dHVyZSBpcyBhbGxvd2VkJzsKJGxhbmdbJ2hpZGVzdW1tYXJ5J10gPSAnU2hvdWxkIHRoZSBzdW1tYXJ5IGZpZWxkIGJlIGhpZGRlbic7CiRsYW5nWydoaWRlY29udGVudCddID0gJ1Nob3VsZCB0aGUgY29udGVudCBmaWVsZCBiZSBoaWRkZW4nOwokbGFuZ1snY2F0ZWdvcnlfcmVtaW5kZXInXSA9ICdQbGVhc2UgY2hlY2sgb25lIG9yIG1vcmUgY2F0ZWdvcmllcyBmb3IgdGhpcyBldmVudCc7CiRsYW5nWydtb2R1bGVfZXhhbXBsZV9zdHlsZXNoZWV0J10gPSAnQ2FsZW5kYXIgQ1NTIGV4YW1wbGUnOwokbGFuZ1snZXJyb3JfcGVybWlzc2lvbiddID0gJ1lvdSBuZWVkIHRoZSBhcHByb3ByaWF0ZSBwZXJtaXNzaW9uICglcykgdG8gYWNjZXNzIHRoaXMgZnVuY3Rpb25hbGl0eSc7CiRsYW5nWydpbnN0YWxsX3Bvc3RtZXNzYWdlJ10gPSAnTWFrZSBzdXJlIHRvIHNldCB0aGUgJnF1b3Q7TW9kaWZ5IENhbGVuZGFyJnF1b3Q7IHBlcm1pc3Npb24gb24gdXNlcnMgd2hvIHdpbGwgYmUgYWRtaW5pc3RlcmluZyBjYWxlbmRhciBldmVudHMuJzsKJGxhbmdbJ2RlbGV0ZXRhZ2dlZCddID0gJ0RlbGV0ZSB0YWdnZWQgZXZlbnRzJzsKJGxhbmdbJ2NvbmZpcm1kZWxldGV0YWdnZWQnXSA9ICdBcmUgeW91IHN1cmUgdGhlc2UgZXZlbnRzIHNob3VsZCBiZSBkZWxldGVkPyc7CiRsYW5nWyd0YWdnZWRkZWxldGVkJ10gPSAnVGFnZ2VkIGV2ZW50cyBzdWNjZXNzZnVsbHkgZGVsZXRlZCc7CiRsYW5nWyd0ZW1wbGF0ZXMnXSA9ICdUZW1wbGF0ZXMnOwokbGFuZ1sndGVtcGxhdGVfaGVscCddID0gJ1RlbXBsYXRlIEhlbHAnOwokbGFuZ1snZmlsZV90ZW1wbGF0ZXMnXSA9ICdGaWxlIFRlbXBsYXRlcyc7CiRsYW5nWydhZGR0ZW1wbGF0ZSddID0gJ0FkZCBUZW1wbGF0ZSc7CiRsYW5nWyd0ZW1wbGF0ZSddID0gJ1RlbXBsYXRlJzsKJGxhbmdbJ3RlbXBsYXRlbmFtZXRleHQnXSA9ICdUZW1wbGF0ZSBOYW1lJzsKJGxhbmdbJ2VkaXR0ZW1wbGF0ZSddID0gJ0VkaXQgVGVtcGxhdGUnOwokbGFuZ1snZGVsZXRldGVtcGxhdGUnXSA9ICdEZWxldGUgVGVtcGxhdGUnOwokbGFuZ1snbmV3dGVtcGxhdGUnXSA9ICdOZXcgVGVtcGxhdGUgTmFtZSc7CiRsYW5nWyd0ZW1wbGF0ZW5hbWVleGlzdHMnXSA9ICdFcnJvcjogQSB0ZW1wbGF0ZSB3aXRoIHRoYXQgbmFtZSBhbHJlYWR5IGV4aXN0cy4gUGxlYXNlIGNob29zZSBhIGRpZmZlcmVudCBuYW1lLic7CiRsYW5nWyd0ZW1wbGF0ZWltcG9ydGVkJ10gPSAnVGhlIHRlbXBsYXRlIHdhcyBzdWNlc3NmdWxseSBpbXBvcnRlZCBpbnRvIHRoZSBkYXRhYmFzZSBhbmQgaXMgbm93IGluc3RhbGxlZCBmb3IgdXNlLic7CiRsYW5nWyd2aWV3X2RlZmF1bHRfc3R5bGVzaGVldCddID0gJ1ZpZXcgRGVmYXVsdCBTdHlsZXNoZWV0JzsKJGxhbmdbJ2ZpbGVuYW1lJ10gPSAnRmlsZW5hbWUnOwokbGFuZ1snaW1wb3J0dGVtcGxhdGUnXSA9ICdJbXBvcnQgVGVtcGxhdGUnOwokbGFuZ1sndGVtcGxhdGVfZGVsZXRlZCddID0gJ1RoZSB0ZW1wbGF0ZSB3YXMgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQgZnJvbSB0aGUgZGF0YWJhc2UuJzsKJGxhbmdbJ3VwZGF0ZXRlbXBsYXRlc3VjY2VzcyddID0gJ1RoZSB0ZW1wbGF0ZSB3YXMgdXBkYXRlZCBzdWNjZXNzZnVsbHknOwokbGFuZ1sndXBkYXRldGVtcGxhdGVmYWlsdXJlJ10gPSAnQW4gZXJyb3Igb2NjdXJyZWQgdXBkYXRpbmcgdGhlIHRlbXBsYXRlJzsKJGxhbmdbJ3NldHRpbmdzc2F2ZWQnXSA9ICdTZXR0aW5ncyB3YXMgc2F2ZWQgc3VjY2Vzc2Z1bGx5JzsKJGxhbmdbJ2NhdGVnb3J5ZGVsZXRlZCddID0gJ0NhdGVnb3J5IGRlbGV0ZWQnOwokbGFuZ1snY2F0ZWdvcnl1cGRhdGVkJ10gPSAnQ2F0ZWdvcnkgdXBkYXRlZCc7CiRsYW5nWydjYXRlZ29yeWFkZGVkJ10gPSAnQ2F0ZWdvcnkgYWRkZWQnOwokbGFuZ1snZXZlbnRkZWxldGVkJ10gPSAnVGhlIGV2ZW50IHdhcyBkZWxldGVkJzsKJGxhbmdbJ2V2ZW50dXBkYXRlZCddID0gJ1RoZSBldmVudCB3YXMgdXBkYXRlZCc7CiRsYW5nWydkZWZhdWx0X3BhZ2VfZXJyb3InXSA9ICdFcnJvcjogWW91IG11c3Qgc2V0IGEgZGVmYXVsdCBwYWdlIGluIG9yZGVyIHRvIHVzZSBDYWxlbmRhciB3aXRoIHByZXR0eSBVUkxzIHR1cm5lZCBvbi4gUGxlYXNlIGdvIHRvIHRoZSBDYWxlbmRhciBzZXR0aW5ncyB0YWIgYW5kIGNob29zZSBvbmUuJzsKJGxhbmdbJ3RpbWVfYXQnXSA9ICdhdCc7CiRsYW5nWyd0eXBlJ10gPSAnVHlwZSc7CiRsYW5nWyduYW1lJ10gPSAnxLBzaW0nOwokbGFuZ1snb3JkZXInXSA9ICdTxLFyYWxhbWEnOwokbGFuZ1snZmllbGRhZGRlZCddID0gJ0ZpZWxkIFN1Y2Nlc3NmdWxseSBBZGRlZCc7CiRsYW5nWydmaWVsZGRlbGV0ZWQnXSA9ICdGaWVsZCBEZWxldGVkJzsKJGxhbmdbJ2ZpZWxkcyddID0gJ0Vrc3RyYSBFbGFubGFyJzsKJGxhbmdbJ3RleHRmaWVsZCddID0gJ1RleHQgRmllbGQnOwokbGFuZ1sndXBsb2FkZmllbGQnXSA9ICdGaWxlIHVwbG9hZCBmaWVsZCc7CiRsYW5nWydkZXNjcmlwdGlvbiddID0gJzxwPkNhbGVuZGFyIGlzIGEgbW9kdWxlIGZvciBkaXNwbGF5aW5nIGV2ZW50cyBvbiB5b3VyIHBhZ2UuIFdoZW4gdGhlDQoJCW1vZHVsZSBpcyBpbnN0YWxsZWQsIGEgQ2FsZW5kYXIgYWRtaW4gcGFnZSBpcyBhZGRlZCB0byB0aGUgY29udGVudCBtZW51DQoJCXRoYXQgd2lsbCBhbGxvdyB5b3UgdG8gbWFuYWdlIHlvdXIgZXZlbnRzLjwvcD4nOwokbGFuZ1snZGVmYXVsdGNhbGVuZGFycGFnZSddID0gJ0RlZmF1bHQgcGFnZSB0aGF0IGNvbnRhaW5zIENhbGVuZGFyLiBUaGlzIHBhZ2UgbXVzdCBjb250YWluIGEgU21hcnR5IHRhZyB0aGF0IGNhbGxzIENhbGVuZGFyLiBSZXF1aXJlZCBpZiB5b3UgdXNlIHRoZSBwcmV0dHkgVVJMcy4nOwokbGFuZ1sndXBsb2FkZGlyZWN0b3J5J10gPSAnRGlyZWN0b3J5IHdoZXJlIGZpbGUgdXBsb2FkcyBzaG91bGQgYmUgcGxhY2VkJzsKJGxhbmdbJ3VwbG9hZGZpbGV0eXBlcyddID0gJ0FsbG93ZWQgZmlsZSB0eXBlcyc7CiRsYW5nWyd1cGxvYWR1bmlxdWUnXSA9ICdFbnN1cmUgdW5pcXVlIGZpbGVuYW1lcyc7CiRsYW5nWyd0aHVtYl93aWR0aCddID0gJ1RodW1ibmFpbCBXaWR0aCc7CiRsYW5nWyd0aHVtYl9oZWlnaHQnXSA9ICdUaHVtYm5haWwgSGVpZ2h0JzsKJGxhbmdbJ2xhcmdlX3dpZHRoJ10gPSAnTGFyZ2UgSW1hZ2UgV2lkdGgnOwokbGFuZ1snbGFyZ2VfaGVpZ2h0J10gPSAnTGFyZ2UgSW1hZ2UgSGVpZ2h0JzsKJGxhbmdbJ2NhbF9yZWN1cl9wZXJpb2QnXSA9ICdZaW5lbGVtZWxlcic7CiRsYW5nWydjYWxfcmVjdXJfdW50aWwnXSA9ICdSZWN1cnMgVW50aWwnOwokbGFuZ1snaGVscF90ZW1wbGF0ZSddID0gJzxwPjxiPlByaW50IEF1dGhvciBOYW1lOjwvYj48L3A+DQo8Y29kZT5BdXRob3I6IHskZXZlbnQuYXV0aG9ybmFtZX08L2NvZGU+DQonOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4xMzYzMTM5MTU0LjEzNjQzMTE3MDkuMTM2NDMxMTcwOS4xMzY0MzExNzA5LjEnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1Myc7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTM2NDMxMTcwOS4xLjEudXRtY2NuPShkaXJlY3QpfHV0bWNzcj0oZGlyZWN0KXx1dG1jbWQ9KG5vbmUpJzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/zh_TW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2NhbF9jYWxlbmRhciddID0gJ+aXpeabhic7CiRsYW5nWydjYWxfZGVzY3JpcHRpb24nXSA9ICfliqDlhaUsIOe3qOi8ryDlkowg5Yiq6Zmk5LqL5Lu2JzsKJGxhbmdbJ2NhbF9hZGRldmVudCddID0gJ+WKoOWFpeS6i+S7tic7CiRsYW5nWydjYWxfaW1wb3J0X2V2ZW50cyddID0gJ+i8uOWFpeS6i+S7tic7CiRsYW5nWydjYWxfZXZlbnRzJ10gPSAn5LqL5Lu2JzsKJGxhbmdbJ2NhbF9jYXRlZ29yaWVzJ10gPSAn55uu6YyEJzsKJGxhbmdbJ2NhbF9jYWxlbmRhcl90ZW1wbGF0ZSddID0gJ+aXpeabhuaooeadvyc7CiRsYW5nWydjYWxfbGlzdF90ZW1wbGF0ZSddID0gJ+aooeadv+ebrumMhCc7CiRsYW5nWydjYWxfdXBjb21pbmdsaXN0X3RlbXBsYXRlJ10gPSAnVXBjb21pbmcg5qih5p2/JzsKJGxhbmdbJ2NhbF9ldmVudF90ZW1wbGF0ZSddID0gJ+aooeadv+S6i+S7tic7CiRsYW5nWydjYWxfc2V0dGluZ3MnXSA9ICfoqK3lrponOwokbGFuZ1snY2FsX3ByZXYnXSA9ICfCqyDkuIrkuIDpoIEnOwokbGFuZ1snY2FsX25leHQnXSA9ICfkuIvkuIDpoIEgwrsnOwokbGFuZ1snY2FsX2NhdGVnb3JpZXNfdXBkYXRlZCddID0gJ+abtOaWsOebrumMhCc7CiRsYW5nWydjYWxfc2V0dGluZ3NfdXBkYXRlZCddID0gJ+ioreWumuabtOaWsCc7CiRsYW5nWydjYWxfYWRkX2V2ZW50J10gPSAn5Yqg5YWl5LqL5Lu2JzsKJGxhbmdbJ2NhbF9lZGl0J10gPSAn57eo6LyvJzsKJGxhbmdbJ2NhbF9kZWxldGUnXSA9ICfliKrpmaQnOwokbGFuZ1snY2FsX2FyZXlvdXN1cmUnXSA9ICfkvaDnorrlrpropoHliKrpmaTll44/JzsKJGxhbmdbJ2NhbF91cGRhdGVfdGVtcGxhdGUnXSA9ICfmm7TmlrDmqKHmnb8nOwokbGFuZ1snY2FsX3N1bmRheSddID0gJ+aYn+acn+aXpSc7CiRsYW5nWydjYWxfbW9uZGF5J10gPSAn5pif5pyf5LiAJzsKJGxhbmdbJ2NhbF90dWVzZGF5J10gPSAn5pif5pyf5LqMJzsKJGxhbmdbJ2NhbF93ZWRuZXNkYXknXSA9ICfmmJ/mnJ/kuIknOwokbGFuZ1snY2FsX3RodXJzZGF5J10gPSAn5pif5pyf5ZubJzsKJGxhbmdbJ2NhbF9mcmlkYXknXSA9ICfmmJ/mnJ/kupQnOwokbGFuZ1snY2FsX3NhdHVyZGF5J10gPSAn5pif5pyf5YWtJzsKJGxhbmdbJ2NhbF9zdW4nXSA9ICfmmJ/mnJ/ml6UnOwokbGFuZ1snY2FsX21vbiddID0gJ+aYn+acn+S4gCc7CiRsYW5nWydjYWxfdHVlcyddID0gJ+aYn+acn+S6jCc7CiRsYW5nWydjYWxfd2VkJ10gPSAn5pif5pyf5LiJJzsKJGxhbmdbJ2NhbF90aHVycyddID0gJ+aYn+acn+Wbmyc7CiRsYW5nWydjYWxfZnJpJ10gPSAn5pif5pyf5LqUJzsKJGxhbmdbJ2NhbF9zYXQnXSA9ICfmmJ/mnJ/lha0nOwokbGFuZ1snY2FsX2phbnVhcnknXSA9ICfkuIDmnIgnOwokbGFuZ1snY2FsX2ZlYnJ1YXJ5J10gPSAn5LqM5pyIJzsKJGxhbmdbJ2NhbF9tYXJjaCddID0gJ+S4ieaciCc7CiRsYW5nWydjYWxfYXByaWwnXSA9ICflm5vmnIgnOwokbGFuZ1snY2FsX21heSddID0gJ+S6lOaciCc7CiRsYW5nWydjYWxfanVuZSddID0gJ+WFreaciCc7CiRsYW5nWydjYWxfanVseSddID0gJ+S4g+aciCc7CiRsYW5nWydjYWxfYXVndXN0J10gPSAn5YWr5pyIJzsKJGxhbmdbJ2NhbF9zZXB0ZW1iZXInXSA9ICfkuZ3mnIgnOwokbGFuZ1snY2FsX29jdG9iZXInXSA9ICfljYHmnIgnOwokbGFuZ1snY2FsX25vdmVtYmVyJ10gPSAn5Y2B5LiA5pyIJzsKJGxhbmdbJ2NhbF9kZWNlbWJlciddID0gJ+WNgeS6jOaciCc7CiRsYW5nWydjYWxfZGF0ZSddID0gJ+aXpeacnyc7CiRsYW5nWydjYWxfc3VtbWFyeSddID0gJ+e4vee1kCc7CiRsYW5nWydjYWxfZGV0YWlscyddID0gJ+ips+aDhSc7CiRsYW5nWydjYWxfbW9yZSddID0gJ+abtOWkmiA+Pic7CiRsYW5nWydjYWxfcmV0dXJuJ10gPSAn6L+U5ZueJzsKJGxhbmdbJ2NhbF90byddID0gJ+WIsCc7CiRsYW5nWydjYWxfdXBjb21pbmdfZXZlbnRzJ10gPSAn5Y2z5bCH5L6G6Ieo55qE5LqL5Lu2JzsKJGxhbmdbJ2NhbF9hbnlfY2F0ZWdvcnknXSA9ICfku7vkvZXnm67pjIQnOwokbGFuZ1snY2FsX3Nob3dfb25seV9ldmVudHNfaW4nXSA9ICfpoa/npLrllK/kuIDnmoTkuovku7blnKgnOwokbGFuZ1snY2FsX2ZpbHRlcl9ieSddID0gJ+mBjua/viBCeSc7CiRsYW5nWydjYWxfZ28nXSA9ICfljrsnOwokbGFuZ1snY2FsX3RpdGxlJ10gPSAn5qiZ6aGMJzsKJGxhbmdbJ2NhbF9mcm9tZGF0ZSddID0gJ+W+nuaXpeacnyc7CiRsYW5nWydjYWxfdG9kYXRlJ10gPSAn6L+E5LuKJzsKJGxhbmdbJ2NhbF91cGRhdGVfY2F0ZWdvcmllcyddID0gJ+abtOaWsOebrumMhCc7CiRsYW5nWydjYWxfbGFuZ3VhZ2UnXSA9ICfoqp7oqIAnOwokbGFuZ1snY2FsX3VwZGF0ZXNldHRpbmdzJ10gPSAn5pu05paw6Kit5a6aJzsKPz4K]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.category.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgpuYW1lc3BhY2UgQ0dDYWxlbmRhcjsKCmZpbmFsIGNsYXNzIGNhdGVnb3J5IGltcGxlbWVudHMgXEFycmF5QWNjZXNzCnsKICAgIHByaXZhdGUgc3RhdGljICRfY2FjaGVkX2NhdGVnb3JpZXM7CiAgICBwcml2YXRlICRfZGF0YSA9IGFycmF5KCk7CiAgICBwcml2YXRlICRfZGlydHk7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICAkbW9kID0gXGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfQ0dDQUxFTkRBUik7CiAgICAgICAgJHRoaXMtPl9kYXRhWydmZ2NvbG9yJ10gPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdkZmx0X2ZnY29sb3InLCcwMDAwMDAnKTsKICAgICAgICAkdGhpcy0+X2RhdGFbJ2JnY29sb3InXSA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ2RmbHRfYmdjb2xvcicsJ2ZmZmZmZicpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBPZmZzZXRHZXQoJGtleSkKICAgIHsKICAgICAgICBzd2l0Y2goICRrZXkgKSB7CiAgICAgICAgY2FzZSAnaWQnOgogICAgICAgIGNhc2UgJ29yZGVyJzoKICAgICAgICAgICAgaWYoIGlzc2V0KCR0aGlzLT5fZGF0YVska2V5XSkgKSByZXR1cm4gKGludCkkdGhpcy0+X2RhdGFbJGtleV07CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICduYW1lJzoKICAgICAgICBjYXNlICdiZ2NvbG9yJzoKICAgICAgICBjYXNlICdmZ2NvbG9yJzoKICAgICAgICAgICAgaWYoIGlzc2V0KCR0aGlzLT5fZGF0YVska2V5XSkgKSByZXR1cm4gdHJpbSgkdGhpcy0+X2RhdGFbJGtleV0pOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IFxFeGNlcHRpb24oJGtleS4nIGlzIG5vdCBhIHZhbGlkIG1lbWJlciBvZiBhICcuX19DTEFTU19fLicgb2JqZWN0Jyk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBPZmZzZXRTZXQoJGtleSwkdmFsdWUpCiAgICB7CiAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgIGNhc2UgJ2lkJzoKICAgICAgICBjYXNlICdvcmRlcic6CiAgICAgICAgICAgIC8vIHRoc2UgcHJvcGVydGllcyBjYW5ub3QgYmUgc2V0IHRoaXMgd2F5CiAgICAgICAgICAgIHRocm93IG5ldyBcRXhjZXB0aW9uKCJUaGUgJGtleSBtZW1iZXIgY2Fubm90IGJlIHNldCB0aGlzIHdheSBpbiBhICIuX19DTEFTU19fKTsKCiAgICAgICAgY2FzZSAnbmFtZSc6CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVska2V5XSA9IHRyaW0oJHZhbHVlKTsKICAgICAgICAgICAgJHRoaXMtPl9kaXJ0eSA9IHRydWU7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdiZ2NvbG9yJzoKICAgICAgICBjYXNlICdmZ2NvbG9yJzoKICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyRrZXldID0gdHJpbSgkdmFsdWUpOwogICAgICAgICAgICAkdGhpcy0+X2RpcnR5ID0gdHJ1ZTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBcRXhjZXB0aW9uKCRrZXkuJyBpcyBub3QgYSB2YWxpZCBtZW1iZXIgb2YgYSAnLl9fQ0xBU1NfXy4nIG9iamVjdCcpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gT2Zmc2V0RXhpc3RzKCRrZXkpCiAgICB7CiAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgIGNhc2UgJ2lkJzoKICAgICAgICBjYXNlICdvcmRlcic6CiAgICAgICAgY2FzZSAnbmFtZSc6CiAgICAgICAgY2FzZSAnYmdjb2xvcic6CiAgICAgICAgY2FzZSAnZmdjb2xvcic6CiAgICAgICAgICAgIGlmKCBpc3NldCgkdGhpcy0+X2RhdGFbJGtleV0pICkgcmV0dXJuIFRSVUU7CiAgICAgICAgICAgIHJldHVybiBGQUxTRTsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IFxFeGNlcHRpb24oJGtleS4nIGlzIG5vdCBhIHZhbGlkIG1lbWJlciBvZiBhICcuX19DTEFTU19fLicgb2JqZWN0Jyk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBPZmZzZXRVbnNldCgka2V5KQogICAgewogICAgICAgIHN3aXRjaCggJGtleSApIHsKICAgICAgICBjYXNlICdpZCc6CiAgICAgICAgY2FzZSAnb3JkZXInOgogICAgICAgICAgICAvLyB0aHNlIHByb3BlcnRpZXMgY2Fubm90IGJlIHNldCB0aGlzIHdheQogICAgICAgICAgICB0aHJvdyBuZXcgXEV4Y2VwdGlvbigiVGhlICRrZXkgbWVtYmVyIGNhbm5vdCBiZSBhZGp1c3RlZCB0aGlzIHdheSBpbiBhICIuX19DTEFTU19fKTsKCiAgICAgICAgY2FzZSAnbmFtZSc6CiAgICAgICAgICAgIHVuc2V0KCR0aGlzLT5fZGF0YVska2V5XSk7CiAgICAgICAgICAgICR0aGlzLT5fZGlydHkgPSB0cnVlOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnYmdjb2xvcic6CiAgICAgICAgY2FzZSAnZmdjb2xvcic6CiAgICAgICAgICAgIHVuc2V0KCR0aGlzLT5fZGF0YVska2V5XSk7CiAgICAgICAgICAgICR0aGlzLT5fZGlydHkgPSB0cnVlOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IFxFeGNlcHRpb24oJGtleS4nIGlzIG5vdCBhIHZhbGlkIG1lbWJlciBvZiBhICcuX19DTEFTU19fLicgb2JqZWN0Jyk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2YWxpZGF0ZSgpCiAgICB7CiAgICAgICAgaWYoICEkdGhpc1snbmFtZSddICkgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ25hbWUgY2Fubm90IGJlIGVtcHR5IGluIGEgJy5fX0NMQVNTX18uJyBvYmplY3QnKTsKICAgICAgICBpZiggaXNzZXQoJHRoaXMtPl9kYXRhWydpZCddKSAmJiAkdGhpcy0+X2RhdGFbJ2lkJ10gPCAwICkgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ2ludmFsaWQgaWQgaW4gJy5fX0NMQVNTX18pOwoKICAgICAgICAvLyB2YWxpZGF0ZSB0aGF0IHRoZSBuYW1lIGRvZXMgbm90IGV4aXN0CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICAgICAkbW9kID0gXGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfQ0dDQUxFTkRBUik7CiAgICAgICAgJHRtcCA9IG51bGw7CiAgICAgICAgaWYoIGlzc2V0KCR0aGlzLT5fZGF0YVsnaWQnXSkgJiYgJHRoaXMtPl9kYXRhWydpZCddID4gMCApIHsKICAgICAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBjYXRlZ29yeV9pZCBGUk9NICcuJG1vZC0+Y2F0ZWdvcmllc190YWJsZV9uYW1lLicgV0hFUkUgY2F0ZWdvcnlfbmFtZSA9ID8gQU5EIGNhdGVnb3J5X2lkICE9ID8nOwogICAgICAgICAgICAkdG1wID0gJGRiLT5HZXRPbmUoJHF1ZXJ5LGFycmF5KCR0aGlzWyduYW1lJ10sJHRoaXNbJ2lkJ10pKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcXVlcnkgPSAnU0VMRUNUIGNhdGVnb3J5X2lkIEZST00gJy4kbW9kLT5jYXRlZ29yaWVzX3RhYmxlX25hbWUuJyBXSEVSRSBjYXRlZ29yeV9uYW1lID0gPyc7CiAgICAgICAgICAgICR0bXAgPSAkZGItPkdldE9uZSgkcXVlcnksYXJyYXkoJHRoaXNbJ25hbWUnXSkpOwogICAgICAgIH0KICAgICAgICBpZiggJHRtcCApIHRocm93IG5ldyBcRXhjZXB0aW9uKCRtb2QtPkxhbmcoJ2Vycm9yX2NhdGVnb3J5ZXhpc3RzJywkdGhpc1snbmFtZSddKSk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIF9pbnNlcnQoKQogICAgewogICAgICAgICRkYiA9IFxjbXNtcygpLT5HZXREYigpOwogICAgICAgICRtb2QgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9DR0NBTEVOREFSKTsKCiAgICAgICAgLy8gZGV0ZXJtaW5lIGEgbmV3IHNlcXVlbmNlIGZvciBjYXRlZ29yaWVzLgogICAgICAgICR0aGlzLT5fZGF0YVsnaWQnXSA9ICRkYi0+R2VuSUQoJG1vZC0+Y2F0ZWdvcmllc190YWJsZV9uYW1lLidfc2VxJyk7CgogICAgICAgIC8vIGRldGVybWluZSBhIG5ldyBvcmRlcgogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgQ09BTEVTQ0UoTUFYKGNhdGVnb3J5X29yZGVyKSwwKSsxIEZST00gJy4kbW9kLT5jYXRlZ29yaWVzX3RhYmxlX25hbWU7CiAgICAgICAgJHRoaXMtPl9kYXRhWydvcmRlciddID0gKGludCkkZGItPkdldE9uZSgkcXVlcnkpOwoKICAgICAgICAvLyBpbnNlcnQgdGhlIHRoaW5nCiAgICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcuJG1vZC0+Y2F0ZWdvcmllc190YWJsZV9uYW1lLicgKGNhdGVnb3J5X2lkLGNhdGVnb3J5X25hbWUsY2F0ZWdvcnlfYmdjb2xvcixjYXRlZ29yeV9mZ2NvbG9yLGNhdGVnb3J5X29yZGVyKSBWQUxVRVMgKD8sPyw/LD8sPyknOwogICAgICAgICRkYnIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCR0aGlzWydpZCddLCR0aGlzWyduYW1lJ10sJHRoaXNbJ2JnY29sb3InXSwkdGhpc1snZmdjb2xvciddLCR0aGlzWydvcmRlciddKSk7CiAgICAgICAgJG1vZC0+U2VuZEV2ZW50KCdDYXRlZ29yeUFkZGVkJyxhcnJheSgnY2F0ZWdvcnlfaWQnPT4kdGhpc1snaWQnXSwnY2F0ZWdvcnlfbmFtZSc9PiR0aGlzWyduYW1lJ10sJ2NhdGVnb3J5X29yZGVyJz0+JHRoaXNbJ29yZGVyJ10pKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX3VwZGF0ZSgpCiAgICB7CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICAgICAkbW9kID0gXGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfQ0dDQUxFTkRBUik7CgogICAgICAgICRxdWVyeSA9ICdVUERBVEUgJy4kbW9kLT5jYXRlZ29yaWVzX3RhYmxlX25hbWUuJyBTRVQgY2F0ZWdvcnlfbmFtZSA9ID8sIGNhdGVnb3J5X2JnY29sb3IgPSA/LCBjYXRlZ29yeV9mZ2NvbG9yID0gPywgY2F0ZWdvcnlfb3JkZXIgPSA/CiAgICAgICAgICAgICAgICAgIFdIRVJFIGNhdGVnb3J5X2lkID0gPyc7CiAgICAgICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHRoaXNbJ25hbWUnXSwkdGhpc1snYmdjb2xvciddLCR0aGlzWydmZ2NvbG9yJ10sJHRoaXNbJ29yZGVyJ10sJHRoaXNbJ2lkJ10pKTsKICAgICAgICAkbW9kLT5TZW5kRXZlbnQoJ0NhdGVnb3J5RWRpdGVkJyxhcnJheSgnY2F0ZWdvcnlfaWQnPT4kdGhpc1snaWQnXSwnY2F0ZWdvcnlfbmFtZSc9PiR0aGlzWyduYW1lJ10sJ2NhdGVnb3J5X29yZGVyJz0+JHRoaXNbJ29yZGVyJ10pKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2F2ZSgpCiAgICB7CiAgICAgICAgaWYoICEkdGhpcy0+X2RpcnR5ICkgcmV0dXJuOwogICAgICAgICR0aGlzLT52YWxpZGF0ZSgpOwogICAgICAgIGlmKCAkdGhpc1snaWQnXSA9PSAwICkgewogICAgICAgICAgICAkdGhpcy0+X2luc2VydCgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5fdXBkYXRlKCk7CiAgICAgICAgfQogICAgICAgIHNlbGY6OiRfY2FjaGVkX2NhdGVnb3JpZXMgPSBudWxsOwogICAgICAgICR0aGlzLT5fZGlydHkgPSBudWxsOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gJmxvYWQoJGNhdGVnb3J5X2lkKQogICAgewogICAgICAgICRvYmogPSBudWxsOwogICAgICAgICRjYXRlZ29yaWVzID0gc2VsZjo6Z2V0X2NhdGVnb3JpZXMoVFJVRSk7CiAgICAgICAgaWYoICFpc3NldCgkY2F0ZWdvcmllc1skY2F0ZWdvcnlfaWRdKSApIHJldHVybiAkb2JqOwoKICAgICAgICAkcm93ID0gJGNhdGVnb3JpZXNbJGNhdGVnb3J5X2lkXTsKICAgICAgICAkb2JqID0gbmV3IHNlbGYoKTsKICAgICAgICAkb2JqLT5fZGF0YVsnaWQnXSA9ICRyb3dbJ2NhdGVnb3J5X2lkJ107CiAgICAgICAgJG9iai0+X2RhdGFbJ25hbWUnXSA9ICRyb3dbJ2NhdGVnb3J5X25hbWUnXTsKICAgICAgICAkb2JqLT5fZGF0YVsnYmdjb2xvciddID0gJHJvd1snY2F0ZWdvcnlfYmdjb2xvciddOwogICAgICAgICRvYmotPl9kYXRhWydmZ2NvbG9yJ10gPSAkcm93WydjYXRlZ29yeV9mZ2NvbG9yJ107CiAgICAgICAgJG9iai0+X2RhdGFbJ29yZGVyJ10gPSAkcm93WydjYXRlZ29yeV9vcmRlciddOwogICAgICAgIHJldHVybiAkb2JqOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2NhdGVnb3JpZXMoJGJ5X2lkID0gRkFMU0UpCiAgICB7CiAgICAgICAgaWYoICFpc19hcnJheShzZWxmOjokX2NhY2hlZF9jYXRlZ29yaWVzKSApIHsKICAgICAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICAgICAgICAgc2VsZjo6JF9jYWNoZWRfY2F0ZWdvcmllcyA9IGFycmF5KCk7CiAgICAgICAgICAgICRtb2QgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9DR0NBTEVOREFSKTsKICAgICAgICAgICAgJGNhdGVnb3JpZXNfdGFibGVfbmFtZSA9ICRtb2QtPmNhdGVnb3JpZXNfdGFibGVfbmFtZTsKICAgICAgICAgICAgJHNxbCA9ICJTRUxFQ1QgKiBGUk9NICRtb2QtPmNhdGVnb3JpZXNfdGFibGVfbmFtZSBPUkRFUiBCWSBjYXRlZ29yeV9vcmRlciwgY2F0ZWdvcnlfbmFtZSI7CgogICAgICAgICAgICBzZWxmOjokX2NhY2hlZF9jYXRlZ29yaWVzID0gJGRiLT5HZXRBcnJheSgkc3FsKTsKICAgICAgICB9CgogICAgICAgIGlmKCAkYnlfaWQgKSByZXR1cm4gXGNnZV9hcnJheTo6dG9faGFzaChzZWxmOjokX2NhY2hlZF9jYXRlZ29yaWVzLCdjYXRlZ29yeV9pZCcpOwogICAgICAgIHJldHVybiBzZWxmOjokX2NhY2hlZF9jYXRlZ29yaWVzOwogICAgfQoKCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRlbGV0ZSgkY2F0aWQpCiAgICB7CiAgICAgICAgJGNhdGlkID0gKGludCkkY2F0aWQ7CgogICAgICAgICRjYXQgPSBzZWxmOjpsb2FkKCRjYXRpZCk7CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICAgICAkbW9kID0gXGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfQ0dDQUxFTkRBUik7CgogICAgICAgICRxdWVyeSA9ICdVUERBVEUgJy4kbW9kLT5jYXRlZ29yaWVzX3RhYmxlX25hbWUuJyBTRVQgY2F0ZWdvcnlfb3JkZXIgPSBjYXRlZ29yeV9vcmRlciAtIDEgV0hFUkUgY2F0ZWdvcnlfb3JkZXIgPiA/JzsKICAgICAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRjYXRbJ29yZGVyJ10pKTsKCiAgICAgICAgJHF1ZXJ5ID0gJ0RFTEVURSBGUk9NICcuJG1vZC0+ZXZlbnRzX3RvX2NhdGVnb3JpZXNfdGFibGVfbmFtZS4nIFdIRVJFIGNhdGVnb3J5X2lkID0gPyc7CiAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkY2F0aWQpKTsKCiAgICAgICAgJHF1ZXJ5ID0gJ0RFTEVURSBGUk9NICcuJG1vZC0+Y2F0ZWdvcmllc190YWJsZV9uYW1lLicgV0hFUkUgY2F0ZWdvcnlfaWQgPSA/JzsKICAgICAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRjYXRpZCkpOwoKICAgICAgICAkbW9kLT5TZW5kRXZlbnQoJ0NhdGVnb3J5RGVsZXRlZCcsYXJyYXkoJ2NhdGVnb3J5X2lkJz0+JGNhdGlkLCdjYXRlZ29yeV9uYW1lJz0+JGNhdFsnbmFtZSddLCdjYXRlZ29yeV9vcmRlcic9PiRjYXRbJ29yZGVyJ10pKTsKICAgIH0KfSAvLyBlbmQgb2YgY2xhc3MKPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/class.cgcalendar_utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmZpbmFsIGNsYXNzIGNnY2FsZW5kYXJfdXRpbHMKewogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHt9CgogICAgc3RhdGljIHB1YmxpYyBmdW5jdGlvbiBnZXRfbG9jYWxlX2RhdGVzKCkKICAgIHsKICAgICAgICAkb3V0ID0gYXJyYXkoKTsKICAgICAgICAkb3V0Wydtb250aE5hbWVzJ10gPSBhcnJheSgpOwogICAgICAgICRvdXRbJ21vbnRoTmFtZXNTaG9ydCddID0gYXJyYXkoKTsKICAgICAgICBmb3IoICRpID0gMDsgJGkgPCAxMjsgJGkrKyApIHsKICAgICAgICAgICAgJG91dFsnbW9udGhOYW1lcyddW10gPSBzdHJmdGltZSgnJUInLG1rdGltZSgxLDAsMCwkaSsxLDEsMjAwMCkpOwogICAgICAgICAgICAkb3V0Wydtb250aE5hbWVzU2hvcnQnXVtdID0gc3RyZnRpbWUoJyViJyxta3RpbWUoMSwwLDAsJGkrMSwxLDIwMDApKTsKICAgICAgICB9CgogICAgICAgICRtb2QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX0NHQ0FMRU5EQVIpOwogICAgICAgICRmbXQgPSAnbGFzdCBzdW5kYXkgKyAlZCBkYXlzJzsKICAgICAgICAkb3V0WydkYXlOYW1lcyddID0gYXJyYXkoKTsKICAgICAgICAkb3V0WydkYXlOYW1lc1Nob3J0J10gPSBhcnJheSgpOwogICAgICAgICRjdXJkYXkgPSAoaW50KWRhdGUoJ3cnKTsKICAgICAgICBmb3IoICRpID0gMDsgJGkgPCA3OyAkaSsrICkgewogICAgICAgICAgICAkb3V0WydkYXlOYW1lcyddW10gPSBzdHJmdGltZSgnJUEnLHN0cnRvdGltZShzcHJpbnRmKCRmbXQsJGkpKSk7CiAgICAgICAgICAgICRvdXRbJ2RheU5hbWVzU2hvcnQnXVtdID0gc3RyZnRpbWUoJyVhJyxzdHJ0b3RpbWUoc3ByaW50ZigkZm10LCRpKSkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICBzdGF0aWMgcHVibGljIGZ1bmN0aW9uIGdldF91aWRfYnlfdXNlcm5hbWUoJHVzZXJuYW1lLCRjaGVja19hZG1pbiA9IGZhbHNlKQogICAgewogICAgICAgIGlmKCAkY2hlY2tfYWRtaW4gKSB7CiAgICAgICAgICAgICR1c2Vyb3BzID0gY21zbXMoKS0+R2V0VXNlck9wZXJhdGlvbnMoKTsKICAgICAgICAgICAgJHVzZXIgPSAkdXNlcm9wcy0+TG9hZFVzZXJCeVVzZXJuYW1lKCR1c2VybmFtZSk7CiAgICAgICAgICAgIGlmKCBpc19vYmplY3QoJHVzZXIpICkgcmV0dXJuICR1c2VyLT5pZCAqIC0xIC0gMTAwOwogICAgICAgIH0KCiAgICAgICAgJGZldSA9IGNnZV91dGlsczo6Z2V0X21vZHVsZSgnRnJvbnRFbmRVc2VycycpOwogICAgICAgIGlmKCAhJGZldSApIHJldHVybiBGQUxTRTsKCiAgICAgICAgJGluZm8gPSAkZmV1LT5HZXRVc2VySW5mb0J5TmFtZSgkdXNlcm5hbWUpOwogICAgICAgIGlmKCAhaXNfYXJyYXkoJGluZm8pICkgcmV0dXJuIEZBTFNFOwogICAgICAgIGlmKCAkaW5mb1swXSA9PSBGQUxTRSApIHJldHVybiBGQUxTRTsKICAgICAgICByZXR1cm4gJGluZm9bMV1bJ2lkJ107CiAgICB9CgoKICAgIHN0YXRpYyBwdWJsaWMgZnVuY3Rpb24gZ2V0X3VzZXJuYW1lKCR1aWQpCiAgICB7CiAgICAgICAgaWYoICR1aWQgPCAtMTAwICkgewogICAgICAgICAgICAvLyBhbiBhZG1pbiB1c2VyCiAgICAgICAgICAgICR1c2Vyb3BzID0gY21zbXMoKS0+R2V0VXNlck9wZXJhdGlvbnMoKTsKICAgICAgICAgICAgJHVzZXIgPSAkdXNlcm9wcy0+TG9hZFVzZXJCeUlEKCR1aWQgKiAtMSAtIDEwMCk7CiAgICAgICAgICAgIGlmKCAhJHVzZXIgKSByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgIHJldHVybiAkdXNlci0+dXNlcm5hbWU7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoICR1aWQgPiAwICkgewogICAgICAgICAgICAkZmV1ID0gY2dlX3V0aWxzOjpnZXRfbW9kdWxlKCdGcm9udEVuZFVzZXJzJyk7CiAgICAgICAgICAgIGlmKCAhJGZldSApIHJldHVybiBGQUxTRTsKCiAgICAgICAgICAgICR1c2VyaW5mbyA9ICRmZXUtPkdldFVzZXJJbmZvKCR1aWQpOwogICAgICAgICAgICBpZiggIWlzX2FycmF5KCR1c2VyaW5mbykgKSByZXR1cm4gRkFMU0U7CgogICAgICAgICAgICBpZiggJHVzZXJpbmZvWzBdICE9IFRSVUUgKSByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgIHJldHVybiAkdXNlcmluZm9bMV1bJ3VzZXJuYW1lJ107CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gRkFMU0U7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBleHBhbmRfZXZlbnRzKCRldmVudGlkcywkcmV0dXJuaWQsJHBhcmFtZXRlcnMsJGxpbWl0ID0gMTAwMDAsJHN0YXJ0b2Zmc2V0ID0gMCkKICAgIHsKICAgICAgICBpZiggIWlzX2FycmF5KCRldmVudGlkcykgfHwgY291bnQoJGV2ZW50aWRzKSA8IDEgKSByZXR1cm4gRkFMU0U7CgogICAgICAgICRtb2R1bGUgPSBjZ2VfdXRpbHM6OmdldF9tb2R1bGUoTU9EX0NHQ0FMRU5EQVIpOwogICAgICAgICRnQ21zID0gQ21zQXBwOjpnZXRfaW5zdGFuY2UoKTsKICAgICAgICAkZGIgPSAkZ0Ntcy0+R2V0RGIoKTsKCiAgICAgICAgJGV2ZW50c190b19jYXRlZ29yaWVzX3RhYmxlX25hbWUgPSAkbW9kdWxlLT5ldmVudHNfdG9fY2F0ZWdvcmllc190YWJsZV9uYW1lOwogICAgICAgICRjYXRlZ29yaWVzX3RhYmxlX25hbWUgPSAkbW9kdWxlLT5jYXRlZ29yaWVzX3RhYmxlX25hbWU7CiAgICAgICAgJGV2ZW50X2ZpZWxkX3ZhbHVlc190YWJsZV9uYW1lID0gJG1vZHVsZS0+ZXZlbnRfZmllbGRfdmFsdWVzX3RhYmxlX25hbWU7CgogICAgICAgICR1c2Vyb3BzID0gJGdDbXMtPkdldFVzZXJPcGVyYXRpb25zKCk7CiAgICAgICAgJHRtcCA9ICR1c2Vyb3BzLT5Mb2FkVXNlcnMoKTsKICAgICAgICAkdXNlcnMgPSBhcnJheSgpOwogICAgICAgIGZvcmVhY2ggKCR0bXAgYXMgJG9uZXVzZXIpIHsKICAgICAgICAgICAgJHVzZXJzWyRvbmV1c2VyLT5pZF0gPSAkb25ldXNlcjsKICAgICAgICB9CgogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuJG1vZHVsZS0+ZXZlbnRzX3RhYmxlX25hbWUuJyBXSEVSRSBldmVudF9pZCBJTiAoJy5pbXBsb2RlKCcsJywkZXZlbnRpZHMpLicpCiAgICAgICAgICAgICAgICAgIE9SREVSIEJZIGV2ZW50X2RhdGVfc3RhcnQgQVNDJzsKICAgICAgICAkcnMgPSAkZGItPlNlbGVjdExpbWl0KCRxdWVyeSwkbGltaXQsJHN0YXJ0b2Zmc2V0KTsKICAgICAgICAkZmV1X3VzZXJzID0gYXJyYXkoKTsKICAgICAgICB3aGlsZSggISRycy0+RU9GKCkgKSB7CiAgICAgICAgICAgICRyb3cgPSAkcnMtPmZpZWxkczsKICAgICAgICAgICAgJHVpZCA9ICRyb3dbJ2V2ZW50X2NyZWF0ZWRfYnknXTsKICAgICAgICAgICAgaWYoICR1aWQgPCAxICYmICFpbl9hcnJheSgkdWlkLCRmZXVfdXNlcnMpICkgJGZldV91c2Vyc1tdID0gJHVpZDsKICAgICAgICAgICAgJHJzLT5Nb3ZlTmV4dCgpOwogICAgICAgIH0KICAgICAgICAkcnMtPk1vdmVGaXJzdCgpOwoKICAgICAgICAkZXZlbnRzID0gYXJyYXkoKTsKICAgICAgICB3aGlsZSgkcnMgJiYgKCRyb3cgPSAkcnMtPkZldGNoUm93KCkpKSB7CiAgICAgICAgICAgICR0aXRsZVNFTyA9IG11bmdlX3N0cmluZ190b191cmwoJHJvd1snZXZlbnRfdGl0bGUnXSk7CiAgICAgICAgICAgICRkZXN0cGFnZSA9ICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2RlZmF1bHRjYWxlbmRhcnBhZ2UnLC0xKTsKICAgICAgICAgICAgJGRlc3RwYWdlID0gKCRkZXN0cGFnZT4wKSA/ICRkZXN0cGFnZSA6ICRyZXR1cm5pZDsKICAgICAgICAgICAgLy8kZGVzdHBhZ2UgPSRkZXRhaWxwYWdlIT0nJz8kZGV0YWlscGFnZTokZGVzdHBhZ2U7CiAgICAgICAgICAgICRwcmVmaXggPSAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCd1cmxfcHJlZml4Jyk7IGlmKCAhJHByZWZpeCApICRwcmVmaXggPSAnY2FsZW5kYXInOwogICAgICAgICAgICAkcHJldHR5dXJsID0gc3ByaW50ZigkcHJlZml4LiIvJWQvJWQtJXMiLCAkZGVzdHBhZ2UsICRyb3dbJ2V2ZW50X2lkJ10sICR0aXRsZVNFTyk7CiAgICAgICAgICAgICRwYXJtcyA9IGFycmF5KCk7CiAgICAgICAgICAgICRwYXJtc1snZXZlbnRfaWQnXSA9ICRyb3dbJ2V2ZW50X2lkJ107CiAgICAgICAgICAgICRwYXJtc1snZGlzcGxheSddID0gJ2V2ZW50JzsKICAgICAgICAgICAgaWYoIGlzc2V0KCRwYXJhbWV0ZXJzWydldmVudHRlbXBsYXRlJ10pICkgJHBhcm1zWydldmVudHRlbXBsYXRlJ10gPSAkcGFyYW1ldGVyc1snZXZlbnR0ZW1wbGF0ZSddOwogICAgICAgICAgICAkdXJsID0gJG1vZHVsZS0+Q3JlYXRlTGluaygnY250bnQwMScsICdkZWZhdWx0JywkZGVzdHBhZ2UsICRjb250ZW50cz0nJywgJHBhcm1zLCAnJywgdHJ1ZSwgJycsICcnLCAnJywgJHByZXR0eXVybCk7CiAgICAgICAgICAgICRyb3dbJ3VybCddID0gJHVybDsKICAgICAgICAgICAgJHJvd1snYXV0aG9yJ10gPSAkdXNlcnNbJHJvd1snZXZlbnRfY3JlYXRlZF9ieSddXS0+dXNlcm5hbWU7CiAgICAgICAgICAgICRyb3dbJ2F1dGhvcm5hbWUnXSA9ICR1c2Vyc1skcm93WydldmVudF9jcmVhdGVkX2J5J11dLT5maXJzdG5hbWUuJyAnLiR1c2Vyc1skcm93WydldmVudF9jcmVhdGVkX2J5J11dLT5sYXN0bmFtZTsKCiAgICAgICAgICAgIC8vIEJlZ2luIGNhdGVnb3JpZXMgcmV0cmlldmFsCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIC8vIEJ1aWxkIHRoZSBzcWwgdG8gcmV0cmlldmUgdGhlIGNhdGVnb3JpZXMgZm9yIHRoaXMgZXZlbnQuCiAgICAgICAgICAgICAgICAkc3FsID0gIlNFTEVDVCBjYXRlZ29yeV9uYW1lIEZST00gJGV2ZW50c190b19jYXRlZ29yaWVzX3RhYmxlX25hbWUKCSAgICAgICAgSU5ORVIgSk9JTiAkY2F0ZWdvcmllc190YWJsZV9uYW1lIE9OICAkZXZlbnRzX3RvX2NhdGVnb3JpZXNfdGFibGVfbmFtZS5jYXRlZ29yeV9pZCA9ICRjYXRlZ29yaWVzX3RhYmxlX25hbWUuY2F0ZWdvcnlfaWQKCSAgICAgICAgV0hFUkUgZXZlbnRfaWQgPSA/IjsKICAgICAgICAgICAgICAgICRjcnMgPSAkZGItPkV4ZWN1dGUoJHNxbCxhcnJheSgkcm93WydldmVudF9pZCddKSk7IC8vIEdldCB0aGUgZmllbGQgdmFsdWVzCiAgICAgICAgICAgICAgICAkY2F0ZWdvcmllcyA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICAkY2F0ZWdvcmllc190ZW1wID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgIGlmICgkY3JzKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoZXJlIGFyZSByZXN1bHRzIGFuZCBhc3NpZ24gdG8gdGhlICRjYXRlZ29yaWVzIGFycmF5CiAgICAgICAgICAgICAgICAgICAgJGNhdGVnb3JpZXNfdGVtcCA9ICRjcnMtPkdldEFycmF5KCk7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCgkY2F0ZWdvcmllc190ZW1wIGFzICRjYXRlZ29yeSkgewogICAgICAgICAgICAgICAgICAgICAgICAkY2F0ZWdvcnlfbmFtZSA9ICRjYXRlZ29yeVsnY2F0ZWdvcnlfbmFtZSddOwogICAgICAgICAgICAgICAgICAgICAgICAkY2F0ZWdvcmllc1skY2F0ZWdvcnlfbmFtZV0gPSAnMSc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gQXR0YWNoIHRoZSBjdXN0b20gZmllbGRzIHRvIHRoZSBldmVudAogICAgICAgICAgICAgICAgJHJvd1snY2F0ZWdvcmllcyddID0gJGNhdGVnb3JpZXM7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gRW5kIGNhdGVnb3JpZXMgcmV0cmlldmFsCgogICAgICAgICAgICAvLyBCZWdpbiBjdXN0b20gZmllbGRzIHJldHJpZXZhbAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAvLyBCdWlsZCB0aGUgc3FsIHRvIHJldHJpZXZlIHRoZSBmaWVsZCB2YWx1ZXMgZm9yIHRoaXMgZXZlbnQuCiAgICAgICAgICAgICAgICAkc3FsID0gIlNFTEVDVCBmaWVsZF9uYW1lLGZpZWxkX3ZhbHVlIEZST00gJGV2ZW50X2ZpZWxkX3ZhbHVlc190YWJsZV9uYW1lIFdIRVJFIGV2ZW50X2lkID0gPyI7CiAgICAgICAgICAgICAgICAkZnJzID0gJGRiLT5FeGVjdXRlKCRzcWwsYXJyYXkoJHJvd1snZXZlbnRfaWQnXSkpOyAvLyBHZXQgdGhlIGZpZWxkIHZhbHVlcwogICAgICAgICAgICAgICAgJGZpZWxkcyA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICAkZmllbGRzX3RlbXAgPSBhcnJheSgpOwogICAgICAgICAgICAgICAgaWYgKCRmcnMpIHsKICAgICAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhlcmUgYXJlIHJlc3VsdHMgYW5kIGFzc2lnbiB0byB0aGUgJGZpZWxkcyBhcnJheQogICAgICAgICAgICAgICAgICAgICRmaWVsZHNfdGVtcCA9ICRmcnMtPkdldEFycmF5KCk7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCgkZmllbGRzX3RlbXAgYXMgJGZpZWxkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRmaWVsZF9uYW1lID0gJGZpZWxkWydmaWVsZF9uYW1lJ107CiAgICAgICAgICAgICAgICAgICAgICAgICRmaWVsZF92YWx1ZSA9ICRmaWVsZFsnZmllbGRfdmFsdWUnXTsKICAgICAgICAgICAgICAgICAgICAgICAgJGZpZWxkc1skZmllbGRfbmFtZV0gPSAkZmllbGRfdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gQXR0YWNoIHRoZSBjdXN0b20gZmllbGRzIHRvIHRoZSBldmVudAogICAgICAgICAgICAgICAgJHJvd1snZmllbGRzJ10gPSAkZmllbGRzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIEVuZCBjdXN0b20gZmllbGRzIHJldHJpZXZhbAoKICAgICAgICAgICAgLy8gYW5kIGFkZCBpdCB0byB0aGUgbGlzdCBvZiBjb21wbGV0ZWQsIGV4cGFuZGVkIGV2ZW50cy4KICAgICAgICAgICAgJGV2ZW50c1tdID0gJHJvdzsKICAgICAgICB9CiAgICAgICAgaWYoICRycyApICRycy0+Q2xvc2UoKTsKCiAgICAgICAgcmV0dXJuICRldmVudHM7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBuZXh0X3ltZCgkZGF0ZV9zdHIpCiAgICB7CiAgICAgICAgbGlzdCgkeXksJG1tLCRkZCkgPSBzZWxmOjp0b195bWQoJGRhdGVfc3RyKTsKICAgICAgICBpZiggJGRkID09ICcnICkgewogICAgICAgICAgICBpZiggJG1tID09ICcnICkgewogICAgICAgICAgICAgICAgLy8gbmV4dCB5ZWFyCiAgICAgICAgICAgICAgICByZXR1cm4gKGludCkkeXkrMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIG5leHQgbW9udGgKICAgICAgICAgICAgICAgICRtbSA9IChpbnQpJG1tKzE7CiAgICAgICAgICAgICAgICBpZiggJG1tID09IDEzICkgewogICAgICAgICAgICAgICAgICAgICR5eSA9IChpbnQpJHl5KzE7CiAgICAgICAgICAgICAgICAgICAgJG1tID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiAiJHl5LSRtbSI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIC8vIG5leHQgZGF5LgogICAgICAgICAgICAkZGQgPSAoaW50KSRkZCsxOwogICAgICAgICAgICAkdXQgPSBzdHJ0b3RpbWUoJGRhdGVfc3RyKTsKICAgICAgICAgICAgJGxhc3RkYXkgPSBkYXRlKCd0JywkdXQpOwogICAgICAgICAgICBpZiggJGRkID4gJGxhc3RkYXkgKSB7CiAgICAgICAgICAgICAgICAkZGQgPSAxOwogICAgICAgICAgICAgICAgJG1tID0gKGludCkkbW0rMTsKICAgICAgICAgICAgICAgIGlmKCAkbW0gPT0gMTMgKSB7CiAgICAgICAgICAgICAgICAgICAgJHl5ID0gKGludCkkeXkrMTsKICAgICAgICAgICAgICAgICAgICAkbW0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAiJHl5LSRtbS0kZGQiOwogICAgICAgIH0KICAgIH0KCgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwcmV2X3ltZCgkZGF0ZV9zdHIpCiAgICB7CiAgICAgICAgbGlzdCgkeXksJG1tLCRkZCkgPSBzZWxmOjp0b195bWQoJGRhdGVfc3RyKTsKICAgICAgICBpZiggJGRkID09ICcnICkgewogICAgICAgICAgICBpZiggJG1tID09ICcnICkgewogICAgICAgICAgICAgICAgLy8gcHJldiB5ZWFyCiAgICAgICAgICAgICAgICByZXR1cm4gKGludCkkeXktMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIHByZXYgbW9udGgKICAgICAgICAgICAgICAgICRtbSA9IChpbnQpJG1tLTE7CiAgICAgICAgICAgICAgICBpZiggJG1tIDwgMSApIHsKICAgICAgICAgICAgICAgICAgICAvLyB3cmFwcGluZyB5ZWFycwogICAgICAgICAgICAgICAgICAgICR5eSA9IChpbnQpJHl5LTE7CiAgICAgICAgICAgICAgICAgICAgJG1tID0gMTI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gIiR5eS0kbW0iOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAvLyBwcmV2IGRheS4KICAgICAgICAgICAgJGRkID0gKGludCkkZGQtMTsKICAgICAgICAgICAgaWYoICRkZCA8IDEgKSB7CiAgICAgICAgICAgICAgICAkbW0gPSAoaW50KSRtbS0xOwogICAgICAgICAgICAgICAgaWYoICRtbSA8IDEgKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gd3JhcHBpbmcgeWVhcnMKICAgICAgICAgICAgICAgICAgICAkeXkgPSAoaW50KSR5eS0xOwogICAgICAgICAgICAgICAgICAgICRtbSA9IDEyOwogICAgICAgICAgICAgICAgICAgICRkZCA9IDMxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJGRkID0gZGF0ZSgndCcsc3RydG90aW1lKCIkeXktJG1tLTIiKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICIkeXktJG1tLSRkZCI7CiAgICAgICAgfQogICAgfQoKCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRvX3ltZCgkc3RyKQogICAgewogICAgICAgICR0bXAgPSBleHBsb2RlKCcgJywkc3RyKTsKICAgICAgICAkdG1wID0gJHRtcFswXTsKICAgICAgICAkdG1wID0gZXhwbG9kZSgnLScsJHRtcCk7CiAgICAgICAgZm9yKCAkaSA9IGNvdW50KCR0bXApOyAkaSA8IDM7ICRpKysgKSB7CiAgICAgICAgICAgICR0bXBbJGldID0gJyc7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkdG1wOwogICAgfQoKCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9xdWVyeSgkc3RhcnQsJGVuZCwkY2F0ZWdvcnksJHJldmVyc2UsJGxpbWl0ID0gbnVsbCkKICAgIHsKICAgICAgICAvLyBzdWl0YWJsZSBvbmx5IGZvciBmcm9udGVuZCBkaXNwbGF5cwogICAgICAgIC8vIG5ldmVyIHJldHVybnMgdW5wdWJsaXNoZWQgZXZlbnRzLgogICAgICAgICRtb2R1bGUgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0NHQ2FsZW5kYXInKTsKICAgICAgICAkc29ydGluZyA9ICgkcmV2ZXJzZSA9PSB0cnVlID8gJ0RFU0MnIDogJ0FTQycpOwogICAgICAgICRldmVudHNfdGFibGVfbmFtZSA9ICRtb2R1bGUtPmV2ZW50c190YWJsZV9uYW1lOwogICAgICAgICRjYXRlZ29yaWVzX3RhYmxlX25hbWUgPSAkbW9kdWxlLT5jYXRlZ29yaWVzX3RhYmxlX25hbWU7CiAgICAgICAgJGV2ZW50c190b19jYXRlZ29yaWVzX3RhYmxlX25hbWUgPSAkbW9kdWxlLT5ldmVudHNfdG9fY2F0ZWdvcmllc190YWJsZV9uYW1lOwoKICAgICAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgICAgIGlmKCBpc19pbnQoJHN0YXJ0KSApICRzdGFydCA9ICRkYi0+RGJUaW1lU3RhbXAoJHN0YXJ0KTsKICAgICAgICBpZiggaXNfaW50KCRlbmQpICkgJGVuZCA9ICRkYi0+RGJUaW1lU3RhbXAoJGVuZCk7CgogICAgICAgICRzcWwgPSAiU0VMRUNUIERJU1RJTkNUIEUuZXZlbnRfaWQgRlJPTSAkZXZlbnRzX3RhYmxlX25hbWUgRVxuIjsKCiAgICAgICAgaWYoICRjYXRlZ29yeSApIHsKICAgICAgICAgICAgJHNxbCAuPSAiSU5ORVIgSk9JTiAkZXZlbnRzX3RvX2NhdGVnb3JpZXNfdGFibGVfbmFtZSBFQyBPTiBFLmV2ZW50X2lkID0gRUMuZXZlbnRfaWQKCSAgICAgICAgICAgICAgICAgSU5ORVIgSk9JTiAkY2F0ZWdvcmllc190YWJsZV9uYW1lIEMgT04gRUMuY2F0ZWdvcnlfaWQgPSBDLmNhdGVnb3J5X2lkIjsKICAgICAgICB9CgogICAgICAgIGlmKCAkc3RhcnQgKSB7CiAgICAgICAgICAgIGlmKCAkZW5kICkgewogICAgICAgICAgICAgICAgLy8gc3RhcnQgZGF0ZSBhbmQgZW5kIGRhdGUKICAgICAgICAgICAgICAgICRzcWwgLj0gIiBXSEVSRSAoKEUuZXZlbnRfZGF0ZV9zdGFydCBCRVRXRUVOICRzdGFydCBBTkQgJGVuZCkgT1IgKEUuZXZlbnRfZGF0ZV9lbmQgQkVUV0VFTiAkc3RhcnQgQU5EICRlbmQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgT1IgICAgKEUuZXZlbnRfZGF0ZV9zdGFydCA8PSAkc3RhcnQgQU5EIEUuZXZlbnRfZGF0ZV9lbmQgPiAkZW5kKSkiOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgLy8gc3RhcnQgZGF0ZSwgYnV0IG5vIGVuZCBkYXRlCiAgICAgICAgICAgICAgICAvLyBwcm9sbHkgYW4gdXBjb21taW5nIGxpc3QuCiAgICAgICAgICAgICAgICAkc3FsIC49ICIgV0hFUkUgKChFLmV2ZW50X2RhdGVfc3RhcnQgPj0gJHN0YXJ0KSBPUiAoRS5ldmVudF9kYXRlX2VuZCA+ICRzdGFydCkpIjsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSBpZiggJGVuZCApIHsKICAgICAgICAgICAgLy8gZW5kIGRhdGUsIGJ1dCBubyBzdGFydCBkYXRlLgogICAgICAgICAgICAvLyBwcm9sbHkgYSBwYXN0IGxpc3QKICAgICAgICAgICAgJHNxbCAuPSAiIFdIRVJFICgoRS5ldmVudF9kYXRlX3N0YXJ0IDwgJGVuZCkgT1IgKEUuZXZlbnRfZGF0ZV9lbmQgPCAkZW5kIEFORCBFLmV2ZW50X2RhdGVfZW5kIElTIE5PVCBOVUxMKSkiOwogICAgICAgIH0KCiAgICAgICAgaWYoICRjYXRlZ29yeSApIHsKICAgICAgICAgICAgJGNhdHMgPSBleHBsb2RlKCcsJywgJGNhdGVnb3J5KTsKICAgICAgICAgICAgJHRtcCA9IGFycmF5KCk7CiAgICAgICAgICAgIGZvcmVhY2goJGNhdHMgYXMgJGNhdCkgewogICAgICAgICAgICAgICAgJGNhdCA9IHRyaW0oJGNhdCk7CiAgICAgICAgICAgICAgICBpZiggc3RycG9zKCcqJywkY2F0KSAhPT0gRkFMU0UgKSB7CiAgICAgICAgICAgICAgICAgICAgJGNhdCA9IHN0cl9yZXBsYWNlKCcqJywnJScsJGNhdCk7CiAgICAgICAgICAgICAgICAgICAgJHRtcFtdID0gIkMuY2F0ZWdvcnlfbmFtZSBMSUtFICckY2F0JyI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmKCBzdHJwb3MoJyUnLCRjYXQpICE9PSBGQUxTRSApIHsKICAgICAgICAgICAgICAgICAgICAkdG1wW10gPSAiQy5jYXRlZ29yeV9uYW1lIExJS0UgJyRjYXQnIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYoIGlzX251bWVyaWMoJGNhdCkgKSB7CiAgICAgICAgICAgICAgICAgICAgJHRtcFtdID0gJ0MuY2F0ZWdvcnlfaWQgPSAnLihpbnQpJGNhdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICR0bXBbXSA9ICJDLmNhdGVnb3J5X25hbWUgPSAnJGNhdCciOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRzcWwgLj0gJyBBTkQgKCcuaW1wbG9kZSgnIE9SICcsJHRtcCkuJyknOwogICAgICAgIH0KICAgICAgICAkc3FsIC49ICIgQU5EIEUuZXZlbnRfc3RhdHVzID0gJ1AnIjsgIC8vIG9ubHkgcHVibGlzaGVkIGV2ZW50cwogICAgICAgICRzcWwgLj0gIiBPUkRFUiBCWSBFLmV2ZW50X2RhdGVfc3RhcnQgJHNvcnRpbmciOwogICAgICAgIGlmKCAkbGltaXQgKSAkc3FsIC49ICcgTElNSVQgJy5tYXgoMSwoaW50KSAkbGltaXQpOwogICAgICAgIHJldHVybiAkc3FsOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGVsZXRlX2V2ZW50KCRldmVudF9pZCkKICAgIHsKICAgICAgICAkZXZlbnRfaWQgPSAoaW50KSRldmVudF9pZDsKICAgICAgICAkZGIgPSBDbXNBcHA6OmdldF9pbnN0YW5jZSgpLT5HZXREYigpOwogICAgICAgICRtb2QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX0NHQ0FMRU5EQVIpOwogICAgICAgICRldmVudHNfdGFibGVfbmFtZSA9ICRtb2QtPmV2ZW50c190YWJsZV9uYW1lOwogICAgICAgICRldmVudHNfdG9fY2F0ZWdvcmllc190YWJsZV9uYW1lID0gJG1vZC0+ZXZlbnRzX3RvX2NhdGVnb3JpZXNfdGFibGVfbmFtZTsKICAgICAgICAkZXZlbnRfZmllbGRfdmFsdWVzX3RhYmxlX25hbWUgPSAkbW9kLT5ldmVudF9maWVsZF92YWx1ZXNfdGFibGVfbmFtZTsKICAgICAgICBpZiggJGV2ZW50X2lkIDwgMSApIHJldHVybiBGQUxTRTsKCiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy4kZXZlbnRzX3RhYmxlX25hbWUuJyBXSEVSRSBldmVudF9pZCA9ID8gT1IgZXZlbnRfcGFyZW50X2lkID0gPyBPUkRFUiBCWSBldmVudF9wYXJlbnRfaWQgREVTQyc7CiAgICAgICAgJHJvd3MgPSAkZGItPkdldEFycmF5KCRxdWVyeSxhcnJheSgkZXZlbnRfaWQsJGV2ZW50X2lkKSk7CgogICAgICAgIGlmKCBDbXNBcHA6OmdldF9pbnN0YW5jZSgpLT5pc19mcm9udGVuZF9yZXF1ZXN0KCkgKSB7CiAgICAgICAgICAgIC8vIHVzZXJpZCBoYXMgdG8gbWF0Y2ggdGhlIG93bmVyCiAgICAgICAgICAgICRmZXUgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0Zyb250RW5kVXNlcnMnKTsKICAgICAgICAgICAgaWYoICEkZmV1ICkgcmV0dXJuOwogICAgICAgICAgICAkdXNlcmlkID0gJGZldS0+TG9nZ2VkSW5JZCgpOwoKICAgICAgICAgICAgZm9yZWFjaCggJHJvd3MgYXMgJHJvdyApIHsKICAgICAgICAgICAgICAgIGlmKCAhJG1vZC0+SGF2ZU1hbmFnZVJpZ2h0KCkgJiYgJHJvd1snZXZlbnRfY3JlYXRlZF9ieSddICE9ICR1c2VyaWQgKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gb29wcywgd2UgY2FuJ3QgZGVsZXRlIGFueXRoaW5nCiAgICAgICAgICAgICAgICAgICAgYXVkaXQoJGV2ZW50X2lkLCRtb2QtPkdldE5hbWUoKSwiRkVVIHVzZXIgJHVzZXJpZCBhdHRlbXB0ZWQgdG8gZGVsZXRlIGFuIGV2ZW50IG93bmVkIGJ5IHNvbWVib2R5IGVsc2UiKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIC8vIGFkbWluIHJlcXVlc3QuCiAgICAgICAgICAgIGlmKCAhJG1vZC0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgQ2FsZW5kYXInKSApIHsKICAgICAgICAgICAgICAgIC8vIHVzZXJpZCBoYXMgdG8gbWF0Y2ggdGhlIG93bmVyLi4gYW5kIHdlIGhhdmUgdG8gaGF2ZSBwZXJtaXNzaW9uIHRvIGVkaXQgbXkgZXZlbnRzCiAgICAgICAgICAgICAgICBpZiggISRtb2QtPkNoZWNrUGVybWlzc2lvbignRWRpdCBNeSBDYWxlbmRhciBFdmVudHMnKSApIHsKICAgICAgICAgICAgICAgICAgICAkdXNlcmlkID0gZ2V0X3VzZXJpZChGQUxTRSkgKiAtMSAtIDEwMDsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoKCAkcm93cyBhcyAkcm93ICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiggJHJvd1snZXZlbnRfY3JlYXRlZF9ieSddICE9ICR1c2VyaWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvb3BzLiB3ZSBjYW4ndCBkZWxldGUgdGhpcyBldmVudC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGl0KCRldmVudF9pZCwkbW9kLT5HZXROYW1lKCksIkFkbWluIHVzZXIgJHVzZXJpZCBhdHRlbXB0ZWQgdG8gZGVsZXRlIGFuIGV2ZW50IG93bmVkIGJ5IHNvbWVib2R5IGVsc2UiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHF1ZXJ5MSA9ICdERUxFVEUgRlJPTSAnLiRldmVudF9maWVsZF92YWx1ZXNfdGFibGVfbmFtZS4nIFdIRVJFIGV2ZW50X2lkID0gPyc7CiAgICAgICAgJHF1ZXJ5MiA9ICdERUxFVEUgRlJPTSAnLiRldmVudHNfdG9fY2F0ZWdvcmllc190YWJsZV9uYW1lLicgV0hFUkUgZXZlbnRfaWQgPSA/JzsKICAgICAgICAkcXVlcnkzID0gJ0RFTEVURSBGUk9NICcuJGV2ZW50c190YWJsZV9uYW1lLicgV0hFUkUgZXZlbnRfcGFyZW50X2lkID0gPyc7CiAgICAgICAgJHF1ZXJ5NCA9ICdERUxFVEUgRlJPTSAnLiRldmVudHNfdGFibGVfbmFtZS4nIFdIRVJFIGV2ZW50X2lkID0gPyc7CiAgICAgICAgZm9yZWFjaCggJHJvd3MgYXMgJG9uZSApIHsKICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeTEsYXJyYXkoJG9uZVsnZXZlbnRfaWQnXSkpOwogICAgICAgICAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5MixhcnJheSgkb25lWydldmVudF9pZCddKSk7CiAgICAgICAgfQogICAgICAgICRkYi0+RXhlY3V0ZSgkcXVlcnkxLGFycmF5KCRldmVudF9pZCkpOwogICAgICAgICRkYi0+RXhlY3V0ZSgkcXVlcnkyLGFycmF5KCRldmVudF9pZCkpOwogICAgICAgICRkYi0+RXhlY3V0ZSgkcXVlcnkzLGFycmF5KCRldmVudF9pZCkpOwogICAgICAgICRkYi0+RXhlY3V0ZSgkcXVlcnk0LGFycmF5KCRldmVudF9pZCkpOwoKICAgICAgICAkbW9kLT5TZW5kRXZlbnQoJ0V2ZW50RGVsZXRlZCcsYXJyYXkoJ2V2ZW50X2lkJz0+JGV2ZW50X2lkKSk7CgogICAgICAgICRjZ2NhbCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ0dDYWxlbmRhcicpOwogICAgICAgICRzZWFyY2ggPSBjbXNfdXRpbHM6OmdldF9zZWFyY2hfbW9kdWxlKCk7CiAgICAgICAgaWYoICRzZWFyY2ggKSAkc2VhcmNoLT5EZWxldGVXb3JkcygkY2djYWwtPkdldE5hbWUoKSwkZXZlbnRfaWQpOwoKICAgICAgICByZXR1cm4gVFJVRTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF91cGxvYWRfbG9jYXRpb24oKQogICAgewogICAgICAgICRtb2QgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9DR0NBTEVOREFSKTsKICAgICAgICAkY29uZmlnID0gXGNtc19jb25maWc6OmdldF9pbnN0YW5jZSgpOwogICAgICAgICRvcmlnZGlyID0gJGRpciA9IHRyaW0oJG1vZC0+R2V0UHJlZmVyZW5jZSgndXBsb2FkZGlyZWN0b3J5JykpOwogICAgICAgIGlmKCAhJG9yaWdkaXIgKSAkb3JpZ2RpciA9ICRkaXIgPSAkY29uZmlnWyd1cGxvYWRzX3BhdGgnXTsKICAgICAgICBpZiggIWlzX2RpcigkZGlyKSApICRkaXIgPSBjbXNfam9pbl9wYXRoKCRjb25maWdbJ3Jvb3RfcGF0aCddLCRvcmlnZGlyKTsKICAgICAgICBpZiggIWlzX2RpcigkZGlyKSApICRkaXIgPSBjbXNfam9pbl9wYXRoKCRjb25maWdbJ3VwbG9hZHNfcGF0aCddLCRvcmlnZGlyKTsKICAgICAgICBpZiggaXNfZGlyKCRkaXIpICkgewogICAgICAgICAgICAkcnAxID0gcmVhbHBhdGgoJGNvbmZpZ1sncm9vdF9wYXRoJ10pOwogICAgICAgICAgICAkcnAyID0gcmVhbHBhdGgoJGRpcik7CiAgICAgICAgICAgIGlmKCBzdGFydHN3aXRoKCRycDIsJHJwMSkgKSB7CiAgICAgICAgICAgICAgICAkdXJsID0gc3RyX3JlcGxhY2UoJGNvbmZpZ1sncm9vdF9wYXRoJ10sJGNvbmZpZ1sncm9vdF91cmwnXSwkZGlyKTsKICAgICAgICAgICAgICAgIHJldHVybiAkdXJsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZmluZF9sYXlvdXRfdGVtcGxhdGUoJHBhcmFtcywkcGFyYW1uYW1lLCR0eXBlbmFtZSkKICAgIHsKICAgICAgICAkcGFyYW1uYW1lID0gKHN0cmluZykgJHBhcmFtbmFtZTsKICAgICAgICAkdHlwZW5hbWUgPSAoc3RyaW5nKSAkdHlwZW5hbWU7CiAgICAgICAgaWYoICFpc19hcnJheSgkcGFyYW1zKSB8fCAhKCR0aGV0ZW1wbGF0ZSA9IFxjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywkcGFyYW1uYW1lKSkgKSB7CiAgICAgICAgICAgICR0cGwgPSBDbXNMYXlvdXRUZW1wbGF0ZTo6bG9hZF9kZmx0X2J5X3R5cGUoJHR5cGVuYW1lKTsKICAgICAgICAgICAgaWYoICFpc19vYmplY3QoJHRwbCkgKSB7CiAgICAgICAgICAgICAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdObyBkZWZhdWx0ICcuJHR5cGVuYW1lLicgdGVtcGxhdGUgZm91bmQnKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdGhldGVtcGxhdGUgPSAkdHBsLT5nZXRfbmFtZSgpOwogICAgICAgICAgICB1bnNldCgkdHBsKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICR0aGV0ZW1wbGF0ZTsKICAgIH0KfSAvLyBlbmQgb2YgY2xhc3MKCiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.cgc_event_loader.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgovKiogdGhpcyBjbGFzcyBsb2FkcyBldmVudHMgZnJvbSB0aGUgZGF0YWJhc2UsIGFuZCByZXR1cm5zIGFycmF5cyB3aXRoIHVybCBhbmQgb3RoZXIgZmllbGRzIHN1aXRhYmxlIGZvciBmcm9udGVuZCBkaXNwbGF5ICoqLwpmaW5hbCBjbGFzcyBjZ2NfZXZlbnRfbG9hZGVyCnsKICAgIHByaXZhdGUgJF9pZGxpc3Q7CiAgICBwcml2YXRlICRfZXZlbnR0ZW1wbGF0ZTsKICAgIHByaXZhdGUgJF9ldmVudHMgPSBhcnJheSgpOwogICAgcHJpdmF0ZSAkX2ZpZWxkcyA9IGFycmF5KCk7CiAgICBwcml2YXRlICRfY2F0ZWdvcmllcyA9IGFycmF5KCk7CiAgICBwcml2YXRlICRfZGVzdHBhZ2U7CiAgICBwcml2YXRlICRfdXJsX3ByZWZpeCA9ICdjYWxlbmRhcic7CiAgICBwcml2YXRlICRfcmV2ZXJzZSA9IEZBTFNFOwogICAgcHJpdmF0ZSAkX2FjdGlvbmlkOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkYWN0aW9uaWQsJGlkbGlzdCwkZGVzdHBhZ2UsJHJldmVyc2UpCiAgICB7CiAgICAgICAgaWYoIGlzX2FycmF5KCRpZGxpc3QpICkgewogICAgICAgICAgICAkdGhpcy0+X2lkbGlzdCA9IGFycmF5KCk7CiAgICAgICAgICAgIGZvcmVhY2goICRpZGxpc3QgYXMgJG9uZSApIHsKICAgICAgICAgICAgICAgICRvbmUgPSAoaW50KSRvbmU7CiAgICAgICAgICAgICAgICBpZiggJG9uZSA8IDEgKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICR0aGlzLT5faWRsaXN0W10gPSAkb25lOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0aGlzLT5faWRsaXN0ID0gYXJyYXlfdW5pcXVlKCR0aGlzLT5faWRsaXN0KTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiggKGludCkkaWRsaXN0ID4gMCApIHsKICAgICAgICAgICAgJHRoaXMtPl9pZGxpc3QgPSBhcnJheSgoaW50KSRpZGxpc3QpOwogICAgICAgIH0KICAgICAgICAkdGhpcy0+X2FjdGlvbmlkID0gJGFjdGlvbmlkOwogICAgICAgICR0aGlzLT5fcmV2ZXJzZSA9IChib29sKSRyZXZlcnNlOwogICAgICAgICR0aGlzLT5fZGVzdHBhZ2UgPSAkZGVzdHBhZ2U7CiAgICAgICAgJHRtcCA9IGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfQ0dDQUxFTkRBUiktPkdldFByZWZlcmVuY2UoJ3VybF9wcmVmaXgnKTsKICAgICAgICBpZiggJHRtcCApICR0aGlzLT5fdXJsX3ByZWZpeCA9ICR0bXA7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldF9ldmVudF90ZW1wbGF0ZSgkZXZlbnR0ZW1wbGF0ZSkKICAgIHsKICAgICAgICAkdGhpcy0+X2V2ZW50dGVtcGxhdGUgPSAkZXZlbnR0ZW1wbGF0ZTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIHJlb3JkZXJfY3VzdG9tZmllbGRzKCRjdXN0b21maWVsZHMpCiAgICB7CiAgICAgICAgJGZpZWxkcyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ0dDYWxlbmRhcicpLT5HZXRGaWVsZHMoKTsKICAgICAgICAkZmllbGRzID0gY2dlX2FycmF5Ojp0b19oYXNoKCRmaWVsZHMsJ2ZpZWxkX25hbWUnKTsKCiAgICAgICAgJGZ1bmMgPSBmdW5jdGlvbigkYSwkYikgdXNlICgkZmllbGRzKSB7CiAgICAgICAgICAgIGlmKCAkYVsnZXZlbnRfaWQnXSA8ICRiWydldmVudF9pZCddICkgcmV0dXJuIC0xOwogICAgICAgICAgICBpZiggJGFbJ2V2ZW50X2lkJ10gPiAkYlsnZXZlbnRfaWQnXSApIHJldHVybiAxOwogICAgICAgICAgICAkYWEgPSAkZmllbGRzWyRhWydmaWVsZF9uYW1lJ11dOwogICAgICAgICAgICAkYWEgPSAkZmllbGRzWyRiWydmaWVsZF9uYW1lJ11dOwogICAgICAgICAgICBpZiggJGFhWydmaWVsZF9vcmRlciddIDwgJGJiWydmaWVsZF9vcmRlciddICkgcmV0dXJuIC0xOwogICAgICAgICAgICBpZiggJGFhWydmaWVsZF9vcmRlciddID4gJGJiWydmaWVsZF9vcmRlciddICkgcmV0dXJuIDE7CiAgICAgICAgICAgIC8vIG5vdyBjb21wYXJlIGJ5IGZpZWxkIHZhbHVlLgogICAgICAgICAgICBpZiggJGFbJ2ZpZWxkX3ZhbHVlJ10gPCAkYlsnZmllbGRfdmFsdWUnXSApIHJldHVybiAtMTsKICAgICAgICAgICAgaWYoICRhWydmaWVsZF92YWx1ZSddID4gJGJbJ2ZpZWxkX3ZhbHVlJ10gKSByZXR1cm4gLTE7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH07CgogICAgICAgIHVzb3J0KCRjdXN0b21maWVsZHMsJGZ1bmMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfZXZlbnRzKCkKICAgIHsKICAgICAgICAkZ0NtcyA9IGNtc21zKCk7CiAgICAgICAgJHNvcnRpbmcgPSAoJHRoaXMtPl9yZXZlcnNlKSA/ICdERVNDJyA6ICdBU0MnOwogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfY2djYWxlbmRhcl9ldmVudHMgV0hFUkUgZXZlbnRfaWQgSU4gKCc7CiAgICAgICAgJHF1ZXJ5IC49IGltcGxvZGUoJywnLCR0aGlzLT5faWRsaXN0KS4nKSc7CiAgICAgICAgJHF1ZXJ5IC49ICIgT1JERVIgQlkgZXZlbnRfZGF0ZV9zdGFydCAkc29ydGluZyI7CiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCiAgICAgICAgLy8gZ2V0IHRoZSBwYXJlbnQgaWRzIGFuZCBldmVudHMuCiAgICAgICAgJGV2ZW50cyA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5KTsKICAgICAgICAkcGFyZW50X2lkcyA9ICR0aGlzLT5faWRsaXN0OwogICAgICAgIGlmKCAhaXNfYXJyYXkoJGV2ZW50cykgfHwgY291bnQoJGV2ZW50cykgPT0gMCApIHJldHVybjsKCiAgICAgICAgZm9yZWFjaCggJGV2ZW50cyBhcyAkcm93ICkgewogICAgICAgICAgICBpZiggJHJvd1snZXZlbnRfcGFyZW50X2lkJ10gPiAwICkgJHBhcmVudF9pZHNbXSA9ICRyb3dbJ2V2ZW50X3BhcmVudF9pZCddOwogICAgICAgIH0KICAgICAgICAkcGFyZW50X2lkcyA9IGFycmF5X3VuaXF1ZSgkcGFyZW50X2lkcyk7CgogICAgICAgICRjdXN0b21maWVsZHMgPSBhcnJheSgpOwogICAgICAgIHsKICAgICAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9jZ2NhbGVuZGFyX2V2ZW50X2ZpZWxkX3ZhbHVlcwogICAgICAgICAgICAgICAgV0hFUkUgZXZlbnRfaWQgSU4gKCcuaW1wbG9kZSgnLCcsJHBhcmVudF9pZHMpLicpIE9SREVSIEJZIGV2ZW50X2lkJzsKICAgICAgICAgICAgJGZycyA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5KTsKICAgICAgICAgICAgZm9yZWFjaCggJGZycyBhcyAkcm93ICkgewogICAgICAgICAgICAgICAgJGN1c3RvbWZpZWxkc1skcm93WydldmVudF9pZCddXVtdID0gJHJvdzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJGFsbGNhdGVnb3JpZXMgPSBhcnJheSgpOwogICAgICAgIHsKICAgICAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9jZ2NhbGVuZGFyX2V2ZW50c190b19jYXRlZ29yaWVzCiAgICAgICAgICAgICAgICAgICAgICAgV0hFUkUgZXZlbnRfaWQgSU4gKCcuaW1wbG9kZSgnLCcsJHRoaXMtPl9pZGxpc3QpLicpIE9SREVSIEJZIGV2ZW50X2lkJzsKICAgICAgICAgICAgJGNycyA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwogICAgICAgICAgICB3aGlsZSggJGNycyAmJiAhJGNycy0+RU9GKCkgKSB7CiAgICAgICAgICAgICAgICAkcm93ID0gJGNycy0+ZmllbGRzOwogICAgICAgICAgICAgICAgJGFsbGNhdGVnb3JpZXNbJHJvd1snZXZlbnRfaWQnXV1bXSA9ICRyb3c7CiAgICAgICAgICAgICAgICAkY3JzLT5Nb3ZlTmV4dCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKCBjb3VudCgkYWxsY2F0ZWdvcmllcykgKSBcQ0dDYWxlbmRhclxjYXRlZ29yeTo6Z2V0X2NhdGVnb3JpZXMoKTsgLy8gZm9yY2VzIHByZWxvYWQuCiAgICAgICAgfQoKICAgICAgICAkdXNlcnMgPSBhcnJheSgpOwogICAgICAgIHsKICAgICAgICAgICAgJHVzZXJvcHMgPSAkZ0Ntcy0+R2V0VXNlck9wZXJhdGlvbnMoKTsKICAgICAgICAgICAgJHVzZXJsaXN0ID0gJHVzZXJvcHMtPkxvYWRVc2VycygpOwogICAgICAgICAgICBmb3JlYWNoICgkdXNlcmxpc3QgYXMgJG9uZXVzZXIpIHsKICAgICAgICAgICAgICAgICR1c2Vyc1skb25ldXNlci0+aWRdID0gJG9uZXVzZXI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRtb2R1bGUgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX0NHQ0FMRU5EQVIpOwogICAgICAgICRhbGxmaWVsZHMgPSBcY2dlX2FycmF5Ojp0b19oYXNoKCRtb2R1bGUtPkdldEZpZWxkcygpLCdmaWVsZF9uYW1lJyk7CiAgICAgICAgZm9yZWFjaCggJGV2ZW50cyBhcyAmJHJvdyApIHsKICAgICAgICAgICAgJHRpdGxlU0VPID0gbXVuZ2Vfc3RyaW5nX3RvX3VybCgkcm93WydldmVudF90aXRsZSddKTsKICAgICAgICAgICAgJHByZXR0eXVybCA9IHNwcmludGYoJHRoaXMtPl91cmxfcHJlZml4LicvJWQvJWQtJXMnLCAkdGhpcy0+X2Rlc3RwYWdlLCAkcm93WydldmVudF9pZCddLCAkdGl0bGVTRU8pOwogICAgICAgICAgICAkcGFybXMgPSBhcnJheSgpOwogICAgICAgICAgICAkcGFybXNbJ2V2ZW50X2lkJ10gPSAkcm93WydldmVudF9pZCddOwogICAgICAgICAgICAkcGFybXNbJ2Rpc3BsYXknXSA9ICdldmVudCc7CiAgICAgICAgICAgIGlmKCAkdGhpcy0+X2V2ZW50dGVtcGxhdGUgKSAkcGFybXNbJ2V2ZW50dGVtcGxhdGUnXSA9ICR0aGlzLT5fZXZlbnR0ZW1wbGF0ZTsKICAgICAgICAgICAgJHJvd1sndXJsJ10gPSAkbW9kdWxlLT5jcmVhdGVfdXJsKCR0aGlzLT5fYWN0aW9uaWQsJ2RlZmF1bHQnLCR0aGlzLT5fZGVzdHBhZ2UsJHBhcm1zLGZhbHNlLGZhbHNlLCRwcmV0dHl1cmwpOwoKICAgICAgICAgICAgJHB0ciA9IG51bGw7CiAgICAgICAgICAgIGlmKCBpc3NldCgkYWxsY2F0ZWdvcmllc1skcm93WydldmVudF9pZCddXSkgKSB7CiAgICAgICAgICAgICAgICAkcHRyID0gJGFsbGNhdGVnb3JpZXNbJHJvd1snZXZlbnRfaWQnXV07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiggJHJvd1snZXZlbnRfcGFyZW50X2lkJ10gPiAwICYmIGlzc2V0KCRhbGxjYXRlZ29yaWVzWyRyb3dbJ2V2ZW50X3BhcmVudF9pZCddXSkgKSB7CiAgICAgICAgICAgICAgICAkcHRyID0gJGFsbGNhdGVnb3JpZXNbJHJvd1snZXZlbnRfcGFyZW50X2lkJ11dOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcm93WydiZ2NvbG9yJ10gPSAkcm93WydmZ2NvbG9yJ10gPSBudWxsOwogICAgICAgICAgICBpZiggJHB0ciApIHsKICAgICAgICAgICAgICAgICRjYXRlZ29yaWVzID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgIGZvcmVhY2goICRwdHIgYXMgJGNhdCApIHsKICAgICAgICAgICAgICAgICAgICAkY2F0ZWdvcmllc1tdID0gJGNhdFsnY2F0ZWdvcnlfaWQnXTsKICAgICAgICAgICAgICAgICAgICBpZiggISRyb3dbJ2JnY29sb3InXSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0IGNvbG9ycyBmb3IgdGhpcyBldmVudC4uLgogICAgICAgICAgICAgICAgICAgICAgICAkY2F0X29iaiA9IFxDR0NhbGVuZGFyXGNhdGVnb3J5Ojpsb2FkKCRjYXRbJ2NhdGVnb3J5X2lkJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAkcm93WydmZ2NvbG9yJ10gPSAkY2F0X29ialsnZmdjb2xvciddOwogICAgICAgICAgICAgICAgICAgICAgICAkcm93WydiZ2NvbG9yJ10gPSAkY2F0X29ialsnYmdjb2xvciddOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRyb3dbJ2NhdGVnb3JpZXMnXSA9ICRjYXRlZ29yaWVzOwogICAgICAgICAgICAgICAgJHJvd1snY2F0ZWdvcnlfbmFtZXMnXSA9ICRtb2R1bGUtPkdldENhdGVnb3J5TmFtZXMoJGNhdGVnb3JpZXMpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcHRyID0gbnVsbDsKICAgICAgICAgICAgaWYoIGlzc2V0KCRjdXN0b21maWVsZHNbJHJvd1snZXZlbnRfaWQnXV0pICkgewogICAgICAgICAgICAgICAgJHB0ciA9ICRjdXN0b21maWVsZHNbJHJvd1snZXZlbnRfaWQnXV07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiggJHJvd1snZXZlbnRfcGFyZW50X2lkJ10gPiAwICYmIGlzc2V0KCRjdXN0b21maWVsZHNbJHJvd1snZXZlbnRfcGFyZW50X2lkJ11dKSApIHsKICAgICAgICAgICAgICAgICRwdHIgPSAkY3VzdG9tZmllbGRzWyRyb3dbJ2V2ZW50X3BhcmVudF9pZCddXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiggJHB0ciApIHsKICAgICAgICAgICAgICAgICRmaWVsZHMgPSBhcnJheSgpOwogICAgICAgICAgICAgICAgZm9yZWFjaCggJHB0ciBhcyAka2V5ID0+ICRyZWMgKSB7CiAgICAgICAgICAgICAgICAgICAgJGZpZWxkX25hbWUgPSAkcmVjWydmaWVsZF9uYW1lJ107CiAgICAgICAgICAgICAgICAgICAgJHJlYyA9IGFycmF5X21lcmdlKCRhbGxmaWVsZHNbJGZpZWxkX25hbWVdLCRyZWMpOwogICAgICAgICAgICAgICAgICAgICRyZWNbJ3Jhd192YWx1ZSddID0gJHJlY1snZmllbGRfdmFsdWUnXTsKICAgICAgICAgICAgICAgICAgICBpZiggJHJlY1snZmllbGRfdHlwZSddID09IDYgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAhZW1wdHkoJHJlY1snZmllbGRfZXh0cmEnXVsnZGRvcHRzJ10pICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlY1snb3B0aW9ucyddID0gXGNnZV9hcnJheTo6ZXhwbG9kZV93aXRoX2tleSgkcmVjWydmaWVsZF9leHRyYSddWydkZG9wdHMnXSwnPScsIlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVjWydmaWVsZF92YWx1ZSddID0gJHJlY1snb3B0aW9ucyddWyRyZWNbJ3Jhd192YWx1ZSddXTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkZmllbGRzWyRmaWVsZF9uYW1lXSA9ICRyZWM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkcm93WydmaWVsZHMnXSA9ICRmaWVsZHM7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmKCAkcm93WydldmVudF9jcmVhdGVkX2J5J10gPCAwICkgewogICAgICAgICAgICAgICAgLy8gbmVnYXRpdmUgdmFsdWVzIChzbWFsbGVyIHRoYW4gLTEwMCkgaW5kaWNhdGUgYW4gYWRtaW4gdXNlciBhY2NvdW50CiAgICAgICAgICAgICAgICAkdWlkID0gJHJvd1snZXZlbnRfY3JlYXRlZF9ieSddICsgMTAwICogLTE7CiAgICAgICAgICAgICAgICAkcm93WydhZG1pbl91aWQnXSA9ICR1aWQ7CiAgICAgICAgICAgICAgICBpZiggaXNzZXQoJHVzZXJzWyR1aWRdKSApICRyb3dbJ2F1dGhvciddID0gJHVzZXJzWyR1aWRdLT51c2VybmFtZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHJvd1snaXNfcGFyZW50J10gPSAoJHJvd1snZXZlbnRfcmVjdXJfaW50ZXJ2YWwnXSAhPSAnbm9uZScgJiYgJHJvd1snZXZlbnRfcmVjdXJfaW50ZXJ2YWwnXSAhPSAnJyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkZXZlbnRzOwogICAgfQp9IC8vIGVuZCBvZiBjbGFzcwoKPz4K]]></data>
	</file>
	<file>
	  <filename>/lib/class.cgc_event_utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgpjbGFzcyBjZ2NfZXZlbnRfdXRpbHMKewogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHt9CgogICAgc3RhdGljIHB1YmxpYyBmdW5jdGlvbiBnZXRfZXZlbnRfZnJvbV9wYXJhbXMoJiRldmVudCwkcGFyYW1zLCRpc19lZGl0ID0gZmFsc2UpCiAgICB7CiAgICAgICAgJGdDbXMgPSBDbXNBcHA6OmdldF9pbnN0YW5jZSgpOwogICAgICAgICRkYiA9ICRnQ21zLT5HZXREYigpOwogICAgICAgICRtb2QgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9DR0NBTEVOREFSKTsKCiAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2V2ZW50X2lkJ10pICkgICRldmVudFsnZXZlbnRfaWQnXSA9ICAoaW50KSRwYXJhbXNbJ2V2ZW50X2lkJ107CiAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2V2ZW50X3BhcmVudF9pZCddKSApICAkZXZlbnRbJ2V2ZW50X3BhcmVudF9pZCddID0gKGludCkkcGFyYW1zWydldmVudF9wYXJlbnRfaWQnXTsKICAgICAgICBpZiggaXNzZXQoJHBhcmFtc1sncmVtb3ZlZnJvbXBhcmVudCddKSAmJiAkcGFyYW1zWydyZW1vdmVmcm9tcGFyZW50J10gKSAkZXZlbnRbJ2V2ZW50X3BhcmVudF9pZCddID0gLTE7CiAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2V2ZW50X3RpdGxlJ10pICkgICRldmVudFsnZXZlbnRfdGl0bGUnXSA9IHRyaW0oJHBhcmFtc1snZXZlbnRfdGl0bGUnXSk7CiAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2V2ZW50X3N1bW1hcnknXSkgKSAgJGV2ZW50WydldmVudF9zdW1tYXJ5J10gPSB0cmltKCRwYXJhbXNbJ2V2ZW50X3N1bW1hcnknXSk7CiAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2V2ZW50X2RldGFpbHMnXSkgKSAgJGV2ZW50WydldmVudF9kZXRhaWxzJ10gPSB0cmltKCRwYXJhbXNbJ2V2ZW50X2RldGFpbHMnXSk7CiAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2V2ZW50X2FsbG93c19vdmVybGFwJ10pICkgewogICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X2FsbG93c19vdmVybGFwJ10gPSAoaW50KSRwYXJhbXNbJ2V2ZW50X2FsbG93c19vdmVybGFwJ107CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkdG1wID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnb3ZlcmxhcF9wb2xpY3knLCdhbGwnKTsKICAgICAgICAgICAgJGV2ZW50WydldmVudF9hbGxvd3Nfb3ZlcmxhcCddID0gKCR0bXAgPT0gJ2FsbCcpPzE6MDsKICAgICAgICB9CgogICAgICAgICRldmVudFsnZXZlbnRfc3RhdHVzJ10gPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdkZmx0X3N0YXR1cycsJ0QnKTsKICAgICAgICBpZiggaXNzZXQoJHBhcmFtc1snZXZlbnRfc3RhdHVzJ10pICkgewogICAgICAgICAgICBzd2l0Y2goICRwYXJhbXNbJ2V2ZW50X3N0YXR1cyddICkgewogICAgICAgICAgICBjYXNlICdEJzoKICAgICAgICAgICAgY2FzZSAnUCc6CiAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X3N0YXR1cyddID0gJHBhcmFtc1snZXZlbnRfc3RhdHVzJ107CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJGFsbF9kYXlfZXZlbnQgPSAwOwogICAgICAgIGlmKCBpc3NldCgkcGFyYW1zWydhbGxfZGF5X2V2ZW50J10pICkgICRhbGxfZGF5X2V2ZW50ID0gKGludCkkcGFyYW1zWydhbGxfZGF5X2V2ZW50J107CiAgICAgICAgJGV2ZW50WydldmVudF9hbGxfZGF5J10gPSAkYWxsX2RheV9ldmVudDsKCiAgICAgICAgJHN0YXJ0X2hvdXIgPSAwOwogICAgICAgICRzdGFydF9taW51dGUgPSAwOwogICAgICAgIGlmKCBpc3NldCgkcGFyYW1zWydzdGFydGRhdGVfTW9udGgnXSkgKSB7CiAgICAgICAgICAgICRzdGFydF9ob3VyID0gJHBhcmFtc1snc3RhcnRkYXRlX0hvdXInXTsKICAgICAgICAgICAgJHN0YXJ0X21pbnV0ZSA9ICRwYXJhbXNbJ3N0YXJ0ZGF0ZV9NaW51dGUnXTsKICAgICAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ3N0YXJ0ZGF0ZV9NZXJpZGlhbiddKSApIHsKICAgICAgICAgICAgICAgIGlmKCAkcGFyYW1zWydzdGFydGRhdGVfTWVyaWRpYW4nXSA9PSAnYW0nICYmICRzdGFydF9ob3VyID49IDEyICkgewogICAgICAgICAgICAgICAgICAgICRzdGFydF9ob3VyIC09IDEyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiggJHBhcmFtc1snc3RhcnRkYXRlX01lcmlkaWFuJ10gPT0gJ3BtJyAmJiAkc3RhcnRfaG91ciA8IDEyICkgewogICAgICAgICAgICAgICAgICAgICRzdGFydF9ob3VyICs9IDEyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRldmVudFsnZXZlbnRfZGF0ZV9zdGFydF91dCddID0gbWt0aW1lKCRzdGFydF9ob3VyLCRzdGFydF9taW51dGUsMCwkcGFyYW1zWydzdGFydGRhdGVfTW9udGgnXSwkcGFyYW1zWydzdGFydGRhdGVfRGF5J10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJhbXNbJ3N0YXJ0ZGF0ZV9ZZWFyJ10pOwogICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnQnXSA9ICRkYi0+RGJUaW1lU3RhbXAoJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0X3V0J10pOwogICAgICAgIH0KCiAgICAgICAgJGV2ZW50WydldmVudF9kYXRlX2VuZCddID0gTlVMTDsKICAgICAgICAkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kX3V0J10gPSBOVUxMOwogICAgICAgIGlmKCBpc3NldCgkcGFyYW1zWydlbmRkYXRlX3ZhbGlkJ10pICYmICRwYXJhbXNbJ2VuZGRhdGVfdmFsaWQnXSAmJiBpc3NldCgkcGFyYW1zWydlbmRkYXRlX0RheSddKSApIHsKICAgICAgICAgICAgJGVuZF9tb250aCA9ICRwYXJhbXNbJ2VuZGRhdGVfTW9udGgnXTsKICAgICAgICAgICAgJGVuZF9kYXkgPSAkcGFyYW1zWydlbmRkYXRlX0RheSddOwogICAgICAgICAgICAkZW5kX3llYXIgPSAkcGFyYW1zWydlbmRkYXRlX1llYXInXTsKICAgICAgICAgICAgJGVuZF9ob3VyID0gJHBhcmFtc1snZW5kZGF0ZV9Ib3VyJ107CiAgICAgICAgICAgICRlbmRfbWludXRlID0gJHBhcmFtc1snZW5kZGF0ZV9NaW51dGUnXTsKICAgICAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2VuZGRhdGVfTWVyaWRpYW4nXSkgJiYgJHBhcmFtc1snZW5kZGF0ZV9NZXJpZGlhbiddID09ICdhbScgJiYgJGVuZF9ob3VyID49IDEyICkgewogICAgICAgICAgICAgICAgJGVuZF9ob3VyIC09IDEyOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYoIGlzc2V0KCRwYXJhbXNbJ2VuZGRhdGVfTWVyaWRpYW4nXSkgJiYgJHBhcmFtc1snZW5kZGF0ZV9NZXJpZGlhbiddID09ICdwbScgJiYgJGVuZF9ob3VyIDwgMTIgKSB7CiAgICAgICAgICAgICAgICAkZW5kX2hvdXIgKz0gMTI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGV2ZW50WydldmVudF9kYXRlX2VuZF91dCddID0gbWt0aW1lKCRlbmRfaG91ciwkZW5kX21pbnV0ZSwwLCRlbmRfbW9udGgsJGVuZF9kYXksJGVuZF95ZWFyKTsKICAgICAgICAgICAgJGV2ZW50WydldmVudF9kYXRlX2VuZCddID0gJGRiLT5EYlRpbWVTdGFtcCgkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kX3V0J10pOwogICAgICAgIH0KCiAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2V2ZW50X3JlY3VyX3BlcmlvZCddKSApICRldmVudFsnZXZlbnRfcmVjdXJfcGVyaW9kJ10gPSB0cmltKCRwYXJhbXNbJ2V2ZW50X3JlY3VyX3BlcmlvZCddKTsKICAgICAgICBpZiggJGV2ZW50WydldmVudF9yZWN1cl9wZXJpb2QnXSAhPSAnbm9uZScgKSB7CiAgICAgICAgICAgIGlmKCBpc3NldCgkcGFyYW1zWydldmVudF9yZWN1cl9pbnRlcnZhbCddKSApICRldmVudFsnZXZlbnRfcmVjdXJfaW50ZXJ2YWwnXSA9IChpbnQpJHBhcmFtc1snZXZlbnRfcmVjdXJfaW50ZXJ2YWwnXTsKICAgICAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2V2ZW50X3JlY3VyX3dlZWtkYXlzJ10pICkgewogICAgICAgICAgICAgICAgaWYoIGlzX2FycmF5KCRwYXJhbXNbJ2V2ZW50X3JlY3VyX3dlZWtkYXlzJ10pICkgewogICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfcmVjdXJfd2Vla2RheXMnXSA9ICRwYXJhbXNbJ2V2ZW50X3JlY3VyX3dlZWtkYXlzJ107CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X3JlY3VyX3dlZWtkYXlzJ10gPSBleHBsb2RlKCcsJywkcGFyYW1zWydldmVudF9yZWN1cl93ZWVrZGF5cyddKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiggaXNzZXQoJHBhcmFtc1snZXZlbnRfcmVjdXJfbW9udGhkYXlzJ10pICkgewogICAgICAgICAgICAgICAgaWYoIGlzX2FycmF5KCRwYXJhbXNbJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyddKSApIHsKICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyddID0gJHBhcmFtc1snZXZlbnRfcmVjdXJfbW9udGhkYXlzJ107CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyddID0gZXhwbG9kZSgnLCcsJHBhcmFtc1snZXZlbnRfcmVjdXJfbW9udGhkYXlzJ10pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKCBpc3NldCgkcGFyYW1zWydldmVudF9yZWN1cl9jb3VudCddKSApICAkZXZlbnRbJ2V2ZW50X3JlY3VyX2NvdW50J10gPSAoaW50KSRwYXJhbXNbJ2V2ZW50X3JlY3VyX2NvdW50J107CiAgICAgICAgICAgIGlmKCBpc3NldCgkcGFyYW1zWydldmVudF9yZWN1cl9kYXRlX01vbnRoJ10pICYmICRwYXJhbXNbJ2V2ZW50X3JlY3VyX3BlcmlvZCddICE9ICdub25lJyApIHsKICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfZGF0ZV9yZWN1cl9lbmRfdXQnXSA9IG1rdGltZSgwLDAsMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1zWydldmVudF9yZWN1cl9kYXRlX01vbnRoJ10sJHBhcmFtc1snZXZlbnRfcmVjdXJfZGF0ZV9EYXknXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyYW1zWydldmVudF9yZWN1cl9kYXRlX1llYXInXSk7CiAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X2RhdGVfcmVjdXJfZW5kJ10gPSAkZGItPkRiVGltZVN0YW1wKCRldmVudFsnZXZlbnRfZGF0ZV9yZWN1cl9lbmRfdXQnXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiggaXNzZXQoJHBhcmFtc1snZXZlbnRfcmVjdXJfZGF0ZV91dCddKSApIHsKICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBhIHNpbmdsZSBpbnB1dCBmaWVsZCBpbiB0aGUgZm9ybSBvZiBhIHVuaXggdGltZXN0YW1wLgogICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9kYXRlX3JlY3VyX2VuZCddID0gJGRiLT5EYlRpbWVTdGFtcCgkcGFyYW1zWydldmVudF9yZWN1cl9kYXRlX3V0J10pOwogICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9kYXRlX3JlY3VyX2VuZF91dCddID0gJHBhcmFtc1snZXZlbnRfcmVjdXJfZGF0ZV91dCddOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9kYXRlX3JlY3VyX2VuZCddID0gTlVMTDsKICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfZGF0ZV9yZWN1cl9lbmRfdXQnXSA9IE5VTEw7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmKCBpc3NldCgkcGFyYW1zWydldmVudF9jYXRlZ29yaWVzJ10pICkgewogICAgICAgICAgICBpZiggaXNfc3RyaW5nKCRwYXJhbXNbJ2V2ZW50X2NhdGVnb3JpZXMnXSkgKSAkcGFyYW1zWydldmVudF9jYXRlZ29yaWVzJ10gPSB1bnNlcmlhbGl6ZSgkcGFyYW1zWydldmVudF9jYXRlZ29yaWVzJ10pOwogICAgICAgICAgICBpZiggaXNfYXJyYXkoJHBhcmFtc1snZXZlbnRfY2F0ZWdvcmllcyddKSApIHsKICAgICAgICAgICAgICAgIC8vIHRvZG86IG1ha2Ugc3VyZSBhbGwgdmFsdWVzIGFyZSBpbnRzLCBhbmQga2V5cyBhcmUgY2F0ZWdvcnkgaWQncy4KICAgICAgICAgICAgICAgICRldmVudFsnY2F0ZWdvcmllcyddID0gJHBhcmFtc1snZXZlbnRfY2F0ZWdvcmllcyddOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHN0YXRpYyBwdWJsaWMgZnVuY3Rpb24gaXNfZXZlbnRfY29uZmxpY3RlZCgkZXZlbnQsJHBvbGljeSkKICAgIHsKICAgICAgICAkZ0NtcyA9IENtc0FwcDo6Z2V0X2luc3RhbmNlKCk7CiAgICAgICAgJGRiID0gJGdDbXMtPkdldERiKCk7CgogICAgICAgICRldmVudF9pZCA9IChpc3NldCgkZXZlbnRbJ2V2ZW50X2lkJ10pKSA/ICRldmVudFsnZXZlbnRfaWQnXSA6IC0xOwogICAgICAgICRzdHIgPSAnJzsKICAgICAgICBpZiggJHBvbGljeSA9PSAnaW5kaXZpZHVhbCcpICRzdHIgLj0gJyBBTkQgZXZlbnRfYWxsb3dzX292ZXJsYXAgPSAwJzsKICAgICAgICBpZiggJGV2ZW50X2lkICE9IC0xKSAkc3RyIC49ICIgQU5EIGV2ZW50X2lkICE9ICRldmVudF9pZCI7CgogICAgICAgICRkYnIgPSAnJzsKICAgICAgICBpZiggJGV2ZW50WydldmVudF9kYXRlX2VuZCddID09IE5VTEwgKSB7CiAgICAgICAgICAgICRzdGFydCA9ICcnOwogICAgICAgICAgICBpZiggaXNzZXQoJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0J10pICkgewogICAgICAgICAgICAgICAgJHN0YXJ0ID0gJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0J107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiggaXNzZXQoJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0X3V0J10pICkgewogICAgICAgICAgICAgICAgLy8gYXNzdW1lIHVuaXggdGltZXN0YW1wCiAgICAgICAgICAgICAgICAkc3RhcnQgPSAkZGItPkRiVGltZVN0YW1wKCRldmVudFsnZXZlbnRfZGF0ZV9zdGFydF91dCddKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKCBpc3NldCgkZXZlbnRbJ3N0YXJ0J10pICkgewogICAgICAgICAgICAgICAgLy8gYXNzdW1lIHVuaXggdGltZXN0YW1wCiAgICAgICAgICAgICAgICAkc3RhcnQgPSAkZGItPkRiVGltZVN0YW1wKCRldmVudFsnc3RhcnQnXSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgZXZlbnRfaWQgRlJPTSAnLiRtb2R1bGUtPmV2ZW50c190YWJsZV9uYW1lLiIgV0hFUkUgKCRzdGFydCBCRVRXRUVOIGV2ZW50X2RhdGVfc3RhcnQgYW5kIGV2ZW50X2RhdGVfZW5kKSI7CiAgICAgICAgICAgICRkYnIgPSAkZGItPkdldE9uZSgkcXVlcnkuJHN0cik7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkc3RhcnQgPSAnJzsKICAgICAgICAgICAgaWYoIGlzc2V0KCRldmVudFsnZXZlbnRfZGF0ZV9zdGFydCddKSApIHsKICAgICAgICAgICAgICAgICRzdGFydCA9ICRldmVudFsnZXZlbnRfZGF0ZV9zdGFydCddOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYoIGlzc2V0KCRldmVudFsnZXZlbnRfZGF0ZV9zdGFydF91dCddKSApIHsKICAgICAgICAgICAgICAgIC8vIGFzc3VtZSB1bml4IHRpbWVzdGFtcAogICAgICAgICAgICAgICAgJHN0YXJ0ID0gJGRiLT5EYlRpbWVTdGFtcCgkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnRfdXQnXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiggaXNzZXQoJGV2ZW50WydzdGFydCddKSApIHsKICAgICAgICAgICAgICAgIC8vIGFzc3VtZSB1bml4IHRpbWVzdGFtcAogICAgICAgICAgICAgICAgJHN0YXJ0ID0gJGRiLT5EYlRpbWVTdGFtcCgkZXZlbnRbJ3N0YXJ0J10pOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkZW5kID0gJyc7CiAgICAgICAgICAgIGlmKCBpc3NldCgkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kJ10pICkgewogICAgICAgICAgICAgICAgJGVuZCA9ICRldmVudFsnZXZlbnRfZGF0ZV9lbmQnXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKCBpc3NldCgkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kX3V0J10pICkgewogICAgICAgICAgICAgICAgLy8gYXNzdW1lIHVuaXggdGltZXN0YW1wCiAgICAgICAgICAgICAgICAkZW5kID0gJGRiLT5EYlRpbWVTdGFtcCgkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kX3V0J10pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYoIGlzc2V0KCRldmVudFsnZW5kJ10pICkgewogICAgICAgICAgICAgICAgLy8gYXNzdW1lIHVuaXggdGltZXN0YW1wCiAgICAgICAgICAgICAgICAkZW5kID0gJGRiLT5EYlRpbWVTdGFtcCgkZXZlbnRbJ2VuZCddKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBldmVudF9pZCBGUk9NICcuJG1vZHVsZS0+ZXZlbnRzX3RhYmxlX25hbWUuIgogICAgICAgICAgICAgICAgICAgICAgV0hFUkUgKCgkc3RhcnQgQkVUV0VFTiBldmVudF9kYXRlX3N0YXJ0IGFuZCBldmVudF9kYXRlX2VuZCkKICAgICAgICAgICAgICAgICAgICAgIE9SICgkZW5kIEJFVFdFRU4gZXZlbnRfZGF0ZV9zdGFydCBhbmQgZXZlbnRfZGF0ZV9lbmQpKSI7CiAgICAgICAgICAgICRkYnIgPSAkZGItPkdldE9uZSgkcXVlcnkuJHN0ciwgYXJyYXkodHJpbSgkc3RhcnQsJyInKSx0cmltKCRlbmQsJyInKSkpOwogICAgICAgIH0KCiAgICAgICAgaWYoICRkYnIgKSByZXR1cm4gVFJVRTsKICAgICAgICByZXR1cm4gRkFMU0U7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBudGhfd2Vla2RheSgkbnRoLCR3ZWVrZGF5LCRmcm9tZGF0ZSkKICAgIHsKICAgICAgICAkbW9udGggPSBkYXRlKCdtJywkZnJvbWRhdGUpOwogICAgICAgICR5ZWFyID0gZGF0ZSgnWScsJGZyb21kYXRlKTsKICAgICAgICAkaG91cnMgPSBkYXRlKCdIJywkZnJvbWRhdGUpOwogICAgICAgICRtaW51dGVzID0gZGF0ZSgnaScsJGZyb21kYXRlKTsKICAgICAgICAkc2Vjb25kcyA9IGRhdGUoJ3MnLCRmcm9tZGF0ZSk7CiAgICAgICAgJG5kYXlzID0gLTE7CgogICAgICAgICRudGggPSBzdHJ0b2xvd2VyKCRudGgpOwogICAgICAgIHN3aXRjaCggJG50aCApIHsKICAgICAgICBjYXNlICdmaXJzdCc6CiAgICAgICAgICAgICRudGggPSAxOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdzZWNvbmQnOgogICAgICAgICAgICAkbnRoID0gMjsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAndGhpcmQnOgogICAgICAgICAgICAkbnRoID0gMzsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnZm91cnRoJzoKICAgICAgICAgICAgJG50aCA9IDQ7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ2xhc3QnOgogICAgICAgICAgICAkbnRoID0gLTE7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICRudGggPSAoaW50KSRudGg7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBpZiggJG50aCA9PSAtMSApIHsKICAgICAgICAgICAgJGRheXNfaW5fbW9udGggPSBkYXRlKCd0JywkZnJvbWRhdGUpOwogICAgICAgICAgICAkdG1wMSA9IG1rdGltZSgwLDAsMCwkbW9udGgsJGRheXNfaW5fbW9udGgsJHllYXIpOwogICAgICAgICAgICAkd2Vla2RheV9vZl9sYXN0ID0gZGF0ZSgndycsJHRtcDEpOwoKICAgICAgICAgICAgaWYoICR3ZWVrZGF5X29mX2xhc3QgPCAkd2Vla2RheSApIHsKICAgICAgICAgICAgICAgIC8vJG5kYXlzID0gJGRheXNfaW5fbW9udGggLSAkd2Vla2RheV9vZl9sYXN0IC0gJHdlZWtkYXkgLSAxOwogICAgICAgICAgICAgICAgJG5kYXlzID0gJGRheXNfaW5fbW9udGggLSAkd2Vla2RheV9vZl9sYXN0ICsgJHdlZWtkYXkgLSA3OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJG5kYXlzID0gJGRheXNfaW5fbW9udGggLSAkd2Vla2RheV9vZl9sYXN0ICsgJHdlZWtkYXk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRudGggPSBtYXgoJG50aCwxKTsKICAgICAgICAgICAgJG50aCA9IG1pbigkbnRoLDQpOwoKICAgICAgICAgICAgLy8gZ2V0IHdlZWtkYXkgb2YgZmlyc3Qgb2YgdGhlIG1vbnRoCiAgICAgICAgICAgICR0bXAxID0gbWt0aW1lKDAsMCwwLCRtb250aCwxLCR5ZWFyKTsKICAgICAgICAgICAgJHdlZWtkYXlfb2ZfZmlyc3QgPSBkYXRlKCd3JywkdG1wMSk7CgogICAgICAgICAgICBpZiggJHdlZWtkYXlfb2ZfZmlyc3QgPD0gJHdlZWtkYXkgKSB7CiAgICAgICAgICAgICAgICAkbmRheXMgPSAoJHdlZWtkYXkgLSAkd2Vla2RheV9vZl9maXJzdCArIDEpICsgKCRudGggLSAxKSAqIDc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkbmRheXMgPSAoNyAtICR3ZWVrZGF5X29mX2ZpcnN0ICsgJHdlZWtkYXkgKyAxKSArICgkbnRoIC0gMSkgKiA3OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkZGF0ZSA9IG1rdGltZSgkaG91cnMsJG1pbnV0ZXMsJHNlY29uZHMsJG1vbnRoLCRuZGF5cywkeWVhcik7CiAgICAgICAgcmV0dXJuICRkYXRlOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2hlY2tfb3ZlcmxhcHBpbmdfZXZlbnRzKCRldmVudF9zdGFydF91dCwkZXZlbnRfZW5kX3V0LCRjaGlsZF9ldmVudHMpCiAgICB7CiAgICAgICAgJHRtcCA9IGFycmF5KCk7CiAgICAgICAgJHRtcFtdID0gYXJyYXkoJ3N0YXJ0Jz0+JGV2ZW50X3N0YXJ0X3V0LCdlbmQnPT4kZXZlbnRfZW5kX3V0KTsKICAgICAgICAkdG1wID0gYXJyYXlfbWVyZ2UoJHRtcCwkY2hpbGRfZXZlbnRzKTsKCiAgICAgICAgLy8gdHJpdmlhbCBjaGVjaywgaWYgdGhlIGVuZCBkYXRlIGlzIG51bGwgb3IgZW1wdHkKICAgICAgICAvLyB0aGVyZSBpcyBubyBjaGFuY2UgdGhhdCBldmVudHMgY2FuIG92ZXJsYXAuCiAgICAgICAgaWYoZW1wdHkoJGV2ZW50X2VuZF91dCkgKSByZXR1cm4gZmFsc2U7CgogICAgICAgIGZvciggJGkgPSAxOyAkaSA8IGNvdW50KCR0bXApOyAkaSsrICkgewogICAgICAgICAgICAkcHJldiA9JiAkdG1wWyRpLTFdOwogICAgICAgICAgICAkY3VyID0mICR0bXBbJGldOwogICAgICAgICAgICBpZiggKCRjdXJbJ3N0YXJ0J10gPj0gJHByZXZbJ3N0YXJ0J10gJiYgJGN1clsnc3RhcnQnXSA8PSAkcHJldlsnZW5kJ10pIHx8CiAgICAgICAgICAgICAgICAoJGN1clsnZW5kJ10gPj0gJHByZXZbJ3N0YXJ0J10gJiYgJGN1clsnZW5kJ10gPD0gJHByZXZbJ2VuZCddKSApIHsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjaGVja19kYl9mb3JfY29uZmxpY3RzKCRldmVudCwkZXZlbnRfaWQsJHBvbGljeSwkZXZlbnRfYWxsb3dzX292ZXJsYXApCiAgICB7CiAgICAgICAgJGRiID0gXENtc0FwcDo6Z2V0X2luc3RhbmNlKCktPkdldERiKCk7CiAgICAgICAgJG1vZHVsZSA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX0NHQ0FMRU5EQVIpOwoKICAgICAgICAkc3RyID0gJyc7CiAgICAgICAgaWYoICRwb2xpY3kgPT0gJ2luZGl2aWR1YWwnICYmICRldmVudF9hbGxvd3Nfb3ZlcmxhcCkgJHN0ciAuPSAnIEFORCBldmVudF9hbGxvd3Nfb3ZlcmxhcCA9IDAnOwogICAgICAgIGlmKCAkZXZlbnRfaWQgIT0gJycgJiYgJGV2ZW50X2lkICE9IC0xKSAkc3RyIC49ICIgQU5EIGV2ZW50X2lkICE9ICRldmVudF9pZCI7CgogICAgICAgICRkYnIgPSAnJzsKICAgICAgICBpZiggJGV2ZW50WydldmVudF9kYXRlX2VuZCddID09IE5VTEwgKSB7CiAgICAgICAgICAgICRzdGFydCA9ICcnOwogICAgICAgICAgICBpZiggaXNzZXQoJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0J10pICkgewogICAgICAgICAgICAgICAgJHN0YXJ0ID0gJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0J107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiggaXNzZXQoJGV2ZW50WydzdGFydCddKSApIHsKICAgICAgICAgICAgICAgIC8vIGFzc3VtZSB1bml4IHRpbWVzdGFtcAogICAgICAgICAgICAgICAgJHN0YXJ0ID0gJGRiLT5EYlRpbWVTdGFtcCgkZXZlbnRbJ3N0YXJ0J10pOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcXVlcnkgPSAnU0VMRUNUIGV2ZW50X2lkIEZST00gJy4kbW9kdWxlLT5ldmVudHNfdGFibGVfbmFtZS4iIFdIRVJFICgkc3RhcnQgQkVUV0VFTiBldmVudF9kYXRlX3N0YXJ0IGFuZCBldmVudF9kYXRlX2VuZCkiOwogICAgICAgICAgICAkZGJyID0gJGRiLT5HZXRPbmUoJHF1ZXJ5LiRzdHIpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJHN0YXJ0ID0gJyc7CiAgICAgICAgICAgIGlmKCBpc3NldCgkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnQnXSkgKSB7CiAgICAgICAgICAgICAgICAkc3RhcnQgPSAkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnQnXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKCBpc3NldCgkZXZlbnRbJ3N0YXJ0J10pICkgewogICAgICAgICAgICAgICAgLy8gYXNzdW1lIHVuaXggdGltZXN0YW1wCiAgICAgICAgICAgICAgICAkc3RhcnQgPSAkZGItPkRiVGltZVN0YW1wKCRldmVudFsnc3RhcnQnXSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRlbmQgPSAnJzsKICAgICAgICAgICAgaWYoIGlzc2V0KCRldmVudFsnZXZlbnRfZGF0ZV9lbmQnXSkgKSB7CiAgICAgICAgICAgICAgICAkZW5kID0gJGV2ZW50WydldmVudF9kYXRlX2VuZCddOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYoIGlzc2V0KCRldmVudFsnZW5kJ10pICkgewogICAgICAgICAgICAgICAgLy8gYXNzdW1lIHVuaXggdGltZXN0YW1wCiAgICAgICAgICAgICAgICAkZW5kID0gJGRiLT5EYlRpbWVTdGFtcCgkZXZlbnRbJ2VuZCddKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBldmVudF9pZCBGUk9NICcuJG1vZHVsZS0+ZXZlbnRzX3RhYmxlX25hbWUuIgogICAgICAgICAgICAgICAgICAgICAgV0hFUkUgKCgkc3RhcnQgQkVUV0VFTiBldmVudF9kYXRlX3N0YXJ0IGFuZCBldmVudF9kYXRlX2VuZCkgIE9SICgkZW5kIEJFVFdFRU4gZXZlbnRfZGF0ZV9zdGFydCBhbmQgZXZlbnRfZGF0ZV9lbmQpKSI7CiAgICAgICAgICAgICRkYnIgPSAkZGItPkdldE9uZSgkcXVlcnkuJHN0cik7CiAgICAgICAgfQogICAgICAgIGlmKCAkZGJyICkgcmV0dXJuIHRydWU7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2FsY3VsYXRlX3JlY3VycmluZ19ldmVudHMoJGV2ZW50X3N0YXJ0X3V0LCAkZXZlbnRfZW5kX3V0LCRldmVudF9yZWN1cl9wZXJpb2QsJGV2ZW50X3JlY3VyX2VuZF91dCwkZXZlbnRfcmVjdXJfaW50ZXJ2YWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudF9yZWN1cl9jb3VudCwkZXZlbnRfcmVjdXJfd2Vla2RheXMsJGV2ZW50X3JlY3VyX21vbnRoZGF5cykKICAgIHsKICAgICAgICAkcmVzdWx0cyA9IGFycmF5KCk7CiAgICAgICAgJHdlZWtkYXlzID0gYXJyYXkoJ3N1bmRheScsJ21vbmRheScsJ3R1ZXNkYXknLCd3ZWRuZXNkYXknLCd0aHVyc2RheScsJ2ZyaWRheScsJ3NhdHVyZGF5Jyk7CiAgICAgICAgJGRhdGUgPSAkZXZlbnRfc3RhcnRfdXQ7CiAgICAgICAgJGRlbHRhdCA9ICRldmVudF9lbmRfdXQgLSAkZXZlbnRfc3RhcnRfdXQ7CiAgICAgICAgaWYoIChpbnQpJGV2ZW50X2VuZF91dCA9PSAwICkgJGRlbHRhdCA9IDA7CgogICAgICAgICRwZXJpb2QgPSAnZGF5JzsKICAgICAgICAkZGF0ZWZtdHN0ciA9ICIrJWQgJXMiOwogICAgICAgICRob3VyID0gKGludClzdHJmdGltZSgnJUgnLCRkYXRlKTsKICAgICAgICAkbWludXRlID0gKGludClzdHJmdGltZSgnJU0nLCRkYXRlKTsKICAgICAgICBpZiggJGV2ZW50X3JlY3VyX2NvdW50IDwgMCApICRldmVudF9yZWN1cl9jb3VudCA9IDEwMDAwMDA7CiAgICAgICAgJG1vZCA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX0NHQ0FMRU5EQVIpOwogICAgICAgICRmaXJzdGRheW9md2VlayA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ2ZpcnN0ZGF5b2Z3ZWVrJyk7CgogICAgICAgIHN3aXRjaCggJGV2ZW50X3JlY3VyX3BlcmlvZCApIHsKICAgICAgICBjYXNlICdkYWlseSc6CiAgICAgICAgICAgICRwZXJpb2QgPSAnZGF5cyc7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICd3ZWVrbHknOgogICAgICAgICAgICAkZGF0ZWZtdHN0ciA9ICIrJWQgJXMgJXMgJWQ6JWQiOwogICAgICAgICAgICAkcGVyaW9kID0gJ3dlZWtzJzsKICAgICAgICAgICAgLy8gdGhpcyBsb29wIGhhbmRsZXMgZXZlbnQgaW4gdGhlIHNhbWUgd2VlayBhcyB0aGUgc3RhcnQgZXZlbnQKICAgICAgICAgICAgaWYoICFjb3VudCgkZXZlbnRfcmVjdXJfd2Vla2RheXMpICkgewogICAgICAgICAgICAgICAgJGV2ZW50X3JlY3VyX3dlZWtkYXlzID0gYXJyYXkoZGF0ZSgndycsJGV2ZW50X3N0YXJ0X3V0KSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGRhdGUgPSAkZXZlbnRfc3RhcnRfdXQ7CiAgICAgICAgICAgIGZvcmVhY2goICRldmVudF9yZWN1cl93ZWVrZGF5cyBhcyAkd2QgKSB7CiAgICAgICAgICAgICAgICBpZiggY291bnQoJHJlc3VsdHMpID49ICRldmVudF9yZWN1cl9jb3VudCApIGJyZWFrOwogICAgICAgICAgICAgICAgJHN0ciA9IHNwcmludGYoJGRhdGVmbXRzdHIsMCwkcGVyaW9kLCR3ZWVrZGF5c1skd2QrJGZpcnN0ZGF5b2Z3ZWVrXSwkaG91ciwkbWludXRlKTsKICAgICAgICAgICAgICAgICR0bXAgPSBzdHJ0b3RpbWUoJHN0ciwkZGF0ZSk7CiAgICAgICAgICAgICAgICBpZiggJHRtcCA8PSAkZXZlbnRfc3RhcnRfdXQgKSBjb250aW51ZTsKCiAgICAgICAgICAgICAgICAkdG1wYSA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICAkdG1wYVsnc3RhcnQnXSA9ICR0bXA7CiAgICAgICAgICAgICAgICBpZiggJGRlbHRhdCA9PSAwICkgewogICAgICAgICAgICAgICAgICAgICR0bXBhWydlbmQnXSA9IE5VTEw7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkdG1wYVsnZW5kJ10gPSAkdG1wICsgJGRlbHRhdDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBoZXJlIHdlIGNoZWNrIGZvciBhbiBvdmVybGFwCiAgICAgICAgICAgICAgICAvLyB3aXRoIHRoZSBzdGFydCBhbmQgZW5kIGRhdGVzCiAgICAgICAgICAgICAgICAvLyBhbmQgaWdub3JlIGFueXRoaW5nIHRoYXQgbWlnaHQgb3ZlcmxhcAogICAgICAgICAgICAgICAgJHRtcDIgPSBhcnJheSgkdG1wYSk7CiAgICAgICAgICAgICAgICAkdGVzdCA9IFxjZ2NfZXZlbnRfdXRpbHM6OmNoZWNrX292ZXJsYXBwaW5nX2V2ZW50cygkZXZlbnRfc3RhcnRfdXQsJGV2ZW50X2VuZF91dCwkdG1wMik7CiAgICAgICAgICAgICAgICBpZiggJHRlc3QgPT0gZmFsc2UgKSAkcmVzdWx0c1tdID0gJHRtcGE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ21vbnRobHknOgogICAgICAgICAgICAkcGVyaW9kID0gJ21vbnRocyc7CiAgICAgICAgICAgIGlmKCAkZXZlbnRfcmVjdXJfbW9udGhkYXlzWzBdID09ICdzcGVjaWZpZWQnICkgewogICAgICAgICAgICAgICAgJGV2ZW50X3JlY3VyX3BlcmlvZCA9ICdtb250aGx5X3NwZWNpZmllZCc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkZGF0ZWZtdHN0ciA9ICIlcyAlcyAlZCAlZDolZCI7CiAgICAgICAgICAgICAgICAvLyB0aGlzIGxvb3AgaGFuZGxlcyBldmVudHMgaW4gdGhlIHNhbWUgbW9udGggYXMgdGhlIHN0YXJ0IGV2ZW50CiAgICAgICAgICAgICAgICAkbW9udGggPSBkYXRlKCdNJywkZGF0ZSk7CiAgICAgICAgICAgICAgICAkeWVhciA9IGRhdGUoJ1knLCRkYXRlKTsKICAgICAgICAgICAgICAgIGZvcmVhY2goICRldmVudF9yZWN1cl9tb250aGRheXMgYXMgJG1kICkgewogICAgICAgICAgICAgICAgICAgIGlmKCBjb3VudCgkcmVzdWx0cykgPj0gJGV2ZW50X3JlY3VyX2NvdW50ICkgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgbGlzdCgkbnRoLCR3ZCkgPSBleHBsb2RlKCcsJywkbWQsMik7CiAgICAgICAgICAgICAgICAgICAgJHRtcCA9IHNlbGY6Om50aF93ZWVrZGF5KCRudGgsJHdkLCRkYXRlKTsKICAgICAgICAgICAgICAgICAgICAvLyRzdHIgPSBzcHJpbnRmKCRkYXRlZm10c3RyLCRtZCwkbW9udGgsJHllYXIsJGhvdXIsJG1pbnV0ZSk7CiAgICAgICAgICAgICAgICAgICAgLy8kdG1wID0gc3RydG90aW1lKCRzdHIsJGRhdGUpOwogICAgICAgICAgICAgICAgICAgIGlmKCAkdG1wIDw9ICRldmVudF9zdGFydF91dCApIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICRyZXN1bHRzW10gPSAkdG1wOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHRtcDIgPSBzdHJ0b3RpbWUoc3ByaW50ZignKyVkIG1vbnRocycsJGV2ZW50X3JlY3VyX2ludGVydmFsKSwkZGF0ZSk7CiAgICAgICAgICAgICAgICBpZiAoZGF0ZSgnZCcsJHRtcDIpPjI4KSAkdG1wMiA9IHN0cnRvdGltZSgnLTQgZGF5cycsJHRtcDIpOwogICAgICAgICAgICAgICAgJGRhdGUgPSAkdG1wMjsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAneWVhcmx5JzoKICAgICAgICAgICAgJHBlcmlvZCA9ICd5ZWFycyc7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgLy8gaGFuZGxlIHRoZSByZWN1cnJpbmcgbmF0dXJlIG9mIHRoaW5ncy4KICAgICAgICB3aGlsZSggY291bnQoJHJlc3VsdHMpIDwgJGV2ZW50X3JlY3VyX2NvdW50ICYmICRkYXRlIDw9ICRldmVudF9yZWN1cl9lbmRfdXQgKSB7CiAgICAgICAgICAgIHN3aXRjaCggJGV2ZW50X3JlY3VyX3BlcmlvZCApIHsKICAgICAgICAgICAgY2FzZSAnd2Vla2x5JzoKICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBlYWNoIHdlZWtkYXkKICAgICAgICAgICAgICAgICR0bXAgPSAnJzsKICAgICAgICAgICAgICAgIGZvcmVhY2goICRldmVudF9yZWN1cl93ZWVrZGF5cyBhcyAkd2QgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYoIGNvdW50KCRyZXN1bHRzKSA+PSAkZXZlbnRfcmVjdXJfY291bnQgKSBicmVhazsKICAgICAgICAgICAgICAgICAgICAkc3RyID0gc3ByaW50ZigkZGF0ZWZtdHN0ciwkZXZlbnRfcmVjdXJfaW50ZXJ2YWwsJHBlcmlvZCwkd2Vla2RheXNbJHdkKyRmaXJzdGRheW9md2Vla10sJGhvdXIsJG1pbnV0ZSk7CiAgICAgICAgICAgICAgICAgICAgJHRtcCA9IHN0cnRvdGltZSgkc3RyLCRkYXRlKTsKICAgICAgICAgICAgICAgICAgICBpZiggJHRtcCA+ICRldmVudF9yZWN1cl9lbmRfdXQgKSBicmVhazsKICAgICAgICAgICAgICAgICAgICAkdG1wYSA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICAgICAgJHRtcGFbJ3N0YXJ0J10gPSAkdG1wOwogICAgICAgICAgICAgICAgICAgIGlmKCAkZGVsdGF0ID09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0bXBhWydlbmQnXSA9IE5VTEw7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkdG1wYVsnZW5kJ10gPSAkdG1wICsgJGRlbHRhdDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJHJlc3VsdHNbXSA9ICR0bXBhOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGRhdGUgPSAkdG1wOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlICdtb250aGx5JzoKICAgICAgICAgICAgICAgICR0bXAgPSAnJzsKICAgICAgICAgICAgICAgICRtb250aCA9IGRhdGUoJ00nLCRkYXRlKTsKICAgICAgICAgICAgICAgICR5ZWFyID0gZGF0ZSgnWScsJGRhdGUpOwogICAgICAgICAgICAgICAgZm9yZWFjaCggJGV2ZW50X3JlY3VyX21vbnRoZGF5cyBhcyAkbWQgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYoIGNvdW50KCRyZXN1bHRzKSA+PSAkZXZlbnRfcmVjdXJfY291bnQgKSBicmVhazsKICAgICAgICAgICAgICAgICAgICBsaXN0KCRudGgsJHdkKSA9IGV4cGxvZGUoJywnLCRtZCwyKTsKICAgICAgICAgICAgICAgICAgICAkdG1wID0gc2VsZjo6bnRoX3dlZWtkYXkoJG50aCwkd2QsJGRhdGUpOwogICAgICAgICAgICAgICAgICAgIC8vJHN0ciA9IHNwcmludGYoJGRhdGVmbXRzdHIsJG1kLCRtb250aCwkeWVhciwkaG91ciwkbWludXRlKTsKICAgICAgICAgICAgICAgICAgICAvLyR0bXAgPSBzdHJ0b3RpbWUoJHN0ciwkZGF0ZSk7CiAgICAgICAgICAgICAgICAgICAgaWYoICR0bXAgPD0gJGV2ZW50X3N0YXJ0X3V0ICkgY29udGludWU7CgogICAgICAgICAgICAgICAgICAgICR0bXBhID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICAgICAkdG1wYVsnc3RhcnQnXSA9ICR0bXA7CiAgICAgICAgICAgICAgICAgICAgaWYoICRkZWx0YXQgPT0gMCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRtcGFbJ2VuZCddID0gTlVMTDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0bXBhWydlbmQnXSA9ICR0bXAgKyAkZGVsdGF0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkcmVzdWx0c1tdID0gJHRtcGE7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHRtcDIgPSBzdHJ0b3RpbWUoc3ByaW50ZignKyVkIG1vbnRocycsJGV2ZW50X3JlY3VyX2ludGVydmFsKSwkZGF0ZSk7CiAgICAgICAgICAgICAgICBpZiAoZGF0ZSgnZCcsJHRtcDIpPjI4KQkkdG1wMiA9IHN0cnRvdGltZSgnLTQgZGF5cycsJHRtcDIpOwogICAgICAgICAgICAgICAgJGRhdGUgPSAkdG1wMjsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIC8vIG5vcm1hbCBpbmNyZW1lbnRpbmcKICAgICAgICAgICAgICAgICR0bXAgPSBzdHJ0b3RpbWUoc3ByaW50ZigkZGF0ZWZtdHN0ciwkZXZlbnRfcmVjdXJfaW50ZXJ2YWwsJHBlcmlvZCksJGRhdGUpOwogICAgICAgICAgICAgICAgJHRtcGEgPSBhcnJheSgpOwogICAgICAgICAgICAgICAgJHRtcGFbJ3N0YXJ0J10gPSAkdG1wOwogICAgICAgICAgICAgICAgaWYoICRkZWx0YXQgPT0gMCApIHsKICAgICAgICAgICAgICAgICAgICAkdG1wYVsnZW5kJ10gPSBOVUxMOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHRtcGFbJ2VuZCddID0gJHRtcCArICRkZWx0YXQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkcmVzdWx0c1tdID0gJHRtcGE7CiAgICAgICAgICAgICAgICAkZGF0ZSA9ICR0bXA7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfSAvLyBzd2l0Y2gKICAgICAgICB9IC8vIHdoaWxlCgogICAgICAgIHJldHVybiAkcmVzdWx0czsKICAgIH0KfSAvLyBlbmQgb2YgY2xhc3MKCiMKIyBFT0YKIwo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.Event.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHQ2FsZW5kYXI7CgoKLy8gdXNlcyBhcnJheSBhY2Nlc3Mgc28gdGhhdCB0aGUgb2JqZWN0IHJlcHJlc2VudHMgaXRzZWxmIGFzIGFuIGFycmF5IHRvIHByZXNlcnZlIGJhY2t3YXJkcyBjb21wYXQKY2xhc3MgRXZlbnQgaW1wbGVtZW50cyBcQXJyYXlBY2Nlc3MKewogICAgLy8gcmVhZG9ubHkgJ2V2ZW50X2RhdGVfc3RhcnQnLCAnZXZlbnRfZGF0ZV9lbmQnICdldmVudF9kYXRlX3JlY3VyX2VuZCcgKGJ1dCBmaWxsIGZyb20gcGFyYW1zIGNhbiByZWFkaW5nIHRoZXNlIGFuZCBzZXR0aW5nIHZhcmlhYmxlcy4gaGFuZGxlIHRoZXNlKQogICAgcHJpdmF0ZSAkX2RhdGEgPSBbJ2V2ZW50X2lkJz0+bnVsbCwnZXZlbnRfdGl0bGUnPT5udWxsLCdldmVudF9zdW1tYXJ5Jz0+bnVsbCwnZXZlbnRfZGV0YWlscyc9Pm51bGwsCiAgICAgICAgICAgICAgICAgICAgICAnZXZlbnRfZGF0ZV9zdGFydF91dCc9Pm51bGwsJ2V2ZW50X2RhdGVfZW5kX3V0Jz0+bnVsbCwnZXZlbnRfcGFyZW50X2lkJz0+bnVsbCwnZXZlbnRfcmVjdXJfcGVyaW9kJz0+bnVsbCwKICAgICAgICAgICAgICAgICAgICAgICdldmVudF9kYXRlX3JlY3VyX2VuZF91dCc9Pm51bGwsICdldmVudF9jcmVhdGVkX2J5Jz0+bnVsbCwgJ2V2ZW50X2NyZWF0ZV9kYXRlX3V0Jz0+bnVsbCwgJ2V2ZW50X21vZGlmaWVkX2RhdGVfdXQnPT5udWxsLAogICAgICAgICAgICAgICAgICAgICAgJ2V2ZW50X3JlY3VyX25ldmVudHMnPT5udWxsLCAnZXZlbnRfcmVjdXJfaW50ZXJ2YWwnPT5udWxsLCAnZXZlbnRfcmVjdXJfd2Vla2RheXMnPT5bXSwgJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyc9PltdLAogICAgICAgICAgICAgICAgICAgICAgJ2V2ZW50X2FsbG93c19vdmVybGFwJz0+bnVsbCwgJ2V2ZW50X2FsbF9kYXknPT5udWxsLCAnZXZlbnRfc3RhdHVzJz0+bnVsbCBdOwogICAgcHJpdmF0ZSAkX2NhdGVnb3JpZXMgPSBbXTsKICAgIHByaXZhdGUgJF9maWVsZHMgPSBbXTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoIGFycmF5ICRwYXJhbXMgPSBudWxsICkKICAgIHsKICAgICAgICBpZiggaXNfYXJyYXkoJHBhcmFtcykgKSAkdGhpcy0+ZmlsbF9mcm9tX2RiKCAkcGFyYW1zICk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIE9mZnNldEdldCgka2V5KQogICAgewogICAgICAgICRub3RfbnVsbF9kYnRpbWUgPSBmdW5jdGlvbiggJGluICkgewogICAgICAgICAgICBpZiggaXNfaW50KCRpbikgKSByZXR1cm4gXGNnZV91dGlsczo6ZGJfdGltZSggJGluICk7CiAgICAgICAgfTsKCiAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgIGNhc2UgJ2V2ZW50X2lkJzoKICAgICAgICBjYXNlICdldmVudF9wYXJlbnRfaWQnOgogICAgICAgIGNhc2UgJ2V2ZW50X2NyZWF0ZWRfYnknOgogICAgICAgIGNhc2UgJ2V2ZW50X3JlY3VyX25ldmVudHMnOgogICAgICAgIGNhc2UgJ2V2ZW50X3JlY3VyX2ludGVydmFsJzoKICAgICAgICAgICAgcmV0dXJuIChpbnQpICR0aGlzLT5fZGF0YVska2V5XTsKCiAgICAgICAgY2FzZSAnZXZlbnRfcmVjdXJzJzogLy8gY29udmVuaWVuY2UKICAgICAgICAgICAgcmV0dXJuIChib29sKSAoJHRoaXMtPl9kYXRhWydldmVudF9yZWN1cl9wZXJpb2QnXSAmJiAkdGhpcy0+X2RhdGFbJ2V2ZW50X3JlY3VyX3BlcmlvZCddICE9ICdub25lJyk7CgogICAgICAgIGNhc2UgJ2V2ZW50X3JlY3VyX2NvdW50JzogLy8gY29udmVuaWVuY2UgYW5kIGNvbXBhdGliaWxpdHkKICAgICAgICAgICAgcmV0dXJuIChpbnQpICR0aGlzLT5fZGF0YVsnZXZlbnRfcmVjdXJfbmV2ZW50cyddOwoKICAgICAgICBjYXNlICdldmVudF9hbGxvd3Nfb3ZlcmxhcCc6CiAgICAgICAgY2FzZSAnZXZlbnRfYWxsX2RheSc6CiAgICAgICAgICAgIHJldHVybiAoYm9vbCkgJHRoaXMtPl9kYXRhWyRrZXldOwoKICAgICAgICBjYXNlICdhbGxfZGF5X2V2ZW50JzogLy8gY29udmVuaWVuY2UgYW5kIGNvbXBhdGliaWxpdHkKICAgICAgICAgICAgcmV0dXJuIChib29sKSAkdGhpcy0+X2RhdGFbJ2V2ZW50X2FsbF9kYXknXTsKCiAgICAgICAgY2FzZSAnZXZlbnRfZGF0ZV9zdGFydF91dCc6CiAgICAgICAgICAgIHJldHVybiAoaW50KSAkdGhpcy0+X2RhdGFbJGtleV07CgogICAgICAgIGNhc2UgJ2V2ZW50X2RhdGVfZW5kX3V0JzoKICAgICAgICBjYXNlICdldmVudF9kYXRlX3JlY3VyX2VuZF91dCc6CiAgICAgICAgY2FzZSAnZXZlbnRfY3JlYXRlX2RhdGVfdXQnOgogICAgICAgIGNhc2UgJ2V2ZW50X21vZGlmaWVkX2RhdGVfdXQnOgogICAgICAgICAgICBpZiggJHRoaXMtPl9kYXRhWyRrZXldICkgcmV0dXJuIChpbnQpICR0aGlzLT5fZGF0YVska2V5XTsKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICBjYXNlICdldmVudF9kYXRlX3N0YXJ0JzoKICAgICAgICAgICAgcmV0dXJuICRub3RfbnVsbF9kYnRpbWUoICR0aGlzLT5fZGF0YVsnZXZlbnRfZGF0ZV9zdGFydF91dCddICk7CgogICAgICAgIGNhc2UgJ2V2ZW50X2RhdGVfcmVjdXJfZW5kJzoKICAgICAgICAgICAgcmV0dXJuICRub3RfbnVsbF9kYnRpbWUoICR0aGlzLT5fZGF0YVsnZXZlbnRfZGF0ZV9yZWN1cl9lbmRfdXQnXSApOwoKICAgICAgICBjYXNlICdldmVudF9kYXRlX2VuZCc6CiAgICAgICAgICAgIHJldHVybiAkbm90X251bGxfZGJ0aW1lKCAkdGhpcy0+X2RhdGFbJ2V2ZW50X2RhdGVfZW5kX3V0J10gKTsKCiAgICAgICAgY2FzZSAnZXZlbnRfY3JlYXRlX2RhdGUnOgogICAgICAgICAgICByZXR1cm4gJG5vdF9udWxsX2RidGltZSggJHRoaXMtPl9kYXRhWydldmVudF9jcmVhdGVfZGF0ZV91dCddICk7CgogICAgICAgIGNhc2UgJ2V2ZW50X21vZGlmaWVkX2RhdGUnOgogICAgICAgICAgICByZXR1cm4gJG5vdF9udWxsX2RidGltZSggJHRoaXMtPl9kYXRhWydldmVudF9tb2RpZmllZF9kYXRlX3V0J10gKTsKCiAgICAgICAgY2FzZSAnZXZlbnRfdGl0bGUnOgogICAgICAgIGNhc2UgJ2V2ZW50X3N1bW1hcnknOgogICAgICAgIGNhc2UgJ2V2ZW50X2RldGFpbHMnOgogICAgICAgIGNhc2UgJ2V2ZW50X3JlY3VyX3BlcmlvZCc6CiAgICAgICAgY2FzZSAnZXZlbnRfc3RhdHVzJzoKICAgICAgICAgICAgcmV0dXJuIHRyaW0oJHRoaXMtPl9kYXRhWyRrZXldKTsKCiAgICAgICAgY2FzZSAnZXZlbnRfcmVjdXJfd2Vla2RheXMnOgogICAgICAgIGNhc2UgJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyc6CiAgICAgICAgICAgIC8vIHRoaXMgaXMgYW4gaW50W10KICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5fZGF0YVska2V5XTsKCiAgICAgICAgY2FzZSAnZmllbGRzJzoKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5fZmllbGRzOwoKICAgICAgICBjYXNlICdjYXRlZ29yaWVzJzoKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5fY2F0ZWdvcmllczsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigiJGtleSBpcyBub3QgYSBnZXR0YWJsZSBwcm9wZXJ0eSBvZiAiLmdldF9jbGFzcygkdGhpcykpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gT2Zmc2V0U2V0KCRrZXksJHZhbCkKICAgIHsKICAgICAgICAkZXhwbG9kZTIgPSBmdW5jdGlvbigkZGVsaW0sJGluX3N0cikgewogICAgICAgICAgICAvLyBleHBsb2RlIGEgc3RyaW5nIGJ5IGV2ZXJ5IHNlY29uZCAsCiAgICAgICAgICAgICR0bXAgPSBleHBsb2RlKCRkZWxpbSwkaW5fc3RyKTsKICAgICAgICAgICAgJG91dCA9IFtdOwogICAgICAgICAgICB3aGlsZSggJHRtcCApIHsKICAgICAgICAgICAgICAgICRvdXRbXSA9IGltcGxvZGUoJGRlbGltLGFycmF5X3NwbGljZSgkdG1wLDAsMikpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAkb3V0OwogICAgICAgIH07CgogICAgICAgIHN3aXRjaCggJGtleSApIHsKICAgICAgICBjYXNlICdldmVudF9wYXJlbnRfaWQnOgogICAgICAgIGNhc2UgJ2V2ZW50X2NyZWF0ZWRfYnknOgogICAgICAgIGNhc2UgJ2V2ZW50X3JlY3VyX25ldmVudHMnOgogICAgICAgIGNhc2UgJ2V2ZW50X3JlY3VyX2ludGVydmFsJzoKICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyRrZXldID0gKGludCkgJHZhbDsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ2V2ZW50X3JlY3VyX2NvdW50JzogLy8gY29tcGF0aWJpbGl0eQogICAgICAgICAgICAkdGhpcy0+X2RhdGFbJ2V2ZW50X3JlY3VyX25ldmVudHMnXSA9IChpbnQpICR2YWw7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdldmVudF9hbGxvd3Nfb3ZlcmxhcCc6CiAgICAgICAgY2FzZSAnZXZlbnRfYWxsX2RheSc6CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVska2V5XSA9IChib29sKSAkdmFsOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnYWxsX2RheV9ldmVudCc6IC8vIGNvbXBhdGlibGl0eQogICAgICAgICAgICAkdGhpcy0+X2RhdGFbJ2V2ZW50X2FsbF9kYXknXSA9IChib29sKSAkdmFsOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnZXZlbnRfZGF0ZV9yZWN1cl9lbmRfdXQnOgogICAgICAgIGNhc2UgJ2V2ZW50X2RhdGVfZW5kX3V0JzoKICAgICAgICAgICAgaWYoICFpc19udWxsKCR2YWwpICkgJHZhbCA9IHRyaW0oJHZhbCk7CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVska2V5XSA9ICR2YWw7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdldmVudF9kYXRlX3N0YXJ0X3V0JzoKICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyRrZXldID0gKGludCkgJHZhbDsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ2V2ZW50X3RpdGxlJzoKICAgICAgICBjYXNlICdldmVudF9zdW1tYXJ5JzoKICAgICAgICBjYXNlICdldmVudF9kZXRhaWxzJzoKICAgICAgICBjYXNlICdldmVudF9yZWN1cl9wZXJpb2QnOgogICAgICAgICAgICAkdGhpcy0+X2RhdGFbJGtleV0gPSB0cmltKCR2YWwpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnZXZlbnRfcmVjdXJfd2Vla2RheXMnOgogICAgICAgIGNhc2UgJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyc6CiAgICAgICAgICAgIGlmKCBpc19zdHJpbmcoJHZhbCkgKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGFbJGtleV0gPSAkZXhwbG9kZTIoJywnLCR2YWwpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyRrZXldID0gJHZhbDsgLy8gYXJyYXkgPwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdldmVudF9zdGF0dXMnOgogICAgICAgICAgICAkdGhpcy0+X2RhdGFbJGtleV0gPSB0cmltKCR2YWwpWzBdOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigiJGtleSBpcyBub3QgYSBzZXR0YWJsZSBwcm9wZXJ0eSBvZiAiLmdldF9jbGFzcygkdGhpcykpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gT2Zmc2V0RXhpc3RzKCAka2V5ICkKICAgIHsKICAgICAgICBpZiggJGtleSA9PSAnZmllbGRzJyB8fCAka2V5ID09ICdjYXRlZ29yaWVzJyApIHJldHVybiB0cnVlOwogICAgICAgIHJldHVybiBhcnJheV9rZXlfZXhpc3RzKCRrZXksJHRoaXMtPl9kYXRhKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gT2Zmc2V0VW5zZXQoICRrZXkgKSB7fSAvKiBkbyBub3RoaW5nICovCgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGZpbGxfZnJvbV9kYiggYXJyYXkgJHBhcmFtcyApCiAgICB7CiAgICAgICAgaWYoICgkZmllbGRzID0gXGNnZV91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJ2ZpZWxkcycpICkgKSB7CiAgICAgICAgICAgIGlmKCBpc19hcnJheSgkZmllbGRzKSAmJiBjb3VudCgkZmllbGRzKSApICAkdGhpcy0+X2ZpZWxkcyA9ICRmaWVsZHM7CiAgICAgICAgICAgIHVuc2V0KCRwYXJhbXNbJ2ZpZWxkcyddKTsKICAgICAgICB9CiAgICAgICAgaWYoICgkY2F0ZWdvcmllcyA9IFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCdjYXRlZ29yaWVzJykgKSApIHsKICAgICAgICAgICAgaWYoIGlzX2FycmF5KCRjYXRlZ29yaWVzKSAmJiBjb3VudCgkY2F0ZWdvcmllcykgKSAgJHRoaXMtPl9jYXRlZ29yaWVzID0gJGNhdGVnb3JpZXM7CiAgICAgICAgICAgIHVuc2V0KCRwYXJhbXNbJ2NhdGVnb3JpZXMnXSk7CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoKCBhcnJheV9rZXlzKCR0aGlzLT5fZGF0YSkgYXMgJGtleSApIHsKICAgICAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJGtleV0pICkgJHRoaXMtPl9kYXRhWyRrZXldID0gJHBhcmFtc1ska2V5XTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGZpbGxfZnJvbV9wYXJhbXMoICRkYiwgYXJyYXkgJHBhcmFtcyApCiAgICB7CiAgICAgICAgLy8gdGhpcyBpcyBmb3IgZm9ybSBwcm9jZXNzaW5nCiAgICAgICAgLy8gdG9kbzogZXZlbnQgaWQgID8/CiAgICAgICAgaWYoICgkdmFsID0gXGNnZV9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCdldmVudF9wYXJlbnRfaWQnKSkgKSAkdGhpc1snZXZlbnRfcGFyZW50X2lkJ10gPSAkdmFsOwogICAgICAgIGlmKCBcY2dlX3BhcmFtOjpleGlzdHMoJHBhcmFtcywncmVtb3ZlZnJvbXBhcmVudCcpICkgJHRoaXNbJ2V2ZW50X3BhcmVudF9pZCddID0gLTE7CiAgICAgICAgaWYoICgkdmFsID0gXGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdldmVudF90aXRsZScpKSApICR0aGlzWydldmVudF90aXRsZSddID0gJHZhbDsKICAgICAgICBpZiggKCR2YWwgPSBcY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ2V2ZW50X3N1bW1hcnknKSkgKSAkdGhpc1snZXZlbnRfc3VtbWFyeSddID0gJHZhbDsKICAgICAgICBpZiggKCR2YWwgPSB0cmltKFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCdldmVudF9kZXRhaWxzJykpKSApICR0aGlzWydldmVudF9kZXRhaWxzJ10gPSAkdmFsOwogICAgICAgIGlmKCAoJHZhbCA9IFxjZ2VfcGFyYW06OmdldF9ib29sKCRwYXJhbXMsJ2V2ZW50X2FsbG93c19vdmVybGFwJykpICkgJHRoaXNbJ2V2ZW50X2FsbG93c19vdmVybGFwJ10gPSAkdmFsOwogICAgICAgIGlmKCAoJHZhbCA9IFxjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnZXZlbnRfc3RhdHVzJykpICkgJHRoaXNbJ2V2ZW50X3N0YXR1cyddID0gJHZhbDsKICAgICAgICAkdGhpc1snZXZlbnRfYWxsX2RheSddID0gXGNnZV9wYXJhbTo6Z2V0X2Jvb2woJHBhcmFtcywnYWxsX2RheV9ldmVudCcpOwoKICAgICAgICAkc3RhcnRfaG91ciA9IDA7CiAgICAgICAgJHN0YXJ0X21pbnV0ZSA9IDA7CiAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ3N0YXJ0ZGF0ZV9Nb250aCddKSApIHsKICAgICAgICAgICAgJHN0YXJ0X2hvdXIgPSAkcGFyYW1zWydzdGFydGRhdGVfSG91ciddOwogICAgICAgICAgICAkc3RhcnRfbWludXRlID0gJHBhcmFtc1snc3RhcnRkYXRlX01pbnV0ZSddOwogICAgICAgICAgICBpZiggaXNzZXQoJHBhcmFtc1snc3RhcnRkYXRlX01lcmlkaWFuJ10pICkgewogICAgICAgICAgICAgICAgaWYoICRwYXJhbXNbJ3N0YXJ0ZGF0ZV9NZXJpZGlhbiddID09ICdhbScgJiYgJHN0YXJ0X2hvdXIgPj0gMTIgKSB7CiAgICAgICAgICAgICAgICAgICAgJHN0YXJ0X2hvdXIgLT0gMTI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmKCAkcGFyYW1zWydzdGFydGRhdGVfTWVyaWRpYW4nXSA9PSAncG0nICYmICRzdGFydF9ob3VyIDwgMTIgKSB7CiAgICAgICAgICAgICAgICAgICAgJHN0YXJ0X2hvdXIgKz0gMTI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRpbWUgPSBta3RpbWUoJHN0YXJ0X2hvdXIsJHN0YXJ0X21pbnV0ZSwwLCRwYXJhbXNbJ3N0YXJ0ZGF0ZV9Nb250aCddLCRwYXJhbXNbJ3N0YXJ0ZGF0ZV9EYXknXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcmFtc1snc3RhcnRkYXRlX1llYXInXSk7CiAgICAgICAgICAgICR0aGlzWydldmVudF9kYXRlX3N0YXJ0J10gPSAkZGItPkRiVGltZVN0YW1wKCR0aW1lKTsKICAgICAgICB9CgogICAgICAgICRldmVudFsnZXZlbnRfZGF0ZV9lbmQnXSA9IG51bGw7CiAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2VuZGRhdGVfdmFsaWQnXSkgJiYgJHBhcmFtc1snZW5kZGF0ZV92YWxpZCddICYmIGlzc2V0KCRwYXJhbXNbJ2VuZGRhdGVfRGF5J10pICkgewogICAgICAgICAgICAkZW5kX21vbnRoID0gJHBhcmFtc1snZW5kZGF0ZV9Nb250aCddOwogICAgICAgICAgICAkZW5kX2RheSA9ICRwYXJhbXNbJ2VuZGRhdGVfRGF5J107CiAgICAgICAgICAgICRlbmRfeWVhciA9ICRwYXJhbXNbJ2VuZGRhdGVfWWVhciddOwogICAgICAgICAgICAkZW5kX2hvdXIgPSAkcGFyYW1zWydlbmRkYXRlX0hvdXInXTsKICAgICAgICAgICAgJGVuZF9taW51dGUgPSAkcGFyYW1zWydlbmRkYXRlX01pbnV0ZSddOwogICAgICAgICAgICBpZiggaXNzZXQoJHBhcmFtc1snZW5kZGF0ZV9NZXJpZGlhbiddKSAmJiAkcGFyYW1zWydlbmRkYXRlX01lcmlkaWFuJ10gPT0gJ2FtJyAmJiAkZW5kX2hvdXIgPj0gMTIgKSB7CiAgICAgICAgICAgICAgICAkZW5kX2hvdXIgLT0gMTI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiggaXNzZXQoJHBhcmFtc1snZW5kZGF0ZV9NZXJpZGlhbiddKSAmJiAkcGFyYW1zWydlbmRkYXRlX01lcmlkaWFuJ10gPT0gJ3BtJyAmJiAkZW5kX2hvdXIgPCAxMiApIHsKICAgICAgICAgICAgICAgICRlbmRfaG91ciArPSAxMjsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdGltZSA9IG1rdGltZSgkZW5kX2hvdXIsJGVuZF9taW51dGUsMCwkZW5kX21vbnRoLCRlbmRfZGF5LCRlbmRfeWVhcik7CiAgICAgICAgICAgICR0aGlzWydldmVudF9kYXRlX2VuZCddID0gJGRiLT5EYlRpbWVTdGFtcCgkdGltZSk7CiAgICAgICAgfQoKICAgICAgICBpZiggKCR2YWwgPSBcY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ2V2ZW50X3JlY3VyX3BlcmlvZCcpKSApICR0aGlzWydldmVudF9yZWN1cl9wZXJpb2QnXSA9ICR2YWw7CiAgICAgICAgaWYoICR0aGlzWydldmVudF9yZWN1cl9wZXJpb2QnXSAhPSAnbm9uZScgKSB7CiAgICAgICAgICAgIGlmKCAoJHZhbCA9IFxjZ2VfcGFyYW06OmdldF9pbnQoJHBhcmFtcywnZXZlbnRfcmVjdXJfaW50ZXJ2YWwnKSkgKSAkdGhpc1snZXZlbnRfcmVjdXJfaW50ZXJ2YWwnXSA9ICR2YWw7CiAgICAgICAgICAgIGlmKCAoJHZhbCA9IFxjZ2VfcGFyYW06OmdldF9pbnQoJHBhcmFtcywnZXZlbnRfcmVjdXJfY291bnQnKSkgKSAkdGhpc1snZXZlbnRfcmVjdXJfY291bnQnXSA9ICR2YWw7CiAgICAgICAgICAgIGlmKCAoJHZhbCA9IFxjZ2VfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCdldmVudF9yZWN1cl93ZWVrZGF5cycpKSApIHsKICAgICAgICAgICAgICAgIGlmKCBpc19hcnJheSgkdmFsKSApIHsKICAgICAgICAgICAgICAgICAgICAkdGhpc1snZXZlbnRfcmVjdXJfd2Vla2RheXMnXSA9ICR2YWw7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICR0aGlzWydldmVudF9yZWN1cl93ZWVrZGF5cyddID0gZXhwbG9kZSgnLCcsJHZhbCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoICgkdmFsID0gXGNnZV91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJ2V2ZW50X3JlY3VyX21vbnRoZGF5cycpKSApIHsKICAgICAgICAgICAgICAgIGlmKCBpc19hcnJheSgkdmFsKSApIHsKICAgICAgICAgICAgICAgICAgICAkdGhpc1snZXZlbnRfcmVjdXJfbW9udGhkYXlzJ10gPSAkdmFsOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkdGhpc1snZXZlbnRfcmVjdXJfbW9udGhkYXlzJ10gPSBleHBsb2RlKCcsJywkdmFsKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiggXGNnZV9wYXJhbTo6ZXhpc3RzKCRwYXJhbXMsJ2V2ZW50X3JlY3VyX2RhdGVfTW9udGgnKSApIHsKICAgICAgICAgICAgICAgICR0aW1lID0gbWt0aW1lKDAsMCwwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGNnZV9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCdldmVudF9yZWN1cl9kYXRlX01vbnRoJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcY2dlX3BhcmFtOjpnZXRfaW50KCRwYXJhbXMsJ2V2ZW50X3JlY3VyX2RhdGVfRGF5JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcY2dlX3BhcmFtOjpnZXRfaW50KCRwYXJhbXMsJ2V2ZW50X3JlY3VyX2RhdGVfWWVhcicpCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfZGF0ZV9yZWN1cl9lbmQnXSA9ICRkYi0+RGJUaW1lU3RhbXAoJHRpbWUpOwogICAgICAgICAgICB9IGVsc2UgaWYoICgkdmFsID0gXGNnZV9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCdldmVudF9kYXRlX3JlY3VyX3V0JykpICkgewogICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9kYXRlX3JlY3VyX2VuZCddID0gJGRiLT5EYlRpbWVTdGFtcCgkdmFsKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfZGF0ZV9yZWN1cl9lbmQnXSA9IG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmKCAoJHZhbCA9IFxjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnZXZlbnRfY2F0ZWdvcmllcycpICkgKSB7CiAgICAgICAgICAgICRsaXN0ID0gdW5zZXJpYWxpemUoICR2YWwgKTsKICAgICAgICAgICAgaWYoIGlzX2FycmF5KCAkbGlzdCApICkgewogICAgICAgICAgICAgICAgJHRoaXMtPnNldF9jYXRlZ29yaWVzKCAkbGlzdCApOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgLy8gY2xlYXIgYWxsIGNhdGVnb3JpZXM7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2V0X2NhdGVnb3JpZXMoIFtdICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIHRvZG86IGhhbmRsZSBmaWVsZHMuCiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGhhc19maWVsZCggJGZpZWxkX25hbWUgKQogICAgewogICAgICAgIHJldHVybiBpc3NldCgkdGhpcy0+X2ZpZWxkc1skZmllbGRfbmFtZV0pOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfZmllbGRfdmFsdWUoICRmaWVsZF9uYW1lLCAkdmFsICkKICAgIHsKICAgICAgICAkZmllbGRfbmFtZSA9IHRyaW0oJGZpZWxkX25hbWUpOwogICAgICAgIGlmKCAhJGZpZWxkX25hbWUgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCJpbnZhbGlkIGZpZWxkIG5hbWUgcGFzc2VkIHRvICIuX19NRVRIT0RfXyk7CiAgICAgICAgaWYoICFpc19udWxsKCR2YWwpICkgJHZhbCA9IHRyaW0oJHZhbCk7CiAgICAgICAgaWYoIGlzX251bGwoJHZhbCkgKSB7CiAgICAgICAgICAgIGlmKCBpc3NldCgkdGhpcy0+X2ZpZWxkc1skZmllbGRfbmFtZV0pICkgdW5zZXQoJHRoaXMtPl9maWVsZHNbJGZpZWxkX25hbWVdKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5fZmllbGRzWyRmaWVsZF9uYW1lXSA9ICR2YWw7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNfY2F0ZWdvcnkoICRjYXRpZCApCiAgICB7CiAgICAgICAgJGNhdGlkID0gKGludCkgJGNhdGlkOwogICAgICAgIGlmKCAkY2F0aWQgPCAxICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigiSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gIi5fX01FVEhPRF9fKTsKICAgICAgICByZXR1cm4gaW5fYXJyYXkoICRjYXRpZCwgJHRoaXMtPl9jYXRlZ29yaWVzICk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldF9jYXRlZ29yaWVzKCBhcnJheSAkaW4gKQogICAgewogICAgICAgIGZvcmVhY2goICRpbiBhcyAkb25lICkgewogICAgICAgICAgICBpZiggKGludCkgJG9uZSA8IDEgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdJbnZhbGlkIGNhdGVnb3J5IGFycmF5IHBhc3NlZCB0byAnLl9fTUVUSE9EX18pOwogICAgICAgIH0KICAgICAgICAkdGhpcy0+X2NhdGVnb3JpZXMgPSBbXTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X2NhdGVnb3J5KCAkY2F0aWQgKQogICAgewogICAgICAgICRjYXRpZCA9IChpbnQpICRjYXRpZDsKICAgICAgICBpZiggJGNhdGlkIDwgMSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oIkludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvICIuX19NRVRIT0RfXyk7CiAgICAgICAgaWYoICEkdGhpcy0+aGFzX2NhdGVnb3J5KCAkY2F0aWQgKSApICR0aGlzLT5fY2F0ZWdvcmllc1tdID0gJGNhdGlkOwogICAgfQp9]]></data>
	</file>
	<file>
	  <filename>/lib/class.EventStorage.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHQ2FsZW5kYXI7CgpjbGFzcyBFdmVudFN0b3JhZ2UKewogICAgcHJpdmF0ZSAkX21vZDsKICAgIHByaXZhdGUgJF9kYjsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoXENHQ2FsZW5kYXIgJG1vZCwgJGRiKQogICAgewogICAgICAgICR0aGlzLT5fbW9kID0gJG1vZDsKICAgICAgICAkdGhpcy0+X2RiID0gJGRiOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiB0b19kYXRlc3RyKCAkdW5peHRpbWUgKQogICAgewogICAgICAgIGlmKCBpc19udWxsKCR1bml4dGltZSkgfHwgJHVuaXh0aW1lIDwgMSApIHJldHVybjsKICAgICAgICAkb3V0ID0gJHRoaXMtPl9kYi0+RGJUaW1lU3RhbXAoICR1bml4dGltZSApOwogICAgICAgIHJldHVybiB0cmltKCRvdXQsIiciKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gdXBkYXRlX3NpbmdsZV9ldmVudCggRXZlbnQgJGV2ZW50ICkKICAgIHsKICAgICAgICAvLyBkb2VzIG5vdCBoYW5kbGUgdXBkYXRpbmcgY2hpbGRyZW4gb24gcmVjdXJyaW5nIGV2ZW50cy4KICAgICAgICAkZXZlbnRfaWQgPSAkZXZlbnRbJ2V2ZW50X2lkJ107CiAgICAgICAgJGRiID0gJHRoaXMtPl9kYjsKICAgICAgICAkc3FsID0gJ1VQREFURSAnLnNlbGY6OmV2ZW50c190YWJsZSgpLicKICAgICAgICAgICAgICAgIFNFVCBldmVudF90aXRsZSA9ID8sIGV2ZW50X3N1bW1hcnkgPSA/LCBldmVudF9kZXRhaWxzID0gPywgZXZlbnRfZGF0ZV9zdGFydCA9ID8sIGV2ZW50X2RhdGVfZW5kID0gPywKICAgICAgICAgICAgICAgICAgICBldmVudF9wYXJlbnRfaWQgPSA/LCBldmVudF9yZWN1cl9wZXJpb2QgPSA/LCBldmVudF9kYXRlX3JlY3VyX2VuZCA9ID8sIGV2ZW50X3JlY3VyX25ldmVudHMgPSA/LAogICAgICAgICAgICAgICAgICAgIGV2ZW50X3JlY3VyX2ludGVydmFsID0gPywgZXZlbnRfcmVjdXJfd2Vla2RheXMgPSA/LCBldmVudF9yZWN1cl9tb250aGRheXMgPSA/LCBldmVudF9tb2RpZmllZF9kYXRlID0gTk9XKCksCiAgICAgICAgICAgICAgICAgICAgZXZlbnRfYWxsb3dzX292ZXJsYXAgPSA/LCBldmVudF9hbGxfZGF5ID0gPywgZXZlbnRfc3RhdHVzID0gPwogICAgICAgICAgICAgICAgV0hFUkUgZXZlbnRfaWQgPSA/JzsKICAgICAgICAkZGJyID0gJGRiLT5FeGVjdXRlKCAkc3FsLCBbICRldmVudFsnZXZlbnRfdGl0bGUnXSwgJGV2ZW50WydldmVudF9zdW1tYXJ5J10sICRldmVudFsnZXZlbnRfZGV0YWlscyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRvX2RhdGVzdHIoJGV2ZW50WydldmVudF9kYXRlX3N0YXJ0X3V0J10pLCAkdGhpcy0+dG9fZGF0ZXN0cigkZXZlbnRbJ2V2ZW50X2RhdGVfZW5kX3V0J10pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50WydldmVudF9wYXJlbnRfaWQnXSwgJGV2ZW50WydldmVudF9yZWN1cl9wZXJpb2QnXSwgJHRoaXMtPnRvX2RhdGVzdHIoJGV2ZW50WydldmVudF9kYXRlX3JlY3VyX2VuZCddKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfcmVjdXJfbmV2ZW50cyddLCAkZXZlbnRbJ2V2ZW50X3JlY3VyX2ludGVydmFsJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsb2RlKCcsJywkZXZlbnRbJ2V2ZW50X3JlY3VyX3dlZWtkYXlzJ10pLCBpbXBsb2RlKCcsJywkZXZlbnRbJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyddKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfYWxsb3dzX292ZXJsYXAnXSwgJGV2ZW50WydldmVudF9hbGxfZGF5J10sICRldmVudFsnZXZlbnRfc3RhdHVzJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRfaWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7CiAgICAgICAgaWYoICEkZGJyICkgewogICAgICAgICAgICB0aHJvdyBuZXcgXGNnX3NxbF9lcnJvcignRGF0YWJhc2UgRXJyb3I6ICcuJGRiLT5FcnJvck1zZygpKTsKICAgICAgICB9CgogICAgICAgIC8vIGRlbGV0ZSBleGlzdGluZyBmaWVsZCBlbnRyaWVzIGZvciB0aGlzIGV2ZW50CiAgICAgICAgJHNxbCA9ICdERUxFVEUgRlJPTSAnLnNlbGY6OmV2ZW50X2ZpZWxkc190YWJsZSgpLicgV0hFUkUgZXZlbnRfaWQgPSA/JzsKICAgICAgICAkZGItPkV4ZWN1dGUoICRzcWwsIFsgJGV2ZW50X2lkIF0gKTsKCiAgICAgICAgaWYoIGNvdW50KCRldmVudFsnZmllbGRzJ10pICkgewogICAgICAgICAgICAvLyBpbnNlcnQgbmV3IGZpZWxkIGVudHJpZXMKICAgICAgICAgICAgJHNxbCA9ICdJTlNFUlQgSU5UTyAnLnNlbGY6OmV2ZW50X2ZpZWxkc190YWJsZSgpLicgKGV2ZW50X2lkLGZpZWxkX25hbWUsZmllbGRfdmFsdWUpIFZBTFVFUyAoPyw/LD8pJzsKICAgICAgICAgICAgZm9yZWFjaCggJGV2ZW50WydmaWVsZHMnXSBhcyAkZmllbGRfbmFtZSA9PiAkZmllbGRfdmFsdWUgKSB7CiAgICAgICAgICAgICAgICAkZGItPkV4ZWN1dGUoICRzcWwsIFsgJGV2ZW50X2lkLCAkZmllbGRfbmFtZSwgJGZpZWxkX3ZhbHVlIF0gKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gZGVsZXRlIGV4aXN0aW5nIGNhdGVnb3J5IGVudHJpZXMgZm9yIHRoaXMgZXZlbnQKICAgICAgICAkc3FsID0gJ0RFTEVURSBGUk9NICcuc2VsZjo6ZXZlbnRfY2F0ZWdvcmllc190YWJsZSgpLicgV0hFUkUgZXZlbnRfaWQgPSA/JzsKICAgICAgICAkZGItPkV4ZWN1dGUoICRzcWwsIFsgJGV2ZW50X2lkIF0gKTsKCiAgICAgICAgaWYoIGNvdW50KCRldmVudFsnY2F0ZWdvcmllcyddKSApIHsKICAgICAgICAgICAgJHNxbCA9ICdJTlNFUlQgSU5UTyAnLnNlbGY6OmV2ZW50X2NhdGVnb3JpZXNfdGFibGUoKS4nIChldmVudF9pZCwgY2F0ZWdvcnlfaWQpIFZBTFVFUyAoPyw/KSc7CiAgICAgICAgICAgIGZvcmVhY2goICRldmVudFsnY2F0ZWdvcmllcyddIGFzICRjYXRlZ29yeV9pZCApIHsKICAgICAgICAgICAgICAgICRkYi0+RXhlY3V0ZSggJHNxbCwgWyAkZXZlbnRfaWQsICRjYXRlZ29yeV9pZCBdICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGluc2VydF9zaW5nbGVfZXZlbnQoIEV2ZW50ICRldmVudCApCiAgICB7CiAgICAgICAgLy8gdG9kbzogdHJhbnNhY3Rpb24KCiAgICAgICAgJGRiID0gJHRoaXMtPl9kYjsKICAgICAgICAkZXZlbnRfaWQgPSAkZGItPkdlbklEKHNlbGY6OmV2ZW50c190YWJsZSgpLiJfc2VxIik7CgogICAgICAgIC8vIGRvZXMgbm90IGhhbmRsZSByZWN1cnJpbmcgZXZlbnRzLgogICAgICAgICRzcWwgPSAiSU5TRVJUIElOVE8gIiAuIHNlbGY6OmV2ZW50c190YWJsZSgpLiIKICAgICAgICAgICAgICAgIChldmVudF9pZCwgZXZlbnRfdGl0bGUsIGV2ZW50X3N1bW1hcnksIGV2ZW50X2RldGFpbHMsCiAgICAgCSAgICAgICAgZXZlbnRfZGF0ZV9zdGFydCwgZXZlbnRfZGF0ZV9lbmQsIGV2ZW50X3BhcmVudF9pZCwKICAgIAkgICAgICAgIGV2ZW50X3JlY3VyX3BlcmlvZCwgZXZlbnRfZGF0ZV9yZWN1cl9lbmQsIGV2ZW50X2NyZWF0ZWRfYnksCiAgICAgICAgICAgICAgICBldmVudF9yZWN1cl9uZXZlbnRzLCBldmVudF9yZWN1cl9pbnRlcnZhbCwKICAgICAgICAgICAgICAgIGV2ZW50X3JlY3VyX3dlZWtkYXlzLCBldmVudF9yZWN1cl9tb250aGRheXMsCiAgICAgICAgICAgICAgICBldmVudF9hbGxvd3Nfb3ZlcmxhcCxldmVudF9hbGxfZGF5LGV2ZW50X3N0YXR1cywKICAgIAkgICAgICAgIGV2ZW50X2NyZWF0ZV9kYXRlLCBldmVudF9tb2RpZmllZF9kYXRlKQogICAgICAgICAgICAgICAgVkFMVUVTICg/LD8sPyw/LD8sPyw/LD8sPyw/LD8sPyw/LD8sPyw/LD8sTk9XKCksTk9XKCkpIjsKICAgICAgICAkZGJyID0gJGRiLT5FeGVjdXRlKCAkc3FsLCBbICRldmVudF9pZCwgJGV2ZW50WydldmVudF90aXRsZSddLCAkZXZlbnRbJ2V2ZW50X3N1bW1hcnknXSwgJGV2ZW50WydldmVudF9kZXRhaWxzJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+dG9fZGF0ZXN0cigkZXZlbnRbJ2V2ZW50X2RhdGVfc3RhcnRfdXQnXSksICR0aGlzLT50b19kYXRlc3RyKCRldmVudFsnZXZlbnRfZGF0ZV9lbmRfdXQnXSksICRldmVudFsnZXZlbnRfcGFyZW50X2lkJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnRbJ2V2ZW50X3JlY3VyX3BlcmlvZCddLCAkdGhpcy0+dG9fZGF0ZXN0cigkZXZlbnRbJ2V2ZW50X2RhdGVfcmVjdXJfZW5kX3V0J10pLCAkZXZlbnRbJ2V2ZW50X2NyZWF0ZWRfYnknXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfcmVjdXJfbmV2ZW50cyddLCAkZXZlbnRbJ2V2ZW50X3JlY3VyX2ludGVydmFsJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsb2RlKCcsJywkZXZlbnRbJ2V2ZW50X3JlY3VyX3dlZWtkYXlzJ10pLCBpbXBsb2RlKCcsJywkZXZlbnRbJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyddKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudFsnZXZlbnRfYWxsb3dzX292ZXJsYXAnXSwgJGV2ZW50WydldmVudF9hbGxfZGF5J10sICRldmVudFsnZXZlbnRfc3RhdHVzJ10KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7CiAgICAgICAgaWYoICEkZGJyICkgdGhyb3cgbmV3IFxjZ19zcWxfZXJyb3IoJ0RhdGFiYXNlIEVycm9yOiAnLiRkYi0+RXJyb3JNc2coKSk7CgogICAgICAgIGlmKCBjb3VudCgkZXZlbnRbJ2ZpZWxkcyddKSApIHsKICAgICAgICAgICAgLy8gaW5zZXJ0IG5ldyBmaWVsZCBlbnRyaWVzCiAgICAgICAgICAgICRzcWwgPSAnSU5TRVJUIElOVE8gJy5zZWxmOjpldmVudF9maWVsZHNfdGFibGUoKS4nIChldmVudF9pZCxmaWVsZF9uYW1lLGZpZWxkX3ZhbHVlKSBWQUxVRVMgKD8sPyw/KSc7CiAgICAgICAgICAgIGZvcmVhY2goICRldmVudFsnZmllbGRzJ10gYXMgJGZpZWxkX25hbWUgPT4gJGZpZWxkX3ZhbHVlICkgewogICAgICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCAkc3FsLCBbICRldmVudF9pZCwgJGZpZWxkX25hbWUsICRmaWVsZF92YWx1ZSBdICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmKCBjb3VudCgkZXZlbnRbJ2NhdGVnb3JpZXMnXSkgKSB7CiAgICAgICAgICAgICRzcWwgPSAnSU5TRVJUIElOVE8gJy5zZWxmOjpldmVudF9jYXRlZ29yaWVzX3RhYmxlKCkuJyAoZXZlbnRfaWQsIGNhdGVnb3J5X2lkKSBWQUxVRVMgKD8sPyknOwogICAgICAgICAgICBmb3JlYWNoKCAkZXZlbnRbJ2NhdGVnb3JpZXMnXSBhcyAkY2F0ZWdvcnlfaWQgKSB7CiAgICAgICAgICAgICAgICAkZGItPkV4ZWN1dGUoICRzcWwsIFsgJGV2ZW50X2lkLCAkY2F0ZWdvcnlfaWQgXSApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGV2ZW50X2lkOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzYXZlX3NpbmdsZV9ldmVudCggRXZlbnQgJGV2ZW50ICkKICAgIHsKICAgICAgICAvLyBzYXZlcyBhIHNpbmdsZSBldmVudCwgZG9lcyBub3QgZWZmZWN0IGNoaWxkcmVuCiAgICAgICAgaWYoICRldmVudFsnZXZlbnRfaWQnXSApIHsKICAgICAgICAgICAgJHRoaXMtPnVwZGF0ZV9zaW5nbGVfZXZlbnQoICRldmVudCApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5pbnNlcnRfc2luZ2xlX2V2ZW50KCAkZXZlbnQgKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNpbXBsZV91cGRhdGVfcmVjdXJyaW5nX2V2ZW50KCBFdmVudCAkZXZlbnQgKQogICAgewogICAgICAgIC8vIGlmIHRoaXMgaXMgYSByZWN1cnJpbmcgZXZlbnQsICB0aGVuIHdlIHVwZGF0ZSB0aGUgZmllbGRzLCBjYXRlZ29yaWVzLCBhbmQgZGV0YWlscwogICAgICAgIC8vIG9mIGFsbCBleGlzdGluZyBjaGlsZCBldmVudHMuLi4gYnV0IGRvIG5vdCBlZmZlY3QgdGhlIHN0YXJ0IGFuZCBlbmQgZGF0ZXMgb3IgcmVjdXIgZGV0YWlscy4KICAgICAgICBpZiggISRldmVudFsnZXZlbnRfaWQnXSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0Nhbm5vdCBjYWxsICcuX19NRVRIT0RfXy4nIG9uIGEgbmV3IGV2ZW50Jyk7CgogICAgICAgIC8vIHRvZG86IHRyYW5zYWN0aW9uLgogICAgICAgICR0aGlzLT51cGRhdGVfc2luZ2xlX2V2ZW50KCAkZXZlbnQgKTsKICAgICAgICBpZiggISRldmVudFsnZXZlbnRfcmVjdXJfcGVyaW9kJ10gfHwgJGV2ZW50WydldmVudF9yZWN1cl9wZXJpb2QnXSA9PSAnbm9uZScgKSByZXR1cm47CgogICAgICAgIC8vIG5vdyBnb3R0YSB1cGRhdGUgdGhlIGNoaWxkcmVuCiAgICAgICAgJGV2ZW50X2lkID0gJGV2ZW50WydldmVudF9pZCddOwoKICAgICAgICAvLyBmaXJzdCwgZ2V0IHRoZSBsaXN0IG9mIGNoaWxkIGV2ZW50IGlkJ3MKICAgICAgICAkZGIgPSAkdGhpcy0+X2RiOwogICAgICAgICRzcWwgPSAnU0VMRUNUIGV2ZW50X2lkIEZST00gJy5zZWxmOjpldmVudHNfdGFibGUoKS4nIFdIRVJFIGV2ZW50X3BhcmVudF9pZCA9ID8gT1JERVIgQlkgZXZlbnRfaWQnOwogICAgICAgICRjaGlsZF9ldmVudF9pZHMgPSAkZGItPkdldENvbCggJHNxbCwgWyAkZXZlbnRfaWQgXSApOwogICAgICAgIGlmKCAhY291bnQoJGNoaWxkX2V2ZW50X2lkcykgKSB7CiAgICAgICAgICAgIHRyaWdnZXJfZXJyb3IoIkNHQ2FsZW5kYXIgZXZlbnQgJGV2ZW50X2lkIGhhcyBubyBjaGlsZCBldmVudHMiKTsKICAgICAgICAgICAgYXVkaXQoJGV2ZW50X2lkLCdDR0NhbGVuZGFyJywnQSBzdXBwb3NlZCByZWN1cnJpbmcgZXZlbnQgaGFzIG5vIGNoaWxkIGV2ZW50cycpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGZvcmVhY2goICRjaGlsZF9ldmVudF9pZHMgYXMgJiRvbmUgKSB7CiAgICAgICAgICAgICRvbmUgPSAoaW50KSAkb25lOwogICAgICAgIH0KICAgICAgICAkaWRsaXN0c3RyID0gaW1wbG9kZSgnLCcsJGNoaWxkX2V2ZW50X2lkcyk7CgogICAgICAgIC8vIHVwZGF0ZSB0aGUgcHJpbWFyeSByZWNvcmQuCiAgICAgICAgJHNxbCA9ICdVUERBVEUgJy5zZWxmOjpldmVudHNfdGFibGUoKS4nIFNFVCBldmVudF90aXRsZSA9ID8sIGV2ZW50X3N1bW1hcnkgPSA/LCBldmVudF9kZXRhaWxzID0gPywgZXZlbnRfc3RhdHVzID0gPywKICAgICAgICAgICAgICAgICBldmVudF9tb2RpZmllZF9kYXRlID0gTk9XKCkKICAgICAgICAgICAgICAgIFdIRVJFIGV2ZW50X3BhcmVudF9pZCA9ID8nOwogICAgICAgICRkYnIgPSAkZGItPkV4ZWN1dGUoICRzcWwsIFsgJGV2ZW50WydldmVudF90aXRsZSddLCAkZXZlbnRbJ2V2ZW50X3N1bW1hcnknXSwgJGV2ZW50WydldmVudF9kZXRhaWxzJ10sICRldmVudFsnZXZlbnRfc3RhdHVzJ10sICRldmVudF9pZCBdICk7CiAgICAgICAgaWYoICEkZGJyICkgdGhyb3cgbmV3IFxjZ19zcWxfZXJyb3IoJ0RhdGFiYXNlIEVycm9yOiAnLiRkYi0+RXJyb3JNc2coKSk7CgogICAgICAgICRzcWwgPSAnREVMRVRFIEZST00gJy5zZWxmOjpldmVudF9maWVsZHNfdGFibGUoKS4iIFdIRVJFIGV2ZW50X2lkIElOICgkaWRsaXN0c3RyKSI7CiAgICAgICAgJGRiLT5FeGVjdXRlKCAkc3FsICk7CgogICAgICAgIC8vIGRlbGV0ZSBleGlzdGluZyBjYXRlZ29yeSBlbnRyaWVzIGZvciB0aGlzIGV2ZW50CiAgICAgICAgJHNxbCA9ICdERUxFVEUgRlJPTSAnLnNlbGY6OmV2ZW50X2NhdGVnb3JpZXNfdGFibGUoKS4iIFdIRVJFIGV2ZW50X2lkIElOICgkaWRsaXN0c3RyKSI7CiAgICAgICAgJGRiLT5FeGVjdXRlKCAkc3FsICk7CgogICAgICAgIGZvcmVhY2goICRjaGlsZF9ldmVudF9pZHMgYXMgJGNoaWxkX2V2ZW50X2lkICkgewogICAgICAgICAgICBpZiggY291bnQoJGV2ZW50WydmaWVsZHMnXSkgKSB7CiAgICAgICAgICAgICAgICAvLyBpbnNlcnQgbmV3IGZpZWxkIGVudHJpZXMKICAgICAgICAgICAgICAgICRzcWwgPSAnSU5TRVJUIElOVE8gJy5zZWxmOjpldmVudF9maWVsZHNfdGFibGUoKS4nIChldmVudF9pZCxmaWVsZF9uYW1lLGZpZWxkX3ZhbHVlKSBWQUxVRVMgKD8sPyw/KSc7CiAgICAgICAgICAgICAgICBmb3JlYWNoKCAkZXZlbnRbJ2ZpZWxkcyddIGFzICRmaWVsZF9uYW1lID0+ICRmaWVsZF92YWx1ZSApIHsKICAgICAgICAgICAgICAgICAgICAkZGItPkV4ZWN1dGUoICRzcWwsIFsgJGNoaWxkX2V2ZW50X2lkLCAkZmllbGRfbmFtZSwgJGZpZWxkX3ZhbHVlIF0gKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYoIGNvdW50KCRldmVudFsnY2F0ZWdvcmllcyddKSApIHsKICAgICAgICAgICAgICAgICRzcWwgPSAnSU5TRVJUIElOVE8gJy5zZWxmOjpldmVudF9jYXRlZ29yaWVzX3RhYmxlKCkuJyAoZXZlbnRfaWQsIGNhdGVnb3J5X2lkKSBWQUxVRVMgKD8sPyknOwogICAgICAgICAgICAgICAgZm9yZWFjaCggJGV2ZW50WydjYXRlZ29yaWVzJ10gYXMgJGNhdGVnb3J5X2lkICkgewogICAgICAgICAgICAgICAgICAgICRkYi0+RXhlY3V0ZSggJHNxbCwgWyAkY2hpbGRfZXZlbnRfaWQsICRjYXRlZ29yeV9pZCBdICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNsZWFudXBfb25fbG9hZCggYXJyYXkgJHBhcmFtcyApCiAgICB7CiAgICAgICAgLy8gY29udmVydHMgdGhlIHRpbWVzdGFtcHMgdG8gdXRzLgogICAgICAgIGlmKCAoJHZhbCA9IFxjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnZXZlbnRfZGF0ZV9zdGFydCcpKSApIHsKICAgICAgICAgICAgJHBhcmFtc1snZXZlbnRfZGF0ZV9zdGFydF91dCddID0gc3RydG90aW1lKCR2YWwpOwogICAgICAgICAgICB1bnNldCgkcGFyYW1zWydldmVudF9kYXRlX3N0YXJ0J10pOwogICAgICAgIH0KICAgICAgICBpZiggKCR2YWwgPSBcY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ2V2ZW50X2RhdGVfZW5kJykpICkgewogICAgICAgICAgICAkcGFyYW1zWydldmVudF9kYXRlX2VuZF91dCddID0gc3RydG90aW1lKCR2YWwpOwogICAgICAgICAgICB1bnNldCgkcGFyYW1zWydldmVudF9kYXRlX2VuZCddKTsKICAgICAgICB9CiAgICAgICAgaWYoICgkdmFsID0gXGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdldmVudF9kYXRlX3JlY3VyX2VuZCcpKSApIHsKICAgICAgICAgICAgJHBhcmFtc1snZXZlbnRfZGF0ZV9yZWN1cl9lbmRfdXQnXSA9IHN0cnRvdGltZSgkdmFsKTsKICAgICAgICAgICAgdW5zZXQoJHBhcmFtc1snZXZlbnRfZGF0ZV9yZWN1cl9lbmQnXSk7CiAgICAgICAgfQogICAgICAgIGlmKCAoJHZhbCA9IFxjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnZXZlbnRfY3JlYXRlX2RhdGUnKSkgKSB7CiAgICAgICAgICAgICRwYXJhbXNbJ2V2ZW50X2NyZWF0ZV9kYXRlX3V0J10gPSBzdHJ0b3RpbWUoJHZhbCk7CiAgICAgICAgICAgIHVuc2V0KCRwYXJhbXNbJ2V2ZW50X2NyZWF0ZV9kYXRlJ10pOwogICAgICAgIH0KICAgICAgICBpZiggKCR2YWwgPSBcY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ2V2ZW50X21vZGlmaWVkX2RhdGUnKSkgKSB7CiAgICAgICAgICAgICRwYXJhbXNbJ2V2ZW50X21vZGlmaWVkX2RhdGVfdXQnXSA9IHN0cnRvdGltZSgkdmFsKTsKICAgICAgICAgICAgdW5zZXQoJHBhcmFtc1snZXZlbnRfbW9kaWZpZWRfZGF0ZSddKTsKICAgICAgICB9CiAgICAgICAgJHBhcmFtc1snZXZlbnRfcmVjdXJfd2Vla2RheXMnXSA9ICRwYXJhbXNbJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyddID0gW107CiAgICAgICAgaWYoICgkd2Vla2RheXMgPSBcY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ2V2ZW50X3JlY3VyX3dlZWtkYXlzJykpICkgewogICAgICAgICAgICAkcGFyYW1zWydldmVudF9yZWN1cl93ZWVrZGF5cyddID0gZXhwbG9kZSgnLCcsJGV2ZW50X3JlY3VyX3dlZWtkYXlzKTsKICAgICAgICB9CiAgICAgICAgaWYoICgkbW9udGhkYXlzID0gXGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdldmVudF9yZWN1cl9tb250aGRheXMnKSkgKSB7CiAgICAgICAgICAgICRwYXJhbXNbJ2V2ZW50X3JlY3VyX21vbnRoZGF5cyddID0gZXhwbG9kZSgnLCcsJGV2ZW50X3JlY3VyX21vbnRoZGF5cyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkcGFyYW1zOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkX2J5X2lkKCAkZXZlbnRfaWQgKQogICAgewogICAgICAgICRldmVudF9pZCA9IChpbnQpICRldmVudF9pZDsKCiAgICAgICAgJG91dCA9ICR0aGlzLT5sb2FkX2xpc3QoIFsgJGV2ZW50X2lkIF0gKTsKICAgICAgICBpZiggaXNfYXJyYXkoJG91dCkgJiYgY291bnQoJG91dCkgPT0gMSApIHJldHVybiAkb3V0WzBdOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkX2xpc3QoIGFycmF5ICRpbl9pZGxpc3QgKQogICAgewogICAgICAgIC8vIGNsZWFudXAgaWRsaXN0CiAgICAgICAgJGlkbGlzdCA9IFtdOwogICAgICAgIGZvcmVhY2goICRpbl9pZGxpc3QgYXMgJG9uZSApIHsKICAgICAgICAgICAgJG9uZSA9IChpbnQpICRvbmU7CiAgICAgICAgICAgIGlmKCAkb25lID4gMCAmJiAhaW5fYXJyYXkoJG9uZSwkaWRsaXN0KSApICRpZGxpc3RbXSA9ICRvbmU7CiAgICAgICAgfQogICAgICAgICRpZGxpc3RzdHIgPSBpbXBsb2RlKCcsJywkaWRsaXN0KTsKCiAgICAgICAgLy8gZ2V0IGFsbCB0aGUgcm93cwoKICAgICAgICAkZGIgPSAkdGhpcy0+X2RiOwogICAgICAgICRzcWwgPSAnU0VMRUNUICogRlJPTSAnLnNlbGY6OmV2ZW50c190YWJsZSgpLiIgV0hFUkUgZXZlbnRfaWQgSU4gKCRpZGxpc3RzdHIpIE9SREVSIEJZIGV2ZW50X2lkIjsKICAgICAgICAkZXZlbnRfcm93cyA9ICRkYi0+R2V0QXJyYXkoJHNxbCk7CiAgICAgICAgaWYoICFjb3VudCgkZXZlbnRfcm93cykgKSByZXR1cm47CiAgICAgICAgJGlkbGlzdCA9IFxjZ2VfYXJyYXk6OmV4dHJhY3RfZmllbGQoICRldmVudF9yb3dzLCAnZXZlbnRfaWQnICk7CiAgICAgICAgZm9yZWFjaCggJGlkbGlzdCBhcyAmJG9uZSApIHsKICAgICAgICAgICAgJG9uZSA9IChpbnQpICRvbmU7CiAgICAgICAgfQoKICAgICAgICAvLyBnZXQgbWF0Y2hpbmcgZmllbGRzCiAgICAgICAgJHNxbCA9ICdTRUxFQ1QgKiBGUk9NICcuc2VsZjo6ZXZlbnRfZmllbGRzX3RhYmxlKCkuIiBXSEVSRSBldmVudF9pZCBJTiAoJGlkbGlzdHN0cikgT1JERVIgQlkgZXZlbnRfaWQsZmllbGRfbmFtZSI7CiAgICAgICAgJGZpZWxkX3Jvd3MgPSAkZGItPkdldEFycmF5KCRzcWwpOwoKICAgICAgICAvLyBnZXQgbWF0Y2hpbmcgY2F0ZWdvcmllcwogICAgICAgICRzcWwgPSAnU0VMRUNUICogRlJPTSAnLnNlbGY6OmV2ZW50X2NhdGVnb3JpZXNfdGFibGUoKS4iIFdIRVJFIGV2ZW50X2lkIElOICgkaWRsaXN0c3RyKSBPUkRFUiBCWSBldmVudF9pZCI7CiAgICAgICAgJGNhdF9yb3dzID0gJGRiLT5HZXRBcnJheSgkc3FsKTsKCiAgICAgICAgLy8gb3JnYW5pemUgdGhlIGRhdGEKICAgICAgICAkZXZlbnRfb2JqcyA9IFtdOwogICAgICAgIGZvcmVhY2goICRldmVudF9yb3dzIGFzICRldmVudF9hcnIgKSB7CiAgICAgICAgICAgIC8vIGlmIHdlIGhhdmUgZmllbGRzCiAgICAgICAgICAgICRldmVudF9hcnIgPSAkdGhpcy0+Y2xlYW51cF9vbl9sb2FkKCAkZXZlbnRfYXJyICk7CiAgICAgICAgICAgICRldmVudF9pZCA9ICRldmVudF9hcnJbJ2V2ZW50X2lkJ107CiAgICAgICAgICAgIGlmKCBjb3VudCgkZmllbGRfcm93cykgKSB7CiAgICAgICAgICAgICAgICBmb3JlYWNoKCAkZmllbGRfcm93cyBhcyAkZmllbGRfcm93ICkgewogICAgICAgICAgICAgICAgICAgIGlmKCAkZmllbGRfcm93WydldmVudF9pZCddIDwgJGV2ZW50X2lkICkgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgaWYoICRmaWVsZF9yb3dbJ2V2ZW50X2lkJ10gPiAkZXZlbnRfaWQgKSBicmVhazsKICAgICAgICAgICAgICAgICAgICBpZiggIWlzc2V0KCRldmVudF9hcnJbJ2ZpZWxkcyddKSApICRldmVudF9hcnJbJ2ZpZWxkcyddID0gW107CiAgICAgICAgICAgICAgICAgICAgJGV2ZW50X2FyclsnZmllbGRzJ11bJGZpZWxkX3Jvd1snZmllbGRfbmFtZSddXSA9ICRmaWVsZF9yb3dbJ2ZpZWxkX3ZhbHVlJ107CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGlmIHdlIGhhdmUgY2F0ZWdvcmllcy4KICAgICAgICAgICAgaWYoIGNvdW50KCRjYXRfcm93cykgKSB7CiAgICAgICAgICAgICAgICBmb3JlYWNoKCAkY2F0X3Jvd3MgYXMgJGNhdF9yb3cgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYoICRjYXRfcm93WydldmVudF9pZCddIDwgJGV2ZW50X2lkICkgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgaWYoICRjYXRfcm93WydldmVudF9pZCddID4gJGV2ZW50X2lkICkgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgaWYoICFpc3NldCgkZXZlbnRfYXJyWydjYXRlZ29yaWVzJ10pICkgJGV2ZW50X2FyclsnY2F0ZWdvcmllcyddID0gW107CiAgICAgICAgICAgICAgICAgICAgJGV2ZW50X2FyclsnY2F0ZWdvcmllcyddW10gPSAkY2F0X3Jvd1snY2F0ZWdvcnlfaWQnXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gbm93IHdlIGNyZWF0ZSB0aGUgZXZlbnQgb2JqZWN0LgogICAgICAgICAgICAkZXZlbnRfb2JqID0gbmV3IEV2ZW50KCAkZXZlbnRfYXJyICk7CiAgICAgICAgICAgICRldmVudF9vYmpzW10gPSAkZXZlbnRfb2JqOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJGV2ZW50X29ianM7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBldmVudHNfdGFibGUoKQogICAgewogICAgICAgIHJldHVybiBDTVNfREJfUFJFRklYLidtb2R1bGVfY2djYWxlbmRhcl9ldmVudHMnOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZXZlbnRfY2F0ZWdvcmllc190YWJsZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIENNU19EQl9QUkVGSVguJ21vZHVsZV9jZ2NhbGVuZGFyX2V2ZW50c190b19jYXRlZ29yaWVzJzsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGV2ZW50X2ZpZWxkc190YWJsZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIENNU19EQl9QUkVGSVguJ21vZHVsZV9jZ2NhbGVuZGFyX2V2ZW50X2ZpZWxkX3ZhbHVlcyc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/class.Exporter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHQ2FsZW5kYXI7CgpjbGFzcyBFeHBvcnRlcgp7CiAgICBwcml2YXRlICRfbW9kOwogICAgcHJpdmF0ZSAkX3NldHRpbmdzOwogICAgcHJpdmF0ZSAkX2NhdGVnb3J5X2xpc3Q7CiAgICBwcml2YXRlICRfZmllbGRfbGlzdDsKICAgIHByaXZhdGUgJF90ZW1wbmFtOwogICAgcHJpdmF0ZSAkX2ZoOwogICAgcHJpdmF0ZSAkX2xpbWl0ID0gMjAwOwogICAgcHJpdmF0ZSAkX29mZnNldCA9IDA7CiAgICBwcml2YXRlICRfdG90YWxfcm93czsKICAgIHByaXZhdGUgJF9maWVsZF9jYWNoZTsKICAgIHByaXZhdGUgJF9jYXRlZ29yeV9jYWNoZTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoIFxDR0NhbGVuZGFyICRtb2QsIEV4cG9ydFNldHRpbmdzICRzZXR0aW5ncyApCiAgICB7CiAgICAgICAgJHRoaXMtPl9tb2QgPSAkbW9kOwogICAgICAgICR0aGlzLT5fc2V0dGluZ3MgPSAkc2V0dGluZ3M7CgogICAgICAgICRjYXRlZ29yaWVzID0gY2F0ZWdvcnk6OmdldF9jYXRlZ29yaWVzKCk7CiAgICAgICAgaWYoIGNvdW50KCRjYXRlZ29yaWVzKSApIHsKICAgICAgICAgICAgZm9yZWFjaCggJGNhdGVnb3JpZXMgYXMgJHJlYyApIHsKICAgICAgICAgICAgICAgICR0aGlzLT5fY2F0ZWdvcnlfbGlzdFskcmVjWydjYXRlZ29yeV9pZCddXSA9ICRyZWNbJ2NhdGVnb3J5X25hbWUnXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJGZpZWxkcyA9ICRtb2QtPkdldEZpZWxkcygpOwogICAgICAgICR0aGlzLT5fZmllbGRfbGlzdCA9IFxjZ2VfYXJyYXk6OnRvX2hhc2goJGZpZWxkcywnZmllbGRfbmFtZScpOwogICAgICAgICR0aGlzLT5fdGVtcG5hbSA9IHRlbXBuYW0oVE1QX0NBQ0hFX0xPQ0FUSU9OLCdjYWxfJyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fZGVzdHJ1Y3QoKQogICAgewogICAgICAgICR0aGlzLT5maW5pc2hfd3JpdGluZygpOwogICAgICAgIGlmKCAkdGhpcy0+X3RlbXBuYW0gKSB1bmxpbmsoJHRoaXMtPl90ZW1wbmFtKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gd3JpdGVfbGluZSgkaW4pCiAgICB7CiAgICAgICAgaWYoICEkdGhpcy0+X2ZoICkgJHRoaXMtPl9maCA9IGZvcGVuKCR0aGlzLT5fdGVtcG5hbSwndycpOwogICAgICAgIGlmKCAhJHRoaXMtPl9maCApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignQ291bGQgbm90IGNyZWF0ZSBhIHRlbXBvcmFyeSBmaWxlIGZvciB3cml0aW5nJyk7CiAgICAgICAgaWYoICFlbmRzd2l0aCggJGluLCAiXG4iKSAmJiAhZW5kc3dpdGgoICRpbiwgIlxyIiApICkgJGluIC49ICJcbiI7CiAgICAgICAgZnB1dHMoJHRoaXMtPl9maCwkaW4pOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBmaW5pc2hfd3JpdGluZygpCiAgICB7CiAgICAgICAgaWYoICEkdGhpcy0+X2ZoICkgcmV0dXJuOwogICAgICAgIGZjbG9zZSgkdGhpcy0+X2ZoKTsKICAgICAgICAkdGhpcy0+X2ZoID0gbnVsbDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gdG9fZGJ0aW1lc3RhbXAoJGluKQogICAgewogICAgICAgIGlmKCAhaXNfaW50KCRpbikgKSAkaW4gPSBzdHJ0b3RpbWUoJGluKTsKICAgICAgICAkb3V0ID0gJHRoaXMtPl9tb2QtPkdldERiKCktPkRiVGltZVN0YW1wKCAkaW4gKTsKICAgICAgICByZXR1cm4gdHJpbSgkb3V0LCInIik7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBwcmVsb2FkKCRycykKICAgIHsKICAgICAgICAkcXVvdGVkX2ZpZWxkX25hbWVzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHN0YXRpYyAkcmVzID0gRkFMU0U7CiAgICAgICAgICAgIGlmKCAkcmVzID09PSBGQUxTRSApIHsKICAgICAgICAgICAgICAgICRyZXMgPSBbXTsKICAgICAgICAgICAgICAgICRmaWVsZF9uYW1lcyA9IGFycmF5X2tleXMoJHRoaXMtPl9maWVsZF9saXN0KTsKICAgICAgICAgICAgICAgIGlmKCAkZmllbGRfbmFtZXMgKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCggJGZpZWxkX25hbWVzIGFzICRvbmUgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXNbXSA9ICciJy4kb25lLiciJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICRyZXM7CiAgICAgICAgfTsKCiAgICAgICAgJGV2ZW50X2lkcyA9IG51bGw7CiAgICAgICAgd2hpbGUoICEkcnMtPkVPRigpICkgewogICAgICAgICAgICAkZXZlbnRfaWRzW10gPSAoaW50KSAkcnMtPmZpZWxkc1snZXZlbnRfaWQnXTsKICAgICAgICAgICAgJHJzLT5Nb3ZlTmV4dCgpOwogICAgICAgIH0KICAgICAgICAkcnMtPk1vdmVGaXJzdCgpOwoKICAgICAgICAkdGhpcy0+X2ZpZWxkX2NhY2hlID0gJHRoaXMtPl9jYXRlZ29yeV9jYWNoZSA9IG51bGw7CiAgICAgICAgaWYoICFjb3VudCgkZXZlbnRfaWRzKSApIHJldHVybjsKICAgICAgICAkZGIgPSAkdGhpcy0+X21vZC0+R2V0RGIoKTsKCiAgICAgICAgLy8gY2FjaGUgZmllbGRzCiAgICAgICAgaWYoIGNvdW50KCR0aGlzLT5fZmllbGRfbGlzdCkgKSB7CiAgICAgICAgICAgICRzcWwgPSAnU0VMRUNUICogRlJPTSAnLiR0aGlzLT5fbW9kLT5ldmVudF9maWVsZF92YWx1ZXNfdGFibGVfbmFtZS4nIFdIRVJFIGV2ZW50X2lkIElOICglQSUpIEFORCBmaWVsZF9uYW1lIElOICglQiUpIE9SREVSIEJZIGV2ZW50X2lkLCBmaWVsZF9uYW1lJzsKICAgICAgICAgICAgJHNxbCA9IHN0cl9yZXBsYWNlKCAnJUElJywgaW1wbG9kZSgnLCcsJGV2ZW50X2lkcyksICRzcWwgKTsKICAgICAgICAgICAgJHNxbCA9IHN0cl9yZXBsYWNlKCAnJUIlJywgaW1wbG9kZSgnLCcsJHF1b3RlZF9maWVsZF9uYW1lcygpKSwgJHNxbCApOwogICAgICAgICAgICAkbGlzdCA9ICRkYi0+R2V0QXJyYXkoJHNxbCk7CiAgICAgICAgICAgIGlmKCBpc19hcnJheSgkbGlzdCkgJiYgY291bnQoJGxpc3QpICkgJHRoaXMtPl9maWVsZF9jYWNoZSA9ICRsaXN0OwogICAgICAgIH0KCiAgICAgICAgLy8gY2FjaGUgY2F0ZWdvcmllcwogICAgICAgIGlmKCBjb3VudCgkdGhpcy0+X2NhdGVnb3J5X2xpc3QpICkgewogICAgICAgICAgICAkc3FsID0gJ1NFTEVDVCAqIEZST00gJy4kdGhpcy0+X21vZC0+ZXZlbnRzX3RvX2NhdGVnb3JpZXNfdGFibGVfbmFtZS4nIFdIRVJFIGV2ZW50X2lkIGluICglQSUpIE9SREVSIEJZIGV2ZW50X2lkLCBjYXRlZ29yeV9pZCc7CiAgICAgICAgICAgICRzcWwgPSBzdHJfcmVwbGFjZSggJyVBJScsIGltcGxvZGUoJywnLCRldmVudF9pZHMpLCAkc3FsICk7CiAgICAgICAgICAgICRsaXN0ID0gJGRiLT5HZXRBcnJheSgkc3FsKTsKICAgICAgICAgICAgaWYoIGlzX2FycmF5KCRsaXN0KSAmJiBjb3VudCgkbGlzdCkgKSAkdGhpcy0+X2NhdGVnb3J5X2NhY2hlID0gJGxpc3Q7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gZ2VuZXJhdGVfcXVlcnkoKQogICAgewogICAgICAgICRkYiA9ICR0aGlzLT5fbW9kLT5HZXREYigpOwogICAgICAgICRzcWwgPSAnU0VMRUNUIFNRTF9DQUxDX0ZPVU5EX1JPV1MgRS4qIEZST00gJy4kdGhpcy0+X21vZC0+ZXZlbnRzX3RhYmxlX25hbWUuJyBFJzsKICAgICAgICAkd2hlcmUgPSAkam9pbnMgPSAkcGFybXMgPSBudWxsOwogICAgICAgICR3aGVyZVtdID0gJ0UuZXZlbnRfc3RhdHVzID0gPyc7CiAgICAgICAgJHBhcm1zW10gPSAnUCc7CiAgICAgICAgaWYoICR0aGlzLT5fc2V0dGluZ3MtPmZyb21kYXRlICkgewogICAgICAgICAgICBzd2l0Y2goICR0aGlzLT5fc2V0dGluZ3MtPmRhdGVzZWwgKSB7CiAgICAgICAgICAgIGNhc2UgJ3N0YXJ0JzoKICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJ0UuZXZlbnRfZGF0ZV9zdGFydCA+PSA/JzsKICAgICAgICAgICAgICAgICRwYXJtc1tdID0gJHRoaXMtPnRvX2RidGltZXN0YW1wKCAkdGhpcy0+X3NldHRpbmdzLT5mcm9tZGF0ZSApOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ2NyZWF0ZWQnOgogICAgICAgICAgICAgICAgJHdoZXJlW10gPSAnRS5ldmVudF9jcmVhdGVfZGF0ZSA+PSA/JzsKICAgICAgICAgICAgICAgICRwYXJtc1tdID0gJHRoaXMtPnRvX2RidGltZXN0YW1wKCAkdGhpcy0+X3NldHRpbmdzLT5mcm9tZGF0ZSApOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ21vZGlmaWVkJzoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJ0UuZXZlbnRfbW9kaWZpZWRfZGF0ZSA+PSA/JzsKICAgICAgICAgICAgICAgICRwYXJtc1tdID0gJHRoaXMtPnRvX2RidGltZXN0YW1wKCAkdGhpcy0+X3NldHRpbmdzLT5mcm9tZGF0ZSApOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmKCAkdGhpcy0+X3NldHRpbmdzLT5jYXRlZ29yeSApIHsKICAgICAgICAgICAgJGpvaW5zW10gPSAnTEVGVCBKT0lOICcuJHRoaXMtPl9tb2QtPmV2ZW50c190b19jYXRlZ29yaWVzX3RhYmxlX25hbWUuJyBDIE9OIEUuZXZlbnRfaWQgPSBDLmV2ZW50X2lkJzsKICAgICAgICAgICAgJHdoZXJlW10gPSAnQy5jYXRlZ29yeV9pZCA9ID8nOwogICAgICAgICAgICAkcGFybXNbXSA9ICR0aGlzLT5fc2V0dGluZ3MtPmNhdGVnb3J5OwogICAgICAgIH0KCiAgICAgICAgaWYoIGNvdW50KCRqb2lucykgKSAkc3FsIC49ICcgJy5pbXBsb2RlKCcgJywkam9pbnMpOwogICAgICAgIGlmKCBjb3VudCgkd2hlcmUpICkgJHNxbCAuPSAnIFdIRVJFICcuaW1wbG9kZSgnIEFORCAnLCR3aGVyZSk7CiAgICAgICAgJHNxbCAuPSAnIE9SREVSIEJZIEUuZXZlbnRfY3JlYXRlX2RhdGUgQVNDJzsKICAgICAgICAkcnMgPSAkZGItPlNlbGVjdExpbWl0KCRzcWwsJHRoaXMtPl9saW1pdCwoaW50KSAkdGhpcy0+X29mZnNldCwkcGFybXMpOwogICAgICAgIGlmKCAhJHRoaXMtPl90b3RhbF9yb3dzICkgJHRoaXMtPl90b3RhbF9yb3dzID0gKGludCkgJGRiLT5HZXRPbmUoJ1NFTEVDVCBGT1VORF9ST1dTKCknKTsKICAgICAgICBpZiggISR0aGlzLT5fdG90YWxfcm93cyApIHJldHVybjsKCiAgICAgICAgJHRoaXMtPnByZWxvYWQoJHJzKTsKICAgICAgICByZXR1cm4gJHJzOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZW5lcmF0ZV9tYXAoKQogICAgewogICAgICAgICRjb2xzID0gWyAnc3RhcnQgdGltZScsJ2VuZCB0aW1lJywndGl0bGUnLCdzdW1tYXJ5JywnZGVzY3JpcHRpb24nIF07CiAgICAgICAgaWYoIGNvdW50KCR0aGlzLT5fY2F0ZWdvcnlfbGlzdCkgKSAkY29sc1tdID0gJ2NhdGVnb3J5JzsKICAgICAgICBpZiggY291bnQoJHRoaXMtPl9maWVsZF9saXN0KSApIHsKICAgICAgICAgICAgJGZpZWxkX25hbWVzID0gYXJyYXlfa2V5cygkdGhpcy0+X2ZpZWxkX2xpc3QpOwogICAgICAgICAgICBmb3JlYWNoKCAkZmllbGRfbmFtZXMgYXMgJG9uZSApIHsKICAgICAgICAgICAgICAgICRjb2xzW10gPSAkb25lOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkY29sczsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2VuZXJhdGVfaGVhZGVyKCBhcnJheSAkbWFwICkKICAgIHsKICAgICAgICByZXR1cm4gXGNnZV9hcnJheTo6aW1wbG9kZV9xdW90ZWQoJG1hcCwkdGhpcy0+X3NldHRpbmdzLT5kZWxpbWl0ZXIpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZW5lcmF0ZV9yZWNvcmQoICRycyApCiAgICB7CiAgICAgICAgLy8gZ2V0IGEgcmVjb3JkIGZvciBlYWNoIGV2ZW50IChhcyBhbiBhcnJheSkKICAgICAgICAvLyB0aGUgY2F0ZWdvcnkgZWxlbWVudCBpcyBhIDsgc2VwYXJhdGVkIHN0cmluZyBvZiBjYXRlZ29yeSBuYW1lcwogICAgICAgIC8vIHRoZSBmaWVsZHMgZWxlbWVudCBpcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSBvZiBmaWVsZF9uYW1lcyBhbmQgZmllbGQgdmFsdWVzCiAgICAgICAgJGluID0gJHJzLT5maWVsZHM7CiAgICAgICAgJG91dFsnc3RhcnQgdGltZSddID0gJGluWydldmVudF9kYXRlX3N0YXJ0J107CiAgICAgICAgJG91dFsnZW5kIHRpbWUnXSA9ICRpblsnZXZlbnRfZGF0ZV9lbmQnXTsKICAgICAgICAkb3V0Wyd0aXRsZSddID0gJGluWydldmVudF90aXRsZSddOwogICAgICAgICRvdXRbJ3N1bW1hcnknXSA9ICRpblsnZXZlbnRfc3VtbWFyeSddOwogICAgICAgICRvdXRbJ2Rlc2NyaXB0aW9uJ10gPSAkaW5bJ2V2ZW50X2RldGFpbHMnXTsKICAgICAgICAkb3V0WydjYXRlZ29yeSddID0gbnVsbDsKICAgICAgICAkb3V0WydmaWVsZHMnXSA9IG51bGw7CiAgICAgICAgaWYoICR0aGlzLT5fY2F0ZWdvcnlfY2FjaGUgKSB7CiAgICAgICAgICAgICRtZW1iZXJfY2F0cyA9IG51bGw7CiAgICAgICAgICAgIGZvcmVhY2goICR0aGlzLT5fY2F0ZWdvcnlfY2FjaGUgYXMgJGNhdF9yb3cgKSB7CiAgICAgICAgICAgICAgICBpZiggJGNhdF9yb3dbJ2V2ZW50X2lkJ10gPCAkaW5bJ2V2ZW50X2lkJ10gKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIGlmKCAkY2F0X3Jvd1snZXZlbnRfaWQnXSA+ICRpblsnZXZlbnRfaWQnXSApIGJyZWFrOwoKICAgICAgICAgICAgICAgICRtZW1iZXJfY2F0c1tdID0gJHRoaXMtPl9jYXRlZ29yeV9saXN0WyRjYXRfcm93WydjYXRlZ29yeV9pZCddXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiggY291bnQoJG1lbWJlcl9jYXRzKSApICRvdXRbJ2NhdGVnb3J5J10gPSBpbXBsb2RlKCc7JywkbWVtYmVyX2NhdHMpOwogICAgICAgIH0KCiAgICAgICAgaWYoICR0aGlzLT5fZmllbGRfY2FjaGUgKSB7CiAgICAgICAgICAgIGZvcmVhY2goICR0aGlzLT5fZmllbGRfY2FjaGUgYXMgJGZpZWxkX3JvdyApIHsKICAgICAgICAgICAgICAgIGlmKCAkZmllbGRfcm93WydldmVudF9pZCddIDwgJGluWydldmVudF9pZCddICkgY29udGludWU7CiAgICAgICAgICAgICAgICBpZiggJGZpZWxkX3Jvd1snZXZlbnRfaWQnXSA+ICRpblsnZXZlbnRfaWQnXSApIGJyZWFrOwoKICAgICAgICAgICAgICAgICRvdXRbJ2ZpZWxkcyddWyRmaWVsZF9yb3dbJ2ZpZWxkX25hbWUnXV0gPSAkZmllbGRfcm93WydmaWVsZF92YWx1ZSddOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZW5lcmF0ZV9saW5lKCAkbWFwLCAkcmVjICkKICAgIHsKICAgICAgICAvLyBnaXZlbiB0aGUgbWFwLCBhbmQgYSByZWNvcmQsIGdlbmVyYXRlIGEgdGV4dCBsaW5lCiAgICAgICAgJG91dCA9IG51bGw7CiAgICAgICAgZm9yZWFjaCggJG1hcCBhcyAkY29sICkgewogICAgICAgICAgICAkdmFsID0gbnVsbDsKICAgICAgICAgICAgaWYoIGlzc2V0KCRyZWNbJGNvbF0pICkgewogICAgICAgICAgICAgICAgJHZhbCA9ICRyZWNbJGNvbF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiggaXNzZXQoJHJlY1snZmllbGRzJ10pICYmIGlzc2V0KCRyZWNbJ2ZpZWxkcyddWyRjb2xdKSApIHsKICAgICAgICAgICAgICAgICR2YWwgPSAkcmVjWydmaWVsZHMnXVskY29sXTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkb3V0W10gPSAkdmFsOwogICAgICAgIH0KICAgICAgICAkbGluZSA9IFxjZ2VfYXJyYXk6OmltcGxvZGVfcXVvdGVkKCRvdXQsJHRoaXMtPl9zZXR0aW5ncy0+ZGVsaW1pdGVyKTsKICAgICAgICAkbGluZSA9IHJ0cmltKCRsaW5lLCR0aGlzLT5fc2V0dGluZ3MtPmRlbGltaXRlcik7CiAgICAgICAgcmV0dXJuICRsaW5lOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5lcmF0ZSgpCiAgICB7CiAgICAgICAgJG1hcCA9ICR0aGlzLT5nZW5lcmF0ZV9tYXAoKTsKICAgICAgICBkbyB7CiAgICAgICAgICAgICRycyA9ICR0aGlzLT5nZW5lcmF0ZV9xdWVyeSgpOwogICAgICAgICAgICBpZiggJHRoaXMtPl90b3RhbF9yb3dzID09IDAgKSBicmVhazsKICAgICAgICAgICAgaWYoICRycyAmJiAkdGhpcy0+X29mZnNldCA9PSAwICkgewogICAgICAgICAgICAgICAgJHRoaXMtPndyaXRlX2xpbmUoICR0aGlzLT5nZW5lcmF0ZV9oZWFkZXIoICRtYXAgKSApOwogICAgICAgICAgICB9CgogICAgICAgICAgICB3aGlsZSggISRycy0+RU9GKCkgKSB7CiAgICAgICAgICAgICAgICAkcmVjID0gJHRoaXMtPmdlbmVyYXRlX3JlY29yZCggJHJzICk7CiAgICAgICAgICAgICAgICAkbGluZSA9ICR0aGlzLT5nZW5lcmF0ZV9saW5lKCAkbWFwLCAkcmVjICk7CiAgICAgICAgICAgICAgICAkdGhpcy0+d3JpdGVfbGluZSggJGxpbmUgKTsKICAgICAgICAgICAgICAgICRycy0+TW92ZU5leHQoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdGhpcy0+X29mZnNldCArPSAkdGhpcy0+X2xpbWl0OyAvLyBub3QgbmVjZXNzYXJpbHkgY29ycmVjdCwgYnV0IHNob3VsZCB3b3JrCiAgICAgICAgfSB3aGlsZSggJHRoaXMtPl9vZmZzZXQgPCAkdGhpcy0+X3RvdGFsX3Jvd3MgKTsKCiAgICAgICAgJHRoaXMtPmZpbmlzaF93cml0aW5nKCk7CiAgICAgICAgaWYoICR0aGlzLT5fdG90YWxfcm93cyA+IDAgKSB7CiAgICAgICAgICAgIFxjZ2VfdXRpbHM6OnNlbmRfZmlsZV9hbmRfZXhpdCgkdGhpcy0+X3RlbXBuYW0sNjU1MzUsJ3RleHQvY3N2JywnQ0dDYWxlbmRhciBFeHBvcnQuY3N2Jyk7CiAgICAgICAgfQoKICAgIH0KfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.ExportSettings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHQ2FsZW5kYXI7CgovLyB5dXAsIHRoaXMgaXMgYSBkdW1iIGNsYXNzLgpjbGFzcyBFeHBvcnRTZXR0aW5ncwp7CiAgICBwdWJsaWMgJGRhdGVzZWw7CiAgICBwdWJsaWMgJGZyb21kYXRlOwogICAgcHVibGljICRjYXRlZ29yeTsKICAgIHB1YmxpYyAkZGVsaW1pdGVyOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICAgICAgJHRoaXMtPmRhdGVzZWwgPSAnc3RhcnQnOwogICAgICAgICR0aGlzLT5kZWxpbWl0ZXIgPSAnLCc7CiAgICB9Cn0=]]></data>
	</file>
	<file>
	  <filename>/lib/class.IcalParser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCm5hbWVzcGFjZSBDR0NhbGVuZGFyOyAgIC8vIGNoYW5nZWQgZnJvbSBuYW1lc3BhY2Ugb20KLyoqCiAqIENvcHlyaWdodCAoYykgMjAwNC0yMDE1IFJvbWFuIE/FvmFuYSAoaHR0cDovL3d3dy5vbWRlc2lnbi5jeikKICoKICogQGF1dGhvciBSb21hbiBPxb5hbmEgPG96YW5hQG9tZGVzaWduLmN6PgogKi8KY2xhc3MgSWNhbFBhcnNlciB7CgoJLyoqIEB2YXIgXERhdGVUaW1lWm9uZSAqLwoJcHVibGljICR0aW1lem9uZTsKCgkvKiogQHZhciBhcnJheSAqLwoJcHVibGljICRkYXRhOwoKCS8qKiBAdmFyIGFycmF5ICovCglwdWJsaWMgJHdpbmRvd3NfdGltZXpvbmVzID0gWwoJCSdEYXRlbGluZSBTdGFuZGFyZCBUaW1lJyA9PiAnRXRjL0dNVCsxMicsCgkJJ1VUQy0xMScgPT4gJ0V0Yy9HTVQrMTEnLAoJCSdIYXdhaWlhbiBTdGFuZGFyZCBUaW1lJyA9PiAnUGFjaWZpYy9Ib25vbHVsdScsCgkJJ0FsYXNrYW4gU3RhbmRhcmQgVGltZScgPT4gJ0FtZXJpY2EvQW5jaG9yYWdlJywKCQknUGFjaWZpYyBTdGFuZGFyZCBUaW1lIChNZXhpY28pJyA9PiAnQW1lcmljYS9TYW50YV9Jc2FiZWwnLAoJCSdQYWNpZmljIFN0YW5kYXJkIFRpbWUnID0+ICdBbWVyaWNhL0xvc19BbmdlbGVzJywKCQknVVMgTW91bnRhaW4gU3RhbmRhcmQgVGltZScgPT4gJ0FtZXJpY2EvUGhvZW5peCcsCgkJJ01vdW50YWluIFN0YW5kYXJkIFRpbWUgKE1leGljbyknID0+ICdBbWVyaWNhL0NoaWh1YWh1YScsCgkJJ01vdW50YWluIFN0YW5kYXJkIFRpbWUnID0+ICdBbWVyaWNhL0RlbnZlcicsCgkJJ0NlbnRyYWwgQW1lcmljYSBTdGFuZGFyZCBUaW1lJyA9PiAnQW1lcmljYS9HdWF0ZW1hbGEnLAoJCSdDZW50cmFsIFN0YW5kYXJkIFRpbWUnID0+ICdBbWVyaWNhL0NoaWNhZ28nLAoJCSdDZW50cmFsIFN0YW5kYXJkIFRpbWUgKE1leGljbyknID0+ICdBbWVyaWNhL01leGljb19DaXR5JywKCQknQ2FuYWRhIENlbnRyYWwgU3RhbmRhcmQgVGltZScgPT4gJ0FtZXJpY2EvUmVnaW5hJywKCQknU0EgUGFjaWZpYyBTdGFuZGFyZCBUaW1lJyA9PiAnQW1lcmljYS9Cb2dvdGEnLAoJCSdFYXN0ZXJuIFN0YW5kYXJkIFRpbWUnID0+ICdBbWVyaWNhL05ld19Zb3JrJywKCQknVVMgRWFzdGVybiBTdGFuZGFyZCBUaW1lJyA9PiAnQW1lcmljYS9JbmRpYW5hcG9saXMnLAoJCSdWZW5lenVlbGEgU3RhbmRhcmQgVGltZScgPT4gJ0FtZXJpY2EvQ2FyYWNhcycsCgkJJ1BhcmFndWF5IFN0YW5kYXJkIFRpbWUnID0+ICdBbWVyaWNhL0FzdW5jaW9uJywKCQknQXRsYW50aWMgU3RhbmRhcmQgVGltZScgPT4gJ0FtZXJpY2EvSGFsaWZheCcsCgkJJ0NlbnRyYWwgQnJhemlsaWFuIFN0YW5kYXJkIFRpbWUnID0+ICdBbWVyaWNhL0N1aWFiYScsCgkJJ1NBIFdlc3Rlcm4gU3RhbmRhcmQgVGltZScgPT4gJ0FtZXJpY2EvTGFfUGF6JywKCQknUGFjaWZpYyBTQSBTdGFuZGFyZCBUaW1lJyA9PiAnQW1lcmljYS9TYW50aWFnbycsCgkJJ05ld2ZvdW5kbGFuZCBTdGFuZGFyZCBUaW1lJyA9PiAnQW1lcmljYS9TdF9Kb2hucycsCgkJJ0UuIFNvdXRoIEFtZXJpY2EgU3RhbmRhcmQgVGltZScgPT4gJ0FtZXJpY2EvU2FvX1BhdWxvJywKCQknQXJnZW50aW5hIFN0YW5kYXJkIFRpbWUnID0+ICdBbWVyaWNhL0J1ZW5vc19BaXJlcycsCgkJJ1NBIEVhc3Rlcm4gU3RhbmRhcmQgVGltZScgPT4gJ0FtZXJpY2EvQ2F5ZW5uZScsCgkJJ0dyZWVubGFuZCBTdGFuZGFyZCBUaW1lJyA9PiAnQW1lcmljYS9Hb2R0aGFiJywKCQknTW9udGV2aWRlbyBTdGFuZGFyZCBUaW1lJyA9PiAnQW1lcmljYS9Nb250ZXZpZGVvJywKCQknQmFoaWEgU3RhbmRhcmQgVGltZScgPT4gJ0FtZXJpY2EvQmFoaWEnLAoJCSdVVEMtMDInID0+ICdFdGMvR01UKzInLAoJCSdBem9yZXMgU3RhbmRhcmQgVGltZScgPT4gJ0F0bGFudGljL0F6b3JlcycsCgkJJ0NhcGUgVmVyZGUgU3RhbmRhcmQgVGltZScgPT4gJ0F0bGFudGljL0NhcGVfVmVyZGUnLAoJCSdNb3JvY2NvIFN0YW5kYXJkIFRpbWUnID0+ICdBZnJpY2EvQ2FzYWJsYW5jYScsCgkJJ1VUQycgPT4gJ0V0Yy9HTVQnLAoJCSdHTVQgU3RhbmRhcmQgVGltZScgPT4gJ0V1cm9wZS9Mb25kb24nLAoJCSdHcmVlbndpY2ggU3RhbmRhcmQgVGltZScgPT4gJ0F0bGFudGljL1JleWtqYXZpaycsCgkJJ1cuIEV1cm9wZSBTdGFuZGFyZCBUaW1lJyA9PiAnRXVyb3BlL0JlcmxpbicsCgkJJ0NlbnRyYWwgRXVyb3BlIFN0YW5kYXJkIFRpbWUnID0+ICdFdXJvcGUvQnVkYXBlc3QnLAoJCSdSb21hbmNlIFN0YW5kYXJkIFRpbWUnID0+ICdFdXJvcGUvUGFyaXMnLAoJCSdDZW50cmFsIEV1cm9wZWFuIFN0YW5kYXJkIFRpbWUnID0+ICdFdXJvcGUvV2Fyc2F3JywKCQknVy4gQ2VudHJhbCBBZnJpY2EgU3RhbmRhcmQgVGltZScgPT4gJ0FmcmljYS9MYWdvcycsCgkJJ05hbWliaWEgU3RhbmRhcmQgVGltZScgPT4gJ0FmcmljYS9XaW5kaG9laycsCgkJJ0dUQiBTdGFuZGFyZCBUaW1lJyA9PiAnRXVyb3BlL0J1Y2hhcmVzdCcsCgkJJ01pZGRsZSBFYXN0IFN0YW5kYXJkIFRpbWUnID0+ICdBc2lhL0JlaXJ1dCcsCgkJJ0VneXB0IFN0YW5kYXJkIFRpbWUnID0+ICdBZnJpY2EvQ2Fpcm8nLAoJCSdTeXJpYSBTdGFuZGFyZCBUaW1lJyA9PiAnQXNpYS9EYW1hc2N1cycsCgkJJ1NvdXRoIEFmcmljYSBTdGFuZGFyZCBUaW1lJyA9PiAnQWZyaWNhL0pvaGFubmVzYnVyZycsCgkJJ0ZMRSBTdGFuZGFyZCBUaW1lJyA9PiAnRXVyb3BlL0tpZXYnLAoJCSdUdXJrZXkgU3RhbmRhcmQgVGltZScgPT4gJ0V1cm9wZS9Jc3RhbmJ1bCcsCgkJJ0lzcmFlbCBTdGFuZGFyZCBUaW1lJyA9PiAnQXNpYS9KZXJ1c2FsZW0nLAoJCSdMaWJ5YSBTdGFuZGFyZCBUaW1lJyA9PiAnQWZyaWNhL1RyaXBvbGknLAoJCSdKb3JkYW4gU3RhbmRhcmQgVGltZScgPT4gJ0FzaWEvQW1tYW4nLAoJCSdBcmFiaWMgU3RhbmRhcmQgVGltZScgPT4gJ0FzaWEvQmFnaGRhZCcsCgkJJ0thbGluaW5ncmFkIFN0YW5kYXJkIFRpbWUnID0+ICdFdXJvcGUvS2FsaW5pbmdyYWQnLAoJCSdBcmFiIFN0YW5kYXJkIFRpbWUnID0+ICdBc2lhL1JpeWFkaCcsCgkJJ0UuIEFmcmljYSBTdGFuZGFyZCBUaW1lJyA9PiAnQWZyaWNhL05haXJvYmknLAoJCSdJcmFuIFN0YW5kYXJkIFRpbWUnID0+ICdBc2lhL1RlaHJhbicsCgkJJ0FyYWJpYW4gU3RhbmRhcmQgVGltZScgPT4gJ0FzaWEvRHViYWknLAoJCSdBemVyYmFpamFuIFN0YW5kYXJkIFRpbWUnID0+ICdBc2lhL0Jha3UnLAoJCSdSdXNzaWFuIFN0YW5kYXJkIFRpbWUnID0+ICdFdXJvcGUvTW9zY293JywKCQknTWF1cml0aXVzIFN0YW5kYXJkIFRpbWUnID0+ICdJbmRpYW4vTWF1cml0aXVzJywKCQknR2VvcmdpYW4gU3RhbmRhcmQgVGltZScgPT4gJ0FzaWEvVGJpbGlzaScsCgkJJ0NhdWNhc3VzIFN0YW5kYXJkIFRpbWUnID0+ICdBc2lhL1llcmV2YW4nLAoJCSdBZmdoYW5pc3RhbiBTdGFuZGFyZCBUaW1lJyA9PiAnQXNpYS9LYWJ1bCcsCgkJJ1dlc3QgQXNpYSBTdGFuZGFyZCBUaW1lJyA9PiAnQXNpYS9UYXNoa2VudCcsCgkJJ1Bha2lzdGFuIFN0YW5kYXJkIFRpbWUnID0+ICdBc2lhL0thcmFjaGknLAoJCSdJbmRpYSBTdGFuZGFyZCBUaW1lJyA9PiAnQXNpYS9DYWxjdXR0YScsCgkJJ1NyaSBMYW5rYSBTdGFuZGFyZCBUaW1lJyA9PiAnQXNpYS9Db2xvbWJvJywKCQknTmVwYWwgU3RhbmRhcmQgVGltZScgPT4gJ0FzaWEvS2F0bWFuZHUnLAoJCSdDZW50cmFsIEFzaWEgU3RhbmRhcmQgVGltZScgPT4gJ0FzaWEvQWxtYXR5JywKCQknQmFuZ2xhZGVzaCBTdGFuZGFyZCBUaW1lJyA9PiAnQXNpYS9EaGFrYScsCgkJJ0VrYXRlcmluYnVyZyBTdGFuZGFyZCBUaW1lJyA9PiAnQXNpYS9ZZWthdGVyaW5idXJnJywKCQknTXlhbm1hciBTdGFuZGFyZCBUaW1lJyA9PiAnQXNpYS9SYW5nb29uJywKCQknU0UgQXNpYSBTdGFuZGFyZCBUaW1lJyA9PiAnQXNpYS9CYW5na29rJywKCQknTi4gQ2VudHJhbCBBc2lhIFN0YW5kYXJkIFRpbWUnID0+ICdBc2lhL05vdm9zaWJpcnNrJywKCQknQ2hpbmEgU3RhbmRhcmQgVGltZScgPT4gJ0FzaWEvU2hhbmdoYWknLAoJCSdOb3J0aCBBc2lhIFN0YW5kYXJkIFRpbWUnID0+ICdBc2lhL0tyYXNub3lhcnNrJywKCQknU2luZ2Fwb3JlIFN0YW5kYXJkIFRpbWUnID0+ICdBc2lhL1NpbmdhcG9yZScsCgkJJ1cuIEF1c3RyYWxpYSBTdGFuZGFyZCBUaW1lJyA9PiAnQXVzdHJhbGlhL1BlcnRoJywKCQknVGFpcGVpIFN0YW5kYXJkIFRpbWUnID0+ICdBc2lhL1RhaXBlaScsCgkJJ1VsYWFuYmFhdGFyIFN0YW5kYXJkIFRpbWUnID0+ICdBc2lhL1VsYWFuYmFhdGFyJywKCQknTm9ydGggQXNpYSBFYXN0IFN0YW5kYXJkIFRpbWUnID0+ICdBc2lhL0lya3V0c2snLAoJCSdUb2t5byBTdGFuZGFyZCBUaW1lJyA9PiAnQXNpYS9Ub2t5bycsCgkJJ0tvcmVhIFN0YW5kYXJkIFRpbWUnID0+ICdBc2lhL1Nlb3VsJywKCQknQ2VuLiBBdXN0cmFsaWEgU3RhbmRhcmQgVGltZScgPT4gJ0F1c3RyYWxpYS9BZGVsYWlkZScsCgkJJ0FVUyBDZW50cmFsIFN0YW5kYXJkIFRpbWUnID0+ICdBdXN0cmFsaWEvRGFyd2luJywKCQknRS4gQXVzdHJhbGlhIFN0YW5kYXJkIFRpbWUnID0+ICdBdXN0cmFsaWEvQnJpc2JhbmUnLAoJCSdBVVMgRWFzdGVybiBTdGFuZGFyZCBUaW1lJyA9PiAnQXVzdHJhbGlhL1N5ZG5leScsCgkJJ1dlc3QgUGFjaWZpYyBTdGFuZGFyZCBUaW1lJyA9PiAnUGFjaWZpYy9Qb3J0X01vcmVzYnknLAoJCSdUYXNtYW5pYSBTdGFuZGFyZCBUaW1lJyA9PiAnQXVzdHJhbGlhL0hvYmFydCcsCgkJJ1lha3V0c2sgU3RhbmRhcmQgVGltZScgPT4gJ0FzaWEvWWFrdXRzaycsCgkJJ0NlbnRyYWwgUGFjaWZpYyBTdGFuZGFyZCBUaW1lJyA9PiAnUGFjaWZpYy9HdWFkYWxjYW5hbCcsCgkJJ1ZsYWRpdm9zdG9rIFN0YW5kYXJkIFRpbWUnID0+ICdBc2lhL1ZsYWRpdm9zdG9rJywKCQknTmV3IFplYWxhbmQgU3RhbmRhcmQgVGltZScgPT4gJ1BhY2lmaWMvQXVja2xhbmQnLAoJCSdVVEMrMTInID0+ICdFdGMvR01ULTEyJywKCQknRmlqaSBTdGFuZGFyZCBUaW1lJyA9PiAnUGFjaWZpYy9GaWppJywKCQknTWFnYWRhbiBTdGFuZGFyZCBUaW1lJyA9PiAnQXNpYS9NYWdhZGFuJywKCQknVG9uZ2EgU3RhbmRhcmQgVGltZScgPT4gJ1BhY2lmaWMvVG9uZ2F0YXB1JywKCQknU2Ftb2EgU3RhbmRhcmQgVGltZScgPT4gJ1BhY2lmaWMvQXBpYScsCgldOwoKCS8qKgoJICogQHBhcmFtIHN0cmluZyAkZmlsZQoJICogQHBhcmFtIG51bGwgJGNhbGxiYWNrCgkgKiBAcmV0dXJuIGFycmF5fG51bGwKCSAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24KCSAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgoJICovCglwdWJsaWMgZnVuY3Rpb24gcGFyc2VGaWxlKCRmaWxlLCAkY2FsbGJhY2sgPSBudWxsKSB7CgkJaWYgKCEkaGFuZGxlID0gZm9wZW4oJGZpbGUsICdyJykpIHsKCQkJdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDYW5cJ3Qgb3BlbiBmaWxlJyAuICRmaWxlIC4gJyBmb3IgcmVhZGluZycpOwoJCX0KCQlmY2xvc2UoJGhhbmRsZSk7CgoJCXJldHVybiAkdGhpcy0+cGFyc2VTdHJpbmcoZmlsZV9nZXRfY29udGVudHMoJGZpbGUpLCAkY2FsbGJhY2spOwoJfQoKCS8qKgoJICogQHBhcmFtIHN0cmluZyAkc3RyaW5nCgkgKiBAcGFyYW0gbnVsbCAkY2FsbGJhY2sKCSAqIEByZXR1cm4gYXJyYXl8bnVsbAoJICovCglwdWJsaWMgZnVuY3Rpb24gcGFyc2VTdHJpbmcoJHN0cmluZywgJGNhbGxiYWNrID0gbnVsbCkgewoJCSR0aGlzLT5kYXRhID0gW107CgoJCWlmICghcHJlZ19tYXRjaCgnL0JFR0lOOlZDQUxFTkRBUi8nLCAkc3RyaW5nKSkgewoJCQl0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCBJQ0FMIGRhdGEgZm9ybWF0Jyk7CgkJfQoKCQkkY291bnRlcnMgPSBbXTsKCQkkc2VjdGlvbiA9ICdWQ0FMRU5EQVInOwoKCQkvLyBSZXBsYWNlIFxyXG4gd2l0aCBcbgoJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiXHJcbiIsICJcbiIsICRzdHJpbmcpOwoKCQkvLyBVbmZvbGQgbXVsdGktbGluZSBzdHJpbmdzCgkJJHN0cmluZyA9IHN0cl9yZXBsYWNlKCJcbiAiLCAiIiwgJHN0cmluZyk7CgoJCWZvcmVhY2ggKGV4cGxvZGUoIlxuIiwgJHN0cmluZykgYXMgJHJvdykgewoKCQkJc3dpdGNoICgkcm93KSB7CgkJCQljYXNlICdCRUdJTjpEQVlMSUdIVCc6CgkJCQljYXNlICdCRUdJTjpWQUxBUk0nOgoJCQkJY2FzZSAnQkVHSU46VlRJTUVaT05FJzoKCQkJCWNhc2UgJ0JFR0lOOlZGUkVFQlVTWSc6CgkJCQljYXNlICdCRUdJTjpWSk9VUk5BTCc6CgkJCQljYXNlICdCRUdJTjpTVEFOREFSRCc6CgkJCQljYXNlICdCRUdJTjpWVE9ETyc6CgkJCQljYXNlICdCRUdJTjpWRVZFTlQnOgoJCQkJCSRzZWN0aW9uID0gc3Vic3RyKCRyb3csIDYpOwoJCQkJCSRjb3VudGVyc1skc2VjdGlvbl0gPSBpc3NldCgkY291bnRlcnNbJHNlY3Rpb25dKSA/ICRjb3VudGVyc1skc2VjdGlvbl0gKyAxIDogMDsKCQkJCQljb250aW51ZSAyOyAvLyB3aGlsZQoJCQkJCWJyZWFrOwoJCQkJY2FzZSAnRU5EOkRBWUxJR0hUJzoKCQkJCWNhc2UgJ0VORDpWQUxBUk0nOgoJCQkJY2FzZSAnRU5EOlZUSU1FWk9ORSc6CgkJCQljYXNlICdFTkQ6VkZSRUVCVVNZJzoKCQkJCWNhc2UgJ0VORDpWSk9VUk5BTCc6CgkJCQljYXNlICdFTkQ6U1RBTkRBUkQnOgoJCQkJY2FzZSAnRU5EOlZFVkVOVCc6CgkJCQljYXNlICdFTkQ6VlRPRE8nOgoJCQkJY2FzZSAnRU5EOlZDQUxFTkRBUic6CgkJCQkJY29udGludWUgMjsgLy8gd2hpbGUKCQkJCQlicmVhazsKCQkJfQoKCQkJbGlzdCgka2V5LCAkbWlkZGxlLCAkdmFsdWUpID0gJHRoaXMtPnBhcnNlUm93KCRyb3cpOwoKCgkJCWlmICgkY2FsbGJhY2spIHsKCQkJCS8vIGNhbGwgdXNlciBmdW5jdGlvbiBmb3IgcHJvY2Vzc2luZyBsaW5lCgkJCQljYWxsX3VzZXJfZnVuYygkY2FsbGJhY2ssICRyb3csICRrZXksICRtaWRkbGUsICR2YWx1ZSwgJHNlY3Rpb24sICRjb3VudGVyc1skc2VjdGlvbl0pOwoJCQl9IGVsc2UgewoJCQkJaWYgKCRzZWN0aW9uID09PSAnVkNBTEVOREFSJykgewoJCQkJCSR0aGlzLT5kYXRhWyRrZXldID0gJHZhbHVlOwoJCQkJfSBlbHNlIHsKCQkJCQlpZigka2V5ID09PSAnQVRUQUNIJykgewoJCQkJCQkvLyB1c2UgYW4gYXJyYXkgc2luY2UgdGhlcmUgY2FuIGJlIG11bHRpcGxlIGF0dGFjaG1lbnRzLiAgVGhpcyBkb2VzIG5vdAoJCQkJCQkvLyBicmVhayB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbi0taXQgbGVhdmVzIHRoZSBBVFRBQ0gga2V5IGFsb25lLgoJCQkJCQkkbmV3S2V5ID0gJ0FUVEFDSE1FTlRTJzsKCQkJCQkJJHRoaXMtPmRhdGFbJHNlY3Rpb25dWyRjb3VudGVyc1skc2VjdGlvbl1dWyRuZXdLZXldW10gPSAkdmFsdWU7CgkJCQkJfQoKCQkJCQkkdGhpcy0+ZGF0YVskc2VjdGlvbl1bJGNvdW50ZXJzWyRzZWN0aW9uXV1bJGtleV0gPSAkdmFsdWU7CgkJCQl9CgoJCQl9CgkJfQoKCQlyZXR1cm4gKCRjYWxsYmFjaykgPyBudWxsIDogJHRoaXMtPmRhdGE7Cgl9CgoJLyoqCgkgKiBAcGFyYW0gJHJvdwoJICogQHJldHVybiBhcnJheQoJICovCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlUm93KCRyb3cpIHsKCQlwcmVnX21hdGNoKCcjXihbXHctXSspOz8oLio/KTooLiopJCNpJywgJHJvdywgJG1hdGNoZXMpOwoKCQkka2V5ID0gZmFsc2U7CgkJJG1pZGRsZSA9IG51bGw7CgkJJHZhbHVlID0gbnVsbDsKCgkJaWYgKCRtYXRjaGVzKSB7CgkJCSRrZXkgPSAkbWF0Y2hlc1sxXTsKCQkJJG1pZGRsZSA9ICRtYXRjaGVzWzJdOwoJCQkkdmFsdWUgPSAkbWF0Y2hlc1szXTsKCQkJJHRpbWV6b25lID0gbnVsbDsKCgkJCWlmICgka2V5ID09PSAnWC1XUi1USU1FWk9ORScgfHwgJGtleSA9PT0gJ1RaSUQnKSB7CgkJCQlpZiAocHJlZ19tYXRjaCgnIyhcdysvXHcrKSQjaScsICR2YWx1ZSwgJG1hdGNoZXMpKSB7CgkJCQkJJHZhbHVlID0gJG1hdGNoZXNbMV07CgkJCQl9CgkJCQlpZiAoaXNzZXQoJHRoaXMtPndpbmRvd3NfdGltZXpvbmVzWyR2YWx1ZV0pKSB7CgkJCQkJJHZhbHVlID0gJHRoaXMtPndpbmRvd3NfdGltZXpvbmVzWyR2YWx1ZV07CgkJCQl9CgkJCQkkdGhpcy0+dGltZXpvbmUgPSBuZXcgXERhdGVUaW1lWm9uZSgkdmFsdWUpOwoJCQl9CgoJCQkvLyBoYXZlIHNvbWUgbWlkZGxlIHBhcnQgPwoJCQlpZiAoJG1pZGRsZSAmJiBwcmVnX21hdGNoX2FsbCgnIyg/PGtleT5bXj07XSspPSg/PHZhbHVlPlteO10rKSMnLCAkbWlkZGxlLCAkbWF0Y2hlcywgUFJFR19TRVRfT1JERVIpKSB7CgkJCQkkbWlkZGxlID0gW107CgkJCQlmb3JlYWNoICgkbWF0Y2hlcyBhcyAkbWF0Y2gpIHsKCQkJCQlpZiAoJG1hdGNoWydrZXknXSA9PT0gJ1RaSUQnKSB7CgkJCQkJCWlmIChpc3NldCgkdGhpcy0+d2luZG93c190aW1lem9uZXNbJG1hdGNoWyd2YWx1ZSddXSkpIHsKCQkJCQkJCSRtYXRjaFsndmFsdWUnXSA9ICR0aGlzLT53aW5kb3dzX3RpbWV6b25lc1skbWF0Y2hbJ3ZhbHVlJ11dOwoJCQkJCQl9CgkJCQkJCXRyeSB7CgkJCQkJCQkkbWlkZGxlWyRtYXRjaFsna2V5J11dID0gJHRpbWV6b25lID0gbmV3IFxEYXRlVGltZVpvbmUoJG1hdGNoWyd2YWx1ZSddKTsKCQkJCQkJfSBjYXRjaCAoXEV4Y2VwdGlvbiAkZSkgewoJCQkJCQkJJG1pZGRsZVskbWF0Y2hbJ2tleSddXSA9ICRtYXRjaFsndmFsdWUnXTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCgkJLy8gcHJvY2VzcyBzaW1wbGUgZGF0ZXMgd2l0aCB0aW1lem9uZQoJCWlmICgka2V5ID09PSAnRFRTVEFNUCcgfHwgJGtleSA9PT0gJ0xBU1QtTU9ESUZJRUQnIHx8ICRrZXkgPT09ICdDUkVBVEVEJyB8fCAka2V5ID09PSAnRFRTVEFSVCcgfHwgJGtleSA9PT0gJ0RURU5EJykgewoJCQl0cnkgewoJCQkJJHZhbHVlID0gbmV3IFxEYXRlVGltZSgkdmFsdWUsICgkdGltZXpvbmUgPzogJHRoaXMtPnRpbWV6b25lKSk7CgkJCX0gY2F0Y2ggKFxFeGNlcHRpb24gJGUpIHsKCQkJCSR2YWx1ZSA9IG51bGw7CgkJCX0KCQl9CgoJCWlmICgka2V5ID09PSAnUlJVTEUnICYmIHByZWdfbWF0Y2hfYWxsKCcjKD88a2V5PltePTtdKyk9KD88dmFsdWU+W147XSspIycsICR2YWx1ZSwgJG1hdGNoZXMsIFBSRUdfU0VUX09SREVSKSkgewoJCQkkbWlkZGxlID0gbnVsbDsKCQkJJHZhbHVlID0gW107CgkJCWZvcmVhY2ggKCRtYXRjaGVzIGFzICRtYXRjaCkgewoJCQkJJHZhbHVlWyRtYXRjaFsna2V5J11dID0gJG1hdGNoWyd2YWx1ZSddOwoJCQl9CgkJfQoKCQkvL3NwbGl0IGJ5IGNvbW1hLCBlc2NhcGUgXCwKCQlpZiAoJGtleSA9PT0gJ0NBVEVHT1JJRVMnKSB7CgkJCSR2YWx1ZSA9IHByZWdfc3BsaXQoJy8oPzwhW15cXFxcXVxcXFwpLC8nLCAkdmFsdWUpOwoJCX0KCgkJLy9pbXBsZW1lbnQgNC4zLjExIFRleHQgRVNDQVBFRC1DSEFSCgkJJHRleHRfcHJvcGVydGllcyA9IGFycmF5KAoJCQknQ0FMU0NBTEUnLCAnTUVUSE9EJywgJ1BST0RJRCcsICdWRVJTSU9OJywgJ0NBVEVHT1JJRVMnLCAnQ0xBU1MnLCAnQ09NTUVOVCcsICdERVNDUklQVElPTicKCQksICdMT0NBVElPTicsICdSRVNPVVJDRVMnLCAnU1RBVFVTJywgJ1NVTU1BUlknLCAnVFJBTlNQJywgJ1RaSUQnLCAnVFpOQU1FJywgJ0NPTlRBQ1QnLCAnUkVMQVRFRC1UTycsICdVSUQnCgkJLCAnQUNUSU9OJywgJ1JFUVVFU1QtU1RBVFVTJwoJCSk7CgkJaWYgKGluX2FycmF5KCRrZXksICR0ZXh0X3Byb3BlcnRpZXMpIHx8IHN0cnBvcygka2V5LCAnWC0nKSA9PT0gMCkgewoJCQlpZiAoaXNfYXJyYXkoJHZhbHVlKSkgewoJCQkJZm9yZWFjaCAoJHZhbHVlIGFzICYkdmFyKSB7CgkJCQkJJHZhciA9IHN0cnRyKCR2YXIsIFsnXFxcXCcgPT4gJ1xcJywgJ1xcTicgPT4gIlxuIiwgJ1xcbicgPT4gIlxuIiwgJ1xcOycgPT4gJzsnLCAnXFwsJyA9PiAnLCddKTsKCQkJCX0KCQkJfSBlbHNlIHsKCQkJCSR2YWx1ZSA9IHN0cnRyKCR2YWx1ZSwgWydcXFxcJyA9PiAnXFwnLCAnXFxOJyA9PiAiXG4iLCAnXFxuJyA9PiAiXG4iLCAnXFw7JyA9PiAnOycsICdcXCwnID0+ICcsJ10pOwoJCQl9CgkJfQoKCQlyZXR1cm4gWyRrZXksICRtaWRkbGUsICR2YWx1ZV07Cgl9CgoJLyoqCgkgKiBAcmV0dXJuIGFycmF5CgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRFdmVudHMoKSB7CgkJcmV0dXJuIGlzc2V0KCR0aGlzLT5kYXRhWydWRVZFTlQnXSkgPyAkdGhpcy0+ZGF0YVsnVkVWRU5UJ10gOiBbXTsKCX0KCgkvKioKCSAqIEByZXR1cm4gYXJyYXkKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdldEFsYXJtcygpIHsKCQlyZXR1cm4gaXNzZXQoJHRoaXMtPmRhdGFbJ1ZBTEFSTSddKSA/ICR0aGlzLT5kYXRhWydWQUxBUk0nXSA6IFtdOwoJfQoKCS8qKgoJICogQHJldHVybiBhcnJheQoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2V0VGltZXpvbmVzKCkgewoJCXJldHVybiBpc3NldCgkdGhpcy0+ZGF0YVsnVlRJTUVaT05FJ10pID8gJHRoaXMtPmRhdGFbJ1ZUSU1FWk9ORSddIDogW107Cgl9CgoJLyoqCgkgKiBSZXR1cm4gc29ydGVkIGV2ZW50bGlzdCBhcyBhcnJheSBvciBmYWxzZSBpZiBjYWxlbmFyIGlzIGVtcHR5CgkgKgoJICogQHJldHVybiBhcnJheXxib29sZWFuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRTb3J0ZWRFdmVudHMoKSB7CgkJaWYgKCRldmVudHMgPSAkdGhpcy0+Z2V0RXZlbnRzKCkpIHsKCQkJdXNvcnQoCgkJCQkkZXZlbnRzLCBmdW5jdGlvbiAoJGEsICRiKSB7CgkJCQlyZXR1cm4gJGFbJ0RUU1RBUlQnXSA+ICRiWydEVFNUQVJUJ107CgkJCX0KCQkJKTsKCQkJcmV0dXJuICRldmVudHM7CgkJfQoJCXJldHVybiBbXTsKCX0KCgkvKioKCSAqIEByZXR1cm4gYXJyYXkKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdldFJldmVyc2VTb3J0ZWRFdmVudHMoKSB7CgkJaWYgKCRldmVudHMgPSAkdGhpcy0+Z2V0RXZlbnRzKCkpIHsKCQkJdXNvcnQoCgkJCQkkZXZlbnRzLCBmdW5jdGlvbiAoJGEsICRiKSB7CgkJCQlyZXR1cm4gJGFbJ0RUU1RBUlQnXSA8ICRiWydEVFNUQVJUJ107CgkJCX0KCQkJKTsKCQkJcmV0dXJuICRldmVudHM7CgkJfQoJCXJldHVybiBbXTsKCX0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/colorPicker/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/colorPicker/colorPicker.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGl2LmNvbG9yUGlja2VyLXBpY2tlciB7CiAgaGVpZ2h0OiAxNnB4OwogIHdpZHRoOiAxNnB4OwogIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOwogIGJhY2tncm91bmQ6IHVybChhcnJvdy5naWYpIG5vLXJlcGVhdCB0b3AgcmlnaHQ7CiAgY3Vyc29yOiBwb2ludGVyOwogIGxpbmUtaGVpZ2h0OiAxNnB4OwogIGZvbnQtc2l6ZTowLjc1ZW07CiAgZm9udC13ZWlnaHQ6Ym9sZDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCmRpdi5jb2xvclBpY2tlci1wYWxldHRlIHsKICB3aWR0aDogMTEwcHg7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGJvcmRlcjogMXB4IHNvbGlkICM1OThGRUY7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VGRUZFRjsKICBwYWRkaW5nOiAycHg7CiAgei1pbmRleDogOTk5OTsKfQogIGRpdi5jb2xvclBpY2tlcl9oZXhXcmFwIHt3aWR0aDogMTAwJTsgZmxvYXQ6bGVmdCB9CiAgZGl2LmNvbG9yUGlja2VyX2hleFdyYXAgbGFiZWwge2ZvbnQtc2l6ZTogOTUlOyBjb2xvcjogIzJGMkYyRjsgbWFyZ2luOiA1cHggMnB4OyB3aWR0aDogMjUlfQogIGRpdi5jb2xvclBpY2tlcl9oZXhXcmFwIGlucHV0IHttYXJnaW46IDVweCAycHg7IHBhZGRpbmc6IDA7IGZvbnQtc2l6ZTogOTUlOyBib3JkZXI6IDFweCBzb2xpZCAjMDAwOyB3aWR0aDogNjUlOyB9CgpkaXYuY29sb3JQaWNrZXItc3dhdGNoIHsKICBoZWlnaHQ6IDEycHg7CiAgd2lkdGg6IDEycHg7CiAgYm9yZGVyOiAxcHggc29saWQgIzAwMDsKICBtYXJnaW46IDJweDsKICBmbG9hdDogbGVmdDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgbGluZS1oZWlnaHQ6IDEycHg7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/colorPicker/jquery.colorPicker.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIFJlYWxseSBTaW1wbGUgQ29sb3IgUGlja2VyIGluIGpRdWVyeQogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIChNSVQtTElDRU5TRS50eHQpIGxpY2Vuc2VzLgogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMgogKiBMYWtzaGFuIFBlcmVyYSAod3d3Lmxha3Rlay5jb20pICYgRGFuaWVsIExhY3kgKGRhbmllbGxhY3kuY29tKQogKgogKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bwogKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQogKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICoKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqCiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAogKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgogKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwogKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCiAqIElOIFRIRSBTT0ZUV0FSRS4KICovKGZ1bmN0aW9uKGEpe3ZhciBiLGMsZD0wLGU9e2NvbnRyb2w6YSgnPGRpdiBjbGFzcz0iY29sb3JQaWNrZXItcGlja2VyIj4mbmJzcDs8L2Rpdj4nKSxwYWxldHRlOmEoJzxkaXYgaWQ9ImNvbG9yUGlja2VyX3BhbGV0dGUiIGNsYXNzPSJjb2xvclBpY2tlci1wYWxldHRlIiAvPicpLHN3YXRjaDphKCc8ZGl2IGNsYXNzPSJjb2xvclBpY2tlci1zd2F0Y2giPiZuYnNwOzwvZGl2PicpLGhleExhYmVsOmEoJzxsYWJlbCBmb3I9ImNvbG9yUGlja2VyX2hleCI+SGV4PC9sYWJlbD4nKSxoZXhGaWVsZDphKCc8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImNvbG9yUGlja2VyX2hleCIgLz4nKX0sZj0idHJhbnNwYXJlbnQiLGc7YS5mbi5jb2xvclBpY2tlcj1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9YSh0aGlzKSxnPWEuZXh0ZW5kKHt9LGEuZm4uY29sb3JQaWNrZXIuZGVmYXVsdHMsYiksaD1hLmZuLmNvbG9yUGlja2VyLnRvSGV4KGMudmFsKCkubGVuZ3RoPjA/Yy52YWwoKTpnLnBpY2tlckRlZmF1bHQpLGk9ZS5jb250cm9sLmNsb25lKCksaj1lLnBhbGV0dGUuY2xvbmUoKS5hdHRyKCJpZCIsImNvbG9yUGlja2VyX3BhbGV0dGUtIitkKSxrPWUuaGV4TGFiZWwuY2xvbmUoKSxsPWUuaGV4RmllbGQuY2xvbmUoKSxtPWpbMF0uaWQsbixvO2EuZWFjaChnLmNvbG9ycyxmdW5jdGlvbihiKXtuPWUuc3dhdGNoLmNsb25lKCksZy5jb2xvcnNbYl09PT1mPyhuLmFkZENsYXNzKGYpLnRleHQoIlgiKSxhLmZuLmNvbG9yUGlja2VyLmJpbmRQYWxldHRlKGwsbixmKSk6KG4uY3NzKCJiYWNrZ3JvdW5kLWNvbG9yIiwiIyIrdGhpcyksYS5mbi5jb2xvclBpY2tlci5iaW5kUGFsZXR0ZShsLG4pKSxuLmFwcGVuZFRvKGopfSksay5hdHRyKCJmb3IiLCJjb2xvclBpY2tlcl9oZXgtIitkKSxsLmF0dHIoe2lkOiJjb2xvclBpY2tlcl9oZXgtIitkLHZhbHVlOmh9KSxsLmJpbmQoImtleWRvd24iLGZ1bmN0aW9uKGIpe2lmKGIua2V5Q29kZT09PTEzKXt2YXIgZD1hLmZuLmNvbG9yUGlja2VyLnRvSGV4KGEodGhpcykudmFsKCkpO2EuZm4uY29sb3JQaWNrZXIuY2hhbmdlQ29sb3IoZD9kOmMudmFsKCkpfWIua2V5Q29kZT09PTI3JiZhLmZuLmNvbG9yUGlja2VyLmhpZGVQYWxldHRlKCl9KSxsLmJpbmQoImtleXVwIixmdW5jdGlvbihiKXt2YXIgZD1hLmZuLmNvbG9yUGlja2VyLnRvSGV4KGEoYi50YXJnZXQpLnZhbCgpKTthLmZuLmNvbG9yUGlja2VyLnByZXZpZXdDb2xvcihkP2Q6Yy52YWwoKSl9KSxhKCc8ZGl2IGNsYXNzPSJjb2xvclBpY2tlcl9oZXhXcmFwIiAvPicpLmFwcGVuZChrKS5hcHBlbmRUbyhqKSxqLmZpbmQoIi5jb2xvclBpY2tlcl9oZXhXcmFwIikuYXBwZW5kKGwpLGcuc2hvd0hleEZpZWxkPT09ITEmJihsLmhpZGUoKSxrLmhpZGUoKSksYSgiYm9keSIpLmFwcGVuZChqKSxqLmhpZGUoKSxpLmNzcygiYmFja2dyb3VuZC1jb2xvciIsaCksaS5iaW5kKCJjbGljayIsZnVuY3Rpb24oKXtjLmlzKCI6bm90KDpkaXNhYmxlZCkiKSYmYS5mbi5jb2xvclBpY2tlci50b2dnbGVQYWxldHRlKGEoIiMiK20pLGEodGhpcykpfSksYiYmYi5vbkNvbG9yQ2hhbmdlP2kuZGF0YSgib25Db2xvckNoYW5nZSIsYi5vbkNvbG9yQ2hhbmdlKTppLmRhdGEoIm9uQ29sb3JDaGFuZ2UiLGZ1bmN0aW9uKCl7fSksKG89Yy5kYXRhKCJ0ZXh0IikpJiZpLmh0bWwobyksYy5hZnRlcihpKSxjLmJpbmQoImNoYW5nZSIsZnVuY3Rpb24oKXtjLm5leHQoIi5jb2xvclBpY2tlci1waWNrZXIiKS5jc3MoImJhY2tncm91bmQtY29sb3IiLGEuZm4uY29sb3JQaWNrZXIudG9IZXgoYSh0aGlzKS52YWwoKSkpfSksYy52YWwoaCk7aWYoY1swXS50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PT0iaW5wdXQiKXRyeXtjLmF0dHIoInR5cGUiLCJoaWRkZW4iKX1jYXRjaChwKXtjLmNzcygidmlzaWJpbGl0eSIsImhpZGRlbiIpLmNzcygicG9zaXRpb24iLCJhYnNvbHV0ZSIpfWVsc2UgYy5oaWRlKCk7ZCsrfSl9LGEuZXh0ZW5kKCEwLGEuZm4uY29sb3JQaWNrZXIse3RvSGV4OmZ1bmN0aW9uKGEpe2lmKGEubWF0Y2goL1swLTlBLUZdezZ9fFswLTlBLUZdezN9JC9pKSlyZXR1cm4gYS5jaGFyQXQoMCk9PT0iIyI/YToiIyIrYTtpZighYS5tYXRjaCgvXnJnYlwoXHMqKFxkezEsM30pXHMqLFxzKihcZHsxLDN9KVxzKixccyooXGR7MSwzfSlccypcKSQvKSlyZXR1cm4hMTt2YXIgYj1bcGFyc2VJbnQoUmVnRXhwLiQxLDEwKSxwYXJzZUludChSZWdFeHAuJDIsMTApLHBhcnNlSW50KFJlZ0V4cC4kMywxMCldLGM9ZnVuY3Rpb24oYSl7aWYoYS5sZW5ndGg8Milmb3IodmFyIGI9MCxjPTItYS5sZW5ndGg7YjxjO2IrKylhPSIwIithO3JldHVybiBhfTtpZihiLmxlbmd0aD09PTMpe3ZhciBkPWMoYlswXS50b1N0cmluZygxNikpLGU9YyhiWzFdLnRvU3RyaW5nKDE2KSksZj1jKGJbMl0udG9TdHJpbmcoMTYpKTtyZXR1cm4iIyIrZCtlK2Z9fSxjaGVja01vdXNlOmZ1bmN0aW9uKGQsZSl7dmFyIGY9YyxnPWEoZC50YXJnZXQpLnBhcmVudHMoIiMiK2YuYXR0cigiaWQiKSkubGVuZ3RoO2lmKGQudGFyZ2V0PT09YShmKVswXXx8ZC50YXJnZXQ9PT1iWzBdfHxnPjApcmV0dXJuO2EuZm4uY29sb3JQaWNrZXIuaGlkZVBhbGV0dGUoKX0saGlkZVBhbGV0dGU6ZnVuY3Rpb24oKXthKGRvY3VtZW50KS51bmJpbmQoIm1vdXNlZG93biIsYS5mbi5jb2xvclBpY2tlci5jaGVja01vdXNlKSxhKCIuY29sb3JQaWNrZXItcGFsZXR0ZSIpLmhpZGUoKX0sc2hvd1BhbGV0dGU6ZnVuY3Rpb24oYyl7dmFyIGQ9Yi5wcmV2KCJpbnB1dCIpLnZhbCgpO2MuY3NzKHt0b3A6Yi5vZmZzZXQoKS50b3ArYi5vdXRlckhlaWdodCgpLGxlZnQ6Yi5vZmZzZXQoKS5sZWZ0fSksYSgiI2NvbG9yX3ZhbHVlIikudmFsKGQpLGMuc2hvdygpLGEoZG9jdW1lbnQpLmJpbmQoIm1vdXNlZG93biIsYS5mbi5jb2xvclBpY2tlci5jaGVja01vdXNlKX0sdG9nZ2xlUGFsZXR0ZTpmdW5jdGlvbihkLGUpe2UmJihiPWUpLGM9ZCxjLmlzKCI6dmlzaWJsZSIpP2EuZm4uY29sb3JQaWNrZXIuaGlkZVBhbGV0dGUoKTphLmZuLmNvbG9yUGlja2VyLnNob3dQYWxldHRlKGQpfSxjaGFuZ2VDb2xvcjpmdW5jdGlvbihjKXtiLmNzcygiYmFja2dyb3VuZC1jb2xvciIsYyksYi5wcmV2KCJpbnB1dCIpLnZhbChjKS5jaGFuZ2UoKSxhLmZuLmNvbG9yUGlja2VyLmhpZGVQYWxldHRlKCksYi5kYXRhKCJvbkNvbG9yQ2hhbmdlIikuY2FsbChiLGEoYikucHJldigiaW5wdXQiKS5hdHRyKCJpZCIpLGMpfSxwcmV2aWV3Q29sb3I6ZnVuY3Rpb24oYSl7Yi5jc3MoImJhY2tncm91bmQtY29sb3IiLGEpfSxiaW5kUGFsZXR0ZTpmdW5jdGlvbihjLGQsZSl7ZT1lP2U6YS5mbi5jb2xvclBpY2tlci50b0hleChkLmNzcygiYmFja2dyb3VuZC1jb2xvciIpKSxkLmJpbmQoe2NsaWNrOmZ1bmN0aW9uKGIpe2c9ZSxhLmZuLmNvbG9yUGlja2VyLmNoYW5nZUNvbG9yKGUpfSxtb3VzZW92ZXI6ZnVuY3Rpb24oYil7Zz1jLnZhbCgpLGEodGhpcykuY3NzKCJib3JkZXItY29sb3IiLCIjNTk4RkVGIiksYy52YWwoZSksYS5mbi5jb2xvclBpY2tlci5wcmV2aWV3Q29sb3IoZSl9LG1vdXNlb3V0OmZ1bmN0aW9uKGQpe2EodGhpcykuY3NzKCJib3JkZXItY29sb3IiLCIjMDAwIiksYy52YWwoYi5jc3MoImJhY2tncm91bmQtY29sb3IiKSksYy52YWwoZyksYS5mbi5jb2xvclBpY2tlci5wcmV2aWV3Q29sb3IoZyl9fSl9fSksYS5mbi5jb2xvclBpY2tlci5kZWZhdWx0cz17cGlja2VyRGVmYXVsdDoiRkZGRkZGIixjb2xvcnM6WyIwMDAwMDAiLCI5OTMzMDAiLCIzMzMzMDAiLCIwMDAwODAiLCIzMzMzOTkiLCIzMzMzMzMiLCI4MDAwMDAiLCJGRjY2MDAiLCI4MDgwMDAiLCIwMDgwMDAiLCIwMDgwODAiLCIwMDAwRkYiLCI2NjY2OTkiLCI4MDgwODAiLCJGRjAwMDAiLCJGRjk5MDAiLCI5OUNDMDAiLCIzMzk5NjYiLCIzM0NDQ0MiLCIzMzY2RkYiLCI4MDAwODAiLCI5OTk5OTkiLCJGRjAwRkYiLCJGRkNDMDAiLCJGRkZGMDAiLCIwMEZGMDAiLCIwMEZGRkYiLCIwMENDRkYiLCI5OTMzNjYiLCJDMEMwQzAiLCJGRjk5Q0MiLCJGRkNDOTkiLCJGRkZGOTkiLCJDQ0ZGRkYiLCI5OUNDRkYiLCJGRkZGRkYiXSxhZGRDb2xvcnM6W10sc2hvd0hleEZpZWxkOiEwfX0pKGpRdWVyeSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/fullcalendar/changelog.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CnYyLjMuMiAoMjAxNS0wNi0xNCkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBtaW5vciBjb2RlIGFkanVzdG1lbnQgaW4gcHJlcGFyYXRpb24gZm9yIHBsdWdpbnMKCgp2Mi4zLjEgKDIwMTUtMDMtMDgpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gRml4IHdlZWsgdmlldyBjb2x1bW4gdGl0bGUgZm9yIGVuLWdiIChbUFIyMjBdKQotIFB1Ymxpc2ggdG8gTlBNIChbMjQ0N10pCi0gRGV0YW5nbGUgYm93ZXIgZnJvbSBucG0gcGFja2FnZSAoW1BSMTc5XSkKCltQUjIyMF06IGh0dHBzOi8vZ2l0aHViLmNvbS9hcnNoYXcvZnVsbGNhbGVuZGFyL3B1bGwvMjIwClsyNDQ3XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yNDQ3CltQUjE3OV06IGh0dHBzOi8vZ2l0aHViLmNvbS9hcnNoYXcvZnVsbGNhbGVuZGFyL3B1bGwvMTc5CgoKdjIuMy4wICgyMDE1LTAyLTIxKQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIGludGVybmFsIHJlZmFjdG9yaW5nIGluIHByZXBhcmF0aW9uIGZvciBvdGhlciB2aWV3cwotIGJ1c2luZXNzSG91cnMgbm93IHJlbmRlcnMgb24gd2hvbGUtZGF5cyBpbiBhZGRpdGlvbiB0byB0aW1lZCBhcmVhcwotIGV2ZW50cyBpbiAibW9yZSIgcG9wb3ZlciBub3Qgc29ydGVkIGJ5IHRpbWUgKFsyMzg1XSkKLSBhdm9pZCB1c2luZyBtb21lbnQncyBkZXByZWNhdGVkIHpvbmUgbWV0aG9kIChbMjQ0M10pCi0gZGVzdHJveWluZyB0aGUgY2FsZW5kYXIgc29tZXRpbWVzIGNhdXNlcyBhbGwgd2luZG93IHJlc2l6ZSBoYW5kbGVycyB0byBiZSB1bmJvdW5kIChbMjQzMl0pCi0gbXVsdGlwbGUgY2FsZW5kYXJzIG9uIG9uZSBwYWdlLCBjYW4ndCBhY2NlcHQgZXh0ZXJuYWwgZWxlbWVudHMgYWZ0ZXIgbmF2aWdhdGluZyAoWzI0MzNdKQotIGFjY2VwdCBleHRlcm5hbCBldmVudHMgZnJvbSBqcXVpIHNvcnRhYmxlIChbMTY5OF0pCi0gZXh0ZXJuYWwganF1aSBkcm9wIHByb2Nlc3NlZCBiZWZvcmUgcmV2ZXJ0aW5nIChbMTY2MV0pCi0gSUU4IGZpeDogbW9udGggdmlldyByZW5kZXJzIGluY29ycmVjdGx5IChbMjQyOF0pCi0gSUU4IGZpeDogZXZlbnRMaW1pdDp0cnVlIHdvdWxkbid0IGFjdGl2YXRlICJtb3JlIiBsaW5rIChbMjMzMF0pCi0gSUU4IGZpeDogZHJhZ2dpbmcgYW4gZXZlbnQgd2l0aCBhbiBocmVmCi0gSUU4IGZpeDogaW52aXNpYmxlIGVsZW1lbnQgd2hpbGUgZHJhZ2dpbmcgYWdlbmRhIHZpZXcgZXZlbnRzCi0gSUU4IGZpeDogZXJyYXRpYyBleHRlcm5hbCBlbGVtZW50IGRyYWdnaW5nCgpbMjM4NV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjM4NQpbMjQ0M106IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjQ0MwpbMjQzMl06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjQzMgpbMjQzM106IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjQzMwpbMTY5OF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MTY5OApbMTY2MV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MTY2MQpbMjQyOF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjQyOApbMjMzMF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjMzMAoKCnYyLjIuNyAoMjAxNS0wMi0xMCkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSB2aWV3LnRpdGxlIHdhc24ndCBkZWZpbmVkIGluIHZpZXdSZW5kZXIgY2FsbGJhY2sgKFsyNDA3XSkKLSBGdWxsQ2FsZW5kYXIgdmVyc2lvbnMgPj0gMi4yLjUgYnJva2VubmVzcyB3aXRoIE1vbWVudCB2ZXJzaW9ucyA8PSAyLjguMyAoWzI0MTddKQotIFN1cHBvcnQgQm9rbWFsIE5vcndlZ2lhbiBsYW5ndWFnZSBzcGVjaWZpY2FsbHkgKFsyNDI3XSkKClsyNDA3XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yNDA3ClsyNDE3XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yNDE3ClsyNDI3XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yNDI3CgoKdjIuMi42ICgyMDE1LTAxLTExKQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIENvbXBhdGliaWxpdHkgd2l0aCBNb21lbnQgdjIuOS4gV2FzIGJyZWFraW5nIEdDYWwgcGx1Z2luIChbMjQwOF0pCi0gVmlldyBvYmplY3QncyBgdGl0bGVgIHByb3BlcnR5IG1pc3Rha2VubHkgb21pdHRlZCAoWzI0MDddKQotIFNpbmdsZS1kYXkgdmlld3Mgd2l0aCBoaWRkZW5zIGRheXMgY291bGQgY2F1c2UgcHJldi9uZXh0IG1pc2JlaGF2aW9yIChbMjQwNl0pCi0gRG9uJ3QgbGV0IHRoZSBjdXJyZW50IGRhdGUgZXZlciBiZSBhIGhpZGRlbiBkYXkgKHNvbHZlcyBbMjM5NV0pCi0gSGVicmV3IGxvY2FsZSAoWzIxNTddKQoKWzI0MDhdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTI0MDgKWzI0MDddOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTI0MDcKWzI0MDZdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTI0MDYKWzIzOTVdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIzOTUKWzIxNTddOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIxNTcKCgp2Mi4yLjUgKDIwMTQtMTItMzApCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gYGJ1dHRvblRleHRgIHNwZWNpZmllZCBmb3IgY3VzdG9tIHZpZXdzIHZpYSB0aGUgYHZpZXdzYCBvcHRpb24KCS0gYnVnZml4OiB3cm9uZyBkZWZhdWx0IHZhbHVlLCBjb3VsZG4ndCBvdmVycmlkZSBkZWZhdWx0CgktIGZlYXR1cmU6IGRlZmF1bHQgdmFsdWUgdGFrZW4gZnJvbSBsb2NhbGUKCgp2Mi4yLjQgKDIwMTQtMTItMjkpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gQXJiaXRyYXJ5IGR1cmF0aW9ucyBmb3IgYmFzaWMvYWdlbmRhIHZpZXdzIHdpdGggdGhlIGB2aWV3c2Agb3B0aW9uIChbNjkyXSkKLSBTcGVjaWZ5IHZpZXctc3BlY2lmaWMgb3B0aW9ucyB1c2luZyB0aGUgYHZpZXdzYCBvcHRpb24uIGZpeGVzIFsyMjgzXQotIERlcHJlY2F0ZSB2aWV3LW9wdGlvbi1oYXNoZXMKLSBGb3JtYWxpemUgYW5kIGV4cG9zZSBWaWV3IEFQSSAoWzEwNTVdKQotIHVwZGF0ZUV2ZW50IG1ldGhvZCwgbW9yZSBpbnR1aXRpdmUgYmVoYXZpb3IuIGZpeGVzIFsyMTk0XQoKWzY5Ml06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NjkyClsyMjgzXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMjgzClsxMDU1XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0xMDU1ClsyMTk0XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMTk0CgoKdjIuMi4zICgyMDE0LTExLTI2KQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIHJlbW92ZUV2ZW50U291cmNlIHdpdGggR29vZ2xlIENhbGVuZGFyIG9iamVjdCBzb3VyY2UsIHdvdWxkIG5vdCByZW1vdmUgKFsyMzY4XSkKLSBFdmVudHMgd2l0aCBpbnZhbGlkIGVuZCBkYXRlcyBhcmUgc3RpbGwgYWNjZXB0ZWQgYW5kIHJlbmRlcmVkIChbMjM1MF0sIFsyMjM3XSwgWzIyOTZdKQotIEJ1ZyB3aGVuIHJlbmRlcmluZyBidXNpbmVzcyBob3VycyBhbmQgbmF2aWdhdGluZyBhd2F5IGZyb20gb3JpZ2luYWwgdmlldyAoWzIzNjVdKQotIExpbmtzIHRvIEdvb2dsZSBDYWxlbmRhciBldmVudHMgd2lsbCB1c2UgY3VycmVudCB0aW1lem9uZSAoWzIxMjJdKQotIEdvb2dsZSBDYWxlbmRhciBwbHVnaW4gd29ya3Mgd2l0aCB0aW1lem9uZSBuYW1lcyB0aGF0IGhhdmUgc3BhY2VzCi0gR29vZ2xlIENhbGVuZGFyIHBsdWdpbiBhY2NlcHRzIHBlcnNvbiBlbWFpbCBhZGRyZXNzZXMgYXMgY2FsZW5kYXIgSURzCi0gSW50ZXJuYWxseSB1c2UgbnVtZXJpYyBzb3J0IGluc3RlYWQgb2YgYWxwaGFudW1lcmljIHNvcnQgKFsyMzcwXSkKClsyMzY4XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMzY4ClsyMzUwXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMzUwClsyMjM3XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMjM3ClsyMjk2XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMjk2ClsyMzY1XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMzY1ClsyMTIyXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMTIyClsyMzcwXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMzcwCgoKdjIuMi4yICgyMDE0LTExLTE5KQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIEZpeGVzIHRvIEdvb2dsZSBDYWxlbmRhciBBUEkgVjMgY29kZQoJLSB3b3VsZG4ndCByZWNvZ25pemUgYSBsb25lLXN0cmluZyBHb29nbGUgQ2FsZW5kYXIgSUQgaWYgcGVyaW9kcyBiZWZvcmUgdGhlIEAgc3ltYm9sCgktIHJlbW92ZUV2ZW50U291cmNlIHdvdWxkbid0IHdvcmsgd2hlbiBnaXZlbiBhIEdvb2dsZSBDYWxlbmRhciBJRAoKCnYyLjIuMSAoMjAxNC0xMS0xOSkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBNaWdyYXRlIEdvb2dsZSBDYWxlbmRhciBwbHVnaW4gdG8gdXNlIFYzIG9mIHRoZSBBUEkgKFsxNTI2XSkKClsxNTI2XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0xNTI2CgoKdjIuMi4wICgyMDE0LTExLTE0KQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIEJhY2tncm91bmQgZXZlbnRzLiBFdmVudCBvYmplY3QncyBgcmVuZGVyaW5nYCBwcm9wZXJ0eSAoWzE0NF0sIFsxMjg2XSkKLSBgYnVzaW5lc3NIb3Vyc2Agb3B0aW9uIChbMTQ0XSkKLSBDb250cm9sbGluZyB3aGVyZSBldmVudHMgY2FuIGJlIGRyYWdnZWQvcmVzaXplZCBhbmQgc2VsZWN0aW9ucyBjYW4gZ28gKFszOTZdLCBbMTI4Nl0sIFsyMjUzXSkKCS0gYGV2ZW50T3ZlcmxhcGAsIGBzZWxlY3RPdmVybGFwYCwgYW5kIHNpbWlsYXIKCS0gYGV2ZW50Q29uc3RyYWludGAsIGBzZWxlY3RDb25zdHJhaW50YCwgYW5kIHNpbWlsYXIKLSBJbXByb3ZlbWVudHMgdG8gZHJhZ2dpbmcgYW5kIGRyb3BwaW5nIGV4dGVybmFsIGV2ZW50cyAoWzIwMDRdKQoJLSBBc3NvY2lhdGluZyB3aXRoIHJlYWwgZXZlbnQgZGF0YS4gdXNlZCB3aXRoIGBldmVudFJlY2VpdmVgCgktIEFzc29jaWF0aW5nIGEgYGR1cmF0aW9uYAotIFBlcmZvcm1hbmNlIGJvb3N0IGZvciBtb21lbnQgY3JlYXRpb24KCS0gQmUgYXdhcmUsIEZ1bGxDYWxlbmRhci1zcGVjaWZpYyBtZXRob2RzIG5vdyBhdHRhY2hlZCBkaXJlY3RseSB0byBnbG9iYWwgbW9tZW50LmZuCgktIEhlbHBzIHdpdGggW2lzc3VlIDIyNTldWzIyNTldCi0gUmVpbnRyb2R1Y2VkIGZvcmdvdHRlbiBgZHJvcEFjY2VwdGAgb3B0aW9uIChbMjMxMl0pCgpbMTQ0XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0xNDQKWzM5Nl06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9Mzk2ClsxMjg2XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0xMjg2ClsyMDA0XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMDA0ClsyMjUzXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMjUzClsyMjU5XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMjU5ClsyMzEyXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMzEyCgoKdjIuMS4xICgyMDE0LTA4LTI5KQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIHJlbW92ZUV2ZW50U291cmNlIG5vdCB3b3JraW5nIHdpdGggYXJyYXkgKFsyMjAzXSkKLSBtb3VzZW91dCBub3QgdHJpZ2dlcmVkIGFmdGVyIG1vdXNlb3Zlcit1cGRhdGVFdmVudCAoWzgyOV0pCi0gYWdlbmRhIGV2ZW50J3MgcmVuZGVyIHdpdGggbm8gPGE+IGhyZWYsIG5vdCBjbGlja2FibGUgKFsyMjYzXSkKClsyMjAzXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMjAzCls4MjldOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTgyOQpbMjI2M106IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjI2MwoKCnYyLjEuMCAoMjAxNC0wOC0yNSkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKTGFyZ2UgY29kZSByZWZhY3RvciB3aXRoIGJldHRlciBPT1AsIGJldHRlciBjb2RlIHJldXNlLCBhbmQgbW9yZSBjb21tZW50cy4KKipObyBtb3JlIHJlbGlhbmNlIG9uIGpRdWVyeSBVSSoqIGZvciBldmVudCBkcmFnZ2luZywgcmVzaXppbmcsIG9yIGFueXRoaW5nIGVsc2UuCgpTaWduaWZpY2FudCBjaGFuZ2VzIHRvIEhUTUwvQ1NTIHNrZWxldG9uOgotIExldmVyYWdlcyB0YWJsZXMgZm9yIGxpcXVpZCByZW5kZXJpbmcgb2YgZGF5cyBhbmQgZXZlbnRzLiBObyBjb3N0bHkgbWFudWFsIHJlcG9zaXRpb25pbmcgKFs4MDldKQotICoqQmFja3dhcmRzLWluY29tcGF0aWJpbGl0aWVzKio6CgktICoqTWFueSBjbGFzc05hbWVzIGhhdmUgY2hhbmdlZC4gQ3VzdG9tIENTUyB3aWxsIGxpa2VseSBuZWVkIHRvIGJlIGFkanVzdGVkLioqCgktIElFNyBkZWZpbml0ZWx5IG5vdCBzdXBwb3J0ZWQgYW55bW9yZQoJLSBJbiBgZXZlbnRSZW5kZXJgIGNhbGxiYWNrLCBgZWxlbWVudGAgd2lsbCBub3QgYmUgYXR0YWNoZWQgdG8gRE9NIHlldAoJLSBFdmVudHMgYXJlIHN0eWxlZCB0byBiZSBvbmUgbGluZSBieSBkZWZhdWx0IChbMTk5Ml0pLiBDYW4gYmUgdW5kb25lIHRocm91Z2ggY3VzdG9tIENTUywKCSAgYnV0IG5vdCByZWNvbW1lbmRlZCAobWlnaHQgZ2V0IGdhcHMgW2xpa2UgdGhpc11bMTExXSBpbiBjZXJ0YWluIHNpdHVhdGlvbnMpLgoKQSAibW9yZS4uLiIgbGluayB3aGVuIHRoZXJlIGFyZSB0b28gbWFueSBldmVudHMgb24gYSBkYXkgKFszMDRdKS4gV29ya3Mgd2l0aCBtb250aCBhbmQgYmFzaWMgdmlld3MKYXMgd2VsbCBhcyB0aGUgYWxsLWRheSBzZWN0aW9uIG9mIHRoZSBhZ2VuZGEgdmlld3MuIE5ldyBvcHRpb25zOgotIGBldmVudExpbWl0YC4gYSBudW1iZXIgb3IgYHRydWVgCi0gYGV2ZW50TGltaXRDbGlja2AuIHRoZSBgInBvcG92ZXJgIiB2YWx1ZSB3aWxsIHJldmVhbCBhbGwgZXZlbnRzIGluIGEgcmFpc2VkIHBhbmVsICh0aGUgZGVmYXVsdCkKLSBgZXZlbnRMaW1pdFRleHRgCi0gYGRheVBvcG92ZXJGb3JtYXRgCgpDaGFuZ2VzIHJlbGF0ZWQgdG8gaGVpZ2h0IGFuZCBzY3JvbGxiYXJzOgotIGBhc3BlY3RSYXRpb2AvYGhlaWdodGAvYGNvbnRlbnRIZWlnaHRgIHZhbHVlcyB3aWxsIGJlIGhvbm9yZWQgKm5vIG1hdHRlciB3aGF0KgoJLSBJZiB0b28gbWFueSBldmVudHMgY2F1c2luZyB0b28gbXVjaCB2ZXJ0aWNhbCBzcGFjZSwgc2Nyb2xsYmFycyB3aWxsIGJlIHVzZWQgKFs3MjhdKS4KCSAgVGhpcyBpcyBkZWZhdWx0IGJlaGF2aW9yIGZvciBtb250aCB2aWV3ICgqKmJhY2t3YXJkcy1pbmNvbXBhdGliaWxpdHkqKikKCS0gSWYgdG9vIGZldyBzbG90cyBpbiBhZ2VuZGEgdmlldywgdmlldyB3aWxsIHN0cmV0Y2ggdG8gYmUgdGhlIGNvcnJlY3QgaGVpZ2h0IChbMjE5Nl0pCi0gYCdhdXRvJ2AgdmFsdWUgZm9yIGBoZWlnaHRgL2Bjb250ZW50SGVpZ2h0YCBvcHRpb25zLiBJZiBjb250ZW50IGlzIHRvbyB0YWxsLCB0aGUgdmlldyB3aWxsCiAgdmVydGljYWxseSBzdHJldGNoIHRvIGFjY29tb2RhdGUgYW5kIG5vIHNjcm9sbGJhcnMgd2lsbCBiZSB1c2VkIChbNTIxXSkuCi0gVGFsbCB3ZWVrcyBpbiBtb250aCB2aWV3IHdpbGwgYm9ycm93IGhlaWdodCBmcm9tIG90aGVyIHdlZWtzIChbMjQzXSkKLSBBdXRvbWF0aWNhbGx5IHNjcm9sbCB0aGUgdmlldyB0aGVuIGRyYWdnaW5nL3Jlc2l6aW5nIGFuIGV2ZW50IChbMTAyNV0sIFsyMDc4XSkKLSBOZXcgYGZpeGVkV2Vla0NvdW50YCBvcHRpb24gdG8gZGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIHdlZWtzIGluIG1vbnRoIHZpZXcKCS0gU3VwZXJzZWRlcyBgd2Vla01vZGVgICgqKmRlcHJlY2F0ZWQqKikuIEluc3RlYWQsIHVzZSBhIGNvbWJpbmF0aW9uIG9mIGBmaXhlZFdlZWtDb3VudGAgYW5kCgkgIG9uZSBvZiB0aGUgaGVpZ2h0IG9wdGlvbnMsIHBvc3NpYmx5IHdpdGggYW4gYCdhdXRvJ2AgdmFsdWUKCk11Y2ggbmljZXIsIGdsaXRjaC1mcmVlIHJlbmRlcmluZyBvZiBjYWxlbmRhciAqZm9yIHByaW50ZXJzKiAoWzM1XSkuIFRoaW5ncyB5b3UgbWlnaHQgbm90IGV4cGVjdDoKLSBCdXR0b25zIHdpbGwgYmVjb21lIGhpZGRlbgotIEFnZW5kYSB2aWV3cyBkaXNwbGF5IGEgZmxhdCBsaXN0IG9mIGV2ZW50cyB3aGVyZSB0aGUgdGltZSBzbG90cyB3b3VsZCBiZQoKT3RoZXIgaXNzdWVzIHJlc29sdmVkIGFsb25nIHRoZSB3YXk6Ci0gU3BhY2Ugb24gcmlnaHQgc2lkZSBvZiBhZ2VuZGEgZXZlbnRzIGNvbmZpZ3VyYWJsZSB0aHJvdWdoIENTUyAoWzIwNF0pCi0gUHJvYmxlbSB3aXRoIHdpbmRvdyByZXNpemUgKFsyNTldKQotIEV2ZW50cyBzb3J0aW5nIHN0YXlzIGNvbnNpc3RlbnQgYWNyb3NzIHdlZWtzIChbNTEwXSkKLSBBZ2VuZGEncyBjb2x1bW5zIG1pc2FsaWduZWQgb24gd2lkZSBzY3JlZW5zIChbNTExXSkKLSBSdW4gYHNlbGVjdEhlbHBlcmAgdGhyb3VnaCBgZXZlbnRSZW5kZXJgIGNhbGxiYWNrcyAoWzYyOV0pCi0gS2V5Ym9hcmQgYWNjZXNzLCB0YWJiaW5nIChbNjM3XSkKLSBSdW4gcmVzaXppbmcgZXZlbnRzIHRocm91Z2ggYGV2ZW50UmVuZGVyYCAoWzcxNF0pCi0gUmVzaXplIGFuIGV2ZW50IHRvIGEgZGlmZmVyZW50IGRheSBpbiBhZ2VuZGEgdmlld3MgKFs3MzZdKQotIEFsbG93IHNlbGVjdGlvbiBhY3Jvc3MgZGF5cyBpbiBhZ2VuZGEgdmlld3MgKFs3NzhdKQotIE1vdXNlZW50ZXIgZGVsZWdhdGVkIGV2ZW50IG5vdCB3b3JraW5nIG9uIGV2ZW50IGVsZW1lbnRzIChbOTM2XSkKLSBBZ2VuZGEgZXZlbnQgZHJhZ2dpbmcsIHNuYXBwaW5nIHRvIGRpZmZlcmVudCBjb2x1bW5zIGlzIGVycmF0aWMgKFsxMTAxXSkKLSBBbmRyb2lkIGJyb3dzZXIgY3V0cyBvZmYgRGF5IHZpZXcgYXQgOCBQTSB3aXRoIG5vIHNjcm9sbCBiYXIgKFsxMjAzXSkKLSBEb24ndCBmaXJlIGBldmVudE1vdXNlb3ZlcmAvYGV2ZW50TW91c2VvdXRgIHdoaWxlIGRyYWdnaW5nL3Jlc2l6aW5nIChbMTI5N10pCi0gQ3VzdG9taXplIHRoZSByZXNpemUgaGFuZGxlIHRleHQgKCI9IikgKFsxMzI2XSkKLSBJZiBhZ2VuZGEgZXZlbnQgaXMgdG9vIHNob3J0LCBkb24ndCBvdmVyd3JpdGUgYC5mYy1ldmVudC10aW1lYCAoWzE3MDBdKQotIFpvb21pbmcgY2FsZW5kYXIgY2F1c2VzIGV2ZW50cyB0byBtaXNhbGlnbiAoWzE5OTZdKQotIEV2ZW50IGRlc3Ryb3kgY2FsbGJhY2sgb24gZXZlbnQgcmVtb3ZhbCAoWzIwMTddKQotIEFnZW5kYSB2aWV3cywgd2hlbiBSVEwsIHNob3VsZCBoYXZlIGF4aXMgb24gcmlnaHQgKFsyMTMyXSkKLSBNYWtlIGhlYWRlciBidXR0b25zIG1vcmUgYWNjZXNzaWJpbGUgKFsyMTUxXSkKLSBkYXlTZWxlY3Rpb25Nb3VzZWRvd24gc2hvdWxkIGludGVycHJldCBPU1ggY3RybCtjbGljayBhcyBhIHJpZ2h0IG1vdXNlIGNsaWNrIChbMjE2OV0pCi0gQmVzdCB3YXkgdG8gZGlzcGxheSB0aW1lIHRleHQgb24gbXVsdGktZGF5IGV2ZW50cyAqd2l0aCB0aW1lcyogKFsyMTcyXSkKLSBFbGltaW5hdGUgdGFibGUgdXNlIGZvciBoZWFkZXIgbGF5b3V0IChbMjE4Nl0pCi0gRXZlbnQgZGVsZWdhdGlvbiB1c2VkIGZvciBldmVudC1yZWxhdGVkIGNhbGxiYWNrcyAobGlrZSBgZXZlbnRDbGlja2ApLiBTcGVlZGllci4KClszNV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MzUKWzIwNF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjA0ClsyNDNdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTI0MwpbMjU5XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yNTkKWzMwNF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MzA0Cls1MTBdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTUxMApbNTExXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD01MTEKWzUyMV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NTIxCls2MjldOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTYyOQpbNjM3XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD02MzcKWzcxNF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NzE0Cls3MjhdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTcyOApbNzM2XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD03MzYKWzc3OF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9Nzc4Cls4MDldOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTgwOQpbOTM2XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD05MzYKWzEwMjVdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTEwMjUKWzExMDFdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTExMDEKWzEyMDNdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTEyMDMKWzEyOTddOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTEyOTcKWzEzMjZdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTEzMjYKWzE3MDBdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTE3MDAKWzE5OTJdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTE5OTIKWzE5OTZdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTE5OTYKWzIwMTddOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIwMTcKWzIwNzhdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIwNzgKWzIxMzJdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIxMzIKWzIxNTFdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIxNTEKWzIxNjldOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIxNjkKWzIxNzJdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIxNzIKWzIxODZdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIxODYKWzIxOTZdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIxOTYKWzExMV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MTExCgoKdjIuMC4zICgyMDE0LTA4LTE1KQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIG1vbWVudC0yLjguMSBjb21wYXRpYmlsaXR5IChbMjIyMV0pCi0gcmVsYXRpdmUgcGF0aCBpbiBib3dlci5qc29uIChbUFIgMTE3XSkKLSB1cGdyYWRlZCBqcXVlcnktdWkgYW5kIG1pc2MgZGV2IGRlcGVuZGVuY2llcwoKWzIyMjFdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIyMjEKW1BSIDExN106IGh0dHBzOi8vZ2l0aHViLmNvbS9hcnNoYXcvZnVsbGNhbGVuZGFyL3B1bGwvMTc3CgoKdjIuMC4yICgyMDE0LTA2LTI0KQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIGJ1ZyB3aXRoIHBlcnNpc3RpbmcgYWRkRXZlbnRTb3VyY2UgY2FsbHMgKFsyMTkxXSkKLSBidWcgd2l0aCBwZXJzaXN0aW5nIHJlbW92ZUV2ZW50cyBjYWxscyB3aXRoIGFuIGFycmF5IHNvdXJjZSAoWzIxODddKQotIGJ1ZyB3aXRoIHJlbW92ZUV2ZW50cyBtZXRob2Qgd2hlbiBjYWxsZWQgd2l0aCAwIHJlbW92ZXMgYWxsIGV2ZW50cyAoWzIwODJdKQoKWzIxOTFdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIxOTEKWzIxODddOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIxODcKWzIwODJdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIwODIKCgp2Mi4wLjEgKDIwMTQtMDYtMTUpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gYGRlbHRhYCBwYXJhbWV0ZXJzIHJlaW50cm9kdWNlZCBpbiBgZXZlbnREcm9wYCBhbmQgYGV2ZW50UmVzaXplYCBoYW5kbGVycyAoWzIxNTZdKQogIC0gKipOb3RlKio6IHRoaXMgY2hhbmdlcyB0aGUgYXJndW1lbnQgb3JkZXIgZm9yIGByZXZlcnRGdW5jYAotIHdyb25nZnVsbHkgdHJpZ2dlcmluZyBhIHdpbmRvd1Jlc2l6ZSB3aGVuIHJlc2l6aW5nIGFuIGFnZW5kYSB2aWV3IGV2ZW50IChbMTExNl0pCi0gYHRoaXNgIHZhbHVlcyBpbiBldmVudCBkcmFnLW4tZHJvcC9yZXNpemUgaGFuZGxlcnMgY29uc2lzdGVudGx5IHRoZSBET00gbm9kZSAoWzExNzddKQotIGBkaXNwbGF5RXZlbnRFbmRgIC0gdjIgd29ya2Fyb3VuZCB0byBmb3JjZSBkaXNwbGF5IG9mIGFuIGVuZCB0aW1lIChbMjA5MF0pCi0gZG9uJ3QgbW9kaWZ5IHBhc3NlZC1pbiBldmVudFNvdXJjZSBpdGVtcyAoWzk1NF0pCi0gZGVzdHJveSBtZXRob2Qgbm93IHJlbW92ZXMgZmMtbHRyIGNsYXNzIChbMjAzM10pCi0gd2Vla3Mgb2YgbGFzdC9uZXh0IG1vbnRoIHN0aWxsIHZpc2libGUgd2hlbiB3ZWVrZW5kcyBhcmUgaGlkZGVuIChbMjA5NV0pCi0gZml4ZWQgbWVtb3J5IGxlYWsgd2hlbiBkZXN0cm95aW5nIGNhbGVuZGFyIHdpdGggc2VsZWN0YWJsZS9kcm9wcGFibGUgKFsyMTM3XSkKLSBJY2VsYW5kaWMgbGFuZ3VhZ2UgKFsyMTgwXSkKLSBCYWhhc2EgSW5kb25lc2lhIGxhbmd1YWdlIChbUFIgMTcyXSkKClsxMTE2XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0xMTE2ClsxMTc3XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0xMTc3ClsyMDkwXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMDkwCls5NTRdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTk1NApbMjAzM106IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjAzMwpbMjA5NV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjA5NQpbMjEzN106IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjEzNwpbMjE1Nl06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjE1NgpbMjE4MF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjE4MApbUFIgMTcyXTogaHR0cHM6Ly9naXRodWIuY29tL2Fyc2hhdy9mdWxsY2FsZW5kYXIvcHVsbC8xNzIKCgp2Mi4wLjAgKDIwMTQtMDYtMDEpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCkludGVybmF0aW9uYWxpemF0aW9uIHN1cHBvcnQsIHRpbWV6b25lIHN1cHBvcnQsIGFuZCBbTW9tZW50SlNdIGludGVncmF0aW9uLiBFeHRlbnNpdmUgY2hhbmdlcywgbWFueQpvZiB3aGljaCBhcmUgYmFja3dhcmRzIGluY29tcGF0aWJsZS4KCltGdWxsIGxpc3Qgb2YgY2hhbmdlc11bVXBncmFkaW5nLXRvLXYyXSB8IFtBZmZlY3RlZCBJc3N1ZXNdW0RhdGUtTWlsZXN0b25lXQoKQW4gYXV0b21hdGVkIHRlc3RpbmcgZnJhbWV3b3JrIGhhcyBiZWVuIHNldCB1cCAoW0thcm1hXSArIFtKYXNtaW5lXSkgYW5kIHRlc3RzIGhhdmUgYmVlbiB3cml0dGVuCndoaWNoIGNvdmVyIGFib3V0IGhhbGYgb2YgRnVsbENhbGVuZGFyJ3MgZnVuY3Rpb25hbGl0eS4gU3BlY2lhbCB0aGFua3MgdG8gQGluY3JlLWQsIEB2aWRiaW5hLCBhbmQKQHNpcnJvY2NvIGZvciB0aGUgaGVscC4KCkluIGFkZGl0aW9uLCB0aGUgbWFpbiBkZXZlbG9wbWVudCByZXBvIGhhcyBiZWVuIHJlcHVycG9zZWQgdG8gYWxzbyBpbmNsdWRlIHRoZSBidWlsdCBkaXN0cmlidXRhYmxlCkpTL0NTUyBmb3IgdGhlIHByb2plY3QgYW5kIHdpbGwgc2VydmUgYXMgdGhlIG5ldyBbQm93ZXJdIGVuZHBvaW50LgoKW01vbWVudEpTXTogaHR0cDovL21vbWVudGpzLmNvbS8KW1VwZ3JhZGluZy10by12Ml06IGh0dHA6Ly9hcnNoYXcuY29tL2Z1bGxjYWxlbmRhci93aWtpL1VwZ3JhZGluZy10by12Mi8KW0RhdGUtTWlsZXN0b25lXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2xpc3Q/Y2FuPTEmcT1taWxlc3RvbmUlM0RkYXRlCltLYXJtYV06IGh0dHA6Ly9rYXJtYS1ydW5uZXIuZ2l0aHViLmlvLwpbSmFzbWluZV06IGh0dHA6Ly9qYXNtaW5lLmdpdGh1Yi5pby8KW0Jvd2VyXTogaHR0cDovL2Jvd2VyLmlvLwoKCnYxLjYuNCAoMjAxMy0wOS0wMSkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBiZXR0ZXIgYWxnb3JpdGhtIGZvciBwb3NpdGlvbmluZyB0aW1lZCBhZ2VuZGEgZXZlbnRzIChbMTExNV0pCi0gYHNsb3RFdmVudE92ZXJsYXBgIG9wdGlvbiB0byB0d2VhayB0aW1lZCBhZ2VuZGEgZXZlbnQgb3ZlcmxhcHBpbmcgKFsyMThdKQotIHNlbGVjdGlvbiBidWcgd2hlbiBzbG90IGhlaWdodCBpcyBjdXN0b21pemVkIChbMTAzNV0pCi0gc3VwcGx5IHZpZXcgYXJndW1lbnQgaW4gYGxvYWRpbmdgIGNhbGxiYWNrIChbMTAxOF0pCi0gZml4ZWQgd2VlayBudW1iZXIgbm90IGRpc3BsYXlpbmcgaW4gYWdlbmRhIHZpZXdzIChbMTk1MV0pCi0gZml4ZWQgZnVsbENhbGVuZGFyIG5vdCBpbml0aWFsaXppbmcgd2l0aCBubyBvcHRpb25zIChbMTM1Nl0pCi0gTlBNJ3MgYHBhY2thZ2UuanNvbmAsIG5vIG1vcmUgd2FybmluZ3Mgb3IgZXJyb3JzIChbMTc2Ml0pCi0gYnVpbGRpbmcgdGhlIGJvd2VyIGNvbXBvbmVudCBzaG91bGQgb3V0cHV0IGBib3dlci5qc29uYCBpbnN0ZWFkIG9mIGBjb21wb25lbnQuanNvbmAgKFtQUiAxMjVdKQotIHVzZSBib3dlciBpbnRlcm5hbGx5IGZvciBmZXRjaGluZyBuZXcgdmVyc2lvbnMgb2YgalF1ZXJ5IGFuZCBqUXVlcnkgVUkKClsxMTE1XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0xMTE1ClsyMThdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIxOApbMTAzNV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MTAzNQpbMTAxOF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MTAxOApbMTk1MV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MTk1MQpbMTM1Nl06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MTM1NgpbMTc2Ml06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MTc2MgpbUFIgMTI1XTogaHR0cHM6Ly9naXRodWIuY29tL2Fyc2hhdy9mdWxsY2FsZW5kYXIvcHVsbC8xMjUKCgp2MS42LjMgKDIwMTMtMDgtMTApCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gYHZpZXdSZW5kZXJgIGNhbGxiYWNrIChbUFIgMTVdKQotIGB2aWV3RGVzdHJveWAgY2FsbGJhY2sgKFtQUiAxNV0pCi0gYGV2ZW50RGVzdHJveWAgY2FsbGJhY2sgKFtQUiAxMTFdKQotIGBoYW5kbGVXaW5kb3dSZXNpemVgIG9wdGlvbiAoW1BSIDU0XSkKLSBgZXZlbnRTdGFydEVkaXRhYmxlYC9gc3RhcnRFZGl0YWJsZWAgb3B0aW9ucyAoW1BSIDQ5XSkKLSBgZXZlbnREdXJhdGlvbkVkaXRhYmxlYC9gZHVyYXRpb25FZGl0YWJsZWAgb3B0aW9ucyAoW1BSIDQ5XSkKLSBzcGVjaWZ5IGZ1bmN0aW9uIGZvciBgJC5hamF4YCBgZGF0YWAgcGFyYW1ldGVyIGZvciBKU09OIGV2ZW50IHNvdXJjZXMgKFtQUiA1OV0pCi0gZml4ZWQgYnVnIHdpdGggYWdlbmRhIGV2ZW50IGRyb3BwaW5nIGluIHdyb25nIGNvbHVtbiAoW1BSIDU1XSkKLSBlYXNpZXIgZXZlbnQgZWxlbWVudCB6LWluZGV4IGN1c3RvbWl6YXRpb24gKFtQUiA1OF0pCi0gY2xhc3NOYW1lcyBvbiBwYXN0L2Z1dHVyZSBkYXlzIChbUFIgODhdKQotIGFsbG93IGBudWxsYC9gdW5kZWZpbmVkYCBldmVudCB0aXRsZXMgKFtQUiA4NF0pCi0gc21hbGwgb3B0aW1pemUgZm9yIGFnZW5kYSBldmVudCByZW5kZXJpbmcgKFtQUiA1Nl0pCi0gZGVwcmVjYXRlZDoKCS0gYHZpZXdEaXNwbGF5YAoJLSBgZGlzYWJsZURyYWdnaW5nYAoJLSBgZGlzYWJsZVJlc2l6aW5nYAotIGJ1bmRsZWQgd2l0aCBsYXRlc3QgalF1ZXJ5ICgxLjEwLjIpIGFuZCBqUXVlcnkgVUkgKDEuMTAuMykKCltQUiAxNV06IGh0dHBzOi8vZ2l0aHViLmNvbS9hcnNoYXcvZnVsbGNhbGVuZGFyL3B1bGwvMTUKW1BSIDExMV06IGh0dHBzOi8vZ2l0aHViLmNvbS9hcnNoYXcvZnVsbGNhbGVuZGFyL3B1bGwvMTExCltQUiA1NF06IGh0dHBzOi8vZ2l0aHViLmNvbS9hcnNoYXcvZnVsbGNhbGVuZGFyL3B1bGwvNTQKW1BSIDQ5XTogaHR0cHM6Ly9naXRodWIuY29tL2Fyc2hhdy9mdWxsY2FsZW5kYXIvcHVsbC80OQpbUFIgNTldOiBodHRwczovL2dpdGh1Yi5jb20vYXJzaGF3L2Z1bGxjYWxlbmRhci9wdWxsLzU5CltQUiA1NV06IGh0dHBzOi8vZ2l0aHViLmNvbS9hcnNoYXcvZnVsbGNhbGVuZGFyL3B1bGwvNTUKW1BSIDU4XTogaHR0cHM6Ly9naXRodWIuY29tL2Fyc2hhdy9mdWxsY2FsZW5kYXIvcHVsbC81OApbUFIgODhdOiBodHRwczovL2dpdGh1Yi5jb20vYXJzaGF3L2Z1bGxjYWxlbmRhci9wdWxsLzg4CltQUiA4NF06IGh0dHBzOi8vZ2l0aHViLmNvbS9hcnNoYXcvZnVsbGNhbGVuZGFyL3B1bGwvODQKW1BSIDU2XTogaHR0cHM6Ly9naXRodWIuY29tL2Fyc2hhdy9mdWxsY2FsZW5kYXIvcHVsbC81NgoKCnYxLjYuMiAoMjAxMy0wNy0xOCkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBgaGlkZGVuRGF5c2Agb3B0aW9uIChbNjg2XSkKLSBidWdmaXg6IHdoZW4gYGV2ZW50UmVuZGVyYCByZXR1cm5zIGBmYWxzZWAsIGluY29ycmVjdCBzdGFja2luZyBvZiBldmVudHMgKFs3NjJdKQotIGJ1Z2ZpeDogY291bGRuJ3QgY2hhbmdlIGBldmVudC5iYWNrZ3JvdW5kSW1hZ2VgIHdoZW4gY2FsbGluZyBgdXBkYXRlRXZlbnRgICh0aHggQHN0ZXBoZW5oYXJyaXMpCgpbNjg2XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD02ODYKWzc2Ml06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NzYyCgoKdjEuNi4xICgyMDEzLTA0LTE0KQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIGZpeGVkIGV2ZW50IGlubmVyIGNvbnRlbnQgb3ZlcmZsb3cgYnVnIChbMTc4M10pCi0gZml4ZWQgdGFibGUgaGVhZGVyIGNsYXNzTmFtZSBidWcgWzE3NzJdCi0gcmVtb3ZlZCB0ZXh0LXNoYWRvdyBvbiBldmVudHMgKGJldHRlciBmb3IgZ2VuZXJhbCB1c2UsIHRoeCBAdGtyb3RvZmYpCgpbMTc4M106IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MTc4MwpbMTc3Ml06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MTc3MgoKCnYxLjYuMCAoMjAxMy0wMy0xOCkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSB2aXN1YWwgZmFjZWxpZnQsIHdpdGggYm9vdHN0cmFwLWluc3BpcmVkIGJ1dHRvbnMgYW5kIGNvbG9ycwotIHNpbXBsaWZpZWQgSFRNTC9DU1MgZm9yIGV2ZW50cyBhbmQgYnV0dG9ucwotIGBkYXlSZW5kZXJgLCBmb3IgbW9kaWZ5aW5nIGEgZGF5IGNlbGwgKFsxOTFdLCB0aHggQGFsdGhhdXMpCi0gd2VlayBudW1iZXJzIG9uIHNpZGUgb2YgY2FsZW5kYXIgKFsyOTVdKQoJLSBgd2Vla051bWJlcmAKCS0gYHdlZWtOdW1iZXJDYWxjdWxhdGlvbmAKCS0gYHdlZWtOdW1iZXJUaXRsZWAKCS0gYFdgIGZvcm1hdHRpbmcgdmFyaWFibGUKLSBmaW5lciBzbmFwcGluZyBncmFudWxhcml0eSBmb3IgYWdlbmRhIHZpZXcgZXZlbnRzIChbNDk1XSwgdGh4IEBtcy1kb29kbGUtY29tKQotIGBldmVudEFmdGVyQWxsUmVuZGVyYCAoWzc1M10sIHRoeCBAcGRyYWtld2ViKQotIGBldmVudERhdGFUcmFuc2Zvcm1gICh0aHggQGpvZXlzcG8pCi0gYGRhdGEtZGF0ZWAgYXR0cmlidXRlcyBvbiBjZWxscyAodGh4IEBKYWUpCi0gZXhwb3NlIGAkLmZ1bGxDYWxlbmRhci5kYXRlRm9ybWF0dGVyc2AKLSB3aGVuIGNsaWNraW5nIGZhc3Qgb24gYnV0dG9ucywgcHJldmVudCB0ZXh0IHNlbGVjdGlvbgotIGJ1bmRsZWQgd2l0aCBsYXRlc3QgalF1ZXJ5ICgxLjkuMSkgYW5kIGpRdWVyeSBVSSAoMS4xMC4yKQotIEdydW50L0x1bWJhciBidWlsZCBzeXN0ZW0gZm9yIGludGVybmFsIGRldmVsb3BtZW50Ci0gYnVpbGQgZm9yIEJvd2VyIHBhY2thZ2UgbWFuYWdlcgotIGJ1aWxkIGZvciBqUXVlcnkgcGx1Z2luIHNpdGUKClsxOTFdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTE5MQpbMjk1XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yOTUKWzQ5NV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NDk1Cls3NTNdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTc1MwoKCnYxLjUuNCAoMjAxMi0wOS0wNSkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBtYWRlIGNvbXBhdGlibGUgd2l0aCBqUXVlcnkgMS44LiogKHRoeCBAYXJjaGFlcm9uKQotIGJ1bmRsZWQgd2l0aCBqUXVlcnkgMS44LjEgYW5kIGpRdWVyeSBVSSAxLjguMjMKCgp2MS41LjMgKDIwMTItMDItMDYpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gZml4ZWQgZHJhZ2dpbmcgaXNzdWUgd2l0aCBqUXVlcnkgVUkgMS44LjE2IChbMTE2OF0pCi0gYnVuZGxlZCB3aXRoIGpRdWVyeSAxLjcuMSBhbmQgalF1ZXJ5IFVJIDEuOC4xNwoKWzExNjhdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTExNjgKCgp2MS41LjIgKDIwMTEtMDgtMjEpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gY29ycmVjdGx5IHByb2Nlc3MgVVRDICJaIiBJU084NjAxIGRhdGUgc3RyaW5ncyAoWzc1MF0pCgpbNzUwXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD03NTAKCgp2MS41LjEgKDIwMTEtMDQtMDkpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gbW9yZSBmbGV4aWJsZSBJU084NjAxIGRhdGUgcGFyc2luZyAoWzgxNF0pCi0gbW9yZSBmbGV4aWJsZSBwYXJzaW5nIG9mIFVOSVggdGltZXN0YW1wcyAoWzgyNl0pCi0gRnVsbENhbGVuZGFyIG5vdyBidWlsZGFibGUgZnJvbSBzb3VyY2Ugb24gYSBNYWMgKFs3OTVdKQotIEZ1bGxDYWxlbmRhciBRQSdkIGluIEZGNCAoWzg4M10pCi0gdXBncmFkZWQgdG8galF1ZXJ5IDEuNS4yICh3aGljaCBzdXBwb3J0cyBJRTkpIGFuZCBqUXVlcnkgVUkgMS44LjExCgpbODE0XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD04MTQKWzgyNl06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9ODI2Cls3OTVdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTc5NQpbODgzXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD04ODMKCgp2MS41ICgyMDExLTAzLTE5KQotLS0tLS0tLS0tLS0tLS0tLQoKLSBzbGlja2VyIGRlZmF1bHQgc3R5bGluZyBmb3IgYnV0dG9ucwotIHJld29ya2VkIGEgbG90IG9mIHRoZSBjYWxlbmRhcidzIEhUTUwgYW5kIGFjY29tcGFueWluZyBDU1MgKHNvbHZlcyBbMzI3XSBhbmQgWzM5NV0pCi0gbW9yZSBwcmludGVyLWZyaWVuZGx5IChmdWxsY2FsZW5kYXItcHJpbnQuY3NzKQotIGZ1bGxjYWxlbmRhciBub3cgaW5oZXJpdHMgc3R5bGVzIGZyb20ganF1ZXJ5LXVpIHRoZW1lcyBkaWZmZXJlbnRseS4KICBzdHlsZXMgZm9yIGJ1dHRvbnMgYXJlIGRpc3RpbmN0IGZyb20gc3R5bGVzIGZvciBjYWxlbmRhciBjZWxscy4KICAoc29sdmVzIFsyOTldKQotIGNhbiBub3cgY29sb3IgZXZlbnRzIHRocm91Z2ggRnVsbENhbGVuZGFyIG9wdGlvbnMgYW5kIEV2ZW50LU9iamVjdCBwcm9wZXJ0aWVzIChbMTE3XSkKICBUSElTIElTIE5PVyBUSEUgUFJFRkVSUkVEIE1FVEhPRCBPRiBDT0xPUklORyBFVkVOVFMgKGFzIG9wcG9zZWQgdG8gdXNpbmcgY2xhc3NOYW1lIGFuZCBDU1MpCgktIEZ1bGxDYWxlbmRhciBvcHRpb25zOgoJCS0gZXZlbnRDb2xvciAoY2hhbmdlcyBib3RoIGJhY2tncm91bmQgYW5kIGJvcmRlcikKCQktIGV2ZW50QmFja2dyb3VuZENvbG9yCgkJLSBldmVudEJvcmRlckNvbG9yCgkJLSBldmVudFRleHRDb2xvcgoJLSBFdmVudC1PYmplY3Qgb3B0aW9uczoKCQktIGNvbG9yIChjaGFuZ2VzIGJvdGggYmFja2dyb3VuZCBhbmQgYm9yZGVyKQoJCS0gYmFja2dyb3VuZENvbG9yCgkJLSBib3JkZXJDb2xvcgoJCS0gdGV4dENvbG9yCi0gY2FuIG5vdyBzcGVjaWZ5IGFuIGV2ZW50IHNvdXJjZSBhcyBhbiAqb2JqZWN0KiB3aXRoIGEgYHVybGAgcHJvcGVydHkgKGpzb24gZmVlZCkgb3IKICBhbiBgZXZlbnRzYCBwcm9wZXJ0eSAoZnVuY3Rpb24gb3IgYXJyYXkpIHdpdGggYWRkaXRpb25hbCBwcm9wZXJ0aWVzIHRoYXQgd2lsbAogIGJlIGFwcGxpZWQgdG8gdGhlIGVudGlyZSBldmVudCBzb3VyY2U6CgktIGNvbG9yIChjaGFuZ2VzIGJvdGggYmFja2dyb3VuZCBhbmQgYm9yZGVyKQoJLSBiYWNrZ3JvdWRDb2xvcgoJLSBib3JkZXJDb2xvcgoJLSB0ZXh0Q29sb3IKCS0gY2xhc3NOYW1lCgktIGVkaXRhYmxlCgktIGFsbERheURlZmF1bHQKCS0gaWdub3JlVGltZXpvbmUKCS0gc3RhcnRQYXJhbSAoZm9yIGEgZmVlZCkKCS0gZW5kUGFyYW0gICAoZm9yIGEgZmVlZCkKCS0gQU5ZIE9GIFRIRSBKUVVFUlkgJC5hamF4IE9QVElPTlMKCSAgYWxsb3dzIGZvciBlYXNpbHkgY2hhbmdpbmcgZnJvbSBHRVQgdG8gUE9TVCBhbmQgc2VuZGluZyBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgKFszODZdKQoJICBhbGxvd3MgZm9yIGVhc2lseSBhdHRhY2hpbmcgYWpheCBoYW5kbGVycyBzdWNoIGFzIGBlcnJvcmAgKFs3NTRdKQoJICBhbGxvd3MgZm9yIHR1cm5pbmcgY2FjaGluZyBvbiAoWzM1NV0pCi0gR29vZ2xlIENhbGVuZGFyIGZlZWRzIGFyZSBub3cgc3BlY2lmaWVkIGRpZmZlcmVudGx5OgoJLSBzcGVjaWZ5IGEgc2ltcGxlIHN0cmluZyBvZiB5b3VyIGZlZWQncyBVUkwKCS0gc3BlY2lmeSBhbiAqb2JqZWN0KiB3aXRoIGEgYHVybGAgcHJvcGVydHkgb2YgeW91ciBmZWVkJ3MgVVJMLgoJICB5b3UgY2FuIGluY2x1ZGUgYW55IG9mIHRoZSBuZXcgRXZlbnQtU291cmNlIG9wdGlvbnMgaW4gdGhpcyBvYmplY3QuCgktIHRoZSBvbGQgYCQuZnVsbENhbGVuZGFyLmdjYWxGZWVkYCBtZXRob2Qgc3RpbGwgd29ya3MKLSBubyBtb3JlIElFNyBTU0wgcG9wdXAgKFs1MDRdKQotIHJlbW92ZSBgY2FjaGVQYXJhbWAgLSB1c2UganNvbiBldmVudCBzb3VyY2UgYGNhY2hlYCBvcHRpb24gaW5zdGVhZAotIGxhdGVzdCBqcXVlcnkvanF1ZXJ5LXVpCgpbMzI3XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0zMjcKWzM5NV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9Mzk1ClsyOTldOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTI5OQpbMTE3XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0xMTcKWzM4Nl06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9Mzg2Cls3NTRdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTc1NApbMzU1XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0zNTUKWzUwNF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NTA0CgoKdjEuNC4xMSAoMjAxMS0wMi0yMikKLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gZml4ZWQgcmVyZW5kZXJFdmVudHMgYnVnIChbNzkwXSkKLSBmaXhlZCBidWcgd2l0aCBmYXVsdHkgZHJhZ2dpbmcgb2YgZXZlbnRzIGZyb20gYWxsLWRheSBzbG90IGluIGFnZW5kYSB2aWV3cwotIGJ1bmRsZWQgd2l0aCBqcXVlcnkgMS41IGFuZCBqcXVlcnktdWkgMS44LjkKCls3OTBdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTc5MAoKCnYxLjQuMTAgKDIwMTEtMDEtMDIpCi0tLS0tLS0tLS0tLS0tLS0tLS0tCgotIGZpeGVkIGJ1ZyB3aXRoIHJlc2l6aW5nIGV2ZW50IHRvIGRpZmZlcmVudCB3ZWVrIGluIDUtZGF5IG1vbnRoIHZpZXcgKFs3NDBdKQotIGZpeGVkIGJ1ZyB3aXRoIGV2ZW50cyBub3Qgc3RpY2tpbmcgYWZ0ZXIgYSByZW1vdmVFdmVudHMgY2FsbCAoWzc1N10pCi0gZml4ZWQgYnVnIHdpdGggdW5kZXJseWluZyBwYXJzZVRpbWUgbWV0aG9kLCBhbmQgb3RoZXIgdXNlcyBvZiBwYXJzZUludCAoWzY4OF0pCgpbNzQwXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD03NDAKWzc1N106IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NzU3Cls2ODhdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTY4OAoKCnYxLjQuOSAoMjAxMC0xMS0xNikKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBuZXcgYWxnb3JpdGhtIGZvciB2ZXJ0aWNhbGx5IHN0YWNraW5nIGV2ZW50cyAoWzExMV0pCi0gcmVzaXppbmcgYW4gZXZlbnQgdG8gYSBkaWZmZXJlbnQgd2VlayAoWzMwNl0pCi0gYnVnOiBzb21lIGV2ZW50cyBub3QgcmVuZGVyZWQgd2l0aCBjb25zZWN1dGl2ZSBjYWxscyB0byBhZGRFdmVudFNvdXJjZSAoWzY3OV0pCgpbMTExXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0xMTEKWzMwNl06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MzA2Cls2NzldOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTY3OQoKCnYxLjQuOCAoMjAxMC0xMC0xNikKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBpZ25vcmVUaW1lem9uZSBvcHRpb24gKHNldCB0byBgZmFsc2VgIHRvIHByb2Nlc3MgVVRDIG9mZnNldHMgaW4gSVNPODYwMSBkYXRlcykKLSBidWdmaXhlcwoJLSBldmVudCByZWZldGNoaW5nIG5vdCBiZWluZyBjYWxsZWQgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zIChbNDE3XSwgWzU1NF0pCgktIGV2ZW50IHJlZmV0Y2hpbmcgYmVpbmcgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucyAoWzU4Nl0sIFs2MTZdKQoJLSBzZWxlY3Rpb24gY2Fubm90IGJlIHRyaWdnZXJlZCBieSByaWdodCBtb3VzZSBidXR0b24gKFs1NThdKQoJLSBhZ2VuZGEgdmlldyBsZWZ0IGF4aXMgc2l6ZWQgaW5jb3JyZWN0bHkgKFs0NjVdKQoJLSBJRSBqcyBlcnJvciB3aGVuIGNhbGVuZGFyIGlzIHRvbyBuYXJyb3cgKFs1MTddKQoJLSBhZ2VuZGEgdmlldyBsb29rcyBzdHJhbmdlIHdoZW4gbm8gc2Nyb2xsYmFycyAoWzIzNV0pCgktIGltcHJvdmVkIHBhcnNpbmcgb2YgSVNPODYwMSBkYXRlcyB3aXRoIFVUQyBvZmZzZXRzCi0gJC5mdWxsQ2FsZW5kYXIudmVyc2lvbgotIGFuIGludGVybmFsIHJlZmFjdG9yIG9mIHRoZSBjb2RlLCBmb3IgZWFzaWVyIGZ1dHVyZSBkZXZlbG9wbWVudCBhbmQgbW9kdWxhcml0eQoKWzQxN106IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NDE3Cls1NTRdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTU1NApbNTg2XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD01ODYKWzYxNl06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NjE2Cls1NThdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTU1OApbNDY1XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD00NjUKWzUxN106IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NTE3ClsyMzVdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIzNQoKCnYxLjQuNyAoMjAxMC0wNy0wNSkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSAiZHJvcHBpbmciIGV4dGVybmFsIG9iamVjdHMgb250byB0aGUgY2FsZW5kYXIKCS0gZHJvcHBhYmxlIChib29sZWFuLCB0byB0dXJuIG9uL29mZikKCS0gZHJvcEFjY2VwdCAodG8gZmlsdGVyIHdoaWNoIGV2ZW50cyB0aGUgY2FsZW5kYXIgd2lsbCBhY2NlcHQpCgktIGRyb3AgKHRyaWdnZXIpCi0gc2VsZWN0YWJsZSBvcHRpb25zIGNhbiBub3cgYmUgc3BlY2lmaWVkIHdpdGggYSBWaWV3IE9wdGlvbiBIYXNoCi0gYnVnZml4ZXMKCS0gZHJhZ2dlZCAmIHJldmVydGVkIGV2ZW50cyBoYXZpbmcgd3JvbmcgdGltZSB0ZXh0IChbNDA2XSkKCS0gYnVnIHJlbmRlcmluZyBldmVudHMgdGhhdCBoYXZlIGFuIGVuZHRpbWUgd2l0aCBzZWNvbmRzLCBidXQgbm8gaG91cnMvbWludXRlcyAoWzQ3N10pCgktIGdvdG9EYXRlIGRhdGUgb3ZlcmZsb3cgYnVnIChbNDI5XSkKCS0gd3JvbmcgZGF0ZSByZXBvcnRlZCB3aGVuIGNsaWNraW5nIG9uIGVkZ2Ugb2YgbGFzdCBjb2x1bW4gaW4gYWdlbmRhIHZpZXdzIFs0MTJdCi0gc3VwcG9ydCBuZXdsaW5lcyBpbiBldmVudCB0aXRsZXMKLSBzZWxlY3QvdW5zZWxlY3QgY2FsbGJhY2tzIG5vdyBwYXNzZXMgbmF0aXZlIGpzIGV2ZW50CgpbNDA2XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD00MDYKWzQ3N106IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NDc3Cls0MjldOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTQyOQpbNDEyXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD00MTIKCgp2MS40LjYgKDIwMTAtMDUtMzEpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gInNlbGVjdGluZyIgZGF5cyBvciB0aW1lc2xvdHMKCS0gb3B0aW9uczogc2VsZWN0YWJsZSwgc2VsZWN0SGVscGVyLCB1bnNlbGVjdEF1dG8sIHVuc2VsZWN0Q2FuY2VsCgktIGNhbGxiYWNrczogc2VsZWN0LCB1bnNlbGVjdAoJLSBtZXRob2RzOiBzZWxlY3QsIHVuc2VsZWN0Ci0gd2hlbiBkcmFnZ2luZyBhbiBldmVudCwgdGhlIGhpZ2hsaWdodGluZyByZWZsZWN0cyB0aGUgZHVyYXRpb24gb2YgdGhlIGV2ZW50Ci0gY29kZSBjb21wcmVzc2luZyBieSBHb29nbGUgQ2xvc3VyZSBDb21waWxlcgotIGJ1bmRsZWQgd2l0aCBqUXVlcnkgMS40LjIgYW5kIGpRdWVyeSBVSSAxLjguMQoKCnYxLjQuNSAoMjAxMC0wMi0yMSkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBsYXp5RmV0Y2hpbmcgb3B0aW9uLCB3aGljaCBjYW4gZm9yY2UgdGhlIGNhbGVuZGFyIHRvIGZldGNoIGV2ZW50cyBvbiBldmVyeSB2aWV3L2RhdGUgY2hhbmdlCi0gc2Nyb2xsIHN0YXRlIG9mIGFnZW5kYSB2aWV3cyBhcmUgcHJlc2VydmVkIHdoZW4gc3dpdGNoaW5nIGJhY2sgdG8gdmlldwotIGJ1Z2ZpeGVzCgktIGNhbGxpbmcgbWV0aG9kcyBvbiBhbiB1bmluaXRpYWxpemVkIGZ1bGxjYWxlbmRhciB0aHJvd3MgZXJyb3IKCS0gSUU2LzcgYnVnIHdoZXJlIGFuIGVudGlyZSB2aWV3IGJlY29tZXMgaW52aXNpYmxlIChbMzIwXSkKCS0gZXJyb3Igd2hlbiByZW5kZXJpbmcgYSBoaWRkZW4gY2FsZW5kYXIgKGluIGpxdWVyeSB1aSB0YWJzIGZvciBleGFtcGxlKSBpbiBJRSAoWzM0MF0pCgktIGludGVyY29ubmVjdGVkIGJ1Z3MgcmVsYXRlZCB0byBjYWxlbmRhciByZXNpemluZyBhbmQgc2Nyb2xsYmFycwoJCS0gd2hlbiBzd2l0Y2hpbmcgdmlld3Mgb3IgY2xpY2tpbmcgcHJldi9uZXh0LCBjYWxlbmRhciB3b3VsZCAiYmxpbmsiIChbMzMzXSkKCQktIGxpcXVpZC13aWR0aCBjYWxlbmRhcidzIGV2ZW50cyBzaGlmdGVkIChkZXBlbmRpbmcgb24gaW5pdGlhbCBoZWlnaHQgb2YgYnJvd3NlcikgKFszNDFdKQoJCS0gbW9yZSByb2J1c3QgdW5kZXJseWluZyBhbGdvcml0aG0gZm9yIGNhbGVuZGFyIHJlc2l6aW5nCgpbMzIwXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0zMjAKWzM0MF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MzQwClszMzNdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTMzMwpbMzQxXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0zNDEKCgp2MS40LjQgKDIwMTAtMDItMDMpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gb3B0aW1pemVkIGV2ZW50IHJlbmRlcmluZyBpbiBhbGwgdmlld3MgKGV2ZW50cyByZW5kZXIgaW4gMS8xMCB0aGUgdGltZSkKLSBnb3RvRGF0ZSgpIGRvZXMgbm90IGZvcmNlIHRoZSBjYWxlbmRhciB0byB1bm5lY2Vzc2FyaWx5IHJlcmVuZGVyCi0gcmVuZGVyKCkgbWV0aG9kIG5vdyBjb3JyZWN0bHkgcmVhZGp1c3RzIGhlaWdodAoKCnYxLjQuMyAoMjAwOS0xMi0yMikKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBhZGRlZCBkZXN0cm95IG1ldGhvZAotIEdvb2dsZSBDYWxlbmRhciBldmVudCBwYWdlcyByZXNwZWN0IGN1cnJlbnRUaW1lem9uZQotIGNhY2hpbmcgbm93IGhhbmRsZWQgYnkgalF1ZXJ5J3MgYWpheAkKLSBwcm90ZWN0aW9uIGZyb20gc2V0dGluZyBhc3BlY3RSYXRpbyB0byB6ZXJvCi0gYnVnZml4ZXMKCS0gcGFyc2VJU084NjAxIGFuZCBEU1QgY2F1c2VkIGNlcnRhaW4gZXZlbnRzIHRvIGRpc3BsYXkgZGF5IGJlZm9yZQoJLSBidXR0b24gcG9zaXRpb25pbmcgcHJvYmxlbSBpbiBJRTYKCS0gYWpheCBldmVudCBzb3VyY2UgcmVtb3ZlZCBhZnRlciByZWNlbnRseSBiZWluZyBhZGRlZCwgZXZlbnRzIHN0aWxsIGRpc3BsYXllZAoJLSBldmVudCBub3QgZGlzcGxheWVkIHdoZW4gZW5kIGlzIGFuIGVtcHR5IHN0cmluZwoJLSBkeW5hbWljYWxseSBzZXR0aW5nIGNhbGVuZGFyIGhlaWdodCB3aGVuIG5vIGV2ZW50cyBoYXZlIGJlZW4gZmV0Y2hlZCwgdGhyb3dzIGVycm9yCgoKdjEuNC4yICgyMDA5LTEyLTAyKQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIGV2ZW50QWZ0ZXJSZW5kZXIgdHJpZ2dlcgotIGdldERhdGUgJiBnZXRWaWV3IG1ldGhvZHMKLSBoZWlnaHQgJiBjb250ZW50SGVpZ2h0IG9wdGlvbnMgKGV4cGxpY2l0bHkgc2V0cyB0aGUgcGl4ZWwgaGVpZ2h0KQotIG1pblRpbWUgJiBtYXhUaW1lIG9wdGlvbnMgKHJlc3RyaWN0cyBzaG93biBob3VycyBpbiBhZ2VuZGEgdmlldykKLSBnZXR0ZXJzIFtmb3IgYWxsIG9wdGlvbnNdIGFuZCBzZXR0ZXJzIFtmb3IgaGVpZ2h0LCBjb250ZW50SGVpZ2h0LCBhbmQgYXNwZWN0UmF0aW8gT05MWSEgc3RheSB0dW5lZC4uXQotIHJlbmRlciBtZXRob2Qgbm93IHJlYWRqdXN0cyBjYWxlbmRhcidzIHNpemUKLSBidWdmaXhlcwoJLSBsaWdodGJveCBzY3JpcHRzIHRoYXQgdXNlIGlmcmFtZXMgKGxpa2UgZmFuY3lib3gpCgktIGRheS1vZi13ZWVrIGNsYXNzTmFtZXMgd2VyZSBvZmYgd2hlbiBmaXJzdERheT0xCgktIGd1YXJhbnRlZWQgc3BhY2Ugb24gcmlnaHQgc2lkZSBvZiBhZ2VuZGEgZXZlbnRzIChldmVuIHdoZW4gc3RhY2tlZCkKCS0gYWNjZXB0cyBJU084NjAxIGRhdGVzIHdpdGggYSBzcGFjZSAoaW5zdGVhZCBvZiAnVCcpCgoKdjEuNC4xICgyMDA5LTEwLTMxKQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIGNhbiBleGNsdWRlIHdlZWtlbmRzIHdpdGggbmV3ICd3ZWVrZW5kcycgb3B0aW9uCi0gZ2NhbCBmZWVkICdjdXJyZW50VGltZXpvbmUnIG9wdGlvbgotIGJ1Z2ZpeGVzCgktIHllYXIvbW9udGgvZGF0ZSBvcHRpb24gc29tZXRpbWVzIHdvdWxkbid0IHNldCBjb3JyZWN0bHkgKGRlcGVuZGluZyBvbiBjdXJyZW50IGRhdGUpCgktIGRheWxpZ2h0IHNhdmluZ3MgaXNzdWUgY2F1c2VkIGFnZW5kYSB2aWV3cyB0byBzdGFydCBhdCAxYW0gKGZvciBCU1QgdXNlcnMpCi0gY2xlYW51cCBvZiBnY2FsLmpzIGNvZGUKCgp2MS40ICgyMDA5LTEwLTE5KQotLS0tLS0tLS0tLS0tLS0tLQoKLSBhZ2VuZGFXZWVrIGFuZCBhZ2VuZGFEYXkgdmlld3MKLSBhZGRlZCBzb21lIG9wdGlvbnMgZm9yIGFnZW5kYSB2aWV3czoKCS0gYWxsRGF5U2xvdAoJLSBhbGxEYXlUZXh0CgktIGZpcnN0SG91cgoJLSBzbG90TWludXRlcwoJLSBkZWZhdWx0RXZlbnRNaW51dGVzCgktIGF4aXNGb3JtYXQKLSBtb2RpZmllZCBzb21lIGV4aXN0aW5nIG9wdGlvbnMvdHJpZ2dlcnMgdG8gd29yayB3aXRoIGFnZW5kYSB2aWV3czoKCS0gZHJhZ09wYWNpdHkgYW5kIHRpbWVGb3JtYXQgY2FuIG5vdyBhY2NlcHQgYSAiVmlldyBIYXNoIiAoYSBuZXcgY29uY2VwdCkKCS0gZGF5Q2xpY2sgbm93IGhhcyBhbiBhbGxEYXkgcGFyYW1ldGVyCgktIGV2ZW50RHJvcCBub3cgaGFzIGFuIGFuIGFsbERheSBwYXJhbWV0ZXIKCSAgKHRoaXMgd2lsbCBhZmZlY3QgdGhvc2Ugd2hvIHVzZSByZXZlcnRGdW5jLCBhZGp1c3QgcGFyYW1ldGVyIGxpc3QpCi0gYWRkZWQgJ3ByZXZZZWFyJyBhbmQgJ25leHRZZWFyJyBmb3IgYnV0dG9ucyBpbiBoZWFkZXIKLSBtaW5vciBjaGFuZ2UgZm9yIHRoZW1lIHVzZXJzLCB1aS1zdGF0ZS1ob3ZlciBub3QgYXBwbGllZCB0byBhY3RpdmUvaW5hY3RpdmUgYnV0dG9ucwotIGFkZGVkIGV2ZW50LWNvbG9yLWNoYW5naW5nIGV4YW1wbGUgaW4gZG9jcwotIGJldHRlciBkZWZhdWx0cyBmb3IgcmlnaHQtdG8tbGVmdCB0aGVtZWQgYnV0dG9uIGljb25zCgoKdjEuMy4yICgyMDA5LTEwLTEzKQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIEJ1Z2ZpeGVzIChwbGVhc2UgdXBncmFkZSBmcm9tIDEuMy4xISkKCS0gc3F1YXNoZWQgcG90ZW50aWFsIGluZmluaXRlIGxvb3Agd2hlbiBhZGRNb250aHMgYW5kIGFkZERheXMKCSAgaXMgY2FsbGVkIHdpdGggYW4gaW52YWxpZCBkYXRlCgktICQuZnVsbENhbGVuZGFyLnBhcnNlRGF0ZSgpIG5vdyBjb3JyZWN0bHkgcGFyc2VzIElFVEYgZm9ybWF0CgktIHdoZW4gc3dpdGNoaW5nIHZpZXdzLCB0aGUgJ3RvZGF5JyBidXR0b24gc3RpY2tzIGluYWN0aXZlLCBmaXhlZAotIGdvdG9EYXRlIG5vdyBjYW4gYWNjZXB0IGEgc2luZ2xlIERhdGUgYXJndW1lbnQKLSBkb2N1bWVudGF0aW9uIGZvciBjaGFuZ2VzIGluIDEuMy4xIGFuZCAxLjMuMiBub3cgb24gd2Vic2l0ZQoKCnYxLjMuMSAoMjAwOS0wOS0zMCkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBJbXBvcnRhbnQgQnVnZml4ZXMgKHBsZWFzZSB1cGdyYWRlIGZyb20gMS4zISkKCS0gV2hlbiBjdXJyZW50IGRhdGUgd2FzIGxhdGUgaW4gdGhlIG1vbnRoLCBmb3IgbG9uZyBtb250aHMsIGFuZCBwcmV2L25leHQgYnV0dG9ucwoJICB3ZXJlIGNsaWNrZWQgaW4gbW9udGgtdmlldywgc29tZSBtb250aHMgd291bGQgYmUgc2tpcHBlZC9yZXBlYXRlZAoJLSBJbiBjZXJ0YWluIHRpbWUgem9uZXMsIGRheWxpZ2h0IHNhdmluZ3MgdGltZSB3b3VsZCBjYXVzZSBjZXJ0YWluIGRheXMKCSAgdG8gYmUgbWlzbnVtYmVyZWQgaW4gbW9udGgtdmlldwotIFN1YnRsZSBjaGFuZ2UgaW4gd2F5IHdlZWsgaW50ZXJ2YWwgaXMgY2hvc2VuIHdoZW4gc3dpdGNoaW5nIGZyb20gbW9udGggdG8gYmFzaWNXZWVrL2Jhc2ljRGF5IHZpZXcKLSBBZGRlZCAnYWxsRGF5RGVmYXVsdCcgb3B0aW9uCi0gQWRkZWQgJ2NoYW5nZVZpZXcnIGFuZCAncmVuZGVyJyBtZXRob2RzCgoKdjEuMyAoMjAwOS0wOS0yMSkKLS0tLS0tLS0tLS0tLS0tLS0KCi0gZGlmZmVyZW50ICd2aWV3cyc6IG1vbnRoL2Jhc2ljV2Vlay9iYXNpY0RheQotIG1vcmUgZmxleGlibGUgJ2hlYWRlcicgc3lzdGVtIGZvciBidXR0b25zCi0gdGhlbWFibGUgYnkgalF1ZXJ5IFVJIHRoZW1lcwotIHJlc2l6YWJsZSBldmVudHMgKHJlcXVpcmUgalF1ZXJ5IFVJIHJlc2l6YWJsZSBwbHVnaW4pCi0gcmVzY29wZWQgJiByZXdyaXR0ZW4gQ1NTLCBlbmhhbmNlZCBkZWZhdWx0IGxvb2sKLSBjbGVhbmVyIGNzcyAmIHJlbmRlcmluZyB0ZWNobmlxdWVzIGZvciByaWdodC10by1sZWZ0Ci0gcmV3b3JrZWQgb3B0aW9ucyAmIEFQSSB0byBzdXBwb3J0IG11bHRpcGxlIHZpZXdzIC8gYmUgY29uc2lzdGVudCB3aXRoIGpRdWVyeSBVSQotIHJlZmFjdG9yaW5nIG9mIGVudGlyZSBjb2RlYmFzZQoJLSBicm9rZW4gaW50byBkaWZmZXJlbnQgSlMgJiBDU1MgZmlsZXMsIGFzc2VtYmxlZCB3LyBidWlsZCBzY3JpcHRzCgktIG5ldyB0ZXN0IHN1aXRlIGZvciBuZXcgZmVhdHVyZXMsIHVzZXMgZmlyZWJ1Zy1saXRlCi0gcmVmYWN0b3JlZCBkb2NzCi0gT3B0aW9ucwoJLSArIGRhdGUKCS0gKyBkZWZhdWx0VmlldwoJLSArIGFzcGVjdFJhdGlvCgktICsgZGlzYWJsZVJlc2l6aW5nCgktICsgbW9udGhOYW1lcyAgICAgICh1c2UgaW5zdGVhZCBvZiAkLmZ1bGxDYWxlbmRhci5tb250aE5hbWVzKQoJLSArIG1vbnRoTmFtZXNTaG9ydCAodXNlIGluc3RlYWQgb2YgJC5mdWxsQ2FsZW5kYXIubW9udGhBYmJyZXZzKQoJLSArIGRheU5hbWVzICAgICAgICAodXNlIGluc3RlYWQgb2YgJC5mdWxsQ2FsZW5kYXIuZGF5TmFtZXMpCgktICsgZGF5TmFtZXNTaG9ydCAgICh1c2UgaW5zdGVhZCBvZiAkLmZ1bGxDYWxlbmRhci5kYXlBYmJyZXZzKQoJLSArIHRoZW1lCgktICsgYnV0dG9uVGV4dAoJLSArIGJ1dHRvbkljb25zCgktIHggZHJhZ2dhYmxlICAgICAgICAgICAtPiBlZGl0YWJsZS9kaXNhYmxlRHJhZ2dpbmcKCS0geCBmaXhlZFdlZWtzICAgICAgICAgIC0+IHdlZWtNb2RlCgktIHggYWJicmV2RGF5SGVhZGluZ3MgICAtPiBjb2x1bW5Gb3JtYXQKCS0geCBidXR0b25zL3RpdGxlICAgICAgIC0+IGhlYWRlcgoJLSB4IGV2ZW50RHJhZ09wYWNpdHkgICAgLT4gZHJhZ09wYWNpdHkKCS0geCBldmVudFJldmVydER1cmF0aW9uIC0+IGRyYWdSZXZlcnREdXJhdGlvbgoJLSB4IHdlZWtTdGFydCAgICAgICAgICAgLT4gZmlyc3REYXkKCS0geCByaWdodFRvTGVmdCAgICAgICAgIC0+IGlzUlRMCgktIHggc2hvd1RpbWUgKHVzZSAnYWxsRGF5JyBDYWxFdmVudCBwcm9wZXJ0eSBpbnN0ZWFkKQotIFRyaWdnZXJlZCBBY3Rpb25zCgktICsgZXZlbnRSZXNpemVTdGFydAoJLSArIGV2ZW50UmVzaXplU3RvcAoJLSArIGV2ZW50UmVzaXplCgktIHggbW9udGhEaXNwbGF5IC0+IHZpZXdEaXNwbGF5CgktIHggcmVzaXplICAgICAgIC0+IHdpbmRvd1Jlc2l6ZQoJLSAnZXZlbnREcm9wJyBwYXJhbXMgY2hhbmdlZCwgY2FuIHJldmVydCBpZiBhamF4IGN1dHMgb3V0Ci0gQ2FsRXZlbnQgUHJvcGVydGllcwoJLSB4IHNob3dUaW1lICAtPiBhbGxEYXkKCS0geCBkcmFnZ2FibGUgLT4gZWRpdGFibGUKCS0gJ2VuZCcgaXMgbm93IElOQ0xVU0lWRSB3aGVuIGFsbERheT10cnVlCgktICd1cmwnIG5vdyBwcm9kdWNlcyBhIHJlYWwgPGE+IHRhZywgbW9yZSBuYXRpdmUgY2xpY2tpbmcvdGFiIGJlaGF2aW9yCi0gTWV0aG9kczoKCS0gKyByZW5kZXJFdmVudAoJLSB4IHByZXZNb250aCAgICAgICAgIC0+IHByZXYKCS0geCBuZXh0TW9udGggICAgICAgICAtPiBuZXh0CgktIHggcHJldlllYXIvbmV4dFllYXIgLT4gbW92ZURhdGUKCS0geCByZWZyZXNoICAgICAgICAgICAtPiByZXJlbmRlckV2ZW50cy9yZWZldGNoRXZlbnRzCgktIHggcmVtb3ZlRXZlbnQgICAgICAgLT4gcmVtb3ZlRXZlbnRzCgktIHggZ2V0RXZlbnRzQnlJRCAgICAgLT4gY2xpZW50RXZlbnRzCi0gVXRpbGl0aWVzOgoJLSAnZm9ybWF0RGF0ZScgZm9ybWF0IHN0cmluZyBjb21wbGV0ZWx5IGNoYW5nZWQgKGluc3BpcmVkIGJ5IGpRdWVyeSBVSSBkYXRlcGlja2VyICsgZGF0ZWpzKQoJLSAnZm9ybWF0RGF0ZXMnIGFkZGVkIHRvIHN1cHBvcnQgZGF0ZS1yYW5nZXMKLSBHb29nbGUgQ2FsZW5kYXIgT3B0aW9uczoKCS0geCBkcmFnZ2FibGUgLT4gZWRpdGFibGUKLSBCdWdmaXhlcwoJLSBnY2FsIGV4dGVuc2lvbiBmZXRjaGVkIDI1IHJlc3VsdHMgbWF4LCBub3cgZmV0Y2hlcyBhbGwKCgp2MS4yLjEgKDIwMDktMDYtMjkpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gYnVnZml4ZXMKCS0gYWxsb3dzIGFuZCBjb3JyZWN0cyBpbnZhbGlkIGVuZCBkYXRlcyBmb3IgZXZlbnRzCgktIGRvZXNuJ3QgdGhyb3cgYW4gZXJyb3IgaW4gSUUgd2hpbGUgcmVuZGVyaW5nIHdoZW4gZGlzcGxheTpub25lCgktIGZpeGVkICdsb2FkaW5nJyBjYWxsYmFjayB3aGVuIHVzZWQgdy8gbXVsdGlwbGUgYWRkRXZlbnRTb3VyY2UgY2FsbHMKCS0gZ2NhbCBjbGFzc05hbWUgY2FuIG5vdyBiZSBhbiBhcnJheQoKCnYxLjIgKDIwMDktMDUtMzEpCi0tLS0tLS0tLS0tLS0tLS0tCgotIGV4cGFuZGVkIEFQSQoJLSAnY2xhc3NOYW1lJyBDYWxFdmVudCBhdHRyaWJ1dGUKCS0gJ3NvdXJjZScgQ2FsRXZlbnQgYXR0cmlidXRlCgktIGR5bmFtaWNhbGx5IGdldC9hZGQvcmVtb3ZlL3VwZGF0ZSBldmVudHMgb2YgY3VycmVudCBtb250aAoJLSBsb2NhbGUgaW1wcm92ZW1lbnRzOiBjaGFuZ2UgbW9udGgvZGF5IG5hbWUgdGV4dAoJLSBiZXR0ZXIgZGF0ZSBmb3JtYXR0aW5nICgkLmZ1bGxDYWxlbmRhci5mb3JtYXREYXRlKQoJLSBtdWx0aXBsZSAnZXZlbnQgc291cmNlcycgYWxsb3dlZAoJCS0gZHluYW1pY2FsbHkgYWRkL3JlbW92ZSBldmVudCBzb3VyY2VzCi0gb3B0aW9ucyBmb3IgcHJldlllYXIgYW5kIG5leHRZZWFyIGJ1dHRvbnMKLSBkb2NzIGhhdmUgYmVlbiByZXdvcmtlZCAoaW5jbHVkZSBhZGRpdGlvbiBvZiBHb29nbGUgQ2FsZW5kYXIgZG9jcykKLSBjaGFuZ2VkIGJlaGF2aW9yIG9mIHBhcnNlRGF0ZSBmb3IgbnVtYmVyIHN0cmluZ3MKICAobm93IGludGVycGV0cyBhcyB1bml4IHRpbWVzdGFtcCwgbm90IE1TIHRpbWVzKQotIGJ1Z2ZpeGVzCgktIHJpZ2h0VG9MZWZ0IG1vbnRoIHN0YXJ0IGJ1ZwoJLSBvZmYtYnktb25lIGVycm9ycyB3aXRoIG1vbnRoIGZvcm1hdHRpbmcgY29tbWFuZHMKCS0gZXZlbnRzIGZyb20gcHJldmlvdXMgbW9udGhzIHN0aWNraW5nIHdoZW4gY2xpY2tpbmcgcHJldi9uZXh0IHF1aWNrbHkKLSBHb29nbGUgQ2FsZW5kYXIgQVBJIGNoYW5nZWQgdG8gd29yayB3LyBtdWx0aXBsZSBldmVudCBzb3VyY2VzCgktIGNhbiBhbHNvIHByb3ZpZGUgJ2NsYXNzTmFtZScgYW5kICdkcmFnZ2FibGUnIG9wdGlvbnMKLSBkYXRlIHV0aWx0aWVzIG1vdmVkIGZyb20gJCB0byAkLmZ1bGxDYWxlbmRhcgotIG1vcmUgZG9jdW1lbnRhdGlvbiBpbiBzb3VyY2UgY29kZQotIG1pbmlmaWVkIHZlcnNpb24gb2YgZnVsbGNhbGVuZGFyLmpzCi0gdGVzdCBzdWl0IChhdmFpbGFibGUgZnJvbSBzdm4pCi0gdG9wIGJ1dHRvbnMgbm93IHVzZSBgPGJ1dHRvbj5gIHcvIGFuIGlubmVyIGA8c3Bhbj5gIGZvciBiZXR0ZXIgY3NzIGN1c29taXphdGlvbgoJLSB0aHVzIENTUyBoYXMgY2hhbmdlZC4gSUYgVVBHUkFESU5HIEZST00gUFJFVklPVVMgVkVSU0lPTlMsCgkgIFVQR1JBREUgWU9VUiBGVUxMQ0FMRU5EQVIuQ1NTIEZJTEUKCgp2MS4xICgyMDA5LTA1LTEwKQotLS0tLS0tLS0tLS0tLS0tLQoKLSBBZGRlZCB0aGUgZm9sbG93aW5nIG9wdGlvbnM6CgktIHdlZWtTdGFydAoJLSByaWdodFRvTGVmdAoJLSB0aXRsZUZvcm1hdAoJLSB0aW1lRm9ybWF0CgktIGNhY2hlUGFyYW0KCS0gcmVzaXplCi0gRml4ZWQgcmVuZGVyaW5nIGJ1Z3MKCS0gT3BlcmEgOS4yNSAoZXZlbnRzIHBsYWNlbWVudCAmIHdpbmRvdyByZXNpemluZykKCS0gSUU2ICh3aW5kb3cgcmVzaXppbmcpCi0gT3B0aW1pemVkIHdpbmRvdyByZXNpemluZyBmb3IgQUxMIGJyb3dzZXJzCi0gRXZlbnRzIG9uIHNhbWUgZGF5IG5vdyBzb3J0ZWQgYnkgc3RhcnQgdGltZSAoYnV0IGZpcnN0IGJ5IHRpbWVzcGFuKQotIENvcnJlY3Qgei1pbmRleCB3aGVuIGRyYWdnaW5nCi0gRHJhZ2dpbmcgY29udGFpbmVkIGluIG92ZXJmbG93IERJViBmb3IgSUU2Ci0gTW9kaWZpZWQgZnVsbGNhbGVuZGFyLmNzcwoJLSBmb3IgcmlnaHQtdG8tbGVmdCBzdXBwb3J0CgktIGZvciB2YXJpYWJsZSBzdGFydC1vZi13ZWVrCgktIGZvciBJRTYgcmVzaXppbmcgYnVnCgktIGZvciBUSEVBRCBhbmQgVEJPRFkgKGluIDEuMCwganVzdCB1c2VkIFRCT0RZLCByZXN0cnVjdHVyZWQgaW4gMS4xKQoJLSBJRiBVUEdSQURJTkcgRlJPTSBGVUxMQ0FMRU5EQVIgMS4wLCBZT1UgTVVTVCBVUEdSQURFIEZVTExDQUxFTkRBUi5DU1MK]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/CHANGELOG.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CnYzLjMuMSAoMjAxNy0wNC0wMSkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKQnVnZml4ZXM6Ci0gc3RhbGUgY2FsZW5kYXIgdGl0bGUgd2hlbiBuYXZpZ2F0ZSBhd2F5IGZyb20gdGhlbiBiYWNrIHRvIHRoZSBhIHZpZXcgKCMzNjA0KQotIGpzIGVycm9yIHdoZW4gZ290b0RhdGUgaW1tZWRpYXRlbHkgYWZ0ZXIgY2FsZW5kYXIgaW5pdGlhbGl6YXRpb24gKCMzNTk4KQotIGFnZW5kYSB2aWV3IHNjcm9sbGJhcnMgY2F1c2VzIG1pc2FsaWdubWVudCBpbiBqcXVlcnkgMy4yLjEgKCMzNjEyKQotIG5hdmlnYXRpb24gYnVnIHdoZW4gdHJ5aW5nIHRvIG5hdmlnYXRlIHRvIGEgZGF5IG9mIGFub3RoZXIgd2VlayAoIzM2MTApCi0gZGF0ZUluY3JlbWVudCBub3Qgd29ya2luZyB3aGVuIGR1cmF0aW9uIGFuZCBkYXRlSW5jcmVtZW50IGhhdmUgZGlmZmVyZW50IHVuaXRzCgoKdjMuMy4wICgyMDE3LTAzLTIzKQotLS0tLS0tLS0tLS0tLS0tLS0tCgpGZWF0dXJlczoKLSBgdmlzaWJsZVJhbmdlYCAtIGNvbXBsZXRlIGNvbnRyb2wgb3ZlciB2aWV3J3MgZGF0ZSByYW5nZSAoIzI4NDcsICMzMTA1LCAjMzI0NSkKLSBgdmFsaWRSYW5nZWAgLSByZXN0cmljdCBkYXRlIHJhbmdlICgjNDI5KQotIGBjaGFuZ2VWaWV3YCAtIHBhc3MgaW4gYSBkYXRlIG9yIHZpc2libGVSYW5nZSBhcyBzZWNvbmQgcGFyYW0gKCMzMzY2KQotIGBkYXRlSW5jcmVtZW50YCAtIGN1c3RvbWl6ZSBwcmV2L25leHQganVtcCAoIzI3MTApCi0gYGRhdGVBbGlnbm1lbnRgIC0gY3VzdG9tIHZpZXcgYWxpZ25tZW50LCBsaWtlIHN0YXJ0LW9mLXdlZWsgKCMzMTEzKQotIGBkYXlDb3VudGAgLSBmb3JjZSBhIGZpeGVkIG51bWJlci1vZi1kYXlzLCBldmVuIHdpdGggaGlkZGVuRGF5cyAoIzI3NTMpCi0gYHNob3dOb25DdXJyZW50RGF0ZXNgIC0gb3B0aW9uIHRvIGhpZGUgZGF5IGNlbGxzIGZvciBwcmV2L25leHQgbW9udGhzICgjNDM3KQotIGNhbiBkZWZpbmUgYSBkZWZhdWx0VmlldyB3aXRoIGEgZHVyYXRpb24vdmlzaWJsZVJhbmdlL2RheUNvdW50IHdpdGggbmVlZGluZwogIHRvIGNyZWF0ZSBhIGN1c3RvbSB2aWV3IGluIHRoZSBgdmlld3NgIG9iamVjdC4gS25vd24gYXMgYSAiR2VuZXJpYyBWaWV3Ii4KCkJlaGF2aW9yIENoYW5nZXM6Ci0gd2hlbiBjdXN0b20gdmlldyBpcyBzcGVjaWZpZWQgd2l0aCBkdXJhdGlvbiBge2RheXM6N31gLAogIGl0IHdpbGwgbm8gbG9uZ2VyIGFsaWduIHdpdGggdGhlIHN0YXJ0IG9mIHRoZSB3ZWVrLiAoIzI4NDcpCi0gd2hlbiBgZ290b0RhdGVgIGlzIGNhbGxlZCBvbiBhIGN1c3RvbSB2aWV3IHdpdGggYSBkdXJhdGlvbiBvZiBtdWx0aXBsZSBkYXlzLAogIHRoZSB2aWV3IHdpbGwgYWx3YXlzIHNoaWZ0IHRvIGJlZ2luIHdpdGggdGhlIGdpdmVuIGRhdGUuICgjMzUxNSkKCkJ1Z2ZpeGVzOgotIGV2ZW50IHJlbmRlcmluZyB3aGVuIGV4Y2Vzc2l2ZSBgbWluVGltZWAvYG1heFRpbWVgICgjMjUzMCkKLSBldmVudCBkcmFnZ2luZyBub3Qgc2hvd24gd2hlbiBleGNlc3NpdmUgYG1pblRpbWVgL2BtYXhUaW1lYCAoIzMwNTUpCi0gZXhjZXNzaXZlIGBtaW5UaW1lYC9gbWF4VGltZWAgbm90IHJlZmxlY3RlZCBpbiBldmVudCBmZXRjaGluZyAoIzM1MTQpCgktIHdoZW4gbWluVGltZSBpcyBuZWdhdGl2ZSwgb3IgbWF4VGltZSBiZXlvbmQgMjQgaG91cnMsIHdoZW4gZXZlbnQgZGF0YSBpcyByZXF1ZXN0ZWQKCSAgdmlhIGEgZnVuY3Rpb24gb3IgYSBmZWVkLCB0aGUgZ2l2ZW4gZGF0YSBwYXJhbXMgd2lsbCBoYXZlIHRpbWUgcGFydHMuCi0gZXh0ZXJuYWwgZXZlbnQgZHJhZ2dpbmcgdmlhIHRvdWNocHVuY2ggYnJva2VuICgjMzU0NCkKLSBjYW4ndCBtYWtlIGFuIGltbWVkaWF0ZSBuZXcgc2VsZWN0aW9uIGFmdGVyIGV4aXN0aW5nIHNlbGVjdGlvbiwgd2l0aCBtb3VzZS4KICBpbnRyb2R1Y2VkIGluIHYzLjIuMCAoIzM1NTgpCgoKdjMuMi4wICgyMDE3LTAyLTE0KQotLS0tLS0tLS0tLS0tLS0tLS0tCgpGZWF0dXJlczoKLSBgc2VsZWN0TWluRGlzdGFuY2VgLCB0aHJlc2hvbGQgYmVmb3JlIGEgbW91c2Ugc2VsZWN0aW9uIGJlZ2lucyAoIzI0MjgpCgpCdWdmaXhlczoKLSBpT1MgMTAsIHVud2FudGVkIHNjcm9sbGluZyB3aGlsZSBkcmFnZ2luZyBldmVudHMvc2VsZWN0aW9uICgjMzQwMykKLSBkYXlDbGljayB0cmlnZ2VyZWQgd2hlbiBzd2lwaW5nIG9uIHRvdWNoIGRldmljZXMgKCMzMzMyKQotIGRheUNsaWNrIG5vdCBmdW5jdGlvbmluZyBvbiBGaXJlZml4IG1vYmlsZSAoIzM0NTApCi0gdGl0bGUgY29tcHV0ZWQgaW5jb3JyZWN0bHkgZm9yIHZpZXdzIHdpdGggbm8gd2Vla2VuZHMgKCMyODg0KQotIHVud2FudGVkIHNjcm9sbGJhcnMgaW4gbW9udGgtdmlldyB3aGVuIG5vbi1pbnRlZ2VyIHdpZHRoICgjMzQ1MywgIzM0NDQpCi0gaW5jb3JyZWN0IGRhdGUgZm9ybWF0dGluZyBmb3IgbG9jYWxlcyB3aXRoIG5vbi1zdGFuZGxvbmUgbW9udGgvZGF5IG5hbWVzICgjMzQ3OCkKLSBkYXRlIGZvcm1hdHRpbmcsIGluY29ycmVjdCBvbWlzc2lvbiBvZiB0cmFpbGluZyBwZXJpb2QgZm9yIGNlcnRhaW4gbG9jYWxlcyAoIzI1MDQsICMzNDg2KQotIGZvcm1hdFJhbmdlIHNob3VsZCBjb2xsYXBzZSBzYW1lIHdlZWsgbnVtYmVycyAoIzM0NjcpCi0gVGFpd2FuZXNlIGxvY2FsZSB1cGRhdGVkICgjMzQyNikKLSBGaW5uaXNoIG5vRXZlbnRzTWVzc2FnZSB1cGRhdGVkICgjMzQ3NikKLSBDcm9hdGlhbiAoaHIpIGJ1dHRvblRleHQgaXMgYmxhbmsgKCMzMjcwKQotIEpTT04gZmVlZCBQSFAgZXhhbXBsZSwgZGF0ZSByYW5nZSBtYXRoIGJ1ZyAoIzM0ODUpCgoKdjMuMS4wICgyMDE2LTEyLTA1KQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIGV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciBpbXBsaWNpdGx5IGJhdGNoZWQgKCJkZWJvdW5jZWQiKSBldmVudCByZW5kZXJpbmcgKCMyOTM4KQoJLSBgZXZlbnRSZW5kZXJXYWl0YCAob2ZmIGJ5IGRlZmF1bHQpCi0gbmV3IGBmb290ZXJgIG9wdGlvbiwgc2ltaWxhciB0byBoZWFkZXIgdG9vbGJhciAoIzY1NCwgIzMyOTkpCi0gZXZlbnQgcmVuZGVyaW5nIGJhdGNoIG1ldGhvZHMgKCMzMzUxKToKCS0gYHJlbmRlckV2ZW50c2AKCS0gYHVwZGF0ZUV2ZW50c2AKLSBtb3JlIGdyYW51bGFyIHRvdWNoIHNldHRpbmdzICgjMzM3Nyk6CgktIGBldmVudExvbmdQcmVzc0RlbGF5YAoJLSBgc2VsZWN0TG9uZ1ByZXNzRGVsYXlgCi0gZXZlbnREZXN0cm95IG5vdCBjYWxsZWQgd2hlbiByZW1vdmluZyB0aGUgcG9wb3ZlciAoIzM0MTYsICMzNDE5KQotIHByaW50IHN0eWxlc2hlZXQgYW5kIGdjYWwgZXh0ZW5zaW9uIG5vdyBvZmZlcmVkIGFzIG1pbmlmaWVkICgjMzQxNSkKLSBmYy10b2RheSBpbiBhZ2VuZGEgaGVhZGVyIGNlbGxzICgjMzM2MSwgIzMzNjUpCi0gaGVpZ2h0LXJlbGF0ZWQgb3B0aW9ucyBpbiB0YW5kZW0gd2l0aCBvdGhlciBvcHRpb25zICgjMzMyNywgIzMzODQpCi0gS2F6YWtoIGxvY2FsZSAoIzMzOTQpCi0gQWZyaWthYW5zIGxvY2FsZSAoIzMzOTApCi0gaW50ZXJuYWwgcmVmYWN0b3IgcmVsYXRlZCB0byB0aW1pbmcgb2YgcmVuZGVyaW5nIGFuZCBmaXJpbmcgaGFuZGxlcnMuCiAgY2FsbHMgdG8gcmVyZW5kZXIgdGhlIGN1cnJlbnQgZGF0ZS1yYW5nZSBhbmQgZXZlbnRzIGZyb20gd2l0aGluIGhhbmRsZXJzCiAgbWlnaHQgbm90IGV4ZWN1dGUgaW1tZWRpYXRlbHkuIGluc3RlYWQsIHdpbGwgZXhlY3V0ZSBhZnRlciBoYW5kbGVyIGZpbmlzaGVzLgoKCnYzLjAuMSAoMjAxNi0wOS0yNikKLS0tLS0tLS0tLS0tLS0tLS0tLQoKQnVnZml4ZXM6Ci0gbGlzdCB2aWV3IHJlbmRlcmluZyBldmVudCB0aW1lcyBpbmNvcnJlY3RseSAoIzMzMzQpCi0gbGlzdCB2aWV3IHJlbmRlcmluZyBldmVudHMvZGF5cyBvdXQgb2Ygb3JkZXIgKCMzMzQ3KQotIGV2ZW50cyB3aXRoIG5vIHRpdGxlIHJlbmRlcmluZyBhcyAidW5kZWZpbmVkIgotIGFkZCAuZmMgc2NvcGUgdG8gdGFibGUgcHJpbnQgc3R5bGVzICgjMzM0MykKLSAiZGlzcGxheSBubyBldmVudHMiIHRleHQgZml4IGZvciBHZXJtYW4gKCMzMzU0KQoKCnYzLjAuMCAoMjAxNi0wOS0wNCkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKRmVhdHVyZXM6Ci0gTGlzdCBWaWV3ICgjNTYwKQoJLSBuZXcgdmlld3M6IGBsaXN0RGF5YCwgYGxpc3RXZWVrYCwgYGxpc3RNb250aGAsIGBsaXN0WWVhcmAsIGFuZCBzaW1wbHkgYGxpc3RgCgktIGBsaXN0RGF5Rm9ybWF0YAoJLSBgbGlzdERheUFsdEZvcm1hdGAKCS0gYG5vRXZlbnRzTWVzc2FnZWAKLSBDbGlja2FibGUgZGF5L3dlZWsgbnVtYmVycyBmb3IgZWFzaWVyIG5hdmlnYXRpb24gKCM0MjQpCgktIGBuYXZMaW5rc2AKCS0gYG5hdkxpbmtEYXlDbGlja2AKCS0gYG5hdkxpbmtXZWVrQ2xpY2tgCi0gUHJvZ3JhbW1hdGljYWxseSBhbGxvdy9kaXNhbGxvdyB1c2VyIGludGVyYWN0aW9uczoKCS0gYGV2ZW50QWxsb3dgICgjMjc0MCkKCS0gYHNlbGVjdEFsbG93YCAoIzI1MTEpCi0gT3B0aW9uIHRvIGRpc3BsYXkgd2VlayBudW1iZXJzIGluIGNlbGxzICgjMzAyNCkKCS0gYHdlZWtOdW1iZXJzV2l0aGluRGF5c2AgKHNldCB0byBgdHJ1ZWAgdG8gYWN0aXZhdGUpCi0gV2hlbiB3ZWVrIGNhbGMgaXMgSVNPLCBkZWZhdWx0IGZpcnN0IGRheS1vZi13ZWVrIHRvIE1vbmRheSAoIzMyNTUpCi0gTWFjZWRvbmlhbiBsb2NhbGUgKCMyNzM5KQotIE1hbGF5IGxvY2FsZQoKQnJlYWtpbmcgQ2hhbmdlczoKLSBJRTggc3VwcG9ydCBkcm9wcGVkCi0galF1ZXJ5OiBtaW5pbXVtIHN1cHBvcnQgcmFpc2VkIHRvIHYyLjAuMAotIE1vbWVudEpTOiBtaW5pbXVtIHN1cHBvcnQgcmFpc2VkIHRvIHYyLjkuMAotIGBsYW5nYCBvcHRpb24gcmVuYW1lZCB0byBgbG9jYWxlYAotIGRpc3QgZmlsZXMgaGF2ZSBiZWVuIHJlbmFtZWQgdG8gYmUgbW9yZSBjb25zaXN0ZW50IHdpdGggTW9tZW50SlM6CgktIGBsYW5nL2AgLT4gYGxvY2FsZS9gCgktIGBsYW5nLWFsbC5qc2AgLT4gYGxvY2FsZS1hbGwuanNgCi0gYmVoYXZpb3Igb2YgbW9tZW50IG1ldGhvZHMgbm8gbG9uZ2VyIGFmZmVjdGVkIGJ5IGFtYmlndW91c25lc3M6CgktIGBpc1NhbWVgCgktIGBpc0JlZm9yZWAKCS0gYGlzQWZ0ZXJgCi0gVmlldy1PcHRpb24tSGFzaGVzIG5vIGxvbmdlciBzdXBwb3J0ZWQgKGRlcHJlY2F0ZWQgaW4gMi4yLjQpCi0gcmVtb3ZlZCBgd2Vla01vZGVgIHNldHRpbmcKLSByZW1vdmVkIGBheGlzRm9ybWF0YCBzZXR0aW5nCi0gRE9NIHN0cnVjdHVyZSBvZiBtb250aC9iYXNpYy12aWV3IGRheSBjZWxsIG51bWJlcnMgY2hhbmdlZAoKQnVnZml4ZXM6Ci0gYCQuZnVsbENhbGVuZGFyLnZlcnNpb25gIGluY29ycmVjdCAoIzMyOTIpCgpCdWlsZCBTeXN0ZW06Ci0gdXNpbmcgZ3VscCBpbnN0ZWFkIG9mIGdydW50IChmYXN0ZXIpCi0gdXNpbmcgbnBtIGludGVybmFsbHkgZm9yIGRlcGVuZGVuY2llcyBpbnN0ZWFkIG9mIGJvd2VyCi0gY2hhbmdlZCByZXBvIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKCgp2Mi45LjEgKDIwMTYtMDctMzEpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gbXVsdGlwbGUgZGVmaW5pdGlvbnMgZm9yIGJ1c2luZXNzSG91cnMgKCMyNjg2KQotIGJ1c2luZXNzSG91cnMgZm9yIHNpbmdsZSBkYXkgZG9lc24ndCBkaXNwbGF5IHdlZWtlbmRzICgjMjk0NCkKLSBoZWlnaHQvY29udGVudEhlaWdodCBjYW4gYWNjZXB0IGEgZnVuY3Rpb24gb3IgJ3BhcmVudCcgZm9yIGR5bmFtaWMgdmFsdWUgKCMzMjcxKQotIGZpeCArbW9yZSBwb3BvdmVyIGNsaXBwZWQgYnkgb3ZlcmZsb3cgKCMzMjMyKQotIGZpeCArbW9yZSBwb3BvdmVyIHBvc2l0aW9uZWQgaW5jb3JyZWN0bHkgd2hlbiBzY3JvbGxlZCAoIzMxMzcpCi0gTm9yd2VnaWFuIE55bm9yc2sgdHJhbnNsYXRpb24gKCMzMjQ2KQotIGZpeCBpc0FuaW1hdGluZyBKUyBlcnJvciAoIzMyODUpCgoKdjIuOS4wICgyMDE2LTA3LTEwKQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIFNldHRlcnMgZm9yIChhbG1vc3QpIGFsbCBvcHRpb25zICgjNTY0KS4KICBTZWUgW2RvY3NdKGh0dHA6Ly9mdWxsY2FsZW5kYXIuaW8vZG9jcy91dGlsaXRpZXMvZHluYW1pY19vcHRpb25zLykgZm9yIG1vcmUgaW5mby4KLSBUcmF2aXMgQ0kgaW1wcm92ZW1lbnRzICgjMzI2NikKCgp2Mi44LjAgKDIwMTYtMDYtMTkpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gZ2V0RXZlbnRTb3VyY2VzIG1ldGhvZCAoIzMxMDMsICMyNDMzKQotIGdldEV2ZW50U291cmNlQnlJZCBtZXRob2QgKCMzMjIzKQotIHJlZmV0Y2hFdmVudFNvdXJjZXMgbWV0aG9kICgjMzEwMywgIzEzMjgsICMyNTQpCi0gcmVtb3ZlRXZlbnRTb3VyY2VzIG1ldGhvZCAoIzMxNjUsICM5NDgpCi0gcHJldmVudCBmbGlja2VyIHdoZW4gcmVmZXRjaEV2ZW50cyBpcyBjYWxsZWQgKCMzMTIzLCAjMjU1OCkKLSBmaXggZm9yIHJlbW92aW5nIGV2ZW50IHNvdXJjZXMgdGhhdCBzaGFyZSBzYW1lIFVSTCAoIzMyMDkpCi0galF1ZXJ5IDMgc3VwcG9ydCAoIzMxOTcsICMzMTI0KQotIFRyYXZpcyBDSSBpbnRlZ3JhdGlvbiAoIzMyMTgpCi0gRWRpdG9yQ29uZmlnIGZvciBwcm9tb3RpbmcgY29uc2lzdGVudCBjb2RlIHN0eWxlICgjMTQxKQotIHVzZSBlbiBkYXNoIHdoZW4gZm9ybWF0dGluZyByYW5nZXMgKCMzMDc3KQotIGhlaWdodDphdXRvIGFsd2F5cyBzaG93cyBzY3JvbGxiYXJzIGluIG1vbnRoIHZpZXcgb24gRkYgKCMzMjAyKQotIG5ldyBsYW5ndWFnZXM6CgktIEJhc3F1ZSAoIzI5OTIpCgktIEdhbGljaWFuICgjMTk0KQoJLSBMdXhlbWJvdXJnaXNoICgjMjk3OSkKCgp2Mi43LjMgKDIwMTYtMDYtMDIpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCmludGVybmFsIGVuaGFuY2VtZW50cyB0aGF0IHBsdWdpbnMgY2FuIGJlbmVmaXQgZnJvbToKLSBFdmVudEVtaXR0ZXIgbm90IGNvcnJlY3RseSB3b3JraW5nIHdpdGggc3RvcExpc3RlbmluZ1RvCi0gbm9ybWFsaXplRXZlbnQgaG9vayBmb3IgbWFuaXB1bGF0aW5nIGV2ZW50IGRhdGEKCgp2Mi43LjIgKDIwMTYtMDUtMjApCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gZml4ZWQgZGVza3RvcHMvbGFwdG9wcyB3aXRoIHRvdWNoIHN1cHBvcnQgbm90IGFjY2VwdGluZyBtb3VzZSBldmVudHMgZm9yCiAgZGF5Q2xpY2svZHJhZ2dpbmcvcmVzaXppbmcgKCMzMTU0LCAjMzE0OSkKLSBmaXhlZCBkYXlDbGljayBpbmNvcnJlY3RseSB0cmlnZ2VyZWQgb24gdG91Y2ggc2Nyb2xsICgjMzE1MikKLSBmaXhlZCB0b3VjaCBldmVudCBkcmFnZ2luZyB3cm9uZ2Z1bGx5IGJlZ2lubmluZyB1cG9uIHNjcm9sbGluZyBkb2N1bWVudCAoIzMxNjApCi0gZml4ZWQgbWluaWZpZWQgSlMgc3RpbGwgY29udGFpbmVkIGNvbW1lbnRzCi0gVUkgY2hhbmdlOiBtb3VzZSB1c2VycyBtdXN0IGhvdmVyIG92ZXIgYW4gZXZlbnQgdG8gcmV2ZWFsIGl0cyByZXNpemVycwoKCnYyLjcuMSAoMjAxNi0wNS0wMSkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBkYXlDbGljayBub3QgZmlyaW5nIG9uIHRvdWNoIGRldmljZXMgKCMzMTM4KQotIGljb25zIGZvciBwcmV2L25leHQgbm90IHdvcmtpbmcgaW4gTVMgRWRnZSAoIzI4NTIpCi0gZml4IGJhZCBsYW5ndWFnZXMgdHJvdWJsZXMgd2l0aCBmaXJld2FsbHMgKCMzMTMzLCAjMzEzMikKLSB1cGRhdGUgYWxsIGRldiBkZXBlbmRlbmNpZXMgKCMzMTQ1LCAjMzAxMCwgIzI5MDEsICMyNTEpCi0gZ2l0LWlnbm9yZSBucG0gZGVidWcgbG9ncyAoIzMwMTEpCi0gbWlzYyBhdXRvbWF0ZWQgdGVzdCB1cGRhdGVzICgjMzEzOSwgIzMxNDcpCi0gR29vZ2xlIENhbGVuZGFyIGh0bWxMaW5rIG5vdCBhbHdheXMgZGVmaW5lZCAoIzI4NDQpCgoKdjIuNy4wICgyMDE2LTA0LTIzKQotLS0tLS0tLS0tLS0tLS0tLS0tCgp0b3VjaCBkZXZpY2Ugc3VwcG9ydCAoIzk5NCk6CgktIHNtb290aGVyIHNjcm9sbGluZwoJLSBpbnRlcmFjdGlvbnMgaW5pdGlhdGVkIHZpYSAibG9uZyBwcmVzcyI6CgkJLSBldmVudCBkcmFnLW4tZHJvcAoJCS0gZXZlbnQgcmVzaXplCgkJLSB0aW1lLXJhbmdlIHNlbGVjdGluZwoJLSBgbG9uZ1ByZXNzRGVsYXlgCgoKdjIuNi4xICgyMDE2LTAyLTE3KQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIG1ha2UgYG5vd0luZGljYXRvcmAgcG9zaXRpb25pbmcgcmVmcmVzaCBvbiB3aW5kb3cgcmVzaXplCgoKdjIuNi4wICgyMDE2LTAxLTA3KQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIGN1cnJlbnQgdGltZSBpbmRpY2F0b3IgKCM0MTQpCi0gYnVuZGxlZCB3aXRoIG1vc3QgcmVjZW50IHZlcnNpb24gb2YgbW9tZW50ICgyLjExLjApCi0gVU1EIHdyYXBwZXIgYXJvdW5kIGxhbmcgZmlsZXMgbm93IGhhbmRsZXMgY29tbW9uanMgKCMyOTE4KQotIGZpeCBidWcgd2hlcmUgZXh0ZXJuYWwgZXZlbnQgZHJhZ2dpbmcgd291bGQgbm90IHJlc3BlY3QgZXZlbnRPdmVybGFwCi0gZml4IGJ1ZyB3aGVyZSBleHRlcm5hbCBldmVudCBkcm9wcGluZyB3b3VsZCBub3QgcmVuZGVyIHRoZSB3aG9sZS1kYXkgaGlnaGxpZ2h0CgoKdjIuNS4wICgyMDE1LTExLTMwKQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIGludGVybmFsIHRpbWV6b25lIHJlZmFjdG9yLiBmaXhlcyAjMjM5NiwgIzI5MDAsICMyOTQ1LCAjMjcxMQotIGludGVybmFsICJncmlkIiBzeXN0ZW0gcmVmYWN0b3IuIGltcHJvdmVkIEFQSSBmb3IgcGx1Z2lucy4KCgp2Mi40LjAgKDIwMTUtMDgtMTYpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gYWRkIG5ldyBidXR0b25zIHRvIHRoZSBoZWFkZXIgdmlhIGBjdXN0b21CdXR0b25zYCAoWzIyNV0pCi0gY29udHJvbCBzdGFja2luZyBvcmRlciBvZiBldmVudHMgdmlhIGBldmVudE9yZGVyYCAoWzM2NF0pCi0gY29udHJvbCBmcmVxdWVuY3kgb2Ygc2xvdCB0ZXh0IHZpYSBgc2xvdExhYmVsSW50ZXJ2YWxgIChbOTQ2XSkKLSBgZGlzcGxheUV2ZW50VGltZWAgKFsxOTA0XSkKLSBgb25gIGFuZCBgb2ZmYCBtZXRob2RzIChbMTkxMF0pCi0gcmVuYW1lZCBgYXhpc0Zvcm1hdGAgdG8gYHNsb3RMYWJlbEZvcm1hdGAKClsyMjVdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIyNQpbMzY0XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0zNjQKWzk0Nl06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9OTQ2ClsxOTA0XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0xOTA0ClsxOTEwXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0xOTEwCgoKdjIuMy4yICgyMDE1LTA2LTE0KQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIG1pbm9yIGNvZGUgYWRqdXN0bWVudCBpbiBwcmVwYXJhdGlvbiBmb3IgcGx1Z2lucwoKCnYyLjMuMSAoMjAxNS0wMy0wOCkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBGaXggd2VlayB2aWV3IGNvbHVtbiB0aXRsZSBmb3IgZW4tZ2IgKFtQUjIyMF0pCi0gUHVibGlzaCB0byBOUE0gKFsyNDQ3XSkKLSBEZXRhbmdsZSBib3dlciBmcm9tIG5wbSBwYWNrYWdlIChbUFIxNzldKQoKW1BSMjIwXTogaHR0cHM6Ly9naXRodWIuY29tL2Fyc2hhdy9mdWxsY2FsZW5kYXIvcHVsbC8yMjAKWzI0NDddOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTI0NDcKW1BSMTc5XTogaHR0cHM6Ly9naXRodWIuY29tL2Fyc2hhdy9mdWxsY2FsZW5kYXIvcHVsbC8xNzkKCgp2Mi4zLjAgKDIwMTUtMDItMjEpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gaW50ZXJuYWwgcmVmYWN0b3JpbmcgaW4gcHJlcGFyYXRpb24gZm9yIG90aGVyIHZpZXdzCi0gYnVzaW5lc3NIb3VycyBub3cgcmVuZGVycyBvbiB3aG9sZS1kYXlzIGluIGFkZGl0aW9uIHRvIHRpbWVkIGFyZWFzCi0gZXZlbnRzIGluICJtb3JlIiBwb3BvdmVyIG5vdCBzb3J0ZWQgYnkgdGltZSAoWzIzODVdKQotIGF2b2lkIHVzaW5nIG1vbWVudCdzIGRlcHJlY2F0ZWQgem9uZSBtZXRob2QgKFsyNDQzXSkKLSBkZXN0cm95aW5nIHRoZSBjYWxlbmRhciBzb21ldGltZXMgY2F1c2VzIGFsbCB3aW5kb3cgcmVzaXplIGhhbmRsZXJzIHRvIGJlIHVuYm91bmQgKFsyNDMyXSkKLSBtdWx0aXBsZSBjYWxlbmRhcnMgb24gb25lIHBhZ2UsIGNhbid0IGFjY2VwdCBleHRlcm5hbCBlbGVtZW50cyBhZnRlciBuYXZpZ2F0aW5nIChbMjQzM10pCi0gYWNjZXB0IGV4dGVybmFsIGV2ZW50cyBmcm9tIGpxdWkgc29ydGFibGUgKFsxNjk4XSkKLSBleHRlcm5hbCBqcXVpIGRyb3AgcHJvY2Vzc2VkIGJlZm9yZSByZXZlcnRpbmcgKFsxNjYxXSkKLSBJRTggZml4OiBtb250aCB2aWV3IHJlbmRlcnMgaW5jb3JyZWN0bHkgKFsyNDI4XSkKLSBJRTggZml4OiBldmVudExpbWl0OnRydWUgd291bGRuJ3QgYWN0aXZhdGUgIm1vcmUiIGxpbmsgKFsyMzMwXSkKLSBJRTggZml4OiBkcmFnZ2luZyBhbiBldmVudCB3aXRoIGFuIGhyZWYKLSBJRTggZml4OiBpbnZpc2libGUgZWxlbWVudCB3aGlsZSBkcmFnZ2luZyBhZ2VuZGEgdmlldyBldmVudHMKLSBJRTggZml4OiBlcnJhdGljIGV4dGVybmFsIGVsZW1lbnQgZHJhZ2dpbmcKClsyMzg1XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMzg1ClsyNDQzXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yNDQzClsyNDMyXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yNDMyClsyNDMzXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yNDMzClsxNjk4XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0xNjk4ClsxNjYxXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0xNjYxClsyNDI4XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yNDI4ClsyMzMwXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMzMwCgoKdjIuMi43ICgyMDE1LTAyLTEwKQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIHZpZXcudGl0bGUgd2Fzbid0IGRlZmluZWQgaW4gdmlld1JlbmRlciBjYWxsYmFjayAoWzI0MDddKQotIEZ1bGxDYWxlbmRhciB2ZXJzaW9ucyA+PSAyLjIuNSBicm9rZW5uZXNzIHdpdGggTW9tZW50IHZlcnNpb25zIDw9IDIuOC4zIChbMjQxN10pCi0gU3VwcG9ydCBCb2ttYWwgTm9yd2VnaWFuIGxhbmd1YWdlIHNwZWNpZmljYWxseSAoWzI0MjddKQoKWzI0MDddOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTI0MDcKWzI0MTddOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTI0MTcKWzI0MjddOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTI0MjcKCgp2Mi4yLjYgKDIwMTUtMDEtMTEpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gQ29tcGF0aWJpbGl0eSB3aXRoIE1vbWVudCB2Mi45LiBXYXMgYnJlYWtpbmcgR0NhbCBwbHVnaW4gKFsyNDA4XSkKLSBWaWV3IG9iamVjdCdzIGB0aXRsZWAgcHJvcGVydHkgbWlzdGFrZW5seSBvbWl0dGVkIChbMjQwN10pCi0gU2luZ2xlLWRheSB2aWV3cyB3aXRoIGhpZGRlbnMgZGF5cyBjb3VsZCBjYXVzZSBwcmV2L25leHQgbWlzYmVoYXZpb3IgKFsyNDA2XSkKLSBEb24ndCBsZXQgdGhlIGN1cnJlbnQgZGF0ZSBldmVyIGJlIGEgaGlkZGVuIGRheSAoc29sdmVzIFsyMzk1XSkKLSBIZWJyZXcgbG9jYWxlIChbMjE1N10pCgpbMjQwOF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjQwOApbMjQwN106IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjQwNwpbMjQwNl06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjQwNgpbMjM5NV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjM5NQpbMjE1N106IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjE1NwoKCnYyLjIuNSAoMjAxNC0xMi0zMCkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBgYnV0dG9uVGV4dGAgc3BlY2lmaWVkIGZvciBjdXN0b20gdmlld3MgdmlhIHRoZSBgdmlld3NgIG9wdGlvbgoJLSBidWdmaXg6IHdyb25nIGRlZmF1bHQgdmFsdWUsIGNvdWxkbid0IG92ZXJyaWRlIGRlZmF1bHQKCS0gZmVhdHVyZTogZGVmYXVsdCB2YWx1ZSB0YWtlbiBmcm9tIGxvY2FsZQoKCnYyLjIuNCAoMjAxNC0xMi0yOSkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBBcmJpdHJhcnkgZHVyYXRpb25zIGZvciBiYXNpYy9hZ2VuZGEgdmlld3Mgd2l0aCB0aGUgYHZpZXdzYCBvcHRpb24gKFs2OTJdKQotIFNwZWNpZnkgdmlldy1zcGVjaWZpYyBvcHRpb25zIHVzaW5nIHRoZSBgdmlld3NgIG9wdGlvbi4gZml4ZXMgWzIyODNdCi0gRGVwcmVjYXRlIHZpZXctb3B0aW9uLWhhc2hlcwotIEZvcm1hbGl6ZSBhbmQgZXhwb3NlIFZpZXcgQVBJIChbMTA1NV0pCi0gdXBkYXRlRXZlbnQgbWV0aG9kLCBtb3JlIGludHVpdGl2ZSBiZWhhdmlvci4gZml4ZXMgWzIxOTRdCgpbNjkyXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD02OTIKWzIyODNdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIyODMKWzEwNTVdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTEwNTUKWzIxOTRdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIxOTQKCgp2Mi4yLjMgKDIwMTQtMTEtMjYpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gcmVtb3ZlRXZlbnRTb3VyY2Ugd2l0aCBHb29nbGUgQ2FsZW5kYXIgb2JqZWN0IHNvdXJjZSwgd291bGQgbm90IHJlbW92ZSAoWzIzNjhdKQotIEV2ZW50cyB3aXRoIGludmFsaWQgZW5kIGRhdGVzIGFyZSBzdGlsbCBhY2NlcHRlZCBhbmQgcmVuZGVyZWQgKFsyMzUwXSwgWzIyMzddLCBbMjI5Nl0pCi0gQnVnIHdoZW4gcmVuZGVyaW5nIGJ1c2luZXNzIGhvdXJzIGFuZCBuYXZpZ2F0aW5nIGF3YXkgZnJvbSBvcmlnaW5hbCB2aWV3IChbMjM2NV0pCi0gTGlua3MgdG8gR29vZ2xlIENhbGVuZGFyIGV2ZW50cyB3aWxsIHVzZSBjdXJyZW50IHRpbWV6b25lIChbMjEyMl0pCi0gR29vZ2xlIENhbGVuZGFyIHBsdWdpbiB3b3JrcyB3aXRoIHRpbWV6b25lIG5hbWVzIHRoYXQgaGF2ZSBzcGFjZXMKLSBHb29nbGUgQ2FsZW5kYXIgcGx1Z2luIGFjY2VwdHMgcGVyc29uIGVtYWlsIGFkZHJlc3NlcyBhcyBjYWxlbmRhciBJRHMKLSBJbnRlcm5hbGx5IHVzZSBudW1lcmljIHNvcnQgaW5zdGVhZCBvZiBhbHBoYW51bWVyaWMgc29ydCAoWzIzNzBdKQoKWzIzNjhdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIzNjgKWzIzNTBdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIzNTAKWzIyMzddOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIyMzcKWzIyOTZdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIyOTYKWzIzNjVdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIzNjUKWzIxMjJdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIxMjIKWzIzNzBdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIzNzAKCgp2Mi4yLjIgKDIwMTQtMTEtMTkpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gRml4ZXMgdG8gR29vZ2xlIENhbGVuZGFyIEFQSSBWMyBjb2RlCgktIHdvdWxkbid0IHJlY29nbml6ZSBhIGxvbmUtc3RyaW5nIEdvb2dsZSBDYWxlbmRhciBJRCBpZiBwZXJpb2RzIGJlZm9yZSB0aGUgQCBzeW1ib2wKCS0gcmVtb3ZlRXZlbnRTb3VyY2Ugd291bGRuJ3Qgd29yayB3aGVuIGdpdmVuIGEgR29vZ2xlIENhbGVuZGFyIElECgoKdjIuMi4xICgyMDE0LTExLTE5KQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIE1pZ3JhdGUgR29vZ2xlIENhbGVuZGFyIHBsdWdpbiB0byB1c2UgVjMgb2YgdGhlIEFQSSAoWzE1MjZdKQoKWzE1MjZdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTE1MjYKCgp2Mi4yLjAgKDIwMTQtMTEtMTQpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gQmFja2dyb3VuZCBldmVudHMuIEV2ZW50IG9iamVjdCdzIGByZW5kZXJpbmdgIHByb3BlcnR5IChbMTQ0XSwgWzEyODZdKQotIGBidXNpbmVzc0hvdXJzYCBvcHRpb24gKFsxNDRdKQotIENvbnRyb2xsaW5nIHdoZXJlIGV2ZW50cyBjYW4gYmUgZHJhZ2dlZC9yZXNpemVkIGFuZCBzZWxlY3Rpb25zIGNhbiBnbyAoWzM5Nl0sIFsxMjg2XSwgWzIyNTNdKQoJLSBgZXZlbnRPdmVybGFwYCwgYHNlbGVjdE92ZXJsYXBgLCBhbmQgc2ltaWxhcgoJLSBgZXZlbnRDb25zdHJhaW50YCwgYHNlbGVjdENvbnN0cmFpbnRgLCBhbmQgc2ltaWxhcgotIEltcHJvdmVtZW50cyB0byBkcmFnZ2luZyBhbmQgZHJvcHBpbmcgZXh0ZXJuYWwgZXZlbnRzIChbMjAwNF0pCgktIEFzc29jaWF0aW5nIHdpdGggcmVhbCBldmVudCBkYXRhLiB1c2VkIHdpdGggYGV2ZW50UmVjZWl2ZWAKCS0gQXNzb2NpYXRpbmcgYSBgZHVyYXRpb25gCi0gUGVyZm9ybWFuY2UgYm9vc3QgZm9yIG1vbWVudCBjcmVhdGlvbgoJLSBCZSBhd2FyZSwgRnVsbENhbGVuZGFyLXNwZWNpZmljIG1ldGhvZHMgbm93IGF0dGFjaGVkIGRpcmVjdGx5IHRvIGdsb2JhbCBtb21lbnQuZm4KCS0gSGVscHMgd2l0aCBbaXNzdWUgMjI1OV1bMjI1OV0KLSBSZWludHJvZHVjZWQgZm9yZ290dGVuIGBkcm9wQWNjZXB0YCBvcHRpb24gKFsyMzEyXSkKClsxNDRdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTE0NApbMzk2XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0zOTYKWzEyODZdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTEyODYKWzIwMDRdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIwMDQKWzIyNTNdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIyNTMKWzIyNTldOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIyNTkKWzIzMTJdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIzMTIKCgp2Mi4xLjEgKDIwMTQtMDgtMjkpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gcmVtb3ZlRXZlbnRTb3VyY2Ugbm90IHdvcmtpbmcgd2l0aCBhcnJheSAoWzIyMDNdKQotIG1vdXNlb3V0IG5vdCB0cmlnZ2VyZWQgYWZ0ZXIgbW91c2VvdmVyK3VwZGF0ZUV2ZW50IChbODI5XSkKLSBhZ2VuZGEgZXZlbnQncyByZW5kZXIgd2l0aCBubyA8YT4gaHJlZiwgbm90IGNsaWNrYWJsZSAoWzIyNjNdKQoKWzIyMDNdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIyMDMKWzgyOV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9ODI5ClsyMjYzXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMjYzCgoKdjIuMS4wICgyMDE0LTA4LTI1KQotLS0tLS0tLS0tLS0tLS0tLS0tCgpMYXJnZSBjb2RlIHJlZmFjdG9yIHdpdGggYmV0dGVyIE9PUCwgYmV0dGVyIGNvZGUgcmV1c2UsIGFuZCBtb3JlIGNvbW1lbnRzLgoqKk5vIG1vcmUgcmVsaWFuY2Ugb24galF1ZXJ5IFVJKiogZm9yIGV2ZW50IGRyYWdnaW5nLCByZXNpemluZywgb3IgYW55dGhpbmcgZWxzZS4KClNpZ25pZmljYW50IGNoYW5nZXMgdG8gSFRNTC9DU1Mgc2tlbGV0b246Ci0gTGV2ZXJhZ2VzIHRhYmxlcyBmb3IgbGlxdWlkIHJlbmRlcmluZyBvZiBkYXlzIGFuZCBldmVudHMuIE5vIGNvc3RseSBtYW51YWwgcmVwb3NpdGlvbmluZyAoWzgwOV0pCi0gKipCYWNrd2FyZHMtaW5jb21wYXRpYmlsaXRpZXMqKjoKCS0gKipNYW55IGNsYXNzTmFtZXMgaGF2ZSBjaGFuZ2VkLiBDdXN0b20gQ1NTIHdpbGwgbGlrZWx5IG5lZWQgdG8gYmUgYWRqdXN0ZWQuKioKCS0gSUU3IGRlZmluaXRlbHkgbm90IHN1cHBvcnRlZCBhbnltb3JlCgktIEluIGBldmVudFJlbmRlcmAgY2FsbGJhY2ssIGBlbGVtZW50YCB3aWxsIG5vdCBiZSBhdHRhY2hlZCB0byBET00geWV0CgktIEV2ZW50cyBhcmUgc3R5bGVkIHRvIGJlIG9uZSBsaW5lIGJ5IGRlZmF1bHQgKFsxOTkyXSkuIENhbiBiZSB1bmRvbmUgdGhyb3VnaCBjdXN0b20gQ1NTLAoJICBidXQgbm90IHJlY29tbWVuZGVkIChtaWdodCBnZXQgZ2FwcyBbbGlrZSB0aGlzXVsxMTFdIGluIGNlcnRhaW4gc2l0dWF0aW9ucykuCgpBICJtb3JlLi4uIiBsaW5rIHdoZW4gdGhlcmUgYXJlIHRvbyBtYW55IGV2ZW50cyBvbiBhIGRheSAoWzMwNF0pLiBXb3JrcyB3aXRoIG1vbnRoIGFuZCBiYXNpYyB2aWV3cwphcyB3ZWxsIGFzIHRoZSBhbGwtZGF5IHNlY3Rpb24gb2YgdGhlIGFnZW5kYSB2aWV3cy4gTmV3IG9wdGlvbnM6Ci0gYGV2ZW50TGltaXRgLiBhIG51bWJlciBvciBgdHJ1ZWAKLSBgZXZlbnRMaW1pdENsaWNrYC4gdGhlIGAicG9wb3ZlcmAiIHZhbHVlIHdpbGwgcmV2ZWFsIGFsbCBldmVudHMgaW4gYSByYWlzZWQgcGFuZWwgKHRoZSBkZWZhdWx0KQotIGBldmVudExpbWl0VGV4dGAKLSBgZGF5UG9wb3ZlckZvcm1hdGAKCkNoYW5nZXMgcmVsYXRlZCB0byBoZWlnaHQgYW5kIHNjcm9sbGJhcnM6Ci0gYGFzcGVjdFJhdGlvYC9gaGVpZ2h0YC9gY29udGVudEhlaWdodGAgdmFsdWVzIHdpbGwgYmUgaG9ub3JlZCAqbm8gbWF0dGVyIHdoYXQqCgktIElmIHRvbyBtYW55IGV2ZW50cyBjYXVzaW5nIHRvbyBtdWNoIHZlcnRpY2FsIHNwYWNlLCBzY3JvbGxiYXJzIHdpbGwgYmUgdXNlZCAoWzcyOF0pLgoJICBUaGlzIGlzIGRlZmF1bHQgYmVoYXZpb3IgZm9yIG1vbnRoIHZpZXcgKCoqYmFja3dhcmRzLWluY29tcGF0aWJpbGl0eSoqKQoJLSBJZiB0b28gZmV3IHNsb3RzIGluIGFnZW5kYSB2aWV3LCB2aWV3IHdpbGwgc3RyZXRjaCB0byBiZSB0aGUgY29ycmVjdCBoZWlnaHQgKFsyMTk2XSkKLSBgJ2F1dG8nYCB2YWx1ZSBmb3IgYGhlaWdodGAvYGNvbnRlbnRIZWlnaHRgIG9wdGlvbnMuIElmIGNvbnRlbnQgaXMgdG9vIHRhbGwsIHRoZSB2aWV3IHdpbGwKICB2ZXJ0aWNhbGx5IHN0cmV0Y2ggdG8gYWNjb21vZGF0ZSBhbmQgbm8gc2Nyb2xsYmFycyB3aWxsIGJlIHVzZWQgKFs1MjFdKS4KLSBUYWxsIHdlZWtzIGluIG1vbnRoIHZpZXcgd2lsbCBib3Jyb3cgaGVpZ2h0IGZyb20gb3RoZXIgd2Vla3MgKFsyNDNdKQotIEF1dG9tYXRpY2FsbHkgc2Nyb2xsIHRoZSB2aWV3IHRoZW4gZHJhZ2dpbmcvcmVzaXppbmcgYW4gZXZlbnQgKFsxMDI1XSwgWzIwNzhdKQotIE5ldyBgZml4ZWRXZWVrQ291bnRgIG9wdGlvbiB0byBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2Ygd2Vla3MgaW4gbW9udGggdmlldwoJLSBTdXBlcnNlZGVzIGB3ZWVrTW9kZWAgKCoqZGVwcmVjYXRlZCoqKS4gSW5zdGVhZCwgdXNlIGEgY29tYmluYXRpb24gb2YgYGZpeGVkV2Vla0NvdW50YCBhbmQKCSAgb25lIG9mIHRoZSBoZWlnaHQgb3B0aW9ucywgcG9zc2libHkgd2l0aCBhbiBgJ2F1dG8nYCB2YWx1ZQoKTXVjaCBuaWNlciwgZ2xpdGNoLWZyZWUgcmVuZGVyaW5nIG9mIGNhbGVuZGFyICpmb3IgcHJpbnRlcnMqIChbMzVdKS4gVGhpbmdzIHlvdSBtaWdodCBub3QgZXhwZWN0OgotIEJ1dHRvbnMgd2lsbCBiZWNvbWUgaGlkZGVuCi0gQWdlbmRhIHZpZXdzIGRpc3BsYXkgYSBmbGF0IGxpc3Qgb2YgZXZlbnRzIHdoZXJlIHRoZSB0aW1lIHNsb3RzIHdvdWxkIGJlCgpPdGhlciBpc3N1ZXMgcmVzb2x2ZWQgYWxvbmcgdGhlIHdheToKLSBTcGFjZSBvbiByaWdodCBzaWRlIG9mIGFnZW5kYSBldmVudHMgY29uZmlndXJhYmxlIHRocm91Z2ggQ1NTIChbMjA0XSkKLSBQcm9ibGVtIHdpdGggd2luZG93IHJlc2l6ZSAoWzI1OV0pCi0gRXZlbnRzIHNvcnRpbmcgc3RheXMgY29uc2lzdGVudCBhY3Jvc3Mgd2Vla3MgKFs1MTBdKQotIEFnZW5kYSdzIGNvbHVtbnMgbWlzYWxpZ25lZCBvbiB3aWRlIHNjcmVlbnMgKFs1MTFdKQotIFJ1biBgc2VsZWN0SGVscGVyYCB0aHJvdWdoIGBldmVudFJlbmRlcmAgY2FsbGJhY2tzIChbNjI5XSkKLSBLZXlib2FyZCBhY2Nlc3MsIHRhYmJpbmcgKFs2MzddKQotIFJ1biByZXNpemluZyBldmVudHMgdGhyb3VnaCBgZXZlbnRSZW5kZXJgIChbNzE0XSkKLSBSZXNpemUgYW4gZXZlbnQgdG8gYSBkaWZmZXJlbnQgZGF5IGluIGFnZW5kYSB2aWV3cyAoWzczNl0pCi0gQWxsb3cgc2VsZWN0aW9uIGFjcm9zcyBkYXlzIGluIGFnZW5kYSB2aWV3cyAoWzc3OF0pCi0gTW91c2VlbnRlciBkZWxlZ2F0ZWQgZXZlbnQgbm90IHdvcmtpbmcgb24gZXZlbnQgZWxlbWVudHMgKFs5MzZdKQotIEFnZW5kYSBldmVudCBkcmFnZ2luZywgc25hcHBpbmcgdG8gZGlmZmVyZW50IGNvbHVtbnMgaXMgZXJyYXRpYyAoWzExMDFdKQotIEFuZHJvaWQgYnJvd3NlciBjdXRzIG9mZiBEYXkgdmlldyBhdCA4IFBNIHdpdGggbm8gc2Nyb2xsIGJhciAoWzEyMDNdKQotIERvbid0IGZpcmUgYGV2ZW50TW91c2VvdmVyYC9gZXZlbnRNb3VzZW91dGAgd2hpbGUgZHJhZ2dpbmcvcmVzaXppbmcgKFsxMjk3XSkKLSBDdXN0b21pemUgdGhlIHJlc2l6ZSBoYW5kbGUgdGV4dCAoIj0iKSAoWzEzMjZdKQotIElmIGFnZW5kYSBldmVudCBpcyB0b28gc2hvcnQsIGRvbid0IG92ZXJ3cml0ZSBgLmZjLWV2ZW50LXRpbWVgIChbMTcwMF0pCi0gWm9vbWluZyBjYWxlbmRhciBjYXVzZXMgZXZlbnRzIHRvIG1pc2FsaWduIChbMTk5Nl0pCi0gRXZlbnQgZGVzdHJveSBjYWxsYmFjayBvbiBldmVudCByZW1vdmFsIChbMjAxN10pCi0gQWdlbmRhIHZpZXdzLCB3aGVuIFJUTCwgc2hvdWxkIGhhdmUgYXhpcyBvbiByaWdodCAoWzIxMzJdKQotIE1ha2UgaGVhZGVyIGJ1dHRvbnMgbW9yZSBhY2Nlc3NpYmlsZSAoWzIxNTFdKQotIGRheVNlbGVjdGlvbk1vdXNlZG93biBzaG91bGQgaW50ZXJwcmV0IE9TWCBjdHJsK2NsaWNrIGFzIGEgcmlnaHQgbW91c2UgY2xpY2sgKFsyMTY5XSkKLSBCZXN0IHdheSB0byBkaXNwbGF5IHRpbWUgdGV4dCBvbiBtdWx0aS1kYXkgZXZlbnRzICp3aXRoIHRpbWVzKiAoWzIxNzJdKQotIEVsaW1pbmF0ZSB0YWJsZSB1c2UgZm9yIGhlYWRlciBsYXlvdXQgKFsyMTg2XSkKLSBFdmVudCBkZWxlZ2F0aW9uIHVzZWQgZm9yIGV2ZW50LXJlbGF0ZWQgY2FsbGJhY2tzIChsaWtlIGBldmVudENsaWNrYCkuIFNwZWVkaWVyLgoKWzM1XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0zNQpbMjA0XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMDQKWzI0M106IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjQzClsyNTldOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTI1OQpbMzA0XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0zMDQKWzUxMF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NTEwCls1MTFdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTUxMQpbNTIxXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD01MjEKWzYyOV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NjI5Cls2MzddOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTYzNwpbNzE0XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD03MTQKWzcyOF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NzI4Cls3MzZdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTczNgpbNzc4XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD03NzgKWzgwOV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9ODA5Cls5MzZdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTkzNgpbMTAyNV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MTAyNQpbMTEwMV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MTEwMQpbMTIwM106IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MTIwMwpbMTI5N106IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MTI5NwpbMTMyNl06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MTMyNgpbMTcwMF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MTcwMApbMTk5Ml06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MTk5MgpbMTk5Nl06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MTk5NgpbMjAxN106IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjAxNwpbMjA3OF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjA3OApbMjEzMl06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjEzMgpbMjE1MV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjE1MQpbMjE2OV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjE2OQpbMjE3Ml06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjE3MgpbMjE4Nl06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjE4NgpbMjE5Nl06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjE5NgpbMTExXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0xMTEKCgp2Mi4wLjMgKDIwMTQtMDgtMTUpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gbW9tZW50LTIuOC4xIGNvbXBhdGliaWxpdHkgKFsyMjIxXSkKLSByZWxhdGl2ZSBwYXRoIGluIGJvd2VyLmpzb24gKFtQUiAxMTddKQotIHVwZ3JhZGVkIGpxdWVyeS11aSBhbmQgbWlzYyBkZXYgZGVwZW5kZW5jaWVzCgpbMjIyMV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjIyMQpbUFIgMTE3XTogaHR0cHM6Ly9naXRodWIuY29tL2Fyc2hhdy9mdWxsY2FsZW5kYXIvcHVsbC8xNzcKCgp2Mi4wLjIgKDIwMTQtMDYtMjQpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gYnVnIHdpdGggcGVyc2lzdGluZyBhZGRFdmVudFNvdXJjZSBjYWxscyAoWzIxOTFdKQotIGJ1ZyB3aXRoIHBlcnNpc3RpbmcgcmVtb3ZlRXZlbnRzIGNhbGxzIHdpdGggYW4gYXJyYXkgc291cmNlIChbMjE4N10pCi0gYnVnIHdpdGggcmVtb3ZlRXZlbnRzIG1ldGhvZCB3aGVuIGNhbGxlZCB3aXRoIDAgcmVtb3ZlcyBhbGwgZXZlbnRzIChbMjA4Ml0pCgpbMjE5MV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjE5MQpbMjE4N106IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjE4NwpbMjA4Ml06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjA4MgoKCnYyLjAuMSAoMjAxNC0wNi0xNSkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBgZGVsdGFgIHBhcmFtZXRlcnMgcmVpbnRyb2R1Y2VkIGluIGBldmVudERyb3BgIGFuZCBgZXZlbnRSZXNpemVgIGhhbmRsZXJzIChbMjE1Nl0pCiAgLSAqKk5vdGUqKjogdGhpcyBjaGFuZ2VzIHRoZSBhcmd1bWVudCBvcmRlciBmb3IgYHJldmVydEZ1bmNgCi0gd3JvbmdmdWxseSB0cmlnZ2VyaW5nIGEgd2luZG93UmVzaXplIHdoZW4gcmVzaXppbmcgYW4gYWdlbmRhIHZpZXcgZXZlbnQgKFsxMTE2XSkKLSBgdGhpc2AgdmFsdWVzIGluIGV2ZW50IGRyYWctbi1kcm9wL3Jlc2l6ZSBoYW5kbGVycyBjb25zaXN0ZW50bHkgdGhlIERPTSBub2RlIChbMTE3N10pCi0gYGRpc3BsYXlFdmVudEVuZGAgLSB2MiB3b3JrYXJvdW5kIHRvIGZvcmNlIGRpc3BsYXkgb2YgYW4gZW5kIHRpbWUgKFsyMDkwXSkKLSBkb24ndCBtb2RpZnkgcGFzc2VkLWluIGV2ZW50U291cmNlIGl0ZW1zIChbOTU0XSkKLSBkZXN0cm95IG1ldGhvZCBub3cgcmVtb3ZlcyBmYy1sdHIgY2xhc3MgKFsyMDMzXSkKLSB3ZWVrcyBvZiBsYXN0L25leHQgbW9udGggc3RpbGwgdmlzaWJsZSB3aGVuIHdlZWtlbmRzIGFyZSBoaWRkZW4gKFsyMDk1XSkKLSBmaXhlZCBtZW1vcnkgbGVhayB3aGVuIGRlc3Ryb3lpbmcgY2FsZW5kYXIgd2l0aCBzZWxlY3RhYmxlL2Ryb3BwYWJsZSAoWzIxMzddKQotIEljZWxhbmRpYyBsYW5ndWFnZSAoWzIxODBdKQotIEJhaGFzYSBJbmRvbmVzaWEgbGFuZ3VhZ2UgKFtQUiAxNzJdKQoKWzExMTZdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTExMTYKWzExNzddOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTExNzcKWzIwOTBdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTIwOTAKWzk1NF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9OTU0ClsyMDMzXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMDMzClsyMDk1XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMDk1ClsyMTM3XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMTM3ClsyMTU2XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMTU2ClsyMTgwXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0yMTgwCltQUiAxNzJdOiBodHRwczovL2dpdGh1Yi5jb20vYXJzaGF3L2Z1bGxjYWxlbmRhci9wdWxsLzE3MgoKCnYyLjAuMCAoMjAxNC0wNi0wMSkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKSW50ZXJuYXRpb25hbGl6YXRpb24gc3VwcG9ydCwgdGltZXpvbmUgc3VwcG9ydCwgYW5kIFtNb21lbnRKU10gaW50ZWdyYXRpb24uIEV4dGVuc2l2ZSBjaGFuZ2VzLCBtYW55Cm9mIHdoaWNoIGFyZSBiYWNrd2FyZHMgaW5jb21wYXRpYmxlLgoKW0Z1bGwgbGlzdCBvZiBjaGFuZ2VzXVtVcGdyYWRpbmctdG8tdjJdIHwgW0FmZmVjdGVkIElzc3Vlc11bRGF0ZS1NaWxlc3RvbmVdCgpBbiBhdXRvbWF0ZWQgdGVzdGluZyBmcmFtZXdvcmsgaGFzIGJlZW4gc2V0IHVwIChbS2FybWFdICsgW0phc21pbmVdKSBhbmQgdGVzdHMgaGF2ZSBiZWVuIHdyaXR0ZW4Kd2hpY2ggY292ZXIgYWJvdXQgaGFsZiBvZiBGdWxsQ2FsZW5kYXIncyBmdW5jdGlvbmFsaXR5LiBTcGVjaWFsIHRoYW5rcyB0byBAaW5jcmUtZCwgQHZpZGJpbmEsIGFuZApAc2lycm9jY28gZm9yIHRoZSBoZWxwLgoKSW4gYWRkaXRpb24sIHRoZSBtYWluIGRldmVsb3BtZW50IHJlcG8gaGFzIGJlZW4gcmVwdXJwb3NlZCB0byBhbHNvIGluY2x1ZGUgdGhlIGJ1aWx0IGRpc3RyaWJ1dGFibGUKSlMvQ1NTIGZvciB0aGUgcHJvamVjdCBhbmQgd2lsbCBzZXJ2ZSBhcyB0aGUgbmV3IFtCb3dlcl0gZW5kcG9pbnQuCgpbTW9tZW50SlNdOiBodHRwOi8vbW9tZW50anMuY29tLwpbVXBncmFkaW5nLXRvLXYyXTogaHR0cDovL2Fyc2hhdy5jb20vZnVsbGNhbGVuZGFyL3dpa2kvVXBncmFkaW5nLXRvLXYyLwpbRGF0ZS1NaWxlc3RvbmVdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvbGlzdD9jYW49MSZxPW1pbGVzdG9uZSUzRGRhdGUKW0thcm1hXTogaHR0cDovL2thcm1hLXJ1bm5lci5naXRodWIuaW8vCltKYXNtaW5lXTogaHR0cDovL2phc21pbmUuZ2l0aHViLmlvLwpbQm93ZXJdOiBodHRwOi8vYm93ZXIuaW8vCgoKdjEuNi40ICgyMDEzLTA5LTAxKQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIGJldHRlciBhbGdvcml0aG0gZm9yIHBvc2l0aW9uaW5nIHRpbWVkIGFnZW5kYSBldmVudHMgKFsxMTE1XSkKLSBgc2xvdEV2ZW50T3ZlcmxhcGAgb3B0aW9uIHRvIHR3ZWFrIHRpbWVkIGFnZW5kYSBldmVudCBvdmVybGFwcGluZyAoWzIxOF0pCi0gc2VsZWN0aW9uIGJ1ZyB3aGVuIHNsb3QgaGVpZ2h0IGlzIGN1c3RvbWl6ZWQgKFsxMDM1XSkKLSBzdXBwbHkgdmlldyBhcmd1bWVudCBpbiBgbG9hZGluZ2AgY2FsbGJhY2sgKFsxMDE4XSkKLSBmaXhlZCB3ZWVrIG51bWJlciBub3QgZGlzcGxheWluZyBpbiBhZ2VuZGEgdmlld3MgKFsxOTUxXSkKLSBmaXhlZCBmdWxsQ2FsZW5kYXIgbm90IGluaXRpYWxpemluZyB3aXRoIG5vIG9wdGlvbnMgKFsxMzU2XSkKLSBOUE0ncyBgcGFja2FnZS5qc29uYCwgbm8gbW9yZSB3YXJuaW5ncyBvciBlcnJvcnMgKFsxNzYyXSkKLSBidWlsZGluZyB0aGUgYm93ZXIgY29tcG9uZW50IHNob3VsZCBvdXRwdXQgYGJvd2VyLmpzb25gIGluc3RlYWQgb2YgYGNvbXBvbmVudC5qc29uYCAoW1BSIDEyNV0pCi0gdXNlIGJvd2VyIGludGVybmFsbHkgZm9yIGZldGNoaW5nIG5ldyB2ZXJzaW9ucyBvZiBqUXVlcnkgYW5kIGpRdWVyeSBVSQoKWzExMTVdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTExMTUKWzIxOF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjE4ClsxMDM1XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0xMDM1ClsxMDE4XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0xMDE4ClsxOTUxXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0xOTUxClsxMzU2XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0xMzU2ClsxNzYyXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0xNzYyCltQUiAxMjVdOiBodHRwczovL2dpdGh1Yi5jb20vYXJzaGF3L2Z1bGxjYWxlbmRhci9wdWxsLzEyNQoKCnYxLjYuMyAoMjAxMy0wOC0xMCkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBgdmlld1JlbmRlcmAgY2FsbGJhY2sgKFtQUiAxNV0pCi0gYHZpZXdEZXN0cm95YCBjYWxsYmFjayAoW1BSIDE1XSkKLSBgZXZlbnREZXN0cm95YCBjYWxsYmFjayAoW1BSIDExMV0pCi0gYGhhbmRsZVdpbmRvd1Jlc2l6ZWAgb3B0aW9uIChbUFIgNTRdKQotIGBldmVudFN0YXJ0RWRpdGFibGVgL2BzdGFydEVkaXRhYmxlYCBvcHRpb25zIChbUFIgNDldKQotIGBldmVudER1cmF0aW9uRWRpdGFibGVgL2BkdXJhdGlvbkVkaXRhYmxlYCBvcHRpb25zIChbUFIgNDldKQotIHNwZWNpZnkgZnVuY3Rpb24gZm9yIGAkLmFqYXhgIGBkYXRhYCBwYXJhbWV0ZXIgZm9yIEpTT04gZXZlbnQgc291cmNlcyAoW1BSIDU5XSkKLSBmaXhlZCBidWcgd2l0aCBhZ2VuZGEgZXZlbnQgZHJvcHBpbmcgaW4gd3JvbmcgY29sdW1uIChbUFIgNTVdKQotIGVhc2llciBldmVudCBlbGVtZW50IHotaW5kZXggY3VzdG9taXphdGlvbiAoW1BSIDU4XSkKLSBjbGFzc05hbWVzIG9uIHBhc3QvZnV0dXJlIGRheXMgKFtQUiA4OF0pCi0gYWxsb3cgYG51bGxgL2B1bmRlZmluZWRgIGV2ZW50IHRpdGxlcyAoW1BSIDg0XSkKLSBzbWFsbCBvcHRpbWl6ZSBmb3IgYWdlbmRhIGV2ZW50IHJlbmRlcmluZyAoW1BSIDU2XSkKLSBkZXByZWNhdGVkOgoJLSBgdmlld0Rpc3BsYXlgCgktIGBkaXNhYmxlRHJhZ2dpbmdgCgktIGBkaXNhYmxlUmVzaXppbmdgCi0gYnVuZGxlZCB3aXRoIGxhdGVzdCBqUXVlcnkgKDEuMTAuMikgYW5kIGpRdWVyeSBVSSAoMS4xMC4zKQoKW1BSIDE1XTogaHR0cHM6Ly9naXRodWIuY29tL2Fyc2hhdy9mdWxsY2FsZW5kYXIvcHVsbC8xNQpbUFIgMTExXTogaHR0cHM6Ly9naXRodWIuY29tL2Fyc2hhdy9mdWxsY2FsZW5kYXIvcHVsbC8xMTEKW1BSIDU0XTogaHR0cHM6Ly9naXRodWIuY29tL2Fyc2hhdy9mdWxsY2FsZW5kYXIvcHVsbC81NApbUFIgNDldOiBodHRwczovL2dpdGh1Yi5jb20vYXJzaGF3L2Z1bGxjYWxlbmRhci9wdWxsLzQ5CltQUiA1OV06IGh0dHBzOi8vZ2l0aHViLmNvbS9hcnNoYXcvZnVsbGNhbGVuZGFyL3B1bGwvNTkKW1BSIDU1XTogaHR0cHM6Ly9naXRodWIuY29tL2Fyc2hhdy9mdWxsY2FsZW5kYXIvcHVsbC81NQpbUFIgNThdOiBodHRwczovL2dpdGh1Yi5jb20vYXJzaGF3L2Z1bGxjYWxlbmRhci9wdWxsLzU4CltQUiA4OF06IGh0dHBzOi8vZ2l0aHViLmNvbS9hcnNoYXcvZnVsbGNhbGVuZGFyL3B1bGwvODgKW1BSIDg0XTogaHR0cHM6Ly9naXRodWIuY29tL2Fyc2hhdy9mdWxsY2FsZW5kYXIvcHVsbC84NApbUFIgNTZdOiBodHRwczovL2dpdGh1Yi5jb20vYXJzaGF3L2Z1bGxjYWxlbmRhci9wdWxsLzU2CgoKdjEuNi4yICgyMDEzLTA3LTE4KQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIGBoaWRkZW5EYXlzYCBvcHRpb24gKFs2ODZdKQotIGJ1Z2ZpeDogd2hlbiBgZXZlbnRSZW5kZXJgIHJldHVybnMgYGZhbHNlYCwgaW5jb3JyZWN0IHN0YWNraW5nIG9mIGV2ZW50cyAoWzc2Ml0pCi0gYnVnZml4OiBjb3VsZG4ndCBjaGFuZ2UgYGV2ZW50LmJhY2tncm91bmRJbWFnZWAgd2hlbiBjYWxsaW5nIGB1cGRhdGVFdmVudGAgKHRoeCBAc3RlcGhlbmhhcnJpcykKCls2ODZdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTY4NgpbNzYyXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD03NjIKCgp2MS42LjEgKDIwMTMtMDQtMTQpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gZml4ZWQgZXZlbnQgaW5uZXIgY29udGVudCBvdmVyZmxvdyBidWcgKFsxNzgzXSkKLSBmaXhlZCB0YWJsZSBoZWFkZXIgY2xhc3NOYW1lIGJ1ZyBbMTc3Ml0KLSByZW1vdmVkIHRleHQtc2hhZG93IG9uIGV2ZW50cyAoYmV0dGVyIGZvciBnZW5lcmFsIHVzZSwgdGh4IEB0a3JvdG9mZikKClsxNzgzXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0xNzgzClsxNzcyXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0xNzcyCgoKdjEuNi4wICgyMDEzLTAzLTE4KQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIHZpc3VhbCBmYWNlbGlmdCwgd2l0aCBib290c3RyYXAtaW5zcGlyZWQgYnV0dG9ucyBhbmQgY29sb3JzCi0gc2ltcGxpZmllZCBIVE1ML0NTUyBmb3IgZXZlbnRzIGFuZCBidXR0b25zCi0gYGRheVJlbmRlcmAsIGZvciBtb2RpZnlpbmcgYSBkYXkgY2VsbCAoWzE5MV0sIHRoeCBAYWx0aGF1cykKLSB3ZWVrIG51bWJlcnMgb24gc2lkZSBvZiBjYWxlbmRhciAoWzI5NV0pCgktIGB3ZWVrTnVtYmVyYAoJLSBgd2Vla051bWJlckNhbGN1bGF0aW9uYAoJLSBgd2Vla051bWJlclRpdGxlYAoJLSBgV2AgZm9ybWF0dGluZyB2YXJpYWJsZQotIGZpbmVyIHNuYXBwaW5nIGdyYW51bGFyaXR5IGZvciBhZ2VuZGEgdmlldyBldmVudHMgKFs0OTVdLCB0aHggQG1zLWRvb2RsZS1jb20pCi0gYGV2ZW50QWZ0ZXJBbGxSZW5kZXJgIChbNzUzXSwgdGh4IEBwZHJha2V3ZWIpCi0gYGV2ZW50RGF0YVRyYW5zZm9ybWAgKHRoeCBAam9leXNwbykKLSBgZGF0YS1kYXRlYCBhdHRyaWJ1dGVzIG9uIGNlbGxzICh0aHggQEphZSkKLSBleHBvc2UgYCQuZnVsbENhbGVuZGFyLmRhdGVGb3JtYXR0ZXJzYAotIHdoZW4gY2xpY2tpbmcgZmFzdCBvbiBidXR0b25zLCBwcmV2ZW50IHRleHQgc2VsZWN0aW9uCi0gYnVuZGxlZCB3aXRoIGxhdGVzdCBqUXVlcnkgKDEuOS4xKSBhbmQgalF1ZXJ5IFVJICgxLjEwLjIpCi0gR3J1bnQvTHVtYmFyIGJ1aWxkIHN5c3RlbSBmb3IgaW50ZXJuYWwgZGV2ZWxvcG1lbnQKLSBidWlsZCBmb3IgQm93ZXIgcGFja2FnZSBtYW5hZ2VyCi0gYnVpbGQgZm9yIGpRdWVyeSBwbHVnaW4gc2l0ZQoKWzE5MV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MTkxClsyOTVdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTI5NQpbNDk1XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD00OTUKWzc1M106IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NzUzCgoKdjEuNS40ICgyMDEyLTA5LTA1KQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIG1hZGUgY29tcGF0aWJsZSB3aXRoIGpRdWVyeSAxLjguKiAodGh4IEBhcmNoYWVyb24pCi0gYnVuZGxlZCB3aXRoIGpRdWVyeSAxLjguMSBhbmQgalF1ZXJ5IFVJIDEuOC4yMwoKCnYxLjUuMyAoMjAxMi0wMi0wNikKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBmaXhlZCBkcmFnZ2luZyBpc3N1ZSB3aXRoIGpRdWVyeSBVSSAxLjguMTYgKFsxMTY4XSkKLSBidW5kbGVkIHdpdGggalF1ZXJ5IDEuNy4xIGFuZCBqUXVlcnkgVUkgMS44LjE3CgpbMTE2OF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MTE2OAoKCnYxLjUuMiAoMjAxMS0wOC0yMSkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBjb3JyZWN0bHkgcHJvY2VzcyBVVEMgIloiIElTTzg2MDEgZGF0ZSBzdHJpbmdzIChbNzUwXSkKCls3NTBdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTc1MAoKCnYxLjUuMSAoMjAxMS0wNC0wOSkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBtb3JlIGZsZXhpYmxlIElTTzg2MDEgZGF0ZSBwYXJzaW5nIChbODE0XSkKLSBtb3JlIGZsZXhpYmxlIHBhcnNpbmcgb2YgVU5JWCB0aW1lc3RhbXBzIChbODI2XSkKLSBGdWxsQ2FsZW5kYXIgbm93IGJ1aWxkYWJsZSBmcm9tIHNvdXJjZSBvbiBhIE1hYyAoWzc5NV0pCi0gRnVsbENhbGVuZGFyIFFBJ2QgaW4gRkY0IChbODgzXSkKLSB1cGdyYWRlZCB0byBqUXVlcnkgMS41LjIgKHdoaWNoIHN1cHBvcnRzIElFOSkgYW5kIGpRdWVyeSBVSSAxLjguMTEKCls4MTRdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTgxNApbODI2XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD04MjYKWzc5NV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9Nzk1Cls4ODNdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTg4MwoKCnYxLjUgKDIwMTEtMDMtMTkpCi0tLS0tLS0tLS0tLS0tLS0tCgotIHNsaWNrZXIgZGVmYXVsdCBzdHlsaW5nIGZvciBidXR0b25zCi0gcmV3b3JrZWQgYSBsb3Qgb2YgdGhlIGNhbGVuZGFyJ3MgSFRNTCBhbmQgYWNjb21wYW55aW5nIENTUyAoc29sdmVzIFszMjddIGFuZCBbMzk1XSkKLSBtb3JlIHByaW50ZXItZnJpZW5kbHkgKGZ1bGxjYWxlbmRhci1wcmludC5jc3MpCi0gZnVsbGNhbGVuZGFyIG5vdyBpbmhlcml0cyBzdHlsZXMgZnJvbSBqcXVlcnktdWkgdGhlbWVzIGRpZmZlcmVudGx5LgogIHN0eWxlcyBmb3IgYnV0dG9ucyBhcmUgZGlzdGluY3QgZnJvbSBzdHlsZXMgZm9yIGNhbGVuZGFyIGNlbGxzLgogIChzb2x2ZXMgWzI5OV0pCi0gY2FuIG5vdyBjb2xvciBldmVudHMgdGhyb3VnaCBGdWxsQ2FsZW5kYXIgb3B0aW9ucyBhbmQgRXZlbnQtT2JqZWN0IHByb3BlcnRpZXMgKFsxMTddKQogIFRISVMgSVMgTk9XIFRIRSBQUkVGRVJSRUQgTUVUSE9EIE9GIENPTE9SSU5HIEVWRU5UUyAoYXMgb3Bwb3NlZCB0byB1c2luZyBjbGFzc05hbWUgYW5kIENTUykKCS0gRnVsbENhbGVuZGFyIG9wdGlvbnM6CgkJLSBldmVudENvbG9yIChjaGFuZ2VzIGJvdGggYmFja2dyb3VuZCBhbmQgYm9yZGVyKQoJCS0gZXZlbnRCYWNrZ3JvdW5kQ29sb3IKCQktIGV2ZW50Qm9yZGVyQ29sb3IKCQktIGV2ZW50VGV4dENvbG9yCgktIEV2ZW50LU9iamVjdCBvcHRpb25zOgoJCS0gY29sb3IgKGNoYW5nZXMgYm90aCBiYWNrZ3JvdW5kIGFuZCBib3JkZXIpCgkJLSBiYWNrZ3JvdW5kQ29sb3IKCQktIGJvcmRlckNvbG9yCgkJLSB0ZXh0Q29sb3IKLSBjYW4gbm93IHNwZWNpZnkgYW4gZXZlbnQgc291cmNlIGFzIGFuICpvYmplY3QqIHdpdGggYSBgdXJsYCBwcm9wZXJ0eSAoanNvbiBmZWVkKSBvcgogIGFuIGBldmVudHNgIHByb3BlcnR5IChmdW5jdGlvbiBvciBhcnJheSkgd2l0aCBhZGRpdGlvbmFsIHByb3BlcnRpZXMgdGhhdCB3aWxsCiAgYmUgYXBwbGllZCB0byB0aGUgZW50aXJlIGV2ZW50IHNvdXJjZToKCS0gY29sb3IgKGNoYW5nZXMgYm90aCBiYWNrZ3JvdW5kIGFuZCBib3JkZXIpCgktIGJhY2tncm91ZENvbG9yCgktIGJvcmRlckNvbG9yCgktIHRleHRDb2xvcgoJLSBjbGFzc05hbWUKCS0gZWRpdGFibGUKCS0gYWxsRGF5RGVmYXVsdAoJLSBpZ25vcmVUaW1lem9uZQoJLSBzdGFydFBhcmFtIChmb3IgYSBmZWVkKQoJLSBlbmRQYXJhbSAgIChmb3IgYSBmZWVkKQoJLSBBTlkgT0YgVEhFIEpRVUVSWSAkLmFqYXggT1BUSU9OUwoJICBhbGxvd3MgZm9yIGVhc2lseSBjaGFuZ2luZyBmcm9tIEdFVCB0byBQT1NUIGFuZCBzZW5kaW5nIGFkZGl0aW9uYWwgcGFyYW1ldGVycyAoWzM4Nl0pCgkgIGFsbG93cyBmb3IgZWFzaWx5IGF0dGFjaGluZyBhamF4IGhhbmRsZXJzIHN1Y2ggYXMgYGVycm9yYCAoWzc1NF0pCgkgIGFsbG93cyBmb3IgdHVybmluZyBjYWNoaW5nIG9uIChbMzU1XSkKLSBHb29nbGUgQ2FsZW5kYXIgZmVlZHMgYXJlIG5vdyBzcGVjaWZpZWQgZGlmZmVyZW50bHk6CgktIHNwZWNpZnkgYSBzaW1wbGUgc3RyaW5nIG9mIHlvdXIgZmVlZCdzIFVSTAoJLSBzcGVjaWZ5IGFuICpvYmplY3QqIHdpdGggYSBgdXJsYCBwcm9wZXJ0eSBvZiB5b3VyIGZlZWQncyBVUkwuCgkgIHlvdSBjYW4gaW5jbHVkZSBhbnkgb2YgdGhlIG5ldyBFdmVudC1Tb3VyY2Ugb3B0aW9ucyBpbiB0aGlzIG9iamVjdC4KCS0gdGhlIG9sZCBgJC5mdWxsQ2FsZW5kYXIuZ2NhbEZlZWRgIG1ldGhvZCBzdGlsbCB3b3JrcwotIG5vIG1vcmUgSUU3IFNTTCBwb3B1cCAoWzUwNF0pCi0gcmVtb3ZlIGBjYWNoZVBhcmFtYCAtIHVzZSBqc29uIGV2ZW50IHNvdXJjZSBgY2FjaGVgIG9wdGlvbiBpbnN0ZWFkCi0gbGF0ZXN0IGpxdWVyeS9qcXVlcnktdWkKClszMjddOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTMyNwpbMzk1XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0zOTUKWzI5OV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9Mjk5ClsxMTddOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTExNwpbMzg2XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0zODYKWzc1NF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NzU0ClszNTVdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTM1NQpbNTA0XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD01MDQKCgp2MS40LjExICgyMDExLTAyLTIyKQotLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBmaXhlZCByZXJlbmRlckV2ZW50cyBidWcgKFs3OTBdKQotIGZpeGVkIGJ1ZyB3aXRoIGZhdWx0eSBkcmFnZ2luZyBvZiBldmVudHMgZnJvbSBhbGwtZGF5IHNsb3QgaW4gYWdlbmRhIHZpZXdzCi0gYnVuZGxlZCB3aXRoIGpxdWVyeSAxLjUgYW5kIGpxdWVyeS11aSAxLjguOQoKWzc5MF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NzkwCgoKdjEuNC4xMCAoMjAxMS0wMS0wMikKLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gZml4ZWQgYnVnIHdpdGggcmVzaXppbmcgZXZlbnQgdG8gZGlmZmVyZW50IHdlZWsgaW4gNS1kYXkgbW9udGggdmlldyAoWzc0MF0pCi0gZml4ZWQgYnVnIHdpdGggZXZlbnRzIG5vdCBzdGlja2luZyBhZnRlciBhIHJlbW92ZUV2ZW50cyBjYWxsIChbNzU3XSkKLSBmaXhlZCBidWcgd2l0aCB1bmRlcmx5aW5nIHBhcnNlVGltZSBtZXRob2QsIGFuZCBvdGhlciB1c2VzIG9mIHBhcnNlSW50IChbNjg4XSkKCls3NDBdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTc0MApbNzU3XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD03NTcKWzY4OF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9Njg4CgoKdjEuNC45ICgyMDEwLTExLTE2KQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIG5ldyBhbGdvcml0aG0gZm9yIHZlcnRpY2FsbHkgc3RhY2tpbmcgZXZlbnRzIChbMTExXSkKLSByZXNpemluZyBhbiBldmVudCB0byBhIGRpZmZlcmVudCB3ZWVrIChbMzA2XSkKLSBidWc6IHNvbWUgZXZlbnRzIG5vdCByZW5kZXJlZCB3aXRoIGNvbnNlY3V0aXZlIGNhbGxzIHRvIGFkZEV2ZW50U291cmNlIChbNjc5XSkKClsxMTFdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTExMQpbMzA2XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0zMDYKWzY3OV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9Njc5CgoKdjEuNC44ICgyMDEwLTEwLTE2KQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIGlnbm9yZVRpbWV6b25lIG9wdGlvbiAoc2V0IHRvIGBmYWxzZWAgdG8gcHJvY2VzcyBVVEMgb2Zmc2V0cyBpbiBJU084NjAxIGRhdGVzKQotIGJ1Z2ZpeGVzCgktIGV2ZW50IHJlZmV0Y2hpbmcgbm90IGJlaW5nIGNhbGxlZCB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMgKFs0MTddLCBbNTU0XSkKCS0gZXZlbnQgcmVmZXRjaGluZyBiZWluZyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zIChbNTg2XSwgWzYxNl0pCgktIHNlbGVjdGlvbiBjYW5ub3QgYmUgdHJpZ2dlcmVkIGJ5IHJpZ2h0IG1vdXNlIGJ1dHRvbiAoWzU1OF0pCgktIGFnZW5kYSB2aWV3IGxlZnQgYXhpcyBzaXplZCBpbmNvcnJlY3RseSAoWzQ2NV0pCgktIElFIGpzIGVycm9yIHdoZW4gY2FsZW5kYXIgaXMgdG9vIG5hcnJvdyAoWzUxN10pCgktIGFnZW5kYSB2aWV3IGxvb2tzIHN0cmFuZ2Ugd2hlbiBubyBzY3JvbGxiYXJzIChbMjM1XSkKCS0gaW1wcm92ZWQgcGFyc2luZyBvZiBJU084NjAxIGRhdGVzIHdpdGggVVRDIG9mZnNldHMKLSAkLmZ1bGxDYWxlbmRhci52ZXJzaW9uCi0gYW4gaW50ZXJuYWwgcmVmYWN0b3Igb2YgdGhlIGNvZGUsIGZvciBlYXNpZXIgZnV0dXJlIGRldmVsb3BtZW50IGFuZCBtb2R1bGFyaXR5CgpbNDE3XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD00MTcKWzU1NF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NTU0Cls1ODZdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTU4NgpbNjE2XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD02MTYKWzU1OF06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NTU4Cls0NjVdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTQ2NQpbNTE3XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD01MTcKWzIzNV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MjM1CgoKdjEuNC43ICgyMDEwLTA3LTA1KQotLS0tLS0tLS0tLS0tLS0tLS0tCgotICJkcm9wcGluZyIgZXh0ZXJuYWwgb2JqZWN0cyBvbnRvIHRoZSBjYWxlbmRhcgoJLSBkcm9wcGFibGUgKGJvb2xlYW4sIHRvIHR1cm4gb24vb2ZmKQoJLSBkcm9wQWNjZXB0ICh0byBmaWx0ZXIgd2hpY2ggZXZlbnRzIHRoZSBjYWxlbmRhciB3aWxsIGFjY2VwdCkKCS0gZHJvcCAodHJpZ2dlcikKLSBzZWxlY3RhYmxlIG9wdGlvbnMgY2FuIG5vdyBiZSBzcGVjaWZpZWQgd2l0aCBhIFZpZXcgT3B0aW9uIEhhc2gKLSBidWdmaXhlcwoJLSBkcmFnZ2VkICYgcmV2ZXJ0ZWQgZXZlbnRzIGhhdmluZyB3cm9uZyB0aW1lIHRleHQgKFs0MDZdKQoJLSBidWcgcmVuZGVyaW5nIGV2ZW50cyB0aGF0IGhhdmUgYW4gZW5kdGltZSB3aXRoIHNlY29uZHMsIGJ1dCBubyBob3Vycy9taW51dGVzIChbNDc3XSkKCS0gZ290b0RhdGUgZGF0ZSBvdmVyZmxvdyBidWcgKFs0MjldKQoJLSB3cm9uZyBkYXRlIHJlcG9ydGVkIHdoZW4gY2xpY2tpbmcgb24gZWRnZSBvZiBsYXN0IGNvbHVtbiBpbiBhZ2VuZGEgdmlld3MgWzQxMl0KLSBzdXBwb3J0IG5ld2xpbmVzIGluIGV2ZW50IHRpdGxlcwotIHNlbGVjdC91bnNlbGVjdCBjYWxsYmFja3Mgbm93IHBhc3NlcyBuYXRpdmUganMgZXZlbnQKCls0MDZdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTQwNgpbNDc3XTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD00NzcKWzQyOV06IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9NDI5Cls0MTJdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTQxMgoKCnYxLjQuNiAoMjAxMC0wNS0zMSkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSAic2VsZWN0aW5nIiBkYXlzIG9yIHRpbWVzbG90cwoJLSBvcHRpb25zOiBzZWxlY3RhYmxlLCBzZWxlY3RIZWxwZXIsIHVuc2VsZWN0QXV0bywgdW5zZWxlY3RDYW5jZWwKCS0gY2FsbGJhY2tzOiBzZWxlY3QsIHVuc2VsZWN0CgktIG1ldGhvZHM6IHNlbGVjdCwgdW5zZWxlY3QKLSB3aGVuIGRyYWdnaW5nIGFuIGV2ZW50LCB0aGUgaGlnaGxpZ2h0aW5nIHJlZmxlY3RzIHRoZSBkdXJhdGlvbiBvZiB0aGUgZXZlbnQKLSBjb2RlIGNvbXByZXNzaW5nIGJ5IEdvb2dsZSBDbG9zdXJlIENvbXBpbGVyCi0gYnVuZGxlZCB3aXRoIGpRdWVyeSAxLjQuMiBhbmQgalF1ZXJ5IFVJIDEuOC4xCgoKdjEuNC41ICgyMDEwLTAyLTIxKQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIGxhenlGZXRjaGluZyBvcHRpb24sIHdoaWNoIGNhbiBmb3JjZSB0aGUgY2FsZW5kYXIgdG8gZmV0Y2ggZXZlbnRzIG9uIGV2ZXJ5IHZpZXcvZGF0ZSBjaGFuZ2UKLSBzY3JvbGwgc3RhdGUgb2YgYWdlbmRhIHZpZXdzIGFyZSBwcmVzZXJ2ZWQgd2hlbiBzd2l0Y2hpbmcgYmFjayB0byB2aWV3Ci0gYnVnZml4ZXMKCS0gY2FsbGluZyBtZXRob2RzIG9uIGFuIHVuaW5pdGlhbGl6ZWQgZnVsbGNhbGVuZGFyIHRocm93cyBlcnJvcgoJLSBJRTYvNyBidWcgd2hlcmUgYW4gZW50aXJlIHZpZXcgYmVjb21lcyBpbnZpc2libGUgKFszMjBdKQoJLSBlcnJvciB3aGVuIHJlbmRlcmluZyBhIGhpZGRlbiBjYWxlbmRhciAoaW4ganF1ZXJ5IHVpIHRhYnMgZm9yIGV4YW1wbGUpIGluIElFIChbMzQwXSkKCS0gaW50ZXJjb25uZWN0ZWQgYnVncyByZWxhdGVkIHRvIGNhbGVuZGFyIHJlc2l6aW5nIGFuZCBzY3JvbGxiYXJzCgkJLSB3aGVuIHN3aXRjaGluZyB2aWV3cyBvciBjbGlja2luZyBwcmV2L25leHQsIGNhbGVuZGFyIHdvdWxkICJibGluayIgKFszMzNdKQoJCS0gbGlxdWlkLXdpZHRoIGNhbGVuZGFyJ3MgZXZlbnRzIHNoaWZ0ZWQgKGRlcGVuZGluZyBvbiBpbml0aWFsIGhlaWdodCBvZiBicm93c2VyKSAoWzM0MV0pCgkJLSBtb3JlIHJvYnVzdCB1bmRlcmx5aW5nIGFsZ29yaXRobSBmb3IgY2FsZW5kYXIgcmVzaXppbmcKClszMjBdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTMyMApbMzQwXTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9mdWxsY2FsZW5kYXIvaXNzdWVzL2RldGFpbD9pZD0zNDAKWzMzM106IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZnVsbGNhbGVuZGFyL2lzc3Vlcy9kZXRhaWw/aWQ9MzMzClszNDFdOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Z1bGxjYWxlbmRhci9pc3N1ZXMvZGV0YWlsP2lkPTM0MQoKCnYxLjQuNCAoMjAxMC0wMi0wMykKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBvcHRpbWl6ZWQgZXZlbnQgcmVuZGVyaW5nIGluIGFsbCB2aWV3cyAoZXZlbnRzIHJlbmRlciBpbiAxLzEwIHRoZSB0aW1lKQotIGdvdG9EYXRlKCkgZG9lcyBub3QgZm9yY2UgdGhlIGNhbGVuZGFyIHRvIHVubmVjZXNzYXJpbHkgcmVyZW5kZXIKLSByZW5kZXIoKSBtZXRob2Qgbm93IGNvcnJlY3RseSByZWFkanVzdHMgaGVpZ2h0CgoKdjEuNC4zICgyMDA5LTEyLTIyKQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIGFkZGVkIGRlc3Ryb3kgbWV0aG9kCi0gR29vZ2xlIENhbGVuZGFyIGV2ZW50IHBhZ2VzIHJlc3BlY3QgY3VycmVudFRpbWV6b25lCi0gY2FjaGluZyBub3cgaGFuZGxlZCBieSBqUXVlcnkncyBhamF4CQotIHByb3RlY3Rpb24gZnJvbSBzZXR0aW5nIGFzcGVjdFJhdGlvIHRvIHplcm8KLSBidWdmaXhlcwoJLSBwYXJzZUlTTzg2MDEgYW5kIERTVCBjYXVzZWQgY2VydGFpbiBldmVudHMgdG8gZGlzcGxheSBkYXkgYmVmb3JlCgktIGJ1dHRvbiBwb3NpdGlvbmluZyBwcm9ibGVtIGluIElFNgoJLSBhamF4IGV2ZW50IHNvdXJjZSByZW1vdmVkIGFmdGVyIHJlY2VudGx5IGJlaW5nIGFkZGVkLCBldmVudHMgc3RpbGwgZGlzcGxheWVkCgktIGV2ZW50IG5vdCBkaXNwbGF5ZWQgd2hlbiBlbmQgaXMgYW4gZW1wdHkgc3RyaW5nCgktIGR5bmFtaWNhbGx5IHNldHRpbmcgY2FsZW5kYXIgaGVpZ2h0IHdoZW4gbm8gZXZlbnRzIGhhdmUgYmVlbiBmZXRjaGVkLCB0aHJvd3MgZXJyb3IKCgp2MS40LjIgKDIwMDktMTItMDIpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gZXZlbnRBZnRlclJlbmRlciB0cmlnZ2VyCi0gZ2V0RGF0ZSAmIGdldFZpZXcgbWV0aG9kcwotIGhlaWdodCAmIGNvbnRlbnRIZWlnaHQgb3B0aW9ucyAoZXhwbGljaXRseSBzZXRzIHRoZSBwaXhlbCBoZWlnaHQpCi0gbWluVGltZSAmIG1heFRpbWUgb3B0aW9ucyAocmVzdHJpY3RzIHNob3duIGhvdXJzIGluIGFnZW5kYSB2aWV3KQotIGdldHRlcnMgW2ZvciBhbGwgb3B0aW9uc10gYW5kIHNldHRlcnMgW2ZvciBoZWlnaHQsIGNvbnRlbnRIZWlnaHQsIGFuZCBhc3BlY3RSYXRpbyBPTkxZISBzdGF5IHR1bmVkLi5dCi0gcmVuZGVyIG1ldGhvZCBub3cgcmVhZGp1c3RzIGNhbGVuZGFyJ3Mgc2l6ZQotIGJ1Z2ZpeGVzCgktIGxpZ2h0Ym94IHNjcmlwdHMgdGhhdCB1c2UgaWZyYW1lcyAobGlrZSBmYW5jeWJveCkKCS0gZGF5LW9mLXdlZWsgY2xhc3NOYW1lcyB3ZXJlIG9mZiB3aGVuIGZpcnN0RGF5PTEKCS0gZ3VhcmFudGVlZCBzcGFjZSBvbiByaWdodCBzaWRlIG9mIGFnZW5kYSBldmVudHMgKGV2ZW4gd2hlbiBzdGFja2VkKQoJLSBhY2NlcHRzIElTTzg2MDEgZGF0ZXMgd2l0aCBhIHNwYWNlIChpbnN0ZWFkIG9mICdUJykKCgp2MS40LjEgKDIwMDktMTAtMzEpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gY2FuIGV4Y2x1ZGUgd2Vla2VuZHMgd2l0aCBuZXcgJ3dlZWtlbmRzJyBvcHRpb24KLSBnY2FsIGZlZWQgJ2N1cnJlbnRUaW1lem9uZScgb3B0aW9uCi0gYnVnZml4ZXMKCS0geWVhci9tb250aC9kYXRlIG9wdGlvbiBzb21ldGltZXMgd291bGRuJ3Qgc2V0IGNvcnJlY3RseSAoZGVwZW5kaW5nIG9uIGN1cnJlbnQgZGF0ZSkKCS0gZGF5bGlnaHQgc2F2aW5ncyBpc3N1ZSBjYXVzZWQgYWdlbmRhIHZpZXdzIHRvIHN0YXJ0IGF0IDFhbSAoZm9yIEJTVCB1c2VycykKLSBjbGVhbnVwIG9mIGdjYWwuanMgY29kZQoKCnYxLjQgKDIwMDktMTAtMTkpCi0tLS0tLS0tLS0tLS0tLS0tCgotIGFnZW5kYVdlZWsgYW5kIGFnZW5kYURheSB2aWV3cwotIGFkZGVkIHNvbWUgb3B0aW9ucyBmb3IgYWdlbmRhIHZpZXdzOgoJLSBhbGxEYXlTbG90CgktIGFsbERheVRleHQKCS0gZmlyc3RIb3VyCgktIHNsb3RNaW51dGVzCgktIGRlZmF1bHRFdmVudE1pbnV0ZXMKCS0gYXhpc0Zvcm1hdAotIG1vZGlmaWVkIHNvbWUgZXhpc3Rpbmcgb3B0aW9ucy90cmlnZ2VycyB0byB3b3JrIHdpdGggYWdlbmRhIHZpZXdzOgoJLSBkcmFnT3BhY2l0eSBhbmQgdGltZUZvcm1hdCBjYW4gbm93IGFjY2VwdCBhICJWaWV3IEhhc2giIChhIG5ldyBjb25jZXB0KQoJLSBkYXlDbGljayBub3cgaGFzIGFuIGFsbERheSBwYXJhbWV0ZXIKCS0gZXZlbnREcm9wIG5vdyBoYXMgYW4gYW4gYWxsRGF5IHBhcmFtZXRlcgoJICAodGhpcyB3aWxsIGFmZmVjdCB0aG9zZSB3aG8gdXNlIHJldmVydEZ1bmMsIGFkanVzdCBwYXJhbWV0ZXIgbGlzdCkKLSBhZGRlZCAncHJldlllYXInIGFuZCAnbmV4dFllYXInIGZvciBidXR0b25zIGluIGhlYWRlcgotIG1pbm9yIGNoYW5nZSBmb3IgdGhlbWUgdXNlcnMsIHVpLXN0YXRlLWhvdmVyIG5vdCBhcHBsaWVkIHRvIGFjdGl2ZS9pbmFjdGl2ZSBidXR0b25zCi0gYWRkZWQgZXZlbnQtY29sb3ItY2hhbmdpbmcgZXhhbXBsZSBpbiBkb2NzCi0gYmV0dGVyIGRlZmF1bHRzIGZvciByaWdodC10by1sZWZ0IHRoZW1lZCBidXR0b24gaWNvbnMKCgp2MS4zLjIgKDIwMDktMTAtMTMpCi0tLS0tLS0tLS0tLS0tLS0tLS0KCi0gQnVnZml4ZXMgKHBsZWFzZSB1cGdyYWRlIGZyb20gMS4zLjEhKQoJLSBzcXVhc2hlZCBwb3RlbnRpYWwgaW5maW5pdGUgbG9vcCB3aGVuIGFkZE1vbnRocyBhbmQgYWRkRGF5cwoJICBpcyBjYWxsZWQgd2l0aCBhbiBpbnZhbGlkIGRhdGUKCS0gJC5mdWxsQ2FsZW5kYXIucGFyc2VEYXRlKCkgbm93IGNvcnJlY3RseSBwYXJzZXMgSUVURiBmb3JtYXQKCS0gd2hlbiBzd2l0Y2hpbmcgdmlld3MsIHRoZSAndG9kYXknIGJ1dHRvbiBzdGlja3MgaW5hY3RpdmUsIGZpeGVkCi0gZ290b0RhdGUgbm93IGNhbiBhY2NlcHQgYSBzaW5nbGUgRGF0ZSBhcmd1bWVudAotIGRvY3VtZW50YXRpb24gZm9yIGNoYW5nZXMgaW4gMS4zLjEgYW5kIDEuMy4yIG5vdyBvbiB3ZWJzaXRlCgoKdjEuMy4xICgyMDA5LTA5LTMwKQotLS0tLS0tLS0tLS0tLS0tLS0tCgotIEltcG9ydGFudCBCdWdmaXhlcyAocGxlYXNlIHVwZ3JhZGUgZnJvbSAxLjMhKQoJLSBXaGVuIGN1cnJlbnQgZGF0ZSB3YXMgbGF0ZSBpbiB0aGUgbW9udGgsIGZvciBsb25nIG1vbnRocywgYW5kIHByZXYvbmV4dCBidXR0b25zCgkgIHdlcmUgY2xpY2tlZCBpbiBtb250aC12aWV3LCBzb21lIG1vbnRocyB3b3VsZCBiZSBza2lwcGVkL3JlcGVhdGVkCgktIEluIGNlcnRhaW4gdGltZSB6b25lcywgZGF5bGlnaHQgc2F2aW5ncyB0aW1lIHdvdWxkIGNhdXNlIGNlcnRhaW4gZGF5cwoJICB0byBiZSBtaXNudW1iZXJlZCBpbiBtb250aC12aWV3Ci0gU3VidGxlIGNoYW5nZSBpbiB3YXkgd2VlayBpbnRlcnZhbCBpcyBjaG9zZW4gd2hlbiBzd2l0Y2hpbmcgZnJvbSBtb250aCB0byBiYXNpY1dlZWsvYmFzaWNEYXkgdmlldwotIEFkZGVkICdhbGxEYXlEZWZhdWx0JyBvcHRpb24KLSBBZGRlZCAnY2hhbmdlVmlldycgYW5kICdyZW5kZXInIG1ldGhvZHMKCgp2MS4zICgyMDA5LTA5LTIxKQotLS0tLS0tLS0tLS0tLS0tLQoKLSBkaWZmZXJlbnQgJ3ZpZXdzJzogbW9udGgvYmFzaWNXZWVrL2Jhc2ljRGF5Ci0gbW9yZSBmbGV4aWJsZSAnaGVhZGVyJyBzeXN0ZW0gZm9yIGJ1dHRvbnMKLSB0aGVtYWJsZSBieSBqUXVlcnkgVUkgdGhlbWVzCi0gcmVzaXphYmxlIGV2ZW50cyAocmVxdWlyZSBqUXVlcnkgVUkgcmVzaXphYmxlIHBsdWdpbikKLSByZXNjb3BlZCAmIHJld3JpdHRlbiBDU1MsIGVuaGFuY2VkIGRlZmF1bHQgbG9vawotIGNsZWFuZXIgY3NzICYgcmVuZGVyaW5nIHRlY2huaXF1ZXMgZm9yIHJpZ2h0LXRvLWxlZnQKLSByZXdvcmtlZCBvcHRpb25zICYgQVBJIHRvIHN1cHBvcnQgbXVsdGlwbGUgdmlld3MgLyBiZSBjb25zaXN0ZW50IHdpdGggalF1ZXJ5IFVJCi0gcmVmYWN0b3Jpbmcgb2YgZW50aXJlIGNvZGViYXNlCgktIGJyb2tlbiBpbnRvIGRpZmZlcmVudCBKUyAmIENTUyBmaWxlcywgYXNzZW1ibGVkIHcvIGJ1aWxkIHNjcmlwdHMKCS0gbmV3IHRlc3Qgc3VpdGUgZm9yIG5ldyBmZWF0dXJlcywgdXNlcyBmaXJlYnVnLWxpdGUKLSByZWZhY3RvcmVkIGRvY3MKLSBPcHRpb25zCgktICsgZGF0ZQoJLSArIGRlZmF1bHRWaWV3CgktICsgYXNwZWN0UmF0aW8KCS0gKyBkaXNhYmxlUmVzaXppbmcKCS0gKyBtb250aE5hbWVzICAgICAgKHVzZSBpbnN0ZWFkIG9mICQuZnVsbENhbGVuZGFyLm1vbnRoTmFtZXMpCgktICsgbW9udGhOYW1lc1Nob3J0ICh1c2UgaW5zdGVhZCBvZiAkLmZ1bGxDYWxlbmRhci5tb250aEFiYnJldnMpCgktICsgZGF5TmFtZXMgICAgICAgICh1c2UgaW5zdGVhZCBvZiAkLmZ1bGxDYWxlbmRhci5kYXlOYW1lcykKCS0gKyBkYXlOYW1lc1Nob3J0ICAgKHVzZSBpbnN0ZWFkIG9mICQuZnVsbENhbGVuZGFyLmRheUFiYnJldnMpCgktICsgdGhlbWUKCS0gKyBidXR0b25UZXh0CgktICsgYnV0dG9uSWNvbnMKCS0geCBkcmFnZ2FibGUgICAgICAgICAgIC0+IGVkaXRhYmxlL2Rpc2FibGVEcmFnZ2luZwoJLSB4IGZpeGVkV2Vla3MgICAgICAgICAgLT4gd2Vla01vZGUKCS0geCBhYmJyZXZEYXlIZWFkaW5ncyAgIC0+IGNvbHVtbkZvcm1hdAoJLSB4IGJ1dHRvbnMvdGl0bGUgICAgICAgLT4gaGVhZGVyCgktIHggZXZlbnREcmFnT3BhY2l0eSAgICAtPiBkcmFnT3BhY2l0eQoJLSB4IGV2ZW50UmV2ZXJ0RHVyYXRpb24gLT4gZHJhZ1JldmVydER1cmF0aW9uCgktIHggd2Vla1N0YXJ0ICAgICAgICAgICAtPiBmaXJzdERheQoJLSB4IHJpZ2h0VG9MZWZ0ICAgICAgICAgLT4gaXNSVEwKCS0geCBzaG93VGltZSAodXNlICdhbGxEYXknIENhbEV2ZW50IHByb3BlcnR5IGluc3RlYWQpCi0gVHJpZ2dlcmVkIEFjdGlvbnMKCS0gKyBldmVudFJlc2l6ZVN0YXJ0CgktICsgZXZlbnRSZXNpemVTdG9wCgktICsgZXZlbnRSZXNpemUKCS0geCBtb250aERpc3BsYXkgLT4gdmlld0Rpc3BsYXkKCS0geCByZXNpemUgICAgICAgLT4gd2luZG93UmVzaXplCgktICdldmVudERyb3AnIHBhcmFtcyBjaGFuZ2VkLCBjYW4gcmV2ZXJ0IGlmIGFqYXggY3V0cyBvdXQKLSBDYWxFdmVudCBQcm9wZXJ0aWVzCgktIHggc2hvd1RpbWUgIC0+IGFsbERheQoJLSB4IGRyYWdnYWJsZSAtPiBlZGl0YWJsZQoJLSAnZW5kJyBpcyBub3cgSU5DTFVTSVZFIHdoZW4gYWxsRGF5PXRydWUKCS0gJ3VybCcgbm93IHByb2R1Y2VzIGEgcmVhbCA8YT4gdGFnLCBtb3JlIG5hdGl2ZSBjbGlja2luZy90YWIgYmVoYXZpb3IKLSBNZXRob2RzOgoJLSArIHJlbmRlckV2ZW50CgktIHggcHJldk1vbnRoICAgICAgICAgLT4gcHJldgoJLSB4IG5leHRNb250aCAgICAgICAgIC0+IG5leHQKCS0geCBwcmV2WWVhci9uZXh0WWVhciAtPiBtb3ZlRGF0ZQoJLSB4IHJlZnJlc2ggICAgICAgICAgIC0+IHJlcmVuZGVyRXZlbnRzL3JlZmV0Y2hFdmVudHMKCS0geCByZW1vdmVFdmVudCAgICAgICAtPiByZW1vdmVFdmVudHMKCS0geCBnZXRFdmVudHNCeUlEICAgICAtPiBjbGllbnRFdmVudHMKLSBVdGlsaXRpZXM6CgktICdmb3JtYXREYXRlJyBmb3JtYXQgc3RyaW5nIGNvbXBsZXRlbHkgY2hhbmdlZCAoaW5zcGlyZWQgYnkgalF1ZXJ5IFVJIGRhdGVwaWNrZXIgKyBkYXRlanMpCgktICdmb3JtYXREYXRlcycgYWRkZWQgdG8gc3VwcG9ydCBkYXRlLXJhbmdlcwotIEdvb2dsZSBDYWxlbmRhciBPcHRpb25zOgoJLSB4IGRyYWdnYWJsZSAtPiBlZGl0YWJsZQotIEJ1Z2ZpeGVzCgktIGdjYWwgZXh0ZW5zaW9uIGZldGNoZWQgMjUgcmVzdWx0cyBtYXgsIG5vdyBmZXRjaGVzIGFsbAoKCnYxLjIuMSAoMjAwOS0wNi0yOSkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKLSBidWdmaXhlcwoJLSBhbGxvd3MgYW5kIGNvcnJlY3RzIGludmFsaWQgZW5kIGRhdGVzIGZvciBldmVudHMKCS0gZG9lc24ndCB0aHJvdyBhbiBlcnJvciBpbiBJRSB3aGlsZSByZW5kZXJpbmcgd2hlbiBkaXNwbGF5Om5vbmUKCS0gZml4ZWQgJ2xvYWRpbmcnIGNhbGxiYWNrIHdoZW4gdXNlZCB3LyBtdWx0aXBsZSBhZGRFdmVudFNvdXJjZSBjYWxscwoJLSBnY2FsIGNsYXNzTmFtZSBjYW4gbm93IGJlIGFuIGFycmF5CgoKdjEuMiAoMjAwOS0wNS0zMSkKLS0tLS0tLS0tLS0tLS0tLS0KCi0gZXhwYW5kZWQgQVBJCgktICdjbGFzc05hbWUnIENhbEV2ZW50IGF0dHJpYnV0ZQoJLSAnc291cmNlJyBDYWxFdmVudCBhdHRyaWJ1dGUKCS0gZHluYW1pY2FsbHkgZ2V0L2FkZC9yZW1vdmUvdXBkYXRlIGV2ZW50cyBvZiBjdXJyZW50IG1vbnRoCgktIGxvY2FsZSBpbXByb3ZlbWVudHM6IGNoYW5nZSBtb250aC9kYXkgbmFtZSB0ZXh0CgktIGJldHRlciBkYXRlIGZvcm1hdHRpbmcgKCQuZnVsbENhbGVuZGFyLmZvcm1hdERhdGUpCgktIG11bHRpcGxlICdldmVudCBzb3VyY2VzJyBhbGxvd2VkCgkJLSBkeW5hbWljYWxseSBhZGQvcmVtb3ZlIGV2ZW50IHNvdXJjZXMKLSBvcHRpb25zIGZvciBwcmV2WWVhciBhbmQgbmV4dFllYXIgYnV0dG9ucwotIGRvY3MgaGF2ZSBiZWVuIHJld29ya2VkIChpbmNsdWRlIGFkZGl0aW9uIG9mIEdvb2dsZSBDYWxlbmRhciBkb2NzKQotIGNoYW5nZWQgYmVoYXZpb3Igb2YgcGFyc2VEYXRlIGZvciBudW1iZXIgc3RyaW5ncwogIChub3cgaW50ZXJwZXRzIGFzIHVuaXggdGltZXN0YW1wLCBub3QgTVMgdGltZXMpCi0gYnVnZml4ZXMKCS0gcmlnaHRUb0xlZnQgbW9udGggc3RhcnQgYnVnCgktIG9mZi1ieS1vbmUgZXJyb3JzIHdpdGggbW9udGggZm9ybWF0dGluZyBjb21tYW5kcwoJLSBldmVudHMgZnJvbSBwcmV2aW91cyBtb250aHMgc3RpY2tpbmcgd2hlbiBjbGlja2luZyBwcmV2L25leHQgcXVpY2tseQotIEdvb2dsZSBDYWxlbmRhciBBUEkgY2hhbmdlZCB0byB3b3JrIHcvIG11bHRpcGxlIGV2ZW50IHNvdXJjZXMKCS0gY2FuIGFsc28gcHJvdmlkZSAnY2xhc3NOYW1lJyBhbmQgJ2RyYWdnYWJsZScgb3B0aW9ucwotIGRhdGUgdXRpbHRpZXMgbW92ZWQgZnJvbSAkIHRvICQuZnVsbENhbGVuZGFyCi0gbW9yZSBkb2N1bWVudGF0aW9uIGluIHNvdXJjZSBjb2RlCi0gbWluaWZpZWQgdmVyc2lvbiBvZiBmdWxsY2FsZW5kYXIuanMKLSB0ZXN0IHN1aXQgKGF2YWlsYWJsZSBmcm9tIHN2bikKLSB0b3AgYnV0dG9ucyBub3cgdXNlIGA8YnV0dG9uPmAgdy8gYW4gaW5uZXIgYDxzcGFuPmAgZm9yIGJldHRlciBjc3MgY3Vzb21pemF0aW9uCgktIHRodXMgQ1NTIGhhcyBjaGFuZ2VkLiBJRiBVUEdSQURJTkcgRlJPTSBQUkVWSU9VUyBWRVJTSU9OUywKCSAgVVBHUkFERSBZT1VSIEZVTExDQUxFTkRBUi5DU1MgRklMRQoKCnYxLjEgKDIwMDktMDUtMTApCi0tLS0tLS0tLS0tLS0tLS0tCgotIEFkZGVkIHRoZSBmb2xsb3dpbmcgb3B0aW9uczoKCS0gd2Vla1N0YXJ0CgktIHJpZ2h0VG9MZWZ0CgktIHRpdGxlRm9ybWF0CgktIHRpbWVGb3JtYXQKCS0gY2FjaGVQYXJhbQoJLSByZXNpemUKLSBGaXhlZCByZW5kZXJpbmcgYnVncwoJLSBPcGVyYSA5LjI1IChldmVudHMgcGxhY2VtZW50ICYgd2luZG93IHJlc2l6aW5nKQoJLSBJRTYgKHdpbmRvdyByZXNpemluZykKLSBPcHRpbWl6ZWQgd2luZG93IHJlc2l6aW5nIGZvciBBTEwgYnJvd3NlcnMKLSBFdmVudHMgb24gc2FtZSBkYXkgbm93IHNvcnRlZCBieSBzdGFydCB0aW1lIChidXQgZmlyc3QgYnkgdGltZXNwYW4pCi0gQ29ycmVjdCB6LWluZGV4IHdoZW4gZHJhZ2dpbmcKLSBEcmFnZ2luZyBjb250YWluZWQgaW4gb3ZlcmZsb3cgRElWIGZvciBJRTYKLSBNb2RpZmllZCBmdWxsY2FsZW5kYXIuY3NzCgktIGZvciByaWdodC10by1sZWZ0IHN1cHBvcnQKCS0gZm9yIHZhcmlhYmxlIHN0YXJ0LW9mLXdlZWsKCS0gZm9yIElFNiByZXNpemluZyBidWcKCS0gZm9yIFRIRUFEIGFuZCBUQk9EWSAoaW4gMS4wLCBqdXN0IHVzZWQgVEJPRFksIHJlc3RydWN0dXJlZCBpbiAxLjEpCgktIElGIFVQR1JBRElORyBGUk9NIEZVTExDQUxFTkRBUiAxLjAsIFlPVSBNVVNUIFVQR1JBREUgRlVMTENBTEVOREFSLkNTUwo=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/CONTRIBUTING.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CiMjIFJlcG9ydGluZyBCdWdzCgpFYWNoIGJ1ZyByZXBvcnQgTVVTVCBoYXZlIGEgW0pTRmlkZGxlL0pTQmluXSByZWNyZWF0aW9uIGJlZm9yZSBhbnkgd29yayBjYW4gYmVnaW4uIFtmdXJ0aGVyIGluc3RydWN0aW9ucyAmcmFxdW87XShodHRwOi8vZnVsbGNhbGVuZGFyLmlvL3dpa2kvUmVwb3J0aW5nLUJ1Z3MvKQoKCiMjIFJlcXVlc3RpbmcgRmVhdHVyZXMKClBsZWFzZSBzZWFyY2ggdGhlIFtJc3N1ZSBUcmFja2VyXSB0byBzZWUgaWYgeW91ciBmZWF0dXJlIGhhcyBhbHJlYWR5IGJlZW4gcmVxdWVzdGVkLCBhbmQgaWYgc28sIHN1YnNjcmliZSB0byBpdC4gT3RoZXJ3aXNlLCByZWFkIHRoZXNlIFtmdXJ0aGVyIGluc3RydWN0aW9ucyAmcmFxdW87XShodHRwOi8vZnVsbGNhbGVuZGFyLmlvL3dpa2kvUmVxdWVzdGluZy1GZWF0dXJlcy8pCgoKIyMgQ29udHJpYnV0aW5nIEZlYXR1cmVzCgpUaGUgRnVsbENhbGVuZGFyIHByb2plY3Qgd2VsY29tZXMgW1B1bGwgUmVxdWVzdHNdW1VzaW5nIFB1bGwgUmVxdWVzdHNdIGZvciBuZXcgZmVhdHVyZXMsIGJ1dCBiZWNhdXNlIHRoZXJlIGFyZSBzbyBtYW55IGZlYXR1cmUgcmVxdWVzdHMgKG92ZXIgMTAwKSwgYW5kIGJlY2F1c2UgZXZlcnkgbmV3IGZlYXR1cmUgcmVxdWlyZXMgcmVmaW5lbWVudCBhbmQgbWFpbnRlbmFuY2UsIGVhY2ggUFIgd2lsbCBiZSBwcmlvcml0aXplZCBhZ2FpbnN0IHRoZSBwcm9qZWN0J3Mgb3RoZXIgZGVtYW5kcyBhbmQgbWlnaHQgdGFrZSBhIHdoaWxlIHRvIG1ha2UgaXQgdG8gYW4gb2ZmaWNpYWwgcmVsZWFzZS4KCkZ1cnRoZXJtb3JlLCBlYWNoIG5ldyBmZWF0dXJlIHNob3VsZCBiZSBkZXNpZ25lZCBhcyByb2J1c3RseSBhcyBwb3NzaWJsZSBhbmQgYmUgdXNlZnVsIGJleW9uZCB0aGUgaW1tZWRpYXRlIHVzZWNhc2UgaXQgd2FzIGluaXRpYWxseSBkZXNpZ25lZCBmb3IuIEZlZWwgZnJlZSB0byBzdGFydCBhIHRpY2tldCBkaXNjdXNzaW5nIHRoZSBmZWF0dXJlJ3Mgc3BlY3MgYmVmb3JlIGNvZGluZy4KCgojIyBDb250cmlidXRpbmcgQnVnZml4ZXMKCkluIHRoZSBkZXNjcmlwdGlvbiBvZiB5b3VyIFtQdWxsIFJlcXVlc3RdW1VzaW5nIFB1bGwgUmVxdWVzdHNdLCBwbGVhc2UgaW5jbHVkZSByZWNyZWF0aW9uIHN0ZXBzIGZvciB0aGUgYnVnIGFzIHdlbGwgYXMgYSBbSlNGaWRkbGUvSlNCaW5dIGRlbW8uIENvbW11bmljYXRpbmcgdGhlIGJ1Z2d5IGJlaGF2aW9yIGlzIGEgcmVxdWlyZW1lbnQgYmVmb3JlIGEgbWVyZ2UgY2FuIGhhcHBlbi4KCgojIyBDb250cmlidXRpbmcgTG9jYWxlcwoKUGxlYXNlIGVkaXQgdGhlIG9yaWdpbmFsIGZpbGVzIGluIHRoZSBgbG9jYWxlL2AgZGlyZWN0b3J5LiBETyBOT1QgZWRpdCBhbnl0aGluZyBpbiB0aGUgYGRpc3QvYCBkaXJlY3RvcnkuIFRoZSBidWlsZCBzeXN0ZW0gd2lsbCByZXNwb25zaWJsZSBmb3IgbWVyZ2luZyBGdWxsQ2FsZW5kYXIncyBgbG9jYWxlL2AgZGF0YSB3aXRoIHRoZSBbTW9tZW50SlMgbG9jYWxlIGRhdGFdLgoKCiMjIE90aGVyIFdheXMgdG8gQ29udHJpYnV0ZQoKW1JlYWQgYWJvdXQgb3RoZXIgd2F5cyB0byBjb250cmlidXRlICZyYXF1bztdKGh0dHA6Ly9mdWxsY2FsZW5kYXIuaW8vd2lraS9Db250cmlidXRpbmcvKQoKCiMjIEdldHRpbmcgU2V0IFVwCgpZb3Ugd2lsbCBuZWVkIFtHaXRdW2dpdF0sIFtOb2RlXVtub2RlXSwgYW5kIE5QTSBpbnN0YWxsZWQuIEZvciBjbGFyaWZpY2F0aW9uLCBwbGVhc2UgdmlldyB0aGUgW2pRdWVyeSByZWFkbWVdW2pxLXJlYWRtZV0sIHdoaWNoIHJlcXVpcmVzIGEgc2ltaWxhciBzZXR1cC4KCkFsc28sIHlvdSB3aWxsIG5lZWQgdGhlIFtndWxwLWNsaV1bZ3VscC1jbGldIHBhY2thZ2UgaW5zdGFsbGVkIGdsb2JhbGx5IChgLWdgKSBvbiB5b3VyIHN5c3RlbToKCglucG0gaW5zdGFsbCAtZyBndWxwLWNsaQoKVGhlbiwgY2xvbmUgRnVsbENhbGVuZGFyJ3MgZ2l0IHJlcG86CgoJZ2l0IGNsb25lIGdpdDovL2dpdGh1Yi5jb20vZnVsbGNhbGVuZGFyL2Z1bGxjYWxlbmRhci5naXQKCkVudGVyIHRoZSBkaXJlY3RvcnkgYW5kIGluc3RhbGwgRnVsbENhbGVuZGFyJ3MgZGVwZW5kZW5jaWVzOgoKCWNkIGZ1bGxjYWxlbmRhcgoJbnBtIGluc3RhbGwKCgojIyBXaGF0IHRvIGVkaXQKCldoZW4gbW9kaWZ5aW5nIGZpbGVzLCBwbGVhc2UgZG8gbm90IGVkaXQgdGhlIGdlbmVyYXRlZCBvciBtaW5pZmllZCBmaWxlcyBpbiB0aGUgYGRpc3QvYCBkaXJlY3RvcnkuIFBsZWFzZSBlZGl0IHRoZSBvcmlnaW5hbCBgc3JjL2AgZmlsZXMuCgoKIyMgRGV2ZWxvcG1lbnQgV29ya2Zsb3cKCkFmdGVyIHlvdSBtYWtlIGNvZGUgY2hhbmdlcywgeW91J2xsIHdhbnQgdG8gY29tcGlsZSB0aGUgSlMvQ1NTIHNvIHRoYXQgaXQgY2FuIGJlIHByZXZpZXdlZCBmcm9tIHRoZSB0ZXN0cyBhbmQgZGVtb3MuIFlvdSBjYW4gZWl0aGVyIG1hbnVhbGx5IHJlYnVpbGQgZWFjaCB0aW1lIHlvdSBtYWtlIGEgY2hhbmdlOgoKCWd1bHAgZGV2CgpPciwgeW91IGNhbiBydW4gYSBzY3JpcHQgdGhhdCBhdXRvbWF0aWNhbGx5IHJlYnVpbGRzIHdoZW5ldmVyIHlvdSBzYXZlIGEgc291cmNlIGZpbGU6CgoJZ3VscCB3YXRjaAoKV2hlbiB5b3UgYXJlIGZpbmlzaGVkLCBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kIHRvIHdyaXRlIHRoZSBkaXN0cmlidXRhYmxlIGZpbGVzIGludG8gdGhlIGAuL2Rpc3QvYCBkaXJlY3Rvcnk6CgoJZ3VscCBkaXN0CgpJZiB5b3Ugd2FudCB0byBjbGVhbiB1cCB0aGUgZ2VuZXJhdGVkIGZpbGVzLCBydW46CgoJZ3VscCBjbGVhbgoKCiMjIFN0eWxlIEd1aWRlCgpQbGVhc2UgZm9sbG93IHRoZSBbR29vZ2xlIEphdmFTY3JpcHQgU3R5bGUgR3VpZGVdIGFzIGNsb3NlbHkgYXMgcG9zc2libGUuIFdpdGggdGhlIGZvbGxvd2luZyBleGNlcHRpb25zOgoKYGBganMKaWYgKHRydWUpIHsKfQplbHNlIHsgLy8gcGxlYXNlIHB1dCBlbHNlLCBlbHNlIGlmLCBhbmQgY2F0Y2ggb24gYSBzZXBhcmF0ZSBsaW5lCn0KCi8vIHBsZWFzZSB3cml0ZSBvbmUtbGluZSBhcnJheSBsaXRlcmFscyB3aXRoIGEgb25lLXNwYWNlIHBhZGRpbmcgaW5zaWRlCnZhciBhID0gWyAxLCAyLCAzIF07CgovLyBwbGVhc2Ugd3JpdGUgb25lLWxpbmUgb2JqZWN0IGxpdGVyYWxzIHdpdGggYSBvbmUtc3BhY2UgcGFkZGluZyBpbnNpZGUKdmFyIG8gPSB7IGE6IDEsIGI6IDIsIGM6IDMgfTsKYGBgCgpPdGhlciBleGNlcHRpb25zOgoKLSBwbGVhc2UgaWdub3JlIGFueXRoaW5nIGFib3V0IEdvb2dsZSBDbG9zdXJlIENvbXBpbGVyIG9yIHRoZSBgZ29vZ2AgbGlicmFyeQotIHBsZWFzZSBkbyBub3Qgd3JpdGUgSlNEb2MgY29tbWVudHMKCk5vdGVzIGFib3V0IHdoaXRlc3BhY2U6CgotICoqdXNlICp0YWJzKiBpbnN0ZWFkIG9mIHNwYWNlcyoqCi0gc2VwYXJhdGUgZnVuY3Rpb25zIHdpdGggKjIqIGJsYW5rIGxpbmVzCi0gc2VwYXJhdGUgbG9naWNhbCBibG9ja3Mgd2l0aGluIGZ1bmN0aW9ucyB3aXRoICoxKiBibGFuayBsaW5lCgpSdW4gdGhlIGNvbW1hbmQgbGluZSB0b29sIHRvIGF1dG9tYXRpY2FsbHkgY2hlY2sgeW91ciBzdHlsZToKCglndWxwIGxpbnQKCgojIyBCZWZvcmUgU3VibWl0dGluZyB5b3VyIENvZGUKCklmIHlvdSBoYXZlIGVkaXRlZCBjb2RlIChpbmNsdWRpbmcgKip0ZXN0cyoqIGFuZCAqKnRyYW5zbGF0aW9ucyoqKSBhbmQgd291bGQgbGlrZSB0byBzdWJtaXQgYSBwdWxsIHJlcXVlc3QsIHBsZWFzZSBtYWtlIHN1cmUgeW91IGhhdmUgZG9uZSB0aGUgZm9sbG93aW5nOgoKMS4gQ29uZm9ybWVkIHRvIHRoZSBzdHlsZSBndWlkZSAoc3VjY2Vzc2Z1bGx5IHJ1biBgZ3VscCBsaW50YCkKCjIuIFdyaXR0ZW4gYXV0b21hdGVkIHRlc3RzLiBWaWV3IHRoZSBbQXV0b21hdGVkIFRlc3QgUmVhZG1lXQoKCltKU0ZpZGRsZS9KU0Jpbl06IGh0dHA6Ly9mdWxsY2FsZW5kYXIuaW8vd2lraS9SZXBvcnRpbmctQnVncy8KW0lzc3VlIFRyYWNrZXJdOiBodHRwczovL2dpdGh1Yi5jb20vZnVsbGNhbGVuZGFyL2Z1bGxjYWxlbmRhci9pc3N1ZXMKW1VzaW5nIFB1bGwgUmVxdWVzdHNdOiBodHRwczovL2hlbHAuZ2l0aHViLmNvbS9hcnRpY2xlcy91c2luZy1wdWxsLXJlcXVlc3RzLwpbTW9tZW50SlMgbG9jYWxlIGRhdGFdOiBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC90cmVlL2RldmVsb3AvbG9jYWxlCltnaXRdOiBodHRwOi8vZ2l0LXNjbS5jb20vCltub2RlXTogaHR0cDovL25vZGVqcy5vcmcvCltndWxwLWNsaV06IGh0dHBzOi8vZ2l0aHViLmNvbS9ndWxwanMvZ3VscC9ibG9iL21hc3Rlci9kb2NzL2dldHRpbmctc3RhcnRlZC5tZApbanEtcmVhZG1lXTogaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9qcXVlcnkvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kI3doYXQteW91LW5lZWQtdG8tYnVpbGQteW91ci1vd24tanF1ZXJ5CltHb29nbGUgSmF2YVNjcmlwdCBTdHlsZSBHdWlkZV06IGh0dHA6Ly9nb29nbGUtc3R5bGVndWlkZS5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvamF2YXNjcmlwdGd1aWRlLnhtbApbQXV0b21hdGVkIFRlc3QgUmVhZG1lXTogaHR0cHM6Ly9naXRodWIuY29tL2Z1bGxjYWxlbmRhci9mdWxsY2FsZW5kYXIvd2lraS9BdXRvbWF0ZWQtVGVzdHMK]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/demos/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/fullcalendar/demos/agenda-views.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+DQo8aHRtbD4NCjxoZWFkPg0KPG1ldGEgY2hhcnNldD0ndXRmLTgnIC8+DQo8bGluayBocmVmPScuLi9mdWxsY2FsZW5kYXIubWluLmNzcycgcmVsPSdzdHlsZXNoZWV0JyAvPg0KPGxpbmsgaHJlZj0nLi4vZnVsbGNhbGVuZGFyLnByaW50Lm1pbi5jc3MnIHJlbD0nc3R5bGVzaGVldCcgbWVkaWE9J3ByaW50JyAvPg0KPHNjcmlwdCBzcmM9Jy4uL2xpYi9tb21lbnQubWluLmpzJz48L3NjcmlwdD4NCjxzY3JpcHQgc3JjPScuLi9saWIvanF1ZXJ5Lm1pbi5qcyc+PC9zY3JpcHQ+DQo8c2NyaXB0IHNyYz0nLi4vZnVsbGNhbGVuZGFyLm1pbi5qcyc+PC9zY3JpcHQ+DQo8c2NyaXB0Pg0KDQoJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7DQoJCQ0KCQkkKCcjY2FsZW5kYXInKS5mdWxsQ2FsZW5kYXIoew0KCQkJaGVhZGVyOiB7DQoJCQkJbGVmdDogJ3ByZXYsbmV4dCB0b2RheScsDQoJCQkJY2VudGVyOiAndGl0bGUnLA0KCQkJCXJpZ2h0OiAnbW9udGgsYWdlbmRhV2VlayxhZ2VuZGFEYXksbGlzdFdlZWsnDQoJCQl9LA0KCQkJZGVmYXVsdERhdGU6ICcyMDE3LTA0LTEyJywNCgkJCW5hdkxpbmtzOiB0cnVlLCAvLyBjYW4gY2xpY2sgZGF5L3dlZWsgbmFtZXMgdG8gbmF2aWdhdGUgdmlld3MNCgkJCWVkaXRhYmxlOiB0cnVlLA0KCQkJZXZlbnRMaW1pdDogdHJ1ZSwgLy8gYWxsb3cgIm1vcmUiIGxpbmsgd2hlbiB0b28gbWFueSBldmVudHMNCgkJCWV2ZW50czogWw0KCQkJCXsNCgkJCQkJdGl0bGU6ICdBbGwgRGF5IEV2ZW50JywNCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTAxJw0KCQkJCX0sDQoJCQkJew0KCQkJCQl0aXRsZTogJ0xvbmcgRXZlbnQnLA0KCQkJCQlzdGFydDogJzIwMTctMDQtMDcnLA0KCQkJCQllbmQ6ICcyMDE3LTA0LTEwJw0KCQkJCX0sDQoJCQkJew0KCQkJCQlpZDogOTk5LA0KCQkJCQl0aXRsZTogJ1JlcGVhdGluZyBFdmVudCcsDQoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0wOVQxNjowMDowMCcNCgkJCQl9LA0KCQkJCXsNCgkJCQkJaWQ6IDk5OSwNCgkJCQkJdGl0bGU6ICdSZXBlYXRpbmcgRXZlbnQnLA0KCQkJCQlzdGFydDogJzIwMTctMDQtMTZUMTY6MDA6MDAnDQoJCQkJfSwNCgkJCQl7DQoJCQkJCXRpdGxlOiAnQ29uZmVyZW5jZScsDQoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0xMScsDQoJCQkJCWVuZDogJzIwMTctMDQtMTMnDQoJCQkJfSwNCgkJCQl7DQoJCQkJCXRpdGxlOiAnTWVldGluZycsDQoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0xMlQxMDozMDowMCcsDQoJCQkJCWVuZDogJzIwMTctMDQtMTJUMTI6MzA6MDAnDQoJCQkJfSwNCgkJCQl7DQoJCQkJCXRpdGxlOiAnTHVuY2gnLA0KCQkJCQlzdGFydDogJzIwMTctMDQtMTJUMTI6MDA6MDAnDQoJCQkJfSwNCgkJCQl7DQoJCQkJCXRpdGxlOiAnTWVldGluZycsDQoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0xMlQxNDozMDowMCcNCgkJCQl9LA0KCQkJCXsNCgkJCQkJdGl0bGU6ICdIYXBweSBIb3VyJywNCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTEyVDE3OjMwOjAwJw0KCQkJCX0sDQoJCQkJew0KCQkJCQl0aXRsZTogJ0Rpbm5lcicsDQoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0xMlQyMDowMDowMCcNCgkJCQl9LA0KCQkJCXsNCgkJCQkJdGl0bGU6ICdCaXJ0aGRheSBQYXJ0eScsDQoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0xM1QwNzowMDowMCcNCgkJCQl9LA0KCQkJCXsNCgkJCQkJdGl0bGU6ICdDbGljayBmb3IgR29vZ2xlJywNCgkJCQkJdXJsOiAnaHR0cDovL2dvb2dsZS5jb20vJywNCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTI4Jw0KCQkJCX0NCgkJCV0NCgkJfSk7DQoJCQ0KCX0pOw0KDQo8L3NjcmlwdD4NCjxzdHlsZT4NCg0KCWJvZHkgew0KCQltYXJnaW46IDQwcHggMTBweDsNCgkJcGFkZGluZzogMDsNCgkJZm9udC1mYW1pbHk6ICJMdWNpZGEgR3JhbmRlIixIZWx2ZXRpY2EsQXJpYWwsVmVyZGFuYSxzYW5zLXNlcmlmOw0KCQlmb250LXNpemU6IDE0cHg7DQoJfQ0KDQoJI2NhbGVuZGFyIHsNCgkJbWF4LXdpZHRoOiA5MDBweDsNCgkJbWFyZ2luOiAwIGF1dG87DQoJfQ0KDQo8L3N0eWxlPg0KPC9oZWFkPg0KPGJvZHk+DQoNCgk8ZGl2IGlkPSdjYWxlbmRhcic+PC9kaXY+DQoNCjwvYm9keT4NCjwvaHRtbD4NCg==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/demos/background-events.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+DQo8aHRtbD4NCjxoZWFkPg0KPG1ldGEgY2hhcnNldD0ndXRmLTgnIC8+DQo8bGluayBocmVmPScuLi9mdWxsY2FsZW5kYXIubWluLmNzcycgcmVsPSdzdHlsZXNoZWV0JyAvPg0KPGxpbmsgaHJlZj0nLi4vZnVsbGNhbGVuZGFyLnByaW50Lm1pbi5jc3MnIHJlbD0nc3R5bGVzaGVldCcgbWVkaWE9J3ByaW50JyAvPg0KPHNjcmlwdCBzcmM9Jy4uL2xpYi9tb21lbnQubWluLmpzJz48L3NjcmlwdD4NCjxzY3JpcHQgc3JjPScuLi9saWIvanF1ZXJ5Lm1pbi5qcyc+PC9zY3JpcHQ+DQo8c2NyaXB0IHNyYz0nLi4vZnVsbGNhbGVuZGFyLm1pbi5qcyc+PC9zY3JpcHQ+DQo8c2NyaXB0Pg0KDQoJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7DQoNCgkJJCgnI2NhbGVuZGFyJykuZnVsbENhbGVuZGFyKHsNCgkJCWhlYWRlcjogew0KCQkJCWxlZnQ6ICdwcmV2LG5leHQgdG9kYXknLA0KCQkJCWNlbnRlcjogJ3RpdGxlJywNCgkJCQlyaWdodDogJ21vbnRoLGFnZW5kYVdlZWssYWdlbmRhRGF5LGxpc3RNb250aCcNCgkJCX0sDQoJCQlkZWZhdWx0RGF0ZTogJzIwMTctMDQtMTInLA0KCQkJbmF2TGlua3M6IHRydWUsIC8vIGNhbiBjbGljayBkYXkvd2VlayBuYW1lcyB0byBuYXZpZ2F0ZSB2aWV3cw0KCQkJYnVzaW5lc3NIb3VyczogdHJ1ZSwgLy8gZGlzcGxheSBidXNpbmVzcyBob3Vycw0KCQkJZWRpdGFibGU6IHRydWUsDQoJCQlldmVudHM6IFsNCgkJCQl7DQoJCQkJCXRpdGxlOiAnQnVzaW5lc3MgTHVuY2gnLA0KCQkJCQlzdGFydDogJzIwMTctMDQtMDNUMTM6MDA6MDAnLA0KCQkJCQljb25zdHJhaW50OiAnYnVzaW5lc3NIb3VycycNCgkJCQl9LA0KCQkJCXsNCgkJCQkJdGl0bGU6ICdNZWV0aW5nJywNCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTEzVDExOjAwOjAwJywNCgkJCQkJY29uc3RyYWludDogJ2F2YWlsYWJsZUZvck1lZXRpbmcnLCAvLyBkZWZpbmVkIGJlbG93DQoJCQkJCWNvbG9yOiAnIzI1N2U0YScNCgkJCQl9LA0KCQkJCXsNCgkJCQkJdGl0bGU6ICdDb25mZXJlbmNlJywNCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTE4JywNCgkJCQkJZW5kOiAnMjAxNy0wNC0yMCcNCgkJCQl9LA0KCQkJCXsNCgkJCQkJdGl0bGU6ICdQYXJ0eScsDQoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0yOVQyMDowMDowMCcNCgkJCQl9LA0KDQoJCQkJLy8gYXJlYXMgd2hlcmUgIk1lZXRpbmciIG11c3QgYmUgZHJvcHBlZA0KCQkJCXsNCgkJCQkJaWQ6ICdhdmFpbGFibGVGb3JNZWV0aW5nJywNCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTExVDEwOjAwOjAwJywNCgkJCQkJZW5kOiAnMjAxNy0wNC0xMVQxNjowMDowMCcsDQoJCQkJCXJlbmRlcmluZzogJ2JhY2tncm91bmQnDQoJCQkJfSwNCgkJCQl7DQoJCQkJCWlkOiAnYXZhaWxhYmxlRm9yTWVldGluZycsDQoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0xM1QxMDowMDowMCcsDQoJCQkJCWVuZDogJzIwMTctMDQtMTNUMTY6MDA6MDAnLA0KCQkJCQlyZW5kZXJpbmc6ICdiYWNrZ3JvdW5kJw0KCQkJCX0sDQoNCgkJCQkvLyByZWQgYXJlYXMgd2hlcmUgbm8gZXZlbnRzIGNhbiBiZSBkcm9wcGVkDQoJCQkJew0KCQkJCQlzdGFydDogJzIwMTctMDQtMjQnLA0KCQkJCQllbmQ6ICcyMDE3LTA0LTI4JywNCgkJCQkJb3ZlcmxhcDogZmFsc2UsDQoJCQkJCXJlbmRlcmluZzogJ2JhY2tncm91bmQnLA0KCQkJCQljb2xvcjogJyNmZjlmODknDQoJCQkJfSwNCgkJCQl7DQoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0wNicsDQoJCQkJCWVuZDogJzIwMTctMDQtMDgnLA0KCQkJCQlvdmVybGFwOiBmYWxzZSwNCgkJCQkJcmVuZGVyaW5nOiAnYmFja2dyb3VuZCcsDQoJCQkJCWNvbG9yOiAnI2ZmOWY4OScNCgkJCQl9DQoJCQldDQoJCX0pOw0KCQkNCgl9KTsNCg0KPC9zY3JpcHQ+DQo8c3R5bGU+DQoNCglib2R5IHsNCgkJbWFyZ2luOiA0MHB4IDEwcHg7DQoJCXBhZGRpbmc6IDA7DQoJCWZvbnQtZmFtaWx5OiAiTHVjaWRhIEdyYW5kZSIsSGVsdmV0aWNhLEFyaWFsLFZlcmRhbmEsc2Fucy1zZXJpZjsNCgkJZm9udC1zaXplOiAxNHB4Ow0KCX0NCg0KCSNjYWxlbmRhciB7DQoJCW1heC13aWR0aDogOTAwcHg7DQoJCW1hcmdpbjogMCBhdXRvOw0KCX0NCg0KPC9zdHlsZT4NCjwvaGVhZD4NCjxib2R5Pg0KDQoJPGRpdiBpZD0nY2FsZW5kYXInPjwvZGl2Pg0KDQo8L2JvZHk+DQo8L2h0bWw+DQo=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/demos/basic-views.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPG1ldGEgY2hhcnNldD0ndXRmLTgnIC8+CjxsaW5rIGhyZWY9Jy4uL2Z1bGxjYWxlbmRhci5taW4uY3NzJyByZWw9J3N0eWxlc2hlZXQnIC8+CjxsaW5rIGhyZWY9Jy4uL2Z1bGxjYWxlbmRhci5wcmludC5taW4uY3NzJyByZWw9J3N0eWxlc2hlZXQnIG1lZGlhPSdwcmludCcgLz4KPHNjcmlwdCBzcmM9Jy4uL2xpYi9tb21lbnQubWluLmpzJz48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Jy4uL2xpYi9qcXVlcnkubWluLmpzJz48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Jy4uL2Z1bGxjYWxlbmRhci5taW4uanMnPjwvc2NyaXB0Pgo8c2NyaXB0PgoKCSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewoJCQoJCSQoJyNjYWxlbmRhcicpLmZ1bGxDYWxlbmRhcih7CgkJCWhlYWRlcjogewoJCQkJbGVmdDogJ3ByZXYsbmV4dCB0b2RheScsCgkJCQljZW50ZXI6ICd0aXRsZScsCgkJCQlyaWdodDogJ21vbnRoLGJhc2ljV2VlayxiYXNpY0RheScKCQkJfSwKCQkJZGVmYXVsdERhdGU6ICcyMDE3LTA0LTEyJywKCQkJbmF2TGlua3M6IHRydWUsIC8vIGNhbiBjbGljayBkYXkvd2VlayBuYW1lcyB0byBuYXZpZ2F0ZSB2aWV3cwoJCQllZGl0YWJsZTogdHJ1ZSwKCQkJZXZlbnRMaW1pdDogdHJ1ZSwgLy8gYWxsb3cgIm1vcmUiIGxpbmsgd2hlbiB0b28gbWFueSBldmVudHMKCQkJZXZlbnRzOiBbCgkJCQl7CgkJCQkJdGl0bGU6ICdBbGwgRGF5IEV2ZW50JywKCQkJCQlzdGFydDogJzIwMTctMDQtMDEnCgkJCQl9LAoJCQkJewoJCQkJCXRpdGxlOiAnTG9uZyBFdmVudCcsCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTA3JywKCQkJCQllbmQ6ICcyMDE3LTA0LTEwJwoJCQkJfSwKCQkJCXsKCQkJCQlpZDogOTk5LAoJCQkJCXRpdGxlOiAnUmVwZWF0aW5nIEV2ZW50JywKCQkJCQlzdGFydDogJzIwMTctMDQtMDlUMTY6MDA6MDAnCgkJCQl9LAoJCQkJewoJCQkJCWlkOiA5OTksCgkJCQkJdGl0bGU6ICdSZXBlYXRpbmcgRXZlbnQnLAoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0xNlQxNjowMDowMCcKCQkJCX0sCgkJCQl7CgkJCQkJdGl0bGU6ICdDb25mZXJlbmNlJywKCQkJCQlzdGFydDogJzIwMTctMDQtMTEnLAoJCQkJCWVuZDogJzIwMTctMDQtMTMnCgkJCQl9LAoJCQkJewoJCQkJCXRpdGxlOiAnTWVldGluZycsCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTEyVDEwOjMwOjAwJywKCQkJCQllbmQ6ICcyMDE3LTA0LTEyVDEyOjMwOjAwJwoJCQkJfSwKCQkJCXsKCQkJCQl0aXRsZTogJ0x1bmNoJywKCQkJCQlzdGFydDogJzIwMTctMDQtMTJUMTI6MDA6MDAnCgkJCQl9LAoJCQkJewoJCQkJCXRpdGxlOiAnTWVldGluZycsCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTEyVDE0OjMwOjAwJwoJCQkJfSwKCQkJCXsKCQkJCQl0aXRsZTogJ0hhcHB5IEhvdXInLAoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0xMlQxNzozMDowMCcKCQkJCX0sCgkJCQl7CgkJCQkJdGl0bGU6ICdEaW5uZXInLAoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0xMlQyMDowMDowMCcKCQkJCX0sCgkJCQl7CgkJCQkJdGl0bGU6ICdCaXJ0aGRheSBQYXJ0eScsCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTEzVDA3OjAwOjAwJwoJCQkJfSwKCQkJCXsKCQkJCQl0aXRsZTogJ0NsaWNrIGZvciBHb29nbGUnLAoJCQkJCXVybDogJ2h0dHA6Ly9nb29nbGUuY29tLycsCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTI4JwoJCQkJfQoJCQldCgkJfSk7CgkJCgl9KTsKCjwvc2NyaXB0Pgo8c3R5bGU+CgoJYm9keSB7CgkJbWFyZ2luOiA0MHB4IDEwcHg7CgkJcGFkZGluZzogMDsKCQlmb250LWZhbWlseTogIkx1Y2lkYSBHcmFuZGUiLEhlbHZldGljYSxBcmlhbCxWZXJkYW5hLHNhbnMtc2VyaWY7CgkJZm9udC1zaXplOiAxNHB4OwoJfQoKCSNjYWxlbmRhciB7CgkJbWF4LXdpZHRoOiA5MDBweDsKCQltYXJnaW46IDAgYXV0bzsKCX0KCjwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+CgoJPGRpdiBpZD0nY2FsZW5kYXInPjwvZGl2PgoKPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/demos/default.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+DQo8aHRtbD4NCjxoZWFkPg0KPG1ldGEgY2hhcnNldD0ndXRmLTgnIC8+DQo8bGluayBocmVmPScuLi9mdWxsY2FsZW5kYXIubWluLmNzcycgcmVsPSdzdHlsZXNoZWV0JyAvPg0KPGxpbmsgaHJlZj0nLi4vZnVsbGNhbGVuZGFyLnByaW50Lm1pbi5jc3MnIHJlbD0nc3R5bGVzaGVldCcgbWVkaWE9J3ByaW50JyAvPg0KPHNjcmlwdCBzcmM9Jy4uL2xpYi9tb21lbnQubWluLmpzJz48L3NjcmlwdD4NCjxzY3JpcHQgc3JjPScuLi9saWIvanF1ZXJ5Lm1pbi5qcyc+PC9zY3JpcHQ+DQo8c2NyaXB0IHNyYz0nLi4vZnVsbGNhbGVuZGFyLm1pbi5qcyc+PC9zY3JpcHQ+DQo8c2NyaXB0Pg0KDQoJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7DQoNCgkJJCgnI2NhbGVuZGFyJykuZnVsbENhbGVuZGFyKHsNCgkJCWRlZmF1bHREYXRlOiAnMjAxNy0wNC0xMicsDQoJCQllZGl0YWJsZTogdHJ1ZSwNCgkJCWV2ZW50TGltaXQ6IHRydWUsIC8vIGFsbG93ICJtb3JlIiBsaW5rIHdoZW4gdG9vIG1hbnkgZXZlbnRzDQoJCQlldmVudHM6IFsNCgkJCQl7DQoJCQkJCXRpdGxlOiAnQWxsIERheSBFdmVudCcsDQoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0wMScNCgkJCQl9LA0KCQkJCXsNCgkJCQkJdGl0bGU6ICdMb25nIEV2ZW50JywNCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTA3JywNCgkJCQkJZW5kOiAnMjAxNy0wNC0xMCcNCgkJCQl9LA0KCQkJCXsNCgkJCQkJaWQ6IDk5OSwNCgkJCQkJdGl0bGU6ICdSZXBlYXRpbmcgRXZlbnQnLA0KCQkJCQlzdGFydDogJzIwMTctMDQtMDlUMTY6MDA6MDAnDQoJCQkJfSwNCgkJCQl7DQoJCQkJCWlkOiA5OTksDQoJCQkJCXRpdGxlOiAnUmVwZWF0aW5nIEV2ZW50JywNCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTE2VDE2OjAwOjAwJw0KCQkJCX0sDQoJCQkJew0KCQkJCQl0aXRsZTogJ0NvbmZlcmVuY2UnLA0KCQkJCQlzdGFydDogJzIwMTctMDQtMTEnLA0KCQkJCQllbmQ6ICcyMDE3LTA0LTEzJw0KCQkJCX0sDQoJCQkJew0KCQkJCQl0aXRsZTogJ01lZXRpbmcnLA0KCQkJCQlzdGFydDogJzIwMTctMDQtMTJUMTA6MzA6MDAnLA0KCQkJCQllbmQ6ICcyMDE3LTA0LTEyVDEyOjMwOjAwJw0KCQkJCX0sDQoJCQkJew0KCQkJCQl0aXRsZTogJ0x1bmNoJywNCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTEyVDEyOjAwOjAwJw0KCQkJCX0sDQoJCQkJew0KCQkJCQl0aXRsZTogJ01lZXRpbmcnLA0KCQkJCQlzdGFydDogJzIwMTctMDQtMTJUMTQ6MzA6MDAnDQoJCQkJfSwNCgkJCQl7DQoJCQkJCXRpdGxlOiAnSGFwcHkgSG91cicsDQoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0xMlQxNzozMDowMCcNCgkJCQl9LA0KCQkJCXsNCgkJCQkJdGl0bGU6ICdEaW5uZXInLA0KCQkJCQlzdGFydDogJzIwMTctMDQtMTJUMjA6MDA6MDAnDQoJCQkJfSwNCgkJCQl7DQoJCQkJCXRpdGxlOiAnQmlydGhkYXkgUGFydHknLA0KCQkJCQlzdGFydDogJzIwMTctMDQtMTNUMDc6MDA6MDAnDQoJCQkJfSwNCgkJCQl7DQoJCQkJCXRpdGxlOiAnQ2xpY2sgZm9yIEdvb2dsZScsDQoJCQkJCXVybDogJ2h0dHA6Ly9nb29nbGUuY29tLycsDQoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0yOCcNCgkJCQl9DQoJCQldDQoJCX0pOw0KCQkNCgl9KTsNCg0KPC9zY3JpcHQ+DQo8c3R5bGU+DQoNCglib2R5IHsNCgkJbWFyZ2luOiA0MHB4IDEwcHg7DQoJCXBhZGRpbmc6IDA7DQoJCWZvbnQtZmFtaWx5OiAiTHVjaWRhIEdyYW5kZSIsSGVsdmV0aWNhLEFyaWFsLFZlcmRhbmEsc2Fucy1zZXJpZjsNCgkJZm9udC1zaXplOiAxNHB4Ow0KCX0NCg0KCSNjYWxlbmRhciB7DQoJCW1heC13aWR0aDogOTAwcHg7DQoJCW1hcmdpbjogMCBhdXRvOw0KCX0NCg0KPC9zdHlsZT4NCjwvaGVhZD4NCjxib2R5Pg0KDQoJPGRpdiBpZD0nY2FsZW5kYXInPjwvZGl2Pg0KDQo8L2JvZHk+DQo8L2h0bWw+DQo=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/demos/external-dragging.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+DQo8aHRtbD4NCjxoZWFkPg0KPG1ldGEgY2hhcnNldD0ndXRmLTgnIC8+DQo8bGluayBocmVmPScuLi9mdWxsY2FsZW5kYXIubWluLmNzcycgcmVsPSdzdHlsZXNoZWV0JyAvPg0KPGxpbmsgaHJlZj0nLi4vZnVsbGNhbGVuZGFyLnByaW50Lm1pbi5jc3MnIHJlbD0nc3R5bGVzaGVldCcgbWVkaWE9J3ByaW50JyAvPg0KPHNjcmlwdCBzcmM9Jy4uL2xpYi9tb21lbnQubWluLmpzJz48L3NjcmlwdD4NCjxzY3JpcHQgc3JjPScuLi9saWIvanF1ZXJ5Lm1pbi5qcyc+PC9zY3JpcHQ+DQo8c2NyaXB0IHNyYz0nLi4vbGliL2pxdWVyeS11aS5taW4uanMnPjwvc2NyaXB0Pg0KPHNjcmlwdCBzcmM9Jy4uL2Z1bGxjYWxlbmRhci5taW4uanMnPjwvc2NyaXB0Pg0KPHNjcmlwdD4NCg0KCSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgew0KDQoNCgkJLyogaW5pdGlhbGl6ZSB0aGUgZXh0ZXJuYWwgZXZlbnRzDQoJCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCg0KCQkkKCcjZXh0ZXJuYWwtZXZlbnRzIC5mYy1ldmVudCcpLmVhY2goZnVuY3Rpb24oKSB7DQoNCgkJCS8vIHN0b3JlIGRhdGEgc28gdGhlIGNhbGVuZGFyIGtub3dzIHRvIHJlbmRlciBhbiBldmVudCB1cG9uIGRyb3ANCgkJCSQodGhpcykuZGF0YSgnZXZlbnQnLCB7DQoJCQkJdGl0bGU6ICQudHJpbSgkKHRoaXMpLnRleHQoKSksIC8vIHVzZSB0aGUgZWxlbWVudCdzIHRleHQgYXMgdGhlIGV2ZW50IHRpdGxlDQoJCQkJc3RpY2s6IHRydWUgLy8gbWFpbnRhaW4gd2hlbiB1c2VyIG5hdmlnYXRlcyAoc2VlIGRvY3Mgb24gdGhlIHJlbmRlckV2ZW50IG1ldGhvZCkNCgkJCX0pOw0KDQoJCQkvLyBtYWtlIHRoZSBldmVudCBkcmFnZ2FibGUgdXNpbmcgalF1ZXJ5IFVJDQoJCQkkKHRoaXMpLmRyYWdnYWJsZSh7DQoJCQkJekluZGV4OiA5OTksDQoJCQkJcmV2ZXJ0OiB0cnVlLCAgICAgIC8vIHdpbGwgY2F1c2UgdGhlIGV2ZW50IHRvIGdvIGJhY2sgdG8gaXRzDQoJCQkJcmV2ZXJ0RHVyYXRpb246IDAgIC8vICBvcmlnaW5hbCBwb3NpdGlvbiBhZnRlciB0aGUgZHJhZw0KCQkJfSk7DQoNCgkJfSk7DQoNCg0KCQkvKiBpbml0aWFsaXplIHRoZSBjYWxlbmRhcg0KCQktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoNCgkJJCgnI2NhbGVuZGFyJykuZnVsbENhbGVuZGFyKHsNCgkJCWhlYWRlcjogew0KCQkJCWxlZnQ6ICdwcmV2LG5leHQgdG9kYXknLA0KCQkJCWNlbnRlcjogJ3RpdGxlJywNCgkJCQlyaWdodDogJ21vbnRoLGFnZW5kYVdlZWssYWdlbmRhRGF5Jw0KCQkJfSwNCgkJCWVkaXRhYmxlOiB0cnVlLA0KCQkJZHJvcHBhYmxlOiB0cnVlLCAvLyB0aGlzIGFsbG93cyB0aGluZ3MgdG8gYmUgZHJvcHBlZCBvbnRvIHRoZSBjYWxlbmRhcg0KCQkJZHJvcDogZnVuY3Rpb24oKSB7DQoJCQkJLy8gaXMgdGhlICJyZW1vdmUgYWZ0ZXIgZHJvcCIgY2hlY2tib3ggY2hlY2tlZD8NCgkJCQlpZiAoJCgnI2Ryb3AtcmVtb3ZlJykuaXMoJzpjaGVja2VkJykpIHsNCgkJCQkJLy8gaWYgc28sIHJlbW92ZSB0aGUgZWxlbWVudCBmcm9tIHRoZSAiRHJhZ2dhYmxlIEV2ZW50cyIgbGlzdA0KCQkJCQkkKHRoaXMpLnJlbW92ZSgpOw0KCQkJCX0NCgkJCX0NCgkJfSk7DQoNCg0KCX0pOw0KDQo8L3NjcmlwdD4NCjxzdHlsZT4NCg0KCWJvZHkgew0KCQltYXJnaW4tdG9wOiA0MHB4Ow0KCQl0ZXh0LWFsaWduOiBjZW50ZXI7DQoJCWZvbnQtc2l6ZTogMTRweDsNCgkJZm9udC1mYW1pbHk6ICJMdWNpZGEgR3JhbmRlIixIZWx2ZXRpY2EsQXJpYWwsVmVyZGFuYSxzYW5zLXNlcmlmOw0KCX0NCgkJDQoJI3dyYXAgew0KCQl3aWR0aDogMTEwMHB4Ow0KCQltYXJnaW46IDAgYXV0bzsNCgl9DQoJCQ0KCSNleHRlcm5hbC1ldmVudHMgew0KCQlmbG9hdDogbGVmdDsNCgkJd2lkdGg6IDE1MHB4Ow0KCQlwYWRkaW5nOiAwIDEwcHg7DQoJCWJvcmRlcjogMXB4IHNvbGlkICNjY2M7DQoJCWJhY2tncm91bmQ6ICNlZWU7DQoJCXRleHQtYWxpZ246IGxlZnQ7DQoJfQ0KCQkNCgkjZXh0ZXJuYWwtZXZlbnRzIGg0IHsNCgkJZm9udC1zaXplOiAxNnB4Ow0KCQltYXJnaW4tdG9wOiAwOw0KCQlwYWRkaW5nLXRvcDogMWVtOw0KCX0NCgkJDQoJI2V4dGVybmFsLWV2ZW50cyAuZmMtZXZlbnQgew0KCQltYXJnaW46IDEwcHggMDsNCgkJY3Vyc29yOiBwb2ludGVyOw0KCX0NCgkJDQoJI2V4dGVybmFsLWV2ZW50cyBwIHsNCgkJbWFyZ2luOiAxLjVlbSAwOw0KCQlmb250LXNpemU6IDExcHg7DQoJCWNvbG9yOiAjNjY2Ow0KCX0NCgkJDQoJI2V4dGVybmFsLWV2ZW50cyBwIGlucHV0IHsNCgkJbWFyZ2luOiAwOw0KCQl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOw0KCX0NCg0KCSNjYWxlbmRhciB7DQoJCWZsb2F0OiByaWdodDsNCgkJd2lkdGg6IDkwMHB4Ow0KCX0NCg0KPC9zdHlsZT4NCjwvaGVhZD4NCjxib2R5Pg0KCTxkaXYgaWQ9J3dyYXAnPg0KDQoJCTxkaXYgaWQ9J2V4dGVybmFsLWV2ZW50cyc+DQoJCQk8aDQ+RHJhZ2dhYmxlIEV2ZW50czwvaDQ+DQoJCQk8ZGl2IGNsYXNzPSdmYy1ldmVudCc+TXkgRXZlbnQgMTwvZGl2Pg0KCQkJPGRpdiBjbGFzcz0nZmMtZXZlbnQnPk15IEV2ZW50IDI8L2Rpdj4NCgkJCTxkaXYgY2xhc3M9J2ZjLWV2ZW50Jz5NeSBFdmVudCAzPC9kaXY+DQoJCQk8ZGl2IGNsYXNzPSdmYy1ldmVudCc+TXkgRXZlbnQgNDwvZGl2Pg0KCQkJPGRpdiBjbGFzcz0nZmMtZXZlbnQnPk15IEV2ZW50IDU8L2Rpdj4NCgkJCTxwPg0KCQkJCTxpbnB1dCB0eXBlPSdjaGVja2JveCcgaWQ9J2Ryb3AtcmVtb3ZlJyAvPg0KCQkJCTxsYWJlbCBmb3I9J2Ryb3AtcmVtb3ZlJz5yZW1vdmUgYWZ0ZXIgZHJvcDwvbGFiZWw+DQoJCQk8L3A+DQoJCTwvZGl2Pg0KDQoJCTxkaXYgaWQ9J2NhbGVuZGFyJz48L2Rpdj4NCg0KCQk8ZGl2IHN0eWxlPSdjbGVhcjpib3RoJz48L2Rpdj4NCg0KCTwvZGl2Pg0KPC9ib2R5Pg0KPC9odG1sPg0K]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/demos/gcal.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPG1ldGEgY2hhcnNldD0ndXRmLTgnIC8+CjxsaW5rIGhyZWY9Jy4uL2Z1bGxjYWxlbmRhci5taW4uY3NzJyByZWw9J3N0eWxlc2hlZXQnIC8+CjxsaW5rIGhyZWY9Jy4uL2Z1bGxjYWxlbmRhci5wcmludC5taW4uY3NzJyByZWw9J3N0eWxlc2hlZXQnIG1lZGlhPSdwcmludCcgLz4KPHNjcmlwdCBzcmM9Jy4uL2xpYi9tb21lbnQubWluLmpzJz48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Jy4uL2xpYi9qcXVlcnkubWluLmpzJz48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Jy4uL2Z1bGxjYWxlbmRhci5taW4uanMnPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0nLi4vZ2NhbC5taW4uanMnPjwvc2NyaXB0Pgo8c2NyaXB0PgoKCSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewoJCgkJJCgnI2NhbGVuZGFyJykuZnVsbENhbGVuZGFyKHsKCgkJCWhlYWRlcjogewoJCQkJbGVmdDogJ3ByZXYsbmV4dCB0b2RheScsCgkJCQljZW50ZXI6ICd0aXRsZScsCgkJCQlyaWdodDogJ21vbnRoLGxpc3RZZWFyJwoJCQl9LAoKCQkJZGlzcGxheUV2ZW50VGltZTogZmFsc2UsIC8vIGRvbid0IHNob3cgdGhlIHRpbWUgY29sdW1uIGluIGxpc3QgdmlldwoKCQkJLy8gVEhJUyBLRVkgV09OJ1QgV09SSyBJTiBQUk9EVUNUSU9OISEhCgkJCS8vIFRvIG1ha2UgeW91ciBvd24gR29vZ2xlIEFQSSBrZXksIGZvbGxvdyB0aGUgZGlyZWN0aW9ucyBoZXJlOgoJCQkvLyBodHRwOi8vZnVsbGNhbGVuZGFyLmlvL2RvY3MvZ29vZ2xlX2NhbGVuZGFyLwoJCQlnb29nbGVDYWxlbmRhckFwaUtleTogJ0FJemFTeURjblc2V2VqcFRPQ2Zmc2hHRERiNG5lSXJYVlVBMUVBRScsCgkJCgkJCS8vIFVTIEhvbGlkYXlzCgkJCWV2ZW50czogJ2VuLnVzYSNob2xpZGF5QGdyb3VwLnYuY2FsZW5kYXIuZ29vZ2xlLmNvbScsCgkJCQoJCQlldmVudENsaWNrOiBmdW5jdGlvbihldmVudCkgewoJCQkJLy8gb3BlbnMgZXZlbnRzIGluIGEgcG9wdXAgd2luZG93CgkJCQl3aW5kb3cub3BlbihldmVudC51cmwsICdnY2FsZXZlbnQnLCAnd2lkdGg9NzAwLGhlaWdodD02MDAnKTsKCQkJCXJldHVybiBmYWxzZTsKCQkJfSwKCQkJCgkJCWxvYWRpbmc6IGZ1bmN0aW9uKGJvb2wpIHsKCQkJCSQoJyNsb2FkaW5nJykudG9nZ2xlKGJvb2wpOwoJCQl9CgkJCQoJCX0pOwoJCQoJfSk7Cgo8L3NjcmlwdD4KPHN0eWxlPgoKCWJvZHkgewoJCW1hcmdpbjogNDBweCAxMHB4OwoJCXBhZGRpbmc6IDA7CgkJZm9udC1mYW1pbHk6ICJMdWNpZGEgR3JhbmRlIixIZWx2ZXRpY2EsQXJpYWwsVmVyZGFuYSxzYW5zLXNlcmlmOwoJCWZvbnQtc2l6ZTogMTRweDsKCX0KCQkKCSNsb2FkaW5nIHsKCQlkaXNwbGF5OiBub25lOwoJCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCQl0b3A6IDEwcHg7CgkJcmlnaHQ6IDEwcHg7Cgl9CgoJI2NhbGVuZGFyIHsKCQltYXgtd2lkdGg6IDkwMHB4OwoJCW1hcmdpbjogMCBhdXRvOwoJfQoKPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KCgk8ZGl2IGlkPSdsb2FkaW5nJz5sb2FkaW5nLi4uPC9kaXY+CgoJPGRpdiBpZD0nY2FsZW5kYXInPjwvZGl2PgoKPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/demos/json.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPG1ldGEgY2hhcnNldD0ndXRmLTgnIC8+CjxsaW5rIGhyZWY9Jy4uL2Z1bGxjYWxlbmRhci5taW4uY3NzJyByZWw9J3N0eWxlc2hlZXQnIC8+CjxsaW5rIGhyZWY9Jy4uL2Z1bGxjYWxlbmRhci5wcmludC5taW4uY3NzJyByZWw9J3N0eWxlc2hlZXQnIG1lZGlhPSdwcmludCcgLz4KPHNjcmlwdCBzcmM9Jy4uL2xpYi9tb21lbnQubWluLmpzJz48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Jy4uL2xpYi9qcXVlcnkubWluLmpzJz48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Jy4uL2Z1bGxjYWxlbmRhci5taW4uanMnPjwvc2NyaXB0Pgo8c2NyaXB0PgoKCSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewoJCgkJJCgnI2NhbGVuZGFyJykuZnVsbENhbGVuZGFyKHsKCQkJaGVhZGVyOiB7CgkJCQlsZWZ0OiAncHJldixuZXh0IHRvZGF5JywKCQkJCWNlbnRlcjogJ3RpdGxlJywKCQkJCXJpZ2h0OiAnbW9udGgsYWdlbmRhV2VlayxhZ2VuZGFEYXksbGlzdFdlZWsnCgkJCX0sCgkJCWRlZmF1bHREYXRlOiAnMjAxNy0wNC0xMicsCgkJCWVkaXRhYmxlOiB0cnVlLAoJCQluYXZMaW5rczogdHJ1ZSwgLy8gY2FuIGNsaWNrIGRheS93ZWVrIG5hbWVzIHRvIG5hdmlnYXRlIHZpZXdzCgkJCWV2ZW50TGltaXQ6IHRydWUsIC8vIGFsbG93ICJtb3JlIiBsaW5rIHdoZW4gdG9vIG1hbnkgZXZlbnRzCgkJCWV2ZW50czogewoJCQkJdXJsOiAncGhwL2dldC1ldmVudHMucGhwJywKCQkJCWVycm9yOiBmdW5jdGlvbigpIHsKCQkJCQkkKCcjc2NyaXB0LXdhcm5pbmcnKS5zaG93KCk7CgkJCQl9CgkJCX0sCgkJCWxvYWRpbmc6IGZ1bmN0aW9uKGJvb2wpIHsKCQkJCSQoJyNsb2FkaW5nJykudG9nZ2xlKGJvb2wpOwoJCQl9CgkJfSk7CgkJCgl9KTsKCjwvc2NyaXB0Pgo8c3R5bGU+CgoJYm9keSB7CgkJbWFyZ2luOiAwOwoJCXBhZGRpbmc6IDA7CgkJZm9udC1mYW1pbHk6ICJMdWNpZGEgR3JhbmRlIixIZWx2ZXRpY2EsQXJpYWwsVmVyZGFuYSxzYW5zLXNlcmlmOwoJCWZvbnQtc2l6ZTogMTRweDsKCX0KCgkjc2NyaXB0LXdhcm5pbmcgewoJCWRpc3BsYXk6IG5vbmU7CgkJYmFja2dyb3VuZDogI2VlZTsKCQlib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDsKCQlwYWRkaW5nOiAwIDEwcHg7CgkJbGluZS1oZWlnaHQ6IDQwcHg7CgkJdGV4dC1hbGlnbjogY2VudGVyOwoJCWZvbnQtd2VpZ2h0OiBib2xkOwoJCWZvbnQtc2l6ZTogMTJweDsKCQljb2xvcjogcmVkOwoJfQoKCSNsb2FkaW5nIHsKCQlkaXNwbGF5OiBub25lOwoJCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCQl0b3A6IDEwcHg7CgkJcmlnaHQ6IDEwcHg7Cgl9CgoJI2NhbGVuZGFyIHsKCQltYXgtd2lkdGg6IDkwMHB4OwoJCW1hcmdpbjogNDBweCBhdXRvOwoJCXBhZGRpbmc6IDAgMTBweDsKCX0KCjwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+CgoJPGRpdiBpZD0nc2NyaXB0LXdhcm5pbmcnPgoJCTxjb2RlPnBocC9nZXQtZXZlbnRzLnBocDwvY29kZT4gbXVzdCBiZSBydW5uaW5nLgoJPC9kaXY+CgoJPGRpdiBpZD0nbG9hZGluZyc+bG9hZGluZy4uLjwvZGl2PgoKCTxkaXYgaWQ9J2NhbGVuZGFyJz48L2Rpdj4KCjwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/demos/json/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/fullcalendar/demos/json/events.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[WwogIHsKICAgICJ0aXRsZSI6ICJBbGwgRGF5IEV2ZW50IiwKICAgICJzdGFydCI6ICIyMDE3LTA0LTAxIgogIH0sCiAgewogICAgInRpdGxlIjogIkxvbmcgRXZlbnQiLAogICAgInN0YXJ0IjogIjIwMTctMDQtMDciLAogICAgImVuZCI6ICIyMDE3LTA0LTEwIgogIH0sCiAgewogICAgImlkIjogIjk5OSIsCiAgICAidGl0bGUiOiAiUmVwZWF0aW5nIEV2ZW50IiwKICAgICJzdGFydCI6ICIyMDE3LTA0LTA5VDE2OjAwOjAwLTA1OjAwIgogIH0sCiAgewogICAgImlkIjogIjk5OSIsCiAgICAidGl0bGUiOiAiUmVwZWF0aW5nIEV2ZW50IiwKICAgICJzdGFydCI6ICIyMDE3LTA0LTE2VDE2OjAwOjAwLTA1OjAwIgogIH0sCiAgewogICAgInRpdGxlIjogIkNvbmZlcmVuY2UiLAogICAgInN0YXJ0IjogIjIwMTctMDQtMTEiLAogICAgImVuZCI6ICIyMDE3LTA0LTEzIgogIH0sCiAgewogICAgInRpdGxlIjogIk1lZXRpbmciLAogICAgInN0YXJ0IjogIjIwMTctMDQtMTJUMTA6MzA6MDAtMDU6MDAiLAogICAgImVuZCI6ICIyMDE3LTA0LTEyVDEyOjMwOjAwLTA1OjAwIgogIH0sCiAgewogICAgInRpdGxlIjogIkx1bmNoIiwKICAgICJzdGFydCI6ICIyMDE3LTA0LTEyVDEyOjAwOjAwLTA1OjAwIgogIH0sCiAgewogICAgInRpdGxlIjogIk1lZXRpbmciLAogICAgInN0YXJ0IjogIjIwMTctMDQtMTJUMTQ6MzA6MDAtMDU6MDAiCiAgfSwKICB7CiAgICAidGl0bGUiOiAiSGFwcHkgSG91ciIsCiAgICAic3RhcnQiOiAiMjAxNy0wNC0xMlQxNzozMDowMC0wNTowMCIKICB9LAogIHsKICAgICJ0aXRsZSI6ICJEaW5uZXIiLAogICAgInN0YXJ0IjogIjIwMTctMDQtMTJUMjA6MDA6MDAiCiAgfSwKICB7CiAgICAidGl0bGUiOiAiQmlydGhkYXkgUGFydHkiLAogICAgInN0YXJ0IjogIjIwMTctMDQtMTNUMDc6MDA6MDAtMDU6MDAiCiAgfSwKICB7CiAgICAidGl0bGUiOiAiQ2xpY2sgZm9yIEdvb2dsZSIsCiAgICAidXJsIjogImh0dHA6Ly9nb29nbGUuY29tLyIsCiAgICAic3RhcnQiOiAiMjAxNy0wNC0yOCIKICB9Cl0K]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/demos/list-views.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+DQo8aHRtbD4NCjxoZWFkPg0KPG1ldGEgY2hhcnNldD0ndXRmLTgnIC8+DQo8bGluayBocmVmPScuLi9mdWxsY2FsZW5kYXIubWluLmNzcycgcmVsPSdzdHlsZXNoZWV0JyAvPg0KPGxpbmsgaHJlZj0nLi4vZnVsbGNhbGVuZGFyLnByaW50Lm1pbi5jc3MnIHJlbD0nc3R5bGVzaGVldCcgbWVkaWE9J3ByaW50JyAvPg0KPHNjcmlwdCBzcmM9Jy4uL2xpYi9tb21lbnQubWluLmpzJz48L3NjcmlwdD4NCjxzY3JpcHQgc3JjPScuLi9saWIvanF1ZXJ5Lm1pbi5qcyc+PC9zY3JpcHQ+DQo8c2NyaXB0IHNyYz0nLi4vZnVsbGNhbGVuZGFyLm1pbi5qcyc+PC9zY3JpcHQ+DQo8c2NyaXB0Pg0KDQoJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7DQoJCQ0KCQkkKCcjY2FsZW5kYXInKS5mdWxsQ2FsZW5kYXIoew0KCQkJaGVhZGVyOiB7DQoJCQkJbGVmdDogJ3ByZXYsbmV4dCB0b2RheScsDQoJCQkJY2VudGVyOiAndGl0bGUnLA0KCQkJCXJpZ2h0OiAnbGlzdERheSxsaXN0V2Vlayxtb250aCcNCgkJCX0sDQoNCgkJCS8vIGN1c3RvbWl6ZSB0aGUgYnV0dG9uIG5hbWVzLA0KCQkJLy8gb3RoZXJ3aXNlIHRoZXknZCBhbGwganVzdCBzYXkgImxpc3QiDQoJCQl2aWV3czogew0KCQkJCWxpc3REYXk6IHsgYnV0dG9uVGV4dDogJ2xpc3QgZGF5JyB9LA0KCQkJCWxpc3RXZWVrOiB7IGJ1dHRvblRleHQ6ICdsaXN0IHdlZWsnIH0NCgkJCX0sDQoNCgkJCWRlZmF1bHRWaWV3OiAnbGlzdFdlZWsnLA0KCQkJZGVmYXVsdERhdGU6ICcyMDE3LTA0LTEyJywNCgkJCW5hdkxpbmtzOiB0cnVlLCAvLyBjYW4gY2xpY2sgZGF5L3dlZWsgbmFtZXMgdG8gbmF2aWdhdGUgdmlld3MNCgkJCWVkaXRhYmxlOiB0cnVlLA0KCQkJZXZlbnRMaW1pdDogdHJ1ZSwgLy8gYWxsb3cgIm1vcmUiIGxpbmsgd2hlbiB0b28gbWFueSBldmVudHMNCgkJCWV2ZW50czogWw0KCQkJCXsNCgkJCQkJdGl0bGU6ICdBbGwgRGF5IEV2ZW50JywNCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTAxJw0KCQkJCX0sDQoJCQkJew0KCQkJCQl0aXRsZTogJ0xvbmcgRXZlbnQnLA0KCQkJCQlzdGFydDogJzIwMTctMDQtMDcnLA0KCQkJCQllbmQ6ICcyMDE3LTA0LTEwJw0KCQkJCX0sDQoJCQkJew0KCQkJCQlpZDogOTk5LA0KCQkJCQl0aXRsZTogJ1JlcGVhdGluZyBFdmVudCcsDQoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0wOVQxNjowMDowMCcNCgkJCQl9LA0KCQkJCXsNCgkJCQkJaWQ6IDk5OSwNCgkJCQkJdGl0bGU6ICdSZXBlYXRpbmcgRXZlbnQnLA0KCQkJCQlzdGFydDogJzIwMTctMDQtMTZUMTY6MDA6MDAnDQoJCQkJfSwNCgkJCQl7DQoJCQkJCXRpdGxlOiAnQ29uZmVyZW5jZScsDQoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0xMScsDQoJCQkJCWVuZDogJzIwMTctMDQtMTMnDQoJCQkJfSwNCgkJCQl7DQoJCQkJCXRpdGxlOiAnTWVldGluZycsDQoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0xMlQxMDozMDowMCcsDQoJCQkJCWVuZDogJzIwMTctMDQtMTJUMTI6MzA6MDAnDQoJCQkJfSwNCgkJCQl7DQoJCQkJCXRpdGxlOiAnTHVuY2gnLA0KCQkJCQlzdGFydDogJzIwMTctMDQtMTJUMTI6MDA6MDAnDQoJCQkJfSwNCgkJCQl7DQoJCQkJCXRpdGxlOiAnTWVldGluZycsDQoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0xMlQxNDozMDowMCcNCgkJCQl9LA0KCQkJCXsNCgkJCQkJdGl0bGU6ICdIYXBweSBIb3VyJywNCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTEyVDE3OjMwOjAwJw0KCQkJCX0sDQoJCQkJew0KCQkJCQl0aXRsZTogJ0Rpbm5lcicsDQoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0xMlQyMDowMDowMCcNCgkJCQl9LA0KCQkJCXsNCgkJCQkJdGl0bGU6ICdCaXJ0aGRheSBQYXJ0eScsDQoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0xM1QwNzowMDowMCcNCgkJCQl9LA0KCQkJCXsNCgkJCQkJdGl0bGU6ICdDbGljayBmb3IgR29vZ2xlJywNCgkJCQkJdXJsOiAnaHR0cDovL2dvb2dsZS5jb20vJywNCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTI4Jw0KCQkJCX0NCgkJCV0NCgkJfSk7DQoJCQ0KCX0pOw0KDQo8L3NjcmlwdD4NCjxzdHlsZT4NCg0KCWJvZHkgew0KCQltYXJnaW46IDQwcHggMTBweDsNCgkJcGFkZGluZzogMDsNCgkJZm9udC1mYW1pbHk6ICJMdWNpZGEgR3JhbmRlIixIZWx2ZXRpY2EsQXJpYWwsVmVyZGFuYSxzYW5zLXNlcmlmOw0KCQlmb250LXNpemU6IDE0cHg7DQoJfQ0KDQoJI2NhbGVuZGFyIHsNCgkJbWF4LXdpZHRoOiA5MDBweDsNCgkJbWFyZ2luOiAwIGF1dG87DQoJfQ0KDQo8L3N0eWxlPg0KPC9oZWFkPg0KPGJvZHk+DQoNCgk8ZGl2IGlkPSdjYWxlbmRhcic+PC9kaXY+DQoNCjwvYm9keT4NCjwvaHRtbD4NCg==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/demos/locales.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+DQo8aHRtbD4NCjxoZWFkPg0KPG1ldGEgY2hhcnNldD0ndXRmLTgnIC8+DQo8bGluayBocmVmPScuLi9mdWxsY2FsZW5kYXIubWluLmNzcycgcmVsPSdzdHlsZXNoZWV0JyAvPg0KPGxpbmsgaHJlZj0nLi4vZnVsbGNhbGVuZGFyLnByaW50Lm1pbi5jc3MnIHJlbD0nc3R5bGVzaGVldCcgbWVkaWE9J3ByaW50JyAvPg0KPHNjcmlwdCBzcmM9Jy4uL2xpYi9tb21lbnQubWluLmpzJz48L3NjcmlwdD4NCjxzY3JpcHQgc3JjPScuLi9saWIvanF1ZXJ5Lm1pbi5qcyc+PC9zY3JpcHQ+DQo8c2NyaXB0IHNyYz0nLi4vZnVsbGNhbGVuZGFyLm1pbi5qcyc+PC9zY3JpcHQ+DQo8c2NyaXB0IHNyYz0nLi4vbG9jYWxlLWFsbC5qcyc+PC9zY3JpcHQ+DQo8c2NyaXB0Pg0KDQoJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7DQoJCXZhciBpbml0aWFsTG9jYWxlQ29kZSA9ICdlbic7DQoNCgkJJCgnI2NhbGVuZGFyJykuZnVsbENhbGVuZGFyKHsNCgkJCWhlYWRlcjogew0KCQkJCWxlZnQ6ICdwcmV2LG5leHQgdG9kYXknLA0KCQkJCWNlbnRlcjogJ3RpdGxlJywNCgkJCQlyaWdodDogJ21vbnRoLGFnZW5kYVdlZWssYWdlbmRhRGF5LGxpc3RNb250aCcNCgkJCX0sDQoJCQlkZWZhdWx0RGF0ZTogJzIwMTctMDQtMTInLA0KCQkJbG9jYWxlOiBpbml0aWFsTG9jYWxlQ29kZSwNCgkJCWJ1dHRvbkljb25zOiBmYWxzZSwgLy8gc2hvdyB0aGUgcHJldi9uZXh0IHRleHQNCgkJCXdlZWtOdW1iZXJzOiB0cnVlLA0KCQkJbmF2TGlua3M6IHRydWUsIC8vIGNhbiBjbGljayBkYXkvd2VlayBuYW1lcyB0byBuYXZpZ2F0ZSB2aWV3cw0KCQkJZWRpdGFibGU6IHRydWUsDQoJCQlldmVudExpbWl0OiB0cnVlLCAvLyBhbGxvdyAibW9yZSIgbGluayB3aGVuIHRvbyBtYW55IGV2ZW50cw0KCQkJZXZlbnRzOiBbDQoJCQkJew0KCQkJCQl0aXRsZTogJ0FsbCBEYXkgRXZlbnQnLA0KCQkJCQlzdGFydDogJzIwMTctMDQtMDEnDQoJCQkJfSwNCgkJCQl7DQoJCQkJCXRpdGxlOiAnTG9uZyBFdmVudCcsDQoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0wNycsDQoJCQkJCWVuZDogJzIwMTctMDQtMTAnDQoJCQkJfSwNCgkJCQl7DQoJCQkJCWlkOiA5OTksDQoJCQkJCXRpdGxlOiAnUmVwZWF0aW5nIEV2ZW50JywNCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTA5VDE2OjAwOjAwJw0KCQkJCX0sDQoJCQkJew0KCQkJCQlpZDogOTk5LA0KCQkJCQl0aXRsZTogJ1JlcGVhdGluZyBFdmVudCcsDQoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0xNlQxNjowMDowMCcNCgkJCQl9LA0KCQkJCXsNCgkJCQkJdGl0bGU6ICdDb25mZXJlbmNlJywNCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTExJywNCgkJCQkJZW5kOiAnMjAxNy0wNC0xMycNCgkJCQl9LA0KCQkJCXsNCgkJCQkJdGl0bGU6ICdNZWV0aW5nJywNCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTEyVDEwOjMwOjAwJywNCgkJCQkJZW5kOiAnMjAxNy0wNC0xMlQxMjozMDowMCcNCgkJCQl9LA0KCQkJCXsNCgkJCQkJdGl0bGU6ICdMdW5jaCcsDQoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0xMlQxMjowMDowMCcNCgkJCQl9LA0KCQkJCXsNCgkJCQkJdGl0bGU6ICdNZWV0aW5nJywNCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTEyVDE0OjMwOjAwJw0KCQkJCX0sDQoJCQkJew0KCQkJCQl0aXRsZTogJ0hhcHB5IEhvdXInLA0KCQkJCQlzdGFydDogJzIwMTctMDQtMTJUMTc6MzA6MDAnDQoJCQkJfSwNCgkJCQl7DQoJCQkJCXRpdGxlOiAnRGlubmVyJywNCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTEyVDIwOjAwOjAwJw0KCQkJCX0sDQoJCQkJew0KCQkJCQl0aXRsZTogJ0JpcnRoZGF5IFBhcnR5JywNCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTEzVDA3OjAwOjAwJw0KCQkJCX0sDQoJCQkJew0KCQkJCQl0aXRsZTogJ0NsaWNrIGZvciBHb29nbGUnLA0KCQkJCQl1cmw6ICdodHRwOi8vZ29vZ2xlLmNvbS8nLA0KCQkJCQlzdGFydDogJzIwMTctMDQtMjgnDQoJCQkJfQ0KCQkJXQ0KCQl9KTsNCg0KCQkvLyBidWlsZCB0aGUgbG9jYWxlIHNlbGVjdG9yJ3Mgb3B0aW9ucw0KCQkkLmVhY2goJC5mdWxsQ2FsZW5kYXIubG9jYWxlcywgZnVuY3Rpb24obG9jYWxlQ29kZSkgew0KCQkJJCgnI2xvY2FsZS1zZWxlY3RvcicpLmFwcGVuZCgNCgkJCQkkKCc8b3B0aW9uLz4nKQ0KCQkJCQkuYXR0cigndmFsdWUnLCBsb2NhbGVDb2RlKQ0KCQkJCQkucHJvcCgnc2VsZWN0ZWQnLCBsb2NhbGVDb2RlID09IGluaXRpYWxMb2NhbGVDb2RlKQ0KCQkJCQkudGV4dChsb2NhbGVDb2RlKQ0KCQkJKTsNCgkJfSk7DQoNCgkJLy8gd2hlbiB0aGUgc2VsZWN0ZWQgb3B0aW9uIGNoYW5nZXMsIGR5bmFtaWNhbGx5IGNoYW5nZSB0aGUgY2FsZW5kYXIgb3B0aW9uDQoJCSQoJyNsb2NhbGUtc2VsZWN0b3InKS5vbignY2hhbmdlJywgZnVuY3Rpb24oKSB7DQoJCQlpZiAodGhpcy52YWx1ZSkgew0KCQkJCSQoJyNjYWxlbmRhcicpLmZ1bGxDYWxlbmRhcignb3B0aW9uJywgJ2xvY2FsZScsIHRoaXMudmFsdWUpOw0KCQkJfQ0KCQl9KTsNCgl9KTsNCg0KPC9zY3JpcHQ+DQo8c3R5bGU+DQoNCglib2R5IHsNCgkJbWFyZ2luOiAwOw0KCQlwYWRkaW5nOiAwOw0KCQlmb250LWZhbWlseTogIkx1Y2lkYSBHcmFuZGUiLEhlbHZldGljYSxBcmlhbCxWZXJkYW5hLHNhbnMtc2VyaWY7DQoJCWZvbnQtc2l6ZTogMTRweDsNCgl9DQoNCgkjdG9wIHsNCgkJYmFja2dyb3VuZDogI2VlZTsNCgkJYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7DQoJCXBhZGRpbmc6IDAgMTBweDsNCgkJbGluZS1oZWlnaHQ6IDQwcHg7DQoJCWZvbnQtc2l6ZTogMTJweDsNCgl9DQoNCgkjY2FsZW5kYXIgew0KCQltYXgtd2lkdGg6IDkwMHB4Ow0KCQltYXJnaW46IDQwcHggYXV0bzsNCgkJcGFkZGluZzogMCAxMHB4Ow0KCX0NCg0KPC9zdHlsZT4NCjwvaGVhZD4NCjxib2R5Pg0KDQoJPGRpdiBpZD0ndG9wJz4NCg0KCQlMb2NhbGVzOg0KCQk8c2VsZWN0IGlkPSdsb2NhbGUtc2VsZWN0b3InPjwvc2VsZWN0Pg0KDQoJPC9kaXY+DQoNCgk8ZGl2IGlkPSdjYWxlbmRhcic+PC9kaXY+DQoNCjwvYm9keT4NCjwvaHRtbD4NCg==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/demos/php/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/fullcalendar/demos/php/get-events.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gVGhpcyBzY3JpcHQgcmVhZHMgZXZlbnQgZGF0YSBmcm9tIGEgSlNPTiBmaWxlIGFuZCBvdXRwdXRzIHRob3NlIGV2ZW50cyB3aGljaCBhcmUgd2l0aGluIHRoZSByYW5nZQovLyBzdXBwbGllZCBieSB0aGUgInN0YXJ0IiBhbmQgImVuZCIgR0VUIHBhcmFtZXRlcnMuCi8vCi8vIEFuIG9wdGlvbmFsICJ0aW1lem9uZSIgR0VUIHBhcmFtZXRlciB3aWxsIGZvcmNlIGFsbCBJU084NjAxIGRhdGUgc3RpbmdzIHRvIGEgZ2l2ZW4gdGltZXpvbmUuCi8vCi8vIFJlcXVpcmVzIFBIUCA1LjIuMCBvciBoaWdoZXIuCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIFJlcXVpcmUgb3VyIEV2ZW50IGNsYXNzIGFuZCBkYXRldGltZSB1dGlsaXRpZXMKcmVxdWlyZSBkaXJuYW1lKF9fRklMRV9fKSAuICcvdXRpbHMucGhwJzsKCi8vIFNob3J0LWNpcmN1aXQgaWYgdGhlIGNsaWVudCBkaWQgbm90IGdpdmUgdXMgYSBkYXRlIHJhbmdlLgppZiAoIWlzc2V0KCRfR0VUWydzdGFydCddKSB8fCAhaXNzZXQoJF9HRVRbJ2VuZCddKSkgewoJZGllKCJQbGVhc2UgcHJvdmlkZSBhIGRhdGUgcmFuZ2UuIik7Cn0KCi8vIFBhcnNlIHRoZSBzdGFydC9lbmQgcGFyYW1ldGVycy4KLy8gVGhlc2UgYXJlIGFzc3VtZWQgdG8gYmUgSVNPODYwMSBzdHJpbmdzIHdpdGggbm8gdGltZSBub3IgdGltZXpvbmUsIGxpa2UgIjIwMTMtMTItMjkiLgovLyBTaW5jZSBubyB0aW1lem9uZSB3aWxsIGJlIHByZXNlbnQsIHRoZXkgd2lsbCBwYXJzZWQgYXMgVVRDLgokcmFuZ2Vfc3RhcnQgPSBwYXJzZURhdGVUaW1lKCRfR0VUWydzdGFydCddKTsKJHJhbmdlX2VuZCA9IHBhcnNlRGF0ZVRpbWUoJF9HRVRbJ2VuZCddKTsKCi8vIFBhcnNlIHRoZSB0aW1lem9uZSBwYXJhbWV0ZXIgaWYgaXQgaXMgcHJlc2VudC4KJHRpbWV6b25lID0gbnVsbDsKaWYgKGlzc2V0KCRfR0VUWyd0aW1lem9uZSddKSkgewoJJHRpbWV6b25lID0gbmV3IERhdGVUaW1lWm9uZSgkX0dFVFsndGltZXpvbmUnXSk7Cn0KCi8vIFJlYWQgYW5kIHBhcnNlIG91ciBldmVudHMgSlNPTiBmaWxlIGludG8gYW4gYXJyYXkgb2YgZXZlbnQgZGF0YSBhcnJheXMuCiRqc29uID0gZmlsZV9nZXRfY29udGVudHMoZGlybmFtZShfX0ZJTEVfXykgLiAnLy4uL2pzb24vZXZlbnRzLmpzb24nKTsKJGlucHV0X2FycmF5cyA9IGpzb25fZGVjb2RlKCRqc29uLCB0cnVlKTsKCi8vIEFjY3VtdWxhdGUgYW4gb3V0cHV0IGFycmF5IG9mIGV2ZW50IGRhdGEgYXJyYXlzLgokb3V0cHV0X2FycmF5cyA9IGFycmF5KCk7CmZvcmVhY2ggKCRpbnB1dF9hcnJheXMgYXMgJGFycmF5KSB7CgoJLy8gQ29udmVydCB0aGUgaW5wdXQgYXJyYXkgaW50byBhIHVzZWZ1bCBFdmVudCBvYmplY3QKCSRldmVudCA9IG5ldyBFdmVudCgkYXJyYXksICR0aW1lem9uZSk7CgoJLy8gSWYgdGhlIGV2ZW50IGlzIGluLWJvdW5kcywgYWRkIGl0IHRvIHRoZSBvdXRwdXQKCWlmICgkZXZlbnQtPmlzV2l0aGluRGF5UmFuZ2UoJHJhbmdlX3N0YXJ0LCAkcmFuZ2VfZW5kKSkgewoJCSRvdXRwdXRfYXJyYXlzW10gPSAkZXZlbnQtPnRvQXJyYXkoKTsKCX0KfQoKLy8gU2VuZCBKU09OIHRvIHRoZSBjbGllbnQuCmVjaG8ganNvbl9lbmNvZGUoJG91dHB1dF9hcnJheXMpOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/demos/php/get-timezones.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gVGhpcyBzY3JpcHQgb3V0cHV0cyBhIEpTT04gYXJyYXkgb2YgYWxsIHRpbWV6b25lcyAobGlrZSAiQW1lcmljYS9DaGljYWdvIikgdGhhdCBQSFAgc3VwcG9ydHMuCi8vCi8vIFJlcXVpcmVzIFBIUCA1LjIuMCBvciBoaWdoZXIuCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmVjaG8ganNvbl9lbmNvZGUoRGF0ZVRpbWVab25lOjpsaXN0SWRlbnRpZmllcnMoKSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/demos/php/utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gVXRpbGl0aWVzIGZvciBvdXIgZXZlbnQtZmV0Y2hpbmcgc2NyaXB0cy4KLy8KLy8gUmVxdWlyZXMgUEhQIDUuMi4wIG9yIGhpZ2hlci4KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gUEhQIHdpbGwgZmF0YWwgZXJyb3IgaWYgd2UgYXR0ZW1wdCB0byB1c2UgdGhlIERhdGVUaW1lIGNsYXNzIHdpdGhvdXQgdGhpcyBiZWluZyBzZXQuCmRhdGVfZGVmYXVsdF90aW1lem9uZV9zZXQoJ1VUQycpOwoKCmNsYXNzIEV2ZW50IHsKCgkvLyBUZXN0cyB3aGV0aGVyIHRoZSBnaXZlbiBJU084NjAxIHN0cmluZyBoYXMgYSB0aW1lLW9mLWRheSBvciBub3QKCWNvbnN0IEFMTF9EQVlfUkVHRVggPSAnL15cZHs0fS1cZFxkLVxkXGQkLyc7IC8vIG1hdGNoZXMgc3RyaW5ncyBsaWtlICIyMDEzLTEyLTI5IgoKCXB1YmxpYyAkdGl0bGU7CglwdWJsaWMgJGFsbERheTsgLy8gYSBib29sZWFuCglwdWJsaWMgJHN0YXJ0OyAvLyBhIERhdGVUaW1lCglwdWJsaWMgJGVuZDsgLy8gYSBEYXRlVGltZSwgb3IgbnVsbAoJcHVibGljICRwcm9wZXJ0aWVzID0gYXJyYXkoKTsgLy8gYW4gYXJyYXkgb2Ygb3RoZXIgbWlzYyBwcm9wZXJ0aWVzCgoKCS8vIENvbnN0cnVjdHMgYW4gRXZlbnQgb2JqZWN0IGZyb20gdGhlIGdpdmVuIGFycmF5IG9mIGtleT0+dmFsdWVzLgoJLy8gWW91IGNhbiBvcHRpb25hbGx5IGZvcmNlIHRoZSB0aW1lem9uZSBvZiB0aGUgcGFyc2VkIGRhdGVzLgoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRhcnJheSwgJHRpbWV6b25lPW51bGwpIHsKCgkJJHRoaXMtPnRpdGxlID0gJGFycmF5Wyd0aXRsZSddOwoKCQlpZiAoaXNzZXQoJGFycmF5WydhbGxEYXknXSkpIHsKCQkJLy8gYWxsRGF5IGhhcyBiZWVuIGV4cGxpY2l0bHkgc3BlY2lmaWVkCgkJCSR0aGlzLT5hbGxEYXkgPSAoYm9vbCkkYXJyYXlbJ2FsbERheSddOwoJCX0KCQllbHNlIHsKCQkJLy8gR3Vlc3MgYWxsRGF5IGJhc2VkIG9mZiBvZiBJU084NjAxIGRhdGUgc3RyaW5ncwoJCQkkdGhpcy0+YWxsRGF5ID0gcHJlZ19tYXRjaChzZWxmOjpBTExfREFZX1JFR0VYLCAkYXJyYXlbJ3N0YXJ0J10pICYmCgkJCQkoIWlzc2V0KCRhcnJheVsnZW5kJ10pIHx8IHByZWdfbWF0Y2goc2VsZjo6QUxMX0RBWV9SRUdFWCwgJGFycmF5WydlbmQnXSkpOwoJCX0KCgkJaWYgKCR0aGlzLT5hbGxEYXkpIHsKCQkJLy8gSWYgZGF0ZXMgYXJlIGFsbERheSwgd2Ugd2FudCB0byBwYXJzZSB0aGVtIGluIFVUQyB0byBhdm9pZCBEU1QgaXNzdWVzLgoJCQkkdGltZXpvbmUgPSBudWxsOwoJCX0KCgkJLy8gUGFyc2UgZGF0ZXMKCQkkdGhpcy0+c3RhcnQgPSBwYXJzZURhdGVUaW1lKCRhcnJheVsnc3RhcnQnXSwgJHRpbWV6b25lKTsKCQkkdGhpcy0+ZW5kID0gaXNzZXQoJGFycmF5WydlbmQnXSkgPyBwYXJzZURhdGVUaW1lKCRhcnJheVsnZW5kJ10sICR0aW1lem9uZSkgOiBudWxsOwoKCQkvLyBSZWNvcmQgbWlzYyBwcm9wZXJ0aWVzCgkJZm9yZWFjaCAoJGFycmF5IGFzICRuYW1lID0+ICR2YWx1ZSkgewoJCQlpZiAoIWluX2FycmF5KCRuYW1lLCBhcnJheSgndGl0bGUnLCAnYWxsRGF5JywgJ3N0YXJ0JywgJ2VuZCcpKSkgewoJCQkJJHRoaXMtPnByb3BlcnRpZXNbJG5hbWVdID0gJHZhbHVlOwoJCQl9CgkJfQoJfQoKCgkvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGRhdGUgcmFuZ2Ugb2Ygb3VyIGV2ZW50IGludGVyc2VjdHMgd2l0aCB0aGUgZ2l2ZW4gYWxsLWRheSByYW5nZS4KCS8vICRyYW5nZVN0YXJ0IGFuZCAkcmFuZ2VFbmQgYXJlIGFzc3VtZWQgdG8gYmUgZGF0ZXMgaW4gVVRDIHdpdGggMDA6MDA6MDAgdGltZS4KCXB1YmxpYyBmdW5jdGlvbiBpc1dpdGhpbkRheVJhbmdlKCRyYW5nZVN0YXJ0LCAkcmFuZ2VFbmQpIHsKCgkJLy8gTm9ybWFsaXplIG91ciBldmVudCdzIGRhdGVzIGZvciBjb21wYXJpc29uIHdpdGggdGhlIGFsbC1kYXkgcmFuZ2UuCgkJJGV2ZW50U3RhcnQgPSBzdHJpcFRpbWUoJHRoaXMtPnN0YXJ0KTsKCgkJaWYgKGlzc2V0KCR0aGlzLT5lbmQpKSB7CgkJCSRldmVudEVuZCA9IHN0cmlwVGltZSgkdGhpcy0+ZW5kKTsgLy8gbm9ybWFsaXplCgkJfQoJCWVsc2UgewoJCQkkZXZlbnRFbmQgPSAkZXZlbnRTdGFydDsgLy8gY29uc2lkZXIgdGhpcyBhIHplcm8tZHVyYXRpb24gZXZlbnQKCQl9CgoJCS8vIENoZWNrIGlmIHRoZSB0d28gd2hvbGUtZGF5IHJhbmdlcyBpbnRlcnNlY3QuCgkJcmV0dXJuICRldmVudFN0YXJ0IDwgJHJhbmdlRW5kICYmICRldmVudEVuZCA+PSAkcmFuZ2VTdGFydDsKCX0KCgoJLy8gQ29udmVydHMgdGhpcyBFdmVudCBvYmplY3QgYmFjayB0byBhIHBsYWluIGRhdGEgYXJyYXksIHRvIGJlIHVzZWQgZm9yIGdlbmVyYXRpbmcgSlNPTgoJcHVibGljIGZ1bmN0aW9uIHRvQXJyYXkoKSB7CgoJCS8vIFN0YXJ0IHdpdGggdGhlIG1pc2MgcHJvcGVydGllcyAoZG9uJ3Qgd29ycnksIFBIUCB3b24ndCBhZmZlY3QgdGhlIG9yaWdpbmFsIGFycmF5KQoJCSRhcnJheSA9ICR0aGlzLT5wcm9wZXJ0aWVzOwoKCQkkYXJyYXlbJ3RpdGxlJ10gPSAkdGhpcy0+dGl0bGU7CgoJCS8vIEZpZ3VyZSBvdXQgdGhlIGRhdGUgZm9ybWF0LiBUaGlzIGVzc2VudGlhbGx5IGVuY29kZXMgYWxsRGF5IGludG8gdGhlIGRhdGUgc3RyaW5nLgoJCWlmICgkdGhpcy0+YWxsRGF5KSB7CgkJCSRmb3JtYXQgPSAnWS1tLWQnOyAvLyBvdXRwdXQgbGlrZSAiMjAxMy0xMi0yOSIKCQl9CgkJZWxzZSB7CgkJCSRmb3JtYXQgPSAnYyc7IC8vIGZ1bGwgSVNPODYwMSBvdXRwdXQsIGxpa2UgIjIwMTMtMTItMjlUMDk6MDA6MDArMDg6MDAiCgkJfQoKCQkvLyBTZXJpYWxpemUgZGF0ZXMgaW50byBzdHJpbmdzCgkJJGFycmF5WydzdGFydCddID0gJHRoaXMtPnN0YXJ0LT5mb3JtYXQoJGZvcm1hdCk7CgkJaWYgKGlzc2V0KCR0aGlzLT5lbmQpKSB7CgkJCSRhcnJheVsnZW5kJ10gPSAkdGhpcy0+ZW5kLT5mb3JtYXQoJGZvcm1hdCk7CgkJfQoKCQlyZXR1cm4gJGFycmF5OwoJfQoKfQoKCi8vIERhdGUgVXRpbGl0aWVzCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi8vIFBhcnNlcyBhIHN0cmluZyBpbnRvIGEgRGF0ZVRpbWUgb2JqZWN0LCBvcHRpb25hbGx5IGZvcmNlZCBpbnRvIHRoZSBnaXZlbiB0aW1lem9uZS4KZnVuY3Rpb24gcGFyc2VEYXRlVGltZSgkc3RyaW5nLCAkdGltZXpvbmU9bnVsbCkgewoJJGRhdGUgPSBuZXcgRGF0ZVRpbWUoCgkJJHN0cmluZywKCQkkdGltZXpvbmUgPyAkdGltZXpvbmUgOiBuZXcgRGF0ZVRpbWVab25lKCdVVEMnKQoJCQkvLyBVc2VkIG9ubHkgd2hlbiB0aGUgc3RyaW5nIGlzIGFtYmlndW91cy4KCQkJLy8gSWdub3JlZCBpZiBzdHJpbmcgaGFzIGEgdGltZXpvbmUgb2Zmc2V0IGluIGl0LgoJKTsKCWlmICgkdGltZXpvbmUpIHsKCQkvLyBJZiBvdXIgdGltZXpvbmUgd2FzIGlnbm9yZWQgYWJvdmUsIGZvcmNlIGl0LgoJCSRkYXRlLT5zZXRUaW1lem9uZSgkdGltZXpvbmUpOwoJfQoJcmV0dXJuICRkYXRlOwp9CgoKLy8gVGFrZXMgdGhlIHllYXIvbW9udGgvZGF0ZSB2YWx1ZXMgb2YgdGhlIGdpdmVuIERhdGVUaW1lIGFuZCBjb252ZXJ0cyB0aGVtIHRvIGEgbmV3IERhdGVUaW1lLAovLyBidXQgaW4gVVRDLgpmdW5jdGlvbiBzdHJpcFRpbWUoJGRhdGV0aW1lKSB7CglyZXR1cm4gbmV3IERhdGVUaW1lKCRkYXRldGltZS0+Zm9ybWF0KCdZLW0tZCcpKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/demos/selectable.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+DQo8aHRtbD4NCjxoZWFkPg0KPG1ldGEgY2hhcnNldD0ndXRmLTgnIC8+DQo8bGluayBocmVmPScuLi9mdWxsY2FsZW5kYXIubWluLmNzcycgcmVsPSdzdHlsZXNoZWV0JyAvPg0KPGxpbmsgaHJlZj0nLi4vZnVsbGNhbGVuZGFyLnByaW50Lm1pbi5jc3MnIHJlbD0nc3R5bGVzaGVldCcgbWVkaWE9J3ByaW50JyAvPg0KPHNjcmlwdCBzcmM9Jy4uL2xpYi9tb21lbnQubWluLmpzJz48L3NjcmlwdD4NCjxzY3JpcHQgc3JjPScuLi9saWIvanF1ZXJ5Lm1pbi5qcyc+PC9zY3JpcHQ+DQo8c2NyaXB0IHNyYz0nLi4vZnVsbGNhbGVuZGFyLm1pbi5qcyc+PC9zY3JpcHQ+DQo8c2NyaXB0Pg0KDQoJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7DQoJCQ0KCQkkKCcjY2FsZW5kYXInKS5mdWxsQ2FsZW5kYXIoew0KCQkJaGVhZGVyOiB7DQoJCQkJbGVmdDogJ3ByZXYsbmV4dCB0b2RheScsDQoJCQkJY2VudGVyOiAndGl0bGUnLA0KCQkJCXJpZ2h0OiAnbW9udGgsYWdlbmRhV2VlayxhZ2VuZGFEYXknDQoJCQl9LA0KCQkJZGVmYXVsdERhdGU6ICcyMDE3LTA0LTEyJywNCgkJCW5hdkxpbmtzOiB0cnVlLCAvLyBjYW4gY2xpY2sgZGF5L3dlZWsgbmFtZXMgdG8gbmF2aWdhdGUgdmlld3MNCgkJCXNlbGVjdGFibGU6IHRydWUsDQoJCQlzZWxlY3RIZWxwZXI6IHRydWUsDQoJCQlzZWxlY3Q6IGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHsNCgkJCQl2YXIgdGl0bGUgPSBwcm9tcHQoJ0V2ZW50IFRpdGxlOicpOw0KCQkJCXZhciBldmVudERhdGE7DQoJCQkJaWYgKHRpdGxlKSB7DQoJCQkJCWV2ZW50RGF0YSA9IHsNCgkJCQkJCXRpdGxlOiB0aXRsZSwNCgkJCQkJCXN0YXJ0OiBzdGFydCwNCgkJCQkJCWVuZDogZW5kDQoJCQkJCX07DQoJCQkJCSQoJyNjYWxlbmRhcicpLmZ1bGxDYWxlbmRhcigncmVuZGVyRXZlbnQnLCBldmVudERhdGEsIHRydWUpOyAvLyBzdGljaz8gPSB0cnVlDQoJCQkJfQ0KCQkJCSQoJyNjYWxlbmRhcicpLmZ1bGxDYWxlbmRhcigndW5zZWxlY3QnKTsNCgkJCX0sDQoJCQllZGl0YWJsZTogdHJ1ZSwNCgkJCWV2ZW50TGltaXQ6IHRydWUsIC8vIGFsbG93ICJtb3JlIiBsaW5rIHdoZW4gdG9vIG1hbnkgZXZlbnRzDQoJCQlldmVudHM6IFsNCgkJCQl7DQoJCQkJCXRpdGxlOiAnQWxsIERheSBFdmVudCcsDQoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0wMScNCgkJCQl9LA0KCQkJCXsNCgkJCQkJdGl0bGU6ICdMb25nIEV2ZW50JywNCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTA3JywNCgkJCQkJZW5kOiAnMjAxNy0wNC0xMCcNCgkJCQl9LA0KCQkJCXsNCgkJCQkJaWQ6IDk5OSwNCgkJCQkJdGl0bGU6ICdSZXBlYXRpbmcgRXZlbnQnLA0KCQkJCQlzdGFydDogJzIwMTctMDQtMDlUMTY6MDA6MDAnDQoJCQkJfSwNCgkJCQl7DQoJCQkJCWlkOiA5OTksDQoJCQkJCXRpdGxlOiAnUmVwZWF0aW5nIEV2ZW50JywNCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTE2VDE2OjAwOjAwJw0KCQkJCX0sDQoJCQkJew0KCQkJCQl0aXRsZTogJ0NvbmZlcmVuY2UnLA0KCQkJCQlzdGFydDogJzIwMTctMDQtMTEnLA0KCQkJCQllbmQ6ICcyMDE3LTA0LTEzJw0KCQkJCX0sDQoJCQkJew0KCQkJCQl0aXRsZTogJ01lZXRpbmcnLA0KCQkJCQlzdGFydDogJzIwMTctMDQtMTJUMTA6MzA6MDAnLA0KCQkJCQllbmQ6ICcyMDE3LTA0LTEyVDEyOjMwOjAwJw0KCQkJCX0sDQoJCQkJew0KCQkJCQl0aXRsZTogJ0x1bmNoJywNCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTEyVDEyOjAwOjAwJw0KCQkJCX0sDQoJCQkJew0KCQkJCQl0aXRsZTogJ01lZXRpbmcnLA0KCQkJCQlzdGFydDogJzIwMTctMDQtMTJUMTQ6MzA6MDAnDQoJCQkJfSwNCgkJCQl7DQoJCQkJCXRpdGxlOiAnSGFwcHkgSG91cicsDQoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0xMlQxNzozMDowMCcNCgkJCQl9LA0KCQkJCXsNCgkJCQkJdGl0bGU6ICdEaW5uZXInLA0KCQkJCQlzdGFydDogJzIwMTctMDQtMTJUMjA6MDA6MDAnDQoJCQkJfSwNCgkJCQl7DQoJCQkJCXRpdGxlOiAnQmlydGhkYXkgUGFydHknLA0KCQkJCQlzdGFydDogJzIwMTctMDQtMTNUMDc6MDA6MDAnDQoJCQkJfSwNCgkJCQl7DQoJCQkJCXRpdGxlOiAnQ2xpY2sgZm9yIEdvb2dsZScsDQoJCQkJCXVybDogJ2h0dHA6Ly9nb29nbGUuY29tLycsDQoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0yOCcNCgkJCQl9DQoJCQldDQoJCX0pOw0KCQkNCgl9KTsNCg0KPC9zY3JpcHQ+DQo8c3R5bGU+DQoNCglib2R5IHsNCgkJbWFyZ2luOiA0MHB4IDEwcHg7DQoJCXBhZGRpbmc6IDA7DQoJCWZvbnQtZmFtaWx5OiAiTHVjaWRhIEdyYW5kZSIsSGVsdmV0aWNhLEFyaWFsLFZlcmRhbmEsc2Fucy1zZXJpZjsNCgkJZm9udC1zaXplOiAxNHB4Ow0KCX0NCg0KCSNjYWxlbmRhciB7DQoJCW1heC13aWR0aDogOTAwcHg7DQoJCW1hcmdpbjogMCBhdXRvOw0KCX0NCg0KPC9zdHlsZT4NCjwvaGVhZD4NCjxib2R5Pg0KDQoJPGRpdiBpZD0nY2FsZW5kYXInPjwvZGl2Pg0KDQo8L2JvZHk+DQo8L2h0bWw+DQo=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/demos/theme.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPG1ldGEgY2hhcnNldD0ndXRmLTgnIC8+CjxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaHJlZj0nLi4vbGliL2N1cGVydGluby9qcXVlcnktdWkubWluLmNzcycgLz4KPGxpbmsgaHJlZj0nLi4vZnVsbGNhbGVuZGFyLm1pbi5jc3MnIHJlbD0nc3R5bGVzaGVldCcgLz4KPGxpbmsgaHJlZj0nLi4vZnVsbGNhbGVuZGFyLnByaW50Lm1pbi5jc3MnIHJlbD0nc3R5bGVzaGVldCcgbWVkaWE9J3ByaW50JyAvPgo8c2NyaXB0IHNyYz0nLi4vbGliL21vbWVudC5taW4uanMnPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0nLi4vbGliL2pxdWVyeS5taW4uanMnPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0nLi4vZnVsbGNhbGVuZGFyLm1pbi5qcyc+PC9zY3JpcHQ+CjxzY3JpcHQ+CgoJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CgoJCSQoJyNjYWxlbmRhcicpLmZ1bGxDYWxlbmRhcih7CgkJCXRoZW1lOiB0cnVlLAoJCQloZWFkZXI6IHsKCQkJCWxlZnQ6ICdwcmV2LG5leHQgdG9kYXknLAoJCQkJY2VudGVyOiAndGl0bGUnLAoJCQkJcmlnaHQ6ICdtb250aCxhZ2VuZGFXZWVrLGFnZW5kYURheSxsaXN0TW9udGgnCgkJCX0sCgkJCWRlZmF1bHREYXRlOiAnMjAxNy0wNC0xMicsCgkJCW5hdkxpbmtzOiB0cnVlLCAvLyBjYW4gY2xpY2sgZGF5L3dlZWsgbmFtZXMgdG8gbmF2aWdhdGUgdmlld3MKCQkJZWRpdGFibGU6IHRydWUsCgkJCWV2ZW50TGltaXQ6IHRydWUsIC8vIGFsbG93ICJtb3JlIiBsaW5rIHdoZW4gdG9vIG1hbnkgZXZlbnRzCgkJCWV2ZW50czogWwoJCQkJewoJCQkJCXRpdGxlOiAnQWxsIERheSBFdmVudCcsCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTAxJwoJCQkJfSwKCQkJCXsKCQkJCQl0aXRsZTogJ0xvbmcgRXZlbnQnLAoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0wNycsCgkJCQkJZW5kOiAnMjAxNy0wNC0xMCcKCQkJCX0sCgkJCQl7CgkJCQkJaWQ6IDk5OSwKCQkJCQl0aXRsZTogJ1JlcGVhdGluZyBFdmVudCcsCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTA5VDE2OjAwOjAwJwoJCQkJfSwKCQkJCXsKCQkJCQlpZDogOTk5LAoJCQkJCXRpdGxlOiAnUmVwZWF0aW5nIEV2ZW50JywKCQkJCQlzdGFydDogJzIwMTctMDQtMTZUMTY6MDA6MDAnCgkJCQl9LAoJCQkJewoJCQkJCXRpdGxlOiAnQ29uZmVyZW5jZScsCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTExJywKCQkJCQllbmQ6ICcyMDE3LTA0LTEzJwoJCQkJfSwKCQkJCXsKCQkJCQl0aXRsZTogJ01lZXRpbmcnLAoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0xMlQxMDozMDowMCcsCgkJCQkJZW5kOiAnMjAxNy0wNC0xMlQxMjozMDowMCcKCQkJCX0sCgkJCQl7CgkJCQkJdGl0bGU6ICdMdW5jaCcsCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTEyVDEyOjAwOjAwJwoJCQkJfSwKCQkJCXsKCQkJCQl0aXRsZTogJ01lZXRpbmcnLAoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0xMlQxNDozMDowMCcKCQkJCX0sCgkJCQl7CgkJCQkJdGl0bGU6ICdIYXBweSBIb3VyJywKCQkJCQlzdGFydDogJzIwMTctMDQtMTJUMTc6MzA6MDAnCgkJCQl9LAoJCQkJewoJCQkJCXRpdGxlOiAnRGlubmVyJywKCQkJCQlzdGFydDogJzIwMTctMDQtMTJUMjA6MDA6MDAnCgkJCQl9LAoJCQkJewoJCQkJCXRpdGxlOiAnQmlydGhkYXkgUGFydHknLAoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0xM1QwNzowMDowMCcKCQkJCX0sCgkJCQl7CgkJCQkJdGl0bGU6ICdDbGljayBmb3IgR29vZ2xlJywKCQkJCQl1cmw6ICdodHRwOi8vZ29vZ2xlLmNvbS8nLAoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0yOCcKCQkJCX0KCQkJXQoJCX0pOwoJCQoJfSk7Cgo8L3NjcmlwdD4KPHN0eWxlPgoKCWJvZHkgewoJCW1hcmdpbjogNDBweCAxMHB4OwoJCXBhZGRpbmc6IDA7CgkJZm9udC1mYW1pbHk6ICJMdWNpZGEgR3JhbmRlIixIZWx2ZXRpY2EsQXJpYWwsVmVyZGFuYSxzYW5zLXNlcmlmOwoJCWZvbnQtc2l6ZTogMTRweDsKCX0KCgkjY2FsZW5kYXIgewoJCW1heC13aWR0aDogOTAwcHg7CgkJbWFyZ2luOiAwIGF1dG87Cgl9Cgo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoKCTxkaXYgaWQ9J2NhbGVuZGFyJz48L2Rpdj4KCjwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/demos/timezones.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+DQo8aHRtbD4NCjxoZWFkPg0KPG1ldGEgY2hhcnNldD0ndXRmLTgnIC8+DQo8bGluayBocmVmPScuLi9mdWxsY2FsZW5kYXIubWluLmNzcycgcmVsPSdzdHlsZXNoZWV0JyAvPg0KPGxpbmsgaHJlZj0nLi4vZnVsbGNhbGVuZGFyLnByaW50Lm1pbi5jc3MnIHJlbD0nc3R5bGVzaGVldCcgbWVkaWE9J3ByaW50JyAvPg0KPHNjcmlwdCBzcmM9Jy4uL2xpYi9tb21lbnQubWluLmpzJz48L3NjcmlwdD4NCjxzY3JpcHQgc3JjPScuLi9saWIvanF1ZXJ5Lm1pbi5qcyc+PC9zY3JpcHQ+DQo8c2NyaXB0IHNyYz0nLi4vZnVsbGNhbGVuZGFyLm1pbi5qcyc+PC9zY3JpcHQ+DQo8c2NyaXB0Pg0KDQoJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7DQoNCgkJJCgnI2NhbGVuZGFyJykuZnVsbENhbGVuZGFyKHsNCgkJCWhlYWRlcjogew0KCQkJCWxlZnQ6ICdwcmV2LG5leHQgdG9kYXknLA0KCQkJCWNlbnRlcjogJ3RpdGxlJywNCgkJCQlyaWdodDogJ21vbnRoLGFnZW5kYVdlZWssYWdlbmRhRGF5LGxpc3RXZWVrJw0KCQkJfSwNCgkJCWRlZmF1bHREYXRlOiAnMjAxNy0wNC0xMicsDQoJCQluYXZMaW5rczogdHJ1ZSwgLy8gY2FuIGNsaWNrIGRheS93ZWVrIG5hbWVzIHRvIG5hdmlnYXRlIHZpZXdzDQoJCQllZGl0YWJsZTogdHJ1ZSwNCgkJCXNlbGVjdGFibGU6IHRydWUsDQoJCQlldmVudExpbWl0OiB0cnVlLCAvLyBhbGxvdyAibW9yZSIgbGluayB3aGVuIHRvbyBtYW55IGV2ZW50cw0KCQkJZXZlbnRzOiB7DQoJCQkJdXJsOiAncGhwL2dldC1ldmVudHMucGhwJywNCgkJCQllcnJvcjogZnVuY3Rpb24oKSB7DQoJCQkJCSQoJyNzY3JpcHQtd2FybmluZycpLnNob3coKTsNCgkJCQl9DQoJCQl9LA0KCQkJbG9hZGluZzogZnVuY3Rpb24oYm9vbCkgew0KCQkJCSQoJyNsb2FkaW5nJykudG9nZ2xlKGJvb2wpOw0KCQkJfSwNCgkJCWV2ZW50UmVuZGVyOiBmdW5jdGlvbihldmVudCwgZWwpIHsNCgkJCQkvLyByZW5kZXIgdGhlIHRpbWV6b25lIG9mZnNldCBiZWxvdyB0aGUgZXZlbnQgdGl0bGUNCgkJCQlpZiAoZXZlbnQuc3RhcnQuaGFzWm9uZSgpKSB7DQoJCQkJCWVsLmZpbmQoJy5mYy10aXRsZScpLmFmdGVyKA0KCQkJCQkJJCgnPGRpdiBjbGFzcz0idHpvIi8+JykudGV4dChldmVudC5zdGFydC5mb3JtYXQoJ1onKSkNCgkJCQkJKTsNCgkJCQl9DQoJCQl9LA0KCQkJZGF5Q2xpY2s6IGZ1bmN0aW9uKGRhdGUpIHsNCgkJCQljb25zb2xlLmxvZygnZGF5Q2xpY2snLCBkYXRlLmZvcm1hdCgpKTsNCgkJCX0sDQoJCQlzZWxlY3Q6IGZ1bmN0aW9uKHN0YXJ0RGF0ZSwgZW5kRGF0ZSkgew0KCQkJCWNvbnNvbGUubG9nKCdzZWxlY3QnLCBzdGFydERhdGUuZm9ybWF0KCksIGVuZERhdGUuZm9ybWF0KCkpOw0KCQkJfQ0KCQl9KTsNCg0KCQkvLyBsb2FkIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSB0aW1lem9uZXMsIGJ1aWxkIHRoZSA8c2VsZWN0PiBvcHRpb25zDQoJCSQuZ2V0SlNPTigncGhwL2dldC10aW1lem9uZXMucGhwJywgZnVuY3Rpb24odGltZXpvbmVzKSB7DQoJCQkkLmVhY2godGltZXpvbmVzLCBmdW5jdGlvbihpLCB0aW1lem9uZSkgew0KCQkJCWlmICh0aW1lem9uZSAhPSAnVVRDJykgeyAvLyBVVEMgaXMgYWxyZWFkeSBpbiB0aGUgbGlzdA0KCQkJCQkkKCcjdGltZXpvbmUtc2VsZWN0b3InKS5hcHBlbmQoDQoJCQkJCQkkKCI8b3B0aW9uLz4iKS50ZXh0KHRpbWV6b25lKS5hdHRyKCd2YWx1ZScsIHRpbWV6b25lKQ0KCQkJCQkpOw0KCQkJCX0NCgkJCX0pOw0KCQl9KTsNCg0KCQkvLyB3aGVuIHRoZSB0aW1lem9uZSBzZWxlY3RvciBjaGFuZ2VzLCBkeW5hbWljYWxseSBjaGFuZ2UgdGhlIGNhbGVuZGFyIG9wdGlvbg0KCQkkKCcjdGltZXpvbmUtc2VsZWN0b3InKS5vbignY2hhbmdlJywgZnVuY3Rpb24oKSB7DQoJCQkkKCcjY2FsZW5kYXInKS5mdWxsQ2FsZW5kYXIoJ29wdGlvbicsICd0aW1lem9uZScsIHRoaXMudmFsdWUgfHwgZmFsc2UpOw0KCQl9KTsNCgl9KTsNCg0KPC9zY3JpcHQ+DQo8c3R5bGU+DQoNCglib2R5IHsNCgkJbWFyZ2luOiAwOw0KCQlwYWRkaW5nOiAwOw0KCQlmb250LWZhbWlseTogIkx1Y2lkYSBHcmFuZGUiLEhlbHZldGljYSxBcmlhbCxWZXJkYW5hLHNhbnMtc2VyaWY7DQoJCWZvbnQtc2l6ZTogMTRweDsNCgl9DQoNCgkjdG9wIHsNCgkJYmFja2dyb3VuZDogI2VlZTsNCgkJYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7DQoJCXBhZGRpbmc6IDAgMTBweDsNCgkJbGluZS1oZWlnaHQ6IDQwcHg7DQoJCWZvbnQtc2l6ZTogMTJweDsNCgl9DQoJLmxlZnQgeyBmbG9hdDogbGVmdCB9DQoJLnJpZ2h0IHsgZmxvYXQ6IHJpZ2h0IH0NCgkuY2xlYXIgeyBjbGVhcjogYm90aCB9DQoNCgkjc2NyaXB0LXdhcm5pbmcsICNsb2FkaW5nIHsgZGlzcGxheTogbm9uZSB9DQoJI3NjcmlwdC13YXJuaW5nIHsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiByZWQgfQ0KDQoJI2NhbGVuZGFyIHsNCgkJbWF4LXdpZHRoOiA5MDBweDsNCgkJbWFyZ2luOiA0MHB4IGF1dG87DQoJCXBhZGRpbmc6IDAgMTBweDsNCgl9DQoNCgkudHpvIHsNCgkJY29sb3I6ICMwMDA7DQoJfQ0KDQo8L3N0eWxlPg0KPC9oZWFkPg0KPGJvZHk+DQoNCgk8ZGl2IGlkPSd0b3AnPg0KDQoJCTxkaXYgY2xhc3M9J2xlZnQnPg0KCQkJVGltZXpvbmU6DQoJCQk8c2VsZWN0IGlkPSd0aW1lem9uZS1zZWxlY3Rvcic+DQoJCQkJPG9wdGlvbiB2YWx1ZT0nJyBzZWxlY3RlZD5ub25lPC9vcHRpb24+DQoJCQkJPG9wdGlvbiB2YWx1ZT0nbG9jYWwnPmxvY2FsPC9vcHRpb24+DQoJCQkJPG9wdGlvbiB2YWx1ZT0nVVRDJz5VVEM8L29wdGlvbj4NCgkJCTwvc2VsZWN0Pg0KCQk8L2Rpdj4NCg0KCQk8ZGl2IGNsYXNzPSdyaWdodCc+DQoJCQk8c3BhbiBpZD0nbG9hZGluZyc+bG9hZGluZy4uLjwvc3Bhbj4NCgkJCTxzcGFuIGlkPSdzY3JpcHQtd2FybmluZyc+PGNvZGU+cGhwL2dldC1ldmVudHMucGhwPC9jb2RlPiBtdXN0IGJlIHJ1bm5pbmcuPC9zcGFuPg0KCQk8L2Rpdj4NCg0KCQk8ZGl2IGNsYXNzPSdjbGVhcic+PC9kaXY+DQoNCgk8L2Rpdj4NCg0KCTxkaXYgaWQ9J2NhbGVuZGFyJz48L2Rpdj4NCg0KPC9ib2R5Pg0KPC9odG1sPg0K]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/demos/week-numbers.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWw+DQo8aHRtbD4NCjxoZWFkPg0KPG1ldGEgY2hhcnNldD0ndXRmLTgnIC8+DQo8bGluayBocmVmPScuLi9mdWxsY2FsZW5kYXIubWluLmNzcycgcmVsPSdzdHlsZXNoZWV0JyAvPg0KPGxpbmsgaHJlZj0nLi4vZnVsbGNhbGVuZGFyLnByaW50Lm1pbi5jc3MnIHJlbD0nc3R5bGVzaGVldCcgbWVkaWE9J3ByaW50JyAvPg0KPHNjcmlwdCBzcmM9Jy4uL2xpYi9tb21lbnQubWluLmpzJz48L3NjcmlwdD4NCjxzY3JpcHQgc3JjPScuLi9saWIvanF1ZXJ5Lm1pbi5qcyc+PC9zY3JpcHQ+DQo8c2NyaXB0IHNyYz0nLi4vZnVsbGNhbGVuZGFyLm1pbi5qcyc+PC9zY3JpcHQ+DQo8c2NyaXB0Pg0KDQoJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7DQoJCQ0KCQkkKCcjY2FsZW5kYXInKS5mdWxsQ2FsZW5kYXIoew0KCQkJaGVhZGVyOiB7DQoJCQkJbGVmdDogJ3ByZXYsbmV4dCB0b2RheScsDQoJCQkJY2VudGVyOiAndGl0bGUnLA0KCQkJCXJpZ2h0OiAnbW9udGgsYWdlbmRhV2VlayxhZ2VuZGFEYXksbGlzdFdlZWsnDQoJCQl9LA0KCQkJZGVmYXVsdERhdGU6ICcyMDE3LTA0LTEyJywNCgkJCW5hdkxpbmtzOiB0cnVlLCAvLyBjYW4gY2xpY2sgZGF5L3dlZWsgbmFtZXMgdG8gbmF2aWdhdGUgdmlld3MNCg0KCQkJd2Vla051bWJlcnM6IHRydWUsDQoJCQl3ZWVrTnVtYmVyc1dpdGhpbkRheXM6IHRydWUsDQoJCQl3ZWVrTnVtYmVyQ2FsY3VsYXRpb246ICdJU08nLA0KDQoJCQllZGl0YWJsZTogdHJ1ZSwNCgkJCWV2ZW50TGltaXQ6IHRydWUsIC8vIGFsbG93ICJtb3JlIiBsaW5rIHdoZW4gdG9vIG1hbnkgZXZlbnRzDQoJCQlldmVudHM6IFsNCgkJCQl7DQoJCQkJCXRpdGxlOiAnQWxsIERheSBFdmVudCcsDQoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0wMScNCgkJCQl9LA0KCQkJCXsNCgkJCQkJdGl0bGU6ICdMb25nIEV2ZW50JywNCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTA3JywNCgkJCQkJZW5kOiAnMjAxNy0wNC0xMCcNCgkJCQl9LA0KCQkJCXsNCgkJCQkJaWQ6IDk5OSwNCgkJCQkJdGl0bGU6ICdSZXBlYXRpbmcgRXZlbnQnLA0KCQkJCQlzdGFydDogJzIwMTctMDQtMDlUMTY6MDA6MDAnDQoJCQkJfSwNCgkJCQl7DQoJCQkJCWlkOiA5OTksDQoJCQkJCXRpdGxlOiAnUmVwZWF0aW5nIEV2ZW50JywNCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTE2VDE2OjAwOjAwJw0KCQkJCX0sDQoJCQkJew0KCQkJCQl0aXRsZTogJ0NvbmZlcmVuY2UnLA0KCQkJCQlzdGFydDogJzIwMTctMDQtMTEnLA0KCQkJCQllbmQ6ICcyMDE3LTA0LTEzJw0KCQkJCX0sDQoJCQkJew0KCQkJCQl0aXRsZTogJ01lZXRpbmcnLA0KCQkJCQlzdGFydDogJzIwMTctMDQtMTJUMTA6MzA6MDAnLA0KCQkJCQllbmQ6ICcyMDE3LTA0LTEyVDEyOjMwOjAwJw0KCQkJCX0sDQoJCQkJew0KCQkJCQl0aXRsZTogJ0x1bmNoJywNCgkJCQkJc3RhcnQ6ICcyMDE3LTA0LTEyVDEyOjAwOjAwJw0KCQkJCX0sDQoJCQkJew0KCQkJCQl0aXRsZTogJ01lZXRpbmcnLA0KCQkJCQlzdGFydDogJzIwMTctMDQtMTJUMTQ6MzA6MDAnDQoJCQkJfSwNCgkJCQl7DQoJCQkJCXRpdGxlOiAnSGFwcHkgSG91cicsDQoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0xMlQxNzozMDowMCcNCgkJCQl9LA0KCQkJCXsNCgkJCQkJdGl0bGU6ICdEaW5uZXInLA0KCQkJCQlzdGFydDogJzIwMTctMDQtMTJUMjA6MDA6MDAnDQoJCQkJfSwNCgkJCQl7DQoJCQkJCXRpdGxlOiAnQmlydGhkYXkgUGFydHknLA0KCQkJCQlzdGFydDogJzIwMTctMDQtMTNUMDc6MDA6MDAnDQoJCQkJfSwNCgkJCQl7DQoJCQkJCXRpdGxlOiAnQ2xpY2sgZm9yIEdvb2dsZScsDQoJCQkJCXVybDogJ2h0dHA6Ly9nb29nbGUuY29tLycsDQoJCQkJCXN0YXJ0OiAnMjAxNy0wNC0yOCcNCgkJCQl9DQoJCQldDQoJCX0pOw0KCQkNCgl9KTsNCg0KPC9zY3JpcHQ+DQo8c3R5bGU+DQoNCglib2R5IHsNCgkJbWFyZ2luOiA0MHB4IDEwcHg7DQoJCXBhZGRpbmc6IDA7DQoJCWZvbnQtZmFtaWx5OiAiTHVjaWRhIEdyYW5kZSIsSGVsdmV0aWNhLEFyaWFsLFZlcmRhbmEsc2Fucy1zZXJpZjsNCgkJZm9udC1zaXplOiAxNHB4Ow0KCX0NCg0KCSNjYWxlbmRhciB7DQoJCW1heC13aWR0aDogOTAwcHg7DQoJCW1hcmdpbjogMCBhdXRvOw0KCX0NCg0KPC9zdHlsZT4NCjwvaGVhZD4NCjxib2R5Pg0KDQoJPGRpdiBpZD0nY2FsZW5kYXInPjwvZGl2Pg0KDQo8L2JvZHk+DQo8L2h0bWw+DQo=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/fullcalendar.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIEZ1bGxDYWxlbmRhciB2My4zLjEgU3R5bGVzaGVldAogKiBEb2NzICYgTGljZW5zZTogaHR0cHM6Ly9mdWxsY2FsZW5kYXIuaW8vCiAqIChjKSAyMDE3IEFkYW0gU2hhdwogKi8KCgouZmMgewoJZGlyZWN0aW9uOiBsdHI7Cgl0ZXh0LWFsaWduOiBsZWZ0Owp9CgouZmMtcnRsIHsKCXRleHQtYWxpZ246IHJpZ2h0Owp9Cgpib2R5IC5mYyB7IC8qIGV4dHJhIHByZWNlZGVuY2UgdG8gb3ZlcmNvbWUganF1aSAqLwoJZm9udC1zaXplOiAxZW07Cn0KCgovKiBDb2xvcnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLmZjLXVudGhlbWVkIHRoLAouZmMtdW50aGVtZWQgdGQsCi5mYy11bnRoZW1lZCB0aGVhZCwKLmZjLXVudGhlbWVkIHRib2R5LAouZmMtdW50aGVtZWQgLmZjLWRpdmlkZXIsCi5mYy11bnRoZW1lZCAuZmMtcm93LAouZmMtdW50aGVtZWQgLmZjLWNvbnRlbnQsIC8qIGZvciBndXR0ZXIgYm9yZGVyICovCi5mYy11bnRoZW1lZCAuZmMtcG9wb3ZlciwKLmZjLXVudGhlbWVkIC5mYy1saXN0LXZpZXcsCi5mYy11bnRoZW1lZCAuZmMtbGlzdC1oZWFkaW5nIHRkIHsKCWJvcmRlci1jb2xvcjogI2RkZDsKfQoKLmZjLXVudGhlbWVkIC5mYy1wb3BvdmVyIHsKCWJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KCi5mYy11bnRoZW1lZCAuZmMtZGl2aWRlciwKLmZjLXVudGhlbWVkIC5mYy1wb3BvdmVyIC5mYy1oZWFkZXIsCi5mYy11bnRoZW1lZCAuZmMtbGlzdC1oZWFkaW5nIHRkIHsKCWJhY2tncm91bmQ6ICNlZWU7Cn0KCi5mYy11bnRoZW1lZCAuZmMtcG9wb3ZlciAuZmMtaGVhZGVyIC5mYy1jbG9zZSB7Cgljb2xvcjogIzY2NjsKfQoKLmZjLXVudGhlbWVkIHRkLmZjLXRvZGF5IHsKCWJhY2tncm91bmQ6ICNmY2Y4ZTM7Cn0KCi5mYy1oaWdobGlnaHQgeyAvKiB3aGVuIHVzZXIgaXMgc2VsZWN0aW5nIGNlbGxzICovCgliYWNrZ3JvdW5kOiAjYmNlOGYxOwoJb3BhY2l0eTogLjM7Cn0KCi5mYy1iZ2V2ZW50IHsgLyogZGVmYXVsdCBsb29rIGZvciBiYWNrZ3JvdW5kIGV2ZW50cyAqLwoJYmFja2dyb3VuZDogcmdiKDE0MywgMjIzLCAxMzApOwoJb3BhY2l0eTogLjM7Cn0KCi5mYy1ub25idXNpbmVzcyB7IC8qIGRlZmF1bHQgbG9vayBmb3Igbm9uLWJ1c2luZXNzLWhvdXJzIGFyZWFzICovCgkvKiB3aWxsIGluaGVyaXQgLmZjLWJnZXZlbnQncyBzdHlsZXMgKi8KCWJhY2tncm91bmQ6ICNkN2Q3ZDc7Cn0KCi5mYy11bnRoZW1lZCAuZmMtZGlzYWJsZWQtZGF5IHsKCWJhY2tncm91bmQ6ICNkN2Q3ZDc7CglvcGFjaXR5OiAuMzsKfQoKLnVpLXdpZGdldCAuZmMtZGlzYWJsZWQtZGF5IHsgLyogdGhlbWVkICovCgliYWNrZ3JvdW5kLWltYWdlOiBub25lOwp9CgoKLyogSWNvbnMgKGlubGluZSBlbGVtZW50cyB3aXRoIHN0eWxlZCB0ZXh0IHRoYXQgbW9jayBhcnJvdyBpY29ucykKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLmZjLWljb24gewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJaGVpZ2h0OiAxZW07CglsaW5lLWhlaWdodDogMWVtOwoJZm9udC1zaXplOiAxZW07Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CglvdmVyZmxvdzogaGlkZGVuOwoJZm9udC1mYW1pbHk6ICJDb3VyaWVyIE5ldyIsIENvdXJpZXIsIG1vbm9zcGFjZTsKCgkvKiBkb24ndCBhbGxvdyBicm93c2VyIHRleHQtc2VsZWN0aW9uICovCgktd2Via2l0LXRvdWNoLWNhbGxvdXQ6IG5vbmU7Cgktd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwoJLWtodG1sLXVzZXItc2VsZWN0OiBub25lOwoJLW1vei11c2VyLXNlbGVjdDogbm9uZTsKCS1tcy11c2VyLXNlbGVjdDogbm9uZTsKCXVzZXItc2VsZWN0OiBub25lOwoJfQoKLyoKQWNjZXB0YWJsZSBmb250LWZhbWlseSBvdmVycmlkZXMgZm9yIGluZGl2aWR1YWwgaWNvbnM6CgkiQXJpYWwiLCBzYW5zLXNlcmlmCgkiVGltZXMgTmV3IFJvbWFuIiwgc2VyaWYKCk5PVEU6IHVzZSBwZXJjZW50YWdlIGZvbnQgc2l6ZXMgb3IgZWxzZSBvbGQgSUUgY2hva2VzCiovCgouZmMtaWNvbjphZnRlciB7Cglwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5mYy1pY29uLWxlZnQtc2luZ2xlLWFycm93OmFmdGVyIHsKCWNvbnRlbnQ6ICJcMDIwMzkiOwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cglmb250LXNpemU6IDIwMCU7Cgl0b3A6IC03JTsKfQoKLmZjLWljb24tcmlnaHQtc2luZ2xlLWFycm93OmFmdGVyIHsKCWNvbnRlbnQ6ICJcMDIwM0EiOwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cglmb250LXNpemU6IDIwMCU7Cgl0b3A6IC03JTsKfQoKLmZjLWljb24tbGVmdC1kb3VibGUtYXJyb3c6YWZ0ZXIgewoJY29udGVudDogIlwwMDBBQiI7Cglmb250LXNpemU6IDE2MCU7Cgl0b3A6IC03JTsKfQoKLmZjLWljb24tcmlnaHQtZG91YmxlLWFycm93OmFmdGVyIHsKCWNvbnRlbnQ6ICJcMDAwQkIiOwoJZm9udC1zaXplOiAxNjAlOwoJdG9wOiAtNyU7Cn0KCi5mYy1pY29uLWxlZnQtdHJpYW5nbGU6YWZ0ZXIgewoJY29udGVudDogIlwyNUM0IjsKCWZvbnQtc2l6ZTogMTI1JTsKCXRvcDogMyU7Cn0KCi5mYy1pY29uLXJpZ2h0LXRyaWFuZ2xlOmFmdGVyIHsKCWNvbnRlbnQ6ICJcMjVCQSI7Cglmb250LXNpemU6IDEyNSU7Cgl0b3A6IDMlOwp9CgouZmMtaWNvbi1kb3duLXRyaWFuZ2xlOmFmdGVyIHsKCWNvbnRlbnQ6ICJcMjVCQyI7Cglmb250LXNpemU6IDEyNSU7Cgl0b3A6IDIlOwp9CgouZmMtaWNvbi14OmFmdGVyIHsKCWNvbnRlbnQ6ICJcMDAwRDciOwoJZm9udC1zaXplOiAyMDAlOwoJdG9wOiA2JTsKfQoKCi8qIEJ1dHRvbnMgKHN0eWxlZCA8YnV0dG9uPiB0YWdzLCBub3JtYWxpemVkIHRvIHdvcmsgY3Jvc3MtYnJvd3NlcikKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLmZjIGJ1dHRvbiB7CgkvKiBmb3JjZSBoZWlnaHQgdG8gaW5jbHVkZSB0aGUgYm9yZGVyIGFuZCBwYWRkaW5nICovCgktbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7Cgktd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7Cglib3gtc2l6aW5nOiBib3JkZXItYm94OwoKCS8qIGRpbWVuc2lvbnMgKi8KCW1hcmdpbjogMDsKCWhlaWdodDogMi4xZW07CglwYWRkaW5nOiAwIC42ZW07CgoJLyogdGV4dCAmIGN1cnNvciAqLwoJZm9udC1zaXplOiAxZW07IC8qIG5vcm1hbGl6ZSAqLwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKCWN1cnNvcjogcG9pbnRlcjsKfQoKLyogRmlyZWZveCBoYXMgYW4gYW5ub3lpbmcgaW5uZXIgYm9yZGVyICovCi5mYyBidXR0b246Oi1tb3otZm9jdXMtaW5uZXIgeyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IH0KCQouZmMtc3RhdGUtZGVmYXVsdCB7IC8qIG5vbi10aGVtZSAqLwoJYm9yZGVyOiAxcHggc29saWQ7Cn0KCi5mYy1zdGF0ZS1kZWZhdWx0LmZjLWNvcm5lci1sZWZ0IHsgLyogbm9uLXRoZW1lICovCglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7Cglib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHg7Cn0KCi5mYy1zdGF0ZS1kZWZhdWx0LmZjLWNvcm5lci1yaWdodCB7IC8qIG5vbi10aGVtZSAqLwoJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDsKCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7Cn0KCi8qIGljb25zIGluIGJ1dHRvbnMgKi8KCi5mYyBidXR0b24gLmZjLWljb24geyAvKiBub24tdGhlbWUgKi8KCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXRvcDogLTAuMDVlbTsgLyogc2VlbXMgdG8gYmUgYSBnb29kIGFkanVzdG1lbnQgYWNyb3NzIGJyb3dzZXJzICovCgltYXJnaW46IDAgLjJlbTsKCXZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCQovKgogIGJ1dHRvbiBzdGF0ZXMKICBib3Jyb3dlZCBmcm9tIHR3aXR0ZXIgYm9vdHN0cmFwIChodHRwOi8vdHdpdHRlci5naXRodWIuY29tL2Jvb3RzdHJhcC8pCiovCgouZmMtc3RhdGUtZGVmYXVsdCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1OwoJYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAjZmZmZmZmLCAjZTZlNmU2KTsKCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDAsIDAgMTAwJSwgZnJvbSgjZmZmZmZmKSwgdG8oI2U2ZTZlNikpOwoJYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjZmZmZmZmLCAjZTZlNmU2KTsKCWJhY2tncm91bmQtaW1hZ2U6IC1vLWxpbmVhci1ncmFkaWVudCh0b3AsICNmZmZmZmYsICNlNmU2ZTYpOwoJYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2ZmZmZmZiwgI2U2ZTZlNik7CgliYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7Cglib3JkZXItY29sb3I6ICNlNmU2ZTYgI2U2ZTZlNiAjYmZiZmJmOwoJYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMSkgcmdiYSgwLCAwLCAwLCAwLjEpIHJnYmEoMCwgMCwgMCwgMC4yNSk7Cgljb2xvcjogIzMzMzsKCXRleHQtc2hhZG93OiAwIDFweCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc1KTsKCWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpLCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA1KTsKfQoKLmZjLXN0YXRlLWhvdmVyLAouZmMtc3RhdGUtZG93biwKLmZjLXN0YXRlLWFjdGl2ZSwKLmZjLXN0YXRlLWRpc2FibGVkIHsKCWNvbG9yOiAjMzMzMzMzOwoJYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjsKfQoKLmZjLXN0YXRlLWhvdmVyIHsKCWNvbG9yOiAjMzMzMzMzOwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMTVweDsKCS13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1wb3NpdGlvbiAwLjFzIGxpbmVhcjsKCSAgIC1tb3otdHJhbnNpdGlvbjogYmFja2dyb3VuZC1wb3NpdGlvbiAwLjFzIGxpbmVhcjsKCSAgICAgLW8tdHJhbnNpdGlvbjogYmFja2dyb3VuZC1wb3NpdGlvbiAwLjFzIGxpbmVhcjsKCSAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1wb3NpdGlvbiAwLjFzIGxpbmVhcjsKfQoKLmZjLXN0YXRlLWRvd24sCi5mYy1zdGF0ZS1hY3RpdmUgewoJYmFja2dyb3VuZC1jb2xvcjogI2NjY2NjYzsKCWJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cglib3gtc2hhZG93OiBpbnNldCAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjE1KSwgMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7Cn0KCi5mYy1zdGF0ZS1kaXNhYmxlZCB7CgljdXJzb3I6IGRlZmF1bHQ7CgliYWNrZ3JvdW5kLWltYWdlOiBub25lOwoJb3BhY2l0eTogMC42NTsKCWJveC1zaGFkb3c6IG5vbmU7Cn0KCgovKiBCdXR0b25zIEdyb3VwcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouZmMtYnV0dG9uLWdyb3VwIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLyoKZXZlcnkgYnV0dG9uIHRoYXQgaXMgbm90IGZpcnN0IGluIGEgYnV0dG9uIGdyb3VwIHNob3VsZCBzY29vdGNoIG92ZXIgb25lIHBpeGVsIGFuZCBjb3ZlciB0aGUKcHJldmlvdXMgYnV0dG9uJ3MgYm9yZGVyLi4uCiovCgouZmMgLmZjLWJ1dHRvbi1ncm91cCA+ICogeyAvKiBleHRyYSBwcmVjZWRlbmNlIGIvYyBidXR0b25zIGhhdmUgbWFyZ2luIHNldCB0byB6ZXJvICovCglmbG9hdDogbGVmdDsKCW1hcmdpbjogMCAwIDAgLTFweDsKfQoKLmZjIC5mYy1idXR0b24tZ3JvdXAgPiA6Zmlyc3QtY2hpbGQgeyAvKiBzYW1lICovCgltYXJnaW4tbGVmdDogMDsKfQoKCi8qIFBvcG92ZXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLmZjLXBvcG92ZXIgewoJcG9zaXRpb246IGFic29sdXRlOwoJYm94LXNoYWRvdzogMCAycHggNnB4IHJnYmEoMCwwLDAsLjE1KTsKfQoKLmZjLXBvcG92ZXIgLmZjLWhlYWRlciB7IC8qIFRPRE86IGJlIG1vcmUgY29uc2lzdGVudCB3aXRoIGZjLWhlYWQvZmMtYm9keSAqLwoJcGFkZGluZzogMnB4IDRweDsKfQoKLmZjLXBvcG92ZXIgLmZjLWhlYWRlciAuZmMtdGl0bGUgewoJbWFyZ2luOiAwIDJweDsKfQoKLmZjLXBvcG92ZXIgLmZjLWhlYWRlciAuZmMtY2xvc2UgewoJY3Vyc29yOiBwb2ludGVyOwp9CgouZmMtbHRyIC5mYy1wb3BvdmVyIC5mYy1oZWFkZXIgLmZjLXRpdGxlLAouZmMtcnRsIC5mYy1wb3BvdmVyIC5mYy1oZWFkZXIgLmZjLWNsb3NlIHsKCWZsb2F0OiBsZWZ0Owp9CgouZmMtcnRsIC5mYy1wb3BvdmVyIC5mYy1oZWFkZXIgLmZjLXRpdGxlLAouZmMtbHRyIC5mYy1wb3BvdmVyIC5mYy1oZWFkZXIgLmZjLWNsb3NlIHsKCWZsb2F0OiByaWdodDsKfQoKLyogdW50aGVtZWQgKi8KCi5mYy11bnRoZW1lZCAuZmMtcG9wb3ZlciB7Cglib3JkZXItd2lkdGg6IDFweDsKCWJvcmRlci1zdHlsZTogc29saWQ7Cn0KCi5mYy11bnRoZW1lZCAuZmMtcG9wb3ZlciAuZmMtaGVhZGVyIC5mYy1jbG9zZSB7Cglmb250LXNpemU6IC45ZW07CgltYXJnaW4tdG9wOiAycHg7Cn0KCi8qIGpxdWkgdGhlbWVkICovCgouZmMtcG9wb3ZlciA+IC51aS13aWRnZXQtaGVhZGVyICsgLnVpLXdpZGdldC1jb250ZW50IHsKCWJvcmRlci10b3A6IDA7IC8qIHdoZXJlIHRoZXkgbWVldCwgbGV0IHRoZSBoZWFkZXIgaGF2ZSB0aGUgYm9yZGVyICovCn0KCgovKiBNaXNjIFJldXNhYmxlIENvbXBvbmVudHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLmZjLWRpdmlkZXIgewoJYm9yZGVyLXN0eWxlOiBzb2xpZDsKCWJvcmRlci13aWR0aDogMXB4Owp9Cgpoci5mYy1kaXZpZGVyIHsKCWhlaWdodDogMDsKCW1hcmdpbjogMDsKCXBhZGRpbmc6IDAgMCAycHg7IC8qIGhlaWdodCBpcyB1bnJlbGlhYmxlIGFjcm9zcyBicm93c2Vycywgc28gdXNlIHBhZGRpbmcgKi8KCWJvcmRlci13aWR0aDogMXB4IDA7Cn0KCi5mYy1jbGVhciB7CgljbGVhcjogYm90aDsKfQoKLmZjLWJnLAouZmMtYmdldmVudC1za2VsZXRvbiwKLmZjLWhpZ2hsaWdodC1za2VsZXRvbiwKLmZjLWhlbHBlci1za2VsZXRvbiB7CgkvKiB0aGVzZSBlbGVtZW50IHNob3VsZCBhbHdheXMgY2xpbmcgdG8gdG9wLWxlZnQvcmlnaHQgY29ybmVycyAqLwoJcG9zaXRpb246IGFic29sdXRlOwoJdG9wOiAwOwoJbGVmdDogMDsKCXJpZ2h0OiAwOwp9CgouZmMtYmcgewoJYm90dG9tOiAwOyAvKiBzdHJlY2ggYmcgdG8gYm90dG9tIGVkZ2UgKi8KfQoKLmZjLWJnIHRhYmxlIHsKCWhlaWdodDogMTAwJTsgLyogc3RyZWNoIGJnIHRvIGJvdHRvbSBlZGdlICovCn0KCgovKiBUYWJsZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLmZjIHRhYmxlIHsKCXdpZHRoOiAxMDAlOwoJYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogZml4IHNjcm9sbGJhciBpc3N1ZSBpbiBmaXJlZm94ICovCgl0YWJsZS1sYXlvdXQ6IGZpeGVkOwoJYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKCWJvcmRlci1zcGFjaW5nOiAwOwoJZm9udC1zaXplOiAxZW07IC8qIG5vcm1hbGl6ZSBjcm9zcy1icm93c2VyICovCn0KCi5mYyB0aCB7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5mYyB0aCwKLmZjIHRkIHsKCWJvcmRlci1zdHlsZTogc29saWQ7Cglib3JkZXItd2lkdGg6IDFweDsKCXBhZGRpbmc6IDA7Cgl2ZXJ0aWNhbC1hbGlnbjogdG9wOwp9CgouZmMgdGQuZmMtdG9kYXkgewoJYm9yZGVyLXN0eWxlOiBkb3VibGU7IC8qIG92ZXJjb21lIG5laWdoYm9yaW5nIGJvcmRlcnMgKi8KfQoKCi8qIEludGVybmFsIE5hdiBMaW5rcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgphW2RhdGEtZ290b10gewoJY3Vyc29yOiBwb2ludGVyOwp9CgphW2RhdGEtZ290b106aG92ZXIgewoJdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cn0KCgovKiBGYWtlIFRhYmxlIFJvd3MKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLmZjIC5mYy1yb3cgeyAvKiBleHRyYSBwcmVjZWRlbmNlIHRvIG92ZXJjb21lIHRoZW1lcyB3LyAudWktd2lkZ2V0LWNvbnRlbnQgZm9yY2luZyBhIDFweCBib3JkZXIgKi8KCS8qIG5vIHZpc2libGUgYm9yZGVyIGJ5IGRlZmF1bHQuIGJ1dCBtYWtlIGF2YWlsYWJsZSBpZiBuZWVkIGJlIChzY3JvbGxiYXIgd2lkdGggY29tcGVuc2F0aW9uKSAqLwoJYm9yZGVyLXN0eWxlOiBzb2xpZDsKCWJvcmRlci13aWR0aDogMDsKfQoKLmZjLXJvdyB0YWJsZSB7CgkvKiBkb24ndCBwdXQgbGVmdC9yaWdodCBib3JkZXIgb24gYW55dGhpbmcgd2l0aGluIGEgZmFrZSByb3cuCgkgICB0aGUgb3V0ZXIgdGJvZHkgd2lsbCB3b3JyeSBhYm91dCB0aGlzICovCglib3JkZXItbGVmdDogMCBoaWRkZW4gdHJhbnNwYXJlbnQ7Cglib3JkZXItcmlnaHQ6IDAgaGlkZGVuIHRyYW5zcGFyZW50OwoKCS8qIG5vIGJvdHRvbSBib3JkZXJzIG9uIHJvd3MgKi8KCWJvcmRlci1ib3R0b206IDAgaGlkZGVuIHRyYW5zcGFyZW50OyAKfQoKLmZjLXJvdzpmaXJzdC1jaGlsZCB0YWJsZSB7Cglib3JkZXItdG9wOiAwIGhpZGRlbiB0cmFuc3BhcmVudDsgLyogbm8gdG9wIGJvcmRlciBvbiBmaXJzdCByb3cgKi8KfQoKCi8qIERheSBSb3cgKHVzZWQgd2l0aGluIHRoZSBoZWFkZXIgYW5kIHRoZSBEYXlHcmlkKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouZmMtcm93IHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmZjLXJvdyAuZmMtYmcgewoJei1pbmRleDogMTsKfQoKLyogaGlnaGxpZ2h0aW5nIGNlbGxzICYgYmFja2dyb3VuZCBldmVudCBza2VsZXRvbiAqLwoKLmZjLXJvdyAuZmMtYmdldmVudC1za2VsZXRvbiwKLmZjLXJvdyAuZmMtaGlnaGxpZ2h0LXNrZWxldG9uIHsKCWJvdHRvbTogMDsgLyogc3RyZXRjaCBza2VsZXRvbiB0byBib3R0b20gb2Ygcm93ICovCn0KCi5mYy1yb3cgLmZjLWJnZXZlbnQtc2tlbGV0b24gdGFibGUsCi5mYy1yb3cgLmZjLWhpZ2hsaWdodC1za2VsZXRvbiB0YWJsZSB7CgloZWlnaHQ6IDEwMCU7IC8qIHN0cmV0Y2ggc2tlbGV0b24gdG8gYm90dG9tIG9mIHJvdyAqLwp9CgouZmMtcm93IC5mYy1oaWdobGlnaHQtc2tlbGV0b24gdGQsCi5mYy1yb3cgLmZjLWJnZXZlbnQtc2tlbGV0b24gdGQgewoJYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLmZjLXJvdyAuZmMtYmdldmVudC1za2VsZXRvbiB7Cgl6LWluZGV4OiAyOwoKfQoKLmZjLXJvdyAuZmMtaGlnaGxpZ2h0LXNrZWxldG9uIHsKCXotaW5kZXg6IDM7Cn0KCi8qCnJvdyBjb250ZW50ICh3aGljaCBjb250YWlucyBkYXkvd2VlayBudW1iZXJzIGFuZCBldmVudHMpIGFzIHdlbGwgYXMgImhlbHBlciIgKHdoaWNoIGNvbnRhaW5zCnRlbXBvcmFyeSByZW5kZXJlZCBldmVudHMpLgoqLwoKLmZjLXJvdyAuZmMtY29udGVudC1za2VsZXRvbiB7Cglwb3NpdGlvbjogcmVsYXRpdmU7Cgl6LWluZGV4OiA0OwoJcGFkZGluZy1ib3R0b206IDJweDsgLyogbWF0Y2hlcyB0aGUgc3BhY2UgYWJvdmUgdGhlIGV2ZW50cyAqLwp9CgouZmMtcm93IC5mYy1oZWxwZXItc2tlbGV0b24gewoJei1pbmRleDogNTsKfQoKLmZjLXJvdyAuZmMtY29udGVudC1za2VsZXRvbiB0ZCwKLmZjLXJvdyAuZmMtaGVscGVyLXNrZWxldG9uIHRkIHsKCS8qIHNlZS10aHJvdWdoIHRvIHRoZSBiYWNrZ3JvdW5kIGJlbG93ICovCgliYWNrZ3JvdW5kOiBub25lOyAvKiBpbiBjYXNlIDx0ZD5zIGFyZSBnbG9iYWxseSBzdHlsZWQgKi8KCWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CgoJLyogZG9uJ3QgcHV0IGEgYm9yZGVyIGJldHdlZW4gZXZlbnRzIGFuZC9vciB0aGUgZGF5IG51bWJlciAqLwoJYm9yZGVyLWJvdHRvbTogMDsKfQoKLmZjLXJvdyAuZmMtY29udGVudC1za2VsZXRvbiB0Ym9keSB0ZCwgLyogY2VsbHMgd2l0aCBldmVudHMgaW5zaWRlIChzbyBOT1QgdGhlIGRheSBudW1iZXIgY2VsbCkgKi8KLmZjLXJvdyAuZmMtaGVscGVyLXNrZWxldG9uIHRib2R5IHRkIHsKCS8qIGRvbid0IHB1dCBhIGJvcmRlciBiZXR3ZWVuIGV2ZW50IGNlbGxzICovCglib3JkZXItdG9wOiAwOwp9CgoKLyogU2Nyb2xsaW5nIENvbnRhaW5lcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouZmMtc2Nyb2xsZXIgewoJLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwp9CgovKiBUT0RPOiBtb3ZlIHRvIGFnZW5kYS9iYXNpYyAqLwouZmMtc2Nyb2xsZXIgPiAuZmMtZGF5LWdyaWQsCi5mYy1zY3JvbGxlciA+IC5mYy10aW1lLWdyaWQgewoJcG9zaXRpb246IHJlbGF0aXZlOyAvKiByZS1zY29wZSBhbGwgcG9zaXRpb25zICovCgl3aWR0aDogMTAwJTsgLyogaGFjayB0byBmb3JjZSByZS1zaXppbmcgdGhpcyBpbm5lciBlbGVtZW50IHdoZW4gc2Nyb2xsYmFycyBhcHBlYXIvZGlzYXBwZWFyICovCn0KCgovKiBHbG9iYWwgRXZlbnQgU3R5bGVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5mYy1ldmVudCB7Cglwb3NpdGlvbjogcmVsYXRpdmU7IC8qIGZvciByZXNpemUgaGFuZGxlIGFuZCBvdGhlciBpbm5lciBwb3NpdGlvbmluZyAqLwoJZGlzcGxheTogYmxvY2s7IC8qIG1ha2UgdGhlIDxhPiB0YWcgYmxvY2sgKi8KCWZvbnQtc2l6ZTogLjg1ZW07CglsaW5lLWhlaWdodDogMS4zOwoJYm9yZGVyLXJhZGl1czogM3B4OwoJYm9yZGVyOiAxcHggc29saWQgIzNhODdhZDsgLyogZGVmYXVsdCBCT1JERVIgY29sb3IgKi8KCWZvbnQtd2VpZ2h0OiBub3JtYWw7IC8qIHVuZG8ganF1aSdzIHVpLXdpZGdldC1oZWFkZXIgYm9sZCAqLwp9CgouZmMtZXZlbnQsCi5mYy1ldmVudC1kb3QgewoJYmFja2dyb3VuZC1jb2xvcjogIzNhODdhZDsgLyogZGVmYXVsdCBCQUNLR1JPVU5EIGNvbG9yICovCn0KCi8qIG92ZXJwb3dlciBzb21lIG9mIGJvb3RzdHJhcCdzIGFuZCBqcXVpJ3Mgc3R5bGVzIG9uIDxhPiB0YWdzICovCi5mYy1ldmVudCwKLmZjLWV2ZW50OmhvdmVyLAoudWktd2lkZ2V0IC5mYy1ldmVudCB7Cgljb2xvcjogI2ZmZjsgLyogZGVmYXVsdCBURVhUIGNvbG9yICovCgl0ZXh0LWRlY29yYXRpb246IG5vbmU7IC8qIGlmIDxhPiBoYXMgYW4gaHJlZiAqLwp9CgouZmMtZXZlbnRbaHJlZl0sCi5mYy1ldmVudC5mYy1kcmFnZ2FibGUgewoJY3Vyc29yOiBwb2ludGVyOyAvKiBnaXZlIGV2ZW50cyB3aXRoIGxpbmtzIGFuZCBkcmFnZ2FibGUgZXZlbnRzIGEgaGFuZCBtb3VzZSBwb2ludGVyICovCn0KCi5mYy1ub3QtYWxsb3dlZCwgLyogY2F1c2VzIGEgIndhcm5pbmciIGN1cnNvci4gYXBwbGllZCBvbiBib2R5ICovCi5mYy1ub3QtYWxsb3dlZCAuZmMtZXZlbnQgeyAvKiB0byBvdmVycmlkZSBhbiBldmVudCdzIGN1c3RvbSBjdXJzb3IgKi8KCWN1cnNvcjogbm90LWFsbG93ZWQ7Cn0KCi5mYy1ldmVudCAuZmMtYmcgeyAvKiB0aGUgZ2VuZXJpYyAuZmMtYmcgYWxyZWFkeSBkb2VzIHBvc2l0aW9uICovCgl6LWluZGV4OiAxOwoJYmFja2dyb3VuZDogI2ZmZjsKCW9wYWNpdHk6IC4yNTsKfQoKLmZjLWV2ZW50IC5mYy1jb250ZW50IHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXotaW5kZXg6IDI7Cn0KCi8qIHJlc2l6ZXIgKGN1cnNvciBBTkQgdG91Y2ggZGV2aWNlcykgKi8KCi5mYy1ldmVudCAuZmMtcmVzaXplciB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl6LWluZGV4OiA0Owp9CgovKiByZXNpemVyICh0b3VjaCBkZXZpY2VzKSAqLwoKLmZjLWV2ZW50IC5mYy1yZXNpemVyIHsKCWRpc3BsYXk6IG5vbmU7Cn0KCi5mYy1ldmVudC5mYy1hbGxvdy1tb3VzZS1yZXNpemUgLmZjLXJlc2l6ZXIsCi5mYy1ldmVudC5mYy1zZWxlY3RlZCAuZmMtcmVzaXplciB7CgkvKiBvbmx5IHNob3cgd2hlbiBob3ZlcmluZyBvciBzZWxlY3RlZCAod2l0aCB0b3VjaCkgKi8KCWRpc3BsYXk6IGJsb2NrOwp9CgovKiBoaXQgYXJlYSAqLwoKLmZjLWV2ZW50LmZjLXNlbGVjdGVkIC5mYy1yZXNpemVyOmJlZm9yZSB7CgkvKiA0MHg0MCB0b3VjaCBhcmVhICovCgljb250ZW50OiAiIjsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXotaW5kZXg6IDk5OTk7IC8qIHVzZXIgb2YgdGhpcyB1dGlsIGNhbiBzY29wZSB3aXRoaW4gYSBsb3dlciB6LWluZGV4ICovCgl0b3A6IDUwJTsKCWxlZnQ6IDUwJTsKCXdpZHRoOiA0MHB4OwoJaGVpZ2h0OiA0MHB4OwoJbWFyZ2luLWxlZnQ6IC0yMHB4OwoJbWFyZ2luLXRvcDogLTIwcHg7Cn0KCgovKiBFdmVudCBTZWxlY3Rpb24gKG9ubHkgZm9yIHRvdWNoIGRldmljZXMpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5mYy1ldmVudC5mYy1zZWxlY3RlZCB7Cgl6LWluZGV4OiA5OTk5ICFpbXBvcnRhbnQ7IC8qIG92ZXJjb21lcyBpbmxpbmUgei1pbmRleCAqLwoJYm94LXNoYWRvdzogMCAycHggNXB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKfQoKLmZjLWV2ZW50LmZjLXNlbGVjdGVkLmZjLWRyYWdnaW5nIHsKCWJveC1zaGFkb3c6IDAgMnB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMyk7Cn0KCgovKiBIb3Jpem9udGFsIEV2ZW50cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgovKiBiaWdnZXIgdG91Y2ggYXJlYSB3aGVuIHNlbGVjdGVkICovCi5mYy1oLWV2ZW50LmZjLXNlbGVjdGVkOmJlZm9yZSB7Cgljb250ZW50OiAiIjsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXotaW5kZXg6IDM7IC8qIGJlbG93IHJlc2l6ZXJzICovCgl0b3A6IC0xMHB4OwoJYm90dG9tOiAtMTBweDsKCWxlZnQ6IDA7CglyaWdodDogMDsKfQoKLyogZXZlbnRzIHRoYXQgYXJlIGNvbnRpbnVpbmcgdG8vZnJvbSBhbm90aGVyIHdlZWsuIGtpbGwgcm91bmRlZCBjb3JuZXJzIGFuZCBidXR0IHVwIGFnYWluc3QgZWRnZSAqLwoKLmZjLWx0ciAuZmMtaC1ldmVudC5mYy1ub3Qtc3RhcnQsCi5mYy1ydGwgLmZjLWgtZXZlbnQuZmMtbm90LWVuZCB7CgltYXJnaW4tbGVmdDogMDsKCWJvcmRlci1sZWZ0LXdpZHRoOiAwOwoJcGFkZGluZy1sZWZ0OiAxcHg7IC8qIHJlcGxhY2UgdGhlIGJvcmRlciB3aXRoIHBhZGRpbmcgKi8KCWJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7Cglib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOwp9CgouZmMtbHRyIC5mYy1oLWV2ZW50LmZjLW5vdC1lbmQsCi5mYy1ydGwgLmZjLWgtZXZlbnQuZmMtbm90LXN0YXJ0IHsKCW1hcmdpbi1yaWdodDogMDsKCWJvcmRlci1yaWdodC13aWR0aDogMDsKCXBhZGRpbmctcmlnaHQ6IDFweDsgLyogcmVwbGFjZSB0aGUgYm9yZGVyIHdpdGggcGFkZGluZyAqLwoJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7Cglib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKfQoKLyogcmVzaXplciAoY3Vyc29yIEFORCB0b3VjaCBkZXZpY2VzKSAqLwoKLyogbGVmdCByZXNpemVyICAqLwouZmMtbHRyIC5mYy1oLWV2ZW50IC5mYy1zdGFydC1yZXNpemVyLAouZmMtcnRsIC5mYy1oLWV2ZW50IC5mYy1lbmQtcmVzaXplciB7CgljdXJzb3I6IHctcmVzaXplOwoJbGVmdDogLTFweDsgLyogb3ZlcmNvbWUgYm9yZGVyICovCn0KCi8qIHJpZ2h0IHJlc2l6ZXIgKi8KLmZjLWx0ciAuZmMtaC1ldmVudCAuZmMtZW5kLXJlc2l6ZXIsCi5mYy1ydGwgLmZjLWgtZXZlbnQgLmZjLXN0YXJ0LXJlc2l6ZXIgewoJY3Vyc29yOiBlLXJlc2l6ZTsKCXJpZ2h0OiAtMXB4OyAvKiBvdmVyY29tZSBib3JkZXIgKi8KfQoKLyogcmVzaXplciAobW91c2UgZGV2aWNlcykgKi8KCi5mYy1oLWV2ZW50LmZjLWFsbG93LW1vdXNlLXJlc2l6ZSAuZmMtcmVzaXplciB7Cgl3aWR0aDogN3B4OwoJdG9wOiAtMXB4OyAvKiBvdmVyY29tZSB0b3AgYm9yZGVyICovCglib3R0b206IC0xcHg7IC8qIG92ZXJjb21lIGJvdHRvbSBib3JkZXIgKi8KfQoKLyogcmVzaXplciAodG91Y2ggZGV2aWNlcykgKi8KCi5mYy1oLWV2ZW50LmZjLXNlbGVjdGVkIC5mYy1yZXNpemVyIHsKCS8qIDh4OCBsaXR0bGUgZG90ICovCglib3JkZXItcmFkaXVzOiA0cHg7Cglib3JkZXItd2lkdGg6IDFweDsKCXdpZHRoOiA2cHg7CgloZWlnaHQ6IDZweDsKCWJvcmRlci1zdHlsZTogc29saWQ7Cglib3JkZXItY29sb3I6IGluaGVyaXQ7CgliYWNrZ3JvdW5kOiAjZmZmOwoJLyogdmVydGljYWxseSBjZW50ZXIgKi8KCXRvcDogNTAlOwoJbWFyZ2luLXRvcDogLTRweDsKfQoKLyogbGVmdCByZXNpemVyICAqLwouZmMtbHRyIC5mYy1oLWV2ZW50LmZjLXNlbGVjdGVkIC5mYy1zdGFydC1yZXNpemVyLAouZmMtcnRsIC5mYy1oLWV2ZW50LmZjLXNlbGVjdGVkIC5mYy1lbmQtcmVzaXplciB7CgltYXJnaW4tbGVmdDogLTRweDsgLyogY2VudGVycyB0aGUgOHg4IGRvdCBvbiB0aGUgbGVmdCBlZGdlICovCn0KCi8qIHJpZ2h0IHJlc2l6ZXIgKi8KLmZjLWx0ciAuZmMtaC1ldmVudC5mYy1zZWxlY3RlZCAuZmMtZW5kLXJlc2l6ZXIsCi5mYy1ydGwgLmZjLWgtZXZlbnQuZmMtc2VsZWN0ZWQgLmZjLXN0YXJ0LXJlc2l6ZXIgewoJbWFyZ2luLXJpZ2h0OiAtNHB4OyAvKiBjZW50ZXJzIHRoZSA4eDggZG90IG9uIHRoZSByaWdodCBlZGdlICovCn0KCgovKiBEYXlHcmlkIGV2ZW50cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCldlIHVzZSB0aGUgZnVsbCAiZmMtZGF5LWdyaWQtZXZlbnQiIGNsYXNzIGluc3RlYWQgb2YgdXNpbmcgZGVzY2VuZGFudHMgYmVjYXVzZSB0aGUgZXZlbnQgd29uJ3QKYmUgYSBkZXNjZW5kYW50IG9mIHRoZSBncmlkIHdoZW4gaXQgaXMgYmVpbmcgZHJhZ2dlZC4KKi8KCi5mYy1kYXktZ3JpZC1ldmVudCB7CgltYXJnaW46IDFweCAycHggMDsgLyogc3BhY2luZyBiZXR3ZWVuIGV2ZW50cyBhbmQgZWRnZXMgKi8KCXBhZGRpbmc6IDAgMXB4Owp9Cgp0cjpmaXJzdC1jaGlsZCA+IHRkID4gLmZjLWRheS1ncmlkLWV2ZW50IHsKCW1hcmdpbi10b3A6IDJweDsgLyogYSBsaXR0bGUgYml0IG1vcmUgc3BhY2UgYmVmb3JlIHRoZSBmaXJzdCBldmVudCAqLwp9CgouZmMtZGF5LWdyaWQtZXZlbnQuZmMtc2VsZWN0ZWQ6YWZ0ZXIgewoJY29udGVudDogIiI7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl6LWluZGV4OiAxOyAvKiBzYW1lIHotaW5kZXggYXMgZmMtYmcsIGJlaGluZCB0ZXh0ICovCgkvKiBvdmVyY29tZSB0aGUgYm9yZGVycyAqLwoJdG9wOiAtMXB4OwoJcmlnaHQ6IC0xcHg7Cglib3R0b206IC0xcHg7CglsZWZ0OiAtMXB4OwoJLyogZGFya2VuaW5nIGVmZmVjdCAqLwoJYmFja2dyb3VuZDogIzAwMDsKCW9wYWNpdHk6IC4yNTsKfQoKLmZjLWRheS1ncmlkLWV2ZW50IC5mYy1jb250ZW50IHsgLyogZm9yY2UgZXZlbnRzIHRvIGJlIG9uZS1saW5lIHRhbGwgKi8KCXdoaXRlLXNwYWNlOiBub3dyYXA7CglvdmVyZmxvdzogaGlkZGVuOwp9CgouZmMtZGF5LWdyaWQtZXZlbnQgLmZjLXRpbWUgewoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCi8qIHJlc2l6ZXIgKGN1cnNvciBkZXZpY2VzKSAqLwoKLyogbGVmdCByZXNpemVyICAqLwouZmMtbHRyIC5mYy1kYXktZ3JpZC1ldmVudC5mYy1hbGxvdy1tb3VzZS1yZXNpemUgLmZjLXN0YXJ0LXJlc2l6ZXIsCi5mYy1ydGwgLmZjLWRheS1ncmlkLWV2ZW50LmZjLWFsbG93LW1vdXNlLXJlc2l6ZSAuZmMtZW5kLXJlc2l6ZXIgewoJbWFyZ2luLWxlZnQ6IC0ycHg7IC8qIHRvIHRoZSBkYXkgY2VsbCdzIGVkZ2UgKi8KfQoKLyogcmlnaHQgcmVzaXplciAqLwouZmMtbHRyIC5mYy1kYXktZ3JpZC1ldmVudC5mYy1hbGxvdy1tb3VzZS1yZXNpemUgLmZjLWVuZC1yZXNpemVyLAouZmMtcnRsIC5mYy1kYXktZ3JpZC1ldmVudC5mYy1hbGxvdy1tb3VzZS1yZXNpemUgLmZjLXN0YXJ0LXJlc2l6ZXIgewoJbWFyZ2luLXJpZ2h0OiAtMnB4OyAvKiB0byB0aGUgZGF5IGNlbGwncyBlZGdlICovCn0KCgovKiBFdmVudCBMaW1pdGluZwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgovKiAibW9yZSIgbGluayB0aGF0IHJlcHJlc2VudHMgaGlkZGVuIGV2ZW50cyAqLwoKYS5mYy1tb3JlIHsKCW1hcmdpbjogMXB4IDNweDsKCWZvbnQtc2l6ZTogLjg1ZW07CgljdXJzb3I6IHBvaW50ZXI7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KCmEuZmMtbW9yZTpob3ZlciB7Cgl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKfQoKLmZjLWxpbWl0ZWQgeyAvKiByb3dzIGFuZCBjZWxscyB0aGF0IGFyZSBoaWRkZW4gYmVjYXVzZSBvZiBhICJtb3JlIiBsaW5rICovCglkaXNwbGF5OiBub25lOwp9CgovKiBwb3BvdmVyIHRoYXQgYXBwZWFycyB3aGVuICJtb3JlIiBsaW5rIGlzIGNsaWNrZWQgKi8KCi5mYy1kYXktZ3JpZCAuZmMtcm93IHsKCXotaW5kZXg6IDE7IC8qIG1ha2UgdGhlICJtb3JlIiBwb3BvdmVyIG9uZSBoaWdoZXIgdGhhbiB0aGlzICovCn0KCi5mYy1tb3JlLXBvcG92ZXIgewoJei1pbmRleDogMjsKCXdpZHRoOiAyMjBweDsKfQoKLmZjLW1vcmUtcG9wb3ZlciAuZmMtZXZlbnQtY29udGFpbmVyIHsKCXBhZGRpbmc6IDEwcHg7Cn0KCgovKiBOb3cgSW5kaWNhdG9yCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5mYy1ub3ctaW5kaWNhdG9yIHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCWJvcmRlcjogMCBzb2xpZCByZWQ7Cn0KCgovKiBVdGlsaXRpZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLmZjLXVuc2VsZWN0YWJsZSB7Cgktd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwoJIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTsKCSAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CgkgICAgLW1zLXVzZXItc2VsZWN0OiBub25lOwoJICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKCS13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTsKCS13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTsKfQoKCgovKiBUb29sYmFyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5mYy10b29sYmFyIHsKCXRleHQtYWxpZ246IGNlbnRlcjsKfQoKLmZjLXRvb2xiYXIuZmMtaGVhZGVyLXRvb2xiYXIgewoJbWFyZ2luLWJvdHRvbTogMWVtOwp9CgouZmMtdG9vbGJhci5mYy1mb290ZXItdG9vbGJhciB7CgltYXJnaW4tdG9wOiAxZW07Cn0KCi5mYy10b29sYmFyIC5mYy1sZWZ0IHsKCWZsb2F0OiBsZWZ0Owp9CgouZmMtdG9vbGJhciAuZmMtcmlnaHQgewoJZmxvYXQ6IHJpZ2h0Owp9CgouZmMtdG9vbGJhciAuZmMtY2VudGVyIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLyogdGhlIHRoaW5ncyB3aXRoaW4gZWFjaCBsZWZ0L3JpZ2h0L2NlbnRlciBzZWN0aW9uICovCi5mYyAuZmMtdG9vbGJhciA+ICogPiAqIHsgLyogZXh0cmEgcHJlY2VkZW5jZSB0byBvdmVycmlkZSBidXR0b24gYm9yZGVyIG1hcmdpbnMgKi8KCWZsb2F0OiBsZWZ0OwoJbWFyZ2luLWxlZnQ6IC43NWVtOwp9CgovKiB0aGUgZmlyc3QgdGhpbmcgd2l0aGluIGVhY2ggbGVmdC9jZW50ZXIvcmlnaHQgc2VjdGlvbiAqLwouZmMgLmZjLXRvb2xiYXIgPiAqID4gOmZpcnN0LWNoaWxkIHsgLyogZXh0cmEgcHJlY2VkZW5jZSB0byBvdmVycmlkZSBidXR0b24gYm9yZGVyIG1hcmdpbnMgKi8KCW1hcmdpbi1sZWZ0OiAwOwp9CgkKLyogdGl0bGUgdGV4dCAqLwoKLmZjLXRvb2xiYXIgaDIgewoJbWFyZ2luOiAwOwp9CgovKiBidXR0b24gbGF5ZXJpbmcgKGZvciBib3JkZXIgcHJlY2VkZW5jZSkgKi8KCi5mYy10b29sYmFyIGJ1dHRvbiB7Cglwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5mYy10b29sYmFyIC5mYy1zdGF0ZS1ob3ZlciwKLmZjLXRvb2xiYXIgLnVpLXN0YXRlLWhvdmVyIHsKCXotaW5kZXg6IDI7Cn0KCQouZmMtdG9vbGJhciAuZmMtc3RhdGUtZG93biB7Cgl6LWluZGV4OiAzOwp9CgouZmMtdG9vbGJhciAuZmMtc3RhdGUtYWN0aXZlLAouZmMtdG9vbGJhciAudWktc3RhdGUtYWN0aXZlIHsKCXotaW5kZXg6IDQ7Cn0KCi5mYy10b29sYmFyIGJ1dHRvbjpmb2N1cyB7Cgl6LWluZGV4OiA1Owp9CgoKLyogVmlldyBTdHJ1Y3R1cmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLyogdW5kbyB0d2l0dGVyIGJvb3RzdHJhcCdzIGJveC1zaXppbmcgcnVsZXMuIG5vcm1hbGl6ZXMgcG9zaXRpb25pbmcgdGVjaG5pcXVlcyAqLwovKiBkb24ndCBkbyB0aGlzIGZvciB0aGUgdG9vbGJhciBiZWNhdXNlIHdlJ2xsIHdhbnQgYm9vdHN0cmFwIHRvIHN0eWxlIHRob3NlIGJ1dHRvbnMgYXMgc29tZSBwdCAqLwouZmMtdmlldy1jb250YWluZXIgKiwKLmZjLXZpZXctY29udGFpbmVyICo6YmVmb3JlLAouZmMtdmlldy1jb250YWluZXIgKjphZnRlciB7Cgktd2Via2l0LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OwoJICAgLW1vei1ib3gtc2l6aW5nOiBjb250ZW50LWJveDsKCSAgICAgICAgYm94LXNpemluZzogY29udGVudC1ib3g7Cn0KCi5mYy12aWV3LCAvKiBzY29wZSBwb3NpdGlvbmluZyBhbmQgei1pbmRleCdzIGZvciBldmVyeXRoaW5nIHdpdGhpbiB0aGUgdmlldyAqLwouZmMtdmlldyA+IHRhYmxlIHsgLyogc28gZHJhZ2dlZCBlbGVtZW50cyBjYW4gYmUgYWJvdmUgdGhlIHZpZXcncyBtYWluIGVsZW1lbnQgKi8KCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXotaW5kZXg6IDE7Cn0KCgoKLyogQmFzaWNWaWV3Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi8qIGRheSByb3cgc3RydWN0dXJlICovCgouZmMtYmFzaWNXZWVrLXZpZXcgLmZjLWNvbnRlbnQtc2tlbGV0b24sCi5mYy1iYXNpY0RheS12aWV3IC5mYy1jb250ZW50LXNrZWxldG9uIHsKCS8qIHRoZXJlIG1heSBiZSB3ZWVrIG51bWJlcnMgaW4gdGhlc2Ugdmlld3MsIHNvIG5vIHBhZGRpbmctdG9wICovCglwYWRkaW5nLWJvdHRvbTogMWVtOyAvKiBlbnN1cmUgYSBzcGFjZSBhdCBib3R0b20gb2YgY2VsbCBmb3IgdXNlciBzZWxlY3RpbmcvY2xpY2tpbmcgKi8KfQoKLmZjLWJhc2ljLXZpZXcgLmZjLWJvZHkgLmZjLXJvdyB7CgltaW4taGVpZ2h0OiA0ZW07IC8qIGVuc3VyZSB0aGF0IGFsbCByb3dzIGFyZSBhdCBsZWFzdCB0aGlzIHRhbGwgKi8KfQoKLyogYSAicmlnaWQiIHJvdyB3aWxsIHRha2UgdXAgYSBjb25zdGFudCBhbW91bnQgb2YgaGVpZ2h0IGJlY2F1c2UgY29udGVudC1za2VsZXRvbiBpcyBhYnNvbHV0ZSAqLwoKLmZjLXJvdy5mYy1yaWdpZCB7CglvdmVyZmxvdzogaGlkZGVuOwp9CgouZmMtcm93LmZjLXJpZ2lkIC5mYy1jb250ZW50LXNrZWxldG9uIHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXRvcDogMDsKCWxlZnQ6IDA7CglyaWdodDogMDsKfQoKLyogd2VlayBhbmQgZGF5IG51bWJlciBzdHlsaW5nICovCgouZmMtZGF5LXRvcC5mYy1vdGhlci1tb250aCB7CglvcGFjaXR5OiAwLjM7Cn0KCi5mYy1iYXNpYy12aWV3IC5mYy13ZWVrLW51bWJlciwKLmZjLWJhc2ljLXZpZXcgLmZjLWRheS1udW1iZXIgewoJcGFkZGluZzogMnB4Owp9CgouZmMtYmFzaWMtdmlldyB0aC5mYy13ZWVrLW51bWJlciwKLmZjLWJhc2ljLXZpZXcgdGguZmMtZGF5LW51bWJlciB7CglwYWRkaW5nOiAwIDJweDsgLyogY29sdW1uIGhlYWRlcnMgY2FuJ3QgaGF2ZSBhcyBtdWNoIHYgc3BhY2UgKi8KfQoKLmZjLWx0ciAuZmMtYmFzaWMtdmlldyAuZmMtZGF5LXRvcCAuZmMtZGF5LW51bWJlciB7IGZsb2F0OiByaWdodDsgfQouZmMtcnRsIC5mYy1iYXNpYy12aWV3IC5mYy1kYXktdG9wIC5mYy1kYXktbnVtYmVyIHsgZmxvYXQ6IGxlZnQ7IH0KCi5mYy1sdHIgLmZjLWJhc2ljLXZpZXcgLmZjLWRheS10b3AgLmZjLXdlZWstbnVtYmVyIHsgZmxvYXQ6IGxlZnQ7IGJvcmRlci1yYWRpdXM6IDAgMCAzcHggMDsgfQouZmMtcnRsIC5mYy1iYXNpYy12aWV3IC5mYy1kYXktdG9wIC5mYy13ZWVrLW51bWJlciB7IGZsb2F0OiByaWdodDsgYm9yZGVyLXJhZGl1czogMCAwIDAgM3B4OyB9CgouZmMtYmFzaWMtdmlldyAuZmMtZGF5LXRvcCAuZmMtd2Vlay1udW1iZXIgewoJbWluLXdpZHRoOiAxLjVlbTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWJhY2tncm91bmQtY29sb3I6ICNmMmYyZjI7Cgljb2xvcjogIzgwODA4MDsKfQoKLyogd2hlbiB3ZWVrL2RheSBudW1iZXIgaGF2ZSBvd24gY29sdW1uICovCgouZmMtYmFzaWMtdmlldyB0ZC5mYy13ZWVrLW51bWJlciB7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5mYy1iYXNpYy12aWV3IHRkLmZjLXdlZWstbnVtYmVyID4gKiB7CgkvKiB3b3JrIGFyb3VuZCB0aGUgd2F5IHdlIGRvIGNvbHVtbiByZXNpemluZyBhbmQgZW5zdXJlIGEgbWluaW11bSB3aWR0aCAqLwoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJbWluLXdpZHRoOiAxLjI1ZW07Cn0KCgovKiBBZ2VuZGFWaWV3IGFsbC1kYXkgYXJlYQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouZmMtYWdlbmRhLXZpZXcgLmZjLWRheS1ncmlkIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXotaW5kZXg6IDI7IC8qIHNvIHRoZSAibW9yZS4uIiBwb3BvdmVyIHdpbGwgYmUgb3ZlciB0aGUgdGltZSBncmlkICovCn0KCi5mYy1hZ2VuZGEtdmlldyAuZmMtZGF5LWdyaWQgLmZjLXJvdyB7CgltaW4taGVpZ2h0OiAzZW07IC8qIGFsbC1kYXkgc2VjdGlvbiB3aWxsIG5ldmVyIGdldCBzaG9ydGVyIHRoYW4gdGhpcyAqLwp9CgouZmMtYWdlbmRhLXZpZXcgLmZjLWRheS1ncmlkIC5mYy1yb3cgLmZjLWNvbnRlbnQtc2tlbGV0b24gewoJcGFkZGluZy1ib3R0b206IDFlbTsgLyogZ2l2ZSBzcGFjZSB1bmRlcm5lYXRoIGV2ZW50cyBmb3IgY2xpY2tpbmcvc2VsZWN0aW5nIGRheXMgKi8KfQoKCi8qIFRpbWVHcmlkIGF4aXMgcnVubmluZyBkb3duIHRoZSBzaWRlIChmb3IgYm90aCB0aGUgYWxsLWRheSBhcmVhIGFuZCB0aGUgc2xvdCBhcmVhKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouZmMgLmZjLWF4aXMgeyAvKiAuZmMgdG8gb3ZlcmNvbWUgZGVmYXVsdCBjZWxsIHN0eWxlcyAqLwoJdmVydGljYWwtYWxpZ246IG1pZGRsZTsKCXBhZGRpbmc6IDAgNHB4OwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLmZjLWx0ciAuZmMtYXhpcyB7Cgl0ZXh0LWFsaWduOiByaWdodDsKfQoKLmZjLXJ0bCAuZmMtYXhpcyB7Cgl0ZXh0LWFsaWduOiBsZWZ0Owp9CgoudWktd2lkZ2V0IHRkLmZjLWF4aXMgewoJZm9udC13ZWlnaHQ6IG5vcm1hbDsgLyogb3ZlcmNvbWUganF1aSB0aGVtZSBtYWtpbmcgaXQgYm9sZCAqLwp9CgoKLyogVGltZUdyaWQgU3RydWN0dXJlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5mYy10aW1lLWdyaWQtY29udGFpbmVyLCAvKiBzbyBzY3JvbGwgY29udGFpbmVyJ3Mgei1pbmRleCBpcyBiZWxvdyBhbGwtZGF5ICovCi5mYy10aW1lLWdyaWQgeyAvKiBzbyBzbGF0cy9iZy9jb250ZW50L2V0YyBwb3NpdGlvbnMgZ2V0IHNjb3BlZCB3aXRoaW4gaGVyZSAqLwoJcG9zaXRpb246IHJlbGF0aXZlOwoJei1pbmRleDogMTsKfQoKLmZjLXRpbWUtZ3JpZCB7CgltaW4taGVpZ2h0OiAxMDAlOyAvKiBzbyBpZiBoZWlnaHQgc2V0dGluZyBpcyAnYXV0bycsIC5mYy1iZyBzdHJldGNoZXMgdG8gZmlsbCBoZWlnaHQgKi8KfQoKLmZjLXRpbWUtZ3JpZCB0YWJsZSB7IC8qIGRvbid0IHB1dCBvdXRlciBib3JkZXJzIG9uIHNsYXRzL2JnL2NvbnRlbnQvZXRjICovCglib3JkZXI6IDAgaGlkZGVuIHRyYW5zcGFyZW50Owp9CgouZmMtdGltZS1ncmlkID4gLmZjLWJnIHsKCXotaW5kZXg6IDE7Cn0KCi5mYy10aW1lLWdyaWQgLmZjLXNsYXRzLAouZmMtdGltZS1ncmlkID4gaHIgeyAvKiB0aGUgPGhyPiBBZ2VuZGFWaWV3IGluamVjdHMgd2hlbiBncmlkIGlzIHNob3J0ZXIgdGhhbiBzY3JvbGxlciAqLwoJcG9zaXRpb246IHJlbGF0aXZlOwoJei1pbmRleDogMjsKfQoKLmZjLXRpbWUtZ3JpZCAuZmMtY29udGVudC1jb2wgewoJcG9zaXRpb246IHJlbGF0aXZlOyAvKiBiZWNhdXNlIG5vdy1pbmRpY2F0b3IgbGl2ZXMgZGlyZWN0bHkgaW5zaWRlICovCn0KCi5mYy10aW1lLWdyaWQgLmZjLWNvbnRlbnQtc2tlbGV0b24gewoJcG9zaXRpb246IGFic29sdXRlOwoJei1pbmRleDogMzsKCXRvcDogMDsKCWxlZnQ6IDA7CglyaWdodDogMDsKfQoKLyogZGl2cyB3aXRoaW4gYSBjZWxsIHdpdGhpbiB0aGUgZmMtY29udGVudC1za2VsZXRvbiAqLwoKLmZjLXRpbWUtZ3JpZCAuZmMtYnVzaW5lc3MtY29udGFpbmVyIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXotaW5kZXg6IDE7Cn0KCi5mYy10aW1lLWdyaWQgLmZjLWJnZXZlbnQtY29udGFpbmVyIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXotaW5kZXg6IDI7Cn0KCi5mYy10aW1lLWdyaWQgLmZjLWhpZ2hsaWdodC1jb250YWluZXIgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJei1pbmRleDogMzsKfQoKLmZjLXRpbWUtZ3JpZCAuZmMtZXZlbnQtY29udGFpbmVyIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXotaW5kZXg6IDQ7Cn0KCi5mYy10aW1lLWdyaWQgLmZjLW5vdy1pbmRpY2F0b3ItbGluZSB7Cgl6LWluZGV4OiA1Owp9CgouZmMtdGltZS1ncmlkIC5mYy1oZWxwZXItY29udGFpbmVyIHsgLyogYWxzbyBpcyBmYy1ldmVudC1jb250YWluZXIgKi8KCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXotaW5kZXg6IDY7Cn0KCgovKiBUaW1lR3JpZCBTbGF0cyAobGluZXMgdGhhdCBydW4gaG9yaXpvbnRhbGx5KQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouZmMtdGltZS1ncmlkIC5mYy1zbGF0cyB0ZCB7CgloZWlnaHQ6IDEuNWVtOwoJYm9yZGVyLWJvdHRvbTogMDsgLyogZWFjaCBjZWxsIGlzIHJlc3BvbnNpYmxlIGZvciBpdHMgdG9wIGJvcmRlciAqLwp9CgouZmMtdGltZS1ncmlkIC5mYy1zbGF0cyAuZmMtbWlub3IgdGQgewoJYm9yZGVyLXRvcC1zdHlsZTogZG90dGVkOwp9CgouZmMtdGltZS1ncmlkIC5mYy1zbGF0cyAudWktd2lkZ2V0LWNvbnRlbnQgeyAvKiBmb3IganF1aSB0aGVtZSAqLwoJYmFja2dyb3VuZDogbm9uZTsgLyogc2VlIHRocm91Z2ggdG8gZmMtYmcgKi8KfQoKCi8qIFRpbWVHcmlkIEhpZ2hsaWdodGluZyBTbG90cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouZmMtdGltZS1ncmlkIC5mYy1oaWdobGlnaHQtY29udGFpbmVyIHsgLyogYSBkaXYgd2l0aGluIGEgY2VsbCB3aXRoaW4gdGhlIGZjLWhpZ2hsaWdodC1za2VsZXRvbiAqLwoJcG9zaXRpb246IHJlbGF0aXZlOyAvKiBzY29wZXMgdGhlIGxlZnQvcmlnaHQgb2YgdGhlIGZjLWhpZ2hsaWdodCB0byBiZSBpbiB0aGUgY29sdW1uICovCn0KCi5mYy10aW1lLWdyaWQgLmZjLWhpZ2hsaWdodCB7Cglwb3NpdGlvbjogYWJzb2x1dGU7CglsZWZ0OiAwOwoJcmlnaHQ6IDA7CgkvKiB0b3AgYW5kIGJvdHRvbSB3aWxsIGJlIGluIGJ5IEpTICovCn0KCgovKiBUaW1lR3JpZCBFdmVudCBDb250YWlubWVudAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouZmMtbHRyIC5mYy10aW1lLWdyaWQgLmZjLWV2ZW50LWNvbnRhaW5lciB7IC8qIHNwYWNlIG9uIHRoZSBzaWRlcyBvZiBldmVudHMgZm9yIExUUiAoZGVmYXVsdCkgKi8KCW1hcmdpbjogMCAyLjUlIDAgMnB4Owp9CgouZmMtcnRsIC5mYy10aW1lLWdyaWQgLmZjLWV2ZW50LWNvbnRhaW5lciB7IC8qIHNwYWNlIG9uIHRoZSBzaWRlcyBvZiBldmVudHMgZm9yIFJUTCAqLwoJbWFyZ2luOiAwIDJweCAwIDIuNSU7Cn0KCi5mYy10aW1lLWdyaWQgLmZjLWV2ZW50LAouZmMtdGltZS1ncmlkIC5mYy1iZ2V2ZW50IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXotaW5kZXg6IDE7IC8qIHNjb3BlIGlubmVyIHotaW5kZXgncyAqLwp9CgouZmMtdGltZS1ncmlkIC5mYy1iZ2V2ZW50IHsKCS8qIGJhY2tncm91bmQgZXZlbnRzIGFsd2F5cyBzcGFuIGZ1bGwgd2lkdGggKi8KCWxlZnQ6IDA7CglyaWdodDogMDsKfQoKCi8qIEdlbmVyaWMgVmVydGljYWwgRXZlbnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLmZjLXYtZXZlbnQuZmMtbm90LXN0YXJ0IHsgLyogZXZlbnRzIHRoYXQgYXJlIGNvbnRpbnVpbmcgZnJvbSBhbm90aGVyIGRheSAqLwoJLyogcmVwbGFjZSBzcGFjZSBtYWRlIGJ5IHRoZSB0b3AgYm9yZGVyIHdpdGggcGFkZGluZyAqLwoJYm9yZGVyLXRvcC13aWR0aDogMDsKCXBhZGRpbmctdG9wOiAxcHg7CgoJLyogcmVtb3ZlIHRvcCByb3VuZGVkIGNvcm5lcnMgKi8KCWJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKfQoKLmZjLXYtZXZlbnQuZmMtbm90LWVuZCB7CgkvKiByZXBsYWNlIHNwYWNlIG1hZGUgYnkgdGhlIHRvcCBib3JkZXIgd2l0aCBwYWRkaW5nICovCglib3JkZXItYm90dG9tLXdpZHRoOiAwOwoJcGFkZGluZy1ib3R0b206IDFweDsKCgkvKiByZW1vdmUgYm90dG9tIHJvdW5kZWQgY29ybmVycyAqLwoJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwp9CgoKLyogVGltZUdyaWQgRXZlbnQgU3R5bGluZwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCldlIHVzZSB0aGUgZnVsbCAiZmMtdGltZS1ncmlkLWV2ZW50IiBjbGFzcyBpbnN0ZWFkIG9mIHVzaW5nIGRlc2NlbmRhbnRzIGJlY2F1c2UgdGhlIGV2ZW50IHdvbid0CmJlIGEgZGVzY2VuZGFudCBvZiB0aGUgZ3JpZCB3aGVuIGl0IGlzIGJlaW5nIGRyYWdnZWQuCiovCgouZmMtdGltZS1ncmlkLWV2ZW50IHsKCW92ZXJmbG93OiBoaWRkZW47IC8qIGRvbid0IGxldCB0aGUgYmcgZmxvdyBvdmVyIHJvdW5kZWQgY29ybmVycyAqLwp9CgouZmMtdGltZS1ncmlkLWV2ZW50LmZjLXNlbGVjdGVkIHsKCS8qIG5lZWQgdG8gYWxsb3cgdG91Y2ggcmVzaXplcnMgdG8gZXh0ZW5kIG91dHNpZGUgZXZlbnQncyBib3VuZGluZyBib3ggKi8KCS8qIGNvbW1vbiBmYy1zZWxlY3RlZCBzdHlsZXMgaGlkZSB0aGUgZmMtYmcsIHNvIGRvbid0IG5lZWQgdGhpcyBhbnl3YXkgKi8KCW92ZXJmbG93OiB2aXNpYmxlOwp9CgouZmMtdGltZS1ncmlkLWV2ZW50LmZjLXNlbGVjdGVkIC5mYy1iZyB7CglkaXNwbGF5OiBub25lOyAvKiBoaWRlIHNlbWktd2hpdGUgYmFja2dyb3VuZCwgdG8gYXBwZWFyIGRhcmtlciAqLwp9CgouZmMtdGltZS1ncmlkLWV2ZW50IC5mYy1jb250ZW50IHsKCW92ZXJmbG93OiBoaWRkZW47IC8qIGZvciB3aGVuIC5mYy1zZWxlY3RlZCAqLwp9CgouZmMtdGltZS1ncmlkLWV2ZW50IC5mYy10aW1lLAouZmMtdGltZS1ncmlkLWV2ZW50IC5mYy10aXRsZSB7CglwYWRkaW5nOiAwIDFweDsKfQoKLmZjLXRpbWUtZ3JpZC1ldmVudCAuZmMtdGltZSB7Cglmb250LXNpemU6IC44NWVtOwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLyogc2hvcnQgbW9kZSwgd2hlcmUgdGltZSBhbmQgdGl0bGUgYXJlIG9uIHRoZSBzYW1lIGxpbmUgKi8KCi5mYy10aW1lLWdyaWQtZXZlbnQuZmMtc2hvcnQgLmZjLWNvbnRlbnQgewoJLyogZG9uJ3Qgd3JhcCB0byBzZWNvbmQgbGluZSAobm93IHRoYXQgY29udGVudHMgd2lsbCBiZSBpbmxpbmUpICovCgl3aGl0ZS1zcGFjZTogbm93cmFwOwp9CgouZmMtdGltZS1ncmlkLWV2ZW50LmZjLXNob3J0IC5mYy10aW1lLAouZmMtdGltZS1ncmlkLWV2ZW50LmZjLXNob3J0IC5mYy10aXRsZSB7CgkvKiBwdXQgdGhlIHRpbWUgYW5kIHRpdGxlIG9uIHRoZSBzYW1lIGxpbmUgKi8KCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXZlcnRpY2FsLWFsaWduOiB0b3A7Cn0KCi5mYy10aW1lLWdyaWQtZXZlbnQuZmMtc2hvcnQgLmZjLXRpbWUgc3BhbiB7CglkaXNwbGF5OiBub25lOyAvKiBkb24ndCBkaXNwbGF5IHRoZSBmdWxsIHRpbWUgdGV4dC4uLiAqLwp9CgouZmMtdGltZS1ncmlkLWV2ZW50LmZjLXNob3J0IC5mYy10aW1lOmJlZm9yZSB7Cgljb250ZW50OiBhdHRyKGRhdGEtc3RhcnQpOyAvKiAuLi5pbnN0ZWFkLCBkaXNwbGF5IG9ubHkgdGhlIHN0YXJ0IHRpbWUgKi8KfQoKLmZjLXRpbWUtZ3JpZC1ldmVudC5mYy1zaG9ydCAuZmMtdGltZTphZnRlciB7Cgljb250ZW50OiAiXDAwMEEwLVwwMDBBMCI7IC8qIHNlcGVyYXRlIHdpdGggYSBkYXNoLCB3cmFwcGVkIGluIG5ic3AncyAqLwp9CgouZmMtdGltZS1ncmlkLWV2ZW50LmZjLXNob3J0IC5mYy10aXRsZSB7Cglmb250LXNpemU6IC44NWVtOyAvKiBtYWtlIHRoZSB0aXRsZSB0ZXh0IHRoZSBzYW1lIHNpemUgYXMgdGhlIHRpbWUgKi8KCXBhZGRpbmc6IDA7IC8qIHVuZG8gcGFkZGluZyBmcm9tIGFib3ZlICovCn0KCi8qIHJlc2l6ZXIgKGN1cnNvciBkZXZpY2UpICovCgouZmMtdGltZS1ncmlkLWV2ZW50LmZjLWFsbG93LW1vdXNlLXJlc2l6ZSAuZmMtcmVzaXplciB7CglsZWZ0OiAwOwoJcmlnaHQ6IDA7Cglib3R0b206IDA7CgloZWlnaHQ6IDhweDsKCW92ZXJmbG93OiBoaWRkZW47CglsaW5lLWhlaWdodDogOHB4OwoJZm9udC1zaXplOiAxMXB4OwoJZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWN1cnNvcjogcy1yZXNpemU7Cn0KCi5mYy10aW1lLWdyaWQtZXZlbnQuZmMtYWxsb3ctbW91c2UtcmVzaXplIC5mYy1yZXNpemVyOmFmdGVyIHsKCWNvbnRlbnQ6ICI9IjsKfQoKLyogcmVzaXplciAodG91Y2ggZGV2aWNlKSAqLwoKLmZjLXRpbWUtZ3JpZC1ldmVudC5mYy1zZWxlY3RlZCAuZmMtcmVzaXplciB7CgkvKiAxMHgxMCBkb3QgKi8KCWJvcmRlci1yYWRpdXM6IDVweDsKCWJvcmRlci13aWR0aDogMXB4OwoJd2lkdGg6IDhweDsKCWhlaWdodDogOHB4OwoJYm9yZGVyLXN0eWxlOiBzb2xpZDsKCWJvcmRlci1jb2xvcjogaW5oZXJpdDsKCWJhY2tncm91bmQ6ICNmZmY7CgkvKiBob3Jpem9udGFsbHkgY2VudGVyICovCglsZWZ0OiA1MCU7CgltYXJnaW4tbGVmdDogLTVweDsKCS8qIGNlbnRlciBvbiB0aGUgYm90dG9tIGVkZ2UgKi8KCWJvdHRvbTogLTVweDsKfQoKCi8qIE5vdyBJbmRpY2F0b3IKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLmZjLXRpbWUtZ3JpZCAuZmMtbm93LWluZGljYXRvci1saW5lIHsKCWJvcmRlci10b3Atd2lkdGg6IDFweDsKCWxlZnQ6IDA7CglyaWdodDogMDsKfQoKLyogYXJyb3cgb24gYXhpcyAqLwoKLmZjLXRpbWUtZ3JpZCAuZmMtbm93LWluZGljYXRvci1hcnJvdyB7CgltYXJnaW4tdG9wOiAtNXB4OyAvKiB2ZXJ0aWNhbGx5IGNlbnRlciBvbiB0b3AgY29vcmRpbmF0ZSAqLwp9CgouZmMtbHRyIC5mYy10aW1lLWdyaWQgLmZjLW5vdy1pbmRpY2F0b3ItYXJyb3cgewoJbGVmdDogMDsKCS8qIHRyaWFuZ2xlIHBvaW50aW5nIHJpZ2h0Li4uICovCglib3JkZXItd2lkdGg6IDVweCAwIDVweCA2cHg7Cglib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50Owp9CgouZmMtcnRsIC5mYy10aW1lLWdyaWQgLmZjLW5vdy1pbmRpY2F0b3ItYXJyb3cgewoJcmlnaHQ6IDA7CgkvKiB0cmlhbmdsZSBwb2ludGluZyBsZWZ0Li4uICovCglib3JkZXItd2lkdGg6IDVweCA2cHggNXB4IDA7Cglib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50Owp9CgoKCi8qIExpc3QgVmlldwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgovKiBwb3NzaWJseSByZXVzYWJsZSAqLwoKLmZjLWV2ZW50LWRvdCB7CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgl3aWR0aDogMTBweDsKCWhlaWdodDogMTBweDsKCWJvcmRlci1yYWRpdXM6IDVweDsKfQoKLyogdmlldyB3cmFwcGVyICovCgouZmMtcnRsIC5mYy1saXN0LXZpZXcgewoJZGlyZWN0aW9uOiBydGw7IC8qIHVubGlrZSBjb3JlIHZpZXdzLCBsZXZlcmFnZSBicm93c2VyIFJUTCAqLwp9CgouZmMtbGlzdC12aWV3IHsKCWJvcmRlci13aWR0aDogMXB4OwoJYm9yZGVyLXN0eWxlOiBzb2xpZDsKfQoKLyogdGFibGUgcmVzZXRzICovCgouZmMgLmZjLWxpc3QtdGFibGUgewoJdGFibGUtbGF5b3V0OiBhdXRvOyAvKiBmb3Igc2hyaW5rd3JhcHBpbmcgY2VsbCBjb250ZW50ICovCn0KCi5mYy1saXN0LXRhYmxlIHRkIHsKCWJvcmRlci13aWR0aDogMXB4IDAgMDsKCXBhZGRpbmc6IDhweCAxNHB4Owp9CgouZmMtbGlzdC10YWJsZSB0cjpmaXJzdC1jaGlsZCB0ZCB7Cglib3JkZXItdG9wLXdpZHRoOiAwOwp9CgovKiBkYXkgaGVhZGluZ3Mgd2l0aCB0aGUgbGlzdCAqLwoKLmZjLWxpc3QtaGVhZGluZyB7Cglib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7Cn0KCi5mYy1saXN0LWhlYWRpbmcgdGQgewoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCi5mYy1sdHIgLmZjLWxpc3QtaGVhZGluZy1tYWluIHsgZmxvYXQ6IGxlZnQ7IH0KLmZjLWx0ciAuZmMtbGlzdC1oZWFkaW5nLWFsdCB7IGZsb2F0OiByaWdodDsgfQoKLmZjLXJ0bCAuZmMtbGlzdC1oZWFkaW5nLW1haW4geyBmbG9hdDogcmlnaHQ7IH0KLmZjLXJ0bCAuZmMtbGlzdC1oZWFkaW5nLWFsdCB7IGZsb2F0OiBsZWZ0OyB9CgovKiBldmVudCBsaXN0IGl0ZW1zICovCgouZmMtbGlzdC1pdGVtLmZjLWhhcy11cmwgewoJY3Vyc29yOiBwb2ludGVyOyAvKiB3aG9sZSByb3cgd2lsbCBiZSBjbGlja2FibGUgKi8KfQoKLmZjLWxpc3QtaXRlbTpob3ZlciB0ZCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1Owp9CgouZmMtbGlzdC1pdGVtLW1hcmtlciwKLmZjLWxpc3QtaXRlbS10aW1lIHsKCXdoaXRlLXNwYWNlOiBub3dyYXA7Cgl3aWR0aDogMXB4Owp9CgovKiBtYWtlIHRoZSBkb3QgY2xvc2VyIHRvIHRoZSBldmVudCB0aXRsZSAqLwouZmMtbHRyIC5mYy1saXN0LWl0ZW0tbWFya2VyIHsgcGFkZGluZy1yaWdodDogMDsgfQouZmMtcnRsIC5mYy1saXN0LWl0ZW0tbWFya2VyIHsgcGFkZGluZy1sZWZ0OiAwOyB9CgouZmMtbGlzdC1pdGVtLXRpdGxlIGEgewoJLyogZXZlcnkgZXZlbnQgdGl0bGUgY2VsbCBoYXMgYW4gPGE+IHRhZyAqLwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJY29sb3I6IGluaGVyaXQ7Cn0KCi5mYy1saXN0LWl0ZW0tdGl0bGUgYVtocmVmXTpob3ZlciB7CgkvKiBob3ZlciBlZmZlY3Qgb25seSBvbiB0aXRsZXMgd2l0aCBocmVmcyAqLwoJdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cn0KCi8qIG1lc3NhZ2Ugd2hlbiBubyBldmVudHMgKi8KCi5mYy1saXN0LWVtcHR5LXdyYXAyIHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXRvcDogMDsKCWxlZnQ6IDA7CglyaWdodDogMDsKCWJvdHRvbTogMDsKfQoKLmZjLWxpc3QtZW1wdHktd3JhcDEgewoJd2lkdGg6IDEwMCU7CgloZWlnaHQ6IDEwMCU7CglkaXNwbGF5OiB0YWJsZTsKfQoKLmZjLWxpc3QtZW1wdHkgewoJZGlzcGxheTogdGFibGUtY2VsbDsKCXZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5mYy11bnRoZW1lZCAuZmMtbGlzdC1lbXB0eSB7IC8qIHRoZW1lIHdpbGwgcHJvdmlkZSBvd24gYmFja2dyb3VuZCAqLwoJYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/fullcalendar.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIEZ1bGxDYWxlbmRhciB2My4zLjEKICogRG9jcyAmIExpY2Vuc2U6IGh0dHBzOi8vZnVsbGNhbGVuZGFyLmlvLwogKiAoYykgMjAxNyBBZGFtIFNoYXcKICovCgooZnVuY3Rpb24oZmFjdG9yeSkgewoJaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkgewoJCWRlZmluZShbICdqcXVlcnknLCAnbW9tZW50JyBdLCBmYWN0b3J5KTsKCX0KCWVsc2UgaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JykgeyAvLyBOb2RlL0NvbW1vbkpTCgkJbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoJ2pxdWVyeScpLCByZXF1aXJlKCdtb21lbnQnKSk7Cgl9CgllbHNlIHsKCQlmYWN0b3J5KGpRdWVyeSwgbW9tZW50KTsKCX0KfSkoZnVuY3Rpb24oJCwgbW9tZW50KSB7Cgo7OwoKdmFyIEZDID0gJC5mdWxsQ2FsZW5kYXIgPSB7Cgl2ZXJzaW9uOiAiMy4zLjEiLAoJLy8gV2hlbiBpbnRyb2R1Y2luZyBpbnRlcm5hbCBBUEkgaW5jb21wYXRpYmlsaXRpZXMgKHdoZXJlIGZ1bGxjYWxlbmRhciBwbHVnaW5zIHdvdWxkIGJyZWFrKSwKCS8vIHRoZSBtaW5vciB2ZXJzaW9uIG9mIHRoZSBjYWxlbmRhciBzaG91bGQgYmUgdXBwZWQgKGV4OiAyLjcuMiAtPiAyLjguMCkKCS8vIGFuZCB0aGUgYmVsb3cgaW50ZWdlciBzaG91bGQgYmUgaW5jcmVtZW50ZWQuCglpbnRlcm5hbEFwaVZlcnNpb246IDkKfTsKdmFyIGZjVmlld3MgPSBGQy52aWV3cyA9IHt9OwoKCiQuZm4uZnVsbENhbGVuZGFyID0gZnVuY3Rpb24ob3B0aW9ucykgewoJdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpOyAvLyBmb3IgYSBwb3NzaWJsZSBtZXRob2QgY2FsbAoJdmFyIHJlcyA9IHRoaXM7IC8vIHdoYXQgdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiAodGhpcyBqUXVlcnkgb2JqZWN0IGJ5IGRlZmF1bHQpCgoJdGhpcy5lYWNoKGZ1bmN0aW9uKGksIF9lbGVtZW50KSB7IC8vIGxvb3AgZWFjaCBET00gZWxlbWVudCBpbnZvbHZlZAoJCXZhciBlbGVtZW50ID0gJChfZWxlbWVudCk7CgkJdmFyIGNhbGVuZGFyID0gZWxlbWVudC5kYXRhKCdmdWxsQ2FsZW5kYXInKTsgLy8gZ2V0IHRoZSBleGlzdGluZyBjYWxlbmRhciBvYmplY3QgKGlmIGFueSkKCQl2YXIgc2luZ2xlUmVzOyAvLyB0aGUgcmV0dXJuZWQgdmFsdWUgb2YgdGhpcyBzaW5nbGUgbWV0aG9kIGNhbGwKCgkJLy8gYSBtZXRob2QgY2FsbAoJCWlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ3N0cmluZycpIHsKCQkJaWYgKGNhbGVuZGFyICYmICQuaXNGdW5jdGlvbihjYWxlbmRhcltvcHRpb25zXSkpIHsKCQkJCXNpbmdsZVJlcyA9IGNhbGVuZGFyW29wdGlvbnNdLmFwcGx5KGNhbGVuZGFyLCBhcmdzKTsKCQkJCWlmICghaSkgewoJCQkJCXJlcyA9IHNpbmdsZVJlczsgLy8gcmVjb3JkIHRoZSBmaXJzdCBtZXRob2QgY2FsbCByZXN1bHQKCQkJCX0KCQkJCWlmIChvcHRpb25zID09PSAnZGVzdHJveScpIHsgLy8gZm9yIHRoZSBkZXN0cm95IG1ldGhvZCwgbXVzdCByZW1vdmUgQ2FsZW5kYXIgb2JqZWN0IGRhdGEKCQkJCQllbGVtZW50LnJlbW92ZURhdGEoJ2Z1bGxDYWxlbmRhcicpOwoJCQkJfQoJCQl9CgkJfQoJCS8vIGEgbmV3IGNhbGVuZGFyIGluaXRpYWxpemF0aW9uCgkJZWxzZSBpZiAoIWNhbGVuZGFyKSB7IC8vIGRvbid0IGluaXRpYWxpemUgdHdpY2UKCQkJY2FsZW5kYXIgPSBuZXcgQ2FsZW5kYXIoZWxlbWVudCwgb3B0aW9ucyk7CgkJCWVsZW1lbnQuZGF0YSgnZnVsbENhbGVuZGFyJywgY2FsZW5kYXIpOwoJCQljYWxlbmRhci5yZW5kZXIoKTsKCQl9Cgl9KTsKCglyZXR1cm4gcmVzOwp9OwoKCnZhciBjb21wbGV4T3B0aW9ucyA9IFsgLy8gbmFtZXMgb2Ygb3B0aW9ucyB0aGF0IGFyZSBvYmplY3RzIHdob3NlIHByb3BlcnRpZXMgc2hvdWxkIGJlIGNvbWJpbmVkCgknaGVhZGVyJywKCSdmb290ZXInLAoJJ2J1dHRvblRleHQnLAoJJ2J1dHRvbkljb25zJywKCSd0aGVtZUJ1dHRvbkljb25zJwpdOwoKCi8vIE1lcmdlcyBhbiBhcnJheSBvZiBvcHRpb24gb2JqZWN0cyBpbnRvIGEgc2luZ2xlIG9iamVjdApmdW5jdGlvbiBtZXJnZU9wdGlvbnMob3B0aW9uT2JqcykgewoJcmV0dXJuIG1lcmdlUHJvcHMob3B0aW9uT2JqcywgY29tcGxleE9wdGlvbnMpOwp9Cgo7OwoKLy8gZXhwb3J0cwpGQy5pbnRlcnNlY3RSYW5nZXMgPSBpbnRlcnNlY3RSYW5nZXM7CkZDLmFwcGx5QWxsID0gYXBwbHlBbGw7CkZDLmRlYm91bmNlID0gZGVib3VuY2U7CkZDLmlzSW50ID0gaXNJbnQ7CkZDLmh0bWxFc2NhcGUgPSBodG1sRXNjYXBlOwpGQy5jc3NUb1N0ciA9IGNzc1RvU3RyOwpGQy5wcm94eSA9IHByb3h5OwpGQy5jYXBpdGFsaXNlRmlyc3RMZXR0ZXIgPSBjYXBpdGFsaXNlRmlyc3RMZXR0ZXI7CgoKLyogRnVsbENhbGVuZGFyLXNwZWNpZmljIERPTSBVdGlsaXRpZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKLy8gR2l2ZW4gdGhlIHNjcm9sbGJhciB3aWR0aHMgb2Ygc29tZSBvdGhlciBjb250YWluZXIsIGNyZWF0ZSBib3JkZXJzL21hcmdpbnMgb24gcm93RWxzIGluIG9yZGVyIHRvIG1hdGNoIHRoZSBsZWZ0Ci8vIGFuZCByaWdodCBzcGFjZSB0aGF0IHdhcyBvZmZzZXQgYnkgdGhlIHNjcm9sbGJhcnMuIEEgMS1waXhlbCBib3JkZXIgZmlyc3QsIHRoZW4gbWFyZ2luIGJleW9uZCB0aGF0LgpmdW5jdGlvbiBjb21wZW5zYXRlU2Nyb2xsKHJvd0Vscywgc2Nyb2xsYmFyV2lkdGhzKSB7CglpZiAoc2Nyb2xsYmFyV2lkdGhzLmxlZnQpIHsKCQlyb3dFbHMuY3NzKHsKCQkJJ2JvcmRlci1sZWZ0LXdpZHRoJzogMSwKCQkJJ21hcmdpbi1sZWZ0Jzogc2Nyb2xsYmFyV2lkdGhzLmxlZnQgLSAxCgkJfSk7Cgl9CglpZiAoc2Nyb2xsYmFyV2lkdGhzLnJpZ2h0KSB7CgkJcm93RWxzLmNzcyh7CgkJCSdib3JkZXItcmlnaHQtd2lkdGgnOiAxLAoJCQknbWFyZ2luLXJpZ2h0Jzogc2Nyb2xsYmFyV2lkdGhzLnJpZ2h0IC0gMQoJCX0pOwoJfQp9CgoKLy8gVW5kb2VzIGNvbXBlbnNhdGVTY3JvbGwgYW5kIHJlc3RvcmVzIGFsbCBib3JkZXJzL21hcmdpbnMKZnVuY3Rpb24gdW5jb21wZW5zYXRlU2Nyb2xsKHJvd0VscykgewoJcm93RWxzLmNzcyh7CgkJJ21hcmdpbi1sZWZ0JzogJycsCgkJJ21hcmdpbi1yaWdodCc6ICcnLAoJCSdib3JkZXItbGVmdC13aWR0aCc6ICcnLAoJCSdib3JkZXItcmlnaHQtd2lkdGgnOiAnJwoJfSk7Cn0KCgovLyBNYWtlIHRoZSBtb3VzZSBjdXJzb3IgZXhwcmVzcyB0aGF0IGFuIGV2ZW50IGlzIG5vdCBhbGxvd2VkIGluIHRoZSBjdXJyZW50IGFyZWEKZnVuY3Rpb24gZGlzYWJsZUN1cnNvcigpIHsKCSQoJ2JvZHknKS5hZGRDbGFzcygnZmMtbm90LWFsbG93ZWQnKTsKfQoKCi8vIFJldHVybnMgdGhlIG1vdXNlIGN1cnNvciB0byBpdHMgb3JpZ2luYWwgbG9vawpmdW5jdGlvbiBlbmFibGVDdXJzb3IoKSB7CgkkKCdib2R5JykucmVtb3ZlQ2xhc3MoJ2ZjLW5vdC1hbGxvd2VkJyk7Cn0KCgovLyBHaXZlbiBhIHRvdGFsIGF2YWlsYWJsZSBoZWlnaHQgdG8gZmlsbCwgaGF2ZSBgZWxzYCAoZXNzZW50aWFsbHkgY2hpbGQgcm93cykgZXhwYW5kIHRvIGFjY29tb2RhdGUuCi8vIEJ5IGRlZmF1bHQsIGFsbCBlbGVtZW50cyB0aGF0IGFyZSBzaG9ydGVyIHRoYW4gdGhlIHJlY29tbWVuZGVkIGhlaWdodCBhcmUgZXhwYW5kZWQgdW5pZm9ybWx5LCBub3QgY29uc2lkZXJpbmcKLy8gYW55IG90aGVyIGVscyB0aGF0IGFyZSBhbHJlYWR5IHRvbyB0YWxsLiBpZiBgc2hvdWxkUmVkaXN0cmlidXRlYCBpcyBvbiwgaXQgY29uc2lkZXJzIHRoZXNlIHRhbGwgcm93cyBhbmQgCi8vIHJlZHVjZXMgdGhlIGF2YWlsYWJsZSBoZWlnaHQuCmZ1bmN0aW9uIGRpc3RyaWJ1dGVIZWlnaHQoZWxzLCBhdmFpbGFibGVIZWlnaHQsIHNob3VsZFJlZGlzdHJpYnV0ZSkgewoKCS8vICpGTE9PUklORyBOT1RFKjogd2UgZmxvb3IgaW4gY2VydGFpbiBwbGFjZXMgYmVjYXVzZSB6b29tIGNhbiBnaXZlIGluYWNjdXJhdGUgZmxvYXRpbmctcG9pbnQgZGltZW5zaW9ucywKCS8vIGFuZCBpdCBpcyBiZXR0ZXIgdG8gYmUgc2hvcnRlciB0aGFuIHRhbGxlciwgdG8gYXZvaWQgY3JlYXRpbmcgdW5uZWNlc3Nhcnkgc2Nyb2xsYmFycy4KCgl2YXIgbWluT2Zmc2V0MSA9IE1hdGguZmxvb3IoYXZhaWxhYmxlSGVpZ2h0IC8gZWxzLmxlbmd0aCk7IC8vIGZvciBub24tbGFzdCBlbGVtZW50Cgl2YXIgbWluT2Zmc2V0MiA9IE1hdGguZmxvb3IoYXZhaWxhYmxlSGVpZ2h0IC0gbWluT2Zmc2V0MSAqIChlbHMubGVuZ3RoIC0gMSkpOyAvLyBmb3IgbGFzdCBlbGVtZW50ICpGTE9PUklORyBOT1RFKgoJdmFyIGZsZXhFbHMgPSBbXTsgLy8gZWxlbWVudHMgdGhhdCBhcmUgYWxsb3dlZCB0byBleHBhbmQuIGFycmF5IG9mIERPTSBub2RlcwoJdmFyIGZsZXhPZmZzZXRzID0gW107IC8vIGFtb3VudCBvZiB2ZXJ0aWNhbCBzcGFjZSBpdCB0YWtlcyB1cAoJdmFyIGZsZXhIZWlnaHRzID0gW107IC8vIGFjdHVhbCBjc3MgaGVpZ2h0Cgl2YXIgdXNlZEhlaWdodCA9IDA7CgoJdW5kaXN0cmlidXRlSGVpZ2h0KGVscyk7IC8vIGdpdmUgYWxsIGVsZW1lbnRzIHRoZWlyIG5hdHVyYWwgaGVpZ2h0CgoJLy8gZmluZCBlbGVtZW50cyB0aGF0IGFyZSBiZWxvdyB0aGUgcmVjb21tZW5kZWQgaGVpZ2h0IChleHBhbmRhYmxlKS4KCS8vIGltcG9ydGFudCB0byBxdWVyeSBmb3IgaGVpZ2h0cyBpbiBhIHNpbmdsZSBmaXJzdCBwYXNzICh0byBhdm9pZCByZWZsb3cgb3NjaWxsYXRpb24pLgoJZWxzLmVhY2goZnVuY3Rpb24oaSwgZWwpIHsKCQl2YXIgbWluT2Zmc2V0ID0gaSA9PT0gZWxzLmxlbmd0aCAtIDEgPyBtaW5PZmZzZXQyIDogbWluT2Zmc2V0MTsKCQl2YXIgbmF0dXJhbE9mZnNldCA9ICQoZWwpLm91dGVySGVpZ2h0KHRydWUpOwoKCQlpZiAobmF0dXJhbE9mZnNldCA8IG1pbk9mZnNldCkgewoJCQlmbGV4RWxzLnB1c2goZWwpOwoJCQlmbGV4T2Zmc2V0cy5wdXNoKG5hdHVyYWxPZmZzZXQpOwoJCQlmbGV4SGVpZ2h0cy5wdXNoKCQoZWwpLmhlaWdodCgpKTsKCQl9CgkJZWxzZSB7CgkJCS8vIHRoaXMgZWxlbWVudCBzdHJldGNoZXMgcGFzdCByZWNvbW1lbmRlZCBoZWlnaHQgKG5vbi1leHBhbmRhYmxlKS4gbWFyayB0aGUgc3BhY2UgYXMgb2NjdXBpZWQuCgkJCXVzZWRIZWlnaHQgKz0gbmF0dXJhbE9mZnNldDsKCQl9Cgl9KTsKCgkvLyByZWFkanVzdCB0aGUgcmVjb21tZW5kZWQgaGVpZ2h0IHRvIG9ubHkgY29uc2lkZXIgdGhlIGhlaWdodCBhdmFpbGFibGUgdG8gbm9uLW1heGVkLW91dCByb3dzLgoJaWYgKHNob3VsZFJlZGlzdHJpYnV0ZSkgewoJCWF2YWlsYWJsZUhlaWdodCAtPSB1c2VkSGVpZ2h0OwoJCW1pbk9mZnNldDEgPSBNYXRoLmZsb29yKGF2YWlsYWJsZUhlaWdodCAvIGZsZXhFbHMubGVuZ3RoKTsKCQltaW5PZmZzZXQyID0gTWF0aC5mbG9vcihhdmFpbGFibGVIZWlnaHQgLSBtaW5PZmZzZXQxICogKGZsZXhFbHMubGVuZ3RoIC0gMSkpOyAvLyAqRkxPT1JJTkcgTk9URSoKCX0KCgkvLyBhc3NpZ24gaGVpZ2h0cyB0byBhbGwgZXhwYW5kYWJsZSBlbGVtZW50cwoJJChmbGV4RWxzKS5lYWNoKGZ1bmN0aW9uKGksIGVsKSB7CgkJdmFyIG1pbk9mZnNldCA9IGkgPT09IGZsZXhFbHMubGVuZ3RoIC0gMSA/IG1pbk9mZnNldDIgOiBtaW5PZmZzZXQxOwoJCXZhciBuYXR1cmFsT2Zmc2V0ID0gZmxleE9mZnNldHNbaV07CgkJdmFyIG5hdHVyYWxIZWlnaHQgPSBmbGV4SGVpZ2h0c1tpXTsKCQl2YXIgbmV3SGVpZ2h0ID0gbWluT2Zmc2V0IC0gKG5hdHVyYWxPZmZzZXQgLSBuYXR1cmFsSGVpZ2h0KTsgLy8gc3VidHJhY3QgdGhlIG1hcmdpbi9wYWRkaW5nCgoJCWlmIChuYXR1cmFsT2Zmc2V0IDwgbWluT2Zmc2V0KSB7IC8vIHdlIGNoZWNrIHRoaXMgYWdhaW4gYmVjYXVzZSByZWRpc3RyaWJ1dGlvbiBtaWdodCBoYXZlIGNoYW5nZWQgdGhpbmdzCgkJCSQoZWwpLmhlaWdodChuZXdIZWlnaHQpOwoJCX0KCX0pOwp9CgoKLy8gVW5kb2VzIGRpc3RydWJ1dGVIZWlnaHQsIHJlc3RvcmluZyBhbGwgZWxzIHRvIHRoZWlyIG5hdHVyYWwgaGVpZ2h0CmZ1bmN0aW9uIHVuZGlzdHJpYnV0ZUhlaWdodChlbHMpIHsKCWVscy5oZWlnaHQoJycpOwp9CgoKLy8gR2l2ZW4gYGVsc2AsIGEgalF1ZXJ5IHNldCBvZiA8dGQ+IGNlbGxzLCBmaW5kIHRoZSBjZWxsIHdpdGggdGhlIGxhcmdlc3QgbmF0dXJhbCB3aWR0aCBhbmQgc2V0IHRoZSB3aWR0aHMgb2YgYWxsIHRoZQovLyBjZWxscyB0byBiZSB0aGF0IHdpZHRoLgovLyBQUkVSRVFVSVNJVEU6IGlmIHlvdSB3YW50IGEgY2VsbCB0byB0YWtlIHVwIHdpZHRoLCBpdCBuZWVkcyB0byBoYXZlIGEgc2luZ2xlIGlubmVyIGVsZW1lbnQgdy8gZGlzcGxheTppbmxpbmUKZnVuY3Rpb24gbWF0Y2hDZWxsV2lkdGhzKGVscykgewoJdmFyIG1heElubmVyV2lkdGggPSAwOwoKCWVscy5maW5kKCc+IConKS5lYWNoKGZ1bmN0aW9uKGksIGlubmVyRWwpIHsKCQl2YXIgaW5uZXJXaWR0aCA9ICQoaW5uZXJFbCkub3V0ZXJXaWR0aCgpOwoJCWlmIChpbm5lcldpZHRoID4gbWF4SW5uZXJXaWR0aCkgewoJCQltYXhJbm5lcldpZHRoID0gaW5uZXJXaWR0aDsKCQl9Cgl9KTsKCgltYXhJbm5lcldpZHRoKys7IC8vIHNvbWV0aW1lcyBub3QgYWNjdXJhdGUgb2Ygd2lkdGggdGhlIHRleHQgbmVlZHMgdG8gc3RheSBvbiBvbmUgbGluZS4gaW5zdXJhbmNlCgoJZWxzLndpZHRoKG1heElubmVyV2lkdGgpOwoKCXJldHVybiBtYXhJbm5lcldpZHRoOwp9CgoKLy8gR2l2ZW4gb25lIGVsZW1lbnQgdGhhdCByZXNpZGVzIGluc2lkZSBhbm90aGVyLAovLyBTdWJ0cmFjdHMgdGhlIGhlaWdodCBvZiB0aGUgaW5uZXIgZWxlbWVudCBmcm9tIHRoZSBvdXRlciBlbGVtZW50LgpmdW5jdGlvbiBzdWJ0cmFjdElubmVyRWxIZWlnaHQob3V0ZXJFbCwgaW5uZXJFbCkgewoJdmFyIGJvdGggPSBvdXRlckVsLmFkZChpbm5lckVsKTsKCXZhciBkaWZmOwoKCS8vIGVmZmluJyBJRTgvOS8xMC8xMSBzb21ldGltZXMgcmV0dXJucyAwIGZvciBkaW1lbnNpb25zLiB0aGlzIHdlaXJkIGhhY2sgd2FzIHRoZSBvbmx5IHRoaW5nIHRoYXQgd29ya2VkCglib3RoLmNzcyh7CgkJcG9zaXRpb246ICdyZWxhdGl2ZScsIC8vIGNhdXNlIGEgcmVmbG93LCB3aGljaCB3aWxsIGZvcmNlIGZyZXNoIGRpbWVuc2lvbiByZWNhbGN1bGF0aW9uCgkJbGVmdDogLTEgLy8gZW5zdXJlIHJlZmxvdyBpbiBjYXNlIHRoZSBlbCB3YXMgYWxyZWFkeSByZWxhdGl2ZS4gbmVnYXRpdmUgaXMgbGVzcyBsaWtlbHkgdG8gY2F1c2UgbmV3IHNjcm9sbAoJfSk7CglkaWZmID0gb3V0ZXJFbC5vdXRlckhlaWdodCgpIC0gaW5uZXJFbC5vdXRlckhlaWdodCgpOyAvLyBncmFiIHRoZSBkaW1lbnNpb25zCglib3RoLmNzcyh7IHBvc2l0aW9uOiAnJywgbGVmdDogJycgfSk7IC8vIHVuZG8gaGFjawoKCXJldHVybiBkaWZmOwp9CgoKLyogRWxlbWVudCBHZW9tIFV0aWxpdGllcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCkZDLmdldE91dGVyUmVjdCA9IGdldE91dGVyUmVjdDsKRkMuZ2V0Q2xpZW50UmVjdCA9IGdldENsaWVudFJlY3Q7CkZDLmdldENvbnRlbnRSZWN0ID0gZ2V0Q29udGVudFJlY3Q7CkZDLmdldFNjcm9sbGJhcldpZHRocyA9IGdldFNjcm9sbGJhcldpZHRoczsKCgovLyBib3Jyb3dlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvanF1ZXJ5LXVpL2Jsb2IvMS4xMS4wL3VpL2NvcmUuanMjTDUxCmZ1bmN0aW9uIGdldFNjcm9sbFBhcmVudChlbCkgewoJdmFyIHBvc2l0aW9uID0gZWwuY3NzKCdwb3NpdGlvbicpLAoJCXNjcm9sbFBhcmVudCA9IGVsLnBhcmVudHMoKS5maWx0ZXIoZnVuY3Rpb24oKSB7CgkJCXZhciBwYXJlbnQgPSAkKHRoaXMpOwoJCQlyZXR1cm4gKC8oYXV0b3xzY3JvbGwpLykudGVzdCgKCQkJCXBhcmVudC5jc3MoJ292ZXJmbG93JykgKyBwYXJlbnQuY3NzKCdvdmVyZmxvdy15JykgKyBwYXJlbnQuY3NzKCdvdmVyZmxvdy14JykKCQkJKTsKCQl9KS5lcSgwKTsKCglyZXR1cm4gcG9zaXRpb24gPT09ICdmaXhlZCcgfHwgIXNjcm9sbFBhcmVudC5sZW5ndGggPyAkKGVsWzBdLm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQpIDogc2Nyb2xsUGFyZW50Owp9CgoKLy8gUXVlcmllcyB0aGUgb3V0ZXIgYm91bmRpbmcgYXJlYSBvZiBhIGpRdWVyeSBlbGVtZW50LgovLyBSZXR1cm5zIGEgcmVjdGFuZ2xlIHdpdGggYWJzb2x1dGUgY29vcmRpbmF0ZXM6IGxlZnQsIHJpZ2h0IChleGNsdXNpdmUpLCB0b3AsIGJvdHRvbSAoZXhjbHVzaXZlKS4KLy8gT3JpZ2luIGlzIG9wdGlvbmFsLgpmdW5jdGlvbiBnZXRPdXRlclJlY3QoZWwsIG9yaWdpbikgewoJdmFyIG9mZnNldCA9IGVsLm9mZnNldCgpOwoJdmFyIGxlZnQgPSBvZmZzZXQubGVmdCAtIChvcmlnaW4gPyBvcmlnaW4ubGVmdCA6IDApOwoJdmFyIHRvcCA9IG9mZnNldC50b3AgLSAob3JpZ2luID8gb3JpZ2luLnRvcCA6IDApOwoKCXJldHVybiB7CgkJbGVmdDogbGVmdCwKCQlyaWdodDogbGVmdCArIGVsLm91dGVyV2lkdGgoKSwKCQl0b3A6IHRvcCwKCQlib3R0b206IHRvcCArIGVsLm91dGVySGVpZ2h0KCkKCX07Cn0KCgovLyBRdWVyaWVzIHRoZSBhcmVhIHdpdGhpbiB0aGUgbWFyZ2luL2JvcmRlci9zY3JvbGxiYXJzIG9mIGEgalF1ZXJ5IGVsZW1lbnQuIERvZXMgbm90IGdvIHdpdGhpbiB0aGUgcGFkZGluZy4KLy8gUmV0dXJucyBhIHJlY3RhbmdsZSB3aXRoIGFic29sdXRlIGNvb3JkaW5hdGVzOiBsZWZ0LCByaWdodCAoZXhjbHVzaXZlKSwgdG9wLCBib3R0b20gKGV4Y2x1c2l2ZSkuCi8vIE9yaWdpbiBpcyBvcHRpb25hbC4KLy8gV0FSTklORzogZ2l2ZW4gZWxlbWVudCBjYW4ndCBoYXZlIGJvcmRlcnMKLy8gTk9URTogc2hvdWxkIHVzZSBjbGllbnRMZWZ0L2NsaWVudFRvcCwgYnV0IHZlcnkgdW5yZWxpYWJsZSBjcm9zcy1icm93c2VyLgpmdW5jdGlvbiBnZXRDbGllbnRSZWN0KGVsLCBvcmlnaW4pIHsKCXZhciBvZmZzZXQgPSBlbC5vZmZzZXQoKTsKCXZhciBzY3JvbGxiYXJXaWR0aHMgPSBnZXRTY3JvbGxiYXJXaWR0aHMoZWwpOwoJdmFyIGxlZnQgPSBvZmZzZXQubGVmdCArIGdldENzc0Zsb2F0KGVsLCAnYm9yZGVyLWxlZnQtd2lkdGgnKSArIHNjcm9sbGJhcldpZHRocy5sZWZ0IC0gKG9yaWdpbiA/IG9yaWdpbi5sZWZ0IDogMCk7Cgl2YXIgdG9wID0gb2Zmc2V0LnRvcCArIGdldENzc0Zsb2F0KGVsLCAnYm9yZGVyLXRvcC13aWR0aCcpICsgc2Nyb2xsYmFyV2lkdGhzLnRvcCAtIChvcmlnaW4gPyBvcmlnaW4udG9wIDogMCk7CgoJcmV0dXJuIHsKCQlsZWZ0OiBsZWZ0LAoJCXJpZ2h0OiBsZWZ0ICsgZWxbMF0uY2xpZW50V2lkdGgsIC8vIGNsaWVudFdpZHRoIGluY2x1ZGVzIHBhZGRpbmcgYnV0IE5PVCBzY3JvbGxiYXJzCgkJdG9wOiB0b3AsCgkJYm90dG9tOiB0b3AgKyBlbFswXS5jbGllbnRIZWlnaHQgLy8gY2xpZW50SGVpZ2h0IGluY2x1ZGVzIHBhZGRpbmcgYnV0IE5PVCBzY3JvbGxiYXJzCgl9Owp9CgoKLy8gUXVlcmllcyB0aGUgYXJlYSB3aXRoaW4gdGhlIG1hcmdpbi9ib3JkZXIvcGFkZGluZyBvZiBhIGpRdWVyeSBlbGVtZW50LiBBc3N1bWVkIG5vdCB0byBoYXZlIHNjcm9sbGJhcnMuCi8vIFJldHVybnMgYSByZWN0YW5nbGUgd2l0aCBhYnNvbHV0ZSBjb29yZGluYXRlczogbGVmdCwgcmlnaHQgKGV4Y2x1c2l2ZSksIHRvcCwgYm90dG9tIChleGNsdXNpdmUpLgovLyBPcmlnaW4gaXMgb3B0aW9uYWwuCmZ1bmN0aW9uIGdldENvbnRlbnRSZWN0KGVsLCBvcmlnaW4pIHsKCXZhciBvZmZzZXQgPSBlbC5vZmZzZXQoKTsgLy8ganVzdCBvdXRzaWRlIG9mIGJvcmRlciwgbWFyZ2luIG5vdCBpbmNsdWRlZAoJdmFyIGxlZnQgPSBvZmZzZXQubGVmdCArIGdldENzc0Zsb2F0KGVsLCAnYm9yZGVyLWxlZnQtd2lkdGgnKSArIGdldENzc0Zsb2F0KGVsLCAncGFkZGluZy1sZWZ0JykgLQoJCShvcmlnaW4gPyBvcmlnaW4ubGVmdCA6IDApOwoJdmFyIHRvcCA9IG9mZnNldC50b3AgKyBnZXRDc3NGbG9hdChlbCwgJ2JvcmRlci10b3Atd2lkdGgnKSArIGdldENzc0Zsb2F0KGVsLCAncGFkZGluZy10b3AnKSAtCgkJKG9yaWdpbiA/IG9yaWdpbi50b3AgOiAwKTsKCglyZXR1cm4gewoJCWxlZnQ6IGxlZnQsCgkJcmlnaHQ6IGxlZnQgKyBlbC53aWR0aCgpLAoJCXRvcDogdG9wLAoJCWJvdHRvbTogdG9wICsgZWwuaGVpZ2h0KCkKCX07Cn0KCgovLyBSZXR1cm5zIHRoZSBjb21wdXRlZCBsZWZ0L3JpZ2h0L3RvcC9ib3R0b20gc2Nyb2xsYmFyIHdpZHRocyBmb3IgdGhlIGdpdmVuIGpRdWVyeSBlbGVtZW50LgovLyBXQVJOSU5HOiBnaXZlbiBlbGVtZW50IGNhbid0IGhhdmUgYm9yZGVycyAod2hpY2ggd2lsbCBjYXVzZSBvZmZzZXRXaWR0aC9vZmZzZXRIZWlnaHQgdG8gYmUgbGFyZ2VyKS4KLy8gTk9URTogc2hvdWxkIHVzZSBjbGllbnRMZWZ0L2NsaWVudFRvcCwgYnV0IHZlcnkgdW5yZWxpYWJsZSBjcm9zcy1icm93c2VyLgpmdW5jdGlvbiBnZXRTY3JvbGxiYXJXaWR0aHMoZWwpIHsKCXZhciBsZWZ0UmlnaHRXaWR0aCA9IGVsWzBdLm9mZnNldFdpZHRoIC0gZWxbMF0uY2xpZW50V2lkdGg7Cgl2YXIgYm90dG9tV2lkdGggPSBlbFswXS5vZmZzZXRIZWlnaHQgLSBlbFswXS5jbGllbnRIZWlnaHQ7Cgl2YXIgd2lkdGhzOwoKCWxlZnRSaWdodFdpZHRoID0gc2FuaXRpemVTY3JvbGxiYXJXaWR0aChsZWZ0UmlnaHRXaWR0aCk7Cglib3R0b21XaWR0aCA9IHNhbml0aXplU2Nyb2xsYmFyV2lkdGgoYm90dG9tV2lkdGgpOwoKCXdpZHRocyA9IHsgbGVmdDogMCwgcmlnaHQ6IDAsIHRvcDogMCwgYm90dG9tOiBib3R0b21XaWR0aCB9OwoKCWlmIChnZXRJc0xlZnRSdGxTY3JvbGxiYXJzKCkgJiYgZWwuY3NzKCdkaXJlY3Rpb24nKSA9PSAncnRsJykgeyAvLyBpcyB0aGUgc2Nyb2xsYmFyIG9uIHRoZSBsZWZ0IHNpZGU/CgkJd2lkdGhzLmxlZnQgPSBsZWZ0UmlnaHRXaWR0aDsKCX0KCWVsc2UgewoJCXdpZHRocy5yaWdodCA9IGxlZnRSaWdodFdpZHRoOwoJfQoKCXJldHVybiB3aWR0aHM7Cn0KCgovLyBUaGUgc2Nyb2xsYmFyIHdpZHRoIGNvbXB1dGF0aW9ucyBpbiBnZXRTY3JvbGxiYXJXaWR0aHMgYXJlIHNvbWV0aW1lcyBmbGF3ZWQgd2hlbiBpdCBjb21lcyB0bwovLyByZXRpbmEgZGlzcGxheXMsIHJvdW5kaW5nLCBhbmQgSUUxMS4gTWFzc2FnZSB0aGVtIGludG8gYSB1c2FibGUgdmFsdWUuCmZ1bmN0aW9uIHNhbml0aXplU2Nyb2xsYmFyV2lkdGgod2lkdGgpIHsKCXdpZHRoID0gTWF0aC5tYXgoMCwgd2lkdGgpOyAvLyBubyBuZWdhdGl2ZXMKCXdpZHRoID0gTWF0aC5yb3VuZCh3aWR0aCk7CglyZXR1cm4gd2lkdGg7Cn0KCgovLyBMb2dpYyBmb3IgZGV0ZXJtaW5pbmcgaWYsIHdoZW4gdGhlIGVsZW1lbnQgaXMgcmlnaHQtdG8tbGVmdCwgdGhlIHNjcm9sbGJhciBhcHBlYXJzIG9uIHRoZSBsZWZ0IHNpZGUKCnZhciBfaXNMZWZ0UnRsU2Nyb2xsYmFycyA9IG51bGw7CgpmdW5jdGlvbiBnZXRJc0xlZnRSdGxTY3JvbGxiYXJzKCkgeyAvLyByZXNwb25zaWJsZSBmb3IgY2FjaGluZyB0aGUgY29tcHV0YXRpb24KCWlmIChfaXNMZWZ0UnRsU2Nyb2xsYmFycyA9PT0gbnVsbCkgewoJCV9pc0xlZnRSdGxTY3JvbGxiYXJzID0gY29tcHV0ZUlzTGVmdFJ0bFNjcm9sbGJhcnMoKTsKCX0KCXJldHVybiBfaXNMZWZ0UnRsU2Nyb2xsYmFyczsKfQoKZnVuY3Rpb24gY29tcHV0ZUlzTGVmdFJ0bFNjcm9sbGJhcnMoKSB7IC8vIGNyZWF0ZXMgYW4gb2Zmc2NyZWVuIHRlc3QgZWxlbWVudCwgdGhlbiByZW1vdmVzIGl0Cgl2YXIgZWwgPSAkKCc8ZGl2PjxkaXYvPjwvZGl2PicpCgkJLmNzcyh7CgkJCXBvc2l0aW9uOiAnYWJzb2x1dGUnLAoJCQl0b3A6IC0xMDAwLAoJCQlsZWZ0OiAwLAoJCQlib3JkZXI6IDAsCgkJCXBhZGRpbmc6IDAsCgkJCW92ZXJmbG93OiAnc2Nyb2xsJywKCQkJZGlyZWN0aW9uOiAncnRsJwoJCX0pCgkJLmFwcGVuZFRvKCdib2R5Jyk7Cgl2YXIgaW5uZXJFbCA9IGVsLmNoaWxkcmVuKCk7Cgl2YXIgcmVzID0gaW5uZXJFbC5vZmZzZXQoKS5sZWZ0ID4gZWwub2Zmc2V0KCkubGVmdDsgLy8gaXMgdGhlIGlubmVyIGRpdiBzaGlmdGVkIHRvIGFjY29tbW9kYXRlIGEgbGVmdCBzY3JvbGxiYXI/CgllbC5yZW1vdmUoKTsKCXJldHVybiByZXM7Cn0KCgovLyBSZXRyaWV2ZXMgYSBqUXVlcnkgZWxlbWVudCdzIGNvbXB1dGVkIENTUyB2YWx1ZSBhcyBhIGZsb2F0aW5nLXBvaW50IG51bWJlci4KLy8gSWYgdGhlIHF1ZXJpZWQgdmFsdWUgaXMgbm9uLW51bWVyaWMgKGV4OiBJRSBjYW4gcmV0dXJuICJtZWRpdW0iIGZvciBib3JkZXIgd2lkdGgpLCB3aWxsIGp1c3QgcmV0dXJuIHplcm8uCmZ1bmN0aW9uIGdldENzc0Zsb2F0KGVsLCBwcm9wKSB7CglyZXR1cm4gcGFyc2VGbG9hdChlbC5jc3MocHJvcCkpIHx8IDA7Cn0KCgovKiBNb3VzZSAvIFRvdWNoIFV0aWxpdGllcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCkZDLnByZXZlbnREZWZhdWx0ID0gcHJldmVudERlZmF1bHQ7CgoKLy8gUmV0dXJucyBhIGJvb2xlYW4gd2hldGhlciB0aGlzIHdhcyBhIGxlZnQgbW91c2UgY2xpY2sgYW5kIG5vIGN0cmwga2V5ICh3aGljaCBtZWFucyByaWdodCBjbGljayBvbiBNYWMpCmZ1bmN0aW9uIGlzUHJpbWFyeU1vdXNlQnV0dG9uKGV2KSB7CglyZXR1cm4gZXYud2hpY2ggPT0gMSAmJiAhZXYuY3RybEtleTsKfQoKCmZ1bmN0aW9uIGdldEV2WChldikgewoJdmFyIHRvdWNoZXMgPSBldi5vcmlnaW5hbEV2ZW50LnRvdWNoZXM7CgoJLy8gb24gbW9iaWxlIEZGLCBwYWdlWCBmb3IgdG91Y2ggZXZlbnRzIGlzIHByZXNlbnQsIGJ1dCBpbmNvcnJlY3QsCgkvLyBzbywgbG9vayBhdCB0b3VjaCBjb29yZGluYXRlcyBmaXJzdC4KCWlmICh0b3VjaGVzICYmIHRvdWNoZXMubGVuZ3RoKSB7CgkJcmV0dXJuIHRvdWNoZXNbMF0ucGFnZVg7Cgl9CgoJcmV0dXJuIGV2LnBhZ2VYOwp9CgoKZnVuY3Rpb24gZ2V0RXZZKGV2KSB7Cgl2YXIgdG91Y2hlcyA9IGV2Lm9yaWdpbmFsRXZlbnQudG91Y2hlczsKCgkvLyBvbiBtb2JpbGUgRkYsIHBhZ2VYIGZvciB0b3VjaCBldmVudHMgaXMgcHJlc2VudCwgYnV0IGluY29ycmVjdCwKCS8vIHNvLCBsb29rIGF0IHRvdWNoIGNvb3JkaW5hdGVzIGZpcnN0LgoJaWYgKHRvdWNoZXMgJiYgdG91Y2hlcy5sZW5ndGgpIHsKCQlyZXR1cm4gdG91Y2hlc1swXS5wYWdlWTsKCX0KCglyZXR1cm4gZXYucGFnZVk7Cn0KCgpmdW5jdGlvbiBnZXRFdklzVG91Y2goZXYpIHsKCXJldHVybiAvXnRvdWNoLy50ZXN0KGV2LnR5cGUpOwp9CgoKZnVuY3Rpb24gcHJldmVudFNlbGVjdGlvbihlbCkgewoJZWwuYWRkQ2xhc3MoJ2ZjLXVuc2VsZWN0YWJsZScpCgkJLm9uKCdzZWxlY3RzdGFydCcsIHByZXZlbnREZWZhdWx0KTsKfQoKCmZ1bmN0aW9uIGFsbG93U2VsZWN0aW9uKGVsKSB7CgllbC5yZW1vdmVDbGFzcygnZmMtdW5zZWxlY3RhYmxlJykKCQkub2ZmKCdzZWxlY3RzdGFydCcsIHByZXZlbnREZWZhdWx0KTsKfQoKCi8vIFN0b3BzIGEgbW91c2UvdG91Y2ggZXZlbnQgZnJvbSBkb2luZyBpdCdzIG5hdGl2ZSBicm93c2VyIGFjdGlvbgpmdW5jdGlvbiBwcmV2ZW50RGVmYXVsdChldikgewoJZXYucHJldmVudERlZmF1bHQoKTsKfQoKCi8qIEdlbmVyYWwgR2VvbWV0cnkgVXRpbHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpGQy5pbnRlcnNlY3RSZWN0cyA9IGludGVyc2VjdFJlY3RzOwoKLy8gUmV0dXJucyBhIG5ldyByZWN0YW5nbGUgdGhhdCBpcyB0aGUgaW50ZXJzZWN0aW9uIG9mIHRoZSB0d28gcmVjdGFuZ2xlcy4gSWYgdGhleSBkb24ndCBpbnRlcnNlY3QsIHJldHVybnMgZmFsc2UKZnVuY3Rpb24gaW50ZXJzZWN0UmVjdHMocmVjdDEsIHJlY3QyKSB7Cgl2YXIgcmVzID0gewoJCWxlZnQ6IE1hdGgubWF4KHJlY3QxLmxlZnQsIHJlY3QyLmxlZnQpLAoJCXJpZ2h0OiBNYXRoLm1pbihyZWN0MS5yaWdodCwgcmVjdDIucmlnaHQpLAoJCXRvcDogTWF0aC5tYXgocmVjdDEudG9wLCByZWN0Mi50b3ApLAoJCWJvdHRvbTogTWF0aC5taW4ocmVjdDEuYm90dG9tLCByZWN0Mi5ib3R0b20pCgl9OwoKCWlmIChyZXMubGVmdCA8IHJlcy5yaWdodCAmJiByZXMudG9wIDwgcmVzLmJvdHRvbSkgewoJCXJldHVybiByZXM7Cgl9CglyZXR1cm4gZmFsc2U7Cn0KCgovLyBSZXR1cm5zIGEgbmV3IHBvaW50IHRoYXQgd2lsbCBoYXZlIGJlZW4gbW92ZWQgdG8gcmVzaWRlIHdpdGhpbiB0aGUgZ2l2ZW4gcmVjdGFuZ2xlCmZ1bmN0aW9uIGNvbnN0cmFpblBvaW50KHBvaW50LCByZWN0KSB7CglyZXR1cm4gewoJCWxlZnQ6IE1hdGgubWluKE1hdGgubWF4KHBvaW50LmxlZnQsIHJlY3QubGVmdCksIHJlY3QucmlnaHQpLAoJCXRvcDogTWF0aC5taW4oTWF0aC5tYXgocG9pbnQudG9wLCByZWN0LnRvcCksIHJlY3QuYm90dG9tKQoJfTsKfQoKCi8vIFJldHVybnMgYSBwb2ludCB0aGF0IGlzIHRoZSBjZW50ZXIgb2YgdGhlIGdpdmVuIHJlY3RhbmdsZQpmdW5jdGlvbiBnZXRSZWN0Q2VudGVyKHJlY3QpIHsKCXJldHVybiB7CgkJbGVmdDogKHJlY3QubGVmdCArIHJlY3QucmlnaHQpIC8gMiwKCQl0b3A6IChyZWN0LnRvcCArIHJlY3QuYm90dG9tKSAvIDIKCX07Cn0KCgovLyBTdWJ0cmFjdHMgcG9pbnQyJ3MgY29vcmRpbmF0ZXMgZnJvbSBwb2ludDEncyBjb29yZGluYXRlcywgcmV0dXJuaW5nIGEgZGVsdGEKZnVuY3Rpb24gZGlmZlBvaW50cyhwb2ludDEsIHBvaW50MikgewoJcmV0dXJuIHsKCQlsZWZ0OiBwb2ludDEubGVmdCAtIHBvaW50Mi5sZWZ0LAoJCXRvcDogcG9pbnQxLnRvcCAtIHBvaW50Mi50b3AKCX07Cn0KCgovKiBPYmplY3QgT3JkZXJpbmcgYnkgRmllbGQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpGQy5wYXJzZUZpZWxkU3BlY3MgPSBwYXJzZUZpZWxkU3BlY3M7CkZDLmNvbXBhcmVCeUZpZWxkU3BlY3MgPSBjb21wYXJlQnlGaWVsZFNwZWNzOwpGQy5jb21wYXJlQnlGaWVsZFNwZWMgPSBjb21wYXJlQnlGaWVsZFNwZWM7CkZDLmZsZXhpYmxlQ29tcGFyZSA9IGZsZXhpYmxlQ29tcGFyZTsKCgpmdW5jdGlvbiBwYXJzZUZpZWxkU3BlY3MoaW5wdXQpIHsKCXZhciBzcGVjcyA9IFtdOwoJdmFyIHRva2VucyA9IFtdOwoJdmFyIGksIHRva2VuOwoKCWlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7CgkJdG9rZW5zID0gaW5wdXQuc3BsaXQoL1xzKixccyovKTsKCX0KCWVsc2UgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ2Z1bmN0aW9uJykgewoJCXRva2VucyA9IFsgaW5wdXQgXTsKCX0KCWVsc2UgaWYgKCQuaXNBcnJheShpbnB1dCkpIHsKCQl0b2tlbnMgPSBpbnB1dDsKCX0KCglmb3IgKGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrKSB7CgkJdG9rZW4gPSB0b2tlbnNbaV07CgoJCWlmICh0eXBlb2YgdG9rZW4gPT09ICdzdHJpbmcnKSB7CgkJCXNwZWNzLnB1c2goCgkJCQl0b2tlbi5jaGFyQXQoMCkgPT0gJy0nID8KCQkJCQl7IGZpZWxkOiB0b2tlbi5zdWJzdHJpbmcoMSksIG9yZGVyOiAtMSB9IDoKCQkJCQl7IGZpZWxkOiB0b2tlbiwgb3JkZXI6IDEgfQoJCQkpOwoJCX0KCQllbHNlIGlmICh0eXBlb2YgdG9rZW4gPT09ICdmdW5jdGlvbicpIHsKCQkJc3BlY3MucHVzaCh7IGZ1bmM6IHRva2VuIH0pOwoJCX0KCX0KCglyZXR1cm4gc3BlY3M7Cn0KCgpmdW5jdGlvbiBjb21wYXJlQnlGaWVsZFNwZWNzKG9iajEsIG9iajIsIGZpZWxkU3BlY3MpIHsKCXZhciBpOwoJdmFyIGNtcDsKCglmb3IgKGkgPSAwOyBpIDwgZmllbGRTcGVjcy5sZW5ndGg7IGkrKykgewoJCWNtcCA9IGNvbXBhcmVCeUZpZWxkU3BlYyhvYmoxLCBvYmoyLCBmaWVsZFNwZWNzW2ldKTsKCQlpZiAoY21wKSB7CgkJCXJldHVybiBjbXA7CgkJfQoJfQoKCXJldHVybiAwOwp9CgoKZnVuY3Rpb24gY29tcGFyZUJ5RmllbGRTcGVjKG9iajEsIG9iajIsIGZpZWxkU3BlYykgewoJaWYgKGZpZWxkU3BlYy5mdW5jKSB7CgkJcmV0dXJuIGZpZWxkU3BlYy5mdW5jKG9iajEsIG9iajIpOwoJfQoJcmV0dXJuIGZsZXhpYmxlQ29tcGFyZShvYmoxW2ZpZWxkU3BlYy5maWVsZF0sIG9iajJbZmllbGRTcGVjLmZpZWxkXSkgKgoJCShmaWVsZFNwZWMub3JkZXIgfHwgMSk7Cn0KCgpmdW5jdGlvbiBmbGV4aWJsZUNvbXBhcmUoYSwgYikgewoJaWYgKCFhICYmICFiKSB7CgkJcmV0dXJuIDA7Cgl9CglpZiAoYiA9PSBudWxsKSB7CgkJcmV0dXJuIC0xOwoJfQoJaWYgKGEgPT0gbnVsbCkgewoJCXJldHVybiAxOwoJfQoJaWYgKCQudHlwZShhKSA9PT0gJ3N0cmluZycgfHwgJC50eXBlKGIpID09PSAnc3RyaW5nJykgewoJCXJldHVybiBTdHJpbmcoYSkubG9jYWxlQ29tcGFyZShTdHJpbmcoYikpOwoJfQoJcmV0dXJuIGEgLSBiOwp9CgoKLyogRnVsbENhbGVuZGFyLXNwZWNpZmljIE1pc2MgVXRpbGl0aWVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCi8vIENvbXB1dGVzIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhlIHR3byByYW5nZXMuIFdpbGwgcmV0dXJuIGZyZXNoIGRhdGUgY2xvbmVzIGluIGEgcmFuZ2UuCi8vIFJldHVybnMgdW5kZWZpbmVkIGlmIG5vIGludGVyc2VjdGlvbi4KLy8gRXhwZWN0cyBhbGwgZGF0ZXMgdG8gYmUgbm9ybWFsaXplZCB0byB0aGUgc2FtZSB0aW1lem9uZSBiZWZvcmVoYW5kLgovLyBUT0RPOiBtb3ZlIHRvIGRhdGUgc2VjdGlvbj8KZnVuY3Rpb24gaW50ZXJzZWN0UmFuZ2VzKHN1YmplY3RSYW5nZSwgY29uc3RyYWludFJhbmdlKSB7Cgl2YXIgc3ViamVjdFN0YXJ0ID0gc3ViamVjdFJhbmdlLnN0YXJ0OwoJdmFyIHN1YmplY3RFbmQgPSBzdWJqZWN0UmFuZ2UuZW5kOwoJdmFyIGNvbnN0cmFpbnRTdGFydCA9IGNvbnN0cmFpbnRSYW5nZS5zdGFydDsKCXZhciBjb25zdHJhaW50RW5kID0gY29uc3RyYWludFJhbmdlLmVuZDsKCXZhciBzZWdTdGFydCwgc2VnRW5kOwoJdmFyIGlzU3RhcnQsIGlzRW5kOwoKCWlmIChzdWJqZWN0RW5kID4gY29uc3RyYWludFN0YXJ0ICYmIHN1YmplY3RTdGFydCA8IGNvbnN0cmFpbnRFbmQpIHsgLy8gaW4gYm91bmRzIGF0IGFsbD8KCgkJaWYgKHN1YmplY3RTdGFydCA+PSBjb25zdHJhaW50U3RhcnQpIHsKCQkJc2VnU3RhcnQgPSBzdWJqZWN0U3RhcnQuY2xvbmUoKTsKCQkJaXNTdGFydCA9IHRydWU7CgkJfQoJCWVsc2UgewoJCQlzZWdTdGFydCA9IGNvbnN0cmFpbnRTdGFydC5jbG9uZSgpOwoJCQlpc1N0YXJ0ID0gIGZhbHNlOwoJCX0KCgkJaWYgKHN1YmplY3RFbmQgPD0gY29uc3RyYWludEVuZCkgewoJCQlzZWdFbmQgPSBzdWJqZWN0RW5kLmNsb25lKCk7CgkJCWlzRW5kID0gdHJ1ZTsKCQl9CgkJZWxzZSB7CgkJCXNlZ0VuZCA9IGNvbnN0cmFpbnRFbmQuY2xvbmUoKTsKCQkJaXNFbmQgPSBmYWxzZTsKCQl9CgoJCXJldHVybiB7CgkJCXN0YXJ0OiBzZWdTdGFydCwKCQkJZW5kOiBzZWdFbmQsCgkJCWlzU3RhcnQ6IGlzU3RhcnQsCgkJCWlzRW5kOiBpc0VuZAoJCX07Cgl9Cn0KCgovKiBEYXRlIFV0aWxpdGllcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCkZDLmNvbXB1dGVHcmVhdGVzdFVuaXQgPSBjb21wdXRlR3JlYXRlc3RVbml0OwpGQy5kaXZpZGVSYW5nZUJ5RHVyYXRpb24gPSBkaXZpZGVSYW5nZUJ5RHVyYXRpb247CkZDLmRpdmlkZUR1cmF0aW9uQnlEdXJhdGlvbiA9IGRpdmlkZUR1cmF0aW9uQnlEdXJhdGlvbjsKRkMubXVsdGlwbHlEdXJhdGlvbiA9IG11bHRpcGx5RHVyYXRpb247CkZDLmR1cmF0aW9uSGFzVGltZSA9IGR1cmF0aW9uSGFzVGltZTsKCnZhciBkYXlJRHMgPSBbICdzdW4nLCAnbW9uJywgJ3R1ZScsICd3ZWQnLCAndGh1JywgJ2ZyaScsICdzYXQnIF07CnZhciB1bml0c0Rlc2MgPSBbICd5ZWFyJywgJ21vbnRoJywgJ3dlZWsnLCAnZGF5JywgJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCcsICdtaWxsaXNlY29uZCcgXTsgLy8gZGVzY2VuZGluZwoKCi8vIERpZmZzIHRoZSB0d28gbW9tZW50cyBpbnRvIGEgRHVyYXRpb24gd2hlcmUgZnVsbC1kYXlzIGFyZSByZWNvcmRlZCBmaXJzdCwgdGhlbiB0aGUgcmVtYWluaW5nIHRpbWUuCi8vIE1vbWVudHMgd2lsbCBoYXZlIHRoZWlyIHRpbWV6b25lcyBub3JtYWxpemVkLgpmdW5jdGlvbiBkaWZmRGF5VGltZShhLCBiKSB7CglyZXR1cm4gbW9tZW50LmR1cmF0aW9uKHsKCQlkYXlzOiBhLmNsb25lKCkuc3RyaXBUaW1lKCkuZGlmZihiLmNsb25lKCkuc3RyaXBUaW1lKCksICdkYXlzJyksCgkJbXM6IGEudGltZSgpIC0gYi50aW1lKCkgLy8gdGltZS1vZi1kYXkgZnJvbSBkYXkgc3RhcnQuIGRpc3JlZ2FyZHMgdGltZXpvbmUKCX0pOwp9CgoKLy8gRGlmZnMgdGhlIHR3byBtb21lbnRzIHZpYSB0aGVpciBzdGFydC1vZi1kYXkgKHJlZ2FyZGxlc3Mgb2YgdGltZXpvbmUpLiBQcm9kdWNlcyB3aG9sZS1kYXkgZHVyYXRpb25zLgpmdW5jdGlvbiBkaWZmRGF5KGEsIGIpIHsKCXJldHVybiBtb21lbnQuZHVyYXRpb24oewoJCWRheXM6IGEuY2xvbmUoKS5zdHJpcFRpbWUoKS5kaWZmKGIuY2xvbmUoKS5zdHJpcFRpbWUoKSwgJ2RheXMnKQoJfSk7Cn0KCgovLyBEaWZmcyB0d28gbW9tZW50cywgcHJvZHVjaW5nIGEgZHVyYXRpb24sIG1hZGUgb2YgYSB3aG9sZS11bml0LWluY3JlbWVudCBvZiB0aGUgZ2l2ZW4gdW5pdC4gVXNlcyByb3VuZGluZy4KZnVuY3Rpb24gZGlmZkJ5VW5pdChhLCBiLCB1bml0KSB7CglyZXR1cm4gbW9tZW50LmR1cmF0aW9uKAoJCU1hdGgucm91bmQoYS5kaWZmKGIsIHVuaXQsIHRydWUpKSwgLy8gcmV0dXJuRmxvYXQ9dHJ1ZQoJCXVuaXQKCSk7Cn0KCgovLyBDb21wdXRlcyB0aGUgdW5pdCBuYW1lIG9mIHRoZSBsYXJnZXN0IHdob2xlLXVuaXQgcGVyaW9kIG9mIHRpbWUuCi8vIEZvciBleGFtcGxlLCA0OCBob3VycyB3aWxsIGJlICJkYXlzIiB3aGVyZWFzIDQ5IGhvdXJzIHdpbGwgYmUgImhvdXJzIi4KLy8gQWNjZXB0cyBzdGFydC9lbmQsIGEgcmFuZ2Ugb2JqZWN0LCBvciBhbiBvcmlnaW5hbCBkdXJhdGlvbiBvYmplY3QuCmZ1bmN0aW9uIGNvbXB1dGVHcmVhdGVzdFVuaXQoc3RhcnQsIGVuZCkgewoJdmFyIGksIHVuaXQ7Cgl2YXIgdmFsOwoKCWZvciAoaSA9IDA7IGkgPCB1bml0c0Rlc2MubGVuZ3RoOyBpKyspIHsKCQl1bml0ID0gdW5pdHNEZXNjW2ldOwoJCXZhbCA9IGNvbXB1dGVSYW5nZUFzKHVuaXQsIHN0YXJ0LCBlbmQpOwoKCQlpZiAodmFsID49IDEgJiYgaXNJbnQodmFsKSkgewoJCQlicmVhazsKCQl9Cgl9CgoJcmV0dXJuIHVuaXQ7IC8vIHdpbGwgYmUgIm1pbGxpc2Vjb25kcyIgaWYgbm90aGluZyBlbHNlIG1hdGNoZXMKfQoKCi8vIGxpa2UgY29tcHV0ZUdyZWF0ZXN0VW5pdCwgYnV0IGhhcyBzcGVjaWFsIGFiaWxpdGllcyB0byBpbnRlcnByZXQgdGhlIHNvdXJjZSBpbnB1dCBmb3IgY2x1ZXMKZnVuY3Rpb24gY29tcHV0ZUR1cmF0aW9uR3JlYXRlc3RVbml0KGR1cmF0aW9uLCBkdXJhdGlvbklucHV0KSB7Cgl2YXIgdW5pdCA9IGNvbXB1dGVHcmVhdGVzdFVuaXQoZHVyYXRpb24pOwoKCS8vIHByZXZlbnQgZGF5czo3IGZyb20gYmVpbmcgaW50ZXJwcmV0ZWQgYXMgYSB3ZWVrCglpZiAodW5pdCA9PT0gJ3dlZWsnICYmIHR5cGVvZiBkdXJhdGlvbklucHV0ID09PSAnb2JqZWN0JyAmJiBkdXJhdGlvbklucHV0LmRheXMpIHsKCQl1bml0ID0gJ2RheSc7Cgl9CgoJcmV0dXJuIHVuaXQ7Cn0KCgovLyBDb21wdXRlcyB0aGUgbnVtYmVyIG9mIHVuaXRzIChsaWtlICJob3VycyIpIGluIHRoZSBnaXZlbiByYW5nZS4KLy8gUmFuZ2UgY2FuIGJlIGEge3N0YXJ0LGVuZH0gb2JqZWN0LCBzZXBhcmF0ZSBzdGFydC9lbmQgYXJncywgb3IgYSBEdXJhdGlvbi4KLy8gUmVzdWx0cyBhcmUgYmFzZWQgb24gTW9tZW50J3MgLmFzKCkgYW5kIC5kaWZmKCkgbWV0aG9kcywgc28gcmVzdWx0cyBjYW4gZGVwZW5kIG9uIGludGVybmFsIGhhbmRsaW5nCi8vIG9mIG1vbnRoLWRpZmZpbmcgbG9naWMgKHdoaWNoIHRlbmRzIHRvIHZhcnkgZnJvbSB2ZXJzaW9uIHRvIHZlcnNpb24pLgpmdW5jdGlvbiBjb21wdXRlUmFuZ2VBcyh1bml0LCBzdGFydCwgZW5kKSB7CgoJaWYgKGVuZCAhPSBudWxsKSB7IC8vIGdpdmVuIHN0YXJ0LCBlbmQKCQlyZXR1cm4gZW5kLmRpZmYoc3RhcnQsIHVuaXQsIHRydWUpOwoJfQoJZWxzZSBpZiAobW9tZW50LmlzRHVyYXRpb24oc3RhcnQpKSB7IC8vIGdpdmVuIGR1cmF0aW9uCgkJcmV0dXJuIHN0YXJ0LmFzKHVuaXQpOwoJfQoJZWxzZSB7IC8vIGdpdmVuIHsgc3RhcnQsIGVuZCB9IHJhbmdlIG9iamVjdAoJCXJldHVybiBzdGFydC5lbmQuZGlmZihzdGFydC5zdGFydCwgdW5pdCwgdHJ1ZSk7Cgl9Cn0KCgovLyBJbnRlbGxpZ2VudGx5IGRpdmlkZXMgYSByYW5nZSAoc3BlY2lmaWVkIGJ5IGEgc3RhcnQvZW5kIHBhcmFtcykgYnkgYSBkdXJhdGlvbgpmdW5jdGlvbiBkaXZpZGVSYW5nZUJ5RHVyYXRpb24oc3RhcnQsIGVuZCwgZHVyKSB7Cgl2YXIgbW9udGhzOwoKCWlmIChkdXJhdGlvbkhhc1RpbWUoZHVyKSkgewoJCXJldHVybiAoZW5kIC0gc3RhcnQpIC8gZHVyOwoJfQoJbW9udGhzID0gZHVyLmFzTW9udGhzKCk7CglpZiAoTWF0aC5hYnMobW9udGhzKSA+PSAxICYmIGlzSW50KG1vbnRocykpIHsKCQlyZXR1cm4gZW5kLmRpZmYoc3RhcnQsICdtb250aHMnLCB0cnVlKSAvIG1vbnRoczsKCX0KCXJldHVybiBlbmQuZGlmZihzdGFydCwgJ2RheXMnLCB0cnVlKSAvIGR1ci5hc0RheXMoKTsKfQoKCi8vIEludGVsbGlnZW50bHkgZGl2aWRlcyBvbmUgZHVyYXRpb24gYnkgYW5vdGhlcgpmdW5jdGlvbiBkaXZpZGVEdXJhdGlvbkJ5RHVyYXRpb24oZHVyMSwgZHVyMikgewoJdmFyIG1vbnRoczEsIG1vbnRoczI7CgoJaWYgKGR1cmF0aW9uSGFzVGltZShkdXIxKSB8fCBkdXJhdGlvbkhhc1RpbWUoZHVyMikpIHsKCQlyZXR1cm4gZHVyMSAvIGR1cjI7Cgl9Cgltb250aHMxID0gZHVyMS5hc01vbnRocygpOwoJbW9udGhzMiA9IGR1cjIuYXNNb250aHMoKTsKCWlmICgKCQlNYXRoLmFicyhtb250aHMxKSA+PSAxICYmIGlzSW50KG1vbnRoczEpICYmCgkJTWF0aC5hYnMobW9udGhzMikgPj0gMSAmJiBpc0ludChtb250aHMyKQoJKSB7CgkJcmV0dXJuIG1vbnRoczEgLyBtb250aHMyOwoJfQoJcmV0dXJuIGR1cjEuYXNEYXlzKCkgLyBkdXIyLmFzRGF5cygpOwp9CgoKLy8gSW50ZWxsaWdlbnRseSBtdWx0aXBsaWVzIGEgZHVyYXRpb24gYnkgYSBudW1iZXIKZnVuY3Rpb24gbXVsdGlwbHlEdXJhdGlvbihkdXIsIG4pIHsKCXZhciBtb250aHM7CgoJaWYgKGR1cmF0aW9uSGFzVGltZShkdXIpKSB7CgkJcmV0dXJuIG1vbWVudC5kdXJhdGlvbihkdXIgKiBuKTsKCX0KCW1vbnRocyA9IGR1ci5hc01vbnRocygpOwoJaWYgKE1hdGguYWJzKG1vbnRocykgPj0gMSAmJiBpc0ludChtb250aHMpKSB7CgkJcmV0dXJuIG1vbWVudC5kdXJhdGlvbih7IG1vbnRoczogbW9udGhzICogbiB9KTsKCX0KCXJldHVybiBtb21lbnQuZHVyYXRpb24oeyBkYXlzOiBkdXIuYXNEYXlzKCkgKiBuIH0pOwp9CgoKZnVuY3Rpb24gY2xvbmVSYW5nZShyYW5nZSkgewoJcmV0dXJuIHsKCQlzdGFydDogcmFuZ2Uuc3RhcnQuY2xvbmUoKSwKCQllbmQ6IHJhbmdlLmVuZC5jbG9uZSgpCgl9Owp9CgoKLy8gVHJpbXMgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIGlubmVyIHJhbmdlIHRvIGJlIGNvbXBsZXRlbHkgd2l0aGluIG91dGVyUmFuZ2UuCi8vIFJldHVybnMgYSBuZXcgcmFuZ2Ugb2JqZWN0LgpmdW5jdGlvbiBjb25zdHJhaW5SYW5nZShpbm5lclJhbmdlLCBvdXRlclJhbmdlKSB7Cglpbm5lclJhbmdlID0gY2xvbmVSYW5nZShpbm5lclJhbmdlKTsKCglpZiAob3V0ZXJSYW5nZS5zdGFydCkgewoJCS8vIG5lZWRzIHRvIGJlIGluY2x1c2l2ZWx5IGJlZm9yZSBvdXRlclJhbmdlJ3MgZW5kCgkJaW5uZXJSYW5nZS5zdGFydCA9IGNvbnN0cmFpbkRhdGUoaW5uZXJSYW5nZS5zdGFydCwgb3V0ZXJSYW5nZSk7Cgl9CgoJaWYgKG91dGVyUmFuZ2UuZW5kKSB7CgkJaW5uZXJSYW5nZS5lbmQgPSBtaW5Nb21lbnQoaW5uZXJSYW5nZS5lbmQsIG91dGVyUmFuZ2UuZW5kKTsKCX0KCglyZXR1cm4gaW5uZXJSYW5nZTsKfQoKCi8vIElmIHRoZSBnaXZlbiBkYXRlIGlzIG5vdCB3aXRoaW4gdGhlIGdpdmVuIHJhbmdlLCBtb3ZlIGl0IGluc2lkZS4KLy8gKElmIGl0J3MgcGFzdCB0aGUgZW5kLCBtYWtlIGl0IG9uZSBtaWxsaXNlY29uZCBiZWZvcmUgdGhlIGVuZCkuCi8vIEFsd2F5cyByZXR1cm5zIGEgbmV3IG1vbWVudC4KZnVuY3Rpb24gY29uc3RyYWluRGF0ZShkYXRlLCByYW5nZSkgewoJZGF0ZSA9IGRhdGUuY2xvbmUoKTsKCglpZiAocmFuZ2Uuc3RhcnQpIHsKCQlkYXRlID0gbWF4TW9tZW50KGRhdGUsIHJhbmdlLnN0YXJ0KTsKCX0KCglpZiAocmFuZ2UuZW5kICYmIGRhdGUgPj0gcmFuZ2UuZW5kKSB7CgkJZGF0ZSA9IHJhbmdlLmVuZC5jbG9uZSgpLnN1YnRyYWN0KDEpOwoJfQoKCXJldHVybiBkYXRlOwp9CgoKZnVuY3Rpb24gaXNEYXRlV2l0aGluUmFuZ2UoZGF0ZSwgcmFuZ2UpIHsKCXJldHVybiAoIXJhbmdlLnN0YXJ0IHx8IGRhdGUgPj0gcmFuZ2Uuc3RhcnQpICYmCgkJKCFyYW5nZS5lbmQgfHwgZGF0ZSA8IHJhbmdlLmVuZCk7Cn0KCgovLyBUT0RPOiBkZWFsIHdpdGggcmVwZWF0IGNvZGUgaW4gaW50ZXJzZWN0UmFuZ2VzCi8vIGNvbnN0cmFpbnRSYW5nZSBjYW4gaGF2ZSB1bnNwZWNpZmllZCBzdGFydC9lbmQsIGFuIG9wZW4tZW5kZWQgcmFuZ2UuCmZ1bmN0aW9uIGRvUmFuZ2VzSW50ZXJzZWN0KHN1YmplY3RSYW5nZSwgY29uc3RyYWludFJhbmdlKSB7CglyZXR1cm4gKCFjb25zdHJhaW50UmFuZ2Uuc3RhcnQgfHwgc3ViamVjdFJhbmdlLmVuZCA+PSBjb25zdHJhaW50UmFuZ2Uuc3RhcnQpICYmCgkJKCFjb25zdHJhaW50UmFuZ2UuZW5kIHx8IHN1YmplY3RSYW5nZS5zdGFydCA8IGNvbnN0cmFpbnRSYW5nZS5lbmQpOwp9CgoKZnVuY3Rpb24gaXNSYW5nZVdpdGhpblJhbmdlKGlubmVyUmFuZ2UsIG91dGVyUmFuZ2UpIHsKCXJldHVybiAoIW91dGVyUmFuZ2Uuc3RhcnQgfHwgaW5uZXJSYW5nZS5zdGFydCA+PSBvdXRlclJhbmdlLnN0YXJ0KSAmJgoJCSghb3V0ZXJSYW5nZS5lbmQgfHwgaW5uZXJSYW5nZS5lbmQgPD0gb3V0ZXJSYW5nZS5lbmQpOwp9CgoKZnVuY3Rpb24gaXNSYW5nZXNFcXVhbChyYW5nZTAsIHJhbmdlMSkgewoJcmV0dXJuICgocmFuZ2UwLnN0YXJ0ICYmIHJhbmdlMS5zdGFydCAmJiByYW5nZTAuc3RhcnQuaXNTYW1lKHJhbmdlMS5zdGFydCkpIHx8ICghcmFuZ2UwLnN0YXJ0ICYmICFyYW5nZTEuc3RhcnQpKSAmJgoJCSgocmFuZ2UwLmVuZCAmJiByYW5nZTEuZW5kICYmIHJhbmdlMC5lbmQuaXNTYW1lKHJhbmdlMS5lbmQpKSB8fCAoIXJhbmdlMC5lbmQgJiYgIXJhbmdlMS5lbmQpKTsKfQoKCi8vIFJldHVybnMgdGhlIG1vbWVudCB0aGF0J3MgZWFybGllciBpbiB0aW1lLiBBbHdheXMgYSBjb3B5LgpmdW5jdGlvbiBtaW5Nb21lbnQobW9tMSwgbW9tMikgewoJcmV0dXJuIChtb20xLmlzQmVmb3JlKG1vbTIpID8gbW9tMSA6IG1vbTIpLmNsb25lKCk7Cn0KCgovLyBSZXR1cm5zIHRoZSBtb21lbnQgdGhhdCdzIGxhdGVyIGluIHRpbWUuIEFsd2F5cyBhIGNvcHkuCmZ1bmN0aW9uIG1heE1vbWVudChtb20xLCBtb20yKSB7CglyZXR1cm4gKG1vbTEuaXNBZnRlcihtb20yKSA/IG1vbTEgOiBtb20yKS5jbG9uZSgpOwp9CgoKLy8gUmV0dXJucyBhIGJvb2xlYW4gYWJvdXQgd2hldGhlciB0aGUgZ2l2ZW4gZHVyYXRpb24gaGFzIGFueSB0aW1lIHBhcnRzIChob3Vycy9taW51dGVzL3NlY29uZHMvbXMpCmZ1bmN0aW9uIGR1cmF0aW9uSGFzVGltZShkdXIpIHsKCXJldHVybiBCb29sZWFuKGR1ci5ob3VycygpIHx8IGR1ci5taW51dGVzKCkgfHwgZHVyLnNlY29uZHMoKSB8fCBkdXIubWlsbGlzZWNvbmRzKCkpOwp9CgoKZnVuY3Rpb24gaXNOYXRpdmVEYXRlKGlucHV0KSB7CglyZXR1cm4gIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbnB1dCkgPT09ICdbb2JqZWN0IERhdGVdJyB8fCBpbnB1dCBpbnN0YW5jZW9mIERhdGU7Cn0KCgovLyBSZXR1cm5zIGEgYm9vbGVhbiBhYm91dCB3aGV0aGVyIHRoZSBnaXZlbiBpbnB1dCBpcyBhIHRpbWUgc3RyaW5nLCBsaWtlICIwNjo0MDowMCIgb3IgIjA2OjAwIgpmdW5jdGlvbiBpc1RpbWVTdHJpbmcoc3RyKSB7CglyZXR1cm4gL15cZCtcOlxkKyg/Olw6XGQrXC4/KD86XGR7M30pPyk/JC8udGVzdChzdHIpOwp9CgoKLyogTG9nZ2luZyBhbmQgRGVidWcKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpGQy5sb2cgPSBmdW5jdGlvbigpIHsKCXZhciBjb25zb2xlID0gd2luZG93LmNvbnNvbGU7CgoJaWYgKGNvbnNvbGUgJiYgY29uc29sZS5sb2cpIHsKCQlyZXR1cm4gY29uc29sZS5sb2cuYXBwbHkoY29uc29sZSwgYXJndW1lbnRzKTsKCX0KfTsKCkZDLndhcm4gPSBmdW5jdGlvbigpIHsKCXZhciBjb25zb2xlID0gd2luZG93LmNvbnNvbGU7CgoJaWYgKGNvbnNvbGUgJiYgY29uc29sZS53YXJuKSB7CgkJcmV0dXJuIGNvbnNvbGUud2Fybi5hcHBseShjb25zb2xlLCBhcmd1bWVudHMpOwoJfQoJZWxzZSB7CgkJcmV0dXJuIEZDLmxvZy5hcHBseShGQywgYXJndW1lbnRzKTsKCX0KfTsKCgovKiBHZW5lcmFsIFV0aWxpdGllcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnZhciBoYXNPd25Qcm9wTWV0aG9kID0ge30uaGFzT3duUHJvcGVydHk7CgoKLy8gTWVyZ2VzIGFuIGFycmF5IG9mIG9iamVjdHMgaW50byBhIHNpbmdsZSBvYmplY3QuCi8vIFRoZSBzZWNvbmQgYXJndW1lbnQgYWxsb3dzIGZvciBhbiBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyB3aG8ncyBvYmplY3QgdmFsdWVzIHdpbGwgYmUgbWVyZ2VkIHRvZ2V0aGVyLgpmdW5jdGlvbiBtZXJnZVByb3BzKHByb3BPYmpzLCBjb21wbGV4UHJvcHMpIHsKCXZhciBkZXN0ID0ge307Cgl2YXIgaSwgbmFtZTsKCXZhciBjb21wbGV4T2JqczsKCXZhciBqLCB2YWw7Cgl2YXIgcHJvcHM7CgoJaWYgKGNvbXBsZXhQcm9wcykgewoJCWZvciAoaSA9IDA7IGkgPCBjb21wbGV4UHJvcHMubGVuZ3RoOyBpKyspIHsKCQkJbmFtZSA9IGNvbXBsZXhQcm9wc1tpXTsKCQkJY29tcGxleE9ianMgPSBbXTsKCgkJCS8vIGNvbGxlY3QgdGhlIHRyYWlsaW5nIG9iamVjdCB2YWx1ZXMsIHN0b3BwaW5nIHdoZW4gYSBub24tb2JqZWN0IGlzIGRpc2NvdmVyZWQKCQkJZm9yIChqID0gcHJvcE9ianMubGVuZ3RoIC0gMTsgaiA+PSAwOyBqLS0pIHsKCQkJCXZhbCA9IHByb3BPYmpzW2pdW25hbWVdOwoKCQkJCWlmICh0eXBlb2YgdmFsID09PSAnb2JqZWN0JykgewoJCQkJCWNvbXBsZXhPYmpzLnVuc2hpZnQodmFsKTsKCQkJCX0KCQkJCWVsc2UgaWYgKHZhbCAhPT0gdW5kZWZpbmVkKSB7CgkJCQkJZGVzdFtuYW1lXSA9IHZhbDsgLy8gaWYgdGhlcmUgd2VyZSBubyBvYmplY3RzLCB0aGlzIHZhbHVlIHdpbGwgYmUgdXNlZAoJCQkJCWJyZWFrOwoJCQkJfQoJCQl9CgoJCQkvLyBpZiB0aGUgdHJhaWxpbmcgdmFsdWVzIHdlcmUgb2JqZWN0cywgdXNlIHRoZSBtZXJnZWQgdmFsdWUKCQkJaWYgKGNvbXBsZXhPYmpzLmxlbmd0aCkgewoJCQkJZGVzdFtuYW1lXSA9IG1lcmdlUHJvcHMoY29tcGxleE9ianMpOwoJCQl9CgkJfQoJfQoKCS8vIGNvcHkgdmFsdWVzIGludG8gdGhlIGRlc3RpbmF0aW9uLCBnb2luZyBmcm9tIGxhc3QgdG8gZmlyc3QKCWZvciAoaSA9IHByb3BPYmpzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CgkJcHJvcHMgPSBwcm9wT2Jqc1tpXTsKCgkJZm9yIChuYW1lIGluIHByb3BzKSB7CgkJCWlmICghKG5hbWUgaW4gZGVzdCkpIHsgLy8gaWYgYWxyZWFkeSBhc3NpZ25lZCBieSBwcmV2aW91cyBwcm9wcyBvciBjb21wbGV4IHByb3BzLCBkb24ndCByZWFzc2lnbgoJCQkJZGVzdFtuYW1lXSA9IHByb3BzW25hbWVdOwoJCQl9CgkJfQoJfQoKCXJldHVybiBkZXN0Owp9CgoKLy8gQ3JlYXRlIGFuIG9iamVjdCB0aGF0IGhhcyB0aGUgZ2l2ZW4gcHJvdG90eXBlLiBKdXN0IGxpa2UgT2JqZWN0LmNyZWF0ZQpmdW5jdGlvbiBjcmVhdGVPYmplY3QocHJvdG8pIHsKCXZhciBmID0gZnVuY3Rpb24oKSB7fTsKCWYucHJvdG90eXBlID0gcHJvdG87CglyZXR1cm4gbmV3IGYoKTsKfQpGQy5jcmVhdGVPYmplY3QgPSBjcmVhdGVPYmplY3Q7CgoKZnVuY3Rpb24gY29weU93blByb3BzKHNyYywgZGVzdCkgewoJZm9yICh2YXIgbmFtZSBpbiBzcmMpIHsKCQlpZiAoaGFzT3duUHJvcChzcmMsIG5hbWUpKSB7CgkJCWRlc3RbbmFtZV0gPSBzcmNbbmFtZV07CgkJfQoJfQp9CgoKZnVuY3Rpb24gaGFzT3duUHJvcChvYmosIG5hbWUpIHsKCXJldHVybiBoYXNPd25Qcm9wTWV0aG9kLmNhbGwob2JqLCBuYW1lKTsKfQoKCi8vIElzIHRoZSBnaXZlbiB2YWx1ZSBhIG5vbi1vYmplY3Qgbm9uLWZ1bmN0aW9uIHZhbHVlPwpmdW5jdGlvbiBpc0F0b21pYyh2YWwpIHsKCXJldHVybiAvdW5kZWZpbmVkfG51bGx8Ym9vbGVhbnxudW1iZXJ8c3RyaW5nLy50ZXN0KCQudHlwZSh2YWwpKTsKfQoKCmZ1bmN0aW9uIGFwcGx5QWxsKGZ1bmN0aW9ucywgdGhpc09iaiwgYXJncykgewoJaWYgKCQuaXNGdW5jdGlvbihmdW5jdGlvbnMpKSB7CgkJZnVuY3Rpb25zID0gWyBmdW5jdGlvbnMgXTsKCX0KCWlmIChmdW5jdGlvbnMpIHsKCQl2YXIgaTsKCQl2YXIgcmV0OwoJCWZvciAoaT0wOyBpPGZ1bmN0aW9ucy5sZW5ndGg7IGkrKykgewoJCQlyZXQgPSBmdW5jdGlvbnNbaV0uYXBwbHkodGhpc09iaiwgYXJncykgfHwgcmV0OwoJCX0KCQlyZXR1cm4gcmV0OwoJfQp9CgoKZnVuY3Rpb24gZmlyc3REZWZpbmVkKCkgewoJZm9yICh2YXIgaT0wOyBpPGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgewoJCWlmIChhcmd1bWVudHNbaV0gIT09IHVuZGVmaW5lZCkgewoJCQlyZXR1cm4gYXJndW1lbnRzW2ldOwoJCX0KCX0KfQoKCmZ1bmN0aW9uIGh0bWxFc2NhcGUocykgewoJcmV0dXJuIChzICsgJycpLnJlcGxhY2UoLyYvZywgJyZhbXA7JykKCQkucmVwbGFjZSgvPC9nLCAnJmx0OycpCgkJLnJlcGxhY2UoLz4vZywgJyZndDsnKQoJCS5yZXBsYWNlKC8nL2csICcmIzAzOTsnKQoJCS5yZXBsYWNlKC8iL2csICcmcXVvdDsnKQoJCS5yZXBsYWNlKC9cbi9nLCAnPGJyIC8+Jyk7Cn0KCgpmdW5jdGlvbiBzdHJpcEh0bWxFbnRpdGllcyh0ZXh0KSB7CglyZXR1cm4gdGV4dC5yZXBsYWNlKC8mLio/Oy9nLCAnJyk7Cn0KCgovLyBHaXZlbiBhIGhhc2ggb2YgQ1NTIHByb3BlcnRpZXMsIHJldHVybnMgYSBzdHJpbmcgb2YgQ1NTLgovLyBVc2VzIHByb3BlcnR5IG5hbWVzIGFzLWlzIChubyBjYW1lbC1jYXNlIGNvbnZlcnNpb24pLiBXaWxsIG5vdCBtYWtlIHN0YXRlbWVudHMgZm9yIG51bGwvdW5kZWZpbmVkIHZhbHVlcy4KZnVuY3Rpb24gY3NzVG9TdHIoY3NzUHJvcHMpIHsKCXZhciBzdGF0ZW1lbnRzID0gW107CgoJJC5lYWNoKGNzc1Byb3BzLCBmdW5jdGlvbihuYW1lLCB2YWwpIHsKCQlpZiAodmFsICE9IG51bGwpIHsKCQkJc3RhdGVtZW50cy5wdXNoKG5hbWUgKyAnOicgKyB2YWwpOwoJCX0KCX0pOwoKCXJldHVybiBzdGF0ZW1lbnRzLmpvaW4oJzsnKTsKfQoKCi8vIEdpdmVuIGFuIG9iamVjdCBoYXNoIG9mIEhUTUwgYXR0cmlidXRlIG5hbWVzIHRvIHZhbHVlcywKLy8gZ2VuZXJhdGVzIGEgc3RyaW5nIHRoYXQgY2FuIGJlIGluamVjdGVkIGJldHdlZW4gPCA+IGluIEhUTUwKZnVuY3Rpb24gYXR0cnNUb1N0cihhdHRycykgewoJdmFyIHBhcnRzID0gW107CgoJJC5lYWNoKGF0dHJzLCBmdW5jdGlvbihuYW1lLCB2YWwpIHsKCQlpZiAodmFsICE9IG51bGwpIHsKCQkJcGFydHMucHVzaChuYW1lICsgJz0iJyArIGh0bWxFc2NhcGUodmFsKSArICciJyk7CgkJfQoJfSk7CgoJcmV0dXJuIHBhcnRzLmpvaW4oJyAnKTsKfQoKCmZ1bmN0aW9uIGNhcGl0YWxpc2VGaXJzdExldHRlcihzdHIpIHsKCXJldHVybiBzdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSk7Cn0KCgpmdW5jdGlvbiBjb21wYXJlTnVtYmVycyhhLCBiKSB7IC8vIGZvciAuc29ydCgpCglyZXR1cm4gYSAtIGI7Cn0KCgpmdW5jdGlvbiBpc0ludChuKSB7CglyZXR1cm4gbiAlIDEgPT09IDA7Cn0KCgovLyBSZXR1cm5zIGEgbWV0aG9kIGJvdW5kIHRvIHRoZSBnaXZlbiBvYmplY3QgY29udGV4dC4KLy8gSnVzdCBsaWtlIG9uZSBvZiB0aGUgalF1ZXJ5LnByb3h5IHNpZ25hdHVyZXMsIGJ1dCB3aXRob3V0IHRoZSB1bmRlc2lyZWQgYmVoYXZpb3Igb2YgdHJlYXRpbmcgdGhlIHNhbWUgbWV0aG9kIHdpdGgKLy8gZGlmZmVyZW50IGNvbnRleHRzIGFzIGlkZW50aWNhbCB3aGVuIGJpbmRpbmcvdW5iaW5kaW5nIGV2ZW50cy4KZnVuY3Rpb24gcHJveHkob2JqLCBtZXRob2ROYW1lKSB7Cgl2YXIgbWV0aG9kID0gb2JqW21ldGhvZE5hbWVdOwoKCXJldHVybiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gbWV0aG9kLmFwcGx5KG9iaiwgYXJndW1lbnRzKTsKCX07Cn0KCgovLyBSZXR1cm5zIGEgZnVuY3Rpb24sIHRoYXQsIGFzIGxvbmcgYXMgaXQgY29udGludWVzIHRvIGJlIGludm9rZWQsIHdpbGwgbm90Ci8vIGJlIHRyaWdnZXJlZC4gVGhlIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGFmdGVyIGl0IHN0b3BzIGJlaW5nIGNhbGxlZCBmb3IKLy8gTiBtaWxsaXNlY29uZHMuIElmIGBpbW1lZGlhdGVgIGlzIHBhc3NlZCwgdHJpZ2dlciB0aGUgZnVuY3Rpb24gb24gdGhlCi8vIGxlYWRpbmcgZWRnZSwgaW5zdGVhZCBvZiB0aGUgdHJhaWxpbmcuCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9qYXNoa2VuYXMvdW5kZXJzY29yZS9ibG9iLzEuNi4wL3VuZGVyc2NvcmUuanMjTDcxNApmdW5jdGlvbiBkZWJvdW5jZShmdW5jLCB3YWl0LCBpbW1lZGlhdGUpIHsKCXZhciB0aW1lb3V0LCBhcmdzLCBjb250ZXh0LCB0aW1lc3RhbXAsIHJlc3VsdDsKCgl2YXIgbGF0ZXIgPSBmdW5jdGlvbigpIHsKCQl2YXIgbGFzdCA9ICtuZXcgRGF0ZSgpIC0gdGltZXN0YW1wOwoJCWlmIChsYXN0IDwgd2FpdCkgewoJCQl0aW1lb3V0ID0gc2V0VGltZW91dChsYXRlciwgd2FpdCAtIGxhc3QpOwoJCX0KCQllbHNlIHsKCQkJdGltZW91dCA9IG51bGw7CgkJCWlmICghaW1tZWRpYXRlKSB7CgkJCQlyZXN1bHQgPSBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpOwoJCQkJY29udGV4dCA9IGFyZ3MgPSBudWxsOwoJCQl9CgkJfQoJfTsKCglyZXR1cm4gZnVuY3Rpb24oKSB7CgkJY29udGV4dCA9IHRoaXM7CgkJYXJncyA9IGFyZ3VtZW50czsKCQl0aW1lc3RhbXAgPSArbmV3IERhdGUoKTsKCQl2YXIgY2FsbE5vdyA9IGltbWVkaWF0ZSAmJiAhdGltZW91dDsKCQlpZiAoIXRpbWVvdXQpIHsKCQkJdGltZW91dCA9IHNldFRpbWVvdXQobGF0ZXIsIHdhaXQpOwoJCX0KCQlpZiAoY2FsbE5vdykgewoJCQlyZXN1bHQgPSBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpOwoJCQljb250ZXh0ID0gYXJncyA9IG51bGw7CgkJfQoJCXJldHVybiByZXN1bHQ7Cgl9Owp9Cgo7OwoKLyoKR0VORVJBTCBOT1RFIG9uIG1vbWVudHMgdGhyb3VnaG91dCB0aGUgKmVudGlyZSByZXN0KiBvZiB0aGUgY29kZWJhc2U6CkFsbCBtb21lbnRzIGFyZSBhc3N1bWVkIHRvIGJlIGFtYmlndW91c2x5LXpvbmVkIHVubGVzcyBvdGhlcndpc2Ugbm90ZWQsCndpdGggdGhlIE5PVEFCTEUgRVhDRU9QVElPTiBvZiBzdGFydC9lbmQgZGF0ZXMgdGhhdCBsaXZlIG9uICpFdmVudCBPYmplY3RzKi4KQW1iaWd1b3VzbHktVElNRUQgbW9tZW50cyBhcmUgYXNzdW1lZCB0byBiZSBhbWJpZ3VvdXNseS16b25lZCBieSBuYXR1cmUuCiovCgp2YXIgYW1iaWdEYXRlT2ZNb250aFJlZ2V4ID0gL15ccypcZHs0fS1cZFxkJC87CnZhciBhbWJpZ1RpbWVPclpvbmVSZWdleCA9CgkvXlxzKlxkezR9LSg/OihcZFxkLVxkXGQpfChXXGRcZCQpfChXXGRcZC1cZCl8KFxkXGRcZCkpKChUfCApKFxkXGQoOlxkXGQoOlxkXGQoXC5cZCspPyk/KT8pPyk/JC87CnZhciBuZXdNb21lbnRQcm90byA9IG1vbWVudC5mbjsgLy8gd2hlcmUgd2Ugd2lsbCBhdHRhY2ggb3VyIG5ldyBtZXRob2RzCnZhciBvbGRNb21lbnRQcm90byA9ICQuZXh0ZW5kKHt9LCBuZXdNb21lbnRQcm90byk7IC8vIGNvcHkgb2Ygb3JpZ2luYWwgbW9tZW50IG1ldGhvZHMKCi8vIHRlbGwgbW9tZW50anMgdG8gdHJhbnNmZXIgdGhlc2UgcHJvcGVydGllcyB1cG9uIGNsb25lCnZhciBtb21lbnRQcm9wZXJ0aWVzID0gbW9tZW50Lm1vbWVudFByb3BlcnRpZXM7Cm1vbWVudFByb3BlcnRpZXMucHVzaCgnX2Z1bGxDYWxlbmRhcicpOwptb21lbnRQcm9wZXJ0aWVzLnB1c2goJ19hbWJpZ1RpbWUnKTsKbW9tZW50UHJvcGVydGllcy5wdXNoKCdfYW1iaWdab25lJyk7CgoKLy8gQ3JlYXRpbmcKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gQ3JlYXRlcyBhIG5ldyBtb21lbnQsIHNpbWlsYXIgdG8gdGhlIHZhbmlsbGEgbW9tZW50KC4uLikgY29uc3RydWN0b3IsIGJ1dCB3aXRoCi8vIGV4dHJhIGZlYXR1cmVzIChhbWJpZ3VvdXMgdGltZSwgZW5oYW5jZWQgZm9ybWF0dGluZykuIFdoZW4gZ2l2ZW4gYW4gZXhpc3RpbmcgbW9tZW50LAovLyBpdCB3aWxsIGZ1bmN0aW9uIGFzIGEgY2xvbmUgKGFuZCByZXRhaW4gdGhlIHpvbmUgb2YgdGhlIG1vbWVudCkuIEFueXRoaW5nIGVsc2Ugd2lsbAovLyByZXN1bHQgaW4gYSBtb21lbnQgaW4gdGhlIGxvY2FsIHpvbmUuCkZDLm1vbWVudCA9IGZ1bmN0aW9uKCkgewoJcmV0dXJuIG1ha2VNb21lbnQoYXJndW1lbnRzKTsKfTsKCi8vIFNhbWVzIGFzIEZDLm1vbWVudCwgYnV0IGZvcmNlcyB0aGUgcmVzdWx0aW5nIG1vbWVudCB0byBiZSBpbiB0aGUgVVRDIHRpbWV6b25lLgpGQy5tb21lbnQudXRjID0gZnVuY3Rpb24oKSB7Cgl2YXIgbW9tID0gbWFrZU1vbWVudChhcmd1bWVudHMsIHRydWUpOwoKCS8vIEZvcmNlIGl0IGludG8gVVRDIGJlY2F1c2UgbWFrZU1vbWVudCBkb2Vzbid0IGd1YXJhbnRlZSBpdAoJLy8gKGlmIGdpdmVuIGEgcHJlLWV4aXN0aW5nIG1vbWVudCBmb3IgZXhhbXBsZSkKCWlmIChtb20uaGFzVGltZSgpKSB7IC8vIGRvbid0IGdpdmUgYW1iaWd1b3VzbHktdGltZWQgbW9tZW50cyBhIFVUQyB6b25lCgkJbW9tLnV0YygpOwoJfQoKCXJldHVybiBtb207Cn07CgovLyBTYW1lIGFzIEZDLm1vbWVudCwgYnV0IHdoZW4gZ2l2ZW4gYW4gSVNPODYwMSBzdHJpbmcsIHRoZSB0aW1lem9uZSBvZmZzZXQgaXMgcHJlc2VydmVkLgovLyBJU084NjAxIHN0cmluZ3Mgd2l0aCBubyB0aW1lem9uZSBvZmZzZXQgd2lsbCBiZWNvbWUgYW1iaWd1b3VzbHkgem9uZWQuCkZDLm1vbWVudC5wYXJzZVpvbmUgPSBmdW5jdGlvbigpIHsKCXJldHVybiBtYWtlTW9tZW50KGFyZ3VtZW50cywgdHJ1ZSwgdHJ1ZSk7Cn07CgovLyBCdWlsZHMgYW4gZW5oYW5jZWQgbW9tZW50IGZyb20gYXJncy4gV2hlbiBnaXZlbiBhbiBleGlzdGluZyBtb21lbnQsIGl0IGNsb25lcy4gV2hlbiBnaXZlbiBhCi8vIG5hdGl2ZSBEYXRlLCBvciBjYWxsZWQgd2l0aCBubyBhcmd1bWVudHMgKHRoZSBjdXJyZW50IHRpbWUpLCB0aGUgcmVzdWx0aW5nIG1vbWVudCB3aWxsIGJlIGxvY2FsLgovLyBBbnl0aGluZyBlbHNlIG5lZWRzIHRvIGJlICJwYXJzZWQiIChhIHN0cmluZyBvciBhbiBhcnJheSksIGFuZCB3aWxsIGJlIGFmZmVjdGVkIGJ5OgovLyAgICBwYXJzZUFzVVRDIC0gaWYgdGhlcmUgaXMgbm8gem9uZSBpbmZvcm1hdGlvbiwgc2hvdWxkIHdlIHBhcnNlIHRoZSBpbnB1dCBpbiBVVEM/Ci8vICAgIHBhcnNlWm9uZSAtIGlmIHRoZXJlIGlzIHpvbmUgaW5mb3JtYXRpb24sIHNob3VsZCB3ZSBmb3JjZSB0aGUgem9uZSBvZiB0aGUgbW9tZW50PwpmdW5jdGlvbiBtYWtlTW9tZW50KGFyZ3MsIHBhcnNlQXNVVEMsIHBhcnNlWm9uZSkgewoJdmFyIGlucHV0ID0gYXJnc1swXTsKCXZhciBpc1NpbmdsZVN0cmluZyA9IGFyZ3MubGVuZ3RoID09IDEgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJzsKCXZhciBpc0FtYmlnVGltZTsKCXZhciBpc0FtYmlnWm9uZTsKCXZhciBhbWJpZ01hdGNoOwoJdmFyIG1vbTsKCglpZiAobW9tZW50LmlzTW9tZW50KGlucHV0KSB8fCBpc05hdGl2ZURhdGUoaW5wdXQpIHx8IGlucHV0ID09PSB1bmRlZmluZWQpIHsKCQltb20gPSBtb21lbnQuYXBwbHkobnVsbCwgYXJncyk7Cgl9CgllbHNlIHsgLy8gInBhcnNpbmciIGlzIHJlcXVpcmVkCgkJaXNBbWJpZ1RpbWUgPSBmYWxzZTsKCQlpc0FtYmlnWm9uZSA9IGZhbHNlOwoKCQlpZiAoaXNTaW5nbGVTdHJpbmcpIHsKCQkJaWYgKGFtYmlnRGF0ZU9mTW9udGhSZWdleC50ZXN0KGlucHV0KSkgewoJCQkJLy8gYWNjZXB0IHN0cmluZ3MgbGlrZSAnMjAxNC0wNScsIGJ1dCBjb252ZXJ0IHRvIHRoZSBmaXJzdCBvZiB0aGUgbW9udGgKCQkJCWlucHV0ICs9ICctMDEnOwoJCQkJYXJncyA9IFsgaW5wdXQgXTsgLy8gZm9yIHdoZW4gd2UgcGFzcyBpdCBvbiB0byBtb21lbnQncyBjb25zdHJ1Y3RvcgoJCQkJaXNBbWJpZ1RpbWUgPSB0cnVlOwoJCQkJaXNBbWJpZ1pvbmUgPSB0cnVlOwoJCQl9CgkJCWVsc2UgaWYgKChhbWJpZ01hdGNoID0gYW1iaWdUaW1lT3Jab25lUmVnZXguZXhlYyhpbnB1dCkpKSB7CgkJCQlpc0FtYmlnVGltZSA9ICFhbWJpZ01hdGNoWzVdOyAvLyBubyB0aW1lIHBhcnQ/CgkJCQlpc0FtYmlnWm9uZSA9IHRydWU7CgkJCX0KCQl9CgkJZWxzZSBpZiAoJC5pc0FycmF5KGlucHV0KSkgewoJCQkvLyBhcnJheXMgaGF2ZSBubyB0aW1lem9uZSBpbmZvcm1hdGlvbiwgc28gYXNzdW1lIGFtYmlndW91cyB6b25lCgkJCWlzQW1iaWdab25lID0gdHJ1ZTsKCQl9CgkJLy8gb3RoZXJ3aXNlLCBwcm9iYWJseSBhIHN0cmluZyB3aXRoIGEgZm9ybWF0CgoJCWlmIChwYXJzZUFzVVRDIHx8IGlzQW1iaWdUaW1lKSB7CgkJCW1vbSA9IG1vbWVudC51dGMuYXBwbHkobW9tZW50LCBhcmdzKTsKCQl9CgkJZWxzZSB7CgkJCW1vbSA9IG1vbWVudC5hcHBseShudWxsLCBhcmdzKTsKCQl9CgoJCWlmIChpc0FtYmlnVGltZSkgewoJCQltb20uX2FtYmlnVGltZSA9IHRydWU7CgkJCW1vbS5fYW1iaWdab25lID0gdHJ1ZTsgLy8gYW1iaWd1b3VzIHRpbWUgYWx3YXlzIG1lYW5zIGFtYmlndW91cyB6b25lCgkJfQoJCWVsc2UgaWYgKHBhcnNlWm9uZSkgeyAvLyBsZXQncyByZWNvcmQgdGhlIGlucHV0dGVkIHpvbmUgc29tZWhvdwoJCQlpZiAoaXNBbWJpZ1pvbmUpIHsKCQkJCW1vbS5fYW1iaWdab25lID0gdHJ1ZTsKCQkJfQoJCQllbHNlIGlmIChpc1NpbmdsZVN0cmluZykgewoJCQkJbW9tLnV0Y09mZnNldChpbnB1dCk7IC8vIGlmIG5vdCBhIHZhbGlkIHpvbmUsIHdpbGwgYXNzaWduIFVUQwoJCQl9CgkJfQoJfQoKCW1vbS5fZnVsbENhbGVuZGFyID0gdHJ1ZTsgLy8gZmxhZyBmb3IgZXh0ZW5kZWQgZnVuY3Rpb25hbGl0eQoKCXJldHVybiBtb207Cn0KCgovLyBXZWVrIE51bWJlcgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKLy8gUmV0dXJucyB0aGUgd2VlayBudW1iZXIsIGNvbnNpZGVyaW5nIHRoZSBsb2NhbGUncyBjdXN0b20gd2VlayBudW1iZXIgY2FsY3VhdGlvbgovLyBgd2Vla3NgIGlzIGFuIGFsaWFzIGZvciBgd2Vla2AKbmV3TW9tZW50UHJvdG8ud2VlayA9IG5ld01vbWVudFByb3RvLndlZWtzID0gZnVuY3Rpb24oaW5wdXQpIHsKCXZhciB3ZWVrQ2FsYyA9IHRoaXMuX2xvY2FsZS5fZnVsbENhbGVuZGFyX3dlZWtDYWxjOwoKCWlmIChpbnB1dCA9PSBudWxsICYmIHR5cGVvZiB3ZWVrQ2FsYyA9PT0gJ2Z1bmN0aW9uJykgeyAvLyBjdXN0b20gZnVuY3Rpb24gb25seSB3b3JrcyBmb3IgZ2V0dGVyCgkJcmV0dXJuIHdlZWtDYWxjKHRoaXMpOwoJfQoJZWxzZSBpZiAod2Vla0NhbGMgPT09ICdJU08nKSB7CgkJcmV0dXJuIG9sZE1vbWVudFByb3RvLmlzb1dlZWsuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgLy8gSVNPIGdldHRlci9zZXR0ZXIKCX0KCglyZXR1cm4gb2xkTW9tZW50UHJvdG8ud2Vlay5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyAvLyBsb2NhbCBnZXR0ZXIvc2V0dGVyCn07CgoKLy8gVGltZS1vZi1kYXkKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gR0VUVEVSCi8vIFJldHVybnMgYSBEdXJhdGlvbiB3aXRoIHRoZSBob3Vycy9taW51dGVzL3NlY29uZHMvbXMgdmFsdWVzIG9mIHRoZSBtb21lbnQuCi8vIElmIHRoZSBtb21lbnQgaGFzIGFuIGFtYmlndW91cyB0aW1lLCBhIGR1cmF0aW9uIG9mIDAwOjAwIHdpbGwgYmUgcmV0dXJuZWQuCi8vCi8vIFNFVFRFUgovLyBZb3UgY2FuIHN1cHBseSBhIER1cmF0aW9uLCBhIE1vbWVudCwgb3IgYSBEdXJhdGlvbi1saWtlIGFyZ3VtZW50LgovLyBXaGVuIHNldHRpbmcgdGhlIHRpbWUsIGFuZCB0aGUgbW9tZW50IGhhcyBhbiBhbWJpZ3VvdXMgdGltZSwgaXQgdGhlbiBiZWNvbWVzIHVuYW1iaWd1b3VzLgpuZXdNb21lbnRQcm90by50aW1lID0gZnVuY3Rpb24odGltZSkgewoKCS8vIEZhbGxiYWNrIHRvIHRoZSBvcmlnaW5hbCBtZXRob2QgKGlmIHRoZXJlIGlzIG9uZSkgaWYgdGhpcyBtb21lbnQgd2Fzbid0IGNyZWF0ZWQgdmlhIEZ1bGxDYWxlbmRhci4KCS8vIGB0aW1lYCBpcyBhIGdlbmVyaWMgZW5vdWdoIG1ldGhvZCBuYW1lIHdoZXJlIHRoaXMgcHJlY2F1dGlvbiBpcyBuZWNlc3NhcnkgdG8gYXZvaWQgY29sbGlzaW9ucyB3LyBvdGhlciBwbHVnaW5zLgoJaWYgKCF0aGlzLl9mdWxsQ2FsZW5kYXIpIHsKCQlyZXR1cm4gb2xkTW9tZW50UHJvdG8udGltZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwoJfQoKCWlmICh0aW1lID09IG51bGwpIHsgLy8gZ2V0dGVyCgkJcmV0dXJuIG1vbWVudC5kdXJhdGlvbih7CgkJCWhvdXJzOiB0aGlzLmhvdXJzKCksCgkJCW1pbnV0ZXM6IHRoaXMubWludXRlcygpLAoJCQlzZWNvbmRzOiB0aGlzLnNlY29uZHMoKSwKCQkJbWlsbGlzZWNvbmRzOiB0aGlzLm1pbGxpc2Vjb25kcygpCgkJfSk7Cgl9CgllbHNlIHsgLy8gc2V0dGVyCgoJCXRoaXMuX2FtYmlnVGltZSA9IGZhbHNlOyAvLyBtYXJrIHRoYXQgdGhlIG1vbWVudCBub3cgaGFzIGEgdGltZQoKCQlpZiAoIW1vbWVudC5pc0R1cmF0aW9uKHRpbWUpICYmICFtb21lbnQuaXNNb21lbnQodGltZSkpIHsKCQkJdGltZSA9IG1vbWVudC5kdXJhdGlvbih0aW1lKTsKCQl9CgoJCS8vIFRoZSBkYXkgdmFsdWUgc2hvdWxkIGNhdXNlIG92ZXJmbG93IChzbyAyNCBob3VycyBiZWNvbWVzIDAwOjAwOjAwIG9mIG5leHQgZGF5KS4KCQkvLyBPbmx5IGZvciBEdXJhdGlvbiB0aW1lcywgbm90IE1vbWVudCB0aW1lcy4KCQl2YXIgZGF5SG91cnMgPSAwOwoJCWlmIChtb21lbnQuaXNEdXJhdGlvbih0aW1lKSkgewoJCQlkYXlIb3VycyA9IE1hdGguZmxvb3IodGltZS5hc0RheXMoKSkgKiAyNDsKCQl9CgoJCS8vIFdlIG5lZWQgdG8gc2V0IHRoZSBpbmRpdmlkdWFsIGZpZWxkcy4KCQkvLyBDYW4ndCB1c2Ugc3RhcnRPZignZGF5JykgdGhlbiBhZGQgZHVyYXRpb24uIEluIGNhc2Ugb2YgRFNUIGF0IHN0YXJ0IG9mIGRheS4KCQlyZXR1cm4gdGhpcy5ob3VycyhkYXlIb3VycyArIHRpbWUuaG91cnMoKSkKCQkJLm1pbnV0ZXModGltZS5taW51dGVzKCkpCgkJCS5zZWNvbmRzKHRpbWUuc2Vjb25kcygpKQoJCQkubWlsbGlzZWNvbmRzKHRpbWUubWlsbGlzZWNvbmRzKCkpOwoJfQp9OwoKLy8gQ29udmVydHMgdGhlIG1vbWVudCB0byBVVEMsIHN0cmlwcGluZyBvdXQgaXRzIHRpbWUtb2YtZGF5IGFuZCB0aW1lem9uZSBvZmZzZXQsCi8vIGJ1dCBwcmVzZXJ2aW5nIGl0cyBZTUQuIEEgbW9tZW50IHdpdGggYSBzdHJpcHBlZCB0aW1lIHdpbGwgZGlzcGxheSBubyB0aW1lCi8vIG5vciB0aW1lem9uZSBvZmZzZXQgd2hlbiAuZm9ybWF0KCkgaXMgY2FsbGVkLgpuZXdNb21lbnRQcm90by5zdHJpcFRpbWUgPSBmdW5jdGlvbigpIHsKCglpZiAoIXRoaXMuX2FtYmlnVGltZSkgewoKCQl0aGlzLnV0Yyh0cnVlKTsgLy8ga2VlcExvY2FsVGltZT10cnVlIChmb3Iga2VlcGluZyAqZGF0ZSogdmFsdWUpCgoJCS8vIHNldCB0aW1lIHRvIHplcm8KCQl0aGlzLnNldCh7CgkJCWhvdXJzOiAwLAoJCQltaW51dGVzOiAwLAoJCQlzZWNvbmRzOiAwLAoJCQltczogMAoJCX0pOwoKCQkvLyBNYXJrIHRoZSB0aW1lIGFzIGFtYmlndW91cy4gVGhpcyBuZWVkcyB0byBoYXBwZW4gYWZ0ZXIgdGhlIC51dGMoKSBjYWxsLCB3aGljaCBtaWdodCBjYWxsIC51dGNPZmZzZXQoKSwKCQkvLyB3aGljaCBjbGVhcnMgYWxsIGFtYmlnIGZsYWdzLgoJCXRoaXMuX2FtYmlnVGltZSA9IHRydWU7CgkJdGhpcy5fYW1iaWdab25lID0gdHJ1ZTsgLy8gaWYgYW1iaWd1b3VzIHRpbWUsIGFsc28gYW1iaWd1b3VzIHRpbWV6b25lIG9mZnNldAoJfQoKCXJldHVybiB0aGlzOyAvLyBmb3IgY2hhaW5pbmcKfTsKCi8vIFJldHVybnMgaWYgdGhlIG1vbWVudCBoYXMgYSBub24tYW1iaWd1b3VzIHRpbWUgKGJvb2xlYW4pCm5ld01vbWVudFByb3RvLmhhc1RpbWUgPSBmdW5jdGlvbigpIHsKCXJldHVybiAhdGhpcy5fYW1iaWdUaW1lOwp9OwoKCi8vIFRpbWV6b25lCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIENvbnZlcnRzIHRoZSBtb21lbnQgdG8gVVRDLCBzdHJpcHBpbmcgb3V0IGl0cyB0aW1lem9uZSBvZmZzZXQsIGJ1dCBwcmVzZXJ2aW5nIGl0cwovLyBZTUQgYW5kIHRpbWUtb2YtZGF5LiBBIG1vbWVudCB3aXRoIGEgc3RyaXBwZWQgdGltZXpvbmUgb2Zmc2V0IHdpbGwgZGlzcGxheSBubwovLyB0aW1lem9uZSBvZmZzZXQgd2hlbiAuZm9ybWF0KCkgaXMgY2FsbGVkLgpuZXdNb21lbnRQcm90by5zdHJpcFpvbmUgPSBmdW5jdGlvbigpIHsKCXZhciB3YXNBbWJpZ1RpbWU7CgoJaWYgKCF0aGlzLl9hbWJpZ1pvbmUpIHsKCgkJd2FzQW1iaWdUaW1lID0gdGhpcy5fYW1iaWdUaW1lOwoKCQl0aGlzLnV0Yyh0cnVlKTsgLy8ga2VlcExvY2FsVGltZT10cnVlIChmb3Iga2VlcGluZyBkYXRlIGFuZCB0aW1lIHZhbHVlcykKCgkJLy8gdGhlIGFib3ZlIGNhbGwgdG8gLnV0YygpLy51dGNPZmZzZXQoKSB1bmZvcnR1bmF0ZWx5IG1pZ2h0IGNsZWFyIHRoZSBhbWJpZyBmbGFncywgc28gcmVzdG9yZQoJCXRoaXMuX2FtYmlnVGltZSA9IHdhc0FtYmlnVGltZSB8fCBmYWxzZTsKCgkJLy8gTWFyayB0aGUgem9uZSBhcyBhbWJpZ3VvdXMuIFRoaXMgbmVlZHMgdG8gaGFwcGVuIGFmdGVyIHRoZSAudXRjKCkgY2FsbCwgd2hpY2ggbWlnaHQgY2FsbCAudXRjT2Zmc2V0KCksCgkJLy8gd2hpY2ggY2xlYXJzIHRoZSBhbWJpZyBmbGFncy4KCQl0aGlzLl9hbWJpZ1pvbmUgPSB0cnVlOwoJfQoKCXJldHVybiB0aGlzOyAvLyBmb3IgY2hhaW5pbmcKfTsKCi8vIFJldHVybnMgb2YgdGhlIG1vbWVudCBoYXMgYSBub24tYW1iaWd1b3VzIHRpbWV6b25lIG9mZnNldCAoYm9vbGVhbikKbmV3TW9tZW50UHJvdG8uaGFzWm9uZSA9IGZ1bmN0aW9uKCkgewoJcmV0dXJuICF0aGlzLl9hbWJpZ1pvbmU7Cn07CgoKLy8gaW1wbGljaXRseSBtYXJrcyBhIHpvbmUKbmV3TW9tZW50UHJvdG8ubG9jYWwgPSBmdW5jdGlvbihrZWVwTG9jYWxUaW1lKSB7CgoJLy8gZm9yIHdoZW4gY29udmVydGluZyBmcm9tIGFtYmlndW91c2x5LXpvbmVkIHRvIGxvY2FsLAoJLy8ga2VlcCB0aGUgdGltZSB2YWx1ZXMgd2hlbiBjb252ZXJ0aW5nIGZyb20gVVRDIC0+IGxvY2FsCglvbGRNb21lbnRQcm90by5sb2NhbC5jYWxsKHRoaXMsIHRoaXMuX2FtYmlnWm9uZSB8fCBrZWVwTG9jYWxUaW1lKTsKCgkvLyBlbnN1cmUgbm9uLWFtYmlndW91cwoJLy8gdGhpcyBwcm9iYWJseSBhbHJlYWR5IGhhcHBlbmVkIHZpYSBsb2NhbCgpIC0+IHV0Y09mZnNldCgpLCBidXQgZG9uJ3QgcmVseSBvbiBNb21lbnQncyBpbnRlcm5hbHMKCXRoaXMuX2FtYmlnVGltZSA9IGZhbHNlOwoJdGhpcy5fYW1iaWdab25lID0gZmFsc2U7CgoJcmV0dXJuIHRoaXM7IC8vIGZvciBjaGFpbmluZwp9OwoKCi8vIGltcGxpY2l0bHkgbWFya3MgYSB6b25lCm5ld01vbWVudFByb3RvLnV0YyA9IGZ1bmN0aW9uKGtlZXBMb2NhbFRpbWUpIHsKCglvbGRNb21lbnRQcm90by51dGMuY2FsbCh0aGlzLCBrZWVwTG9jYWxUaW1lKTsKCgkvLyBlbnN1cmUgbm9uLWFtYmlndW91cwoJLy8gdGhpcyBwcm9iYWJseSBhbHJlYWR5IGhhcHBlbmVkIHZpYSB1dGMoKSAtPiB1dGNPZmZzZXQoKSwgYnV0IGRvbid0IHJlbHkgb24gTW9tZW50J3MgaW50ZXJuYWxzCgl0aGlzLl9hbWJpZ1RpbWUgPSBmYWxzZTsKCXRoaXMuX2FtYmlnWm9uZSA9IGZhbHNlOwoKCXJldHVybiB0aGlzOwp9OwoKCi8vIGltcGxpY2l0bHkgbWFya3MgYSB6b25lICh3aWxsIHByb2JhYmx5IGdldCBjYWxsZWQgdXBvbiAudXRjKCkgYW5kIC5sb2NhbCgpKQpuZXdNb21lbnRQcm90by51dGNPZmZzZXQgPSBmdW5jdGlvbih0em8pIHsKCglpZiAodHpvICE9IG51bGwpIHsgLy8gc2V0dGVyCgkJLy8gdGhlc2UgYXNzaWdubWVudHMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSB0aGUgb3JpZ2luYWwgem9uZSBtZXRob2QgaXMgY2FsbGVkLgoJCS8vIEkgZm9yZ2V0IHdoeSwgc29tZXRoaW5nIHRvIGRvIHdpdGggYSBicm93c2VyIGNyYXNoLgoJCXRoaXMuX2FtYmlnVGltZSA9IGZhbHNlOwoJCXRoaXMuX2FtYmlnWm9uZSA9IGZhbHNlOwoJfQoKCXJldHVybiBvbGRNb21lbnRQcm90by51dGNPZmZzZXQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKfTsKCgovLyBGb3JtYXR0aW5nCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCm5ld01vbWVudFByb3RvLmZvcm1hdCA9IGZ1bmN0aW9uKCkgewoJaWYgKHRoaXMuX2Z1bGxDYWxlbmRhciAmJiBhcmd1bWVudHNbMF0pIHsgLy8gYW4gZW5oYW5jZWQgbW9tZW50PyBhbmQgYSBmb3JtYXQgc3RyaW5nIHByb3ZpZGVkPwoJCXJldHVybiBmb3JtYXREYXRlKHRoaXMsIGFyZ3VtZW50c1swXSk7IC8vIG91ciBleHRlbmRlZCBmb3JtYXR0aW5nCgl9CglpZiAodGhpcy5fYW1iaWdUaW1lKSB7CgkJcmV0dXJuIG9sZE1vbWVudEZvcm1hdCh0aGlzLCAnWVlZWS1NTS1ERCcpOwoJfQoJaWYgKHRoaXMuX2FtYmlnWm9uZSkgewoJCXJldHVybiBvbGRNb21lbnRGb3JtYXQodGhpcywgJ1lZWVktTU0tRERbVF1ISDptbTpzcycpOwoJfQoJcmV0dXJuIG9sZE1vbWVudFByb3RvLmZvcm1hdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwp9OwoKbmV3TW9tZW50UHJvdG8udG9JU09TdHJpbmcgPSBmdW5jdGlvbigpIHsKCWlmICh0aGlzLl9hbWJpZ1RpbWUpIHsKCQlyZXR1cm4gb2xkTW9tZW50Rm9ybWF0KHRoaXMsICdZWVlZLU1NLUREJyk7Cgl9CglpZiAodGhpcy5fYW1iaWdab25lKSB7CgkJcmV0dXJuIG9sZE1vbWVudEZvcm1hdCh0aGlzLCAnWVlZWS1NTS1ERFtUXUhIOm1tOnNzJyk7Cgl9CglyZXR1cm4gb2xkTW9tZW50UHJvdG8udG9JU09TdHJpbmcuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKfTsKCjs7CihmdW5jdGlvbigpIHsKCi8vIGV4cG9ydHMKRkMuZm9ybWF0RGF0ZSA9IGZvcm1hdERhdGU7CkZDLmZvcm1hdFJhbmdlID0gZm9ybWF0UmFuZ2U7CkZDLm9sZE1vbWVudEZvcm1hdCA9IG9sZE1vbWVudEZvcm1hdDsKRkMucXVlcnlNb3N0R3JhbnVsYXJGb3JtYXRVbml0ID0gcXVlcnlNb3N0R3JhbnVsYXJGb3JtYXRVbml0OwoKCi8vIENvbmZpZwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8qCkluc2VydGVkIGJldHdlZW4gY2h1bmtzIGluIHRoZSBmYWtlICgiaW50ZXJtZWRpYXRlIikgZm9ybWF0dGluZyBzdHJpbmcuCkltcG9ydGFudCB0aGF0IGl0IHBhc3NlcyBhcyB3aGl0ZXNwYWNlIChccykgYmVjYXVzZSBtb21lbnQgb2Z0ZW4gaWRlbnRpZmllcyBub24tc3RhbmRhbG9uZSBtb250aHMKdmlhIGEgcmVnZXhwIHdpdGggYW4gXHMuCiovCnZhciBQQVJUX1NFUEFSQVRPUiA9ICdcdTAwMGInOyAvLyB2ZXJ0aWNhbCB0YWIKCi8qCkluc2VydGVkIGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYSBsaXRlcmFsLXRleHQgY2h1bmsgdG8gaW5kaWNhdGUgdGhhdCB0aGUgbGl0ZXJhbCB0ZXh0IGlzIG5vdCBhY3R1YWxseSBsaXRlcmFsIHRleHQsCmJ1dCByYXRoZXIsIGEgInNwZWNpYWwiIHRva2VuIHRoYXQgaGFzIGN1c3RvbSByZW5kZXJpbmcgKHNlZSBzcGVjaWFsVG9rZW5zIG1hcCkuCiovCnZhciBTUEVDSUFMX1RPS0VOX01BUktFUiA9ICdcdTAwMWYnOyAvLyBpbmZvcm1hdGlvbiBzZXBhcmF0b3IgMQoKLyoKSW5zZXJ0ZWQgYXQgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIGEgc3BhbiBvZiB0ZXh0IHRoYXQgbXVzdCBoYXZlIG5vbi16ZXJvIG51bWVyaWMgY2hhcmFjdGVycy4KSGFuZGxpbmcgb2YgdGhlc2UgbWFya2VycyBpcyBkb25lIGluIGEgcG9zdC1wcm9jZXNzaW5nIHN0ZXAgYXQgdGhlIHZlcnkgZW5kIG9mIHRleHQgcmVuZGVyaW5nLgoqLwp2YXIgTUFZQkVfTUFSS0VSID0gJ1x1MDAxZSc7IC8vIGluZm9ybWF0aW9uIHNlcGFyYXRvciAyCnZhciBNQVlCRV9SRUdFWFAgPSBuZXcgUmVnRXhwKE1BWUJFX01BUktFUiArICcoW14nICsgTUFZQkVfTUFSS0VSICsgJ10qKScgKyBNQVlCRV9NQVJLRVIsICdnJyk7IC8vIG11c3QgYmUgZ2xvYmFsCgovKgpBZGRpdGlvbiBmb3JtYXR0aW5nIHRva2VucyB3ZSB3YW50IHJlY29nbml6ZWQKKi8KdmFyIHNwZWNpYWxUb2tlbnMgPSB7Cgl0OiBmdW5jdGlvbihkYXRlKSB7IC8vICJhIiBvciAicCIKCQlyZXR1cm4gb2xkTW9tZW50Rm9ybWF0KGRhdGUsICdhJykuY2hhckF0KDApOwoJfSwKCVQ6IGZ1bmN0aW9uKGRhdGUpIHsgLy8gIkEiIG9yICJQIgoJCXJldHVybiBvbGRNb21lbnRGb3JtYXQoZGF0ZSwgJ0EnKS5jaGFyQXQoMCk7Cgl9Cn07CgovKgpUaGUgZmlyc3QgY2hhcmFjdGVycyBvZiBmb3JtYXR0aW5nIHRva2VucyBmb3IgdW5pdHMgdGhhdCBhcmUgMSBkYXkgb3IgbGFyZ2VyLgpgdmFsdWVgIGlzIGZvciByYW5raW5nIHJlbGF0aXZlIHNpemUgKGxvd2VyIG1lYW5zIGJpZ2dlcikuCmB1bml0YCBpcyBhIG5vcm1hbGl6ZWQgdW5pdCwgdXNlZCBmb3IgY29tcGFyaW5nIG1vbWVudHMuCiovCnZhciBsYXJnZVRva2VuTWFwID0gewoJWTogeyB2YWx1ZTogMSwgdW5pdDogJ3llYXInIH0sCglNOiB7IHZhbHVlOiAyLCB1bml0OiAnbW9udGgnIH0sCglXOiB7IHZhbHVlOiAzLCB1bml0OiAnd2VlaycgfSwgLy8gSVNPIHdlZWsKCXc6IHsgdmFsdWU6IDMsIHVuaXQ6ICd3ZWVrJyB9LCAvLyBsb2NhbCB3ZWVrCglEOiB7IHZhbHVlOiA0LCB1bml0OiAnZGF5JyB9LCAvLyBkYXkgb2YgbW9udGgKCWQ6IHsgdmFsdWU6IDQsIHVuaXQ6ICdkYXknIH0gLy8gZGF5IG9mIHdlZWsKfTsKCgovLyBTaW5nbGUgRGF0ZSBGb3JtYXR0aW5nCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLyoKRm9ybWF0cyBgZGF0ZWAgd2l0aCBhIE1vbWVudCBmb3JtYXR0aW5nIHN0cmluZywgYnV0IGFsbG93IG91ciBub24temVybyBhcmVhcyBhbmQgc3BlY2lhbCB0b2tlbgoqLwpmdW5jdGlvbiBmb3JtYXREYXRlKGRhdGUsIGZvcm1hdFN0cikgewoJcmV0dXJuIHJlbmRlckZha2VGb3JtYXRTdHJpbmcoCgkJZ2V0UGFyc2VkRm9ybWF0U3RyaW5nKGZvcm1hdFN0cikuZmFrZUZvcm1hdFN0cmluZywKCQlkYXRlCgkpOwp9CgovKgpDYWxsIHRoaXMgaWYgeW91IHdhbnQgTW9tZW50J3Mgb3JpZ2luYWwgZm9ybWF0IG1ldGhvZCB0byBiZSB1c2VkCiovCmZ1bmN0aW9uIG9sZE1vbWVudEZvcm1hdChtb20sIGZvcm1hdFN0cikgewoJcmV0dXJuIG9sZE1vbWVudFByb3RvLmZvcm1hdC5jYWxsKG1vbSwgZm9ybWF0U3RyKTsgLy8gb2xkTW9tZW50UHJvdG8gZGVmaW5lZCBpbiBtb21lbnQtZXh0LmpzCn0KCgovLyBEYXRlIFJhbmdlIEZvcm1hdHRpbmcKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBUT0RPOiBtYWtlIGl0IHdvcmsgd2l0aCB0aW1lem9uZSBvZmZzZXQKCi8qClVzaW5nIGEgZm9ybWF0dGluZyBzdHJpbmcgbWVhbnQgZm9yIGEgc2luZ2xlIGRhdGUsIGdlbmVyYXRlIGEgcmFuZ2Ugc3RyaW5nLCBsaWtlCiJTZXAgMiAtIDkgMjAxMyIsIHRoYXQgaW50ZWxsaWdlbnRseSBpbnNlcnRzIGEgc2VwYXJhdG9yIHdoZXJlIHRoZSBkYXRlcyBkaWZmZXIuCklmIHRoZSBkYXRlcyBhcmUgdGhlIHNhbWUgYXMgZmFyIGFzIHRoZSBmb3JtYXQgc3RyaW5nIGlzIGNvbmNlcm5lZCwganVzdCByZXR1cm4gYSBzaW5nbGUKcmVuZGVyaW5nIG9mIG9uZSBkYXRlLCB3aXRob3V0IGFueSBzZXBhcmF0b3IuCiovCmZ1bmN0aW9uIGZvcm1hdFJhbmdlKGRhdGUxLCBkYXRlMiwgZm9ybWF0U3RyLCBzZXBhcmF0b3IsIGlzUlRMKSB7Cgl2YXIgbG9jYWxlRGF0YTsKCglkYXRlMSA9IEZDLm1vbWVudC5wYXJzZVpvbmUoZGF0ZTEpOwoJZGF0ZTIgPSBGQy5tb21lbnQucGFyc2Vab25lKGRhdGUyKTsKCglsb2NhbGVEYXRhID0gZGF0ZTEubG9jYWxlRGF0YSgpOwoKCS8vIEV4cGFuZCBsb2NhbGl6ZWQgZm9ybWF0IHN0cmluZ3MsIGxpa2UgIkxMIiAtPiAiTU1NTSBEIFlZWVkiLgoJLy8gQlRXLCB0aGlzIGlzIG5vdCBpbXBvcnRhbnQgZm9yIGBmb3JtYXREYXRlYCBiZWNhdXNlIGl0IGlzIGltcG9zc2libGUgdG8gcHV0IGN1c3RvbSB0b2tlbnMKCS8vIG9yIG5vbi16ZXJvIGFyZWFzIGluIE1vbWVudCdzIGxvY2FsaXplZCBmb3JtYXQgc3RyaW5ncy4KCWZvcm1hdFN0ciA9IGxvY2FsZURhdGEubG9uZ0RhdGVGb3JtYXQoZm9ybWF0U3RyKSB8fCBmb3JtYXRTdHI7CgoJcmV0dXJuIHJlbmRlclBhcnNlZEZvcm1hdCgKCQlnZXRQYXJzZWRGb3JtYXRTdHJpbmcoZm9ybWF0U3RyKSwKCQlkYXRlMSwKCQlkYXRlMiwKCQlzZXBhcmF0b3IgfHwgJyAtICcsCgkJaXNSVEwKCSk7Cn0KCi8qClJlbmRlcnMgYSByYW5nZSB3aXRoIGFuIGFscmVhZHktcGFyc2VkIGZvcm1hdCBzdHJpbmcuCiovCmZ1bmN0aW9uIHJlbmRlclBhcnNlZEZvcm1hdChwYXJzZWRGb3JtYXQsIGRhdGUxLCBkYXRlMiwgc2VwYXJhdG9yLCBpc1JUTCkgewoJdmFyIHNhbWVVbml0cyA9IHBhcnNlZEZvcm1hdC5zYW1lVW5pdHM7Cgl2YXIgdW56b25lZERhdGUxID0gZGF0ZTEuY2xvbmUoKS5zdHJpcFpvbmUoKTsgLy8gZm9yIHNhbWUtdW5pdCBjb21wYXJpc29ucwoJdmFyIHVuem9uZWREYXRlMiA9IGRhdGUyLmNsb25lKCkuc3RyaXBab25lKCk7IC8vICIKCgl2YXIgcmVuZGVyZWRQYXJ0czEgPSByZW5kZXJGYWtlRm9ybWF0U3RyaW5nUGFydHMocGFyc2VkRm9ybWF0LmZha2VGb3JtYXRTdHJpbmcsIGRhdGUxKTsKCXZhciByZW5kZXJlZFBhcnRzMiA9IHJlbmRlckZha2VGb3JtYXRTdHJpbmdQYXJ0cyhwYXJzZWRGb3JtYXQuZmFrZUZvcm1hdFN0cmluZywgZGF0ZTIpOwoKCXZhciBsZWZ0STsKCXZhciBsZWZ0U3RyID0gJyc7Cgl2YXIgcmlnaHRJOwoJdmFyIHJpZ2h0U3RyID0gJyc7Cgl2YXIgbWlkZGxlSTsKCXZhciBtaWRkbGVTdHIxID0gJyc7Cgl2YXIgbWlkZGxlU3RyMiA9ICcnOwoJdmFyIG1pZGRsZVN0ciA9ICcnOwoKCS8vIFN0YXJ0IGF0IHRoZSBsZWZ0bW9zdCBzaWRlIG9mIHRoZSBmb3JtYXR0aW5nIHN0cmluZyBhbmQgY29udGludWUgdW50aWwgeW91IGhpdCBhIHRva2VuCgkvLyB0aGF0IGlzIG5vdCB0aGUgc2FtZSBiZXR3ZWVuIGRhdGVzLgoJZm9yICgKCQlsZWZ0SSA9IDA7CgkJbGVmdEkgPCBzYW1lVW5pdHMubGVuZ3RoICYmICghc2FtZVVuaXRzW2xlZnRJXSB8fCB1bnpvbmVkRGF0ZTEuaXNTYW1lKHVuem9uZWREYXRlMiwgc2FtZVVuaXRzW2xlZnRJXSkpOwoJCWxlZnRJKysKCSkgewoJCWxlZnRTdHIgKz0gcmVuZGVyZWRQYXJ0czFbbGVmdEldOwoJfQoKCS8vIFNpbWlsYXJseSwgc3RhcnQgYXQgdGhlIHJpZ2h0bW9zdCBzaWRlIG9mIHRoZSBmb3JtYXR0aW5nIHN0cmluZyBhbmQgbW92ZSBsZWZ0Cglmb3IgKAoJCXJpZ2h0SSA9IHNhbWVVbml0cy5sZW5ndGggLSAxOwoJCXJpZ2h0SSA+IGxlZnRJICYmICghc2FtZVVuaXRzW3JpZ2h0SV0gfHwgdW56b25lZERhdGUxLmlzU2FtZSh1bnpvbmVkRGF0ZTIsIHNhbWVVbml0c1tyaWdodEldKSk7CgkJcmlnaHRJLS0KCSkgewoJCS8vIElmIGN1cnJlbnQgY2h1bmsgaXMgb24gdGhlIGJvdW5kYXJ5IG9mIHVuaXF1ZSBkYXRlLWNvbnRlbnQsIGFuZCBpcyBhIHNwZWNpYWwtY2FzZQoJCS8vIGRhdGUtZm9ybWF0dGluZyBwb3N0Zml4IGNoYXJhY3RlciwgdGhlbiBkb24ndCBjb25zdW1lIGl0LiBDb25zaWRlciBpdCB1bmlxdWUgZGF0ZS1jb250ZW50LgoJCS8vIFRPRE86IG1ha2UgY29uZmlndXJhYmxlCgkJaWYgKHJpZ2h0SSAtIDEgPT09IGxlZnRJICYmIHJlbmRlcmVkUGFydHMxW3JpZ2h0SV0gPT09ICcuJykgewoJCQlicmVhazsKCQl9CgoJCXJpZ2h0U3RyID0gcmVuZGVyZWRQYXJ0czFbcmlnaHRJXSArIHJpZ2h0U3RyOwoJfQoKCS8vIFRoZSBhcmVhIGluIHRoZSBtaWRkbGUgaXMgZGlmZmVyZW50IGZvciBib3RoIG9mIHRoZSBkYXRlcy4KCS8vIENvbGxlY3QgdGhlbSBkaXN0aW5jdGx5IHNvIHdlIGNhbiBqYW0gdGhlbSB0b2dldGhlciBsYXRlci4KCWZvciAobWlkZGxlSSA9IGxlZnRJOyBtaWRkbGVJIDw9IHJpZ2h0STsgbWlkZGxlSSsrKSB7CgkJbWlkZGxlU3RyMSArPSByZW5kZXJlZFBhcnRzMVttaWRkbGVJXTsKCQltaWRkbGVTdHIyICs9IHJlbmRlcmVkUGFydHMyW21pZGRsZUldOwoJfQoKCWlmIChtaWRkbGVTdHIxIHx8IG1pZGRsZVN0cjIpIHsKCQlpZiAoaXNSVEwpIHsKCQkJbWlkZGxlU3RyID0gbWlkZGxlU3RyMiArIHNlcGFyYXRvciArIG1pZGRsZVN0cjE7CgkJfQoJCWVsc2UgewoJCQltaWRkbGVTdHIgPSBtaWRkbGVTdHIxICsgc2VwYXJhdG9yICsgbWlkZGxlU3RyMjsKCQl9Cgl9CgoJcmV0dXJuIHByb2Nlc3NNYXliZU1hcmtlcnMoCgkJbGVmdFN0ciArIG1pZGRsZVN0ciArIHJpZ2h0U3RyCgkpOwp9CgoKLy8gRm9ybWF0IFN0cmluZyBQYXJzaW5nCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKdmFyIHBhcnNlZEZvcm1hdFN0ckNhY2hlID0ge307CgovKgpSZXR1cm5zIGEgcGFyc2VkIGZvcm1hdCBzdHJpbmcsIGxldmVyYWdpbmcgYSBjYWNoZS4KKi8KZnVuY3Rpb24gZ2V0UGFyc2VkRm9ybWF0U3RyaW5nKGZvcm1hdFN0cikgewoJcmV0dXJuIHBhcnNlZEZvcm1hdFN0ckNhY2hlW2Zvcm1hdFN0cl0gfHwKCQkocGFyc2VkRm9ybWF0U3RyQ2FjaGVbZm9ybWF0U3RyXSA9IHBhcnNlRm9ybWF0U3RyaW5nKGZvcm1hdFN0cikpOwp9CgovKgpQYXJzZXMgYSBmb3JtYXQgc3RyaW5nIGludG8gdGhlIGZvbGxvd2luZzoKLSBmYWtlRm9ybWF0U3RyaW5nOiBhIG1vbWVudEpTIGZvcm1hdHRpbmcgc3RyaW5nLCBsaXR0ZXJlZCB3aXRoIHNwZWNpYWwgY29udHJvbCBjaGFyYWN0ZXJzIHRoYXQgZ2V0IHBvc3QtcHJvY2Vzc2VkLgotIHNhbWVVbml0czogZm9yIGV2ZXJ5IHBhcnQgaW4gZmFrZUZvcm1hdFN0cmluZywgaWYgdGhlIHBhcnQgaXMgYSB0b2tlbiwgdGhlIHZhbHVlIHdpbGwgYmUgYSB1bml0IHN0cmluZyAobGlrZSAiZGF5IiksCiAgdGhhdCBpbmRpY2F0ZXMgaG93IHNpbWlsYXIgYSByYW5nZSdzIHN0YXJ0ICYgZW5kIG11c3QgYmUgaW4gb3JkZXIgdG8gc2hhcmUgdGhlIHNhbWUgZm9ybWF0dGVkIHRleHQuCiAgSWYgbm90IGEgdG9rZW4sIHRoZW4gdGhlIHZhbHVlIGlzIG51bGwuCiAgQWx3YXlzIGEgZmxhdCBhcnJheSAobm90IG5lc3RlZCBsaWtlZCAiY2h1bmtzIikuCiovCmZ1bmN0aW9uIHBhcnNlRm9ybWF0U3RyaW5nKGZvcm1hdFN0cikgewoJdmFyIGNodW5rcyA9IGNodW5rRm9ybWF0U3RyaW5nKGZvcm1hdFN0cik7CgkKCXJldHVybiB7CgkJZmFrZUZvcm1hdFN0cmluZzogYnVpbGRGYWtlRm9ybWF0U3RyaW5nKGNodW5rcyksCgkJc2FtZVVuaXRzOiBidWlsZFNhbWVVbml0cyhjaHVua3MpCgl9Owp9CgovKgpCcmVhayB0aGUgZm9ybWF0dGluZyBzdHJpbmcgaW50byBhbiBhcnJheSBvZiBjaHVua3MuCkEgJ21heWJlJyBjaHVuayB3aWxsIGhhdmUgbmVzdGVkIGNodW5rcy4KKi8KZnVuY3Rpb24gY2h1bmtGb3JtYXRTdHJpbmcoZm9ybWF0U3RyKSB7Cgl2YXIgY2h1bmtzID0gW107Cgl2YXIgbWF0Y2g7CgoJLy8gVE9ETzogbW9yZSBkZXNjcmltaW5hdGlvbgoJLy8gXDQgaXMgYSBiYWNrcmVmZXJlbmNlIHRvIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYSBtdWx0aS1jaGFyYWN0ZXIgc2V0LgoJdmFyIGNodW5rZXIgPSAvXFsoW15cXV0qKVxdfFwoKFteXCldKilcKXwoTFRTfExUfChcdylcNCpvPyl8KFteXHdcW1woXSspL2c7CgoJd2hpbGUgKChtYXRjaCA9IGNodW5rZXIuZXhlYyhmb3JtYXRTdHIpKSkgewoJCWlmIChtYXRjaFsxXSkgeyAvLyBhIGxpdGVyYWwgc3RyaW5nIGluc2lkZSBbIC4uLiBdCgkJCWNodW5rcy5wdXNoLmFwcGx5KGNodW5rcywgLy8gYXBwZW5kCgkJCQlzcGxpdFN0cmluZ0xpdGVyYWwobWF0Y2hbMV0pCgkJCSk7CgkJfQoJCWVsc2UgaWYgKG1hdGNoWzJdKSB7IC8vIG5vbi16ZXJvIGZvcm1hdHRpbmcgaW5zaWRlICggLi4uICkKCQkJY2h1bmtzLnB1c2goeyBtYXliZTogY2h1bmtGb3JtYXRTdHJpbmcobWF0Y2hbMl0pIH0pOwoJCX0KCQllbHNlIGlmIChtYXRjaFszXSkgeyAvLyBhIGZvcm1hdHRpbmcgdG9rZW4KCQkJY2h1bmtzLnB1c2goeyB0b2tlbjogbWF0Y2hbM10gfSk7CgkJfQoJCWVsc2UgaWYgKG1hdGNoWzVdKSB7IC8vIGFuIHVuZW5jbG9zZWQgbGl0ZXJhbCBzdHJpbmcKCQkJY2h1bmtzLnB1c2guYXBwbHkoY2h1bmtzLCAvLyBhcHBlbmQKCQkJCXNwbGl0U3RyaW5nTGl0ZXJhbChtYXRjaFs1XSkKCQkJKTsKCQl9Cgl9CgoJcmV0dXJuIGNodW5rczsKfQoKLyoKUG90ZW50aWFsbHkgc3BsaXRzIGEgbGl0ZXJhbC10ZXh0IHN0cmluZyBpbnRvIG11bHRpcGxlIHBhcnRzLiBGb3Igc3BlY2lhbCBjYXNlcy4KKi8KZnVuY3Rpb24gc3BsaXRTdHJpbmdMaXRlcmFsKHMpIHsKCWlmIChzID09PSAnLiAnKSB7CgkJcmV0dXJuIFsgJy4nLCAnICcgXTsgLy8gZm9yIGxvY2FsZXMgd2l0aCBwZXJpb2RzIGJvdW5kIHRvIHRoZSBlbmQgb2YgZWFjaCB5ZWFyL21vbnRoL2RhdGUKCX0KCWVsc2UgewoJCXJldHVybiBbIHMgXTsKCX0KfQoKLyoKR2l2ZW4gY2h1bmtzIHBhcnNlZCBmcm9tIGEgcmVhbCBmb3JtYXQgc3RyaW5nLCBnZW5lcmF0ZSBhIGZha2UgKGFrYSAiaW50ZXJtZWRpYXRlIikgZm9ybWF0IHN0cmluZyB3aXRoIHNwZWNpYWwgY29udHJvbApjaGFyYWN0ZXJzIHRoYXQgd2lsbCBldmVudHVhbGx5IGJlIGdpdmVuIHRvIG1vbWVudCBmb3IgZm9ybWF0dGluZywgYW5kIHRoZW4gcG9zdC1wcm9jZXNzZWQuCiovCmZ1bmN0aW9uIGJ1aWxkRmFrZUZvcm1hdFN0cmluZyhjaHVua3MpIHsKCXZhciBwYXJ0cyA9IFtdOwoJdmFyIGksIGNodW5rOwoKCWZvciAoaSA9IDA7IGkgPCBjaHVua3MubGVuZ3RoOyBpKyspIHsKCQljaHVuayA9IGNodW5rc1tpXTsKCgkJaWYgKHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHsKCQkJcGFydHMucHVzaCgnWycgKyBjaHVuayArICddJyk7CgkJfQoJCWVsc2UgaWYgKGNodW5rLnRva2VuKSB7CgkJCWlmIChjaHVuay50b2tlbiBpbiBzcGVjaWFsVG9rZW5zKSB7CgkJCQlwYXJ0cy5wdXNoKAoJCQkJCVNQRUNJQUxfVE9LRU5fTUFSS0VSICsgLy8gdXNlZnVsIGR1cmluZyBwb3N0LXByb2Nlc3NpbmcKCQkJCQknWycgKyBjaHVuay50b2tlbiArICddJyAvLyBwcmVzZXJ2ZSBhcyBsaXRlcmFsIHRleHQKCQkJCSk7CgkJCX0KCQkJZWxzZSB7CgkJCQlwYXJ0cy5wdXNoKGNodW5rLnRva2VuKTsgLy8gdW5wcm90ZWN0ZWQgdGV4dCBpbXBsaWVzIGEgZm9ybWF0IHN0cmluZwoJCQl9CgkJfQoJCWVsc2UgaWYgKGNodW5rLm1heWJlKSB7CgkJCXBhcnRzLnB1c2goCgkJCQlNQVlCRV9NQVJLRVIgKyAvLyB1c2VmdWwgZHVyaW5nIHBvc3QtcHJvY2Vzc2luZwoJCQkJYnVpbGRGYWtlRm9ybWF0U3RyaW5nKGNodW5rLm1heWJlKSArCgkJCQlNQVlCRV9NQVJLRVIKCQkJKTsKCQl9Cgl9CgoJcmV0dXJuIHBhcnRzLmpvaW4oUEFSVF9TRVBBUkFUT1IpOwp9CgovKgpHaXZlbiBwYXJzZWQgY2h1bmtzIGZyb20gYSByZWFsIGZvcm1hdHRpbmcgc3RyaW5nLCBnZW5lcmF0ZXMgYW4gYXJyYXkgb2YgdW5pdCBzdHJpbmdzIChsaWtlICJkYXkiKSB0aGF0IGluZGljYXRlCmluIHdoaWNoIHJlZ2FyZCB0d28gZGF0ZXMgbXVzdCBiZSBzaW1pbGFyIGluIG9yZGVyIHRvIHNoYXJlIHJhbmdlIGZvcm1hdHRpbmcgdGV4dC4KVGhlIGBjaHVua3NgIGNhbiBiZSBuZXN0ZWQgKGJlY2F1c2Ugb2YgIm1heWJlIiBjaHVua3MpLCBob3dldmVyLCB0aGUgcmV0dXJuZWQgYXJyYXkgd2lsbCBiZSBmbGF0LgoqLwpmdW5jdGlvbiBidWlsZFNhbWVVbml0cyhjaHVua3MpIHsKCXZhciB1bml0cyA9IFtdOwoJdmFyIGksIGNodW5rOwoJdmFyIHRva2VuSW5mbzsKCglmb3IgKGkgPSAwOyBpIDwgY2h1bmtzLmxlbmd0aDsgaSsrKSB7CgkJY2h1bmsgPSBjaHVua3NbaV07CgoJCWlmIChjaHVuay50b2tlbikgewoJCQl0b2tlbkluZm8gPSBsYXJnZVRva2VuTWFwW2NodW5rLnRva2VuLmNoYXJBdCgwKV07CgkJCXVuaXRzLnB1c2godG9rZW5JbmZvID8gdG9rZW5JbmZvLnVuaXQgOiAnc2Vjb25kJyk7IC8vIGRlZmF1bHQgdG8gYSB2ZXJ5IHN0cmljdCBzYW1lLXNlY29uZAoJCX0KCQllbHNlIGlmIChjaHVuay5tYXliZSkgewoJCQl1bml0cy5wdXNoLmFwcGx5KHVuaXRzLCAvLyBhcHBlbmQKCQkJCWJ1aWxkU2FtZVVuaXRzKGNodW5rLm1heWJlKQoJCQkpOwoJCX0KCQllbHNlIHsKCQkJdW5pdHMucHVzaChudWxsKTsKCQl9Cgl9CgoJcmV0dXJuIHVuaXRzOwp9CgoKLy8gUmVuZGVyaW5nIHRvIHRleHQKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovKgpGb3JtYXRzIGEgZGF0ZSB3aXRoIGEgZmFrZSBmb3JtYXQgc3RyaW5nLCBwb3N0LXByb2Nlc3NlcyB0aGUgY29udHJvbCBjaGFyYWN0ZXJzLCB0aGVuIHJldHVybnMuCiovCmZ1bmN0aW9uIHJlbmRlckZha2VGb3JtYXRTdHJpbmcoZmFrZUZvcm1hdFN0cmluZywgZGF0ZSkgewoJcmV0dXJuIHByb2Nlc3NNYXliZU1hcmtlcnMoCgkJcmVuZGVyRmFrZUZvcm1hdFN0cmluZ1BhcnRzKGZha2VGb3JtYXRTdHJpbmcsIGRhdGUpLmpvaW4oJycpCgkpOwp9CgovKgpGb3JtYXRzIGEgZGF0ZSBpbnRvIHBhcnRzIHRoYXQgd2lsbCBoYXZlIGJlZW4gcG9zdC1wcm9jZXNzZWQsIEVYQ0VQVCBmb3IgdGhlICJtYXliZSIgbWFya2Vycy4KKi8KZnVuY3Rpb24gcmVuZGVyRmFrZUZvcm1hdFN0cmluZ1BhcnRzKGZha2VGb3JtYXRTdHJpbmcsIGRhdGUpIHsKCXZhciBwYXJ0cyA9IFtdOwoJdmFyIGZha2VSZW5kZXIgPSBvbGRNb21lbnRGb3JtYXQoZGF0ZSwgZmFrZUZvcm1hdFN0cmluZyk7Cgl2YXIgZmFrZVBhcnRzID0gZmFrZVJlbmRlci5zcGxpdChQQVJUX1NFUEFSQVRPUik7Cgl2YXIgaSwgZmFrZVBhcnQ7CgoJZm9yIChpID0gMDsgaSA8IGZha2VQYXJ0cy5sZW5ndGg7IGkrKykgewoJCWZha2VQYXJ0ID0gZmFrZVBhcnRzW2ldOwoKCQlpZiAoZmFrZVBhcnQuY2hhckF0KDApID09PSBTUEVDSUFMX1RPS0VOX01BUktFUikgewoJCQlwYXJ0cy5wdXNoKAoJCQkJLy8gdGhlIGxpdGVyYWwgc3RyaW5nIElTIHRoZSB0b2tlbidzIG5hbWUuCgkJCQkvLyBjYWxsIHNwZWNpYWwgdG9rZW4ncyByZWdpc3RlcmVkIGZ1bmN0aW9uLgoJCQkJc3BlY2lhbFRva2Vuc1tmYWtlUGFydC5zdWJzdHJpbmcoMSldKGRhdGUpCgkJCSk7CgkJfQoJCWVsc2UgewoJCQlwYXJ0cy5wdXNoKGZha2VQYXJ0KTsKCQl9Cgl9CgoJcmV0dXJuIHBhcnRzOwp9CgovKgpBY2NlcHRzIGFuIGFsbW9zdC1maW5hbGx5LWZvcm1hdHRlZCBzdHJpbmcgYW5kIHByb2Nlc3NlcyB0aGUgIm1heWJlIiBjb250cm9sIGNoYXJhY3RlcnMsIHJldHVybmluZyBhIG5ldyBzdHJpbmcuCiovCmZ1bmN0aW9uIHByb2Nlc3NNYXliZU1hcmtlcnMocykgewoJcmV0dXJuIHMucmVwbGFjZShNQVlCRV9SRUdFWFAsIGZ1bmN0aW9uKG0wLCBtMSkgeyAvLyByZWdleCBhc3N1bWVkIHRvIGhhdmUgJ2cnIGZsYWcKCQlpZiAobTEubWF0Y2goL1sxLTldLykpIHsgLy8gYW55IG5vbi16ZXJvIG51bWVyaWMgY2hhcmFjdGVycz8KCQkJcmV0dXJuIG0xOwoJCX0KCQllbHNlIHsKCQkJcmV0dXJuICcnOwoJCX0KCX0pOwp9CgoKLy8gTWlzYyBVdGlscwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovKgpSZXR1cm5zIGEgdW5pdCBzdHJpbmcsIGVpdGhlciAneWVhcicsICdtb250aCcsICdkYXknLCBvciBudWxsIGZvciB0aGUgbW9zdCBncmFudWxhciBmb3JtYXR0aW5nIHRva2VuIGluIHRoZSBzdHJpbmcuCiovCmZ1bmN0aW9uIHF1ZXJ5TW9zdEdyYW51bGFyRm9ybWF0VW5pdChmb3JtYXRTdHIpIHsKCXZhciBjaHVua3MgPSBjaHVua0Zvcm1hdFN0cmluZyhmb3JtYXRTdHIpOwoJdmFyIGksIGNodW5rOwoJdmFyIGNhbmRpZGF0ZTsKCXZhciBiZXN0OwoKCWZvciAoaSA9IDA7IGkgPCBjaHVua3MubGVuZ3RoOyBpKyspIHsKCQljaHVuayA9IGNodW5rc1tpXTsKCgkJaWYgKGNodW5rLnRva2VuKSB7CgkJCWNhbmRpZGF0ZSA9IGxhcmdlVG9rZW5NYXBbY2h1bmsudG9rZW4uY2hhckF0KDApXTsKCQkJaWYgKGNhbmRpZGF0ZSkgewoJCQkJaWYgKCFiZXN0IHx8IGNhbmRpZGF0ZS52YWx1ZSA+IGJlc3QudmFsdWUpIHsKCQkJCQliZXN0ID0gY2FuZGlkYXRlOwoJCQkJfQoJCQl9CgkJfQoJfQoKCWlmIChiZXN0KSB7CgkJcmV0dXJuIGJlc3QudW5pdDsKCX0KCglyZXR1cm4gbnVsbDsKfTsKCn0pKCk7CgovLyBxdWljayBsb2NhbCByZWZlcmVuY2VzCnZhciBmb3JtYXREYXRlID0gRkMuZm9ybWF0RGF0ZTsKdmFyIGZvcm1hdFJhbmdlID0gRkMuZm9ybWF0UmFuZ2U7CnZhciBvbGRNb21lbnRGb3JtYXQgPSBGQy5vbGRNb21lbnRGb3JtYXQ7Cgo7OwoKRkMuQ2xhc3MgPSBDbGFzczsgLy8gZXhwb3J0CgovLyBDbGFzcyB0aGF0IGFsbCBvdGhlciBjbGFzc2VzIHdpbGwgaW5oZXJpdCBmcm9tCmZ1bmN0aW9uIENsYXNzKCkgeyB9CgoKLy8gQ2FsbGVkIG9uIGEgY2xhc3MgdG8gY3JlYXRlIGEgc3ViY2xhc3MuCi8vIExhc3QgYXJndW1lbnQgY29udGFpbnMgaW5zdGFuY2UgbWV0aG9kcy4gQW55IGFyZ3VtZW50IGJlZm9yZSB0aGUgbGFzdCBhcmUgY29uc2lkZXJlZCBtaXhpbnMuCkNsYXNzLmV4dGVuZCA9IGZ1bmN0aW9uKCkgewoJdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7Cgl2YXIgaTsKCXZhciBtZW1iZXJzOwoKCWZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewoJCW1lbWJlcnMgPSBhcmd1bWVudHNbaV07CgkJaWYgKGkgPCBsZW4gLSAxKSB7IC8vIG5vdCB0aGUgbGFzdCBhcmd1bWVudD8KCQkJbWl4SW50b0NsYXNzKHRoaXMsIG1lbWJlcnMpOwoJCX0KCX0KCglyZXR1cm4gZXh0ZW5kQ2xhc3ModGhpcywgbWVtYmVycyB8fCB7fSk7IC8vIG1lbWJlcnMgd2lsbCBiZSB1bmRlZmluZWQgaWYgbm8gYXJndW1lbnRzCn07CgoKLy8gQWRkcyBuZXcgbWVtYmVyIHZhcmlhYmxlcy9tZXRob2RzIHRvIHRoZSBjbGFzcydzIHByb3RvdHlwZS4KLy8gQ2FuIGJlIGNhbGxlZCB3aXRoIGFub3RoZXIgY2xhc3MsIG9yIGEgcGxhaW4gb2JqZWN0IGhhc2ggY29udGFpbmluZyBuZXcgbWVtYmVycy4KQ2xhc3MubWl4aW4gPSBmdW5jdGlvbihtZW1iZXJzKSB7CgltaXhJbnRvQ2xhc3ModGhpcywgbWVtYmVycyk7Cn07CgoKZnVuY3Rpb24gZXh0ZW5kQ2xhc3Moc3VwZXJDbGFzcywgbWVtYmVycykgewoJdmFyIHN1YkNsYXNzOwoKCS8vIGVuc3VyZSBhIGNvbnN0cnVjdG9yIGZvciB0aGUgc3ViY2xhc3MsIGZvcndhcmRpbmcgYWxsIGFyZ3VtZW50cyB0byB0aGUgc3VwZXItY29uc3RydWN0b3IgaWYgaXQgZG9lc24ndCBleGlzdAoJaWYgKGhhc093blByb3AobWVtYmVycywgJ2NvbnN0cnVjdG9yJykpIHsKCQlzdWJDbGFzcyA9IG1lbWJlcnMuY29uc3RydWN0b3I7Cgl9CglpZiAodHlwZW9mIHN1YkNsYXNzICE9PSAnZnVuY3Rpb24nKSB7CgkJc3ViQ2xhc3MgPSBtZW1iZXJzLmNvbnN0cnVjdG9yID0gZnVuY3Rpb24oKSB7CgkJCXN1cGVyQ2xhc3MuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKCQl9OwoJfQoKCS8vIGJ1aWxkIHRoZSBiYXNlIHByb3RvdHlwZSBmb3IgdGhlIHN1YmNsYXNzLCB3aGljaCBpcyBhbiBuZXcgb2JqZWN0IGNoYWluZWQgdG8gdGhlIHN1cGVyY2xhc3MncyBwcm90b3R5cGUKCXN1YkNsYXNzLnByb3RvdHlwZSA9IGNyZWF0ZU9iamVjdChzdXBlckNsYXNzLnByb3RvdHlwZSk7CgoJLy8gY29weSBlYWNoIG1lbWJlciB2YXJpYWJsZS9tZXRob2Qgb250byB0aGUgdGhlIHN1YmNsYXNzJ3MgcHJvdG90eXBlCgljb3B5T3duUHJvcHMobWVtYmVycywgc3ViQ2xhc3MucHJvdG90eXBlKTsKCgkvLyBjb3B5IG92ZXIgYWxsIGNsYXNzIHZhcmlhYmxlcy9tZXRob2RzIHRvIHRoZSBzdWJjbGFzcywgc3VjaCBhcyBgZXh0ZW5kYCBhbmQgYG1peGluYAoJY29weU93blByb3BzKHN1cGVyQ2xhc3MsIHN1YkNsYXNzKTsKCglyZXR1cm4gc3ViQ2xhc3M7Cn0KCgpmdW5jdGlvbiBtaXhJbnRvQ2xhc3ModGhlQ2xhc3MsIG1lbWJlcnMpIHsKCWNvcHlPd25Qcm9wcyhtZW1iZXJzLCB0aGVDbGFzcy5wcm90b3R5cGUpOwp9Cjs7CgovKgpXcmFwIGpRdWVyeSdzIERlZmVycmVkIFByb21pc2Ugb2JqZWN0IHRvIGJlIHNsaWdodGx5IG1vcmUgUHJvbWlzZS9BKyBjb21wbGlhbnQuCldpdGggdGhlIGFkZGVkIG5vbi1zdGFuZGFyZCBmZWF0dXJlIG9mIHN5bmNocm9ub3VzbHkgZXhlY3V0aW5nIGhhbmRsZXJzIG9uIHJlc29sdmVkIHByb21pc2VzLAp3aGljaCBkb2Vzbid0IGFsd2F5cyBoYXBwZW4gb3RoZXJ3aXNlIChlc3Agd2l0aCBuZXN0ZWQgLnRoZW4gaGFuZGxlcnMhPyksCnNvLCB0aGlzIG1ha2VzIHRoaW5ncyBhIGxvdCBlYXNpZXIsIGVzcCBiZWNhdXNlIGpRdWVyeSAzIGNoYW5nZWQgdGhlIHN5bmNocm9uaWNpdHkgZm9yIERlZmVycmVkIG9iamVjdHMuCgpUT0RPOiB3cml0ZSB0ZXN0cyBhbmQgbW9yZSBjb21tZW50cwoqLwoKZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikgewoJdmFyIGRlZmVycmVkID0gJC5EZWZlcnJlZCgpOwoJdmFyIHByb21pc2UgPSBkZWZlcnJlZC5wcm9taXNlKCk7CgoJaWYgKHR5cGVvZiBleGVjdXRvciA9PT0gJ2Z1bmN0aW9uJykgewoJCWV4ZWN1dG9yKAoJCQlmdW5jdGlvbih2YWx1ZSkgeyAvLyByZXNvbHZlCgkJCQlpZiAoUHJvbWlzZS5pbW1lZGlhdGUpIHsKCQkJCQlwcm9taXNlLl92YWx1ZSA9IHZhbHVlOwoJCQkJfQoJCQkJZGVmZXJyZWQucmVzb2x2ZSh2YWx1ZSk7CgkJCX0sCgkJCWZ1bmN0aW9uKCkgeyAvLyByZWplY3QKCQkJCWRlZmVycmVkLnJlamVjdCgpOwoJCQl9CgkJKTsKCX0KCQoJaWYgKFByb21pc2UuaW1tZWRpYXRlKSB7CgkJdmFyIG9yaWdUaGVuID0gcHJvbWlzZS50aGVuOwoKCQlwcm9taXNlLnRoZW4gPSBmdW5jdGlvbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkgewoJCQl2YXIgc3RhdGUgPSBwcm9taXNlLnN0YXRlKCk7CgkJCQoJCQlpZiAoc3RhdGUgPT09ICdyZXNvbHZlZCcpIHsKCQkJCWlmICh0eXBlb2Ygb25GdWxmaWxsZWQgPT09ICdmdW5jdGlvbicpIHsKCQkJCQlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG9uRnVsZmlsbGVkKHByb21pc2UuX3ZhbHVlKSk7CgkJCQl9CgkJCX0KCQkJZWxzZSBpZiAoc3RhdGUgPT09ICdyZWplY3RlZCcpIHsKCQkJCWlmICh0eXBlb2Ygb25SZWplY3RlZCA9PT0gJ2Z1bmN0aW9uJykgewoJCQkJCW9uUmVqZWN0ZWQoKTsKCQkJCQlyZXR1cm4gcHJvbWlzZTsgLy8gYWxyZWFkeSByZWplY3RlZAoJCQkJfQoJCQl9CgoJCQlyZXR1cm4gb3JpZ1RoZW4uY2FsbChwcm9taXNlLCBvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7CgkJfTsKCX0KCglyZXR1cm4gcHJvbWlzZTsgLy8gaW5zdGFuY2VvZiBQcm9taXNlIHdpbGwgYnJlYWsgOiggVE9ETzogbWFrZSBQcm9taXNlIGEgcmVhbCBjbGFzcwp9CgpGQy5Qcm9taXNlID0gUHJvbWlzZTsKClByb21pc2UuaW1tZWRpYXRlID0gdHJ1ZTsKCgpQcm9taXNlLnJlc29sdmUgPSBmdW5jdGlvbih2YWx1ZSkgewoJaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZS5yZXNvbHZlID09PSAnZnVuY3Rpb24nKSB7CgkJcmV0dXJuIHZhbHVlLnByb21pc2UoKTsKCX0KCWlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUudGhlbiA9PT0gJ2Z1bmN0aW9uJykgewoJCXJldHVybiB2YWx1ZTsKCX0KCWVsc2UgewoJCXZhciBkZWZlcnJlZCA9ICQuRGVmZXJyZWQoKS5yZXNvbHZlKHZhbHVlKTsKCQl2YXIgcHJvbWlzZSA9IGRlZmVycmVkLnByb21pc2UoKTsKCgkJaWYgKFByb21pc2UuaW1tZWRpYXRlKSB7CgkJCXZhciBvcmlnVGhlbiA9IHByb21pc2UudGhlbjsKCgkJCXByb21pc2UuX3ZhbHVlID0gdmFsdWU7CgoJCQlwcm9taXNlLnRoZW4gPSBmdW5jdGlvbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkgewoJCQkJaWYgKHR5cGVvZiBvbkZ1bGZpbGxlZCA9PT0gJ2Z1bmN0aW9uJykgewoJCQkJCXJldHVybiBQcm9taXNlLnJlc29sdmUob25GdWxmaWxsZWQodmFsdWUpKTsKCQkJCX0KCQkJCXJldHVybiBvcmlnVGhlbi5jYWxsKHByb21pc2UsIG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKTsKCQkJfTsKCQl9CgoJCXJldHVybiBwcm9taXNlOwoJfQp9OwoKClByb21pc2UucmVqZWN0ID0gZnVuY3Rpb24oKSB7CglyZXR1cm4gJC5EZWZlcnJlZCgpLnJlamVjdCgpLnByb21pc2UoKTsKfTsKCgpQcm9taXNlLmFsbCA9IGZ1bmN0aW9uKGlucHV0cykgewoJdmFyIGhhc0FsbFZhbHVlcyA9IGZhbHNlOwoJdmFyIHZhbHVlczsKCXZhciBpLCBpbnB1dDsKCglpZiAoUHJvbWlzZS5pbW1lZGlhdGUpIHsKCQloYXNBbGxWYWx1ZXMgPSB0cnVlOwoJCXZhbHVlcyA9IFtdOwoKCQlmb3IgKGkgPSAwOyBpIDwgaW5wdXRzLmxlbmd0aDsgaSsrKSB7CgkJCWlucHV0ID0gaW5wdXRzW2ldOwoKCQkJaWYgKGlucHV0ICYmIHR5cGVvZiBpbnB1dC5zdGF0ZSA9PT0gJ2Z1bmN0aW9uJyAmJiBpbnB1dC5zdGF0ZSgpID09PSAncmVzb2x2ZWQnICYmICgnX3ZhbHVlJyBpbiBpbnB1dCkpIHsKCQkJCXZhbHVlcy5wdXNoKGlucHV0Ll92YWx1ZSk7CgkJCX0KCQkJZWxzZSBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0LnRoZW4gPT09ICdmdW5jdGlvbicpIHsKCQkJCWhhc0FsbFZhbHVlcyA9IGZhbHNlOwoJCQkJYnJlYWs7CgkJCX0KCQkJZWxzZSB7CgkJCQl2YWx1ZXMucHVzaChpbnB1dCk7CgkJCX0KCQl9Cgl9CgoJaWYgKGhhc0FsbFZhbHVlcykgewoJCXJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWVzKTsKCX0KCWVsc2UgewoJCXJldHVybiAkLndoZW4uYXBwbHkoJC53aGVuLCBpbnB1dHMpLnRoZW4oZnVuY3Rpb24oKSB7CgkJCXJldHVybiAkLndoZW4oJC5tYWtlQXJyYXkoYXJndW1lbnRzKSk7CgkJfSk7Cgl9Cn07Cgo7OwoKLy8gVE9ETzogd3JpdGUgdGVzdHMgYW5kIGNsZWFuIHVwIGNvZGUKCmZ1bmN0aW9uIFRhc2tRdWV1ZShkZWJvdW5jZVdhaXQpIHsKCXZhciBxID0gW107IC8vIGFycmF5IG9mIHJ1bkZ1bmNzCgoJZnVuY3Rpb24gYWRkVGFzayh0YXNrRnVuYykgewoJCXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7CgoJCQkvLyBzaG91bGQgcnVuIHRoaXMgZnVuY3Rpb24gd2hlbiBpdCdzIHRhc2tGdW5jJ3MgdHVybiB0byBydW4uCgkJCS8vIHJlc3BvbnNpYmxlIGZvciBwb3BwaW5nIGl0c2VsZiBvZmYgdGhlIHF1ZXVlLgoJCQl2YXIgcnVuRnVuYyA9IGZ1bmN0aW9uKCkgewoJCQkJUHJvbWlzZS5yZXNvbHZlKHRhc2tGdW5jKCkpIC8vIHJlc3VsdCBtaWdodCBiZSBhc3luYywgY29lcmNlIHRvIHByb21pc2UKCQkJCQkudGhlbihyZXNvbHZlKSAvLyByZXNvbHZlIFRhc2tRdWV1ZTo6cHVzaCdzIHByb21pc2UsIGZvciB0aGUgY2FsbGVyLiB3aWxsIHJlY2VpdmUgcmVzdWx0IG9mIHRhc2tGdW5jLgoJCQkJCS50aGVuKGZ1bmN0aW9uKCkgewoJCQkJCQlxLnNoaWZ0KCk7IC8vIHBvcCBpdHNlbGYgb2ZmCgoJCQkJCQkvLyBydW4gdGhlIG5leHQgdGFzaywgaWYgYW55CgkJCQkJCWlmIChxLmxlbmd0aCkgewoJCQkJCQkJcVswXSgpOwoJCQkJCQl9CgkJCQkJfSk7CgkJCX07CgoJCQkvLyBhbHdheXMgcHV0IHRoZSB0YXNrIGF0IHRoZSBlbmQgb2YgdGhlIHF1ZXVlLCBCRUZPUkUgcnVubmluZyB0aGUgdGFzawoJCQlxLnB1c2gocnVuRnVuYyk7CgoJCQkvLyBpZiBpdCdzIHRoZSBvbmx5IHRhc2sgaW4gdGhlIHF1ZXVlLCBydW4gaW1tZWRpYXRlbHkKCQkJaWYgKHEubGVuZ3RoID09PSAxKSB7CgkJCQlydW5GdW5jKCk7CgkJCX0KCQl9KTsKCX0KCgl0aGlzLmFkZCA9IC8vIHBvdGVudGlhbGx5IGRlYm91bmNlLCBmb3IgdGhlIHB1YmxpYyBtZXRob2QKCQl0eXBlb2YgZGVib3VuY2VXYWl0ID09PSAnbnVtYmVyJyA/CgkJCWRlYm91bmNlKGFkZFRhc2ssIGRlYm91bmNlV2FpdCkgOgoJCQlhZGRUYXNrOyAvLyBpZiBub3QgYSBudW1iZXIgKG51bGwvdW5kZWZpbmVkL2ZhbHNlKSwgbm8gZGVib3VuY2UgYXQgYWxsCgoJdGhpcy5hZGRRdWlja2x5ID0gYWRkVGFzazsgLy8gZ3VhcmFudGVlZCBubyBkZWJvdW5jZQp9CgpGQy5UYXNrUXVldWUgPSBUYXNrUXVldWU7CgovKgpxID0gbmV3IFRhc2tRdWV1ZSgpOwoKZnVuY3Rpb24gd29yayhpKSB7CglyZXR1cm4gcS5wdXNoKGZ1bmN0aW9uKCkgewoJCXRyaWdnZXIoKTsKCQljb25zb2xlLmxvZygnd29yaycgKyBpKTsKCX0pOwp9Cgp2YXIgY250ID0gMDsKCmZ1bmN0aW9uIHRyaWdnZXIoKSB7CglpZiAoY250IDwgNSkgewoJCWNudCsrOwoJCXdvcmsoY250KTsKCX0KfQoKd29yayg5KTsKKi8KCjs7Cgp2YXIgRW1pdHRlck1peGluID0gRkMuRW1pdHRlck1peGluID0gewoKCS8vIGpRdWVyeS1pZmljYXRpb24gdmlhICQodGhpcykgYWxsb3dzIGEgbm9uLURPTSBvYmplY3QgdG8gaGF2ZQoJLy8gdGhlIHNhbWUgZXZlbnQgaGFuZGxpbmcgY2FwYWJpbGl0aWVzIChpbmNsdWRpbmcgbmFtZXNwYWNlcykuCgoKCW9uOiBmdW5jdGlvbih0eXBlcywgaGFuZGxlcikgewoJCSQodGhpcykub24odHlwZXMsIHRoaXMuX3ByZXBhcmVJbnRlcmNlcHQoaGFuZGxlcikpOwoJCXJldHVybiB0aGlzOyAvLyBmb3IgY2hhaW5pbmcKCX0sCgoKCW9uZTogZnVuY3Rpb24odHlwZXMsIGhhbmRsZXIpIHsKCQkkKHRoaXMpLm9uZSh0eXBlcywgdGhpcy5fcHJlcGFyZUludGVyY2VwdChoYW5kbGVyKSk7CgkJcmV0dXJuIHRoaXM7IC8vIGZvciBjaGFpbmluZwoJfSwKCgoJX3ByZXBhcmVJbnRlcmNlcHQ6IGZ1bmN0aW9uKGhhbmRsZXIpIHsKCQkvLyBoYW5kbGVycyBhcmUgYWx3YXlzIGNhbGxlZCB3aXRoIGFuICJldmVudCIgb2JqZWN0IGFzIHRoZWlyIGZpcnN0IHBhcmFtLgoJCS8vIHNuZWFrIHRoZSBgdGhpc2AgY29udGV4dCBhbmQgYXJndW1lbnRzIGludG8gdGhlIGV4dHJhIHBhcmFtZXRlciBvYmplY3QKCQkvLyBhbmQgZm9yd2FyZCB0aGVtIG9uIHRvIHRoZSBvcmlnaW5hbCBoYW5kbGVyLgoJCXZhciBpbnRlcmNlcHQgPSBmdW5jdGlvbihldiwgZXh0cmEpIHsKCQkJcmV0dXJuIGhhbmRsZXIuYXBwbHkoCgkJCQlleHRyYS5jb250ZXh0IHx8IHRoaXMsCgkJCQlleHRyYS5hcmdzIHx8IFtdCgkJCSk7CgkJfTsKCgkJLy8gbWltaWNrIGpRdWVyeSdzIGludGVybmFsICJwcm94eSIgc3lzdGVtIChyaXNreSwgSSBrbm93KQoJCS8vIGNhdXNpbmcgYWxsIGZ1bmN0aW9ucyB3aXRoIHRoZSBzYW1lIC5ndWlkIHRvIGFwcGVhciB0byBiZSB0aGUgc2FtZS4KCQkvLyBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L2pxdWVyeS9ibG9iLzIuMi40L3NyYy9jb3JlLmpzI0w0NDgKCQkvLyB0aGlzIGlzIG5lZWRlZCBmb3IgY2FsbGluZyAub2ZmIHdpdGggdGhlIG9yaWdpbmFsIG5vbi1pbnRlcmNlcHQgaGFuZGxlci4KCQlpZiAoIWhhbmRsZXIuZ3VpZCkgewoJCQloYW5kbGVyLmd1aWQgPSAkLmd1aWQrKzsKCQl9CgkJaW50ZXJjZXB0Lmd1aWQgPSBoYW5kbGVyLmd1aWQ7CgoJCXJldHVybiBpbnRlcmNlcHQ7Cgl9LAoKCglvZmY6IGZ1bmN0aW9uKHR5cGVzLCBoYW5kbGVyKSB7CgkJJCh0aGlzKS5vZmYodHlwZXMsIGhhbmRsZXIpOwoKCQlyZXR1cm4gdGhpczsgLy8gZm9yIGNoYWluaW5nCgl9LAoKCgl0cmlnZ2VyOiBmdW5jdGlvbih0eXBlcykgewoJCXZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTsgLy8gYXJndW1lbnRzIGFmdGVyIHRoZSBmaXJzdAoKCQkvLyBwYXNzIGluICJleHRyYSIgaW5mbyB0byB0aGUgaW50ZXJjZXB0CgkJJCh0aGlzKS50cmlnZ2VySGFuZGxlcih0eXBlcywgeyBhcmdzOiBhcmdzIH0pOwoKCQlyZXR1cm4gdGhpczsgLy8gZm9yIGNoYWluaW5nCgl9LAoKCgl0cmlnZ2VyV2l0aDogZnVuY3Rpb24odHlwZXMsIGNvbnRleHQsIGFyZ3MpIHsKCgkJLy8gYHRyaWdnZXJIYW5kbGVyYCBpcyBsZXNzIHJlbGlhbnQgb24gdGhlIERPTSBjb21wYXJlZCB0byBgdHJpZ2dlcmAuCgkJLy8gcGFzcyBpbiAiZXh0cmEiIGluZm8gdG8gdGhlIGludGVyY2VwdC4KCQkkKHRoaXMpLnRyaWdnZXJIYW5kbGVyKHR5cGVzLCB7IGNvbnRleHQ6IGNvbnRleHQsIGFyZ3M6IGFyZ3MgfSk7CgoJCXJldHVybiB0aGlzOyAvLyBmb3IgY2hhaW5pbmcKCX0KCn07Cgo7OwoKLyoKVXRpbGl0eSBtZXRob2RzIGZvciBlYXNpbHkgbGlzdGVuaW5nIHRvIGV2ZW50cyBvbiBhbm90aGVyIG9iamVjdCwKYW5kIG1vcmUgaW1wb3J0YW50bHksIGVhc2lseSB1bmxpc3RlbmluZyBmcm9tIHRoZW0uCiovCnZhciBMaXN0ZW5lck1peGluID0gRkMuTGlzdGVuZXJNaXhpbiA9IChmdW5jdGlvbigpIHsKCXZhciBndWlkID0gMDsKCXZhciBMaXN0ZW5lck1peGluID0gewoKCQlsaXN0ZW5lcklkOiBudWxsLAoKCQkvKgoJCUdpdmVuIGFuIGBvdGhlcmAgb2JqZWN0IHRoYXQgaGFzIG9uL29mZiBtZXRob2RzLCBiaW5kIHRoZSBnaXZlbiBgY2FsbGJhY2tgIHRvIGFuIGV2ZW50IGJ5IHRoZSBnaXZlbiBuYW1lLgoJCVRoZSBgY2FsbGJhY2tgIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIGB0aGlzYCBjb250ZXh0IG9mIHRoZSBvYmplY3QgdGhhdCAubGlzdGVuVG8gaXMgYmVpbmcgY2FsbGVkIG9uLgoJCUNhbiBiZSBjYWxsZWQ6CgkJCS5saXN0ZW5UbyhvdGhlciwgZXZlbnROYW1lLCBjYWxsYmFjaykKCQlPUgoJCQkubGlzdGVuVG8ob3RoZXIsIHsKCQkJCWV2ZW50TmFtZTE6IGNhbGxiYWNrMSwKCQkJCWV2ZW50TmFtZTI6IGNhbGxiYWNrMgoJCQl9KQoJCSovCgkJbGlzdGVuVG86IGZ1bmN0aW9uKG90aGVyLCBhcmcsIGNhbGxiYWNrKSB7CgkJCWlmICh0eXBlb2YgYXJnID09PSAnb2JqZWN0JykgeyAvLyBnaXZlbiBkaWN0aW9uYXJ5IG9mIGNhbGxiYWNrcwoJCQkJZm9yICh2YXIgZXZlbnROYW1lIGluIGFyZykgewoJCQkJCWlmIChhcmcuaGFzT3duUHJvcGVydHkoZXZlbnROYW1lKSkgewoJCQkJCQl0aGlzLmxpc3RlblRvKG90aGVyLCBldmVudE5hbWUsIGFyZ1tldmVudE5hbWVdKTsKCQkJCQl9CgkJCQl9CgkJCX0KCQkJZWxzZSBpZiAodHlwZW9mIGFyZyA9PT0gJ3N0cmluZycpIHsKCQkJCW90aGVyLm9uKAoJCQkJCWFyZyArICcuJyArIHRoaXMuZ2V0TGlzdGVuZXJOYW1lc3BhY2UoKSwgLy8gdXNlIGV2ZW50IG5hbWVzcGFjaW5nIHRvIGlkZW50aWZ5IHRoaXMgb2JqZWN0CgkJCQkJJC5wcm94eShjYWxsYmFjaywgdGhpcykgLy8gYWx3YXlzIHVzZSBgdGhpc2AgY29udGV4dAoJCQkJCQkvLyB0aGUgdXN1YWxseS11bmRlc2lyZWQgalF1ZXJ5IGd1aWQgYmVoYXZpb3IgZG9lc24ndCBtYXR0ZXIsCgkJCQkJCS8vIGJlY2F1c2Ugd2UgYWx3YXlzIHVuYmluZCB2aWEgbmFtZXNwYWNlCgkJCQkpOwoJCQl9CgkJfSwKCgkJLyoKCQlDYXVzZXMgdGhlIGN1cnJlbnQgb2JqZWN0IHRvIHN0b3AgbGlzdGVuaW5nIHRvIGV2ZW50cyBvbiB0aGUgYG90aGVyYCBvYmplY3QuCgkJYGV2ZW50TmFtZWAgaXMgb3B0aW9uYWwuIElmIG9taXR0ZWQsIHdpbGwgc3RvcCBsaXN0ZW5pbmcgdG8gQUxMIGV2ZW50cyBvbiBgb3RoZXJgLgoJCSovCgkJc3RvcExpc3RlbmluZ1RvOiBmdW5jdGlvbihvdGhlciwgZXZlbnROYW1lKSB7CgkJCW90aGVyLm9mZigoZXZlbnROYW1lIHx8ICcnKSArICcuJyArIHRoaXMuZ2V0TGlzdGVuZXJOYW1lc3BhY2UoKSk7CgkJfSwKCgkJLyoKCQlSZXR1cm5zIGEgc3RyaW5nLCB1bmlxdWUgdG8gdGhpcyBvYmplY3QsIHRvIGJlIHVzZWQgZm9yIGV2ZW50IG5hbWVzcGFjaW5nCgkJKi8KCQlnZXRMaXN0ZW5lck5hbWVzcGFjZTogZnVuY3Rpb24oKSB7CgkJCWlmICh0aGlzLmxpc3RlbmVySWQgPT0gbnVsbCkgewoJCQkJdGhpcy5saXN0ZW5lcklkID0gZ3VpZCsrOwoJCQl9CgkJCXJldHVybiAnX2xpc3RlbmVyJyArIHRoaXMubGlzdGVuZXJJZDsKCQl9CgoJfTsKCXJldHVybiBMaXN0ZW5lck1peGluOwp9KSgpOwo7OwoKLyogQSByZWN0YW5ndWxhciBwYW5lbCB0aGF0IGlzIGFic29sdXRlbHkgcG9zaXRpb25lZCBvdmVyIG90aGVyIGNvbnRlbnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCk9wdGlvbnM6CgktIGNsYXNzTmFtZSAoc3RyaW5nKQoJLSBjb250ZW50IChIVE1MIHN0cmluZyBvciBqUXVlcnkgZWxlbWVudCBzZXQpCgktIHBhcmVudEVsCgktIHRvcAoJLSBsZWZ0CgktIHJpZ2h0ICh0aGUgeCBjb29yZCBvZiB3aGVyZSB0aGUgcmlnaHQgZWRnZSBzaG91bGQgYmUuIG5vdCBhICJDU1MiIHJpZ2h0KQoJLSBhdXRvSGlkZSAoYm9vbGVhbikKCS0gc2hvdyAoY2FsbGJhY2spCgktIGhpZGUgKGNhbGxiYWNrKQoqLwoKdmFyIFBvcG92ZXIgPSBDbGFzcy5leHRlbmQoTGlzdGVuZXJNaXhpbiwgewoKCWlzSGlkZGVuOiB0cnVlLAoJb3B0aW9uczogbnVsbCwKCWVsOiBudWxsLCAvLyB0aGUgY29udGFpbmVyIGVsZW1lbnQgZm9yIHRoZSBwb3BvdmVyLiBnZW5lcmF0ZWQgYnkgdGhpcyBvYmplY3QKCW1hcmdpbjogMTAsIC8vIHRoZSBzcGFjZSByZXF1aXJlZCBiZXR3ZWVuIHRoZSBwb3BvdmVyIGFuZCB0aGUgZWRnZXMgb2YgdGhlIHNjcm9sbCBjb250YWluZXIKCgoJY29uc3RydWN0b3I6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKCQl0aGlzLm9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwoJfSwKCgoJLy8gU2hvd3MgdGhlIHBvcG92ZXIgb24gdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4gUmVuZGVycyBpdCBpZiBub3QgYWxyZWFkeQoJc2hvdzogZnVuY3Rpb24oKSB7CgkJaWYgKHRoaXMuaXNIaWRkZW4pIHsKCQkJaWYgKCF0aGlzLmVsKSB7CgkJCQl0aGlzLnJlbmRlcigpOwoJCQl9CgkJCXRoaXMuZWwuc2hvdygpOwoJCQl0aGlzLnBvc2l0aW9uKCk7CgkJCXRoaXMuaXNIaWRkZW4gPSBmYWxzZTsKCQkJdGhpcy50cmlnZ2VyKCdzaG93Jyk7CgkJfQoJfSwKCgoJLy8gSGlkZXMgdGhlIHBvcG92ZXIsIHRocm91Z2ggQ1NTLCBidXQgZG9lcyBub3QgcmVtb3ZlIGl0IGZyb20gdGhlIERPTQoJaGlkZTogZnVuY3Rpb24oKSB7CgkJaWYgKCF0aGlzLmlzSGlkZGVuKSB7CgkJCXRoaXMuZWwuaGlkZSgpOwoJCQl0aGlzLmlzSGlkZGVuID0gdHJ1ZTsKCQkJdGhpcy50cmlnZ2VyKCdoaWRlJyk7CgkJfQoJfSwKCgoJLy8gQ3JlYXRlcyBgdGhpcy5lbGAgYW5kIHJlbmRlcnMgY29udGVudCBpbnNpZGUgb2YgaXQKCXJlbmRlcjogZnVuY3Rpb24oKSB7CgkJdmFyIF90aGlzID0gdGhpczsKCQl2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9uczsKCgkJdGhpcy5lbCA9ICQoJzxkaXYgY2xhc3M9ImZjLXBvcG92ZXIiLz4nKQoJCQkuYWRkQ2xhc3Mob3B0aW9ucy5jbGFzc05hbWUgfHwgJycpCgkJCS5jc3MoewoJCQkJLy8gcG9zaXRpb24gaW5pdGlhbGx5IHRvIHRoZSB0b3AgbGVmdCB0byBhdm9pZCBjcmVhdGluZyBzY3JvbGxiYXJzCgkJCQl0b3A6IDAsCgkJCQlsZWZ0OiAwCgkJCX0pCgkJCS5hcHBlbmQob3B0aW9ucy5jb250ZW50KQoJCQkuYXBwZW5kVG8ob3B0aW9ucy5wYXJlbnRFbCk7CgoJCS8vIHdoZW4gYSBjbGljayBoYXBwZW5zIG9uIGFueXRoaW5nIGluc2lkZSB3aXRoIGEgJ2ZjLWNsb3NlJyBjbGFzc05hbWUsIGhpZGUgdGhlIHBvcG92ZXIKCQl0aGlzLmVsLm9uKCdjbGljaycsICcuZmMtY2xvc2UnLCBmdW5jdGlvbigpIHsKCQkJX3RoaXMuaGlkZSgpOwoJCX0pOwoKCQlpZiAob3B0aW9ucy5hdXRvSGlkZSkgewoJCQl0aGlzLmxpc3RlblRvKCQoZG9jdW1lbnQpLCAnbW91c2Vkb3duJywgdGhpcy5kb2N1bWVudE1vdXNlZG93bik7CgkJfQoJfSwKCgoJLy8gVHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgY2xpY2tzICphbnl3aGVyZSogaW4gdGhlIGRvY3VtZW50LCBmb3IgdGhlIGF1dG9IaWRlIGZlYXR1cmUKCWRvY3VtZW50TW91c2Vkb3duOiBmdW5jdGlvbihldikgewoJCS8vIG9ubHkgaGlkZSB0aGUgcG9wb3ZlciBpZiB0aGUgY2xpY2sgaGFwcGVuZWQgb3V0c2lkZSB0aGUgcG9wb3ZlcgoJCWlmICh0aGlzLmVsICYmICEkKGV2LnRhcmdldCkuY2xvc2VzdCh0aGlzLmVsKS5sZW5ndGgpIHsKCQkJdGhpcy5oaWRlKCk7CgkJfQoJfSwKCgoJLy8gSGlkZXMgYW5kIHVucmVnaXN0ZXJzIGFueSBoYW5kbGVycwoJcmVtb3ZlRWxlbWVudDogZnVuY3Rpb24oKSB7CgkJdGhpcy5oaWRlKCk7CgoJCWlmICh0aGlzLmVsKSB7CgkJCXRoaXMuZWwucmVtb3ZlKCk7CgkJCXRoaXMuZWwgPSBudWxsOwoJCX0KCgkJdGhpcy5zdG9wTGlzdGVuaW5nVG8oJChkb2N1bWVudCksICdtb3VzZWRvd24nKTsKCX0sCgoKCS8vIFBvc2l0aW9ucyB0aGUgcG9wb3ZlciBvcHRpbWFsbHksIHVzaW5nIHRoZSB0b3AvbGVmdC9yaWdodCBvcHRpb25zCglwb3NpdGlvbjogZnVuY3Rpb24oKSB7CgkJdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7CgkJdmFyIG9yaWdpbiA9IHRoaXMuZWwub2Zmc2V0UGFyZW50KCkub2Zmc2V0KCk7CgkJdmFyIHdpZHRoID0gdGhpcy5lbC5vdXRlcldpZHRoKCk7CgkJdmFyIGhlaWdodCA9IHRoaXMuZWwub3V0ZXJIZWlnaHQoKTsKCQl2YXIgd2luZG93RWwgPSAkKHdpbmRvdyk7CgkJdmFyIHZpZXdwb3J0RWwgPSBnZXRTY3JvbGxQYXJlbnQodGhpcy5lbCk7CgkJdmFyIHZpZXdwb3J0VG9wOwoJCXZhciB2aWV3cG9ydExlZnQ7CgkJdmFyIHZpZXdwb3J0T2Zmc2V0OwoJCXZhciB0b3A7IC8vIHRoZSAicG9zaXRpb24iIChub3QgIm9mZnNldCIpIHZhbHVlcyBmb3IgdGhlIHBvcG92ZXIKCQl2YXIgbGVmdDsgLy8KCgkJLy8gY29tcHV0ZSB0b3AgYW5kIGxlZnQKCQl0b3AgPSBvcHRpb25zLnRvcCB8fCAwOwoJCWlmIChvcHRpb25zLmxlZnQgIT09IHVuZGVmaW5lZCkgewoJCQlsZWZ0ID0gb3B0aW9ucy5sZWZ0OwoJCX0KCQllbHNlIGlmIChvcHRpb25zLnJpZ2h0ICE9PSB1bmRlZmluZWQpIHsKCQkJbGVmdCA9IG9wdGlvbnMucmlnaHQgLSB3aWR0aDsgLy8gZGVyaXZlIHRoZSBsZWZ0IHZhbHVlIGZyb20gdGhlIHJpZ2h0IHZhbHVlCgkJfQoJCWVsc2UgewoJCQlsZWZ0ID0gMDsKCQl9CgoJCWlmICh2aWV3cG9ydEVsLmlzKHdpbmRvdykgfHwgdmlld3BvcnRFbC5pcyhkb2N1bWVudCkpIHsgLy8gbm9ybWFsaXplIGdldFNjcm9sbFBhcmVudCdzIHJlc3VsdAoJCQl2aWV3cG9ydEVsID0gd2luZG93RWw7CgkJCXZpZXdwb3J0VG9wID0gMDsgLy8gdGhlIHdpbmRvdyBpcyBhbHdheXMgYXQgdGhlIHRvcCBsZWZ0CgkJCXZpZXdwb3J0TGVmdCA9IDA7IC8vIChhbmQgLm9mZnNldCgpIHdvbid0IHdvcmsgaWYgY2FsbGVkIGhlcmUpCgkJfQoJCWVsc2UgewoJCQl2aWV3cG9ydE9mZnNldCA9IHZpZXdwb3J0RWwub2Zmc2V0KCk7CgkJCXZpZXdwb3J0VG9wID0gdmlld3BvcnRPZmZzZXQudG9wOwoJCQl2aWV3cG9ydExlZnQgPSB2aWV3cG9ydE9mZnNldC5sZWZ0OwoJCX0KCgkJLy8gaWYgdGhlIHdpbmRvdyBpcyBzY3JvbGxlZCwgaXQgY2F1c2VzIHRoZSB2aXNpYmxlIGFyZWEgdG8gYmUgZnVydGhlciBkb3duCgkJdmlld3BvcnRUb3AgKz0gd2luZG93RWwuc2Nyb2xsVG9wKCk7CgkJdmlld3BvcnRMZWZ0ICs9IHdpbmRvd0VsLnNjcm9sbExlZnQoKTsKCgkJLy8gY29uc3RyYWluIHRvIHRoZSB2aWV3IHBvcnQuIGlmIGNvbnN0cmFpbmVkIGJ5IHR3byBlZGdlcywgZ2l2ZSBwcmVjZWRlbmNlIHRvIHRvcC9sZWZ0CgkJaWYgKG9wdGlvbnMudmlld3BvcnRDb25zdHJhaW4gIT09IGZhbHNlKSB7CgkJCXRvcCA9IE1hdGgubWluKHRvcCwgdmlld3BvcnRUb3AgKyB2aWV3cG9ydEVsLm91dGVySGVpZ2h0KCkgLSBoZWlnaHQgLSB0aGlzLm1hcmdpbik7CgkJCXRvcCA9IE1hdGgubWF4KHRvcCwgdmlld3BvcnRUb3AgKyB0aGlzLm1hcmdpbik7CgkJCWxlZnQgPSBNYXRoLm1pbihsZWZ0LCB2aWV3cG9ydExlZnQgKyB2aWV3cG9ydEVsLm91dGVyV2lkdGgoKSAtIHdpZHRoIC0gdGhpcy5tYXJnaW4pOwoJCQlsZWZ0ID0gTWF0aC5tYXgobGVmdCwgdmlld3BvcnRMZWZ0ICsgdGhpcy5tYXJnaW4pOwoJCX0KCgkJdGhpcy5lbC5jc3MoewoJCQl0b3A6IHRvcCAtIG9yaWdpbi50b3AsCgkJCWxlZnQ6IGxlZnQgLSBvcmlnaW4ubGVmdAoJCX0pOwoJfSwKCgoJLy8gVHJpZ2dlcnMgYSBjYWxsYmFjay4gQ2FsbHMgYSBmdW5jdGlvbiBpbiB0aGUgb3B0aW9uIGhhc2ggb2YgdGhlIHNhbWUgbmFtZS4KCS8vIEFyZ3VtZW50cyBiZXlvbmQgdGhlIGZpcnN0IGBuYW1lYCBhcmUgZm9yd2FyZGVkIG9uLgoJLy8gVE9ETzogYmV0dGVyIGNvZGUgcmV1c2UgZm9yIHRoaXMuIFJlcGVhdCBjb2RlCgl0cmlnZ2VyOiBmdW5jdGlvbihuYW1lKSB7CgkJaWYgKHRoaXMub3B0aW9uc1tuYW1lXSkgewoJCQl0aGlzLm9wdGlvbnNbbmFtZV0uYXBwbHkodGhpcywgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSk7CgkJfQoJfQoKfSk7Cgo7OwoKLyoKQSBjYWNoZSBmb3IgdGhlIGxlZnQvcmlnaHQvdG9wL2JvdHRvbS93aWR0aC9oZWlnaHQgdmFsdWVzIGZvciBvbmUgb3IgbW9yZSBlbGVtZW50cy4KV29ya3Mgd2l0aCBib3RoIG9mZnNldCAoZnJvbSB0b3BsZWZ0IGRvY3VtZW50KSBhbmQgcG9zaXRpb24gKGZyb20gb2Zmc2V0UGFyZW50KS4KCm9wdGlvbnM6Ci0gZWxzCi0gaXNIb3Jpem9udGFsCi0gaXNWZXJ0aWNhbAoqLwp2YXIgQ29vcmRDYWNoZSA9IEZDLkNvb3JkQ2FjaGUgPSBDbGFzcy5leHRlbmQoewoKCWVsczogbnVsbCwgLy8galF1ZXJ5IHNldCAoYXNzdW1lZCB0byBiZSBzaWJsaW5ncykKCWZvcmNlZE9mZnNldFBhcmVudEVsOiBudWxsLCAvLyBvcHRpb25zIGNhbiBvdmVycmlkZSB0aGUgbmF0dXJhbCBvZmZzZXRQYXJlbnQKCW9yaWdpbjogbnVsbCwgLy8ge2xlZnQsdG9wfSBwb3NpdGlvbiBvZiBvZmZzZXRQYXJlbnQgb2YgZWxzCglib3VuZGluZ1JlY3Q6IG51bGwsIC8vIGNvbnN0cmFpbiBjb3JkaW5hdGVzIHRvIHRoaXMgcmVjdGFuZ2xlLiB7bGVmdCxyaWdodCx0b3AsYm90dG9tfSBvciBudWxsCglpc0hvcml6b250YWw6IGZhbHNlLCAvLyB3aGV0aGVyIHRvIHF1ZXJ5IGZvciBsZWZ0L3JpZ2h0L3dpZHRoCglpc1ZlcnRpY2FsOiBmYWxzZSwgLy8gd2hldGhlciB0byBxdWVyeSBmb3IgdG9wL2JvdHRvbS9oZWlnaHQKCgkvLyBhcnJheXMgb2YgY29vcmRpbmF0ZXMgKG9mZnNldHMgZnJvbSB0b3BsZWZ0IG9mIGRvY3VtZW50KQoJbGVmdHM6IG51bGwsCglyaWdodHM6IG51bGwsCgl0b3BzOiBudWxsLAoJYm90dG9tczogbnVsbCwKCgoJY29uc3RydWN0b3I6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKCQl0aGlzLmVscyA9ICQob3B0aW9ucy5lbHMpOwoJCXRoaXMuaXNIb3Jpem9udGFsID0gb3B0aW9ucy5pc0hvcml6b250YWw7CgkJdGhpcy5pc1ZlcnRpY2FsID0gb3B0aW9ucy5pc1ZlcnRpY2FsOwoJCXRoaXMuZm9yY2VkT2Zmc2V0UGFyZW50RWwgPSBvcHRpb25zLm9mZnNldFBhcmVudCA/ICQob3B0aW9ucy5vZmZzZXRQYXJlbnQpIDogbnVsbDsKCX0sCgoKCS8vIFF1ZXJpZXMgdGhlIGVscyBmb3IgY29vcmRpbmF0ZXMgYW5kIHN0b3JlcyB0aGVtLgoJLy8gQ2FsbCB0aGlzIG1ldGhvZCBiZWZvcmUgdXNpbmcgYW5kIG9mIHRoZSBnZXQqIG1ldGhvZHMgYmVsb3cuCglidWlsZDogZnVuY3Rpb24oKSB7CgkJdmFyIG9mZnNldFBhcmVudEVsID0gdGhpcy5mb3JjZWRPZmZzZXRQYXJlbnRFbDsKCQlpZiAoIW9mZnNldFBhcmVudEVsICYmIHRoaXMuZWxzLmxlbmd0aCA+IDApIHsKCQkJb2Zmc2V0UGFyZW50RWwgPSB0aGlzLmVscy5lcSgwKS5vZmZzZXRQYXJlbnQoKTsKCQl9CgoJCXRoaXMub3JpZ2luID0gb2Zmc2V0UGFyZW50RWwgPwoJCQlvZmZzZXRQYXJlbnRFbC5vZmZzZXQoKSA6CgkJCW51bGw7CgoJCXRoaXMuYm91bmRpbmdSZWN0ID0gdGhpcy5xdWVyeUJvdW5kaW5nUmVjdCgpOwoKCQlpZiAodGhpcy5pc0hvcml6b250YWwpIHsKCQkJdGhpcy5idWlsZEVsSG9yaXpvbnRhbHMoKTsKCQl9CgkJaWYgKHRoaXMuaXNWZXJ0aWNhbCkgewoJCQl0aGlzLmJ1aWxkRWxWZXJ0aWNhbHMoKTsKCQl9Cgl9LAoKCgkvLyBEZXN0cm95cyBhbGwgaW50ZXJuYWwgZGF0YSBhYm91dCBjb29yZGluYXRlcywgZnJlZWluZyBtZW1vcnkKCWNsZWFyOiBmdW5jdGlvbigpIHsKCQl0aGlzLm9yaWdpbiA9IG51bGw7CgkJdGhpcy5ib3VuZGluZ1JlY3QgPSBudWxsOwoJCXRoaXMubGVmdHMgPSBudWxsOwoJCXRoaXMucmlnaHRzID0gbnVsbDsKCQl0aGlzLnRvcHMgPSBudWxsOwoJCXRoaXMuYm90dG9tcyA9IG51bGw7Cgl9LAoKCgkvLyBXaGVuIGNhbGxlZCwgaWYgY29vcmQgY2FjaGVzIGFyZW4ndCBidWlsdCwgYnVpbGRzIHRoZW0KCWVuc3VyZUJ1aWx0OiBmdW5jdGlvbigpIHsKCQlpZiAoIXRoaXMub3JpZ2luKSB7CgkJCXRoaXMuYnVpbGQoKTsKCQl9Cgl9LAoKCgkvLyBQb3B1bGF0ZXMgdGhlIGxlZnQvcmlnaHQgaW50ZXJuYWwgY29vcmRpbmF0ZSBhcnJheXMKCWJ1aWxkRWxIb3Jpem9udGFsczogZnVuY3Rpb24oKSB7CgkJdmFyIGxlZnRzID0gW107CgkJdmFyIHJpZ2h0cyA9IFtdOwoKCQl0aGlzLmVscy5lYWNoKGZ1bmN0aW9uKGksIG5vZGUpIHsKCQkJdmFyIGVsID0gJChub2RlKTsKCQkJdmFyIGxlZnQgPSBlbC5vZmZzZXQoKS5sZWZ0OwoJCQl2YXIgd2lkdGggPSBlbC5vdXRlcldpZHRoKCk7CgoJCQlsZWZ0cy5wdXNoKGxlZnQpOwoJCQlyaWdodHMucHVzaChsZWZ0ICsgd2lkdGgpOwoJCX0pOwoKCQl0aGlzLmxlZnRzID0gbGVmdHM7CgkJdGhpcy5yaWdodHMgPSByaWdodHM7Cgl9LAoKCgkvLyBQb3B1bGF0ZXMgdGhlIHRvcC9ib3R0b20gaW50ZXJuYWwgY29vcmRpbmF0ZSBhcnJheXMKCWJ1aWxkRWxWZXJ0aWNhbHM6IGZ1bmN0aW9uKCkgewoJCXZhciB0b3BzID0gW107CgkJdmFyIGJvdHRvbXMgPSBbXTsKCgkJdGhpcy5lbHMuZWFjaChmdW5jdGlvbihpLCBub2RlKSB7CgkJCXZhciBlbCA9ICQobm9kZSk7CgkJCXZhciB0b3AgPSBlbC5vZmZzZXQoKS50b3A7CgkJCXZhciBoZWlnaHQgPSBlbC5vdXRlckhlaWdodCgpOwoKCQkJdG9wcy5wdXNoKHRvcCk7CgkJCWJvdHRvbXMucHVzaCh0b3AgKyBoZWlnaHQpOwoJCX0pOwoKCQl0aGlzLnRvcHMgPSB0b3BzOwoJCXRoaXMuYm90dG9tcyA9IGJvdHRvbXM7Cgl9LAoKCgkvLyBHaXZlbiBhIGxlZnQgb2Zmc2V0IChmcm9tIGRvY3VtZW50IGxlZnQpLCByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZWwgdGhhdCBpdCBob3Jpem9udGFsbHkgaW50ZXJzZWN0cy4KCS8vIElmIG5vIGludGVyc2VjdGlvbiBpcyBtYWRlLCByZXR1cm5zIHVuZGVmaW5lZC4KCWdldEhvcml6b250YWxJbmRleDogZnVuY3Rpb24obGVmdE9mZnNldCkgewoJCXRoaXMuZW5zdXJlQnVpbHQoKTsKCgkJdmFyIGxlZnRzID0gdGhpcy5sZWZ0czsKCQl2YXIgcmlnaHRzID0gdGhpcy5yaWdodHM7CgkJdmFyIGxlbiA9IGxlZnRzLmxlbmd0aDsKCQl2YXIgaTsKCgkJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CgkJCWlmIChsZWZ0T2Zmc2V0ID49IGxlZnRzW2ldICYmIGxlZnRPZmZzZXQgPCByaWdodHNbaV0pIHsKCQkJCXJldHVybiBpOwoJCQl9CgkJfQoJfSwKCgoJLy8gR2l2ZW4gYSB0b3Agb2Zmc2V0IChmcm9tIGRvY3VtZW50IHRvcCksIHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBlbCB0aGF0IGl0IHZlcnRpY2FsbHkgaW50ZXJzZWN0cy4KCS8vIElmIG5vIGludGVyc2VjdGlvbiBpcyBtYWRlLCByZXR1cm5zIHVuZGVmaW5lZC4KCWdldFZlcnRpY2FsSW5kZXg6IGZ1bmN0aW9uKHRvcE9mZnNldCkgewoJCXRoaXMuZW5zdXJlQnVpbHQoKTsKCgkJdmFyIHRvcHMgPSB0aGlzLnRvcHM7CgkJdmFyIGJvdHRvbXMgPSB0aGlzLmJvdHRvbXM7CgkJdmFyIGxlbiA9IHRvcHMubGVuZ3RoOwoJCXZhciBpOwoKCQlmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKCQkJaWYgKHRvcE9mZnNldCA+PSB0b3BzW2ldICYmIHRvcE9mZnNldCA8IGJvdHRvbXNbaV0pIHsKCQkJCXJldHVybiBpOwoJCQl9CgkJfQoJfSwKCgoJLy8gR2V0cyB0aGUgbGVmdCBvZmZzZXQgKGZyb20gZG9jdW1lbnQgbGVmdCkgb2YgdGhlIGVsZW1lbnQgYXQgdGhlIGdpdmVuIGluZGV4CglnZXRMZWZ0T2Zmc2V0OiBmdW5jdGlvbihsZWZ0SW5kZXgpIHsKCQl0aGlzLmVuc3VyZUJ1aWx0KCk7CgkJcmV0dXJuIHRoaXMubGVmdHNbbGVmdEluZGV4XTsKCX0sCgoKCS8vIEdldHMgdGhlIGxlZnQgcG9zaXRpb24gKGZyb20gb2Zmc2V0UGFyZW50IGxlZnQpIG9mIHRoZSBlbGVtZW50IGF0IHRoZSBnaXZlbiBpbmRleAoJZ2V0TGVmdFBvc2l0aW9uOiBmdW5jdGlvbihsZWZ0SW5kZXgpIHsKCQl0aGlzLmVuc3VyZUJ1aWx0KCk7CgkJcmV0dXJuIHRoaXMubGVmdHNbbGVmdEluZGV4XSAtIHRoaXMub3JpZ2luLmxlZnQ7Cgl9LAoKCgkvLyBHZXRzIHRoZSByaWdodCBvZmZzZXQgKGZyb20gZG9jdW1lbnQgbGVmdCkgb2YgdGhlIGVsZW1lbnQgYXQgdGhlIGdpdmVuIGluZGV4LgoJLy8gVGhpcyB2YWx1ZSBpcyBOT1QgcmVsYXRpdmUgdG8gdGhlIGRvY3VtZW50J3MgcmlnaHQgZWRnZSwgbGlrZSB0aGUgQ1NTIGNvbmNlcHQgb2YgInJpZ2h0IiB3b3VsZCBiZS4KCWdldFJpZ2h0T2Zmc2V0OiBmdW5jdGlvbihsZWZ0SW5kZXgpIHsKCQl0aGlzLmVuc3VyZUJ1aWx0KCk7CgkJcmV0dXJuIHRoaXMucmlnaHRzW2xlZnRJbmRleF07Cgl9LAoKCgkvLyBHZXRzIHRoZSByaWdodCBwb3NpdGlvbiAoZnJvbSBvZmZzZXRQYXJlbnQgbGVmdCkgb2YgdGhlIGVsZW1lbnQgYXQgdGhlIGdpdmVuIGluZGV4LgoJLy8gVGhpcyB2YWx1ZSBpcyBOT1QgcmVsYXRpdmUgdG8gdGhlIG9mZnNldFBhcmVudCdzIHJpZ2h0IGVkZ2UsIGxpa2UgdGhlIENTUyBjb25jZXB0IG9mICJyaWdodCIgd291bGQgYmUuCglnZXRSaWdodFBvc2l0aW9uOiBmdW5jdGlvbihsZWZ0SW5kZXgpIHsKCQl0aGlzLmVuc3VyZUJ1aWx0KCk7CgkJcmV0dXJuIHRoaXMucmlnaHRzW2xlZnRJbmRleF0gLSB0aGlzLm9yaWdpbi5sZWZ0OwoJfSwKCgoJLy8gR2V0cyB0aGUgd2lkdGggb2YgdGhlIGVsZW1lbnQgYXQgdGhlIGdpdmVuIGluZGV4CglnZXRXaWR0aDogZnVuY3Rpb24obGVmdEluZGV4KSB7CgkJdGhpcy5lbnN1cmVCdWlsdCgpOwoJCXJldHVybiB0aGlzLnJpZ2h0c1tsZWZ0SW5kZXhdIC0gdGhpcy5sZWZ0c1tsZWZ0SW5kZXhdOwoJfSwKCgoJLy8gR2V0cyB0aGUgdG9wIG9mZnNldCAoZnJvbSBkb2N1bWVudCB0b3ApIG9mIHRoZSBlbGVtZW50IGF0IHRoZSBnaXZlbiBpbmRleAoJZ2V0VG9wT2Zmc2V0OiBmdW5jdGlvbih0b3BJbmRleCkgewoJCXRoaXMuZW5zdXJlQnVpbHQoKTsKCQlyZXR1cm4gdGhpcy50b3BzW3RvcEluZGV4XTsKCX0sCgoKCS8vIEdldHMgdGhlIHRvcCBwb3NpdGlvbiAoZnJvbSBvZmZzZXRQYXJlbnQgdG9wKSBvZiB0aGUgZWxlbWVudCBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24KCWdldFRvcFBvc2l0aW9uOiBmdW5jdGlvbih0b3BJbmRleCkgewoJCXRoaXMuZW5zdXJlQnVpbHQoKTsKCQlyZXR1cm4gdGhpcy50b3BzW3RvcEluZGV4XSAtIHRoaXMub3JpZ2luLnRvcDsKCX0sCgoJLy8gR2V0cyB0aGUgYm90dG9tIG9mZnNldCAoZnJvbSB0aGUgZG9jdW1lbnQgdG9wKSBvZiB0aGUgZWxlbWVudCBhdCB0aGUgZ2l2ZW4gaW5kZXguCgkvLyBUaGlzIHZhbHVlIGlzIE5PVCByZWxhdGl2ZSB0byB0aGUgb2Zmc2V0UGFyZW50J3MgYm90dG9tIGVkZ2UsIGxpa2UgdGhlIENTUyBjb25jZXB0IG9mICJib3R0b20iIHdvdWxkIGJlLgoJZ2V0Qm90dG9tT2Zmc2V0OiBmdW5jdGlvbih0b3BJbmRleCkgewoJCXRoaXMuZW5zdXJlQnVpbHQoKTsKCQlyZXR1cm4gdGhpcy5ib3R0b21zW3RvcEluZGV4XTsKCX0sCgoKCS8vIEdldHMgdGhlIGJvdHRvbSBwb3NpdGlvbiAoZnJvbSB0aGUgb2Zmc2V0UGFyZW50IHRvcCkgb2YgdGhlIGVsZW1lbnQgYXQgdGhlIGdpdmVuIGluZGV4LgoJLy8gVGhpcyB2YWx1ZSBpcyBOT1QgcmVsYXRpdmUgdG8gdGhlIG9mZnNldFBhcmVudCdzIGJvdHRvbSBlZGdlLCBsaWtlIHRoZSBDU1MgY29uY2VwdCBvZiAiYm90dG9tIiB3b3VsZCBiZS4KCWdldEJvdHRvbVBvc2l0aW9uOiBmdW5jdGlvbih0b3BJbmRleCkgewoJCXRoaXMuZW5zdXJlQnVpbHQoKTsKCQlyZXR1cm4gdGhpcy5ib3R0b21zW3RvcEluZGV4XSAtIHRoaXMub3JpZ2luLnRvcDsKCX0sCgoKCS8vIEdldHMgdGhlIGhlaWdodCBvZiB0aGUgZWxlbWVudCBhdCB0aGUgZ2l2ZW4gaW5kZXgKCWdldEhlaWdodDogZnVuY3Rpb24odG9wSW5kZXgpIHsKCQl0aGlzLmVuc3VyZUJ1aWx0KCk7CgkJcmV0dXJuIHRoaXMuYm90dG9tc1t0b3BJbmRleF0gLSB0aGlzLnRvcHNbdG9wSW5kZXhdOwoJfSwKCgoJLy8gQm91bmRpbmcgUmVjdAoJLy8gVE9ETzogZGVjb3VwbGUgdGhpcyBmcm9tIENvb3JkQ2FjaGUKCgkvLyBDb21wdXRlIGFuZCByZXR1cm4gd2hhdCB0aGUgZWxlbWVudHMnIGJvdW5kaW5nIHJlY3RhbmdsZSBpcywgZnJvbSB0aGUgdXNlcidzIHBlcnNwZWN0aXZlLgoJLy8gUmlnaHQgbm93LCBvbmx5IHJldHVybnMgYSByZWN0YW5nbGUgaWYgY29uc3RyYWluZWQgYnkgYW4gb3ZlcmZsb3c6c2Nyb2xsIGVsZW1lbnQuCgkvLyBSZXR1cm5zIG51bGwgaWYgdGhlcmUgYXJlIG5vIGVsZW1lbnRzCglxdWVyeUJvdW5kaW5nUmVjdDogZnVuY3Rpb24oKSB7CgkJdmFyIHNjcm9sbFBhcmVudEVsOwoKCQlpZiAodGhpcy5lbHMubGVuZ3RoID4gMCkgewoJCQlzY3JvbGxQYXJlbnRFbCA9IGdldFNjcm9sbFBhcmVudCh0aGlzLmVscy5lcSgwKSk7CgoJCQlpZiAoIXNjcm9sbFBhcmVudEVsLmlzKGRvY3VtZW50KSkgewoJCQkJcmV0dXJuIGdldENsaWVudFJlY3Qoc2Nyb2xsUGFyZW50RWwpOwoJCQl9CgkJfQoKCQlyZXR1cm4gbnVsbDsKCX0sCgoJaXNQb2ludEluQm91bmRzOiBmdW5jdGlvbihsZWZ0T2Zmc2V0LCB0b3BPZmZzZXQpIHsKCQlyZXR1cm4gdGhpcy5pc0xlZnRJbkJvdW5kcyhsZWZ0T2Zmc2V0KSAmJiB0aGlzLmlzVG9wSW5Cb3VuZHModG9wT2Zmc2V0KTsKCX0sCgoJaXNMZWZ0SW5Cb3VuZHM6IGZ1bmN0aW9uKGxlZnRPZmZzZXQpIHsKCQlyZXR1cm4gIXRoaXMuYm91bmRpbmdSZWN0IHx8IChsZWZ0T2Zmc2V0ID49IHRoaXMuYm91bmRpbmdSZWN0LmxlZnQgJiYgbGVmdE9mZnNldCA8IHRoaXMuYm91bmRpbmdSZWN0LnJpZ2h0KTsKCX0sCgoJaXNUb3BJbkJvdW5kczogZnVuY3Rpb24odG9wT2Zmc2V0KSB7CgkJcmV0dXJuICF0aGlzLmJvdW5kaW5nUmVjdCB8fCAodG9wT2Zmc2V0ID49IHRoaXMuYm91bmRpbmdSZWN0LnRvcCAmJiB0b3BPZmZzZXQgPCB0aGlzLmJvdW5kaW5nUmVjdC5ib3R0b20pOwoJfQoKfSk7Cgo7OwoKLyogVHJhY2tzIGEgZHJhZydzIG1vdXNlIG1vdmVtZW50LCBmaXJpbmcgdmFyaW91cyBoYW5kbGVycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLy8gVE9ETzogdXNlIEVtaXR0ZXIKCnZhciBEcmFnTGlzdGVuZXIgPSBGQy5EcmFnTGlzdGVuZXIgPSBDbGFzcy5leHRlbmQoTGlzdGVuZXJNaXhpbiwgewoKCW9wdGlvbnM6IG51bGwsCglzdWJqZWN0RWw6IG51bGwsCgoJLy8gY29vcmRpbmF0ZXMgb2YgdGhlIGluaXRpYWwgbW91c2Vkb3duCglvcmlnaW5YOiBudWxsLAoJb3JpZ2luWTogbnVsbCwKCgkvLyB0aGUgd3JhcHBpbmcgZWxlbWVudCB0aGF0IHNjcm9sbHMsIG9yIE1JR0hUIHNjcm9sbCBpZiB0aGVyZSdzIG92ZXJmbG93LgoJLy8gVE9ETzogZG8gdGhpcyBmb3Igd3JhcHBlcnMgdGhhdCBoYXZlIG92ZXJmbG93OmhpZGRlbiBhcyB3ZWxsLgoJc2Nyb2xsRWw6IG51bGwsCgoJaXNJbnRlcmFjdGluZzogZmFsc2UsCglpc0Rpc3RhbmNlU3VycGFzc2VkOiBmYWxzZSwKCWlzRGVsYXlFbmRlZDogZmFsc2UsCglpc0RyYWdnaW5nOiBmYWxzZSwKCWlzVG91Y2g6IGZhbHNlLAoJaXNHZW5lcmljOiBmYWxzZSwgLy8gaW5pdGlhdGVkIGJ5ICdkcmFnc3RhcnQnIChqcXVpKQoKCWRlbGF5OiBudWxsLAoJZGVsYXlUaW1lb3V0SWQ6IG51bGwsCgltaW5EaXN0YW5jZTogbnVsbCwKCglzaG91bGRDYW5jZWxUb3VjaFNjcm9sbDogdHJ1ZSwKCXNjcm9sbEFsd2F5c0tpbGxzOiBmYWxzZSwKCgoJY29uc3RydWN0b3I6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKCQl0aGlzLm9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwoJfSwKCgoJLy8gSW50ZXJhY3Rpb24gKGhpZ2gtbGV2ZWwpCgkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCglzdGFydEludGVyYWN0aW9uOiBmdW5jdGlvbihldiwgZXh0cmFPcHRpb25zKSB7CgoJCWlmIChldi50eXBlID09PSAnbW91c2Vkb3duJykgewoJCQlpZiAoR2xvYmFsRW1pdHRlci5nZXQoKS5zaG91bGRJZ25vcmVNb3VzZSgpKSB7CgkJCQlyZXR1cm47CgkJCX0KCQkJZWxzZSBpZiAoIWlzUHJpbWFyeU1vdXNlQnV0dG9uKGV2KSkgewoJCQkJcmV0dXJuOwoJCQl9CgkJCWVsc2UgewoJCQkJZXYucHJldmVudERlZmF1bHQoKTsgLy8gcHJldmVudHMgbmF0aXZlIHNlbGVjdGlvbiBpbiBtb3N0IGJyb3dzZXJzCgkJCX0KCQl9CgoJCWlmICghdGhpcy5pc0ludGVyYWN0aW5nKSB7CgoJCQkvLyBwcm9jZXNzIG9wdGlvbnMKCQkJZXh0cmFPcHRpb25zID0gZXh0cmFPcHRpb25zIHx8IHt9OwoJCQl0aGlzLmRlbGF5ID0gZmlyc3REZWZpbmVkKGV4dHJhT3B0aW9ucy5kZWxheSwgdGhpcy5vcHRpb25zLmRlbGF5LCAwKTsKCQkJdGhpcy5taW5EaXN0YW5jZSA9IGZpcnN0RGVmaW5lZChleHRyYU9wdGlvbnMuZGlzdGFuY2UsIHRoaXMub3B0aW9ucy5kaXN0YW5jZSwgMCk7CgkJCXRoaXMuc3ViamVjdEVsID0gdGhpcy5vcHRpb25zLnN1YmplY3RFbDsKCgkJCXByZXZlbnRTZWxlY3Rpb24oJCgnYm9keScpKTsKCgkJCXRoaXMuaXNJbnRlcmFjdGluZyA9IHRydWU7CgkJCXRoaXMuaXNUb3VjaCA9IGdldEV2SXNUb3VjaChldik7CgkJCXRoaXMuaXNHZW5lcmljID0gZXYudHlwZSA9PT0gJ2RyYWdzdGFydCc7CgkJCXRoaXMuaXNEZWxheUVuZGVkID0gZmFsc2U7CgkJCXRoaXMuaXNEaXN0YW5jZVN1cnBhc3NlZCA9IGZhbHNlOwoKCQkJdGhpcy5vcmlnaW5YID0gZ2V0RXZYKGV2KTsKCQkJdGhpcy5vcmlnaW5ZID0gZ2V0RXZZKGV2KTsKCQkJdGhpcy5zY3JvbGxFbCA9IGdldFNjcm9sbFBhcmVudCgkKGV2LnRhcmdldCkpOwoKCQkJdGhpcy5iaW5kSGFuZGxlcnMoKTsKCQkJdGhpcy5pbml0QXV0b1Njcm9sbCgpOwoJCQl0aGlzLmhhbmRsZUludGVyYWN0aW9uU3RhcnQoZXYpOwoJCQl0aGlzLnN0YXJ0RGVsYXkoZXYpOwoKCQkJaWYgKCF0aGlzLm1pbkRpc3RhbmNlKSB7CgkJCQl0aGlzLmhhbmRsZURpc3RhbmNlU3VycGFzc2VkKGV2KTsKCQkJfQoJCX0KCX0sCgoKCWhhbmRsZUludGVyYWN0aW9uU3RhcnQ6IGZ1bmN0aW9uKGV2KSB7CgkJdGhpcy50cmlnZ2VyKCdpbnRlcmFjdGlvblN0YXJ0JywgZXYpOwoJfSwKCgoJZW5kSW50ZXJhY3Rpb246IGZ1bmN0aW9uKGV2LCBpc0NhbmNlbGxlZCkgewoJCWlmICh0aGlzLmlzSW50ZXJhY3RpbmcpIHsKCQkJdGhpcy5lbmREcmFnKGV2KTsKCgkJCWlmICh0aGlzLmRlbGF5VGltZW91dElkKSB7CgkJCQljbGVhclRpbWVvdXQodGhpcy5kZWxheVRpbWVvdXRJZCk7CgkJCQl0aGlzLmRlbGF5VGltZW91dElkID0gbnVsbDsKCQkJfQoKCQkJdGhpcy5kZXN0cm95QXV0b1Njcm9sbCgpOwoJCQl0aGlzLnVuYmluZEhhbmRsZXJzKCk7CgoJCQl0aGlzLmlzSW50ZXJhY3RpbmcgPSBmYWxzZTsKCQkJdGhpcy5oYW5kbGVJbnRlcmFjdGlvbkVuZChldiwgaXNDYW5jZWxsZWQpOwoKCQkJYWxsb3dTZWxlY3Rpb24oJCgnYm9keScpKTsKCQl9Cgl9LAoKCgloYW5kbGVJbnRlcmFjdGlvbkVuZDogZnVuY3Rpb24oZXYsIGlzQ2FuY2VsbGVkKSB7CgkJdGhpcy50cmlnZ2VyKCdpbnRlcmFjdGlvbkVuZCcsIGV2LCBpc0NhbmNlbGxlZCB8fCBmYWxzZSk7Cgl9LAoKCgkvLyBCaW5kaW5nIFRvIERPTQoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoJYmluZEhhbmRsZXJzOiBmdW5jdGlvbigpIHsKCQkvLyBzb21lIGJyb3dzZXJzIChTYWZhcmkgaW4gaU9TIDEwKSBkb24ndCBhbGxvdyBwcmV2ZW50RGVmYXVsdCBvbiB0b3VjaCBldmVudHMgdGhhdCBhcmUgYm91bmQgYWZ0ZXIgdG91Y2hzdGFydCwKCQkvLyBzbyBsaXN0ZW4gdG8gdGhlIEdsb2JhbEVtaXR0ZXIgc2luZ2xldG9uLCB3aGljaCBpcyBhbHdheXMgYm91bmQsIGluc3RlYWQgb2YgdGhlIGRvY3VtZW50IGRpcmVjdGx5LgoJCXZhciBnbG9iYWxFbWl0dGVyID0gR2xvYmFsRW1pdHRlci5nZXQoKTsKCgkJaWYgKHRoaXMuaXNHZW5lcmljKSB7CgkJCXRoaXMubGlzdGVuVG8oJChkb2N1bWVudCksIHsgLy8gbWlnaHQgb25seSB3b3JrIG9uIGlPUyBiZWNhdXNlIG9mIEdsb2JhbEVtaXR0ZXIncyBiaW5kIDooCgkJCQlkcmFnOiB0aGlzLmhhbmRsZU1vdmUsCgkJCQlkcmFnc3RvcDogdGhpcy5lbmRJbnRlcmFjdGlvbgoJCQl9KTsKCQl9CgkJZWxzZSBpZiAodGhpcy5pc1RvdWNoKSB7CgkJCXRoaXMubGlzdGVuVG8oZ2xvYmFsRW1pdHRlciwgewoJCQkJdG91Y2htb3ZlOiB0aGlzLmhhbmRsZVRvdWNoTW92ZSwKCQkJCXRvdWNoZW5kOiB0aGlzLmVuZEludGVyYWN0aW9uLAoJCQkJc2Nyb2xsOiB0aGlzLmhhbmRsZVRvdWNoU2Nyb2xsCgkJCX0pOwoJCX0KCQllbHNlIHsKCQkJdGhpcy5saXN0ZW5UbyhnbG9iYWxFbWl0dGVyLCB7CgkJCQltb3VzZW1vdmU6IHRoaXMuaGFuZGxlTW91c2VNb3ZlLAoJCQkJbW91c2V1cDogdGhpcy5lbmRJbnRlcmFjdGlvbgoJCQl9KTsKCQl9CgoJCXRoaXMubGlzdGVuVG8oZ2xvYmFsRW1pdHRlciwgewoJCQlzZWxlY3RzdGFydDogcHJldmVudERlZmF1bHQsIC8vIGRvbid0IGFsbG93IHNlbGVjdGlvbiB3aGlsZSBkcmFnZ2luZwoJCQljb250ZXh0bWVudTogcHJldmVudERlZmF1bHQgLy8gbG9uZyB0YXBzIHdvdWxkIG9wZW4gbWVudSBvbiBDaHJvbWUgZGV2IHRvb2xzCgkJfSk7Cgl9LAoKCgl1bmJpbmRIYW5kbGVyczogZnVuY3Rpb24oKSB7CgkJdGhpcy5zdG9wTGlzdGVuaW5nVG8oR2xvYmFsRW1pdHRlci5nZXQoKSk7CgkJdGhpcy5zdG9wTGlzdGVuaW5nVG8oJChkb2N1bWVudCkpOyAvLyBmb3IgaXNHZW5lcmljCgl9LAoKCgkvLyBEcmFnIChoaWdoLWxldmVsKQoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoJLy8gZXh0cmFPcHRpb25zIGlnbm9yZWQgaWYgZHJhZyBhbHJlYWR5IHN0YXJ0ZWQKCXN0YXJ0RHJhZzogZnVuY3Rpb24oZXYsIGV4dHJhT3B0aW9ucykgewoJCXRoaXMuc3RhcnRJbnRlcmFjdGlvbihldiwgZXh0cmFPcHRpb25zKTsgLy8gZW5zdXJlIGludGVyYWN0aW9uIGJlZ2FuCgoJCWlmICghdGhpcy5pc0RyYWdnaW5nKSB7CgkJCXRoaXMuaXNEcmFnZ2luZyA9IHRydWU7CgkJCXRoaXMuaGFuZGxlRHJhZ1N0YXJ0KGV2KTsKCQl9Cgl9LAoKCgloYW5kbGVEcmFnU3RhcnQ6IGZ1bmN0aW9uKGV2KSB7CgkJdGhpcy50cmlnZ2VyKCdkcmFnU3RhcnQnLCBldik7Cgl9LAoKCgloYW5kbGVNb3ZlOiBmdW5jdGlvbihldikgewoJCXZhciBkeCA9IGdldEV2WChldikgLSB0aGlzLm9yaWdpblg7CgkJdmFyIGR5ID0gZ2V0RXZZKGV2KSAtIHRoaXMub3JpZ2luWTsKCQl2YXIgbWluRGlzdGFuY2UgPSB0aGlzLm1pbkRpc3RhbmNlOwoJCXZhciBkaXN0YW5jZVNxOyAvLyBjdXJyZW50IGRpc3RhbmNlIGZyb20gdGhlIG9yaWdpbiwgc3F1YXJlZAoKCQlpZiAoIXRoaXMuaXNEaXN0YW5jZVN1cnBhc3NlZCkgewoJCQlkaXN0YW5jZVNxID0gZHggKiBkeCArIGR5ICogZHk7CgkJCWlmIChkaXN0YW5jZVNxID49IG1pbkRpc3RhbmNlICogbWluRGlzdGFuY2UpIHsgLy8gdXNlIHB5dGhhZ29yZWFuIHRoZW9yZW0KCQkJCXRoaXMuaGFuZGxlRGlzdGFuY2VTdXJwYXNzZWQoZXYpOwoJCQl9CgkJfQoKCQlpZiAodGhpcy5pc0RyYWdnaW5nKSB7CgkJCXRoaXMuaGFuZGxlRHJhZyhkeCwgZHksIGV2KTsKCQl9Cgl9LAoKCgkvLyBDYWxsZWQgd2hpbGUgdGhlIG1vdXNlIGlzIGJlaW5nIG1vdmVkIGFuZCB3aGVuIHdlIGtub3cgYSBsZWdpdGltYXRlIGRyYWcgaXMgdGFraW5nIHBsYWNlCgloYW5kbGVEcmFnOiBmdW5jdGlvbihkeCwgZHksIGV2KSB7CgkJdGhpcy50cmlnZ2VyKCdkcmFnJywgZHgsIGR5LCBldik7CgkJdGhpcy51cGRhdGVBdXRvU2Nyb2xsKGV2KTsgLy8gd2lsbCBwb3NzaWJseSBjYXVzZSBzY3JvbGxpbmcKCX0sCgoKCWVuZERyYWc6IGZ1bmN0aW9uKGV2KSB7CgkJaWYgKHRoaXMuaXNEcmFnZ2luZykgewoJCQl0aGlzLmlzRHJhZ2dpbmcgPSBmYWxzZTsKCQkJdGhpcy5oYW5kbGVEcmFnRW5kKGV2KTsKCQl9Cgl9LAoKCgloYW5kbGVEcmFnRW5kOiBmdW5jdGlvbihldikgewoJCXRoaXMudHJpZ2dlcignZHJhZ0VuZCcsIGV2KTsKCX0sCgoKCS8vIERlbGF5CgkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCglzdGFydERlbGF5OiBmdW5jdGlvbihpbml0aWFsRXYpIHsKCQl2YXIgX3RoaXMgPSB0aGlzOwoKCQlpZiAodGhpcy5kZWxheSkgewoJCQl0aGlzLmRlbGF5VGltZW91dElkID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKCQkJCV90aGlzLmhhbmRsZURlbGF5RW5kKGluaXRpYWxFdik7CgkJCX0sIHRoaXMuZGVsYXkpOwoJCX0KCQllbHNlIHsKCQkJdGhpcy5oYW5kbGVEZWxheUVuZChpbml0aWFsRXYpOwoJCX0KCX0sCgoKCWhhbmRsZURlbGF5RW5kOiBmdW5jdGlvbihpbml0aWFsRXYpIHsKCQl0aGlzLmlzRGVsYXlFbmRlZCA9IHRydWU7CgoJCWlmICh0aGlzLmlzRGlzdGFuY2VTdXJwYXNzZWQpIHsKCQkJdGhpcy5zdGFydERyYWcoaW5pdGlhbEV2KTsKCQl9Cgl9LAoKCgkvLyBEaXN0YW5jZQoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoJaGFuZGxlRGlzdGFuY2VTdXJwYXNzZWQ6IGZ1bmN0aW9uKGV2KSB7CgkJdGhpcy5pc0Rpc3RhbmNlU3VycGFzc2VkID0gdHJ1ZTsKCgkJaWYgKHRoaXMuaXNEZWxheUVuZGVkKSB7CgkJCXRoaXMuc3RhcnREcmFnKGV2KTsKCQl9Cgl9LAoKCgkvLyBNb3VzZSAvIFRvdWNoCgkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCgloYW5kbGVUb3VjaE1vdmU6IGZ1bmN0aW9uKGV2KSB7CgoJCS8vIHByZXZlbnQgaW5lcnRpYSBhbmQgdG91Y2htb3ZlLXNjcm9sbGluZyB3aGlsZSBkcmFnZ2luZwoJCWlmICh0aGlzLmlzRHJhZ2dpbmcgJiYgdGhpcy5zaG91bGRDYW5jZWxUb3VjaFNjcm9sbCkgewoJCQlldi5wcmV2ZW50RGVmYXVsdCgpOwoJCX0KCgkJdGhpcy5oYW5kbGVNb3ZlKGV2KTsKCX0sCgoKCWhhbmRsZU1vdXNlTW92ZTogZnVuY3Rpb24oZXYpIHsKCQl0aGlzLmhhbmRsZU1vdmUoZXYpOwoJfSwKCgoJLy8gU2Nyb2xsaW5nICh1bnJlbGF0ZWQgdG8gYXV0by1zY3JvbGwpCgkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCgloYW5kbGVUb3VjaFNjcm9sbDogZnVuY3Rpb24oZXYpIHsKCQkvLyBpZiB0aGUgZHJhZyBpcyBiZWluZyBpbml0aWF0ZWQgYnkgdG91Y2gsIGJ1dCBhIHNjcm9sbCBoYXBwZW5zIGJlZm9yZQoJCS8vIHRoZSBkcmFnLWluaXRpYXRpbmcgZGVsYXkgaXMgb3ZlciwgY2FuY2VsIHRoZSBkcmFnCgkJaWYgKCF0aGlzLmlzRHJhZ2dpbmcgfHwgdGhpcy5zY3JvbGxBbHdheXNLaWxscykgewoJCQl0aGlzLmVuZEludGVyYWN0aW9uKGV2LCB0cnVlKTsgLy8gaXNDYW5jZWxsZWQ9dHJ1ZQoJCX0KCX0sCgoKCS8vIFV0aWxzCgkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCgkvLyBUcmlnZ2VycyBhIGNhbGxiYWNrLiBDYWxscyBhIGZ1bmN0aW9uIGluIHRoZSBvcHRpb24gaGFzaCBvZiB0aGUgc2FtZSBuYW1lLgoJLy8gQXJndW1lbnRzIGJleW9uZCB0aGUgZmlyc3QgYG5hbWVgIGFyZSBmb3J3YXJkZWQgb24uCgl0cmlnZ2VyOiBmdW5jdGlvbihuYW1lKSB7CgkJaWYgKHRoaXMub3B0aW9uc1tuYW1lXSkgewoJCQl0aGlzLm9wdGlvbnNbbmFtZV0uYXBwbHkodGhpcywgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSk7CgkJfQoJCS8vIG1ha2VzIF9tZXRob2RzIGNhbGxhYmxlIGJ5IGV2ZW50IG5hbWUuIFRPRE86IGtpbGwgdGhpcwoJCWlmICh0aGlzWydfJyArIG5hbWVdKSB7CgkJCXRoaXNbJ18nICsgbmFtZV0uYXBwbHkodGhpcywgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSk7CgkJfQoJfQoKCn0pOwoKOzsKLyoKdGhpcy5zY3JvbGxFbCBpcyBzZXQgaW4gRHJhZ0xpc3RlbmVyCiovCkRyYWdMaXN0ZW5lci5taXhpbih7CgoJaXNBdXRvU2Nyb2xsOiBmYWxzZSwKCglzY3JvbGxCb3VuZHM6IG51bGwsIC8vIHsgdG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0IH0KCXNjcm9sbFRvcFZlbDogbnVsbCwgLy8gcGl4ZWxzIHBlciBzZWNvbmQKCXNjcm9sbExlZnRWZWw6IG51bGwsIC8vIHBpeGVscyBwZXIgc2Vjb25kCglzY3JvbGxJbnRlcnZhbElkOiBudWxsLCAvLyBJRCBvZiBzZXRUaW1lb3V0IGZvciBzY3JvbGxpbmcgYW5pbWF0aW9uIGxvb3AKCgkvLyBkZWZhdWx0cwoJc2Nyb2xsU2Vuc2l0aXZpdHk6IDMwLCAvLyBwaXhlbHMgZnJvbSBlZGdlIGZvciBzY3JvbGxpbmcgdG8gc3RhcnQKCXNjcm9sbFNwZWVkOiAyMDAsIC8vIHBpeGVscyBwZXIgc2Vjb25kLCBhdCBtYXhpbXVtIHNwZWVkCglzY3JvbGxJbnRlcnZhbE1zOiA1MCwgLy8gbWlsbGlzZWNvbmQgd2FpdCBiZXR3ZWVuIHNjcm9sbCBpbmNyZW1lbnQKCgoJaW5pdEF1dG9TY3JvbGw6IGZ1bmN0aW9uKCkgewoJCXZhciBzY3JvbGxFbCA9IHRoaXMuc2Nyb2xsRWw7CgoJCXRoaXMuaXNBdXRvU2Nyb2xsID0KCQkJdGhpcy5vcHRpb25zLnNjcm9sbCAmJgoJCQlzY3JvbGxFbCAmJgoJCQkhc2Nyb2xsRWwuaXMod2luZG93KSAmJgoJCQkhc2Nyb2xsRWwuaXMoZG9jdW1lbnQpOwoKCQlpZiAodGhpcy5pc0F1dG9TY3JvbGwpIHsKCQkJLy8gZGVib3VuY2UgbWFrZXMgc3VyZSByYXBpZCBjYWxscyBkb24ndCBoYXBwZW4KCQkJdGhpcy5saXN0ZW5UbyhzY3JvbGxFbCwgJ3Njcm9sbCcsIGRlYm91bmNlKHRoaXMuaGFuZGxlRGVib3VuY2VkU2Nyb2xsLCAxMDApKTsKCQl9Cgl9LAoKCglkZXN0cm95QXV0b1Njcm9sbDogZnVuY3Rpb24oKSB7CgkJdGhpcy5lbmRBdXRvU2Nyb2xsKCk7IC8vIGtpbGwgYW55IGFuaW1hdGlvbiBsb29wCgoJCS8vIHJlbW92ZSB0aGUgc2Nyb2xsIGhhbmRsZXIgaWYgdGhlcmUgaXMgYSBzY3JvbGxFbAoJCWlmICh0aGlzLmlzQXV0b1Njcm9sbCkgewoJCQl0aGlzLnN0b3BMaXN0ZW5pbmdUbyh0aGlzLnNjcm9sbEVsLCAnc2Nyb2xsJyk7IC8vIHdpbGwgcHJvYmFibHkgZ2V0IHJlbW92ZWQgYnkgdW5iaW5kSGFuZGxlcnMgdG9vIDooCgkJfQoJfSwKCgoJLy8gQ29tcHV0ZXMgYW5kIHN0b3JlcyB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHNjcm9sbEVsCgljb21wdXRlU2Nyb2xsQm91bmRzOiBmdW5jdGlvbigpIHsKCQlpZiAodGhpcy5pc0F1dG9TY3JvbGwpIHsKCQkJdGhpcy5zY3JvbGxCb3VuZHMgPSBnZXRPdXRlclJlY3QodGhpcy5zY3JvbGxFbCk7CgkJCS8vIFRPRE86IHVzZSBnZXRDbGllbnRSZWN0IGluIGZ1dHVyZS4gYnV0IHByZXZlbnRzIGF1dG8gc2Nyb2xsaW5nIHdoZW4gb24gdG9wIG9mIHNjcm9sbGJhcnMKCQl9Cgl9LAoKCgkvLyBDYWxsZWQgd2hlbiB0aGUgZHJhZ2dpbmcgaXMgaW4gcHJvZ3Jlc3MgYW5kIHNjcm9sbGluZyBzaG91bGQgYmUgdXBkYXRlZAoJdXBkYXRlQXV0b1Njcm9sbDogZnVuY3Rpb24oZXYpIHsKCQl2YXIgc2Vuc2l0aXZpdHkgPSB0aGlzLnNjcm9sbFNlbnNpdGl2aXR5OwoJCXZhciBib3VuZHMgPSB0aGlzLnNjcm9sbEJvdW5kczsKCQl2YXIgdG9wQ2xvc2VuZXNzLCBib3R0b21DbG9zZW5lc3M7CgkJdmFyIGxlZnRDbG9zZW5lc3MsIHJpZ2h0Q2xvc2VuZXNzOwoJCXZhciB0b3BWZWwgPSAwOwoJCXZhciBsZWZ0VmVsID0gMDsKCgkJaWYgKGJvdW5kcykgeyAvLyBvbmx5IHNjcm9sbCBpZiBzY3JvbGxFbCBleGlzdHMKCgkJCS8vIGNvbXB1dGUgY2xvc2VuZXNzIHRvIGVkZ2VzLiB2YWxpZCByYW5nZSBpcyBmcm9tIDAuMCAtIDEuMAoJCQl0b3BDbG9zZW5lc3MgPSAoc2Vuc2l0aXZpdHkgLSAoZ2V0RXZZKGV2KSAtIGJvdW5kcy50b3ApKSAvIHNlbnNpdGl2aXR5OwoJCQlib3R0b21DbG9zZW5lc3MgPSAoc2Vuc2l0aXZpdHkgLSAoYm91bmRzLmJvdHRvbSAtIGdldEV2WShldikpKSAvIHNlbnNpdGl2aXR5OwoJCQlsZWZ0Q2xvc2VuZXNzID0gKHNlbnNpdGl2aXR5IC0gKGdldEV2WChldikgLSBib3VuZHMubGVmdCkpIC8gc2Vuc2l0aXZpdHk7CgkJCXJpZ2h0Q2xvc2VuZXNzID0gKHNlbnNpdGl2aXR5IC0gKGJvdW5kcy5yaWdodCAtIGdldEV2WChldikpKSAvIHNlbnNpdGl2aXR5OwoKCQkJLy8gdHJhbnNsYXRlIHZlcnRpY2FsIGNsb3NlbmVzcyBpbnRvIHZlbG9jaXR5LgoJCQkvLyBtb3VzZSBtdXN0IGJlIGNvbXBsZXRlbHkgaW4gYm91bmRzIGZvciB2ZWxvY2l0eSB0byBoYXBwZW4uCgkJCWlmICh0b3BDbG9zZW5lc3MgPj0gMCAmJiB0b3BDbG9zZW5lc3MgPD0gMSkgewoJCQkJdG9wVmVsID0gdG9wQ2xvc2VuZXNzICogdGhpcy5zY3JvbGxTcGVlZCAqIC0xOyAvLyBuZWdhdGl2ZS4gZm9yIHNjcm9sbGluZyB1cAoJCQl9CgkJCWVsc2UgaWYgKGJvdHRvbUNsb3NlbmVzcyA+PSAwICYmIGJvdHRvbUNsb3NlbmVzcyA8PSAxKSB7CgkJCQl0b3BWZWwgPSBib3R0b21DbG9zZW5lc3MgKiB0aGlzLnNjcm9sbFNwZWVkOwoJCQl9CgoJCQkvLyB0cmFuc2xhdGUgaG9yaXpvbnRhbCBjbG9zZW5lc3MgaW50byB2ZWxvY2l0eQoJCQlpZiAobGVmdENsb3NlbmVzcyA+PSAwICYmIGxlZnRDbG9zZW5lc3MgPD0gMSkgewoJCQkJbGVmdFZlbCA9IGxlZnRDbG9zZW5lc3MgKiB0aGlzLnNjcm9sbFNwZWVkICogLTE7IC8vIG5lZ2F0aXZlLiBmb3Igc2Nyb2xsaW5nIGxlZnQKCQkJfQoJCQllbHNlIGlmIChyaWdodENsb3NlbmVzcyA+PSAwICYmIHJpZ2h0Q2xvc2VuZXNzIDw9IDEpIHsKCQkJCWxlZnRWZWwgPSByaWdodENsb3NlbmVzcyAqIHRoaXMuc2Nyb2xsU3BlZWQ7CgkJCX0KCQl9CgoJCXRoaXMuc2V0U2Nyb2xsVmVsKHRvcFZlbCwgbGVmdFZlbCk7Cgl9LAoKCgkvLyBTZXRzIHRoZSBzcGVlZC1vZi1zY3JvbGxpbmcgZm9yIHRoZSBzY3JvbGxFbAoJc2V0U2Nyb2xsVmVsOiBmdW5jdGlvbih0b3BWZWwsIGxlZnRWZWwpIHsKCgkJdGhpcy5zY3JvbGxUb3BWZWwgPSB0b3BWZWw7CgkJdGhpcy5zY3JvbGxMZWZ0VmVsID0gbGVmdFZlbDsKCgkJdGhpcy5jb25zdHJhaW5TY3JvbGxWZWwoKTsgLy8gbWFzc2FnZXMgaW50byByZWFsaXN0aWMgdmFsdWVzCgoJCS8vIGlmIHRoZXJlIGlzIG5vbi16ZXJvIHZlbG9jaXR5LCBhbmQgYW4gYW5pbWF0aW9uIGxvb3AgaGFzbid0IGFscmVhZHkgc3RhcnRlZCwgdGhlbiBTVEFSVAoJCWlmICgodGhpcy5zY3JvbGxUb3BWZWwgfHwgdGhpcy5zY3JvbGxMZWZ0VmVsKSAmJiAhdGhpcy5zY3JvbGxJbnRlcnZhbElkKSB7CgkJCXRoaXMuc2Nyb2xsSW50ZXJ2YWxJZCA9IHNldEludGVydmFsKAoJCQkJcHJveHkodGhpcywgJ3Njcm9sbEludGVydmFsRnVuYycpLCAvLyBzY29wZSB0byBgdGhpc2AKCQkJCXRoaXMuc2Nyb2xsSW50ZXJ2YWxNcwoJCQkpOwoJCX0KCX0sCgoKCS8vIEZvcmNlcyBzY3JvbGxUb3BWZWwgYW5kIHNjcm9sbExlZnRWZWwgdG8gYmUgemVybyBpZiBzY3JvbGxpbmcgaGFzIGFscmVhZHkgZ29uZSBhbGwgdGhlIHdheQoJY29uc3RyYWluU2Nyb2xsVmVsOiBmdW5jdGlvbigpIHsKCQl2YXIgZWwgPSB0aGlzLnNjcm9sbEVsOwoKCQlpZiAodGhpcy5zY3JvbGxUb3BWZWwgPCAwKSB7IC8vIHNjcm9sbGluZyB1cD8KCQkJaWYgKGVsLnNjcm9sbFRvcCgpIDw9IDApIHsgLy8gYWxyZWFkeSBzY3JvbGxlZCBhbGwgdGhlIHdheSB1cD8KCQkJCXRoaXMuc2Nyb2xsVG9wVmVsID0gMDsKCQkJfQoJCX0KCQllbHNlIGlmICh0aGlzLnNjcm9sbFRvcFZlbCA+IDApIHsgLy8gc2Nyb2xsaW5nIGRvd24/CgkJCWlmIChlbC5zY3JvbGxUb3AoKSArIGVsWzBdLmNsaWVudEhlaWdodCA+PSBlbFswXS5zY3JvbGxIZWlnaHQpIHsgLy8gYWxyZWFkeSBzY3JvbGxlZCBhbGwgdGhlIHdheSBkb3duPwoJCQkJdGhpcy5zY3JvbGxUb3BWZWwgPSAwOwoJCQl9CgkJfQoKCQlpZiAodGhpcy5zY3JvbGxMZWZ0VmVsIDwgMCkgeyAvLyBzY3JvbGxpbmcgbGVmdD8KCQkJaWYgKGVsLnNjcm9sbExlZnQoKSA8PSAwKSB7IC8vIGFscmVhZHkgc2Nyb2xsZWQgYWxsIHRoZSBsZWZ0PwoJCQkJdGhpcy5zY3JvbGxMZWZ0VmVsID0gMDsKCQkJfQoJCX0KCQllbHNlIGlmICh0aGlzLnNjcm9sbExlZnRWZWwgPiAwKSB7IC8vIHNjcm9sbGluZyByaWdodD8KCQkJaWYgKGVsLnNjcm9sbExlZnQoKSArIGVsWzBdLmNsaWVudFdpZHRoID49IGVsWzBdLnNjcm9sbFdpZHRoKSB7IC8vIGFscmVhZHkgc2Nyb2xsZWQgYWxsIHRoZSB3YXkgcmlnaHQ/CgkJCQl0aGlzLnNjcm9sbExlZnRWZWwgPSAwOwoJCQl9CgkJfQoJfSwKCgoJLy8gVGhpcyBmdW5jdGlvbiBnZXRzIGNhbGxlZCBkdXJpbmcgZXZlcnkgaXRlcmF0aW9uIG9mIHRoZSBzY3JvbGxpbmcgYW5pbWF0aW9uIGxvb3AKCXNjcm9sbEludGVydmFsRnVuYzogZnVuY3Rpb24oKSB7CgkJdmFyIGVsID0gdGhpcy5zY3JvbGxFbDsKCQl2YXIgZnJhYyA9IHRoaXMuc2Nyb2xsSW50ZXJ2YWxNcyAvIDEwMDA7IC8vIGNvbnNpZGVyaW5nIGFuaW1hdGlvbiBmcmVxdWVuY3ksIHdoYXQgdGhlIHZlbCBzaG91bGQgYmUgbXVsdCdkIGJ5CgoJCS8vIGNoYW5nZSB0aGUgdmFsdWUgb2Ygc2Nyb2xsRWwncyBzY3JvbGwKCQlpZiAodGhpcy5zY3JvbGxUb3BWZWwpIHsKCQkJZWwuc2Nyb2xsVG9wKGVsLnNjcm9sbFRvcCgpICsgdGhpcy5zY3JvbGxUb3BWZWwgKiBmcmFjKTsKCQl9CgkJaWYgKHRoaXMuc2Nyb2xsTGVmdFZlbCkgewoJCQllbC5zY3JvbGxMZWZ0KGVsLnNjcm9sbExlZnQoKSArIHRoaXMuc2Nyb2xsTGVmdFZlbCAqIGZyYWMpOwoJCX0KCgkJdGhpcy5jb25zdHJhaW5TY3JvbGxWZWwoKTsgLy8gc2luY2UgdGhlIHNjcm9sbCB2YWx1ZXMgY2hhbmdlZCwgcmVjb21wdXRlIHRoZSB2ZWxvY2l0aWVzCgoJCS8vIGlmIHNjcm9sbGVkIGFsbCB0aGUgd2F5LCB3aGljaCBjYXVzZXMgdGhlIHZlbHMgdG8gYmUgemVybywgc3RvcCB0aGUgYW5pbWF0aW9uIGxvb3AKCQlpZiAoIXRoaXMuc2Nyb2xsVG9wVmVsICYmICF0aGlzLnNjcm9sbExlZnRWZWwpIHsKCQkJdGhpcy5lbmRBdXRvU2Nyb2xsKCk7CgkJfQoJfSwKCgoJLy8gS2lsbHMgYW55IGV4aXN0aW5nIHNjcm9sbGluZyBhbmltYXRpb24gbG9vcAoJZW5kQXV0b1Njcm9sbDogZnVuY3Rpb24oKSB7CgkJaWYgKHRoaXMuc2Nyb2xsSW50ZXJ2YWxJZCkgewoJCQljbGVhckludGVydmFsKHRoaXMuc2Nyb2xsSW50ZXJ2YWxJZCk7CgkJCXRoaXMuc2Nyb2xsSW50ZXJ2YWxJZCA9IG51bGw7CgoJCQl0aGlzLmhhbmRsZVNjcm9sbEVuZCgpOwoJCX0KCX0sCgoKCS8vIEdldCBjYWxsZWQgd2hlbiB0aGUgc2Nyb2xsRWwgaXMgc2Nyb2xsZWQgKE5PVEU6IHRoaXMgaXMgZGVsYXllZCB2aWEgZGVib3VuY2UpCgloYW5kbGVEZWJvdW5jZWRTY3JvbGw6IGZ1bmN0aW9uKCkgewoJCS8vIHJlY29tcHV0ZSBhbGwgY29vcmRpbmF0ZXMsIGJ1dCAqb25seSogaWYgdGhpcyBpcyAqbm90KiBwYXJ0IG9mIG91ciBzY3JvbGxpbmcgYW5pbWF0aW9uCgkJaWYgKCF0aGlzLnNjcm9sbEludGVydmFsSWQpIHsKCQkJdGhpcy5oYW5kbGVTY3JvbGxFbmQoKTsKCQl9Cgl9LAoKCgkvLyBDYWxsZWQgd2hlbiBzY3JvbGxpbmcgaGFzIHN0b3BwZWQsIHdoZXRoZXIgdGhyb3VnaCBhdXRvIHNjcm9sbCwgb3IgdGhlIHVzZXIgc2Nyb2xsaW5nCgloYW5kbGVTY3JvbGxFbmQ6IGZ1bmN0aW9uKCkgewoJfQoKfSk7Cjs7CgovKiBUcmFja3MgbW91c2UgbW92ZW1lbnRzIG92ZXIgYSBjb21wb25lbnQgYW5kIHJhaXNlcyBldmVudHMgYWJvdXQgd2hpY2ggaGl0IHRoZSBtb3VzZSBpcyBvdmVyLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kb3B0aW9uczoKLSBzdWJqZWN0RWwKLSBzdWJqZWN0Q2VudGVyCiovCgp2YXIgSGl0RHJhZ0xpc3RlbmVyID0gRHJhZ0xpc3RlbmVyLmV4dGVuZCh7CgoJY29tcG9uZW50OiBudWxsLCAvLyBjb252ZXJ0cyBjb29yZGluYXRlcyB0byBoaXRzCgkJLy8gbWV0aG9kczogaGl0c05lZWRlZCwgaGl0c05vdE5lZWRlZCwgcXVlcnlIaXQKCglvcmlnSGl0OiBudWxsLCAvLyB0aGUgaGl0IHRoZSBtb3VzZSB3YXMgb3ZlciB3aGVuIGxpc3RlbmluZyBzdGFydGVkCgloaXQ6IG51bGwsIC8vIHRoZSBoaXQgdGhlIG1vdXNlIGlzIG92ZXIKCWNvb3JkQWRqdXN0OiBudWxsLCAvLyBkZWx0YSB0aGF0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIG1vdXNlIGNvb3JkaW5hdGVzIHdoZW4gY29tcHV0aW5nIGNvbGxpc2lvbnMKCgoJY29uc3RydWN0b3I6IGZ1bmN0aW9uKGNvbXBvbmVudCwgb3B0aW9ucykgewoJCURyYWdMaXN0ZW5lci5jYWxsKHRoaXMsIG9wdGlvbnMpOyAvLyBjYWxsIHRoZSBzdXBlci1jb25zdHJ1Y3RvcgoKCQl0aGlzLmNvbXBvbmVudCA9IGNvbXBvbmVudDsKCX0sCgoKCS8vIENhbGxlZCB3aGVuIGRyYWcgbGlzdGVuaW5nIHN0YXJ0cyAoYnV0IGEgcmVhbCBkcmFnIGhhcyBub3QgbmVjZXNzYXJpbHkgYmVnYW4pLgoJLy8gZXYgbWlnaHQgYmUgdW5kZWZpbmVkIGlmIGRyYWdnaW5nIHdhcyBzdGFydGVkIG1hbnVhbGx5LgoJaGFuZGxlSW50ZXJhY3Rpb25TdGFydDogZnVuY3Rpb24oZXYpIHsKCQl2YXIgc3ViamVjdEVsID0gdGhpcy5zdWJqZWN0RWw7CgkJdmFyIHN1YmplY3RSZWN0OwoJCXZhciBvcmlnUG9pbnQ7CgkJdmFyIHBvaW50OwoKCQl0aGlzLmNvbXBvbmVudC5oaXRzTmVlZGVkKCk7CgkJdGhpcy5jb21wdXRlU2Nyb2xsQm91bmRzKCk7IC8vIGZvciBhdXRvc2Nyb2xsCgoJCWlmIChldikgewoJCQlvcmlnUG9pbnQgPSB7IGxlZnQ6IGdldEV2WChldiksIHRvcDogZ2V0RXZZKGV2KSB9OwoJCQlwb2ludCA9IG9yaWdQb2ludDsKCgkJCS8vIGNvbnN0cmFpbiB0aGUgcG9pbnQgdG8gYm91bmRzIG9mIHRoZSBlbGVtZW50IGJlaW5nIGRyYWdnZWQKCQkJaWYgKHN1YmplY3RFbCkgewoJCQkJc3ViamVjdFJlY3QgPSBnZXRPdXRlclJlY3Qoc3ViamVjdEVsKTsgLy8gdXNlZCBmb3IgY2VudGVyaW5nIGFzIHdlbGwKCQkJCXBvaW50ID0gY29uc3RyYWluUG9pbnQocG9pbnQsIHN1YmplY3RSZWN0KTsKCQkJfQoKCQkJdGhpcy5vcmlnSGl0ID0gdGhpcy5xdWVyeUhpdChwb2ludC5sZWZ0LCBwb2ludC50b3ApOwoKCQkJLy8gdHJlYXQgdGhlIGNlbnRlciBvZiB0aGUgc3ViamVjdCBhcyB0aGUgY29sbGlzaW9uIHBvaW50PwoJCQlpZiAoc3ViamVjdEVsICYmIHRoaXMub3B0aW9ucy5zdWJqZWN0Q2VudGVyKSB7CgoJCQkJLy8gb25seSBjb25zaWRlciB0aGUgYXJlYSB0aGUgc3ViamVjdCBvdmVybGFwcyB0aGUgaGl0LiBiZXN0IGZvciBsYXJnZSBzdWJqZWN0cy4KCQkJCS8vIFRPRE86IHNraXAgdGhpcyBpZiBoaXQgZGlkbid0IHN1cHBseSBsZWZ0L3JpZ2h0L3RvcC9ib3R0b20KCQkJCWlmICh0aGlzLm9yaWdIaXQpIHsKCQkJCQlzdWJqZWN0UmVjdCA9IGludGVyc2VjdFJlY3RzKHRoaXMub3JpZ0hpdCwgc3ViamVjdFJlY3QpIHx8CgkJCQkJCXN1YmplY3RSZWN0OyAvLyBpbiBjYXNlIHRoZXJlIGlzIG5vIGludGVyc2VjdGlvbgoJCQkJfQoKCQkJCXBvaW50ID0gZ2V0UmVjdENlbnRlcihzdWJqZWN0UmVjdCk7CgkJCX0KCgkJCXRoaXMuY29vcmRBZGp1c3QgPSBkaWZmUG9pbnRzKHBvaW50LCBvcmlnUG9pbnQpOyAvLyBwb2ludCAtIG9yaWdQb2ludAoJCX0KCQllbHNlIHsKCQkJdGhpcy5vcmlnSGl0ID0gbnVsbDsKCQkJdGhpcy5jb29yZEFkanVzdCA9IG51bGw7CgkJfQoKCQkvLyBjYWxsIHRoZSBzdXBlci1tZXRob2QuIGRvIGl0IGFmdGVyIG9yaWdIaXQgaGFzIGJlZW4gY29tcHV0ZWQKCQlEcmFnTGlzdGVuZXIucHJvdG90eXBlLmhhbmRsZUludGVyYWN0aW9uU3RhcnQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKCX0sCgoKCS8vIENhbGxlZCB3aGVuIHRoZSBhY3R1YWwgZHJhZyBoYXMgc3RhcnRlZAoJaGFuZGxlRHJhZ1N0YXJ0OiBmdW5jdGlvbihldikgewoJCXZhciBoaXQ7CgoJCURyYWdMaXN0ZW5lci5wcm90b3R5cGUuaGFuZGxlRHJhZ1N0YXJ0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IC8vIGNhbGwgdGhlIHN1cGVyLW1ldGhvZAoKCQkvLyBtaWdodCBiZSBkaWZmZXJlbnQgZnJvbSB0aGlzLm9yaWdIaXQgaWYgdGhlIG1pbi1kaXN0YW5jZSBpcyBsYXJnZQoJCWhpdCA9IHRoaXMucXVlcnlIaXQoZ2V0RXZYKGV2KSwgZ2V0RXZZKGV2KSk7CgoJCS8vIHJlcG9ydCB0aGUgaW5pdGlhbCBoaXQgdGhlIG1vdXNlIGlzIG92ZXIKCQkvLyBlc3BlY2lhbGx5IGltcG9ydGFudCBpZiBubyBtaW4tZGlzdGFuY2UgYW5kIGRyYWcgc3RhcnRzIGltbWVkaWF0ZWx5CgkJaWYgKGhpdCkgewoJCQl0aGlzLmhhbmRsZUhpdE92ZXIoaGl0KTsKCQl9Cgl9LAoKCgkvLyBDYWxsZWQgd2hlbiB0aGUgZHJhZyBtb3ZlcwoJaGFuZGxlRHJhZzogZnVuY3Rpb24oZHgsIGR5LCBldikgewoJCXZhciBoaXQ7CgoJCURyYWdMaXN0ZW5lci5wcm90b3R5cGUuaGFuZGxlRHJhZy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyAvLyBjYWxsIHRoZSBzdXBlci1tZXRob2QKCgkJaGl0ID0gdGhpcy5xdWVyeUhpdChnZXRFdlgoZXYpLCBnZXRFdlkoZXYpKTsKCgkJaWYgKCFpc0hpdHNFcXVhbChoaXQsIHRoaXMuaGl0KSkgeyAvLyBhIGRpZmZlcmVudCBoaXQgdGhhbiBiZWZvcmU/CgkJCWlmICh0aGlzLmhpdCkgewoJCQkJdGhpcy5oYW5kbGVIaXRPdXQoKTsKCQkJfQoJCQlpZiAoaGl0KSB7CgkJCQl0aGlzLmhhbmRsZUhpdE92ZXIoaGl0KTsKCQkJfQoJCX0KCX0sCgoKCS8vIENhbGxlZCB3aGVuIGRyYWdnaW5nIGhhcyBiZWVuIHN0b3BwZWQKCWhhbmRsZURyYWdFbmQ6IGZ1bmN0aW9uKCkgewoJCXRoaXMuaGFuZGxlSGl0RG9uZSgpOwoJCURyYWdMaXN0ZW5lci5wcm90b3R5cGUuaGFuZGxlRHJhZ0VuZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyAvLyBjYWxsIHRoZSBzdXBlci1tZXRob2QKCX0sCgoKCS8vIENhbGxlZCB3aGVuIGEgdGhlIG1vdXNlIGhhcyBqdXN0IG1vdmVkIG92ZXIgYSBuZXcgaGl0CgloYW5kbGVIaXRPdmVyOiBmdW5jdGlvbihoaXQpIHsKCQl2YXIgaXNPcmlnID0gaXNIaXRzRXF1YWwoaGl0LCB0aGlzLm9yaWdIaXQpOwoKCQl0aGlzLmhpdCA9IGhpdDsKCgkJdGhpcy50cmlnZ2VyKCdoaXRPdmVyJywgdGhpcy5oaXQsIGlzT3JpZywgdGhpcy5vcmlnSGl0KTsKCX0sCgoKCS8vIENhbGxlZCB3aGVuIHRoZSBtb3VzZSBoYXMganVzdCBtb3ZlZCBvdXQgb2YgYSBoaXQKCWhhbmRsZUhpdE91dDogZnVuY3Rpb24oKSB7CgkJaWYgKHRoaXMuaGl0KSB7CgkJCXRoaXMudHJpZ2dlcignaGl0T3V0JywgdGhpcy5oaXQpOwoJCQl0aGlzLmhhbmRsZUhpdERvbmUoKTsKCQkJdGhpcy5oaXQgPSBudWxsOwoJCX0KCX0sCgoKCS8vIENhbGxlZCBhZnRlciBhIGhpdE91dC4gQWxzbyBjYWxsZWQgYmVmb3JlIGEgZHJhZ1N0b3AKCWhhbmRsZUhpdERvbmU6IGZ1bmN0aW9uKCkgewoJCWlmICh0aGlzLmhpdCkgewoJCQl0aGlzLnRyaWdnZXIoJ2hpdERvbmUnLCB0aGlzLmhpdCk7CgkJfQoJfSwKCgoJLy8gQ2FsbGVkIHdoZW4gdGhlIGludGVyYWN0aW9uIGVuZHMsIHdoZXRoZXIgdGhlcmUgd2FzIGEgcmVhbCBkcmFnIG9yIG5vdAoJaGFuZGxlSW50ZXJhY3Rpb25FbmQ6IGZ1bmN0aW9uKCkgewoJCURyYWdMaXN0ZW5lci5wcm90b3R5cGUuaGFuZGxlSW50ZXJhY3Rpb25FbmQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgLy8gY2FsbCB0aGUgc3VwZXItbWV0aG9kCgoJCXRoaXMub3JpZ0hpdCA9IG51bGw7CgkJdGhpcy5oaXQgPSBudWxsOwoKCQl0aGlzLmNvbXBvbmVudC5oaXRzTm90TmVlZGVkKCk7Cgl9LAoKCgkvLyBDYWxsZWQgd2hlbiBzY3JvbGxpbmcgaGFzIHN0b3BwZWQsIHdoZXRoZXIgdGhyb3VnaCBhdXRvIHNjcm9sbCwgb3IgdGhlIHVzZXIgc2Nyb2xsaW5nCgloYW5kbGVTY3JvbGxFbmQ6IGZ1bmN0aW9uKCkgewoJCURyYWdMaXN0ZW5lci5wcm90b3R5cGUuaGFuZGxlU2Nyb2xsRW5kLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IC8vIGNhbGwgdGhlIHN1cGVyLW1ldGhvZAoKCQkvLyBoaXRzJyBhYnNvbHV0ZSBwb3NpdGlvbnMgd2lsbCBiZSBpbiBuZXcgcGxhY2VzIGFmdGVyIGEgdXNlcidzIHNjcm9sbC4KCQkvLyBIQUNLIGZvciByZWNvbXB1dGluZy4KCQlpZiAodGhpcy5pc0RyYWdnaW5nKSB7CgkJCXRoaXMuY29tcG9uZW50LnJlbGVhc2VIaXRzKCk7CgkJCXRoaXMuY29tcG9uZW50LnByZXBhcmVIaXRzKCk7CgkJfQoJfSwKCgoJLy8gR2V0cyB0aGUgaGl0IHVuZGVybmVhdGggdGhlIGNvb3JkaW5hdGVzIGZvciB0aGUgZ2l2ZW4gbW91c2UgZXZlbnQKCXF1ZXJ5SGl0OiBmdW5jdGlvbihsZWZ0LCB0b3ApIHsKCgkJaWYgKHRoaXMuY29vcmRBZGp1c3QpIHsKCQkJbGVmdCArPSB0aGlzLmNvb3JkQWRqdXN0LmxlZnQ7CgkJCXRvcCArPSB0aGlzLmNvb3JkQWRqdXN0LnRvcDsKCQl9CgoJCXJldHVybiB0aGlzLmNvbXBvbmVudC5xdWVyeUhpdChsZWZ0LCB0b3ApOwoJfQoKfSk7CgoKLy8gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGhpdHMgYXJlIGlkZW50aWNhbGx5IGVxdWFsLiBgZmFsc2VgIG90aGVyd2lzZS4gTXVzdCBiZSBmcm9tIHRoZSBzYW1lIGNvbXBvbmVudC4KLy8gVHdvIG51bGwgdmFsdWVzIHdpbGwgYmUgY29uc2lkZXJlZCBlcXVhbCwgYXMgdHdvICJvdXQgb2YgdGhlIGNvbXBvbmVudCIgc3RhdGVzIGFyZSB0aGUgc2FtZS4KZnVuY3Rpb24gaXNIaXRzRXF1YWwoaGl0MCwgaGl0MSkgewoKCWlmICghaGl0MCAmJiAhaGl0MSkgewoJCXJldHVybiB0cnVlOwoJfQoKCWlmIChoaXQwICYmIGhpdDEpIHsKCQlyZXR1cm4gaGl0MC5jb21wb25lbnQgPT09IGhpdDEuY29tcG9uZW50ICYmCgkJCWlzSGl0UHJvcHNXaXRoaW4oaGl0MCwgaGl0MSkgJiYKCQkJaXNIaXRQcm9wc1dpdGhpbihoaXQxLCBoaXQwKTsgLy8gZW5zdXJlcyBhbGwgcHJvcHMgYXJlIGlkZW50aWNhbAoJfQoKCXJldHVybiBmYWxzZTsKfQoKCi8vIFJldHVybnMgdHJ1ZSBpZiBhbGwgb2Ygc3ViSGl0J3Mgbm9uLXN0YW5kYXJkIHByb3BlcnRpZXMgYXJlIHdpdGhpbiBzdXBlckhpdApmdW5jdGlvbiBpc0hpdFByb3BzV2l0aGluKHN1YkhpdCwgc3VwZXJIaXQpIHsKCWZvciAodmFyIHByb3BOYW1lIGluIHN1YkhpdCkgewoJCWlmICghL14oY29tcG9uZW50fGxlZnR8cmlnaHR8dG9wfGJvdHRvbSkkLy50ZXN0KHByb3BOYW1lKSkgewoJCQlpZiAoc3ViSGl0W3Byb3BOYW1lXSAhPT0gc3VwZXJIaXRbcHJvcE5hbWVdKSB7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9Cgl9CglyZXR1cm4gdHJ1ZTsKfQoKOzsKCi8qCkxpc3RlbnMgdG8gZG9jdW1lbnQgYW5kIHdpbmRvdy1sZXZlbCB1c2VyLWludGVyYWN0aW9uIGV2ZW50cywgbGlrZSB0b3VjaCBldmVudHMgYW5kIG1vdXNlIGV2ZW50cywKYW5kIGZpcmVzIHRoZXNlIGV2ZW50cyBhcy1pcyB0byB3aG9ldmVyIGlzIG9ic2VydmluZyBhIEdsb2JhbEVtaXR0ZXIuCkJlc3Qgd2hlbiB1c2VkIGFzIGEgc2luZ2xldG9uIHZpYSBHbG9iYWxFbWl0dGVyLmdldCgpCgpOb3JtYWxpemVzIG1vdXNlL3RvdWNoIGV2ZW50cy4gRm9yIGV4YW1wbGVzOgotIGlnbm9yZXMgdGhlIHRoZSBzaW11bGF0ZWQgbW91c2UgZXZlbnRzIHRoYXQgaGFwcGVuIGFmdGVyIGEgcXVpY2sgdGFwOiBtb3VzZW1vdmUrbW91c2Vkb3duK21vdXNldXArY2xpY2sKLSBjb21wZW5zYXRlcyBmb3IgdmFyaW91cyBidWdneSBzY2VuYXJpb3Mgd2hlcmUgYSB0b3VjaGVuZCBkb2VzIG5vdCBmaXJlCiovCgpGQy50b3VjaE1vdXNlSWdub3JlV2FpdCA9IDUwMDsKCnZhciBHbG9iYWxFbWl0dGVyID0gQ2xhc3MuZXh0ZW5kKExpc3RlbmVyTWl4aW4sIEVtaXR0ZXJNaXhpbiwgewoKCWlzVG91Y2hpbmc6IGZhbHNlLAoJbW91c2VJZ25vcmVEZXB0aDogMCwKCWhhbmRsZVNjcm9sbFByb3h5OiBudWxsLAoKCgliaW5kOiBmdW5jdGlvbigpIHsKCQl2YXIgX3RoaXMgPSB0aGlzOwoKCQl0aGlzLmxpc3RlblRvKCQoZG9jdW1lbnQpLCB7CgkJCXRvdWNoc3RhcnQ6IHRoaXMuaGFuZGxlVG91Y2hTdGFydCwKCQkJdG91Y2hjYW5jZWw6IHRoaXMuaGFuZGxlVG91Y2hDYW5jZWwsCgkJCXRvdWNoZW5kOiB0aGlzLmhhbmRsZVRvdWNoRW5kLAoJCQltb3VzZWRvd246IHRoaXMuaGFuZGxlTW91c2VEb3duLAoJCQltb3VzZW1vdmU6IHRoaXMuaGFuZGxlTW91c2VNb3ZlLAoJCQltb3VzZXVwOiB0aGlzLmhhbmRsZU1vdXNlVXAsCgkJCWNsaWNrOiB0aGlzLmhhbmRsZUNsaWNrLAoJCQlzZWxlY3RzdGFydDogdGhpcy5oYW5kbGVTZWxlY3RTdGFydCwKCQkJY29udGV4dG1lbnU6IHRoaXMuaGFuZGxlQ29udGV4dE1lbnUKCQl9KTsKCgkJLy8gYmVjYXVzZSB3ZSBuZWVkIHRvIGNhbGwgcHJldmVudERlZmF1bHQKCQkvLyBiZWNhdXNlIGh0dHBzOi8vd3d3LmNocm9tZXN0YXR1cy5jb20vZmVhdHVyZXMvNTA5MzU2NjAwNzIxNDA4MAoJCS8vIFRPRE86IGludmVzdGlnYXRlIHBlcmZvcm1hbmNlIGJlY2F1c2UgdGhpcyBpcyBhIGdsb2JhbCBoYW5kbGVyCgkJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoCgkJCSd0b3VjaG1vdmUnLAoJCQl0aGlzLmhhbmRsZVRvdWNoTW92ZVByb3h5ID0gZnVuY3Rpb24oZXYpIHsKCQkJCV90aGlzLmhhbmRsZVRvdWNoTW92ZSgkLkV2ZW50KGV2KSk7CgkJCX0sCgkJCXsgcGFzc2l2ZTogZmFsc2UgfSAvLyBhbGxvd3MgcHJldmVudERlZmF1bHQoKQoJCSk7CgoJCS8vIGF0dGFjaCBhIGhhbmRsZXIgdG8gZ2V0IGNhbGxlZCB3aGVuIEFOWSBzY3JvbGwgYWN0aW9uIGhhcHBlbnMgb24gdGhlIHBhZ2UuCgkJLy8gdGhpcyB3YXMgaW1wb3NzaWJsZSB0byBkbyB3aXRoIG5vcm1hbCBvbi9vZmYgYmVjYXVzZSAnc2Nyb2xsJyBkb2Vzbid0IGJ1YmJsZS4KCQkvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8zMjk1NDU2NS85NjM0MgoJCXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKAoJCQknc2Nyb2xsJywKCQkJdGhpcy5oYW5kbGVTY3JvbGxQcm94eSA9IGZ1bmN0aW9uKGV2KSB7CgkJCQlfdGhpcy5oYW5kbGVTY3JvbGwoJC5FdmVudChldikpOwoJCQl9LAoJCQl0cnVlIC8vIHVzZUNhcHR1cmUKCQkpOwoJfSwKCgl1bmJpbmQ6IGZ1bmN0aW9uKCkgewoJCXRoaXMuc3RvcExpc3RlbmluZ1RvKCQoZG9jdW1lbnQpKTsKCgkJd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoCgkJCSd0b3VjaG1vdmUnLAoJCQl0aGlzLmhhbmRsZVRvdWNoTW92ZVByb3h5CgkJKTsKCgkJd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoCgkJCSdzY3JvbGwnLAoJCQl0aGlzLmhhbmRsZVNjcm9sbFByb3h5LAoJCQl0cnVlIC8vIHVzZUNhcHR1cmUKCQkpOwoJfSwKCgoJLy8gVG91Y2ggSGFuZGxlcnMKCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJaGFuZGxlVG91Y2hTdGFydDogZnVuY3Rpb24oZXYpIHsKCgkJLy8gaWYgYSBwcmV2aW91cyB0b3VjaCBpbnRlcmFjdGlvbiBuZXZlciBlbmRlZCB3aXRoIGEgdG91Y2hlbmQsIHRoZW4gaW1wbGljaXRseSBlbmQgaXQsCgkJLy8gYnV0IHNpbmNlIGEgbmV3IHRvdWNoIGludGVyYWN0aW9uIGlzIGFib3V0IHRvIGJlZ2luLCBkb24ndCBzdGFydCB0aGUgbW91c2UgaWdub3JlIHBlcmlvZC4KCQl0aGlzLnN0b3BUb3VjaChldiwgdHJ1ZSk7IC8vIHNraXBNb3VzZUlnbm9yZT10cnVlCgoJCXRoaXMuaXNUb3VjaGluZyA9IHRydWU7CgkJdGhpcy50cmlnZ2VyKCd0b3VjaHN0YXJ0JywgZXYpOwoJfSwKCgloYW5kbGVUb3VjaE1vdmU6IGZ1bmN0aW9uKGV2KSB7CgkJaWYgKHRoaXMuaXNUb3VjaGluZykgewoJCQl0aGlzLnRyaWdnZXIoJ3RvdWNobW92ZScsIGV2KTsKCQl9Cgl9LAoKCWhhbmRsZVRvdWNoQ2FuY2VsOiBmdW5jdGlvbihldikgewoJCWlmICh0aGlzLmlzVG91Y2hpbmcpIHsKCQkJdGhpcy50cmlnZ2VyKCd0b3VjaGNhbmNlbCcsIGV2KTsKCgkJCS8vIEhhdmUgdG91Y2hjYW5jZWwgZmlyZSBhbiBhcnRpZmljaWFsIHRvdWNoZW5kLiBUaGF0IHdheSwgaGFuZGxlcnMgd29uJ3QgbmVlZCB0byBsaXN0ZW4gdG8gYm90aC4KCQkJLy8gSWYgdG91Y2hlbmQgZmlyZXMgbGF0ZXIsIGl0IHdvbid0IGhhdmUgYW55IGVmZmVjdCBiL2MgaXNUb3VjaGluZyB3aWxsIGJlIGZhbHNlLgoJCQl0aGlzLnN0b3BUb3VjaChldik7CgkJfQoJfSwKCgloYW5kbGVUb3VjaEVuZDogZnVuY3Rpb24oZXYpIHsKCQl0aGlzLnN0b3BUb3VjaChldik7Cgl9LAoKCgkvLyBNb3VzZSBIYW5kbGVycwoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgloYW5kbGVNb3VzZURvd246IGZ1bmN0aW9uKGV2KSB7CgkJaWYgKCF0aGlzLnNob3VsZElnbm9yZU1vdXNlKCkpIHsKCQkJdGhpcy50cmlnZ2VyKCdtb3VzZWRvd24nLCBldik7CgkJfQoJfSwKCgloYW5kbGVNb3VzZU1vdmU6IGZ1bmN0aW9uKGV2KSB7CgkJaWYgKCF0aGlzLnNob3VsZElnbm9yZU1vdXNlKCkpIHsKCQkJdGhpcy50cmlnZ2VyKCdtb3VzZW1vdmUnLCBldik7CgkJfQoJfSwKCgloYW5kbGVNb3VzZVVwOiBmdW5jdGlvbihldikgewoJCWlmICghdGhpcy5zaG91bGRJZ25vcmVNb3VzZSgpKSB7CgkJCXRoaXMudHJpZ2dlcignbW91c2V1cCcsIGV2KTsKCQl9Cgl9LAoKCWhhbmRsZUNsaWNrOiBmdW5jdGlvbihldikgewoJCWlmICghdGhpcy5zaG91bGRJZ25vcmVNb3VzZSgpKSB7CgkJCXRoaXMudHJpZ2dlcignY2xpY2snLCBldik7CgkJfQoJfSwKCgoJLy8gTWlzYyBIYW5kbGVycwoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgloYW5kbGVTZWxlY3RTdGFydDogZnVuY3Rpb24oZXYpIHsKCQl0aGlzLnRyaWdnZXIoJ3NlbGVjdHN0YXJ0JywgZXYpOwoJfSwKCgloYW5kbGVDb250ZXh0TWVudTogZnVuY3Rpb24oZXYpIHsKCQl0aGlzLnRyaWdnZXIoJ2NvbnRleHRtZW51JywgZXYpOwoJfSwKCgloYW5kbGVTY3JvbGw6IGZ1bmN0aW9uKGV2KSB7CgkJdGhpcy50cmlnZ2VyKCdzY3JvbGwnLCBldik7Cgl9LAoKCgkvLyBVdGlscwoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglzdG9wVG91Y2g6IGZ1bmN0aW9uKGV2LCBza2lwTW91c2VJZ25vcmUpIHsKCQlpZiAodGhpcy5pc1RvdWNoaW5nKSB7CgkJCXRoaXMuaXNUb3VjaGluZyA9IGZhbHNlOwoJCQl0aGlzLnRyaWdnZXIoJ3RvdWNoZW5kJywgZXYpOwoKCQkJaWYgKCFza2lwTW91c2VJZ25vcmUpIHsKCQkJCXRoaXMuc3RhcnRUb3VjaE1vdXNlSWdub3JlKCk7CgkJCX0KCQl9Cgl9LAoKCXN0YXJ0VG91Y2hNb3VzZUlnbm9yZTogZnVuY3Rpb24oKSB7CgkJdmFyIF90aGlzID0gdGhpczsKCQl2YXIgd2FpdCA9IEZDLnRvdWNoTW91c2VJZ25vcmVXYWl0OwoKCQlpZiAod2FpdCkgewoJCQl0aGlzLm1vdXNlSWdub3JlRGVwdGgrKzsKCQkJc2V0VGltZW91dChmdW5jdGlvbigpIHsKCQkJCV90aGlzLm1vdXNlSWdub3JlRGVwdGgtLTsKCQkJfSwgd2FpdCk7CgkJfQoJfSwKCglzaG91bGRJZ25vcmVNb3VzZTogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHRoaXMuaXNUb3VjaGluZyB8fCBCb29sZWFuKHRoaXMubW91c2VJZ25vcmVEZXB0aCk7Cgl9Cgp9KTsKCgovLyBTaW5nbGV0b24KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgooZnVuY3Rpb24oKSB7Cgl2YXIgZ2xvYmFsRW1pdHRlciA9IG51bGw7Cgl2YXIgbmVlZGVkQ291bnQgPSAwOwoKCgkvLyBnZXRzIHRoZSBzaW5nbGV0b24KCUdsb2JhbEVtaXR0ZXIuZ2V0ID0gZnVuY3Rpb24oKSB7CgoJCWlmICghZ2xvYmFsRW1pdHRlcikgewoJCQlnbG9iYWxFbWl0dGVyID0gbmV3IEdsb2JhbEVtaXR0ZXIoKTsKCQkJZ2xvYmFsRW1pdHRlci5iaW5kKCk7CgkJfQoKCQlyZXR1cm4gZ2xvYmFsRW1pdHRlcjsKCX07CgoKCS8vIGNhbGxlZCB3aGVuIGFuIG9iamVjdCBrbm93cyBpdCB3aWxsIG5lZWQgYSBHbG9iYWxFbWl0dGVyIGluIHRoZSBuZWFyIGZ1dHVyZS4KCUdsb2JhbEVtaXR0ZXIubmVlZGVkID0gZnVuY3Rpb24oKSB7CgkJR2xvYmFsRW1pdHRlci5nZXQoKTsgLy8gZW5zdXJlcyBnbG9iYWxFbWl0dGVyCgkJbmVlZGVkQ291bnQrKzsKCX07CgoKCS8vIGNhbGxlZCB3aGVuIHRoZSBvYmplY3QgdGhhdCBvcmlnaW5hbGx5IGNhbGxlZCBuZWVkZWQoKSBkb2Vzbid0IG5lZWQgYSBHbG9iYWxFbWl0dGVyIGFueW1vcmUuCglHbG9iYWxFbWl0dGVyLnVubmVlZGVkID0gZnVuY3Rpb24oKSB7CgkJbmVlZGVkQ291bnQtLTsKCgkJaWYgKCFuZWVkZWRDb3VudCkgeyAvLyBub2JvZHkgZWxzZSBuZWVkcyBpdAoJCQlnbG9iYWxFbWl0dGVyLnVuYmluZCgpOwoJCQlnbG9iYWxFbWl0dGVyID0gbnVsbDsKCQl9Cgl9OwoKfSkoKTsKCjs7CgovKiBDcmVhdGVzIGEgY2xvbmUgb2YgYW4gZWxlbWVudCBhbmQgbGV0cyBpdCB0cmFjayB0aGUgbW91c2UgYXMgaXQgbW92ZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgp2YXIgTW91c2VGb2xsb3dlciA9IENsYXNzLmV4dGVuZChMaXN0ZW5lck1peGluLCB7CgoJb3B0aW9uczogbnVsbCwKCglzb3VyY2VFbDogbnVsbCwgLy8gdGhlIGVsZW1lbnQgdGhhdCB3aWxsIGJlIGNsb25lZCBhbmQgbWFkZSB0byBsb29rIGxpa2UgaXQgaXMgZHJhZ2dpbmcKCWVsOiBudWxsLCAvLyB0aGUgY2xvbmUgb2YgYHNvdXJjZUVsYCB0aGF0IHdpbGwgdHJhY2sgdGhlIG1vdXNlCglwYXJlbnRFbDogbnVsbCwgLy8gdGhlIGVsZW1lbnQgdGhhdCBgZWxgICh0aGUgY2xvbmUpIHdpbGwgYmUgYXR0YWNoZWQgdG8KCgkvLyB0aGUgaW5pdGlhbCBwb3NpdGlvbiBvZiBlbCwgcmVsYXRpdmUgdG8gdGhlIG9mZnNldCBwYXJlbnQuIG1hZGUgdG8gbWF0Y2ggdGhlIGluaXRpYWwgb2Zmc2V0IG9mIHNvdXJjZUVsCgl0b3AwOiBudWxsLAoJbGVmdDA6IG51bGwsCgoJLy8gdGhlIGFic29sdXRlIGNvb3JkaW5hdGVzIG9mIHRoZSBpbml0aWF0aW5nIHRvdWNoL21vdXNlIGFjdGlvbgoJeTA6IG51bGwsCgl4MDogbnVsbCwKCgkvLyB0aGUgbnVtYmVyIG9mIHBpeGVscyB0aGUgbW91c2UgaGFzIG1vdmVkIGZyb20gaXRzIGluaXRpYWwgcG9zaXRpb24KCXRvcERlbHRhOiBudWxsLAoJbGVmdERlbHRhOiBudWxsLAoKCWlzRm9sbG93aW5nOiBmYWxzZSwKCWlzSGlkZGVuOiBmYWxzZSwKCWlzQW5pbWF0aW5nOiBmYWxzZSwgLy8gZG9pbmcgdGhlIHJldmVydCBhbmltYXRpb24/CgoJY29uc3RydWN0b3I6IGZ1bmN0aW9uKHNvdXJjZUVsLCBvcHRpb25zKSB7CgkJdGhpcy5vcHRpb25zID0gb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CgkJdGhpcy5zb3VyY2VFbCA9IHNvdXJjZUVsOwoJCXRoaXMucGFyZW50RWwgPSBvcHRpb25zLnBhcmVudEVsID8gJChvcHRpb25zLnBhcmVudEVsKSA6IHNvdXJjZUVsLnBhcmVudCgpOyAvLyBkZWZhdWx0IHRvIHNvdXJjZUVsJ3MgcGFyZW50Cgl9LAoKCgkvLyBDYXVzZXMgdGhlIGVsZW1lbnQgdG8gc3RhcnQgZm9sbG93aW5nIHRoZSBtb3VzZQoJc3RhcnQ6IGZ1bmN0aW9uKGV2KSB7CgkJaWYgKCF0aGlzLmlzRm9sbG93aW5nKSB7CgkJCXRoaXMuaXNGb2xsb3dpbmcgPSB0cnVlOwoKCQkJdGhpcy55MCA9IGdldEV2WShldik7CgkJCXRoaXMueDAgPSBnZXRFdlgoZXYpOwoJCQl0aGlzLnRvcERlbHRhID0gMDsKCQkJdGhpcy5sZWZ0RGVsdGEgPSAwOwoKCQkJaWYgKCF0aGlzLmlzSGlkZGVuKSB7CgkJCQl0aGlzLnVwZGF0ZVBvc2l0aW9uKCk7CgkJCX0KCgkJCWlmIChnZXRFdklzVG91Y2goZXYpKSB7CgkJCQl0aGlzLmxpc3RlblRvKCQoZG9jdW1lbnQpLCAndG91Y2htb3ZlJywgdGhpcy5oYW5kbGVNb3ZlKTsKCQkJfQoJCQllbHNlIHsKCQkJCXRoaXMubGlzdGVuVG8oJChkb2N1bWVudCksICdtb3VzZW1vdmUnLCB0aGlzLmhhbmRsZU1vdmUpOwoJCQl9CgkJfQoJfSwKCgoJLy8gQ2F1c2VzIHRoZSBlbGVtZW50IHRvIHN0b3AgZm9sbG93aW5nIHRoZSBtb3VzZS4gSWYgc2hvdWxkUmV2ZXJ0IGlzIHRydWUsIHdpbGwgYW5pbWF0ZSBiYWNrIHRvIG9yaWdpbmFsIHBvc2l0aW9uLgoJLy8gYGNhbGxiYWNrYCBnZXRzIGludm9rZWQgd2hlbiB0aGUgYW5pbWF0aW9uIGlzIGNvbXBsZXRlLiBJZiBubyBhbmltYXRpb24sIGl0IGlzIGludm9rZWQgaW1tZWRpYXRlbHkuCglzdG9wOiBmdW5jdGlvbihzaG91bGRSZXZlcnQsIGNhbGxiYWNrKSB7CgkJdmFyIF90aGlzID0gdGhpczsKCQl2YXIgcmV2ZXJ0RHVyYXRpb24gPSB0aGlzLm9wdGlvbnMucmV2ZXJ0RHVyYXRpb247CgoJCWZ1bmN0aW9uIGNvbXBsZXRlKCkgeyAvLyBtaWdodCBiZSBjYWxsZWQgYnkgLmFuaW1hdGUoKSwgd2hpY2ggbWlnaHQgY2hhbmdlIGB0aGlzYCBjb250ZXh0CgkJCV90aGlzLmlzQW5pbWF0aW5nID0gZmFsc2U7CgkJCV90aGlzLnJlbW92ZUVsZW1lbnQoKTsKCgkJCV90aGlzLnRvcDAgPSBfdGhpcy5sZWZ0MCA9IG51bGw7IC8vIHJlc2V0IHN0YXRlIGZvciBmdXR1cmUgdXBkYXRlUG9zaXRpb24gY2FsbHMKCgkJCWlmIChjYWxsYmFjaykgewoJCQkJY2FsbGJhY2soKTsKCQkJfQoJCX0KCgkJaWYgKHRoaXMuaXNGb2xsb3dpbmcgJiYgIXRoaXMuaXNBbmltYXRpbmcpIHsgLy8gZGlzYWxsb3cgbW9yZSB0aGFuIG9uZSBzdG9wIGFuaW1hdGlvbiBhdCBhIHRpbWUKCQkJdGhpcy5pc0ZvbGxvd2luZyA9IGZhbHNlOwoKCQkJdGhpcy5zdG9wTGlzdGVuaW5nVG8oJChkb2N1bWVudCkpOwoKCQkJaWYgKHNob3VsZFJldmVydCAmJiByZXZlcnREdXJhdGlvbiAmJiAhdGhpcy5pc0hpZGRlbikgeyAvLyBkbyBhIHJldmVydCBhbmltYXRpb24/CgkJCQl0aGlzLmlzQW5pbWF0aW5nID0gdHJ1ZTsKCQkJCXRoaXMuZWwuYW5pbWF0ZSh7CgkJCQkJdG9wOiB0aGlzLnRvcDAsCgkJCQkJbGVmdDogdGhpcy5sZWZ0MAoJCQkJfSwgewoJCQkJCWR1cmF0aW9uOiByZXZlcnREdXJhdGlvbiwKCQkJCQljb21wbGV0ZTogY29tcGxldGUKCQkJCX0pOwoJCQl9CgkJCWVsc2UgewoJCQkJY29tcGxldGUoKTsKCQkJfQoJCX0KCX0sCgoKCS8vIEdldHMgdGhlIHRyYWNraW5nIGVsZW1lbnQuIENyZWF0ZSBpdCBpZiBuZWNlc3NhcnkKCWdldEVsOiBmdW5jdGlvbigpIHsKCQl2YXIgZWwgPSB0aGlzLmVsOwoKCQlpZiAoIWVsKSB7CgkJCWVsID0gdGhpcy5lbCA9IHRoaXMuc291cmNlRWwuY2xvbmUoKQoJCQkJLmFkZENsYXNzKHRoaXMub3B0aW9ucy5hZGRpdGlvbmFsQ2xhc3MgfHwgJycpCgkJCQkuY3NzKHsKCQkJCQlwb3NpdGlvbjogJ2Fic29sdXRlJywKCQkJCQl2aXNpYmlsaXR5OiAnJywgLy8gaW4gY2FzZSBvcmlnaW5hbCBlbGVtZW50IHdhcyBoaWRkZW4gKGNvbW1vbmx5IHRocm91Z2ggaGlkZUV2ZW50cygpKQoJCQkJCWRpc3BsYXk6IHRoaXMuaXNIaWRkZW4gPyAnbm9uZScgOiAnJywgLy8gZm9yIHdoZW4gaW5pdGlhbGx5IGhpZGRlbgoJCQkJCW1hcmdpbjogMCwKCQkJCQlyaWdodDogJ2F1dG8nLCAvLyBlcmFzZSBhbmQgc2V0IHdpZHRoIGluc3RlYWQKCQkJCQlib3R0b206ICdhdXRvJywgLy8gZXJhc2UgYW5kIHNldCBoZWlnaHQgaW5zdGVhZAoJCQkJCXdpZHRoOiB0aGlzLnNvdXJjZUVsLndpZHRoKCksIC8vIGV4cGxpY2l0IGhlaWdodCBpbiBjYXNlIHRoZXJlIHdhcyBhICdyaWdodCcgdmFsdWUKCQkJCQloZWlnaHQ6IHRoaXMuc291cmNlRWwuaGVpZ2h0KCksIC8vIGV4cGxpY2l0IHdpZHRoIGluIGNhc2UgdGhlcmUgd2FzIGEgJ2JvdHRvbScgdmFsdWUKCQkJCQlvcGFjaXR5OiB0aGlzLm9wdGlvbnMub3BhY2l0eSB8fCAnJywKCQkJCQl6SW5kZXg6IHRoaXMub3B0aW9ucy56SW5kZXgKCQkJCX0pOwoKCQkJLy8gd2UgZG9uJ3Qgd2FudCBsb25nIHRhcHMgb3IgYW55IG1vdXNlIGludGVyYWN0aW9uIGNhdXNpbmcgc2VsZWN0aW9uL21lbnVzLgoJCQkvLyB3b3VsZCB1c2UgcHJldmVudFNlbGVjdGlvbigpLCBidXQgdGhhdCBwcmV2ZW50cyBzZWxlY3RzdGFydCwgY2F1c2luZyBwcm9ibGVtcy4KCQkJZWwuYWRkQ2xhc3MoJ2ZjLXVuc2VsZWN0YWJsZScpOwoKCQkJZWwuYXBwZW5kVG8odGhpcy5wYXJlbnRFbCk7CgkJfQoKCQlyZXR1cm4gZWw7Cgl9LAoKCgkvLyBSZW1vdmVzIHRoZSB0cmFja2luZyBlbGVtZW50IGlmIGl0IGhhcyBhbHJlYWR5IGJlZW4gY3JlYXRlZAoJcmVtb3ZlRWxlbWVudDogZnVuY3Rpb24oKSB7CgkJaWYgKHRoaXMuZWwpIHsKCQkJdGhpcy5lbC5yZW1vdmUoKTsKCQkJdGhpcy5lbCA9IG51bGw7CgkJfQoJfSwKCgoJLy8gVXBkYXRlIHRoZSBDU1MgcG9zaXRpb24gb2YgdGhlIHRyYWNraW5nIGVsZW1lbnQKCXVwZGF0ZVBvc2l0aW9uOiBmdW5jdGlvbigpIHsKCQl2YXIgc291cmNlT2Zmc2V0OwoJCXZhciBvcmlnaW47CgoJCXRoaXMuZ2V0RWwoKTsgLy8gZW5zdXJlIHRoaXMuZWwKCgkJLy8gbWFrZSBzdXJlIG9yaWdpbiBpbmZvIHdhcyBjb21wdXRlZAoJCWlmICh0aGlzLnRvcDAgPT09IG51bGwpIHsKCQkJc291cmNlT2Zmc2V0ID0gdGhpcy5zb3VyY2VFbC5vZmZzZXQoKTsKCQkJb3JpZ2luID0gdGhpcy5lbC5vZmZzZXRQYXJlbnQoKS5vZmZzZXQoKTsKCQkJdGhpcy50b3AwID0gc291cmNlT2Zmc2V0LnRvcCAtIG9yaWdpbi50b3A7CgkJCXRoaXMubGVmdDAgPSBzb3VyY2VPZmZzZXQubGVmdCAtIG9yaWdpbi5sZWZ0OwoJCX0KCgkJdGhpcy5lbC5jc3MoewoJCQl0b3A6IHRoaXMudG9wMCArIHRoaXMudG9wRGVsdGEsCgkJCWxlZnQ6IHRoaXMubGVmdDAgKyB0aGlzLmxlZnREZWx0YQoJCX0pOwoJfSwKCgoJLy8gR2V0cyBjYWxsZWQgd2hlbiB0aGUgdXNlciBtb3ZlcyB0aGUgbW91c2UKCWhhbmRsZU1vdmU6IGZ1bmN0aW9uKGV2KSB7CgkJdGhpcy50b3BEZWx0YSA9IGdldEV2WShldikgLSB0aGlzLnkwOwoJCXRoaXMubGVmdERlbHRhID0gZ2V0RXZYKGV2KSAtIHRoaXMueDA7CgoJCWlmICghdGhpcy5pc0hpZGRlbikgewoJCQl0aGlzLnVwZGF0ZVBvc2l0aW9uKCk7CgkJfQoJfSwKCgoJLy8gVGVtcG9yYXJpbHkgbWFrZXMgdGhlIHRyYWNraW5nIGVsZW1lbnQgaW52aXNpYmxlLiBDYW4gYmUgY2FsbGVkIGJlZm9yZSBmb2xsb3dpbmcgc3RhcnRzCgloaWRlOiBmdW5jdGlvbigpIHsKCQlpZiAoIXRoaXMuaXNIaWRkZW4pIHsKCQkJdGhpcy5pc0hpZGRlbiA9IHRydWU7CgkJCWlmICh0aGlzLmVsKSB7CgkJCQl0aGlzLmVsLmhpZGUoKTsKCQkJfQoJCX0KCX0sCgoKCS8vIFNob3cgdGhlIHRyYWNraW5nIGVsZW1lbnQgYWZ0ZXIgaXQgaGFzIGJlZW4gdGVtcG9yYXJpbHkgaGlkZGVuCglzaG93OiBmdW5jdGlvbigpIHsKCQlpZiAodGhpcy5pc0hpZGRlbikgewoJCQl0aGlzLmlzSGlkZGVuID0gZmFsc2U7CgkJCXRoaXMudXBkYXRlUG9zaXRpb24oKTsKCQkJdGhpcy5nZXRFbCgpLnNob3coKTsKCQl9Cgl9Cgp9KTsKCjs7CgovKiBBbiBhYnN0cmFjdCBjbGFzcyBjb21wcmlzZWQgb2YgYSAiZ3JpZCIgb2YgYXJlYXMgdGhhdCBlYWNoIHJlcHJlc2VudCBhIHNwZWNpZmljIGRhdGV0aW1lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKdmFyIEdyaWQgPSBGQy5HcmlkID0gQ2xhc3MuZXh0ZW5kKExpc3RlbmVyTWl4aW4sIHsKCgkvLyBzZWxmLWNvbmZpZywgb3ZlcnJpZGFibGUgYnkgc3ViY2xhc3NlcwoJaGFzRGF5SW50ZXJhY3Rpb25zOiB0cnVlLCAvLyBjYW4gdXNlciBjbGljay9zZWxlY3QgcmFuZ2VzIG9mIHRpbWU/CgoJdmlldzogbnVsbCwgLy8gYSBWaWV3IG9iamVjdAoJaXNSVEw6IG51bGwsIC8vIHNob3J0Y3V0IHRvIHRoZSB2aWV3J3MgaXNSVEwgb3B0aW9uCgoJc3RhcnQ6IG51bGwsCgllbmQ6IG51bGwsCgoJZWw6IG51bGwsIC8vIHRoZSBjb250YWluaW5nIGVsZW1lbnQKCWVsc0J5RmlsbDogbnVsbCwgLy8gYSBoYXNoIG9mIGpRdWVyeSBlbGVtZW50IHNldHMgdXNlZCBmb3IgcmVuZGVyaW5nIGVhY2ggZmlsbC4gS2V5ZWQgYnkgZmlsbCBuYW1lLgoKCS8vIGRlcml2ZWQgZnJvbSBvcHRpb25zCglldmVudFRpbWVGb3JtYXQ6IG51bGwsCglkaXNwbGF5RXZlbnRUaW1lOiBudWxsLAoJZGlzcGxheUV2ZW50RW5kOiBudWxsLAoKCW1pblJlc2l6ZUR1cmF0aW9uOiBudWxsLCAvLyBUT0RPOiBoYWNrLiBzZXQgYnkgc3ViY2xhc3Nlcy4gbWludW11bSBldmVudCByZXNpemUgZHVyYXRpb24KCgkvLyBpZiBkZWZpbmVkLCBob2xkcyB0aGUgdW5pdCBpZGVudGlmaWVkIChleDogInllYXIiIG9yICJtb250aCIpIHRoYXQgZGV0ZXJtaW5lcyB0aGUgbGV2ZWwgb2YgZ3JhbnVsYXJpdHkKCS8vIG9mIHRoZSBkYXRlIGFyZWFzLiBpZiBub3QgZGVmaW5lZCwgYXNzdW1lcyB0byBiZSBkYXkgYW5kIHRpbWUgZ3JhbnVsYXJpdHkuCgkvLyBUT0RPOiBwb3J0IGlzVGltZVNjYWxlIGludG8gc2FtZSBzeXN0ZW0/CglsYXJnZVVuaXQ6IG51bGwsCgoJZGF5Q2xpY2tMaXN0ZW5lcjogbnVsbCwKCWRheVNlbGVjdExpc3RlbmVyOiBudWxsLAoJc2VnRHJhZ0xpc3RlbmVyOiBudWxsLAoJc2VnUmVzaXplTGlzdGVuZXI6IG51bGwsCglleHRlcm5hbERyYWdMaXN0ZW5lcjogbnVsbCwKCgoJY29uc3RydWN0b3I6IGZ1bmN0aW9uKHZpZXcpIHsKCQl0aGlzLnZpZXcgPSB2aWV3OwoJCXRoaXMuaXNSVEwgPSB2aWV3Lm9wdCgnaXNSVEwnKTsKCQl0aGlzLmVsc0J5RmlsbCA9IHt9OwoKCQl0aGlzLmRheUNsaWNrTGlzdGVuZXIgPSB0aGlzLmJ1aWxkRGF5Q2xpY2tMaXN0ZW5lcigpOwoJCXRoaXMuZGF5U2VsZWN0TGlzdGVuZXIgPSB0aGlzLmJ1aWxkRGF5U2VsZWN0TGlzdGVuZXIoKTsKCX0sCgoKCS8qIE9wdGlvbnMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIEdlbmVyYXRlcyB0aGUgZm9ybWF0IHN0cmluZyB1c2VkIGZvciBldmVudCB0aW1lIHRleHQsIGlmIG5vdCBleHBsaWNpdGx5IGRlZmluZWQgYnkgJ3RpbWVGb3JtYXQnCgljb21wdXRlRXZlbnRUaW1lRm9ybWF0OiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gdGhpcy52aWV3Lm9wdCgnc21hbGxUaW1lRm9ybWF0Jyk7Cgl9LAoKCgkvLyBEZXRlcm1pbmVzIHdoZXRoZXIgZXZlbnRzIHNob3VsZCBoYXZlIHRoZWlyIGVuZCB0aW1lcyBkaXNwbGF5ZWQsIGlmIG5vdCBleHBsaWNpdGx5IGRlZmluZWQgYnkgJ2Rpc3BsYXlFdmVudFRpbWUnLgoJLy8gT25seSBhcHBsaWVzIHRvIG5vbi1hbGwtZGF5IGV2ZW50cy4KCWNvbXB1dGVEaXNwbGF5RXZlbnRUaW1lOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gdHJ1ZTsKCX0sCgoKCS8vIERldGVybWluZXMgd2hldGhlciBldmVudHMgc2hvdWxkIGhhdmUgdGhlaXIgZW5kIHRpbWVzIGRpc3BsYXllZCwgaWYgbm90IGV4cGxpY2l0bHkgZGVmaW5lZCBieSAnZGlzcGxheUV2ZW50RW5kJwoJY29tcHV0ZURpc3BsYXlFdmVudEVuZDogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHRydWU7Cgl9LAoKCgkvKiBEYXRlcwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gVGVsbHMgdGhlIGdyaWQgYWJvdXQgd2hhdCBwZXJpb2Qgb2YgdGltZSB0byBkaXNwbGF5LgoJLy8gQW55IGRhdGUtcmVsYXRlZCBpbnRlcm5hbCBkYXRhIHNob3VsZCBiZSBnZW5lcmF0ZWQuCglzZXRSYW5nZTogZnVuY3Rpb24ocmFuZ2UpIHsKCQl0aGlzLnN0YXJ0ID0gcmFuZ2Uuc3RhcnQuY2xvbmUoKTsKCQl0aGlzLmVuZCA9IHJhbmdlLmVuZC5jbG9uZSgpOwoKCQl0aGlzLnJhbmdlVXBkYXRlZCgpOwoJCXRoaXMucHJvY2Vzc1JhbmdlT3B0aW9ucygpOwoJfSwKCgoJLy8gQ2FsbGVkIHdoZW4gaW50ZXJuYWwgdmFyaWFibGVzIHRoYXQgcmVseSBvbiB0aGUgcmFuZ2Ugc2hvdWxkIGJlIHVwZGF0ZWQKCXJhbmdlVXBkYXRlZDogZnVuY3Rpb24oKSB7Cgl9LAoKCgkvLyBVcGRhdGVzIHZhbHVlcyB0aGF0IHJlbHkgb24gb3B0aW9ucyBhbmQgYWxzbyByZWxhdGUgdG8gcmFuZ2UKCXByb2Nlc3NSYW5nZU9wdGlvbnM6IGZ1bmN0aW9uKCkgewoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciBkaXNwbGF5RXZlbnRUaW1lOwoJCXZhciBkaXNwbGF5RXZlbnRFbmQ7CgoJCXRoaXMuZXZlbnRUaW1lRm9ybWF0ID0KCQkJdmlldy5vcHQoJ2V2ZW50VGltZUZvcm1hdCcpIHx8CgkJCXZpZXcub3B0KCd0aW1lRm9ybWF0JykgfHwgLy8gZGVwcmVjYXRlZAoJCQl0aGlzLmNvbXB1dGVFdmVudFRpbWVGb3JtYXQoKTsKCgkJZGlzcGxheUV2ZW50VGltZSA9IHZpZXcub3B0KCdkaXNwbGF5RXZlbnRUaW1lJyk7CgkJaWYgKGRpc3BsYXlFdmVudFRpbWUgPT0gbnVsbCkgewoJCQlkaXNwbGF5RXZlbnRUaW1lID0gdGhpcy5jb21wdXRlRGlzcGxheUV2ZW50VGltZSgpOyAvLyBtaWdodCBiZSBiYXNlZCBvZmYgb2YgcmFuZ2UKCQl9CgoJCWRpc3BsYXlFdmVudEVuZCA9IHZpZXcub3B0KCdkaXNwbGF5RXZlbnRFbmQnKTsKCQlpZiAoZGlzcGxheUV2ZW50RW5kID09IG51bGwpIHsKCQkJZGlzcGxheUV2ZW50RW5kID0gdGhpcy5jb21wdXRlRGlzcGxheUV2ZW50RW5kKCk7IC8vIG1pZ2h0IGJlIGJhc2VkIG9mZiBvZiByYW5nZQoJCX0KCgkJdGhpcy5kaXNwbGF5RXZlbnRUaW1lID0gZGlzcGxheUV2ZW50VGltZTsKCQl0aGlzLmRpc3BsYXlFdmVudEVuZCA9IGRpc3BsYXlFdmVudEVuZDsKCX0sCgoKCS8vIENvbnZlcnRzIGEgc3BhbiAoaGFzIHVuem9uZWQgc3RhcnQvZW5kIGFuZCBhbnkgb3RoZXIgZ3JpZC1zcGVjaWZpYyBsb2NhdGlvbiBpbmZvcm1hdGlvbikKCS8vIGludG8gYW4gYXJyYXkgb2Ygc2VnbWVudHMgKHBpZWNlcyBvZiBldmVudHMgd2hvc2UgZm9ybWF0IGlzIGRlY2lkZWQgYnkgdGhlIGdyaWQpLgoJc3BhblRvU2VnczogZnVuY3Rpb24oc3BhbikgewoJCS8vIHN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQKCX0sCgoKCS8vIERpZmZzIHRoZSB0d28gZGF0ZXMsIHJldHVybmluZyBhIGR1cmF0aW9uLCBiYXNlZCBvbiBncmFudWxhcml0eSBvZiB0aGUgZ3JpZAoJLy8gVE9ETzogcG9ydCBpc1RpbWVTY2FsZSBpbnRvIHRoaXMgc3lzdGVtPwoJZGlmZkRhdGVzOiBmdW5jdGlvbihhLCBiKSB7CgkJaWYgKHRoaXMubGFyZ2VVbml0KSB7CgkJCXJldHVybiBkaWZmQnlVbml0KGEsIGIsIHRoaXMubGFyZ2VVbml0KTsKCQl9CgkJZWxzZSB7CgkJCXJldHVybiBkaWZmRGF5VGltZShhLCBiKTsKCQl9Cgl9LAoKCgkvKiBIaXQgQXJlYQoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgloaXRzTmVlZGVkRGVwdGg6IDAsIC8vIG5lY2Vzc2FyeSBiZWNhdXNlIG11bHRpcGxlIGNhbGxlcnMgbWlnaHQgbmVlZCB0aGUgc2FtZSBoaXRzCgoJaGl0c05lZWRlZDogZnVuY3Rpb24oKSB7CgkJaWYgKCEodGhpcy5oaXRzTmVlZGVkRGVwdGgrKykpIHsKCQkJdGhpcy5wcmVwYXJlSGl0cygpOwoJCX0KCX0sCgoJaGl0c05vdE5lZWRlZDogZnVuY3Rpb24oKSB7CgkJaWYgKHRoaXMuaGl0c05lZWRlZERlcHRoICYmICEoLS10aGlzLmhpdHNOZWVkZWREZXB0aCkpIHsKCQkJdGhpcy5yZWxlYXNlSGl0cygpOwoJCX0KCX0sCgoKCS8vIENhbGxlZCBiZWZvcmUgb25lIG9yIG1vcmUgcXVlcnlIaXQgY2FsbHMgbWlnaHQgaGFwcGVuLiBTaG91bGQgcHJlcGFyZSBhbnkgY2FjaGVkIGNvb3JkaW5hdGVzIGZvciBxdWVyeUhpdAoJcHJlcGFyZUhpdHM6IGZ1bmN0aW9uKCkgewoJfSwKCgoJLy8gQ2FsbGVkIHdoZW4gcXVlcnlIaXQgY2FsbHMgaGF2ZSBzdWJzaWRlZC4gR29vZCBwbGFjZSB0byBjbGVhciBhbnkgY29vcmRpbmF0ZSBjYWNoZXMuCglyZWxlYXNlSGl0czogZnVuY3Rpb24oKSB7Cgl9LAoKCgkvLyBHaXZlbiBjb29yZGluYXRlcyBmcm9tIHRoZSB0b3BsZWZ0IG9mIHRoZSBkb2N1bWVudCwgcmV0dXJuIGRhdGEgYWJvdXQgdGhlIGRhdGUtcmVsYXRlZCBhcmVhIHVuZGVybmVhdGguCgkvLyBDYW4gcmV0dXJuIGFuIG9iamVjdCB3aXRoIGFyYml0cmFyeSBwcm9wZXJ0aWVzIChhbHRob3VnaCB0b3AvcmlnaHQvbGVmdC9ib3R0b20gYXJlIGVuY291cmFnZWQpLgoJLy8gTXVzdCBoYXZlIGEgYGdyaWRgIHByb3BlcnR5LCBhIHJlZmVyZW5jZSB0byB0aGlzIGN1cnJlbnQgZ3JpZC4gVE9ETzogYXZvaWQgdGhpcwoJLy8gVGhlIHJldHVybmVkIG9iamVjdCB3aWxsIGJlIHByb2Nlc3NlZCBieSBnZXRIaXRTcGFuIGFuZCBnZXRIaXRFbC4KCXF1ZXJ5SGl0OiBmdW5jdGlvbihsZWZ0T2Zmc2V0LCB0b3BPZmZzZXQpIHsKCX0sCgoKCS8vIGxpa2UgZ2V0SGl0U3BhbiwgYnV0IHJldHVybnMgbnVsbCBpZiB0aGUgcmVzdWx0aW5nIHNwYW4ncyByYW5nZSBpcyBpbnZhbGlkCglnZXRTYWZlSGl0U3BhbjogZnVuY3Rpb24oaGl0KSB7CgkJdmFyIGhpdFNwYW4gPSB0aGlzLmdldEhpdFNwYW4oaGl0KTsKCgkJaWYgKCFpc1JhbmdlV2l0aGluUmFuZ2UoaGl0U3BhbiwgdGhpcy52aWV3LmFjdGl2ZVJhbmdlKSkgewoJCQlyZXR1cm4gbnVsbDsKCQl9CgoJCXJldHVybiBoaXRTcGFuOwoJfSwKCgoJLy8gR2l2ZW4gcG9zaXRpb24tbGV2ZWwgaW5mb3JtYXRpb24gYWJvdXQgYSBkYXRlLXJlbGF0ZWQgYXJlYSB3aXRoaW4gdGhlIGdyaWQsCgkvLyBzaG91bGQgcmV0dXJuIGFuIG9iamVjdCB3aXRoIGF0IGxlYXN0IGEgc3RhcnQvZW5kIGRhdGUuIENhbiBwcm92aWRlIG90aGVyIGluZm9ybWF0aW9uIGFzIHdlbGwuCglnZXRIaXRTcGFuOiBmdW5jdGlvbihoaXQpIHsKCX0sCgoKCS8vIEdpdmVuIHBvc2l0aW9uLWxldmVsIGluZm9ybWF0aW9uIGFib3V0IGEgZGF0ZS1yZWxhdGVkIGFyZWEgd2l0aGluIHRoZSBncmlkLAoJLy8gc2hvdWxkIHJldHVybiBhIGpRdWVyeSBlbGVtZW50IHRoYXQgYmVzdCByZXByZXNlbnRzIGl0LiBwYXNzZWQgdG8gZGF5Q2xpY2sgY2FsbGJhY2suCglnZXRIaXRFbDogZnVuY3Rpb24oaGl0KSB7Cgl9LAoKCgkvKiBSZW5kZXJpbmcKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFNldHMgdGhlIGNvbnRhaW5lciBlbGVtZW50IHRoYXQgdGhlIGdyaWQgc2hvdWxkIHJlbmRlciBpbnNpZGUgb2YuCgkvLyBEb2VzIG90aGVyIERPTS1yZWxhdGVkIGluaXRpYWxpemF0aW9ucy4KCXNldEVsZW1lbnQ6IGZ1bmN0aW9uKGVsKSB7CgkJdGhpcy5lbCA9IGVsOwoKCQlpZiAodGhpcy5oYXNEYXlJbnRlcmFjdGlvbnMpIHsKCQkJcHJldmVudFNlbGVjdGlvbihlbCk7CgoJCQl0aGlzLmJpbmREYXlIYW5kbGVyKCd0b3VjaHN0YXJ0JywgdGhpcy5kYXlUb3VjaFN0YXJ0KTsKCQkJdGhpcy5iaW5kRGF5SGFuZGxlcignbW91c2Vkb3duJywgdGhpcy5kYXlNb3VzZWRvd24pOwoJCX0KCgkJLy8gYXR0YWNoIGV2ZW50LWVsZW1lbnQtcmVsYXRlZCBoYW5kbGVycy4gaW4gR3JpZC5ldmVudHMKCQkvLyBzYW1lIGdhcmJhZ2UgY29sbGVjdGlvbiBub3RlIGFzIGFib3ZlLgoJCXRoaXMuYmluZFNlZ0hhbmRsZXJzKCk7CgoJCXRoaXMuYmluZEdsb2JhbEhhbmRsZXJzKCk7Cgl9LAoKCgliaW5kRGF5SGFuZGxlcjogZnVuY3Rpb24obmFtZSwgaGFuZGxlcikgewoJCXZhciBfdGhpcyA9IHRoaXM7CgoJCS8vIGF0dGFjaCBhIGhhbmRsZXIgdG8gdGhlIGdyaWQncyByb290IGVsZW1lbnQuCgkJLy8galF1ZXJ5IHdpbGwgdGFrZSBjYXJlIG9mIHVucmVnaXN0ZXJpbmcgdGhlbSB3aGVuIHJlbW92ZUVsZW1lbnQgZ2V0cyBjYWxsZWQuCgkJdGhpcy5lbC5vbihuYW1lLCBmdW5jdGlvbihldikgewoJCQlpZiAoCgkJCQkhJChldi50YXJnZXQpLmlzKAoJCQkJCV90aGlzLnNlZ1NlbGVjdG9yICsgJywnICsgLy8gZGlyZWN0bHkgb24gYW4gZXZlbnQgZWxlbWVudAoJCQkJCV90aGlzLnNlZ1NlbGVjdG9yICsgJyAqLCcgKyAvLyB3aXRoaW4gYW4gZXZlbnQgZWxlbWVudAoJCQkJCScuZmMtbW9yZSwnICsgLy8gYSAibW9yZS4uIiBsaW5rCgkJCQkJJ2FbZGF0YS1nb3RvXScgLy8gYSBjbGlja2FibGUgbmF2IGxpbmsKCQkJCSkKCQkJKSB7CgkJCQlyZXR1cm4gaGFuZGxlci5jYWxsKF90aGlzLCBldik7CgkJCX0KCQl9KTsKCX0sCgoKCS8vIFJlbW92ZXMgdGhlIGdyaWQncyBjb250YWluZXIgZWxlbWVudCBmcm9tIHRoZSBET00uIFVuZG9lcyBhbnkgb3RoZXIgRE9NLXJlbGF0ZWQgYXR0YWNobWVudHMuCgkvLyBET0VTIE5PVCByZW1vdmUgYW55IGNvbnRlbnQgYmVmb3JlaGFuZCAoZG9lc24ndCBjbGVhciBldmVudHMgb3IgY2FsbCB1bnJlbmRlckRhdGVzKSwgdW5saWtlIFZpZXcKCXJlbW92ZUVsZW1lbnQ6IGZ1bmN0aW9uKCkgewoJCXRoaXMudW5iaW5kR2xvYmFsSGFuZGxlcnMoKTsKCQl0aGlzLmNsZWFyRHJhZ0xpc3RlbmVycygpOwoKCQl0aGlzLmVsLnJlbW92ZSgpOwoKCQkvLyBOT1RFOiB3ZSBkb24ndCBudWxsLW91dCB0aGlzLmVsIGZvciB0aGUgc2FtZSByZWFzb25zIHdlIGRvbid0IGRvIGl0IHdpdGhpbiBWaWV3OjpyZW1vdmVFbGVtZW50Cgl9LAoKCgkvLyBSZW5kZXJzIHRoZSBiYXNpYyBzdHJ1Y3R1cmUgb2YgZ3JpZCB2aWV3IGJlZm9yZSBhbnkgY29udGVudCBpcyByZW5kZXJlZAoJcmVuZGVyU2tlbGV0b246IGZ1bmN0aW9uKCkgewoJCS8vIHN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudAoJfSwKCgoJLy8gUmVuZGVycyB0aGUgZ3JpZCdzIGRhdGUtcmVsYXRlZCBjb250ZW50IChsaWtlIGFyZWFzIHRoYXQgcmVwcmVzZW50IGRheXMvdGltZXMpLgoJLy8gQXNzdW1lcyBzZXRSYW5nZSBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZCBhbmQgdGhlIHNrZWxldG9uIGhhcyBhbHJlYWR5IGJlZW4gcmVuZGVyZWQuCglyZW5kZXJEYXRlczogZnVuY3Rpb24oKSB7CgkJLy8gc3ViY2xhc3NlcyBzaG91bGQgaW1wbGVtZW50Cgl9LAoKCgkvLyBVbnJlbmRlcnMgdGhlIGdyaWQncyBkYXRlLXJlbGF0ZWQgY29udGVudAoJdW5yZW5kZXJEYXRlczogZnVuY3Rpb24oKSB7CgkJLy8gc3ViY2xhc3NlcyBzaG91bGQgaW1wbGVtZW50Cgl9LAoKCgkvKiBIYW5kbGVycwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gQmluZHMgRE9NIGhhbmRsZXJzIHRvIGVsZW1lbnRzIHRoYXQgcmVzaWRlIG91dHNpZGUgdGhlIGdyaWQsIHN1Y2ggYXMgdGhlIGRvY3VtZW50CgliaW5kR2xvYmFsSGFuZGxlcnM6IGZ1bmN0aW9uKCkgewoJCXRoaXMubGlzdGVuVG8oJChkb2N1bWVudCksIHsKCQkJZHJhZ3N0YXJ0OiB0aGlzLmV4dGVybmFsRHJhZ1N0YXJ0LCAvLyBqcXVpCgkJCXNvcnRzdGFydDogdGhpcy5leHRlcm5hbERyYWdTdGFydCAvLyBqcXVpCgkJfSk7Cgl9LAoKCgkvLyBVbmJpbmRzIERPTSBoYW5kbGVycyBmcm9tIGVsZW1lbnRzIHRoYXQgcmVzaWRlIG91dHNpZGUgdGhlIGdyaWQKCXVuYmluZEdsb2JhbEhhbmRsZXJzOiBmdW5jdGlvbigpIHsKCQl0aGlzLnN0b3BMaXN0ZW5pbmdUbygkKGRvY3VtZW50KSk7Cgl9LAoKCgkvLyBQcm9jZXNzIGEgbW91c2Vkb3duIG9uIGFuIGVsZW1lbnQgdGhhdCByZXByZXNlbnRzIGEgZGF5LiBGb3IgZGF5IGNsaWNraW5nIGFuZCBzZWxlY3RpbmcuCglkYXlNb3VzZWRvd246IGZ1bmN0aW9uKGV2KSB7CgkJdmFyIHZpZXcgPSB0aGlzLnZpZXc7CgoJCS8vIEhBQ0sKCQkvLyBUaGlzIHdpbGwgc3RpbGwgd29yayBldmVuIHRob3VnaCBiaW5kRGF5SGFuZGxlciBkb2Vzbid0IHVzZSBHbG9iYWxFbWl0dGVyLgoJCWlmIChHbG9iYWxFbWl0dGVyLmdldCgpLnNob3VsZElnbm9yZU1vdXNlKCkpIHsKCQkJcmV0dXJuOwoJCX0KCgkJdGhpcy5kYXlDbGlja0xpc3RlbmVyLnN0YXJ0SW50ZXJhY3Rpb24oZXYpOwoKCQlpZiAodmlldy5vcHQoJ3NlbGVjdGFibGUnKSkgewoJCQl0aGlzLmRheVNlbGVjdExpc3RlbmVyLnN0YXJ0SW50ZXJhY3Rpb24oZXYsIHsKCQkJCWRpc3RhbmNlOiB2aWV3Lm9wdCgnc2VsZWN0TWluRGlzdGFuY2UnKQoJCQl9KTsKCQl9Cgl9LAoKCglkYXlUb3VjaFN0YXJ0OiBmdW5jdGlvbihldikgewoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciBzZWxlY3RMb25nUHJlc3NEZWxheTsKCgkJLy8gT24gaU9TIChhbmQgQW5kcm9pZD8pIHdoZW4gYSBuZXcgc2VsZWN0aW9uIGlzIGluaXRpYXRlZCBvdmVydG9wIGFub3RoZXIgc2VsZWN0aW9uLAoJCS8vIHRoZSB0b3VjaGVuZCBuZXZlciBmaXJlcyBiZWNhdXNlIHRoZSBlbGVtZW50cyBnZXRzIHJlbW92ZWQgbWlkLXRvdWNoLWludGVyYWN0aW9uIChteSB0aGVvcnkpLgoJCS8vIEhBQ0s6IHNpbXBseSBkb24ndCBhbGxvdyB0aGlzIHRvIGhhcHBlbi4KCQkvLyBBTFNPOiBwcmV2ZW50IHNlbGVjdGlvbiB3aGVuIGFuICpldmVudCogaXMgYWxyZWFkeSByYWlzZWQuCgkJaWYgKHZpZXcuaXNTZWxlY3RlZCB8fCB2aWV3LnNlbGVjdGVkRXZlbnQpIHsKCQkJcmV0dXJuOwoJCX0KCgkJc2VsZWN0TG9uZ1ByZXNzRGVsYXkgPSB2aWV3Lm9wdCgnc2VsZWN0TG9uZ1ByZXNzRGVsYXknKTsKCQlpZiAoc2VsZWN0TG9uZ1ByZXNzRGVsYXkgPT0gbnVsbCkgewoJCQlzZWxlY3RMb25nUHJlc3NEZWxheSA9IHZpZXcub3B0KCdsb25nUHJlc3NEZWxheScpOyAvLyBmYWxsYmFjawoJCX0KCgkJdGhpcy5kYXlDbGlja0xpc3RlbmVyLnN0YXJ0SW50ZXJhY3Rpb24oZXYpOwoKCQlpZiAodmlldy5vcHQoJ3NlbGVjdGFibGUnKSkgewoJCQl0aGlzLmRheVNlbGVjdExpc3RlbmVyLnN0YXJ0SW50ZXJhY3Rpb24oZXYsIHsKCQkJCWRlbGF5OiBzZWxlY3RMb25nUHJlc3NEZWxheQoJCQl9KTsKCQl9Cgl9LAoKCgkvLyBDcmVhdGVzIGEgbGlzdGVuZXIgdGhhdCB0cmFja3MgdGhlIHVzZXIncyBkcmFnIGFjcm9zcyBkYXkgZWxlbWVudHMsIGZvciBkYXkgY2xpY2tpbmcuCglidWlsZERheUNsaWNrTGlzdGVuZXI6IGZ1bmN0aW9uKCkgewoJCXZhciBfdGhpcyA9IHRoaXM7CgkJdmFyIHZpZXcgPSB0aGlzLnZpZXc7CgkJdmFyIGRheUNsaWNrSGl0OyAvLyBudWxsIGlmIGludmFsaWQgZGF5Q2xpY2sKCgkJdmFyIGRyYWdMaXN0ZW5lciA9IG5ldyBIaXREcmFnTGlzdGVuZXIodGhpcywgewoJCQlzY3JvbGw6IHZpZXcub3B0KCdkcmFnU2Nyb2xsJyksCgkJCWludGVyYWN0aW9uU3RhcnQ6IGZ1bmN0aW9uKCkgewoJCQkJZGF5Q2xpY2tIaXQgPSBkcmFnTGlzdGVuZXIub3JpZ0hpdDsKCQkJfSwKCQkJaGl0T3ZlcjogZnVuY3Rpb24oaGl0LCBpc09yaWcsIG9yaWdIaXQpIHsKCQkJCS8vIGlmIHVzZXIgZHJhZ2dlZCB0byBhbm90aGVyIGNlbGwgYXQgYW55IHBvaW50LCBpdCBjYW4gbm8gbG9uZ2VyIGJlIGEgZGF5Q2xpY2sKCQkJCWlmICghaXNPcmlnKSB7CgkJCQkJZGF5Q2xpY2tIaXQgPSBudWxsOwoJCQkJfQoJCQl9LAoJCQloaXRPdXQ6IGZ1bmN0aW9uKCkgeyAvLyBjYWxsZWQgYmVmb3JlIG1vdXNlIG1vdmVzIHRvIGEgZGlmZmVyZW50IGhpdCBPUiBtb3ZlZCBvdXQgb2YgYWxsIGhpdHMKCQkJCWRheUNsaWNrSGl0ID0gbnVsbDsKCQkJfSwKCQkJaW50ZXJhY3Rpb25FbmQ6IGZ1bmN0aW9uKGV2LCBpc0NhbmNlbGxlZCkgewoJCQkJdmFyIGhpdFNwYW47CgoJCQkJaWYgKCFpc0NhbmNlbGxlZCAmJiBkYXlDbGlja0hpdCkgewoJCQkJCWhpdFNwYW4gPSBfdGhpcy5nZXRTYWZlSGl0U3BhbihkYXlDbGlja0hpdCk7CgoJCQkJCWlmIChoaXRTcGFuKSB7CgkJCQkJCXZpZXcudHJpZ2dlckRheUNsaWNrKGhpdFNwYW4sIF90aGlzLmdldEhpdEVsKGRheUNsaWNrSGl0KSwgZXYpOwoJCQkJCX0KCQkJCX0KCQkJfQoJCX0pOwoKCQkvLyBiZWNhdXNlIGRheUNsaWNrTGlzdGVuZXIgd29uJ3QgYmUgY2FsbGVkIHdpdGggYW55IHRpbWUgZGVsYXksICJkcmFnZ2luZyIgd2lsbCBiZWdpbiBpbW1lZGlhdGVseSwKCQkvLyB3aGljaCB3aWxsIGtpbGwgYW55IHRvdWNobW92aW5nL3Njcm9sbGluZy4gUHJldmVudCB0aGlzLgoJCWRyYWdMaXN0ZW5lci5zaG91bGRDYW5jZWxUb3VjaFNjcm9sbCA9IGZhbHNlOwoKCQlkcmFnTGlzdGVuZXIuc2Nyb2xsQWx3YXlzS2lsbHMgPSB0cnVlOwoKCQlyZXR1cm4gZHJhZ0xpc3RlbmVyOwoJfSwKCgoJLy8gQ3JlYXRlcyBhIGxpc3RlbmVyIHRoYXQgdHJhY2tzIHRoZSB1c2VyJ3MgZHJhZyBhY3Jvc3MgZGF5IGVsZW1lbnRzLCBmb3IgZGF5IHNlbGVjdGluZy4KCWJ1aWxkRGF5U2VsZWN0TGlzdGVuZXI6IGZ1bmN0aW9uKCkgewoJCXZhciBfdGhpcyA9IHRoaXM7CgkJdmFyIHZpZXcgPSB0aGlzLnZpZXc7CgkJdmFyIHNlbGVjdGlvblNwYW47IC8vIG51bGwgaWYgaW52YWxpZCBzZWxlY3Rpb24KCgkJdmFyIGRyYWdMaXN0ZW5lciA9IG5ldyBIaXREcmFnTGlzdGVuZXIodGhpcywgewoJCQlzY3JvbGw6IHZpZXcub3B0KCdkcmFnU2Nyb2xsJyksCgkJCWludGVyYWN0aW9uU3RhcnQ6IGZ1bmN0aW9uKCkgewoJCQkJc2VsZWN0aW9uU3BhbiA9IG51bGw7CgkJCX0sCgkJCWRyYWdTdGFydDogZnVuY3Rpb24oKSB7CgkJCQl2aWV3LnVuc2VsZWN0KCk7IC8vIHNpbmNlIHdlIGNvdWxkIGJlIHJlbmRlcmluZyBhIG5ldyBzZWxlY3Rpb24sIHdlIHdhbnQgdG8gY2xlYXIgYW55IG9sZCBvbmUKCQkJfSwKCQkJaGl0T3ZlcjogZnVuY3Rpb24oaGl0LCBpc09yaWcsIG9yaWdIaXQpIHsKCQkJCXZhciBvcmlnSGl0U3BhbjsKCQkJCXZhciBoaXRTcGFuOwoKCQkJCWlmIChvcmlnSGl0KSB7IC8vIGNsaWNrIG5lZWRzIHRvIGhhdmUgc3RhcnRlZCBvbiBhIGhpdAoKCQkJCQlvcmlnSGl0U3BhbiA9IF90aGlzLmdldFNhZmVIaXRTcGFuKG9yaWdIaXQpOwoJCQkJCWhpdFNwYW4gPSBfdGhpcy5nZXRTYWZlSGl0U3BhbihoaXQpOwoKCQkJCQlpZiAob3JpZ0hpdFNwYW4gJiYgaGl0U3BhbikgewoJCQkJCQlzZWxlY3Rpb25TcGFuID0gX3RoaXMuY29tcHV0ZVNlbGVjdGlvbihvcmlnSGl0U3BhbiwgaGl0U3Bhbik7CgkJCQkJfQoJCQkJCWVsc2UgewoJCQkJCQlzZWxlY3Rpb25TcGFuID0gbnVsbDsKCQkJCQl9CgoJCQkJCWlmIChzZWxlY3Rpb25TcGFuKSB7CgkJCQkJCV90aGlzLnJlbmRlclNlbGVjdGlvbihzZWxlY3Rpb25TcGFuKTsKCQkJCQl9CgkJCQkJZWxzZSBpZiAoc2VsZWN0aW9uU3BhbiA9PT0gZmFsc2UpIHsKCQkJCQkJZGlzYWJsZUN1cnNvcigpOwoJCQkJCX0KCQkJCX0KCQkJfSwKCQkJaGl0T3V0OiBmdW5jdGlvbigpIHsgLy8gY2FsbGVkIGJlZm9yZSBtb3VzZSBtb3ZlcyB0byBhIGRpZmZlcmVudCBoaXQgT1IgbW92ZWQgb3V0IG9mIGFsbCBoaXRzCgkJCQlzZWxlY3Rpb25TcGFuID0gbnVsbDsKCQkJCV90aGlzLnVucmVuZGVyU2VsZWN0aW9uKCk7CgkJCX0sCgkJCWhpdERvbmU6IGZ1bmN0aW9uKCkgeyAvLyBjYWxsZWQgYWZ0ZXIgYSBoaXRPdXQgT1IgYmVmb3JlIGEgZHJhZ0VuZAoJCQkJZW5hYmxlQ3Vyc29yKCk7CgkJCX0sCgkJCWludGVyYWN0aW9uRW5kOiBmdW5jdGlvbihldiwgaXNDYW5jZWxsZWQpIHsKCQkJCWlmICghaXNDYW5jZWxsZWQgJiYgc2VsZWN0aW9uU3BhbikgewoJCQkJCS8vIHRoZSBzZWxlY3Rpb24gd2lsbCBhbHJlYWR5IGhhdmUgYmVlbiByZW5kZXJlZC4ganVzdCByZXBvcnQgaXQKCQkJCQl2aWV3LnJlcG9ydFNlbGVjdGlvbihzZWxlY3Rpb25TcGFuLCBldik7CgkJCQl9CgkJCX0KCQl9KTsKCgkJcmV0dXJuIGRyYWdMaXN0ZW5lcjsKCX0sCgoKCS8vIEtpbGxzIGFsbCBpbi1wcm9ncmVzcyBkcmFnZ2luZy4KCS8vIFVzZWZ1bCBmb3Igd2hlbiBwdWJsaWMgQVBJIG1ldGhvZHMgdGhhdCByZXN1bHQgaW4gcmUtcmVuZGVyaW5nIGFyZSBpbnZva2VkIGR1cmluZyBhIGRyYWcuCgkvLyBBbHNvIHVzZWZ1bCBmb3Igd2hlbiB0b3VjaCBkZXZpY2VzIG1pc2JlaGF2ZSBhbmQgZG9uJ3QgZmlyZSB0aGVpciB0b3VjaGVuZC4KCWNsZWFyRHJhZ0xpc3RlbmVyczogZnVuY3Rpb24oKSB7CgkJdGhpcy5kYXlDbGlja0xpc3RlbmVyLmVuZEludGVyYWN0aW9uKCk7CgkJdGhpcy5kYXlTZWxlY3RMaXN0ZW5lci5lbmRJbnRlcmFjdGlvbigpOwoKCQlpZiAodGhpcy5zZWdEcmFnTGlzdGVuZXIpIHsKCQkJdGhpcy5zZWdEcmFnTGlzdGVuZXIuZW5kSW50ZXJhY3Rpb24oKTsgLy8gd2lsbCBjbGVhciB0aGlzLnNlZ0RyYWdMaXN0ZW5lcgoJCX0KCQlpZiAodGhpcy5zZWdSZXNpemVMaXN0ZW5lcikgewoJCQl0aGlzLnNlZ1Jlc2l6ZUxpc3RlbmVyLmVuZEludGVyYWN0aW9uKCk7IC8vIHdpbGwgY2xlYXIgdGhpcy5zZWdSZXNpemVMaXN0ZW5lcgoJCX0KCQlpZiAodGhpcy5leHRlcm5hbERyYWdMaXN0ZW5lcikgewoJCQl0aGlzLmV4dGVybmFsRHJhZ0xpc3RlbmVyLmVuZEludGVyYWN0aW9uKCk7IC8vIHdpbGwgY2xlYXIgdGhpcy5leHRlcm5hbERyYWdMaXN0ZW5lcgoJCX0KCX0sCgoKCS8qIEV2ZW50IEhlbHBlcgoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCS8vIFRPRE86IHNob3VsZCBwcm9iYWJseSBtb3ZlIHRoaXMgdG8gR3JpZC5ldmVudHMsIGxpa2Ugd2UgZGlkIGV2ZW50IGRyYWdnaW5nIC8gcmVzaXppbmcKCgoJLy8gUmVuZGVycyBhIG1vY2sgZXZlbnQgYXQgdGhlIGdpdmVuIGV2ZW50IGxvY2F0aW9uLCB3aGljaCBjb250YWlucyB6b25lZCBzdGFydC9lbmQgcHJvcGVydGllcy4KCS8vIFJldHVybnMgYWxsIG1vY2sgZXZlbnQgZWxlbWVudHMuCglyZW5kZXJFdmVudExvY2F0aW9uSGVscGVyOiBmdW5jdGlvbihldmVudExvY2F0aW9uLCBzb3VyY2VTZWcpIHsKCQl2YXIgZmFrZUV2ZW50ID0gdGhpcy5mYWJyaWNhdGVIZWxwZXJFdmVudChldmVudExvY2F0aW9uLCBzb3VyY2VTZWcpOwoKCQlyZXR1cm4gdGhpcy5yZW5kZXJIZWxwZXIoZmFrZUV2ZW50LCBzb3VyY2VTZWcpOyAvLyBkbyB0aGUgYWN0dWFsIHJlbmRlcmluZwoJfSwKCgoJLy8gQnVpbGRzIGEgZmFrZSBldmVudCBnaXZlbiB6b25lZCBldmVudCBkYXRlIHByb3BlcnRpZXMgYW5kIGEgc2VnbWVudCBpcyBzaG91bGQgYmUgaW5zcGlyZWQgZnJvbS4KCS8vIFRoZSByYW5nZSdzIGVuZCBjYW4gYmUgbnVsbCwgaW4gd2hpY2ggY2FzZSB0aGUgbW9jayBldmVudCB0aGF0IGlzIHJlbmRlcmVkIHdpbGwgaGF2ZSBhIG51bGwgZW5kIHRpbWUuCgkvLyBgc291cmNlU2VnYCBpcyB0aGUgaW50ZXJuYWwgc2VnbWVudCBvYmplY3QgaW52b2x2ZWQgaW4gdGhlIGRyYWcuIElmIG51bGwsIHNvbWV0aGluZyBleHRlcm5hbCBpcyBkcmFnZ2luZy4KCWZhYnJpY2F0ZUhlbHBlckV2ZW50OiBmdW5jdGlvbihldmVudExvY2F0aW9uLCBzb3VyY2VTZWcpIHsKCQl2YXIgZmFrZUV2ZW50ID0gc291cmNlU2VnID8gY3JlYXRlT2JqZWN0KHNvdXJjZVNlZy5ldmVudCkgOiB7fTsgLy8gbWFzayB0aGUgb3JpZ2luYWwgZXZlbnQgb2JqZWN0IGlmIHBvc3NpYmxlCgoJCWZha2VFdmVudC5zdGFydCA9IGV2ZW50TG9jYXRpb24uc3RhcnQuY2xvbmUoKTsKCQlmYWtlRXZlbnQuZW5kID0gZXZlbnRMb2NhdGlvbi5lbmQgPyBldmVudExvY2F0aW9uLmVuZC5jbG9uZSgpIDogbnVsbDsKCQlmYWtlRXZlbnQuYWxsRGF5ID0gbnVsbDsgLy8gZm9yY2UgaXQgdG8gYmUgZnJlc2hseSBjb21wdXRlZCBieSBub3JtYWxpemVFdmVudERhdGVzCgkJdGhpcy52aWV3LmNhbGVuZGFyLm5vcm1hbGl6ZUV2ZW50RGF0ZXMoZmFrZUV2ZW50KTsKCgkJLy8gdGhpcyBleHRyYSBjbGFzc05hbWUgd2lsbCBiZSB1c2VmdWwgZm9yIGRpZmZlcmVudGlhdGluZyByZWFsIGV2ZW50cyBmcm9tIG1vY2sgZXZlbnRzIGluIENTUwoJCWZha2VFdmVudC5jbGFzc05hbWUgPSAoZmFrZUV2ZW50LmNsYXNzTmFtZSB8fCBbXSkuY29uY2F0KCdmYy1oZWxwZXInKTsKCgkJLy8gaWYgc29tZXRoaW5nIGV4dGVybmFsIGlzIGJlaW5nIGRyYWdnZWQgaW4sIGRvbid0IHJlbmRlciBhIHJlc2l6ZXIKCQlpZiAoIXNvdXJjZVNlZykgewoJCQlmYWtlRXZlbnQuZWRpdGFibGUgPSBmYWxzZTsKCQl9CgoJCXJldHVybiBmYWtlRXZlbnQ7Cgl9LAoKCgkvLyBSZW5kZXJzIGEgbW9jayBldmVudC4gR2l2ZW4gem9uZWQgZXZlbnQgZGF0ZSBwcm9wZXJ0aWVzLgoJLy8gTXVzdCByZXR1cm4gYWxsIG1vY2sgZXZlbnQgZWxlbWVudHMuCglyZW5kZXJIZWxwZXI6IGZ1bmN0aW9uKGV2ZW50TG9jYXRpb24sIHNvdXJjZVNlZykgewoJCS8vIHN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQKCX0sCgoKCS8vIFVucmVuZGVycyBhIG1vY2sgZXZlbnQKCXVucmVuZGVySGVscGVyOiBmdW5jdGlvbigpIHsKCQkvLyBzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50Cgl9LAoKCgkvKiBTZWxlY3Rpb24KCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFJlbmRlcnMgYSB2aXN1YWwgaW5kaWNhdGlvbiBvZiBhIHNlbGVjdGlvbi4gV2lsbCBoaWdobGlnaHQgYnkgZGVmYXVsdCBidXQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3Nlcy4KCS8vIEdpdmVuIGEgc3BhbiAodW56b25lZCBzdGFydC9lbmQgYW5kIG90aGVyIG1pc2MgZGF0YSkKCXJlbmRlclNlbGVjdGlvbjogZnVuY3Rpb24oc3BhbikgewoJCXRoaXMucmVuZGVySGlnaGxpZ2h0KHNwYW4pOwoJfSwKCgoJLy8gVW5yZW5kZXJzIGFueSB2aXN1YWwgaW5kaWNhdGlvbnMgb2YgYSBzZWxlY3Rpb24uIFdpbGwgdW5yZW5kZXIgYSBoaWdobGlnaHQgYnkgZGVmYXVsdC4KCXVucmVuZGVyU2VsZWN0aW9uOiBmdW5jdGlvbigpIHsKCQl0aGlzLnVucmVuZGVySGlnaGxpZ2h0KCk7Cgl9LAoKCgkvLyBHaXZlbiB0aGUgZmlyc3QgYW5kIGxhc3QgZGF0ZS1zcGFucyBvZiBhIHNlbGVjdGlvbiwgcmV0dXJucyBhbm90aGVyIGRhdGUtc3BhbiBvYmplY3QuCgkvLyBTdWJjbGFzc2VzIGNhbiBvdmVycmlkZSBhbmQgcHJvdmlkZSBhZGRpdGlvbmFsIGRhdGEgaW4gdGhlIHNwYW4gb2JqZWN0LiBXaWxsIGJlIHBhc3NlZCB0byByZW5kZXJTZWxlY3Rpb24oKS4KCS8vIFdpbGwgcmV0dXJuIGZhbHNlIGlmIHRoZSBzZWxlY3Rpb24gaXMgaW52YWxpZCBhbmQgdGhpcyBzaG91bGQgYmUgaW5kaWNhdGVkIHRvIHRoZSB1c2VyLgoJLy8gV2lsbCByZXR1cm4gbnVsbC91bmRlZmluZWQgaWYgYSBzZWxlY3Rpb24gaW52YWxpZCBidXQgbm8gZXJyb3Igc2hvdWxkIGJlIHJlcG9ydGVkLgoJY29tcHV0ZVNlbGVjdGlvbjogZnVuY3Rpb24oc3BhbjAsIHNwYW4xKSB7CgkJdmFyIHNwYW4gPSB0aGlzLmNvbXB1dGVTZWxlY3Rpb25TcGFuKHNwYW4wLCBzcGFuMSk7CgoJCWlmIChzcGFuICYmICF0aGlzLnZpZXcuY2FsZW5kYXIuaXNTZWxlY3Rpb25TcGFuQWxsb3dlZChzcGFuKSkgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlyZXR1cm4gc3BhbjsKCX0sCgoKCS8vIEdpdmVuIHR3byBzcGFucywgbXVzdCByZXR1cm4gdGhlIGNvbWJpbmF0aW9uIG9mIHRoZSB0d28uCgkvLyBUT0RPOiBkbyB0aGlzIHNlcGFyYXRpb24gb2YgY29uY2VybnMgKGNvbWJpbmluZyBWUyB2YWxpZGF0aW9uKSBmb3IgZXZlbnQgZG5kL3Jlc2l6ZSB0b28uCgljb21wdXRlU2VsZWN0aW9uU3BhbjogZnVuY3Rpb24oc3BhbjAsIHNwYW4xKSB7CgkJdmFyIGRhdGVzID0gWyBzcGFuMC5zdGFydCwgc3BhbjAuZW5kLCBzcGFuMS5zdGFydCwgc3BhbjEuZW5kIF07CgoJCWRhdGVzLnNvcnQoY29tcGFyZU51bWJlcnMpOyAvLyBzb3J0cyBjaHJvbm9sb2dpY2FsbHkuIHdvcmtzIHdpdGggTW9tZW50cwoKCQlyZXR1cm4geyBzdGFydDogZGF0ZXNbMF0uY2xvbmUoKSwgZW5kOiBkYXRlc1szXS5jbG9uZSgpIH07Cgl9LAoKCgkvKiBIaWdobGlnaHQKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFJlbmRlcnMgYW4gZW1waGFzaXMgb24gdGhlIGdpdmVuIGRhdGUgcmFuZ2UuIEdpdmVuIGEgc3BhbiAodW56b25lZCBzdGFydC9lbmQgYW5kIG90aGVyIG1pc2MgZGF0YSkKCXJlbmRlckhpZ2hsaWdodDogZnVuY3Rpb24oc3BhbikgewoJCXRoaXMucmVuZGVyRmlsbCgnaGlnaGxpZ2h0JywgdGhpcy5zcGFuVG9TZWdzKHNwYW4pKTsKCX0sCgoKCS8vIFVucmVuZGVycyB0aGUgZW1waGFzaXMgb24gYSBkYXRlIHJhbmdlCgl1bnJlbmRlckhpZ2hsaWdodDogZnVuY3Rpb24oKSB7CgkJdGhpcy51bnJlbmRlckZpbGwoJ2hpZ2hsaWdodCcpOwoJfSwKCgoJLy8gR2VuZXJhdGVzIGFuIGFycmF5IG9mIGNsYXNzTmFtZXMgZm9yIHJlbmRlcmluZyB0aGUgaGlnaGxpZ2h0LiBVc2VkIGJ5IHRoZSBmaWxsIHN5c3RlbS4KCWhpZ2hsaWdodFNlZ0NsYXNzZXM6IGZ1bmN0aW9uKCkgewoJCXJldHVybiBbICdmYy1oaWdobGlnaHQnIF07Cgl9LAoKCgkvKiBCdXNpbmVzcyBIb3VycwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJcmVuZGVyQnVzaW5lc3NIb3VyczogZnVuY3Rpb24oKSB7Cgl9LAoKCgl1bnJlbmRlckJ1c2luZXNzSG91cnM6IGZ1bmN0aW9uKCkgewoJfSwKCgoJLyogTm93IEluZGljYXRvcgoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJZ2V0Tm93SW5kaWNhdG9yVW5pdDogZnVuY3Rpb24oKSB7Cgl9LAoKCglyZW5kZXJOb3dJbmRpY2F0b3I6IGZ1bmN0aW9uKGRhdGUpIHsKCX0sCgoKCXVucmVuZGVyTm93SW5kaWNhdG9yOiBmdW5jdGlvbigpIHsKCX0sCgoKCS8qIEZpbGwgU3lzdGVtIChoaWdobGlnaHQsIGJhY2tncm91bmQgZXZlbnRzLCBidXNpbmVzcyBob3VycykKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCglUT0RPOiByZW1vdmUgdGhpcyBzeXN0ZW0uIGxpa2Ugd2UgZGlkIGluIFRpbWVHcmlkCgkqLwoKCgkvLyBSZW5kZXJzIGEgc2V0IG9mIHJlY3RhbmdsZXMgb3ZlciB0aGUgZ2l2ZW4gc2VnbWVudHMgb2YgdGltZS4KCS8vIE1VU1QgUkVUVVJOIGEgc3Vic2V0IG9mIHNlZ3MsIHRoZSBzZWdzIHRoYXQgd2VyZSBhY3R1YWxseSByZW5kZXJlZC4KCS8vIFJlc3BvbnNpYmxlIGZvciBwb3B1bGF0aW5nIHRoaXMuZWxzQnlGaWxsLiBUT0RPOiBiZXR0ZXIgQVBJIGZvciBleHByZXNzaW5nIHRoaXMgcmVxdWlyZW1lbnQKCXJlbmRlckZpbGw6IGZ1bmN0aW9uKHR5cGUsIHNlZ3MpIHsKCQkvLyBzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50Cgl9LAoKCgkvLyBVbnJlbmRlcnMgYSBzcGVjaWZpYyB0eXBlIG9mIGZpbGwgdGhhdCBpcyBjdXJyZW50bHkgcmVuZGVyZWQgb24gdGhlIGdyaWQKCXVucmVuZGVyRmlsbDogZnVuY3Rpb24odHlwZSkgewoJCXZhciBlbCA9IHRoaXMuZWxzQnlGaWxsW3R5cGVdOwoKCQlpZiAoZWwpIHsKCQkJZWwucmVtb3ZlKCk7CgkJCWRlbGV0ZSB0aGlzLmVsc0J5RmlsbFt0eXBlXTsKCQl9Cgl9LAoKCgkvLyBSZW5kZXJzIGFuZCBhc3NpZ25zIGFuIGBlbGAgcHJvcGVydHkgZm9yIGVhY2ggZmlsbCBzZWdtZW50LiBHZW5lcmljIGVub3VnaCB0byB3b3JrIHdpdGggZGlmZmVyZW50IHR5cGVzLgoJLy8gT25seSByZXR1cm5zIHNlZ21lbnRzIHRoYXQgc3VjY2Vzc2Z1bGx5IHJlbmRlcmVkLgoJLy8gVG8gYmUgaGFybmVzc2VkIGJ5IHJlbmRlckZpbGwgKGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMpLgoJLy8gQW5hbGFnb3VzIHRvIHJlbmRlckZnU2VnRWxzLgoJcmVuZGVyRmlsbFNlZ0VsczogZnVuY3Rpb24odHlwZSwgc2VncykgewoJCXZhciBfdGhpcyA9IHRoaXM7CgkJdmFyIHNlZ0VsTWV0aG9kID0gdGhpc1t0eXBlICsgJ1NlZ0VsJ107CgkJdmFyIGh0bWwgPSAnJzsKCQl2YXIgcmVuZGVyZWRTZWdzID0gW107CgkJdmFyIGk7CgoJCWlmIChzZWdzLmxlbmd0aCkgewoKCQkJLy8gYnVpbGQgYSBsYXJnZSBjb25jYXRlbmF0aW9uIG9mIHNlZ21lbnQgSFRNTAoJCQlmb3IgKGkgPSAwOyBpIDwgc2Vncy5sZW5ndGg7IGkrKykgewoJCQkJaHRtbCArPSB0aGlzLmZpbGxTZWdIdG1sKHR5cGUsIHNlZ3NbaV0pOwoJCQl9CgoJCQkvLyBHcmFiIGluZGl2aWR1YWwgZWxlbWVudHMgZnJvbSB0aGUgY29tYmluZWQgSFRNTCBzdHJpbmcuIFVzZSBlYWNoIGFzIHRoZSBkZWZhdWx0IHJlbmRlcmluZy4KCQkJLy8gVGhlbiwgY29tcHV0ZSB0aGUgJ2VsJyBmb3IgZWFjaCBzZWdtZW50LgoJCQkkKGh0bWwpLmVhY2goZnVuY3Rpb24oaSwgbm9kZSkgewoJCQkJdmFyIHNlZyA9IHNlZ3NbaV07CgkJCQl2YXIgZWwgPSAkKG5vZGUpOwoKCQkJCS8vIGFsbG93IGN1c3RvbSBmaWx0ZXIgbWV0aG9kcyBwZXItdHlwZQoJCQkJaWYgKHNlZ0VsTWV0aG9kKSB7CgkJCQkJZWwgPSBzZWdFbE1ldGhvZC5jYWxsKF90aGlzLCBzZWcsIGVsKTsKCQkJCX0KCgkJCQlpZiAoZWwpIHsgLy8gY3VzdG9tIGZpbHRlcnMgZGlkIG5vdCBjYW5jZWwgdGhlIHJlbmRlcgoJCQkJCWVsID0gJChlbCk7IC8vIGFsbG93IGN1c3RvbSBmaWx0ZXIgdG8gcmV0dXJuIHJhdyBET00gbm9kZQoKCQkJCQkvLyBjb3JyZWN0IGVsZW1lbnQgdHlwZT8gKHdvdWxkIGJlIGJhZCBpZiBhIG5vbi1URCB3ZXJlIGluc2VydGVkIGludG8gYSB0YWJsZSBmb3IgZXhhbXBsZSkKCQkJCQlpZiAoZWwuaXMoX3RoaXMuZmlsbFNlZ1RhZykpIHsKCQkJCQkJc2VnLmVsID0gZWw7CgkJCQkJCXJlbmRlcmVkU2Vncy5wdXNoKHNlZyk7CgkJCQkJfQoJCQkJfQoJCQl9KTsKCQl9CgoJCXJldHVybiByZW5kZXJlZFNlZ3M7Cgl9LAoKCglmaWxsU2VnVGFnOiAnZGl2JywgLy8gc3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUKCgoJLy8gQnVpbGRzIHRoZSBIVE1MIG5lZWRlZCBmb3Igb25lIGZpbGwgc2VnbWVudC4gR2VuZXJpYyBlbm91Z2ggdG8gd29yayB3aXRoIGRpZmZlcmVudCB0eXBlcy4KCWZpbGxTZWdIdG1sOiBmdW5jdGlvbih0eXBlLCBzZWcpIHsKCgkJLy8gY3VzdG9tIGhvb2tzIHBlci10eXBlCgkJdmFyIGNsYXNzZXNNZXRob2QgPSB0aGlzW3R5cGUgKyAnU2VnQ2xhc3NlcyddOwoJCXZhciBjc3NNZXRob2QgPSB0aGlzW3R5cGUgKyAnU2VnQ3NzJ107CgoJCXZhciBjbGFzc2VzID0gY2xhc3Nlc01ldGhvZCA/IGNsYXNzZXNNZXRob2QuY2FsbCh0aGlzLCBzZWcpIDogW107CgkJdmFyIGNzcyA9IGNzc1RvU3RyKGNzc01ldGhvZCA/IGNzc01ldGhvZC5jYWxsKHRoaXMsIHNlZykgOiB7fSk7CgoJCXJldHVybiAnPCcgKyB0aGlzLmZpbGxTZWdUYWcgKwoJCQkoY2xhc3Nlcy5sZW5ndGggPyAnIGNsYXNzPSInICsgY2xhc3Nlcy5qb2luKCcgJykgKyAnIicgOiAnJykgKwoJCQkoY3NzID8gJyBzdHlsZT0iJyArIGNzcyArICciJyA6ICcnKSArCgkJCScgLz4nOwoJfSwKCgoKCS8qIEdlbmVyaWMgcmVuZGVyaW5nIHV0aWxpdGllcyBmb3Igc3ViY2xhc3NlcwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gQ29tcHV0ZXMgSFRNTCBjbGFzc05hbWVzIGZvciBhIHNpbmdsZS1kYXkgZWxlbWVudAoJZ2V0RGF5Q2xhc3NlczogZnVuY3Rpb24oZGF0ZSwgbm9UaGVtZUhpZ2hsaWdodCkgewoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciBjbGFzc2VzID0gW107CgkJdmFyIHRvZGF5OwoKCQlpZiAoIWlzRGF0ZVdpdGhpblJhbmdlKGRhdGUsIHZpZXcuYWN0aXZlUmFuZ2UpKSB7CgkJCWNsYXNzZXMucHVzaCgnZmMtZGlzYWJsZWQtZGF5Jyk7IC8vIFRPRE86IGpRdWVyeSBVSSB0aGVtZT8KCQl9CgkJZWxzZSB7CgkJCWNsYXNzZXMucHVzaCgnZmMtJyArIGRheUlEc1tkYXRlLmRheSgpXSk7CgoJCQlpZiAoCgkJCQl2aWV3LmN1cnJlbnRSYW5nZUFzKCdtb250aHMnKSA9PSAxICYmIC8vIFRPRE86IHNvbWVob3cgZ2V0IGludG8gTW9udGhWaWV3CgkJCQlkYXRlLm1vbnRoKCkgIT0gdmlldy5jdXJyZW50UmFuZ2Uuc3RhcnQubW9udGgoKQoJCQkpIHsKCQkJCWNsYXNzZXMucHVzaCgnZmMtb3RoZXItbW9udGgnKTsKCQkJfQoKCQkJdG9kYXkgPSB2aWV3LmNhbGVuZGFyLmdldE5vdygpOwoKCQkJaWYgKGRhdGUuaXNTYW1lKHRvZGF5LCAnZGF5JykpIHsKCQkJCWNsYXNzZXMucHVzaCgnZmMtdG9kYXknKTsKCgkJCQlpZiAobm9UaGVtZUhpZ2hsaWdodCAhPT0gdHJ1ZSkgewoJCQkJCWNsYXNzZXMucHVzaCh2aWV3LmhpZ2hsaWdodFN0YXRlQ2xhc3MpOwoJCQkJfQoJCQl9CgkJCWVsc2UgaWYgKGRhdGUgPCB0b2RheSkgewoJCQkJY2xhc3Nlcy5wdXNoKCdmYy1wYXN0Jyk7CgkJCX0KCQkJZWxzZSB7CgkJCQljbGFzc2VzLnB1c2goJ2ZjLWZ1dHVyZScpOwoJCQl9CgkJfQoKCQlyZXR1cm4gY2xhc3NlczsKCX0KCn0pOwoKOzsKCi8qIEV2ZW50LXJlbmRlcmluZyBhbmQgZXZlbnQtaW50ZXJhY3Rpb24gbWV0aG9kcyBmb3IgdGhlIGFic3RyYWN0IEdyaWQgY2xhc3MKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKRGF0YSBUeXBlczoKCWV2ZW50IC0geyB0aXRsZSwgaWQsIHN0YXJ0LCAoZW5kKSwgd2hhdGV2ZXIgfQoJbG9jYXRpb24gLSB7IHN0YXJ0LCAoZW5kKSwgYWxsRGF5IH0KCXJhd0V2ZW50UmFuZ2UgLSB7IHN0YXJ0LCBlbmQgfQoJZXZlbnRSYW5nZSAtIHsgc3RhcnQsIGVuZCwgaXNTdGFydCwgaXNFbmQgfQoJZXZlbnRTcGFuIC0geyBzdGFydCwgZW5kLCBpc1N0YXJ0LCBpc0VuZCwgd2hhdGV2ZXIgfQoJZXZlbnRTZWcgLSB7IGV2ZW50LCB3aGF0ZXZlciB9CglzZWcgLSB7IHdoYXRldmVyIH0KKi8KCkdyaWQubWl4aW4oewoKCS8vIHNlbGYtY29uZmlnLCBvdmVycmlkYWJsZSBieSBzdWJjbGFzc2VzCglzZWdTZWxlY3RvcjogJy5mYy1ldmVudC1jb250YWluZXIgPiAqJywgLy8gd2hhdCBjb25zdGl0dXRlcyBhbiBldmVudCBlbGVtZW50PwoKCW1vdXNlZE92ZXJTZWc6IG51bGwsIC8vIHRoZSBzZWdtZW50IG9iamVjdCB0aGUgdXNlcidzIG1vdXNlIGlzIG92ZXIuIG51bGwgaWYgb3ZlciBub3RoaW5nCglpc0RyYWdnaW5nU2VnOiBmYWxzZSwgLy8gaXMgYSBzZWdtZW50IGJlaW5nIGRyYWdnZWQ/IGJvb2xlYW4KCWlzUmVzaXppbmdTZWc6IGZhbHNlLCAvLyBpcyBhIHNlZ21lbnQgYmVpbmcgcmVzaXplZD8gYm9vbGVhbgoJaXNEcmFnZ2luZ0V4dGVybmFsOiBmYWxzZSwgLy8ganF1aS1kcmFnZ2luZyBhbiBleHRlcm5hbCBlbGVtZW50PyBib29sZWFuCglzZWdzOiBudWxsLCAvLyB0aGUgKmV2ZW50KiBzZWdtZW50cyBjdXJyZW50bHkgcmVuZGVyZWQgaW4gdGhlIGdyaWQuIFRPRE86IHJlbmFtZSB0byBgZXZlbnRTZWdzYAoKCgkvLyBSZW5kZXJzIHRoZSBnaXZlbiBldmVudHMgb250byB0aGUgZ3JpZAoJcmVuZGVyRXZlbnRzOiBmdW5jdGlvbihldmVudHMpIHsKCQl2YXIgYmdFdmVudHMgPSBbXTsKCQl2YXIgZmdFdmVudHMgPSBbXTsKCQl2YXIgaTsKCgkJZm9yIChpID0gMDsgaSA8IGV2ZW50cy5sZW5ndGg7IGkrKykgewoJCQkoaXNCZ0V2ZW50KGV2ZW50c1tpXSkgPyBiZ0V2ZW50cyA6IGZnRXZlbnRzKS5wdXNoKGV2ZW50c1tpXSk7CgkJfQoKCQl0aGlzLnNlZ3MgPSBbXS5jb25jYXQoIC8vIHJlY29yZCBhbGwgc2VncwoJCQl0aGlzLnJlbmRlckJnRXZlbnRzKGJnRXZlbnRzKSwKCQkJdGhpcy5yZW5kZXJGZ0V2ZW50cyhmZ0V2ZW50cykKCQkpOwoJfSwKCgoJcmVuZGVyQmdFdmVudHM6IGZ1bmN0aW9uKGV2ZW50cykgewoJCXZhciBzZWdzID0gdGhpcy5ldmVudHNUb1NlZ3MoZXZlbnRzKTsKCgkJLy8gcmVuZGVyQmdTZWdzIG1pZ2h0IHJldHVybiBhIHN1YnNldCBvZiBzZWdzLCBzZWdzIHRoYXQgd2VyZSBhY3R1YWxseSByZW5kZXJlZAoJCXJldHVybiB0aGlzLnJlbmRlckJnU2VncyhzZWdzKSB8fCBzZWdzOwoJfSwKCgoJcmVuZGVyRmdFdmVudHM6IGZ1bmN0aW9uKGV2ZW50cykgewoJCXZhciBzZWdzID0gdGhpcy5ldmVudHNUb1NlZ3MoZXZlbnRzKTsKCgkJLy8gcmVuZGVyRmdTZWdzIG1pZ2h0IHJldHVybiBhIHN1YnNldCBvZiBzZWdzLCBzZWdzIHRoYXQgd2VyZSBhY3R1YWxseSByZW5kZXJlZAoJCXJldHVybiB0aGlzLnJlbmRlckZnU2VncyhzZWdzKSB8fCBzZWdzOwoJfSwKCgoJLy8gVW5yZW5kZXJzIGFsbCBldmVudHMgY3VycmVudGx5IHJlbmRlcmVkIG9uIHRoZSBncmlkCgl1bnJlbmRlckV2ZW50czogZnVuY3Rpb24oKSB7CgkJdGhpcy5oYW5kbGVTZWdNb3VzZW91dCgpOyAvLyB0cmlnZ2VyIGFuIGV2ZW50TW91c2VvdXQgaWYgdXNlcidzIG1vdXNlIGlzIG92ZXIgYW4gZXZlbnQKCQl0aGlzLmNsZWFyRHJhZ0xpc3RlbmVycygpOwoKCQl0aGlzLnVucmVuZGVyRmdTZWdzKCk7CgkJdGhpcy51bnJlbmRlckJnU2VncygpOwoKCQl0aGlzLnNlZ3MgPSBudWxsOwoJfSwKCgoJLy8gUmV0cmlldmVzIGFsbCByZW5kZXJlZCBzZWdtZW50IG9iamVjdHMgY3VycmVudGx5IHJlbmRlcmVkIG9uIHRoZSBncmlkCglnZXRFdmVudFNlZ3M6IGZ1bmN0aW9uKCkgewoJCXJldHVybiB0aGlzLnNlZ3MgfHwgW107Cgl9LAoKCgkvKiBGb3JlZ3JvdW5kIFNlZ21lbnQgUmVuZGVyaW5nCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBSZW5kZXJzIGZvcmVncm91bmQgZXZlbnQgc2VnbWVudHMgb250byB0aGUgZ3JpZC4gTWF5IHJldHVybiBhIHN1YnNldCBvZiBzZWdzIHRoYXQgd2VyZSByZW5kZXJlZC4KCXJlbmRlckZnU2VnczogZnVuY3Rpb24oc2VncykgewoJCS8vIHN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQKCX0sCgoKCS8vIFVucmVuZGVycyBhbGwgY3VycmVudGx5IHJlbmRlcmVkIGZvcmVncm91bmQgc2VnbWVudHMKCXVucmVuZGVyRmdTZWdzOiBmdW5jdGlvbigpIHsKCQkvLyBzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50Cgl9LAoKCgkvLyBSZW5kZXJzIGFuZCBhc3NpZ25zIGFuIGBlbGAgcHJvcGVydHkgZm9yIGVhY2ggZm9yZWdyb3VuZCBldmVudCBzZWdtZW50LgoJLy8gT25seSByZXR1cm5zIHNlZ21lbnRzIHRoYXQgc3VjY2Vzc2Z1bGx5IHJlbmRlcmVkLgoJLy8gQSB1dGlsaXR5IHRoYXQgc3ViY2xhc3NlcyBtYXkgdXNlLgoJcmVuZGVyRmdTZWdFbHM6IGZ1bmN0aW9uKHNlZ3MsIGRpc2FibGVSZXNpemluZykgewoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciBodG1sID0gJyc7CgkJdmFyIHJlbmRlcmVkU2VncyA9IFtdOwoJCXZhciBpOwoKCQlpZiAoc2Vncy5sZW5ndGgpIHsgLy8gZG9uJ3QgYnVpbGQgYW4gZW1wdHkgaHRtbCBzdHJpbmcKCgkJCS8vIGJ1aWxkIGEgbGFyZ2UgY29uY2F0ZW5hdGlvbiBvZiBldmVudCBzZWdtZW50IEhUTUwKCQkJZm9yIChpID0gMDsgaSA8IHNlZ3MubGVuZ3RoOyBpKyspIHsKCQkJCWh0bWwgKz0gdGhpcy5mZ1NlZ0h0bWwoc2Vnc1tpXSwgZGlzYWJsZVJlc2l6aW5nKTsKCQkJfQoKCQkJLy8gR3JhYiBpbmRpdmlkdWFsIGVsZW1lbnRzIGZyb20gdGhlIGNvbWJpbmVkIEhUTUwgc3RyaW5nLiBVc2UgZWFjaCBhcyB0aGUgZGVmYXVsdCByZW5kZXJpbmcuCgkJCS8vIFRoZW4sIGNvbXB1dGUgdGhlICdlbCcgZm9yIGVhY2ggc2VnbWVudC4gQW4gZWwgbWlnaHQgYmUgbnVsbCBpZiB0aGUgZXZlbnRSZW5kZXIgY2FsbGJhY2sgcmV0dXJuZWQgZmFsc2UuCgkJCSQoaHRtbCkuZWFjaChmdW5jdGlvbihpLCBub2RlKSB7CgkJCQl2YXIgc2VnID0gc2Vnc1tpXTsKCQkJCXZhciBlbCA9IHZpZXcucmVzb2x2ZUV2ZW50RWwoc2VnLmV2ZW50LCAkKG5vZGUpKTsKCgkJCQlpZiAoZWwpIHsKCQkJCQllbC5kYXRhKCdmYy1zZWcnLCBzZWcpOyAvLyB1c2VkIGJ5IGhhbmRsZXJzCgkJCQkJc2VnLmVsID0gZWw7CgkJCQkJcmVuZGVyZWRTZWdzLnB1c2goc2VnKTsKCQkJCX0KCQkJfSk7CgkJfQoKCQlyZXR1cm4gcmVuZGVyZWRTZWdzOwoJfSwKCgoJLy8gR2VuZXJhdGVzIHRoZSBIVE1MIGZvciB0aGUgZGVmYXVsdCByZW5kZXJpbmcgb2YgYSBmb3JlZ3JvdW5kIGV2ZW50IHNlZ21lbnQuIFVzZWQgYnkgcmVuZGVyRmdTZWdFbHMoKQoJZmdTZWdIdG1sOiBmdW5jdGlvbihzZWcsIGRpc2FibGVSZXNpemluZykgewoJCS8vIHN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudAoJfSwKCgoJLyogQmFja2dyb3VuZCBTZWdtZW50IFJlbmRlcmluZwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gUmVuZGVycyB0aGUgZ2l2ZW4gYmFja2dyb3VuZCBldmVudCBzZWdtZW50cyBvbnRvIHRoZSBncmlkLgoJLy8gUmV0dXJucyBhIHN1YnNldCBvZiB0aGUgc2VncyB0aGF0IHdlcmUgYWN0dWFsbHkgcmVuZGVyZWQuCglyZW5kZXJCZ1NlZ3M6IGZ1bmN0aW9uKHNlZ3MpIHsKCQlyZXR1cm4gdGhpcy5yZW5kZXJGaWxsKCdiZ0V2ZW50Jywgc2Vncyk7Cgl9LAoKCgkvLyBVbnJlbmRlcnMgYWxsIHRoZSBjdXJyZW50bHkgcmVuZGVyZWQgYmFja2dyb3VuZCBldmVudCBzZWdtZW50cwoJdW5yZW5kZXJCZ1NlZ3M6IGZ1bmN0aW9uKCkgewoJCXRoaXMudW5yZW5kZXJGaWxsKCdiZ0V2ZW50Jyk7Cgl9LAoKCgkvLyBSZW5kZXJzIGEgYmFja2dyb3VuZCBldmVudCBlbGVtZW50LCBnaXZlbiB0aGUgZGVmYXVsdCByZW5kZXJpbmcuIENhbGxlZCBieSB0aGUgZmlsbCBzeXN0ZW0uCgliZ0V2ZW50U2VnRWw6IGZ1bmN0aW9uKHNlZywgZWwpIHsKCQlyZXR1cm4gdGhpcy52aWV3LnJlc29sdmVFdmVudEVsKHNlZy5ldmVudCwgZWwpOyAvLyB3aWxsIGZpbHRlciB0aHJvdWdoIGV2ZW50UmVuZGVyCgl9LAoKCgkvLyBHZW5lcmF0ZXMgYW4gYXJyYXkgb2YgY2xhc3NOYW1lcyB0byBiZSB1c2VkIGZvciB0aGUgZGVmYXVsdCByZW5kZXJpbmcgb2YgYSBiYWNrZ3JvdW5kIGV2ZW50LgoJLy8gQ2FsbGVkIGJ5IGZpbGxTZWdIdG1sLgoJYmdFdmVudFNlZ0NsYXNzZXM6IGZ1bmN0aW9uKHNlZykgewoJCXZhciBldmVudCA9IHNlZy5ldmVudDsKCQl2YXIgc291cmNlID0gZXZlbnQuc291cmNlIHx8IHt9OwoKCQlyZXR1cm4gWyAnZmMtYmdldmVudCcgXS5jb25jYXQoCgkJCWV2ZW50LmNsYXNzTmFtZSwKCQkJc291cmNlLmNsYXNzTmFtZSB8fCBbXQoJCSk7Cgl9LAoKCgkvLyBHZW5lcmF0ZXMgYSBzZW1pY29sb24tc2VwYXJhdGVkIENTUyBzdHJpbmcgdG8gYmUgdXNlZCBmb3IgdGhlIGRlZmF1bHQgcmVuZGVyaW5nIG9mIGEgYmFja2dyb3VuZCBldmVudC4KCS8vIENhbGxlZCBieSBmaWxsU2VnSHRtbC4KCWJnRXZlbnRTZWdDc3M6IGZ1bmN0aW9uKHNlZykgewoJCXJldHVybiB7CgkJCSdiYWNrZ3JvdW5kLWNvbG9yJzogdGhpcy5nZXRTZWdTa2luQ3NzKHNlZylbJ2JhY2tncm91bmQtY29sb3InXQoJCX07Cgl9LAoKCgkvLyBHZW5lcmF0ZXMgYW4gYXJyYXkgb2YgY2xhc3NOYW1lcyB0byBiZSB1c2VkIGZvciB0aGUgcmVuZGVyaW5nIGJ1c2luZXNzIGhvdXJzIG92ZXJsYXkuIENhbGxlZCBieSB0aGUgZmlsbCBzeXN0ZW0uCgkvLyBDYWxsZWQgYnkgZmlsbFNlZ0h0bWwuCglidXNpbmVzc0hvdXJzU2VnQ2xhc3NlczogZnVuY3Rpb24oc2VnKSB7CgkJcmV0dXJuIFsgJ2ZjLW5vbmJ1c2luZXNzJywgJ2ZjLWJnZXZlbnQnIF07Cgl9LAoKCgkvKiBCdXNpbmVzcyBIb3VycwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gQ29tcHV0ZSBidXNpbmVzcyBob3VyIHNlZ3MgZm9yIHRoZSBncmlkJ3MgY3VycmVudCBkYXRlIHJhbmdlLgoJLy8gQ2FsbGVyIG11c3QgYXNrIGlmIHdob2xlLWRheSBidXNpbmVzcyBob3VycyBhcmUgbmVlZGVkLgoJLy8gSWYgbm8gYGJ1c2luZXNzSG91cnNgIGNvbmZpZ3VyYXRpb24gdmFsdWUgaXMgc3BlY2lmaWVkLCBhc3N1bWVzIHRoZSBjYWxlbmRhciBkZWZhdWx0LgoJYnVpbGRCdXNpbmVzc0hvdXJTZWdzOiBmdW5jdGlvbih3aG9sZURheSwgYnVzaW5lc3NIb3VycykgewoJCXJldHVybiB0aGlzLmV2ZW50c1RvU2VncygKCQkJdGhpcy5idWlsZEJ1c2luZXNzSG91ckV2ZW50cyh3aG9sZURheSwgYnVzaW5lc3NIb3VycykKCQkpOwoJfSwKCgoJLy8gQ29tcHV0ZSBidXNpbmVzcyBob3VyICpldmVudHMqIGZvciB0aGUgZ3JpZCdzIGN1cnJlbnQgZGF0ZSByYW5nZS4KCS8vIENhbGxlciBtdXN0IGFzayBpZiB3aG9sZS1kYXkgYnVzaW5lc3MgaG91cnMgYXJlIG5lZWRlZC4KCS8vIElmIG5vIGBidXNpbmVzc0hvdXJzYCBjb25maWd1cmF0aW9uIHZhbHVlIGlzIHNwZWNpZmllZCwgYXNzdW1lcyB0aGUgY2FsZW5kYXIgZGVmYXVsdC4KCWJ1aWxkQnVzaW5lc3NIb3VyRXZlbnRzOiBmdW5jdGlvbih3aG9sZURheSwgYnVzaW5lc3NIb3VycykgewoJCXZhciBjYWxlbmRhciA9IHRoaXMudmlldy5jYWxlbmRhcjsKCQl2YXIgZXZlbnRzOwoKCQlpZiAoYnVzaW5lc3NIb3VycyA9PSBudWxsKSB7CgkJCS8vIGZhbGxiYWNrCgkJCS8vIGFjY2VzcyBmcm9tIGNhbGVuZGF3ci4gZG9uJ3QgYWNjZXNzIGZyb20gdmlldy4gZG9lc24ndCB1cGRhdGUgd2l0aCBkeW5hbWljIG9wdGlvbnMuCgkJCWJ1c2luZXNzSG91cnMgPSBjYWxlbmRhci5vcHRpb25zLmJ1c2luZXNzSG91cnM7CgkJfQoKCQlldmVudHMgPSBjYWxlbmRhci5jb21wdXRlQnVzaW5lc3NIb3VyRXZlbnRzKHdob2xlRGF5LCBidXNpbmVzc0hvdXJzKTsKCgkJLy8gSEFDSy4gRXZlbnR1YWxseSByZWZhY3RvciBidXNpbmVzcyBob3VycyAiZXZlbnRzIiBzeXN0ZW0uCgkJLy8gSWYgbm8gZXZlbnRzIGFyZSBnaXZlbiwgYnV0IGJ1c2luZXNzSG91cnMgaXMgYWN0aXZhdGVkLCB0aGlzIG1lYW5zIHRoZSBlbnRpcmUgdmlzaWJsZSByYW5nZSBzaG91bGQgYmUKCQkvLyBtYXJrZWQgYXMgKm5vdCogYnVzaW5lc3MtaG91cnMsIHZpYSBpbnZlcnNlLWJhY2tncm91bmQgcmVuZGVyaW5nLgoJCWlmICghZXZlbnRzLmxlbmd0aCAmJiBidXNpbmVzc0hvdXJzKSB7CgkJCWV2ZW50cyA9IFsKCQkJCSQuZXh0ZW5kKHt9LCBCVVNJTkVTU19IT1VSX0VWRU5UX0RFRkFVTFRTLCB7CgkJCQkJc3RhcnQ6IHRoaXMudmlldy5hY3RpdmVSYW5nZS5lbmQsIC8vIGd1YXJhbnRlZWQgb3V0LW9mLXJhbmdlCgkJCQkJZW5kOiB0aGlzLnZpZXcuYWN0aXZlUmFuZ2UuZW5kLCAgIC8vICIKCQkJCQlkb3c6IG51bGwKCQkJCX0pCgkJCV07CgkJfQoKCQlyZXR1cm4gZXZlbnRzOwoJfSwKCgoJLyogSGFuZGxlcnMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIEF0dGFjaGVzIGV2ZW50LWVsZW1lbnQtcmVsYXRlZCBoYW5kbGVycyBmb3IgKmFsbCogcmVuZGVyZWQgZXZlbnQgc2VnbWVudHMgb2YgdGhlIHZpZXcuCgliaW5kU2VnSGFuZGxlcnM6IGZ1bmN0aW9uKCkgewoJCXRoaXMuYmluZFNlZ0hhbmRsZXJzVG9FbCh0aGlzLmVsKTsKCX0sCgoKCS8vIEF0dGFjaGVzIGV2ZW50LWVsZW1lbnQtcmVsYXRlZCBoYW5kbGVycyB0byBhbiBhcmJpdHJhcnkgY29udGFpbmVyIGVsZW1lbnQuIGxldmVyYWdlcyBidWJibGluZy4KCWJpbmRTZWdIYW5kbGVyc1RvRWw6IGZ1bmN0aW9uKGVsKSB7CgkJdGhpcy5iaW5kU2VnSGFuZGxlclRvRWwoZWwsICd0b3VjaHN0YXJ0JywgdGhpcy5oYW5kbGVTZWdUb3VjaFN0YXJ0KTsKCQl0aGlzLmJpbmRTZWdIYW5kbGVyVG9FbChlbCwgJ21vdXNlZW50ZXInLCB0aGlzLmhhbmRsZVNlZ01vdXNlb3Zlcik7CgkJdGhpcy5iaW5kU2VnSGFuZGxlclRvRWwoZWwsICdtb3VzZWxlYXZlJywgdGhpcy5oYW5kbGVTZWdNb3VzZW91dCk7CgkJdGhpcy5iaW5kU2VnSGFuZGxlclRvRWwoZWwsICdtb3VzZWRvd24nLCB0aGlzLmhhbmRsZVNlZ01vdXNlZG93bik7CgkJdGhpcy5iaW5kU2VnSGFuZGxlclRvRWwoZWwsICdjbGljaycsIHRoaXMuaGFuZGxlU2VnQ2xpY2spOwoJfSwKCgoJLy8gRXhlY3V0ZXMgYSBoYW5kbGVyIGZvciBhbnkgYSB1c2VyLWludGVyYWN0aW9uIG9uIGEgc2VnbWVudC4KCS8vIEhhbmRsZXIgZ2V0cyBjYWxsZWQgd2l0aCAoc2VnLCBldiksIGFuZCB3aXRoIHRoZSBgdGhpc2AgY29udGV4dCBvZiB0aGUgR3JpZAoJYmluZFNlZ0hhbmRsZXJUb0VsOiBmdW5jdGlvbihlbCwgbmFtZSwgaGFuZGxlcikgewoJCXZhciBfdGhpcyA9IHRoaXM7CgoJCWVsLm9uKG5hbWUsIHRoaXMuc2VnU2VsZWN0b3IsIGZ1bmN0aW9uKGV2KSB7CgkJCXZhciBzZWcgPSAkKHRoaXMpLmRhdGEoJ2ZjLXNlZycpOyAvLyBncmFiIHNlZ21lbnQgZGF0YS4gcHV0IHRoZXJlIGJ5IFZpZXc6OnJlbmRlckV2ZW50cwoKCQkJLy8gb25seSBjYWxsIHRoZSBoYW5kbGVycyBpZiB0aGVyZSBpcyBub3QgYSBkcmFnL3Jlc2l6ZSBpbiBwcm9ncmVzcwoJCQlpZiAoc2VnICYmICFfdGhpcy5pc0RyYWdnaW5nU2VnICYmICFfdGhpcy5pc1Jlc2l6aW5nU2VnKSB7CgkJCQlyZXR1cm4gaGFuZGxlci5jYWxsKF90aGlzLCBzZWcsIGV2KTsgLy8gY29udGV4dCB3aWxsIGJlIHRoZSBHcmlkCgkJCX0KCQl9KTsKCX0sCgoKCWhhbmRsZVNlZ0NsaWNrOiBmdW5jdGlvbihzZWcsIGV2KSB7CgkJdmFyIHJlcyA9IHRoaXMudmlldy5wdWJsaWNseVRyaWdnZXIoJ2V2ZW50Q2xpY2snLCBzZWcuZWxbMF0sIHNlZy5ldmVudCwgZXYpOyAvLyBjYW4gcmV0dXJuIGBmYWxzZWAgdG8gY2FuY2VsCgkJaWYgKHJlcyA9PT0gZmFsc2UpIHsKCQkJZXYucHJldmVudERlZmF1bHQoKTsKCQl9Cgl9LAoKCgkvLyBVcGRhdGVzIGludGVybmFsIHN0YXRlIGFuZCB0cmlnZ2VycyBoYW5kbGVycyBmb3Igd2hlbiBhbiBldmVudCBlbGVtZW50IGlzIG1vdXNlZCBvdmVyCgloYW5kbGVTZWdNb3VzZW92ZXI6IGZ1bmN0aW9uKHNlZywgZXYpIHsKCQlpZiAoCgkJCSFHbG9iYWxFbWl0dGVyLmdldCgpLnNob3VsZElnbm9yZU1vdXNlKCkgJiYKCQkJIXRoaXMubW91c2VkT3ZlclNlZwoJCSkgewoJCQl0aGlzLm1vdXNlZE92ZXJTZWcgPSBzZWc7CgkJCWlmICh0aGlzLnZpZXcuaXNFdmVudFJlc2l6YWJsZShzZWcuZXZlbnQpKSB7CgkJCQlzZWcuZWwuYWRkQ2xhc3MoJ2ZjLWFsbG93LW1vdXNlLXJlc2l6ZScpOwoJCQl9CgkJCXRoaXMudmlldy5wdWJsaWNseVRyaWdnZXIoJ2V2ZW50TW91c2VvdmVyJywgc2VnLmVsWzBdLCBzZWcuZXZlbnQsIGV2KTsKCQl9Cgl9LAoKCgkvLyBVcGRhdGVzIGludGVybmFsIHN0YXRlIGFuZCB0cmlnZ2VycyBoYW5kbGVycyBmb3Igd2hlbiBhbiBldmVudCBlbGVtZW50IGlzIG1vdXNlZCBvdXQuCgkvLyBDYW4gYmUgZ2l2ZW4gbm8gYXJndW1lbnRzLCBpbiB3aGljaCBjYXNlIGl0IHdpbGwgbW91c2VvdXQgdGhlIHNlZ21lbnQgdGhhdCB3YXMgcHJldmlvdXNseSBtb3VzZWQgb3Zlci4KCWhhbmRsZVNlZ01vdXNlb3V0OiBmdW5jdGlvbihzZWcsIGV2KSB7CgkJZXYgPSBldiB8fCB7fTsgLy8gaWYgZ2l2ZW4gbm8gYXJncywgbWFrZSBhIG1vY2sgbW91c2UgZXZlbnQKCgkJaWYgKHRoaXMubW91c2VkT3ZlclNlZykgewoJCQlzZWcgPSBzZWcgfHwgdGhpcy5tb3VzZWRPdmVyU2VnOyAvLyBpZiBnaXZlbiBubyBhcmdzLCB1c2UgdGhlIGN1cnJlbnRseSBtb3VzZWQtb3ZlciBzZWdtZW50CgkJCXRoaXMubW91c2VkT3ZlclNlZyA9IG51bGw7CgkJCWlmICh0aGlzLnZpZXcuaXNFdmVudFJlc2l6YWJsZShzZWcuZXZlbnQpKSB7CgkJCQlzZWcuZWwucmVtb3ZlQ2xhc3MoJ2ZjLWFsbG93LW1vdXNlLXJlc2l6ZScpOwoJCQl9CgkJCXRoaXMudmlldy5wdWJsaWNseVRyaWdnZXIoJ2V2ZW50TW91c2VvdXQnLCBzZWcuZWxbMF0sIHNlZy5ldmVudCwgZXYpOwoJCX0KCX0sCgoKCWhhbmRsZVNlZ01vdXNlZG93bjogZnVuY3Rpb24oc2VnLCBldikgewoJCXZhciBpc1Jlc2l6aW5nID0gdGhpcy5zdGFydFNlZ1Jlc2l6ZShzZWcsIGV2LCB7IGRpc3RhbmNlOiA1IH0pOwoKCQlpZiAoIWlzUmVzaXppbmcgJiYgdGhpcy52aWV3LmlzRXZlbnREcmFnZ2FibGUoc2VnLmV2ZW50KSkgewoJCQl0aGlzLmJ1aWxkU2VnRHJhZ0xpc3RlbmVyKHNlZykKCQkJCS5zdGFydEludGVyYWN0aW9uKGV2LCB7CgkJCQkJZGlzdGFuY2U6IDUKCQkJCX0pOwoJCX0KCX0sCgoKCWhhbmRsZVNlZ1RvdWNoU3RhcnQ6IGZ1bmN0aW9uKHNlZywgZXYpIHsKCQl2YXIgdmlldyA9IHRoaXMudmlldzsKCQl2YXIgZXZlbnQgPSBzZWcuZXZlbnQ7CgkJdmFyIGlzU2VsZWN0ZWQgPSB2aWV3LmlzRXZlbnRTZWxlY3RlZChldmVudCk7CgkJdmFyIGlzRHJhZ2dhYmxlID0gdmlldy5pc0V2ZW50RHJhZ2dhYmxlKGV2ZW50KTsKCQl2YXIgaXNSZXNpemFibGUgPSB2aWV3LmlzRXZlbnRSZXNpemFibGUoZXZlbnQpOwoJCXZhciBpc1Jlc2l6aW5nID0gZmFsc2U7CgkJdmFyIGRyYWdMaXN0ZW5lcjsKCQl2YXIgZXZlbnRMb25nUHJlc3NEZWxheTsKCgkJaWYgKGlzU2VsZWN0ZWQgJiYgaXNSZXNpemFibGUpIHsKCQkJLy8gb25seSBhbGxvdyByZXNpemluZyBvZiB0aGUgZXZlbnQgaXMgc2VsZWN0ZWQKCQkJaXNSZXNpemluZyA9IHRoaXMuc3RhcnRTZWdSZXNpemUoc2VnLCBldik7CgkJfQoKCQlpZiAoIWlzUmVzaXppbmcgJiYgKGlzRHJhZ2dhYmxlIHx8IGlzUmVzaXphYmxlKSkgeyAvLyBhbGxvd2VkIHRvIGJlIHNlbGVjdGVkPwoKCQkJZXZlbnRMb25nUHJlc3NEZWxheSA9IHZpZXcub3B0KCdldmVudExvbmdQcmVzc0RlbGF5Jyk7CgkJCWlmIChldmVudExvbmdQcmVzc0RlbGF5ID09IG51bGwpIHsKCQkJCWV2ZW50TG9uZ1ByZXNzRGVsYXkgPSB2aWV3Lm9wdCgnbG9uZ1ByZXNzRGVsYXknKTsgLy8gZmFsbGJhY2sKCQkJfQoKCQkJZHJhZ0xpc3RlbmVyID0gaXNEcmFnZ2FibGUgPwoJCQkJdGhpcy5idWlsZFNlZ0RyYWdMaXN0ZW5lcihzZWcpIDoKCQkJCXRoaXMuYnVpbGRTZWdTZWxlY3RMaXN0ZW5lcihzZWcpOyAvLyBzZWcgaXNuJ3QgZHJhZ2dhYmxlLCBidXQgc3RpbGwgbmVlZHMgdG8gYmUgc2VsZWN0ZWQKCgkJCWRyYWdMaXN0ZW5lci5zdGFydEludGVyYWN0aW9uKGV2LCB7IC8vIHdvbid0IHN0YXJ0IGlmIGFscmVhZHkgc3RhcnRlZAoJCQkJZGVsYXk6IGlzU2VsZWN0ZWQgPyAwIDogZXZlbnRMb25nUHJlc3NEZWxheSAvLyBkbyBkZWxheSBpZiBub3QgYWxyZWFkeSBzZWxlY3RlZAoJCQl9KTsKCQl9Cgl9LAoKCgkvLyByZXR1cm5zIGJvb2xlYW4gd2hldGhlciByZXNpemluZyBhY3R1YWxseSBzdGFydGVkIG9yIG5vdC4KCS8vIGFzc3VtZXMgdGhlIHNlZyBhbGxvd3MgcmVzaXppbmcuCgkvLyBgZHJhZ09wdGlvbnNgIGFyZSBvcHRpb25hbC4KCXN0YXJ0U2VnUmVzaXplOiBmdW5jdGlvbihzZWcsIGV2LCBkcmFnT3B0aW9ucykgewoJCWlmICgkKGV2LnRhcmdldCkuaXMoJy5mYy1yZXNpemVyJykpIHsKCQkJdGhpcy5idWlsZFNlZ1Jlc2l6ZUxpc3RlbmVyKHNlZywgJChldi50YXJnZXQpLmlzKCcuZmMtc3RhcnQtcmVzaXplcicpKQoJCQkJLnN0YXJ0SW50ZXJhY3Rpb24oZXYsIGRyYWdPcHRpb25zKTsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCXJldHVybiBmYWxzZTsKCX0sCgoKCgkvKiBFdmVudCBEcmFnZ2luZwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gQnVpbGRzIGEgbGlzdGVuZXIgdGhhdCB3aWxsIHRyYWNrIHVzZXItZHJhZ2dpbmcgb24gYW4gZXZlbnQgc2VnbWVudC4KCS8vIEdlbmVyaWMgZW5vdWdoIHRvIHdvcmsgd2l0aCBhbnkgdHlwZSBvZiBHcmlkLgoJLy8gSGFzIHNpZGUgZWZmZWN0IG9mIHNldHRpbmcvdW5zZXR0aW5nIGBzZWdEcmFnTGlzdGVuZXJgCglidWlsZFNlZ0RyYWdMaXN0ZW5lcjogZnVuY3Rpb24oc2VnKSB7CgkJdmFyIF90aGlzID0gdGhpczsKCQl2YXIgdmlldyA9IHRoaXMudmlldzsKCQl2YXIgZWwgPSBzZWcuZWw7CgkJdmFyIGV2ZW50ID0gc2VnLmV2ZW50OwoJCXZhciBpc0RyYWdnaW5nOwoJCXZhciBtb3VzZUZvbGxvd2VyOyAvLyBBIGNsb25lIG9mIHRoZSBvcmlnaW5hbCBlbGVtZW50IHRoYXQgd2lsbCBtb3ZlIHdpdGggdGhlIG1vdXNlCgkJdmFyIGRyb3BMb2NhdGlvbjsgLy8gem9uZWQgZXZlbnQgZGF0ZSBwcm9wZXJ0aWVzCgoJCWlmICh0aGlzLnNlZ0RyYWdMaXN0ZW5lcikgewoJCQlyZXR1cm4gdGhpcy5zZWdEcmFnTGlzdGVuZXI7CgkJfQoKCQkvLyBUcmFja3MgbW91c2UgbW92ZW1lbnQgb3ZlciB0aGUgKnZpZXcncyogY29vcmRpbmF0ZSBtYXAuIEFsbG93cyBkcmFnZ2luZyBhbmQgZHJvcHBpbmcgYmV0d2VlbiBzdWJjb21wb25lbnRzCgkJLy8gb2YgdGhlIHZpZXcuCgkJdmFyIGRyYWdMaXN0ZW5lciA9IHRoaXMuc2VnRHJhZ0xpc3RlbmVyID0gbmV3IEhpdERyYWdMaXN0ZW5lcih2aWV3LCB7CgkJCXNjcm9sbDogdmlldy5vcHQoJ2RyYWdTY3JvbGwnKSwKCQkJc3ViamVjdEVsOiBlbCwKCQkJc3ViamVjdENlbnRlcjogdHJ1ZSwKCQkJaW50ZXJhY3Rpb25TdGFydDogZnVuY3Rpb24oZXYpIHsKCQkJCXNlZy5jb21wb25lbnQgPSBfdGhpczsgLy8gZm9yIHJlbmRlckRyYWcKCQkJCWlzRHJhZ2dpbmcgPSBmYWxzZTsKCQkJCW1vdXNlRm9sbG93ZXIgPSBuZXcgTW91c2VGb2xsb3dlcihzZWcuZWwsIHsKCQkJCQlhZGRpdGlvbmFsQ2xhc3M6ICdmYy1kcmFnZ2luZycsCgkJCQkJcGFyZW50RWw6IHZpZXcuZWwsCgkJCQkJb3BhY2l0eTogZHJhZ0xpc3RlbmVyLmlzVG91Y2ggPyBudWxsIDogdmlldy5vcHQoJ2RyYWdPcGFjaXR5JyksCgkJCQkJcmV2ZXJ0RHVyYXRpb246IHZpZXcub3B0KCdkcmFnUmV2ZXJ0RHVyYXRpb24nKSwKCQkJCQl6SW5kZXg6IDIgLy8gb25lIGFib3ZlIHRoZSAuZmMtdmlldwoJCQkJfSk7CgkJCQltb3VzZUZvbGxvd2VyLmhpZGUoKTsgLy8gZG9uJ3Qgc2hvdyB1bnRpbCB3ZSBrbm93IHRoaXMgaXMgYSByZWFsIGRyYWcKCQkJCW1vdXNlRm9sbG93ZXIuc3RhcnQoZXYpOwoJCQl9LAoJCQlkcmFnU3RhcnQ6IGZ1bmN0aW9uKGV2KSB7CgkJCQlpZiAoZHJhZ0xpc3RlbmVyLmlzVG91Y2ggJiYgIXZpZXcuaXNFdmVudFNlbGVjdGVkKGV2ZW50KSkgewoJCQkJCS8vIGlmIG5vdCBwcmV2aW91c2x5IHNlbGVjdGVkLCB3aWxsIGZpcmUgYWZ0ZXIgYSBkZWxheS4gdGhlbiwgc2VsZWN0IHRoZSBldmVudAoJCQkJCXZpZXcuc2VsZWN0RXZlbnQoZXZlbnQpOwoJCQkJfQoJCQkJaXNEcmFnZ2luZyA9IHRydWU7CgkJCQlfdGhpcy5oYW5kbGVTZWdNb3VzZW91dChzZWcsIGV2KTsgLy8gZW5zdXJlIGEgbW91c2VvdXQgb24gdGhlIG1hbmlwdWxhdGVkIGV2ZW50IGhhcyBiZWVuIHJlcG9ydGVkCgkJCQlfdGhpcy5zZWdEcmFnU3RhcnQoc2VnLCBldik7CgkJCQl2aWV3LmhpZGVFdmVudChldmVudCk7IC8vIGhpZGUgYWxsIGV2ZW50IHNlZ21lbnRzLiBvdXIgbW91c2VGb2xsb3dlciB3aWxsIHRha2Ugb3ZlcgoJCQl9LAoJCQloaXRPdmVyOiBmdW5jdGlvbihoaXQsIGlzT3JpZywgb3JpZ0hpdCkgewoJCQkJdmFyIGlzQWxsb3dlZCA9IHRydWU7CgkJCQl2YXIgb3JpZ0hpdFNwYW47CgkJCQl2YXIgaGl0U3BhbjsKCQkJCXZhciBkcmFnSGVscGVyRWxzOwoKCQkJCS8vIHN0YXJ0aW5nIGhpdCBjb3VsZCBiZSBmb3JjZWQgKERheUdyaWQubGltaXQpCgkJCQlpZiAoc2VnLmhpdCkgewoJCQkJCW9yaWdIaXQgPSBzZWcuaGl0OwoJCQkJfQoKCQkJCS8vIGhpdCBtaWdodCBub3QgYmVsb25nIHRvIHRoaXMgZ3JpZCwgc28gcXVlcnkgb3JpZ2luIGdyaWQKCQkJCW9yaWdIaXRTcGFuID0gb3JpZ0hpdC5jb21wb25lbnQuZ2V0U2FmZUhpdFNwYW4ob3JpZ0hpdCk7CgkJCQloaXRTcGFuID0gaGl0LmNvbXBvbmVudC5nZXRTYWZlSGl0U3BhbihoaXQpOwoKCQkJCWlmIChvcmlnSGl0U3BhbiAmJiBoaXRTcGFuKSB7CgkJCQkJZHJvcExvY2F0aW9uID0gX3RoaXMuY29tcHV0ZUV2ZW50RHJvcChvcmlnSGl0U3BhbiwgaGl0U3BhbiwgZXZlbnQpOwoJCQkJCWlzQWxsb3dlZCA9IGRyb3BMb2NhdGlvbiAmJiBfdGhpcy5pc0V2ZW50TG9jYXRpb25BbGxvd2VkKGRyb3BMb2NhdGlvbiwgZXZlbnQpOwoJCQkJfQoJCQkJZWxzZSB7CgkJCQkJaXNBbGxvd2VkID0gZmFsc2U7CgkJCQl9CgoJCQkJaWYgKCFpc0FsbG93ZWQpIHsKCQkJCQlkcm9wTG9jYXRpb24gPSBudWxsOwoJCQkJCWRpc2FibGVDdXJzb3IoKTsKCQkJCX0KCgkJCQkvLyBpZiBhIHZhbGlkIGRyb3AgbG9jYXRpb24sIGhhdmUgdGhlIHN1YmNsYXNzIHJlbmRlciBhIHZpc3VhbCBpbmRpY2F0aW9uCgkJCQlpZiAoZHJvcExvY2F0aW9uICYmIChkcmFnSGVscGVyRWxzID0gdmlldy5yZW5kZXJEcmFnKGRyb3BMb2NhdGlvbiwgc2VnKSkpIHsKCgkJCQkJZHJhZ0hlbHBlckVscy5hZGRDbGFzcygnZmMtZHJhZ2dpbmcnKTsKCQkJCQlpZiAoIWRyYWdMaXN0ZW5lci5pc1RvdWNoKSB7CgkJCQkJCV90aGlzLmFwcGx5RHJhZ09wYWNpdHkoZHJhZ0hlbHBlckVscyk7CgkJCQkJfQoKCQkJCQltb3VzZUZvbGxvd2VyLmhpZGUoKTsgLy8gaWYgdGhlIHN1YmNsYXNzIGlzIGFscmVhZHkgdXNpbmcgYSBtb2NrIGV2ZW50ICJoZWxwZXIiLCBoaWRlIG91ciBvd24KCQkJCX0KCQkJCWVsc2UgewoJCQkJCW1vdXNlRm9sbG93ZXIuc2hvdygpOyAvLyBvdGhlcndpc2UsIGhhdmUgdGhlIGhlbHBlciBmb2xsb3cgdGhlIG1vdXNlIChubyBzbmFwcGluZykKCQkJCX0KCgkJCQlpZiAoaXNPcmlnKSB7CgkJCQkJZHJvcExvY2F0aW9uID0gbnVsbDsgLy8gbmVlZHMgdG8gaGF2ZSBtb3ZlZCBoaXRzIHRvIGJlIGEgdmFsaWQgZHJvcAoJCQkJfQoJCQl9LAoJCQloaXRPdXQ6IGZ1bmN0aW9uKCkgeyAvLyBjYWxsZWQgYmVmb3JlIG1vdXNlIG1vdmVzIHRvIGEgZGlmZmVyZW50IGhpdCBPUiBtb3ZlZCBvdXQgb2YgYWxsIGhpdHMKCQkJCXZpZXcudW5yZW5kZXJEcmFnKCk7IC8vIHVucmVuZGVyIHdoYXRldmVyIHdhcyBkb25lIGluIHJlbmRlckRyYWcKCQkJCW1vdXNlRm9sbG93ZXIuc2hvdygpOyAvLyBzaG93IGluIGNhc2Ugd2UgYXJlIG1vdmluZyBvdXQgb2YgYWxsIGhpdHMKCQkJCWRyb3BMb2NhdGlvbiA9IG51bGw7CgkJCX0sCgkJCWhpdERvbmU6IGZ1bmN0aW9uKCkgeyAvLyBDYWxsZWQgYWZ0ZXIgYSBoaXRPdXQgT1IgYmVmb3JlIGEgZHJhZ0VuZAoJCQkJZW5hYmxlQ3Vyc29yKCk7CgkJCX0sCgkJCWludGVyYWN0aW9uRW5kOiBmdW5jdGlvbihldikgewoJCQkJZGVsZXRlIHNlZy5jb21wb25lbnQ7IC8vIHByZXZlbnQgc2lkZSBlZmZlY3RzCgoJCQkJLy8gZG8gcmV2ZXJ0IGFuaW1hdGlvbiBpZiBoYXNuJ3QgY2hhbmdlZC4gY2FsbHMgYSBjYWxsYmFjayB3aGVuIGZpbmlzaGVkICh3aGV0aGVyIGFuaW1hdGlvbiBvciBub3QpCgkJCQltb3VzZUZvbGxvd2VyLnN0b3AoIWRyb3BMb2NhdGlvbiwgZnVuY3Rpb24oKSB7CgkJCQkJaWYgKGlzRHJhZ2dpbmcpIHsKCQkJCQkJdmlldy51bnJlbmRlckRyYWcoKTsKCQkJCQkJX3RoaXMuc2VnRHJhZ1N0b3Aoc2VnLCBldik7CgkJCQkJfQoKCQkJCQlpZiAoZHJvcExvY2F0aW9uKSB7CgkJCQkJCS8vIG5vIG5lZWQgdG8gcmUtc2hvdyBvcmlnaW5hbCwgd2lsbCByZXJlbmRlciBhbGwgYW55d2F5cy4gZXNwIGltcG9ydGFudCBpZiBldmVudFJlbmRlcldhaXQKCQkJCQkJdmlldy5yZXBvcnRTZWdEcm9wKHNlZywgZHJvcExvY2F0aW9uLCBfdGhpcy5sYXJnZVVuaXQsIGVsLCBldik7CgkJCQkJfQoJCQkJCWVsc2UgewoJCQkJCQl2aWV3LnNob3dFdmVudChldmVudCk7CgkJCQkJfQoJCQkJfSk7CgkJCQlfdGhpcy5zZWdEcmFnTGlzdGVuZXIgPSBudWxsOwoJCQl9CgkJfSk7CgoJCXJldHVybiBkcmFnTGlzdGVuZXI7Cgl9LAoKCgkvLyBzZWcgaXNuJ3QgZHJhZ2dhYmxlLCBidXQgbGV0J3MgdXNlIGEgZ2VuZXJpYyBEcmFnTGlzdGVuZXIKCS8vIHNpbXBseSBmb3IgdGhlIGRlbGF5LCBzbyBpdCBjYW4gYmUgc2VsZWN0ZWQuCgkvLyBIYXMgc2lkZSBlZmZlY3Qgb2Ygc2V0dGluZy91bnNldHRpbmcgYHNlZ0RyYWdMaXN0ZW5lcmAKCWJ1aWxkU2VnU2VsZWN0TGlzdGVuZXI6IGZ1bmN0aW9uKHNlZykgewoJCXZhciBfdGhpcyA9IHRoaXM7CgkJdmFyIHZpZXcgPSB0aGlzLnZpZXc7CgkJdmFyIGV2ZW50ID0gc2VnLmV2ZW50OwoKCQlpZiAodGhpcy5zZWdEcmFnTGlzdGVuZXIpIHsKCQkJcmV0dXJuIHRoaXMuc2VnRHJhZ0xpc3RlbmVyOwoJCX0KCgkJdmFyIGRyYWdMaXN0ZW5lciA9IHRoaXMuc2VnRHJhZ0xpc3RlbmVyID0gbmV3IERyYWdMaXN0ZW5lcih7CgkJCWRyYWdTdGFydDogZnVuY3Rpb24oZXYpIHsKCQkJCWlmIChkcmFnTGlzdGVuZXIuaXNUb3VjaCAmJiAhdmlldy5pc0V2ZW50U2VsZWN0ZWQoZXZlbnQpKSB7CgkJCQkJLy8gaWYgbm90IHByZXZpb3VzbHkgc2VsZWN0ZWQsIHdpbGwgZmlyZSBhZnRlciBhIGRlbGF5LiB0aGVuLCBzZWxlY3QgdGhlIGV2ZW50CgkJCQkJdmlldy5zZWxlY3RFdmVudChldmVudCk7CgkJCQl9CgkJCX0sCgkJCWludGVyYWN0aW9uRW5kOiBmdW5jdGlvbihldikgewoJCQkJX3RoaXMuc2VnRHJhZ0xpc3RlbmVyID0gbnVsbDsKCQkJfQoJCX0pOwoKCQlyZXR1cm4gZHJhZ0xpc3RlbmVyOwoJfSwKCgoJLy8gQ2FsbGVkIGJlZm9yZSBldmVudCBzZWdtZW50IGRyYWdnaW5nIHN0YXJ0cwoJc2VnRHJhZ1N0YXJ0OiBmdW5jdGlvbihzZWcsIGV2KSB7CgkJdGhpcy5pc0RyYWdnaW5nU2VnID0gdHJ1ZTsKCQl0aGlzLnZpZXcucHVibGljbHlUcmlnZ2VyKCdldmVudERyYWdTdGFydCcsIHNlZy5lbFswXSwgc2VnLmV2ZW50LCBldiwge30pOyAvLyBsYXN0IGFyZ3VtZW50IGlzIGpxdWkgZHVtbXkKCX0sCgoKCS8vIENhbGxlZCBhZnRlciBldmVudCBzZWdtZW50IGRyYWdnaW5nIHN0b3BzCglzZWdEcmFnU3RvcDogZnVuY3Rpb24oc2VnLCBldikgewoJCXRoaXMuaXNEcmFnZ2luZ1NlZyA9IGZhbHNlOwoJCXRoaXMudmlldy5wdWJsaWNseVRyaWdnZXIoJ2V2ZW50RHJhZ1N0b3AnLCBzZWcuZWxbMF0sIHNlZy5ldmVudCwgZXYsIHt9KTsgLy8gbGFzdCBhcmd1bWVudCBpcyBqcXVpIGR1bW15Cgl9LAoKCgkvLyBHaXZlbiB0aGUgc3BhbnMgYW4gZXZlbnQgZHJhZyBiZWdhbiwgYW5kIHRoZSBzcGFuIGV2ZW50IHdhcyBkcm9wcGVkLCBjYWxjdWxhdGVzIHRoZSBuZXcgem9uZWQgc3RhcnQvZW5kL2FsbERheQoJLy8gdmFsdWVzIGZvciB0aGUgZXZlbnQuIFN1YmNsYXNzZXMgbWF5IG92ZXJyaWRlIGFuZCBzZXQgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIHRvIGJlIHVzZWQgYnkgcmVuZGVyRHJhZy4KCS8vIEEgZmFsc3kgcmV0dXJuZWQgdmFsdWUgaW5kaWNhdGVzIGFuIGludmFsaWQgZHJvcC4KCS8vIERPRVMgTk9UIGNvbnNpZGVyIG92ZXJsYXAvY29uc3RyYWludC4KCWNvbXB1dGVFdmVudERyb3A6IGZ1bmN0aW9uKHN0YXJ0U3BhbiwgZW5kU3BhbiwgZXZlbnQpIHsKCQl2YXIgY2FsZW5kYXIgPSB0aGlzLnZpZXcuY2FsZW5kYXI7CgkJdmFyIGRyYWdTdGFydCA9IHN0YXJ0U3Bhbi5zdGFydDsKCQl2YXIgZHJhZ0VuZCA9IGVuZFNwYW4uc3RhcnQ7CgkJdmFyIGRlbHRhOwoJCXZhciBkcm9wTG9jYXRpb247IC8vIHpvbmVkIGV2ZW50IGRhdGUgcHJvcGVydGllcwoKCQlpZiAoZHJhZ1N0YXJ0Lmhhc1RpbWUoKSA9PT0gZHJhZ0VuZC5oYXNUaW1lKCkpIHsKCQkJZGVsdGEgPSB0aGlzLmRpZmZEYXRlcyhkcmFnRW5kLCBkcmFnU3RhcnQpOwoKCQkJLy8gaWYgYW4gYWxsLWRheSBldmVudCB3YXMgaW4gYSB0aW1lZCBhcmVhIGFuZCBpdCB3YXMgZHJhZ2dlZCB0byBhIGRpZmZlcmVudCB0aW1lLAoJCQkvLyBndWFyYW50ZWUgYW4gZW5kIGFuZCBhZGp1c3Qgc3RhcnQvZW5kIHRvIGhhdmUgdGltZXMKCQkJaWYgKGV2ZW50LmFsbERheSAmJiBkdXJhdGlvbkhhc1RpbWUoZGVsdGEpKSB7CgkJCQlkcm9wTG9jYXRpb24gPSB7CgkJCQkJc3RhcnQ6IGV2ZW50LnN0YXJ0LmNsb25lKCksCgkJCQkJZW5kOiBjYWxlbmRhci5nZXRFdmVudEVuZChldmVudCksIC8vIHdpbGwgYmUgYW4gYW1iaWcgZGF5CgkJCQkJYWxsRGF5OiBmYWxzZSAvLyBmb3Igbm9ybWFsaXplRXZlbnRUaW1lcwoJCQkJfTsKCQkJCWNhbGVuZGFyLm5vcm1hbGl6ZUV2ZW50VGltZXMoZHJvcExvY2F0aW9uKTsKCQkJfQoJCQkvLyBvdGhld2lzZSwgd29yayBvZmYgZXhpc3RpbmcgdmFsdWVzCgkJCWVsc2UgewoJCQkJZHJvcExvY2F0aW9uID0gcGx1Y2tFdmVudERhdGVQcm9wcyhldmVudCk7CgkJCX0KCgkJCWRyb3BMb2NhdGlvbi5zdGFydC5hZGQoZGVsdGEpOwoJCQlpZiAoZHJvcExvY2F0aW9uLmVuZCkgewoJCQkJZHJvcExvY2F0aW9uLmVuZC5hZGQoZGVsdGEpOwoJCQl9CgkJfQoJCWVsc2UgewoJCQkvLyBpZiBzd2l0Y2hpbmcgZnJvbSBkYXkgPC0+IHRpbWVkLCBzdGFydCBzaG91bGQgYmUgcmVzZXQgdG8gdGhlIGRyb3BwZWQgZGF0ZSwgYW5kIHRoZSBlbmQgY2xlYXJlZAoJCQlkcm9wTG9jYXRpb24gPSB7CgkJCQlzdGFydDogZHJhZ0VuZC5jbG9uZSgpLAoJCQkJZW5kOiBudWxsLCAvLyBlbmQgc2hvdWxkIGJlIGNsZWFyZWQKCQkJCWFsbERheTogIWRyYWdFbmQuaGFzVGltZSgpCgkJCX07CgkJfQoKCQlyZXR1cm4gZHJvcExvY2F0aW9uOwoJfSwKCgoJLy8gVXRpbGl0eSBmb3IgYXBwbHkgZHJhZ09wYWNpdHkgdG8gYSBqUXVlcnkgc2V0CglhcHBseURyYWdPcGFjaXR5OiBmdW5jdGlvbihlbHMpIHsKCQl2YXIgb3BhY2l0eSA9IHRoaXMudmlldy5vcHQoJ2RyYWdPcGFjaXR5Jyk7CgoJCWlmIChvcGFjaXR5ICE9IG51bGwpIHsKCQkJZWxzLmNzcygnb3BhY2l0eScsIG9wYWNpdHkpOwoJCX0KCX0sCgoKCS8qIEV4dGVybmFsIEVsZW1lbnQgRHJhZ2dpbmcKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIENhbGxlZCB3aGVuIGEgalF1ZXJ5IFVJIGRyYWcgaXMgaW5pdGlhdGVkIGFueXdoZXJlIGluIHRoZSBET00KCWV4dGVybmFsRHJhZ1N0YXJ0OiBmdW5jdGlvbihldiwgdWkpIHsKCQl2YXIgdmlldyA9IHRoaXMudmlldzsKCQl2YXIgZWw7CgkJdmFyIGFjY2VwdDsKCgkJaWYgKHZpZXcub3B0KCdkcm9wcGFibGUnKSkgeyAvLyBvbmx5IGxpc3RlbiBpZiB0aGlzIHNldHRpbmcgaXMgb24KCQkJZWwgPSAkKCh1aSA/IHVpLml0ZW0gOiBudWxsKSB8fCBldi50YXJnZXQpOwoKCQkJLy8gVGVzdCB0aGF0IHRoZSBkcmFnZ2VkIGVsZW1lbnQgcGFzc2VzIHRoZSBkcm9wQWNjZXB0IHNlbGVjdG9yIG9yIGZpbHRlciBmdW5jdGlvbi4KCQkJLy8gRllJLCB0aGUgZGVmYXVsdCBpcyAiKiIgKG1hdGNoZXMgYWxsKQoJCQlhY2NlcHQgPSB2aWV3Lm9wdCgnZHJvcEFjY2VwdCcpOwoJCQlpZiAoJC5pc0Z1bmN0aW9uKGFjY2VwdCkgPyBhY2NlcHQuY2FsbChlbFswXSwgZWwpIDogZWwuaXMoYWNjZXB0KSkgewoJCQkJaWYgKCF0aGlzLmlzRHJhZ2dpbmdFeHRlcm5hbCkgeyAvLyBwcmV2ZW50IGRvdWJsZS1saXN0ZW5pbmcgaWYgZmlyZWQgdHdpY2UKCQkJCQl0aGlzLmxpc3RlblRvRXh0ZXJuYWxEcmFnKGVsLCBldiwgdWkpOwoJCQkJfQoJCQl9CgkJfQoJfSwKCgoJLy8gQ2FsbGVkIHdoZW4gYSBqUXVlcnkgVUkgZHJhZyBzdGFydHMgYW5kIGl0IG5lZWRzIHRvIGJlIG1vbml0b3JlZCBmb3IgZHJvcHBpbmcKCWxpc3RlblRvRXh0ZXJuYWxEcmFnOiBmdW5jdGlvbihlbCwgZXYsIHVpKSB7CgkJdmFyIF90aGlzID0gdGhpczsKCQl2YXIgdmlldyA9IHRoaXMudmlldzsKCQl2YXIgbWV0YSA9IGdldERyYWdnZWRFbE1ldGEoZWwpOyAvLyBleHRyYSBkYXRhIGFib3V0IGV2ZW50IGRyb3AsIGluY2x1ZGluZyBwb3NzaWJsZSBldmVudCB0byBjcmVhdGUKCQl2YXIgZHJvcExvY2F0aW9uOyAvLyBhIG51bGwgdmFsdWUgc2lnbmFscyBhbiB1bnN1Y2Nlc3NmdWwgZHJhZwoKCQkvLyBsaXN0ZW5lciB0aGF0IHRyYWNrcyBtb3VzZSBtb3ZlbWVudCBvdmVyIGRhdGUtYXNzb2NpYXRlZCBwaXhlbCByZWdpb25zCgkJdmFyIGRyYWdMaXN0ZW5lciA9IF90aGlzLmV4dGVybmFsRHJhZ0xpc3RlbmVyID0gbmV3IEhpdERyYWdMaXN0ZW5lcih0aGlzLCB7CgkJCWludGVyYWN0aW9uU3RhcnQ6IGZ1bmN0aW9uKCkgewoJCQkJX3RoaXMuaXNEcmFnZ2luZ0V4dGVybmFsID0gdHJ1ZTsKCQkJfSwKCQkJaGl0T3ZlcjogZnVuY3Rpb24oaGl0KSB7CgkJCQl2YXIgaXNBbGxvd2VkID0gdHJ1ZTsKCQkJCXZhciBoaXRTcGFuID0gaGl0LmNvbXBvbmVudC5nZXRTYWZlSGl0U3BhbihoaXQpOyAvLyBoaXQgbWlnaHQgbm90IGJlbG9uZyB0byB0aGlzIGdyaWQKCgkJCQlpZiAoaGl0U3BhbikgewoJCQkJCWRyb3BMb2NhdGlvbiA9IF90aGlzLmNvbXB1dGVFeHRlcm5hbERyb3AoaGl0U3BhbiwgbWV0YSk7CgkJCQkJaXNBbGxvd2VkID0gZHJvcExvY2F0aW9uICYmIF90aGlzLmlzRXh0ZXJuYWxMb2NhdGlvbkFsbG93ZWQoZHJvcExvY2F0aW9uLCBtZXRhLmV2ZW50UHJvcHMpOwoJCQkJfQoJCQkJZWxzZSB7CgkJCQkJaXNBbGxvd2VkID0gZmFsc2U7CgkJCQl9CgoJCQkJaWYgKCFpc0FsbG93ZWQpIHsKCQkJCQlkcm9wTG9jYXRpb24gPSBudWxsOwoJCQkJCWRpc2FibGVDdXJzb3IoKTsKCQkJCX0KCgkJCQlpZiAoZHJvcExvY2F0aW9uKSB7CgkJCQkJX3RoaXMucmVuZGVyRHJhZyhkcm9wTG9jYXRpb24pOyAvLyBjYWxsZWQgd2l0aG91dCBhIHNlZyBwYXJhbWV0ZXIKCQkJCX0KCQkJfSwKCQkJaGl0T3V0OiBmdW5jdGlvbigpIHsKCQkJCWRyb3BMb2NhdGlvbiA9IG51bGw7IC8vIHNpZ25hbCB1bnN1Y2Nlc3NmdWwKCQkJfSwKCQkJaGl0RG9uZTogZnVuY3Rpb24oKSB7IC8vIENhbGxlZCBhZnRlciBhIGhpdE91dCBPUiBiZWZvcmUgYSBkcmFnRW5kCgkJCQllbmFibGVDdXJzb3IoKTsKCQkJCV90aGlzLnVucmVuZGVyRHJhZygpOwoJCQl9LAoJCQlpbnRlcmFjdGlvbkVuZDogZnVuY3Rpb24oZXYpIHsKCQkJCWlmIChkcm9wTG9jYXRpb24pIHsgLy8gZWxlbWVudCB3YXMgZHJvcHBlZCBvbiBhIHZhbGlkIGhpdAoJCQkJCXZpZXcucmVwb3J0RXh0ZXJuYWxEcm9wKG1ldGEsIGRyb3BMb2NhdGlvbiwgZWwsIGV2LCB1aSk7CgkJCQl9CgkJCQlfdGhpcy5pc0RyYWdnaW5nRXh0ZXJuYWwgPSBmYWxzZTsKCQkJCV90aGlzLmV4dGVybmFsRHJhZ0xpc3RlbmVyID0gbnVsbDsKCQkJfQoJCX0pOwoKCQlkcmFnTGlzdGVuZXIuc3RhcnREcmFnKGV2KTsgLy8gc3RhcnQgbGlzdGVuaW5nIGltbWVkaWF0ZWx5Cgl9LAoKCgkvLyBHaXZlbiBhIGhpdCB0byBiZSBkcm9wcGVkIHVwb24sIGFuZCBtaXNjIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBqcXVpIGRyYWcgKGd1YXJhbnRlZWQgdG8gYmUgYSBwbGFpbiBvYmplY3QpLAoJLy8gcmV0dXJucyB0aGUgem9uZWQgc3RhcnQvZW5kIGRhdGVzIGZvciB0aGUgZXZlbnQgdGhhdCB3b3VsZCByZXN1bHQgZnJvbSB0aGUgaHlwb3RoZXRpY2FsIGRyb3AuIGVuZCBtaWdodCBiZSBudWxsLgoJLy8gUmV0dXJuaW5nIGEgbnVsbCB2YWx1ZSBzaWduYWxzIGFuIGludmFsaWQgZHJvcCBoaXQuCgkvLyBET0VTIE5PVCBjb25zaWRlciBvdmVybGFwL2NvbnN0cmFpbnQuCgljb21wdXRlRXh0ZXJuYWxEcm9wOiBmdW5jdGlvbihzcGFuLCBtZXRhKSB7CgkJdmFyIGNhbGVuZGFyID0gdGhpcy52aWV3LmNhbGVuZGFyOwoJCXZhciBkcm9wTG9jYXRpb24gPSB7CgkJCXN0YXJ0OiBjYWxlbmRhci5hcHBseVRpbWV6b25lKHNwYW4uc3RhcnQpLCAvLyBzaW11bGF0ZSBhIHpvbmVkIGV2ZW50IHN0YXJ0IGRhdGUKCQkJZW5kOiBudWxsCgkJfTsKCgkJLy8gaWYgZHJvcHBlZCBvbiBhbiBhbGwtZGF5IHNwYW4sIGFuZCBlbGVtZW50J3MgbWV0YWRhdGEgc3BlY2lmaWVkIGEgdGltZSwgc2V0IGl0CgkJaWYgKG1ldGEuc3RhcnRUaW1lICYmICFkcm9wTG9jYXRpb24uc3RhcnQuaGFzVGltZSgpKSB7CgkJCWRyb3BMb2NhdGlvbi5zdGFydC50aW1lKG1ldGEuc3RhcnRUaW1lKTsKCQl9CgoJCWlmIChtZXRhLmR1cmF0aW9uKSB7CgkJCWRyb3BMb2NhdGlvbi5lbmQgPSBkcm9wTG9jYXRpb24uc3RhcnQuY2xvbmUoKS5hZGQobWV0YS5kdXJhdGlvbik7CgkJfQoKCQlyZXR1cm4gZHJvcExvY2F0aW9uOwoJfSwKCgoKCS8qIERyYWcgUmVuZGVyaW5nIChmb3IgYm90aCBldmVudHMgYW5kIGFuIGV4dGVybmFsIGVsZW1lbnRzKQoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gUmVuZGVycyBhIHZpc3VhbCBpbmRpY2F0aW9uIG9mIGFuIGV2ZW50IG9yIGV4dGVybmFsIGVsZW1lbnQgYmVpbmcgZHJhZ2dlZC4KCS8vIGBkcm9wTG9jYXRpb25gIGNvbnRhaW5zIGh5cG90aGV0aWNhbCBzdGFydC9lbmQvYWxsRGF5IHZhbHVlcyB0aGUgZXZlbnQgd291bGQgaGF2ZSBpZiBkcm9wcGVkLiBlbmQgY2FuIGJlIG51bGwuCgkvLyBgc2VnYCBpcyB0aGUgaW50ZXJuYWwgc2VnbWVudCBvYmplY3QgdGhhdCBpcyBiZWluZyBkcmFnZ2VkLiBJZiBkcmFnZ2luZyBhbiBleHRlcm5hbCBlbGVtZW50LCBgc2VnYCBpcyBudWxsLgoJLy8gQSB0cnV0aHkgcmV0dXJuZWQgdmFsdWUgaW5kaWNhdGVzIHRoaXMgbWV0aG9kIGhhcyByZW5kZXJlZCBhIGhlbHBlciBlbGVtZW50LgoJLy8gTXVzdCByZXR1cm4gZWxlbWVudHMgdXNlZCBmb3IgYW55IG1vY2sgZXZlbnRzLgoJcmVuZGVyRHJhZzogZnVuY3Rpb24oZHJvcExvY2F0aW9uLCBzZWcpIHsKCQkvLyBzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50Cgl9LAoKCgkvLyBVbnJlbmRlcnMgYSB2aXN1YWwgaW5kaWNhdGlvbiBvZiBhbiBldmVudCBvciBleHRlcm5hbCBlbGVtZW50IGJlaW5nIGRyYWdnZWQKCXVucmVuZGVyRHJhZzogZnVuY3Rpb24oKSB7CgkJLy8gc3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudAoJfSwKCgoJLyogUmVzaXppbmcKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIENyZWF0ZXMgYSBsaXN0ZW5lciB0aGF0IHRyYWNrcyB0aGUgdXNlciBhcyB0aGV5IHJlc2l6ZSBhbiBldmVudCBzZWdtZW50LgoJLy8gR2VuZXJpYyBlbm91Z2ggdG8gd29yayB3aXRoIGFueSB0eXBlIG9mIEdyaWQuCglidWlsZFNlZ1Jlc2l6ZUxpc3RlbmVyOiBmdW5jdGlvbihzZWcsIGlzU3RhcnQpIHsKCQl2YXIgX3RoaXMgPSB0aGlzOwoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciBjYWxlbmRhciA9IHZpZXcuY2FsZW5kYXI7CgkJdmFyIGVsID0gc2VnLmVsOwoJCXZhciBldmVudCA9IHNlZy5ldmVudDsKCQl2YXIgZXZlbnRFbmQgPSBjYWxlbmRhci5nZXRFdmVudEVuZChldmVudCk7CgkJdmFyIGlzRHJhZ2dpbmc7CgkJdmFyIHJlc2l6ZUxvY2F0aW9uOyAvLyB6b25lZCBldmVudCBkYXRlIHByb3BlcnRpZXMuIGZhbHN5IGlmIGludmFsaWQgcmVzaXplCgoJCS8vIFRyYWNrcyBtb3VzZSBtb3ZlbWVudCBvdmVyIHRoZSAqZ3JpZCdzKiBjb29yZGluYXRlIG1hcAoJCXZhciBkcmFnTGlzdGVuZXIgPSB0aGlzLnNlZ1Jlc2l6ZUxpc3RlbmVyID0gbmV3IEhpdERyYWdMaXN0ZW5lcih0aGlzLCB7CgkJCXNjcm9sbDogdmlldy5vcHQoJ2RyYWdTY3JvbGwnKSwKCQkJc3ViamVjdEVsOiBlbCwKCQkJaW50ZXJhY3Rpb25TdGFydDogZnVuY3Rpb24oKSB7CgkJCQlpc0RyYWdnaW5nID0gZmFsc2U7CgkJCX0sCgkJCWRyYWdTdGFydDogZnVuY3Rpb24oZXYpIHsKCQkJCWlzRHJhZ2dpbmcgPSB0cnVlOwoJCQkJX3RoaXMuaGFuZGxlU2VnTW91c2VvdXQoc2VnLCBldik7IC8vIGVuc3VyZSBhIG1vdXNlb3V0IG9uIHRoZSBtYW5pcHVsYXRlZCBldmVudCBoYXMgYmVlbiByZXBvcnRlZAoJCQkJX3RoaXMuc2VnUmVzaXplU3RhcnQoc2VnLCBldik7CgkJCX0sCgkJCWhpdE92ZXI6IGZ1bmN0aW9uKGhpdCwgaXNPcmlnLCBvcmlnSGl0KSB7CgkJCQl2YXIgaXNBbGxvd2VkID0gdHJ1ZTsKCQkJCXZhciBvcmlnSGl0U3BhbiA9IF90aGlzLmdldFNhZmVIaXRTcGFuKG9yaWdIaXQpOwoJCQkJdmFyIGhpdFNwYW4gPSBfdGhpcy5nZXRTYWZlSGl0U3BhbihoaXQpOwoKCQkJCWlmIChvcmlnSGl0U3BhbiAmJiBoaXRTcGFuKSB7CgkJCQkJcmVzaXplTG9jYXRpb24gPSBpc1N0YXJ0ID8KCQkJCQkJX3RoaXMuY29tcHV0ZUV2ZW50U3RhcnRSZXNpemUob3JpZ0hpdFNwYW4sIGhpdFNwYW4sIGV2ZW50KSA6CgkJCQkJCV90aGlzLmNvbXB1dGVFdmVudEVuZFJlc2l6ZShvcmlnSGl0U3BhbiwgaGl0U3BhbiwgZXZlbnQpOwoKCQkJCQlpc0FsbG93ZWQgPSByZXNpemVMb2NhdGlvbiAmJiBfdGhpcy5pc0V2ZW50TG9jYXRpb25BbGxvd2VkKHJlc2l6ZUxvY2F0aW9uLCBldmVudCk7CgkJCQl9CgkJCQllbHNlIHsKCQkJCQlpc0FsbG93ZWQgPSBmYWxzZTsKCQkJCX0KCgkJCQlpZiAoIWlzQWxsb3dlZCkgewoJCQkJCXJlc2l6ZUxvY2F0aW9uID0gbnVsbDsKCQkJCQlkaXNhYmxlQ3Vyc29yKCk7CgkJCQl9CgkJCQllbHNlIHsKCQkJCQlpZiAoCgkJCQkJCXJlc2l6ZUxvY2F0aW9uLnN0YXJ0LmlzU2FtZShldmVudC5zdGFydC5jbG9uZSgpLnN0cmlwWm9uZSgpKSAmJgoJCQkJCQlyZXNpemVMb2NhdGlvbi5lbmQuaXNTYW1lKGV2ZW50RW5kLmNsb25lKCkuc3RyaXBab25lKCkpCgkJCQkJKSB7CgkJCQkJCS8vIG5vIGNoYW5nZS4gKEZZSSwgZXZlbnQgZGF0ZXMgbWlnaHQgaGF2ZSB6b25lcykKCQkJCQkJcmVzaXplTG9jYXRpb24gPSBudWxsOwoJCQkJCX0KCQkJCX0KCgkJCQlpZiAocmVzaXplTG9jYXRpb24pIHsKCQkJCQl2aWV3LmhpZGVFdmVudChldmVudCk7CgkJCQkJX3RoaXMucmVuZGVyRXZlbnRSZXNpemUocmVzaXplTG9jYXRpb24sIHNlZyk7CgkJCQl9CgkJCX0sCgkJCWhpdE91dDogZnVuY3Rpb24oKSB7IC8vIGNhbGxlZCBiZWZvcmUgbW91c2UgbW92ZXMgdG8gYSBkaWZmZXJlbnQgaGl0IE9SIG1vdmVkIG91dCBvZiBhbGwgaGl0cwoJCQkJcmVzaXplTG9jYXRpb24gPSBudWxsOwoJCQkJdmlldy5zaG93RXZlbnQoZXZlbnQpOyAvLyBmb3Igd2hlbiBvdXQtb2YtYm91bmRzLiBzaG93IG9yaWdpbmFsCgkJCX0sCgkJCWhpdERvbmU6IGZ1bmN0aW9uKCkgeyAvLyByZXNldHMgdGhlIHJlbmRlcmluZyB0byBzaG93IHRoZSBvcmlnaW5hbCBldmVudAoJCQkJX3RoaXMudW5yZW5kZXJFdmVudFJlc2l6ZSgpOwoJCQkJZW5hYmxlQ3Vyc29yKCk7CgkJCX0sCgkJCWludGVyYWN0aW9uRW5kOiBmdW5jdGlvbihldikgewoJCQkJaWYgKGlzRHJhZ2dpbmcpIHsKCQkJCQlfdGhpcy5zZWdSZXNpemVTdG9wKHNlZywgZXYpOwoJCQkJfQoKCQkJCWlmIChyZXNpemVMb2NhdGlvbikgeyAvLyB2YWxpZCBkYXRlIHRvIHJlc2l6ZSB0bz8KCQkJCQkvLyBubyBuZWVkIHRvIHJlLXNob3cgb3JpZ2luYWwsIHdpbGwgcmVyZW5kZXIgYWxsIGFueXdheXMuIGVzcCBpbXBvcnRhbnQgaWYgZXZlbnRSZW5kZXJXYWl0CgkJCQkJdmlldy5yZXBvcnRTZWdSZXNpemUoc2VnLCByZXNpemVMb2NhdGlvbiwgX3RoaXMubGFyZ2VVbml0LCBlbCwgZXYpOwoJCQkJfQoJCQkJZWxzZSB7CgkJCQkJdmlldy5zaG93RXZlbnQoZXZlbnQpOwoJCQkJfQoJCQkJX3RoaXMuc2VnUmVzaXplTGlzdGVuZXIgPSBudWxsOwoJCQl9CgkJfSk7CgoJCXJldHVybiBkcmFnTGlzdGVuZXI7Cgl9LAoKCgkvLyBDYWxsZWQgYmVmb3JlIGV2ZW50IHNlZ21lbnQgcmVzaXppbmcgc3RhcnRzCglzZWdSZXNpemVTdGFydDogZnVuY3Rpb24oc2VnLCBldikgewoJCXRoaXMuaXNSZXNpemluZ1NlZyA9IHRydWU7CgkJdGhpcy52aWV3LnB1YmxpY2x5VHJpZ2dlcignZXZlbnRSZXNpemVTdGFydCcsIHNlZy5lbFswXSwgc2VnLmV2ZW50LCBldiwge30pOyAvLyBsYXN0IGFyZ3VtZW50IGlzIGpxdWkgZHVtbXkKCX0sCgoKCS8vIENhbGxlZCBhZnRlciBldmVudCBzZWdtZW50IHJlc2l6aW5nIHN0b3BzCglzZWdSZXNpemVTdG9wOiBmdW5jdGlvbihzZWcsIGV2KSB7CgkJdGhpcy5pc1Jlc2l6aW5nU2VnID0gZmFsc2U7CgkJdGhpcy52aWV3LnB1YmxpY2x5VHJpZ2dlcignZXZlbnRSZXNpemVTdG9wJywgc2VnLmVsWzBdLCBzZWcuZXZlbnQsIGV2LCB7fSk7IC8vIGxhc3QgYXJndW1lbnQgaXMganF1aSBkdW1teQoJfSwKCgoJLy8gUmV0dXJucyBuZXcgZGF0ZS1pbmZvcm1hdGlvbiBmb3IgYW4gZXZlbnQgc2VnbWVudCBiZWluZyByZXNpemVkIGZyb20gaXRzIHN0YXJ0Cgljb21wdXRlRXZlbnRTdGFydFJlc2l6ZTogZnVuY3Rpb24oc3RhcnRTcGFuLCBlbmRTcGFuLCBldmVudCkgewoJCXJldHVybiB0aGlzLmNvbXB1dGVFdmVudFJlc2l6ZSgnc3RhcnQnLCBzdGFydFNwYW4sIGVuZFNwYW4sIGV2ZW50KTsKCX0sCgoKCS8vIFJldHVybnMgbmV3IGRhdGUtaW5mb3JtYXRpb24gZm9yIGFuIGV2ZW50IHNlZ21lbnQgYmVpbmcgcmVzaXplZCBmcm9tIGl0cyBlbmQKCWNvbXB1dGVFdmVudEVuZFJlc2l6ZTogZnVuY3Rpb24oc3RhcnRTcGFuLCBlbmRTcGFuLCBldmVudCkgewoJCXJldHVybiB0aGlzLmNvbXB1dGVFdmVudFJlc2l6ZSgnZW5kJywgc3RhcnRTcGFuLCBlbmRTcGFuLCBldmVudCk7Cgl9LAoKCgkvLyBSZXR1cm5zIG5ldyB6b25lZCBkYXRlIGluZm9ybWF0aW9uIGZvciBhbiBldmVudCBzZWdtZW50IGJlaW5nIHJlc2l6ZWQgZnJvbSBpdHMgc3RhcnQgT1IgZW5kCgkvLyBgdHlwZWAgaXMgZWl0aGVyICdzdGFydCcgb3IgJ2VuZCcuCgkvLyBET0VTIE5PVCBjb25zaWRlciBvdmVybGFwL2NvbnN0cmFpbnQuCgljb21wdXRlRXZlbnRSZXNpemU6IGZ1bmN0aW9uKHR5cGUsIHN0YXJ0U3BhbiwgZW5kU3BhbiwgZXZlbnQpIHsKCQl2YXIgY2FsZW5kYXIgPSB0aGlzLnZpZXcuY2FsZW5kYXI7CgkJdmFyIGRlbHRhID0gdGhpcy5kaWZmRGF0ZXMoZW5kU3Bhblt0eXBlXSwgc3RhcnRTcGFuW3R5cGVdKTsKCQl2YXIgcmVzaXplTG9jYXRpb247IC8vIHpvbmVkIGV2ZW50IGRhdGUgcHJvcGVydGllcwoJCXZhciBkZWZhdWx0RHVyYXRpb247CgoJCS8vIGJ1aWxkIG9yaWdpbmFsIHZhbHVlcyB0byB3b3JrIGZyb20sIGd1YXJhbnRlZWluZyBhIHN0YXJ0IGFuZCBlbmQKCQlyZXNpemVMb2NhdGlvbiA9IHsKCQkJc3RhcnQ6IGV2ZW50LnN0YXJ0LmNsb25lKCksCgkJCWVuZDogY2FsZW5kYXIuZ2V0RXZlbnRFbmQoZXZlbnQpLAoJCQlhbGxEYXk6IGV2ZW50LmFsbERheQoJCX07CgoJCS8vIGlmIGFuIGFsbC1kYXkgZXZlbnQgd2FzIGluIGEgdGltZWQgYXJlYSBhbmQgd2FzIHJlc2l6ZWQgdG8gYSB0aW1lLCBhZGp1c3Qgc3RhcnQvZW5kIHRvIGhhdmUgdGltZXMKCQlpZiAocmVzaXplTG9jYXRpb24uYWxsRGF5ICYmIGR1cmF0aW9uSGFzVGltZShkZWx0YSkpIHsKCQkJcmVzaXplTG9jYXRpb24uYWxsRGF5ID0gZmFsc2U7CgkJCWNhbGVuZGFyLm5vcm1hbGl6ZUV2ZW50VGltZXMocmVzaXplTG9jYXRpb24pOwoJCX0KCgkJcmVzaXplTG9jYXRpb25bdHlwZV0uYWRkKGRlbHRhKTsgLy8gYXBwbHkgZGVsdGEgdG8gc3RhcnQgb3IgZW5kCgoJCS8vIGlmIHRoZSBldmVudCB3YXMgY29tcHJlc3NlZCB0b28gc21hbGwsIGZpbmQgYSBuZXcgcmVhc29uYWJsZSBkdXJhdGlvbiBmb3IgaXQKCQlpZiAoIXJlc2l6ZUxvY2F0aW9uLnN0YXJ0LmlzQmVmb3JlKHJlc2l6ZUxvY2F0aW9uLmVuZCkpIHsKCgkJCWRlZmF1bHREdXJhdGlvbiA9CgkJCQl0aGlzLm1pblJlc2l6ZUR1cmF0aW9uIHx8IC8vIFRPRE86IGhhY2sKCQkJCShldmVudC5hbGxEYXkgPwoJCQkJCWNhbGVuZGFyLmRlZmF1bHRBbGxEYXlFdmVudER1cmF0aW9uIDoKCQkJCQljYWxlbmRhci5kZWZhdWx0VGltZWRFdmVudER1cmF0aW9uKTsKCgkJCWlmICh0eXBlID09ICdzdGFydCcpIHsgLy8gcmVzaXppbmcgdGhlIHN0YXJ0PwoJCQkJcmVzaXplTG9jYXRpb24uc3RhcnQgPSByZXNpemVMb2NhdGlvbi5lbmQuY2xvbmUoKS5zdWJ0cmFjdChkZWZhdWx0RHVyYXRpb24pOwoJCQl9CgkJCWVsc2UgeyAvLyByZXNpemluZyB0aGUgZW5kPwoJCQkJcmVzaXplTG9jYXRpb24uZW5kID0gcmVzaXplTG9jYXRpb24uc3RhcnQuY2xvbmUoKS5hZGQoZGVmYXVsdER1cmF0aW9uKTsKCQkJfQoJCX0KCgkJcmV0dXJuIHJlc2l6ZUxvY2F0aW9uOwoJfSwKCgoJLy8gUmVuZGVycyBhIHZpc3VhbCBpbmRpY2F0aW9uIG9mIGFuIGV2ZW50IGJlaW5nIHJlc2l6ZWQuCgkvLyBgcmFuZ2VgIGhhcyB0aGUgdXBkYXRlZCBkYXRlcyBvZiB0aGUgZXZlbnQuIGBzZWdgIGlzIHRoZSBvcmlnaW5hbCBzZWdtZW50IG9iamVjdCBpbnZvbHZlZCBpbiB0aGUgZHJhZy4KCS8vIE11c3QgcmV0dXJuIGVsZW1lbnRzIHVzZWQgZm9yIGFueSBtb2NrIGV2ZW50cy4KCXJlbmRlckV2ZW50UmVzaXplOiBmdW5jdGlvbihyYW5nZSwgc2VnKSB7CgkJLy8gc3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudAoJfSwKCgoJLy8gVW5yZW5kZXJzIGEgdmlzdWFsIGluZGljYXRpb24gb2YgYW4gZXZlbnQgYmVpbmcgcmVzaXplZC4KCXVucmVuZGVyRXZlbnRSZXNpemU6IGZ1bmN0aW9uKCkgewoJCS8vIHN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQKCX0sCgoKCS8qIFJlbmRlcmluZyBVdGlscwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gQ29tcHV0ZSB0aGUgdGV4dCB0aGF0IHNob3VsZCBiZSBkaXNwbGF5ZWQgb24gYW4gZXZlbnQncyBlbGVtZW50LgoJLy8gYHJhbmdlYCBjYW4gYmUgdGhlIEV2ZW50IG9iamVjdCBpdHNlbGYsIG9yIHNvbWV0aGluZyByYW5nZS1saWtlLCB3aXRoIGF0IGxlYXN0IGEgYHN0YXJ0YC4KCS8vIElmIGV2ZW50IHRpbWVzIGFyZSBkaXNhYmxlZCwgb3IgdGhlIGV2ZW50IGhhcyBubyB0aW1lLCB3aWxsIHJldHVybiBhIGJsYW5rIHN0cmluZy4KCS8vIElmIG5vdCBzcGVjaWZpZWQsIGZvcm1hdFN0ciB3aWxsIGRlZmF1bHQgdG8gdGhlIGV2ZW50VGltZUZvcm1hdCBzZXR0aW5nLAoJLy8gYW5kIGRpc3BsYXlFbmQgd2lsbCBkZWZhdWx0IHRvIHRoZSBkaXNwbGF5RXZlbnRFbmQgc2V0dGluZy4KCWdldEV2ZW50VGltZVRleHQ6IGZ1bmN0aW9uKHJhbmdlLCBmb3JtYXRTdHIsIGRpc3BsYXlFbmQpIHsKCgkJaWYgKGZvcm1hdFN0ciA9PSBudWxsKSB7CgkJCWZvcm1hdFN0ciA9IHRoaXMuZXZlbnRUaW1lRm9ybWF0OwoJCX0KCgkJaWYgKGRpc3BsYXlFbmQgPT0gbnVsbCkgewoJCQlkaXNwbGF5RW5kID0gdGhpcy5kaXNwbGF5RXZlbnRFbmQ7CgkJfQoKCQlpZiAodGhpcy5kaXNwbGF5RXZlbnRUaW1lICYmIHJhbmdlLnN0YXJ0Lmhhc1RpbWUoKSkgewoJCQlpZiAoZGlzcGxheUVuZCAmJiByYW5nZS5lbmQpIHsKCQkJCXJldHVybiB0aGlzLnZpZXcuZm9ybWF0UmFuZ2UocmFuZ2UsIGZvcm1hdFN0cik7CgkJCX0KCQkJZWxzZSB7CgkJCQlyZXR1cm4gcmFuZ2Uuc3RhcnQuZm9ybWF0KGZvcm1hdFN0cik7CgkJCX0KCQl9CgoJCXJldHVybiAnJzsKCX0sCgoKCS8vIEdlbmVyaWMgdXRpbGl0eSBmb3IgZ2VuZXJhdGluZyB0aGUgSFRNTCBjbGFzc05hbWVzIGZvciBhbiBldmVudCBzZWdtZW50J3MgZWxlbWVudAoJZ2V0U2VnQ2xhc3NlczogZnVuY3Rpb24oc2VnLCBpc0RyYWdnYWJsZSwgaXNSZXNpemFibGUpIHsKCQl2YXIgdmlldyA9IHRoaXMudmlldzsKCQl2YXIgY2xhc3NlcyA9IFsKCQkJJ2ZjLWV2ZW50JywKCQkJc2VnLmlzU3RhcnQgPyAnZmMtc3RhcnQnIDogJ2ZjLW5vdC1zdGFydCcsCgkJCXNlZy5pc0VuZCA/ICdmYy1lbmQnIDogJ2ZjLW5vdC1lbmQnCgkJXS5jb25jYXQodGhpcy5nZXRTZWdDdXN0b21DbGFzc2VzKHNlZykpOwoKCQlpZiAoaXNEcmFnZ2FibGUpIHsKCQkJY2xhc3Nlcy5wdXNoKCdmYy1kcmFnZ2FibGUnKTsKCQl9CgkJaWYgKGlzUmVzaXphYmxlKSB7CgkJCWNsYXNzZXMucHVzaCgnZmMtcmVzaXphYmxlJyk7CgkJfQoKCQkvLyBldmVudCBpcyBjdXJyZW50bHkgc2VsZWN0ZWQ/IGF0dGFjaCBhIGNsYXNzTmFtZS4KCQlpZiAodmlldy5pc0V2ZW50U2VsZWN0ZWQoc2VnLmV2ZW50KSkgewoJCQljbGFzc2VzLnB1c2goJ2ZjLXNlbGVjdGVkJyk7CgkJfQoKCQlyZXR1cm4gY2xhc3NlczsKCX0sCgoKCS8vIExpc3Qgb2YgY2xhc3NlcyB0aGF0IHdlcmUgZGVmaW5lZCBieSB0aGUgY2FsbGVyIG9mIHRoZSBBUEkgaW4gc29tZSB3YXkKCWdldFNlZ0N1c3RvbUNsYXNzZXM6IGZ1bmN0aW9uKHNlZykgewoJCXZhciBldmVudCA9IHNlZy5ldmVudDsKCgkJcmV0dXJuIFtdLmNvbmNhdCgKCQkJZXZlbnQuY2xhc3NOYW1lLCAvLyBndWFyYW50ZWVkIHRvIGJlIGFuIGFycmF5CgkJCWV2ZW50LnNvdXJjZSA/IGV2ZW50LnNvdXJjZS5jbGFzc05hbWUgOiBbXQoJCSk7Cgl9LAoKCgkvLyBVdGlsaXR5IGZvciBnZW5lcmF0aW5nIGV2ZW50IHNraW4tcmVsYXRlZCBDU1MgcHJvcGVydGllcwoJZ2V0U2VnU2tpbkNzczogZnVuY3Rpb24oc2VnKSB7CgkJcmV0dXJuIHsKCQkJJ2JhY2tncm91bmQtY29sb3InOiB0aGlzLmdldFNlZ0JhY2tncm91bmRDb2xvcihzZWcpLAoJCQknYm9yZGVyLWNvbG9yJzogdGhpcy5nZXRTZWdCb3JkZXJDb2xvcihzZWcpLAoJCQljb2xvcjogdGhpcy5nZXRTZWdUZXh0Q29sb3Ioc2VnKQoJCX07Cgl9LAoKCgkvLyBRdWVyaWVzIGZvciBjYWxsZXItc3BlY2lmaWVkIGNvbG9yLCB0aGVuIGZhbGxzIGJhY2sgdG8gZGVmYXVsdAoJZ2V0U2VnQmFja2dyb3VuZENvbG9yOiBmdW5jdGlvbihzZWcpIHsKCQlyZXR1cm4gc2VnLmV2ZW50LmJhY2tncm91bmRDb2xvciB8fAoJCQlzZWcuZXZlbnQuY29sb3IgfHwKCQkJdGhpcy5nZXRTZWdEZWZhdWx0QmFja2dyb3VuZENvbG9yKHNlZyk7Cgl9LAoKCglnZXRTZWdEZWZhdWx0QmFja2dyb3VuZENvbG9yOiBmdW5jdGlvbihzZWcpIHsKCQl2YXIgc291cmNlID0gc2VnLmV2ZW50LnNvdXJjZSB8fCB7fTsKCgkJcmV0dXJuIHNvdXJjZS5iYWNrZ3JvdW5kQ29sb3IgfHwKCQkJc291cmNlLmNvbG9yIHx8CgkJCXRoaXMudmlldy5vcHQoJ2V2ZW50QmFja2dyb3VuZENvbG9yJykgfHwKCQkJdGhpcy52aWV3Lm9wdCgnZXZlbnRDb2xvcicpOwoJfSwKCgoJLy8gUXVlcmllcyBmb3IgY2FsbGVyLXNwZWNpZmllZCBjb2xvciwgdGhlbiBmYWxscyBiYWNrIHRvIGRlZmF1bHQKCWdldFNlZ0JvcmRlckNvbG9yOiBmdW5jdGlvbihzZWcpIHsKCQlyZXR1cm4gc2VnLmV2ZW50LmJvcmRlckNvbG9yIHx8CgkJCXNlZy5ldmVudC5jb2xvciB8fAoJCQl0aGlzLmdldFNlZ0RlZmF1bHRCb3JkZXJDb2xvcihzZWcpOwoJfSwKCgoJZ2V0U2VnRGVmYXVsdEJvcmRlckNvbG9yOiBmdW5jdGlvbihzZWcpIHsKCQl2YXIgc291cmNlID0gc2VnLmV2ZW50LnNvdXJjZSB8fCB7fTsKCgkJcmV0dXJuIHNvdXJjZS5ib3JkZXJDb2xvciB8fAoJCQlzb3VyY2UuY29sb3IgfHwKCQkJdGhpcy52aWV3Lm9wdCgnZXZlbnRCb3JkZXJDb2xvcicpIHx8CgkJCXRoaXMudmlldy5vcHQoJ2V2ZW50Q29sb3InKTsKCX0sCgoKCS8vIFF1ZXJpZXMgZm9yIGNhbGxlci1zcGVjaWZpZWQgY29sb3IsIHRoZW4gZmFsbHMgYmFjayB0byBkZWZhdWx0CglnZXRTZWdUZXh0Q29sb3I6IGZ1bmN0aW9uKHNlZykgewoJCXJldHVybiBzZWcuZXZlbnQudGV4dENvbG9yIHx8CgkJCXRoaXMuZ2V0U2VnRGVmYXVsdFRleHRDb2xvcihzZWcpOwoJfSwKCgoJZ2V0U2VnRGVmYXVsdFRleHRDb2xvcjogZnVuY3Rpb24oc2VnKSB7CgkJdmFyIHNvdXJjZSA9IHNlZy5ldmVudC5zb3VyY2UgfHwge307CgoJCXJldHVybiBzb3VyY2UudGV4dENvbG9yIHx8CgkJCXRoaXMudmlldy5vcHQoJ2V2ZW50VGV4dENvbG9yJyk7Cgl9LAoKCgkvKiBFdmVudCBMb2NhdGlvbiBWYWxpZGF0aW9uCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCglpc0V2ZW50TG9jYXRpb25BbGxvd2VkOiBmdW5jdGlvbihldmVudExvY2F0aW9uLCBldmVudCkgewoJCWlmICh0aGlzLmlzRXZlbnRMb2NhdGlvbkluUmFuZ2UoZXZlbnRMb2NhdGlvbikpIHsKCQkJdmFyIGNhbGVuZGFyID0gdGhpcy52aWV3LmNhbGVuZGFyOwoJCQl2YXIgZXZlbnRTcGFucyA9IHRoaXMuZXZlbnRUb1NwYW5zKGV2ZW50TG9jYXRpb24pOwoJCQl2YXIgaTsKCgkJCWlmIChldmVudFNwYW5zLmxlbmd0aCkgewoJCQkJZm9yIChpID0gMDsgaSA8IGV2ZW50U3BhbnMubGVuZ3RoOyBpKyspIHsKCQkJCQlpZiAoIWNhbGVuZGFyLmlzRXZlbnRTcGFuQWxsb3dlZChldmVudFNwYW5zW2ldLCBldmVudCkpIHsKCQkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJCX0KCQkJCX0KCgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfQoJCX0KCgkJcmV0dXJuIGZhbHNlOwoJfSwKCgoJaXNFeHRlcm5hbExvY2F0aW9uQWxsb3dlZDogZnVuY3Rpb24oZXZlbnRMb2NhdGlvbiwgbWV0YVByb3BzKSB7IC8vIEZPUiB0aGUgZXh0ZXJuYWwgZWxlbWVudAoJCWlmICh0aGlzLmlzRXZlbnRMb2NhdGlvbkluUmFuZ2UoZXZlbnRMb2NhdGlvbikpIHsKCQkJdmFyIGNhbGVuZGFyID0gdGhpcy52aWV3LmNhbGVuZGFyOwoJCQl2YXIgZXZlbnRTcGFucyA9IHRoaXMuZXZlbnRUb1NwYW5zKGV2ZW50TG9jYXRpb24pOwoJCQl2YXIgaTsKCgkJCWlmIChldmVudFNwYW5zLmxlbmd0aCkgewoJCQkJZm9yIChpID0gMDsgaSA8IGV2ZW50U3BhbnMubGVuZ3RoOyBpKyspIHsKCQkJCQlpZiAoIWNhbGVuZGFyLmlzRXh0ZXJuYWxTcGFuQWxsb3dlZChldmVudFNwYW5zW2ldLCBldmVudExvY2F0aW9uLCBtZXRhUHJvcHMpKSB7CgkJCQkJCXJldHVybiBmYWxzZTsKCQkJCQl9CgkJCQl9CgoJCQkJcmV0dXJuIHRydWU7CgkJCX0KCQl9CgoJCXJldHVybiBmYWxzZTsKCX0sCgoKCWlzRXZlbnRMb2NhdGlvbkluUmFuZ2U6IGZ1bmN0aW9uKGV2ZW50TG9jYXRpb24pIHsKCQlyZXR1cm4gaXNSYW5nZVdpdGhpblJhbmdlKAoJCQl0aGlzLmV2ZW50VG9SYXdSYW5nZShldmVudExvY2F0aW9uKSwKCQkJdGhpcy52aWV3LnZhbGlkUmFuZ2UKCQkpOwoJfSwKCgoJLyogQ29udmVydGluZyBldmVudHMgLT4gZXZlbnRSYW5nZSAtPiBldmVudFNwYW4gLT4gZXZlbnRTZWdzCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBHZW5lcmF0ZXMgYW4gYXJyYXkgb2Ygc2VnbWVudHMgZm9yIHRoZSBnaXZlbiBzaW5nbGUgZXZlbnQKCS8vIENhbiBhY2NlcHQgYW4gZXZlbnQgImxvY2F0aW9uIiBhcyB3ZWxsICh3aGljaCBvbmx5IGhhcyBzdGFydC9lbmQgYW5kIG5vIGFsbERheSkKCWV2ZW50VG9TZWdzOiBmdW5jdGlvbihldmVudCkgewoJCXJldHVybiB0aGlzLmV2ZW50c1RvU2VncyhbIGV2ZW50IF0pOwoJfSwKCgoJLy8gR2VuZXJhdGVzIHNwYW5zIChhbHdheXMgdW56b25lZCkgZm9yIHRoZSBnaXZlbiBldmVudC4KCS8vIERvZXMgbm90IGRvIGFueSBpbnZlcnRpbmcgZm9yIGludmVyc2UtYmFja2dyb3VuZCBldmVudHMuCgkvLyBDYW4gYWNjZXB0IGFuIGV2ZW50ICJsb2NhdGlvbiIgYXMgd2VsbCAod2hpY2ggb25seSBoYXMgc3RhcnQvZW5kIGFuZCBubyBhbGxEYXkpCglldmVudFRvU3BhbnM6IGZ1bmN0aW9uKGV2ZW50KSB7CgkJdmFyIGV2ZW50UmFuZ2UgPSB0aGlzLmV2ZW50VG9SYW5nZShldmVudCk7IC8vIHsgc3RhcnQsIGVuZCwgaXNTdGFydCwgaXNFbmQgfQoKCQlpZiAoZXZlbnRSYW5nZSkgewoJCQlyZXR1cm4gdGhpcy5ldmVudFJhbmdlVG9TcGFucyhldmVudFJhbmdlLCBldmVudCk7CgkJfQoJCWVsc2UgeyAvLyBvdXQgb2YgdmlldydzIHZhbGlkIHJhbmdlCgkJCXJldHVybiBbXTsKCQl9Cgl9LAoKCgoJLy8gQ29udmVydHMgYW4gYXJyYXkgb2YgZXZlbnQgb2JqZWN0cyBpbnRvIGFuIGFycmF5IG9mIGV2ZW50IHNlZ21lbnQgb2JqZWN0cy4KCS8vIEEgY3VzdG9tIGBzZWdTbGljZUZ1bmNgIG1heSBiZSBnaXZlbiBmb3IgYXJiaXRyYXJpbHkgc2xpY2luZyB1cCBldmVudHMuCgkvLyBEb2Vzbid0IGd1YXJhbnRlZSBhbiBvcmRlciBmb3IgdGhlIHJlc3VsdGluZyBhcnJheS4KCWV2ZW50c1RvU2VnczogZnVuY3Rpb24oYWxsRXZlbnRzLCBzZWdTbGljZUZ1bmMpIHsKCQl2YXIgX3RoaXMgPSB0aGlzOwoJCXZhciBldmVudHNCeUlkID0gZ3JvdXBFdmVudHNCeUlkKGFsbEV2ZW50cyk7CgkJdmFyIHNlZ3MgPSBbXTsKCgkJJC5lYWNoKGV2ZW50c0J5SWQsIGZ1bmN0aW9uKGlkLCBldmVudHMpIHsKCQkJdmFyIHZpc2libGVFdmVudHMgPSBbXTsKCQkJdmFyIGV2ZW50UmFuZ2VzID0gW107CgkJCXZhciBldmVudFJhbmdlOyAvLyB7IHN0YXJ0LCBlbmQsIGlzU3RhcnQsIGlzRW5kIH0KCQkJdmFyIGk7CgoJCQlmb3IgKGkgPSAwOyBpIDwgZXZlbnRzLmxlbmd0aDsgaSsrKSB7CgkJCQlldmVudFJhbmdlID0gX3RoaXMuZXZlbnRUb1JhbmdlKGV2ZW50c1tpXSk7IC8vIG1pZ2h0IGJlIG51bGwgaWYgY29tcGxldGVseSBvdXQgb2YgcmFuZ2UKCgkJCQlpZiAoZXZlbnRSYW5nZSkgewoJCQkJCWV2ZW50UmFuZ2VzLnB1c2goZXZlbnRSYW5nZSk7CgkJCQkJdmlzaWJsZUV2ZW50cy5wdXNoKGV2ZW50c1tpXSk7CgkJCQl9CgkJCX0KCgkJCS8vIGludmVyc2UtYmFja2dyb3VuZCBldmVudHMgKHV0aWxpemUgb25seSB0aGUgZmlyc3QgZXZlbnQgaW4gY2FsY3VsYXRpb25zKQoJCQlpZiAoaXNJbnZlcnNlQmdFdmVudChldmVudHNbMF0pKSB7CgkJCQlldmVudFJhbmdlcyA9IF90aGlzLmludmVydFJhbmdlcyhldmVudFJhbmdlcyk7IC8vIHdpbGwgbG9zZSBpc1N0YXJ0L2lzRW5kCgoJCQkJZm9yIChpID0gMDsgaSA8IGV2ZW50UmFuZ2VzLmxlbmd0aDsgaSsrKSB7CgkJCQkJc2Vncy5wdXNoLmFwcGx5KHNlZ3MsIC8vIGFwcGVuZCB0bwoJCQkJCQlfdGhpcy5ldmVudFJhbmdlVG9TZWdzKGV2ZW50UmFuZ2VzW2ldLCBldmVudHNbMF0sIHNlZ1NsaWNlRnVuYykKCQkJCQkpOwoJCQkJfQoJCQl9CgkJCS8vIG5vcm1hbCBldmVudCByYW5nZXMKCQkJZWxzZSB7CgkJCQlmb3IgKGkgPSAwOyBpIDwgZXZlbnRSYW5nZXMubGVuZ3RoOyBpKyspIHsKCQkJCQlzZWdzLnB1c2guYXBwbHkoc2VncywgLy8gYXBwZW5kIHRvCgkJCQkJCV90aGlzLmV2ZW50UmFuZ2VUb1NlZ3MoZXZlbnRSYW5nZXNbaV0sIHZpc2libGVFdmVudHNbaV0sIHNlZ1NsaWNlRnVuYykKCQkJCQkpOwoJCQkJfQoJCQl9CgkJfSk7CgoJCXJldHVybiBzZWdzOwoJfSwKCgoJLy8gR2VuZXJhdGVzIHRoZSB1bnpvbmVkIHN0YXJ0L2VuZCBkYXRlcyBhbiBldmVudCBhcHBlYXJzIHRvIG9jY3VweQoJLy8gQ2FuIGFjY2VwdCBhbiBldmVudCAibG9jYXRpb24iIGFzIHdlbGwgKHdoaWNoIG9ubHkgaGFzIHN0YXJ0L2VuZCBhbmQgbm8gYWxsRGF5KQoJLy8gcmV0dXJucyB7IHN0YXJ0LCBlbmQsIGlzU3RhcnQsIGlzRW5kIH0KCS8vIElmIHRoZSBldmVudCBpcyBjb21wbGV0ZWx5IG91dHNpZGUgb2YgdGhlIGdyaWQncyB2YWxpZCByYW5nZSwgd2lsbCByZXR1cm4gdW5kZWZpbmVkLgoJZXZlbnRUb1JhbmdlOiBmdW5jdGlvbihldmVudCkgewoJCXJldHVybiB0aGlzLnJlZmluZVJhd0V2ZW50UmFuZ2UoCgkJCXRoaXMuZXZlbnRUb1Jhd1JhbmdlKGV2ZW50KQoJCSk7Cgl9LAoKCgkvLyBFbnN1cmVzIHRoZSBnaXZlbiByYW5nZSBpcyB3aXRoaW4gdGhlIHZpZXcncyBhY3RpdmVSYW5nZSBhbmQgaXMgY29ycmVjdGx5IGxvY2FsaXplZC4KCS8vIEFsd2F5cyByZXR1cm5zIGEgcmVzdWx0CglyZWZpbmVSYXdFdmVudFJhbmdlOiBmdW5jdGlvbihyYXdSYW5nZSkgewoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciBjYWxlbmRhciA9IHZpZXcuY2FsZW5kYXI7CgkJdmFyIHJhbmdlID0gaW50ZXJzZWN0UmFuZ2VzKHJhd1JhbmdlLCB2aWV3LmFjdGl2ZVJhbmdlKTsKCgkJaWYgKHJhbmdlKSB7IC8vIG90aGVyd2lzZSwgZXZlbnQgZG9lc24ndCBoYXZlIHZhbGlkIHJhbmdlCgoJCQkvLyBoYWNrOiBkeW5hbWljIGxvY2FsZSBjaGFuZ2UgZm9yZ2V0cyB0byB1cGF0ZSBzdG9yZWQgZXZlbnQgbG9jYWxlZAoJCQljYWxlbmRhci5sb2NhbGl6ZU1vbWVudChyYW5nZS5zdGFydCk7CgkJCWNhbGVuZGFyLmxvY2FsaXplTW9tZW50KHJhbmdlLmVuZCk7CgoJCQlyZXR1cm4gcmFuZ2U7CgkJfQoJfSwKCgoJLy8gbm90IGNvbnN0cmFpbmVkIHRvIHZhbGlkIGRhdGVzCgkvLyBub3QgZ2l2ZW4gbG9jYWxpemVNb21lbnQgaGFjawoJZXZlbnRUb1Jhd1JhbmdlOiBmdW5jdGlvbihldmVudCkgewoJCXZhciBjYWxlbmRhciA9IHRoaXMudmlldy5jYWxlbmRhcjsKCQl2YXIgc3RhcnQgPSBldmVudC5zdGFydC5jbG9uZSgpLnN0cmlwWm9uZSgpOwoJCXZhciBlbmQgPSAoCgkJCQlldmVudC5lbmQgPwoJCQkJCWV2ZW50LmVuZC5jbG9uZSgpIDoKCQkJCQkvLyBkZXJpdmUgdGhlIGVuZCBmcm9tIHRoZSBzdGFydCBhbmQgYWxsRGF5LiBjb21wdXRlIGFsbERheSBpZiBuZWNlc3NhcnkKCQkJCQljYWxlbmRhci5nZXREZWZhdWx0RXZlbnRFbmQoCgkJCQkJCWV2ZW50LmFsbERheSAhPSBudWxsID8KCQkJCQkJCWV2ZW50LmFsbERheSA6CgkJCQkJCQkhZXZlbnQuc3RhcnQuaGFzVGltZSgpLAoJCQkJCQlldmVudC5zdGFydAoJCQkJCSkKCQkJKS5zdHJpcFpvbmUoKTsKCgkJcmV0dXJuIHsgc3RhcnQ6IHN0YXJ0LCBlbmQ6IGVuZCB9OwoJfSwKCgoJLy8gR2l2ZW4gYW4gZXZlbnQncyByYW5nZSAodW56b25lZCBzdGFydC9lbmQpLCBhbmQgdGhlIGV2ZW50IGl0c2VsZiwKCS8vIHNsaWNlIGludG8gc2VnbWVudHMgKHVzaW5nIHRoZSBzZWdTbGljZUZ1bmMgZnVuY3Rpb24gaWYgc3BlY2lmaWVkKQoJLy8gZXZlbnRSYW5nZSAtIHsgc3RhcnQsIGVuZCwgaXNTdGFydCwgaXNFbmQgfQoJZXZlbnRSYW5nZVRvU2VnczogZnVuY3Rpb24oZXZlbnRSYW5nZSwgZXZlbnQsIHNlZ1NsaWNlRnVuYykgewoJCXZhciBldmVudFNwYW5zID0gdGhpcy5ldmVudFJhbmdlVG9TcGFucyhldmVudFJhbmdlLCBldmVudCk7CgkJdmFyIHNlZ3MgPSBbXTsKCQl2YXIgaTsKCgkJZm9yIChpID0gMDsgaSA8IGV2ZW50U3BhbnMubGVuZ3RoOyBpKyspIHsKCQkJc2Vncy5wdXNoLmFwcGx5KHNlZ3MsIC8vIGFwcGVuZCB0bwoJCQkJdGhpcy5ldmVudFNwYW5Ub1NlZ3MoZXZlbnRTcGFuc1tpXSwgZXZlbnQsIHNlZ1NsaWNlRnVuYykKCQkJKTsKCQl9CgoJCXJldHVybiBzZWdzOwoJfSwKCgoJLy8gR2l2ZW4gYW4gZXZlbnQncyB1bnpvbmVkIGRhdGUgcmFuZ2UsIHJldHVybiBhbiBhcnJheSBvZiBldmVudFNwYW4gb2JqZWN0cy4KCS8vIGV2ZW50U3BhbiAtIHsgc3RhcnQsIGVuZCwgaXNTdGFydCwgaXNFbmQsIG90aGVydGhpbmdzLi4uIH0KCS8vIFN1YmNsYXNzZXMgY2FuIG92ZXJyaWRlLgoJLy8gU3ViY2xhc3NlcyBhcmUgb2JsaWdhdGVkIHRvIGZvcndhcmQgZXZlbnRSYW5nZS5pc1N0YXJ0L2lzRW5kIHRvIHRoZSByZXN1bHRpbmcgc3BhbnMuCglldmVudFJhbmdlVG9TcGFuczogZnVuY3Rpb24oZXZlbnRSYW5nZSwgZXZlbnQpIHsKCQlyZXR1cm4gWyAkLmV4dGVuZCh7fSwgZXZlbnRSYW5nZSkgXTsgLy8gY29weSBpbnRvIGEgc2luZ2xlLWl0ZW0gYXJyYXkKCX0sCgoKCS8vIEdpdmVuIGFuIGV2ZW50J3Mgc3BhbiAodW56b25lZCBzdGFydC9lbmQgYW5kIG90aGVyIG1pc2MgZGF0YSksIGFuZCB0aGUgZXZlbnQgaXRzZWxmLAoJLy8gc2xpY2VzIGludG8gc2VnbWVudHMgYW5kIGF0dGFjaGVzIGV2ZW50LWRlcml2ZWQgcHJvcGVydGllcyB0byB0aGVtLgoJLy8gZXZlbnRTcGFuIC0geyBzdGFydCwgZW5kLCBpc1N0YXJ0LCBpc0VuZCwgb3RoZXJ0aGluZ3MuLi4gfQoJZXZlbnRTcGFuVG9TZWdzOiBmdW5jdGlvbihldmVudFNwYW4sIGV2ZW50LCBzZWdTbGljZUZ1bmMpIHsKCQl2YXIgc2VncyA9IHNlZ1NsaWNlRnVuYyA/IHNlZ1NsaWNlRnVuYyhldmVudFNwYW4pIDogdGhpcy5zcGFuVG9TZWdzKGV2ZW50U3Bhbik7CgkJdmFyIGksIHNlZzsKCgkJZm9yIChpID0gMDsgaSA8IHNlZ3MubGVuZ3RoOyBpKyspIHsKCQkJc2VnID0gc2Vnc1tpXTsKCgkJCS8vIHRoZSBldmVudFNwYW4ncyBpc1N0YXJ0L2lzRW5kIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB0aGUgc2VnJ3MKCQkJaWYgKCFldmVudFNwYW4uaXNTdGFydCkgewoJCQkJc2VnLmlzU3RhcnQgPSBmYWxzZTsKCQkJfQoJCQlpZiAoIWV2ZW50U3Bhbi5pc0VuZCkgewoJCQkJc2VnLmlzRW5kID0gZmFsc2U7CgkJCX0KCgkJCXNlZy5ldmVudCA9IGV2ZW50OwoJCQlzZWcuZXZlbnRTdGFydE1TID0gK2V2ZW50U3Bhbi5zdGFydDsgLy8gVE9ETzogbm90IHRoZSBiZXN0IG5hbWUgYWZ0ZXIgbWFraW5nIHNwYW5zIHVuem9uZWQKCQkJc2VnLmV2ZW50RHVyYXRpb25NUyA9IGV2ZW50U3Bhbi5lbmQgLSBldmVudFNwYW4uc3RhcnQ7CgkJfQoKCQlyZXR1cm4gc2VnczsKCX0sCgoKCS8vIFByb2R1Y2VzIGEgbmV3IGFycmF5IG9mIHJhbmdlIG9iamVjdHMgdGhhdCB3aWxsIGNvdmVyIGFsbCB0aGUgdGltZSBOT1QgY292ZXJlZCBieSB0aGUgZ2l2ZW4gcmFuZ2VzLgoJLy8gU0lERSBFRkZFQ1Q6IHdpbGwgbXV0YXRlIHRoZSBnaXZlbiBhcnJheSBhbmQgd2lsbCB1c2UgaXRzIGRhdGUgcmVmZXJlbmNlcy4KCWludmVydFJhbmdlczogZnVuY3Rpb24ocmFuZ2VzKSB7CgkJdmFyIHZpZXcgPSB0aGlzLnZpZXc7CgkJdmFyIHZpZXdTdGFydCA9IHZpZXcuYWN0aXZlUmFuZ2Uuc3RhcnQuY2xvbmUoKTsgLy8gbmVlZCBhIGNvcHkKCQl2YXIgdmlld0VuZCA9IHZpZXcuYWN0aXZlUmFuZ2UuZW5kLmNsb25lKCk7IC8vIG5lZWQgYSBjb3B5CgkJdmFyIGludmVyc2VSYW5nZXMgPSBbXTsKCQl2YXIgc3RhcnQgPSB2aWV3U3RhcnQ7IC8vIHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIHJhbmdlLiB0aGUgc3RhcnQgb2YgdGhlIG5ldyByYW5nZQoJCXZhciBpLCByYW5nZTsKCgkJLy8gcmFuZ2VzIG5lZWQgdG8gYmUgaW4gb3JkZXIuIHJlcXVpcmVkIGZvciBvdXIgZGF0ZS13YWxraW5nIGFsZ29yaXRobQoJCXJhbmdlcy5zb3J0KGNvbXBhcmVSYW5nZXMpOwoKCQlmb3IgKGkgPSAwOyBpIDwgcmFuZ2VzLmxlbmd0aDsgaSsrKSB7CgkJCXJhbmdlID0gcmFuZ2VzW2ldOwoKCQkJLy8gYWRkIHRoZSBzcGFuIG9mIHRpbWUgYmVmb3JlIHRoZSBldmVudCAoaWYgdGhlcmUgaXMgYW55KQoJCQlpZiAocmFuZ2Uuc3RhcnQgPiBzdGFydCkgeyAvLyBjb21wYXJlIG1pbGxpc2Vjb25kIHRpbWUgKHNraXAgYW55IGFtYmlnIGxvZ2ljKQoJCQkJaW52ZXJzZVJhbmdlcy5wdXNoKHsKCQkJCQlzdGFydDogc3RhcnQsCgkJCQkJZW5kOiByYW5nZS5zdGFydAoJCQkJfSk7CgkJCX0KCgkJCXN0YXJ0ID0gcmFuZ2UuZW5kOwoJCX0KCgkJLy8gYWRkIHRoZSBzcGFuIG9mIHRpbWUgYWZ0ZXIgdGhlIGxhc3QgZXZlbnQgKGlmIHRoZXJlIGlzIGFueSkKCQlpZiAoc3RhcnQgPCB2aWV3RW5kKSB7IC8vIGNvbXBhcmUgbWlsbGlzZWNvbmQgdGltZSAoc2tpcCBhbnkgYW1iaWcgbG9naWMpCgkJCWludmVyc2VSYW5nZXMucHVzaCh7CgkJCQlzdGFydDogc3RhcnQsCgkJCQllbmQ6IHZpZXdFbmQKCQkJfSk7CgkJfQoKCQlyZXR1cm4gaW52ZXJzZVJhbmdlczsKCX0sCgoKCXNvcnRFdmVudFNlZ3M6IGZ1bmN0aW9uKHNlZ3MpIHsKCQlzZWdzLnNvcnQocHJveHkodGhpcywgJ2NvbXBhcmVFdmVudFNlZ3MnKSk7Cgl9LAoKCgkvLyBBIGNtcCBmdW5jdGlvbiBmb3IgZGV0ZXJtaW5pbmcgd2hpY2ggc2VnbWVudHMgc2hvdWxkIHRha2UgdmlzdWFsIHByaW9yaXR5Cgljb21wYXJlRXZlbnRTZWdzOiBmdW5jdGlvbihzZWcxLCBzZWcyKSB7CgkJcmV0dXJuIHNlZzEuZXZlbnRTdGFydE1TIC0gc2VnMi5ldmVudFN0YXJ0TVMgfHwgLy8gZWFybGllciBldmVudHMgZ28gZmlyc3QKCQkJc2VnMi5ldmVudER1cmF0aW9uTVMgLSBzZWcxLmV2ZW50RHVyYXRpb25NUyB8fCAvLyB0aWU/IGxvbmdlciBldmVudHMgZ28gZmlyc3QKCQkJc2VnMi5ldmVudC5hbGxEYXkgLSBzZWcxLmV2ZW50LmFsbERheSB8fCAvLyB0aWU/IHB1dCBhbGwtZGF5IGV2ZW50cyBmaXJzdCAoYm9vbGVhbnMgY2FzdCB0byAwLzEpCgkJCWNvbXBhcmVCeUZpZWxkU3BlY3Moc2VnMS5ldmVudCwgc2VnMi5ldmVudCwgdGhpcy52aWV3LmV2ZW50T3JkZXJTcGVjcyk7Cgl9Cgp9KTsKCgovKiBVdGlsaXRpZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKZnVuY3Rpb24gcGx1Y2tFdmVudERhdGVQcm9wcyhldmVudCkgewoJcmV0dXJuIHsKCQlzdGFydDogZXZlbnQuc3RhcnQuY2xvbmUoKSwKCQllbmQ6IGV2ZW50LmVuZCA/IGV2ZW50LmVuZC5jbG9uZSgpIDogbnVsbCwKCQlhbGxEYXk6IGV2ZW50LmFsbERheSAvLyBrZWVwIGl0IHRoZSBzYW1lCgl9Owp9CkZDLnBsdWNrRXZlbnREYXRlUHJvcHMgPSBwbHVja0V2ZW50RGF0ZVByb3BzOwoKCmZ1bmN0aW9uIGlzQmdFdmVudChldmVudCkgeyAvLyByZXR1cm5zIHRydWUgaWYgYmFja2dyb3VuZCBPUiBpbnZlcnNlLWJhY2tncm91bmQKCXZhciByZW5kZXJpbmcgPSBnZXRFdmVudFJlbmRlcmluZyhldmVudCk7CglyZXR1cm4gcmVuZGVyaW5nID09PSAnYmFja2dyb3VuZCcgfHwgcmVuZGVyaW5nID09PSAnaW52ZXJzZS1iYWNrZ3JvdW5kJzsKfQpGQy5pc0JnRXZlbnQgPSBpc0JnRXZlbnQ7IC8vIGV4cG9ydAoKCmZ1bmN0aW9uIGlzSW52ZXJzZUJnRXZlbnQoZXZlbnQpIHsKCXJldHVybiBnZXRFdmVudFJlbmRlcmluZyhldmVudCkgPT09ICdpbnZlcnNlLWJhY2tncm91bmQnOwp9CgoKZnVuY3Rpb24gZ2V0RXZlbnRSZW5kZXJpbmcoZXZlbnQpIHsKCXJldHVybiBmaXJzdERlZmluZWQoKGV2ZW50LnNvdXJjZSB8fCB7fSkucmVuZGVyaW5nLCBldmVudC5yZW5kZXJpbmcpOwp9CgoKZnVuY3Rpb24gZ3JvdXBFdmVudHNCeUlkKGV2ZW50cykgewoJdmFyIGV2ZW50c0J5SWQgPSB7fTsKCXZhciBpLCBldmVudDsKCglmb3IgKGkgPSAwOyBpIDwgZXZlbnRzLmxlbmd0aDsgaSsrKSB7CgkJZXZlbnQgPSBldmVudHNbaV07CgkJKGV2ZW50c0J5SWRbZXZlbnQuX2lkXSB8fCAoZXZlbnRzQnlJZFtldmVudC5faWRdID0gW10pKS5wdXNoKGV2ZW50KTsKCX0KCglyZXR1cm4gZXZlbnRzQnlJZDsKfQoKCi8vIEEgY21wIGZ1bmN0aW9uIGZvciBkZXRlcm1pbmluZyB3aGljaCBub24taW52ZXJ0ZWQgInJhbmdlcyIgKHNlZSBhYm92ZSkgaGFwcGVuIGVhcmxpZXIKZnVuY3Rpb24gY29tcGFyZVJhbmdlcyhyYW5nZTEsIHJhbmdlMikgewoJcmV0dXJuIHJhbmdlMS5zdGFydCAtIHJhbmdlMi5zdGFydDsgLy8gZWFybGllciByYW5nZXMgZ28gZmlyc3QKfQoKCi8qIEV4dGVybmFsLURyYWdnaW5nLUVsZW1lbnQgRGF0YQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi8vIFJlcXVpcmUgYWxsIEhUTUw1IGRhdGEtKiBhdHRyaWJ1dGVzIHVzZWQgYnkgRnVsbENhbGVuZGFyIHRvIGhhdmUgdGhpcyBwcmVmaXguCi8vIEEgdmFsdWUgb2YgJycgd2lsbCBxdWVyeSBhdHRyaWJ1dGVzIGxpa2UgZGF0YS1ldmVudC4gQSB2YWx1ZSBvZiAnZmMnIHdpbGwgcXVlcnkgYXR0cmlidXRlcyBsaWtlIGRhdGEtZmMtZXZlbnQuCkZDLmRhdGFBdHRyUHJlZml4ID0gJyc7CgovLyBHaXZlbiBhIGpRdWVyeSBlbGVtZW50IHRoYXQgbWlnaHQgcmVwcmVzZW50IGEgZHJhZ2dlZCBGdWxsQ2FsZW5kYXIgZXZlbnQsIHJldHVybnMgYW4gaW50ZXJtZWRpYXRlIGRhdGEgc3RydWN0dXJlCi8vIHRvIGJlIHVzZWQgZm9yIEV2ZW50IE9iamVjdCBjcmVhdGlvbi4KLy8gQSBkZWZpbmVkIGAuZXZlbnRQcm9wc2AsIGV2ZW4gd2hlbiBlbXB0eSwgaW5kaWNhdGVzIHRoYXQgYW4gZXZlbnQgc2hvdWxkIGJlIGNyZWF0ZWQuCmZ1bmN0aW9uIGdldERyYWdnZWRFbE1ldGEoZWwpIHsKCXZhciBwcmVmaXggPSBGQy5kYXRhQXR0clByZWZpeDsKCXZhciBldmVudFByb3BzOyAvLyBwcm9wZXJ0aWVzIGZvciBjcmVhdGluZyB0aGUgZXZlbnQsIG5vdCByZWxhdGVkIHRvIGRhdGUvdGltZQoJdmFyIHN0YXJ0VGltZTsgLy8gYSBEdXJhdGlvbgoJdmFyIGR1cmF0aW9uOwoJdmFyIHN0aWNrOwoKCWlmIChwcmVmaXgpIHsgcHJlZml4ICs9ICctJzsgfQoJZXZlbnRQcm9wcyA9IGVsLmRhdGEocHJlZml4ICsgJ2V2ZW50JykgfHwgbnVsbDsKCglpZiAoZXZlbnRQcm9wcykgewoJCWlmICh0eXBlb2YgZXZlbnRQcm9wcyA9PT0gJ29iamVjdCcpIHsKCQkJZXZlbnRQcm9wcyA9ICQuZXh0ZW5kKHt9LCBldmVudFByb3BzKTsgLy8gbWFrZSBhIGNvcHkKCQl9CgkJZWxzZSB7IC8vIHNvbWV0aGluZyBsaWtlIDEgb3IgdHJ1ZS4gc3RpbGwgc2lnbmFsIGV2ZW50IGNyZWF0aW9uCgkJCWV2ZW50UHJvcHMgPSB7fTsKCQl9CgoJCS8vIHBsdWNrIHNwZWNpYWwtY2FzZWQgZGF0ZS90aW1lIHByb3BlcnRpZXMKCQlzdGFydFRpbWUgPSBldmVudFByb3BzLnN0YXJ0OwoJCWlmIChzdGFydFRpbWUgPT0gbnVsbCkgeyBzdGFydFRpbWUgPSBldmVudFByb3BzLnRpbWU7IH0gLy8gYWNjZXB0ICd0aW1lJyBhcyB3ZWxsCgkJZHVyYXRpb24gPSBldmVudFByb3BzLmR1cmF0aW9uOwoJCXN0aWNrID0gZXZlbnRQcm9wcy5zdGljazsKCQlkZWxldGUgZXZlbnRQcm9wcy5zdGFydDsKCQlkZWxldGUgZXZlbnRQcm9wcy50aW1lOwoJCWRlbGV0ZSBldmVudFByb3BzLmR1cmF0aW9uOwoJCWRlbGV0ZSBldmVudFByb3BzLnN0aWNrOwoJfQoKCS8vIGZhbGxiYWNrIHRvIHN0YW5kYWxvbmUgYXR0cmlidXRlIHZhbHVlcyBmb3IgZWFjaCBvZiB0aGUgZGF0ZS90aW1lIHByb3BlcnRpZXMKCWlmIChzdGFydFRpbWUgPT0gbnVsbCkgeyBzdGFydFRpbWUgPSBlbC5kYXRhKHByZWZpeCArICdzdGFydCcpOyB9CglpZiAoc3RhcnRUaW1lID09IG51bGwpIHsgc3RhcnRUaW1lID0gZWwuZGF0YShwcmVmaXggKyAndGltZScpOyB9IC8vIGFjY2VwdCAndGltZScgYXMgd2VsbAoJaWYgKGR1cmF0aW9uID09IG51bGwpIHsgZHVyYXRpb24gPSBlbC5kYXRhKHByZWZpeCArICdkdXJhdGlvbicpOyB9CglpZiAoc3RpY2sgPT0gbnVsbCkgeyBzdGljayA9IGVsLmRhdGEocHJlZml4ICsgJ3N0aWNrJyk7IH0KCgkvLyBtYXNzYWdlIGludG8gY29ycmVjdCBkYXRhIHR5cGVzCglzdGFydFRpbWUgPSBzdGFydFRpbWUgIT0gbnVsbCA/IG1vbWVudC5kdXJhdGlvbihzdGFydFRpbWUpIDogbnVsbDsKCWR1cmF0aW9uID0gZHVyYXRpb24gIT0gbnVsbCA/IG1vbWVudC5kdXJhdGlvbihkdXJhdGlvbikgOiBudWxsOwoJc3RpY2sgPSBCb29sZWFuKHN0aWNrKTsKCglyZXR1cm4geyBldmVudFByb3BzOiBldmVudFByb3BzLCBzdGFydFRpbWU6IHN0YXJ0VGltZSwgZHVyYXRpb246IGR1cmF0aW9uLCBzdGljazogc3RpY2sgfTsKfQoKCjs7CgovKgpBIHNldCBvZiByZW5kZXJpbmcgYW5kIGRhdGUtcmVsYXRlZCBtZXRob2RzIGZvciBhIHZpc3VhbCBjb21wb25lbnQgY29tcHJpc2VkIG9mIG9uZSBvciBtb3JlIHJvd3Mgb2YgZGF5IGNvbHVtbnMuClByZXJlcXVpc2l0ZTogdGhlIG9iamVjdCBiZWluZyBtaXhlZCBpbnRvIG5lZWRzIHRvIGJlIGEgKkdyaWQqCiovCnZhciBEYXlUYWJsZU1peGluID0gRkMuRGF5VGFibGVNaXhpbiA9IHsKCglicmVha09uV2Vla3M6IGZhbHNlLCAvLyBzaG91bGQgY3JlYXRlIGEgbmV3IHJvdyBmb3IgZWFjaCB3ZWVrPwoJZGF5RGF0ZXM6IG51bGwsIC8vIHdob2xlLWRheSBkYXRlcyBmb3IgZWFjaCBjb2x1bW4uIGxlZnQgdG8gcmlnaHQKCWRheUluZGljZXM6IG51bGwsIC8vIGZvciBlYWNoIGRheSBmcm9tIHN0YXJ0LCB0aGUgb2Zmc2V0CglkYXlzUGVyUm93OiBudWxsLAoJcm93Q250OiBudWxsLAoJY29sQ250OiBudWxsLAoJY29sSGVhZEZvcm1hdDogbnVsbCwKCgoJLy8gUG9wdWxhdGVzIGludGVybmFsIHZhcmlhYmxlcyB1c2VkIGZvciBkYXRlIGNhbGN1bGF0aW9uIGFuZCByZW5kZXJpbmcKCXVwZGF0ZURheVRhYmxlOiBmdW5jdGlvbigpIHsKCQl2YXIgdmlldyA9IHRoaXMudmlldzsKCQl2YXIgZGF0ZSA9IHRoaXMuc3RhcnQuY2xvbmUoKTsKCQl2YXIgZGF5SW5kZXggPSAtMTsKCQl2YXIgZGF5SW5kaWNlcyA9IFtdOwoJCXZhciBkYXlEYXRlcyA9IFtdOwoJCXZhciBkYXlzUGVyUm93OwoJCXZhciBmaXJzdERheTsKCQl2YXIgcm93Q250OwoKCQl3aGlsZSAoZGF0ZS5pc0JlZm9yZSh0aGlzLmVuZCkpIHsgLy8gbG9vcCBlYWNoIGRheSBmcm9tIHN0YXJ0IHRvIGVuZAoJCQlpZiAodmlldy5pc0hpZGRlbkRheShkYXRlKSkgewoJCQkJZGF5SW5kaWNlcy5wdXNoKGRheUluZGV4ICsgMC41KTsgLy8gbWFyayB0aGF0IGl0J3MgYmV0d2VlbiBpbmRpY2VzCgkJCX0KCQkJZWxzZSB7CgkJCQlkYXlJbmRleCsrOwoJCQkJZGF5SW5kaWNlcy5wdXNoKGRheUluZGV4KTsKCQkJCWRheURhdGVzLnB1c2goZGF0ZS5jbG9uZSgpKTsKCQkJfQoJCQlkYXRlLmFkZCgxLCAnZGF5cycpOwoJCX0KCgkJaWYgKHRoaXMuYnJlYWtPbldlZWtzKSB7CgkJCS8vIGNvdW50IGNvbHVtbnMgdW50aWwgdGhlIGRheS1vZi13ZWVrIHJlcGVhdHMKCQkJZmlyc3REYXkgPSBkYXlEYXRlc1swXS5kYXkoKTsKCQkJZm9yIChkYXlzUGVyUm93ID0gMTsgZGF5c1BlclJvdyA8IGRheURhdGVzLmxlbmd0aDsgZGF5c1BlclJvdysrKSB7CgkJCQlpZiAoZGF5RGF0ZXNbZGF5c1BlclJvd10uZGF5KCkgPT0gZmlyc3REYXkpIHsKCQkJCQlicmVhazsKCQkJCX0KCQkJfQoJCQlyb3dDbnQgPSBNYXRoLmNlaWwoZGF5RGF0ZXMubGVuZ3RoIC8gZGF5c1BlclJvdyk7CgkJfQoJCWVsc2UgewoJCQlyb3dDbnQgPSAxOwoJCQlkYXlzUGVyUm93ID0gZGF5RGF0ZXMubGVuZ3RoOwoJCX0KCgkJdGhpcy5kYXlEYXRlcyA9IGRheURhdGVzOwoJCXRoaXMuZGF5SW5kaWNlcyA9IGRheUluZGljZXM7CgkJdGhpcy5kYXlzUGVyUm93ID0gZGF5c1BlclJvdzsKCQl0aGlzLnJvd0NudCA9IHJvd0NudDsKCgkJdGhpcy51cGRhdGVEYXlUYWJsZUNvbHMoKTsKCX0sCgoKCS8vIENvbXB1dGVzIGFuZCBhc3NpZ25lZCB0aGUgY29sQ250IHByb3BlcnR5IGFuZCB1cGRhdGVzIGFueSBvcHRpb25zIHRoYXQgbWF5IGJlIGNvbXB1dGVkIGZyb20gaXQKCXVwZGF0ZURheVRhYmxlQ29sczogZnVuY3Rpb24oKSB7CgkJdGhpcy5jb2xDbnQgPSB0aGlzLmNvbXB1dGVDb2xDbnQoKTsKCQl0aGlzLmNvbEhlYWRGb3JtYXQgPSB0aGlzLnZpZXcub3B0KCdjb2x1bW5Gb3JtYXQnKSB8fCB0aGlzLmNvbXB1dGVDb2xIZWFkRm9ybWF0KCk7Cgl9LAoKCgkvLyBEZXRlcm1pbmVzIGhvdyBtYW55IGNvbHVtbnMgdGhlcmUgc2hvdWxkIGJlIGluIHRoZSB0YWJsZQoJY29tcHV0ZUNvbENudDogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHRoaXMuZGF5c1BlclJvdzsKCX0sCgoKCS8vIENvbXB1dGVzIHRoZSBhbWJpZ3VvdXNseS10aW1lZCBtb21lbnQgZm9yIHRoZSBnaXZlbiBjZWxsCglnZXRDZWxsRGF0ZTogZnVuY3Rpb24ocm93LCBjb2wpIHsKCQlyZXR1cm4gdGhpcy5kYXlEYXRlc1sKCQkJCXRoaXMuZ2V0Q2VsbERheUluZGV4KHJvdywgY29sKQoJCQldLmNsb25lKCk7Cgl9LAoKCgkvLyBDb21wdXRlcyB0aGUgYW1iaWd1b3VzbHktdGltZWQgZGF0ZSByYW5nZSBmb3IgdGhlIGdpdmVuIGNlbGwKCWdldENlbGxSYW5nZTogZnVuY3Rpb24ocm93LCBjb2wpIHsKCQl2YXIgc3RhcnQgPSB0aGlzLmdldENlbGxEYXRlKHJvdywgY29sKTsKCQl2YXIgZW5kID0gc3RhcnQuY2xvbmUoKS5hZGQoMSwgJ2RheXMnKTsKCgkJcmV0dXJuIHsgc3RhcnQ6IHN0YXJ0LCBlbmQ6IGVuZCB9OwoJfSwKCgoJLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGRheSBjZWxscywgY2hyb25vbG9naWNhbGx5LCBmcm9tIHRoZSBmaXJzdCBvZiB0aGUgZ3JpZCAoMC1iYXNlZCkKCWdldENlbGxEYXlJbmRleDogZnVuY3Rpb24ocm93LCBjb2wpIHsKCQlyZXR1cm4gcm93ICogdGhpcy5kYXlzUGVyUm93ICsgdGhpcy5nZXRDb2xEYXlJbmRleChjb2wpOwoJfSwKCgoJLy8gUmV0dXJucyB0aGUgbnVtbmVyIG9mIGRheSBjZWxscywgY2hyb25vbG9naWNhbGx5LCBmcm9tIHRoZSBmaXJzdCBjZWxsIGluICphbnkgZ2l2ZW4gcm93KgoJZ2V0Q29sRGF5SW5kZXg6IGZ1bmN0aW9uKGNvbCkgewoJCWlmICh0aGlzLmlzUlRMKSB7CgkJCXJldHVybiB0aGlzLmNvbENudCAtIDEgLSBjb2w7CgkJfQoJCWVsc2UgewoJCQlyZXR1cm4gY29sOwoJCX0KCX0sCgoKCS8vIEdpdmVuIGEgZGF0ZSwgcmV0dXJucyBpdHMgY2hyb25vbG9jaWFsIGNlbGwtaW5kZXggZnJvbSB0aGUgZmlyc3QgY2VsbCBvZiB0aGUgZ3JpZC4KCS8vIElmIHRoZSBkYXRlIGxpZXMgYmV0d2VlbiBjZWxscyAoYmVjYXVzZSBvZiBoaWRkZW5EYXlzKSwgcmV0dXJucyBhIGZsb2F0aW5nLXBvaW50IHZhbHVlIGJldHdlZW4gb2Zmc2V0cy4KCS8vIElmIGJlZm9yZSB0aGUgZmlyc3Qgb2Zmc2V0LCByZXR1cm5zIGEgbmVnYXRpdmUgbnVtYmVyLgoJLy8gSWYgYWZ0ZXIgdGhlIGxhc3Qgb2Zmc2V0LCByZXR1cm5zIGFuIG9mZnNldCBwYXN0IHRoZSBsYXN0IGNlbGwgb2Zmc2V0LgoJLy8gT25seSB3b3JrcyBmb3IgKnN0YXJ0KiBkYXRlcyBvZiBjZWxscy4gV2lsbCBub3Qgd29yayBmb3IgZXhjbHVzaXZlIGVuZCBkYXRlcyBmb3IgY2VsbHMuCglnZXREYXRlRGF5SW5kZXg6IGZ1bmN0aW9uKGRhdGUpIHsKCQl2YXIgZGF5SW5kaWNlcyA9IHRoaXMuZGF5SW5kaWNlczsKCQl2YXIgZGF5T2Zmc2V0ID0gZGF0ZS5kaWZmKHRoaXMuc3RhcnQsICdkYXlzJyk7CgoJCWlmIChkYXlPZmZzZXQgPCAwKSB7CgkJCXJldHVybiBkYXlJbmRpY2VzWzBdIC0gMTsKCQl9CgkJZWxzZSBpZiAoZGF5T2Zmc2V0ID49IGRheUluZGljZXMubGVuZ3RoKSB7CgkJCXJldHVybiBkYXlJbmRpY2VzW2RheUluZGljZXMubGVuZ3RoIC0gMV0gKyAxOwoJCX0KCQllbHNlIHsKCQkJcmV0dXJuIGRheUluZGljZXNbZGF5T2Zmc2V0XTsKCQl9Cgl9LAoKCgkvKiBPcHRpb25zCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBDb21wdXRlcyBhIGRlZmF1bHQgY29sdW1uIGhlYWRlciBmb3JtYXR0aW5nIHN0cmluZyBpZiBgY29sRm9ybWF0YCBpcyBub3QgZXhwbGljaXRseSBkZWZpbmVkCgljb21wdXRlQ29sSGVhZEZvcm1hdDogZnVuY3Rpb24oKSB7CgkJLy8gaWYgbW9yZSB0aGFuIG9uZSB3ZWVrIHJvdywgb3IgaWYgdGhlcmUgYXJlIGEgbG90IG9mIGNvbHVtbnMgd2l0aCBub3QgbXVjaCBzcGFjZSwKCQkvLyBwdXQganVzdCB0aGUgZGF5IG51bWJlcnMgd2lsbCBiZSBpbiBlYWNoIGNlbGwKCQlpZiAodGhpcy5yb3dDbnQgPiAxIHx8IHRoaXMuY29sQ250ID4gMTApIHsKCQkJcmV0dXJuICdkZGQnOyAvLyAiU2F0IgoJCX0KCQkvLyBtdWx0aXBsZSBkYXlzLCBzbyBmdWxsIHNpbmdsZSBkYXRlIHN0cmluZyBXT04nVCBiZSBpbiB0aXRsZSB0ZXh0CgkJZWxzZSBpZiAodGhpcy5jb2xDbnQgPiAxKSB7CgkJCXJldHVybiB0aGlzLnZpZXcub3B0KCdkYXlPZk1vbnRoRm9ybWF0Jyk7IC8vICJTYXQgMTIvMTAiCgkJfQoJCS8vIHNpbmdsZSBkYXksIHNvIGZ1bGwgc2luZ2xlIGRhdGUgc3RyaW5nIHdpbGwgcHJvYmFibHkgYmUgaW4gdGl0bGUgdGV4dAoJCWVsc2UgewoJCQlyZXR1cm4gJ2RkZGQnOyAvLyAiU2F0dXJkYXkiCgkJfQoJfSwKCgoJLyogU2xpY2luZwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gU2xpY2VzIHVwIGEgZGF0ZSByYW5nZSBpbnRvIGEgc2VnbWVudCBmb3IgZXZlcnkgd2Vlay1yb3cgaXQgaW50ZXJzZWN0cyB3aXRoCglzbGljZVJhbmdlQnlSb3c6IGZ1bmN0aW9uKHJhbmdlKSB7CgkJdmFyIGRheXNQZXJSb3cgPSB0aGlzLmRheXNQZXJSb3c7CgkJdmFyIG5vcm1hbFJhbmdlID0gdGhpcy52aWV3LmNvbXB1dGVEYXlSYW5nZShyYW5nZSk7IC8vIG1ha2Ugd2hvbGUtZGF5IHJhbmdlLCBjb25zaWRlcmluZyBuZXh0RGF5VGhyZXNob2xkCgkJdmFyIHJhbmdlRmlyc3QgPSB0aGlzLmdldERhdGVEYXlJbmRleChub3JtYWxSYW5nZS5zdGFydCk7IC8vIGluY2x1c2l2ZSBmaXJzdCBpbmRleAoJCXZhciByYW5nZUxhc3QgPSB0aGlzLmdldERhdGVEYXlJbmRleChub3JtYWxSYW5nZS5lbmQuY2xvbmUoKS5zdWJ0cmFjdCgxLCAnZGF5cycpKTsgLy8gaW5jbHVzaXZlIGxhc3QgaW5kZXgKCQl2YXIgc2VncyA9IFtdOwoJCXZhciByb3c7CgkJdmFyIHJvd0ZpcnN0LCByb3dMYXN0OyAvLyBpbmNsdXNpdmUgZGF5LWluZGV4IHJhbmdlIGZvciBjdXJyZW50IHJvdwoJCXZhciBzZWdGaXJzdCwgc2VnTGFzdDsgLy8gaW5jbHVzaXZlIGRheS1pbmRleCByYW5nZSBmb3Igc2VnbWVudAoKCQlmb3IgKHJvdyA9IDA7IHJvdyA8IHRoaXMucm93Q250OyByb3crKykgewoJCQlyb3dGaXJzdCA9IHJvdyAqIGRheXNQZXJSb3c7CgkJCXJvd0xhc3QgPSByb3dGaXJzdCArIGRheXNQZXJSb3cgLSAxOwoKCQkJLy8gaW50ZXJzZWN0IHNlZ21lbnQncyBvZmZzZXQgcmFuZ2Ugd2l0aCB0aGUgcm93J3MKCQkJc2VnRmlyc3QgPSBNYXRoLm1heChyYW5nZUZpcnN0LCByb3dGaXJzdCk7CgkJCXNlZ0xhc3QgPSBNYXRoLm1pbihyYW5nZUxhc3QsIHJvd0xhc3QpOwoKCQkJLy8gZGVhbCB3aXRoIGluLWJldHdlZW4gaW5kaWNlcwoJCQlzZWdGaXJzdCA9IE1hdGguY2VpbChzZWdGaXJzdCk7IC8vIGluLWJldHdlZW4gc3RhcnRzIHJvdW5kIHRvIG5leHQgY2VsbAoJCQlzZWdMYXN0ID0gTWF0aC5mbG9vcihzZWdMYXN0KTsgLy8gaW4tYmV0d2VlbiBlbmRzIHJvdW5kIHRvIHByZXYgY2VsbAoKCQkJaWYgKHNlZ0ZpcnN0IDw9IHNlZ0xhc3QpIHsgLy8gd2FzIHRoZXJlIGFueSBpbnRlcnNlY3Rpb24gd2l0aCB0aGUgY3VycmVudCByb3c/CgkJCQlzZWdzLnB1c2goewoJCQkJCXJvdzogcm93LAoKCQkJCQkvLyBub3JtYWxpemUgdG8gc3RhcnQgb2Ygcm93CgkJCQkJZmlyc3RSb3dEYXlJbmRleDogc2VnRmlyc3QgLSByb3dGaXJzdCwKCQkJCQlsYXN0Um93RGF5SW5kZXg6IHNlZ0xhc3QgLSByb3dGaXJzdCwKCgkJCQkJLy8gbXVzdCBiZSBtYXRjaGluZyBpbnRlZ2VycyB0byBiZSB0aGUgc2VnbWVudCdzIHN0YXJ0L2VuZAoJCQkJCWlzU3RhcnQ6IHNlZ0ZpcnN0ID09PSByYW5nZUZpcnN0LAoJCQkJCWlzRW5kOiBzZWdMYXN0ID09PSByYW5nZUxhc3QKCQkJCX0pOwoJCQl9CgkJfQoKCQlyZXR1cm4gc2VnczsKCX0sCgoKCS8vIFNsaWNlcyB1cCBhIGRhdGUgcmFuZ2UgaW50byBhIHNlZ21lbnQgZm9yIGV2ZXJ5IGRheS1jZWxsIGl0IGludGVyc2VjdHMgd2l0aC4KCS8vIFRPRE86IG1ha2UgbW9yZSBEUlkgd2l0aCBzbGljZVJhbmdlQnlSb3cgc29tZWhvdy4KCXNsaWNlUmFuZ2VCeURheTogZnVuY3Rpb24ocmFuZ2UpIHsKCQl2YXIgZGF5c1BlclJvdyA9IHRoaXMuZGF5c1BlclJvdzsKCQl2YXIgbm9ybWFsUmFuZ2UgPSB0aGlzLnZpZXcuY29tcHV0ZURheVJhbmdlKHJhbmdlKTsgLy8gbWFrZSB3aG9sZS1kYXkgcmFuZ2UsIGNvbnNpZGVyaW5nIG5leHREYXlUaHJlc2hvbGQKCQl2YXIgcmFuZ2VGaXJzdCA9IHRoaXMuZ2V0RGF0ZURheUluZGV4KG5vcm1hbFJhbmdlLnN0YXJ0KTsgLy8gaW5jbHVzaXZlIGZpcnN0IGluZGV4CgkJdmFyIHJhbmdlTGFzdCA9IHRoaXMuZ2V0RGF0ZURheUluZGV4KG5vcm1hbFJhbmdlLmVuZC5jbG9uZSgpLnN1YnRyYWN0KDEsICdkYXlzJykpOyAvLyBpbmNsdXNpdmUgbGFzdCBpbmRleAoJCXZhciBzZWdzID0gW107CgkJdmFyIHJvdzsKCQl2YXIgcm93Rmlyc3QsIHJvd0xhc3Q7IC8vIGluY2x1c2l2ZSBkYXktaW5kZXggcmFuZ2UgZm9yIGN1cnJlbnQgcm93CgkJdmFyIGk7CgkJdmFyIHNlZ0ZpcnN0LCBzZWdMYXN0OyAvLyBpbmNsdXNpdmUgZGF5LWluZGV4IHJhbmdlIGZvciBzZWdtZW50CgoJCWZvciAocm93ID0gMDsgcm93IDwgdGhpcy5yb3dDbnQ7IHJvdysrKSB7CgkJCXJvd0ZpcnN0ID0gcm93ICogZGF5c1BlclJvdzsKCQkJcm93TGFzdCA9IHJvd0ZpcnN0ICsgZGF5c1BlclJvdyAtIDE7CgoJCQlmb3IgKGkgPSByb3dGaXJzdDsgaSA8PSByb3dMYXN0OyBpKyspIHsKCgkJCQkvLyBpbnRlcnNlY3Qgc2VnbWVudCdzIG9mZnNldCByYW5nZSB3aXRoIHRoZSByb3cncwoJCQkJc2VnRmlyc3QgPSBNYXRoLm1heChyYW5nZUZpcnN0LCBpKTsKCQkJCXNlZ0xhc3QgPSBNYXRoLm1pbihyYW5nZUxhc3QsIGkpOwoKCQkJCS8vIGRlYWwgd2l0aCBpbi1iZXR3ZWVuIGluZGljZXMKCQkJCXNlZ0ZpcnN0ID0gTWF0aC5jZWlsKHNlZ0ZpcnN0KTsgLy8gaW4tYmV0d2VlbiBzdGFydHMgcm91bmQgdG8gbmV4dCBjZWxsCgkJCQlzZWdMYXN0ID0gTWF0aC5mbG9vcihzZWdMYXN0KTsgLy8gaW4tYmV0d2VlbiBlbmRzIHJvdW5kIHRvIHByZXYgY2VsbAoKCQkJCWlmIChzZWdGaXJzdCA8PSBzZWdMYXN0KSB7IC8vIHdhcyB0aGVyZSBhbnkgaW50ZXJzZWN0aW9uIHdpdGggdGhlIGN1cnJlbnQgcm93PwoJCQkJCXNlZ3MucHVzaCh7CgkJCQkJCXJvdzogcm93LAoKCQkJCQkJLy8gbm9ybWFsaXplIHRvIHN0YXJ0IG9mIHJvdwoJCQkJCQlmaXJzdFJvd0RheUluZGV4OiBzZWdGaXJzdCAtIHJvd0ZpcnN0LAoJCQkJCQlsYXN0Um93RGF5SW5kZXg6IHNlZ0xhc3QgLSByb3dGaXJzdCwKCgkJCQkJCS8vIG11c3QgYmUgbWF0Y2hpbmcgaW50ZWdlcnMgdG8gYmUgdGhlIHNlZ21lbnQncyBzdGFydC9lbmQKCQkJCQkJaXNTdGFydDogc2VnRmlyc3QgPT09IHJhbmdlRmlyc3QsCgkJCQkJCWlzRW5kOiBzZWdMYXN0ID09PSByYW5nZUxhc3QKCQkJCQl9KTsKCQkJCX0KCQkJfQoJCX0KCgkJcmV0dXJuIHNlZ3M7Cgl9LAoKCgkvKiBIZWFkZXIgUmVuZGVyaW5nCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCglyZW5kZXJIZWFkSHRtbDogZnVuY3Rpb24oKSB7CgkJdmFyIHZpZXcgPSB0aGlzLnZpZXc7CgoJCXJldHVybiAnJyArCgkJCSc8ZGl2IGNsYXNzPSJmYy1yb3cgJyArIHZpZXcud2lkZ2V0SGVhZGVyQ2xhc3MgKyAnIj4nICsKCQkJCSc8dGFibGU+JyArCgkJCQkJJzx0aGVhZD4nICsKCQkJCQkJdGhpcy5yZW5kZXJIZWFkVHJIdG1sKCkgKwoJCQkJCSc8L3RoZWFkPicgKwoJCQkJJzwvdGFibGU+JyArCgkJCSc8L2Rpdj4nOwoJfSwKCgoJcmVuZGVySGVhZEludHJvSHRtbDogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHRoaXMucmVuZGVySW50cm9IdG1sKCk7IC8vIGZhbGwgYmFjayB0byBnZW5lcmljCgl9LAoKCglyZW5kZXJIZWFkVHJIdG1sOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gJycgKwoJCQknPHRyPicgKwoJCQkJKHRoaXMuaXNSVEwgPyAnJyA6IHRoaXMucmVuZGVySGVhZEludHJvSHRtbCgpKSArCgkJCQl0aGlzLnJlbmRlckhlYWREYXRlQ2VsbHNIdG1sKCkgKwoJCQkJKHRoaXMuaXNSVEwgPyB0aGlzLnJlbmRlckhlYWRJbnRyb0h0bWwoKSA6ICcnKSArCgkJCSc8L3RyPic7Cgl9LAoKCglyZW5kZXJIZWFkRGF0ZUNlbGxzSHRtbDogZnVuY3Rpb24oKSB7CgkJdmFyIGh0bWxzID0gW107CgkJdmFyIGNvbCwgZGF0ZTsKCgkJZm9yIChjb2wgPSAwOyBjb2wgPCB0aGlzLmNvbENudDsgY29sKyspIHsKCQkJZGF0ZSA9IHRoaXMuZ2V0Q2VsbERhdGUoMCwgY29sKTsKCQkJaHRtbHMucHVzaCh0aGlzLnJlbmRlckhlYWREYXRlQ2VsbEh0bWwoZGF0ZSkpOwoJCX0KCgkJcmV0dXJuIGh0bWxzLmpvaW4oJycpOwoJfSwKCgoJLy8gVE9ETzogd2hlbiBpbnRlcm5hbEFwaVZlcnNpb24sIGFjY2VwdCBhbiBvYmplY3QgZm9yIEhUTUwgYXR0cmlidXRlcwoJLy8gKGNvbHNwYW4gc2hvdWxkIGJlIG5vIGRpZmZlcmVudCkKCXJlbmRlckhlYWREYXRlQ2VsbEh0bWw6IGZ1bmN0aW9uKGRhdGUsIGNvbHNwYW4sIG90aGVyQXR0cnMpIHsKCQl2YXIgdmlldyA9IHRoaXMudmlldzsKCQl2YXIgaXNEYXRlVmFsaWQgPSBpc0RhdGVXaXRoaW5SYW5nZShkYXRlLCB2aWV3LmFjdGl2ZVJhbmdlKTsgLy8gVE9ETzogY2FsbGVkIHRvbyBmcmVxdWVudGx5LiBjYWNoZSBzb21laG93LgoJCXZhciBjbGFzc05hbWVzID0gWwoJCQknZmMtZGF5LWhlYWRlcicsCgkJCXZpZXcud2lkZ2V0SGVhZGVyQ2xhc3MKCQldOwoJCXZhciBpbm5lckh0bWwgPSBodG1sRXNjYXBlKGRhdGUuZm9ybWF0KHRoaXMuY29sSGVhZEZvcm1hdCkpOwoKCQkvLyBpZiBvbmx5IG9uZSByb3cgb2YgZGF5cywgdGhlIGNsYXNzTmFtZXMgb24gdGhlIGhlYWRlciBjYW4gcmVwcmVzZW50IHRoZSBzcGVjaWZpYyBkYXlzIGJlbmVhdGgKCQlpZiAodGhpcy5yb3dDbnQgPT09IDEpIHsKCQkJY2xhc3NOYW1lcyA9IGNsYXNzTmFtZXMuY29uY2F0KAoJCQkJLy8gaW5jbHVkZXMgdGhlIGRheS1vZi13ZWVrIGNsYXNzCgkJCQkvLyBub1RoZW1lSGlnaGxpZ2h0PXRydWUgKGRvbid0IGhpZ2hsaWdodCB0aGUgaGVhZGVyKQoJCQkJdGhpcy5nZXREYXlDbGFzc2VzKGRhdGUsIHRydWUpCgkJCSk7CgkJfQoJCWVsc2UgewoJCQljbGFzc05hbWVzLnB1c2goJ2ZjLScgKyBkYXlJRHNbZGF0ZS5kYXkoKV0pOyAvLyBvbmx5IGFkZCB0aGUgZGF5LW9mLXdlZWsgY2xhc3MKCQl9CgoJCXJldHVybiAnJyArCiAgICAgICAgICAgICc8dGggY2xhc3M9IicgKyBjbGFzc05hbWVzLmpvaW4oJyAnKSArICciJyArCgkJCQkoKGlzRGF0ZVZhbGlkICYmIHRoaXMucm93Q250KSA9PT0gMSA/CgkJCQkJJyBkYXRhLWRhdGU9IicgKyBkYXRlLmZvcm1hdCgnWVlZWS1NTS1ERCcpICsgJyInIDoKCQkJCQknJykgKwoJCQkJKGNvbHNwYW4gPiAxID8KCQkJCQknIGNvbHNwYW49IicgKyBjb2xzcGFuICsgJyInIDoKCQkJCQknJykgKwoJCQkJKG90aGVyQXR0cnMgPwoJCQkJCScgJyArIG90aGVyQXR0cnMgOgoJCQkJCScnKSArCgkJCQknPicgKwoJCQkJKGlzRGF0ZVZhbGlkID8KCQkJCQkvLyBkb24ndCBtYWtlIGEgbGluayBpZiB0aGUgaGVhZGluZyBjb3VsZCByZXByZXNlbnQgbXVsdGlwbGUgZGF5cywgb3IgaWYgdGhlcmUncyBvbmx5IG9uZSBkYXkgKGZvcmNlT2ZmKQoJCQkJCXZpZXcuYnVpbGRHb3RvQW5jaG9ySHRtbCgKCQkJCQkJeyBkYXRlOiBkYXRlLCBmb3JjZU9mZjogdGhpcy5yb3dDbnQgPiAxIHx8IHRoaXMuY29sQ250ID09PSAxIH0sCgkJCQkJCWlubmVySHRtbAoJCQkJCSkgOgoJCQkJCS8vIGlmIG5vdCB2YWxpZCwgZGlzcGxheSB0ZXh0LCBidXQgbm8gbGluawoJCQkJCWlubmVySHRtbAoJCQkJKSArCgkJCSc8L3RoPic7Cgl9LAoKCgkvKiBCYWNrZ3JvdW5kIFJlbmRlcmluZwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJcmVuZGVyQmdUckh0bWw6IGZ1bmN0aW9uKHJvdykgewoJCXJldHVybiAnJyArCgkJCSc8dHI+JyArCgkJCQkodGhpcy5pc1JUTCA/ICcnIDogdGhpcy5yZW5kZXJCZ0ludHJvSHRtbChyb3cpKSArCgkJCQl0aGlzLnJlbmRlckJnQ2VsbHNIdG1sKHJvdykgKwoJCQkJKHRoaXMuaXNSVEwgPyB0aGlzLnJlbmRlckJnSW50cm9IdG1sKHJvdykgOiAnJykgKwoJCQknPC90cj4nOwoJfSwKCgoJcmVuZGVyQmdJbnRyb0h0bWw6IGZ1bmN0aW9uKHJvdykgewoJCXJldHVybiB0aGlzLnJlbmRlckludHJvSHRtbCgpOyAvLyBmYWxsIGJhY2sgdG8gZ2VuZXJpYwoJfSwKCgoJcmVuZGVyQmdDZWxsc0h0bWw6IGZ1bmN0aW9uKHJvdykgewoJCXZhciBodG1scyA9IFtdOwoJCXZhciBjb2wsIGRhdGU7CgoJCWZvciAoY29sID0gMDsgY29sIDwgdGhpcy5jb2xDbnQ7IGNvbCsrKSB7CgkJCWRhdGUgPSB0aGlzLmdldENlbGxEYXRlKHJvdywgY29sKTsKCQkJaHRtbHMucHVzaCh0aGlzLnJlbmRlckJnQ2VsbEh0bWwoZGF0ZSkpOwoJCX0KCgkJcmV0dXJuIGh0bWxzLmpvaW4oJycpOwoJfSwKCgoJcmVuZGVyQmdDZWxsSHRtbDogZnVuY3Rpb24oZGF0ZSwgb3RoZXJBdHRycykgewoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciBpc0RhdGVWYWxpZCA9IGlzRGF0ZVdpdGhpblJhbmdlKGRhdGUsIHZpZXcuYWN0aXZlUmFuZ2UpOyAvLyBUT0RPOiBjYWxsZWQgdG9vIGZyZXF1ZW50bHkuIGNhY2hlIHNvbWVob3cuCgkJdmFyIGNsYXNzZXMgPSB0aGlzLmdldERheUNsYXNzZXMoZGF0ZSk7CgoJCWNsYXNzZXMudW5zaGlmdCgnZmMtZGF5Jywgdmlldy53aWRnZXRDb250ZW50Q2xhc3MpOwoKCQlyZXR1cm4gJzx0ZCBjbGFzcz0iJyArIGNsYXNzZXMuam9pbignICcpICsgJyInICsKCQkJKGlzRGF0ZVZhbGlkID8KCQkJCScgZGF0YS1kYXRlPSInICsgZGF0ZS5mb3JtYXQoJ1lZWVktTU0tREQnKSArICciJyA6IC8vIGlmIGRhdGUgaGFzIGEgdGltZSwgd29uJ3QgZm9ybWF0IGl0CgkJCQknJykgKwoJCQkob3RoZXJBdHRycyA/CgkJCQknICcgKyBvdGhlckF0dHJzIDoKCQkJCScnKSArCgkJCSc+PC90ZD4nOwoJfSwKCgoJLyogR2VuZXJpYwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gR2VuZXJhdGVzIHRoZSBkZWZhdWx0IEhUTUwgaW50cm8gZm9yIGFueSByb3cuIFVzZXIgY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUKCXJlbmRlckludHJvSHRtbDogZnVuY3Rpb24oKSB7Cgl9LAoKCgkvLyBUT0RPOiBhIGdlbmVyaWMgbWV0aG9kIGZvciBkZWFsaW5nIHdpdGggPHRyPiwgUlRMLCBpbnRybwoJLy8gd2hlbiBpbmNyZW1lbnQgaW50ZXJuYWxBcGlWZXJzaW9uCgkvLyB3cmFwVHIgKHNjaGVkdWxlcikKCgoJLyogVXRpbHMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIEFwcGxpZXMgdGhlIGdlbmVyaWMgImludHJvIiBhbmQgIm91dHJvIiBIVE1MIHRvIHRoZSBnaXZlbiBjZWxscy4KCS8vIEludHJvIG1lYW5zIHRoZSBsZWZ0bW9zdCBjZWxsIHdoZW4gdGhlIGNhbGVuZGFyIGlzIExUUiBhbmQgdGhlIHJpZ2h0bW9zdCBjZWxsIHdoZW4gUlRMLiBWaWNlLXZlcnNhIGZvciBvdXRyby4KCWJvb2tlbmRDZWxsczogZnVuY3Rpb24odHJFbCkgewoJCXZhciBpbnRyb0h0bWwgPSB0aGlzLnJlbmRlckludHJvSHRtbCgpOwoKCQlpZiAoaW50cm9IdG1sKSB7CgkJCWlmICh0aGlzLmlzUlRMKSB7CgkJCQl0ckVsLmFwcGVuZChpbnRyb0h0bWwpOwoJCQl9CgkJCWVsc2UgewoJCQkJdHJFbC5wcmVwZW5kKGludHJvSHRtbCk7CgkJCX0KCQl9Cgl9Cgp9OwoKOzsKCi8qIEEgY29tcG9uZW50IHRoYXQgcmVuZGVycyBhIGdyaWQgb2Ygd2hvbGUtZGF5cyB0aGF0IHJ1bnMgaG9yaXpvbnRhbGx5LiBUaGVyZSBjYW4gYmUgbXVsdGlwbGUgcm93cywgb25lIHBlciB3ZWVrLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCnZhciBEYXlHcmlkID0gRkMuRGF5R3JpZCA9IEdyaWQuZXh0ZW5kKERheVRhYmxlTWl4aW4sIHsKCgludW1iZXJzVmlzaWJsZTogZmFsc2UsIC8vIHNob3VsZCByZW5kZXIgYSByb3cgZm9yIGRheS93ZWVrIG51bWJlcnM/IHNldCBieSBvdXRzaWRlIHZpZXcuIFRPRE86IG1ha2UgaW50ZXJuYWwKCWJvdHRvbUNvb3JkUGFkZGluZzogMCwgLy8gaGFjayBmb3IgZXh0ZW5kaW5nIHRoZSBoaXQgYXJlYSBmb3IgdGhlIGxhc3Qgcm93IG9mIHRoZSBjb29yZGluYXRlIGdyaWQKCglyb3dFbHM6IG51bGwsIC8vIHNldCBvZiBmYWtlIHJvdyBlbGVtZW50cwoJY2VsbEVsczogbnVsbCwgLy8gc2V0IG9mIHdob2xlLWRheSBlbGVtZW50cyBjb21wcmlzaW5nIHRoZSByb3cncyBiYWNrZ3JvdW5kCgloZWxwZXJFbHM6IG51bGwsIC8vIHNldCBvZiBjZWxsIHNrZWxldG9uIGVsZW1lbnRzIGZvciByZW5kZXJpbmcgdGhlIG1vY2sgZXZlbnQgImhlbHBlciIKCglyb3dDb29yZENhY2hlOiBudWxsLAoJY29sQ29vcmRDYWNoZTogbnVsbCwKCgoJLy8gUmVuZGVycyB0aGUgcm93cyBhbmQgY29sdW1ucyBpbnRvIHRoZSBjb21wb25lbnQncyBgdGhpcy5lbGAsIHdoaWNoIHNob3VsZCBhbHJlYWR5IGJlIGFzc2lnbmVkLgoJLy8gaXNSaWdpZCBkZXRlcm1pbnMgd2hldGhlciB0aGUgaW5kaXZpZHVhbCByb3dzIHNob3VsZCBpZ25vcmUgdGhlIGNvbnRlbnRzIGFuZCBiZSBhIGNvbnN0YW50IGhlaWdodC4KCS8vIFJlbGllcyBvbiB0aGUgdmlldydzIGNvbENudCBhbmQgcm93Q250LiBJbiB0aGUgZnV0dXJlLCB0aGlzIGNvbXBvbmVudCBzaG91bGQgcHJvYmFibHkgYmUgc2VsZi1zdWZmaWNpZW50LgoJcmVuZGVyRGF0ZXM6IGZ1bmN0aW9uKGlzUmlnaWQpIHsKCQl2YXIgdmlldyA9IHRoaXMudmlldzsKCQl2YXIgcm93Q250ID0gdGhpcy5yb3dDbnQ7CgkJdmFyIGNvbENudCA9IHRoaXMuY29sQ250OwoJCXZhciBodG1sID0gJyc7CgkJdmFyIHJvdzsKCQl2YXIgY29sOwoKCQlmb3IgKHJvdyA9IDA7IHJvdyA8IHJvd0NudDsgcm93KyspIHsKCQkJaHRtbCArPSB0aGlzLnJlbmRlckRheVJvd0h0bWwocm93LCBpc1JpZ2lkKTsKCQl9CgkJdGhpcy5lbC5odG1sKGh0bWwpOwoKCQl0aGlzLnJvd0VscyA9IHRoaXMuZWwuZmluZCgnLmZjLXJvdycpOwoJCXRoaXMuY2VsbEVscyA9IHRoaXMuZWwuZmluZCgnLmZjLWRheSwgLmZjLWRpc2FibGVkLWRheScpOwoKCQl0aGlzLnJvd0Nvb3JkQ2FjaGUgPSBuZXcgQ29vcmRDYWNoZSh7CgkJCWVsczogdGhpcy5yb3dFbHMsCgkJCWlzVmVydGljYWw6IHRydWUKCQl9KTsKCQl0aGlzLmNvbENvb3JkQ2FjaGUgPSBuZXcgQ29vcmRDYWNoZSh7CgkJCWVsczogdGhpcy5jZWxsRWxzLnNsaWNlKDAsIHRoaXMuY29sQ250KSwgLy8gb25seSB0aGUgZmlyc3Qgcm93CgkJCWlzSG9yaXpvbnRhbDogdHJ1ZQoJCX0pOwoKCQkvLyB0cmlnZ2VyIGRheVJlbmRlciB3aXRoIGVhY2ggY2VsbCdzIGVsZW1lbnQKCQlmb3IgKHJvdyA9IDA7IHJvdyA8IHJvd0NudDsgcm93KyspIHsKCQkJZm9yIChjb2wgPSAwOyBjb2wgPCBjb2xDbnQ7IGNvbCsrKSB7CgkJCQl2aWV3LnB1YmxpY2x5VHJpZ2dlcigKCQkJCQknZGF5UmVuZGVyJywKCQkJCQludWxsLAoJCQkJCXRoaXMuZ2V0Q2VsbERhdGUocm93LCBjb2wpLAoJCQkJCXRoaXMuZ2V0Q2VsbEVsKHJvdywgY29sKQoJCQkJKTsKCQkJfQoJCX0KCX0sCgoKCXVucmVuZGVyRGF0ZXM6IGZ1bmN0aW9uKCkgewoJCXRoaXMucmVtb3ZlU2VnUG9wb3ZlcigpOwoJfSwKCgoJcmVuZGVyQnVzaW5lc3NIb3VyczogZnVuY3Rpb24oKSB7CgkJdmFyIHNlZ3MgPSB0aGlzLmJ1aWxkQnVzaW5lc3NIb3VyU2Vncyh0cnVlKTsgLy8gd2hvbGVEYXk9dHJ1ZQoJCXRoaXMucmVuZGVyRmlsbCgnYnVzaW5lc3NIb3VycycsIHNlZ3MsICdiZ2V2ZW50Jyk7Cgl9LAoKCgl1bnJlbmRlckJ1c2luZXNzSG91cnM6IGZ1bmN0aW9uKCkgewoJCXRoaXMudW5yZW5kZXJGaWxsKCdidXNpbmVzc0hvdXJzJyk7Cgl9LAoKCgkvLyBHZW5lcmF0ZXMgdGhlIEhUTUwgZm9yIGEgc2luZ2xlIHJvdywgd2hpY2ggaXMgYSBkaXYgdGhhdCB3cmFwcyBhIHRhYmxlLgoJLy8gYHJvd2AgaXMgdGhlIHJvdyBudW1iZXIuCglyZW5kZXJEYXlSb3dIdG1sOiBmdW5jdGlvbihyb3csIGlzUmlnaWQpIHsKCQl2YXIgdmlldyA9IHRoaXMudmlldzsKCQl2YXIgY2xhc3NlcyA9IFsgJ2ZjLXJvdycsICdmYy13ZWVrJywgdmlldy53aWRnZXRDb250ZW50Q2xhc3MgXTsKCgkJaWYgKGlzUmlnaWQpIHsKCQkJY2xhc3Nlcy5wdXNoKCdmYy1yaWdpZCcpOwoJCX0KCgkJcmV0dXJuICcnICsKCQkJJzxkaXYgY2xhc3M9IicgKyBjbGFzc2VzLmpvaW4oJyAnKSArICciPicgKwoJCQkJJzxkaXYgY2xhc3M9ImZjLWJnIj4nICsKCQkJCQknPHRhYmxlPicgKwoJCQkJCQl0aGlzLnJlbmRlckJnVHJIdG1sKHJvdykgKwoJCQkJCSc8L3RhYmxlPicgKwoJCQkJJzwvZGl2PicgKwoJCQkJJzxkaXYgY2xhc3M9ImZjLWNvbnRlbnQtc2tlbGV0b24iPicgKwoJCQkJCSc8dGFibGU+JyArCgkJCQkJCSh0aGlzLm51bWJlcnNWaXNpYmxlID8KCQkJCQkJCSc8dGhlYWQ+JyArCgkJCQkJCQkJdGhpcy5yZW5kZXJOdW1iZXJUckh0bWwocm93KSArCgkJCQkJCQknPC90aGVhZD4nIDoKCQkJCQkJCScnCgkJCQkJCQkpICsKCQkJCQknPC90YWJsZT4nICsKCQkJCSc8L2Rpdj4nICsKCQkJJzwvZGl2Pic7Cgl9LAoKCgkvKiBHcmlkIE51bWJlciBSZW5kZXJpbmcKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCXJlbmRlck51bWJlclRySHRtbDogZnVuY3Rpb24ocm93KSB7CgkJcmV0dXJuICcnICsKCQkJJzx0cj4nICsKCQkJCSh0aGlzLmlzUlRMID8gJycgOiB0aGlzLnJlbmRlck51bWJlckludHJvSHRtbChyb3cpKSArCgkJCQl0aGlzLnJlbmRlck51bWJlckNlbGxzSHRtbChyb3cpICsKCQkJCSh0aGlzLmlzUlRMID8gdGhpcy5yZW5kZXJOdW1iZXJJbnRyb0h0bWwocm93KSA6ICcnKSArCgkJCSc8L3RyPic7Cgl9LAoKCglyZW5kZXJOdW1iZXJJbnRyb0h0bWw6IGZ1bmN0aW9uKHJvdykgewoJCXJldHVybiB0aGlzLnJlbmRlckludHJvSHRtbCgpOwoJfSwKCgoJcmVuZGVyTnVtYmVyQ2VsbHNIdG1sOiBmdW5jdGlvbihyb3cpIHsKCQl2YXIgaHRtbHMgPSBbXTsKCQl2YXIgY29sLCBkYXRlOwoKCQlmb3IgKGNvbCA9IDA7IGNvbCA8IHRoaXMuY29sQ250OyBjb2wrKykgewoJCQlkYXRlID0gdGhpcy5nZXRDZWxsRGF0ZShyb3csIGNvbCk7CgkJCWh0bWxzLnB1c2godGhpcy5yZW5kZXJOdW1iZXJDZWxsSHRtbChkYXRlKSk7CgkJfQoKCQlyZXR1cm4gaHRtbHMuam9pbignJyk7Cgl9LAoKCgkvLyBHZW5lcmF0ZXMgdGhlIEhUTUwgZm9yIHRoZSA8dGQ+cyBvZiB0aGUgIm51bWJlciIgcm93IGluIHRoZSBEYXlHcmlkJ3MgY29udGVudCBza2VsZXRvbi4KCS8vIFRoZSBudW1iZXIgcm93IHdpbGwgb25seSBleGlzdCBpZiBlaXRoZXIgZGF5IG51bWJlcnMgb3Igd2VlayBudW1iZXJzIGFyZSB0dXJuZWQgb24uCglyZW5kZXJOdW1iZXJDZWxsSHRtbDogZnVuY3Rpb24oZGF0ZSkgewoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciBodG1sID0gJyc7CgkJdmFyIGlzRGF0ZVZhbGlkID0gaXNEYXRlV2l0aGluUmFuZ2UoZGF0ZSwgdmlldy5hY3RpdmVSYW5nZSk7IC8vIFRPRE86IGNhbGxlZCB0b28gZnJlcXVlbnRseS4gY2FjaGUgc29tZWhvdy4KCQl2YXIgaXNEYXlOdW1iZXJWaXNpYmxlID0gdmlldy5kYXlOdW1iZXJzVmlzaWJsZSAmJiBpc0RhdGVWYWxpZDsKCQl2YXIgY2xhc3NlczsKCQl2YXIgd2Vla0NhbGNGaXJzdERvVzsKCgkJaWYgKCFpc0RheU51bWJlclZpc2libGUgJiYgIXZpZXcuY2VsbFdlZWtOdW1iZXJzVmlzaWJsZSkgewoJCQkvLyBubyBudW1iZXJzIGluIGRheSBjZWxsICh3ZWVrIG51bWJlciBtdXN0IGJlIGFsb25nIHRoZSBzaWRlKQoJCQlyZXR1cm4gJzx0ZC8+JzsgLy8gIHdpbGwgY3JlYXRlIGFuIGVtcHR5IHNwYWNlIGFib3ZlIGV2ZW50cyA6KAoJCX0KCgkJY2xhc3NlcyA9IHRoaXMuZ2V0RGF5Q2xhc3NlcyhkYXRlKTsKCQljbGFzc2VzLnVuc2hpZnQoJ2ZjLWRheS10b3AnKTsKCgkJaWYgKHZpZXcuY2VsbFdlZWtOdW1iZXJzVmlzaWJsZSkgewoJCQkvLyBUbyBkZXRlcm1pbmUgdGhlIGRheSBvZiB3ZWVrIG51bWJlciBjaGFuZ2UgdW5kZXIgSVNPLCB3ZSBjYW5ub3QKCQkJLy8gcmVseSBvbiBtb21lbnQuanMgbWV0aG9kcyBzdWNoIGFzIGZpcnN0RGF5T2ZXZWVrKCkgb3Igd2Vla2RheSgpLAoJCQkvLyBiZWNhdXNlIHRoZXkgcmVseSBvbiB0aGUgbG9jYWxlJ3MgZG93IChwb3NzaWJseSBvdmVycmlkZGVuIGJ5CgkJCS8vIG91ciBmaXJzdERheSBvcHRpb24pLCB3aGljaCBtYXkgbm90IGJlIE1vbmRheS4gV2UgY2Fubm90IGNoYW5nZQoJCQkvLyBkb3csIGJlY2F1c2UgdGhhdCB3b3VsZCBhZmZlY3QgdGhlIGNhbGVuZGFyIHN0YXJ0IGRheSBhcyB3ZWxsLgoJCQlpZiAoZGF0ZS5fbG9jYWxlLl9mdWxsQ2FsZW5kYXJfd2Vla0NhbGMgPT09ICdJU08nKSB7CgkJCQl3ZWVrQ2FsY0ZpcnN0RG9XID0gMTsgIC8vIE1vbmRheSBieSBJU08gODYwMSBkZWZpbml0aW9uCgkJCX0KCQkJZWxzZSB7CgkJCQl3ZWVrQ2FsY0ZpcnN0RG9XID0gZGF0ZS5fbG9jYWxlLmZpcnN0RGF5T2ZXZWVrKCk7CgkJCX0KCQl9CgoJCWh0bWwgKz0gJzx0ZCBjbGFzcz0iJyArIGNsYXNzZXMuam9pbignICcpICsgJyInICsKCQkJKGlzRGF0ZVZhbGlkID8KCQkJCScgZGF0YS1kYXRlPSInICsgZGF0ZS5mb3JtYXQoKSArICciJyA6CgkJCQknJwoJCQkJKSArCgkJCSc+JzsKCgkJaWYgKHZpZXcuY2VsbFdlZWtOdW1iZXJzVmlzaWJsZSAmJiAoZGF0ZS5kYXkoKSA9PSB3ZWVrQ2FsY0ZpcnN0RG9XKSkgewoJCQlodG1sICs9IHZpZXcuYnVpbGRHb3RvQW5jaG9ySHRtbCgKCQkJCXsgZGF0ZTogZGF0ZSwgdHlwZTogJ3dlZWsnIH0sCgkJCQl7ICdjbGFzcyc6ICdmYy13ZWVrLW51bWJlcicgfSwKCQkJCWRhdGUuZm9ybWF0KCd3JykgLy8gaW5uZXIgSFRNTAoJCQkpOwoJCX0KCgkJaWYgKGlzRGF5TnVtYmVyVmlzaWJsZSkgewoJCQlodG1sICs9IHZpZXcuYnVpbGRHb3RvQW5jaG9ySHRtbCgKCQkJCWRhdGUsCgkJCQl7ICdjbGFzcyc6ICdmYy1kYXktbnVtYmVyJyB9LAoJCQkJZGF0ZS5kYXRlKCkgLy8gaW5uZXIgSFRNTAoJCQkpOwoJCX0KCgkJaHRtbCArPSAnPC90ZD4nOwoKCQlyZXR1cm4gaHRtbDsKCX0sCgoKCS8qIE9wdGlvbnMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIENvbXB1dGVzIGEgZGVmYXVsdCBldmVudCB0aW1lIGZvcm1hdHRpbmcgc3RyaW5nIGlmIGB0aW1lRm9ybWF0YCBpcyBub3QgZXhwbGljaXRseSBkZWZpbmVkCgljb21wdXRlRXZlbnRUaW1lRm9ybWF0OiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gdGhpcy52aWV3Lm9wdCgnZXh0cmFTbWFsbFRpbWVGb3JtYXQnKTsgLy8gbGlrZSAiNnAiIG9yICI2OjMwcCIKCX0sCgoKCS8vIENvbXB1dGVzIGEgZGVmYXVsdCBgZGlzcGxheUV2ZW50RW5kYCB2YWx1ZSBpZiBvbmUgaXMgbm90IGV4cGxpY2x0eSBkZWZpbmVkCgljb21wdXRlRGlzcGxheUV2ZW50RW5kOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gdGhpcy5jb2xDbnQgPT0gMTsgLy8gd2UnbGwgbGlrZWx5IGhhdmUgc3BhY2UgaWYgdGhlcmUncyBvbmx5IG9uZSBkYXkKCX0sCgoKCS8qIERhdGVzCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCglyYW5nZVVwZGF0ZWQ6IGZ1bmN0aW9uKCkgewoJCXRoaXMudXBkYXRlRGF5VGFibGUoKTsKCX0sCgoKCS8vIFNsaWNlcyB1cCB0aGUgZ2l2ZW4gc3BhbiAodW56b25lZCBzdGFydC9lbmQgd2l0aCBvdGhlciBtaXNjIGRhdGEpIGludG8gYW4gYXJyYXkgb2Ygc2VnbWVudHMKCXNwYW5Ub1NlZ3M6IGZ1bmN0aW9uKHNwYW4pIHsKCQl2YXIgc2VncyA9IHRoaXMuc2xpY2VSYW5nZUJ5Um93KHNwYW4pOwoJCXZhciBpLCBzZWc7CgoJCWZvciAoaSA9IDA7IGkgPCBzZWdzLmxlbmd0aDsgaSsrKSB7CgkJCXNlZyA9IHNlZ3NbaV07CgkJCWlmICh0aGlzLmlzUlRMKSB7CgkJCQlzZWcubGVmdENvbCA9IHRoaXMuZGF5c1BlclJvdyAtIDEgLSBzZWcubGFzdFJvd0RheUluZGV4OwoJCQkJc2VnLnJpZ2h0Q29sID0gdGhpcy5kYXlzUGVyUm93IC0gMSAtIHNlZy5maXJzdFJvd0RheUluZGV4OwoJCQl9CgkJCWVsc2UgewoJCQkJc2VnLmxlZnRDb2wgPSBzZWcuZmlyc3RSb3dEYXlJbmRleDsKCQkJCXNlZy5yaWdodENvbCA9IHNlZy5sYXN0Um93RGF5SW5kZXg7CgkJCX0KCQl9CgoJCXJldHVybiBzZWdzOwoJfSwKCgoJLyogSGl0IFN5c3RlbQoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJcHJlcGFyZUhpdHM6IGZ1bmN0aW9uKCkgewoJCXRoaXMuY29sQ29vcmRDYWNoZS5idWlsZCgpOwoJCXRoaXMucm93Q29vcmRDYWNoZS5idWlsZCgpOwoJCXRoaXMucm93Q29vcmRDYWNoZS5ib3R0b21zW3RoaXMucm93Q250IC0gMV0gKz0gdGhpcy5ib3R0b21Db29yZFBhZGRpbmc7IC8vIGhhY2sKCX0sCgoKCXJlbGVhc2VIaXRzOiBmdW5jdGlvbigpIHsKCQl0aGlzLmNvbENvb3JkQ2FjaGUuY2xlYXIoKTsKCQl0aGlzLnJvd0Nvb3JkQ2FjaGUuY2xlYXIoKTsKCX0sCgoKCXF1ZXJ5SGl0OiBmdW5jdGlvbihsZWZ0T2Zmc2V0LCB0b3BPZmZzZXQpIHsKCQlpZiAodGhpcy5jb2xDb29yZENhY2hlLmlzTGVmdEluQm91bmRzKGxlZnRPZmZzZXQpICYmIHRoaXMucm93Q29vcmRDYWNoZS5pc1RvcEluQm91bmRzKHRvcE9mZnNldCkpIHsKCQkJdmFyIGNvbCA9IHRoaXMuY29sQ29vcmRDYWNoZS5nZXRIb3Jpem9udGFsSW5kZXgobGVmdE9mZnNldCk7CgkJCXZhciByb3cgPSB0aGlzLnJvd0Nvb3JkQ2FjaGUuZ2V0VmVydGljYWxJbmRleCh0b3BPZmZzZXQpOwoKCQkJaWYgKHJvdyAhPSBudWxsICYmIGNvbCAhPSBudWxsKSB7CgkJCQlyZXR1cm4gdGhpcy5nZXRDZWxsSGl0KHJvdywgY29sKTsKCQkJfQoJCX0KCX0sCgoKCWdldEhpdFNwYW46IGZ1bmN0aW9uKGhpdCkgewoJCXJldHVybiB0aGlzLmdldENlbGxSYW5nZShoaXQucm93LCBoaXQuY29sKTsKCX0sCgoKCWdldEhpdEVsOiBmdW5jdGlvbihoaXQpIHsKCQlyZXR1cm4gdGhpcy5nZXRDZWxsRWwoaGl0LnJvdywgaGl0LmNvbCk7Cgl9LAoKCgkvKiBDZWxsIFN5c3RlbQoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCS8vIEZZSTogdGhlIGZpcnN0IGNvbHVtbiBpcyB0aGUgbGVmdG1vc3QgY29sdW1uLCByZWdhcmRsZXNzIG9mIGRhdGUKCgoJZ2V0Q2VsbEhpdDogZnVuY3Rpb24ocm93LCBjb2wpIHsKCQlyZXR1cm4gewoJCQlyb3c6IHJvdywKCQkJY29sOiBjb2wsCgkJCWNvbXBvbmVudDogdGhpcywgLy8gbmVlZGVkIHVuZm9ydHVuYXRlbHkgOigKCQkJbGVmdDogdGhpcy5jb2xDb29yZENhY2hlLmdldExlZnRPZmZzZXQoY29sKSwKCQkJcmlnaHQ6IHRoaXMuY29sQ29vcmRDYWNoZS5nZXRSaWdodE9mZnNldChjb2wpLAoJCQl0b3A6IHRoaXMucm93Q29vcmRDYWNoZS5nZXRUb3BPZmZzZXQocm93KSwKCQkJYm90dG9tOiB0aGlzLnJvd0Nvb3JkQ2FjaGUuZ2V0Qm90dG9tT2Zmc2V0KHJvdykKCQl9OwoJfSwKCgoJZ2V0Q2VsbEVsOiBmdW5jdGlvbihyb3csIGNvbCkgewoJCXJldHVybiB0aGlzLmNlbGxFbHMuZXEocm93ICogdGhpcy5jb2xDbnQgKyBjb2wpOwoJfSwKCgoJLyogRXZlbnQgRHJhZyBWaXN1YWxpemF0aW9uCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJLy8gVE9ETzogbW92ZSB0byBEYXlHcmlkLmV2ZW50LCBzaW1pbGFyIHRvIHdoYXQgd2UgZGlkIHdpdGggR3JpZCdzIGRyYWcgbWV0aG9kcwoKCgkvLyBSZW5kZXJzIGEgdmlzdWFsIGluZGljYXRpb24gb2YgYW4gZXZlbnQgb3IgZXh0ZXJuYWwgZWxlbWVudCBiZWluZyBkcmFnZ2VkLgoJLy8gYGV2ZW50TG9jYXRpb25gIGhhcyB6b25lZCBzdGFydCBhbmQgZW5kIChvcHRpb25hbCkKCXJlbmRlckRyYWc6IGZ1bmN0aW9uKGV2ZW50TG9jYXRpb24sIHNlZykgewoJCXZhciBldmVudFNwYW5zID0gdGhpcy5ldmVudFRvU3BhbnMoZXZlbnRMb2NhdGlvbik7CgkJdmFyIGk7CgoJCS8vIGFsd2F5cyByZW5kZXIgYSBoaWdobGlnaHQgdW5kZXJuZWF0aAoJCWZvciAoaSA9IDA7IGkgPCBldmVudFNwYW5zLmxlbmd0aDsgaSsrKSB7CgkJCXRoaXMucmVuZGVySGlnaGxpZ2h0KGV2ZW50U3BhbnNbaV0pOwoJCX0KCgkJLy8gaWYgYSBzZWdtZW50IGZyb20gdGhlIHNhbWUgY2FsZW5kYXIgYnV0IGFub3RoZXIgY29tcG9uZW50IGlzIGJlaW5nIGRyYWdnZWQsIHJlbmRlciBhIGhlbHBlciBldmVudAoJCWlmIChzZWcgJiYgc2VnLmNvbXBvbmVudCAhPT0gdGhpcykgewoJCQlyZXR1cm4gdGhpcy5yZW5kZXJFdmVudExvY2F0aW9uSGVscGVyKGV2ZW50TG9jYXRpb24sIHNlZyk7IC8vIHJldHVybnMgbW9jayBldmVudCBlbGVtZW50cwoJCX0KCX0sCgoKCS8vIFVucmVuZGVycyBhbnkgdmlzdWFsIGluZGljYXRpb24gb2YgYSBob3ZlcmluZyBldmVudAoJdW5yZW5kZXJEcmFnOiBmdW5jdGlvbigpIHsKCQl0aGlzLnVucmVuZGVySGlnaGxpZ2h0KCk7CgkJdGhpcy51bnJlbmRlckhlbHBlcigpOwoJfSwKCgoJLyogRXZlbnQgUmVzaXplIFZpc3VhbGl6YXRpb24KCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFJlbmRlcnMgYSB2aXN1YWwgaW5kaWNhdGlvbiBvZiBhbiBldmVudCBiZWluZyByZXNpemVkCglyZW5kZXJFdmVudFJlc2l6ZTogZnVuY3Rpb24oZXZlbnRMb2NhdGlvbiwgc2VnKSB7CgkJdmFyIGV2ZW50U3BhbnMgPSB0aGlzLmV2ZW50VG9TcGFucyhldmVudExvY2F0aW9uKTsKCQl2YXIgaTsKCgkJZm9yIChpID0gMDsgaSA8IGV2ZW50U3BhbnMubGVuZ3RoOyBpKyspIHsKCQkJdGhpcy5yZW5kZXJIaWdobGlnaHQoZXZlbnRTcGFuc1tpXSk7CgkJfQoKCQlyZXR1cm4gdGhpcy5yZW5kZXJFdmVudExvY2F0aW9uSGVscGVyKGV2ZW50TG9jYXRpb24sIHNlZyk7IC8vIHJldHVybnMgbW9jayBldmVudCBlbGVtZW50cwoJfSwKCgoJLy8gVW5yZW5kZXJzIGEgdmlzdWFsIGluZGljYXRpb24gb2YgYW4gZXZlbnQgYmVpbmcgcmVzaXplZAoJdW5yZW5kZXJFdmVudFJlc2l6ZTogZnVuY3Rpb24oKSB7CgkJdGhpcy51bnJlbmRlckhpZ2hsaWdodCgpOwoJCXRoaXMudW5yZW5kZXJIZWxwZXIoKTsKCX0sCgoKCS8qIEV2ZW50IEhlbHBlcgoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gUmVuZGVycyBhIG1vY2sgImhlbHBlciIgZXZlbnQuIGBzb3VyY2VTZWdgIGlzIHRoZSBhc3NvY2lhdGVkIGludGVybmFsIHNlZ21lbnQgb2JqZWN0LiBJdCBjYW4gYmUgbnVsbC4KCXJlbmRlckhlbHBlcjogZnVuY3Rpb24oZXZlbnQsIHNvdXJjZVNlZykgewoJCXZhciBoZWxwZXJOb2RlcyA9IFtdOwoJCXZhciBzZWdzID0gdGhpcy5ldmVudFRvU2VncyhldmVudCk7CgkJdmFyIHJvd1N0cnVjdHM7CgoJCXNlZ3MgPSB0aGlzLnJlbmRlckZnU2VnRWxzKHNlZ3MpOyAvLyBhc3NpZ25zIGVhY2ggc2VnJ3MgZWwgYW5kIHJldHVybnMgYSBzdWJzZXQgb2Ygc2VncyB0aGF0IHdlcmUgcmVuZGVyZWQKCQlyb3dTdHJ1Y3RzID0gdGhpcy5yZW5kZXJTZWdSb3dzKHNlZ3MpOwoKCQkvLyBpbmplY3QgZWFjaCBuZXcgZXZlbnQgc2tlbGV0b24gaW50byBlYWNoIGFzc29jaWF0ZWQgcm93CgkJdGhpcy5yb3dFbHMuZWFjaChmdW5jdGlvbihyb3csIHJvd05vZGUpIHsKCQkJdmFyIHJvd0VsID0gJChyb3dOb2RlKTsgLy8gdGhlIC5mYy1yb3cKCQkJdmFyIHNrZWxldG9uRWwgPSAkKCc8ZGl2IGNsYXNzPSJmYy1oZWxwZXItc2tlbGV0b24iPjx0YWJsZS8+PC9kaXY+Jyk7IC8vIHdpbGwgYmUgYWJzb2x1dGVseSBwb3NpdGlvbmVkCgkJCXZhciBza2VsZXRvblRvcDsKCgkJCS8vIElmIHRoZXJlIGlzIGFuIG9yaWdpbmFsIHNlZ21lbnQsIG1hdGNoIHRoZSB0b3AgcG9zaXRpb24uIE90aGVyd2lzZSwgcHV0IGl0IGF0IHRoZSByb3cncyB0b3AgbGV2ZWwKCQkJaWYgKHNvdXJjZVNlZyAmJiBzb3VyY2VTZWcucm93ID09PSByb3cpIHsKCQkJCXNrZWxldG9uVG9wID0gc291cmNlU2VnLmVsLnBvc2l0aW9uKCkudG9wOwoJCQl9CgkJCWVsc2UgewoJCQkJc2tlbGV0b25Ub3AgPSByb3dFbC5maW5kKCcuZmMtY29udGVudC1za2VsZXRvbiB0Ym9keScpLnBvc2l0aW9uKCkudG9wOwoJCQl9CgoJCQlza2VsZXRvbkVsLmNzcygndG9wJywgc2tlbGV0b25Ub3ApCgkJCQkuZmluZCgndGFibGUnKQoJCQkJCS5hcHBlbmQocm93U3RydWN0c1tyb3ddLnRib2R5RWwpOwoKCQkJcm93RWwuYXBwZW5kKHNrZWxldG9uRWwpOwoJCQloZWxwZXJOb2Rlcy5wdXNoKHNrZWxldG9uRWxbMF0pOwoJCX0pOwoKCQlyZXR1cm4gKCAvLyBtdXN0IHJldHVybiB0aGUgZWxlbWVudHMgcmVuZGVyZWQKCQkJdGhpcy5oZWxwZXJFbHMgPSAkKGhlbHBlck5vZGVzKSAvLyBhcnJheSAtPiBqUXVlcnkgc2V0CgkJKTsKCX0sCgoKCS8vIFVucmVuZGVycyBhbnkgdmlzdWFsIGluZGljYXRpb24gb2YgYSBtb2NrIGhlbHBlciBldmVudAoJdW5yZW5kZXJIZWxwZXI6IGZ1bmN0aW9uKCkgewoJCWlmICh0aGlzLmhlbHBlckVscykgewoJCQl0aGlzLmhlbHBlckVscy5yZW1vdmUoKTsKCQkJdGhpcy5oZWxwZXJFbHMgPSBudWxsOwoJCX0KCX0sCgoKCS8qIEZpbGwgU3lzdGVtIChoaWdobGlnaHQsIGJhY2tncm91bmQgZXZlbnRzLCBidXNpbmVzcyBob3VycykKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCWZpbGxTZWdUYWc6ICd0ZCcsIC8vIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHRhZyBuYW1lCgoKCS8vIFJlbmRlcnMgYSBzZXQgb2YgcmVjdGFuZ2xlcyBvdmVyIHRoZSBnaXZlbiBzZWdtZW50cyBvZiBkYXlzLgoJLy8gT25seSByZXR1cm5zIHNlZ21lbnRzIHRoYXQgc3VjY2Vzc2Z1bGx5IHJlbmRlcmVkLgoJcmVuZGVyRmlsbDogZnVuY3Rpb24odHlwZSwgc2VncywgY2xhc3NOYW1lKSB7CgkJdmFyIG5vZGVzID0gW107CgkJdmFyIGksIHNlZzsKCQl2YXIgc2tlbGV0b25FbDsKCgkJc2VncyA9IHRoaXMucmVuZGVyRmlsbFNlZ0Vscyh0eXBlLCBzZWdzKTsgLy8gYXNzaWduZXMgYC5lbGAgdG8gZWFjaCBzZWcuIHJldHVybnMgc3VjY2Vzc2Z1bGx5IHJlbmRlcmVkIHNlZ3MKCgkJZm9yIChpID0gMDsgaSA8IHNlZ3MubGVuZ3RoOyBpKyspIHsKCQkJc2VnID0gc2Vnc1tpXTsKCQkJc2tlbGV0b25FbCA9IHRoaXMucmVuZGVyRmlsbFJvdyh0eXBlLCBzZWcsIGNsYXNzTmFtZSk7CgkJCXRoaXMucm93RWxzLmVxKHNlZy5yb3cpLmFwcGVuZChza2VsZXRvbkVsKTsKCQkJbm9kZXMucHVzaChza2VsZXRvbkVsWzBdKTsKCQl9CgoJCXRoaXMuZWxzQnlGaWxsW3R5cGVdID0gJChub2Rlcyk7CgoJCXJldHVybiBzZWdzOwoJfSwKCgoJLy8gR2VuZXJhdGVzIHRoZSBIVE1MIG5lZWRlZCBmb3Igb25lIHJvdyBvZiBhIGZpbGwuIFJlcXVpcmVzIHRoZSBzZWcncyBlbCB0byBiZSByZW5kZXJlZC4KCXJlbmRlckZpbGxSb3c6IGZ1bmN0aW9uKHR5cGUsIHNlZywgY2xhc3NOYW1lKSB7CgkJdmFyIGNvbENudCA9IHRoaXMuY29sQ250OwoJCXZhciBzdGFydENvbCA9IHNlZy5sZWZ0Q29sOwoJCXZhciBlbmRDb2wgPSBzZWcucmlnaHRDb2wgKyAxOwoJCXZhciBza2VsZXRvbkVsOwoJCXZhciB0ckVsOwoKCQljbGFzc05hbWUgPSBjbGFzc05hbWUgfHwgdHlwZS50b0xvd2VyQ2FzZSgpOwoKCQlza2VsZXRvbkVsID0gJCgKCQkJJzxkaXYgY2xhc3M9ImZjLScgKyBjbGFzc05hbWUgKyAnLXNrZWxldG9uIj4nICsKCQkJCSc8dGFibGU+PHRyLz48L3RhYmxlPicgKwoJCQknPC9kaXY+JwoJCSk7CgkJdHJFbCA9IHNrZWxldG9uRWwuZmluZCgndHInKTsKCgkJaWYgKHN0YXJ0Q29sID4gMCkgewoJCQl0ckVsLmFwcGVuZCgnPHRkIGNvbHNwYW49IicgKyBzdGFydENvbCArICciLz4nKTsKCQl9CgoJCXRyRWwuYXBwZW5kKAoJCQlzZWcuZWwuYXR0cignY29sc3BhbicsIGVuZENvbCAtIHN0YXJ0Q29sKQoJCSk7CgoJCWlmIChlbmRDb2wgPCBjb2xDbnQpIHsKCQkJdHJFbC5hcHBlbmQoJzx0ZCBjb2xzcGFuPSInICsgKGNvbENudCAtIGVuZENvbCkgKyAnIi8+Jyk7CgkJfQoKCQl0aGlzLmJvb2tlbmRDZWxscyh0ckVsKTsKCgkJcmV0dXJuIHNrZWxldG9uRWw7Cgl9Cgp9KTsKCjs7CgovKiBFdmVudC1yZW5kZXJpbmcgbWV0aG9kcyBmb3IgdGhlIERheUdyaWQgY2xhc3MKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgpEYXlHcmlkLm1peGluKHsKCglyb3dTdHJ1Y3RzOiBudWxsLCAvLyBhbiBhcnJheSBvZiBvYmplY3RzLCBlYWNoIGhvbGRpbmcgaW5mb3JtYXRpb24gYWJvdXQgYSByb3cncyBmb3JlZ3JvdW5kIGV2ZW50LXJlbmRlcmluZwoKCgkvLyBVbnJlbmRlcnMgYWxsIGV2ZW50cyBjdXJyZW50bHkgcmVuZGVyZWQgb24gdGhlIGdyaWQKCXVucmVuZGVyRXZlbnRzOiBmdW5jdGlvbigpIHsKCQl0aGlzLnJlbW92ZVNlZ1BvcG92ZXIoKTsgLy8gcmVtb3ZlcyB0aGUgIm1vcmUuLiIgZXZlbnRzIHBvcG92ZXIKCQlHcmlkLnByb3RvdHlwZS51bnJlbmRlckV2ZW50cy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyAvLyBjYWxscyB0aGUgc3VwZXItbWV0aG9kCgl9LAoKCgkvLyBSZXRyaWV2ZXMgYWxsIHJlbmRlcmVkIHNlZ21lbnQgb2JqZWN0cyBjdXJyZW50bHkgcmVuZGVyZWQgb24gdGhlIGdyaWQKCWdldEV2ZW50U2VnczogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIEdyaWQucHJvdG90eXBlLmdldEV2ZW50U2Vncy5jYWxsKHRoaXMpIC8vIGdldCB0aGUgc2VnbWVudHMgZnJvbSB0aGUgc3VwZXItbWV0aG9kCgkJCS5jb25jYXQodGhpcy5wb3BvdmVyU2VncyB8fCBbXSk7IC8vIGFwcGVuZCB0aGUgc2VnbWVudHMgZnJvbSB0aGUgIm1vcmUuLi4iIHBvcG92ZXIKCX0sCgoKCS8vIFJlbmRlcnMgdGhlIGdpdmVuIGJhY2tncm91bmQgZXZlbnQgc2VnbWVudHMgb250byB0aGUgZ3JpZAoJcmVuZGVyQmdTZWdzOiBmdW5jdGlvbihzZWdzKSB7CgoJCS8vIGRvbid0IHJlbmRlciB0aW1lZCBiYWNrZ3JvdW5kIGV2ZW50cwoJCXZhciBhbGxEYXlTZWdzID0gJC5ncmVwKHNlZ3MsIGZ1bmN0aW9uKHNlZykgewoJCQlyZXR1cm4gc2VnLmV2ZW50LmFsbERheTsKCQl9KTsKCgkJcmV0dXJuIEdyaWQucHJvdG90eXBlLnJlbmRlckJnU2Vncy5jYWxsKHRoaXMsIGFsbERheVNlZ3MpOyAvLyBjYWxsIHRoZSBzdXBlci1tZXRob2QKCX0sCgoKCS8vIFJlbmRlcnMgdGhlIGdpdmVuIGZvcmVncm91bmQgZXZlbnQgc2VnbWVudHMgb250byB0aGUgZ3JpZAoJcmVuZGVyRmdTZWdzOiBmdW5jdGlvbihzZWdzKSB7CgkJdmFyIHJvd1N0cnVjdHM7CgoJCS8vIHJlbmRlciBhbiBgLmVsYCBvbiBlYWNoIHNlZwoJCS8vIHJldHVybnMgYSBzdWJzZXQgb2YgdGhlIHNlZ3MuIHNlZ3MgdGhhdCB3ZXJlIGFjdHVhbGx5IHJlbmRlcmVkCgkJc2VncyA9IHRoaXMucmVuZGVyRmdTZWdFbHMoc2Vncyk7CgoJCXJvd1N0cnVjdHMgPSB0aGlzLnJvd1N0cnVjdHMgPSB0aGlzLnJlbmRlclNlZ1Jvd3Moc2Vncyk7CgoJCS8vIGFwcGVuZCB0byBlYWNoIHJvdydzIGNvbnRlbnQgc2tlbGV0b24KCQl0aGlzLnJvd0Vscy5lYWNoKGZ1bmN0aW9uKGksIHJvd05vZGUpIHsKCQkJJChyb3dOb2RlKS5maW5kKCcuZmMtY29udGVudC1za2VsZXRvbiA+IHRhYmxlJykuYXBwZW5kKAoJCQkJcm93U3RydWN0c1tpXS50Ym9keUVsCgkJCSk7CgkJfSk7CgoJCXJldHVybiBzZWdzOyAvLyByZXR1cm4gb25seSB0aGUgc2VncyB0aGF0IHdlcmUgYWN0dWFsbHkgcmVuZGVyZWQKCX0sCgoKCS8vIFVucmVuZGVycyBhbGwgY3VycmVudGx5IHJlbmRlcmVkIGZvcmVncm91bmQgZXZlbnQgc2VnbWVudHMKCXVucmVuZGVyRmdTZWdzOiBmdW5jdGlvbigpIHsKCQl2YXIgcm93U3RydWN0cyA9IHRoaXMucm93U3RydWN0cyB8fCBbXTsKCQl2YXIgcm93U3RydWN0OwoKCQl3aGlsZSAoKHJvd1N0cnVjdCA9IHJvd1N0cnVjdHMucG9wKCkpKSB7CgkJCXJvd1N0cnVjdC50Ym9keUVsLnJlbW92ZSgpOwoJCX0KCgkJdGhpcy5yb3dTdHJ1Y3RzID0gbnVsbDsKCX0sCgoKCS8vIFVzZXMgdGhlIGdpdmVuIGV2ZW50cyBhcnJheSB0byBnZW5lcmF0ZSA8dGJvZHk+IGVsZW1lbnRzIHRoYXQgc2hvdWxkIGJlIGFwcGVuZGVkIHRvIGVhY2ggcm93J3MgY29udGVudCBza2VsZXRvbi4KCS8vIFJldHVybnMgYW4gYXJyYXkgb2Ygcm93U3RydWN0IG9iamVjdHMgKHNlZSB0aGUgYm90dG9tIG9mIGByZW5kZXJTZWdSb3dgKS4KCS8vIFBSRUNPTkRJVElPTjogZWFjaCBzZWdtZW50IHNob3VkIGFscmVhZHkgaGF2ZSBhIHJlbmRlcmVkIGFuZCBhc3NpZ25lZCBgLmVsYAoJcmVuZGVyU2VnUm93czogZnVuY3Rpb24oc2VncykgewoJCXZhciByb3dTdHJ1Y3RzID0gW107CgkJdmFyIHNlZ1Jvd3M7CgkJdmFyIHJvdzsKCgkJc2VnUm93cyA9IHRoaXMuZ3JvdXBTZWdSb3dzKHNlZ3MpOyAvLyBncm91cCBpbnRvIG5lc3RlZCBhcnJheXMKCgkJLy8gaXRlcmF0ZSBlYWNoIHJvdyBvZiBzZWdtZW50IGdyb3VwaW5ncwoJCWZvciAocm93ID0gMDsgcm93IDwgc2VnUm93cy5sZW5ndGg7IHJvdysrKSB7CgkJCXJvd1N0cnVjdHMucHVzaCgKCQkJCXRoaXMucmVuZGVyU2VnUm93KHJvdywgc2VnUm93c1tyb3ddKQoJCQkpOwoJCX0KCgkJcmV0dXJuIHJvd1N0cnVjdHM7Cgl9LAoKCgkvLyBCdWlsZHMgdGhlIEhUTUwgdG8gYmUgdXNlZCBmb3IgdGhlIGRlZmF1bHQgZWxlbWVudCBmb3IgYW4gaW5kaXZpZHVhbCBzZWdtZW50CglmZ1NlZ0h0bWw6IGZ1bmN0aW9uKHNlZywgZGlzYWJsZVJlc2l6aW5nKSB7CgkJdmFyIHZpZXcgPSB0aGlzLnZpZXc7CgkJdmFyIGV2ZW50ID0gc2VnLmV2ZW50OwoJCXZhciBpc0RyYWdnYWJsZSA9IHZpZXcuaXNFdmVudERyYWdnYWJsZShldmVudCk7CgkJdmFyIGlzUmVzaXphYmxlRnJvbVN0YXJ0ID0gIWRpc2FibGVSZXNpemluZyAmJiBldmVudC5hbGxEYXkgJiYKCQkJc2VnLmlzU3RhcnQgJiYgdmlldy5pc0V2ZW50UmVzaXphYmxlRnJvbVN0YXJ0KGV2ZW50KTsKCQl2YXIgaXNSZXNpemFibGVGcm9tRW5kID0gIWRpc2FibGVSZXNpemluZyAmJiBldmVudC5hbGxEYXkgJiYKCQkJc2VnLmlzRW5kICYmIHZpZXcuaXNFdmVudFJlc2l6YWJsZUZyb21FbmQoZXZlbnQpOwoJCXZhciBjbGFzc2VzID0gdGhpcy5nZXRTZWdDbGFzc2VzKHNlZywgaXNEcmFnZ2FibGUsIGlzUmVzaXphYmxlRnJvbVN0YXJ0IHx8IGlzUmVzaXphYmxlRnJvbUVuZCk7CgkJdmFyIHNraW5Dc3MgPSBjc3NUb1N0cih0aGlzLmdldFNlZ1NraW5Dc3Moc2VnKSk7CgkJdmFyIHRpbWVIdG1sID0gJyc7CgkJdmFyIHRpbWVUZXh0OwoJCXZhciB0aXRsZUh0bWw7CgoJCWNsYXNzZXMudW5zaGlmdCgnZmMtZGF5LWdyaWQtZXZlbnQnLCAnZmMtaC1ldmVudCcpOwoKCQkvLyBPbmx5IGRpc3BsYXkgYSB0aW1lZCBldmVudHMgdGltZSBpZiBpdCBpcyB0aGUgc3RhcnRpbmcgc2VnbWVudAoJCWlmIChzZWcuaXNTdGFydCkgewoJCQl0aW1lVGV4dCA9IHRoaXMuZ2V0RXZlbnRUaW1lVGV4dChldmVudCk7CgkJCWlmICh0aW1lVGV4dCkgewoJCQkJdGltZUh0bWwgPSAnPHNwYW4gY2xhc3M9ImZjLXRpbWUiPicgKyBodG1sRXNjYXBlKHRpbWVUZXh0KSArICc8L3NwYW4+JzsKCQkJfQoJCX0KCgkJdGl0bGVIdG1sID0KCQkJJzxzcGFuIGNsYXNzPSJmYy10aXRsZSI+JyArCgkJCQkoaHRtbEVzY2FwZShldmVudC50aXRsZSB8fCAnJykgfHwgJyZuYnNwOycpICsgLy8gd2UgYWx3YXlzIHdhbnQgb25lIGxpbmUgb2YgaGVpZ2h0CgkJCSc8L3NwYW4+JzsKCQkKCQlyZXR1cm4gJzxhIGNsYXNzPSInICsgY2xhc3Nlcy5qb2luKCcgJykgKyAnIicgKwoJCQkJKGV2ZW50LnVybCA/CgkJCQkJJyBocmVmPSInICsgaHRtbEVzY2FwZShldmVudC51cmwpICsgJyInIDoKCQkJCQknJwoJCQkJCSkgKwoJCQkJKHNraW5Dc3MgPwoJCQkJCScgc3R5bGU9IicgKyBza2luQ3NzICsgJyInIDoKCQkJCQknJwoJCQkJCSkgKwoJCQknPicgKwoJCQkJJzxkaXYgY2xhc3M9ImZjLWNvbnRlbnQiPicgKwoJCQkJCSh0aGlzLmlzUlRMID8KCQkJCQkJdGl0bGVIdG1sICsgJyAnICsgdGltZUh0bWwgOiAvLyBwdXQgYSBuYXR1cmFsIHNwYWNlIGluIGJldHdlZW4KCQkJCQkJdGltZUh0bWwgKyAnICcgKyB0aXRsZUh0bWwgICAvLwoJCQkJCQkpICsKCQkJCSc8L2Rpdj4nICsKCQkJCShpc1Jlc2l6YWJsZUZyb21TdGFydCA/CgkJCQkJJzxkaXYgY2xhc3M9ImZjLXJlc2l6ZXIgZmMtc3RhcnQtcmVzaXplciIgLz4nIDoKCQkJCQknJwoJCQkJCSkgKwoJCQkJKGlzUmVzaXphYmxlRnJvbUVuZCA/CgkJCQkJJzxkaXYgY2xhc3M9ImZjLXJlc2l6ZXIgZmMtZW5kLXJlc2l6ZXIiIC8+JyA6CgkJCQkJJycKCQkJCQkpICsKCQkJJzwvYT4nOwoJfSwKCgoJLy8gR2l2ZW4gYSByb3cgIyBhbmQgYW4gYXJyYXkgb2Ygc2VnbWVudHMgYWxsIGluIHRoZSBzYW1lIHJvdywgcmVuZGVyIGEgPHRib2R5PiBlbGVtZW50LCBhIHNrZWxldG9uIHRoYXQgY29udGFpbnMKCS8vIHRoZSBzZWdtZW50cy4gUmV0dXJucyBvYmplY3Qgd2l0aCBhIGJ1bmNoIG9mIGludGVybmFsIGRhdGEgYWJvdXQgaG93IHRoZSByZW5kZXIgd2FzIGNhbGN1bGF0ZWQuCgkvLyBOT1RFOiBtb2RpZmllcyByb3dTZWdzCglyZW5kZXJTZWdSb3c6IGZ1bmN0aW9uKHJvdywgcm93U2VncykgewoJCXZhciBjb2xDbnQgPSB0aGlzLmNvbENudDsKCQl2YXIgc2VnTGV2ZWxzID0gdGhpcy5idWlsZFNlZ0xldmVscyhyb3dTZWdzKTsgLy8gZ3JvdXAgaW50byBzdWItYXJyYXlzIG9mIGxldmVscwoJCXZhciBsZXZlbENudCA9IE1hdGgubWF4KDEsIHNlZ0xldmVscy5sZW5ndGgpOyAvLyBlbnN1cmUgYXQgbGVhc3Qgb25lIGxldmVsCgkJdmFyIHRib2R5ID0gJCgnPHRib2R5Lz4nKTsKCQl2YXIgc2VnTWF0cml4ID0gW107IC8vIGxvb2t1cCBmb3Igd2hpY2ggc2VnbWVudHMgYXJlIHJlbmRlcmVkIGludG8gd2hpY2ggbGV2ZWwrY29sIGNlbGxzCgkJdmFyIGNlbGxNYXRyaXggPSBbXTsgLy8gbG9va3VwIGZvciBhbGwgPHRkPiBlbGVtZW50cyBvZiB0aGUgbGV2ZWwrY29sIG1hdHJpeAoJCXZhciBsb25lQ2VsbE1hdHJpeCA9IFtdOyAvLyBsb29rdXAgZm9yIDx0ZD4gZWxlbWVudHMgdGhhdCBvbmx5IHRha2UgdXAgYSBzaW5nbGUgY29sdW1uCgkJdmFyIGksIGxldmVsU2VnczsKCQl2YXIgY29sOwoJCXZhciB0cjsKCQl2YXIgaiwgc2VnOwoJCXZhciB0ZDsKCgkJLy8gcG9wdWxhdGVzIGVtcHR5IGNlbGxzIGZyb20gdGhlIGN1cnJlbnQgY29sdW1uIChgY29sYCkgdG8gYGVuZENvbGAKCQlmdW5jdGlvbiBlbXB0eUNlbGxzVW50aWwoZW5kQ29sKSB7CgkJCXdoaWxlIChjb2wgPCBlbmRDb2wpIHsKCQkJCS8vIHRyeSB0byBncmFiIGEgY2VsbCBmcm9tIHRoZSBsZXZlbCBhYm92ZSBhbmQgZXh0ZW5kIGl0cyByb3dzcGFuLiBvdGhlcndpc2UsIGNyZWF0ZSBhIGZyZXNoIGNlbGwKCQkJCXRkID0gKGxvbmVDZWxsTWF0cml4W2kgLSAxXSB8fCBbXSlbY29sXTsKCQkJCWlmICh0ZCkgewoJCQkJCXRkLmF0dHIoCgkJCQkJCSdyb3dzcGFuJywKCQkJCQkJcGFyc2VJbnQodGQuYXR0cigncm93c3BhbicpIHx8IDEsIDEwKSArIDEKCQkJCQkpOwoJCQkJfQoJCQkJZWxzZSB7CgkJCQkJdGQgPSAkKCc8dGQvPicpOwoJCQkJCXRyLmFwcGVuZCh0ZCk7CgkJCQl9CgkJCQljZWxsTWF0cml4W2ldW2NvbF0gPSB0ZDsKCQkJCWxvbmVDZWxsTWF0cml4W2ldW2NvbF0gPSB0ZDsKCQkJCWNvbCsrOwoJCQl9CgkJfQoKCQlmb3IgKGkgPSAwOyBpIDwgbGV2ZWxDbnQ7IGkrKykgeyAvLyBpdGVyYXRlIHRocm91Z2ggYWxsIGxldmVscwoJCQlsZXZlbFNlZ3MgPSBzZWdMZXZlbHNbaV07CgkJCWNvbCA9IDA7CgkJCXRyID0gJCgnPHRyLz4nKTsKCgkJCXNlZ01hdHJpeC5wdXNoKFtdKTsKCQkJY2VsbE1hdHJpeC5wdXNoKFtdKTsKCQkJbG9uZUNlbGxNYXRyaXgucHVzaChbXSk7CgoJCQkvLyBsZXZlbENudCBtaWdodCBiZSAxIGV2ZW4gdGhvdWdoIHRoZXJlIGFyZSBubyBhY3R1YWwgbGV2ZWxzLiBwcm90ZWN0IGFnYWluc3QgdGhpcy4KCQkJLy8gdGhpcyBzaW5nbGUgZW1wdHkgcm93IGlzIHVzZWZ1bCBmb3Igc3R5bGluZy4KCQkJaWYgKGxldmVsU2VncykgewoJCQkJZm9yIChqID0gMDsgaiA8IGxldmVsU2Vncy5sZW5ndGg7IGorKykgeyAvLyBpdGVyYXRlIHRocm91Z2ggc2VnbWVudHMgaW4gbGV2ZWwKCQkJCQlzZWcgPSBsZXZlbFNlZ3Nbal07CgoJCQkJCWVtcHR5Q2VsbHNVbnRpbChzZWcubGVmdENvbCk7CgoJCQkJCS8vIGNyZWF0ZSBhIGNvbnRhaW5lciB0aGF0IG9jY3VwaWVzIG9yIG1vcmUgY29sdW1ucy4gYXBwZW5kIHRoZSBldmVudCBlbGVtZW50LgoJCQkJCXRkID0gJCgnPHRkIGNsYXNzPSJmYy1ldmVudC1jb250YWluZXIiLz4nKS5hcHBlbmQoc2VnLmVsKTsKCQkJCQlpZiAoc2VnLmxlZnRDb2wgIT0gc2VnLnJpZ2h0Q29sKSB7CgkJCQkJCXRkLmF0dHIoJ2NvbHNwYW4nLCBzZWcucmlnaHRDb2wgLSBzZWcubGVmdENvbCArIDEpOwoJCQkJCX0KCQkJCQllbHNlIHsgLy8gYSBzaW5nbGUtY29sdW1uIHNlZ21lbnQKCQkJCQkJbG9uZUNlbGxNYXRyaXhbaV1bY29sXSA9IHRkOwoJCQkJCX0KCgkJCQkJd2hpbGUgKGNvbCA8PSBzZWcucmlnaHRDb2wpIHsKCQkJCQkJY2VsbE1hdHJpeFtpXVtjb2xdID0gdGQ7CgkJCQkJCXNlZ01hdHJpeFtpXVtjb2xdID0gc2VnOwoJCQkJCQljb2wrKzsKCQkJCQl9CgoJCQkJCXRyLmFwcGVuZCh0ZCk7CgkJCQl9CgkJCX0KCgkJCWVtcHR5Q2VsbHNVbnRpbChjb2xDbnQpOyAvLyBmaW5pc2ggb2ZmIHRoZSByb3cKCQkJdGhpcy5ib29rZW5kQ2VsbHModHIpOwoJCQl0Ym9keS5hcHBlbmQodHIpOwoJCX0KCgkJcmV0dXJuIHsgLy8gYSAicm93U3RydWN0IgoJCQlyb3c6IHJvdywgLy8gdGhlIHJvdyBudW1iZXIKCQkJdGJvZHlFbDogdGJvZHksCgkJCWNlbGxNYXRyaXg6IGNlbGxNYXRyaXgsCgkJCXNlZ01hdHJpeDogc2VnTWF0cml4LAoJCQlzZWdMZXZlbHM6IHNlZ0xldmVscywKCQkJc2Vnczogcm93U2VncwoJCX07Cgl9LAoKCgkvLyBTdGFja3MgYSBmbGF0IGFycmF5IG9mIHNlZ21lbnRzLCB3aGljaCBhcmUgYWxsIGFzc3VtZWQgdG8gYmUgaW4gdGhlIHNhbWUgcm93LCBpbnRvIHN1YmFycmF5cyBvZiB2ZXJ0aWNhbCBsZXZlbHMuCgkvLyBOT1RFOiBtb2RpZmllcyBzZWdzCglidWlsZFNlZ0xldmVsczogZnVuY3Rpb24oc2VncykgewoJCXZhciBsZXZlbHMgPSBbXTsKCQl2YXIgaSwgc2VnOwoJCXZhciBqOwoKCQkvLyBHaXZlIHByZWZlcmVuY2UgdG8gZWxlbWVudHMgd2l0aCBjZXJ0YWluIGNyaXRlcmlhLCBzbyB0aGV5IGhhdmUKCQkvLyBhIGNoYW5jZSB0byBiZSBjbG9zZXIgdG8gdGhlIHRvcC4KCQl0aGlzLnNvcnRFdmVudFNlZ3Moc2Vncyk7CgkJCgkJZm9yIChpID0gMDsgaSA8IHNlZ3MubGVuZ3RoOyBpKyspIHsKCQkJc2VnID0gc2Vnc1tpXTsKCgkJCS8vIGxvb3AgdGhyb3VnaCBsZXZlbHMsIHN0YXJ0aW5nIHdpdGggdGhlIHRvcG1vc3QsIHVudGlsIHRoZSBzZWdtZW50IGRvZXNuJ3QgY29sbGlkZSB3aXRoIG90aGVyIHNlZ21lbnRzCgkJCWZvciAoaiA9IDA7IGogPCBsZXZlbHMubGVuZ3RoOyBqKyspIHsKCQkJCWlmICghaXNEYXlTZWdDb2xsaXNpb24oc2VnLCBsZXZlbHNbal0pKSB7CgkJCQkJYnJlYWs7CgkJCQl9CgkJCX0KCQkJLy8gYGpgIG5vdyBob2xkcyB0aGUgZGVzaXJlZCBzdWJyb3cgaW5kZXgKCQkJc2VnLmxldmVsID0gajsKCgkJCS8vIGNyZWF0ZSBuZXcgbGV2ZWwgYXJyYXkgaWYgbmVlZGVkIGFuZCBhcHBlbmQgc2VnbWVudAoJCQkobGV2ZWxzW2pdIHx8IChsZXZlbHNbal0gPSBbXSkpLnB1c2goc2VnKTsKCQl9CgoJCS8vIG9yZGVyIHNlZ21lbnRzIGxlZnQtdG8tcmlnaHQuIHZlcnkgaW1wb3J0YW50IGlmIGNhbGVuZGFyIGlzIFJUTAoJCWZvciAoaiA9IDA7IGogPCBsZXZlbHMubGVuZ3RoOyBqKyspIHsKCQkJbGV2ZWxzW2pdLnNvcnQoY29tcGFyZURheVNlZ0NvbHMpOwoJCX0KCgkJcmV0dXJuIGxldmVsczsKCX0sCgoKCS8vIEdpdmVuIGEgZmxhdCBhcnJheSBvZiBzZWdtZW50cywgcmV0dXJuIGFuIGFycmF5IG9mIHN1Yi1hcnJheXMsIGdyb3VwZWQgYnkgZWFjaCBzZWdtZW50J3Mgcm93Cglncm91cFNlZ1Jvd3M6IGZ1bmN0aW9uKHNlZ3MpIHsKCQl2YXIgc2VnUm93cyA9IFtdOwoJCXZhciBpOwoKCQlmb3IgKGkgPSAwOyBpIDwgdGhpcy5yb3dDbnQ7IGkrKykgewoJCQlzZWdSb3dzLnB1c2goW10pOwoJCX0KCgkJZm9yIChpID0gMDsgaSA8IHNlZ3MubGVuZ3RoOyBpKyspIHsKCQkJc2VnUm93c1tzZWdzW2ldLnJvd10ucHVzaChzZWdzW2ldKTsKCQl9CgoJCXJldHVybiBzZWdSb3dzOwoJfQoKfSk7CgoKLy8gQ29tcHV0ZXMgd2hldGhlciB0d28gc2VnbWVudHMnIGNvbHVtbnMgY29sbGlkZS4gVGhleSBhcmUgYXNzdW1lZCB0byBiZSBpbiB0aGUgc2FtZSByb3cuCmZ1bmN0aW9uIGlzRGF5U2VnQ29sbGlzaW9uKHNlZywgb3RoZXJTZWdzKSB7Cgl2YXIgaSwgb3RoZXJTZWc7CgoJZm9yIChpID0gMDsgaSA8IG90aGVyU2Vncy5sZW5ndGg7IGkrKykgewoJCW90aGVyU2VnID0gb3RoZXJTZWdzW2ldOwoKCQlpZiAoCgkJCW90aGVyU2VnLmxlZnRDb2wgPD0gc2VnLnJpZ2h0Q29sICYmCgkJCW90aGVyU2VnLnJpZ2h0Q29sID49IHNlZy5sZWZ0Q29sCgkJKSB7CgkJCXJldHVybiB0cnVlOwoJCX0KCX0KCglyZXR1cm4gZmFsc2U7Cn0KCgovLyBBIGNtcCBmdW5jdGlvbiBmb3IgZGV0ZXJtaW5pbmcgdGhlIGxlZnRtb3N0IGV2ZW50CmZ1bmN0aW9uIGNvbXBhcmVEYXlTZWdDb2xzKGEsIGIpIHsKCXJldHVybiBhLmxlZnRDb2wgLSBiLmxlZnRDb2w7Cn0KCjs7CgovKiBNZXRob2RzIHJlbGF0ZSB0byBsaW1pdGluZyB0aGUgbnVtYmVyIGV2ZW50cyBmb3IgYSBnaXZlbiBkYXkgb24gYSBEYXlHcmlkCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovLyBOT1RFOiBhbGwgdGhlIHNlZ3MgYmVpbmcgcGFzc2VkIGFyb3VuZCBpbiBoZXJlIGFyZSBmb3JlZ3JvdW5kIHNlZ3MKCkRheUdyaWQubWl4aW4oewoKCXNlZ1BvcG92ZXI6IG51bGwsIC8vIHRoZSBQb3BvdmVyIHRoYXQgaG9sZHMgZXZlbnRzIHRoYXQgY2FuJ3QgZml0IGluIGEgY2VsbC4gbnVsbCB3aGVuIG5vdCB2aXNpYmxlCglwb3BvdmVyU2VnczogbnVsbCwgLy8gYW4gYXJyYXkgb2Ygc2VnbWVudCBvYmplY3RzIHRoYXQgdGhlIHNlZ1BvcG92ZXIgaG9sZHMuIG51bGwgd2hlbiBub3QgdmlzaWJsZQoKCglyZW1vdmVTZWdQb3BvdmVyOiBmdW5jdGlvbigpIHsKCQlpZiAodGhpcy5zZWdQb3BvdmVyKSB7CgkJCXRoaXMuc2VnUG9wb3Zlci5oaWRlKCk7IC8vIGluIGhhbmRsZXIsIHdpbGwgY2FsbCBzZWdQb3BvdmVyJ3MgcmVtb3ZlRWxlbWVudAoJCX0KCX0sCgoKCS8vIExpbWl0cyB0aGUgbnVtYmVyIG9mICJsZXZlbHMiICh2ZXJ0aWNhbGx5IHN0YWNraW5nIGxheWVycyBvZiBldmVudHMpIGZvciBlYWNoIHJvdyBvZiB0aGUgZ3JpZC4KCS8vIGBsZXZlbExpbWl0YCBjYW4gYmUgZmFsc2UgKGRvbid0IGxpbWl0KSwgYSBudW1iZXIsIG9yIHRydWUgKHNob3VsZCBiZSBjb21wdXRlZCkuCglsaW1pdFJvd3M6IGZ1bmN0aW9uKGxldmVsTGltaXQpIHsKCQl2YXIgcm93U3RydWN0cyA9IHRoaXMucm93U3RydWN0cyB8fCBbXTsKCQl2YXIgcm93OyAvLyByb3cgIwoJCXZhciByb3dMZXZlbExpbWl0OwoKCQlmb3IgKHJvdyA9IDA7IHJvdyA8IHJvd1N0cnVjdHMubGVuZ3RoOyByb3crKykgewoJCQl0aGlzLnVubGltaXRSb3cocm93KTsKCgkJCWlmICghbGV2ZWxMaW1pdCkgewoJCQkJcm93TGV2ZWxMaW1pdCA9IGZhbHNlOwoJCQl9CgkJCWVsc2UgaWYgKHR5cGVvZiBsZXZlbExpbWl0ID09PSAnbnVtYmVyJykgewoJCQkJcm93TGV2ZWxMaW1pdCA9IGxldmVsTGltaXQ7CgkJCX0KCQkJZWxzZSB7CgkJCQlyb3dMZXZlbExpbWl0ID0gdGhpcy5jb21wdXRlUm93TGV2ZWxMaW1pdChyb3cpOwoJCQl9CgoJCQlpZiAocm93TGV2ZWxMaW1pdCAhPT0gZmFsc2UpIHsKCQkJCXRoaXMubGltaXRSb3cocm93LCByb3dMZXZlbExpbWl0KTsKCQkJfQoJCX0KCX0sCgoKCS8vIENvbXB1dGVzIHRoZSBudW1iZXIgb2YgbGV2ZWxzIGEgcm93IHdpbGwgYWNjb21vZGF0ZSB3aXRob3V0IGdvaW5nIG91dHNpZGUgaXRzIGJvdW5kcy4KCS8vIEFzc3VtZXMgdGhlIHJvdyBpcyAicmlnaWQiIChtYWludGFpbnMgYSBjb25zdGFudCBoZWlnaHQgcmVnYXJkbGVzcyBvZiB3aGF0IGlzIGluc2lkZSkuCgkvLyBgcm93YCBpcyB0aGUgcm93IG51bWJlci4KCWNvbXB1dGVSb3dMZXZlbExpbWl0OiBmdW5jdGlvbihyb3cpIHsKCQl2YXIgcm93RWwgPSB0aGlzLnJvd0Vscy5lcShyb3cpOyAvLyB0aGUgY29udGFpbmluZyAiZmFrZSIgcm93IGRpdgoJCXZhciByb3dIZWlnaHQgPSByb3dFbC5oZWlnaHQoKTsgLy8gVE9ETzogY2FjaGUgc29tZWhvdz8KCQl2YXIgdHJFbHMgPSB0aGlzLnJvd1N0cnVjdHNbcm93XS50Ym9keUVsLmNoaWxkcmVuKCk7CgkJdmFyIGksIHRyRWw7CgkJdmFyIHRySGVpZ2h0OwoKCQlmdW5jdGlvbiBpdGVySW5uZXJIZWlnaHRzKGksIGNoaWxkTm9kZSkgewoJCQl0ckhlaWdodCA9IE1hdGgubWF4KHRySGVpZ2h0LCAkKGNoaWxkTm9kZSkub3V0ZXJIZWlnaHQoKSk7CgkJfQoKCQkvLyBSZXZlYWwgb25lIGxldmVsIDx0cj4gYXQgYSB0aW1lIGFuZCBzdG9wIHdoZW4gd2UgZmluZCBvbmUgb3V0IG9mIGJvdW5kcwoJCWZvciAoaSA9IDA7IGkgPCB0ckVscy5sZW5ndGg7IGkrKykgewoJCQl0ckVsID0gdHJFbHMuZXEoaSkucmVtb3ZlQ2xhc3MoJ2ZjLWxpbWl0ZWQnKTsgLy8gcmVzZXQgdG8gb3JpZ2luYWwgc3RhdGUgKHJldmVhbCkKCgkJCS8vIHdpdGggcm93c3BhbnM+MSBhbmQgSUU4LCB0ckVsLm91dGVySGVpZ2h0KCkgd291bGQgcmV0dXJuIHRoZSBoZWlnaHQgb2YgdGhlIGxhcmdlc3QgY2VsbCwKCQkJLy8gc28gaW5zdGVhZCwgZmluZCB0aGUgdGFsbGVzdCBpbm5lciBjb250ZW50IGVsZW1lbnQuCgkJCXRySGVpZ2h0ID0gMDsKCQkJdHJFbC5maW5kKCc+IHRkID4gOmZpcnN0LWNoaWxkJykuZWFjaChpdGVySW5uZXJIZWlnaHRzKTsKCgkJCWlmICh0ckVsLnBvc2l0aW9uKCkudG9wICsgdHJIZWlnaHQgPiByb3dIZWlnaHQpIHsKCQkJCXJldHVybiBpOwoJCQl9CgkJfQoKCQlyZXR1cm4gZmFsc2U7IC8vIHNob3VsZCBub3QgbGltaXQgYXQgYWxsCgl9LAoKCgkvLyBMaW1pdHMgdGhlIGdpdmVuIGdyaWQgcm93IHRvIHRoZSBtYXhpbXVtIG51bWJlciBvZiBsZXZlbHMgYW5kIGluamVjdHMgIm1vcmUiIGxpbmtzIGlmIG5lY2Vzc2FyeS4KCS8vIGByb3dgIGlzIHRoZSByb3cgbnVtYmVyLgoJLy8gYGxldmVsTGltaXRgIGlzIGEgbnVtYmVyIGZvciB0aGUgbWF4aW11bSAoaW5jbHVzaXZlKSBudW1iZXIgb2YgbGV2ZWxzIGFsbG93ZWQuCglsaW1pdFJvdzogZnVuY3Rpb24ocm93LCBsZXZlbExpbWl0KSB7CgkJdmFyIF90aGlzID0gdGhpczsKCQl2YXIgcm93U3RydWN0ID0gdGhpcy5yb3dTdHJ1Y3RzW3Jvd107CgkJdmFyIG1vcmVOb2RlcyA9IFtdOyAvLyBhcnJheSBvZiAibW9yZSIgPGE+IGxpbmtzIGFuZCA8dGQ+IERPTSBub2RlcwoJCXZhciBjb2wgPSAwOyAvLyBjb2wgIywgbGVmdC10by1yaWdodCAobm90IGNocm9ub2xvZ2ljYWxseSkKCQl2YXIgbGV2ZWxTZWdzOyAvLyBhcnJheSBvZiBzZWdtZW50IG9iamVjdHMgaW4gdGhlIGxhc3QgYWxsb3dhYmxlIGxldmVsLCBvcmRlcmVkIGxlZnQtdG8tcmlnaHQKCQl2YXIgY2VsbE1hdHJpeDsgLy8gYSBtYXRyaXggKGJ5IGxldmVsLCB0aGVuIGNvbHVtbikgb2YgYWxsIDx0ZD4galF1ZXJ5IGVsZW1lbnRzIGluIHRoZSByb3cKCQl2YXIgbGltaXRlZE5vZGVzOyAvLyBhcnJheSBvZiB0ZW1wb3JhcmlseSBoaWRkZW4gbGV2ZWwgPHRyPiBhbmQgc2VnbWVudCA8dGQ+IERPTSBub2RlcwoJCXZhciBpLCBzZWc7CgkJdmFyIHNlZ3NCZWxvdzsgLy8gYXJyYXkgb2Ygc2VnbWVudCBvYmplY3RzIGJlbG93IGBzZWdgIGluIHRoZSBjdXJyZW50IGBjb2xgCgkJdmFyIHRvdGFsU2Vnc0JlbG93OyAvLyB0b3RhbCBudW1iZXIgb2Ygc2VnbWVudHMgYmVsb3cgYHNlZ2AgaW4gYW55IG9mIHRoZSBjb2x1bW5zIGBzZWdgIG9jY3VwaWVzCgkJdmFyIGNvbFNlZ3NCZWxvdzsgLy8gYXJyYXkgb2Ygc2VnbWVudCBhcnJheXMsIGJlbG93IHNlZywgb25lIGZvciBlYWNoIGNvbHVtbiAob2Zmc2V0IGZyb20gc2VncydzIGZpcnN0IGNvbHVtbikKCQl2YXIgdGQsIHJvd3NwYW47CgkJdmFyIHNlZ01vcmVOb2RlczsgLy8gYXJyYXkgb2YgIm1vcmUiIDx0ZD4gY2VsbHMgdGhhdCB3aWxsIHN0YW5kLWluIGZvciB0aGUgY3VycmVudCBzZWcncyBjZWxsCgkJdmFyIGo7CgkJdmFyIG1vcmVUZCwgbW9yZVdyYXAsIG1vcmVMaW5rOwoKCQkvLyBJdGVyYXRlcyB0aHJvdWdoIGVtcHR5IGxldmVsIGNlbGxzIGFuZCBwbGFjZXMgIm1vcmUiIGxpbmtzIGluc2lkZSBpZiBuZWVkIGJlCgkJZnVuY3Rpb24gZW1wdHlDZWxsc1VudGlsKGVuZENvbCkgeyAvLyBnb2VzIGZyb20gY3VycmVudCBgY29sYCB0byBgZW5kQ29sYAoJCQl3aGlsZSAoY29sIDwgZW5kQ29sKSB7CgkJCQlzZWdzQmVsb3cgPSBfdGhpcy5nZXRDZWxsU2Vncyhyb3csIGNvbCwgbGV2ZWxMaW1pdCk7CgkJCQlpZiAoc2Vnc0JlbG93Lmxlbmd0aCkgewoJCQkJCXRkID0gY2VsbE1hdHJpeFtsZXZlbExpbWl0IC0gMV1bY29sXTsKCQkJCQltb3JlTGluayA9IF90aGlzLnJlbmRlck1vcmVMaW5rKHJvdywgY29sLCBzZWdzQmVsb3cpOwoJCQkJCW1vcmVXcmFwID0gJCgnPGRpdi8+JykuYXBwZW5kKG1vcmVMaW5rKTsKCQkJCQl0ZC5hcHBlbmQobW9yZVdyYXApOwoJCQkJCW1vcmVOb2Rlcy5wdXNoKG1vcmVXcmFwWzBdKTsKCQkJCX0KCQkJCWNvbCsrOwoJCQl9CgkJfQoKCQlpZiAobGV2ZWxMaW1pdCAmJiBsZXZlbExpbWl0IDwgcm93U3RydWN0LnNlZ0xldmVscy5sZW5ndGgpIHsgLy8gaXMgaXQgYWN0dWFsbHkgb3ZlciB0aGUgbGltaXQ/CgkJCWxldmVsU2VncyA9IHJvd1N0cnVjdC5zZWdMZXZlbHNbbGV2ZWxMaW1pdCAtIDFdOwoJCQljZWxsTWF0cml4ID0gcm93U3RydWN0LmNlbGxNYXRyaXg7CgoJCQlsaW1pdGVkTm9kZXMgPSByb3dTdHJ1Y3QudGJvZHlFbC5jaGlsZHJlbigpLnNsaWNlKGxldmVsTGltaXQpIC8vIGdldCBsZXZlbCA8dHI+IGVsZW1lbnRzIHBhc3QgdGhlIGxpbWl0CgkJCQkuYWRkQ2xhc3MoJ2ZjLWxpbWl0ZWQnKS5nZXQoKTsgLy8gaGlkZSBlbGVtZW50cyBhbmQgZ2V0IGEgc2ltcGxlIERPTS1ub2RlcyBhcnJheQoKCQkJLy8gaXRlcmF0ZSB0aG91Z2ggc2VnbWVudHMgaW4gdGhlIGxhc3QgYWxsb3dhYmxlIGxldmVsCgkJCWZvciAoaSA9IDA7IGkgPCBsZXZlbFNlZ3MubGVuZ3RoOyBpKyspIHsKCQkJCXNlZyA9IGxldmVsU2Vnc1tpXTsKCQkJCWVtcHR5Q2VsbHNVbnRpbChzZWcubGVmdENvbCk7IC8vIHByb2Nlc3MgZW1wdHkgY2VsbHMgYmVmb3JlIHRoZSBzZWdtZW50CgoJCQkJLy8gZGV0ZXJtaW5lICphbGwqIHNlZ21lbnRzIGJlbG93IGBzZWdgIHRoYXQgb2NjdXB5IHRoZSBzYW1lIGNvbHVtbnMKCQkJCWNvbFNlZ3NCZWxvdyA9IFtdOwoJCQkJdG90YWxTZWdzQmVsb3cgPSAwOwoJCQkJd2hpbGUgKGNvbCA8PSBzZWcucmlnaHRDb2wpIHsKCQkJCQlzZWdzQmVsb3cgPSB0aGlzLmdldENlbGxTZWdzKHJvdywgY29sLCBsZXZlbExpbWl0KTsKCQkJCQljb2xTZWdzQmVsb3cucHVzaChzZWdzQmVsb3cpOwoJCQkJCXRvdGFsU2Vnc0JlbG93ICs9IHNlZ3NCZWxvdy5sZW5ndGg7CgkJCQkJY29sKys7CgkJCQl9CgoJCQkJaWYgKHRvdGFsU2Vnc0JlbG93KSB7IC8vIGRvIHdlIG5lZWQgdG8gcmVwbGFjZSB0aGlzIHNlZ21lbnQgd2l0aCBvbmUgb3IgbWFueSAibW9yZSIgbGlua3M/CgkJCQkJdGQgPSBjZWxsTWF0cml4W2xldmVsTGltaXQgLSAxXVtzZWcubGVmdENvbF07IC8vIHRoZSBzZWdtZW50J3MgcGFyZW50IGNlbGwKCQkJCQlyb3dzcGFuID0gdGQuYXR0cigncm93c3BhbicpIHx8IDE7CgkJCQkJc2VnTW9yZU5vZGVzID0gW107CgoJCQkJCS8vIG1ha2UgYSByZXBsYWNlbWVudCA8dGQ+IGZvciBlYWNoIGNvbHVtbiB0aGUgc2VnbWVudCBvY2N1cGllcy4gd2lsbCBiZSBvbmUgZm9yIGVhY2ggY29sc3BhbgoJCQkJCWZvciAoaiA9IDA7IGogPCBjb2xTZWdzQmVsb3cubGVuZ3RoOyBqKyspIHsKCQkJCQkJbW9yZVRkID0gJCgnPHRkIGNsYXNzPSJmYy1tb3JlLWNlbGwiLz4nKS5hdHRyKCdyb3dzcGFuJywgcm93c3Bhbik7CgkJCQkJCXNlZ3NCZWxvdyA9IGNvbFNlZ3NCZWxvd1tqXTsKCQkJCQkJbW9yZUxpbmsgPSB0aGlzLnJlbmRlck1vcmVMaW5rKAoJCQkJCQkJcm93LAoJCQkJCQkJc2VnLmxlZnRDb2wgKyBqLAoJCQkJCQkJWyBzZWcgXS5jb25jYXQoc2Vnc0JlbG93KSAvLyBjb3VudCBzZWcgYXMgaGlkZGVuIHRvbwoJCQkJCQkpOwoJCQkJCQltb3JlV3JhcCA9ICQoJzxkaXYvPicpLmFwcGVuZChtb3JlTGluayk7CgkJCQkJCW1vcmVUZC5hcHBlbmQobW9yZVdyYXApOwoJCQkJCQlzZWdNb3JlTm9kZXMucHVzaChtb3JlVGRbMF0pOwoJCQkJCQltb3JlTm9kZXMucHVzaChtb3JlVGRbMF0pOwoJCQkJCX0KCgkJCQkJdGQuYWRkQ2xhc3MoJ2ZjLWxpbWl0ZWQnKS5hZnRlcigkKHNlZ01vcmVOb2RlcykpOyAvLyBoaWRlIG9yaWdpbmFsIDx0ZD4gYW5kIGluamVjdCByZXBsYWNlbWVudHMKCQkJCQlsaW1pdGVkTm9kZXMucHVzaCh0ZFswXSk7CgkJCQl9CgkJCX0KCgkJCWVtcHR5Q2VsbHNVbnRpbCh0aGlzLmNvbENudCk7IC8vIGZpbmlzaCBvZmYgdGhlIGxldmVsCgkJCXJvd1N0cnVjdC5tb3JlRWxzID0gJChtb3JlTm9kZXMpOyAvLyBmb3IgZWFzeSB1bmRvaW5nIGxhdGVyCgkJCXJvd1N0cnVjdC5saW1pdGVkRWxzID0gJChsaW1pdGVkTm9kZXMpOyAvLyBmb3IgZWFzeSB1bmRvaW5nIGxhdGVyCgkJfQoJfSwKCgoJLy8gUmV2ZWFscyBhbGwgbGV2ZWxzIGFuZCByZW1vdmVzIGFsbCAibW9yZSItcmVsYXRlZCBlbGVtZW50cyBmb3IgYSBncmlkJ3Mgcm93LgoJLy8gYHJvd2AgaXMgYSByb3cgbnVtYmVyLgoJdW5saW1pdFJvdzogZnVuY3Rpb24ocm93KSB7CgkJdmFyIHJvd1N0cnVjdCA9IHRoaXMucm93U3RydWN0c1tyb3ddOwoKCQlpZiAocm93U3RydWN0Lm1vcmVFbHMpIHsKCQkJcm93U3RydWN0Lm1vcmVFbHMucmVtb3ZlKCk7CgkJCXJvd1N0cnVjdC5tb3JlRWxzID0gbnVsbDsKCQl9CgoJCWlmIChyb3dTdHJ1Y3QubGltaXRlZEVscykgewoJCQlyb3dTdHJ1Y3QubGltaXRlZEVscy5yZW1vdmVDbGFzcygnZmMtbGltaXRlZCcpOwoJCQlyb3dTdHJ1Y3QubGltaXRlZEVscyA9IG51bGw7CgkJfQoJfSwKCgoJLy8gUmVuZGVycyBhbiA8YT4gZWxlbWVudCB0aGF0IHJlcHJlc2VudHMgaGlkZGVuIGV2ZW50IGVsZW1lbnQgZm9yIGEgY2VsbC4KCS8vIFJlc3BvbnNpYmxlIGZvciBhdHRhY2hpbmcgY2xpY2sgaGFuZGxlciBhcyB3ZWxsLgoJcmVuZGVyTW9yZUxpbms6IGZ1bmN0aW9uKHJvdywgY29sLCBoaWRkZW5TZWdzKSB7CgkJdmFyIF90aGlzID0gdGhpczsKCQl2YXIgdmlldyA9IHRoaXMudmlldzsKCgkJcmV0dXJuICQoJzxhIGNsYXNzPSJmYy1tb3JlIi8+JykKCQkJLnRleHQoCgkJCQl0aGlzLmdldE1vcmVMaW5rVGV4dChoaWRkZW5TZWdzLmxlbmd0aCkKCQkJKQoJCQkub24oJ2NsaWNrJywgZnVuY3Rpb24oZXYpIHsKCQkJCXZhciBjbGlja09wdGlvbiA9IHZpZXcub3B0KCdldmVudExpbWl0Q2xpY2snKTsKCQkJCXZhciBkYXRlID0gX3RoaXMuZ2V0Q2VsbERhdGUocm93LCBjb2wpOwoJCQkJdmFyIG1vcmVFbCA9ICQodGhpcyk7CgkJCQl2YXIgZGF5RWwgPSBfdGhpcy5nZXRDZWxsRWwocm93LCBjb2wpOwoJCQkJdmFyIGFsbFNlZ3MgPSBfdGhpcy5nZXRDZWxsU2Vncyhyb3csIGNvbCk7CgoJCQkJLy8gcmVzY29wZSB0aGUgc2VnbWVudHMgdG8gYmUgd2l0aGluIHRoZSBjZWxsJ3MgZGF0ZQoJCQkJdmFyIHJlc2xpY2VkQWxsU2VncyA9IF90aGlzLnJlc2xpY2VEYXlTZWdzKGFsbFNlZ3MsIGRhdGUpOwoJCQkJdmFyIHJlc2xpY2VkSGlkZGVuU2VncyA9IF90aGlzLnJlc2xpY2VEYXlTZWdzKGhpZGRlblNlZ3MsIGRhdGUpOwoKCQkJCWlmICh0eXBlb2YgY2xpY2tPcHRpb24gPT09ICdmdW5jdGlvbicpIHsKCQkJCQkvLyB0aGUgcmV0dXJuZWQgdmFsdWUgY2FuIGJlIGFuIGF0b21pYyBvcHRpb24KCQkJCQljbGlja09wdGlvbiA9IHZpZXcucHVibGljbHlUcmlnZ2VyKCdldmVudExpbWl0Q2xpY2snLCBudWxsLCB7CgkJCQkJCWRhdGU6IGRhdGUsCgkJCQkJCWRheUVsOiBkYXlFbCwKCQkJCQkJbW9yZUVsOiBtb3JlRWwsCgkJCQkJCXNlZ3M6IHJlc2xpY2VkQWxsU2VncywKCQkJCQkJaGlkZGVuU2VnczogcmVzbGljZWRIaWRkZW5TZWdzCgkJCQkJfSwgZXYpOwoJCQkJfQoKCQkJCWlmIChjbGlja09wdGlvbiA9PT0gJ3BvcG92ZXInKSB7CgkJCQkJX3RoaXMuc2hvd1NlZ1BvcG92ZXIocm93LCBjb2wsIG1vcmVFbCwgcmVzbGljZWRBbGxTZWdzKTsKCQkJCX0KCQkJCWVsc2UgaWYgKHR5cGVvZiBjbGlja09wdGlvbiA9PT0gJ3N0cmluZycpIHsgLy8gYSB2aWV3IG5hbWUKCQkJCQl2aWV3LmNhbGVuZGFyLnpvb21UbyhkYXRlLCBjbGlja09wdGlvbik7CgkJCQl9CgkJCX0pOwoJfSwKCgoJLy8gUmV2ZWFscyB0aGUgcG9wb3ZlciB0aGF0IGRpc3BsYXlzIGFsbCBldmVudHMgd2l0aGluIGEgY2VsbAoJc2hvd1NlZ1BvcG92ZXI6IGZ1bmN0aW9uKHJvdywgY29sLCBtb3JlTGluaywgc2VncykgewoJCXZhciBfdGhpcyA9IHRoaXM7CgkJdmFyIHZpZXcgPSB0aGlzLnZpZXc7CgkJdmFyIG1vcmVXcmFwID0gbW9yZUxpbmsucGFyZW50KCk7IC8vIHRoZSA8ZGl2PiB3cmFwcGVyIGFyb3VuZCB0aGUgPGE+CgkJdmFyIHRvcEVsOyAvLyB0aGUgZWxlbWVudCB3ZSB3YW50IHRvIG1hdGNoIHRoZSB0b3AgY29vcmRpbmF0ZSBvZgoJCXZhciBvcHRpb25zOwoKCQlpZiAodGhpcy5yb3dDbnQgPT0gMSkgewoJCQl0b3BFbCA9IHZpZXcuZWw7IC8vIHdpbGwgY2F1c2UgdGhlIHBvcG92ZXIgdG8gY292ZXIgYW55IHNvcnQgb2YgaGVhZGVyCgkJfQoJCWVsc2UgewoJCQl0b3BFbCA9IHRoaXMucm93RWxzLmVxKHJvdyk7IC8vIHdpbGwgYWxpZ24gd2l0aCB0b3Agb2Ygcm93CgkJfQoKCQlvcHRpb25zID0gewoJCQljbGFzc05hbWU6ICdmYy1tb3JlLXBvcG92ZXInLAoJCQljb250ZW50OiB0aGlzLnJlbmRlclNlZ1BvcG92ZXJDb250ZW50KHJvdywgY29sLCBzZWdzKSwKCQkJcGFyZW50RWw6IHRoaXMudmlldy5lbCwgLy8gYXR0YWNoIHRvIHJvb3Qgb2Ygdmlldy4gZ3VhcmFudGVlcyBvdXRzaWRlIG9mIHNjcm9sbGJhcnMuCgkJCXRvcDogdG9wRWwub2Zmc2V0KCkudG9wLAoJCQlhdXRvSGlkZTogdHJ1ZSwgLy8gd2hlbiB0aGUgdXNlciBjbGlja3MgZWxzZXdoZXJlLCBoaWRlIHRoZSBwb3BvdmVyCgkJCXZpZXdwb3J0Q29uc3RyYWluOiB2aWV3Lm9wdCgncG9wb3ZlclZpZXdwb3J0Q29uc3RyYWluJyksCgkJCWhpZGU6IGZ1bmN0aW9uKCkgewoJCQkJLy8ga2lsbCBldmVyeXRoaW5nIHdoZW4gdGhlIHBvcG92ZXIgaXMgaGlkZGVuCgkJCQkvLyBub3RpZnkgZXZlbnRzIHRvIGJlIHJlbW92ZWQKCQkJCWlmIChfdGhpcy5wb3BvdmVyU2VncykgewoJCQkJCXZhciBzZWc7CgkJCQkJZm9yICh2YXIgaSA9IDA7IGkgPCBfdGhpcy5wb3BvdmVyU2Vncy5sZW5ndGg7ICsraSkgewoJCQkJCQlzZWcgPSBfdGhpcy5wb3BvdmVyU2Vnc1tpXTsKCQkJCQkJdmlldy5wdWJsaWNseVRyaWdnZXIoJ2V2ZW50RGVzdHJveScsIHNlZy5ldmVudCwgc2VnLmV2ZW50LCBzZWcuZWwpOwoJCQkJCX0KCQkJCX0KCQkJCV90aGlzLnNlZ1BvcG92ZXIucmVtb3ZlRWxlbWVudCgpOwoJCQkJX3RoaXMuc2VnUG9wb3ZlciA9IG51bGw7CgkJCQlfdGhpcy5wb3BvdmVyU2VncyA9IG51bGw7CgkJCX0KCQl9OwoKCQkvLyBEZXRlcm1pbmUgaG9yaXpvbnRhbCBjb29yZGluYXRlLgoJCS8vIFdlIHVzZSB0aGUgbW9yZVdyYXAgaW5zdGVhZCBvZiB0aGUgPHRkPiB0byBhdm9pZCBib3JkZXIgY29uZnVzaW9uLgoJCWlmICh0aGlzLmlzUlRMKSB7CgkJCW9wdGlvbnMucmlnaHQgPSBtb3JlV3JhcC5vZmZzZXQoKS5sZWZ0ICsgbW9yZVdyYXAub3V0ZXJXaWR0aCgpICsgMTsgLy8gKzEgdG8gYmUgb3ZlciBjZWxsIGJvcmRlcgoJCX0KCQllbHNlIHsKCQkJb3B0aW9ucy5sZWZ0ID0gbW9yZVdyYXAub2Zmc2V0KCkubGVmdCAtIDE7IC8vIC0xIHRvIGJlIG92ZXIgY2VsbCBib3JkZXIKCQl9CgoJCXRoaXMuc2VnUG9wb3ZlciA9IG5ldyBQb3BvdmVyKG9wdGlvbnMpOwoJCXRoaXMuc2VnUG9wb3Zlci5zaG93KCk7CgoJCS8vIHRoZSBwb3BvdmVyIGRvZXNuJ3QgbGl2ZSB3aXRoaW4gdGhlIGdyaWQncyBjb250YWluZXIgZWxlbWVudCwgYW5kIHRodXMgd29uJ3QgZ2V0IHRoZSBldmVudAoJCS8vIGRlbGVnYXRlZC1oYW5kbGVycyBmb3IgZnJlZS4gYXR0YWNoIGV2ZW50LXJlbGF0ZWQgaGFuZGxlcnMgdG8gdGhlIHBvcG92ZXIuCgkJdGhpcy5iaW5kU2VnSGFuZGxlcnNUb0VsKHRoaXMuc2VnUG9wb3Zlci5lbCk7Cgl9LAoKCgkvLyBCdWlsZHMgdGhlIGlubmVyIERPTSBjb250ZW50cyBvZiB0aGUgc2VnbWVudCBwb3BvdmVyCglyZW5kZXJTZWdQb3BvdmVyQ29udGVudDogZnVuY3Rpb24ocm93LCBjb2wsIHNlZ3MpIHsKCQl2YXIgdmlldyA9IHRoaXMudmlldzsKCQl2YXIgaXNUaGVtZSA9IHZpZXcub3B0KCd0aGVtZScpOwoJCXZhciB0aXRsZSA9IHRoaXMuZ2V0Q2VsbERhdGUocm93LCBjb2wpLmZvcm1hdCh2aWV3Lm9wdCgnZGF5UG9wb3ZlckZvcm1hdCcpKTsKCQl2YXIgY29udGVudCA9ICQoCgkJCSc8ZGl2IGNsYXNzPSJmYy1oZWFkZXIgJyArIHZpZXcud2lkZ2V0SGVhZGVyQ2xhc3MgKyAnIj4nICsKCQkJCSc8c3BhbiBjbGFzcz0iZmMtY2xvc2UgJyArCgkJCQkJKGlzVGhlbWUgPyAndWktaWNvbiB1aS1pY29uLWNsb3NldGhpY2snIDogJ2ZjLWljb24gZmMtaWNvbi14JykgKwoJCQkJJyI+PC9zcGFuPicgKwoJCQkJJzxzcGFuIGNsYXNzPSJmYy10aXRsZSI+JyArCgkJCQkJaHRtbEVzY2FwZSh0aXRsZSkgKwoJCQkJJzwvc3Bhbj4nICsKCQkJCSc8ZGl2IGNsYXNzPSJmYy1jbGVhciIvPicgKwoJCQknPC9kaXY+JyArCgkJCSc8ZGl2IGNsYXNzPSJmYy1ib2R5ICcgKyB2aWV3LndpZGdldENvbnRlbnRDbGFzcyArICciPicgKwoJCQkJJzxkaXYgY2xhc3M9ImZjLWV2ZW50LWNvbnRhaW5lciI+PC9kaXY+JyArCgkJCSc8L2Rpdj4nCgkJKTsKCQl2YXIgc2VnQ29udGFpbmVyID0gY29udGVudC5maW5kKCcuZmMtZXZlbnQtY29udGFpbmVyJyk7CgkJdmFyIGk7CgoJCS8vIHJlbmRlciBlYWNoIHNlZydzIGBlbGAgYW5kIG9ubHkgcmV0dXJuIHRoZSB2aXNpYmxlIHNlZ3MKCQlzZWdzID0gdGhpcy5yZW5kZXJGZ1NlZ0VscyhzZWdzLCB0cnVlKTsgLy8gZGlzYWJsZVJlc2l6aW5nPXRydWUKCQl0aGlzLnBvcG92ZXJTZWdzID0gc2VnczsKCgkJZm9yIChpID0gMDsgaSA8IHNlZ3MubGVuZ3RoOyBpKyspIHsKCgkJCS8vIGJlY2F1c2Ugc2VnbWVudHMgaW4gdGhlIHBvcG92ZXIgYXJlIG5vdCBwYXJ0IG9mIGEgZ3JpZCBjb29yZGluYXRlIHN5c3RlbSwgcHJvdmlkZSBhIGhpbnQgdG8gYW55CgkJCS8vIGdyaWRzIHRoYXQgd2FudCB0byBkbyBkcmFnLW4tZHJvcCBhYm91dCB3aGljaCBjZWxsIGl0IGNhbWUgZnJvbQoJCQl0aGlzLmhpdHNOZWVkZWQoKTsKCQkJc2Vnc1tpXS5oaXQgPSB0aGlzLmdldENlbGxIaXQocm93LCBjb2wpOwoJCQl0aGlzLmhpdHNOb3ROZWVkZWQoKTsKCgkJCXNlZ0NvbnRhaW5lci5hcHBlbmQoc2Vnc1tpXS5lbCk7CgkJfQoKCQlyZXR1cm4gY29udGVudDsKCX0sCgoKCS8vIEdpdmVuIHRoZSBldmVudHMgd2l0aGluIGFuIGFycmF5IG9mIHNlZ21lbnQgb2JqZWN0cywgcmVzbGljZSB0aGVtIHRvIGJlIGluIGEgc2luZ2xlIGRheQoJcmVzbGljZURheVNlZ3M6IGZ1bmN0aW9uKHNlZ3MsIGRheURhdGUpIHsKCgkJLy8gYnVpbGQgYW4gYXJyYXkgb2YgdGhlIG9yaWdpbmFsIGV2ZW50cwoJCXZhciBldmVudHMgPSAkLm1hcChzZWdzLCBmdW5jdGlvbihzZWcpIHsKCQkJcmV0dXJuIHNlZy5ldmVudDsKCQl9KTsKCgkJdmFyIGRheVN0YXJ0ID0gZGF5RGF0ZS5jbG9uZSgpOwoJCXZhciBkYXlFbmQgPSBkYXlTdGFydC5jbG9uZSgpLmFkZCgxLCAnZGF5cycpOwoJCXZhciBkYXlSYW5nZSA9IHsgc3RhcnQ6IGRheVN0YXJ0LCBlbmQ6IGRheUVuZCB9OwoKCQkvLyBzbGljZSB0aGUgZXZlbnRzIHdpdGggYSBjdXN0b20gc2xpY2luZyBmdW5jdGlvbgoJCXNlZ3MgPSB0aGlzLmV2ZW50c1RvU2VncygKCQkJZXZlbnRzLAoJCQlmdW5jdGlvbihyYW5nZSkgewoJCQkJdmFyIHNlZyA9IGludGVyc2VjdFJhbmdlcyhyYW5nZSwgZGF5UmFuZ2UpOyAvLyB1bmRlZmluZCBpZiBubyBpbnRlcnNlY3Rpb24KCQkJCXJldHVybiBzZWcgPyBbIHNlZyBdIDogW107IC8vIG11c3QgcmV0dXJuIGFuIGFycmF5IG9mIHNlZ21lbnRzCgkJCX0KCQkpOwoKCQkvLyBmb3JjZSBhbiBvcmRlciBiZWNhdXNlIGV2ZW50c1RvU2VncyBkb2Vzbid0IGd1YXJhbnRlZSBvbmUKCQl0aGlzLnNvcnRFdmVudFNlZ3Moc2Vncyk7CgoJCXJldHVybiBzZWdzOwoJfSwKCgoJLy8gR2VuZXJhdGVzIHRoZSB0ZXh0IHRoYXQgc2hvdWxkIGJlIGluc2lkZSBhICJtb3JlIiBsaW5rLCBnaXZlbiB0aGUgbnVtYmVyIG9mIGV2ZW50cyBpdCByZXByZXNlbnRzCglnZXRNb3JlTGlua1RleHQ6IGZ1bmN0aW9uKG51bSkgewoJCXZhciBvcHQgPSB0aGlzLnZpZXcub3B0KCdldmVudExpbWl0VGV4dCcpOwoKCQlpZiAodHlwZW9mIG9wdCA9PT0gJ2Z1bmN0aW9uJykgewoJCQlyZXR1cm4gb3B0KG51bSk7CgkJfQoJCWVsc2UgewoJCQlyZXR1cm4gJysnICsgbnVtICsgJyAnICsgb3B0OwoJCX0KCX0sCgoKCS8vIFJldHVybnMgc2VnbWVudHMgd2l0aGluIGEgZ2l2ZW4gY2VsbC4KCS8vIElmIGBzdGFydExldmVsYCBpcyBzcGVjaWZpZWQsIHJldHVybnMgb25seSBldmVudHMgaW5jbHVkaW5nIGFuZCBiZWxvdyB0aGF0IGxldmVsLiBPdGhlcndpc2UgcmV0dXJucyBhbGwgc2Vncy4KCWdldENlbGxTZWdzOiBmdW5jdGlvbihyb3csIGNvbCwgc3RhcnRMZXZlbCkgewoJCXZhciBzZWdNYXRyaXggPSB0aGlzLnJvd1N0cnVjdHNbcm93XS5zZWdNYXRyaXg7CgkJdmFyIGxldmVsID0gc3RhcnRMZXZlbCB8fCAwOwoJCXZhciBzZWdzID0gW107CgkJdmFyIHNlZzsKCgkJd2hpbGUgKGxldmVsIDwgc2VnTWF0cml4Lmxlbmd0aCkgewoJCQlzZWcgPSBzZWdNYXRyaXhbbGV2ZWxdW2NvbF07CgkJCWlmIChzZWcpIHsKCQkJCXNlZ3MucHVzaChzZWcpOwoJCQl9CgkJCWxldmVsKys7CgkJfQoKCQlyZXR1cm4gc2VnczsKCX0KCn0pOwoKOzsKCi8qIEEgY29tcG9uZW50IHRoYXQgcmVuZGVycyBvbmUgb3IgbW9yZSBjb2x1bW5zIG9mIHZlcnRpY2FsIHRpbWUgc2xvdHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi8vIFdlIG1peGluIERheVRhYmxlLCBldmVuIHRob3VnaCB0aGVyZSBpcyBvbmx5IGEgc2luZ2xlIHJvdyBvZiBkYXlzCgp2YXIgVGltZUdyaWQgPSBGQy5UaW1lR3JpZCA9IEdyaWQuZXh0ZW5kKERheVRhYmxlTWl4aW4sIHsKCglzbG90RHVyYXRpb246IG51bGwsIC8vIGR1cmF0aW9uIG9mIGEgInNsb3QiLCBhIGRpc3RpbmN0IHRpbWUgc2VnbWVudCBvbiBnaXZlbiBkYXksIHZpc3VhbGl6ZWQgYnkgbGluZXMKCXNuYXBEdXJhdGlvbjogbnVsbCwgLy8gZ3JhbnVsYXJpdHkgb2YgdGltZSBmb3IgZHJhZ2dpbmcgYW5kIHNlbGVjdGluZwoJc25hcHNQZXJTbG90OiBudWxsLAoJbGFiZWxGb3JtYXQ6IG51bGwsIC8vIGZvcm1hdHRpbmcgc3RyaW5nIGZvciB0aW1lcyBydW5uaW5nIGFsb25nIHZlcnRpY2FsIGF4aXMKCWxhYmVsSW50ZXJ2YWw6IG51bGwsIC8vIGR1cmF0aW9uIG9mIGhvdyBvZnRlbiBhIGxhYmVsIHNob3VsZCBiZSBkaXNwbGF5ZWQgZm9yIGEgc2xvdAoKCWNvbEVsczogbnVsbCwgLy8gY2VsbHMgZWxlbWVudHMgaW4gdGhlIGRheS1yb3cgYmFja2dyb3VuZAoJc2xhdENvbnRhaW5lckVsOiBudWxsLCAvLyBkaXYgdGhhdCB3cmFwcyBhbGwgdGhlIHNsYXQgcm93cwoJc2xhdEVsczogbnVsbCwgLy8gZWxlbWVudHMgcnVubmluZyBob3Jpem9udGFsbHkgYWNyb3NzIGFsbCBjb2x1bW5zCglub3dJbmRpY2F0b3JFbHM6IG51bGwsCgoJY29sQ29vcmRDYWNoZTogbnVsbCwKCXNsYXRDb29yZENhY2hlOiBudWxsLAoKCgljb25zdHJ1Y3RvcjogZnVuY3Rpb24oKSB7CgkJR3JpZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyAvLyBjYWxsIHRoZSBzdXBlci1jb25zdHJ1Y3RvcgoKCQl0aGlzLnByb2Nlc3NPcHRpb25zKCk7Cgl9LAoKCgkvLyBSZW5kZXJzIHRoZSB0aW1lIGdyaWQgaW50byBgdGhpcy5lbGAsIHdoaWNoIHNob3VsZCBhbHJlYWR5IGJlIGFzc2lnbmVkLgoJLy8gUmVsaWVzIG9uIHRoZSB2aWV3J3MgY29sQ250LiBJbiB0aGUgZnV0dXJlLCB0aGlzIGNvbXBvbmVudCBzaG91bGQgcHJvYmFibHkgYmUgc2VsZi1zdWZmaWNpZW50LgoJcmVuZGVyRGF0ZXM6IGZ1bmN0aW9uKCkgewoJCXRoaXMuZWwuaHRtbCh0aGlzLnJlbmRlckh0bWwoKSk7CgkJdGhpcy5jb2xFbHMgPSB0aGlzLmVsLmZpbmQoJy5mYy1kYXksIC5mYy1kaXNhYmxlZC1kYXknKTsKCQl0aGlzLnNsYXRDb250YWluZXJFbCA9IHRoaXMuZWwuZmluZCgnLmZjLXNsYXRzJyk7CgkJdGhpcy5zbGF0RWxzID0gdGhpcy5zbGF0Q29udGFpbmVyRWwuZmluZCgndHInKTsKCgkJdGhpcy5jb2xDb29yZENhY2hlID0gbmV3IENvb3JkQ2FjaGUoewoJCQllbHM6IHRoaXMuY29sRWxzLAoJCQlpc0hvcml6b250YWw6IHRydWUKCQl9KTsKCQl0aGlzLnNsYXRDb29yZENhY2hlID0gbmV3IENvb3JkQ2FjaGUoewoJCQllbHM6IHRoaXMuc2xhdEVscywKCQkJaXNWZXJ0aWNhbDogdHJ1ZQoJCX0pOwoKCQl0aGlzLnJlbmRlckNvbnRlbnRTa2VsZXRvbigpOwoJfSwKCgoJLy8gUmVuZGVycyB0aGUgYmFzaWMgSFRNTCBza2VsZXRvbiBmb3IgdGhlIGdyaWQKCXJlbmRlckh0bWw6IGZ1bmN0aW9uKCkgewoJCXJldHVybiAnJyArCgkJCSc8ZGl2IGNsYXNzPSJmYy1iZyI+JyArCgkJCQknPHRhYmxlPicgKwoJCQkJCXRoaXMucmVuZGVyQmdUckh0bWwoMCkgKyAvLyByb3c9MAoJCQkJJzwvdGFibGU+JyArCgkJCSc8L2Rpdj4nICsKCQkJJzxkaXYgY2xhc3M9ImZjLXNsYXRzIj4nICsKCQkJCSc8dGFibGU+JyArCgkJCQkJdGhpcy5yZW5kZXJTbGF0Um93SHRtbCgpICsKCQkJCSc8L3RhYmxlPicgKwoJCQknPC9kaXY+JzsKCX0sCgoKCS8vIEdlbmVyYXRlcyB0aGUgSFRNTCBmb3IgdGhlIGhvcml6b250YWwgInNsYXRzIiB0aGF0IHJ1biB3aWR0aC13aXNlLiBIYXMgYSB0aW1lIGF4aXMgb24gYSBzaWRlLiBEZXBlbmRzIG9uIFJUTC4KCXJlbmRlclNsYXRSb3dIdG1sOiBmdW5jdGlvbigpIHsKCQl2YXIgdmlldyA9IHRoaXMudmlldzsKCQl2YXIgaXNSVEwgPSB0aGlzLmlzUlRMOwoJCXZhciBodG1sID0gJyc7CgkJdmFyIHNsb3RUaW1lID0gbW9tZW50LmR1cmF0aW9uKCt0aGlzLnZpZXcubWluVGltZSk7IC8vIHdpc2ggdGhlcmUgd2FzIC5jbG9uZSgpIGZvciBkdXJhdGlvbnMKCQl2YXIgc2xvdERhdGU7IC8vIHdpbGwgYmUgb24gdGhlIHZpZXcncyBmaXJzdCBkYXksIGJ1dCB3ZSBvbmx5IGNhcmUgYWJvdXQgaXRzIHRpbWUKCQl2YXIgaXNMYWJlbGVkOwoJCXZhciBheGlzSHRtbDsKCgkJLy8gQ2FsY3VsYXRlIHRoZSB0aW1lIGZvciBlYWNoIHNsb3QKCQl3aGlsZSAoc2xvdFRpbWUgPCB0aGlzLnZpZXcubWF4VGltZSkgewoJCQlzbG90RGF0ZSA9IHRoaXMuc3RhcnQuY2xvbmUoKS50aW1lKHNsb3RUaW1lKTsKCQkJaXNMYWJlbGVkID0gaXNJbnQoZGl2aWRlRHVyYXRpb25CeUR1cmF0aW9uKHNsb3RUaW1lLCB0aGlzLmxhYmVsSW50ZXJ2YWwpKTsKCgkJCWF4aXNIdG1sID0KCQkJCSc8dGQgY2xhc3M9ImZjLWF4aXMgZmMtdGltZSAnICsgdmlldy53aWRnZXRDb250ZW50Q2xhc3MgKyAnIiAnICsgdmlldy5heGlzU3R5bGVBdHRyKCkgKyAnPicgKwoJCQkJCShpc0xhYmVsZWQgPwoJCQkJCQknPHNwYW4+JyArIC8vIGZvciBtYXRjaENlbGxXaWR0aHMKCQkJCQkJCWh0bWxFc2NhcGUoc2xvdERhdGUuZm9ybWF0KHRoaXMubGFiZWxGb3JtYXQpKSArCgkJCQkJCSc8L3NwYW4+JyA6CgkJCQkJCScnCgkJCQkJCSkgKwoJCQkJJzwvdGQ+JzsKCgkJCWh0bWwgKz0KCQkJCSc8dHIgZGF0YS10aW1lPSInICsgc2xvdERhdGUuZm9ybWF0KCdISDptbTpzcycpICsgJyInICsKCQkJCQkoaXNMYWJlbGVkID8gJycgOiAnIGNsYXNzPSJmYy1taW5vciInKSArCgkJCQkJJz4nICsKCQkJCQkoIWlzUlRMID8gYXhpc0h0bWwgOiAnJykgKwoJCQkJCSc8dGQgY2xhc3M9IicgKyB2aWV3LndpZGdldENvbnRlbnRDbGFzcyArICciLz4nICsKCQkJCQkoaXNSVEwgPyBheGlzSHRtbCA6ICcnKSArCgkJCQkiPC90cj4iOwoKCQkJc2xvdFRpbWUuYWRkKHRoaXMuc2xvdER1cmF0aW9uKTsKCQl9CgoJCXJldHVybiBodG1sOwoJfSwKCgoJLyogT3B0aW9ucwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gUGFyc2VzIHZhcmlvdXMgb3B0aW9ucyBpbnRvIHByb3BlcnRpZXMgb2YgdGhpcyBvYmplY3QKCXByb2Nlc3NPcHRpb25zOiBmdW5jdGlvbigpIHsKCQl2YXIgdmlldyA9IHRoaXMudmlldzsKCQl2YXIgc2xvdER1cmF0aW9uID0gdmlldy5vcHQoJ3Nsb3REdXJhdGlvbicpOwoJCXZhciBzbmFwRHVyYXRpb24gPSB2aWV3Lm9wdCgnc25hcER1cmF0aW9uJyk7CgkJdmFyIGlucHV0OwoKCQlzbG90RHVyYXRpb24gPSBtb21lbnQuZHVyYXRpb24oc2xvdER1cmF0aW9uKTsKCQlzbmFwRHVyYXRpb24gPSBzbmFwRHVyYXRpb24gPyBtb21lbnQuZHVyYXRpb24oc25hcER1cmF0aW9uKSA6IHNsb3REdXJhdGlvbjsKCgkJdGhpcy5zbG90RHVyYXRpb24gPSBzbG90RHVyYXRpb247CgkJdGhpcy5zbmFwRHVyYXRpb24gPSBzbmFwRHVyYXRpb247CgkJdGhpcy5zbmFwc1BlclNsb3QgPSBzbG90RHVyYXRpb24gLyBzbmFwRHVyYXRpb247IC8vIFRPRE86IGVuc3VyZSBhbiBpbnRlZ2VyIG11bHRpcGxlPwoKCQl0aGlzLm1pblJlc2l6ZUR1cmF0aW9uID0gc25hcER1cmF0aW9uOyAvLyBoYWNrCgoJCS8vIG1pZ2h0IGJlIGFuIGFycmF5IHZhbHVlIChmb3IgVGltZWxpbmVWaWV3KS4KCQkvLyBpZiBzbywgZ2V0dGluZyB0aGUgbW9zdCBncmFudWxhciBlbnRyeSAodGhlIGxhc3Qgb25lIHByb2JhYmx5KS4KCQlpbnB1dCA9IHZpZXcub3B0KCdzbG90TGFiZWxGb3JtYXQnKTsKCQlpZiAoJC5pc0FycmF5KGlucHV0KSkgewoJCQlpbnB1dCA9IGlucHV0W2lucHV0Lmxlbmd0aCAtIDFdOwoJCX0KCgkJdGhpcy5sYWJlbEZvcm1hdCA9CgkJCWlucHV0IHx8CgkJCXZpZXcub3B0KCdzbWFsbFRpbWVGb3JtYXQnKTsgLy8gdGhlIGNvbXB1dGVkIGRlZmF1bHQKCgkJaW5wdXQgPSB2aWV3Lm9wdCgnc2xvdExhYmVsSW50ZXJ2YWwnKTsKCQl0aGlzLmxhYmVsSW50ZXJ2YWwgPSBpbnB1dCA/CgkJCW1vbWVudC5kdXJhdGlvbihpbnB1dCkgOgoJCQl0aGlzLmNvbXB1dGVMYWJlbEludGVydmFsKHNsb3REdXJhdGlvbik7Cgl9LAoKCgkvLyBDb21wdXRlcyBhbiBhdXRvbWF0aWMgdmFsdWUgZm9yIHNsb3RMYWJlbEludGVydmFsCgljb21wdXRlTGFiZWxJbnRlcnZhbDogZnVuY3Rpb24oc2xvdER1cmF0aW9uKSB7CgkJdmFyIGk7CgkJdmFyIGxhYmVsSW50ZXJ2YWw7CgkJdmFyIHNsb3RzUGVyTGFiZWw7CgoJCS8vIGZpbmQgdGhlIHNtYWxsZXN0IHN0b2NrIGxhYmVsIGludGVydmFsIHRoYXQgcmVzdWx0cyBpbiBtb3JlIHRoYW4gb25lIHNsb3RzLXBlci1sYWJlbAoJCWZvciAoaSA9IEFHRU5EQV9TVE9DS19TVUJfRFVSQVRJT05TLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CgkJCWxhYmVsSW50ZXJ2YWwgPSBtb21lbnQuZHVyYXRpb24oQUdFTkRBX1NUT0NLX1NVQl9EVVJBVElPTlNbaV0pOwoJCQlzbG90c1BlckxhYmVsID0gZGl2aWRlRHVyYXRpb25CeUR1cmF0aW9uKGxhYmVsSW50ZXJ2YWwsIHNsb3REdXJhdGlvbik7CgkJCWlmIChpc0ludChzbG90c1BlckxhYmVsKSAmJiBzbG90c1BlckxhYmVsID4gMSkgewoJCQkJcmV0dXJuIGxhYmVsSW50ZXJ2YWw7CgkJCX0KCQl9CgoJCXJldHVybiBtb21lbnQuZHVyYXRpb24oc2xvdER1cmF0aW9uKTsgLy8gZmFsbCBiYWNrLiBjbG9uZQoJfSwKCgoJLy8gQ29tcHV0ZXMgYSBkZWZhdWx0IGV2ZW50IHRpbWUgZm9ybWF0dGluZyBzdHJpbmcgaWYgYHRpbWVGb3JtYXRgIGlzIG5vdCBleHBsaWNpdGx5IGRlZmluZWQKCWNvbXB1dGVFdmVudFRpbWVGb3JtYXQ6IGZ1bmN0aW9uKCkgewoJCXJldHVybiB0aGlzLnZpZXcub3B0KCdub01lcmlkaWVtVGltZUZvcm1hdCcpOyAvLyBsaWtlICI2OjMwIiAobm8gQU0vUE0pCgl9LAoKCgkvLyBDb21wdXRlcyBhIGRlZmF1bHQgYGRpc3BsYXlFdmVudEVuZGAgdmFsdWUgaWYgb25lIGlzIG5vdCBleHBsaWNsdHkgZGVmaW5lZAoJY29tcHV0ZURpc3BsYXlFdmVudEVuZDogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHRydWU7Cgl9LAoKCgkvKiBIaXQgU3lzdGVtCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCglwcmVwYXJlSGl0czogZnVuY3Rpb24oKSB7CgkJdGhpcy5jb2xDb29yZENhY2hlLmJ1aWxkKCk7CgkJdGhpcy5zbGF0Q29vcmRDYWNoZS5idWlsZCgpOwoJfSwKCgoJcmVsZWFzZUhpdHM6IGZ1bmN0aW9uKCkgewoJCXRoaXMuY29sQ29vcmRDYWNoZS5jbGVhcigpOwoJCS8vIE5PVEU6IGRvbid0IGNsZWFyIHNsYXRDb29yZENhY2hlIGJlY2F1c2Ugd2UgcmVseSBvbiBpdCBmb3IgY29tcHV0ZVRpbWVUb3AKCX0sCgoKCXF1ZXJ5SGl0OiBmdW5jdGlvbihsZWZ0T2Zmc2V0LCB0b3BPZmZzZXQpIHsKCQl2YXIgc25hcHNQZXJTbG90ID0gdGhpcy5zbmFwc1BlclNsb3Q7CgkJdmFyIGNvbENvb3JkQ2FjaGUgPSB0aGlzLmNvbENvb3JkQ2FjaGU7CgkJdmFyIHNsYXRDb29yZENhY2hlID0gdGhpcy5zbGF0Q29vcmRDYWNoZTsKCgkJaWYgKGNvbENvb3JkQ2FjaGUuaXNMZWZ0SW5Cb3VuZHMobGVmdE9mZnNldCkgJiYgc2xhdENvb3JkQ2FjaGUuaXNUb3BJbkJvdW5kcyh0b3BPZmZzZXQpKSB7CgkJCXZhciBjb2xJbmRleCA9IGNvbENvb3JkQ2FjaGUuZ2V0SG9yaXpvbnRhbEluZGV4KGxlZnRPZmZzZXQpOwoJCQl2YXIgc2xhdEluZGV4ID0gc2xhdENvb3JkQ2FjaGUuZ2V0VmVydGljYWxJbmRleCh0b3BPZmZzZXQpOwoKCQkJaWYgKGNvbEluZGV4ICE9IG51bGwgJiYgc2xhdEluZGV4ICE9IG51bGwpIHsKCQkJCXZhciBzbGF0VG9wID0gc2xhdENvb3JkQ2FjaGUuZ2V0VG9wT2Zmc2V0KHNsYXRJbmRleCk7CgkJCQl2YXIgc2xhdEhlaWdodCA9IHNsYXRDb29yZENhY2hlLmdldEhlaWdodChzbGF0SW5kZXgpOwoJCQkJdmFyIHBhcnRpYWwgPSAodG9wT2Zmc2V0IC0gc2xhdFRvcCkgLyBzbGF0SGVpZ2h0OyAvLyBmbG9hdGluZyBwb2ludCBudW1iZXIgYmV0d2VlbiAwIGFuZCAxCgkJCQl2YXIgbG9jYWxTbmFwSW5kZXggPSBNYXRoLmZsb29yKHBhcnRpYWwgKiBzbmFwc1BlclNsb3QpOyAvLyB0aGUgc25hcCAjIHJlbGF0aXZlIHRvIHN0YXJ0IG9mIHNsYXQKCQkJCXZhciBzbmFwSW5kZXggPSBzbGF0SW5kZXggKiBzbmFwc1BlclNsb3QgKyBsb2NhbFNuYXBJbmRleDsKCQkJCXZhciBzbmFwVG9wID0gc2xhdFRvcCArIChsb2NhbFNuYXBJbmRleCAvIHNuYXBzUGVyU2xvdCkgKiBzbGF0SGVpZ2h0OwoJCQkJdmFyIHNuYXBCb3R0b20gPSBzbGF0VG9wICsgKChsb2NhbFNuYXBJbmRleCArIDEpIC8gc25hcHNQZXJTbG90KSAqIHNsYXRIZWlnaHQ7CgoJCQkJcmV0dXJuIHsKCQkJCQljb2w6IGNvbEluZGV4LAoJCQkJCXNuYXA6IHNuYXBJbmRleCwKCQkJCQljb21wb25lbnQ6IHRoaXMsIC8vIG5lZWRlZCB1bmZvcnR1bmF0ZWx5IDooCgkJCQkJbGVmdDogY29sQ29vcmRDYWNoZS5nZXRMZWZ0T2Zmc2V0KGNvbEluZGV4KSwKCQkJCQlyaWdodDogY29sQ29vcmRDYWNoZS5nZXRSaWdodE9mZnNldChjb2xJbmRleCksCgkJCQkJdG9wOiBzbmFwVG9wLAoJCQkJCWJvdHRvbTogc25hcEJvdHRvbQoJCQkJfTsKCQkJfQoJCX0KCX0sCgoKCWdldEhpdFNwYW46IGZ1bmN0aW9uKGhpdCkgewoJCXZhciBzdGFydCA9IHRoaXMuZ2V0Q2VsbERhdGUoMCwgaGl0LmNvbCk7IC8vIHJvdz0wCgkJdmFyIHRpbWUgPSB0aGlzLmNvbXB1dGVTbmFwVGltZShoaXQuc25hcCk7IC8vIHBhc3MgaW4gdGhlIHNuYXAtaW5kZXgKCQl2YXIgZW5kOwoKCQlzdGFydC50aW1lKHRpbWUpOwoJCWVuZCA9IHN0YXJ0LmNsb25lKCkuYWRkKHRoaXMuc25hcER1cmF0aW9uKTsKCgkJcmV0dXJuIHsgc3RhcnQ6IHN0YXJ0LCBlbmQ6IGVuZCB9OwoJfSwKCgoJZ2V0SGl0RWw6IGZ1bmN0aW9uKGhpdCkgewoJCXJldHVybiB0aGlzLmNvbEVscy5lcShoaXQuY29sKTsKCX0sCgoKCS8qIERhdGVzCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCglyYW5nZVVwZGF0ZWQ6IGZ1bmN0aW9uKCkgewoJCXRoaXMudXBkYXRlRGF5VGFibGUoKTsKCX0sCgoKCS8vIEdpdmVuIGEgcm93IG51bWJlciBvZiB0aGUgZ3JpZCwgcmVwcmVzZW50aW5nIGEgInNuYXAiLCByZXR1cm5zIGEgdGltZSAoRHVyYXRpb24pIGZyb20gaXRzIHN0YXJ0LW9mLWRheQoJY29tcHV0ZVNuYXBUaW1lOiBmdW5jdGlvbihzbmFwSW5kZXgpIHsKCQlyZXR1cm4gbW9tZW50LmR1cmF0aW9uKHRoaXMudmlldy5taW5UaW1lICsgdGhpcy5zbmFwRHVyYXRpb24gKiBzbmFwSW5kZXgpOwoJfSwKCgoJLy8gU2xpY2VzIHVwIHRoZSBnaXZlbiBzcGFuICh1bnpvbmVkIHN0YXJ0L2VuZCB3aXRoIG90aGVyIG1pc2MgZGF0YSkgaW50byBhbiBhcnJheSBvZiBzZWdtZW50cwoJc3BhblRvU2VnczogZnVuY3Rpb24oc3BhbikgewoJCXZhciBzZWdzID0gdGhpcy5zbGljZVJhbmdlQnlUaW1lcyhzcGFuKTsKCQl2YXIgaTsKCgkJZm9yIChpID0gMDsgaSA8IHNlZ3MubGVuZ3RoOyBpKyspIHsKCQkJaWYgKHRoaXMuaXNSVEwpIHsKCQkJCXNlZ3NbaV0uY29sID0gdGhpcy5kYXlzUGVyUm93IC0gMSAtIHNlZ3NbaV0uZGF5SW5kZXg7CgkJCX0KCQkJZWxzZSB7CgkJCQlzZWdzW2ldLmNvbCA9IHNlZ3NbaV0uZGF5SW5kZXg7CgkJCX0KCQl9CgoJCXJldHVybiBzZWdzOwoJfSwKCgoJc2xpY2VSYW5nZUJ5VGltZXM6IGZ1bmN0aW9uKHJhbmdlKSB7CgkJdmFyIHNlZ3MgPSBbXTsKCQl2YXIgc2VnOwoJCXZhciBkYXlJbmRleDsKCQl2YXIgZGF5RGF0ZTsKCQl2YXIgZGF5UmFuZ2U7CgoJCWZvciAoZGF5SW5kZXggPSAwOyBkYXlJbmRleCA8IHRoaXMuZGF5c1BlclJvdzsgZGF5SW5kZXgrKykgewoJCQlkYXlEYXRlID0gdGhpcy5kYXlEYXRlc1tkYXlJbmRleF0uY2xvbmUoKS50aW1lKDApOyAvLyBUT0RPOiBiZXR0ZXIgQVBJIGZvciB0aGlzPwoJCQlkYXlSYW5nZSA9IHsKCQkJCXN0YXJ0OiBkYXlEYXRlLmNsb25lKCkuYWRkKHRoaXMudmlldy5taW5UaW1lKSwgLy8gZG9uJ3QgdXNlIC50aW1lKCkgYmVjYXVzZSBpdCBzdXggd2l0aCBuZWdhdGl2ZXMKCQkJCWVuZDogZGF5RGF0ZS5jbG9uZSgpLmFkZCh0aGlzLnZpZXcubWF4VGltZSkKCQkJfTsKCQkJc2VnID0gaW50ZXJzZWN0UmFuZ2VzKHJhbmdlLCBkYXlSYW5nZSk7IC8vIGJvdGggd2lsbCBiZSBhbWJpZyB0aW1lem9uZQoJCQlpZiAoc2VnKSB7CgkJCQlzZWcuZGF5SW5kZXggPSBkYXlJbmRleDsKCQkJCXNlZ3MucHVzaChzZWcpOwoJCQl9CgkJfQoKCQlyZXR1cm4gc2VnczsKCX0sCgoKCS8qIENvb3JkaW5hdGVzCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgl1cGRhdGVTaXplOiBmdW5jdGlvbihpc1Jlc2l6ZSkgeyAvLyBOT1QgYSBzdGFuZGFyZCBHcmlkIG1ldGhvZAoJCXRoaXMuc2xhdENvb3JkQ2FjaGUuYnVpbGQoKTsKCgkJaWYgKGlzUmVzaXplKSB7CgkJCXRoaXMudXBkYXRlU2VnVmVydGljYWxzKAoJCQkJW10uY29uY2F0KHRoaXMuZmdTZWdzIHx8IFtdLCB0aGlzLmJnU2VncyB8fCBbXSwgdGhpcy5idXNpbmVzc1NlZ3MgfHwgW10pCgkJCSk7CgkJfQoJfSwKCgoJZ2V0VG90YWxTbGF0SGVpZ2h0OiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gdGhpcy5zbGF0Q29udGFpbmVyRWwub3V0ZXJIZWlnaHQoKTsKCX0sCgoKCS8vIENvbXB1dGVzIHRoZSB0b3AgY29vcmRpbmF0ZSwgcmVsYXRpdmUgdG8gdGhlIGJvdW5kcyBvZiB0aGUgZ3JpZCwgb2YgdGhlIGdpdmVuIGRhdGUuCgkvLyBBIGBzdGFydE9mRGF5RGF0ZWAgbXVzdCBiZSBnaXZlbiBmb3IgYXZvaWRpbmcgYW1iaWd1aXR5IG92ZXIgaG93IHRvIHRyZWF0IG1pZG5pZ2h0LgoJY29tcHV0ZURhdGVUb3A6IGZ1bmN0aW9uKGRhdGUsIHN0YXJ0T2ZEYXlEYXRlKSB7CgkJcmV0dXJuIHRoaXMuY29tcHV0ZVRpbWVUb3AoCgkJCW1vbWVudC5kdXJhdGlvbigKCQkJCWRhdGUgLSBzdGFydE9mRGF5RGF0ZS5jbG9uZSgpLnN0cmlwVGltZSgpCgkJCSkKCQkpOwoJfSwKCgoJLy8gQ29tcHV0ZXMgdGhlIHRvcCBjb29yZGluYXRlLCByZWxhdGl2ZSB0byB0aGUgYm91bmRzIG9mIHRoZSBncmlkLCBvZiB0aGUgZ2l2ZW4gdGltZSAoYSBEdXJhdGlvbikuCgljb21wdXRlVGltZVRvcDogZnVuY3Rpb24odGltZSkgewoJCXZhciBsZW4gPSB0aGlzLnNsYXRFbHMubGVuZ3RoOwoJCXZhciBzbGF0Q292ZXJhZ2UgPSAodGltZSAtIHRoaXMudmlldy5taW5UaW1lKSAvIHRoaXMuc2xvdER1cmF0aW9uOyAvLyBmbG9hdGluZy1wb2ludCB2YWx1ZSBvZiAjIG9mIHNsb3RzIGNvdmVyZWQKCQl2YXIgc2xhdEluZGV4OwoJCXZhciBzbGF0UmVtYWluZGVyOwoKCQkvLyBjb21wdXRlIGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGZvciBob3cgbWFueSBzbGF0cyBzaG91bGQgYmUgcHJvZ3Jlc3NlZCB0aHJvdWdoLgoJCS8vIGZyb20gMCB0byBudW1iZXIgb2Ygc2xhdHMgKGluY2x1c2l2ZSkKCQkvLyBjb25zdHJhaW5lZCBiZWNhdXNlIG1pblRpbWUvbWF4VGltZSBtaWdodCBiZSBjdXN0b21pemVkLgoJCXNsYXRDb3ZlcmFnZSA9IE1hdGgubWF4KDAsIHNsYXRDb3ZlcmFnZSk7CgkJc2xhdENvdmVyYWdlID0gTWF0aC5taW4obGVuLCBzbGF0Q292ZXJhZ2UpOwoKCQkvLyBhbiBpbnRlZ2VyIGluZGV4IG9mIHRoZSBmdXJ0aGVzdCB3aG9sZSBzbGF0CgkJLy8gZnJvbSAwIHRvIG51bWJlciBzbGF0cyAoKmV4Y2x1c2l2ZSosIHNvIGxlbi0xKQoJCXNsYXRJbmRleCA9IE1hdGguZmxvb3Ioc2xhdENvdmVyYWdlKTsKCQlzbGF0SW5kZXggPSBNYXRoLm1pbihzbGF0SW5kZXgsIGxlbiAtIDEpOwoKCQkvLyBob3cgbXVjaCBmdXJ0aGVyIHRocm91Z2ggdGhlIHNsYXRJbmRleCBzbGF0IChmcm9tIDAuMC0xLjApIG11c3QgYmUgY292ZXJlZCBpbiBhZGRpdGlvbi4KCQkvLyBjb3VsZCBiZSAxLjAgaWYgc2xhdENvdmVyYWdlIGlzIGNvdmVyaW5nICphbGwqIHRoZSBzbG90cwoJCXNsYXRSZW1haW5kZXIgPSBzbGF0Q292ZXJhZ2UgLSBzbGF0SW5kZXg7CgoJCXJldHVybiB0aGlzLnNsYXRDb29yZENhY2hlLmdldFRvcFBvc2l0aW9uKHNsYXRJbmRleCkgKwoJCQl0aGlzLnNsYXRDb29yZENhY2hlLmdldEhlaWdodChzbGF0SW5kZXgpICogc2xhdFJlbWFpbmRlcjsKCX0sCgoKCgkvKiBFdmVudCBEcmFnIFZpc3VhbGl6YXRpb24KCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFJlbmRlcnMgYSB2aXN1YWwgaW5kaWNhdGlvbiBvZiBhbiBldmVudCBiZWluZyBkcmFnZ2VkIG92ZXIgdGhlIHNwZWNpZmllZCBkYXRlKHMpLgoJLy8gQSByZXR1cm5lZCB2YWx1ZSBvZiBgdHJ1ZWAgc2lnbmFscyB0aGF0IGEgbW9jayAiaGVscGVyIiBldmVudCBoYXMgYmVlbiByZW5kZXJlZC4KCXJlbmRlckRyYWc6IGZ1bmN0aW9uKGV2ZW50TG9jYXRpb24sIHNlZykgewoJCXZhciBldmVudFNwYW5zOwoJCXZhciBpOwoKCQlpZiAoc2VnKSB7IC8vIGlmIHRoZXJlIGlzIGV2ZW50IGluZm9ybWF0aW9uIGZvciB0aGlzIGRyYWcsIHJlbmRlciBhIGhlbHBlciBldmVudAoKCQkJLy8gcmV0dXJucyBtb2NrIGV2ZW50IGVsZW1lbnRzCgkJCS8vIHNpZ25hbCB0aGF0IGEgaGVscGVyIGhhcyBiZWVuIHJlbmRlcmVkCgkJCXJldHVybiB0aGlzLnJlbmRlckV2ZW50TG9jYXRpb25IZWxwZXIoZXZlbnRMb2NhdGlvbiwgc2VnKTsKCQl9CgkJZWxzZSB7IC8vIG90aGVyd2lzZSwganVzdCByZW5kZXIgYSBoaWdobGlnaHQKCQkJZXZlbnRTcGFucyA9IHRoaXMuZXZlbnRUb1NwYW5zKGV2ZW50TG9jYXRpb24pOwoKCQkJZm9yIChpID0gMDsgaSA8IGV2ZW50U3BhbnMubGVuZ3RoOyBpKyspIHsKCQkJCXRoaXMucmVuZGVySGlnaGxpZ2h0KGV2ZW50U3BhbnNbaV0pOwoJCQl9CgkJfQoJfSwKCgoJLy8gVW5yZW5kZXJzIGFueSB2aXN1YWwgaW5kaWNhdGlvbiBvZiBhbiBldmVudCBiZWluZyBkcmFnZ2VkCgl1bnJlbmRlckRyYWc6IGZ1bmN0aW9uKCkgewoJCXRoaXMudW5yZW5kZXJIZWxwZXIoKTsKCQl0aGlzLnVucmVuZGVySGlnaGxpZ2h0KCk7Cgl9LAoKCgkvKiBFdmVudCBSZXNpemUgVmlzdWFsaXphdGlvbgoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gUmVuZGVycyBhIHZpc3VhbCBpbmRpY2F0aW9uIG9mIGFuIGV2ZW50IGJlaW5nIHJlc2l6ZWQKCXJlbmRlckV2ZW50UmVzaXplOiBmdW5jdGlvbihldmVudExvY2F0aW9uLCBzZWcpIHsKCQlyZXR1cm4gdGhpcy5yZW5kZXJFdmVudExvY2F0aW9uSGVscGVyKGV2ZW50TG9jYXRpb24sIHNlZyk7IC8vIHJldHVybnMgbW9jayBldmVudCBlbGVtZW50cwoJfSwKCgoJLy8gVW5yZW5kZXJzIGFueSB2aXN1YWwgaW5kaWNhdGlvbiBvZiBhbiBldmVudCBiZWluZyByZXNpemVkCgl1bnJlbmRlckV2ZW50UmVzaXplOiBmdW5jdGlvbigpIHsKCQl0aGlzLnVucmVuZGVySGVscGVyKCk7Cgl9LAoKCgkvKiBFdmVudCBIZWxwZXIKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFJlbmRlcnMgYSBtb2NrICJoZWxwZXIiIGV2ZW50LiBgc291cmNlU2VnYCBpcyB0aGUgb3JpZ2luYWwgc2VnbWVudCBvYmplY3QgYW5kIG1pZ2h0IGJlIG51bGwgKGFuIGV4dGVybmFsIGRyYWcpCglyZW5kZXJIZWxwZXI6IGZ1bmN0aW9uKGV2ZW50LCBzb3VyY2VTZWcpIHsKCQlyZXR1cm4gdGhpcy5yZW5kZXJIZWxwZXJTZWdzKHRoaXMuZXZlbnRUb1NlZ3MoZXZlbnQpLCBzb3VyY2VTZWcpOyAvLyByZXR1cm5zIG1vY2sgZXZlbnQgZWxlbWVudHMKCX0sCgoKCS8vIFVucmVuZGVycyBhbnkgbW9jayBoZWxwZXIgZXZlbnQKCXVucmVuZGVySGVscGVyOiBmdW5jdGlvbigpIHsKCQl0aGlzLnVucmVuZGVySGVscGVyU2VncygpOwoJfSwKCgoJLyogQnVzaW5lc3MgSG91cnMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCXJlbmRlckJ1c2luZXNzSG91cnM6IGZ1bmN0aW9uKCkgewoJCXRoaXMucmVuZGVyQnVzaW5lc3NTZWdzKAoJCQl0aGlzLmJ1aWxkQnVzaW5lc3NIb3VyU2VncygpCgkJKTsKCX0sCgoKCXVucmVuZGVyQnVzaW5lc3NIb3VyczogZnVuY3Rpb24oKSB7CgkJdGhpcy51bnJlbmRlckJ1c2luZXNzU2VncygpOwoJfSwKCgoJLyogTm93IEluZGljYXRvcgoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJZ2V0Tm93SW5kaWNhdG9yVW5pdDogZnVuY3Rpb24oKSB7CgkJcmV0dXJuICdtaW51dGUnOyAvLyB3aWxsIHJlZnJlc2ggb24gdGhlIG1pbnV0ZQoJfSwKCgoJcmVuZGVyTm93SW5kaWNhdG9yOiBmdW5jdGlvbihkYXRlKSB7CgkJLy8gc2VnIHN5c3RlbSBtaWdodCBiZSBvdmVya2lsbCwgYnV0IGl0IGhhbmRsZXMgc2NlbmFyaW8gd2hlcmUgbGluZSBuZWVkcyB0byBiZSByZW5kZXJlZAoJCS8vICBtb3JlIHRoYW4gb25jZSBiZWNhdXNlIG9mIGNvbHVtbnMgd2l0aCB0aGUgc2FtZSBkYXRlIChyZXNvdXJjZXMgY29sdW1ucyBmb3IgZXhhbXBsZSkKCQl2YXIgc2VncyA9IHRoaXMuc3BhblRvU2Vncyh7IHN0YXJ0OiBkYXRlLCBlbmQ6IGRhdGUgfSk7CgkJdmFyIHRvcCA9IHRoaXMuY29tcHV0ZURhdGVUb3AoZGF0ZSwgZGF0ZSk7CgkJdmFyIG5vZGVzID0gW107CgkJdmFyIGk7CgoJCS8vIHJlbmRlciBsaW5lcyB3aXRoaW4gdGhlIGNvbHVtbnMKCQlmb3IgKGkgPSAwOyBpIDwgc2Vncy5sZW5ndGg7IGkrKykgewoJCQlub2Rlcy5wdXNoKCQoJzxkaXYgY2xhc3M9ImZjLW5vdy1pbmRpY2F0b3IgZmMtbm93LWluZGljYXRvci1saW5lIj48L2Rpdj4nKQoJCQkJLmNzcygndG9wJywgdG9wKQoJCQkJLmFwcGVuZFRvKHRoaXMuY29sQ29udGFpbmVyRWxzLmVxKHNlZ3NbaV0uY29sKSlbMF0pOwoJCX0KCgkJLy8gcmVuZGVyIGFuIGFycm93IG92ZXIgdGhlIGF4aXMKCQlpZiAoc2Vncy5sZW5ndGggPiAwKSB7IC8vIGlzIHRoZSBjdXJyZW50IHRpbWUgaW4gdmlldz8KCQkJbm9kZXMucHVzaCgkKCc8ZGl2IGNsYXNzPSJmYy1ub3ctaW5kaWNhdG9yIGZjLW5vdy1pbmRpY2F0b3ItYXJyb3ciPjwvZGl2PicpCgkJCQkuY3NzKCd0b3AnLCB0b3ApCgkJCQkuYXBwZW5kVG8odGhpcy5lbC5maW5kKCcuZmMtY29udGVudC1za2VsZXRvbicpKVswXSk7CgkJfQoKCQl0aGlzLm5vd0luZGljYXRvckVscyA9ICQobm9kZXMpOwoJfSwKCgoJdW5yZW5kZXJOb3dJbmRpY2F0b3I6IGZ1bmN0aW9uKCkgewoJCWlmICh0aGlzLm5vd0luZGljYXRvckVscykgewoJCQl0aGlzLm5vd0luZGljYXRvckVscy5yZW1vdmUoKTsKCQkJdGhpcy5ub3dJbmRpY2F0b3JFbHMgPSBudWxsOwoJCX0KCX0sCgoKCS8qIFNlbGVjdGlvbgoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gUmVuZGVycyBhIHZpc3VhbCBpbmRpY2F0aW9uIG9mIGEgc2VsZWN0aW9uLiBPdmVycmlkZXMgdGhlIGRlZmF1bHQsIHdoaWNoIHdhcyB0byBzaW1wbHkgcmVuZGVyIGEgaGlnaGxpZ2h0LgoJcmVuZGVyU2VsZWN0aW9uOiBmdW5jdGlvbihzcGFuKSB7CgkJaWYgKHRoaXMudmlldy5vcHQoJ3NlbGVjdEhlbHBlcicpKSB7IC8vIHRoaXMgc2V0dGluZyBzaWduYWxzIHRoYXQgYSBtb2NrIGhlbHBlciBldmVudCBzaG91bGQgYmUgcmVuZGVyZWQKCgkJCS8vIG5vcm1hbGx5IGFjY2VwcyBhbiBldmVudExvY2F0aW9uLCBzcGFuIGhhcyBhIHN0YXJ0L2VuZCwgd2hpY2ggaXMgZ29vZCBlbm91Z2gKCQkJdGhpcy5yZW5kZXJFdmVudExvY2F0aW9uSGVscGVyKHNwYW4pOwoJCX0KCQllbHNlIHsKCQkJdGhpcy5yZW5kZXJIaWdobGlnaHQoc3Bhbik7CgkJfQoJfSwKCgoJLy8gVW5yZW5kZXJzIGFueSB2aXN1YWwgaW5kaWNhdGlvbiBvZiBhIHNlbGVjdGlvbgoJdW5yZW5kZXJTZWxlY3Rpb246IGZ1bmN0aW9uKCkgewoJCXRoaXMudW5yZW5kZXJIZWxwZXIoKTsKCQl0aGlzLnVucmVuZGVySGlnaGxpZ2h0KCk7Cgl9LAoKCgkvKiBIaWdobGlnaHQKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCXJlbmRlckhpZ2hsaWdodDogZnVuY3Rpb24oc3BhbikgewoJCXRoaXMucmVuZGVySGlnaGxpZ2h0U2Vncyh0aGlzLnNwYW5Ub1NlZ3Moc3BhbikpOwoJfSwKCgoJdW5yZW5kZXJIaWdobGlnaHQ6IGZ1bmN0aW9uKCkgewoJCXRoaXMudW5yZW5kZXJIaWdobGlnaHRTZWdzKCk7Cgl9Cgp9KTsKCjs7CgovKiBNZXRob2RzIGZvciByZW5kZXJpbmcgU0VHTUVOVFMsIHBpZWNlcyBvZiBjb250ZW50IHRoYXQgbGl2ZSBvbiB0aGUgdmlldwogKCB0aGlzIGZpbGUgaXMgbm8gbG9uZ2VyIGp1c3QgZm9yIGV2ZW50cyApCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKVGltZUdyaWQubWl4aW4oewoKCWNvbENvbnRhaW5lckVsczogbnVsbCwgLy8gY29udGFpbmVycyBmb3IgZWFjaCBjb2x1bW4KCgkvLyBpbm5lci1jb250YWluZXJzIGZvciBlYWNoIGNvbHVtbiB3aGVyZSBkaWZmZXJlbnQgdHlwZXMgb2Ygc2VncyBsaXZlCglmZ0NvbnRhaW5lckVsczogbnVsbCwKCWJnQ29udGFpbmVyRWxzOiBudWxsLAoJaGVscGVyQ29udGFpbmVyRWxzOiBudWxsLAoJaGlnaGxpZ2h0Q29udGFpbmVyRWxzOiBudWxsLAoJYnVzaW5lc3NDb250YWluZXJFbHM6IG51bGwsCgoJLy8gYXJyYXlzIG9mIGRpZmZlcmVudCB0eXBlcyBvZiBkaXNwbGF5ZWQgc2VnbWVudHMKCWZnU2VnczogbnVsbCwKCWJnU2VnczogbnVsbCwKCWhlbHBlclNlZ3M6IG51bGwsCgloaWdobGlnaHRTZWdzOiBudWxsLAoJYnVzaW5lc3NTZWdzOiBudWxsLAoKCgkvLyBSZW5kZXJzIHRoZSBET00gdGhhdCB0aGUgdmlldydzIGNvbnRlbnQgd2lsbCBsaXZlIGluCglyZW5kZXJDb250ZW50U2tlbGV0b246IGZ1bmN0aW9uKCkgewoJCXZhciBjZWxsSHRtbCA9ICcnOwoJCXZhciBpOwoJCXZhciBza2VsZXRvbkVsOwoKCQlmb3IgKGkgPSAwOyBpIDwgdGhpcy5jb2xDbnQ7IGkrKykgewoJCQljZWxsSHRtbCArPQoJCQkJJzx0ZD4nICsKCQkJCQknPGRpdiBjbGFzcz0iZmMtY29udGVudC1jb2wiPicgKwoJCQkJCQknPGRpdiBjbGFzcz0iZmMtZXZlbnQtY29udGFpbmVyIGZjLWhlbHBlci1jb250YWluZXIiPjwvZGl2PicgKwoJCQkJCQknPGRpdiBjbGFzcz0iZmMtZXZlbnQtY29udGFpbmVyIj48L2Rpdj4nICsKCQkJCQkJJzxkaXYgY2xhc3M9ImZjLWhpZ2hsaWdodC1jb250YWluZXIiPjwvZGl2PicgKwoJCQkJCQknPGRpdiBjbGFzcz0iZmMtYmdldmVudC1jb250YWluZXIiPjwvZGl2PicgKwoJCQkJCQknPGRpdiBjbGFzcz0iZmMtYnVzaW5lc3MtY29udGFpbmVyIj48L2Rpdj4nICsKCQkJCQknPC9kaXY+JyArCgkJCQknPC90ZD4nOwoJCX0KCgkJc2tlbGV0b25FbCA9ICQoCgkJCSc8ZGl2IGNsYXNzPSJmYy1jb250ZW50LXNrZWxldG9uIj4nICsKCQkJCSc8dGFibGU+JyArCgkJCQkJJzx0cj4nICsgY2VsbEh0bWwgKyAnPC90cj4nICsKCQkJCSc8L3RhYmxlPicgKwoJCQknPC9kaXY+JwoJCSk7CgoJCXRoaXMuY29sQ29udGFpbmVyRWxzID0gc2tlbGV0b25FbC5maW5kKCcuZmMtY29udGVudC1jb2wnKTsKCQl0aGlzLmhlbHBlckNvbnRhaW5lckVscyA9IHNrZWxldG9uRWwuZmluZCgnLmZjLWhlbHBlci1jb250YWluZXInKTsKCQl0aGlzLmZnQ29udGFpbmVyRWxzID0gc2tlbGV0b25FbC5maW5kKCcuZmMtZXZlbnQtY29udGFpbmVyOm5vdCguZmMtaGVscGVyLWNvbnRhaW5lciknKTsKCQl0aGlzLmJnQ29udGFpbmVyRWxzID0gc2tlbGV0b25FbC5maW5kKCcuZmMtYmdldmVudC1jb250YWluZXInKTsKCQl0aGlzLmhpZ2hsaWdodENvbnRhaW5lckVscyA9IHNrZWxldG9uRWwuZmluZCgnLmZjLWhpZ2hsaWdodC1jb250YWluZXInKTsKCQl0aGlzLmJ1c2luZXNzQ29udGFpbmVyRWxzID0gc2tlbGV0b25FbC5maW5kKCcuZmMtYnVzaW5lc3MtY29udGFpbmVyJyk7CgoJCXRoaXMuYm9va2VuZENlbGxzKHNrZWxldG9uRWwuZmluZCgndHInKSk7IC8vIFRPRE86IGRvIHRoaXMgb24gc3RyaW5nIGxldmVsCgkJdGhpcy5lbC5hcHBlbmQoc2tlbGV0b25FbCk7Cgl9LAoKCgkvKiBGb3JlZ3JvdW5kIEV2ZW50cwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJcmVuZGVyRmdTZWdzOiBmdW5jdGlvbihzZWdzKSB7CgkJc2VncyA9IHRoaXMucmVuZGVyRmdTZWdzSW50b0NvbnRhaW5lcnMoc2VncywgdGhpcy5mZ0NvbnRhaW5lckVscyk7CgkJdGhpcy5mZ1NlZ3MgPSBzZWdzOwoJCXJldHVybiBzZWdzOyAvLyBuZWVkZWQgZm9yIEdyaWQ6OnJlbmRlckV2ZW50cwoJfSwKCgoJdW5yZW5kZXJGZ1NlZ3M6IGZ1bmN0aW9uKCkgewoJCXRoaXMudW5yZW5kZXJOYW1lZFNlZ3MoJ2ZnU2VncycpOwoJfSwKCgoJLyogRm9yZWdyb3VuZCBIZWxwZXIgRXZlbnRzCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCglyZW5kZXJIZWxwZXJTZWdzOiBmdW5jdGlvbihzZWdzLCBzb3VyY2VTZWcpIHsKCQl2YXIgaGVscGVyRWxzID0gW107CgkJdmFyIGksIHNlZzsKCQl2YXIgc291cmNlRWw7CgoJCXNlZ3MgPSB0aGlzLnJlbmRlckZnU2Vnc0ludG9Db250YWluZXJzKHNlZ3MsIHRoaXMuaGVscGVyQ29udGFpbmVyRWxzKTsKCgkJLy8gVHJ5IHRvIG1ha2UgdGhlIHNlZ21lbnQgdGhhdCBpcyBpbiB0aGUgc2FtZSByb3cgYXMgc291cmNlU2VnIGxvb2sgdGhlIHNhbWUKCQlmb3IgKGkgPSAwOyBpIDwgc2Vncy5sZW5ndGg7IGkrKykgewoJCQlzZWcgPSBzZWdzW2ldOwoJCQlpZiAoc291cmNlU2VnICYmIHNvdXJjZVNlZy5jb2wgPT09IHNlZy5jb2wpIHsKCQkJCXNvdXJjZUVsID0gc291cmNlU2VnLmVsOwoJCQkJc2VnLmVsLmNzcyh7CgkJCQkJbGVmdDogc291cmNlRWwuY3NzKCdsZWZ0JyksCgkJCQkJcmlnaHQ6IHNvdXJjZUVsLmNzcygncmlnaHQnKSwKCQkJCQknbWFyZ2luLWxlZnQnOiBzb3VyY2VFbC5jc3MoJ21hcmdpbi1sZWZ0JyksCgkJCQkJJ21hcmdpbi1yaWdodCc6IHNvdXJjZUVsLmNzcygnbWFyZ2luLXJpZ2h0JykKCQkJCX0pOwoJCQl9CgkJCWhlbHBlckVscy5wdXNoKHNlZy5lbFswXSk7CgkJfQoKCQl0aGlzLmhlbHBlclNlZ3MgPSBzZWdzOwoKCQlyZXR1cm4gJChoZWxwZXJFbHMpOyAvLyBtdXN0IHJldHVybiByZW5kZXJlZCBoZWxwZXJzCgl9LAoKCgl1bnJlbmRlckhlbHBlclNlZ3M6IGZ1bmN0aW9uKCkgewoJCXRoaXMudW5yZW5kZXJOYW1lZFNlZ3MoJ2hlbHBlclNlZ3MnKTsKCX0sCgoKCS8qIEJhY2tncm91bmQgRXZlbnRzCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCglyZW5kZXJCZ1NlZ3M6IGZ1bmN0aW9uKHNlZ3MpIHsKCQlzZWdzID0gdGhpcy5yZW5kZXJGaWxsU2VnRWxzKCdiZ0V2ZW50Jywgc2Vncyk7IC8vIFRPRE86IG9sZCBmaWxsIHN5c3RlbQoJCXRoaXMudXBkYXRlU2VnVmVydGljYWxzKHNlZ3MpOwoJCXRoaXMuYXR0YWNoU2Vnc0J5Q29sKHRoaXMuZ3JvdXBTZWdzQnlDb2woc2VncyksIHRoaXMuYmdDb250YWluZXJFbHMpOwoJCXRoaXMuYmdTZWdzID0gc2VnczsKCQlyZXR1cm4gc2VnczsgLy8gbmVlZGVkIGZvciBHcmlkOjpyZW5kZXJFdmVudHMKCX0sCgoKCXVucmVuZGVyQmdTZWdzOiBmdW5jdGlvbigpIHsKCQl0aGlzLnVucmVuZGVyTmFtZWRTZWdzKCdiZ1NlZ3MnKTsKCX0sCgoKCS8qIEhpZ2hsaWdodAoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJcmVuZGVySGlnaGxpZ2h0U2VnczogZnVuY3Rpb24oc2VncykgewoJCXNlZ3MgPSB0aGlzLnJlbmRlckZpbGxTZWdFbHMoJ2hpZ2hsaWdodCcsIHNlZ3MpOyAvLyBUT0RPOiBvbGQgZmlsbCBzeXN0ZW0KCQl0aGlzLnVwZGF0ZVNlZ1ZlcnRpY2FscyhzZWdzKTsKCQl0aGlzLmF0dGFjaFNlZ3NCeUNvbCh0aGlzLmdyb3VwU2Vnc0J5Q29sKHNlZ3MpLCB0aGlzLmhpZ2hsaWdodENvbnRhaW5lckVscyk7CgkJdGhpcy5oaWdobGlnaHRTZWdzID0gc2VnczsKCX0sCgoKCXVucmVuZGVySGlnaGxpZ2h0U2VnczogZnVuY3Rpb24oKSB7CgkJdGhpcy51bnJlbmRlck5hbWVkU2VncygnaGlnaGxpZ2h0U2VncycpOwoJfSwKCgoJLyogQnVzaW5lc3MgSG91cnMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCXJlbmRlckJ1c2luZXNzU2VnczogZnVuY3Rpb24oc2VncykgewoJCXNlZ3MgPSB0aGlzLnJlbmRlckZpbGxTZWdFbHMoJ2J1c2luZXNzSG91cnMnLCBzZWdzKTsgLy8gVE9ETzogb2xkIGZpbGwgc3lzdGVtCgkJdGhpcy51cGRhdGVTZWdWZXJ0aWNhbHMoc2Vncyk7CgkJdGhpcy5hdHRhY2hTZWdzQnlDb2wodGhpcy5ncm91cFNlZ3NCeUNvbChzZWdzKSwgdGhpcy5idXNpbmVzc0NvbnRhaW5lckVscyk7CgkJdGhpcy5idXNpbmVzc1NlZ3MgPSBzZWdzOwoJfSwKCgoJdW5yZW5kZXJCdXNpbmVzc1NlZ3M6IGZ1bmN0aW9uKCkgewoJCXRoaXMudW5yZW5kZXJOYW1lZFNlZ3MoJ2J1c2luZXNzU2VncycpOwoJfSwKCgoJLyogU2VnIFJlbmRlcmluZyBVdGlscwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gR2l2ZW4gYSBmbGF0IGFycmF5IG9mIHNlZ21lbnRzLCByZXR1cm4gYW4gYXJyYXkgb2Ygc3ViLWFycmF5cywgZ3JvdXBlZCBieSBlYWNoIHNlZ21lbnQncyBjb2wKCWdyb3VwU2Vnc0J5Q29sOiBmdW5jdGlvbihzZWdzKSB7CgkJdmFyIHNlZ3NCeUNvbCA9IFtdOwoJCXZhciBpOwoKCQlmb3IgKGkgPSAwOyBpIDwgdGhpcy5jb2xDbnQ7IGkrKykgewoJCQlzZWdzQnlDb2wucHVzaChbXSk7CgkJfQoKCQlmb3IgKGkgPSAwOyBpIDwgc2Vncy5sZW5ndGg7IGkrKykgewoJCQlzZWdzQnlDb2xbc2Vnc1tpXS5jb2xdLnB1c2goc2Vnc1tpXSk7CgkJfQoKCQlyZXR1cm4gc2Vnc0J5Q29sOwoJfSwKCgoJLy8gR2l2ZW4gc2VnbWVudHMgZ3JvdXBlZCBieSBjb2x1bW4sIGluc2VydCB0aGUgc2VnbWVudHMnIGVsZW1lbnRzIGludG8gYSBwYXJhbGxlbCBhcnJheSBvZiBjb250YWluZXIKCS8vIGVsZW1lbnRzLCBlYWNoIGxpdmluZyB3aXRoaW4gYSBjb2x1bW4uCglhdHRhY2hTZWdzQnlDb2w6IGZ1bmN0aW9uKHNlZ3NCeUNvbCwgY29udGFpbmVyRWxzKSB7CgkJdmFyIGNvbDsKCQl2YXIgc2VnczsKCQl2YXIgaTsKCgkJZm9yIChjb2wgPSAwOyBjb2wgPCB0aGlzLmNvbENudDsgY29sKyspIHsgLy8gaXRlcmF0ZSBlYWNoIGNvbHVtbiBncm91cGluZwoJCQlzZWdzID0gc2Vnc0J5Q29sW2NvbF07CgoJCQlmb3IgKGkgPSAwOyBpIDwgc2Vncy5sZW5ndGg7IGkrKykgewoJCQkJY29udGFpbmVyRWxzLmVxKGNvbCkuYXBwZW5kKHNlZ3NbaV0uZWwpOwoJCQl9CgkJfQoJfSwKCgoJLy8gR2l2ZW4gdGhlIG5hbWUgb2YgYSBwcm9wZXJ0eSBvZiBgdGhpc2Agb2JqZWN0LCBhc3N1bWVkIHRvIGJlIGFuIGFycmF5IG9mIHNlZ21lbnRzLAoJLy8gbG9vcHMgdGhyb3VnaCBlYWNoIHNlZ21lbnQgYW5kIHJlbW92ZXMgZnJvbSBET00uIFdpbGwgbnVsbC1vdXQgdGhlIHByb3BlcnR5IGFmdGVyd2FyZHMuCgl1bnJlbmRlck5hbWVkU2VnczogZnVuY3Rpb24ocHJvcE5hbWUpIHsKCQl2YXIgc2VncyA9IHRoaXNbcHJvcE5hbWVdOwoJCXZhciBpOwoKCQlpZiAoc2VncykgewoJCQlmb3IgKGkgPSAwOyBpIDwgc2Vncy5sZW5ndGg7IGkrKykgewoJCQkJc2Vnc1tpXS5lbC5yZW1vdmUoKTsKCQkJfQoJCQl0aGlzW3Byb3BOYW1lXSA9IG51bGw7CgkJfQoJfSwKCgoKCS8qIEZvcmVncm91bmQgRXZlbnQgUmVuZGVyaW5nIFV0aWxzCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBHaXZlbiBhbiBhcnJheSBvZiBmb3JlZ3JvdW5kIHNlZ21lbnRzLCByZW5kZXIgYSBET00gZWxlbWVudCBmb3IgZWFjaCwgY29tcHV0ZXMgcG9zaXRpb24sCgkvLyBhbmQgYXR0YWNoZXMgdG8gdGhlIGNvbHVtbiBpbm5lci1jb250YWluZXIgZWxlbWVudHMuCglyZW5kZXJGZ1NlZ3NJbnRvQ29udGFpbmVyczogZnVuY3Rpb24oc2VncywgY29udGFpbmVyRWxzKSB7CgkJdmFyIHNlZ3NCeUNvbDsKCQl2YXIgY29sOwoKCQlzZWdzID0gdGhpcy5yZW5kZXJGZ1NlZ0VscyhzZWdzKTsgLy8gd2lsbCBjYWxsIGZnU2VnSHRtbAoJCXNlZ3NCeUNvbCA9IHRoaXMuZ3JvdXBTZWdzQnlDb2woc2Vncyk7CgoJCWZvciAoY29sID0gMDsgY29sIDwgdGhpcy5jb2xDbnQ7IGNvbCsrKSB7CgkJCXRoaXMudXBkYXRlRmdTZWdDb29yZHMoc2Vnc0J5Q29sW2NvbF0pOwoJCX0KCgkJdGhpcy5hdHRhY2hTZWdzQnlDb2woc2Vnc0J5Q29sLCBjb250YWluZXJFbHMpOwoKCQlyZXR1cm4gc2VnczsKCX0sCgoKCS8vIFJlbmRlcnMgdGhlIEhUTUwgZm9yIGEgc2luZ2xlIGV2ZW50IHNlZ21lbnQncyBkZWZhdWx0IHJlbmRlcmluZwoJZmdTZWdIdG1sOiBmdW5jdGlvbihzZWcsIGRpc2FibGVSZXNpemluZykgewoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciBldmVudCA9IHNlZy5ldmVudDsKCQl2YXIgaXNEcmFnZ2FibGUgPSB2aWV3LmlzRXZlbnREcmFnZ2FibGUoZXZlbnQpOwoJCXZhciBpc1Jlc2l6YWJsZUZyb21TdGFydCA9ICFkaXNhYmxlUmVzaXppbmcgJiYgc2VnLmlzU3RhcnQgJiYgdmlldy5pc0V2ZW50UmVzaXphYmxlRnJvbVN0YXJ0KGV2ZW50KTsKCQl2YXIgaXNSZXNpemFibGVGcm9tRW5kID0gIWRpc2FibGVSZXNpemluZyAmJiBzZWcuaXNFbmQgJiYgdmlldy5pc0V2ZW50UmVzaXphYmxlRnJvbUVuZChldmVudCk7CgkJdmFyIGNsYXNzZXMgPSB0aGlzLmdldFNlZ0NsYXNzZXMoc2VnLCBpc0RyYWdnYWJsZSwgaXNSZXNpemFibGVGcm9tU3RhcnQgfHwgaXNSZXNpemFibGVGcm9tRW5kKTsKCQl2YXIgc2tpbkNzcyA9IGNzc1RvU3RyKHRoaXMuZ2V0U2VnU2tpbkNzcyhzZWcpKTsKCQl2YXIgdGltZVRleHQ7CgkJdmFyIGZ1bGxUaW1lVGV4dDsgLy8gbW9yZSB2ZXJib3NlIHRpbWUgdGV4dC4gZm9yIHRoZSBwcmludCBzdHlsZXNoZWV0CgkJdmFyIHN0YXJ0VGltZVRleHQ7IC8vIGp1c3QgdGhlIHN0YXJ0IHRpbWUgdGV4dAoKCQljbGFzc2VzLnVuc2hpZnQoJ2ZjLXRpbWUtZ3JpZC1ldmVudCcsICdmYy12LWV2ZW50Jyk7CgoJCWlmICh2aWV3LmlzTXVsdGlEYXlFdmVudChldmVudCkpIHsgLy8gaWYgdGhlIGV2ZW50IGFwcGVhcnMgdG8gc3BhbiBtb3JlIHRoYW4gb25lIGRheS4uLgoJCQkvLyBEb24ndCBkaXNwbGF5IHRpbWUgdGV4dCBvbiBzZWdtZW50cyB0aGF0IHJ1biBlbnRpcmVseSB0aHJvdWdoIGEgZGF5LgoJCQkvLyBUaGF0IHdvdWxkIGFwcGVhciBhcyBtaWRuaWdodC1taWRuaWdodCBhbmQgd291bGQgbG9vayBkdW1iLgoJCQkvLyBPdGhlcndpc2UsIGRpc3BsYXkgdGhlIHRpbWUgdGV4dCBmb3IgdGhlICpzZWdtZW50J3MqIHRpbWVzIChsaWtlIDZwbS1taWRuaWdodCBvciBtaWRuaWdodC0xMGFtKQoJCQlpZiAoc2VnLmlzU3RhcnQgfHwgc2VnLmlzRW5kKSB7CgkJCQl0aW1lVGV4dCA9IHRoaXMuZ2V0RXZlbnRUaW1lVGV4dChzZWcpOwoJCQkJZnVsbFRpbWVUZXh0ID0gdGhpcy5nZXRFdmVudFRpbWVUZXh0KHNlZywgJ0xUJyk7CgkJCQlzdGFydFRpbWVUZXh0ID0gdGhpcy5nZXRFdmVudFRpbWVUZXh0KHNlZywgbnVsbCwgZmFsc2UpOyAvLyBkaXNwbGF5RW5kPWZhbHNlCgkJCX0KCQl9IGVsc2UgewoJCQkvLyBEaXNwbGF5IHRoZSBub3JtYWwgdGltZSB0ZXh0IGZvciB0aGUgKmV2ZW50J3MqIHRpbWVzCgkJCXRpbWVUZXh0ID0gdGhpcy5nZXRFdmVudFRpbWVUZXh0KGV2ZW50KTsKCQkJZnVsbFRpbWVUZXh0ID0gdGhpcy5nZXRFdmVudFRpbWVUZXh0KGV2ZW50LCAnTFQnKTsKCQkJc3RhcnRUaW1lVGV4dCA9IHRoaXMuZ2V0RXZlbnRUaW1lVGV4dChldmVudCwgbnVsbCwgZmFsc2UpOyAvLyBkaXNwbGF5RW5kPWZhbHNlCgkJfQoKCQlyZXR1cm4gJzxhIGNsYXNzPSInICsgY2xhc3Nlcy5qb2luKCcgJykgKyAnIicgKwoJCQkoZXZlbnQudXJsID8KCQkJCScgaHJlZj0iJyArIGh0bWxFc2NhcGUoZXZlbnQudXJsKSArICciJyA6CgkJCQknJwoJCQkJKSArCgkJCShza2luQ3NzID8KCQkJCScgc3R5bGU9IicgKyBza2luQ3NzICsgJyInIDoKCQkJCScnCgkJCQkpICsKCQkJJz4nICsKCQkJCSc8ZGl2IGNsYXNzPSJmYy1jb250ZW50Ij4nICsKCQkJCQkodGltZVRleHQgPwoJCQkJCQknPGRpdiBjbGFzcz0iZmMtdGltZSInICsKCQkJCQkJJyBkYXRhLXN0YXJ0PSInICsgaHRtbEVzY2FwZShzdGFydFRpbWVUZXh0KSArICciJyArCgkJCQkJCScgZGF0YS1mdWxsPSInICsgaHRtbEVzY2FwZShmdWxsVGltZVRleHQpICsgJyInICsKCQkJCQkJJz4nICsKCQkJCQkJCSc8c3Bhbj4nICsgaHRtbEVzY2FwZSh0aW1lVGV4dCkgKyAnPC9zcGFuPicgKwoJCQkJCQknPC9kaXY+JyA6CgkJCQkJCScnCgkJCQkJCSkgKwoJCQkJCShldmVudC50aXRsZSA/CgkJCQkJCSc8ZGl2IGNsYXNzPSJmYy10aXRsZSI+JyArCgkJCQkJCQlodG1sRXNjYXBlKGV2ZW50LnRpdGxlKSArCgkJCQkJCSc8L2Rpdj4nIDoKCQkJCQkJJycKCQkJCQkJKSArCgkJCQknPC9kaXY+JyArCgkJCQknPGRpdiBjbGFzcz0iZmMtYmciLz4nICsKCQkJCS8qIFRPRE86IHdyaXRlIENTUyBmb3IgdGhpcwoJCQkJKGlzUmVzaXphYmxlRnJvbVN0YXJ0ID8KCQkJCQknPGRpdiBjbGFzcz0iZmMtcmVzaXplciBmYy1zdGFydC1yZXNpemVyIiAvPicgOgoJCQkJCScnCgkJCQkJKSArCgkJCQkqLwoJCQkJKGlzUmVzaXphYmxlRnJvbUVuZCA/CgkJCQkJJzxkaXYgY2xhc3M9ImZjLXJlc2l6ZXIgZmMtZW5kLXJlc2l6ZXIiIC8+JyA6CgkJCQkJJycKCQkJCQkpICsKCQkJJzwvYT4nOwoJfSwKCgoJLyogU2VnIFBvc2l0aW9uIFV0aWxzCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBSZWZyZXNoZXMgdGhlIENTUyB0b3AvYm90dG9tIGNvb3JkaW5hdGVzIGZvciBlYWNoIHNlZ21lbnQgZWxlbWVudC4KCS8vIFdvcmtzIHdoZW4gY2FsbGVkIGFmdGVyIGluaXRpYWwgcmVuZGVyLCBhZnRlciBhIHdpbmRvdyByZXNpemUvem9vbSBmb3IgZXhhbXBsZS4KCXVwZGF0ZVNlZ1ZlcnRpY2FsczogZnVuY3Rpb24oc2VncykgewoJCXRoaXMuY29tcHV0ZVNlZ1ZlcnRpY2FscyhzZWdzKTsKCQl0aGlzLmFzc2lnblNlZ1ZlcnRpY2FscyhzZWdzKTsKCX0sCgoKCS8vIEZvciBlYWNoIHNlZ21lbnQgaW4gYW4gYXJyYXksIGNvbXB1dGVzIGFuZCBhc3NpZ25zIGl0cyB0b3AgYW5kIGJvdHRvbSBwcm9wZXJ0aWVzCgljb21wdXRlU2VnVmVydGljYWxzOiBmdW5jdGlvbihzZWdzKSB7CgkJdmFyIGksIHNlZzsKCQl2YXIgZGF5RGF0ZTsKCgkJZm9yIChpID0gMDsgaSA8IHNlZ3MubGVuZ3RoOyBpKyspIHsKCQkJc2VnID0gc2Vnc1tpXTsKCQkJZGF5RGF0ZSA9IHRoaXMuZGF5RGF0ZXNbc2VnLmRheUluZGV4XTsKCgkJCXNlZy50b3AgPSB0aGlzLmNvbXB1dGVEYXRlVG9wKHNlZy5zdGFydCwgZGF5RGF0ZSk7CgkJCXNlZy5ib3R0b20gPSB0aGlzLmNvbXB1dGVEYXRlVG9wKHNlZy5lbmQsIGRheURhdGUpOwoJCX0KCX0sCgoKCS8vIEdpdmVuIHNlZ21lbnRzIHRoYXQgYWxyZWFkeSBoYXZlIHRoZWlyIHRvcC9ib3R0b20gcHJvcGVydGllcyBjb21wdXRlZCwgYXBwbGllcyB0aG9zZSB2YWx1ZXMgdG8KCS8vIHRoZSBzZWdtZW50cycgZWxlbWVudHMuCglhc3NpZ25TZWdWZXJ0aWNhbHM6IGZ1bmN0aW9uKHNlZ3MpIHsKCQl2YXIgaSwgc2VnOwoKCQlmb3IgKGkgPSAwOyBpIDwgc2Vncy5sZW5ndGg7IGkrKykgewoJCQlzZWcgPSBzZWdzW2ldOwoJCQlzZWcuZWwuY3NzKHRoaXMuZ2VuZXJhdGVTZWdWZXJ0aWNhbENzcyhzZWcpKTsKCQl9Cgl9LAoKCgkvLyBHZW5lcmF0ZXMgYW4gb2JqZWN0IHdpdGggQ1NTIHByb3BlcnRpZXMgZm9yIHRoZSB0b3AvYm90dG9tIGNvb3JkaW5hdGVzIG9mIGEgc2VnbWVudCBlbGVtZW50CglnZW5lcmF0ZVNlZ1ZlcnRpY2FsQ3NzOiBmdW5jdGlvbihzZWcpIHsKCQlyZXR1cm4gewoJCQl0b3A6IHNlZy50b3AsCgkJCWJvdHRvbTogLXNlZy5ib3R0b20gLy8gZmxpcHBlZCBiZWNhdXNlIG5lZWRzIHRvIGJlIHNwYWNlIGJleW9uZCBib3R0b20gZWRnZSBvZiBldmVudCBjb250YWluZXIKCQl9OwoJfSwKCgoJLyogRm9yZWdyb3VuZCBFdmVudCBQb3NpdGlvbmluZyBVdGlscwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gR2l2ZW4gc2VnbWVudHMgdGhhdCBhcmUgYXNzdW1lZCB0byBhbGwgbGl2ZSBpbiB0aGUgKnNhbWUgY29sdW1uKiwKCS8vIGNvbXB1dGUgdGhlaXIgdmVyaWNhbC9ob3Jpem9udGFsIGNvb3JkaW5hdGVzIGFuZCBhc3NpZ24gdG8gdGhlaXIgZWxlbWVudHMuCgl1cGRhdGVGZ1NlZ0Nvb3JkczogZnVuY3Rpb24oc2VncykgewoJCXRoaXMuY29tcHV0ZVNlZ1ZlcnRpY2FscyhzZWdzKTsgLy8gaG9yaXpvbnRhbHMgcmVsaWVzIG9uIHRoaXMKCQl0aGlzLmNvbXB1dGVGZ1NlZ0hvcml6b250YWxzKHNlZ3MpOyAvLyBjb21wdXRlIGhvcml6b250YWwgY29vcmRpbmF0ZXMsIHotaW5kZXgncywgYW5kIHJlb3JkZXIgdGhlIGFycmF5CgkJdGhpcy5hc3NpZ25TZWdWZXJ0aWNhbHMoc2Vncyk7CgkJdGhpcy5hc3NpZ25GZ1NlZ0hvcml6b250YWxzKHNlZ3MpOwoJfSwKCgoJLy8gR2l2ZW4gYW4gYXJyYXkgb2Ygc2VnbWVudHMgdGhhdCBhcmUgYWxsIGluIHRoZSBzYW1lIGNvbHVtbiwgc2V0cyB0aGUgYmFja3dhcmRDb29yZCBhbmQgZm9yd2FyZENvb3JkIG9uIGVhY2guCgkvLyBOT1RFOiBBbHNvIHJlb3JkZXJzIHRoZSBnaXZlbiBhcnJheSBieSBkYXRlIQoJY29tcHV0ZUZnU2VnSG9yaXpvbnRhbHM6IGZ1bmN0aW9uKHNlZ3MpIHsKCQl2YXIgbGV2ZWxzOwoJCXZhciBsZXZlbDA7CgkJdmFyIGk7CgoJCXRoaXMuc29ydEV2ZW50U2VncyhzZWdzKTsgLy8gb3JkZXIgYnkgY2VydGFpbiBjcml0ZXJpYQoJCWxldmVscyA9IGJ1aWxkU2xvdFNlZ0xldmVscyhzZWdzKTsKCQljb21wdXRlRm9yd2FyZFNsb3RTZWdzKGxldmVscyk7CgoJCWlmICgobGV2ZWwwID0gbGV2ZWxzWzBdKSkgewoKCQkJZm9yIChpID0gMDsgaSA8IGxldmVsMC5sZW5ndGg7IGkrKykgewoJCQkJY29tcHV0ZVNsb3RTZWdQcmVzc3VyZXMobGV2ZWwwW2ldKTsKCQkJfQoKCQkJZm9yIChpID0gMDsgaSA8IGxldmVsMC5sZW5ndGg7IGkrKykgewoJCQkJdGhpcy5jb21wdXRlRmdTZWdGb3J3YXJkQmFjayhsZXZlbDBbaV0sIDAsIDApOwoJCQl9CgkJfQoJfSwKCgoJLy8gQ2FsY3VsYXRlIHNlZy5mb3J3YXJkQ29vcmQgYW5kIHNlZy5iYWNrd2FyZENvb3JkIGZvciB0aGUgc2VnbWVudCwgd2hlcmUgYm90aCB2YWx1ZXMgcmFuZ2UKCS8vIGZyb20gMCB0byAxLiBJZiB0aGUgY2FsZW5kYXIgaXMgbGVmdC10by1yaWdodCwgdGhlIHNlZy5iYWNrd2FyZENvb3JkIG1hcHMgdG8gImxlZnQiIGFuZAoJLy8gc2VnLmZvcndhcmRDb29yZCBtYXBzIHRvICJyaWdodCIgKHZpYSBwZXJjZW50YWdlKS4gVmljZS12ZXJzYSBpZiB0aGUgY2FsZW5kYXIgaXMgcmlnaHQtdG8tbGVmdC4KCS8vCgkvLyBUaGUgc2VnbWVudCBtaWdodCBiZSBwYXJ0IG9mIGEgInNlcmllcyIsIHdoaWNoIG1lYW5zIGNvbnNlY3V0aXZlIHNlZ21lbnRzIHdpdGggdGhlIHNhbWUgcHJlc3N1cmUKCS8vIHdobydzIHdpZHRoIGlzIHVua25vd24gdW50aWwgYW4gZWRnZSBoYXMgYmVlbiBoaXQuIGBzZXJpZXNCYWNrd2FyZFByZXNzdXJlYCBpcyB0aGUgbnVtYmVyIG9mCgkvLyBzZWdtZW50cyBiZWhpbmQgdGhpcyBvbmUgaW4gdGhlIGN1cnJlbnQgc2VyaWVzLCBhbmQgYHNlcmllc0JhY2t3YXJkQ29vcmRgIGlzIHRoZSBzdGFydGluZwoJLy8gY29vcmRpbmF0ZSBvZiB0aGUgZmlyc3Qgc2VnbWVudCBpbiB0aGUgc2VyaWVzLgoJY29tcHV0ZUZnU2VnRm9yd2FyZEJhY2s6IGZ1bmN0aW9uKHNlZywgc2VyaWVzQmFja3dhcmRQcmVzc3VyZSwgc2VyaWVzQmFja3dhcmRDb29yZCkgewoJCXZhciBmb3J3YXJkU2VncyA9IHNlZy5mb3J3YXJkU2VnczsKCQl2YXIgaTsKCgkJaWYgKHNlZy5mb3J3YXJkQ29vcmQgPT09IHVuZGVmaW5lZCkgeyAvLyBub3QgYWxyZWFkeSBjb21wdXRlZAoKCQkJaWYgKCFmb3J3YXJkU2Vncy5sZW5ndGgpIHsKCgkJCQkvLyBpZiB0aGVyZSBhcmUgbm8gZm9yd2FyZCBzZWdtZW50cywgdGhpcyBzZWdtZW50IHNob3VsZCBidXR0IHVwIGFnYWluc3QgdGhlIGVkZ2UKCQkJCXNlZy5mb3J3YXJkQ29vcmQgPSAxOwoJCQl9CgkJCWVsc2UgewoKCQkJCS8vIHNvcnQgaGlnaGVzdCBwcmVzc3VyZSBmaXJzdAoJCQkJdGhpcy5zb3J0Rm9yd2FyZFNlZ3MoZm9yd2FyZFNlZ3MpOwoKCQkJCS8vIHRoaXMgc2VnbWVudCdzIGZvcndhcmRDb29yZCB3aWxsIGJlIGNhbGN1bGF0ZWQgZnJvbSB0aGUgYmFja3dhcmRDb29yZCBvZiB0aGUKCQkJCS8vIGhpZ2hlc3QtcHJlc3N1cmUgZm9yd2FyZCBzZWdtZW50LgoJCQkJdGhpcy5jb21wdXRlRmdTZWdGb3J3YXJkQmFjayhmb3J3YXJkU2Vnc1swXSwgc2VyaWVzQmFja3dhcmRQcmVzc3VyZSArIDEsIHNlcmllc0JhY2t3YXJkQ29vcmQpOwoJCQkJc2VnLmZvcndhcmRDb29yZCA9IGZvcndhcmRTZWdzWzBdLmJhY2t3YXJkQ29vcmQ7CgkJCX0KCgkJCS8vIGNhbGN1bGF0ZSB0aGUgYmFja3dhcmRDb29yZCBmcm9tIHRoZSBmb3J3YXJkQ29vcmQuIGNvbnNpZGVyIHRoZSBzZXJpZXMKCQkJc2VnLmJhY2t3YXJkQ29vcmQgPSBzZWcuZm9yd2FyZENvb3JkIC0KCQkJCShzZWcuZm9yd2FyZENvb3JkIC0gc2VyaWVzQmFja3dhcmRDb29yZCkgLyAvLyBhdmFpbGFibGUgd2lkdGggZm9yIHNlcmllcwoJCQkJKHNlcmllc0JhY2t3YXJkUHJlc3N1cmUgKyAxKTsgLy8gIyBvZiBzZWdtZW50cyBpbiB0aGUgc2VyaWVzCgoJCQkvLyB1c2UgdGhpcyBzZWdtZW50J3MgY29vcmRpbmF0ZXMgdG8gY29tcHV0ZWQgdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBsZXNzLXByZXNzdXJpemVkCgkJCS8vIGZvcndhcmQgc2VnbWVudHMKCQkJZm9yIChpPTA7IGk8Zm9yd2FyZFNlZ3MubGVuZ3RoOyBpKyspIHsKCQkJCXRoaXMuY29tcHV0ZUZnU2VnRm9yd2FyZEJhY2soZm9yd2FyZFNlZ3NbaV0sIDAsIHNlZy5mb3J3YXJkQ29vcmQpOwoJCQl9CgkJfQoJfSwKCgoJc29ydEZvcndhcmRTZWdzOiBmdW5jdGlvbihmb3J3YXJkU2VncykgewoJCWZvcndhcmRTZWdzLnNvcnQocHJveHkodGhpcywgJ2NvbXBhcmVGb3J3YXJkU2VncycpKTsKCX0sCgoKCS8vIEEgY21wIGZ1bmN0aW9uIGZvciBkZXRlcm1pbmluZyB3aGljaCBmb3J3YXJkIHNlZ21lbnQgdG8gcmVseSBvbiBtb3JlIHdoZW4gY29tcHV0aW5nIGNvb3JkaW5hdGVzLgoJY29tcGFyZUZvcndhcmRTZWdzOiBmdW5jdGlvbihzZWcxLCBzZWcyKSB7CgkJLy8gcHV0IGhpZ2hlci1wcmVzc3VyZSBmaXJzdAoJCXJldHVybiBzZWcyLmZvcndhcmRQcmVzc3VyZSAtIHNlZzEuZm9yd2FyZFByZXNzdXJlIHx8CgkJCS8vIHB1dCBzZWdtZW50cyB0aGF0IGFyZSBjbG9zZXIgdG8gaW5pdGlhbCBlZGdlIGZpcnN0IChhbmQgZmF2b3Igb25lcyB3aXRoIG5vIGNvb3JkcyB5ZXQpCgkJCShzZWcxLmJhY2t3YXJkQ29vcmQgfHwgMCkgLSAoc2VnMi5iYWNrd2FyZENvb3JkIHx8IDApIHx8CgkJCS8vIGRvIG5vcm1hbCBzb3J0aW5nLi4uCgkJCXRoaXMuY29tcGFyZUV2ZW50U2VncyhzZWcxLCBzZWcyKTsKCX0sCgoKCS8vIEdpdmVuIGZvcmVncm91bmQgZXZlbnQgc2VnbWVudHMgdGhhdCBoYXZlIGFscmVhZHkgaGFkIHRoZWlyIHBvc2l0aW9uIGNvb3JkaW5hdGVzIGNvbXB1dGVkLAoJLy8gYXNzaWducyBwb3NpdGlvbi1yZWxhdGVkIENTUyB2YWx1ZXMgdG8gdGhlaXIgZWxlbWVudHMuCglhc3NpZ25GZ1NlZ0hvcml6b250YWxzOiBmdW5jdGlvbihzZWdzKSB7CgkJdmFyIGksIHNlZzsKCgkJZm9yIChpID0gMDsgaSA8IHNlZ3MubGVuZ3RoOyBpKyspIHsKCQkJc2VnID0gc2Vnc1tpXTsKCQkJc2VnLmVsLmNzcyh0aGlzLmdlbmVyYXRlRmdTZWdIb3Jpem9udGFsQ3NzKHNlZykpOwoKCQkJLy8gaWYgdGhlIGhlaWdodCBpcyBzaG9ydCwgYWRkIGEgY2xhc3NOYW1lIGZvciBhbHRlcm5hdGUgc3R5bGluZwoJCQlpZiAoc2VnLmJvdHRvbSAtIHNlZy50b3AgPCAzMCkgewoJCQkJc2VnLmVsLmFkZENsYXNzKCdmYy1zaG9ydCcpOwoJCQl9CgkJfQoJfSwKCgoJLy8gR2VuZXJhdGVzIGFuIG9iamVjdCB3aXRoIENTUyBwcm9wZXJ0aWVzL3ZhbHVlcyB0aGF0IHNob3VsZCBiZSBhcHBsaWVkIHRvIGFuIGV2ZW50IHNlZ21lbnQgZWxlbWVudC4KCS8vIENvbnRhaW5zIGltcG9ydGFudCBwb3NpdGlvbmluZy1yZWxhdGVkIHByb3BlcnRpZXMgdGhhdCBzaG91bGQgYmUgYXBwbGllZCB0byBhbnkgZXZlbnQgZWxlbWVudCwgY3VzdG9taXplZCBvciBub3QuCglnZW5lcmF0ZUZnU2VnSG9yaXpvbnRhbENzczogZnVuY3Rpb24oc2VnKSB7CgkJdmFyIHNob3VsZE92ZXJsYXAgPSB0aGlzLnZpZXcub3B0KCdzbG90RXZlbnRPdmVybGFwJyk7CgkJdmFyIGJhY2t3YXJkQ29vcmQgPSBzZWcuYmFja3dhcmRDb29yZDsgLy8gdGhlIGxlZnQgc2lkZSBpZiBMVFIuIHRoZSByaWdodCBzaWRlIGlmIFJUTC4gZmxvYXRpbmctcG9pbnQKCQl2YXIgZm9yd2FyZENvb3JkID0gc2VnLmZvcndhcmRDb29yZDsgLy8gdGhlIHJpZ2h0IHNpZGUgaWYgTFRSLiB0aGUgbGVmdCBzaWRlIGlmIFJUTC4gZmxvYXRpbmctcG9pbnQKCQl2YXIgcHJvcHMgPSB0aGlzLmdlbmVyYXRlU2VnVmVydGljYWxDc3Moc2VnKTsgLy8gZ2V0IHRvcC9ib3R0b20gZmlyc3QKCQl2YXIgbGVmdDsgLy8gYW1vdW50IG9mIHNwYWNlIGZyb20gbGVmdCBlZGdlLCBhIGZyYWN0aW9uIG9mIHRoZSB0b3RhbCB3aWR0aAoJCXZhciByaWdodDsgLy8gYW1vdW50IG9mIHNwYWNlIGZyb20gcmlnaHQgZWRnZSwgYSBmcmFjdGlvbiBvZiB0aGUgdG90YWwgd2lkdGgKCgkJaWYgKHNob3VsZE92ZXJsYXApIHsKCQkJLy8gZG91YmxlIHRoZSB3aWR0aCwgYnV0IGRvbid0IGdvIGJleW9uZCB0aGUgbWF4aW11bSBmb3J3YXJkIGNvb3JkaW5hdGUgKDEuMCkKCQkJZm9yd2FyZENvb3JkID0gTWF0aC5taW4oMSwgYmFja3dhcmRDb29yZCArIChmb3J3YXJkQ29vcmQgLSBiYWNrd2FyZENvb3JkKSAqIDIpOwoJCX0KCgkJaWYgKHRoaXMuaXNSVEwpIHsKCQkJbGVmdCA9IDEgLSBmb3J3YXJkQ29vcmQ7CgkJCXJpZ2h0ID0gYmFja3dhcmRDb29yZDsKCQl9CgkJZWxzZSB7CgkJCWxlZnQgPSBiYWNrd2FyZENvb3JkOwoJCQlyaWdodCA9IDEgLSBmb3J3YXJkQ29vcmQ7CgkJfQoKCQlwcm9wcy56SW5kZXggPSBzZWcubGV2ZWwgKyAxOyAvLyBjb252ZXJ0IGZyb20gMC1iYXNlIHRvIDEtYmFzZWQKCQlwcm9wcy5sZWZ0ID0gbGVmdCAqIDEwMCArICclJzsKCQlwcm9wcy5yaWdodCA9IHJpZ2h0ICogMTAwICsgJyUnOwoKCQlpZiAoc2hvdWxkT3ZlcmxhcCAmJiBzZWcuZm9yd2FyZFByZXNzdXJlKSB7CgkJCS8vIGFkZCBwYWRkaW5nIHRvIHRoZSBlZGdlIHNvIHRoYXQgZm9yd2FyZCBzdGFja2VkIGV2ZW50cyBkb24ndCBjb3ZlciB0aGUgcmVzaXplcidzIGljb24KCQkJcHJvcHNbdGhpcy5pc1JUTCA/ICdtYXJnaW5MZWZ0JyA6ICdtYXJnaW5SaWdodCddID0gMTAgKiAyOyAvLyAxMCBpcyBhIGd1ZXNzdGltYXRlIG9mIHRoZSBpY29uJ3Mgd2lkdGgKCQl9CgoJCXJldHVybiBwcm9wczsKCX0KCn0pOwoKCi8vIEJ1aWxkcyBhbiBhcnJheSBvZiBzZWdtZW50cyAibGV2ZWxzIi4gVGhlIGZpcnN0IGxldmVsIHdpbGwgYmUgdGhlIGxlZnRtb3N0IHRpZXIgb2Ygc2VnbWVudHMgaWYgdGhlIGNhbGVuZGFyIGlzCi8vIGxlZnQtdG8tcmlnaHQsIG9yIHRoZSByaWdodG1vc3QgaWYgdGhlIGNhbGVuZGFyIGlzIHJpZ2h0LXRvLWxlZnQuIEFzc3VtZXMgdGhlIHNlZ21lbnRzIGFyZSBhbHJlYWR5IG9yZGVyZWQgYnkgZGF0ZS4KZnVuY3Rpb24gYnVpbGRTbG90U2VnTGV2ZWxzKHNlZ3MpIHsKCXZhciBsZXZlbHMgPSBbXTsKCXZhciBpLCBzZWc7Cgl2YXIgajsKCglmb3IgKGk9MDsgaTxzZWdzLmxlbmd0aDsgaSsrKSB7CgkJc2VnID0gc2Vnc1tpXTsKCgkJLy8gZ28gdGhyb3VnaCBhbGwgdGhlIGxldmVscyBhbmQgc3RvcCBvbiB0aGUgZmlyc3QgbGV2ZWwgd2hlcmUgdGhlcmUgYXJlIG5vIGNvbGxpc2lvbnMKCQlmb3IgKGo9MDsgajxsZXZlbHMubGVuZ3RoOyBqKyspIHsKCQkJaWYgKCFjb21wdXRlU2xvdFNlZ0NvbGxpc2lvbnMoc2VnLCBsZXZlbHNbal0pLmxlbmd0aCkgewoJCQkJYnJlYWs7CgkJCX0KCQl9CgoJCXNlZy5sZXZlbCA9IGo7CgoJCShsZXZlbHNbal0gfHwgKGxldmVsc1tqXSA9IFtdKSkucHVzaChzZWcpOwoJfQoKCXJldHVybiBsZXZlbHM7Cn0KCgovLyBGb3IgZXZlcnkgc2VnbWVudCwgZmlndXJlIG91dCB0aGUgb3RoZXIgc2VnbWVudHMgdGhhdCBhcmUgaW4gc3Vic2VxdWVudAovLyBsZXZlbHMgdGhhdCBhbHNvIG9jY3VweSB0aGUgc2FtZSB2ZXJ0aWNhbCBzcGFjZS4gQWNjdW11bGF0ZSBpbiBzZWcuZm9yd2FyZFNlZ3MKZnVuY3Rpb24gY29tcHV0ZUZvcndhcmRTbG90U2VncyhsZXZlbHMpIHsKCXZhciBpLCBsZXZlbDsKCXZhciBqLCBzZWc7Cgl2YXIgazsKCglmb3IgKGk9MDsgaTxsZXZlbHMubGVuZ3RoOyBpKyspIHsKCQlsZXZlbCA9IGxldmVsc1tpXTsKCgkJZm9yIChqPTA7IGo8bGV2ZWwubGVuZ3RoOyBqKyspIHsKCQkJc2VnID0gbGV2ZWxbal07CgoJCQlzZWcuZm9yd2FyZFNlZ3MgPSBbXTsKCQkJZm9yIChrPWkrMTsgazxsZXZlbHMubGVuZ3RoOyBrKyspIHsKCQkJCWNvbXB1dGVTbG90U2VnQ29sbGlzaW9ucyhzZWcsIGxldmVsc1trXSwgc2VnLmZvcndhcmRTZWdzKTsKCQkJfQoJCX0KCX0KfQoKCi8vIEZpZ3VyZSBvdXQgd2hpY2ggcGF0aCBmb3J3YXJkICh2aWEgc2VnLmZvcndhcmRTZWdzKSByZXN1bHRzIGluIHRoZSBsb25nZXN0IHBhdGggdW50aWwKLy8gdGhlIGZ1cnRoZXN0IGVkZ2UgaXMgcmVhY2hlZC4gVGhlIG51bWJlciBvZiBzZWdtZW50cyBpbiB0aGlzIHBhdGggd2lsbCBiZSBzZWcuZm9yd2FyZFByZXNzdXJlCmZ1bmN0aW9uIGNvbXB1dGVTbG90U2VnUHJlc3N1cmVzKHNlZykgewoJdmFyIGZvcndhcmRTZWdzID0gc2VnLmZvcndhcmRTZWdzOwoJdmFyIGZvcndhcmRQcmVzc3VyZSA9IDA7Cgl2YXIgaSwgZm9yd2FyZFNlZzsKCglpZiAoc2VnLmZvcndhcmRQcmVzc3VyZSA9PT0gdW5kZWZpbmVkKSB7IC8vIG5vdCBhbHJlYWR5IGNvbXB1dGVkCgoJCWZvciAoaT0wOyBpPGZvcndhcmRTZWdzLmxlbmd0aDsgaSsrKSB7CgkJCWZvcndhcmRTZWcgPSBmb3J3YXJkU2Vnc1tpXTsKCgkJCS8vIGZpZ3VyZSBvdXQgdGhlIGNoaWxkJ3MgbWF4aW11bSBmb3J3YXJkIHBhdGgKCQkJY29tcHV0ZVNsb3RTZWdQcmVzc3VyZXMoZm9yd2FyZFNlZyk7CgoJCQkvLyBlaXRoZXIgdXNlIHRoZSBleGlzdGluZyBtYXhpbXVtLCBvciB1c2UgdGhlIGNoaWxkJ3MgZm9yd2FyZCBwcmVzc3VyZQoJCQkvLyBwbHVzIG9uZSAoZm9yIHRoZSBmb3J3YXJkU2VnIGl0c2VsZikKCQkJZm9yd2FyZFByZXNzdXJlID0gTWF0aC5tYXgoCgkJCQlmb3J3YXJkUHJlc3N1cmUsCgkJCQkxICsgZm9yd2FyZFNlZy5mb3J3YXJkUHJlc3N1cmUKCQkJKTsKCQl9CgoJCXNlZy5mb3J3YXJkUHJlc3N1cmUgPSBmb3J3YXJkUHJlc3N1cmU7Cgl9Cn0KCgovLyBGaW5kIGFsbCB0aGUgc2VnbWVudHMgaW4gYG90aGVyU2Vnc2AgdGhhdCB2ZXJ0aWNhbGx5IGNvbGxpZGUgd2l0aCBgc2VnYC4KLy8gQXBwZW5kIGludG8gYW4gb3B0aW9uYWxseS1zdXBwbGllZCBgcmVzdWx0c2AgYXJyYXkgYW5kIHJldHVybi4KZnVuY3Rpb24gY29tcHV0ZVNsb3RTZWdDb2xsaXNpb25zKHNlZywgb3RoZXJTZWdzLCByZXN1bHRzKSB7CglyZXN1bHRzID0gcmVzdWx0cyB8fCBbXTsKCglmb3IgKHZhciBpPTA7IGk8b3RoZXJTZWdzLmxlbmd0aDsgaSsrKSB7CgkJaWYgKGlzU2xvdFNlZ0NvbGxpc2lvbihzZWcsIG90aGVyU2Vnc1tpXSkpIHsKCQkJcmVzdWx0cy5wdXNoKG90aGVyU2Vnc1tpXSk7CgkJfQoJfQoKCXJldHVybiByZXN1bHRzOwp9CgoKLy8gRG8gdGhlc2Ugc2VnbWVudHMgb2NjdXB5IHRoZSBzYW1lIHZlcnRpY2FsIHNwYWNlPwpmdW5jdGlvbiBpc1Nsb3RTZWdDb2xsaXNpb24oc2VnMSwgc2VnMikgewoJcmV0dXJuIHNlZzEuYm90dG9tID4gc2VnMi50b3AgJiYgc2VnMS50b3AgPCBzZWcyLmJvdHRvbTsKfQoKOzsKCi8qIEFuIGFic3RyYWN0IGNsYXNzIGZyb20gd2hpY2ggb3RoZXIgdmlld3MgaW5oZXJpdCBmcm9tCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKdmFyIFZpZXcgPSBGQy5WaWV3ID0gQ2xhc3MuZXh0ZW5kKEVtaXR0ZXJNaXhpbiwgTGlzdGVuZXJNaXhpbiwgewoKCXR5cGU6IG51bGwsIC8vIHN1YmNsYXNzJyB2aWV3IG5hbWUgKHN0cmluZykKCW5hbWU6IG51bGwsIC8vIGRlcHJlY2F0ZWQuIHVzZSBgdHlwZWAgaW5zdGVhZAoJdGl0bGU6IG51bGwsIC8vIHRoZSB0ZXh0IHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgaW4gdGhlIGhlYWRlcidzIHRpdGxlCgoJY2FsZW5kYXI6IG51bGwsIC8vIG93bmVyIENhbGVuZGFyIG9iamVjdAoJdmlld1NwZWM6IG51bGwsCglvcHRpb25zOiBudWxsLCAvLyBoYXNoIGNvbnRhaW5pbmcgYWxsIG9wdGlvbnMuIGFscmVhZHkgbWVyZ2VkIHdpdGggdmlldy1zcGVjaWZpYy1vcHRpb25zCgllbDogbnVsbCwgLy8gdGhlIHZpZXcncyBjb250YWluaW5nIGVsZW1lbnQuIHNldCBieSBDYWxlbmRhcgoKCWlzRGF0ZVNldDogZmFsc2UsCglpc0RhdGVSZW5kZXJlZDogZmFsc2UsCglkYXRlUmVuZGVyUXVldWU6IG51bGwsCgoJaXNFdmVudHNCb3VuZDogZmFsc2UsCglpc0V2ZW50c1NldDogZmFsc2UsCglpc0V2ZW50c1JlbmRlcmVkOiBmYWxzZSwKCWV2ZW50UmVuZGVyUXVldWU6IG51bGwsCgoJaXNSVEw6IGZhbHNlLAoJaXNTZWxlY3RlZDogZmFsc2UsIC8vIGJvb2xlYW4gd2hldGhlciBhIHJhbmdlIG9mIHRpbWUgaXMgdXNlci1zZWxlY3RlZCBvciBub3QKCXNlbGVjdGVkRXZlbnQ6IG51bGwsCgoJZXZlbnRPcmRlclNwZWNzOiBudWxsLCAvLyBjcml0ZXJpYSBmb3Igb3JkZXJpbmcgZXZlbnRzIHdoZW4gdGhleSBoYXZlIHNhbWUgZGF0ZS90aW1lCgoJLy8gY2xhc3NOYW1lcyBzdHlsZWQgYnkganF1aSB0aGVtZXMKCXdpZGdldEhlYWRlckNsYXNzOiBudWxsLAoJd2lkZ2V0Q29udGVudENsYXNzOiBudWxsLAoJaGlnaGxpZ2h0U3RhdGVDbGFzczogbnVsbCwKCgkvLyBmb3IgZGF0ZSB1dGlscywgY29tcHV0ZWQgZnJvbSBvcHRpb25zCgluZXh0RGF5VGhyZXNob2xkOiBudWxsLAoJaXNIaWRkZW5EYXlIYXNoOiBudWxsLAoKCS8vIG5vdyBpbmRpY2F0b3IKCWlzTm93SW5kaWNhdG9yUmVuZGVyZWQ6IG51bGwsCglpbml0aWFsTm93RGF0ZTogbnVsbCwgLy8gcmVzdWx0IGZpcnN0IGdldE5vdyBjYWxsCglpbml0aWFsTm93UXVlcmllZE1zOiBudWxsLCAvLyBtcyB0aW1lIHRoZSBnZXROb3cgd2FzIGNhbGxlZAoJbm93SW5kaWNhdG9yVGltZW91dElEOiBudWxsLCAvLyBmb3IgcmVmcmVzaCB0aW1pbmcgb2Ygbm93IGluZGljYXRvcgoJbm93SW5kaWNhdG9ySW50ZXJ2YWxJRDogbnVsbCwgLy8gIgoKCgljb25zdHJ1Y3RvcjogZnVuY3Rpb24oY2FsZW5kYXIsIHZpZXdTcGVjKSB7CgoJCXRoaXMuY2FsZW5kYXIgPSBjYWxlbmRhcjsKCQl0aGlzLnZpZXdTcGVjID0gdmlld1NwZWM7CgoJCS8vIHNob3J0Y3V0cwoJCXRoaXMudHlwZSA9IHZpZXdTcGVjLnR5cGU7CgkJdGhpcy5vcHRpb25zID0gdmlld1NwZWMub3B0aW9uczsKCgkJLy8gLm5hbWUgaXMgZGVwcmVjYXRlZAoJCXRoaXMubmFtZSA9IHRoaXMudHlwZTsKCgkJdGhpcy5uZXh0RGF5VGhyZXNob2xkID0gbW9tZW50LmR1cmF0aW9uKHRoaXMub3B0KCduZXh0RGF5VGhyZXNob2xkJykpOwoJCXRoaXMuaW5pdFRoZW1pbmdQcm9wcygpOwoJCXRoaXMuaW5pdEhpZGRlbkRheXMoKTsKCQl0aGlzLmlzUlRMID0gdGhpcy5vcHQoJ2lzUlRMJyk7CgoJCXRoaXMuZXZlbnRPcmRlclNwZWNzID0gcGFyc2VGaWVsZFNwZWNzKHRoaXMub3B0KCdldmVudE9yZGVyJykpOwoKCQl0aGlzLmRhdGVSZW5kZXJRdWV1ZSA9IG5ldyBUYXNrUXVldWUoKTsKCQl0aGlzLmV2ZW50UmVuZGVyUXVldWUgPSBuZXcgVGFza1F1ZXVlKHRoaXMub3B0KCdldmVudFJlbmRlcldhaXQnKSk7CgoJCXRoaXMuaW5pdGlhbGl6ZSgpOwoJfSwKCgoJLy8gQSBnb29kIHBsYWNlIGZvciBzdWJjbGFzc2VzIHRvIGluaXRpYWxpemUgbWVtYmVyIHZhcmlhYmxlcwoJaW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7CgkJLy8gc3ViY2xhc3NlcyBjYW4gaW1wbGVtZW50Cgl9LAoKCgkvLyBSZXRyaWV2ZXMgYW4gb3B0aW9uIHdpdGggdGhlIGdpdmVuIG5hbWUKCW9wdDogZnVuY3Rpb24obmFtZSkgewoJCXJldHVybiB0aGlzLm9wdGlvbnNbbmFtZV07Cgl9LAoKCgkvLyBUcmlnZ2VycyBoYW5kbGVycyB0aGF0IGFyZSB2aWV3LXJlbGF0ZWQuIE1vZGlmaWVzIGFyZ3MgYmVmb3JlIHBhc3NpbmcgdG8gY2FsZW5kYXIuCglwdWJsaWNseVRyaWdnZXI6IGZ1bmN0aW9uKG5hbWUsIHRoaXNPYmopIHsgLy8gYXJndW1lbnRzIGJleW9uZCB0aGlzT2JqIGFyZSBwYXNzZWQgYWxvbmcKCQl2YXIgY2FsZW5kYXIgPSB0aGlzLmNhbGVuZGFyOwoKCQlyZXR1cm4gY2FsZW5kYXIucHVibGljbHlUcmlnZ2VyLmFwcGx5KAoJCQljYWxlbmRhciwKCQkJW25hbWUsIHRoaXNPYmogfHwgdGhpc10uY29uY2F0KAoJCQkJQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKSwgLy8gYXJndW1lbnRzIGJleW9uZCB0aGlzT2JqCgkJCQlbIHRoaXMgXSAvLyBhbHdheXMgbWFrZSB0aGUgbGFzdCBhcmd1bWVudCBhIHJlZmVyZW5jZSB0byB0aGUgdmlldy4gVE9ETzogZGVwcmVjYXRlCgkJCSkKCQkpOwoJfSwKCgoJLy8gUmV0dXJucyBhIHByb3h5IG9mIHRoZSBnaXZlbiBwcm9taXNlIHRoYXQgd2lsbCBiZSByZWplY3RlZCBpZiB0aGUgZ2l2ZW4gZXZlbnQgZmlyZXMKCS8vIGJlZm9yZSB0aGUgcHJvbWlzZSByZXNvbHZlcy4KCXJlamVjdE9uOiBmdW5jdGlvbihldmVudE5hbWUsIHByb21pc2UpIHsKCQl2YXIgX3RoaXMgPSB0aGlzOwoKCQlyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CgkJCV90aGlzLm9uZShldmVudE5hbWUsIHJlamVjdCk7CgoJCQlmdW5jdGlvbiBjbGVhbnVwKCkgewoJCQkJX3RoaXMub2ZmKGV2ZW50TmFtZSwgcmVqZWN0KTsKCQkJfQoKCQkJcHJvbWlzZS50aGVuKGZ1bmN0aW9uKHJlcykgeyAvLyBzdWNjZXNzCgkJCQljbGVhbnVwKCk7CgkJCQlyZXNvbHZlKHJlcyk7CgkJCX0sIGZ1bmN0aW9uKCkgeyAvLyBmYWlsdXJlCgkJCQljbGVhbnVwKCk7CgkJCQlyZWplY3QoKTsKCQkJfSk7CgkJfSk7Cgl9LAoKCgkvKiBUaXRsZSBhbmQgRGF0ZSBGb3JtYXR0aW5nCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBTZXRzIHRoZSB2aWV3J3MgdGl0bGUgcHJvcGVydHkgdG8gdGhlIG1vc3QgdXBkYXRlZCBjb21wdXRlZCB2YWx1ZQoJdXBkYXRlVGl0bGU6IGZ1bmN0aW9uKCkgewoJCXRoaXMudGl0bGUgPSB0aGlzLmNvbXB1dGVUaXRsZSgpOwoJCXRoaXMuY2FsZW5kYXIuc2V0VG9vbGJhcnNUaXRsZSh0aGlzLnRpdGxlKTsKCX0sCgoKCS8vIENvbXB1dGVzIHdoYXQgdGhlIHRpdGxlIGF0IHRoZSB0b3Agb2YgdGhlIGNhbGVuZGFyIHNob3VsZCBiZSBmb3IgdGhpcyB2aWV3Cgljb21wdXRlVGl0bGU6IGZ1bmN0aW9uKCkgewoJCXZhciByYW5nZTsKCgkJLy8gZm9yIHZpZXdzIHRoYXQgc3BhbiBhIGxhcmdlIHVuaXQgb2YgdGltZSwgc2hvdyB0aGUgcHJvcGVyIGludGVydmFsLCBpZ25vcmluZyBzdHJheSBkYXlzIGJlZm9yZSBhbmQgYWZ0ZXIKCQlpZiAoL14oeWVhcnxtb250aCkkLy50ZXN0KHRoaXMuY3VycmVudFJhbmdlVW5pdCkpIHsKCQkJcmFuZ2UgPSB0aGlzLmN1cnJlbnRSYW5nZTsKCQl9CgkJZWxzZSB7IC8vIGZvciBkYXkgdW5pdHMgb3Igc21hbGxlciwgdXNlIHRoZSBhY3R1YWwgZGF5IHJhbmdlCgkJCXJhbmdlID0gdGhpcy5hY3RpdmVSYW5nZTsKCQl9CgoJCXJldHVybiB0aGlzLmZvcm1hdFJhbmdlKAoJCQl7CgkJCQkvLyBpbiBjYXNlIGN1cnJlbnRSYW5nZSBoYXMgYSB0aW1lLCBtYWtlIHN1cmUgdGltZXpvbmUgaXMgY29ycmVjdAoJCQkJc3RhcnQ6IHRoaXMuY2FsZW5kYXIuYXBwbHlUaW1lem9uZShyYW5nZS5zdGFydCksCgkJCQllbmQ6IHRoaXMuY2FsZW5kYXIuYXBwbHlUaW1lem9uZShyYW5nZS5lbmQpCgkJCX0sCgkJCXRoaXMub3B0KCd0aXRsZUZvcm1hdCcpIHx8IHRoaXMuY29tcHV0ZVRpdGxlRm9ybWF0KCksCgkJCXRoaXMub3B0KCd0aXRsZVJhbmdlU2VwYXJhdG9yJykKCQkpOwoJfSwKCgoJLy8gR2VuZXJhdGVzIHRoZSBmb3JtYXQgc3RyaW5nIHRoYXQgc2hvdWxkIGJlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHRpdGxlIGZvciB0aGUgY3VycmVudCBkYXRlIHJhbmdlLgoJLy8gQXR0ZW1wdHMgdG8gY29tcHV0ZSB0aGUgbW9zdCBhcHByb3ByaWF0ZSBmb3JtYXQgaWYgbm90IGV4cGxpY2l0bHkgc3BlY2lmaWVkIHdpdGggYHRpdGxlRm9ybWF0YC4KCWNvbXB1dGVUaXRsZUZvcm1hdDogZnVuY3Rpb24oKSB7CgkJaWYgKHRoaXMuY3VycmVudFJhbmdlVW5pdCA9PSAneWVhcicpIHsKCQkJcmV0dXJuICdZWVlZJzsKCQl9CgkJZWxzZSBpZiAodGhpcy5jdXJyZW50UmFuZ2VVbml0ID09ICdtb250aCcpIHsKCQkJcmV0dXJuIHRoaXMub3B0KCdtb250aFllYXJGb3JtYXQnKTsgLy8gbGlrZSAiU2VwdGVtYmVyIDIwMTQiCgkJfQoJCWVsc2UgaWYgKHRoaXMuY3VycmVudFJhbmdlQXMoJ2RheXMnKSA+IDEpIHsKCQkJcmV0dXJuICdsbCc7IC8vIG11bHRpLWRheSByYW5nZS4gc2hvcnRlciwgbGlrZSAiU2VwIDkgLSAxMCAyMDE0IgoJCX0KCQllbHNlIHsKCQkJcmV0dXJuICdMTCc7IC8vIG9uZSBkYXkuIGxvbmdlciwgbGlrZSAiU2VwdGVtYmVyIDkgMjAxNCIKCQl9Cgl9LAoKCgkvLyBVdGlsaXR5IGZvciBmb3JtYXR0aW5nIGEgcmFuZ2UuIEFjY2VwdHMgYSByYW5nZSBvYmplY3QsIGZvcm1hdHRpbmcgc3RyaW5nLCBhbmQgb3B0aW9uYWwgc2VwYXJhdG9yLgoJLy8gRGlzcGxheXMgYWxsLWRheSByYW5nZXMgbmF0dXJhbGx5LCB3aXRoIGFuIGluY2x1c2l2ZSBlbmQuIFRha2VzIHRoZSBjdXJyZW50IGlzUlRMIGludG8gYWNjb3VudC4KCS8vIFRoZSB0aW1lem9uZXMgb2YgdGhlIGRhdGVzIHdpdGhpbiBgcmFuZ2VgIHdpbGwgYmUgcmVzcGVjdGVkLgoJZm9ybWF0UmFuZ2U6IGZ1bmN0aW9uKHJhbmdlLCBmb3JtYXRTdHIsIHNlcGFyYXRvcikgewoJCXZhciBlbmQgPSByYW5nZS5lbmQ7CgoJCWlmICghZW5kLmhhc1RpbWUoKSkgeyAvLyBhbGwtZGF5PwoJCQllbmQgPSBlbmQuY2xvbmUoKS5zdWJ0cmFjdCgxKTsgLy8gY29udmVydCB0byBpbmNsdXNpdmUuIGxhc3QgbXMgb2YgcHJldmlvdXMgZGF5CgkJfQoKCQlyZXR1cm4gZm9ybWF0UmFuZ2UocmFuZ2Uuc3RhcnQsIGVuZCwgZm9ybWF0U3RyLCBzZXBhcmF0b3IsIHRoaXMub3B0KCdpc1JUTCcpKTsKCX0sCgoKCWdldEFsbERheUh0bWw6IGZ1bmN0aW9uKCkgewoJCXJldHVybiB0aGlzLm9wdCgnYWxsRGF5SHRtbCcpIHx8IGh0bWxFc2NhcGUodGhpcy5vcHQoJ2FsbERheVRleHQnKSk7Cgl9LAoKCgkvKiBOYXZpZ2F0aW9uCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBHZW5lcmF0ZXMgSFRNTCBmb3IgYW4gYW5jaG9yIHRvIGFub3RoZXIgdmlldyBpbnRvIHRoZSBjYWxlbmRhci4KCS8vIFdpbGwgZWl0aGVyIGdlbmVyYXRlIGFuIDxhPiB0YWcgb3IgYSBub24tY2xpY2thYmxlIDxzcGFuPiB0YWcsIGRlcGVuZGluZyBvbiBlbmFibGVkIHNldHRpbmdzLgoJLy8gYGdvdG9PcHRpb25zYCBjYW4gZWl0aGVyIGJlIGEgbW9tZW50IGlucHV0LCBvciBhbiBvYmplY3Qgd2l0aCB0aGUgZm9ybToKCS8vIHsgZGF0ZSwgdHlwZSwgZm9yY2VPZmYgfQoJLy8gYHR5cGVgIGlzIGEgdmlldy10eXBlIGxpa2UgImRheSIgb3IgIndlZWsiLiBkZWZhdWx0IHZhbHVlIGlzICJkYXkiLgoJLy8gYGF0dHJzYCBhbmQgYGlubmVySHRtbGAgYXJlIHVzZSB0byBnZW5lcmF0ZSB0aGUgcmVzdCBvZiB0aGUgSFRNTCB0YWcuCglidWlsZEdvdG9BbmNob3JIdG1sOiBmdW5jdGlvbihnb3RvT3B0aW9ucywgYXR0cnMsIGlubmVySHRtbCkgewoJCXZhciBkYXRlLCB0eXBlLCBmb3JjZU9mZjsKCQl2YXIgZmluYWxPcHRpb25zOwoKCQlpZiAoJC5pc1BsYWluT2JqZWN0KGdvdG9PcHRpb25zKSkgewoJCQlkYXRlID0gZ290b09wdGlvbnMuZGF0ZTsKCQkJdHlwZSA9IGdvdG9PcHRpb25zLnR5cGU7CgkJCWZvcmNlT2ZmID0gZ290b09wdGlvbnMuZm9yY2VPZmY7CgkJfQoJCWVsc2UgewoJCQlkYXRlID0gZ290b09wdGlvbnM7IC8vIGEgc2luZ2xlIG1vbWVudCBpbnB1dAoJCX0KCQlkYXRlID0gRkMubW9tZW50KGRhdGUpOyAvLyBpZiBhIHN0cmluZywgcGFyc2UgaXQKCgkJZmluYWxPcHRpb25zID0geyAvLyBmb3Igc2VyaWFsaXphdGlvbiBpbnRvIHRoZSBsaW5rCgkJCWRhdGU6IGRhdGUuZm9ybWF0KCdZWVlZLU1NLUREJyksCgkJCXR5cGU6IHR5cGUgfHwgJ2RheScKCQl9OwoKCQlpZiAodHlwZW9mIGF0dHJzID09PSAnc3RyaW5nJykgewoJCQlpbm5lckh0bWwgPSBhdHRyczsKCQkJYXR0cnMgPSBudWxsOwoJCX0KCgkJYXR0cnMgPSBhdHRycyA/ICcgJyArIGF0dHJzVG9TdHIoYXR0cnMpIDogJyc7IC8vIHdpbGwgaGF2ZSBhIGxlYWRpbmcgc3BhY2UKCQlpbm5lckh0bWwgPSBpbm5lckh0bWwgfHwgJyc7CgoJCWlmICghZm9yY2VPZmYgJiYgdGhpcy5vcHQoJ25hdkxpbmtzJykpIHsKCQkJcmV0dXJuICc8YScgKyBhdHRycyArCgkJCQknIGRhdGEtZ290bz0iJyArIGh0bWxFc2NhcGUoSlNPTi5zdHJpbmdpZnkoZmluYWxPcHRpb25zKSkgKyAnIj4nICsKCQkJCWlubmVySHRtbCArCgkJCQknPC9hPic7CgkJfQoJCWVsc2UgewoJCQlyZXR1cm4gJzxzcGFuJyArIGF0dHJzICsgJz4nICsKCQkJCWlubmVySHRtbCArCgkJCQknPC9zcGFuPic7CgkJfQoJfSwKCgoJLy8gUmVuZGVyaW5nIE5vbi1kYXRlLXJlbGF0ZWQgQ29udGVudAoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoJLy8gU2V0cyB0aGUgY29udGFpbmVyIGVsZW1lbnQgdGhhdCB0aGUgdmlldyBzaG91bGQgcmVuZGVyIGluc2lkZSBvZiwgZG9lcyBnbG9iYWwgRE9NLXJlbGF0ZWQgaW5pdGlhbGl6YXRpb25zLAoJLy8gYW5kIHJlbmRlcnMgYWxsIHRoZSBub24tZGF0ZS1yZWxhdGVkIGNvbnRlbnQgaW5zaWRlLgoJc2V0RWxlbWVudDogZnVuY3Rpb24oZWwpIHsKCQl0aGlzLmVsID0gZWw7CgkJdGhpcy5iaW5kR2xvYmFsSGFuZGxlcnMoKTsKCQl0aGlzLnJlbmRlclNrZWxldG9uKCk7Cgl9LAoKCgkvLyBSZW1vdmVzIHRoZSB2aWV3J3MgY29udGFpbmVyIGVsZW1lbnQgZnJvbSB0aGUgRE9NLCBjbGVhcmluZyBhbnkgY29udGVudCBiZWZvcmVoYW5kLgoJLy8gVW5kb2VzIGFueSBvdGhlciBET00tcmVsYXRlZCBhdHRhY2htZW50cy4KCXJlbW92ZUVsZW1lbnQ6IGZ1bmN0aW9uKCkgewoJCXRoaXMudW5zZXREYXRlKCk7CgkJdGhpcy51bnJlbmRlclNrZWxldG9uKCk7CgoJCXRoaXMudW5iaW5kR2xvYmFsSGFuZGxlcnMoKTsKCgkJdGhpcy5lbC5yZW1vdmUoKTsKCQkvLyBOT1RFOiBkb24ndCBudWxsLW91dCB0aGlzLmVsIGluIGNhc2UgdGhlIFZpZXcgd2FzIGRlc3Ryb3llZCB3aXRoaW4gYW4gQVBJIGNhbGxiYWNrLgoJCS8vIFdlIGRvbid0IG51bGwtb3V0IHRoZSBWaWV3J3Mgb3RoZXIgalF1ZXJ5IGVsZW1lbnQgcmVmZXJlbmNlcyB1cG9uIGRlc3Ryb3ksCgkJLy8gIHNvIHdlIHNob3VsZG4ndCBraWxsIHRoaXMuZWwgZWl0aGVyLgoJfSwKCgoJLy8gUmVuZGVycyB0aGUgYmFzaWMgc3RydWN0dXJlIG9mIHRoZSB2aWV3IGJlZm9yZSBhbnkgY29udGVudCBpcyByZW5kZXJlZAoJcmVuZGVyU2tlbGV0b246IGZ1bmN0aW9uKCkgewoJCS8vIHN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudAoJfSwKCgoJLy8gVW5yZW5kZXJzIHRoZSBiYXNpYyBzdHJ1Y3R1cmUgb2YgdGhlIHZpZXcKCXVucmVuZGVyU2tlbGV0b246IGZ1bmN0aW9uKCkgewoJCS8vIHN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudAoJfSwKCgoJLy8gRGF0ZSBTZXR0aW5nL1Vuc2V0dGluZwoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoJc2V0RGF0ZTogZnVuY3Rpb24oZGF0ZSkgewoJCXZhciBpc1Jlc2V0ID0gdGhpcy5pc0RhdGVTZXQ7CgoJCXRoaXMuaXNEYXRlU2V0ID0gdHJ1ZTsKCQl0aGlzLmhhbmRsZVJhd0RhdGUoZGF0ZSk7CgkJdGhpcy50cmlnZ2VyKGlzUmVzZXQgPyAnZGF0ZVJlc2V0JyA6ICdkYXRlU2V0JywgZGF0ZSk7Cgl9LAoKCgl1bnNldERhdGU6IGZ1bmN0aW9uKCkgewoJCWlmICh0aGlzLmlzRGF0ZVNldCkgewoJCQl0aGlzLmlzRGF0ZVNldCA9IGZhbHNlOwoJCQl0aGlzLmhhbmRsZURhdGVVbnNldCgpOwoJCQl0aGlzLnRyaWdnZXIoJ2RhdGVVbnNldCcpOwoJCX0KCX0sCgoKCS8vIERhdGUgSGFuZGxpbmcKCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKCWhhbmRsZVJhd0RhdGU6IGZ1bmN0aW9uKGRhdGUpIHsKCQl2YXIgX3RoaXMgPSB0aGlzOwoJCXZhciBkYXRlUHJvZmlsZSA9IHRoaXMuYnVpbGREYXRlUHJvZmlsZShkYXRlLCBudWxsLCB0cnVlKTsgLy8gZm9yY2VUb1ZhbGlkPXRydWUKCgkJaWYgKCF0aGlzLmlzU2FtZURhdGVQcm9maWxlKGRhdGVQcm9maWxlKSkgeyAvLyByZWFsIGNoYW5nZQoJCQl0aGlzLmhhbmRsZURhdGUoZGF0ZVByb2ZpbGUpOwoJCX0KCQllbHNlIHsKCQkJLy8gVmlldyBtaWdodCBoYXZlIG5vIGRhdGUgY2hhbmdlLCBidXQgc3RpbGwgbmVlZHMgdG8gcmVuZGVyIChiZWNhdXNlIG9mIGEgdmlldyB1bnJlbmRlci9yZXJlbmRlcikuCgkJCS8vIFdhaXQgZm9yIHBvc3NpYmxlIHF1ZXVlZCB1bnJlbmRlcnMuIFRPRE86IHJlZmFjdG9yLgoJCQl0aGlzLmRhdGVSZW5kZXJRdWV1ZS5hZGQoZnVuY3Rpb24oKSB7CgkJCQlpZiAoIV90aGlzLmlzRGF0ZVJlbmRlcmVkKSB7CgkJCQkJX3RoaXMuaGFuZGxlRGF0ZShkYXRlUHJvZmlsZSk7CgkJCQl9CgkJCX0pOwoJCX0KCX0sCgoKCWhhbmRsZURhdGU6IGZ1bmN0aW9uKGRhdGVQcm9maWxlKSB7CgkJdmFyIF90aGlzID0gdGhpczsKCgkJdGhpcy51bmJpbmRFdmVudHMoKTsgLy8gd2lsbCBkbyBub3RoaW5nIGlmIG5vdCBhbHJlYWR5IGJvdW5kCgkJdGhpcy5yZXF1ZXN0RGF0ZVJlbmRlcihkYXRlUHJvZmlsZSkudGhlbihmdW5jdGlvbigpIHsKCQkJLy8gd2lzaCB3ZSBjb3VsZCBzdGFydCBlYXJsaWVyLCBidXQgc2V0RGF0ZVByb2ZpbGUgbmVlZHMgdG8gZXhlY3V0ZSBmaXJzdAoJCQlfdGhpcy5iaW5kRXZlbnRzKCk7IC8vIHdpbGwgcmVxdWVzdCBldmVudHMKCQl9KTsKCX0sCgoKCWhhbmRsZURhdGVVbnNldDogZnVuY3Rpb24oKSB7CgkJdGhpcy51bmJpbmRFdmVudHMoKTsKCQl0aGlzLnJlcXVlc3REYXRlVW5yZW5kZXIoKTsKCX0sCgoKCS8vIERhdGUgUmVuZGVyIFF1ZXVpbmcKCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKCS8vIGlmIGRhdGVQcm9maWxlIG5vdCBzcGVjaWZpZWQsIHVzZXMgY3VycmVudAoJcmVxdWVzdERhdGVSZW5kZXI6IGZ1bmN0aW9uKGRhdGVQcm9maWxlKSB7CgkJdmFyIF90aGlzID0gdGhpczsKCgkJcmV0dXJuIHRoaXMuZGF0ZVJlbmRlclF1ZXVlLmFkZChmdW5jdGlvbigpIHsKCQkJcmV0dXJuIF90aGlzLmV4ZWN1dGVEYXRlUmVuZGVyKGRhdGVQcm9maWxlKTsKCQl9KTsKCX0sCgoKCXJlcXVlc3REYXRlVW5yZW5kZXI6IGZ1bmN0aW9uKCkgewoJCXZhciBfdGhpcyA9IHRoaXM7CgoJCXJldHVybiB0aGlzLmRhdGVSZW5kZXJRdWV1ZS5hZGQoZnVuY3Rpb24oKSB7CgkJCXJldHVybiBfdGhpcy5leGVjdXRlRGF0ZVVucmVuZGVyKCk7CgkJfSk7Cgl9LAoKCgkvLyBEYXRlIEhpZ2gtbGV2ZWwgUmVuZGVyaW5nCgkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCgkvLyBpZiBkYXRlUHJvZmlsZSBub3Qgc3BlY2lmaWVkLCB1c2VzIGN1cnJlbnQKCWV4ZWN1dGVEYXRlUmVuZGVyOiBmdW5jdGlvbihkYXRlUHJvZmlsZSkgewoJCXZhciBfdGhpcyA9IHRoaXM7CgoJCWlmIChkYXRlUHJvZmlsZSkgewoJCQlfdGhpcy5zZXREYXRlUHJvZmlsZShkYXRlUHJvZmlsZSk7CgkJfQoKCQl0aGlzLnVwZGF0ZVRpdGxlKCk7CgkJdGhpcy5jYWxlbmRhci51cGRhdGVUb29sYmFyQnV0dG9ucygpOwoKCQkvLyBpZiByZW5kZXJpbmcgYSBuZXcgZGF0ZSwgcmVzZXQgc2Nyb2xsIHRvIGluaXRpYWwgc3RhdGUgKHNjcm9sbFRpbWUpCgkJaWYgKGRhdGVQcm9maWxlKSB7CgkJCXRoaXMuY2FwdHVyZUluaXRpYWxTY3JvbGwoKTsKCQl9CgkJZWxzZSB7CgkJCXRoaXMuY2FwdHVyZVNjcm9sbCgpOyAvLyBhIHJlcmVuZGVyIG9mIHRoZSBjdXJyZW50IGRhdGUKCQl9CgoJCXRoaXMuZnJlZXplSGVpZ2h0KCk7CgoJCS8vIHBvdGVudGlhbCBpc3N1ZTogZGF0ZS11bnJlbmRlcmluZyB3aWxsIGhhcHBlbiB3aXRoIHRoZSAqbmV3KiByYW5nZQoJCXJldHVybiB0aGlzLmV4ZWN1dGVEYXRlVW5yZW5kZXIoKS50aGVuKGZ1bmN0aW9uKCkgewoKCQkJaWYgKF90aGlzLnJlbmRlcikgewoJCQkJX3RoaXMucmVuZGVyKCk7IC8vIFRPRE86IGRlcHJlY2F0ZQoJCQl9CgoJCQlfdGhpcy5yZW5kZXJEYXRlcygpOwoJCQlfdGhpcy51cGRhdGVTaXplKCk7CgkJCV90aGlzLnJlbmRlckJ1c2luZXNzSG91cnMoKTsgLy8gbWlnaHQgbmVlZCBjb29yZGluYXRlcywgc28gc2hvdWxkIGdvIGFmdGVyIHVwZGF0ZVNpemUoKQoJCQlfdGhpcy5zdGFydE5vd0luZGljYXRvcigpOwoKCQkJX3RoaXMudGhhd0hlaWdodCgpOwoJCQlfdGhpcy5yZWxlYXNlU2Nyb2xsKCk7CgoJCQlfdGhpcy5pc0RhdGVSZW5kZXJlZCA9IHRydWU7CgkJCV90aGlzLm9uRGF0ZVJlbmRlcigpOwoJCQlfdGhpcy50cmlnZ2VyKCdkYXRlUmVuZGVyJyk7CgkJfSk7Cgl9LAoKCglleGVjdXRlRGF0ZVVucmVuZGVyOiBmdW5jdGlvbigpIHsKCQl2YXIgX3RoaXMgPSB0aGlzOwoKCQlpZiAoX3RoaXMuaXNEYXRlUmVuZGVyZWQpIHsKCQkJcmV0dXJuIHRoaXMucmVxdWVzdEV2ZW50c1VucmVuZGVyKCkudGhlbihmdW5jdGlvbigpIHsKCgkJCQlfdGhpcy51bnNlbGVjdCgpOwoJCQkJX3RoaXMuc3RvcE5vd0luZGljYXRvcigpOwoJCQkJX3RoaXMudHJpZ2dlclVucmVuZGVyKCk7CgkJCQlfdGhpcy51bnJlbmRlckJ1c2luZXNzSG91cnMoKTsKCQkJCV90aGlzLnVucmVuZGVyRGF0ZXMoKTsKCgkJCQlpZiAoX3RoaXMuZGVzdHJveSkgewoJCQkJCV90aGlzLmRlc3Ryb3koKTsgLy8gVE9ETzogZGVwcmVjYXRlCgkJCQl9CgoJCQkJX3RoaXMuaXNEYXRlUmVuZGVyZWQgPSBmYWxzZTsKCQkJCV90aGlzLnRyaWdnZXIoJ2RhdGVVbnJlbmRlcicpOwoJCQl9KTsKCQl9CgkJZWxzZSB7CgkJCXJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKCQl9Cgl9LAoKCgkvLyBEYXRlIFJlbmRlcmluZyBUcmlnZ2VycwoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoJb25EYXRlUmVuZGVyOiBmdW5jdGlvbigpIHsKCQl0aGlzLnRyaWdnZXJSZW5kZXIoKTsKCX0sCgoKCS8vIERhdGUgTG93LWxldmVsIFJlbmRlcmluZwoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoJLy8gZGF0ZS1jZWxsIGNvbnRlbnQgb25seQoJcmVuZGVyRGF0ZXM6IGZ1bmN0aW9uKCkgewoJCS8vIHN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudAoJfSwKCgoJLy8gZGF0ZS1jZWxsIGNvbnRlbnQgb25seQoJdW5yZW5kZXJEYXRlczogZnVuY3Rpb24oKSB7CgkJLy8gc3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUKCX0sCgoKCS8vIE1pc2MgdmlldyByZW5kZXJpbmcgdXRpbHMKCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoJLy8gU2lnbmFscyB0aGF0IHRoZSB2aWV3J3MgY29udGVudCBoYXMgYmVlbiByZW5kZXJlZAoJdHJpZ2dlclJlbmRlcjogZnVuY3Rpb24oKSB7CgkJdGhpcy5wdWJsaWNseVRyaWdnZXIoJ3ZpZXdSZW5kZXInLCB0aGlzLCB0aGlzLCB0aGlzLmVsKTsKCX0sCgoKCS8vIFNpZ25hbHMgdGhhdCB0aGUgdmlldydzIGNvbnRlbnQgaXMgYWJvdXQgdG8gYmUgdW5yZW5kZXJlZAoJdHJpZ2dlclVucmVuZGVyOiBmdW5jdGlvbigpIHsKCQl0aGlzLnB1YmxpY2x5VHJpZ2dlcigndmlld0Rlc3Ryb3knLCB0aGlzLCB0aGlzLCB0aGlzLmVsKTsKCX0sCgoKCS8vIEJpbmRzIERPTSBoYW5kbGVycyB0byBlbGVtZW50cyB0aGF0IHJlc2lkZSBvdXRzaWRlIHRoZSB2aWV3IGNvbnRhaW5lciwgc3VjaCBhcyB0aGUgZG9jdW1lbnQKCWJpbmRHbG9iYWxIYW5kbGVyczogZnVuY3Rpb24oKSB7CgkJdGhpcy5saXN0ZW5UbyhHbG9iYWxFbWl0dGVyLmdldCgpLCB7CgkJCXRvdWNoc3RhcnQ6IHRoaXMucHJvY2Vzc1Vuc2VsZWN0LAoJCQltb3VzZWRvd246IHRoaXMuaGFuZGxlRG9jdW1lbnRNb3VzZWRvd24KCQl9KTsKCX0sCgoKCS8vIFVuYmluZHMgRE9NIGhhbmRsZXJzIGZyb20gZWxlbWVudHMgdGhhdCByZXNpZGUgb3V0c2lkZSB0aGUgdmlldyBjb250YWluZXIKCXVuYmluZEdsb2JhbEhhbmRsZXJzOiBmdW5jdGlvbigpIHsKCQl0aGlzLnN0b3BMaXN0ZW5pbmdUbyhHbG9iYWxFbWl0dGVyLmdldCgpKTsKCX0sCgoKCS8vIEluaXRpYWxpemVzIGludGVybmFsIHZhcmlhYmxlcyByZWxhdGVkIHRvIHRoZW1pbmcKCWluaXRUaGVtaW5nUHJvcHM6IGZ1bmN0aW9uKCkgewoJCXZhciB0bSA9IHRoaXMub3B0KCd0aGVtZScpID8gJ3VpJyA6ICdmYyc7CgoJCXRoaXMud2lkZ2V0SGVhZGVyQ2xhc3MgPSB0bSArICctd2lkZ2V0LWhlYWRlcic7CgkJdGhpcy53aWRnZXRDb250ZW50Q2xhc3MgPSB0bSArICctd2lkZ2V0LWNvbnRlbnQnOwoJCXRoaXMuaGlnaGxpZ2h0U3RhdGVDbGFzcyA9IHRtICsgJy1zdGF0ZS1oaWdobGlnaHQnOwoJfSwKCgoJLyogQnVzaW5lc3MgSG91cnMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFJlbmRlcnMgYnVzaW5lc3MtaG91cnMgb250byB0aGUgdmlldy4gQXNzdW1lcyB1cGRhdGVTaXplIGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkLgoJcmVuZGVyQnVzaW5lc3NIb3VyczogZnVuY3Rpb24oKSB7CgkJLy8gc3ViY2xhc3NlcyBzaG91bGQgaW1wbGVtZW50Cgl9LAoKCgkvLyBVbnJlbmRlcnMgcHJldmlvdXNseS1yZW5kZXJlZCBidXNpbmVzcy1ob3VycwoJdW5yZW5kZXJCdXNpbmVzc0hvdXJzOiBmdW5jdGlvbigpIHsKCQkvLyBzdWJjbGFzc2VzIHNob3VsZCBpbXBsZW1lbnQKCX0sCgoKCS8qIE5vdyBJbmRpY2F0b3IKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIEltbWVkaWF0ZWx5IHJlbmRlciB0aGUgY3VycmVudCB0aW1lIGluZGljYXRvciBhbmQgYmVnaW5zIHJlLXJlbmRlcmluZyBpdCBhdCBhbiBpbnRlcnZhbCwKCS8vIHdoaWNoIGlzIGRlZmluZWQgYnkgdGhpcy5nZXROb3dJbmRpY2F0b3JVbml0KCkuCgkvLyBUT0RPOiBzb21laG93IGRvIHRoaXMgZm9yIHRoZSBjdXJyZW50IHdob2xlIGRheSdzIGJhY2tncm91bmQgdG9vCglzdGFydE5vd0luZGljYXRvcjogZnVuY3Rpb24oKSB7CgkJdmFyIF90aGlzID0gdGhpczsKCQl2YXIgdW5pdDsKCQl2YXIgdXBkYXRlOwoJCXZhciBkZWxheTsgLy8gbXMgd2FpdCB2YWx1ZQoKCQlpZiAodGhpcy5vcHQoJ25vd0luZGljYXRvcicpKSB7CgkJCXVuaXQgPSB0aGlzLmdldE5vd0luZGljYXRvclVuaXQoKTsKCQkJaWYgKHVuaXQpIHsKCQkJCXVwZGF0ZSA9IHByb3h5KHRoaXMsICd1cGRhdGVOb3dJbmRpY2F0b3InKTsgLy8gYmluZCB0byBgdGhpc2AKCgkJCQl0aGlzLmluaXRpYWxOb3dEYXRlID0gdGhpcy5jYWxlbmRhci5nZXROb3coKTsKCQkJCXRoaXMuaW5pdGlhbE5vd1F1ZXJpZWRNcyA9ICtuZXcgRGF0ZSgpOwoJCQkJdGhpcy5yZW5kZXJOb3dJbmRpY2F0b3IodGhpcy5pbml0aWFsTm93RGF0ZSk7CgkJCQl0aGlzLmlzTm93SW5kaWNhdG9yUmVuZGVyZWQgPSB0cnVlOwoKCQkJCS8vIHdhaXQgdW50aWwgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBpbnRlcnZhbAoJCQkJZGVsYXkgPSB0aGlzLmluaXRpYWxOb3dEYXRlLmNsb25lKCkuc3RhcnRPZih1bml0KS5hZGQoMSwgdW5pdCkgLSB0aGlzLmluaXRpYWxOb3dEYXRlOwoJCQkJdGhpcy5ub3dJbmRpY2F0b3JUaW1lb3V0SUQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewoJCQkJCV90aGlzLm5vd0luZGljYXRvclRpbWVvdXRJRCA9IG51bGw7CgkJCQkJdXBkYXRlKCk7CgkJCQkJZGVsYXkgPSArbW9tZW50LmR1cmF0aW9uKDEsIHVuaXQpOwoJCQkJCWRlbGF5ID0gTWF0aC5tYXgoMTAwLCBkZWxheSk7IC8vIHByZXZlbnQgdG9vIGZyZXF1ZW50CgkJCQkJX3RoaXMubm93SW5kaWNhdG9ySW50ZXJ2YWxJRCA9IHNldEludGVydmFsKHVwZGF0ZSwgZGVsYXkpOyAvLyB1cGRhdGUgZXZlcnkgaW50ZXJ2YWwKCQkJCX0sIGRlbGF5KTsKCQkJfQoJCX0KCX0sCgoKCS8vIHJlcmVuZGVycyB0aGUgbm93IGluZGljYXRvciwgY29tcHV0aW5nIHRoZSBuZXcgY3VycmVudCB0aW1lIGZyb20gdGhlIGFtb3VudCBvZiB0aW1lIHRoYXQgaGFzIHBhc3NlZAoJLy8gc2luY2UgdGhlIGluaXRpYWwgZ2V0Tm93IGNhbGwuCgl1cGRhdGVOb3dJbmRpY2F0b3I6IGZ1bmN0aW9uKCkgewoJCWlmICh0aGlzLmlzTm93SW5kaWNhdG9yUmVuZGVyZWQpIHsKCQkJdGhpcy51bnJlbmRlck5vd0luZGljYXRvcigpOwoJCQl0aGlzLnJlbmRlck5vd0luZGljYXRvcigKCQkJCXRoaXMuaW5pdGlhbE5vd0RhdGUuY2xvbmUoKS5hZGQobmV3IERhdGUoKSAtIHRoaXMuaW5pdGlhbE5vd1F1ZXJpZWRNcykgLy8gYWRkIG1zCgkJCSk7CgkJfQoJfSwKCgoJLy8gSW1tZWRpYXRlbHkgdW5yZW5kZXJzIHRoZSB2aWV3J3MgY3VycmVudCB0aW1lIGluZGljYXRvciBhbmQgc3RvcHMgYW55IHJlLXJlbmRlcmluZyB0aW1lcnMuCgkvLyBXb24ndCBjYXVzZSBzaWRlIGVmZmVjdHMgaWYgaW5kaWNhdG9yIGlzbid0IHJlbmRlcmVkLgoJc3RvcE5vd0luZGljYXRvcjogZnVuY3Rpb24oKSB7CgkJaWYgKHRoaXMuaXNOb3dJbmRpY2F0b3JSZW5kZXJlZCkgewoKCQkJaWYgKHRoaXMubm93SW5kaWNhdG9yVGltZW91dElEKSB7CgkJCQljbGVhclRpbWVvdXQodGhpcy5ub3dJbmRpY2F0b3JUaW1lb3V0SUQpOwoJCQkJdGhpcy5ub3dJbmRpY2F0b3JUaW1lb3V0SUQgPSBudWxsOwoJCQl9CgkJCWlmICh0aGlzLm5vd0luZGljYXRvckludGVydmFsSUQpIHsKCQkJCWNsZWFyVGltZW91dCh0aGlzLm5vd0luZGljYXRvckludGVydmFsSUQpOwoJCQkJdGhpcy5ub3dJbmRpY2F0b3JJbnRlcnZhbElEID0gbnVsbDsKCQkJfQoKCQkJdGhpcy51bnJlbmRlck5vd0luZGljYXRvcigpOwoJCQl0aGlzLmlzTm93SW5kaWNhdG9yUmVuZGVyZWQgPSBmYWxzZTsKCQl9Cgl9LAoKCgkvLyBSZXR1cm5zIGEgc3RyaW5nIHVuaXQsIGxpa2UgJ3NlY29uZCcgb3IgJ21pbnV0ZScgdGhhdCBkZWZpbmVkIGhvdyBvZnRlbiB0aGUgY3VycmVudCB0aW1lIGluZGljYXRvcgoJLy8gc2hvdWxkIGJlIHJlZnJlc2hlZC4gSWYgc29tZXRoaW5nIGZhbHN5IGlzIHJldHVybmVkLCBubyB0aW1lIGluZGljYXRvciBpcyByZW5kZXJlZCBhdCBhbGwuCglnZXROb3dJbmRpY2F0b3JVbml0OiBmdW5jdGlvbigpIHsKCQkvLyBzdWJjbGFzc2VzIHNob3VsZCBpbXBsZW1lbnQKCX0sCgoKCS8vIFJlbmRlcnMgYSBjdXJyZW50IHRpbWUgaW5kaWNhdG9yIGF0IHRoZSBnaXZlbiBkYXRldGltZQoJcmVuZGVyTm93SW5kaWNhdG9yOiBmdW5jdGlvbihkYXRlKSB7CgkJLy8gc3ViY2xhc3NlcyBzaG91bGQgaW1wbGVtZW50Cgl9LAoKCgkvLyBVbmRvZXMgdGhlIHJlbmRlcmluZyBhY3Rpb25zIGZyb20gcmVuZGVyTm93SW5kaWNhdG9yCgl1bnJlbmRlck5vd0luZGljYXRvcjogZnVuY3Rpb24oKSB7CgkJLy8gc3ViY2xhc3NlcyBzaG91bGQgaW1wbGVtZW50Cgl9LAoKCgkvKiBEaW1lbnNpb25zCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBSZWZyZXNoZXMgYW55dGhpbmcgZGVwZW5kYW50IHVwb24gc2l6aW5nIG9mIHRoZSBjb250YWluZXIgZWxlbWVudCBvZiB0aGUgZ3JpZAoJdXBkYXRlU2l6ZTogZnVuY3Rpb24oaXNSZXNpemUpIHsKCgkJaWYgKGlzUmVzaXplKSB7CgkJCXRoaXMuY2FwdHVyZVNjcm9sbCgpOwoJCX0KCgkJdGhpcy51cGRhdGVIZWlnaHQoaXNSZXNpemUpOwoJCXRoaXMudXBkYXRlV2lkdGgoaXNSZXNpemUpOwoJCXRoaXMudXBkYXRlTm93SW5kaWNhdG9yKCk7CgoJCWlmIChpc1Jlc2l6ZSkgewoJCQl0aGlzLnJlbGVhc2VTY3JvbGwoKTsKCQl9Cgl9LAoKCgkvLyBSZWZyZXNoZXMgdGhlIGhvcml6b250YWwgZGltZW5zaW9ucyBvZiB0aGUgY2FsZW5kYXIKCXVwZGF0ZVdpZHRoOiBmdW5jdGlvbihpc1Jlc2l6ZSkgewoJCS8vIHN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudAoJfSwKCgoJLy8gUmVmcmVzaGVzIHRoZSB2ZXJ0aWNhbCBkaW1lbnNpb25zIG9mIHRoZSBjYWxlbmRhcgoJdXBkYXRlSGVpZ2h0OiBmdW5jdGlvbihpc1Jlc2l6ZSkgewoJCXZhciBjYWxlbmRhciA9IHRoaXMuY2FsZW5kYXI7IC8vIHdlIHBvbGwgdGhlIGNhbGVuZGFyIGZvciBoZWlnaHQgaW5mb3JtYXRpb24KCgkJdGhpcy5zZXRIZWlnaHQoCgkJCWNhbGVuZGFyLmdldFN1Z2dlc3RlZFZpZXdIZWlnaHQoKSwKCQkJY2FsZW5kYXIuaXNIZWlnaHRBdXRvKCkKCQkpOwoJfSwKCgoJLy8gVXBkYXRlcyB0aGUgdmVydGljYWwgZGltZW5zaW9ucyBvZiB0aGUgY2FsZW5kYXIgdG8gdGhlIHNwZWNpZmllZCBoZWlnaHQuCgkvLyBpZiBgaXNBdXRvYCBpcyBzZXQgdG8gdHJ1ZSwgaGVpZ2h0IGJlY29tZXMgbWVyZWx5IGEgc3VnZ2VzdGlvbiBhbmQgdGhlIHZpZXcgc2hvdWxkIHVzZSBpdHMgIm5hdHVyYWwiIGhlaWdodC4KCXNldEhlaWdodDogZnVuY3Rpb24oaGVpZ2h0LCBpc0F1dG8pIHsKCQkvLyBzdWJjbGFzc2VzIHNob3VsZCBpbXBsZW1lbnQKCX0sCgoKCS8qIFNjcm9sbGVyCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgljYXB0dXJlZFNjcm9sbDogbnVsbCwKCWNhcHR1cmVkU2Nyb2xsRGVwdGg6IDAsCgoKCWNhcHR1cmVTY3JvbGw6IGZ1bmN0aW9uKCkgewoJCWlmICghKHRoaXMuY2FwdHVyZWRTY3JvbGxEZXB0aCsrKSkgewoJCQl0aGlzLmNhcHR1cmVkU2Nyb2xsID0gdGhpcy5pc0RhdGVSZW5kZXJlZCA/IHRoaXMucXVlcnlTY3JvbGwoKSA6IHt9OyAvLyByZXF1aXJlIGEgcmVuZGVyIGZpcnN0CgkJCXJldHVybiB0cnVlOyAvLyByb290PwoJCX0KCQlyZXR1cm4gZmFsc2U7Cgl9LAoKCgljYXB0dXJlSW5pdGlhbFNjcm9sbDogZnVuY3Rpb24oZm9yY2VkU2Nyb2xsKSB7CgkJaWYgKHRoaXMuY2FwdHVyZVNjcm9sbCgpKSB7IC8vIHJvb3Q/CgkJCXRoaXMuY2FwdHVyZWRTY3JvbGwuaXNJbml0aWFsID0gdHJ1ZTsKCgkJCWlmIChmb3JjZWRTY3JvbGwpIHsKCQkJCSQuZXh0ZW5kKHRoaXMuY2FwdHVyZWRTY3JvbGwsIGZvcmNlZFNjcm9sbCk7CgkJCX0KCQkJZWxzZSB7CgkJCQl0aGlzLmNhcHR1cmVkU2Nyb2xsLmlzQ29tcHV0ZWQgPSB0cnVlOwoJCQl9CgkJfQoJfSwKCgoJcmVsZWFzZVNjcm9sbDogZnVuY3Rpb24oKSB7CgkJdmFyIHNjcm9sbCA9IHRoaXMuY2FwdHVyZWRTY3JvbGw7CgkJdmFyIGlzUm9vdCA9IHRoaXMuZGlzY2FyZFNjcm9sbCgpOwoKCQlpZiAoc2Nyb2xsLmlzQ29tcHV0ZWQpIHsKCQkJaWYgKGlzUm9vdCkgewoJCQkJLy8gb25seSBjb21wdXRlIGluaXRpYWwgc2Nyb2xsIGlmIGl0IHdpbGwgYWN0dWFsbHkgYmUgdXNlZCAoaXMgdGhlIHJvb3QgY2FwdHVyZSkKCQkJCSQuZXh0ZW5kKHNjcm9sbCwgdGhpcy5jb21wdXRlSW5pdGlhbFNjcm9sbCgpKTsKCQkJfQoJCQllbHNlIHsKCQkJCXNjcm9sbCA9IG51bGw7IC8vIHNjcm9sbCBjb3VsZG4ndCBiZSBjb21wdXRlZC4gZG9uJ3QgYXBwbHkgaXQgdG8gdGhlIERPTQoJCQl9CgkJfQoKCQlpZiAoc2Nyb2xsKSB7CgkJCS8vIHdlIGFjdCBpbW1lZGlhdGVseSBvbiBhIHJlbGVhc2VTY3JvbGwgb3BlcmF0aW9uLCBhcyBvcHBvc2VkIHRvIGNhcHR1cmVTY3JvbGwuCgkJCS8vIGlmIGNhcHR1cmUvcmVsZWFzZSB3cmFwcyBhIHJlbmRlciBvcGVyYXRpb24gdGhhdCBzY3Jld3MgdXAgdGhlIHNjcm9sbCwKCQkJLy8gd2Ugc3RpbGwgd2FudCB0byByZXN0b3JlIGl0IGEgZ29vZCBzdGF0ZSBhZnRlciwgcmVnYXJkbGVzcyBvZiBkZXB0aC4KCgkJCWlmIChzY3JvbGwuaXNJbml0aWFsKSB7CgkJCQl0aGlzLmhhcmRTZXRTY3JvbGwoc2Nyb2xsKTsgLy8gb3V0c21hcnQgaG93IGJyb3dzZXJzIHNldCBzY3JvbGwgb24gaW5pdGlhbCBET00KCQkJfQoJCQllbHNlIHsKCQkJCXRoaXMuc2V0U2Nyb2xsKHNjcm9sbCk7CgkJCX0KCQl9Cgl9LAoKCglkaXNjYXJkU2Nyb2xsOiBmdW5jdGlvbigpIHsKCQlpZiAoISgtLXRoaXMuY2FwdHVyZWRTY3JvbGxEZXB0aCkpIHsKCQkJdGhpcy5jYXB0dXJlZFNjcm9sbCA9IG51bGw7CgkJCXJldHVybiB0cnVlOyAvLyByb290PwoJCX0KCQlyZXR1cm4gZmFsc2U7Cgl9LAoKCgljb21wdXRlSW5pdGlhbFNjcm9sbDogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHt9OwoJfSwKCgoJcXVlcnlTY3JvbGw6IGZ1bmN0aW9uKCkgewoJCXJldHVybiB7fTsKCX0sCgoKCWhhcmRTZXRTY3JvbGw6IGZ1bmN0aW9uKHNjcm9sbCkgewoJCXZhciBfdGhpcyA9IHRoaXM7CgkJdmFyIGV4ZWMgPSBmdW5jdGlvbigpIHsgX3RoaXMuc2V0U2Nyb2xsKHNjcm9sbCk7IH07CgkJZXhlYygpOwoJCXNldFRpbWVvdXQoZXhlYywgMCk7IC8vIHRvIHN1cmVseSBjbGVhciB0aGUgYnJvd3NlcidzIGluaXRpYWwgc2Nyb2xsIGZvciB0aGUgRE9NCgl9LAoKCglzZXRTY3JvbGw6IGZ1bmN0aW9uKHNjcm9sbCkgewoJfSwKCgoJLyogSGVpZ2h0IEZyZWV6aW5nCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCglmcmVlemVIZWlnaHQ6IGZ1bmN0aW9uKCkgewoJCXRoaXMuY2FsZW5kYXIuZnJlZXplQ29udGVudEhlaWdodCgpOwoJfSwKCgoJdGhhd0hlaWdodDogZnVuY3Rpb24oKSB7CgkJdGhpcy5jYWxlbmRhci50aGF3Q29udGVudEhlaWdodCgpOwoJfSwKCgoJLy8gRXZlbnQgQmluZGluZy9VbmJpbmRpbmcKCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKCWJpbmRFdmVudHM6IGZ1bmN0aW9uKCkgewoJCXZhciBfdGhpcyA9IHRoaXM7CgoJCWlmICghdGhpcy5pc0V2ZW50c0JvdW5kKSB7CgkJCXRoaXMuaXNFdmVudHNCb3VuZCA9IHRydWU7CgkJCXRoaXMucmVqZWN0T24oJ2V2ZW50c1VuYmluZCcsIHRoaXMucmVxdWVzdEV2ZW50cygpKS50aGVuKGZ1bmN0aW9uKGV2ZW50cykgeyAvLyBUT0RPOiB0ZXN0IHJlamVjdGlvbgoJCQkJX3RoaXMubGlzdGVuVG8oX3RoaXMuY2FsZW5kYXIsICdldmVudHNSZXNldCcsIF90aGlzLnNldEV2ZW50cyk7CgkJCQlfdGhpcy5zZXRFdmVudHMoZXZlbnRzKTsKCQkJfSk7CgkJfQoJfSwKCgoJdW5iaW5kRXZlbnRzOiBmdW5jdGlvbigpIHsKCQlpZiAodGhpcy5pc0V2ZW50c0JvdW5kKSB7CgkJCXRoaXMuaXNFdmVudHNCb3VuZCA9IGZhbHNlOwoJCQl0aGlzLnN0b3BMaXN0ZW5pbmdUbyh0aGlzLmNhbGVuZGFyLCAnZXZlbnRzUmVzZXQnKTsKCQkJdGhpcy51bnNldEV2ZW50cygpOwoJCQl0aGlzLnRyaWdnZXIoJ2V2ZW50c1VuYmluZCcpOwoJCX0KCX0sCgoKCS8vIEV2ZW50IFNldHRpbmcvVW5zZXR0aW5nCgkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCglzZXRFdmVudHM6IGZ1bmN0aW9uKGV2ZW50cykgewoJCXZhciBpc1Jlc2V0ID0gdGhpcy5pc0V2ZW50U2V0OwoKCQl0aGlzLmlzRXZlbnRzU2V0ID0gdHJ1ZTsKCQl0aGlzLmhhbmRsZUV2ZW50cyhldmVudHMsIGlzUmVzZXQpOwoJCXRoaXMudHJpZ2dlcihpc1Jlc2V0ID8gJ2V2ZW50c1Jlc2V0JyA6ICdldmVudHNTZXQnLCBldmVudHMpOwoJfSwKCgoJdW5zZXRFdmVudHM6IGZ1bmN0aW9uKCkgewoJCWlmICh0aGlzLmlzRXZlbnRzU2V0KSB7CgkJCXRoaXMuaXNFdmVudHNTZXQgPSBmYWxzZTsKCQkJdGhpcy5oYW5kbGVFdmVudHNVbnNldCgpOwoJCQl0aGlzLnRyaWdnZXIoJ2V2ZW50c1Vuc2V0Jyk7CgkJfQoJfSwKCgoJd2hlbkV2ZW50c1NldDogZnVuY3Rpb24oKSB7CgkJdmFyIF90aGlzID0gdGhpczsKCgkJaWYgKHRoaXMuaXNFdmVudHNTZXQpIHsKCQkJcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLmdldEN1cnJlbnRFdmVudHMoKSk7CgkJfQoJCWVsc2UgewoJCQlyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSkgewoJCQkJX3RoaXMub25lKCdldmVudHNTZXQnLCByZXNvbHZlKTsKCQkJfSk7CgkJfQoJfSwKCgoJLy8gRXZlbnQgSGFuZGxpbmcKCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKCWhhbmRsZUV2ZW50czogZnVuY3Rpb24oZXZlbnRzLCBpc1Jlc2V0KSB7CgkJdGhpcy5yZXF1ZXN0RXZlbnRzUmVuZGVyKGV2ZW50cyk7Cgl9LAoKCgloYW5kbGVFdmVudHNVbnNldDogZnVuY3Rpb24oKSB7CgkJdGhpcy5yZXF1ZXN0RXZlbnRzVW5yZW5kZXIoKTsKCX0sCgoKCS8vIEV2ZW50IFJlbmRlciBRdWV1aW5nCgkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCgkvLyBhc3N1bWVzIGFueSBwcmV2aW91cyBldmVudCByZW5kZXJzIGhhdmUgYmVlbiBjbGVhcmVkIGFscmVhZHkKCXJlcXVlc3RFdmVudHNSZW5kZXI6IGZ1bmN0aW9uKGV2ZW50cykgewoJCXZhciBfdGhpcyA9IHRoaXM7CgoJCXJldHVybiB0aGlzLmV2ZW50UmVuZGVyUXVldWUuYWRkKGZ1bmN0aW9uKCkgeyAvLyBtaWdodCBub3QgcmV0dXJuIGEgcHJvbWlzZSBpZiBkZWJvdW5jZWQhPyBiYWQKCQkJcmV0dXJuIF90aGlzLmV4ZWN1dGVFdmVudHNSZW5kZXIoZXZlbnRzKTsKCQl9KTsKCX0sCgoKCXJlcXVlc3RFdmVudHNVbnJlbmRlcjogZnVuY3Rpb24oKSB7CgkJdmFyIF90aGlzID0gdGhpczsKCgkJaWYgKHRoaXMuaXNFdmVudHNSZW5kZXJlZCkgewoJCQlyZXR1cm4gdGhpcy5ldmVudFJlbmRlclF1ZXVlLmFkZFF1aWNrbHkoZnVuY3Rpb24oKSB7CgkJCQlyZXR1cm4gX3RoaXMuZXhlY3V0ZUV2ZW50c1VucmVuZGVyKCk7CgkJCX0pOwoJCX0KCQllbHNlIHsKCQkJcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwoJCX0KCX0sCgoKCXJlcXVlc3RDdXJyZW50RXZlbnRzUmVuZGVyOiBmdW5jdGlvbigpIHsKCQlpZiAodGhpcy5pc0V2ZW50c1NldCkgewoJCQl0aGlzLnJlcXVlc3RFdmVudHNSZW5kZXIodGhpcy5nZXRDdXJyZW50RXZlbnRzKCkpOwoJCX0KCQllbHNlIHsKCQkJcmV0dXJuIFByb21pc2UucmVqZWN0KCk7CgkJfQoJfSwKCgoJLy8gRXZlbnQgSGlnaC1sZXZlbCBSZW5kZXJpbmcKCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKCWV4ZWN1dGVFdmVudHNSZW5kZXI6IGZ1bmN0aW9uKGV2ZW50cykgewoJCXZhciBfdGhpcyA9IHRoaXM7CgoJCXRoaXMuY2FwdHVyZVNjcm9sbCgpOwoJCXRoaXMuZnJlZXplSGVpZ2h0KCk7CgoJCXJldHVybiB0aGlzLmV4ZWN1dGVFdmVudHNVbnJlbmRlcigpLnRoZW4oZnVuY3Rpb24oKSB7CgkJCV90aGlzLnJlbmRlckV2ZW50cyhldmVudHMpOwoKCQkJX3RoaXMudGhhd0hlaWdodCgpOwoJCQlfdGhpcy5yZWxlYXNlU2Nyb2xsKCk7CgoJCQlfdGhpcy5pc0V2ZW50c1JlbmRlcmVkID0gdHJ1ZTsKCQkJX3RoaXMub25FdmVudHNSZW5kZXIoKTsKCQkJX3RoaXMudHJpZ2dlcignZXZlbnRzUmVuZGVyJyk7CgkJfSk7Cgl9LAoKCglleGVjdXRlRXZlbnRzVW5yZW5kZXI6IGZ1bmN0aW9uKCkgewoJCWlmICh0aGlzLmlzRXZlbnRzUmVuZGVyZWQpIHsKCQkJdGhpcy5vbkJlZm9yZUV2ZW50c1VucmVuZGVyKCk7CgoJCQl0aGlzLmNhcHR1cmVTY3JvbGwoKTsKCQkJdGhpcy5mcmVlemVIZWlnaHQoKTsKCgkJCWlmICh0aGlzLmRlc3Ryb3lFdmVudHMpIHsKCQkJCXRoaXMuZGVzdHJveUV2ZW50cygpOyAvLyBUT0RPOiBkZXByZWNhdGUKCQkJfQoKCQkJdGhpcy51bnJlbmRlckV2ZW50cygpOwoKCQkJdGhpcy50aGF3SGVpZ2h0KCk7CgkJCXRoaXMucmVsZWFzZVNjcm9sbCgpOwoKCQkJdGhpcy5pc0V2ZW50c1JlbmRlcmVkID0gZmFsc2U7CgkJCXRoaXMudHJpZ2dlcignZXZlbnRzVW5yZW5kZXInKTsKCQl9CgoJCXJldHVybiBQcm9taXNlLnJlc29sdmUoKTsgLy8gYWx3YXlzIHN5bmNocm9ub3VzCgl9LAoKCgkvLyBFdmVudCBSZW5kZXJpbmcgVHJpZ2dlcnMKCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKCS8vIFNpZ25hbHMgdGhhdCBhbGwgZXZlbnRzIGhhdmUgYmVlbiByZW5kZXJlZAoJb25FdmVudHNSZW5kZXI6IGZ1bmN0aW9uKCkgewoJCXRoaXMucmVuZGVyZWRFdmVudFNlZ0VhY2goZnVuY3Rpb24oc2VnKSB7CgkJCXRoaXMucHVibGljbHlUcmlnZ2VyKCdldmVudEFmdGVyUmVuZGVyJywgc2VnLmV2ZW50LCBzZWcuZXZlbnQsIHNlZy5lbCk7CgkJfSk7CgkJdGhpcy5wdWJsaWNseVRyaWdnZXIoJ2V2ZW50QWZ0ZXJBbGxSZW5kZXInKTsKCX0sCgoKCS8vIFNpZ25hbHMgdGhhdCBhbGwgZXZlbnQgZWxlbWVudHMgYXJlIGFib3V0IHRvIGJlIHJlbW92ZWQKCW9uQmVmb3JlRXZlbnRzVW5yZW5kZXI6IGZ1bmN0aW9uKCkgewoJCXRoaXMucmVuZGVyZWRFdmVudFNlZ0VhY2goZnVuY3Rpb24oc2VnKSB7CgkJCXRoaXMucHVibGljbHlUcmlnZ2VyKCdldmVudERlc3Ryb3knLCBzZWcuZXZlbnQsIHNlZy5ldmVudCwgc2VnLmVsKTsKCQl9KTsKCX0sCgoKCS8vIEV2ZW50IExvdy1sZXZlbCBSZW5kZXJpbmcKCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKCS8vIFJlbmRlcnMgdGhlIGV2ZW50cyBvbnRvIHRoZSB2aWV3LgoJcmVuZGVyRXZlbnRzOiBmdW5jdGlvbihldmVudHMpIHsKCQkvLyBzdWJjbGFzc2VzIHNob3VsZCBpbXBsZW1lbnQKCX0sCgoKCS8vIFJlbW92ZXMgZXZlbnQgZWxlbWVudHMgZnJvbSB0aGUgdmlldy4KCXVucmVuZGVyRXZlbnRzOiBmdW5jdGlvbigpIHsKCQkvLyBzdWJjbGFzc2VzIHNob3VsZCBpbXBsZW1lbnQKCX0sCgoKCS8vIEV2ZW50IERhdGEgQWNjZXNzCgkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCglyZXF1ZXN0RXZlbnRzOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gdGhpcy5jYWxlbmRhci5yZXF1ZXN0RXZlbnRzKAoJCQl0aGlzLmFjdGl2ZVJhbmdlLnN0YXJ0LAoJCQl0aGlzLmFjdGl2ZVJhbmdlLmVuZAoJCSk7Cgl9LAoKCglnZXRDdXJyZW50RXZlbnRzOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gdGhpcy5jYWxlbmRhci5nZXRQcnVuZWRFdmVudENhY2hlKCk7Cgl9LAoKCgkvLyBFdmVudCBSZW5kZXJpbmcgVXRpbHMKCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKCS8vIEdpdmVuIGFuIGV2ZW50IGFuZCB0aGUgZGVmYXVsdCBlbGVtZW50IHVzZWQgZm9yIHJlbmRlcmluZywgcmV0dXJucyB0aGUgZWxlbWVudCB0aGF0IHNob3VsZCBhY3R1YWxseSBiZSB1c2VkLgoJLy8gQmFzaWNhbGx5IHJ1bnMgZXZlbnRzIGFuZCBlbGVtZW50cyB0aHJvdWdoIHRoZSBldmVudFJlbmRlciBob29rLgoJcmVzb2x2ZUV2ZW50RWw6IGZ1bmN0aW9uKGV2ZW50LCBlbCkgewoJCXZhciBjdXN0b20gPSB0aGlzLnB1YmxpY2x5VHJpZ2dlcignZXZlbnRSZW5kZXInLCBldmVudCwgZXZlbnQsIGVsKTsKCgkJaWYgKGN1c3RvbSA9PT0gZmFsc2UpIHsgLy8gbWVhbnMgZG9uJ3QgcmVuZGVyIGF0IGFsbAoJCQllbCA9IG51bGw7CgkJfQoJCWVsc2UgaWYgKGN1c3RvbSAmJiBjdXN0b20gIT09IHRydWUpIHsKCQkJZWwgPSAkKGN1c3RvbSk7CgkJfQoKCQlyZXR1cm4gZWw7Cgl9LAoKCgkvLyBIaWRlcyBhbGwgcmVuZGVyZWQgZXZlbnQgc2VnbWVudHMgbGlua2VkIHRvIHRoZSBnaXZlbiBldmVudAoJc2hvd0V2ZW50OiBmdW5jdGlvbihldmVudCkgewoJCXRoaXMucmVuZGVyZWRFdmVudFNlZ0VhY2goZnVuY3Rpb24oc2VnKSB7CgkJCXNlZy5lbC5jc3MoJ3Zpc2liaWxpdHknLCAnJyk7CgkJfSwgZXZlbnQpOwoJfSwKCgoJLy8gU2hvd3MgYWxsIHJlbmRlcmVkIGV2ZW50IHNlZ21lbnRzIGxpbmtlZCB0byB0aGUgZ2l2ZW4gZXZlbnQKCWhpZGVFdmVudDogZnVuY3Rpb24oZXZlbnQpIHsKCQl0aGlzLnJlbmRlcmVkRXZlbnRTZWdFYWNoKGZ1bmN0aW9uKHNlZykgewoJCQlzZWcuZWwuY3NzKCd2aXNpYmlsaXR5JywgJ2hpZGRlbicpOwoJCX0sIGV2ZW50KTsKCX0sCgoKCS8vIEl0ZXJhdGVzIHRocm91Z2ggZXZlbnQgc2VnbWVudHMgdGhhdCBoYXZlIGJlZW4gcmVuZGVyZWQgKGhhdmUgYW4gZWwpLiBHb2VzIHRocm91Z2ggYWxsIGJ5IGRlZmF1bHQuCgkvLyBJZiB0aGUgb3B0aW9uYWwgYGV2ZW50YCBhcmd1bWVudCBpcyBzcGVjaWZpZWQsIG9ubHkgaXRlcmF0ZXMgdGhyb3VnaCBzZWdtZW50cyBsaW5rZWQgdG8gdGhhdCBldmVudC4KCS8vIFRoZSBgdGhpc2AgdmFsdWUgb2YgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHdpbGwgYmUgdGhlIHZpZXcuCglyZW5kZXJlZEV2ZW50U2VnRWFjaDogZnVuY3Rpb24oZnVuYywgZXZlbnQpIHsKCQl2YXIgc2VncyA9IHRoaXMuZ2V0RXZlbnRTZWdzKCk7CgkJdmFyIGk7CgoJCWZvciAoaSA9IDA7IGkgPCBzZWdzLmxlbmd0aDsgaSsrKSB7CgkJCWlmICghZXZlbnQgfHwgc2Vnc1tpXS5ldmVudC5faWQgPT09IGV2ZW50Ll9pZCkgewoJCQkJaWYgKHNlZ3NbaV0uZWwpIHsKCQkJCQlmdW5jLmNhbGwodGhpcywgc2Vnc1tpXSk7CgkJCQl9CgkJCX0KCQl9Cgl9LAoKCgkvLyBSZXRyaWV2ZXMgYWxsIHRoZSByZW5kZXJlZCBzZWdtZW50IG9iamVjdHMgZm9yIHRoZSB2aWV3CglnZXRFdmVudFNlZ3M6IGZ1bmN0aW9uKCkgewoJCS8vIHN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQKCQlyZXR1cm4gW107Cgl9LAoKCgkvKiBFdmVudCBEcmFnLW4tRHJvcAoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gQ29tcHV0ZXMgaWYgdGhlIGdpdmVuIGV2ZW50IGlzIGFsbG93ZWQgdG8gYmUgZHJhZ2dlZCBieSB0aGUgdXNlcgoJaXNFdmVudERyYWdnYWJsZTogZnVuY3Rpb24oZXZlbnQpIHsKCQlyZXR1cm4gdGhpcy5pc0V2ZW50U3RhcnRFZGl0YWJsZShldmVudCk7Cgl9LAoKCglpc0V2ZW50U3RhcnRFZGl0YWJsZTogZnVuY3Rpb24oZXZlbnQpIHsKCQlyZXR1cm4gZmlyc3REZWZpbmVkKAoJCQlldmVudC5zdGFydEVkaXRhYmxlLAoJCQkoZXZlbnQuc291cmNlIHx8IHt9KS5zdGFydEVkaXRhYmxlLAoJCQl0aGlzLm9wdCgnZXZlbnRTdGFydEVkaXRhYmxlJyksCgkJCXRoaXMuaXNFdmVudEdlbmVyYWxseUVkaXRhYmxlKGV2ZW50KQoJCSk7Cgl9LAoKCglpc0V2ZW50R2VuZXJhbGx5RWRpdGFibGU6IGZ1bmN0aW9uKGV2ZW50KSB7CgkJcmV0dXJuIGZpcnN0RGVmaW5lZCgKCQkJZXZlbnQuZWRpdGFibGUsCgkJCShldmVudC5zb3VyY2UgfHwge30pLmVkaXRhYmxlLAoJCQl0aGlzLm9wdCgnZWRpdGFibGUnKQoJCSk7Cgl9LAoKCgkvLyBNdXN0IGJlIGNhbGxlZCB3aGVuIGFuIGV2ZW50IGluIHRoZSB2aWV3IGlzIGRyb3BwZWQgb250byBuZXcgbG9jYXRpb24uCgkvLyBgZHJvcExvY2F0aW9uYCBpcyBhbiBvYmplY3QgdGhhdCBjb250YWlucyB0aGUgbmV3IHpvbmVkIHN0YXJ0L2VuZC9hbGxEYXkgdmFsdWVzIGZvciB0aGUgZXZlbnQuCglyZXBvcnRTZWdEcm9wOiBmdW5jdGlvbihzZWcsIGRyb3BMb2NhdGlvbiwgbGFyZ2VVbml0LCBlbCwgZXYpIHsKCQl2YXIgY2FsZW5kYXIgPSB0aGlzLmNhbGVuZGFyOwoJCXZhciBtdXRhdGVSZXN1bHQgPSBjYWxlbmRhci5tdXRhdGVTZWcoc2VnLCBkcm9wTG9jYXRpb24sIGxhcmdlVW5pdCk7CgkJdmFyIHVuZG9GdW5jID0gZnVuY3Rpb24oKSB7CgkJCW11dGF0ZVJlc3VsdC51bmRvKCk7CgkJCWNhbGVuZGFyLnJlcG9ydEV2ZW50Q2hhbmdlKCk7CgkJfTsKCgkJdGhpcy50cmlnZ2VyRXZlbnREcm9wKHNlZy5ldmVudCwgbXV0YXRlUmVzdWx0LmRhdGVEZWx0YSwgdW5kb0Z1bmMsIGVsLCBldik7CgkJY2FsZW5kYXIucmVwb3J0RXZlbnRDaGFuZ2UoKTsgLy8gd2lsbCByZXJlbmRlciBldmVudHMKCX0sCgoKCS8vIFRyaWdnZXJzIGV2ZW50LWRyb3AgaGFuZGxlcnMgdGhhdCBoYXZlIHN1YnNjcmliZWQgdmlhIHRoZSBBUEkKCXRyaWdnZXJFdmVudERyb3A6IGZ1bmN0aW9uKGV2ZW50LCBkYXRlRGVsdGEsIHVuZG9GdW5jLCBlbCwgZXYpIHsKCQl0aGlzLnB1YmxpY2x5VHJpZ2dlcignZXZlbnREcm9wJywgZWxbMF0sIGV2ZW50LCBkYXRlRGVsdGEsIHVuZG9GdW5jLCBldiwge30pOyAvLyB7fSA9IGpxdWkgZHVtbXkKCX0sCgoKCS8qIEV4dGVybmFsIEVsZW1lbnQgRHJhZy1uLURyb3AKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIE11c3QgYmUgY2FsbGVkIHdoZW4gYW4gZXh0ZXJuYWwgZWxlbWVudCwgdmlhIGpRdWVyeSBVSSwgaGFzIGJlZW4gZHJvcHBlZCBvbnRvIHRoZSBjYWxlbmRhci4KCS8vIGBtZXRhYCBpcyB0aGUgcGFyc2VkIGRhdGEgdGhhdCBoYXMgYmVlbiBlbWJlZGRlZCBpbnRvIHRoZSBkcmFnZ2luZyBldmVudC4KCS8vIGBkcm9wTG9jYXRpb25gIGlzIGFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIHRoZSBuZXcgem9uZWQgc3RhcnQvZW5kL2FsbERheSB2YWx1ZXMgZm9yIHRoZSBldmVudC4KCXJlcG9ydEV4dGVybmFsRHJvcDogZnVuY3Rpb24obWV0YSwgZHJvcExvY2F0aW9uLCBlbCwgZXYsIHVpKSB7CgkJdmFyIGV2ZW50UHJvcHMgPSBtZXRhLmV2ZW50UHJvcHM7CgkJdmFyIGV2ZW50SW5wdXQ7CgkJdmFyIGV2ZW50OwoKCQkvLyBUcnkgdG8gYnVpbGQgYW4gZXZlbnQgb2JqZWN0IGFuZCByZW5kZXIgaXQuIFRPRE86IGRlY291cGxlIHRoZSB0d28KCQlpZiAoZXZlbnRQcm9wcykgewoJCQlldmVudElucHV0ID0gJC5leHRlbmQoe30sIGV2ZW50UHJvcHMsIGRyb3BMb2NhdGlvbik7CgkJCWV2ZW50ID0gdGhpcy5jYWxlbmRhci5yZW5kZXJFdmVudChldmVudElucHV0LCBtZXRhLnN0aWNrKVswXTsgLy8gcmVuZGVyRXZlbnQgcmV0dXJucyBhbiBhcnJheQoJCX0KCgkJdGhpcy50cmlnZ2VyRXh0ZXJuYWxEcm9wKGV2ZW50LCBkcm9wTG9jYXRpb24sIGVsLCBldiwgdWkpOwoJfSwKCgoJLy8gVHJpZ2dlcnMgZXh0ZXJuYWwtZHJvcCBoYW5kbGVycyB0aGF0IGhhdmUgc3Vic2NyaWJlZCB2aWEgdGhlIEFQSQoJdHJpZ2dlckV4dGVybmFsRHJvcDogZnVuY3Rpb24oZXZlbnQsIGRyb3BMb2NhdGlvbiwgZWwsIGV2LCB1aSkgewoKCQkvLyB0cmlnZ2VyICdkcm9wJyByZWdhcmRsZXNzIG9mIHdoZXRoZXIgZWxlbWVudCByZXByZXNlbnRzIGFuIGV2ZW50CgkJdGhpcy5wdWJsaWNseVRyaWdnZXIoJ2Ryb3AnLCBlbFswXSwgZHJvcExvY2F0aW9uLnN0YXJ0LCBldiwgdWkpOwoKCQlpZiAoZXZlbnQpIHsKCQkJdGhpcy5wdWJsaWNseVRyaWdnZXIoJ2V2ZW50UmVjZWl2ZScsIG51bGwsIGV2ZW50KTsgLy8gc2lnbmFsIGFuIGV4dGVybmFsIGV2ZW50IGxhbmRlZAoJCX0KCX0sCgoKCS8qIERyYWctbi1Ecm9wIFJlbmRlcmluZyAoZm9yIGJvdGggZXZlbnRzIGFuZCBleHRlcm5hbCBlbGVtZW50cykKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFJlbmRlcnMgYSB2aXN1YWwgaW5kaWNhdGlvbiBvZiBhIGV2ZW50IG9yIGV4dGVybmFsLWVsZW1lbnQgZHJhZyBvdmVyIHRoZSBnaXZlbiBkcm9wIHpvbmUuCgkvLyBJZiBhbiBleHRlcm5hbC1lbGVtZW50LCBzZWcgd2lsbCBiZSBgbnVsbGAuCgkvLyBNdXN0IHJldHVybiBlbGVtZW50cyB1c2VkIGZvciBhbnkgbW9jayBldmVudHMuCglyZW5kZXJEcmFnOiBmdW5jdGlvbihkcm9wTG9jYXRpb24sIHNlZykgewoJCS8vIHN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQKCX0sCgoKCS8vIFVucmVuZGVycyBhIHZpc3VhbCBpbmRpY2F0aW9uIG9mIGFuIGV2ZW50IG9yIGV4dGVybmFsLWVsZW1lbnQgYmVpbmcgZHJhZ2dlZC4KCXVucmVuZGVyRHJhZzogZnVuY3Rpb24oKSB7CgkJLy8gc3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudAoJfSwKCgoJLyogRXZlbnQgUmVzaXppbmcKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIENvbXB1dGVzIGlmIHRoZSBnaXZlbiBldmVudCBpcyBhbGxvd2VkIHRvIGJlIHJlc2l6ZWQgZnJvbSBpdHMgc3RhcnRpbmcgZWRnZQoJaXNFdmVudFJlc2l6YWJsZUZyb21TdGFydDogZnVuY3Rpb24oZXZlbnQpIHsKCQlyZXR1cm4gdGhpcy5vcHQoJ2V2ZW50UmVzaXphYmxlRnJvbVN0YXJ0JykgJiYgdGhpcy5pc0V2ZW50UmVzaXphYmxlKGV2ZW50KTsKCX0sCgoKCS8vIENvbXB1dGVzIGlmIHRoZSBnaXZlbiBldmVudCBpcyBhbGxvd2VkIHRvIGJlIHJlc2l6ZWQgZnJvbSBpdHMgZW5kaW5nIGVkZ2UKCWlzRXZlbnRSZXNpemFibGVGcm9tRW5kOiBmdW5jdGlvbihldmVudCkgewoJCXJldHVybiB0aGlzLmlzRXZlbnRSZXNpemFibGUoZXZlbnQpOwoJfSwKCgoJLy8gQ29tcHV0ZXMgaWYgdGhlIGdpdmVuIGV2ZW50IGlzIGFsbG93ZWQgdG8gYmUgcmVzaXplZCBieSB0aGUgdXNlciBhdCBhbGwKCWlzRXZlbnRSZXNpemFibGU6IGZ1bmN0aW9uKGV2ZW50KSB7CgkJdmFyIHNvdXJjZSA9IGV2ZW50LnNvdXJjZSB8fCB7fTsKCgkJcmV0dXJuIGZpcnN0RGVmaW5lZCgKCQkJZXZlbnQuZHVyYXRpb25FZGl0YWJsZSwKCQkJc291cmNlLmR1cmF0aW9uRWRpdGFibGUsCgkJCXRoaXMub3B0KCdldmVudER1cmF0aW9uRWRpdGFibGUnKSwKCQkJZXZlbnQuZWRpdGFibGUsCgkJCXNvdXJjZS5lZGl0YWJsZSwKCQkJdGhpcy5vcHQoJ2VkaXRhYmxlJykKCQkpOwoJfSwKCgoJLy8gTXVzdCBiZSBjYWxsZWQgd2hlbiBhbiBldmVudCBpbiB0aGUgdmlldyBoYXMgYmVlbiByZXNpemVkIHRvIGEgbmV3IGxlbmd0aAoJcmVwb3J0U2VnUmVzaXplOiBmdW5jdGlvbihzZWcsIHJlc2l6ZUxvY2F0aW9uLCBsYXJnZVVuaXQsIGVsLCBldikgewoJCXZhciBjYWxlbmRhciA9IHRoaXMuY2FsZW5kYXI7CgkJdmFyIG11dGF0ZVJlc3VsdCA9IGNhbGVuZGFyLm11dGF0ZVNlZyhzZWcsIHJlc2l6ZUxvY2F0aW9uLCBsYXJnZVVuaXQpOwoJCXZhciB1bmRvRnVuYyA9IGZ1bmN0aW9uKCkgewoJCQltdXRhdGVSZXN1bHQudW5kbygpOwoJCQljYWxlbmRhci5yZXBvcnRFdmVudENoYW5nZSgpOwoJCX07CgoJCXRoaXMudHJpZ2dlckV2ZW50UmVzaXplKHNlZy5ldmVudCwgbXV0YXRlUmVzdWx0LmR1cmF0aW9uRGVsdGEsIHVuZG9GdW5jLCBlbCwgZXYpOwoJCWNhbGVuZGFyLnJlcG9ydEV2ZW50Q2hhbmdlKCk7IC8vIHdpbGwgcmVyZW5kZXIgZXZlbnRzCgl9LAoKCgkvLyBUcmlnZ2VycyBldmVudC1yZXNpemUgaGFuZGxlcnMgdGhhdCBoYXZlIHN1YnNjcmliZWQgdmlhIHRoZSBBUEkKCXRyaWdnZXJFdmVudFJlc2l6ZTogZnVuY3Rpb24oZXZlbnQsIGR1cmF0aW9uRGVsdGEsIHVuZG9GdW5jLCBlbCwgZXYpIHsKCQl0aGlzLnB1YmxpY2x5VHJpZ2dlcignZXZlbnRSZXNpemUnLCBlbFswXSwgZXZlbnQsIGR1cmF0aW9uRGVsdGEsIHVuZG9GdW5jLCBldiwge30pOyAvLyB7fSA9IGpxdWkgZHVtbXkKCX0sCgoKCS8qIFNlbGVjdGlvbiAodGltZSByYW5nZSkKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFNlbGVjdHMgYSBkYXRlIHNwYW4gb24gdGhlIHZpZXcuIGBzdGFydGAgYW5kIGBlbmRgIGFyZSBib3RoIE1vbWVudHMuCgkvLyBgZXZgIGlzIHRoZSBuYXRpdmUgbW91c2UgZXZlbnQgdGhhdCBiZWdpbiB0aGUgaW50ZXJhY3Rpb24uCglzZWxlY3Q6IGZ1bmN0aW9uKHNwYW4sIGV2KSB7CgkJdGhpcy51bnNlbGVjdChldik7CgkJdGhpcy5yZW5kZXJTZWxlY3Rpb24oc3Bhbik7CgkJdGhpcy5yZXBvcnRTZWxlY3Rpb24oc3BhbiwgZXYpOwoJfSwKCgoJLy8gUmVuZGVycyBhIHZpc3VhbCBpbmRpY2F0aW9uIG9mIHRoZSBzZWxlY3Rpb24KCXJlbmRlclNlbGVjdGlvbjogZnVuY3Rpb24oc3BhbikgewoJCS8vIHN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudAoJfSwKCgoJLy8gQ2FsbGVkIHdoZW4gYSBuZXcgc2VsZWN0aW9uIGlzIG1hZGUuIFVwZGF0ZXMgaW50ZXJuYWwgc3RhdGUgYW5kIHRyaWdnZXJzIGhhbmRsZXJzLgoJcmVwb3J0U2VsZWN0aW9uOiBmdW5jdGlvbihzcGFuLCBldikgewoJCXRoaXMuaXNTZWxlY3RlZCA9IHRydWU7CgkJdGhpcy50cmlnZ2VyU2VsZWN0KHNwYW4sIGV2KTsKCX0sCgoKCS8vIFRyaWdnZXJzIGhhbmRsZXJzIHRvICdzZWxlY3QnCgl0cmlnZ2VyU2VsZWN0OiBmdW5jdGlvbihzcGFuLCBldikgewoJCXRoaXMucHVibGljbHlUcmlnZ2VyKAoJCQknc2VsZWN0JywKCQkJbnVsbCwKCQkJdGhpcy5jYWxlbmRhci5hcHBseVRpbWV6b25lKHNwYW4uc3RhcnQpLCAvLyBjb252ZXJ0IHRvIGNhbGVuZGFyJ3MgdHogZm9yIGV4dGVybmFsIEFQSQoJCQl0aGlzLmNhbGVuZGFyLmFwcGx5VGltZXpvbmUoc3Bhbi5lbmQpLCAvLyAiCgkJCWV2CgkJKTsKCX0sCgoKCS8vIFVuZG9lcyBhIHNlbGVjdGlvbi4gdXBkYXRlcyBpbiB0aGUgaW50ZXJuYWwgc3RhdGUgYW5kIHRyaWdnZXJzIGhhbmRsZXJzLgoJLy8gYGV2YCBpcyB0aGUgbmF0aXZlIG1vdXNlIGV2ZW50IHRoYXQgYmVnYW4gdGhlIGludGVyYWN0aW9uLgoJdW5zZWxlY3Q6IGZ1bmN0aW9uKGV2KSB7CgkJaWYgKHRoaXMuaXNTZWxlY3RlZCkgewoJCQl0aGlzLmlzU2VsZWN0ZWQgPSBmYWxzZTsKCQkJaWYgKHRoaXMuZGVzdHJveVNlbGVjdGlvbikgewoJCQkJdGhpcy5kZXN0cm95U2VsZWN0aW9uKCk7IC8vIFRPRE86IGRlcHJlY2F0ZQoJCQl9CgkJCXRoaXMudW5yZW5kZXJTZWxlY3Rpb24oKTsKCQkJdGhpcy5wdWJsaWNseVRyaWdnZXIoJ3Vuc2VsZWN0JywgbnVsbCwgZXYpOwoJCX0KCX0sCgoKCS8vIFVucmVuZGVycyBhIHZpc3VhbCBpbmRpY2F0aW9uIG9mIHNlbGVjdGlvbgoJdW5yZW5kZXJTZWxlY3Rpb246IGZ1bmN0aW9uKCkgewoJCS8vIHN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudAoJfSwKCgoJLyogRXZlbnQgU2VsZWN0aW9uCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCglzZWxlY3RFdmVudDogZnVuY3Rpb24oZXZlbnQpIHsKCQlpZiAoIXRoaXMuc2VsZWN0ZWRFdmVudCB8fCB0aGlzLnNlbGVjdGVkRXZlbnQgIT09IGV2ZW50KSB7CgkJCXRoaXMudW5zZWxlY3RFdmVudCgpOwoJCQl0aGlzLnJlbmRlcmVkRXZlbnRTZWdFYWNoKGZ1bmN0aW9uKHNlZykgewoJCQkJc2VnLmVsLmFkZENsYXNzKCdmYy1zZWxlY3RlZCcpOwoJCQl9LCBldmVudCk7CgkJCXRoaXMuc2VsZWN0ZWRFdmVudCA9IGV2ZW50OwoJCX0KCX0sCgoKCXVuc2VsZWN0RXZlbnQ6IGZ1bmN0aW9uKCkgewoJCWlmICh0aGlzLnNlbGVjdGVkRXZlbnQpIHsKCQkJdGhpcy5yZW5kZXJlZEV2ZW50U2VnRWFjaChmdW5jdGlvbihzZWcpIHsKCQkJCXNlZy5lbC5yZW1vdmVDbGFzcygnZmMtc2VsZWN0ZWQnKTsKCQkJfSwgdGhpcy5zZWxlY3RlZEV2ZW50KTsKCQkJdGhpcy5zZWxlY3RlZEV2ZW50ID0gbnVsbDsKCQl9Cgl9LAoKCglpc0V2ZW50U2VsZWN0ZWQ6IGZ1bmN0aW9uKGV2ZW50KSB7CgkJLy8gZXZlbnQgcmVmZXJlbmNlcyBtaWdodCBjaGFuZ2Ugb24gcmVmZXRjaEV2ZW50cygpLCB3aGlsZSBzZWxlY3RlZEV2ZW50IGRvZXNuJ3QsCgkJLy8gc28gY29tcGFyZSBJRHMKCQlyZXR1cm4gdGhpcy5zZWxlY3RlZEV2ZW50ICYmIHRoaXMuc2VsZWN0ZWRFdmVudC5faWQgPT09IGV2ZW50Ll9pZDsKCX0sCgoKCS8qIE1vdXNlIC8gVG91Y2ggVW5zZWxlY3RpbmcgKHRpbWUgcmFuZ2UgJiBldmVudCB1bnNlbGVjdGlvbikKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgkvLyBUT0RPOiBtb3ZlIGNvbnNpc3RlbnRseSB0byBkb3duL3N0YXJ0IG9yIHVwL2VuZD8KCS8vIFRPRE86IGRvbid0IGtpbGwgcHJldmlvdXMgc2VsZWN0aW9uIGlmIHRvdWNoIHNjcm9sbGluZwoKCgloYW5kbGVEb2N1bWVudE1vdXNlZG93bjogZnVuY3Rpb24oZXYpIHsKCQlpZiAoaXNQcmltYXJ5TW91c2VCdXR0b24oZXYpKSB7CgkJCXRoaXMucHJvY2Vzc1Vuc2VsZWN0KGV2KTsKCQl9Cgl9LAoKCglwcm9jZXNzVW5zZWxlY3Q6IGZ1bmN0aW9uKGV2KSB7CgkJdGhpcy5wcm9jZXNzUmFuZ2VVbnNlbGVjdChldik7CgkJdGhpcy5wcm9jZXNzRXZlbnRVbnNlbGVjdChldik7Cgl9LAoKCglwcm9jZXNzUmFuZ2VVbnNlbGVjdDogZnVuY3Rpb24oZXYpIHsKCQl2YXIgaWdub3JlOwoKCQkvLyBpcyB0aGVyZSBhIHRpbWUtcmFuZ2Ugc2VsZWN0aW9uPwoJCWlmICh0aGlzLmlzU2VsZWN0ZWQgJiYgdGhpcy5vcHQoJ3Vuc2VsZWN0QXV0bycpKSB7CgkJCS8vIG9ubHkgdW5zZWxlY3QgaWYgdGhlIGNsaWNrZWQgZWxlbWVudCBpcyBub3QgaWRlbnRpY2FsIHRvIG9yIGluc2lkZSBvZiBhbiAndW5zZWxlY3RDYW5jZWwnIGVsZW1lbnQKCQkJaWdub3JlID0gdGhpcy5vcHQoJ3Vuc2VsZWN0Q2FuY2VsJyk7CgkJCWlmICghaWdub3JlIHx8ICEkKGV2LnRhcmdldCkuY2xvc2VzdChpZ25vcmUpLmxlbmd0aCkgewoJCQkJdGhpcy51bnNlbGVjdChldik7CgkJCX0KCQl9Cgl9LAoKCglwcm9jZXNzRXZlbnRVbnNlbGVjdDogZnVuY3Rpb24oZXYpIHsKCQlpZiAodGhpcy5zZWxlY3RlZEV2ZW50KSB7CgkJCWlmICghJChldi50YXJnZXQpLmNsb3Nlc3QoJy5mYy1zZWxlY3RlZCcpLmxlbmd0aCkgewoJCQkJdGhpcy51bnNlbGVjdEV2ZW50KCk7CgkJCX0KCQl9Cgl9LAoKCgkvKiBEYXkgQ2xpY2sKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFRyaWdnZXJzIGhhbmRsZXJzIHRvICdkYXlDbGljaycKCS8vIFNwYW4gaGFzIHN0YXJ0L2VuZCBvZiB0aGUgY2xpY2tlZCBhcmVhLiBPbmx5IHRoZSBzdGFydCBpcyB1c2VmdWwuCgl0cmlnZ2VyRGF5Q2xpY2s6IGZ1bmN0aW9uKHNwYW4sIGRheUVsLCBldikgewoJCXRoaXMucHVibGljbHlUcmlnZ2VyKAoJCQknZGF5Q2xpY2snLAoJCQlkYXlFbCwKCQkJdGhpcy5jYWxlbmRhci5hcHBseVRpbWV6b25lKHNwYW4uc3RhcnQpLCAvLyBjb252ZXJ0IHRvIGNhbGVuZGFyJ3MgdGltZXpvbmUgZm9yIGV4dGVybmFsIEFQSQoJCQlldgoJCSk7Cgl9LAoKCgkvKiBEYXRlIFV0aWxzCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBSZXR1cm5zIHRoZSBkYXRlIHJhbmdlIG9mIHRoZSBmdWxsIGRheXMgdGhlIGdpdmVuIHJhbmdlIHZpc3VhbGx5IGFwcGVhcnMgdG8gb2NjdXB5LgoJLy8gUmV0dXJucyBhIG5ldyByYW5nZSBvYmplY3QuCgljb21wdXRlRGF5UmFuZ2U6IGZ1bmN0aW9uKHJhbmdlKSB7CgkJdmFyIHN0YXJ0RGF5ID0gcmFuZ2Uuc3RhcnQuY2xvbmUoKS5zdHJpcFRpbWUoKTsgLy8gdGhlIGJlZ2lubmluZyBvZiB0aGUgZGF5IHRoZSByYW5nZSBzdGFydHMKCQl2YXIgZW5kID0gcmFuZ2UuZW5kOwoJCXZhciBlbmREYXkgPSBudWxsOwoJCXZhciBlbmRUaW1lTVM7CgoJCWlmIChlbmQpIHsKCQkJZW5kRGF5ID0gZW5kLmNsb25lKCkuc3RyaXBUaW1lKCk7IC8vIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRheSB0aGUgcmFuZ2UgZXhjbHVzaXZlbHkgZW5kcwoJCQllbmRUaW1lTVMgPSArZW5kLnRpbWUoKTsgLy8gIyBvZiBtaWxsaXNlY29uZHMgaW50byBgZW5kRGF5YAoKCQkJLy8gSWYgdGhlIGVuZCB0aW1lIGlzIGFjdHVhbGx5IGluY2x1c2l2ZWx5IHBhcnQgb2YgdGhlIG5leHQgZGF5IGFuZCBpcyBlcXVhbCB0byBvcgoJCQkvLyBiZXlvbmQgdGhlIG5leHQgZGF5IHRocmVzaG9sZCwgYWRqdXN0IHRoZSBlbmQgdG8gYmUgdGhlIGV4Y2x1c2l2ZSBlbmQgb2YgYGVuZERheWAuCgkJCS8vIE90aGVyd2lzZSwgbGVhdmluZyBpdCBhcyBpbmNsdXNpdmUgd2lsbCBjYXVzZSBpdCB0byBleGNsdWRlIGBlbmREYXlgLgoJCQlpZiAoZW5kVGltZU1TICYmIGVuZFRpbWVNUyA+PSB0aGlzLm5leHREYXlUaHJlc2hvbGQpIHsKCQkJCWVuZERheS5hZGQoMSwgJ2RheXMnKTsKCQkJfQoJCX0KCgkJLy8gSWYgbm8gZW5kIHdhcyBzcGVjaWZpZWQsIG9yIGlmIGl0IGlzIHdpdGhpbiBgc3RhcnREYXlgIGJ1dCBub3QgcGFzdCBuZXh0RGF5VGhyZXNob2xkLAoJCS8vIGFzc2lnbiB0aGUgZGVmYXVsdCBkdXJhdGlvbiBvZiBvbmUgZGF5LgoJCWlmICghZW5kIHx8IGVuZERheSA8PSBzdGFydERheSkgewoJCQllbmREYXkgPSBzdGFydERheS5jbG9uZSgpLmFkZCgxLCAnZGF5cycpOwoJCX0KCgkJcmV0dXJuIHsgc3RhcnQ6IHN0YXJ0RGF5LCBlbmQ6IGVuZERheSB9OwoJfSwKCgoJLy8gRG9lcyB0aGUgZ2l2ZW4gZXZlbnQgdmlzdWFsbHkgYXBwZWFyIHRvIG9jY3VweSBtb3JlIHRoYW4gb25lIGRheT8KCWlzTXVsdGlEYXlFdmVudDogZnVuY3Rpb24oZXZlbnQpIHsKCQl2YXIgcmFuZ2UgPSB0aGlzLmNvbXB1dGVEYXlSYW5nZShldmVudCk7IC8vIGV2ZW50IGlzIHJhbmdlLWlzaAoKCQlyZXR1cm4gcmFuZ2UuZW5kLmRpZmYocmFuZ2Uuc3RhcnQsICdkYXlzJykgPiAxOwoJfQoKfSk7Cgo7OwoKVmlldy5taXhpbih7CgoJLy8gcmFuZ2UgdGhlIHZpZXcgaXMgZm9ybWFsbHkgcmVzcG9uc2libGUgZm9yLgoJLy8gZm9yIGV4YW1wbGUsIGEgbW9udGggdmlldyBtaWdodCBoYXZlIDFzdC0zMXN0LCBleGNsdWRpbmcgcGFkZGVkIGRhdGVzCgljdXJyZW50UmFuZ2U6IG51bGwsCgljdXJyZW50UmFuZ2VVbml0OiBudWxsLCAvLyBuYW1lIG9mIGxhcmdlc3QgdW5pdCBiZWluZyBkaXNwbGF5ZWQsIGxpa2UgIm1vbnRoIiBvciAid2VlayIKCgkvLyBkYXRlIHJhbmdlIHdpdGggYSByZW5kZXJlZCBza2VsZXRvbgoJLy8gaW5jbHVkZXMgbm90LWFjdGl2ZSBkYXlzIHRoYXQgbmVlZCBzb21lIHNvcnQgb2YgRE9NCglyZW5kZXJSYW5nZTogbnVsbCwKCgkvLyBkYXRlcyB0aGF0IGRpc3BsYXkgZXZlbnRzIGFuZCBhY2NlcHQgZHJhZy1uLWRyb3AKCWFjdGl2ZVJhbmdlOiBudWxsLAoKCS8vIGNvbnN0cmFpbnQgZm9yIHdoZXJlIHByZXYvbmV4dCBvcGVyYXRpb25zIGNhbiBnbyBhbmQgd2hlcmUgZXZlbnRzIGNhbiBiZSBkcmFnZ2VkL3Jlc2l6ZWQgdG8uCgkvLyBhbiBvYmplY3Qgd2l0aCBvcHRpb25hbCBzdGFydCBhbmQgZW5kIHByb3BlcnRpZXMuCgl2YWxpZFJhbmdlOiBudWxsLAoKCS8vIGhvdyBmYXIgdGhlIGN1cnJlbnQgZGF0ZSB3aWxsIG1vdmUgZm9yIGEgcHJldi9uZXh0IG9wZXJhdGlvbgoJZGF0ZUluY3JlbWVudDogbnVsbCwKCgkvLyBzdG9yZXMgdGhlICpjYWxlbmRhcidzKiBjdXJyZW50IGRhdGUgYWZ0ZXIgc2V0RGF0ZQoJLy8gVE9ETzogZW50aXJlbHkgQ2FsZW5kYXIncyByZXNwb25zaWJpbGl0eQoJY3VycmVudERhdGU6IG51bGwsCgoJbWluVGltZTogbnVsbCwgLy8gRHVyYXRpb24gb2JqZWN0IHRoYXQgZGVub3RlcyB0aGUgZmlyc3QgdmlzaWJsZSB0aW1lIG9mIGFueSBnaXZlbiBkYXkKCW1heFRpbWU6IG51bGwsIC8vIER1cmF0aW9uIG9iamVjdCB0aGF0IGRlbm90ZXMgdGhlIGV4Y2x1c2l2ZSB2aXNpYmxlIGVuZCB0aW1lIG9mIGFueSBnaXZlbiBkYXkKCXVzZXNNaW5NYXhUaW1lOiBmYWxzZSwgLy8gd2hldGhlciBtaW5UaW1lL21heFRpbWUgd2lsbCBhZmZlY3QgdGhlIGFjdGl2ZVJhbmdlLiBWaWV3cyBtdXN0IG9wdC1pbi4KCgkvLyBERVBSRUNBVEVECglzdGFydDogbnVsbCwgLy8gdXNlIGFjdGl2ZVJhbmdlLnN0YXJ0CgllbmQ6IG51bGwsIC8vIHVzZSBhY3RpdmVSYW5nZS5lbmQKCWludGVydmFsU3RhcnQ6IG51bGwsIC8vIHVzZSBjdXJyZW50UmFuZ2Uuc3RhcnQKCWludGVydmFsRW5kOiBudWxsLCAvLyB1c2UgY3VycmVudFJhbmdlLmVuZAoKCgkvKiBEYXRlIFJhbmdlIENvbXB1dGF0aW9uCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCglpc1NhbWVEYXRlUHJvZmlsZTogZnVuY3Rpb24oZGF0ZVByb2ZpbGUpIHsKCQlyZXR1cm4gdGhpcy5hY3RpdmVSYW5nZSAmJiBpc1Jhbmdlc0VxdWFsKHRoaXMuYWN0aXZlUmFuZ2UsIGRhdGVQcm9maWxlLmFjdGl2ZVJhbmdlKTsKCX0sCgoKCXNldERhdGVQcm9maWxlOiBmdW5jdGlvbihkYXRlUHJvZmlsZSkgewoJCXRoaXMuY3VycmVudFJhbmdlID0gZGF0ZVByb2ZpbGUuY3VycmVudFJhbmdlOwoJCXRoaXMuY3VycmVudFJhbmdlVW5pdCA9IGRhdGVQcm9maWxlLmN1cnJlbnRSYW5nZVVuaXQ7CgkJdGhpcy5yZW5kZXJSYW5nZSA9IGRhdGVQcm9maWxlLnJlbmRlclJhbmdlOwoJCXRoaXMuYWN0aXZlUmFuZ2UgPSBkYXRlUHJvZmlsZS5hY3RpdmVSYW5nZTsKCQl0aGlzLnZhbGlkUmFuZ2UgPSBkYXRlUHJvZmlsZS52YWxpZFJhbmdlOwoJCXRoaXMuZGF0ZUluY3JlbWVudCA9IGRhdGVQcm9maWxlLmRhdGVJbmNyZW1lbnQ7CgkJdGhpcy5jdXJyZW50RGF0ZSA9IGRhdGVQcm9maWxlLmRhdGU7CgkJdGhpcy5taW5UaW1lID0gZGF0ZVByb2ZpbGUubWluVGltZTsKCQl0aGlzLm1heFRpbWUgPSBkYXRlUHJvZmlsZS5tYXhUaW1lOwoKCQkvLyBERVBSRUNBVEVELCBidXQgd2UgbmVlZCB0byBrZWVwIGl0IHVwZGF0ZWQKCQl0aGlzLnN0YXJ0ID0gZGF0ZVByb2ZpbGUuYWN0aXZlUmFuZ2Uuc3RhcnQ7CgkJdGhpcy5lbmQgPSBkYXRlUHJvZmlsZS5hY3RpdmVSYW5nZS5lbmQ7CgkJdGhpcy5pbnRlcnZhbFN0YXJ0ID0gZGF0ZVByb2ZpbGUuY3VycmVudFJhbmdlLnN0YXJ0OwoJCXRoaXMuaW50ZXJ2YWxFbmQgPSBkYXRlUHJvZmlsZS5jdXJyZW50UmFuZ2UuZW5kOwoJfSwKCgoJLy8gQnVpbGRzIGEgc3RydWN0dXJlIHdpdGggaW5mbyBhYm91dCB3aGF0IHRoZSBkYXRlcy9yYW5nZXMgd2lsbCBiZSBmb3IgdGhlICJwcmV2IiB2aWV3LgoJYnVpbGRQcmV2RGF0ZVByb2ZpbGU6IGZ1bmN0aW9uKGRhdGUpIHsKCQl2YXIgcHJldkRhdGUgPSBkYXRlLmNsb25lKCkuc3RhcnRPZih0aGlzLmN1cnJlbnRSYW5nZVVuaXQpLnN1YnRyYWN0KHRoaXMuZGF0ZUluY3JlbWVudCk7CgoJCXJldHVybiB0aGlzLmJ1aWxkRGF0ZVByb2ZpbGUocHJldkRhdGUsIC0xKTsKCX0sCgoKCS8vIEJ1aWxkcyBhIHN0cnVjdHVyZSB3aXRoIGluZm8gYWJvdXQgd2hhdCB0aGUgZGF0ZXMvcmFuZ2VzIHdpbGwgYmUgZm9yIHRoZSAibmV4dCIgdmlldy4KCWJ1aWxkTmV4dERhdGVQcm9maWxlOiBmdW5jdGlvbihkYXRlKSB7CgkJdmFyIG5leHREYXRlID0gZGF0ZS5jbG9uZSgpLnN0YXJ0T2YodGhpcy5jdXJyZW50UmFuZ2VVbml0KS5hZGQodGhpcy5kYXRlSW5jcmVtZW50KTsKCgkJcmV0dXJuIHRoaXMuYnVpbGREYXRlUHJvZmlsZShuZXh0RGF0ZSwgMSk7Cgl9LAoKCgkvLyBCdWlsZHMgYSBzdHJ1Y3R1cmUgaG9sZGluZyBkYXRlcy9yYW5nZXMgZm9yIHJlbmRlcmluZyBhcm91bmQgdGhlIGdpdmVuIGRhdGUuCgkvLyBPcHRpb25hbCBkaXJlY3Rpb24gcGFyYW0gaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGRhdGUgaXMgYmVpbmcgaW5jcmVtZW50ZWQvZGVjcmVtZW50ZWQKCS8vIGZyb20gaXRzIHByZXZpb3VzIHZhbHVlLiBkZWNyZW1lbnRlZCA9IC0xLCBpbmNyZW1lbnRlZCA9IDEgKGRlZmF1bHQpLgoJYnVpbGREYXRlUHJvZmlsZTogZnVuY3Rpb24oZGF0ZSwgZGlyZWN0aW9uLCBmb3JjZVRvVmFsaWQpIHsKCQl2YXIgdmFsaWRSYW5nZSA9IHRoaXMuYnVpbGRWYWxpZFJhbmdlKCk7CgkJdmFyIG1pblRpbWUgPSBudWxsOwoJCXZhciBtYXhUaW1lID0gbnVsbDsKCQl2YXIgY3VycmVudEluZm87CgkJdmFyIHJlbmRlclJhbmdlOwoJCXZhciBhY3RpdmVSYW5nZTsKCQl2YXIgaXNWYWxpZDsKCgkJaWYgKGZvcmNlVG9WYWxpZCkgewoJCQlkYXRlID0gY29uc3RyYWluRGF0ZShkYXRlLCB2YWxpZFJhbmdlKTsKCQl9CgoJCWN1cnJlbnRJbmZvID0gdGhpcy5idWlsZEN1cnJlbnRSYW5nZUluZm8oZGF0ZSwgZGlyZWN0aW9uKTsKCQlyZW5kZXJSYW5nZSA9IHRoaXMuYnVpbGRSZW5kZXJSYW5nZShjdXJyZW50SW5mby5yYW5nZSwgY3VycmVudEluZm8udW5pdCk7CgkJYWN0aXZlUmFuZ2UgPSBjbG9uZVJhbmdlKHJlbmRlclJhbmdlKTsKCgkJaWYgKCF0aGlzLm9wdCgnc2hvd05vbkN1cnJlbnREYXRlcycpKSB7CgkJCWFjdGl2ZVJhbmdlID0gY29uc3RyYWluUmFuZ2UoYWN0aXZlUmFuZ2UsIGN1cnJlbnRJbmZvLnJhbmdlKTsKCQl9CgoJCW1pblRpbWUgPSBtb21lbnQuZHVyYXRpb24odGhpcy5vcHQoJ21pblRpbWUnKSk7CgkJbWF4VGltZSA9IG1vbWVudC5kdXJhdGlvbih0aGlzLm9wdCgnbWF4VGltZScpKTsKCQl0aGlzLmFkanVzdEFjdGl2ZVJhbmdlKGFjdGl2ZVJhbmdlLCBtaW5UaW1lLCBtYXhUaW1lKTsKCgkJYWN0aXZlUmFuZ2UgPSBjb25zdHJhaW5SYW5nZShhY3RpdmVSYW5nZSwgdmFsaWRSYW5nZSk7CgkJZGF0ZSA9IGNvbnN0cmFpbkRhdGUoZGF0ZSwgYWN0aXZlUmFuZ2UpOwoKCQkvLyBpdCdzIGludmFsaWQgaWYgdGhlIG9yaWdpbmFsbHkgcmVxdWVzdGVkIGRhdGUgaXMgbm90IGNvbnRhaW5lZCwKCQkvLyBvciBpZiB0aGUgcmFuZ2UgaXMgY29tcGxldGVseSBvdXRzaWRlIG9mIHRoZSB2YWxpZCByYW5nZS4KCQlpc1ZhbGlkID0gZG9SYW5nZXNJbnRlcnNlY3QoY3VycmVudEluZm8ucmFuZ2UsIHZhbGlkUmFuZ2UpOwoKCQlyZXR1cm4gewoJCQl2YWxpZFJhbmdlOiB2YWxpZFJhbmdlLAoJCQljdXJyZW50UmFuZ2U6IGN1cnJlbnRJbmZvLnJhbmdlLAoJCQljdXJyZW50UmFuZ2VVbml0OiBjdXJyZW50SW5mby51bml0LAoJCQlhY3RpdmVSYW5nZTogYWN0aXZlUmFuZ2UsCgkJCXJlbmRlclJhbmdlOiByZW5kZXJSYW5nZSwKCQkJbWluVGltZTogbWluVGltZSwKCQkJbWF4VGltZTogbWF4VGltZSwKCQkJaXNWYWxpZDogaXNWYWxpZCwKCQkJZGF0ZTogZGF0ZSwKCQkJZGF0ZUluY3JlbWVudDogdGhpcy5idWlsZERhdGVJbmNyZW1lbnQoY3VycmVudEluZm8uZHVyYXRpb24pCgkJCQkvLyBwYXNzIGEgZmFsbGJhY2sgKG1pZ2h0IGJlIG51bGwpIF4KCQl9OwoJfSwKCgoJLy8gQnVpbGRzIGFuIG9iamVjdCB3aXRoIG9wdGlvbmFsIHN0YXJ0L2VuZCBwcm9wZXJ0aWVzLgoJLy8gSW5kaWNhdGVzIHRoZSBtaW5pbXVtL21heGltdW0gZGF0ZXMgdG8gZGlzcGxheS4KCWJ1aWxkVmFsaWRSYW5nZTogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHRoaXMuZ2V0UmFuZ2VPcHRpb24oJ3ZhbGlkUmFuZ2UnLCB0aGlzLmNhbGVuZGFyLmdldE5vdygpKSB8fCB7fTsKCX0sCgoKCS8vIEJ1aWxkcyBhIHN0cnVjdHVyZSB3aXRoIGluZm8gYWJvdXQgdGhlICJjdXJyZW50IiByYW5nZSwgdGhlIHJhbmdlIHRoYXQgaXMKCS8vIGhpZ2hsaWdodGVkIGFzIGJlaW5nIHRoZSBjdXJyZW50IG1vbnRoIGZvciBleGFtcGxlLgoJLy8gU2VlIGJ1aWxkRGF0ZVByb2ZpbGUgZm9yIGEgZGVzY3JpcHRpb24gb2YgYGRpcmVjdGlvbmAuCgkvLyBHdWFyYW50ZWVkIHRvIGhhdmUgYHJhbmdlYCBhbmQgYHVuaXRgIHByb3BlcnRpZXMuIGBkdXJhdGlvbmAgaXMgb3B0aW9uYWwuCglidWlsZEN1cnJlbnRSYW5nZUluZm86IGZ1bmN0aW9uKGRhdGUsIGRpcmVjdGlvbikgewoJCXZhciBkdXJhdGlvbiA9IG51bGw7CgkJdmFyIHVuaXQgPSBudWxsOwoJCXZhciByYW5nZSA9IG51bGw7CgkJdmFyIGRheUNvdW50OwoKCQlpZiAodGhpcy52aWV3U3BlYy5kdXJhdGlvbikgewoJCQlkdXJhdGlvbiA9IHRoaXMudmlld1NwZWMuZHVyYXRpb247CgkJCXVuaXQgPSB0aGlzLnZpZXdTcGVjLmR1cmF0aW9uVW5pdDsKCQkJcmFuZ2UgPSB0aGlzLmJ1aWxkUmFuZ2VGcm9tRHVyYXRpb24oZGF0ZSwgZGlyZWN0aW9uLCBkdXJhdGlvbiwgdW5pdCk7CgkJfQoJCWVsc2UgaWYgKChkYXlDb3VudCA9IHRoaXMub3B0KCdkYXlDb3VudCcpKSkgewoJCQl1bml0ID0gJ2RheSc7CgkJCXJhbmdlID0gdGhpcy5idWlsZFJhbmdlRnJvbURheUNvdW50KGRhdGUsIGRpcmVjdGlvbiwgZGF5Q291bnQpOwoJCX0KCQllbHNlIGlmICgocmFuZ2UgPSB0aGlzLmJ1aWxkQ3VzdG9tVmlzaWJsZVJhbmdlKGRhdGUpKSkgewoJCQl1bml0ID0gY29tcHV0ZUdyZWF0ZXN0VW5pdChyYW5nZS5zdGFydCwgcmFuZ2UuZW5kKTsKCQl9CgkJZWxzZSB7CgkJCWR1cmF0aW9uID0gdGhpcy5nZXRGYWxsYmFja0R1cmF0aW9uKCk7CgkJCXVuaXQgPSBjb21wdXRlR3JlYXRlc3RVbml0KGR1cmF0aW9uKTsKCQkJcmFuZ2UgPSB0aGlzLmJ1aWxkUmFuZ2VGcm9tRHVyYXRpb24oZGF0ZSwgZGlyZWN0aW9uLCBkdXJhdGlvbiwgdW5pdCk7CgkJfQoKCQl0aGlzLm5vcm1hbGl6ZUN1cnJlbnRSYW5nZShyYW5nZSwgdW5pdCk7IC8vIG1vZGlmaWVzIGluLXBsYWNlCgoJCXJldHVybiB7IGR1cmF0aW9uOiBkdXJhdGlvbiwgdW5pdDogdW5pdCwgcmFuZ2U6IHJhbmdlIH07Cgl9LAoKCglnZXRGYWxsYmFja0R1cmF0aW9uOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gbW9tZW50LmR1cmF0aW9uKHsgZGF5czogMSB9KTsKCX0sCgoKCS8vIElmIHRoZSByYW5nZSBoYXMgZGF5IHVuaXRzIG9yIGxhcmdlciwgcmVtb3ZlIHRpbWVzLiBPdGhlcndpc2UsIGVuc3VyZSB0aW1lcy4KCW5vcm1hbGl6ZUN1cnJlbnRSYW5nZTogZnVuY3Rpb24ocmFuZ2UsIHVuaXQpIHsKCgkJaWYgKC9eKHllYXJ8bW9udGh8d2Vla3xkYXkpJC8udGVzdCh1bml0KSkgeyAvLyB3aG9sZS1kYXlzPwoJCQlyYW5nZS5zdGFydC5zdHJpcFRpbWUoKTsKCQkJcmFuZ2UuZW5kLnN0cmlwVGltZSgpOwoJCX0KCQllbHNlIHsgLy8gbmVlZHMgdG8gaGF2ZSBhIHRpbWU/CgkJCWlmICghcmFuZ2Uuc3RhcnQuaGFzVGltZSgpKSB7CgkJCQlyYW5nZS5zdGFydC50aW1lKDApOyAvLyBnaXZlIDAwOjAwIHRpbWUKCQkJfQoJCQlpZiAoIXJhbmdlLmVuZC5oYXNUaW1lKCkpIHsKCQkJCXJhbmdlLmVuZC50aW1lKDApOyAvLyBnaXZlIDAwOjAwIHRpbWUKCQkJfQoJCX0KCX0sCgoKCS8vIE11dGF0ZXMgdGhlIGdpdmVuIGFjdGl2ZVJhbmdlIHRvIGhhdmUgdGltZSB2YWx1ZXMgKHVuLWFtYmlndWF0ZSkKCS8vIGlmIHRoZSBtaW5UaW1lIG9yIG1heFRpbWUgY2F1c2VzIHRoZSByYW5nZSB0byBleHBhbmQuCgkvLyBUT0RPOiBldmVudHVhbGx5IGFjdGl2ZVJhbmdlIHNob3VsZCAqYWx3YXlzKiBoYXZlIHRpbWVzLgoJYWRqdXN0QWN0aXZlUmFuZ2U6IGZ1bmN0aW9uKHJhbmdlLCBtaW5UaW1lLCBtYXhUaW1lKSB7CgkJdmFyIGhhc1NwZWNpYWxUaW1lcyA9IGZhbHNlOwoKCQlpZiAodGhpcy51c2VzTWluTWF4VGltZSkgewoKCQkJaWYgKG1pblRpbWUgPCAwKSB7CgkJCQlyYW5nZS5zdGFydC50aW1lKDApLmFkZChtaW5UaW1lKTsKCQkJCWhhc1NwZWNpYWxUaW1lcyA9IHRydWU7CgkJCX0KCgkJCWlmIChtYXhUaW1lID4gMjQgKiA2MCAqIDYwICogMTAwMCkgeyAvLyBiZXlvbmQgMjQgaG91cnM/CgkJCQlyYW5nZS5lbmQudGltZShtYXhUaW1lIC0gKDI0ICogNjAgKiA2MCAqIDEwMDApKTsKCQkJCWhhc1NwZWNpYWxUaW1lcyA9IHRydWU7CgkJCX0KCgkJCWlmIChoYXNTcGVjaWFsVGltZXMpIHsKCQkJCWlmICghcmFuZ2Uuc3RhcnQuaGFzVGltZSgpKSB7CgkJCQkJcmFuZ2Uuc3RhcnQudGltZSgwKTsKCQkJCX0KCQkJCWlmICghcmFuZ2UuZW5kLmhhc1RpbWUoKSkgewoJCQkJCXJhbmdlLmVuZC50aW1lKDApOwoJCQkJfQoJCQl9CgkJfQoJfSwKCgoJLy8gQnVpbGRzIHRoZSAiY3VycmVudCIgcmFuZ2Ugd2hlbiBpdCBpcyBzcGVjaWZpZWQgYXMgYW4gZXhwbGljaXQgZHVyYXRpb24uCgkvLyBgdW5pdGAgaXMgdGhlIGFscmVhZHktY29tcHV0ZWQgY29tcHV0ZUdyZWF0ZXN0VW5pdCB2YWx1ZSBvZiBkdXJhdGlvbi4KCWJ1aWxkUmFuZ2VGcm9tRHVyYXRpb246IGZ1bmN0aW9uKGRhdGUsIGRpcmVjdGlvbiwgZHVyYXRpb24sIHVuaXQpIHsKCQl2YXIgYWxpZ25tZW50ID0gdGhpcy5vcHQoJ2RhdGVBbGlnbm1lbnQnKTsKCQl2YXIgc3RhcnQgPSBkYXRlLmNsb25lKCk7CgkJdmFyIGVuZDsKCQl2YXIgZGF0ZUluY3JlbWVudElucHV0OwoJCXZhciBkYXRlSW5jcmVtZW50RHVyYXRpb247CgoJCS8vIGlmIHRoZSB2aWV3IGRpc3BsYXlzIGEgc2luZ2xlIGRheSBvciBzbWFsbGVyCgkJaWYgKGR1cmF0aW9uLmFzKCdkYXlzJykgPD0gMSkgewoJCQlpZiAodGhpcy5pc0hpZGRlbkRheShzdGFydCkpIHsKCQkJCXN0YXJ0ID0gdGhpcy5za2lwSGlkZGVuRGF5cyhzdGFydCwgZGlyZWN0aW9uKTsKCQkJCXN0YXJ0LnN0YXJ0T2YoJ2RheScpOwoJCQl9CgkJfQoKCQkvLyBjb21wdXRlIHdoYXQgdGhlIGFsaWdubWVudCBzaG91bGQgYmUKCQlpZiAoIWFsaWdubWVudCkgewoJCQlkYXRlSW5jcmVtZW50SW5wdXQgPSB0aGlzLm9wdCgnZGF0ZUluY3JlbWVudCcpOwoKCQkJaWYgKGRhdGVJbmNyZW1lbnRJbnB1dCkgewoJCQkJZGF0ZUluY3JlbWVudER1cmF0aW9uID0gbW9tZW50LmR1cmF0aW9uKGRhdGVJbmNyZW1lbnRJbnB1dCk7CgoJCQkJLy8gdXNlIHRoZSBzbWFsbGVyIG9mIHRoZSB0d28gdW5pdHMKCQkJCWlmIChkYXRlSW5jcmVtZW50RHVyYXRpb24gPCBkdXJhdGlvbikgewoJCQkJCWFsaWdubWVudCA9IGNvbXB1dGVEdXJhdGlvbkdyZWF0ZXN0VW5pdChkYXRlSW5jcmVtZW50RHVyYXRpb24sIGRhdGVJbmNyZW1lbnRJbnB1dCk7CgkJCQl9CgkJCQllbHNlIHsKCQkJCQlhbGlnbm1lbnQgPSB1bml0OwoJCQkJfQoJCQl9CgkJCWVsc2UgewoJCQkJYWxpZ25tZW50ID0gdW5pdDsKCQkJfQoJCX0KCgkJc3RhcnQuc3RhcnRPZihhbGlnbm1lbnQpOwoJCWVuZCA9IHN0YXJ0LmNsb25lKCkuYWRkKGR1cmF0aW9uKTsKCgkJcmV0dXJuIHsgc3RhcnQ6IHN0YXJ0LCBlbmQ6IGVuZCB9OwoJfSwKCgoJLy8gQnVpbGRzIHRoZSAiY3VycmVudCIgcmFuZ2Ugd2hlbiBhIGRheUNvdW50IGlzIHNwZWNpZmllZC4KCWJ1aWxkUmFuZ2VGcm9tRGF5Q291bnQ6IGZ1bmN0aW9uKGRhdGUsIGRpcmVjdGlvbiwgZGF5Q291bnQpIHsKCQl2YXIgY3VzdG9tQWxpZ25tZW50ID0gdGhpcy5vcHQoJ2RhdGVBbGlnbm1lbnQnKTsKCQl2YXIgcnVubmluZ0NvdW50ID0gMDsKCQl2YXIgc3RhcnQgPSBkYXRlLmNsb25lKCk7CgkJdmFyIGVuZDsKCgkJaWYgKGN1c3RvbUFsaWdubWVudCkgewoJCQlzdGFydC5zdGFydE9mKGN1c3RvbUFsaWdubWVudCk7CgkJfQoKCQlzdGFydC5zdGFydE9mKCdkYXknKTsKCQlzdGFydCA9IHRoaXMuc2tpcEhpZGRlbkRheXMoc3RhcnQsIGRpcmVjdGlvbik7CgoJCWVuZCA9IHN0YXJ0LmNsb25lKCk7CgkJZG8gewoJCQllbmQuYWRkKDEsICdkYXknKTsKCQkJaWYgKCF0aGlzLmlzSGlkZGVuRGF5KGVuZCkpIHsKCQkJCXJ1bm5pbmdDb3VudCsrOwoJCQl9CgkJfSB3aGlsZSAocnVubmluZ0NvdW50IDwgZGF5Q291bnQpOwoKCQlyZXR1cm4geyBzdGFydDogc3RhcnQsIGVuZDogZW5kIH07Cgl9LAoKCgkvLyBCdWlsZHMgYSBub3JtYWxpemVkIHJhbmdlIG9iamVjdCBmb3IgdGhlICJ2aXNpYmxlIiByYW5nZSwKCS8vIHdoaWNoIGlzIGEgd2F5IHRvIGRlZmluZSB0aGUgY3VycmVudFJhbmdlIGFuZCBhY3RpdmVSYW5nZSBhdCB0aGUgc2FtZSB0aW1lLgoJYnVpbGRDdXN0b21WaXNpYmxlUmFuZ2U6IGZ1bmN0aW9uKGRhdGUpIHsKCQl2YXIgdmlzaWJsZVJhbmdlID0gdGhpcy5nZXRSYW5nZU9wdGlvbigKCQkJJ3Zpc2libGVSYW5nZScsCgkJCXRoaXMuY2FsZW5kYXIubW9tZW50KGRhdGUpIC8vIGNvcnJlY3Qgem9uZS4gYWxzbyBnZW5lcmF0ZXMgbmV3IG9iaiB0aGF0IGF2b2lkcyBtdXRhdGlvbnMKCQkpOwoKCQlpZiAodmlzaWJsZVJhbmdlICYmICghdmlzaWJsZVJhbmdlLnN0YXJ0IHx8ICF2aXNpYmxlUmFuZ2UuZW5kKSkgewoJCQlyZXR1cm4gbnVsbDsKCQl9CgoJCXJldHVybiB2aXNpYmxlUmFuZ2U7Cgl9LAoKCgkvLyBDb21wdXRlcyB0aGUgcmFuZ2UgdGhhdCB3aWxsIHJlcHJlc2VudCB0aGUgZWxlbWVudC9jZWxscyBmb3IgKnJlbmRlcmluZyosCgkvLyBidXQgd2hpY2ggbWF5IGhhdmUgdm9pZGVkIGRheXMvdGltZXMuCglidWlsZFJlbmRlclJhbmdlOiBmdW5jdGlvbihjdXJyZW50UmFuZ2UsIGN1cnJlbnRSYW5nZVVuaXQpIHsKCQkvLyBjdXQgb2ZmIGRheXMgaW4gdGhlIGN1cnJlbnRSYW5nZSB0aGF0IGFyZSBoaWRkZW4KCQlyZXR1cm4gdGhpcy50cmltSGlkZGVuRGF5cyhjdXJyZW50UmFuZ2UpOwoJfSwKCgoJLy8gQ29tcHV0ZSB0aGUgZHVyYXRpb24gdmFsdWUgdGhhdCBzaG91bGQgYmUgYWRkZWQvc3Vic3RyYWN0ZWQgdG8gdGhlIGN1cnJlbnQgZGF0ZQoJLy8gd2hlbiBhIHByZXYvbmV4dCBvcGVyYXRpb24gaGFwcGVucy4KCWJ1aWxkRGF0ZUluY3JlbWVudDogZnVuY3Rpb24oZmFsbGJhY2spIHsKCQl2YXIgZGF0ZUluY3JlbWVudElucHV0ID0gdGhpcy5vcHQoJ2RhdGVJbmNyZW1lbnQnKTsKCQl2YXIgY3VzdG9tQWxpZ25tZW50OwoKCQlpZiAoZGF0ZUluY3JlbWVudElucHV0KSB7CgkJCXJldHVybiBtb21lbnQuZHVyYXRpb24oZGF0ZUluY3JlbWVudElucHV0KTsKCQl9CgkJZWxzZSBpZiAoKGN1c3RvbUFsaWdubWVudCA9IHRoaXMub3B0KCdkYXRlQWxpZ25tZW50JykpKSB7CgkJCXJldHVybiBtb21lbnQuZHVyYXRpb24oMSwgY3VzdG9tQWxpZ25tZW50KTsKCQl9CgkJZWxzZSBpZiAoZmFsbGJhY2spIHsKCQkJcmV0dXJuIGZhbGxiYWNrOwoJCX0KCQllbHNlIHsKCQkJcmV0dXJuIG1vbWVudC5kdXJhdGlvbih7IGRheXM6IDEgfSk7CgkJfQoJfSwKCgoJLy8gUmVtb3ZlIGRheXMgZnJvbSB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgdGhlIHJhbmdlIHRoYXQgYXJlIGNvbXB1dGVkIGFzIGhpZGRlbi4KCXRyaW1IaWRkZW5EYXlzOiBmdW5jdGlvbihpbnB1dFJhbmdlKSB7CgkJcmV0dXJuIHsKCQkJc3RhcnQ6IHRoaXMuc2tpcEhpZGRlbkRheXMoaW5wdXRSYW5nZS5zdGFydCksCgkJCWVuZDogdGhpcy5za2lwSGlkZGVuRGF5cyhpbnB1dFJhbmdlLmVuZCwgLTEsIHRydWUpIC8vIGV4Y2x1c2l2ZWx5IG1vdmUgYmFja3dhcmRzCgkJfTsKCX0sCgoKCS8vIENvbXB1dGUgdGhlIG51bWJlciBvZiB0aGUgZ2l2ZSB1bml0cyBpbiB0aGUgImN1cnJlbnQiIHJhbmdlLgoJLy8gV2lsbCByZXR1cm4gYSBmbG9hdGluZy1wb2ludCBudW1iZXIuIFdvbid0IHJvdW5kLgoJY3VycmVudFJhbmdlQXM6IGZ1bmN0aW9uKHVuaXQpIHsKCQl2YXIgY3VycmVudFJhbmdlID0gdGhpcy5jdXJyZW50UmFuZ2U7CgkJcmV0dXJuIGN1cnJlbnRSYW5nZS5lbmQuZGlmZihjdXJyZW50UmFuZ2Uuc3RhcnQsIHVuaXQsIHRydWUpOwoJfSwKCgoJLy8gQXJndW1lbnRzIGFmdGVyIG5hbWUgd2lsbCBiZSBmb3J3YXJkZWQgdG8gYSBoeXBvdGhldGljYWwgZnVuY3Rpb24gdmFsdWUKCS8vIFdBUk5JTkc6IHBhc3NlZC1pbiBhcmd1bWVudHMgd2lsbCBiZSBnaXZlbiB0byBnZW5lcmF0b3IgZnVuY3Rpb25zIGFzLWlzIGFuZCBjYW4gY2F1c2Ugc2lkZS1lZmZlY3RzLgoJLy8gQWx3YXlzIGNsb25lIHlvdXIgb2JqZWN0cyBpZiB5b3UgZmVhciBtdXRhdGlvbi4KCWdldFJhbmdlT3B0aW9uOiBmdW5jdGlvbihuYW1lKSB7CgkJdmFyIHZhbCA9IHRoaXMub3B0KG5hbWUpOwoKCQlpZiAodHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJykgewoJCQl2YWwgPSB2YWwuYXBwbHkoCgkJCQludWxsLAoJCQkJQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKQoJCQkpOwoJCX0KCgkJaWYgKHZhbCkgewoJCQlyZXR1cm4gdGhpcy5jYWxlbmRhci5wYXJzZVJhbmdlKHZhbCk7CgkJfQoJfSwKCgoJLyogSGlkZGVuIERheXMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIEluaXRpYWxpemVzIGludGVybmFsIHZhcmlhYmxlcyByZWxhdGVkIHRvIGNhbGN1bGF0aW5nIGhpZGRlbiBkYXlzLW9mLXdlZWsKCWluaXRIaWRkZW5EYXlzOiBmdW5jdGlvbigpIHsKCQl2YXIgaGlkZGVuRGF5cyA9IHRoaXMub3B0KCdoaWRkZW5EYXlzJykgfHwgW107IC8vIGFycmF5IG9mIGRheS1vZi13ZWVrIGluZGljZXMgdGhhdCBhcmUgaGlkZGVuCgkJdmFyIGlzSGlkZGVuRGF5SGFzaCA9IFtdOyAvLyBpcyB0aGUgZGF5LW9mLXdlZWsgaGlkZGVuPyAoaGFzaCB3aXRoIGRheS1vZi13ZWVrLWluZGV4IC0+IGJvb2wpCgkJdmFyIGRheUNudCA9IDA7CgkJdmFyIGk7CgoJCWlmICh0aGlzLm9wdCgnd2Vla2VuZHMnKSA9PT0gZmFsc2UpIHsKCQkJaGlkZGVuRGF5cy5wdXNoKDAsIDYpOyAvLyAwPXN1bmRheSwgNj1zYXR1cmRheQoJCX0KCgkJZm9yIChpID0gMDsgaSA8IDc7IGkrKykgewoJCQlpZiAoCgkJCQkhKGlzSGlkZGVuRGF5SGFzaFtpXSA9ICQuaW5BcnJheShpLCBoaWRkZW5EYXlzKSAhPT0gLTEpCgkJCSkgewoJCQkJZGF5Q250Kys7CgkJCX0KCQl9CgoJCWlmICghZGF5Q250KSB7CgkJCXRocm93ICdpbnZhbGlkIGhpZGRlbkRheXMnOyAvLyBhbGwgZGF5cyB3ZXJlIGhpZGRlbj8gYmFkLgoJCX0KCgkJdGhpcy5pc0hpZGRlbkRheUhhc2ggPSBpc0hpZGRlbkRheUhhc2g7Cgl9LAoKCgkvLyBJcyB0aGUgY3VycmVudCBkYXkgaGlkZGVuPwoJLy8gYGRheWAgaXMgYSBkYXktb2Ytd2VlayBpbmRleCAoMC02KSwgb3IgYSBNb21lbnQKCWlzSGlkZGVuRGF5OiBmdW5jdGlvbihkYXkpIHsKCQlpZiAobW9tZW50LmlzTW9tZW50KGRheSkpIHsKCQkJZGF5ID0gZGF5LmRheSgpOwoJCX0KCQlyZXR1cm4gdGhpcy5pc0hpZGRlbkRheUhhc2hbZGF5XTsKCX0sCgoKCS8vIEluY3JlbWVudGluZyB0aGUgY3VycmVudCBkYXkgdW50aWwgaXQgaXMgbm8gbG9uZ2VyIGEgaGlkZGVuIGRheSwgcmV0dXJuaW5nIGEgY29weS4KCS8vIERPRVMgTk9UIENPTlNJREVSIHZhbGlkUmFuZ2UhCgkvLyBJZiB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBgZGF0ZWAgaXMgbm90IGEgaGlkZGVuIGRheSwgZG9uJ3QgZG8gYW55dGhpbmcuCgkvLyBQYXNzIGBpc0V4Y2x1c2l2ZWAgYXMgYHRydWVgIGlmIHlvdSBhcmUgZGVhbGluZyB3aXRoIGFuIGVuZCBkYXRlLgoJLy8gYGluY2AgZGVmYXVsdHMgdG8gYDFgIChpbmNyZW1lbnQgb25lIGRheSBmb3J3YXJkIGVhY2ggdGltZSkKCXNraXBIaWRkZW5EYXlzOiBmdW5jdGlvbihkYXRlLCBpbmMsIGlzRXhjbHVzaXZlKSB7CgkJdmFyIG91dCA9IGRhdGUuY2xvbmUoKTsKCQlpbmMgPSBpbmMgfHwgMTsKCQl3aGlsZSAoCgkJCXRoaXMuaXNIaWRkZW5EYXlIYXNoWyhvdXQuZGF5KCkgKyAoaXNFeGNsdXNpdmUgPyBpbmMgOiAwKSArIDcpICUgN10KCQkpIHsKCQkJb3V0LmFkZChpbmMsICdkYXlzJyk7CgkJfQoJCXJldHVybiBvdXQ7Cgl9Cgp9KTsKCjs7CgovKgpFbWJvZGllcyBhIGRpdiB0aGF0IGhhcyBwb3RlbnRpYWwgc2Nyb2xsYmFycwoqLwp2YXIgU2Nyb2xsZXIgPSBGQy5TY3JvbGxlciA9IENsYXNzLmV4dGVuZCh7CgoJZWw6IG51bGwsIC8vIHRoZSBndWFyYW50ZWVkIG91dGVyIGVsZW1lbnQKCXNjcm9sbEVsOiBudWxsLCAvLyB0aGUgZWxlbWVudCB3aXRoIHRoZSBzY3JvbGxiYXJzCglvdmVyZmxvd1g6IG51bGwsCglvdmVyZmxvd1k6IG51bGwsCgoKCWNvbnN0cnVjdG9yOiBmdW5jdGlvbihvcHRpb25zKSB7CgkJb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CgkJdGhpcy5vdmVyZmxvd1ggPSBvcHRpb25zLm92ZXJmbG93WCB8fCBvcHRpb25zLm92ZXJmbG93IHx8ICdhdXRvJzsKCQl0aGlzLm92ZXJmbG93WSA9IG9wdGlvbnMub3ZlcmZsb3dZIHx8IG9wdGlvbnMub3ZlcmZsb3cgfHwgJ2F1dG8nOwoJfSwKCgoJcmVuZGVyOiBmdW5jdGlvbigpIHsKCQl0aGlzLmVsID0gdGhpcy5yZW5kZXJFbCgpOwoJCXRoaXMuYXBwbHlPdmVyZmxvdygpOwoJfSwKCgoJcmVuZGVyRWw6IGZ1bmN0aW9uKCkgewoJCXJldHVybiAodGhpcy5zY3JvbGxFbCA9ICQoJzxkaXYgY2xhc3M9ImZjLXNjcm9sbGVyIj48L2Rpdj4nKSk7Cgl9LAoKCgkvLyBzZXRzIHRvIG5hdHVyYWwgaGVpZ2h0LCB1bmxvY2tzIG92ZXJmbG93CgljbGVhcjogZnVuY3Rpb24oKSB7CgkJdGhpcy5zZXRIZWlnaHQoJ2F1dG8nKTsKCQl0aGlzLmFwcGx5T3ZlcmZsb3coKTsKCX0sCgoKCWRlc3Ryb3k6IGZ1bmN0aW9uKCkgewoJCXRoaXMuZWwucmVtb3ZlKCk7Cgl9LAoKCgkvLyBPdmVyZmxvdwoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoJYXBwbHlPdmVyZmxvdzogZnVuY3Rpb24oKSB7CgkJdGhpcy5zY3JvbGxFbC5jc3MoewoJCQknb3ZlcmZsb3cteCc6IHRoaXMub3ZlcmZsb3dYLAoJCQknb3ZlcmZsb3cteSc6IHRoaXMub3ZlcmZsb3dZCgkJfSk7Cgl9LAoKCgkvLyBDYXVzZXMgYW55ICdhdXRvJyBvdmVyZmxvdyB2YWx1ZXMgdG8gcmVzb2x2ZXMgdG8gJ3Njcm9sbCcgb3IgJ2hpZGRlbicuCgkvLyBVc2VmdWwgZm9yIHByZXNlcnZpbmcgc2Nyb2xsYmFyIHdpZHRocyByZWdhcmRsZXNzIG9mIGZ1dHVyZSByZXNpemVzLgoJLy8gQ2FuIHBhc3MgaW4gc2Nyb2xsYmFyV2lkdGhzIGZvciBvcHRpbWl6YXRpb24uCglsb2NrT3ZlcmZsb3c6IGZ1bmN0aW9uKHNjcm9sbGJhcldpZHRocykgewoJCXZhciBvdmVyZmxvd1ggPSB0aGlzLm92ZXJmbG93WDsKCQl2YXIgb3ZlcmZsb3dZID0gdGhpcy5vdmVyZmxvd1k7CgoJCXNjcm9sbGJhcldpZHRocyA9IHNjcm9sbGJhcldpZHRocyB8fCB0aGlzLmdldFNjcm9sbGJhcldpZHRocygpOwoKCQlpZiAob3ZlcmZsb3dYID09PSAnYXV0bycpIHsKCQkJb3ZlcmZsb3dYID0gKAoJCQkJCXNjcm9sbGJhcldpZHRocy50b3AgfHwgc2Nyb2xsYmFyV2lkdGhzLmJvdHRvbSB8fCAvLyBob3Jpem9udGFsIHNjcm9sbGJhcnM/CgkJCQkJLy8gT1Igc2Nyb2xsaW5nIHBhbmUgd2l0aCBtYXNzbGVzcyBzY3JvbGxiYXJzPwoJCQkJCXRoaXMuc2Nyb2xsRWxbMF0uc2Nyb2xsV2lkdGggLSAxID4gdGhpcy5zY3JvbGxFbFswXS5jbGllbnRXaWR0aAoJCQkJCQkvLyBzdWJ0cmFjdCAxIGJlY2F1c2Ugb2YgSUUgb2ZmLWJ5LW9uZSBpc3N1ZQoJCQkJKSA/ICdzY3JvbGwnIDogJ2hpZGRlbic7CgkJfQoKCQlpZiAob3ZlcmZsb3dZID09PSAnYXV0bycpIHsKCQkJb3ZlcmZsb3dZID0gKAoJCQkJCXNjcm9sbGJhcldpZHRocy5sZWZ0IHx8IHNjcm9sbGJhcldpZHRocy5yaWdodCB8fCAvLyB2ZXJ0aWNhbCBzY3JvbGxiYXJzPwoJCQkJCS8vIE9SIHNjcm9sbGluZyBwYW5lIHdpdGggbWFzc2xlc3Mgc2Nyb2xsYmFycz8KCQkJCQl0aGlzLnNjcm9sbEVsWzBdLnNjcm9sbEhlaWdodCAtIDEgPiB0aGlzLnNjcm9sbEVsWzBdLmNsaWVudEhlaWdodAoJCQkJCQkvLyBzdWJ0cmFjdCAxIGJlY2F1c2Ugb2YgSUUgb2ZmLWJ5LW9uZSBpc3N1ZQoJCQkJKSA/ICdzY3JvbGwnIDogJ2hpZGRlbic7CgkJfQoKCQl0aGlzLnNjcm9sbEVsLmNzcyh7ICdvdmVyZmxvdy14Jzogb3ZlcmZsb3dYLCAnb3ZlcmZsb3cteSc6IG92ZXJmbG93WSB9KTsKCX0sCgoKCS8vIEdldHRlcnMgLyBTZXR0ZXJzCgkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCglzZXRIZWlnaHQ6IGZ1bmN0aW9uKGhlaWdodCkgewoJCXRoaXMuc2Nyb2xsRWwuaGVpZ2h0KGhlaWdodCk7Cgl9LAoKCglnZXRTY3JvbGxUb3A6IGZ1bmN0aW9uKCkgewoJCXJldHVybiB0aGlzLnNjcm9sbEVsLnNjcm9sbFRvcCgpOwoJfSwKCgoJc2V0U2Nyb2xsVG9wOiBmdW5jdGlvbih0b3ApIHsKCQl0aGlzLnNjcm9sbEVsLnNjcm9sbFRvcCh0b3ApOwoJfSwKCgoJZ2V0Q2xpZW50V2lkdGg6IGZ1bmN0aW9uKCkgewoJCXJldHVybiB0aGlzLnNjcm9sbEVsWzBdLmNsaWVudFdpZHRoOwoJfSwKCgoJZ2V0Q2xpZW50SGVpZ2h0OiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gdGhpcy5zY3JvbGxFbFswXS5jbGllbnRIZWlnaHQ7Cgl9LAoKCglnZXRTY3JvbGxiYXJXaWR0aHM6IGZ1bmN0aW9uKCkgewoJCXJldHVybiBnZXRTY3JvbGxiYXJXaWR0aHModGhpcy5zY3JvbGxFbCk7Cgl9Cgp9KTsKCjs7CmZ1bmN0aW9uIEl0ZXJhdG9yKGl0ZW1zKSB7CiAgICB0aGlzLml0ZW1zID0gaXRlbXMgfHwgW107Cn0KCgovKiBDYWxscyBhIG1ldGhvZCBvbiBldmVyeSBpdGVtIHBhc3NpbmcgdGhlIGFyZ3VtZW50cyB0aHJvdWdoICovCkl0ZXJhdG9yLnByb3RvdHlwZS5wcm94eUNhbGwgPSBmdW5jdGlvbihtZXRob2ROYW1lKSB7CiAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwoKICAgIHRoaXMuaXRlbXMuZm9yRWFjaChmdW5jdGlvbihpdGVtKSB7CiAgICAgICAgcmVzdWx0cy5wdXNoKGl0ZW1bbWV0aG9kTmFtZV0uYXBwbHkoaXRlbSwgYXJncykpOwogICAgfSk7CgogICAgcmV0dXJuIHJlc3VsdHM7Cn07Cgo7OwoKLyogVG9vbGJhciB3aXRoIGJ1dHRvbnMgYW5kIHRpdGxlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKZnVuY3Rpb24gVG9vbGJhcihjYWxlbmRhciwgdG9vbGJhck9wdGlvbnMpIHsKCXZhciB0ID0gdGhpczsKCgkvLyBleHBvcnRzCgl0LnNldFRvb2xiYXJPcHRpb25zID0gc2V0VG9vbGJhck9wdGlvbnM7Cgl0LnJlbmRlciA9IHJlbmRlcjsKCXQucmVtb3ZlRWxlbWVudCA9IHJlbW92ZUVsZW1lbnQ7Cgl0LnVwZGF0ZVRpdGxlID0gdXBkYXRlVGl0bGU7Cgl0LmFjdGl2YXRlQnV0dG9uID0gYWN0aXZhdGVCdXR0b247Cgl0LmRlYWN0aXZhdGVCdXR0b24gPSBkZWFjdGl2YXRlQnV0dG9uOwoJdC5kaXNhYmxlQnV0dG9uID0gZGlzYWJsZUJ1dHRvbjsKCXQuZW5hYmxlQnV0dG9uID0gZW5hYmxlQnV0dG9uOwoJdC5nZXRWaWV3c1dpdGhCdXR0b25zID0gZ2V0Vmlld3NXaXRoQnV0dG9uczsKCXQuZWwgPSBudWxsOyAvLyBtaXJyb3JzIGxvY2FsIGBlbGAKCgkvLyBsb2NhbHMKCXZhciBlbDsKCXZhciB2aWV3c1dpdGhCdXR0b25zID0gW107Cgl2YXIgdG07CgoJLy8gbWV0aG9kIHRvIHVwZGF0ZSB0b29sYmFyLXNwZWNpZmljIG9wdGlvbnMsIG5vdCBjYWxlbmRhci13aWRlIG9wdGlvbnMKCWZ1bmN0aW9uIHNldFRvb2xiYXJPcHRpb25zKG5ld1Rvb2xiYXJPcHRpb25zKSB7CgkJdG9vbGJhck9wdGlvbnMgPSBuZXdUb29sYmFyT3B0aW9uczsKCX0KCgkvLyBjYW4gYmUgY2FsbGVkIHJlcGVhdGVkbHkgYW5kIHdpbGwgcmVyZW5kZXIKCWZ1bmN0aW9uIHJlbmRlcigpIHsKCQl2YXIgc2VjdGlvbnMgPSB0b29sYmFyT3B0aW9ucy5sYXlvdXQ7CgoJCXRtID0gY2FsZW5kYXIub3B0aW9ucy50aGVtZSA/ICd1aScgOiAnZmMnOwoKCQlpZiAoc2VjdGlvbnMpIHsKCQkJaWYgKCFlbCkgewoJCQkJZWwgPSB0aGlzLmVsID0gJCgiPGRpdiBjbGFzcz0nZmMtdG9vbGJhciAiKyB0b29sYmFyT3B0aW9ucy5leHRyYUNsYXNzZXMgKyAiJy8+Iik7CgkJCX0KCQkJZWxzZSB7CgkJCQllbC5lbXB0eSgpOwoJCQl9CgkJCWVsLmFwcGVuZChyZW5kZXJTZWN0aW9uKCdsZWZ0JykpCgkJCQkuYXBwZW5kKHJlbmRlclNlY3Rpb24oJ3JpZ2h0JykpCgkJCQkuYXBwZW5kKHJlbmRlclNlY3Rpb24oJ2NlbnRlcicpKQoJCQkJLmFwcGVuZCgnPGRpdiBjbGFzcz0iZmMtY2xlYXIiLz4nKTsKCQl9CgkJZWxzZSB7CgkJCXJlbW92ZUVsZW1lbnQoKTsKCQl9Cgl9CgoKCWZ1bmN0aW9uIHJlbW92ZUVsZW1lbnQoKSB7CgkJaWYgKGVsKSB7CgkJCWVsLnJlbW92ZSgpOwoJCQllbCA9IHQuZWwgPSBudWxsOwoJCX0KCX0KCgoJZnVuY3Rpb24gcmVuZGVyU2VjdGlvbihwb3NpdGlvbikgewoJCXZhciBzZWN0aW9uRWwgPSAkKCc8ZGl2IGNsYXNzPSJmYy0nICsgcG9zaXRpb24gKyAnIi8+Jyk7CgkJdmFyIGJ1dHRvblN0ciA9IHRvb2xiYXJPcHRpb25zLmxheW91dFtwb3NpdGlvbl07CgoJCWlmIChidXR0b25TdHIpIHsKCQkJJC5lYWNoKGJ1dHRvblN0ci5zcGxpdCgnICcpLCBmdW5jdGlvbihpKSB7CgkJCQl2YXIgZ3JvdXBDaGlsZHJlbiA9ICQoKTsKCQkJCXZhciBpc09ubHlCdXR0b25zID0gdHJ1ZTsKCQkJCXZhciBncm91cEVsOwoKCQkJCSQuZWFjaCh0aGlzLnNwbGl0KCcsJyksIGZ1bmN0aW9uKGosIGJ1dHRvbk5hbWUpIHsKCQkJCQl2YXIgY3VzdG9tQnV0dG9uUHJvcHM7CgkJCQkJdmFyIHZpZXdTcGVjOwoJCQkJCXZhciBidXR0b25DbGljazsKCQkJCQl2YXIgb3ZlcnJpZGVUZXh0OyAvLyB0ZXh0IGV4cGxpY2l0bHkgc2V0IGJ5IGNhbGVuZGFyJ3MgY29uc3RydWN0b3Igb3B0aW9ucy4gb3ZlcmNvbWVzIGljb25zCgkJCQkJdmFyIGRlZmF1bHRUZXh0OwoJCQkJCXZhciB0aGVtZUljb247CgkJCQkJdmFyIG5vcm1hbEljb247CgkJCQkJdmFyIGlubmVySHRtbDsKCQkJCQl2YXIgY2xhc3NlczsKCQkJCQl2YXIgYnV0dG9uOyAvLyB0aGUgZWxlbWVudAoKCQkJCQlpZiAoYnV0dG9uTmFtZSA9PSAndGl0bGUnKSB7CgkJCQkJCWdyb3VwQ2hpbGRyZW4gPSBncm91cENoaWxkcmVuLmFkZCgkKCc8aDI+Jm5ic3A7PC9oMj4nKSk7IC8vIHdlIGFsd2F5cyB3YW50IGl0IHRvIHRha2UgdXAgaGVpZ2h0CgkJCQkJCWlzT25seUJ1dHRvbnMgPSBmYWxzZTsKCQkJCQl9CgkJCQkJZWxzZSB7CgkJCQkJCWlmICgoY3VzdG9tQnV0dG9uUHJvcHMgPSAoY2FsZW5kYXIub3B0aW9ucy5jdXN0b21CdXR0b25zIHx8IHt9KVtidXR0b25OYW1lXSkpIHsKCQkJCQkJCWJ1dHRvbkNsaWNrID0gZnVuY3Rpb24oZXYpIHsKCQkJCQkJCQlpZiAoY3VzdG9tQnV0dG9uUHJvcHMuY2xpY2spIHsKCQkJCQkJCQkJY3VzdG9tQnV0dG9uUHJvcHMuY2xpY2suY2FsbChidXR0b25bMF0sIGV2KTsKCQkJCQkJCQl9CgkJCQkJCQl9OwoJCQkJCQkJb3ZlcnJpZGVUZXh0ID0gJyc7IC8vIGljb25zIHdpbGwgb3ZlcnJpZGUgdGV4dAoJCQkJCQkJZGVmYXVsdFRleHQgPSBjdXN0b21CdXR0b25Qcm9wcy50ZXh0OwoJCQkJCQl9CgkJCQkJCWVsc2UgaWYgKCh2aWV3U3BlYyA9IGNhbGVuZGFyLmdldFZpZXdTcGVjKGJ1dHRvbk5hbWUpKSkgewoJCQkJCQkJYnV0dG9uQ2xpY2sgPSBmdW5jdGlvbigpIHsKCQkJCQkJCQljYWxlbmRhci5jaGFuZ2VWaWV3KGJ1dHRvbk5hbWUpOwoJCQkJCQkJfTsKCQkJCQkJCXZpZXdzV2l0aEJ1dHRvbnMucHVzaChidXR0b25OYW1lKTsKCQkJCQkJCW92ZXJyaWRlVGV4dCA9IHZpZXdTcGVjLmJ1dHRvblRleHRPdmVycmlkZTsKCQkJCQkJCWRlZmF1bHRUZXh0ID0gdmlld1NwZWMuYnV0dG9uVGV4dERlZmF1bHQ7CgkJCQkJCX0KCQkJCQkJZWxzZSBpZiAoY2FsZW5kYXJbYnV0dG9uTmFtZV0pIHsgLy8gYSBjYWxlbmRhciBtZXRob2QKCQkJCQkJCWJ1dHRvbkNsaWNrID0gZnVuY3Rpb24oKSB7CgkJCQkJCQkJY2FsZW5kYXJbYnV0dG9uTmFtZV0oKTsKCQkJCQkJCX07CgkJCQkJCQlvdmVycmlkZVRleHQgPSAoY2FsZW5kYXIub3ZlcnJpZGVzLmJ1dHRvblRleHQgfHwge30pW2J1dHRvbk5hbWVdOwoJCQkJCQkJZGVmYXVsdFRleHQgPSBjYWxlbmRhci5vcHRpb25zLmJ1dHRvblRleHRbYnV0dG9uTmFtZV07IC8vIGV2ZXJ5dGhpbmcgZWxzZSBpcyBjb25zaWRlcmVkIGRlZmF1bHQKCQkJCQkJfQoKCQkJCQkJaWYgKGJ1dHRvbkNsaWNrKSB7CgoJCQkJCQkJdGhlbWVJY29uID0KCQkJCQkJCQljdXN0b21CdXR0b25Qcm9wcyA/CgkJCQkJCQkJCWN1c3RvbUJ1dHRvblByb3BzLnRoZW1lSWNvbiA6CgkJCQkJCQkJCWNhbGVuZGFyLm9wdGlvbnMudGhlbWVCdXR0b25JY29uc1tidXR0b25OYW1lXTsKCgkJCQkJCQlub3JtYWxJY29uID0KCQkJCQkJCQljdXN0b21CdXR0b25Qcm9wcyA/CgkJCQkJCQkJCWN1c3RvbUJ1dHRvblByb3BzLmljb24gOgoJCQkJCQkJCQljYWxlbmRhci5vcHRpb25zLmJ1dHRvbkljb25zW2J1dHRvbk5hbWVdOwoKCQkJCQkJCWlmIChvdmVycmlkZVRleHQpIHsKCQkJCQkJCQlpbm5lckh0bWwgPSBodG1sRXNjYXBlKG92ZXJyaWRlVGV4dCk7CgkJCQkJCQl9CgkJCQkJCQllbHNlIGlmICh0aGVtZUljb24gJiYgY2FsZW5kYXIub3B0aW9ucy50aGVtZSkgewoJCQkJCQkJCWlubmVySHRtbCA9ICI8c3BhbiBjbGFzcz0ndWktaWNvbiB1aS1pY29uLSIgKyB0aGVtZUljb24gKyAiJz48L3NwYW4+IjsKCQkJCQkJCX0KCQkJCQkJCWVsc2UgaWYgKG5vcm1hbEljb24gJiYgIWNhbGVuZGFyLm9wdGlvbnMudGhlbWUpIHsKCQkJCQkJCQlpbm5lckh0bWwgPSAiPHNwYW4gY2xhc3M9J2ZjLWljb24gZmMtaWNvbi0iICsgbm9ybWFsSWNvbiArICInPjwvc3Bhbj4iOwoJCQkJCQkJfQoJCQkJCQkJZWxzZSB7CgkJCQkJCQkJaW5uZXJIdG1sID0gaHRtbEVzY2FwZShkZWZhdWx0VGV4dCk7CgkJCQkJCQl9CgoJCQkJCQkJY2xhc3NlcyA9IFsKCQkJCQkJCQknZmMtJyArIGJ1dHRvbk5hbWUgKyAnLWJ1dHRvbicsCgkJCQkJCQkJdG0gKyAnLWJ1dHRvbicsCgkJCQkJCQkJdG0gKyAnLXN0YXRlLWRlZmF1bHQnCgkJCQkJCQldOwoKCQkJCQkJCWJ1dHRvbiA9ICQoIC8vIHR5cGU9ImJ1dHRvbiIgc28gdGhhdCBpdCBkb2Vzbid0IHN1Ym1pdCBhIGZvcm0KCQkJCQkJCQknPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSInICsgY2xhc3Nlcy5qb2luKCcgJykgKyAnIj4nICsKCQkJCQkJCQkJaW5uZXJIdG1sICsKCQkJCQkJCQknPC9idXR0b24+JwoJCQkJCQkJCSkKCQkJCQkJCQkuY2xpY2soZnVuY3Rpb24oZXYpIHsKCQkJCQkJCQkJLy8gZG9uJ3QgcHJvY2VzcyBjbGlja3MgZm9yIGRpc2FibGVkIGJ1dHRvbnMKCQkJCQkJCQkJaWYgKCFidXR0b24uaGFzQ2xhc3ModG0gKyAnLXN0YXRlLWRpc2FibGVkJykpIHsKCgkJCQkJCQkJCQlidXR0b25DbGljayhldik7CgoJCQkJCQkJCQkJLy8gYWZ0ZXIgdGhlIGNsaWNrIGFjdGlvbiwgaWYgdGhlIGJ1dHRvbiBiZWNvbWVzIHRoZSAiYWN0aXZlIiB0YWIsIG9yIGRpc2FibGVkLAoJCQkJCQkJCQkJLy8gaXQgc2hvdWxkIG5ldmVyIGhhdmUgYSBob3ZlciBjbGFzcywgc28gcmVtb3ZlIGl0IG5vdy4KCQkJCQkJCQkJCWlmICgKCQkJCQkJCQkJCQlidXR0b24uaGFzQ2xhc3ModG0gKyAnLXN0YXRlLWFjdGl2ZScpIHx8CgkJCQkJCQkJCQkJYnV0dG9uLmhhc0NsYXNzKHRtICsgJy1zdGF0ZS1kaXNhYmxlZCcpCgkJCQkJCQkJCQkpIHsKCQkJCQkJCQkJCQlidXR0b24ucmVtb3ZlQ2xhc3ModG0gKyAnLXN0YXRlLWhvdmVyJyk7CgkJCQkJCQkJCQl9CgkJCQkJCQkJCX0KCQkJCQkJCQl9KQoJCQkJCQkJCS5tb3VzZWRvd24oZnVuY3Rpb24oKSB7CgkJCQkJCQkJCS8vIHRoZSAqZG93biogZWZmZWN0IChtb3VzZSBwcmVzc2VkIGluKS4KCQkJCQkJCQkJLy8gb25seSBvbiBidXR0b25zIHRoYXQgYXJlIG5vdCB0aGUgImFjdGl2ZSIgdGFiLCBvciBkaXNhYmxlZAoJCQkJCQkJCQlidXR0b24KCQkJCQkJCQkJCS5ub3QoJy4nICsgdG0gKyAnLXN0YXRlLWFjdGl2ZScpCgkJCQkJCQkJCQkubm90KCcuJyArIHRtICsgJy1zdGF0ZS1kaXNhYmxlZCcpCgkJCQkJCQkJCQkuYWRkQ2xhc3ModG0gKyAnLXN0YXRlLWRvd24nKTsKCQkJCQkJCQl9KQoJCQkJCQkJCS5tb3VzZXVwKGZ1bmN0aW9uKCkgewoJCQkJCQkJCQkvLyB1bmRvIHRoZSAqZG93biogZWZmZWN0CgkJCQkJCQkJCWJ1dHRvbi5yZW1vdmVDbGFzcyh0bSArICctc3RhdGUtZG93bicpOwoJCQkJCQkJCX0pCgkJCQkJCQkJLmhvdmVyKAoJCQkJCQkJCQlmdW5jdGlvbigpIHsKCQkJCQkJCQkJCS8vIHRoZSAqaG92ZXIqIGVmZmVjdC4KCQkJCQkJCQkJCS8vIG9ubHkgb24gYnV0dG9ucyB0aGF0IGFyZSBub3QgdGhlICJhY3RpdmUiIHRhYiwgb3IgZGlzYWJsZWQKCQkJCQkJCQkJCWJ1dHRvbgoJCQkJCQkJCQkJCS5ub3QoJy4nICsgdG0gKyAnLXN0YXRlLWFjdGl2ZScpCgkJCQkJCQkJCQkJLm5vdCgnLicgKyB0bSArICctc3RhdGUtZGlzYWJsZWQnKQoJCQkJCQkJCQkJCS5hZGRDbGFzcyh0bSArICctc3RhdGUtaG92ZXInKTsKCQkJCQkJCQkJfSwKCQkJCQkJCQkJZnVuY3Rpb24oKSB7CgkJCQkJCQkJCQkvLyB1bmRvIHRoZSAqaG92ZXIqIGVmZmVjdAoJCQkJCQkJCQkJYnV0dG9uCgkJCQkJCQkJCQkJLnJlbW92ZUNsYXNzKHRtICsgJy1zdGF0ZS1ob3ZlcicpCgkJCQkJCQkJCQkJLnJlbW92ZUNsYXNzKHRtICsgJy1zdGF0ZS1kb3duJyk7IC8vIGlmIG1vdXNlbGVhdmUgaGFwcGVucyBiZWZvcmUgbW91c2V1cAoJCQkJCQkJCQl9CgkJCQkJCQkJKTsKCgkJCQkJCQlncm91cENoaWxkcmVuID0gZ3JvdXBDaGlsZHJlbi5hZGQoYnV0dG9uKTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0pOwoKCQkJCWlmIChpc09ubHlCdXR0b25zKSB7CgkJCQkJZ3JvdXBDaGlsZHJlbgoJCQkJCQkuZmlyc3QoKS5hZGRDbGFzcyh0bSArICctY29ybmVyLWxlZnQnKS5lbmQoKQoJCQkJCQkubGFzdCgpLmFkZENsYXNzKHRtICsgJy1jb3JuZXItcmlnaHQnKS5lbmQoKTsKCQkJCX0KCgkJCQlpZiAoZ3JvdXBDaGlsZHJlbi5sZW5ndGggPiAxKSB7CgkJCQkJZ3JvdXBFbCA9ICQoJzxkaXYvPicpOwoJCQkJCWlmIChpc09ubHlCdXR0b25zKSB7CgkJCQkJCWdyb3VwRWwuYWRkQ2xhc3MoJ2ZjLWJ1dHRvbi1ncm91cCcpOwoJCQkJCX0KCQkJCQlncm91cEVsLmFwcGVuZChncm91cENoaWxkcmVuKTsKCQkJCQlzZWN0aW9uRWwuYXBwZW5kKGdyb3VwRWwpOwoJCQkJfQoJCQkJZWxzZSB7CgkJCQkJc2VjdGlvbkVsLmFwcGVuZChncm91cENoaWxkcmVuKTsgLy8gMSBvciAwIGNoaWxkcmVuCgkJCQl9CgkJCX0pOwoJCX0KCgkJcmV0dXJuIHNlY3Rpb25FbDsKCX0KCgoJZnVuY3Rpb24gdXBkYXRlVGl0bGUodGV4dCkgewoJCWlmIChlbCkgewoJCQllbC5maW5kKCdoMicpLnRleHQodGV4dCk7CgkJfQoJfQoKCglmdW5jdGlvbiBhY3RpdmF0ZUJ1dHRvbihidXR0b25OYW1lKSB7CgkJaWYgKGVsKSB7CgkJCWVsLmZpbmQoJy5mYy0nICsgYnV0dG9uTmFtZSArICctYnV0dG9uJykKCQkJCS5hZGRDbGFzcyh0bSArICctc3RhdGUtYWN0aXZlJyk7CgkJfQoJfQoKCglmdW5jdGlvbiBkZWFjdGl2YXRlQnV0dG9uKGJ1dHRvbk5hbWUpIHsKCQlpZiAoZWwpIHsKCQkJZWwuZmluZCgnLmZjLScgKyBidXR0b25OYW1lICsgJy1idXR0b24nKQoJCQkJLnJlbW92ZUNsYXNzKHRtICsgJy1zdGF0ZS1hY3RpdmUnKTsKCQl9Cgl9CgoKCWZ1bmN0aW9uIGRpc2FibGVCdXR0b24oYnV0dG9uTmFtZSkgewoJCWlmIChlbCkgewoJCQllbC5maW5kKCcuZmMtJyArIGJ1dHRvbk5hbWUgKyAnLWJ1dHRvbicpCgkJCQkucHJvcCgnZGlzYWJsZWQnLCB0cnVlKQoJCQkJLmFkZENsYXNzKHRtICsgJy1zdGF0ZS1kaXNhYmxlZCcpOwoJCX0KCX0KCgoJZnVuY3Rpb24gZW5hYmxlQnV0dG9uKGJ1dHRvbk5hbWUpIHsKCQlpZiAoZWwpIHsKCQkJZWwuZmluZCgnLmZjLScgKyBidXR0b25OYW1lICsgJy1idXR0b24nKQoJCQkJLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpCgkJCQkucmVtb3ZlQ2xhc3ModG0gKyAnLXN0YXRlLWRpc2FibGVkJyk7CgkJfQoJfQoKCglmdW5jdGlvbiBnZXRWaWV3c1dpdGhCdXR0b25zKCkgewoJCXJldHVybiB2aWV3c1dpdGhCdXR0b25zOwoJfQoKfQoKOzsKCnZhciBDYWxlbmRhciA9IEZDLkNhbGVuZGFyID0gQ2xhc3MuZXh0ZW5kKHsKCglkaXJEZWZhdWx0czogbnVsbCwgLy8gb3B0aW9uIGRlZmF1bHRzIHJlbGF0ZWQgdG8gTFRSIG9yIFJUTAoJbG9jYWxlRGVmYXVsdHM6IG51bGwsIC8vIG9wdGlvbiBkZWZhdWx0cyByZWxhdGVkIHRvIGN1cnJlbnQgbG9jYWxlCglvdmVycmlkZXM6IG51bGwsIC8vIG9wdGlvbiBvdmVycmlkZXMgZ2l2ZW4gdG8gdGhlIGZ1bGxDYWxlbmRhciBjb25zdHJ1Y3RvcgoJZHluYW1pY092ZXJyaWRlczogbnVsbCwgLy8gb3B0aW9ucyBzZXQgd2l0aCBkeW5hbWljIHNldHRlciBtZXRob2QuIGhpZ2hlciBwcmVjZWRlbmNlIHRoYW4gdmlldyBvdmVycmlkZXMuCglvcHRpb25zOiBudWxsLCAvLyBhbGwgZGVmYXVsdHMgY29tYmluZWQgd2l0aCBvdmVycmlkZXMKCXZpZXdTcGVjQ2FjaGU6IG51bGwsIC8vIGNhY2hlIG9mIHZpZXcgZGVmaW5pdGlvbnMKCXZpZXc6IG51bGwsIC8vIGN1cnJlbnQgVmlldyBvYmplY3QKCWN1cnJlbnREYXRlOiBudWxsLCAvLyB1bnpvbmVkIG1vbWVudC4gcHJpdmF0ZSAocHVibGljIEFQSSBzaG91bGQgdXNlIGdldERhdGUgaW5zdGVhZCkKCWhlYWRlcjogbnVsbCwKCWZvb3RlcjogbnVsbCwKCWxvYWRpbmdMZXZlbDogMCwgLy8gbnVtYmVyIG9mIHNpbXVsdGFuZW91cyBsb2FkaW5nIHRhc2tzCgoKCS8vIGEgbG90IG9mIHRoaXMgY2xhc3MnIE9PUCBsb2dpYyBpcyBzY29wZWQgd2l0aGluIHRoaXMgY29uc3RydWN0b3IgZnVuY3Rpb24sCgkvLyBidXQgaW4gdGhlIGZ1dHVyZSwgd3JpdGUgaW5kaXZpZHVhbCBtZXRob2RzIG9uIHRoZSBwcm90b3R5cGUuCgljb25zdHJ1Y3RvcjogQ2FsZW5kYXJfY29uc3RydWN0b3IsCgoKCS8vIFN1YmNsYXNzZXMgY2FuIG92ZXJyaWRlIHRoaXMgZm9yIGluaXRpYWxpemF0aW9uIGxvZ2ljIGFmdGVyIHRoZSBjb25zdHJ1Y3RvciBoYXMgYmVlbiBjYWxsZWQKCWluaXRpYWxpemU6IGZ1bmN0aW9uKCkgewoJfSwKCgoJLy8gQ29tcHV0ZXMgdGhlIGZsYXR0ZW5lZCBvcHRpb25zIGhhc2ggZm9yIHRoZSBjYWxlbmRhciBhbmQgYXNzaWducyB0byBgdGhpcy5vcHRpb25zYC4KCS8vIEFzc3VtZXMgdGhpcy5vdmVycmlkZXMgYW5kIHRoaXMuZHluYW1pY092ZXJyaWRlcyBoYXZlIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZC4KCXBvcHVsYXRlT3B0aW9uc0hhc2g6IGZ1bmN0aW9uKCkgewoJCXZhciBsb2NhbGUsIGxvY2FsZURlZmF1bHRzOwoJCXZhciBpc1JUTCwgZGlyRGVmYXVsdHM7CgoJCWxvY2FsZSA9IGZpcnN0RGVmaW5lZCggLy8gZXhwbGljaXQgbG9jYWxlIG9wdGlvbiBnaXZlbj8KCQkJdGhpcy5keW5hbWljT3ZlcnJpZGVzLmxvY2FsZSwKCQkJdGhpcy5vdmVycmlkZXMubG9jYWxlCgkJKTsKCQlsb2NhbGVEZWZhdWx0cyA9IGxvY2FsZU9wdGlvbkhhc2hbbG9jYWxlXTsKCQlpZiAoIWxvY2FsZURlZmF1bHRzKSB7IC8vIGV4cGxpY2l0IGxvY2FsZSBvcHRpb24gbm90IGdpdmVuIG9yIGludmFsaWQ/CgkJCWxvY2FsZSA9IENhbGVuZGFyLmRlZmF1bHRzLmxvY2FsZTsKCQkJbG9jYWxlRGVmYXVsdHMgPSBsb2NhbGVPcHRpb25IYXNoW2xvY2FsZV0gfHwge307CgkJfQoKCQlpc1JUTCA9IGZpcnN0RGVmaW5lZCggLy8gYmFzZWQgb24gb3B0aW9ucyBjb21wdXRlZCBzbyBmYXIsIGlzIGRpcmVjdGlvbiBSVEw/CgkJCXRoaXMuZHluYW1pY092ZXJyaWRlcy5pc1JUTCwKCQkJdGhpcy5vdmVycmlkZXMuaXNSVEwsCgkJCWxvY2FsZURlZmF1bHRzLmlzUlRMLAoJCQlDYWxlbmRhci5kZWZhdWx0cy5pc1JUTAoJCSk7CgkJZGlyRGVmYXVsdHMgPSBpc1JUTCA/IENhbGVuZGFyLnJ0bERlZmF1bHRzIDoge307CgoJCXRoaXMuZGlyRGVmYXVsdHMgPSBkaXJEZWZhdWx0czsKCQl0aGlzLmxvY2FsZURlZmF1bHRzID0gbG9jYWxlRGVmYXVsdHM7CgkJdGhpcy5vcHRpb25zID0gbWVyZ2VPcHRpb25zKFsgLy8gbWVyZ2UgZGVmYXVsdHMgYW5kIG92ZXJyaWRlcy4gbG93ZXN0IHRvIGhpZ2hlc3QgcHJlY2VkZW5jZQoJCQlDYWxlbmRhci5kZWZhdWx0cywgLy8gZ2xvYmFsIGRlZmF1bHRzCgkJCWRpckRlZmF1bHRzLAoJCQlsb2NhbGVEZWZhdWx0cywKCQkJdGhpcy5vdmVycmlkZXMsCgkJCXRoaXMuZHluYW1pY092ZXJyaWRlcwoJCV0pOwoJCXBvcHVsYXRlSW5zdGFuY2VDb21wdXRhYmxlT3B0aW9ucyh0aGlzLm9wdGlvbnMpOyAvLyBmaWxsIGluIGdhcHMgd2l0aCBjb21wdXRlZCBvcHRpb25zCgl9LAoKCgkvLyBHZXRzIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0byBjcmVhdGUgYSB2aWV3LiBXaWxsIHVzZSBhIGNhY2hlLgoJZ2V0Vmlld1NwZWM6IGZ1bmN0aW9uKHZpZXdUeXBlKSB7CgkJdmFyIGNhY2hlID0gdGhpcy52aWV3U3BlY0NhY2hlOwoKCQlyZXR1cm4gY2FjaGVbdmlld1R5cGVdIHx8IChjYWNoZVt2aWV3VHlwZV0gPSB0aGlzLmJ1aWxkVmlld1NwZWModmlld1R5cGUpKTsKCX0sCgoKCS8vIEdpdmVuIGEgZHVyYXRpb24gc2luZ3VsYXIgdW5pdCwgbGlrZSAid2VlayIgb3IgImRheSIsIGZpbmRzIGEgbWF0Y2hpbmcgdmlldyBzcGVjLgoJLy8gUHJlZmVyZW5jZSBpcyBnaXZlbiB0byB2aWV3cyB0aGF0IGhhdmUgY29ycmVzcG9uZGluZyBidXR0b25zLgoJZ2V0VW5pdFZpZXdTcGVjOiBmdW5jdGlvbih1bml0KSB7CgkJdmFyIHZpZXdUeXBlczsKCQl2YXIgaTsKCQl2YXIgc3BlYzsKCgkJaWYgKCQuaW5BcnJheSh1bml0LCB1bml0c0Rlc2MpICE9IC0xKSB7CgoJCQkvLyBwdXQgdmlld3MgdGhhdCBoYXZlIGJ1dHRvbnMgZmlyc3QuIHRoZXJlIHdpbGwgYmUgZHVwbGljYXRlcywgYnV0IG9oIHdlbGwKCQkJdmlld1R5cGVzID0gdGhpcy5oZWFkZXIuZ2V0Vmlld3NXaXRoQnV0dG9ucygpOyAvLyBUT0RPOiBpbmNsdWRlIGZvb3RlciBhcyB3ZWxsPwoJCQkkLmVhY2goRkMudmlld3MsIGZ1bmN0aW9uKHZpZXdUeXBlKSB7IC8vIGFsbCB2aWV3cwoJCQkJdmlld1R5cGVzLnB1c2godmlld1R5cGUpOwoJCQl9KTsKCgkJCWZvciAoaSA9IDA7IGkgPCB2aWV3VHlwZXMubGVuZ3RoOyBpKyspIHsKCQkJCXNwZWMgPSB0aGlzLmdldFZpZXdTcGVjKHZpZXdUeXBlc1tpXSk7CgkJCQlpZiAoc3BlYykgewoJCQkJCWlmIChzcGVjLnNpbmdsZVVuaXQgPT0gdW5pdCkgewoJCQkJCQlyZXR1cm4gc3BlYzsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9Cgl9LAoKCgkvLyBCdWlsZHMgYW4gb2JqZWN0IHdpdGggaW5mb3JtYXRpb24gb24gaG93IHRvIGNyZWF0ZSBhIGdpdmVuIHZpZXcKCWJ1aWxkVmlld1NwZWM6IGZ1bmN0aW9uKHJlcXVlc3RlZFZpZXdUeXBlKSB7CgkJdmFyIHZpZXdPdmVycmlkZXMgPSB0aGlzLm92ZXJyaWRlcy52aWV3cyB8fCB7fTsKCQl2YXIgc3BlY0NoYWluID0gW107IC8vIGZvciB0aGUgdmlldy4gbG93ZXN0IHRvIGhpZ2hlc3QgcHJpb3JpdHkKCQl2YXIgZGVmYXVsdHNDaGFpbiA9IFtdOyAvLyBmb3IgdGhlIHZpZXcuIGxvd2VzdCB0byBoaWdoZXN0IHByaW9yaXR5CgkJdmFyIG92ZXJyaWRlc0NoYWluID0gW107IC8vIGZvciB0aGUgdmlldy4gbG93ZXN0IHRvIGhpZ2hlc3QgcHJpb3JpdHkKCQl2YXIgdmlld1R5cGUgPSByZXF1ZXN0ZWRWaWV3VHlwZTsKCQl2YXIgc3BlYzsgLy8gZm9yIHRoZSB2aWV3CgkJdmFyIG92ZXJyaWRlczsgLy8gZm9yIHRoZSB2aWV3CgkJdmFyIGR1cmF0aW9uSW5wdXQ7CgkJdmFyIGR1cmF0aW9uOwoJCXZhciB1bml0OwoKCQkvLyBpdGVyYXRlIGZyb20gdGhlIHNwZWNpZmljIHZpZXcgZGVmaW5pdGlvbiB0byBhIG1vcmUgZ2VuZXJhbCBvbmUgdW50aWwgd2UgaGl0IGFuIGFjdHVhbCBWaWV3IGNsYXNzCgkJd2hpbGUgKHZpZXdUeXBlKSB7CgkJCXNwZWMgPSBmY1ZpZXdzW3ZpZXdUeXBlXTsKCQkJb3ZlcnJpZGVzID0gdmlld092ZXJyaWRlc1t2aWV3VHlwZV07CgkJCXZpZXdUeXBlID0gbnVsbDsgLy8gY2xlYXIuIG1pZ2h0IHJlcG9wdWxhdGUgZm9yIGFub3RoZXIgaXRlcmF0aW9uCgoJCQlpZiAodHlwZW9mIHNwZWMgPT09ICdmdW5jdGlvbicpIHsgLy8gVE9ETzogZGVwcmVjYXRlCgkJCQlzcGVjID0geyAnY2xhc3MnOiBzcGVjIH07CgkJCX0KCgkJCWlmIChzcGVjKSB7CgkJCQlzcGVjQ2hhaW4udW5zaGlmdChzcGVjKTsKCQkJCWRlZmF1bHRzQ2hhaW4udW5zaGlmdChzcGVjLmRlZmF1bHRzIHx8IHt9KTsKCQkJCWR1cmF0aW9uSW5wdXQgPSBkdXJhdGlvbklucHV0IHx8IHNwZWMuZHVyYXRpb247CgkJCQl2aWV3VHlwZSA9IHZpZXdUeXBlIHx8IHNwZWMudHlwZTsKCQkJfQoKCQkJaWYgKG92ZXJyaWRlcykgewoJCQkJb3ZlcnJpZGVzQ2hhaW4udW5zaGlmdChvdmVycmlkZXMpOyAvLyB2aWV3LXNwZWNpZmljIG9wdGlvbiBoYXNoZXMgaGF2ZSBvcHRpb25zIGF0IHplcm8tbGV2ZWwKCQkJCWR1cmF0aW9uSW5wdXQgPSBkdXJhdGlvbklucHV0IHx8IG92ZXJyaWRlcy5kdXJhdGlvbjsKCQkJCXZpZXdUeXBlID0gdmlld1R5cGUgfHwgb3ZlcnJpZGVzLnR5cGU7CgkJCX0KCQl9CgoJCXNwZWMgPSBtZXJnZVByb3BzKHNwZWNDaGFpbik7CgkJc3BlYy50eXBlID0gcmVxdWVzdGVkVmlld1R5cGU7CgkJaWYgKCFzcGVjWydjbGFzcyddKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCS8vIGZhbGwgYmFjayB0byB0b3AtbGV2ZWwgYGR1cmF0aW9uYCBvcHRpb24KCQlkdXJhdGlvbklucHV0ID0gZHVyYXRpb25JbnB1dCB8fAoJCQl0aGlzLmR5bmFtaWNPdmVycmlkZXMuZHVyYXRpb24gfHwKCQkJdGhpcy5vdmVycmlkZXMuZHVyYXRpb247CgoJCWlmIChkdXJhdGlvbklucHV0KSB7CgkJCWR1cmF0aW9uID0gbW9tZW50LmR1cmF0aW9uKGR1cmF0aW9uSW5wdXQpOwoKCQkJaWYgKGR1cmF0aW9uLnZhbHVlT2YoKSkgeyAvLyB2YWxpZD8KCgkJCQl1bml0ID0gY29tcHV0ZUR1cmF0aW9uR3JlYXRlc3RVbml0KGR1cmF0aW9uLCBkdXJhdGlvbklucHV0KTsKCgkJCQlzcGVjLmR1cmF0aW9uID0gZHVyYXRpb247CgkJCQlzcGVjLmR1cmF0aW9uVW5pdCA9IHVuaXQ7CgoJCQkJLy8gdmlldyBpcyBhIHNpbmdsZS11bml0IGR1cmF0aW9uLCBsaWtlICJ3ZWVrIiBvciAiZGF5IgoJCQkJLy8gaW5jb3Jwb3JhdGUgb3B0aW9ucyBmb3IgdGhpcy4gbG93ZXN0IHByaW9yaXR5CgkJCQlpZiAoZHVyYXRpb24uYXModW5pdCkgPT09IDEpIHsKCQkJCQlzcGVjLnNpbmdsZVVuaXQgPSB1bml0OwoJCQkJCW92ZXJyaWRlc0NoYWluLnVuc2hpZnQodmlld092ZXJyaWRlc1t1bml0XSB8fCB7fSk7CgkJCQl9CgkJCX0KCQl9CgoJCXNwZWMuZGVmYXVsdHMgPSBtZXJnZU9wdGlvbnMoZGVmYXVsdHNDaGFpbik7CgkJc3BlYy5vdmVycmlkZXMgPSBtZXJnZU9wdGlvbnMob3ZlcnJpZGVzQ2hhaW4pOwoKCQl0aGlzLmJ1aWxkVmlld1NwZWNPcHRpb25zKHNwZWMpOwoJCXRoaXMuYnVpbGRWaWV3U3BlY0J1dHRvblRleHQoc3BlYywgcmVxdWVzdGVkVmlld1R5cGUpOwoKCQlyZXR1cm4gc3BlYzsKCX0sCgoKCS8vIEJ1aWxkcyBhbmQgYXNzaWducyBhIHZpZXcgc3BlYydzIG9wdGlvbnMgb2JqZWN0IGZyb20gaXRzIGFscmVhZHktYXNzaWduZWQgZGVmYXVsdHMgYW5kIG92ZXJyaWRlcwoJYnVpbGRWaWV3U3BlY09wdGlvbnM6IGZ1bmN0aW9uKHNwZWMpIHsKCQlzcGVjLm9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoWyAvLyBsb3dlc3QgdG8gaGlnaGVzdCBwcmlvcml0eQoJCQlDYWxlbmRhci5kZWZhdWx0cywgLy8gZ2xvYmFsIGRlZmF1bHRzCgkJCXNwZWMuZGVmYXVsdHMsIC8vIHZpZXcncyBkZWZhdWx0cyAoZnJvbSBWaWV3U3ViY2xhc3MuZGVmYXVsdHMpCgkJCXRoaXMuZGlyRGVmYXVsdHMsCgkJCXRoaXMubG9jYWxlRGVmYXVsdHMsIC8vIGxvY2FsZSBhbmQgZGlyIHRha2UgcHJlY2VkZW5jZSBvdmVyIHZpZXcncyBkZWZhdWx0cyEKCQkJdGhpcy5vdmVycmlkZXMsIC8vIGNhbGVuZGFyJ3Mgb3ZlcnJpZGVzIChvcHRpb25zIGdpdmVuIHRvIGNvbnN0cnVjdG9yKQoJCQlzcGVjLm92ZXJyaWRlcywgLy8gdmlldydzIG92ZXJyaWRlcyAodmlldy1zcGVjaWZpYyBvcHRpb25zKQoJCQl0aGlzLmR5bmFtaWNPdmVycmlkZXMgLy8gZHluYW1pY2FsbHkgc2V0IHZpYSBzZXR0ZXIuIGhpZ2hlc3QgcHJlY2VkZW5jZQoJCV0pOwoJCXBvcHVsYXRlSW5zdGFuY2VDb21wdXRhYmxlT3B0aW9ucyhzcGVjLm9wdGlvbnMpOwoJfSwKCgoJLy8gQ29tcHV0ZXMgYW5kIGFzc2lnbnMgYSB2aWV3IHNwZWMncyBidXR0b25UZXh0LXJlbGF0ZWQgb3B0aW9ucwoJYnVpbGRWaWV3U3BlY0J1dHRvblRleHQ6IGZ1bmN0aW9uKHNwZWMsIHJlcXVlc3RlZFZpZXdUeXBlKSB7CgoJCS8vIGdpdmVuIGFuIG9wdGlvbnMgb2JqZWN0IHdpdGggYSBwb3NzaWJsZSBgYnV0dG9uVGV4dGAgaGFzaCwgbG9va3VwIHRoZSBidXR0b25UZXh0IGZvciB0aGUKCQkvLyByZXF1ZXN0ZWQgdmlldywgZmFsbGluZyBiYWNrIHRvIGEgZ2VuZXJpYyB1bml0IGVudHJ5IGxpa2UgIndlZWsiIG9yICJkYXkiCgkJZnVuY3Rpb24gcXVlcnlCdXR0b25UZXh0KG9wdGlvbnMpIHsKCQkJdmFyIGJ1dHRvblRleHQgPSBvcHRpb25zLmJ1dHRvblRleHQgfHwge307CgkJCXJldHVybiBidXR0b25UZXh0W3JlcXVlc3RlZFZpZXdUeXBlXSB8fAoJCQkJLy8gdmlldyBjYW4gZGVjaWRlIHRvIGxvb2sgdXAgYSBjZXJ0YWluIGtleQoJCQkJKHNwZWMuYnV0dG9uVGV4dEtleSA/IGJ1dHRvblRleHRbc3BlYy5idXR0b25UZXh0S2V5XSA6IG51bGwpIHx8CgkJCQkvLyBhIGtleSBsaWtlICJtb250aCIKCQkJCShzcGVjLnNpbmdsZVVuaXQgPyBidXR0b25UZXh0W3NwZWMuc2luZ2xlVW5pdF0gOiBudWxsKTsKCQl9CgoJCS8vIGhpZ2hlc3QgdG8gbG93ZXN0IHByaW9yaXR5CgkJc3BlYy5idXR0b25UZXh0T3ZlcnJpZGUgPQoJCQlxdWVyeUJ1dHRvblRleHQodGhpcy5keW5hbWljT3ZlcnJpZGVzKSB8fAoJCQlxdWVyeUJ1dHRvblRleHQodGhpcy5vdmVycmlkZXMpIHx8IC8vIGNvbnN0cnVjdG9yLXNwZWNpZmllZCBidXR0b25UZXh0IGxvb2t1cCBoYXNoIHRha2VzIHByZWNlZGVuY2UKCQkJc3BlYy5vdmVycmlkZXMuYnV0dG9uVGV4dDsgLy8gYGJ1dHRvblRleHRgIGZvciB2aWV3LXNwZWNpZmljIG9wdGlvbnMgaXMgYSBzdHJpbmcKCgkJLy8gaGlnaGVzdCB0byBsb3dlc3QgcHJpb3JpdHkuIG1pcnJvcnMgYnVpbGRWaWV3U3BlY09wdGlvbnMKCQlzcGVjLmJ1dHRvblRleHREZWZhdWx0ID0KCQkJcXVlcnlCdXR0b25UZXh0KHRoaXMubG9jYWxlRGVmYXVsdHMpIHx8CgkJCXF1ZXJ5QnV0dG9uVGV4dCh0aGlzLmRpckRlZmF1bHRzKSB8fAoJCQlzcGVjLmRlZmF1bHRzLmJ1dHRvblRleHQgfHwgLy8gYSBzaW5nbGUgc3RyaW5nLiBmcm9tIFZpZXdTdWJjbGFzcy5kZWZhdWx0cwoJCQlxdWVyeUJ1dHRvblRleHQoQ2FsZW5kYXIuZGVmYXVsdHMpIHx8CgkJCShzcGVjLmR1cmF0aW9uID8gdGhpcy5odW1hbml6ZUR1cmF0aW9uKHNwZWMuZHVyYXRpb24pIDogbnVsbCkgfHwgLy8gbGlrZSAiMyBkYXlzIgoJCQlyZXF1ZXN0ZWRWaWV3VHlwZTsgLy8gZmFsbCBiYWNrIHRvIGdpdmVuIHZpZXcgbmFtZQoJfSwKCgoJLy8gR2l2ZW4gYSB2aWV3IG5hbWUgZm9yIGEgY3VzdG9tIHZpZXcgb3IgYSBzdGFuZGFyZCB2aWV3LCBjcmVhdGVzIGEgcmVhZHktdG8tZ28gVmlldyBvYmplY3QKCWluc3RhbnRpYXRlVmlldzogZnVuY3Rpb24odmlld1R5cGUpIHsKCQl2YXIgc3BlYyA9IHRoaXMuZ2V0Vmlld1NwZWModmlld1R5cGUpOwoKCQlyZXR1cm4gbmV3IHNwZWNbJ2NsYXNzJ10odGhpcywgc3BlYyk7Cgl9LAoKCgkvLyBSZXR1cm5zIGEgYm9vbGVhbiBhYm91dCB3aGV0aGVyIHRoZSB2aWV3IGlzIG9rYXkgdG8gaW5zdGFudGlhdGUgYXQgc29tZSBwb2ludAoJaXNWYWxpZFZpZXdUeXBlOiBmdW5jdGlvbih2aWV3VHlwZSkgewoJCXJldHVybiBCb29sZWFuKHRoaXMuZ2V0Vmlld1NwZWModmlld1R5cGUpKTsKCX0sCgoKCS8vIFNob3VsZCBiZSBjYWxsZWQgd2hlbiBhbnkgdHlwZSBvZiBhc3luYyBkYXRhIGZldGNoaW5nIGJlZ2lucwoJcHVzaExvYWRpbmc6IGZ1bmN0aW9uKCkgewoJCWlmICghKHRoaXMubG9hZGluZ0xldmVsKyspKSB7CgkJCXRoaXMucHVibGljbHlUcmlnZ2VyKCdsb2FkaW5nJywgbnVsbCwgdHJ1ZSwgdGhpcy52aWV3KTsKCQl9Cgl9LAoKCgkvLyBTaG91bGQgYmUgY2FsbGVkIHdoZW4gYW55IHR5cGUgb2YgYXN5bmMgZGF0YSBmZXRjaGluZyBjb21wbGV0ZXMKCXBvcExvYWRpbmc6IGZ1bmN0aW9uKCkgewoJCWlmICghKC0tdGhpcy5sb2FkaW5nTGV2ZWwpKSB7CgkJCXRoaXMucHVibGljbHlUcmlnZ2VyKCdsb2FkaW5nJywgbnVsbCwgZmFsc2UsIHRoaXMudmlldyk7CgkJfQoJfSwKCgoJLy8gR2l2ZW4gYXJndW1lbnRzIHRvIHRoZSBzZWxlY3QgbWV0aG9kIGluIHRoZSBBUEksIHJldHVybnMgYSBzcGFuICh1bnpvbmVkIHN0YXJ0L2VuZCBhbmQgb3RoZXIgaW5mbykKCWJ1aWxkU2VsZWN0U3BhbjogZnVuY3Rpb24oem9uZWRTdGFydElucHV0LCB6b25lZEVuZElucHV0KSB7CgkJdmFyIHN0YXJ0ID0gdGhpcy5tb21lbnQoem9uZWRTdGFydElucHV0KS5zdHJpcFpvbmUoKTsKCQl2YXIgZW5kOwoKCQlpZiAoem9uZWRFbmRJbnB1dCkgewoJCQllbmQgPSB0aGlzLm1vbWVudCh6b25lZEVuZElucHV0KS5zdHJpcFpvbmUoKTsKCQl9CgkJZWxzZSBpZiAoc3RhcnQuaGFzVGltZSgpKSB7CgkJCWVuZCA9IHN0YXJ0LmNsb25lKCkuYWRkKHRoaXMuZGVmYXVsdFRpbWVkRXZlbnREdXJhdGlvbik7CgkJfQoJCWVsc2UgewoJCQllbmQgPSBzdGFydC5jbG9uZSgpLmFkZCh0aGlzLmRlZmF1bHRBbGxEYXlFdmVudER1cmF0aW9uKTsKCQl9CgoJCXJldHVybiB7IHN0YXJ0OiBzdGFydCwgZW5kOiBlbmQgfTsKCX0sCgoKCS8vIEN1cnJlbnQgRGF0ZQoJLy8gLS0tLS0tLS0tLS0tCgoKCS8qCglDYWxsZWQgYmVmb3JlIGluaXRpYWxpemUoKQoJKi8KCWluaXRDdXJyZW50RGF0ZTogZnVuY3Rpb24oKSB7CgkJLy8gY29tcHV0ZSB0aGUgaW5pdGlhbCBhbWJpZy10aW1lem9uZSBkYXRlCgkJaWYgKHRoaXMub3B0aW9ucy5kZWZhdWx0RGF0ZSAhPSBudWxsKSB7CgkJCXRoaXMuY3VycmVudERhdGUgPSB0aGlzLm1vbWVudCh0aGlzLm9wdGlvbnMuZGVmYXVsdERhdGUpLnN0cmlwWm9uZSgpOwoJCX0KCQllbHNlIHsKCQkJdGhpcy5jdXJyZW50RGF0ZSA9IHRoaXMuZ2V0Tm93KCk7IC8vIGdldE5vdyBhbHJlYWR5IHJldHVybnMgdW56b25lZAoJCX0KCX0sCgoKCWNoYW5nZVZpZXc6IGZ1bmN0aW9uKHZpZXdOYW1lLCBkYXRlT3JSYW5nZSkgewoKCQlpZiAoZGF0ZU9yUmFuZ2UpIHsKCgkJCWlmIChkYXRlT3JSYW5nZS5zdGFydCAmJiBkYXRlT3JSYW5nZS5lbmQpIHsgLy8gYSByYW5nZQoJCQkJdGhpcy5yZWNvcmRPcHRpb25PdmVycmlkZXMoeyAvLyB3aWxsIG5vdCByZXJlbmRlcgoJCQkJCXZpc2libGVSYW5nZTogZGF0ZU9yUmFuZ2UKCQkJCX0pOwoJCQl9CgkJCWVsc2UgeyAvLyBhIGRhdGUKCQkJCXRoaXMuY3VycmVudERhdGUgPSB0aGlzLm1vbWVudChkYXRlT3JSYW5nZSkuc3RyaXBab25lKCk7IC8vIGp1c3QgbGlrZSBnb3RvRGF0ZQoJCQl9CgkJfQoKCQl0aGlzLnJlbmRlclZpZXcodmlld05hbWUpOwoJfSwKCgoJcHJldjogZnVuY3Rpb24oKSB7CgkJdmFyIHByZXZJbmZvID0gdGhpcy52aWV3LmJ1aWxkUHJldkRhdGVQcm9maWxlKHRoaXMuY3VycmVudERhdGUpOwoKCQlpZiAocHJldkluZm8uaXNWYWxpZCkgewoJCQl0aGlzLmN1cnJlbnREYXRlID0gcHJldkluZm8uZGF0ZTsKCQkJdGhpcy5yZW5kZXJWaWV3KCk7CgkJfQoJfSwKCgoJbmV4dDogZnVuY3Rpb24oKSB7CgkJdmFyIG5leHRJbmZvID0gdGhpcy52aWV3LmJ1aWxkTmV4dERhdGVQcm9maWxlKHRoaXMuY3VycmVudERhdGUpOwoKCQlpZiAobmV4dEluZm8uaXNWYWxpZCkgewoJCQl0aGlzLmN1cnJlbnREYXRlID0gbmV4dEluZm8uZGF0ZTsKCQkJdGhpcy5yZW5kZXJWaWV3KCk7CgkJfQoJfSwKCgoJcHJldlllYXI6IGZ1bmN0aW9uKCkgewoJCXRoaXMuY3VycmVudERhdGUuYWRkKC0xLCAneWVhcnMnKTsKCQl0aGlzLnJlbmRlclZpZXcoKTsKCX0sCgoKCW5leHRZZWFyOiBmdW5jdGlvbigpIHsKCQl0aGlzLmN1cnJlbnREYXRlLmFkZCgxLCAneWVhcnMnKTsKCQl0aGlzLnJlbmRlclZpZXcoKTsKCX0sCgoKCXRvZGF5OiBmdW5jdGlvbigpIHsKCQl0aGlzLmN1cnJlbnREYXRlID0gdGhpcy5nZXROb3coKTsgLy8gc2hvdWxkIGRlbnkgbGlrZSBwcmV2L25leHQ/CgkJdGhpcy5yZW5kZXJWaWV3KCk7Cgl9LAoKCglnb3RvRGF0ZTogZnVuY3Rpb24oem9uZWREYXRlSW5wdXQpIHsKCQl0aGlzLmN1cnJlbnREYXRlID0gdGhpcy5tb21lbnQoem9uZWREYXRlSW5wdXQpLnN0cmlwWm9uZSgpOwoJCXRoaXMucmVuZGVyVmlldygpOwoJfSwKCgoJaW5jcmVtZW50RGF0ZTogZnVuY3Rpb24oZGVsdGEpIHsKCQl0aGlzLmN1cnJlbnREYXRlLmFkZChtb21lbnQuZHVyYXRpb24oZGVsdGEpKTsKCQl0aGlzLnJlbmRlclZpZXcoKTsKCX0sCgoKCS8vIGZvciBleHRlcm5hbCBBUEkKCWdldERhdGU6IGZ1bmN0aW9uKCkgewoJCXJldHVybiB0aGlzLmFwcGx5VGltZXpvbmUodGhpcy5jdXJyZW50RGF0ZSk7IC8vIGluZnVzZSB0aGUgY2FsZW5kYXIncyB0aW1lem9uZQoJfSwKCgoJLy8gd2lsbCByZXR1cm4gYG51bGxgIGlmIGludmFsaWQgcmFuZ2UKCXBhcnNlUmFuZ2U6IGZ1bmN0aW9uKHJhbmdlSW5wdXQpIHsKCQl2YXIgc3RhcnQgPSBudWxsOwoJCXZhciBlbmQgPSBudWxsOwoKCQlpZiAocmFuZ2VJbnB1dC5zdGFydCkgewoJCQlzdGFydCA9IHRoaXMubW9tZW50KHJhbmdlSW5wdXQuc3RhcnQpLnN0cmlwWm9uZSgpOwoJCX0KCgkJaWYgKHJhbmdlSW5wdXQuZW5kKSB7CgkJCWVuZCA9IHRoaXMubW9tZW50KHJhbmdlSW5wdXQuZW5kKS5zdHJpcFpvbmUoKTsKCQl9CgoJCWlmICghc3RhcnQgJiYgIWVuZCkgewoJCQlyZXR1cm4gbnVsbDsKCQl9CgoJCWlmIChzdGFydCAmJiBlbmQgJiYgZW5kLmlzQmVmb3JlKHN0YXJ0KSkgewoJCQlyZXR1cm4gbnVsbDsKCQl9CgoJCXJldHVybiB7IHN0YXJ0OiBzdGFydCwgZW5kOiBlbmQgfTsKCX0KCn0pOwoKCkNhbGVuZGFyLm1peGluKEVtaXR0ZXJNaXhpbik7CgoKZnVuY3Rpb24gQ2FsZW5kYXJfY29uc3RydWN0b3IoZWxlbWVudCwgb3ZlcnJpZGVzKSB7Cgl2YXIgdCA9IHRoaXM7CgoJLy8gZGVjbGFyZSB0aGUgY3VycmVudCBjYWxlbmRhciBpbnN0YW5jZSByZWxpZXMgb24gR2xvYmFsRW1pdHRlci4gbmVlZGVkIGZvciBnYXJiYWdlIGNvbGxlY3Rpb24uCglHbG9iYWxFbWl0dGVyLm5lZWRlZCgpOwoKCgkvLyBFeHBvcnRzCgkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXQucmVuZGVyID0gcmVuZGVyOwoJdC5kZXN0cm95ID0gZGVzdHJveTsKCXQucmVyZW5kZXJFdmVudHMgPSByZXJlbmRlckV2ZW50czsKCXQuc2VsZWN0ID0gc2VsZWN0OwoJdC51bnNlbGVjdCA9IHVuc2VsZWN0OwoJdC56b29tVG8gPSB6b29tVG87Cgl0LmdldENhbGVuZGFyID0gZ2V0Q2FsZW5kYXI7Cgl0LmdldFZpZXcgPSBnZXRWaWV3OwoJdC5vcHRpb24gPSBvcHRpb247IC8vIGdldHRlci9zZXR0ZXIgbWV0aG9kCgl0LnJlY29yZE9wdGlvbk92ZXJyaWRlcyA9IHJlY29yZE9wdGlvbk92ZXJyaWRlczsKCXQucHVibGljbHlUcmlnZ2VyID0gcHVibGljbHlUcmlnZ2VyOwoKCgkvLyBPcHRpb25zCgkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCXQuZHluYW1pY092ZXJyaWRlcyA9IHt9OwoJdC52aWV3U3BlY0NhY2hlID0ge307Cgl0Lm9wdGlvbkhhbmRsZXJzID0ge307IC8vIGZvciBDYWxlbmRhci5vcHRpb25zLmpzCgl0Lm92ZXJyaWRlcyA9ICQuZXh0ZW5kKHt9LCBvdmVycmlkZXMpOyAvLyBtYWtlIGEgY29weQoKCXQucG9wdWxhdGVPcHRpb25zSGFzaCgpOyAvLyBzZXRzIHRoaXMub3B0aW9ucwoKCgoJLy8gTG9jYWxlLWRhdGEgSW50ZXJuYWxzCgkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJLy8gQXBwbHkgb3ZlcnJpZGVzIHRvIHRoZSBjdXJyZW50IGxvY2FsZSdzIGRhdGEKCgl2YXIgbG9jYWxlRGF0YTsKCgkvLyBDYWxsZWQgaW1tZWRpYXRlbHksIGFuZCB3aGVuIGFueSBvZiB0aGUgb3B0aW9ucyBjaGFuZ2UuCgkvLyBIYXBwZW5zIGJlZm9yZSBhbnkgaW50ZXJuYWwgb2JqZWN0cyByZWJ1aWxkIG9yIHJlcmVuZGVyLCBiZWNhdXNlIHRoaXMgaXMgdmVyeSBjb3JlLgoJdC5iaW5kT3B0aW9ucyhbCgkJJ2xvY2FsZScsICdtb250aE5hbWVzJywgJ21vbnRoTmFtZXNTaG9ydCcsICdkYXlOYW1lcycsICdkYXlOYW1lc1Nob3J0JywgJ2ZpcnN0RGF5JywgJ3dlZWtOdW1iZXJDYWxjdWxhdGlvbicKCV0sIGZ1bmN0aW9uKGxvY2FsZSwgbW9udGhOYW1lcywgbW9udGhOYW1lc1Nob3J0LCBkYXlOYW1lcywgZGF5TmFtZXNTaG9ydCwgZmlyc3REYXksIHdlZWtOdW1iZXJDYWxjdWxhdGlvbikgewoKCQkvLyBub3JtYWxpemUKCQlpZiAod2Vla051bWJlckNhbGN1bGF0aW9uID09PSAnaXNvJykgewoJCQl3ZWVrTnVtYmVyQ2FsY3VsYXRpb24gPSAnSVNPJzsgLy8gbm9ybWFsaXplCgkJfQoKCQlsb2NhbGVEYXRhID0gY3JlYXRlT2JqZWN0KCAvLyBtYWtlIGEgY2hlYXAgY29weQoJCQlnZXRNb21lbnRMb2NhbGVEYXRhKGxvY2FsZSkgLy8gd2lsbCBmYWxsIGJhY2sgdG8gZW4KCQkpOwoKCQlpZiAobW9udGhOYW1lcykgewoJCQlsb2NhbGVEYXRhLl9tb250aHMgPSBtb250aE5hbWVzOwoJCX0KCQlpZiAobW9udGhOYW1lc1Nob3J0KSB7CgkJCWxvY2FsZURhdGEuX21vbnRoc1Nob3J0ID0gbW9udGhOYW1lc1Nob3J0OwoJCX0KCQlpZiAoZGF5TmFtZXMpIHsKCQkJbG9jYWxlRGF0YS5fd2Vla2RheXMgPSBkYXlOYW1lczsKCQl9CgkJaWYgKGRheU5hbWVzU2hvcnQpIHsKCQkJbG9jYWxlRGF0YS5fd2Vla2RheXNTaG9ydCA9IGRheU5hbWVzU2hvcnQ7CgkJfQoKCQlpZiAoZmlyc3REYXkgPT0gbnVsbCAmJiB3ZWVrTnVtYmVyQ2FsY3VsYXRpb24gPT09ICdJU08nKSB7CgkJCWZpcnN0RGF5ID0gMTsKCQl9CgkJaWYgKGZpcnN0RGF5ICE9IG51bGwpIHsKCQkJdmFyIF93ZWVrID0gY3JlYXRlT2JqZWN0KGxvY2FsZURhdGEuX3dlZWspOyAvLyBfd2VlazogeyBkb3c6ICMgfQoJCQlfd2Vlay5kb3cgPSBmaXJzdERheTsKCQkJbG9jYWxlRGF0YS5fd2VlayA9IF93ZWVrOwoJCX0KCgkJaWYgKCAvLyB3aGl0ZWxpc3QgY2VydGFpbiBraW5kcyBvZiBpbnB1dAoJCQl3ZWVrTnVtYmVyQ2FsY3VsYXRpb24gPT09ICdJU08nIHx8CgkJCXdlZWtOdW1iZXJDYWxjdWxhdGlvbiA9PT0gJ2xvY2FsJyB8fAoJCQl0eXBlb2Ygd2Vla051bWJlckNhbGN1bGF0aW9uID09PSAnZnVuY3Rpb24nCgkJKSB7CgkJCWxvY2FsZURhdGEuX2Z1bGxDYWxlbmRhcl93ZWVrQ2FsYyA9IHdlZWtOdW1iZXJDYWxjdWxhdGlvbjsgLy8gbW9tZW50LWV4dCB3aWxsIGtub3cgd2hhdCB0byBkbyB3aXRoIGl0CgkJfQoKCQkvLyBJZiB0aGUgaW50ZXJuYWwgY3VycmVudCBkYXRlIG9iamVjdCBhbHJlYWR5IGV4aXN0cywgbW92ZSB0byBuZXcgbG9jYWxlLgoJCS8vIFdlIGRvIE5PVCBuZWVkIHRvIGRvIHRoaXMgdGVjaG5pcXVlIGZvciBldmVudCBkYXRlcywgYmVjYXVzZSB0aGlzIGhhcHBlbnMgd2hlbiBjb252ZXJ0aW5nIHRvICJzZWdtZW50cyIuCgkJaWYgKHQuY3VycmVudERhdGUpIHsKCQkJbG9jYWxpemVNb21lbnQodC5jdXJyZW50RGF0ZSk7IC8vIHNldHMgdG8gbG9jYWxlRGF0YQoJCX0KCX0pOwoKCgkvLyBDYWxlbmRhci1zcGVjaWZpYyBEYXRlIFV0aWxpdGllcwoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoJdC5kZWZhdWx0QWxsRGF5RXZlbnREdXJhdGlvbiA9IG1vbWVudC5kdXJhdGlvbih0Lm9wdGlvbnMuZGVmYXVsdEFsbERheUV2ZW50RHVyYXRpb24pOwoJdC5kZWZhdWx0VGltZWRFdmVudER1cmF0aW9uID0gbW9tZW50LmR1cmF0aW9uKHQub3B0aW9ucy5kZWZhdWx0VGltZWRFdmVudER1cmF0aW9uKTsKCgoJLy8gQnVpbGRzIGEgbW9tZW50IHVzaW5nIHRoZSBzZXR0aW5ncyBvZiB0aGUgY3VycmVudCBjYWxlbmRhcjogdGltZXpvbmUgYW5kIGxvY2FsZS4KCS8vIEFjY2VwdHMgYW55dGhpbmcgdGhlIHZhbmlsbGEgbW9tZW50KCkgY29uc3RydWN0b3IgYWNjZXB0cy4KCXQubW9tZW50ID0gZnVuY3Rpb24oKSB7CgkJdmFyIG1vbTsKCgkJaWYgKHQub3B0aW9ucy50aW1lem9uZSA9PT0gJ2xvY2FsJykgewoJCQltb20gPSBGQy5tb21lbnQuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsKCgkJCS8vIEZvcmNlIHRoZSBtb21lbnQgdG8gYmUgbG9jYWwsIGJlY2F1c2UgRkMubW9tZW50IGRvZXNuJ3QgZ3VhcmFudGVlIGl0LgoJCQlpZiAobW9tLmhhc1RpbWUoKSkgeyAvLyBkb24ndCBnaXZlIGFtYmlndW91c2x5LXRpbWVkIG1vbWVudHMgYSBsb2NhbCB6b25lCgkJCQltb20ubG9jYWwoKTsKCQkJfQoJCX0KCQllbHNlIGlmICh0Lm9wdGlvbnMudGltZXpvbmUgPT09ICdVVEMnKSB7CgkJCW1vbSA9IEZDLm1vbWVudC51dGMuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsgLy8gcHJvY2VzcyBhcyBVVEMKCQl9CgkJZWxzZSB7CgkJCW1vbSA9IEZDLm1vbWVudC5wYXJzZVpvbmUuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsgLy8gbGV0IHRoZSBpbnB1dCBkZWNpZGUgdGhlIHpvbmUKCQl9CgoJCWxvY2FsaXplTW9tZW50KG1vbSk7CgoJCXJldHVybiBtb207Cgl9OwoKCgkvLyBVcGRhdGVzIHRoZSBnaXZlbiBtb21lbnQncyBsb2NhbGUgc2V0dGluZ3MgdG8gdGhlIGN1cnJlbnQgY2FsZW5kYXIgbG9jYWxlIHNldHRpbmdzLgoJZnVuY3Rpb24gbG9jYWxpemVNb21lbnQobW9tKSB7CgkJbW9tLl9sb2NhbGUgPSBsb2NhbGVEYXRhOwoJfQoJdC5sb2NhbGl6ZU1vbWVudCA9IGxvY2FsaXplTW9tZW50OwoKCgkvLyBSZXR1cm5zIGEgYm9vbGVhbiBhYm91dCB3aGV0aGVyIG9yIG5vdCB0aGUgY2FsZW5kYXIga25vd3MgaG93IHRvIGNhbGN1bGF0ZQoJLy8gdGhlIHRpbWV6b25lIG9mZnNldCBvZiBhcmJpdHJhcnkgZGF0ZXMgaW4gdGhlIGN1cnJlbnQgdGltZXpvbmUuCgl0LmdldElzQW1iaWdUaW1lem9uZSA9IGZ1bmN0aW9uKCkgewoJCXJldHVybiB0Lm9wdGlvbnMudGltZXpvbmUgIT09ICdsb2NhbCcgJiYgdC5vcHRpb25zLnRpbWV6b25lICE9PSAnVVRDJzsKCX07CgoKCS8vIFJldHVybnMgYSBjb3B5IG9mIHRoZSBnaXZlbiBkYXRlIGluIHRoZSBjdXJyZW50IHRpbWV6b25lLiBIYXMgbm8gZWZmZWN0IG9uIGRhdGVzIHdpdGhvdXQgdGltZXMuCgl0LmFwcGx5VGltZXpvbmUgPSBmdW5jdGlvbihkYXRlKSB7CgkJaWYgKCFkYXRlLmhhc1RpbWUoKSkgewoJCQlyZXR1cm4gZGF0ZS5jbG9uZSgpOwoJCX0KCgkJdmFyIHpvbmVkRGF0ZSA9IHQubW9tZW50KGRhdGUudG9BcnJheSgpKTsKCQl2YXIgdGltZUFkanVzdCA9IGRhdGUudGltZSgpIC0gem9uZWREYXRlLnRpbWUoKTsKCQl2YXIgYWRqdXN0ZWRab25lZERhdGU7CgoJCS8vIFNhZmFyaSBzb21ldGltZXMgaGFzIHByb2JsZW1zIHdpdGggdGhpcyBjb2Vyc2lvbiB3aGVuIG5lYXIgRFNULiBBZGp1c3QgaWYgbmVjZXNzYXJ5LiAoYnVnICMyMzk2KQoJCWlmICh0aW1lQWRqdXN0KSB7IC8vIGlzIHRoZSB0aW1lIHJlc3VsdCBkaWZmZXJlbnQgdGhhbiBleHBlY3RlZD8KCQkJYWRqdXN0ZWRab25lZERhdGUgPSB6b25lZERhdGUuY2xvbmUoKS5hZGQodGltZUFkanVzdCk7IC8vIGFkZCBtaWxsaXNlY29uZHMKCQkJaWYgKGRhdGUudGltZSgpIC0gYWRqdXN0ZWRab25lZERhdGUudGltZSgpID09PSAwKSB7IC8vIGRvZXMgaXQgbWF0Y2ggcGVyZmVjdGx5IG5vdz8KCQkJCXpvbmVkRGF0ZSA9IGFkanVzdGVkWm9uZWREYXRlOwoJCQl9CgkJfQoKCQlyZXR1cm4gem9uZWREYXRlOwoJfTsKCgoJLy8gUmV0dXJucyBhIG1vbWVudCBmb3IgdGhlIGN1cnJlbnQgZGF0ZSwgYXMgZGVmaW5lZCBieSB0aGUgY2xpZW50J3MgY29tcHV0ZXIgb3IgZnJvbSB0aGUgYG5vd2Agb3B0aW9uLgoJLy8gV2lsbCByZXR1cm4gYW4gbW9tZW50IHdpdGggYW4gYW1iaWd1b3VzIHRpbWV6b25lLgoJdC5nZXROb3cgPSBmdW5jdGlvbigpIHsKCQl2YXIgbm93ID0gdC5vcHRpb25zLm5vdzsKCQlpZiAodHlwZW9mIG5vdyA9PT0gJ2Z1bmN0aW9uJykgewoJCQlub3cgPSBub3coKTsKCQl9CgkJcmV0dXJuIHQubW9tZW50KG5vdykuc3RyaXBab25lKCk7Cgl9OwoKCgkvLyBHZXQgYW4gZXZlbnQncyBub3JtYWxpemVkIGVuZCBkYXRlLiBJZiBub3QgcHJlc2VudCwgY2FsY3VsYXRlIGl0IGZyb20gdGhlIGRlZmF1bHRzLgoJdC5nZXRFdmVudEVuZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CgkJaWYgKGV2ZW50LmVuZCkgewoJCQlyZXR1cm4gZXZlbnQuZW5kLmNsb25lKCk7CgkJfQoJCWVsc2UgewoJCQlyZXR1cm4gdC5nZXREZWZhdWx0RXZlbnRFbmQoZXZlbnQuYWxsRGF5LCBldmVudC5zdGFydCk7CgkJfQoJfTsKCgoJLy8gR2l2ZW4gYW4gZXZlbnQncyBhbGxEYXkgc3RhdHVzIGFuZCBzdGFydCBkYXRlLCByZXR1cm4gd2hhdCBpdHMgZmFsbGJhY2sgZW5kIGRhdGUgc2hvdWxkIGJlLgoJLy8gVE9ETzogcmVuYW1lIHRvIGNvbXB1dGVEZWZhdWx0RXZlbnRFbmQKCXQuZ2V0RGVmYXVsdEV2ZW50RW5kID0gZnVuY3Rpb24oYWxsRGF5LCB6b25lZFN0YXJ0KSB7CgkJdmFyIGVuZCA9IHpvbmVkU3RhcnQuY2xvbmUoKTsKCgkJaWYgKGFsbERheSkgewoJCQllbmQuc3RyaXBUaW1lKCkuYWRkKHQuZGVmYXVsdEFsbERheUV2ZW50RHVyYXRpb24pOwoJCX0KCQllbHNlIHsKCQkJZW5kLmFkZCh0LmRlZmF1bHRUaW1lZEV2ZW50RHVyYXRpb24pOwoJCX0KCgkJaWYgKHQuZ2V0SXNBbWJpZ1RpbWV6b25lKCkpIHsKCQkJZW5kLnN0cmlwWm9uZSgpOyAvLyB3ZSBkb24ndCBrbm93IHdoYXQgdGhlIHR6byBzaG91bGQgYmUKCQl9CgoJCXJldHVybiBlbmQ7Cgl9OwoKCgkvLyBQcm9kdWNlcyBhIGh1bWFuLXJlYWRhYmxlIHN0cmluZyBmb3IgdGhlIGdpdmVuIGR1cmF0aW9uLgoJLy8gU2lkZS1lZmZlY3Q6IGNoYW5nZXMgdGhlIGxvY2FsZSBvZiB0aGUgZ2l2ZW4gZHVyYXRpb24uCgl0Lmh1bWFuaXplRHVyYXRpb24gPSBmdW5jdGlvbihkdXJhdGlvbikgewoJCXJldHVybiBkdXJhdGlvbi5sb2NhbGUodC5vcHRpb25zLmxvY2FsZSkuaHVtYW5pemUoKTsKCX07CgoKCgkvLyBJbXBvcnRzCgkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCglFdmVudE1hbmFnZXIuY2FsbCh0KTsKCgoKCS8vIExvY2FscwoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoJdmFyIF9lbGVtZW50ID0gZWxlbWVudFswXTsKCXZhciB0b29sYmFyc01hbmFnZXI7Cgl2YXIgaGVhZGVyOwoJdmFyIGZvb3RlcjsKCXZhciBjb250ZW50OwoJdmFyIHRtOyAvLyBmb3IgbWFraW5nIHRoZW1lIGNsYXNzZXMKCXZhciBjdXJyZW50VmlldzsgLy8gTk9URToga2VlcCB0aGlzIGluIHN5bmMgd2l0aCB0aGlzLnZpZXcKCXZhciB2aWV3c0J5VHlwZSA9IHt9OyAvLyBob2xkcyBhbGwgaW5zdGFudGlhdGVkIHZpZXcgaW5zdGFuY2VzLCBjdXJyZW50IG9yIG5vdAoJdmFyIHN1Z2dlc3RlZFZpZXdIZWlnaHQ7Cgl2YXIgd2luZG93UmVzaXplUHJveHk7IC8vIHdyYXBzIHRoZSB3aW5kb3dSZXNpemUgZnVuY3Rpb24KCXZhciBpZ25vcmVXaW5kb3dSZXNpemUgPSAwOwoKCgl0aGlzLmluaXRDdXJyZW50RGF0ZSgpOwoKCgkvLyBNYWluIFJlbmRlcmluZwoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoJZnVuY3Rpb24gcmVuZGVyKCkgewoJCWlmICghY29udGVudCkgewoJCQlpbml0aWFsUmVuZGVyKCk7CgkJfQoJCWVsc2UgaWYgKGVsZW1lbnRWaXNpYmxlKCkpIHsKCQkJLy8gbWFpbmx5IGZvciB0aGUgcHVibGljIEFQSQoJCQljYWxjU2l6ZSgpOwoJCQlyZW5kZXJWaWV3KCk7CgkJfQoJfQoKCglmdW5jdGlvbiBpbml0aWFsUmVuZGVyKCkgewoJCWVsZW1lbnQuYWRkQ2xhc3MoJ2ZjJyk7CgoJCS8vIGV2ZW50IGRlbGVnYXRpb24gZm9yIG5hdiBsaW5rcwoJCWVsZW1lbnQub24oJ2NsaWNrLmZjJywgJ2FbZGF0YS1nb3RvXScsIGZ1bmN0aW9uKGV2KSB7CgkJCXZhciBhbmNob3JFbCA9ICQodGhpcyk7CgkJCXZhciBnb3RvT3B0aW9ucyA9IGFuY2hvckVsLmRhdGEoJ2dvdG8nKTsgLy8gd2lsbCBhdXRvbWF0aWNhbGx5IHBhcnNlIEpTT04KCQkJdmFyIGRhdGUgPSB0Lm1vbWVudChnb3RvT3B0aW9ucy5kYXRlKTsKCQkJdmFyIHZpZXdUeXBlID0gZ290b09wdGlvbnMudHlwZTsKCgkJCS8vIHByb3BlcnR5IGxpa2UgIm5hdkxpbmtEYXlDbGljayIuIG1pZ2h0IGJlIGEgc3RyaW5nIG9yIGEgZnVuY3Rpb24KCQkJdmFyIGN1c3RvbUFjdGlvbiA9IGN1cnJlbnRWaWV3Lm9wdCgnbmF2TGluaycgKyBjYXBpdGFsaXNlRmlyc3RMZXR0ZXIodmlld1R5cGUpICsgJ0NsaWNrJyk7CgoJCQlpZiAodHlwZW9mIGN1c3RvbUFjdGlvbiA9PT0gJ2Z1bmN0aW9uJykgewoJCQkJY3VzdG9tQWN0aW9uKGRhdGUsIGV2KTsKCQkJfQoJCQllbHNlIHsKCQkJCWlmICh0eXBlb2YgY3VzdG9tQWN0aW9uID09PSAnc3RyaW5nJykgewoJCQkJCXZpZXdUeXBlID0gY3VzdG9tQWN0aW9uOwoJCQkJfQoJCQkJem9vbVRvKGRhdGUsIHZpZXdUeXBlKTsKCQkJfQoJCX0pOwoKCQkvLyBjYWxsZWQgaW1tZWRpYXRlbHksIGFuZCB1cG9uIG9wdGlvbiBjaGFuZ2UKCQl0LmJpbmRPcHRpb24oJ3RoZW1lJywgZnVuY3Rpb24odGhlbWUpIHsKCQkJdG0gPSB0aGVtZSA/ICd1aScgOiAnZmMnOyAvLyBhZmZlY3RzIGEgbGFyZ2VyIHNjb3BlCgkJCWVsZW1lbnQudG9nZ2xlQ2xhc3MoJ3VpLXdpZGdldCcsIHRoZW1lKTsKCQkJZWxlbWVudC50b2dnbGVDbGFzcygnZmMtdW50aGVtZWQnLCAhdGhlbWUpOwoJCX0pOwoKCQkvLyBjYWxsZWQgaW1tZWRpYXRlbHksIGFuZCB1cG9uIG9wdGlvbiBjaGFuZ2UuCgkJLy8gSEFDSzogbG9jYWxlIG9mdGVuIGFmZmVjdHMgaXNSVEwsIHNvIHdlIGV4cGxpY2l0bHkgbGlzdGVuIHRvIHRoYXQgdG9vLgoJCXQuYmluZE9wdGlvbnMoWyAnaXNSVEwnLCAnbG9jYWxlJyBdLCBmdW5jdGlvbihpc1JUTCkgewoJCQllbGVtZW50LnRvZ2dsZUNsYXNzKCdmYy1sdHInLCAhaXNSVEwpOwoJCQllbGVtZW50LnRvZ2dsZUNsYXNzKCdmYy1ydGwnLCBpc1JUTCk7CgkJfSk7CgoJCWNvbnRlbnQgPSAkKCI8ZGl2IGNsYXNzPSdmYy12aWV3LWNvbnRhaW5lcicvPiIpLnByZXBlbmRUbyhlbGVtZW50KTsKCgkJdmFyIHRvb2xiYXJzID0gYnVpbGRUb29sYmFycygpOwoJCXRvb2xiYXJzTWFuYWdlciA9IG5ldyBJdGVyYXRvcih0b29sYmFycyk7CgoJCWhlYWRlciA9IHQuaGVhZGVyID0gdG9vbGJhcnNbMF07CgkJZm9vdGVyID0gdC5mb290ZXIgPSB0b29sYmFyc1sxXTsKCgkJcmVuZGVySGVhZGVyKCk7CgkJcmVuZGVyRm9vdGVyKCk7CgkJcmVuZGVyVmlldyh0Lm9wdGlvbnMuZGVmYXVsdFZpZXcpOwoKCQlpZiAodC5vcHRpb25zLmhhbmRsZVdpbmRvd1Jlc2l6ZSkgewoJCQl3aW5kb3dSZXNpemVQcm94eSA9IGRlYm91bmNlKHdpbmRvd1Jlc2l6ZSwgdC5vcHRpb25zLndpbmRvd1Jlc2l6ZURlbGF5KTsgLy8gcHJldmVudHMgcmFwaWQgY2FsbHMKCQkJJCh3aW5kb3cpLnJlc2l6ZSh3aW5kb3dSZXNpemVQcm94eSk7CgkJfQoJfQoKCglmdW5jdGlvbiBkZXN0cm95KCkgewoKCQlpZiAoY3VycmVudFZpZXcpIHsKCQkJY3VycmVudFZpZXcucmVtb3ZlRWxlbWVudCgpOwoKCQkJLy8gTk9URTogZG9uJ3QgbnVsbC1vdXQgY3VycmVudFZpZXcvdC52aWV3IGluIGNhc2UgQVBJIG1ldGhvZHMgYXJlIGNhbGxlZCBhZnRlciBkZXN0cm95LgoJCQkvLyBJdCBpcyBzdGlsbCB0aGUgImN1cnJlbnQiIHZpZXcsIGp1c3Qgbm90IHJlbmRlcmVkLgoJCX0KCgkJdG9vbGJhcnNNYW5hZ2VyLnByb3h5Q2FsbCgncmVtb3ZlRWxlbWVudCcpOwoJCWNvbnRlbnQucmVtb3ZlKCk7CgkJZWxlbWVudC5yZW1vdmVDbGFzcygnZmMgZmMtbHRyIGZjLXJ0bCBmYy11bnRoZW1lZCB1aS13aWRnZXQnKTsKCgkJZWxlbWVudC5vZmYoJy5mYycpOyAvLyB1bmJpbmQgbmF2IGxpbmsgaGFuZGxlcnMKCgkJaWYgKHdpbmRvd1Jlc2l6ZVByb3h5KSB7CgkJCSQod2luZG93KS51bmJpbmQoJ3Jlc2l6ZScsIHdpbmRvd1Jlc2l6ZVByb3h5KTsKCQl9CgoJCUdsb2JhbEVtaXR0ZXIudW5uZWVkZWQoKTsKCX0KCgoJZnVuY3Rpb24gZWxlbWVudFZpc2libGUoKSB7CgkJcmV0dXJuIGVsZW1lbnQuaXMoJzp2aXNpYmxlJyk7Cgl9CgoKCgkvLyBWaWV3IFJlbmRlcmluZwoJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoJLy8gUmVuZGVycyBhIHZpZXcgYmVjYXVzZSBvZiBhIGRhdGUgY2hhbmdlLCB2aWV3LXR5cGUgY2hhbmdlLCBvciBmb3IgdGhlIGZpcnN0IHRpbWUuCgkvLyBJZiBub3QgZ2l2ZW4gYSB2aWV3VHlwZSwga2VlcCB0aGUgY3VycmVudCB2aWV3IGJ1dCByZW5kZXIgZGlmZmVyZW50IGRhdGVzLgoJLy8gQWNjZXB0cyBhbiBvcHRpb25hbCBzY3JvbGwgc3RhdGUgdG8gcmVzdG9yZSB0by4KCWZ1bmN0aW9uIHJlbmRlclZpZXcodmlld1R5cGUsIGZvcmNlZFNjcm9sbCkgewoJCWlnbm9yZVdpbmRvd1Jlc2l6ZSsrOwoKCQl2YXIgbmVlZHNDbGVhclZpZXcgPSBjdXJyZW50VmlldyAmJiB2aWV3VHlwZSAmJiBjdXJyZW50Vmlldy50eXBlICE9PSB2aWV3VHlwZTsKCgkJLy8gaWYgdmlld1R5cGUgaXMgY2hhbmdpbmcsIHJlbW92ZSB0aGUgb2xkIHZpZXcncyByZW5kZXJpbmcKCQlpZiAobmVlZHNDbGVhclZpZXcpIHsKCQkJZnJlZXplQ29udGVudEhlaWdodCgpOyAvLyBwcmV2ZW50IGEgc2Nyb2xsIGp1bXAgd2hlbiB2aWV3IGVsZW1lbnQgaXMgcmVtb3ZlZAoJCQljbGVhclZpZXcoKTsKCQl9CgoJCS8vIGlmIHZpZXdUeXBlIGNoYW5nZWQsIG9yIHRoZSB2aWV3IHdhcyBuZXZlciBjcmVhdGVkLCBjcmVhdGUgYSBmcmVzaCB2aWV3CgkJaWYgKCFjdXJyZW50VmlldyAmJiB2aWV3VHlwZSkgewoJCQljdXJyZW50VmlldyA9IHQudmlldyA9CgkJCQl2aWV3c0J5VHlwZVt2aWV3VHlwZV0gfHwKCQkJCSh2aWV3c0J5VHlwZVt2aWV3VHlwZV0gPSB0Lmluc3RhbnRpYXRlVmlldyh2aWV3VHlwZSkpOwoKCQkJY3VycmVudFZpZXcuc2V0RWxlbWVudCgKCQkJCSQoIjxkaXYgY2xhc3M9J2ZjLXZpZXcgZmMtIiArIHZpZXdUeXBlICsgIi12aWV3JyAvPiIpLmFwcGVuZFRvKGNvbnRlbnQpCgkJCSk7CgkJCXRvb2xiYXJzTWFuYWdlci5wcm94eUNhbGwoJ2FjdGl2YXRlQnV0dG9uJywgdmlld1R5cGUpOwoJCX0KCgkJaWYgKGN1cnJlbnRWaWV3KSB7CgoJCQlpZiAoZWxlbWVudFZpc2libGUoKSkgewoKCQkJCWlmIChmb3JjZWRTY3JvbGwpIHsKCQkJCQljdXJyZW50Vmlldy5jYXB0dXJlSW5pdGlhbFNjcm9sbChmb3JjZWRTY3JvbGwpOwoJCQkJfQoKCQkJCWN1cnJlbnRWaWV3LnNldERhdGUodC5jdXJyZW50RGF0ZSk7CgoJCQkJLy8gVE9ETzogbWFrZSBzZXREYXRlIHJldHVybiB0aGUgcmV2aXNlZCBkYXRlLgoJCQkJLy8gRGlmZmljdWx0IGJlY2F1c2Ugb2YgdGhlIHBzZXVkby1hc3luYyBuYXR1cmUsIHByb21pc2VzLgoJCQkJdC5jdXJyZW50RGF0ZSA9IGN1cnJlbnRWaWV3LmN1cnJlbnREYXRlOwoKCQkJCWlmIChmb3JjZWRTY3JvbGwpIHsKCQkJCQljdXJyZW50Vmlldy5yZWxlYXNlU2Nyb2xsKCk7CgkJCQl9CgkJCX0KCQl9CgoJCWlmIChuZWVkc0NsZWFyVmlldykgewoJCQl0aGF3Q29udGVudEhlaWdodCgpOwoJCX0KCgkJaWdub3JlV2luZG93UmVzaXplLS07Cgl9Cgl0LnJlbmRlclZpZXcgPSByZW5kZXJWaWV3OwoKCgkvLyBVbnJlbmRlcnMgdGhlIGN1cnJlbnQgdmlldyBhbmQgcmVmbGVjdHMgdGhpcyBjaGFuZ2UgaW4gdGhlIEhlYWRlci4KCS8vIFVucmVnc2l0ZXJzIHRoZSBgY3VycmVudFZpZXdgLCBidXQgZG9lcyBub3QgcmVtb3ZlIGZyb20gdmlld0J5VHlwZSBoYXNoLgoJZnVuY3Rpb24gY2xlYXJWaWV3KCkgewoJCXRvb2xiYXJzTWFuYWdlci5wcm94eUNhbGwoJ2RlYWN0aXZhdGVCdXR0b24nLCBjdXJyZW50Vmlldy50eXBlKTsKCQljdXJyZW50Vmlldy5yZW1vdmVFbGVtZW50KCk7CgkJY3VycmVudFZpZXcgPSB0LnZpZXcgPSBudWxsOwoJfQoKCgkvLyBEZXN0cm95cyB0aGUgdmlldywgaW5jbHVkaW5nIHRoZSB2aWV3IG9iamVjdC4gVGhlbiwgcmUtaW5zdGFudGlhdGVzIGl0IGFuZCByZW5kZXJzIGl0LgoJLy8gTWFpbnRhaW5zIHRoZSBzYW1lIHNjcm9sbCBzdGF0ZS4KCS8vIFRPRE86IG1haW50YWluIGFueSBvdGhlciB1c2VyLW1hbmlwdWxhdGVkIHN0YXRlLgoJZnVuY3Rpb24gcmVpbml0VmlldygpIHsKCQlpZ25vcmVXaW5kb3dSZXNpemUrKzsKCQlmcmVlemVDb250ZW50SGVpZ2h0KCk7CgoJCXZhciB2aWV3VHlwZSA9IGN1cnJlbnRWaWV3LnR5cGU7CgkJdmFyIHNjcm9sbFN0YXRlID0gY3VycmVudFZpZXcucXVlcnlTY3JvbGwoKTsKCQljbGVhclZpZXcoKTsKCQljYWxjU2l6ZSgpOwoJCXJlbmRlclZpZXcodmlld1R5cGUsIHNjcm9sbFN0YXRlKTsKCgkJdGhhd0NvbnRlbnRIZWlnaHQoKTsKCQlpZ25vcmVXaW5kb3dSZXNpemUtLTsKCX0KCgoKCS8vIFJlc2l6aW5nCgkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCgl0LmdldFN1Z2dlc3RlZFZpZXdIZWlnaHQgPSBmdW5jdGlvbigpIHsKCQlpZiAoc3VnZ2VzdGVkVmlld0hlaWdodCA9PT0gdW5kZWZpbmVkKSB7CgkJCWNhbGNTaXplKCk7CgkJfQoJCXJldHVybiBzdWdnZXN0ZWRWaWV3SGVpZ2h0OwoJfTsKCgoJdC5pc0hlaWdodEF1dG8gPSBmdW5jdGlvbigpIHsKCQlyZXR1cm4gdC5vcHRpb25zLmNvbnRlbnRIZWlnaHQgPT09ICdhdXRvJyB8fCB0Lm9wdGlvbnMuaGVpZ2h0ID09PSAnYXV0byc7Cgl9OwoKCglmdW5jdGlvbiB1cGRhdGVTaXplKHNob3VsZFJlY2FsYykgewoJCWlmIChlbGVtZW50VmlzaWJsZSgpKSB7CgoJCQlpZiAoc2hvdWxkUmVjYWxjKSB7CgkJCQlfY2FsY1NpemUoKTsKCQkJfQoKCQkJaWdub3JlV2luZG93UmVzaXplKys7CgkJCWN1cnJlbnRWaWV3LnVwZGF0ZVNpemUodHJ1ZSk7IC8vIGlzUmVzaXplPXRydWUuIHdpbGwgcG9sbCBnZXRTdWdnZXN0ZWRWaWV3SGVpZ2h0KCkgYW5kIGlzSGVpZ2h0QXV0bygpCgkJCWlnbm9yZVdpbmRvd1Jlc2l6ZS0tOwoKCQkJcmV0dXJuIHRydWU7IC8vIHNpZ25hbCBzdWNjZXNzCgkJfQoJfQoKCglmdW5jdGlvbiBjYWxjU2l6ZSgpIHsKCQlpZiAoZWxlbWVudFZpc2libGUoKSkgewoJCQlfY2FsY1NpemUoKTsKCQl9Cgl9CgoKCWZ1bmN0aW9uIF9jYWxjU2l6ZSgpIHsgLy8gYXNzdW1lcyBlbGVtZW50VmlzaWJsZQoJCXZhciBjb250ZW50SGVpZ2h0SW5wdXQgPSB0Lm9wdGlvbnMuY29udGVudEhlaWdodDsKCQl2YXIgaGVpZ2h0SW5wdXQgPSB0Lm9wdGlvbnMuaGVpZ2h0OwoKCQlpZiAodHlwZW9mIGNvbnRlbnRIZWlnaHRJbnB1dCA9PT0gJ251bWJlcicpIHsgLy8gZXhpc3RzIGFuZCBub3QgJ2F1dG8nCgkJCXN1Z2dlc3RlZFZpZXdIZWlnaHQgPSBjb250ZW50SGVpZ2h0SW5wdXQ7CgkJfQoJCWVsc2UgaWYgKHR5cGVvZiBjb250ZW50SGVpZ2h0SW5wdXQgPT09ICdmdW5jdGlvbicpIHsgLy8gZXhpc3RzIGFuZCBpcyBhIGZ1bmN0aW9uCgkJCXN1Z2dlc3RlZFZpZXdIZWlnaHQgPSBjb250ZW50SGVpZ2h0SW5wdXQoKTsKCQl9CgkJZWxzZSBpZiAodHlwZW9mIGhlaWdodElucHV0ID09PSAnbnVtYmVyJykgeyAvLyBleGlzdHMgYW5kIG5vdCAnYXV0bycKCQkJc3VnZ2VzdGVkVmlld0hlaWdodCA9IGhlaWdodElucHV0IC0gcXVlcnlUb29sYmFyc0hlaWdodCgpOwoJCX0KCQllbHNlIGlmICh0eXBlb2YgaGVpZ2h0SW5wdXQgPT09ICdmdW5jdGlvbicpIHsgLy8gZXhpc3RzIGFuZCBpcyBhIGZ1bmN0aW9uCgkJCXN1Z2dlc3RlZFZpZXdIZWlnaHQgPSBoZWlnaHRJbnB1dCgpIC0gcXVlcnlUb29sYmFyc0hlaWdodCgpOwoJCX0KCQllbHNlIGlmIChoZWlnaHRJbnB1dCA9PT0gJ3BhcmVudCcpIHsgLy8gc2V0IHRvIGhlaWdodCBvZiBwYXJlbnQgZWxlbWVudAoJCQlzdWdnZXN0ZWRWaWV3SGVpZ2h0ID0gZWxlbWVudC5wYXJlbnQoKS5oZWlnaHQoKSAtIHF1ZXJ5VG9vbGJhcnNIZWlnaHQoKTsKCQl9CgkJZWxzZSB7CgkJCXN1Z2dlc3RlZFZpZXdIZWlnaHQgPSBNYXRoLnJvdW5kKGNvbnRlbnQud2lkdGgoKSAvIE1hdGgubWF4KHQub3B0aW9ucy5hc3BlY3RSYXRpbywgLjUpKTsKCQl9Cgl9CgoKCWZ1bmN0aW9uIHF1ZXJ5VG9vbGJhcnNIZWlnaHQoKSB7CgkJcmV0dXJuIHRvb2xiYXJzTWFuYWdlci5pdGVtcy5yZWR1Y2UoZnVuY3Rpb24oYWNjdW11bGF0b3IsIHRvb2xiYXIpIHsKCQkJdmFyIHRvb2xiYXJIZWlnaHQgPSB0b29sYmFyLmVsID8gdG9vbGJhci5lbC5vdXRlckhlaWdodCh0cnVlKSA6IDA7IC8vIGluY2x1ZGVzIG1hcmdpbgoJCQlyZXR1cm4gYWNjdW11bGF0b3IgKyB0b29sYmFySGVpZ2h0OwoJCX0sIDApOwoJfQoKCglmdW5jdGlvbiB3aW5kb3dSZXNpemUoZXYpIHsKCQlpZiAoCgkJCSFpZ25vcmVXaW5kb3dSZXNpemUgJiYKCQkJZXYudGFyZ2V0ID09PSB3aW5kb3cgJiYgLy8gc28gd2UgZG9uJ3QgcHJvY2VzcyBqcXVpICJyZXNpemUiIGV2ZW50cyB0aGF0IGhhdmUgYnViYmxlZCB1cAoJCQljdXJyZW50Vmlldy5yZW5kZXJSYW5nZSAvLyB2aWV3IGhhcyBhbHJlYWR5IGJlZW4gcmVuZGVyZWQKCQkpIHsKCQkJaWYgKHVwZGF0ZVNpemUodHJ1ZSkpIHsKCQkJCWN1cnJlbnRWaWV3LnB1YmxpY2x5VHJpZ2dlcignd2luZG93UmVzaXplJywgX2VsZW1lbnQpOwoJCQl9CgkJfQoJfQoKCgoJLyogRXZlbnQgUmVuZGVyaW5nCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCWZ1bmN0aW9uIHJlcmVuZGVyRXZlbnRzKCkgeyAvLyBBUEkgbWV0aG9kLiBkZXN0cm95cyBvbGQgZXZlbnRzIGlmIHByZXZpb3VzbHkgcmVuZGVyZWQuCgkJaWYgKGVsZW1lbnRWaXNpYmxlKCkpIHsKCQkJdC5yZXBvcnRFdmVudENoYW5nZSgpOyAvLyB3aWxsIHJlLXRyYXNtaXQgZXZlbnRzIHRvIHRoZSB2aWV3LCBjYXVzaW5nIGEgcmVyZW5kZXIKCQl9Cgl9CgoKCgkvKiBUb29sYmFycwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCglmdW5jdGlvbiBidWlsZFRvb2xiYXJzKCkgewoJCXJldHVybiBbCgkJCW5ldyBUb29sYmFyKHQsIGNvbXB1dGVIZWFkZXJPcHRpb25zKCkpLAoJCQluZXcgVG9vbGJhcih0LCBjb21wdXRlRm9vdGVyT3B0aW9ucygpKQoJCV07Cgl9CgoKCWZ1bmN0aW9uIGNvbXB1dGVIZWFkZXJPcHRpb25zKCkgewoJCXJldHVybiB7CgkJCWV4dHJhQ2xhc3NlczogJ2ZjLWhlYWRlci10b29sYmFyJywKCQkJbGF5b3V0OiB0Lm9wdGlvbnMuaGVhZGVyCgkJfTsKCX0KCgoJZnVuY3Rpb24gY29tcHV0ZUZvb3Rlck9wdGlvbnMoKSB7CgkJcmV0dXJuIHsKCQkJZXh0cmFDbGFzc2VzOiAnZmMtZm9vdGVyLXRvb2xiYXInLAoJCQlsYXlvdXQ6IHQub3B0aW9ucy5mb290ZXIKCQl9OwoJfQoKCgkvLyBjYW4gYmUgY2FsbGVkIHJlcGVhdGVkbHkgYW5kIEhlYWRlciB3aWxsIHJlcmVuZGVyCglmdW5jdGlvbiByZW5kZXJIZWFkZXIoKSB7CgkJaGVhZGVyLnNldFRvb2xiYXJPcHRpb25zKGNvbXB1dGVIZWFkZXJPcHRpb25zKCkpOwoJCWhlYWRlci5yZW5kZXIoKTsKCQlpZiAoaGVhZGVyLmVsKSB7CgkJCWVsZW1lbnQucHJlcGVuZChoZWFkZXIuZWwpOwoJCX0KCX0KCgoJLy8gY2FuIGJlIGNhbGxlZCByZXBlYXRlZGx5IGFuZCBGb290ZXIgd2lsbCByZXJlbmRlcgoJZnVuY3Rpb24gcmVuZGVyRm9vdGVyKCkgewoJCWZvb3Rlci5zZXRUb29sYmFyT3B0aW9ucyhjb21wdXRlRm9vdGVyT3B0aW9ucygpKTsKCQlmb290ZXIucmVuZGVyKCk7CgkJaWYgKGZvb3Rlci5lbCkgewoJCQllbGVtZW50LmFwcGVuZChmb290ZXIuZWwpOwoJCX0KCX0KCgoJdC5zZXRUb29sYmFyc1RpdGxlID0gZnVuY3Rpb24odGl0bGUpIHsKCQl0b29sYmFyc01hbmFnZXIucHJveHlDYWxsKCd1cGRhdGVUaXRsZScsIHRpdGxlKTsKCX07CgoKCXQudXBkYXRlVG9vbGJhckJ1dHRvbnMgPSBmdW5jdGlvbigpIHsKCQl2YXIgbm93ID0gdC5nZXROb3coKTsKCQl2YXIgdG9kYXlJbmZvID0gY3VycmVudFZpZXcuYnVpbGREYXRlUHJvZmlsZShub3cpOwoJCXZhciBwcmV2SW5mbyA9IGN1cnJlbnRWaWV3LmJ1aWxkUHJldkRhdGVQcm9maWxlKHQuY3VycmVudERhdGUpOwoJCXZhciBuZXh0SW5mbyA9IGN1cnJlbnRWaWV3LmJ1aWxkTmV4dERhdGVQcm9maWxlKHQuY3VycmVudERhdGUpOwoKCQl0b29sYmFyc01hbmFnZXIucHJveHlDYWxsKAoJCQkodG9kYXlJbmZvLmlzVmFsaWQgJiYgIWlzRGF0ZVdpdGhpblJhbmdlKG5vdywgY3VycmVudFZpZXcuY3VycmVudFJhbmdlKSkgPwoJCQkJJ2VuYWJsZUJ1dHRvbicgOgoJCQkJJ2Rpc2FibGVCdXR0b24nLAoJCQkndG9kYXknCgkJKTsKCgkJdG9vbGJhcnNNYW5hZ2VyLnByb3h5Q2FsbCgKCQkJcHJldkluZm8uaXNWYWxpZCA/CgkJCQknZW5hYmxlQnV0dG9uJyA6CgkJCQknZGlzYWJsZUJ1dHRvbicsCgkJCSdwcmV2JwoJCSk7CgoJCXRvb2xiYXJzTWFuYWdlci5wcm94eUNhbGwoCgkJCW5leHRJbmZvLmlzVmFsaWQgPwoJCQkJJ2VuYWJsZUJ1dHRvbicgOgoJCQkJJ2Rpc2FibGVCdXR0b24nLAoJCQknbmV4dCcKCQkpOwoJfTsKCgoKCS8qIFNlbGVjdGlvbgoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyB0aGlzIHB1YmxpYyBtZXRob2QgcmVjZWl2ZXMgc3RhcnQvZW5kIGRhdGVzIGluIGFueSBmb3JtYXQsIHdpdGggYW55IHRpbWV6b25lCglmdW5jdGlvbiBzZWxlY3Qoem9uZWRTdGFydElucHV0LCB6b25lZEVuZElucHV0KSB7CgkJY3VycmVudFZpZXcuc2VsZWN0KAoJCQl0LmJ1aWxkU2VsZWN0U3Bhbi5hcHBseSh0LCBhcmd1bWVudHMpCgkJKTsKCX0KCgoJZnVuY3Rpb24gdW5zZWxlY3QoKSB7IC8vIHNhZmUgdG8gYmUgY2FsbGVkIGJlZm9yZSByZW5kZXJWaWV3CgkJaWYgKGN1cnJlbnRWaWV3KSB7CgkJCWN1cnJlbnRWaWV3LnVuc2VsZWN0KCk7CgkJfQoJfQoKCgkvLyBGb3JjZXMgbmF2aWdhdGlvbiB0byBhIHZpZXcgZm9yIHRoZSBnaXZlbiBkYXRlLgoJLy8gYHZpZXdUeXBlYCBjYW4gYmUgYSBzcGVjaWZpYyB2aWV3IG5hbWUgb3IgYSBnZW5lcmljIG9uZSBsaWtlICJ3ZWVrIiBvciAiZGF5Ii4KCWZ1bmN0aW9uIHpvb21UbyhuZXdEYXRlLCB2aWV3VHlwZSkgewoJCXZhciBzcGVjOwoKCQl2aWV3VHlwZSA9IHZpZXdUeXBlIHx8ICdkYXknOyAvLyBkYXkgaXMgZGVmYXVsdCB6b29tCgkJc3BlYyA9IHQuZ2V0Vmlld1NwZWModmlld1R5cGUpIHx8IHQuZ2V0VW5pdFZpZXdTcGVjKHZpZXdUeXBlKTsKCgkJdC5jdXJyZW50RGF0ZSA9IG5ld0RhdGUuY2xvbmUoKTsKCQlyZW5kZXJWaWV3KHNwZWMgPyBzcGVjLnR5cGUgOiBudWxsKTsKCX0KCgoKCS8qIEhlaWdodCAiRnJlZXppbmciCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCXQuZnJlZXplQ29udGVudEhlaWdodCA9IGZyZWV6ZUNvbnRlbnRIZWlnaHQ7Cgl0LnRoYXdDb250ZW50SGVpZ2h0ID0gdGhhd0NvbnRlbnRIZWlnaHQ7CgoJdmFyIGZyZWV6ZUNvbnRlbnRIZWlnaHREZXB0aCA9IDA7CgoKCWZ1bmN0aW9uIGZyZWV6ZUNvbnRlbnRIZWlnaHQoKSB7CgkJaWYgKCEoZnJlZXplQ29udGVudEhlaWdodERlcHRoKyspKSB7CgkJCWNvbnRlbnQuY3NzKHsKCQkJCXdpZHRoOiAnMTAwJScsCgkJCQloZWlnaHQ6IGNvbnRlbnQuaGVpZ2h0KCksCgkJCQlvdmVyZmxvdzogJ2hpZGRlbicKCQkJfSk7CgkJfQoJfQoKCglmdW5jdGlvbiB0aGF3Q29udGVudEhlaWdodCgpIHsKCQlpZiAoISgtLWZyZWV6ZUNvbnRlbnRIZWlnaHREZXB0aCkpIHsKCQkJY29udGVudC5jc3MoewoJCQkJd2lkdGg6ICcnLAoJCQkJaGVpZ2h0OiAnJywKCQkJCW92ZXJmbG93OiAnJwoJCQl9KTsKCQl9Cgl9CgoKCgkvKiBNaXNjCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCWZ1bmN0aW9uIGdldENhbGVuZGFyKCkgewoJCXJldHVybiB0OwoJfQoKCglmdW5jdGlvbiBnZXRWaWV3KCkgewoJCXJldHVybiBjdXJyZW50VmlldzsKCX0KCgoJZnVuY3Rpb24gb3B0aW9uKG5hbWUsIHZhbHVlKSB7CgkJdmFyIG5ld09wdGlvbkhhc2g7CgoJCWlmICh0eXBlb2YgbmFtZSA9PT0gJ3N0cmluZycpIHsKCQkJaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHsgLy8gZ2V0dGVyCgkJCQlyZXR1cm4gdC5vcHRpb25zW25hbWVdOwoJCQl9CgkJCWVsc2UgeyAvLyBzZXR0ZXIgZm9yIGluZGl2aWR1YWwgb3B0aW9uCgkJCQluZXdPcHRpb25IYXNoID0ge307CgkJCQluZXdPcHRpb25IYXNoW25hbWVdID0gdmFsdWU7CgkJCQlzZXRPcHRpb25zKG5ld09wdGlvbkhhc2gpOwoJCQl9CgkJfQoJCWVsc2UgaWYgKHR5cGVvZiBuYW1lID09PSAnb2JqZWN0JykgeyAvLyBjb21wb3VuZCBzZXR0ZXIgd2l0aCBvYmplY3QgaW5wdXQKCQkJc2V0T3B0aW9ucyhuYW1lKTsKCQl9Cgl9CgoKCWZ1bmN0aW9uIHNldE9wdGlvbnMobmV3T3B0aW9uSGFzaCkgewoJCXZhciBvcHRpb25DbnQgPSAwOwoJCXZhciBvcHRpb25OYW1lOwoKCQlyZWNvcmRPcHRpb25PdmVycmlkZXMobmV3T3B0aW9uSGFzaCk7CgoJCWZvciAob3B0aW9uTmFtZSBpbiBuZXdPcHRpb25IYXNoKSB7CgkJCW9wdGlvbkNudCsrOwoJCX0KCgkJLy8gc3BlY2lhbC1jYXNlIGhhbmRsaW5nIG9mIHNpbmdsZSBvcHRpb24gY2hhbmdlLgoJCS8vIGlmIG9ubHkgb25lIG9wdGlvbiBjaGFuZ2UsIGBvcHRpb25OYW1lYCB3aWxsIGJlIGl0cyBuYW1lLgoJCWlmIChvcHRpb25DbnQgPT09IDEpIHsKCQkJaWYgKG9wdGlvbk5hbWUgPT09ICdoZWlnaHQnIHx8IG9wdGlvbk5hbWUgPT09ICdjb250ZW50SGVpZ2h0JyB8fCBvcHRpb25OYW1lID09PSAnYXNwZWN0UmF0aW8nKSB7CgkJCQl1cGRhdGVTaXplKHRydWUpOyAvLyB0cnVlID0gYWxsb3cgcmVjYWxjdWxhdGlvbiBvZiBoZWlnaHQKCQkJCXJldHVybjsKCQkJfQoJCQllbHNlIGlmIChvcHRpb25OYW1lID09PSAnZGVmYXVsdERhdGUnKSB7CgkJCQlyZXR1cm47IC8vIGNhbid0IGNoYW5nZSBkYXRlIHRoaXMgd2F5LiB1c2UgZ290b0RhdGUgaW5zdGVhZAoJCQl9CgkJCWVsc2UgaWYgKG9wdGlvbk5hbWUgPT09ICdidXNpbmVzc0hvdXJzJykgewoJCQkJaWYgKGN1cnJlbnRWaWV3KSB7CgkJCQkJY3VycmVudFZpZXcudW5yZW5kZXJCdXNpbmVzc0hvdXJzKCk7CgkJCQkJY3VycmVudFZpZXcucmVuZGVyQnVzaW5lc3NIb3VycygpOwoJCQkJfQoJCQkJcmV0dXJuOwoJCQl9CgkJCWVsc2UgaWYgKG9wdGlvbk5hbWUgPT09ICd0aW1lem9uZScpIHsKCQkJCXQucmV6b25lQXJyYXlFdmVudFNvdXJjZXMoKTsKCQkJCXQucmVmZXRjaEV2ZW50cygpOwoJCQkJcmV0dXJuOwoJCQl9CgkJfQoKCQkvLyBjYXRjaC1hbGwuIHJlcmVuZGVyIHRoZSBoZWFkZXIgYW5kIGZvb3RlciBhbmQgcmVidWlsZC9yZXJlbmRlciB0aGUgY3VycmVudCB2aWV3CgkJcmVuZGVySGVhZGVyKCk7CgkJcmVuZGVyRm9vdGVyKCk7CgkJdmlld3NCeVR5cGUgPSB7fTsgLy8gZXZlbiBub24tY3VycmVudCB2aWV3cyB3aWxsIGJlIGFmZmVjdGVkIGJ5IHRoaXMgb3B0aW9uIGNoYW5nZS4gZG8gYmVmb3JlIHJlcmVuZGVyCgkJcmVpbml0VmlldygpOwoJfQoKCgkvLyBzdG9yZXMgdGhlIG5ldyBvcHRpb25zIGludGVybmFsbHksIGJ1dCBkb2VzIG5vdCByZXJlbmRlciBhbnl0aGluZy4KCWZ1bmN0aW9uIHJlY29yZE9wdGlvbk92ZXJyaWRlcyhuZXdPcHRpb25IYXNoKSB7CgkJdmFyIG9wdGlvbk5hbWU7CgoJCWZvciAob3B0aW9uTmFtZSBpbiBuZXdPcHRpb25IYXNoKSB7CgkJCXQuZHluYW1pY092ZXJyaWRlc1tvcHRpb25OYW1lXSA9IG5ld09wdGlvbkhhc2hbb3B0aW9uTmFtZV07CgkJfQoKCQl0LnZpZXdTcGVjQ2FjaGUgPSB7fTsgLy8gdGhlIGR5bmFtaWMgb3ZlcnJpZGUgaW52YWxpZGF0ZXMgdGhlIG9wdGlvbnMgaW4gdGhpcyBjYWNoZSwgc28ganVzdCBjbGVhciBpdAoJCXQucG9wdWxhdGVPcHRpb25zSGFzaCgpOyAvLyB0aGlzLm9wdGlvbnMgbmVlZHMgdG8gYmUgcmVjb21wdXRlZCBhZnRlciB0aGUgZHluYW1pYyBvdmVycmlkZQoKCQkvLyB0cmlnZ2VyIGhhbmRsZXJzIGFmdGVyIHRoaXMub3B0aW9ucyBoYXMgYmVlbiB1cGRhdGVkCgkJZm9yIChvcHRpb25OYW1lIGluIG5ld09wdGlvbkhhc2gpIHsKCQkJdC50cmlnZ2VyT3B0aW9uSGFuZGxlcnMob3B0aW9uTmFtZSk7IC8vIHJlY2FsbCBiaW5kT3B0aW9uL2JpbmRPcHRpb25zCgkJfQoJfQoKCglmdW5jdGlvbiBwdWJsaWNseVRyaWdnZXIobmFtZSwgdGhpc09iaikgewoJCXZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKTsKCgkJdGhpc09iaiA9IHRoaXNPYmogfHwgX2VsZW1lbnQ7CgkJdGhpcy50cmlnZ2VyV2l0aChuYW1lLCB0aGlzT2JqLCBhcmdzKTsgLy8gRW1pdHRlcidzIG1ldGhvZAoKCQlpZiAodC5vcHRpb25zW25hbWVdKSB7CgkJCXJldHVybiB0Lm9wdGlvbnNbbmFtZV0uYXBwbHkodGhpc09iaiwgYXJncyk7CgkJfQoJfQoKCXQuaW5pdGlhbGl6ZSgpOwp9Cgo7OwovKgpPcHRpb25zIGJpbmRpbmcvdHJpZ2dlcmluZyBzeXN0ZW0uCiovCkNhbGVuZGFyLm1peGluKHsKCgkvLyBBIG1hcCBvZiBvcHRpb24gbmFtZXMgdG8gYXJyYXlzIG9mIGhhbmRsZXIgb2JqZWN0cy4gSW5pdGlhbGl6ZWQgdG8ge30gaW4gQ2FsZW5kYXIuCgkvLyBGb3JtYXQgZm9yIGEgaGFuZGxlciBvYmplY3Q6CgkvLyB7CgkvLyAgIGZ1bmMgLy8gY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHVwb24gY2hhbmdlCgkvLyAgIG5hbWVzIC8vIG9wdGlvbiBuYW1lcyB3aG9zZSB2YWx1ZXMgc2hvdWxkIGJlIGdpdmVuIHRvIGZ1bmMKCS8vIH0KCW9wdGlvbkhhbmRsZXJzOiBudWxsLCAKCgkvLyBDYWxscyBoYW5kbGVyRnVuYyBpbW1lZGlhdGVseSwgYW5kIHdoZW4gdGhlIGdpdmVuIG9wdGlvbiBoYXMgY2hhbmdlZC4KCS8vIGhhbmRsZXJGdW5jIHdpbGwgYmUgZ2l2ZW4gdGhlIG9wdGlvbiB2YWx1ZS4KCWJpbmRPcHRpb246IGZ1bmN0aW9uKG9wdGlvbk5hbWUsIGhhbmRsZXJGdW5jKSB7CgkJdGhpcy5iaW5kT3B0aW9ucyhbIG9wdGlvbk5hbWUgXSwgaGFuZGxlckZ1bmMpOwoJfSwKCgkvLyBDYWxscyBoYW5kbGVyRnVuYyBpbW1lZGlhdGVseSwgYW5kIHdoZW4gYW55IG9mIHRoZSBnaXZlbiBvcHRpb25zIGNoYW5nZS4KCS8vIGhhbmRsZXJGdW5jIHdpbGwgYmUgZ2l2ZW4gZWFjaCBvcHRpb24gdmFsdWUgYXMgb3JkZXJlZCBmdW5jdGlvbiBhcmd1bWVudHMuCgliaW5kT3B0aW9uczogZnVuY3Rpb24ob3B0aW9uTmFtZXMsIGhhbmRsZXJGdW5jKSB7CgkJdmFyIGhhbmRsZXJPYmogPSB7IGZ1bmM6IGhhbmRsZXJGdW5jLCBuYW1lczogb3B0aW9uTmFtZXMgfTsKCQl2YXIgaTsKCgkJZm9yIChpID0gMDsgaSA8IG9wdGlvbk5hbWVzLmxlbmd0aDsgaSsrKSB7CgkJCXRoaXMucmVnaXN0ZXJPcHRpb25IYW5kbGVyT2JqKG9wdGlvbk5hbWVzW2ldLCBoYW5kbGVyT2JqKTsKCQl9CgoJCXRoaXMudHJpZ2dlck9wdGlvbkhhbmRsZXJPYmooaGFuZGxlck9iaik7Cgl9LAoKCS8vIFB1dHMgdGhlIGdpdmVuIGhhbmRsZXIgb2JqZWN0IGludG8gdGhlIGludGVybmFsIGhhc2gKCXJlZ2lzdGVyT3B0aW9uSGFuZGxlck9iajogZnVuY3Rpb24ob3B0aW9uTmFtZSwgaGFuZGxlck9iaikgewoJCSh0aGlzLm9wdGlvbkhhbmRsZXJzW29wdGlvbk5hbWVdIHx8ICh0aGlzLm9wdGlvbkhhbmRsZXJzW29wdGlvbk5hbWVdID0gW10pKQoJCQkucHVzaChoYW5kbGVyT2JqKTsKCX0sCgoJLy8gUmVwb3J0cyB0aGF0IHRoZSBnaXZlbiBvcHRpb24gaGFzIGNoYW5nZWQsIGFuZCBjYWxscyBhbGwgYXBwcm9wcmlhdGUgaGFuZGxlcnMuCgl0cmlnZ2VyT3B0aW9uSGFuZGxlcnM6IGZ1bmN0aW9uKG9wdGlvbk5hbWUpIHsKCQl2YXIgaGFuZGxlck9ianMgPSB0aGlzLm9wdGlvbkhhbmRsZXJzW29wdGlvbk5hbWVdIHx8IFtdOwoJCXZhciBpOwoKCQlmb3IgKGkgPSAwOyBpIDwgaGFuZGxlck9ianMubGVuZ3RoOyBpKyspIHsKCQkJdGhpcy50cmlnZ2VyT3B0aW9uSGFuZGxlck9iaihoYW5kbGVyT2Jqc1tpXSk7CgkJfQoJfSwKCgkvLyBDYWxscyB0aGUgY2FsbGJhY2sgZm9yIGEgc3BlY2lmaWMgaGFuZGxlciBvYmplY3QsIHBhc3NpbmcgaW4gdGhlIGFwcHJvcHJpYXRlIGFyZ3VtZW50cy4KCXRyaWdnZXJPcHRpb25IYW5kbGVyT2JqOiBmdW5jdGlvbihoYW5kbGVyT2JqKSB7CgkJdmFyIG9wdGlvbk5hbWVzID0gaGFuZGxlck9iai5uYW1lczsKCQl2YXIgb3B0aW9uVmFsdWVzID0gW107CgkJdmFyIGk7CgoJCWZvciAoaSA9IDA7IGkgPCBvcHRpb25OYW1lcy5sZW5ndGg7IGkrKykgewoJCQlvcHRpb25WYWx1ZXMucHVzaCh0aGlzLm9wdGlvbnNbb3B0aW9uTmFtZXNbaV1dKTsKCQl9CgoJCWhhbmRsZXJPYmouZnVuYy5hcHBseSh0aGlzLCBvcHRpb25WYWx1ZXMpOyAvLyBtYWludGFpbiB0aGUgQ2FsZW5kYXIncyBgdGhpc2AgY29udGV4dAoJfQoKfSk7Cgo7OwoKQ2FsZW5kYXIuZGVmYXVsdHMgPSB7CgoJdGl0bGVSYW5nZVNlcGFyYXRvcjogJyBcdTIwMTMgJywgLy8gZW4gZGFzaAoJbW9udGhZZWFyRm9ybWF0OiAnTU1NTSBZWVlZJywgLy8gcmVxdWlyZWQgZm9yIGVuLiBvdGhlciBsb2NhbGVzIHJlbHkgb24gZGF0ZXBpY2tlciBjb21wdXRhYmxlIG9wdGlvbgoKCWRlZmF1bHRUaW1lZEV2ZW50RHVyYXRpb246ICcwMjowMDowMCcsCglkZWZhdWx0QWxsRGF5RXZlbnREdXJhdGlvbjogeyBkYXlzOiAxIH0sCglmb3JjZUV2ZW50RHVyYXRpb246IGZhbHNlLAoJbmV4dERheVRocmVzaG9sZDogJzA5OjAwOjAwJywgLy8gOWFtCgoJLy8gZGlzcGxheQoJZGVmYXVsdFZpZXc6ICdtb250aCcsCglhc3BlY3RSYXRpbzogMS4zNSwKCWhlYWRlcjogewoJCWxlZnQ6ICd0aXRsZScsCgkJY2VudGVyOiAnJywKCQlyaWdodDogJ3RvZGF5IHByZXYsbmV4dCcKCX0sCgl3ZWVrZW5kczogdHJ1ZSwKCXdlZWtOdW1iZXJzOiBmYWxzZSwKCgl3ZWVrTnVtYmVyVGl0bGU6ICdXJywKCXdlZWtOdW1iZXJDYWxjdWxhdGlvbjogJ2xvY2FsJywKCQoJLy9lZGl0YWJsZTogZmFsc2UsCgoJLy9ub3dJbmRpY2F0b3I6IGZhbHNlLAoKCXNjcm9sbFRpbWU6ICcwNjowMDowMCcsCgltaW5UaW1lOiAnMDA6MDA6MDAnLAoJbWF4VGltZTogJzI0OjAwOjAwJywKCXNob3dOb25DdXJyZW50RGF0ZXM6IHRydWUsCgkKCS8vIGV2ZW50IGFqYXgKCWxhenlGZXRjaGluZzogdHJ1ZSwKCXN0YXJ0UGFyYW06ICdzdGFydCcsCgllbmRQYXJhbTogJ2VuZCcsCgl0aW1lem9uZVBhcmFtOiAndGltZXpvbmUnLAoKCXRpbWV6b25lOiBmYWxzZSwKCgkvL2FsbERheURlZmF1bHQ6IHVuZGVmaW5lZCwKCgkvLyBsb2NhbGUKCWlzUlRMOiBmYWxzZSwKCWJ1dHRvblRleHQ6IHsKCQlwcmV2OiAicHJldiIsCgkJbmV4dDogIm5leHQiLAoJCXByZXZZZWFyOiAicHJldiB5ZWFyIiwKCQluZXh0WWVhcjogIm5leHQgeWVhciIsCgkJeWVhcjogJ3llYXInLCAvLyBUT0RPOiBsb2NhbGUgZmlsZXMgbmVlZCB0byBzcGVjaWZ5IHRoaXMKCQl0b2RheTogJ3RvZGF5JywKCQltb250aDogJ21vbnRoJywKCQl3ZWVrOiAnd2VlaycsCgkJZGF5OiAnZGF5JwoJfSwKCglidXR0b25JY29uczogewoJCXByZXY6ICdsZWZ0LXNpbmdsZS1hcnJvdycsCgkJbmV4dDogJ3JpZ2h0LXNpbmdsZS1hcnJvdycsCgkJcHJldlllYXI6ICdsZWZ0LWRvdWJsZS1hcnJvdycsCgkJbmV4dFllYXI6ICdyaWdodC1kb3VibGUtYXJyb3cnCgl9LAoKCWFsbERheVRleHQ6ICdhbGwtZGF5JywKCQoJLy8ganF1ZXJ5LXVpIHRoZW1pbmcKCXRoZW1lOiBmYWxzZSwKCXRoZW1lQnV0dG9uSWNvbnM6IHsKCQlwcmV2OiAnY2lyY2xlLXRyaWFuZ2xlLXcnLAoJCW5leHQ6ICdjaXJjbGUtdHJpYW5nbGUtZScsCgkJcHJldlllYXI6ICdzZWVrLXByZXYnLAoJCW5leHRZZWFyOiAnc2Vlay1uZXh0JwoJfSwKCgkvL2V2ZW50UmVzaXphYmxlRnJvbVN0YXJ0OiBmYWxzZSwKCWRyYWdPcGFjaXR5OiAuNzUsCglkcmFnUmV2ZXJ0RHVyYXRpb246IDUwMCwKCWRyYWdTY3JvbGw6IHRydWUsCgkKCS8vc2VsZWN0YWJsZTogZmFsc2UsCgl1bnNlbGVjdEF1dG86IHRydWUsCgkvL3NlbGVjdE1pbkRpc3RhbmNlOiAwLAoJCglkcm9wQWNjZXB0OiAnKicsCgoJZXZlbnRPcmRlcjogJ3RpdGxlJywKCS8vZXZlbnRSZW5kZXJXYWl0OiBudWxsLAoKCWV2ZW50TGltaXQ6IGZhbHNlLAoJZXZlbnRMaW1pdFRleHQ6ICdtb3JlJywKCWV2ZW50TGltaXRDbGljazogJ3BvcG92ZXInLAoJZGF5UG9wb3ZlckZvcm1hdDogJ0xMJywKCQoJaGFuZGxlV2luZG93UmVzaXplOiB0cnVlLAoJd2luZG93UmVzaXplRGVsYXk6IDEwMCwgLy8gbWlsbGlzZWNvbmRzIGJlZm9yZSBhbiB1cGRhdGVTaXplIGhhcHBlbnMKCglsb25nUHJlc3NEZWxheTogMTAwMAoJCn07CgoKQ2FsZW5kYXIuZW5nbGlzaERlZmF1bHRzID0geyAvLyB1c2VkIGJ5IGxvY2FsZS5qcwoJZGF5UG9wb3ZlckZvcm1hdDogJ2RkZGQsIE1NTU0gRCcKfTsKCgpDYWxlbmRhci5ydGxEZWZhdWx0cyA9IHsgLy8gcmlnaHQtdG8tbGVmdCBkZWZhdWx0cwoJaGVhZGVyOiB7IC8vIFRPRE86IHNtYXJ0ZXIgc29sdXRpb24gKGZpcnN0L2NlbnRlci9sYXN0ID8pCgkJbGVmdDogJ25leHQscHJldiB0b2RheScsCgkJY2VudGVyOiAnJywKCQlyaWdodDogJ3RpdGxlJwoJfSwKCWJ1dHRvbkljb25zOiB7CgkJcHJldjogJ3JpZ2h0LXNpbmdsZS1hcnJvdycsCgkJbmV4dDogJ2xlZnQtc2luZ2xlLWFycm93JywKCQlwcmV2WWVhcjogJ3JpZ2h0LWRvdWJsZS1hcnJvdycsCgkJbmV4dFllYXI6ICdsZWZ0LWRvdWJsZS1hcnJvdycKCX0sCgl0aGVtZUJ1dHRvbkljb25zOiB7CgkJcHJldjogJ2NpcmNsZS10cmlhbmdsZS1lJywKCQluZXh0OiAnY2lyY2xlLXRyaWFuZ2xlLXcnLAoJCW5leHRZZWFyOiAnc2Vlay1wcmV2JywKCQlwcmV2WWVhcjogJ3NlZWstbmV4dCcKCX0KfTsKCjs7Cgp2YXIgbG9jYWxlT3B0aW9uSGFzaCA9IEZDLmxvY2FsZXMgPSB7fTsgLy8gaW5pdGlhbGl6ZSBhbmQgZXhwb3NlCgoKLy8gVE9ETzogZG9jdW1lbnQgdGhlIHN0cnVjdHVyZSBhbmQgb3JkZXJpbmcgb2YgYSBGdWxsQ2FsZW5kYXIgbG9jYWxlIGZpbGUKCgovLyBJbml0aWFsaXplIGpRdWVyeSBVSSBkYXRlcGlja2VyIHRyYW5zbGF0aW9ucyB3aGlsZSB1c2luZyBzb21lIG9mIHRoZSB0cmFuc2xhdGlvbnMKLy8gV2lsbCBzZXQgdGhpcyBhcyB0aGUgZGVmYXVsdCBsb2NhbGVzIGZvciBkYXRlcGlja2VyLgpGQy5kYXRlcGlja2VyTG9jYWxlID0gZnVuY3Rpb24obG9jYWxlQ29kZSwgZHBMb2NhbGVDb2RlLCBkcE9wdGlvbnMpIHsKCgkvLyBnZXQgdGhlIEZ1bGxDYWxlbmRhciBpbnRlcm5hbCBvcHRpb24gaGFzaCBmb3IgdGhpcyBsb2NhbGUuIGNyZWF0ZSBpZiBuZWNlc3NhcnkKCXZhciBmY09wdGlvbnMgPSBsb2NhbGVPcHRpb25IYXNoW2xvY2FsZUNvZGVdIHx8IChsb2NhbGVPcHRpb25IYXNoW2xvY2FsZUNvZGVdID0ge30pOwoKCS8vIHRyYW5zZmVyIHNvbWUgc2ltcGxlIG9wdGlvbnMgZnJvbSBkYXRlcGlja2VyIHRvIGZjCglmY09wdGlvbnMuaXNSVEwgPSBkcE9wdGlvbnMuaXNSVEw7CglmY09wdGlvbnMud2Vla051bWJlclRpdGxlID0gZHBPcHRpb25zLndlZWtIZWFkZXI7CgoJLy8gY29tcHV0ZSBzb21lIG1vcmUgY29tcGxleCBvcHRpb25zIGZyb20gZGF0ZXBpY2tlcgoJJC5lYWNoKGRwQ29tcHV0YWJsZU9wdGlvbnMsIGZ1bmN0aW9uKG5hbWUsIGZ1bmMpIHsKCQlmY09wdGlvbnNbbmFtZV0gPSBmdW5jKGRwT3B0aW9ucyk7Cgl9KTsKCgkvLyBpcyBqUXVlcnkgVUkgRGF0ZXBpY2tlciBpcyBvbiB0aGUgcGFnZT8KCWlmICgkLmRhdGVwaWNrZXIpIHsKCgkJLy8gUmVnaXN0ZXIgdGhlIGxvY2FsZSBkYXRhLgoJCS8vIEZ1bGxDYWxlbmRhciBhbmQgTW9tZW50SlMgdXNlIGxvY2FsZSBjb2RlcyBsaWtlICJwdC1iciIgYnV0IERhdGVwaWNrZXIKCQkvLyBkb2VzIGl0IGxpa2UgInB0LUJSIiBvciBpZiBpdCBkb2Vzbid0IGhhdmUgdGhlIGxvY2FsZSwgbWF5YmUganVzdCAicHQiLgoJCS8vIE1ha2UgYW4gYWxpYXMgc28gdGhlIGxvY2FsZSBjYW4gYmUgcmVmZXJlbmNlZCBlaXRoZXIgd2F5LgoJCSQuZGF0ZXBpY2tlci5yZWdpb25hbFtkcExvY2FsZUNvZGVdID0KCQkJJC5kYXRlcGlja2VyLnJlZ2lvbmFsW2xvY2FsZUNvZGVdID0gLy8gYWxpYXMKCQkJCWRwT3B0aW9uczsKCgkJLy8gQWxpYXMgJ2VuJyB0byB0aGUgZGVmYXVsdCBsb2NhbGUgZGF0YS4gRG8gdGhpcyBldmVyeSB0aW1lLgoJCSQuZGF0ZXBpY2tlci5yZWdpb25hbC5lbiA9ICQuZGF0ZXBpY2tlci5yZWdpb25hbFsnJ107CgoJCS8vIFNldCBhcyBEYXRlcGlja2VyJ3MgZ2xvYmFsIGRlZmF1bHRzLgoJCSQuZGF0ZXBpY2tlci5zZXREZWZhdWx0cyhkcE9wdGlvbnMpOwoJfQp9OwoKCi8vIFNldHMgRnVsbENhbGVuZGFyLXNwZWNpZmljIHRyYW5zbGF0aW9ucy4gV2lsbCBzZXQgdGhlIGxvY2FsZXMgYXMgdGhlIGdsb2JhbCBkZWZhdWx0LgpGQy5sb2NhbGUgPSBmdW5jdGlvbihsb2NhbGVDb2RlLCBuZXdGY09wdGlvbnMpIHsKCXZhciBmY09wdGlvbnM7Cgl2YXIgbW9tT3B0aW9uczsKCgkvLyBnZXQgdGhlIEZ1bGxDYWxlbmRhciBpbnRlcm5hbCBvcHRpb24gaGFzaCBmb3IgdGhpcyBsb2NhbGUuIGNyZWF0ZSBpZiBuZWNlc3NhcnkKCWZjT3B0aW9ucyA9IGxvY2FsZU9wdGlvbkhhc2hbbG9jYWxlQ29kZV0gfHwgKGxvY2FsZU9wdGlvbkhhc2hbbG9jYWxlQ29kZV0gPSB7fSk7CgoJLy8gcHJvdmlkZWQgbmV3IG9wdGlvbnMgZm9yIHRoaXMgbG9jYWxlcz8gbWVyZ2UgdGhlbSBpbgoJaWYgKG5ld0ZjT3B0aW9ucykgewoJCWZjT3B0aW9ucyA9IGxvY2FsZU9wdGlvbkhhc2hbbG9jYWxlQ29kZV0gPSBtZXJnZU9wdGlvbnMoWyBmY09wdGlvbnMsIG5ld0ZjT3B0aW9ucyBdKTsKCX0KCgkvLyBjb21wdXRlIGxvY2FsZSBvcHRpb25zIHRoYXQgd2VyZW4ndCBkZWZpbmVkLgoJLy8gYWx3YXlzIGRvIHRoaXMuIG5ld0ZjT3B0aW9ucyBjYW4gYmUgdW5kZWZpbmVkIHdoZW4gaW5pdGlhbGl6aW5nIGZyb20gaTE4biBmaWxlLAoJLy8gc28gbm8gd2F5IHRvIHRlbGwgaWYgdGhpcyBpcyBhbiBpbml0aWFsaXphdGlvbiBvciBhIGRlZmF1bHQtc2V0dGluZy4KCW1vbU9wdGlvbnMgPSBnZXRNb21lbnRMb2NhbGVEYXRhKGxvY2FsZUNvZGUpOyAvLyB3aWxsIGZhbGwgYmFjayB0byBlbgoJJC5lYWNoKG1vbUNvbXB1dGFibGVPcHRpb25zLCBmdW5jdGlvbihuYW1lLCBmdW5jKSB7CgkJaWYgKGZjT3B0aW9uc1tuYW1lXSA9PSBudWxsKSB7CgkJCWZjT3B0aW9uc1tuYW1lXSA9IGZ1bmMobW9tT3B0aW9ucywgZmNPcHRpb25zKTsKCQl9Cgl9KTsKCgkvLyBzZXQgaXQgYXMgdGhlIGRlZmF1bHQgbG9jYWxlIGZvciBGdWxsQ2FsZW5kYXIKCUNhbGVuZGFyLmRlZmF1bHRzLmxvY2FsZSA9IGxvY2FsZUNvZGU7Cn07CgoKLy8gTk9URTogY2FuJ3QgZ3VhcmFudGVlIGFueSBvZiB0aGVzZSBjb21wdXRhdGlvbnMgd2lsbCBydW4gYmVjYXVzZSBub3QgZXZlcnkgbG9jYWxlIGhhcyBkYXRlcGlja2VyCi8vIGNvbmZpZ3MsIHNvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgRW5nbGlzaCBmYWxsYmFja3MgZm9yIHRoZXNlIGluIHRoZSBkZWZhdWx0cyBmaWxlLgp2YXIgZHBDb21wdXRhYmxlT3B0aW9ucyA9IHsKCglidXR0b25UZXh0OiBmdW5jdGlvbihkcE9wdGlvbnMpIHsKCQlyZXR1cm4gewoJCQkvLyB0aGUgdHJhbnNsYXRpb25zIHNvbWV0aW1lcyB3cm9uZ2x5IGNvbnRhaW4gSFRNTCBlbnRpdGllcwoJCQlwcmV2OiBzdHJpcEh0bWxFbnRpdGllcyhkcE9wdGlvbnMucHJldlRleHQpLAoJCQluZXh0OiBzdHJpcEh0bWxFbnRpdGllcyhkcE9wdGlvbnMubmV4dFRleHQpLAoJCQl0b2RheTogc3RyaXBIdG1sRW50aXRpZXMoZHBPcHRpb25zLmN1cnJlbnRUZXh0KQoJCX07Cgl9LAoKCS8vIFByb2R1Y2VzIGZvcm1hdCBzdHJpbmdzIGxpa2UgIk1NTU0gWVlZWSIgLT4gIlNlcHRlbWJlciAyMDE0IgoJbW9udGhZZWFyRm9ybWF0OiBmdW5jdGlvbihkcE9wdGlvbnMpIHsKCQlyZXR1cm4gZHBPcHRpb25zLnNob3dNb250aEFmdGVyWWVhciA/CgkJCSdZWVlZWycgKyBkcE9wdGlvbnMueWVhclN1ZmZpeCArICddIE1NTU0nIDoKCQkJJ01NTU0gWVlZWVsnICsgZHBPcHRpb25zLnllYXJTdWZmaXggKyAnXSc7Cgl9Cgp9OwoKdmFyIG1vbUNvbXB1dGFibGVPcHRpb25zID0gewoKCS8vIFByb2R1Y2VzIGZvcm1hdCBzdHJpbmdzIGxpa2UgImRkZCBNL0QiIC0+ICJGcmkgOS8xNSIKCWRheU9mTW9udGhGb3JtYXQ6IGZ1bmN0aW9uKG1vbU9wdGlvbnMsIGZjT3B0aW9ucykgewoJCXZhciBmb3JtYXQgPSBtb21PcHRpb25zLmxvbmdEYXRlRm9ybWF0KCdsJyk7IC8vIGZvciB0aGUgZm9ybWF0IGxpa2UgIk0vRC9ZWVlZIgoKCQkvLyBzdHJpcCB0aGUgeWVhciBvZmYgdGhlIGVkZ2UsIGFzIHdlbGwgYXMgb3RoZXIgbWlzYyBub24td2hpdGVzcGFjZSBjaGFycwoJCWZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKC9eWStbXlx3XHNdKnxbXlx3XHNdKlkrJC9nLCAnJyk7CgoJCWlmIChmY09wdGlvbnMuaXNSVEwpIHsKCQkJZm9ybWF0ICs9ICcgZGRkJzsgLy8gZm9yIFJUTCwgYWRkIGRheS1vZi13ZWVrIHRvIGVuZAoJCX0KCQllbHNlIHsKCQkJZm9ybWF0ID0gJ2RkZCAnICsgZm9ybWF0OyAvLyBmb3IgTFRSLCBhZGQgZGF5LW9mLXdlZWsgdG8gYmVnaW5uaW5nCgkJfQoJCXJldHVybiBmb3JtYXQ7Cgl9LAoKCS8vIFByb2R1Y2VzIGZvcm1hdCBzdHJpbmdzIGxpa2UgImg6bW1hIiAtPiAiNjowMHBtIgoJbWVkaXVtVGltZUZvcm1hdDogZnVuY3Rpb24obW9tT3B0aW9ucykgeyAvLyBjYW4ndCBiZSBjYWxsZWQgYHRpbWVGb3JtYXRgIGJlY2F1c2UgY29sbGlkZXMgd2l0aCBvcHRpb24KCQlyZXR1cm4gbW9tT3B0aW9ucy5sb25nRGF0ZUZvcm1hdCgnTFQnKQoJCQkucmVwbGFjZSgvXHMqYSQvaSwgJ2EnKTsgLy8gY29udmVydCBBTS9QTS9hbS9wbSB0byBsb3dlcmNhc2UuIHJlbW92ZSBhbnkgc3BhY2VzIGJlZm9yZWhhbmQKCX0sCgoJLy8gUHJvZHVjZXMgZm9ybWF0IHN0cmluZ3MgbGlrZSAiaCg6bW0pYSIgLT4gIjZwbSIgLyAiNjozMHBtIgoJc21hbGxUaW1lRm9ybWF0OiBmdW5jdGlvbihtb21PcHRpb25zKSB7CgkJcmV0dXJuIG1vbU9wdGlvbnMubG9uZ0RhdGVGb3JtYXQoJ0xUJykKCQkJLnJlcGxhY2UoJzptbScsICcoOm1tKScpCgkJCS5yZXBsYWNlKC8oXFdtbSkkLywgJygkMSknKSAvLyBsaWtlIGFib3ZlLCBidXQgZm9yIGZvcmVpZ24gbG9jYWxlcwoJCQkucmVwbGFjZSgvXHMqYSQvaSwgJ2EnKTsgLy8gY29udmVydCBBTS9QTS9hbS9wbSB0byBsb3dlcmNhc2UuIHJlbW92ZSBhbnkgc3BhY2VzIGJlZm9yZWhhbmQKCX0sCgoJLy8gUHJvZHVjZXMgZm9ybWF0IHN0cmluZ3MgbGlrZSAiaCg6bW0pdCIgLT4gIjZwIiAvICI2OjMwcCIKCWV4dHJhU21hbGxUaW1lRm9ybWF0OiBmdW5jdGlvbihtb21PcHRpb25zKSB7CgkJcmV0dXJuIG1vbU9wdGlvbnMubG9uZ0RhdGVGb3JtYXQoJ0xUJykKCQkJLnJlcGxhY2UoJzptbScsICcoOm1tKScpCgkJCS5yZXBsYWNlKC8oXFdtbSkkLywgJygkMSknKSAvLyBsaWtlIGFib3ZlLCBidXQgZm9yIGZvcmVpZ24gbG9jYWxlcwoJCQkucmVwbGFjZSgvXHMqYSQvaSwgJ3QnKTsgLy8gY29udmVydCB0byBBTS9QTS9hbS9wbSB0byBsb3dlcmNhc2Ugb25lLWxldHRlci4gcmVtb3ZlIGFueSBzcGFjZXMgYmVmb3JlaGFuZAoJfSwKCgkvLyBQcm9kdWNlcyBmb3JtYXQgc3RyaW5ncyBsaWtlICJoYSIgLyAiSCIgLT4gIjZwbSIgLyAiMTgiCglob3VyRm9ybWF0OiBmdW5jdGlvbihtb21PcHRpb25zKSB7CgkJcmV0dXJuIG1vbU9wdGlvbnMubG9uZ0RhdGVGb3JtYXQoJ0xUJykKCQkJLnJlcGxhY2UoJzptbScsICcnKQoJCQkucmVwbGFjZSgvKFxXbW0pJC8sICcnKSAvLyBsaWtlIGFib3ZlLCBidXQgZm9yIGZvcmVpZ24gbG9jYWxlcwoJCQkucmVwbGFjZSgvXHMqYSQvaSwgJ2EnKTsgLy8gY29udmVydCBBTS9QTS9hbS9wbSB0byBsb3dlcmNhc2UuIHJlbW92ZSBhbnkgc3BhY2VzIGJlZm9yZWhhbmQKCX0sCgoJLy8gUHJvZHVjZXMgZm9ybWF0IHN0cmluZ3MgbGlrZSAiaDptbSIgLT4gIjY6MzAiICh3aXRoIG5vIEFNL1BNKQoJbm9NZXJpZGllbVRpbWVGb3JtYXQ6IGZ1bmN0aW9uKG1vbU9wdGlvbnMpIHsKCQlyZXR1cm4gbW9tT3B0aW9ucy5sb25nRGF0ZUZvcm1hdCgnTFQnKQoJCQkucmVwbGFjZSgvXHMqYSQvaSwgJycpOyAvLyByZW1vdmUgdHJhaWxpbmcgQU0vUE0KCX0KCn07CgoKLy8gb3B0aW9ucyB0aGF0IHNob3VsZCBiZSBjb21wdXRlZCBvZmYgbGl2ZSBjYWxlbmRhciBvcHRpb25zIChjb25zaWRlcnMgb3ZlcnJpZGUgb3B0aW9ucykKLy8gVE9ETzogYmVzdCBwbGFjZSBmb3IgdGhpcz8gcmVsYXRlZCB0byBsb2NhbGU/Ci8vIFRPRE86IGZsaXBwaW5nIHRleHQgYmFzZWQgb24gaXNSVEwgaXMgYSBiYWQgaWRlYSBiZWNhdXNlIHRoZSBDU1MgYGRpcmVjdGlvbmAgbWlnaHQgd2FudCB0byBoYW5kbGUgaXQKdmFyIGluc3RhbmNlQ29tcHV0YWJsZU9wdGlvbnMgPSB7CgoJLy8gUHJvZHVjZXMgZm9ybWF0IHN0cmluZ3MgZm9yIHJlc3VsdHMgbGlrZSAiTW8gMTYiCglzbWFsbERheURhdGVGb3JtYXQ6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKCQlyZXR1cm4gb3B0aW9ucy5pc1JUTCA/CgkJCSdEIGRkJyA6CgkJCSdkZCBEJzsKCX0sCgoJLy8gUHJvZHVjZXMgZm9ybWF0IHN0cmluZ3MgZm9yIHJlc3VsdHMgbGlrZSAiV2sgNSIKCXdlZWtGb3JtYXQ6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKCQlyZXR1cm4gb3B0aW9ucy5pc1JUTCA/CgkJCSd3WyAnICsgb3B0aW9ucy53ZWVrTnVtYmVyVGl0bGUgKyAnXScgOgoJCQknWycgKyBvcHRpb25zLndlZWtOdW1iZXJUaXRsZSArICcgXXcnOwoJfSwKCgkvLyBQcm9kdWNlcyBmb3JtYXQgc3RyaW5ncyBmb3IgcmVzdWx0cyBsaWtlICJXazUiCglzbWFsbFdlZWtGb3JtYXQ6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKCQlyZXR1cm4gb3B0aW9ucy5pc1JUTCA/CgkJCSd3WycgKyBvcHRpb25zLndlZWtOdW1iZXJUaXRsZSArICddJyA6CgkJCSdbJyArIG9wdGlvbnMud2Vla051bWJlclRpdGxlICsgJ113JzsKCX0KCn07CgpmdW5jdGlvbiBwb3B1bGF0ZUluc3RhbmNlQ29tcHV0YWJsZU9wdGlvbnMob3B0aW9ucykgewoJJC5lYWNoKGluc3RhbmNlQ29tcHV0YWJsZU9wdGlvbnMsIGZ1bmN0aW9uKG5hbWUsIGZ1bmMpIHsKCQlpZiAob3B0aW9uc1tuYW1lXSA9PSBudWxsKSB7CgkJCW9wdGlvbnNbbmFtZV0gPSBmdW5jKG9wdGlvbnMpOwoJCX0KCX0pOwp9CgoKLy8gUmV0dXJucyBtb21lbnQncyBpbnRlcm5hbCBsb2NhbGUgZGF0YS4gSWYgZG9lc24ndCBleGlzdCwgcmV0dXJucyBFbmdsaXNoLgpmdW5jdGlvbiBnZXRNb21lbnRMb2NhbGVEYXRhKGxvY2FsZUNvZGUpIHsKCXJldHVybiBtb21lbnQubG9jYWxlRGF0YShsb2NhbGVDb2RlKSB8fCBtb21lbnQubG9jYWxlRGF0YSgnZW4nKTsKfQoKCi8vIEluaXRpYWxpemUgRW5nbGlzaCBieSBmb3JjaW5nIGNvbXB1dGF0aW9uIG9mIG1vbWVudC1kZXJpdmVkIG9wdGlvbnMuCi8vIEFsc28sIHNldHMgaXQgYXMgdGhlIGRlZmF1bHQuCkZDLmxvY2FsZSgnZW4nLCBDYWxlbmRhci5lbmdsaXNoRGVmYXVsdHMpOwoKOzsKCkZDLnNvdXJjZU5vcm1hbGl6ZXJzID0gW107CkZDLnNvdXJjZUZldGNoZXJzID0gW107Cgp2YXIgYWpheERlZmF1bHRzID0gewoJZGF0YVR5cGU6ICdqc29uJywKCWNhY2hlOiBmYWxzZQp9OwoKdmFyIGV2ZW50R1VJRCA9IDE7CgoKZnVuY3Rpb24gRXZlbnRNYW5hZ2VyKCkgeyAvLyBhc3N1bWVkIHRvIGJlIGEgY2FsZW5kYXIKCXZhciB0ID0gdGhpczsKCgoJLy8gZXhwb3J0cwoJdC5yZXF1ZXN0RXZlbnRzID0gcmVxdWVzdEV2ZW50czsKCXQucmVwb3J0RXZlbnRDaGFuZ2UgPSByZXBvcnRFdmVudENoYW5nZTsKCXQuaXNGZXRjaE5lZWRlZCA9IGlzRmV0Y2hOZWVkZWQ7Cgl0LmZldGNoRXZlbnRzID0gZmV0Y2hFdmVudHM7Cgl0LmZldGNoRXZlbnRTb3VyY2VzID0gZmV0Y2hFdmVudFNvdXJjZXM7Cgl0LnJlZmV0Y2hFdmVudHMgPSByZWZldGNoRXZlbnRzOwoJdC5yZWZldGNoRXZlbnRTb3VyY2VzID0gcmVmZXRjaEV2ZW50U291cmNlczsKCXQuZ2V0RXZlbnRTb3VyY2VzID0gZ2V0RXZlbnRTb3VyY2VzOwoJdC5nZXRFdmVudFNvdXJjZUJ5SWQgPSBnZXRFdmVudFNvdXJjZUJ5SWQ7Cgl0LmFkZEV2ZW50U291cmNlID0gYWRkRXZlbnRTb3VyY2U7Cgl0LnJlbW92ZUV2ZW50U291cmNlID0gcmVtb3ZlRXZlbnRTb3VyY2U7Cgl0LnJlbW92ZUV2ZW50U291cmNlcyA9IHJlbW92ZUV2ZW50U291cmNlczsKCXQudXBkYXRlRXZlbnQgPSB1cGRhdGVFdmVudDsKCXQudXBkYXRlRXZlbnRzID0gdXBkYXRlRXZlbnRzOwoJdC5yZW5kZXJFdmVudCA9IHJlbmRlckV2ZW50OwoJdC5yZW5kZXJFdmVudHMgPSByZW5kZXJFdmVudHM7Cgl0LnJlbW92ZUV2ZW50cyA9IHJlbW92ZUV2ZW50czsKCXQuY2xpZW50RXZlbnRzID0gY2xpZW50RXZlbnRzOwoJdC5tdXRhdGVFdmVudCA9IG11dGF0ZUV2ZW50OwoJdC5ub3JtYWxpemVFdmVudERhdGVzID0gbm9ybWFsaXplRXZlbnREYXRlczsKCXQubm9ybWFsaXplRXZlbnRUaW1lcyA9IG5vcm1hbGl6ZUV2ZW50VGltZXM7CgoKCS8vIGxvY2FscwoJdmFyIHN0aWNreVNvdXJjZSA9IHsgZXZlbnRzOiBbXSB9OwoJdmFyIHNvdXJjZXMgPSBbIHN0aWNreVNvdXJjZSBdOwoJdmFyIHJhbmdlU3RhcnQsIHJhbmdlRW5kOwoJdmFyIHBlbmRpbmdTb3VyY2VDbnQgPSAwOyAvLyBvdXRzdGFuZGluZyBmZXRjaCByZXF1ZXN0cywgbWF4IG9uZSBwZXIgc291cmNlCgl2YXIgY2FjaGUgPSBbXTsgLy8gaG9sZHMgZXZlbnRzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gZXhwYW5kZWQKCXZhciBwcnVuZWRDYWNoZTsgLy8gbGlrZSBjYWNoZSwgYnV0IG9ubHkgZXZlbnRzIHRoYXQgaW50ZXJzZWN0IHdpdGggcmFuZ2VTdGFydC9yYW5nZUVuZAoKCgkkLmVhY2goCgkJKHQub3B0aW9ucy5ldmVudHMgPyBbIHQub3B0aW9ucy5ldmVudHMgXSA6IFtdKS5jb25jYXQodC5vcHRpb25zLmV2ZW50U291cmNlcyB8fCBbXSksCgkJZnVuY3Rpb24oaSwgc291cmNlSW5wdXQpIHsKCQkJdmFyIHNvdXJjZSA9IGJ1aWxkRXZlbnRTb3VyY2Uoc291cmNlSW5wdXQpOwoJCQlpZiAoc291cmNlKSB7CgkJCQlzb3VyY2VzLnB1c2goc291cmNlKTsKCQkJfQoJCX0KCSk7CgoKCglmdW5jdGlvbiByZXF1ZXN0RXZlbnRzKHN0YXJ0LCBlbmQpIHsKCQlpZiAoIXQub3B0aW9ucy5sYXp5RmV0Y2hpbmcgfHwgaXNGZXRjaE5lZWRlZChzdGFydCwgZW5kKSkgewoJCQlyZXR1cm4gZmV0Y2hFdmVudHMoc3RhcnQsIGVuZCk7CgkJfQoJCWVsc2UgewoJCQlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHBydW5lZENhY2hlKTsKCQl9Cgl9CgoKCWZ1bmN0aW9uIHJlcG9ydEV2ZW50Q2hhbmdlKCkgewoJCXBydW5lZENhY2hlID0gZmlsdGVyRXZlbnRzV2l0aGluUmFuZ2UoY2FjaGUpOwoJCXQudHJpZ2dlcignZXZlbnRzUmVzZXQnLCBwcnVuZWRDYWNoZSk7Cgl9CgoKCWZ1bmN0aW9uIGZpbHRlckV2ZW50c1dpdGhpblJhbmdlKGV2ZW50cykgewoJCXZhciBmaWx0ZXJlZEV2ZW50cyA9IFtdOwoJCXZhciBpLCBldmVudDsKCgkJZm9yIChpID0gMDsgaSA8IGV2ZW50cy5sZW5ndGg7IGkrKykgewoJCQlldmVudCA9IGV2ZW50c1tpXTsKCgkJCWlmICgKCQkJCWV2ZW50LnN0YXJ0LmNsb25lKCkuc3RyaXBab25lKCkgPCByYW5nZUVuZCAmJgoJCQkJdC5nZXRFdmVudEVuZChldmVudCkuc3RyaXBab25lKCkgPiByYW5nZVN0YXJ0CgkJCSkgewoJCQkJZmlsdGVyZWRFdmVudHMucHVzaChldmVudCk7CgkJCX0KCQl9CgoJCXJldHVybiBmaWx0ZXJlZEV2ZW50czsKCX0KCgoJdC5nZXRFdmVudENhY2hlID0gZnVuY3Rpb24oKSB7CgkJcmV0dXJuIGNhY2hlOwoJfTsKCgoJdC5nZXRQcnVuZWRFdmVudENhY2hlID0gZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHBydW5lZENhY2hlOwoJfTsKCgoKCS8qIEZldGNoaW5nCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIHN0YXJ0IGFuZCBlbmQgYXJlIGFzc3VtZWQgdG8gYmUgdW56b25lZAoJZnVuY3Rpb24gaXNGZXRjaE5lZWRlZChzdGFydCwgZW5kKSB7CgkJcmV0dXJuICFyYW5nZVN0YXJ0IHx8IC8vIG5vdGhpbmcgaGFzIGJlZW4gZmV0Y2hlZCB5ZXQ/CgkJCXN0YXJ0IDwgcmFuZ2VTdGFydCB8fCBlbmQgPiByYW5nZUVuZDsgLy8gaXMgcGFydCBvZiB0aGUgbmV3IHJhbmdlIG91dHNpZGUgb2YgdGhlIG9sZCByYW5nZT8KCX0KCgoJZnVuY3Rpb24gZmV0Y2hFdmVudHMoc3RhcnQsIGVuZCkgewoJCXJhbmdlU3RhcnQgPSBzdGFydDsKCQlyYW5nZUVuZCA9IGVuZDsKCQlyZXR1cm4gcmVmZXRjaEV2ZW50cygpOwoJfQoKCgkvLyBwb29ybHkgbmFtZWQuIGZldGNoZXMgYWxsIHNvdXJjZXMgd2l0aCBjdXJyZW50IGByYW5nZVN0YXJ0YCBhbmQgYHJhbmdlRW5kYC4KCWZ1bmN0aW9uIHJlZmV0Y2hFdmVudHMoKSB7CgkJcmV0dXJuIGZldGNoRXZlbnRTb3VyY2VzKHNvdXJjZXMsICdyZXNldCcpOwoJfQoKCgkvLyBwb29ybHkgbmFtZWQuIGZldGNoZXMgYSBzdWJzZXQgb2YgZXZlbnQgc291cmNlcy4KCWZ1bmN0aW9uIHJlZmV0Y2hFdmVudFNvdXJjZXMobWF0Y2hJbnB1dHMpIHsKCQlyZXR1cm4gZmV0Y2hFdmVudFNvdXJjZXMoZ2V0RXZlbnRTb3VyY2VzQnlNYXRjaEFycmF5KG1hdGNoSW5wdXRzKSk7Cgl9CgoKCS8vIGV4cGVjdHMgYW4gYXJyYXkgb2YgZXZlbnQgc291cmNlIG9iamVjdHMgKHRoZSBvcmlnaW5hbHMsIG5vdCBjb3BpZXMpCgkvLyBgc3BlY2lhbEZldGNoVHlwZWAgaXMgYW4gb3B0aW1pemF0aW9uIHBhcmFtZXRlciB0aGF0IGFmZmVjdHMgcHVyZ2luZyBvZiB0aGUgZXZlbnQgY2FjaGUuCglmdW5jdGlvbiBmZXRjaEV2ZW50U291cmNlcyhzcGVjaWZpY1NvdXJjZXMsIHNwZWNpYWxGZXRjaFR5cGUpIHsKCQl2YXIgaSwgc291cmNlOwoKCQlpZiAoc3BlY2lhbEZldGNoVHlwZSA9PT0gJ3Jlc2V0JykgewoJCQljYWNoZSA9IFtdOwoJCX0KCQllbHNlIGlmIChzcGVjaWFsRmV0Y2hUeXBlICE9PSAnYWRkJykgewoJCQljYWNoZSA9IGV4Y2x1ZGVFdmVudHNCeVNvdXJjZXMoY2FjaGUsIHNwZWNpZmljU291cmNlcyk7CgkJfQoKCQlmb3IgKGkgPSAwOyBpIDwgc3BlY2lmaWNTb3VyY2VzLmxlbmd0aDsgaSsrKSB7CgkJCXNvdXJjZSA9IHNwZWNpZmljU291cmNlc1tpXTsKCgkJCS8vIGFscmVhZHktcGVuZGluZyBzb3VyY2VzIGhhdmUgYWxyZWFkeSBiZWVuIGFjY291bnRlZCBmb3IgaW4gcGVuZGluZ1NvdXJjZUNudAoJCQlpZiAoc291cmNlLl9zdGF0dXMgIT09ICdwZW5kaW5nJykgewoJCQkJcGVuZGluZ1NvdXJjZUNudCsrOwoJCQl9CgoJCQlzb3VyY2UuX2ZldGNoSWQgPSAoc291cmNlLl9mZXRjaElkIHx8IDApICsgMTsKCQkJc291cmNlLl9zdGF0dXMgPSAncGVuZGluZyc7CgkJfQoKCQlmb3IgKGkgPSAwOyBpIDwgc3BlY2lmaWNTb3VyY2VzLmxlbmd0aDsgaSsrKSB7CgkJCXNvdXJjZSA9IHNwZWNpZmljU291cmNlc1tpXTsKCQkJdHJ5RmV0Y2hFdmVudFNvdXJjZShzb3VyY2UsIHNvdXJjZS5fZmV0Y2hJZCk7CgkJfQoKCQlpZiAocGVuZGluZ1NvdXJjZUNudCkgewoJCQlyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSkgewoJCQkJdC5vbmUoJ2V2ZW50c1JlY2VpdmVkJywgcmVzb2x2ZSk7IC8vIHdpbGwgc2VuZCBwcnVuZWRDYWNoZQoJCQl9KTsKCQl9CgkJZWxzZSB7IC8vIGV4ZWN1dGVkIGFsbCBzeW5jaHJvbm91c2x5LCBvciBubyBzb3VyY2VzIGF0IGFsbAoJCQlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHBydW5lZENhY2hlKTsKCQl9Cgl9CgoKCS8vIGZldGNoZXMgYW4gZXZlbnQgc291cmNlIGFuZCBwcm9jZXNzZXMgaXRzIHJlc3VsdCBPTkxZIGlmIGl0IGlzIHN0aWxsIHRoZSBjdXJyZW50IGZldGNoLgoJLy8gY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBpbmNyZW1lbnRpbmcgcGVuZGluZ1NvdXJjZUNudCBmaXJzdC4KCWZ1bmN0aW9uIHRyeUZldGNoRXZlbnRTb3VyY2Uoc291cmNlLCBmZXRjaElkKSB7CgkJX2ZldGNoRXZlbnRTb3VyY2Uoc291cmNlLCBmdW5jdGlvbihldmVudElucHV0cykgewoJCQl2YXIgaXNBcnJheVNvdXJjZSA9ICQuaXNBcnJheShzb3VyY2UuZXZlbnRzKTsKCQkJdmFyIGksIGV2ZW50SW5wdXQ7CgkJCXZhciBhYnN0cmFjdEV2ZW50OwoKCQkJaWYgKAoJCQkJLy8gaXMgdGhpcyB0aGUgc291cmNlJ3MgbW9zdCByZWNlbnQgZmV0Y2g/CgkJCQkvLyBpZiBub3QsIHJlbHkgb24gYW4gdXBjb21pbmcgZmV0Y2ggb2YgdGhpcyBzb3VyY2UgdG8gZGVjcmVtZW50IHBlbmRpbmdTb3VyY2VDbnQKCQkJCWZldGNoSWQgPT09IHNvdXJjZS5fZmV0Y2hJZCAmJgoJCQkJLy8gZXZlbnQgc291cmNlIG5vIGxvbmdlciB2YWxpZD8KCQkJCXNvdXJjZS5fc3RhdHVzICE9PSAncmVqZWN0ZWQnCgkJCSkgewoJCQkJc291cmNlLl9zdGF0dXMgPSAncmVzb2x2ZWQnOwoKCQkJCWlmIChldmVudElucHV0cykgewoJCQkJCWZvciAoaSA9IDA7IGkgPCBldmVudElucHV0cy5sZW5ndGg7IGkrKykgewoJCQkJCQlldmVudElucHV0ID0gZXZlbnRJbnB1dHNbaV07CgoJCQkJCQlpZiAoaXNBcnJheVNvdXJjZSkgeyAvLyBhcnJheSBzb3VyY2VzIGhhdmUgYWxyZWFkeSBiZWVuIGNvbnZlcnQgdG8gRXZlbnQgT2JqZWN0cwoJCQkJCQkJYWJzdHJhY3RFdmVudCA9IGV2ZW50SW5wdXQ7CgkJCQkJCX0KCQkJCQkJZWxzZSB7CgkJCQkJCQlhYnN0cmFjdEV2ZW50ID0gYnVpbGRFdmVudEZyb21JbnB1dChldmVudElucHV0LCBzb3VyY2UpOwoJCQkJCQl9CgoJCQkJCQlpZiAoYWJzdHJhY3RFdmVudCkgeyAvLyBub3QgZmFsc2UgKGFuIGludmFsaWQgZXZlbnQpCgkJCQkJCQljYWNoZS5wdXNoLmFwcGx5KCAvLyBhcHBlbmQKCQkJCQkJCQljYWNoZSwKCQkJCQkJCQlleHBhbmRFdmVudChhYnN0cmFjdEV2ZW50KSAvLyBhZGQgaW5kaXZpZHVhbCBleHBhbmRlZCBldmVudHMgdG8gdGhlIGNhY2hlCgkJCQkJCQkpOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoKCQkJCWRlY3JlbWVudFBlbmRpbmdTb3VyY2VDbnQoKTsKCQkJfQoJCX0pOwoJfQoKCglmdW5jdGlvbiByZWplY3RFdmVudFNvdXJjZShzb3VyY2UpIHsKCQl2YXIgd2FzUGVuZGluZyA9IHNvdXJjZS5fc3RhdHVzID09PSAncGVuZGluZyc7CgoJCXNvdXJjZS5fc3RhdHVzID0gJ3JlamVjdGVkJzsKCgkJaWYgKHdhc1BlbmRpbmcpIHsKCQkJZGVjcmVtZW50UGVuZGluZ1NvdXJjZUNudCgpOwoJCX0KCX0KCgoJZnVuY3Rpb24gZGVjcmVtZW50UGVuZGluZ1NvdXJjZUNudCgpIHsKCQlwZW5kaW5nU291cmNlQ250LS07CgkJaWYgKCFwZW5kaW5nU291cmNlQ250KSB7CgkJCXJlcG9ydEV2ZW50Q2hhbmdlKGNhY2hlKTsgLy8gdXBkYXRlcyBwcnVuZWRDYWNoZQoJCQl0LnRyaWdnZXIoJ2V2ZW50c1JlY2VpdmVkJywgcHJ1bmVkQ2FjaGUpOwoJCX0KCX0KCgoJZnVuY3Rpb24gX2ZldGNoRXZlbnRTb3VyY2Uoc291cmNlLCBjYWxsYmFjaykgewoJCXZhciBpOwoJCXZhciBmZXRjaGVycyA9IEZDLnNvdXJjZUZldGNoZXJzOwoJCXZhciByZXM7CgoJCWZvciAoaT0wOyBpPGZldGNoZXJzLmxlbmd0aDsgaSsrKSB7CgkJCXJlcyA9IGZldGNoZXJzW2ldLmNhbGwoCgkJCQl0LCAvLyB0aGlzLCB0aGUgQ2FsZW5kYXIgb2JqZWN0CgkJCQlzb3VyY2UsCgkJCQlyYW5nZVN0YXJ0LmNsb25lKCksCgkJCQlyYW5nZUVuZC5jbG9uZSgpLAoJCQkJdC5vcHRpb25zLnRpbWV6b25lLAoJCQkJY2FsbGJhY2sKCQkJKTsKCgkJCWlmIChyZXMgPT09IHRydWUpIHsKCQkJCS8vIHRoZSBmZXRjaGVyIGlzIGluIGNoYXJnZS4gbWFkZSBpdHMgb3duIGFzeW5jIHJlcXVlc3QKCQkJCXJldHVybjsKCQkJfQoJCQllbHNlIGlmICh0eXBlb2YgcmVzID09ICdvYmplY3QnKSB7CgkJCQkvLyB0aGUgZmV0Y2hlciByZXR1cm5lZCBhIG5ldyBzb3VyY2UuIHByb2Nlc3MgaXQKCQkJCV9mZXRjaEV2ZW50U291cmNlKHJlcywgY2FsbGJhY2spOwoJCQkJcmV0dXJuOwoJCQl9CgkJfQoKCQl2YXIgZXZlbnRzID0gc291cmNlLmV2ZW50czsKCQlpZiAoZXZlbnRzKSB7CgkJCWlmICgkLmlzRnVuY3Rpb24oZXZlbnRzKSkgewoJCQkJdC5wdXNoTG9hZGluZygpOwoJCQkJZXZlbnRzLmNhbGwoCgkJCQkJdCwgLy8gdGhpcywgdGhlIENhbGVuZGFyIG9iamVjdAoJCQkJCXJhbmdlU3RhcnQuY2xvbmUoKSwKCQkJCQlyYW5nZUVuZC5jbG9uZSgpLAoJCQkJCXQub3B0aW9ucy50aW1lem9uZSwKCQkJCQlmdW5jdGlvbihldmVudHMpIHsKCQkJCQkJY2FsbGJhY2soZXZlbnRzKTsKCQkJCQkJdC5wb3BMb2FkaW5nKCk7CgkJCQkJfQoJCQkJKTsKCQkJfQoJCQllbHNlIGlmICgkLmlzQXJyYXkoZXZlbnRzKSkgewoJCQkJY2FsbGJhY2soZXZlbnRzKTsKCQkJfQoJCQllbHNlIHsKCQkJCWNhbGxiYWNrKCk7CgkJCX0KCQl9ZWxzZXsKCQkJdmFyIHVybCA9IHNvdXJjZS51cmw7CgkJCWlmICh1cmwpIHsKCQkJCXZhciBzdWNjZXNzID0gc291cmNlLnN1Y2Nlc3M7CgkJCQl2YXIgZXJyb3IgPSBzb3VyY2UuZXJyb3I7CgkJCQl2YXIgY29tcGxldGUgPSBzb3VyY2UuY29tcGxldGU7CgoJCQkJLy8gcmV0cmlldmUgYW55IG91dGJvdW5kIEdFVC9QT1NUICQuYWpheCBkYXRhIGZyb20gdGhlIG9wdGlvbnMKCQkJCXZhciBjdXN0b21EYXRhOwoJCQkJaWYgKCQuaXNGdW5jdGlvbihzb3VyY2UuZGF0YSkpIHsKCQkJCQkvLyBzdXBwbGllZCBhcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIGtleS92YWx1ZSBvYmplY3QKCQkJCQljdXN0b21EYXRhID0gc291cmNlLmRhdGEoKTsKCQkJCX0KCQkJCWVsc2UgewoJCQkJCS8vIHN1cHBsaWVkIGFzIGEgc3RyYWlnaHQga2V5L3ZhbHVlIG9iamVjdAoJCQkJCWN1c3RvbURhdGEgPSBzb3VyY2UuZGF0YTsKCQkJCX0KCgkJCQkvLyB1c2UgYSBjb3B5IG9mIHRoZSBjdXN0b20gZGF0YSBzbyB3ZSBjYW4gbW9kaWZ5IHRoZSBwYXJhbWV0ZXJzCgkJCQkvLyBhbmQgbm90IGFmZmVjdCB0aGUgcGFzc2VkLWluIG9iamVjdC4KCQkJCXZhciBkYXRhID0gJC5leHRlbmQoe30sIGN1c3RvbURhdGEgfHwge30pOwoKCQkJCXZhciBzdGFydFBhcmFtID0gZmlyc3REZWZpbmVkKHNvdXJjZS5zdGFydFBhcmFtLCB0Lm9wdGlvbnMuc3RhcnRQYXJhbSk7CgkJCQl2YXIgZW5kUGFyYW0gPSBmaXJzdERlZmluZWQoc291cmNlLmVuZFBhcmFtLCB0Lm9wdGlvbnMuZW5kUGFyYW0pOwoJCQkJdmFyIHRpbWV6b25lUGFyYW0gPSBmaXJzdERlZmluZWQoc291cmNlLnRpbWV6b25lUGFyYW0sIHQub3B0aW9ucy50aW1lem9uZVBhcmFtKTsKCgkJCQlpZiAoc3RhcnRQYXJhbSkgewoJCQkJCWRhdGFbc3RhcnRQYXJhbV0gPSByYW5nZVN0YXJ0LmZvcm1hdCgpOwoJCQkJfQoJCQkJaWYgKGVuZFBhcmFtKSB7CgkJCQkJZGF0YVtlbmRQYXJhbV0gPSByYW5nZUVuZC5mb3JtYXQoKTsKCQkJCX0KCQkJCWlmICh0Lm9wdGlvbnMudGltZXpvbmUgJiYgdC5vcHRpb25zLnRpbWV6b25lICE9ICdsb2NhbCcpIHsKCQkJCQlkYXRhW3RpbWV6b25lUGFyYW1dID0gdC5vcHRpb25zLnRpbWV6b25lOwoJCQkJfQoKCQkJCXQucHVzaExvYWRpbmcoKTsKCQkJCSQuYWpheCgkLmV4dGVuZCh7fSwgYWpheERlZmF1bHRzLCBzb3VyY2UsIHsKCQkJCQlkYXRhOiBkYXRhLAoJCQkJCXN1Y2Nlc3M6IGZ1bmN0aW9uKGV2ZW50cykgewoJCQkJCQlldmVudHMgPSBldmVudHMgfHwgW107CgkJCQkJCXZhciByZXMgPSBhcHBseUFsbChzdWNjZXNzLCB0aGlzLCBhcmd1bWVudHMpOwoJCQkJCQlpZiAoJC5pc0FycmF5KHJlcykpIHsKCQkJCQkJCWV2ZW50cyA9IHJlczsKCQkJCQkJfQoJCQkJCQljYWxsYmFjayhldmVudHMpOwoJCQkJCX0sCgkJCQkJZXJyb3I6IGZ1bmN0aW9uKCkgewoJCQkJCQlhcHBseUFsbChlcnJvciwgdGhpcywgYXJndW1lbnRzKTsKCQkJCQkJY2FsbGJhY2soKTsKCQkJCQl9LAoJCQkJCWNvbXBsZXRlOiBmdW5jdGlvbigpIHsKCQkJCQkJYXBwbHlBbGwoY29tcGxldGUsIHRoaXMsIGFyZ3VtZW50cyk7CgkJCQkJCXQucG9wTG9hZGluZygpOwoJCQkJCX0KCQkJCX0pKTsKCQkJfWVsc2V7CgkJCQljYWxsYmFjaygpOwoJCQl9CgkJfQoJfQoKCgoJLyogU291cmNlcwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCglmdW5jdGlvbiBhZGRFdmVudFNvdXJjZShzb3VyY2VJbnB1dCkgewoJCXZhciBzb3VyY2UgPSBidWlsZEV2ZW50U291cmNlKHNvdXJjZUlucHV0KTsKCQlpZiAoc291cmNlKSB7CgkJCXNvdXJjZXMucHVzaChzb3VyY2UpOwoJCQlmZXRjaEV2ZW50U291cmNlcyhbIHNvdXJjZSBdLCAnYWRkJyk7IC8vIHdpbGwgZXZlbnR1YWxseSBjYWxsIHJlcG9ydEV2ZW50Q2hhbmdlCgkJfQoJfQoKCglmdW5jdGlvbiBidWlsZEV2ZW50U291cmNlKHNvdXJjZUlucHV0KSB7IC8vIHdpbGwgcmV0dXJuIHVuZGVmaW5lZCBpZiBpbnZhbGlkIHNvdXJjZQoJCXZhciBub3JtYWxpemVycyA9IEZDLnNvdXJjZU5vcm1hbGl6ZXJzOwoJCXZhciBzb3VyY2U7CgkJdmFyIGk7CgoJCWlmICgkLmlzRnVuY3Rpb24oc291cmNlSW5wdXQpIHx8ICQuaXNBcnJheShzb3VyY2VJbnB1dCkpIHsKCQkJc291cmNlID0geyBldmVudHM6IHNvdXJjZUlucHV0IH07CgkJfQoJCWVsc2UgaWYgKHR5cGVvZiBzb3VyY2VJbnB1dCA9PT0gJ3N0cmluZycpIHsKCQkJc291cmNlID0geyB1cmw6IHNvdXJjZUlucHV0IH07CgkJfQoJCWVsc2UgaWYgKHR5cGVvZiBzb3VyY2VJbnB1dCA9PT0gJ29iamVjdCcpIHsKCQkJc291cmNlID0gJC5leHRlbmQoe30sIHNvdXJjZUlucHV0KTsgLy8gc2hhbGxvdyBjb3B5CgkJfQoKCQlpZiAoc291cmNlKSB7CgoJCQkvLyBUT0RPOiByZXBlYXQgY29kZSwgc2FtZSBjb2RlIGZvciBldmVudCBjbGFzc05hbWVzCgkJCWlmIChzb3VyY2UuY2xhc3NOYW1lKSB7CgkJCQlpZiAodHlwZW9mIHNvdXJjZS5jbGFzc05hbWUgPT09ICdzdHJpbmcnKSB7CgkJCQkJc291cmNlLmNsYXNzTmFtZSA9IHNvdXJjZS5jbGFzc05hbWUuc3BsaXQoL1xzKy8pOwoJCQkJfQoJCQkJLy8gb3RoZXJ3aXNlLCBhc3N1bWVkIHRvIGJlIGFuIGFycmF5CgkJCX0KCQkJZWxzZSB7CgkJCQlzb3VyY2UuY2xhc3NOYW1lID0gW107CgkJCX0KCgkJCS8vIGZvciBhcnJheSBzb3VyY2VzLCB3ZSBjb252ZXJ0IHRvIHN0YW5kYXJkIEV2ZW50IE9iamVjdHMgdXAgZnJvbnQKCQkJaWYgKCQuaXNBcnJheShzb3VyY2UuZXZlbnRzKSkgewoJCQkJc291cmNlLm9yaWdBcnJheSA9IHNvdXJjZS5ldmVudHM7IC8vIGZvciByZW1vdmVFdmVudFNvdXJjZQoJCQkJc291cmNlLmV2ZW50cyA9ICQubWFwKHNvdXJjZS5ldmVudHMsIGZ1bmN0aW9uKGV2ZW50SW5wdXQpIHsKCQkJCQlyZXR1cm4gYnVpbGRFdmVudEZyb21JbnB1dChldmVudElucHV0LCBzb3VyY2UpOwoJCQkJfSk7CgkJCX0KCgkJCWZvciAoaT0wOyBpPG5vcm1hbGl6ZXJzLmxlbmd0aDsgaSsrKSB7CgkJCQlub3JtYWxpemVyc1tpXS5jYWxsKHQsIHNvdXJjZSk7CgkJCX0KCgkJCXJldHVybiBzb3VyY2U7CgkJfQoJfQoKCglmdW5jdGlvbiByZW1vdmVFdmVudFNvdXJjZShtYXRjaElucHV0KSB7CgkJcmVtb3ZlU3BlY2lmaWNFdmVudFNvdXJjZXMoCgkJCWdldEV2ZW50U291cmNlc0J5TWF0Y2gobWF0Y2hJbnB1dCkKCQkpOwoJfQoKCgkvLyBpZiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudHMsIHJlbW92ZXMgYWxsLgoJZnVuY3Rpb24gcmVtb3ZlRXZlbnRTb3VyY2VzKG1hdGNoSW5wdXRzKSB7CgkJaWYgKG1hdGNoSW5wdXRzID09IG51bGwpIHsKCQkJcmVtb3ZlU3BlY2lmaWNFdmVudFNvdXJjZXMoc291cmNlcywgdHJ1ZSk7IC8vIGlzQWxsPXRydWUKCQl9CgkJZWxzZSB7CgkJCXJlbW92ZVNwZWNpZmljRXZlbnRTb3VyY2VzKAoJCQkJZ2V0RXZlbnRTb3VyY2VzQnlNYXRjaEFycmF5KG1hdGNoSW5wdXRzKQoJCQkpOwoJCX0KCX0KCgoJZnVuY3Rpb24gcmVtb3ZlU3BlY2lmaWNFdmVudFNvdXJjZXModGFyZ2V0U291cmNlcywgaXNBbGwpIHsKCQl2YXIgaTsKCgkJLy8gY2FuY2VsIHBlbmRpbmcgcmVxdWVzdHMKCQlmb3IgKGkgPSAwOyBpIDwgdGFyZ2V0U291cmNlcy5sZW5ndGg7IGkrKykgewoJCQlyZWplY3RFdmVudFNvdXJjZSh0YXJnZXRTb3VyY2VzW2ldKTsKCQl9CgoJCWlmIChpc0FsbCkgeyAvLyBhbiBvcHRpbWl6YXRpb24KCQkJc291cmNlcyA9IFtdOwoJCQljYWNoZSA9IFtdOwoJCX0KCQllbHNlIHsKCQkJLy8gcmVtb3ZlIGZyb20gcGVyc2lzdGVkIHNvdXJjZSBsaXN0CgkJCXNvdXJjZXMgPSAkLmdyZXAoc291cmNlcywgZnVuY3Rpb24oc291cmNlKSB7CgkJCQlmb3IgKGkgPSAwOyBpIDwgdGFyZ2V0U291cmNlcy5sZW5ndGg7IGkrKykgewoJCQkJCWlmIChzb3VyY2UgPT09IHRhcmdldFNvdXJjZXNbaV0pIHsKCQkJCQkJcmV0dXJuIGZhbHNlOyAvLyBleGNsdWRlCgkJCQkJfQoJCQkJfQoJCQkJcmV0dXJuIHRydWU7IC8vIGluY2x1ZGUKCQkJfSk7CgoJCQljYWNoZSA9IGV4Y2x1ZGVFdmVudHNCeVNvdXJjZXMoY2FjaGUsIHRhcmdldFNvdXJjZXMpOwoJCX0KCgkJcmVwb3J0RXZlbnRDaGFuZ2UoKTsKCX0KCgoJZnVuY3Rpb24gZ2V0RXZlbnRTb3VyY2VzKCkgewoJCXJldHVybiBzb3VyY2VzLnNsaWNlKDEpOyAvLyByZXR1cm5zIGEgc2hhbGxvdyBjb3B5IG9mIHNvdXJjZXMgd2l0aCBzdGlja3lTb3VyY2UgcmVtb3ZlZAoJfQoKCglmdW5jdGlvbiBnZXRFdmVudFNvdXJjZUJ5SWQoaWQpIHsKCQlyZXR1cm4gJC5ncmVwKHNvdXJjZXMsIGZ1bmN0aW9uKHNvdXJjZSkgewoJCQlyZXR1cm4gc291cmNlLmlkICYmIHNvdXJjZS5pZCA9PT0gaWQ7CgkJfSlbMF07Cgl9CgoKCS8vIGxpa2UgZ2V0RXZlbnRTb3VyY2VzQnlNYXRjaCwgYnV0IGFjY2VwdHMgbXVsdHBsZSBtYXRjaCBjcml0ZXJpYSAobGlrZSBtdWx0aXBsZSBJRHMpCglmdW5jdGlvbiBnZXRFdmVudFNvdXJjZXNCeU1hdGNoQXJyYXkobWF0Y2hJbnB1dHMpIHsKCgkJLy8gY29lcmNlIGludG8gYW4gYXJyYXkKCQlpZiAoIW1hdGNoSW5wdXRzKSB7CgkJCW1hdGNoSW5wdXRzID0gW107CgkJfQoJCWVsc2UgaWYgKCEkLmlzQXJyYXkobWF0Y2hJbnB1dHMpKSB7CgkJCW1hdGNoSW5wdXRzID0gWyBtYXRjaElucHV0cyBdOwoJCX0KCgkJdmFyIG1hdGNoaW5nU291cmNlcyA9IFtdOwoJCXZhciBpOwoKCQkvLyByZXNvbHZlIHJhdyBpbnB1dHMgdG8gcmVhbCBldmVudCBzb3VyY2Ugb2JqZWN0cwoJCWZvciAoaSA9IDA7IGkgPCBtYXRjaElucHV0cy5sZW5ndGg7IGkrKykgewoJCQltYXRjaGluZ1NvdXJjZXMucHVzaC5hcHBseSggLy8gYXBwZW5kCgkJCQltYXRjaGluZ1NvdXJjZXMsCgkJCQlnZXRFdmVudFNvdXJjZXNCeU1hdGNoKG1hdGNoSW5wdXRzW2ldKQoJCQkpOwoJCX0KCgkJcmV0dXJuIG1hdGNoaW5nU291cmNlczsKCX0KCgoJLy8gbWF0Y2hJbnB1dCBjYW4gZWl0aGVyIGJ5IGEgcmVhbCBldmVudCBzb3VyY2Ugb2JqZWN0LCBhbiBJRCwgb3IgdGhlIGZ1bmN0aW9uL1VSTCBmb3IgdGhlIHNvdXJjZS4KCS8vIHJldHVybnMgYW4gYXJyYXkgb2YgbWF0Y2hpbmcgc291cmNlIG9iamVjdHMuCglmdW5jdGlvbiBnZXRFdmVudFNvdXJjZXNCeU1hdGNoKG1hdGNoSW5wdXQpIHsKCQl2YXIgaSwgc291cmNlOwoKCQkvLyBnaXZlbiBhbiBwcm9wZXIgZXZlbnQgc291cmNlIG9iamVjdAoJCWZvciAoaSA9IDA7IGkgPCBzb3VyY2VzLmxlbmd0aDsgaSsrKSB7CgkJCXNvdXJjZSA9IHNvdXJjZXNbaV07CgkJCWlmIChzb3VyY2UgPT09IG1hdGNoSW5wdXQpIHsKCQkJCXJldHVybiBbIHNvdXJjZSBdOwoJCQl9CgkJfQoKCQkvLyBhbiBJRCBtYXRjaAoJCXNvdXJjZSA9IGdldEV2ZW50U291cmNlQnlJZChtYXRjaElucHV0KTsKCQlpZiAoc291cmNlKSB7CgkJCXJldHVybiBbIHNvdXJjZSBdOwoJCX0KCgkJcmV0dXJuICQuZ3JlcChzb3VyY2VzLCBmdW5jdGlvbihzb3VyY2UpIHsKCQkJcmV0dXJuIGlzU291cmNlc0VxdWl2YWxlbnQobWF0Y2hJbnB1dCwgc291cmNlKTsKCQl9KTsKCX0KCgoJZnVuY3Rpb24gaXNTb3VyY2VzRXF1aXZhbGVudChzb3VyY2UxLCBzb3VyY2UyKSB7CgkJcmV0dXJuIHNvdXJjZTEgJiYgc291cmNlMiAmJiBnZXRTb3VyY2VQcmltaXRpdmUoc291cmNlMSkgPT0gZ2V0U291cmNlUHJpbWl0aXZlKHNvdXJjZTIpOwoJfQoKCglmdW5jdGlvbiBnZXRTb3VyY2VQcmltaXRpdmUoc291cmNlKSB7CgkJcmV0dXJuICgKCQkJKHR5cGVvZiBzb3VyY2UgPT09ICdvYmplY3QnKSA/IC8vIGEgbm9ybWFsaXplZCBldmVudCBzb3VyY2U/CgkJCQkoc291cmNlLm9yaWdBcnJheSB8fCBzb3VyY2UuZ29vZ2xlQ2FsZW5kYXJJZCB8fCBzb3VyY2UudXJsIHx8IHNvdXJjZS5ldmVudHMpIDogLy8gZ2V0IHRoZSBwcmltaXRpdmUKCQkJCW51bGwKCQkpIHx8CgkJc291cmNlOyAvLyB0aGUgZ2l2ZW4gYXJndW1lbnQgKmlzKiB0aGUgcHJpbWl0aXZlCgl9CgoKCS8vIHV0aWwKCS8vIHJldHVybnMgYSBmaWx0ZXJlZCBhcnJheSB3aXRob3V0IGV2ZW50cyB0aGF0IGFyZSBwYXJ0IG9mIGFueSBvZiB0aGUgZ2l2ZW4gc291cmNlcwoJZnVuY3Rpb24gZXhjbHVkZUV2ZW50c0J5U291cmNlcyhzcGVjaWZpY0V2ZW50cywgc3BlY2lmaWNTb3VyY2VzKSB7CgkJcmV0dXJuICQuZ3JlcChzcGVjaWZpY0V2ZW50cywgZnVuY3Rpb24oZXZlbnQpIHsKCQkJZm9yICh2YXIgaSA9IDA7IGkgPCBzcGVjaWZpY1NvdXJjZXMubGVuZ3RoOyBpKyspIHsKCQkJCWlmIChldmVudC5zb3VyY2UgPT09IHNwZWNpZmljU291cmNlc1tpXSkgewoJCQkJCXJldHVybiBmYWxzZTsgLy8gZXhjbHVkZQoJCQkJfQoJCQl9CgkJCXJldHVybiB0cnVlOyAvLyBrZWVwCgkJfSk7Cgl9CgoKCgkvKiBNYW5pcHVsYXRpb24KCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gT25seSBldmVyIGNhbGxlZCBmcm9tIHRoZSBleHRlcm5hbGx5LWZhY2luZyBBUEkKCWZ1bmN0aW9uIHVwZGF0ZUV2ZW50KGV2ZW50KSB7CgkJdXBkYXRlRXZlbnRzKFsgZXZlbnQgXSk7Cgl9CgoKCS8vIE9ubHkgZXZlciBjYWxsZWQgZnJvbSB0aGUgZXh0ZXJuYWxseS1mYWNpbmcgQVBJCglmdW5jdGlvbiB1cGRhdGVFdmVudHMoZXZlbnRzKSB7CgkJdmFyIGksIGV2ZW50OwoKCQlmb3IgKGkgPSAwOyBpIDwgZXZlbnRzLmxlbmd0aDsgaSsrKSB7CgkJCWV2ZW50ID0gZXZlbnRzW2ldOwoKCQkJLy8gbWFzc2FnZSBzdGFydC9lbmQgdmFsdWVzLCBldmVuIGlmIGRhdGUgc3RyaW5nIHZhbHVlcwoJCQlldmVudC5zdGFydCA9IHQubW9tZW50KGV2ZW50LnN0YXJ0KTsKCQkJaWYgKGV2ZW50LmVuZCkgewoJCQkJZXZlbnQuZW5kID0gdC5tb21lbnQoZXZlbnQuZW5kKTsKCQkJfQoJCQllbHNlIHsKCQkJCWV2ZW50LmVuZCA9IG51bGw7CgkJCX0KCgkJCW11dGF0ZUV2ZW50KGV2ZW50LCBnZXRNaXNjRXZlbnRQcm9wcyhldmVudCkpOyAvLyB3aWxsIGhhbmRsZSBzdGFydC9lbmQvYWxsRGF5IG5vcm1hbGl6YXRpb24KCQl9CgoJCXJlcG9ydEV2ZW50Q2hhbmdlKCk7IC8vIHJlcG9ydHMgZXZlbnQgbW9kaWZpY2F0aW9ucyAoc28gd2UgY2FuIHJlZHJhdykKCX0KCgoJLy8gUmV0dXJucyBhIGhhc2ggb2YgbWlzYyBldmVudCBwcm9wZXJ0aWVzIHRoYXQgc2hvdWxkIGJlIGNvcGllZCBvdmVyIHRvIHJlbGF0ZWQgZXZlbnRzLgoJZnVuY3Rpb24gZ2V0TWlzY0V2ZW50UHJvcHMoZXZlbnQpIHsKCQl2YXIgcHJvcHMgPSB7fTsKCgkJJC5lYWNoKGV2ZW50LCBmdW5jdGlvbihuYW1lLCB2YWwpIHsKCQkJaWYgKGlzTWlzY0V2ZW50UHJvcE5hbWUobmFtZSkpIHsKCQkJCWlmICh2YWwgIT09IHVuZGVmaW5lZCAmJiBpc0F0b21pYyh2YWwpKSB7IC8vIGEgZGVmaW5lZCBub24tb2JqZWN0CgkJCQkJcHJvcHNbbmFtZV0gPSB2YWw7CgkJCQl9CgkJCX0KCQl9KTsKCgkJcmV0dXJuIHByb3BzOwoJfQoKCS8vIG5vbi1kYXRlLXJlbGF0ZWQsIG5vbi1pZC1yZWxhdGVkLCBub24tc2VjcmV0CglmdW5jdGlvbiBpc01pc2NFdmVudFByb3BOYW1lKG5hbWUpIHsKCQlyZXR1cm4gIS9eX3xeKGlkfGFsbERheXxzdGFydHxlbmQpJC8udGVzdChuYW1lKTsKCX0KCgoJLy8gcmV0dXJucyB0aGUgZXhwYW5kZWQgZXZlbnRzIHRoYXQgd2VyZSBjcmVhdGVkCglmdW5jdGlvbiByZW5kZXJFdmVudChldmVudElucHV0LCBzdGljaykgewoJCXJldHVybiByZW5kZXJFdmVudHMoWyBldmVudElucHV0IF0sIHN0aWNrKTsKCX0KCgoJLy8gcmV0dXJucyB0aGUgZXhwYW5kZWQgZXZlbnRzIHRoYXQgd2VyZSBjcmVhdGVkCglmdW5jdGlvbiByZW5kZXJFdmVudHMoZXZlbnRJbnB1dHMsIHN0aWNrKSB7CgkJdmFyIHJlbmRlcmVkRXZlbnRzID0gW107CgkJdmFyIHJlbmRlcmFibGVFdmVudHM7CgkJdmFyIGFic3RyYWN0RXZlbnQ7CgkJdmFyIGksIGosIGV2ZW50OwoKCQlmb3IgKGkgPSAwOyBpIDwgZXZlbnRJbnB1dHMubGVuZ3RoOyBpKyspIHsKCQkJYWJzdHJhY3RFdmVudCA9IGJ1aWxkRXZlbnRGcm9tSW5wdXQoZXZlbnRJbnB1dHNbaV0pOwoKCQkJaWYgKGFic3RyYWN0RXZlbnQpIHsgLy8gbm90IGZhbHNlIChhIHZhbGlkIGlucHV0KQoJCQkJcmVuZGVyYWJsZUV2ZW50cyA9IGV4cGFuZEV2ZW50KGFic3RyYWN0RXZlbnQpOwoKCQkJCWZvciAoaiA9IDA7IGogPCByZW5kZXJhYmxlRXZlbnRzLmxlbmd0aDsgaisrKSB7CgkJCQkJZXZlbnQgPSByZW5kZXJhYmxlRXZlbnRzW2pdOwoKCQkJCQlpZiAoIWV2ZW50LnNvdXJjZSkgewoJCQkJCQlpZiAoc3RpY2spIHsKCQkJCQkJCXN0aWNreVNvdXJjZS5ldmVudHMucHVzaChldmVudCk7CgkJCQkJCQlldmVudC5zb3VyY2UgPSBzdGlja3lTb3VyY2U7CgkJCQkJCX0KCQkJCQkJY2FjaGUucHVzaChldmVudCk7CgkJCQkJfQoJCQkJfQoKCQkJCXJlbmRlcmVkRXZlbnRzID0gcmVuZGVyZWRFdmVudHMuY29uY2F0KHJlbmRlcmFibGVFdmVudHMpOwoJCQl9CgkJfQoKCQlpZiAocmVuZGVyZWRFdmVudHMubGVuZ3RoKSB7IC8vIGFueSBuZXcgZXZlbnRzIHJlbmRlcmVkPwoJCQlyZXBvcnRFdmVudENoYW5nZSgpOwoJCX0KCgkJcmV0dXJuIHJlbmRlcmVkRXZlbnRzOwoJfQoKCglmdW5jdGlvbiByZW1vdmVFdmVudHMoZmlsdGVyKSB7CgkJdmFyIGV2ZW50SUQ7CgkJdmFyIGk7CgoJCWlmIChmaWx0ZXIgPT0gbnVsbCkgeyAvLyBudWxsIG9yIHVuZGVmaW5lZC4gcmVtb3ZlIGFsbCBldmVudHMKCQkJZmlsdGVyID0gZnVuY3Rpb24oKSB7IHJldHVybiB0cnVlOyB9OyAvLyB3aWxsIGFsd2F5cyBtYXRjaAoJCX0KCQllbHNlIGlmICghJC5pc0Z1bmN0aW9uKGZpbHRlcikpIHsgLy8gYW4gZXZlbnQgSUQKCQkJZXZlbnRJRCA9IGZpbHRlciArICcnOwoJCQlmaWx0ZXIgPSBmdW5jdGlvbihldmVudCkgewoJCQkJcmV0dXJuIGV2ZW50Ll9pZCA9PSBldmVudElEOwoJCQl9OwoJCX0KCgkJLy8gUHVyZ2UgZXZlbnQocykgZnJvbSBvdXIgbG9jYWwgY2FjaGUKCQljYWNoZSA9ICQuZ3JlcChjYWNoZSwgZmlsdGVyLCB0cnVlKTsgLy8gaW52ZXJzZT10cnVlCgoJCS8vIFJlbW92ZSBldmVudHMgZnJvbSBhcnJheSBzb3VyY2VzLgoJCS8vIFRoaXMgd29ya3MgYmVjYXVzZSB0aGV5IGhhdmUgYmVlbiBjb252ZXJ0ZWQgdG8gb2ZmaWNpYWwgRXZlbnQgT2JqZWN0cyB1cCBmcm9udC4KCQkvLyAoYW5kIGFzIGEgcmVzdWx0LCBldmVudC5faWQgaGFzIGJlZW4gY2FsY3VsYXRlZCkuCgkJZm9yIChpPTA7IGk8c291cmNlcy5sZW5ndGg7IGkrKykgewoJCQlpZiAoJC5pc0FycmF5KHNvdXJjZXNbaV0uZXZlbnRzKSkgewoJCQkJc291cmNlc1tpXS5ldmVudHMgPSAkLmdyZXAoc291cmNlc1tpXS5ldmVudHMsIGZpbHRlciwgdHJ1ZSk7CgkJCX0KCQl9CgoJCXJlcG9ydEV2ZW50Q2hhbmdlKCk7Cgl9CgoKCWZ1bmN0aW9uIGNsaWVudEV2ZW50cyhmaWx0ZXIpIHsKCQlpZiAoJC5pc0Z1bmN0aW9uKGZpbHRlcikpIHsKCQkJcmV0dXJuICQuZ3JlcChjYWNoZSwgZmlsdGVyKTsKCQl9CgkJZWxzZSBpZiAoZmlsdGVyICE9IG51bGwpIHsgLy8gbm90IG51bGwsIG5vdCB1bmRlZmluZWQuIGFuIGV2ZW50IElECgkJCWZpbHRlciArPSAnJzsKCQkJcmV0dXJuICQuZ3JlcChjYWNoZSwgZnVuY3Rpb24oZSkgewoJCQkJcmV0dXJuIGUuX2lkID09IGZpbHRlcjsKCQkJfSk7CgkJfQoJCXJldHVybiBjYWNoZTsgLy8gZWxzZSwgcmV0dXJuIGFsbAoJfQoKCgkvLyBNYWtlcyBzdXJlIGFsbCBhcnJheSBldmVudCBzb3VyY2VzIGhhdmUgdGhlaXIgaW50ZXJuYWwgZXZlbnQgb2JqZWN0cwoJLy8gY29udmVydGVkIG92ZXIgdG8gdGhlIENhbGVuZGFyJ3MgY3VycmVudCB0aW1lem9uZS4KCXQucmV6b25lQXJyYXlFdmVudFNvdXJjZXMgPSBmdW5jdGlvbigpIHsKCQl2YXIgaTsKCQl2YXIgZXZlbnRzOwoJCXZhciBqOwoKCQlmb3IgKGkgPSAwOyBpIDwgc291cmNlcy5sZW5ndGg7IGkrKykgewoJCQlldmVudHMgPSBzb3VyY2VzW2ldLmV2ZW50czsKCQkJaWYgKCQuaXNBcnJheShldmVudHMpKSB7CgoJCQkJZm9yIChqID0gMDsgaiA8IGV2ZW50cy5sZW5ndGg7IGorKykgewoJCQkJCXJlem9uZUV2ZW50RGF0ZXMoZXZlbnRzW2pdKTsKCQkJCX0KCQkJfQoJCX0KCX07CgoJZnVuY3Rpb24gcmV6b25lRXZlbnREYXRlcyhldmVudCkgewoJCWV2ZW50LnN0YXJ0ID0gdC5tb21lbnQoZXZlbnQuc3RhcnQpOwoJCWlmIChldmVudC5lbmQpIHsKCQkJZXZlbnQuZW5kID0gdC5tb21lbnQoZXZlbnQuZW5kKTsKCQl9CgkJYmFja3VwRXZlbnREYXRlcyhldmVudCk7Cgl9CgoKCS8qIEV2ZW50IE5vcm1hbGl6YXRpb24KCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gR2l2ZW4gYSByYXcgb2JqZWN0IHdpdGgga2V5L3ZhbHVlIHByb3BlcnRpZXMsIHJldHVybnMgYW4gImFic3RyYWN0IiBFdmVudCBvYmplY3QuCgkvLyBBbiAiYWJzdHJhY3QiIGV2ZW50IGlzIGFuIGV2ZW50IHRoYXQsIGlmIHJlY3VycmluZywgd2lsbCBub3QgaGF2ZSBiZWVuIGV4cGFuZGVkIHlldC4KCS8vIFdpbGwgcmV0dXJuIGBmYWxzZWAgd2hlbiBpbnB1dCBpcyBpbnZhbGlkLgoJLy8gYHNvdXJjZWAgaXMgb3B0aW9uYWwKCWZ1bmN0aW9uIGJ1aWxkRXZlbnRGcm9tSW5wdXQoaW5wdXQsIHNvdXJjZSkgewoJCXZhciBvdXQgPSB7fTsKCQl2YXIgc3RhcnQsIGVuZDsKCQl2YXIgYWxsRGF5OwoKCQlpZiAodC5vcHRpb25zLmV2ZW50RGF0YVRyYW5zZm9ybSkgewoJCQlpbnB1dCA9IHQub3B0aW9ucy5ldmVudERhdGFUcmFuc2Zvcm0oaW5wdXQpOwoJCX0KCQlpZiAoc291cmNlICYmIHNvdXJjZS5ldmVudERhdGFUcmFuc2Zvcm0pIHsKCQkJaW5wdXQgPSBzb3VyY2UuZXZlbnREYXRhVHJhbnNmb3JtKGlucHV0KTsKCQl9CgoJCS8vIENvcHkgYWxsIHByb3BlcnRpZXMgb3ZlciB0byB0aGUgcmVzdWx0aW5nIG9iamVjdC4KCQkvLyBUaGUgc3BlY2lhbC1jYXNlIHByb3BlcnRpZXMgd2lsbCBiZSBjb3BpZWQgb3ZlciBhZnRlcndhcmRzLgoJCSQuZXh0ZW5kKG91dCwgaW5wdXQpOwoKCQlpZiAoc291cmNlKSB7CgkJCW91dC5zb3VyY2UgPSBzb3VyY2U7CgkJfQoKCQlvdXQuX2lkID0gaW5wdXQuX2lkIHx8IChpbnB1dC5pZCA9PT0gdW5kZWZpbmVkID8gJ19mYycgKyBldmVudEdVSUQrKyA6IGlucHV0LmlkICsgJycpOwoKCQlpZiAoaW5wdXQuY2xhc3NOYW1lKSB7CgkJCWlmICh0eXBlb2YgaW5wdXQuY2xhc3NOYW1lID09ICdzdHJpbmcnKSB7CgkJCQlvdXQuY2xhc3NOYW1lID0gaW5wdXQuY2xhc3NOYW1lLnNwbGl0KC9ccysvKTsKCQkJfQoJCQllbHNlIHsgLy8gYXNzdW1lZCB0byBiZSBhbiBhcnJheQoJCQkJb3V0LmNsYXNzTmFtZSA9IGlucHV0LmNsYXNzTmFtZTsKCQkJfQoJCX0KCQllbHNlIHsKCQkJb3V0LmNsYXNzTmFtZSA9IFtdOwoJCX0KCgkJc3RhcnQgPSBpbnB1dC5zdGFydCB8fCBpbnB1dC5kYXRlOyAvLyAiZGF0ZSIgaXMgYW4gYWxpYXMgZm9yICJzdGFydCIKCQllbmQgPSBpbnB1dC5lbmQ7CgoJCS8vIHBhcnNlIGFzIGEgdGltZSAoRHVyYXRpb24pIGlmIGFwcGxpY2FibGUKCQlpZiAoaXNUaW1lU3RyaW5nKHN0YXJ0KSkgewoJCQlzdGFydCA9IG1vbWVudC5kdXJhdGlvbihzdGFydCk7CgkJfQoJCWlmIChpc1RpbWVTdHJpbmcoZW5kKSkgewoJCQllbmQgPSBtb21lbnQuZHVyYXRpb24oZW5kKTsKCQl9CgoJCWlmIChpbnB1dC5kb3cgfHwgbW9tZW50LmlzRHVyYXRpb24oc3RhcnQpIHx8IG1vbWVudC5pc0R1cmF0aW9uKGVuZCkpIHsKCgkJCS8vIHRoZSBldmVudCBpcyAiYWJzdHJhY3QiIChyZWN1cnJpbmcpIHNvIGRvbid0IGNhbGN1bGF0ZSBleGFjdCBzdGFydC9lbmQgZGF0ZXMganVzdCB5ZXQKCQkJb3V0LnN0YXJ0ID0gc3RhcnQgPyBtb21lbnQuZHVyYXRpb24oc3RhcnQpIDogbnVsbDsgLy8gd2lsbCBiZSBhIER1cmF0aW9uIG9yIG51bGwKCQkJb3V0LmVuZCA9IGVuZCA/IG1vbWVudC5kdXJhdGlvbihlbmQpIDogbnVsbDsgLy8gd2lsbCBiZSBhIER1cmF0aW9uIG9yIG51bGwKCQkJb3V0Ll9yZWN1cnJpbmcgPSB0cnVlOyAvLyBvdXIgaW50ZXJuYWwgbWFya2VyCgkJfQoJCWVsc2UgewoKCQkJaWYgKHN0YXJ0KSB7CgkJCQlzdGFydCA9IHQubW9tZW50KHN0YXJ0KTsKCQkJCWlmICghc3RhcnQuaXNWYWxpZCgpKSB7CgkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJfQoJCQl9CgoJCQlpZiAoZW5kKSB7CgkJCQllbmQgPSB0Lm1vbWVudChlbmQpOwoJCQkJaWYgKCFlbmQuaXNWYWxpZCgpKSB7CgkJCQkJZW5kID0gbnVsbDsgLy8gbGV0IGRlZmF1bHRzIHRha2Ugb3ZlcgoJCQkJfQoJCQl9CgoJCQlhbGxEYXkgPSBpbnB1dC5hbGxEYXk7CgkJCWlmIChhbGxEYXkgPT09IHVuZGVmaW5lZCkgeyAvLyBzdGlsbCB1bmRlZmluZWQ/IGZhbGxiYWNrIHRvIGRlZmF1bHQKCQkJCWFsbERheSA9IGZpcnN0RGVmaW5lZCgKCQkJCQlzb3VyY2UgPyBzb3VyY2UuYWxsRGF5RGVmYXVsdCA6IHVuZGVmaW5lZCwKCQkJCQl0Lm9wdGlvbnMuYWxsRGF5RGVmYXVsdAoJCQkJKTsKCQkJCS8vIHN0aWxsIHVuZGVmaW5lZD8gbm9ybWFsaXplRXZlbnREYXRlcyB3aWxsIGNhbGN1bGF0ZSBpdAoJCQl9CgoJCQlhc3NpZ25EYXRlc1RvRXZlbnQoc3RhcnQsIGVuZCwgYWxsRGF5LCBvdXQpOwoJCX0KCgkJdC5ub3JtYWxpemVFdmVudChvdXQpOyAvLyBob29rIGZvciBleHRlcm5hbCB1c2UuIGEgcHJvdG90eXBlIG1ldGhvZAoKCQlyZXR1cm4gb3V0OwoJfQoJdC5idWlsZEV2ZW50RnJvbUlucHV0ID0gYnVpbGRFdmVudEZyb21JbnB1dDsKCgoJLy8gTm9ybWFsaXplcyBhbmQgYXNzaWducyB0aGUgZ2l2ZW4gZGF0ZXMgdG8gdGhlIGdpdmVuIHBhcnRpYWxseS1mb3JtZWQgZXZlbnQgb2JqZWN0LgoJLy8gTk9URTogbXV0YXRlcyB0aGUgZ2l2ZW4gc3RhcnQvZW5kIG1vbWVudHMuIGRvZXMgbm90IG1ha2UgYSBjb3B5LgoJZnVuY3Rpb24gYXNzaWduRGF0ZXNUb0V2ZW50KHN0YXJ0LCBlbmQsIGFsbERheSwgZXZlbnQpIHsKCQlldmVudC5zdGFydCA9IHN0YXJ0OwoJCWV2ZW50LmVuZCA9IGVuZDsKCQlldmVudC5hbGxEYXkgPSBhbGxEYXk7CgkJbm9ybWFsaXplRXZlbnREYXRlcyhldmVudCk7CgkJYmFja3VwRXZlbnREYXRlcyhldmVudCk7Cgl9CgoKCS8vIEVuc3VyZXMgcHJvcGVyIHZhbHVlcyBmb3IgYWxsRGF5L3N0YXJ0L2VuZC4gQWNjZXB0cyBhbiBFdmVudCBvYmplY3QsIG9yIGEgcGxhaW4gb2JqZWN0IHdpdGggZXZlbnQtaXNoIHByb3BlcnRpZXMuCgkvLyBOT1RFOiBXaWxsIG1vZGlmeSB0aGUgZ2l2ZW4gb2JqZWN0LgoJZnVuY3Rpb24gbm9ybWFsaXplRXZlbnREYXRlcyhldmVudFByb3BzKSB7CgoJCW5vcm1hbGl6ZUV2ZW50VGltZXMoZXZlbnRQcm9wcyk7CgoJCWlmIChldmVudFByb3BzLmVuZCAmJiAhZXZlbnRQcm9wcy5lbmQuaXNBZnRlcihldmVudFByb3BzLnN0YXJ0KSkgewoJCQlldmVudFByb3BzLmVuZCA9IG51bGw7CgkJfQoKCQlpZiAoIWV2ZW50UHJvcHMuZW5kKSB7CgkJCWlmICh0Lm9wdGlvbnMuZm9yY2VFdmVudER1cmF0aW9uKSB7CgkJCQlldmVudFByb3BzLmVuZCA9IHQuZ2V0RGVmYXVsdEV2ZW50RW5kKGV2ZW50UHJvcHMuYWxsRGF5LCBldmVudFByb3BzLnN0YXJ0KTsKCQkJfQoJCQllbHNlIHsKCQkJCWV2ZW50UHJvcHMuZW5kID0gbnVsbDsKCQkJfQoJCX0KCX0KCgoJLy8gRW5zdXJlcyB0aGUgYWxsRGF5IHByb3BlcnR5IGV4aXN0cyBhbmQgdGhlIHRpbWVsaW5lc3Mgb2YgdGhlIHN0YXJ0L2VuZCBkYXRlcyBhcmUgY29uc2lzdGVudAoJZnVuY3Rpb24gbm9ybWFsaXplRXZlbnRUaW1lcyhldmVudFByb3BzKSB7CgkJaWYgKGV2ZW50UHJvcHMuYWxsRGF5ID09IG51bGwpIHsKCQkJZXZlbnRQcm9wcy5hbGxEYXkgPSAhKGV2ZW50UHJvcHMuc3RhcnQuaGFzVGltZSgpIHx8IChldmVudFByb3BzLmVuZCAmJiBldmVudFByb3BzLmVuZC5oYXNUaW1lKCkpKTsKCQl9CgoJCWlmIChldmVudFByb3BzLmFsbERheSkgewoJCQlldmVudFByb3BzLnN0YXJ0LnN0cmlwVGltZSgpOwoJCQlpZiAoZXZlbnRQcm9wcy5lbmQpIHsKCQkJCS8vIFRPRE86IGNvbnNpZGVyIG5leHREYXlUaHJlc2hvbGQgaGVyZT8gSWYgc28sIHdpbGwgcmVxdWlyZSBhIGxvdCBvZiB0ZXN0aW5nIGFuZCBhZGp1c3RtZW50CgkJCQlldmVudFByb3BzLmVuZC5zdHJpcFRpbWUoKTsKCQkJfQoJCX0KCQllbHNlIHsKCQkJaWYgKCFldmVudFByb3BzLnN0YXJ0Lmhhc1RpbWUoKSkgewoJCQkJZXZlbnRQcm9wcy5zdGFydCA9IHQuYXBwbHlUaW1lem9uZShldmVudFByb3BzLnN0YXJ0LnRpbWUoMCkpOyAvLyB3aWxsIGFzc2lnbiBhIDAwOjAwIHRpbWUKCQkJfQoJCQlpZiAoZXZlbnRQcm9wcy5lbmQgJiYgIWV2ZW50UHJvcHMuZW5kLmhhc1RpbWUoKSkgewoJCQkJZXZlbnRQcm9wcy5lbmQgPSB0LmFwcGx5VGltZXpvbmUoZXZlbnRQcm9wcy5lbmQudGltZSgwKSk7IC8vIHdpbGwgYXNzaWduIGEgMDA6MDAgdGltZQoJCQl9CgkJfQoJfQoKCgkvLyBJZiB0aGUgZ2l2ZW4gZXZlbnQgaXMgYSByZWN1cnJpbmcgZXZlbnQsIGJyZWFrIGl0IGRvd24gaW50byBhbiBhcnJheSBvZiBpbmRpdmlkdWFsIGluc3RhbmNlcy4KCS8vIElmIG5vdCBhIHJlY3VycmluZyBldmVudCwgcmV0dXJuIGFuIGFycmF5IHdpdGggdGhlIHNpbmdsZSBvcmlnaW5hbCBldmVudC4KCS8vIElmIGdpdmVuIGEgZmFsc3kgaW5wdXQgKHByb2JhYmx5IGJlY2F1c2Ugb2YgYSBmYWlsZWQgYnVpbGRFdmVudEZyb21JbnB1dCBjYWxsKSwgcmV0dXJucyBhbiBlbXB0eSBhcnJheS4KCS8vIEhBQ0s6IGNhbiBvdmVycmlkZSB0aGUgcmVjdXJyaW5nIHdpbmRvdyBieSBwcm92aWRpbmcgY3VzdG9tIHJhbmdlU3RhcnQvcmFuZ2VFbmQgKGZvciBidXNpbmVzc0hvdXJzKS4KCWZ1bmN0aW9uIGV4cGFuZEV2ZW50KGFic3RyYWN0RXZlbnQsIF9yYW5nZVN0YXJ0LCBfcmFuZ2VFbmQpIHsKCQl2YXIgZXZlbnRzID0gW107CgkJdmFyIGRvd0hhc2g7CgkJdmFyIGRvdzsKCQl2YXIgaTsKCQl2YXIgZGF0ZTsKCQl2YXIgc3RhcnRUaW1lLCBlbmRUaW1lOwoJCXZhciBzdGFydCwgZW5kOwoJCXZhciBldmVudDsKCgkJX3JhbmdlU3RhcnQgPSBfcmFuZ2VTdGFydCB8fCByYW5nZVN0YXJ0OwoJCV9yYW5nZUVuZCA9IF9yYW5nZUVuZCB8fCByYW5nZUVuZDsKCgkJaWYgKGFic3RyYWN0RXZlbnQpIHsKCQkJaWYgKGFic3RyYWN0RXZlbnQuX3JlY3VycmluZykgewoKCQkJCS8vIG1ha2UgYSBib29sZWFuIGhhc2ggYXMgdG8gd2hldGhlciB0aGUgZXZlbnQgb2NjdXJzIG9uIGVhY2ggZGF5LW9mLXdlZWsKCQkJCWlmICgoZG93ID0gYWJzdHJhY3RFdmVudC5kb3cpKSB7CgkJCQkJZG93SGFzaCA9IHt9OwoJCQkJCWZvciAoaSA9IDA7IGkgPCBkb3cubGVuZ3RoOyBpKyspIHsKCQkJCQkJZG93SGFzaFtkb3dbaV1dID0gdHJ1ZTsKCQkJCQl9CgkJCQl9CgoJCQkJLy8gaXRlcmF0ZSB0aHJvdWdoIGV2ZXJ5IGRheSBpbiB0aGUgY3VycmVudCByYW5nZQoJCQkJZGF0ZSA9IF9yYW5nZVN0YXJ0LmNsb25lKCkuc3RyaXBUaW1lKCk7IC8vIGhvbGRzIHRoZSBkYXRlIG9mIHRoZSBjdXJyZW50IGRheQoJCQkJd2hpbGUgKGRhdGUuaXNCZWZvcmUoX3JhbmdlRW5kKSkgewoKCQkJCQlpZiAoIWRvd0hhc2ggfHwgZG93SGFzaFtkYXRlLmRheSgpXSkgeyAvLyBpZiBldmVyeWRheSwgb3IgdGhpcyBwYXJ0aWN1bGFyIGRheS1vZi13ZWVrCgoJCQkJCQlzdGFydFRpbWUgPSBhYnN0cmFjdEV2ZW50LnN0YXJ0OyAvLyB0aGUgc3RvcmVkIHN0YXJ0IGFuZCBlbmQgcHJvcGVydGllcyBhcmUgdGltZXMgKER1cmF0aW9ucykKCQkJCQkJZW5kVGltZSA9IGFic3RyYWN0RXZlbnQuZW5kOyAvLyAiCgkJCQkJCXN0YXJ0ID0gZGF0ZS5jbG9uZSgpOwoJCQkJCQllbmQgPSBudWxsOwoKCQkJCQkJaWYgKHN0YXJ0VGltZSkgewoJCQkJCQkJc3RhcnQgPSBzdGFydC50aW1lKHN0YXJ0VGltZSk7CgkJCQkJCX0KCQkJCQkJaWYgKGVuZFRpbWUpIHsKCQkJCQkJCWVuZCA9IGRhdGUuY2xvbmUoKS50aW1lKGVuZFRpbWUpOwoJCQkJCQl9CgoJCQkJCQlldmVudCA9ICQuZXh0ZW5kKHt9LCBhYnN0cmFjdEV2ZW50KTsgLy8gbWFrZSBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsCgkJCQkJCWFzc2lnbkRhdGVzVG9FdmVudCgKCQkJCQkJCXN0YXJ0LCBlbmQsCgkJCQkJCQkhc3RhcnRUaW1lICYmICFlbmRUaW1lLCAvLyBhbGxEYXk/CgkJCQkJCQlldmVudAoJCQkJCQkpOwoJCQkJCQlldmVudHMucHVzaChldmVudCk7CgkJCQkJfQoKCQkJCQlkYXRlLmFkZCgxLCAnZGF5cycpOwoJCQkJfQoJCQl9CgkJCWVsc2UgewoJCQkJZXZlbnRzLnB1c2goYWJzdHJhY3RFdmVudCk7IC8vIHJldHVybiB0aGUgb3JpZ2luYWwgZXZlbnQuIHdpbGwgYmUgYSBvbmUtaXRlbSBhcnJheQoJCQl9CgkJfQoKCQlyZXR1cm4gZXZlbnRzOwoJfQoJdC5leHBhbmRFdmVudCA9IGV4cGFuZEV2ZW50OwoKCgoJLyogRXZlbnQgTW9kaWZpY2F0aW9uIE1hdGgKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gTW9kaWZpZXMgYW4gZXZlbnQgYW5kIGFsbCByZWxhdGVkIGV2ZW50cyBieSBhcHBseWluZyB0aGUgZ2l2ZW4gcHJvcGVydGllcy4KCS8vIFNwZWNpYWwgZGF0ZS1kaWZmaW5nIGxvZ2ljIGlzIHVzZWQgZm9yIG1hbmlwdWxhdGlvbiBvZiBkYXRlcy4KCS8vIElmIGBwcm9wc2AgZG9lcyBub3QgY29udGFpbiBzdGFydC9lbmQgZGF0ZXMsIHRoZSB1cGRhdGVkIHZhbHVlcyBhcmUgYXNzdW1lZCB0byBiZSB0aGUgZXZlbnQncyBjdXJyZW50IHN0YXJ0L2VuZC4KCS8vIEFsbCBkYXRlIGNvbXBhcmlzb25zIGFyZSBkb25lIGFnYWluc3QgdGhlIGV2ZW50J3MgcHJpc3RpbmUgX3N0YXJ0IGFuZCBfZW5kIGRhdGVzLgoJLy8gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCBkZWx0YSBpbmZvcm1hdGlvbiBhbmQgYSBmdW5jdGlvbiB0byB1bmRvIGFsbCBvcGVyYXRpb25zLgoJLy8gRm9yIG1ha2luZyBjb21wdXRhdGlvbnMgaW4gYSBncmFudWxhcml0eSBncmVhdGVyIHRoYW4gZGF5L3RpbWUsIHNwZWNpZnkgbGFyZ2VVbml0LgoJLy8gTk9URTogVGhlIGdpdmVuIGBuZXdQcm9wc2AgbWlnaHQgYmUgbXV0YXRlZCBmb3Igbm9ybWFsaXphdGlvbiBwdXJwb3Nlcy4KCWZ1bmN0aW9uIG11dGF0ZUV2ZW50KGV2ZW50LCBuZXdQcm9wcywgbGFyZ2VVbml0KSB7CgkJdmFyIG1pc2NQcm9wcyA9IHt9OwoJCXZhciBvbGRQcm9wczsKCQl2YXIgY2xlYXJFbmQ7CgkJdmFyIHN0YXJ0RGVsdGE7CgkJdmFyIGVuZERlbHRhOwoJCXZhciBkdXJhdGlvbkRlbHRhOwoJCXZhciB1bmRvRnVuYzsKCgkJLy8gZGlmZnMgdGhlIGRhdGVzIGluIHRoZSBhcHByb3ByaWF0ZSB3YXksIHJldHVybmluZyBhIGR1cmF0aW9uCgkJZnVuY3Rpb24gZGlmZkRhdGVzKGRhdGUxLCBkYXRlMCkgeyAvLyBkYXRlMSAtIGRhdGUwCgkJCWlmIChsYXJnZVVuaXQpIHsKCQkJCXJldHVybiBkaWZmQnlVbml0KGRhdGUxLCBkYXRlMCwgbGFyZ2VVbml0KTsKCQkJfQoJCQllbHNlIGlmIChuZXdQcm9wcy5hbGxEYXkpIHsKCQkJCXJldHVybiBkaWZmRGF5KGRhdGUxLCBkYXRlMCk7CgkJCX0KCQkJZWxzZSB7CgkJCQlyZXR1cm4gZGlmZkRheVRpbWUoZGF0ZTEsIGRhdGUwKTsKCQkJfQoJCX0KCgkJbmV3UHJvcHMgPSBuZXdQcm9wcyB8fCB7fTsKCgkJLy8gbm9ybWFsaXplIG5ldyBkYXRlLXJlbGF0ZWQgcHJvcGVydGllcwoJCWlmICghbmV3UHJvcHMuc3RhcnQpIHsKCQkJbmV3UHJvcHMuc3RhcnQgPSBldmVudC5zdGFydC5jbG9uZSgpOwoJCX0KCQlpZiAobmV3UHJvcHMuZW5kID09PSB1bmRlZmluZWQpIHsKCQkJbmV3UHJvcHMuZW5kID0gZXZlbnQuZW5kID8gZXZlbnQuZW5kLmNsb25lKCkgOiBudWxsOwoJCX0KCQlpZiAobmV3UHJvcHMuYWxsRGF5ID09IG51bGwpIHsgLy8gaXMgbnVsbCBvciB1bmRlZmluZWQ/CgkJCW5ld1Byb3BzLmFsbERheSA9IGV2ZW50LmFsbERheTsKCQl9CgkJbm9ybWFsaXplRXZlbnREYXRlcyhuZXdQcm9wcyk7CgoJCS8vIGNyZWF0ZSBub3JtYWxpemVkIHZlcnNpb25zIG9mIHRoZSBvcmlnaW5hbCBwcm9wcyB0byBjb21wYXJlIGFnYWluc3QKCQkvLyBuZWVkIGEgcmVhbCBlbmQgdmFsdWUsIGZvciBkaWZmaW5nCgkJb2xkUHJvcHMgPSB7CgkJCXN0YXJ0OiBldmVudC5fc3RhcnQuY2xvbmUoKSwKCQkJZW5kOiBldmVudC5fZW5kID8gZXZlbnQuX2VuZC5jbG9uZSgpIDogdC5nZXREZWZhdWx0RXZlbnRFbmQoZXZlbnQuX2FsbERheSwgZXZlbnQuX3N0YXJ0KSwKCQkJYWxsRGF5OiBuZXdQcm9wcy5hbGxEYXkgLy8gbm9ybWFsaXplIHRoZSBkYXRlcyBpbiB0aGUgc2FtZSByZWdhcmQgYXMgdGhlIG5ldyBwcm9wZXJ0aWVzCgkJfTsKCQlub3JtYWxpemVFdmVudERhdGVzKG9sZFByb3BzKTsKCgkJLy8gbmVlZCB0byBjbGVhciB0aGUgZW5kIGRhdGUgaWYgZXhwbGljaXRseSBjaGFuZ2VkIHRvIG51bGwKCQljbGVhckVuZCA9IGV2ZW50Ll9lbmQgIT09IG51bGwgJiYgbmV3UHJvcHMuZW5kID09PSBudWxsOwoKCQkvLyBjb21wdXRlIHRoZSBkZWx0YSBmb3IgbW92aW5nIHRoZSBzdGFydCBkYXRlCgkJc3RhcnREZWx0YSA9IGRpZmZEYXRlcyhuZXdQcm9wcy5zdGFydCwgb2xkUHJvcHMuc3RhcnQpOwoKCQkvLyBjb21wdXRlIHRoZSBkZWx0YSBmb3IgbW92aW5nIHRoZSBlbmQgZGF0ZQoJCWlmIChuZXdQcm9wcy5lbmQpIHsKCQkJZW5kRGVsdGEgPSBkaWZmRGF0ZXMobmV3UHJvcHMuZW5kLCBvbGRQcm9wcy5lbmQpOwoJCQlkdXJhdGlvbkRlbHRhID0gZW5kRGVsdGEuc3VidHJhY3Qoc3RhcnREZWx0YSk7CgkJfQoJCWVsc2UgewoJCQlkdXJhdGlvbkRlbHRhID0gbnVsbDsKCQl9CgoJCS8vIGdhdGhlciBhbGwgbm9uLWRhdGUtcmVsYXRlZCBwcm9wZXJ0aWVzCgkJJC5lYWNoKG5ld1Byb3BzLCBmdW5jdGlvbihuYW1lLCB2YWwpIHsKCQkJaWYgKGlzTWlzY0V2ZW50UHJvcE5hbWUobmFtZSkpIHsKCQkJCWlmICh2YWwgIT09IHVuZGVmaW5lZCkgewoJCQkJCW1pc2NQcm9wc1tuYW1lXSA9IHZhbDsKCQkJCX0KCQkJfQoJCX0pOwoKCQkvLyBhcHBseSB0aGUgb3BlcmF0aW9ucyB0byB0aGUgZXZlbnQgYW5kIGFsbCByZWxhdGVkIGV2ZW50cwoJCXVuZG9GdW5jID0gbXV0YXRlRXZlbnRzKAoJCQljbGllbnRFdmVudHMoZXZlbnQuX2lkKSwgLy8gZ2V0IGV2ZW50cyB3aXRoIHRoaXMgSUQKCQkJY2xlYXJFbmQsCgkJCW5ld1Byb3BzLmFsbERheSwKCQkJc3RhcnREZWx0YSwKCQkJZHVyYXRpb25EZWx0YSwKCQkJbWlzY1Byb3BzCgkJKTsKCgkJcmV0dXJuIHsKCQkJZGF0ZURlbHRhOiBzdGFydERlbHRhLAoJCQlkdXJhdGlvbkRlbHRhOiBkdXJhdGlvbkRlbHRhLAoJCQl1bmRvOiB1bmRvRnVuYwoJCX07Cgl9CgoKCS8vIE1vZGlmaWVzIGFuIGFycmF5IG9mIGV2ZW50cyBpbiB0aGUgZm9sbG93aW5nIHdheXMgKG9wZXJhdGlvbnMgYXJlIGluIG9yZGVyKToKCS8vIC0gY2xlYXIgdGhlIGV2ZW50J3MgYGVuZGAKCS8vIC0gY29udmVydCB0aGUgZXZlbnQgdG8gYWxsRGF5CgkvLyAtIGFkZCBgZGF0ZURlbHRhYCB0byB0aGUgc3RhcnQgYW5kIGVuZAoJLy8gLSBhZGQgYGR1cmF0aW9uRGVsdGFgIHRvIHRoZSBldmVudCdzIGR1cmF0aW9uCgkvLyAtIGFzc2lnbiBgbWlzY1Byb3BzYCB0byB0aGUgZXZlbnQKCS8vCgkvLyBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBjYW4gYmUgY2FsbGVkIHRvIHVuZG8gYWxsIHRoZSBvcGVyYXRpb25zLgoJLy8KCS8vIFRPRE86IGRvbid0IHVzZSBzbyBtYW55IGNsb3N1cmVzLiBwb3NzaWJsZSBtZW1vcnkgaXNzdWVzIHdoZW4gbG90cyBvZiBldmVudHMgd2l0aCBzYW1lIElELgoJLy8KCWZ1bmN0aW9uIG11dGF0ZUV2ZW50cyhldmVudHMsIGNsZWFyRW5kLCBhbGxEYXksIGRhdGVEZWx0YSwgZHVyYXRpb25EZWx0YSwgbWlzY1Byb3BzKSB7CgkJdmFyIGlzQW1iaWdUaW1lem9uZSA9IHQuZ2V0SXNBbWJpZ1RpbWV6b25lKCk7CgkJdmFyIHVuZG9GdW5jdGlvbnMgPSBbXTsKCgkJLy8gbm9ybWFsaXplIHplcm8tbGVuZ3RoIGRlbHRhcyB0byBiZSBudWxsCgkJaWYgKGRhdGVEZWx0YSAmJiAhZGF0ZURlbHRhLnZhbHVlT2YoKSkgeyBkYXRlRGVsdGEgPSBudWxsOyB9CgkJaWYgKGR1cmF0aW9uRGVsdGEgJiYgIWR1cmF0aW9uRGVsdGEudmFsdWVPZigpKSB7IGR1cmF0aW9uRGVsdGEgPSBudWxsOyB9CgoJCSQuZWFjaChldmVudHMsIGZ1bmN0aW9uKGksIGV2ZW50KSB7CgkJCXZhciBvbGRQcm9wczsKCQkJdmFyIG5ld1Byb3BzOwoKCQkJLy8gYnVpbGQgYW4gb2JqZWN0IGhvbGRpbmcgYWxsIHRoZSBvbGQgdmFsdWVzLCBib3RoIGRhdGUtcmVsYXRlZCBhbmQgbWlzYy4KCQkJLy8gZm9yIHRoZSB1bmRvIGZ1bmN0aW9uLgoJCQlvbGRQcm9wcyA9IHsKCQkJCXN0YXJ0OiBldmVudC5zdGFydC5jbG9uZSgpLAoJCQkJZW5kOiBldmVudC5lbmQgPyBldmVudC5lbmQuY2xvbmUoKSA6IG51bGwsCgkJCQlhbGxEYXk6IGV2ZW50LmFsbERheQoJCQl9OwoJCQkkLmVhY2gobWlzY1Byb3BzLCBmdW5jdGlvbihuYW1lKSB7CgkJCQlvbGRQcm9wc1tuYW1lXSA9IGV2ZW50W25hbWVdOwoJCQl9KTsKCgkJCS8vIG5ldyBkYXRlLXJlbGF0ZWQgcHJvcGVydGllcy4gd29yayBvZmYgdGhlIG9yaWdpbmFsIGRhdGUgc25hcHNob3QuCgkJCS8vIG9rIHRvIHVzZSByZWZlcmVuY2VzIGJlY2F1c2UgdGhleSB3aWxsIGJlIHRocm93biBhd2F5IHdoZW4gYmFja3VwRXZlbnREYXRlcyBpcyBjYWxsZWQuCgkJCW5ld1Byb3BzID0gewoJCQkJc3RhcnQ6IGV2ZW50Ll9zdGFydCwKCQkJCWVuZDogZXZlbnQuX2VuZCwKCQkJCWFsbERheTogYWxsRGF5IC8vIG5vcm1hbGl6ZSB0aGUgZGF0ZXMgaW4gdGhlIHNhbWUgcmVnYXJkIGFzIHRoZSBuZXcgcHJvcGVydGllcwoJCQl9OwoJCQlub3JtYWxpemVFdmVudERhdGVzKG5ld1Byb3BzKTsgLy8gbWFzc2FnZXMgc3RhcnQvZW5kL2FsbERheQoKCQkJLy8gc3RyaXAgb3IgZW5zdXJlIHRoZSBlbmQgZGF0ZQoJCQlpZiAoY2xlYXJFbmQpIHsKCQkJCW5ld1Byb3BzLmVuZCA9IG51bGw7CgkJCX0KCQkJZWxzZSBpZiAoZHVyYXRpb25EZWx0YSAmJiAhbmV3UHJvcHMuZW5kKSB7IC8vIHRoZSBkdXJhdGlvbiB0cmFuc2xhdGlvbiByZXF1aXJlcyBhbiBlbmQgZGF0ZQoJCQkJbmV3UHJvcHMuZW5kID0gdC5nZXREZWZhdWx0RXZlbnRFbmQobmV3UHJvcHMuYWxsRGF5LCBuZXdQcm9wcy5zdGFydCk7CgkJCX0KCgkJCWlmIChkYXRlRGVsdGEpIHsKCQkJCW5ld1Byb3BzLnN0YXJ0LmFkZChkYXRlRGVsdGEpOwoJCQkJaWYgKG5ld1Byb3BzLmVuZCkgewoJCQkJCW5ld1Byb3BzLmVuZC5hZGQoZGF0ZURlbHRhKTsKCQkJCX0KCQkJfQoKCQkJaWYgKGR1cmF0aW9uRGVsdGEpIHsKCQkJCW5ld1Byb3BzLmVuZC5hZGQoZHVyYXRpb25EZWx0YSk7IC8vIGVuZCBhbHJlYWR5IGVuc3VyZWQgYWJvdmUKCQkJfQoKCQkJLy8gaWYgdGhlIGRhdGVzIGhhdmUgY2hhbmdlZCwgYW5kIHdlIGtub3cgaXQgaXMgaW1wb3NzaWJsZSB0byByZWNvbXB1dGUgdGhlCgkJCS8vIHRpbWV6b25lIG9mZnNldHMsIHN0cmlwIHRoZSB6b25lLgoJCQlpZiAoCgkJCQlpc0FtYmlnVGltZXpvbmUgJiYKCQkJCSFuZXdQcm9wcy5hbGxEYXkgJiYKCQkJCShkYXRlRGVsdGEgfHwgZHVyYXRpb25EZWx0YSkKCQkJKSB7CgkJCQluZXdQcm9wcy5zdGFydC5zdHJpcFpvbmUoKTsKCQkJCWlmIChuZXdQcm9wcy5lbmQpIHsKCQkJCQluZXdQcm9wcy5lbmQuc3RyaXBab25lKCk7CgkJCQl9CgkJCX0KCgkJCSQuZXh0ZW5kKGV2ZW50LCBtaXNjUHJvcHMsIG5ld1Byb3BzKTsgLy8gY29weSBvdmVyIG1pc2MgcHJvcHMsIHRoZW4gZGF0ZS1yZWxhdGVkIHByb3BzCgkJCWJhY2t1cEV2ZW50RGF0ZXMoZXZlbnQpOyAvLyByZWdlbmVyYXRlIGludGVybmFsIF9zdGFydC9fZW5kL19hbGxEYXkKCgkJCXVuZG9GdW5jdGlvbnMucHVzaChmdW5jdGlvbigpIHsKCQkJCSQuZXh0ZW5kKGV2ZW50LCBvbGRQcm9wcyk7CgkJCQliYWNrdXBFdmVudERhdGVzKGV2ZW50KTsgLy8gcmVnZW5lcmF0ZSBpbnRlcm5hbCBfc3RhcnQvX2VuZC9fYWxsRGF5CgkJCX0pOwoJCX0pOwoKCQlyZXR1cm4gZnVuY3Rpb24oKSB7CgkJCWZvciAodmFyIGkgPSAwOyBpIDwgdW5kb0Z1bmN0aW9ucy5sZW5ndGg7IGkrKykgewoJCQkJdW5kb0Z1bmN0aW9uc1tpXSgpOwoJCQl9CgkJfTsKCX0KCn0KCgovLyByZXR1cm5zIGFuIHVuZG8gZnVuY3Rpb24KQ2FsZW5kYXIucHJvdG90eXBlLm11dGF0ZVNlZyA9IGZ1bmN0aW9uKHNlZywgbmV3UHJvcHMpIHsKCXJldHVybiB0aGlzLm11dGF0ZUV2ZW50KHNlZy5ldmVudCwgbmV3UHJvcHMpOwp9OwoKCi8vIGhvb2sgZm9yIGV4dGVybmFsIGxpYnMgdG8gbWFuaXB1bGF0ZSBldmVudCBwcm9wZXJ0aWVzIHVwb24gY3JlYXRpb24uCi8vIHNob3VsZCBtYW5pcHVsYXRlIHRoZSBldmVudCBpbi1wbGFjZS4KQ2FsZW5kYXIucHJvdG90eXBlLm5vcm1hbGl6ZUV2ZW50ID0gZnVuY3Rpb24oZXZlbnQpIHsKfTsKCgovLyBEb2VzIHRoZSBnaXZlbiBzcGFuIChzdGFydCwgZW5kLCBhbmQgb3RoZXIgbG9jYXRpb24gaW5mb3JtYXRpb24pCi8vIGZ1bGx5IGNvbnRhaW4gdGhlIG90aGVyPwpDYWxlbmRhci5wcm90b3R5cGUuc3BhbkNvbnRhaW5zU3BhbiA9IGZ1bmN0aW9uKG91dGVyU3BhbiwgaW5uZXJTcGFuKSB7Cgl2YXIgZXZlbnRTdGFydCA9IG91dGVyU3Bhbi5zdGFydC5jbG9uZSgpLnN0cmlwWm9uZSgpOwoJdmFyIGV2ZW50RW5kID0gdGhpcy5nZXRFdmVudEVuZChvdXRlclNwYW4pLnN0cmlwWm9uZSgpOwoKCXJldHVybiBpbm5lclNwYW4uc3RhcnQgPj0gZXZlbnRTdGFydCAmJiBpbm5lclNwYW4uZW5kIDw9IGV2ZW50RW5kOwp9OwoKCi8vIFJldHVybnMgYSBsaXN0IG9mIGV2ZW50cyB0aGF0IHRoZSBnaXZlbiBldmVudCBzaG91bGQgYmUgY29tcGFyZWQgYWdhaW5zdCB3aGVuIGJlaW5nIGNvbnNpZGVyZWQgZm9yIGEgbW92ZSB0bwovLyB0aGUgc3BlY2lmaWVkIHNwYW4uIEF0dGFjaGVkIHRvIHRoZSBDYWxlbmRhcidzIHByb3RvdHlwZSBiZWNhdXNlIEV2ZW50TWFuYWdlciBpcyBhIG1peGluIGZvciBhIENhbGVuZGFyLgpDYWxlbmRhci5wcm90b3R5cGUuZ2V0UGVlckV2ZW50cyA9IGZ1bmN0aW9uKHNwYW4sIGV2ZW50KSB7Cgl2YXIgY2FjaGUgPSB0aGlzLmdldEV2ZW50Q2FjaGUoKTsKCXZhciBwZWVyRXZlbnRzID0gW107Cgl2YXIgaSwgb3RoZXJFdmVudDsKCglmb3IgKGkgPSAwOyBpIDwgY2FjaGUubGVuZ3RoOyBpKyspIHsKCQlvdGhlckV2ZW50ID0gY2FjaGVbaV07CgkJaWYgKAoJCQkhZXZlbnQgfHwKCQkJZXZlbnQuX2lkICE9PSBvdGhlckV2ZW50Ll9pZCAvLyBkb24ndCBjb21wYXJlIHRoZSBldmVudCB0byBpdHNlbGYgb3Igb3RoZXIgcmVsYXRlZCBbcmVwZWF0aW5nXSBldmVudHMKCQkpIHsKCQkJcGVlckV2ZW50cy5wdXNoKG90aGVyRXZlbnQpOwoJCX0KCX0KCglyZXR1cm4gcGVlckV2ZW50czsKfTsKCgovLyB1cGRhdGVzIHRoZSAiYmFja3VwIiBwcm9wZXJ0aWVzLCB3aGljaCBhcmUgcHJlc2VydmVkIGluIG9yZGVyIHRvIGNvbXB1dGUgZGlmZnMgbGF0ZXIgb24uCmZ1bmN0aW9uIGJhY2t1cEV2ZW50RGF0ZXMoZXZlbnQpIHsKCWV2ZW50Ll9hbGxEYXkgPSBldmVudC5hbGxEYXk7CglldmVudC5fc3RhcnQgPSBldmVudC5zdGFydC5jbG9uZSgpOwoJZXZlbnQuX2VuZCA9IGV2ZW50LmVuZCA/IGV2ZW50LmVuZC5jbG9uZSgpIDogbnVsbDsKfQoKCi8qIE92ZXJsYXBwaW5nIC8gQ29uc3RyYWluaW5nCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgovLyBEZXRlcm1pbmVzIGlmIHRoZSBnaXZlbiBldmVudCBjYW4gYmUgcmVsb2NhdGVkIHRvIHRoZSBnaXZlbiBzcGFuICh1bnpvbmVkIHN0YXJ0L2VuZCB3aXRoIG90aGVyIG1pc2MgZGF0YSkKQ2FsZW5kYXIucHJvdG90eXBlLmlzRXZlbnRTcGFuQWxsb3dlZCA9IGZ1bmN0aW9uKHNwYW4sIGV2ZW50KSB7Cgl2YXIgc291cmNlID0gZXZlbnQuc291cmNlIHx8IHt9OwoKCXZhciBjb25zdHJhaW50ID0gZmlyc3REZWZpbmVkKAoJCWV2ZW50LmNvbnN0cmFpbnQsCgkJc291cmNlLmNvbnN0cmFpbnQsCgkJdGhpcy5vcHRpb25zLmV2ZW50Q29uc3RyYWludAoJKTsKCgl2YXIgb3ZlcmxhcCA9IGZpcnN0RGVmaW5lZCgKCQlldmVudC5vdmVybGFwLAoJCXNvdXJjZS5vdmVybGFwLAoJCXRoaXMub3B0aW9ucy5ldmVudE92ZXJsYXAKCSk7CgoJcmV0dXJuIHRoaXMuaXNTcGFuQWxsb3dlZChzcGFuLCBjb25zdHJhaW50LCBvdmVybGFwLCBldmVudCkgJiYKCQkoIXRoaXMub3B0aW9ucy5ldmVudEFsbG93IHx8IHRoaXMub3B0aW9ucy5ldmVudEFsbG93KHNwYW4sIGV2ZW50KSAhPT0gZmFsc2UpOwp9OwoKCi8vIERldGVybWluZXMgaWYgYW4gZXh0ZXJuYWwgZXZlbnQgY2FuIGJlIHJlbG9jYXRlZCB0byB0aGUgZ2l2ZW4gc3BhbiAodW56b25lZCBzdGFydC9lbmQgd2l0aCBvdGhlciBtaXNjIGRhdGEpCkNhbGVuZGFyLnByb3RvdHlwZS5pc0V4dGVybmFsU3BhbkFsbG93ZWQgPSBmdW5jdGlvbihldmVudFNwYW4sIGV2ZW50TG9jYXRpb24sIGV2ZW50UHJvcHMpIHsKCXZhciBldmVudElucHV0OwoJdmFyIGV2ZW50OwoKCS8vIG5vdGU6IHZlcnkgc2ltaWxhciBsb2dpYyBpcyBpbiBWaWV3J3MgcmVwb3J0RXh0ZXJuYWxEcm9wCglpZiAoZXZlbnRQcm9wcykgewoJCWV2ZW50SW5wdXQgPSAkLmV4dGVuZCh7fSwgZXZlbnRQcm9wcywgZXZlbnRMb2NhdGlvbik7CgkJZXZlbnQgPSB0aGlzLmV4cGFuZEV2ZW50KAoJCQl0aGlzLmJ1aWxkRXZlbnRGcm9tSW5wdXQoZXZlbnRJbnB1dCkKCQkpWzBdOwoJfQoKCWlmIChldmVudCkgewoJCXJldHVybiB0aGlzLmlzRXZlbnRTcGFuQWxsb3dlZChldmVudFNwYW4sIGV2ZW50KTsKCX0KCWVsc2UgeyAvLyB0cmVhdCBpdCBhcyBhIHNlbGVjdGlvbgoKCQlyZXR1cm4gdGhpcy5pc1NlbGVjdGlvblNwYW5BbGxvd2VkKGV2ZW50U3Bhbik7Cgl9Cn07CgoKLy8gRGV0ZXJtaW5lcyB0aGUgZ2l2ZW4gc3BhbiAodW56b25lZCBzdGFydC9lbmQgd2l0aCBvdGhlciBtaXNjIGRhdGEpIGNhbiBiZSBzZWxlY3RlZC4KQ2FsZW5kYXIucHJvdG90eXBlLmlzU2VsZWN0aW9uU3BhbkFsbG93ZWQgPSBmdW5jdGlvbihzcGFuKSB7CglyZXR1cm4gdGhpcy5pc1NwYW5BbGxvd2VkKHNwYW4sIHRoaXMub3B0aW9ucy5zZWxlY3RDb25zdHJhaW50LCB0aGlzLm9wdGlvbnMuc2VsZWN0T3ZlcmxhcCkgJiYKCQkoIXRoaXMub3B0aW9ucy5zZWxlY3RBbGxvdyB8fCB0aGlzLm9wdGlvbnMuc2VsZWN0QWxsb3coc3BhbikgIT09IGZhbHNlKTsKfTsKCgovLyBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHNwYW4gKGNhdXNlZCBieSBhbiBldmVudCBkcm9wL3Jlc2l6ZSBvciBhIHNlbGVjdGlvbikgaXMgYWxsb3dlZCB0byBleGlzdAovLyBhY2NvcmRpbmcgdG8gdGhlIGNvbnN0cmFpbnQvb3ZlcmxhcCBzZXR0aW5ncy4KLy8gYGV2ZW50YCBpcyBub3QgcmVxdWlyZWQgaWYgY2hlY2tpbmcgYSBzZWxlY3Rpb24uCkNhbGVuZGFyLnByb3RvdHlwZS5pc1NwYW5BbGxvd2VkID0gZnVuY3Rpb24oc3BhbiwgY29uc3RyYWludCwgb3ZlcmxhcCwgZXZlbnQpIHsKCXZhciBjb25zdHJhaW50RXZlbnRzOwoJdmFyIGFueUNvbnRhaW5tZW50OwoJdmFyIHBlZXJFdmVudHM7Cgl2YXIgaSwgcGVlckV2ZW50OwoJdmFyIHBlZXJPdmVybGFwOwoKCS8vIHRoZSByYW5nZSBtdXN0IGJlIGZ1bGx5IGNvbnRhaW5lZCBieSBhdCBsZWFzdCBvbmUgb2YgcHJvZHVjZWQgY29uc3RyYWludCBldmVudHMKCWlmIChjb25zdHJhaW50ICE9IG51bGwpIHsKCgkJLy8gbm90IHRyZWF0ZWQgYXMgYW4gZXZlbnQhIGludGVybWVkaWF0ZSBkYXRhIHN0cnVjdHVyZQoJCS8vIFRPRE86IHVzZSByYW5nZXMgaW4gdGhlIGZ1dHVyZQoJCWNvbnN0cmFpbnRFdmVudHMgPSB0aGlzLmNvbnN0cmFpbnRUb0V2ZW50cyhjb25zdHJhaW50KTsKCQlpZiAoY29uc3RyYWludEV2ZW50cykgeyAvLyBub3QgaW52YWxpZAoKCQkJYW55Q29udGFpbm1lbnQgPSBmYWxzZTsKCQkJZm9yIChpID0gMDsgaSA8IGNvbnN0cmFpbnRFdmVudHMubGVuZ3RoOyBpKyspIHsKCQkJCWlmICh0aGlzLnNwYW5Db250YWluc1NwYW4oY29uc3RyYWludEV2ZW50c1tpXSwgc3BhbikpIHsKCQkJCQlhbnlDb250YWlubWVudCA9IHRydWU7CgkJCQkJYnJlYWs7CgkJCQl9CgkJCX0KCgkJCWlmICghYW55Q29udGFpbm1lbnQpIHsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCX0KCX0KCglwZWVyRXZlbnRzID0gdGhpcy5nZXRQZWVyRXZlbnRzKHNwYW4sIGV2ZW50KTsKCglmb3IgKGkgPSAwOyBpIDwgcGVlckV2ZW50cy5sZW5ndGg7IGkrKykgIHsKCQlwZWVyRXZlbnQgPSBwZWVyRXZlbnRzW2ldOwoKCQkvLyB0aGVyZSBuZWVkcyB0byBiZSBhbiBhY3R1YWwgaW50ZXJzZWN0aW9uIGJlZm9yZSBkaXNhbGxvd2luZyBhbnl0aGluZwoJCWlmICh0aGlzLmV2ZW50SW50ZXJzZWN0c1JhbmdlKHBlZXJFdmVudCwgc3BhbikpIHsKCgkJCS8vIGV2YWx1YXRlIG92ZXJsYXAgZm9yIHRoZSBnaXZlbiByYW5nZSBhbmQgc2hvcnQtY2lyY3VpdCBpZiBuZWNlc3NhcnkKCQkJaWYgKG92ZXJsYXAgPT09IGZhbHNlKSB7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQkJLy8gaWYgdGhlIGV2ZW50J3Mgb3ZlcmxhcCBpcyBhIHRlc3QgZnVuY3Rpb24sIHBhc3MgdGhlIHBlZXIgZXZlbnQgaW4gcXVlc3Rpb24gYXMgdGhlIGZpcnN0IHBhcmFtCgkJCWVsc2UgaWYgKHR5cGVvZiBvdmVybGFwID09PSAnZnVuY3Rpb24nICYmICFvdmVybGFwKHBlZXJFdmVudCwgZXZlbnQpKSB7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCgkJCS8vIGlmIHdlIGFyZSBjb21wdXRpbmcgaWYgdGhlIGdpdmVuIHJhbmdlIGlzIGFsbG93YWJsZSBmb3IgYW4gZXZlbnQsIGNvbnNpZGVyIHRoZSBvdGhlciBldmVudCdzCgkJCS8vIEV2ZW50T2JqZWN0LXNwZWNpZmljIG9yIFNvdXJjZS1zcGVjaWZpYyBgb3ZlcmxhcGAgcHJvcGVydHkKCQkJaWYgKGV2ZW50KSB7CgkJCQlwZWVyT3ZlcmxhcCA9IGZpcnN0RGVmaW5lZCgKCQkJCQlwZWVyRXZlbnQub3ZlcmxhcCwKCQkJCQkocGVlckV2ZW50LnNvdXJjZSB8fCB7fSkub3ZlcmxhcAoJCQkJCS8vIHdlIGFscmVhZHkgY29uc2lkZXJlZCB0aGUgZ2xvYmFsIGBldmVudE92ZXJsYXBgCgkJCQkpOwoJCQkJaWYgKHBlZXJPdmVybGFwID09PSBmYWxzZSkgewoJCQkJCXJldHVybiBmYWxzZTsKCQkJCX0KCQkJCS8vIGlmIHRoZSBwZWVyIGV2ZW50J3Mgb3ZlcmxhcCBpcyBhIHRlc3QgZnVuY3Rpb24sIHBhc3MgdGhlIHN1YmplY3QgZXZlbnQgYXMgdGhlIGZpcnN0IHBhcmFtCgkJCQlpZiAodHlwZW9mIHBlZXJPdmVybGFwID09PSAnZnVuY3Rpb24nICYmICFwZWVyT3ZlcmxhcChldmVudCwgcGVlckV2ZW50KSkgewoJCQkJCXJldHVybiBmYWxzZTsKCQkJCX0KCQkJfQoJCX0KCX0KCglyZXR1cm4gdHJ1ZTsKfTsKCgovLyBHaXZlbiBhbiBldmVudCBpbnB1dCBmcm9tIHRoZSBBUEksIHByb2R1Y2VzIGFuIGFycmF5IG9mIGV2ZW50IG9iamVjdHMuIFBvc3NpYmxlIGV2ZW50IGlucHV0czoKLy8gJ2J1c2luZXNzSG91cnMnCi8vIEFuIGV2ZW50IElEIChudW1iZXIgb3Igc3RyaW5nKQovLyBBbiBvYmplY3Qgd2l0aCBzcGVjaWZpYyBzdGFydC9lbmQgZGF0ZXMgb3IgYSByZWN1cnJpbmcgZXZlbnQgKGxpa2Ugd2hhdCBidXNpbmVzc0hvdXJzIGFjY2VwdHMpCkNhbGVuZGFyLnByb3RvdHlwZS5jb25zdHJhaW50VG9FdmVudHMgPSBmdW5jdGlvbihjb25zdHJhaW50SW5wdXQpIHsKCglpZiAoY29uc3RyYWludElucHV0ID09PSAnYnVzaW5lc3NIb3VycycpIHsKCQlyZXR1cm4gdGhpcy5nZXRDdXJyZW50QnVzaW5lc3NIb3VyRXZlbnRzKCk7Cgl9CgoJaWYgKHR5cGVvZiBjb25zdHJhaW50SW5wdXQgPT09ICdvYmplY3QnKSB7CgkJaWYgKGNvbnN0cmFpbnRJbnB1dC5zdGFydCAhPSBudWxsKSB7IC8vIG5lZWRzIHRvIGJlIGV2ZW50LWxpa2UgaW5wdXQKCQkJcmV0dXJuIHRoaXMuZXhwYW5kRXZlbnQodGhpcy5idWlsZEV2ZW50RnJvbUlucHV0KGNvbnN0cmFpbnRJbnB1dCkpOwoJCX0KCQllbHNlIHsKCQkJcmV0dXJuIG51bGw7IC8vIGludmFsaWQKCQl9Cgl9CgoJcmV0dXJuIHRoaXMuY2xpZW50RXZlbnRzKGNvbnN0cmFpbnRJbnB1dCk7IC8vIHByb2JhYmx5IGFuIElECn07CgoKLy8gRG9lcyB0aGUgZXZlbnQncyBkYXRlIHJhbmdlIGludGVyc2VjdCB3aXRoIHRoZSBnaXZlbiByYW5nZT8KLy8gc3RhcnQvZW5kIGFscmVhZHkgYXNzdW1lZCB0byBoYXZlIHN0cmlwcGVkIHpvbmVzIDooCkNhbGVuZGFyLnByb3RvdHlwZS5ldmVudEludGVyc2VjdHNSYW5nZSA9IGZ1bmN0aW9uKGV2ZW50LCByYW5nZSkgewoJdmFyIGV2ZW50U3RhcnQgPSBldmVudC5zdGFydC5jbG9uZSgpLnN0cmlwWm9uZSgpOwoJdmFyIGV2ZW50RW5kID0gdGhpcy5nZXRFdmVudEVuZChldmVudCkuc3RyaXBab25lKCk7CgoJcmV0dXJuIHJhbmdlLnN0YXJ0IDwgZXZlbnRFbmQgJiYgcmFuZ2UuZW5kID4gZXZlbnRTdGFydDsKfTsKCgovKiBCdXNpbmVzcyBIb3VycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgp2YXIgQlVTSU5FU1NfSE9VUl9FVkVOVF9ERUZBVUxUUyA9IHsKCWlkOiAnX2ZjQnVzaW5lc3NIb3VycycsIC8vIHdpbGwgcmVsYXRlIGV2ZW50cyBmcm9tIGRpZmZlcmVudCBjYWxscyB0byBleHBhbmRFdmVudAoJc3RhcnQ6ICcwOTowMCcsCgllbmQ6ICcxNzowMCcsCglkb3c6IFsgMSwgMiwgMywgNCwgNSBdLCAvLyBtb25kYXkgLSBmcmlkYXkKCXJlbmRlcmluZzogJ2ludmVyc2UtYmFja2dyb3VuZCcKCS8vIGNsYXNzTmFtZXMgYXJlIGRlZmluZWQgaW4gYnVzaW5lc3NIb3Vyc1NlZ0NsYXNzZXMKfTsKCi8vIFJldHVybiBldmVudHMgb2JqZWN0cyBmb3IgYnVzaW5lc3MgaG91cnMgd2l0aGluIHRoZSBjdXJyZW50IHZpZXcuCi8vIEFidXNlIG9mIG91ciBldmVudCBzeXN0ZW0gOigKQ2FsZW5kYXIucHJvdG90eXBlLmdldEN1cnJlbnRCdXNpbmVzc0hvdXJFdmVudHMgPSBmdW5jdGlvbih3aG9sZURheSkgewoJcmV0dXJuIHRoaXMuY29tcHV0ZUJ1c2luZXNzSG91ckV2ZW50cyh3aG9sZURheSwgdGhpcy5vcHRpb25zLmJ1c2luZXNzSG91cnMpOwp9OwoKLy8gR2l2ZW4gYSByYXcgaW5wdXQgdmFsdWUgZnJvbSBvcHRpb25zLCByZXR1cm4gZXZlbnRzIG9iamVjdHMgZm9yIGJ1c2luZXNzIGhvdXJzIHdpdGhpbiB0aGUgY3VycmVudCB2aWV3LgpDYWxlbmRhci5wcm90b3R5cGUuY29tcHV0ZUJ1c2luZXNzSG91ckV2ZW50cyA9IGZ1bmN0aW9uKHdob2xlRGF5LCBpbnB1dCkgewoJaWYgKGlucHV0ID09PSB0cnVlKSB7CgkJcmV0dXJuIHRoaXMuZXhwYW5kQnVzaW5lc3NIb3VyRXZlbnRzKHdob2xlRGF5LCBbIHt9IF0pOwoJfQoJZWxzZSBpZiAoJC5pc1BsYWluT2JqZWN0KGlucHV0KSkgewoJCXJldHVybiB0aGlzLmV4cGFuZEJ1c2luZXNzSG91ckV2ZW50cyh3aG9sZURheSwgWyBpbnB1dCBdKTsKCX0KCWVsc2UgaWYgKCQuaXNBcnJheShpbnB1dCkpIHsKCQlyZXR1cm4gdGhpcy5leHBhbmRCdXNpbmVzc0hvdXJFdmVudHMod2hvbGVEYXksIGlucHV0LCB0cnVlKTsKCX0KCWVsc2UgewoJCXJldHVybiBbXTsKCX0KfTsKCi8vIGlucHV0cyBleHBlY3RlZCB0byBiZSBhbiBhcnJheSBvZiBvYmplY3RzLgovLyBpZiBpZ25vcmVOb0RvdyBpcyB0cnVlLCB3aWxsIGlnbm9yZSBlbnRyaWVzIHRoYXQgZG9uJ3Qgc3BlY2lmeSBhIGRheS1vZi13ZWVrIChkb3cpIGtleS4KQ2FsZW5kYXIucHJvdG90eXBlLmV4cGFuZEJ1c2luZXNzSG91ckV2ZW50cyA9IGZ1bmN0aW9uKHdob2xlRGF5LCBpbnB1dHMsIGlnbm9yZU5vRG93KSB7Cgl2YXIgdmlldyA9IHRoaXMuZ2V0VmlldygpOwoJdmFyIGV2ZW50cyA9IFtdOwoJdmFyIGksIGlucHV0OwoKCWZvciAoaSA9IDA7IGkgPCBpbnB1dHMubGVuZ3RoOyBpKyspIHsKCQlpbnB1dCA9IGlucHV0c1tpXTsKCgkJaWYgKGlnbm9yZU5vRG93ICYmICFpbnB1dC5kb3cpIHsKCQkJY29udGludWU7CgkJfQoKCQkvLyBnaXZlIGRlZmF1bHRzLiB3aWxsIG1ha2UgYSBjb3B5CgkJaW5wdXQgPSAkLmV4dGVuZCh7fSwgQlVTSU5FU1NfSE9VUl9FVkVOVF9ERUZBVUxUUywgaW5wdXQpOwoKCQkvLyBpZiBhIHdob2xlLWRheSBzZXJpZXMgaXMgcmVxdWVzdGVkLCBjbGVhciB0aGUgc3RhcnQvZW5kIHRpbWVzCgkJaWYgKHdob2xlRGF5KSB7CgkJCWlucHV0LnN0YXJ0ID0gbnVsbDsKCQkJaW5wdXQuZW5kID0gbnVsbDsKCQl9CgoJCWV2ZW50cy5wdXNoLmFwcGx5KGV2ZW50cywgLy8gYXBwZW5kCgkJCXRoaXMuZXhwYW5kRXZlbnQoCgkJCQl0aGlzLmJ1aWxkRXZlbnRGcm9tSW5wdXQoaW5wdXQpLAoJCQkJdmlldy5hY3RpdmVSYW5nZS5zdGFydCwKCQkJCXZpZXcuYWN0aXZlUmFuZ2UuZW5kCgkJCSkKCQkpOwoJfQoKCXJldHVybiBldmVudHM7Cn07Cgo7OwoKLyogQW4gYWJzdHJhY3QgY2xhc3MgZm9yIHRoZSAiYmFzaWMiIHZpZXdzLCBhcyB3ZWxsIGFzIG1vbnRoIHZpZXcuIFJlbmRlcnMgb25lIG9yIG1vcmUgcm93cyBvZiBkYXkgY2VsbHMuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovLyBJdCBpcyBhIG1hbmFnZXIgZm9yIGEgRGF5R3JpZCBzdWJjb21wb25lbnQsIHdoaWNoIGRvZXMgbW9zdCBvZiB0aGUgaGVhdnkgbGlmdGluZy4KLy8gSXQgaXMgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHdpZHRoL2hlaWdodC4KCnZhciBCYXNpY1ZpZXcgPSBGQy5CYXNpY1ZpZXcgPSBWaWV3LmV4dGVuZCh7CgoJc2Nyb2xsZXI6IG51bGwsCgoJZGF5R3JpZENsYXNzOiBEYXlHcmlkLCAvLyBjbGFzcyB0aGUgZGF5R3JpZCB3aWxsIGJlIGluc3RhbnRpYXRlZCBmcm9tIChvdmVycmlkYWJsZSBieSBzdWJjbGFzc2VzKQoJZGF5R3JpZDogbnVsbCwgLy8gdGhlIG1haW4gc3ViY29tcG9uZW50IHRoYXQgZG9lcyBtb3N0IG9mIHRoZSBoZWF2eSBsaWZ0aW5nCgoJZGF5TnVtYmVyc1Zpc2libGU6IGZhbHNlLCAvLyBkaXNwbGF5IGRheSBudW1iZXJzIG9uIGVhY2ggZGF5IGNlbGw/Cgljb2xXZWVrTnVtYmVyc1Zpc2libGU6IGZhbHNlLCAvLyBkaXNwbGF5IHdlZWsgbnVtYmVycyBhbG9uZyB0aGUgc2lkZT8KCWNlbGxXZWVrTnVtYmVyc1Zpc2libGU6IGZhbHNlLCAvLyBkaXNwbGF5IHdlZWsgbnVtYmVycyBpbiBkYXkgY2VsbD8KCgl3ZWVrTnVtYmVyV2lkdGg6IG51bGwsIC8vIHdpZHRoIG9mIGFsbCB0aGUgd2Vlay1udW1iZXIgY2VsbHMgcnVubmluZyBkb3duIHRoZSBzaWRlCgoJaGVhZENvbnRhaW5lckVsOiBudWxsLCAvLyBkaXYgdGhhdCBob2xkJ3MgdGhlIGRheUdyaWQncyByZW5kZXJlZCBkYXRlIGhlYWRlcgoJaGVhZFJvd0VsOiBudWxsLCAvLyB0aGUgZmFrZSByb3cgZWxlbWVudCBvZiB0aGUgZGF5LW9mLXdlZWsgaGVhZGVyCgoKCWluaXRpYWxpemU6IGZ1bmN0aW9uKCkgewoJCXRoaXMuZGF5R3JpZCA9IHRoaXMuaW5zdGFudGlhdGVEYXlHcmlkKCk7CgoJCXRoaXMuc2Nyb2xsZXIgPSBuZXcgU2Nyb2xsZXIoewoJCQlvdmVyZmxvd1g6ICdoaWRkZW4nLAoJCQlvdmVyZmxvd1k6ICdhdXRvJwoJCX0pOwoJfSwKCgoJLy8gR2VuZXJhdGVzIHRoZSBEYXlHcmlkIG9iamVjdCB0aGlzIHZpZXcgbmVlZHMuIERyYXdzIGZyb20gdGhpcy5kYXlHcmlkQ2xhc3MKCWluc3RhbnRpYXRlRGF5R3JpZDogZnVuY3Rpb24oKSB7CgkJLy8gZ2VuZXJhdGUgYSBzdWJjbGFzcyBvbiB0aGUgZmx5IHdpdGggQmFzaWNWaWV3LXNwZWNpZmljIGJlaGF2aW9yCgkJLy8gVE9ETzogY2FjaGUgdGhpcyBzdWJjbGFzcwoJCXZhciBzdWJjbGFzcyA9IHRoaXMuZGF5R3JpZENsYXNzLmV4dGVuZChiYXNpY0RheUdyaWRNZXRob2RzKTsKCgkJcmV0dXJuIG5ldyBzdWJjbGFzcyh0aGlzKTsKCX0sCgoKCS8vIENvbXB1dGVzIHRoZSBkYXRlIHJhbmdlIHRoYXQgd2lsbCBiZSByZW5kZXJlZC4KCWJ1aWxkUmVuZGVyUmFuZ2U6IGZ1bmN0aW9uKGN1cnJlbnRSYW5nZSwgY3VycmVudFJhbmdlVW5pdCkgewoJCXZhciByZW5kZXJSYW5nZSA9IFZpZXcucHJvdG90eXBlLmJ1aWxkUmVuZGVyUmFuZ2UuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKCgkJLy8geWVhciBhbmQgbW9udGggdmlld3Mgc2hvdWxkIGJlIGFsaWduZWQgd2l0aCB3ZWVrcy4gdGhpcyBpcyBhbHJlYWR5IGRvbmUgZm9yIHdlZWsKCQlpZiAoL14oeWVhcnxtb250aCkkLy50ZXN0KGN1cnJlbnRSYW5nZVVuaXQpKSB7CgkJCXJlbmRlclJhbmdlLnN0YXJ0LnN0YXJ0T2YoJ3dlZWsnKTsKCgkJCS8vIG1ha2UgZW5kLW9mLXdlZWsgaWYgbm90IGFscmVhZHkKCQkJaWYgKHJlbmRlclJhbmdlLmVuZC53ZWVrZGF5KCkpIHsKCQkJCXJlbmRlclJhbmdlLmVuZC5hZGQoMSwgJ3dlZWsnKS5zdGFydE9mKCd3ZWVrJyk7IC8vIGV4Y2x1c2l2ZWx5IG1vdmUgYmFja3dhcmRzCgkJCX0KCQl9CgoJCXJldHVybiB0aGlzLnRyaW1IaWRkZW5EYXlzKHJlbmRlclJhbmdlKTsKCX0sCgoKCS8vIFJlbmRlcnMgdGhlIHZpZXcgaW50byBgdGhpcy5lbGAsIHdoaWNoIHNob3VsZCBhbHJlYWR5IGJlIGFzc2lnbmVkCglyZW5kZXJEYXRlczogZnVuY3Rpb24oKSB7CgoJCXRoaXMuZGF5R3JpZC5icmVha09uV2Vla3MgPSAveWVhcnxtb250aHx3ZWVrLy50ZXN0KHRoaXMuY3VycmVudFJhbmdlVW5pdCk7IC8vIGRvIGJlZm9yZSBHcmlkOjpzZXRSYW5nZQoJCXRoaXMuZGF5R3JpZC5zZXRSYW5nZSh0aGlzLnJlbmRlclJhbmdlKTsKCgkJdGhpcy5kYXlOdW1iZXJzVmlzaWJsZSA9IHRoaXMuZGF5R3JpZC5yb3dDbnQgPiAxOyAvLyBUT0RPOiBtYWtlIGdyaWQgcmVzcG9uc2libGUKCQlpZiAodGhpcy5vcHQoJ3dlZWtOdW1iZXJzJykpIHsKCQkJaWYgKHRoaXMub3B0KCd3ZWVrTnVtYmVyc1dpdGhpbkRheXMnKSkgewoJCQkJdGhpcy5jZWxsV2Vla051bWJlcnNWaXNpYmxlID0gdHJ1ZTsKCQkJCXRoaXMuY29sV2Vla051bWJlcnNWaXNpYmxlID0gZmFsc2U7CgkJCX0KCQkJZWxzZSB7CgkJCQl0aGlzLmNlbGxXZWVrTnVtYmVyc1Zpc2libGUgPSBmYWxzZTsKCQkJCXRoaXMuY29sV2Vla051bWJlcnNWaXNpYmxlID0gdHJ1ZTsKCQkJfTsKCQl9CgkJdGhpcy5kYXlHcmlkLm51bWJlcnNWaXNpYmxlID0gdGhpcy5kYXlOdW1iZXJzVmlzaWJsZSB8fAoJCQl0aGlzLmNlbGxXZWVrTnVtYmVyc1Zpc2libGUgfHwgdGhpcy5jb2xXZWVrTnVtYmVyc1Zpc2libGU7CgoJCXRoaXMuZWwuYWRkQ2xhc3MoJ2ZjLWJhc2ljLXZpZXcnKS5odG1sKHRoaXMucmVuZGVyU2tlbGV0b25IdG1sKCkpOwoJCXRoaXMucmVuZGVySGVhZCgpOwoKCQl0aGlzLnNjcm9sbGVyLnJlbmRlcigpOwoJCXZhciBkYXlHcmlkQ29udGFpbmVyRWwgPSB0aGlzLnNjcm9sbGVyLmVsLmFkZENsYXNzKCdmYy1kYXktZ3JpZC1jb250YWluZXInKTsKCQl2YXIgZGF5R3JpZEVsID0gJCgnPGRpdiBjbGFzcz0iZmMtZGF5LWdyaWQiIC8+JykuYXBwZW5kVG8oZGF5R3JpZENvbnRhaW5lckVsKTsKCQl0aGlzLmVsLmZpbmQoJy5mYy1ib2R5ID4gdHIgPiB0ZCcpLmFwcGVuZChkYXlHcmlkQ29udGFpbmVyRWwpOwoKCQl0aGlzLmRheUdyaWQuc2V0RWxlbWVudChkYXlHcmlkRWwpOwoJCXRoaXMuZGF5R3JpZC5yZW5kZXJEYXRlcyh0aGlzLmhhc1JpZ2lkUm93cygpKTsKCX0sCgoKCS8vIHJlbmRlciB0aGUgZGF5LW9mLXdlZWsgaGVhZGVycwoJcmVuZGVySGVhZDogZnVuY3Rpb24oKSB7CgkJdGhpcy5oZWFkQ29udGFpbmVyRWwgPQoJCQl0aGlzLmVsLmZpbmQoJy5mYy1oZWFkLWNvbnRhaW5lcicpCgkJCQkuaHRtbCh0aGlzLmRheUdyaWQucmVuZGVySGVhZEh0bWwoKSk7CgkJdGhpcy5oZWFkUm93RWwgPSB0aGlzLmhlYWRDb250YWluZXJFbC5maW5kKCcuZmMtcm93Jyk7Cgl9LAoKCgkvLyBVbnJlbmRlcnMgdGhlIGNvbnRlbnQgb2YgdGhlIHZpZXcuIFNpbmNlIHdlIGhhdmVuJ3Qgc2VwYXJhdGVkIHNrZWxldG9uIHJlbmRlcmluZyBmcm9tIGRhdGUgcmVuZGVyaW5nLAoJLy8gYWx3YXlzIGNvbXBsZXRlbHkga2lsbCB0aGUgZGF5R3JpZCdzIHJlbmRlcmluZy4KCXVucmVuZGVyRGF0ZXM6IGZ1bmN0aW9uKCkgewoJCXRoaXMuZGF5R3JpZC51bnJlbmRlckRhdGVzKCk7CgkJdGhpcy5kYXlHcmlkLnJlbW92ZUVsZW1lbnQoKTsKCQl0aGlzLnNjcm9sbGVyLmRlc3Ryb3koKTsKCX0sCgoKCXJlbmRlckJ1c2luZXNzSG91cnM6IGZ1bmN0aW9uKCkgewoJCXRoaXMuZGF5R3JpZC5yZW5kZXJCdXNpbmVzc0hvdXJzKCk7Cgl9LAoKCgl1bnJlbmRlckJ1c2luZXNzSG91cnM6IGZ1bmN0aW9uKCkgewoJCXRoaXMuZGF5R3JpZC51bnJlbmRlckJ1c2luZXNzSG91cnMoKTsKCX0sCgoKCS8vIEJ1aWxkcyB0aGUgSFRNTCBza2VsZXRvbiBmb3IgdGhlIHZpZXcuCgkvLyBUaGUgZGF5LWdyaWQgY29tcG9uZW50IHdpbGwgcmVuZGVyIGluc2lkZSBvZiBhIGNvbnRhaW5lciBkZWZpbmVkIGJ5IHRoaXMgSFRNTC4KCXJlbmRlclNrZWxldG9uSHRtbDogZnVuY3Rpb24oKSB7CgkJcmV0dXJuICcnICsKCQkJJzx0YWJsZT4nICsKCQkJCSc8dGhlYWQgY2xhc3M9ImZjLWhlYWQiPicgKwoJCQkJCSc8dHI+JyArCgkJCQkJCSc8dGQgY2xhc3M9ImZjLWhlYWQtY29udGFpbmVyICcgKyB0aGlzLndpZGdldEhlYWRlckNsYXNzICsgJyI+PC90ZD4nICsKCQkJCQknPC90cj4nICsKCQkJCSc8L3RoZWFkPicgKwoJCQkJJzx0Ym9keSBjbGFzcz0iZmMtYm9keSI+JyArCgkJCQkJJzx0cj4nICsKCQkJCQkJJzx0ZCBjbGFzcz0iJyArIHRoaXMud2lkZ2V0Q29udGVudENsYXNzICsgJyI+PC90ZD4nICsKCQkJCQknPC90cj4nICsKCQkJCSc8L3Rib2R5PicgKwoJCQknPC90YWJsZT4nOwoJfSwKCgoJLy8gR2VuZXJhdGVzIGFuIEhUTUwgYXR0cmlidXRlIHN0cmluZyBmb3Igc2V0dGluZyB0aGUgd2lkdGggb2YgdGhlIHdlZWsgbnVtYmVyIGNvbHVtbiwgaWYgaXQgaXMga25vd24KCXdlZWtOdW1iZXJTdHlsZUF0dHI6IGZ1bmN0aW9uKCkgewoJCWlmICh0aGlzLndlZWtOdW1iZXJXaWR0aCAhPT0gbnVsbCkgewoJCQlyZXR1cm4gJ3N0eWxlPSJ3aWR0aDonICsgdGhpcy53ZWVrTnVtYmVyV2lkdGggKyAncHgiJzsKCQl9CgkJcmV0dXJuICcnOwoJfSwKCgoJLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIGVhY2ggcm93IHNob3VsZCBoYXZlIGEgY29uc3RhbnQgaGVpZ2h0CgloYXNSaWdpZFJvd3M6IGZ1bmN0aW9uKCkgewoJCXZhciBldmVudExpbWl0ID0gdGhpcy5vcHQoJ2V2ZW50TGltaXQnKTsKCQlyZXR1cm4gZXZlbnRMaW1pdCAmJiB0eXBlb2YgZXZlbnRMaW1pdCAhPT0gJ251bWJlcic7Cgl9LAoKCgkvKiBEaW1lbnNpb25zCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBSZWZyZXNoZXMgdGhlIGhvcml6b250YWwgZGltZW5zaW9ucyBvZiB0aGUgdmlldwoJdXBkYXRlV2lkdGg6IGZ1bmN0aW9uKCkgewoJCWlmICh0aGlzLmNvbFdlZWtOdW1iZXJzVmlzaWJsZSkgewoJCQkvLyBNYWtlIHN1cmUgYWxsIHdlZWsgbnVtYmVyIGNlbGxzIHJ1bm5pbmcgZG93biB0aGUgc2lkZSBoYXZlIHRoZSBzYW1lIHdpZHRoLgoJCQkvLyBSZWNvcmQgdGhlIHdpZHRoIGZvciBjZWxscyBjcmVhdGVkIGxhdGVyLgoJCQl0aGlzLndlZWtOdW1iZXJXaWR0aCA9IG1hdGNoQ2VsbFdpZHRocygKCQkJCXRoaXMuZWwuZmluZCgnLmZjLXdlZWstbnVtYmVyJykKCQkJKTsKCQl9Cgl9LAoKCgkvLyBBZGp1c3RzIHRoZSB2ZXJ0aWNhbCBkaW1lbnNpb25zIG9mIHRoZSB2aWV3IHRvIHRoZSBzcGVjaWZpZWQgdmFsdWVzCglzZXRIZWlnaHQ6IGZ1bmN0aW9uKHRvdGFsSGVpZ2h0LCBpc0F1dG8pIHsKCQl2YXIgZXZlbnRMaW1pdCA9IHRoaXMub3B0KCdldmVudExpbWl0Jyk7CgkJdmFyIHNjcm9sbGVySGVpZ2h0OwoJCXZhciBzY3JvbGxiYXJXaWR0aHM7CgoJCS8vIHJlc2V0IGFsbCBoZWlnaHRzIHRvIGJlIG5hdHVyYWwKCQl0aGlzLnNjcm9sbGVyLmNsZWFyKCk7CgkJdW5jb21wZW5zYXRlU2Nyb2xsKHRoaXMuaGVhZFJvd0VsKTsKCgkJdGhpcy5kYXlHcmlkLnJlbW92ZVNlZ1BvcG92ZXIoKTsgLy8ga2lsbCB0aGUgIm1vcmUiIHBvcG92ZXIgaWYgZGlzcGxheWVkCgoJCS8vIGlzIHRoZSBldmVudCBsaW1pdCBhIGNvbnN0YW50IGxldmVsIG51bWJlcj8KCQlpZiAoZXZlbnRMaW1pdCAmJiB0eXBlb2YgZXZlbnRMaW1pdCA9PT0gJ251bWJlcicpIHsKCQkJdGhpcy5kYXlHcmlkLmxpbWl0Um93cyhldmVudExpbWl0KTsgLy8gbGltaXQgdGhlIGxldmVscyBmaXJzdCBzbyB0aGUgaGVpZ2h0IGNhbiByZWRpc3RyaWJ1dGUgYWZ0ZXIKCQl9CgoJCS8vIGRpc3RyaWJ1dGUgdGhlIGhlaWdodCB0byB0aGUgcm93cwoJCS8vICh0b3RhbEhlaWdodCBpcyBhICJyZWNvbW1lbmRlZCIgdmFsdWUgaWYgaXNBdXRvKQoJCXNjcm9sbGVySGVpZ2h0ID0gdGhpcy5jb21wdXRlU2Nyb2xsZXJIZWlnaHQodG90YWxIZWlnaHQpOwoJCXRoaXMuc2V0R3JpZEhlaWdodChzY3JvbGxlckhlaWdodCwgaXNBdXRvKTsKCgkJLy8gaXMgdGhlIGV2ZW50IGxpbWl0IGR5bmFtaWNhbGx5IGNhbGN1bGF0ZWQ/CgkJaWYgKGV2ZW50TGltaXQgJiYgdHlwZW9mIGV2ZW50TGltaXQgIT09ICdudW1iZXInKSB7CgkJCXRoaXMuZGF5R3JpZC5saW1pdFJvd3MoZXZlbnRMaW1pdCk7IC8vIGxpbWl0IHRoZSBsZXZlbHMgYWZ0ZXIgdGhlIGdyaWQncyByb3cgaGVpZ2h0cyBoYXZlIGJlZW4gc2V0CgkJfQoKCQlpZiAoIWlzQXV0bykgeyAvLyBzaG91bGQgd2UgZm9yY2UgZGltZW5zaW9ucyBvZiB0aGUgc2Nyb2xsIGNvbnRhaW5lcj8KCgkJCXRoaXMuc2Nyb2xsZXIuc2V0SGVpZ2h0KHNjcm9sbGVySGVpZ2h0KTsKCQkJc2Nyb2xsYmFyV2lkdGhzID0gdGhpcy5zY3JvbGxlci5nZXRTY3JvbGxiYXJXaWR0aHMoKTsKCgkJCWlmIChzY3JvbGxiYXJXaWR0aHMubGVmdCB8fCBzY3JvbGxiYXJXaWR0aHMucmlnaHQpIHsgLy8gdXNpbmcgc2Nyb2xsYmFycz8KCgkJCQljb21wZW5zYXRlU2Nyb2xsKHRoaXMuaGVhZFJvd0VsLCBzY3JvbGxiYXJXaWR0aHMpOwoKCQkJCS8vIGRvaW5nIHRoZSBzY3JvbGxiYXIgY29tcGVuc2F0aW9uIG1pZ2h0IGhhdmUgY3JlYXRlZCB0ZXh0IG92ZXJmbG93IHdoaWNoIGNyZWF0ZWQgbW9yZSBoZWlnaHQuIHJlZG8KCQkJCXNjcm9sbGVySGVpZ2h0ID0gdGhpcy5jb21wdXRlU2Nyb2xsZXJIZWlnaHQodG90YWxIZWlnaHQpOwoJCQkJdGhpcy5zY3JvbGxlci5zZXRIZWlnaHQoc2Nyb2xsZXJIZWlnaHQpOwoJCQl9CgoJCQkvLyBndWFyYW50ZWVzIHRoZSBzYW1lIHNjcm9sbGJhciB3aWR0aHMKCQkJdGhpcy5zY3JvbGxlci5sb2NrT3ZlcmZsb3coc2Nyb2xsYmFyV2lkdGhzKTsKCQl9Cgl9LAoKCgkvLyBnaXZlbiBhIGRlc2lyZWQgdG90YWwgaGVpZ2h0IG9mIHRoZSB2aWV3LCByZXR1cm5zIHdoYXQgdGhlIGhlaWdodCBvZiB0aGUgc2Nyb2xsZXIgc2hvdWxkIGJlCgljb21wdXRlU2Nyb2xsZXJIZWlnaHQ6IGZ1bmN0aW9uKHRvdGFsSGVpZ2h0KSB7CgkJcmV0dXJuIHRvdGFsSGVpZ2h0IC0KCQkJc3VidHJhY3RJbm5lckVsSGVpZ2h0KHRoaXMuZWwsIHRoaXMuc2Nyb2xsZXIuZWwpOyAvLyBldmVyeXRoaW5nIHRoYXQncyBOT1QgdGhlIHNjcm9sbGVyCgl9LAoKCgkvLyBTZXRzIHRoZSBoZWlnaHQgb2YganVzdCB0aGUgRGF5R3JpZCBjb21wb25lbnQgaW4gdGhpcyB2aWV3CglzZXRHcmlkSGVpZ2h0OiBmdW5jdGlvbihoZWlnaHQsIGlzQXV0bykgewoJCWlmIChpc0F1dG8pIHsKCQkJdW5kaXN0cmlidXRlSGVpZ2h0KHRoaXMuZGF5R3JpZC5yb3dFbHMpOyAvLyBsZXQgdGhlIHJvd3MgYmUgdGhlaXIgbmF0dXJhbCBoZWlnaHQgd2l0aCBubyBleHBhbmRpbmcKCQl9CgkJZWxzZSB7CgkJCWRpc3RyaWJ1dGVIZWlnaHQodGhpcy5kYXlHcmlkLnJvd0VscywgaGVpZ2h0LCB0cnVlKTsgLy8gdHJ1ZSA9IGNvbXBlbnNhdGUgZm9yIGhlaWdodC1ob2dnaW5nIHJvd3MKCQl9Cgl9LAoKCgkvKiBTY3JvbGwKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCWNvbXB1dGVJbml0aWFsU2Nyb2xsOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4geyB0b3A6IDAgfTsKCX0sCgoKCXF1ZXJ5U2Nyb2xsOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4geyB0b3A6IHRoaXMuc2Nyb2xsZXIuZ2V0U2Nyb2xsVG9wKCkgfTsKCX0sCgoKCXNldFNjcm9sbDogZnVuY3Rpb24oc2Nyb2xsKSB7CgkJdGhpcy5zY3JvbGxlci5zZXRTY3JvbGxUb3Aoc2Nyb2xsLnRvcCk7Cgl9LAoKCgkvKiBIaXQgQXJlYXMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgkvLyBmb3J3YXJkIGFsbCBoaXQtcmVsYXRlZCBtZXRob2QgY2FsbHMgdG8gZGF5R3JpZAoKCgloaXRzTmVlZGVkOiBmdW5jdGlvbigpIHsKCQl0aGlzLmRheUdyaWQuaGl0c05lZWRlZCgpOwoJfSwKCgoJaGl0c05vdE5lZWRlZDogZnVuY3Rpb24oKSB7CgkJdGhpcy5kYXlHcmlkLmhpdHNOb3ROZWVkZWQoKTsKCX0sCgoKCXByZXBhcmVIaXRzOiBmdW5jdGlvbigpIHsKCQl0aGlzLmRheUdyaWQucHJlcGFyZUhpdHMoKTsKCX0sCgoKCXJlbGVhc2VIaXRzOiBmdW5jdGlvbigpIHsKCQl0aGlzLmRheUdyaWQucmVsZWFzZUhpdHMoKTsKCX0sCgoKCXF1ZXJ5SGl0OiBmdW5jdGlvbihsZWZ0LCB0b3ApIHsKCQlyZXR1cm4gdGhpcy5kYXlHcmlkLnF1ZXJ5SGl0KGxlZnQsIHRvcCk7Cgl9LAoKCglnZXRIaXRTcGFuOiBmdW5jdGlvbihoaXQpIHsKCQlyZXR1cm4gdGhpcy5kYXlHcmlkLmdldEhpdFNwYW4oaGl0KTsKCX0sCgoKCWdldEhpdEVsOiBmdW5jdGlvbihoaXQpIHsKCQlyZXR1cm4gdGhpcy5kYXlHcmlkLmdldEhpdEVsKGhpdCk7Cgl9LAoKCgkvKiBFdmVudHMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFJlbmRlcnMgdGhlIGdpdmVuIGV2ZW50cyBvbnRvIHRoZSB2aWV3IGFuZCBwb3B1bGF0ZXMgdGhlIHNlZ21lbnRzIGFycmF5CglyZW5kZXJFdmVudHM6IGZ1bmN0aW9uKGV2ZW50cykgewoJCXRoaXMuZGF5R3JpZC5yZW5kZXJFdmVudHMoZXZlbnRzKTsKCgkJdGhpcy51cGRhdGVIZWlnaHQoKTsgLy8gbXVzdCBjb21wZW5zYXRlIGZvciBldmVudHMgdGhhdCBvdmVyZmxvdyB0aGUgcm93Cgl9LAoKCgkvLyBSZXRyaWV2ZXMgYWxsIHNlZ21lbnQgb2JqZWN0cyB0aGF0IGFyZSByZW5kZXJlZCBpbiB0aGUgdmlldwoJZ2V0RXZlbnRTZWdzOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gdGhpcy5kYXlHcmlkLmdldEV2ZW50U2VncygpOwoJfSwKCgoJLy8gVW5yZW5kZXJzIGFsbCBldmVudCBlbGVtZW50cyBhbmQgY2xlYXJzIGludGVybmFsIHNlZ21lbnQgZGF0YQoJdW5yZW5kZXJFdmVudHM6IGZ1bmN0aW9uKCkgewoJCXRoaXMuZGF5R3JpZC51bnJlbmRlckV2ZW50cygpOwoKCQkvLyB3ZSBET04nVCBuZWVkIHRvIGNhbGwgdXBkYXRlSGVpZ2h0KCkgYmVjYXVzZQoJCS8vIGEgcmVuZGVyRXZlbnRzKCkgY2FsbCBhbHdheXMgaGFwcGVucyBhZnRlciB0aGlzLCB3aGljaCB3aWxsIGV2ZW50dWFsbHkgY2FsbCB1cGRhdGVIZWlnaHQoKQoJfSwKCgoJLyogRHJhZ2dpbmcgKGZvciBib3RoIGV2ZW50cyBhbmQgZXh0ZXJuYWwgZWxlbWVudHMpCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBBIHJldHVybmVkIHZhbHVlIG9mIGB0cnVlYCBzaWduYWxzIHRoYXQgYSBtb2NrICJoZWxwZXIiIGV2ZW50IGhhcyBiZWVuIHJlbmRlcmVkLgoJcmVuZGVyRHJhZzogZnVuY3Rpb24oZHJvcExvY2F0aW9uLCBzZWcpIHsKCQlyZXR1cm4gdGhpcy5kYXlHcmlkLnJlbmRlckRyYWcoZHJvcExvY2F0aW9uLCBzZWcpOwoJfSwKCgoJdW5yZW5kZXJEcmFnOiBmdW5jdGlvbigpIHsKCQl0aGlzLmRheUdyaWQudW5yZW5kZXJEcmFnKCk7Cgl9LAoKCgkvKiBTZWxlY3Rpb24KCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFJlbmRlcnMgYSB2aXN1YWwgaW5kaWNhdGlvbiBvZiBhIHNlbGVjdGlvbgoJcmVuZGVyU2VsZWN0aW9uOiBmdW5jdGlvbihzcGFuKSB7CgkJdGhpcy5kYXlHcmlkLnJlbmRlclNlbGVjdGlvbihzcGFuKTsKCX0sCgoKCS8vIFVucmVuZGVycyBhIHZpc3VhbCBpbmRpY2F0aW9ucyBvZiBhIHNlbGVjdGlvbgoJdW5yZW5kZXJTZWxlY3Rpb246IGZ1bmN0aW9uKCkgewoJCXRoaXMuZGF5R3JpZC51bnJlbmRlclNlbGVjdGlvbigpOwoJfQoKfSk7CgoKLy8gTWV0aG9kcyB0aGF0IHdpbGwgY3VzdG9taXplIHRoZSByZW5kZXJpbmcgYmVoYXZpb3Igb2YgdGhlIEJhc2ljVmlldydzIGRheUdyaWQKdmFyIGJhc2ljRGF5R3JpZE1ldGhvZHMgPSB7CgoKCS8vIEdlbmVyYXRlcyB0aGUgSFRNTCB0aGF0IHdpbGwgZ28gYmVmb3JlIHRoZSBkYXktb2Ygd2VlayBoZWFkZXIgY2VsbHMKCXJlbmRlckhlYWRJbnRyb0h0bWw6IGZ1bmN0aW9uKCkgewoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoKCQlpZiAodmlldy5jb2xXZWVrTnVtYmVyc1Zpc2libGUpIHsKCQkJcmV0dXJuICcnICsKCQkJCSc8dGggY2xhc3M9ImZjLXdlZWstbnVtYmVyICcgKyB2aWV3LndpZGdldEhlYWRlckNsYXNzICsgJyIgJyArIHZpZXcud2Vla051bWJlclN0eWxlQXR0cigpICsgJz4nICsKCQkJCQknPHNwYW4+JyArIC8vIG5lZWRlZCBmb3IgbWF0Y2hDZWxsV2lkdGhzCgkJCQkJCWh0bWxFc2NhcGUodmlldy5vcHQoJ3dlZWtOdW1iZXJUaXRsZScpKSArCgkJCQkJJzwvc3Bhbj4nICsKCQkJCSc8L3RoPic7CgkJfQoKCQlyZXR1cm4gJyc7Cgl9LAoKCgkvLyBHZW5lcmF0ZXMgdGhlIEhUTUwgdGhhdCB3aWxsIGdvIGJlZm9yZSBjb250ZW50LXNrZWxldG9uIGNlbGxzIHRoYXQgZGlzcGxheSB0aGUgZGF5L3dlZWsgbnVtYmVycwoJcmVuZGVyTnVtYmVySW50cm9IdG1sOiBmdW5jdGlvbihyb3cpIHsKCQl2YXIgdmlldyA9IHRoaXMudmlldzsKCQl2YXIgd2Vla1N0YXJ0ID0gdGhpcy5nZXRDZWxsRGF0ZShyb3csIDApOwoKCQlpZiAodmlldy5jb2xXZWVrTnVtYmVyc1Zpc2libGUpIHsKCQkJcmV0dXJuICcnICsKCQkJCSc8dGQgY2xhc3M9ImZjLXdlZWstbnVtYmVyIiAnICsgdmlldy53ZWVrTnVtYmVyU3R5bGVBdHRyKCkgKyAnPicgKwoJCQkJCXZpZXcuYnVpbGRHb3RvQW5jaG9ySHRtbCggLy8gYXNpZGUgZnJvbSBsaW5rLCBpbXBvcnRhbnQgZm9yIG1hdGNoQ2VsbFdpZHRocwoJCQkJCQl7IGRhdGU6IHdlZWtTdGFydCwgdHlwZTogJ3dlZWsnLCBmb3JjZU9mZjogdGhpcy5jb2xDbnQgPT09IDEgfSwKCQkJCQkJd2Vla1N0YXJ0LmZvcm1hdCgndycpIC8vIGlubmVyIEhUTUwKCQkJCQkpICsKCQkJCSc8L3RkPic7CgkJfQoKCQlyZXR1cm4gJyc7Cgl9LAoKCgkvLyBHZW5lcmF0ZXMgdGhlIEhUTUwgdGhhdCBnb2VzIGJlZm9yZSB0aGUgZGF5IGJnIGNlbGxzIGZvciBlYWNoIGRheS1yb3cKCXJlbmRlckJnSW50cm9IdG1sOiBmdW5jdGlvbigpIHsKCQl2YXIgdmlldyA9IHRoaXMudmlldzsKCgkJaWYgKHZpZXcuY29sV2Vla051bWJlcnNWaXNpYmxlKSB7CgkJCXJldHVybiAnPHRkIGNsYXNzPSJmYy13ZWVrLW51bWJlciAnICsgdmlldy53aWRnZXRDb250ZW50Q2xhc3MgKyAnIiAnICsKCQkJCXZpZXcud2Vla051bWJlclN0eWxlQXR0cigpICsgJz48L3RkPic7CgkJfQoKCQlyZXR1cm4gJyc7Cgl9LAoKCgkvLyBHZW5lcmF0ZXMgdGhlIEhUTUwgdGhhdCBnb2VzIGJlZm9yZSBldmVyeSBvdGhlciB0eXBlIG9mIHJvdyBnZW5lcmF0ZWQgYnkgRGF5R3JpZC4KCS8vIEFmZmVjdHMgaGVscGVyLXNrZWxldG9uIGFuZCBoaWdobGlnaHQtc2tlbGV0b24gcm93cy4KCXJlbmRlckludHJvSHRtbDogZnVuY3Rpb24oKSB7CgkJdmFyIHZpZXcgPSB0aGlzLnZpZXc7CgoJCWlmICh2aWV3LmNvbFdlZWtOdW1iZXJzVmlzaWJsZSkgewoJCQlyZXR1cm4gJzx0ZCBjbGFzcz0iZmMtd2Vlay1udW1iZXIiICcgKyB2aWV3LndlZWtOdW1iZXJTdHlsZUF0dHIoKSArICc+PC90ZD4nOwoJCX0KCgkJcmV0dXJuICcnOwoJfQoKfTsKCjs7CgovKiBBIG1vbnRoIHZpZXcgd2l0aCBkYXkgY2VsbHMgcnVubmluZyBpbiByb3dzIChvbmUtcGVyLXdlZWspIGFuZCBjb2x1bW5zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKdmFyIE1vbnRoVmlldyA9IEZDLk1vbnRoVmlldyA9IEJhc2ljVmlldy5leHRlbmQoewoKCgkvLyBDb21wdXRlcyB0aGUgZGF0ZSByYW5nZSB0aGF0IHdpbGwgYmUgcmVuZGVyZWQuCglidWlsZFJlbmRlclJhbmdlOiBmdW5jdGlvbigpIHsKCQl2YXIgcmVuZGVyUmFuZ2UgPSBCYXNpY1ZpZXcucHJvdG90eXBlLmJ1aWxkUmVuZGVyUmFuZ2UuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKCQl2YXIgcm93Q250OwoKCQkvLyBlbnN1cmUgNiB3ZWVrcwoJCWlmICh0aGlzLmlzRml4ZWRXZWVrcygpKSB7CgkJCXJvd0NudCA9IE1hdGguY2VpbCggLy8gY291bGQgYmUgcGFydGlhbCB3ZWVrcyBkdWUgdG8gaGlkZGVuRGF5cwoJCQkJcmVuZGVyUmFuZ2UuZW5kLmRpZmYocmVuZGVyUmFuZ2Uuc3RhcnQsICd3ZWVrcycsIHRydWUpIC8vIGRvbnRSb3VuZD10cnVlCgkJCSk7CgkJCXJlbmRlclJhbmdlLmVuZC5hZGQoNiAtIHJvd0NudCwgJ3dlZWtzJyk7CgkJfQoKCQlyZXR1cm4gcmVuZGVyUmFuZ2U7Cgl9LAoKCgkvLyBPdmVycmlkZXMgdGhlIGRlZmF1bHQgQmFzaWNWaWV3IGJlaGF2aW9yIHRvIGhhdmUgc3BlY2lhbCBtdWx0aS13ZWVrIGF1dG8taGVpZ2h0IGxvZ2ljCglzZXRHcmlkSGVpZ2h0OiBmdW5jdGlvbihoZWlnaHQsIGlzQXV0bykgewoKCQkvLyBpZiBhdXRvLCBtYWtlIHRoZSBoZWlnaHQgb2YgZWFjaCByb3cgdGhlIGhlaWdodCB0aGF0IGl0IHdvdWxkIGJlIGlmIHRoZXJlIHdlcmUgNiB3ZWVrcwoJCWlmIChpc0F1dG8pIHsKCQkJaGVpZ2h0ICo9IHRoaXMucm93Q250IC8gNjsKCQl9CgoJCWRpc3RyaWJ1dGVIZWlnaHQodGhpcy5kYXlHcmlkLnJvd0VscywgaGVpZ2h0LCAhaXNBdXRvKTsgLy8gaWYgYXV0bywgZG9uJ3QgY29tcGVuc2F0ZSBmb3IgaGVpZ2h0LWhvZ2dpbmcgcm93cwoJfSwKCgoJaXNGaXhlZFdlZWtzOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gdGhpcy5vcHQoJ2ZpeGVkV2Vla0NvdW50Jyk7Cgl9Cgp9KTsKCjs7CgpmY1ZpZXdzLmJhc2ljID0gewoJJ2NsYXNzJzogQmFzaWNWaWV3Cn07CgpmY1ZpZXdzLmJhc2ljRGF5ID0gewoJdHlwZTogJ2Jhc2ljJywKCWR1cmF0aW9uOiB7IGRheXM6IDEgfQp9OwoKZmNWaWV3cy5iYXNpY1dlZWsgPSB7Cgl0eXBlOiAnYmFzaWMnLAoJZHVyYXRpb246IHsgd2Vla3M6IDEgfQp9OwoKZmNWaWV3cy5tb250aCA9IHsKCSdjbGFzcyc6IE1vbnRoVmlldywKCWR1cmF0aW9uOiB7IG1vbnRoczogMSB9LCAvLyBpbXBvcnRhbnQgZm9yIHByZXYvbmV4dAoJZGVmYXVsdHM6IHsKCQlmaXhlZFdlZWtDb3VudDogdHJ1ZQoJfQp9Owo7OwoKLyogQW4gYWJzdHJhY3QgY2xhc3MgZm9yIGFsbCBhZ2VuZGEtcmVsYXRlZCB2aWV3cy4gRGlzcGxheXMgb25lIG1vcmUgY29sdW1ucyB3aXRoIHRpbWUgc2xvdHMgcnVubmluZyB2ZXJ0aWNhbGx5LgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLy8gSXMgYSBtYW5hZ2VyIGZvciB0aGUgVGltZUdyaWQgc3ViY29tcG9uZW50IGFuZCBwb3NzaWJseSB0aGUgRGF5R3JpZCBzdWJjb21wb25lbnQgKGlmIGFsbERheVNsb3QgaXMgb24pLgovLyBSZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgd2lkdGgvaGVpZ2h0LgoKdmFyIEFnZW5kYVZpZXcgPSBGQy5BZ2VuZGFWaWV3ID0gVmlldy5leHRlbmQoewoKCXNjcm9sbGVyOiBudWxsLAoKCXRpbWVHcmlkQ2xhc3M6IFRpbWVHcmlkLCAvLyBjbGFzcyB1c2VkIHRvIGluc3RhbnRpYXRlIHRoZSB0aW1lR3JpZC4gc3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUKCXRpbWVHcmlkOiBudWxsLCAvLyB0aGUgbWFpbiB0aW1lLWdyaWQgc3ViY29tcG9uZW50IG9mIHRoaXMgdmlldwoKCWRheUdyaWRDbGFzczogRGF5R3JpZCwgLy8gY2xhc3MgdXNlZCB0byBpbnN0YW50aWF0ZSB0aGUgZGF5R3JpZC4gc3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUKCWRheUdyaWQ6IG51bGwsIC8vIHRoZSAiYWxsLWRheSIgc3ViY29tcG9uZW50LiBpZiBhbGwtZGF5IGlzIHR1cm5lZCBvZmYsIHRoaXMgd2lsbCBiZSBudWxsCgoJYXhpc1dpZHRoOiBudWxsLCAvLyB0aGUgd2lkdGggb2YgdGhlIHRpbWUgYXhpcyBydW5uaW5nIGRvd24gdGhlIHNpZGUKCgloZWFkQ29udGFpbmVyRWw6IG51bGwsIC8vIGRpdiB0aGF0IGhvbGQncyB0aGUgdGltZUdyaWQncyByZW5kZXJlZCBkYXRlIGhlYWRlcgoJbm9TY3JvbGxSb3dFbHM6IG51bGwsIC8vIHNldCBvZiBmYWtlIHJvdyBlbGVtZW50cyB0aGF0IG11c3QgY29tcGVuc2F0ZSB3aGVuIHNjcm9sbGVyIGhhcyBzY3JvbGxiYXJzCgoJLy8gd2hlbiB0aGUgdGltZS1ncmlkIGlzbid0IHRhbGwgZW5vdWdoIHRvIG9jY3VweSB0aGUgZ2l2ZW4gaGVpZ2h0LCB3ZSByZW5kZXIgYW4gPGhyPiB1bmRlcm5lYXRoCglib3R0b21SdWxlRWw6IG51bGwsCgoJLy8gaW5kaWNhdGVzIHRoYXQgbWluVGltZS9tYXhUaW1lIGFmZmVjdHMgcmVuZGVyaW5nCgl1c2VzTWluTWF4VGltZTogdHJ1ZSwKCgoJaW5pdGlhbGl6ZTogZnVuY3Rpb24oKSB7CgkJdGhpcy50aW1lR3JpZCA9IHRoaXMuaW5zdGFudGlhdGVUaW1lR3JpZCgpOwoKCQlpZiAodGhpcy5vcHQoJ2FsbERheVNsb3QnKSkgeyAvLyBzaG91bGQgd2UgZGlzcGxheSB0aGUgImFsbC1kYXkiIGFyZWE/CgkJCXRoaXMuZGF5R3JpZCA9IHRoaXMuaW5zdGFudGlhdGVEYXlHcmlkKCk7IC8vIHRoZSBhbGwtZGF5IHN1YmNvbXBvbmVudCBvZiB0aGlzIHZpZXcKCQl9CgoJCXRoaXMuc2Nyb2xsZXIgPSBuZXcgU2Nyb2xsZXIoewoJCQlvdmVyZmxvd1g6ICdoaWRkZW4nLAoJCQlvdmVyZmxvd1k6ICdhdXRvJwoJCX0pOwoJfSwKCgoJLy8gSW5zdGFudGlhdGVzIHRoZSBUaW1lR3JpZCBvYmplY3QgdGhpcyB2aWV3IG5lZWRzLiBEcmF3cyBmcm9tIHRoaXMudGltZUdyaWRDbGFzcwoJaW5zdGFudGlhdGVUaW1lR3JpZDogZnVuY3Rpb24oKSB7CgkJdmFyIHN1YmNsYXNzID0gdGhpcy50aW1lR3JpZENsYXNzLmV4dGVuZChhZ2VuZGFUaW1lR3JpZE1ldGhvZHMpOwoKCQlyZXR1cm4gbmV3IHN1YmNsYXNzKHRoaXMpOwoJfSwKCgoJLy8gSW5zdGFudGlhdGVzIHRoZSBEYXlHcmlkIG9iamVjdCB0aGlzIHZpZXcgbWlnaHQgbmVlZC4gRHJhd3MgZnJvbSB0aGlzLmRheUdyaWRDbGFzcwoJaW5zdGFudGlhdGVEYXlHcmlkOiBmdW5jdGlvbigpIHsKCQl2YXIgc3ViY2xhc3MgPSB0aGlzLmRheUdyaWRDbGFzcy5leHRlbmQoYWdlbmRhRGF5R3JpZE1ldGhvZHMpOwoKCQlyZXR1cm4gbmV3IHN1YmNsYXNzKHRoaXMpOwoJfSwKCgoJLyogUmVuZGVyaW5nCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBSZW5kZXJzIHRoZSB2aWV3IGludG8gYHRoaXMuZWxgLCB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIGFzc2lnbmVkCglyZW5kZXJEYXRlczogZnVuY3Rpb24oKSB7CgoJCXRoaXMudGltZUdyaWQuc2V0UmFuZ2UodGhpcy5yZW5kZXJSYW5nZSk7CgoJCWlmICh0aGlzLmRheUdyaWQpIHsKCQkJdGhpcy5kYXlHcmlkLnNldFJhbmdlKHRoaXMucmVuZGVyUmFuZ2UpOwoJCX0KCgkJdGhpcy5lbC5hZGRDbGFzcygnZmMtYWdlbmRhLXZpZXcnKS5odG1sKHRoaXMucmVuZGVyU2tlbGV0b25IdG1sKCkpOwoJCXRoaXMucmVuZGVySGVhZCgpOwoKCQl0aGlzLnNjcm9sbGVyLnJlbmRlcigpOwoJCXZhciB0aW1lR3JpZFdyYXBFbCA9IHRoaXMuc2Nyb2xsZXIuZWwuYWRkQ2xhc3MoJ2ZjLXRpbWUtZ3JpZC1jb250YWluZXInKTsKCQl2YXIgdGltZUdyaWRFbCA9ICQoJzxkaXYgY2xhc3M9ImZjLXRpbWUtZ3JpZCIgLz4nKS5hcHBlbmRUbyh0aW1lR3JpZFdyYXBFbCk7CgkJdGhpcy5lbC5maW5kKCcuZmMtYm9keSA+IHRyID4gdGQnKS5hcHBlbmQodGltZUdyaWRXcmFwRWwpOwoKCQl0aGlzLnRpbWVHcmlkLnNldEVsZW1lbnQodGltZUdyaWRFbCk7CgkJdGhpcy50aW1lR3JpZC5yZW5kZXJEYXRlcygpOwoKCQkvLyB0aGUgPGhyPiB0aGF0IHNvbWV0aW1lcyBkaXNwbGF5cyB1bmRlciB0aGUgdGltZS1ncmlkCgkJdGhpcy5ib3R0b21SdWxlRWwgPSAkKCc8aHIgY2xhc3M9ImZjLWRpdmlkZXIgJyArIHRoaXMud2lkZ2V0SGVhZGVyQ2xhc3MgKyAnIi8+JykKCQkJLmFwcGVuZFRvKHRoaXMudGltZUdyaWQuZWwpOyAvLyBpbmplY3QgaXQgaW50byB0aGUgdGltZS1ncmlkCgoJCWlmICh0aGlzLmRheUdyaWQpIHsKCQkJdGhpcy5kYXlHcmlkLnNldEVsZW1lbnQodGhpcy5lbC5maW5kKCcuZmMtZGF5LWdyaWQnKSk7CgkJCXRoaXMuZGF5R3JpZC5yZW5kZXJEYXRlcygpOwoKCQkJLy8gaGF2ZSB0aGUgZGF5LWdyaWQgZXh0ZW5kIGl0J3MgY29vcmRpbmF0ZSBhcmVhIG92ZXIgdGhlIDxocj4gZGl2aWRpbmcgdGhlIHR3byBncmlkcwoJCQl0aGlzLmRheUdyaWQuYm90dG9tQ29vcmRQYWRkaW5nID0gdGhpcy5kYXlHcmlkLmVsLm5leHQoJ2hyJykub3V0ZXJIZWlnaHQoKTsKCQl9CgoJCXRoaXMubm9TY3JvbGxSb3dFbHMgPSB0aGlzLmVsLmZpbmQoJy5mYy1yb3c6bm90KC5mYy1zY3JvbGxlciAqKScpOyAvLyBmYWtlIHJvd3Mgbm90IHdpdGhpbiB0aGUgc2Nyb2xsZXIKCX0sCgoKCS8vIHJlbmRlciB0aGUgZGF5LW9mLXdlZWsgaGVhZGVycwoJcmVuZGVySGVhZDogZnVuY3Rpb24oKSB7CgkJdGhpcy5oZWFkQ29udGFpbmVyRWwgPQoJCQl0aGlzLmVsLmZpbmQoJy5mYy1oZWFkLWNvbnRhaW5lcicpCgkJCQkuaHRtbCh0aGlzLnRpbWVHcmlkLnJlbmRlckhlYWRIdG1sKCkpOwoJfSwKCgoJLy8gVW5yZW5kZXJzIHRoZSBjb250ZW50IG9mIHRoZSB2aWV3LiBTaW5jZSB3ZSBoYXZlbid0IHNlcGFyYXRlZCBza2VsZXRvbiByZW5kZXJpbmcgZnJvbSBkYXRlIHJlbmRlcmluZywKCS8vIGFsd2F5cyBjb21wbGV0ZWx5IGtpbGwgZWFjaCBncmlkJ3MgcmVuZGVyaW5nLgoJdW5yZW5kZXJEYXRlczogZnVuY3Rpb24oKSB7CgkJdGhpcy50aW1lR3JpZC51bnJlbmRlckRhdGVzKCk7CgkJdGhpcy50aW1lR3JpZC5yZW1vdmVFbGVtZW50KCk7CgoJCWlmICh0aGlzLmRheUdyaWQpIHsKCQkJdGhpcy5kYXlHcmlkLnVucmVuZGVyRGF0ZXMoKTsKCQkJdGhpcy5kYXlHcmlkLnJlbW92ZUVsZW1lbnQoKTsKCQl9CgoJCXRoaXMuc2Nyb2xsZXIuZGVzdHJveSgpOwoJfSwKCgoJLy8gQnVpbGRzIHRoZSBIVE1MIHNrZWxldG9uIGZvciB0aGUgdmlldy4KCS8vIFRoZSBkYXktZ3JpZCBhbmQgdGltZS1ncmlkIGNvbXBvbmVudHMgd2lsbCByZW5kZXIgaW5zaWRlIGNvbnRhaW5lcnMgZGVmaW5lZCBieSB0aGlzIEhUTUwuCglyZW5kZXJTa2VsZXRvbkh0bWw6IGZ1bmN0aW9uKCkgewoJCXJldHVybiAnJyArCgkJCSc8dGFibGU+JyArCgkJCQknPHRoZWFkIGNsYXNzPSJmYy1oZWFkIj4nICsKCQkJCQknPHRyPicgKwoJCQkJCQknPHRkIGNsYXNzPSJmYy1oZWFkLWNvbnRhaW5lciAnICsgdGhpcy53aWRnZXRIZWFkZXJDbGFzcyArICciPjwvdGQ+JyArCgkJCQkJJzwvdHI+JyArCgkJCQknPC90aGVhZD4nICsKCQkJCSc8dGJvZHkgY2xhc3M9ImZjLWJvZHkiPicgKwoJCQkJCSc8dHI+JyArCgkJCQkJCSc8dGQgY2xhc3M9IicgKyB0aGlzLndpZGdldENvbnRlbnRDbGFzcyArICciPicgKwoJCQkJCQkJKHRoaXMuZGF5R3JpZCA/CgkJCQkJCQkJJzxkaXYgY2xhc3M9ImZjLWRheS1ncmlkIi8+JyArCgkJCQkJCQkJJzxociBjbGFzcz0iZmMtZGl2aWRlciAnICsgdGhpcy53aWRnZXRIZWFkZXJDbGFzcyArICciLz4nIDoKCQkJCQkJCQknJwoJCQkJCQkJCSkgKwoJCQkJCQknPC90ZD4nICsKCQkJCQknPC90cj4nICsKCQkJCSc8L3Rib2R5PicgKwoJCQknPC90YWJsZT4nOwoJfSwKCgoJLy8gR2VuZXJhdGVzIGFuIEhUTUwgYXR0cmlidXRlIHN0cmluZyBmb3Igc2V0dGluZyB0aGUgd2lkdGggb2YgdGhlIGF4aXMsIGlmIGl0IGlzIGtub3duCglheGlzU3R5bGVBdHRyOiBmdW5jdGlvbigpIHsKCQlpZiAodGhpcy5heGlzV2lkdGggIT09IG51bGwpIHsKCQkJIHJldHVybiAnc3R5bGU9IndpZHRoOicgKyB0aGlzLmF4aXNXaWR0aCArICdweCInOwoJCX0KCQlyZXR1cm4gJyc7Cgl9LAoKCgkvKiBCdXNpbmVzcyBIb3VycwoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJcmVuZGVyQnVzaW5lc3NIb3VyczogZnVuY3Rpb24oKSB7CgkJdGhpcy50aW1lR3JpZC5yZW5kZXJCdXNpbmVzc0hvdXJzKCk7CgoJCWlmICh0aGlzLmRheUdyaWQpIHsKCQkJdGhpcy5kYXlHcmlkLnJlbmRlckJ1c2luZXNzSG91cnMoKTsKCQl9Cgl9LAoKCgl1bnJlbmRlckJ1c2luZXNzSG91cnM6IGZ1bmN0aW9uKCkgewoJCXRoaXMudGltZUdyaWQudW5yZW5kZXJCdXNpbmVzc0hvdXJzKCk7CgoJCWlmICh0aGlzLmRheUdyaWQpIHsKCQkJdGhpcy5kYXlHcmlkLnVucmVuZGVyQnVzaW5lc3NIb3VycygpOwoJCX0KCX0sCgoKCS8qIE5vdyBJbmRpY2F0b3IKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCWdldE5vd0luZGljYXRvclVuaXQ6IGZ1bmN0aW9uKCkgewoJCXJldHVybiB0aGlzLnRpbWVHcmlkLmdldE5vd0luZGljYXRvclVuaXQoKTsKCX0sCgoKCXJlbmRlck5vd0luZGljYXRvcjogZnVuY3Rpb24oZGF0ZSkgewoJCXRoaXMudGltZUdyaWQucmVuZGVyTm93SW5kaWNhdG9yKGRhdGUpOwoJfSwKCgoJdW5yZW5kZXJOb3dJbmRpY2F0b3I6IGZ1bmN0aW9uKCkgewoJCXRoaXMudGltZUdyaWQudW5yZW5kZXJOb3dJbmRpY2F0b3IoKTsKCX0sCgoKCS8qIERpbWVuc2lvbnMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCXVwZGF0ZVNpemU6IGZ1bmN0aW9uKGlzUmVzaXplKSB7CgkJdGhpcy50aW1lR3JpZC51cGRhdGVTaXplKGlzUmVzaXplKTsKCgkJVmlldy5wcm90b3R5cGUudXBkYXRlU2l6ZS5jYWxsKHRoaXMsIGlzUmVzaXplKTsgLy8gY2FsbCB0aGUgc3VwZXItbWV0aG9kCgl9LAoKCgkvLyBSZWZyZXNoZXMgdGhlIGhvcml6b250YWwgZGltZW5zaW9ucyBvZiB0aGUgdmlldwoJdXBkYXRlV2lkdGg6IGZ1bmN0aW9uKCkgewoJCS8vIG1ha2UgYWxsIGF4aXMgY2VsbHMgbGluZSB1cCwgYW5kIHJlY29yZCB0aGUgd2lkdGggc28gbmV3bHkgY3JlYXRlZCBheGlzIGNlbGxzIHdpbGwgaGF2ZSBpdAoJCXRoaXMuYXhpc1dpZHRoID0gbWF0Y2hDZWxsV2lkdGhzKHRoaXMuZWwuZmluZCgnLmZjLWF4aXMnKSk7Cgl9LAoKCgkvLyBBZGp1c3RzIHRoZSB2ZXJ0aWNhbCBkaW1lbnNpb25zIG9mIHRoZSB2aWV3IHRvIHRoZSBzcGVjaWZpZWQgdmFsdWVzCglzZXRIZWlnaHQ6IGZ1bmN0aW9uKHRvdGFsSGVpZ2h0LCBpc0F1dG8pIHsKCQl2YXIgZXZlbnRMaW1pdDsKCQl2YXIgc2Nyb2xsZXJIZWlnaHQ7CgkJdmFyIHNjcm9sbGJhcldpZHRoczsKCgkJLy8gcmVzZXQgYWxsIGRpbWVuc2lvbnMgYmFjayB0byB0aGUgb3JpZ2luYWwgc3RhdGUKCQl0aGlzLmJvdHRvbVJ1bGVFbC5oaWRlKCk7IC8vIC5zaG93KCkgd2lsbCBiZSBjYWxsZWQgbGF0ZXIgaWYgdGhpcyA8aHI+IGlzIG5lY2Vzc2FyeQoJCXRoaXMuc2Nyb2xsZXIuY2xlYXIoKTsgLy8gc2V0cyBoZWlnaHQgdG8gJ2F1dG8nIGFuZCBjbGVhcnMgb3ZlcmZsb3cKCQl1bmNvbXBlbnNhdGVTY3JvbGwodGhpcy5ub1Njcm9sbFJvd0Vscyk7CgoJCS8vIGxpbWl0IG51bWJlciBvZiBldmVudHMgaW4gdGhlIGFsbC1kYXkgYXJlYQoJCWlmICh0aGlzLmRheUdyaWQpIHsKCQkJdGhpcy5kYXlHcmlkLnJlbW92ZVNlZ1BvcG92ZXIoKTsgLy8ga2lsbCB0aGUgIm1vcmUiIHBvcG92ZXIgaWYgZGlzcGxheWVkCgoJCQlldmVudExpbWl0ID0gdGhpcy5vcHQoJ2V2ZW50TGltaXQnKTsKCQkJaWYgKGV2ZW50TGltaXQgJiYgdHlwZW9mIGV2ZW50TGltaXQgIT09ICdudW1iZXInKSB7CgkJCQlldmVudExpbWl0ID0gQUdFTkRBX0FMTF9EQVlfRVZFTlRfTElNSVQ7IC8vIG1ha2Ugc3VyZSAiYXV0byIgZ29lcyB0byBhIHJlYWwgbnVtYmVyCgkJCX0KCQkJaWYgKGV2ZW50TGltaXQpIHsKCQkJCXRoaXMuZGF5R3JpZC5saW1pdFJvd3MoZXZlbnRMaW1pdCk7CgkJCX0KCQl9CgoJCWlmICghaXNBdXRvKSB7IC8vIHNob3VsZCB3ZSBmb3JjZSBkaW1lbnNpb25zIG9mIHRoZSBzY3JvbGwgY29udGFpbmVyPwoKCQkJc2Nyb2xsZXJIZWlnaHQgPSB0aGlzLmNvbXB1dGVTY3JvbGxlckhlaWdodCh0b3RhbEhlaWdodCk7CgkJCXRoaXMuc2Nyb2xsZXIuc2V0SGVpZ2h0KHNjcm9sbGVySGVpZ2h0KTsKCQkJc2Nyb2xsYmFyV2lkdGhzID0gdGhpcy5zY3JvbGxlci5nZXRTY3JvbGxiYXJXaWR0aHMoKTsKCgkJCWlmIChzY3JvbGxiYXJXaWR0aHMubGVmdCB8fCBzY3JvbGxiYXJXaWR0aHMucmlnaHQpIHsgLy8gdXNpbmcgc2Nyb2xsYmFycz8KCgkJCQkvLyBtYWtlIHRoZSBhbGwtZGF5IGFuZCBoZWFkZXIgcm93cyBsaW5lcyB1cAoJCQkJY29tcGVuc2F0ZVNjcm9sbCh0aGlzLm5vU2Nyb2xsUm93RWxzLCBzY3JvbGxiYXJXaWR0aHMpOwoKCQkJCS8vIHRoZSBzY3JvbGxiYXIgY29tcGVuc2F0aW9uIG1pZ2h0IGhhdmUgY2hhbmdlZCB0ZXh0IGZsb3csIHdoaWNoIG1pZ2h0IGFmZmVjdCBoZWlnaHQsIHNvIHJlY2FsY3VsYXRlCgkJCQkvLyBhbmQgcmVhcHBseSB0aGUgZGVzaXJlZCBoZWlnaHQgdG8gdGhlIHNjcm9sbGVyLgoJCQkJc2Nyb2xsZXJIZWlnaHQgPSB0aGlzLmNvbXB1dGVTY3JvbGxlckhlaWdodCh0b3RhbEhlaWdodCk7CgkJCQl0aGlzLnNjcm9sbGVyLnNldEhlaWdodChzY3JvbGxlckhlaWdodCk7CgkJCX0KCgkJCS8vIGd1YXJhbnRlZXMgdGhlIHNhbWUgc2Nyb2xsYmFyIHdpZHRocwoJCQl0aGlzLnNjcm9sbGVyLmxvY2tPdmVyZmxvdyhzY3JvbGxiYXJXaWR0aHMpOwoKCQkJLy8gaWYgdGhlcmUncyBhbnkgc3BhY2UgYmVsb3cgdGhlIHNsYXRzLCBzaG93IHRoZSBob3Jpem9udGFsIHJ1bGUuCgkJCS8vIHRoaXMgd29uJ3QgY2F1c2UgYW55IG5ldyBvdmVyZmxvdywgYmVjYXVzZSBsb2NrT3ZlcmZsb3cgYWxyZWFkeSBjYWxsZWQuCgkJCWlmICh0aGlzLnRpbWVHcmlkLmdldFRvdGFsU2xhdEhlaWdodCgpIDwgc2Nyb2xsZXJIZWlnaHQpIHsKCQkJCXRoaXMuYm90dG9tUnVsZUVsLnNob3coKTsKCQkJfQoJCX0KCX0sCgoKCS8vIGdpdmVuIGEgZGVzaXJlZCB0b3RhbCBoZWlnaHQgb2YgdGhlIHZpZXcsIHJldHVybnMgd2hhdCB0aGUgaGVpZ2h0IG9mIHRoZSBzY3JvbGxlciBzaG91bGQgYmUKCWNvbXB1dGVTY3JvbGxlckhlaWdodDogZnVuY3Rpb24odG90YWxIZWlnaHQpIHsKCQlyZXR1cm4gdG90YWxIZWlnaHQgLQoJCQlzdWJ0cmFjdElubmVyRWxIZWlnaHQodGhpcy5lbCwgdGhpcy5zY3JvbGxlci5lbCk7IC8vIGV2ZXJ5dGhpbmcgdGhhdCdzIE5PVCB0aGUgc2Nyb2xsZXIKCX0sCgoKCS8qIFNjcm9sbAoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gQ29tcHV0ZXMgdGhlIGluaXRpYWwgcHJlLWNvbmZpZ3VyZWQgc2Nyb2xsIHN0YXRlIHByaW9yIHRvIGFsbG93aW5nIHRoZSB1c2VyIHRvIGNoYW5nZSBpdAoJY29tcHV0ZUluaXRpYWxTY3JvbGw6IGZ1bmN0aW9uKCkgewoJCXZhciBzY3JvbGxUaW1lID0gbW9tZW50LmR1cmF0aW9uKHRoaXMub3B0KCdzY3JvbGxUaW1lJykpOwoJCXZhciB0b3AgPSB0aGlzLnRpbWVHcmlkLmNvbXB1dGVUaW1lVG9wKHNjcm9sbFRpbWUpOwoKCQkvLyB6b29tIGNhbiBnaXZlIHdlaXJkIGZsb2F0aW5nLXBvaW50IHZhbHVlcy4gcmF0aGVyIHNjcm9sbCBhIGxpdHRsZSBiaXQgZnVydGhlcgoJCXRvcCA9IE1hdGguY2VpbCh0b3ApOwoKCQlpZiAodG9wKSB7CgkJCXRvcCsrOyAvLyB0byBvdmVyY29tZSB0b3AgYm9yZGVyIHRoYXQgc2xvdHMgYmV5b25kIHRoZSBmaXJzdCBoYXZlLiBsb29rcyBiZXR0ZXIKCQl9CgoJCXJldHVybiB7IHRvcDogdG9wIH07Cgl9LAoKCglxdWVyeVNjcm9sbDogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHsgdG9wOiB0aGlzLnNjcm9sbGVyLmdldFNjcm9sbFRvcCgpIH07Cgl9LAoKCglzZXRTY3JvbGw6IGZ1bmN0aW9uKHNjcm9sbCkgewoJCXRoaXMuc2Nyb2xsZXIuc2V0U2Nyb2xsVG9wKHNjcm9sbC50b3ApOwoJfSwKCgoJLyogSGl0IEFyZWFzCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJLy8gZm9yd2FyZCBhbGwgaGl0LXJlbGF0ZWQgbWV0aG9kIGNhbGxzIHRvIHRoZSBncmlkcyAoZGF5R3JpZCBtaWdodCBub3QgYmUgZGVmaW5lZCkKCgoJaGl0c05lZWRlZDogZnVuY3Rpb24oKSB7CgkJdGhpcy50aW1lR3JpZC5oaXRzTmVlZGVkKCk7CgkJaWYgKHRoaXMuZGF5R3JpZCkgewoJCQl0aGlzLmRheUdyaWQuaGl0c05lZWRlZCgpOwoJCX0KCX0sCgoKCWhpdHNOb3ROZWVkZWQ6IGZ1bmN0aW9uKCkgewoJCXRoaXMudGltZUdyaWQuaGl0c05vdE5lZWRlZCgpOwoJCWlmICh0aGlzLmRheUdyaWQpIHsKCQkJdGhpcy5kYXlHcmlkLmhpdHNOb3ROZWVkZWQoKTsKCQl9Cgl9LAoKCglwcmVwYXJlSGl0czogZnVuY3Rpb24oKSB7CgkJdGhpcy50aW1lR3JpZC5wcmVwYXJlSGl0cygpOwoJCWlmICh0aGlzLmRheUdyaWQpIHsKCQkJdGhpcy5kYXlHcmlkLnByZXBhcmVIaXRzKCk7CgkJfQoJfSwKCgoJcmVsZWFzZUhpdHM6IGZ1bmN0aW9uKCkgewoJCXRoaXMudGltZUdyaWQucmVsZWFzZUhpdHMoKTsKCQlpZiAodGhpcy5kYXlHcmlkKSB7CgkJCXRoaXMuZGF5R3JpZC5yZWxlYXNlSGl0cygpOwoJCX0KCX0sCgoKCXF1ZXJ5SGl0OiBmdW5jdGlvbihsZWZ0LCB0b3ApIHsKCQl2YXIgaGl0ID0gdGhpcy50aW1lR3JpZC5xdWVyeUhpdChsZWZ0LCB0b3ApOwoKCQlpZiAoIWhpdCAmJiB0aGlzLmRheUdyaWQpIHsKCQkJaGl0ID0gdGhpcy5kYXlHcmlkLnF1ZXJ5SGl0KGxlZnQsIHRvcCk7CgkJfQoKCQlyZXR1cm4gaGl0OwoJfSwKCgoJZ2V0SGl0U3BhbjogZnVuY3Rpb24oaGl0KSB7CgkJLy8gVE9ETzogaGl0LmNvbXBvbmVudCBpcyBzZXQgYXMgYSBoYWNrIHRvIGlkZW50aWZ5IHdoZXJlIHRoZSBoaXQgY2FtZSBmcm9tCgkJcmV0dXJuIGhpdC5jb21wb25lbnQuZ2V0SGl0U3BhbihoaXQpOwoJfSwKCgoJZ2V0SGl0RWw6IGZ1bmN0aW9uKGhpdCkgewoJCS8vIFRPRE86IGhpdC5jb21wb25lbnQgaXMgc2V0IGFzIGEgaGFjayB0byBpZGVudGlmeSB3aGVyZSB0aGUgaGl0IGNhbWUgZnJvbQoJCXJldHVybiBoaXQuY29tcG9uZW50LmdldEhpdEVsKGhpdCk7Cgl9LAoKCgkvKiBFdmVudHMKCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoKCS8vIFJlbmRlcnMgZXZlbnRzIG9udG8gdGhlIHZpZXcgYW5kIHBvcHVsYXRlcyB0aGUgVmlldydzIHNlZ21lbnQgYXJyYXkKCXJlbmRlckV2ZW50czogZnVuY3Rpb24oZXZlbnRzKSB7CgkJdmFyIGRheUV2ZW50cyA9IFtdOwoJCXZhciB0aW1lZEV2ZW50cyA9IFtdOwoJCXZhciBkYXlTZWdzID0gW107CgkJdmFyIHRpbWVkU2VnczsKCQl2YXIgaTsKCgkJLy8gc2VwYXJhdGUgdGhlIGV2ZW50cyBpbnRvIGFsbC1kYXkgYW5kIHRpbWVkCgkJZm9yIChpID0gMDsgaSA8IGV2ZW50cy5sZW5ndGg7IGkrKykgewoJCQlpZiAoZXZlbnRzW2ldLmFsbERheSkgewoJCQkJZGF5RXZlbnRzLnB1c2goZXZlbnRzW2ldKTsKCQkJfQoJCQllbHNlIHsKCQkJCXRpbWVkRXZlbnRzLnB1c2goZXZlbnRzW2ldKTsKCQkJfQoJCX0KCgkJLy8gcmVuZGVyIHRoZSBldmVudHMgaW4gdGhlIHN1YmNvbXBvbmVudHMKCQl0aW1lZFNlZ3MgPSB0aGlzLnRpbWVHcmlkLnJlbmRlckV2ZW50cyh0aW1lZEV2ZW50cyk7CgkJaWYgKHRoaXMuZGF5R3JpZCkgewoJCQlkYXlTZWdzID0gdGhpcy5kYXlHcmlkLnJlbmRlckV2ZW50cyhkYXlFdmVudHMpOwoJCX0KCgkJLy8gdGhlIGFsbC1kYXkgYXJlYSBpcyBmbGV4aWJsZSBhbmQgbWlnaHQgaGF2ZSBhIGxvdCBvZiBldmVudHMsIHNvIHNoaWZ0IHRoZSBoZWlnaHQKCQl0aGlzLnVwZGF0ZUhlaWdodCgpOwoJfSwKCgoJLy8gUmV0cmlldmVzIGFsbCBzZWdtZW50IG9iamVjdHMgdGhhdCBhcmUgcmVuZGVyZWQgaW4gdGhlIHZpZXcKCWdldEV2ZW50U2VnczogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHRoaXMudGltZUdyaWQuZ2V0RXZlbnRTZWdzKCkuY29uY2F0KAoJCQl0aGlzLmRheUdyaWQgPyB0aGlzLmRheUdyaWQuZ2V0RXZlbnRTZWdzKCkgOiBbXQoJCSk7Cgl9LAoKCgkvLyBVbnJlbmRlcnMgYWxsIGV2ZW50IGVsZW1lbnRzIGFuZCBjbGVhcnMgaW50ZXJuYWwgc2VnbWVudCBkYXRhCgl1bnJlbmRlckV2ZW50czogZnVuY3Rpb24oKSB7CgoJCS8vIHVucmVuZGVyIHRoZSBldmVudHMgaW4gdGhlIHN1YmNvbXBvbmVudHMKCQl0aGlzLnRpbWVHcmlkLnVucmVuZGVyRXZlbnRzKCk7CgkJaWYgKHRoaXMuZGF5R3JpZCkgewoJCQl0aGlzLmRheUdyaWQudW5yZW5kZXJFdmVudHMoKTsKCQl9CgoJCS8vIHdlIERPTidUIG5lZWQgdG8gY2FsbCB1cGRhdGVIZWlnaHQoKSBiZWNhdXNlCgkJLy8gYSByZW5kZXJFdmVudHMoKSBjYWxsIGFsd2F5cyBoYXBwZW5zIGFmdGVyIHRoaXMsIHdoaWNoIHdpbGwgZXZlbnR1YWxseSBjYWxsIHVwZGF0ZUhlaWdodCgpCgl9LAoKCgkvKiBEcmFnZ2luZyAoZm9yIGV2ZW50cyBhbmQgZXh0ZXJuYWwgZWxlbWVudHMpCgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgkvLyBBIHJldHVybmVkIHZhbHVlIG9mIGB0cnVlYCBzaWduYWxzIHRoYXQgYSBtb2NrICJoZWxwZXIiIGV2ZW50IGhhcyBiZWVuIHJlbmRlcmVkLgoJcmVuZGVyRHJhZzogZnVuY3Rpb24oZHJvcExvY2F0aW9uLCBzZWcpIHsKCQlpZiAoZHJvcExvY2F0aW9uLnN0YXJ0Lmhhc1RpbWUoKSkgewoJCQlyZXR1cm4gdGhpcy50aW1lR3JpZC5yZW5kZXJEcmFnKGRyb3BMb2NhdGlvbiwgc2VnKTsKCQl9CgkJZWxzZSBpZiAodGhpcy5kYXlHcmlkKSB7CgkJCXJldHVybiB0aGlzLmRheUdyaWQucmVuZGVyRHJhZyhkcm9wTG9jYXRpb24sIHNlZyk7CgkJfQoJfSwKCgoJdW5yZW5kZXJEcmFnOiBmdW5jdGlvbigpIHsKCQl0aGlzLnRpbWVHcmlkLnVucmVuZGVyRHJhZygpOwoJCWlmICh0aGlzLmRheUdyaWQpIHsKCQkJdGhpcy5kYXlHcmlkLnVucmVuZGVyRHJhZygpOwoJCX0KCX0sCgoKCS8qIFNlbGVjdGlvbgoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCgoJLy8gUmVuZGVycyBhIHZpc3VhbCBpbmRpY2F0aW9uIG9mIGEgc2VsZWN0aW9uCglyZW5kZXJTZWxlY3Rpb246IGZ1bmN0aW9uKHNwYW4pIHsKCQlpZiAoc3Bhbi5zdGFydC5oYXNUaW1lKCkgfHwgc3Bhbi5lbmQuaGFzVGltZSgpKSB7CgkJCXRoaXMudGltZUdyaWQucmVuZGVyU2VsZWN0aW9uKHNwYW4pOwoJCX0KCQllbHNlIGlmICh0aGlzLmRheUdyaWQpIHsKCQkJdGhpcy5kYXlHcmlkLnJlbmRlclNlbGVjdGlvbihzcGFuKTsKCQl9Cgl9LAoKCgkvLyBVbnJlbmRlcnMgYSB2aXN1YWwgaW5kaWNhdGlvbnMgb2YgYSBzZWxlY3Rpb24KCXVucmVuZGVyU2VsZWN0aW9uOiBmdW5jdGlvbigpIHsKCQl0aGlzLnRpbWVHcmlkLnVucmVuZGVyU2VsZWN0aW9uKCk7CgkJaWYgKHRoaXMuZGF5R3JpZCkgewoJCQl0aGlzLmRheUdyaWQudW5yZW5kZXJTZWxlY3Rpb24oKTsKCQl9Cgl9Cgp9KTsKCgovLyBNZXRob2RzIHRoYXQgd2lsbCBjdXN0b21pemUgdGhlIHJlbmRlcmluZyBiZWhhdmlvciBvZiB0aGUgQWdlbmRhVmlldydzIHRpbWVHcmlkCi8vIFRPRE86IG1vdmUgaW50byBUaW1lR3JpZAp2YXIgYWdlbmRhVGltZUdyaWRNZXRob2RzID0gewoKCgkvLyBHZW5lcmF0ZXMgdGhlIEhUTUwgdGhhdCB3aWxsIGdvIGJlZm9yZSB0aGUgZGF5LW9mIHdlZWsgaGVhZGVyIGNlbGxzCglyZW5kZXJIZWFkSW50cm9IdG1sOiBmdW5jdGlvbigpIHsKCQl2YXIgdmlldyA9IHRoaXMudmlldzsKCQl2YXIgd2Vla1RleHQ7CgoJCWlmICh2aWV3Lm9wdCgnd2Vla051bWJlcnMnKSkgewoJCQl3ZWVrVGV4dCA9IHRoaXMuc3RhcnQuZm9ybWF0KHZpZXcub3B0KCdzbWFsbFdlZWtGb3JtYXQnKSk7CgoJCQlyZXR1cm4gJycgKwoJCQkJJzx0aCBjbGFzcz0iZmMtYXhpcyBmYy13ZWVrLW51bWJlciAnICsgdmlldy53aWRnZXRIZWFkZXJDbGFzcyArICciICcgKyB2aWV3LmF4aXNTdHlsZUF0dHIoKSArICc+JyArCgkJCQkJdmlldy5idWlsZEdvdG9BbmNob3JIdG1sKCAvLyBhc2lkZSBmcm9tIGxpbmssIGltcG9ydGFudCBmb3IgbWF0Y2hDZWxsV2lkdGhzCgkJCQkJCXsgZGF0ZTogdGhpcy5zdGFydCwgdHlwZTogJ3dlZWsnLCBmb3JjZU9mZjogdGhpcy5jb2xDbnQgPiAxIH0sCgkJCQkJCWh0bWxFc2NhcGUod2Vla1RleHQpIC8vIGlubmVyIEhUTUwKCQkJCQkpICsKCQkJCSc8L3RoPic7CgkJfQoJCWVsc2UgewoJCQlyZXR1cm4gJzx0aCBjbGFzcz0iZmMtYXhpcyAnICsgdmlldy53aWRnZXRIZWFkZXJDbGFzcyArICciICcgKyB2aWV3LmF4aXNTdHlsZUF0dHIoKSArICc+PC90aD4nOwoJCX0KCX0sCgoKCS8vIEdlbmVyYXRlcyB0aGUgSFRNTCB0aGF0IGdvZXMgYmVmb3JlIHRoZSBiZyBvZiB0aGUgVGltZUdyaWQgc2xvdCBhcmVhLiBMb25nIHZlcnRpY2FsIGNvbHVtbi4KCXJlbmRlckJnSW50cm9IdG1sOiBmdW5jdGlvbigpIHsKCQl2YXIgdmlldyA9IHRoaXMudmlldzsKCgkJcmV0dXJuICc8dGQgY2xhc3M9ImZjLWF4aXMgJyArIHZpZXcud2lkZ2V0Q29udGVudENsYXNzICsgJyIgJyArIHZpZXcuYXhpc1N0eWxlQXR0cigpICsgJz48L3RkPic7Cgl9LAoKCgkvLyBHZW5lcmF0ZXMgdGhlIEhUTUwgdGhhdCBnb2VzIGJlZm9yZSBhbGwgb3RoZXIgdHlwZXMgb2YgY2VsbHMuCgkvLyBBZmZlY3RzIGNvbnRlbnQtc2tlbGV0b24sIGhlbHBlci1za2VsZXRvbiwgaGlnaGxpZ2h0LXNrZWxldG9uIGZvciBib3RoIHRoZSB0aW1lLWdyaWQgYW5kIGRheS1ncmlkLgoJcmVuZGVySW50cm9IdG1sOiBmdW5jdGlvbigpIHsKCQl2YXIgdmlldyA9IHRoaXMudmlldzsKCgkJcmV0dXJuICc8dGQgY2xhc3M9ImZjLWF4aXMiICcgKyB2aWV3LmF4aXNTdHlsZUF0dHIoKSArICc+PC90ZD4nOwoJfQoKfTsKCgovLyBNZXRob2RzIHRoYXQgd2lsbCBjdXN0b21pemUgdGhlIHJlbmRlcmluZyBiZWhhdmlvciBvZiB0aGUgQWdlbmRhVmlldydzIGRheUdyaWQKdmFyIGFnZW5kYURheUdyaWRNZXRob2RzID0gewoKCgkvLyBHZW5lcmF0ZXMgdGhlIEhUTUwgdGhhdCBnb2VzIGJlZm9yZSB0aGUgYWxsLWRheSBjZWxscwoJcmVuZGVyQmdJbnRyb0h0bWw6IGZ1bmN0aW9uKCkgewoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoKCQlyZXR1cm4gJycgKwoJCQknPHRkIGNsYXNzPSJmYy1heGlzICcgKyB2aWV3LndpZGdldENvbnRlbnRDbGFzcyArICciICcgKyB2aWV3LmF4aXNTdHlsZUF0dHIoKSArICc+JyArCgkJCQknPHNwYW4+JyArIC8vIG5lZWRlZCBmb3IgbWF0Y2hDZWxsV2lkdGhzCgkJCQkJdmlldy5nZXRBbGxEYXlIdG1sKCkgKwoJCQkJJzwvc3Bhbj4nICsKCQkJJzwvdGQ+JzsKCX0sCgoKCS8vIEdlbmVyYXRlcyB0aGUgSFRNTCB0aGF0IGdvZXMgYmVmb3JlIGFsbCBvdGhlciB0eXBlcyBvZiBjZWxscy4KCS8vIEFmZmVjdHMgY29udGVudC1za2VsZXRvbiwgaGVscGVyLXNrZWxldG9uLCBoaWdobGlnaHQtc2tlbGV0b24gZm9yIGJvdGggdGhlIHRpbWUtZ3JpZCBhbmQgZGF5LWdyaWQuCglyZW5kZXJJbnRyb0h0bWw6IGZ1bmN0aW9uKCkgewoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoKCQlyZXR1cm4gJzx0ZCBjbGFzcz0iZmMtYXhpcyIgJyArIHZpZXcuYXhpc1N0eWxlQXR0cigpICsgJz48L3RkPic7Cgl9Cgp9OwoKOzsKCnZhciBBR0VOREFfQUxMX0RBWV9FVkVOVF9MSU1JVCA9IDU7CgovLyBwb3RlbnRpYWwgbmljZSB2YWx1ZXMgZm9yIHRoZSBzbG90LWR1cmF0aW9uIGFuZCBpbnRlcnZhbC1kdXJhdGlvbgovLyBmcm9tIGxhcmdlc3QgdG8gc21hbGxlc3QKdmFyIEFHRU5EQV9TVE9DS19TVUJfRFVSQVRJT05TID0gWwoJeyBob3VyczogMSB9LAoJeyBtaW51dGVzOiAzMCB9LAoJeyBtaW51dGVzOiAxNSB9LAoJeyBzZWNvbmRzOiAzMCB9LAoJeyBzZWNvbmRzOiAxNSB9Cl07CgpmY1ZpZXdzLmFnZW5kYSA9IHsKCSdjbGFzcyc6IEFnZW5kYVZpZXcsCglkZWZhdWx0czogewoJCWFsbERheVNsb3Q6IHRydWUsCgkJc2xvdER1cmF0aW9uOiAnMDA6MzA6MDAnLAoJCXNsb3RFdmVudE92ZXJsYXA6IHRydWUgLy8gYSBiYWQgbmFtZS4gY29uZnVzZWQgd2l0aCBvdmVybGFwL2NvbnN0cmFpbnQgc3lzdGVtCgl9Cn07CgpmY1ZpZXdzLmFnZW5kYURheSA9IHsKCXR5cGU6ICdhZ2VuZGEnLAoJZHVyYXRpb246IHsgZGF5czogMSB9Cn07CgpmY1ZpZXdzLmFnZW5kYVdlZWsgPSB7Cgl0eXBlOiAnYWdlbmRhJywKCWR1cmF0aW9uOiB7IHdlZWtzOiAxIH0KfTsKOzsKCi8qClJlc3BvbnNpYmxlIGZvciB0aGUgc2Nyb2xsZXIsIGFuZCBmb3J3YXJkaW5nIGV2ZW50LXJlbGF0ZWQgYWN0aW9ucyBpbnRvIHRoZSAiZ3JpZCIKKi8KdmFyIExpc3RWaWV3ID0gVmlldy5leHRlbmQoewoKCWdyaWQ6IG51bGwsCglzY3JvbGxlcjogbnVsbCwKCglpbml0aWFsaXplOiBmdW5jdGlvbigpIHsKCQl0aGlzLmdyaWQgPSBuZXcgTGlzdFZpZXdHcmlkKHRoaXMpOwoJCXRoaXMuc2Nyb2xsZXIgPSBuZXcgU2Nyb2xsZXIoewoJCQlvdmVyZmxvd1g6ICdoaWRkZW4nLAoJCQlvdmVyZmxvd1k6ICdhdXRvJwoJCX0pOwoJfSwKCglyZW5kZXJTa2VsZXRvbjogZnVuY3Rpb24oKSB7CgkJdGhpcy5lbC5hZGRDbGFzcygKCQkJJ2ZjLWxpc3QtdmlldyAnICsKCQkJdGhpcy53aWRnZXRDb250ZW50Q2xhc3MKCQkpOwoKCQl0aGlzLnNjcm9sbGVyLnJlbmRlcigpOwoJCXRoaXMuc2Nyb2xsZXIuZWwuYXBwZW5kVG8odGhpcy5lbCk7CgoJCXRoaXMuZ3JpZC5zZXRFbGVtZW50KHRoaXMuc2Nyb2xsZXIuc2Nyb2xsRWwpOwoJfSwKCgl1bnJlbmRlclNrZWxldG9uOiBmdW5jdGlvbigpIHsKCQl0aGlzLnNjcm9sbGVyLmRlc3Ryb3koKTsgLy8gd2lsbCByZW1vdmUgdGhlIEdyaWQgdG9vCgl9LAoKCXNldEhlaWdodDogZnVuY3Rpb24odG90YWxIZWlnaHQsIGlzQXV0bykgewoJCXRoaXMuc2Nyb2xsZXIuc2V0SGVpZ2h0KHRoaXMuY29tcHV0ZVNjcm9sbGVySGVpZ2h0KHRvdGFsSGVpZ2h0KSk7Cgl9LAoKCWNvbXB1dGVTY3JvbGxlckhlaWdodDogZnVuY3Rpb24odG90YWxIZWlnaHQpIHsKCQlyZXR1cm4gdG90YWxIZWlnaHQgLQoJCQlzdWJ0cmFjdElubmVyRWxIZWlnaHQodGhpcy5lbCwgdGhpcy5zY3JvbGxlci5lbCk7IC8vIGV2ZXJ5dGhpbmcgdGhhdCdzIE5PVCB0aGUgc2Nyb2xsZXIKCX0sCgoJcmVuZGVyRGF0ZXM6IGZ1bmN0aW9uKCkgewoJCXRoaXMuZ3JpZC5zZXRSYW5nZSh0aGlzLnJlbmRlclJhbmdlKTsgLy8gbmVlZHMgdG8gcHJvY2VzcyByYW5nZS1yZWxhdGVkIG9wdGlvbnMKCX0sCgoJcmVuZGVyRXZlbnRzOiBmdW5jdGlvbihldmVudHMpIHsKCQl0aGlzLmdyaWQucmVuZGVyRXZlbnRzKGV2ZW50cyk7Cgl9LAoKCXVucmVuZGVyRXZlbnRzOiBmdW5jdGlvbigpIHsKCQl0aGlzLmdyaWQudW5yZW5kZXJFdmVudHMoKTsKCX0sCgoJaXNFdmVudFJlc2l6YWJsZTogZnVuY3Rpb24oZXZlbnQpIHsKCQlyZXR1cm4gZmFsc2U7Cgl9LAoKCWlzRXZlbnREcmFnZ2FibGU6IGZ1bmN0aW9uKGV2ZW50KSB7CgkJcmV0dXJuIGZhbHNlOwoJfQoKfSk7CgovKgpSZXNwb25zaWJsZSBmb3IgZXZlbnQgcmVuZGVyaW5nIGFuZCB1c2VyLWludGVyYWN0aW9uLgpJdHMgImVsIiBpcyB0aGUgaW5uZXItY29udGVudCBvZiB0aGUgYWJvdmUgdmlldydzIHNjcm9sbGVyLgoqLwp2YXIgTGlzdFZpZXdHcmlkID0gR3JpZC5leHRlbmQoewoKCXNlZ1NlbGVjdG9yOiAnLmZjLWxpc3QtaXRlbScsIC8vIHdoaWNoIGVsZW1lbnRzIGFjY2VwdCBldmVudCBhY3Rpb25zCgloYXNEYXlJbnRlcmFjdGlvbnM6IGZhbHNlLCAvLyBubyBkYXkgc2VsZWN0aW9uIG9yIGRheSBjbGlja2luZwoKCS8vIHNsaWNlcyBieSBkYXkKCXNwYW5Ub1NlZ3M6IGZ1bmN0aW9uKHNwYW4pIHsKCQl2YXIgdmlldyA9IHRoaXMudmlldzsKCQl2YXIgZGF5U3RhcnQgPSB2aWV3LnJlbmRlclJhbmdlLnN0YXJ0LmNsb25lKCkudGltZSgwKTsgLy8gdGltZWQsIHNvIHNlZ3MgZ2V0IHRpbWVzIQoJCXZhciBkYXlJbmRleCA9IDA7CgkJdmFyIHNlZzsKCQl2YXIgc2VncyA9IFtdOwoKCQl3aGlsZSAoZGF5U3RhcnQgPCB2aWV3LnJlbmRlclJhbmdlLmVuZCkgewoKCQkJc2VnID0gaW50ZXJzZWN0UmFuZ2VzKHNwYW4sIHsKCQkJCXN0YXJ0OiBkYXlTdGFydCwKCQkJCWVuZDogZGF5U3RhcnQuY2xvbmUoKS5hZGQoMSwgJ2RheScpCgkJCX0pOwoKCQkJaWYgKHNlZykgewoJCQkJc2VnLmRheUluZGV4ID0gZGF5SW5kZXg7CgkJCQlzZWdzLnB1c2goc2VnKTsKCQkJfQoKCQkJZGF5U3RhcnQuYWRkKDEsICdkYXknKTsKCQkJZGF5SW5kZXgrKzsKCgkJCS8vIGRldGVjdCB3aGVuIHNwYW4gd29uJ3QgZ28gZnVsbHkgaW50byB0aGUgbmV4dCBkYXksCgkJCS8vIGFuZCBtdXRhdGUgdGhlIGxhdGVzdCBzZWcgdG8gdGhlIGJlIHRoZSBlbmQuCgkJCWlmICgKCQkJCXNlZyAmJiAhc2VnLmlzRW5kICYmIHNwYW4uZW5kLmhhc1RpbWUoKSAmJgoJCQkJc3Bhbi5lbmQgPCBkYXlTdGFydC5jbG9uZSgpLmFkZCh0aGlzLnZpZXcubmV4dERheVRocmVzaG9sZCkKCQkJKSB7CgkJCQlzZWcuZW5kID0gc3Bhbi5lbmQuY2xvbmUoKTsKCQkJCXNlZy5pc0VuZCA9IHRydWU7CgkJCQlicmVhazsKCQkJfQoJCX0KCgkJcmV0dXJuIHNlZ3M7Cgl9LAoKCS8vIGxpa2UgIjQ6MDBhbSIKCWNvbXB1dGVFdmVudFRpbWVGb3JtYXQ6IGZ1bmN0aW9uKCkgewoJCXJldHVybiB0aGlzLnZpZXcub3B0KCdtZWRpdW1UaW1lRm9ybWF0Jyk7Cgl9LAoKCS8vIGZvciBldmVudHMgd2l0aCBhIHVybCwgdGhlIHdob2xlIDx0cj4gc2hvdWxkIGJlIGNsaWNrYWJsZSwKCS8vIGJ1dCBpdCdzIGltcG9zc2libGUgdG8gd3JhcCB3aXRoIGFuIDxhPiB0YWcuIHNpbXVsYXRlIHRoaXMuCgloYW5kbGVTZWdDbGljazogZnVuY3Rpb24oc2VnLCBldikgewoJCXZhciB1cmw7CgoJCUdyaWQucHJvdG90eXBlLmhhbmRsZVNlZ0NsaWNrLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IC8vIHN1cGVyLiBtaWdodCBwcmV2ZW50IHRoZSBkZWZhdWx0IGFjdGlvbgoKCQkvLyBub3QgY2xpY2tpbmcgb24gb3Igd2l0aGluIGFuIDxhPiB3aXRoIGFuIGhyZWYKCQlpZiAoISQoZXYudGFyZ2V0KS5jbG9zZXN0KCdhW2hyZWZdJykubGVuZ3RoKSB7CgkJCXVybCA9IHNlZy5ldmVudC51cmw7CgkJCWlmICh1cmwgJiYgIWV2LmlzRGVmYXVsdFByZXZlbnRlZCgpKSB7IC8vIGpzRXZlbnQgbm90IGNhbmNlbGxlZCBpbiBoYW5kbGVyCgkJCQl3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDsgLy8gc2ltdWxhdGUgbGluayBjbGljawoJCQl9CgkJfQoJfSwKCgkvLyByZXR1cm5zIGxpc3Qgb2YgZm9yZWdyb3VuZCBzZWdzIHRoYXQgd2VyZSBhY3R1YWxseSByZW5kZXJlZAoJcmVuZGVyRmdTZWdzOiBmdW5jdGlvbihzZWdzKSB7CgkJc2VncyA9IHRoaXMucmVuZGVyRmdTZWdFbHMoc2Vncyk7IC8vIG1pZ2h0IGZpbHRlciBhd2F5IGhpZGRlbiBldmVudHMKCgkJaWYgKCFzZWdzLmxlbmd0aCkgewoJCQl0aGlzLnJlbmRlckVtcHR5TWVzc2FnZSgpOwoJCX0KCQllbHNlIHsKCQkJdGhpcy5yZW5kZXJTZWdMaXN0KHNlZ3MpOwoJCX0KCgkJcmV0dXJuIHNlZ3M7Cgl9LAoKCXJlbmRlckVtcHR5TWVzc2FnZTogZnVuY3Rpb24oKSB7CgkJdGhpcy5lbC5odG1sKAoJCQknPGRpdiBjbGFzcz0iZmMtbGlzdC1lbXB0eS13cmFwMiI+JyArIC8vIFRPRE86IHRyeSBsZXNzIHdyYXBzCgkJCSc8ZGl2IGNsYXNzPSJmYy1saXN0LWVtcHR5LXdyYXAxIj4nICsKCQkJJzxkaXYgY2xhc3M9ImZjLWxpc3QtZW1wdHkiPicgKwoJCQkJaHRtbEVzY2FwZSh0aGlzLnZpZXcub3B0KCdub0V2ZW50c01lc3NhZ2UnKSkgKwoJCQknPC9kaXY+JyArCgkJCSc8L2Rpdj4nICsKCQkJJzwvZGl2PicKCQkpOwoJfSwKCgkvLyByZW5kZXIgdGhlIGV2ZW50IHNlZ21lbnRzIGluIHRoZSB2aWV3CglyZW5kZXJTZWdMaXN0OiBmdW5jdGlvbihhbGxTZWdzKSB7CgkJdmFyIHNlZ3NCeURheSA9IHRoaXMuZ3JvdXBTZWdzQnlEYXkoYWxsU2Vncyk7IC8vIHNwYXJzZSBhcnJheQoJCXZhciBkYXlJbmRleDsKCQl2YXIgZGF5U2VnczsKCQl2YXIgaTsKCQl2YXIgdGFibGVFbCA9ICQoJzx0YWJsZSBjbGFzcz0iZmMtbGlzdC10YWJsZSI+PHRib2R5Lz48L3RhYmxlPicpOwoJCXZhciB0Ym9keUVsID0gdGFibGVFbC5maW5kKCd0Ym9keScpOwoKCQlmb3IgKGRheUluZGV4ID0gMDsgZGF5SW5kZXggPCBzZWdzQnlEYXkubGVuZ3RoOyBkYXlJbmRleCsrKSB7CgkJCWRheVNlZ3MgPSBzZWdzQnlEYXlbZGF5SW5kZXhdOwoJCQlpZiAoZGF5U2VncykgeyAvLyBzcGFyc2UgYXJyYXksIHNvIG1pZ2h0IGJlIHVuZGVmaW5lZAoKCQkJCS8vIGFwcGVuZCBhIGRheSBoZWFkZXIKCQkJCXRib2R5RWwuYXBwZW5kKHRoaXMuZGF5SGVhZGVySHRtbCgKCQkJCQl0aGlzLnZpZXcucmVuZGVyUmFuZ2Uuc3RhcnQuY2xvbmUoKS5hZGQoZGF5SW5kZXgsICdkYXlzJykKCQkJCSkpOwoKCQkJCXRoaXMuc29ydEV2ZW50U2VncyhkYXlTZWdzKTsKCgkJCQlmb3IgKGkgPSAwOyBpIDwgZGF5U2Vncy5sZW5ndGg7IGkrKykgewoJCQkJCXRib2R5RWwuYXBwZW5kKGRheVNlZ3NbaV0uZWwpOyAvLyBhcHBlbmQgZXZlbnQgcm93CgkJCQl9CgkJCX0KCQl9CgoJCXRoaXMuZWwuZW1wdHkoKS5hcHBlbmQodGFibGVFbCk7Cgl9LAoKCS8vIFJldHVybnMgYSBzcGFyc2UgYXJyYXkgb2YgYXJyYXlzLCBzZWdzIGdyb3VwZWQgYnkgdGhlaXIgZGF5SW5kZXgKCWdyb3VwU2Vnc0J5RGF5OiBmdW5jdGlvbihzZWdzKSB7CgkJdmFyIHNlZ3NCeURheSA9IFtdOyAvLyBzcGFyc2UgYXJyYXkKCQl2YXIgaSwgc2VnOwoKCQlmb3IgKGkgPSAwOyBpIDwgc2Vncy5sZW5ndGg7IGkrKykgewoJCQlzZWcgPSBzZWdzW2ldOwoJCQkoc2Vnc0J5RGF5W3NlZy5kYXlJbmRleF0gfHwgKHNlZ3NCeURheVtzZWcuZGF5SW5kZXhdID0gW10pKQoJCQkJLnB1c2goc2VnKTsKCQl9CgoJCXJldHVybiBzZWdzQnlEYXk7Cgl9LAoKCS8vIGdlbmVyYXRlcyB0aGUgSFRNTCBmb3IgdGhlIGRheSBoZWFkZXJzIHRoYXQgbGl2ZSBhbW9uZ3N0IHRoZSBldmVudCByb3dzCglkYXlIZWFkZXJIdG1sOiBmdW5jdGlvbihkYXlEYXRlKSB7CgkJdmFyIHZpZXcgPSB0aGlzLnZpZXc7CgkJdmFyIG1haW5Gb3JtYXQgPSB2aWV3Lm9wdCgnbGlzdERheUZvcm1hdCcpOwoJCXZhciBhbHRGb3JtYXQgPSB2aWV3Lm9wdCgnbGlzdERheUFsdEZvcm1hdCcpOwoKCQlyZXR1cm4gJzx0ciBjbGFzcz0iZmMtbGlzdC1oZWFkaW5nIiBkYXRhLWRhdGU9IicgKyBkYXlEYXRlLmZvcm1hdCgnWVlZWS1NTS1ERCcpICsgJyI+JyArCgkJCSc8dGQgY2xhc3M9IicgKyB2aWV3LndpZGdldEhlYWRlckNsYXNzICsgJyIgY29sc3Bhbj0iMyI+JyArCgkJCQkobWFpbkZvcm1hdCA/CgkJCQkJdmlldy5idWlsZEdvdG9BbmNob3JIdG1sKAoJCQkJCQlkYXlEYXRlLAoJCQkJCQl7ICdjbGFzcyc6ICdmYy1saXN0LWhlYWRpbmctbWFpbicgfSwKCQkJCQkJaHRtbEVzY2FwZShkYXlEYXRlLmZvcm1hdChtYWluRm9ybWF0KSkgLy8gaW5uZXIgSFRNTAoJCQkJCSkgOgoJCQkJCScnKSArCgkJCQkoYWx0Rm9ybWF0ID8KCQkJCQl2aWV3LmJ1aWxkR290b0FuY2hvckh0bWwoCgkJCQkJCWRheURhdGUsCgkJCQkJCXsgJ2NsYXNzJzogJ2ZjLWxpc3QtaGVhZGluZy1hbHQnIH0sCgkJCQkJCWh0bWxFc2NhcGUoZGF5RGF0ZS5mb3JtYXQoYWx0Rm9ybWF0KSkgLy8gaW5uZXIgSFRNTAoJCQkJCSkgOgoJCQkJCScnKSArCgkJCSc8L3RkPicgKwoJCSc8L3RyPic7Cgl9LAoKCS8vIGdlbmVyYXRlcyB0aGUgSFRNTCBmb3IgYSBzaW5nbGUgZXZlbnQgcm93CglmZ1NlZ0h0bWw6IGZ1bmN0aW9uKHNlZykgewoJCXZhciB2aWV3ID0gdGhpcy52aWV3OwoJCXZhciBjbGFzc2VzID0gWyAnZmMtbGlzdC1pdGVtJyBdLmNvbmNhdCh0aGlzLmdldFNlZ0N1c3RvbUNsYXNzZXMoc2VnKSk7CgkJdmFyIGJnQ29sb3IgPSB0aGlzLmdldFNlZ0JhY2tncm91bmRDb2xvcihzZWcpOwoJCXZhciBldmVudCA9IHNlZy5ldmVudDsKCQl2YXIgdXJsID0gZXZlbnQudXJsOwoJCXZhciB0aW1lSHRtbDsKCgkJaWYgKGV2ZW50LmFsbERheSkgewoJCQl0aW1lSHRtbCA9IHZpZXcuZ2V0QWxsRGF5SHRtbCgpOwoJCX0KCQllbHNlIGlmICh2aWV3LmlzTXVsdGlEYXlFdmVudChldmVudCkpIHsgLy8gaWYgdGhlIGV2ZW50IGFwcGVhcnMgdG8gc3BhbiBtb3JlIHRoYW4gb25lIGRheQoJCQlpZiAoc2VnLmlzU3RhcnQgfHwgc2VnLmlzRW5kKSB7IC8vIG91dGVyIHNlZ21lbnQgdGhhdCBwcm9iYWJseSBsYXN0cyBwYXJ0IG9mIHRoZSBkYXkKCQkJCXRpbWVIdG1sID0gaHRtbEVzY2FwZSh0aGlzLmdldEV2ZW50VGltZVRleHQoc2VnKSk7CgkJCX0KCQkJZWxzZSB7IC8vIGlubmVyIHNlZ21lbnQgdGhhdCBsYXN0cyB0aGUgd2hvbGUgZGF5CgkJCQl0aW1lSHRtbCA9IHZpZXcuZ2V0QWxsRGF5SHRtbCgpOwoJCQl9CgkJfQoJCWVsc2UgewoJCQkvLyBEaXNwbGF5IHRoZSBub3JtYWwgdGltZSB0ZXh0IGZvciB0aGUgKmV2ZW50J3MqIHRpbWVzCgkJCXRpbWVIdG1sID0gaHRtbEVzY2FwZSh0aGlzLmdldEV2ZW50VGltZVRleHQoZXZlbnQpKTsKCQl9CgoJCWlmICh1cmwpIHsKCQkJY2xhc3Nlcy5wdXNoKCdmYy1oYXMtdXJsJyk7CgkJfQoKCQlyZXR1cm4gJzx0ciBjbGFzcz0iJyArIGNsYXNzZXMuam9pbignICcpICsgJyI+JyArCgkJCSh0aGlzLmRpc3BsYXlFdmVudFRpbWUgPwoJCQkJJzx0ZCBjbGFzcz0iZmMtbGlzdC1pdGVtLXRpbWUgJyArIHZpZXcud2lkZ2V0Q29udGVudENsYXNzICsgJyI+JyArCgkJCQkJKHRpbWVIdG1sIHx8ICcnKSArCgkJCQknPC90ZD4nIDoKCQkJCScnKSArCgkJCSc8dGQgY2xhc3M9ImZjLWxpc3QtaXRlbS1tYXJrZXIgJyArIHZpZXcud2lkZ2V0Q29udGVudENsYXNzICsgJyI+JyArCgkJCQknPHNwYW4gY2xhc3M9ImZjLWV2ZW50LWRvdCInICsKCQkJCShiZ0NvbG9yID8KCQkJCQknIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOicgKyBiZ0NvbG9yICsgJyInIDoKCQkJCQknJykgKwoJCQkJJz48L3NwYW4+JyArCgkJCSc8L3RkPicgKwoJCQknPHRkIGNsYXNzPSJmYy1saXN0LWl0ZW0tdGl0bGUgJyArIHZpZXcud2lkZ2V0Q29udGVudENsYXNzICsgJyI+JyArCgkJCQknPGEnICsgKHVybCA/ICcgaHJlZj0iJyArIGh0bWxFc2NhcGUodXJsKSArICciJyA6ICcnKSArICc+JyArCgkJCQkJaHRtbEVzY2FwZShzZWcuZXZlbnQudGl0bGUgfHwgJycpICsKCQkJCSc8L2E+JyArCgkJCSc8L3RkPicgKwoJCSc8L3RyPic7Cgl9Cgp9KTsKCjs7CgpmY1ZpZXdzLmxpc3QgPSB7CgknY2xhc3MnOiBMaXN0VmlldywKCWJ1dHRvblRleHRLZXk6ICdsaXN0JywgLy8gd2hhdCB0byBsb29rdXAgaW4gbG9jYWxlIGZpbGVzCglkZWZhdWx0czogewoJCWJ1dHRvblRleHQ6ICdsaXN0JywgLy8gdGV4dCB0byBkaXNwbGF5IGZvciBFbmdsaXNoCgkJbGlzdERheUZvcm1hdDogJ0xMJywgLy8gbGlrZSAiSmFudWFyeSAxLCAyMDE2IgoJCW5vRXZlbnRzTWVzc2FnZTogJ05vIGV2ZW50cyB0byBkaXNwbGF5JwoJfQp9OwoKZmNWaWV3cy5saXN0RGF5ID0gewoJdHlwZTogJ2xpc3QnLAoJZHVyYXRpb246IHsgZGF5czogMSB9LAoJZGVmYXVsdHM6IHsKCQlsaXN0RGF5Rm9ybWF0OiAnZGRkZCcgLy8gZGF5LW9mLXdlZWsgaXMgYWxsIHdlIG5lZWQuIGZ1bGwgZGF0ZSBpcyBwcm9iYWJseSBpbiBoZWFkZXIKCX0KfTsKCmZjVmlld3MubGlzdFdlZWsgPSB7Cgl0eXBlOiAnbGlzdCcsCglkdXJhdGlvbjogeyB3ZWVrczogMSB9LAoJZGVmYXVsdHM6IHsKCQlsaXN0RGF5Rm9ybWF0OiAnZGRkZCcsIC8vIGRheS1vZi13ZWVrIGlzIG1vcmUgaW1wb3J0YW50CgkJbGlzdERheUFsdEZvcm1hdDogJ0xMJwoJfQp9OwoKZmNWaWV3cy5saXN0TW9udGggPSB7Cgl0eXBlOiAnbGlzdCcsCglkdXJhdGlvbjogeyBtb250aDogMSB9LAoJZGVmYXVsdHM6IHsKCQlsaXN0RGF5QWx0Rm9ybWF0OiAnZGRkZCcgLy8gZGF5LW9mLXdlZWsgaXMgbmljZS10by1oYXZlCgl9Cn07CgpmY1ZpZXdzLmxpc3RZZWFyID0gewoJdHlwZTogJ2xpc3QnLAoJZHVyYXRpb246IHsgeWVhcjogMSB9LAoJZGVmYXVsdHM6IHsKCQlsaXN0RGF5QWx0Rm9ybWF0OiAnZGRkZCcgLy8gZGF5LW9mLXdlZWsgaXMgbmljZS10by1oYXZlCgl9Cn07Cgo7OwoNCnJldHVybiBGQzsgLy8gZXhwb3J0IGZvciBOb2RlL0NvbW1vbkpTDQp9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/fullcalendar.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIEZ1bGxDYWxlbmRhciB2My4zLjEgU3R5bGVzaGVldAogKiBEb2NzICYgTGljZW5zZTogaHR0cHM6Ly9mdWxsY2FsZW5kYXIuaW8vCiAqIChjKSAyMDE3IEFkYW0gU2hhdwogKi8uZmMtaWNvbixib2R5IC5mY3tmb250LXNpemU6MWVtfS5mYy1idXR0b24tZ3JvdXAsLmZjLWljb257ZGlzcGxheTppbmxpbmUtYmxvY2t9LmZjLWJnLC5mYy1yb3cgLmZjLWJnZXZlbnQtc2tlbGV0b24sLmZjLXJvdyAuZmMtaGlnaGxpZ2h0LXNrZWxldG9ue2JvdHRvbTowfS5mYy1pY29uLC5mYy11bnNlbGVjdGFibGV7LWtodG1sLXVzZXItc2VsZWN0Om5vbmU7LXdlYmtpdC10b3VjaC1jYWxsb3V0Om5vbmV9LmZje2RpcmVjdGlvbjpsdHI7dGV4dC1hbGlnbjpsZWZ0fS5mYy1ydGx7dGV4dC1hbGlnbjpyaWdodH0uZmMgdGgsLmZjLWJhc2ljLXZpZXcgdGQuZmMtd2Vlay1udW1iZXIsLmZjLWljb24sLmZjLXRvb2xiYXJ7dGV4dC1hbGlnbjpjZW50ZXJ9LmZjLXVudGhlbWVkIC5mYy1jb250ZW50LC5mYy11bnRoZW1lZCAuZmMtZGl2aWRlciwuZmMtdW50aGVtZWQgLmZjLWxpc3QtaGVhZGluZyB0ZCwuZmMtdW50aGVtZWQgLmZjLWxpc3QtdmlldywuZmMtdW50aGVtZWQgLmZjLXBvcG92ZXIsLmZjLXVudGhlbWVkIC5mYy1yb3csLmZjLXVudGhlbWVkIHRib2R5LC5mYy11bnRoZW1lZCB0ZCwuZmMtdW50aGVtZWQgdGgsLmZjLXVudGhlbWVkIHRoZWFke2JvcmRlci1jb2xvcjojZGRkfS5mYy11bnRoZW1lZCAuZmMtcG9wb3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LmZjLXVudGhlbWVkIC5mYy1kaXZpZGVyLC5mYy11bnRoZW1lZCAuZmMtbGlzdC1oZWFkaW5nIHRkLC5mYy11bnRoZW1lZCAuZmMtcG9wb3ZlciAuZmMtaGVhZGVye2JhY2tncm91bmQ6I2VlZX0uZmMtdW50aGVtZWQgLmZjLXBvcG92ZXIgLmZjLWhlYWRlciAuZmMtY2xvc2V7Y29sb3I6IzY2Nn0uZmMtdW50aGVtZWQgdGQuZmMtdG9kYXl7YmFja2dyb3VuZDojZmNmOGUzfS5mYy1oaWdobGlnaHR7YmFja2dyb3VuZDojYmNlOGYxO29wYWNpdHk6LjN9LmZjLWJnZXZlbnR7YmFja2dyb3VuZDojOGZkZjgyO29wYWNpdHk6LjN9LmZjLW5vbmJ1c2luZXNze2JhY2tncm91bmQ6I2Q3ZDdkN30uZmMtdW50aGVtZWQgLmZjLWRpc2FibGVkLWRheXtiYWNrZ3JvdW5kOiNkN2Q3ZDc7b3BhY2l0eTouM30udWktd2lkZ2V0IC5mYy1kaXNhYmxlZC1kYXl7YmFja2dyb3VuZC1pbWFnZTpub25lfS5mYy1pY29ue2hlaWdodDoxZW07bGluZS1oZWlnaHQ6MWVtO292ZXJmbG93OmhpZGRlbjtmb250LWZhbWlseToiQ291cmllciBOZXciLENvdXJpZXIsbW9ub3NwYWNlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0uZmMtaWNvbjphZnRlcntwb3NpdGlvbjpyZWxhdGl2ZX0uZmMtaWNvbi1sZWZ0LXNpbmdsZS1hcnJvdzphZnRlcntjb250ZW50OiJcMDIwMzkiO2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MjAwJTt0b3A6LTclfS5mYy1pY29uLXJpZ2h0LXNpbmdsZS1hcnJvdzphZnRlcntjb250ZW50OiJcMDIwM0EiO2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MjAwJTt0b3A6LTclfS5mYy1pY29uLWxlZnQtZG91YmxlLWFycm93OmFmdGVye2NvbnRlbnQ6IlwwMDBBQiI7Zm9udC1zaXplOjE2MCU7dG9wOi03JX0uZmMtaWNvbi1yaWdodC1kb3VibGUtYXJyb3c6YWZ0ZXJ7Y29udGVudDoiXDAwMEJCIjtmb250LXNpemU6MTYwJTt0b3A6LTclfS5mYy1pY29uLWxlZnQtdHJpYW5nbGU6YWZ0ZXJ7Y29udGVudDoiXDI1QzQiO2ZvbnQtc2l6ZToxMjUlO3RvcDozJX0uZmMtaWNvbi1yaWdodC10cmlhbmdsZTphZnRlcntjb250ZW50OiJcMjVCQSI7Zm9udC1zaXplOjEyNSU7dG9wOjMlfS5mYy1pY29uLWRvd24tdHJpYW5nbGU6YWZ0ZXJ7Y29udGVudDoiXDI1QkMiO2ZvbnQtc2l6ZToxMjUlO3RvcDoyJX0uZmMtaWNvbi14OmFmdGVye2NvbnRlbnQ6IlwwMDBENyI7Zm9udC1zaXplOjIwMCU7dG9wOjYlfS5mYyBidXR0b257LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O21hcmdpbjowO2hlaWdodDoyLjFlbTtwYWRkaW5nOjAgLjZlbTtmb250LXNpemU6MWVtO3doaXRlLXNwYWNlOm5vd3JhcDtjdXJzb3I6cG9pbnRlcn0uZmMgYnV0dG9uOjotbW96LWZvY3VzLWlubmVye21hcmdpbjowO3BhZGRpbmc6MH0uZmMtc3RhdGUtZGVmYXVsdHtib3JkZXI6MXB4IHNvbGlkO2JhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTtiYWNrZ3JvdW5kLWltYWdlOi1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwjZmZmLCNlNmU2ZTYpO2JhY2tncm91bmQtaW1hZ2U6LXdlYmtpdC1ncmFkaWVudChsaW5lYXIsMCAwLDAgMTAwJSxmcm9tKCNmZmYpLHRvKCNlNmU2ZTYpKTtiYWNrZ3JvdW5kLWltYWdlOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwjZmZmLCNlNmU2ZTYpO2JhY2tncm91bmQtaW1hZ2U6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwjZmZmLCNlNmU2ZTYpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwjZmZmLCNlNmU2ZTYpO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O2JvcmRlci1jb2xvcjojZTZlNmU2ICNlNmU2ZTYgI2JmYmZiZjtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMSkgcmdiYSgwLDAsMCwuMSkgcmdiYSgwLDAsMCwuMjUpO2NvbG9yOiMzMzM7dGV4dC1zaGFkb3c6MCAxcHggMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjc1KTtib3gtc2hhZG93Omluc2V0IDAgMXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwuMiksMCAxcHggMnB4IHJnYmEoMCwwLDAsLjA1KX0uZmMtc3RhdGUtZGVmYXVsdC5mYy1jb3JuZXItbGVmdHtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjRweDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjRweH0uZmMtc3RhdGUtZGVmYXVsdC5mYy1jb3JuZXItcmlnaHR7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjRweH0uZmMgYnV0dG9uIC5mYy1pY29ue3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDotLjA1ZW07bWFyZ2luOjAgLjJlbTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmZjLXN0YXRlLWFjdGl2ZSwuZmMtc3RhdGUtZGlzYWJsZWQsLmZjLXN0YXRlLWRvd24sLmZjLXN0YXRlLWhvdmVye2NvbG9yOiMzMzM7YmFja2dyb3VuZC1jb2xvcjojZTZlNmU2fS5mYy1zdGF0ZS1ob3Zlcntjb2xvcjojMzMzO3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQtcG9zaXRpb246MCAtMTVweDstd2Via2l0LXRyYW5zaXRpb246YmFja2dyb3VuZC1wb3NpdGlvbiAuMXMgbGluZWFyOy1tb3otdHJhbnNpdGlvbjpiYWNrZ3JvdW5kLXBvc2l0aW9uIC4xcyBsaW5lYXI7LW8tdHJhbnNpdGlvbjpiYWNrZ3JvdW5kLXBvc2l0aW9uIC4xcyBsaW5lYXI7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLXBvc2l0aW9uIC4xcyBsaW5lYXJ9LmZjLXN0YXRlLWFjdGl2ZSwuZmMtc3RhdGUtZG93bntiYWNrZ3JvdW5kLWNvbG9yOiNjY2M7YmFja2dyb3VuZC1pbWFnZTpub25lO2JveC1zaGFkb3c6aW5zZXQgMCAycHggNHB4IHJnYmEoMCwwLDAsLjE1KSwwIDFweCAycHggcmdiYSgwLDAsMCwuMDUpfS5mYy1zdGF0ZS1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdDtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7b3BhY2l0eTouNjU7Ym94LXNoYWRvdzpub25lfS5mYy1ldmVudC5mYy1kcmFnZ2FibGUsLmZjLWV2ZW50W2hyZWZdLC5mYy1wb3BvdmVyIC5mYy1oZWFkZXIgLmZjLWNsb3NlLGFbZGF0YS1nb3RvXXtjdXJzb3I6cG9pbnRlcn0uZmMgLmZjLWJ1dHRvbi1ncm91cD4qe2Zsb2F0OmxlZnQ7bWFyZ2luOjAgMCAwIC0xcHh9LmZjIC5mYy1idXR0b24tZ3JvdXA+OmZpcnN0LWNoaWxke21hcmdpbi1sZWZ0OjB9LmZjLXBvcG92ZXJ7cG9zaXRpb246YWJzb2x1dGU7Ym94LXNoYWRvdzowIDJweCA2cHggcmdiYSgwLDAsMCwuMTUpfS5mYy1wb3BvdmVyIC5mYy1oZWFkZXJ7cGFkZGluZzoycHggNHB4fS5mYy1wb3BvdmVyIC5mYy1oZWFkZXIgLmZjLXRpdGxle21hcmdpbjowIDJweH0uZmMtbHRyIC5mYy1wb3BvdmVyIC5mYy1oZWFkZXIgLmZjLXRpdGxlLC5mYy1ydGwgLmZjLXBvcG92ZXIgLmZjLWhlYWRlciAuZmMtY2xvc2V7ZmxvYXQ6bGVmdH0uZmMtbHRyIC5mYy1wb3BvdmVyIC5mYy1oZWFkZXIgLmZjLWNsb3NlLC5mYy1ydGwgLmZjLXBvcG92ZXIgLmZjLWhlYWRlciAuZmMtdGl0bGV7ZmxvYXQ6cmlnaHR9LmZjLXVudGhlbWVkIC5mYy1wb3BvdmVye2JvcmRlci13aWR0aDoxcHg7Ym9yZGVyLXN0eWxlOnNvbGlkfS5mYy11bnRoZW1lZCAuZmMtcG9wb3ZlciAuZmMtaGVhZGVyIC5mYy1jbG9zZXtmb250LXNpemU6LjllbTttYXJnaW4tdG9wOjJweH0uZmMtcG9wb3Zlcj4udWktd2lkZ2V0LWhlYWRlcisudWktd2lkZ2V0LWNvbnRlbnR7Ym9yZGVyLXRvcDowfS5mYy1kaXZpZGVye2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MXB4fWhyLmZjLWRpdmlkZXJ7aGVpZ2h0OjA7bWFyZ2luOjA7cGFkZGluZzowIDAgMnB4O2JvcmRlci13aWR0aDoxcHggMH0uZmMtYmcgdGFibGUsLmZjLXJvdyAuZmMtYmdldmVudC1za2VsZXRvbiB0YWJsZSwuZmMtcm93IC5mYy1oaWdobGlnaHQtc2tlbGV0b24gdGFibGV7aGVpZ2h0OjEwMCV9LmZjLWNsZWFye2NsZWFyOmJvdGh9LmZjLWJnLC5mYy1iZ2V2ZW50LXNrZWxldG9uLC5mYy1oZWxwZXItc2tlbGV0b24sLmZjLWhpZ2hsaWdodC1za2VsZXRvbntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7cmlnaHQ6MH0uZmMgdGFibGV7d2lkdGg6MTAwJTtib3gtc2l6aW5nOmJvcmRlci1ib3g7dGFibGUtbGF5b3V0OmZpeGVkO2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtib3JkZXItc3BhY2luZzowO2ZvbnQtc2l6ZToxZW19LmZjIHRkLC5mYyB0aHtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjFweDtwYWRkaW5nOjA7dmVydGljYWwtYWxpZ246dG9wfS5mYyB0ZC5mYy10b2RheXtib3JkZXItc3R5bGU6ZG91YmxlfWFbZGF0YS1nb3RvXTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5mYyAuZmMtcm93e2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MH0uZmMtcm93IHRhYmxle2JvcmRlci1sZWZ0OjAgaGlkZGVuIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDowIGhpZGRlbiB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOjAgaGlkZGVuIHRyYW5zcGFyZW50fS5mYy1yb3c6Zmlyc3QtY2hpbGQgdGFibGV7Ym9yZGVyLXRvcDowIGhpZGRlbiB0cmFuc3BhcmVudH0uZmMtcm93e3Bvc2l0aW9uOnJlbGF0aXZlfS5mYy1yb3cgLmZjLWJne3otaW5kZXg6MX0uZmMtcm93IC5mYy1iZ2V2ZW50LXNrZWxldG9uIHRkLC5mYy1yb3cgLmZjLWhpZ2hsaWdodC1za2VsZXRvbiB0ZHtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9LmZjLXJvdyAuZmMtYmdldmVudC1za2VsZXRvbnt6LWluZGV4OjJ9LmZjLXJvdyAuZmMtaGlnaGxpZ2h0LXNrZWxldG9ue3otaW5kZXg6M30uZmMtcm93IC5mYy1jb250ZW50LXNrZWxldG9ue3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6NDtwYWRkaW5nLWJvdHRvbToycHh9LmZjLXJvdyAuZmMtaGVscGVyLXNrZWxldG9ue3otaW5kZXg6NX0uZmMtcm93IC5mYy1jb250ZW50LXNrZWxldG9uIHRkLC5mYy1yb3cgLmZjLWhlbHBlci1za2VsZXRvbiB0ZHtiYWNrZ3JvdW5kOjAgMDtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTowfS5mYy1yb3cgLmZjLWNvbnRlbnQtc2tlbGV0b24gdGJvZHkgdGQsLmZjLXJvdyAuZmMtaGVscGVyLXNrZWxldG9uIHRib2R5IHRke2JvcmRlci10b3A6MH0uZmMtc2Nyb2xsZXJ7LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2h9LmZjLXJvdy5mYy1yaWdpZCwuZmMtdGltZS1ncmlkLWV2ZW50e292ZXJmbG93OmhpZGRlbn0uZmMtc2Nyb2xsZXI+LmZjLWRheS1ncmlkLC5mYy1zY3JvbGxlcj4uZmMtdGltZS1ncmlke3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9LmZjLWV2ZW50e3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOi44NWVtO2xpbmUtaGVpZ2h0OjEuMztib3JkZXItcmFkaXVzOjNweDtib3JkZXI6MXB4IHNvbGlkICMzYTg3YWQ7Zm9udC13ZWlnaHQ6NDAwfS5mYy1ldmVudCwuZmMtZXZlbnQtZG90e2JhY2tncm91bmQtY29sb3I6IzNhODdhZH0uZmMtZXZlbnQsLmZjLWV2ZW50OmhvdmVyLC51aS13aWRnZXQgLmZjLWV2ZW50e2NvbG9yOiNmZmY7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmZjLW5vdC1hbGxvd2VkLC5mYy1ub3QtYWxsb3dlZCAuZmMtZXZlbnR7Y3Vyc29yOm5vdC1hbGxvd2VkfS5mYy1ldmVudCAuZmMtYmd7ei1pbmRleDoxO2JhY2tncm91bmQ6I2ZmZjtvcGFjaXR5Oi4yNX0uZmMtZXZlbnQgLmZjLWNvbnRlbnR7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoyfS5mYy1ldmVudCAuZmMtcmVzaXplcntwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjQ7ZGlzcGxheTpub25lfS5mYy1ldmVudC5mYy1hbGxvdy1tb3VzZS1yZXNpemUgLmZjLXJlc2l6ZXIsLmZjLWV2ZW50LmZjLXNlbGVjdGVkIC5mYy1yZXNpemVye2Rpc3BsYXk6YmxvY2t9LmZjLWV2ZW50LmZjLXNlbGVjdGVkIC5mYy1yZXNpemVyOmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6OTk5OTt0b3A6NTAlO2xlZnQ6NTAlO3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7bWFyZ2luLWxlZnQ6LTIwcHg7bWFyZ2luLXRvcDotMjBweH0uZmMtZXZlbnQuZmMtc2VsZWN0ZWR7ei1pbmRleDo5OTk5IWltcG9ydGFudDtib3gtc2hhZG93OjAgMnB4IDVweCByZ2JhKDAsMCwwLC4yKX0uZmMtZXZlbnQuZmMtc2VsZWN0ZWQuZmMtZHJhZ2dpbmd7Ym94LXNoYWRvdzowIDJweCA3cHggcmdiYSgwLDAsMCwuMyl9LmZjLWgtZXZlbnQuZmMtc2VsZWN0ZWQ6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDozO3RvcDotMTBweDtib3R0b206LTEwcHg7bGVmdDowO3JpZ2h0OjB9LmZjLWx0ciAuZmMtaC1ldmVudC5mYy1ub3Qtc3RhcnQsLmZjLXJ0bCAuZmMtaC1ldmVudC5mYy1ub3QtZW5ke21hcmdpbi1sZWZ0OjA7Ym9yZGVyLWxlZnQtd2lkdGg6MDtwYWRkaW5nLWxlZnQ6MXB4O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9LmZjLWx0ciAuZmMtaC1ldmVudC5mYy1ub3QtZW5kLC5mYy1ydGwgLmZjLWgtZXZlbnQuZmMtbm90LXN0YXJ0e21hcmdpbi1yaWdodDowO2JvcmRlci1yaWdodC13aWR0aDowO3BhZGRpbmctcmlnaHQ6MXB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjA7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MH0uZmMtbHRyIC5mYy1oLWV2ZW50IC5mYy1zdGFydC1yZXNpemVyLC5mYy1ydGwgLmZjLWgtZXZlbnQgLmZjLWVuZC1yZXNpemVye2N1cnNvcjp3LXJlc2l6ZTtsZWZ0Oi0xcHh9LmZjLWx0ciAuZmMtaC1ldmVudCAuZmMtZW5kLXJlc2l6ZXIsLmZjLXJ0bCAuZmMtaC1ldmVudCAuZmMtc3RhcnQtcmVzaXplcntjdXJzb3I6ZS1yZXNpemU7cmlnaHQ6LTFweH0uZmMtaC1ldmVudC5mYy1hbGxvdy1tb3VzZS1yZXNpemUgLmZjLXJlc2l6ZXJ7d2lkdGg6N3B4O3RvcDotMXB4O2JvdHRvbTotMXB4fS5mYy1oLWV2ZW50LmZjLXNlbGVjdGVkIC5mYy1yZXNpemVye2JvcmRlci1yYWRpdXM6NHB4O2JvcmRlci13aWR0aDoxcHg7d2lkdGg6NnB4O2hlaWdodDo2cHg7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci1jb2xvcjppbmhlcml0O2JhY2tncm91bmQ6I2ZmZjt0b3A6NTAlO21hcmdpbi10b3A6LTRweH0uZmMtbHRyIC5mYy1oLWV2ZW50LmZjLXNlbGVjdGVkIC5mYy1zdGFydC1yZXNpemVyLC5mYy1ydGwgLmZjLWgtZXZlbnQuZmMtc2VsZWN0ZWQgLmZjLWVuZC1yZXNpemVye21hcmdpbi1sZWZ0Oi00cHh9LmZjLWx0ciAuZmMtaC1ldmVudC5mYy1zZWxlY3RlZCAuZmMtZW5kLXJlc2l6ZXIsLmZjLXJ0bCAuZmMtaC1ldmVudC5mYy1zZWxlY3RlZCAuZmMtc3RhcnQtcmVzaXplcnttYXJnaW4tcmlnaHQ6LTRweH0uZmMtZGF5LWdyaWQtZXZlbnR7bWFyZ2luOjFweCAycHggMDtwYWRkaW5nOjAgMXB4fXRyOmZpcnN0LWNoaWxkPnRkPi5mYy1kYXktZ3JpZC1ldmVudHttYXJnaW4tdG9wOjJweH0uZmMtZGF5LWdyaWQtZXZlbnQuZmMtc2VsZWN0ZWQ6YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjE7dG9wOi0xcHg7cmlnaHQ6LTFweDtib3R0b206LTFweDtsZWZ0Oi0xcHg7YmFja2dyb3VuZDojMDAwO29wYWNpdHk6LjI1fS5mYy1kYXktZ3JpZC1ldmVudCAuZmMtY29udGVudHt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVufS5mYy1kYXktZ3JpZC1ldmVudCAuZmMtdGltZXtmb250LXdlaWdodDo3MDB9LmZjLWx0ciAuZmMtZGF5LWdyaWQtZXZlbnQuZmMtYWxsb3ctbW91c2UtcmVzaXplIC5mYy1zdGFydC1yZXNpemVyLC5mYy1ydGwgLmZjLWRheS1ncmlkLWV2ZW50LmZjLWFsbG93LW1vdXNlLXJlc2l6ZSAuZmMtZW5kLXJlc2l6ZXJ7bWFyZ2luLWxlZnQ6LTJweH0uZmMtbHRyIC5mYy1kYXktZ3JpZC1ldmVudC5mYy1hbGxvdy1tb3VzZS1yZXNpemUgLmZjLWVuZC1yZXNpemVyLC5mYy1ydGwgLmZjLWRheS1ncmlkLWV2ZW50LmZjLWFsbG93LW1vdXNlLXJlc2l6ZSAuZmMtc3RhcnQtcmVzaXplcnttYXJnaW4tcmlnaHQ6LTJweH1hLmZjLW1vcmV7bWFyZ2luOjFweCAzcHg7Zm9udC1zaXplOi44NWVtO2N1cnNvcjpwb2ludGVyO3RleHQtZGVjb3JhdGlvbjpub25lfWEuZmMtbW9yZTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5mYy1saW1pdGVke2Rpc3BsYXk6bm9uZX0uZmMtZGF5LWdyaWQgLmZjLXJvd3t6LWluZGV4OjF9LmZjLW1vcmUtcG9wb3Zlcnt6LWluZGV4OjI7d2lkdGg6MjIwcHh9LmZjLW1vcmUtcG9wb3ZlciAuZmMtZXZlbnQtY29udGFpbmVye3BhZGRpbmc6MTBweH0uZmMtbm93LWluZGljYXRvcntwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXI6MCBzb2xpZCByZWR9LmZjLXVuc2VsZWN0YWJsZXstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fS5mYy10b29sYmFyLmZjLWhlYWRlci10b29sYmFye21hcmdpbi1ib3R0b206MWVtfS5mYy10b29sYmFyLmZjLWZvb3Rlci10b29sYmFye21hcmdpbi10b3A6MWVtfS5mYy10b29sYmFyIC5mYy1sZWZ0e2Zsb2F0OmxlZnR9LmZjLXRvb2xiYXIgLmZjLXJpZ2h0e2Zsb2F0OnJpZ2h0fS5mYy10b29sYmFyIC5mYy1jZW50ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmZjIC5mYy10b29sYmFyPio+KntmbG9hdDpsZWZ0O21hcmdpbi1sZWZ0Oi43NWVtfS5mYyAuZmMtdG9vbGJhcj4qPjpmaXJzdC1jaGlsZHttYXJnaW4tbGVmdDowfS5mYy10b29sYmFyIGgye21hcmdpbjowfS5mYy10b29sYmFyIGJ1dHRvbntwb3NpdGlvbjpyZWxhdGl2ZX0uZmMtdG9vbGJhciAuZmMtc3RhdGUtaG92ZXIsLmZjLXRvb2xiYXIgLnVpLXN0YXRlLWhvdmVye3otaW5kZXg6Mn0uZmMtdG9vbGJhciAuZmMtc3RhdGUtZG93bnt6LWluZGV4OjN9LmZjLXRvb2xiYXIgLmZjLXN0YXRlLWFjdGl2ZSwuZmMtdG9vbGJhciAudWktc3RhdGUtYWN0aXZle3otaW5kZXg6NH0uZmMtdG9vbGJhciBidXR0b246Zm9jdXN7ei1pbmRleDo1fS5mYy12aWV3LWNvbnRhaW5lciAqLC5mYy12aWV3LWNvbnRhaW5lciA6YWZ0ZXIsLmZjLXZpZXctY29udGFpbmVyIDpiZWZvcmV7LXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94Oy1tb3otYm94LXNpemluZzpjb250ZW50LWJveDtib3gtc2l6aW5nOmNvbnRlbnQtYm94fS5mYy12aWV3LC5mYy12aWV3PnRhYmxle3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6MX0uZmMtYmFzaWNEYXktdmlldyAuZmMtY29udGVudC1za2VsZXRvbiwuZmMtYmFzaWNXZWVrLXZpZXcgLmZjLWNvbnRlbnQtc2tlbGV0b257cGFkZGluZy1ib3R0b206MWVtfS5mYy1iYXNpYy12aWV3IC5mYy1ib2R5IC5mYy1yb3d7bWluLWhlaWdodDo0ZW19LmZjLXJvdy5mYy1yaWdpZCAuZmMtY29udGVudC1za2VsZXRvbntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7cmlnaHQ6MH0uZmMtZGF5LXRvcC5mYy1vdGhlci1tb250aHtvcGFjaXR5Oi4zfS5mYy1iYXNpYy12aWV3IC5mYy1kYXktbnVtYmVyLC5mYy1iYXNpYy12aWV3IC5mYy13ZWVrLW51bWJlcntwYWRkaW5nOjJweH0uZmMtYmFzaWMtdmlldyB0aC5mYy1kYXktbnVtYmVyLC5mYy1iYXNpYy12aWV3IHRoLmZjLXdlZWstbnVtYmVye3BhZGRpbmc6MCAycHh9LmZjLWx0ciAuZmMtYmFzaWMtdmlldyAuZmMtZGF5LXRvcCAuZmMtZGF5LW51bWJlcntmbG9hdDpyaWdodH0uZmMtcnRsIC5mYy1iYXNpYy12aWV3IC5mYy1kYXktdG9wIC5mYy1kYXktbnVtYmVye2Zsb2F0OmxlZnR9LmZjLWx0ciAuZmMtYmFzaWMtdmlldyAuZmMtZGF5LXRvcCAuZmMtd2Vlay1udW1iZXJ7ZmxvYXQ6bGVmdDtib3JkZXItcmFkaXVzOjAgMCAzcHh9LmZjLXJ0bCAuZmMtYmFzaWMtdmlldyAuZmMtZGF5LXRvcCAuZmMtd2Vlay1udW1iZXJ7ZmxvYXQ6cmlnaHQ7Ym9yZGVyLXJhZGl1czowIDAgMCAzcHh9LmZjLWJhc2ljLXZpZXcgLmZjLWRheS10b3AgLmZjLXdlZWstbnVtYmVye21pbi13aWR0aDoxLjVlbTt0ZXh0LWFsaWduOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNmMmYyZjI7Y29sb3I6Z3JleX0uZmMtYmFzaWMtdmlldyB0ZC5mYy13ZWVrLW51bWJlcj4qe2Rpc3BsYXk6aW5saW5lLWJsb2NrO21pbi13aWR0aDoxLjI1ZW19LmZjLWFnZW5kYS12aWV3IC5mYy1kYXktZ3JpZHtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjJ9LmZjLWFnZW5kYS12aWV3IC5mYy1kYXktZ3JpZCAuZmMtcm93e21pbi1oZWlnaHQ6M2VtfS5mYy1hZ2VuZGEtdmlldyAuZmMtZGF5LWdyaWQgLmZjLXJvdyAuZmMtY29udGVudC1za2VsZXRvbntwYWRkaW5nLWJvdHRvbToxZW19LmZjIC5mYy1heGlze3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtwYWRkaW5nOjAgNHB4O3doaXRlLXNwYWNlOm5vd3JhcH0uZmMtbHRyIC5mYy1heGlze3RleHQtYWxpZ246cmlnaHR9LmZjLXJ0bCAuZmMtYXhpc3t0ZXh0LWFsaWduOmxlZnR9LnVpLXdpZGdldCB0ZC5mYy1heGlze2ZvbnQtd2VpZ2h0OjQwMH0uZmMtdGltZS1ncmlkLC5mYy10aW1lLWdyaWQtY29udGFpbmVye3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6MX0uZmMtdGltZS1ncmlke21pbi1oZWlnaHQ6MTAwJX0uZmMtdGltZS1ncmlkIHRhYmxle2JvcmRlcjowIGhpZGRlbiB0cmFuc3BhcmVudH0uZmMtdGltZS1ncmlkPi5mYy1iZ3t6LWluZGV4OjF9LmZjLXRpbWUtZ3JpZCAuZmMtc2xhdHMsLmZjLXRpbWUtZ3JpZD5ocntwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjJ9LmZjLXRpbWUtZ3JpZCAuZmMtY29udGVudC1jb2x7cG9zaXRpb246cmVsYXRpdmV9LmZjLXRpbWUtZ3JpZCAuZmMtY29udGVudC1za2VsZXRvbntwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjM7dG9wOjA7bGVmdDowO3JpZ2h0OjB9LmZjLXRpbWUtZ3JpZCAuZmMtYnVzaW5lc3MtY29udGFpbmVye3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6MX0uZmMtdGltZS1ncmlkIC5mYy1iZ2V2ZW50LWNvbnRhaW5lcntwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjJ9LmZjLXRpbWUtZ3JpZCAuZmMtaGlnaGxpZ2h0LWNvbnRhaW5lcnt6LWluZGV4OjM7cG9zaXRpb246cmVsYXRpdmV9LmZjLXRpbWUtZ3JpZCAuZmMtZXZlbnQtY29udGFpbmVye3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6NH0uZmMtdGltZS1ncmlkIC5mYy1ub3ctaW5kaWNhdG9yLWxpbmV7ei1pbmRleDo1fS5mYy10aW1lLWdyaWQgLmZjLWhlbHBlci1jb250YWluZXJ7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDo2fS5mYy10aW1lLWdyaWQgLmZjLXNsYXRzIHRke2hlaWdodDoxLjVlbTtib3JkZXItYm90dG9tOjB9LmZjLXRpbWUtZ3JpZCAuZmMtc2xhdHMgLmZjLW1pbm9yIHRke2JvcmRlci10b3Atc3R5bGU6ZG90dGVkfS5mYy10aW1lLWdyaWQgLmZjLXNsYXRzIC51aS13aWRnZXQtY29udGVudHtiYWNrZ3JvdW5kOjAgMH0uZmMtdGltZS1ncmlkIC5mYy1oaWdobGlnaHR7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3JpZ2h0OjB9LmZjLWx0ciAuZmMtdGltZS1ncmlkIC5mYy1ldmVudC1jb250YWluZXJ7bWFyZ2luOjAgMi41JSAwIDJweH0uZmMtcnRsIC5mYy10aW1lLWdyaWQgLmZjLWV2ZW50LWNvbnRhaW5lcnttYXJnaW46MCAycHggMCAyLjUlfS5mYy10aW1lLWdyaWQgLmZjLWJnZXZlbnQsLmZjLXRpbWUtZ3JpZCAuZmMtZXZlbnR7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxfS5mYy10aW1lLWdyaWQgLmZjLWJnZXZlbnR7bGVmdDowO3JpZ2h0OjB9LmZjLXYtZXZlbnQuZmMtbm90LXN0YXJ0e2JvcmRlci10b3Atd2lkdGg6MDtwYWRkaW5nLXRvcDoxcHg7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjB9LmZjLXYtZXZlbnQuZmMtbm90LWVuZHtib3JkZXItYm90dG9tLXdpZHRoOjA7cGFkZGluZy1ib3R0b206MXB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowfS5mYy10aW1lLWdyaWQtZXZlbnQuZmMtc2VsZWN0ZWR7b3ZlcmZsb3c6dmlzaWJsZX0uZmMtdGltZS1ncmlkLWV2ZW50LmZjLXNlbGVjdGVkIC5mYy1iZ3tkaXNwbGF5Om5vbmV9LmZjLXRpbWUtZ3JpZC1ldmVudCAuZmMtY29udGVudHtvdmVyZmxvdzpoaWRkZW59LmZjLXRpbWUtZ3JpZC1ldmVudCAuZmMtdGltZSwuZmMtdGltZS1ncmlkLWV2ZW50IC5mYy10aXRsZXtwYWRkaW5nOjAgMXB4fS5mYy10aW1lLWdyaWQtZXZlbnQgLmZjLXRpbWV7Zm9udC1zaXplOi44NWVtO3doaXRlLXNwYWNlOm5vd3JhcH0uZmMtdGltZS1ncmlkLWV2ZW50LmZjLXNob3J0IC5mYy1jb250ZW50e3doaXRlLXNwYWNlOm5vd3JhcH0uZmMtdGltZS1ncmlkLWV2ZW50LmZjLXNob3J0IC5mYy10aW1lLC5mYy10aW1lLWdyaWQtZXZlbnQuZmMtc2hvcnQgLmZjLXRpdGxle2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOnRvcH0uZmMtdGltZS1ncmlkLWV2ZW50LmZjLXNob3J0IC5mYy10aW1lIHNwYW57ZGlzcGxheTpub25lfS5mYy10aW1lLWdyaWQtZXZlbnQuZmMtc2hvcnQgLmZjLXRpbWU6YmVmb3Jle2NvbnRlbnQ6YXR0cihkYXRhLXN0YXJ0KX0uZmMtdGltZS1ncmlkLWV2ZW50LmZjLXNob3J0IC5mYy10aW1lOmFmdGVye2NvbnRlbnQ6IlwwMDBBMC1cMDAwQTAifS5mYy10aW1lLWdyaWQtZXZlbnQuZmMtc2hvcnQgLmZjLXRpdGxle2ZvbnQtc2l6ZTouODVlbTtwYWRkaW5nOjB9LmZjLXRpbWUtZ3JpZC1ldmVudC5mYy1hbGxvdy1tb3VzZS1yZXNpemUgLmZjLXJlc2l6ZXJ7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7aGVpZ2h0OjhweDtvdmVyZmxvdzpoaWRkZW47bGluZS1oZWlnaHQ6OHB4O2ZvbnQtc2l6ZToxMXB4O2ZvbnQtZmFtaWx5Om1vbm9zcGFjZTt0ZXh0LWFsaWduOmNlbnRlcjtjdXJzb3I6cy1yZXNpemV9LmZjLXRpbWUtZ3JpZC1ldmVudC5mYy1hbGxvdy1tb3VzZS1yZXNpemUgLmZjLXJlc2l6ZXI6YWZ0ZXJ7Y29udGVudDoiPSJ9LmZjLXRpbWUtZ3JpZC1ldmVudC5mYy1zZWxlY3RlZCAuZmMtcmVzaXplcntib3JkZXItcmFkaXVzOjVweDtib3JkZXItd2lkdGg6MXB4O3dpZHRoOjhweDtoZWlnaHQ6OHB4O2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItY29sb3I6aW5oZXJpdDtiYWNrZ3JvdW5kOiNmZmY7bGVmdDo1MCU7bWFyZ2luLWxlZnQ6LTVweDtib3R0b206LTVweH0uZmMtdGltZS1ncmlkIC5mYy1ub3ctaW5kaWNhdG9yLWxpbmV7Ym9yZGVyLXRvcC13aWR0aDoxcHg7bGVmdDowO3JpZ2h0OjB9LmZjLXRpbWUtZ3JpZCAuZmMtbm93LWluZGljYXRvci1hcnJvd3ttYXJnaW4tdG9wOi01cHh9LmZjLWx0ciAuZmMtdGltZS1ncmlkIC5mYy1ub3ctaW5kaWNhdG9yLWFycm93e2xlZnQ6MDtib3JkZXItd2lkdGg6NXB4IDAgNXB4IDZweDtib3JkZXItdG9wLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1ib3R0b20tY29sb3I6dHJhbnNwYXJlbnR9LmZjLXJ0bCAuZmMtdGltZS1ncmlkIC5mYy1ub3ctaW5kaWNhdG9yLWFycm93e3JpZ2h0OjA7Ym9yZGVyLXdpZHRoOjVweCA2cHggNXB4IDA7Ym9yZGVyLXRvcC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50fS5mYy1ldmVudC1kb3R7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTBweDtoZWlnaHQ6MTBweDtib3JkZXItcmFkaXVzOjVweH0uZmMtcnRsIC5mYy1saXN0LXZpZXd7ZGlyZWN0aW9uOnJ0bH0uZmMtbGlzdC12aWV3e2JvcmRlci13aWR0aDoxcHg7Ym9yZGVyLXN0eWxlOnNvbGlkfS5mYyAuZmMtbGlzdC10YWJsZXt0YWJsZS1sYXlvdXQ6YXV0b30uZmMtbGlzdC10YWJsZSB0ZHtib3JkZXItd2lkdGg6MXB4IDAgMDtwYWRkaW5nOjhweCAxNHB4fS5mYy1saXN0LXRhYmxlIHRyOmZpcnN0LWNoaWxkIHRke2JvcmRlci10b3Atd2lkdGg6MH0uZmMtbGlzdC1oZWFkaW5ne2JvcmRlci1ib3R0b20td2lkdGg6MXB4fS5mYy1saXN0LWhlYWRpbmcgdGR7Zm9udC13ZWlnaHQ6NzAwfS5mYy1sdHIgLmZjLWxpc3QtaGVhZGluZy1tYWlue2Zsb2F0OmxlZnR9LmZjLWx0ciAuZmMtbGlzdC1oZWFkaW5nLWFsdCwuZmMtcnRsIC5mYy1saXN0LWhlYWRpbmctbWFpbntmbG9hdDpyaWdodH0uZmMtcnRsIC5mYy1saXN0LWhlYWRpbmctYWx0e2Zsb2F0OmxlZnR9LmZjLWxpc3QtaXRlbS5mYy1oYXMtdXJse2N1cnNvcjpwb2ludGVyfS5mYy1saXN0LWl0ZW06aG92ZXIgdGR7YmFja2dyb3VuZC1jb2xvcjojZjVmNWY1fS5mYy1saXN0LWl0ZW0tbWFya2VyLC5mYy1saXN0LWl0ZW0tdGltZXt3aGl0ZS1zcGFjZTpub3dyYXA7d2lkdGg6MXB4fS5mYy1sdHIgLmZjLWxpc3QtaXRlbS1tYXJrZXJ7cGFkZGluZy1yaWdodDowfS5mYy1ydGwgLmZjLWxpc3QtaXRlbS1tYXJrZXJ7cGFkZGluZy1sZWZ0OjB9LmZjLWxpc3QtaXRlbS10aXRsZSBhe3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOmluaGVyaXR9LmZjLWxpc3QtaXRlbS10aXRsZSBhW2hyZWZdOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LmZjLWxpc3QtZW1wdHktd3JhcDJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjB9LmZjLWxpc3QtZW1wdHktd3JhcDF7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtkaXNwbGF5OnRhYmxlfS5mYy1saXN0LWVtcHR5e2Rpc3BsYXk6dGFibGUtY2VsbDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7dGV4dC1hbGlnbjpjZW50ZXJ9LmZjLXVudGhlbWVkIC5mYy1saXN0LWVtcHR5e2JhY2tncm91bmQtY29sb3I6I2VlZX0=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/fullcalendar.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIEZ1bGxDYWxlbmRhciB2My4zLjEKICogRG9jcyAmIExpY2Vuc2U6IGh0dHBzOi8vZnVsbGNhbGVuZGFyLmlvLwogKiAoYykgMjAxNyBBZGFtIFNoYXcKICovCiFmdW5jdGlvbih0KXsiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbImpxdWVyeSIsIm1vbWVudCJdLHQpOiJvYmplY3QiPT10eXBlb2YgZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz10KHJlcXVpcmUoImpxdWVyeSIpLHJlcXVpcmUoIm1vbWVudCIpKTp0KGpRdWVyeSxtb21lbnQpfShmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGl0KHQsUXQpfWZ1bmN0aW9uIGkodCxlKXtlLmxlZnQmJnQuY3NzKHsiYm9yZGVyLWxlZnQtd2lkdGgiOjEsIm1hcmdpbi1sZWZ0IjplLmxlZnQtMX0pLGUucmlnaHQmJnQuY3NzKHsiYm9yZGVyLXJpZ2h0LXdpZHRoIjoxLCJtYXJnaW4tcmlnaHQiOmUucmlnaHQtMX0pfWZ1bmN0aW9uIHIodCl7dC5jc3MoeyJtYXJnaW4tbGVmdCI6IiIsIm1hcmdpbi1yaWdodCI6IiIsImJvcmRlci1sZWZ0LXdpZHRoIjoiIiwiYm9yZGVyLXJpZ2h0LXdpZHRoIjoiIn0pfWZ1bmN0aW9uIHMoKXt0KCJib2R5IikuYWRkQ2xhc3MoImZjLW5vdC1hbGxvd2VkIil9ZnVuY3Rpb24gbygpe3QoImJvZHkiKS5yZW1vdmVDbGFzcygiZmMtbm90LWFsbG93ZWQiKX1mdW5jdGlvbiBsKGUsbixpKXt2YXIgcj1NYXRoLmZsb29yKG4vZS5sZW5ndGgpLHM9TWF0aC5mbG9vcihuLXIqKGUubGVuZ3RoLTEpKSxvPVtdLGw9W10sdT1bXSxjPTA7YShlKSxlLmVhY2goZnVuY3Rpb24obixpKXt2YXIgYT1uPT09ZS5sZW5ndGgtMT9zOnIsZD10KGkpLm91dGVySGVpZ2h0KCEwKTtkPGE/KG8ucHVzaChpKSxsLnB1c2goZCksdS5wdXNoKHQoaSkuaGVpZ2h0KCkpKTpjKz1kfSksaSYmKG4tPWMscj1NYXRoLmZsb29yKG4vby5sZW5ndGgpLHM9TWF0aC5mbG9vcihuLXIqKG8ubGVuZ3RoLTEpKSksdChvKS5lYWNoKGZ1bmN0aW9uKGUsbil7dmFyIGk9ZT09PW8ubGVuZ3RoLTE/czpyLGE9bFtlXSxjPXVbZV0sZD1pLShhLWMpO2E8aSYmdChuKS5oZWlnaHQoZCl9KX1mdW5jdGlvbiBhKHQpe3QuaGVpZ2h0KCIiKX1mdW5jdGlvbiB1KGUpe3ZhciBuPTA7cmV0dXJuIGUuZmluZCgiPiAqIikuZWFjaChmdW5jdGlvbihlLGkpe3ZhciByPXQoaSkub3V0ZXJXaWR0aCgpO3I+biYmKG49cil9KSxuKyssZS53aWR0aChuKSxufWZ1bmN0aW9uIGModCxlKXt2YXIgbixpPXQuYWRkKGUpO3JldHVybiBpLmNzcyh7cG9zaXRpb246InJlbGF0aXZlIixsZWZ0Oi0xfSksbj10Lm91dGVySGVpZ2h0KCktZS5vdXRlckhlaWdodCgpLGkuY3NzKHtwb3NpdGlvbjoiIixsZWZ0OiIifSksbn1mdW5jdGlvbiBkKGUpe3ZhciBuPWUuY3NzKCJwb3NpdGlvbiIpLGk9ZS5wYXJlbnRzKCkuZmlsdGVyKGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKTtyZXR1cm4vKGF1dG98c2Nyb2xsKS8udGVzdChlLmNzcygib3ZlcmZsb3ciKStlLmNzcygib3ZlcmZsb3cteSIpK2UuY3NzKCJvdmVyZmxvdy14IikpfSkuZXEoMCk7cmV0dXJuImZpeGVkIiE9PW4mJmkubGVuZ3RoP2k6dChlWzBdLm93bmVyRG9jdW1lbnR8fGRvY3VtZW50KX1mdW5jdGlvbiBoKHQsZSl7dmFyIG49dC5vZmZzZXQoKSxpPW4ubGVmdC0oZT9lLmxlZnQ6MCkscj1uLnRvcC0oZT9lLnRvcDowKTtyZXR1cm57bGVmdDppLHJpZ2h0OmkrdC5vdXRlcldpZHRoKCksdG9wOnIsYm90dG9tOnIrdC5vdXRlckhlaWdodCgpfX1mdW5jdGlvbiBmKHQsZSl7dmFyIG49dC5vZmZzZXQoKSxpPXAodCkscj1uLmxlZnQrUyh0LCJib3JkZXItbGVmdC13aWR0aCIpK2kubGVmdC0oZT9lLmxlZnQ6MCkscz1uLnRvcCtTKHQsImJvcmRlci10b3Atd2lkdGgiKStpLnRvcC0oZT9lLnRvcDowKTtyZXR1cm57bGVmdDpyLHJpZ2h0OnIrdFswXS5jbGllbnRXaWR0aCx0b3A6cyxib3R0b206cyt0WzBdLmNsaWVudEhlaWdodH19ZnVuY3Rpb24gZyh0LGUpe3ZhciBuPXQub2Zmc2V0KCksaT1uLmxlZnQrUyh0LCJib3JkZXItbGVmdC13aWR0aCIpK1ModCwicGFkZGluZy1sZWZ0IiktKGU/ZS5sZWZ0OjApLHI9bi50b3ArUyh0LCJib3JkZXItdG9wLXdpZHRoIikrUyh0LCJwYWRkaW5nLXRvcCIpLShlP2UudG9wOjApO3JldHVybntsZWZ0OmkscmlnaHQ6aSt0LndpZHRoKCksdG9wOnIsYm90dG9tOnIrdC5oZWlnaHQoKX19ZnVuY3Rpb24gcCh0KXt2YXIgZSxuPXRbMF0ub2Zmc2V0V2lkdGgtdFswXS5jbGllbnRXaWR0aCxpPXRbMF0ub2Zmc2V0SGVpZ2h0LXRbMF0uY2xpZW50SGVpZ2h0O3JldHVybiBuPXYobiksaT12KGkpLGU9e2xlZnQ6MCxyaWdodDowLHRvcDowLGJvdHRvbTppfSxtKCkmJiJydGwiPT10LmNzcygiZGlyZWN0aW9uIik/ZS5sZWZ0PW46ZS5yaWdodD1uLGV9ZnVuY3Rpb24gdih0KXtyZXR1cm4gdD1NYXRoLm1heCgwLHQpLHQ9TWF0aC5yb3VuZCh0KX1mdW5jdGlvbiBtKCl7cmV0dXJuIG51bGw9PT1YdCYmKFh0PXkoKSksWHR9ZnVuY3Rpb24geSgpe3ZhciBlPXQoIjxkaXY+PGRpdi8+PC9kaXY+IikuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDotMWUzLGxlZnQ6MCxib3JkZXI6MCxwYWRkaW5nOjAsb3ZlcmZsb3c6InNjcm9sbCIsZGlyZWN0aW9uOiJydGwifSkuYXBwZW5kVG8oImJvZHkiKSxuPWUuY2hpbGRyZW4oKSxpPW4ub2Zmc2V0KCkubGVmdD5lLm9mZnNldCgpLmxlZnQ7cmV0dXJuIGUucmVtb3ZlKCksaX1mdW5jdGlvbiBTKHQsZSl7cmV0dXJuIHBhcnNlRmxvYXQodC5jc3MoZSkpfHwwfWZ1bmN0aW9uIHcodCl7cmV0dXJuIDE9PXQud2hpY2gmJiF0LmN0cmxLZXl9ZnVuY3Rpb24gYih0KXt2YXIgZT10Lm9yaWdpbmFsRXZlbnQudG91Y2hlcztyZXR1cm4gZSYmZS5sZW5ndGg/ZVswXS5wYWdlWDp0LnBhZ2VYfWZ1bmN0aW9uIEUodCl7dmFyIGU9dC5vcmlnaW5hbEV2ZW50LnRvdWNoZXM7cmV0dXJuIGUmJmUubGVuZ3RoP2VbMF0ucGFnZVk6dC5wYWdlWX1mdW5jdGlvbiBEKHQpe3JldHVybi9edG91Y2gvLnRlc3QodC50eXBlKX1mdW5jdGlvbiBUKHQpe3QuYWRkQ2xhc3MoImZjLXVuc2VsZWN0YWJsZSIpLm9uKCJzZWxlY3RzdGFydCIsSCl9ZnVuY3Rpb24gQyh0KXt0LnJlbW92ZUNsYXNzKCJmYy11bnNlbGVjdGFibGUiKS5vZmYoInNlbGVjdHN0YXJ0IixIKX1mdW5jdGlvbiBIKHQpe3QucHJldmVudERlZmF1bHQoKX1mdW5jdGlvbiBSKHQsZSl7dmFyIG49e2xlZnQ6TWF0aC5tYXgodC5sZWZ0LGUubGVmdCkscmlnaHQ6TWF0aC5taW4odC5yaWdodCxlLnJpZ2h0KSx0b3A6TWF0aC5tYXgodC50b3AsZS50b3ApLGJvdHRvbTpNYXRoLm1pbih0LmJvdHRvbSxlLmJvdHRvbSl9O3JldHVybiBuLmxlZnQ8bi5yaWdodCYmbi50b3A8bi5ib3R0b20mJm59ZnVuY3Rpb24geCh0LGUpe3JldHVybntsZWZ0Ok1hdGgubWluKE1hdGgubWF4KHQubGVmdCxlLmxlZnQpLGUucmlnaHQpLHRvcDpNYXRoLm1pbihNYXRoLm1heCh0LnRvcCxlLnRvcCksZS5ib3R0b20pfX1mdW5jdGlvbiBJKHQpe3JldHVybntsZWZ0Oih0LmxlZnQrdC5yaWdodCkvMix0b3A6KHQudG9wK3QuYm90dG9tKS8yfX1mdW5jdGlvbiBrKHQsZSl7cmV0dXJue2xlZnQ6dC5sZWZ0LWUubGVmdCx0b3A6dC50b3AtZS50b3B9fWZ1bmN0aW9uIEwoZSl7dmFyIG4saSxyPVtdLHM9W107Zm9yKCJzdHJpbmciPT10eXBlb2YgZT9zPWUuc3BsaXQoL1xzKixccyovKToiZnVuY3Rpb24iPT10eXBlb2YgZT9zPVtlXTp0LmlzQXJyYXkoZSkmJihzPWUpLG49MDtuPHMubGVuZ3RoO24rKylpPXNbbl0sInN0cmluZyI9PXR5cGVvZiBpP3IucHVzaCgiLSI9PWkuY2hhckF0KDApP3tmaWVsZDppLnN1YnN0cmluZygxKSxvcmRlcjotMX06e2ZpZWxkOmksb3JkZXI6MX0pOiJmdW5jdGlvbiI9PXR5cGVvZiBpJiZyLnB1c2goe2Z1bmM6aX0pO3JldHVybiByfWZ1bmN0aW9uIE0odCxlLG4pe3ZhciBpLHI7Zm9yKGk9MDtpPG4ubGVuZ3RoO2krKylpZihyPUIodCxlLG5baV0pKXJldHVybiByO3JldHVybiAwfWZ1bmN0aW9uIEIodCxlLG4pe3JldHVybiBuLmZ1bmM/bi5mdW5jKHQsZSk6Rih0W24uZmllbGRdLGVbbi5maWVsZF0pKihuLm9yZGVyfHwxKX1mdW5jdGlvbiBGKGUsbil7cmV0dXJuIGV8fG4/bnVsbD09bj8tMTpudWxsPT1lPzE6InN0cmluZyI9PT10LnR5cGUoZSl8fCJzdHJpbmciPT09dC50eXBlKG4pP1N0cmluZyhlKS5sb2NhbGVDb21wYXJlKFN0cmluZyhuKSk6ZS1uOjB9ZnVuY3Rpb24gTih0LGUpe3ZhciBuLGkscixzLG89dC5zdGFydCxsPXQuZW5kLGE9ZS5zdGFydCx1PWUuZW5kO2lmKGw+YSYmbzx1KXJldHVybiBvPj1hPyhuPW8uY2xvbmUoKSxyPSEwKToobj1hLmNsb25lKCkscj0hMSksbDw9dT8oaT1sLmNsb25lKCkscz0hMCk6KGk9dS5jbG9uZSgpLHM9ITEpLHtzdGFydDpuLGVuZDppLGlzU3RhcnQ6cixpc0VuZDpzfX1mdW5jdGlvbiB6KHQsbil7cmV0dXJuIGUuZHVyYXRpb24oe2RheXM6dC5jbG9uZSgpLnN0cmlwVGltZSgpLmRpZmYobi5jbG9uZSgpLnN0cmlwVGltZSgpLCJkYXlzIiksbXM6dC50aW1lKCktbi50aW1lKCl9KX1mdW5jdGlvbiBBKHQsbil7cmV0dXJuIGUuZHVyYXRpb24oe2RheXM6dC5jbG9uZSgpLnN0cmlwVGltZSgpLmRpZmYobi5jbG9uZSgpLnN0cmlwVGltZSgpLCJkYXlzIil9KX1mdW5jdGlvbiBHKHQsbixpKXtyZXR1cm4gZS5kdXJhdGlvbihNYXRoLnJvdW5kKHQuZGlmZihuLGksITApKSxpKX1mdW5jdGlvbiBPKHQsZSl7dmFyIG4saSxyO2ZvcihuPTA7bjxKdC5sZW5ndGgmJihpPUp0W25dLHI9UChpLHQsZSksIShyPj0xJiZ2dChyKSkpO24rKyk7cmV0dXJuIGl9ZnVuY3Rpb24gVih0LGUpe3ZhciBuPU8odCk7cmV0dXJuIndlZWsiPT09biYmIm9iamVjdCI9PXR5cGVvZiBlJiZlLmRheXMmJihuPSJkYXkiKSxufWZ1bmN0aW9uIFAodCxuLGkpe3JldHVybiBudWxsIT1pP2kuZGlmZihuLHQsITApOmUuaXNEdXJhdGlvbihuKT9uLmFzKHQpOm4uZW5kLmRpZmYobi5zdGFydCx0LCEwKX1mdW5jdGlvbiBfKHQsZSxuKXt2YXIgaTtyZXR1cm4gdHQobik/KGUtdCkvbjooaT1uLmFzTW9udGhzKCksTWF0aC5hYnMoaSk+PTEmJnZ0KGkpP2UuZGlmZih0LCJtb250aHMiLCEwKS9pOmUuZGlmZih0LCJkYXlzIiwhMCkvbi5hc0RheXMoKSl9ZnVuY3Rpb24gWSh0LGUpe3ZhciBuLGk7cmV0dXJuIHR0KHQpfHx0dChlKT90L2U6KG49dC5hc01vbnRocygpLGk9ZS5hc01vbnRocygpLE1hdGguYWJzKG4pPj0xJiZ2dChuKSYmTWF0aC5hYnMoaSk+PTEmJnZ0KGkpP24vaTp0LmFzRGF5cygpL2UuYXNEYXlzKCkpfWZ1bmN0aW9uIFcodCxuKXt2YXIgaTtyZXR1cm4gdHQodCk/ZS5kdXJhdGlvbih0Km4pOihpPXQuYXNNb250aHMoKSxNYXRoLmFicyhpKT49MSYmdnQoaSk/ZS5kdXJhdGlvbih7bW9udGhzOmkqbn0pOmUuZHVyYXRpb24oe2RheXM6dC5hc0RheXMoKSpufSkpfWZ1bmN0aW9uIFUodCl7cmV0dXJue3N0YXJ0OnQuc3RhcnQuY2xvbmUoKSxlbmQ6dC5lbmQuY2xvbmUoKX19ZnVuY3Rpb24gaih0LGUpe3JldHVybiB0PVUodCksZS5zdGFydCYmKHQuc3RhcnQ9cSh0LnN0YXJ0LGUpKSxlLmVuZCYmKHQuZW5kPUsodC5lbmQsZS5lbmQpKSx0fWZ1bmN0aW9uIHEodCxlKXtyZXR1cm4gdD10LmNsb25lKCksZS5zdGFydCYmKHQ9Sih0LGUuc3RhcnQpKSxlLmVuZCYmdD49ZS5lbmQmJih0PWUuZW5kLmNsb25lKCkuc3VidHJhY3QoMSkpLHR9ZnVuY3Rpb24gWih0LGUpe3JldHVybighZS5zdGFydHx8dD49ZS5zdGFydCkmJighZS5lbmR8fHQ8ZS5lbmQpfWZ1bmN0aW9uICQodCxlKXtyZXR1cm4oIWUuc3RhcnR8fHQuZW5kPj1lLnN0YXJ0KSYmKCFlLmVuZHx8dC5zdGFydDxlLmVuZCl9ZnVuY3Rpb24gUSh0LGUpe3JldHVybighZS5zdGFydHx8dC5zdGFydD49ZS5zdGFydCkmJighZS5lbmR8fHQuZW5kPD1lLmVuZCl9ZnVuY3Rpb24gWCh0LGUpe3JldHVybih0LnN0YXJ0JiZlLnN0YXJ0JiZ0LnN0YXJ0LmlzU2FtZShlLnN0YXJ0KXx8IXQuc3RhcnQmJiFlLnN0YXJ0KSYmKHQuZW5kJiZlLmVuZCYmdC5lbmQuaXNTYW1lKGUuZW5kKXx8IXQuZW5kJiYhZS5lbmQpfWZ1bmN0aW9uIEsodCxlKXtyZXR1cm4odC5pc0JlZm9yZShlKT90OmUpLmNsb25lKCl9ZnVuY3Rpb24gSih0LGUpe3JldHVybih0LmlzQWZ0ZXIoZSk/dDplKS5jbG9uZSgpfWZ1bmN0aW9uIHR0KHQpe3JldHVybiBCb29sZWFuKHQuaG91cnMoKXx8dC5taW51dGVzKCl8fHQuc2Vjb25kcygpfHx0Lm1pbGxpc2Vjb25kcygpKX1mdW5jdGlvbiBldCh0KXtyZXR1cm4iW29iamVjdCBEYXRlXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl8fHQgaW5zdGFuY2VvZiBEYXRlfWZ1bmN0aW9uIG50KHQpe3JldHVybi9eXGQrXDpcZCsoPzpcOlxkK1wuPyg/OlxkezN9KT8pPyQvLnRlc3QodCl9ZnVuY3Rpb24gaXQodCxlKXt2YXIgbixpLHIscyxvLGwsYT17fTtpZihlKWZvcihuPTA7bjxlLmxlbmd0aDtuKyspe2ZvcihpPWVbbl0scj1bXSxzPXQubGVuZ3RoLTE7cz49MDtzLS0paWYobz10W3NdW2ldLCJvYmplY3QiPT10eXBlb2YgbylyLnVuc2hpZnQobyk7ZWxzZSBpZih2b2lkIDAhPT1vKXthW2ldPW87YnJlYWt9ci5sZW5ndGgmJihhW2ldPWl0KHIpKX1mb3Iobj10Lmxlbmd0aC0xO24+PTA7bi0tKXtsPXRbbl07Zm9yKGkgaW4gbClpIGluIGF8fChhW2ldPWxbaV0pfXJldHVybiBhfWZ1bmN0aW9uIHJ0KHQpe3ZhciBlPWZ1bmN0aW9uKCl7fTtyZXR1cm4gZS5wcm90b3R5cGU9dCxuZXcgZX1mdW5jdGlvbiBzdCh0LGUpe2Zvcih2YXIgbiBpbiB0KW90KHQsbikmJihlW25dPXRbbl0pfWZ1bmN0aW9uIG90KHQsZSl7cmV0dXJuIHRlLmNhbGwodCxlKX1mdW5jdGlvbiBsdChlKXtyZXR1cm4vdW5kZWZpbmVkfG51bGx8Ym9vbGVhbnxudW1iZXJ8c3RyaW5nLy50ZXN0KHQudHlwZShlKSl9ZnVuY3Rpb24gYXQoZSxuLGkpe2lmKHQuaXNGdW5jdGlvbihlKSYmKGU9W2VdKSxlKXt2YXIgcixzO2ZvcihyPTA7cjxlLmxlbmd0aDtyKyspcz1lW3JdLmFwcGx5KG4saSl8fHM7cmV0dXJuIHN9fWZ1bmN0aW9uIHV0KCl7Zm9yKHZhciB0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKylpZih2b2lkIDAhPT1hcmd1bWVudHNbdF0pcmV0dXJuIGFyZ3VtZW50c1t0XX1mdW5jdGlvbiBjdCh0KXtyZXR1cm4odCsiIikucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLycvZywiJiMwMzk7IikucmVwbGFjZSgvIi9nLCImcXVvdDsiKS5yZXBsYWNlKC9cbi9nLCI8YnIgLz4iKX1mdW5jdGlvbiBkdCh0KXtyZXR1cm4gdC5yZXBsYWNlKC8mLio/Oy9nLCIiKX1mdW5jdGlvbiBodChlKXt2YXIgbj1bXTtyZXR1cm4gdC5lYWNoKGUsZnVuY3Rpb24odCxlKXtudWxsIT1lJiZuLnB1c2godCsiOiIrZSl9KSxuLmpvaW4oIjsiKX1mdW5jdGlvbiBmdChlKXt2YXIgbj1bXTtyZXR1cm4gdC5lYWNoKGUsZnVuY3Rpb24odCxlKXtudWxsIT1lJiZuLnB1c2godCsnPSInK2N0KGUpKyciJyl9KSxuLmpvaW4oIiAiKX1mdW5jdGlvbiBndCh0KXtyZXR1cm4gdC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpfWZ1bmN0aW9uIHB0KHQsZSl7cmV0dXJuIHQtZX1mdW5jdGlvbiB2dCh0KXtyZXR1cm4gdCUxPT09MH1mdW5jdGlvbiBtdCh0LGUpe3ZhciBuPXRbZV07cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG4uYXBwbHkodCxhcmd1bWVudHMpfX1mdW5jdGlvbiB5dCh0LGUsbil7dmFyIGkscixzLG8sbCxhPWZ1bmN0aW9uKCl7dmFyIHU9K25ldyBEYXRlLW87dTxlP2k9c2V0VGltZW91dChhLGUtdSk6KGk9bnVsbCxufHwobD10LmFwcGx5KHMscikscz1yPW51bGwpKX07cmV0dXJuIGZ1bmN0aW9uKCl7cz10aGlzLHI9YXJndW1lbnRzLG89K25ldyBEYXRlO3ZhciB1PW4mJiFpO3JldHVybiBpfHwoaT1zZXRUaW1lb3V0KGEsZSkpLHUmJihsPXQuYXBwbHkocyxyKSxzPXI9bnVsbCksbH19ZnVuY3Rpb24gU3QobixpLHIpe3ZhciBzLG8sbCxhLHU9blswXSxjPTE9PW4ubGVuZ3RoJiYic3RyaW5nIj09dHlwZW9mIHU7cmV0dXJuIGUuaXNNb21lbnQodSl8fGV0KHUpfHx2b2lkIDA9PT11P2E9ZS5hcHBseShudWxsLG4pOihzPSExLG89ITEsYz9lZS50ZXN0KHUpPyh1Kz0iLTAxIixuPVt1XSxzPSEwLG89ITApOihsPW5lLmV4ZWModSkpJiYocz0hbFs1XSxvPSEwKTp0LmlzQXJyYXkodSkmJihvPSEwKSxhPWl8fHM/ZS51dGMuYXBwbHkoZSxuKTplLmFwcGx5KG51bGwsbikscz8oYS5fYW1iaWdUaW1lPSEwLGEuX2FtYmlnWm9uZT0hMCk6ciYmKG8/YS5fYW1iaWdab25lPSEwOmMmJmEudXRjT2Zmc2V0KHUpKSksYS5fZnVsbENhbGVuZGFyPSEwLGF9ZnVuY3Rpb24gd3QoKXt9ZnVuY3Rpb24gYnQodCxlKXt2YXIgbjtyZXR1cm4gb3QoZSwiY29uc3RydWN0b3IiKSYmKG49ZS5jb25zdHJ1Y3RvciksImZ1bmN0aW9uIiE9dHlwZW9mIG4mJihuPWUuY29uc3RydWN0b3I9ZnVuY3Rpb24oKXt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pLG4ucHJvdG90eXBlPXJ0KHQucHJvdG90eXBlKSxzdChlLG4ucHJvdG90eXBlKSxzdCh0LG4pLG59ZnVuY3Rpb24gRXQodCxlKXtzdChlLHQucHJvdG90eXBlKX1mdW5jdGlvbiBEdChlKXt2YXIgbj10LkRlZmVycmVkKCksaT1uLnByb21pc2UoKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZSYmZShmdW5jdGlvbih0KXtEdC5pbW1lZGlhdGUmJihpLl92YWx1ZT10KSxuLnJlc29sdmUodCl9LGZ1bmN0aW9uKCl7bi5yZWplY3QoKX0pLER0LmltbWVkaWF0ZSl7dmFyIHI9aS50aGVuO2kudGhlbj1mdW5jdGlvbih0LGUpe3ZhciBuPWkuc3RhdGUoKTtpZigicmVzb2x2ZWQiPT09bil7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJuIER0LnJlc29sdmUodChpLl92YWx1ZSkpfWVsc2UgaWYoInJlamVjdGVkIj09PW4mJiJmdW5jdGlvbiI9PXR5cGVvZiBlKXJldHVybiBlKCksaTtyZXR1cm4gci5jYWxsKGksdCxlKX19cmV0dXJuIGl9ZnVuY3Rpb24gVHQodCl7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gbmV3IER0KGZ1bmN0aW9uKGUpe3ZhciBpPWZ1bmN0aW9uKCl7RHQucmVzb2x2ZSh0KCkpLnRoZW4oZSkudGhlbihmdW5jdGlvbigpe24uc2hpZnQoKSxuLmxlbmd0aCYmblswXSgpfSl9O24ucHVzaChpKSwxPT09bi5sZW5ndGgmJmkoKX0pfXZhciBuPVtdO3RoaXMuYWRkPSJudW1iZXIiPT10eXBlb2YgdD95dChlLHQpOmUsdGhpcy5hZGRRdWlja2x5PWV9ZnVuY3Rpb24gQ3QodCxlKXtyZXR1cm4hdCYmIWV8fCEoIXR8fCFlKSYmKHQuY29tcG9uZW50PT09ZS5jb21wb25lbnQmJkh0KHQsZSkmJkh0KGUsdCkpfWZ1bmN0aW9uIEh0KHQsZSl7Zm9yKHZhciBuIGluIHQpaWYoIS9eKGNvbXBvbmVudHxsZWZ0fHJpZ2h0fHRvcHxib3R0b20pJC8udGVzdChuKSYmdFtuXSE9PWVbbl0pcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gUnQodCl7cmV0dXJue3N0YXJ0OnQuc3RhcnQuY2xvbmUoKSxlbmQ6dC5lbmQ/dC5lbmQuY2xvbmUoKTpudWxsLGFsbERheTp0LmFsbERheX19ZnVuY3Rpb24geHQodCl7dmFyIGU9a3QodCk7cmV0dXJuImJhY2tncm91bmQiPT09ZXx8ImludmVyc2UtYmFja2dyb3VuZCI9PT1lfWZ1bmN0aW9uIEl0KHQpe3JldHVybiJpbnZlcnNlLWJhY2tncm91bmQiPT09a3QodCl9ZnVuY3Rpb24ga3QodCl7cmV0dXJuIHV0KCh0LnNvdXJjZXx8e30pLnJlbmRlcmluZyx0LnJlbmRlcmluZyl9ZnVuY3Rpb24gTHQodCl7dmFyIGUsbixpPXt9O2ZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspbj10W2VdLChpW24uX2lkXXx8KGlbbi5faWRdPVtdKSkucHVzaChuKTtyZXR1cm4gaX1mdW5jdGlvbiBNdCh0LGUpe3JldHVybiB0LnN0YXJ0LWUuc3RhcnR9ZnVuY3Rpb24gQnQobil7dmFyIGkscixzLG8sbD1adC5kYXRhQXR0clByZWZpeDtyZXR1cm4gbCYmKGwrPSItIiksaT1uLmRhdGEobCsiZXZlbnQiKXx8bnVsbCxpJiYoaT0ib2JqZWN0Ij09dHlwZW9mIGk/dC5leHRlbmQoe30saSk6e30scj1pLnN0YXJ0LG51bGw9PXImJihyPWkudGltZSkscz1pLmR1cmF0aW9uLG89aS5zdGljayxkZWxldGUgaS5zdGFydCxkZWxldGUgaS50aW1lLGRlbGV0ZSBpLmR1cmF0aW9uLGRlbGV0ZSBpLnN0aWNrKSxudWxsPT1yJiYocj1uLmRhdGEobCsic3RhcnQiKSksbnVsbD09ciYmKHI9bi5kYXRhKGwrInRpbWUiKSksbnVsbD09cyYmKHM9bi5kYXRhKGwrImR1cmF0aW9uIikpLG51bGw9PW8mJihvPW4uZGF0YShsKyJzdGljayIpKSxyPW51bGwhPXI/ZS5kdXJhdGlvbihyKTpudWxsLHM9bnVsbCE9cz9lLmR1cmF0aW9uKHMpOm51bGwsbz1Cb29sZWFuKG8pLHtldmVudFByb3BzOmksc3RhcnRUaW1lOnIsZHVyYXRpb246cyxzdGljazpvfX1mdW5jdGlvbiBGdCh0LGUpe3ZhciBuLGk7Zm9yKG49MDtuPGUubGVuZ3RoO24rKylpZihpPWVbbl0saS5sZWZ0Q29sPD10LnJpZ2h0Q29sJiZpLnJpZ2h0Q29sPj10LmxlZnRDb2wpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gTnQodCxlKXtyZXR1cm4gdC5sZWZ0Q29sLWUubGVmdENvbH1mdW5jdGlvbiB6dCh0KXt2YXIgZSxuLGkscj1bXTtmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKXtmb3Iobj10W2VdLGk9MDtpPHIubGVuZ3RoJiZPdChuLHJbaV0pLmxlbmd0aDtpKyspO24ubGV2ZWw9aSwocltpXXx8KHJbaV09W10pKS5wdXNoKG4pfXJldHVybiByfWZ1bmN0aW9uIEF0KHQpe3ZhciBlLG4saSxyLHM7Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKylmb3Iobj10W2VdLGk9MDtpPG4ubGVuZ3RoO2krKylmb3Iocj1uW2ldLHIuZm9yd2FyZFNlZ3M9W10scz1lKzE7czx0Lmxlbmd0aDtzKyspT3Qocix0W3NdLHIuZm9yd2FyZFNlZ3MpfWZ1bmN0aW9uIEd0KHQpe3ZhciBlLG4saT10LmZvcndhcmRTZWdzLHI9MDtpZih2b2lkIDA9PT10LmZvcndhcmRQcmVzc3VyZSl7Zm9yKGU9MDtlPGkubGVuZ3RoO2UrKyluPWlbZV0sR3Qobikscj1NYXRoLm1heChyLDErbi5mb3J3YXJkUHJlc3N1cmUpO3QuZm9yd2FyZFByZXNzdXJlPXJ9fWZ1bmN0aW9uIE90KHQsZSxuKXtuPW58fFtdO2Zvcih2YXIgaT0wO2k8ZS5sZW5ndGg7aSsrKVZ0KHQsZVtpXSkmJm4ucHVzaChlW2ldKTtyZXR1cm4gbn1mdW5jdGlvbiBWdCh0LGUpe3JldHVybiB0LmJvdHRvbT5lLnRvcCYmdC50b3A8ZS5ib3R0b219ZnVuY3Rpb24gUHQodCl7dGhpcy5pdGVtcz10fHxbXX1mdW5jdGlvbiBfdChlLG4pe2Z1bmN0aW9uIGkodCl7bj10fWZ1bmN0aW9uIHIoKXt2YXIgaT1uLmxheW91dDtwPWUub3B0aW9ucy50aGVtZT8idWkiOiJmYyIsaT8oZz9nLmVtcHR5KCk6Zz10aGlzLmVsPXQoIjxkaXYgY2xhc3M9J2ZjLXRvb2xiYXIgIituLmV4dHJhQ2xhc3NlcysiJy8+IiksZy5hcHBlbmQobygibGVmdCIpKS5hcHBlbmQobygicmlnaHQiKSkuYXBwZW5kKG8oImNlbnRlciIpKS5hcHBlbmQoJzxkaXYgY2xhc3M9ImZjLWNsZWFyIi8+JykpOnMoKX1mdW5jdGlvbiBzKCl7ZyYmKGcucmVtb3ZlKCksZz1mLmVsPW51bGwpfWZ1bmN0aW9uIG8oaSl7dmFyIHI9dCgnPGRpdiBjbGFzcz0iZmMtJytpKyciLz4nKSxzPW4ubGF5b3V0W2ldO3JldHVybiBzJiZ0LmVhY2gocy5zcGxpdCgiICIpLGZ1bmN0aW9uKG4pe3ZhciBpLHM9dCgpLG89ITA7dC5lYWNoKHRoaXMuc3BsaXQoIiwiKSxmdW5jdGlvbihuLGkpe3ZhciByLGwsYSx1LGMsZCxoLGYsZyxtOyJ0aXRsZSI9PWk/KHM9cy5hZGQodCgiPGgyPiZuYnNwOzwvaDI+IikpLG89ITEpOigocj0oZS5vcHRpb25zLmN1c3RvbUJ1dHRvbnN8fHt9KVtpXSk/KGE9ZnVuY3Rpb24odCl7ci5jbGljayYmci5jbGljay5jYWxsKG1bMF0sdCl9LHU9IiIsYz1yLnRleHQpOihsPWUuZ2V0Vmlld1NwZWMoaSkpPyhhPWZ1bmN0aW9uKCl7ZS5jaGFuZ2VWaWV3KGkpfSx2LnB1c2goaSksdT1sLmJ1dHRvblRleHRPdmVycmlkZSxjPWwuYnV0dG9uVGV4dERlZmF1bHQpOmVbaV0mJihhPWZ1bmN0aW9uKCl7ZVtpXSgpfSx1PShlLm92ZXJyaWRlcy5idXR0b25UZXh0fHx7fSlbaV0sYz1lLm9wdGlvbnMuYnV0dG9uVGV4dFtpXSksYSYmKGQ9cj9yLnRoZW1lSWNvbjplLm9wdGlvbnMudGhlbWVCdXR0b25JY29uc1tpXSxoPXI/ci5pY29uOmUub3B0aW9ucy5idXR0b25JY29uc1tpXSxmPXU/Y3QodSk6ZCYmZS5vcHRpb25zLnRoZW1lPyI8c3BhbiBjbGFzcz0ndWktaWNvbiB1aS1pY29uLSIrZCsiJz48L3NwYW4+IjpoJiYhZS5vcHRpb25zLnRoZW1lPyI8c3BhbiBjbGFzcz0nZmMtaWNvbiBmYy1pY29uLSIraCsiJz48L3NwYW4+IjpjdChjKSxnPVsiZmMtIitpKyItYnV0dG9uIixwKyItYnV0dG9uIixwKyItc3RhdGUtZGVmYXVsdCJdLG09dCgnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSInK2cuam9pbigiICIpKyciPicrZisiPC9idXR0b24+IikuY2xpY2soZnVuY3Rpb24odCl7bS5oYXNDbGFzcyhwKyItc3RhdGUtZGlzYWJsZWQiKXx8KGEodCksKG0uaGFzQ2xhc3MocCsiLXN0YXRlLWFjdGl2ZSIpfHxtLmhhc0NsYXNzKHArIi1zdGF0ZS1kaXNhYmxlZCIpKSYmbS5yZW1vdmVDbGFzcyhwKyItc3RhdGUtaG92ZXIiKSl9KS5tb3VzZWRvd24oZnVuY3Rpb24oKXttLm5vdCgiLiIrcCsiLXN0YXRlLWFjdGl2ZSIpLm5vdCgiLiIrcCsiLXN0YXRlLWRpc2FibGVkIikuYWRkQ2xhc3MocCsiLXN0YXRlLWRvd24iKX0pLm1vdXNldXAoZnVuY3Rpb24oKXttLnJlbW92ZUNsYXNzKHArIi1zdGF0ZS1kb3duIil9KS5ob3ZlcihmdW5jdGlvbigpe20ubm90KCIuIitwKyItc3RhdGUtYWN0aXZlIikubm90KCIuIitwKyItc3RhdGUtZGlzYWJsZWQiKS5hZGRDbGFzcyhwKyItc3RhdGUtaG92ZXIiKX0sZnVuY3Rpb24oKXttLnJlbW92ZUNsYXNzKHArIi1zdGF0ZS1ob3ZlciIpLnJlbW92ZUNsYXNzKHArIi1zdGF0ZS1kb3duIil9KSxzPXMuYWRkKG0pKSl9KSxvJiZzLmZpcnN0KCkuYWRkQ2xhc3MocCsiLWNvcm5lci1sZWZ0IikuZW5kKCkubGFzdCgpLmFkZENsYXNzKHArIi1jb3JuZXItcmlnaHQiKS5lbmQoKSxzLmxlbmd0aD4xPyhpPXQoIjxkaXYvPiIpLG8mJmkuYWRkQ2xhc3MoImZjLWJ1dHRvbi1ncm91cCIpLGkuYXBwZW5kKHMpLHIuYXBwZW5kKGkpKTpyLmFwcGVuZChzKX0pLHJ9ZnVuY3Rpb24gbCh0KXtnJiZnLmZpbmQoImgyIikudGV4dCh0KX1mdW5jdGlvbiBhKHQpe2cmJmcuZmluZCgiLmZjLSIrdCsiLWJ1dHRvbiIpLmFkZENsYXNzKHArIi1zdGF0ZS1hY3RpdmUiKX1mdW5jdGlvbiB1KHQpe2cmJmcuZmluZCgiLmZjLSIrdCsiLWJ1dHRvbiIpLnJlbW92ZUNsYXNzKHArIi1zdGF0ZS1hY3RpdmUiKX1mdW5jdGlvbiBjKHQpe2cmJmcuZmluZCgiLmZjLSIrdCsiLWJ1dHRvbiIpLnByb3AoImRpc2FibGVkIiwhMCkuYWRkQ2xhc3MocCsiLXN0YXRlLWRpc2FibGVkIil9ZnVuY3Rpb24gZCh0KXtnJiZnLmZpbmQoIi5mYy0iK3QrIi1idXR0b24iKS5wcm9wKCJkaXNhYmxlZCIsITEpLnJlbW92ZUNsYXNzKHArIi1zdGF0ZS1kaXNhYmxlZCIpfWZ1bmN0aW9uIGgoKXtyZXR1cm4gdn12YXIgZj10aGlzO2Yuc2V0VG9vbGJhck9wdGlvbnM9aSxmLnJlbmRlcj1yLGYucmVtb3ZlRWxlbWVudD1zLGYudXBkYXRlVGl0bGU9bCxmLmFjdGl2YXRlQnV0dG9uPWEsZi5kZWFjdGl2YXRlQnV0dG9uPXUsZi5kaXNhYmxlQnV0dG9uPWMsZi5lbmFibGVCdXR0b249ZCxmLmdldFZpZXdzV2l0aEJ1dHRvbnM9aCxmLmVsPW51bGw7dmFyIGcscCx2PVtdfWZ1bmN0aW9uIFl0KG4saSl7ZnVuY3Rpb24gcih0KXt0Ll9sb2NhbGU9Tn1mdW5jdGlvbiBzKCl7Tz9hKCkmJihmKCksdSgpKTpvKCl9ZnVuY3Rpb24gbygpe24uYWRkQ2xhc3MoImZjIiksbi5vbigiY2xpY2suZmMiLCJhW2RhdGEtZ290b10iLGZ1bmN0aW9uKGUpe3ZhciBuPXQodGhpcyksaT1uLmRhdGEoImdvdG8iKSxyPUYubW9tZW50KGkuZGF0ZSkscz1pLnR5cGUsbz1QLm9wdCgibmF2TGluayIrZ3QocykrIkNsaWNrIik7ImZ1bmN0aW9uIj09dHlwZW9mIG8/byhyLGUpOigic3RyaW5nIj09dHlwZW9mIG8mJihzPW8pLEMocixzKSl9KSxGLmJpbmRPcHRpb24oInRoZW1lIixmdW5jdGlvbih0KXtWPXQ/InVpIjoiZmMiLG4udG9nZ2xlQ2xhc3MoInVpLXdpZGdldCIsdCksbi50b2dnbGVDbGFzcygiZmMtdW50aGVtZWQiLCF0KX0pLEYuYmluZE9wdGlvbnMoWyJpc1JUTCIsImxvY2FsZSJdLGZ1bmN0aW9uKHQpe24udG9nZ2xlQ2xhc3MoImZjLWx0ciIsIXQpLG4udG9nZ2xlQ2xhc3MoImZjLXJ0bCIsdCl9KSxPPXQoIjxkaXYgY2xhc3M9J2ZjLXZpZXctY29udGFpbmVyJy8+IikucHJlcGVuZFRvKG4pO3ZhciBlPXkoKTt6PW5ldyBQdChlKSxBPUYuaGVhZGVyPWVbMF0sRz1GLmZvb3Rlcj1lWzFdLGIoKSxFKCksdShGLm9wdGlvbnMuZGVmYXVsdFZpZXcpLEYub3B0aW9ucy5oYW5kbGVXaW5kb3dSZXNpemUmJihZPXl0KHYsRi5vcHRpb25zLndpbmRvd1Jlc2l6ZURlbGF5KSx0KHdpbmRvdykucmVzaXplKFkpKX1mdW5jdGlvbiBsKCl7UCYmUC5yZW1vdmVFbGVtZW50KCksei5wcm94eUNhbGwoInJlbW92ZUVsZW1lbnQiKSxPLnJlbW92ZSgpLG4ucmVtb3ZlQ2xhc3MoImZjIGZjLWx0ciBmYy1ydGwgZmMtdW50aGVtZWQgdWktd2lkZ2V0Iiksbi5vZmYoIi5mYyIpLFkmJnQod2luZG93KS51bmJpbmQoInJlc2l6ZSIsWSkscGUudW5uZWVkZWQoKX1mdW5jdGlvbiBhKCl7cmV0dXJuIG4uaXMoIjp2aXNpYmxlIil9ZnVuY3Rpb24gdShlLG4pe2orKzt2YXIgaT1QJiZlJiZQLnR5cGUhPT1lO2kmJihIKCksYygpKSwhUCYmZSYmKFA9Ri52aWV3PVVbZV18fChVW2VdPUYuaW5zdGFudGlhdGVWaWV3KGUpKSxQLnNldEVsZW1lbnQodCgiPGRpdiBjbGFzcz0nZmMtdmlldyBmYy0iK2UrIi12aWV3JyAvPiIpLmFwcGVuZFRvKE8pKSx6LnByb3h5Q2FsbCgiYWN0aXZhdGVCdXR0b24iLGUpKSxQJiZhKCkmJihuJiZQLmNhcHR1cmVJbml0aWFsU2Nyb2xsKG4pLFAuc2V0RGF0ZShGLmN1cnJlbnREYXRlKSxGLmN1cnJlbnREYXRlPVAuY3VycmVudERhdGUsbiYmUC5yZWxlYXNlU2Nyb2xsKCkpLGkmJlIoKSxqLS19ZnVuY3Rpb24gYygpe3oucHJveHlDYWxsKCJkZWFjdGl2YXRlQnV0dG9uIixQLnR5cGUpLFAucmVtb3ZlRWxlbWVudCgpLFA9Ri52aWV3PW51bGx9ZnVuY3Rpb24gZCgpe2orKyxIKCk7dmFyIHQ9UC50eXBlLGU9UC5xdWVyeVNjcm9sbCgpO2MoKSxmKCksdSh0LGUpLFIoKSxqLS19ZnVuY3Rpb24gaCh0KXtpZihhKCkpcmV0dXJuIHQmJmcoKSxqKyssUC51cGRhdGVTaXplKCEwKSxqLS0sITB9ZnVuY3Rpb24gZigpe2EoKSYmZygpfWZ1bmN0aW9uIGcoKXt2YXIgdD1GLm9wdGlvbnMuY29udGVudEhlaWdodCxlPUYub3B0aW9ucy5oZWlnaHQ7Xz0ibnVtYmVyIj09dHlwZW9mIHQ/dDoiZnVuY3Rpb24iPT10eXBlb2YgdD90KCk6Im51bWJlciI9PXR5cGVvZiBlP2UtcCgpOiJmdW5jdGlvbiI9PXR5cGVvZiBlP2UoKS1wKCk6InBhcmVudCI9PT1lP24ucGFyZW50KCkuaGVpZ2h0KCktcCgpOk1hdGgucm91bmQoTy53aWR0aCgpL01hdGgubWF4KEYub3B0aW9ucy5hc3BlY3RSYXRpbywuNSkpfWZ1bmN0aW9uIHAoKXtyZXR1cm4gei5pdGVtcy5yZWR1Y2UoZnVuY3Rpb24odCxlKXt2YXIgbj1lLmVsP2UuZWwub3V0ZXJIZWlnaHQoITApOjA7cmV0dXJuIHQrbn0sMCl9ZnVuY3Rpb24gdih0KXshaiYmdC50YXJnZXQ9PT13aW5kb3cmJlAucmVuZGVyUmFuZ2UmJmgoITApJiZQLnB1YmxpY2x5VHJpZ2dlcigid2luZG93UmVzaXplIixXKX1mdW5jdGlvbiBtKCl7YSgpJiZGLnJlcG9ydEV2ZW50Q2hhbmdlKCl9ZnVuY3Rpb24geSgpe3JldHVybltuZXcgX3QoRixTKCkpLG5ldyBfdChGLHcoKSldfWZ1bmN0aW9uIFMoKXtyZXR1cm57ZXh0cmFDbGFzc2VzOiJmYy1oZWFkZXItdG9vbGJhciIsbGF5b3V0OkYub3B0aW9ucy5oZWFkZXJ9fWZ1bmN0aW9uIHcoKXtyZXR1cm57ZXh0cmFDbGFzc2VzOiJmYy1mb290ZXItdG9vbGJhciIsbGF5b3V0OkYub3B0aW9ucy5mb290ZXJ9fWZ1bmN0aW9uIGIoKXtBLnNldFRvb2xiYXJPcHRpb25zKFMoKSksQS5yZW5kZXIoKSxBLmVsJiZuLnByZXBlbmQoQS5lbCl9ZnVuY3Rpb24gRSgpe0cuc2V0VG9vbGJhck9wdGlvbnModygpKSxHLnJlbmRlcigpLEcuZWwmJm4uYXBwZW5kKEcuZWwpfWZ1bmN0aW9uIEQodCxlKXtQLnNlbGVjdChGLmJ1aWxkU2VsZWN0U3Bhbi5hcHBseShGLGFyZ3VtZW50cykpfWZ1bmN0aW9uIFQoKXtQJiZQLnVuc2VsZWN0KCl9ZnVuY3Rpb24gQyh0LGUpe3ZhciBuO2U9ZXx8ImRheSIsbj1GLmdldFZpZXdTcGVjKGUpfHxGLmdldFVuaXRWaWV3U3BlYyhlKSxGLmN1cnJlbnREYXRlPXQuY2xvbmUoKSx1KG4/bi50eXBlOm51bGwpfWZ1bmN0aW9uIEgoKXtxKyt8fE8uY3NzKHt3aWR0aDoiMTAwJSIsaGVpZ2h0Ok8uaGVpZ2h0KCksb3ZlcmZsb3c6ImhpZGRlbiJ9KX1mdW5jdGlvbiBSKCl7LS1xfHxPLmNzcyh7d2lkdGg6IiIsaGVpZ2h0OiIiLG92ZXJmbG93OiIifSl9ZnVuY3Rpb24geCgpe3JldHVybiBGfWZ1bmN0aW9uIEkoKXtyZXR1cm4gUH1mdW5jdGlvbiBrKHQsZSl7dmFyIG47aWYoInN0cmluZyI9PXR5cGVvZiB0KXtpZih2b2lkIDA9PT1lKXJldHVybiBGLm9wdGlvbnNbdF07bj17fSxuW3RdPWUsTChuKX1lbHNlIm9iamVjdCI9PXR5cGVvZiB0JiZMKHQpfWZ1bmN0aW9uIEwodCl7dmFyIGUsbj0wO00odCk7Zm9yKGUgaW4gdCluKys7aWYoMT09PW4pe2lmKCJoZWlnaHQiPT09ZXx8ImNvbnRlbnRIZWlnaHQiPT09ZXx8ImFzcGVjdFJhdGlvIj09PWUpcmV0dXJuIHZvaWQgaCghMCk7aWYoImRlZmF1bHREYXRlIj09PWUpcmV0dXJuO2lmKCJidXNpbmVzc0hvdXJzIj09PWUpcmV0dXJuIHZvaWQoUCYmKFAudW5yZW5kZXJCdXNpbmVzc0hvdXJzKCksUC5yZW5kZXJCdXNpbmVzc0hvdXJzKCkpKTtpZigidGltZXpvbmUiPT09ZSlyZXR1cm4gRi5yZXpvbmVBcnJheUV2ZW50U291cmNlcygpLHZvaWQgRi5yZWZldGNoRXZlbnRzKCl9YigpLEUoKSxVPXt9LGQoKX1mdW5jdGlvbiBNKHQpe3ZhciBlO2ZvcihlIGluIHQpRi5keW5hbWljT3ZlcnJpZGVzW2VdPXRbZV07Ri52aWV3U3BlY0NhY2hlPXt9LEYucG9wdWxhdGVPcHRpb25zSGFzaCgpO2ZvcihlIGluIHQpRi50cmlnZ2VyT3B0aW9uSGFuZGxlcnMoZSl9ZnVuY3Rpb24gQih0LGUpe3ZhciBuPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKTtpZihlPWV8fFcsdGhpcy50cmlnZ2VyV2l0aCh0LGUsbiksRi5vcHRpb25zW3RdKXJldHVybiBGLm9wdGlvbnNbdF0uYXBwbHkoZSxuKX12YXIgRj10aGlzO3BlLm5lZWRlZCgpLEYucmVuZGVyPXMsRi5kZXN0cm95PWwsRi5yZXJlbmRlckV2ZW50cz1tLEYuc2VsZWN0PUQsRi51bnNlbGVjdD1ULEYuem9vbVRvPUMsRi5nZXRDYWxlbmRhcj14LEYuZ2V0Vmlldz1JLEYub3B0aW9uPWssRi5yZWNvcmRPcHRpb25PdmVycmlkZXM9TSxGLnB1YmxpY2x5VHJpZ2dlcj1CLEYuZHluYW1pY092ZXJyaWRlcz17fSxGLnZpZXdTcGVjQ2FjaGU9e30sRi5vcHRpb25IYW5kbGVycz17fSxGLm92ZXJyaWRlcz10LmV4dGVuZCh7fSxpKSxGLnBvcHVsYXRlT3B0aW9uc0hhc2goKTt2YXIgTjtGLmJpbmRPcHRpb25zKFsibG9jYWxlIiwibW9udGhOYW1lcyIsIm1vbnRoTmFtZXNTaG9ydCIsImRheU5hbWVzIiwiZGF5TmFtZXNTaG9ydCIsImZpcnN0RGF5Iiwid2Vla051bWJlckNhbGN1bGF0aW9uIl0sZnVuY3Rpb24odCxlLG4saSxzLG8sbCl7aWYoImlzbyI9PT1sJiYobD0iSVNPIiksTj1ydChVdCh0KSksZSYmKE4uX21vbnRocz1lKSxuJiYoTi5fbW9udGhzU2hvcnQ9biksaSYmKE4uX3dlZWtkYXlzPWkpLHMmJihOLl93ZWVrZGF5c1Nob3J0PXMpLG51bGw9PW8mJiJJU08iPT09bCYmKG89MSksbnVsbCE9byl7dmFyIGE9cnQoTi5fd2Vlayk7YS5kb3c9byxOLl93ZWVrPWF9IklTTyIhPT1sJiYibG9jYWwiIT09bCYmImZ1bmN0aW9uIiE9dHlwZW9mIGx8fChOLl9mdWxsQ2FsZW5kYXJfd2Vla0NhbGM9bCksRi5jdXJyZW50RGF0ZSYmcihGLmN1cnJlbnREYXRlKX0pLEYuZGVmYXVsdEFsbERheUV2ZW50RHVyYXRpb249ZS5kdXJhdGlvbihGLm9wdGlvbnMuZGVmYXVsdEFsbERheUV2ZW50RHVyYXRpb24pLEYuZGVmYXVsdFRpbWVkRXZlbnREdXJhdGlvbj1lLmR1cmF0aW9uKEYub3B0aW9ucy5kZWZhdWx0VGltZWRFdmVudER1cmF0aW9uKSxGLm1vbWVudD1mdW5jdGlvbigpe3ZhciB0O3JldHVybiJsb2NhbCI9PT1GLm9wdGlvbnMudGltZXpvbmU/KHQ9WnQubW9tZW50LmFwcGx5KG51bGwsYXJndW1lbnRzKSx0Lmhhc1RpbWUoKSYmdC5sb2NhbCgpKTp0PSJVVEMiPT09Ri5vcHRpb25zLnRpbWV6b25lP1p0Lm1vbWVudC51dGMuYXBwbHkobnVsbCxhcmd1bWVudHMpOlp0Lm1vbWVudC5wYXJzZVpvbmUuYXBwbHkobnVsbCxhcmd1bWVudHMpLHIodCksdH0sRi5sb2NhbGl6ZU1vbWVudD1yLEYuZ2V0SXNBbWJpZ1RpbWV6b25lPWZ1bmN0aW9uKCl7cmV0dXJuImxvY2FsIiE9PUYub3B0aW9ucy50aW1lem9uZSYmIlVUQyIhPT1GLm9wdGlvbnMudGltZXpvbmV9LEYuYXBwbHlUaW1lem9uZT1mdW5jdGlvbih0KXtpZighdC5oYXNUaW1lKCkpcmV0dXJuIHQuY2xvbmUoKTt2YXIgZSxuPUYubW9tZW50KHQudG9BcnJheSgpKSxpPXQudGltZSgpLW4udGltZSgpO3JldHVybiBpJiYoZT1uLmNsb25lKCkuYWRkKGkpLHQudGltZSgpLWUudGltZSgpPT09MCYmKG49ZSkpLG59LEYuZ2V0Tm93PWZ1bmN0aW9uKCl7dmFyIHQ9Ri5vcHRpb25zLm5vdztyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdCYmKHQ9dCgpKSxGLm1vbWVudCh0KS5zdHJpcFpvbmUoKX0sRi5nZXRFdmVudEVuZD1mdW5jdGlvbih0KXtyZXR1cm4gdC5lbmQ/dC5lbmQuY2xvbmUoKTpGLmdldERlZmF1bHRFdmVudEVuZCh0LmFsbERheSx0LnN0YXJ0KX0sRi5nZXREZWZhdWx0RXZlbnRFbmQ9ZnVuY3Rpb24odCxlKXt2YXIgbj1lLmNsb25lKCk7cmV0dXJuIHQ/bi5zdHJpcFRpbWUoKS5hZGQoRi5kZWZhdWx0QWxsRGF5RXZlbnREdXJhdGlvbik6bi5hZGQoRi5kZWZhdWx0VGltZWRFdmVudER1cmF0aW9uKSxGLmdldElzQW1iaWdUaW1lem9uZSgpJiZuLnN0cmlwWm9uZSgpLG59LEYuaHVtYW5pemVEdXJhdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gdC5sb2NhbGUoRi5vcHRpb25zLmxvY2FsZSkuaHVtYW5pemUoKX0sanQuY2FsbChGKTt2YXIgeixBLEcsTyxWLFAsXyxZLFc9blswXSxVPXt9LGo9MDt0aGlzLmluaXRDdXJyZW50RGF0ZSgpLEYucmVuZGVyVmlldz11LEYuZ2V0U3VnZ2VzdGVkVmlld0hlaWdodD1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT1fJiZmKCksX30sRi5pc0hlaWdodEF1dG89ZnVuY3Rpb24oKXtyZXR1cm4iYXV0byI9PT1GLm9wdGlvbnMuY29udGVudEhlaWdodHx8ImF1dG8iPT09Ri5vcHRpb25zLmhlaWdodH0sRi5zZXRUb29sYmFyc1RpdGxlPWZ1bmN0aW9uKHQpe3oucHJveHlDYWxsKCJ1cGRhdGVUaXRsZSIsdCl9LEYudXBkYXRlVG9vbGJhckJ1dHRvbnM9ZnVuY3Rpb24oKXt2YXIgdD1GLmdldE5vdygpLGU9UC5idWlsZERhdGVQcm9maWxlKHQpLG49UC5idWlsZFByZXZEYXRlUHJvZmlsZShGLmN1cnJlbnREYXRlKSxpPVAuYnVpbGROZXh0RGF0ZVByb2ZpbGUoRi5jdXJyZW50RGF0ZSk7ei5wcm94eUNhbGwoZS5pc1ZhbGlkJiYhWih0LFAuY3VycmVudFJhbmdlKT8iZW5hYmxlQnV0dG9uIjoiZGlzYWJsZUJ1dHRvbiIsInRvZGF5Iiksei5wcm94eUNhbGwobi5pc1ZhbGlkPyJlbmFibGVCdXR0b24iOiJkaXNhYmxlQnV0dG9uIiwicHJldiIpLHoucHJveHlDYWxsKGkuaXNWYWxpZD8iZW5hYmxlQnV0dG9uIjoiZGlzYWJsZUJ1dHRvbiIsIm5leHQiKX0sRi5mcmVlemVDb250ZW50SGVpZ2h0PUgsRi50aGF3Q29udGVudEhlaWdodD1SO3ZhciBxPTA7Ri5pbml0aWFsaXplKCl9ZnVuY3Rpb24gV3QoZSl7dC5lYWNoKFJlLGZ1bmN0aW9uKHQsbil7bnVsbD09ZVt0XSYmKGVbdF09bihlKSl9KX1mdW5jdGlvbiBVdCh0KXtyZXR1cm4gZS5sb2NhbGVEYXRhKHQpfHxlLmxvY2FsZURhdGEoImVuIil9ZnVuY3Rpb24ganQoKXtmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIVUub3B0aW9ucy5sYXp5RmV0Y2hpbmd8fHModCxlKT9vKHQsZSk6RHQucmVzb2x2ZShaKX1mdW5jdGlvbiBpKCl7Wj1yKEspLFUudHJpZ2dlcigiZXZlbnRzUmVzZXQiLFopfWZ1bmN0aW9uIHIodCl7dmFyIGUsbixpPVtdO2ZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspbj10W2VdLG4uc3RhcnQuY2xvbmUoKS5zdHJpcFpvbmUoKTxxJiZVLmdldEV2ZW50RW5kKG4pLnN0cmlwWm9uZSgpPmomJmkucHVzaChuKTtyZXR1cm4gaX1mdW5jdGlvbiBzKHQsZSl7cmV0dXJuIWp8fHQ8anx8ZT5xfWZ1bmN0aW9uIG8odCxlKXtyZXR1cm4gaj10LHE9ZSxsKCl9ZnVuY3Rpb24gbCgpe3JldHVybiB1KFEsInJlc2V0Iil9ZnVuY3Rpb24gYSh0KXtyZXR1cm4gdShiKHQpKX1mdW5jdGlvbiB1KHQsZSl7dmFyIG4saTtmb3IoInJlc2V0Ij09PWU/Sz1bXToiYWRkIiE9PWUmJihLPUMoSyx0KSksbj0wO248dC5sZW5ndGg7bisrKWk9dFtuXSwicGVuZGluZyIhPT1pLl9zdGF0dXMmJlgrKyxpLl9mZXRjaElkPShpLl9mZXRjaElkfHwwKSsxLGkuX3N0YXR1cz0icGVuZGluZyI7Zm9yKG49MDtuPHQubGVuZ3RoO24rKylpPXRbbl0sYyhpLGkuX2ZldGNoSWQpO3JldHVybiBYP25ldyBEdChmdW5jdGlvbih0KXtVLm9uZSgiZXZlbnRzUmVjZWl2ZWQiLHQpfSk6RHQucmVzb2x2ZShaKX1mdW5jdGlvbiBjKGUsbil7ZihlLGZ1bmN0aW9uKGkpe3ZhciByLHMsbyxsPXQuaXNBcnJheShlLmV2ZW50cyk7aWYobj09PWUuX2ZldGNoSWQmJiJyZWplY3RlZCIhPT1lLl9zdGF0dXMpe2lmKGUuX3N0YXR1cz0icmVzb2x2ZWQiLGkpZm9yKHI9MDtyPGkubGVuZ3RoO3IrKylzPWlbcl0sbz1sP3M6TihzLGUpLG8mJksucHVzaC5hcHBseShLLF8obykpO2goKX19KX1mdW5jdGlvbiBkKHQpe3ZhciBlPSJwZW5kaW5nIj09PXQuX3N0YXR1czt0Ll9zdGF0dXM9InJlamVjdGVkIixlJiZoKCl9ZnVuY3Rpb24gaCgpe1gtLSxYfHwoaShLKSxVLnRyaWdnZXIoImV2ZW50c1JlY2VpdmVkIixaKSl9ZnVuY3Rpb24gZihlLG4pe3ZhciBpLHIscz1adC5zb3VyY2VGZXRjaGVycztmb3IoaT0wO2k8cy5sZW5ndGg7aSsrKXtpZihyPXNbaV0uY2FsbChVLGUsai5jbG9uZSgpLHEuY2xvbmUoKSxVLm9wdGlvbnMudGltZXpvbmUsbikscj09PSEwKXJldHVybjtpZigib2JqZWN0Ij09dHlwZW9mIHIpcmV0dXJuIHZvaWQgZihyLG4pfXZhciBvPWUuZXZlbnRzO2lmKG8pdC5pc0Z1bmN0aW9uKG8pPyhVLnB1c2hMb2FkaW5nKCksby5jYWxsKFUsai5jbG9uZSgpLHEuY2xvbmUoKSxVLm9wdGlvbnMudGltZXpvbmUsZnVuY3Rpb24odCl7bih0KSxVLnBvcExvYWRpbmcoKX0pKTp0LmlzQXJyYXkobyk/bihvKTpuKCk7ZWxzZXt2YXIgbD1lLnVybDtpZihsKXt2YXIgYSx1PWUuc3VjY2VzcyxjPWUuZXJyb3IsZD1lLmNvbXBsZXRlO2E9dC5pc0Z1bmN0aW9uKGUuZGF0YSk/ZS5kYXRhKCk6ZS5kYXRhO3ZhciBoPXQuZXh0ZW5kKHt9LGF8fHt9KSxnPXV0KGUuc3RhcnRQYXJhbSxVLm9wdGlvbnMuc3RhcnRQYXJhbSkscD11dChlLmVuZFBhcmFtLFUub3B0aW9ucy5lbmRQYXJhbSksdj11dChlLnRpbWV6b25lUGFyYW0sVS5vcHRpb25zLnRpbWV6b25lUGFyYW0pO2cmJihoW2ddPWouZm9ybWF0KCkpLHAmJihoW3BdPXEuZm9ybWF0KCkpLFUub3B0aW9ucy50aW1lem9uZSYmImxvY2FsIiE9VS5vcHRpb25zLnRpbWV6b25lJiYoaFt2XT1VLm9wdGlvbnMudGltZXpvbmUpLFUucHVzaExvYWRpbmcoKSx0LmFqYXgodC5leHRlbmQoe30seGUsZSx7ZGF0YTpoLHN1Y2Nlc3M6ZnVuY3Rpb24oZSl7ZT1lfHxbXTt2YXIgaT1hdCh1LHRoaXMsYXJndW1lbnRzKTt0LmlzQXJyYXkoaSkmJihlPWkpLG4oZSl9LGVycm9yOmZ1bmN0aW9uKCl7YXQoYyx0aGlzLGFyZ3VtZW50cyksbigpfSxjb21wbGV0ZTpmdW5jdGlvbigpe2F0KGQsdGhpcyxhcmd1bWVudHMpLFUucG9wTG9hZGluZygpfX0pKX1lbHNlIG4oKX19ZnVuY3Rpb24gZyh0KXt2YXIgZT1wKHQpO2UmJihRLnB1c2goZSksdShbZV0sImFkZCIpKX1mdW5jdGlvbiBwKGUpe3ZhciBuLGkscj1adC5zb3VyY2VOb3JtYWxpemVycztpZih0LmlzRnVuY3Rpb24oZSl8fHQuaXNBcnJheShlKT9uPXtldmVudHM6ZX06InN0cmluZyI9PXR5cGVvZiBlP249e3VybDplfToib2JqZWN0Ij09dHlwZW9mIGUmJihuPXQuZXh0ZW5kKHt9LGUpKSxuKXtmb3Iobi5jbGFzc05hbWU/InN0cmluZyI9PXR5cGVvZiBuLmNsYXNzTmFtZSYmKG4uY2xhc3NOYW1lPW4uY2xhc3NOYW1lLnNwbGl0KC9ccysvKSk6bi5jbGFzc05hbWU9W10sdC5pc0FycmF5KG4uZXZlbnRzKSYmKG4ub3JpZ0FycmF5PW4uZXZlbnRzLG4uZXZlbnRzPXQubWFwKG4uZXZlbnRzLGZ1bmN0aW9uKHQpe3JldHVybiBOKHQsbil9KSksaT0wO2k8ci5sZW5ndGg7aSsrKXJbaV0uY2FsbChVLG4pO3JldHVybiBufX1mdW5jdGlvbiB2KHQpe3koRSh0KSl9ZnVuY3Rpb24gbSh0KXtudWxsPT10P3koUSwhMCk6eShiKHQpKX1mdW5jdGlvbiB5KGUsbil7dmFyIHI7Zm9yKHI9MDtyPGUubGVuZ3RoO3IrKylkKGVbcl0pO24/KFE9W10sSz1bXSk6KFE9dC5ncmVwKFEsZnVuY3Rpb24odCl7Zm9yKHI9MDtyPGUubGVuZ3RoO3IrKylpZih0PT09ZVtyXSlyZXR1cm4hMTtyZXR1cm4hMH0pLEs9QyhLLGUpKSxpKCl9ZnVuY3Rpb24gUygpe3JldHVybiBRLnNsaWNlKDEpfWZ1bmN0aW9uIHcoZSl7cmV0dXJuIHQuZ3JlcChRLGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkJiZ0LmlkPT09ZX0pWzBdfWZ1bmN0aW9uIGIoZSl7ZT90LmlzQXJyYXkoZSl8fChlPVtlXSk6ZT1bXTt2YXIgbixpPVtdO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspaS5wdXNoLmFwcGx5KGksRShlW25dKSk7cmV0dXJuIGl9ZnVuY3Rpb24gRShlKXt2YXIgbixpO2ZvcihuPTA7bjxRLmxlbmd0aDtuKyspaWYoaT1RW25dLGk9PT1lKXJldHVybltpXTtyZXR1cm4gaT13KGUpLGk/W2ldOnQuZ3JlcChRLGZ1bmN0aW9uKHQpe3JldHVybiBEKGUsdCl9KX1mdW5jdGlvbiBEKHQsZSl7cmV0dXJuIHQmJmUmJlQodCk9PVQoZSl9ZnVuY3Rpb24gVCh0KXtyZXR1cm4oIm9iamVjdCI9PXR5cGVvZiB0P3Qub3JpZ0FycmF5fHx0Lmdvb2dsZUNhbGVuZGFySWR8fHQudXJsfHx0LmV2ZW50czpudWxsKXx8dH1mdW5jdGlvbiBDKGUsbil7cmV0dXJuIHQuZ3JlcChlLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8bi5sZW5ndGg7ZSsrKWlmKHQuc291cmNlPT09bltlXSlyZXR1cm4hMTtyZXR1cm4hMH0pfWZ1bmN0aW9uIEgodCl7UihbdF0pfWZ1bmN0aW9uIFIodCl7dmFyIGUsbjtmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKW49dFtlXSxuLnN0YXJ0PVUubW9tZW50KG4uc3RhcnQpLG4uZW5kP24uZW5kPVUubW9tZW50KG4uZW5kKTpuLmVuZD1udWxsLFkobix4KG4pKTtpKCl9ZnVuY3Rpb24geChlKXt2YXIgbj17fTtyZXR1cm4gdC5lYWNoKGUsZnVuY3Rpb24odCxlKXtJKHQpJiZ2b2lkIDAhPT1lJiZsdChlKSYmKG5bdF09ZSl9KSxufWZ1bmN0aW9uIEkodCl7cmV0dXJuIS9eX3xeKGlkfGFsbERheXxzdGFydHxlbmQpJC8udGVzdCh0KX1mdW5jdGlvbiBrKHQsZSl7cmV0dXJuIEwoW3RdLGUpfWZ1bmN0aW9uIEwodCxlKXt2YXIgbixyLHMsbyxsLGE9W107Zm9yKHM9MDtzPHQubGVuZ3RoO3MrKylpZihyPU4odFtzXSkpe2ZvcihuPV8ociksbz0wO288bi5sZW5ndGg7bysrKWw9bltvXSxsLnNvdXJjZXx8KGUmJigkLmV2ZW50cy5wdXNoKGwpLGwuc291cmNlPSQpLEsucHVzaChsKSk7YT1hLmNvbmNhdChuKX1yZXR1cm4gYS5sZW5ndGgmJmkoKSxhfWZ1bmN0aW9uIE0oZSl7dmFyIG4scjtmb3IobnVsbD09ZT9lPWZ1bmN0aW9uKCl7cmV0dXJuITB9OnQuaXNGdW5jdGlvbihlKXx8KG49ZSsiIixlPWZ1bmN0aW9uKHQpe3JldHVybiB0Ll9pZD09bn0pLEs9dC5ncmVwKEssZSwhMCkscj0wO3I8US5sZW5ndGg7cisrKXQuaXNBcnJheShRW3JdLmV2ZW50cykmJihRW3JdLmV2ZW50cz10LmdyZXAoUVtyXS5ldmVudHMsZSwhMCkpO2koKX1mdW5jdGlvbiBCKGUpe3JldHVybiB0LmlzRnVuY3Rpb24oZSk/dC5ncmVwKEssZSk6bnVsbCE9ZT8oZSs9IiIsdC5ncmVwKEssZnVuY3Rpb24odCl7cmV0dXJuIHQuX2lkPT1lfSkpOkt9ZnVuY3Rpb24gRih0KXt0LnN0YXJ0PVUubW9tZW50KHQuc3RhcnQpLHQuZW5kJiYodC5lbmQ9VS5tb21lbnQodC5lbmQpKSxxdCh0KX1mdW5jdGlvbiBOKG4saSl7dmFyIHIscyxvLGw9e307aWYoVS5vcHRpb25zLmV2ZW50RGF0YVRyYW5zZm9ybSYmKG49VS5vcHRpb25zLmV2ZW50RGF0YVRyYW5zZm9ybShuKSksaSYmaS5ldmVudERhdGFUcmFuc2Zvcm0mJihuPWkuZXZlbnREYXRhVHJhbnNmb3JtKG4pKSx0LmV4dGVuZChsLG4pLGkmJihsLnNvdXJjZT1pKSxsLl9pZD1uLl9pZHx8KHZvaWQgMD09PW4uaWQ/Il9mYyIrSWUrKzpuLmlkKyIiKSxuLmNsYXNzTmFtZT8ic3RyaW5nIj09dHlwZW9mIG4uY2xhc3NOYW1lP2wuY2xhc3NOYW1lPW4uY2xhc3NOYW1lLnNwbGl0KC9ccysvKTpsLmNsYXNzTmFtZT1uLmNsYXNzTmFtZTpsLmNsYXNzTmFtZT1bXSxyPW4uc3RhcnR8fG4uZGF0ZSxzPW4uZW5kLG50KHIpJiYocj1lLmR1cmF0aW9uKHIpKSxudChzKSYmKHM9ZS5kdXJhdGlvbihzKSksbi5kb3d8fGUuaXNEdXJhdGlvbihyKXx8ZS5pc0R1cmF0aW9uKHMpKWwuc3RhcnQ9cj9lLmR1cmF0aW9uKHIpOm51bGwsbC5lbmQ9cz9lLmR1cmF0aW9uKHMpOm51bGwsbC5fcmVjdXJyaW5nPSEwO2Vsc2V7aWYociYmKHI9VS5tb21lbnQociksIXIuaXNWYWxpZCgpKSlyZXR1cm4hMTtzJiYocz1VLm1vbWVudChzKSxzLmlzVmFsaWQoKXx8KHM9bnVsbCkpLG89bi5hbGxEYXksdm9pZCAwPT09byYmKG89dXQoaT9pLmFsbERheURlZmF1bHQ6dm9pZCAwLFUub3B0aW9ucy5hbGxEYXlEZWZhdWx0KSksTyhyLHMsbyxsKX1yZXR1cm4gVS5ub3JtYWxpemVFdmVudChsKSxsfWZ1bmN0aW9uIE8odCxlLG4saSl7aS5zdGFydD10LGkuZW5kPWUsaS5hbGxEYXk9bixWKGkpLHF0KGkpfWZ1bmN0aW9uIFYodCl7UCh0KSx0LmVuZCYmIXQuZW5kLmlzQWZ0ZXIodC5zdGFydCkmJih0LmVuZD1udWxsKSx0LmVuZHx8KFUub3B0aW9ucy5mb3JjZUV2ZW50RHVyYXRpb24/dC5lbmQ9VS5nZXREZWZhdWx0RXZlbnRFbmQodC5hbGxEYXksdC5zdGFydCk6dC5lbmQ9bnVsbCl9ZnVuY3Rpb24gUCh0KXtudWxsPT10LmFsbERheSYmKHQuYWxsRGF5PSEodC5zdGFydC5oYXNUaW1lKCl8fHQuZW5kJiZ0LmVuZC5oYXNUaW1lKCkpKSx0LmFsbERheT8odC5zdGFydC5zdHJpcFRpbWUoKSx0LmVuZCYmdC5lbmQuc3RyaXBUaW1lKCkpOih0LnN0YXJ0Lmhhc1RpbWUoKXx8KHQuc3RhcnQ9VS5hcHBseVRpbWV6b25lKHQuc3RhcnQudGltZSgwKSkpLHQuZW5kJiYhdC5lbmQuaGFzVGltZSgpJiYodC5lbmQ9VS5hcHBseVRpbWV6b25lKHQuZW5kLnRpbWUoMCkpKSl9ZnVuY3Rpb24gXyhlLG4saSl7dmFyIHIscyxvLGwsYSx1LGMsZCxoLGY9W107aWYobj1ufHxqLGk9aXx8cSxlKWlmKGUuX3JlY3VycmluZyl7aWYocz1lLmRvdylmb3Iocj17fSxvPTA7bzxzLmxlbmd0aDtvKyspcltzW29dXT0hMDtmb3IobD1uLmNsb25lKCkuc3RyaXBUaW1lKCk7bC5pc0JlZm9yZShpKTspciYmIXJbbC5kYXkoKV18fChhPWUuc3RhcnQsdT1lLmVuZCxjPWwuY2xvbmUoKSxkPW51bGwsYSYmKGM9Yy50aW1lKGEpKSx1JiYoZD1sLmNsb25lKCkudGltZSh1KSksaD10LmV4dGVuZCh7fSxlKSxPKGMsZCwhYSYmIXUsaCksZi5wdXNoKGgpKSxsLmFkZCgxLCJkYXlzIil9ZWxzZSBmLnB1c2goZSk7cmV0dXJuIGZ9ZnVuY3Rpb24gWShlLG4saSl7ZnVuY3Rpb24gcih0LGUpe3JldHVybiBpP0codCxlLGkpOm4uYWxsRGF5P0EodCxlKTp6KHQsZSl9dmFyIHMsbyxsLGEsdSxjLGQ9e307cmV0dXJuIG49bnx8e30sbi5zdGFydHx8KG4uc3RhcnQ9ZS5zdGFydC5jbG9uZSgpKSx2b2lkIDA9PT1uLmVuZCYmKG4uZW5kPWUuZW5kP2UuZW5kLmNsb25lKCk6bnVsbCksbnVsbD09bi5hbGxEYXkmJihuLmFsbERheT1lLmFsbERheSksVihuKSxzPXtzdGFydDplLl9zdGFydC5jbG9uZSgpLGVuZDplLl9lbmQ/ZS5fZW5kLmNsb25lKCk6VS5nZXREZWZhdWx0RXZlbnRFbmQoZS5fYWxsRGF5LGUuX3N0YXJ0KSxhbGxEYXk6bi5hbGxEYXl9LFYocyksbz1udWxsIT09ZS5fZW5kJiZudWxsPT09bi5lbmQsbD1yKG4uc3RhcnQscy5zdGFydCksbi5lbmQ/KGE9cihuLmVuZCxzLmVuZCksdT1hLnN1YnRyYWN0KGwpKTp1PW51bGwsdC5lYWNoKG4sZnVuY3Rpb24odCxlKXtJKHQpJiZ2b2lkIDAhPT1lJiYoZFt0XT1lKX0pLGM9VyhCKGUuX2lkKSxvLG4uYWxsRGF5LGwsdSxkKSx7ZGF0ZURlbHRhOmwsZHVyYXRpb25EZWx0YTp1LHVuZG86Y319ZnVuY3Rpb24gVyhlLG4saSxyLHMsbyl7dmFyIGw9VS5nZXRJc0FtYmlnVGltZXpvbmUoKSxhPVtdO3JldHVybiByJiYhci52YWx1ZU9mKCkmJihyPW51bGwpLHMmJiFzLnZhbHVlT2YoKSYmKHM9bnVsbCksdC5lYWNoKGUsZnVuY3Rpb24oZSx1KXt2YXIgYyxkO2M9e3N0YXJ0OnUuc3RhcnQuY2xvbmUoKSxlbmQ6dS5lbmQ/dS5lbmQuY2xvbmUoKTpudWxsLGFsbERheTp1LmFsbERheX0sdC5lYWNoKG8sZnVuY3Rpb24odCl7Y1t0XT11W3RdfSksZD17c3RhcnQ6dS5fc3RhcnQsZW5kOnUuX2VuZCxhbGxEYXk6aX0sVihkKSxuP2QuZW5kPW51bGw6cyYmIWQuZW5kJiYoZC5lbmQ9VS5nZXREZWZhdWx0RXZlbnRFbmQoZC5hbGxEYXksZC5zdGFydCkpLHImJihkLnN0YXJ0LmFkZChyKSxkLmVuZCYmZC5lbmQuYWRkKHIpKSxzJiZkLmVuZC5hZGQocyksbCYmIWQuYWxsRGF5JiYocnx8cykmJihkLnN0YXJ0LnN0cmlwWm9uZSgpLGQuZW5kJiZkLmVuZC5zdHJpcFpvbmUoKSksdC5leHRlbmQodSxvLGQpLHF0KHUpLGEucHVzaChmdW5jdGlvbigpe3QuZXh0ZW5kKHUsYykscXQodSl9KX0pLGZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDxhLmxlbmd0aDt0KyspYVt0XSgpfX12YXIgVT10aGlzO1UucmVxdWVzdEV2ZW50cz1uLFUucmVwb3J0RXZlbnRDaGFuZ2U9aSxVLmlzRmV0Y2hOZWVkZWQ9cyxVLmZldGNoRXZlbnRzPW8sVS5mZXRjaEV2ZW50U291cmNlcz11LFUucmVmZXRjaEV2ZW50cz1sLFUucmVmZXRjaEV2ZW50U291cmNlcz1hLFUuZ2V0RXZlbnRTb3VyY2VzPVMsVS5nZXRFdmVudFNvdXJjZUJ5SWQ9dyxVLmFkZEV2ZW50U291cmNlPWcsVS5yZW1vdmVFdmVudFNvdXJjZT12LFUucmVtb3ZlRXZlbnRTb3VyY2VzPW0sVS51cGRhdGVFdmVudD1ILFUudXBkYXRlRXZlbnRzPVIsVS5yZW5kZXJFdmVudD1rLFUucmVuZGVyRXZlbnRzPUwsVS5yZW1vdmVFdmVudHM9TSxVLmNsaWVudEV2ZW50cz1CLFUubXV0YXRlRXZlbnQ9WSxVLm5vcm1hbGl6ZUV2ZW50RGF0ZXM9VixVLm5vcm1hbGl6ZUV2ZW50VGltZXM9UDt2YXIgaixxLFosJD17ZXZlbnRzOltdfSxRPVskXSxYPTAsSz1bXTt0LmVhY2goKFUub3B0aW9ucy5ldmVudHM/W1Uub3B0aW9ucy5ldmVudHNdOltdKS5jb25jYXQoVS5vcHRpb25zLmV2ZW50U291cmNlc3x8W10pLGZ1bmN0aW9uKHQsZSl7dmFyIG49cChlKTtuJiZRLnB1c2gobil9KSxVLmdldEV2ZW50Q2FjaGU9ZnVuY3Rpb24oKXtyZXR1cm4gS30sVS5nZXRQcnVuZWRFdmVudENhY2hlPWZ1bmN0aW9uKCl7cmV0dXJuIFp9LFUucmV6b25lQXJyYXlFdmVudFNvdXJjZXM9ZnVuY3Rpb24oKXt2YXIgZSxuLGk7Zm9yKGU9MDtlPFEubGVuZ3RoO2UrKylpZihuPVFbZV0uZXZlbnRzLHQuaXNBcnJheShuKSlmb3IoaT0wO2k8bi5sZW5ndGg7aSsrKUYobltpXSl9LFUuYnVpbGRFdmVudEZyb21JbnB1dD1OLFUuZXhwYW5kRXZlbnQ9X31mdW5jdGlvbiBxdCh0KXt0Ll9hbGxEYXk9dC5hbGxEYXksdC5fc3RhcnQ9dC5zdGFydC5jbG9uZSgpLHQuX2VuZD10LmVuZD90LmVuZC5jbG9uZSgpOm51bGx9dmFyIFp0PXQuZnVsbENhbGVuZGFyPXt2ZXJzaW9uOiIzLjMuMSIsaW50ZXJuYWxBcGlWZXJzaW9uOjl9LCR0PVp0LnZpZXdzPXt9O3QuZm4uZnVsbENhbGVuZGFyPWZ1bmN0aW9uKGUpe3ZhciBuPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxpPXRoaXM7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihyLHMpe3ZhciBvLGw9dChzKSxhPWwuZGF0YSgiZnVsbENhbGVuZGFyIik7InN0cmluZyI9PXR5cGVvZiBlP2EmJnQuaXNGdW5jdGlvbihhW2VdKSYmKG89YVtlXS5hcHBseShhLG4pLHJ8fChpPW8pLCJkZXN0cm95Ij09PWUmJmwucmVtb3ZlRGF0YSgiZnVsbENhbGVuZGFyIikpOmF8fChhPW5ldyBEZShsLGUpLGwuZGF0YSgiZnVsbENhbGVuZGFyIixhKSxhLnJlbmRlcigpKX0pLGl9O3ZhciBRdD1bImhlYWRlciIsImZvb3RlciIsImJ1dHRvblRleHQiLCJidXR0b25JY29ucyIsInRoZW1lQnV0dG9uSWNvbnMiXTtadC5pbnRlcnNlY3RSYW5nZXM9TixadC5hcHBseUFsbD1hdCxadC5kZWJvdW5jZT15dCxadC5pc0ludD12dCxadC5odG1sRXNjYXBlPWN0LFp0LmNzc1RvU3RyPWh0LFp0LnByb3h5PW10LFp0LmNhcGl0YWxpc2VGaXJzdExldHRlcj1ndCxadC5nZXRPdXRlclJlY3Q9aCxadC5nZXRDbGllbnRSZWN0PWYsWnQuZ2V0Q29udGVudFJlY3Q9ZyxadC5nZXRTY3JvbGxiYXJXaWR0aHM9cDt2YXIgWHQ9bnVsbDtadC5wcmV2ZW50RGVmYXVsdD1ILFp0LmludGVyc2VjdFJlY3RzPVIsWnQucGFyc2VGaWVsZFNwZWNzPUwsWnQuY29tcGFyZUJ5RmllbGRTcGVjcz1NLFp0LmNvbXBhcmVCeUZpZWxkU3BlYz1CLFp0LmZsZXhpYmxlQ29tcGFyZT1GLFp0LmNvbXB1dGVHcmVhdGVzdFVuaXQ9TyxadC5kaXZpZGVSYW5nZUJ5RHVyYXRpb249XyxadC5kaXZpZGVEdXJhdGlvbkJ5RHVyYXRpb249WSxadC5tdWx0aXBseUR1cmF0aW9uPVcsWnQuZHVyYXRpb25IYXNUaW1lPXR0O3ZhciBLdD1bInN1biIsIm1vbiIsInR1ZSIsIndlZCIsInRodSIsImZyaSIsInNhdCJdLEp0PVsieWVhciIsIm1vbnRoIiwid2VlayIsImRheSIsImhvdXIiLCJtaW51dGUiLCJzZWNvbmQiLCJtaWxsaXNlY29uZCJdO1p0LmxvZz1mdW5jdGlvbigpe3ZhciB0PXdpbmRvdy5jb25zb2xlO2lmKHQmJnQubG9nKXJldHVybiB0LmxvZy5hcHBseSh0LGFyZ3VtZW50cyl9LFp0Lndhcm49ZnVuY3Rpb24oKXt2YXIgdD13aW5kb3cuY29uc29sZTtyZXR1cm4gdCYmdC53YXJuP3Qud2Fybi5hcHBseSh0LGFyZ3VtZW50cyk6WnQubG9nLmFwcGx5KFp0LGFyZ3VtZW50cyl9O3ZhciB0ZT17fS5oYXNPd25Qcm9wZXJ0eTtadC5jcmVhdGVPYmplY3Q9cnQ7dmFyIGVlPS9eXHMqXGR7NH0tXGRcZCQvLG5lPS9eXHMqXGR7NH0tKD86KFxkXGQtXGRcZCl8KFdcZFxkJCl8KFdcZFxkLVxkKXwoXGRcZFxkKSkoKFR8ICkoXGRcZCg6XGRcZCg6XGRcZChcLlxkKyk/KT8pPyk/KT8kLyxpZT1lLmZuLHJlPXQuZXh0ZW5kKHt9LGllKSxzZT1lLm1vbWVudFByb3BlcnRpZXM7c2UucHVzaCgiX2Z1bGxDYWxlbmRhciIpLHNlLnB1c2goIl9hbWJpZ1RpbWUiKSxzZS5wdXNoKCJfYW1iaWdab25lIiksWnQubW9tZW50PWZ1bmN0aW9uKCl7cmV0dXJuIFN0KGFyZ3VtZW50cyl9LFp0Lm1vbWVudC51dGM9ZnVuY3Rpb24oKXt2YXIgdD1TdChhcmd1bWVudHMsITApO3JldHVybiB0Lmhhc1RpbWUoKSYmdC51dGMoKSx0fSxadC5tb21lbnQucGFyc2Vab25lPWZ1bmN0aW9uKCl7cmV0dXJuIFN0KGFyZ3VtZW50cywhMCwhMCl9LGllLndlZWs9aWUud2Vla3M9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbG9jYWxlLl9mdWxsQ2FsZW5kYXJfd2Vla0NhbGM7cmV0dXJuIG51bGw9PXQmJiJmdW5jdGlvbiI9PXR5cGVvZiBlP2UodGhpcyk6IklTTyI9PT1lP3JlLmlzb1dlZWsuYXBwbHkodGhpcyxhcmd1bWVudHMpOnJlLndlZWsuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxpZS50aW1lPWZ1bmN0aW9uKHQpe2lmKCF0aGlzLl9mdWxsQ2FsZW5kYXIpcmV0dXJuIHJlLnRpbWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKG51bGw9PXQpcmV0dXJuIGUuZHVyYXRpb24oe2hvdXJzOnRoaXMuaG91cnMoKSxtaW51dGVzOnRoaXMubWludXRlcygpLHNlY29uZHM6dGhpcy5zZWNvbmRzKCksbWlsbGlzZWNvbmRzOnRoaXMubWlsbGlzZWNvbmRzKCl9KTt0aGlzLl9hbWJpZ1RpbWU9ITEsZS5pc0R1cmF0aW9uKHQpfHxlLmlzTW9tZW50KHQpfHwodD1lLmR1cmF0aW9uKHQpKTt2YXIgbj0wO3JldHVybiBlLmlzRHVyYXRpb24odCkmJihuPTI0Kk1hdGguZmxvb3IodC5hc0RheXMoKSkpLHRoaXMuaG91cnMobit0LmhvdXJzKCkpLm1pbnV0ZXModC5taW51dGVzKCkpLnNlY29uZHModC5zZWNvbmRzKCkpLm1pbGxpc2Vjb25kcyh0Lm1pbGxpc2Vjb25kcygpKX0saWUuc3RyaXBUaW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FtYmlnVGltZXx8KHRoaXMudXRjKCEwKSx0aGlzLnNldCh7aG91cnM6MCxtaW51dGVzOjAsc2Vjb25kczowLG1zOjB9KSx0aGlzLl9hbWJpZ1RpbWU9ITAsdGhpcy5fYW1iaWdab25lPSEwKSx0aGlzfSxpZS5oYXNUaW1lPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuX2FtYmlnVGltZX0saWUuc3RyaXBab25lPWZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuIHRoaXMuX2FtYmlnWm9uZXx8KHQ9dGhpcy5fYW1iaWdUaW1lLHRoaXMudXRjKCEwKSx0aGlzLl9hbWJpZ1RpbWU9dHx8ITEsdGhpcy5fYW1iaWdab25lPSEwKSx0aGlzfSxpZS5oYXNab25lPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuX2FtYmlnWm9uZX0saWUubG9jYWw9ZnVuY3Rpb24odCl7cmV0dXJuIHJlLmxvY2FsLmNhbGwodGhpcyx0aGlzLl9hbWJpZ1pvbmV8fHQpLHRoaXMuX2FtYmlnVGltZT0hMSx0aGlzLl9hbWJpZ1pvbmU9ITEsdGhpc30saWUudXRjPWZ1bmN0aW9uKHQpe3JldHVybiByZS51dGMuY2FsbCh0aGlzLHQpLHRoaXMuX2FtYmlnVGltZT0hMSx0aGlzLl9hbWJpZ1pvbmU9ITEsdGhpc30saWUudXRjT2Zmc2V0PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10JiYodGhpcy5fYW1iaWdUaW1lPSExLHRoaXMuX2FtYmlnWm9uZT0hMSkscmUudXRjT2Zmc2V0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0saWUuZm9ybWF0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Z1bGxDYWxlbmRhciYmYXJndW1lbnRzWzBdP29lKHRoaXMsYXJndW1lbnRzWzBdKTp0aGlzLl9hbWJpZ1RpbWU/YWUodGhpcywiWVlZWS1NTS1ERCIpOnRoaXMuX2FtYmlnWm9uZT9hZSh0aGlzLCJZWVlZLU1NLUREW1RdSEg6bW06c3MiKTpyZS5mb3JtYXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxpZS50b0lTT1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hbWJpZ1RpbWU/YWUodGhpcywiWVlZWS1NTS1ERCIpOnRoaXMuX2FtYmlnWm9uZT9hZSh0aGlzLCJZWVlZLU1NLUREW1RdSEg6bW06c3MiKTpyZS50b0lTT1N0cmluZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3JldHVybiBjKHIoZSkuZmFrZUZvcm1hdFN0cmluZyx0KX1mdW5jdGlvbiBlKHQsZSl7cmV0dXJuIHJlLmZvcm1hdC5jYWxsKHQsZSl9ZnVuY3Rpb24gbih0LGUsbixzLG8pe3ZhciBsO3JldHVybiB0PVp0Lm1vbWVudC5wYXJzZVpvbmUodCksZT1adC5tb21lbnQucGFyc2Vab25lKGUpLGw9dC5sb2NhbGVEYXRhKCksbj1sLmxvbmdEYXRlRm9ybWF0KG4pfHxuLGkocihuKSx0LGUsc3x8IiAtICIsbyl9ZnVuY3Rpb24gaSh0LGUsbixpLHIpe3ZhciBzLG8sbCxhPXQuc2FtZVVuaXRzLHU9ZS5jbG9uZSgpLnN0cmlwWm9uZSgpLGM9bi5jbG9uZSgpLnN0cmlwWm9uZSgpLGY9ZCh0LmZha2VGb3JtYXRTdHJpbmcsZSksZz1kKHQuZmFrZUZvcm1hdFN0cmluZyxuKSxwPSIiLHY9IiIsbT0iIix5PSIiLFM9IiI7Zm9yKHM9MDtzPGEubGVuZ3RoJiYoIWFbc118fHUuaXNTYW1lKGMsYVtzXSkpO3MrKylwKz1mW3NdO2ZvcihvPWEubGVuZ3RoLTE7bz5zJiYoIWFbb118fHUuaXNTYW1lKGMsYVtvXSkpJiYoby0xIT09c3x8Ii4iIT09ZltvXSk7by0tKXY9ZltvXSt2O2ZvcihsPXM7bDw9bztsKyspbSs9ZltsXSx5Kz1nW2xdO3JldHVybihtfHx5KSYmKFM9cj95K2krbTptK2kreSksaChwK1Mrdil9ZnVuY3Rpb24gcih0KXtyZXR1cm4gd1t0XXx8KHdbdF09cyh0KSl9ZnVuY3Rpb24gcyh0KXt2YXIgZT1vKHQpO3JldHVybntmYWtlRm9ybWF0U3RyaW5nOmEoZSksc2FtZVVuaXRzOnUoZSl9fWZ1bmN0aW9uIG8odCl7Zm9yKHZhciBlLG49W10saT0vXFsoW15cXV0qKVxdfFwoKFteXCldKilcKXwoTFRTfExUfChcdylcNCpvPyl8KFteXHdcW1woXSspL2c7ZT1pLmV4ZWModCk7KWVbMV0/bi5wdXNoLmFwcGx5KG4sbChlWzFdKSk6ZVsyXT9uLnB1c2goe21heWJlOm8oZVsyXSl9KTplWzNdP24ucHVzaCh7dG9rZW46ZVszXX0pOmVbNV0mJm4ucHVzaC5hcHBseShuLGwoZVs1XSkpO3JldHVybiBufWZ1bmN0aW9uIGwodCl7cmV0dXJuIi4gIj09PXQ/WyIuIiwiICJdOlt0XX1mdW5jdGlvbiBhKHQpewp2YXIgZSxuLGk9W107Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKyluPXRbZV0sInN0cmluZyI9PXR5cGVvZiBuP2kucHVzaCgiWyIrbisiXSIpOm4udG9rZW4/bi50b2tlbiBpbiB5P2kucHVzaChwKyJbIituLnRva2VuKyJdIik6aS5wdXNoKG4udG9rZW4pOm4ubWF5YmUmJmkucHVzaCh2K2Eobi5tYXliZSkrdik7cmV0dXJuIGkuam9pbihnKX1mdW5jdGlvbiB1KHQpe3ZhciBlLG4saSxyPVtdO2ZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspbj10W2VdLG4udG9rZW4/KGk9U1tuLnRva2VuLmNoYXJBdCgwKV0sci5wdXNoKGk/aS51bml0OiJzZWNvbmQiKSk6bi5tYXliZT9yLnB1c2guYXBwbHkocix1KG4ubWF5YmUpKTpyLnB1c2gobnVsbCk7cmV0dXJuIHJ9ZnVuY3Rpb24gYyh0LGUpe3JldHVybiBoKGQodCxlKS5qb2luKCIiKSl9ZnVuY3Rpb24gZCh0LG4pe3ZhciBpLHIscz1bXSxvPWUobix0KSxsPW8uc3BsaXQoZyk7Zm9yKGk9MDtpPGwubGVuZ3RoO2krKylyPWxbaV0sci5jaGFyQXQoMCk9PT1wP3MucHVzaCh5W3Iuc3Vic3RyaW5nKDEpXShuKSk6cy5wdXNoKHIpO3JldHVybiBzfWZ1bmN0aW9uIGgodCl7cmV0dXJuIHQucmVwbGFjZShtLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUubWF0Y2goL1sxLTldLyk/ZToiIn0pfWZ1bmN0aW9uIGYodCl7dmFyIGUsbixpLHIscz1vKHQpO2ZvcihlPTA7ZTxzLmxlbmd0aDtlKyspbj1zW2VdLG4udG9rZW4mJihpPVNbbi50b2tlbi5jaGFyQXQoMCldLGkmJighcnx8aS52YWx1ZT5yLnZhbHVlKSYmKHI9aSkpO3JldHVybiByP3IudW5pdDpudWxsfVp0LmZvcm1hdERhdGU9dCxadC5mb3JtYXRSYW5nZT1uLFp0Lm9sZE1vbWVudEZvcm1hdD1lLFp0LnF1ZXJ5TW9zdEdyYW51bGFyRm9ybWF0VW5pdD1mO3ZhciBnPSJcdiIscD0iHyIsdj0iHiIsbT1uZXcgUmVnRXhwKHYrIihbXiIrdisiXSopIit2LCJnIikseT17dDpmdW5jdGlvbih0KXtyZXR1cm4gZSh0LCJhIikuY2hhckF0KDApfSxUOmZ1bmN0aW9uKHQpe3JldHVybiBlKHQsIkEiKS5jaGFyQXQoMCl9fSxTPXtZOnt2YWx1ZToxLHVuaXQ6InllYXIifSxNOnt2YWx1ZToyLHVuaXQ6Im1vbnRoIn0sVzp7dmFsdWU6Myx1bml0OiJ3ZWVrIn0sdzp7dmFsdWU6Myx1bml0OiJ3ZWVrIn0sRDp7dmFsdWU6NCx1bml0OiJkYXkifSxkOnt2YWx1ZTo0LHVuaXQ6ImRheSJ9fSx3PXt9fSgpO3ZhciBvZT1adC5mb3JtYXREYXRlLGxlPVp0LmZvcm1hdFJhbmdlLGFlPVp0Lm9sZE1vbWVudEZvcm1hdDtadC5DbGFzcz13dCx3dC5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgdCxlLG49YXJndW1lbnRzLmxlbmd0aDtmb3IodD0wO3Q8bjt0KyspZT1hcmd1bWVudHNbdF0sdDxuLTEmJkV0KHRoaXMsZSk7cmV0dXJuIGJ0KHRoaXMsZXx8e30pfSx3dC5taXhpbj1mdW5jdGlvbih0KXtFdCh0aGlzLHQpfSxadC5Qcm9taXNlPUR0LER0LmltbWVkaWF0ZT0hMCxEdC5yZXNvbHZlPWZ1bmN0aW9uKGUpe2lmKGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnJlc29sdmUpcmV0dXJuIGUucHJvbWlzZSgpO2lmKGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnRoZW4pcmV0dXJuIGU7dmFyIG49dC5EZWZlcnJlZCgpLnJlc29sdmUoZSksaT1uLnByb21pc2UoKTtpZihEdC5pbW1lZGlhdGUpe3ZhciByPWkudGhlbjtpLl92YWx1ZT1lLGkudGhlbj1mdW5jdGlvbih0LG4pe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P0R0LnJlc29sdmUodChlKSk6ci5jYWxsKGksdCxuKX19cmV0dXJuIGl9LER0LnJlamVjdD1mdW5jdGlvbigpe3JldHVybiB0LkRlZmVycmVkKCkucmVqZWN0KCkucHJvbWlzZSgpfSxEdC5hbGw9ZnVuY3Rpb24oZSl7dmFyIG4saSxyLHM9ITE7aWYoRHQuaW1tZWRpYXRlKWZvcihzPSEwLG49W10saT0wO2k8ZS5sZW5ndGg7aSsrKWlmKHI9ZVtpXSxyJiYiZnVuY3Rpb24iPT10eXBlb2Ygci5zdGF0ZSYmInJlc29sdmVkIj09PXIuc3RhdGUoKSYmIl92YWx1ZSJpbiByKW4ucHVzaChyLl92YWx1ZSk7ZWxzZXtpZihyJiYiZnVuY3Rpb24iPT10eXBlb2Ygci50aGVuKXtzPSExO2JyZWFrfW4ucHVzaChyKX1yZXR1cm4gcz9EdC5yZXNvbHZlKG4pOnQud2hlbi5hcHBseSh0LndoZW4sZSkudGhlbihmdW5jdGlvbigpe3JldHVybiB0LndoZW4odC5tYWtlQXJyYXkoYXJndW1lbnRzKSl9KX0sWnQuVGFza1F1ZXVlPVR0O3ZhciB1ZT1adC5FbWl0dGVyTWl4aW49e29uOmZ1bmN0aW9uKGUsbil7cmV0dXJuIHQodGhpcykub24oZSx0aGlzLl9wcmVwYXJlSW50ZXJjZXB0KG4pKSx0aGlzfSxvbmU6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdCh0aGlzKS5vbmUoZSx0aGlzLl9wcmVwYXJlSW50ZXJjZXB0KG4pKSx0aGlzfSxfcHJlcGFyZUludGVyY2VwdDpmdW5jdGlvbihlKXt2YXIgbj1mdW5jdGlvbih0LG4pe3JldHVybiBlLmFwcGx5KG4uY29udGV4dHx8dGhpcyxuLmFyZ3N8fFtdKX07cmV0dXJuIGUuZ3VpZHx8KGUuZ3VpZD10Lmd1aWQrKyksbi5ndWlkPWUuZ3VpZCxufSxvZmY6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdCh0aGlzKS5vZmYoZSxuKSx0aGlzfSx0cmlnZ2VyOmZ1bmN0aW9uKGUpe3ZhciBuPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gdCh0aGlzKS50cmlnZ2VySGFuZGxlcihlLHthcmdzOm59KSx0aGlzfSx0cmlnZ2VyV2l0aDpmdW5jdGlvbihlLG4saSl7cmV0dXJuIHQodGhpcykudHJpZ2dlckhhbmRsZXIoZSx7Y29udGV4dDpuLGFyZ3M6aX0pLHRoaXN9fSxjZT1adC5MaXN0ZW5lck1peGluPWZ1bmN0aW9uKCl7dmFyIGU9MCxuPXtsaXN0ZW5lcklkOm51bGwsbGlzdGVuVG86ZnVuY3Rpb24oZSxuLGkpe2lmKCJvYmplY3QiPT10eXBlb2Ygbilmb3IodmFyIHIgaW4gbiluLmhhc093blByb3BlcnR5KHIpJiZ0aGlzLmxpc3RlblRvKGUscixuW3JdKTtlbHNlInN0cmluZyI9PXR5cGVvZiBuJiZlLm9uKG4rIi4iK3RoaXMuZ2V0TGlzdGVuZXJOYW1lc3BhY2UoKSx0LnByb3h5KGksdGhpcykpfSxzdG9wTGlzdGVuaW5nVG86ZnVuY3Rpb24odCxlKXt0Lm9mZigoZXx8IiIpKyIuIit0aGlzLmdldExpc3RlbmVyTmFtZXNwYWNlKCkpfSxnZXRMaXN0ZW5lck5hbWVzcGFjZTpmdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLmxpc3RlbmVySWQmJih0aGlzLmxpc3RlbmVySWQ9ZSsrKSwiX2xpc3RlbmVyIit0aGlzLmxpc3RlbmVySWR9fTtyZXR1cm4gbn0oKSxkZT13dC5leHRlbmQoY2Use2lzSGlkZGVuOiEwLG9wdGlvbnM6bnVsbCxlbDpudWxsLG1hcmdpbjoxMCxjb25zdHJ1Y3RvcjpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9dHx8e319LHNob3c6ZnVuY3Rpb24oKXt0aGlzLmlzSGlkZGVuJiYodGhpcy5lbHx8dGhpcy5yZW5kZXIoKSx0aGlzLmVsLnNob3coKSx0aGlzLnBvc2l0aW9uKCksdGhpcy5pc0hpZGRlbj0hMSx0aGlzLnRyaWdnZXIoInNob3ciKSl9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLmlzSGlkZGVufHwodGhpcy5lbC5oaWRlKCksdGhpcy5pc0hpZGRlbj0hMCx0aGlzLnRyaWdnZXIoImhpZGUiKSl9LHJlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXMsbj10aGlzLm9wdGlvbnM7dGhpcy5lbD10KCc8ZGl2IGNsYXNzPSJmYy1wb3BvdmVyIi8+JykuYWRkQ2xhc3Mobi5jbGFzc05hbWV8fCIiKS5jc3Moe3RvcDowLGxlZnQ6MH0pLmFwcGVuZChuLmNvbnRlbnQpLmFwcGVuZFRvKG4ucGFyZW50RWwpLHRoaXMuZWwub24oImNsaWNrIiwiLmZjLWNsb3NlIixmdW5jdGlvbigpe2UuaGlkZSgpfSksbi5hdXRvSGlkZSYmdGhpcy5saXN0ZW5Ubyh0KGRvY3VtZW50KSwibW91c2Vkb3duIix0aGlzLmRvY3VtZW50TW91c2Vkb3duKX0sZG9jdW1lbnRNb3VzZWRvd246ZnVuY3Rpb24oZSl7dGhpcy5lbCYmIXQoZS50YXJnZXQpLmNsb3Nlc3QodGhpcy5lbCkubGVuZ3RoJiZ0aGlzLmhpZGUoKX0scmVtb3ZlRWxlbWVudDpmdW5jdGlvbigpe3RoaXMuaGlkZSgpLHRoaXMuZWwmJih0aGlzLmVsLnJlbW92ZSgpLHRoaXMuZWw9bnVsbCksdGhpcy5zdG9wTGlzdGVuaW5nVG8odChkb2N1bWVudCksIm1vdXNlZG93biIpfSxwb3NpdGlvbjpmdW5jdGlvbigpe3ZhciBlLG4saSxyLHMsbz10aGlzLm9wdGlvbnMsbD10aGlzLmVsLm9mZnNldFBhcmVudCgpLm9mZnNldCgpLGE9dGhpcy5lbC5vdXRlcldpZHRoKCksdT10aGlzLmVsLm91dGVySGVpZ2h0KCksYz10KHdpbmRvdyksaD1kKHRoaXMuZWwpO3I9by50b3B8fDAscz12b2lkIDAhPT1vLmxlZnQ/by5sZWZ0OnZvaWQgMCE9PW8ucmlnaHQ/by5yaWdodC1hOjAsaC5pcyh3aW5kb3cpfHxoLmlzKGRvY3VtZW50KT8oaD1jLGU9MCxuPTApOihpPWgub2Zmc2V0KCksZT1pLnRvcCxuPWkubGVmdCksZSs9Yy5zY3JvbGxUb3AoKSxuKz1jLnNjcm9sbExlZnQoKSxvLnZpZXdwb3J0Q29uc3RyYWluIT09ITEmJihyPU1hdGgubWluKHIsZStoLm91dGVySGVpZ2h0KCktdS10aGlzLm1hcmdpbikscj1NYXRoLm1heChyLGUrdGhpcy5tYXJnaW4pLHM9TWF0aC5taW4ocyxuK2gub3V0ZXJXaWR0aCgpLWEtdGhpcy5tYXJnaW4pLHM9TWF0aC5tYXgocyxuK3RoaXMubWFyZ2luKSksdGhpcy5lbC5jc3Moe3RvcDpyLWwudG9wLGxlZnQ6cy1sLmxlZnR9KX0sdHJpZ2dlcjpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnNbdF0mJnRoaXMub3B0aW9uc1t0XS5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSl9fSksaGU9WnQuQ29vcmRDYWNoZT13dC5leHRlbmQoe2VsczpudWxsLGZvcmNlZE9mZnNldFBhcmVudEVsOm51bGwsb3JpZ2luOm51bGwsYm91bmRpbmdSZWN0Om51bGwsaXNIb3Jpem9udGFsOiExLGlzVmVydGljYWw6ITEsbGVmdHM6bnVsbCxyaWdodHM6bnVsbCx0b3BzOm51bGwsYm90dG9tczpudWxsLGNvbnN0cnVjdG9yOmZ1bmN0aW9uKGUpe3RoaXMuZWxzPXQoZS5lbHMpLHRoaXMuaXNIb3Jpem9udGFsPWUuaXNIb3Jpem9udGFsLHRoaXMuaXNWZXJ0aWNhbD1lLmlzVmVydGljYWwsdGhpcy5mb3JjZWRPZmZzZXRQYXJlbnRFbD1lLm9mZnNldFBhcmVudD90KGUub2Zmc2V0UGFyZW50KTpudWxsfSxidWlsZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZm9yY2VkT2Zmc2V0UGFyZW50RWw7IXQmJnRoaXMuZWxzLmxlbmd0aD4wJiYodD10aGlzLmVscy5lcSgwKS5vZmZzZXRQYXJlbnQoKSksdGhpcy5vcmlnaW49dD90Lm9mZnNldCgpOm51bGwsdGhpcy5ib3VuZGluZ1JlY3Q9dGhpcy5xdWVyeUJvdW5kaW5nUmVjdCgpLHRoaXMuaXNIb3Jpem9udGFsJiZ0aGlzLmJ1aWxkRWxIb3Jpem9udGFscygpLHRoaXMuaXNWZXJ0aWNhbCYmdGhpcy5idWlsZEVsVmVydGljYWxzKCl9LGNsZWFyOmZ1bmN0aW9uKCl7dGhpcy5vcmlnaW49bnVsbCx0aGlzLmJvdW5kaW5nUmVjdD1udWxsLHRoaXMubGVmdHM9bnVsbCx0aGlzLnJpZ2h0cz1udWxsLHRoaXMudG9wcz1udWxsLHRoaXMuYm90dG9tcz1udWxsfSxlbnN1cmVCdWlsdDpmdW5jdGlvbigpe3RoaXMub3JpZ2lufHx0aGlzLmJ1aWxkKCl9LGJ1aWxkRWxIb3Jpem9udGFsczpmdW5jdGlvbigpe3ZhciBlPVtdLG49W107dGhpcy5lbHMuZWFjaChmdW5jdGlvbihpLHIpe3ZhciBzPXQociksbz1zLm9mZnNldCgpLmxlZnQsbD1zLm91dGVyV2lkdGgoKTtlLnB1c2gobyksbi5wdXNoKG8rbCl9KSx0aGlzLmxlZnRzPWUsdGhpcy5yaWdodHM9bn0sYnVpbGRFbFZlcnRpY2FsczpmdW5jdGlvbigpe3ZhciBlPVtdLG49W107dGhpcy5lbHMuZWFjaChmdW5jdGlvbihpLHIpe3ZhciBzPXQociksbz1zLm9mZnNldCgpLnRvcCxsPXMub3V0ZXJIZWlnaHQoKTtlLnB1c2gobyksbi5wdXNoKG8rbCl9KSx0aGlzLnRvcHM9ZSx0aGlzLmJvdHRvbXM9bn0sZ2V0SG9yaXpvbnRhbEluZGV4OmZ1bmN0aW9uKHQpe3RoaXMuZW5zdXJlQnVpbHQoKTt2YXIgZSxuPXRoaXMubGVmdHMsaT10aGlzLnJpZ2h0cyxyPW4ubGVuZ3RoO2ZvcihlPTA7ZTxyO2UrKylpZih0Pj1uW2VdJiZ0PGlbZV0pcmV0dXJuIGV9LGdldFZlcnRpY2FsSW5kZXg6ZnVuY3Rpb24odCl7dGhpcy5lbnN1cmVCdWlsdCgpO3ZhciBlLG49dGhpcy50b3BzLGk9dGhpcy5ib3R0b21zLHI9bi5sZW5ndGg7Zm9yKGU9MDtlPHI7ZSsrKWlmKHQ+PW5bZV0mJnQ8aVtlXSlyZXR1cm4gZX0sZ2V0TGVmdE9mZnNldDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lbnN1cmVCdWlsdCgpLHRoaXMubGVmdHNbdF19LGdldExlZnRQb3NpdGlvbjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lbnN1cmVCdWlsdCgpLHRoaXMubGVmdHNbdF0tdGhpcy5vcmlnaW4ubGVmdH0sZ2V0UmlnaHRPZmZzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZW5zdXJlQnVpbHQoKSx0aGlzLnJpZ2h0c1t0XX0sZ2V0UmlnaHRQb3NpdGlvbjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lbnN1cmVCdWlsdCgpLHRoaXMucmlnaHRzW3RdLXRoaXMub3JpZ2luLmxlZnR9LGdldFdpZHRoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVuc3VyZUJ1aWx0KCksdGhpcy5yaWdodHNbdF0tdGhpcy5sZWZ0c1t0XX0sZ2V0VG9wT2Zmc2V0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVuc3VyZUJ1aWx0KCksdGhpcy50b3BzW3RdfSxnZXRUb3BQb3NpdGlvbjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lbnN1cmVCdWlsdCgpLHRoaXMudG9wc1t0XS10aGlzLm9yaWdpbi50b3B9LGdldEJvdHRvbU9mZnNldDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lbnN1cmVCdWlsdCgpLHRoaXMuYm90dG9tc1t0XX0sZ2V0Qm90dG9tUG9zaXRpb246ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZW5zdXJlQnVpbHQoKSx0aGlzLmJvdHRvbXNbdF0tdGhpcy5vcmlnaW4udG9wfSxnZXRIZWlnaHQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZW5zdXJlQnVpbHQoKSx0aGlzLmJvdHRvbXNbdF0tdGhpcy50b3BzW3RdfSxxdWVyeUJvdW5kaW5nUmVjdDpmdW5jdGlvbigpe3ZhciB0O3JldHVybiB0aGlzLmVscy5sZW5ndGg+MCYmKHQ9ZCh0aGlzLmVscy5lcSgwKSksIXQuaXMoZG9jdW1lbnQpKT9mKHQpOm51bGx9LGlzUG9pbnRJbkJvdW5kczpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmlzTGVmdEluQm91bmRzKHQpJiZ0aGlzLmlzVG9wSW5Cb3VuZHMoZSl9LGlzTGVmdEluQm91bmRzOmZ1bmN0aW9uKHQpe3JldHVybiF0aGlzLmJvdW5kaW5nUmVjdHx8dD49dGhpcy5ib3VuZGluZ1JlY3QubGVmdCYmdDx0aGlzLmJvdW5kaW5nUmVjdC5yaWdodH0saXNUb3BJbkJvdW5kczpmdW5jdGlvbih0KXtyZXR1cm4hdGhpcy5ib3VuZGluZ1JlY3R8fHQ+PXRoaXMuYm91bmRpbmdSZWN0LnRvcCYmdDx0aGlzLmJvdW5kaW5nUmVjdC5ib3R0b219fSksZmU9WnQuRHJhZ0xpc3RlbmVyPXd0LmV4dGVuZChjZSx7b3B0aW9uczpudWxsLHN1YmplY3RFbDpudWxsLG9yaWdpblg6bnVsbCxvcmlnaW5ZOm51bGwsc2Nyb2xsRWw6bnVsbCxpc0ludGVyYWN0aW5nOiExLGlzRGlzdGFuY2VTdXJwYXNzZWQ6ITEsaXNEZWxheUVuZGVkOiExLGlzRHJhZ2dpbmc6ITEsaXNUb3VjaDohMSxpc0dlbmVyaWM6ITEsZGVsYXk6bnVsbCxkZWxheVRpbWVvdXRJZDpudWxsLG1pbkRpc3RhbmNlOm51bGwsc2hvdWxkQ2FuY2VsVG91Y2hTY3JvbGw6ITAsc2Nyb2xsQWx3YXlzS2lsbHM6ITEsY29uc3RydWN0b3I6ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zPXR8fHt9fSxzdGFydEludGVyYWN0aW9uOmZ1bmN0aW9uKGUsbil7aWYoIm1vdXNlZG93biI9PT1lLnR5cGUpe2lmKHBlLmdldCgpLnNob3VsZElnbm9yZU1vdXNlKCkpcmV0dXJuO2lmKCF3KGUpKXJldHVybjtlLnByZXZlbnREZWZhdWx0KCl9dGhpcy5pc0ludGVyYWN0aW5nfHwobj1ufHx7fSx0aGlzLmRlbGF5PXV0KG4uZGVsYXksdGhpcy5vcHRpb25zLmRlbGF5LDApLHRoaXMubWluRGlzdGFuY2U9dXQobi5kaXN0YW5jZSx0aGlzLm9wdGlvbnMuZGlzdGFuY2UsMCksdGhpcy5zdWJqZWN0RWw9dGhpcy5vcHRpb25zLnN1YmplY3RFbCxUKHQoImJvZHkiKSksdGhpcy5pc0ludGVyYWN0aW5nPSEwLHRoaXMuaXNUb3VjaD1EKGUpLHRoaXMuaXNHZW5lcmljPSJkcmFnc3RhcnQiPT09ZS50eXBlLHRoaXMuaXNEZWxheUVuZGVkPSExLHRoaXMuaXNEaXN0YW5jZVN1cnBhc3NlZD0hMSx0aGlzLm9yaWdpblg9YihlKSx0aGlzLm9yaWdpblk9RShlKSx0aGlzLnNjcm9sbEVsPWQodChlLnRhcmdldCkpLHRoaXMuYmluZEhhbmRsZXJzKCksdGhpcy5pbml0QXV0b1Njcm9sbCgpLHRoaXMuaGFuZGxlSW50ZXJhY3Rpb25TdGFydChlKSx0aGlzLnN0YXJ0RGVsYXkoZSksdGhpcy5taW5EaXN0YW5jZXx8dGhpcy5oYW5kbGVEaXN0YW5jZVN1cnBhc3NlZChlKSl9LGhhbmRsZUludGVyYWN0aW9uU3RhcnQ6ZnVuY3Rpb24odCl7dGhpcy50cmlnZ2VyKCJpbnRlcmFjdGlvblN0YXJ0Iix0KX0sZW5kSW50ZXJhY3Rpb246ZnVuY3Rpb24oZSxuKXt0aGlzLmlzSW50ZXJhY3RpbmcmJih0aGlzLmVuZERyYWcoZSksdGhpcy5kZWxheVRpbWVvdXRJZCYmKGNsZWFyVGltZW91dCh0aGlzLmRlbGF5VGltZW91dElkKSx0aGlzLmRlbGF5VGltZW91dElkPW51bGwpLHRoaXMuZGVzdHJveUF1dG9TY3JvbGwoKSx0aGlzLnVuYmluZEhhbmRsZXJzKCksdGhpcy5pc0ludGVyYWN0aW5nPSExLHRoaXMuaGFuZGxlSW50ZXJhY3Rpb25FbmQoZSxuKSxDKHQoImJvZHkiKSkpfSxoYW5kbGVJbnRlcmFjdGlvbkVuZDpmdW5jdGlvbih0LGUpe3RoaXMudHJpZ2dlcigiaW50ZXJhY3Rpb25FbmQiLHQsZXx8ITEpfSxiaW5kSGFuZGxlcnM6ZnVuY3Rpb24oKXt2YXIgZT1wZS5nZXQoKTt0aGlzLmlzR2VuZXJpYz90aGlzLmxpc3RlblRvKHQoZG9jdW1lbnQpLHtkcmFnOnRoaXMuaGFuZGxlTW92ZSxkcmFnc3RvcDp0aGlzLmVuZEludGVyYWN0aW9ufSk6dGhpcy5pc1RvdWNoP3RoaXMubGlzdGVuVG8oZSx7dG91Y2htb3ZlOnRoaXMuaGFuZGxlVG91Y2hNb3ZlLHRvdWNoZW5kOnRoaXMuZW5kSW50ZXJhY3Rpb24sc2Nyb2xsOnRoaXMuaGFuZGxlVG91Y2hTY3JvbGx9KTp0aGlzLmxpc3RlblRvKGUse21vdXNlbW92ZTp0aGlzLmhhbmRsZU1vdXNlTW92ZSxtb3VzZXVwOnRoaXMuZW5kSW50ZXJhY3Rpb259KSx0aGlzLmxpc3RlblRvKGUse3NlbGVjdHN0YXJ0OkgsY29udGV4dG1lbnU6SH0pfSx1bmJpbmRIYW5kbGVyczpmdW5jdGlvbigpe3RoaXMuc3RvcExpc3RlbmluZ1RvKHBlLmdldCgpKSx0aGlzLnN0b3BMaXN0ZW5pbmdUbyh0KGRvY3VtZW50KSl9LHN0YXJ0RHJhZzpmdW5jdGlvbih0LGUpe3RoaXMuc3RhcnRJbnRlcmFjdGlvbih0LGUpLHRoaXMuaXNEcmFnZ2luZ3x8KHRoaXMuaXNEcmFnZ2luZz0hMCx0aGlzLmhhbmRsZURyYWdTdGFydCh0KSl9LGhhbmRsZURyYWdTdGFydDpmdW5jdGlvbih0KXt0aGlzLnRyaWdnZXIoImRyYWdTdGFydCIsdCl9LGhhbmRsZU1vdmU6ZnVuY3Rpb24odCl7dmFyIGUsbj1iKHQpLXRoaXMub3JpZ2luWCxpPUUodCktdGhpcy5vcmlnaW5ZLHI9dGhpcy5taW5EaXN0YW5jZTt0aGlzLmlzRGlzdGFuY2VTdXJwYXNzZWR8fChlPW4qbitpKmksZT49cipyJiZ0aGlzLmhhbmRsZURpc3RhbmNlU3VycGFzc2VkKHQpKSx0aGlzLmlzRHJhZ2dpbmcmJnRoaXMuaGFuZGxlRHJhZyhuLGksdCl9LGhhbmRsZURyYWc6ZnVuY3Rpb24odCxlLG4pe3RoaXMudHJpZ2dlcigiZHJhZyIsdCxlLG4pLHRoaXMudXBkYXRlQXV0b1Njcm9sbChuKX0sZW5kRHJhZzpmdW5jdGlvbih0KXt0aGlzLmlzRHJhZ2dpbmcmJih0aGlzLmlzRHJhZ2dpbmc9ITEsdGhpcy5oYW5kbGVEcmFnRW5kKHQpKX0saGFuZGxlRHJhZ0VuZDpmdW5jdGlvbih0KXt0aGlzLnRyaWdnZXIoImRyYWdFbmQiLHQpfSxzdGFydERlbGF5OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5kZWxheT90aGlzLmRlbGF5VGltZW91dElkPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtlLmhhbmRsZURlbGF5RW5kKHQpfSx0aGlzLmRlbGF5KTp0aGlzLmhhbmRsZURlbGF5RW5kKHQpfSxoYW5kbGVEZWxheUVuZDpmdW5jdGlvbih0KXt0aGlzLmlzRGVsYXlFbmRlZD0hMCx0aGlzLmlzRGlzdGFuY2VTdXJwYXNzZWQmJnRoaXMuc3RhcnREcmFnKHQpfSxoYW5kbGVEaXN0YW5jZVN1cnBhc3NlZDpmdW5jdGlvbih0KXt0aGlzLmlzRGlzdGFuY2VTdXJwYXNzZWQ9ITAsdGhpcy5pc0RlbGF5RW5kZWQmJnRoaXMuc3RhcnREcmFnKHQpfSxoYW5kbGVUb3VjaE1vdmU6ZnVuY3Rpb24odCl7dGhpcy5pc0RyYWdnaW5nJiZ0aGlzLnNob3VsZENhbmNlbFRvdWNoU2Nyb2xsJiZ0LnByZXZlbnREZWZhdWx0KCksdGhpcy5oYW5kbGVNb3ZlKHQpfSxoYW5kbGVNb3VzZU1vdmU6ZnVuY3Rpb24odCl7dGhpcy5oYW5kbGVNb3ZlKHQpfSxoYW5kbGVUb3VjaFNjcm9sbDpmdW5jdGlvbih0KXt0aGlzLmlzRHJhZ2dpbmcmJiF0aGlzLnNjcm9sbEFsd2F5c0tpbGxzfHx0aGlzLmVuZEludGVyYWN0aW9uKHQsITApfSx0cmlnZ2VyOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9uc1t0XSYmdGhpcy5vcHRpb25zW3RdLmFwcGx5KHRoaXMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKSx0aGlzWyJfIit0XSYmdGhpc1siXyIrdF0uYXBwbHkodGhpcyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpfX0pO2ZlLm1peGluKHtpc0F1dG9TY3JvbGw6ITEsc2Nyb2xsQm91bmRzOm51bGwsc2Nyb2xsVG9wVmVsOm51bGwsc2Nyb2xsTGVmdFZlbDpudWxsLHNjcm9sbEludGVydmFsSWQ6bnVsbCxzY3JvbGxTZW5zaXRpdml0eTozMCxzY3JvbGxTcGVlZDoyMDAsc2Nyb2xsSW50ZXJ2YWxNczo1MCxpbml0QXV0b1Njcm9sbDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuc2Nyb2xsRWw7dGhpcy5pc0F1dG9TY3JvbGw9dGhpcy5vcHRpb25zLnNjcm9sbCYmdCYmIXQuaXMod2luZG93KSYmIXQuaXMoZG9jdW1lbnQpLHRoaXMuaXNBdXRvU2Nyb2xsJiZ0aGlzLmxpc3RlblRvKHQsInNjcm9sbCIseXQodGhpcy5oYW5kbGVEZWJvdW5jZWRTY3JvbGwsMTAwKSl9LGRlc3Ryb3lBdXRvU2Nyb2xsOmZ1bmN0aW9uKCl7dGhpcy5lbmRBdXRvU2Nyb2xsKCksdGhpcy5pc0F1dG9TY3JvbGwmJnRoaXMuc3RvcExpc3RlbmluZ1RvKHRoaXMuc2Nyb2xsRWwsInNjcm9sbCIpfSxjb21wdXRlU2Nyb2xsQm91bmRzOmZ1bmN0aW9uKCl7dGhpcy5pc0F1dG9TY3JvbGwmJih0aGlzLnNjcm9sbEJvdW5kcz1oKHRoaXMuc2Nyb2xsRWwpKX0sdXBkYXRlQXV0b1Njcm9sbDpmdW5jdGlvbih0KXt2YXIgZSxuLGkscixzPXRoaXMuc2Nyb2xsU2Vuc2l0aXZpdHksbz10aGlzLnNjcm9sbEJvdW5kcyxsPTAsYT0wO28mJihlPShzLShFKHQpLW8udG9wKSkvcyxuPShzLShvLmJvdHRvbS1FKHQpKSkvcyxpPShzLShiKHQpLW8ubGVmdCkpL3Mscj0ocy0oby5yaWdodC1iKHQpKSkvcyxlPj0wJiZlPD0xP2w9ZSp0aGlzLnNjcm9sbFNwZWVkKi0xOm4+PTAmJm48PTEmJihsPW4qdGhpcy5zY3JvbGxTcGVlZCksaT49MCYmaTw9MT9hPWkqdGhpcy5zY3JvbGxTcGVlZCotMTpyPj0wJiZyPD0xJiYoYT1yKnRoaXMuc2Nyb2xsU3BlZWQpKSx0aGlzLnNldFNjcm9sbFZlbChsLGEpfSxzZXRTY3JvbGxWZWw6ZnVuY3Rpb24odCxlKXt0aGlzLnNjcm9sbFRvcFZlbD10LHRoaXMuc2Nyb2xsTGVmdFZlbD1lLHRoaXMuY29uc3RyYWluU2Nyb2xsVmVsKCksIXRoaXMuc2Nyb2xsVG9wVmVsJiYhdGhpcy5zY3JvbGxMZWZ0VmVsfHx0aGlzLnNjcm9sbEludGVydmFsSWR8fCh0aGlzLnNjcm9sbEludGVydmFsSWQ9c2V0SW50ZXJ2YWwobXQodGhpcywic2Nyb2xsSW50ZXJ2YWxGdW5jIiksdGhpcy5zY3JvbGxJbnRlcnZhbE1zKSl9LGNvbnN0cmFpblNjcm9sbFZlbDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuc2Nyb2xsRWw7dGhpcy5zY3JvbGxUb3BWZWw8MD90LnNjcm9sbFRvcCgpPD0wJiYodGhpcy5zY3JvbGxUb3BWZWw9MCk6dGhpcy5zY3JvbGxUb3BWZWw+MCYmdC5zY3JvbGxUb3AoKSt0WzBdLmNsaWVudEhlaWdodD49dFswXS5zY3JvbGxIZWlnaHQmJih0aGlzLnNjcm9sbFRvcFZlbD0wKSx0aGlzLnNjcm9sbExlZnRWZWw8MD90LnNjcm9sbExlZnQoKTw9MCYmKHRoaXMuc2Nyb2xsTGVmdFZlbD0wKTp0aGlzLnNjcm9sbExlZnRWZWw+MCYmdC5zY3JvbGxMZWZ0KCkrdFswXS5jbGllbnRXaWR0aD49dFswXS5zY3JvbGxXaWR0aCYmKHRoaXMuc2Nyb2xsTGVmdFZlbD0wKX0sc2Nyb2xsSW50ZXJ2YWxGdW5jOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zY3JvbGxFbCxlPXRoaXMuc2Nyb2xsSW50ZXJ2YWxNcy8xZTM7dGhpcy5zY3JvbGxUb3BWZWwmJnQuc2Nyb2xsVG9wKHQuc2Nyb2xsVG9wKCkrdGhpcy5zY3JvbGxUb3BWZWwqZSksdGhpcy5zY3JvbGxMZWZ0VmVsJiZ0LnNjcm9sbExlZnQodC5zY3JvbGxMZWZ0KCkrdGhpcy5zY3JvbGxMZWZ0VmVsKmUpLHRoaXMuY29uc3RyYWluU2Nyb2xsVmVsKCksdGhpcy5zY3JvbGxUb3BWZWx8fHRoaXMuc2Nyb2xsTGVmdFZlbHx8dGhpcy5lbmRBdXRvU2Nyb2xsKCl9LGVuZEF1dG9TY3JvbGw6ZnVuY3Rpb24oKXt0aGlzLnNjcm9sbEludGVydmFsSWQmJihjbGVhckludGVydmFsKHRoaXMuc2Nyb2xsSW50ZXJ2YWxJZCksdGhpcy5zY3JvbGxJbnRlcnZhbElkPW51bGwsdGhpcy5oYW5kbGVTY3JvbGxFbmQoKSl9LGhhbmRsZURlYm91bmNlZFNjcm9sbDpmdW5jdGlvbigpe3RoaXMuc2Nyb2xsSW50ZXJ2YWxJZHx8dGhpcy5oYW5kbGVTY3JvbGxFbmQoKX0saGFuZGxlU2Nyb2xsRW5kOmZ1bmN0aW9uKCl7fX0pO3ZhciBnZT1mZS5leHRlbmQoe2NvbXBvbmVudDpudWxsLG9yaWdIaXQ6bnVsbCxoaXQ6bnVsbCxjb29yZEFkanVzdDpudWxsLGNvbnN0cnVjdG9yOmZ1bmN0aW9uKHQsZSl7ZmUuY2FsbCh0aGlzLGUpLHRoaXMuY29tcG9uZW50PXR9LGhhbmRsZUludGVyYWN0aW9uU3RhcnQ6ZnVuY3Rpb24odCl7dmFyIGUsbixpLHI9dGhpcy5zdWJqZWN0RWw7dGhpcy5jb21wb25lbnQuaGl0c05lZWRlZCgpLHRoaXMuY29tcHV0ZVNjcm9sbEJvdW5kcygpLHQ/KG49e2xlZnQ6Yih0KSx0b3A6RSh0KX0saT1uLHImJihlPWgociksaT14KGksZSkpLHRoaXMub3JpZ0hpdD10aGlzLnF1ZXJ5SGl0KGkubGVmdCxpLnRvcCksciYmdGhpcy5vcHRpb25zLnN1YmplY3RDZW50ZXImJih0aGlzLm9yaWdIaXQmJihlPVIodGhpcy5vcmlnSGl0LGUpfHxlKSxpPUkoZSkpLHRoaXMuY29vcmRBZGp1c3Q9ayhpLG4pKToodGhpcy5vcmlnSGl0PW51bGwsdGhpcy5jb29yZEFkanVzdD1udWxsKSxmZS5wcm90b3R5cGUuaGFuZGxlSW50ZXJhY3Rpb25TdGFydC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGhhbmRsZURyYWdTdGFydDpmdW5jdGlvbih0KXt2YXIgZTtmZS5wcm90b3R5cGUuaGFuZGxlRHJhZ1N0YXJ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxlPXRoaXMucXVlcnlIaXQoYih0KSxFKHQpKSxlJiZ0aGlzLmhhbmRsZUhpdE92ZXIoZSl9LGhhbmRsZURyYWc6ZnVuY3Rpb24odCxlLG4pe3ZhciBpO2ZlLnByb3RvdHlwZS5oYW5kbGVEcmFnLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxpPXRoaXMucXVlcnlIaXQoYihuKSxFKG4pKSxDdChpLHRoaXMuaGl0KXx8KHRoaXMuaGl0JiZ0aGlzLmhhbmRsZUhpdE91dCgpLGkmJnRoaXMuaGFuZGxlSGl0T3ZlcihpKSl9LGhhbmRsZURyYWdFbmQ6ZnVuY3Rpb24oKXt0aGlzLmhhbmRsZUhpdERvbmUoKSxmZS5wcm90b3R5cGUuaGFuZGxlRHJhZ0VuZC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGhhbmRsZUhpdE92ZXI6ZnVuY3Rpb24odCl7dmFyIGU9Q3QodCx0aGlzLm9yaWdIaXQpO3RoaXMuaGl0PXQsdGhpcy50cmlnZ2VyKCJoaXRPdmVyIix0aGlzLmhpdCxlLHRoaXMub3JpZ0hpdCl9LGhhbmRsZUhpdE91dDpmdW5jdGlvbigpe3RoaXMuaGl0JiYodGhpcy50cmlnZ2VyKCJoaXRPdXQiLHRoaXMuaGl0KSx0aGlzLmhhbmRsZUhpdERvbmUoKSx0aGlzLmhpdD1udWxsKX0saGFuZGxlSGl0RG9uZTpmdW5jdGlvbigpe3RoaXMuaGl0JiZ0aGlzLnRyaWdnZXIoImhpdERvbmUiLHRoaXMuaGl0KX0saGFuZGxlSW50ZXJhY3Rpb25FbmQ6ZnVuY3Rpb24oKXtmZS5wcm90b3R5cGUuaGFuZGxlSW50ZXJhY3Rpb25FbmQuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMub3JpZ0hpdD1udWxsLHRoaXMuaGl0PW51bGwsdGhpcy5jb21wb25lbnQuaGl0c05vdE5lZWRlZCgpfSxoYW5kbGVTY3JvbGxFbmQ6ZnVuY3Rpb24oKXtmZS5wcm90b3R5cGUuaGFuZGxlU2Nyb2xsRW5kLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLmlzRHJhZ2dpbmcmJih0aGlzLmNvbXBvbmVudC5yZWxlYXNlSGl0cygpLHRoaXMuY29tcG9uZW50LnByZXBhcmVIaXRzKCkpfSxxdWVyeUhpdDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmNvb3JkQWRqdXN0JiYodCs9dGhpcy5jb29yZEFkanVzdC5sZWZ0LGUrPXRoaXMuY29vcmRBZGp1c3QudG9wKSx0aGlzLmNvbXBvbmVudC5xdWVyeUhpdCh0LGUpfX0pO1p0LnRvdWNoTW91c2VJZ25vcmVXYWl0PTUwMDt2YXIgcGU9d3QuZXh0ZW5kKGNlLHVlLHtpc1RvdWNoaW5nOiExLG1vdXNlSWdub3JlRGVwdGg6MCxoYW5kbGVTY3JvbGxQcm94eTpudWxsLGJpbmQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMubGlzdGVuVG8odChkb2N1bWVudCkse3RvdWNoc3RhcnQ6dGhpcy5oYW5kbGVUb3VjaFN0YXJ0LHRvdWNoY2FuY2VsOnRoaXMuaGFuZGxlVG91Y2hDYW5jZWwsdG91Y2hlbmQ6dGhpcy5oYW5kbGVUb3VjaEVuZCxtb3VzZWRvd246dGhpcy5oYW5kbGVNb3VzZURvd24sbW91c2Vtb3ZlOnRoaXMuaGFuZGxlTW91c2VNb3ZlLG1vdXNldXA6dGhpcy5oYW5kbGVNb3VzZVVwLGNsaWNrOnRoaXMuaGFuZGxlQ2xpY2ssc2VsZWN0c3RhcnQ6dGhpcy5oYW5kbGVTZWxlY3RTdGFydCxjb250ZXh0bWVudTp0aGlzLmhhbmRsZUNvbnRleHRNZW51fSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsdGhpcy5oYW5kbGVUb3VjaE1vdmVQcm94eT1mdW5jdGlvbihuKXtlLmhhbmRsZVRvdWNoTW92ZSh0LkV2ZW50KG4pKX0se3Bhc3NpdmU6ITF9KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLmhhbmRsZVNjcm9sbFByb3h5PWZ1bmN0aW9uKG4pe2UuaGFuZGxlU2Nyb2xsKHQuRXZlbnQobikpfSwhMCl9LHVuYmluZDpmdW5jdGlvbigpe3RoaXMuc3RvcExpc3RlbmluZ1RvKHQoZG9jdW1lbnQpKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIix0aGlzLmhhbmRsZVRvdWNoTW92ZVByb3h5KSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLmhhbmRsZVNjcm9sbFByb3h5LCEwKX0saGFuZGxlVG91Y2hTdGFydDpmdW5jdGlvbih0KXt0aGlzLnN0b3BUb3VjaCh0LCEwKSx0aGlzLmlzVG91Y2hpbmc9ITAsdGhpcy50cmlnZ2VyKCJ0b3VjaHN0YXJ0Iix0KX0saGFuZGxlVG91Y2hNb3ZlOmZ1bmN0aW9uKHQpe3RoaXMuaXNUb3VjaGluZyYmdGhpcy50cmlnZ2VyKCJ0b3VjaG1vdmUiLHQpfSxoYW5kbGVUb3VjaENhbmNlbDpmdW5jdGlvbih0KXt0aGlzLmlzVG91Y2hpbmcmJih0aGlzLnRyaWdnZXIoInRvdWNoY2FuY2VsIix0KSx0aGlzLnN0b3BUb3VjaCh0KSl9LGhhbmRsZVRvdWNoRW5kOmZ1bmN0aW9uKHQpe3RoaXMuc3RvcFRvdWNoKHQpfSxoYW5kbGVNb3VzZURvd246ZnVuY3Rpb24odCl7dGhpcy5zaG91bGRJZ25vcmVNb3VzZSgpfHx0aGlzLnRyaWdnZXIoIm1vdXNlZG93biIsdCl9LGhhbmRsZU1vdXNlTW92ZTpmdW5jdGlvbih0KXt0aGlzLnNob3VsZElnbm9yZU1vdXNlKCl8fHRoaXMudHJpZ2dlcigibW91c2Vtb3ZlIix0KX0saGFuZGxlTW91c2VVcDpmdW5jdGlvbih0KXt0aGlzLnNob3VsZElnbm9yZU1vdXNlKCl8fHRoaXMudHJpZ2dlcigibW91c2V1cCIsdCl9LGhhbmRsZUNsaWNrOmZ1bmN0aW9uKHQpe3RoaXMuc2hvdWxkSWdub3JlTW91c2UoKXx8dGhpcy50cmlnZ2VyKCJjbGljayIsdCl9LGhhbmRsZVNlbGVjdFN0YXJ0OmZ1bmN0aW9uKHQpe3RoaXMudHJpZ2dlcigic2VsZWN0c3RhcnQiLHQpfSxoYW5kbGVDb250ZXh0TWVudTpmdW5jdGlvbih0KXt0aGlzLnRyaWdnZXIoImNvbnRleHRtZW51Iix0KX0saGFuZGxlU2Nyb2xsOmZ1bmN0aW9uKHQpe3RoaXMudHJpZ2dlcigic2Nyb2xsIix0KX0sc3RvcFRvdWNoOmZ1bmN0aW9uKHQsZSl7dGhpcy5pc1RvdWNoaW5nJiYodGhpcy5pc1RvdWNoaW5nPSExLHRoaXMudHJpZ2dlcigidG91Y2hlbmQiLHQpLGV8fHRoaXMuc3RhcnRUb3VjaE1vdXNlSWdub3JlKCkpfSxzdGFydFRvdWNoTW91c2VJZ25vcmU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9WnQudG91Y2hNb3VzZUlnbm9yZVdhaXQ7ZSYmKHRoaXMubW91c2VJZ25vcmVEZXB0aCsrLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt0Lm1vdXNlSWdub3JlRGVwdGgtLX0sZSkpfSxzaG91bGRJZ25vcmVNb3VzZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzVG91Y2hpbmd8fEJvb2xlYW4odGhpcy5tb3VzZUlnbm9yZURlcHRoKX19KTshZnVuY3Rpb24oKXt2YXIgdD1udWxsLGU9MDtwZS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdHx8KHQ9bmV3IHBlLHQuYmluZCgpKSx0fSxwZS5uZWVkZWQ9ZnVuY3Rpb24oKXtwZS5nZXQoKSxlKyt9LHBlLnVubmVlZGVkPWZ1bmN0aW9uKCl7ZS0tLGV8fCh0LnVuYmluZCgpLHQ9bnVsbCl9fSgpO3ZhciB2ZT13dC5leHRlbmQoY2Use29wdGlvbnM6bnVsbCxzb3VyY2VFbDpudWxsLGVsOm51bGwscGFyZW50RWw6bnVsbCx0b3AwOm51bGwsbGVmdDA6bnVsbCx5MDpudWxsLHgwOm51bGwsdG9wRGVsdGE6bnVsbCxsZWZ0RGVsdGE6bnVsbCxpc0ZvbGxvd2luZzohMSxpc0hpZGRlbjohMSxpc0FuaW1hdGluZzohMSxjb25zdHJ1Y3RvcjpmdW5jdGlvbihlLG4pe3RoaXMub3B0aW9ucz1uPW58fHt9LHRoaXMuc291cmNlRWw9ZSx0aGlzLnBhcmVudEVsPW4ucGFyZW50RWw/dChuLnBhcmVudEVsKTplLnBhcmVudCgpfSxzdGFydDpmdW5jdGlvbihlKXt0aGlzLmlzRm9sbG93aW5nfHwodGhpcy5pc0ZvbGxvd2luZz0hMCx0aGlzLnkwPUUoZSksdGhpcy54MD1iKGUpLHRoaXMudG9wRGVsdGE9MCx0aGlzLmxlZnREZWx0YT0wLHRoaXMuaXNIaWRkZW58fHRoaXMudXBkYXRlUG9zaXRpb24oKSxEKGUpP3RoaXMubGlzdGVuVG8odChkb2N1bWVudCksInRvdWNobW92ZSIsdGhpcy5oYW5kbGVNb3ZlKTp0aGlzLmxpc3RlblRvKHQoZG9jdW1lbnQpLCJtb3VzZW1vdmUiLHRoaXMuaGFuZGxlTW92ZSkpfSxzdG9wOmZ1bmN0aW9uKGUsbil7ZnVuY3Rpb24gaSgpe3IuaXNBbmltYXRpbmc9ITEsci5yZW1vdmVFbGVtZW50KCksci50b3AwPXIubGVmdDA9bnVsbCxuJiZuKCl9dmFyIHI9dGhpcyxzPXRoaXMub3B0aW9ucy5yZXZlcnREdXJhdGlvbjt0aGlzLmlzRm9sbG93aW5nJiYhdGhpcy5pc0FuaW1hdGluZyYmKHRoaXMuaXNGb2xsb3dpbmc9ITEsdGhpcy5zdG9wTGlzdGVuaW5nVG8odChkb2N1bWVudCkpLGUmJnMmJiF0aGlzLmlzSGlkZGVuPyh0aGlzLmlzQW5pbWF0aW5nPSEwLHRoaXMuZWwuYW5pbWF0ZSh7dG9wOnRoaXMudG9wMCxsZWZ0OnRoaXMubGVmdDB9LHtkdXJhdGlvbjpzLGNvbXBsZXRlOml9KSk6aSgpKX0sZ2V0RWw6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVsO3JldHVybiB0fHwodD10aGlzLmVsPXRoaXMuc291cmNlRWwuY2xvbmUoKS5hZGRDbGFzcyh0aGlzLm9wdGlvbnMuYWRkaXRpb25hbENsYXNzfHwiIikuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6IiIsZGlzcGxheTp0aGlzLmlzSGlkZGVuPyJub25lIjoiIixtYXJnaW46MCxyaWdodDoiYXV0byIsYm90dG9tOiJhdXRvIix3aWR0aDp0aGlzLnNvdXJjZUVsLndpZHRoKCksaGVpZ2h0OnRoaXMuc291cmNlRWwuaGVpZ2h0KCksb3BhY2l0eTp0aGlzLm9wdGlvbnMub3BhY2l0eXx8IiIsekluZGV4OnRoaXMub3B0aW9ucy56SW5kZXh9KSx0LmFkZENsYXNzKCJmYy11bnNlbGVjdGFibGUiKSx0LmFwcGVuZFRvKHRoaXMucGFyZW50RWwpKSx0fSxyZW1vdmVFbGVtZW50OmZ1bmN0aW9uKCl7dGhpcy5lbCYmKHRoaXMuZWwucmVtb3ZlKCksdGhpcy5lbD1udWxsKX0sdXBkYXRlUG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgdCxlO3RoaXMuZ2V0RWwoKSxudWxsPT09dGhpcy50b3AwJiYodD10aGlzLnNvdXJjZUVsLm9mZnNldCgpLGU9dGhpcy5lbC5vZmZzZXRQYXJlbnQoKS5vZmZzZXQoKSx0aGlzLnRvcDA9dC50b3AtZS50b3AsdGhpcy5sZWZ0MD10LmxlZnQtZS5sZWZ0KSx0aGlzLmVsLmNzcyh7dG9wOnRoaXMudG9wMCt0aGlzLnRvcERlbHRhLGxlZnQ6dGhpcy5sZWZ0MCt0aGlzLmxlZnREZWx0YX0pfSxoYW5kbGVNb3ZlOmZ1bmN0aW9uKHQpe3RoaXMudG9wRGVsdGE9RSh0KS10aGlzLnkwLHRoaXMubGVmdERlbHRhPWIodCktdGhpcy54MCx0aGlzLmlzSGlkZGVufHx0aGlzLnVwZGF0ZVBvc2l0aW9uKCl9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLmlzSGlkZGVufHwodGhpcy5pc0hpZGRlbj0hMCx0aGlzLmVsJiZ0aGlzLmVsLmhpZGUoKSl9LHNob3c6ZnVuY3Rpb24oKXt0aGlzLmlzSGlkZGVuJiYodGhpcy5pc0hpZGRlbj0hMSx0aGlzLnVwZGF0ZVBvc2l0aW9uKCksdGhpcy5nZXRFbCgpLnNob3coKSl9fSksbWU9WnQuR3JpZD13dC5leHRlbmQoY2Use2hhc0RheUludGVyYWN0aW9uczohMCx2aWV3Om51bGwsaXNSVEw6bnVsbCxzdGFydDpudWxsLGVuZDpudWxsLGVsOm51bGwsZWxzQnlGaWxsOm51bGwsZXZlbnRUaW1lRm9ybWF0Om51bGwsZGlzcGxheUV2ZW50VGltZTpudWxsLGRpc3BsYXlFdmVudEVuZDpudWxsLG1pblJlc2l6ZUR1cmF0aW9uOm51bGwsbGFyZ2VVbml0Om51bGwsZGF5Q2xpY2tMaXN0ZW5lcjpudWxsLGRheVNlbGVjdExpc3RlbmVyOm51bGwsc2VnRHJhZ0xpc3RlbmVyOm51bGwsc2VnUmVzaXplTGlzdGVuZXI6bnVsbCxleHRlcm5hbERyYWdMaXN0ZW5lcjpudWxsLGNvbnN0cnVjdG9yOmZ1bmN0aW9uKHQpe3RoaXMudmlldz10LHRoaXMuaXNSVEw9dC5vcHQoImlzUlRMIiksdGhpcy5lbHNCeUZpbGw9e30sdGhpcy5kYXlDbGlja0xpc3RlbmVyPXRoaXMuYnVpbGREYXlDbGlja0xpc3RlbmVyKCksdGhpcy5kYXlTZWxlY3RMaXN0ZW5lcj10aGlzLmJ1aWxkRGF5U2VsZWN0TGlzdGVuZXIoKX0sY29tcHV0ZUV2ZW50VGltZUZvcm1hdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZpZXcub3B0KCJzbWFsbFRpbWVGb3JtYXQiKX0sY29tcHV0ZURpc3BsYXlFdmVudFRpbWU6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sY29tcHV0ZURpc3BsYXlFdmVudEVuZDpmdW5jdGlvbigpe3JldHVybiEwfSxzZXRSYW5nZTpmdW5jdGlvbih0KXt0aGlzLnN0YXJ0PXQuc3RhcnQuY2xvbmUoKSx0aGlzLmVuZD10LmVuZC5jbG9uZSgpLHRoaXMucmFuZ2VVcGRhdGVkKCksdGhpcy5wcm9jZXNzUmFuZ2VPcHRpb25zKCl9LHJhbmdlVXBkYXRlZDpmdW5jdGlvbigpe30scHJvY2Vzc1JhbmdlT3B0aW9uczpmdW5jdGlvbigpe3ZhciB0LGUsbj10aGlzLnZpZXc7dGhpcy5ldmVudFRpbWVGb3JtYXQ9bi5vcHQoImV2ZW50VGltZUZvcm1hdCIpfHxuLm9wdCgidGltZUZvcm1hdCIpfHx0aGlzLmNvbXB1dGVFdmVudFRpbWVGb3JtYXQoKSx0PW4ub3B0KCJkaXNwbGF5RXZlbnRUaW1lIiksbnVsbD09dCYmKHQ9dGhpcy5jb21wdXRlRGlzcGxheUV2ZW50VGltZSgpKSxlPW4ub3B0KCJkaXNwbGF5RXZlbnRFbmQiKSxudWxsPT1lJiYoZT10aGlzLmNvbXB1dGVEaXNwbGF5RXZlbnRFbmQoKSksdGhpcy5kaXNwbGF5RXZlbnRUaW1lPXQsdGhpcy5kaXNwbGF5RXZlbnRFbmQ9ZX0sc3BhblRvU2VnczpmdW5jdGlvbih0KXt9LGRpZmZEYXRlczpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmxhcmdlVW5pdD9HKHQsZSx0aGlzLmxhcmdlVW5pdCk6eih0LGUpfSxoaXRzTmVlZGVkRGVwdGg6MCxoaXRzTmVlZGVkOmZ1bmN0aW9uKCl7dGhpcy5oaXRzTmVlZGVkRGVwdGgrK3x8dGhpcy5wcmVwYXJlSGl0cygpfSxoaXRzTm90TmVlZGVkOmZ1bmN0aW9uKCl7dGhpcy5oaXRzTmVlZGVkRGVwdGgmJiEtLXRoaXMuaGl0c05lZWRlZERlcHRoJiZ0aGlzLnJlbGVhc2VIaXRzKCl9LHByZXBhcmVIaXRzOmZ1bmN0aW9uKCl7fSxyZWxlYXNlSGl0czpmdW5jdGlvbigpe30scXVlcnlIaXQ6ZnVuY3Rpb24odCxlKXt9LGdldFNhZmVIaXRTcGFuOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0SGl0U3Bhbih0KTtyZXR1cm4gUShlLHRoaXMudmlldy5hY3RpdmVSYW5nZSk/ZTpudWxsfSxnZXRIaXRTcGFuOmZ1bmN0aW9uKHQpe30sZ2V0SGl0RWw6ZnVuY3Rpb24odCl7fSxzZXRFbGVtZW50OmZ1bmN0aW9uKHQpe3RoaXMuZWw9dCx0aGlzLmhhc0RheUludGVyYWN0aW9ucyYmKFQodCksdGhpcy5iaW5kRGF5SGFuZGxlcigidG91Y2hzdGFydCIsdGhpcy5kYXlUb3VjaFN0YXJ0KSx0aGlzLmJpbmREYXlIYW5kbGVyKCJtb3VzZWRvd24iLHRoaXMuZGF5TW91c2Vkb3duKSksdGhpcy5iaW5kU2VnSGFuZGxlcnMoKSx0aGlzLmJpbmRHbG9iYWxIYW5kbGVycygpfSxiaW5kRGF5SGFuZGxlcjpmdW5jdGlvbihlLG4pe3ZhciBpPXRoaXM7dGhpcy5lbC5vbihlLGZ1bmN0aW9uKGUpe2lmKCF0KGUudGFyZ2V0KS5pcyhpLnNlZ1NlbGVjdG9yKyIsIitpLnNlZ1NlbGVjdG9yKyIgKiwuZmMtbW9yZSxhW2RhdGEtZ290b10iKSlyZXR1cm4gbi5jYWxsKGksZSl9KX0scmVtb3ZlRWxlbWVudDpmdW5jdGlvbigpe3RoaXMudW5iaW5kR2xvYmFsSGFuZGxlcnMoKSx0aGlzLmNsZWFyRHJhZ0xpc3RlbmVycygpLHRoaXMuZWwucmVtb3ZlKCl9LHJlbmRlclNrZWxldG9uOmZ1bmN0aW9uKCl7fSxyZW5kZXJEYXRlczpmdW5jdGlvbigpe30sdW5yZW5kZXJEYXRlczpmdW5jdGlvbigpe30sYmluZEdsb2JhbEhhbmRsZXJzOmZ1bmN0aW9uKCl7dGhpcy5saXN0ZW5Ubyh0KGRvY3VtZW50KSx7ZHJhZ3N0YXJ0OnRoaXMuZXh0ZXJuYWxEcmFnU3RhcnQsc29ydHN0YXJ0OnRoaXMuZXh0ZXJuYWxEcmFnU3RhcnR9KX0sdW5iaW5kR2xvYmFsSGFuZGxlcnM6ZnVuY3Rpb24oKXt0aGlzLnN0b3BMaXN0ZW5pbmdUbyh0KGRvY3VtZW50KSl9LGRheU1vdXNlZG93bjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnZpZXc7cGUuZ2V0KCkuc2hvdWxkSWdub3JlTW91c2UoKXx8KHRoaXMuZGF5Q2xpY2tMaXN0ZW5lci5zdGFydEludGVyYWN0aW9uKHQpLGUub3B0KCJzZWxlY3RhYmxlIikmJnRoaXMuZGF5U2VsZWN0TGlzdGVuZXIuc3RhcnRJbnRlcmFjdGlvbih0LHtkaXN0YW5jZTplLm9wdCgic2VsZWN0TWluRGlzdGFuY2UiKX0pKX0sZGF5VG91Y2hTdGFydDpmdW5jdGlvbih0KXt2YXIgZSxuPXRoaXMudmlldztuLmlzU2VsZWN0ZWR8fG4uc2VsZWN0ZWRFdmVudHx8KGU9bi5vcHQoInNlbGVjdExvbmdQcmVzc0RlbGF5IiksbnVsbD09ZSYmKGU9bi5vcHQoImxvbmdQcmVzc0RlbGF5IikpLHRoaXMuZGF5Q2xpY2tMaXN0ZW5lci5zdGFydEludGVyYWN0aW9uKHQpLG4ub3B0KCJzZWxlY3RhYmxlIikmJnRoaXMuZGF5U2VsZWN0TGlzdGVuZXIuc3RhcnRJbnRlcmFjdGlvbih0LHtkZWxheTplfSkpfSxidWlsZERheUNsaWNrTGlzdGVuZXI6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMsbj10aGlzLnZpZXcsaT1uZXcgZ2UodGhpcyx7c2Nyb2xsOm4ub3B0KCJkcmFnU2Nyb2xsIiksaW50ZXJhY3Rpb25TdGFydDpmdW5jdGlvbigpe3Q9aS5vcmlnSGl0fSxoaXRPdmVyOmZ1bmN0aW9uKGUsbixpKXtufHwodD1udWxsKX0saGl0T3V0OmZ1bmN0aW9uKCl7dD1udWxsfSxpbnRlcmFjdGlvbkVuZDpmdW5jdGlvbihpLHIpe3ZhciBzOyFyJiZ0JiYocz1lLmdldFNhZmVIaXRTcGFuKHQpLHMmJm4udHJpZ2dlckRheUNsaWNrKHMsZS5nZXRIaXRFbCh0KSxpKSl9fSk7cmV0dXJuIGkuc2hvdWxkQ2FuY2VsVG91Y2hTY3JvbGw9ITEsaS5zY3JvbGxBbHdheXNLaWxscz0hMCxpfSxidWlsZERheVNlbGVjdExpc3RlbmVyOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLG49dGhpcy52aWV3LGk9bmV3IGdlKHRoaXMse3Njcm9sbDpuLm9wdCgiZHJhZ1Njcm9sbCIpLGludGVyYWN0aW9uU3RhcnQ6ZnVuY3Rpb24oKXt0PW51bGx9LGRyYWdTdGFydDpmdW5jdGlvbigpe24udW5zZWxlY3QoKX0saGl0T3ZlcjpmdW5jdGlvbihuLGkscil7dmFyIG8sbDtyJiYobz1lLmdldFNhZmVIaXRTcGFuKHIpLGw9ZS5nZXRTYWZlSGl0U3BhbihuKSx0PW8mJmw/ZS5jb21wdXRlU2VsZWN0aW9uKG8sbCk6bnVsbCx0P2UucmVuZGVyU2VsZWN0aW9uKHQpOnQ9PT0hMSYmcygpKX0saGl0T3V0OmZ1bmN0aW9uKCl7dD1udWxsLGUudW5yZW5kZXJTZWxlY3Rpb24oKX0saGl0RG9uZTpmdW5jdGlvbigpe28oKX0saW50ZXJhY3Rpb25FbmQ6ZnVuY3Rpb24oZSxpKXshaSYmdCYmbi5yZXBvcnRTZWxlY3Rpb24odCxlKX19KTtyZXR1cm4gaX0sY2xlYXJEcmFnTGlzdGVuZXJzOmZ1bmN0aW9uKCl7dGhpcy5kYXlDbGlja0xpc3RlbmVyLmVuZEludGVyYWN0aW9uKCksdGhpcy5kYXlTZWxlY3RMaXN0ZW5lci5lbmRJbnRlcmFjdGlvbigpLHRoaXMuc2VnRHJhZ0xpc3RlbmVyJiZ0aGlzLnNlZ0RyYWdMaXN0ZW5lci5lbmRJbnRlcmFjdGlvbigpLHRoaXMuc2VnUmVzaXplTGlzdGVuZXImJnRoaXMuc2VnUmVzaXplTGlzdGVuZXIuZW5kSW50ZXJhY3Rpb24oKSx0aGlzLmV4dGVybmFsRHJhZ0xpc3RlbmVyJiZ0aGlzLmV4dGVybmFsRHJhZ0xpc3RlbmVyLmVuZEludGVyYWN0aW9uKCl9LHJlbmRlckV2ZW50TG9jYXRpb25IZWxwZXI6ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLmZhYnJpY2F0ZUhlbHBlckV2ZW50KHQsZSk7cmV0dXJuIHRoaXMucmVuZGVySGVscGVyKG4sZSl9LGZhYnJpY2F0ZUhlbHBlckV2ZW50OmZ1bmN0aW9uKHQsZSl7dmFyIG49ZT9ydChlLmV2ZW50KTp7fTtyZXR1cm4gbi5zdGFydD10LnN0YXJ0LmNsb25lKCksbi5lbmQ9dC5lbmQ/dC5lbmQuY2xvbmUoKTpudWxsLG4uYWxsRGF5PW51bGwsdGhpcy52aWV3LmNhbGVuZGFyLm5vcm1hbGl6ZUV2ZW50RGF0ZXMobiksbi5jbGFzc05hbWU9KG4uY2xhc3NOYW1lfHxbXSkuY29uY2F0KCJmYy1oZWxwZXIiKSxlfHwobi5lZGl0YWJsZT0hMSksbn0scmVuZGVySGVscGVyOmZ1bmN0aW9uKHQsZSl7fSx1bnJlbmRlckhlbHBlcjpmdW5jdGlvbigpe30scmVuZGVyU2VsZWN0aW9uOmZ1bmN0aW9uKHQpe3RoaXMucmVuZGVySGlnaGxpZ2h0KHQpfSx1bnJlbmRlclNlbGVjdGlvbjpmdW5jdGlvbigpe3RoaXMudW5yZW5kZXJIaWdobGlnaHQoKX0sY29tcHV0ZVNlbGVjdGlvbjpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuY29tcHV0ZVNlbGVjdGlvblNwYW4odCxlKTtyZXR1cm4hKG4mJiF0aGlzLnZpZXcuY2FsZW5kYXIuaXNTZWxlY3Rpb25TcGFuQWxsb3dlZChuKSkmJm59LGNvbXB1dGVTZWxlY3Rpb25TcGFuOmZ1bmN0aW9uKHQsZSl7dmFyIG49W3Quc3RhcnQsdC5lbmQsZS5zdGFydCxlLmVuZF07cmV0dXJuIG4uc29ydChwdCkse3N0YXJ0Om5bMF0uY2xvbmUoKSxlbmQ6blszXS5jbG9uZSgpfX0scmVuZGVySGlnaGxpZ2h0OmZ1bmN0aW9uKHQpe3RoaXMucmVuZGVyRmlsbCgiaGlnaGxpZ2h0Iix0aGlzLnNwYW5Ub1NlZ3ModCkpfSx1bnJlbmRlckhpZ2hsaWdodDpmdW5jdGlvbigpe3RoaXMudW5yZW5kZXJGaWxsKCJoaWdobGlnaHQiKX0saGlnaGxpZ2h0U2VnQ2xhc3NlczpmdW5jdGlvbigpe3JldHVyblsiZmMtaGlnaGxpZ2h0Il19LHJlbmRlckJ1c2luZXNzSG91cnM6ZnVuY3Rpb24oKXt9LHVucmVuZGVyQnVzaW5lc3NIb3VyczpmdW5jdGlvbigpe30sZ2V0Tm93SW5kaWNhdG9yVW5pdDpmdW5jdGlvbigpe30scmVuZGVyTm93SW5kaWNhdG9yOmZ1bmN0aW9uKHQpe30sdW5yZW5kZXJOb3dJbmRpY2F0b3I6ZnVuY3Rpb24oKXt9LHJlbmRlckZpbGw6ZnVuY3Rpb24odCxlKXt9LHVucmVuZGVyRmlsbDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmVsc0J5RmlsbFt0XTtlJiYoZS5yZW1vdmUoKSxkZWxldGUgdGhpcy5lbHNCeUZpbGxbdF0pfSxyZW5kZXJGaWxsU2VnRWxzOmZ1bmN0aW9uKGUsbil7dmFyIGkscj10aGlzLHM9dGhpc1tlKyJTZWdFbCJdLG89IiIsbD1bXTtpZihuLmxlbmd0aCl7Zm9yKGk9MDtpPG4ubGVuZ3RoO2krKylvKz10aGlzLmZpbGxTZWdIdG1sKGUsbltpXSk7dChvKS5lYWNoKGZ1bmN0aW9uKGUsaSl7dmFyIG89bltlXSxhPXQoaSk7cyYmKGE9cy5jYWxsKHIsbyxhKSksYSYmKGE9dChhKSxhLmlzKHIuZmlsbFNlZ1RhZykmJihvLmVsPWEsbC5wdXNoKG8pKSl9KX1yZXR1cm4gbH0sZmlsbFNlZ1RhZzoiZGl2IixmaWxsU2VnSHRtbDpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXNbdCsiU2VnQ2xhc3NlcyJdLGk9dGhpc1t0KyJTZWdDc3MiXSxyPW4/bi5jYWxsKHRoaXMsZSk6W10scz1odChpP2kuY2FsbCh0aGlzLGUpOnt9KTtyZXR1cm4iPCIrdGhpcy5maWxsU2VnVGFnKyhyLmxlbmd0aD8nIGNsYXNzPSInK3Iuam9pbigiICIpKyciJzoiIikrKHM/JyBzdHlsZT0iJytzKyciJzoiIikrIiAvPiJ9LGdldERheUNsYXNzZXM6ZnVuY3Rpb24odCxlKXt2YXIgbixpPXRoaXMudmlldyxyPVtdO3JldHVybiBaKHQsaS5hY3RpdmVSYW5nZSk/KHIucHVzaCgiZmMtIitLdFt0LmRheSgpXSksMT09aS5jdXJyZW50UmFuZ2VBcygibW9udGhzIikmJnQubW9udGgoKSE9aS5jdXJyZW50UmFuZ2Uuc3RhcnQubW9udGgoKSYmci5wdXNoKCJmYy1vdGhlci1tb250aCIpLG49aS5jYWxlbmRhci5nZXROb3coKSx0LmlzU2FtZShuLCJkYXkiKT8oci5wdXNoKCJmYy10b2RheSIpLGUhPT0hMCYmci5wdXNoKGkuaGlnaGxpZ2h0U3RhdGVDbGFzcykpOnQ8bj9yLnB1c2goImZjLXBhc3QiKTpyLnB1c2goImZjLWZ1dHVyZSIpKTpyLnB1c2goImZjLWRpc2FibGVkLWRheSIpLHJ9fSk7bWUubWl4aW4oe3NlZ1NlbGVjdG9yOiIuZmMtZXZlbnQtY29udGFpbmVyID4gKiIsbW91c2VkT3ZlclNlZzpudWxsLGlzRHJhZ2dpbmdTZWc6ITEsaXNSZXNpemluZ1NlZzohMSxpc0RyYWdnaW5nRXh0ZXJuYWw6ITEsc2VnczpudWxsLHJlbmRlckV2ZW50czpmdW5jdGlvbih0KXt2YXIgZSxuPVtdLGk9W107Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKykoeHQodFtlXSk/bjppKS5wdXNoKHRbZV0pO3RoaXMuc2Vncz1bXS5jb25jYXQodGhpcy5yZW5kZXJCZ0V2ZW50cyhuKSx0aGlzLnJlbmRlckZnRXZlbnRzKGkpKX0scmVuZGVyQmdFdmVudHM6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5ldmVudHNUb1NlZ3ModCk7cmV0dXJuIHRoaXMucmVuZGVyQmdTZWdzKGUpfHxlfSxyZW5kZXJGZ0V2ZW50czpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmV2ZW50c1RvU2Vncyh0KTtyZXR1cm4gdGhpcy5yZW5kZXJGZ1NlZ3MoZSl8fGV9LHVucmVuZGVyRXZlbnRzOmZ1bmN0aW9uKCl7dGhpcy5oYW5kbGVTZWdNb3VzZW91dCgpLHRoaXMuY2xlYXJEcmFnTGlzdGVuZXJzKCksdGhpcy51bnJlbmRlckZnU2VncygpLHRoaXMudW5yZW5kZXJCZ1NlZ3MoKSx0aGlzLnNlZ3M9bnVsbH0sZ2V0RXZlbnRTZWdzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2Vnc3x8W119LHJlbmRlckZnU2VnczpmdW5jdGlvbih0KXt9LHVucmVuZGVyRmdTZWdzOmZ1bmN0aW9uKCl7fSxyZW5kZXJGZ1NlZ0VsczpmdW5jdGlvbihlLG4pe3ZhciBpLHI9dGhpcy52aWV3LHM9IiIsbz1bXTtpZihlLmxlbmd0aCl7Zm9yKGk9MDtpPGUubGVuZ3RoO2krKylzKz10aGlzLmZnU2VnSHRtbChlW2ldLG4pO3QocykuZWFjaChmdW5jdGlvbihuLGkpe3ZhciBzPWVbbl0sbD1yLnJlc29sdmVFdmVudEVsKHMuZXZlbnQsdChpKSk7bCYmKGwuZGF0YSgiZmMtc2VnIixzKSxzLmVsPWwsby5wdXNoKHMpKX0pfXJldHVybiBvfSxmZ1NlZ0h0bWw6ZnVuY3Rpb24odCxlKXt9LHJlbmRlckJnU2VnczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZW5kZXJGaWxsKCJiZ0V2ZW50Iix0KX0sdW5yZW5kZXJCZ1NlZ3M6ZnVuY3Rpb24oKXt0aGlzLnVucmVuZGVyRmlsbCgiYmdFdmVudCIpfSxiZ0V2ZW50U2VnRWw6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy52aWV3LnJlc29sdmVFdmVudEVsKHQuZXZlbnQsZSl9LGJnRXZlbnRTZWdDbGFzc2VzOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZXZlbnQsbj1lLnNvdXJjZXx8e307cmV0dXJuWyJmYy1iZ2V2ZW50Il0uY29uY2F0KGUuY2xhc3NOYW1lLG4uY2xhc3NOYW1lfHxbXSl9LGJnRXZlbnRTZWdDc3M6ZnVuY3Rpb24odCl7cmV0dXJueyJiYWNrZ3JvdW5kLWNvbG9yIjp0aGlzLmdldFNlZ1NraW5Dc3ModClbImJhY2tncm91bmQtY29sb3IiXX19LGJ1c2luZXNzSG91cnNTZWdDbGFzc2VzOmZ1bmN0aW9uKHQpe3JldHVyblsiZmMtbm9uYnVzaW5lc3MiLCJmYy1iZ2V2ZW50Il19LGJ1aWxkQnVzaW5lc3NIb3VyU2VnczpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmV2ZW50c1RvU2Vncyh0aGlzLmJ1aWxkQnVzaW5lc3NIb3VyRXZlbnRzKHQsZSkpfSxidWlsZEJ1c2luZXNzSG91ckV2ZW50czpmdW5jdGlvbihlLG4pe3ZhciBpLHI9dGhpcy52aWV3LmNhbGVuZGFyO3JldHVybiBudWxsPT1uJiYobj1yLm9wdGlvbnMuYnVzaW5lc3NIb3VycyksaT1yLmNvbXB1dGVCdXNpbmVzc0hvdXJFdmVudHMoZSxuKSwhaS5sZW5ndGgmJm4mJihpPVt0LmV4dGVuZCh7fSxrZSx7c3RhcnQ6dGhpcy52aWV3LmFjdGl2ZVJhbmdlLmVuZCxlbmQ6dGhpcy52aWV3LmFjdGl2ZVJhbmdlLmVuZCxkb3c6bnVsbH0pXSksaX0sYmluZFNlZ0hhbmRsZXJzOmZ1bmN0aW9uKCl7dGhpcy5iaW5kU2VnSGFuZGxlcnNUb0VsKHRoaXMuZWwpfSxiaW5kU2VnSGFuZGxlcnNUb0VsOmZ1bmN0aW9uKHQpe3RoaXMuYmluZFNlZ0hhbmRsZXJUb0VsKHQsInRvdWNoc3RhcnQiLHRoaXMuaGFuZGxlU2VnVG91Y2hTdGFydCksdGhpcy5iaW5kU2VnSGFuZGxlclRvRWwodCwibW91c2VlbnRlciIsdGhpcy5oYW5kbGVTZWdNb3VzZW92ZXIpLHRoaXMuYmluZFNlZ0hhbmRsZXJUb0VsKHQsIm1vdXNlbGVhdmUiLHRoaXMuaGFuZGxlU2VnTW91c2VvdXQpLHRoaXMuYmluZFNlZ0hhbmRsZXJUb0VsKHQsIm1vdXNlZG93biIsdGhpcy5oYW5kbGVTZWdNb3VzZWRvd24pLHRoaXMuYmluZFNlZ0hhbmRsZXJUb0VsKHQsImNsaWNrIix0aGlzLmhhbmRsZVNlZ0NsaWNrKX0sYmluZFNlZ0hhbmRsZXJUb0VsOmZ1bmN0aW9uKGUsbixpKXt2YXIgcj10aGlzO2Uub24obix0aGlzLnNlZ1NlbGVjdG9yLGZ1bmN0aW9uKGUpe3ZhciBuPXQodGhpcykuZGF0YSgiZmMtc2VnIik7aWYobiYmIXIuaXNEcmFnZ2luZ1NlZyYmIXIuaXNSZXNpemluZ1NlZylyZXR1cm4gaS5jYWxsKHIsbixlKX0pfSxoYW5kbGVTZWdDbGljazpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMudmlldy5wdWJsaWNseVRyaWdnZXIoImV2ZW50Q2xpY2siLHQuZWxbMF0sdC5ldmVudCxlKTtuPT09ITEmJmUucHJldmVudERlZmF1bHQoKX0saGFuZGxlU2VnTW91c2VvdmVyOmZ1bmN0aW9uKHQsZSl7cGUuZ2V0KCkuc2hvdWxkSWdub3JlTW91c2UoKXx8dGhpcy5tb3VzZWRPdmVyU2VnfHwodGhpcy5tb3VzZWRPdmVyU2VnPXQsdGhpcy52aWV3LmlzRXZlbnRSZXNpemFibGUodC5ldmVudCkmJnQuZWwuYWRkQ2xhc3MoImZjLWFsbG93LW1vdXNlLXJlc2l6ZSIpLHRoaXMudmlldy5wdWJsaWNseVRyaWdnZXIoImV2ZW50TW91c2VvdmVyIix0LmVsWzBdLHQuZXZlbnQsZSkpfSxoYW5kbGVTZWdNb3VzZW91dDpmdW5jdGlvbih0LGUpe2U9ZXx8e30sdGhpcy5tb3VzZWRPdmVyU2VnJiYodD10fHx0aGlzLm1vdXNlZE92ZXJTZWcsdGhpcy5tb3VzZWRPdmVyU2VnPW51bGwsdGhpcy52aWV3LmlzRXZlbnRSZXNpemFibGUodC5ldmVudCkmJnQuZWwucmVtb3ZlQ2xhc3MoImZjLWFsbG93LW1vdXNlLXJlc2l6ZSIpLHRoaXMudmlldy5wdWJsaWNseVRyaWdnZXIoImV2ZW50TW91c2VvdXQiLHQuZWxbMF0sdC5ldmVudCxlKSl9LGhhbmRsZVNlZ01vdXNlZG93bjpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuc3RhcnRTZWdSZXNpemUodCxlLHtkaXN0YW5jZTo1fSk7IW4mJnRoaXMudmlldy5pc0V2ZW50RHJhZ2dhYmxlKHQuZXZlbnQpJiZ0aGlzLmJ1aWxkU2VnRHJhZ0xpc3RlbmVyKHQpLnN0YXJ0SW50ZXJhY3Rpb24oZSx7ZGlzdGFuY2U6NX0pfSxoYW5kbGVTZWdUb3VjaFN0YXJ0OmZ1bmN0aW9uKHQsZSl7dmFyIG4saSxyPXRoaXMudmlldyxzPXQuZXZlbnQsbz1yLmlzRXZlbnRTZWxlY3RlZChzKSxsPXIuaXNFdmVudERyYWdnYWJsZShzKSxhPXIuaXNFdmVudFJlc2l6YWJsZShzKSx1PSExO28mJmEmJih1PXRoaXMuc3RhcnRTZWdSZXNpemUodCxlKSksdXx8IWwmJiFhfHwoaT1yLm9wdCgiZXZlbnRMb25nUHJlc3NEZWxheSIpLG51bGw9PWkmJihpPXIub3B0KCJsb25nUHJlc3NEZWxheSIpKSxuPWw/dGhpcy5idWlsZFNlZ0RyYWdMaXN0ZW5lcih0KTp0aGlzLmJ1aWxkU2VnU2VsZWN0TGlzdGVuZXIodCksbi5zdGFydEludGVyYWN0aW9uKGUse2RlbGF5Om8/MDppfSkpfSxzdGFydFNlZ1Jlc2l6ZTpmdW5jdGlvbihlLG4saSl7cmV0dXJuISF0KG4udGFyZ2V0KS5pcygiLmZjLXJlc2l6ZXIiKSYmKHRoaXMuYnVpbGRTZWdSZXNpemVMaXN0ZW5lcihlLHQobi50YXJnZXQpLmlzKCIuZmMtc3RhcnQtcmVzaXplciIpKS5zdGFydEludGVyYWN0aW9uKG4saSksITApfSxidWlsZFNlZ0RyYWdMaXN0ZW5lcjpmdW5jdGlvbih0KXt2YXIgZSxuLGkscj10aGlzLGw9dGhpcy52aWV3LGE9dC5lbCx1PXQuZXZlbnQ7aWYodGhpcy5zZWdEcmFnTGlzdGVuZXIpcmV0dXJuIHRoaXMuc2VnRHJhZ0xpc3RlbmVyO3ZhciBjPXRoaXMuc2VnRHJhZ0xpc3RlbmVyPW5ldyBnZShsLHtzY3JvbGw6bC5vcHQoImRyYWdTY3JvbGwiKSxzdWJqZWN0RWw6YSxzdWJqZWN0Q2VudGVyOiEwLGludGVyYWN0aW9uU3RhcnQ6ZnVuY3Rpb24oaSl7dC5jb21wb25lbnQ9cixlPSExLG49bmV3IHZlKHQuZWwse2FkZGl0aW9uYWxDbGFzczoiZmMtZHJhZ2dpbmciLHBhcmVudEVsOmwuZWwsb3BhY2l0eTpjLmlzVG91Y2g/bnVsbDpsLm9wdCgiZHJhZ09wYWNpdHkiKSxyZXZlcnREdXJhdGlvbjpsLm9wdCgiZHJhZ1JldmVydER1cmF0aW9uIiksekluZGV4OjJ9KSxuLmhpZGUoKSxuLnN0YXJ0KGkpfSxkcmFnU3RhcnQ6ZnVuY3Rpb24obil7Yy5pc1RvdWNoJiYhbC5pc0V2ZW50U2VsZWN0ZWQodSkmJmwuc2VsZWN0RXZlbnQodSksZT0hMCxyLmhhbmRsZVNlZ01vdXNlb3V0KHQsbiksci5zZWdEcmFnU3RhcnQodCxuKSxsLmhpZGVFdmVudCh1KX0saGl0T3ZlcjpmdW5jdGlvbihlLG8sYSl7dmFyIGQsaCxmLGc9ITA7dC5oaXQmJihhPXQuaGl0KSxkPWEuY29tcG9uZW50LmdldFNhZmVIaXRTcGFuKGEpLGg9ZS5jb21wb25lbnQuZ2V0U2FmZUhpdFNwYW4oZSksZCYmaD8oaT1yLmNvbXB1dGVFdmVudERyb3AoZCxoLHUpLGc9aSYmci5pc0V2ZW50TG9jYXRpb25BbGxvd2VkKGksdSkpOmc9ITEsZ3x8KGk9bnVsbCxzKCkpLGkmJihmPWwucmVuZGVyRHJhZyhpLHQpKT8oZi5hZGRDbGFzcygiZmMtZHJhZ2dpbmciKSxjLmlzVG91Y2h8fHIuYXBwbHlEcmFnT3BhY2l0eShmKSxuLmhpZGUoKSk6bi5zaG93KCksbyYmKGk9bnVsbCl9LGhpdE91dDpmdW5jdGlvbigpe2wudW5yZW5kZXJEcmFnKCksbi5zaG93KCksaT1udWxsfSxoaXREb25lOmZ1bmN0aW9uKCl7bygpfSxpbnRlcmFjdGlvbkVuZDpmdW5jdGlvbihzKXtkZWxldGUgdC5jb21wb25lbnQsbi5zdG9wKCFpLGZ1bmN0aW9uKCl7ZSYmKGwudW5yZW5kZXJEcmFnKCksci5zZWdEcmFnU3RvcCh0LHMpKSxpP2wucmVwb3J0U2VnRHJvcCh0LGksci5sYXJnZVVuaXQsYSxzKTpsLnNob3dFdmVudCh1KX0pLHIuc2VnRHJhZ0xpc3RlbmVyPW51bGx9fSk7cmV0dXJuIGN9LGJ1aWxkU2VnU2VsZWN0TGlzdGVuZXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPXRoaXMudmlldyxpPXQuZXZlbnQ7aWYodGhpcy5zZWdEcmFnTGlzdGVuZXIpcmV0dXJuIHRoaXMuc2VnRHJhZ0xpc3RlbmVyO3ZhciByPXRoaXMuc2VnRHJhZ0xpc3RlbmVyPW5ldyBmZSh7ZHJhZ1N0YXJ0OmZ1bmN0aW9uKHQpe3IuaXNUb3VjaCYmIW4uaXNFdmVudFNlbGVjdGVkKGkpJiZuLnNlbGVjdEV2ZW50KGkpfSxpbnRlcmFjdGlvbkVuZDpmdW5jdGlvbih0KXtlLnNlZ0RyYWdMaXN0ZW5lcj1udWxsfX0pO3JldHVybiByfSxzZWdEcmFnU3RhcnQ6ZnVuY3Rpb24odCxlKXt0aGlzLmlzRHJhZ2dpbmdTZWc9ITAsdGhpcy52aWV3LnB1YmxpY2x5VHJpZ2dlcigiZXZlbnREcmFnU3RhcnQiLHQuZWxbMF0sdC5ldmVudCxlLHt9KX0sc2VnRHJhZ1N0b3A6ZnVuY3Rpb24odCxlKXt0aGlzLmlzRHJhZ2dpbmdTZWc9ITEsdGhpcy52aWV3LnB1YmxpY2x5VHJpZ2dlcigiZXZlbnREcmFnU3RvcCIsdC5lbFswXSx0LmV2ZW50LGUse30pfSxjb21wdXRlRXZlbnREcm9wOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaSxyLHM9dGhpcy52aWV3LmNhbGVuZGFyLG89dC5zdGFydCxsPWUuc3RhcnQ7cmV0dXJuIG8uaGFzVGltZSgpPT09bC5oYXNUaW1lKCk/KGk9dGhpcy5kaWZmRGF0ZXMobCxvKSxuLmFsbERheSYmdHQoaSk/KHI9e3N0YXJ0Om4uc3RhcnQuY2xvbmUoKSxlbmQ6cy5nZXRFdmVudEVuZChuKSxhbGxEYXk6ITF9LHMubm9ybWFsaXplRXZlbnRUaW1lcyhyKSk6cj1SdChuKSxyLnN0YXJ0LmFkZChpKSxyLmVuZCYmci5lbmQuYWRkKGkpKTpyPXtzdGFydDpsLmNsb25lKCksZW5kOm51bGwsYWxsRGF5OiFsLmhhc1RpbWUoKX0scn0sYXBwbHlEcmFnT3BhY2l0eTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnZpZXcub3B0KCJkcmFnT3BhY2l0eSIpO251bGwhPWUmJnQuY3NzKCJvcGFjaXR5IixlKX0sZXh0ZXJuYWxEcmFnU3RhcnQ6ZnVuY3Rpb24oZSxuKXt2YXIgaSxyLHM9dGhpcy52aWV3O3Mub3B0KCJkcm9wcGFibGUiKSYmKGk9dCgobj9uLml0ZW06bnVsbCl8fGUudGFyZ2V0KSxyPXMub3B0KCJkcm9wQWNjZXB0IiksKHQuaXNGdW5jdGlvbihyKT9yLmNhbGwoaVswXSxpKTppLmlzKHIpKSYmKHRoaXMuaXNEcmFnZ2luZ0V4dGVybmFsfHx0aGlzLmxpc3RlblRvRXh0ZXJuYWxEcmFnKGksZSxuKSkpfSxsaXN0ZW5Ub0V4dGVybmFsRHJhZzpmdW5jdGlvbih0LGUsbil7dmFyIGkscj10aGlzLGw9dGhpcy52aWV3LGE9QnQodCksdT1yLmV4dGVybmFsRHJhZ0xpc3RlbmVyPW5ldyBnZSh0aGlzLHtpbnRlcmFjdGlvblN0YXJ0OmZ1bmN0aW9uKCl7ci5pc0RyYWdnaW5nRXh0ZXJuYWw9ITB9LGhpdE92ZXI6ZnVuY3Rpb24odCl7dmFyIGU9ITAsbj10LmNvbXBvbmVudC5nZXRTYWZlSGl0U3Bhbih0KTtuPyhpPXIuY29tcHV0ZUV4dGVybmFsRHJvcChuLGEpLGU9aSYmci5pc0V4dGVybmFsTG9jYXRpb25BbGxvd2VkKGksYS5ldmVudFByb3BzKSk6ZT0hMSxlfHwoaT1udWxsLHMoKSksaSYmci5yZW5kZXJEcmFnKGkpfSxoaXRPdXQ6ZnVuY3Rpb24oKXtpPW51bGx9LGhpdERvbmU6ZnVuY3Rpb24oKXtvKCksci51bnJlbmRlckRyYWcoKX0saW50ZXJhY3Rpb25FbmQ6ZnVuY3Rpb24oZSl7aSYmbC5yZXBvcnRFeHRlcm5hbERyb3AoYSxpLHQsZSxuKSxyLmlzRHJhZ2dpbmdFeHRlcm5hbD0hMSxyLmV4dGVybmFsRHJhZ0xpc3RlbmVyPW51bGx9fSk7dS5zdGFydERyYWcoZSl9LGNvbXB1dGVFeHRlcm5hbERyb3A6ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLnZpZXcuY2FsZW5kYXIsaT17c3RhcnQ6bi5hcHBseVRpbWV6b25lKHQuc3RhcnQpLGVuZDpudWxsfTtyZXR1cm4gZS5zdGFydFRpbWUmJiFpLnN0YXJ0Lmhhc1RpbWUoKSYmaS5zdGFydC50aW1lKGUuc3RhcnRUaW1lKSxlLmR1cmF0aW9uJiYoaS5lbmQ9aS5zdGFydC5jbG9uZSgpLmFkZChlLmR1cmF0aW9uKSksaX0scmVuZGVyRHJhZzpmdW5jdGlvbih0LGUpe30sdW5yZW5kZXJEcmFnOmZ1bmN0aW9uKCl7fSxidWlsZFNlZ1Jlc2l6ZUxpc3RlbmVyOmZ1bmN0aW9uKHQsZSl7dmFyIG4saSxyPXRoaXMsbD10aGlzLnZpZXcsYT1sLmNhbGVuZGFyLHU9dC5lbCxjPXQuZXZlbnQsZD1hLmdldEV2ZW50RW5kKGMpLGg9dGhpcy5zZWdSZXNpemVMaXN0ZW5lcj1uZXcgZ2UodGhpcyx7c2Nyb2xsOmwub3B0KCJkcmFnU2Nyb2xsIiksc3ViamVjdEVsOnUsaW50ZXJhY3Rpb25TdGFydDpmdW5jdGlvbigpe249ITF9LGRyYWdTdGFydDpmdW5jdGlvbihlKXtuPSEwLHIuaGFuZGxlU2VnTW91c2VvdXQodCxlKSxyLnNlZ1Jlc2l6ZVN0YXJ0KHQsZSl9LGhpdE92ZXI6ZnVuY3Rpb24obixvLGEpe3ZhciB1PSEwLGg9ci5nZXRTYWZlSGl0U3BhbihhKSxmPXIuZ2V0U2FmZUhpdFNwYW4obik7aCYmZj8oaT1lP3IuY29tcHV0ZUV2ZW50U3RhcnRSZXNpemUoaCxmLGMpOnIuY29tcHV0ZUV2ZW50RW5kUmVzaXplKGgsZixjKSx1PWkmJnIuaXNFdmVudExvY2F0aW9uQWxsb3dlZChpLGMpKTp1PSExLHU/aS5zdGFydC5pc1NhbWUoYy5zdGFydC5jbG9uZSgpLnN0cmlwWm9uZSgpKSYmaS5lbmQuaXNTYW1lKGQuY2xvbmUoKS5zdHJpcFpvbmUoKSkmJihpPW51bGwpOihpPW51bGwscygpKSxpJiYobC5oaWRlRXZlbnQoYyksci5yZW5kZXJFdmVudFJlc2l6ZShpLHQpKX0saGl0T3V0OmZ1bmN0aW9uKCl7Cmk9bnVsbCxsLnNob3dFdmVudChjKX0saGl0RG9uZTpmdW5jdGlvbigpe3IudW5yZW5kZXJFdmVudFJlc2l6ZSgpLG8oKX0saW50ZXJhY3Rpb25FbmQ6ZnVuY3Rpb24oZSl7biYmci5zZWdSZXNpemVTdG9wKHQsZSksaT9sLnJlcG9ydFNlZ1Jlc2l6ZSh0LGksci5sYXJnZVVuaXQsdSxlKTpsLnNob3dFdmVudChjKSxyLnNlZ1Jlc2l6ZUxpc3RlbmVyPW51bGx9fSk7cmV0dXJuIGh9LHNlZ1Jlc2l6ZVN0YXJ0OmZ1bmN0aW9uKHQsZSl7dGhpcy5pc1Jlc2l6aW5nU2VnPSEwLHRoaXMudmlldy5wdWJsaWNseVRyaWdnZXIoImV2ZW50UmVzaXplU3RhcnQiLHQuZWxbMF0sdC5ldmVudCxlLHt9KX0sc2VnUmVzaXplU3RvcDpmdW5jdGlvbih0LGUpe3RoaXMuaXNSZXNpemluZ1NlZz0hMSx0aGlzLnZpZXcucHVibGljbHlUcmlnZ2VyKCJldmVudFJlc2l6ZVN0b3AiLHQuZWxbMF0sdC5ldmVudCxlLHt9KX0sY29tcHV0ZUV2ZW50U3RhcnRSZXNpemU6ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLmNvbXB1dGVFdmVudFJlc2l6ZSgic3RhcnQiLHQsZSxuKX0sY29tcHV0ZUV2ZW50RW5kUmVzaXplOmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5jb21wdXRlRXZlbnRSZXNpemUoImVuZCIsdCxlLG4pfSxjb21wdXRlRXZlbnRSZXNpemU6ZnVuY3Rpb24odCxlLG4saSl7dmFyIHIscyxvPXRoaXMudmlldy5jYWxlbmRhcixsPXRoaXMuZGlmZkRhdGVzKG5bdF0sZVt0XSk7cmV0dXJuIHI9e3N0YXJ0Omkuc3RhcnQuY2xvbmUoKSxlbmQ6by5nZXRFdmVudEVuZChpKSxhbGxEYXk6aS5hbGxEYXl9LHIuYWxsRGF5JiZ0dChsKSYmKHIuYWxsRGF5PSExLG8ubm9ybWFsaXplRXZlbnRUaW1lcyhyKSksclt0XS5hZGQobCksci5zdGFydC5pc0JlZm9yZShyLmVuZCl8fChzPXRoaXMubWluUmVzaXplRHVyYXRpb258fChpLmFsbERheT9vLmRlZmF1bHRBbGxEYXlFdmVudER1cmF0aW9uOm8uZGVmYXVsdFRpbWVkRXZlbnREdXJhdGlvbiksInN0YXJ0Ij09dD9yLnN0YXJ0PXIuZW5kLmNsb25lKCkuc3VidHJhY3Qocyk6ci5lbmQ9ci5zdGFydC5jbG9uZSgpLmFkZChzKSkscn0scmVuZGVyRXZlbnRSZXNpemU6ZnVuY3Rpb24odCxlKXt9LHVucmVuZGVyRXZlbnRSZXNpemU6ZnVuY3Rpb24oKXt9LGdldEV2ZW50VGltZVRleHQ6ZnVuY3Rpb24odCxlLG4pe3JldHVybiBudWxsPT1lJiYoZT10aGlzLmV2ZW50VGltZUZvcm1hdCksbnVsbD09biYmKG49dGhpcy5kaXNwbGF5RXZlbnRFbmQpLHRoaXMuZGlzcGxheUV2ZW50VGltZSYmdC5zdGFydC5oYXNUaW1lKCk/biYmdC5lbmQ/dGhpcy52aWV3LmZvcm1hdFJhbmdlKHQsZSk6dC5zdGFydC5mb3JtYXQoZSk6IiJ9LGdldFNlZ0NsYXNzZXM6ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXRoaXMudmlldyxyPVsiZmMtZXZlbnQiLHQuaXNTdGFydD8iZmMtc3RhcnQiOiJmYy1ub3Qtc3RhcnQiLHQuaXNFbmQ/ImZjLWVuZCI6ImZjLW5vdC1lbmQiXS5jb25jYXQodGhpcy5nZXRTZWdDdXN0b21DbGFzc2VzKHQpKTtyZXR1cm4gZSYmci5wdXNoKCJmYy1kcmFnZ2FibGUiKSxuJiZyLnB1c2goImZjLXJlc2l6YWJsZSIpLGkuaXNFdmVudFNlbGVjdGVkKHQuZXZlbnQpJiZyLnB1c2goImZjLXNlbGVjdGVkIikscn0sZ2V0U2VnQ3VzdG9tQ2xhc3NlczpmdW5jdGlvbih0KXt2YXIgZT10LmV2ZW50O3JldHVybltdLmNvbmNhdChlLmNsYXNzTmFtZSxlLnNvdXJjZT9lLnNvdXJjZS5jbGFzc05hbWU6W10pfSxnZXRTZWdTa2luQ3NzOmZ1bmN0aW9uKHQpe3JldHVybnsiYmFja2dyb3VuZC1jb2xvciI6dGhpcy5nZXRTZWdCYWNrZ3JvdW5kQ29sb3IodCksImJvcmRlci1jb2xvciI6dGhpcy5nZXRTZWdCb3JkZXJDb2xvcih0KSxjb2xvcjp0aGlzLmdldFNlZ1RleHRDb2xvcih0KX19LGdldFNlZ0JhY2tncm91bmRDb2xvcjpmdW5jdGlvbih0KXtyZXR1cm4gdC5ldmVudC5iYWNrZ3JvdW5kQ29sb3J8fHQuZXZlbnQuY29sb3J8fHRoaXMuZ2V0U2VnRGVmYXVsdEJhY2tncm91bmRDb2xvcih0KX0sZ2V0U2VnRGVmYXVsdEJhY2tncm91bmRDb2xvcjpmdW5jdGlvbih0KXt2YXIgZT10LmV2ZW50LnNvdXJjZXx8e307cmV0dXJuIGUuYmFja2dyb3VuZENvbG9yfHxlLmNvbG9yfHx0aGlzLnZpZXcub3B0KCJldmVudEJhY2tncm91bmRDb2xvciIpfHx0aGlzLnZpZXcub3B0KCJldmVudENvbG9yIil9LGdldFNlZ0JvcmRlckNvbG9yOmZ1bmN0aW9uKHQpe3JldHVybiB0LmV2ZW50LmJvcmRlckNvbG9yfHx0LmV2ZW50LmNvbG9yfHx0aGlzLmdldFNlZ0RlZmF1bHRCb3JkZXJDb2xvcih0KX0sZ2V0U2VnRGVmYXVsdEJvcmRlckNvbG9yOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZXZlbnQuc291cmNlfHx7fTtyZXR1cm4gZS5ib3JkZXJDb2xvcnx8ZS5jb2xvcnx8dGhpcy52aWV3Lm9wdCgiZXZlbnRCb3JkZXJDb2xvciIpfHx0aGlzLnZpZXcub3B0KCJldmVudENvbG9yIil9LGdldFNlZ1RleHRDb2xvcjpmdW5jdGlvbih0KXtyZXR1cm4gdC5ldmVudC50ZXh0Q29sb3J8fHRoaXMuZ2V0U2VnRGVmYXVsdFRleHRDb2xvcih0KX0sZ2V0U2VnRGVmYXVsdFRleHRDb2xvcjpmdW5jdGlvbih0KXt2YXIgZT10LmV2ZW50LnNvdXJjZXx8e307cmV0dXJuIGUudGV4dENvbG9yfHx0aGlzLnZpZXcub3B0KCJldmVudFRleHRDb2xvciIpfSxpc0V2ZW50TG9jYXRpb25BbGxvd2VkOmZ1bmN0aW9uKHQsZSl7aWYodGhpcy5pc0V2ZW50TG9jYXRpb25JblJhbmdlKHQpKXt2YXIgbixpPXRoaXMudmlldy5jYWxlbmRhcixyPXRoaXMuZXZlbnRUb1NwYW5zKHQpO2lmKHIubGVuZ3RoKXtmb3Iobj0wO248ci5sZW5ndGg7bisrKWlmKCFpLmlzRXZlbnRTcGFuQWxsb3dlZChyW25dLGUpKXJldHVybiExO3JldHVybiEwfX1yZXR1cm4hMX0saXNFeHRlcm5hbExvY2F0aW9uQWxsb3dlZDpmdW5jdGlvbih0LGUpe2lmKHRoaXMuaXNFdmVudExvY2F0aW9uSW5SYW5nZSh0KSl7dmFyIG4saT10aGlzLnZpZXcuY2FsZW5kYXIscj10aGlzLmV2ZW50VG9TcGFucyh0KTtpZihyLmxlbmd0aCl7Zm9yKG49MDtuPHIubGVuZ3RoO24rKylpZighaS5pc0V4dGVybmFsU3BhbkFsbG93ZWQocltuXSx0LGUpKXJldHVybiExO3JldHVybiEwfX1yZXR1cm4hMX0saXNFdmVudExvY2F0aW9uSW5SYW5nZTpmdW5jdGlvbih0KXtyZXR1cm4gUSh0aGlzLmV2ZW50VG9SYXdSYW5nZSh0KSx0aGlzLnZpZXcudmFsaWRSYW5nZSl9LGV2ZW50VG9TZWdzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmV2ZW50c1RvU2VncyhbdF0pfSxldmVudFRvU3BhbnM6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5ldmVudFRvUmFuZ2UodCk7cmV0dXJuIGU/dGhpcy5ldmVudFJhbmdlVG9TcGFucyhlLHQpOltdfSxldmVudHNUb1NlZ3M6ZnVuY3Rpb24oZSxuKXt2YXIgaT10aGlzLHI9THQoZSkscz1bXTtyZXR1cm4gdC5lYWNoKHIsZnVuY3Rpb24odCxlKXt2YXIgcixvLGw9W10sYT1bXTtmb3Iobz0wO288ZS5sZW5ndGg7bysrKXI9aS5ldmVudFRvUmFuZ2UoZVtvXSksciYmKGEucHVzaChyKSxsLnB1c2goZVtvXSkpO2lmKEl0KGVbMF0pKWZvcihhPWkuaW52ZXJ0UmFuZ2VzKGEpLG89MDtvPGEubGVuZ3RoO28rKylzLnB1c2guYXBwbHkocyxpLmV2ZW50UmFuZ2VUb1NlZ3MoYVtvXSxlWzBdLG4pKTtlbHNlIGZvcihvPTA7bzxhLmxlbmd0aDtvKyspcy5wdXNoLmFwcGx5KHMsaS5ldmVudFJhbmdlVG9TZWdzKGFbb10sbFtvXSxuKSl9KSxzfSxldmVudFRvUmFuZ2U6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVmaW5lUmF3RXZlbnRSYW5nZSh0aGlzLmV2ZW50VG9SYXdSYW5nZSh0KSl9LHJlZmluZVJhd0V2ZW50UmFuZ2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy52aWV3LG49ZS5jYWxlbmRhcixpPU4odCxlLmFjdGl2ZVJhbmdlKTtpZihpKXJldHVybiBuLmxvY2FsaXplTW9tZW50KGkuc3RhcnQpLG4ubG9jYWxpemVNb21lbnQoaS5lbmQpLGl9LGV2ZW50VG9SYXdSYW5nZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnZpZXcuY2FsZW5kYXIsbj10LnN0YXJ0LmNsb25lKCkuc3RyaXBab25lKCksaT0odC5lbmQ/dC5lbmQuY2xvbmUoKTplLmdldERlZmF1bHRFdmVudEVuZChudWxsIT10LmFsbERheT90LmFsbERheTohdC5zdGFydC5oYXNUaW1lKCksdC5zdGFydCkpLnN0cmlwWm9uZSgpO3JldHVybntzdGFydDpuLGVuZDppfX0sZXZlbnRSYW5nZVRvU2VnczpmdW5jdGlvbih0LGUsbil7dmFyIGkscj10aGlzLmV2ZW50UmFuZ2VUb1NwYW5zKHQsZSkscz1bXTtmb3IoaT0wO2k8ci5sZW5ndGg7aSsrKXMucHVzaC5hcHBseShzLHRoaXMuZXZlbnRTcGFuVG9TZWdzKHJbaV0sZSxuKSk7cmV0dXJuIHN9LGV2ZW50UmFuZ2VUb1NwYW5zOmZ1bmN0aW9uKGUsbil7cmV0dXJuW3QuZXh0ZW5kKHt9LGUpXX0sZXZlbnRTcGFuVG9TZWdzOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaSxyLHM9bj9uKHQpOnRoaXMuc3BhblRvU2Vncyh0KTtmb3IoaT0wO2k8cy5sZW5ndGg7aSsrKXI9c1tpXSx0LmlzU3RhcnR8fChyLmlzU3RhcnQ9ITEpLHQuaXNFbmR8fChyLmlzRW5kPSExKSxyLmV2ZW50PWUsci5ldmVudFN0YXJ0TVM9K3Quc3RhcnQsci5ldmVudER1cmF0aW9uTVM9dC5lbmQtdC5zdGFydDtyZXR1cm4gc30saW52ZXJ0UmFuZ2VzOmZ1bmN0aW9uKHQpe3ZhciBlLG4saT10aGlzLnZpZXcscj1pLmFjdGl2ZVJhbmdlLnN0YXJ0LmNsb25lKCkscz1pLmFjdGl2ZVJhbmdlLmVuZC5jbG9uZSgpLG89W10sbD1yO2Zvcih0LnNvcnQoTXQpLGU9MDtlPHQubGVuZ3RoO2UrKyluPXRbZV0sbi5zdGFydD5sJiZvLnB1c2goe3N0YXJ0OmwsZW5kOm4uc3RhcnR9KSxsPW4uZW5kO3JldHVybiBsPHMmJm8ucHVzaCh7c3RhcnQ6bCxlbmQ6c30pLG99LHNvcnRFdmVudFNlZ3M6ZnVuY3Rpb24odCl7dC5zb3J0KG10KHRoaXMsImNvbXBhcmVFdmVudFNlZ3MiKSl9LGNvbXBhcmVFdmVudFNlZ3M6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5ldmVudFN0YXJ0TVMtZS5ldmVudFN0YXJ0TVN8fGUuZXZlbnREdXJhdGlvbk1TLXQuZXZlbnREdXJhdGlvbk1TfHxlLmV2ZW50LmFsbERheS10LmV2ZW50LmFsbERheXx8TSh0LmV2ZW50LGUuZXZlbnQsdGhpcy52aWV3LmV2ZW50T3JkZXJTcGVjcyl9fSksWnQucGx1Y2tFdmVudERhdGVQcm9wcz1SdCxadC5pc0JnRXZlbnQ9eHQsWnQuZGF0YUF0dHJQcmVmaXg9IiI7dmFyIHllPVp0LkRheVRhYmxlTWl4aW49e2JyZWFrT25XZWVrczohMSxkYXlEYXRlczpudWxsLGRheUluZGljZXM6bnVsbCxkYXlzUGVyUm93Om51bGwscm93Q250Om51bGwsY29sQ250Om51bGwsY29sSGVhZEZvcm1hdDpudWxsLHVwZGF0ZURheVRhYmxlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0LGUsbixpPXRoaXMudmlldyxyPXRoaXMuc3RhcnQuY2xvbmUoKSxzPS0xLG89W10sbD1bXTtyLmlzQmVmb3JlKHRoaXMuZW5kKTspaS5pc0hpZGRlbkRheShyKT9vLnB1c2gocysuNSk6KHMrKyxvLnB1c2gocyksbC5wdXNoKHIuY2xvbmUoKSkpLHIuYWRkKDEsImRheXMiKTtpZih0aGlzLmJyZWFrT25XZWVrcyl7Zm9yKGU9bFswXS5kYXkoKSx0PTE7dDxsLmxlbmd0aCYmbFt0XS5kYXkoKSE9ZTt0KyspO249TWF0aC5jZWlsKGwubGVuZ3RoL3QpfWVsc2Ugbj0xLHQ9bC5sZW5ndGg7dGhpcy5kYXlEYXRlcz1sLHRoaXMuZGF5SW5kaWNlcz1vLHRoaXMuZGF5c1BlclJvdz10LHRoaXMucm93Q250PW4sdGhpcy51cGRhdGVEYXlUYWJsZUNvbHMoKX0sdXBkYXRlRGF5VGFibGVDb2xzOmZ1bmN0aW9uKCl7dGhpcy5jb2xDbnQ9dGhpcy5jb21wdXRlQ29sQ250KCksdGhpcy5jb2xIZWFkRm9ybWF0PXRoaXMudmlldy5vcHQoImNvbHVtbkZvcm1hdCIpfHx0aGlzLmNvbXB1dGVDb2xIZWFkRm9ybWF0KCl9LGNvbXB1dGVDb2xDbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXlzUGVyUm93fSxnZXRDZWxsRGF0ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmRheURhdGVzW3RoaXMuZ2V0Q2VsbERheUluZGV4KHQsZSldLmNsb25lKCl9LGdldENlbGxSYW5nZTpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuZ2V0Q2VsbERhdGUodCxlKSxpPW4uY2xvbmUoKS5hZGQoMSwiZGF5cyIpO3JldHVybntzdGFydDpuLGVuZDppfX0sZ2V0Q2VsbERheUluZGV4OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQqdGhpcy5kYXlzUGVyUm93K3RoaXMuZ2V0Q29sRGF5SW5kZXgoZSl9LGdldENvbERheUluZGV4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmlzUlRMP3RoaXMuY29sQ250LTEtdDp0fSxnZXREYXRlRGF5SW5kZXg6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5kYXlJbmRpY2VzLG49dC5kaWZmKHRoaXMuc3RhcnQsImRheXMiKTtyZXR1cm4gbjwwP2VbMF0tMTpuPj1lLmxlbmd0aD9lW2UubGVuZ3RoLTFdKzE6ZVtuXX0sY29tcHV0ZUNvbEhlYWRGb3JtYXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yb3dDbnQ+MXx8dGhpcy5jb2xDbnQ+MTA/ImRkZCI6dGhpcy5jb2xDbnQ+MT90aGlzLnZpZXcub3B0KCJkYXlPZk1vbnRoRm9ybWF0Iik6ImRkZGQifSxzbGljZVJhbmdlQnlSb3c6ZnVuY3Rpb24odCl7dmFyIGUsbixpLHIscyxvPXRoaXMuZGF5c1BlclJvdyxsPXRoaXMudmlldy5jb21wdXRlRGF5UmFuZ2UodCksYT10aGlzLmdldERhdGVEYXlJbmRleChsLnN0YXJ0KSx1PXRoaXMuZ2V0RGF0ZURheUluZGV4KGwuZW5kLmNsb25lKCkuc3VidHJhY3QoMSwiZGF5cyIpKSxjPVtdO2ZvcihlPTA7ZTx0aGlzLnJvd0NudDtlKyspbj1lKm8saT1uK28tMSxyPU1hdGgubWF4KGEsbikscz1NYXRoLm1pbih1LGkpLHI9TWF0aC5jZWlsKHIpLHM9TWF0aC5mbG9vcihzKSxyPD1zJiZjLnB1c2goe3JvdzplLGZpcnN0Um93RGF5SW5kZXg6ci1uLGxhc3RSb3dEYXlJbmRleDpzLW4saXNTdGFydDpyPT09YSxpc0VuZDpzPT09dX0pO3JldHVybiBjfSxzbGljZVJhbmdlQnlEYXk6ZnVuY3Rpb24odCl7dmFyIGUsbixpLHIscyxvLGw9dGhpcy5kYXlzUGVyUm93LGE9dGhpcy52aWV3LmNvbXB1dGVEYXlSYW5nZSh0KSx1PXRoaXMuZ2V0RGF0ZURheUluZGV4KGEuc3RhcnQpLGM9dGhpcy5nZXREYXRlRGF5SW5kZXgoYS5lbmQuY2xvbmUoKS5zdWJ0cmFjdCgxLCJkYXlzIikpLGQ9W107Zm9yKGU9MDtlPHRoaXMucm93Q250O2UrKylmb3Iobj1lKmwsaT1uK2wtMSxyPW47cjw9aTtyKyspcz1NYXRoLm1heCh1LHIpLG89TWF0aC5taW4oYyxyKSxzPU1hdGguY2VpbChzKSxvPU1hdGguZmxvb3Iobyksczw9byYmZC5wdXNoKHtyb3c6ZSxmaXJzdFJvd0RheUluZGV4OnMtbixsYXN0Um93RGF5SW5kZXg6by1uLGlzU3RhcnQ6cz09PXUsaXNFbmQ6bz09PWN9KTtyZXR1cm4gZH0scmVuZGVySGVhZEh0bWw6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnZpZXc7cmV0dXJuJzxkaXYgY2xhc3M9ImZjLXJvdyAnK3Qud2lkZ2V0SGVhZGVyQ2xhc3MrJyI+PHRhYmxlPjx0aGVhZD4nK3RoaXMucmVuZGVySGVhZFRySHRtbCgpKyI8L3RoZWFkPjwvdGFibGU+PC9kaXY+In0scmVuZGVySGVhZEludHJvSHRtbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJlbmRlckludHJvSHRtbCgpfSxyZW5kZXJIZWFkVHJIdG1sOmZ1bmN0aW9uKCl7cmV0dXJuIjx0cj4iKyh0aGlzLmlzUlRMPyIiOnRoaXMucmVuZGVySGVhZEludHJvSHRtbCgpKSt0aGlzLnJlbmRlckhlYWREYXRlQ2VsbHNIdG1sKCkrKHRoaXMuaXNSVEw/dGhpcy5yZW5kZXJIZWFkSW50cm9IdG1sKCk6IiIpKyI8L3RyPiJ9LHJlbmRlckhlYWREYXRlQ2VsbHNIdG1sOmZ1bmN0aW9uKCl7dmFyIHQsZSxuPVtdO2Zvcih0PTA7dDx0aGlzLmNvbENudDt0KyspZT10aGlzLmdldENlbGxEYXRlKDAsdCksbi5wdXNoKHRoaXMucmVuZGVySGVhZERhdGVDZWxsSHRtbChlKSk7cmV0dXJuIG4uam9pbigiIil9LHJlbmRlckhlYWREYXRlQ2VsbEh0bWw6ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXRoaXMudmlldyxyPVoodCxpLmFjdGl2ZVJhbmdlKSxzPVsiZmMtZGF5LWhlYWRlciIsaS53aWRnZXRIZWFkZXJDbGFzc10sbz1jdCh0LmZvcm1hdCh0aGlzLmNvbEhlYWRGb3JtYXQpKTtyZXR1cm4gMT09PXRoaXMucm93Q250P3M9cy5jb25jYXQodGhpcy5nZXREYXlDbGFzc2VzKHQsITApKTpzLnB1c2goImZjLSIrS3RbdC5kYXkoKV0pLCc8dGggY2xhc3M9Iicrcy5qb2luKCIgIikrJyInKygxPT09KHImJnRoaXMucm93Q250KT8nIGRhdGEtZGF0ZT0iJyt0LmZvcm1hdCgiWVlZWS1NTS1ERCIpKyciJzoiIikrKGU+MT8nIGNvbHNwYW49IicrZSsnIic6IiIpKyhuPyIgIituOiIiKSsiPiIrKHI/aS5idWlsZEdvdG9BbmNob3JIdG1sKHtkYXRlOnQsZm9yY2VPZmY6dGhpcy5yb3dDbnQ+MXx8MT09PXRoaXMuY29sQ250fSxvKTpvKSsiPC90aD4ifSxyZW5kZXJCZ1RySHRtbDpmdW5jdGlvbih0KXtyZXR1cm4iPHRyPiIrKHRoaXMuaXNSVEw/IiI6dGhpcy5yZW5kZXJCZ0ludHJvSHRtbCh0KSkrdGhpcy5yZW5kZXJCZ0NlbGxzSHRtbCh0KSsodGhpcy5pc1JUTD90aGlzLnJlbmRlckJnSW50cm9IdG1sKHQpOiIiKSsiPC90cj4ifSxyZW5kZXJCZ0ludHJvSHRtbDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZW5kZXJJbnRyb0h0bWwoKX0scmVuZGVyQmdDZWxsc0h0bWw6ZnVuY3Rpb24odCl7dmFyIGUsbixpPVtdO2ZvcihlPTA7ZTx0aGlzLmNvbENudDtlKyspbj10aGlzLmdldENlbGxEYXRlKHQsZSksaS5wdXNoKHRoaXMucmVuZGVyQmdDZWxsSHRtbChuKSk7cmV0dXJuIGkuam9pbigiIil9LHJlbmRlckJnQ2VsbEh0bWw6ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLnZpZXcsaT1aKHQsbi5hY3RpdmVSYW5nZSkscj10aGlzLmdldERheUNsYXNzZXModCk7cmV0dXJuIHIudW5zaGlmdCgiZmMtZGF5IixuLndpZGdldENvbnRlbnRDbGFzcyksJzx0ZCBjbGFzcz0iJytyLmpvaW4oIiAiKSsnIicrKGk/JyBkYXRhLWRhdGU9IicrdC5mb3JtYXQoIllZWVktTU0tREQiKSsnIic6IiIpKyhlPyIgIitlOiIiKSsiPjwvdGQ+In0scmVuZGVySW50cm9IdG1sOmZ1bmN0aW9uKCl7fSxib29rZW5kQ2VsbHM6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5yZW5kZXJJbnRyb0h0bWwoKTtlJiYodGhpcy5pc1JUTD90LmFwcGVuZChlKTp0LnByZXBlbmQoZSkpfX0sU2U9WnQuRGF5R3JpZD1tZS5leHRlbmQoeWUse251bWJlcnNWaXNpYmxlOiExLGJvdHRvbUNvb3JkUGFkZGluZzowLHJvd0VsczpudWxsLGNlbGxFbHM6bnVsbCxoZWxwZXJFbHM6bnVsbCxyb3dDb29yZENhY2hlOm51bGwsY29sQ29vcmRDYWNoZTpudWxsLHJlbmRlckRhdGVzOmZ1bmN0aW9uKHQpe3ZhciBlLG4saT10aGlzLnZpZXcscj10aGlzLnJvd0NudCxzPXRoaXMuY29sQ250LG89IiI7Zm9yKGU9MDtlPHI7ZSsrKW8rPXRoaXMucmVuZGVyRGF5Um93SHRtbChlLHQpO2Zvcih0aGlzLmVsLmh0bWwobyksdGhpcy5yb3dFbHM9dGhpcy5lbC5maW5kKCIuZmMtcm93IiksdGhpcy5jZWxsRWxzPXRoaXMuZWwuZmluZCgiLmZjLWRheSwgLmZjLWRpc2FibGVkLWRheSIpLHRoaXMucm93Q29vcmRDYWNoZT1uZXcgaGUoe2Vsczp0aGlzLnJvd0Vscyxpc1ZlcnRpY2FsOiEwfSksdGhpcy5jb2xDb29yZENhY2hlPW5ldyBoZSh7ZWxzOnRoaXMuY2VsbEVscy5zbGljZSgwLHRoaXMuY29sQ250KSxpc0hvcml6b250YWw6ITB9KSxlPTA7ZTxyO2UrKylmb3Iobj0wO248cztuKyspaS5wdWJsaWNseVRyaWdnZXIoImRheVJlbmRlciIsbnVsbCx0aGlzLmdldENlbGxEYXRlKGUsbiksdGhpcy5nZXRDZWxsRWwoZSxuKSl9LHVucmVuZGVyRGF0ZXM6ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZVNlZ1BvcG92ZXIoKX0scmVuZGVyQnVzaW5lc3NIb3VyczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuYnVpbGRCdXNpbmVzc0hvdXJTZWdzKCEwKTt0aGlzLnJlbmRlckZpbGwoImJ1c2luZXNzSG91cnMiLHQsImJnZXZlbnQiKX0sdW5yZW5kZXJCdXNpbmVzc0hvdXJzOmZ1bmN0aW9uKCl7dGhpcy51bnJlbmRlckZpbGwoImJ1c2luZXNzSG91cnMiKX0scmVuZGVyRGF5Um93SHRtbDpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMudmlldyxpPVsiZmMtcm93IiwiZmMtd2VlayIsbi53aWRnZXRDb250ZW50Q2xhc3NdO3JldHVybiBlJiZpLnB1c2goImZjLXJpZ2lkIiksJzxkaXYgY2xhc3M9IicraS5qb2luKCIgIikrJyI+PGRpdiBjbGFzcz0iZmMtYmciPjx0YWJsZT4nK3RoaXMucmVuZGVyQmdUckh0bWwodCkrJzwvdGFibGU+PC9kaXY+PGRpdiBjbGFzcz0iZmMtY29udGVudC1za2VsZXRvbiI+PHRhYmxlPicrKHRoaXMubnVtYmVyc1Zpc2libGU/Ijx0aGVhZD4iK3RoaXMucmVuZGVyTnVtYmVyVHJIdG1sKHQpKyI8L3RoZWFkPiI6IiIpKyI8L3RhYmxlPjwvZGl2PjwvZGl2PiJ9LHJlbmRlck51bWJlclRySHRtbDpmdW5jdGlvbih0KXtyZXR1cm4iPHRyPiIrKHRoaXMuaXNSVEw/IiI6dGhpcy5yZW5kZXJOdW1iZXJJbnRyb0h0bWwodCkpK3RoaXMucmVuZGVyTnVtYmVyQ2VsbHNIdG1sKHQpKyh0aGlzLmlzUlRMP3RoaXMucmVuZGVyTnVtYmVySW50cm9IdG1sKHQpOiIiKSsiPC90cj4ifSxyZW5kZXJOdW1iZXJJbnRyb0h0bWw6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVuZGVySW50cm9IdG1sKCl9LHJlbmRlck51bWJlckNlbGxzSHRtbDpmdW5jdGlvbih0KXt2YXIgZSxuLGk9W107Zm9yKGU9MDtlPHRoaXMuY29sQ250O2UrKyluPXRoaXMuZ2V0Q2VsbERhdGUodCxlKSxpLnB1c2godGhpcy5yZW5kZXJOdW1iZXJDZWxsSHRtbChuKSk7cmV0dXJuIGkuam9pbigiIil9LHJlbmRlck51bWJlckNlbGxIdG1sOmZ1bmN0aW9uKHQpe3ZhciBlLG4saT10aGlzLnZpZXcscj0iIixzPVoodCxpLmFjdGl2ZVJhbmdlKSxvPWkuZGF5TnVtYmVyc1Zpc2libGUmJnM7cmV0dXJuIG98fGkuY2VsbFdlZWtOdW1iZXJzVmlzaWJsZT8oZT10aGlzLmdldERheUNsYXNzZXModCksZS51bnNoaWZ0KCJmYy1kYXktdG9wIiksaS5jZWxsV2Vla051bWJlcnNWaXNpYmxlJiYobj0iSVNPIj09PXQuX2xvY2FsZS5fZnVsbENhbGVuZGFyX3dlZWtDYWxjPzE6dC5fbG9jYWxlLmZpcnN0RGF5T2ZXZWVrKCkpLHIrPSc8dGQgY2xhc3M9IicrZS5qb2luKCIgIikrJyInKyhzPycgZGF0YS1kYXRlPSInK3QuZm9ybWF0KCkrJyInOiIiKSsiPiIsaS5jZWxsV2Vla051bWJlcnNWaXNpYmxlJiZ0LmRheSgpPT1uJiYocis9aS5idWlsZEdvdG9BbmNob3JIdG1sKHtkYXRlOnQsdHlwZToid2VlayJ9LHtjbGFzczoiZmMtd2Vlay1udW1iZXIifSx0LmZvcm1hdCgidyIpKSksbyYmKHIrPWkuYnVpbGRHb3RvQW5jaG9ySHRtbCh0LHtjbGFzczoiZmMtZGF5LW51bWJlciJ9LHQuZGF0ZSgpKSkscis9IjwvdGQ+Iik6Ijx0ZC8+In0sY29tcHV0ZUV2ZW50VGltZUZvcm1hdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZpZXcub3B0KCJleHRyYVNtYWxsVGltZUZvcm1hdCIpfSxjb21wdXRlRGlzcGxheUV2ZW50RW5kOmZ1bmN0aW9uKCl7cmV0dXJuIDE9PXRoaXMuY29sQ250fSxyYW5nZVVwZGF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLnVwZGF0ZURheVRhYmxlKCl9LHNwYW5Ub1NlZ3M6ZnVuY3Rpb24odCl7dmFyIGUsbixpPXRoaXMuc2xpY2VSYW5nZUJ5Um93KHQpO2ZvcihlPTA7ZTxpLmxlbmd0aDtlKyspbj1pW2VdLHRoaXMuaXNSVEw/KG4ubGVmdENvbD10aGlzLmRheXNQZXJSb3ctMS1uLmxhc3RSb3dEYXlJbmRleCxuLnJpZ2h0Q29sPXRoaXMuZGF5c1BlclJvdy0xLW4uZmlyc3RSb3dEYXlJbmRleCk6KG4ubGVmdENvbD1uLmZpcnN0Um93RGF5SW5kZXgsbi5yaWdodENvbD1uLmxhc3RSb3dEYXlJbmRleCk7cmV0dXJuIGl9LHByZXBhcmVIaXRzOmZ1bmN0aW9uKCl7dGhpcy5jb2xDb29yZENhY2hlLmJ1aWxkKCksdGhpcy5yb3dDb29yZENhY2hlLmJ1aWxkKCksdGhpcy5yb3dDb29yZENhY2hlLmJvdHRvbXNbdGhpcy5yb3dDbnQtMV0rPXRoaXMuYm90dG9tQ29vcmRQYWRkaW5nfSxyZWxlYXNlSGl0czpmdW5jdGlvbigpe3RoaXMuY29sQ29vcmRDYWNoZS5jbGVhcigpLHRoaXMucm93Q29vcmRDYWNoZS5jbGVhcigpfSxxdWVyeUhpdDpmdW5jdGlvbih0LGUpe2lmKHRoaXMuY29sQ29vcmRDYWNoZS5pc0xlZnRJbkJvdW5kcyh0KSYmdGhpcy5yb3dDb29yZENhY2hlLmlzVG9wSW5Cb3VuZHMoZSkpe3ZhciBuPXRoaXMuY29sQ29vcmRDYWNoZS5nZXRIb3Jpem9udGFsSW5kZXgodCksaT10aGlzLnJvd0Nvb3JkQ2FjaGUuZ2V0VmVydGljYWxJbmRleChlKTtpZihudWxsIT1pJiZudWxsIT1uKXJldHVybiB0aGlzLmdldENlbGxIaXQoaSxuKX19LGdldEhpdFNwYW46ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZ2V0Q2VsbFJhbmdlKHQucm93LHQuY29sKX0sZ2V0SGl0RWw6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZ2V0Q2VsbEVsKHQucm93LHQuY29sKX0sZ2V0Q2VsbEhpdDpmdW5jdGlvbih0LGUpe3JldHVybntyb3c6dCxjb2w6ZSxjb21wb25lbnQ6dGhpcyxsZWZ0OnRoaXMuY29sQ29vcmRDYWNoZS5nZXRMZWZ0T2Zmc2V0KGUpLHJpZ2h0OnRoaXMuY29sQ29vcmRDYWNoZS5nZXRSaWdodE9mZnNldChlKSx0b3A6dGhpcy5yb3dDb29yZENhY2hlLmdldFRvcE9mZnNldCh0KSxib3R0b206dGhpcy5yb3dDb29yZENhY2hlLmdldEJvdHRvbU9mZnNldCh0KX19LGdldENlbGxFbDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmNlbGxFbHMuZXEodCp0aGlzLmNvbENudCtlKX0scmVuZGVyRHJhZzpmdW5jdGlvbih0LGUpe3ZhciBuLGk9dGhpcy5ldmVudFRvU3BhbnModCk7Zm9yKG49MDtuPGkubGVuZ3RoO24rKyl0aGlzLnJlbmRlckhpZ2hsaWdodChpW25dKTtpZihlJiZlLmNvbXBvbmVudCE9PXRoaXMpcmV0dXJuIHRoaXMucmVuZGVyRXZlbnRMb2NhdGlvbkhlbHBlcih0LGUpfSx1bnJlbmRlckRyYWc6ZnVuY3Rpb24oKXt0aGlzLnVucmVuZGVySGlnaGxpZ2h0KCksdGhpcy51bnJlbmRlckhlbHBlcigpfSxyZW5kZXJFdmVudFJlc2l6ZTpmdW5jdGlvbih0LGUpe3ZhciBuLGk9dGhpcy5ldmVudFRvU3BhbnModCk7Zm9yKG49MDtuPGkubGVuZ3RoO24rKyl0aGlzLnJlbmRlckhpZ2hsaWdodChpW25dKTtyZXR1cm4gdGhpcy5yZW5kZXJFdmVudExvY2F0aW9uSGVscGVyKHQsZSl9LHVucmVuZGVyRXZlbnRSZXNpemU6ZnVuY3Rpb24oKXt0aGlzLnVucmVuZGVySGlnaGxpZ2h0KCksdGhpcy51bnJlbmRlckhlbHBlcigpfSxyZW5kZXJIZWxwZXI6ZnVuY3Rpb24oZSxuKXt2YXIgaSxyPVtdLHM9dGhpcy5ldmVudFRvU2VncyhlKTtyZXR1cm4gcz10aGlzLnJlbmRlckZnU2VnRWxzKHMpLGk9dGhpcy5yZW5kZXJTZWdSb3dzKHMpLHRoaXMucm93RWxzLmVhY2goZnVuY3Rpb24oZSxzKXt2YXIgbyxsPXQocyksYT10KCc8ZGl2IGNsYXNzPSJmYy1oZWxwZXItc2tlbGV0b24iPjx0YWJsZS8+PC9kaXY+Jyk7bz1uJiZuLnJvdz09PWU/bi5lbC5wb3NpdGlvbigpLnRvcDpsLmZpbmQoIi5mYy1jb250ZW50LXNrZWxldG9uIHRib2R5IikucG9zaXRpb24oKS50b3AsYS5jc3MoInRvcCIsbykuZmluZCgidGFibGUiKS5hcHBlbmQoaVtlXS50Ym9keUVsKSxsLmFwcGVuZChhKSxyLnB1c2goYVswXSl9KSx0aGlzLmhlbHBlckVscz10KHIpfSx1bnJlbmRlckhlbHBlcjpmdW5jdGlvbigpe3RoaXMuaGVscGVyRWxzJiYodGhpcy5oZWxwZXJFbHMucmVtb3ZlKCksdGhpcy5oZWxwZXJFbHM9bnVsbCl9LGZpbGxTZWdUYWc6InRkIixyZW5kZXJGaWxsOmZ1bmN0aW9uKGUsbixpKXt2YXIgcixzLG8sbD1bXTtmb3Iobj10aGlzLnJlbmRlckZpbGxTZWdFbHMoZSxuKSxyPTA7cjxuLmxlbmd0aDtyKyspcz1uW3JdLG89dGhpcy5yZW5kZXJGaWxsUm93KGUscyxpKSx0aGlzLnJvd0Vscy5lcShzLnJvdykuYXBwZW5kKG8pLGwucHVzaChvWzBdKTtyZXR1cm4gdGhpcy5lbHNCeUZpbGxbZV09dChsKSxufSxyZW5kZXJGaWxsUm93OmZ1bmN0aW9uKGUsbixpKXt2YXIgcixzLG89dGhpcy5jb2xDbnQsbD1uLmxlZnRDb2wsYT1uLnJpZ2h0Q29sKzE7cmV0dXJuIGk9aXx8ZS50b0xvd2VyQ2FzZSgpLHI9dCgnPGRpdiBjbGFzcz0iZmMtJytpKyctc2tlbGV0b24iPjx0YWJsZT48dHIvPjwvdGFibGU+PC9kaXY+Jykscz1yLmZpbmQoInRyIiksbD4wJiZzLmFwcGVuZCgnPHRkIGNvbHNwYW49IicrbCsnIi8+Jykscy5hcHBlbmQobi5lbC5hdHRyKCJjb2xzcGFuIixhLWwpKSxhPG8mJnMuYXBwZW5kKCc8dGQgY29sc3Bhbj0iJysoby1hKSsnIi8+JyksdGhpcy5ib29rZW5kQ2VsbHMocykscn19KTtTZS5taXhpbih7cm93U3RydWN0czpudWxsLHVucmVuZGVyRXZlbnRzOmZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVTZWdQb3BvdmVyKCksbWUucHJvdG90eXBlLnVucmVuZGVyRXZlbnRzLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZ2V0RXZlbnRTZWdzOmZ1bmN0aW9uKCl7cmV0dXJuIG1lLnByb3RvdHlwZS5nZXRFdmVudFNlZ3MuY2FsbCh0aGlzKS5jb25jYXQodGhpcy5wb3BvdmVyU2Vnc3x8W10pfSxyZW5kZXJCZ1NlZ3M6ZnVuY3Rpb24oZSl7dmFyIG49dC5ncmVwKGUsZnVuY3Rpb24odCl7cmV0dXJuIHQuZXZlbnQuYWxsRGF5fSk7cmV0dXJuIG1lLnByb3RvdHlwZS5yZW5kZXJCZ1NlZ3MuY2FsbCh0aGlzLG4pfSxyZW5kZXJGZ1NlZ3M6ZnVuY3Rpb24oZSl7dmFyIG47cmV0dXJuIGU9dGhpcy5yZW5kZXJGZ1NlZ0VscyhlKSxuPXRoaXMucm93U3RydWN0cz10aGlzLnJlbmRlclNlZ1Jvd3MoZSksdGhpcy5yb3dFbHMuZWFjaChmdW5jdGlvbihlLGkpe3QoaSkuZmluZCgiLmZjLWNvbnRlbnQtc2tlbGV0b24gPiB0YWJsZSIpLmFwcGVuZChuW2VdLnRib2R5RWwpfSksZX0sdW5yZW5kZXJGZ1NlZ3M6ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT10aGlzLnJvd1N0cnVjdHN8fFtdO3Q9ZS5wb3AoKTspdC50Ym9keUVsLnJlbW92ZSgpO3RoaXMucm93U3RydWN0cz1udWxsfSxyZW5kZXJTZWdSb3dzOmZ1bmN0aW9uKHQpe3ZhciBlLG4saT1bXTtmb3IoZT10aGlzLmdyb3VwU2VnUm93cyh0KSxuPTA7bjxlLmxlbmd0aDtuKyspaS5wdXNoKHRoaXMucmVuZGVyU2VnUm93KG4sZVtuXSkpO3JldHVybiBpfSxmZ1NlZ0h0bWw6ZnVuY3Rpb24odCxlKXt2YXIgbixpLHI9dGhpcy52aWV3LHM9dC5ldmVudCxvPXIuaXNFdmVudERyYWdnYWJsZShzKSxsPSFlJiZzLmFsbERheSYmdC5pc1N0YXJ0JiZyLmlzRXZlbnRSZXNpemFibGVGcm9tU3RhcnQocyksYT0hZSYmcy5hbGxEYXkmJnQuaXNFbmQmJnIuaXNFdmVudFJlc2l6YWJsZUZyb21FbmQocyksdT10aGlzLmdldFNlZ0NsYXNzZXModCxvLGx8fGEpLGM9aHQodGhpcy5nZXRTZWdTa2luQ3NzKHQpKSxkPSIiO3JldHVybiB1LnVuc2hpZnQoImZjLWRheS1ncmlkLWV2ZW50IiwiZmMtaC1ldmVudCIpLHQuaXNTdGFydCYmKG49dGhpcy5nZXRFdmVudFRpbWVUZXh0KHMpLG4mJihkPSc8c3BhbiBjbGFzcz0iZmMtdGltZSI+JytjdChuKSsiPC9zcGFuPiIpKSxpPSc8c3BhbiBjbGFzcz0iZmMtdGl0bGUiPicrKGN0KHMudGl0bGV8fCIiKXx8IiZuYnNwOyIpKyI8L3NwYW4+IiwnPGEgY2xhc3M9IicrdS5qb2luKCIgIikrJyInKyhzLnVybD8nIGhyZWY9IicrY3Qocy51cmwpKyciJzoiIikrKGM/JyBzdHlsZT0iJytjKyciJzoiIikrJz48ZGl2IGNsYXNzPSJmYy1jb250ZW50Ij4nKyh0aGlzLmlzUlRMP2krIiAiK2Q6ZCsiICIraSkrIjwvZGl2PiIrKGw/JzxkaXYgY2xhc3M9ImZjLXJlc2l6ZXIgZmMtc3RhcnQtcmVzaXplciIgLz4nOiIiKSsoYT8nPGRpdiBjbGFzcz0iZmMtcmVzaXplciBmYy1lbmQtcmVzaXplciIgLz4nOiIiKSsiPC9hPiJ9LHJlbmRlclNlZ1JvdzpmdW5jdGlvbihlLG4pe2Z1bmN0aW9uIGkoZSl7Zm9yKDtvPGU7KWM9KG1bci0xXXx8W10pW29dLGM/Yy5hdHRyKCJyb3dzcGFuIixwYXJzZUludChjLmF0dHIoInJvd3NwYW4iKXx8MSwxMCkrMSk6KGM9dCgiPHRkLz4iKSxsLmFwcGVuZChjKSksdltyXVtvXT1jLG1bcl1bb109YyxvKyt9dmFyIHIscyxvLGwsYSx1LGMsZD10aGlzLmNvbENudCxoPXRoaXMuYnVpbGRTZWdMZXZlbHMobiksZj1NYXRoLm1heCgxLGgubGVuZ3RoKSxnPXQoIjx0Ym9keS8+IikscD1bXSx2PVtdLG09W107Zm9yKHI9MDtyPGY7cisrKXtpZihzPWhbcl0sbz0wLGw9dCgiPHRyLz4iKSxwLnB1c2goW10pLHYucHVzaChbXSksbS5wdXNoKFtdKSxzKWZvcihhPTA7YTxzLmxlbmd0aDthKyspe2Zvcih1PXNbYV0saSh1LmxlZnRDb2wpLGM9dCgnPHRkIGNsYXNzPSJmYy1ldmVudC1jb250YWluZXIiLz4nKS5hcHBlbmQodS5lbCksdS5sZWZ0Q29sIT11LnJpZ2h0Q29sP2MuYXR0cigiY29sc3BhbiIsdS5yaWdodENvbC11LmxlZnRDb2wrMSk6bVtyXVtvXT1jO288PXUucmlnaHRDb2w7KXZbcl1bb109YyxwW3JdW29dPXUsbysrO2wuYXBwZW5kKGMpfWkoZCksdGhpcy5ib29rZW5kQ2VsbHMobCksZy5hcHBlbmQobCl9cmV0dXJue3JvdzplLHRib2R5RWw6ZyxjZWxsTWF0cml4OnYsc2VnTWF0cml4OnAsc2VnTGV2ZWxzOmgsc2VnczpufX0sYnVpbGRTZWdMZXZlbHM6ZnVuY3Rpb24odCl7dmFyIGUsbixpLHI9W107Zm9yKHRoaXMuc29ydEV2ZW50U2Vncyh0KSxlPTA7ZTx0Lmxlbmd0aDtlKyspe2ZvcihuPXRbZV0saT0wO2k8ci5sZW5ndGgmJkZ0KG4scltpXSk7aSsrKTtuLmxldmVsPWksKHJbaV18fChyW2ldPVtdKSkucHVzaChuKX1mb3IoaT0wO2k8ci5sZW5ndGg7aSsrKXJbaV0uc29ydChOdCk7cmV0dXJuIHJ9LGdyb3VwU2VnUm93czpmdW5jdGlvbih0KXt2YXIgZSxuPVtdO2ZvcihlPTA7ZTx0aGlzLnJvd0NudDtlKyspbi5wdXNoKFtdKTtmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKW5bdFtlXS5yb3ddLnB1c2godFtlXSk7cmV0dXJuIG59fSksU2UubWl4aW4oe3NlZ1BvcG92ZXI6bnVsbCxwb3BvdmVyU2VnczpudWxsLHJlbW92ZVNlZ1BvcG92ZXI6ZnVuY3Rpb24oKXt0aGlzLnNlZ1BvcG92ZXImJnRoaXMuc2VnUG9wb3Zlci5oaWRlKCl9LGxpbWl0Um93czpmdW5jdGlvbih0KXt2YXIgZSxuLGk9dGhpcy5yb3dTdHJ1Y3RzfHxbXTtmb3IoZT0wO2U8aS5sZW5ndGg7ZSsrKXRoaXMudW5saW1pdFJvdyhlKSxuPSEhdCYmKCJudW1iZXIiPT10eXBlb2YgdD90OnRoaXMuY29tcHV0ZVJvd0xldmVsTGltaXQoZSkpLG4hPT0hMSYmdGhpcy5saW1pdFJvdyhlLG4pfSxjb21wdXRlUm93TGV2ZWxMaW1pdDpmdW5jdGlvbihlKXtmdW5jdGlvbiBuKGUsbil7cz1NYXRoLm1heChzLHQobikub3V0ZXJIZWlnaHQoKSl9dmFyIGkscixzLG89dGhpcy5yb3dFbHMuZXEoZSksbD1vLmhlaWdodCgpLGE9dGhpcy5yb3dTdHJ1Y3RzW2VdLnRib2R5RWwuY2hpbGRyZW4oKTtmb3IoaT0wO2k8YS5sZW5ndGg7aSsrKWlmKHI9YS5lcShpKS5yZW1vdmVDbGFzcygiZmMtbGltaXRlZCIpLHM9MCxyLmZpbmQoIj4gdGQgPiA6Zmlyc3QtY2hpbGQiKS5lYWNoKG4pLHIucG9zaXRpb24oKS50b3Arcz5sKXJldHVybiBpO3JldHVybiExfSxsaW1pdFJvdzpmdW5jdGlvbihlLG4pe2Z1bmN0aW9uIGkoaSl7Zm9yKDtFPGk7KXU9Uy5nZXRDZWxsU2VncyhlLEUsbiksdS5sZW5ndGgmJihoPXNbbi0xXVtFXSx5PVMucmVuZGVyTW9yZUxpbmsoZSxFLHUpLG09dCgiPGRpdi8+IikuYXBwZW5kKHkpLGguYXBwZW5kKG0pLGIucHVzaChtWzBdKSksRSsrfXZhciByLHMsbyxsLGEsdSxjLGQsaCxmLGcscCx2LG0seSxTPXRoaXMsdz10aGlzLnJvd1N0cnVjdHNbZV0sYj1bXSxFPTA7aWYobiYmbjx3LnNlZ0xldmVscy5sZW5ndGgpe2ZvcihyPXcuc2VnTGV2ZWxzW24tMV0scz13LmNlbGxNYXRyaXgsbz13LnRib2R5RWwuY2hpbGRyZW4oKS5zbGljZShuKS5hZGRDbGFzcygiZmMtbGltaXRlZCIpLmdldCgpLGw9MDtsPHIubGVuZ3RoO2wrKyl7Zm9yKGE9cltsXSxpKGEubGVmdENvbCksZD1bXSxjPTA7RTw9YS5yaWdodENvbDspdT10aGlzLmdldENlbGxTZWdzKGUsRSxuKSxkLnB1c2godSksYys9dS5sZW5ndGgsRSsrO2lmKGMpe2ZvcihoPXNbbi0xXVthLmxlZnRDb2xdLGY9aC5hdHRyKCJyb3dzcGFuIil8fDEsZz1bXSxwPTA7cDxkLmxlbmd0aDtwKyspdj10KCc8dGQgY2xhc3M9ImZjLW1vcmUtY2VsbCIvPicpLmF0dHIoInJvd3NwYW4iLGYpLHU9ZFtwXSx5PXRoaXMucmVuZGVyTW9yZUxpbmsoZSxhLmxlZnRDb2wrcCxbYV0uY29uY2F0KHUpKSxtPXQoIjxkaXYvPiIpLmFwcGVuZCh5KSx2LmFwcGVuZChtKSxnLnB1c2godlswXSksYi5wdXNoKHZbMF0pO2guYWRkQ2xhc3MoImZjLWxpbWl0ZWQiKS5hZnRlcih0KGcpKSxvLnB1c2goaFswXSl9fWkodGhpcy5jb2xDbnQpLHcubW9yZUVscz10KGIpLHcubGltaXRlZEVscz10KG8pfX0sdW5saW1pdFJvdzpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnJvd1N0cnVjdHNbdF07ZS5tb3JlRWxzJiYoZS5tb3JlRWxzLnJlbW92ZSgpLGUubW9yZUVscz1udWxsKSxlLmxpbWl0ZWRFbHMmJihlLmxpbWl0ZWRFbHMucmVtb3ZlQ2xhc3MoImZjLWxpbWl0ZWQiKSxlLmxpbWl0ZWRFbHM9bnVsbCl9LHJlbmRlck1vcmVMaW5rOmZ1bmN0aW9uKGUsbixpKXt2YXIgcj10aGlzLHM9dGhpcy52aWV3O3JldHVybiB0KCc8YSBjbGFzcz0iZmMtbW9yZSIvPicpLnRleHQodGhpcy5nZXRNb3JlTGlua1RleHQoaS5sZW5ndGgpKS5vbigiY2xpY2siLGZ1bmN0aW9uKG8pe3ZhciBsPXMub3B0KCJldmVudExpbWl0Q2xpY2siKSxhPXIuZ2V0Q2VsbERhdGUoZSxuKSx1PXQodGhpcyksYz1yLmdldENlbGxFbChlLG4pLGQ9ci5nZXRDZWxsU2VncyhlLG4pLGg9ci5yZXNsaWNlRGF5U2VncyhkLGEpLGY9ci5yZXNsaWNlRGF5U2VncyhpLGEpOyJmdW5jdGlvbiI9PXR5cGVvZiBsJiYobD1zLnB1YmxpY2x5VHJpZ2dlcigiZXZlbnRMaW1pdENsaWNrIixudWxsLHtkYXRlOmEsZGF5RWw6Yyxtb3JlRWw6dSxzZWdzOmgsaGlkZGVuU2VnczpmfSxvKSksInBvcG92ZXIiPT09bD9yLnNob3dTZWdQb3BvdmVyKGUsbix1LGgpOiJzdHJpbmciPT10eXBlb2YgbCYmcy5jYWxlbmRhci56b29tVG8oYSxsKX0pfSxzaG93U2VnUG9wb3ZlcjpmdW5jdGlvbih0LGUsbixpKXt2YXIgcixzLG89dGhpcyxsPXRoaXMudmlldyxhPW4ucGFyZW50KCk7cj0xPT10aGlzLnJvd0NudD9sLmVsOnRoaXMucm93RWxzLmVxKHQpLHM9e2NsYXNzTmFtZToiZmMtbW9yZS1wb3BvdmVyIixjb250ZW50OnRoaXMucmVuZGVyU2VnUG9wb3ZlckNvbnRlbnQodCxlLGkpLHBhcmVudEVsOnRoaXMudmlldy5lbCx0b3A6ci5vZmZzZXQoKS50b3AsYXV0b0hpZGU6ITAsdmlld3BvcnRDb25zdHJhaW46bC5vcHQoInBvcG92ZXJWaWV3cG9ydENvbnN0cmFpbiIpLGhpZGU6ZnVuY3Rpb24oKXtpZihvLnBvcG92ZXJTZWdzKWZvcih2YXIgdCxlPTA7ZTxvLnBvcG92ZXJTZWdzLmxlbmd0aDsrK2UpdD1vLnBvcG92ZXJTZWdzW2VdLGwucHVibGljbHlUcmlnZ2VyKCJldmVudERlc3Ryb3kiLHQuZXZlbnQsdC5ldmVudCx0LmVsKTtvLnNlZ1BvcG92ZXIucmVtb3ZlRWxlbWVudCgpLG8uc2VnUG9wb3Zlcj1udWxsLG8ucG9wb3ZlclNlZ3M9bnVsbH19LHRoaXMuaXNSVEw/cy5yaWdodD1hLm9mZnNldCgpLmxlZnQrYS5vdXRlcldpZHRoKCkrMTpzLmxlZnQ9YS5vZmZzZXQoKS5sZWZ0LTEsdGhpcy5zZWdQb3BvdmVyPW5ldyBkZShzKSx0aGlzLnNlZ1BvcG92ZXIuc2hvdygpLHRoaXMuYmluZFNlZ0hhbmRsZXJzVG9FbCh0aGlzLnNlZ1BvcG92ZXIuZWwpfSxyZW5kZXJTZWdQb3BvdmVyQ29udGVudDpmdW5jdGlvbihlLG4saSl7dmFyIHIscz10aGlzLnZpZXcsbz1zLm9wdCgidGhlbWUiKSxsPXRoaXMuZ2V0Q2VsbERhdGUoZSxuKS5mb3JtYXQocy5vcHQoImRheVBvcG92ZXJGb3JtYXQiKSksYT10KCc8ZGl2IGNsYXNzPSJmYy1oZWFkZXIgJytzLndpZGdldEhlYWRlckNsYXNzKyciPjxzcGFuIGNsYXNzPSJmYy1jbG9zZSAnKyhvPyJ1aS1pY29uIHVpLWljb24tY2xvc2V0aGljayI6ImZjLWljb24gZmMtaWNvbi14IikrJyI+PC9zcGFuPjxzcGFuIGNsYXNzPSJmYy10aXRsZSI+JytjdChsKSsnPC9zcGFuPjxkaXYgY2xhc3M9ImZjLWNsZWFyIi8+PC9kaXY+PGRpdiBjbGFzcz0iZmMtYm9keSAnK3Mud2lkZ2V0Q29udGVudENsYXNzKyciPjxkaXYgY2xhc3M9ImZjLWV2ZW50LWNvbnRhaW5lciI+PC9kaXY+PC9kaXY+JyksdT1hLmZpbmQoIi5mYy1ldmVudC1jb250YWluZXIiKTtmb3IoaT10aGlzLnJlbmRlckZnU2VnRWxzKGksITApLHRoaXMucG9wb3ZlclNlZ3M9aSxyPTA7cjxpLmxlbmd0aDtyKyspdGhpcy5oaXRzTmVlZGVkKCksaVtyXS5oaXQ9dGhpcy5nZXRDZWxsSGl0KGUsbiksdGhpcy5oaXRzTm90TmVlZGVkKCksdS5hcHBlbmQoaVtyXS5lbCk7cmV0dXJuIGF9LHJlc2xpY2VEYXlTZWdzOmZ1bmN0aW9uKGUsbil7dmFyIGk9dC5tYXAoZSxmdW5jdGlvbih0KXtyZXR1cm4gdC5ldmVudH0pLHI9bi5jbG9uZSgpLHM9ci5jbG9uZSgpLmFkZCgxLCJkYXlzIiksbz17c3RhcnQ6cixlbmQ6c307cmV0dXJuIGU9dGhpcy5ldmVudHNUb1NlZ3MoaSxmdW5jdGlvbih0KXt2YXIgZT1OKHQsbyk7cmV0dXJuIGU/W2VdOltdfSksdGhpcy5zb3J0RXZlbnRTZWdzKGUpLGV9LGdldE1vcmVMaW5rVGV4dDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnZpZXcub3B0KCJldmVudExpbWl0VGV4dCIpO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlP2UodCk6IisiK3QrIiAiK2V9LGdldENlbGxTZWdzOmZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIGkscj10aGlzLnJvd1N0cnVjdHNbdF0uc2VnTWF0cml4LHM9bnx8MCxvPVtdO3M8ci5sZW5ndGg7KWk9cltzXVtlXSxpJiZvLnB1c2goaSkscysrO3JldHVybiBvfX0pO3ZhciB3ZT1adC5UaW1lR3JpZD1tZS5leHRlbmQoeWUse3Nsb3REdXJhdGlvbjpudWxsLHNuYXBEdXJhdGlvbjpudWxsLHNuYXBzUGVyU2xvdDpudWxsLGxhYmVsRm9ybWF0Om51bGwsbGFiZWxJbnRlcnZhbDpudWxsLGNvbEVsczpudWxsLHNsYXRDb250YWluZXJFbDpudWxsLHNsYXRFbHM6bnVsbCxub3dJbmRpY2F0b3JFbHM6bnVsbCxjb2xDb29yZENhY2hlOm51bGwsc2xhdENvb3JkQ2FjaGU6bnVsbCxjb25zdHJ1Y3RvcjpmdW5jdGlvbigpe21lLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLnByb2Nlc3NPcHRpb25zKCl9LHJlbmRlckRhdGVzOmZ1bmN0aW9uKCl7dGhpcy5lbC5odG1sKHRoaXMucmVuZGVySHRtbCgpKSx0aGlzLmNvbEVscz10aGlzLmVsLmZpbmQoIi5mYy1kYXksIC5mYy1kaXNhYmxlZC1kYXkiKSx0aGlzLnNsYXRDb250YWluZXJFbD10aGlzLmVsLmZpbmQoIi5mYy1zbGF0cyIpLHRoaXMuc2xhdEVscz10aGlzLnNsYXRDb250YWluZXJFbC5maW5kKCJ0ciIpLHRoaXMuY29sQ29vcmRDYWNoZT1uZXcgaGUoe2Vsczp0aGlzLmNvbEVscyxpc0hvcml6b250YWw6ITB9KSx0aGlzLnNsYXRDb29yZENhY2hlPW5ldyBoZSh7ZWxzOnRoaXMuc2xhdEVscyxpc1ZlcnRpY2FsOiEwfSksdGhpcy5yZW5kZXJDb250ZW50U2tlbGV0b24oKX0scmVuZGVySHRtbDpmdW5jdGlvbigpe3JldHVybic8ZGl2IGNsYXNzPSJmYy1iZyI+PHRhYmxlPicrdGhpcy5yZW5kZXJCZ1RySHRtbCgwKSsnPC90YWJsZT48L2Rpdj48ZGl2IGNsYXNzPSJmYy1zbGF0cyI+PHRhYmxlPicrdGhpcy5yZW5kZXJTbGF0Um93SHRtbCgpKyI8L3RhYmxlPjwvZGl2PiJ9LHJlbmRlclNsYXRSb3dIdG1sOmZ1bmN0aW9uKCl7Zm9yKHZhciB0LG4saSxyPXRoaXMudmlldyxzPXRoaXMuaXNSVEwsbz0iIixsPWUuZHVyYXRpb24oK3RoaXMudmlldy5taW5UaW1lKTtsPHRoaXMudmlldy5tYXhUaW1lOyl0PXRoaXMuc3RhcnQuY2xvbmUoKS50aW1lKGwpLG49dnQoWShsLHRoaXMubGFiZWxJbnRlcnZhbCkpLGk9Jzx0ZCBjbGFzcz0iZmMtYXhpcyBmYy10aW1lICcrci53aWRnZXRDb250ZW50Q2xhc3MrJyIgJytyLmF4aXNTdHlsZUF0dHIoKSsiPiIrKG4/IjxzcGFuPiIrY3QodC5mb3JtYXQodGhpcy5sYWJlbEZvcm1hdCkpKyI8L3NwYW4+IjoiIikrIjwvdGQ+IixvKz0nPHRyIGRhdGEtdGltZT0iJyt0LmZvcm1hdCgiSEg6bW06c3MiKSsnIicrKG4/IiI6JyBjbGFzcz0iZmMtbWlub3IiJykrIj4iKyhzPyIiOmkpKyc8dGQgY2xhc3M9Iicrci53aWRnZXRDb250ZW50Q2xhc3MrJyIvPicrKHM/aToiIikrIjwvdHI+IixsLmFkZCh0aGlzLnNsb3REdXJhdGlvbik7cmV0dXJuIG99LHByb2Nlc3NPcHRpb25zOmZ1bmN0aW9uKCl7dmFyIG4saT10aGlzLnZpZXcscj1pLm9wdCgic2xvdER1cmF0aW9uIikscz1pLm9wdCgic25hcER1cmF0aW9uIik7cj1lLmR1cmF0aW9uKHIpLHM9cz9lLmR1cmF0aW9uKHMpOnIsdGhpcy5zbG90RHVyYXRpb249cix0aGlzLnNuYXBEdXJhdGlvbj1zLHRoaXMuc25hcHNQZXJTbG90PXIvcyx0aGlzLm1pblJlc2l6ZUR1cmF0aW9uPXMsbj1pLm9wdCgic2xvdExhYmVsRm9ybWF0IiksdC5pc0FycmF5KG4pJiYobj1uW24ubGVuZ3RoLTFdKSx0aGlzLmxhYmVsRm9ybWF0PW58fGkub3B0KCJzbWFsbFRpbWVGb3JtYXQiKSxuPWkub3B0KCJzbG90TGFiZWxJbnRlcnZhbCIpLHRoaXMubGFiZWxJbnRlcnZhbD1uP2UuZHVyYXRpb24obik6dGhpcy5jb21wdXRlTGFiZWxJbnRlcnZhbChyKX0sY29tcHV0ZUxhYmVsSW50ZXJ2YWw6ZnVuY3Rpb24odCl7dmFyIG4saSxyO2ZvcihuPUdlLmxlbmd0aC0xO24+PTA7bi0tKWlmKGk9ZS5kdXJhdGlvbihHZVtuXSkscj1ZKGksdCksdnQocikmJnI+MSlyZXR1cm4gaTtyZXR1cm4gZS5kdXJhdGlvbih0KX0sY29tcHV0ZUV2ZW50VGltZUZvcm1hdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZpZXcub3B0KCJub01lcmlkaWVtVGltZUZvcm1hdCIpfSxjb21wdXRlRGlzcGxheUV2ZW50RW5kOmZ1bmN0aW9uKCl7cmV0dXJuITB9LHByZXBhcmVIaXRzOmZ1bmN0aW9uKCl7dGhpcy5jb2xDb29yZENhY2hlLmJ1aWxkKCksdGhpcy5zbGF0Q29vcmRDYWNoZS5idWlsZCgpfSxyZWxlYXNlSGl0czpmdW5jdGlvbigpe3RoaXMuY29sQ29vcmRDYWNoZS5jbGVhcigpfSxxdWVyeUhpdDpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuc25hcHNQZXJTbG90LGk9dGhpcy5jb2xDb29yZENhY2hlLHI9dGhpcy5zbGF0Q29vcmRDYWNoZTtpZihpLmlzTGVmdEluQm91bmRzKHQpJiZyLmlzVG9wSW5Cb3VuZHMoZSkpe3ZhciBzPWkuZ2V0SG9yaXpvbnRhbEluZGV4KHQpLG89ci5nZXRWZXJ0aWNhbEluZGV4KGUpO2lmKG51bGwhPXMmJm51bGwhPW8pe3ZhciBsPXIuZ2V0VG9wT2Zmc2V0KG8pLGE9ci5nZXRIZWlnaHQobyksdT0oZS1sKS9hLGM9TWF0aC5mbG9vcih1Km4pLGQ9bypuK2MsaD1sK2MvbiphLGY9bCsoYysxKS9uKmE7cmV0dXJue2NvbDpzLHNuYXA6ZCxjb21wb25lbnQ6dGhpcyxsZWZ0OmkuZ2V0TGVmdE9mZnNldChzKSxyaWdodDppLmdldFJpZ2h0T2Zmc2V0KHMpLHRvcDpoLGJvdHRvbTpmfX19fSxnZXRIaXRTcGFuOmZ1bmN0aW9uKHQpe3ZhciBlLG49dGhpcy5nZXRDZWxsRGF0ZSgwLHQuY29sKSxpPXRoaXMuY29tcHV0ZVNuYXBUaW1lKHQuc25hcCk7cmV0dXJuIG4udGltZShpKSxlPW4uY2xvbmUoKS5hZGQodGhpcy5zbmFwRHVyYXRpb24pLHtzdGFydDpuLGVuZDplfX0sZ2V0SGl0RWw6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY29sRWxzLmVxKHQuY29sKX0scmFuZ2VVcGRhdGVkOmZ1bmN0aW9uKCl7dGhpcy51cGRhdGVEYXlUYWJsZSgpfSxjb21wdXRlU25hcFRpbWU6ZnVuY3Rpb24odCl7cmV0dXJuIGUuZHVyYXRpb24odGhpcy52aWV3Lm1pblRpbWUrdGhpcy5zbmFwRHVyYXRpb24qdCl9LHNwYW5Ub1NlZ3M6ZnVuY3Rpb24odCl7dmFyIGUsbj10aGlzLnNsaWNlUmFuZ2VCeVRpbWVzKHQpO2ZvcihlPTA7ZTxuLmxlbmd0aDtlKyspdGhpcy5pc1JUTD9uW2VdLmNvbD10aGlzLmRheXNQZXJSb3ctMS1uW2VdLmRheUluZGV4Om5bZV0uY29sPW5bZV0uZGF5SW5kZXg7cmV0dXJuIG59LHNsaWNlUmFuZ2VCeVRpbWVzOmZ1bmN0aW9uKHQpe3ZhciBlLG4saSxyLHM9W107Zm9yKG49MDtuPHRoaXMuZGF5c1BlclJvdztuKyspaT10aGlzLmRheURhdGVzW25dLmNsb25lKCkudGltZSgwKSxyPXtzdGFydDppLmNsb25lKCkuYWRkKHRoaXMudmlldy5taW5UaW1lKSxlbmQ6aS5jbG9uZSgpLmFkZCh0aGlzLnZpZXcubWF4VGltZSl9LGU9Tih0LHIpLGUmJihlLmRheUluZGV4PW4scy5wdXNoKGUpKTtyZXR1cm4gc30sdXBkYXRlU2l6ZTpmdW5jdGlvbih0KXt0aGlzLnNsYXRDb29yZENhY2hlLmJ1aWxkKCksdCYmdGhpcy51cGRhdGVTZWdWZXJ0aWNhbHMoW10uY29uY2F0KHRoaXMuZmdTZWdzfHxbXSx0aGlzLmJnU2Vnc3x8W10sdGhpcy5idXNpbmVzc1NlZ3N8fFtdKSl9LGdldFRvdGFsU2xhdEhlaWdodDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNsYXRDb250YWluZXJFbC5vdXRlckhlaWdodCgpfSxjb21wdXRlRGF0ZVRvcDpmdW5jdGlvbih0LG4pe3JldHVybiB0aGlzLmNvbXB1dGVUaW1lVG9wKGUuZHVyYXRpb24odC1uLmNsb25lKCkuc3RyaXBUaW1lKCkpKX0sY29tcHV0ZVRpbWVUb3A6ZnVuY3Rpb24odCl7dmFyIGUsbixpPXRoaXMuc2xhdEVscy5sZW5ndGgscj0odC10aGlzLnZpZXcubWluVGltZSkvdGhpcy5zbG90RHVyYXRpb247cmV0dXJuIHI9TWF0aC5tYXgoMCxyKSxyPU1hdGgubWluKGksciksZT1NYXRoLmZsb29yKHIpLGU9TWF0aC5taW4oZSxpLTEpLG49ci1lLHRoaXMuc2xhdENvb3JkQ2FjaGUuZ2V0VG9wUG9zaXRpb24oZSkrdGhpcy5zbGF0Q29vcmRDYWNoZS5nZXRIZWlnaHQoZSkqbn0scmVuZGVyRHJhZzpmdW5jdGlvbih0LGUpe3ZhciBuLGk7aWYoZSlyZXR1cm4gdGhpcy5yZW5kZXJFdmVudExvY2F0aW9uSGVscGVyKHQsZSk7Zm9yKG49dGhpcy5ldmVudFRvU3BhbnModCksaT0wO2k8bi5sZW5ndGg7aSsrKXRoaXMucmVuZGVySGlnaGxpZ2h0KG5baV0pfSx1bnJlbmRlckRyYWc6ZnVuY3Rpb24oKXt0aGlzLnVucmVuZGVySGVscGVyKCksdGhpcy51bnJlbmRlckhpZ2hsaWdodCgpfSxyZW5kZXJFdmVudFJlc2l6ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnJlbmRlckV2ZW50TG9jYXRpb25IZWxwZXIodCxlKX0sdW5yZW5kZXJFdmVudFJlc2l6ZTpmdW5jdGlvbigpe3RoaXMudW5yZW5kZXJIZWxwZXIoKX0scmVuZGVySGVscGVyOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMucmVuZGVySGVscGVyU2Vncyh0aGlzLmV2ZW50VG9TZWdzKHQpLGUpfSx1bnJlbmRlckhlbHBlcjpmdW5jdGlvbigpe3RoaXMudW5yZW5kZXJIZWxwZXJTZWdzKCl9LHJlbmRlckJ1c2luZXNzSG91cnM6ZnVuY3Rpb24oKXt0aGlzLnJlbmRlckJ1c2luZXNzU2Vncyh0aGlzLmJ1aWxkQnVzaW5lc3NIb3VyU2VncygpKX0sdW5yZW5kZXJCdXNpbmVzc0hvdXJzOmZ1bmN0aW9uKCl7dGhpcy51bnJlbmRlckJ1c2luZXNzU2VncygpfSxnZXROb3dJbmRpY2F0b3JVbml0OmZ1bmN0aW9uKCl7cmV0dXJuIm1pbnV0ZSJ9LHJlbmRlck5vd0luZGljYXRvcjpmdW5jdGlvbihlKXt2YXIgbixpPXRoaXMuc3BhblRvU2Vncyh7c3RhcnQ6ZSxlbmQ6ZX0pLHI9dGhpcy5jb21wdXRlRGF0ZVRvcChlLGUpLHM9W107Zm9yKG49MDtuPGkubGVuZ3RoO24rKylzLnB1c2godCgnPGRpdiBjbGFzcz0iZmMtbm93LWluZGljYXRvciBmYy1ub3ctaW5kaWNhdG9yLWxpbmUiPjwvZGl2PicpLmNzcygidG9wIixyKS5hcHBlbmRUbyh0aGlzLmNvbENvbnRhaW5lckVscy5lcShpW25dLmNvbCkpWzBdKTtpLmxlbmd0aD4wJiZzLnB1c2godCgnPGRpdiBjbGFzcz0iZmMtbm93LWluZGljYXRvciBmYy1ub3ctaW5kaWNhdG9yLWFycm93Ij48L2Rpdj4nKS5jc3MoInRvcCIscikuYXBwZW5kVG8odGhpcy5lbC5maW5kKCIuZmMtY29udGVudC1za2VsZXRvbiIpKVswXSksdGhpcy5ub3dJbmRpY2F0b3JFbHM9dChzKX0sdW5yZW5kZXJOb3dJbmRpY2F0b3I6ZnVuY3Rpb24oKXt0aGlzLm5vd0luZGljYXRvckVscyYmKHRoaXMubm93SW5kaWNhdG9yRWxzLnJlbW92ZSgpLHRoaXMubm93SW5kaWNhdG9yRWxzPW51bGwpfSxyZW5kZXJTZWxlY3Rpb246ZnVuY3Rpb24odCl7dGhpcy52aWV3Lm9wdCgic2VsZWN0SGVscGVyIik/dGhpcy5yZW5kZXJFdmVudExvY2F0aW9uSGVscGVyKHQpOnRoaXMucmVuZGVySGlnaGxpZ2h0KHQpfSx1bnJlbmRlclNlbGVjdGlvbjpmdW5jdGlvbigpe3RoaXMudW5yZW5kZXJIZWxwZXIoKSx0aGlzLnVucmVuZGVySGlnaGxpZ2h0KCl9LHJlbmRlckhpZ2hsaWdodDpmdW5jdGlvbih0KXt0aGlzLnJlbmRlckhpZ2hsaWdodFNlZ3ModGhpcy5zcGFuVG9TZWdzKHQpKX0sdW5yZW5kZXJIaWdobGlnaHQ6ZnVuY3Rpb24oKXt0aGlzLnVucmVuZGVySGlnaGxpZ2h0U2VncygpfX0pO3dlLm1peGluKHtjb2xDb250YWluZXJFbHM6bnVsbCxmZ0NvbnRhaW5lckVsczpudWxsLGJnQ29udGFpbmVyRWxzOm51bGwsaGVscGVyQ29udGFpbmVyRWxzOm51bGwsaGlnaGxpZ2h0Q29udGFpbmVyRWxzOm51bGwsYnVzaW5lc3NDb250YWluZXJFbHM6bnVsbCxmZ1NlZ3M6bnVsbCxiZ1NlZ3M6bnVsbCxoZWxwZXJTZWdzOm51bGwsaGlnaGxpZ2h0U2VnczpudWxsLGJ1c2luZXNzU2VnczpudWxsLHJlbmRlckNvbnRlbnRTa2VsZXRvbjpmdW5jdGlvbigpe3ZhciBlLG4saT0iIjtmb3IoZT0wO2U8dGhpcy5jb2xDbnQ7ZSsrKWkrPSc8dGQ+PGRpdiBjbGFzcz0iZmMtY29udGVudC1jb2wiPjxkaXYgY2xhc3M9ImZjLWV2ZW50LWNvbnRhaW5lciBmYy1oZWxwZXItY29udGFpbmVyIj48L2Rpdj48ZGl2IGNsYXNzPSJmYy1ldmVudC1jb250YWluZXIiPjwvZGl2PjxkaXYgY2xhc3M9ImZjLWhpZ2hsaWdodC1jb250YWluZXIiPjwvZGl2PjxkaXYgY2xhc3M9ImZjLWJnZXZlbnQtY29udGFpbmVyIj48L2Rpdj48ZGl2IGNsYXNzPSJmYy1idXNpbmVzcy1jb250YWluZXIiPjwvZGl2PjwvZGl2PjwvdGQ+JztuPXQoJzxkaXYgY2xhc3M9ImZjLWNvbnRlbnQtc2tlbGV0b24iPjx0YWJsZT48dHI+JytpKyI8L3RyPjwvdGFibGU+PC9kaXY+IiksdGhpcy5jb2xDb250YWluZXJFbHM9bi5maW5kKCIuZmMtY29udGVudC1jb2wiKSx0aGlzLmhlbHBlckNvbnRhaW5lckVscz1uLmZpbmQoIi5mYy1oZWxwZXItY29udGFpbmVyIiksdGhpcy5mZ0NvbnRhaW5lckVscz1uLmZpbmQoIi5mYy1ldmVudC1jb250YWluZXI6bm90KC5mYy1oZWxwZXItY29udGFpbmVyKSIpLHRoaXMuYmdDb250YWluZXJFbHM9bi5maW5kKCIuZmMtYmdldmVudC1jb250YWluZXIiKSx0aGlzLmhpZ2hsaWdodENvbnRhaW5lckVscz1uLmZpbmQoIi5mYy1oaWdobGlnaHQtY29udGFpbmVyIiksdGhpcy5idXNpbmVzc0NvbnRhaW5lckVscz1uLmZpbmQoIi5mYy1idXNpbmVzcy1jb250YWluZXIiKSx0aGlzLmJvb2tlbmRDZWxscyhuLmZpbmQoInRyIikpLHRoaXMuZWwuYXBwZW5kKG4pfSxyZW5kZXJGZ1NlZ3M6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9dGhpcy5yZW5kZXJGZ1NlZ3NJbnRvQ29udGFpbmVycyh0LHRoaXMuZmdDb250YWluZXJFbHMpLHRoaXMuZmdTZWdzPXQsdH0sdW5yZW5kZXJGZ1NlZ3M6ZnVuY3Rpb24oKXt0aGlzLnVucmVuZGVyTmFtZWRTZWdzKCJmZ1NlZ3MiKX0scmVuZGVySGVscGVyU2VnczpmdW5jdGlvbihlLG4pe3ZhciBpLHIscyxvPVtdO2ZvcihlPXRoaXMucmVuZGVyRmdTZWdzSW50b0NvbnRhaW5lcnMoZSx0aGlzLmhlbHBlckNvbnRhaW5lckVscyksaT0wO2k8ZS5sZW5ndGg7aSsrKXI9ZVtpXSxuJiZuLmNvbD09PXIuY29sJiYocz1uLmVsLHIuZWwuY3NzKHtsZWZ0OnMuY3NzKCJsZWZ0IikscmlnaHQ6cy5jc3MoInJpZ2h0IiksIm1hcmdpbi1sZWZ0IjpzLmNzcygibWFyZ2luLWxlZnQiKSwibWFyZ2luLXJpZ2h0IjpzLmNzcygibWFyZ2luLXJpZ2h0Iil9KSksby5wdXNoKHIuZWxbMF0pO3JldHVybiB0aGlzLmhlbHBlclNlZ3M9ZSx0KG8pfSx1bnJlbmRlckhlbHBlclNlZ3M6ZnVuY3Rpb24oKXt0aGlzLnVucmVuZGVyTmFtZWRTZWdzKCJoZWxwZXJTZWdzIil9LHJlbmRlckJnU2VnczpmdW5jdGlvbih0KXtyZXR1cm4gdD10aGlzLnJlbmRlckZpbGxTZWdFbHMoImJnRXZlbnQiLHQpLHRoaXMudXBkYXRlU2VnVmVydGljYWxzKHQpLHRoaXMuYXR0YWNoU2Vnc0J5Q29sKHRoaXMuZ3JvdXBTZWdzQnlDb2wodCksdGhpcy5iZ0NvbnRhaW5lckVscyksdGhpcy5iZ1NlZ3M9dCx0fSx1bnJlbmRlckJnU2VnczpmdW5jdGlvbigpe3RoaXMudW5yZW5kZXJOYW1lZFNlZ3MoImJnU2VncyIpfSxyZW5kZXJIaWdobGlnaHRTZWdzOmZ1bmN0aW9uKHQpe3Q9dGhpcy5yZW5kZXJGaWxsU2VnRWxzKCJoaWdobGlnaHQiLHQpLHRoaXMudXBkYXRlU2VnVmVydGljYWxzKHQpLHRoaXMuYXR0YWNoU2Vnc0J5Q29sKHRoaXMuZ3JvdXBTZWdzQnlDb2wodCksdGhpcy5oaWdobGlnaHRDb250YWluZXJFbHMpLHRoaXMuaGlnaGxpZ2h0U2Vncz10fSx1bnJlbmRlckhpZ2hsaWdodFNlZ3M6ZnVuY3Rpb24oKXt0aGlzLnVucmVuZGVyTmFtZWRTZWdzKCJoaWdobGlnaHRTZWdzIil9LHJlbmRlckJ1c2luZXNzU2VnczpmdW5jdGlvbih0KXt0PXRoaXMucmVuZGVyRmlsbFNlZ0VscygiYnVzaW5lc3NIb3VycyIsdCksdGhpcy51cGRhdGVTZWdWZXJ0aWNhbHModCksdGhpcy5hdHRhY2hTZWdzQnlDb2wodGhpcy5ncm91cFNlZ3NCeUNvbCh0KSx0aGlzLmJ1c2luZXNzQ29udGFpbmVyRWxzKSx0aGlzLmJ1c2luZXNzU2Vncz10fSx1bnJlbmRlckJ1c2luZXNzU2VnczpmdW5jdGlvbigpe3RoaXMudW5yZW5kZXJOYW1lZFNlZ3MoImJ1c2luZXNzU2VncyIpfSxncm91cFNlZ3NCeUNvbDpmdW5jdGlvbih0KXt2YXIgZSxuPVtdO2ZvcihlPTA7ZTx0aGlzLmNvbENudDtlKyspbi5wdXNoKFtdKTtmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKW5bdFtlXS5jb2xdLnB1c2godFtlXSk7cmV0dXJuIG59LGF0dGFjaFNlZ3NCeUNvbDpmdW5jdGlvbih0LGUpe3ZhciBuLGkscjtmb3Iobj0wO248dGhpcy5jb2xDbnQ7bisrKWZvcihpPXRbbl0scj0wO3I8aS5sZW5ndGg7cisrKWUuZXEobikuYXBwZW5kKGlbcl0uZWwpfSx1bnJlbmRlck5hbWVkU2VnczpmdW5jdGlvbih0KXt2YXIgZSxuPXRoaXNbdF07aWYobil7Zm9yKGU9MDtlPG4ubGVuZ3RoO2UrKyluW2VdLmVsLnJlbW92ZSgpO3RoaXNbdF09bnVsbH19LHJlbmRlckZnU2Vnc0ludG9Db250YWluZXJzOmZ1bmN0aW9uKHQsZSl7dmFyIG4saTtmb3IodD10aGlzLnJlbmRlckZnU2VnRWxzKHQpLG49dGhpcy5ncm91cFNlZ3NCeUNvbCh0KSxpPTA7aTx0aGlzLmNvbENudDtpKyspdGhpcy51cGRhdGVGZ1NlZ0Nvb3JkcyhuW2ldKTtyZXR1cm4gdGhpcy5hdHRhY2hTZWdzQnlDb2wobixlKSx0fSxmZ1NlZ0h0bWw6ZnVuY3Rpb24odCxlKXt2YXIgbixpLHIscz10aGlzLnZpZXcsbz10LmV2ZW50LGw9cy5pc0V2ZW50RHJhZ2dhYmxlKG8pLGE9IWUmJnQuaXNTdGFydCYmcy5pc0V2ZW50UmVzaXphYmxlRnJvbVN0YXJ0KG8pLHU9IWUmJnQuaXNFbmQmJnMuaXNFdmVudFJlc2l6YWJsZUZyb21FbmQobyksYz10aGlzLmdldFNlZ0NsYXNzZXModCxsLGF8fHUpLGQ9aHQodGhpcy5nZXRTZWdTa2luQ3NzKHQpKTtyZXR1cm4gYy51bnNoaWZ0KCJmYy10aW1lLWdyaWQtZXZlbnQiLCJmYy12LWV2ZW50Iikscy5pc011bHRpRGF5RXZlbnQobyk/KHQuaXNTdGFydHx8dC5pc0VuZCkmJihuPXRoaXMuZ2V0RXZlbnRUaW1lVGV4dCh0KSxpPXRoaXMuZ2V0RXZlbnRUaW1lVGV4dCh0LCJMVCIpLHI9dGhpcy5nZXRFdmVudFRpbWVUZXh0KHQsbnVsbCwhMSkpOihuPXRoaXMuZ2V0RXZlbnRUaW1lVGV4dChvKSxpPXRoaXMuZ2V0RXZlbnRUaW1lVGV4dChvLCJMVCIpLHI9dGhpcy5nZXRFdmVudFRpbWVUZXh0KG8sbnVsbCwhMSkpLCc8YSBjbGFzcz0iJytjLmpvaW4oIiAiKSsnIicrKG8udXJsPycgaHJlZj0iJytjdChvLnVybCkrJyInOiIiKSsoZD8nIHN0eWxlPSInK2QrJyInOiIiKSsnPjxkaXYgY2xhc3M9ImZjLWNvbnRlbnQiPicrKG4/JzxkaXYgY2xhc3M9ImZjLXRpbWUiIGRhdGEtc3RhcnQ9IicrY3QocikrJyIgZGF0YS1mdWxsPSInK2N0KGkpKyciPjxzcGFuPicrY3QobikrIjwvc3Bhbj48L2Rpdj4iOiIiKSsoby50aXRsZT8nPGRpdiBjbGFzcz0iZmMtdGl0bGUiPicrY3Qoby50aXRsZSkrIjwvZGl2PiI6IiIpKyc8L2Rpdj48ZGl2IGNsYXNzPSJmYy1iZyIvPicrKHU/JzxkaXYgY2xhc3M9ImZjLXJlc2l6ZXIgZmMtZW5kLXJlc2l6ZXIiIC8+JzoiIikrIjwvYT4ifSx1cGRhdGVTZWdWZXJ0aWNhbHM6ZnVuY3Rpb24odCl7dGhpcy5jb21wdXRlU2VnVmVydGljYWxzKHQpLHRoaXMuYXNzaWduU2VnVmVydGljYWxzKHQpfSxjb21wdXRlU2VnVmVydGljYWxzOmZ1bmN0aW9uKHQpe3ZhciBlLG4saTtmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKW49dFtlXSxpPXRoaXMuZGF5RGF0ZXNbbi5kYXlJbmRleF0sbi50b3A9dGhpcy5jb21wdXRlRGF0ZVRvcChuLnN0YXJ0LGkpLG4uYm90dG9tPXRoaXMuY29tcHV0ZURhdGVUb3Aobi5lbmQsaSl9LGFzc2lnblNlZ1ZlcnRpY2FsczpmdW5jdGlvbih0KXt2YXIgZSxuO2ZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspbj10W2VdLG4uZWwuY3NzKHRoaXMuZ2VuZXJhdGVTZWdWZXJ0aWNhbENzcyhuKSl9LGdlbmVyYXRlU2VnVmVydGljYWxDc3M6ZnVuY3Rpb24odCl7cmV0dXJue3RvcDp0LnRvcCxib3R0b206LXQuYm90dG9tfX0sdXBkYXRlRmdTZWdDb29yZHM6ZnVuY3Rpb24odCl7dGhpcy5jb21wdXRlU2VnVmVydGljYWxzKHQpLHRoaXMuY29tcHV0ZUZnU2VnSG9yaXpvbnRhbHModCksdGhpcy5hc3NpZ25TZWdWZXJ0aWNhbHModCksdGhpcy5hc3NpZ25GZ1NlZ0hvcml6b250YWxzKHQpfSxjb21wdXRlRmdTZWdIb3Jpem9udGFsczpmdW5jdGlvbih0KXt2YXIgZSxuLGk7aWYodGhpcy5zb3J0RXZlbnRTZWdzKHQpLGU9enQodCksQXQoZSksbj1lWzBdKXtmb3IoaT0wO2k8bi5sZW5ndGg7aSsrKUd0KG5baV0pO2ZvcihpPTA7aTxuLmxlbmd0aDtpKyspdGhpcy5jb21wdXRlRmdTZWdGb3J3YXJkQmFjayhuW2ldLDAsMCl9fSxjb21wdXRlRmdTZWdGb3J3YXJkQmFjazpmdW5jdGlvbih0LGUsbil7dmFyIGkscj10LmZvcndhcmRTZWdzO2lmKHZvaWQgMD09PXQuZm9yd2FyZENvb3JkKWZvcihyLmxlbmd0aD8odGhpcy5zb3J0Rm9yd2FyZFNlZ3MociksdGhpcy5jb21wdXRlRmdTZWdGb3J3YXJkQmFjayhyWzBdLGUrMSxuKSx0LmZvcndhcmRDb29yZD1yWzBdLmJhY2t3YXJkQ29vcmQpOnQuZm9yd2FyZENvb3JkPTEsdC5iYWNrd2FyZENvb3JkPXQuZm9yd2FyZENvb3JkLSh0LmZvcndhcmRDb29yZC1uKS8oZSsxKSxpPTA7aTxyLmxlbmd0aDtpKyspdGhpcy5jb21wdXRlRmdTZWdGb3J3YXJkQmFjayhyW2ldLDAsdC5mb3J3YXJkQ29vcmQpfSxzb3J0Rm9yd2FyZFNlZ3M6ZnVuY3Rpb24odCl7dC5zb3J0KG10KHRoaXMsImNvbXBhcmVGb3J3YXJkU2VncyIpKX0sY29tcGFyZUZvcndhcmRTZWdzOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZm9yd2FyZFByZXNzdXJlLXQuZm9yd2FyZFByZXNzdXJlfHwodC5iYWNrd2FyZENvb3JkfHwwKS0oZS5iYWNrd2FyZENvb3JkfHwwKXx8dGhpcy5jb21wYXJlRXZlbnRTZWdzKHQsZSl9LGFzc2lnbkZnU2VnSG9yaXpvbnRhbHM6ZnVuY3Rpb24odCl7dmFyIGUsbjtmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKW49dFtlXSxuLmVsLmNzcyh0aGlzLmdlbmVyYXRlRmdTZWdIb3Jpem9udGFsQ3NzKG4pKSxuLmJvdHRvbS1uLnRvcDwzMCYmbi5lbC5hZGRDbGFzcygiZmMtc2hvcnQiKX0sZ2VuZXJhdGVGZ1NlZ0hvcml6b250YWxDc3M6ZnVuY3Rpb24odCl7dmFyIGUsbixpPXRoaXMudmlldy5vcHQoInNsb3RFdmVudE92ZXJsYXAiKSxyPXQuYmFja3dhcmRDb29yZCxzPXQuZm9yd2FyZENvb3JkLG89dGhpcy5nZW5lcmF0ZVNlZ1ZlcnRpY2FsQ3NzKHQpO3JldHVybiBpJiYocz1NYXRoLm1pbigxLHIrMioocy1yKSkpLHRoaXMuaXNSVEw/KGU9MS1zLG49cik6KGU9cixuPTEtcyksby56SW5kZXg9dC5sZXZlbCsxLG8ubGVmdD0xMDAqZSsiJSIsby5yaWdodD0xMDAqbisiJSIsaSYmdC5mb3J3YXJkUHJlc3N1cmUmJihvW3RoaXMuaXNSVEw/Im1hcmdpbkxlZnQiOiJtYXJnaW5SaWdodCJdPTIwKSxvfX0pO3ZhciBiZT1adC5WaWV3PXd0LmV4dGVuZCh1ZSxjZSx7dHlwZTpudWxsLG5hbWU6bnVsbCx0aXRsZTpudWxsLGNhbGVuZGFyOm51bGwsdmlld1NwZWM6bnVsbCxvcHRpb25zOm51bGwsZWw6bnVsbCxpc0RhdGVTZXQ6ITEsaXNEYXRlUmVuZGVyZWQ6ITEsZGF0ZVJlbmRlclF1ZXVlOm51bGwsaXNFdmVudHNCb3VuZDohMSxpc0V2ZW50c1NldDohMSxpc0V2ZW50c1JlbmRlcmVkOiExLGV2ZW50UmVuZGVyUXVldWU6bnVsbCxpc1JUTDohMSxpc1NlbGVjdGVkOiExLHNlbGVjdGVkRXZlbnQ6bnVsbCxldmVudE9yZGVyU3BlY3M6bnVsbCx3aWRnZXRIZWFkZXJDbGFzczpudWxsLHdpZGdldENvbnRlbnRDbGFzczpudWxsLGhpZ2hsaWdodFN0YXRlQ2xhc3M6bnVsbCxuZXh0RGF5VGhyZXNob2xkOm51bGwsaXNIaWRkZW5EYXlIYXNoOm51bGwsaXNOb3dJbmRpY2F0b3JSZW5kZXJlZDpudWxsLGluaXRpYWxOb3dEYXRlOm51bGwsaW5pdGlhbE5vd1F1ZXJpZWRNczpudWxsLApub3dJbmRpY2F0b3JUaW1lb3V0SUQ6bnVsbCxub3dJbmRpY2F0b3JJbnRlcnZhbElEOm51bGwsY29uc3RydWN0b3I6ZnVuY3Rpb24odCxuKXt0aGlzLmNhbGVuZGFyPXQsdGhpcy52aWV3U3BlYz1uLHRoaXMudHlwZT1uLnR5cGUsdGhpcy5vcHRpb25zPW4ub3B0aW9ucyx0aGlzLm5hbWU9dGhpcy50eXBlLHRoaXMubmV4dERheVRocmVzaG9sZD1lLmR1cmF0aW9uKHRoaXMub3B0KCJuZXh0RGF5VGhyZXNob2xkIikpLHRoaXMuaW5pdFRoZW1pbmdQcm9wcygpLHRoaXMuaW5pdEhpZGRlbkRheXMoKSx0aGlzLmlzUlRMPXRoaXMub3B0KCJpc1JUTCIpLHRoaXMuZXZlbnRPcmRlclNwZWNzPUwodGhpcy5vcHQoImV2ZW50T3JkZXIiKSksdGhpcy5kYXRlUmVuZGVyUXVldWU9bmV3IFR0LHRoaXMuZXZlbnRSZW5kZXJRdWV1ZT1uZXcgVHQodGhpcy5vcHQoImV2ZW50UmVuZGVyV2FpdCIpKSx0aGlzLmluaXRpYWxpemUoKX0saW5pdGlhbGl6ZTpmdW5jdGlvbigpe30sb3B0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnNbdF19LHB1YmxpY2x5VHJpZ2dlcjpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuY2FsZW5kYXI7cmV0dXJuIG4ucHVibGljbHlUcmlnZ2VyLmFwcGx5KG4sW3QsZXx8dGhpc10uY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKSxbdGhpc10pKX0scmVqZWN0T246ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO3JldHVybiBuZXcgRHQoZnVuY3Rpb24oaSxyKXtmdW5jdGlvbiBzKCl7bi5vZmYodCxyKX1uLm9uZSh0LHIpLGUudGhlbihmdW5jdGlvbih0KXtzKCksaSh0KX0sZnVuY3Rpb24oKXtzKCkscigpfSl9KX0sdXBkYXRlVGl0bGU6ZnVuY3Rpb24oKXt0aGlzLnRpdGxlPXRoaXMuY29tcHV0ZVRpdGxlKCksdGhpcy5jYWxlbmRhci5zZXRUb29sYmFyc1RpdGxlKHRoaXMudGl0bGUpfSxjb21wdXRlVGl0bGU6ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4gdD0vXih5ZWFyfG1vbnRoKSQvLnRlc3QodGhpcy5jdXJyZW50UmFuZ2VVbml0KT90aGlzLmN1cnJlbnRSYW5nZTp0aGlzLmFjdGl2ZVJhbmdlLHRoaXMuZm9ybWF0UmFuZ2Uoe3N0YXJ0OnRoaXMuY2FsZW5kYXIuYXBwbHlUaW1lem9uZSh0LnN0YXJ0KSxlbmQ6dGhpcy5jYWxlbmRhci5hcHBseVRpbWV6b25lKHQuZW5kKX0sdGhpcy5vcHQoInRpdGxlRm9ybWF0Iil8fHRoaXMuY29tcHV0ZVRpdGxlRm9ybWF0KCksdGhpcy5vcHQoInRpdGxlUmFuZ2VTZXBhcmF0b3IiKSl9LGNvbXB1dGVUaXRsZUZvcm1hdDpmdW5jdGlvbigpe3JldHVybiJ5ZWFyIj09dGhpcy5jdXJyZW50UmFuZ2VVbml0PyJZWVlZIjoibW9udGgiPT10aGlzLmN1cnJlbnRSYW5nZVVuaXQ/dGhpcy5vcHQoIm1vbnRoWWVhckZvcm1hdCIpOnRoaXMuY3VycmVudFJhbmdlQXMoImRheXMiKT4xPyJsbCI6IkxMIn0sZm9ybWF0UmFuZ2U6ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXQuZW5kO3JldHVybiBpLmhhc1RpbWUoKXx8KGk9aS5jbG9uZSgpLnN1YnRyYWN0KDEpKSxsZSh0LnN0YXJ0LGksZSxuLHRoaXMub3B0KCJpc1JUTCIpKX0sZ2V0QWxsRGF5SHRtbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdCgiYWxsRGF5SHRtbCIpfHxjdCh0aGlzLm9wdCgiYWxsRGF5VGV4dCIpKX0sYnVpbGRHb3RvQW5jaG9ySHRtbDpmdW5jdGlvbihlLG4saSl7dmFyIHIscyxvLGw7cmV0dXJuIHQuaXNQbGFpbk9iamVjdChlKT8ocj1lLmRhdGUscz1lLnR5cGUsbz1lLmZvcmNlT2ZmKTpyPWUscj1adC5tb21lbnQociksbD17ZGF0ZTpyLmZvcm1hdCgiWVlZWS1NTS1ERCIpLHR5cGU6c3x8ImRheSJ9LCJzdHJpbmciPT10eXBlb2YgbiYmKGk9bixuPW51bGwpLG49bj8iICIrZnQobik6IiIsaT1pfHwiIiwhbyYmdGhpcy5vcHQoIm5hdkxpbmtzIik/IjxhIituKycgZGF0YS1nb3RvPSInK2N0KEpTT04uc3RyaW5naWZ5KGwpKSsnIj4nK2krIjwvYT4iOiI8c3BhbiIrbisiPiIraSsiPC9zcGFuPiJ9LHNldEVsZW1lbnQ6ZnVuY3Rpb24odCl7dGhpcy5lbD10LHRoaXMuYmluZEdsb2JhbEhhbmRsZXJzKCksdGhpcy5yZW5kZXJTa2VsZXRvbigpfSxyZW1vdmVFbGVtZW50OmZ1bmN0aW9uKCl7dGhpcy51bnNldERhdGUoKSx0aGlzLnVucmVuZGVyU2tlbGV0b24oKSx0aGlzLnVuYmluZEdsb2JhbEhhbmRsZXJzKCksdGhpcy5lbC5yZW1vdmUoKX0scmVuZGVyU2tlbGV0b246ZnVuY3Rpb24oKXt9LHVucmVuZGVyU2tlbGV0b246ZnVuY3Rpb24oKXt9LHNldERhdGU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pc0RhdGVTZXQ7dGhpcy5pc0RhdGVTZXQ9ITAsdGhpcy5oYW5kbGVSYXdEYXRlKHQpLHRoaXMudHJpZ2dlcihlPyJkYXRlUmVzZXQiOiJkYXRlU2V0Iix0KX0sdW5zZXREYXRlOmZ1bmN0aW9uKCl7dGhpcy5pc0RhdGVTZXQmJih0aGlzLmlzRGF0ZVNldD0hMSx0aGlzLmhhbmRsZURhdGVVbnNldCgpLHRoaXMudHJpZ2dlcigiZGF0ZVVuc2V0IikpfSxoYW5kbGVSYXdEYXRlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj10aGlzLmJ1aWxkRGF0ZVByb2ZpbGUodCxudWxsLCEwKTt0aGlzLmlzU2FtZURhdGVQcm9maWxlKG4pP3RoaXMuZGF0ZVJlbmRlclF1ZXVlLmFkZChmdW5jdGlvbigpe2UuaXNEYXRlUmVuZGVyZWR8fGUuaGFuZGxlRGF0ZShuKX0pOnRoaXMuaGFuZGxlRGF0ZShuKX0saGFuZGxlRGF0ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMudW5iaW5kRXZlbnRzKCksdGhpcy5yZXF1ZXN0RGF0ZVJlbmRlcih0KS50aGVuKGZ1bmN0aW9uKCl7ZS5iaW5kRXZlbnRzKCl9KX0saGFuZGxlRGF0ZVVuc2V0OmZ1bmN0aW9uKCl7dGhpcy51bmJpbmRFdmVudHMoKSx0aGlzLnJlcXVlc3REYXRlVW5yZW5kZXIoKX0scmVxdWVzdERhdGVSZW5kZXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gdGhpcy5kYXRlUmVuZGVyUXVldWUuYWRkKGZ1bmN0aW9uKCl7cmV0dXJuIGUuZXhlY3V0ZURhdGVSZW5kZXIodCl9KX0scmVxdWVzdERhdGVVbnJlbmRlcjpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuZGF0ZVJlbmRlclF1ZXVlLmFkZChmdW5jdGlvbigpe3JldHVybiB0LmV4ZWN1dGVEYXRlVW5yZW5kZXIoKX0pfSxleGVjdXRlRGF0ZVJlbmRlcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiB0JiZlLnNldERhdGVQcm9maWxlKHQpLHRoaXMudXBkYXRlVGl0bGUoKSx0aGlzLmNhbGVuZGFyLnVwZGF0ZVRvb2xiYXJCdXR0b25zKCksdD90aGlzLmNhcHR1cmVJbml0aWFsU2Nyb2xsKCk6dGhpcy5jYXB0dXJlU2Nyb2xsKCksdGhpcy5mcmVlemVIZWlnaHQoKSx0aGlzLmV4ZWN1dGVEYXRlVW5yZW5kZXIoKS50aGVuKGZ1bmN0aW9uKCl7ZS5yZW5kZXImJmUucmVuZGVyKCksZS5yZW5kZXJEYXRlcygpLGUudXBkYXRlU2l6ZSgpLGUucmVuZGVyQnVzaW5lc3NIb3VycygpLGUuc3RhcnROb3dJbmRpY2F0b3IoKSxlLnRoYXdIZWlnaHQoKSxlLnJlbGVhc2VTY3JvbGwoKSxlLmlzRGF0ZVJlbmRlcmVkPSEwLGUub25EYXRlUmVuZGVyKCksZS50cmlnZ2VyKCJkYXRlUmVuZGVyIil9KX0sZXhlY3V0ZURhdGVVbnJlbmRlcjpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIHQuaXNEYXRlUmVuZGVyZWQ/dGhpcy5yZXF1ZXN0RXZlbnRzVW5yZW5kZXIoKS50aGVuKGZ1bmN0aW9uKCl7dC51bnNlbGVjdCgpLHQuc3RvcE5vd0luZGljYXRvcigpLHQudHJpZ2dlclVucmVuZGVyKCksdC51bnJlbmRlckJ1c2luZXNzSG91cnMoKSx0LnVucmVuZGVyRGF0ZXMoKSx0LmRlc3Ryb3kmJnQuZGVzdHJveSgpLHQuaXNEYXRlUmVuZGVyZWQ9ITEsdC50cmlnZ2VyKCJkYXRlVW5yZW5kZXIiKX0pOkR0LnJlc29sdmUoKX0sb25EYXRlUmVuZGVyOmZ1bmN0aW9uKCl7dGhpcy50cmlnZ2VyUmVuZGVyKCl9LHJlbmRlckRhdGVzOmZ1bmN0aW9uKCl7fSx1bnJlbmRlckRhdGVzOmZ1bmN0aW9uKCl7fSx0cmlnZ2VyUmVuZGVyOmZ1bmN0aW9uKCl7dGhpcy5wdWJsaWNseVRyaWdnZXIoInZpZXdSZW5kZXIiLHRoaXMsdGhpcyx0aGlzLmVsKX0sdHJpZ2dlclVucmVuZGVyOmZ1bmN0aW9uKCl7dGhpcy5wdWJsaWNseVRyaWdnZXIoInZpZXdEZXN0cm95Iix0aGlzLHRoaXMsdGhpcy5lbCl9LGJpbmRHbG9iYWxIYW5kbGVyczpmdW5jdGlvbigpe3RoaXMubGlzdGVuVG8ocGUuZ2V0KCkse3RvdWNoc3RhcnQ6dGhpcy5wcm9jZXNzVW5zZWxlY3QsbW91c2Vkb3duOnRoaXMuaGFuZGxlRG9jdW1lbnRNb3VzZWRvd259KX0sdW5iaW5kR2xvYmFsSGFuZGxlcnM6ZnVuY3Rpb24oKXt0aGlzLnN0b3BMaXN0ZW5pbmdUbyhwZS5nZXQoKSl9LGluaXRUaGVtaW5nUHJvcHM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdCgidGhlbWUiKT8idWkiOiJmYyI7dGhpcy53aWRnZXRIZWFkZXJDbGFzcz10KyItd2lkZ2V0LWhlYWRlciIsdGhpcy53aWRnZXRDb250ZW50Q2xhc3M9dCsiLXdpZGdldC1jb250ZW50Iix0aGlzLmhpZ2hsaWdodFN0YXRlQ2xhc3M9dCsiLXN0YXRlLWhpZ2hsaWdodCJ9LHJlbmRlckJ1c2luZXNzSG91cnM6ZnVuY3Rpb24oKXt9LHVucmVuZGVyQnVzaW5lc3NIb3VyczpmdW5jdGlvbigpe30sc3RhcnROb3dJbmRpY2F0b3I6ZnVuY3Rpb24oKXt2YXIgdCxuLGkscj10aGlzO3RoaXMub3B0KCJub3dJbmRpY2F0b3IiKSYmKHQ9dGhpcy5nZXROb3dJbmRpY2F0b3JVbml0KCksdCYmKG49bXQodGhpcywidXBkYXRlTm93SW5kaWNhdG9yIiksdGhpcy5pbml0aWFsTm93RGF0ZT10aGlzLmNhbGVuZGFyLmdldE5vdygpLHRoaXMuaW5pdGlhbE5vd1F1ZXJpZWRNcz0rbmV3IERhdGUsdGhpcy5yZW5kZXJOb3dJbmRpY2F0b3IodGhpcy5pbml0aWFsTm93RGF0ZSksdGhpcy5pc05vd0luZGljYXRvclJlbmRlcmVkPSEwLGk9dGhpcy5pbml0aWFsTm93RGF0ZS5jbG9uZSgpLnN0YXJ0T2YodCkuYWRkKDEsdCktdGhpcy5pbml0aWFsTm93RGF0ZSx0aGlzLm5vd0luZGljYXRvclRpbWVvdXRJRD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ci5ub3dJbmRpY2F0b3JUaW1lb3V0SUQ9bnVsbCxuKCksaT0rZS5kdXJhdGlvbigxLHQpLGk9TWF0aC5tYXgoMTAwLGkpLHIubm93SW5kaWNhdG9ySW50ZXJ2YWxJRD1zZXRJbnRlcnZhbChuLGkpfSxpKSkpfSx1cGRhdGVOb3dJbmRpY2F0b3I6ZnVuY3Rpb24oKXt0aGlzLmlzTm93SW5kaWNhdG9yUmVuZGVyZWQmJih0aGlzLnVucmVuZGVyTm93SW5kaWNhdG9yKCksdGhpcy5yZW5kZXJOb3dJbmRpY2F0b3IodGhpcy5pbml0aWFsTm93RGF0ZS5jbG9uZSgpLmFkZChuZXcgRGF0ZS10aGlzLmluaXRpYWxOb3dRdWVyaWVkTXMpKSl9LHN0b3BOb3dJbmRpY2F0b3I6ZnVuY3Rpb24oKXt0aGlzLmlzTm93SW5kaWNhdG9yUmVuZGVyZWQmJih0aGlzLm5vd0luZGljYXRvclRpbWVvdXRJRCYmKGNsZWFyVGltZW91dCh0aGlzLm5vd0luZGljYXRvclRpbWVvdXRJRCksdGhpcy5ub3dJbmRpY2F0b3JUaW1lb3V0SUQ9bnVsbCksdGhpcy5ub3dJbmRpY2F0b3JJbnRlcnZhbElEJiYoY2xlYXJUaW1lb3V0KHRoaXMubm93SW5kaWNhdG9ySW50ZXJ2YWxJRCksdGhpcy5ub3dJbmRpY2F0b3JJbnRlcnZhbElEPW51bGwpLHRoaXMudW5yZW5kZXJOb3dJbmRpY2F0b3IoKSx0aGlzLmlzTm93SW5kaWNhdG9yUmVuZGVyZWQ9ITEpfSxnZXROb3dJbmRpY2F0b3JVbml0OmZ1bmN0aW9uKCl7fSxyZW5kZXJOb3dJbmRpY2F0b3I6ZnVuY3Rpb24odCl7fSx1bnJlbmRlck5vd0luZGljYXRvcjpmdW5jdGlvbigpe30sdXBkYXRlU2l6ZTpmdW5jdGlvbih0KXt0JiZ0aGlzLmNhcHR1cmVTY3JvbGwoKSx0aGlzLnVwZGF0ZUhlaWdodCh0KSx0aGlzLnVwZGF0ZVdpZHRoKHQpLHRoaXMudXBkYXRlTm93SW5kaWNhdG9yKCksdCYmdGhpcy5yZWxlYXNlU2Nyb2xsKCl9LHVwZGF0ZVdpZHRoOmZ1bmN0aW9uKHQpe30sdXBkYXRlSGVpZ2h0OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY2FsZW5kYXI7dGhpcy5zZXRIZWlnaHQoZS5nZXRTdWdnZXN0ZWRWaWV3SGVpZ2h0KCksZS5pc0hlaWdodEF1dG8oKSl9LHNldEhlaWdodDpmdW5jdGlvbih0LGUpe30sY2FwdHVyZWRTY3JvbGw6bnVsbCxjYXB0dXJlZFNjcm9sbERlcHRoOjAsY2FwdHVyZVNjcm9sbDpmdW5jdGlvbigpe3JldHVybiF0aGlzLmNhcHR1cmVkU2Nyb2xsRGVwdGgrKyYmKHRoaXMuY2FwdHVyZWRTY3JvbGw9dGhpcy5pc0RhdGVSZW5kZXJlZD90aGlzLnF1ZXJ5U2Nyb2xsKCk6e30sITApfSxjYXB0dXJlSW5pdGlhbFNjcm9sbDpmdW5jdGlvbihlKXt0aGlzLmNhcHR1cmVTY3JvbGwoKSYmKHRoaXMuY2FwdHVyZWRTY3JvbGwuaXNJbml0aWFsPSEwLGU/dC5leHRlbmQodGhpcy5jYXB0dXJlZFNjcm9sbCxlKTp0aGlzLmNhcHR1cmVkU2Nyb2xsLmlzQ29tcHV0ZWQ9ITApfSxyZWxlYXNlU2Nyb2xsOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jYXB0dXJlZFNjcm9sbCxuPXRoaXMuZGlzY2FyZFNjcm9sbCgpO2UuaXNDb21wdXRlZCYmKG4/dC5leHRlbmQoZSx0aGlzLmNvbXB1dGVJbml0aWFsU2Nyb2xsKCkpOmU9bnVsbCksZSYmKGUuaXNJbml0aWFsP3RoaXMuaGFyZFNldFNjcm9sbChlKTp0aGlzLnNldFNjcm9sbChlKSl9LGRpc2NhcmRTY3JvbGw6ZnVuY3Rpb24oKXtyZXR1cm4hLS10aGlzLmNhcHR1cmVkU2Nyb2xsRGVwdGgmJih0aGlzLmNhcHR1cmVkU2Nyb2xsPW51bGwsITApfSxjb21wdXRlSW5pdGlhbFNjcm9sbDpmdW5jdGlvbigpe3JldHVybnt9fSxxdWVyeVNjcm9sbDpmdW5jdGlvbigpe3JldHVybnt9fSxoYXJkU2V0U2Nyb2xsOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1mdW5jdGlvbigpe2Uuc2V0U2Nyb2xsKHQpfTtuKCksc2V0VGltZW91dChuLDApfSxzZXRTY3JvbGw6ZnVuY3Rpb24odCl7fSxmcmVlemVIZWlnaHQ6ZnVuY3Rpb24oKXt0aGlzLmNhbGVuZGFyLmZyZWV6ZUNvbnRlbnRIZWlnaHQoKX0sdGhhd0hlaWdodDpmdW5jdGlvbigpe3RoaXMuY2FsZW5kYXIudGhhd0NvbnRlbnRIZWlnaHQoKX0sYmluZEV2ZW50czpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5pc0V2ZW50c0JvdW5kfHwodGhpcy5pc0V2ZW50c0JvdW5kPSEwLHRoaXMucmVqZWN0T24oImV2ZW50c1VuYmluZCIsdGhpcy5yZXF1ZXN0RXZlbnRzKCkpLnRoZW4oZnVuY3Rpb24oZSl7dC5saXN0ZW5Ubyh0LmNhbGVuZGFyLCJldmVudHNSZXNldCIsdC5zZXRFdmVudHMpLHQuc2V0RXZlbnRzKGUpfSkpfSx1bmJpbmRFdmVudHM6ZnVuY3Rpb24oKXt0aGlzLmlzRXZlbnRzQm91bmQmJih0aGlzLmlzRXZlbnRzQm91bmQ9ITEsdGhpcy5zdG9wTGlzdGVuaW5nVG8odGhpcy5jYWxlbmRhciwiZXZlbnRzUmVzZXQiKSx0aGlzLnVuc2V0RXZlbnRzKCksdGhpcy50cmlnZ2VyKCJldmVudHNVbmJpbmQiKSl9LHNldEV2ZW50czpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmlzRXZlbnRTZXQ7dGhpcy5pc0V2ZW50c1NldD0hMCx0aGlzLmhhbmRsZUV2ZW50cyh0LGUpLHRoaXMudHJpZ2dlcihlPyJldmVudHNSZXNldCI6ImV2ZW50c1NldCIsdCl9LHVuc2V0RXZlbnRzOmZ1bmN0aW9uKCl7dGhpcy5pc0V2ZW50c1NldCYmKHRoaXMuaXNFdmVudHNTZXQ9ITEsdGhpcy5oYW5kbGVFdmVudHNVbnNldCgpLHRoaXMudHJpZ2dlcigiZXZlbnRzVW5zZXQiKSl9LHdoZW5FdmVudHNTZXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLmlzRXZlbnRzU2V0P0R0LnJlc29sdmUodGhpcy5nZXRDdXJyZW50RXZlbnRzKCkpOm5ldyBEdChmdW5jdGlvbihlKXt0Lm9uZSgiZXZlbnRzU2V0IixlKX0pfSxoYW5kbGVFdmVudHM6ZnVuY3Rpb24odCxlKXt0aGlzLnJlcXVlc3RFdmVudHNSZW5kZXIodCl9LGhhbmRsZUV2ZW50c1Vuc2V0OmZ1bmN0aW9uKCl7dGhpcy5yZXF1ZXN0RXZlbnRzVW5yZW5kZXIoKX0scmVxdWVzdEV2ZW50c1JlbmRlcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiB0aGlzLmV2ZW50UmVuZGVyUXVldWUuYWRkKGZ1bmN0aW9uKCl7cmV0dXJuIGUuZXhlY3V0ZUV2ZW50c1JlbmRlcih0KX0pfSxyZXF1ZXN0RXZlbnRzVW5yZW5kZXI6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLmlzRXZlbnRzUmVuZGVyZWQ/dGhpcy5ldmVudFJlbmRlclF1ZXVlLmFkZFF1aWNrbHkoZnVuY3Rpb24oKXtyZXR1cm4gdC5leGVjdXRlRXZlbnRzVW5yZW5kZXIoKX0pOkR0LnJlc29sdmUoKX0scmVxdWVzdEN1cnJlbnRFdmVudHNSZW5kZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0V2ZW50c1NldD92b2lkIHRoaXMucmVxdWVzdEV2ZW50c1JlbmRlcih0aGlzLmdldEN1cnJlbnRFdmVudHMoKSk6RHQucmVqZWN0KCl9LGV4ZWN1dGVFdmVudHNSZW5kZXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gdGhpcy5jYXB0dXJlU2Nyb2xsKCksdGhpcy5mcmVlemVIZWlnaHQoKSx0aGlzLmV4ZWN1dGVFdmVudHNVbnJlbmRlcigpLnRoZW4oZnVuY3Rpb24oKXtlLnJlbmRlckV2ZW50cyh0KSxlLnRoYXdIZWlnaHQoKSxlLnJlbGVhc2VTY3JvbGwoKSxlLmlzRXZlbnRzUmVuZGVyZWQ9ITAsZS5vbkV2ZW50c1JlbmRlcigpLGUudHJpZ2dlcigiZXZlbnRzUmVuZGVyIil9KX0sZXhlY3V0ZUV2ZW50c1VucmVuZGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNFdmVudHNSZW5kZXJlZCYmKHRoaXMub25CZWZvcmVFdmVudHNVbnJlbmRlcigpLHRoaXMuY2FwdHVyZVNjcm9sbCgpLHRoaXMuZnJlZXplSGVpZ2h0KCksdGhpcy5kZXN0cm95RXZlbnRzJiZ0aGlzLmRlc3Ryb3lFdmVudHMoKSx0aGlzLnVucmVuZGVyRXZlbnRzKCksdGhpcy50aGF3SGVpZ2h0KCksdGhpcy5yZWxlYXNlU2Nyb2xsKCksdGhpcy5pc0V2ZW50c1JlbmRlcmVkPSExLHRoaXMudHJpZ2dlcigiZXZlbnRzVW5yZW5kZXIiKSksRHQucmVzb2x2ZSgpfSxvbkV2ZW50c1JlbmRlcjpmdW5jdGlvbigpe3RoaXMucmVuZGVyZWRFdmVudFNlZ0VhY2goZnVuY3Rpb24odCl7dGhpcy5wdWJsaWNseVRyaWdnZXIoImV2ZW50QWZ0ZXJSZW5kZXIiLHQuZXZlbnQsdC5ldmVudCx0LmVsKX0pLHRoaXMucHVibGljbHlUcmlnZ2VyKCJldmVudEFmdGVyQWxsUmVuZGVyIil9LG9uQmVmb3JlRXZlbnRzVW5yZW5kZXI6ZnVuY3Rpb24oKXt0aGlzLnJlbmRlcmVkRXZlbnRTZWdFYWNoKGZ1bmN0aW9uKHQpe3RoaXMucHVibGljbHlUcmlnZ2VyKCJldmVudERlc3Ryb3kiLHQuZXZlbnQsdC5ldmVudCx0LmVsKX0pfSxyZW5kZXJFdmVudHM6ZnVuY3Rpb24odCl7fSx1bnJlbmRlckV2ZW50czpmdW5jdGlvbigpe30scmVxdWVzdEV2ZW50czpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNhbGVuZGFyLnJlcXVlc3RFdmVudHModGhpcy5hY3RpdmVSYW5nZS5zdGFydCx0aGlzLmFjdGl2ZVJhbmdlLmVuZCl9LGdldEN1cnJlbnRFdmVudHM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jYWxlbmRhci5nZXRQcnVuZWRFdmVudENhY2hlKCl9LHJlc29sdmVFdmVudEVsOmZ1bmN0aW9uKGUsbil7dmFyIGk9dGhpcy5wdWJsaWNseVRyaWdnZXIoImV2ZW50UmVuZGVyIixlLGUsbik7cmV0dXJuIGk9PT0hMT9uPW51bGw6aSYmaSE9PSEwJiYobj10KGkpKSxufSxzaG93RXZlbnQ6ZnVuY3Rpb24odCl7dGhpcy5yZW5kZXJlZEV2ZW50U2VnRWFjaChmdW5jdGlvbih0KXt0LmVsLmNzcygidmlzaWJpbGl0eSIsIiIpfSx0KX0saGlkZUV2ZW50OmZ1bmN0aW9uKHQpe3RoaXMucmVuZGVyZWRFdmVudFNlZ0VhY2goZnVuY3Rpb24odCl7dC5lbC5jc3MoInZpc2liaWxpdHkiLCJoaWRkZW4iKX0sdCl9LHJlbmRlcmVkRXZlbnRTZWdFYWNoOmZ1bmN0aW9uKHQsZSl7dmFyIG4saT10aGlzLmdldEV2ZW50U2VncygpO2ZvcihuPTA7bjxpLmxlbmd0aDtuKyspZSYmaVtuXS5ldmVudC5faWQhPT1lLl9pZHx8aVtuXS5lbCYmdC5jYWxsKHRoaXMsaVtuXSl9LGdldEV2ZW50U2VnczpmdW5jdGlvbigpe3JldHVybltdfSxpc0V2ZW50RHJhZ2dhYmxlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmlzRXZlbnRTdGFydEVkaXRhYmxlKHQpfSxpc0V2ZW50U3RhcnRFZGl0YWJsZTpmdW5jdGlvbih0KXtyZXR1cm4gdXQodC5zdGFydEVkaXRhYmxlLCh0LnNvdXJjZXx8e30pLnN0YXJ0RWRpdGFibGUsdGhpcy5vcHQoImV2ZW50U3RhcnRFZGl0YWJsZSIpLHRoaXMuaXNFdmVudEdlbmVyYWxseUVkaXRhYmxlKHQpKX0saXNFdmVudEdlbmVyYWxseUVkaXRhYmxlOmZ1bmN0aW9uKHQpe3JldHVybiB1dCh0LmVkaXRhYmxlLCh0LnNvdXJjZXx8e30pLmVkaXRhYmxlLHRoaXMub3B0KCJlZGl0YWJsZSIpKX0scmVwb3J0U2VnRHJvcDpmdW5jdGlvbih0LGUsbixpLHIpe3ZhciBzPXRoaXMuY2FsZW5kYXIsbz1zLm11dGF0ZVNlZyh0LGUsbiksbD1mdW5jdGlvbigpe28udW5kbygpLHMucmVwb3J0RXZlbnRDaGFuZ2UoKX07dGhpcy50cmlnZ2VyRXZlbnREcm9wKHQuZXZlbnQsby5kYXRlRGVsdGEsbCxpLHIpLHMucmVwb3J0RXZlbnRDaGFuZ2UoKX0sdHJpZ2dlckV2ZW50RHJvcDpmdW5jdGlvbih0LGUsbixpLHIpe3RoaXMucHVibGljbHlUcmlnZ2VyKCJldmVudERyb3AiLGlbMF0sdCxlLG4scix7fSl9LHJlcG9ydEV4dGVybmFsRHJvcDpmdW5jdGlvbihlLG4saSxyLHMpe3ZhciBvLGwsYT1lLmV2ZW50UHJvcHM7YSYmKG89dC5leHRlbmQoe30sYSxuKSxsPXRoaXMuY2FsZW5kYXIucmVuZGVyRXZlbnQobyxlLnN0aWNrKVswXSksdGhpcy50cmlnZ2VyRXh0ZXJuYWxEcm9wKGwsbixpLHIscyl9LHRyaWdnZXJFeHRlcm5hbERyb3A6ZnVuY3Rpb24odCxlLG4saSxyKXt0aGlzLnB1YmxpY2x5VHJpZ2dlcigiZHJvcCIsblswXSxlLnN0YXJ0LGksciksdCYmdGhpcy5wdWJsaWNseVRyaWdnZXIoImV2ZW50UmVjZWl2ZSIsbnVsbCx0KX0scmVuZGVyRHJhZzpmdW5jdGlvbih0LGUpe30sdW5yZW5kZXJEcmFnOmZ1bmN0aW9uKCl7fSxpc0V2ZW50UmVzaXphYmxlRnJvbVN0YXJ0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdCgiZXZlbnRSZXNpemFibGVGcm9tU3RhcnQiKSYmdGhpcy5pc0V2ZW50UmVzaXphYmxlKHQpfSxpc0V2ZW50UmVzaXphYmxlRnJvbUVuZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pc0V2ZW50UmVzaXphYmxlKHQpfSxpc0V2ZW50UmVzaXphYmxlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuc291cmNlfHx7fTtyZXR1cm4gdXQodC5kdXJhdGlvbkVkaXRhYmxlLGUuZHVyYXRpb25FZGl0YWJsZSx0aGlzLm9wdCgiZXZlbnREdXJhdGlvbkVkaXRhYmxlIiksdC5lZGl0YWJsZSxlLmVkaXRhYmxlLHRoaXMub3B0KCJlZGl0YWJsZSIpKX0scmVwb3J0U2VnUmVzaXplOmZ1bmN0aW9uKHQsZSxuLGkscil7dmFyIHM9dGhpcy5jYWxlbmRhcixvPXMubXV0YXRlU2VnKHQsZSxuKSxsPWZ1bmN0aW9uKCl7by51bmRvKCkscy5yZXBvcnRFdmVudENoYW5nZSgpfTt0aGlzLnRyaWdnZXJFdmVudFJlc2l6ZSh0LmV2ZW50LG8uZHVyYXRpb25EZWx0YSxsLGkscikscy5yZXBvcnRFdmVudENoYW5nZSgpfSx0cmlnZ2VyRXZlbnRSZXNpemU6ZnVuY3Rpb24odCxlLG4saSxyKXt0aGlzLnB1YmxpY2x5VHJpZ2dlcigiZXZlbnRSZXNpemUiLGlbMF0sdCxlLG4scix7fSl9LHNlbGVjdDpmdW5jdGlvbih0LGUpe3RoaXMudW5zZWxlY3QoZSksdGhpcy5yZW5kZXJTZWxlY3Rpb24odCksdGhpcy5yZXBvcnRTZWxlY3Rpb24odCxlKX0scmVuZGVyU2VsZWN0aW9uOmZ1bmN0aW9uKHQpe30scmVwb3J0U2VsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7dGhpcy5pc1NlbGVjdGVkPSEwLHRoaXMudHJpZ2dlclNlbGVjdCh0LGUpfSx0cmlnZ2VyU2VsZWN0OmZ1bmN0aW9uKHQsZSl7dGhpcy5wdWJsaWNseVRyaWdnZXIoInNlbGVjdCIsbnVsbCx0aGlzLmNhbGVuZGFyLmFwcGx5VGltZXpvbmUodC5zdGFydCksdGhpcy5jYWxlbmRhci5hcHBseVRpbWV6b25lKHQuZW5kKSxlKX0sdW5zZWxlY3Q6ZnVuY3Rpb24odCl7dGhpcy5pc1NlbGVjdGVkJiYodGhpcy5pc1NlbGVjdGVkPSExLHRoaXMuZGVzdHJveVNlbGVjdGlvbiYmdGhpcy5kZXN0cm95U2VsZWN0aW9uKCksdGhpcy51bnJlbmRlclNlbGVjdGlvbigpLHRoaXMucHVibGljbHlUcmlnZ2VyKCJ1bnNlbGVjdCIsbnVsbCx0KSl9LHVucmVuZGVyU2VsZWN0aW9uOmZ1bmN0aW9uKCl7fSxzZWxlY3RFdmVudDpmdW5jdGlvbih0KXt0aGlzLnNlbGVjdGVkRXZlbnQmJnRoaXMuc2VsZWN0ZWRFdmVudD09PXR8fCh0aGlzLnVuc2VsZWN0RXZlbnQoKSx0aGlzLnJlbmRlcmVkRXZlbnRTZWdFYWNoKGZ1bmN0aW9uKHQpe3QuZWwuYWRkQ2xhc3MoImZjLXNlbGVjdGVkIil9LHQpLHRoaXMuc2VsZWN0ZWRFdmVudD10KX0sdW5zZWxlY3RFdmVudDpmdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWRFdmVudCYmKHRoaXMucmVuZGVyZWRFdmVudFNlZ0VhY2goZnVuY3Rpb24odCl7dC5lbC5yZW1vdmVDbGFzcygiZmMtc2VsZWN0ZWQiKX0sdGhpcy5zZWxlY3RlZEV2ZW50KSx0aGlzLnNlbGVjdGVkRXZlbnQ9bnVsbCl9LGlzRXZlbnRTZWxlY3RlZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zZWxlY3RlZEV2ZW50JiZ0aGlzLnNlbGVjdGVkRXZlbnQuX2lkPT09dC5faWR9LGhhbmRsZURvY3VtZW50TW91c2Vkb3duOmZ1bmN0aW9uKHQpe3codCkmJnRoaXMucHJvY2Vzc1Vuc2VsZWN0KHQpfSxwcm9jZXNzVW5zZWxlY3Q6ZnVuY3Rpb24odCl7dGhpcy5wcm9jZXNzUmFuZ2VVbnNlbGVjdCh0KSx0aGlzLnByb2Nlc3NFdmVudFVuc2VsZWN0KHQpfSxwcm9jZXNzUmFuZ2VVbnNlbGVjdDpmdW5jdGlvbihlKXt2YXIgbjt0aGlzLmlzU2VsZWN0ZWQmJnRoaXMub3B0KCJ1bnNlbGVjdEF1dG8iKSYmKG49dGhpcy5vcHQoInVuc2VsZWN0Q2FuY2VsIiksbiYmdChlLnRhcmdldCkuY2xvc2VzdChuKS5sZW5ndGh8fHRoaXMudW5zZWxlY3QoZSkpfSxwcm9jZXNzRXZlbnRVbnNlbGVjdDpmdW5jdGlvbihlKXt0aGlzLnNlbGVjdGVkRXZlbnQmJih0KGUudGFyZ2V0KS5jbG9zZXN0KCIuZmMtc2VsZWN0ZWQiKS5sZW5ndGh8fHRoaXMudW5zZWxlY3RFdmVudCgpKX0sdHJpZ2dlckRheUNsaWNrOmZ1bmN0aW9uKHQsZSxuKXt0aGlzLnB1YmxpY2x5VHJpZ2dlcigiZGF5Q2xpY2siLGUsdGhpcy5jYWxlbmRhci5hcHBseVRpbWV6b25lKHQuc3RhcnQpLG4pfSxjb21wdXRlRGF5UmFuZ2U6ZnVuY3Rpb24odCl7dmFyIGUsbj10LnN0YXJ0LmNsb25lKCkuc3RyaXBUaW1lKCksaT10LmVuZCxyPW51bGw7cmV0dXJuIGkmJihyPWkuY2xvbmUoKS5zdHJpcFRpbWUoKSxlPStpLnRpbWUoKSxlJiZlPj10aGlzLm5leHREYXlUaHJlc2hvbGQmJnIuYWRkKDEsImRheXMiKSksKCFpfHxyPD1uKSYmKHI9bi5jbG9uZSgpLmFkZCgxLCJkYXlzIikpLHtzdGFydDpuLGVuZDpyfX0saXNNdWx0aURheUV2ZW50OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY29tcHV0ZURheVJhbmdlKHQpO3JldHVybiBlLmVuZC5kaWZmKGUuc3RhcnQsImRheXMiKT4xfX0pO2JlLm1peGluKHtjdXJyZW50UmFuZ2U6bnVsbCxjdXJyZW50UmFuZ2VVbml0Om51bGwscmVuZGVyUmFuZ2U6bnVsbCxhY3RpdmVSYW5nZTpudWxsLHZhbGlkUmFuZ2U6bnVsbCxkYXRlSW5jcmVtZW50Om51bGwsY3VycmVudERhdGU6bnVsbCxtaW5UaW1lOm51bGwsbWF4VGltZTpudWxsLHVzZXNNaW5NYXhUaW1lOiExLHN0YXJ0Om51bGwsZW5kOm51bGwsaW50ZXJ2YWxTdGFydDpudWxsLGludGVydmFsRW5kOm51bGwsaXNTYW1lRGF0ZVByb2ZpbGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYWN0aXZlUmFuZ2UmJlgodGhpcy5hY3RpdmVSYW5nZSx0LmFjdGl2ZVJhbmdlKX0sc2V0RGF0ZVByb2ZpbGU6ZnVuY3Rpb24odCl7dGhpcy5jdXJyZW50UmFuZ2U9dC5jdXJyZW50UmFuZ2UsdGhpcy5jdXJyZW50UmFuZ2VVbml0PXQuY3VycmVudFJhbmdlVW5pdCx0aGlzLnJlbmRlclJhbmdlPXQucmVuZGVyUmFuZ2UsdGhpcy5hY3RpdmVSYW5nZT10LmFjdGl2ZVJhbmdlLHRoaXMudmFsaWRSYW5nZT10LnZhbGlkUmFuZ2UsdGhpcy5kYXRlSW5jcmVtZW50PXQuZGF0ZUluY3JlbWVudCx0aGlzLmN1cnJlbnREYXRlPXQuZGF0ZSx0aGlzLm1pblRpbWU9dC5taW5UaW1lLHRoaXMubWF4VGltZT10Lm1heFRpbWUsdGhpcy5zdGFydD10LmFjdGl2ZVJhbmdlLnN0YXJ0LHRoaXMuZW5kPXQuYWN0aXZlUmFuZ2UuZW5kLHRoaXMuaW50ZXJ2YWxTdGFydD10LmN1cnJlbnRSYW5nZS5zdGFydCx0aGlzLmludGVydmFsRW5kPXQuY3VycmVudFJhbmdlLmVuZH0sYnVpbGRQcmV2RGF0ZVByb2ZpbGU6ZnVuY3Rpb24odCl7dmFyIGU9dC5jbG9uZSgpLnN0YXJ0T2YodGhpcy5jdXJyZW50UmFuZ2VVbml0KS5zdWJ0cmFjdCh0aGlzLmRhdGVJbmNyZW1lbnQpO3JldHVybiB0aGlzLmJ1aWxkRGF0ZVByb2ZpbGUoZSwtMSl9LGJ1aWxkTmV4dERhdGVQcm9maWxlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuY2xvbmUoKS5zdGFydE9mKHRoaXMuY3VycmVudFJhbmdlVW5pdCkuYWRkKHRoaXMuZGF0ZUluY3JlbWVudCk7cmV0dXJuIHRoaXMuYnVpbGREYXRlUHJvZmlsZShlLDEpfSxidWlsZERhdGVQcm9maWxlOmZ1bmN0aW9uKHQsbixpKXt2YXIgcixzLG8sbCxhPXRoaXMuYnVpbGRWYWxpZFJhbmdlKCksdT1udWxsLGM9bnVsbDtyZXR1cm4gaSYmKHQ9cSh0LGEpKSxyPXRoaXMuYnVpbGRDdXJyZW50UmFuZ2VJbmZvKHQsbikscz10aGlzLmJ1aWxkUmVuZGVyUmFuZ2Uoci5yYW5nZSxyLnVuaXQpLG89VShzKSx0aGlzLm9wdCgic2hvd05vbkN1cnJlbnREYXRlcyIpfHwobz1qKG8sci5yYW5nZSkpLHU9ZS5kdXJhdGlvbih0aGlzLm9wdCgibWluVGltZSIpKSxjPWUuZHVyYXRpb24odGhpcy5vcHQoIm1heFRpbWUiKSksdGhpcy5hZGp1c3RBY3RpdmVSYW5nZShvLHUsYyksbz1qKG8sYSksdD1xKHQsbyksbD0kKHIucmFuZ2UsYSkse3ZhbGlkUmFuZ2U6YSxjdXJyZW50UmFuZ2U6ci5yYW5nZSxjdXJyZW50UmFuZ2VVbml0OnIudW5pdCxhY3RpdmVSYW5nZTpvLHJlbmRlclJhbmdlOnMsbWluVGltZTp1LG1heFRpbWU6Yyxpc1ZhbGlkOmwsZGF0ZTp0LGRhdGVJbmNyZW1lbnQ6dGhpcy5idWlsZERhdGVJbmNyZW1lbnQoci5kdXJhdGlvbil9fSxidWlsZFZhbGlkUmFuZ2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRSYW5nZU9wdGlvbigidmFsaWRSYW5nZSIsdGhpcy5jYWxlbmRhci5nZXROb3coKSl8fHt9fSxidWlsZEN1cnJlbnRSYW5nZUluZm86ZnVuY3Rpb24odCxlKXt2YXIgbixpPW51bGwscj1udWxsLHM9bnVsbDtyZXR1cm4gdGhpcy52aWV3U3BlYy5kdXJhdGlvbj8oaT10aGlzLnZpZXdTcGVjLmR1cmF0aW9uLHI9dGhpcy52aWV3U3BlYy5kdXJhdGlvblVuaXQscz10aGlzLmJ1aWxkUmFuZ2VGcm9tRHVyYXRpb24odCxlLGkscikpOihuPXRoaXMub3B0KCJkYXlDb3VudCIpKT8ocj0iZGF5IixzPXRoaXMuYnVpbGRSYW5nZUZyb21EYXlDb3VudCh0LGUsbikpOihzPXRoaXMuYnVpbGRDdXN0b21WaXNpYmxlUmFuZ2UodCkpP3I9TyhzLnN0YXJ0LHMuZW5kKTooaT10aGlzLmdldEZhbGxiYWNrRHVyYXRpb24oKSxyPU8oaSkscz10aGlzLmJ1aWxkUmFuZ2VGcm9tRHVyYXRpb24odCxlLGkscikpLHRoaXMubm9ybWFsaXplQ3VycmVudFJhbmdlKHMscikse2R1cmF0aW9uOmksdW5pdDpyLHJhbmdlOnN9fSxnZXRGYWxsYmFja0R1cmF0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIGUuZHVyYXRpb24oe2RheXM6MX0pfSxub3JtYWxpemVDdXJyZW50UmFuZ2U6ZnVuY3Rpb24odCxlKXsvXih5ZWFyfG1vbnRofHdlZWt8ZGF5KSQvLnRlc3QoZSk/KHQuc3RhcnQuc3RyaXBUaW1lKCksdC5lbmQuc3RyaXBUaW1lKCkpOih0LnN0YXJ0Lmhhc1RpbWUoKXx8dC5zdGFydC50aW1lKDApLHQuZW5kLmhhc1RpbWUoKXx8dC5lbmQudGltZSgwKSl9LGFkanVzdEFjdGl2ZVJhbmdlOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaT0hMTt0aGlzLnVzZXNNaW5NYXhUaW1lJiYoZTwwJiYodC5zdGFydC50aW1lKDApLmFkZChlKSxpPSEwKSxuPjg2NGU1JiYodC5lbmQudGltZShuLTg2NGU1KSxpPSEwKSxpJiYodC5zdGFydC5oYXNUaW1lKCl8fHQuc3RhcnQudGltZSgwKSx0LmVuZC5oYXNUaW1lKCl8fHQuZW5kLnRpbWUoMCkpKX0sYnVpbGRSYW5nZUZyb21EdXJhdGlvbjpmdW5jdGlvbih0LG4saSxyKXt2YXIgcyxvLGwsYT10aGlzLm9wdCgiZGF0ZUFsaWdubWVudCIpLHU9dC5jbG9uZSgpO3JldHVybiBpLmFzKCJkYXlzIik8PTEmJnRoaXMuaXNIaWRkZW5EYXkodSkmJih1PXRoaXMuc2tpcEhpZGRlbkRheXModSxuKSx1LnN0YXJ0T2YoImRheSIpKSxhfHwobz10aGlzLm9wdCgiZGF0ZUluY3JlbWVudCIpLG8/KGw9ZS5kdXJhdGlvbihvKSxhPWw8aT9WKGwsbyk6cik6YT1yKSx1LnN0YXJ0T2YoYSkscz11LmNsb25lKCkuYWRkKGkpLHtzdGFydDp1LGVuZDpzfX0sYnVpbGRSYW5nZUZyb21EYXlDb3VudDpmdW5jdGlvbih0LGUsbil7dmFyIGkscj10aGlzLm9wdCgiZGF0ZUFsaWdubWVudCIpLHM9MCxvPXQuY2xvbmUoKTtyJiZvLnN0YXJ0T2Yociksby5zdGFydE9mKCJkYXkiKSxvPXRoaXMuc2tpcEhpZGRlbkRheXMobyxlKSxpPW8uY2xvbmUoKTtkbyBpLmFkZCgxLCJkYXkiKSx0aGlzLmlzSGlkZGVuRGF5KGkpfHxzKys7d2hpbGUoczxuKTtyZXR1cm57c3RhcnQ6byxlbmQ6aX19LGJ1aWxkQ3VzdG9tVmlzaWJsZVJhbmdlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0UmFuZ2VPcHRpb24oInZpc2libGVSYW5nZSIsdGhpcy5jYWxlbmRhci5tb21lbnQodCkpO3JldHVybiFlfHxlLnN0YXJ0JiZlLmVuZD9lOm51bGx9LGJ1aWxkUmVuZGVyUmFuZ2U6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy50cmltSGlkZGVuRGF5cyh0KX0sYnVpbGREYXRlSW5jcmVtZW50OmZ1bmN0aW9uKHQpe3ZhciBuLGk9dGhpcy5vcHQoImRhdGVJbmNyZW1lbnQiKTtyZXR1cm4gaT9lLmR1cmF0aW9uKGkpOihuPXRoaXMub3B0KCJkYXRlQWxpZ25tZW50IikpP2UuZHVyYXRpb24oMSxuKTp0P3Q6ZS5kdXJhdGlvbih7ZGF5czoxfSl9LHRyaW1IaWRkZW5EYXlzOmZ1bmN0aW9uKHQpe3JldHVybntzdGFydDp0aGlzLnNraXBIaWRkZW5EYXlzKHQuc3RhcnQpLGVuZDp0aGlzLnNraXBIaWRkZW5EYXlzKHQuZW5kLC0xLCEwKX19LGN1cnJlbnRSYW5nZUFzOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY3VycmVudFJhbmdlO3JldHVybiBlLmVuZC5kaWZmKGUuc3RhcnQsdCwhMCl9LGdldFJhbmdlT3B0aW9uOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMub3B0KHQpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlJiYoZT1lLmFwcGx5KG51bGwsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKSksZSlyZXR1cm4gdGhpcy5jYWxlbmRhci5wYXJzZVJhbmdlKGUpfSxpbml0SGlkZGVuRGF5czpmdW5jdGlvbigpe3ZhciBlLG49dGhpcy5vcHQoImhpZGRlbkRheXMiKXx8W10saT1bXSxyPTA7Zm9yKHRoaXMub3B0KCJ3ZWVrZW5kcyIpPT09ITEmJm4ucHVzaCgwLDYpLGU9MDtlPDc7ZSsrKShpW2VdPXQuaW5BcnJheShlLG4pIT09LTEpfHxyKys7aWYoIXIpdGhyb3ciaW52YWxpZCBoaWRkZW5EYXlzIjt0aGlzLmlzSGlkZGVuRGF5SGFzaD1pfSxpc0hpZGRlbkRheTpmdW5jdGlvbih0KXtyZXR1cm4gZS5pc01vbWVudCh0KSYmKHQ9dC5kYXkoKSksdGhpcy5pc0hpZGRlbkRheUhhc2hbdF19LHNraXBIaWRkZW5EYXlzOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10LmNsb25lKCk7Zm9yKGU9ZXx8MTt0aGlzLmlzSGlkZGVuRGF5SGFzaFsoaS5kYXkoKSsobj9lOjApKzcpJTddOylpLmFkZChlLCJkYXlzIik7cmV0dXJuIGl9fSk7dmFyIEVlPVp0LlNjcm9sbGVyPXd0LmV4dGVuZCh7ZWw6bnVsbCxzY3JvbGxFbDpudWxsLG92ZXJmbG93WDpudWxsLG92ZXJmbG93WTpudWxsLGNvbnN0cnVjdG9yOmZ1bmN0aW9uKHQpe3Q9dHx8e30sdGhpcy5vdmVyZmxvd1g9dC5vdmVyZmxvd1h8fHQub3ZlcmZsb3d8fCJhdXRvIix0aGlzLm92ZXJmbG93WT10Lm92ZXJmbG93WXx8dC5vdmVyZmxvd3x8ImF1dG8ifSxyZW5kZXI6ZnVuY3Rpb24oKXt0aGlzLmVsPXRoaXMucmVuZGVyRWwoKSx0aGlzLmFwcGx5T3ZlcmZsb3coKX0scmVuZGVyRWw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zY3JvbGxFbD10KCc8ZGl2IGNsYXNzPSJmYy1zY3JvbGxlciI+PC9kaXY+Jyl9LGNsZWFyOmZ1bmN0aW9uKCl7dGhpcy5zZXRIZWlnaHQoImF1dG8iKSx0aGlzLmFwcGx5T3ZlcmZsb3coKX0sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuZWwucmVtb3ZlKCl9LGFwcGx5T3ZlcmZsb3c6ZnVuY3Rpb24oKXt0aGlzLnNjcm9sbEVsLmNzcyh7Im92ZXJmbG93LXgiOnRoaXMub3ZlcmZsb3dYLCJvdmVyZmxvdy15Ijp0aGlzLm92ZXJmbG93WX0pfSxsb2NrT3ZlcmZsb3c6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5vdmVyZmxvd1gsbj10aGlzLm92ZXJmbG93WTt0PXR8fHRoaXMuZ2V0U2Nyb2xsYmFyV2lkdGhzKCksImF1dG8iPT09ZSYmKGU9dC50b3B8fHQuYm90dG9tfHx0aGlzLnNjcm9sbEVsWzBdLnNjcm9sbFdpZHRoLTE+dGhpcy5zY3JvbGxFbFswXS5jbGllbnRXaWR0aD8ic2Nyb2xsIjoiaGlkZGVuIiksImF1dG8iPT09biYmKG49dC5sZWZ0fHx0LnJpZ2h0fHx0aGlzLnNjcm9sbEVsWzBdLnNjcm9sbEhlaWdodC0xPnRoaXMuc2Nyb2xsRWxbMF0uY2xpZW50SGVpZ2h0PyJzY3JvbGwiOiJoaWRkZW4iKSx0aGlzLnNjcm9sbEVsLmNzcyh7Im92ZXJmbG93LXgiOmUsIm92ZXJmbG93LXkiOm59KX0sc2V0SGVpZ2h0OmZ1bmN0aW9uKHQpe3RoaXMuc2Nyb2xsRWwuaGVpZ2h0KHQpfSxnZXRTY3JvbGxUb3A6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zY3JvbGxFbC5zY3JvbGxUb3AoKX0sc2V0U2Nyb2xsVG9wOmZ1bmN0aW9uKHQpe3RoaXMuc2Nyb2xsRWwuc2Nyb2xsVG9wKHQpfSxnZXRDbGllbnRXaWR0aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNjcm9sbEVsWzBdLmNsaWVudFdpZHRofSxnZXRDbGllbnRIZWlnaHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zY3JvbGxFbFswXS5jbGllbnRIZWlnaHR9LGdldFNjcm9sbGJhcldpZHRoczpmdW5jdGlvbigpe3JldHVybiBwKHRoaXMuc2Nyb2xsRWwpfX0pO1B0LnByb3RvdHlwZS5wcm94eUNhbGw9ZnVuY3Rpb24odCl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpLG49W107cmV0dXJuIHRoaXMuaXRlbXMuZm9yRWFjaChmdW5jdGlvbihpKXtuLnB1c2goaVt0XS5hcHBseShpLGUpKX0pLG59O3ZhciBEZT1adC5DYWxlbmRhcj13dC5leHRlbmQoe2RpckRlZmF1bHRzOm51bGwsbG9jYWxlRGVmYXVsdHM6bnVsbCxvdmVycmlkZXM6bnVsbCxkeW5hbWljT3ZlcnJpZGVzOm51bGwsb3B0aW9uczpudWxsLHZpZXdTcGVjQ2FjaGU6bnVsbCx2aWV3Om51bGwsY3VycmVudERhdGU6bnVsbCxoZWFkZXI6bnVsbCxmb290ZXI6bnVsbCxsb2FkaW5nTGV2ZWw6MCxjb25zdHJ1Y3RvcjpZdCxpbml0aWFsaXplOmZ1bmN0aW9uKCl7fSxwb3B1bGF0ZU9wdGlvbnNIYXNoOmZ1bmN0aW9uKCl7dmFyIHQsZSxpLHI7dD11dCh0aGlzLmR5bmFtaWNPdmVycmlkZXMubG9jYWxlLHRoaXMub3ZlcnJpZGVzLmxvY2FsZSksZT1UZVt0XSxlfHwodD1EZS5kZWZhdWx0cy5sb2NhbGUsZT1UZVt0XXx8e30pLGk9dXQodGhpcy5keW5hbWljT3ZlcnJpZGVzLmlzUlRMLHRoaXMub3ZlcnJpZGVzLmlzUlRMLGUuaXNSVEwsRGUuZGVmYXVsdHMuaXNSVEwpLHI9aT9EZS5ydGxEZWZhdWx0czp7fSx0aGlzLmRpckRlZmF1bHRzPXIsdGhpcy5sb2NhbGVEZWZhdWx0cz1lLHRoaXMub3B0aW9ucz1uKFtEZS5kZWZhdWx0cyxyLGUsdGhpcy5vdmVycmlkZXMsdGhpcy5keW5hbWljT3ZlcnJpZGVzXSksV3QodGhpcy5vcHRpb25zKX0sZ2V0Vmlld1NwZWM6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy52aWV3U3BlY0NhY2hlO3JldHVybiBlW3RdfHwoZVt0XT10aGlzLmJ1aWxkVmlld1NwZWModCkpfSxnZXRVbml0Vmlld1NwZWM6ZnVuY3Rpb24oZSl7dmFyIG4saSxyO2lmKHQuaW5BcnJheShlLEp0KSE9LTEpZm9yKG49dGhpcy5oZWFkZXIuZ2V0Vmlld3NXaXRoQnV0dG9ucygpLHQuZWFjaChadC52aWV3cyxmdW5jdGlvbih0KXtuLnB1c2godCl9KSxpPTA7aTxuLmxlbmd0aDtpKyspaWYocj10aGlzLmdldFZpZXdTcGVjKG5baV0pLHImJnIuc2luZ2xlVW5pdD09ZSlyZXR1cm4gcn0sYnVpbGRWaWV3U3BlYzpmdW5jdGlvbih0KXtmb3IodmFyIGkscixzLG8sbCxhPXRoaXMub3ZlcnJpZGVzLnZpZXdzfHx7fSx1PVtdLGM9W10sZD1bXSxoPXQ7aDspaT0kdFtoXSxyPWFbaF0saD1udWxsLCJmdW5jdGlvbiI9PXR5cGVvZiBpJiYoaT17Y2xhc3M6aX0pLGkmJih1LnVuc2hpZnQoaSksYy51bnNoaWZ0KGkuZGVmYXVsdHN8fHt9KSxzPXN8fGkuZHVyYXRpb24saD1ofHxpLnR5cGUpLHImJihkLnVuc2hpZnQocikscz1zfHxyLmR1cmF0aW9uLGg9aHx8ci50eXBlKTtyZXR1cm4gaT1pdCh1KSxpLnR5cGU9dCwhIWkuY2xhc3MmJihzPXN8fHRoaXMuZHluYW1pY092ZXJyaWRlcy5kdXJhdGlvbnx8dGhpcy5vdmVycmlkZXMuZHVyYXRpb24scyYmKG89ZS5kdXJhdGlvbihzKSxvLnZhbHVlT2YoKSYmKGw9VihvLHMpLGkuZHVyYXRpb249byxpLmR1cmF0aW9uVW5pdD1sLDE9PT1vLmFzKGwpJiYoaS5zaW5nbGVVbml0PWwsZC51bnNoaWZ0KGFbbF18fHt9KSkpKSxpLmRlZmF1bHRzPW4oYyksaS5vdmVycmlkZXM9bihkKSx0aGlzLmJ1aWxkVmlld1NwZWNPcHRpb25zKGkpLHRoaXMuYnVpbGRWaWV3U3BlY0J1dHRvblRleHQoaSx0KSxpKX0sYnVpbGRWaWV3U3BlY09wdGlvbnM6ZnVuY3Rpb24odCl7dC5vcHRpb25zPW4oW0RlLmRlZmF1bHRzLHQuZGVmYXVsdHMsdGhpcy5kaXJEZWZhdWx0cyx0aGlzLmxvY2FsZURlZmF1bHRzLHRoaXMub3ZlcnJpZGVzLHQub3ZlcnJpZGVzLHRoaXMuZHluYW1pY092ZXJyaWRlc10pLFd0KHQub3B0aW9ucyl9LGJ1aWxkVmlld1NwZWNCdXR0b25UZXh0OmZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbihuKXt2YXIgaT1uLmJ1dHRvblRleHR8fHt9O3JldHVybiBpW2VdfHwodC5idXR0b25UZXh0S2V5P2lbdC5idXR0b25UZXh0S2V5XTpudWxsKXx8KHQuc2luZ2xlVW5pdD9pW3Quc2luZ2xlVW5pdF06bnVsbCl9dC5idXR0b25UZXh0T3ZlcnJpZGU9bih0aGlzLmR5bmFtaWNPdmVycmlkZXMpfHxuKHRoaXMub3ZlcnJpZGVzKXx8dC5vdmVycmlkZXMuYnV0dG9uVGV4dCx0LmJ1dHRvblRleHREZWZhdWx0PW4odGhpcy5sb2NhbGVEZWZhdWx0cyl8fG4odGhpcy5kaXJEZWZhdWx0cyl8fHQuZGVmYXVsdHMuYnV0dG9uVGV4dHx8bihEZS5kZWZhdWx0cyl8fCh0LmR1cmF0aW9uP3RoaXMuaHVtYW5pemVEdXJhdGlvbih0LmR1cmF0aW9uKTpudWxsKXx8ZX0saW5zdGFudGlhdGVWaWV3OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0Vmlld1NwZWModCk7cmV0dXJuIG5ldyBlLmNsYXNzKHRoaXMsZSl9LGlzVmFsaWRWaWV3VHlwZTpmdW5jdGlvbih0KXtyZXR1cm4gQm9vbGVhbih0aGlzLmdldFZpZXdTcGVjKHQpKX0scHVzaExvYWRpbmc6ZnVuY3Rpb24oKXt0aGlzLmxvYWRpbmdMZXZlbCsrfHx0aGlzLnB1YmxpY2x5VHJpZ2dlcigibG9hZGluZyIsbnVsbCwhMCx0aGlzLnZpZXcpfSxwb3BMb2FkaW5nOmZ1bmN0aW9uKCl7LS10aGlzLmxvYWRpbmdMZXZlbHx8dGhpcy5wdWJsaWNseVRyaWdnZXIoImxvYWRpbmciLG51bGwsITEsdGhpcy52aWV3KX0sYnVpbGRTZWxlY3RTcGFuOmZ1bmN0aW9uKHQsZSl7dmFyIG4saT10aGlzLm1vbWVudCh0KS5zdHJpcFpvbmUoKTtyZXR1cm4gbj1lP3RoaXMubW9tZW50KGUpLnN0cmlwWm9uZSgpOmkuaGFzVGltZSgpP2kuY2xvbmUoKS5hZGQodGhpcy5kZWZhdWx0VGltZWRFdmVudER1cmF0aW9uKTppLmNsb25lKCkuYWRkKHRoaXMuZGVmYXVsdEFsbERheUV2ZW50RHVyYXRpb24pLHtzdGFydDppLGVuZDpufX0saW5pdEN1cnJlbnREYXRlOmZ1bmN0aW9uKCl7bnVsbCE9dGhpcy5vcHRpb25zLmRlZmF1bHREYXRlP3RoaXMuY3VycmVudERhdGU9dGhpcy5tb21lbnQodGhpcy5vcHRpb25zLmRlZmF1bHREYXRlKS5zdHJpcFpvbmUoKTp0aGlzLmN1cnJlbnREYXRlPXRoaXMuZ2V0Tm93KCl9LGNoYW5nZVZpZXc6ZnVuY3Rpb24odCxlKXtlJiYoZS5zdGFydCYmZS5lbmQ/dGhpcy5yZWNvcmRPcHRpb25PdmVycmlkZXMoe3Zpc2libGVSYW5nZTplfSk6dGhpcy5jdXJyZW50RGF0ZT10aGlzLm1vbWVudChlKS5zdHJpcFpvbmUoKSksdGhpcy5yZW5kZXJWaWV3KHQpfSxwcmV2OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy52aWV3LmJ1aWxkUHJldkRhdGVQcm9maWxlKHRoaXMuY3VycmVudERhdGUpO3QuaXNWYWxpZCYmKHRoaXMuY3VycmVudERhdGU9dC5kYXRlLHRoaXMucmVuZGVyVmlldygpKX0sbmV4dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMudmlldy5idWlsZE5leHREYXRlUHJvZmlsZSh0aGlzLmN1cnJlbnREYXRlKTt0LmlzVmFsaWQmJih0aGlzLmN1cnJlbnREYXRlPXQuZGF0ZSx0aGlzLnJlbmRlclZpZXcoKSl9LHByZXZZZWFyOmZ1bmN0aW9uKCl7dGhpcy5jdXJyZW50RGF0ZS5hZGQoLTEsInllYXJzIiksdGhpcy5yZW5kZXJWaWV3KCl9LG5leHRZZWFyOmZ1bmN0aW9uKCl7dGhpcy5jdXJyZW50RGF0ZS5hZGQoMSwieWVhcnMiKSx0aGlzLnJlbmRlclZpZXcoKX0sdG9kYXk6ZnVuY3Rpb24oKXt0aGlzLmN1cnJlbnREYXRlPXRoaXMuZ2V0Tm93KCksdGhpcy5yZW5kZXJWaWV3KCl9LGdvdG9EYXRlOmZ1bmN0aW9uKHQpe3RoaXMuY3VycmVudERhdGU9dGhpcy5tb21lbnQodCkuc3RyaXBab25lKCksdGhpcy5yZW5kZXJWaWV3KCl9LGluY3JlbWVudERhdGU6ZnVuY3Rpb24odCl7dGhpcy5jdXJyZW50RGF0ZS5hZGQoZS5kdXJhdGlvbih0KSksdGhpcy5yZW5kZXJWaWV3KCl9LGdldERhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcHBseVRpbWV6b25lKHRoaXMuY3VycmVudERhdGUpfSxwYXJzZVJhbmdlOmZ1bmN0aW9uKHQpe3ZhciBlPW51bGwsbj1udWxsO3JldHVybiB0LnN0YXJ0JiYoZT10aGlzLm1vbWVudCh0LnN0YXJ0KS5zdHJpcFpvbmUoKSksdC5lbmQmJihuPXRoaXMubW9tZW50KHQuZW5kKS5zdHJpcFpvbmUoKSksZXx8bj9lJiZuJiZuLmlzQmVmb3JlKGUpP251bGw6e3N0YXJ0OmUsZW5kOm59Om51bGx9fSk7RGUubWl4aW4odWUpLERlLm1peGluKHtvcHRpb25IYW5kbGVyczpudWxsLGJpbmRPcHRpb246ZnVuY3Rpb24odCxlKXt0aGlzLmJpbmRPcHRpb25zKFt0XSxlKX0sYmluZE9wdGlvbnM6ZnVuY3Rpb24odCxlKXt2YXIgbixpPXtmdW5jOmUsbmFtZXM6dH07Zm9yKG49MDtuPHQubGVuZ3RoO24rKyl0aGlzLnJlZ2lzdGVyT3B0aW9uSGFuZGxlck9iaih0W25dLGkpO3RoaXMudHJpZ2dlck9wdGlvbkhhbmRsZXJPYmooaSl9LHJlZ2lzdGVyT3B0aW9uSGFuZGxlck9iajpmdW5jdGlvbih0LGUpeyh0aGlzLm9wdGlvbkhhbmRsZXJzW3RdfHwodGhpcy5vcHRpb25IYW5kbGVyc1t0XT1bXSkpLnB1c2goZSl9LHRyaWdnZXJPcHRpb25IYW5kbGVyczpmdW5jdGlvbih0KXt2YXIgZSxuPXRoaXMub3B0aW9uSGFuZGxlcnNbdF18fFtdO2ZvcihlPTA7ZTxuLmxlbmd0aDtlKyspdGhpcy50cmlnZ2VyT3B0aW9uSGFuZGxlck9iaihuW2VdKX0sdHJpZ2dlck9wdGlvbkhhbmRsZXJPYmo6ZnVuY3Rpb24odCl7dmFyIGUsbj10Lm5hbWVzLGk9W107Zm9yKGU9MDtlPG4ubGVuZ3RoO2UrKylpLnB1c2godGhpcy5vcHRpb25zW25bZV1dKTt0LmZ1bmMuYXBwbHkodGhpcyxpKX19KSxEZS5kZWZhdWx0cz17dGl0bGVSYW5nZVNlcGFyYXRvcjoiIOKAkyAiLG1vbnRoWWVhckZvcm1hdDoiTU1NTSBZWVlZIixkZWZhdWx0VGltZWRFdmVudER1cmF0aW9uOiIwMjowMDowMCIsZGVmYXVsdEFsbERheUV2ZW50RHVyYXRpb246e2RheXM6MX0sZm9yY2VFdmVudER1cmF0aW9uOiExLG5leHREYXlUaHJlc2hvbGQ6IjA5OjAwOjAwIixkZWZhdWx0VmlldzoibW9udGgiLGFzcGVjdFJhdGlvOjEuMzUsaGVhZGVyOntsZWZ0OiJ0aXRsZSIsY2VudGVyOiIiLHJpZ2h0OiJ0b2RheSBwcmV2LG5leHQifSx3ZWVrZW5kczohMCx3ZWVrTnVtYmVyczohMSx3ZWVrTnVtYmVyVGl0bGU6IlciLHdlZWtOdW1iZXJDYWxjdWxhdGlvbjoibG9jYWwiLHNjcm9sbFRpbWU6IjA2OjAwOjAwIixtaW5UaW1lOiIwMDowMDowMCIsbWF4VGltZToiMjQ6MDA6MDAiLHNob3dOb25DdXJyZW50RGF0ZXM6ITAsbGF6eUZldGNoaW5nOiEwLHN0YXJ0UGFyYW06InN0YXJ0IixlbmRQYXJhbToiZW5kIix0aW1lem9uZVBhcmFtOiJ0aW1lem9uZSIsdGltZXpvbmU6ITEsaXNSVEw6ITEsYnV0dG9uVGV4dDp7cHJldjoicHJldiIsbmV4dDoibmV4dCIscHJldlllYXI6InByZXYgeWVhciIsbmV4dFllYXI6Im5leHQgeWVhciIseWVhcjoieWVhciIsdG9kYXk6InRvZGF5Iixtb250aDoibW9udGgiLHdlZWs6IndlZWsiLGRheToiZGF5In0sYnV0dG9uSWNvbnM6e3ByZXY6ImxlZnQtc2luZ2xlLWFycm93IixuZXh0OiJyaWdodC1zaW5nbGUtYXJyb3ciLHByZXZZZWFyOiJsZWZ0LWRvdWJsZS1hcnJvdyIsbmV4dFllYXI6InJpZ2h0LWRvdWJsZS1hcnJvdyJ9LGFsbERheVRleHQ6ImFsbC1kYXkiLHRoZW1lOiExLHRoZW1lQnV0dG9uSWNvbnM6e3ByZXY6ImNpcmNsZS10cmlhbmdsZS13IixuZXh0OiJjaXJjbGUtdHJpYW5nbGUtZSIscHJldlllYXI6InNlZWstcHJldiIsbmV4dFllYXI6InNlZWstbmV4dCJ9LGRyYWdPcGFjaXR5Oi43NSxkcmFnUmV2ZXJ0RHVyYXRpb246NTAwLGRyYWdTY3JvbGw6ITAsdW5zZWxlY3RBdXRvOiEwLGRyb3BBY2NlcHQ6IioiLGV2ZW50T3JkZXI6InRpdGxlIixldmVudExpbWl0OiExLGV2ZW50TGltaXRUZXh0OiJtb3JlIixldmVudExpbWl0Q2xpY2s6InBvcG92ZXIiLGRheVBvcG92ZXJGb3JtYXQ6IkxMIixoYW5kbGVXaW5kb3dSZXNpemU6ITAsd2luZG93UmVzaXplRGVsYXk6MTAwLGxvbmdQcmVzc0RlbGF5OjFlM30sRGUuZW5nbGlzaERlZmF1bHRzPXtkYXlQb3BvdmVyRm9ybWF0OiJkZGRkLCBNTU1NIEQifSxEZS5ydGxEZWZhdWx0cz17aGVhZGVyOntsZWZ0OiJuZXh0LHByZXYgdG9kYXkiLGNlbnRlcjoiIixyaWdodDoidGl0bGUifSxidXR0b25JY29uczp7cHJldjoicmlnaHQtc2luZ2xlLWFycm93IixuZXh0OiJsZWZ0LXNpbmdsZS1hcnJvdyIscHJldlllYXI6InJpZ2h0LWRvdWJsZS1hcnJvdyIsbmV4dFllYXI6ImxlZnQtZG91YmxlLWFycm93In0sdGhlbWVCdXR0b25JY29uczp7cHJldjoiY2lyY2xlLXRyaWFuZ2xlLWUiLG5leHQ6ImNpcmNsZS10cmlhbmdsZS13IixuZXh0WWVhcjoic2Vlay1wcmV2IixwcmV2WWVhcjoic2Vlay1uZXh0In19O3ZhciBUZT1adC5sb2NhbGVzPXt9O1p0LmRhdGVwaWNrZXJMb2NhbGU9ZnVuY3Rpb24oZSxuLGkpe3ZhciByPVRlW2VdfHwoVGVbZV09e30pO3IuaXNSVEw9aS5pc1JUTCxyLndlZWtOdW1iZXJUaXRsZT1pLndlZWtIZWFkZXIsdC5lYWNoKENlLGZ1bmN0aW9uKHQsZSl7clt0XT1lKGkpfSksdC5kYXRlcGlja2VyJiYodC5kYXRlcGlja2VyLnJlZ2lvbmFsW25dPXQuZGF0ZXBpY2tlci5yZWdpb25hbFtlXT1pLHQuZGF0ZXBpY2tlci5yZWdpb25hbC5lbj10LmRhdGVwaWNrZXIucmVnaW9uYWxbIiJdLHQuZGF0ZXBpY2tlci5zZXREZWZhdWx0cyhpKSl9LFp0LmxvY2FsZT1mdW5jdGlvbihlLGkpe3ZhciByLHM7cj1UZVtlXXx8KFRlW2VdPXt9KSxpJiYocj1UZVtlXT1uKFtyLGldKSkscz1VdChlKSx0LmVhY2goSGUsZnVuY3Rpb24odCxlKXtudWxsPT1yW3RdJiYoclt0XT1lKHMscikpfSksRGUuZGVmYXVsdHMubG9jYWxlPWV9O3ZhciBDZT17YnV0dG9uVGV4dDpmdW5jdGlvbih0KXtyZXR1cm57cHJldjpkdCh0LnByZXZUZXh0KSxuZXh0OmR0KHQubmV4dFRleHQpLHRvZGF5OmR0KHQuY3VycmVudFRleHQpfX0sbW9udGhZZWFyRm9ybWF0OmZ1bmN0aW9uKHQpe3JldHVybiB0LnNob3dNb250aEFmdGVyWWVhcj8iWVlZWVsiK3QueWVhclN1ZmZpeCsiXSBNTU1NIjoiTU1NTSBZWVlZWyIrdC55ZWFyU3VmZml4KyJdIn19LEhlPXtkYXlPZk1vbnRoRm9ybWF0OmZ1bmN0aW9uKHQsZSl7dmFyIG49dC5sb25nRGF0ZUZvcm1hdCgibCIpO3JldHVybiBuPW4ucmVwbGFjZSgvXlkrW15cd1xzXSp8W15cd1xzXSpZKyQvZywiIiksZS5pc1JUTD9uKz0iIGRkZCI6bj0iZGRkICIrbixufSxtZWRpdW1UaW1lRm9ybWF0OmZ1bmN0aW9uKHQpe3JldHVybiB0LmxvbmdEYXRlRm9ybWF0KCJMVCIpLnJlcGxhY2UoL1xzKmEkL2ksImEiKX0sc21hbGxUaW1lRm9ybWF0OmZ1bmN0aW9uKHQpe3JldHVybiB0LmxvbmdEYXRlRm9ybWF0KCJMVCIpLnJlcGxhY2UoIjptbSIsIig6bW0pIikucmVwbGFjZSgvKFxXbW0pJC8sIigkMSkiKS5yZXBsYWNlKC9ccyphJC9pLCJhIil9LGV4dHJhU21hbGxUaW1lRm9ybWF0OmZ1bmN0aW9uKHQpe3JldHVybiB0LmxvbmdEYXRlRm9ybWF0KCJMVCIpLnJlcGxhY2UoIjptbSIsIig6bW0pIikucmVwbGFjZSgvKFxXbW0pJC8sIigkMSkiKS5yZXBsYWNlKC9ccyphJC9pLCJ0Iil9LGhvdXJGb3JtYXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQubG9uZ0RhdGVGb3JtYXQoIkxUIikucmVwbGFjZSgiOm1tIiwiIikucmVwbGFjZSgvKFxXbW0pJC8sIiIpLnJlcGxhY2UoL1xzKmEkL2ksImEiKX0sbm9NZXJpZGllbVRpbWVGb3JtYXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQubG9uZ0RhdGVGb3JtYXQoIkxUIikucmVwbGFjZSgvXHMqYSQvaSwiIil9fSxSZT17c21hbGxEYXlEYXRlRm9ybWF0OmZ1bmN0aW9uKHQpe3JldHVybiB0LmlzUlRMPyJEIGRkIjoiZGQgRCJ9LHdlZWtGb3JtYXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQuaXNSVEw/IndbICIrdC53ZWVrTnVtYmVyVGl0bGUrIl0iOiJbIit0LndlZWtOdW1iZXJUaXRsZSsiIF13In0sc21hbGxXZWVrRm9ybWF0OmZ1bmN0aW9uKHQpe3JldHVybiB0LmlzUlRMPyJ3WyIrdC53ZWVrTnVtYmVyVGl0bGUrIl0iOiJbIit0LndlZWtOdW1iZXJUaXRsZSsiXXcifX07WnQubG9jYWxlKCJlbiIsRGUuZW5nbGlzaERlZmF1bHRzKSxadC5zb3VyY2VOb3JtYWxpemVycz1bXSxadC5zb3VyY2VGZXRjaGVycz1bXTt2YXIgeGU9e2RhdGFUeXBlOiJqc29uIixjYWNoZTohMX0sSWU9MTtEZS5wcm90b3R5cGUubXV0YXRlU2VnPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMubXV0YXRlRXZlbnQodC5ldmVudCxlKX0sRGUucHJvdG90eXBlLm5vcm1hbGl6ZUV2ZW50PWZ1bmN0aW9uKHQpe30sRGUucHJvdG90eXBlLnNwYW5Db250YWluc1NwYW49ZnVuY3Rpb24odCxlKXt2YXIgbj10LnN0YXJ0LmNsb25lKCkuc3RyaXBab25lKCksaT10aGlzLmdldEV2ZW50RW5kKHQpLnN0cmlwWm9uZSgpO3JldHVybiBlLnN0YXJ0Pj1uJiZlLmVuZDw9aX0sRGUucHJvdG90eXBlLmdldFBlZXJFdmVudHM9ZnVuY3Rpb24odCxlKXt2YXIgbixpLHI9dGhpcy5nZXRFdmVudENhY2hlKCkscz1bXTtmb3Iobj0wO248ci5sZW5ndGg7bisrKWk9cltuXSxlJiZlLl9pZD09PWkuX2lkfHxzLnB1c2goaSk7cmV0dXJuIHN9LERlLnByb3RvdHlwZS5pc0V2ZW50U3BhbkFsbG93ZWQ9ZnVuY3Rpb24odCxlKXt2YXIgbj1lLnNvdXJjZXx8e30saT11dChlLmNvbnN0cmFpbnQsbi5jb25zdHJhaW50LHRoaXMub3B0aW9ucy5ldmVudENvbnN0cmFpbnQpLHI9dXQoZS5vdmVybGFwLG4ub3ZlcmxhcCx0aGlzLm9wdGlvbnMuZXZlbnRPdmVybGFwKTtyZXR1cm4gdGhpcy5pc1NwYW5BbGxvd2VkKHQsaSxyLGUpJiYoIXRoaXMub3B0aW9ucy5ldmVudEFsbG93fHx0aGlzLm9wdGlvbnMuZXZlbnRBbGxvdyh0LGUpIT09ITEpfSxEZS5wcm90b3R5cGUuaXNFeHRlcm5hbFNwYW5BbGxvd2VkPWZ1bmN0aW9uKGUsbixpKXt2YXIgcixzO3JldHVybiBpJiYocj10LmV4dGVuZCh7fSxpLG4pLHM9dGhpcy5leHBhbmRFdmVudCh0aGlzLmJ1aWxkRXZlbnRGcm9tSW5wdXQocikpWzBdKSxzP3RoaXMuaXNFdmVudFNwYW5BbGxvd2VkKGUscyk6dGhpcy5pc1NlbGVjdGlvblNwYW5BbGxvd2VkKGUpfSxEZS5wcm90b3R5cGUuaXNTZWxlY3Rpb25TcGFuQWxsb3dlZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pc1NwYW5BbGxvd2VkKHQsdGhpcy5vcHRpb25zLnNlbGVjdENvbnN0cmFpbnQsdGhpcy5vcHRpb25zLnNlbGVjdE92ZXJsYXApJiYoIXRoaXMub3B0aW9ucy5zZWxlY3RBbGxvd3x8dGhpcy5vcHRpb25zLnNlbGVjdEFsbG93KHQpIT09ITEpfSxEZS5wcm90b3R5cGUuaXNTcGFuQWxsb3dlZD1mdW5jdGlvbih0LGUsbixpKXt2YXIgcixzLG8sbCxhLHU7aWYobnVsbCE9ZSYmKHI9dGhpcy5jb25zdHJhaW50VG9FdmVudHMoZSkpKXtmb3Iocz0hMSxsPTA7bDxyLmxlbmd0aDtsKyspaWYodGhpcy5zcGFuQ29udGFpbnNTcGFuKHJbbF0sdCkpe3M9ITA7YnJlYWt9aWYoIXMpcmV0dXJuITF9Zm9yKG89dGhpcy5nZXRQZWVyRXZlbnRzKHQsaSksbD0wO2w8by5sZW5ndGg7bCsrKWlmKGE9b1tsXSx0aGlzLmV2ZW50SW50ZXJzZWN0c1JhbmdlKGEsdCkpe2lmKG49PT0hMSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgbiYmIW4oYSxpKSlyZXR1cm4hMTtpZihpKXtpZih1PXV0KGEub3ZlcmxhcCwoYS5zb3VyY2V8fHt9KS5vdmVybGFwKSx1PT09ITEpcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHUmJiF1KGksYSkpcmV0dXJuITF9fXJldHVybiEwfSxEZS5wcm90b3R5cGUuY29uc3RyYWludFRvRXZlbnRzPWZ1bmN0aW9uKHQpe3JldHVybiJidXNpbmVzc0hvdXJzIj09PXQ/dGhpcy5nZXRDdXJyZW50QnVzaW5lc3NIb3VyRXZlbnRzKCk6Im9iamVjdCI9PXR5cGVvZiB0P251bGwhPXQuc3RhcnQ/dGhpcy5leHBhbmRFdmVudCh0aGlzLmJ1aWxkRXZlbnRGcm9tSW5wdXQodCkpOm51bGw6dGhpcy5jbGllbnRFdmVudHModCl9LERlLnByb3RvdHlwZS5ldmVudEludGVyc2VjdHNSYW5nZT1mdW5jdGlvbih0LGUpe3ZhciBuPXQuc3RhcnQuY2xvbmUoKS5zdHJpcFpvbmUoKSxpPXRoaXMuZ2V0RXZlbnRFbmQodCkuc3RyaXBab25lKCk7cmV0dXJuIGUuc3RhcnQ8aSYmZS5lbmQ+bn07dmFyIGtlPXtpZDoiX2ZjQnVzaW5lc3NIb3VycyIsc3RhcnQ6IjA5OjAwIixlbmQ6IjE3OjAwIixkb3c6WzEsMiwzLDQsNV0scmVuZGVyaW5nOiJpbnZlcnNlLWJhY2tncm91bmQifTtEZS5wcm90b3R5cGUuZ2V0Q3VycmVudEJ1c2luZXNzSG91ckV2ZW50cz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jb21wdXRlQnVzaW5lc3NIb3VyRXZlbnRzKHQsdGhpcy5vcHRpb25zLmJ1c2luZXNzSG91cnMpfSxEZS5wcm90b3R5cGUuY29tcHV0ZUJ1c2luZXNzSG91ckV2ZW50cz1mdW5jdGlvbihlLG4pe3JldHVybiBuPT09ITA/dGhpcy5leHBhbmRCdXNpbmVzc0hvdXJFdmVudHMoZSxbe31dKTp0LmlzUGxhaW5PYmplY3Qobik/dGhpcy5leHBhbmRCdXNpbmVzc0hvdXJFdmVudHMoZSxbbl0pOnQuaXNBcnJheShuKT90aGlzLmV4cGFuZEJ1c2luZXNzSG91ckV2ZW50cyhlLG4sITApOltdfSxEZS5wcm90b3R5cGUuZXhwYW5kQnVzaW5lc3NIb3VyRXZlbnRzPWZ1bmN0aW9uKGUsbixpKXt2YXIgcixzLG89dGhpcy5nZXRWaWV3KCksbD1bXTtmb3Iocj0wO3I8bi5sZW5ndGg7cisrKXM9bltyXSxpJiYhcy5kb3d8fChzPXQuZXh0ZW5kKHt9LGtlLHMpLGUmJihzLnN0YXJ0PW51bGwscy5lbmQ9bnVsbCksbC5wdXNoLmFwcGx5KGwsdGhpcy5leHBhbmRFdmVudCh0aGlzLmJ1aWxkRXZlbnRGcm9tSW5wdXQocyksby5hY3RpdmVSYW5nZS5zdGFydCxvLmFjdGl2ZVJhbmdlLmVuZCkpKTtyZXR1cm4gbH07dmFyIExlPVp0LkJhc2ljVmlldz1iZS5leHRlbmQoe3Njcm9sbGVyOm51bGwsZGF5R3JpZENsYXNzOlNlLGRheUdyaWQ6bnVsbCxkYXlOdW1iZXJzVmlzaWJsZTohMSxjb2xXZWVrTnVtYmVyc1Zpc2libGU6ITEsY2VsbFdlZWtOdW1iZXJzVmlzaWJsZTohMSx3ZWVrTnVtYmVyV2lkdGg6bnVsbCxoZWFkQ29udGFpbmVyRWw6bnVsbCxoZWFkUm93RWw6bnVsbCxpbml0aWFsaXplOmZ1bmN0aW9uKCl7dGhpcy5kYXlHcmlkPXRoaXMuaW5zdGFudGlhdGVEYXlHcmlkKCksdGhpcy5zY3JvbGxlcj1uZXcgRWUoe292ZXJmbG93WDoiaGlkZGVuIixvdmVyZmxvd1k6ImF1dG8ifSl9LGluc3RhbnRpYXRlRGF5R3JpZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZGF5R3JpZENsYXNzLmV4dGVuZChNZSk7cmV0dXJuIG5ldyB0KHRoaXMpfSxidWlsZFJlbmRlclJhbmdlOmZ1bmN0aW9uKHQsZSl7dmFyIG49YmUucHJvdG90eXBlLmJ1aWxkUmVuZGVyUmFuZ2UuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybi9eKHllYXJ8bW9udGgpJC8udGVzdChlKSYmKG4uc3RhcnQuc3RhcnRPZigid2VlayIpLG4uZW5kLndlZWtkYXkoKSYmbi5lbmQuYWRkKDEsIndlZWsiKS5zdGFydE9mKCJ3ZWVrIikpLHRoaXMudHJpbUhpZGRlbkRheXMobil9LHJlbmRlckRhdGVzOmZ1bmN0aW9uKCl7dGhpcy5kYXlHcmlkLmJyZWFrT25XZWVrcz0veWVhcnxtb250aHx3ZWVrLy50ZXN0KHRoaXMuY3VycmVudFJhbmdlVW5pdCksdGhpcy5kYXlHcmlkLnNldFJhbmdlKHRoaXMucmVuZGVyUmFuZ2UpLHRoaXMuZGF5TnVtYmVyc1Zpc2libGU9dGhpcy5kYXlHcmlkLnJvd0NudD4xLHRoaXMub3B0KCJ3ZWVrTnVtYmVycyIpJiYodGhpcy5vcHQoIndlZWtOdW1iZXJzV2l0aGluRGF5cyIpPyh0aGlzLmNlbGxXZWVrTnVtYmVyc1Zpc2libGU9ITAsdGhpcy5jb2xXZWVrTnVtYmVyc1Zpc2libGU9ITEpOih0aGlzLmNlbGxXZWVrTnVtYmVyc1Zpc2libGU9ITEsdGhpcy5jb2xXZWVrTnVtYmVyc1Zpc2libGU9ITApKSx0aGlzLmRheUdyaWQubnVtYmVyc1Zpc2libGU9dGhpcy5kYXlOdW1iZXJzVmlzaWJsZXx8dGhpcy5jZWxsV2Vla051bWJlcnNWaXNpYmxlfHx0aGlzLmNvbFdlZWtOdW1iZXJzVmlzaWJsZSx0aGlzLmVsLmFkZENsYXNzKCJmYy1iYXNpYy12aWV3IikuaHRtbCh0aGlzLnJlbmRlclNrZWxldG9uSHRtbCgpKSx0aGlzLnJlbmRlckhlYWQoKSx0aGlzLnNjcm9sbGVyLnJlbmRlcigpO3ZhciBlPXRoaXMuc2Nyb2xsZXIuZWwuYWRkQ2xhc3MoImZjLWRheS1ncmlkLWNvbnRhaW5lciIpLG49dCgnPGRpdiBjbGFzcz0iZmMtZGF5LWdyaWQiIC8+JykuYXBwZW5kVG8oZSk7dGhpcy5lbC5maW5kKCIuZmMtYm9keSA+IHRyID4gdGQiKS5hcHBlbmQoZSksdGhpcy5kYXlHcmlkLnNldEVsZW1lbnQobiksdGhpcy5kYXlHcmlkLnJlbmRlckRhdGVzKHRoaXMuaGFzUmlnaWRSb3dzKCkpfSxyZW5kZXJIZWFkOmZ1bmN0aW9uKCl7dGhpcy5oZWFkQ29udGFpbmVyRWw9dGhpcy5lbC5maW5kKCIuZmMtaGVhZC1jb250YWluZXIiKS5odG1sKHRoaXMuZGF5R3JpZC5yZW5kZXJIZWFkSHRtbCgpKSx0aGlzLmhlYWRSb3dFbD10aGlzLmhlYWRDb250YWluZXJFbC5maW5kKCIuZmMtcm93Iil9LHVucmVuZGVyRGF0ZXM6ZnVuY3Rpb24oKXt0aGlzLmRheUdyaWQudW5yZW5kZXJEYXRlcygpLHRoaXMuZGF5R3JpZC5yZW1vdmVFbGVtZW50KCksdGhpcy5zY3JvbGxlci5kZXN0cm95KCl9LHJlbmRlckJ1c2luZXNzSG91cnM6ZnVuY3Rpb24oKXt0aGlzLmRheUdyaWQucmVuZGVyQnVzaW5lc3NIb3VycygpfSx1bnJlbmRlckJ1c2luZXNzSG91cnM6ZnVuY3Rpb24oKXt0aGlzLmRheUdyaWQudW5yZW5kZXJCdXNpbmVzc0hvdXJzKCl9LHJlbmRlclNrZWxldG9uSHRtbDpmdW5jdGlvbigpe3JldHVybic8dGFibGU+PHRoZWFkIGNsYXNzPSJmYy1oZWFkIj48dHI+PHRkIGNsYXNzPSJmYy1oZWFkLWNvbnRhaW5lciAnK3RoaXMud2lkZ2V0SGVhZGVyQ2xhc3MrJyI+PC90ZD48L3RyPjwvdGhlYWQ+PHRib2R5IGNsYXNzPSJmYy1ib2R5Ij48dHI+PHRkIGNsYXNzPSInK3RoaXMud2lkZ2V0Q29udGVudENsYXNzKyciPjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+J30sd2Vla051bWJlclN0eWxlQXR0cjpmdW5jdGlvbigpe3JldHVybiBudWxsIT09dGhpcy53ZWVrTnVtYmVyV2lkdGg/J3N0eWxlPSJ3aWR0aDonK3RoaXMud2Vla051bWJlcldpZHRoKydweCInOiIifSxoYXNSaWdpZFJvd3M6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdCgiZXZlbnRMaW1pdCIpO3JldHVybiB0JiYibnVtYmVyIiE9dHlwZW9mIHR9LHVwZGF0ZVdpZHRoOmZ1bmN0aW9uKCl7dGhpcy5jb2xXZWVrTnVtYmVyc1Zpc2libGUmJih0aGlzLndlZWtOdW1iZXJXaWR0aD11KHRoaXMuZWwuZmluZCgiLmZjLXdlZWstbnVtYmVyIikpKX0sc2V0SGVpZ2h0OmZ1bmN0aW9uKHQsZSl7dmFyIG4scyxvPXRoaXMub3B0KCJldmVudExpbWl0Iik7dGhpcy5zY3JvbGxlci5jbGVhcigpLHIodGhpcy5oZWFkUm93RWwpLHRoaXMuZGF5R3JpZC5yZW1vdmVTZWdQb3BvdmVyKCksbyYmIm51bWJlciI9PXR5cGVvZiBvJiZ0aGlzLmRheUdyaWQubGltaXRSb3dzKG8pLG49dGhpcy5jb21wdXRlU2Nyb2xsZXJIZWlnaHQodCksdGhpcy5zZXRHcmlkSGVpZ2h0KG4sZSksbyYmIm51bWJlciIhPXR5cGVvZiBvJiZ0aGlzLmRheUdyaWQubGltaXRSb3dzKG8pLGV8fCh0aGlzLnNjcm9sbGVyLnNldEhlaWdodChuKSxzPXRoaXMuc2Nyb2xsZXIuZ2V0U2Nyb2xsYmFyV2lkdGhzKCksCihzLmxlZnR8fHMucmlnaHQpJiYoaSh0aGlzLmhlYWRSb3dFbCxzKSxuPXRoaXMuY29tcHV0ZVNjcm9sbGVySGVpZ2h0KHQpLHRoaXMuc2Nyb2xsZXIuc2V0SGVpZ2h0KG4pKSx0aGlzLnNjcm9sbGVyLmxvY2tPdmVyZmxvdyhzKSl9LGNvbXB1dGVTY3JvbGxlckhlaWdodDpmdW5jdGlvbih0KXtyZXR1cm4gdC1jKHRoaXMuZWwsdGhpcy5zY3JvbGxlci5lbCl9LHNldEdyaWRIZWlnaHQ6ZnVuY3Rpb24odCxlKXtlP2EodGhpcy5kYXlHcmlkLnJvd0Vscyk6bCh0aGlzLmRheUdyaWQucm93RWxzLHQsITApfSxjb21wdXRlSW5pdGlhbFNjcm9sbDpmdW5jdGlvbigpe3JldHVybnt0b3A6MH19LHF1ZXJ5U2Nyb2xsOmZ1bmN0aW9uKCl7cmV0dXJue3RvcDp0aGlzLnNjcm9sbGVyLmdldFNjcm9sbFRvcCgpfX0sc2V0U2Nyb2xsOmZ1bmN0aW9uKHQpe3RoaXMuc2Nyb2xsZXIuc2V0U2Nyb2xsVG9wKHQudG9wKX0saGl0c05lZWRlZDpmdW5jdGlvbigpe3RoaXMuZGF5R3JpZC5oaXRzTmVlZGVkKCl9LGhpdHNOb3ROZWVkZWQ6ZnVuY3Rpb24oKXt0aGlzLmRheUdyaWQuaGl0c05vdE5lZWRlZCgpfSxwcmVwYXJlSGl0czpmdW5jdGlvbigpe3RoaXMuZGF5R3JpZC5wcmVwYXJlSGl0cygpfSxyZWxlYXNlSGl0czpmdW5jdGlvbigpe3RoaXMuZGF5R3JpZC5yZWxlYXNlSGl0cygpfSxxdWVyeUhpdDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmRheUdyaWQucXVlcnlIaXQodCxlKX0sZ2V0SGl0U3BhbjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kYXlHcmlkLmdldEhpdFNwYW4odCl9LGdldEhpdEVsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRheUdyaWQuZ2V0SGl0RWwodCl9LHJlbmRlckV2ZW50czpmdW5jdGlvbih0KXt0aGlzLmRheUdyaWQucmVuZGVyRXZlbnRzKHQpLHRoaXMudXBkYXRlSGVpZ2h0KCl9LGdldEV2ZW50U2VnczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRheUdyaWQuZ2V0RXZlbnRTZWdzKCl9LHVucmVuZGVyRXZlbnRzOmZ1bmN0aW9uKCl7dGhpcy5kYXlHcmlkLnVucmVuZGVyRXZlbnRzKCl9LHJlbmRlckRyYWc6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5kYXlHcmlkLnJlbmRlckRyYWcodCxlKX0sdW5yZW5kZXJEcmFnOmZ1bmN0aW9uKCl7dGhpcy5kYXlHcmlkLnVucmVuZGVyRHJhZygpfSxyZW5kZXJTZWxlY3Rpb246ZnVuY3Rpb24odCl7dGhpcy5kYXlHcmlkLnJlbmRlclNlbGVjdGlvbih0KX0sdW5yZW5kZXJTZWxlY3Rpb246ZnVuY3Rpb24oKXt0aGlzLmRheUdyaWQudW5yZW5kZXJTZWxlY3Rpb24oKX19KSxNZT17cmVuZGVySGVhZEludHJvSHRtbDpmdW5jdGlvbigpe3ZhciB0PXRoaXMudmlldztyZXR1cm4gdC5jb2xXZWVrTnVtYmVyc1Zpc2libGU/Jzx0aCBjbGFzcz0iZmMtd2Vlay1udW1iZXIgJyt0LndpZGdldEhlYWRlckNsYXNzKyciICcrdC53ZWVrTnVtYmVyU3R5bGVBdHRyKCkrIj48c3Bhbj4iK2N0KHQub3B0KCJ3ZWVrTnVtYmVyVGl0bGUiKSkrIjwvc3Bhbj48L3RoPiI6IiJ9LHJlbmRlck51bWJlckludHJvSHRtbDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnZpZXcsbj10aGlzLmdldENlbGxEYXRlKHQsMCk7cmV0dXJuIGUuY29sV2Vla051bWJlcnNWaXNpYmxlPyc8dGQgY2xhc3M9ImZjLXdlZWstbnVtYmVyIiAnK2Uud2Vla051bWJlclN0eWxlQXR0cigpKyI+IitlLmJ1aWxkR290b0FuY2hvckh0bWwoe2RhdGU6bix0eXBlOiJ3ZWVrIixmb3JjZU9mZjoxPT09dGhpcy5jb2xDbnR9LG4uZm9ybWF0KCJ3IikpKyI8L3RkPiI6IiJ9LHJlbmRlckJnSW50cm9IdG1sOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy52aWV3O3JldHVybiB0LmNvbFdlZWtOdW1iZXJzVmlzaWJsZT8nPHRkIGNsYXNzPSJmYy13ZWVrLW51bWJlciAnK3Qud2lkZ2V0Q29udGVudENsYXNzKyciICcrdC53ZWVrTnVtYmVyU3R5bGVBdHRyKCkrIj48L3RkPiI6IiJ9LHJlbmRlckludHJvSHRtbDpmdW5jdGlvbigpe3ZhciB0PXRoaXMudmlldztyZXR1cm4gdC5jb2xXZWVrTnVtYmVyc1Zpc2libGU/Jzx0ZCBjbGFzcz0iZmMtd2Vlay1udW1iZXIiICcrdC53ZWVrTnVtYmVyU3R5bGVBdHRyKCkrIj48L3RkPiI6IiJ9fSxCZT1adC5Nb250aFZpZXc9TGUuZXh0ZW5kKHtidWlsZFJlbmRlclJhbmdlOmZ1bmN0aW9uKCl7dmFyIHQsZT1MZS5wcm90b3R5cGUuYnVpbGRSZW5kZXJSYW5nZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHRoaXMuaXNGaXhlZFdlZWtzKCkmJih0PU1hdGguY2VpbChlLmVuZC5kaWZmKGUuc3RhcnQsIndlZWtzIiwhMCkpLGUuZW5kLmFkZCg2LXQsIndlZWtzIikpLGV9LHNldEdyaWRIZWlnaHQ6ZnVuY3Rpb24odCxlKXtlJiYodCo9dGhpcy5yb3dDbnQvNiksbCh0aGlzLmRheUdyaWQucm93RWxzLHQsIWUpfSxpc0ZpeGVkV2Vla3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHQoImZpeGVkV2Vla0NvdW50Iil9fSk7JHQuYmFzaWM9e2NsYXNzOkxlfSwkdC5iYXNpY0RheT17dHlwZToiYmFzaWMiLGR1cmF0aW9uOntkYXlzOjF9fSwkdC5iYXNpY1dlZWs9e3R5cGU6ImJhc2ljIixkdXJhdGlvbjp7d2Vla3M6MX19LCR0Lm1vbnRoPXtjbGFzczpCZSxkdXJhdGlvbjp7bW9udGhzOjF9LGRlZmF1bHRzOntmaXhlZFdlZWtDb3VudDohMH19O3ZhciBGZT1adC5BZ2VuZGFWaWV3PWJlLmV4dGVuZCh7c2Nyb2xsZXI6bnVsbCx0aW1lR3JpZENsYXNzOndlLHRpbWVHcmlkOm51bGwsZGF5R3JpZENsYXNzOlNlLGRheUdyaWQ6bnVsbCxheGlzV2lkdGg6bnVsbCxoZWFkQ29udGFpbmVyRWw6bnVsbCxub1Njcm9sbFJvd0VsczpudWxsLGJvdHRvbVJ1bGVFbDpudWxsLHVzZXNNaW5NYXhUaW1lOiEwLGluaXRpYWxpemU6ZnVuY3Rpb24oKXt0aGlzLnRpbWVHcmlkPXRoaXMuaW5zdGFudGlhdGVUaW1lR3JpZCgpLHRoaXMub3B0KCJhbGxEYXlTbG90IikmJih0aGlzLmRheUdyaWQ9dGhpcy5pbnN0YW50aWF0ZURheUdyaWQoKSksdGhpcy5zY3JvbGxlcj1uZXcgRWUoe292ZXJmbG93WDoiaGlkZGVuIixvdmVyZmxvd1k6ImF1dG8ifSl9LGluc3RhbnRpYXRlVGltZUdyaWQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnRpbWVHcmlkQ2xhc3MuZXh0ZW5kKE5lKTtyZXR1cm4gbmV3IHQodGhpcyl9LGluc3RhbnRpYXRlRGF5R3JpZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZGF5R3JpZENsYXNzLmV4dGVuZCh6ZSk7cmV0dXJuIG5ldyB0KHRoaXMpfSxyZW5kZXJEYXRlczpmdW5jdGlvbigpe3RoaXMudGltZUdyaWQuc2V0UmFuZ2UodGhpcy5yZW5kZXJSYW5nZSksdGhpcy5kYXlHcmlkJiZ0aGlzLmRheUdyaWQuc2V0UmFuZ2UodGhpcy5yZW5kZXJSYW5nZSksdGhpcy5lbC5hZGRDbGFzcygiZmMtYWdlbmRhLXZpZXciKS5odG1sKHRoaXMucmVuZGVyU2tlbGV0b25IdG1sKCkpLHRoaXMucmVuZGVySGVhZCgpLHRoaXMuc2Nyb2xsZXIucmVuZGVyKCk7dmFyIGU9dGhpcy5zY3JvbGxlci5lbC5hZGRDbGFzcygiZmMtdGltZS1ncmlkLWNvbnRhaW5lciIpLG49dCgnPGRpdiBjbGFzcz0iZmMtdGltZS1ncmlkIiAvPicpLmFwcGVuZFRvKGUpO3RoaXMuZWwuZmluZCgiLmZjLWJvZHkgPiB0ciA+IHRkIikuYXBwZW5kKGUpLHRoaXMudGltZUdyaWQuc2V0RWxlbWVudChuKSx0aGlzLnRpbWVHcmlkLnJlbmRlckRhdGVzKCksdGhpcy5ib3R0b21SdWxlRWw9dCgnPGhyIGNsYXNzPSJmYy1kaXZpZGVyICcrdGhpcy53aWRnZXRIZWFkZXJDbGFzcysnIi8+JykuYXBwZW5kVG8odGhpcy50aW1lR3JpZC5lbCksdGhpcy5kYXlHcmlkJiYodGhpcy5kYXlHcmlkLnNldEVsZW1lbnQodGhpcy5lbC5maW5kKCIuZmMtZGF5LWdyaWQiKSksdGhpcy5kYXlHcmlkLnJlbmRlckRhdGVzKCksdGhpcy5kYXlHcmlkLmJvdHRvbUNvb3JkUGFkZGluZz10aGlzLmRheUdyaWQuZWwubmV4dCgiaHIiKS5vdXRlckhlaWdodCgpKSx0aGlzLm5vU2Nyb2xsUm93RWxzPXRoaXMuZWwuZmluZCgiLmZjLXJvdzpub3QoLmZjLXNjcm9sbGVyICopIil9LHJlbmRlckhlYWQ6ZnVuY3Rpb24oKXt0aGlzLmhlYWRDb250YWluZXJFbD10aGlzLmVsLmZpbmQoIi5mYy1oZWFkLWNvbnRhaW5lciIpLmh0bWwodGhpcy50aW1lR3JpZC5yZW5kZXJIZWFkSHRtbCgpKX0sdW5yZW5kZXJEYXRlczpmdW5jdGlvbigpe3RoaXMudGltZUdyaWQudW5yZW5kZXJEYXRlcygpLHRoaXMudGltZUdyaWQucmVtb3ZlRWxlbWVudCgpLHRoaXMuZGF5R3JpZCYmKHRoaXMuZGF5R3JpZC51bnJlbmRlckRhdGVzKCksdGhpcy5kYXlHcmlkLnJlbW92ZUVsZW1lbnQoKSksdGhpcy5zY3JvbGxlci5kZXN0cm95KCl9LHJlbmRlclNrZWxldG9uSHRtbDpmdW5jdGlvbigpe3JldHVybic8dGFibGU+PHRoZWFkIGNsYXNzPSJmYy1oZWFkIj48dHI+PHRkIGNsYXNzPSJmYy1oZWFkLWNvbnRhaW5lciAnK3RoaXMud2lkZ2V0SGVhZGVyQ2xhc3MrJyI+PC90ZD48L3RyPjwvdGhlYWQ+PHRib2R5IGNsYXNzPSJmYy1ib2R5Ij48dHI+PHRkIGNsYXNzPSInK3RoaXMud2lkZ2V0Q29udGVudENsYXNzKyciPicrKHRoaXMuZGF5R3JpZD8nPGRpdiBjbGFzcz0iZmMtZGF5LWdyaWQiLz48aHIgY2xhc3M9ImZjLWRpdmlkZXIgJyt0aGlzLndpZGdldEhlYWRlckNsYXNzKyciLz4nOiIiKSsiPC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT4ifSxheGlzU3R5bGVBdHRyOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT10aGlzLmF4aXNXaWR0aD8nc3R5bGU9IndpZHRoOicrdGhpcy5heGlzV2lkdGgrJ3B4Iic6IiJ9LHJlbmRlckJ1c2luZXNzSG91cnM6ZnVuY3Rpb24oKXt0aGlzLnRpbWVHcmlkLnJlbmRlckJ1c2luZXNzSG91cnMoKSx0aGlzLmRheUdyaWQmJnRoaXMuZGF5R3JpZC5yZW5kZXJCdXNpbmVzc0hvdXJzKCl9LHVucmVuZGVyQnVzaW5lc3NIb3VyczpmdW5jdGlvbigpe3RoaXMudGltZUdyaWQudW5yZW5kZXJCdXNpbmVzc0hvdXJzKCksdGhpcy5kYXlHcmlkJiZ0aGlzLmRheUdyaWQudW5yZW5kZXJCdXNpbmVzc0hvdXJzKCl9LGdldE5vd0luZGljYXRvclVuaXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50aW1lR3JpZC5nZXROb3dJbmRpY2F0b3JVbml0KCl9LHJlbmRlck5vd0luZGljYXRvcjpmdW5jdGlvbih0KXt0aGlzLnRpbWVHcmlkLnJlbmRlck5vd0luZGljYXRvcih0KX0sdW5yZW5kZXJOb3dJbmRpY2F0b3I6ZnVuY3Rpb24oKXt0aGlzLnRpbWVHcmlkLnVucmVuZGVyTm93SW5kaWNhdG9yKCl9LHVwZGF0ZVNpemU6ZnVuY3Rpb24odCl7dGhpcy50aW1lR3JpZC51cGRhdGVTaXplKHQpLGJlLnByb3RvdHlwZS51cGRhdGVTaXplLmNhbGwodGhpcyx0KX0sdXBkYXRlV2lkdGg6ZnVuY3Rpb24oKXt0aGlzLmF4aXNXaWR0aD11KHRoaXMuZWwuZmluZCgiLmZjLWF4aXMiKSl9LHNldEhlaWdodDpmdW5jdGlvbih0LGUpe3ZhciBuLHMsbzt0aGlzLmJvdHRvbVJ1bGVFbC5oaWRlKCksdGhpcy5zY3JvbGxlci5jbGVhcigpLHIodGhpcy5ub1Njcm9sbFJvd0VscyksdGhpcy5kYXlHcmlkJiYodGhpcy5kYXlHcmlkLnJlbW92ZVNlZ1BvcG92ZXIoKSxuPXRoaXMub3B0KCJldmVudExpbWl0IiksbiYmIm51bWJlciIhPXR5cGVvZiBuJiYobj1BZSksbiYmdGhpcy5kYXlHcmlkLmxpbWl0Um93cyhuKSksZXx8KHM9dGhpcy5jb21wdXRlU2Nyb2xsZXJIZWlnaHQodCksdGhpcy5zY3JvbGxlci5zZXRIZWlnaHQocyksbz10aGlzLnNjcm9sbGVyLmdldFNjcm9sbGJhcldpZHRocygpLChvLmxlZnR8fG8ucmlnaHQpJiYoaSh0aGlzLm5vU2Nyb2xsUm93RWxzLG8pLHM9dGhpcy5jb21wdXRlU2Nyb2xsZXJIZWlnaHQodCksdGhpcy5zY3JvbGxlci5zZXRIZWlnaHQocykpLHRoaXMuc2Nyb2xsZXIubG9ja092ZXJmbG93KG8pLHRoaXMudGltZUdyaWQuZ2V0VG90YWxTbGF0SGVpZ2h0KCk8cyYmdGhpcy5ib3R0b21SdWxlRWwuc2hvdygpKX0sY29tcHV0ZVNjcm9sbGVySGVpZ2h0OmZ1bmN0aW9uKHQpe3JldHVybiB0LWModGhpcy5lbCx0aGlzLnNjcm9sbGVyLmVsKX0sY29tcHV0ZUluaXRpYWxTY3JvbGw6ZnVuY3Rpb24oKXt2YXIgdD1lLmR1cmF0aW9uKHRoaXMub3B0KCJzY3JvbGxUaW1lIikpLG49dGhpcy50aW1lR3JpZC5jb21wdXRlVGltZVRvcCh0KTtyZXR1cm4gbj1NYXRoLmNlaWwobiksbiYmbisrLHt0b3A6bn19LHF1ZXJ5U2Nyb2xsOmZ1bmN0aW9uKCl7cmV0dXJue3RvcDp0aGlzLnNjcm9sbGVyLmdldFNjcm9sbFRvcCgpfX0sc2V0U2Nyb2xsOmZ1bmN0aW9uKHQpe3RoaXMuc2Nyb2xsZXIuc2V0U2Nyb2xsVG9wKHQudG9wKX0saGl0c05lZWRlZDpmdW5jdGlvbigpe3RoaXMudGltZUdyaWQuaGl0c05lZWRlZCgpLHRoaXMuZGF5R3JpZCYmdGhpcy5kYXlHcmlkLmhpdHNOZWVkZWQoKX0saGl0c05vdE5lZWRlZDpmdW5jdGlvbigpe3RoaXMudGltZUdyaWQuaGl0c05vdE5lZWRlZCgpLHRoaXMuZGF5R3JpZCYmdGhpcy5kYXlHcmlkLmhpdHNOb3ROZWVkZWQoKX0scHJlcGFyZUhpdHM6ZnVuY3Rpb24oKXt0aGlzLnRpbWVHcmlkLnByZXBhcmVIaXRzKCksdGhpcy5kYXlHcmlkJiZ0aGlzLmRheUdyaWQucHJlcGFyZUhpdHMoKX0scmVsZWFzZUhpdHM6ZnVuY3Rpb24oKXt0aGlzLnRpbWVHcmlkLnJlbGVhc2VIaXRzKCksdGhpcy5kYXlHcmlkJiZ0aGlzLmRheUdyaWQucmVsZWFzZUhpdHMoKX0scXVlcnlIaXQ6ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLnRpbWVHcmlkLnF1ZXJ5SGl0KHQsZSk7cmV0dXJuIW4mJnRoaXMuZGF5R3JpZCYmKG49dGhpcy5kYXlHcmlkLnF1ZXJ5SGl0KHQsZSkpLG59LGdldEhpdFNwYW46ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29tcG9uZW50LmdldEhpdFNwYW4odCl9LGdldEhpdEVsOmZ1bmN0aW9uKHQpe3JldHVybiB0LmNvbXBvbmVudC5nZXRIaXRFbCh0KX0scmVuZGVyRXZlbnRzOmZ1bmN0aW9uKHQpe3ZhciBlLG4saT1bXSxyPVtdLHM9W107Zm9yKG49MDtuPHQubGVuZ3RoO24rKyl0W25dLmFsbERheT9pLnB1c2godFtuXSk6ci5wdXNoKHRbbl0pO2U9dGhpcy50aW1lR3JpZC5yZW5kZXJFdmVudHMociksdGhpcy5kYXlHcmlkJiYocz10aGlzLmRheUdyaWQucmVuZGVyRXZlbnRzKGkpKSx0aGlzLnVwZGF0ZUhlaWdodCgpfSxnZXRFdmVudFNlZ3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50aW1lR3JpZC5nZXRFdmVudFNlZ3MoKS5jb25jYXQodGhpcy5kYXlHcmlkP3RoaXMuZGF5R3JpZC5nZXRFdmVudFNlZ3MoKTpbXSl9LHVucmVuZGVyRXZlbnRzOmZ1bmN0aW9uKCl7dGhpcy50aW1lR3JpZC51bnJlbmRlckV2ZW50cygpLHRoaXMuZGF5R3JpZCYmdGhpcy5kYXlHcmlkLnVucmVuZGVyRXZlbnRzKCl9LHJlbmRlckRyYWc6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5zdGFydC5oYXNUaW1lKCk/dGhpcy50aW1lR3JpZC5yZW5kZXJEcmFnKHQsZSk6dGhpcy5kYXlHcmlkP3RoaXMuZGF5R3JpZC5yZW5kZXJEcmFnKHQsZSk6dm9pZCAwfSx1bnJlbmRlckRyYWc6ZnVuY3Rpb24oKXt0aGlzLnRpbWVHcmlkLnVucmVuZGVyRHJhZygpLHRoaXMuZGF5R3JpZCYmdGhpcy5kYXlHcmlkLnVucmVuZGVyRHJhZygpfSxyZW5kZXJTZWxlY3Rpb246ZnVuY3Rpb24odCl7dC5zdGFydC5oYXNUaW1lKCl8fHQuZW5kLmhhc1RpbWUoKT90aGlzLnRpbWVHcmlkLnJlbmRlclNlbGVjdGlvbih0KTp0aGlzLmRheUdyaWQmJnRoaXMuZGF5R3JpZC5yZW5kZXJTZWxlY3Rpb24odCl9LHVucmVuZGVyU2VsZWN0aW9uOmZ1bmN0aW9uKCl7dGhpcy50aW1lR3JpZC51bnJlbmRlclNlbGVjdGlvbigpLHRoaXMuZGF5R3JpZCYmdGhpcy5kYXlHcmlkLnVucmVuZGVyU2VsZWN0aW9uKCl9fSksTmU9e3JlbmRlckhlYWRJbnRyb0h0bWw6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMudmlldztyZXR1cm4gZS5vcHQoIndlZWtOdW1iZXJzIik/KHQ9dGhpcy5zdGFydC5mb3JtYXQoZS5vcHQoInNtYWxsV2Vla0Zvcm1hdCIpKSwnPHRoIGNsYXNzPSJmYy1heGlzIGZjLXdlZWstbnVtYmVyICcrZS53aWRnZXRIZWFkZXJDbGFzcysnIiAnK2UuYXhpc1N0eWxlQXR0cigpKyI+IitlLmJ1aWxkR290b0FuY2hvckh0bWwoe2RhdGU6dGhpcy5zdGFydCx0eXBlOiJ3ZWVrIixmb3JjZU9mZjp0aGlzLmNvbENudD4xfSxjdCh0KSkrIjwvdGg+Iik6Jzx0aCBjbGFzcz0iZmMtYXhpcyAnK2Uud2lkZ2V0SGVhZGVyQ2xhc3MrJyIgJytlLmF4aXNTdHlsZUF0dHIoKSsiPjwvdGg+In0scmVuZGVyQmdJbnRyb0h0bWw6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnZpZXc7cmV0dXJuJzx0ZCBjbGFzcz0iZmMtYXhpcyAnK3Qud2lkZ2V0Q29udGVudENsYXNzKyciICcrdC5heGlzU3R5bGVBdHRyKCkrIj48L3RkPiJ9LHJlbmRlckludHJvSHRtbDpmdW5jdGlvbigpe3ZhciB0PXRoaXMudmlldztyZXR1cm4nPHRkIGNsYXNzPSJmYy1heGlzIiAnK3QuYXhpc1N0eWxlQXR0cigpKyI+PC90ZD4ifX0semU9e3JlbmRlckJnSW50cm9IdG1sOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy52aWV3O3JldHVybic8dGQgY2xhc3M9ImZjLWF4aXMgJyt0LndpZGdldENvbnRlbnRDbGFzcysnIiAnK3QuYXhpc1N0eWxlQXR0cigpKyI+PHNwYW4+Iit0LmdldEFsbERheUh0bWwoKSsiPC9zcGFuPjwvdGQ+In0scmVuZGVySW50cm9IdG1sOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy52aWV3O3JldHVybic8dGQgY2xhc3M9ImZjLWF4aXMiICcrdC5heGlzU3R5bGVBdHRyKCkrIj48L3RkPiJ9fSxBZT01LEdlPVt7aG91cnM6MX0se21pbnV0ZXM6MzB9LHttaW51dGVzOjE1fSx7c2Vjb25kczozMH0se3NlY29uZHM6MTV9XTskdC5hZ2VuZGE9e2NsYXNzOkZlLGRlZmF1bHRzOnthbGxEYXlTbG90OiEwLHNsb3REdXJhdGlvbjoiMDA6MzA6MDAiLHNsb3RFdmVudE92ZXJsYXA6ITB9fSwkdC5hZ2VuZGFEYXk9e3R5cGU6ImFnZW5kYSIsZHVyYXRpb246e2RheXM6MX19LCR0LmFnZW5kYVdlZWs9e3R5cGU6ImFnZW5kYSIsZHVyYXRpb246e3dlZWtzOjF9fTt2YXIgT2U9YmUuZXh0ZW5kKHtncmlkOm51bGwsc2Nyb2xsZXI6bnVsbCxpbml0aWFsaXplOmZ1bmN0aW9uKCl7dGhpcy5ncmlkPW5ldyBWZSh0aGlzKSx0aGlzLnNjcm9sbGVyPW5ldyBFZSh7b3ZlcmZsb3dYOiJoaWRkZW4iLG92ZXJmbG93WToiYXV0byJ9KX0scmVuZGVyU2tlbGV0b246ZnVuY3Rpb24oKXt0aGlzLmVsLmFkZENsYXNzKCJmYy1saXN0LXZpZXcgIit0aGlzLndpZGdldENvbnRlbnRDbGFzcyksdGhpcy5zY3JvbGxlci5yZW5kZXIoKSx0aGlzLnNjcm9sbGVyLmVsLmFwcGVuZFRvKHRoaXMuZWwpLHRoaXMuZ3JpZC5zZXRFbGVtZW50KHRoaXMuc2Nyb2xsZXIuc2Nyb2xsRWwpfSx1bnJlbmRlclNrZWxldG9uOmZ1bmN0aW9uKCl7dGhpcy5zY3JvbGxlci5kZXN0cm95KCl9LHNldEhlaWdodDpmdW5jdGlvbih0LGUpe3RoaXMuc2Nyb2xsZXIuc2V0SGVpZ2h0KHRoaXMuY29tcHV0ZVNjcm9sbGVySGVpZ2h0KHQpKX0sY29tcHV0ZVNjcm9sbGVySGVpZ2h0OmZ1bmN0aW9uKHQpe3JldHVybiB0LWModGhpcy5lbCx0aGlzLnNjcm9sbGVyLmVsKX0scmVuZGVyRGF0ZXM6ZnVuY3Rpb24oKXt0aGlzLmdyaWQuc2V0UmFuZ2UodGhpcy5yZW5kZXJSYW5nZSl9LHJlbmRlckV2ZW50czpmdW5jdGlvbih0KXt0aGlzLmdyaWQucmVuZGVyRXZlbnRzKHQpfSx1bnJlbmRlckV2ZW50czpmdW5jdGlvbigpe3RoaXMuZ3JpZC51bnJlbmRlckV2ZW50cygpfSxpc0V2ZW50UmVzaXphYmxlOmZ1bmN0aW9uKHQpe3JldHVybiExfSxpc0V2ZW50RHJhZ2dhYmxlOmZ1bmN0aW9uKHQpe3JldHVybiExfX0pLFZlPW1lLmV4dGVuZCh7c2VnU2VsZWN0b3I6Ii5mYy1saXN0LWl0ZW0iLGhhc0RheUludGVyYWN0aW9uczohMSxzcGFuVG9TZWdzOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPXRoaXMudmlldyxpPW4ucmVuZGVyUmFuZ2Uuc3RhcnQuY2xvbmUoKS50aW1lKDApLHI9MCxzPVtdO2k8bi5yZW5kZXJSYW5nZS5lbmQ7KWlmKGU9Tih0LHtzdGFydDppLGVuZDppLmNsb25lKCkuYWRkKDEsImRheSIpfSksZSYmKGUuZGF5SW5kZXg9cixzLnB1c2goZSkpLGkuYWRkKDEsImRheSIpLHIrKyxlJiYhZS5pc0VuZCYmdC5lbmQuaGFzVGltZSgpJiZ0LmVuZDxpLmNsb25lKCkuYWRkKHRoaXMudmlldy5uZXh0RGF5VGhyZXNob2xkKSl7ZS5lbmQ9dC5lbmQuY2xvbmUoKSxlLmlzRW5kPSEwO2JyZWFrfXJldHVybiBzfSxjb21wdXRlRXZlbnRUaW1lRm9ybWF0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmlldy5vcHQoIm1lZGl1bVRpbWVGb3JtYXQiKX0saGFuZGxlU2VnQ2xpY2s6ZnVuY3Rpb24oZSxuKXt2YXIgaTttZS5wcm90b3R5cGUuaGFuZGxlU2VnQ2xpY2suYXBwbHkodGhpcyxhcmd1bWVudHMpLHQobi50YXJnZXQpLmNsb3Nlc3QoImFbaHJlZl0iKS5sZW5ndGh8fChpPWUuZXZlbnQudXJsLGkmJiFuLmlzRGVmYXVsdFByZXZlbnRlZCgpJiYod2luZG93LmxvY2F0aW9uLmhyZWY9aSkpfSxyZW5kZXJGZ1NlZ3M6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9dGhpcy5yZW5kZXJGZ1NlZ0Vscyh0KSx0Lmxlbmd0aD90aGlzLnJlbmRlclNlZ0xpc3QodCk6dGhpcy5yZW5kZXJFbXB0eU1lc3NhZ2UoKSx0fSxyZW5kZXJFbXB0eU1lc3NhZ2U6ZnVuY3Rpb24oKXt0aGlzLmVsLmh0bWwoJzxkaXYgY2xhc3M9ImZjLWxpc3QtZW1wdHktd3JhcDIiPjxkaXYgY2xhc3M9ImZjLWxpc3QtZW1wdHktd3JhcDEiPjxkaXYgY2xhc3M9ImZjLWxpc3QtZW1wdHkiPicrY3QodGhpcy52aWV3Lm9wdCgibm9FdmVudHNNZXNzYWdlIikpKyI8L2Rpdj48L2Rpdj48L2Rpdj4iKX0scmVuZGVyU2VnTGlzdDpmdW5jdGlvbihlKXt2YXIgbixpLHIscz10aGlzLmdyb3VwU2Vnc0J5RGF5KGUpLG89dCgnPHRhYmxlIGNsYXNzPSJmYy1saXN0LXRhYmxlIj48dGJvZHkvPjwvdGFibGU+JyksbD1vLmZpbmQoInRib2R5Iik7Zm9yKG49MDtuPHMubGVuZ3RoO24rKylpZihpPXNbbl0pZm9yKGwuYXBwZW5kKHRoaXMuZGF5SGVhZGVySHRtbCh0aGlzLnZpZXcucmVuZGVyUmFuZ2Uuc3RhcnQuY2xvbmUoKS5hZGQobiwiZGF5cyIpKSksdGhpcy5zb3J0RXZlbnRTZWdzKGkpLHI9MDtyPGkubGVuZ3RoO3IrKylsLmFwcGVuZChpW3JdLmVsKTt0aGlzLmVsLmVtcHR5KCkuYXBwZW5kKG8pfSxncm91cFNlZ3NCeURheTpmdW5jdGlvbih0KXt2YXIgZSxuLGk9W107Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKyluPXRbZV0sKGlbbi5kYXlJbmRleF18fChpW24uZGF5SW5kZXhdPVtdKSkucHVzaChuKTtyZXR1cm4gaX0sZGF5SGVhZGVySHRtbDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnZpZXcsbj1lLm9wdCgibGlzdERheUZvcm1hdCIpLGk9ZS5vcHQoImxpc3REYXlBbHRGb3JtYXQiKTtyZXR1cm4nPHRyIGNsYXNzPSJmYy1saXN0LWhlYWRpbmciIGRhdGEtZGF0ZT0iJyt0LmZvcm1hdCgiWVlZWS1NTS1ERCIpKyciPjx0ZCBjbGFzcz0iJytlLndpZGdldEhlYWRlckNsYXNzKyciIGNvbHNwYW49IjMiPicrKG4/ZS5idWlsZEdvdG9BbmNob3JIdG1sKHQse2NsYXNzOiJmYy1saXN0LWhlYWRpbmctbWFpbiJ9LGN0KHQuZm9ybWF0KG4pKSk6IiIpKyhpP2UuYnVpbGRHb3RvQW5jaG9ySHRtbCh0LHtjbGFzczoiZmMtbGlzdC1oZWFkaW5nLWFsdCJ9LGN0KHQuZm9ybWF0KGkpKSk6IiIpKyI8L3RkPjwvdHI+In0sZmdTZWdIdG1sOmZ1bmN0aW9uKHQpe3ZhciBlLG49dGhpcy52aWV3LGk9WyJmYy1saXN0LWl0ZW0iXS5jb25jYXQodGhpcy5nZXRTZWdDdXN0b21DbGFzc2VzKHQpKSxyPXRoaXMuZ2V0U2VnQmFja2dyb3VuZENvbG9yKHQpLHM9dC5ldmVudCxvPXMudXJsO3JldHVybiBlPXMuYWxsRGF5P24uZ2V0QWxsRGF5SHRtbCgpOm4uaXNNdWx0aURheUV2ZW50KHMpP3QuaXNTdGFydHx8dC5pc0VuZD9jdCh0aGlzLmdldEV2ZW50VGltZVRleHQodCkpOm4uZ2V0QWxsRGF5SHRtbCgpOmN0KHRoaXMuZ2V0RXZlbnRUaW1lVGV4dChzKSksbyYmaS5wdXNoKCJmYy1oYXMtdXJsIiksJzx0ciBjbGFzcz0iJytpLmpvaW4oIiAiKSsnIj4nKyh0aGlzLmRpc3BsYXlFdmVudFRpbWU/Jzx0ZCBjbGFzcz0iZmMtbGlzdC1pdGVtLXRpbWUgJytuLndpZGdldENvbnRlbnRDbGFzcysnIj4nKyhlfHwiIikrIjwvdGQ+IjoiIikrJzx0ZCBjbGFzcz0iZmMtbGlzdC1pdGVtLW1hcmtlciAnK24ud2lkZ2V0Q29udGVudENsYXNzKyciPjxzcGFuIGNsYXNzPSJmYy1ldmVudC1kb3QiJysocj8nIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOicrcisnIic6IiIpKyc+PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJmYy1saXN0LWl0ZW0tdGl0bGUgJytuLndpZGdldENvbnRlbnRDbGFzcysnIj48YScrKG8/JyBocmVmPSInK2N0KG8pKyciJzoiIikrIj4iK2N0KHQuZXZlbnQudGl0bGV8fCIiKSsiPC9hPjwvdGQ+PC90cj4ifX0pO3JldHVybiAkdC5saXN0PXtjbGFzczpPZSxidXR0b25UZXh0S2V5OiJsaXN0IixkZWZhdWx0czp7YnV0dG9uVGV4dDoibGlzdCIsbGlzdERheUZvcm1hdDoiTEwiLG5vRXZlbnRzTWVzc2FnZToiTm8gZXZlbnRzIHRvIGRpc3BsYXkifX0sJHQubGlzdERheT17dHlwZToibGlzdCIsZHVyYXRpb246e2RheXM6MX0sZGVmYXVsdHM6e2xpc3REYXlGb3JtYXQ6ImRkZGQifX0sJHQubGlzdFdlZWs9e3R5cGU6Imxpc3QiLGR1cmF0aW9uOnt3ZWVrczoxfSxkZWZhdWx0czp7bGlzdERheUZvcm1hdDoiZGRkZCIsbGlzdERheUFsdEZvcm1hdDoiTEwifX0sJHQubGlzdE1vbnRoPXt0eXBlOiJsaXN0IixkdXJhdGlvbjp7bW9udGg6MX0sZGVmYXVsdHM6e2xpc3REYXlBbHRGb3JtYXQ6ImRkZGQifX0sJHQubGlzdFllYXI9e3R5cGU6Imxpc3QiLGR1cmF0aW9uOnt5ZWFyOjF9LGRlZmF1bHRzOntsaXN0RGF5QWx0Rm9ybWF0OiJkZGRkIn19LFp0fSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/fullcalendar.print.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIEZ1bGxDYWxlbmRhciB2My4zLjEgUHJpbnQgU3R5bGVzaGVldAogKiBEb2NzICYgTGljZW5zZTogaHR0cHM6Ly9mdWxsY2FsZW5kYXIuaW8vCiAqIChjKSAyMDE3IEFkYW0gU2hhdwogKi8KCi8qCiAqIEluY2x1ZGUgdGhpcyBzdHlsZXNoZWV0IG9uIHlvdXIgcGFnZSB0byBnZXQgYSBtb3JlIHByaW50ZXItZnJpZW5kbHkgY2FsZW5kYXIuCiAqIFdoZW4gaW5jbHVkaW5nIHRoaXMgc3R5bGVzaGVldCwgdXNlIHRoZSBtZWRpYT0ncHJpbnQnIGF0dHJpYnV0ZSBvZiB0aGUgPGxpbms+IHRhZy4KICogTWFrZSBzdXJlIHRvIGluY2x1ZGUgdGhpcyBzdHlsZXNoZWV0IElOIEFERElUSU9OIHRvIHRoZSByZWd1bGFyIGZ1bGxjYWxlbmRhci5jc3MuCiAqLwoKLmZjIHsKCW1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9CgoKLyogR2xvYmFsIEV2ZW50IFJlc3R5bGluZwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgouZmMtZXZlbnQgewoJYmFja2dyb3VuZDogI2ZmZiAhaW1wb3J0YW50OwoJY29sb3I6ICMwMDAgIWltcG9ydGFudDsKCXBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsKfQoKLmZjLWV2ZW50IC5mYy1yZXNpemVyIHsKCWRpc3BsYXk6IG5vbmU7Cn0KCgovKiBUYWJsZSAmIERheS1Sb3cgUmVzdHlsaW5nCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5mYyB0aCwKLmZjIHRkLAouZmMgaHIsCi5mYyB0aGVhZCwKLmZjIHRib2R5LAouZmMtcm93IHsKCWJvcmRlci1jb2xvcjogI2NjYyAhaW1wb3J0YW50OwoJYmFja2dyb3VuZDogI2ZmZiAhaW1wb3J0YW50Owp9CgovKiBraWxsIHRoZSBvdmVybGFpZCwgYWJzb2x1dGVseS1wb3NpdGlvbmVkIGNvbXBvbmVudHMgKi8KLyogY29tbW9uLi4uICovCi5mYy1iZywKLmZjLWJnZXZlbnQtc2tlbGV0b24sCi5mYy1oaWdobGlnaHQtc2tlbGV0b24sCi5mYy1oZWxwZXItc2tlbGV0b24sCi8qIGZvciB0aW1lZ3JpZC4gd2l0aGluIGNlbGxzIHdpdGhpbiB0YWJsZSBza2VsZXRvbnMuLi4gKi8KLmZjLWJnZXZlbnQtY29udGFpbmVyLAouZmMtYnVzaW5lc3MtY29udGFpbmVyLAouZmMtaGlnaGxpZ2h0LWNvbnRhaW5lciwKLmZjLWhlbHBlci1jb250YWluZXIgewoJZGlzcGxheTogbm9uZTsKfQoKLyogZG9uJ3QgZm9yY2UgYSBtaW4taGVpZ2h0IG9uIHJvd3MgKGZvciBEYXlHcmlkKSAqLwouZmMgdGJvZHkgLmZjLXJvdyB7CgloZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsgLyogdW5kbyBoZWlnaHQgdGhhdCBKUyBzZXQgaW4gZGlzdHJpYnV0ZUhlaWdodCAqLwoJbWluLWhlaWdodDogMCAhaW1wb3J0YW50OyAvKiB1bmRvIHRoZSBtaW4taGVpZ2h0IGZyb20gZWFjaCB2aWV3J3Mgc3BlY2lmaWMgc3R5bGVzaGVldCAqLwp9CgouZmMgdGJvZHkgLmZjLXJvdyAuZmMtY29udGVudC1za2VsZXRvbiB7Cglwb3NpdGlvbjogc3RhdGljOyAvKiB1bmRvIC5mYy1yaWdpZCAqLwoJcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDsgLyogdXNlIGEgbW9yZSBib3JkZXItZnJpZW5kbHkgbWV0aG9kIGZvciB0aGlzLi4uICovCn0KCi5mYyB0Ym9keSAuZmMtcm93IC5mYy1jb250ZW50LXNrZWxldG9uIHRib2R5IHRyOmxhc3QtY2hpbGQgdGQgeyAvKiBvbmx5IHdvcmtzIGluIG5ld2VyIGJyb3dzZXJzICovCglwYWRkaW5nLWJvdHRvbTogMWVtOyAvKiAuLi5naXZlcyBzcGFjZSB3aXRoaW4gdGhlIHNrZWxldG9uLiBhbHNvIGVuc3VyZXMgbWluIGhlaWdodCBpbiBhIHdheSAqLwp9CgouZmMgdGJvZHkgLmZjLXJvdyAuZmMtY29udGVudC1za2VsZXRvbiB0YWJsZSB7CgkvKiBwcm92aWRlcyBhIG1pbi1oZWlnaHQgZm9yIHRoZSByb3csIGJ1dCBvbmx5IGVmZmVjdGl2ZSBmb3IgSUUsIHdoaWNoIGV4YWdnZXJhdGVzIHRoaXMgdmFsdWUsCgkgICBtYWtpbmcgaXQgbG9vayBtb3JlIGxpa2UgM2VtLiBmb3Igb3RoZXIgYnJvd2VycywgaXQgd2lsbCBhbHJlYWR5IGJlIHRoaXMgdGFsbCAqLwoJaGVpZ2h0OiAxZW07Cn0KCgovKiBVbmRvIG1vbnRoLXZpZXcgZXZlbnQgbGltaXRpbmcuIERpc3BsYXkgYWxsIGV2ZW50cyBhbmQgaGlkZSB0aGUgIm1vcmUiIGxpbmtzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi5mYy1tb3JlLWNlbGwsCi5mYy1tb3JlIHsKCWRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQoKLmZjIHRyLmZjLWxpbWl0ZWQgewoJZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7Cn0KCi5mYyB0ZC5mYy1saW1pdGVkIHsKCWRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKfQoKLmZjLXBvcG92ZXIgewoJZGlzcGxheTogbm9uZTsgLyogbmV2ZXIgZGlzcGxheSB0aGUgIm1vcmUuLiIgcG9wb3ZlciBpbiBwcmludCBtb2RlICovCn0KCgovKiBUaW1lR3JpZCBSZXN0eWxpbmcKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLyogdW5kbyB0aGUgbWluLWhlaWdodCAxMDAlIHRyaWNrIHVzZWQgdG8gZmlsbCB0aGUgY29udGFpbmVyJ3MgaGVpZ2h0ICovCi5mYy10aW1lLWdyaWQgewoJbWluLWhlaWdodDogMCAhaW1wb3J0YW50Owp9CgovKiBkb24ndCBkaXNwbGF5IHRoZSBzaWRlIGF4aXMgYXQgYWxsICgiYWxsLWRheSIgYW5kIHRpbWUgY2VsbHMpICovCi5mYy1hZ2VuZGEtdmlldyAuZmMtYXhpcyB7CglkaXNwbGF5OiBub25lOwp9CgovKiBkb24ndCBkaXNwbGF5IHRoZSBob3Jpem9udGFsIGxpbmVzICovCi5mYy1zbGF0cywKLmZjLXRpbWUtZ3JpZCBociB7IC8qIHRoaXMgaHIgaXMgdXNlZCB3aGVuIGhlaWdodCBpcyB1bmRlcnVzZWQgYW5kIG5lZWRzIHRvIGJlIGZpbGxlZCAqLwoJZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyAvKiBpbXBvcnRhbnQgb3ZlcnJpZGVzIGlubGluZSBkZWNsYXJhdGlvbiAqLwp9CgovKiBsZXQgdGhlIGNvbnRhaW5lciB0aGF0IGhvbGRzIHRoZSBldmVudHMgYmUgbmF0dXJhbGx5IHBvc2l0aW9uZWQgYW5kIGNyZWF0ZSByZWFsIGhlaWdodCAqLwouZmMtdGltZS1ncmlkIC5mYy1jb250ZW50LXNrZWxldG9uIHsKCXBvc2l0aW9uOiBzdGF0aWM7Cn0KCi8qIGluIGNhc2UgdGhlcmUgYXJlIG5vIGV2ZW50cywgd2Ugc3RpbGwgd2FudCBzb21lIGhlaWdodCAqLwouZmMtdGltZS1ncmlkIC5mYy1jb250ZW50LXNrZWxldG9uIHRhYmxlIHsKCWhlaWdodDogNGVtOwp9CgovKiBraWxsIHRoZSBob3Jpem9udGFsIHNwYWNpbmcgbWFkZSBieSB0aGUgZXZlbnQgY29udGFpbmVyLiBldmVudCBtYXJnaW5zIHdpbGwgYmUgZG9uZSBiZWxvdyAqLwouZmMtdGltZS1ncmlkIC5mYy1ldmVudC1jb250YWluZXIgewoJbWFyZ2luOiAwICFpbXBvcnRhbnQ7Cn0KCgovKiBUaW1lR3JpZCAqRXZlbnQqIFJlc3R5bGluZwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgovKiBuYXR1cmFsbHkgcG9zaXRpb24gZXZlbnRzLCB2ZXJ0aWNhbGx5IHN0YWNraW5nIHRoZW0gKi8KLmZjLXRpbWUtZ3JpZCAuZmMtZXZlbnQgewoJcG9zaXRpb246IHN0YXRpYyAhaW1wb3J0YW50OwoJbWFyZ2luOiAzcHggMnB4ICFpbXBvcnRhbnQ7Cn0KCi8qIGZvciBldmVudHMgdGhhdCBjb250aW51ZSB0byBhIGZ1dHVyZSBkYXksIGdpdmUgdGhlIGJvdHRvbSBib3JkZXIgYmFjayAqLwouZmMtdGltZS1ncmlkIC5mYy1ldmVudC5mYy1ub3QtZW5kIHsKCWJvcmRlci1ib3R0b20td2lkdGg6IDFweCAhaW1wb3J0YW50Owp9CgovKiBpbmRpY2F0ZSB0aGUgZXZlbnQgY29udGludWVzIHZpYSAiLi4uIiB0ZXh0ICovCi5mYy10aW1lLWdyaWQgLmZjLWV2ZW50LmZjLW5vdC1lbmQ6YWZ0ZXIgewoJY29udGVudDogIi4uLiI7Cn0KCi8qIGZvciBldmVudHMgdGhhdCBhcmUgY29udGludWF0aW9ucyBmcm9tIHByZXZpb3VzIGRheXMsIGdpdmUgdGhlIHRvcCBib3JkZXIgYmFjayAqLwouZmMtdGltZS1ncmlkIC5mYy1ldmVudC5mYy1ub3Qtc3RhcnQgewoJYm9yZGVyLXRvcC13aWR0aDogMXB4ICFpbXBvcnRhbnQ7Cn0KCi8qIGluZGljYXRlIHRoZSBldmVudCBpcyBhIGNvbnRpbnVhdGlvbiB2aWEgIi4uLiIgdGV4dCAqLwouZmMtdGltZS1ncmlkIC5mYy1ldmVudC5mYy1ub3Qtc3RhcnQ6YmVmb3JlIHsKCWNvbnRlbnQ6ICIuLi4iOwp9CgovKiB0aW1lICovCgovKiB1bmRvIGEgcHJldmlvdXMgZGVjbGFyYXRpb24gYW5kIGxldCB0aGUgdGltZSB0ZXh0IHNwYW4gdG8gYSBzZWNvbmQgbGluZSAqLwouZmMtdGltZS1ncmlkIC5mYy1ldmVudCAuZmMtdGltZSB7Cgl3aGl0ZS1zcGFjZTogbm9ybWFsICFpbXBvcnRhbnQ7Cn0KCi8qIGhpZGUgdGhlIHRoZSB0aW1lIHRoYXQgaXMgbm9ybWFsbHkgZGlzcGxheWVkLi4uICovCi5mYy10aW1lLWdyaWQgLmZjLWV2ZW50IC5mYy10aW1lIHNwYW4gewoJZGlzcGxheTogbm9uZTsKfQoKLyogLi4ucmVwbGFjZSBpdCB3aXRoIGEgbW9yZSB2ZXJib3NlIHZlcnNpb24gKGluY2x1ZGVzIEFNL1BNKSBzdG9yZWQgaW4gYW4gaHRtbCBhdHRyaWJ1dGUgKi8KLmZjLXRpbWUtZ3JpZCAuZmMtZXZlbnQgLmZjLXRpbWU6YWZ0ZXIgewoJY29udGVudDogYXR0cihkYXRhLWZ1bGwpOwp9CgoKLyogVmVydGljYWwgU2Nyb2xsZXIgJiBDb250YWluZXJzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCi8qIGtpbGwgdGhlIHNjcm9sbGJhcnMgYW5kIGFsbG93IG5hdHVyYWwgaGVpZ2h0ICovCi5mYy1zY3JvbGxlciwKLmZjLWRheS1ncmlkLWNvbnRhaW5lciwgICAgLyogdGhlc2UgZGl2cyBtaWdodCBiZSBhc3NpZ25lZCBoZWlnaHQsIHdoaWNoIHdlIG5lZWQgdG8gY2xlYXJlZCAqLwouZmMtdGltZS1ncmlkLWNvbnRhaW5lciB7ICAvKiAqLwoJb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDsKCWhlaWdodDogYXV0byAhaW1wb3J0YW50Owp9CgovKiBraWxsIHRoZSBob3Jpem9udGFsIGJvcmRlci9wYWRkaW5nIHVzZWQgdG8gY29tcGVuc2F0ZSBmb3Igc2Nyb2xsYmFycyAqLwouZmMtcm93IHsKCWJvcmRlcjogMCAhaW1wb3J0YW50OwoJbWFyZ2luOiAwICFpbXBvcnRhbnQ7Cn0KCgovKiBCdXR0b24gQ29udHJvbHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKLmZjLWJ1dHRvbi1ncm91cCwKLmZjIGJ1dHRvbiB7CglkaXNwbGF5OiBub25lOyAvKiBkb24ndCBkaXNwbGF5IGFueSBidXR0b24tcmVsYXRlZCBjb250cm9scyAqLwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/fullcalendar.print.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIEZ1bGxDYWxlbmRhciB2My4zLjEgUHJpbnQgU3R5bGVzaGVldAogKiBEb2NzICYgTGljZW5zZTogaHR0cHM6Ly9mdWxsY2FsZW5kYXIuaW8vCiAqIChjKSAyMDE3IEFkYW0gU2hhdwogKi8uZmMtYmcsLmZjLWJnZXZlbnQtY29udGFpbmVyLC5mYy1iZ2V2ZW50LXNrZWxldG9uLC5mYy1idXNpbmVzcy1jb250YWluZXIsLmZjLWV2ZW50IC5mYy1yZXNpemVyLC5mYy1oZWxwZXItY29udGFpbmVyLC5mYy1oZWxwZXItc2tlbGV0b24sLmZjLWhpZ2hsaWdodC1jb250YWluZXIsLmZjLWhpZ2hsaWdodC1za2VsZXRvbntkaXNwbGF5Om5vbmV9LmZjIHRib2R5IC5mYy1yb3csLmZjLXRpbWUtZ3JpZHttaW4taGVpZ2h0OjAhaW1wb3J0YW50fS5mYy10aW1lLWdyaWQgLmZjLWV2ZW50LmZjLW5vdC1lbmQ6YWZ0ZXIsLmZjLXRpbWUtZ3JpZCAuZmMtZXZlbnQuZmMtbm90LXN0YXJ0OmJlZm9yZXtjb250ZW50OiIuLi4ifS5mY3ttYXgtd2lkdGg6MTAwJSFpbXBvcnRhbnR9LmZjLWV2ZW50e2JhY2tncm91bmQ6I2ZmZiFpbXBvcnRhbnQ7Y29sb3I6IzAwMCFpbXBvcnRhbnQ7cGFnZS1icmVhay1pbnNpZGU6YXZvaWR9LmZjIGhyLC5mYyB0Ym9keSwuZmMgdGQsLmZjIHRoLC5mYyB0aGVhZCwuZmMtcm93e2JvcmRlci1jb2xvcjojY2NjIWltcG9ydGFudDtiYWNrZ3JvdW5kOiNmZmYhaW1wb3J0YW50fS5mYyB0Ym9keSAuZmMtcm93e2hlaWdodDphdXRvIWltcG9ydGFudH0uZmMgdGJvZHkgLmZjLXJvdyAuZmMtY29udGVudC1za2VsZXRvbntwb3NpdGlvbjpzdGF0aWM7cGFkZGluZy1ib3R0b206MCFpbXBvcnRhbnR9LmZjIHRib2R5IC5mYy1yb3cgLmZjLWNvbnRlbnQtc2tlbGV0b24gdGJvZHkgdHI6bGFzdC1jaGlsZCB0ZHtwYWRkaW5nLWJvdHRvbToxZW19LmZjIHRib2R5IC5mYy1yb3cgLmZjLWNvbnRlbnQtc2tlbGV0b24gdGFibGV7aGVpZ2h0OjFlbX0uZmMtbW9yZSwuZmMtbW9yZS1jZWxse2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LmZjIHRyLmZjLWxpbWl0ZWR7ZGlzcGxheTp0YWJsZS1yb3chaW1wb3J0YW50fS5mYyB0ZC5mYy1saW1pdGVke2Rpc3BsYXk6dGFibGUtY2VsbCFpbXBvcnRhbnR9LmZjLWFnZW5kYS12aWV3IC5mYy1heGlzLC5mYy1wb3BvdmVye2Rpc3BsYXk6bm9uZX0uZmMtc2xhdHMsLmZjLXRpbWUtZ3JpZCBocntkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS5mYyBidXR0b24sLmZjLWJ1dHRvbi1ncm91cCwuZmMtdGltZS1ncmlkIC5mYy1ldmVudCAuZmMtdGltZSBzcGFue2Rpc3BsYXk6bm9uZX0uZmMtdGltZS1ncmlkIC5mYy1jb250ZW50LXNrZWxldG9ue3Bvc2l0aW9uOnN0YXRpY30uZmMtdGltZS1ncmlkIC5mYy1jb250ZW50LXNrZWxldG9uIHRhYmxle2hlaWdodDo0ZW19LmZjLXRpbWUtZ3JpZCAuZmMtZXZlbnQtY29udGFpbmVye21hcmdpbjowIWltcG9ydGFudH0uZmMtdGltZS1ncmlkIC5mYy1ldmVudHtwb3NpdGlvbjpzdGF0aWMhaW1wb3J0YW50O21hcmdpbjozcHggMnB4IWltcG9ydGFudH0uZmMtdGltZS1ncmlkIC5mYy1ldmVudC5mYy1ub3QtZW5ke2JvcmRlci1ib3R0b20td2lkdGg6MXB4IWltcG9ydGFudH0uZmMtdGltZS1ncmlkIC5mYy1ldmVudC5mYy1ub3Qtc3RhcnR7Ym9yZGVyLXRvcC13aWR0aDoxcHghaW1wb3J0YW50fS5mYy10aW1lLWdyaWQgLmZjLWV2ZW50IC5mYy10aW1le3doaXRlLXNwYWNlOm5vcm1hbCFpbXBvcnRhbnR9LmZjLXRpbWUtZ3JpZCAuZmMtZXZlbnQgLmZjLXRpbWU6YWZ0ZXJ7Y29udGVudDphdHRyKGRhdGEtZnVsbCl9LmZjLWRheS1ncmlkLWNvbnRhaW5lciwuZmMtc2Nyb2xsZXIsLmZjLXRpbWUtZ3JpZC1jb250YWluZXJ7b3ZlcmZsb3c6dmlzaWJsZSFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8haW1wb3J0YW50fS5mYy1yb3d7Ym9yZGVyOjAhaW1wb3J0YW50O21hcmdpbjowIWltcG9ydGFudH0=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/gcal.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIEZ1bGxDYWxlbmRhciB2My4zLjEgR29vZ2xlIENhbGVuZGFyIFBsdWdpbgogKiBEb2NzICYgTGljZW5zZTogaHR0cHM6Ly9mdWxsY2FsZW5kYXIuaW8vCiAqIChjKSAyMDE3IEFkYW0gU2hhdwogKi8KIAooZnVuY3Rpb24oZmFjdG9yeSkgewoJaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkgewoJCWRlZmluZShbICdqcXVlcnknIF0sIGZhY3RvcnkpOwoJfQoJZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKSB7IC8vIE5vZGUvQ29tbW9uSlMKCQltb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZSgnanF1ZXJ5JykpOwoJfQoJZWxzZSB7CgkJZmFjdG9yeShqUXVlcnkpOwoJfQp9KShmdW5jdGlvbigkKSB7CgoKdmFyIEFQSV9CQVNFID0gJ2h0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2NhbGVuZGFyL3YzL2NhbGVuZGFycyc7CnZhciBGQyA9ICQuZnVsbENhbGVuZGFyOwp2YXIgYXBwbHlBbGwgPSBGQy5hcHBseUFsbDsKCgpGQy5zb3VyY2VOb3JtYWxpemVycy5wdXNoKGZ1bmN0aW9uKHNvdXJjZU9wdGlvbnMpIHsKCXZhciBnb29nbGVDYWxlbmRhcklkID0gc291cmNlT3B0aW9ucy5nb29nbGVDYWxlbmRhcklkOwoJdmFyIHVybCA9IHNvdXJjZU9wdGlvbnMudXJsOwoJdmFyIG1hdGNoOwoKCS8vIGlmIHRoZSBHb29nbGUgQ2FsZW5kYXIgSUQgaGFzbid0IGJlZW4gZXhwbGljaXRseSBkZWZpbmVkCglpZiAoIWdvb2dsZUNhbGVuZGFySWQgJiYgdXJsKSB7CgoJCS8vIGRldGVjdCBpZiB0aGUgSUQgd2FzIHNwZWNpZmllZCBhcyBhIHNpbmdsZSBzdHJpbmcuCgkJLy8gd2lsbCBtYXRjaCBjYWxlbmRhcnMgbGlrZSAiYXNkZjEyMzRAY2FsZW5kYXIuZ29vZ2xlLmNvbSIgaW4gYWRkaXRpb24gdG8gcGVyc29uIGVtYWlsIGNhbGVuZGFycy4KCQlpZiAoL15bXlwvXStAKFteXC9cLl0rXC4pKihnb29nbGV8Z29vZ2xlbWFpbHxnbWFpbClcLmNvbSQvLnRlc3QodXJsKSkgewoJCQlnb29nbGVDYWxlbmRhcklkID0gdXJsOwoJCX0KCQkvLyB0cnkgdG8gc2NyYXBlIGl0IG91dCBvZiBhIFYxIG9yIFYzIEFQSSBmZWVkIFVSTAoJCWVsc2UgaWYgKAoJCQkobWF0Y2ggPSAvXmh0dHBzOlwvXC93d3cuZ29vZ2xlYXBpcy5jb21cL2NhbGVuZGFyXC92M1wvY2FsZW5kYXJzXC8oW15cL10qKS8uZXhlYyh1cmwpKSB8fAoJCQkobWF0Y2ggPSAvXmh0dHBzPzpcL1wvd3d3Lmdvb2dsZS5jb21cL2NhbGVuZGFyXC9mZWVkc1wvKFteXC9dKikvLmV4ZWModXJsKSkKCQkpIHsKCQkJZ29vZ2xlQ2FsZW5kYXJJZCA9IGRlY29kZVVSSUNvbXBvbmVudChtYXRjaFsxXSk7CgkJfQoKCQlpZiAoZ29vZ2xlQ2FsZW5kYXJJZCkgewoJCQlzb3VyY2VPcHRpb25zLmdvb2dsZUNhbGVuZGFySWQgPSBnb29nbGVDYWxlbmRhcklkOwoJCX0KCX0KCgoJaWYgKGdvb2dsZUNhbGVuZGFySWQpIHsgLy8gaXMgdGhpcyBhIEdvb2dsZSBDYWxlbmRhcj8KCgkJLy8gbWFrZSBlYWNoIEdvb2dsZSBDYWxlbmRhciBzb3VyY2UgdW5lZGl0YWJsZSBieSBkZWZhdWx0CgkJaWYgKHNvdXJjZU9wdGlvbnMuZWRpdGFibGUgPT0gbnVsbCkgewoJCQlzb3VyY2VPcHRpb25zLmVkaXRhYmxlID0gZmFsc2U7CgkJfQoKCQkvLyBXZSB3YW50IHJlbW92ZUV2ZW50U291cmNlIHRvIHdvcmssIGJ1dCBpdCB3b24ndCBrbm93IGFib3V0IHRoZSBnb29nbGVDYWxlbmRhcklkIHByaW1pdGl2ZS4KCQkvLyBTaG9laG9ybiBpdCBpbnRvIHRoZSB1cmwsIHdoaWNoIHdpbGwgZnVuY3Rpb24gYXMgdGhlIHVuaXF1ZSBwcmltaXRpdmUuIFdvbid0IGNhdXNlIHNpZGUgZWZmZWN0cy4KCQkvLyBUaGlzIGhhY2sgaXMgb2Jzb2xldGUgc2luY2UgMi4yLjMsIGJ1dCBrZWVwIGl0IHNvIHRoaXMgcGx1Z2luIGZpbGUgaXMgY29tcGF0aWJsZSB3aXRoIG9sZCB2ZXJzaW9ucy4KCQlzb3VyY2VPcHRpb25zLnVybCA9IGdvb2dsZUNhbGVuZGFySWQ7Cgl9Cn0pOwoKCkZDLnNvdXJjZUZldGNoZXJzLnB1c2goZnVuY3Rpb24oc291cmNlT3B0aW9ucywgc3RhcnQsIGVuZCwgdGltZXpvbmUpIHsKCWlmIChzb3VyY2VPcHRpb25zLmdvb2dsZUNhbGVuZGFySWQpIHsKCQlyZXR1cm4gdHJhbnNmb3JtT3B0aW9ucyhzb3VyY2VPcHRpb25zLCBzdGFydCwgZW5kLCB0aW1lem9uZSwgdGhpcyk7IC8vIGB0aGlzYCBpcyB0aGUgY2FsZW5kYXIKCX0KfSk7CgoKZnVuY3Rpb24gdHJhbnNmb3JtT3B0aW9ucyhzb3VyY2VPcHRpb25zLCBzdGFydCwgZW5kLCB0aW1lem9uZSwgY2FsZW5kYXIpIHsKCXZhciB1cmwgPSBBUElfQkFTRSArICcvJyArIGVuY29kZVVSSUNvbXBvbmVudChzb3VyY2VPcHRpb25zLmdvb2dsZUNhbGVuZGFySWQpICsgJy9ldmVudHM/Y2FsbGJhY2s9Pyc7IC8vIGpzb25wCgl2YXIgYXBpS2V5ID0gc291cmNlT3B0aW9ucy5nb29nbGVDYWxlbmRhckFwaUtleSB8fCBjYWxlbmRhci5vcHRpb25zLmdvb2dsZUNhbGVuZGFyQXBpS2V5OwoJdmFyIHN1Y2Nlc3MgPSBzb3VyY2VPcHRpb25zLnN1Y2Nlc3M7Cgl2YXIgZGF0YTsKCXZhciB0aW1lem9uZUFyZzsgLy8gcG9wdWxhdGVkIHdoZW4gYSBzcGVjaWZpYyB0aW1lem9uZS4gZXNjYXBlZCB0byBHb29nbGUncyBsaWtpbmcKCglmdW5jdGlvbiByZXBvcnRFcnJvcihtZXNzYWdlLCBhcGlFcnJvck9ianMpIHsKCQl2YXIgZXJyb3JPYmpzID0gYXBpRXJyb3JPYmpzIHx8IFsgeyBtZXNzYWdlOiBtZXNzYWdlIH0gXTsgLy8gdG8gYmUgcGFzc2VkIGludG8gZXJyb3IgaGFuZGxlcnMKCgkJLy8gY2FsbCBlcnJvciBoYW5kbGVycwoJCShzb3VyY2VPcHRpb25zLmdvb2dsZUNhbGVuZGFyRXJyb3IgfHwgJC5ub29wKS5hcHBseShjYWxlbmRhciwgZXJyb3JPYmpzKTsKCQkoY2FsZW5kYXIub3B0aW9ucy5nb29nbGVDYWxlbmRhckVycm9yIHx8ICQubm9vcCkuYXBwbHkoY2FsZW5kYXIsIGVycm9yT2Jqcyk7CgoJCS8vIHByaW50IGVycm9yIHRvIGRlYnVnIGNvbnNvbGUKCQlGQy53YXJuLmFwcGx5KG51bGwsIFsgbWVzc2FnZSBdLmNvbmNhdChhcGlFcnJvck9ianMgfHwgW10pKTsKCX0KCglpZiAoIWFwaUtleSkgewoJCXJlcG9ydEVycm9yKCJTcGVjaWZ5IGEgZ29vZ2xlQ2FsZW5kYXJBcGlLZXkuIFNlZSBodHRwOi8vZnVsbGNhbGVuZGFyLmlvL2RvY3MvZ29vZ2xlX2NhbGVuZGFyLyIpOwoJCXJldHVybiB7fTsgLy8gYW4gZW1wdHkgc291cmNlIHRvIHVzZSBpbnN0ZWFkLiB3b24ndCBmZXRjaCBhbnl0aGluZy4KCX0KCgkvLyBUaGUgQVBJIGV4cGVjdHMgYW4gSVNPODYwMSBkYXRldGltZSB3aXRoIGEgdGltZSBhbmQgdGltZXpvbmUgcGFydC4KCS8vIFNpbmNlIHRoZSBjYWxlbmRhcidzIHRpbWV6b25lIG9mZnNldCBpc24ndCBhbHdheXMga25vd24sIHJlcXVlc3QgdGhlIGRhdGUgaW4gVVRDIGFuZCBwYWQgaXQgYnkgYSBkYXkgb24gZWFjaAoJLy8gc2lkZSwgZ3VhcmFudGVlaW5nIHdlIHdpbGwgcmVjZWl2ZSBhbGwgZXZlbnRzIGluIHRoZSBkZXNpcmVkIHJhbmdlLCBhbGJlaXQgYSBzdXBlcnNldC4KCS8vIC51dGMoKSB3aWxsIHNldCBhIHpvbmUgYW5kIGdpdmUgaXQgYSAwMDowMDowMCB0aW1lLgoJaWYgKCFzdGFydC5oYXNab25lKCkpIHsKCQlzdGFydCA9IHN0YXJ0LmNsb25lKCkudXRjKCkuYWRkKC0xLCAnZGF5Jyk7Cgl9CglpZiAoIWVuZC5oYXNab25lKCkpIHsKCQllbmQgPSBlbmQuY2xvbmUoKS51dGMoKS5hZGQoMSwgJ2RheScpOwoJfQoKCS8vIHdoZW4gc2VuZGluZyB0aW1lem9uZSBuYW1lcyB0byBHb29nbGUsIG9ubHkgYWNjZXB0cyB1bmRlcnNjb3Jlcywgbm90IHNwYWNlcwoJaWYgKHRpbWV6b25lICYmIHRpbWV6b25lICE9ICdsb2NhbCcpIHsKCQl0aW1lem9uZUFyZyA9IHRpbWV6b25lLnJlcGxhY2UoJyAnLCAnXycpOwoJfQoKCWRhdGEgPSAkLmV4dGVuZCh7fSwgc291cmNlT3B0aW9ucy5kYXRhIHx8IHt9LCB7CgkJa2V5OiBhcGlLZXksCgkJdGltZU1pbjogc3RhcnQuZm9ybWF0KCksCgkJdGltZU1heDogZW5kLmZvcm1hdCgpLAoJCXRpbWVab25lOiB0aW1lem9uZUFyZywKCQlzaW5nbGVFdmVudHM6IHRydWUsCgkJbWF4UmVzdWx0czogOTk5OQoJfSk7CgoJcmV0dXJuICQuZXh0ZW5kKHt9LCBzb3VyY2VPcHRpb25zLCB7CgkJZ29vZ2xlQ2FsZW5kYXJJZDogbnVsbCwgLy8gcHJldmVudHMgc291cmNlLW5vcm1hbGl6aW5nIGZyb20gaGFwcGVuaW5nIGFnYWluCgkJdXJsOiB1cmwsCgkJZGF0YTogZGF0YSwKCQlzdGFydFBhcmFtOiBmYWxzZSwgLy8gYGZhbHNlYCBvbWl0cyB0aGlzIHBhcmFtZXRlci4gd2UgYWxyZWFkeSBpbmNsdWRlZCBpdCBhYm92ZQoJCWVuZFBhcmFtOiBmYWxzZSwgLy8gc2FtZQoJCXRpbWV6b25lUGFyYW06IGZhbHNlLCAvLyBzYW1lCgkJc3VjY2VzczogZnVuY3Rpb24oZGF0YSkgewoJCQl2YXIgZXZlbnRzID0gW107CgkJCXZhciBzdWNjZXNzQXJnczsKCQkJdmFyIHN1Y2Nlc3NSZXM7CgoJCQlpZiAoZGF0YS5lcnJvcikgewoJCQkJcmVwb3J0RXJyb3IoJ0dvb2dsZSBDYWxlbmRhciBBUEk6ICcgKyBkYXRhLmVycm9yLm1lc3NhZ2UsIGRhdGEuZXJyb3IuZXJyb3JzKTsKCQkJfQoJCQllbHNlIGlmIChkYXRhLml0ZW1zKSB7CgkJCQkkLmVhY2goZGF0YS5pdGVtcywgZnVuY3Rpb24oaSwgZW50cnkpIHsKCQkJCQl2YXIgdXJsID0gZW50cnkuaHRtbExpbmsgfHwgbnVsbDsKCgkJCQkJLy8gbWFrZSB0aGUgVVJMcyBmb3IgZWFjaCBldmVudCBzaG93IHRpbWVzIGluIHRoZSBjb3JyZWN0IHRpbWV6b25lCgkJCQkJaWYgKHRpbWV6b25lQXJnICYmIHVybCAhPT0gbnVsbCkgewoJCQkJCQl1cmwgPSBpbmplY3RRc0NvbXBvbmVudCh1cmwsICdjdHo9JyArIHRpbWV6b25lQXJnKTsKCQkJCQl9CgoJCQkJCWV2ZW50cy5wdXNoKHsKCQkJCQkJaWQ6IGVudHJ5LmlkLAoJCQkJCQl0aXRsZTogZW50cnkuc3VtbWFyeSwKCQkJCQkJc3RhcnQ6IGVudHJ5LnN0YXJ0LmRhdGVUaW1lIHx8IGVudHJ5LnN0YXJ0LmRhdGUsIC8vIHRyeSB0aW1lZC4gd2lsbCBmYWxsIGJhY2sgdG8gYWxsLWRheQoJCQkJCQllbmQ6IGVudHJ5LmVuZC5kYXRlVGltZSB8fCBlbnRyeS5lbmQuZGF0ZSwgLy8gc2FtZQoJCQkJCQl1cmw6IHVybCwKCQkJCQkJbG9jYXRpb246IGVudHJ5LmxvY2F0aW9uLAoJCQkJCQlkZXNjcmlwdGlvbjogZW50cnkuZGVzY3JpcHRpb24KCQkJCQl9KTsKCQkJCX0pOwoKCQkJCS8vIGNhbGwgdGhlIHN1Y2Nlc3MgaGFuZGxlcihzKSBhbmQgYWxsb3cgaXQgdG8gcmV0dXJuIGEgbmV3IGV2ZW50cyBhcnJheQoJCQkJc3VjY2Vzc0FyZ3MgPSBbIGV2ZW50cyBdLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKTsgLy8gZm9yd2FyZCBvdGhlciBqcSBhcmdzCgkJCQlzdWNjZXNzUmVzID0gYXBwbHlBbGwoc3VjY2VzcywgdGhpcywgc3VjY2Vzc0FyZ3MpOwoJCQkJaWYgKCQuaXNBcnJheShzdWNjZXNzUmVzKSkgewoJCQkJCXJldHVybiBzdWNjZXNzUmVzOwoJCQkJfQoJCQl9CgoJCQlyZXR1cm4gZXZlbnRzOwoJCX0KCX0pOwp9CgoKLy8gSW5qZWN0cyBhIHN0cmluZyBsaWtlICJhcmc9dmFsdWUiIGludG8gdGhlIHF1ZXJ5c3RyaW5nIG9mIGEgVVJMCmZ1bmN0aW9uIGluamVjdFFzQ29tcG9uZW50KHVybCwgY29tcG9uZW50KSB7CgkvLyBpbmplY3QgaXQgYWZ0ZXIgdGhlIHF1ZXJ5c3RyaW5nIGJ1dCBiZWZvcmUgdGhlIGZyYWdtZW50CglyZXR1cm4gdXJsLnJlcGxhY2UoLyhcPy4qPyk/KCN8JCkvLCBmdW5jdGlvbih3aG9sZSwgcXMsIGhhc2gpIHsKCQlyZXR1cm4gKHFzID8gcXMgKyAnJicgOiAnPycpICsgY29tcG9uZW50ICsgaGFzaDsKCX0pOwp9CgoKfSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/gcal.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIEZ1bGxDYWxlbmRhciB2My4zLjEgR29vZ2xlIENhbGVuZGFyIFBsdWdpbgogKiBEb2NzICYgTGljZW5zZTogaHR0cHM6Ly9mdWxsY2FsZW5kYXIuaW8vCiAqIChjKSAyMDE3IEFkYW0gU2hhdwogKi8KIWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikpOmUoalF1ZXJ5KX0oZnVuY3Rpb24oZSl7ZnVuY3Rpb24gYShhLHQsZCxjLGkpe2Z1bmN0aW9uIHMobyxyKXt2YXIgbD1yfHxbe21lc3NhZ2U6b31dOyhhLmdvb2dsZUNhbGVuZGFyRXJyb3J8fGUubm9vcCkuYXBwbHkoaSxsKSwoaS5vcHRpb25zLmdvb2dsZUNhbGVuZGFyRXJyb3J8fGUubm9vcCkuYXBwbHkoaSxsKSxuLndhcm4uYXBwbHkobnVsbCxbb10uY29uY2F0KHJ8fFtdKSl9dmFyIHUsZyxwPXIrIi8iK2VuY29kZVVSSUNvbXBvbmVudChhLmdvb2dsZUNhbGVuZGFySWQpKyIvZXZlbnRzP2NhbGxiYWNrPT8iLG09YS5nb29nbGVDYWxlbmRhckFwaUtleXx8aS5vcHRpb25zLmdvb2dsZUNhbGVuZGFyQXBpS2V5LGY9YS5zdWNjZXNzO3JldHVybiBtPyh0Lmhhc1pvbmUoKXx8KHQ9dC5jbG9uZSgpLnV0YygpLmFkZCgtMSwiZGF5IikpLGQuaGFzWm9uZSgpfHwoZD1kLmNsb25lKCkudXRjKCkuYWRkKDEsImRheSIpKSxjJiYibG9jYWwiIT1jJiYoZz1jLnJlcGxhY2UoIiAiLCJfIikpLHU9ZS5leHRlbmQoe30sYS5kYXRhfHx7fSx7a2V5Om0sdGltZU1pbjp0LmZvcm1hdCgpLHRpbWVNYXg6ZC5mb3JtYXQoKSx0aW1lWm9uZTpnLHNpbmdsZUV2ZW50czohMCxtYXhSZXN1bHRzOjk5OTl9KSxlLmV4dGVuZCh7fSxhLHtnb29nbGVDYWxlbmRhcklkOm51bGwsdXJsOnAsZGF0YTp1LHN0YXJ0UGFyYW06ITEsZW5kUGFyYW06ITEsdGltZXpvbmVQYXJhbTohMSxzdWNjZXNzOmZ1bmN0aW9uKGEpe3ZhciByLG4sdD1bXTtpZihhLmVycm9yKXMoIkdvb2dsZSBDYWxlbmRhciBBUEk6ICIrYS5lcnJvci5tZXNzYWdlLGEuZXJyb3IuZXJyb3JzKTtlbHNlIGlmKGEuaXRlbXMmJihlLmVhY2goYS5pdGVtcyxmdW5jdGlvbihlLGEpe3ZhciByPWEuaHRtbExpbmt8fG51bGw7ZyYmbnVsbCE9PXImJihyPW8ociwiY3R6PSIrZykpLHQucHVzaCh7aWQ6YS5pZCx0aXRsZTphLnN1bW1hcnksc3RhcnQ6YS5zdGFydC5kYXRlVGltZXx8YS5zdGFydC5kYXRlLGVuZDphLmVuZC5kYXRlVGltZXx8YS5lbmQuZGF0ZSx1cmw6cixsb2NhdGlvbjphLmxvY2F0aW9uLGRlc2NyaXB0aW9uOmEuZGVzY3JpcHRpb259KX0pLHI9W3RdLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpLG49bChmLHRoaXMsciksZS5pc0FycmF5KG4pKSlyZXR1cm4gbjtyZXR1cm4gdH19KSk6KHMoIlNwZWNpZnkgYSBnb29nbGVDYWxlbmRhckFwaUtleS4gU2VlIGh0dHA6Ly9mdWxsY2FsZW5kYXIuaW8vZG9jcy9nb29nbGVfY2FsZW5kYXIvIikse30pfWZ1bmN0aW9uIG8oZSxhKXtyZXR1cm4gZS5yZXBsYWNlKC8oXD8uKj8pPygjfCQpLyxmdW5jdGlvbihlLG8scil7cmV0dXJuKG8/bysiJiI6Ij8iKSthK3J9KX12YXIgcj0iaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vY2FsZW5kYXIvdjMvY2FsZW5kYXJzIixuPWUuZnVsbENhbGVuZGFyLGw9bi5hcHBseUFsbDtuLnNvdXJjZU5vcm1hbGl6ZXJzLnB1c2goZnVuY3Rpb24oZSl7dmFyIGEsbz1lLmdvb2dsZUNhbGVuZGFySWQscj1lLnVybDshbyYmciYmKC9eW15cL10rQChbXlwvXC5dK1wuKSooZ29vZ2xlfGdvb2dsZW1haWx8Z21haWwpXC5jb20kLy50ZXN0KHIpP289cjooKGE9L15odHRwczpcL1wvd3d3Lmdvb2dsZWFwaXMuY29tXC9jYWxlbmRhclwvdjNcL2NhbGVuZGFyc1wvKFteXC9dKikvLmV4ZWMocikpfHwoYT0vXmh0dHBzPzpcL1wvd3d3Lmdvb2dsZS5jb21cL2NhbGVuZGFyXC9mZWVkc1wvKFteXC9dKikvLmV4ZWMocikpKSYmKG89ZGVjb2RlVVJJQ29tcG9uZW50KGFbMV0pKSxvJiYoZS5nb29nbGVDYWxlbmRhcklkPW8pKSxvJiYobnVsbD09ZS5lZGl0YWJsZSYmKGUuZWRpdGFibGU9ITEpLGUudXJsPW8pfSksbi5zb3VyY2VGZXRjaGVycy5wdXNoKGZ1bmN0aW9uKGUsbyxyLG4pe2lmKGUuZ29vZ2xlQ2FsZW5kYXJJZClyZXR1cm4gYShlLG8scixuLHRoaXMpfSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang-all.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXshZnVuY3Rpb24oKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJhci1tYSIse21vbnRoczoi2YrZhtin2YrYsV/Zgdio2LHYp9mK2LFf2YXYp9ix2LNf2KPYqNix2YrZhF/Zhdin2Ypf2YrZiNmG2YrZiF/ZitmI2YTZitmI2LJf2LrYtNiqX9i02KrZhtio2LFf2KPZg9iq2YjYqNixX9mG2YjZhtio2LFf2K/YrNmG2KjYsSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoi2YrZhtin2YrYsV/Zgdio2LHYp9mK2LFf2YXYp9ix2LNf2KPYqNix2YrZhF/Zhdin2Ypf2YrZiNmG2YrZiF/ZitmI2YTZitmI2LJf2LrYtNiqX9i02KrZhtio2LFf2KPZg9iq2YjYqNixX9mG2YjZhtio2LFf2K/YrNmG2KjYsSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi2KfZhNij2K3Yr1/Yp9mE2KXYqtmG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Itin2K3Yr1/Yp9iq2YbZitmGX9ir2YTYp9ir2KfYoV/Yp9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLYrV/Zhl/Yq1/YsV/Yrl/YrF/YsyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkxUOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW9in2YTZitmI2YUg2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLG5leHREYXk6IlvYutiv2Kcg2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLG5leHRXZWVrOiJkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsbGFzdERheToiW9ij2YXYsyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsbGFzdFdlZWs6ImRkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLZgdmKICVzIixwYXN0OiLZhdmG2LAgJXMiLHM6Itir2YjYp9mGIixtOiLYr9mC2YrZgtipIixtbToiJWQg2K/Zgtin2KbZgiIsaDoi2LPYp9i52KkiLGhoOiIlZCDYs9in2LnYp9iqIixkOiLZitmI2YUiLGRkOiIlZCDYo9mK2KfZhSIsTToi2LTZh9ixIixNTToiJWQg2KPYtNmH2LEiLHk6Itiz2YbYqSIseXk6IiVkINiz2YbZiNin2KoifSx3ZWVrOntkb3c6Nixkb3k6MTJ9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImFyLW1hIiwiYXIiLHtjbG9zZVRleHQ6Itil2LrZhNin2YIiLHByZXZUZXh0OiImI3gzQzvYp9mE2LPYp9io2YIiLG5leHRUZXh0OiLYp9mE2KrYp9mE2YomI3gzRTsiLGN1cnJlbnRUZXh0OiLYp9mE2YrZiNmFIixtb250aE5hbWVzOlsi2YPYp9mG2YjZhiDYp9mE2KvYp9mG2YoiLCLYtNio2KfYtyIsItii2LDYp9ixIiwi2YbZitiz2KfZhiIsItmF2KfZitmIIiwi2K3YstmK2LHYp9mGIiwi2KrZhdmI2LIiLCLYotioIiwi2KPZitmE2YjZhCIsItiq2LTYsdmK2YYg2KfZhNij2YjZhCIsItiq2LTYsdmK2YYg2KfZhNir2KfZhtmKIiwi2YPYp9mG2YjZhiDYp9mE2KPZiNmEIl0sbW9udGhOYW1lc1Nob3J0OlsiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiMTAiLCIxMSIsIjEyIl0sZGF5TmFtZXM6WyLYp9mE2KPYrdivIiwi2KfZhNin2KvZhtmK2YYiLCLYp9mE2KvZhNin2KvYp9ihIiwi2KfZhNij2LHYqNi52KfYoSIsItin2YTYrtmF2YrYsyIsItin2YTYrNmF2LnYqSIsItin2YTYs9io2KoiXSxkYXlOYW1lc1Nob3J0Olsi2KfZhNij2K3YryIsItin2YTYp9ir2YbZitmGIiwi2KfZhNir2YTYp9ir2KfYoSIsItin2YTYo9ix2KjYudin2KEiLCLYp9mE2K7ZhdmK2LMiLCLYp9mE2KzZhdi52KkiLCLYp9mE2LPYqNiqIl0sZGF5TmFtZXNNaW46WyLYrSIsItmGIiwi2KsiLCLYsSIsItiuIiwi2KwiLCLYsyJdLHdlZWtIZWFkZXI6Itij2LPYqNmI2LkiLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheTo2LGlzUlRMOiEwLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiYXItbWEiLHtidXR0b25UZXh0Onttb250aDoi2LTZh9ixIix3ZWVrOiLYo9iz2KjZiNi5IixkYXk6ItmK2YjZhSIsbGlzdDoi2KPYrNmG2K/YqSJ9LGFsbERheVRleHQ6Itin2YTZitmI2YUg2YPZhNmHIixldmVudExpbWl0VGV4dDoi2KPYrtix2YkifSl9KCksZnVuY3Rpb24oKXt2YXIgYz17MToi2aEiLDI6ItmiIiwzOiLZoyIsNDoi2aQiLDU6ItmlIiw2OiLZpiIsNzoi2aciLDg6ItmoIiw5OiLZqSIsMDoi2aAifSxkPXsi2aEiOiIxIiwi2aIiOiIyIiwi2aMiOiIzIiwi2aQiOiI0Iiwi2aUiOiI1Iiwi2aYiOiI2Iiwi2aciOiI3Iiwi2agiOiI4Iiwi2akiOiI5Iiwi2aAiOiIwIn07KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwiYXItc2EiLHttb250aHM6ItmK2YbYp9mK2LFf2YHYqNix2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf2YXYp9mK2Yhf2YrZiNmG2YrZiF/ZitmI2YTZitmIX9ij2LrYs9i32LNf2LPYqNiq2YXYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YHZhdio2LFf2K/Zitiz2YXYqNixIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiLZitmG2KfZitixX9mB2KjYsdin2YrYsV/Zhdin2LHYs1/Yo9io2LHZitmEX9mF2KfZitmIX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiF/Yo9i62LPYt9izX9iz2KjYqtmF2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmB2YXYqNixX9iv2YrYs9mF2KjYsSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Itij2K3Yr1/Ypdir2YbZitmGX9ir2YTYp9ir2KfYoV/Yo9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLYrV/Zhl/Yq1/YsV/Yrl/YrF/YsyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgTFQifSxtZXJpZGllbVBhcnNlOi/YtXzZhS8saXNQTTpmdW5jdGlvbihhKXtyZXR1cm4i2YUiPT09YX0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAxMj5hPyLYtSI6ItmFIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvYp9mE2YrZiNmFINi52YTZiSDYp9mE2LPYp9i52KldIExUIixuZXh0RGF5OiJb2LrYr9inINi52YTZiSDYp9mE2LPYp9i52KldIExUIixuZXh0V2VlazoiZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLGxhc3REYXk6IlvYo9mF2LMg2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLGxhc3RXZWVrOiJkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi2YHZiiAlcyIscGFzdDoi2YXZhtiwICVzIixzOiLYq9mI2KfZhiIsbToi2K/ZgtmK2YLYqSIsbW06IiVkINiv2YLYp9im2YIiLGg6Itiz2KfYudipIixoaDoiJWQg2LPYp9i52KfYqiIsZDoi2YrZiNmFIixkZDoiJWQg2KPZitin2YUiLE06Iti02YfYsSIsTU06IiVkINij2LTZh9ixIix5OiLYs9mG2KkiLHl5OiIlZCDYs9mG2YjYp9iqIn0scHJlcGFyc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvW9mh2aLZo9mk2aXZptmn2ajZqdmgXS9nLGZ1bmN0aW9uKGEpe3JldHVybiBkW2FdfSkucmVwbGFjZSgv2IwvZywiLCIpfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oYSl7cmV0dXJuIGNbYV19KS5yZXBsYWNlKC8sL2csItiMIil9LHdlZWs6e2Rvdzo2LGRveToxMn19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiYXItc2EiLCJhciIse2Nsb3NlVGV4dDoi2KXYutmE2KfZgiIscHJldlRleHQ6IiYjeDNDO9in2YTYs9in2KjZgiIsbmV4dFRleHQ6Itin2YTYqtin2YTZiiYjeDNFOyIsY3VycmVudFRleHQ6Itin2YTZitmI2YUiLG1vbnRoTmFtZXM6WyLZg9in2YbZiNmGINin2YTYq9in2YbZiiIsIti02KjYp9i3Iiwi2KLYsNin2LEiLCLZhtmK2LPYp9mGIiwi2YXYp9mK2YgiLCLYrdiy2YrYsdin2YYiLCLYqtmF2YjYsiIsItii2KgiLCLYo9mK2YTZiNmEIiwi2KrYtNix2YrZhiDYp9mE2KPZiNmEIiwi2KrYtNix2YrZhiDYp9mE2KvYp9mG2YoiLCLZg9in2YbZiNmGINin2YTYo9mI2YQiXSxtb250aE5hbWVzU2hvcnQ6WyIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiXSxkYXlOYW1lczpbItin2YTYo9it2K8iLCLYp9mE2KfYq9mG2YrZhiIsItin2YTYq9mE2KfYq9in2KEiLCLYp9mE2KPYsdio2LnYp9ihIiwi2KfZhNiu2YXZitizIiwi2KfZhNis2YXYudipIiwi2KfZhNiz2KjYqiJdLGRheU5hbWVzU2hvcnQ6WyLYp9mE2KPYrdivIiwi2KfZhNin2KvZhtmK2YYiLCLYp9mE2KvZhNin2KvYp9ihIiwi2KfZhNij2LHYqNi52KfYoSIsItin2YTYrtmF2YrYsyIsItin2YTYrNmF2LnYqSIsItin2YTYs9io2KoiXSxkYXlOYW1lc01pbjpbItitIiwi2YYiLCLYqyIsItixIiwi2K4iLCLYrCIsItizIl0sd2Vla0hlYWRlcjoi2KPYs9io2YjYuSIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjYsaXNSVEw6ITAsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJhci1zYSIse2J1dHRvblRleHQ6e21vbnRoOiLYtNmH2LEiLHdlZWs6Itij2LPYqNmI2LkiLGRheToi2YrZiNmFIixsaXN0OiLYo9is2YbYr9ipIn0sYWxsRGF5VGV4dDoi2KfZhNmK2YjZhSDZg9mE2YciLGV2ZW50TGltaXRUZXh0OiLYo9iu2LHZiSJ9KX0oKSxmdW5jdGlvbigpeyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImFyLXRuIix7bW9udGhzOiLYrNin2YbZgdmKX9mB2YrZgdix2Ypf2YXYp9ix2LNf2KPZgdix2YrZhF/Zhdin2Ypf2KzZiNin2YZf2KzZiNmK2YTZitipX9ij2YjYql/Ys9io2KrZhdio2LFf2KPZg9iq2YjYqNixX9mG2YjZgdmF2KjYsV/Yr9mK2LPZhdio2LEiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Itis2KfZhtmB2Ypf2YHZitmB2LHZil/Zhdin2LHYs1/Yo9mB2LHZitmEX9mF2KfZil/YrNmI2KfZhl/YrNmI2YrZhNmK2Klf2KPZiNiqX9iz2KjYqtmF2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmB2YXYqNixX9iv2YrYs9mF2KjYsSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Itij2K3Yr1/Ypdir2YbZitmGX9ir2YTYp9ir2KfYoV/Yo9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLYrV/Zhl/Yq1/YsV/Yrl/YrF/YsyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkxUOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW9in2YTZitmI2YUg2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLG5leHREYXk6IlvYutiv2Kcg2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLG5leHRXZWVrOiJkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsbGFzdERheToiW9ij2YXYsyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsbGFzdFdlZWs6ImRkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLZgdmKICVzIixwYXN0OiLZhdmG2LAgJXMiLHM6Itir2YjYp9mGIixtOiLYr9mC2YrZgtipIixtbToiJWQg2K/Zgtin2KbZgiIsaDoi2LPYp9i52KkiLGhoOiIlZCDYs9in2LnYp9iqIixkOiLZitmI2YUiLGRkOiIlZCDYo9mK2KfZhSIsTToi2LTZh9ixIixNTToiJWQg2KPYtNmH2LEiLHk6Itiz2YbYqSIseXk6IiVkINiz2YbZiNin2KoifSx3ZWVrOntkb3c6MSxkb3k6NH19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiYXItdG4iLCJhciIse2Nsb3NlVGV4dDoi2KXYutmE2KfZgiIscHJldlRleHQ6IiYjeDNDO9in2YTYs9in2KjZgiIsbmV4dFRleHQ6Itin2YTYqtin2YTZiiYjeDNFOyIsY3VycmVudFRleHQ6Itin2YTZitmI2YUiLG1vbnRoTmFtZXM6WyLZg9in2YbZiNmGINin2YTYq9in2YbZiiIsIti02KjYp9i3Iiwi2KLYsNin2LEiLCLZhtmK2LPYp9mGIiwi2YXYp9mK2YgiLCLYrdiy2YrYsdin2YYiLCLYqtmF2YjYsiIsItii2KgiLCLYo9mK2YTZiNmEIiwi2KrYtNix2YrZhiDYp9mE2KPZiNmEIiwi2KrYtNix2YrZhiDYp9mE2KvYp9mG2YoiLCLZg9in2YbZiNmGINin2YTYo9mI2YQiXSxtb250aE5hbWVzU2hvcnQ6WyIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiXSxkYXlOYW1lczpbItin2YTYo9it2K8iLCLYp9mE2KfYq9mG2YrZhiIsItin2YTYq9mE2KfYq9in2KEiLCLYp9mE2KPYsdio2LnYp9ihIiwi2KfZhNiu2YXZitizIiwi2KfZhNis2YXYudipIiwi2KfZhNiz2KjYqiJdLGRheU5hbWVzU2hvcnQ6WyLYp9mE2KPYrdivIiwi2KfZhNin2KvZhtmK2YYiLCLYp9mE2KvZhNin2KvYp9ihIiwi2KfZhNij2LHYqNi52KfYoSIsItin2YTYrtmF2YrYsyIsItin2YTYrNmF2LnYqSIsItin2YTYs9io2KoiXSxkYXlOYW1lc01pbjpbItitIiwi2YYiLCLYqyIsItixIiwi2K4iLCLYrCIsItizIl0sd2Vla0hlYWRlcjoi2KPYs9io2YjYuSIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjYsaXNSVEw6ITAsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJhci10biIse2J1dHRvblRleHQ6e21vbnRoOiLYtNmH2LEiLHdlZWs6Itij2LPYqNmI2LkiLGRheToi2YrZiNmFIixsaXN0OiLYo9is2YbYr9ipIn0sYWxsRGF5VGV4dDoi2KfZhNmK2YjZhSDZg9mE2YciLGV2ZW50TGltaXRUZXh0OiLYo9iu2LHZiSJ9KX0oKSxmdW5jdGlvbigpe3ZhciBjPXsxOiLZoSIsMjoi2aIiLDM6ItmjIiw0OiLZpCIsNToi2aUiLDY6ItmmIiw3OiLZpyIsODoi2agiLDk6ItmpIiwwOiLZoCJ9LGQ9eyLZoSI6IjEiLCLZoiI6IjIiLCLZoyI6IjMiLCLZpCI6IjQiLCLZpSI6IjUiLCLZpiI6IjYiLCLZpyI6IjciLCLZqCI6IjgiLCLZqSI6IjkiLCLZoCI6IjAifSxlPWZ1bmN0aW9uKGEpe3JldHVybiAwPT09YT8wOjE9PT1hPzE6Mj09PWE/MjphJTEwMD49MyYmMTA+PWElMTAwPzM6YSUxMDA+PTExPzQ6NX0sZj17czpbItij2YLZhCDZhdmGINir2KfZhtmK2KkiLCLYq9in2YbZitipINmI2KfYrdiv2KkiLFsi2KvYp9mG2YrYqtin2YYiLCLYq9in2YbZitiq2YrZhiJdLCIlZCDYq9mI2KfZhiIsIiVkINir2KfZhtmK2KkiLCIlZCDYq9in2YbZitipIl0sbTpbItij2YLZhCDZhdmGINiv2YLZitmC2KkiLCLYr9mC2YrZgtipINmI2KfYrdiv2KkiLFsi2K/ZgtmK2YLYqtin2YYiLCLYr9mC2YrZgtiq2YrZhiJdLCIlZCDYr9mC2KfYptmCIiwiJWQg2K/ZgtmK2YLYqSIsIiVkINiv2YLZitmC2KkiXSxoOlsi2KPZgtmEINmF2YYg2LPYp9i52KkiLCLYs9in2LnYqSDZiNin2K3Yr9ipIixbItiz2KfYudiq2KfZhiIsItiz2KfYudiq2YrZhiJdLCIlZCDYs9in2LnYp9iqIiwiJWQg2LPYp9i52KkiLCIlZCDYs9in2LnYqSJdLGQ6WyLYo9mC2YQg2YXZhiDZitmI2YUiLCLZitmI2YUg2YjYp9it2K8iLFsi2YrZiNmF2KfZhiIsItmK2YjZhdmK2YYiXSwiJWQg2KPZitin2YUiLCIlZCDZitmI2YXZi9inIiwiJWQg2YrZiNmFIl0sTTpbItij2YLZhCDZhdmGINi02YfYsSIsIti02YfYsSDZiNin2K3YryIsWyLYtNmH2LHYp9mGIiwi2LTZh9ix2YrZhiJdLCIlZCDYo9i02YfYsSIsIiVkINi02YfYsdinIiwiJWQg2LTZh9ixIl0seTpbItij2YLZhCDZhdmGINi52KfZhSIsIti52KfZhSDZiNin2K3YryIsWyLYudin2YXYp9mGIiwi2LnYp9mF2YrZhiJdLCIlZCDYo9i52YjYp9mFIiwiJWQg2LnYp9mF2YvYpyIsIiVkINi52KfZhSJdfSxnPWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiLGMsZCxnKXt2YXIgaD1lKGIpLGk9ZlthXVtlKGIpXTtyZXR1cm4gMj09PWgmJihpPWlbYz8wOjFdKSxpLnJlcGxhY2UoLyVkL2ksYil9fSxoPVsi2YPYp9mG2YjZhiDYp9mE2KvYp9mG2Yog2YrZhtin2YrYsSIsIti02KjYp9i3INmB2KjYsdin2YrYsSIsItii2LDYp9ixINmF2KfYsdizIiwi2YbZitiz2KfZhiDYo9io2LHZitmEIiwi2KPZitin2LEg2YXYp9mK2YgiLCLYrdiy2YrYsdin2YYg2YrZiNmG2YrZiCIsItiq2YXZiNiyINmK2YjZhNmK2YgiLCLYotioINij2LrYs9i32LMiLCLYo9mK2YTZiNmEINiz2KjYqtmF2KjYsSIsItiq2LTYsdmK2YYg2KfZhNij2YjZhCDYo9mD2KrZiNio2LEiLCLYqti02LHZitmGINin2YTYq9in2YbZiiDZhtmI2YHZhdio2LEiLCLZg9in2YbZiNmGINin2YTYo9mI2YQg2K/Zitiz2YXYqNixIl07KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwiYXIiLHttb250aHM6aCxtb250aHNTaG9ydDpoLHdlZWtkYXlzOiLYp9mE2KPYrdivX9in2YTYpdir2YbZitmGX9in2YTYq9mE2KfYq9in2KFf2KfZhNij2LHYqNi52KfYoV/Yp9mE2K7ZhdmK2LNf2KfZhNis2YXYudipX9in2YTYs9io2KoiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi2KPYrdivX9il2KvZhtmK2YZf2KvZhNin2KvYp9ihX9ij2LHYqNi52KfYoV/YrtmF2YrYs1/YrNmF2LnYqV/Ys9io2KoiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ItitX9mGX9irX9ixX9iuX9isX9izIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBMVCIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBMVCJ9LG1lcmlkaWVtUGFyc2U6L9i1fNmFLyxpc1BNOmZ1bmN0aW9uKGEpe3JldHVybiLZhSI9PT1hfSxtZXJpZGllbTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIDEyPmE/Iti1Ijoi2YUifSxjYWxlbmRhcjp7c2FtZURheToiW9in2YTZitmI2YUg2LnZhtivINin2YTYs9in2LnYqV0gTFQiLG5leHREYXk6IlvYutiv2YvYpyDYudmG2K8g2KfZhNiz2KfYudipXSBMVCIsbmV4dFdlZWs6ImRkZGQgW9i52YbYryDYp9mE2LPYp9i52KldIExUIixsYXN0RGF5OiJb2KPZhdizINi52YbYryDYp9mE2LPYp9i52KldIExUIixsYXN0V2VlazoiZGRkZCBb2LnZhtivINin2YTYs9in2LnYqV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Itio2LnYryAlcyIscGFzdDoi2YXZhtiwICVzIixzOmcoInMiKSxtOmcoIm0iKSxtbTpnKCJtIiksaDpnKCJoIiksaGg6ZygiaCIpLGQ6ZygiZCIpLGRkOmcoImQiKSxNOmcoIk0iKSxNTTpnKCJNIikseTpnKCJ5IikseXk6ZygieSIpfSxwcmVwYXJzZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC9b2aHZotmj2aTZpdmm2afZqNmp2aBdL2csZnVuY3Rpb24oYSl7cmV0dXJuIGRbYV19KS5yZXBsYWNlKC/YjC9nLCIsIil9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXGQvZyxmdW5jdGlvbihhKXtyZXR1cm4gY1thXX0pLnJlcGxhY2UoLywvZywi2IwiKX0sd2Vlazp7ZG93OjYsZG95OjEyfX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJhciIsImFyIix7Y2xvc2VUZXh0OiLYpdi62YTYp9mCIixwcmV2VGV4dDoiJiN4M0M72KfZhNiz2KfYqNmCIixuZXh0VGV4dDoi2KfZhNiq2KfZhNmKJiN4M0U7IixjdXJyZW50VGV4dDoi2KfZhNmK2YjZhSIsbW9udGhOYW1lczpbItmD2KfZhtmI2YYg2KfZhNir2KfZhtmKIiwi2LTYqNin2LciLCLYotiw2KfYsSIsItmG2YrYs9in2YYiLCLZhdin2YrZiCIsItit2LLZitix2KfZhiIsItiq2YXZiNiyIiwi2KLYqCIsItij2YrZhNmI2YQiLCLYqti02LHZitmGINin2YTYo9mI2YQiLCLYqti02LHZitmGINin2YTYq9in2YbZiiIsItmD2KfZhtmI2YYg2KfZhNij2YjZhCJdLG1vbnRoTmFtZXNTaG9ydDpbIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEwIiwiMTEiLCIxMiJdLGRheU5hbWVzOlsi2KfZhNij2K3YryIsItin2YTYp9ir2YbZitmGIiwi2KfZhNir2YTYp9ir2KfYoSIsItin2YTYo9ix2KjYudin2KEiLCLYp9mE2K7ZhdmK2LMiLCLYp9mE2KzZhdi52KkiLCLYp9mE2LPYqNiqIl0sZGF5TmFtZXNTaG9ydDpbItin2YTYo9it2K8iLCLYp9mE2KfYq9mG2YrZhiIsItin2YTYq9mE2KfYq9in2KEiLCLYp9mE2KPYsdio2LnYp9ihIiwi2KfZhNiu2YXZitizIiwi2KfZhNis2YXYudipIiwi2KfZhNiz2KjYqiJdLGRheU5hbWVzTWluOlsi2K0iLCLZhiIsItirIiwi2LEiLCLYriIsItisIiwi2LMiXSx3ZWVrSGVhZGVyOiLYo9iz2KjZiNi5IixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6Nixpc1JUTDohMCxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImFyIix7YnV0dG9uVGV4dDp7bW9udGg6Iti02YfYsSIsd2Vlazoi2KPYs9io2YjYuSIsZGF5OiLZitmI2YUiLGxpc3Q6Itij2KzZhtiv2KkifSxhbGxEYXlUZXh0OiLYp9mE2YrZiNmFINmD2YTZhyIsZXZlbnRMaW1pdFRleHQ6Itij2K7YsdmJIn0pfSgpLGZ1bmN0aW9uKCl7KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwiYmciLHttb250aHM6ItGP0L3Rg9Cw0YDQuF/RhNC10LLRgNGD0LDRgNC4X9C80LDRgNGCX9Cw0L/RgNC40Ltf0LzQsNC5X9GO0L3QuF/RjtC70Lhf0LDQstCz0YPRgdGCX9GB0LXQv9GC0LXQvNCy0YDQuF/QvtC60YLQvtC80LLRgNC4X9C90L7QtdC80LLRgNC4X9C00LXQutC10LzQstGA0LgiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ItGP0L3RgF/RhNC10LJf0LzQsNGAX9Cw0L/RgF/QvNCw0Llf0Y7QvdC4X9GO0LvQuF/QsNCy0LNf0YHQtdC/X9C+0LrRgl/QvdC+0LVf0LTQtdC6Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiLQvdC10LTQtdC70Y9f0L/QvtC90LXQtNC10LvQvdC40Lpf0LLRgtC+0YDQvdC40Lpf0YHRgNGP0LTQsF/Rh9C10YLQstGK0YDRgtGK0Lpf0L/QtdGC0YrQul/RgdGK0LHQvtGC0LAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi0L3QtdC0X9C/0L7QvV/QstGC0L5f0YHRgNGPX9GH0LXRgl/Qv9C10YJf0YHRitCxIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLQvdC0X9C/0L1f0LLRgl/RgdGAX9GH0YJf0L/Rgl/RgdCxIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJMVDpzcyIsTDoiRC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvQlNC90LXRgSDQsl0gTFQiLG5leHREYXk6IlvQo9GC0YDQtSDQsl0gTFQiLG5leHRXZWVrOiJkZGRkIFvQsl0gTFQiLGxhc3REYXk6IlvQktGH0LXRgNCwINCyXSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOmNhc2UgMzpjYXNlIDY6cmV0dXJuIlvQkiDQuNC30LzQuNC90LDQu9Cw0YLQsF0gZGRkZCBb0LJdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIlvQkiDQuNC30LzQuNC90LDQu9C40Y9dIGRkZGQgW9CyXSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLRgdC70LXQtCAlcyIscGFzdDoi0L/RgNC10LTQuCAlcyIsczoi0L3Rj9C60L7Qu9C60L4g0YHQtdC60YPQvdC00LgiLG06ItC80LjQvdGD0YLQsCIsbW06IiVkINC80LjQvdGD0YLQuCIsaDoi0YfQsNGBIixoaDoiJWQg0YfQsNGB0LAiLGQ6ItC00LXQvSIsZGQ6IiVkINC00L3QuCIsTToi0LzQtdGB0LXRhiIsTU06IiVkINC80LXRgdC10YbQsCIseToi0LPQvtC00LjQvdCwIix5eToiJWQg0LPQvtC00LjQvdC4In0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9LSjQtdCyfNC10L180YLQuHzQstC4fNGA0Lh80LzQuCkvLG9yZGluYWw6ZnVuY3Rpb24oYSl7dmFyIGI9YSUxMCxjPWElMTAwO3JldHVybiAwPT09YT9hKyIt0LXQsiI6MD09PWM/YSsiLdC10L0iOmM+MTAmJjIwPmM/YSsiLdGC0LgiOjE9PT1iP2ErIi3QstC4IjoyPT09Yj9hKyIt0YDQuCI6Nz09PWJ8fDg9PT1iP2ErIi3QvNC4IjphKyIt0YLQuCJ9LHdlZWs6e2RvdzoxLGRveTo3fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJiZyIsImJnIix7Y2xvc2VUZXh0OiLQt9Cw0YLQstC+0YDQuCIscHJldlRleHQ6IiYjeDNDO9C90LDQt9Cw0LQiLG5leHRUZXh0OiLQvdCw0L/RgNC10LQmI3gzRTsiLG5leHRCaWdUZXh0OiImI3gzRTsmI3gzRTsiLGN1cnJlbnRUZXh0OiLQtNC90LXRgSIsbW9udGhOYW1lczpbItCv0L3Rg9Cw0YDQuCIsItCk0LXQstGA0YPQsNGA0LgiLCLQnNCw0YDRgiIsItCQ0L/RgNC40LsiLCLQnNCw0LkiLCLQrtC90LgiLCLQrtC70LgiLCLQkNCy0LPRg9GB0YIiLCLQodC10L/RgtC10LzQstGA0LgiLCLQntC60YLQvtC80LLRgNC4Iiwi0J3QvtC10LzQstGA0LgiLCLQlNC10LrQtdC80LLRgNC4Il0sbW9udGhOYW1lc1Nob3J0Olsi0K/QvdGDIiwi0KTQtdCyIiwi0JzQsNGAIiwi0JDQv9GAIiwi0JzQsNC5Iiwi0K7QvdC4Iiwi0K7Qu9C4Iiwi0JDQstCzIiwi0KHQtdC/Iiwi0J7QutGCIiwi0J3QvtCyIiwi0JTQtdC6Il0sZGF5TmFtZXM6WyLQndC10LTQtdC70Y8iLCLQn9C+0L3QtdC00LXQu9C90LjQuiIsItCS0YLQvtGA0L3QuNC6Iiwi0KHRgNGP0LTQsCIsItCn0LXRgtCy0YrRgNGC0YrQuiIsItCf0LXRgtGK0LoiLCLQodGK0LHQvtGC0LAiXSxkYXlOYW1lc1Nob3J0Olsi0J3QtdC0Iiwi0J/QvtC9Iiwi0JLRgtC+Iiwi0KHRgNGPIiwi0KfQtdGCIiwi0J/QtdGCIiwi0KHRitCxIl0sZGF5TmFtZXNNaW46WyLQndC1Iiwi0J/QviIsItCS0YIiLCLQodGAIiwi0KfQtSIsItCf0LUiLCLQodGKIl0sd2Vla0hlYWRlcjoiV2siLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiYmciLHtidXR0b25UZXh0Onttb250aDoi0JzQtdGB0LXRhiIsd2Vlazoi0KHQtdC00LzQuNGG0LAiLGRheToi0JTQtdC9IixsaXN0OiLQk9GA0LDRhNC40LoifSxhbGxEYXlUZXh0OiLQptGP0Lsg0LTQtdC9IixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4iK9C+0YnQtSAiK2F9fSl9KCksZnVuY3Rpb24oKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJjYSIse21vbnRoczoiZ2VuZXJfZmVicmVyX21hcsOnX2FicmlsX21haWdfanVueV9qdWxpb2xfYWdvc3Rfc2V0ZW1icmVfb2N0dWJyZV9ub3ZlbWJyZV9kZXNlbWJyZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiZ2VuLl9mZWJyLl9tYXIuX2Fici5fbWFpLl9qdW4uX2p1bC5fYWcuX3NldC5fb2N0Ll9ub3YuX2Rlcy4iLnNwbGl0KCJfIiksd2Vla2RheXM6ImRpdW1lbmdlX2RpbGx1bnNfZGltYXJ0c19kaW1lY3Jlc19kaWpvdXNfZGl2ZW5kcmVzX2Rpc3NhYnRlIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRnLl9kbC5fZHQuX2RjLl9kai5fZHYuX2RzLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiRGdfRGxfRHRfRGNfRGpfRHZfRHMiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6IkxUOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheTpmdW5jdGlvbigpe3JldHVybiJbYXZ1aSBhICIrKDEhPT10aGlzLmhvdXJzKCk/ImxlcyI6ImxhIikrIl0gTFQifSxuZXh0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltkZW3DoCBhICIrKDEhPT10aGlzLmhvdXJzKCk/ImxlcyI6ImxhIikrIl0gTFQifSxuZXh0V2VlazpmdW5jdGlvbigpe3JldHVybiJkZGRkIFthICIrKDEhPT10aGlzLmhvdXJzKCk/ImxlcyI6ImxhIikrIl0gTFQifSxsYXN0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIlthaGlyIGEgIisoMSE9PXRoaXMuaG91cnMoKT8ibGVzIjoibGEiKSsiXSBMVCJ9LGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIltlbF0gZGRkZCBbcGFzc2F0IGEgIisoMSE9PXRoaXMuaG91cnMoKT8ibGVzIjoibGEiKSsiXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImVuICVzIixwYXN0OiJmYSAlcyIsczoidW5zIHNlZ29ucyIsbToidW4gbWludXQiLG1tOiIlZCBtaW51dHMiLGg6InVuYSBob3JhIixoaDoiJWQgaG9yZXMiLGQ6InVuIGRpYSIsZGQ6IiVkIGRpZXMiLE06InVuIG1lcyIsTU06IiVkIG1lc29zIix5OiJ1biBhbnkiLHl5OiIlZCBhbnlzIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHJ8bnx0fMOofGEpLyxvcmRpbmFsOmZ1bmN0aW9uKGEsYil7dmFyIGM9MT09PWE/InIiOjI9PT1hPyJuIjozPT09YT8iciI6ND09PWE/InQiOiLDqCI7cmV0dXJuKCJ3Ij09PWJ8fCJXIj09PWIpJiYoYz0iYSIpLGErY30sd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImNhIiwiY2EiLHtjbG9zZVRleHQ6IlRhbmNhIixwcmV2VGV4dDoiQW50ZXJpb3IiLG5leHRUZXh0OiJTZWfDvGVudCIsY3VycmVudFRleHQ6IkF2dWkiLG1vbnRoTmFtZXM6WyJnZW5lciIsImZlYnJlciIsIm1hcsOnIiwiYWJyaWwiLCJtYWlnIiwianVueSIsImp1bGlvbCIsImFnb3N0Iiwic2V0ZW1icmUiLCJvY3R1YnJlIiwibm92ZW1icmUiLCJkZXNlbWJyZSJdLG1vbnRoTmFtZXNTaG9ydDpbImdlbiIsImZlYiIsIm1hcsOnIiwiYWJyIiwibWFpZyIsImp1bnkiLCJqdWwiLCJhZyIsInNldCIsIm9jdCIsIm5vdiIsImRlcyJdLGRheU5hbWVzOlsiZGl1bWVuZ2UiLCJkaWxsdW5zIiwiZGltYXJ0cyIsImRpbWVjcmVzIiwiZGlqb3VzIiwiZGl2ZW5kcmVzIiwiZGlzc2FidGUiXSxkYXlOYW1lc1Nob3J0OlsiZGciLCJkbCIsImR0IiwiZGMiLCJkaiIsImR2IiwiZHMiXSxkYXlOYW1lc01pbjpbImRnIiwiZGwiLCJkdCIsImRjIiwiZGoiLCJkdiIsImRzIl0sd2Vla0hlYWRlcjoiU2V0IixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImNhIix7YnV0dG9uVGV4dDp7bW9udGg6Ik1lcyIsd2VlazoiU2V0bWFuYSIsZGF5OiJEaWEiLGxpc3Q6IkFnZW5kYSJ9LGFsbERheVRleHQ6IlRvdCBlbCBkaWEiLGV2ZW50TGltaXRUZXh0OiJtw6lzIn0pfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhhKXtyZXR1cm4gYT4xJiY1PmEmJjEhPT1+fihhLzEwKX1mdW5jdGlvbiBkKGEsYixkLGUpe3ZhciBmPWErIiAiO3N3aXRjaChkKXtjYXNlInMiOnJldHVybiBifHxlPyJww6FyIHNla3VuZCI6InDDoXIgc2VrdW5kYW1pIjtjYXNlIm0iOnJldHVybiBiPyJtaW51dGEiOmU/Im1pbnV0dSI6Im1pbnV0b3UiO2Nhc2UibW0iOnJldHVybiBifHxlP2YrKGMoYSk/Im1pbnV0eSI6Im1pbnV0Iik6ZisibWludXRhbWkiO2Nhc2UiaCI6cmV0dXJuIGI/ImhvZGluYSI6ZT8iaG9kaW51IjoiaG9kaW5vdSI7Y2FzZSJoaCI6cmV0dXJuIGJ8fGU/ZisoYyhhKT8iaG9kaW55IjoiaG9kaW4iKTpmKyJob2RpbmFtaSI7Y2FzZSJkIjpyZXR1cm4gYnx8ZT8iZGVuIjoiZG5lbSI7Y2FzZSJkZCI6cmV0dXJuIGJ8fGU/ZisoYyhhKT8iZG55IjoiZG7DrSIpOmYrImRueSI7Y2FzZSJNIjpyZXR1cm4gYnx8ZT8ibcSbc8OtYyI6Im3Em3PDrWNlbSI7Y2FzZSJNTSI6cmV0dXJuIGJ8fGU/ZisoYyhhKT8ibcSbc8OtY2UiOiJtxJtzw61jxa8iKTpmKyJtxJtzw61jaSI7Y2FzZSJ5IjpyZXR1cm4gYnx8ZT8icm9rIjoicm9rZW0iO2Nhc2UieXkiOnJldHVybiBifHxlP2YrKGMoYSk/InJva3kiOiJsZXQiKTpmKyJsZXR5In19dmFyIGU9ImxlZGVuX8O6bm9yX2LFmWV6ZW5fZHViZW5fa3bEm3Rlbl/EjWVydmVuX8SNZXJ2ZW5lY19zcnBlbl96w6HFmcOtX8WZw61qZW5fbGlzdG9wYWRfcHJvc2luZWMiLnNwbGl0KCJfIiksZj0ibGVkX8O6bm9fYsWZZV9kdWJfa3bEm1/EjXZuX8SNdmNfc3JwX3rDocWZX8WZw61qX2xpc19wcm8iLnNwbGl0KCJfIik7KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwiY3MiLHttb250aHM6ZSxtb250aHNTaG9ydDpmLG1vbnRoc1BhcnNlOmZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXTtmb3IoYz0wOzEyPmM7YysrKWRbY109bmV3IFJlZ0V4cCgiXiIrYVtjXSsiJHxeIitiW2NdKyIkIiwiaSIpO3JldHVybiBkfShlLGYpLHdlZWtkYXlzOiJuZWTEm2xlX3BvbmTEm2zDrV/DunRlcsO9X3N0xZllZGFfxI10dnJ0ZWtfcMOhdGVrX3NvYm90YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJuZV9wb1/DunRfc3RfxI10X3DDoV9zbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoibmVfcG9fw7p0X3N0X8SNdF9ww6Ffc28iLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6IkxUOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBMVCIsTExMTDoiZGRkZCBELiBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW2RuZXMgdl0gTFQiLG5leHREYXk6Ilt6w610cmEgdl0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW3YgbmVkxJtsaSB2XSBMVCI7Y2FzZSAxOmNhc2UgMjpyZXR1cm4iW3ZdIGRkZGQgW3ZdIExUIjtjYXNlIDM6cmV0dXJuIlt2ZSBzdMWZZWR1IHZdIExUIjtjYXNlIDQ6cmV0dXJuIlt2ZSDEjXR2cnRlayB2XSBMVCI7Y2FzZSA1OnJldHVybiJbdiBww6F0ZWsgdl0gTFQiO2Nhc2UgNjpyZXR1cm4iW3Ygc29ib3R1IHZdIExUIn19LGxhc3REYXk6Ilt2xI1lcmEgdl0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW21pbnVsb3UgbmVkxJtsaSB2XSBMVCI7Y2FzZSAxOmNhc2UgMjpyZXR1cm4iW21pbnVsw6ldIGRkZGQgW3ZdIExUIjtjYXNlIDM6cmV0dXJuIlttaW51bG91IHN0xZllZHUgdl0gTFQiO2Nhc2UgNDpjYXNlIDU6cmV0dXJuIlttaW51bMO9XSBkZGRkIFt2XSBMVCI7Y2FzZSA2OnJldHVybiJbbWludWxvdSBzb2JvdHUgdl0gTFQifX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiemEgJXMiLHBhc3Q6InDFmWVkICVzIixzOmQsbTpkLG1tOmQsaDpkLGhoOmQsZDpkLGRkOmQsTTpkLE1NOmQseTpkLHl5OmR9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJjcyIsImNzIix7Y2xvc2VUZXh0OiJaYXbFmcOtdCIscHJldlRleHQ6IiYjeDNDO0TFmcOtdmUiLG5leHRUZXh0OiJQb3pkxJtqaSYjeDNFOyIsY3VycmVudFRleHQ6Ik55bsOtIixtb250aE5hbWVzOlsibGVkZW4iLCLDum5vciIsImLFmWV6ZW4iLCJkdWJlbiIsImt2xJt0ZW4iLCLEjWVydmVuIiwixI1lcnZlbmVjIiwic3JwZW4iLCJ6w6HFmcOtIiwixZnDrWplbiIsImxpc3RvcGFkIiwicHJvc2luZWMiXSxtb250aE5hbWVzU2hvcnQ6WyJsZWQiLCLDum5vIiwiYsWZZSIsImR1YiIsImt2xJsiLCLEjWVyIiwixI12YyIsInNycCIsInrDocWZIiwixZnDrWoiLCJsaXMiLCJwcm8iXSxkYXlOYW1lczpbIm5lZMSbbGUiLCJwb25kxJtsw60iLCLDunRlcsO9Iiwic3TFmWVkYSIsIsSNdHZydGVrIiwicMOhdGVrIiwic29ib3RhIl0sZGF5TmFtZXNTaG9ydDpbIm5lIiwicG8iLCLDunQiLCJzdCIsIsSNdCIsInDDoSIsInNvIl0sZGF5TmFtZXNNaW46WyJuZSIsInBvIiwiw7p0Iiwic3QiLCLEjXQiLCJww6EiLCJzbyJdLHdlZWtIZWFkZXI6IlTDvWQiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiY3MiLHtidXR0b25UZXh0Onttb250aDoiTcSbc8OtYyIsd2VlazoiVMO9ZGVuIixkYXk6IkRlbiIsbGlzdDoiQWdlbmRhIn0sYWxsRGF5VGV4dDoiQ2Vsw70gZGVuIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4iK2RhbMWhw606ICIrYX19KX0oKSxmdW5jdGlvbigpeyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImRhIix7bW9udGhzOiJqYW51YXJfZmVicnVhcl9tYXJ0c19hcHJpbF9tYWpfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2ZlYl9tYXJfYXByX21hal9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6InPDuG5kYWdfbWFuZGFnX3RpcnNkYWdfb25zZGFnX3RvcnNkYWdfZnJlZGFnX2zDuHJkYWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoic8O4bl9tYW5fdGlyX29uc190b3JfZnJlX2zDuHIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46InPDuF9tYV90aV9vbl90b19mcl9sw7giLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJMVDpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQgW2QuXSBELiBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW0kgZGFnIGtsLl0gTFQiLG5leHREYXk6IltJIG1vcmdlbiBrbC5dIExUIixuZXh0V2VlazoiZGRkZCBba2wuXSBMVCIsbGFzdERheToiW0kgZ8OlciBrbC5dIExUIixsYXN0V2VlazoiW3NpZHN0ZV0gZGRkZCBba2xdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJvbSAlcyIscGFzdDoiJXMgc2lkZW4iLHM6ImbDpSBzZWt1bmRlciIsbToiZXQgbWludXQiLG1tOiIlZCBtaW51dHRlciIsaDoiZW4gdGltZSIsaGg6IiVkIHRpbWVyIixkOiJlbiBkYWciLGRkOiIlZCBkYWdlIixNOiJlbiBtw6VuZWQiLE1NOiIlZCBtw6VuZWRlciIseToiZXQgw6VyIix5eToiJWQgw6VyIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImRhIiwiZGEiLHtjbG9zZVRleHQ6Ikx1ayIscHJldlRleHQ6IiYjeDNDO0ZvcnJpZ2UiLG5leHRUZXh0OiJOw6ZzdGUmI3gzRTsiLGN1cnJlbnRUZXh0OiJJZGFnIixtb250aE5hbWVzOlsiSmFudWFyIiwiRmVicnVhciIsIk1hcnRzIiwiQXByaWwiLCJNYWoiLCJKdW5pIiwiSnVsaSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9rdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWFqIiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2t0IiwiTm92IiwiRGVjIl0sZGF5TmFtZXM6WyJTw7huZGFnIiwiTWFuZGFnIiwiVGlyc2RhZyIsIk9uc2RhZyIsIlRvcnNkYWciLCJGcmVkYWciLCJMw7hyZGFnIl0sZGF5TmFtZXNTaG9ydDpbIlPDuG4iLCJNYW4iLCJUaXIiLCJPbnMiLCJUb3IiLCJGcmUiLCJMw7hyIl0sZGF5TmFtZXNNaW46WyJTw7giLCJNYSIsIlRpIiwiT24iLCJUbyIsIkZyIiwiTMO4Il0sd2Vla0hlYWRlcjoiVWdlIixkYXRlRm9ybWF0OiJkZC1tbS15eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImRhIix7YnV0dG9uVGV4dDp7bW9udGg6Ik3DpW5lZCIsd2VlazoiVWdlIixkYXk6IkRhZyIsbGlzdDoiQWdlbmRhIn0sYWxsRGF5VGV4dDoiSGVsZSBkYWdlbiIsZXZlbnRMaW1pdFRleHQ6ImZsZXJlIn0pfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhhLGIsYyxkKXt2YXIgZT17bTpbImVpbmUgTWludXRlIiwiZWluZXIgTWludXRlIl0saDpbImVpbmUgU3R1bmRlIiwiZWluZXIgU3R1bmRlIl0sZDpbImVpbiBUYWciLCJlaW5lbSBUYWciXSxkZDpbYSsiIFRhZ2UiLGErIiBUYWdlbiJdLE06WyJlaW4gTW9uYXQiLCJlaW5lbSBNb25hdCJdLE1NOlthKyIgTW9uYXRlIixhKyIgTW9uYXRlbiJdLHk6WyJlaW4gSmFociIsImVpbmVtIEphaHIiXSx5eTpbYSsiIEphaHJlIixhKyIgSmFocmVuIl19O3JldHVybiBiP2VbY11bMF06ZVtjXVsxXX0oYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJkZS1hdCIse21vbnRoczoiSsOkbm5lcl9GZWJydWFyX03DpHJ6X0FwcmlsX01haV9KdW5pX0p1bGlfQXVndXN0X1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0RlemVtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKw6RuLl9GZWJyLl9NcnouX0Fwci5fTWFpX0p1bi5fSnVsLl9BdWcuX1NlcHQuX09rdC5fTm92Ll9EZXouIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTb25udGFnX01vbnRhZ19EaWVuc3RhZ19NaXR0d29jaF9Eb25uZXJzdGFnX0ZyZWl0YWdfU2Ftc3RhZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTby5fTW8uX0RpLl9NaS5fRG8uX0ZyLl9TYS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlNvX01vX0RpX01pX0RvX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIExUIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW0hldXRlIHVtXSBMVCBbVWhyXSIsc2FtZUVsc2U6IkwiLG5leHREYXk6IltNb3JnZW4gdW1dIExUIFtVaHJdIixuZXh0V2VlazoiZGRkZCBbdW1dIExUIFtVaHJdIixsYXN0RGF5OiJbR2VzdGVybiB1bV0gTFQgW1Vocl0iLGxhc3RXZWVrOiJbbGV0enRlbl0gZGRkZCBbdW1dIExUIFtVaHJdIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiJ2b3IgJXMiLHM6ImVpbiBwYWFyIFNla3VuZGVuIixtOmMsbW06IiVkIE1pbnV0ZW4iLGg6YyxoaDoiJWQgU3R1bmRlbiIsZDpjLGRkOmMsTTpjLE1NOmMseTpjLHl5OmN9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJkZS1hdCIsImRlIix7Y2xvc2VUZXh0OiJTY2hsaWXDn2VuIixwcmV2VGV4dDoiJiN4M0M7WnVyw7xjayIsbmV4dFRleHQ6IlZvciYjeDNFOyIsY3VycmVudFRleHQ6IkhldXRlIixtb250aE5hbWVzOlsiSmFudWFyIiwiRmVicnVhciIsIk3DpHJ6IiwiQXByaWwiLCJNYWkiLCJKdW5pIiwiSnVsaSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9rdG9iZXIiLCJOb3ZlbWJlciIsIkRlemVtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmViIiwiTcOkciIsIkFwciIsIk1haSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9rdCIsIk5vdiIsIkRleiJdLGRheU5hbWVzOlsiU29ubnRhZyIsIk1vbnRhZyIsIkRpZW5zdGFnIiwiTWl0dHdvY2giLCJEb25uZXJzdGFnIiwiRnJlaXRhZyIsIlNhbXN0YWciXSxkYXlOYW1lc1Nob3J0OlsiU28iLCJNbyIsIkRpIiwiTWkiLCJEbyIsIkZyIiwiU2EiXSxkYXlOYW1lc01pbjpbIlNvIiwiTW8iLCJEaSIsIk1pIiwiRG8iLCJGciIsIlNhIl0sd2Vla0hlYWRlcjoiS1ciLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiZGUtYXQiLHtidXR0b25UZXh0Onttb250aDoiTW9uYXQiLHdlZWs6IldvY2hlIixkYXk6IlRhZyIsbGlzdDoiVGVybWluw7xiZXJzaWNodCJ9LGFsbERheVRleHQ6Ikdhbnp0w6RnaWciLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGEpe3JldHVybiIrIHdlaXRlcmUgIithfX0pfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhhLGIsYyxkKXt2YXIgZT17bTpbImVpbmUgTWludXRlIiwiZWluZXIgTWludXRlIl0saDpbImVpbmUgU3R1bmRlIiwiZWluZXIgU3R1bmRlIl0sZDpbImVpbiBUYWciLCJlaW5lbSBUYWciXSxkZDpbYSsiIFRhZ2UiLGErIiBUYWdlbiJdLE06WyJlaW4gTW9uYXQiLCJlaW5lbSBNb25hdCJdLE1NOlthKyIgTW9uYXRlIixhKyIgTW9uYXRlbiJdLHk6WyJlaW4gSmFociIsImVpbmVtIEphaHIiXSx5eTpbYSsiIEphaHJlIixhKyIgSmFocmVuIl19O3JldHVybiBiP2VbY11bMF06ZVtjXVsxXX0oYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJkZSIse21vbnRoczoiSmFudWFyX0ZlYnJ1YXJfTcOkcnpfQXByaWxfTWFpX0p1bmlfSnVsaV9BdWd1c3RfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGV6ZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbi5fRmVici5fTXJ6Ll9BcHIuX01haV9KdW4uX0p1bC5fQXVnLl9TZXB0Ll9Pa3QuX05vdi5fRGV6LiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiU29ubnRhZ19Nb250YWdfRGllbnN0YWdfTWl0dHdvY2hfRG9ubmVyc3RhZ19GcmVpdGFnX1NhbXN0YWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU28uX01vLl9EaS5fTWkuX0RvLl9Gci5fU2EuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTb19Nb19EaV9NaV9Eb19Gcl9TYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBMVCIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltIZXV0ZSB1bV0gTFQgW1Vocl0iLHNhbWVFbHNlOiJMIixuZXh0RGF5OiJbTW9yZ2VuIHVtXSBMVCBbVWhyXSIsbmV4dFdlZWs6ImRkZGQgW3VtXSBMVCBbVWhyXSIsbGFzdERheToiW0dlc3Rlcm4gdW1dIExUIFtVaHJdIixsYXN0V2VlazoiW2xldHp0ZW5dIGRkZGQgW3VtXSBMVCBbVWhyXSJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoidm9yICVzIixzOiJlaW4gcGFhciBTZWt1bmRlbiIsbTpjLG1tOiIlZCBNaW51dGVuIixoOmMsaGg6IiVkIFN0dW5kZW4iLGQ6YyxkZDpjLE06YyxNTTpjLHk6Yyx5eTpjfSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiZGUiLCJkZSIse2Nsb3NlVGV4dDoiU2NobGllw59lbiIscHJldlRleHQ6IiYjeDNDO1p1csO8Y2siLG5leHRUZXh0OiJWb3ImI3gzRTsiLGN1cnJlbnRUZXh0OiJIZXV0ZSIsbW9udGhOYW1lczpbIkphbnVhciIsIkZlYnJ1YXIiLCJNw6RyeiIsIkFwcmlsIiwiTWFpIiwiSnVuaSIsIkp1bGkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPa3RvYmVyIiwiTm92ZW1iZXIiLCJEZXplbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk3DpHIiLCJBcHIiLCJNYWkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPa3QiLCJOb3YiLCJEZXoiXSxkYXlOYW1lczpbIlNvbm50YWciLCJNb250YWciLCJEaWVuc3RhZyIsIk1pdHR3b2NoIiwiRG9ubmVyc3RhZyIsIkZyZWl0YWciLCJTYW1zdGFnIl0sZGF5TmFtZXNTaG9ydDpbIlNvIiwiTW8iLCJEaSIsIk1pIiwiRG8iLCJGciIsIlNhIl0sZGF5TmFtZXNNaW46WyJTbyIsIk1vIiwiRGkiLCJNaSIsIkRvIiwiRnIiLCJTYSJdLHdlZWtIZWFkZXI6IktXIixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImRlIix7YnV0dG9uVGV4dDp7bW9udGg6Ik1vbmF0Iix3ZWVrOiJXb2NoZSIsZGF5OiJUYWciLGxpc3Q6IlRlcm1pbsO8YmVyc2ljaHQifSxhbGxEYXlUZXh0OiJHYW56dMOkZ2lnIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4iKyB3ZWl0ZXJlICIrYX19KX0oKSxmdW5jdGlvbigpeyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImVsIix7bW9udGhzTm9taW5hdGl2ZUVsOiLOmc6xzr3Ov8+FzqzPgc65zr/Pgl/Ops61zrLPgc6/z4XOrM+BzrnOv8+CX86czqzPgc+EzrnOv8+CX86Rz4DPgc6vzrvOuc6/z4JfzpzOrM65zr/Pgl/Omc6/z43Ovc65zr/Pgl/Omc6/z43Ou865zr/Pgl/Okc+NzrPOv8+Fz4PPhM6/z4JfzqPOtc+Az4TOrc68zrLPgc65zr/Pgl/On866z4TPjs6yz4HOuc6/z4Jfzp3Ov86tzrzOss+BzrnOv8+CX86UzrXOus6tzrzOss+BzrnOv8+CIi5zcGxpdCgiXyIpLG1vbnRoc0dlbml0aXZlRWw6Is6ZzrHOvc6/z4XOsc+Bzq/Ov8+FX86mzrXOss+Bzr/Phc6xz4HOr86/z4VfzpzOsc+Bz4TOr86/z4VfzpHPgM+BzrnOu86vzr/PhV/OnM6xzpDOv8+FX86Zzr/Phc69zq/Ov8+FX86Zzr/Phc67zq/Ov8+FX86Rz4XOs86/z43Pg8+Ezr/PhV/Oo861z4DPhM61zrzOss+Bzq/Ov8+FX86fzrrPhM+JzrLPgc6vzr/PhV/Onc6/zrXOvM6yz4HOr86/z4VfzpTOtc66zrXOvM6yz4HOr86/z4UiLnNwbGl0KCJfIiksbW9udGhzOmZ1bmN0aW9uKGEsYil7cmV0dXJuL0QvLnRlc3QoYi5zdWJzdHJpbmcoMCxiLmluZGV4T2YoIk1NTU0iKSkpP3RoaXMuX21vbnRoc0dlbml0aXZlRWxbYS5tb250aCgpXTp0aGlzLl9tb250aHNOb21pbmF0aXZlRWxbYS5tb250aCgpXX0sbW9udGhzU2hvcnQ6Is6ZzrHOvV/Ops61zrJfzpzOsc+BX86Rz4DPgV/OnM6xz4pfzpnOv8+Fzr1fzpnOv8+FzrtfzpHPhc6zX86jzrXPgF/On866z4Rfzp3Ov861X86UzrXOuiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoizprPhc+BzrnOsc66zq5fzpTOtc+Fz4TOrc+BzrFfzqTPgc6vz4TOt1/OpM61z4TOrM+Bz4TOt1/OoM6tzrzPgM+EzrdfzqDOsc+BzrHPg866zrXPhc6uX86jzqzOss6yzrHPhM6/Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Is6az4XPgV/OlM61z4VfzqTPgc65X86kzrXPhF/OoM61zrxfzqDOsc+BX86jzrHOsiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoizprPhV/OlM61X86kz4FfzqTOtV/OoM61X86gzrFfzqPOsSIuc3BsaXQoIl8iKSxtZXJpZGllbTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGE+MTE/Yz8izrzOvCI6Is6czpwiOmM/Is+AzrwiOiLOoM6cIn0saXNQTTpmdW5jdGlvbihhKXtyZXR1cm4izrwiPT09KGErIiIpLnRvTG93ZXJDYXNlKClbMF19LG1lcmlkaWVtUGFyc2U6L1vOoM6cXVwuP86cP1wuPy9pLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBBIixMVFM6Img6bW06c3MgQSIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIExUIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBMVCJ9LGNhbGVuZGFyRWw6e3NhbWVEYXk6IlvOo86uzrzOtc+BzrEge31dIExUIixuZXh0RGF5OiJbzpHPjc+BzrnOvyB7fV0gTFQiLG5leHRXZWVrOiJkZGRkIFt7fV0gTFQiLGxhc3REYXk6IlvOp864zrXPgiB7fV0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgNjpyZXR1cm4iW8+Ezr8gz4DPgc6/zrfOs86/z43OvM61zr3Ov10gZGRkZCBbe31dIExUIjtkZWZhdWx0OnJldHVybiJbz4TOt869IM+Az4HOv863zrPOv8+NzrzOtc69zrddIGRkZGQgW3t9XSBMVCJ9fSxzYW1lRWxzZToiTCJ9LGNhbGVuZGFyOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5fY2FsZW5kYXJFbFthXSxkPWImJmIuaG91cnMoKTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYyYmKGM9Yy5hcHBseShiKSksYy5yZXBsYWNlKCJ7fSIsZCUxMj09PTE/Is+Dz4TOtyI6Is+Dz4TOuc+CIil9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLPg861ICVzIixwYXN0OiIlcyDPgM+BzrnOvSIsczoizrvOr86zzrEgzrTOtc+Fz4TOtc+Bz4zOu861z4DPhM6xIixtOiLOrc69zrEgzrvOtc+Az4TPjCIsbW06IiVkIM67zrXPgM+EzqwiLGg6Is68zq/OsSDPjs+BzrEiLGhoOiIlZCDPjs+BzrXPgiIsZDoizrzOr86xIM68zq3Pgc6xIixkZDoiJWQgzrzOrc+BzrXPgiIsTToizq3Ovc6xz4IgzrzOrs69zrHPgiIsTU06IiVkIM68zq7Ovc61z4IiLHk6Is6tzr3Osc+CIM+Hz4HPjM69zr/PgiIseXk6IiVkIM+Hz4HPjM69zrnOsSJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfc63LyxvcmRpbmFsOiIlZM63Iix3ZWVrOntkb3c6MSxkb3k6NH19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiZWwiLCJlbCIse2Nsb3NlVGV4dDoizprOu861zq/Pg865zrzOvyIscHJldlRleHQ6Is6gz4HOv863zrPOv8+NzrzOtc69zr/PgiIsbmV4dFRleHQ6Is6Vz4DPjM68zrXOvc6/z4IiLGN1cnJlbnRUZXh0OiLOo86uzrzOtc+BzrEiLG1vbnRoTmFtZXM6WyLOmc6xzr3Ov8+FzqzPgc65zr/PgiIsIs6mzrXOss+Bzr/Phc6sz4HOuc6/z4IiLCLOnM6sz4HPhM65zr/PgiIsIs6Rz4DPgc6vzrvOuc6/z4IiLCLOnM6szrnOv8+CIiwizpnOv8+Nzr3Ouc6/z4IiLCLOmc6/z43Ou865zr/PgiIsIs6Rz43Os86/z4XPg8+Ezr/PgiIsIs6jzrXPgM+Ezq3OvM6yz4HOuc6/z4IiLCLOn866z4TPjs6yz4HOuc6/z4IiLCLOnc6/zq3OvM6yz4HOuc6/z4IiLCLOlM61zrrOrc68zrLPgc65zr/PgiJdLG1vbnRoTmFtZXNTaG9ydDpbIs6ZzrHOvSIsIs6mzrXOsiIsIs6czrHPgSIsIs6Rz4DPgSIsIs6czrHOuSIsIs6Zzr/Phc69IiwizpnOv8+FzrsiLCLOkc+FzrMiLCLOo861z4AiLCLOn866z4QiLCLOnc6/zrUiLCLOlM61zroiXSxkYXlOYW1lczpbIs6az4XPgc65zrHOus6uIiwizpTOtc+Fz4TOrc+BzrEiLCLOpM+Bzq/PhM63IiwizqTOtc+EzqzPgc+EzrciLCLOoM6tzrzPgM+EzrciLCLOoM6xz4HOsc+DzrrOtc+Fzq4iLCLOo86szrLOss6xz4TOvyJdLGRheU5hbWVzU2hvcnQ6WyLOms+Fz4EiLCLOlM61z4UiLCLOpM+BzrkiLCLOpM61z4QiLCLOoM61zrwiLCLOoM6xz4EiLCLOo86xzrIiXSxkYXlOYW1lc01pbjpbIs6az4UiLCLOlM61IiwizqTPgSIsIs6kzrUiLCLOoM61IiwizqDOsSIsIs6jzrEiXSx3ZWVrSGVhZGVyOiLOlc6yzrQiLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiZWwiLHtidXR0b25UZXh0Onttb250aDoizpzOrs69zrHPgiIsd2VlazoizpXOss60zr/OvM6szrTOsSIsZGF5OiLOl868zq3Pgc6xIixsaXN0OiLOkc+EzrbOrc69z4TOsSJ9LGFsbERheVRleHQ6Is6fzrvOv86uzrzOtc+Bzr8iLGV2ZW50TGltaXRUZXh0OiLPgM61z4HOuc+Dz4PPjM+EzrXPgc6xIn0pfSgpLGZ1bmN0aW9uKCl7KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwiZW4tYXUiLHttb250aHM6IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBBIixMVFM6Img6bW06c3MgQSIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIExUIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbVG9kYXkgYXRdIExUIixuZXh0RGF5OiJbVG9tb3Jyb3cgYXRdIExUIixuZXh0V2VlazoiZGRkZCBbYXRdIExUIixsYXN0RGF5OiJbWWVzdGVyZGF5IGF0XSBMVCIsbGFzdFdlZWs6IltMYXN0XSBkZGRkIFthdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiIlcyBhZ28iLHM6ImEgZmV3IHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0fG5kfHJkfHRoKS8sb3JkaW5hbDpmdW5jdGlvbihhKXt2YXIgYj1hJTEwLGM9MT09PX5+KGElMTAwLzEwKT8idGgiOjE9PT1iPyJzdCI6Mj09PWI/Im5kIjozPT09Yj8icmQiOiJ0aCI7cmV0dXJuIGErY30sd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImVuLWF1IiwiZW4tQVUiLHtjbG9zZVRleHQ6IkRvbmUiLHByZXZUZXh0OiJQcmV2IixuZXh0VGV4dDoiTmV4dCIsY3VycmVudFRleHQ6IlRvZGF5Iixtb250aE5hbWVzOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSxkYXlOYW1lczpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sZGF5TmFtZXNTaG9ydDpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLGRheU5hbWVzTWluOlsiU3UiLCJNbyIsIlR1IiwiV2UiLCJUaCIsIkZyIiwiU2EiXSx3ZWVrSGVhZGVyOiJXayIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJlbi1hdSIpfSgpLGZ1bmN0aW9uKCl7KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwiZW4tY2EiLHttb250aHM6IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiaDptbSBBIixMVFM6Img6bW06c3MgQSIsTDoiWVlZWS1NTS1ERCIsTEw6IkQgTU1NTSwgWVlZWSIsTExMOiJEIE1NTU0sIFlZWVkgTFQiLExMTEw6ImRkZGQsIEQgTU1NTSwgWVlZWSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbVG9kYXkgYXRdIExUIixuZXh0RGF5OiJbVG9tb3Jyb3cgYXRdIExUIixuZXh0V2VlazoiZGRkZCBbYXRdIExUIixsYXN0RGF5OiJbWWVzdGVyZGF5IGF0XSBMVCIsbGFzdFdlZWs6IltMYXN0XSBkZGRkIFthdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiIlcyBhZ28iLHM6ImEgZmV3IHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0fG5kfHJkfHRoKS8sb3JkaW5hbDpmdW5jdGlvbihhKXt2YXIgYj1hJTEwLGM9MT09PX5+KGElMTAwLzEwKT8idGgiOjE9PT1iPyJzdCI6Mj09PWI/Im5kIjozPT09Yj8icmQiOiJ0aCI7cmV0dXJuIGErY319KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJlbi1jYSIpfSgpLGZ1bmN0aW9uKCl7KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwiZW4tZ2IiLHttb250aHM6IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBMVCIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW1RvZGF5IGF0XSBMVCIsbmV4dERheToiW1RvbW9ycm93IGF0XSBMVCIsbmV4dFdlZWs6ImRkZGQgW2F0XSBMVCIsbGFzdERheToiW1llc3RlcmRheSBhdF0gTFQiLGxhc3RXZWVrOiJbTGFzdF0gZGRkZCBbYXRdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoiJXMgYWdvIixzOiJhIGZldyBzZWNvbmRzIixtOiJhIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6ImFuIGhvdXIiLGhoOiIlZCBob3VycyIsZDoiYSBkYXkiLGRkOiIlZCBkYXlzIixNOiJhIG1vbnRoIixNTToiJWQgbW9udGhzIix5OiJhIHllYXIiLHl5OiIlZCB5ZWFycyJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfShzdHxuZHxyZHx0aCkvLG9yZGluYWw6ZnVuY3Rpb24oYSl7dmFyIGI9YSUxMCxjPTE9PT1+fihhJTEwMC8xMCk/InRoIjoxPT09Yj8ic3QiOjI9PT1iPyJuZCI6Mz09PWI/InJkIjoidGgiO3JldHVybiBhK2N9LHdlZWs6e2RvdzoxLGRveTo0fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJlbi1nYiIsImVuLUdCIix7Y2xvc2VUZXh0OiJEb25lIixwcmV2VGV4dDoiUHJldiIsbmV4dFRleHQ6Ik5leHQiLGN1cnJlbnRUZXh0OiJUb2RheSIsbW9udGhOYW1lczpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sZGF5TmFtZXM6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLGRheU5hbWVzU2hvcnQ6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxkYXlOYW1lc01pbjpbIlN1IiwiTW8iLCJUdSIsIldlIiwiVGgiLCJGciIsIlNhIl0sd2Vla0hlYWRlcjoiV2siLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiZW4tZ2IiKX0oKSxmdW5jdGlvbigpe3ZhciBjPSJlbmUuX2ZlYi5fbWFyLl9hYnIuX21heS5fanVuLl9qdWwuX2Fnby5fc2VwLl9vY3QuX25vdi5fZGljLiIuc3BsaXQoIl8iKSxkPSJlbmVfZmViX21hcl9hYnJfbWF5X2p1bl9qdWxfYWdvX3NlcF9vY3Rfbm92X2RpYyIuc3BsaXQoIl8iKTsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJlcyIse21vbnRoczoiZW5lcm9fZmVicmVyb19tYXJ6b19hYnJpbF9tYXlvX2p1bmlvX2p1bGlvX2Fnb3N0b19zZXB0aWVtYnJlX29jdHVicmVfbm92aWVtYnJlX2RpY2llbWJyZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDpmdW5jdGlvbihhLGIpe3JldHVybi8tTU1NLS8udGVzdChiKT9kW2EubW9udGgoKV06Y1thLm1vbnRoKCldfSx3ZWVrZGF5czoiZG9taW5nb19sdW5lc19tYXJ0ZXNfbWnDqXJjb2xlc19qdWV2ZXNfdmllcm5lc19zw6FiYWRvIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRvbS5fbHVuLl9tYXIuX21pw6kuX2p1ZS5fdmllLl9zw6FiLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiRG9fTHVfTWFfTWlfSnVfVmlfU8OhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJMVDpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSIsTExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkgTFQiLExMTEw6ImRkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltob3kgYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LG5leHREYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW21hw7FhbmEgYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LG5leHRXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuImRkZGQgW2EgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxsYXN0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltheWVyIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiJbZWxdIGRkZGQgW3Bhc2FkbyBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZW4gJXMiLHBhc3Q6ImhhY2UgJXMiLHM6InVub3Mgc2VndW5kb3MiLG06InVuIG1pbnV0byIsbW06IiVkIG1pbnV0b3MiLGg6InVuYSBob3JhIixoaDoiJWQgaG9yYXMiLGQ6InVuIGTDrWEiLGRkOiIlZCBkw61hcyIsTToidW4gbWVzIixNTToiJWQgbWVzZXMiLHk6InVuIGHDsW8iLHl5OiIlZCBhw7FvcyJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfcK6LyxvcmRpbmFsOiIlZMK6Iix3ZWVrOntkb3c6MSxkb3k6NH19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiZXMiLCJlcyIse2Nsb3NlVGV4dDoiQ2VycmFyIixwcmV2VGV4dDoiJiN4M0M7QW50IixuZXh0VGV4dDoiU2lnJiN4M0U7IixjdXJyZW50VGV4dDoiSG95Iixtb250aE5hbWVzOlsiZW5lcm8iLCJmZWJyZXJvIiwibWFyem8iLCJhYnJpbCIsIm1heW8iLCJqdW5pbyIsImp1bGlvIiwiYWdvc3RvIiwic2VwdGllbWJyZSIsIm9jdHVicmUiLCJub3ZpZW1icmUiLCJkaWNpZW1icmUiXSxtb250aE5hbWVzU2hvcnQ6WyJlbmUiLCJmZWIiLCJtYXIiLCJhYnIiLCJtYXkiLCJqdW4iLCJqdWwiLCJhZ28iLCJzZXAiLCJvY3QiLCJub3YiLCJkaWMiXSxkYXlOYW1lczpbImRvbWluZ28iLCJsdW5lcyIsIm1hcnRlcyIsIm1pw6lyY29sZXMiLCJqdWV2ZXMiLCJ2aWVybmVzIiwic8OhYmFkbyJdLGRheU5hbWVzU2hvcnQ6WyJkb20iLCJsdW4iLCJtYXIiLCJtacOpIiwianVlIiwidmllIiwic8OhYiJdLGRheU5hbWVzTWluOlsiRCIsIkwiLCJNIiwiWCIsIkoiLCJWIiwiUyJdLHdlZWtIZWFkZXI6IlNtIixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImVzIix7YnV0dG9uVGV4dDp7bW9udGg6Ik1lcyIsd2VlazoiU2VtYW5hIixkYXk6IkTDrWEiLGxpc3Q6IkFnZW5kYSJ9LGFsbERheUh0bWw6IlRvZG88YnIvPmVsIGTDrWEiLGV2ZW50TGltaXRUZXh0OiJtw6FzIn0pfSgpLGZ1bmN0aW9uKCl7dmFyIGM9ezE6ItuxIiwyOiLbsiIsMzoi27MiLDQ6Itu0Iiw1OiLbtSIsNjoi27YiLDc6Itu3Iiw4OiLbuCIsOToi27kiLDA6ItuwIn0sZD17ItuxIjoiMSIsItuyIjoiMiIsItuzIjoiMyIsItu0IjoiNCIsItu1IjoiNSIsItu2IjoiNiIsItu3IjoiNyIsItu4IjoiOCIsItu5IjoiOSIsItuwIjoiMCJ9OyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImZhIix7bW9udGhzOiLamNin2YbZiNuM2Ydf2YHZiNix24zZh1/Zhdin2LHYs1/YotmI2LHbjNmEX9mF2Ydf2pjZiNim2YZf2pjZiNim24zZh1/Yp9mI2Kpf2LPZvtiq2KfZhdio2LFf2Kfaqdiq2KjYsV/ZhtmI2KfZhdio2LFf2K/Ys9in2YXYqNixIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiLamNin2YbZiNuM2Ydf2YHZiNix24zZh1/Zhdin2LHYs1/YotmI2LHbjNmEX9mF2Ydf2pjZiNim2YZf2pjZiNim24zZh1/Yp9mI2Kpf2LPZvtiq2KfZhdio2LFf2Kfaqdiq2KjYsV/ZhtmI2KfZhdio2LFf2K/Ys9in2YXYqNixIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiLbjNqp4oCM2LTZhtio2Ydf2K/ZiNi02YbYqNmHX9iz2YfigIzYtNmG2KjZh1/ahtmH2KfYsdi02YbYqNmHX9m+2YbYrOKAjNi02YbYqNmHX9is2YXYudmHX9i02YbYqNmHIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ItuM2qnigIzYtNmG2KjZh1/Yr9mI2LTZhtio2Ydf2LPZh+KAjNi02YbYqNmHX9qG2YfYp9ix2LTZhtio2Ydf2b7Zhtis4oCM2LTZhtio2Ydf2KzZhdi52Ydf2LTZhtio2YciLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ItuMX9ivX9izX9qGX9m+X9isX9i0Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiTFQ6c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBMVCIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgTFQifSxtZXJpZGllbVBhcnNlOi/Zgtio2YQg2KfYsiDYuNmH2LF82KjYudivINin2LIg2LjZh9ixLyxpc1BNOmZ1bmN0aW9uKGEpe3JldHVybi/YqNi52K8g2KfYsiDYuNmH2LEvLnRlc3QoYSl9LG1lcmlkaWVtOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMTI+YT8i2YLYqNmEINin2LIg2LjZh9ixIjoi2KjYudivINin2LIg2LjZh9ixIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvYp9mF2LHZiNiyINiz2KfYudiqXSBMVCIsbmV4dERheToiW9mB2LHYr9inINiz2KfYudiqXSBMVCIsbmV4dFdlZWs6ImRkZGQgW9iz2KfYudiqXSBMVCIsbGFzdERheToiW9iv24zYsdmI2LIg2LPYp9i52KpdIExUIixsYXN0V2VlazoiZGRkZCBb2b7bjNi0XSBb2LPYp9i52KpdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLYr9ixICVzIixwYXN0OiIlcyDZvtuM2LQiLHM6ItqG2YbYr9uM2YYg2KvYp9mG24zZhyIsbToi24zaqSDYr9mC24zZgtmHIixtbToiJWQg2K/ZgtuM2YLZhyIsaDoi24zaqSDYs9in2LnYqiIsaGg6IiVkINiz2KfYudiqIixkOiLbjNqpINix2YjYsiIsZGQ6IiVkINix2YjYsiIsTToi24zaqSDZhdin2YciLE1NOiIlZCDZhdin2YciLHk6ItuM2qkg2LPYp9mEIix5eToiJWQg2LPYp9mEIn0scHJlcGFyc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvW9uwLdu5XS9nLGZ1bmN0aW9uKGEpe3JldHVybiBkW2FdfSkucmVwbGFjZSgv2IwvZywiLCIpfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oYSl7cmV0dXJuIGNbYV19KS5yZXBsYWNlKC8sL2csItiMIil9LG9yZGluYWxQYXJzZTovXGR7MSwyfdmFLyxvcmRpbmFsOiIlZNmFIix3ZWVrOntkb3c6Nixkb3k6MTJ9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImZhIiwiZmEiLHtjbG9zZVRleHQ6Itio2LPYqtmGIixwcmV2VGV4dDoiJiN4M0M72YLYqNmE24wiLG5leHRUZXh0OiLYqNi52K/bjCYjeDNFOyIsY3VycmVudFRleHQ6Itin2YXYsdmI2LIiLG1vbnRoTmFtZXM6WyLamNin2YbZiNuM2YciLCLZgdmI2LHbjNmHIiwi2YXYp9ix2LMiLCLYotmI2LHbjNmEIiwi2YXZhyIsItqY2YjYptmGIiwi2pjZiNim24zZhyIsItin2YjYqiIsItiz2b7Yqtin2YXYqNixIiwi2Kfaqdiq2KjYsSIsItmG2YjYp9mF2KjYsSIsItiv2LPYp9mF2KjYsSJdLG1vbnRoTmFtZXNTaG9ydDpbIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEwIiwiMTEiLCIxMiJdLGRheU5hbWVzOlsi2Yraqdi02YbYqNmHIiwi2K/ZiNi02YbYqNmHIiwi2LPZh+KAjNi02YbYqNmHIiwi2obZh9in2LHYtNmG2KjZhyIsItm+2YbYrNi02YbYqNmHIiwi2KzZhdi52YciLCLYtNmG2KjZhyJdLGRheU5hbWVzU2hvcnQ6WyLbjCIsItivIiwi2LMiLCLahiIsItm+Iiwi2KwiLCLYtCJdLGRheU5hbWVzTWluOlsi24wiLCLYryIsItizIiwi2oYiLCLZviIsItisIiwi2LQiXSx3ZWVrSGVhZGVyOiLZh9mBIixkYXRlRm9ybWF0OiJ5eS9tbS9kZCIsZmlyc3REYXk6Nixpc1JUTDohMCxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImZhIix7YnV0dG9uVGV4dDp7bW9udGg6ItmF2KfZhyIsd2Vlazoi2YfZgdiq2YciLGRheToi2LHZiNiyIixsaXN0OiLYqNix2YbYp9mF2YciCn0sYWxsRGF5VGV4dDoi2KrZhdin2YUg2LHZiNiyIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4i2KjbjNi0INin2LIgIithfX0pfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhhLGIsYyxlKXt2YXIgZj0iIjtzd2l0Y2goYyl7Y2FzZSJzIjpyZXR1cm4gZT8ibXV1dGFtYW4gc2VrdW5uaW4iOiJtdXV0YW1hIHNla3VudGkiO2Nhc2UibSI6cmV0dXJuIGU/Im1pbnV1dGluIjoibWludXV0dGkiO2Nhc2UibW0iOmY9ZT8ibWludXV0aW4iOiJtaW51dXR0aWEiO2JyZWFrO2Nhc2UiaCI6cmV0dXJuIGU/InR1bm5pbiI6InR1bnRpIjtjYXNlImhoIjpmPWU/InR1bm5pbiI6InR1bnRpYSI7YnJlYWs7Y2FzZSJkIjpyZXR1cm4gZT8icMOkaXbDpG4iOiJww6RpdsOkIjtjYXNlImRkIjpmPWU/InDDpGl2w6RuIjoicMOkaXbDpMOkIjticmVhaztjYXNlIk0iOnJldHVybiBlPyJrdXVrYXVkZW4iOiJrdXVrYXVzaSI7Y2FzZSJNTSI6Zj1lPyJrdXVrYXVkZW4iOiJrdXVrYXV0dGEiO2JyZWFrO2Nhc2UieSI6cmV0dXJuIGU/InZ1b2RlbiI6InZ1b3NpIjtjYXNlInl5IjpmPWU/InZ1b2RlbiI6InZ1b3R0YSJ9cmV0dXJuIGY9ZChhLGUpKyIgIitmfWZ1bmN0aW9uIGQoYSxiKXtyZXR1cm4gMTA+YT9iP2ZbYV06ZVthXTphfXZhciBlPSJub2xsYSB5a3NpIGtha3NpIGtvbG1lIG5lbGrDpCB2aWlzaSBrdXVzaSBzZWl0c2Vtw6RuIGthaGRla3NhbiB5aGRla3PDpG4iLnNwbGl0KCIgIiksZj1bIm5vbGxhIiwieWhkZW4iLCJrYWhkZW4iLCJrb2xtZW4iLCJuZWxqw6RuIiwidmlpZGVuIiwia3V1ZGVuIixlWzddLGVbOF0sZVs5XV07KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwiZmkiLHttb250aHM6InRhbW1pa3V1X2hlbG1pa3V1X21hYWxpc2t1dV9odWh0aWt1dV90b3Vrb2t1dV9rZXPDpGt1dV9oZWluw6RrdXVfZWxva3V1X3N5eXNrdXVfbG9rYWt1dV9tYXJyYXNrdXVfam91bHVrdXUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6InRhbW1pX2hlbG1pX21hYWxpc19odWh0aV90b3Vrb19rZXPDpF9oZWluw6RfZWxvX3N5eXNfbG9rYV9tYXJyYXNfam91bHUiLnNwbGl0KCJfIiksd2Vla2RheXM6InN1bm51bnRhaV9tYWFuYW50YWlfdGlpc3RhaV9rZXNraXZpaWtrb190b3JzdGFpX3BlcmphbnRhaV9sYXVhbnRhaSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJzdV9tYV90aV9rZV90b19wZV9sYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoic3VfbWFfdGlfa2VfdG9fcGVfbGEiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISC5tbSIsTFRTOiJISC5tbS5zcyIsTDoiREQuTU0uWVlZWSIsTEw6IkRvIE1NTU1bdGFdIFlZWVkiLExMTDoiRG8gTU1NTVt0YV0gWVlZWSwgW2tsb10gTFQiLExMTEw6ImRkZGQsIERvIE1NTU1bdGFdIFlZWVksIFtrbG9dIExUIixsOiJELk0uWVlZWSIsbGw6IkRvIE1NTSBZWVlZIixsbGw6IkRvIE1NTSBZWVlZLCBba2xvXSBMVCIsbGxsbDoiZGRkLCBEbyBNTU0gWVlZWSwgW2tsb10gTFQifSxjYWxlbmRhcjp7c2FtZURheToiW3TDpG7DpMOkbl0gW2tsb10gTFQiLG5leHREYXk6IltodW9tZW5uYV0gW2tsb10gTFQiLG5leHRXZWVrOiJkZGRkIFtrbG9dIExUIixsYXN0RGF5OiJbZWlsZW5dIFtrbG9dIExUIixsYXN0V2VlazoiW3ZpaW1lXSBkZGRkW25hXSBba2xvXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgcMOkw6RzdMOkIixwYXN0OiIlcyBzaXR0ZW4iLHM6YyxtOmMsbW06YyxoOmMsaGg6YyxkOmMsZGQ6YyxNOmMsTU06Yyx5OmMseXk6Y30sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImZpIiwiZmkiLHtjbG9zZVRleHQ6IlN1bGplIixwcmV2VGV4dDoiJiN4QUI7RWRlbGxpbmVuIixuZXh0VGV4dDoiU2V1cmFhdmEmI3hCQjsiLGN1cnJlbnRUZXh0OiJUw6Ruw6TDpG4iLG1vbnRoTmFtZXM6WyJUYW1taWt1dSIsIkhlbG1pa3V1IiwiTWFhbGlza3V1IiwiSHVodGlrdXUiLCJUb3Vrb2t1dSIsIktlc8Oka3V1IiwiSGVpbsOka3V1IiwiRWxva3V1IiwiU3l5c2t1dSIsIkxva2FrdXUiLCJNYXJyYXNrdXUiLCJKb3VsdWt1dSJdLG1vbnRoTmFtZXNTaG9ydDpbIlRhbW1pIiwiSGVsbWkiLCJNYWFsaXMiLCJIdWh0aSIsIlRvdWtvIiwiS2Vzw6QiLCJIZWluw6QiLCJFbG8iLCJTeXlzIiwiTG9rYSIsIk1hcnJhcyIsIkpvdWx1Il0sZGF5TmFtZXNTaG9ydDpbIlN1IiwiTWEiLCJUaSIsIktlIiwiVG8iLCJQZSIsIkxhIl0sZGF5TmFtZXM6WyJTdW5udW50YWkiLCJNYWFuYW50YWkiLCJUaWlzdGFpIiwiS2Vza2l2aWlra28iLCJUb3JzdGFpIiwiUGVyamFudGFpIiwiTGF1YW50YWkiXSxkYXlOYW1lc01pbjpbIlN1IiwiTWEiLCJUaSIsIktlIiwiVG8iLCJQZSIsIkxhIl0sd2Vla0hlYWRlcjoiVmsiLGRhdGVGb3JtYXQ6ImQubS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImZpIix7YnV0dG9uVGV4dDp7bW9udGg6Ikt1dWthdXNpIix3ZWVrOiJWaWlra28iLGRheToiUMOkaXbDpCIsbGlzdDoiVGFwYWh0dW1hdCJ9LGFsbERheVRleHQ6Iktva28gcMOkaXbDpCIsZXZlbnRMaW1pdFRleHQ6Imxpc8Okw6QifSl9KCksZnVuY3Rpb24oKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJmci1jYSIse21vbnRoczoiamFudmllcl9mw6l2cmllcl9tYXJzX2F2cmlsX21haV9qdWluX2p1aWxsZXRfYW/Du3Rfc2VwdGVtYnJlX29jdG9icmVfbm92ZW1icmVfZMOpY2VtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW52Ll9mw6l2ci5fbWFyc19hdnIuX21haV9qdWluX2p1aWwuX2Fvw7t0X3NlcHQuX29jdC5fbm92Ll9kw6ljLiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiZGltYW5jaGVfbHVuZGlfbWFyZGlfbWVyY3JlZGlfamV1ZGlfdmVuZHJlZGlfc2FtZWRpIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRpbS5fbHVuLl9tYXIuX21lci5famV1Ll92ZW4uX3NhbS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkRpX0x1X01hX01lX0plX1ZlX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiTFQ6c3MiLEw6IllZWVktTU0tREQiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBMVCIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbQXVqb3VyZCdodWkgw6BdIExUIixuZXh0RGF5OiJbRGVtYWluIMOgXSBMVCIsbmV4dFdlZWs6ImRkZGQgW8OgXSBMVCIsbGFzdERheToiW0hpZXIgw6BdIExUIixsYXN0V2VlazoiZGRkZCBbZGVybmllciDDoF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImRhbnMgJXMiLHBhc3Q6ImlsIHkgYSAlcyIsczoicXVlbHF1ZXMgc2Vjb25kZXMiLG06InVuZSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJ1bmUgaGV1cmUiLGhoOiIlZCBoZXVyZXMiLGQ6InVuIGpvdXIiLGRkOiIlZCBqb3VycyIsTToidW4gbW9pcyIsTU06IiVkIG1vaXMiLHk6InVuIGFuIix5eToiJWQgYW5zIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KGVyfCkvLG9yZGluYWw6ZnVuY3Rpb24oYSl7cmV0dXJuIGErKDE9PT1hPyJlciI6IiIpfX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJmci1jYSIsImZyLUNBIix7Y2xvc2VUZXh0OiJGZXJtZXIiLHByZXZUZXh0OiJQcsOpY8OpZGVudCIsbmV4dFRleHQ6IlN1aXZhbnQiLGN1cnJlbnRUZXh0OiJBdWpvdXJkJ2h1aSIsbW9udGhOYW1lczpbImphbnZpZXIiLCJmw6l2cmllciIsIm1hcnMiLCJhdnJpbCIsIm1haSIsImp1aW4iLCJqdWlsbGV0IiwiYW/Du3QiLCJzZXB0ZW1icmUiLCJvY3RvYnJlIiwibm92ZW1icmUiLCJkw6ljZW1icmUiXSxtb250aE5hbWVzU2hvcnQ6WyJqYW52LiIsImbDqXZyLiIsIm1hcnMiLCJhdnJpbCIsIm1haSIsImp1aW4iLCJqdWlsLiIsImFvw7t0Iiwic2VwdC4iLCJvY3QuIiwibm92LiIsImTDqWMuIl0sZGF5TmFtZXM6WyJkaW1hbmNoZSIsImx1bmRpIiwibWFyZGkiLCJtZXJjcmVkaSIsImpldWRpIiwidmVuZHJlZGkiLCJzYW1lZGkiXSxkYXlOYW1lc1Nob3J0OlsiZGltLiIsImx1bi4iLCJtYXIuIiwibWVyLiIsImpldS4iLCJ2ZW4uIiwic2FtLiJdLGRheU5hbWVzTWluOlsiRCIsIkwiLCJNIiwiTSIsIkoiLCJWIiwiUyJdLHdlZWtIZWFkZXI6IlNlbS4iLGRhdGVGb3JtYXQ6Inl5LW1tLWRkIixmaXJzdERheTowLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiZnItY2EiLHtidXR0b25UZXh0Onttb250aDoiTW9pcyIsd2VlazoiU2VtYWluZSIsZGF5OiJKb3VyIixsaXN0OiJNb24gcGxhbm5pbmcifSxhbGxEYXlIdG1sOiJUb3V0ZSBsYTxici8+am91cm7DqWUiLGV2ZW50TGltaXRUZXh0OiJlbiBwbHVzIn0pfSgpLGZ1bmN0aW9uKCl7KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwiZnIiLHttb250aHM6ImphbnZpZXJfZsOpdnJpZXJfbWFyc19hdnJpbF9tYWlfanVpbl9qdWlsbGV0X2Fvw7t0X3NlcHRlbWJyZV9vY3RvYnJlX25vdmVtYnJlX2TDqWNlbWJyZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFudi5fZsOpdnIuX21hcnNfYXZyLl9tYWlfanVpbl9qdWlsLl9hb8O7dF9zZXB0Ll9vY3QuX25vdi5fZMOpYy4iLnNwbGl0KCJfIiksd2Vla2RheXM6ImRpbWFuY2hlX2x1bmRpX21hcmRpX21lcmNyZWRpX2pldWRpX3ZlbmRyZWRpX3NhbWVkaSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkaW0uX2x1bi5fbWFyLl9tZXIuX2pldS5fdmVuLl9zYW0uIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJEaV9MdV9NYV9NZV9KZV9WZV9TYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkxUOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW0F1am91cmQnaHVpIMOgXSBMVCIsbmV4dERheToiW0RlbWFpbiDDoF0gTFQiLG5leHRXZWVrOiJkZGRkIFvDoF0gTFQiLGxhc3REYXk6IltIaWVyIMOgXSBMVCIsbGFzdFdlZWs6ImRkZGQgW2Rlcm5pZXIgw6BdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJkYW5zICVzIixwYXN0OiJpbCB5IGEgJXMiLHM6InF1ZWxxdWVzIHNlY29uZGVzIixtOiJ1bmUgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoidW5lIGhldXJlIixoaDoiJWQgaGV1cmVzIixkOiJ1biBqb3VyIixkZDoiJWQgam91cnMiLE06InVuIG1vaXMiLE1NOiIlZCBtb2lzIix5OiJ1biBhbiIseXk6IiVkIGFucyJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfShlcnwpLyxvcmRpbmFsOmZ1bmN0aW9uKGEpe3JldHVybiBhKygxPT09YT8iZXIiOiIiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImZyIiwiZnIiLHtjbG9zZVRleHQ6IkZlcm1lciIscHJldlRleHQ6IlByw6ljw6lkZW50IixuZXh0VGV4dDoiU3VpdmFudCIsY3VycmVudFRleHQ6IkF1am91cmQnaHVpIixtb250aE5hbWVzOlsiamFudmllciIsImbDqXZyaWVyIiwibWFycyIsImF2cmlsIiwibWFpIiwianVpbiIsImp1aWxsZXQiLCJhb8O7dCIsInNlcHRlbWJyZSIsIm9jdG9icmUiLCJub3ZlbWJyZSIsImTDqWNlbWJyZSJdLG1vbnRoTmFtZXNTaG9ydDpbImphbnYuIiwiZsOpdnIuIiwibWFycyIsImF2ci4iLCJtYWkiLCJqdWluIiwianVpbC4iLCJhb8O7dCIsInNlcHQuIiwib2N0LiIsIm5vdi4iLCJkw6ljLiJdLGRheU5hbWVzOlsiZGltYW5jaGUiLCJsdW5kaSIsIm1hcmRpIiwibWVyY3JlZGkiLCJqZXVkaSIsInZlbmRyZWRpIiwic2FtZWRpIl0sZGF5TmFtZXNTaG9ydDpbImRpbS4iLCJsdW4uIiwibWFyLiIsIm1lci4iLCJqZXUuIiwidmVuLiIsInNhbS4iXSxkYXlOYW1lc01pbjpbIkQiLCJMIiwiTSIsIk0iLCJKIiwiViIsIlMiXSx3ZWVrSGVhZGVyOiJTZW0uIixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImZyIix7YnV0dG9uVGV4dDp7bW9udGg6Ik1vaXMiLHdlZWs6IlNlbWFpbmUiLGRheToiSm91ciIsbGlzdDoiTW9uIHBsYW5uaW5nIn0sYWxsRGF5SHRtbDoiVG91dGUgbGE8YnIvPmpvdXJuw6llIixldmVudExpbWl0VGV4dDoiZW4gcGx1cyJ9KX0oKSxmdW5jdGlvbigpeyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImhlIix7bW9udGhzOiLXmdeg15XXkNeoX9ek15HXqNeV15DXqF/Xnteo16Vf15DXpNeo15nXnF/XnteQ15lf15nXldeg15lf15nXldec15lf15DXldeS15XXodeYX9eh16TXmNee15HXqF/XkNeV16fXmNeV15HXqF/XoNeV15HXnteR16hf15PXptee15HXqCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoi15nXoNeV17Nf16TXkdeo17Nf157XqNelX9eQ16TXqNezX9ee15DXmV/XmdeV16DXmV/XmdeV15zXmV/XkNeV15LXs1/Xodek15jXs1/XkNeV16fXs1/XoNeV15HXs1/Xk9em157XsyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi16jXkNep15XXn1/Xqdeg15lf16nXnNeZ16nXmV/XqNeR15nXoteZX9eX157Xmdep15lf16nXmdep15lf16nXkdeqIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IteQ17Nf15HXs1/XktezX9eT17Nf15TXs1/XldezX9ep17MiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IteQX9eRX9eSX9eTX9eUX9eVX9epIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiTFQ6c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIFvXkV1NTU1NIFlZWVkiLExMTDoiRCBb15FdTU1NTSBZWVlZIExUIixMTExMOiJkZGRkLCBEIFvXkV1NTU1NIFlZWVkgTFQiLGw6IkQvTS9ZWVlZIixsbDoiRCBNTU0gWVlZWSIsbGxsOiJEIE1NTSBZWVlZIExUIixsbGxsOiJkZGQsIEQgTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW9eU15nXldedINeR1r5dTFQiLG5leHREYXk6IlvXnteX16gg15HWvl1MVCIsbmV4dFdlZWs6ImRkZGQgW9eR16nXoteUXSBMVCIsbGFzdERheToiW9eQ16rXnteV15wg15HWvl1MVCIsbGFzdFdlZWs6IlvXkdeZ15XXnV0gZGRkZCBb15TXkNeX16jXldefINeR16nXoteUXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi15HXoteV15MgJXMiLHBhc3Q6Itec16TXoNeZICVzIixzOiLXnteh16TXqCDXqdeg15nXldeqIixtOiLXk9en15QiLG1tOiIlZCDXk9en15XXqiIsaDoi16nXoteUIixoaDpmdW5jdGlvbihhKXtyZXR1cm4gMj09PWE/Itep16LXqteZ15nXnSI6YSsiINep16LXldeqIn0sZDoi15nXldedIixkZDpmdW5jdGlvbihhKXtyZXR1cm4gMj09PWE/IteZ15XXnteZ15nXnSI6YSsiINeZ157XmdedIn0sTToi15fXldeT16kiLE1NOmZ1bmN0aW9uKGEpe3JldHVybiAyPT09YT8i15fXldeT16nXmdeZ150iOmErIiDXl9eV15PXqdeZ150ifSx5OiLXqdeg15QiLHl5OmZ1bmN0aW9uKGEpe3JldHVybiAyPT09YT8i16nXoNeq15nXmdedIjphJTEwPT09MCYmMTAhPT1hP2ErIiDXqdeg15QiOmErIiDXqdeg15nXnSJ9fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJoZSIsImhlIix7Y2xvc2VUZXh0OiLXodeS15XXqCIscHJldlRleHQ6IiYjeDNDO9eU16fXldeT150iLG5leHRUZXh0OiLXlNeR15AmI3gzRTsiLGN1cnJlbnRUZXh0OiLXlNeZ15XXnSIsbW9udGhOYW1lczpbIteZ16DXldeQ16giLCLXpNeR16jXldeQ16giLCLXnteo16UiLCLXkNek16jXmdecIiwi157XkNeZIiwi15nXldeg15kiLCLXmdeV15zXmSIsIteQ15XXkteV16HXmCIsIteh16TXmNee15HXqCIsIteQ15XXp9eY15XXkdeoIiwi16DXldeR157XkdeoIiwi15PXptee15HXqCJdLG1vbnRoTmFtZXNTaG9ydDpbIteZ16DXlSIsItek15HXqCIsItee16jXpSIsIteQ16TXqCIsItee15DXmSIsIteZ15XXoNeZIiwi15nXldec15kiLCLXkNeV15IiLCLXodek15giLCLXkNeV16ciLCLXoNeV15EiLCLXk9em154iXSxkYXlOYW1lczpbIteo15DXqdeV158iLCLXqdeg15kiLCLXqdec15nXqdeZIiwi16jXkdeZ16LXmSIsIteX157Xmdep15kiLCLXqdeZ16nXmSIsItep15HXqiJdLGRheU5hbWVzU2hvcnQ6WyLXkCciLCLXkSciLCLXkiciLCLXkyciLCLXlCciLCLXlSciLCLXqdeR16oiXSxkYXlOYW1lc01pbjpbIteQJyIsIteRJyIsIteSJyIsIteTJyIsIteUJyIsIteVJyIsItep15HXqiJdLHdlZWtIZWFkZXI6IldrIixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MCxpc1JUTDohMCxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImhlIix7ZGVmYXVsdEJ1dHRvblRleHQ6e21vbnRoOiLXl9eV15PXqSIsd2Vlazoi16nXkdeV16IiLGRheToi15nXldedIixsaXN0OiLXodeT16gg15nXldedIn0sd2Vla051bWJlclRpdGxlOiLXqdeR15XXoiIsYWxsRGF5VGV4dDoi15vXnCDXlNeZ15XXnSIsZXZlbnRMaW1pdFRleHQ6IteQ15fXqCJ9KX0oKSxmdW5jdGlvbigpe3ZhciBjPXsxOiLgpaciLDI6IuClqCIsMzoi4KWpIiw0OiLgpaoiLDU6IuClqyIsNjoi4KWsIiw3OiLgpa0iLDg6IuClriIsOToi4KWvIiwwOiLgpaYifSxkPXsi4KWnIjoiMSIsIuClqCI6IjIiLCLgpakiOiIzIiwi4KWqIjoiNCIsIuClqyI6IjUiLCLgpawiOiI2Iiwi4KWtIjoiNyIsIuClriI6IjgiLCLgpa8iOiI5Iiwi4KWmIjoiMCJ9OyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImhpIix7bW9udGhzOiLgpJzgpKjgpLXgpLDgpYBf4KSr4KS84KSw4KS14KSw4KWAX+CkruCkvuCksOCljeCkml/gpIXgpKrgpY3gpLDgpYjgpLJf4KSu4KSIX+CknOClguCkqF/gpJzgpYHgpLLgpL7gpIhf4KSF4KSX4KS44KWN4KSkX+CkuOCkv+CkpOCkruCljeCkrOCksF/gpIXgpJXgpY3gpJ/gpYLgpKzgpLBf4KSo4KS14KSu4KWN4KSs4KSwX+CkpuCkv+CkuOCkruCljeCkrOCksCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoi4KSc4KSoLl/gpKvgpLzgpLAuX+CkruCkvuCksOCljeCkml/gpIXgpKrgpY3gpLDgpYguX+CkruCkiF/gpJzgpYLgpKhf4KSc4KWB4KSyLl/gpIXgpJcuX+CkuOCkv+CkpC5f4KSF4KSV4KWN4KSf4KWCLl/gpKjgpLUuX+CkpuCkv+CkuC4iLnNwbGl0KCJfIiksd2Vla2RheXM6IuCksOCkteCkv+CkteCkvuCksF/gpLjgpYvgpK7gpLXgpL7gpLBf4KSu4KSC4KSX4KSy4KS14KS+4KSwX+CkrOClgeCkp+CkteCkvuCksF/gpJfgpYHgpLDgpYLgpLXgpL7gpLBf4KS24KWB4KSV4KWN4KSw4KS14KS+4KSwX+CktuCkqOCkv+CkteCkvuCksCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLgpLDgpLXgpL9f4KS44KWL4KSuX+CkruCkguCkl+Cksl/gpKzgpYHgpKdf4KSX4KWB4KSw4KWCX+CktuClgeCkleCljeCksF/gpLbgpKjgpL8iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IuCksF/gpLjgpYtf4KSu4KSCX+CkrOClgV/gpJfgpYFf4KS24KWBX+CktiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkEgaDptbSDgpKzgpJzgpYciLExUUzoiQSBoOm1tOnNzIOCkrOCknOClhyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZLCBMVCIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVksIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvgpIbgpJxdIExUIixuZXh0RGF5OiJb4KSV4KSyXSBMVCIsbmV4dFdlZWs6ImRkZGQsIExUIixsYXN0RGF5OiJb4KSV4KSyXSBMVCIsbGFzdFdlZWs6IlvgpKrgpL/gpJvgpLLgpYddIGRkZGQsIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyDgpK7gpYfgpIIiLHBhc3Q6IiVzIOCkquCkueCksuClhyIsczoi4KSV4KWB4KSbIOCkueClgCDgpJXgpY3gpLfgpKMiLG06IuCkj+CklSDgpK7gpL/gpKjgpJ8iLG1tOiIlZCDgpK7gpL/gpKjgpJ8iLGg6IuCkj+CklSDgpJjgpILgpJ/gpL4iLGhoOiIlZCDgpJjgpILgpJ/gpYciLGQ6IuCkj+CklSDgpKbgpL/gpKgiLGRkOiIlZCDgpKbgpL/gpKgiLE06IuCkj+CklSDgpK7gpLngpYDgpKjgpYciLE1NOiIlZCDgpK7gpLngpYDgpKjgpYciLHk6IuCkj+CklSDgpLXgpLDgpY3gpLciLHl5OiIlZCDgpLXgpLDgpY3gpLcifSxwcmVwYXJzZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC9b4KWn4KWo4KWp4KWq4KWr4KWs4KWt4KWu4KWv4KWmXS9nLGZ1bmN0aW9uKGEpe3JldHVybiBkW2FdfSl9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXGQvZyxmdW5jdGlvbihhKXtyZXR1cm4gY1thXX0pfSxtZXJpZGllbVBhcnNlOi/gpLDgpL7gpKR84KS44KWB4KSs4KS5fOCkpuCli+CkquCkueCksHzgpLbgpL7gpK4vLG1lcmlkaWVtSG91cjpmdW5jdGlvbihhLGIpe3JldHVybiAxMj09PWEmJihhPTApLCLgpLDgpL7gpKQiPT09Yj80PmE/YTphKzEyOiLgpLjgpYHgpKzgpLkiPT09Yj9hOiLgpKbgpYvgpKrgpLngpLAiPT09Yj9hPj0xMD9hOmErMTI6IuCktuCkvuCkriI9PT1iP2ErMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIDQ+YT8i4KSw4KS+4KSkIjoxMD5hPyLgpLjgpYHgpKzgpLkiOjE3PmE/IuCkpuCli+CkquCkueCksCI6MjA+YT8i4KS24KS+4KSuIjoi4KSw4KS+4KSkIn0sd2Vlazp7ZG93OjAsZG95OjZ9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImhpIiwiaGkiLHtjbG9zZVRleHQ6IuCkrOCkguCkpiIscHJldlRleHQ6IuCkquCkv+Ckm+CksuCkviIsbmV4dFRleHQ6IuCkheCkl+CksuCkviIsY3VycmVudFRleHQ6IuCkhuCknCIsbW9udGhOYW1lczpbIuCknOCkqOCkteCksOClgCAiLCLgpKvgpLDgpLXgpLDgpYAiLCLgpK7gpL7gpLDgpY3gpJoiLCLgpIXgpKrgpY3gpLDgpYfgpLIiLCLgpK7gpIgiLCLgpJzgpYLgpKgiLCLgpJzgpYLgpLLgpL7gpIgiLCLgpIXgpJfgpLjgpY3gpKQgIiwi4KS44KS/4KSk4KSu4KWN4KSs4KSwIiwi4KSF4KSV4KWN4KSf4KWC4KSs4KSwIiwi4KSo4KS14KSu4KWN4KSs4KSwIiwi4KSm4KS/4KS44KSu4KWN4KSs4KSwIl0sbW9udGhOYW1lc1Nob3J0Olsi4KSc4KSoIiwi4KSr4KSwIiwi4KSu4KS+4KSw4KWN4KSaIiwi4KSF4KSq4KWN4KSw4KWH4KSyIiwi4KSu4KSIIiwi4KSc4KWC4KSoIiwi4KSc4KWC4KSy4KS+4KSIIiwi4KSF4KSXIiwi4KS44KS/4KSkIiwi4KSF4KSV4KWN4KSfIiwi4KSo4KS1Iiwi4KSm4KS/Il0sZGF5TmFtZXM6WyLgpLDgpLXgpL/gpLXgpL7gpLAiLCLgpLjgpYvgpK7gpLXgpL7gpLAiLCLgpK7gpILgpJfgpLLgpLXgpL7gpLAiLCLgpKzgpYHgpKfgpLXgpL7gpLAiLCLgpJfgpYHgpLDgpYHgpLXgpL7gpLAiLCLgpLbgpYHgpJXgpY3gpLDgpLXgpL7gpLAiLCLgpLbgpKjgpL/gpLXgpL7gpLAiXSxkYXlOYW1lc1Nob3J0Olsi4KSw4KS14KS/Iiwi4KS44KWL4KSuIiwi4KSu4KSC4KSX4KSyIiwi4KSs4KWB4KSnIiwi4KSX4KWB4KSw4KWBIiwi4KS24KWB4KSV4KWN4KSwIiwi4KS24KSo4KS/Il0sZGF5TmFtZXNNaW46WyLgpLDgpLXgpL8iLCLgpLjgpYvgpK4iLCLgpK7gpILgpJfgpLIiLCLgpKzgpYHgpKciLCLgpJfgpYHgpLDgpYEiLCLgpLbgpYHgpJXgpY3gpLAiLCLgpLbgpKjgpL8iXSx3ZWVrSGVhZGVyOiLgpLngpKvgpY3gpKTgpL4iLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiaGkiLHtidXR0b25UZXh0Onttb250aDoi4KSu4KS54KWA4KSo4KS+Iix3ZWVrOiLgpLjgpKrgpY3gpKTgpL7gpLkiLGRheToi4KSm4KS/4KSoIixsaXN0OiLgpJXgpL7gpLDgpY3gpK/gpLjgpYLgpJrgpYAifSxhbGxEYXlUZXh0OiLgpLjgpK3gpYAg4KSm4KS/4KSoIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4iK+CkheCkp+Ckv+CklSAiK2F9fSl9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiBjKGEsYixjKXt2YXIgZD1hKyIgIjtzd2l0Y2goYyl7Y2FzZSJtIjpyZXR1cm4gYj8iamVkbmEgbWludXRhIjoiamVkbmUgbWludXRlIjtjYXNlIm1tIjpyZXR1cm4gZCs9MT09PWE/Im1pbnV0YSI6Mj09PWF8fDM9PT1hfHw0PT09YT8ibWludXRlIjoibWludXRhIjtjYXNlImgiOnJldHVybiBiPyJqZWRhbiBzYXQiOiJqZWRub2cgc2F0YSI7Y2FzZSJoaCI6cmV0dXJuIGQrPTE9PT1hPyJzYXQiOjI9PT1hfHwzPT09YXx8ND09PWE/InNhdGEiOiJzYXRpIjtjYXNlImRkIjpyZXR1cm4gZCs9MT09PWE/ImRhbiI6ImRhbmEiO2Nhc2UiTU0iOnJldHVybiBkKz0xPT09YT8ibWplc2VjIjoyPT09YXx8Mz09PWF8fDQ9PT1hPyJtamVzZWNhIjoibWplc2VjaSI7Y2FzZSJ5eSI6cmV0dXJuIGQrPTE9PT1hPyJnb2RpbmEiOjI9PT1hfHwzPT09YXx8ND09PWE/ImdvZGluZSI6ImdvZGluYSJ9fShiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImhyIix7bW9udGhzOiJzamXEjWFual92ZWxqYcSNYV9vxb51amFrX3RyYXZhbmpfc3ZpYmFual9saXBhbmpfc3JwYW5qX2tvbG92b3pfcnVqYW5fbGlzdG9wYWRfc3R1ZGVuaV9wcm9zaW5hYyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoic2plLl92ZWwuX2/FvnUuX3RyYS5fc3ZpLl9saXAuX3NycC5fa29sLl9ydWouX2xpcy5fc3R1Ll9wcm8uIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJuZWRqZWxqYV9wb25lZGplbGpha191dG9yYWtfc3JpamVkYV/EjWV0dnJ0YWtfcGV0YWtfc3Vib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5lZC5fcG9uLl91dG8uX3NyaS5fxI1ldC5fcGV0Ll9zdWIuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJuZV9wb191dF9zcl/EjWVfcGVfc3UiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6IkxUOnNzIixMOiJERC4gTU0uIFlZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIExUIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW2RhbmFzIHVdIExUIixuZXh0RGF5OiJbc3V0cmEgdV0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW3VdIFtuZWRqZWxqdV0gW3VdIExUIjtjYXNlIDM6cmV0dXJuIlt1XSBbc3JpamVkdV0gW3VdIExUIjtjYXNlIDY6cmV0dXJuIlt1XSBbc3Vib3R1XSBbdV0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW3VdIGRkZGQgW3VdIExUIn19LGxhc3REYXk6IltqdcSNZXIgdV0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpjYXNlIDM6cmV0dXJuIltwcm/FoWx1XSBkZGRkIFt1XSBMVCI7Y2FzZSA2OnJldHVybiJbcHJvxaFsZV0gW3N1Ym90ZV0gW3VdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIltwcm/FoWxpXSBkZGRkIFt1XSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJ6YSAlcyIscGFzdDoicHJpamUgJXMiLHM6InBhciBzZWt1bmRpIixtOmMsbW06YyxoOmMsaGg6YyxkOiJkYW4iLGRkOmMsTToibWplc2VjIixNTTpjLHk6ImdvZGludSIseXk6Y30sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95Ojd9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImhyIiwiaHIiLHtjbG9zZVRleHQ6IlphdHZvcmkiLHByZXZUZXh0OiImI3gzQzsiLG5leHRUZXh0OiImI3gzRTsiLGN1cnJlbnRUZXh0OiJEYW5hcyIsbW9udGhOYW1lczpbIlNpamXEjWFuaiIsIlZlbGphxI1hIiwiT8W+dWphayIsIlRyYXZhbmoiLCJTdmliYW5qIiwiTGlwYW5qIiwiU3JwYW5qIiwiS29sb3ZveiIsIlJ1amFuIiwiTGlzdG9wYWQiLCJTdHVkZW5pIiwiUHJvc2luYWMiXSxtb250aE5hbWVzU2hvcnQ6WyJTaWoiLCJWZWxqIiwiT8W+dSIsIlRyYSIsIlN2aSIsIkxpcCIsIlNycCIsIktvbCIsIlJ1aiIsIkxpcyIsIlN0dSIsIlBybyJdLGRheU5hbWVzOlsiTmVkamVsamEiLCJQb25lZGplbGphayIsIlV0b3JhayIsIlNyaWplZGEiLCLEjGV0dnJ0YWsiLCJQZXRhayIsIlN1Ym90YSJdLGRheU5hbWVzU2hvcnQ6WyJOZWQiLCJQb24iLCJVdG8iLCJTcmkiLCLEjGV0IiwiUGV0IiwiU3ViIl0sZGF5TmFtZXNNaW46WyJOZSIsIlBvIiwiVXQiLCJTciIsIsSMZSIsIlBlIiwiU3UiXSx3ZWVrSGVhZGVyOiJUamUiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5LiIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImhyIix7YnV0dG9uVGV4dDp7bW9udGg6Ik1qZXNlYyIsd2VlazoiVGplZGFuIixkYXk6IkRhbiIsbGlzdDoiUmFzcG9yZWQifSxhbGxEYXlUZXh0OiJDaWplbGkgZGFuIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4iKyBqb8WhICIrYX19KX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIGMoYSxiLGMsZCl7dmFyIGU9YTtzd2l0Y2goYyl7Y2FzZSJzIjpyZXR1cm4gZHx8Yj8ibsOpaMOhbnkgbcOhc29kcGVyYyI6Im7DqWjDoW55IG3DoXNvZHBlcmNlIjtjYXNlIm0iOnJldHVybiJlZ3kiKyhkfHxiPyIgcGVyYyI6IiBwZXJjZSIpO2Nhc2UibW0iOnJldHVybiBlKyhkfHxiPyIgcGVyYyI6IiBwZXJjZSIpO2Nhc2UiaCI6cmV0dXJuImVneSIrKGR8fGI/IiDDs3JhIjoiIMOzcsOhamEiKTtjYXNlImhoIjpyZXR1cm4gZSsoZHx8Yj8iIMOzcmEiOiIgw7Nyw6FqYSIpO2Nhc2UiZCI6cmV0dXJuImVneSIrKGR8fGI/IiBuYXAiOiIgbmFwamEiKTtjYXNlImRkIjpyZXR1cm4gZSsoZHx8Yj8iIG5hcCI6IiBuYXBqYSIpO2Nhc2UiTSI6cmV0dXJuImVneSIrKGR8fGI/IiBow7NuYXAiOiIgaMOzbmFwamEiKTtjYXNlIk1NIjpyZXR1cm4gZSsoZHx8Yj8iIGjDs25hcCI6IiBow7NuYXBqYSIpO2Nhc2UieSI6cmV0dXJuImVneSIrKGR8fGI/IiDDqXYiOiIgw6l2ZSIpO2Nhc2UieXkiOnJldHVybiBlKyhkfHxiPyIgw6l2IjoiIMOpdmUiKX1yZXR1cm4iIn1mdW5jdGlvbiBkKGEpe3JldHVybihhPyIiOiJbbcO6bHRdICIpKyJbIitlW3RoaXMuZGF5KCldKyJdIExUWy1rb3JdIn12YXIgZT0idmFzw6FybmFwIGjDqXRmxZFuIGtlZGRlbiBzemVyZMOhbiBjc8O8dMO2cnTDtmvDtm4gcMOpbnRla2VuIHN6b21iYXRvbiIuc3BsaXQoIiAiKTsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJodSIse21vbnRoczoiamFudcOhcl9mZWJydcOhcl9tw6FyY2l1c1/DoXByaWxpc19tw6FqdXNfasO6bml1c19qw7psaXVzX2F1Z3VzenR1c19zemVwdGVtYmVyX29rdMOzYmVyX25vdmVtYmVyX2RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW5fZmViX23DoXJjX8OhcHJfbcOhal9qw7puX2rDumxfYXVnX3N6ZXB0X29rdF9ub3ZfZGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJ2YXPDoXJuYXBfaMOpdGbFkV9rZWRkX3N6ZXJkYV9jc8O8dMO2cnTDtmtfcMOpbnRla19zem9tYmF0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InZhc19ow6l0X2tlZGRfc3plX2Nzw7x0X3DDqW5fc3pvIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJ2X2hfa19zemVfY3NfcF9zem8iLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6IkxUOnNzIixMOiJZWVlZLk1NLkRELiIsTEw6IllZWVkuIE1NTU0gRC4iLExMTDoiWVlZWS4gTU1NTSBELiwgTFQiLExMTEw6IllZWVkuIE1NTU0gRC4sIGRkZGQgTFQifSxtZXJpZGllbVBhcnNlOi9kZXxkdS9pLGlzUE06ZnVuY3Rpb24oYSl7cmV0dXJuInUiPT09YS5jaGFyQXQoMSkudG9Mb3dlckNhc2UoKX0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAxMj5hP2M9PT0hMD8iZGUiOiJERSI6Yz09PSEwPyJkdSI6IkRVIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlttYV0gTFRbLWtvcl0iLG5leHREYXk6Iltob2xuYXBdIExUWy1rb3JdIixuZXh0V2VlazpmdW5jdGlvbigpe3JldHVybiBkLmNhbGwodGhpcywhMCl9LGxhc3REYXk6Ilt0ZWduYXBdIExUWy1rb3JdIixsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiBkLmNhbGwodGhpcywhMSl9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIG3Dumx2YSIscGFzdDoiJXMiLHM6YyxtOmMsbW06YyxoOmMsaGg6YyxkOmMsZGQ6YyxNOmMsTU06Yyx5OmMseXk6Y30sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95Ojd9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImh1IiwiaHUiLHtjbG9zZVRleHQ6ImJlesOhciIscHJldlRleHQ6InZpc3N6YSIsbmV4dFRleHQ6ImVsxZFyZSIsY3VycmVudFRleHQ6Im1hIixtb250aE5hbWVzOlsiSmFudcOhciIsIkZlYnJ1w6FyIiwiTcOhcmNpdXMiLCLDgXByaWxpcyIsIk3DoWp1cyIsIkrDum5pdXMiLCJKw7psaXVzIiwiQXVndXN6dHVzIiwiU3plcHRlbWJlciIsIk9rdMOzYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk3DoXIiLCLDgXByIiwiTcOhaiIsIkrDum4iLCJKw7psIiwiQXVnIiwiU3plcCIsIk9rdCIsIk5vdiIsIkRlYyJdLGRheU5hbWVzOlsiVmFzw6FybmFwIiwiSMOpdGbFkSIsIktlZGQiLCJTemVyZGEiLCJDc8O8dMO2cnTDtmsiLCJQw6ludGVrIiwiU3pvbWJhdCJdLGRheU5hbWVzU2hvcnQ6WyJWYXMiLCJIw6l0IiwiS2VkIiwiU3plIiwiQ3PDvCIsIlDDqW4iLCJTem8iXSxkYXlOYW1lc01pbjpbIlYiLCJIIiwiSyIsIlN6ZSIsIkNzIiwiUCIsIlN6byJdLHdlZWtIZWFkZXI6IkjDqXQiLGRhdGVGb3JtYXQ6Inl5Lm1tLmRkLiIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITAseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImh1Iix7YnV0dG9uVGV4dDp7bW9udGg6IkjDs25hcCIsd2VlazoiSMOpdCIsZGF5OiJOYXAiLGxpc3Q6Ik5hcGzDsyJ9LGFsbERheVRleHQ6IkVnw6lzeiBuYXAiLGV2ZW50TGltaXRUZXh0OiJ0b3bDoWJiaSJ9KX0oKSxmdW5jdGlvbigpeyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImlkIix7bW9udGhzOiJKYW51YXJpX0ZlYnJ1YXJpX01hcmV0X0FwcmlsX01laV9KdW5pX0p1bGlfQWd1c3R1c19TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYXJfQXByX01laV9KdW5fSnVsX0Fnc19TZXBfT2t0X05vdl9EZXMiLnNwbGl0KCJfIiksd2Vla2RheXM6Ik1pbmdndV9TZW5pbl9TZWxhc2FfUmFidV9LYW1pc19KdW1hdF9TYWJ0dSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJNaW5fU2VuX1NlbF9SYWJfS2FtX0p1bV9TYWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ik1nX1NuX1NsX1JiX0ttX0ptX1NiIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEgubW0iLExUUzoiTFQuc3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBbcHVrdWxdIExUIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBbcHVrdWxdIExUIn0sbWVyaWRpZW1QYXJzZTovcGFnaXxzaWFuZ3xzb3JlfG1hbGFtLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMTI9PT1hJiYoYT0wKSwicGFnaSI9PT1iP2E6InNpYW5nIj09PWI/YT49MTE/YTphKzEyOiJzb3JlIj09PWJ8fCJtYWxhbSI9PT1iP2ErMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIDExPmE/InBhZ2kiOjE1PmE/InNpYW5nIjoxOT5hPyJzb3JlIjoibWFsYW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0hhcmkgaW5pIHB1a3VsXSBMVCIsbmV4dERheToiW0Jlc29rIHB1a3VsXSBMVCIsbmV4dFdlZWs6ImRkZGQgW3B1a3VsXSBMVCIsbGFzdERheToiW0tlbWFyaW4gcHVrdWxdIExUIixsYXN0V2VlazoiZGRkZCBbbGFsdSBwdWt1bF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImRhbGFtICVzIixwYXN0OiIlcyB5YW5nIGxhbHUiLHM6ImJlYmVyYXBhIGRldGlrIixtOiJzZW1lbml0IixtbToiJWQgbWVuaXQiLGg6InNlamFtIixoaDoiJWQgamFtIixkOiJzZWhhcmkiLGRkOiIlZCBoYXJpIixNOiJzZWJ1bGFuIixNTToiJWQgYnVsYW4iLHk6InNldGFodW4iLHl5OiIlZCB0YWh1biJ9LHdlZWs6e2RvdzoxLGRveTo3fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJpZCIsImlkIix7Y2xvc2VUZXh0OiJUdXR1cCIscHJldlRleHQ6IiYjeDNDO211bmR1ciIsbmV4dFRleHQ6Im1hanUmI3gzRTsiLGN1cnJlbnRUZXh0OiJoYXJpIGluaSIsbW9udGhOYW1lczpbIkphbnVhcmkiLCJGZWJydWFyaSIsIk1hcmV0IiwiQXByaWwiLCJNZWkiLCJKdW5pIiwiSnVsaSIsIkFndXN0dXMiLCJTZXB0ZW1iZXIiLCJPa3RvYmVyIiwiTm9wZW1iZXIiLCJEZXNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1laSIsIkp1biIsIkp1bCIsIkFndXMiLCJTZXAiLCJPa3QiLCJOb3AiLCJEZXMiXSxkYXlOYW1lczpbIk1pbmdndSIsIlNlbmluIiwiU2VsYXNhIiwiUmFidSIsIkthbWlzIiwiSnVtYXQiLCJTYWJ0dSJdLGRheU5hbWVzU2hvcnQ6WyJNaW4iLCJTZW4iLCJTZWwiLCJSYWIiLCJrYW0iLCJKdW0iLCJTYWIiXSxkYXlOYW1lc01pbjpbIk1nIiwiU24iLCJTbCIsIlJiIiwiS20iLCJqbSIsIlNiIl0sd2Vla0hlYWRlcjoiTWciLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheTowLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiaWQiLHtidXR0b25UZXh0Onttb250aDoiQnVsYW4iLHdlZWs6Ik1pbmdndSIsZGF5OiJIYXJpIixsaXN0OiJBZ2VuZGEifSxhbGxEYXlIdG1sOiJTZWhhcmk8YnIvPnBlbnVoIixldmVudExpbWl0VGV4dDoibGViaWgifSl9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiBjKGEpe3JldHVybiBhJTEwMD09PTExPyEwOmElMTA9PT0xPyExOiEwfWZ1bmN0aW9uIGQoYSxiLGQsZSl7dmFyIGY9YSsiICI7c3dpdGNoKGQpe2Nhc2UicyI6cmV0dXJuIGJ8fGU/Im5va2tyYXIgc2Vrw7puZHVyIjoibm9ra3J1bSBzZWvDum5kdW0iO2Nhc2UibSI6cmV0dXJuIGI/Im3DrW7DunRhIjoibcOtbsO6dHUiO2Nhc2UibW0iOnJldHVybiBjKGEpP2YrKGJ8fGU/Im3DrW7DunR1ciI6Im3DrW7DunR1bSIpOmI/ZisibcOtbsO6dGEiOmYrIm3DrW7DunR1IjtjYXNlImhoIjpyZXR1cm4gYyhhKT9mKyhifHxlPyJrbHVra3VzdHVuZGlyIjoia2x1a2t1c3R1bmR1bSIpOmYrImtsdWtrdXN0dW5kIjtjYXNlImQiOnJldHVybiBiPyJkYWd1ciI6ZT8iZGFnIjoiZGVnaSI7Y2FzZSJkZCI6cmV0dXJuIGMoYSk/Yj9mKyJkYWdhciI6ZisoZT8iZGFnYSI6ImTDtmd1bSIpOmI/ZisiZGFndXIiOmYrKGU/ImRhZyI6ImRlZ2kiKTtjYXNlIk0iOnJldHVybiBiPyJtw6FudcOwdXIiOmU/Im3DoW51w7AiOiJtw6FudcOwaSI7Y2FzZSJNTSI6cmV0dXJuIGMoYSk/Yj9mKyJtw6FudcOwaXIiOmYrKGU/Im3DoW51w7BpIjoibcOhbnXDsHVtIik6Yj9mKyJtw6FudcOwdXIiOmYrKGU/Im3DoW51w7AiOiJtw6FudcOwaSIpO2Nhc2UieSI6cmV0dXJuIGJ8fGU/IsOhciI6IsOhcmkiO2Nhc2UieXkiOnJldHVybiBjKGEpP2YrKGJ8fGU/IsOhciI6IsOhcnVtIik6ZisoYnx8ZT8iw6FyIjoiw6FyaSIpfX0oYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJpcyIse21vbnRoczoiamFuw7phcl9mZWJyw7phcl9tYXJzX2FwcsOtbF9tYcOtX2rDum7DrV9qw7psw61fw6Fnw7pzdF9zZXB0ZW1iZXJfb2t0w7NiZXJfbsOzdmVtYmVyX2Rlc2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW5fZmViX21hcl9hcHJfbWHDrV9qw7puX2rDumxfw6Fnw7pfc2VwX29rdF9uw7N2X2RlcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoic3VubnVkYWd1cl9tw6FudWRhZ3VyX8O+cmnDsGp1ZGFndXJfbWnDsHZpa3VkYWd1cl9maW1tdHVkYWd1cl9mw7ZzdHVkYWd1cl9sYXVnYXJkYWd1ciIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJzdW5fbcOhbl/DvnJpX21pw7BfZmltX2bDtnNfbGF1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdV9Nw6Ffw55yX01pX0ZpX0bDtl9MYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiTFQ6c3MiLEw6IkREL01NL1lZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIFtrbC5dIExUIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgW2tsLl0gTFQifSxjYWxlbmRhcjp7c2FtZURheToiW8OtIGRhZyBrbC5dIExUIixuZXh0RGF5OiJbw6EgbW9yZ3VuIGtsLl0gTFQiLG5leHRXZWVrOiJkZGRkIFtrbC5dIExUIixsYXN0RGF5OiJbw60gZ8OmciBrbC5dIExUIixsYXN0V2VlazoiW3PDrcOwYXN0YV0gZGRkZCBba2wuXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZWZ0aXIgJXMiLHBhc3Q6ImZ5cmlyICVzIHPDrcOwYW4iLHM6ZCxtOmQsbW06ZCxoOiJrbHVra3VzdHVuZCIsaGg6ZCxkOmQsZGQ6ZCxNOmQsTU06ZCx5OmQseXk6ZH0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImlzIiwiaXMiLHtjbG9zZVRleHQ6Ikxva2EiLHByZXZUZXh0OiImI3gzQzsgRnlycmkiLG5leHRUZXh0OiJOw6ZzdGkgJiN4M0U7IixjdXJyZW50VGV4dDoiw40gZGFnIixtb250aE5hbWVzOlsiSmFuw7phciIsIkZlYnLDumFyIiwiTWFycyIsIkFwcsOtbCIsIk1hw60iLCJKw7puw60iLCJKw7psw60iLCLDgWfDunN0IiwiU2VwdGVtYmVyIiwiT2t0w7NiZXIiLCJOw7N2ZW1iZXIiLCJEZXNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1hw60iLCJKw7puIiwiSsO6bCIsIsOBZ8O6IiwiU2VwIiwiT2t0IiwiTsOzdiIsIkRlcyJdLGRheU5hbWVzOlsiU3VubnVkYWd1ciIsIk3DoW51ZGFndXIiLCLDnnJpw7BqdWRhZ3VyIiwiTWnDsHZpa3VkYWd1ciIsIkZpbW10dWRhZ3VyIiwiRsO2c3R1ZGFndXIiLCJMYXVnYXJkYWd1ciJdLGRheU5hbWVzU2hvcnQ6WyJTdW4iLCJNw6FuIiwiw55yaSIsIk1pw7AiLCJGaW0iLCJGw7ZzIiwiTGF1Il0sZGF5TmFtZXNNaW46WyJTdSIsIk3DoSIsIsOeciIsIk1pIiwiRmkiLCJGw7YiLCJMYSJdLHdlZWtIZWFkZXI6IlZpa2EiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheTowLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiaXMiLHtidXR0b25UZXh0Onttb250aDoiTcOhbnXDsHVyIix3ZWVrOiJWaWthIixkYXk6IkRhZ3VyIixsaXN0OiJEYWdza3LDoSJ9LGFsbERheUh0bWw6IkFsbGFuPGJyLz5kYWdpbm4iLGV2ZW50TGltaXRUZXh0OiJtZWlyYSJ9KX0oKSxmdW5jdGlvbigpeyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsIml0Iix7bW9udGhzOiJnZW5uYWlvX2ZlYmJyYWlvX21hcnpvX2FwcmlsZV9tYWdnaW9fZ2l1Z25vX2x1Z2xpb19hZ29zdG9fc2V0dGVtYnJlX290dG9icmVfbm92ZW1icmVfZGljZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imdlbl9mZWJfbWFyX2Fwcl9tYWdfZ2l1X2x1Z19hZ29fc2V0X290dF9ub3ZfZGljIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJEb21lbmljYV9MdW5lZMOsX01hcnRlZMOsX01lcmNvbGVkw6xfR2lvdmVkw6xfVmVuZXJkw6xfU2FiYXRvIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkRvbV9MdW5fTWFyX01lcl9HaW9fVmVuX1NhYiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiRF9MX01hX01lX0dfVl9TIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiTFQ6c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBMVCIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW09nZ2kgYWxsZV0gTFQiLG5leHREYXk6IltEb21hbmkgYWxsZV0gTFQiLG5leHRXZWVrOiJkZGRkIFthbGxlXSBMVCIsbGFzdERheToiW0llcmkgYWxsZV0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW2xhIHNjb3JzYV0gZGRkZCBbYWxsZV0gTFQiO2RlZmF1bHQ6cmV0dXJuIltsbyBzY29yc29dIGRkZGQgW2FsbGVdIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ZnVuY3Rpb24oYSl7cmV0dXJuKC9eWzAtOV0uKyQvLnRlc3QoYSk/InRyYSI6ImluIikrIiAiK2F9LHBhc3Q6IiVzIGZhIixzOiJhbGN1bmkgc2Vjb25kaSIsbToidW4gbWludXRvIixtbToiJWQgbWludXRpIixoOiJ1bidvcmEiLGhoOiIlZCBvcmUiLGQ6InVuIGdpb3JubyIsZGQ6IiVkIGdpb3JuaSIsTToidW4gbWVzZSIsTU06IiVkIG1lc2kiLHk6InVuIGFubm8iLHl5OiIlZCBhbm5pIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9wrovLG9yZGluYWw6IiVkwroiLHdlZWs6e2RvdzoxLGRveTo0fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJpdCIsIml0Iix7Y2xvc2VUZXh0OiJDaGl1ZGkiLHByZXZUZXh0OiImI3gzQztQcmVjIixuZXh0VGV4dDoiU3VjYyYjeDNFOyIsY3VycmVudFRleHQ6Ik9nZ2kiLG1vbnRoTmFtZXM6WyJHZW5uYWlvIiwiRmViYnJhaW8iLCJNYXJ6byIsIkFwcmlsZSIsIk1hZ2dpbyIsIkdpdWdubyIsIkx1Z2xpbyIsIkFnb3N0byIsIlNldHRlbWJyZSIsIk90dG9icmUiLCJOb3ZlbWJyZSIsIkRpY2VtYnJlIl0sbW9udGhOYW1lc1Nob3J0OlsiR2VuIiwiRmViIiwiTWFyIiwiQXByIiwiTWFnIiwiR2l1IiwiTHVnIiwiQWdvIiwiU2V0IiwiT3R0IiwiTm92IiwiRGljIl0sZGF5TmFtZXM6WyJEb21lbmljYSIsIkx1bmVkw6wiLCJNYXJ0ZWTDrCIsIk1lcmNvbGVkw6wiLCJHaW92ZWTDrCIsIlZlbmVyZMOsIiwiU2FiYXRvIl0sZGF5TmFtZXNTaG9ydDpbIkRvbSIsIkx1biIsIk1hciIsIk1lciIsIkdpbyIsIlZlbiIsIlNhYiJdLGRheU5hbWVzTWluOlsiRG8iLCJMdSIsIk1hIiwiTWUiLCJHaSIsIlZlIiwiU2EiXSx3ZWVrSGVhZGVyOiJTbSIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJpdCIse2J1dHRvblRleHQ6e21vbnRoOiJNZXNlIix3ZWVrOiJTZXR0aW1hbmEiLGRheToiR2lvcm5vIixsaXN0OiJBZ2VuZGEifSxhbGxEYXlIdG1sOiJUdXR0byBpbDxici8+Z2lvcm5vIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4iK2FsdHJpICIrYX19KX0oKSxmdW5jdGlvbigpeyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImphIix7bW9udGhzOiIx5pyIXzLmnIhfM+aciF805pyIXzXmnIhfNuaciF835pyIXzjmnIhfOeaciF8xMOaciF8xMeaciF8xMuaciCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiMeaciF8y5pyIXzPmnIhfNOaciF815pyIXzbmnIhfN+aciF845pyIXznmnIhfMTDmnIhfMTHmnIhfMTLmnIgiLnNwbGl0KCJfIiksd2Vla2RheXM6IuaXpeabnOaXpV/mnIjmm5zml6Vf54Gr5puc5pelX+awtOabnOaXpV/mnKjmm5zml6Vf6YeR5puc5pelX+Wcn+abnOaXpSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLml6Vf5pyIX+eBq1/msLRf5pyoX+mHkV/lnJ8iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IuaXpV/mnIhf54GrX+awtF/mnKhf6YeRX+WcnyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkFo5pmCbeWIhiIsTFRTOiJMVHPnp5IiLEw6IllZWVkvTU0vREQiLExMOiJZWVlZ5bm0TeaciETml6UiLExMTDoiWVlZWeW5tE3mnIhE5pelTFQiLExMTEw6IllZWVnlubRN5pyIROaXpUxUIGRkZGQifSxtZXJpZGllbVBhcnNlOi/ljYjliY185Y2I5b6ML2ksaXNQTTpmdW5jdGlvbihhKXtyZXR1cm4i5Y2I5b6MIj09PWF9LG1lcmlkaWVtOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMTI+YT8i5Y2I5YmNIjoi5Y2I5b6MIn0sY2FsZW5kYXI6e3NhbWVEYXk6Ilvku4rml6VdIExUIixuZXh0RGF5OiJb5piO5pelXSBMVCIsbmV4dFdlZWs6IlvmnaXpgLFdZGRkZCBMVCIsbGFzdERheToiW+aYqOaXpV0gTFQiLGxhc3RXZWVrOiJb5YmN6YCxXWRkZGQgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVz5b6MIixwYXN0OiIlc+WJjSIsczoi5pWw56eSIixtOiIx5YiGIixtbToiJWTliIYiLGg6IjHmmYLplpMiLGhoOiIlZOaZgumWkyIsZDoiMeaXpSIsZGQ6IiVk5pelIixNOiIx44O25pyIIixNTToiJWTjg7bmnIgiLHk6IjHlubQiLHl5OiIlZOW5tCJ9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImphIiwiamEiLHtjbG9zZVRleHQ6IumWieOBmOOCiyIscHJldlRleHQ6IiYjeDNDO+WJjSIsbmV4dFRleHQ6IuasoSYjeDNFOyIsY3VycmVudFRleHQ6IuS7iuaXpSIsbW9udGhOYW1lczpbIjHmnIgiLCIy5pyIIiwiM+aciCIsIjTmnIgiLCI15pyIIiwiNuaciCIsIjfmnIgiLCI45pyIIiwiOeaciCIsIjEw5pyIIiwiMTHmnIgiLCIxMuaciCJdLG1vbnRoTmFtZXNTaG9ydDpbIjHmnIgiLCIy5pyIIiwiM+aciCIsIjTmnIgiLCI15pyIIiwiNuaciCIsIjfmnIgiLCI45pyIIiwiOeaciCIsIjEw5pyIIiwiMTHmnIgiLCIxMuaciCJdLGRheU5hbWVzOlsi5pel5puc5pelIiwi5pyI5puc5pelIiwi54Gr5puc5pelIiwi5rC05puc5pelIiwi5pyo5puc5pelIiwi6YeR5puc5pelIiwi5Zyf5puc5pelIl0sZGF5TmFtZXNTaG9ydDpbIuaXpSIsIuaciCIsIueBqyIsIuawtCIsIuacqCIsIumHkSIsIuWcnyJdLGRheU5hbWVzTWluOlsi5pelIiwi5pyIIiwi54GrIiwi5rC0Iiwi5pyoIiwi6YeRIiwi5ZyfIl0sd2Vla0hlYWRlcjoi6YCxIixkYXRlRm9ybWF0OiJ5eS9tbS9kZCIsZmlyc3REYXk6MCxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITAseWVhclN1ZmZpeDoi5bm0In0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImphIix7YnV0dG9uVGV4dDp7bW9udGg6IuaciCIsd2Vlazoi6YCxIixkYXk6IuaXpSIsbGlzdDoi5LqI5a6a44Oq44K544OIIn0sYWxsRGF5VGV4dDoi57WC5pelIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4i5LuWICIrYSsiIOS7tiJ9fSl9KCksZnVuY3Rpb24oKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJrbyIse21vbnRoczoiMeyblF8y7JuUXzPsm5RfNOyblF817JuUXzbsm5RfN+yblF847JuUXznsm5RfMTDsm5RfMTHsm5RfMTLsm5QiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IjHsm5RfMuyblF8z7JuUXzTsm5RfNeyblF827JuUXzfsm5RfOOyblF857JuUXzEw7JuUXzEx7JuUXzEy7JuUIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiLsnbzsmpTsnbxf7JuU7JqU7J28X+2ZlOyalOydvF/siJjsmpTsnbxf66qp7JqU7J28X+q4iOyalOydvF/thqDsmpTsnbwiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi7J28X+yblF/tmZRf7IiYX+uqqV/quIhf7YagIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLsnbxf7JuUX+2ZlF/siJhf66qpX+q4iF/thqAiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGjsi5wgbeu2hCIsTFRTOiJBIGjsi5wgbeu2hCBz7LSIIixMOiJZWVlZLk1NLkREIixMTDoiWVlZWeuFhCBNTU1NIETsnbwiLExMTDoiWVlZWeuFhCBNTU1NIETsnbwgTFQiLExMTEw6IllZWVnrhYQgTU1NTSBE7J28IGRkZGQgTFQifSxjYWxlbmRhcjp7c2FtZURheToi7Jik64qYIExUIixuZXh0RGF5OiLrgrTsnbwgTFQiLG5leHRXZWVrOiJkZGRkIExUIixsYXN0RGF5OiLslrTsoJwgTFQiLGxhc3RXZWVrOiLsp4Drgpzso7wgZGRkZCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMg7ZuEIixwYXN0OiIlcyDsoIQiLHM6Iuuqh+y0iCIsc3M6IiVk7LSIIixtOiLsnbzrtoQiLG1tOiIlZOu2hCIsaDoi7ZWc7Iuc6rCEIixoaDoiJWTsi5zqsIQiLGQ6Iu2VmOujqCIsZGQ6IiVk7J28IixNOiLtlZzri6wiLE1NOiIlZOuLrCIseToi7J2864WEIix5eToiJWTrhYQifSxvcmRpbmFsUGFyc2U6L1xkezEsMn3snbwvLG9yZGluYWw6IiVk7J28IixtZXJpZGllbVBhcnNlOi/smKTsoIR87Jik7ZuELyxpc1BNOmZ1bmN0aW9uKGEpe3JldHVybiLsmKTtm4QiPT09YX0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAxMj5hPyLsmKTsoIQiOiLsmKTtm4QifX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJrbyIsImtvIix7Y2xvc2VUZXh0OiLri6vquLAiLHByZXZUZXh0OiLsnbTsoITri6wiLG5leHRUZXh0OiLri6TsnYzri6wiLGN1cnJlbnRUZXh0OiLsmKTripgiLG1vbnRoTmFtZXM6WyIx7JuUIiwiMuyblCIsIjPsm5QiLCI07JuUIiwiNeyblCIsIjbsm5QiLCI37JuUIiwiOOyblCIsIjnsm5QiLCIxMOyblCIsIjEx7JuUIiwiMTLsm5QiXSxtb250aE5hbWVzU2hvcnQ6WyIx7JuUIiwiMuyblCIsIjPsm5QiLCI07JuUIiwiNeyblCIsIjbsm5QiLCI37JuUIiwiOOyblCIsIjnsm5QiLCIxMOyblCIsIjEx7JuUIiwiMTLsm5QiXSxkYXlOYW1lczpbIuydvOyalOydvCIsIuyblOyalOydvCIsIu2ZlOyalOydvCIsIuyImOyalOydvCIsIuuqqeyalOydvCIsIuq4iOyalOydvCIsIu2GoOyalOydvCJdLGRheU5hbWVzU2hvcnQ6WyLsnbwiLCLsm5QiLCLtmZQiLCLsiJgiLCLrqqkiLCLquIgiLCLthqAiXSxkYXlOYW1lc01pbjpbIuydvCIsIuyblCIsIu2ZlCIsIuyImCIsIuuqqSIsIuq4iCIsIu2GoCJdLHdlZWtIZWFkZXI6IldrIixkYXRlRm9ybWF0OiJ5eS1tbS1kZCIsZmlyc3REYXk6MCxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITAseWVhclN1ZmZpeDoi64WEIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImtvIix7YnV0dG9uVGV4dDp7bW9udGg6IuyblCIsd2Vlazoi7KO8IixkYXk6IuydvCIsbGlzdDoi7J287KCV66qp66GdIn0sYWxsRGF5VGV4dDoi7KKF7J28IixldmVudExpbWl0VGV4dDoi6rCcIn0pfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhhLGIsYyxkKXtyZXR1cm4gYj8ia2VsaW9zIHNla3VuZMSXcyI6ZD8ia2VsacWzIHNla3VuZMW+acWzIjoia2VsaWFzIHNla3VuZGVzIn1mdW5jdGlvbiBkKGEsYixjLGQpe3JldHVybiBiP2YoYylbMF06ZD9mKGMpWzFdOmYoYylbMl19ZnVuY3Rpb24gZShhKXtyZXR1cm4gYSUxMD09PTB8fGE+MTAmJjIwPmF9ZnVuY3Rpb24gZihhKXtyZXR1cm4gaVthXS5zcGxpdCgiXyIpfWZ1bmN0aW9uIGcoYSxiLGMsZyl7dmFyIGg9YSsiICI7cmV0dXJuIDE9PT1hP2grZChhLGIsY1swXSxnKTpiP2grKGUoYSk/ZihjKVsxXTpmKGMpWzBdKTpnP2grZihjKVsxXTpoKyhlKGEpP2YoYylbMV06ZihjKVsyXSl9ZnVuY3Rpb24gaChhLGIpe3ZhciBjPS0xPT09Yi5pbmRleE9mKCJkZGRkIEhIOm1tIiksZD1qW2EuZGF5KCldO3JldHVybiBjP2Q6ZC5zdWJzdHJpbmcoMCxkLmxlbmd0aC0yKSsixK8ifXZhciBpPXttOiJtaW51dMSXX21pbnV0xJdzX21pbnV0xJkiLG1tOiJtaW51dMSXc19taW51xI1pxbNfbWludXRlcyIsaDoidmFsYW5kYV92YWxhbmRvc192YWxhbmTEhSIsaGg6InZhbGFuZG9zX3ZhbGFuZMWzX3ZhbGFuZGFzIixkOiJkaWVuYV9kaWVub3NfZGllbsSFIixkZDoiZGllbm9zX2RpZW7Fs19kaWVuYXMiLE06Im3El251b19txJduZXNpb19txJduZXPEryIsTU06Im3El25lc2lhaV9txJduZXNpxbNfbcSXbmVzaXVzIix5OiJtZXRhaV9tZXTFs19tZXR1cyIseXk6Im1ldGFpX21ldMWzX21ldHVzIn0saj0ic2VrbWFkaWVuaXNfcGlybWFkaWVuaXNfYW50cmFkaWVuaXNfdHJlxI1pYWRpZW5pc19rZXR2aXJ0YWRpZW5pc19wZW5rdGFkaWVuaXNfxaFlxaF0YWRpZW5pcyIuc3BsaXQoIl8iKTsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJsdCIse21vbnRoczoic2F1c2lvX3Zhc2FyaW9fa292b19iYWxhbmTFvmlvX2dlZ3XFvsSXc19iaXLFvmVsaW9fbGllcG9zX3J1Z3BqxavEjWlvX3J1Z3PEl2pvX3NwYWxpb19sYXBrcmnEjWlvX2dydW9kxb5pbyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoic2F1X3Zhc19rb3ZfYmFsX2dlZ19iaXJfbGllX3JncF9yZ3Nfc3BhX2xhcF9ncmQiLnNwbGl0KCJfIiksd2Vla2RheXM6aCx3ZWVrZGF5c1Nob3J0OiJTZWtfUGlyX0FudF9UcmVfS2V0X1Blbl/FoGXFoSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU19QX0FfVF9LX1BuX8WgIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiTFQ6c3MiLEw6IllZWVktTU0tREQiLExMOiJZWVlZIFttLl0gTU1NTSBEIFtkLl0iLExMTDoiWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBMVCBbdmFsLl0iLExMTEw6IllZWVkgW20uXSBNTU1NIEQgW2QuXSwgZGRkZCwgTFQgW3ZhbC5dIixsOiJZWVlZLU1NLUREIixsbDoiWVlZWSBbbS5dIE1NTU0gRCBbZC5dIixsbGw6IllZWVkgW20uXSBNTU1NIEQgW2QuXSwgTFQgW3ZhbC5dIixsbGxsOiJZWVlZIFttLl0gTU1NTSBEIFtkLl0sIGRkZCwgTFQgW3ZhbC5dIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvFoGlhbmRpZW5dIExUIixuZXh0RGF5OiJbUnl0b2pdIExUIixuZXh0V2VlazoiZGRkZCBMVCIsbGFzdERheToiW1Zha2FyXSBMVCIsbGFzdFdlZWs6IltQcmHEl2p1c8SvXSBkZGRkIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJwbyAlcyIscGFzdDoicHJpZcWhICVzIixzOmMsbTpkLG1tOmcsaDpkLGhoOmcsZDpkLGRkOmcsTTpkLE1NOmcseTpkLHl5Omd9LG9yZGluYWxQYXJzZTovXGR7MSwyfS1vamkvLG9yZGluYWw6ZnVuY3Rpb24oYSl7cmV0dXJuIGErIi1vamkifSx3ZWVrOntkb3c6MSxkb3k6NH19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygibHQiLCJsdCIse2Nsb3NlVGV4dDoiVcW+ZGFyeXRpIixwcmV2VGV4dDoiJiN4M0M7QXRnYWwiLG5leHRUZXh0OiJQaXJteW4mI3gzRTsiLGN1cnJlbnRUZXh0OiLFoGlhbmRpZW4iLG1vbnRoTmFtZXM6WyJTYXVzaXMiLCJWYXNhcmlzIiwiS292YXMiLCJCYWxhbmRpcyIsIkdlZ3XFvsSXIiwiQmlyxb5lbGlzIiwiTGllcGEiLCJSdWdwasWrdGlzIiwiUnVnc8SXamlzIiwiU3BhbGlzIiwiTGFwa3JpdGlzIiwiR3J1b2RpcyJdLG1vbnRoTmFtZXNTaG9ydDpbIlNhdSIsIlZhcyIsIktvdiIsIkJhbCIsIkdlZyIsIkJpciIsIkxpZSIsIlJ1Z3AiLCJSdWdzIiwiU3BhIiwiTGFwIiwiR3J1Il0sZGF5TmFtZXM6WyJzZWttYWRpZW5pcyIsInBpcm1hZGllbmlzIiwiYW50cmFkaWVuaXMiLCJ0cmXEjWlhZGllbmlzIiwia2V0dmlydGFkaWVuaXMiLCJwZW5rdGFkaWVuaXMiLCLFoWXFoXRhZGllbmlzIl0sZGF5TmFtZXNTaG9ydDpbInNlayIsInBpciIsImFudCIsInRyZSIsImtldCIsInBlbiIsIsWhZcWhIl0sZGF5TmFtZXNNaW46WyJTZSIsIlByIiwiQW4iLCJUciIsIktlIiwiUGUiLCLFoGUiXSx3ZWVrSGVhZGVyOiJTQVYiLGRhdGVGb3JtYXQ6Inl5LW1tLWRkIixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMCx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygibHQiLHtidXR0b25UZXh0Onttb250aDoiTcSXbnVvIix3ZWVrOiJTYXZhaXTElyIsZGF5OiJEaWVuYSIsbGlzdDoiRGFyYm90dmFya8SXIn0sYWxsRGF5VGV4dDoiVmlzxIUgZGllbsSFIixldmVudExpbWl0VGV4dDoiZGF1Z2lhdSJ9KX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIGMoYSxiLGMpe3ZhciBkPWEuc3BsaXQoIl8iKTtyZXR1cm4gYz9iJTEwPT09MSYmMTEhPT1iP2RbMl06ZFszXTpiJTEwPT09MSYmMTEhPT1iP2RbMF06ZFsxXX1mdW5jdGlvbiBkKGEsYixkKXtyZXR1cm4gYSsiICIrYyhlW2RdLGEsYil9dmFyIGU9e21tOiJtaW7Fq3RpX21pbsWrdGVzX21pbsWrdGVfbWluxat0ZXMiLGhoOiJzdHVuZHVfc3R1bmRhc19zdHVuZGFfc3R1bmRhcyIsZGQ6ImRpZW51X2RpZW5hc19kaWVuYV9kaWVuYXMiLE1NOiJtxJNuZXNpX23Ek25lxaF1c19txJNuZXNpc19txJNuZcWhaSIseXk6ImdhZHVfZ2FkdXNfZ2Fkc19nYWRpIn07KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwibHYiLHttb250aHM6ImphbnbEgXJpc19mZWJydcSBcmlzX21hcnRzX2FwcsSrbGlzX21haWpzX2rFq25panNfasWrbGlqc19hdWd1c3RzX3NlcHRlbWJyaXNfb2t0b2JyaXNfbm92ZW1icmlzX2RlY2VtYnJpcyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2ZlYl9tYXJfYXByX21haV9qxatuX2rFq2xfYXVnX3NlcF9va3Rfbm92X2RlYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoic3bEk3RkaWVuYV9waXJtZGllbmFfb3RyZGllbmFfdHJlxaFkaWVuYV9jZXR1cnRkaWVuYV9waWVrdGRpZW5hX3Nlc3RkaWVuYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdl9QX09fVF9DX1BrX1MiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN2X1BfT19UX0NfUGtfUyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkxUOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiWVlZWS4gW2dhZGFdIEQuIE1NTU0iLExMTDoiWVlZWS4gW2dhZGFdIEQuIE1NTU0sIExUIixMTExMOiJZWVlZLiBbZ2FkYV0gRC4gTU1NTSwgZGRkZCwgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW8Wgb2RpZW4gcHVsa3N0ZW5dIExUIixuZXh0RGF5OiJbUsSrdCBwdWxrc3Rlbl0gTFQiLG5leHRXZWVrOiJkZGRkIFtwdWxrc3Rlbl0gTFQiLGxhc3REYXk6IltWYWthciBwdWxrc3Rlbl0gTFQiLGxhc3RXZWVrOiJbUGFnxIFqdcWhxIFdIGRkZGQgW3B1bGtzdGVuXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgdsSTbMSBayIscGFzdDoiJXMgYWdyxIFrIixzOiJkYcW+YXMgc2VrdW5kZXMiLG06Im1pbsWrdGkiLG1tOmQsaDoic3R1bmR1IixoaDpkLGQ6ImRpZW51IixkZDpkLE06Im3Ek25lc2kiLE1NOmQseToiZ2FkdSIseXk6ZH0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImx2IiwibHYiLHtjbG9zZVRleHQ6IkFpenbEk3J0IixwcmV2VGV4dDoiSWVwci4iLG5leHRUZXh0OiJOxIFrLiIsY3VycmVudFRleHQ6IsWgb2RpZW4iLG1vbnRoTmFtZXM6WyJKYW52xIFyaXMiLCJGZWJydcSBcmlzIiwiTWFydHMiLCJBcHLEq2xpcyIsIk1haWpzIiwiSsWrbmlqcyIsIkrFq2xpanMiLCJBdWd1c3RzIiwiU2VwdGVtYnJpcyIsIk9rdG9icmlzIiwiTm92ZW1icmlzIiwiRGVjZW1icmlzIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWFpIiwiSsWrbiIsIkrFq2wiLCJBdWciLCJTZXAiLCJPa3QiLCJOb3YiLCJEZWMiXSxkYXlOYW1lczpbInN2xJN0ZGllbmEiLCJwaXJtZGllbmEiLCJvdHJkaWVuYSIsInRyZcWhZGllbmEiLCJjZXR1cnRkaWVuYSIsInBpZWt0ZGllbmEiLCJzZXN0ZGllbmEiXSxkYXlOYW1lc1Nob3J0Olsic3Z0IiwicHJtIiwib3RyIiwidHJlIiwiY3RyIiwicGt0Iiwic3N0Il0sZGF5TmFtZXNNaW46WyJTdiIsIlByIiwiT3QiLCJUciIsIkN0IiwiUGsiLCJTcyJdLHdlZWtIZWFkZXI6Ik5lZC4iLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygibHYiLHtidXR0b25UZXh0Onttb250aDoiTcSTbmVzaXMiLHdlZWs6Ik5lZMSTxLxhIixkYXk6IkRpZW5hIixsaXN0OiJEaWVuYXMga8SBcnTEq2JhIn0sYWxsRGF5VGV4dDoiVmlzdSBkaWVudSIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIit2xJNsICIrYX19KX0oKSxmdW5jdGlvbigpeyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsIm5iIix7bW9udGhzOiJqYW51YXJfZmVicnVhcl9tYXJzX2FwcmlsX21haV9qdW5pX2p1bGlfYXVndXN0X3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2Rlc2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW5fZmViX21hcl9hcHJfbWFpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoic8O4bmRhZ19tYW5kYWdfdGlyc2RhZ19vbnNkYWdfdG9yc2RhZ19mcmVkYWdfbMO4cmRhZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJzw7huX21hbl90aXJzX29uc190b3JzX2ZyZV9sw7hyIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJzw7hfbWFfdGlfb25fdG9fZnJfbMO4Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSC5tbSIsTFRTOiJMVC5zcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgW2tsLl0gTFQiLExMTEw6ImRkZGQgRC4gTU1NTSBZWVlZIFtrbC5dIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltpIGRhZyBrbC5dIExUIixuZXh0RGF5OiJbaSBtb3JnZW4ga2wuXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2tsLl0gTFQiLGxhc3REYXk6IltpIGfDpXIga2wuXSBMVCIsbGFzdFdlZWs6Iltmb3JyaWdlXSBkZGRkIFtrbC5dIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJvbSAlcyIscGFzdDoiZm9yICVzIHNpZGVuIixzOiJub2VuIHNla3VuZGVyIixtOiJldHQgbWludXR0IixtbToiJWQgbWludXR0ZXIiLGg6ImVuIHRpbWUiLGhoOiIlZCB0aW1lciIsZDoiZW4gZGFnIixkZDoiJWQgZGFnZXIiLE06ImVuIG3DpW5lZCIsTU06IiVkIG3DpW5lZGVyIix5OiJldHQgw6VyIix5eToiJWQgw6VyIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoIm5iIiwibmIiLHtjbG9zZVRleHQ6Ikx1a2siLHByZXZUZXh0OiImI3hBQjtGb3JyaWdlIixuZXh0VGV4dDoiTmVzdGUmI3hCQjsiLGN1cnJlbnRUZXh0OiJJIGRhZyIsbW9udGhOYW1lczpbImphbnVhciIsImZlYnJ1YXIiLCJtYXJzIiwiYXByaWwiLCJtYWkiLCJqdW5pIiwianVsaSIsImF1Z3VzdCIsInNlcHRlbWJlciIsIm9rdG9iZXIiLCJub3ZlbWJlciIsImRlc2VtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiamFuIiwiZmViIiwibWFyIiwiYXByIiwibWFpIiwianVuIiwianVsIiwiYXVnIiwic2VwIiwib2t0Iiwibm92IiwiZGVzIl0sZGF5TmFtZXNTaG9ydDpbInPDuG4iLCJtYW4iLCJ0aXIiLCJvbnMiLCJ0b3IiLCJmcmUiLCJsw7hyIl0sZGF5TmFtZXM6WyJzw7huZGFnIiwibWFuZGFnIiwidGlyc2RhZyIsIm9uc2RhZyIsInRvcnNkYWciLCJmcmVkYWciLCJsw7hyZGFnIl0sZGF5TmFtZXNNaW46WyJzw7giLCJtYSIsInRpIiwib24iLCJ0byIsImZyIiwibMO4Il0sd2Vla0hlYWRlcjoiVWtlIixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoIm5iIix7YnV0dG9uVGV4dDp7bW9udGg6Ik3DpW5lZCIsd2VlazoiVWtlIixkYXk6IkRhZyIsbGlzdDoiQWdlbmRhIn0sYWxsRGF5VGV4dDoiSGVsZSBkYWdlbiIsZXZlbnRMaW1pdFRleHQ6InRpbCJ9KX0oKSxmdW5jdGlvbigpe3ZhciBjPSJqYW4uX2ZlYi5fbXJ0Ll9hcHIuX21laV9qdW4uX2p1bC5fYXVnLl9zZXAuX29rdC5fbm92Ll9kZWMuIi5zcGxpdCgiXyIpLGQ9Imphbl9mZWJfbXJ0X2Fwcl9tZWlfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVjIi5zcGxpdCgiXyIpOyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsIm5sIix7bW9udGhzOiJqYW51YXJpX2ZlYnJ1YXJpX21hYXJ0X2FwcmlsX21laV9qdW5pX2p1bGlfYXVndXN0dXNfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4vLU1NTS0vLnRlc3QoYik/ZFthLm1vbnRoKCldOmNbYS5tb250aCgpXX0sd2Vla2RheXM6InpvbmRhZ19tYWFuZGFnX2RpbnNkYWdfd29lbnNkYWdfZG9uZGVyZGFnX3ZyaWpkYWdfemF0ZXJkYWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiem8uX21hLl9kaS5fd28uX2RvLl92ci5femEuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJab19NYV9EaV9Xb19Eb19Wcl9aYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkxUOnNzIixMOiJERC1NTS1ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW3ZhbmRhYWcgb21dIExUIixuZXh0RGF5OiJbbW9yZ2VuIG9tXSBMVCIsbmV4dFdlZWs6ImRkZGQgW29tXSBMVCIsbGFzdERheToiW2dpc3RlcmVuIG9tXSBMVCIsbGFzdFdlZWs6IlthZmdlbG9wZW5dIGRkZGQgW29tXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToib3ZlciAlcyIscGFzdDoiJXMgZ2VsZWRlbiIsczoiZWVuIHBhYXIgc2Vjb25kZW4iLG06IsOpw6luIG1pbnV1dCIsbW06IiVkIG1pbnV0ZW4iLGg6IsOpw6luIHV1ciIsaGg6IiVkIHV1ciIsZDoiw6nDqW4gZGFnIixkZDoiJWQgZGFnZW4iLE06IsOpw6luIG1hYW5kIixNTToiJWQgbWFhbmRlbiIseToiw6nDqW4gamFhciIseXk6IiVkIGphYXIifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0oc3RlfGRlKS8sb3JkaW5hbDpmdW5jdGlvbihhKXtyZXR1cm4gYSsoMT09PWF8fDg9PT1hfHxhPj0yMD8ic3RlIjoiZGUiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoIm5sIiwibmwiLHtjbG9zZVRleHQ6IlNsdWl0ZW4iLHByZXZUZXh0OiLihpAiLG5leHRUZXh0OiLihpIiLGN1cnJlbnRUZXh0OiJWYW5kYWFnIixtb250aE5hbWVzOlsiamFudWFyaSIsImZlYnJ1YXJpIiwibWFhcnQiLCJhcHJpbCIsIm1laSIsImp1bmkiLCJqdWxpIiwiYXVndXN0dXMiLCJzZXB0ZW1iZXIiLCJva3RvYmVyIiwibm92ZW1iZXIiLCJkZWNlbWJlciJdLAptb250aE5hbWVzU2hvcnQ6WyJqYW4iLCJmZWIiLCJtcnQiLCJhcHIiLCJtZWkiLCJqdW4iLCJqdWwiLCJhdWciLCJzZXAiLCJva3QiLCJub3YiLCJkZWMiXSxkYXlOYW1lczpbInpvbmRhZyIsIm1hYW5kYWciLCJkaW5zZGFnIiwid29lbnNkYWciLCJkb25kZXJkYWciLCJ2cmlqZGFnIiwiemF0ZXJkYWciXSxkYXlOYW1lc1Nob3J0Olsiem9uIiwibWFhIiwiZGluIiwid29lIiwiZG9uIiwidnJpIiwiemF0Il0sZGF5TmFtZXNNaW46WyJ6byIsIm1hIiwiZGkiLCJ3byIsImRvIiwidnIiLCJ6YSJdLHdlZWtIZWFkZXI6IldrIixkYXRlRm9ybWF0OiJkZC1tbS15eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoIm5sIix7YnV0dG9uVGV4dDp7bW9udGg6Ik1hYW5kIix3ZWVrOiJXZWVrIixkYXk6IkRhZyIsbGlzdDoiQWdlbmRhIn0sYWxsRGF5VGV4dDoiSGVsZSBkYWciLGV2ZW50TGltaXRUZXh0OiJleHRyYSJ9KX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIGMoYSl7cmV0dXJuIDU+YSUxMCYmYSUxMD4xJiZ+fihhLzEwKSUxMCE9PTF9ZnVuY3Rpb24gZChhLGIsZCl7dmFyIGU9YSsiICI7c3dpdGNoKGQpe2Nhc2UibSI6cmV0dXJuIGI/Im1pbnV0YSI6Im1pbnV0xJkiO2Nhc2UibW0iOnJldHVybiBlKyhjKGEpPyJtaW51dHkiOiJtaW51dCIpO2Nhc2UiaCI6cmV0dXJuIGI/ImdvZHppbmEiOiJnb2R6aW7EmSI7Y2FzZSJoaCI6cmV0dXJuIGUrKGMoYSk/ImdvZHppbnkiOiJnb2R6aW4iKTtjYXNlIk1NIjpyZXR1cm4gZSsoYyhhKT8ibWllc2nEhWNlIjoibWllc2nEmWN5Iik7Y2FzZSJ5eSI6cmV0dXJuIGUrKGMoYSk/ImxhdGEiOiJsYXQiKX19dmFyIGU9InN0eWN6ZcWEX2x1dHlfbWFyemVjX2t3aWVjaWXFhF9tYWpfY3plcndpZWNfbGlwaWVjX3NpZXJwaWXFhF93cnplc2llxYRfcGHFumR6aWVybmlrX2xpc3RvcGFkX2dydWR6aWXFhCIuc3BsaXQoIl8iKSxmPSJzdHljem5pYV9sdXRlZ29fbWFyY2Ffa3dpZXRuaWFfbWFqYV9jemVyd2NhX2xpcGNhX3NpZXJwbmlhX3dyemXFm25pYV9wYcW6ZHppZXJuaWthX2xpc3RvcGFkYV9ncnVkbmlhIi5zcGxpdCgiXyIpOyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsInBsIix7bW9udGhzOmZ1bmN0aW9uKGEsYil7cmV0dXJuL0QgTU1NTS8udGVzdChiKT9mW2EubW9udGgoKV06ZVthLm1vbnRoKCldfSxtb250aHNTaG9ydDoic3R5X2x1dF9tYXJfa3dpX21hal9jemVfbGlwX3NpZV93cnpfcGHFul9saXNfZ3J1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJuaWVkemllbGFfcG9uaWVkemlhxYJla193dG9yZWtfxZtyb2RhX2N6d2FydGVrX3BpxIV0ZWtfc29ib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5pZV9wb25fd3RfxZtyX2N6d19wdF9zYiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiTl9Qbl9XdF/FmnJfQ3pfUHRfU28iLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJMVDpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIExUIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbRHppxZsgb10gTFQiLG5leHREYXk6IltKdXRybyBvXSBMVCIsbmV4dFdlZWs6IltXXSBkZGRkIFtvXSBMVCIsbGFzdERheToiW1djem9yYWogb10gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW1cgemVzesWCxIUgbmllZHppZWzEmSBvXSBMVCI7Y2FzZSAzOnJldHVybiJbVyB6ZXN6xYLEhSDFm3JvZMSZIG9dIExUIjtjYXNlIDY6cmV0dXJuIltXIHplc3rFgsSFIHNvYm90xJkgb10gTFQiO2RlZmF1bHQ6cmV0dXJuIltXIHplc3rFgnldIGRkZGQgW29dIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InphICVzIixwYXN0OiIlcyB0ZW11IixzOiJraWxrYSBzZWt1bmQiLG06ZCxtbTpkLGg6ZCxoaDpkLGQ6IjEgZHppZcWEIixkZDoiJWQgZG5pIixNOiJtaWVzacSFYyIsTU06ZCx5OiJyb2siLHl5OmR9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJwbCIsInBsIix7Y2xvc2VUZXh0OiJaYW1rbmlqIixwcmV2VGV4dDoiJiN4M0M7UG9wcnplZG5pIixuZXh0VGV4dDoiTmFzdMSZcG55JiN4M0U7IixjdXJyZW50VGV4dDoiRHppxZsiLG1vbnRoTmFtZXM6WyJTdHljemXFhCIsIkx1dHkiLCJNYXJ6ZWMiLCJLd2llY2llxYQiLCJNYWoiLCJDemVyd2llYyIsIkxpcGllYyIsIlNpZXJwaWXFhCIsIldyemVzaWXFhCIsIlBhxbpkemllcm5payIsIkxpc3RvcGFkIiwiR3J1ZHppZcWEIl0sbW9udGhOYW1lc1Nob3J0OlsiU3R5IiwiTHUiLCJNYXIiLCJLdyIsIk1haiIsIkN6ZSIsIkxpcCIsIlNpZSIsIldyeiIsIlBhIiwiTGlzIiwiR3J1Il0sZGF5TmFtZXM6WyJOaWVkemllbGEiLCJQb25pZWR6aWHFgmVrIiwiV3RvcmVrIiwixZpyb2RhIiwiQ3p3YXJ0ZWsiLCJQacSFdGVrIiwiU29ib3RhIl0sZGF5TmFtZXNTaG9ydDpbIk5pZSIsIlBuIiwiV3QiLCLFmnIiLCJDenciLCJQdCIsIlNvIl0sZGF5TmFtZXNNaW46WyJOIiwiUG4iLCJXdCIsIsWaciIsIkN6IiwiUHQiLCJTbyJdLHdlZWtIZWFkZXI6IlR5ZHoiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygicGwiLHtidXR0b25UZXh0Onttb250aDoiTWllc2nEhWMiLHdlZWs6IlR5ZHppZcWEIixkYXk6IkR6aWXFhCIsbGlzdDoiUGxhbiBkbmlhIn0sYWxsRGF5VGV4dDoiQ2HFgnkgZHppZcWEIixldmVudExpbWl0VGV4dDoid2nEmWNlaiJ9KX0oKSxmdW5jdGlvbigpeyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsInB0LWJyIix7bW9udGhzOiJqYW5laXJvX2ZldmVyZWlyb19tYXLDp29fYWJyaWxfbWFpb19qdW5ob19qdWxob19hZ29zdG9fc2V0ZW1icm9fb3V0dWJyb19ub3ZlbWJyb19kZXplbWJybyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2Zldl9tYXJfYWJyX21haV9qdW5fanVsX2Fnb19zZXRfb3V0X25vdl9kZXoiLnNwbGl0KCJfIiksd2Vla2RheXM6ImRvbWluZ29fc2VndW5kYS1mZWlyYV90ZXLDp2EtZmVpcmFfcXVhcnRhLWZlaXJhX3F1aW50YS1mZWlyYV9zZXh0YS1mZWlyYV9zw6FiYWRvIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRvbV9zZWdfdGVyX3F1YV9xdWlfc2V4X3PDoWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImRvbV8ywqpfM8KqXzTCql81wqpfNsKqX3PDoWIiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJMVDpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSIsTExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkgW8Ogc10gTFQiLExMTEw6ImRkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBbw6BzXSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSG9qZSDDoHNdIExUIixuZXh0RGF5OiJbQW1hbmjDoyDDoHNdIExUIixuZXh0V2VlazoiZGRkZCBbw6BzXSBMVCIsbGFzdERheToiW09udGVtIMOgc10gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLmRheSgpfHw2PT09dGhpcy5kYXkoKT8iW8OabHRpbW9dIGRkZGQgW8Ogc10gTFQiOiJbw5psdGltYV0gZGRkZCBbw6BzXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImVtICVzIixwYXN0OiIlcyBhdHLDoXMiLHM6InNlZ3VuZG9zIixtOiJ1bSBtaW51dG8iLG1tOiIlZCBtaW51dG9zIixoOiJ1bWEgaG9yYSIsaGg6IiVkIGhvcmFzIixkOiJ1bSBkaWEiLGRkOiIlZCBkaWFzIixNOiJ1bSBtw6pzIixNTToiJWQgbWVzZXMiLHk6InVtIGFubyIseXk6IiVkIGFub3MifSxvcmRpbmFsUGFyc2U6L1xkezEsMn3Cui8sb3JkaW5hbDoiJWTCuiJ9KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygicHQtYnIiLCJwdC1CUiIse2Nsb3NlVGV4dDoiRmVjaGFyIixwcmV2VGV4dDoiJiN4M0M7QW50ZXJpb3IiLG5leHRUZXh0OiJQcsOzeGltbyYjeDNFOyIsY3VycmVudFRleHQ6IkhvamUiLG1vbnRoTmFtZXM6WyJKYW5laXJvIiwiRmV2ZXJlaXJvIiwiTWFyw6dvIiwiQWJyaWwiLCJNYWlvIiwiSnVuaG8iLCJKdWxobyIsIkFnb3N0byIsIlNldGVtYnJvIiwiT3V0dWJybyIsIk5vdmVtYnJvIiwiRGV6ZW1icm8iXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZXYiLCJNYXIiLCJBYnIiLCJNYWkiLCJKdW4iLCJKdWwiLCJBZ28iLCJTZXQiLCJPdXQiLCJOb3YiLCJEZXoiXSxkYXlOYW1lczpbIkRvbWluZ28iLCJTZWd1bmRhLWZlaXJhIiwiVGVyw6dhLWZlaXJhIiwiUXVhcnRhLWZlaXJhIiwiUXVpbnRhLWZlaXJhIiwiU2V4dGEtZmVpcmEiLCJTw6FiYWRvIl0sZGF5TmFtZXNTaG9ydDpbIkRvbSIsIlNlZyIsIlRlciIsIlF1YSIsIlF1aSIsIlNleCIsIlPDoWIiXSxkYXlOYW1lc01pbjpbIkRvbSIsIlNlZyIsIlRlciIsIlF1YSIsIlF1aSIsIlNleCIsIlPDoWIiXSx3ZWVrSGVhZGVyOiJTbSIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjAsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJwdC1iciIse2J1dHRvblRleHQ6e21vbnRoOiJNw6pzIix3ZWVrOiJTZW1hbmEiLGRheToiRGlhIixsaXN0OiJDb21wcm9taXNzb3MifSxhbGxEYXlUZXh0OiJkaWEgaW50ZWlybyIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIm1haXMgKyIrYX19KX0oKSxmdW5jdGlvbigpeyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsInB0Iix7bW9udGhzOiJqYW5laXJvX2ZldmVyZWlyb19tYXLDp29fYWJyaWxfbWFpb19qdW5ob19qdWxob19hZ29zdG9fc2V0ZW1icm9fb3V0dWJyb19ub3ZlbWJyb19kZXplbWJybyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2Zldl9tYXJfYWJyX21haV9qdW5fanVsX2Fnb19zZXRfb3V0X25vdl9kZXoiLnNwbGl0KCJfIiksd2Vla2RheXM6ImRvbWluZ29fc2VndW5kYS1mZWlyYV90ZXLDp2EtZmVpcmFfcXVhcnRhLWZlaXJhX3F1aW50YS1mZWlyYV9zZXh0YS1mZWlyYV9zw6FiYWRvIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRvbV9zZWdfdGVyX3F1YV9xdWlfc2V4X3PDoWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImRvbV8ywqpfM8KqXzTCql81wqpfNsKqX3PDoWIiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJMVDpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSIsTExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkgTFQiLExMTEw6ImRkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSG9qZSDDoHNdIExUIixuZXh0RGF5OiJbQW1hbmjDoyDDoHNdIExUIixuZXh0V2VlazoiZGRkZCBbw6BzXSBMVCIsbGFzdERheToiW09udGVtIMOgc10gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLmRheSgpfHw2PT09dGhpcy5kYXkoKT8iW8OabHRpbW9dIGRkZGQgW8Ogc10gTFQiOiJbw5psdGltYV0gZGRkZCBbw6BzXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImVtICVzIixwYXN0OiJow6EgJXMiLHM6InNlZ3VuZG9zIixtOiJ1bSBtaW51dG8iLG1tOiIlZCBtaW51dG9zIixoOiJ1bWEgaG9yYSIsaGg6IiVkIGhvcmFzIixkOiJ1bSBkaWEiLGRkOiIlZCBkaWFzIixNOiJ1bSBtw6pzIixNTToiJWQgbWVzZXMiLHk6InVtIGFubyIseXk6IiVkIGFub3MifSxvcmRpbmFsUGFyc2U6L1xkezEsMn3Cui8sb3JkaW5hbDoiJWTCuiIsd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoInB0IiwicHQiLHtjbG9zZVRleHQ6IkZlY2hhciIscHJldlRleHQ6IkFudGVyaW9yIixuZXh0VGV4dDoiU2VndWludGUiLGN1cnJlbnRUZXh0OiJIb2plIixtb250aE5hbWVzOlsiSmFuZWlybyIsIkZldmVyZWlybyIsIk1hcsOnbyIsIkFicmlsIiwiTWFpbyIsIkp1bmhvIiwiSnVsaG8iLCJBZ29zdG8iLCJTZXRlbWJybyIsIk91dHVicm8iLCJOb3ZlbWJybyIsIkRlemVtYnJvIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmV2IiwiTWFyIiwiQWJyIiwiTWFpIiwiSnVuIiwiSnVsIiwiQWdvIiwiU2V0IiwiT3V0IiwiTm92IiwiRGV6Il0sZGF5TmFtZXM6WyJEb21pbmdvIiwiU2VndW5kYS1mZWlyYSIsIlRlcsOnYS1mZWlyYSIsIlF1YXJ0YS1mZWlyYSIsIlF1aW50YS1mZWlyYSIsIlNleHRhLWZlaXJhIiwiU8OhYmFkbyJdLGRheU5hbWVzU2hvcnQ6WyJEb20iLCJTZWciLCJUZXIiLCJRdWEiLCJRdWkiLCJTZXgiLCJTw6FiIl0sZGF5TmFtZXNNaW46WyJEb20iLCJTZWciLCJUZXIiLCJRdWEiLCJRdWkiLCJTZXgiLCJTw6FiIl0sd2Vla0hlYWRlcjoiU2VtIixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MCxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoInB0Iix7YnV0dG9uVGV4dDp7bW9udGg6Ik3DqnMiLHdlZWs6IlNlbWFuYSIsZGF5OiJEaWEiLGxpc3Q6IkFnZW5kYSJ9LGFsbERheVRleHQ6IlRvZG8gbyBkaWEiLGV2ZW50TGltaXRUZXh0OiJtYWlzIn0pfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhhLGIsYyl7dmFyIGQ9e21tOiJtaW51dGUiLGhoOiJvcmUiLGRkOiJ6aWxlIixNTToibHVuaSIseXk6ImFuaSJ9LGU9IiAiO3JldHVybihhJTEwMD49MjB8fGE+PTEwMCYmYSUxMDA9PT0wKSYmKGU9IiBkZSAiKSxhK2UrZFtjXX0oYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJybyIse21vbnRoczoiaWFudWFyaWVfZmVicnVhcmllX21hcnRpZV9hcHJpbGllX21haV9pdW5pZV9pdWxpZV9hdWd1c3Rfc2VwdGVtYnJpZV9vY3RvbWJyaWVfbm9pZW1icmllX2RlY2VtYnJpZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiaWFuLl9mZWJyLl9tYXJ0Ll9hcHIuX21haV9pdW4uX2l1bC5fYXVnLl9zZXB0Ll9vY3QuX25vdi5fZGVjLiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiZHVtaW5pY8SDX2x1bmlfbWFyyJtpX21pZXJjdXJpX2pvaV92aW5lcmlfc8OibWLEg3TEgyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJEdW1fTHVuX01hcl9NaWVfSm9pX1Zpbl9Tw6JtIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJEdV9MdV9NYV9NaV9Kb19WaV9Tw6IiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6IkxUOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbYXppIGxhXSBMVCIsbmV4dERheToiW23DomluZSBsYV0gTFQiLG5leHRXZWVrOiJkZGRkIFtsYV0gTFQiLGxhc3REYXk6IltpZXJpIGxhXSBMVCIsbGFzdFdlZWs6Iltmb3N0YV0gZGRkZCBbbGFdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJwZXN0ZSAlcyIscGFzdDoiJXMgw65uIHVybcSDIixzOiJjw6J0ZXZhIHNlY3VuZGUiLG06InVuIG1pbnV0IixtbTpjLGg6Im8gb3LEgyIsaGg6YyxkOiJvIHppIixkZDpjLE06Im8gbHVuxIMiLE1NOmMseToidW4gYW4iLHl5OmN9LHdlZWs6e2RvdzoxLGRveTo3fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJybyIsInJvIix7Y2xvc2VUZXh0OiLDjm5jaGlkZSIscHJldlRleHQ6IiYjeEFCOyBMdW5hIHByZWNlZGVudMSDIixuZXh0VGV4dDoiTHVuYSB1cm3Eg3RvYXJlICYjeEJCOyIsY3VycmVudFRleHQ6IkF6aSIsbW9udGhOYW1lczpbIklhbnVhcmllIiwiRmVicnVhcmllIiwiTWFydGllIiwiQXByaWxpZSIsIk1haSIsIkl1bmllIiwiSXVsaWUiLCJBdWd1c3QiLCJTZXB0ZW1icmllIiwiT2N0b21icmllIiwiTm9pZW1icmllIiwiRGVjZW1icmllIl0sbW9udGhOYW1lc1Nob3J0OlsiSWFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWFpIiwiSXVuIiwiSXVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sZGF5TmFtZXM6WyJEdW1pbmljxIMiLCJMdW5pIiwiTWFyxaNpIiwiTWllcmN1cmkiLCJKb2kiLCJWaW5lcmkiLCJTw6JtYsSDdMSDIl0sZGF5TmFtZXNTaG9ydDpbIkR1bSIsIkx1biIsIk1hciIsIk1pZSIsIkpvaSIsIlZpbiIsIlPDom0iXSxkYXlOYW1lc01pbjpbIkR1IiwiTHUiLCJNYSIsIk1pIiwiSm8iLCJWaSIsIlPDoiJdLHdlZWtIZWFkZXI6IlPEg3B0IixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoInJvIix7YnV0dG9uVGV4dDp7cHJldjoicHJlY2VkZW50xIMiLG5leHQ6InVybcSDdG9hcmUiLG1vbnRoOiJMdW7EgyIsd2VlazoiU8SDcHTEg23Dom7EgyIsZGF5OiJaaSIsbGlzdDoiQWdlbmTEgyJ9LGFsbERheVRleHQ6IlRvYXTEgyB6aXVhIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4iK2FsdGUgIithfX0pfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhhLGIpe3ZhciBjPWEuc3BsaXQoIl8iKTtyZXR1cm4gYiUxMD09PTEmJmIlMTAwIT09MTE/Y1swXTpiJTEwPj0yJiY0Pj1iJTEwJiYoMTA+YiUxMDB8fGIlMTAwPj0yMCk/Y1sxXTpjWzJdfWZ1bmN0aW9uIGQoYSxiLGQpe3ZhciBlPXttbTpiPyLQvNC40L3Rg9GC0LBf0LzQuNC90YPRgtGLX9C80LjQvdGD0YIiOiLQvNC40L3Rg9GC0YNf0LzQuNC90YPRgtGLX9C80LjQvdGD0YIiLGhoOiLRh9Cw0YFf0YfQsNGB0LBf0YfQsNGB0L7QsiIsZGQ6ItC00LXQvdGMX9C00L3Rj1/QtNC90LXQuSIsTU06ItC80LXRgdGP0YZf0LzQtdGB0Y/RhtCwX9C80LXRgdGP0YbQtdCyIix5eToi0LPQvtC0X9Cz0L7QtNCwX9C70LXRgiJ9O3JldHVybiJtIj09PWQ/Yj8i0LzQuNC90YPRgtCwIjoi0LzQuNC90YPRgtGDIjphKyIgIitjKGVbZF0sK2EpfWZ1bmN0aW9uIGUoYSxiKXt2YXIgYz17bm9taW5hdGl2ZToi0Y/QvdCy0LDRgNGMX9GE0LXQstGA0LDQu9GMX9C80LDRgNGCX9Cw0L/RgNC10LvRjF/QvNCw0Llf0LjRjtC90Yxf0LjRjtC70Yxf0LDQstCz0YPRgdGCX9GB0LXQvdGC0Y/QsdGA0Yxf0L7QutGC0Y/QsdGA0Yxf0L3QvtGP0LHRgNGMX9C00LXQutCw0LHRgNGMIi5zcGxpdCgiXyIpLGFjY3VzYXRpdmU6ItGP0L3QstCw0YDRj1/RhNC10LLRgNCw0LvRj1/QvNCw0YDRgtCwX9Cw0L/RgNC10LvRj1/QvNCw0Y9f0LjRjtC90Y9f0LjRjtC70Y9f0LDQstCz0YPRgdGC0LBf0YHQtdC90YLRj9Cx0YDRj1/QvtC60YLRj9Cx0YDRj1/QvdC+0Y/QsdGA0Y9f0LTQtdC60LDQsdGA0Y8iLnNwbGl0KCJfIil9LGQ9L0Rbb0RdPyhcW1teXFtcXV0qXF18XHMrKStNTU1NPy8udGVzdChiKT8iYWNjdXNhdGl2ZSI6Im5vbWluYXRpdmUiO3JldHVybiBjW2RdW2EubW9udGgoKV19ZnVuY3Rpb24gZihhLGIpe3ZhciBjPXtub21pbmF0aXZlOiLRj9C90LJf0YTQtdCyX9C80LDRgNGCX9Cw0L/RgF/QvNCw0Llf0LjRjtC90Yxf0LjRjtC70Yxf0LDQstCzX9GB0LXQvV/QvtC60YJf0L3QvtGPX9C00LXQuiIuc3BsaXQoIl8iKSxhY2N1c2F0aXZlOiLRj9C90LJf0YTQtdCyX9C80LDRgF/QsNC/0YBf0LzQsNGPX9C40Y7QvdGPX9C40Y7Qu9GPX9Cw0LLQs1/RgdC10L1f0L7QutGCX9C90L7Rj1/QtNC10LoiLnNwbGl0KCJfIil9LGQ9L0Rbb0RdPyhcW1teXFtcXV0qXF18XHMrKStNTU1NPy8udGVzdChiKT8iYWNjdXNhdGl2ZSI6Im5vbWluYXRpdmUiO3JldHVybiBjW2RdW2EubW9udGgoKV19ZnVuY3Rpb24gZyhhLGIpe3ZhciBjPXtub21pbmF0aXZlOiLQstC+0YHQutGA0LXRgdC10L3RjNC1X9C/0L7QvdC10LTQtdC70YzQvdC40Lpf0LLRgtC+0YDQvdC40Lpf0YHRgNC10LTQsF/Rh9C10YLQstC10YDQs1/Qv9GP0YLQvdC40YbQsF/RgdGD0LHQsdC+0YLQsCIuc3BsaXQoIl8iKSxhY2N1c2F0aXZlOiLQstC+0YHQutGA0LXRgdC10L3RjNC1X9C/0L7QvdC10LTQtdC70YzQvdC40Lpf0LLRgtC+0YDQvdC40Lpf0YHRgNC10LTRg1/Rh9C10YLQstC10YDQs1/Qv9GP0YLQvdC40YbRg1/RgdGD0LHQsdC+0YLRgyIuc3BsaXQoIl8iKX0sZD0vXFsgP1vQktCyXSA/KD860L/RgNC+0YjQu9GD0Y580YHQu9C10LTRg9GO0YnRg9GOfNGN0YLRgyk/ID9cXSA/ZGRkZC8udGVzdChiKT8iYWNjdXNhdGl2ZSI6Im5vbWluYXRpdmUiO3JldHVybiBjW2RdW2EuZGF5KCldfShiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsInJ1Iix7bW9udGhzOmUsbW9udGhzU2hvcnQ6Zix3ZWVrZGF5czpnLHdlZWtkYXlzU2hvcnQ6ItCy0YFf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ItCy0YFf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEiLnNwbGl0KCJfIiksbW9udGhzUGFyc2U6Wy9e0Y/QvdCyL2ksL17RhNC10LIvaSwvXtC80LDRgC9pLC9e0LDQv9GAL2ksL17QvNCwW9C5fNGPXS9pLC9e0LjRjtC9L2ksL17QuNGO0LsvaSwvXtCw0LLQsy9pLC9e0YHQtdC9L2ksL17QvtC60YIvaSwvXtC90L7Rjy9pLC9e0LTQtdC6L2ldLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiTFQ6c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSDQsy4iLExMTDoiRCBNTU1NIFlZWVkg0LMuLCBMVCIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkg0LMuLCBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb0KHQtdCz0L7QtNC90Y8g0LJdIExUIixuZXh0RGF5OiJb0JfQsNCy0YLRgNCwINCyXSBMVCIsbGFzdERheToiW9CS0YfQtdGA0LAg0LJdIExUIixuZXh0V2VlazpmdW5jdGlvbigpe3JldHVybiAyPT09dGhpcy5kYXkoKT8iW9CS0L5dIGRkZGQgW9CyXSBMVCI6IlvQkl0gZGRkZCBb0LJdIExUIn0sbGFzdFdlZWs6ZnVuY3Rpb24oYSl7aWYoYS53ZWVrKCk9PT10aGlzLndlZWsoKSlyZXR1cm4gMj09PXRoaXMuZGF5KCk/IlvQktC+XSBkZGRkIFvQsl0gTFQiOiJb0JJdIGRkZGQgW9CyXSBMVCI7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW9CSINC/0YDQvtGI0LvQvtC1XSBkZGRkIFvQsl0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OnJldHVybiJb0JIg0L/RgNC+0YjQu9GL0LldIGRkZGQgW9CyXSBMVCI7Y2FzZSAzOmNhc2UgNTpjYXNlIDY6cmV0dXJuIlvQkiDQv9GA0L7RiNC70YPRjl0gZGRkZCBb0LJdIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ItGH0LXRgNC10LcgJXMiLHBhc3Q6IiVzINC90LDQt9Cw0LQiLHM6ItC90LXRgdC60L7Qu9GM0LrQviDRgdC10LrRg9C90LQiLG06ZCxtbTpkLGg6ItGH0LDRgSIsaGg6ZCxkOiLQtNC10L3RjCIsZGQ6ZCxNOiLQvNC10YHRj9GGIixNTTpkLHk6ItCz0L7QtCIseXk6ZH0sbWVyaWRpZW1QYXJzZTov0L3QvtGH0Lh80YPRgtGA0LB80LTQvdGPfNCy0LXRh9C10YDQsC9pLGlzUE06ZnVuY3Rpb24oYSl7cmV0dXJuL14o0LTQvdGPfNCy0LXRh9C10YDQsCkkLy50ZXN0KGEpfSxtZXJpZGllbTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIDQ+YT8i0L3QvtGH0LgiOjEyPmE/ItGD0YLRgNCwIjoxNz5hPyLQtNC90Y8iOiLQstC10YfQtdGA0LAifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0tKNC5fNCz0L580Y8pLyxvcmRpbmFsOmZ1bmN0aW9uKGEsYil7c3dpdGNoKGIpe2Nhc2UiTSI6Y2FzZSJkIjpjYXNlIkRERCI6cmV0dXJuIGErIi3QuSI7Y2FzZSJEIjpyZXR1cm4gYSsiLdCz0L4iO2Nhc2UidyI6Y2FzZSJXIjpyZXR1cm4gYSsiLdGPIjtkZWZhdWx0OnJldHVybiBhfX0sd2Vlazp7ZG93OjEsZG95Ojd9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoInJ1IiwicnUiLHtjbG9zZVRleHQ6ItCX0LDQutGA0YvRgtGMIixwcmV2VGV4dDoiJiN4M0M70J/RgNC10LQiLG5leHRUZXh0OiLQodC70LXQtCYjeDNFOyIsY3VycmVudFRleHQ6ItCh0LXQs9C+0LTQvdGPIixtb250aE5hbWVzOlsi0K/QvdCy0LDRgNGMIiwi0KTQtdCy0YDQsNC70YwiLCLQnNCw0YDRgiIsItCQ0L/RgNC10LvRjCIsItCc0LDQuSIsItCY0Y7QvdGMIiwi0JjRjtC70YwiLCLQkNCy0LPRg9GB0YIiLCLQodC10L3RgtGP0LHRgNGMIiwi0J7QutGC0Y/QsdGA0YwiLCLQndC+0Y/QsdGA0YwiLCLQlNC10LrQsNCx0YDRjCJdLG1vbnRoTmFtZXNTaG9ydDpbItCv0L3QsiIsItCk0LXQsiIsItCc0LDRgCIsItCQ0L/RgCIsItCc0LDQuSIsItCY0Y7QvSIsItCY0Y7QuyIsItCQ0LLQsyIsItCh0LXQvSIsItCe0LrRgiIsItCd0L7RjyIsItCU0LXQuiJdLGRheU5hbWVzOlsi0LLQvtGB0LrRgNC10YHQtdC90YzQtSIsItC/0L7QvdC10LTQtdC70YzQvdC40LoiLCLQstGC0L7RgNC90LjQuiIsItGB0YDQtdC00LAiLCLRh9C10YLQstC10YDQsyIsItC/0Y/RgtC90LjRhtCwIiwi0YHRg9Cx0LHQvtGC0LAiXSxkYXlOYW1lc1Nob3J0Olsi0LLRgdC6Iiwi0L/QvdC0Iiwi0LLRgtGAIiwi0YHRgNC0Iiwi0YfRgtCyIiwi0L/RgtC9Iiwi0YHQsdGCIl0sZGF5TmFtZXNNaW46WyLQktGBIiwi0J/QvSIsItCS0YIiLCLQodGAIiwi0KfRgiIsItCf0YIiLCLQodCxIl0sd2Vla0hlYWRlcjoi0J3QtdC0IixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoInJ1Iix7YnV0dG9uVGV4dDp7bW9udGg6ItCc0LXRgdGP0YYiLHdlZWs6ItCd0LXQtNC10LvRjyIsZGF5OiLQlNC10L3RjCIsbGlzdDoi0J/QvtCy0LXRgdGC0LrQsCDQtNC90Y8ifSxhbGxEYXlUZXh0OiLQktC10YHRjCDQtNC10L3RjCIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIisg0LXRidGRICIrYX19KX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIGMoYSl7cmV0dXJuIGE+MSYmNT5hfWZ1bmN0aW9uIGQoYSxiLGQsZSl7dmFyIGY9YSsiICI7c3dpdGNoKGQpe2Nhc2UicyI6cmV0dXJuIGJ8fGU/InDDoXIgc2Vrw7puZCI6InDDoXIgc2VrdW5kYW1pIjtjYXNlIm0iOnJldHVybiBiPyJtaW7DunRhIjplPyJtaW7DunR1IjoibWluw7p0b3UiO2Nhc2UibW0iOnJldHVybiBifHxlP2YrKGMoYSk/Im1pbsO6dHkiOiJtaW7DunQiKTpmKyJtaW7DunRhbWkiO2Nhc2UiaCI6cmV0dXJuIGI/ImhvZGluYSI6ZT8iaG9kaW51IjoiaG9kaW5vdSI7Y2FzZSJoaCI6cmV0dXJuIGJ8fGU/ZisoYyhhKT8iaG9kaW55IjoiaG9kw61uIik6ZisiaG9kaW5hbWkiO2Nhc2UiZCI6cmV0dXJuIGJ8fGU/ImRlxYgiOiJkxYhvbSI7Y2FzZSJkZCI6cmV0dXJuIGJ8fGU/ZisoYyhhKT8iZG5pIjoiZG7DrSIpOmYrImTFiGFtaSI7Y2FzZSJNIjpyZXR1cm4gYnx8ZT8ibWVzaWFjIjoibWVzaWFjb20iO2Nhc2UiTU0iOnJldHVybiBifHxlP2YrKGMoYSk/Im1lc2lhY2UiOiJtZXNpYWNvdiIpOmYrIm1lc2lhY21pIjtjYXNlInkiOnJldHVybiBifHxlPyJyb2siOiJyb2tvbSI7Y2FzZSJ5eSI6cmV0dXJuIGJ8fGU/ZisoYyhhKT8icm9reSI6InJva292Iik6Zisicm9rbWkifX12YXIgZT0iamFudcOhcl9mZWJydcOhcl9tYXJlY19hcHLDrWxfbcOhal9qw7puX2rDumxfYXVndXN0X3NlcHRlbWJlcl9va3TDs2Jlcl9ub3ZlbWJlcl9kZWNlbWJlciIuc3BsaXQoIl8iKSxmPSJqYW5fZmViX21hcl9hcHJfbcOhal9qw7puX2rDumxfYXVnX3NlcF9va3Rfbm92X2RlYyIuc3BsaXQoIl8iKTsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJzayIse21vbnRoczplLG1vbnRoc1Nob3J0OmYsbW9udGhzUGFyc2U6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdO2ZvcihjPTA7MTI+YztjKyspZFtjXT1uZXcgUmVnRXhwKCJeIithW2NdKyIkfF4iK2JbY10rIiQiLCJpIik7cmV0dXJuIGR9KGUsZiksd2Vla2RheXM6Im5lZGXEvmFfcG9uZGVsb2tfdXRvcm9rX3N0cmVkYV/FoXR2cnRva19waWF0b2tfc29ib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5lX3BvX3V0X3N0X8WhdF9waV9zbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoibmVfcG9fdXRfc3RfxaF0X3BpX3NvIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJMVDpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQgRC4gTU1NTSBZWVlZIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltkbmVzIG9dIExUIixuZXh0RGF5OiJbemFqdHJhIG9dIExUIixuZXh0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIlt2IG5lZGXEvnUgb10gTFQiO2Nhc2UgMTpjYXNlIDI6cmV0dXJuIlt2XSBkZGRkIFtvXSBMVCI7Y2FzZSAzOnJldHVybiJbdiBzdHJlZHUgb10gTFQiO2Nhc2UgNDpyZXR1cm4iW3ZvIMWhdHZydG9rIG9dIExUIjtjYXNlIDU6cmV0dXJuIlt2IHBpYXRvayBvXSBMVCI7Y2FzZSA2OnJldHVybiJbdiBzb2JvdHUgb10gTFQifX0sbGFzdERheToiW3bEjWVyYSBvXSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbbWludWzDuiBuZWRlxL51IG9dIExUIjtjYXNlIDE6Y2FzZSAyOnJldHVybiJbbWludWzDvV0gZGRkZCBbb10gTFQiO2Nhc2UgMzpyZXR1cm4iW21pbnVsw7ogc3RyZWR1IG9dIExUIjtjYXNlIDQ6Y2FzZSA1OnJldHVybiJbbWludWzDvV0gZGRkZCBbb10gTFQiO2Nhc2UgNjpyZXR1cm4iW21pbnVsw7ogc29ib3R1IG9dIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InphICVzIixwYXN0OiJwcmVkICVzIixzOmQsbTpkLG1tOmQsaDpkLGhoOmQsZDpkLGRkOmQsTTpkLE1NOmQseTpkLHl5OmR9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJzayIsInNrIix7Y2xvc2VUZXh0OiJaYXZyaWXFpSIscHJldlRleHQ6IiYjeDNDO1ByZWRjaMOhZHphasO6Y2kiLG5leHRUZXh0OiJOYXNsZWR1asO6Y2kmI3gzRTsiLGN1cnJlbnRUZXh0OiJEbmVzIixtb250aE5hbWVzOlsiamFudcOhciIsImZlYnJ1w6FyIiwibWFyZWMiLCJhcHLDrWwiLCJtw6FqIiwiasO6biIsImrDumwiLCJhdWd1c3QiLCJzZXB0ZW1iZXIiLCJva3TDs2JlciIsIm5vdmVtYmVyIiwiZGVjZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNw6FqIiwiSsO6biIsIkrDumwiLCJBdWciLCJTZXAiLCJPa3QiLCJOb3YiLCJEZWMiXSxkYXlOYW1lczpbIm5lZGXEvmEiLCJwb25kZWxvayIsInV0b3JvayIsInN0cmVkYSIsIsWhdHZydG9rIiwicGlhdG9rIiwic29ib3RhIl0sZGF5TmFtZXNTaG9ydDpbIk5lZCIsIlBvbiIsIlV0byIsIlN0ciIsIsWgdHYiLCJQaWEiLCJTb2IiXSxkYXlOYW1lc01pbjpbIk5lIiwiUG8iLCJVdCIsIlN0IiwixaB0IiwiUGlhIiwiU28iXSx3ZWVrSGVhZGVyOiJUeSIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJzayIse2J1dHRvblRleHQ6e21vbnRoOiJNZXNpYWMiLHdlZWs6IlTDvcW+ZGXFiCIsZGF5OiJEZcWIIixsaXN0OiJSb3p2cmgifSxhbGxEYXlUZXh0OiJDZWzDvSBkZcWIIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4iK8SPYWzFoWllOiAiK2F9fSl9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiBjKGEsYixjKXt2YXIgZD1hKyIgIjtzd2l0Y2goYyl7Y2FzZSJtIjpyZXR1cm4gYj8iZW5hIG1pbnV0YSI6ImVubyBtaW51dG8iO2Nhc2UibW0iOnJldHVybiBkKz0xPT09YT8ibWludXRhIjoyPT09YT8ibWludXRpIjozPT09YXx8ND09PWE/Im1pbnV0ZSI6Im1pbnV0IjtjYXNlImgiOnJldHVybiBiPyJlbmEgdXJhIjoiZW5vIHVybyI7Y2FzZSJoaCI6cmV0dXJuIGQrPTE9PT1hPyJ1cmEiOjI9PT1hPyJ1cmkiOjM9PT1hfHw0PT09YT8idXJlIjoidXIiO2Nhc2UiZGQiOnJldHVybiBkKz0xPT09YT8iZGFuIjoiZG5pIjtjYXNlIk1NIjpyZXR1cm4gZCs9MT09PWE/Im1lc2VjIjoyPT09YT8ibWVzZWNhIjozPT09YXx8ND09PWE/Im1lc2VjZSI6Im1lc2VjZXYiO2Nhc2UieXkiOnJldHVybiBkKz0xPT09YT8ibGV0byI6Mj09PWE/ImxldGkiOjM9PT1hfHw0PT09YT8ibGV0YSI6ImxldCJ9fShiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsInNsIix7bW9udGhzOiJqYW51YXJfZmVicnVhcl9tYXJlY19hcHJpbF9tYWpfanVuaWpfanVsaWpfYXZndXN0X3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW4uX2ZlYi5fbWFyLl9hcHIuX21hai5fanVuLl9qdWwuX2F2Zy5fc2VwLl9va3QuX25vdi5fZGVjLiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoibmVkZWxqYV9wb25lZGVsamVrX3RvcmVrX3NyZWRhX8SNZXRydGVrX3BldGVrX3NvYm90YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJuZWQuX3Bvbi5fdG9yLl9zcmUuX8SNZXQuX3BldC5fc29iLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoibmVfcG9fdG9fc3JfxI1lX3BlX3NvIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJMVDpzcyIsTDoiREQuIE1NLiBZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBMVCIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltkYW5lcyBvYl0gTFQiLG5leHREYXk6IltqdXRyaSBvYl0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW3ZdIFtuZWRlbGpvXSBbb2JdIExUIjtjYXNlIDM6cmV0dXJuIlt2XSBbc3JlZG9dIFtvYl0gTFQiO2Nhc2UgNjpyZXR1cm4iW3ZdIFtzb2JvdG9dIFtvYl0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW3ZdIGRkZGQgW29iXSBMVCJ9fSxsYXN0RGF5OiJbdsSNZXJhaiBvYl0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpjYXNlIDM6Y2FzZSA2OnJldHVybiJbcHJlasWhbmphXSBkZGRkIFtvYl0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW3ByZWrFoW5qaV0gZGRkZCBbb2JdIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IsSNZXogJXMiLHBhc3Q6IiVzIG5hemFqIixzOiJuZWthaiBzZWt1bmQiLG06YyxtbTpjLGg6YyxoaDpjLGQ6ImVuIGRhbiIsZGQ6YyxNOiJlbiBtZXNlYyIsTU06Yyx5OiJlbm8gbGV0byIseXk6Y30sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95Ojd9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoInNsIiwic2wiLHtjbG9zZVRleHQ6IlphcHJpIixwcmV2VGV4dDoiJiN4M0M7UHJlasWhbmppIixuZXh0VGV4dDoiTmFzbGVkbmppJiN4M0U7IixjdXJyZW50VGV4dDoiVHJlbnV0bmkiLG1vbnRoTmFtZXM6WyJKYW51YXIiLCJGZWJydWFyIiwiTWFyZWMiLCJBcHJpbCIsIk1haiIsIkp1bmlqIiwiSnVsaWoiLCJBdmd1c3QiLCJTZXB0ZW1iZXIiLCJPa3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1haiIsIkp1biIsIkp1bCIsIkF2ZyIsIlNlcCIsIk9rdCIsIk5vdiIsIkRlYyJdLGRheU5hbWVzOlsiTmVkZWxqYSIsIlBvbmVkZWxqZWsiLCJUb3JlayIsIlNyZWRhIiwixIxldHJ0ZWsiLCJQZXRlayIsIlNvYm90YSJdLGRheU5hbWVzU2hvcnQ6WyJOZWQiLCJQb24iLCJUb3IiLCJTcmUiLCLEjGV0IiwiUGV0IiwiU29iIl0sZGF5TmFtZXNNaW46WyJOZSIsIlBvIiwiVG8iLCJTciIsIsSMZSIsIlBlIiwiU28iXSx3ZWVrSGVhZGVyOiJUZWRlbiIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJzbCIse2J1dHRvblRleHQ6e21vbnRoOiJNZXNlYyIsd2VlazoiVGVkZW4iLGRheToiRGFuIixsaXN0OiJEbmV2bmkgcmVkIn0sYWxsRGF5VGV4dDoiVmVzIGRhbiIsZXZlbnRMaW1pdFRleHQ6InZlxI0ifSl9KCksZnVuY3Rpb24oKXt2YXIgYz17d29yZHM6e206WyLRmNC10LTQsNC9INC80LjQvdGD0YIiLCLRmNC10LTQvdC1INC80LjQvdGD0YLQtSJdLG1tOlsi0LzQuNC90YPRgiIsItC80LjQvdGD0YLQtSIsItC80LjQvdGD0YLQsCJdLGg6WyLRmNC10LTQsNC9INGB0LDRgiIsItGY0LXQtNC90L7QsyDRgdCw0YLQsCJdLGhoOlsi0YHQsNGCIiwi0YHQsNGC0LAiLCLRgdCw0YLQuCJdLGRkOlsi0LTQsNC9Iiwi0LTQsNC90LAiLCLQtNCw0L3QsCJdLE1NOlsi0LzQtdGB0LXRhiIsItC80LXRgdC10YbQsCIsItC80LXRgdC10YbQuCJdLHl5Olsi0LPQvtC00LjQvdCwIiwi0LPQvtC00LjQvdC1Iiwi0LPQvtC00LjQvdCwIl19LGNvcnJlY3RHcmFtbWF0aWNhbENhc2U6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMT09PWE/YlswXTphPj0yJiY0Pj1hP2JbMV06YlsyXX0sdHJhbnNsYXRlOmZ1bmN0aW9uKGEsYixkKXt2YXIgZT1jLndvcmRzW2RdO3JldHVybiAxPT09ZC5sZW5ndGg/Yj9lWzBdOmVbMV06YSsiICIrYy5jb3JyZWN0R3JhbW1hdGljYWxDYXNlKGEsZSl9fTsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJzci1jeXJsIix7bW9udGhzOlsi0ZjQsNC90YPQsNGAIiwi0YTQtdCx0YDRg9Cw0YAiLCLQvNCw0YDRgiIsItCw0L/RgNC40LsiLCLQvNCw0ZgiLCLRmNGD0L0iLCLRmNGD0LsiLCLQsNCy0LPRg9GB0YIiLCLRgdC10L/RgtC10LzQsdCw0YAiLCLQvtC60YLQvtCx0LDRgCIsItC90L7QstC10LzQsdCw0YAiLCLQtNC10YbQtdC80LHQsNGAIl0sbW9udGhzU2hvcnQ6WyLRmNCw0L0uIiwi0YTQtdCxLiIsItC80LDRgC4iLCLQsNC/0YAuIiwi0LzQsNGYIiwi0ZjRg9C9Iiwi0ZjRg9C7Iiwi0LDQstCzLiIsItGB0LXQvy4iLCLQvtC60YIuIiwi0L3QvtCyLiIsItC00LXRhi4iXSx3ZWVrZGF5czpbItC90LXQtNC10ZnQsCIsItC/0L7QvdC10LTQtdGZ0LDQuiIsItGD0YLQvtGA0LDQuiIsItGB0YDQtdC00LAiLCLRh9C10YLQstGA0YLQsNC6Iiwi0L/QtdGC0LDQuiIsItGB0YPQsdC+0YLQsCJdLHdlZWtkYXlzU2hvcnQ6WyLQvdC10LQuIiwi0L/QvtC9LiIsItGD0YLQvi4iLCLRgdGA0LUuIiwi0YfQtdGCLiIsItC/0LXRgi4iLCLRgdGD0LEuIl0sd2Vla2RheXNNaW46WyLQvdC1Iiwi0L/QviIsItGD0YIiLCLRgdGAIiwi0YfQtSIsItC/0LUiLCLRgdGDIl0sbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6IkxUOnNzIixMOiJERC4gTU0uIFlZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIExUIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW9C00LDQvdCw0YEg0YNdIExUIixuZXh0RGF5OiJb0YHRg9GC0YDQsCDRg10gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW9GDXSBb0L3QtdC00LXRmdGDXSBb0YNdIExUIjtjYXNlIDM6cmV0dXJuIlvRg10gW9GB0YDQtdC00YNdIFvRg10gTFQiO2Nhc2UgNjpyZXR1cm4iW9GDXSBb0YHRg9Cx0L7RgtGDXSBb0YNdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIlvRg10gZGRkZCBb0YNdIExUIn19LGxhc3REYXk6IlvRmNGD0YfQtSDRg10gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7dmFyIGE9WyJb0L/RgNC+0YjQu9C1XSBb0L3QtdC00LXRmdC1XSBb0YNdIExUIiwiW9C/0YDQvtGI0LvQvtCzXSBb0L/QvtC90LXQtNC10ZnQutCwXSBb0YNdIExUIiwiW9C/0YDQvtGI0LvQvtCzXSBb0YPRgtC+0YDQutCwXSBb0YNdIExUIiwiW9C/0YDQvtGI0LvQtV0gW9GB0YDQtdC00LVdIFvRg10gTFQiLCJb0L/RgNC+0YjQu9C+0LNdIFvRh9C10YLQstGA0YLQutCwXSBb0YNdIExUIiwiW9C/0YDQvtGI0LvQvtCzXSBb0L/QtdGC0LrQsF0gW9GDXSBMVCIsIlvQv9GA0L7RiNC70LVdIFvRgdGD0LHQvtGC0LVdIFvRg10gTFQiXTtyZXR1cm4gYVt0aGlzLmRheSgpXX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi0LfQsCAlcyIscGFzdDoi0L/RgNC1ICVzIixzOiLQvdC10LrQvtC70LjQutC+INGB0LXQutGD0L3QtNC4IixtOmMudHJhbnNsYXRlLG1tOmMudHJhbnNsYXRlLGg6Yy50cmFuc2xhdGUsaGg6Yy50cmFuc2xhdGUsZDoi0LTQsNC9IixkZDpjLnRyYW5zbGF0ZSxNOiLQvNC10YHQtdGGIixNTTpjLnRyYW5zbGF0ZSx5OiLQs9C+0LTQuNC90YMiLHl5OmMudHJhbnNsYXRlfSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6N319KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygic3ItY3lybCIsInNyIix7Y2xvc2VUZXh0OiLQl9Cw0YLQstC+0YDQuCIscHJldlRleHQ6IiYjeDNDOyIsbmV4dFRleHQ6IiYjeDNFOyIsY3VycmVudFRleHQ6ItCU0LDQvdCw0YEiLG1vbnRoTmFtZXM6WyLQiNCw0L3Rg9Cw0YAiLCLQpNC10LHRgNGD0LDRgCIsItCc0LDRgNGCIiwi0JDQv9GA0LjQuyIsItCc0LDRmCIsItCI0YPQvSIsItCI0YPQuyIsItCQ0LLQs9GD0YHRgiIsItCh0LXQv9GC0LXQvNCx0LDRgCIsItCe0LrRgtC+0LHQsNGAIiwi0J3QvtCy0LXQvNCx0LDRgCIsItCU0LXRhtC10LzQsdCw0YAiXSxtb250aE5hbWVzU2hvcnQ6WyLQiNCw0L0iLCLQpNC10LEiLCLQnNCw0YAiLCLQkNC/0YAiLCLQnNCw0ZgiLCLQiNGD0L0iLCLQiNGD0LsiLCLQkNCy0LMiLCLQodC10L8iLCLQntC60YIiLCLQndC+0LIiLCLQlNC10YYiXSxkYXlOYW1lczpbItCd0LXQtNC10ZnQsCIsItCf0L7QvdC10LTQtdGZ0LDQuiIsItCj0YLQvtGA0LDQuiIsItCh0YDQtdC00LAiLCLQp9C10YLQstGA0YLQsNC6Iiwi0J/QtdGC0LDQuiIsItCh0YPQsdC+0YLQsCJdLGRheU5hbWVzU2hvcnQ6WyLQndC10LQiLCLQn9C+0L0iLCLQo9GC0L4iLCLQodGA0LUiLCLQp9C10YIiLCLQn9C10YIiLCLQodGD0LEiXSxkYXlOYW1lc01pbjpbItCd0LUiLCLQn9C+Iiwi0KPRgiIsItCh0YAiLCLQp9C1Iiwi0J/QtSIsItCh0YMiXSx3ZWVrSGVhZGVyOiLQodC10LQiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygic3ItY3lybCIse2J1dHRvblRleHQ6e21vbnRoOiLQnNC10YHQtdGGIix3ZWVrOiLQndC10LTQtdGZ0LAiLGRheToi0JTQsNC9IixsaXN0OiLQn9C70LDQvdC10YAifSxhbGxEYXlUZXh0OiLQptC10L4g0LTQsNC9IixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4iKyDRmNC+0YggIithfX0pfSgpLGZ1bmN0aW9uKCl7dmFyIGM9e3dvcmRzOnttOlsiamVkYW4gbWludXQiLCJqZWRuZSBtaW51dGUiXSxtbTpbIm1pbnV0IiwibWludXRlIiwibWludXRhIl0saDpbImplZGFuIHNhdCIsImplZG5vZyBzYXRhIl0saGg6WyJzYXQiLCJzYXRhIiwic2F0aSJdLGRkOlsiZGFuIiwiZGFuYSIsImRhbmEiXSxNTTpbIm1lc2VjIiwibWVzZWNhIiwibWVzZWNpIl0seXk6WyJnb2RpbmEiLCJnb2RpbmUiLCJnb2RpbmEiXX0sY29ycmVjdEdyYW1tYXRpY2FsQ2FzZTpmdW5jdGlvbihhLGIpe3JldHVybiAxPT09YT9iWzBdOmE+PTImJjQ+PWE/YlsxXTpiWzJdfSx0cmFuc2xhdGU6ZnVuY3Rpb24oYSxiLGQpe3ZhciBlPWMud29yZHNbZF07cmV0dXJuIDE9PT1kLmxlbmd0aD9iP2VbMF06ZVsxXTphKyIgIitjLmNvcnJlY3RHcmFtbWF0aWNhbENhc2UoYSxlKX19OyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsInNyIix7bW9udGhzOlsiamFudWFyIiwiZmVicnVhciIsIm1hcnQiLCJhcHJpbCIsIm1haiIsImp1biIsImp1bCIsImF2Z3VzdCIsInNlcHRlbWJhciIsIm9rdG9iYXIiLCJub3ZlbWJhciIsImRlY2VtYmFyIl0sbW9udGhzU2hvcnQ6WyJqYW4uIiwiZmViLiIsIm1hci4iLCJhcHIuIiwibWFqIiwianVuIiwianVsIiwiYXZnLiIsInNlcC4iLCJva3QuIiwibm92LiIsImRlYy4iXSx3ZWVrZGF5czpbIm5lZGVsamEiLCJwb25lZGVsamFrIiwidXRvcmFrIiwic3JlZGEiLCLEjWV0dnJ0YWsiLCJwZXRhayIsInN1Ym90YSJdLHdlZWtkYXlzU2hvcnQ6WyJuZWQuIiwicG9uLiIsInV0by4iLCJzcmUuIiwixI1ldC4iLCJwZXQuIiwic3ViLiJdLHdlZWtkYXlzTWluOlsibmUiLCJwbyIsInV0Iiwic3IiLCLEjWUiLCJwZSIsInN1Il0sbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6IkxUOnNzIixMOiJERC4gTU0uIFlZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIExUIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW2RhbmFzIHVdIExUIixuZXh0RGF5OiJbc3V0cmEgdV0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW3VdIFtuZWRlbGp1XSBbdV0gTFQiO2Nhc2UgMzpyZXR1cm4iW3VdIFtzcmVkdV0gW3VdIExUIjtjYXNlIDY6cmV0dXJuIlt1XSBbc3Vib3R1XSBbdV0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW3VdIGRkZGQgW3VdIExUIn19LGxhc3REYXk6IltqdcSNZSB1XSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXt2YXIgYT1bIltwcm/FoWxlXSBbbmVkZWxqZV0gW3VdIExUIiwiW3Byb8WhbG9nXSBbcG9uZWRlbGprYV0gW3VdIExUIiwiW3Byb8WhbG9nXSBbdXRvcmthXSBbdV0gTFQiLCJbcHJvxaFsZV0gW3NyZWRlXSBbdV0gTFQiLCJbcHJvxaFsb2ddIFvEjWV0dnJ0a2FdIFt1XSBMVCIsIltwcm/FoWxvZ10gW3BldGthXSBbdV0gTFQiLCJbcHJvxaFsZV0gW3N1Ym90ZV0gW3VdIExUIl07cmV0dXJuIGFbdGhpcy5kYXkoKV19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InphICVzIixwYXN0OiJwcmUgJXMiLHM6Im5la29saWtvIHNla3VuZGkiLG06Yy50cmFuc2xhdGUsbW06Yy50cmFuc2xhdGUsaDpjLnRyYW5zbGF0ZSxoaDpjLnRyYW5zbGF0ZSxkOiJkYW4iLGRkOmMudHJhbnNsYXRlLE06Im1lc2VjIixNTTpjLnRyYW5zbGF0ZSx5OiJnb2RpbnUiLHl5OmMudHJhbnNsYXRlfSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6N319KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygic3IiLCJzciIse2Nsb3NlVGV4dDoi0JfQsNGC0LLQvtGA0LgiLHByZXZUZXh0OiImI3gzQzsiLG5leHRUZXh0OiImI3gzRTsiLGN1cnJlbnRUZXh0OiLQlNCw0L3QsNGBIixtb250aE5hbWVzOlsi0IjQsNC90YPQsNGAIiwi0KTQtdCx0YDRg9Cw0YAiLCLQnNCw0YDRgiIsItCQ0L/RgNC40LsiLCLQnNCw0ZgiLCLQiNGD0L0iLCLQiNGD0LsiLCLQkNCy0LPRg9GB0YIiLCLQodC10L/RgtC10LzQsdCw0YAiLCLQntC60YLQvtCx0LDRgCIsItCd0L7QstC10LzQsdCw0YAiLCLQlNC10YbQtdC80LHQsNGAIl0sbW9udGhOYW1lc1Nob3J0Olsi0IjQsNC9Iiwi0KTQtdCxIiwi0JzQsNGAIiwi0JDQv9GAIiwi0JzQsNGYIiwi0IjRg9C9Iiwi0IjRg9C7Iiwi0JDQstCzIiwi0KHQtdC/Iiwi0J7QutGCIiwi0J3QvtCyIiwi0JTQtdGGIl0sZGF5TmFtZXM6WyLQndC10LTQtdGZ0LAiLCLQn9C+0L3QtdC00LXRmdCw0LoiLCLQo9GC0L7RgNCw0LoiLCLQodGA0LXQtNCwIiwi0KfQtdGC0LLRgNGC0LDQuiIsItCf0LXRgtCw0LoiLCLQodGD0LHQvtGC0LAiXSxkYXlOYW1lc1Nob3J0Olsi0J3QtdC0Iiwi0J/QvtC9Iiwi0KPRgtC+Iiwi0KHRgNC1Iiwi0KfQtdGCIiwi0J/QtdGCIiwi0KHRg9CxIl0sZGF5TmFtZXNNaW46WyLQndC1Iiwi0J/QviIsItCj0YIiLCLQodGAIiwi0KfQtSIsItCf0LUiLCLQodGDIl0sd2Vla0hlYWRlcjoi0KHQtdC0IixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoInNyIix7YnV0dG9uVGV4dDp7bW9udGg6ItCc0LXRgdC10YYiLHdlZWs6ItCd0LXQtNC10ZnQsCIsZGF5OiLQlNCw0L0iLGxpc3Q6ItCf0LvQsNC90LXRgCJ9LGFsbERheVRleHQ6ItCm0LXQviDQtNCw0L0iLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGEpe3JldHVybiIrINGY0L7RiCAiK2F9fSl9KCksZnVuY3Rpb24oKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJzdiIse21vbnRoczoiamFudWFyaV9mZWJydWFyaV9tYXJzX2FwcmlsX21hal9qdW5pX2p1bGlfYXVndXN0aV9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2ZlYl9tYXJfYXByX21hal9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6InPDtm5kYWdfbcOlbmRhZ190aXNkYWdfb25zZGFnX3RvcnNkYWdfZnJlZGFnX2zDtnJkYWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoic8O2bl9tw6VuX3Rpc19vbnNfdG9yX2ZyZV9sw7ZyIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJzw7ZfbcOlX3RpX29uX3RvX2ZyX2zDtiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkxUOnNzIixMOiJZWVlZLU1NLUREIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW0lkYWddIExUIixuZXh0RGF5OiJbSW1vcmdvbl0gTFQiLGxhc3REYXk6IltJZ8Olcl0gTFQiLG5leHRXZWVrOiJkZGRkIExUIixsYXN0V2VlazoiW0bDtnJyYV0gZGRkZFtlbl0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im9tICVzIixwYXN0OiJmw7ZyICVzIHNlZGFuIixzOiJuw6VncmEgc2VrdW5kZXIiLG06ImVuIG1pbnV0IixtbToiJWQgbWludXRlciIsaDoiZW4gdGltbWUiLGhoOiIlZCB0aW1tYXIiLGQ6ImVuIGRhZyIsZGQ6IiVkIGRhZ2FyIixNOiJlbiBtw6VuYWQiLE1NOiIlZCBtw6VuYWRlciIseToiZXR0IMOlciIseXk6IiVkIMOlciJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfShlfGEpLyxvcmRpbmFsOmZ1bmN0aW9uKGEpe3ZhciBiPWElMTAsYz0xPT09fn4oYSUxMDAvMTApPyJlIjoxPT09Yj8iYSI6Mj09PWI/ImEiOiJlIjtyZXR1cm4gYStjfSx3ZWVrOntkb3c6MSxkb3k6NH19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygic3YiLCJzdiIse2Nsb3NlVGV4dDoiU3TDpG5nIixwcmV2VGV4dDoiJiN4QUI7RsO2cnJhIixuZXh0VGV4dDoiTsOkc3RhJiN4QkI7IixjdXJyZW50VGV4dDoiSWRhZyIsbW9udGhOYW1lczpbIkphbnVhcmkiLCJGZWJydWFyaSIsIk1hcnMiLCJBcHJpbCIsIk1haiIsIkp1bmkiLCJKdWxpIiwiQXVndXN0aSIsIlNlcHRlbWJlciIsIk9rdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWFqIiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2t0IiwiTm92IiwiRGVjIl0sZGF5TmFtZXNTaG9ydDpbIlPDtm4iLCJNw6VuIiwiVGlzIiwiT25zIiwiVG9yIiwiRnJlIiwiTMO2ciJdLGRheU5hbWVzOlsiU8O2bmRhZyIsIk3DpW5kYWciLCJUaXNkYWciLCJPbnNkYWciLCJUb3JzZGFnIiwiRnJlZGFnIiwiTMO2cmRhZyJdLGRheU5hbWVzTWluOlsiU8O2IiwiTcOlIiwiVGkiLCJPbiIsIlRvIiwiRnIiLCJMw7YiXSx3ZWVrSGVhZGVyOiJWZSIsZGF0ZUZvcm1hdDoieXktbW0tZGQiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJzdiIse2J1dHRvblRleHQ6e21vbnRoOiJNw6VuYWQiLHdlZWs6IlZlY2thIixkYXk6IkRhZyIsbGlzdDoiUHJvZ3JhbSJ9LGFsbERheVRleHQ6IkhlbGRhZyIsZXZlbnRMaW1pdFRleHQ6InRpbGwifSl9KCksZnVuY3Rpb24oKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJ0aCIse21vbnRoczoi4Lih4LiB4Lij4Liy4LiE4LihX+C4geC4uOC4oeC4oOC4suC4nuC4seC4meC4mOC5jF/guKHguLXguJnguLLguITguKFf4LmA4Lih4Lip4Liy4Lii4LiZX+C4nuC4pOC4qeC4oOC4suC4hOC4oV/guKHguLTguJbguLjguJnguLLguKLguJlf4LiB4Lij4LiB4LiO4Liy4LiE4LihX+C4quC4tOC4h+C4q+C4suC4hOC4oV/guIHguLHguJnguKLguLLguKLguJlf4LiV4Li44Lil4Liy4LiE4LihX+C4nuC4pOC4qOC4iOC4tOC4geC4suC4ouC4mV/guJjguLHguJnguKfguLLguITguKEiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IuC4oeC4geC4o+C4sl/guIHguLjguKHguKDguLJf4Lih4Li14LiZ4LiyX+C5gOC4oeC4qeC4sl/guJ7guKTguKnguKDguLJf4Lih4Li04LiW4Li44LiZ4LiyX+C4geC4o+C4geC4juC4sl/guKrguLTguIfguKvguLJf4LiB4Lix4LiZ4Lii4LiyX+C4leC4uOC4peC4sl/guJ7guKTguKjguIjguLTguIHguLJf4LiY4Lix4LiZ4Lin4LiyIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiLguK3guLLguJfguLTguJXguKLguYxf4LiI4Lix4LiZ4LiX4Lij4LmMX+C4reC4seC4h+C4hOC4suC4o1/guJ7guLjguJhf4Lie4Lik4Lir4Lix4Liq4Lia4LiU4Li1X+C4qOC4uOC4geC4o+C5jF/guYDguKrguLLguKPguYwiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi4Lit4Liy4LiX4Li04LiV4Lii4LmMX+C4iOC4seC4meC4l+C4o+C5jF/guK3guLHguIfguITguLLguKNf4Lie4Li44LiYX+C4nuC4pOC4q+C4seC4ql/guKjguLjguIHguKPguYxf4LmA4Liq4Liy4Lij4LmMIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLguK3guLIuX+C4iC5f4LitLl/guJ4uX+C4nuC4pC5f4LioLl/guKouIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSCDguJnguLLguKzguLTguIHguLIgbSDguJnguLLguJfguLUiLExUUzoiTFQgcyDguKfguLTguJnguLLguJfguLUiLEw6IllZWVkvTU0vREQiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSDguYDguKfguKXguLIgTFQiLExMTEw6IuC4p+C4seC4mWRkZGTguJfguLXguYggRCBNTU1NIFlZWVkg4LmA4Lin4Lil4LiyIExUIn0sbWVyaWRpZW1QYXJzZTov4LiB4LmI4Lit4LiZ4LmA4LiX4Li14LmI4Lii4LiHfOC4q+C4peC4seC4h+C5gOC4l+C4teC5iOC4ouC4hy8saXNQTTpmdW5jdGlvbihhKXtyZXR1cm4i4Lir4Lil4Lix4LiH4LmA4LiX4Li14LmI4Lii4LiHIj09PWF9LG1lcmlkaWVtOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMTI+YT8i4LiB4LmI4Lit4LiZ4LmA4LiX4Li14LmI4Lii4LiHIjoi4Lir4Lil4Lix4LiH4LmA4LiX4Li14LmI4Lii4LiHIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvguKfguLHguJnguJnguLXguYkg4LmA4Lin4Lil4LiyXSBMVCIsbmV4dERheToiW+C4nuC4o+C4uOC5iOC4h+C4meC4teC5iSDguYDguKfguKXguLJdIExUIixuZXh0V2VlazoiZGRkZFvguKvguJnguYnguLIg4LmA4Lin4Lil4LiyXSBMVCIsbGFzdERheToiW+C5gOC4oeC4t+C5iOC4reC4p+C4suC4meC4meC4teC5iSDguYDguKfguKXguLJdIExUIixsYXN0V2VlazoiW+C4p+C4seC4mV1kZGRkW+C4l+C4teC5iOC5geC4peC5ieC4pyDguYDguKfguKXguLJdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLguK3guLXguIEgJXMiLHBhc3Q6IiVz4LiX4Li14LmI4LmB4Lil4LmJ4LinIixzOiLguYTguKHguYjguIHguLXguYjguKfguLTguJnguLLguJfguLUiLG06IjEg4LiZ4Liy4LiX4Li1IixtbToiJWQg4LiZ4Liy4LiX4Li1IixoOiIxIOC4iuC4seC5iOC4p+C5guC4oeC4hyIsaGg6IiVkIOC4iuC4seC5iOC4p+C5guC4oeC4hyIsZDoiMSDguKfguLHguJkiLGRkOiIlZCDguKfguLHguJkiLE06IjEg4LmA4LiU4Li34Lit4LiZIixNTToiJWQg4LmA4LiU4Li34Lit4LiZIix5OiIxIOC4m+C4tSIseXk6IiVkIOC4m+C4tSJ9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoInRoIiwidGgiLHtjbG9zZVRleHQ6IuC4m+C4tOC4lCIscHJldlRleHQ6IiYjeEFCOyYjeEEwO+C4ouC5ieC4reC4mSIsbmV4dFRleHQ6IuC4luC4seC4lOC5hOC4myYjeEEwOyYjeEJCOyIsY3VycmVudFRleHQ6IuC4p+C4seC4meC4meC4teC5iSIsbW9udGhOYW1lczpbIuC4oeC4geC4o+C4suC4hOC4oSIsIuC4geC4uOC4oeC4oOC4suC4nuC4seC4meC4mOC5jCIsIuC4oeC4teC4meC4suC4hOC4oSIsIuC5gOC4oeC4qeC4suC4ouC4mSIsIuC4nuC4pOC4qeC4oOC4suC4hOC4oSIsIuC4oeC4tOC4luC4uOC4meC4suC4ouC4mSIsIuC4geC4o+C4geC4juC4suC4hOC4oSIsIuC4quC4tOC4h+C4q+C4suC4hOC4oSIsIuC4geC4seC4meC4ouC4suC4ouC4mSIsIuC4leC4uOC4peC4suC4hOC4oSIsIuC4nuC4pOC4qOC4iOC4tOC4geC4suC4ouC4mSIsIuC4mOC4seC4meC4p+C4suC4hOC4oSJdLG1vbnRoTmFtZXNTaG9ydDpbIuC4oS7guIQuIiwi4LiBLuC4ni4iLCLguKHguLUu4LiELiIsIuC5gOC4oS7guKIuIiwi4LieLuC4hC4iLCLguKHguLQu4LiiLiIsIuC4gS7guIQuIiwi4LiqLuC4hC4iLCLguIEu4LiiLiIsIuC4lS7guIQuIiwi4LieLuC4oi4iLCLguJgu4LiELiJdLGRheU5hbWVzOlsi4Lit4Liy4LiX4Li04LiV4Lii4LmMIiwi4LiI4Lix4LiZ4LiX4Lij4LmMIiwi4Lit4Lix4LiH4LiE4Liy4LijIiwi4Lie4Li44LiYIiwi4Lie4Lik4Lir4Lix4Liq4Lia4LiU4Li1Iiwi4Lio4Li44LiB4Lij4LmMIiwi4LmA4Liq4Liy4Lij4LmMIl0sZGF5TmFtZXNTaG9ydDpbIuC4reC4si4iLCLguIguIiwi4LitLiIsIuC4ni4iLCLguJ7guKQuIiwi4LioLiIsIuC4qi4iXSxkYXlOYW1lc01pbjpbIuC4reC4si4iLCLguIguIiwi4LitLiIsIuC4ni4iLCLguJ7guKQuIiwi4LioLiIsIuC4qi4iXSx3ZWVrSGVhZGVyOiJXayIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjAsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJ0aCIse2J1dHRvblRleHQ6e21vbnRoOiLguYDguJTguLfguK3guJkiLHdlZWs6IuC4quC4seC4m+C4lOC4suC4q+C5jCIsZGF5OiLguKfguLHguJkiLGxpc3Q6IuC5geC4nOC4meC4h+C4suC4mSJ9LGFsbERheVRleHQ6IuC4leC4peC4reC4lOC4p+C4seC4mSIsZXZlbnRMaW1pdFRleHQ6IuC5gOC4nuC4tOC5iOC4oeC5gOC4leC4tOC4oSJ9KX0oKSxmdW5jdGlvbigpe3ZhciBjPXsxOiInaW5jaSIsNToiJ2luY2kiLDg6IidpbmNpIiw3MDoiJ2luY2kiLDgwOiInaW5jaSIsMjoiJ25jaSIsNzoiJ25jaSIsMjA6IiduY2kiLDUwOiInbmNpIiwzOiInw7xuY8O8Iiw0OiInw7xuY8O8IiwxMDA6IifDvG5jw7wiLDY6IiduY8SxIiw5OiIndW5jdSIsMTA6Iid1bmN1IiwzMDoiJ3VuY3UiLDYwOiInxLFuY8SxIiw5MDoiJ8SxbmPEsSJ9OyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsInRyIix7bW9udGhzOiJPY2FrX8WedWJhdF9NYXJ0X05pc2FuX01hecSxc19IYXppcmFuX1RlbW11el9BxJ91c3Rvc19FeWzDvGxfRWtpbV9LYXPEsW1fQXJhbMSxayIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiT2NhX8WedWJfTWFyX05pc19NYXlfSGF6X1RlbV9BxJ91X0V5bF9Fa2lfS2FzX0FyYSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiUGF6YXJfUGF6YXJ0ZXNpX1NhbMSxX8OHYXLFn2FtYmFfUGVyxZ9lbWJlX0N1bWFfQ3VtYXJ0ZXNpIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlBhel9QdHNfU2FsX8OHYXJfUGVyX0N1bV9DdHMiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlB6X1B0X1NhX8OHYV9QZV9DdV9DdCIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkxUOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltidWfDvG4gc2FhdF0gTFQiLG5leHREYXk6Ilt5YXLEsW4gc2FhdF0gTFQiLG5leHRXZWVrOiJbaGFmdGF5YV0gZGRkZCBbc2FhdF0gTFQiLGxhc3REYXk6Iltkw7xuXSBMVCIsbGFzdFdlZWs6IltnZcOnZW4gaGFmdGFdIGRkZGQgW3NhYXRdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBzb25yYSIscGFzdDoiJXMgw7ZuY2UiLHM6ImJpcmthw6cgc2FuaXllIixtOiJiaXIgZGFraWthIixtbToiJWQgZGFraWthIixoOiJiaXIgc2FhdCIsaGg6IiVkIHNhYXQiLGQ6ImJpciBnw7xuIixkZDoiJWQgZ8O8biIsTToiYmlyIGF5IixNTToiJWQgYXkiLHk6ImJpciB5xLFsIix5eToiJWQgecSxbCJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfScoaW5jaXxuY2l8w7xuY8O8fG5jxLF8dW5jdXzEsW5jxLEpLyxvcmRpbmFsOmZ1bmN0aW9uKGEpe2lmKDA9PT1hKXJldHVybiBhKyInxLFuY8SxIjt2YXIgYj1hJTEwLGQ9YSUxMDAtYixlPWE+PTEwMD8xMDA6bnVsbDtyZXR1cm4gYSsoY1tiXXx8Y1tkXXx8Y1tlXSl9LHdlZWs6e2RvdzoxLGRveTo3fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJ0ciIsInRyIix7Y2xvc2VUZXh0OiJrYXBhdCIscHJldlRleHQ6IiYjeDNDO2dlcmkiLG5leHRUZXh0OiJpbGVyaSYjeDNlIixjdXJyZW50VGV4dDoiYnVnw7xuIixtb250aE5hbWVzOlsiT2NhayIsIsWedWJhdCIsIk1hcnQiLCJOaXNhbiIsIk1hecSxcyIsIkhhemlyYW4iLCJUZW1tdXoiLCJBxJ91c3RvcyIsIkV5bMO8bCIsIkVraW0iLCJLYXPEsW0iLCJBcmFsxLFrIl0sbW9udGhOYW1lc1Nob3J0OlsiT2NhIiwixZ51YiIsIk1hciIsIk5pcyIsIk1heSIsIkhheiIsIlRlbSIsIkHEn3UiLCJFeWwiLCJFa2kiLCJLYXMiLCJBcmEiXSxkYXlOYW1lczpbIlBhemFyIiwiUGF6YXJ0ZXNpIiwiU2FsxLEiLCLDh2FyxZ9hbWJhIiwiUGVyxZ9lbWJlIiwiQ3VtYSIsIkN1bWFydGVzaSJdLGRheU5hbWVzU2hvcnQ6WyJQeiIsIlB0IiwiU2EiLCLDh2EiLCJQZSIsIkN1IiwiQ3QiXSxkYXlOYW1lc01pbjpbIlB6IiwiUHQiLCJTYSIsIsOHYSIsIlBlIiwiQ3UiLCJDdCJdLHdlZWtIZWFkZXI6IkhmIixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoInRyIix7YnV0dG9uVGV4dDp7bmV4dDoiaWxlcmkiLG1vbnRoOiJBeSIsd2VlazoiSGFmdGEiLGRheToiR8O8biIsbGlzdDoiQWphbmRhIn0sYWxsRGF5VGV4dDoiVMO8bSBnw7xuIixldmVudExpbWl0VGV4dDoiZGFoYSBmYXpsYSJ9KX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIGMoYSxiKXt2YXIgYz1hLnNwbGl0KCJfIik7cmV0dXJuIGIlMTA9PT0xJiZiJTEwMCE9PTExP2NbMF06YiUxMD49MiYmND49YiUxMCYmKDEwPmIlMTAwfHxiJTEwMD49MjApP2NbMV06Y1syXX1mdW5jdGlvbiBkKGEsYixkKXt2YXIgZT17bW06ItGF0LLQuNC70LjQvdCwX9GF0LLQuNC70LjQvdC4X9GF0LLQuNC70LjQvSIsaGg6ItCz0L7QtNC40L3QsF/Qs9C+0LTQuNC90Lhf0LPQvtC00LjQvSIsZGQ6ItC00LXQvdGMX9C00L3Rll/QtNC90ZbQsiIsTU06ItC80ZbRgdGP0YbRjF/QvNGW0YHRj9GG0ZZf0LzRltGB0Y/RhtGW0LIiLHl5OiLRgNGW0Lpf0YDQvtC60Lhf0YDQvtC60ZbQsiJ9O3JldHVybiJtIj09PWQ/Yj8i0YXQstC40LvQuNC90LAiOiLRhdCy0LjQu9C40L3RgyI6ImgiPT09ZD9iPyLQs9C+0LTQuNC90LAiOiLQs9C+0LTQuNC90YMiOmErIiAiK2MoZVtkXSwrYSl9ZnVuY3Rpb24gZShhLGIpe3ZhciBjPXtub21pbmF0aXZlOiLRgdGW0YfQtdC90Yxf0LvRjtGC0LjQuV/QsdC10YDQtdC30LXQvdGMX9C60LLRltGC0LXQvdGMX9GC0YDQsNCy0LXQvdGMX9GH0LXRgNCy0LXQvdGMX9C70LjQv9C10L3RjF/RgdC10YDQv9C10L3RjF/QstC10YDQtdGB0LXQvdGMX9C20L7QstGC0LXQvdGMX9C70LjRgdGC0L7Qv9Cw0LRf0LPRgNGD0LTQtdC90YwiLnNwbGl0KCJfIiksYWNjdXNhdGl2ZToi0YHRltGH0L3Rj1/Qu9GO0YLQvtCz0L5f0LHQtdGA0LXQt9C90Y9f0LrQstGW0YLQvdGPX9GC0YDQsNCy0L3Rj1/Rh9C10YDQstC90Y9f0LvQuNC/0L3Rj1/RgdC10YDQv9C90Y9f0LLQtdGA0LXRgdC90Y9f0LbQvtCy0YLQvdGPX9C70LjRgdGC0L7Qv9Cw0LTQsF/Qs9GA0YPQtNC90Y8iLnNwbGl0KCJfIil9LGQ9L0Rbb0RdPyAqTU1NTT8vLnRlc3QoYik/ImFjY3VzYXRpdmUiOiJub21pbmF0aXZlIjtyZXR1cm4gY1tkXVthLm1vbnRoKCldfWZ1bmN0aW9uIGYoYSxiKXt2YXIgYz17bm9taW5hdGl2ZToi0L3QtdC00ZbQu9GPX9C/0L7QvdC10LTRltC70L7Qul/QstGW0LLRgtC+0YDQvtC6X9GB0LXRgNC10LTQsF/Rh9C10YLQstC10YBf0L/igJnRj9GC0L3QuNGG0Y9f0YHRg9Cx0L7RgtCwIi5zcGxpdCgiXyIpLGFjY3VzYXRpdmU6ItC90LXQtNGW0LvRjl/Qv9C+0L3QtdC00ZbQu9C+0Lpf0LLRltCy0YLQvtGA0L7Qul/RgdC10YDQtdC00YNf0YfQtdGC0LLQtdGAX9C/4oCZ0Y/RgtC90LjRhtGOX9GB0YPQsdC+0YLRgyIuc3BsaXQoIl8iKSxnZW5pdGl2ZToi0L3QtdC00ZbQu9GWX9C/0L7QvdC10LTRltC70LrQsF/QstGW0LLRgtC+0YDQutCwX9GB0LXRgNC10LTQuF/Rh9C10YLQstC10YDQs9CwX9C/4oCZ0Y/RgtC90LjRhtGWX9GB0YPQsdC+0YLQuCIuc3BsaXQoIl8iKX0sZD0vKFxbW9CS0LLQo9GDXVxdKSA/ZGRkZC8udGVzdChiKT8iYWNjdXNhdGl2ZSI6L1xbPyg/OtC80LjQvdGD0LvQvtGXfNC90LDRgdGC0YPQv9C90L7Rlyk/ID9cXSA/ZGRkZC8udGVzdChiKT8iZ2VuaXRpdmUiOiJub21pbmF0aXZlIjtyZXR1cm4gY1tkXVthLmRheSgpXX1mdW5jdGlvbiBnKGEpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBhKyLQviIrKDExPT09dGhpcy5ob3VycygpPyLQsSI6IiIpKyJdIExUIn19KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwidWsiLHttb250aHM6ZSxtb250aHNTaG9ydDoi0YHRltGHX9C70Y7Rgl/QsdC10YBf0LrQstGW0YJf0YLRgNCw0LJf0YfQtdGA0LJf0LvQuNC/X9GB0LXRgNC/X9Cy0LXRgF/QttC+0LLRgl/Qu9C40YHRgl/Qs9GA0YPQtCIuc3BsaXQoIl8iKSx3ZWVrZGF5czpmLHdlZWtkYXlzU2hvcnQ6ItC90LRf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ItC90LRf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJMVDpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZINGALiIsTExMOiJEIE1NTU0gWVlZWSDRgC4sIExUIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSDRgC4sIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6ZygiW9Ch0YzQvtCz0L7QtNC90ZYgIiksbmV4dERheTpnKCJb0JfQsNCy0YLRgNCwICIpLGxhc3REYXk6ZygiW9CS0YfQvtGA0LAgIiksbmV4dFdlZWs6ZygiW9CjXSBkZGRkIFsiKSxsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6Y2FzZSAzOmNhc2UgNTpjYXNlIDY6cmV0dXJuIGcoIlvQnNC40L3Rg9C70L7Rl10gZGRkZCBbIikuY2FsbCh0aGlzKTtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpyZXR1cm4gZygiW9Cc0LjQvdGD0LvQvtCz0L5dIGRkZGQgWyIpLmNhbGwodGhpcyl9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLQt9CwICVzIixwYXN0OiIlcyDRgtC+0LzRgyIsczoi0LTQtdC60ZbQu9GM0LrQsCDRgdC10LrRg9C90LQiLG06ZCxtbTpkLGg6ItCz0L7QtNC40L3RgyIsaGg6ZCxkOiLQtNC10L3RjCIsZGQ6ZCxNOiLQvNGW0YHRj9GG0YwiLE1NOmQseToi0YDRltC6Iix5eTpkfSxtZXJpZGllbVBhcnNlOi/QvdC+0YfRlnzRgNCw0L3QutGDfNC00L3Rj3zQstC10YfQvtGA0LAvLGlzUE06ZnVuY3Rpb24oYSl7cmV0dXJuL14o0LTQvdGPfNCy0LXRh9C+0YDQsCkkLy50ZXN0KGEpfSxtZXJpZGllbTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIDQ+YT8i0L3QvtGH0ZYiOjEyPmE/ItGA0LDQvdC60YMiOjE3PmE/ItC00L3RjyI6ItCy0LXRh9C+0YDQsCJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfS0o0Ll80LPQvikvLG9yZGluYWw6ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYil7Y2FzZSJNIjpjYXNlImQiOmNhc2UiREREIjpjYXNlInciOmNhc2UiVyI6cmV0dXJuIGErIi3QuSI7Y2FzZSJEIjpyZXR1cm4gYSsiLdCz0L4iO2RlZmF1bHQ6cmV0dXJuIGF9fSx3ZWVrOntkb3c6MSxkb3k6N319KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygidWsiLCJ1ayIse2Nsb3NlVGV4dDoi0JfQsNC60YDQuNGC0LgiLHByZXZUZXh0OiImI3gzQzsiLG5leHRUZXh0OiImI3gzRTsiLGN1cnJlbnRUZXh0OiLQodGM0L7Qs9C+0LTQvdGWIixtb250aE5hbWVzOlsi0KHRltGH0LXQvdGMIiwi0JvRjtGC0LjQuSIsItCR0LXRgNC10LfQtdC90YwiLCLQmtCy0ZbRgtC10L3RjCIsItCi0YDQsNCy0LXQvdGMIiwi0KfQtdGA0LLQtdC90YwiLCLQm9C40L/QtdC90YwiLCLQodC10YDQv9C10L3RjCIsItCS0LXRgNC10YHQtdC90YwiLCLQltC+0LLRgtC10L3RjCIsItCb0LjRgdGC0L7Qv9Cw0LQiLCLQk9GA0YPQtNC10L3RjCJdLG1vbnRoTmFtZXNTaG9ydDpbItCh0ZbRhyIsItCb0Y7RgiIsItCR0LXRgCIsItCa0LLRliIsItCi0YDQsCIsItCn0LXRgCIsItCb0LjQvyIsItCh0LXRgCIsItCS0LXRgCIsItCW0L7QsiIsItCb0LjRgSIsItCT0YDRgyJdLGRheU5hbWVzOlsi0L3QtdC00ZbQu9GPIiwi0L/QvtC90LXQtNGW0LvQvtC6Iiwi0LLRltCy0YLQvtGA0L7QuiIsItGB0LXRgNC10LTQsCIsItGH0LXRgtCy0LXRgCIsItC/4oCZ0Y/RgtC90LjRhtGPIiwi0YHRg9Cx0L7RgtCwIl0sZGF5TmFtZXNTaG9ydDpbItC90LXQtCIsItC/0L3QtCIsItCy0ZbQsiIsItGB0YDQtCIsItGH0YLQsiIsItC/0YLQvSIsItGB0LHRgiJdLGRheU5hbWVzTWluOlsi0J3QtCIsItCf0L0iLCLQktGCIiwi0KHRgCIsItCn0YIiLCLQn9GCIiwi0KHQsSJdLHdlZWtIZWFkZXI6ItCi0LjQtiIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJ1ayIse2J1dHRvblRleHQ6e21vbnRoOiLQnNGW0YHRj9GG0YwiLHdlZWs6ItCi0LjQttC00LXQvdGMIixkYXk6ItCU0LXQvdGMIixsaXN0OiLQn9C+0YDRj9C00L7QuiDQtNC10L3QvdC40LkifSxhbGxEYXlUZXh0OiLQo9Cy0LXRgdGMINC00LXQvdGMIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4iK9GJ0LUgIithKyIuLi4ifX0pfSgpLGZ1bmN0aW9uKCl7KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwidmkiLHttb250aHM6InRow6FuZyAxX3Row6FuZyAyX3Row6FuZyAzX3Row6FuZyA0X3Row6FuZyA1X3Row6FuZyA2X3Row6FuZyA3X3Row6FuZyA4X3Row6FuZyA5X3Row6FuZyAxMF90aMOhbmcgMTFfdGjDoW5nIDEyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJUaDAxX1RoMDJfVGgwM19UaDA0X1RoMDVfVGgwNl9UaDA3X1RoMDhfVGgwOV9UaDEwX1RoMTFfVGgxMiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiY2jhu6cgbmjhuq10X3Ro4bupIGhhaV90aOG7qSBiYV90aOG7qSB0xrBfdGjhu6kgbsSDbV90aOG7qSBzw6F1X3Ro4bupIGLhuqN5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkNOX1QyX1QzX1Q0X1Q1X1Q2X1Q3Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJDTl9UMl9UM19UNF9UNV9UNl9UNyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkxUOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFtuxINtXSBZWVlZIixMTEw6IkQgTU1NTSBbbsSDbV0gWVlZWSBMVCIsTExMTDoiZGRkZCwgRCBNTU1NIFtuxINtXSBZWVlZIExUIixsOiJERC9NL1lZWVkiLGxsOiJEIE1NTSBZWVlZIixsbGw6IkQgTU1NIFlZWVkgTFQiLGxsbGw6ImRkZCwgRCBNTU0gWVlZWSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSMO0bSBuYXkgbMO6Y10gTFQiLG5leHREYXk6IltOZ8OgeSBtYWkgbMO6Y10gTFQiLG5leHRXZWVrOiJkZGRkIFt0deG6p24gdOG7m2kgbMO6Y10gTFQiLGxhc3REYXk6IltIw7RtIHF1YSBsw7pjXSBMVCIsbGFzdFdlZWs6ImRkZGQgW3R14bqnbiBy4buTaSBsw7pjXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgdOG7m2kiLHBhc3Q6IiVzIHRyxrDhu5tjIixzOiJ2w6BpIGdpw6J5IixtOiJt4buZdCBwaMO6dCIsbW06IiVkIHBow7p0IixoOiJt4buZdCBnaeG7nSIsaGg6IiVkIGdp4budIixkOiJt4buZdCBuZ8OgeSIsZGQ6IiVkIG5nw6B5IixNOiJt4buZdCB0aMOhbmciLE1NOiIlZCB0aMOhbmciLHk6Im3hu5l0IG7Eg20iLHl5OiIlZCBuxINtIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9LyxvcmRpbmFsOmZ1bmN0aW9uKGEpe3JldHVybiBhfSx3ZWVrOntkb3c6MSxkb3k6NH19KSwKYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoInZpIiwidmkiLHtjbG9zZVRleHQ6IsSQw7NuZyIscHJldlRleHQ6IiYjeDNDO1RyxrDhu5tjIixuZXh0VGV4dDoiVGnhur9wJiN4M0U7IixjdXJyZW50VGV4dDoiSMO0bSBuYXkiLG1vbnRoTmFtZXM6WyJUaMOhbmcgTeG7mXQiLCJUaMOhbmcgSGFpIiwiVGjDoW5nIEJhIiwiVGjDoW5nIFTGsCIsIlRow6FuZyBOxINtIiwiVGjDoW5nIFPDoXUiLCJUaMOhbmcgQuG6o3kiLCJUaMOhbmcgVMOhbSIsIlRow6FuZyBDaMOtbiIsIlRow6FuZyBNxrDhu51pIiwiVGjDoW5nIE3GsOG7nWkgTeG7mXQiLCJUaMOhbmcgTcaw4budaSBIYWkiXSxtb250aE5hbWVzU2hvcnQ6WyJUaMOhbmcgMSIsIlRow6FuZyAyIiwiVGjDoW5nIDMiLCJUaMOhbmcgNCIsIlRow6FuZyA1IiwiVGjDoW5nIDYiLCJUaMOhbmcgNyIsIlRow6FuZyA4IiwiVGjDoW5nIDkiLCJUaMOhbmcgMTAiLCJUaMOhbmcgMTEiLCJUaMOhbmcgMTIiXSxkYXlOYW1lczpbIkNo4bunIE5o4bqtdCIsIlRo4bupIEhhaSIsIlRo4bupIEJhIiwiVGjhu6kgVMawIiwiVGjhu6kgTsSDbSIsIlRo4bupIFPDoXUiLCJUaOG7qSBC4bqjeSJdLGRheU5hbWVzU2hvcnQ6WyJDTiIsIlQyIiwiVDMiLCJUNCIsIlQ1IiwiVDYiLCJUNyJdLGRheU5hbWVzTWluOlsiQ04iLCJUMiIsIlQzIiwiVDQiLCJUNSIsIlQ2IiwiVDciXSx3ZWVrSGVhZGVyOiJUdSIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjAsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJ2aSIse2J1dHRvblRleHQ6e21vbnRoOiJUaMOhbmciLHdlZWs6IlR1w6LMgG4iLGRheToiTmfDoHkiLGxpc3Q6Ikzhu4tjaCBiaeG7g3UifSxhbGxEYXlUZXh0OiJD4bqjIG5nw6B5IixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4iKyB0aMOqbSAiK2F9fSl9KCksZnVuY3Rpb24oKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJ6aC1jbiIse21vbnRoczoi5LiA5pyIX+S6jOaciF/kuInmnIhf5Zub5pyIX+S6lOaciF/lha3mnIhf5LiD5pyIX+WFq+aciF/kuZ3mnIhf5Y2B5pyIX+WNgeS4gOaciF/ljYHkuozmnIgiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IjHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiLmmJ/mnJ/ml6Vf5pif5pyf5LiAX+aYn+acn+S6jF/mmJ/mnJ/kuIlf5pif5pyf5ZubX+aYn+acn+S6lF/mmJ/mnJ/lha0iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi5ZGo5pelX+WRqOS4gF/lkajkuoxf5ZGo5LiJX+WRqOWbm1/lkajkupRf5ZGo5YWtIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLml6Vf5LiAX+S6jF/kuIlf5ZubX+S6lF/lha0iLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBaOeCuW1tIixMVFM6IkFo54K5beWIhnPnp5IiLEw6IllZWVktTU0tREQiLExMOiJZWVlZ5bm0TU1NROaXpSIsTExMOiJZWVlZ5bm0TU1NROaXpUxUIixMTExMOiJZWVlZ5bm0TU1NROaXpWRkZGRMVCIsbDoiWVlZWS1NTS1ERCIsbGw6IllZWVnlubRNTU1E5pelIixsbGw6IllZWVnlubRNTU1E5pelTFQiLGxsbGw6IllZWVnlubRNTU1E5pelZGRkZExUIn0sbWVyaWRpZW1QYXJzZTov5YeM5pmofOaXqeS4inzkuIrljYh85Lit5Y2IfOS4i+WNiHzmmZrkuIovLG1lcmlkaWVtSG91cjpmdW5jdGlvbihhLGIpe3JldHVybiAxMj09PWEmJihhPTApLCLlh4zmmagiPT09Ynx8IuaXqeS4iiI9PT1ifHwi5LiK5Y2IIj09PWI/YToi5LiL5Y2IIj09PWJ8fCLmmZrkuIoiPT09Yj9hKzEyOmE+PTExP2E6YSsxMn0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPTEwMCphK2I7cmV0dXJuIDYwMD5kPyLlh4zmmagiOjkwMD5kPyLml6nkuIoiOjExMzA+ZD8i5LiK5Y2IIjoxMjMwPmQ/IuS4reWNiCI6MTgwMD5kPyLkuIvljYgiOiLmmZrkuIoifSxjYWxlbmRhcjp7c2FtZURheTpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5taW51dGVzKCk/Ilvku4rlpKldQWhb54K55pW0XSI6Ilvku4rlpKldTFQifSxuZXh0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLm1pbnV0ZXMoKT8iW+aYjuWkqV1BaFvngrnmlbRdIjoiW+aYjuWkqV1MVCJ9LGxhc3REYXk6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMubWludXRlcygpPyJb5pio5aSpXUFoW+eCueaVtF0iOiJb5pio5aSpXUxUIn0sbmV4dFdlZWs6ZnVuY3Rpb24oKXt2YXIgYSxjO3JldHVybiBhPWIoKS5zdGFydE9mKCJ3ZWVrIiksYz10aGlzLnVuaXgoKS1hLnVuaXgoKT49NjA0ODAwPyJb5LiLXSI6IlvmnKxdIiwwPT09dGhpcy5taW51dGVzKCk/YysiZGRkQWjngrnmlbQiOmMrImRkZEFo54K5bW0ifSxsYXN0V2VlazpmdW5jdGlvbigpe3ZhciBhLGM7cmV0dXJuIGE9YigpLnN0YXJ0T2YoIndlZWsiKSxjPXRoaXMudW5peCgpPGEudW5peCgpPyJb5LiKXSI6IlvmnKxdIiwwPT09dGhpcy5taW51dGVzKCk/YysiZGRkQWjngrnmlbQiOmMrImRkZEFo54K5bW0ifSxzYW1lRWxzZToiTEwifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0o5pelfOaciHzlkagpLyxvcmRpbmFsOmZ1bmN0aW9uKGEsYil7c3dpdGNoKGIpe2Nhc2UiZCI6Y2FzZSJEIjpjYXNlIkRERCI6cmV0dXJuIGErIuaXpSI7Y2FzZSJNIjpyZXR1cm4gYSsi5pyIIjtjYXNlInciOmNhc2UiVyI6cmV0dXJuIGErIuWRqCI7ZGVmYXVsdDpyZXR1cm4gYX19LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlc+WGhSIscGFzdDoiJXPliY0iLHM6IuWHoOenkiIsbToiMeWIhumSnyIsbW06IiVk5YiG6ZKfIixoOiIx5bCP5pe2IixoaDoiJWTlsI/ml7YiLGQ6IjHlpKkiLGRkOiIlZOWkqSIsTToiMeS4quaciCIsTU06IiVk5Liq5pyIIix5OiIx5bm0Iix5eToiJWTlubQifSx3ZWVrOntkb3c6MSxkb3k6NH19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiemgtY24iLCJ6aC1DTiIse2Nsb3NlVGV4dDoi5YWz6ZetIixwcmV2VGV4dDoiJiN4M0M75LiK5pyIIixuZXh0VGV4dDoi5LiL5pyIJiN4M0U7IixjdXJyZW50VGV4dDoi5LuK5aSpIixtb250aE5hbWVzOlsi5LiA5pyIIiwi5LqM5pyIIiwi5LiJ5pyIIiwi5Zub5pyIIiwi5LqU5pyIIiwi5YWt5pyIIiwi5LiD5pyIIiwi5YWr5pyIIiwi5Lmd5pyIIiwi5Y2B5pyIIiwi5Y2B5LiA5pyIIiwi5Y2B5LqM5pyIIl0sbW9udGhOYW1lc1Nob3J0Olsi5LiA5pyIIiwi5LqM5pyIIiwi5LiJ5pyIIiwi5Zub5pyIIiwi5LqU5pyIIiwi5YWt5pyIIiwi5LiD5pyIIiwi5YWr5pyIIiwi5Lmd5pyIIiwi5Y2B5pyIIiwi5Y2B5LiA5pyIIiwi5Y2B5LqM5pyIIl0sZGF5TmFtZXM6WyLmmJ/mnJ/ml6UiLCLmmJ/mnJ/kuIAiLCLmmJ/mnJ/kuowiLCLmmJ/mnJ/kuIkiLCLmmJ/mnJ/lm5siLCLmmJ/mnJ/kupQiLCLmmJ/mnJ/lha0iXSxkYXlOYW1lc1Nob3J0Olsi5ZGo5pelIiwi5ZGo5LiAIiwi5ZGo5LqMIiwi5ZGo5LiJIiwi5ZGo5ZubIiwi5ZGo5LqUIiwi5ZGo5YWtIl0sZGF5TmFtZXNNaW46WyLml6UiLCLkuIAiLCLkuowiLCLkuIkiLCLlm5siLCLkupQiLCLlha0iXSx3ZWVrSGVhZGVyOiLlkagiLGRhdGVGb3JtYXQ6Inl5LW1tLWRkIixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMCx5ZWFyU3VmZml4OiLlubQifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiemgtY24iLHtidXR0b25UZXh0Onttb250aDoi5pyIIix3ZWVrOiLlkagiLGRheToi5pelIixsaXN0OiLml6XnqIsifSxhbGxEYXlUZXh0OiLlhajlpKkiLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGEpe3JldHVybiLlj6blpJYgIithKyIg5LiqIn19KX0oKSxmdW5jdGlvbigpeyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsInpoLXR3Iix7bW9udGhzOiLkuIDmnIhf5LqM5pyIX+S4ieaciF/lm5vmnIhf5LqU5pyIX+WFreaciF/kuIPmnIhf5YWr5pyIX+S5neaciF/ljYHmnIhf5Y2B5LiA5pyIX+WNgeS6jOaciCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiMeaciF8y5pyIXzPmnIhfNOaciF815pyIXzbmnIhfN+aciF845pyIXznmnIhfMTDmnIhfMTHmnIhfMTLmnIgiLnNwbGl0KCJfIiksd2Vla2RheXM6IuaYn+acn+aXpV/mmJ/mnJ/kuIBf5pif5pyf5LqMX+aYn+acn+S4iV/mmJ/mnJ/lm5tf5pif5pyf5LqUX+aYn+acn+WFrSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLpgLHml6Vf6YCx5LiAX+mAseS6jF/pgLHkuIlf6YCx5ZubX+mAseS6lF/pgLHlha0iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IuaXpV/kuIBf5LqMX+S4iV/lm5tf5LqUX+WFrSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkFo6buebW0iLExUUzoiQWjpu55t5YiGc+enkiIsTDoiWVlZWeW5tE1NTUTml6UiLExMOiJZWVlZ5bm0TU1NROaXpSIsTExMOiJZWVlZ5bm0TU1NROaXpUxUIixMTExMOiJZWVlZ5bm0TU1NROaXpWRkZGRMVCIsbDoiWVlZWeW5tE1NTUTml6UiLGxsOiJZWVlZ5bm0TU1NROaXpSIsbGxsOiJZWVlZ5bm0TU1NROaXpUxUIixsbGxsOiJZWVlZ5bm0TU1NROaXpWRkZGRMVCJ9LG1lcmlkaWVtUGFyc2U6L+aXqeS4inzkuIrljYh85Lit5Y2IfOS4i+WNiHzmmZrkuIovLG1lcmlkaWVtSG91cjpmdW5jdGlvbihhLGIpe3JldHVybiAxMj09PWEmJihhPTApLCLml6nkuIoiPT09Ynx8IuS4iuWNiCI9PT1iP2E6IuS4reWNiCI9PT1iP2E+PTExP2E6YSsxMjoi5LiL5Y2IIj09PWJ8fCLmmZrkuIoiPT09Yj9hKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPTEwMCphK2I7cmV0dXJuIDkwMD5kPyLml6nkuIoiOjExMzA+ZD8i5LiK5Y2IIjoxMjMwPmQ/IuS4reWNiCI6MTgwMD5kPyLkuIvljYgiOiLmmZrkuIoifSxjYWxlbmRhcjp7c2FtZURheToiW+S7iuWkqV1MVCIsbmV4dERheToiW+aYjuWkqV1MVCIsbmV4dFdlZWs6IlvkuItdZGRkZExUIixsYXN0RGF5OiJb5pio5aSpXUxUIixsYXN0V2VlazoiW+S4il1kZGRkTFQiLHNhbWVFbHNlOiJMIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KOaXpXzmnIh86YCxKS8sb3JkaW5hbDpmdW5jdGlvbihhLGIpe3N3aXRjaChiKXtjYXNlImQiOmNhc2UiRCI6Y2FzZSJEREQiOnJldHVybiBhKyLml6UiO2Nhc2UiTSI6cmV0dXJuIGErIuaciCI7Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBhKyLpgLEiO2RlZmF1bHQ6cmV0dXJuIGF9fSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXPlhaciLHBhc3Q6IiVz5YmNIixzOiLlub7np5IiLG06IuS4gOWIhumQmCIsbW06IiVk5YiG6ZCYIixoOiLkuIDlsI/mmYIiLGhoOiIlZOWwj+aZgiIsZDoi5LiA5aSpIixkZDoiJWTlpKkiLE06IuS4gOWAi+aciCIsTU06IiVk5YCL5pyIIix5OiLkuIDlubQiLHl5OiIlZOW5tCJ9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoInpoLXR3IiwiemgtVFciLHtjbG9zZVRleHQ6IumXnOmWiSIscHJldlRleHQ6IiYjeDNDO+S4iuaciCIsbmV4dFRleHQ6IuS4i+aciCYjeDNFOyIsY3VycmVudFRleHQ6IuS7iuWkqSIsbW9udGhOYW1lczpbIuS4gOaciCIsIuS6jOaciCIsIuS4ieaciCIsIuWbm+aciCIsIuS6lOaciCIsIuWFreaciCIsIuS4g+aciCIsIuWFq+aciCIsIuS5neaciCIsIuWNgeaciCIsIuWNgeS4gOaciCIsIuWNgeS6jOaciCJdLG1vbnRoTmFtZXNTaG9ydDpbIuS4gOaciCIsIuS6jOaciCIsIuS4ieaciCIsIuWbm+aciCIsIuS6lOaciCIsIuWFreaciCIsIuS4g+aciCIsIuWFq+aciCIsIuS5neaciCIsIuWNgeaciCIsIuWNgeS4gOaciCIsIuWNgeS6jOaciCJdLGRheU5hbWVzOlsi5pif5pyf5pelIiwi5pif5pyf5LiAIiwi5pif5pyf5LqMIiwi5pif5pyf5LiJIiwi5pif5pyf5ZubIiwi5pif5pyf5LqUIiwi5pif5pyf5YWtIl0sZGF5TmFtZXNTaG9ydDpbIuWRqOaXpSIsIuWRqOS4gCIsIuWRqOS6jCIsIuWRqOS4iSIsIuWRqOWbmyIsIuWRqOS6lCIsIuWRqOWFrSJdLGRheU5hbWVzTWluOlsi5pelIiwi5LiAIiwi5LqMIiwi5LiJIiwi5ZubIiwi5LqUIiwi5YWtIl0sd2Vla0hlYWRlcjoi5ZGoIixkYXRlRm9ybWF0OiJ5eS9tbS9kZCIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITAseWVhclN1ZmZpeDoi5bm0In0pLGEuZnVsbENhbGVuZGFyLmxhbmcoInpoLXR3Iix7YnV0dG9uVGV4dDp7bW9udGg6IuaciCIsd2Vlazoi6YCxIixkYXk6IuWkqSIsbGlzdDoi5b6F6L6m5LqL6aCFIn0sYWxsRGF5VGV4dDoi5YWo5aSpIixldmVudExpbWl0VGV4dDoi5pu05aSaIn0pfSgpLChiLmxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImVuIiksYS5mdWxsQ2FsZW5kYXIubGFuZygiZW4iKSxhLmRhdGVwaWNrZXImJmEuZGF0ZXBpY2tlci5zZXREZWZhdWx0cyhhLmRhdGVwaWNrZXIucmVnaW9uYWxbIiJdKX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/ar-ma.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJhci1tYSIse21vbnRoczoi2YrZhtin2YrYsV/Zgdio2LHYp9mK2LFf2YXYp9ix2LNf2KPYqNix2YrZhF/Zhdin2Ypf2YrZiNmG2YrZiF/ZitmI2YTZitmI2LJf2LrYtNiqX9i02KrZhtio2LFf2KPZg9iq2YjYqNixX9mG2YjZhtio2LFf2K/YrNmG2KjYsSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoi2YrZhtin2YrYsV/Zgdio2LHYp9mK2LFf2YXYp9ix2LNf2KPYqNix2YrZhF/Zhdin2Ypf2YrZiNmG2YrZiF/ZitmI2YTZitmI2LJf2LrYtNiqX9i02KrZhtio2LFf2KPZg9iq2YjYqNixX9mG2YjZhtio2LFf2K/YrNmG2KjYsSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi2KfZhNij2K3Yr1/Yp9mE2KXYqtmG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Itin2K3Yr1/Yp9iq2YbZitmGX9ir2YTYp9ir2KfYoV/Yp9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLYrV/Zhl/Yq1/YsV/Yrl/YrF/YsyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkxUOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW9in2YTZitmI2YUg2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLG5leHREYXk6IlvYutiv2Kcg2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLG5leHRXZWVrOiJkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsbGFzdERheToiW9ij2YXYsyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsbGFzdFdlZWs6ImRkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLZgdmKICVzIixwYXN0OiLZhdmG2LAgJXMiLHM6Itir2YjYp9mGIixtOiLYr9mC2YrZgtipIixtbToiJWQg2K/Zgtin2KbZgiIsaDoi2LPYp9i52KkiLGhoOiIlZCDYs9in2LnYp9iqIixkOiLZitmI2YUiLGRkOiIlZCDYo9mK2KfZhSIsTToi2LTZh9ixIixNTToiJWQg2KPYtNmH2LEiLHk6Itiz2YbYqSIseXk6IiVkINiz2YbZiNin2KoifSx3ZWVrOntkb3c6Nixkb3k6MTJ9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImFyLW1hIiwiYXIiLHtjbG9zZVRleHQ6Itil2LrZhNin2YIiLHByZXZUZXh0OiImI3gzQzvYp9mE2LPYp9io2YIiLG5leHRUZXh0OiLYp9mE2KrYp9mE2YomI3gzRTsiLGN1cnJlbnRUZXh0OiLYp9mE2YrZiNmFIixtb250aE5hbWVzOlsi2YPYp9mG2YjZhiDYp9mE2KvYp9mG2YoiLCLYtNio2KfYtyIsItii2LDYp9ixIiwi2YbZitiz2KfZhiIsItmF2KfZitmIIiwi2K3YstmK2LHYp9mGIiwi2KrZhdmI2LIiLCLYotioIiwi2KPZitmE2YjZhCIsItiq2LTYsdmK2YYg2KfZhNij2YjZhCIsItiq2LTYsdmK2YYg2KfZhNir2KfZhtmKIiwi2YPYp9mG2YjZhiDYp9mE2KPZiNmEIl0sbW9udGhOYW1lc1Nob3J0OlsiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiMTAiLCIxMSIsIjEyIl0sZGF5TmFtZXM6WyLYp9mE2KPYrdivIiwi2KfZhNin2KvZhtmK2YYiLCLYp9mE2KvZhNin2KvYp9ihIiwi2KfZhNij2LHYqNi52KfYoSIsItin2YTYrtmF2YrYsyIsItin2YTYrNmF2LnYqSIsItin2YTYs9io2KoiXSxkYXlOYW1lc1Nob3J0Olsi2KfZhNij2K3YryIsItin2YTYp9ir2YbZitmGIiwi2KfZhNir2YTYp9ir2KfYoSIsItin2YTYo9ix2KjYudin2KEiLCLYp9mE2K7ZhdmK2LMiLCLYp9mE2KzZhdi52KkiLCLYp9mE2LPYqNiqIl0sZGF5TmFtZXNNaW46WyLYrSIsItmGIiwi2KsiLCLYsSIsItiuIiwi2KwiLCLYsyJdLHdlZWtIZWFkZXI6Itij2LPYqNmI2LkiLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheTo2LGlzUlRMOiEwLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiYXItbWEiLHtidXR0b25UZXh0Onttb250aDoi2LTZh9ixIix3ZWVrOiLYo9iz2KjZiNi5IixkYXk6ItmK2YjZhSIsbGlzdDoi2KPYrNmG2K/YqSJ9LGFsbERheVRleHQ6Itin2YTZitmI2YUg2YPZhNmHIixldmVudExpbWl0VGV4dDoi2KPYrtix2YkifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/ar-sa.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXt2YXIgYz17MToi2aEiLDI6ItmiIiwzOiLZoyIsNDoi2aQiLDU6ItmlIiw2OiLZpiIsNzoi2aciLDg6ItmoIiw5OiLZqSIsMDoi2aAifSxkPXsi2aEiOiIxIiwi2aIiOiIyIiwi2aMiOiIzIiwi2aQiOiI0Iiwi2aUiOiI1Iiwi2aYiOiI2Iiwi2aciOiI3Iiwi2agiOiI4Iiwi2akiOiI5Iiwi2aAiOiIwIn07KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwiYXItc2EiLHttb250aHM6ItmK2YbYp9mK2LFf2YHYqNix2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf2YXYp9mK2Yhf2YrZiNmG2YrZiF/ZitmI2YTZitmIX9ij2LrYs9i32LNf2LPYqNiq2YXYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YHZhdio2LFf2K/Zitiz2YXYqNixIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiLZitmG2KfZitixX9mB2KjYsdin2YrYsV/Zhdin2LHYs1/Yo9io2LHZitmEX9mF2KfZitmIX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiF/Yo9i62LPYt9izX9iz2KjYqtmF2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmB2YXYqNixX9iv2YrYs9mF2KjYsSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Itij2K3Yr1/Ypdir2YbZitmGX9ir2YTYp9ir2KfYoV/Yo9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLYrV/Zhl/Yq1/YsV/Yrl/YrF/YsyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgTFQifSxtZXJpZGllbVBhcnNlOi/YtXzZhS8saXNQTTpmdW5jdGlvbihhKXtyZXR1cm4i2YUiPT09YX0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAxMj5hPyLYtSI6ItmFIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvYp9mE2YrZiNmFINi52YTZiSDYp9mE2LPYp9i52KldIExUIixuZXh0RGF5OiJb2LrYr9inINi52YTZiSDYp9mE2LPYp9i52KldIExUIixuZXh0V2VlazoiZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLGxhc3REYXk6IlvYo9mF2LMg2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLGxhc3RXZWVrOiJkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi2YHZiiAlcyIscGFzdDoi2YXZhtiwICVzIixzOiLYq9mI2KfZhiIsbToi2K/ZgtmK2YLYqSIsbW06IiVkINiv2YLYp9im2YIiLGg6Itiz2KfYudipIixoaDoiJWQg2LPYp9i52KfYqiIsZDoi2YrZiNmFIixkZDoiJWQg2KPZitin2YUiLE06Iti02YfYsSIsTU06IiVkINij2LTZh9ixIix5OiLYs9mG2KkiLHl5OiIlZCDYs9mG2YjYp9iqIn0scHJlcGFyc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvW9mh2aLZo9mk2aXZptmn2ajZqdmgXS9nLGZ1bmN0aW9uKGEpe3JldHVybiBkW2FdfSkucmVwbGFjZSgv2IwvZywiLCIpfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oYSl7cmV0dXJuIGNbYV19KS5yZXBsYWNlKC8sL2csItiMIil9LHdlZWs6e2Rvdzo2LGRveToxMn19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiYXItc2EiLCJhciIse2Nsb3NlVGV4dDoi2KXYutmE2KfZgiIscHJldlRleHQ6IiYjeDNDO9in2YTYs9in2KjZgiIsbmV4dFRleHQ6Itin2YTYqtin2YTZiiYjeDNFOyIsY3VycmVudFRleHQ6Itin2YTZitmI2YUiLG1vbnRoTmFtZXM6WyLZg9in2YbZiNmGINin2YTYq9in2YbZiiIsIti02KjYp9i3Iiwi2KLYsNin2LEiLCLZhtmK2LPYp9mGIiwi2YXYp9mK2YgiLCLYrdiy2YrYsdin2YYiLCLYqtmF2YjYsiIsItii2KgiLCLYo9mK2YTZiNmEIiwi2KrYtNix2YrZhiDYp9mE2KPZiNmEIiwi2KrYtNix2YrZhiDYp9mE2KvYp9mG2YoiLCLZg9in2YbZiNmGINin2YTYo9mI2YQiXSxtb250aE5hbWVzU2hvcnQ6WyIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiXSxkYXlOYW1lczpbItin2YTYo9it2K8iLCLYp9mE2KfYq9mG2YrZhiIsItin2YTYq9mE2KfYq9in2KEiLCLYp9mE2KPYsdio2LnYp9ihIiwi2KfZhNiu2YXZitizIiwi2KfZhNis2YXYudipIiwi2KfZhNiz2KjYqiJdLGRheU5hbWVzU2hvcnQ6WyLYp9mE2KPYrdivIiwi2KfZhNin2KvZhtmK2YYiLCLYp9mE2KvZhNin2KvYp9ihIiwi2KfZhNij2LHYqNi52KfYoSIsItin2YTYrtmF2YrYsyIsItin2YTYrNmF2LnYqSIsItin2YTYs9io2KoiXSxkYXlOYW1lc01pbjpbItitIiwi2YYiLCLYqyIsItixIiwi2K4iLCLYrCIsItizIl0sd2Vla0hlYWRlcjoi2KPYs9io2YjYuSIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjYsaXNSVEw6ITAsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJhci1zYSIse2J1dHRvblRleHQ6e21vbnRoOiLYtNmH2LEiLHdlZWs6Itij2LPYqNmI2LkiLGRheToi2YrZiNmFIixsaXN0OiLYo9is2YbYr9ipIn0sYWxsRGF5VGV4dDoi2KfZhNmK2YjZhSDZg9mE2YciLGV2ZW50TGltaXRUZXh0OiLYo9iu2LHZiSJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/ar-tn.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJhci10biIse21vbnRoczoi2KzYp9mG2YHZil/ZgdmK2YHYsdmKX9mF2KfYsdizX9ij2YHYsdmK2YRf2YXYp9mKX9is2YjYp9mGX9is2YjZitmE2YrYqV/Yo9mI2Kpf2LPYqNiq2YXYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YHZhdio2LFf2K/Zitiz2YXYqNixIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiLYrNin2YbZgdmKX9mB2YrZgdix2Ypf2YXYp9ix2LNf2KPZgdix2YrZhF/Zhdin2Ypf2KzZiNin2YZf2KzZiNmK2YTZitipX9ij2YjYql/Ys9io2KrZhdio2LFf2KPZg9iq2YjYqNixX9mG2YjZgdmF2KjYsV/Yr9mK2LPZhdio2LEiLnNwbGl0KCJfIiksd2Vla2RheXM6Itin2YTYo9it2K9f2KfZhNil2KvZhtmK2YZf2KfZhNir2YTYp9ir2KfYoV/Yp9mE2KPYsdio2LnYp9ihX9in2YTYrtmF2YrYs1/Yp9mE2KzZhdi52Klf2KfZhNiz2KjYqiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLYo9it2K9f2KXYq9mG2YrZhl/Yq9mE2KfYq9in2KFf2KPYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi2K1f2YZf2Ktf2LFf2K5f2Kxf2LMiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJMVDpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIExUIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvYp9mE2YrZiNmFINi52YTZiSDYp9mE2LPYp9i52KldIExUIixuZXh0RGF5OiJb2LrYr9inINi52YTZiSDYp9mE2LPYp9i52KldIExUIixuZXh0V2VlazoiZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLGxhc3REYXk6IlvYo9mF2LMg2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLGxhc3RXZWVrOiJkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi2YHZiiAlcyIscGFzdDoi2YXZhtiwICVzIixzOiLYq9mI2KfZhiIsbToi2K/ZgtmK2YLYqSIsbW06IiVkINiv2YLYp9im2YIiLGg6Itiz2KfYudipIixoaDoiJWQg2LPYp9i52KfYqiIsZDoi2YrZiNmFIixkZDoiJWQg2KPZitin2YUiLE06Iti02YfYsSIsTU06IiVkINij2LTZh9ixIix5OiLYs9mG2KkiLHl5OiIlZCDYs9mG2YjYp9iqIn0sd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImFyLXRuIiwiYXIiLHtjbG9zZVRleHQ6Itil2LrZhNin2YIiLHByZXZUZXh0OiImI3gzQzvYp9mE2LPYp9io2YIiLG5leHRUZXh0OiLYp9mE2KrYp9mE2YomI3gzRTsiLGN1cnJlbnRUZXh0OiLYp9mE2YrZiNmFIixtb250aE5hbWVzOlsi2YPYp9mG2YjZhiDYp9mE2KvYp9mG2YoiLCLYtNio2KfYtyIsItii2LDYp9ixIiwi2YbZitiz2KfZhiIsItmF2KfZitmIIiwi2K3YstmK2LHYp9mGIiwi2KrZhdmI2LIiLCLYotioIiwi2KPZitmE2YjZhCIsItiq2LTYsdmK2YYg2KfZhNij2YjZhCIsItiq2LTYsdmK2YYg2KfZhNir2KfZhtmKIiwi2YPYp9mG2YjZhiDYp9mE2KPZiNmEIl0sbW9udGhOYW1lc1Nob3J0OlsiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiMTAiLCIxMSIsIjEyIl0sZGF5TmFtZXM6WyLYp9mE2KPYrdivIiwi2KfZhNin2KvZhtmK2YYiLCLYp9mE2KvZhNin2KvYp9ihIiwi2KfZhNij2LHYqNi52KfYoSIsItin2YTYrtmF2YrYsyIsItin2YTYrNmF2LnYqSIsItin2YTYs9io2KoiXSxkYXlOYW1lc1Nob3J0Olsi2KfZhNij2K3YryIsItin2YTYp9ir2YbZitmGIiwi2KfZhNir2YTYp9ir2KfYoSIsItin2YTYo9ix2KjYudin2KEiLCLYp9mE2K7ZhdmK2LMiLCLYp9mE2KzZhdi52KkiLCLYp9mE2LPYqNiqIl0sZGF5TmFtZXNNaW46WyLYrSIsItmGIiwi2KsiLCLYsSIsItiuIiwi2KwiLCLYsyJdLHdlZWtIZWFkZXI6Itij2LPYqNmI2LkiLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheTo2LGlzUlRMOiEwLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiYXItdG4iLHtidXR0b25UZXh0Onttb250aDoi2LTZh9ixIix3ZWVrOiLYo9iz2KjZiNi5IixkYXk6ItmK2YjZhSIsbGlzdDoi2KPYrNmG2K/YqSJ9LGFsbERheVRleHQ6Itin2YTZitmI2YUg2YPZhNmHIixldmVudExpbWl0VGV4dDoi2KPYrtix2YkifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/ar.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXt2YXIgYz17MToi2aEiLDI6ItmiIiwzOiLZoyIsNDoi2aQiLDU6ItmlIiw2OiLZpiIsNzoi2aciLDg6ItmoIiw5OiLZqSIsMDoi2aAifSxkPXsi2aEiOiIxIiwi2aIiOiIyIiwi2aMiOiIzIiwi2aQiOiI0Iiwi2aUiOiI1Iiwi2aYiOiI2Iiwi2aciOiI3Iiwi2agiOiI4Iiwi2akiOiI5Iiwi2aAiOiIwIn0sZT1mdW5jdGlvbihhKXtyZXR1cm4gMD09PWE/MDoxPT09YT8xOjI9PT1hPzI6YSUxMDA+PTMmJjEwPj1hJTEwMD8zOmElMTAwPj0xMT80OjV9LGY9e3M6WyLYo9mC2YQg2YXZhiDYq9in2YbZitipIiwi2KvYp9mG2YrYqSDZiNin2K3Yr9ipIixbItir2KfZhtmK2KrYp9mGIiwi2KvYp9mG2YrYqtmK2YYiXSwiJWQg2KvZiNin2YYiLCIlZCDYq9in2YbZitipIiwiJWQg2KvYp9mG2YrYqSJdLG06WyLYo9mC2YQg2YXZhiDYr9mC2YrZgtipIiwi2K/ZgtmK2YLYqSDZiNin2K3Yr9ipIixbItiv2YLZitmC2KrYp9mGIiwi2K/ZgtmK2YLYqtmK2YYiXSwiJWQg2K/Zgtin2KbZgiIsIiVkINiv2YLZitmC2KkiLCIlZCDYr9mC2YrZgtipIl0saDpbItij2YLZhCDZhdmGINiz2KfYudipIiwi2LPYp9i52Kkg2YjYp9it2K/YqSIsWyLYs9in2LnYqtin2YYiLCLYs9in2LnYqtmK2YYiXSwiJWQg2LPYp9i52KfYqiIsIiVkINiz2KfYudipIiwiJWQg2LPYp9i52KkiXSxkOlsi2KPZgtmEINmF2YYg2YrZiNmFIiwi2YrZiNmFINmI2KfYrdivIixbItmK2YjZhdin2YYiLCLZitmI2YXZitmGIl0sIiVkINij2YrYp9mFIiwiJWQg2YrZiNmF2YvYpyIsIiVkINmK2YjZhSJdLE06WyLYo9mC2YQg2YXZhiDYtNmH2LEiLCLYtNmH2LEg2YjYp9it2K8iLFsi2LTZh9ix2KfZhiIsIti02YfYsdmK2YYiXSwiJWQg2KPYtNmH2LEiLCIlZCDYtNmH2LHYpyIsIiVkINi02YfYsSJdLHk6WyLYo9mC2YQg2YXZhiDYudin2YUiLCLYudin2YUg2YjYp9it2K8iLFsi2LnYp9mF2KfZhiIsIti52KfZhdmK2YYiXSwiJWQg2KPYudmI2KfZhSIsIiVkINi52KfZhdmL2KciLCIlZCDYudin2YUiXX0sZz1mdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYixjLGQsZyl7dmFyIGg9ZShiKSxpPWZbYV1bZShiKV07cmV0dXJuIDI9PT1oJiYoaT1pW2M/MDoxXSksaS5yZXBsYWNlKC8lZC9pLGIpfX0saD1bItmD2KfZhtmI2YYg2KfZhNir2KfZhtmKINmK2YbYp9mK2LEiLCLYtNio2KfYtyDZgdio2LHYp9mK2LEiLCLYotiw2KfYsSDZhdin2LHYsyIsItmG2YrYs9in2YYg2KPYqNix2YrZhCIsItij2YrYp9ixINmF2KfZitmIIiwi2K3YstmK2LHYp9mGINmK2YjZhtmK2YgiLCLYqtmF2YjYsiDZitmI2YTZitmIIiwi2KLYqCDYo9i62LPYt9izIiwi2KPZitmE2YjZhCDYs9io2KrZhdio2LEiLCLYqti02LHZitmGINin2YTYo9mI2YQg2KPZg9iq2YjYqNixIiwi2KrYtNix2YrZhiDYp9mE2KvYp9mG2Yog2YbZiNmB2YXYqNixIiwi2YPYp9mG2YjZhiDYp9mE2KPZiNmEINiv2YrYs9mF2KjYsSJdOyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImFyIix7bW9udGhzOmgsbW9udGhzU2hvcnQ6aCx3ZWVrZGF5czoi2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Itij2K3Yr1/Ypdir2YbZitmGX9ir2YTYp9ir2KfYoV/Yo9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLYrV/Zhl/Yq1/YsV/Yrl/YrF/YsyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgTFQifSxtZXJpZGllbVBhcnNlOi/YtXzZhS8saXNQTTpmdW5jdGlvbihhKXtyZXR1cm4i2YUiPT09YX0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAxMj5hPyLYtSI6ItmFIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvYp9mE2YrZiNmFINi52YbYryDYp9mE2LPYp9i52KldIExUIixuZXh0RGF5OiJb2LrYr9mL2Kcg2LnZhtivINin2YTYs9in2LnYqV0gTFQiLG5leHRXZWVrOiJkZGRkIFvYudmG2K8g2KfZhNiz2KfYudipXSBMVCIsbGFzdERheToiW9ij2YXYsyDYudmG2K8g2KfZhNiz2KfYudipXSBMVCIsbGFzdFdlZWs6ImRkZGQgW9i52YbYryDYp9mE2LPYp9i52KldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLYqNi52K8gJXMiLHBhc3Q6ItmF2YbYsCAlcyIsczpnKCJzIiksbTpnKCJtIiksbW06ZygibSIpLGg6ZygiaCIpLGhoOmcoImgiKSxkOmcoImQiKSxkZDpnKCJkIiksTTpnKCJNIiksTU06ZygiTSIpLHk6ZygieSIpLHl5OmcoInkiKX0scHJlcGFyc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvW9mh2aLZo9mk2aXZptmn2ajZqdmgXS9nLGZ1bmN0aW9uKGEpe3JldHVybiBkW2FdfSkucmVwbGFjZSgv2IwvZywiLCIpfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oYSl7cmV0dXJuIGNbYV19KS5yZXBsYWNlKC8sL2csItiMIil9LHdlZWs6e2Rvdzo2LGRveToxMn19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiYXIiLCJhciIse2Nsb3NlVGV4dDoi2KXYutmE2KfZgiIscHJldlRleHQ6IiYjeDNDO9in2YTYs9in2KjZgiIsbmV4dFRleHQ6Itin2YTYqtin2YTZiiYjeDNFOyIsY3VycmVudFRleHQ6Itin2YTZitmI2YUiLG1vbnRoTmFtZXM6WyLZg9in2YbZiNmGINin2YTYq9in2YbZiiIsIti02KjYp9i3Iiwi2KLYsNin2LEiLCLZhtmK2LPYp9mGIiwi2YXYp9mK2YgiLCLYrdiy2YrYsdin2YYiLCLYqtmF2YjYsiIsItii2KgiLCLYo9mK2YTZiNmEIiwi2KrYtNix2YrZhiDYp9mE2KPZiNmEIiwi2KrYtNix2YrZhiDYp9mE2KvYp9mG2YoiLCLZg9in2YbZiNmGINin2YTYo9mI2YQiXSxtb250aE5hbWVzU2hvcnQ6WyIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiXSxkYXlOYW1lczpbItin2YTYo9it2K8iLCLYp9mE2KfYq9mG2YrZhiIsItin2YTYq9mE2KfYq9in2KEiLCLYp9mE2KPYsdio2LnYp9ihIiwi2KfZhNiu2YXZitizIiwi2KfZhNis2YXYudipIiwi2KfZhNiz2KjYqiJdLGRheU5hbWVzU2hvcnQ6WyLYp9mE2KPYrdivIiwi2KfZhNin2KvZhtmK2YYiLCLYp9mE2KvZhNin2KvYp9ihIiwi2KfZhNij2LHYqNi52KfYoSIsItin2YTYrtmF2YrYsyIsItin2YTYrNmF2LnYqSIsItin2YTYs9io2KoiXSxkYXlOYW1lc01pbjpbItitIiwi2YYiLCLYqyIsItixIiwi2K4iLCLYrCIsItizIl0sd2Vla0hlYWRlcjoi2KPYs9io2YjYuSIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjYsaXNSVEw6ITAsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJhciIse2J1dHRvblRleHQ6e21vbnRoOiLYtNmH2LEiLHdlZWs6Itij2LPYqNmI2LkiLGRheToi2YrZiNmFIixsaXN0OiLYo9is2YbYr9ipIn0sYWxsRGF5VGV4dDoi2KfZhNmK2YjZhSDZg9mE2YciLGV2ZW50TGltaXRUZXh0OiLYo9iu2LHZiSJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/bg.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJiZyIse21vbnRoczoi0Y/QvdGD0LDRgNC4X9GE0LXQstGA0YPQsNGA0Lhf0LzQsNGA0YJf0LDQv9GA0LjQu1/QvNCw0Llf0Y7QvdC4X9GO0LvQuF/QsNCy0LPRg9GB0YJf0YHQtdC/0YLQtdC80LLRgNC4X9C+0LrRgtC+0LzQstGA0Lhf0L3QvtC10LzQstGA0Lhf0LTQtdC60LXQvNCy0YDQuCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoi0Y/QvdGAX9GE0LXQsl/QvNCw0YBf0LDQv9GAX9C80LDQuV/RjtC90Lhf0Y7Qu9C4X9Cw0LLQs1/RgdC10L9f0L7QutGCX9C90L7QtV/QtNC10LoiLnNwbGl0KCJfIiksd2Vla2RheXM6ItC90LXQtNC10LvRj1/Qv9C+0L3QtdC00LXQu9C90LjQul/QstGC0L7RgNC90LjQul/RgdGA0Y/QtNCwX9GH0LXRgtCy0YrRgNGC0YrQul/Qv9C10YLRitC6X9GB0YrQsdC+0YLQsCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLQvdC10LRf0L/QvtC9X9Cy0YLQvl/RgdGA0Y9f0YfQtdGCX9C/0LXRgl/RgdGK0LEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ItC90LRf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6IkxUOnNzIixMOiJELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBMVCIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW9CU0L3QtdGBINCyXSBMVCIsbmV4dERheToiW9Cj0YLRgNC1INCyXSBMVCIsbmV4dFdlZWs6ImRkZGQgW9CyXSBMVCIsbGFzdERheToiW9CS0YfQtdGA0LAg0LJdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6Y2FzZSAzOmNhc2UgNjpyZXR1cm4iW9CSINC40LfQvNC40L3QsNC70LDRgtCwXSBkZGRkIFvQsl0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW9CSINC40LfQvNC40L3QsNC70LjRj10gZGRkZCBb0LJdIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ItGB0LvQtdC0ICVzIixwYXN0OiLQv9GA0LXQtNC4ICVzIixzOiLQvdGP0LrQvtC70LrQviDRgdC10LrRg9C90LTQuCIsbToi0LzQuNC90YPRgtCwIixtbToiJWQg0LzQuNC90YPRgtC4IixoOiLRh9Cw0YEiLGhoOiIlZCDRh9Cw0YHQsCIsZDoi0LTQtdC9IixkZDoiJWQg0LTQvdC4IixNOiLQvNC10YHQtdGGIixNTToiJWQg0LzQtdGB0LXRhtCwIix5OiLQs9C+0LTQuNC90LAiLHl5OiIlZCDQs9C+0LTQuNC90LgifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0tKNC10LJ80LXQvXzRgtC4fNCy0Lh80YDQuHzQvNC4KS8sb3JkaW5hbDpmdW5jdGlvbihhKXt2YXIgYj1hJTEwLGM9YSUxMDA7cmV0dXJuIDA9PT1hP2ErIi3QtdCyIjowPT09Yz9hKyIt0LXQvSI6Yz4xMCYmMjA+Yz9hKyIt0YLQuCI6MT09PWI/YSsiLdCy0LgiOjI9PT1iP2ErIi3RgNC4Ijo3PT09Ynx8OD09PWI/YSsiLdC80LgiOmErIi3RgtC4In0sd2Vlazp7ZG93OjEsZG95Ojd9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImJnIiwiYmciLHtjbG9zZVRleHQ6ItC30LDRgtCy0L7RgNC4IixwcmV2VGV4dDoiJiN4M0M70L3QsNC30LDQtCIsbmV4dFRleHQ6ItC90LDQv9GA0LXQtCYjeDNFOyIsbmV4dEJpZ1RleHQ6IiYjeDNFOyYjeDNFOyIsY3VycmVudFRleHQ6ItC00L3QtdGBIixtb250aE5hbWVzOlsi0K/QvdGD0LDRgNC4Iiwi0KTQtdCy0YDRg9Cw0YDQuCIsItCc0LDRgNGCIiwi0JDQv9GA0LjQuyIsItCc0LDQuSIsItCu0L3QuCIsItCu0LvQuCIsItCQ0LLQs9GD0YHRgiIsItCh0LXQv9GC0LXQvNCy0YDQuCIsItCe0LrRgtC+0LzQstGA0LgiLCLQndC+0LXQvNCy0YDQuCIsItCU0LXQutC10LzQstGA0LgiXSxtb250aE5hbWVzU2hvcnQ6WyLQr9C90YMiLCLQpNC10LIiLCLQnNCw0YAiLCLQkNC/0YAiLCLQnNCw0LkiLCLQrtC90LgiLCLQrtC70LgiLCLQkNCy0LMiLCLQodC10L8iLCLQntC60YIiLCLQndC+0LIiLCLQlNC10LoiXSxkYXlOYW1lczpbItCd0LXQtNC10LvRjyIsItCf0L7QvdC10LTQtdC70L3QuNC6Iiwi0JLRgtC+0YDQvdC40LoiLCLQodGA0Y/QtNCwIiwi0KfQtdGC0LLRitGA0YLRitC6Iiwi0J/QtdGC0YrQuiIsItCh0YrQsdC+0YLQsCJdLGRheU5hbWVzU2hvcnQ6WyLQndC10LQiLCLQn9C+0L0iLCLQktGC0L4iLCLQodGA0Y8iLCLQp9C10YIiLCLQn9C10YIiLCLQodGK0LEiXSxkYXlOYW1lc01pbjpbItCd0LUiLCLQn9C+Iiwi0JLRgiIsItCh0YAiLCLQp9C1Iiwi0J/QtSIsItCh0YoiXSx3ZWVrSGVhZGVyOiJXayIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJiZyIse2J1dHRvblRleHQ6e21vbnRoOiLQnNC10YHQtdGGIix3ZWVrOiLQodC10LTQvNC40YbQsCIsZGF5OiLQlNC10L0iLGxpc3Q6ItCT0YDQsNGE0LjQuiJ9LGFsbERheVRleHQ6ItCm0Y/QuyDQtNC10L0iLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGEpe3JldHVybiIr0L7RidC1ICIrYX19KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/ca.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJjYSIse21vbnRoczoiZ2VuZXJfZmVicmVyX21hcsOnX2FicmlsX21haWdfanVueV9qdWxpb2xfYWdvc3Rfc2V0ZW1icmVfb2N0dWJyZV9ub3ZlbWJyZV9kZXNlbWJyZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiZ2VuLl9mZWJyLl9tYXIuX2Fici5fbWFpLl9qdW4uX2p1bC5fYWcuX3NldC5fb2N0Ll9ub3YuX2Rlcy4iLnNwbGl0KCJfIiksd2Vla2RheXM6ImRpdW1lbmdlX2RpbGx1bnNfZGltYXJ0c19kaW1lY3Jlc19kaWpvdXNfZGl2ZW5kcmVzX2Rpc3NhYnRlIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRnLl9kbC5fZHQuX2RjLl9kai5fZHYuX2RzLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiRGdfRGxfRHRfRGNfRGpfRHZfRHMiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6IkxUOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheTpmdW5jdGlvbigpe3JldHVybiJbYXZ1aSBhICIrKDEhPT10aGlzLmhvdXJzKCk/ImxlcyI6ImxhIikrIl0gTFQifSxuZXh0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltkZW3DoCBhICIrKDEhPT10aGlzLmhvdXJzKCk/ImxlcyI6ImxhIikrIl0gTFQifSxuZXh0V2VlazpmdW5jdGlvbigpe3JldHVybiJkZGRkIFthICIrKDEhPT10aGlzLmhvdXJzKCk/ImxlcyI6ImxhIikrIl0gTFQifSxsYXN0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIlthaGlyIGEgIisoMSE9PXRoaXMuaG91cnMoKT8ibGVzIjoibGEiKSsiXSBMVCJ9LGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIltlbF0gZGRkZCBbcGFzc2F0IGEgIisoMSE9PXRoaXMuaG91cnMoKT8ibGVzIjoibGEiKSsiXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImVuICVzIixwYXN0OiJmYSAlcyIsczoidW5zIHNlZ29ucyIsbToidW4gbWludXQiLG1tOiIlZCBtaW51dHMiLGg6InVuYSBob3JhIixoaDoiJWQgaG9yZXMiLGQ6InVuIGRpYSIsZGQ6IiVkIGRpZXMiLE06InVuIG1lcyIsTU06IiVkIG1lc29zIix5OiJ1biBhbnkiLHl5OiIlZCBhbnlzIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHJ8bnx0fMOofGEpLyxvcmRpbmFsOmZ1bmN0aW9uKGEsYil7dmFyIGM9MT09PWE/InIiOjI9PT1hPyJuIjozPT09YT8iciI6ND09PWE/InQiOiLDqCI7cmV0dXJuKCJ3Ij09PWJ8fCJXIj09PWIpJiYoYz0iYSIpLGErY30sd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImNhIiwiY2EiLHtjbG9zZVRleHQ6IlRhbmNhIixwcmV2VGV4dDoiQW50ZXJpb3IiLG5leHRUZXh0OiJTZWfDvGVudCIsY3VycmVudFRleHQ6IkF2dWkiLG1vbnRoTmFtZXM6WyJnZW5lciIsImZlYnJlciIsIm1hcsOnIiwiYWJyaWwiLCJtYWlnIiwianVueSIsImp1bGlvbCIsImFnb3N0Iiwic2V0ZW1icmUiLCJvY3R1YnJlIiwibm92ZW1icmUiLCJkZXNlbWJyZSJdLG1vbnRoTmFtZXNTaG9ydDpbImdlbiIsImZlYiIsIm1hcsOnIiwiYWJyIiwibWFpZyIsImp1bnkiLCJqdWwiLCJhZyIsInNldCIsIm9jdCIsIm5vdiIsImRlcyJdLGRheU5hbWVzOlsiZGl1bWVuZ2UiLCJkaWxsdW5zIiwiZGltYXJ0cyIsImRpbWVjcmVzIiwiZGlqb3VzIiwiZGl2ZW5kcmVzIiwiZGlzc2FidGUiXSxkYXlOYW1lc1Nob3J0OlsiZGciLCJkbCIsImR0IiwiZGMiLCJkaiIsImR2IiwiZHMiXSxkYXlOYW1lc01pbjpbImRnIiwiZGwiLCJkdCIsImRjIiwiZGoiLCJkdiIsImRzIl0sd2Vla0hlYWRlcjoiU2V0IixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImNhIix7YnV0dG9uVGV4dDp7bW9udGg6Ik1lcyIsd2VlazoiU2V0bWFuYSIsZGF5OiJEaWEiLGxpc3Q6IkFnZW5kYSJ9LGFsbERheVRleHQ6IlRvdCBlbCBkaWEiLGV2ZW50TGltaXRUZXh0OiJtw6lzIn0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/cs.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEpe3JldHVybiBhPjEmJjU+YSYmMSE9PX5+KGEvMTApfWZ1bmN0aW9uIGQoYSxiLGQsZSl7dmFyIGY9YSsiICI7c3dpdGNoKGQpe2Nhc2UicyI6cmV0dXJuIGJ8fGU/InDDoXIgc2VrdW5kIjoicMOhciBzZWt1bmRhbWkiO2Nhc2UibSI6cmV0dXJuIGI/Im1pbnV0YSI6ZT8ibWludXR1IjoibWludXRvdSI7Y2FzZSJtbSI6cmV0dXJuIGJ8fGU/ZisoYyhhKT8ibWludXR5IjoibWludXQiKTpmKyJtaW51dGFtaSI7Y2FzZSJoIjpyZXR1cm4gYj8iaG9kaW5hIjplPyJob2RpbnUiOiJob2Rpbm91IjtjYXNlImhoIjpyZXR1cm4gYnx8ZT9mKyhjKGEpPyJob2RpbnkiOiJob2RpbiIpOmYrImhvZGluYW1pIjtjYXNlImQiOnJldHVybiBifHxlPyJkZW4iOiJkbmVtIjtjYXNlImRkIjpyZXR1cm4gYnx8ZT9mKyhjKGEpPyJkbnkiOiJkbsOtIik6ZisiZG55IjtjYXNlIk0iOnJldHVybiBifHxlPyJtxJtzw61jIjoibcSbc8OtY2VtIjtjYXNlIk1NIjpyZXR1cm4gYnx8ZT9mKyhjKGEpPyJtxJtzw61jZSI6Im3Em3PDrWPFryIpOmYrIm3Em3PDrWNpIjtjYXNlInkiOnJldHVybiBifHxlPyJyb2siOiJyb2tlbSI7Y2FzZSJ5eSI6cmV0dXJuIGJ8fGU/ZisoYyhhKT8icm9reSI6ImxldCIpOmYrImxldHkifX12YXIgZT0ibGVkZW5fw7pub3JfYsWZZXplbl9kdWJlbl9rdsSbdGVuX8SNZXJ2ZW5fxI1lcnZlbmVjX3NycGVuX3rDocWZw61fxZnDrWplbl9saXN0b3BhZF9wcm9zaW5lYyIuc3BsaXQoIl8iKSxmPSJsZWRfw7pub19ixZllX2R1Yl9rdsSbX8SNdm5fxI12Y19zcnBfesOhxZlfxZnDrWpfbGlzX3BybyIuc3BsaXQoIl8iKTsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJjcyIse21vbnRoczplLG1vbnRoc1Nob3J0OmYsbW9udGhzUGFyc2U6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdO2ZvcihjPTA7MTI+YztjKyspZFtjXT1uZXcgUmVnRXhwKCJeIithW2NdKyIkfF4iK2JbY10rIiQiLCJpIik7cmV0dXJuIGR9KGUsZiksd2Vla2RheXM6Im5lZMSbbGVfcG9uZMSbbMOtX8O6dGVyw71fc3TFmWVkYV/EjXR2cnRla19ww6F0ZWtfc29ib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5lX3BvX8O6dF9zdF/EjXRfcMOhX3NvIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJuZV9wb1/DunRfc3RfxI10X3DDoV9zbyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiTFQ6c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIExUIixMTExMOiJkZGRkIEQuIE1NTU0gWVlZWSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbZG5lcyB2XSBMVCIsbmV4dERheToiW3rDrXRyYSB2XSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbdiBuZWTEm2xpIHZdIExUIjtjYXNlIDE6Y2FzZSAyOnJldHVybiJbdl0gZGRkZCBbdl0gTFQiO2Nhc2UgMzpyZXR1cm4iW3ZlIHN0xZllZHUgdl0gTFQiO2Nhc2UgNDpyZXR1cm4iW3ZlIMSNdHZydGVrIHZdIExUIjtjYXNlIDU6cmV0dXJuIlt2IHDDoXRlayB2XSBMVCI7Y2FzZSA2OnJldHVybiJbdiBzb2JvdHUgdl0gTFQifX0sbGFzdERheToiW3bEjWVyYSB2XSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbbWludWxvdSBuZWTEm2xpIHZdIExUIjtjYXNlIDE6Y2FzZSAyOnJldHVybiJbbWludWzDqV0gZGRkZCBbdl0gTFQiO2Nhc2UgMzpyZXR1cm4iW21pbnVsb3Ugc3TFmWVkdSB2XSBMVCI7Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW21pbnVsw71dIGRkZGQgW3ZdIExUIjtjYXNlIDY6cmV0dXJuIlttaW51bG91IHNvYm90dSB2XSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJ6YSAlcyIscGFzdDoicMWZZWQgJXMiLHM6ZCxtOmQsbW06ZCxoOmQsaGg6ZCxkOmQsZGQ6ZCxNOmQsTU06ZCx5OmQseXk6ZH0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImNzIiwiY3MiLHtjbG9zZVRleHQ6IlphdsWZw610IixwcmV2VGV4dDoiJiN4M0M7RMWZw612ZSIsbmV4dFRleHQ6IlBvemTEm2ppJiN4M0U7IixjdXJyZW50VGV4dDoiTnluw60iLG1vbnRoTmFtZXM6WyJsZWRlbiIsIsO6bm9yIiwiYsWZZXplbiIsImR1YmVuIiwia3bEm3RlbiIsIsSNZXJ2ZW4iLCLEjWVydmVuZWMiLCJzcnBlbiIsInrDocWZw60iLCLFmcOtamVuIiwibGlzdG9wYWQiLCJwcm9zaW5lYyJdLG1vbnRoTmFtZXNTaG9ydDpbImxlZCIsIsO6bm8iLCJixZllIiwiZHViIiwia3bEmyIsIsSNZXIiLCLEjXZjIiwic3JwIiwiesOhxZkiLCLFmcOtaiIsImxpcyIsInBybyJdLGRheU5hbWVzOlsibmVkxJtsZSIsInBvbmTEm2zDrSIsIsO6dGVyw70iLCJzdMWZZWRhIiwixI10dnJ0ZWsiLCJww6F0ZWsiLCJzb2JvdGEiXSxkYXlOYW1lc1Nob3J0OlsibmUiLCJwbyIsIsO6dCIsInN0IiwixI10IiwicMOhIiwic28iXSxkYXlOYW1lc01pbjpbIm5lIiwicG8iLCLDunQiLCJzdCIsIsSNdCIsInDDoSIsInNvIl0sd2Vla0hlYWRlcjoiVMO9ZCIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJjcyIse2J1dHRvblRleHQ6e21vbnRoOiJNxJtzw61jIix3ZWVrOiJUw71kZW4iLGRheToiRGVuIixsaXN0OiJBZ2VuZGEifSxhbGxEYXlUZXh0OiJDZWzDvSBkZW4iLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGEpe3JldHVybiIrZGFsxaHDrTogIithfX0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/da.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJkYSIse21vbnRoczoiamFudWFyX2ZlYnJ1YXJfbWFydHNfYXByaWxfbWFqX2p1bmlfanVsaV9hdWd1c3Rfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbl9mZWJfbWFyX2Fwcl9tYWpfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJzw7huZGFnX21hbmRhZ190aXJzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sw7hyZGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InPDuG5fbWFuX3Rpcl9vbnNfdG9yX2ZyZV9sw7hyIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJzw7hfbWFfdGlfb25fdG9fZnJfbMO4Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiTFQ6c3MiLEw6IkREL01NL1lZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIExUIixMTExMOiJkZGRkIFtkLl0gRC4gTU1NTSBZWVlZIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltJIGRhZyBrbC5dIExUIixuZXh0RGF5OiJbSSBtb3JnZW4ga2wuXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2tsLl0gTFQiLGxhc3REYXk6IltJIGfDpXIga2wuXSBMVCIsbGFzdFdlZWs6IltzaWRzdGVdIGRkZGQgW2tsXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToib20gJXMiLHBhc3Q6IiVzIHNpZGVuIixzOiJmw6Ugc2VrdW5kZXIiLG06ImV0IG1pbnV0IixtbToiJWQgbWludXR0ZXIiLGg6ImVuIHRpbWUiLGhoOiIlZCB0aW1lciIsZDoiZW4gZGFnIixkZDoiJWQgZGFnZSIsTToiZW4gbcOlbmVkIixNTToiJWQgbcOlbmVkZXIiLHk6ImV0IMOlciIseXk6IiVkIMOlciJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJkYSIsImRhIix7Y2xvc2VUZXh0OiJMdWsiLHByZXZUZXh0OiImI3gzQztGb3JyaWdlIixuZXh0VGV4dDoiTsOmc3RlJiN4M0U7IixjdXJyZW50VGV4dDoiSWRhZyIsbW9udGhOYW1lczpbIkphbnVhciIsIkZlYnJ1YXIiLCJNYXJ0cyIsIkFwcmlsIiwiTWFqIiwiSnVuaSIsIkp1bGkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPa3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1haiIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9rdCIsIk5vdiIsIkRlYyJdLGRheU5hbWVzOlsiU8O4bmRhZyIsIk1hbmRhZyIsIlRpcnNkYWciLCJPbnNkYWciLCJUb3JzZGFnIiwiRnJlZGFnIiwiTMO4cmRhZyJdLGRheU5hbWVzU2hvcnQ6WyJTw7huIiwiTWFuIiwiVGlyIiwiT25zIiwiVG9yIiwiRnJlIiwiTMO4ciJdLGRheU5hbWVzTWluOlsiU8O4IiwiTWEiLCJUaSIsIk9uIiwiVG8iLCJGciIsIkzDuCJdLHdlZWtIZWFkZXI6IlVnZSIsZGF0ZUZvcm1hdDoiZGQtbW0teXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJkYSIse2J1dHRvblRleHQ6e21vbnRoOiJNw6VuZWQiLHdlZWs6IlVnZSIsZGF5OiJEYWciLGxpc3Q6IkFnZW5kYSJ9LGFsbERheVRleHQ6IkhlbGUgZGFnZW4iLGV2ZW50TGltaXRUZXh0OiJmbGVyZSJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/de-at.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYixjLGQpe3ZhciBlPXttOlsiZWluZSBNaW51dGUiLCJlaW5lciBNaW51dGUiXSxoOlsiZWluZSBTdHVuZGUiLCJlaW5lciBTdHVuZGUiXSxkOlsiZWluIFRhZyIsImVpbmVtIFRhZyJdLGRkOlthKyIgVGFnZSIsYSsiIFRhZ2VuIl0sTTpbImVpbiBNb25hdCIsImVpbmVtIE1vbmF0Il0sTU06W2ErIiBNb25hdGUiLGErIiBNb25hdGVuIl0seTpbImVpbiBKYWhyIiwiZWluZW0gSmFociJdLHl5OlthKyIgSmFocmUiLGErIiBKYWhyZW4iXX07cmV0dXJuIGI/ZVtjXVswXTplW2NdWzFdfShiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImRlLWF0Iix7bW9udGhzOiJKw6RubmVyX0ZlYnJ1YXJfTcOkcnpfQXByaWxfTWFpX0p1bmlfSnVsaV9BdWd1c3RfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGV6ZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IkrDpG4uX0ZlYnIuX01yei5fQXByLl9NYWlfSnVuLl9KdWwuX0F1Zy5fU2VwdC5fT2t0Ll9Ob3YuX0Rlei4iLnNwbGl0KCJfIiksd2Vla2RheXM6IlNvbm50YWdfTW9udGFnX0RpZW5zdGFnX01pdHR3b2NoX0Rvbm5lcnN0YWdfRnJlaXRhZ19TYW1zdGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlNvLl9Nby5fRGkuX01pLl9Eby5fRnIuX1NhLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU29fTW9fRGlfTWlfRG9fRnJfU2EiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQsIEQuIE1NTU0gWVlZWSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSGV1dGUgdW1dIExUIFtVaHJdIixzYW1lRWxzZToiTCIsbmV4dERheToiW01vcmdlbiB1bV0gTFQgW1Vocl0iLG5leHRXZWVrOiJkZGRkIFt1bV0gTFQgW1Vocl0iLGxhc3REYXk6IltHZXN0ZXJuIHVtXSBMVCBbVWhyXSIsbGFzdFdlZWs6IltsZXR6dGVuXSBkZGRkIFt1bV0gTFQgW1Vocl0ifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6InZvciAlcyIsczoiZWluIHBhYXIgU2VrdW5kZW4iLG06YyxtbToiJWQgTWludXRlbiIsaDpjLGhoOiIlZCBTdHVuZGVuIixkOmMsZGQ6YyxNOmMsTU06Yyx5OmMseXk6Y30sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImRlLWF0IiwiZGUiLHtjbG9zZVRleHQ6IlNjaGxpZcOfZW4iLHByZXZUZXh0OiImI3gzQztadXLDvGNrIixuZXh0VGV4dDoiVm9yJiN4M0U7IixjdXJyZW50VGV4dDoiSGV1dGUiLG1vbnRoTmFtZXM6WyJKYW51YXIiLCJGZWJydWFyIiwiTcOkcnoiLCJBcHJpbCIsIk1haSIsIkp1bmkiLCJKdWxpIiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2t0b2JlciIsIk5vdmVtYmVyIiwiRGV6ZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZWIiLCJNw6RyIiwiQXByIiwiTWFpIiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2t0IiwiTm92IiwiRGV6Il0sZGF5TmFtZXM6WyJTb25udGFnIiwiTW9udGFnIiwiRGllbnN0YWciLCJNaXR0d29jaCIsIkRvbm5lcnN0YWciLCJGcmVpdGFnIiwiU2Ftc3RhZyJdLGRheU5hbWVzU2hvcnQ6WyJTbyIsIk1vIiwiRGkiLCJNaSIsIkRvIiwiRnIiLCJTYSJdLGRheU5hbWVzTWluOlsiU28iLCJNbyIsIkRpIiwiTWkiLCJEbyIsIkZyIiwiU2EiXSx3ZWVrSGVhZGVyOiJLVyIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJkZS1hdCIse2J1dHRvblRleHQ6e21vbnRoOiJNb25hdCIsd2VlazoiV29jaGUiLGRheToiVGFnIixsaXN0OiJUZXJtaW7DvGJlcnNpY2h0In0sYWxsRGF5VGV4dDoiR2FuenTDpGdpZyIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIisgd2VpdGVyZSAiK2F9fSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/de.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYixjLGQpe3ZhciBlPXttOlsiZWluZSBNaW51dGUiLCJlaW5lciBNaW51dGUiXSxoOlsiZWluZSBTdHVuZGUiLCJlaW5lciBTdHVuZGUiXSxkOlsiZWluIFRhZyIsImVpbmVtIFRhZyJdLGRkOlthKyIgVGFnZSIsYSsiIFRhZ2VuIl0sTTpbImVpbiBNb25hdCIsImVpbmVtIE1vbmF0Il0sTU06W2ErIiBNb25hdGUiLGErIiBNb25hdGVuIl0seTpbImVpbiBKYWhyIiwiZWluZW0gSmFociJdLHl5OlthKyIgSmFocmUiLGErIiBKYWhyZW4iXX07cmV0dXJuIGI/ZVtjXVswXTplW2NdWzFdfShiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImRlIix7bW9udGhzOiJKYW51YXJfRmVicnVhcl9Nw6Ryel9BcHJpbF9NYWlfSnVuaV9KdWxpX0F1Z3VzdF9TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXplbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuLl9GZWJyLl9NcnouX0Fwci5fTWFpX0p1bi5fSnVsLl9BdWcuX1NlcHQuX09rdC5fTm92Ll9EZXouIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTb25udGFnX01vbnRhZ19EaWVuc3RhZ19NaXR0d29jaF9Eb25uZXJzdGFnX0ZyZWl0YWdfU2Ftc3RhZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTby5fTW8uX0RpLl9NaS5fRG8uX0ZyLl9TYS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlNvX01vX0RpX01pX0RvX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIExUIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW0hldXRlIHVtXSBMVCBbVWhyXSIsc2FtZUVsc2U6IkwiLG5leHREYXk6IltNb3JnZW4gdW1dIExUIFtVaHJdIixuZXh0V2VlazoiZGRkZCBbdW1dIExUIFtVaHJdIixsYXN0RGF5OiJbR2VzdGVybiB1bV0gTFQgW1Vocl0iLGxhc3RXZWVrOiJbbGV0enRlbl0gZGRkZCBbdW1dIExUIFtVaHJdIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiJ2b3IgJXMiLHM6ImVpbiBwYWFyIFNla3VuZGVuIixtOmMsbW06IiVkIE1pbnV0ZW4iLGg6YyxoaDoiJWQgU3R1bmRlbiIsZDpjLGRkOmMsTTpjLE1NOmMseTpjLHl5OmN9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJkZSIsImRlIix7Y2xvc2VUZXh0OiJTY2hsaWXDn2VuIixwcmV2VGV4dDoiJiN4M0M7WnVyw7xjayIsbmV4dFRleHQ6IlZvciYjeDNFOyIsY3VycmVudFRleHQ6IkhldXRlIixtb250aE5hbWVzOlsiSmFudWFyIiwiRmVicnVhciIsIk3DpHJ6IiwiQXByaWwiLCJNYWkiLCJKdW5pIiwiSnVsaSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9rdG9iZXIiLCJOb3ZlbWJlciIsIkRlemVtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmViIiwiTcOkciIsIkFwciIsIk1haSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9rdCIsIk5vdiIsIkRleiJdLGRheU5hbWVzOlsiU29ubnRhZyIsIk1vbnRhZyIsIkRpZW5zdGFnIiwiTWl0dHdvY2giLCJEb25uZXJzdGFnIiwiRnJlaXRhZyIsIlNhbXN0YWciXSxkYXlOYW1lc1Nob3J0OlsiU28iLCJNbyIsIkRpIiwiTWkiLCJEbyIsIkZyIiwiU2EiXSxkYXlOYW1lc01pbjpbIlNvIiwiTW8iLCJEaSIsIk1pIiwiRG8iLCJGciIsIlNhIl0sd2Vla0hlYWRlcjoiS1ciLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiZGUiLHtidXR0b25UZXh0Onttb250aDoiTW9uYXQiLHdlZWs6IldvY2hlIixkYXk6IlRhZyIsbGlzdDoiVGVybWluw7xiZXJzaWNodCJ9LGFsbERheVRleHQ6Ikdhbnp0w6RnaWciLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGEpe3JldHVybiIrIHdlaXRlcmUgIithfX0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/el.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJlbCIse21vbnRoc05vbWluYXRpdmVFbDoizpnOsc69zr/Phc6sz4HOuc6/z4JfzqbOtc6yz4HOv8+FzqzPgc65zr/Pgl/OnM6sz4HPhM65zr/Pgl/Okc+Az4HOr867zrnOv8+CX86czqzOuc6/z4JfzpnOv8+Nzr3Ouc6/z4JfzpnOv8+NzrvOuc6/z4JfzpHPjc6zzr/Phc+Dz4TOv8+CX86jzrXPgM+Ezq3OvM6yz4HOuc6/z4Jfzp/Ous+Ez47Oss+BzrnOv8+CX86dzr/Orc68zrLPgc65zr/Pgl/OlM61zrrOrc68zrLPgc65zr/PgiIuc3BsaXQoIl8iKSxtb250aHNHZW5pdGl2ZUVsOiLOmc6xzr3Ov8+FzrHPgc6vzr/PhV/Ops61zrLPgc6/z4XOsc+Bzq/Ov8+FX86czrHPgc+Ezq/Ov8+FX86Rz4DPgc65zrvOr86/z4VfzpzOsc6Qzr/PhV/Omc6/z4XOvc6vzr/PhV/Omc6/z4XOu86vzr/PhV/Okc+FzrPOv8+Nz4PPhM6/z4VfzqPOtc+Az4TOtc68zrLPgc6vzr/PhV/On866z4TPic6yz4HOr86/z4Vfzp3Ov861zrzOss+Bzq/Ov8+FX86UzrXOus61zrzOss+Bzq/Ov8+FIi5zcGxpdCgiXyIpLG1vbnRoczpmdW5jdGlvbihhLGIpe3JldHVybi9ELy50ZXN0KGIuc3Vic3RyaW5nKDAsYi5pbmRleE9mKCJNTU1NIikpKT90aGlzLl9tb250aHNHZW5pdGl2ZUVsW2EubW9udGgoKV06dGhpcy5fbW9udGhzTm9taW5hdGl2ZUVsW2EubW9udGgoKV19LG1vbnRoc1Nob3J0OiLOmc6xzr1fzqbOtc6yX86czrHPgV/Okc+Az4FfzpzOsc+KX86Zzr/Phc69X86Zzr/Phc67X86Rz4XOs1/Oo861z4Bfzp/Ous+EX86dzr/OtV/OlM61zroiLnNwbGl0KCJfIiksd2Vla2RheXM6Is6az4XPgc65zrHOus6uX86UzrXPhc+Ezq3Pgc6xX86kz4HOr8+EzrdfzqTOtc+EzqzPgc+EzrdfzqDOrc68z4DPhM63X86gzrHPgc6xz4POus61z4XOrl/Oo86szrLOss6xz4TOvyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLOms+Fz4FfzpTOtc+FX86kz4HOuV/OpM61z4RfzqDOtc68X86gzrHPgV/Oo86xzrIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Is6az4VfzpTOtV/OpM+BX86kzrVfzqDOtV/OoM6xX86jzrEiLnNwbGl0KCJfIiksbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhPjExP2M/Is68zrwiOiLOnM6cIjpjPyLPgM68IjoizqDOnCJ9LGlzUE06ZnVuY3Rpb24oYSl7cmV0dXJuIs68Ij09PShhKyIiKS50b0xvd2VyQ2FzZSgpWzBdfSxtZXJpZGllbVBhcnNlOi9bzqDOnF1cLj/OnD9cLj8vaSxsb25nRGF0ZUZvcm1hdDp7TFQ6Img6bW0gQSIsTFRTOiJoOm1tOnNzIEEiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBMVCIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgTFQifSxjYWxlbmRhckVsOntzYW1lRGF5OiJbzqPOrs68zrXPgc6xIHt9XSBMVCIsbmV4dERheToiW86Rz43Pgc65zr8ge31dIExUIixuZXh0V2VlazoiZGRkZCBbe31dIExUIixsYXN0RGF5OiJbzqfOuM61z4Ige31dIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDY6cmV0dXJuIlvPhM6/IM+Az4HOv863zrPOv8+NzrzOtc69zr9dIGRkZGQgW3t9XSBMVCI7ZGVmYXVsdDpyZXR1cm4iW8+EzrfOvSDPgM+Bzr/Ot86zzr/Pjc68zrXOvc63XSBkZGRkIFt7fV0gTFQifX0sc2FtZUVsc2U6IkwifSxjYWxlbmRhcjpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuX2NhbGVuZGFyRWxbYV0sZD1iJiZiLmhvdXJzKCk7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGMmJihjPWMuYXBwbHkoYikpLGMucmVwbGFjZSgie30iLGQlMTI9PT0xPyLPg8+EzrciOiLPg8+EzrnPgiIpfSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiz4POtSAlcyIscGFzdDoiJXMgz4DPgc65zr0iLHM6Is67zq/Os86xIM60zrXPhc+EzrXPgc+MzrvOtc+Az4TOsSIsbToizq3Ovc6xIM67zrXPgM+Ez4wiLG1tOiIlZCDOu861z4DPhM6sIixoOiLOvM6vzrEgz47Pgc6xIixoaDoiJWQgz47Pgc61z4IiLGQ6Is68zq/OsSDOvM6tz4HOsSIsZGQ6IiVkIM68zq3Pgc61z4IiLE06Is6tzr3Osc+CIM68zq7Ovc6xz4IiLE1NOiIlZCDOvM6uzr3Otc+CIix5OiLOrc69zrHPgiDPh8+Bz4zOvc6/z4IiLHl5OiIlZCDPh8+Bz4zOvc65zrEifSxvcmRpbmFsUGFyc2U6L1xkezEsMn3Oty8sb3JkaW5hbDoiJWTOtyIsd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImVsIiwiZWwiLHtjbG9zZVRleHQ6Is6azrvOtc6vz4POuc68zr8iLHByZXZUZXh0OiLOoM+Bzr/Ot86zzr/Pjc68zrXOvc6/z4IiLG5leHRUZXh0OiLOlc+Az4zOvM61zr3Ov8+CIixjdXJyZW50VGV4dDoizqPOrs68zrXPgc6xIixtb250aE5hbWVzOlsizpnOsc69zr/Phc6sz4HOuc6/z4IiLCLOps61zrLPgc6/z4XOrM+BzrnOv8+CIiwizpzOrM+Bz4TOuc6/z4IiLCLOkc+Az4HOr867zrnOv8+CIiwizpzOrM65zr/PgiIsIs6Zzr/Pjc69zrnOv8+CIiwizpnOv8+NzrvOuc6/z4IiLCLOkc+NzrPOv8+Fz4PPhM6/z4IiLCLOo861z4DPhM6tzrzOss+BzrnOv8+CIiwizp/Ous+Ez47Oss+BzrnOv8+CIiwizp3Ov86tzrzOss+BzrnOv8+CIiwizpTOtc66zq3OvM6yz4HOuc6/z4IiXSxtb250aE5hbWVzU2hvcnQ6WyLOmc6xzr0iLCLOps61zrIiLCLOnM6xz4EiLCLOkc+Az4EiLCLOnM6xzrkiLCLOmc6/z4XOvSIsIs6Zzr/Phc67IiwizpHPhc6zIiwizqPOtc+AIiwizp/Ous+EIiwizp3Ov861IiwizpTOtc66Il0sZGF5TmFtZXM6WyLOms+Fz4HOuc6xzrrOriIsIs6UzrXPhc+Ezq3Pgc6xIiwizqTPgc6vz4TOtyIsIs6kzrXPhM6sz4HPhM63IiwizqDOrc68z4DPhM63IiwizqDOsc+BzrHPg866zrXPhc6uIiwizqPOrM6yzrLOsc+Ezr8iXSxkYXlOYW1lc1Nob3J0OlsizprPhc+BIiwizpTOtc+FIiwizqTPgc65IiwizqTOtc+EIiwizqDOtc68IiwizqDOsc+BIiwizqPOsc6yIl0sZGF5TmFtZXNNaW46WyLOms+FIiwizpTOtSIsIs6kz4EiLCLOpM61IiwizqDOtSIsIs6gzrEiLCLOo86xIl0sd2Vla0hlYWRlcjoizpXOss60IixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImVsIix7YnV0dG9uVGV4dDp7bW9udGg6Is6czq7Ovc6xz4IiLHdlZWs6Is6VzrLOtM6/zrzOrM60zrEiLGRheToizpfOvM6tz4HOsSIsbGlzdDoizpHPhM62zq3Ovc+EzrEifSxhbGxEYXlUZXh0OiLOn867zr/Ors68zrXPgc6/IixldmVudExpbWl0VGV4dDoiz4DOtc+BzrnPg8+Dz4zPhM61z4HOsSJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/en-au.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJlbi1hdSIse21vbnRoczoiSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6IlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlN1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3VfTW9fVHVfV2VfVGhfRnJfU2EiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJoOm1tIEEiLExUUzoiaDptbTpzcyBBIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIsbToiYSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJhbiBob3VyIixoaDoiJWQgaG91cnMiLGQ6ImEgZGF5IixkZDoiJWQgZGF5cyIsTToiYSBtb250aCIsTU06IiVkIG1vbnRocyIseToiYSB5ZWFyIix5eToiJWQgeWVhcnMifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0oc3R8bmR8cmR8dGgpLyxvcmRpbmFsOmZ1bmN0aW9uKGEpe3ZhciBiPWElMTAsYz0xPT09fn4oYSUxMDAvMTApPyJ0aCI6MT09PWI/InN0IjoyPT09Yj8ibmQiOjM9PT1iPyJyZCI6InRoIjtyZXR1cm4gYStjfSx3ZWVrOntkb3c6MSxkb3k6NH19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiZW4tYXUiLCJlbi1BVSIse2Nsb3NlVGV4dDoiRG9uZSIscHJldlRleHQ6IlByZXYiLG5leHRUZXh0OiJOZXh0IixjdXJyZW50VGV4dDoiVG9kYXkiLG1vbnRoTmFtZXM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLGRheU5hbWVzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxkYXlOYW1lc1Nob3J0OlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sZGF5TmFtZXNNaW46WyJTdSIsIk1vIiwiVHUiLCJXZSIsIlRoIiwiRnIiLCJTYSJdLHdlZWtIZWFkZXI6IldrIixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImVuLWF1Iil9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/en-ca.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJlbi1jYSIse21vbnRoczoiSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6IlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlN1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3VfTW9fVHVfV2VfVGhfRnJfU2EiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJoOm1tIEEiLExUUzoiaDptbTpzcyBBIixMOiJZWVlZLU1NLUREIixMTDoiRCBNTU1NLCBZWVlZIixMTEw6IkQgTU1NTSwgWVlZWSBMVCIsTExMTDoiZGRkZCwgRCBNTU1NLCBZWVlZIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIsbToiYSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJhbiBob3VyIixoaDoiJWQgaG91cnMiLGQ6ImEgZGF5IixkZDoiJWQgZGF5cyIsTToiYSBtb250aCIsTU06IiVkIG1vbnRocyIseToiYSB5ZWFyIix5eToiJWQgeWVhcnMifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0oc3R8bmR8cmR8dGgpLyxvcmRpbmFsOmZ1bmN0aW9uKGEpe3ZhciBiPWElMTAsYz0xPT09fn4oYSUxMDAvMTApPyJ0aCI6MT09PWI/InN0IjoyPT09Yj8ibmQiOjM9PT1iPyJyZCI6InRoIjtyZXR1cm4gYStjfX0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImVuLWNhIil9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/en-gb.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJlbi1nYiIse21vbnRoczoiSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6IlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlN1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3VfTW9fVHVfV2VfVGhfRnJfU2EiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIExUIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbVG9kYXkgYXRdIExUIixuZXh0RGF5OiJbVG9tb3Jyb3cgYXRdIExUIixuZXh0V2VlazoiZGRkZCBbYXRdIExUIixsYXN0RGF5OiJbWWVzdGVyZGF5IGF0XSBMVCIsbGFzdFdlZWs6IltMYXN0XSBkZGRkIFthdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiIlcyBhZ28iLHM6ImEgZmV3IHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0fG5kfHJkfHRoKS8sb3JkaW5hbDpmdW5jdGlvbihhKXt2YXIgYj1hJTEwLGM9MT09PX5+KGElMTAwLzEwKT8idGgiOjE9PT1iPyJzdCI6Mj09PWI/Im5kIjozPT09Yj8icmQiOiJ0aCI7cmV0dXJuIGErY30sd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImVuLWdiIiwiZW4tR0IiLHtjbG9zZVRleHQ6IkRvbmUiLHByZXZUZXh0OiJQcmV2IixuZXh0VGV4dDoiTmV4dCIsY3VycmVudFRleHQ6IlRvZGF5Iixtb250aE5hbWVzOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSxkYXlOYW1lczpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sZGF5TmFtZXNTaG9ydDpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLGRheU5hbWVzTWluOlsiU3UiLCJNbyIsIlR1IiwiV2UiLCJUaCIsIkZyIiwiU2EiXSx3ZWVrSGVhZGVyOiJXayIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJlbi1nYiIpfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/es.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXt2YXIgYz0iZW5lLl9mZWIuX21hci5fYWJyLl9tYXkuX2p1bi5fanVsLl9hZ28uX3NlcC5fb2N0Ll9ub3YuX2RpYy4iLnNwbGl0KCJfIiksZD0iZW5lX2ZlYl9tYXJfYWJyX21heV9qdW5fanVsX2Fnb19zZXBfb2N0X25vdl9kaWMiLnNwbGl0KCJfIik7KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwiZXMiLHttb250aHM6ImVuZXJvX2ZlYnJlcm9fbWFyem9fYWJyaWxfbWF5b19qdW5pb19qdWxpb19hZ29zdG9fc2VwdGllbWJyZV9vY3R1YnJlX25vdmllbWJyZV9kaWNpZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4vLU1NTS0vLnRlc3QoYik/ZFthLm1vbnRoKCldOmNbYS5tb250aCgpXX0sd2Vla2RheXM6ImRvbWluZ29fbHVuZXNfbWFydGVzX21pw6lyY29sZXNfanVldmVzX3ZpZXJuZXNfc8OhYmFkbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkb20uX2x1bi5fbWFyLl9tacOpLl9qdWUuX3ZpZS5fc8OhYi4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkRvX0x1X01hX01pX0p1X1ZpX1PDoSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiTFQ6c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkiLExMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIExUIixMTExMOiJkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheTpmdW5jdGlvbigpe3JldHVybiJbaG95IGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxuZXh0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIlttYcOxYW5hIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxuZXh0V2VlazpmdW5jdGlvbigpe3JldHVybiJkZGRkIFthIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbGFzdERheTpmdW5jdGlvbigpe3JldHVybiJbYXllciBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iW2VsXSBkZGRkIFtwYXNhZG8gYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImVuICVzIixwYXN0OiJoYWNlICVzIixzOiJ1bm9zIHNlZ3VuZG9zIixtOiJ1biBtaW51dG8iLG1tOiIlZCBtaW51dG9zIixoOiJ1bmEgaG9yYSIsaGg6IiVkIGhvcmFzIixkOiJ1biBkw61hIixkZDoiJWQgZMOtYXMiLE06InVuIG1lcyIsTU06IiVkIG1lc2VzIix5OiJ1biBhw7FvIix5eToiJWQgYcOxb3MifSxvcmRpbmFsUGFyc2U6L1xkezEsMn3Cui8sb3JkaW5hbDoiJWTCuiIsd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImVzIiwiZXMiLHtjbG9zZVRleHQ6IkNlcnJhciIscHJldlRleHQ6IiYjeDNDO0FudCIsbmV4dFRleHQ6IlNpZyYjeDNFOyIsY3VycmVudFRleHQ6IkhveSIsbW9udGhOYW1lczpbImVuZXJvIiwiZmVicmVybyIsIm1hcnpvIiwiYWJyaWwiLCJtYXlvIiwianVuaW8iLCJqdWxpbyIsImFnb3N0byIsInNlcHRpZW1icmUiLCJvY3R1YnJlIiwibm92aWVtYnJlIiwiZGljaWVtYnJlIl0sbW9udGhOYW1lc1Nob3J0OlsiZW5lIiwiZmViIiwibWFyIiwiYWJyIiwibWF5IiwianVuIiwianVsIiwiYWdvIiwic2VwIiwib2N0Iiwibm92IiwiZGljIl0sZGF5TmFtZXM6WyJkb21pbmdvIiwibHVuZXMiLCJtYXJ0ZXMiLCJtacOpcmNvbGVzIiwianVldmVzIiwidmllcm5lcyIsInPDoWJhZG8iXSxkYXlOYW1lc1Nob3J0OlsiZG9tIiwibHVuIiwibWFyIiwibWnDqSIsImp1ZSIsInZpZSIsInPDoWIiXSxkYXlOYW1lc01pbjpbIkQiLCJMIiwiTSIsIlgiLCJKIiwiViIsIlMiXSx3ZWVrSGVhZGVyOiJTbSIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJlcyIse2J1dHRvblRleHQ6e21vbnRoOiJNZXMiLHdlZWs6IlNlbWFuYSIsZGF5OiJEw61hIixsaXN0OiJBZ2VuZGEifSxhbGxEYXlIdG1sOiJUb2RvPGJyLz5lbCBkw61hIixldmVudExpbWl0VGV4dDoibcOhcyJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/fa.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXt2YXIgYz17MToi27EiLDI6ItuyIiwzOiLbsyIsNDoi27QiLDU6Itu1Iiw2OiLbtiIsNzoi27ciLDg6Itu4Iiw5OiLbuSIsMDoi27AifSxkPXsi27EiOiIxIiwi27IiOiIyIiwi27MiOiIzIiwi27QiOiI0Iiwi27UiOiI1Iiwi27YiOiI2Iiwi27ciOiI3Iiwi27giOiI4Iiwi27kiOiI5Iiwi27AiOiIwIn07KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwiZmEiLHttb250aHM6ItqY2KfZhtmI24zZh1/ZgdmI2LHbjNmHX9mF2KfYsdizX9ii2YjYsduM2YRf2YXZh1/amNmI2KbZhl/amNmI2KbbjNmHX9in2YjYql/Ys9m+2KrYp9mF2KjYsV/Yp9qp2KrYqNixX9mG2YjYp9mF2KjYsV/Yr9iz2KfZhdio2LEiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ItqY2KfZhtmI24zZh1/ZgdmI2LHbjNmHX9mF2KfYsdizX9ii2YjYsduM2YRf2YXZh1/amNmI2KbZhl/amNmI2KbbjNmHX9in2YjYql/Ys9m+2KrYp9mF2KjYsV/Yp9qp2KrYqNixX9mG2YjYp9mF2KjYsV/Yr9iz2KfZhdio2LEiLnNwbGl0KCJfIiksd2Vla2RheXM6ItuM2qnigIzYtNmG2KjZh1/Yr9mI2LTZhtio2Ydf2LPZh+KAjNi02YbYqNmHX9qG2YfYp9ix2LTZhtio2Ydf2b7Zhtis4oCM2LTZhtio2Ydf2KzZhdi52Ydf2LTZhtio2YciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi24zaqeKAjNi02YbYqNmHX9iv2YjYtNmG2KjZh1/Ys9mH4oCM2LTZhtio2Ydf2obZh9in2LHYtNmG2KjZh1/ZvtmG2KzigIzYtNmG2KjZh1/YrNmF2LnZh1/YtNmG2KjZhyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi24xf2K9f2LNf2oZf2b5f2Kxf2LQiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJMVDpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIExUIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBMVCJ9LG1lcmlkaWVtUGFyc2U6L9mC2KjZhCDYp9iyINi42YfYsXzYqNi52K8g2KfYsiDYuNmH2LEvLGlzUE06ZnVuY3Rpb24oYSl7cmV0dXJuL9io2LnYryDYp9iyINi42YfYsS8udGVzdChhKX0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAxMj5hPyLZgtio2YQg2KfYsiDYuNmH2LEiOiLYqNi52K8g2KfYsiDYuNmH2LEifSxjYWxlbmRhcjp7c2FtZURheToiW9in2YXYsdmI2LIg2LPYp9i52KpdIExUIixuZXh0RGF5OiJb2YHYsdiv2Kcg2LPYp9i52KpdIExUIixuZXh0V2VlazoiZGRkZCBb2LPYp9i52KpdIExUIixsYXN0RGF5OiJb2K/bjNix2YjYsiDYs9in2LnYql0gTFQiLGxhc3RXZWVrOiJkZGRkIFvZvtuM2LRdIFvYs9in2LnYql0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Itiv2LEgJXMiLHBhc3Q6IiVzINm+24zYtCIsczoi2obZhtiv24zZhiDYq9in2YbbjNmHIixtOiLbjNqpINiv2YLbjNmC2YciLG1tOiIlZCDYr9mC24zZgtmHIixoOiLbjNqpINiz2KfYudiqIixoaDoiJWQg2LPYp9i52KoiLGQ6ItuM2qkg2LHZiNiyIixkZDoiJWQg2LHZiNiyIixNOiLbjNqpINmF2KfZhyIsTU06IiVkINmF2KfZhyIseToi24zaqSDYs9in2YQiLHl5OiIlZCDYs9in2YQifSxwcmVwYXJzZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC9b27At27ldL2csZnVuY3Rpb24oYSl7cmV0dXJuIGRbYV19KS5yZXBsYWNlKC/YjC9nLCIsIil9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXGQvZyxmdW5jdGlvbihhKXtyZXR1cm4gY1thXX0pLnJlcGxhY2UoLywvZywi2IwiKX0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ92YUvLG9yZGluYWw6IiVk2YUiLHdlZWs6e2Rvdzo2LGRveToxMn19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiZmEiLCJmYSIse2Nsb3NlVGV4dDoi2KjYs9iq2YYiLHByZXZUZXh0OiImI3gzQzvZgtio2YTbjCIsbmV4dFRleHQ6Itio2LnYr9uMJiN4M0U7IixjdXJyZW50VGV4dDoi2KfZhdix2YjYsiIsbW9udGhOYW1lczpbItqY2KfZhtmI24zZhyIsItmB2YjYsduM2YciLCLZhdin2LHYsyIsItii2YjYsduM2YQiLCLZhdmHIiwi2pjZiNim2YYiLCLamNmI2KbbjNmHIiwi2KfZiNiqIiwi2LPZvtiq2KfZhdio2LEiLCLYp9qp2KrYqNixIiwi2YbZiNin2YXYqNixIiwi2K/Ys9in2YXYqNixIl0sbW9udGhOYW1lc1Nob3J0OlsiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiMTAiLCIxMSIsIjEyIl0sZGF5TmFtZXM6WyLZitqp2LTZhtio2YciLCLYr9mI2LTZhtio2YciLCLYs9mH4oCM2LTZhtio2YciLCLahtmH2KfYsdi02YbYqNmHIiwi2b7Zhtis2LTZhtio2YciLCLYrNmF2LnZhyIsIti02YbYqNmHIl0sZGF5TmFtZXNTaG9ydDpbItuMIiwi2K8iLCLYsyIsItqGIiwi2b4iLCLYrCIsIti0Il0sZGF5TmFtZXNNaW46WyLbjCIsItivIiwi2LMiLCLahiIsItm+Iiwi2KwiLCLYtCJdLHdlZWtIZWFkZXI6ItmH2YEiLGRhdGVGb3JtYXQ6Inl5L21tL2RkIixmaXJzdERheTo2LGlzUlRMOiEwLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiZmEiLHtidXR0b25UZXh0Onttb250aDoi2YXYp9mHIix3ZWVrOiLZh9mB2KrZhyIsZGF5OiLYsdmI2LIiLGxpc3Q6Itio2LHZhtin2YXZhyJ9LGFsbERheVRleHQ6Itiq2YXYp9mFINix2YjYsiIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuItio24zYtCDYp9iyICIrYX19KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/fi.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYixjLGUpe3ZhciBmPSIiO3N3aXRjaChjKXtjYXNlInMiOnJldHVybiBlPyJtdXV0YW1hbiBzZWt1bm5pbiI6Im11dXRhbWEgc2VrdW50aSI7Y2FzZSJtIjpyZXR1cm4gZT8ibWludXV0aW4iOiJtaW51dXR0aSI7Y2FzZSJtbSI6Zj1lPyJtaW51dXRpbiI6Im1pbnV1dHRpYSI7YnJlYWs7Y2FzZSJoIjpyZXR1cm4gZT8idHVubmluIjoidHVudGkiO2Nhc2UiaGgiOmY9ZT8idHVubmluIjoidHVudGlhIjticmVhaztjYXNlImQiOnJldHVybiBlPyJww6RpdsOkbiI6InDDpGl2w6QiO2Nhc2UiZGQiOmY9ZT8icMOkaXbDpG4iOiJww6RpdsOkw6QiO2JyZWFrO2Nhc2UiTSI6cmV0dXJuIGU/Imt1dWthdWRlbiI6Imt1dWthdXNpIjtjYXNlIk1NIjpmPWU/Imt1dWthdWRlbiI6Imt1dWthdXR0YSI7YnJlYWs7Y2FzZSJ5IjpyZXR1cm4gZT8idnVvZGVuIjoidnVvc2kiO2Nhc2UieXkiOmY9ZT8idnVvZGVuIjoidnVvdHRhIn1yZXR1cm4gZj1kKGEsZSkrIiAiK2Z9ZnVuY3Rpb24gZChhLGIpe3JldHVybiAxMD5hP2I/ZlthXTplW2FdOmF9dmFyIGU9Im5vbGxhIHlrc2kga2Frc2kga29sbWUgbmVsasOkIHZpaXNpIGt1dXNpIHNlaXRzZW3DpG4ga2FoZGVrc2FuIHloZGVrc8OkbiIuc3BsaXQoIiAiKSxmPVsibm9sbGEiLCJ5aGRlbiIsImthaGRlbiIsImtvbG1lbiIsIm5lbGrDpG4iLCJ2aWlkZW4iLCJrdXVkZW4iLGVbN10sZVs4XSxlWzldXTsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJmaSIse21vbnRoczoidGFtbWlrdXVfaGVsbWlrdXVfbWFhbGlza3V1X2h1aHRpa3V1X3RvdWtva3V1X2tlc8Oka3V1X2hlaW7DpGt1dV9lbG9rdXVfc3l5c2t1dV9sb2tha3V1X21hcnJhc2t1dV9qb3VsdWt1dSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoidGFtbWlfaGVsbWlfbWFhbGlzX2h1aHRpX3RvdWtvX2tlc8OkX2hlaW7DpF9lbG9fc3l5c19sb2thX21hcnJhc19qb3VsdSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoic3VubnVudGFpX21hYW5hbnRhaV90aWlzdGFpX2tlc2tpdmlpa2tvX3RvcnN0YWlfcGVyamFudGFpX2xhdWFudGFpIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InN1X21hX3RpX2tlX3RvX3BlX2xhIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJzdV9tYV90aV9rZV90b19wZV9sYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhILm1tIixMVFM6IkhILm1tLnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRG8gTU1NTVt0YV0gWVlZWSIsTExMOiJEbyBNTU1NW3RhXSBZWVlZLCBba2xvXSBMVCIsTExMTDoiZGRkZCwgRG8gTU1NTVt0YV0gWVlZWSwgW2tsb10gTFQiLGw6IkQuTS5ZWVlZIixsbDoiRG8gTU1NIFlZWVkiLGxsbDoiRG8gTU1NIFlZWVksIFtrbG9dIExUIixsbGxsOiJkZGQsIERvIE1NTSBZWVlZLCBba2xvXSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbdMOkbsOkw6RuXSBba2xvXSBMVCIsbmV4dERheToiW2h1b21lbm5hXSBba2xvXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2tsb10gTFQiLGxhc3REYXk6IltlaWxlbl0gW2tsb10gTFQiLGxhc3RXZWVrOiJbdmlpbWVdIGRkZGRbbmFdIFtrbG9dIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBww6TDpHN0w6QiLHBhc3Q6IiVzIHNpdHRlbiIsczpjLG06YyxtbTpjLGg6YyxoaDpjLGQ6YyxkZDpjLE06YyxNTTpjLHk6Yyx5eTpjfSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiZmkiLCJmaSIse2Nsb3NlVGV4dDoiU3VsamUiLHByZXZUZXh0OiImI3hBQjtFZGVsbGluZW4iLG5leHRUZXh0OiJTZXVyYWF2YSYjeEJCOyIsY3VycmVudFRleHQ6IlTDpG7DpMOkbiIsbW9udGhOYW1lczpbIlRhbW1pa3V1IiwiSGVsbWlrdXUiLCJNYWFsaXNrdXUiLCJIdWh0aWt1dSIsIlRvdWtva3V1IiwiS2Vzw6RrdXUiLCJIZWluw6RrdXUiLCJFbG9rdXUiLCJTeXlza3V1IiwiTG9rYWt1dSIsIk1hcnJhc2t1dSIsIkpvdWx1a3V1Il0sbW9udGhOYW1lc1Nob3J0OlsiVGFtbWkiLCJIZWxtaSIsIk1hYWxpcyIsIkh1aHRpIiwiVG91a28iLCJLZXPDpCIsIkhlaW7DpCIsIkVsbyIsIlN5eXMiLCJMb2thIiwiTWFycmFzIiwiSm91bHUiXSxkYXlOYW1lc1Nob3J0OlsiU3UiLCJNYSIsIlRpIiwiS2UiLCJUbyIsIlBlIiwiTGEiXSxkYXlOYW1lczpbIlN1bm51bnRhaSIsIk1hYW5hbnRhaSIsIlRpaXN0YWkiLCJLZXNraXZpaWtrbyIsIlRvcnN0YWkiLCJQZXJqYW50YWkiLCJMYXVhbnRhaSJdLGRheU5hbWVzTWluOlsiU3UiLCJNYSIsIlRpIiwiS2UiLCJUbyIsIlBlIiwiTGEiXSx3ZWVrSGVhZGVyOiJWayIsZGF0ZUZvcm1hdDoiZC5tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiZmkiLHtidXR0b25UZXh0Onttb250aDoiS3V1a2F1c2kiLHdlZWs6IlZpaWtrbyIsZGF5OiJQw6RpdsOkIixsaXN0OiJUYXBhaHR1bWF0In0sYWxsRGF5VGV4dDoiS29rbyBww6RpdsOkIixldmVudExpbWl0VGV4dDoibGlzw6TDpCJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/fr-ca.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJmci1jYSIse21vbnRoczoiamFudmllcl9mw6l2cmllcl9tYXJzX2F2cmlsX21haV9qdWluX2p1aWxsZXRfYW/Du3Rfc2VwdGVtYnJlX29jdG9icmVfbm92ZW1icmVfZMOpY2VtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW52Ll9mw6l2ci5fbWFyc19hdnIuX21haV9qdWluX2p1aWwuX2Fvw7t0X3NlcHQuX29jdC5fbm92Ll9kw6ljLiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiZGltYW5jaGVfbHVuZGlfbWFyZGlfbWVyY3JlZGlfamV1ZGlfdmVuZHJlZGlfc2FtZWRpIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRpbS5fbHVuLl9tYXIuX21lci5famV1Ll92ZW4uX3NhbS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkRpX0x1X01hX01lX0plX1ZlX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiTFQ6c3MiLEw6IllZWVktTU0tREQiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBMVCIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbQXVqb3VyZCdodWkgw6BdIExUIixuZXh0RGF5OiJbRGVtYWluIMOgXSBMVCIsbmV4dFdlZWs6ImRkZGQgW8OgXSBMVCIsbGFzdERheToiW0hpZXIgw6BdIExUIixsYXN0V2VlazoiZGRkZCBbZGVybmllciDDoF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImRhbnMgJXMiLHBhc3Q6ImlsIHkgYSAlcyIsczoicXVlbHF1ZXMgc2Vjb25kZXMiLG06InVuZSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJ1bmUgaGV1cmUiLGhoOiIlZCBoZXVyZXMiLGQ6InVuIGpvdXIiLGRkOiIlZCBqb3VycyIsTToidW4gbW9pcyIsTU06IiVkIG1vaXMiLHk6InVuIGFuIix5eToiJWQgYW5zIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KGVyfCkvLG9yZGluYWw6ZnVuY3Rpb24oYSl7cmV0dXJuIGErKDE9PT1hPyJlciI6IiIpfX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJmci1jYSIsImZyLUNBIix7Y2xvc2VUZXh0OiJGZXJtZXIiLHByZXZUZXh0OiJQcsOpY8OpZGVudCIsbmV4dFRleHQ6IlN1aXZhbnQiLGN1cnJlbnRUZXh0OiJBdWpvdXJkJ2h1aSIsbW9udGhOYW1lczpbImphbnZpZXIiLCJmw6l2cmllciIsIm1hcnMiLCJhdnJpbCIsIm1haSIsImp1aW4iLCJqdWlsbGV0IiwiYW/Du3QiLCJzZXB0ZW1icmUiLCJvY3RvYnJlIiwibm92ZW1icmUiLCJkw6ljZW1icmUiXSxtb250aE5hbWVzU2hvcnQ6WyJqYW52LiIsImbDqXZyLiIsIm1hcnMiLCJhdnJpbCIsIm1haSIsImp1aW4iLCJqdWlsLiIsImFvw7t0Iiwic2VwdC4iLCJvY3QuIiwibm92LiIsImTDqWMuIl0sZGF5TmFtZXM6WyJkaW1hbmNoZSIsImx1bmRpIiwibWFyZGkiLCJtZXJjcmVkaSIsImpldWRpIiwidmVuZHJlZGkiLCJzYW1lZGkiXSxkYXlOYW1lc1Nob3J0OlsiZGltLiIsImx1bi4iLCJtYXIuIiwibWVyLiIsImpldS4iLCJ2ZW4uIiwic2FtLiJdLGRheU5hbWVzTWluOlsiRCIsIkwiLCJNIiwiTSIsIkoiLCJWIiwiUyJdLHdlZWtIZWFkZXI6IlNlbS4iLGRhdGVGb3JtYXQ6Inl5LW1tLWRkIixmaXJzdERheTowLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiZnItY2EiLHtidXR0b25UZXh0Onttb250aDoiTW9pcyIsd2VlazoiU2VtYWluZSIsZGF5OiJKb3VyIixsaXN0OiJNb24gcGxhbm5pbmcifSxhbGxEYXlIdG1sOiJUb3V0ZSBsYTxici8+am91cm7DqWUiLGV2ZW50TGltaXRUZXh0OiJlbiBwbHVzIn0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/fr.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJmciIse21vbnRoczoiamFudmllcl9mw6l2cmllcl9tYXJzX2F2cmlsX21haV9qdWluX2p1aWxsZXRfYW/Du3Rfc2VwdGVtYnJlX29jdG9icmVfbm92ZW1icmVfZMOpY2VtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW52Ll9mw6l2ci5fbWFyc19hdnIuX21haV9qdWluX2p1aWwuX2Fvw7t0X3NlcHQuX29jdC5fbm92Ll9kw6ljLiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiZGltYW5jaGVfbHVuZGlfbWFyZGlfbWVyY3JlZGlfamV1ZGlfdmVuZHJlZGlfc2FtZWRpIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRpbS5fbHVuLl9tYXIuX21lci5famV1Ll92ZW4uX3NhbS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkRpX0x1X01hX01lX0plX1ZlX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiTFQ6c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBMVCIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbQXVqb3VyZCdodWkgw6BdIExUIixuZXh0RGF5OiJbRGVtYWluIMOgXSBMVCIsbmV4dFdlZWs6ImRkZGQgW8OgXSBMVCIsbGFzdERheToiW0hpZXIgw6BdIExUIixsYXN0V2VlazoiZGRkZCBbZGVybmllciDDoF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImRhbnMgJXMiLHBhc3Q6ImlsIHkgYSAlcyIsczoicXVlbHF1ZXMgc2Vjb25kZXMiLG06InVuZSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJ1bmUgaGV1cmUiLGhoOiIlZCBoZXVyZXMiLGQ6InVuIGpvdXIiLGRkOiIlZCBqb3VycyIsTToidW4gbW9pcyIsTU06IiVkIG1vaXMiLHk6InVuIGFuIix5eToiJWQgYW5zIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KGVyfCkvLG9yZGluYWw6ZnVuY3Rpb24oYSl7cmV0dXJuIGErKDE9PT1hPyJlciI6IiIpfSx3ZWVrOntkb3c6MSxkb3k6NH19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiZnIiLCJmciIse2Nsb3NlVGV4dDoiRmVybWVyIixwcmV2VGV4dDoiUHLDqWPDqWRlbnQiLG5leHRUZXh0OiJTdWl2YW50IixjdXJyZW50VGV4dDoiQXVqb3VyZCdodWkiLG1vbnRoTmFtZXM6WyJqYW52aWVyIiwiZsOpdnJpZXIiLCJtYXJzIiwiYXZyaWwiLCJtYWkiLCJqdWluIiwianVpbGxldCIsImFvw7t0Iiwic2VwdGVtYnJlIiwib2N0b2JyZSIsIm5vdmVtYnJlIiwiZMOpY2VtYnJlIl0sbW9udGhOYW1lc1Nob3J0OlsiamFudi4iLCJmw6l2ci4iLCJtYXJzIiwiYXZyLiIsIm1haSIsImp1aW4iLCJqdWlsLiIsImFvw7t0Iiwic2VwdC4iLCJvY3QuIiwibm92LiIsImTDqWMuIl0sZGF5TmFtZXM6WyJkaW1hbmNoZSIsImx1bmRpIiwibWFyZGkiLCJtZXJjcmVkaSIsImpldWRpIiwidmVuZHJlZGkiLCJzYW1lZGkiXSxkYXlOYW1lc1Nob3J0OlsiZGltLiIsImx1bi4iLCJtYXIuIiwibWVyLiIsImpldS4iLCJ2ZW4uIiwic2FtLiJdLGRheU5hbWVzTWluOlsiRCIsIkwiLCJNIiwiTSIsIkoiLCJWIiwiUyJdLHdlZWtIZWFkZXI6IlNlbS4iLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiZnIiLHtidXR0b25UZXh0Onttb250aDoiTW9pcyIsd2VlazoiU2VtYWluZSIsZGF5OiJKb3VyIixsaXN0OiJNb24gcGxhbm5pbmcifSxhbGxEYXlIdG1sOiJUb3V0ZSBsYTxici8+am91cm7DqWUiLGV2ZW50TGltaXRUZXh0OiJlbiBwbHVzIn0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/he.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJoZSIse21vbnRoczoi15nXoNeV15DXqF/XpNeR16jXldeQ16hf157XqNelX9eQ16TXqNeZ15xf157XkNeZX9eZ15XXoNeZX9eZ15XXnNeZX9eQ15XXkteV16HXmF/Xodek15jXnteR16hf15DXlden15jXldeR16hf16DXldeR157XkdeoX9eT16bXnteR16giLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IteZ16DXldezX9ek15HXqNezX9ee16jXpV/XkNek16jXs1/XnteQ15lf15nXldeg15lf15nXldec15lf15DXldeS17Nf16HXpNeY17Nf15DXlden17Nf16DXldeR17Nf15PXptee17MiLnNwbGl0KCJfIiksd2Vla2RheXM6Iteo15DXqdeV159f16nXoNeZX9ep15zXmdep15lf16jXkdeZ16LXmV/Xl9ee15nXqdeZX9ep15nXqdeZX9ep15HXqiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLXkNezX9eR17Nf15LXs1/Xk9ezX9eU17Nf15XXs1/XqdezIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLXkF/XkV/Xkl/Xk1/XlF/XlV/XqSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkxUOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBb15FdTU1NTSBZWVlZIixMTEw6IkQgW9eRXU1NTU0gWVlZWSBMVCIsTExMTDoiZGRkZCwgRCBb15FdTU1NTSBZWVlZIExUIixsOiJEL00vWVlZWSIsbGw6IkQgTU1NIFlZWVkiLGxsbDoiRCBNTU0gWVlZWSBMVCIsbGxsbDoiZGRkLCBEIE1NTSBZWVlZIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvXlNeZ15XXnSDXkda+XUxUIixuZXh0RGF5OiJb157Xl9eoINeR1r5dTFQiLG5leHRXZWVrOiJkZGRkIFvXkdep16LXlF0gTFQiLGxhc3REYXk6IlvXkNeq157XldecINeR1r5dTFQiLGxhc3RXZWVrOiJb15HXmdeV151dIGRkZGQgW9eU15DXl9eo15XXnyDXkdep16LXlF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IteR16LXldeTICVzIixwYXN0OiLXnNek16DXmSAlcyIsczoi157Xodek16gg16nXoNeZ15XXqiIsbToi15PXp9eUIixtbToiJWQg15PXp9eV16oiLGg6Itep16LXlCIsaGg6ZnVuY3Rpb24oYSl7cmV0dXJuIDI9PT1hPyLXqdei16rXmdeZ150iOmErIiDXqdei15XXqiJ9LGQ6IteZ15XXnSIsZGQ6ZnVuY3Rpb24oYSl7cmV0dXJuIDI9PT1hPyLXmdeV157XmdeZ150iOmErIiDXmdee15nXnSJ9LE06IteX15XXk9epIixNTTpmdW5jdGlvbihhKXtyZXR1cm4gMj09PWE/IteX15XXk9ep15nXmdedIjphKyIg15fXldeT16nXmdedIn0seToi16nXoNeUIix5eTpmdW5jdGlvbihhKXtyZXR1cm4gMj09PWE/Itep16DXqteZ15nXnSI6YSUxMD09PTAmJjEwIT09YT9hKyIg16nXoNeUIjphKyIg16nXoNeZ150ifX19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiaGUiLCJoZSIse2Nsb3NlVGV4dDoi16HXkteV16giLHByZXZUZXh0OiImI3gzQzvXlNen15XXk9edIixuZXh0VGV4dDoi15TXkdeQJiN4M0U7IixjdXJyZW50VGV4dDoi15TXmdeV150iLG1vbnRoTmFtZXM6WyLXmdeg15XXkNeoIiwi16TXkdeo15XXkNeoIiwi157XqNelIiwi15DXpNeo15nXnCIsItee15DXmSIsIteZ15XXoNeZIiwi15nXldec15kiLCLXkNeV15LXldeh15giLCLXodek15jXnteR16giLCLXkNeV16fXmNeV15HXqCIsIteg15XXkdee15HXqCIsIteT16bXnteR16giXSxtb250aE5hbWVzU2hvcnQ6WyLXmdeg15UiLCLXpNeR16giLCLXnteo16UiLCLXkNek16giLCLXnteQ15kiLCLXmdeV16DXmSIsIteZ15XXnNeZIiwi15DXldeSIiwi16HXpNeYIiwi15DXldenIiwi16DXldeRIiwi15PXpteeIl0sZGF5TmFtZXM6WyLXqNeQ16nXldefIiwi16nXoNeZIiwi16nXnNeZ16nXmSIsIteo15HXmdei15kiLCLXl9ee15nXqdeZIiwi16nXmdep15kiLCLXqdeR16oiXSxkYXlOYW1lc1Nob3J0Olsi15AnIiwi15EnIiwi15InIiwi15MnIiwi15QnIiwi15UnIiwi16nXkdeqIl0sZGF5TmFtZXNNaW46WyLXkCciLCLXkSciLCLXkiciLCLXkyciLCLXlCciLCLXlSciLCLXqdeR16oiXSx3ZWVrSGVhZGVyOiJXayIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjAsaXNSVEw6ITAsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJoZSIse2RlZmF1bHRCdXR0b25UZXh0Onttb250aDoi15fXldeT16kiLHdlZWs6Itep15HXldeiIixkYXk6IteZ15XXnSIsbGlzdDoi16HXk9eoINeZ15XXnSJ9LHdlZWtOdW1iZXJUaXRsZToi16nXkdeV16IiLGFsbERheVRleHQ6Iteb15wg15TXmdeV150iLGV2ZW50TGltaXRUZXh0OiLXkNeX16gifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/hi.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXt2YXIgYz17MToi4KWnIiwyOiLgpagiLDM6IuClqSIsNDoi4KWqIiw1OiLgpasiLDY6IuClrCIsNzoi4KWtIiw4OiLgpa4iLDk6IuClryIsMDoi4KWmIn0sZD17IuClpyI6IjEiLCLgpagiOiIyIiwi4KWpIjoiMyIsIuClqiI6IjQiLCLgpasiOiI1Iiwi4KWsIjoiNiIsIuClrSI6IjciLCLgpa4iOiI4Iiwi4KWvIjoiOSIsIuClpiI6IjAifTsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJoaSIse21vbnRoczoi4KSc4KSo4KS14KSw4KWAX+Ckq+CkvOCksOCkteCksOClgF/gpK7gpL7gpLDgpY3gpJpf4KSF4KSq4KWN4KSw4KWI4KSyX+CkruCkiF/gpJzgpYLgpKhf4KSc4KWB4KSy4KS+4KSIX+CkheCkl+CkuOCljeCkpF/gpLjgpL/gpKTgpK7gpY3gpKzgpLBf4KSF4KSV4KWN4KSf4KWC4KSs4KSwX+CkqOCkteCkruCljeCkrOCksF/gpKbgpL/gpLjgpK7gpY3gpKzgpLAiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IuCknOCkqC5f4KSr4KS84KSwLl/gpK7gpL7gpLDgpY3gpJpf4KSF4KSq4KWN4KSw4KWILl/gpK7gpIhf4KSc4KWC4KSoX+CknOClgeCksi5f4KSF4KSXLl/gpLjgpL/gpKQuX+CkheCkleCljeCkn+Clgi5f4KSo4KS1Ll/gpKbgpL/gpLguIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiLgpLDgpLXgpL/gpLXgpL7gpLBf4KS44KWL4KSu4KS14KS+4KSwX+CkruCkguCkl+CksuCkteCkvuCksF/gpKzgpYHgpKfgpLXgpL7gpLBf4KSX4KWB4KSw4KWC4KS14KS+4KSwX+CktuClgeCkleCljeCksOCkteCkvuCksF/gpLbgpKjgpL/gpLXgpL7gpLAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi4KSw4KS14KS/X+CkuOCli+Ckrl/gpK7gpILgpJfgpLJf4KSs4KWB4KSnX+Ckl+ClgeCksOClgl/gpLbgpYHgpJXgpY3gpLBf4KS24KSo4KS/Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLgpLBf4KS44KWLX+CkruCkgl/gpKzgpYFf4KSX4KWBX+CktuClgV/gpLYiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0g4KSs4KSc4KWHIixMVFM6IkEgaDptbTpzcyDgpKzgpJzgpYciLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSwgTFQiLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZLCBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb4KSG4KScXSBMVCIsbmV4dERheToiW+CkleCksl0gTFQiLG5leHRXZWVrOiJkZGRkLCBMVCIsbGFzdERheToiW+CkleCksl0gTFQiLGxhc3RXZWVrOiJb4KSq4KS/4KSb4KSy4KWHXSBkZGRkLCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMg4KSu4KWH4KSCIixwYXN0OiIlcyDgpKrgpLngpLLgpYciLHM6IuCkleClgeCkmyDgpLngpYAg4KSV4KWN4KS34KSjIixtOiLgpI/gpJUg4KSu4KS/4KSo4KSfIixtbToiJWQg4KSu4KS/4KSo4KSfIixoOiLgpI/gpJUg4KSY4KSC4KSf4KS+IixoaDoiJWQg4KSY4KSC4KSf4KWHIixkOiLgpI/gpJUg4KSm4KS/4KSoIixkZDoiJWQg4KSm4KS/4KSoIixNOiLgpI/gpJUg4KSu4KS54KWA4KSo4KWHIixNTToiJWQg4KSu4KS54KWA4KSo4KWHIix5OiLgpI/gpJUg4KS14KSw4KWN4KS3Iix5eToiJWQg4KS14KSw4KWN4KS3In0scHJlcGFyc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvW+Clp+ClqOClqeClquClq+ClrOClreClruClr+Clpl0vZyxmdW5jdGlvbihhKXtyZXR1cm4gZFthXX0pfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oYSl7cmV0dXJuIGNbYV19KX0sbWVyaWRpZW1QYXJzZTov4KSw4KS+4KSkfOCkuOClgeCkrOCkuXzgpKbgpYvgpKrgpLngpLB84KS24KS+4KSuLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMTI9PT1hJiYoYT0wKSwi4KSw4KS+4KSkIj09PWI/ND5hP2E6YSsxMjoi4KS44KWB4KSs4KS5Ij09PWI/YToi4KSm4KWL4KSq4KS54KSwIj09PWI/YT49MTA/YTphKzEyOiLgpLbgpL7gpK4iPT09Yj9hKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiA0PmE/IuCksOCkvuCkpCI6MTA+YT8i4KS44KWB4KSs4KS5IjoxNz5hPyLgpKbgpYvgpKrgpLngpLAiOjIwPmE/IuCktuCkvuCkriI6IuCksOCkvuCkpCJ9LHdlZWs6e2RvdzowLGRveTo2fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJoaSIsImhpIix7Y2xvc2VUZXh0OiLgpKzgpILgpKYiLHByZXZUZXh0OiLgpKrgpL/gpJvgpLLgpL4iLG5leHRUZXh0OiLgpIXgpJfgpLLgpL4iLGN1cnJlbnRUZXh0OiLgpIbgpJwiLG1vbnRoTmFtZXM6WyLgpJzgpKjgpLXgpLDgpYAgIiwi4KSr4KSw4KS14KSw4KWAIiwi4KSu4KS+4KSw4KWN4KSaIiwi4KSF4KSq4KWN4KSw4KWH4KSyIiwi4KSu4KSIIiwi4KSc4KWC4KSoIiwi4KSc4KWC4KSy4KS+4KSIIiwi4KSF4KSX4KS44KWN4KSkICIsIuCkuOCkv+CkpOCkruCljeCkrOCksCIsIuCkheCkleCljeCkn+ClguCkrOCksCIsIuCkqOCkteCkruCljeCkrOCksCIsIuCkpuCkv+CkuOCkruCljeCkrOCksCJdLG1vbnRoTmFtZXNTaG9ydDpbIuCknOCkqCIsIuCkq+CksCIsIuCkruCkvuCksOCljeCkmiIsIuCkheCkquCljeCksOClh+CksiIsIuCkruCkiCIsIuCknOClguCkqCIsIuCknOClguCksuCkvuCkiCIsIuCkheCklyIsIuCkuOCkv+CkpCIsIuCkheCkleCljeCknyIsIuCkqOCktSIsIuCkpuCkvyJdLGRheU5hbWVzOlsi4KSw4KS14KS/4KS14KS+4KSwIiwi4KS44KWL4KSu4KS14KS+4KSwIiwi4KSu4KSC4KSX4KSy4KS14KS+4KSwIiwi4KSs4KWB4KSn4KS14KS+4KSwIiwi4KSX4KWB4KSw4KWB4KS14KS+4KSwIiwi4KS24KWB4KSV4KWN4KSw4KS14KS+4KSwIiwi4KS24KSo4KS/4KS14KS+4KSwIl0sZGF5TmFtZXNTaG9ydDpbIuCksOCkteCkvyIsIuCkuOCli+CkriIsIuCkruCkguCkl+CksiIsIuCkrOClgeCkpyIsIuCkl+ClgeCksOClgSIsIuCktuClgeCkleCljeCksCIsIuCktuCkqOCkvyJdLGRheU5hbWVzTWluOlsi4KSw4KS14KS/Iiwi4KS44KWL4KSuIiwi4KSu4KSC4KSX4KSyIiwi4KSs4KWB4KSnIiwi4KSX4KWB4KSw4KWBIiwi4KS24KWB4KSV4KWN4KSwIiwi4KS24KSo4KS/Il0sd2Vla0hlYWRlcjoi4KS54KSr4KWN4KSk4KS+IixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImhpIix7YnV0dG9uVGV4dDp7bW9udGg6IuCkruCkueClgOCkqOCkviIsd2Vlazoi4KS44KSq4KWN4KSk4KS+4KS5IixkYXk6IuCkpuCkv+CkqCIsbGlzdDoi4KSV4KS+4KSw4KWN4KSv4KS44KWC4KSa4KWAIn0sYWxsRGF5VGV4dDoi4KS44KSt4KWAIOCkpuCkv+CkqCIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIivgpIXgpKfgpL/gpJUgIithfX0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/hr.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYixjKXt2YXIgZD1hKyIgIjtzd2l0Y2goYyl7Y2FzZSJtIjpyZXR1cm4gYj8iamVkbmEgbWludXRhIjoiamVkbmUgbWludXRlIjtjYXNlIm1tIjpyZXR1cm4gZCs9MT09PWE/Im1pbnV0YSI6Mj09PWF8fDM9PT1hfHw0PT09YT8ibWludXRlIjoibWludXRhIjtjYXNlImgiOnJldHVybiBiPyJqZWRhbiBzYXQiOiJqZWRub2cgc2F0YSI7Y2FzZSJoaCI6cmV0dXJuIGQrPTE9PT1hPyJzYXQiOjI9PT1hfHwzPT09YXx8ND09PWE/InNhdGEiOiJzYXRpIjtjYXNlImRkIjpyZXR1cm4gZCs9MT09PWE/ImRhbiI6ImRhbmEiO2Nhc2UiTU0iOnJldHVybiBkKz0xPT09YT8ibWplc2VjIjoyPT09YXx8Mz09PWF8fDQ9PT1hPyJtamVzZWNhIjoibWplc2VjaSI7Y2FzZSJ5eSI6cmV0dXJuIGQrPTE9PT1hPyJnb2RpbmEiOjI9PT1hfHwzPT09YXx8ND09PWE/ImdvZGluZSI6ImdvZGluYSJ9fShiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImhyIix7bW9udGhzOiJzamXEjWFual92ZWxqYcSNYV9vxb51amFrX3RyYXZhbmpfc3ZpYmFual9saXBhbmpfc3JwYW5qX2tvbG92b3pfcnVqYW5fbGlzdG9wYWRfc3R1ZGVuaV9wcm9zaW5hYyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoic2plLl92ZWwuX2/FvnUuX3RyYS5fc3ZpLl9saXAuX3NycC5fa29sLl9ydWouX2xpcy5fc3R1Ll9wcm8uIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJuZWRqZWxqYV9wb25lZGplbGpha191dG9yYWtfc3JpamVkYV/EjWV0dnJ0YWtfcGV0YWtfc3Vib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5lZC5fcG9uLl91dG8uX3NyaS5fxI1ldC5fcGV0Ll9zdWIuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJuZV9wb191dF9zcl/EjWVfcGVfc3UiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6IkxUOnNzIixMOiJERC4gTU0uIFlZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIExUIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW2RhbmFzIHVdIExUIixuZXh0RGF5OiJbc3V0cmEgdV0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW3VdIFtuZWRqZWxqdV0gW3VdIExUIjtjYXNlIDM6cmV0dXJuIlt1XSBbc3JpamVkdV0gW3VdIExUIjtjYXNlIDY6cmV0dXJuIlt1XSBbc3Vib3R1XSBbdV0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW3VdIGRkZGQgW3VdIExUIn19LGxhc3REYXk6IltqdcSNZXIgdV0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpjYXNlIDM6cmV0dXJuIltwcm/FoWx1XSBkZGRkIFt1XSBMVCI7Y2FzZSA2OnJldHVybiJbcHJvxaFsZV0gW3N1Ym90ZV0gW3VdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIltwcm/FoWxpXSBkZGRkIFt1XSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJ6YSAlcyIscGFzdDoicHJpamUgJXMiLHM6InBhciBzZWt1bmRpIixtOmMsbW06YyxoOmMsaGg6YyxkOiJkYW4iLGRkOmMsTToibWplc2VjIixNTTpjLHk6ImdvZGludSIseXk6Y30sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95Ojd9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImhyIiwiaHIiLHtjbG9zZVRleHQ6IlphdHZvcmkiLHByZXZUZXh0OiImI3gzQzsiLG5leHRUZXh0OiImI3gzRTsiLGN1cnJlbnRUZXh0OiJEYW5hcyIsbW9udGhOYW1lczpbIlNpamXEjWFuaiIsIlZlbGphxI1hIiwiT8W+dWphayIsIlRyYXZhbmoiLCJTdmliYW5qIiwiTGlwYW5qIiwiU3JwYW5qIiwiS29sb3ZveiIsIlJ1amFuIiwiTGlzdG9wYWQiLCJTdHVkZW5pIiwiUHJvc2luYWMiXSxtb250aE5hbWVzU2hvcnQ6WyJTaWoiLCJWZWxqIiwiT8W+dSIsIlRyYSIsIlN2aSIsIkxpcCIsIlNycCIsIktvbCIsIlJ1aiIsIkxpcyIsIlN0dSIsIlBybyJdLGRheU5hbWVzOlsiTmVkamVsamEiLCJQb25lZGplbGphayIsIlV0b3JhayIsIlNyaWplZGEiLCLEjGV0dnJ0YWsiLCJQZXRhayIsIlN1Ym90YSJdLGRheU5hbWVzU2hvcnQ6WyJOZWQiLCJQb24iLCJVdG8iLCJTcmkiLCLEjGV0IiwiUGV0IiwiU3ViIl0sZGF5TmFtZXNNaW46WyJOZSIsIlBvIiwiVXQiLCJTciIsIsSMZSIsIlBlIiwiU3UiXSx3ZWVrSGVhZGVyOiJUamUiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5LiIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImhyIix7YnV0dG9uVGV4dDp7bW9udGg6Ik1qZXNlYyIsd2VlazoiVGplZGFuIixkYXk6IkRhbiIsbGlzdDoiUmFzcG9yZWQifSxhbGxEYXlUZXh0OiJDaWplbGkgZGFuIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4iKyBqb8WhICIrYX19KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/hu.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYixjLGQpe3ZhciBlPWE7c3dpdGNoKGMpe2Nhc2UicyI6cmV0dXJuIGR8fGI/Im7DqWjDoW55IG3DoXNvZHBlcmMiOiJuw6low6FueSBtw6Fzb2RwZXJjZSI7Y2FzZSJtIjpyZXR1cm4iZWd5IisoZHx8Yj8iIHBlcmMiOiIgcGVyY2UiKTtjYXNlIm1tIjpyZXR1cm4gZSsoZHx8Yj8iIHBlcmMiOiIgcGVyY2UiKTtjYXNlImgiOnJldHVybiJlZ3kiKyhkfHxiPyIgw7NyYSI6IiDDs3LDoWphIik7Y2FzZSJoaCI6cmV0dXJuIGUrKGR8fGI/IiDDs3JhIjoiIMOzcsOhamEiKTtjYXNlImQiOnJldHVybiJlZ3kiKyhkfHxiPyIgbmFwIjoiIG5hcGphIik7Y2FzZSJkZCI6cmV0dXJuIGUrKGR8fGI/IiBuYXAiOiIgbmFwamEiKTtjYXNlIk0iOnJldHVybiJlZ3kiKyhkfHxiPyIgaMOzbmFwIjoiIGjDs25hcGphIik7Y2FzZSJNTSI6cmV0dXJuIGUrKGR8fGI/IiBow7NuYXAiOiIgaMOzbmFwamEiKTtjYXNlInkiOnJldHVybiJlZ3kiKyhkfHxiPyIgw6l2IjoiIMOpdmUiKTtjYXNlInl5IjpyZXR1cm4gZSsoZHx8Yj8iIMOpdiI6IiDDqXZlIil9cmV0dXJuIiJ9ZnVuY3Rpb24gZChhKXtyZXR1cm4oYT8iIjoiW23Dumx0XSAiKSsiWyIrZVt0aGlzLmRheSgpXSsiXSBMVFsta29yXSJ9dmFyIGU9InZhc8Ohcm5hcCBow6l0ZsWRbiBrZWRkZW4gc3plcmTDoW4gY3PDvHTDtnJ0w7Zrw7ZuIHDDqW50ZWtlbiBzem9tYmF0b24iLnNwbGl0KCIgIik7KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwiaHUiLHttb250aHM6ImphbnXDoXJfZmVicnXDoXJfbcOhcmNpdXNfw6FwcmlsaXNfbcOhanVzX2rDum5pdXNfasO6bGl1c19hdWd1c3p0dXNfc3plcHRlbWJlcl9va3TDs2Jlcl9ub3ZlbWJlcl9kZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2ZlYl9tw6FyY1/DoXByX23DoWpfasO6bl9qw7psX2F1Z19zemVwdF9va3Rfbm92X2RlYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoidmFzw6FybmFwX2jDqXRmxZFfa2VkZF9zemVyZGFfY3PDvHTDtnJ0w7ZrX3DDqW50ZWtfc3pvbWJhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJ2YXNfaMOpdF9rZWRkX3N6ZV9jc8O8dF9ww6luX3N6byIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoidl9oX2tfc3plX2NzX3Bfc3pvIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJMVDpzcyIsTDoiWVlZWS5NTS5ERC4iLExMOiJZWVlZLiBNTU1NIEQuIixMTEw6IllZWVkuIE1NTU0gRC4sIExUIixMTExMOiJZWVlZLiBNTU1NIEQuLCBkZGRkIExUIn0sbWVyaWRpZW1QYXJzZTovZGV8ZHUvaSxpc1BNOmZ1bmN0aW9uKGEpe3JldHVybiJ1Ij09PWEuY2hhckF0KDEpLnRvTG93ZXJDYXNlKCl9LG1lcmlkaWVtOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMTI+YT9jPT09ITA/ImRlIjoiREUiOmM9PT0hMD8iZHUiOiJEVSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbbWFdIExUWy1rb3JdIixuZXh0RGF5OiJbaG9sbmFwXSBMVFsta29yXSIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4gZC5jYWxsKHRoaXMsITApfSxsYXN0RGF5OiJbdGVnbmFwXSBMVFsta29yXSIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4gZC5jYWxsKHRoaXMsITEpfSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBtw7psdmEiLHBhc3Q6IiVzIixzOmMsbTpjLG1tOmMsaDpjLGhoOmMsZDpjLGRkOmMsTTpjLE1NOmMseTpjLHl5OmN9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo3fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJodSIsImh1Iix7Y2xvc2VUZXh0OiJiZXrDoXIiLHByZXZUZXh0OiJ2aXNzemEiLG5leHRUZXh0OiJlbMWRcmUiLGN1cnJlbnRUZXh0OiJtYSIsbW9udGhOYW1lczpbIkphbnXDoXIiLCJGZWJydcOhciIsIk3DoXJjaXVzIiwiw4FwcmlsaXMiLCJNw6FqdXMiLCJKw7puaXVzIiwiSsO6bGl1cyIsIkF1Z3VzenR1cyIsIlN6ZXB0ZW1iZXIiLCJPa3TDs2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZWIiLCJNw6FyIiwiw4FwciIsIk3DoWoiLCJKw7puIiwiSsO6bCIsIkF1ZyIsIlN6ZXAiLCJPa3QiLCJOb3YiLCJEZWMiXSxkYXlOYW1lczpbIlZhc8Ohcm5hcCIsIkjDqXRmxZEiLCJLZWRkIiwiU3plcmRhIiwiQ3PDvHTDtnJ0w7ZrIiwiUMOpbnRlayIsIlN6b21iYXQiXSxkYXlOYW1lc1Nob3J0OlsiVmFzIiwiSMOpdCIsIktlZCIsIlN6ZSIsIkNzw7wiLCJQw6luIiwiU3pvIl0sZGF5TmFtZXNNaW46WyJWIiwiSCIsIksiLCJTemUiLCJDcyIsIlAiLCJTem8iXSx3ZWVrSGVhZGVyOiJIw6l0IixkYXRlRm9ybWF0OiJ5eS5tbS5kZC4iLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiEwLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJodSIse2J1dHRvblRleHQ6e21vbnRoOiJIw7NuYXAiLHdlZWs6IkjDqXQiLGRheToiTmFwIixsaXN0OiJOYXBsw7MifSxhbGxEYXlUZXh0OiJFZ8Opc3ogbmFwIixldmVudExpbWl0VGV4dDoidG92w6FiYmkifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/id.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJpZCIse21vbnRoczoiSmFudWFyaV9GZWJydWFyaV9NYXJldF9BcHJpbF9NZWlfSnVuaV9KdWxpX0FndXN0dXNfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGVzZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NZWlfSnVuX0p1bF9BZ3NfU2VwX09rdF9Ob3ZfRGVzIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJNaW5nZ3VfU2VuaW5fU2VsYXNhX1JhYnVfS2FtaXNfSnVtYXRfU2FidHUiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiTWluX1Nlbl9TZWxfUmFiX0thbV9KdW1fU2FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJNZ19Tbl9TbF9SYl9LbV9KbV9TYiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhILm1tIixMVFM6IkxULnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgW3B1a3VsXSBMVCIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgW3B1a3VsXSBMVCJ9LG1lcmlkaWVtUGFyc2U6L3BhZ2l8c2lhbmd8c29yZXxtYWxhbS8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIDEyPT09YSYmKGE9MCksInBhZ2kiPT09Yj9hOiJzaWFuZyI9PT1iP2E+PTExP2E6YSsxMjoic29yZSI9PT1ifHwibWFsYW0iPT09Yj9hKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAxMT5hPyJwYWdpIjoxNT5hPyJzaWFuZyI6MTk+YT8ic29yZSI6Im1hbGFtIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltIYXJpIGluaSBwdWt1bF0gTFQiLG5leHREYXk6IltCZXNvayBwdWt1bF0gTFQiLG5leHRXZWVrOiJkZGRkIFtwdWt1bF0gTFQiLGxhc3REYXk6IltLZW1hcmluIHB1a3VsXSBMVCIsbGFzdFdlZWs6ImRkZGQgW2xhbHUgcHVrdWxdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJkYWxhbSAlcyIscGFzdDoiJXMgeWFuZyBsYWx1IixzOiJiZWJlcmFwYSBkZXRpayIsbToic2VtZW5pdCIsbW06IiVkIG1lbml0IixoOiJzZWphbSIsaGg6IiVkIGphbSIsZDoic2VoYXJpIixkZDoiJWQgaGFyaSIsTToic2VidWxhbiIsTU06IiVkIGJ1bGFuIix5OiJzZXRhaHVuIix5eToiJWQgdGFodW4ifSx3ZWVrOntkb3c6MSxkb3k6N319KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiaWQiLCJpZCIse2Nsb3NlVGV4dDoiVHV0dXAiLHByZXZUZXh0OiImI3gzQzttdW5kdXIiLG5leHRUZXh0OiJtYWp1JiN4M0U7IixjdXJyZW50VGV4dDoiaGFyaSBpbmkiLG1vbnRoTmFtZXM6WyJKYW51YXJpIiwiRmVicnVhcmkiLCJNYXJldCIsIkFwcmlsIiwiTWVpIiwiSnVuaSIsIkp1bGkiLCJBZ3VzdHVzIiwiU2VwdGVtYmVyIiwiT2t0b2JlciIsIk5vcGVtYmVyIiwiRGVzZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNZWkiLCJKdW4iLCJKdWwiLCJBZ3VzIiwiU2VwIiwiT2t0IiwiTm9wIiwiRGVzIl0sZGF5TmFtZXM6WyJNaW5nZ3UiLCJTZW5pbiIsIlNlbGFzYSIsIlJhYnUiLCJLYW1pcyIsIkp1bWF0IiwiU2FidHUiXSxkYXlOYW1lc1Nob3J0OlsiTWluIiwiU2VuIiwiU2VsIiwiUmFiIiwia2FtIiwiSnVtIiwiU2FiIl0sZGF5TmFtZXNNaW46WyJNZyIsIlNuIiwiU2wiLCJSYiIsIkttIiwiam0iLCJTYiJdLHdlZWtIZWFkZXI6Ik1nIixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MCxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImlkIix7YnV0dG9uVGV4dDp7bW9udGg6IkJ1bGFuIix3ZWVrOiJNaW5nZ3UiLGRheToiSGFyaSIsbGlzdDoiQWdlbmRhIn0sYWxsRGF5SHRtbDoiU2VoYXJpPGJyLz5wZW51aCIsZXZlbnRMaW1pdFRleHQ6ImxlYmloIn0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/is.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEpe3JldHVybiBhJTEwMD09PTExPyEwOmElMTA9PT0xPyExOiEwfWZ1bmN0aW9uIGQoYSxiLGQsZSl7dmFyIGY9YSsiICI7c3dpdGNoKGQpe2Nhc2UicyI6cmV0dXJuIGJ8fGU/Im5va2tyYXIgc2Vrw7puZHVyIjoibm9ra3J1bSBzZWvDum5kdW0iO2Nhc2UibSI6cmV0dXJuIGI/Im3DrW7DunRhIjoibcOtbsO6dHUiO2Nhc2UibW0iOnJldHVybiBjKGEpP2YrKGJ8fGU/Im3DrW7DunR1ciI6Im3DrW7DunR1bSIpOmI/ZisibcOtbsO6dGEiOmYrIm3DrW7DunR1IjtjYXNlImhoIjpyZXR1cm4gYyhhKT9mKyhifHxlPyJrbHVra3VzdHVuZGlyIjoia2x1a2t1c3R1bmR1bSIpOmYrImtsdWtrdXN0dW5kIjtjYXNlImQiOnJldHVybiBiPyJkYWd1ciI6ZT8iZGFnIjoiZGVnaSI7Y2FzZSJkZCI6cmV0dXJuIGMoYSk/Yj9mKyJkYWdhciI6ZisoZT8iZGFnYSI6ImTDtmd1bSIpOmI/ZisiZGFndXIiOmYrKGU/ImRhZyI6ImRlZ2kiKTtjYXNlIk0iOnJldHVybiBiPyJtw6FudcOwdXIiOmU/Im3DoW51w7AiOiJtw6FudcOwaSI7Y2FzZSJNTSI6cmV0dXJuIGMoYSk/Yj9mKyJtw6FudcOwaXIiOmYrKGU/Im3DoW51w7BpIjoibcOhbnXDsHVtIik6Yj9mKyJtw6FudcOwdXIiOmYrKGU/Im3DoW51w7AiOiJtw6FudcOwaSIpO2Nhc2UieSI6cmV0dXJuIGJ8fGU/IsOhciI6IsOhcmkiO2Nhc2UieXkiOnJldHVybiBjKGEpP2YrKGJ8fGU/IsOhciI6IsOhcnVtIik6ZisoYnx8ZT8iw6FyIjoiw6FyaSIpfX0oYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJpcyIse21vbnRoczoiamFuw7phcl9mZWJyw7phcl9tYXJzX2FwcsOtbF9tYcOtX2rDum7DrV9qw7psw61fw6Fnw7pzdF9zZXB0ZW1iZXJfb2t0w7NiZXJfbsOzdmVtYmVyX2Rlc2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW5fZmViX21hcl9hcHJfbWHDrV9qw7puX2rDumxfw6Fnw7pfc2VwX29rdF9uw7N2X2RlcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoic3VubnVkYWd1cl9tw6FudWRhZ3VyX8O+cmnDsGp1ZGFndXJfbWnDsHZpa3VkYWd1cl9maW1tdHVkYWd1cl9mw7ZzdHVkYWd1cl9sYXVnYXJkYWd1ciIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJzdW5fbcOhbl/DvnJpX21pw7BfZmltX2bDtnNfbGF1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdV9Nw6Ffw55yX01pX0ZpX0bDtl9MYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiTFQ6c3MiLEw6IkREL01NL1lZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIFtrbC5dIExUIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgW2tsLl0gTFQifSxjYWxlbmRhcjp7c2FtZURheToiW8OtIGRhZyBrbC5dIExUIixuZXh0RGF5OiJbw6EgbW9yZ3VuIGtsLl0gTFQiLG5leHRXZWVrOiJkZGRkIFtrbC5dIExUIixsYXN0RGF5OiJbw60gZ8OmciBrbC5dIExUIixsYXN0V2VlazoiW3PDrcOwYXN0YV0gZGRkZCBba2wuXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZWZ0aXIgJXMiLHBhc3Q6ImZ5cmlyICVzIHPDrcOwYW4iLHM6ZCxtOmQsbW06ZCxoOiJrbHVra3VzdHVuZCIsaGg6ZCxkOmQsZGQ6ZCxNOmQsTU06ZCx5OmQseXk6ZH0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoImlzIiwiaXMiLHtjbG9zZVRleHQ6Ikxva2EiLHByZXZUZXh0OiImI3gzQzsgRnlycmkiLG5leHRUZXh0OiJOw6ZzdGkgJiN4M0U7IixjdXJyZW50VGV4dDoiw40gZGFnIixtb250aE5hbWVzOlsiSmFuw7phciIsIkZlYnLDumFyIiwiTWFycyIsIkFwcsOtbCIsIk1hw60iLCJKw7puw60iLCJKw7psw60iLCLDgWfDunN0IiwiU2VwdGVtYmVyIiwiT2t0w7NiZXIiLCJOw7N2ZW1iZXIiLCJEZXNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1hw60iLCJKw7puIiwiSsO6bCIsIsOBZ8O6IiwiU2VwIiwiT2t0IiwiTsOzdiIsIkRlcyJdLGRheU5hbWVzOlsiU3VubnVkYWd1ciIsIk3DoW51ZGFndXIiLCLDnnJpw7BqdWRhZ3VyIiwiTWnDsHZpa3VkYWd1ciIsIkZpbW10dWRhZ3VyIiwiRsO2c3R1ZGFndXIiLCJMYXVnYXJkYWd1ciJdLGRheU5hbWVzU2hvcnQ6WyJTdW4iLCJNw6FuIiwiw55yaSIsIk1pw7AiLCJGaW0iLCJGw7ZzIiwiTGF1Il0sZGF5TmFtZXNNaW46WyJTdSIsIk3DoSIsIsOeciIsIk1pIiwiRmkiLCJGw7YiLCJMYSJdLHdlZWtIZWFkZXI6IlZpa2EiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheTowLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiaXMiLHtidXR0b25UZXh0Onttb250aDoiTcOhbnXDsHVyIix3ZWVrOiJWaWthIixkYXk6IkRhZ3VyIixsaXN0OiJEYWdza3LDoSJ9LGFsbERheUh0bWw6IkFsbGFuPGJyLz5kYWdpbm4iLGV2ZW50TGltaXRUZXh0OiJtZWlyYSJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/it.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJpdCIse21vbnRoczoiZ2VubmFpb19mZWJicmFpb19tYXJ6b19hcHJpbGVfbWFnZ2lvX2dpdWdub19sdWdsaW9fYWdvc3RvX3NldHRlbWJyZV9vdHRvYnJlX25vdmVtYnJlX2RpY2VtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJnZW5fZmViX21hcl9hcHJfbWFnX2dpdV9sdWdfYWdvX3NldF9vdHRfbm92X2RpYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiRG9tZW5pY2FfTHVuZWTDrF9NYXJ0ZWTDrF9NZXJjb2xlZMOsX0dpb3ZlZMOsX1ZlbmVyZMOsX1NhYmF0byIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJEb21fTHVuX01hcl9NZXJfR2lvX1Zlbl9TYWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkRfTF9NYV9NZV9HX1ZfUyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkxUOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltPZ2dpIGFsbGVdIExUIixuZXh0RGF5OiJbRG9tYW5pIGFsbGVdIExUIixuZXh0V2VlazoiZGRkZCBbYWxsZV0gTFQiLGxhc3REYXk6IltJZXJpIGFsbGVdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIltsYSBzY29yc2FdIGRkZGQgW2FsbGVdIExUIjtkZWZhdWx0OnJldHVybiJbbG8gc2NvcnNvXSBkZGRkIFthbGxlXSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOmZ1bmN0aW9uKGEpe3JldHVybigvXlswLTldLiskLy50ZXN0KGEpPyJ0cmEiOiJpbiIpKyIgIithfSxwYXN0OiIlcyBmYSIsczoiYWxjdW5pIHNlY29uZGkiLG06InVuIG1pbnV0byIsbW06IiVkIG1pbnV0aSIsaDoidW4nb3JhIixoaDoiJWQgb3JlIixkOiJ1biBnaW9ybm8iLGRkOiIlZCBnaW9ybmkiLE06InVuIG1lc2UiLE1NOiIlZCBtZXNpIix5OiJ1biBhbm5vIix5eToiJWQgYW5uaSJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfcK6LyxvcmRpbmFsOiIlZMK6Iix3ZWVrOntkb3c6MSxkb3k6NH19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiaXQiLCJpdCIse2Nsb3NlVGV4dDoiQ2hpdWRpIixwcmV2VGV4dDoiJiN4M0M7UHJlYyIsbmV4dFRleHQ6IlN1Y2MmI3gzRTsiLGN1cnJlbnRUZXh0OiJPZ2dpIixtb250aE5hbWVzOlsiR2VubmFpbyIsIkZlYmJyYWlvIiwiTWFyem8iLCJBcHJpbGUiLCJNYWdnaW8iLCJHaXVnbm8iLCJMdWdsaW8iLCJBZ29zdG8iLCJTZXR0ZW1icmUiLCJPdHRvYnJlIiwiTm92ZW1icmUiLCJEaWNlbWJyZSJdLG1vbnRoTmFtZXNTaG9ydDpbIkdlbiIsIkZlYiIsIk1hciIsIkFwciIsIk1hZyIsIkdpdSIsIkx1ZyIsIkFnbyIsIlNldCIsIk90dCIsIk5vdiIsIkRpYyJdLGRheU5hbWVzOlsiRG9tZW5pY2EiLCJMdW5lZMOsIiwiTWFydGVkw6wiLCJNZXJjb2xlZMOsIiwiR2lvdmVkw6wiLCJWZW5lcmTDrCIsIlNhYmF0byJdLGRheU5hbWVzU2hvcnQ6WyJEb20iLCJMdW4iLCJNYXIiLCJNZXIiLCJHaW8iLCJWZW4iLCJTYWIiXSxkYXlOYW1lc01pbjpbIkRvIiwiTHUiLCJNYSIsIk1lIiwiR2kiLCJWZSIsIlNhIl0sd2Vla0hlYWRlcjoiU20iLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiaXQiLHtidXR0b25UZXh0Onttb250aDoiTWVzZSIsd2VlazoiU2V0dGltYW5hIixkYXk6Ikdpb3JubyIsbGlzdDoiQWdlbmRhIn0sYWxsRGF5SHRtbDoiVHV0dG8gaWw8YnIvPmdpb3JubyIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIithbHRyaSAiK2F9fSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/ja.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJqYSIse21vbnRoczoiMeaciF8y5pyIXzPmnIhfNOaciF815pyIXzbmnIhfN+aciF845pyIXznmnIhfMTDmnIhfMTHmnIhfMTLmnIgiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IjHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiLml6Xmm5zml6Vf5pyI5puc5pelX+eBq+abnOaXpV/msLTmm5zml6Vf5pyo5puc5pelX+mHkeabnOaXpV/lnJ/mm5zml6UiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi5pelX+aciF/ngatf5rC0X+acqF/ph5Ff5ZyfIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLml6Vf5pyIX+eBq1/msLRf5pyoX+mHkV/lnJ8iLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBaOaZgm3liIYiLExUUzoiTFRz56eSIixMOiJZWVlZL01NL0REIixMTDoiWVlZWeW5tE3mnIhE5pelIixMTEw6IllZWVnlubRN5pyIROaXpUxUIixMTExMOiJZWVlZ5bm0TeaciETml6VMVCBkZGRkIn0sbWVyaWRpZW1QYXJzZTov5Y2I5YmNfOWNiOW+jC9pLGlzUE06ZnVuY3Rpb24oYSl7cmV0dXJuIuWNiOW+jCI9PT1hfSxtZXJpZGllbTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIDEyPmE/IuWNiOWJjSI6IuWNiOW+jCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb5LuK5pelXSBMVCIsbmV4dERheToiW+aYjuaXpV0gTFQiLG5leHRXZWVrOiJb5p2l6YCxXWRkZGQgTFQiLGxhc3REYXk6IlvmmKjml6VdIExUIixsYXN0V2VlazoiW+WJjemAsV1kZGRkIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlc+W+jCIscGFzdDoiJXPliY0iLHM6IuaVsOenkiIsbToiMeWIhiIsbW06IiVk5YiGIixoOiIx5pmC6ZaTIixoaDoiJWTmmYLplpMiLGQ6IjHml6UiLGRkOiIlZOaXpSIsTToiMeODtuaciCIsTU06IiVk44O25pyIIix5OiIx5bm0Iix5eToiJWTlubQifX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJqYSIsImphIix7Y2xvc2VUZXh0OiLplonjgZjjgosiLHByZXZUZXh0OiImI3gzQzvliY0iLG5leHRUZXh0OiLmrKEmI3gzRTsiLGN1cnJlbnRUZXh0OiLku4rml6UiLG1vbnRoTmFtZXM6WyIx5pyIIiwiMuaciCIsIjPmnIgiLCI05pyIIiwiNeaciCIsIjbmnIgiLCI35pyIIiwiOOaciCIsIjnmnIgiLCIxMOaciCIsIjEx5pyIIiwiMTLmnIgiXSxtb250aE5hbWVzU2hvcnQ6WyIx5pyIIiwiMuaciCIsIjPmnIgiLCI05pyIIiwiNeaciCIsIjbmnIgiLCI35pyIIiwiOOaciCIsIjnmnIgiLCIxMOaciCIsIjEx5pyIIiwiMTLmnIgiXSxkYXlOYW1lczpbIuaXpeabnOaXpSIsIuaciOabnOaXpSIsIueBq+abnOaXpSIsIuawtOabnOaXpSIsIuacqOabnOaXpSIsIumHkeabnOaXpSIsIuWcn+abnOaXpSJdLGRheU5hbWVzU2hvcnQ6WyLml6UiLCLmnIgiLCLngasiLCLmsLQiLCLmnKgiLCLph5EiLCLlnJ8iXSxkYXlOYW1lc01pbjpbIuaXpSIsIuaciCIsIueBqyIsIuawtCIsIuacqCIsIumHkSIsIuWcnyJdLHdlZWtIZWFkZXI6IumAsSIsZGF0ZUZvcm1hdDoieXkvbW0vZGQiLGZpcnN0RGF5OjAsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiEwLHllYXJTdWZmaXg6IuW5tCJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJqYSIse2J1dHRvblRleHQ6e21vbnRoOiLmnIgiLHdlZWs6IumAsSIsZGF5OiLml6UiLGxpc3Q6IuS6iOWumuODquOCueODiCJ9LGFsbERheVRleHQ6Iue1guaXpSIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIuS7liAiK2ErIiDku7YifX0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/ko.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJrbyIse21vbnRoczoiMeyblF8y7JuUXzPsm5RfNOyblF817JuUXzbsm5RfN+yblF847JuUXznsm5RfMTDsm5RfMTHsm5RfMTLsm5QiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IjHsm5RfMuyblF8z7JuUXzTsm5RfNeyblF827JuUXzfsm5RfOOyblF857JuUXzEw7JuUXzEx7JuUXzEy7JuUIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiLsnbzsmpTsnbxf7JuU7JqU7J28X+2ZlOyalOydvF/siJjsmpTsnbxf66qp7JqU7J28X+q4iOyalOydvF/thqDsmpTsnbwiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi7J28X+yblF/tmZRf7IiYX+uqqV/quIhf7YagIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLsnbxf7JuUX+2ZlF/siJhf66qpX+q4iF/thqAiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGjsi5wgbeu2hCIsTFRTOiJBIGjsi5wgbeu2hCBz7LSIIixMOiJZWVlZLk1NLkREIixMTDoiWVlZWeuFhCBNTU1NIETsnbwiLExMTDoiWVlZWeuFhCBNTU1NIETsnbwgTFQiLExMTEw6IllZWVnrhYQgTU1NTSBE7J28IGRkZGQgTFQifSxjYWxlbmRhcjp7c2FtZURheToi7Jik64qYIExUIixuZXh0RGF5OiLrgrTsnbwgTFQiLG5leHRXZWVrOiJkZGRkIExUIixsYXN0RGF5OiLslrTsoJwgTFQiLGxhc3RXZWVrOiLsp4Drgpzso7wgZGRkZCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMg7ZuEIixwYXN0OiIlcyDsoIQiLHM6Iuuqh+y0iCIsc3M6IiVk7LSIIixtOiLsnbzrtoQiLG1tOiIlZOu2hCIsaDoi7ZWc7Iuc6rCEIixoaDoiJWTsi5zqsIQiLGQ6Iu2VmOujqCIsZGQ6IiVk7J28IixNOiLtlZzri6wiLE1NOiIlZOuLrCIseToi7J2864WEIix5eToiJWTrhYQifSxvcmRpbmFsUGFyc2U6L1xkezEsMn3snbwvLG9yZGluYWw6IiVk7J28IixtZXJpZGllbVBhcnNlOi/smKTsoIR87Jik7ZuELyxpc1BNOmZ1bmN0aW9uKGEpe3JldHVybiLsmKTtm4QiPT09YX0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAxMj5hPyLsmKTsoIQiOiLsmKTtm4QifX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJrbyIsImtvIix7Y2xvc2VUZXh0OiLri6vquLAiLHByZXZUZXh0OiLsnbTsoITri6wiLG5leHRUZXh0OiLri6TsnYzri6wiLGN1cnJlbnRUZXh0OiLsmKTripgiLG1vbnRoTmFtZXM6WyIx7JuUIiwiMuyblCIsIjPsm5QiLCI07JuUIiwiNeyblCIsIjbsm5QiLCI37JuUIiwiOOyblCIsIjnsm5QiLCIxMOyblCIsIjEx7JuUIiwiMTLsm5QiXSxtb250aE5hbWVzU2hvcnQ6WyIx7JuUIiwiMuyblCIsIjPsm5QiLCI07JuUIiwiNeyblCIsIjbsm5QiLCI37JuUIiwiOOyblCIsIjnsm5QiLCIxMOyblCIsIjEx7JuUIiwiMTLsm5QiXSxkYXlOYW1lczpbIuydvOyalOydvCIsIuyblOyalOydvCIsIu2ZlOyalOydvCIsIuyImOyalOydvCIsIuuqqeyalOydvCIsIuq4iOyalOydvCIsIu2GoOyalOydvCJdLGRheU5hbWVzU2hvcnQ6WyLsnbwiLCLsm5QiLCLtmZQiLCLsiJgiLCLrqqkiLCLquIgiLCLthqAiXSxkYXlOYW1lc01pbjpbIuydvCIsIuyblCIsIu2ZlCIsIuyImCIsIuuqqSIsIuq4iCIsIu2GoCJdLHdlZWtIZWFkZXI6IldrIixkYXRlRm9ybWF0OiJ5eS1tbS1kZCIsZmlyc3REYXk6MCxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITAseWVhclN1ZmZpeDoi64WEIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImtvIix7YnV0dG9uVGV4dDp7bW9udGg6IuyblCIsd2Vlazoi7KO8IixkYXk6IuydvCIsbGlzdDoi7J287KCV66qp66GdIn0sYWxsRGF5VGV4dDoi7KKF7J28IixldmVudExpbWl0VGV4dDoi6rCcIn0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/lt.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYixjLGQpe3JldHVybiBiPyJrZWxpb3Mgc2VrdW5kxJdzIjpkPyJrZWxpxbMgc2VrdW5kxb5pxbMiOiJrZWxpYXMgc2VrdW5kZXMifWZ1bmN0aW9uIGQoYSxiLGMsZCl7cmV0dXJuIGI/ZihjKVswXTpkP2YoYylbMV06ZihjKVsyXX1mdW5jdGlvbiBlKGEpe3JldHVybiBhJTEwPT09MHx8YT4xMCYmMjA+YX1mdW5jdGlvbiBmKGEpe3JldHVybiBpW2FdLnNwbGl0KCJfIil9ZnVuY3Rpb24gZyhhLGIsYyxnKXt2YXIgaD1hKyIgIjtyZXR1cm4gMT09PWE/aCtkKGEsYixjWzBdLGcpOmI/aCsoZShhKT9mKGMpWzFdOmYoYylbMF0pOmc/aCtmKGMpWzFdOmgrKGUoYSk/ZihjKVsxXTpmKGMpWzJdKX1mdW5jdGlvbiBoKGEsYil7dmFyIGM9LTE9PT1iLmluZGV4T2YoImRkZGQgSEg6bW0iKSxkPWpbYS5kYXkoKV07cmV0dXJuIGM/ZDpkLnN1YnN0cmluZygwLGQubGVuZ3RoLTIpKyLEryJ9dmFyIGk9e206Im1pbnV0xJdfbWludXTEl3NfbWludXTEmSIsbW06Im1pbnV0xJdzX21pbnXEjWnFs19taW51dGVzIixoOiJ2YWxhbmRhX3ZhbGFuZG9zX3ZhbGFuZMSFIixoaDoidmFsYW5kb3NfdmFsYW5kxbNfdmFsYW5kYXMiLGQ6ImRpZW5hX2RpZW5vc19kaWVuxIUiLGRkOiJkaWVub3NfZGllbsWzX2RpZW5hcyIsTToibcSXbnVvX23El25lc2lvX23El25lc8SvIixNTToibcSXbmVzaWFpX23El25lc2nFs19txJduZXNpdXMiLHk6Im1ldGFpX21ldMWzX21ldHVzIix5eToibWV0YWlfbWV0xbNfbWV0dXMifSxqPSJzZWttYWRpZW5pc19waXJtYWRpZW5pc19hbnRyYWRpZW5pc190cmXEjWlhZGllbmlzX2tldHZpcnRhZGllbmlzX3Blbmt0YWRpZW5pc1/FoWXFoXRhZGllbmlzIi5zcGxpdCgiXyIpOyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImx0Iix7bW9udGhzOiJzYXVzaW9fdmFzYXJpb19rb3ZvX2JhbGFuZMW+aW9fZ2VndcW+xJdzX2JpcsW+ZWxpb19saWVwb3NfcnVncGrFq8SNaW9fcnVnc8SXam9fc3BhbGlvX2xhcGtyacSNaW9fZ3J1b2TFvmlvIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJzYXVfdmFzX2tvdl9iYWxfZ2VnX2Jpcl9saWVfcmdwX3Jnc19zcGFfbGFwX2dyZCIuc3BsaXQoIl8iKSx3ZWVrZGF5czpoLHdlZWtkYXlzU2hvcnQ6IlNla19QaXJfQW50X1RyZV9LZXRfUGVuX8WgZcWhIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTX1BfQV9UX0tfUG5fxaAiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJMVDpzcyIsTDoiWVlZWS1NTS1ERCIsTEw6IllZWVkgW20uXSBNTU1NIEQgW2QuXSIsTExMOiJZWVlZIFttLl0gTU1NTSBEIFtkLl0sIExUIFt2YWwuXSIsTExMTDoiWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBkZGRkLCBMVCBbdmFsLl0iLGw6IllZWVktTU0tREQiLGxsOiJZWVlZIFttLl0gTU1NTSBEIFtkLl0iLGxsbDoiWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBMVCBbdmFsLl0iLGxsbGw6IllZWVkgW20uXSBNTU1NIEQgW2QuXSwgZGRkLCBMVCBbdmFsLl0ifSxjYWxlbmRhcjp7c2FtZURheToiW8WgaWFuZGllbl0gTFQiLG5leHREYXk6IltSeXRval0gTFQiLG5leHRXZWVrOiJkZGRkIExUIixsYXN0RGF5OiJbVmFrYXJdIExUIixsYXN0V2VlazoiW1ByYcSXanVzxK9dIGRkZGQgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InBvICVzIixwYXN0OiJwcmllxaEgJXMiLHM6YyxtOmQsbW06ZyxoOmQsaGg6ZyxkOmQsZGQ6ZyxNOmQsTU06Zyx5OmQseXk6Z30sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9LW9qaS8sb3JkaW5hbDpmdW5jdGlvbihhKXtyZXR1cm4gYSsiLW9qaSJ9LHdlZWs6e2RvdzoxLGRveTo0fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJsdCIsImx0Iix7Y2xvc2VUZXh0OiJVxb5kYXJ5dGkiLHByZXZUZXh0OiImI3gzQztBdGdhbCIsbmV4dFRleHQ6IlBpcm15biYjeDNFOyIsY3VycmVudFRleHQ6IsWgaWFuZGllbiIsbW9udGhOYW1lczpbIlNhdXNpcyIsIlZhc2FyaXMiLCJLb3ZhcyIsIkJhbGFuZGlzIiwiR2VndcW+xJciLCJCaXLFvmVsaXMiLCJMaWVwYSIsIlJ1Z3Bqxat0aXMiLCJSdWdzxJdqaXMiLCJTcGFsaXMiLCJMYXBrcml0aXMiLCJHcnVvZGlzIl0sbW9udGhOYW1lc1Nob3J0OlsiU2F1IiwiVmFzIiwiS292IiwiQmFsIiwiR2VnIiwiQmlyIiwiTGllIiwiUnVncCIsIlJ1Z3MiLCJTcGEiLCJMYXAiLCJHcnUiXSxkYXlOYW1lczpbInNla21hZGllbmlzIiwicGlybWFkaWVuaXMiLCJhbnRyYWRpZW5pcyIsInRyZcSNaWFkaWVuaXMiLCJrZXR2aXJ0YWRpZW5pcyIsInBlbmt0YWRpZW5pcyIsIsWhZcWhdGFkaWVuaXMiXSxkYXlOYW1lc1Nob3J0Olsic2VrIiwicGlyIiwiYW50IiwidHJlIiwia2V0IiwicGVuIiwixaFlxaEiXSxkYXlOYW1lc01pbjpbIlNlIiwiUHIiLCJBbiIsIlRyIiwiS2UiLCJQZSIsIsWgZSJdLHdlZWtIZWFkZXI6IlNBViIsZGF0ZUZvcm1hdDoieXktbW0tZGQiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiEwLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJsdCIse2J1dHRvblRleHQ6e21vbnRoOiJNxJdudW8iLHdlZWs6IlNhdmFpdMSXIixkYXk6IkRpZW5hIixsaXN0OiJEYXJib3R2YXJrxJcifSxhbGxEYXlUZXh0OiJWaXPEhSBkaWVuxIUiLGV2ZW50TGltaXRUZXh0OiJkYXVnaWF1In0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/lv.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYixjKXt2YXIgZD1hLnNwbGl0KCJfIik7cmV0dXJuIGM/YiUxMD09PTEmJjExIT09Yj9kWzJdOmRbM106YiUxMD09PTEmJjExIT09Yj9kWzBdOmRbMV19ZnVuY3Rpb24gZChhLGIsZCl7cmV0dXJuIGErIiAiK2MoZVtkXSxhLGIpfXZhciBlPXttbToibWluxat0aV9taW7Fq3Rlc19taW7Fq3RlX21pbsWrdGVzIixoaDoic3R1bmR1X3N0dW5kYXNfc3R1bmRhX3N0dW5kYXMiLGRkOiJkaWVudV9kaWVuYXNfZGllbmFfZGllbmFzIixNTToibcSTbmVzaV9txJNuZcWhdXNfbcSTbmVzaXNfbcSTbmXFoWkiLHl5OiJnYWR1X2dhZHVzX2dhZHNfZ2FkaSJ9OyhiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsImx2Iix7bW9udGhzOiJqYW52xIFyaXNfZmVicnXEgXJpc19tYXJ0c19hcHLEq2xpc19tYWlqc19qxatuaWpzX2rFq2xpanNfYXVndXN0c19zZXB0ZW1icmlzX29rdG9icmlzX25vdmVtYnJpc19kZWNlbWJyaXMiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbl9mZWJfbWFyX2Fwcl9tYWlfasWrbl9qxatsX2F1Z19zZXBfb2t0X25vdl9kZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6InN2xJN0ZGllbmFfcGlybWRpZW5hX290cmRpZW5hX3RyZcWhZGllbmFfY2V0dXJ0ZGllbmFfcGlla3RkaWVuYV9zZXN0ZGllbmEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU3ZfUF9PX1RfQ19Qa19TIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdl9QX09fVF9DX1BrX1MiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJMVDpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IllZWVkuIFtnYWRhXSBELiBNTU1NIixMTEw6IllZWVkuIFtnYWRhXSBELiBNTU1NLCBMVCIsTExMTDoiWVlZWS4gW2dhZGFdIEQuIE1NTU0sIGRkZGQsIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvFoG9kaWVuIHB1bGtzdGVuXSBMVCIsbmV4dERheToiW1LEq3QgcHVsa3N0ZW5dIExUIixuZXh0V2VlazoiZGRkZCBbcHVsa3N0ZW5dIExUIixsYXN0RGF5OiJbVmFrYXIgcHVsa3N0ZW5dIExUIixsYXN0V2VlazoiW1BhZ8SBanXFocSBXSBkZGRkIFtwdWxrc3Rlbl0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIHbEk2zEgWsiLHBhc3Q6IiVzIGFncsSBayIsczoiZGHFvmFzIHNla3VuZGVzIixtOiJtaW7Fq3RpIixtbTpkLGg6InN0dW5kdSIsaGg6ZCxkOiJkaWVudSIsZGQ6ZCxNOiJtxJNuZXNpIixNTTpkLHk6ImdhZHUiLHl5OmR9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJsdiIsImx2Iix7Y2xvc2VUZXh0OiJBaXp2xJNydCIscHJldlRleHQ6IkllcHIuIixuZXh0VGV4dDoiTsSBay4iLGN1cnJlbnRUZXh0OiLFoG9kaWVuIixtb250aE5hbWVzOlsiSmFudsSBcmlzIiwiRmVicnXEgXJpcyIsIk1hcnRzIiwiQXByxKtsaXMiLCJNYWlqcyIsIkrFq25panMiLCJKxatsaWpzIiwiQXVndXN0cyIsIlNlcHRlbWJyaXMiLCJPa3RvYnJpcyIsIk5vdmVtYnJpcyIsIkRlY2VtYnJpcyJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1haSIsIkrFq24iLCJKxatsIiwiQXVnIiwiU2VwIiwiT2t0IiwiTm92IiwiRGVjIl0sZGF5TmFtZXM6WyJzdsSTdGRpZW5hIiwicGlybWRpZW5hIiwib3RyZGllbmEiLCJ0cmXFoWRpZW5hIiwiY2V0dXJ0ZGllbmEiLCJwaWVrdGRpZW5hIiwic2VzdGRpZW5hIl0sZGF5TmFtZXNTaG9ydDpbInN2dCIsInBybSIsIm90ciIsInRyZSIsImN0ciIsInBrdCIsInNzdCJdLGRheU5hbWVzTWluOlsiU3YiLCJQciIsIk90IiwiVHIiLCJDdCIsIlBrIiwiU3MiXSx3ZWVrSGVhZGVyOiJOZWQuIixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoImx2Iix7YnV0dG9uVGV4dDp7bW9udGg6Ik3Ek25lc2lzIix3ZWVrOiJOZWTEk8S8YSIsZGF5OiJEaWVuYSIsbGlzdDoiRGllbmFzIGvEgXJ0xKtiYSJ9LGFsbERheVRleHQ6IlZpc3UgZGllbnUiLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGEpe3JldHVybiIrdsSTbCAiK2F9fSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/nb.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJuYiIse21vbnRoczoiamFudWFyX2ZlYnJ1YXJfbWFyc19hcHJpbF9tYWlfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZXNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2ZlYl9tYXJfYXByX21haV9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZXMiLnNwbGl0KCJfIiksd2Vla2RheXM6InPDuG5kYWdfbWFuZGFnX3RpcnNkYWdfb25zZGFnX3RvcnNkYWdfZnJlZGFnX2zDuHJkYWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoic8O4bl9tYW5fdGlyc19vbnNfdG9yc19mcmVfbMO4ciIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoic8O4X21hX3RpX29uX3RvX2ZyX2zDuCIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkgubW0iLExUUzoiTFQuc3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIFtrbC5dIExUIixMTExMOiJkZGRkIEQuIE1NTU0gWVlZWSBba2wuXSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbaSBkYWcga2wuXSBMVCIsbmV4dERheToiW2kgbW9yZ2VuIGtsLl0gTFQiLG5leHRXZWVrOiJkZGRkIFtrbC5dIExUIixsYXN0RGF5OiJbaSBnw6VyIGtsLl0gTFQiLGxhc3RXZWVrOiJbZm9ycmlnZV0gZGRkZCBba2wuXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToib20gJXMiLHBhc3Q6ImZvciAlcyBzaWRlbiIsczoibm9lbiBzZWt1bmRlciIsbToiZXR0IG1pbnV0dCIsbW06IiVkIG1pbnV0dGVyIixoOiJlbiB0aW1lIixoaDoiJWQgdGltZXIiLGQ6ImVuIGRhZyIsZGQ6IiVkIGRhZ2VyIixNOiJlbiBtw6VuZWQiLE1NOiIlZCBtw6VuZWRlciIseToiZXR0IMOlciIseXk6IiVkIMOlciJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJuYiIsIm5iIix7Y2xvc2VUZXh0OiJMdWtrIixwcmV2VGV4dDoiJiN4QUI7Rm9ycmlnZSIsbmV4dFRleHQ6Ik5lc3RlJiN4QkI7IixjdXJyZW50VGV4dDoiSSBkYWciLG1vbnRoTmFtZXM6WyJqYW51YXIiLCJmZWJydWFyIiwibWFycyIsImFwcmlsIiwibWFpIiwianVuaSIsImp1bGkiLCJhdWd1c3QiLCJzZXB0ZW1iZXIiLCJva3RvYmVyIiwibm92ZW1iZXIiLCJkZXNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbImphbiIsImZlYiIsIm1hciIsImFwciIsIm1haSIsImp1biIsImp1bCIsImF1ZyIsInNlcCIsIm9rdCIsIm5vdiIsImRlcyJdLGRheU5hbWVzU2hvcnQ6WyJzw7huIiwibWFuIiwidGlyIiwib25zIiwidG9yIiwiZnJlIiwibMO4ciJdLGRheU5hbWVzOlsic8O4bmRhZyIsIm1hbmRhZyIsInRpcnNkYWciLCJvbnNkYWciLCJ0b3JzZGFnIiwiZnJlZGFnIiwibMO4cmRhZyJdLGRheU5hbWVzTWluOlsic8O4IiwibWEiLCJ0aSIsIm9uIiwidG8iLCJmciIsImzDuCJdLHdlZWtIZWFkZXI6IlVrZSIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJuYiIse2J1dHRvblRleHQ6e21vbnRoOiJNw6VuZWQiLHdlZWs6IlVrZSIsZGF5OiJEYWciLGxpc3Q6IkFnZW5kYSJ9LGFsbERheVRleHQ6IkhlbGUgZGFnZW4iLGV2ZW50TGltaXRUZXh0OiJ0aWwifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/nl.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXt2YXIgYz0iamFuLl9mZWIuX21ydC5fYXByLl9tZWlfanVuLl9qdWwuX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVjLiIuc3BsaXQoIl8iKSxkPSJqYW5fZmViX21ydF9hcHJfbWVpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYyIuc3BsaXQoIl8iKTsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJubCIse21vbnRoczoiamFudWFyaV9mZWJydWFyaV9tYWFydF9hcHJpbF9tZWlfanVuaV9qdWxpX2F1Z3VzdHVzX3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OmZ1bmN0aW9uKGEsYil7cmV0dXJuLy1NTU0tLy50ZXN0KGIpP2RbYS5tb250aCgpXTpjW2EubW9udGgoKV19LHdlZWtkYXlzOiJ6b25kYWdfbWFhbmRhZ19kaW5zZGFnX3dvZW5zZGFnX2RvbmRlcmRhZ192cmlqZGFnX3phdGVyZGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InpvLl9tYS5fZGkuX3dvLl9kby5fdnIuX3phLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiWm9fTWFfRGlfV29fRG9fVnJfWmEiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJMVDpzcyIsTDoiREQtTU0tWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIExUIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6Ilt2YW5kYWFnIG9tXSBMVCIsbmV4dERheToiW21vcmdlbiBvbV0gTFQiLG5leHRXZWVrOiJkZGRkIFtvbV0gTFQiLGxhc3REYXk6IltnaXN0ZXJlbiBvbV0gTFQiLGxhc3RXZWVrOiJbYWZnZWxvcGVuXSBkZGRkIFtvbV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im92ZXIgJXMiLHBhc3Q6IiVzIGdlbGVkZW4iLHM6ImVlbiBwYWFyIHNlY29uZGVuIixtOiLDqcOpbiBtaW51dXQiLG1tOiIlZCBtaW51dGVuIixoOiLDqcOpbiB1dXIiLGhoOiIlZCB1dXIiLGQ6IsOpw6luIGRhZyIsZGQ6IiVkIGRhZ2VuIixNOiLDqcOpbiBtYWFuZCIsTU06IiVkIG1hYW5kZW4iLHk6IsOpw6luIGphYXIiLHl5OiIlZCBqYWFyIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0ZXxkZSkvLG9yZGluYWw6ZnVuY3Rpb24oYSl7cmV0dXJuIGErKDE9PT1hfHw4PT09YXx8YT49MjA/InN0ZSI6ImRlIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJubCIsIm5sIix7Y2xvc2VUZXh0OiJTbHVpdGVuIixwcmV2VGV4dDoi4oaQIixuZXh0VGV4dDoi4oaSIixjdXJyZW50VGV4dDoiVmFuZGFhZyIsbW9udGhOYW1lczpbImphbnVhcmkiLCJmZWJydWFyaSIsIm1hYXJ0IiwiYXByaWwiLCJtZWkiLCJqdW5pIiwianVsaSIsImF1Z3VzdHVzIiwic2VwdGVtYmVyIiwib2t0b2JlciIsIm5vdmVtYmVyIiwiZGVjZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJqYW4iLCJmZWIiLCJtcnQiLCJhcHIiLCJtZWkiLCJqdW4iLCJqdWwiLCJhdWciLCJzZXAiLCJva3QiLCJub3YiLCJkZWMiXSxkYXlOYW1lczpbInpvbmRhZyIsIm1hYW5kYWciLCJkaW5zZGFnIiwid29lbnNkYWciLCJkb25kZXJkYWciLCJ2cmlqZGFnIiwiemF0ZXJkYWciXSxkYXlOYW1lc1Nob3J0Olsiem9uIiwibWFhIiwiZGluIiwid29lIiwiZG9uIiwidnJpIiwiemF0Il0sZGF5TmFtZXNNaW46WyJ6byIsIm1hIiwiZGkiLCJ3byIsImRvIiwidnIiLCJ6YSJdLHdlZWtIZWFkZXI6IldrIixkYXRlRm9ybWF0OiJkZC1tbS15eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoIm5sIix7YnV0dG9uVGV4dDp7bW9udGg6Ik1hYW5kIix3ZWVrOiJXZWVrIixkYXk6IkRhZyIsbGlzdDoiQWdlbmRhIn0sYWxsRGF5VGV4dDoiSGVsZSBkYWciLGV2ZW50TGltaXRUZXh0OiJleHRyYSJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/pl.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEpe3JldHVybiA1PmElMTAmJmElMTA+MSYmfn4oYS8xMCklMTAhPT0xfWZ1bmN0aW9uIGQoYSxiLGQpe3ZhciBlPWErIiAiO3N3aXRjaChkKXtjYXNlIm0iOnJldHVybiBiPyJtaW51dGEiOiJtaW51dMSZIjtjYXNlIm1tIjpyZXR1cm4gZSsoYyhhKT8ibWludXR5IjoibWludXQiKTtjYXNlImgiOnJldHVybiBiPyJnb2R6aW5hIjoiZ29kemluxJkiO2Nhc2UiaGgiOnJldHVybiBlKyhjKGEpPyJnb2R6aW55IjoiZ29kemluIik7Y2FzZSJNTSI6cmV0dXJuIGUrKGMoYSk/Im1pZXNpxIVjZSI6Im1pZXNpxJljeSIpO2Nhc2UieXkiOnJldHVybiBlKyhjKGEpPyJsYXRhIjoibGF0Iil9fXZhciBlPSJzdHljemXFhF9sdXR5X21hcnplY19rd2llY2llxYRfbWFqX2N6ZXJ3aWVjX2xpcGllY19zaWVycGllxYRfd3J6ZXNpZcWEX3Bhxbpkemllcm5pa19saXN0b3BhZF9ncnVkemllxYQiLnNwbGl0KCJfIiksZj0ic3R5Y3puaWFfbHV0ZWdvX21hcmNhX2t3aWV0bmlhX21hamFfY3plcndjYV9saXBjYV9zaWVycG5pYV93cnplxZtuaWFfcGHFumR6aWVybmlrYV9saXN0b3BhZGFfZ3J1ZG5pYSIuc3BsaXQoIl8iKTsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJwbCIse21vbnRoczpmdW5jdGlvbihhLGIpe3JldHVybi9EIE1NTU0vLnRlc3QoYik/ZlthLm1vbnRoKCldOmVbYS5tb250aCgpXX0sbW9udGhzU2hvcnQ6InN0eV9sdXRfbWFyX2t3aV9tYWpfY3plX2xpcF9zaWVfd3J6X3BhxbpfbGlzX2dydSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoibmllZHppZWxhX3BvbmllZHppYcWCZWtfd3RvcmVrX8Wbcm9kYV9jendhcnRla19wacSFdGVrX3NvYm90YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJuaWVfcG9uX3d0X8Wbcl9jendfcHRfc2IiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ik5fUG5fV3RfxZpyX0N6X1B0X1NvIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiTFQ6c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBMVCIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW0R6acWbIG9dIExUIixuZXh0RGF5OiJbSnV0cm8gb10gTFQiLG5leHRXZWVrOiJbV10gZGRkZCBbb10gTFQiLGxhc3REYXk6IltXY3pvcmFqIG9dIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIltXIHplc3rFgsSFIG5pZWR6aWVsxJkgb10gTFQiO2Nhc2UgMzpyZXR1cm4iW1cgemVzesWCxIUgxZtyb2TEmSBvXSBMVCI7Y2FzZSA2OnJldHVybiJbVyB6ZXN6xYLEhSBzb2JvdMSZIG9dIExUIjtkZWZhdWx0OnJldHVybiJbVyB6ZXN6xYJ5XSBkZGRkIFtvXSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJ6YSAlcyIscGFzdDoiJXMgdGVtdSIsczoia2lsa2Egc2VrdW5kIixtOmQsbW06ZCxoOmQsaGg6ZCxkOiIxIGR6aWXFhCIsZGQ6IiVkIGRuaSIsTToibWllc2nEhWMiLE1NOmQseToicm9rIix5eTpkfSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygicGwiLCJwbCIse2Nsb3NlVGV4dDoiWmFta25paiIscHJldlRleHQ6IiYjeDNDO1BvcHJ6ZWRuaSIsbmV4dFRleHQ6Ik5hc3TEmXBueSYjeDNFOyIsY3VycmVudFRleHQ6IkR6acWbIixtb250aE5hbWVzOlsiU3R5Y3plxYQiLCJMdXR5IiwiTWFyemVjIiwiS3dpZWNpZcWEIiwiTWFqIiwiQ3plcndpZWMiLCJMaXBpZWMiLCJTaWVycGllxYQiLCJXcnplc2llxYQiLCJQYcW6ZHppZXJuaWsiLCJMaXN0b3BhZCIsIkdydWR6aWXFhCJdLG1vbnRoTmFtZXNTaG9ydDpbIlN0eSIsIkx1IiwiTWFyIiwiS3ciLCJNYWoiLCJDemUiLCJMaXAiLCJTaWUiLCJXcnoiLCJQYSIsIkxpcyIsIkdydSJdLGRheU5hbWVzOlsiTmllZHppZWxhIiwiUG9uaWVkemlhxYJlayIsIld0b3JlayIsIsWacm9kYSIsIkN6d2FydGVrIiwiUGnEhXRlayIsIlNvYm90YSJdLGRheU5hbWVzU2hvcnQ6WyJOaWUiLCJQbiIsIld0IiwixZpyIiwiQ3p3IiwiUHQiLCJTbyJdLGRheU5hbWVzTWluOlsiTiIsIlBuIiwiV3QiLCLFmnIiLCJDeiIsIlB0IiwiU28iXSx3ZWVrSGVhZGVyOiJUeWR6IixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGEuZnVsbENhbGVuZGFyLmxhbmcoInBsIix7YnV0dG9uVGV4dDp7bW9udGg6Ik1pZXNpxIVjIix3ZWVrOiJUeWR6aWXFhCIsZGF5OiJEemllxYQiLGxpc3Q6IlBsYW4gZG5pYSJ9LGFsbERheVRleHQ6IkNhxYJ5IGR6aWXFhCIsZXZlbnRMaW1pdFRleHQ6IndpxJljZWoifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/pt-br.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJwdC1iciIse21vbnRoczoiamFuZWlyb19mZXZlcmVpcm9fbWFyw6dvX2FicmlsX21haW9fanVuaG9fanVsaG9fYWdvc3RvX3NldGVtYnJvX291dHVicm9fbm92ZW1icm9fZGV6ZW1icm8iLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbl9mZXZfbWFyX2Ficl9tYWlfanVuX2p1bF9hZ29fc2V0X291dF9ub3ZfZGV6Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJkb21pbmdvX3NlZ3VuZGEtZmVpcmFfdGVyw6dhLWZlaXJhX3F1YXJ0YS1mZWlyYV9xdWludGEtZmVpcmFfc2V4dGEtZmVpcmFfc8OhYmFkbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkb21fc2VnX3Rlcl9xdWFfcXVpX3NleF9zw6FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkb21fMsKqXzPCql80wqpfNcKqXzbCql9zw6FiIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiTFQ6c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkiLExMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIFvDoHNdIExUIixMTExMOiJkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgW8Ogc10gTFQifSxjYWxlbmRhcjp7c2FtZURheToiW0hvamUgw6BzXSBMVCIsbmV4dERheToiW0FtYW5ow6Mgw6BzXSBMVCIsbmV4dFdlZWs6ImRkZGQgW8Ogc10gTFQiLGxhc3REYXk6IltPbnRlbSDDoHNdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5kYXkoKXx8Nj09PXRoaXMuZGF5KCk/IlvDmmx0aW1vXSBkZGRkIFvDoHNdIExUIjoiW8OabHRpbWFdIGRkZGQgW8Ogc10gTFQifSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJlbSAlcyIscGFzdDoiJXMgYXRyw6FzIixzOiJzZWd1bmRvcyIsbToidW0gbWludXRvIixtbToiJWQgbWludXRvcyIsaDoidW1hIGhvcmEiLGhoOiIlZCBob3JhcyIsZDoidW0gZGlhIixkZDoiJWQgZGlhcyIsTToidW0gbcOqcyIsTU06IiVkIG1lc2VzIix5OiJ1bSBhbm8iLHl5OiIlZCBhbm9zIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9wrovLG9yZGluYWw6IiVkwroifSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoInB0LWJyIiwicHQtQlIiLHtjbG9zZVRleHQ6IkZlY2hhciIscHJldlRleHQ6IiYjeDNDO0FudGVyaW9yIixuZXh0VGV4dDoiUHLDs3hpbW8mI3gzRTsiLGN1cnJlbnRUZXh0OiJIb2plIixtb250aE5hbWVzOlsiSmFuZWlybyIsIkZldmVyZWlybyIsIk1hcsOnbyIsIkFicmlsIiwiTWFpbyIsIkp1bmhvIiwiSnVsaG8iLCJBZ29zdG8iLCJTZXRlbWJybyIsIk91dHVicm8iLCJOb3ZlbWJybyIsIkRlemVtYnJvIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmV2IiwiTWFyIiwiQWJyIiwiTWFpIiwiSnVuIiwiSnVsIiwiQWdvIiwiU2V0IiwiT3V0IiwiTm92IiwiRGV6Il0sZGF5TmFtZXM6WyJEb21pbmdvIiwiU2VndW5kYS1mZWlyYSIsIlRlcsOnYS1mZWlyYSIsIlF1YXJ0YS1mZWlyYSIsIlF1aW50YS1mZWlyYSIsIlNleHRhLWZlaXJhIiwiU8OhYmFkbyJdLGRheU5hbWVzU2hvcnQ6WyJEb20iLCJTZWciLCJUZXIiLCJRdWEiLCJRdWkiLCJTZXgiLCJTw6FiIl0sZGF5TmFtZXNNaW46WyJEb20iLCJTZWciLCJUZXIiLCJRdWEiLCJRdWkiLCJTZXgiLCJTw6FiIl0sd2Vla0hlYWRlcjoiU20iLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheTowLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygicHQtYnIiLHtidXR0b25UZXh0Onttb250aDoiTcOqcyIsd2VlazoiU2VtYW5hIixkYXk6IkRpYSIsbGlzdDoiQ29tcHJvbWlzc29zIn0sYWxsRGF5VGV4dDoiZGlhIGludGVpcm8iLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGEpe3JldHVybiJtYWlzICsiK2F9fSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/pt.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJwdCIse21vbnRoczoiamFuZWlyb19mZXZlcmVpcm9fbWFyw6dvX2FicmlsX21haW9fanVuaG9fanVsaG9fYWdvc3RvX3NldGVtYnJvX291dHVicm9fbm92ZW1icm9fZGV6ZW1icm8iLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbl9mZXZfbWFyX2Ficl9tYWlfanVuX2p1bF9hZ29fc2V0X291dF9ub3ZfZGV6Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJkb21pbmdvX3NlZ3VuZGEtZmVpcmFfdGVyw6dhLWZlaXJhX3F1YXJ0YS1mZWlyYV9xdWludGEtZmVpcmFfc2V4dGEtZmVpcmFfc8OhYmFkbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkb21fc2VnX3Rlcl9xdWFfcXVpX3NleF9zw6FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkb21fMsKqXzPCql80wqpfNcKqXzbCql9zw6FiIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiTFQ6c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkiLExMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIExUIixMTExMOiJkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW0hvamUgw6BzXSBMVCIsbmV4dERheToiW0FtYW5ow6Mgw6BzXSBMVCIsbmV4dFdlZWs6ImRkZGQgW8Ogc10gTFQiLGxhc3REYXk6IltPbnRlbSDDoHNdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5kYXkoKXx8Nj09PXRoaXMuZGF5KCk/IlvDmmx0aW1vXSBkZGRkIFvDoHNdIExUIjoiW8OabHRpbWFdIGRkZGQgW8Ogc10gTFQifSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJlbSAlcyIscGFzdDoiaMOhICVzIixzOiJzZWd1bmRvcyIsbToidW0gbWludXRvIixtbToiJWQgbWludXRvcyIsaDoidW1hIGhvcmEiLGhoOiIlZCBob3JhcyIsZDoidW0gZGlhIixkZDoiJWQgZGlhcyIsTToidW0gbcOqcyIsTU06IiVkIG1lc2VzIix5OiJ1bSBhbm8iLHl5OiIlZCBhbm9zIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9wrovLG9yZGluYWw6IiVkwroiLHdlZWs6e2RvdzoxLGRveTo0fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJwdCIsInB0Iix7Y2xvc2VUZXh0OiJGZWNoYXIiLHByZXZUZXh0OiJBbnRlcmlvciIsbmV4dFRleHQ6IlNlZ3VpbnRlIixjdXJyZW50VGV4dDoiSG9qZSIsbW9udGhOYW1lczpbIkphbmVpcm8iLCJGZXZlcmVpcm8iLCJNYXLDp28iLCJBYnJpbCIsIk1haW8iLCJKdW5obyIsIkp1bGhvIiwiQWdvc3RvIiwiU2V0ZW1icm8iLCJPdXR1YnJvIiwiTm92ZW1icm8iLCJEZXplbWJybyJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZldiIsIk1hciIsIkFiciIsIk1haSIsIkp1biIsIkp1bCIsIkFnbyIsIlNldCIsIk91dCIsIk5vdiIsIkRleiJdLGRheU5hbWVzOlsiRG9taW5nbyIsIlNlZ3VuZGEtZmVpcmEiLCJUZXLDp2EtZmVpcmEiLCJRdWFydGEtZmVpcmEiLCJRdWludGEtZmVpcmEiLCJTZXh0YS1mZWlyYSIsIlPDoWJhZG8iXSxkYXlOYW1lc1Nob3J0OlsiRG9tIiwiU2VnIiwiVGVyIiwiUXVhIiwiUXVpIiwiU2V4IiwiU8OhYiJdLGRheU5hbWVzTWluOlsiRG9tIiwiU2VnIiwiVGVyIiwiUXVhIiwiUXVpIiwiU2V4IiwiU8OhYiJdLHdlZWtIZWFkZXI6IlNlbSIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjAsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJwdCIse2J1dHRvblRleHQ6e21vbnRoOiJNw6pzIix3ZWVrOiJTZW1hbmEiLGRheToiRGlhIixsaXN0OiJBZ2VuZGEifSxhbGxEYXlUZXh0OiJUb2RvIG8gZGlhIixldmVudExpbWl0VGV4dDoibWFpcyJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/ro.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYixjKXt2YXIgZD17bW06Im1pbnV0ZSIsaGg6Im9yZSIsZGQ6InppbGUiLE1NOiJsdW5pIix5eToiYW5pIn0sZT0iICI7cmV0dXJuKGElMTAwPj0yMHx8YT49MTAwJiZhJTEwMD09PTApJiYoZT0iIGRlICIpLGErZStkW2NdfShiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsInJvIix7bW9udGhzOiJpYW51YXJpZV9mZWJydWFyaWVfbWFydGllX2FwcmlsaWVfbWFpX2l1bmllX2l1bGllX2F1Z3VzdF9zZXB0ZW1icmllX29jdG9tYnJpZV9ub2llbWJyaWVfZGVjZW1icmllIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJpYW4uX2ZlYnIuX21hcnQuX2Fwci5fbWFpX2l1bi5faXVsLl9hdWcuX3NlcHQuX29jdC5fbm92Ll9kZWMuIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJkdW1pbmljxINfbHVuaV9tYXLIm2lfbWllcmN1cmlfam9pX3ZpbmVyaV9zw6JtYsSDdMSDIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkR1bV9MdW5fTWFyX01pZV9Kb2lfVmluX1PDom0iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkR1X0x1X01hX01pX0pvX1ZpX1PDoiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiTFQ6c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlthemkgbGFdIExUIixuZXh0RGF5OiJbbcOiaW5lIGxhXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2xhXSBMVCIsbGFzdERheToiW2llcmkgbGFdIExUIixsYXN0V2VlazoiW2Zvc3RhXSBkZGRkIFtsYV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InBlc3RlICVzIixwYXN0OiIlcyDDrm4gdXJtxIMiLHM6ImPDonRldmEgc2VjdW5kZSIsbToidW4gbWludXQiLG1tOmMsaDoibyBvcsSDIixoaDpjLGQ6Im8gemkiLGRkOmMsTToibyBsdW7EgyIsTU06Yyx5OiJ1biBhbiIseXk6Y30sd2Vlazp7ZG93OjEsZG95Ojd9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoInJvIiwicm8iLHtjbG9zZVRleHQ6IsOObmNoaWRlIixwcmV2VGV4dDoiJiN4QUI7IEx1bmEgcHJlY2VkZW50xIMiLG5leHRUZXh0OiJMdW5hIHVybcSDdG9hcmUgJiN4QkI7IixjdXJyZW50VGV4dDoiQXppIixtb250aE5hbWVzOlsiSWFudWFyaWUiLCJGZWJydWFyaWUiLCJNYXJ0aWUiLCJBcHJpbGllIiwiTWFpIiwiSXVuaWUiLCJJdWxpZSIsIkF1Z3VzdCIsIlNlcHRlbWJyaWUiLCJPY3RvbWJyaWUiLCJOb2llbWJyaWUiLCJEZWNlbWJyaWUiXSxtb250aE5hbWVzU2hvcnQ6WyJJYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYWkiLCJJdW4iLCJJdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSxkYXlOYW1lczpbIkR1bWluaWPEgyIsIkx1bmkiLCJNYXLFo2kiLCJNaWVyY3VyaSIsIkpvaSIsIlZpbmVyaSIsIlPDom1ixIN0xIMiXSxkYXlOYW1lc1Nob3J0OlsiRHVtIiwiTHVuIiwiTWFyIiwiTWllIiwiSm9pIiwiVmluIiwiU8OibSJdLGRheU5hbWVzTWluOlsiRHUiLCJMdSIsIk1hIiwiTWkiLCJKbyIsIlZpIiwiU8OiIl0sd2Vla0hlYWRlcjoiU8SDcHQiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygicm8iLHtidXR0b25UZXh0OntwcmV2OiJwcmVjZWRlbnTEgyIsbmV4dDoidXJtxIN0b2FyZSIsbW9udGg6Ikx1bsSDIix3ZWVrOiJTxINwdMSDbcOibsSDIixkYXk6IlppIixsaXN0OiJBZ2VuZMSDIn0sYWxsRGF5VGV4dDoiVG9hdMSDIHppdWEiLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGEpe3JldHVybiIrYWx0ZSAiK2F9fSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/ru.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYil7dmFyIGM9YS5zcGxpdCgiXyIpO3JldHVybiBiJTEwPT09MSYmYiUxMDAhPT0xMT9jWzBdOmIlMTA+PTImJjQ+PWIlMTAmJigxMD5iJTEwMHx8YiUxMDA+PTIwKT9jWzFdOmNbMl19ZnVuY3Rpb24gZChhLGIsZCl7dmFyIGU9e21tOmI/ItC80LjQvdGD0YLQsF/QvNC40L3Rg9GC0Ytf0LzQuNC90YPRgiI6ItC80LjQvdGD0YLRg1/QvNC40L3Rg9GC0Ytf0LzQuNC90YPRgiIsaGg6ItGH0LDRgV/Rh9Cw0YHQsF/Rh9Cw0YHQvtCyIixkZDoi0LTQtdC90Yxf0LTQvdGPX9C00L3QtdC5IixNTToi0LzQtdGB0Y/Rhl/QvNC10YHRj9GG0LBf0LzQtdGB0Y/RhtC10LIiLHl5OiLQs9C+0LRf0LPQvtC00LBf0LvQtdGCIn07cmV0dXJuIm0iPT09ZD9iPyLQvNC40L3Rg9GC0LAiOiLQvNC40L3Rg9GC0YMiOmErIiAiK2MoZVtkXSwrYSl9ZnVuY3Rpb24gZShhLGIpe3ZhciBjPXtub21pbmF0aXZlOiLRj9C90LLQsNGA0Yxf0YTQtdCy0YDQsNC70Yxf0LzQsNGA0YJf0LDQv9GA0LXQu9GMX9C80LDQuV/QuNGO0L3RjF/QuNGO0LvRjF/QsNCy0LPRg9GB0YJf0YHQtdC90YLRj9Cx0YDRjF/QvtC60YLRj9Cx0YDRjF/QvdC+0Y/QsdGA0Yxf0LTQtdC60LDQsdGA0YwiLnNwbGl0KCJfIiksYWNjdXNhdGl2ZToi0Y/QvdCy0LDRgNGPX9GE0LXQstGA0LDQu9GPX9C80LDRgNGC0LBf0LDQv9GA0LXQu9GPX9C80LDRj1/QuNGO0L3Rj1/QuNGO0LvRj1/QsNCy0LPRg9GB0YLQsF/RgdC10L3RgtGP0LHRgNGPX9C+0LrRgtGP0LHRgNGPX9C90L7Rj9Cx0YDRj1/QtNC10LrQsNCx0YDRjyIuc3BsaXQoIl8iKX0sZD0vRFtvRF0/KFxbW15cW1xdXSpcXXxccyspK01NTU0/Ly50ZXN0KGIpPyJhY2N1c2F0aXZlIjoibm9taW5hdGl2ZSI7cmV0dXJuIGNbZF1bYS5tb250aCgpXX1mdW5jdGlvbiBmKGEsYil7dmFyIGM9e25vbWluYXRpdmU6ItGP0L3Qsl/RhNC10LJf0LzQsNGA0YJf0LDQv9GAX9C80LDQuV/QuNGO0L3RjF/QuNGO0LvRjF/QsNCy0LNf0YHQtdC9X9C+0LrRgl/QvdC+0Y9f0LTQtdC6Ii5zcGxpdCgiXyIpLGFjY3VzYXRpdmU6ItGP0L3Qsl/RhNC10LJf0LzQsNGAX9Cw0L/RgF/QvNCw0Y9f0LjRjtC90Y9f0LjRjtC70Y9f0LDQstCzX9GB0LXQvV/QvtC60YJf0L3QvtGPX9C00LXQuiIuc3BsaXQoIl8iKX0sZD0vRFtvRF0/KFxbW15cW1xdXSpcXXxccyspK01NTU0/Ly50ZXN0KGIpPyJhY2N1c2F0aXZlIjoibm9taW5hdGl2ZSI7cmV0dXJuIGNbZF1bYS5tb250aCgpXX1mdW5jdGlvbiBnKGEsYil7dmFyIGM9e25vbWluYXRpdmU6ItCy0L7RgdC60YDQtdGB0LXQvdGM0LVf0L/QvtC90LXQtNC10LvRjNC90LjQul/QstGC0L7RgNC90LjQul/RgdGA0LXQtNCwX9GH0LXRgtCy0LXRgNCzX9C/0Y/RgtC90LjRhtCwX9GB0YPQsdCx0L7RgtCwIi5zcGxpdCgiXyIpLGFjY3VzYXRpdmU6ItCy0L7RgdC60YDQtdGB0LXQvdGM0LVf0L/QvtC90LXQtNC10LvRjNC90LjQul/QstGC0L7RgNC90LjQul/RgdGA0LXQtNGDX9GH0LXRgtCy0LXRgNCzX9C/0Y/RgtC90LjRhtGDX9GB0YPQsdCx0L7RgtGDIi5zcGxpdCgiXyIpfSxkPS9cWyA/W9CS0LJdID8oPzrQv9GA0L7RiNC70YPRjnzRgdC70LXQtNGD0Y7RidGD0Y580Y3RgtGDKT8gP1xdID9kZGRkLy50ZXN0KGIpPyJhY2N1c2F0aXZlIjoibm9taW5hdGl2ZSI7cmV0dXJuIGNbZF1bYS5kYXkoKV19KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwicnUiLHttb250aHM6ZSxtb250aHNTaG9ydDpmLHdlZWtkYXlzOmcsd2Vla2RheXNTaG9ydDoi0LLRgV/Qv9C9X9Cy0YJf0YHRgF/Rh9GCX9C/0YJf0YHQsSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi0LLRgV/Qv9C9X9Cy0YJf0YHRgF/Rh9GCX9C/0YJf0YHQsSIuc3BsaXQoIl8iKSxtb250aHNQYXJzZTpbL17Rj9C90LIvaSwvXtGE0LXQsi9pLC9e0LzQsNGAL2ksL17QsNC/0YAvaSwvXtC80LBb0Ll80Y9dL2ksL17QuNGO0L0vaSwvXtC40Y7Quy9pLC9e0LDQstCzL2ksL17RgdC10L0vaSwvXtC+0LrRgi9pLC9e0L3QvtGPL2ksL17QtNC10LovaV0sbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJMVDpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZINCzLiIsTExMOiJEIE1NTU0gWVlZWSDQsy4sIExUIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSDQsy4sIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvQodC10LPQvtC00L3RjyDQsl0gTFQiLG5leHREYXk6IlvQl9Cw0LLRgtGA0LAg0LJdIExUIixsYXN0RGF5OiJb0JLRh9C10YDQsCDQsl0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIDI9PT10aGlzLmRheSgpPyJb0JLQvl0gZGRkZCBb0LJdIExUIjoiW9CSXSBkZGRkIFvQsl0gTFQifSxsYXN0V2VlazpmdW5jdGlvbihhKXtpZihhLndlZWsoKT09PXRoaXMud2VlaygpKXJldHVybiAyPT09dGhpcy5kYXkoKT8iW9CS0L5dIGRkZGQgW9CyXSBMVCI6IlvQkl0gZGRkZCBb0LJdIExUIjtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJb0JIg0L/RgNC+0YjQu9C+0LVdIGRkZGQgW9CyXSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6cmV0dXJuIlvQkiDQv9GA0L7RiNC70YvQuV0gZGRkZCBb0LJdIExUIjtjYXNlIDM6Y2FzZSA1OmNhc2UgNjpyZXR1cm4iW9CSINC/0YDQvtGI0LvRg9GOXSBkZGRkIFvQsl0gTFQifX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi0YfQtdGA0LXQtyAlcyIscGFzdDoiJXMg0L3QsNC30LDQtCIsczoi0L3QtdGB0LrQvtC70YzQutC+INGB0LXQutGD0L3QtCIsbTpkLG1tOmQsaDoi0YfQsNGBIixoaDpkLGQ6ItC00LXQvdGMIixkZDpkLE06ItC80LXRgdGP0YYiLE1NOmQseToi0LPQvtC0Iix5eTpkfSxtZXJpZGllbVBhcnNlOi/QvdC+0YfQuHzRg9GC0YDQsHzQtNC90Y980LLQtdGH0LXRgNCwL2ksaXNQTTpmdW5jdGlvbihhKXtyZXR1cm4vXijQtNC90Y980LLQtdGH0LXRgNCwKSQvLnRlc3QoYSl9LG1lcmlkaWVtOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gND5hPyLQvdC+0YfQuCI6MTI+YT8i0YPRgtGA0LAiOjE3PmE/ItC00L3RjyI6ItCy0LXRh9C10YDQsCJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfS0o0Ll80LPQvnzRjykvLG9yZGluYWw6ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYil7Y2FzZSJNIjpjYXNlImQiOmNhc2UiREREIjpyZXR1cm4gYSsiLdC5IjtjYXNlIkQiOnJldHVybiBhKyIt0LPQviI7Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBhKyIt0Y8iO2RlZmF1bHQ6cmV0dXJuIGF9fSx3ZWVrOntkb3c6MSxkb3k6N319KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygicnUiLCJydSIse2Nsb3NlVGV4dDoi0JfQsNC60YDRi9GC0YwiLHByZXZUZXh0OiImI3gzQzvQn9GA0LXQtCIsbmV4dFRleHQ6ItCh0LvQtdC0JiN4M0U7IixjdXJyZW50VGV4dDoi0KHQtdCz0L7QtNC90Y8iLG1vbnRoTmFtZXM6WyLQr9C90LLQsNGA0YwiLCLQpNC10LLRgNCw0LvRjCIsItCc0LDRgNGCIiwi0JDQv9GA0LXQu9GMIiwi0JzQsNC5Iiwi0JjRjtC90YwiLCLQmNGO0LvRjCIsItCQ0LLQs9GD0YHRgiIsItCh0LXQvdGC0Y/QsdGA0YwiLCLQntC60YLRj9Cx0YDRjCIsItCd0L7Rj9Cx0YDRjCIsItCU0LXQutCw0LHRgNGMIl0sbW9udGhOYW1lc1Nob3J0Olsi0K/QvdCyIiwi0KTQtdCyIiwi0JzQsNGAIiwi0JDQv9GAIiwi0JzQsNC5Iiwi0JjRjtC9Iiwi0JjRjtC7Iiwi0JDQstCzIiwi0KHQtdC9Iiwi0J7QutGCIiwi0J3QvtGPIiwi0JTQtdC6Il0sZGF5TmFtZXM6WyLQstC+0YHQutGA0LXRgdC10L3RjNC1Iiwi0L/QvtC90LXQtNC10LvRjNC90LjQuiIsItCy0YLQvtGA0L3QuNC6Iiwi0YHRgNC10LTQsCIsItGH0LXRgtCy0LXRgNCzIiwi0L/Rj9GC0L3QuNGG0LAiLCLRgdGD0LHQsdC+0YLQsCJdLGRheU5hbWVzU2hvcnQ6WyLQstGB0LoiLCLQv9C90LQiLCLQstGC0YAiLCLRgdGA0LQiLCLRh9GC0LIiLCLQv9GC0L0iLCLRgdCx0YIiXSxkYXlOYW1lc01pbjpbItCS0YEiLCLQn9C9Iiwi0JLRgiIsItCh0YAiLCLQp9GCIiwi0J/RgiIsItCh0LEiXSx3ZWVrSGVhZGVyOiLQndC10LQiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygicnUiLHtidXR0b25UZXh0Onttb250aDoi0JzQtdGB0Y/RhiIsd2Vlazoi0J3QtdC00LXQu9GPIixkYXk6ItCU0LXQvdGMIixsaXN0OiLQn9C+0LLQtdGB0YLQutCwINC00L3RjyJ9LGFsbERheVRleHQ6ItCS0LXRgdGMINC00LXQvdGMIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4iKyDQtdGJ0ZEgIithfX0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/sk.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEpe3JldHVybiBhPjEmJjU+YX1mdW5jdGlvbiBkKGEsYixkLGUpe3ZhciBmPWErIiAiO3N3aXRjaChkKXtjYXNlInMiOnJldHVybiBifHxlPyJww6FyIHNla8O6bmQiOiJww6FyIHNla3VuZGFtaSI7Y2FzZSJtIjpyZXR1cm4gYj8ibWluw7p0YSI6ZT8ibWluw7p0dSI6Im1pbsO6dG91IjtjYXNlIm1tIjpyZXR1cm4gYnx8ZT9mKyhjKGEpPyJtaW7DunR5IjoibWluw7p0Iik6ZisibWluw7p0YW1pIjtjYXNlImgiOnJldHVybiBiPyJob2RpbmEiOmU/ImhvZGludSI6ImhvZGlub3UiO2Nhc2UiaGgiOnJldHVybiBifHxlP2YrKGMoYSk/ImhvZGlueSI6ImhvZMOtbiIpOmYrImhvZGluYW1pIjtjYXNlImQiOnJldHVybiBifHxlPyJkZcWIIjoiZMWIb20iO2Nhc2UiZGQiOnJldHVybiBifHxlP2YrKGMoYSk/ImRuaSI6ImRuw60iKTpmKyJkxYhhbWkiO2Nhc2UiTSI6cmV0dXJuIGJ8fGU/Im1lc2lhYyI6Im1lc2lhY29tIjtjYXNlIk1NIjpyZXR1cm4gYnx8ZT9mKyhjKGEpPyJtZXNpYWNlIjoibWVzaWFjb3YiKTpmKyJtZXNpYWNtaSI7Y2FzZSJ5IjpyZXR1cm4gYnx8ZT8icm9rIjoicm9rb20iO2Nhc2UieXkiOnJldHVybiBifHxlP2YrKGMoYSk/InJva3kiOiJyb2tvdiIpOmYrInJva21pIn19dmFyIGU9ImphbnXDoXJfZmVicnXDoXJfbWFyZWNfYXByw61sX23DoWpfasO6bl9qw7psX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0w7NiZXJfbm92ZW1iZXJfZGVjZW1iZXIiLnNwbGl0KCJfIiksZj0iamFuX2ZlYl9tYXJfYXByX23DoWpfasO6bl9qw7psX2F1Z19zZXBfb2t0X25vdl9kZWMiLnNwbGl0KCJfIik7KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwic2siLHttb250aHM6ZSxtb250aHNTaG9ydDpmLG1vbnRoc1BhcnNlOmZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXTtmb3IoYz0wOzEyPmM7YysrKWRbY109bmV3IFJlZ0V4cCgiXiIrYVtjXSsiJHxeIitiW2NdKyIkIiwiaSIpO3JldHVybiBkfShlLGYpLHdlZWtkYXlzOiJuZWRlxL5hX3BvbmRlbG9rX3V0b3Jva19zdHJlZGFfxaF0dnJ0b2tfcGlhdG9rX3NvYm90YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJuZV9wb191dF9zdF/FoXRfcGlfc28iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Im5lX3BvX3V0X3N0X8WhdF9waV9zbyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiTFQ6c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIExUIixMTExMOiJkZGRkIEQuIE1NTU0gWVlZWSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbZG5lcyBvXSBMVCIsbmV4dERheToiW3phanRyYSBvXSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbdiBuZWRlxL51IG9dIExUIjtjYXNlIDE6Y2FzZSAyOnJldHVybiJbdl0gZGRkZCBbb10gTFQiO2Nhc2UgMzpyZXR1cm4iW3Ygc3RyZWR1IG9dIExUIjtjYXNlIDQ6cmV0dXJuIlt2byDFoXR2cnRvayBvXSBMVCI7Y2FzZSA1OnJldHVybiJbdiBwaWF0b2sgb10gTFQiO2Nhc2UgNjpyZXR1cm4iW3Ygc29ib3R1IG9dIExUIn19LGxhc3REYXk6Ilt2xI1lcmEgb10gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW21pbnVsw7ogbmVkZcS+dSBvXSBMVCI7Y2FzZSAxOmNhc2UgMjpyZXR1cm4iW21pbnVsw71dIGRkZGQgW29dIExUIjtjYXNlIDM6cmV0dXJuIlttaW51bMO6IHN0cmVkdSBvXSBMVCI7Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW21pbnVsw71dIGRkZGQgW29dIExUIjtjYXNlIDY6cmV0dXJuIlttaW51bMO6IHNvYm90dSBvXSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJ6YSAlcyIscGFzdDoicHJlZCAlcyIsczpkLG06ZCxtbTpkLGg6ZCxoaDpkLGQ6ZCxkZDpkLE06ZCxNTTpkLHk6ZCx5eTpkfSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygic2siLCJzayIse2Nsb3NlVGV4dDoiWmF2cmllxaUiLHByZXZUZXh0OiImI3gzQztQcmVkY2jDoWR6YWrDumNpIixuZXh0VGV4dDoiTmFzbGVkdWrDumNpJiN4M0U7IixjdXJyZW50VGV4dDoiRG5lcyIsbW9udGhOYW1lczpbImphbnXDoXIiLCJmZWJydcOhciIsIm1hcmVjIiwiYXByw61sIiwibcOhaiIsImrDum4iLCJqw7psIiwiYXVndXN0Iiwic2VwdGVtYmVyIiwib2t0w7NiZXIiLCJub3ZlbWJlciIsImRlY2VtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTcOhaiIsIkrDum4iLCJKw7psIiwiQXVnIiwiU2VwIiwiT2t0IiwiTm92IiwiRGVjIl0sZGF5TmFtZXM6WyJuZWRlxL5hIiwicG9uZGVsb2siLCJ1dG9yb2siLCJzdHJlZGEiLCLFoXR2cnRvayIsInBpYXRvayIsInNvYm90YSJdLGRheU5hbWVzU2hvcnQ6WyJOZWQiLCJQb24iLCJVdG8iLCJTdHIiLCLFoHR2IiwiUGlhIiwiU29iIl0sZGF5TmFtZXNNaW46WyJOZSIsIlBvIiwiVXQiLCJTdCIsIsWgdCIsIlBpYSIsIlNvIl0sd2Vla0hlYWRlcjoiVHkiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygic2siLHtidXR0b25UZXh0Onttb250aDoiTWVzaWFjIix3ZWVrOiJUw73FvmRlxYgiLGRheToiRGXFiCIsbGlzdDoiUm96dnJoIn0sYWxsRGF5VGV4dDoiQ2Vsw70gZGXFiCIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIivEj2FsxaFpZTogIithfX0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/sl.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYixjKXt2YXIgZD1hKyIgIjtzd2l0Y2goYyl7Y2FzZSJtIjpyZXR1cm4gYj8iZW5hIG1pbnV0YSI6ImVubyBtaW51dG8iO2Nhc2UibW0iOnJldHVybiBkKz0xPT09YT8ibWludXRhIjoyPT09YT8ibWludXRpIjozPT09YXx8ND09PWE/Im1pbnV0ZSI6Im1pbnV0IjtjYXNlImgiOnJldHVybiBiPyJlbmEgdXJhIjoiZW5vIHVybyI7Y2FzZSJoaCI6cmV0dXJuIGQrPTE9PT1hPyJ1cmEiOjI9PT1hPyJ1cmkiOjM9PT1hfHw0PT09YT8idXJlIjoidXIiO2Nhc2UiZGQiOnJldHVybiBkKz0xPT09YT8iZGFuIjoiZG5pIjtjYXNlIk1NIjpyZXR1cm4gZCs9MT09PWE/Im1lc2VjIjoyPT09YT8ibWVzZWNhIjozPT09YXx8ND09PWE/Im1lc2VjZSI6Im1lc2VjZXYiO2Nhc2UieXkiOnJldHVybiBkKz0xPT09YT8ibGV0byI6Mj09PWE/ImxldGkiOjM9PT1hfHw0PT09YT8ibGV0YSI6ImxldCJ9fShiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsInNsIix7bW9udGhzOiJqYW51YXJfZmVicnVhcl9tYXJlY19hcHJpbF9tYWpfanVuaWpfanVsaWpfYXZndXN0X3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW4uX2ZlYi5fbWFyLl9hcHIuX21hai5fanVuLl9qdWwuX2F2Zy5fc2VwLl9va3QuX25vdi5fZGVjLiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoibmVkZWxqYV9wb25lZGVsamVrX3RvcmVrX3NyZWRhX8SNZXRydGVrX3BldGVrX3NvYm90YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJuZWQuX3Bvbi5fdG9yLl9zcmUuX8SNZXQuX3BldC5fc29iLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoibmVfcG9fdG9fc3JfxI1lX3BlX3NvIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJMVDpzcyIsTDoiREQuIE1NLiBZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBMVCIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltkYW5lcyBvYl0gTFQiLG5leHREYXk6IltqdXRyaSBvYl0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW3ZdIFtuZWRlbGpvXSBbb2JdIExUIjtjYXNlIDM6cmV0dXJuIlt2XSBbc3JlZG9dIFtvYl0gTFQiO2Nhc2UgNjpyZXR1cm4iW3ZdIFtzb2JvdG9dIFtvYl0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW3ZdIGRkZGQgW29iXSBMVCJ9fSxsYXN0RGF5OiJbdsSNZXJhaiBvYl0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpjYXNlIDM6Y2FzZSA2OnJldHVybiJbcHJlasWhbmphXSBkZGRkIFtvYl0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW3ByZWrFoW5qaV0gZGRkZCBbb2JdIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IsSNZXogJXMiLHBhc3Q6IiVzIG5hemFqIixzOiJuZWthaiBzZWt1bmQiLG06YyxtbTpjLGg6YyxoaDpjLGQ6ImVuIGRhbiIsZGQ6YyxNOiJlbiBtZXNlYyIsTU06Yyx5OiJlbm8gbGV0byIseXk6Y30sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95Ojd9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoInNsIiwic2wiLHtjbG9zZVRleHQ6IlphcHJpIixwcmV2VGV4dDoiJiN4M0M7UHJlasWhbmppIixuZXh0VGV4dDoiTmFzbGVkbmppJiN4M0U7IixjdXJyZW50VGV4dDoiVHJlbnV0bmkiLG1vbnRoTmFtZXM6WyJKYW51YXIiLCJGZWJydWFyIiwiTWFyZWMiLCJBcHJpbCIsIk1haiIsIkp1bmlqIiwiSnVsaWoiLCJBdmd1c3QiLCJTZXB0ZW1iZXIiLCJPa3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1haiIsIkp1biIsIkp1bCIsIkF2ZyIsIlNlcCIsIk9rdCIsIk5vdiIsIkRlYyJdLGRheU5hbWVzOlsiTmVkZWxqYSIsIlBvbmVkZWxqZWsiLCJUb3JlayIsIlNyZWRhIiwixIxldHJ0ZWsiLCJQZXRlayIsIlNvYm90YSJdLGRheU5hbWVzU2hvcnQ6WyJOZWQiLCJQb24iLCJUb3IiLCJTcmUiLCLEjGV0IiwiUGV0IiwiU29iIl0sZGF5TmFtZXNNaW46WyJOZSIsIlBvIiwiVG8iLCJTciIsIsSMZSIsIlBlIiwiU28iXSx3ZWVrSGVhZGVyOiJUZWRlbiIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJzbCIse2J1dHRvblRleHQ6e21vbnRoOiJNZXNlYyIsd2VlazoiVGVkZW4iLGRheToiRGFuIixsaXN0OiJEbmV2bmkgcmVkIn0sYWxsRGF5VGV4dDoiVmVzIGRhbiIsZXZlbnRMaW1pdFRleHQ6InZlxI0ifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/sr-cyrl.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXt2YXIgYz17d29yZHM6e206WyLRmNC10LTQsNC9INC80LjQvdGD0YIiLCLRmNC10LTQvdC1INC80LjQvdGD0YLQtSJdLG1tOlsi0LzQuNC90YPRgiIsItC80LjQvdGD0YLQtSIsItC80LjQvdGD0YLQsCJdLGg6WyLRmNC10LTQsNC9INGB0LDRgiIsItGY0LXQtNC90L7QsyDRgdCw0YLQsCJdLGhoOlsi0YHQsNGCIiwi0YHQsNGC0LAiLCLRgdCw0YLQuCJdLGRkOlsi0LTQsNC9Iiwi0LTQsNC90LAiLCLQtNCw0L3QsCJdLE1NOlsi0LzQtdGB0LXRhiIsItC80LXRgdC10YbQsCIsItC80LXRgdC10YbQuCJdLHl5Olsi0LPQvtC00LjQvdCwIiwi0LPQvtC00LjQvdC1Iiwi0LPQvtC00LjQvdCwIl19LGNvcnJlY3RHcmFtbWF0aWNhbENhc2U6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMT09PWE/YlswXTphPj0yJiY0Pj1hP2JbMV06YlsyXX0sdHJhbnNsYXRlOmZ1bmN0aW9uKGEsYixkKXt2YXIgZT1jLndvcmRzW2RdO3JldHVybiAxPT09ZC5sZW5ndGg/Yj9lWzBdOmVbMV06YSsiICIrYy5jb3JyZWN0R3JhbW1hdGljYWxDYXNlKGEsZSl9fTsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJzci1jeXJsIix7bW9udGhzOlsi0ZjQsNC90YPQsNGAIiwi0YTQtdCx0YDRg9Cw0YAiLCLQvNCw0YDRgiIsItCw0L/RgNC40LsiLCLQvNCw0ZgiLCLRmNGD0L0iLCLRmNGD0LsiLCLQsNCy0LPRg9GB0YIiLCLRgdC10L/RgtC10LzQsdCw0YAiLCLQvtC60YLQvtCx0LDRgCIsItC90L7QstC10LzQsdCw0YAiLCLQtNC10YbQtdC80LHQsNGAIl0sbW9udGhzU2hvcnQ6WyLRmNCw0L0uIiwi0YTQtdCxLiIsItC80LDRgC4iLCLQsNC/0YAuIiwi0LzQsNGYIiwi0ZjRg9C9Iiwi0ZjRg9C7Iiwi0LDQstCzLiIsItGB0LXQvy4iLCLQvtC60YIuIiwi0L3QvtCyLiIsItC00LXRhi4iXSx3ZWVrZGF5czpbItC90LXQtNC10ZnQsCIsItC/0L7QvdC10LTQtdGZ0LDQuiIsItGD0YLQvtGA0LDQuiIsItGB0YDQtdC00LAiLCLRh9C10YLQstGA0YLQsNC6Iiwi0L/QtdGC0LDQuiIsItGB0YPQsdC+0YLQsCJdLHdlZWtkYXlzU2hvcnQ6WyLQvdC10LQuIiwi0L/QvtC9LiIsItGD0YLQvi4iLCLRgdGA0LUuIiwi0YfQtdGCLiIsItC/0LXRgi4iLCLRgdGD0LEuIl0sd2Vla2RheXNNaW46WyLQvdC1Iiwi0L/QviIsItGD0YIiLCLRgdGAIiwi0YfQtSIsItC/0LUiLCLRgdGDIl0sbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6IkxUOnNzIixMOiJERC4gTU0uIFlZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIExUIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW9C00LDQvdCw0YEg0YNdIExUIixuZXh0RGF5OiJb0YHRg9GC0YDQsCDRg10gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW9GDXSBb0L3QtdC00LXRmdGDXSBb0YNdIExUIjtjYXNlIDM6cmV0dXJuIlvRg10gW9GB0YDQtdC00YNdIFvRg10gTFQiO2Nhc2UgNjpyZXR1cm4iW9GDXSBb0YHRg9Cx0L7RgtGDXSBb0YNdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIlvRg10gZGRkZCBb0YNdIExUIn19LGxhc3REYXk6IlvRmNGD0YfQtSDRg10gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7dmFyIGE9WyJb0L/RgNC+0YjQu9C1XSBb0L3QtdC00LXRmdC1XSBb0YNdIExUIiwiW9C/0YDQvtGI0LvQvtCzXSBb0L/QvtC90LXQtNC10ZnQutCwXSBb0YNdIExUIiwiW9C/0YDQvtGI0LvQvtCzXSBb0YPRgtC+0YDQutCwXSBb0YNdIExUIiwiW9C/0YDQvtGI0LvQtV0gW9GB0YDQtdC00LVdIFvRg10gTFQiLCJb0L/RgNC+0YjQu9C+0LNdIFvRh9C10YLQstGA0YLQutCwXSBb0YNdIExUIiwiW9C/0YDQvtGI0LvQvtCzXSBb0L/QtdGC0LrQsF0gW9GDXSBMVCIsIlvQv9GA0L7RiNC70LVdIFvRgdGD0LHQvtGC0LVdIFvRg10gTFQiXTtyZXR1cm4gYVt0aGlzLmRheSgpXX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi0LfQsCAlcyIscGFzdDoi0L/RgNC1ICVzIixzOiLQvdC10LrQvtC70LjQutC+INGB0LXQutGD0L3QtNC4IixtOmMudHJhbnNsYXRlLG1tOmMudHJhbnNsYXRlLGg6Yy50cmFuc2xhdGUsaGg6Yy50cmFuc2xhdGUsZDoi0LTQsNC9IixkZDpjLnRyYW5zbGF0ZSxNOiLQvNC10YHQtdGGIixNTTpjLnRyYW5zbGF0ZSx5OiLQs9C+0LTQuNC90YMiLHl5OmMudHJhbnNsYXRlfSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6N319KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygic3ItY3lybCIsInNyIix7Y2xvc2VUZXh0OiLQl9Cw0YLQstC+0YDQuCIscHJldlRleHQ6IiYjeDNDOyIsbmV4dFRleHQ6IiYjeDNFOyIsY3VycmVudFRleHQ6ItCU0LDQvdCw0YEiLG1vbnRoTmFtZXM6WyLQiNCw0L3Rg9Cw0YAiLCLQpNC10LHRgNGD0LDRgCIsItCc0LDRgNGCIiwi0JDQv9GA0LjQuyIsItCc0LDRmCIsItCI0YPQvSIsItCI0YPQuyIsItCQ0LLQs9GD0YHRgiIsItCh0LXQv9GC0LXQvNCx0LDRgCIsItCe0LrRgtC+0LHQsNGAIiwi0J3QvtCy0LXQvNCx0LDRgCIsItCU0LXRhtC10LzQsdCw0YAiXSxtb250aE5hbWVzU2hvcnQ6WyLQiNCw0L0iLCLQpNC10LEiLCLQnNCw0YAiLCLQkNC/0YAiLCLQnNCw0ZgiLCLQiNGD0L0iLCLQiNGD0LsiLCLQkNCy0LMiLCLQodC10L8iLCLQntC60YIiLCLQndC+0LIiLCLQlNC10YYiXSxkYXlOYW1lczpbItCd0LXQtNC10ZnQsCIsItCf0L7QvdC10LTQtdGZ0LDQuiIsItCj0YLQvtGA0LDQuiIsItCh0YDQtdC00LAiLCLQp9C10YLQstGA0YLQsNC6Iiwi0J/QtdGC0LDQuiIsItCh0YPQsdC+0YLQsCJdLGRheU5hbWVzU2hvcnQ6WyLQndC10LQiLCLQn9C+0L0iLCLQo9GC0L4iLCLQodGA0LUiLCLQp9C10YIiLCLQn9C10YIiLCLQodGD0LEiXSxkYXlOYW1lc01pbjpbItCd0LUiLCLQn9C+Iiwi0KPRgiIsItCh0YAiLCLQp9C1Iiwi0J/QtSIsItCh0YMiXSx3ZWVrSGVhZGVyOiLQodC10LQiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygic3ItY3lybCIse2J1dHRvblRleHQ6e21vbnRoOiLQnNC10YHQtdGGIix3ZWVrOiLQndC10LTQtdGZ0LAiLGRheToi0JTQsNC9IixsaXN0OiLQn9C70LDQvdC10YAifSxhbGxEYXlUZXh0OiLQptC10L4g0LTQsNC9IixldmVudExpbWl0VGV4dDpmdW5jdGlvbihhKXtyZXR1cm4iKyDRmNC+0YggIithfX0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/sr.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXt2YXIgYz17d29yZHM6e206WyJqZWRhbiBtaW51dCIsImplZG5lIG1pbnV0ZSJdLG1tOlsibWludXQiLCJtaW51dGUiLCJtaW51dGEiXSxoOlsiamVkYW4gc2F0IiwiamVkbm9nIHNhdGEiXSxoaDpbInNhdCIsInNhdGEiLCJzYXRpIl0sZGQ6WyJkYW4iLCJkYW5hIiwiZGFuYSJdLE1NOlsibWVzZWMiLCJtZXNlY2EiLCJtZXNlY2kiXSx5eTpbImdvZGluYSIsImdvZGluZSIsImdvZGluYSJdfSxjb3JyZWN0R3JhbW1hdGljYWxDYXNlOmZ1bmN0aW9uKGEsYil7cmV0dXJuIDE9PT1hP2JbMF06YT49MiYmND49YT9iWzFdOmJbMl19LHRyYW5zbGF0ZTpmdW5jdGlvbihhLGIsZCl7dmFyIGU9Yy53b3Jkc1tkXTtyZXR1cm4gMT09PWQubGVuZ3RoP2I/ZVswXTplWzFdOmErIiAiK2MuY29ycmVjdEdyYW1tYXRpY2FsQ2FzZShhLGUpfX07KGIuZGVmaW5lTG9jYWxlfHxiLmxhbmcpLmNhbGwoYiwic3IiLHttb250aHM6WyJqYW51YXIiLCJmZWJydWFyIiwibWFydCIsImFwcmlsIiwibWFqIiwianVuIiwianVsIiwiYXZndXN0Iiwic2VwdGVtYmFyIiwib2t0b2JhciIsIm5vdmVtYmFyIiwiZGVjZW1iYXIiXSxtb250aHNTaG9ydDpbImphbi4iLCJmZWIuIiwibWFyLiIsImFwci4iLCJtYWoiLCJqdW4iLCJqdWwiLCJhdmcuIiwic2VwLiIsIm9rdC4iLCJub3YuIiwiZGVjLiJdLHdlZWtkYXlzOlsibmVkZWxqYSIsInBvbmVkZWxqYWsiLCJ1dG9yYWsiLCJzcmVkYSIsIsSNZXR2cnRhayIsInBldGFrIiwic3Vib3RhIl0sd2Vla2RheXNTaG9ydDpbIm5lZC4iLCJwb24uIiwidXRvLiIsInNyZS4iLCLEjWV0LiIsInBldC4iLCJzdWIuIl0sd2Vla2RheXNNaW46WyJuZSIsInBvIiwidXQiLCJzciIsIsSNZSIsInBlIiwic3UiXSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiTFQ6c3MiLEw6IkRELiBNTS4gWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQsIEQuIE1NTU0gWVlZWSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbZGFuYXMgdV0gTFQiLG5leHREYXk6IltzdXRyYSB1XSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbdV0gW25lZGVsanVdIFt1XSBMVCI7Y2FzZSAzOnJldHVybiJbdV0gW3NyZWR1XSBbdV0gTFQiO2Nhc2UgNjpyZXR1cm4iW3VdIFtzdWJvdHVdIFt1XSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA1OnJldHVybiJbdV0gZGRkZCBbdV0gTFQifX0sbGFzdERheToiW2p1xI1lIHVdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3ZhciBhPVsiW3Byb8WhbGVdIFtuZWRlbGplXSBbdV0gTFQiLCJbcHJvxaFsb2ddIFtwb25lZGVsamthXSBbdV0gTFQiLCJbcHJvxaFsb2ddIFt1dG9ya2FdIFt1XSBMVCIsIltwcm/FoWxlXSBbc3JlZGVdIFt1XSBMVCIsIltwcm/FoWxvZ10gW8SNZXR2cnRrYV0gW3VdIExUIiwiW3Byb8WhbG9nXSBbcGV0a2FdIFt1XSBMVCIsIltwcm/FoWxlXSBbc3Vib3RlXSBbdV0gTFQiXTtyZXR1cm4gYVt0aGlzLmRheSgpXX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiemEgJXMiLHBhc3Q6InByZSAlcyIsczoibmVrb2xpa28gc2VrdW5kaSIsbTpjLnRyYW5zbGF0ZSxtbTpjLnRyYW5zbGF0ZSxoOmMudHJhbnNsYXRlLGhoOmMudHJhbnNsYXRlLGQ6ImRhbiIsZGQ6Yy50cmFuc2xhdGUsTToibWVzZWMiLE1NOmMudHJhbnNsYXRlLHk6ImdvZGludSIseXk6Yy50cmFuc2xhdGV9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo3fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJzciIsInNyIix7Y2xvc2VUZXh0OiLQl9Cw0YLQstC+0YDQuCIscHJldlRleHQ6IiYjeDNDOyIsbmV4dFRleHQ6IiYjeDNFOyIsY3VycmVudFRleHQ6ItCU0LDQvdCw0YEiLG1vbnRoTmFtZXM6WyLQiNCw0L3Rg9Cw0YAiLCLQpNC10LHRgNGD0LDRgCIsItCc0LDRgNGCIiwi0JDQv9GA0LjQuyIsItCc0LDRmCIsItCI0YPQvSIsItCI0YPQuyIsItCQ0LLQs9GD0YHRgiIsItCh0LXQv9GC0LXQvNCx0LDRgCIsItCe0LrRgtC+0LHQsNGAIiwi0J3QvtCy0LXQvNCx0LDRgCIsItCU0LXRhtC10LzQsdCw0YAiXSxtb250aE5hbWVzU2hvcnQ6WyLQiNCw0L0iLCLQpNC10LEiLCLQnNCw0YAiLCLQkNC/0YAiLCLQnNCw0ZgiLCLQiNGD0L0iLCLQiNGD0LsiLCLQkNCy0LMiLCLQodC10L8iLCLQntC60YIiLCLQndC+0LIiLCLQlNC10YYiXSxkYXlOYW1lczpbItCd0LXQtNC10ZnQsCIsItCf0L7QvdC10LTQtdGZ0LDQuiIsItCj0YLQvtGA0LDQuiIsItCh0YDQtdC00LAiLCLQp9C10YLQstGA0YLQsNC6Iiwi0J/QtdGC0LDQuiIsItCh0YPQsdC+0YLQsCJdLGRheU5hbWVzU2hvcnQ6WyLQndC10LQiLCLQn9C+0L0iLCLQo9GC0L4iLCLQodGA0LUiLCLQp9C10YIiLCLQn9C10YIiLCLQodGD0LEiXSxkYXlOYW1lc01pbjpbItCd0LUiLCLQn9C+Iiwi0KPRgiIsItCh0YAiLCLQp9C1Iiwi0J/QtSIsItCh0YMiXSx3ZWVrSGVhZGVyOiLQodC10LQiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygic3IiLHtidXR0b25UZXh0Onttb250aDoi0JzQtdGB0LXRhiIsd2Vlazoi0J3QtdC00LXRmdCwIixkYXk6ItCU0LDQvSIsbGlzdDoi0J/Qu9Cw0L3QtdGAIn0sYWxsRGF5VGV4dDoi0KbQtdC+INC00LDQvSIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIisg0ZjQvtGIICIrYX19KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/sv.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJzdiIse21vbnRoczoiamFudWFyaV9mZWJydWFyaV9tYXJzX2FwcmlsX21hal9qdW5pX2p1bGlfYXVndXN0aV9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2ZlYl9tYXJfYXByX21hal9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6InPDtm5kYWdfbcOlbmRhZ190aXNkYWdfb25zZGFnX3RvcnNkYWdfZnJlZGFnX2zDtnJkYWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoic8O2bl9tw6VuX3Rpc19vbnNfdG9yX2ZyZV9sw7ZyIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJzw7ZfbcOlX3RpX29uX3RvX2ZyX2zDtiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkxUOnNzIixMOiJZWVlZLU1NLUREIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgTFQiLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgTFQifSxjYWxlbmRhcjp7c2FtZURheToiW0lkYWddIExUIixuZXh0RGF5OiJbSW1vcmdvbl0gTFQiLGxhc3REYXk6IltJZ8Olcl0gTFQiLG5leHRXZWVrOiJkZGRkIExUIixsYXN0V2VlazoiW0bDtnJyYV0gZGRkZFtlbl0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im9tICVzIixwYXN0OiJmw7ZyICVzIHNlZGFuIixzOiJuw6VncmEgc2VrdW5kZXIiLG06ImVuIG1pbnV0IixtbToiJWQgbWludXRlciIsaDoiZW4gdGltbWUiLGhoOiIlZCB0aW1tYXIiLGQ6ImVuIGRhZyIsZGQ6IiVkIGRhZ2FyIixNOiJlbiBtw6VuYWQiLE1NOiIlZCBtw6VuYWRlciIseToiZXR0IMOlciIseXk6IiVkIMOlciJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfShlfGEpLyxvcmRpbmFsOmZ1bmN0aW9uKGEpe3ZhciBiPWElMTAsYz0xPT09fn4oYSUxMDAvMTApPyJlIjoxPT09Yj8iYSI6Mj09PWI/ImEiOiJlIjtyZXR1cm4gYStjfSx3ZWVrOntkb3c6MSxkb3k6NH19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygic3YiLCJzdiIse2Nsb3NlVGV4dDoiU3TDpG5nIixwcmV2VGV4dDoiJiN4QUI7RsO2cnJhIixuZXh0VGV4dDoiTsOkc3RhJiN4QkI7IixjdXJyZW50VGV4dDoiSWRhZyIsbW9udGhOYW1lczpbIkphbnVhcmkiLCJGZWJydWFyaSIsIk1hcnMiLCJBcHJpbCIsIk1haiIsIkp1bmkiLCJKdWxpIiwiQXVndXN0aSIsIlNlcHRlbWJlciIsIk9rdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWFqIiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2t0IiwiTm92IiwiRGVjIl0sZGF5TmFtZXNTaG9ydDpbIlPDtm4iLCJNw6VuIiwiVGlzIiwiT25zIiwiVG9yIiwiRnJlIiwiTMO2ciJdLGRheU5hbWVzOlsiU8O2bmRhZyIsIk3DpW5kYWciLCJUaXNkYWciLCJPbnNkYWciLCJUb3JzZGFnIiwiRnJlZGFnIiwiTMO2cmRhZyJdLGRheU5hbWVzTWluOlsiU8O2IiwiTcOlIiwiVGkiLCJPbiIsIlRvIiwiRnIiLCJMw7YiXSx3ZWVrSGVhZGVyOiJWZSIsZGF0ZUZvcm1hdDoieXktbW0tZGQiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJzdiIse2J1dHRvblRleHQ6e21vbnRoOiJNw6VuYWQiLHdlZWs6IlZlY2thIixkYXk6IkRhZyIsbGlzdDoiUHJvZ3JhbSJ9LGFsbERheVRleHQ6IkhlbGRhZyIsZXZlbnRMaW1pdFRleHQ6InRpbGwifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/th.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJ0aCIse21vbnRoczoi4Lih4LiB4Lij4Liy4LiE4LihX+C4geC4uOC4oeC4oOC4suC4nuC4seC4meC4mOC5jF/guKHguLXguJnguLLguITguKFf4LmA4Lih4Lip4Liy4Lii4LiZX+C4nuC4pOC4qeC4oOC4suC4hOC4oV/guKHguLTguJbguLjguJnguLLguKLguJlf4LiB4Lij4LiB4LiO4Liy4LiE4LihX+C4quC4tOC4h+C4q+C4suC4hOC4oV/guIHguLHguJnguKLguLLguKLguJlf4LiV4Li44Lil4Liy4LiE4LihX+C4nuC4pOC4qOC4iOC4tOC4geC4suC4ouC4mV/guJjguLHguJnguKfguLLguITguKEiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IuC4oeC4geC4o+C4sl/guIHguLjguKHguKDguLJf4Lih4Li14LiZ4LiyX+C5gOC4oeC4qeC4sl/guJ7guKTguKnguKDguLJf4Lih4Li04LiW4Li44LiZ4LiyX+C4geC4o+C4geC4juC4sl/guKrguLTguIfguKvguLJf4LiB4Lix4LiZ4Lii4LiyX+C4leC4uOC4peC4sl/guJ7guKTguKjguIjguLTguIHguLJf4LiY4Lix4LiZ4Lin4LiyIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiLguK3guLLguJfguLTguJXguKLguYxf4LiI4Lix4LiZ4LiX4Lij4LmMX+C4reC4seC4h+C4hOC4suC4o1/guJ7guLjguJhf4Lie4Lik4Lir4Lix4Liq4Lia4LiU4Li1X+C4qOC4uOC4geC4o+C5jF/guYDguKrguLLguKPguYwiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi4Lit4Liy4LiX4Li04LiV4Lii4LmMX+C4iOC4seC4meC4l+C4o+C5jF/guK3guLHguIfguITguLLguKNf4Lie4Li44LiYX+C4nuC4pOC4q+C4seC4ql/guKjguLjguIHguKPguYxf4LmA4Liq4Liy4Lij4LmMIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLguK3guLIuX+C4iC5f4LitLl/guJ4uX+C4nuC4pC5f4LioLl/guKouIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSCDguJnguLLguKzguLTguIHguLIgbSDguJnguLLguJfguLUiLExUUzoiTFQgcyDguKfguLTguJnguLLguJfguLUiLEw6IllZWVkvTU0vREQiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSDguYDguKfguKXguLIgTFQiLExMTEw6IuC4p+C4seC4mWRkZGTguJfguLXguYggRCBNTU1NIFlZWVkg4LmA4Lin4Lil4LiyIExUIn0sbWVyaWRpZW1QYXJzZTov4LiB4LmI4Lit4LiZ4LmA4LiX4Li14LmI4Lii4LiHfOC4q+C4peC4seC4h+C5gOC4l+C4teC5iOC4ouC4hy8saXNQTTpmdW5jdGlvbihhKXtyZXR1cm4i4Lir4Lil4Lix4LiH4LmA4LiX4Li14LmI4Lii4LiHIj09PWF9LG1lcmlkaWVtOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMTI+YT8i4LiB4LmI4Lit4LiZ4LmA4LiX4Li14LmI4Lii4LiHIjoi4Lir4Lil4Lix4LiH4LmA4LiX4Li14LmI4Lii4LiHIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvguKfguLHguJnguJnguLXguYkg4LmA4Lin4Lil4LiyXSBMVCIsbmV4dERheToiW+C4nuC4o+C4uOC5iOC4h+C4meC4teC5iSDguYDguKfguKXguLJdIExUIixuZXh0V2VlazoiZGRkZFvguKvguJnguYnguLIg4LmA4Lin4Lil4LiyXSBMVCIsbGFzdERheToiW+C5gOC4oeC4t+C5iOC4reC4p+C4suC4meC4meC4teC5iSDguYDguKfguKXguLJdIExUIixsYXN0V2VlazoiW+C4p+C4seC4mV1kZGRkW+C4l+C4teC5iOC5geC4peC5ieC4pyDguYDguKfguKXguLJdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLguK3guLXguIEgJXMiLHBhc3Q6IiVz4LiX4Li14LmI4LmB4Lil4LmJ4LinIixzOiLguYTguKHguYjguIHguLXguYjguKfguLTguJnguLLguJfguLUiLG06IjEg4LiZ4Liy4LiX4Li1IixtbToiJWQg4LiZ4Liy4LiX4Li1IixoOiIxIOC4iuC4seC5iOC4p+C5guC4oeC4hyIsaGg6IiVkIOC4iuC4seC5iOC4p+C5guC4oeC4hyIsZDoiMSDguKfguLHguJkiLGRkOiIlZCDguKfguLHguJkiLE06IjEg4LmA4LiU4Li34Lit4LiZIixNTToiJWQg4LmA4LiU4Li34Lit4LiZIix5OiIxIOC4m+C4tSIseXk6IiVkIOC4m+C4tSJ9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoInRoIiwidGgiLHtjbG9zZVRleHQ6IuC4m+C4tOC4lCIscHJldlRleHQ6IiYjeEFCOyYjeEEwO+C4ouC5ieC4reC4mSIsbmV4dFRleHQ6IuC4luC4seC4lOC5hOC4myYjeEEwOyYjeEJCOyIsY3VycmVudFRleHQ6IuC4p+C4seC4meC4meC4teC5iSIsbW9udGhOYW1lczpbIuC4oeC4geC4o+C4suC4hOC4oSIsIuC4geC4uOC4oeC4oOC4suC4nuC4seC4meC4mOC5jCIsIuC4oeC4teC4meC4suC4hOC4oSIsIuC5gOC4oeC4qeC4suC4ouC4mSIsIuC4nuC4pOC4qeC4oOC4suC4hOC4oSIsIuC4oeC4tOC4luC4uOC4meC4suC4ouC4mSIsIuC4geC4o+C4geC4juC4suC4hOC4oSIsIuC4quC4tOC4h+C4q+C4suC4hOC4oSIsIuC4geC4seC4meC4ouC4suC4ouC4mSIsIuC4leC4uOC4peC4suC4hOC4oSIsIuC4nuC4pOC4qOC4iOC4tOC4geC4suC4ouC4mSIsIuC4mOC4seC4meC4p+C4suC4hOC4oSJdLG1vbnRoTmFtZXNTaG9ydDpbIuC4oS7guIQuIiwi4LiBLuC4ni4iLCLguKHguLUu4LiELiIsIuC5gOC4oS7guKIuIiwi4LieLuC4hC4iLCLguKHguLQu4LiiLiIsIuC4gS7guIQuIiwi4LiqLuC4hC4iLCLguIEu4LiiLiIsIuC4lS7guIQuIiwi4LieLuC4oi4iLCLguJgu4LiELiJdLGRheU5hbWVzOlsi4Lit4Liy4LiX4Li04LiV4Lii4LmMIiwi4LiI4Lix4LiZ4LiX4Lij4LmMIiwi4Lit4Lix4LiH4LiE4Liy4LijIiwi4Lie4Li44LiYIiwi4Lie4Lik4Lir4Lix4Liq4Lia4LiU4Li1Iiwi4Lio4Li44LiB4Lij4LmMIiwi4LmA4Liq4Liy4Lij4LmMIl0sZGF5TmFtZXNTaG9ydDpbIuC4reC4si4iLCLguIguIiwi4LitLiIsIuC4ni4iLCLguJ7guKQuIiwi4LioLiIsIuC4qi4iXSxkYXlOYW1lc01pbjpbIuC4reC4si4iLCLguIguIiwi4LitLiIsIuC4ni4iLCLguJ7guKQuIiwi4LioLiIsIuC4qi4iXSx3ZWVrSGVhZGVyOiJXayIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjAsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJ0aCIse2J1dHRvblRleHQ6e21vbnRoOiLguYDguJTguLfguK3guJkiLHdlZWs6IuC4quC4seC4m+C4lOC4suC4q+C5jCIsZGF5OiLguKfguLHguJkiLGxpc3Q6IuC5geC4nOC4meC4h+C4suC4mSJ9LGFsbERheVRleHQ6IuC4leC4peC4reC4lOC4p+C4seC4mSIsZXZlbnRMaW1pdFRleHQ6IuC5gOC4nuC4tOC5iOC4oeC5gOC4leC4tOC4oSJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/tr.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXt2YXIgYz17MToiJ2luY2kiLDU6IidpbmNpIiw4OiInaW5jaSIsNzA6IidpbmNpIiw4MDoiJ2luY2kiLDI6IiduY2kiLDc6IiduY2kiLDIwOiInbmNpIiw1MDoiJ25jaSIsMzoiJ8O8bmPDvCIsNDoiJ8O8bmPDvCIsMTAwOiInw7xuY8O8Iiw2OiInbmPEsSIsOToiJ3VuY3UiLDEwOiIndW5jdSIsMzA6Iid1bmN1Iiw2MDoiJ8SxbmPEsSIsOTA6IifEsW5jxLEifTsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJ0ciIse21vbnRoczoiT2Nha1/FnnViYXRfTWFydF9OaXNhbl9NYXnEsXNfSGF6aXJhbl9UZW1tdXpfQcSfdXN0b3NfRXlsw7xsX0VraW1fS2FzxLFtX0FyYWzEsWsiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ik9jYV/FnnViX01hcl9OaXNfTWF5X0hhel9UZW1fQcSfdV9FeWxfRWtpX0thc19BcmEiLnNwbGl0KCJfIiksd2Vla2RheXM6IlBhemFyX1BhemFydGVzaV9TYWzEsV/Dh2FyxZ9hbWJhX1BlcsWfZW1iZV9DdW1hX0N1bWFydGVzaSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJQYXpfUHRzX1NhbF/Dh2FyX1Blcl9DdW1fQ3RzIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJQel9QdF9TYV/Dh2FfUGVfQ3VfQ3QiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJMVDpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIExUIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbYnVnw7xuIHNhYXRdIExUIixuZXh0RGF5OiJbeWFyxLFuIHNhYXRdIExUIixuZXh0V2VlazoiW2hhZnRheWFdIGRkZGQgW3NhYXRdIExUIixsYXN0RGF5OiJbZMO8bl0gTFQiLGxhc3RXZWVrOiJbZ2XDp2VuIGhhZnRhXSBkZGRkIFtzYWF0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgc29ucmEiLHBhc3Q6IiVzIMO2bmNlIixzOiJiaXJrYcOnIHNhbml5ZSIsbToiYmlyIGRha2lrYSIsbW06IiVkIGRha2lrYSIsaDoiYmlyIHNhYXQiLGhoOiIlZCBzYWF0IixkOiJiaXIgZ8O8biIsZGQ6IiVkIGfDvG4iLE06ImJpciBheSIsTU06IiVkIGF5Iix5OiJiaXIgecSxbCIseXk6IiVkIHnEsWwifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0nKGluY2l8bmNpfMO8bmPDvHxuY8SxfHVuY3V8xLFuY8SxKS8sb3JkaW5hbDpmdW5jdGlvbihhKXtpZigwPT09YSlyZXR1cm4gYSsiJ8SxbmPEsSI7dmFyIGI9YSUxMCxkPWElMTAwLWIsZT1hPj0xMDA/MTAwOm51bGw7cmV0dXJuIGErKGNbYl18fGNbZF18fGNbZV0pfSx3ZWVrOntkb3c6MSxkb3k6N319KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygidHIiLCJ0ciIse2Nsb3NlVGV4dDoia2FwYXQiLHByZXZUZXh0OiImI3gzQztnZXJpIixuZXh0VGV4dDoiaWxlcmkmI3gzZSIsY3VycmVudFRleHQ6ImJ1Z8O8biIsbW9udGhOYW1lczpbIk9jYWsiLCLFnnViYXQiLCJNYXJ0IiwiTmlzYW4iLCJNYXnEsXMiLCJIYXppcmFuIiwiVGVtbXV6IiwiQcSfdXN0b3MiLCJFeWzDvGwiLCJFa2ltIiwiS2FzxLFtIiwiQXJhbMSxayJdLG1vbnRoTmFtZXNTaG9ydDpbIk9jYSIsIsWedWIiLCJNYXIiLCJOaXMiLCJNYXkiLCJIYXoiLCJUZW0iLCJBxJ91IiwiRXlsIiwiRWtpIiwiS2FzIiwiQXJhIl0sZGF5TmFtZXM6WyJQYXphciIsIlBhemFydGVzaSIsIlNhbMSxIiwiw4dhcsWfYW1iYSIsIlBlcsWfZW1iZSIsIkN1bWEiLCJDdW1hcnRlc2kiXSxkYXlOYW1lc1Nob3J0OlsiUHoiLCJQdCIsIlNhIiwiw4dhIiwiUGUiLCJDdSIsIkN0Il0sZGF5TmFtZXNNaW46WyJQeiIsIlB0IiwiU2EiLCLDh2EiLCJQZSIsIkN1IiwiQ3QiXSx3ZWVrSGVhZGVyOiJIZiIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJ0ciIse2J1dHRvblRleHQ6e25leHQ6ImlsZXJpIixtb250aDoiQXkiLHdlZWs6IkhhZnRhIixkYXk6IkfDvG4iLGxpc3Q6IkFqYW5kYSJ9LGFsbERheVRleHQ6IlTDvG0gZ8O8biIsZXZlbnRMaW1pdFRleHQ6ImRhaGEgZmF6bGEifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/uk.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYil7dmFyIGM9YS5zcGxpdCgiXyIpO3JldHVybiBiJTEwPT09MSYmYiUxMDAhPT0xMT9jWzBdOmIlMTA+PTImJjQ+PWIlMTAmJigxMD5iJTEwMHx8YiUxMDA+PTIwKT9jWzFdOmNbMl19ZnVuY3Rpb24gZChhLGIsZCl7dmFyIGU9e21tOiLRhdCy0LjQu9C40L3QsF/RhdCy0LjQu9C40L3QuF/RhdCy0LjQu9C40L0iLGhoOiLQs9C+0LTQuNC90LBf0LPQvtC00LjQvdC4X9Cz0L7QtNC40L0iLGRkOiLQtNC10L3RjF/QtNC90ZZf0LTQvdGW0LIiLE1NOiLQvNGW0YHRj9GG0Yxf0LzRltGB0Y/RhtGWX9C80ZbRgdGP0YbRltCyIix5eToi0YDRltC6X9GA0L7QutC4X9GA0L7QutGW0LIifTtyZXR1cm4ibSI9PT1kP2I/ItGF0LLQuNC70LjQvdCwIjoi0YXQstC40LvQuNC90YMiOiJoIj09PWQ/Yj8i0LPQvtC00LjQvdCwIjoi0LPQvtC00LjQvdGDIjphKyIgIitjKGVbZF0sK2EpfWZ1bmN0aW9uIGUoYSxiKXt2YXIgYz17bm9taW5hdGl2ZToi0YHRltGH0LXQvdGMX9C70Y7RgtC40Llf0LHQtdGA0LXQt9C10L3RjF/QutCy0ZbRgtC10L3RjF/RgtGA0LDQstC10L3RjF/Rh9C10YDQstC10L3RjF/Qu9C40L/QtdC90Yxf0YHQtdGA0L/QtdC90Yxf0LLQtdGA0LXRgdC10L3RjF/QttC+0LLRgtC10L3RjF/Qu9C40YHRgtC+0L/QsNC0X9Cz0YDRg9C00LXQvdGMIi5zcGxpdCgiXyIpLGFjY3VzYXRpdmU6ItGB0ZbRh9C90Y9f0LvRjtGC0L7Qs9C+X9Cx0LXRgNC10LfQvdGPX9C60LLRltGC0L3Rj1/RgtGA0LDQstC90Y9f0YfQtdGA0LLQvdGPX9C70LjQv9C90Y9f0YHQtdGA0L/QvdGPX9Cy0LXRgNC10YHQvdGPX9C20L7QstGC0L3Rj1/Qu9C40YHRgtC+0L/QsNC00LBf0LPRgNGD0LTQvdGPIi5zcGxpdCgiXyIpfSxkPS9EW29EXT8gKk1NTU0/Ly50ZXN0KGIpPyJhY2N1c2F0aXZlIjoibm9taW5hdGl2ZSI7cmV0dXJuIGNbZF1bYS5tb250aCgpXX1mdW5jdGlvbiBmKGEsYil7dmFyIGM9e25vbWluYXRpdmU6ItC90LXQtNGW0LvRj1/Qv9C+0L3QtdC00ZbQu9C+0Lpf0LLRltCy0YLQvtGA0L7Qul/RgdC10YDQtdC00LBf0YfQtdGC0LLQtdGAX9C/4oCZ0Y/RgtC90LjRhtGPX9GB0YPQsdC+0YLQsCIuc3BsaXQoIl8iKSxhY2N1c2F0aXZlOiLQvdC10LTRltC70Y5f0L/QvtC90LXQtNGW0LvQvtC6X9Cy0ZbQstGC0L7RgNC+0Lpf0YHQtdGA0LXQtNGDX9GH0LXRgtCy0LXRgF/Qv+KAmdGP0YLQvdC40YbRjl/RgdGD0LHQvtGC0YMiLnNwbGl0KCJfIiksZ2VuaXRpdmU6ItC90LXQtNGW0LvRll/Qv9C+0L3QtdC00ZbQu9C60LBf0LLRltCy0YLQvtGA0LrQsF/RgdC10YDQtdC00Lhf0YfQtdGC0LLQtdGA0LPQsF/Qv+KAmdGP0YLQvdC40YbRll/RgdGD0LHQvtGC0LgiLnNwbGl0KCJfIil9LGQ9LyhcW1vQktCy0KPRg11cXSkgP2RkZGQvLnRlc3QoYik/ImFjY3VzYXRpdmUiOi9cWz8oPzrQvNC40L3Rg9C70L7Rl3zQvdCw0YHRgtGD0L/QvdC+0ZcpPyA/XF0gP2RkZGQvLnRlc3QoYik/Imdlbml0aXZlIjoibm9taW5hdGl2ZSI7cmV0dXJuIGNbZF1bYS5kYXkoKV19ZnVuY3Rpb24gZyhhKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYSsi0L4iKygxMT09PXRoaXMuaG91cnMoKT8i0LEiOiIiKSsiXSBMVCJ9fShiLmRlZmluZUxvY2FsZXx8Yi5sYW5nKS5jYWxsKGIsInVrIix7bW9udGhzOmUsbW9udGhzU2hvcnQ6ItGB0ZbRh1/Qu9GO0YJf0LHQtdGAX9C60LLRltGCX9GC0YDQsNCyX9GH0LXRgNCyX9C70LjQv1/RgdC10YDQv1/QstC10YBf0LbQvtCy0YJf0LvQuNGB0YJf0LPRgNGD0LQiLnNwbGl0KCJfIiksd2Vla2RheXM6Zix3ZWVrZGF5c1Nob3J0OiLQvdC0X9C/0L1f0LLRgl/RgdGAX9GH0YJf0L/Rgl/RgdCxIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLQvdC0X9C/0L1f0LLRgl/RgdGAX9GH0YJf0L/Rgl/RgdCxIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiTFQ6c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSDRgC4iLExMTDoiRCBNTU1NIFlZWVkg0YAuLCBMVCIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkg0YAuLCBMVCJ9LGNhbGVuZGFyOntzYW1lRGF5OmcoIlvQodGM0L7Qs9C+0LTQvdGWICIpLG5leHREYXk6ZygiW9CX0LDQstGC0YDQsCAiKSxsYXN0RGF5OmcoIlvQktGH0L7RgNCwICIpLG5leHRXZWVrOmcoIlvQo10gZGRkZCBbIiksbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOmNhc2UgMzpjYXNlIDU6Y2FzZSA2OnJldHVybiBnKCJb0JzQuNC90YPQu9C+0ZddIGRkZGQgWyIpLmNhbGwodGhpcyk7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6cmV0dXJuIGcoIlvQnNC40L3Rg9C70L7Qs9C+XSBkZGRkIFsiKS5jYWxsKHRoaXMpfX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi0LfQsCAlcyIscGFzdDoiJXMg0YLQvtC80YMiLHM6ItC00LXQutGW0LvRjNC60LAg0YHQtdC60YPQvdC0IixtOmQsbW06ZCxoOiLQs9C+0LTQuNC90YMiLGhoOmQsZDoi0LTQtdC90YwiLGRkOmQsTToi0LzRltGB0Y/RhtGMIixNTTpkLHk6ItGA0ZbQuiIseXk6ZH0sbWVyaWRpZW1QYXJzZTov0L3QvtGH0ZZ80YDQsNC90LrRg3zQtNC90Y980LLQtdGH0L7RgNCwLyxpc1BNOmZ1bmN0aW9uKGEpe3JldHVybi9eKNC00L3Rj3zQstC10YfQvtGA0LApJC8udGVzdChhKX0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3JldHVybiA0PmE/ItC90L7Rh9GWIjoxMj5hPyLRgNCw0L3QutGDIjoxNz5hPyLQtNC90Y8iOiLQstC10YfQvtGA0LAifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0tKNC5fNCz0L4pLyxvcmRpbmFsOmZ1bmN0aW9uKGEsYil7c3dpdGNoKGIpe2Nhc2UiTSI6Y2FzZSJkIjpjYXNlIkRERCI6Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBhKyIt0LkiO2Nhc2UiRCI6cmV0dXJuIGErIi3Qs9C+IjtkZWZhdWx0OnJldHVybiBhfX0sd2Vlazp7ZG93OjEsZG95Ojd9fSksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxhbmcoInVrIiwidWsiLHtjbG9zZVRleHQ6ItCX0LDQutGA0LjRgtC4IixwcmV2VGV4dDoiJiN4M0M7IixuZXh0VGV4dDoiJiN4M0U7IixjdXJyZW50VGV4dDoi0KHRjNC+0LPQvtC00L3RliIsbW9udGhOYW1lczpbItCh0ZbRh9C10L3RjCIsItCb0Y7RgtC40LkiLCLQkdC10YDQtdC30LXQvdGMIiwi0JrQstGW0YLQtdC90YwiLCLQotGA0LDQstC10L3RjCIsItCn0LXRgNCy0LXQvdGMIiwi0JvQuNC/0LXQvdGMIiwi0KHQtdGA0L/QtdC90YwiLCLQktC10YDQtdGB0LXQvdGMIiwi0JbQvtCy0YLQtdC90YwiLCLQm9C40YHRgtC+0L/QsNC0Iiwi0JPRgNGD0LTQtdC90YwiXSxtb250aE5hbWVzU2hvcnQ6WyLQodGW0YciLCLQm9GO0YIiLCLQkdC10YAiLCLQmtCy0ZYiLCLQotGA0LAiLCLQp9C10YAiLCLQm9C40L8iLCLQodC10YAiLCLQktC10YAiLCLQltC+0LIiLCLQm9C40YEiLCLQk9GA0YMiXSxkYXlOYW1lczpbItC90LXQtNGW0LvRjyIsItC/0L7QvdC10LTRltC70L7QuiIsItCy0ZbQstGC0L7RgNC+0LoiLCLRgdC10YDQtdC00LAiLCLRh9C10YLQstC10YAiLCLQv+KAmdGP0YLQvdC40YbRjyIsItGB0YPQsdC+0YLQsCJdLGRheU5hbWVzU2hvcnQ6WyLQvdC10LQiLCLQv9C90LQiLCLQstGW0LIiLCLRgdGA0LQiLCLRh9GC0LIiLCLQv9GC0L0iLCLRgdCx0YIiXSxkYXlOYW1lc01pbjpbItCd0LQiLCLQn9C9Iiwi0JLRgiIsItCh0YAiLCLQp9GCIiwi0J/RgiIsItCh0LEiXSx3ZWVrSGVhZGVyOiLQotC40LYiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygidWsiLHtidXR0b25UZXh0Onttb250aDoi0JzRltGB0Y/RhtGMIix3ZWVrOiLQotC40LbQtNC10L3RjCIsZGF5OiLQlNC10L3RjCIsbGlzdDoi0J/QvtGA0Y/QtNC+0Log0LTQtdC90L3QuNC5In0sYWxsRGF5VGV4dDoi0KPQstC10YHRjCDQtNC10L3RjCIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIivRidC1ICIrYSsiLi4uIn19KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/vi.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJ2aSIse21vbnRoczoidGjDoW5nIDFfdGjDoW5nIDJfdGjDoW5nIDNfdGjDoW5nIDRfdGjDoW5nIDVfdGjDoW5nIDZfdGjDoW5nIDdfdGjDoW5nIDhfdGjDoW5nIDlfdGjDoW5nIDEwX3Row6FuZyAxMV90aMOhbmcgMTIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IlRoMDFfVGgwMl9UaDAzX1RoMDRfVGgwNV9UaDA2X1RoMDdfVGgwOF9UaDA5X1RoMTBfVGgxMV9UaDEyIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJjaOG7pyBuaOG6rXRfdGjhu6kgaGFpX3Ro4bupIGJhX3Ro4bupIHTGsF90aOG7qSBuxINtX3Ro4bupIHPDoXVfdGjhu6kgYuG6o3kiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiQ05fVDJfVDNfVDRfVDVfVDZfVDciLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkNOX1QyX1QzX1Q0X1Q1X1Q2X1Q3Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiTFQ6c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gW27Eg21dIFlZWVkiLExMTDoiRCBNTU1NIFtuxINtXSBZWVlZIExUIixMTExMOiJkZGRkLCBEIE1NTU0gW27Eg21dIFlZWVkgTFQiLGw6IkREL00vWVlZWSIsbGw6IkQgTU1NIFlZWVkiLGxsbDoiRCBNTU0gWVlZWSBMVCIsbGxsbDoiZGRkLCBEIE1NTSBZWVlZIExUIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltIw7RtIG5heSBsw7pjXSBMVCIsbmV4dERheToiW05nw6B5IG1haSBsw7pjXSBMVCIsbmV4dFdlZWs6ImRkZGQgW3R14bqnbiB04bubaSBsw7pjXSBMVCIsbGFzdERheToiW0jDtG0gcXVhIGzDumNdIExUIixsYXN0V2VlazoiZGRkZCBbdHXhuqduIHLhu5NpIGzDumNdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyB04bubaSIscGFzdDoiJXMgdHLGsOG7m2MiLHM6InbDoGkgZ2nDonkiLG06Im3hu5l0IHBow7p0IixtbToiJWQgcGjDunQiLGg6Im3hu5l0IGdp4budIixoaDoiJWQgZ2nhu50iLGQ6Im3hu5l0IG5nw6B5IixkZDoiJWQgbmfDoHkiLE06Im3hu5l0IHRow6FuZyIsTU06IiVkIHRow6FuZyIseToibeG7mXQgbsSDbSIseXk6IiVkIG7Eg20ifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0vLG9yZGluYWw6ZnVuY3Rpb24oYSl7cmV0dXJuIGF9LHdlZWs6e2RvdzoxLGRveTo0fX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJ2aSIsInZpIix7Y2xvc2VUZXh0OiLEkMOzbmciLHByZXZUZXh0OiImI3gzQztUcsaw4bubYyIsbmV4dFRleHQ6IlRp4bq/cCYjeDNFOyIsY3VycmVudFRleHQ6IkjDtG0gbmF5Iixtb250aE5hbWVzOlsiVGjDoW5nIE3hu5l0IiwiVGjDoW5nIEhhaSIsIlRow6FuZyBCYSIsIlRow6FuZyBUxrAiLCJUaMOhbmcgTsSDbSIsIlRow6FuZyBTw6F1IiwiVGjDoW5nIELhuqN5IiwiVGjDoW5nIFTDoW0iLCJUaMOhbmcgQ2jDrW4iLCJUaMOhbmcgTcaw4budaSIsIlRow6FuZyBNxrDhu51pIE3hu5l0IiwiVGjDoW5nIE3GsOG7nWkgSGFpIl0sbW9udGhOYW1lc1Nob3J0OlsiVGjDoW5nIDEiLCJUaMOhbmcgMiIsIlRow6FuZyAzIiwiVGjDoW5nIDQiLCJUaMOhbmcgNSIsIlRow6FuZyA2IiwiVGjDoW5nIDciLCJUaMOhbmcgOCIsIlRow6FuZyA5IiwiVGjDoW5nIDEwIiwiVGjDoW5nIDExIiwiVGjDoW5nIDEyIl0sZGF5TmFtZXM6WyJDaOG7pyBOaOG6rXQiLCJUaOG7qSBIYWkiLCJUaOG7qSBCYSIsIlRo4bupIFTGsCIsIlRo4bupIE7Eg20iLCJUaOG7qSBTw6F1IiwiVGjhu6kgQuG6o3kiXSxkYXlOYW1lc1Nob3J0OlsiQ04iLCJUMiIsIlQzIiwiVDQiLCJUNSIsIlQ2IiwiVDciXSxkYXlOYW1lc01pbjpbIkNOIiwiVDIiLCJUMyIsIlQ0IiwiVDUiLCJUNiIsIlQ3Il0sd2Vla0hlYWRlcjoiVHUiLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheTowLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubGFuZygidmkiLHtidXR0b25UZXh0Onttb250aDoiVGjDoW5nIix3ZWVrOiJUdcOizIBuIixkYXk6Ik5nw6B5IixsaXN0OiJM4buLY2ggYmnhu4N1In0sYWxsRGF5VGV4dDoiQ+G6oyBuZ8OgeSIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIisgdGjDqm0gIithfX0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/zh-cn.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJ6aC1jbiIse21vbnRoczoi5LiA5pyIX+S6jOaciF/kuInmnIhf5Zub5pyIX+S6lOaciF/lha3mnIhf5LiD5pyIX+WFq+aciF/kuZ3mnIhf5Y2B5pyIX+WNgeS4gOaciF/ljYHkuozmnIgiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IjHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiLmmJ/mnJ/ml6Vf5pif5pyf5LiAX+aYn+acn+S6jF/mmJ/mnJ/kuIlf5pif5pyf5ZubX+aYn+acn+S6lF/mmJ/mnJ/lha0iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi5ZGo5pelX+WRqOS4gF/lkajkuoxf5ZGo5LiJX+WRqOWbm1/lkajkupRf5ZGo5YWtIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLml6Vf5LiAX+S6jF/kuIlf5ZubX+S6lF/lha0iLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBaOeCuW1tIixMVFM6IkFo54K5beWIhnPnp5IiLEw6IllZWVktTU0tREQiLExMOiJZWVlZ5bm0TU1NROaXpSIsTExMOiJZWVlZ5bm0TU1NROaXpUxUIixMTExMOiJZWVlZ5bm0TU1NROaXpWRkZGRMVCIsbDoiWVlZWS1NTS1ERCIsbGw6IllZWVnlubRNTU1E5pelIixsbGw6IllZWVnlubRNTU1E5pelTFQiLGxsbGw6IllZWVnlubRNTU1E5pelZGRkZExUIn0sbWVyaWRpZW1QYXJzZTov5YeM5pmofOaXqeS4inzkuIrljYh85Lit5Y2IfOS4i+WNiHzmmZrkuIovLG1lcmlkaWVtSG91cjpmdW5jdGlvbihhLGIpe3JldHVybiAxMj09PWEmJihhPTApLCLlh4zmmagiPT09Ynx8IuaXqeS4iiI9PT1ifHwi5LiK5Y2IIj09PWI/YToi5LiL5Y2IIj09PWJ8fCLmmZrkuIoiPT09Yj9hKzEyOmE+PTExP2E6YSsxMn0sbWVyaWRpZW06ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPTEwMCphK2I7cmV0dXJuIDYwMD5kPyLlh4zmmagiOjkwMD5kPyLml6nkuIoiOjExMzA+ZD8i5LiK5Y2IIjoxMjMwPmQ/IuS4reWNiCI6MTgwMD5kPyLkuIvljYgiOiLmmZrkuIoifSxjYWxlbmRhcjp7c2FtZURheTpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5taW51dGVzKCk/Ilvku4rlpKldQWhb54K55pW0XSI6Ilvku4rlpKldTFQifSxuZXh0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLm1pbnV0ZXMoKT8iW+aYjuWkqV1BaFvngrnmlbRdIjoiW+aYjuWkqV1MVCJ9LGxhc3REYXk6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMubWludXRlcygpPyJb5pio5aSpXUFoW+eCueaVtF0iOiJb5pio5aSpXUxUIn0sbmV4dFdlZWs6ZnVuY3Rpb24oKXt2YXIgYSxjO3JldHVybiBhPWIoKS5zdGFydE9mKCJ3ZWVrIiksYz10aGlzLnVuaXgoKS1hLnVuaXgoKT49NjA0ODAwPyJb5LiLXSI6IlvmnKxdIiwwPT09dGhpcy5taW51dGVzKCk/YysiZGRkQWjngrnmlbQiOmMrImRkZEFo54K5bW0ifSxsYXN0V2VlazpmdW5jdGlvbigpe3ZhciBhLGM7cmV0dXJuIGE9YigpLnN0YXJ0T2YoIndlZWsiKSxjPXRoaXMudW5peCgpPGEudW5peCgpPyJb5LiKXSI6IlvmnKxdIiwwPT09dGhpcy5taW51dGVzKCk/YysiZGRkQWjngrnmlbQiOmMrImRkZEFo54K5bW0ifSxzYW1lRWxzZToiTEwifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0o5pelfOaciHzlkagpLyxvcmRpbmFsOmZ1bmN0aW9uKGEsYil7c3dpdGNoKGIpe2Nhc2UiZCI6Y2FzZSJEIjpjYXNlIkRERCI6cmV0dXJuIGErIuaXpSI7Y2FzZSJNIjpyZXR1cm4gYSsi5pyIIjtjYXNlInciOmNhc2UiVyI6cmV0dXJuIGErIuWRqCI7ZGVmYXVsdDpyZXR1cm4gYX19LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlc+WGhSIscGFzdDoiJXPliY0iLHM6IuWHoOenkiIsbToiMeWIhumSnyIsbW06IiVk5YiG6ZKfIixoOiIx5bCP5pe2IixoaDoiJWTlsI/ml7YiLGQ6IjHlpKkiLGRkOiIlZOWkqSIsTToiMeS4quaciCIsTU06IiVk5Liq5pyIIix5OiIx5bm0Iix5eToiJWTlubQifSx3ZWVrOntkb3c6MSxkb3k6NH19KSxhLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTGFuZygiemgtY24iLCJ6aC1DTiIse2Nsb3NlVGV4dDoi5YWz6ZetIixwcmV2VGV4dDoiJiN4M0M75LiK5pyIIixuZXh0VGV4dDoi5LiL5pyIJiN4M0U7IixjdXJyZW50VGV4dDoi5LuK5aSpIixtb250aE5hbWVzOlsi5LiA5pyIIiwi5LqM5pyIIiwi5LiJ5pyIIiwi5Zub5pyIIiwi5LqU5pyIIiwi5YWt5pyIIiwi5LiD5pyIIiwi5YWr5pyIIiwi5Lmd5pyIIiwi5Y2B5pyIIiwi5Y2B5LiA5pyIIiwi5Y2B5LqM5pyIIl0sbW9udGhOYW1lc1Nob3J0Olsi5LiA5pyIIiwi5LqM5pyIIiwi5LiJ5pyIIiwi5Zub5pyIIiwi5LqU5pyIIiwi5YWt5pyIIiwi5LiD5pyIIiwi5YWr5pyIIiwi5Lmd5pyIIiwi5Y2B5pyIIiwi5Y2B5LiA5pyIIiwi5Y2B5LqM5pyIIl0sZGF5TmFtZXM6WyLmmJ/mnJ/ml6UiLCLmmJ/mnJ/kuIAiLCLmmJ/mnJ/kuowiLCLmmJ/mnJ/kuIkiLCLmmJ/mnJ/lm5siLCLmmJ/mnJ/kupQiLCLmmJ/mnJ/lha0iXSxkYXlOYW1lc1Nob3J0Olsi5ZGo5pelIiwi5ZGo5LiAIiwi5ZGo5LqMIiwi5ZGo5LiJIiwi5ZGo5ZubIiwi5ZGo5LqUIiwi5ZGo5YWtIl0sZGF5TmFtZXNNaW46WyLml6UiLCLkuIAiLCLkuowiLCLkuIkiLCLlm5siLCLkupQiLCLlha0iXSx3ZWVrSGVhZGVyOiLlkagiLGRhdGVGb3JtYXQ6Inl5LW1tLWRkIixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMCx5ZWFyU3VmZml4OiLlubQifSksYS5mdWxsQ2FsZW5kYXIubGFuZygiemgtY24iLHtidXR0b25UZXh0Onttb250aDoi5pyIIix3ZWVrOiLlkagiLGRheToi5pelIixsaXN0OiLml6XnqIsifSxhbGxEYXlUZXh0OiLlhajlpKkiLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGEpe3JldHVybiLlj6blpJYgIithKyIg5LiqIn19KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lang/zh-tw.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6YShqUXVlcnksbW9tZW50KX0oZnVuY3Rpb24oYSxiKXsoYi5kZWZpbmVMb2NhbGV8fGIubGFuZykuY2FsbChiLCJ6aC10dyIse21vbnRoczoi5LiA5pyIX+S6jOaciF/kuInmnIhf5Zub5pyIX+S6lOaciF/lha3mnIhf5LiD5pyIX+WFq+aciF/kuZ3mnIhf5Y2B5pyIX+WNgeS4gOaciF/ljYHkuozmnIgiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IjHmnIhfMuaciF8z5pyIXzTmnIhfNeaciF825pyIXzfmnIhfOOaciF855pyIXzEw5pyIXzEx5pyIXzEy5pyIIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiLmmJ/mnJ/ml6Vf5pif5pyf5LiAX+aYn+acn+S6jF/mmJ/mnJ/kuIlf5pif5pyf5ZubX+aYn+acn+S6lF/mmJ/mnJ/lha0iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi6YCx5pelX+mAseS4gF/pgLHkuoxf6YCx5LiJX+mAseWbm1/pgLHkupRf6YCx5YWtIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLml6Vf5LiAX+S6jF/kuIlf5ZubX+S6lF/lha0iLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBaOm7nm1tIixMVFM6IkFo6buebeWIhnPnp5IiLEw6IllZWVnlubRNTU1E5pelIixMTDoiWVlZWeW5tE1NTUTml6UiLExMTDoiWVlZWeW5tE1NTUTml6VMVCIsTExMTDoiWVlZWeW5tE1NTUTml6VkZGRkTFQiLGw6IllZWVnlubRNTU1E5pelIixsbDoiWVlZWeW5tE1NTUTml6UiLGxsbDoiWVlZWeW5tE1NTUTml6VMVCIsbGxsbDoiWVlZWeW5tE1NTUTml6VkZGRkTFQifSxtZXJpZGllbVBhcnNlOi/ml6nkuIp85LiK5Y2IfOS4reWNiHzkuIvljYh85pma5LiKLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMTI9PT1hJiYoYT0wKSwi5pep5LiKIj09PWJ8fCLkuIrljYgiPT09Yj9hOiLkuK3ljYgiPT09Yj9hPj0xMT9hOmErMTI6IuS4i+WNiCI9PT1ifHwi5pma5LiKIj09PWI/YSsxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD0xMDAqYStiO3JldHVybiA5MDA+ZD8i5pep5LiKIjoxMTMwPmQ/IuS4iuWNiCI6MTIzMD5kPyLkuK3ljYgiOjE4MDA+ZD8i5LiL5Y2IIjoi5pma5LiKIn0sY2FsZW5kYXI6e3NhbWVEYXk6Ilvku4rlpKldTFQiLG5leHREYXk6IlvmmI7lpKldTFQiLG5leHRXZWVrOiJb5LiLXWRkZGRMVCIsbGFzdERheToiW+aYqOWkqV1MVCIsbGFzdFdlZWs6IlvkuIpdZGRkZExUIixzYW1lRWxzZToiTCJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfSjml6V85pyIfOmAsSkvLG9yZGluYWw6ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYil7Y2FzZSJkIjpjYXNlIkQiOmNhc2UiREREIjpyZXR1cm4gYSsi5pelIjtjYXNlIk0iOnJldHVybiBhKyLmnIgiO2Nhc2UidyI6Y2FzZSJXIjpyZXR1cm4gYSsi6YCxIjtkZWZhdWx0OnJldHVybiBhfX0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVz5YWnIixwYXN0OiIlc+WJjSIsczoi5bm+56eSIixtOiLkuIDliIbpkJgiLG1tOiIlZOWIhumQmCIsaDoi5LiA5bCP5pmCIixoaDoiJWTlsI/mmYIiLGQ6IuS4gOWkqSIsZGQ6IiVk5aSpIixNOiLkuIDlgIvmnIgiLE1NOiIlZOWAi+aciCIseToi5LiA5bm0Iix5eToiJWTlubQifX0pLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMYW5nKCJ6aC10dyIsInpoLVRXIix7Y2xvc2VUZXh0OiLpl5zplokiLHByZXZUZXh0OiImI3gzQzvkuIrmnIgiLG5leHRUZXh0OiLkuIvmnIgmI3gzRTsiLGN1cnJlbnRUZXh0OiLku4rlpKkiLG1vbnRoTmFtZXM6WyLkuIDmnIgiLCLkuozmnIgiLCLkuInmnIgiLCLlm5vmnIgiLCLkupTmnIgiLCLlha3mnIgiLCLkuIPmnIgiLCLlhavmnIgiLCLkuZ3mnIgiLCLljYHmnIgiLCLljYHkuIDmnIgiLCLljYHkuozmnIgiXSxtb250aE5hbWVzU2hvcnQ6WyLkuIDmnIgiLCLkuozmnIgiLCLkuInmnIgiLCLlm5vmnIgiLCLkupTmnIgiLCLlha3mnIgiLCLkuIPmnIgiLCLlhavmnIgiLCLkuZ3mnIgiLCLljYHmnIgiLCLljYHkuIDmnIgiLCLljYHkuozmnIgiXSxkYXlOYW1lczpbIuaYn+acn+aXpSIsIuaYn+acn+S4gCIsIuaYn+acn+S6jCIsIuaYn+acn+S4iSIsIuaYn+acn+WbmyIsIuaYn+acn+S6lCIsIuaYn+acn+WFrSJdLGRheU5hbWVzU2hvcnQ6WyLlkajml6UiLCLlkajkuIAiLCLlkajkuowiLCLlkajkuIkiLCLlkajlm5siLCLlkajkupQiLCLlkajlha0iXSxkYXlOYW1lc01pbjpbIuaXpSIsIuS4gCIsIuS6jCIsIuS4iSIsIuWbmyIsIuS6lCIsIuWFrSJdLHdlZWtIZWFkZXI6IuWRqCIsZGF0ZUZvcm1hdDoieXkvbW0vZGQiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiEwLHllYXJTdWZmaXg6IuW5tCJ9KSxhLmZ1bGxDYWxlbmRhci5sYW5nKCJ6aC10dyIse2J1dHRvblRleHQ6e21vbnRoOiLmnIgiLHdlZWs6IumAsSIsZGF5OiLlpKkiLGxpc3Q6IuW+hei+puS6i+mghSJ9LGFsbERheVRleHQ6IuWFqOWkqSIsZXZlbnRMaW1pdFRleHQ6IuabtOWkmiJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/animated-overlay.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAACgAAAAoEAAAAAD5BTvyAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0T//xSrMc0AAAAHdElNRQfgCQ4NIgnh6cm3AAAAhElEQVRIx+3VMQrAIAyF4Wcmz+Y5e4Yey7E4dhGxIqWQf+iQN4ePgJKXrkM9rWhJPrXJ+5yx3AAproMcJxnLSalWkpseheFaMZZbNvRzD5DgJpDhBkhxHeQ4yVhOMpbbfGwfl09juc2G3lNhLLeAxCEzlotO8XPRKdEp0Snf5qJTftgpN3jsoxwYW8JUAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE2LTA5LTE0VDEzOjM0OjA5LTA0OjAw+TNlDAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNi0wOS0xNFQxMzozNDowOS0wNDowMIhu3bAAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/ui-bg_flat_15_cd0a0a_40x100.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAACgAAABkAQMAAADOquA5AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABlBMVEXNCgr///8tompyAAAAAWJLR0QB/wIt3gAAAA9JREFUKM9jYBgFo4D6AAACWAABdTaGdwAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNC0xMC0xNlQxMToyOTo0My0wNDowMJ/xn/sAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTQtMTAtMTZUMTE6Mjk6NDMtMDQ6MDDurCdHAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/ui-bg_glass_50_3baae3_1x400.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAIAAACwqkHPAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0T///////8JWPfcAAAAB3RJTUUH4AkODSIJ4enJtwAAAI5JREFUSMdjSJq6e/fLJiYGBgYGBoZRapQapUapUYrm1M1l79//SmRi7GZczWjBxFLJ2MRQz8Ryh2kNYx8Tix3TdYbZTKwsTLqM2yHUDibWdOYIhqNMbOlM4YzH0ORYFjIxMaxkYrVjus44m6G4/7DE6/dMTIGMjIyhTIzJDNoMfIPD06PUKDVKjVIDRwEAMuIhVFSEkAcAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTYtMDktMTRUMTM6MzQ6MDktMDQ6MDD5M2UMAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE2LTA5LTE0VDEzOjM0OjA5LTA0OjAwiG7dsAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/ui-bg_glass_80_d7ebf9_1x400.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAIAAACwqkHPAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0T///////8JWPfcAAAAB3RJTUUH4AkODSIJ4enJtwAAAJhJREFUSMftzyEOggAYBeD33mZz02pwYxo1GDQT5BBsJr0RBzA4TkAyOzwBBTcx6BwGHEESSPAUTsOfvvzhHr38dy4AAAzDMIxvgzQtirrGyX9Om644QoCpuOQOM2RO2Wu2uMTltcmkkAld6cgrPDHmDZ4UMoGLfF4NWgePfXVuV9KGERbimAEmwgFrDEUHfXT+Im0YhvFDPkIzLk7A/EzKAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE2LTA5LTE0VDEzOjM0OjA5LTA0OjAw+TNlDAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNi0wOS0xNFQxMzozNDowOS0wNDowMIhu3bAAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/ui-bg_glass_100_e4f1fb_1x400.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAIAAACwqkHPAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0T///////8JWPfcAAAAB3RJTUUH4AkODSIJ4enJtwAAAJxJREFUSMftz60KwmAYhuHnedEkiFGwujC2uGTRYjAurAp6Ip6BmCyLO4gVk8XgYTiTf3yD/cD2gcFjEA1vutoNN16Hamf3AgCAoiiK8m2QZcY0Da5h7rY9YYENxsIBt3CFHmL4wjVTBLjNi1n7wP1Ydq2D57Q826VwxRQBjNQTe0K+qC+2EnqM6X9ijjBhhKFghD46fzGtKIryQ95Jgy/jpWK+ggAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNi0wOS0xNFQxMzozNDowOS0wNDowMPkzZQwAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTYtMDktMTRUMTM6MzQ6MDktMDQ6MDCIbt2wAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/ui-bg_highlight-hard_70_000000_1x100.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAABkEAAAAAAy19n/AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0T//xSrMc0AAAAHdElNRQfgCQ4NIgnh6cm3AAAAPklEQVQY02PIbmViYBgw9N+H6c8Jpl9rmX64MgTIMn27y/T9LtN3LaZvmgyK7Ezf7jEIaDH9/MnAdIFhEAAA3NYSmKChPIcAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTYtMDktMTRUMTM6MzQ6MDktMDQ6MDD5M2UMAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE2LTA5LTE0VDEzOjM0OjA5LTA0OjAwiG7dsAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAABkEAIAAACY3hF0AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0T///////8JWPfcAAAAB3RJTUUH4AkODSIJ4enJtwAAAIpJREFUKM/tz6ENwkAUgOE/DYYJUA0KZkFUIetxqKJZgQUYguJBIQDVAQhhAESTtnf33r0mMAGakKA+/RHPZv01AYA/n2jxSMKeExXqLO9n6CI+rUYusbANkmptE8JKl/GIP8gjZviBzPWGy0OlBd0uZDqkG/u7lMlrzZaSdupTGdE0zoXw7eZP8Qbj00P2LE1L9gAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNi0wOS0xNFQxMzozNDowOS0wNDowMPkzZQwAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTYtMDktMTRUMTM6MzQ6MDktMDQ6MDCIbt2wAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/ui-bg_highlight-soft_25_ffef8f_1x100.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAABkEAIAAACY3hF0AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0T///////8JWPfcAAAAB3RJTUUH4AkODSIJ4enJtwAAAHNJREFUKM/lkM0Jg2AQBYdXyJc+tI/EJnKyEFvwbkuBCHoQ9CDiMfA8rCGCBSSQ0zD72B8WeynquwDgj/CiEzC5FDBSfswDNwG9s0AuoAtrnQIXAS1JwPNdTALv2cM69+3DBq4HG+OIWOvZlYCV5vtf+mlsEsU1wS9R7TYAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTYtMDktMTRUMTM6MzQ6MDktMDQ6MDD5M2UMAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE2LTA5LTE0VDEzOjM0OjA5LTA0OjAwiG7dsAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/ui-bg_highlight-soft_100_deedf7_1x100.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAAEAAABkEAIAAACY3hF0AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0T///////8JWPfcAAAAB3RJTUUH4AkODSIJ4enJtwAAAMFJREFUKM/lkD1qwgAYQB8fuHQpgpBO7eDgUByFdO0RuiX0Dj1DzqD0BmZyd9RFTKd2Kc2UQEUL5qdtSJOYCJ+Dh1Do9JYHDx7ZrFrsXwQA/g0CEipRG5cPwdYxvqjFGJ/vVTnYG6R1MW1C0nZhNq6ooQ4e8fVfr+kTdfLnOmF7kbfqiWihT8z5KrJVfcsmzh52kei7PjIVNXDwjsqMz/XPTfUrmDriTfQKh6WodazfMeSV8D7tVpcEQZKU5akvnTkO8y9eZNHr5WMAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTYtMDktMTRUMTM6MzQ6MDktMDQ6MDD5M2UMAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE2LTA5LTE0VDEzOjM0OjA5LTA0OjAwiG7dsAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/ui-icons_2e83ff_256x240.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABLFBMVEUug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8p2Tp3AAAAY3RSTlMAWEd8IjKY4b3Ld2acsomqpVpOeudAQGVmhVOLRpGUY2NhTaBobXqbc6W/fcC8463l6eSBjl3f3eC51tvSxNXU12LacP4Nzplp+DgqFhzFedHjp4FYyJPQ2K/wzZCniLC7x6vHwZbrAAAAAWJLR0QAiAUdSAAAAAd0SU1FB98GAQolFZD5J0UAAA+BSURBVHja7V0LYxvFEd67iyQsxycZJGgDCYrBKSR1WjdJX5RCGiJICzFpmxCamFLm//+H7t5rZ2f2oeNk6Wzv58T23D7nu9m9md09WYiIiIgeIIFk213Ysv7QcwY6dy8Bv/4JZkBl3iwhxAJBwSSA9sdIV6kJvgLAGgBPA6R88etGTYJaICcgof0x0ukdZATQ4rwBljnZIAOs/3YVPOmcQUFy+2u3ZU68mdYKZsG8i/QGcwvx3mFuAZ4ObN4C7KSwLvoIYKWBmYindmKCm58DVuDjTJ8CdAht/imwdVx2RygiIiIiIiKixzhzT3DLflDCojWgzntCS9DsRoCfsAZ86wFsQUjWvlFKLB1gBLAMNLsZLiasAUqAJ7pUtW8yGGL9t/fYk2xZUUk8xUVgCRAKAja2HMAtWNhs1ojWVlgPSMzafCNq2xZgReLpcff1AD5CtjoHhHHRnwIREREREREREdtDN8c/6JoG6+8ceHSsAPh2KrTI3bl//DgA61CgNvBf4eqRZOBZzOLgSrM34O2AJdXfvq0GH0EsnVXGNODNAUkER2LNKKuPFABX4grt83AZQgTwBSDwaxAu7sliKljlJmtWZnZaoZc/aw6vCXkHkLBZCGHcUtxvouEW2qgXHOOWM0TgTw/USG4HBG9IoAEQ1jbdqdt+Cpxx+fBjMiIiIiIiIuKyovux1I5uRmI5je6u0uaHBreqAs2368BKDfjjeba3aukAShd4c2oFr05ldgcnYN3e551kVbrbt8S3VAFf3WC9qYgfgbcneW8th90TLwGBs+HCamY+Brz8JZblnsDygxHO1uFwfYHtnRMLYuGwJRpnr2yIFTpgT7UyTGqn5S024C7OCGA94N0z0+kQCxNg74DzFq6UzAJmNwHWvXW+Q++8AWwIkCESHAL2UZ44czCGvYcDeB6LgQmzAsF26AMEkEmQpLJpKbSCQ9u33CN/sr0XDgJXCd4DFsAz93s9YNvvx0RERERERPQaZ/sU544KeVXWUmK9jkW4OmiXvaX+wK/g6M9aArO20n450ZhmBqfIdnb8G1/tAey0uOk7lnuTnrfDA66+JQMwhYURfXoJAXudXQlwv99dJHk+H8C2nmHuV7P++oKDuiy4iq+dgDrcdBGQWMJh3nVPPMXTbbvTQFLBnxnWSEFi6SELdwGbKHjHsKU2uiDiPbNiJYAOibWHd3pSU4sJLDoz3++3pBPBNuwxIYyfACEhwrvDXNFh0Sl5YyQQvYYOAYXWH/zrRxcQF12/iIiIiIiLjfScP8gsbgf4tquoN/xz9O/TVoB1m8X0vtLgbiCkpFKvKESvNkPY0WWB4hWlagopCobM+C6F0gJ0fmHdAmcE9mXYAI9e6PF6qb8RnRkEQEmCEc9SEeubQL8IsGy/c4JSIlMC8E9hid3QtaQZYn0ZAitYAMtvntgoCXJYAD2vUNPdG/2ZjmwOIDmsKzSpthI6B1gOyPTG/HWfDAn/cEz5KH9qVwgsvyls8LMyWzDA6Wh3k+gz0IekhwR0RRv9IyIiIiIuFzLlJ2Sr578ykLiyqd4NZedGQ1+ONwKeG+yUrpJLxYwmZ34+rogxwFhcIRWgErtS3BUOmSaKqxVIgVol2MvzIXL2it8NQgq3aMJPP9fitNJwaujb9JjKbGdrt0qvez0Yw2AA44HRAcGCCXrW1iqUFya2FpsgLc/ztAQhZGQQgBgAZaID3eKOQYCsel+icaWhtgDXfndZna5wAIM333wLMAGz2cz/BobABIgAAbsGgaBURxckIQkmpOygSfh8/vZ87rIAGAL6oRqu5gBAHTR6PC+KzzUBb77zi18aBFy7do0dj3fL5AIlQOn/LibANCmQ+ps2Bu+l6gs1eE3BaQH7SnUY7ut1gKyw/4YAVT9aYiur0xXKIXD9Oh4CMyFvgfzeFMiKr59JgNL/6o133QQk5IK8kiT7CQph4P3Fwj0HwL5kQOqPCSj+NQQUkyAi4KYqffNmfeGgnAQPiDqoACeAvaIhCAEf4PWJyfSq/J67CKANwocFUIOHh4egTZRZQLY/HMpveggUspuAwxLVhWQM74zHt2CM3xFCQ0he+FXxhfUdUAIGhAAwLGCi9fcQ0FT3UQFicoOGAGoB2X6B+hYxGdQcOwRjTI7HzVNgXLc/dloAJyA0BHB6OQfmTeaGgMxsr6mu9APgDeEAsQD62MtY/ZPyHuAqMv3oBq5wYNL7uBA/Fo4LlICCgVysD1k2LdDC12Mcmq5LODu0Wq6h2F2r/hERERERPcft2/70FLzr2gC2o48EmQ537xSPqTu1WAXbTYw9qeRJU7Z0TXZXloX4NelP7n2uyWhrTi7JxzbWP8s0AyPlRR6Nh9oP2ZFdnuw0jpyVikxfv1O54jUDsrAC2WkyPZuxcgVXlsv70WiQK2cubZ7tqeJ2gu/pXYC7RH/luC20/so3b6JfejqcOWYCfiO/9nCHMnmfM5Tf2BuksYX4rTgWv8Px7VgKY0MWpvz24G0kq/5Pp64OQuXsV3JtcMjiZGenae251isWTXTFCShXBxAB927ef3DjJlo2yqR9Z7g/XgJ+D3+QX3/ECirXn8g4+JCx8QClT80OVs58am/vdi2ieWAEe1PJQSnsVM56tuMioJoFkAXswZ/gtu6Q1B8t2YUt4M/iE/EXvaR0SCzgkFjAobKAuZanRuwhR0A5STXxLWnv01L6tOlgEcxrAygC1AzpGybg3s0PPpRfdv0rTx0TkEKx6lTLf4XP5Nfn6MSEMcYL+S0io/Ri/Ep86CCgju5So0PEfgSGOcvDYCgWRrxICMgIw0T/5kSESQCSH35ybXTtb48qeb+ubnc1eWrePcGGQCVj8e5dLSvbb9Y7rQQIAnlBrQ+6j9CQRe47VYf1U0AdMRKuIaGGO6nOLwuiPw/gU6y/uP+FnP4mX9xvCJDjP/WUZ4pO2CRqLrKyRX7iB9BlbyLbPgHGJ0+p/vQxKMpDXTq52BG4mjflgdVgYCzOIfIWAb7hA0VEREREbAFDvDCtXDk4ZHke61/P+GhhsRXhffpBlx6ksJTfl/jRfATI1XwXvvzyq6/gEerOntK/gPzl1g24dw9u3KrTy9gNc1liSGR6oQneqN80htFw+MRgwP/hYiFMZV1jFG2CZGBJvfGF9rz+rvAP7Youh7KCKQtumnQjNmUvWVfBq84jXcdMBjt6c7BM0MGVcoyX8MRyWvZnEqBcLVRC6V78Nw1AE/D1N48ff/O17s9QQD7V7honoIxG6p2mYjEKHXhIRblUkWpfO1PrMYiAB2qvDje4VKy7CKDhJVeXpJe7e9qiloWs9U/N/FDY+m5T/KlMGiF3FQbkQIZZvtgHRRlABZ4ynhPYAiYTfF59fHKiwktNgNRfoCUwyjgNFuwiMfGm/7UNIP3LO1jPAZ/BrgQ8bTLkuVEe5n4CDuSvB+pfnawMbAgLZAEken3wYP/BCRw1FT5RvRutjwBqAd8W8jNTf63geFlgYRbXhEH63nw+Nwio7mz5Y7FYvP9wsXhIDjwsnXPAyYkaAHgSfDIcjtY4CZI54NtqDqgYUPrnRjh6S/V3oYsv9+AIMaAqOkDTXgYmAR99VP0jBuKcA4bZyckJnGAG6GNw3U+BZ+IZjv9p6LacTPSClZwB5b9UMwDGj/rX3foCfQwqiyjhmANgqIAJsN3DLgQQpMW9f1b7AZYzguYMK63lSapmysd16j//9W/zY11EMWtU0iBTS3pZfWCjvR+wfRw8f36AxOme4ip93DBGO2w8BiMiIiI6Y4hPR7/4Tk0x373Ydqc2iJcALxvh+3rW/X7b3doYrit1r1fCi/KJo75rG5jBDBf4j8WZEes7eTYr+J91r2hVvFQBVG0CrzQBr5ocxG2w+RG5poRtPdALVIaZeqbPvPWfIa6XCl9HjVPXg/UnpRdybRTl5i1SkF6YwuvBa3N3ljW3SQLkDKBC6JdG42YfJnhjrNRfby/mpv62o7vTdIr1ey2/vTYyzLZIQF7f79xNQE6GPMBxitOw/jYCUsNkioPmAyOcNgjIYDabbc7T1Qq7CeBlkP5Sd2NS7GwBm50ECwMoX5opdHiuCXiOMuX+CnB65zlgs9EanfTua/E+zkQKEQYMfjo/BYTY4BQ40wqXPTitxVOsI50DsJSv//T5VoP1H9SyLDz9YZt96NNqRURERERExBkjB5941oARcWRWekOiC3Z2qP7gEc+eACAUGAQUaSnOkI9S9c3IoELmWp6UmdzhbU5855wlQ7FDtkECTApMAsq0ps/F7ZHq0QwGATidE0CDRb4YYB7G3QgB+DAwJaBY/qg6WfwY4T5XGTABI4tOYY0NcZ1/P2AlAjZoASsRsGEL2OwcQLH1OWDDTwG+3rHlp0APsF0/ICIiIiLicsP/HtlFR/pfAT8+RGc3pZdydIk+J1e9Rwo/5uh9hnH+1PICRe2b0M8/aCv3Dkv4nyRAoNPJipURY4C+WarP67eT+4YUjoX4MRfH+G3r5UJGtOb7tVqRwXwg/zXHt2FunmdXMpjyQH0NeureZtW5+SN9h8ZTUKft9xwEFB+NluzXn68HCSSJulDL++pLf/6eSpdXkv2eElBYgMQxvuNqXlgap5MRAY9KNCbeUu4dRsUzcIrOvMhgdAiLoYOACzcJjgGOj47xtF8uR+iQFNb8Fy77hvFLeX9ensu35iMiIiIiOoO+HxCS6SGqtnLb9rrKIdD3A0IyPUbXVm7bXlc5eP+hwYtVZHqQsq3ctr2uchD0/YBXuoJaPlW+4Wkll0dpi/TnjQxUFs70Vzr9lbN9Ad50daKTpAvaf4Hfd/ABdAPQyHUlotoNPj3Fu8Oh/Dyd5ddb5LZ0vHtm/wlGf8RPP/0kzP4IcbLi/hqgd3odshq9p6TDuEMsv2AK+fMTAoL9EfV/h3xS6r8+AqboM+gsBNh+tlEo2L7FQnwWcCJK/VcmIDwE1KdvtTHx0BCBEIHeISVIfipLBk6a/EHQ9wMsk1o9CepJjE5SQGX3pGqdJGn7dJI102t+XLIaA40cxKYfY10fo23lMDbtyHR1pNrKYWzale3qSreVIyIiIiIiIjyoHIczk3sP8vcDw/IFJAD8BBRfWEHhJ0DQP3rYb5QfSQgemRAE9TeXTP78Xd8RLeDSzwGX/SkQERERERERsW4k58cTCJ6ChKz9QdeE/H2gPiMRgb6uQAC93+dJ/3VYANX3XOlvWkBxvL34chDQ7L2Z+hocqtIXdg7Iapj64zte6n9+bKCrBZT5z6/+XS3g3Ovf9Sng0P/CzgEBaP3Pjw0ELaANlN71/4iInuP/VPKCJpghgS4AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTYtMDktMTRUMTM6MzI6MzktMDQ6MDB6ohKoAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTA2LTAxVDEwOjM3OjIxLTA0OjAwKEFuvAAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/ui-icons_3d80b3_256x240.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABLFBMVEU9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLM9gLP5vvMoAAAAY3RSTlMAWEd8IjKY4b3Ld2acsomqpVpOeudAQGVmhVOLRpGUY2NhTaBobXqbc6W/fcC8463l6eSBjl3f3eC51tvSxNXU12LacP4Nzplp+DgqFhzFedHjp4FYyJPQ2K/wzZCniLC7x6vHwZbrAAAAAWJLR0QAiAUdSAAAAAd0SU1FB98GAQolFZD5J0UAAA+BSURBVHja7V0LYxvFEd67iyQsxycZJGgDCYrBKSR1WjdJX5RCGiJICzFpmxCamFLm//+H7t5rZ2f2oeNk6Wzv58T23D7nu9m9md09WYiIiIgeIIFk213Ysv7QcwY6dy8Bv/4JZkBl3iwhxAJBwSSA9sdIV6kJvgLAGgBPA6R88etGTYJaICcgof0x0ukdZATQ4rwBljnZIAOs/3YVPOmcQUFy+2u3ZU68mdYKZsG8i/QGcwvx3mFuAZ4ObN4C7KSwLvoIYKWBmYindmKCm58DVuDjTJ8CdAht/imwdVx2RygiIiIiIiKixzhzT3DLflDCojWgzntCS9DsRoCfsAZ86wFsQUjWvlFKLB1gBLAMNLsZLiasAUqAJ7pUtW8yGGL9t/fYk2xZUUk8xUVgCRAKAja2HMAtWNhs1ojWVlgPSMzafCNq2xZgReLpcff1AD5CtjoHhHHRnwIREREREREREdtDN8c/6JoG6+8ceHSsAPh2KrTI3bl//DgA61CgNvBf4eqRZOBZzOLgSrM34O2AJdXfvq0GH0EsnVXGNODNAUkER2LNKKuPFABX4grt83AZQgTwBSDwaxAu7sliKljlJmtWZnZaoZc/aw6vCXkHkLBZCGHcUtxvouEW2qgXHOOWM0TgTw/USG4HBG9IoAEQ1jbdqdt+Cpxx+fBjMiIiIiIiIuKyovux1I5uRmI5je6u0uaHBreqAs2368BKDfjjeba3aukAShd4c2oFr05ldgcnYN3e551kVbrbt8S3VAFf3WC9qYgfgbcneW8th90TLwGBs+HCamY+Brz8JZblnsDygxHO1uFwfYHtnRMLYuGwJRpnr2yIFTpgT7UyTGqn5S024C7OCGA94N0z0+kQCxNg74DzFq6UzAJmNwHWvXW+Q++8AWwIkCESHAL2UZ44czCGvYcDeB6LgQmzAsF26AMEkEmQpLJpKbSCQ9u33CN/sr0XDgJXCd4DFsAz93s9YNvvx0RERERERPQaZ/sU544KeVXWUmK9jkW4OmiXvaX+wK/g6M9aArO20n450ZhmBqfIdnb8G1/tAey0uOk7lnuTnrfDA66+JQMwhYURfXoJAXudXQlwv99dJHk+H8C2nmHuV7P++oKDuiy4iq+dgDrcdBGQWMJh3nVPPMXTbbvTQFLBnxnWSEFi6SELdwGbKHjHsKU2uiDiPbNiJYAOibWHd3pSU4sJLDoz3++3pBPBNuwxIYyfACEhwrvDXNFh0Sl5YyQQvYYOAYXWH/zrRxcQF12/iIiIiIiLjfScP8gsbgf4tquoN/xz9O/TVoB1m8X0vtLgbiCkpFKvKESvNkPY0WWB4hWlagopCobM+C6F0gJ0fmHdAmcE9mXYAI9e6PF6qb8RnRkEQEmCEc9SEeubQL8IsGy/c4JSIlMC8E9hid3QtaQZYn0ZAitYAMtvntgoCXJYAD2vUNPdG/2ZjmwOIDmsKzSpthI6B1gOyPTG/HWfDAn/cEz5KH9qVwgsvyls8LMyWzDA6Wh3k+gz0IekhwR0RRv9IyIiIiIuFzLlJ2Sr578ykLiyqd4NZedGQ1+ONwKeG+yUrpJLxYwmZ34+rogxwFhcIRWgErtS3BUOmSaKqxVIgVol2MvzIXL2it8NQgq3aMJPP9fitNJwaujb9JjKbGdrt0qvez0Yw2AA44HRAcGCCXrW1iqUFya2FpsgLc/ztAQhZGQQgBgAZaID3eKOQYCsel+icaWhtgDXfndZna5wAIM333wLMAGz2cz/BobABIgAAbsGgaBURxckIQkmpOygSfh8/vZ87rIAGAL6oRqu5gBAHTR6PC+KzzUBb77zi18aBFy7do0dj3fL5AIlQOn/LibANCmQ+ps2Bu+l6gs1eE3BaQH7SnUY7ut1gKyw/4YAVT9aYiur0xXKIXD9Oh4CMyFvgfzeFMiKr59JgNL/6o133QQk5IK8kiT7CQph4P3Fwj0HwL5kQOqPCSj+NQQUkyAi4KYqffNmfeGgnAQPiDqoACeAvaIhCAEf4PWJyfSq/J67CKANwocFUIOHh4egTZRZQLY/HMpveggUspuAwxLVhWQM74zHt2CM3xFCQ0he+FXxhfUdUAIGhAAwLGCi9fcQ0FT3UQFicoOGAGoB2X6B+hYxGdQcOwRjTI7HzVNgXLc/dloAJyA0BHB6OQfmTeaGgMxsr6mu9APgDeEAsQD62MtY/ZPyHuAqMv3oBq5wYNL7uBA/Fo4LlICCgVysD1k2LdDC12Mcmq5LODu0Wq6h2F2r/hERERERPcft2/70FLzr2gC2o48EmQ537xSPqTu1WAXbTYw9qeRJU7Z0TXZXloX4NelP7n2uyWhrTi7JxzbWP8s0AyPlRR6Nh9oP2ZFdnuw0jpyVikxfv1O54jUDsrAC2WkyPZuxcgVXlsv70WiQK2cubZ7tqeJ2gu/pXYC7RH/luC20/so3b6JfejqcOWYCfiO/9nCHMnmfM5Tf2BuksYX4rTgWv8Px7VgKY0MWpvz24G0kq/5Pp64OQuXsV3JtcMjiZGenae251isWTXTFCShXBxAB927ef3DjJlo2yqR9Z7g/XgJ+D3+QX3/ECirXn8g4+JCx8QClT80OVs58am/vdi2ieWAEe1PJQSnsVM56tuMioJoFkAXswZ/gtu6Q1B8t2YUt4M/iE/EXvaR0SCzgkFjAobKAuZanRuwhR0A5STXxLWnv01L6tOlgEcxrAygC1AzpGybg3s0PPpRfdv0rTx0TkEKx6lTLf4XP5Nfn6MSEMcYL+S0io/Ri/Ep86CCgju5So0PEfgSGOcvDYCgWRrxICMgIw0T/5kSESQCSH35ybXTtb48qeb+ubnc1eWrePcGGQCVj8e5dLSvbb9Y7rQQIAnlBrQ+6j9CQRe47VYf1U0AdMRKuIaGGO6nOLwuiPw/gU6y/uP+FnP4mX9xvCJDjP/WUZ4pO2CRqLrKyRX7iB9BlbyLbPgHGJ0+p/vQxKMpDXTq52BG4mjflgdVgYCzOIfIWAb7hA0VEREREbAFDvDCtXDk4ZHke61/P+GhhsRXhffpBlx6ksJTfl/jRfATI1XwXvvzyq6/gEerOntK/gPzl1g24dw9u3KrTy9gNc1liSGR6oQneqN80htFw+MRgwP/hYiFMZV1jFG2CZGBJvfGF9rz+rvAP7Youh7KCKQtumnQjNmUvWVfBq84jXcdMBjt6c7BM0MGVcoyX8MRyWvZnEqBcLVRC6V78Nw1AE/D1N48ff/O17s9QQD7V7honoIxG6p2mYjEKHXhIRblUkWpfO1PrMYiAB2qvDje4VKy7CKDhJVeXpJe7e9qiloWs9U/N/FDY+m5T/KlMGiF3FQbkQIZZvtgHRRlABZ4ynhPYAiYTfF59fHKiwktNgNRfoCUwyjgNFuwiMfGm/7UNIP3LO1jPAZ/BrgQ8bTLkuVEe5n4CDuSvB+pfnawMbAgLZAEken3wYP/BCRw1FT5RvRutjwBqAd8W8jNTf63geFlgYRbXhEH63nw+Nwio7mz5Y7FYvP9wsXhIDjwsnXPAyYkaAHgSfDIcjtY4CZI54NtqDqgYUPrnRjh6S/V3oYsv9+AIMaAqOkDTXgYmAR99VP0jBuKcA4bZyckJnGAG6GNw3U+BZ+IZjv9p6LacTPSClZwB5b9UMwDGj/rX3foCfQwqiyjhmANgqIAJsN3DLgQQpMW9f1b7AZYzguYMK63lSapmysd16j//9W/zY11EMWtU0iBTS3pZfWCjvR+wfRw8f36AxOme4ip93DBGO2w8BiMiIiI6Y4hPR7/4Tk0x373Ydqc2iJcALxvh+3rW/X7b3doYrit1r1fCi/KJo75rG5jBDBf4j8WZEes7eTYr+J91r2hVvFQBVG0CrzQBr5ocxG2w+RG5poRtPdALVIaZeqbPvPWfIa6XCl9HjVPXg/UnpRdybRTl5i1SkF6YwuvBa3N3ljW3SQLkDKBC6JdG42YfJnhjrNRfby/mpv62o7vTdIr1ey2/vTYyzLZIQF7f79xNQE6GPMBxitOw/jYCUsNkioPmAyOcNgjIYDabbc7T1Qq7CeBlkP5Sd2NS7GwBm50ECwMoX5opdHiuCXiOMuX+CnB65zlgs9EanfTua/E+zkQKEQYMfjo/BYTY4BQ40wqXPTitxVOsI50DsJSv//T5VoP1H9SyLDz9YZt96NNqRURERERExBkjB5941oARcWRWekOiC3Z2qP7gEc+eACAUGAQUaSnOkI9S9c3IoELmWp6UmdzhbU5855wlQ7FDtkECTApMAsq0ps/F7ZHq0QwGATidE0CDRb4YYB7G3QgB+DAwJaBY/qg6WfwY4T5XGTABI4tOYY0NcZ1/P2AlAjZoASsRsGEL2OwcQLH1OWDDTwG+3rHlp0APsF0/ICIiIiLicsP/HtlFR/pfAT8+RGc3pZdydIk+J1e9Rwo/5uh9hnH+1PICRe2b0M8/aCv3Dkv4nyRAoNPJipURY4C+WarP67eT+4YUjoX4MRfH+G3r5UJGtOb7tVqRwXwg/zXHt2FunmdXMpjyQH0NeureZtW5+SN9h8ZTUKft9xwEFB+NluzXn68HCSSJulDL++pLf/6eSpdXkv2eElBYgMQxvuNqXlgap5MRAY9KNCbeUu4dRsUzcIrOvMhgdAiLoYOACzcJjgGOj47xtF8uR+iQFNb8Fy77hvFLeX9ensu35iMiIiIiOoO+HxCS6SGqtnLb9rrKIdD3A0IyPUbXVm7bXlc5eP+hwYtVZHqQsq3ctr2uchD0/YBXuoJaPlW+4Wkll0dpi/TnjQxUFs70Vzr9lbN9Ad50daKTpAvaf4Hfd/ABdAPQyHUlotoNPj3Fu8Oh/Dyd5ddb5LZ0vHtm/wlGf8RPP/0kzP4IcbLi/hqgd3odshq9p6TDuEMsv2AK+fMTAoL9EfV/h3xS6r8+AqboM+gsBNh+tlEo2L7FQnwWcCJK/VcmIDwE1KdvtTHx0BCBEIHeISVIfipLBk6a/EHQ9wMsk1o9CepJjE5SQGX3pGqdJGn7dJI102t+XLIaA40cxKYfY10fo23lMDbtyHR1pNrKYWzale3qSreVIyIiIiIiIjyoHIczk3sP8vcDw/IFJAD8BBRfWEHhJ0DQP3rYb5QfSQgemRAE9TeXTP78Xd8RLeDSzwGX/SkQERERERERsW4k58cTCJ6ChKz9QdeE/H2gPiMRgb6uQAC93+dJ/3VYANX3XOlvWkBxvL34chDQ7L2Z+hocqtIXdg7Iapj64zte6n9+bKCrBZT5z6/+XS3g3Ovf9Sng0P/CzgEBaP3Pjw0ELaANlN71/4iInuP/VPKCJpghgS4AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTYtMDktMTRUMTM6MzI6MzktMDQ6MDB6ohKoAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTA2LTAxVDEwOjM3OjIxLTA0OjAwKEFuvAAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/ui-icons_72a7cf_256x240.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABLFBMVEVyp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp89yp8/Wi14BAAAAY3RSTlMAWEd8IjKY4b3Ld2acsomqpVpOeudAQGVmhVOLRpGUY2NhTaBobXqbc6W/fcC8463l6eSBjl3f3eC51tvSxNXU12LacP4Nzplp+DgqFhzFedHjp4FYyJPQ2K/wzZCniLC7x6vHwZbrAAAAAWJLR0QAiAUdSAAAAAd0SU1FB98GAQolFZD5J0UAAA+BSURBVHja7V0LYxvFEd67iyQsxycZJGgDCYrBKSR1WjdJX5RCGiJICzFpmxCamFLm//+H7t5rZ2f2oeNk6Wzv58T23D7nu9m9md09WYiIiIgeIIFk213Ysv7QcwY6dy8Bv/4JZkBl3iwhxAJBwSSA9sdIV6kJvgLAGgBPA6R88etGTYJaICcgof0x0ukdZATQ4rwBljnZIAOs/3YVPOmcQUFy+2u3ZU68mdYKZsG8i/QGcwvx3mFuAZ4ObN4C7KSwLvoIYKWBmYindmKCm58DVuDjTJ8CdAht/imwdVx2RygiIiIiIiKixzhzT3DLflDCojWgzntCS9DsRoCfsAZ86wFsQUjWvlFKLB1gBLAMNLsZLiasAUqAJ7pUtW8yGGL9t/fYk2xZUUk8xUVgCRAKAja2HMAtWNhs1ojWVlgPSMzafCNq2xZgReLpcff1AD5CtjoHhHHRnwIREREREREREdtDN8c/6JoG6+8ceHSsAPh2KrTI3bl//DgA61CgNvBf4eqRZOBZzOLgSrM34O2AJdXfvq0GH0EsnVXGNODNAUkER2LNKKuPFABX4grt83AZQgTwBSDwaxAu7sliKljlJmtWZnZaoZc/aw6vCXkHkLBZCGHcUtxvouEW2qgXHOOWM0TgTw/USG4HBG9IoAEQ1jbdqdt+Cpxx+fBjMiIiIiIiIuKyovux1I5uRmI5je6u0uaHBreqAs2368BKDfjjeba3aukAShd4c2oFr05ldgcnYN3e551kVbrbt8S3VAFf3WC9qYgfgbcneW8th90TLwGBs+HCamY+Brz8JZblnsDygxHO1uFwfYHtnRMLYuGwJRpnr2yIFTpgT7UyTGqn5S024C7OCGA94N0z0+kQCxNg74DzFq6UzAJmNwHWvXW+Q++8AWwIkCESHAL2UZ44czCGvYcDeB6LgQmzAsF26AMEkEmQpLJpKbSCQ9u33CN/sr0XDgJXCd4DFsAz93s9YNvvx0RERERERPQaZ/sU544KeVXWUmK9jkW4OmiXvaX+wK/g6M9aArO20n450ZhmBqfIdnb8G1/tAey0uOk7lnuTnrfDA66+JQMwhYURfXoJAXudXQlwv99dJHk+H8C2nmHuV7P++oKDuiy4iq+dgDrcdBGQWMJh3nVPPMXTbbvTQFLBnxnWSEFi6SELdwGbKHjHsKU2uiDiPbNiJYAOibWHd3pSU4sJLDoz3++3pBPBNuwxIYyfACEhwrvDXNFh0Sl5YyQQvYYOAYXWH/zrRxcQF12/iIiIiIiLjfScP8gsbgf4tquoN/xz9O/TVoB1m8X0vtLgbiCkpFKvKESvNkPY0WWB4hWlagopCobM+C6F0gJ0fmHdAmcE9mXYAI9e6PF6qb8RnRkEQEmCEc9SEeubQL8IsGy/c4JSIlMC8E9hid3QtaQZYn0ZAitYAMtvntgoCXJYAD2vUNPdG/2ZjmwOIDmsKzSpthI6B1gOyPTG/HWfDAn/cEz5KH9qVwgsvyls8LMyWzDA6Wh3k+gz0IekhwR0RRv9IyIiIiIuFzLlJ2Sr578ykLiyqd4NZedGQ1+ONwKeG+yUrpJLxYwmZ34+rogxwFhcIRWgErtS3BUOmSaKqxVIgVol2MvzIXL2it8NQgq3aMJPP9fitNJwaujb9JjKbGdrt0qvez0Yw2AA44HRAcGCCXrW1iqUFya2FpsgLc/ztAQhZGQQgBgAZaID3eKOQYCsel+icaWhtgDXfndZna5wAIM333wLMAGz2cz/BobABIgAAbsGgaBURxckIQkmpOygSfh8/vZ87rIAGAL6oRqu5gBAHTR6PC+KzzUBb77zi18aBFy7do0dj3fL5AIlQOn/LibANCmQ+ps2Bu+l6gs1eE3BaQH7SnUY7ut1gKyw/4YAVT9aYiur0xXKIXD9Oh4CMyFvgfzeFMiKr59JgNL/6o133QQk5IK8kiT7CQph4P3Fwj0HwL5kQOqPCSj+NQQUkyAi4KYqffNmfeGgnAQPiDqoACeAvaIhCAEf4PWJyfSq/J67CKANwocFUIOHh4egTZRZQLY/HMpveggUspuAwxLVhWQM74zHt2CM3xFCQ0he+FXxhfUdUAIGhAAwLGCi9fcQ0FT3UQFicoOGAGoB2X6B+hYxGdQcOwRjTI7HzVNgXLc/dloAJyA0BHB6OQfmTeaGgMxsr6mu9APgDeEAsQD62MtY/ZPyHuAqMv3oBq5wYNL7uBA/Fo4LlICCgVysD1k2LdDC12Mcmq5LODu0Wq6h2F2r/hERERERPcft2/70FLzr2gC2o48EmQ537xSPqTu1WAXbTYw9qeRJU7Z0TXZXloX4NelP7n2uyWhrTi7JxzbWP8s0AyPlRR6Nh9oP2ZFdnuw0jpyVikxfv1O54jUDsrAC2WkyPZuxcgVXlsv70WiQK2cubZ7tqeJ2gu/pXYC7RH/luC20/so3b6JfejqcOWYCfiO/9nCHMnmfM5Tf2BuksYX4rTgWv8Px7VgKY0MWpvz24G0kq/5Pp64OQuXsV3JtcMjiZGenae251isWTXTFCShXBxAB927ef3DjJlo2yqR9Z7g/XgJ+D3+QX3/ECirXn8g4+JCx8QClT80OVs58am/vdi2ieWAEe1PJQSnsVM56tuMioJoFkAXswZ/gtu6Q1B8t2YUt4M/iE/EXvaR0SCzgkFjAobKAuZanRuwhR0A5STXxLWnv01L6tOlgEcxrAygC1AzpGybg3s0PPpRfdv0rTx0TkEKx6lTLf4XP5Nfn6MSEMcYL+S0io/Ri/Ep86CCgju5So0PEfgSGOcvDYCgWRrxICMgIw0T/5kSESQCSH35ybXTtb48qeb+ubnc1eWrePcGGQCVj8e5dLSvbb9Y7rQQIAnlBrQ+6j9CQRe47VYf1U0AdMRKuIaGGO6nOLwuiPw/gU6y/uP+FnP4mX9xvCJDjP/WUZ4pO2CRqLrKyRX7iB9BlbyLbPgHGJ0+p/vQxKMpDXTq52BG4mjflgdVgYCzOIfIWAb7hA0VEREREbAFDvDCtXDk4ZHke61/P+GhhsRXhffpBlx6ksJTfl/jRfATI1XwXvvzyq6/gEerOntK/gPzl1g24dw9u3KrTy9gNc1liSGR6oQneqN80htFw+MRgwP/hYiFMZV1jFG2CZGBJvfGF9rz+rvAP7Youh7KCKQtumnQjNmUvWVfBq84jXcdMBjt6c7BM0MGVcoyX8MRyWvZnEqBcLVRC6V78Nw1AE/D1N48ff/O17s9QQD7V7honoIxG6p2mYjEKHXhIRblUkWpfO1PrMYiAB2qvDje4VKy7CKDhJVeXpJe7e9qiloWs9U/N/FDY+m5T/KlMGiF3FQbkQIZZvtgHRRlABZ4ynhPYAiYTfF59fHKiwktNgNRfoCUwyjgNFuwiMfGm/7UNIP3LO1jPAZ/BrgQ8bTLkuVEe5n4CDuSvB+pfnawMbAgLZAEken3wYP/BCRw1FT5RvRutjwBqAd8W8jNTf63geFlgYRbXhEH63nw+Nwio7mz5Y7FYvP9wsXhIDjwsnXPAyYkaAHgSfDIcjtY4CZI54NtqDqgYUPrnRjh6S/V3oYsv9+AIMaAqOkDTXgYmAR99VP0jBuKcA4bZyckJnGAG6GNw3U+BZ+IZjv9p6LacTPSClZwB5b9UMwDGj/rX3foCfQwqiyjhmANgqIAJsN3DLgQQpMW9f1b7AZYzguYMK63lSapmysd16j//9W/zY11EMWtU0iBTS3pZfWCjvR+wfRw8f36AxOme4ip93DBGO2w8BiMiIiI6Y4hPR7/4Tk0x373Ydqc2iJcALxvh+3rW/X7b3doYrit1r1fCi/KJo75rG5jBDBf4j8WZEes7eTYr+J91r2hVvFQBVG0CrzQBr5ocxG2w+RG5poRtPdALVIaZeqbPvPWfIa6XCl9HjVPXg/UnpRdybRTl5i1SkF6YwuvBa3N3ljW3SQLkDKBC6JdG42YfJnhjrNRfby/mpv62o7vTdIr1ey2/vTYyzLZIQF7f79xNQE6GPMBxitOw/jYCUsNkioPmAyOcNgjIYDabbc7T1Qq7CeBlkP5Sd2NS7GwBm50ECwMoX5opdHiuCXiOMuX+CnB65zlgs9EanfTua/E+zkQKEQYMfjo/BYTY4BQ40wqXPTitxVOsI50DsJSv//T5VoP1H9SyLDz9YZt96NNqRURERERExBkjB5941oARcWRWekOiC3Z2qP7gEc+eACAUGAQUaSnOkI9S9c3IoELmWp6UmdzhbU5855wlQ7FDtkECTApMAsq0ps/F7ZHq0QwGATidE0CDRb4YYB7G3QgB+DAwJaBY/qg6WfwY4T5XGTABI4tOYY0NcZ1/P2AlAjZoASsRsGEL2OwcQLH1OWDDTwG+3rHlp0APsF0/ICIiIiLicsP/HtlFR/pfAT8+RGc3pZdydIk+J1e9Rwo/5uh9hnH+1PICRe2b0M8/aCv3Dkv4nyRAoNPJipURY4C+WarP67eT+4YUjoX4MRfH+G3r5UJGtOb7tVqRwXwg/zXHt2FunmdXMpjyQH0NeureZtW5+SN9h8ZTUKft9xwEFB+NluzXn68HCSSJulDL++pLf/6eSpdXkv2eElBYgMQxvuNqXlgap5MRAY9KNCbeUu4dRsUzcIrOvMhgdAiLoYOACzcJjgGOj47xtF8uR+iQFNb8Fy77hvFLeX9ensu35iMiIiIiOoO+HxCS6SGqtnLb9rrKIdD3A0IyPUbXVm7bXlc5eP+hwYtVZHqQsq3ctr2uchD0/YBXuoJaPlW+4Wkll0dpi/TnjQxUFs70Vzr9lbN9Ad50daKTpAvaf4Hfd/ABdAPQyHUlotoNPj3Fu8Oh/Dyd5ddb5LZ0vHtm/wlGf8RPP/0kzP4IcbLi/hqgd3odshq9p6TDuEMsv2AK+fMTAoL9EfV/h3xS6r8+AqboM+gsBNh+tlEo2L7FQnwWcCJK/VcmIDwE1KdvtTHx0BCBEIHeISVIfipLBk6a/EHQ9wMsk1o9CepJjE5SQGX3pGqdJGn7dJI102t+XLIaA40cxKYfY10fo23lMDbtyHR1pNrKYWzale3qSreVIyIiIiIiIjyoHIczk3sP8vcDw/IFJAD8BBRfWEHhJ0DQP3rYb5QfSQgemRAE9TeXTP78Xd8RLeDSzwGX/SkQERERERERsW4k58cTCJ6ChKz9QdeE/H2gPiMRgb6uQAC93+dJ/3VYANX3XOlvWkBxvL34chDQ7L2Z+hocqtIXdg7Iapj64zte6n9+bKCrBZT5z6/+XS3g3Ovf9Sng0P/CzgEBaP3Pjw0ELaANlN71/4iInuP/VPKCJpghgS4AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTYtMDktMTRUMTM6MzI6MzktMDQ6MDB6ohKoAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTA2LTAxVDEwOjM3OjIxLTA0OjAwKEFuvAAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/ui-icons_2694e8_256x240.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABLFBMVEUmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOgmlOjN4uvkAAAAY3RSTlMAWEd8IjKY4b3Ld2acsomqpVpOeudAQGVmhVOLRpGUY2NhTaBobXqbc6W/fcC8463l6eSBjl3f3eC51tvSxNXU12LacP4Nzplp+DgqFhzFedHjp4FYyJPQ2K/wzZCniLC7x6vHwZbrAAAAAWJLR0QAiAUdSAAAAAd0SU1FB98GAQolFZD5J0UAAA+BSURBVHja7V0LYxvFEd67iyQsxycZJGgDCYrBKSR1WjdJX5RCGiJICzFpmxCamFLm//+H7t5rZ2f2oeNk6Wzv58T23D7nu9m9md09WYiIiIgeIIFk213Ysv7QcwY6dy8Bv/4JZkBl3iwhxAJBwSSA9sdIV6kJvgLAGgBPA6R88etGTYJaICcgof0x0ukdZATQ4rwBljnZIAOs/3YVPOmcQUFy+2u3ZU68mdYKZsG8i/QGcwvx3mFuAZ4ObN4C7KSwLvoIYKWBmYindmKCm58DVuDjTJ8CdAht/imwdVx2RygiIiIiIiKixzhzT3DLflDCojWgzntCS9DsRoCfsAZ86wFsQUjWvlFKLB1gBLAMNLsZLiasAUqAJ7pUtW8yGGL9t/fYk2xZUUk8xUVgCRAKAja2HMAtWNhs1ojWVlgPSMzafCNq2xZgReLpcff1AD5CtjoHhHHRnwIREREREREREdtDN8c/6JoG6+8ceHSsAPh2KrTI3bl//DgA61CgNvBf4eqRZOBZzOLgSrM34O2AJdXfvq0GH0EsnVXGNODNAUkER2LNKKuPFABX4grt83AZQgTwBSDwaxAu7sliKljlJmtWZnZaoZc/aw6vCXkHkLBZCGHcUtxvouEW2qgXHOOWM0TgTw/USG4HBG9IoAEQ1jbdqdt+Cpxx+fBjMiIiIiIiIuKyovux1I5uRmI5je6u0uaHBreqAs2368BKDfjjeba3aukAShd4c2oFr05ldgcnYN3e551kVbrbt8S3VAFf3WC9qYgfgbcneW8th90TLwGBs+HCamY+Brz8JZblnsDygxHO1uFwfYHtnRMLYuGwJRpnr2yIFTpgT7UyTGqn5S024C7OCGA94N0z0+kQCxNg74DzFq6UzAJmNwHWvXW+Q++8AWwIkCESHAL2UZ44czCGvYcDeB6LgQmzAsF26AMEkEmQpLJpKbSCQ9u33CN/sr0XDgJXCd4DFsAz93s9YNvvx0RERERERPQaZ/sU544KeVXWUmK9jkW4OmiXvaX+wK/g6M9aArO20n450ZhmBqfIdnb8G1/tAey0uOk7lnuTnrfDA66+JQMwhYURfXoJAXudXQlwv99dJHk+H8C2nmHuV7P++oKDuiy4iq+dgDrcdBGQWMJh3nVPPMXTbbvTQFLBnxnWSEFi6SELdwGbKHjHsKU2uiDiPbNiJYAOibWHd3pSU4sJLDoz3++3pBPBNuwxIYyfACEhwrvDXNFh0Sl5YyQQvYYOAYXWH/zrRxcQF12/iIiIiIiLjfScP8gsbgf4tquoN/xz9O/TVoB1m8X0vtLgbiCkpFKvKESvNkPY0WWB4hWlagopCobM+C6F0gJ0fmHdAmcE9mXYAI9e6PF6qb8RnRkEQEmCEc9SEeubQL8IsGy/c4JSIlMC8E9hid3QtaQZYn0ZAitYAMtvntgoCXJYAD2vUNPdG/2ZjmwOIDmsKzSpthI6B1gOyPTG/HWfDAn/cEz5KH9qVwgsvyls8LMyWzDA6Wh3k+gz0IekhwR0RRv9IyIiIiIuFzLlJ2Sr578ykLiyqd4NZedGQ1+ONwKeG+yUrpJLxYwmZ34+rogxwFhcIRWgErtS3BUOmSaKqxVIgVol2MvzIXL2it8NQgq3aMJPP9fitNJwaujb9JjKbGdrt0qvez0Yw2AA44HRAcGCCXrW1iqUFya2FpsgLc/ztAQhZGQQgBgAZaID3eKOQYCsel+icaWhtgDXfndZna5wAIM333wLMAGz2cz/BobABIgAAbsGgaBURxckIQkmpOygSfh8/vZ87rIAGAL6oRqu5gBAHTR6PC+KzzUBb77zi18aBFy7do0dj3fL5AIlQOn/LibANCmQ+ps2Bu+l6gs1eE3BaQH7SnUY7ut1gKyw/4YAVT9aYiur0xXKIXD9Oh4CMyFvgfzeFMiKr59JgNL/6o133QQk5IK8kiT7CQph4P3Fwj0HwL5kQOqPCSj+NQQUkyAi4KYqffNmfeGgnAQPiDqoACeAvaIhCAEf4PWJyfSq/J67CKANwocFUIOHh4egTZRZQLY/HMpveggUspuAwxLVhWQM74zHt2CM3xFCQ0he+FXxhfUdUAIGhAAwLGCi9fcQ0FT3UQFicoOGAGoB2X6B+hYxGdQcOwRjTI7HzVNgXLc/dloAJyA0BHB6OQfmTeaGgMxsr6mu9APgDeEAsQD62MtY/ZPyHuAqMv3oBq5wYNL7uBA/Fo4LlICCgVysD1k2LdDC12Mcmq5LODu0Wq6h2F2r/hERERERPcft2/70FLzr2gC2o48EmQ537xSPqTu1WAXbTYw9qeRJU7Z0TXZXloX4NelP7n2uyWhrTi7JxzbWP8s0AyPlRR6Nh9oP2ZFdnuw0jpyVikxfv1O54jUDsrAC2WkyPZuxcgVXlsv70WiQK2cubZ7tqeJ2gu/pXYC7RH/luC20/so3b6JfejqcOWYCfiO/9nCHMnmfM5Tf2BuksYX4rTgWv8Px7VgKY0MWpvz24G0kq/5Pp64OQuXsV3JtcMjiZGenae251isWTXTFCShXBxAB927ef3DjJlo2yqR9Z7g/XgJ+D3+QX3/ECirXn8g4+JCx8QClT80OVs58am/vdi2ieWAEe1PJQSnsVM56tuMioJoFkAXswZ/gtu6Q1B8t2YUt4M/iE/EXvaR0SCzgkFjAobKAuZanRuwhR0A5STXxLWnv01L6tOlgEcxrAygC1AzpGybg3s0PPpRfdv0rTx0TkEKx6lTLf4XP5Nfn6MSEMcYL+S0io/Ri/Ep86CCgju5So0PEfgSGOcvDYCgWRrxICMgIw0T/5kSESQCSH35ybXTtb48qeb+ubnc1eWrePcGGQCVj8e5dLSvbb9Y7rQQIAnlBrQ+6j9CQRe47VYf1U0AdMRKuIaGGO6nOLwuiPw/gU6y/uP+FnP4mX9xvCJDjP/WUZ4pO2CRqLrKyRX7iB9BlbyLbPgHGJ0+p/vQxKMpDXTq52BG4mjflgdVgYCzOIfIWAb7hA0VEREREbAFDvDCtXDk4ZHke61/P+GhhsRXhffpBlx6ksJTfl/jRfATI1XwXvvzyq6/gEerOntK/gPzl1g24dw9u3KrTy9gNc1liSGR6oQneqN80htFw+MRgwP/hYiFMZV1jFG2CZGBJvfGF9rz+rvAP7Youh7KCKQtumnQjNmUvWVfBq84jXcdMBjt6c7BM0MGVcoyX8MRyWvZnEqBcLVRC6V78Nw1AE/D1N48ff/O17s9QQD7V7honoIxG6p2mYjEKHXhIRblUkWpfO1PrMYiAB2qvDje4VKy7CKDhJVeXpJe7e9qiloWs9U/N/FDY+m5T/KlMGiF3FQbkQIZZvtgHRRlABZ4ynhPYAiYTfF59fHKiwktNgNRfoCUwyjgNFuwiMfGm/7UNIP3LO1jPAZ/BrgQ8bTLkuVEe5n4CDuSvB+pfnawMbAgLZAEken3wYP/BCRw1FT5RvRutjwBqAd8W8jNTf63geFlgYRbXhEH63nw+Nwio7mz5Y7FYvP9wsXhIDjwsnXPAyYkaAHgSfDIcjtY4CZI54NtqDqgYUPrnRjh6S/V3oYsv9+AIMaAqOkDTXgYmAR99VP0jBuKcA4bZyckJnGAG6GNw3U+BZ+IZjv9p6LacTPSClZwB5b9UMwDGj/rX3foCfQwqiyjhmANgqIAJsN3DLgQQpMW9f1b7AZYzguYMK63lSapmysd16j//9W/zY11EMWtU0iBTS3pZfWCjvR+wfRw8f36AxOme4ip93DBGO2w8BiMiIiI6Y4hPR7/4Tk0x373Ydqc2iJcALxvh+3rW/X7b3doYrit1r1fCi/KJo75rG5jBDBf4j8WZEes7eTYr+J91r2hVvFQBVG0CrzQBr5ocxG2w+RG5poRtPdALVIaZeqbPvPWfIa6XCl9HjVPXg/UnpRdybRTl5i1SkF6YwuvBa3N3ljW3SQLkDKBC6JdG42YfJnhjrNRfby/mpv62o7vTdIr1ey2/vTYyzLZIQF7f79xNQE6GPMBxitOw/jYCUsNkioPmAyOcNgjIYDabbc7T1Qq7CeBlkP5Sd2NS7GwBm50ECwMoX5opdHiuCXiOMuX+CnB65zlgs9EanfTua/E+zkQKEQYMfjo/BYTY4BQ40wqXPTitxVOsI50DsJSv//T5VoP1H9SyLDz9YZt96NNqRURERERExBkjB5941oARcWRWekOiC3Z2qP7gEc+eACAUGAQUaSnOkI9S9c3IoELmWp6UmdzhbU5855wlQ7FDtkECTApMAsq0ps/F7ZHq0QwGATidE0CDRb4YYB7G3QgB+DAwJaBY/qg6WfwY4T5XGTABI4tOYY0NcZ1/P2AlAjZoASsRsGEL2OwcQLH1OWDDTwG+3rHlp0APsF0/ICIiIiLicsP/HtlFR/pfAT8+RGc3pZdydIk+J1e9Rwo/5uh9hnH+1PICRe2b0M8/aCv3Dkv4nyRAoNPJipURY4C+WarP67eT+4YUjoX4MRfH+G3r5UJGtOb7tVqRwXwg/zXHt2FunmdXMpjyQH0NeureZtW5+SN9h8ZTUKft9xwEFB+NluzXn68HCSSJulDL++pLf/6eSpdXkv2eElBYgMQxvuNqXlgap5MRAY9KNCbeUu4dRsUzcIrOvMhgdAiLoYOACzcJjgGOj47xtF8uR+iQFNb8Fy77hvFLeX9ensu35iMiIiIiOoO+HxCS6SGqtnLb9rrKIdD3A0IyPUbXVm7bXlc5eP+hwYtVZHqQsq3ctr2uchD0/YBXuoJaPlW+4Wkll0dpi/TnjQxUFs70Vzr9lbN9Ad50daKTpAvaf4Hfd/ABdAPQyHUlotoNPj3Fu8Oh/Dyd5ddb5LZ0vHtm/wlGf8RPP/0kzP4IcbLi/hqgd3odshq9p6TDuEMsv2AK+fMTAoL9EfV/h3xS6r8+AqboM+gsBNh+tlEo2L7FQnwWcCJK/VcmIDwE1KdvtTHx0BCBEIHeISVIfipLBk6a/EHQ9wMsk1o9CepJjE5SQGX3pGqdJGn7dJI102t+XLIaA40cxKYfY10fo23lMDbtyHR1pNrKYWzale3qSreVIyIiIiIiIjyoHIczk3sP8vcDw/IFJAD8BBRfWEHhJ0DQP3rYb5QfSQgemRAE9TeXTP78Xd8RLeDSzwGX/SkQERERERERsW4k58cTCJ6ChKz9QdeE/H2gPiMRgb6uQAC93+dJ/3VYANX3XOlvWkBxvL34chDQ7L2Z+hocqtIXdg7Iapj64zte6n9+bKCrBZT5z6/+XS3g3Ovf9Sng0P/CzgEBaP3Pjw0ELaANlN71/4iInuP/VPKCJpghgS4AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTYtMDktMTRUMTM6MzI6MzktMDQ6MDB6ohKoAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTA2LTAxVDEwOjM3OjIxLTA0OjAwKEFuvAAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/images/ui-icons_ffffff_256x240.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAQAAABFnnJAAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAHdElNRQffBgEKJRWQ+SdFAAAYOklEQVR42u1dbYxdx1l+jhMpKsHBfLkmcbKSfzQBIUu+SyQUhGQUoWt+BBWVwLUjPhqjdarSqgjIbqy7P8Kadu+CQlIXaV05kD83u1oXpbg/WFObVKYxFu6uA6U4pWratUO35k9p/pAi4Zcf52s+3vk459y79+7OPKPde+95Z+bMzPucOWfed2ZOQogIGbtGXYCI0SISIHBEAsjogNAZdSG2EpEAIjpYArAUEgUGTYDRXz8d1H2uTdV/FCYK5DmPvo6DBImhQ0QdgiGUgDVOxyKHJX2etmOMYz83rGndNbCfvzzqruM2CnoVzZXzIUDH2Tzm9Hlacw4uArjO7lMDd87uOm6jUKX5qyihXnofCsKRd5Oy++bsquM2CnoVmygQzuvXpwepfwX79ABuJXMtEEAP4BvqPwPU74D9c3A/A8CR1qTeAJ4BBhFG3zSdBgSz34I6BQFGXccBhiT6AiR0sISjWB51MbYOkQCBI1oCA0ckQOCIBAgckQCBIxIgcEQCBI5IgMAR5wOoaUdd/q2GZux0edPIaW23G0rNploZfAyXEbbJfACXLzIv+44yBVdvADcB3Dm4crf5E22N3/EqXV1vZV72HeoMcjd/lSaul9pvSorbXVyXnvZAAgF2yGwAdT6Ar8e+XhO7+w/f+QAda9nq3qAC7wH8Q6dmE/vQyx7cObjo6XMDCfYZYBBh9I3TdD7AqMu/xSG6gwNHNAQFjkiAwBEJEDgiAQJHJEDgiAQIHJEAgePuURdg7EBIRnjuHPXLULH8dzdLPpRGGGUJyFmCVEl1yuhOOYKay7cAgshCrgqZAdlZzWqSqqh7Dlf5U9Un1lzc5Kib2q8GPrEqpN0lRXBVP/GogDl94tFAPlUwX6E+vYetDonyWe0cucTdAvYa2glEjtSA6yKWyi/eAnyrTwaJu5GSAXTwNgW476JNSkBF6oSVimfnzpJfXuYykEVuz7usnf0yEEuZAFUfAsnj6nHF8mFnvWvcT7mJR+42BfnkW7cFbJegT97uNtDkVYaBZRfnE4uX2btAN4Ptebi6WL8u2nUFuc7u8xBZF26Ku+VSCVR3cOijgO19/hrDyDgfIHBES2DgiAQIHJEAgSMSIHBEAgSOSIDAEQkQOEQCdEAY9fJol61wuPBpAR+PaL104nqNuqieVloV47N4su7yLr8UfjnXW/vjt6zMtwX49HmMjneqqnXoWFvAvjBOLmXKFq153MV0xWlSfZ9YbgXULbdPC5hiiKsSORL5tK3fXu2dBgTQ1k7Wbf7qG0b7UaA+/dxbuPuowC8PTgE69OZv0gPJOZMzBk8ALY7sCyC4fX0A73RU7z1JhbR+JSjnIpj88a7z29K7zu9Krd97zaV0efzhlHLp01feADDsdqzO5UiAqqOAsgHqeKwSIQ8+d5I+beevg7Lc9R6y7Gc/mknzGUdHK7dBUrirE4PUljOwnElsm12rpax0C6hyH+/UyMP1EObTgbpLZ87H3oX63cHzuO6dlureguwPgfa0cinTK63i6f1O5Noiwq7EJqmrNEU1Avo8QfjTry4BfHKulEecDyAif3FcfF9ARCiIpuDAEQkQOCIBAkckQOCIBAgckQCDxjYbVqnzAVywecx9qt7JDVBjiuals61OGse6K3Ywu93IZivzsT7l5zDZ7HwtjU0tca6cqYZUtsXVSz+CUBqCRGaabGE2f5W4NNKW3uaJ83Hz2D1yrhzSGGTw1NkWuIrntaevk/vIwD8DLBk6ebu/qrw1LNWYWJYuy3R1krY9DMjb15dUOMqdlzu/e2XzWKLsAVI7eNmEtlX4nKz0Rmc5V0ibS/2WQLsXb9ffQsKmRlcP4Z+zbY+ALUbZAywLfuY6RVs2+qnzBnB5+937Z9iRCD0I30PIn1yMwVzF3Bnk3mNM1C/fApaLQnEdeNrBE2wTEmyTFo4y3/RGAuzXrx1JUQJ+SoW96cubkHl3kTxmUlEqxqg7oWY4qPCcbZusIcezvTGk2X78Pr5uqinzeT4nxyhiEDMGtjREd7CMsematwqRAIEjmoIDRyRA4IgECByRAIEjEiBwjB8B2g3tgRGVoBLAz5dtc9mQl9QUo43VLRmJj3ofhLFBte3ifbaTTnCkQXlWkZOkbY1Xd8v6EnU8ljsQMgHsVmq7tTu/qttYZSmQX/MJxKWJJdKu/0gRY9WQPv9Wb1N1sfdZQoS0QYT632Qtt813aRNRm/j183LOxMrTHExlIGsJ2fXvReho8m1mtR+uL8BvdbudSelcmyO4YJWbfPau37ajukSNJ852yOsb1BpAE8QpYQl0NakwT2XwmxBhnlSmEsg0JYMvoWv7BJngCSiqP0X5wgixyUwKLidG+bx2gYPPbvZHcAGkPUfks4n4Xfnl8vi8NiICQLVRAAmjAH7GjW0A6JIfKaSrABLtRpIIZ+ceVu3zicSdMaLyBfi/MEKeFVt+HzTMTxHN0MFSVL2OcZsPMCz1RxgwbgSI2GKMny8gYksRCRA4IgECRyRA4NhJBOgWlobuUPI/gFYWDoy6qgMEgUCLmXNkgxZruxUuNXSyEF2THDXdium7ztTdmjmn4QCBpomIaDr7ZSsBf46pTDplOIdZ7koJOqsE+xkKLeWNf5561CuIoKqxPG4mSLn6fcW6sshEkr6iwr5FvXoTu+RyCV1NwzV1i6aJqEUtIpqmlqUF+HPosLWQv0SMseJdxyJGagcgLAAA/kHqHC4I3cQXcAPAj+BEcewmJpSuJLcSngPwJOvKmSy+rzHumq/g54Tfr+IpSQokOFbI1HXGhFnMCb9nMWdcv2tyZk1Kv9UStrCGSewH8LP4U0xinckhwSYA4KdQb4VRWituDbVZIsY4V7Q7d/4pnJF+S28Pz1W/qkbIcAPAdXwPr1mK38o+nzTGuM+S+lXckAig4gxEV/IZgYopTgEFBWZxSqKD2IDmhrwPrxfff4ktw368HwnutZTy9y0y1SPJy/kXUCdMLtUolqv/z/FH4uHSG7jqyOA6vqfFkYvwE5kvj5j5PCl+3JL/MXzFev7LKF3GZ3BZI0BJgVmcYnNoK5966X7dWtIZ/C0+DeDjmGHTfxfAt4TvOmYxV/xtLXL1v4z3yRS42zMDTv0qfgwAsAt3jDH2AADOsjJXD5BTADiDy8Y4CWAcAzyqfKq4D3+VfXuakT6AHoB5ADPo4QntFqB6UusuM3XvkuCK8Qp+VzuWqv8c3gfgowCQ3fS9CcD1EGoF9zjz+KHi26Qmc/UAwIFM8ZdxAG8z8i7exiKAy+ga+gA7fhgfL76p6GAC5zGFGQB3gTCDey0TSmZxilXShPBnQgsuuGL8DkOAEzgD4Emcy56jFjCdCvwJoELn973ONJ/OPicZmasHSJWeUuBtZiTeleRcL7Bf+eSaCJhBep3Lt5gJzAP4bPF73nAbSDHXoItfaxiDn9PxWSCjACCoH8UwsO0YRrmHMJck+aXK42zVDjDYYWA+SCo/TaXosqNtDtWGuW5531h7nxhiDfn880FgTzw6Pu7gLoCfFn7fqNWNNwUBOCFc6YPPPcVopqZM4Yx09SPOBwgeO8kXEFEDkQCBIxIgcEQCBI5IgJ2F1wV/hhdkArRBcC3MNoMKR0bToUUX3KSOWWH4OqtJF5Vh76IiX1HkK8x5pwT51BDkAPAlR/v00KvdboezYEcfffSLX0KbtImoS11K1/fKYYNamRnhIk3TImsGuZYZIlbomiK3e7LV0GXjzwqebCKiWdYQkgc9vduQk8aZpuls4sfg5Xmc1KijSnqFQa6tmmsy7RCtELLatZm8bxER0S1r6+bGpD4dJ4ivjm1nVjBiKUDCyyJ87GD88nCiv8n+zhsbqEvpBJSuIX/Ty1ddCiYC/SeBbhPoHTItMJ/OJNMWOazyw9SiwwZ53vx96lduwRwrrHxFS73Cnn+RiPrULi2Jojs4d1LOYbbWRi3ick7ec/gn+DY2cB2bWMN32BhdzGE/nsE7Q7ADfgv345vYi2/iAXzbGCu1pc9Y5ZB96hLexbrRXdPPXDHHWOkRqdVM+6zwsy1+0uMIAPwKgN34bQBAGxdQ9ADXtDl11yr3AGIHZ+oBzhPRBSJ6nb1CukTs1T+oHuDfCfQNAv0rtZjzf8zRA+RyWOXmHqAvlU69BfSEUqfoVarflyXZl5kWPE7H9bOrp+hmRNCbfxAEeJ4+TK/QM9lfFfXLs+JMBEj3J2ln90tV/jUi+rfs74Ymz+tnuoeX8pMOOZ++vPem4ZmKBFDddfozgE07Iv2k42oG4qcsa9EioeBQj4lhJ4Dur6uifrV6dgLw8qfpG/Qh2qAP0X/QJxT5Ma10UwOVl+qHMcgqblvlJumt7EFQlfcpv/dv1CUAHCHfI6jtGZ9XsHnK9qzSwNwooF1UnSeImYAp/tBRuiZyONTv43LPKcCNAF6gO9mD3wrdoRcYApynvp7W9/RuhcrPofwzqG3Ssl39KgVmNalrWrddTmR/lUVTed+pftcwsKRA25C6XAtwVktt7IF83cHTDcwTEVXQA2SP/YCQmn6eUg/H+QCBI/oCAkckQOCIBAgckQCBIzwCpG5jbkzTK8ZGH/PIZzd7lLDdnqqFMeF0MUaedoxYXcaMuqmbhDYRrWff142j5YtFHdWR8p8R0Rk6Qx+hjxDRJ7SUaeucz37tFkJ65CR9hoiep+eJ6DN0UktfWkI5a4e8MJ9IXYivy10x9IX8rJ1HruAGLdIivWehgEu9wyRAPyvXNGtUSbGeqZ8vRW4OOc6aun6+CD9DnC10nRazEvQZCrnseLmXok28Gcx+pEzdNuST2hq7mTeH241dTFE4q8QIG8XV855RiaMkQG7L4s+Rq7381HO4aFER0V7aT7tpN+2nvaxCFglE1Ct8+rbriyeAeQ8RorSP6BZtrBMA0iwKnQBpriuFTZYjwG/RsSxkcvEZ4O8ArOMQruOV2vcS/XvlO1ERVKQ++mPCdxEtXAcAHAIAXGd88m08bi3D/+D7AIDv44OM9ApOgAB0cAzq9hUpJoXAY87wPS3/HIA5tDCJSXZGQRtPAFgEcJzN3b7dd4JVzGA/JvAgHsSD+WF5cWiq/pY2nw4QlzXV2ylYVWj1CSc9HMzU/yr7ENfCulX9q9K6/AVF/jW8WywIPYMrWvpfQA/As3gIvPqB+/Bu5TqVeKD4PA/gV5kYfwwgXbR6AsA7mpxQ0kq/fLoAvgPg/3AX9uOTuJQeFt8X8APckzXdBh5y7LgPp1x/H0AVKXeGacwX32cYCvwLDhbf3yk5DkBVP6fAafym8Osv8bLl7BzB0q0x/hcA8C67Bc4RaZ6V+oKL35OOE15W5PJ8oet4Tpm1lW7hn06WnWO28yecBLABIPULZNLyFjCDe/AD/DMWsYGHmC623Gid33JdPMrFSJRgl3JnmM+UV34Xkas/vRHsxy1Jmqt/AUeQsNdvD5/DoSzo6gfmcR1fAHAJwCFmhyDgAv4eX8Ju3MNOx5p1bLCxB3twFnvwo9l/Ow4xx9KL6CAOgr+gJnAXJjCBCQAnldt18WToGgaO+yjgFuVzY7lHpJ7jDOu0QivsdCpkqYl6mct2XZObf6lHp7QYrmEg0XEt8KOAlWyvMP0hcLEIRM/powC/MEoC2EObygnRt0i1A+jP3ebS8+VPRxfvUZvyiRm7tbRL9Dx1LK1EBJrKghqjlY0C0v/qNnRbYAeIAfQEXaWr9IRB2qfzBa3atJuhmG0YCPLZSnLLQ5wPEDjC8wVESIgECByRAIFDJcAiawUEgNN4s3hyeBOnR13wiMFAfgh8Cw8D+Doe0eK9ptnHP49fG3XhI5pD7AFewsMAgIfxkhLrdKH+0kL3QbYX2ARlO2Zz+O+sB3FPMR/HSeibwuhps3l2YwJhTPgWUeZnfksZLa5Jo9sca8y40m4Iso+Sy9BjrXbu5VWuGC450WYxPt9sUP5tFMqvL0kKfslQcZexw908bWeMfJmkTIFm+2jm8hepRS8ac/Cr3Q4lwFtERQ+g9gFyxW3NsEKmZWGi+jcYSa/45NTvVg4yxbczInDyF7NvL1py2AyTAD1SISrAnwB85y3ndJuZr5enM6nflwClpZ6T5xZ2fXeAEmYCdIlokzZpk8bGkDs4AnAKrkMAV8iVpKs/VbtJ/ePQA2wK598k7IwgK6C8BchquMoS4CqToasHMAWxB+LTj/4ZwE3BbRi4qumVfIGVvsBk6Gocs9R29csKHt0oII0zcqUNngCbrILFJljSpEtGNbqeAUyyur3H1oYdRgB/d/A8fhGPZd+v4B+tb8zYyaj7LqAxRZwPEDiiNzBwRAIEjkiAwBEJEDgiAQJHJICKHqi2dBtCJABhwzERgzCoV0KMCtdwzSrv4dna0u0JxUpHtGGxxoneAFWSp2sbc+jRRuYI6tGGJQcQsuVNsnxFyqmOu7bnMDb3PFLnLTD+NkuvwDefSYU2Aojp9GbuFWlS5blyMBPAlN6HADap3dGjS3eISdhUSX5ah4sAqQrL37IUhEJ5rhxMBDCndxOgqorNUm7x5TYN/EPgTSzgN2rcT25iARNIFycvCDbzBAvZ0Qks4KZHDia40m8NdpI3QGP5Tn4GcIXgnwE2HNUyE2A7BPIgSK+BdFuG6A1U0cOzli7eLt2GiAQIHNESGDgiAQJHJEDgiAQIHJEAgUMlAAkvFo8IACUB2vg8AGAvnkabjZtaDi4apBHbEjkB2lgtth99GKuskmewgCt4HKse77VTzQsrigFqZYvlESZkLbZORP9EIKIvUvpyBJPxsE0b5H6niOvNo9x++cOUx2AIuVKJbhMI9EXqEeg2md5OvU7HKXXKto2Z8jvVtugwtbL/h7UF2kSHibIYaeDlZJW3ir/WTrPZDyuk7wt4FMBXAQC/DAD4Kh7Ho7igdBYzOIhjOAtgCqv4qCa34xEA9wMA9mEX9mnyfQD2YR92AbjDjE7uz/4eAXCHyX8fgA9k8g/E0Y0vUl9AG6v4L7y/OHobe3GEVXAbq7iJCazjEOsUoWynen23+j+Qfv8FZnFqC+URJmRdwQaVi6b7xG/ikrpCF4noOC0aZ93wtwD53eL6fKNhy2MwhPxL+q6A23SRbhMZHvLEyRA9hgBEZgLEMKahdAdP48PZPoFfx1+P5T59EUNAnA8QOOLTcuCIBAgckQCBIxIgcJQEcL0PoKl8Hm8U8jeY9/4NWz7s+o1aXhdZnq+Ritek8WJTuWubuWHLh12/Uctrh/TjNHE4XURrKndtNDls+bDrN2p5g5DeAh4rOgTxla2PMd9EqPLl4tWyy8b0iSW9K381h2Gkd9XfVX57+u9KL8U1pbfJxVLwta6I1BBUWoMS7Zcs5woivk98CcBR6cjg8vdJ785fjFE1fcLkBUt+fPoyF11+DgDwpLH98qPP4ZMYzCJVAnE7/MpH/OT5fbe8H6tyUn5XzZ/PDZ6/3fmTNf/m7QPts5o8f+Pvc8wZa4a7B8ChEneE/3W46OoR7BCXo9fJIRE+66Qnj7S6o1zG5yyyk/gUPoX86h8QBn0L6AN4CvVvAc27eHP59BzqdeG2/G3lKxVPteQpBUT1D+wW4HofQCkXocqXKHcZLyly8aVTJdYYOTnlqJH+Kpueq5+r/mL5q6aXby/V5flNQJc3HgVckfiQ4wrzTYQq7yDfQ6xjTE+W9K781RyGkd5Vf1f5bekJck9VVQ5A6vz5WldFxoSdbogZtSFq2PLaofw6T28Umb9B81rUpvLT9GYhf5MxYgxbPuz6jVpeM8QJIYEjegMDRyRA4IgECByRAIEjEiBwRAIEDtEZpDsdZYy7PKIGZG/gZPFtjY3dVB4xdtBvAc1Ut+bModmVmzTOIUKCSgCXAtewZpVPYk3oB3S4FChOieJANX39EQaoBJgErAqcxKRVvoZJK0EI9gkTpPnEZLgmVERUhH4LmKyRi5zankOz69dFoIiKEJ1Bo36Kj6OAESB6AwNHNAQFjkiAwBEJEDgiAQJHJEDgiAQIHNuXAJ1oEBoEZAI0t7MRuiB0h17uDpZwdOhnCQAyAY5mf6OG6+pO1b886mLuBMgEWMr+RgvX1R3VP0D49gCEjvZXDcyqJBapes00zNUfnwEGAnlG0BKWscReWwmAZeWvGma9YuXqP2qVL8dngIFBuig72Z8eiDraHx+vS/zrWnToccT8YZTDcv4YGq0NpMYTLgizmGNf1qCPDNQ45dW/xJZBvvrjM8Bg4NkD+AZzD+CTtsrVb4oXQ6WgqqDpqx6aEMAWOPXHm8DACdC8BxhWyNWtfsbQMMQZQYFj+/oCIgaC/wcZyXzt5t67NgAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNi0wOS0xNFQxMzozMjozOS0wNDowMHqiEqgAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTUtMDYtMDFUMTA6Mzc6MjEtMDQ6MDAoQW68AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/cupertino/jquery-ui.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIGpRdWVyeSBVSSAtIHYxLjEyLjEgLSAyMDE2LTA5LTE0CiogaHR0cDovL2pxdWVyeXVpLmNvbQoqIEluY2x1ZGVzOiBjb3JlLmNzcywgYWNjb3JkaW9uLmNzcywgYXV0b2NvbXBsZXRlLmNzcywgbWVudS5jc3MsIGJ1dHRvbi5jc3MsIGNvbnRyb2xncm91cC5jc3MsIGNoZWNrYm94cmFkaW8uY3NzLCBkYXRlcGlja2VyLmNzcywgZGlhbG9nLmNzcywgZHJhZ2dhYmxlLmNzcywgcmVzaXphYmxlLmNzcywgcHJvZ3Jlc3NiYXIuY3NzLCBzZWxlY3RhYmxlLmNzcywgc2VsZWN0bWVudS5jc3MsIHNsaWRlci5jc3MsIHNvcnRhYmxlLmNzcywgc3Bpbm5lci5jc3MsIHRhYnMuY3NzLCB0b29sdGlwLmNzcywgdGhlbWUuY3NzCiogVG8gdmlldyBhbmQgbW9kaWZ5IHRoaXMgdGhlbWUsIHZpc2l0IGh0dHA6Ly9qcXVlcnl1aS5jb20vdGhlbWVyb2xsZXIvP2ZmRGVmYXVsdD1MdWNpZGElMjBHcmFuZGUlMkNMdWNpZGElMjBTYW5zJTJDQXJpYWwlMkNzYW5zLXNlcmlmJmZ3RGVmYXVsdD1ib2xkJmZzRGVmYXVsdD0xLjFlbSZjb3JuZXJSYWRpdXM9NnB4JmJnQ29sb3JIZWFkZXI9ZGVlZGY3JmJnVGV4dHVyZUhlYWRlcj1oaWdobGlnaHRfc29mdCZiZ0ltZ09wYWNpdHlIZWFkZXI9MTAwJmJvcmRlckNvbG9ySGVhZGVyPWFlZDBlYSZmY0hlYWRlcj0yMjIyMjImaWNvbkNvbG9ySGVhZGVyPTcyYTdjZiZiZ0NvbG9yQ29udGVudD1mMmY1ZjcmYmdUZXh0dXJlQ29udGVudD1oaWdobGlnaHRfaGFyZCZiZ0ltZ09wYWNpdHlDb250ZW50PTEwMCZib3JkZXJDb2xvckNvbnRlbnQ9ZGRkZGRkJmZjQ29udGVudD0zNjJiMzYmaWNvbkNvbG9yQ29udGVudD03MmE3Y2YmYmdDb2xvckRlZmF1bHQ9ZDdlYmY5JmJnVGV4dHVyZURlZmF1bHQ9Z2xhc3MmYmdJbWdPcGFjaXR5RGVmYXVsdD04MCZib3JkZXJDb2xvckRlZmF1bHQ9YWVkMGVhJmZjRGVmYXVsdD0yNzc5YWEmaWNvbkNvbG9yRGVmYXVsdD0zZDgwYjMmYmdDb2xvckhvdmVyPWU0ZjFmYiZiZ1RleHR1cmVIb3Zlcj1nbGFzcyZiZ0ltZ09wYWNpdHlIb3Zlcj0xMDAmYm9yZGVyQ29sb3JIb3Zlcj03NGIyZTImZmNIb3Zlcj0wMDcwYTMmaWNvbkNvbG9ySG92ZXI9MjY5NGU4JmJnQ29sb3JBY3RpdmU9M2JhYWUzJmJnVGV4dHVyZUFjdGl2ZT1nbGFzcyZiZ0ltZ09wYWNpdHlBY3RpdmU9NTAmYm9yZGVyQ29sb3JBY3RpdmU9MjY5NGU4JmZjQWN0aXZlPWZmZmZmZiZpY29uQ29sb3JBY3RpdmU9ZmZmZmZmJmJnQ29sb3JIaWdobGlnaHQ9ZmZlZjhmJmJnVGV4dHVyZUhpZ2hsaWdodD1oaWdobGlnaHRfc29mdCZiZ0ltZ09wYWNpdHlIaWdobGlnaHQ9MjUmYm9yZGVyQ29sb3JIaWdobGlnaHQ9ZjlkZDM0JmZjSGlnaGxpZ2h0PTM2MzYzNiZpY29uQ29sb3JIaWdobGlnaHQ9MmU4M2ZmJmJnQ29sb3JFcnJvcj1jZDBhMGEmYmdUZXh0dXJlRXJyb3I9ZmxhdCZiZ0ltZ09wYWNpdHlFcnJvcj0xNSZib3JkZXJDb2xvckVycm9yPWNkMGEwYSZmY0Vycm9yPWZmZmZmZiZpY29uQ29sb3JFcnJvcj1mZmZmZmYmYmdDb2xvck92ZXJsYXk9ZWVlZWVlJmJnVGV4dHVyZU92ZXJsYXk9ZGlhZ29uYWxzX3RoaWNrJmJnSW1nT3BhY2l0eU92ZXJsYXk9OTAmb3BhY2l0eU92ZXJsYXk9ODAmYmdDb2xvclNoYWRvdz0wMDAwMDAmYmdUZXh0dXJlU2hhZG93PWhpZ2hsaWdodF9oYXJkJmJnSW1nT3BhY2l0eVNoYWRvdz03MCZvcGFjaXR5U2hhZG93PTMwJnRoaWNrbmVzc1NoYWRvdz03cHgmb2Zmc2V0VG9wU2hhZG93PS03cHgmb2Zmc2V0TGVmdFNoYWRvdz0tN3B4JmNvcm5lclJhZGl1c1NoYWRvdz04cHgKKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9yczsgTGljZW5zZWQgTUlUICovCgoudWktaGVscGVyLWhpZGRlbntkaXNwbGF5Om5vbmV9LnVpLWhlbHBlci1oaWRkZW4tYWNjZXNzaWJsZXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweH0udWktaGVscGVyLXJlc2V0e21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MDtvdXRsaW5lOjA7bGluZS1oZWlnaHQ6MS4zO3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtc2l6ZToxMDAlO2xpc3Qtc3R5bGU6bm9uZX0udWktaGVscGVyLWNsZWFyZml4OmJlZm9yZSwudWktaGVscGVyLWNsZWFyZml4OmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTp0YWJsZTtib3JkZXItY29sbGFwc2U6Y29sbGFwc2V9LnVpLWhlbHBlci1jbGVhcmZpeDphZnRlcntjbGVhcjpib3RofS51aS1oZWxwZXItemZpeHt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3RvcDowO2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTtvcGFjaXR5OjA7ZmlsdGVyOkFscGhhKE9wYWNpdHk9MCl9LnVpLWZyb250e3otaW5kZXg6MTAwfS51aS1zdGF0ZS1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdCFpbXBvcnRhbnQ7cG9pbnRlci1ldmVudHM6bm9uZX0udWktaWNvbntkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLXRvcDotLjI1ZW07cG9zaXRpb246cmVsYXRpdmU7dGV4dC1pbmRlbnQ6LTk5OTk5cHg7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdH0udWktd2lkZ2V0LWljb24tYmxvY2t7bGVmdDo1MCU7bWFyZ2luLWxlZnQ6LThweDtkaXNwbGF5OmJsb2NrfS51aS13aWRnZXQtb3ZlcmxheXtwb3NpdGlvbjpmaXhlZDt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJX0udWktYWNjb3JkaW9uIC51aS1hY2NvcmRpb24taGVhZGVye2Rpc3BsYXk6YmxvY2s7Y3Vyc29yOnBvaW50ZXI7cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luOjJweCAwIDAgMDtwYWRkaW5nOi41ZW0gLjVlbSAuNWVtIC43ZW07Zm9udC1zaXplOjEwMCV9LnVpLWFjY29yZGlvbiAudWktYWNjb3JkaW9uLWNvbnRlbnR7cGFkZGluZzoxZW0gMi4yZW07Ym9yZGVyLXRvcDowO292ZXJmbG93OmF1dG99LnVpLWF1dG9jb21wbGV0ZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7Y3Vyc29yOmRlZmF1bHR9LnVpLW1lbnV7bGlzdC1zdHlsZTpub25lO3BhZGRpbmc6MDttYXJnaW46MDtkaXNwbGF5OmJsb2NrO291dGxpbmU6MH0udWktbWVudSAudWktbWVudXtwb3NpdGlvbjphYnNvbHV0ZX0udWktbWVudSAudWktbWVudS1pdGVte21hcmdpbjowO2N1cnNvcjpwb2ludGVyO2xpc3Qtc3R5bGUtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUlBQUFBQUFBUC8vL3lINUJBRUFBQUFBTEFBQUFBQUJBQUVBQUFJQlJBQTciKX0udWktbWVudSAudWktbWVudS1pdGVtLXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzozcHggMWVtIDNweCAuNGVtfS51aS1tZW51IC51aS1tZW51LWRpdmlkZXJ7bWFyZ2luOjVweCAwO2hlaWdodDowO2ZvbnQtc2l6ZTowO2xpbmUtaGVpZ2h0OjA7Ym9yZGVyLXdpZHRoOjFweCAwIDAgMH0udWktbWVudSAudWktc3RhdGUtZm9jdXMsLnVpLW1lbnUgLnVpLXN0YXRlLWFjdGl2ZXttYXJnaW46LTFweH0udWktbWVudS1pY29uc3twb3NpdGlvbjpyZWxhdGl2ZX0udWktbWVudS1pY29ucyAudWktbWVudS1pdGVtLXdyYXBwZXJ7cGFkZGluZy1sZWZ0OjJlbX0udWktbWVudSAudWktaWNvbntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0Oi4yZW07bWFyZ2luOmF1dG8gMH0udWktbWVudSAudWktbWVudS1pY29ue2xlZnQ6YXV0bztyaWdodDowfS51aS1idXR0b257cGFkZGluZzouNGVtIDFlbTtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtsaW5lLWhlaWdodDpub3JtYWw7bWFyZ2luLXJpZ2h0Oi4xZW07Y3Vyc29yOnBvaW50ZXI7dmVydGljYWwtYWxpZ246bWlkZGxlO3RleHQtYWxpZ246Y2VudGVyOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtvdmVyZmxvdzp2aXNpYmxlfS51aS1idXR0b24sLnVpLWJ1dHRvbjpsaW5rLC51aS1idXR0b246dmlzaXRlZCwudWktYnV0dG9uOmhvdmVyLC51aS1idXR0b246YWN0aXZle3RleHQtZGVjb3JhdGlvbjpub25lfS51aS1idXR0b24taWNvbi1vbmx5e3dpZHRoOjJlbTtib3gtc2l6aW5nOmJvcmRlci1ib3g7dGV4dC1pbmRlbnQ6LTk5OTlweDt3aGl0ZS1zcGFjZTpub3dyYXB9aW5wdXQudWktYnV0dG9uLnVpLWJ1dHRvbi1pY29uLW9ubHl7dGV4dC1pbmRlbnQ6MH0udWktYnV0dG9uLWljb24tb25seSAudWktaWNvbntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO2xlZnQ6NTAlO21hcmdpbi10b3A6LThweDttYXJnaW4tbGVmdDotOHB4fS51aS1idXR0b24udWktaWNvbi1ub3RleHQgLnVpLWljb257cGFkZGluZzowO3dpZHRoOjIuMWVtO2hlaWdodDoyLjFlbTt0ZXh0LWluZGVudDotOTk5OXB4O3doaXRlLXNwYWNlOm5vd3JhcH1pbnB1dC51aS1idXR0b24udWktaWNvbi1ub3RleHQgLnVpLWljb257d2lkdGg6YXV0bztoZWlnaHQ6YXV0bzt0ZXh0LWluZGVudDowO3doaXRlLXNwYWNlOm5vcm1hbDtwYWRkaW5nOi40ZW0gMWVtfWlucHV0LnVpLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixidXR0b24udWktYnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowO3BhZGRpbmc6MH0udWktY29udHJvbGdyb3Vwe3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtkaXNwbGF5OmlubGluZS1ibG9ja30udWktY29udHJvbGdyb3VwID4gLnVpLWNvbnRyb2xncm91cC1pdGVte2Zsb2F0OmxlZnQ7bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6MH0udWktY29udHJvbGdyb3VwID4gLnVpLWNvbnRyb2xncm91cC1pdGVtOmZvY3VzLC51aS1jb250cm9sZ3JvdXAgPiAudWktY29udHJvbGdyb3VwLWl0ZW0udWktdmlzdWFsLWZvY3Vze3otaW5kZXg6OTk5OX0udWktY29udHJvbGdyb3VwLXZlcnRpY2FsID4gLnVpLWNvbnRyb2xncm91cC1pdGVte2Rpc3BsYXk6YmxvY2s7ZmxvYXQ6bm9uZTt3aWR0aDoxMDAlO21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjA7dGV4dC1hbGlnbjpsZWZ0fS51aS1jb250cm9sZ3JvdXAtdmVydGljYWwgLnVpLWNvbnRyb2xncm91cC1pdGVte2JveC1zaXppbmc6Ym9yZGVyLWJveH0udWktY29udHJvbGdyb3VwIC51aS1jb250cm9sZ3JvdXAtbGFiZWx7cGFkZGluZzouNGVtIDFlbX0udWktY29udHJvbGdyb3VwIC51aS1jb250cm9sZ3JvdXAtbGFiZWwgc3Bhbntmb250LXNpemU6ODAlfS51aS1jb250cm9sZ3JvdXAtaG9yaXpvbnRhbCAudWktY29udHJvbGdyb3VwLWxhYmVsICsgLnVpLWNvbnRyb2xncm91cC1pdGVte2JvcmRlci1sZWZ0Om5vbmV9LnVpLWNvbnRyb2xncm91cC12ZXJ0aWNhbCAudWktY29udHJvbGdyb3VwLWxhYmVsICsgLnVpLWNvbnRyb2xncm91cC1pdGVte2JvcmRlci10b3A6bm9uZX0udWktY29udHJvbGdyb3VwLWhvcml6b250YWwgLnVpLWNvbnRyb2xncm91cC1sYWJlbC51aS13aWRnZXQtY29udGVudHtib3JkZXItcmlnaHQ6bm9uZX0udWktY29udHJvbGdyb3VwLXZlcnRpY2FsIC51aS1jb250cm9sZ3JvdXAtbGFiZWwudWktd2lkZ2V0LWNvbnRlbnR7Ym9yZGVyLWJvdHRvbTpub25lfS51aS1jb250cm9sZ3JvdXAtdmVydGljYWwgLnVpLXNwaW5uZXItaW5wdXR7d2lkdGg6NzUlO3dpZHRoOmNhbGMoIDEwMCUgLSAyLjRlbSApfS51aS1jb250cm9sZ3JvdXAtdmVydGljYWwgLnVpLXNwaW5uZXIgLnVpLXNwaW5uZXItdXB7Ym9yZGVyLXRvcC1zdHlsZTpzb2xpZH0udWktY2hlY2tib3hyYWRpby1sYWJlbCAudWktaWNvbi1iYWNrZ3JvdW5ke2JveC1zaGFkb3c6aW5zZXQgMXB4IDFweCAxcHggI2NjYztib3JkZXItcmFkaXVzOi4xMmVtO2JvcmRlcjpub25lfS51aS1jaGVja2JveHJhZGlvLXJhZGlvLWxhYmVsIC51aS1pY29uLWJhY2tncm91bmR7d2lkdGg6MTZweDtoZWlnaHQ6MTZweDtib3JkZXItcmFkaXVzOjFlbTtvdmVyZmxvdzp2aXNpYmxlO2JvcmRlcjpub25lfS51aS1jaGVja2JveHJhZGlvLXJhZGlvLWxhYmVsLnVpLWNoZWNrYm94cmFkaW8tY2hlY2tlZCAudWktaWNvbiwudWktY2hlY2tib3hyYWRpby1yYWRpby1sYWJlbC51aS1jaGVja2JveHJhZGlvLWNoZWNrZWQ6aG92ZXIgLnVpLWljb257YmFja2dyb3VuZC1pbWFnZTpub25lO3dpZHRoOjhweDtoZWlnaHQ6OHB4O2JvcmRlci13aWR0aDo0cHg7Ym9yZGVyLXN0eWxlOnNvbGlkfS51aS1jaGVja2JveHJhZGlvLWRpc2FibGVke3BvaW50ZXItZXZlbnRzOm5vbmV9LnVpLWRhdGVwaWNrZXJ7d2lkdGg6MTdlbTtwYWRkaW5nOi4yZW0gLjJlbSAwO2Rpc3BsYXk6bm9uZX0udWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1oZWFkZXJ7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzouMmVtIDB9LnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItcHJldiwudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1uZXh0e3Bvc2l0aW9uOmFic29sdXRlO3RvcDoycHg7d2lkdGg6MS44ZW07aGVpZ2h0OjEuOGVtfS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLXByZXYtaG92ZXIsLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItbmV4dC1ob3Zlcnt0b3A6MXB4fS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLXByZXZ7bGVmdDoycHh9LnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItbmV4dHtyaWdodDoycHh9LnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItcHJldi1ob3ZlcntsZWZ0OjFweH0udWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1uZXh0LWhvdmVye3JpZ2h0OjFweH0udWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1wcmV2IHNwYW4sLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItbmV4dCBzcGFue2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7bGVmdDo1MCU7bWFyZ2luLWxlZnQ6LThweDt0b3A6NTAlO21hcmdpbi10b3A6LThweH0udWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci10aXRsZXttYXJnaW46MCAyLjNlbTtsaW5lLWhlaWdodDoxLjhlbTt0ZXh0LWFsaWduOmNlbnRlcn0udWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci10aXRsZSBzZWxlY3R7Zm9udC1zaXplOjFlbTttYXJnaW46MXB4IDB9LnVpLWRhdGVwaWNrZXIgc2VsZWN0LnVpLWRhdGVwaWNrZXItbW9udGgsLnVpLWRhdGVwaWNrZXIgc2VsZWN0LnVpLWRhdGVwaWNrZXIteWVhcnt3aWR0aDo0NSV9LnVpLWRhdGVwaWNrZXIgdGFibGV7d2lkdGg6MTAwJTtmb250LXNpemU6LjllbTtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7bWFyZ2luOjAgMCAuNGVtfS51aS1kYXRlcGlja2VyIHRoe3BhZGRpbmc6LjdlbSAuM2VtO3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtd2VpZ2h0OmJvbGQ7Ym9yZGVyOjB9LnVpLWRhdGVwaWNrZXIgdGR7Ym9yZGVyOjA7cGFkZGluZzoxcHh9LnVpLWRhdGVwaWNrZXIgdGQgc3BhbiwudWktZGF0ZXBpY2tlciB0ZCBhe2Rpc3BsYXk6YmxvY2s7cGFkZGluZzouMmVtO3RleHQtYWxpZ246cmlnaHQ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItYnV0dG9ucGFuZXtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7bWFyZ2luOi43ZW0gMCAwIDA7cGFkZGluZzowIC4yZW07Ym9yZGVyLWxlZnQ6MDtib3JkZXItcmlnaHQ6MDtib3JkZXItYm90dG9tOjB9LnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItYnV0dG9ucGFuZSBidXR0b257ZmxvYXQ6cmlnaHQ7bWFyZ2luOi41ZW0gLjJlbSAuNGVtO2N1cnNvcjpwb2ludGVyO3BhZGRpbmc6LjJlbSAuNmVtIC4zZW0gLjZlbTt3aWR0aDphdXRvO292ZXJmbG93OnZpc2libGV9LnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItYnV0dG9ucGFuZSBidXR0b24udWktZGF0ZXBpY2tlci1jdXJyZW50e2Zsb2F0OmxlZnR9LnVpLWRhdGVwaWNrZXIudWktZGF0ZXBpY2tlci1tdWx0aXt3aWR0aDphdXRvfS51aS1kYXRlcGlja2VyLW11bHRpIC51aS1kYXRlcGlja2VyLWdyb3Vwe2Zsb2F0OmxlZnR9LnVpLWRhdGVwaWNrZXItbXVsdGkgLnVpLWRhdGVwaWNrZXItZ3JvdXAgdGFibGV7d2lkdGg6OTUlO21hcmdpbjowIGF1dG8gLjRlbX0udWktZGF0ZXBpY2tlci1tdWx0aS0yIC51aS1kYXRlcGlja2VyLWdyb3Vwe3dpZHRoOjUwJX0udWktZGF0ZXBpY2tlci1tdWx0aS0zIC51aS1kYXRlcGlja2VyLWdyb3Vwe3dpZHRoOjMzLjMlfS51aS1kYXRlcGlja2VyLW11bHRpLTQgLnVpLWRhdGVwaWNrZXItZ3JvdXB7d2lkdGg6MjUlfS51aS1kYXRlcGlja2VyLW11bHRpIC51aS1kYXRlcGlja2VyLWdyb3VwLWxhc3QgLnVpLWRhdGVwaWNrZXItaGVhZGVyLC51aS1kYXRlcGlja2VyLW11bHRpIC51aS1kYXRlcGlja2VyLWdyb3VwLW1pZGRsZSAudWktZGF0ZXBpY2tlci1oZWFkZXJ7Ym9yZGVyLWxlZnQtd2lkdGg6MH0udWktZGF0ZXBpY2tlci1tdWx0aSAudWktZGF0ZXBpY2tlci1idXR0b25wYW5le2NsZWFyOmxlZnR9LnVpLWRhdGVwaWNrZXItcm93LWJyZWFre2NsZWFyOmJvdGg7d2lkdGg6MTAwJTtmb250LXNpemU6MH0udWktZGF0ZXBpY2tlci1ydGx7ZGlyZWN0aW9uOnJ0bH0udWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItcHJldntyaWdodDoycHg7bGVmdDphdXRvfS51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1uZXh0e2xlZnQ6MnB4O3JpZ2h0OmF1dG99LnVpLWRhdGVwaWNrZXItcnRsIC51aS1kYXRlcGlja2VyLXByZXY6aG92ZXJ7cmlnaHQ6MXB4O2xlZnQ6YXV0b30udWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItbmV4dDpob3ZlcntsZWZ0OjFweDtyaWdodDphdXRvfS51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1idXR0b25wYW5le2NsZWFyOnJpZ2h0fS51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1idXR0b25wYW5lIGJ1dHRvbntmbG9hdDpsZWZ0fS51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1idXR0b25wYW5lIGJ1dHRvbi51aS1kYXRlcGlja2VyLWN1cnJlbnQsLnVpLWRhdGVwaWNrZXItcnRsIC51aS1kYXRlcGlja2VyLWdyb3Vwe2Zsb2F0OnJpZ2h0fS51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1ncm91cC1sYXN0IC51aS1kYXRlcGlja2VyLWhlYWRlciwudWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItZ3JvdXAtbWlkZGxlIC51aS1kYXRlcGlja2VyLWhlYWRlcntib3JkZXItcmlnaHQtd2lkdGg6MDtib3JkZXItbGVmdC13aWR0aDoxcHh9LnVpLWRhdGVwaWNrZXIgLnVpLWljb257ZGlzcGxheTpibG9jazt0ZXh0LWluZGVudDotOTk5OTlweDtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2xlZnQ6LjVlbTt0b3A6LjNlbX0udWktZGlhbG9ne3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtwYWRkaW5nOi4yZW07b3V0bGluZTowfS51aS1kaWFsb2cgLnVpLWRpYWxvZy10aXRsZWJhcntwYWRkaW5nOi40ZW0gMWVtO3Bvc2l0aW9uOnJlbGF0aXZlfS51aS1kaWFsb2cgLnVpLWRpYWxvZy10aXRsZXtmbG9hdDpsZWZ0O21hcmdpbjouMWVtIDA7d2hpdGUtc3BhY2U6bm93cmFwO3dpZHRoOjkwJTtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30udWktZGlhbG9nIC51aS1kaWFsb2ctdGl0bGViYXItY2xvc2V7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6LjNlbTt0b3A6NTAlO3dpZHRoOjIwcHg7bWFyZ2luOi0xMHB4IDAgMCAwO3BhZGRpbmc6MXB4O2hlaWdodDoyMHB4fS51aS1kaWFsb2cgLnVpLWRpYWxvZy1jb250ZW50e3Bvc2l0aW9uOnJlbGF0aXZlO2JvcmRlcjowO3BhZGRpbmc6LjVlbSAxZW07YmFja2dyb3VuZDpub25lO292ZXJmbG93OmF1dG99LnVpLWRpYWxvZyAudWktZGlhbG9nLWJ1dHRvbnBhbmV7dGV4dC1hbGlnbjpsZWZ0O2JvcmRlci13aWR0aDoxcHggMCAwIDA7YmFja2dyb3VuZC1pbWFnZTpub25lO21hcmdpbi10b3A6LjVlbTtwYWRkaW5nOi4zZW0gMWVtIC41ZW0gLjRlbX0udWktZGlhbG9nIC51aS1kaWFsb2ctYnV0dG9ucGFuZSAudWktZGlhbG9nLWJ1dHRvbnNldHtmbG9hdDpyaWdodH0udWktZGlhbG9nIC51aS1kaWFsb2ctYnV0dG9ucGFuZSBidXR0b257bWFyZ2luOi41ZW0gLjRlbSAuNWVtIDA7Y3Vyc29yOnBvaW50ZXJ9LnVpLWRpYWxvZyAudWktcmVzaXphYmxlLW57aGVpZ2h0OjJweDt0b3A6MH0udWktZGlhbG9nIC51aS1yZXNpemFibGUtZXt3aWR0aDoycHg7cmlnaHQ6MH0udWktZGlhbG9nIC51aS1yZXNpemFibGUtc3toZWlnaHQ6MnB4O2JvdHRvbTowfS51aS1kaWFsb2cgLnVpLXJlc2l6YWJsZS13e3dpZHRoOjJweDtsZWZ0OjB9LnVpLWRpYWxvZyAudWktcmVzaXphYmxlLXNlLC51aS1kaWFsb2cgLnVpLXJlc2l6YWJsZS1zdywudWktZGlhbG9nIC51aS1yZXNpemFibGUtbmUsLnVpLWRpYWxvZyAudWktcmVzaXphYmxlLW53e3dpZHRoOjdweDtoZWlnaHQ6N3B4fS51aS1kaWFsb2cgLnVpLXJlc2l6YWJsZS1zZXtyaWdodDowO2JvdHRvbTowfS51aS1kaWFsb2cgLnVpLXJlc2l6YWJsZS1zd3tsZWZ0OjA7Ym90dG9tOjB9LnVpLWRpYWxvZyAudWktcmVzaXphYmxlLW5le3JpZ2h0OjA7dG9wOjB9LnVpLWRpYWxvZyAudWktcmVzaXphYmxlLW53e2xlZnQ6MDt0b3A6MH0udWktZHJhZ2dhYmxlIC51aS1kaWFsb2ctdGl0bGViYXJ7Y3Vyc29yOm1vdmV9LnVpLWRyYWdnYWJsZS1oYW5kbGV7LW1zLXRvdWNoLWFjdGlvbjpub25lO3RvdWNoLWFjdGlvbjpub25lfS51aS1yZXNpemFibGV7cG9zaXRpb246cmVsYXRpdmV9LnVpLXJlc2l6YWJsZS1oYW5kbGV7cG9zaXRpb246YWJzb2x1dGU7Zm9udC1zaXplOjAuMXB4O2Rpc3BsYXk6YmxvY2s7LW1zLXRvdWNoLWFjdGlvbjpub25lO3RvdWNoLWFjdGlvbjpub25lfS51aS1yZXNpemFibGUtZGlzYWJsZWQgLnVpLXJlc2l6YWJsZS1oYW5kbGUsLnVpLXJlc2l6YWJsZS1hdXRvaGlkZSAudWktcmVzaXphYmxlLWhhbmRsZXtkaXNwbGF5Om5vbmV9LnVpLXJlc2l6YWJsZS1ue2N1cnNvcjpuLXJlc2l6ZTtoZWlnaHQ6N3B4O3dpZHRoOjEwMCU7dG9wOi01cHg7bGVmdDowfS51aS1yZXNpemFibGUtc3tjdXJzb3I6cy1yZXNpemU7aGVpZ2h0OjdweDt3aWR0aDoxMDAlO2JvdHRvbTotNXB4O2xlZnQ6MH0udWktcmVzaXphYmxlLWV7Y3Vyc29yOmUtcmVzaXplO3dpZHRoOjdweDtyaWdodDotNXB4O3RvcDowO2hlaWdodDoxMDAlfS51aS1yZXNpemFibGUtd3tjdXJzb3I6dy1yZXNpemU7d2lkdGg6N3B4O2xlZnQ6LTVweDt0b3A6MDtoZWlnaHQ6MTAwJX0udWktcmVzaXphYmxlLXNle2N1cnNvcjpzZS1yZXNpemU7d2lkdGg6MTJweDtoZWlnaHQ6MTJweDtyaWdodDoxcHg7Ym90dG9tOjFweH0udWktcmVzaXphYmxlLXN3e2N1cnNvcjpzdy1yZXNpemU7d2lkdGg6OXB4O2hlaWdodDo5cHg7bGVmdDotNXB4O2JvdHRvbTotNXB4fS51aS1yZXNpemFibGUtbnd7Y3Vyc29yOm53LXJlc2l6ZTt3aWR0aDo5cHg7aGVpZ2h0OjlweDtsZWZ0Oi01cHg7dG9wOi01cHh9LnVpLXJlc2l6YWJsZS1uZXtjdXJzb3I6bmUtcmVzaXplO3dpZHRoOjlweDtoZWlnaHQ6OXB4O3JpZ2h0Oi01cHg7dG9wOi01cHh9LnVpLXByb2dyZXNzYmFye2hlaWdodDoyZW07dGV4dC1hbGlnbjpsZWZ0O292ZXJmbG93OmhpZGRlbn0udWktcHJvZ3Jlc3NiYXIgLnVpLXByb2dyZXNzYmFyLXZhbHVle21hcmdpbjotMXB4O2hlaWdodDoxMDAlfS51aS1wcm9ncmVzc2JhciAudWktcHJvZ3Jlc3NiYXItb3ZlcmxheXtiYWNrZ3JvdW5kOnVybCgiZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoS0FBb0FJQUJBQUFBQVAvLy95SC9DMDVGVkZORFFWQkZNaTR3QXdFQUFBQWgrUVFKQVFBQkFDd0FBQUFBS0FBb0FBQUNrWXdOcVhyZEM1MkRTMDZhN01GWkkrNEZIQkNLb0RlV0tYcXltUHFHcXh2SnJYWmJNeDdUdGMrdzlYZ1UyRkIzbE95UVJXRVQySUZHaVU5bTFmckRWcHhaWmM2YmZId3Y0YzFZWFA2azFWZHkyOTJGYjZVa3V2RnRYcHZXU3pBK0h5Y1hKSFVYaUdZSWlNZzJSNlc0NTlnbldHZkhOZGpJcURXVnFlbUgyZWtwT2JrcE9scHBXVXFaaXFyNmVkcXFXUUFBSWZrRUNRRUFBUUFzQUFBQUFDZ0FLQUFBQXBTTWdabkdmYXFjZzFFMnV1ekRtbUhVQlI4UWlsOTVoaVBLcVduM2FxdExzUzE4eTdHMVN6TmVvd1dCRU50UWQrVDFKa3RQMDVuelBUZEpabFI2dlV4TldXalYrdlVXaFdOa1dGd3hsOVZwWlJlZFljZmxJT0xhZmFhMjhYZHNIL3lubGNjMXVQVkRaeFFJUjBLMjUrY0lDQ21vcUNlNW1HaFpPZmVZU1VoNXlKY0p5cmtaV1dwYVI4ZG9KMm80TllxNjJsQUFBQ0g1QkFrQkFBRUFMQUFBQUFBb0FDZ0FBQUtWREk0WXkyMlpuSU5STnFvc3cwQnY3aTFneUhVa0ZqN29TYVdsdTNvdkM4R3hOc281Zmx1ejNxTFZoQlZlVC9MejdaVEh5eEw1ZERhbFFXUFZPc1FXdFJudXdYYUZUajlqVlZoOHBtYTlKalo0ellTajVaT3ltYTd1dW9sZmZoK0lSNWFXOTdjSHVCVVhLR0tYbEtqbitEaUhXTWNZSmFoNE4wbFlDTWxKT1hpcEdScjVxZGdvU1RycVdTcTZXRmwyeXBvYVVBQUFJZmtFQ1FFQUFRQXNBQUFBQUNnQUtBQUFBcGFFYjZITGdkL2lPN0ZOV3RjRldlK3VmT0RHalJmb2lKMmFrU2hidWViMHd0STUwem0wMnBidndmV0VNV0JRMXpLR2xMSWhza2lFUG05UjZ2Ulh4VjRaeldUMnlIT0dwV015b3JibEtsTnA4SG1IRWIvbENYamNXN2JtdFhQOFh0MjI5T1ZXUjFmb2QyZVdxTmZIdU1qWENQa0lHTmlsZU9pSW1WbUNPRW1vU2ZuM3lYbEpXbW9IR2hxcDZpbFl1V1lwbVRxS1VnQUFJZmtFQ1FFQUFRQXNBQUFBQUNnQUtBQUFBcGlFSDZrYjU4YmlRM0ZOV3RNRldXM2VOVmNvanVGR2ZxblpxU2VidVMwNnc1VjgwL1gwMnBLZTh6RndQNkVGV09UMWxERms4ckdFUmgxVFROT29jUTYxSG00WG0yVmV4VUhwemp5bVZpSHJGYmlFTHNlZlZybjZYS2ZudDJROUcvK1hkaWU0OTlYSGQyZzRoN2lvT0doWEdKYm9HQW5YU0Jub0J3S1l5ZmlvdWJaSjJIbjBSdVJaYWZsWk9pbDU2WnA2aWlvS1NYcFVBQUFoK1FRSkFRQUJBQ3dBQUFBQUtBQW9BQUFDa29RUnFSdm54dUk3a1UxYTFVVTViZDV0blNlT1pYaG1uNWxXSzNxTlRXdlJkUXhQOHF2YUMrL3lhWVF6WE83Qk12YVVFbUpSZDNUc2lNQWdzd21OWXJTZ1pkWXJUWDZ0U0hHWk83M2V6dUF3MnV4dVErQmJlWmZNeHNleFkzNSsvUWU0SjFpblYwZzR4M1dIdU1oSWwyalhPS1QyUStWVTVmZ29TVUk1MlZmWnlma0pHa2hhNmptWSthYVlkaXJxK2xRQUFDSDVCQWtCQUFFQUxBQUFBQUFvQUNnQUFBS1dCSUtwWWUwTDNZTktUb3Fzd1VsdnpuaWdkNHdpUjRLaFpyS3Q5VXBxaXA2MWk5RTN2TXZ4UmRIbGJFRmlFWGZrOVlBUll4T1paRDZWUTJwVXVuQm10UlhvMUxmOGhNVlZjTmw4SmFmVjM4YU0yL0Z1NVYxNkJuNjNyNnh0OTdqMDkrTVhTRmk0Qm5pR0ZhZTNoemJIOStoWUJ6a3B1VWg1YVptSHVhblpPWmdJdXZiR2lOZW9tQ25heHhhcDJ1cGFDWnNxKzFrQUFDSDVCQWtCQUFFQUxBQUFBQUFvQUNnQUFBS1hqSThCeTV6ZjRrT3hUVnJYTlZsdjFYMGQ4SUdaR0tMbk5wWXRtOExyOWNxVmV1T1N2Zk9XNzlEOWFESGl6TmhESmlkRlpoTnlkRWFoT2FESDZub210SmpwMXR1dEtvTldrdkE2SnFmUlZMSFUvUVVmYXU5bDJ4N0c1NGQxZmw5OTV4Y0lHQWRYcU1mQk5hZG9ZcmhIK01nMktCbHBWcGJsdUNpWG1NbloyU2g0R0JxSitja0lPcXFKNkxtS1NsbFptc29xNndwUUFBQWgrUVFKQVFBQkFDd0FBQUFBS0FBb0FBQUNsWXgvb0x2b3h1SkRrVTFhMVlVWmJKNTluU2QyWlhoV3FiUmEyL2dGOEd1MkRZM2lxczd5cnEreEJZRWtZdkZTTThhU1NPYkUrWmdSbDFCSEZaTnI3cFJDYXZaNUJXMjE0MmhZM0FOL3pXdHNtZjEycDlYeHhGbDJscExuMXJzZXp0ZlhaamRJV0lmMnM1ZEl0d2pZS0Jnbzl5ZzVwSGd6SlhURWVHbFp1ZW5weVBtcEdRb0tPV2tZbVNwYVNucUtpbGVJMkZBQUFDSDVCQWtCQUFFQUxBQUFBQUFvQUNnQUFBS1ZqQitndStqRzRrT1JUVnJWaFJsc25uMmRKM1psZUZhcHRGcmIrQ1htTzlPb3plTDVWZlA5OUh2QVdocGlVZGN3a3BCSDM4MjVBd1lkVTh4VHFsTEdodENvc0FyS01wdmZhMW1NUmFlOVZ2V1pmZUIyWGZQa2VMbW0xOGxVY0JqK3A1ZG5OOGpYWjNZSUdFaFl1T1VuNDVhb0NEa3AxNmhsNUlqWUp2aldLY25vR1FwcXlQbHBPaHIzYUVsYXFycTU2QnE3VkFBQU93PT0iKTtoZWlnaHQ6MTAwJTtmaWx0ZXI6YWxwaGEob3BhY2l0eT0yNSk7b3BhY2l0eTowLjI1fS51aS1wcm9ncmVzc2Jhci1pbmRldGVybWluYXRlIC51aS1wcm9ncmVzc2Jhci12YWx1ZXtiYWNrZ3JvdW5kLWltYWdlOm5vbmV9LnVpLXNlbGVjdGFibGV7LW1zLXRvdWNoLWFjdGlvbjpub25lO3RvdWNoLWFjdGlvbjpub25lfS51aS1zZWxlY3RhYmxlLWhlbHBlcntwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDtib3JkZXI6MXB4IGRvdHRlZCBibGFja30udWktc2VsZWN0bWVudS1tZW51e3BhZGRpbmc6MDttYXJnaW46MDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7ZGlzcGxheTpub25lfS51aS1zZWxlY3RtZW51LW1lbnUgLnVpLW1lbnV7b3ZlcmZsb3c6YXV0bztvdmVyZmxvdy14OmhpZGRlbjtwYWRkaW5nLWJvdHRvbToxcHh9LnVpLXNlbGVjdG1lbnUtbWVudSAudWktbWVudSAudWktc2VsZWN0bWVudS1vcHRncm91cHtmb250LXNpemU6MWVtO2ZvbnQtd2VpZ2h0OmJvbGQ7bGluZS1oZWlnaHQ6MS41O3BhZGRpbmc6MnB4IDAuNGVtO21hcmdpbjowLjVlbSAwIDAgMDtoZWlnaHQ6YXV0bztib3JkZXI6MH0udWktc2VsZWN0bWVudS1vcGVue2Rpc3BsYXk6YmxvY2t9LnVpLXNlbGVjdG1lbnUtdGV4dHtkaXNwbGF5OmJsb2NrO21hcmdpbi1yaWdodDoyMHB4O292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS51aS1zZWxlY3RtZW51LWJ1dHRvbi51aS1idXR0b257dGV4dC1hbGlnbjpsZWZ0O3doaXRlLXNwYWNlOm5vd3JhcDt3aWR0aDoxNGVtfS51aS1zZWxlY3RtZW51LWljb24udWktaWNvbntmbG9hdDpyaWdodDttYXJnaW4tdG9wOjB9LnVpLXNsaWRlcntwb3NpdGlvbjpyZWxhdGl2ZTt0ZXh0LWFsaWduOmxlZnR9LnVpLXNsaWRlciAudWktc2xpZGVyLWhhbmRsZXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjI7d2lkdGg6MS4yZW07aGVpZ2h0OjEuMmVtO2N1cnNvcjpkZWZhdWx0Oy1tcy10b3VjaC1hY3Rpb246bm9uZTt0b3VjaC1hY3Rpb246bm9uZX0udWktc2xpZGVyIC51aS1zbGlkZXItcmFuZ2V7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxO2ZvbnQtc2l6ZTouN2VtO2Rpc3BsYXk6YmxvY2s7Ym9yZGVyOjA7YmFja2dyb3VuZC1wb3NpdGlvbjowIDB9LnVpLXNsaWRlci51aS1zdGF0ZS1kaXNhYmxlZCAudWktc2xpZGVyLWhhbmRsZSwudWktc2xpZGVyLnVpLXN0YXRlLWRpc2FibGVkIC51aS1zbGlkZXItcmFuZ2V7ZmlsdGVyOmluaGVyaXR9LnVpLXNsaWRlci1ob3Jpem9udGFse2hlaWdodDouOGVtfS51aS1zbGlkZXItaG9yaXpvbnRhbCAudWktc2xpZGVyLWhhbmRsZXt0b3A6LS4zZW07bWFyZ2luLWxlZnQ6LS42ZW19LnVpLXNsaWRlci1ob3Jpem9udGFsIC51aS1zbGlkZXItcmFuZ2V7dG9wOjA7aGVpZ2h0OjEwMCV9LnVpLXNsaWRlci1ob3Jpem9udGFsIC51aS1zbGlkZXItcmFuZ2UtbWlue2xlZnQ6MH0udWktc2xpZGVyLWhvcml6b250YWwgLnVpLXNsaWRlci1yYW5nZS1tYXh7cmlnaHQ6MH0udWktc2xpZGVyLXZlcnRpY2Fse3dpZHRoOi44ZW07aGVpZ2h0OjEwMHB4fS51aS1zbGlkZXItdmVydGljYWwgLnVpLXNsaWRlci1oYW5kbGV7bGVmdDotLjNlbTttYXJnaW4tbGVmdDowO21hcmdpbi1ib3R0b206LS42ZW19LnVpLXNsaWRlci12ZXJ0aWNhbCAudWktc2xpZGVyLXJhbmdle2xlZnQ6MDt3aWR0aDoxMDAlfS51aS1zbGlkZXItdmVydGljYWwgLnVpLXNsaWRlci1yYW5nZS1taW57Ym90dG9tOjB9LnVpLXNsaWRlci12ZXJ0aWNhbCAudWktc2xpZGVyLXJhbmdlLW1heHt0b3A6MH0udWktc29ydGFibGUtaGFuZGxley1tcy10b3VjaC1hY3Rpb246bm9uZTt0b3VjaC1hY3Rpb246bm9uZX0udWktc3Bpbm5lcntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1ibG9jaztvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0udWktc3Bpbm5lci1pbnB1dHtib3JkZXI6bm9uZTtiYWNrZ3JvdW5kOm5vbmU7Y29sb3I6aW5oZXJpdDtwYWRkaW5nOi4yMjJlbSAwO21hcmdpbjouMmVtIDA7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1sZWZ0Oi40ZW07bWFyZ2luLXJpZ2h0OjJlbX0udWktc3Bpbm5lci1idXR0b257d2lkdGg6MS42ZW07aGVpZ2h0OjUwJTtmb250LXNpemU6LjVlbTtwYWRkaW5nOjA7bWFyZ2luOjA7dGV4dC1hbGlnbjpjZW50ZXI7cG9zaXRpb246YWJzb2x1dGU7Y3Vyc29yOmRlZmF1bHQ7ZGlzcGxheTpibG9jaztvdmVyZmxvdzpoaWRkZW47cmlnaHQ6MH0udWktc3Bpbm5lciBhLnVpLXNwaW5uZXItYnV0dG9ue2JvcmRlci10b3Atc3R5bGU6bm9uZTtib3JkZXItYm90dG9tLXN0eWxlOm5vbmU7Ym9yZGVyLXJpZ2h0LXN0eWxlOm5vbmV9LnVpLXNwaW5uZXItdXB7dG9wOjB9LnVpLXNwaW5uZXItZG93bntib3R0b206MH0udWktdGFic3twb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nOi4yZW19LnVpLXRhYnMgLnVpLXRhYnMtbmF2e21hcmdpbjowO3BhZGRpbmc6LjJlbSAuMmVtIDB9LnVpLXRhYnMgLnVpLXRhYnMtbmF2IGxpe2xpc3Qtc3R5bGU6bm9uZTtmbG9hdDpsZWZ0O3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDowO21hcmdpbjoxcHggLjJlbSAwIDA7Ym9yZGVyLWJvdHRvbS13aWR0aDowO3BhZGRpbmc6MDt3aGl0ZS1zcGFjZTpub3dyYXB9LnVpLXRhYnMgLnVpLXRhYnMtbmF2IC51aS10YWJzLWFuY2hvcntmbG9hdDpsZWZ0O3BhZGRpbmc6LjVlbSAxZW07dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnVpLXRhYnMgLnVpLXRhYnMtbmF2IGxpLnVpLXRhYnMtYWN0aXZle21hcmdpbi1ib3R0b206LTFweDtwYWRkaW5nLWJvdHRvbToxcHh9LnVpLXRhYnMgLnVpLXRhYnMtbmF2IGxpLnVpLXRhYnMtYWN0aXZlIC51aS10YWJzLWFuY2hvciwudWktdGFicyAudWktdGFicy1uYXYgbGkudWktc3RhdGUtZGlzYWJsZWQgLnVpLXRhYnMtYW5jaG9yLC51aS10YWJzIC51aS10YWJzLW5hdiBsaS51aS10YWJzLWxvYWRpbmcgLnVpLXRhYnMtYW5jaG9ye2N1cnNvcjp0ZXh0fS51aS10YWJzLWNvbGxhcHNpYmxlIC51aS10YWJzLW5hdiBsaS51aS10YWJzLWFjdGl2ZSAudWktdGFicy1hbmNob3J7Y3Vyc29yOnBvaW50ZXJ9LnVpLXRhYnMgLnVpLXRhYnMtcGFuZWx7ZGlzcGxheTpibG9jaztib3JkZXItd2lkdGg6MDtwYWRkaW5nOjFlbSAxLjRlbTtiYWNrZ3JvdW5kOm5vbmV9LnVpLXRvb2x0aXB7cGFkZGluZzo4cHg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDo5OTk5O21heC13aWR0aDozMDBweH1ib2R5IC51aS10b29sdGlwe2JvcmRlci13aWR0aDoycHh9LnVpLXdpZGdldHtmb250LWZhbWlseTpMdWNpZGEgR3JhbmRlLEx1Y2lkYSBTYW5zLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjEuMWVtfS51aS13aWRnZXQgLnVpLXdpZGdldHtmb250LXNpemU6MWVtfS51aS13aWRnZXQgaW5wdXQsLnVpLXdpZGdldCBzZWxlY3QsLnVpLXdpZGdldCB0ZXh0YXJlYSwudWktd2lkZ2V0IGJ1dHRvbntmb250LWZhbWlseTpMdWNpZGEgR3JhbmRlLEx1Y2lkYSBTYW5zLEFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjFlbX0udWktd2lkZ2V0LnVpLXdpZGdldC1jb250ZW50e2JvcmRlcjoxcHggc29saWQgI2FlZDBlYX0udWktd2lkZ2V0LWNvbnRlbnR7Ym9yZGVyOjFweCBzb2xpZCAjZGRkO2JhY2tncm91bmQ6I2YyZjVmNyB1cmwoImltYWdlcy91aS1iZ19oaWdobGlnaHQtaGFyZF8xMDBfZjJmNWY3XzF4MTAwLnBuZyIpIDUwJSB0b3AgcmVwZWF0LXg7Y29sb3I6IzM2MmIzNn0udWktd2lkZ2V0LWNvbnRlbnQgYXtjb2xvcjojMzYyYjM2fS51aS13aWRnZXQtaGVhZGVye2JvcmRlcjoxcHggc29saWQgI2FlZDBlYTtiYWNrZ3JvdW5kOiNkZWVkZjcgdXJsKCJpbWFnZXMvdWktYmdfaGlnaGxpZ2h0LXNvZnRfMTAwX2RlZWRmN18xeDEwMC5wbmciKSA1MCUgNTAlIHJlcGVhdC14O2NvbG9yOiMyMjI7Zm9udC13ZWlnaHQ6Ym9sZH0udWktd2lkZ2V0LWhlYWRlciBhe2NvbG9yOiMyMjJ9LnVpLXN0YXRlLWRlZmF1bHQsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1kZWZhdWx0LC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1kZWZhdWx0LC51aS1idXR0b24saHRtbCAudWktYnV0dG9uLnVpLXN0YXRlLWRpc2FibGVkOmhvdmVyLGh0bWwgLnVpLWJ1dHRvbi51aS1zdGF0ZS1kaXNhYmxlZDphY3RpdmV7Ym9yZGVyOjFweCBzb2xpZCAjYWVkMGVhO2JhY2tncm91bmQ6I2Q3ZWJmOSB1cmwoImltYWdlcy91aS1iZ19nbGFzc184MF9kN2ViZjlfMXg0MDAucG5nIikgNTAlIDUwJSByZXBlYXQteDtmb250LXdlaWdodDpib2xkO2NvbG9yOiMyNzc5YWF9LnVpLXN0YXRlLWRlZmF1bHQgYSwudWktc3RhdGUtZGVmYXVsdCBhOmxpbmssLnVpLXN0YXRlLWRlZmF1bHQgYTp2aXNpdGVkLGEudWktYnV0dG9uLGE6bGluay51aS1idXR0b24sYTp2aXNpdGVkLnVpLWJ1dHRvbiwudWktYnV0dG9ue2NvbG9yOiMyNzc5YWE7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnVpLXN0YXRlLWhvdmVyLC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtaG92ZXIsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWhvdmVyLC51aS1zdGF0ZS1mb2N1cywudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWZvY3VzLC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1mb2N1cywudWktYnV0dG9uOmhvdmVyLC51aS1idXR0b246Zm9jdXN7Ym9yZGVyOjFweCBzb2xpZCAjNzRiMmUyO2JhY2tncm91bmQ6I2U0ZjFmYiB1cmwoImltYWdlcy91aS1iZ19nbGFzc18xMDBfZTRmMWZiXzF4NDAwLnBuZyIpIDUwJSA1MCUgcmVwZWF0LXg7Zm9udC13ZWlnaHQ6Ym9sZDtjb2xvcjojMDA3MGEzfS51aS1zdGF0ZS1ob3ZlciBhLC51aS1zdGF0ZS1ob3ZlciBhOmhvdmVyLC51aS1zdGF0ZS1ob3ZlciBhOmxpbmssLnVpLXN0YXRlLWhvdmVyIGE6dmlzaXRlZCwudWktc3RhdGUtZm9jdXMgYSwudWktc3RhdGUtZm9jdXMgYTpob3ZlciwudWktc3RhdGUtZm9jdXMgYTpsaW5rLC51aS1zdGF0ZS1mb2N1cyBhOnZpc2l0ZWQsYS51aS1idXR0b246aG92ZXIsYS51aS1idXR0b246Zm9jdXN7Y29sb3I6IzAwNzBhMzt0ZXh0LWRlY29yYXRpb246bm9uZX0udWktdmlzdWFsLWZvY3Vze2JveC1zaGFkb3c6MCAwIDNweCAxcHggcmdiKDk0LDE1OCwyMTQpfS51aS1zdGF0ZS1hY3RpdmUsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1hY3RpdmUsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWFjdGl2ZSxhLnVpLWJ1dHRvbjphY3RpdmUsLnVpLWJ1dHRvbjphY3RpdmUsLnVpLWJ1dHRvbi51aS1zdGF0ZS1hY3RpdmU6aG92ZXJ7Ym9yZGVyOjFweCBzb2xpZCAjMjY5NGU4O2JhY2tncm91bmQ6IzNiYWFlMyB1cmwoImltYWdlcy91aS1iZ19nbGFzc181MF8zYmFhZTNfMXg0MDAucG5nIikgNTAlIDUwJSByZXBlYXQteDtmb250LXdlaWdodDpib2xkO2NvbG9yOiNmZmZ9LnVpLWljb24tYmFja2dyb3VuZCwudWktc3RhdGUtYWN0aXZlIC51aS1pY29uLWJhY2tncm91bmR7Ym9yZGVyOiMyNjk0ZTg7YmFja2dyb3VuZC1jb2xvcjojZmZmfS51aS1zdGF0ZS1hY3RpdmUgYSwudWktc3RhdGUtYWN0aXZlIGE6bGluaywudWktc3RhdGUtYWN0aXZlIGE6dmlzaXRlZHtjb2xvcjojZmZmO3RleHQtZGVjb3JhdGlvbjpub25lfS51aS1zdGF0ZS1oaWdobGlnaHQsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1oaWdobGlnaHQsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWhpZ2hsaWdodHtib3JkZXI6MXB4IHNvbGlkICNmOWRkMzQ7YmFja2dyb3VuZDojZmZlZjhmIHVybCgiaW1hZ2VzL3VpLWJnX2hpZ2hsaWdodC1zb2Z0XzI1X2ZmZWY4Zl8xeDEwMC5wbmciKSA1MCUgdG9wIHJlcGVhdC14O2NvbG9yOiMzNjM2MzZ9LnVpLXN0YXRlLWNoZWNrZWR7Ym9yZGVyOjFweCBzb2xpZCAjZjlkZDM0O2JhY2tncm91bmQ6I2ZmZWY4Zn0udWktc3RhdGUtaGlnaGxpZ2h0IGEsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1oaWdobGlnaHQgYSwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtaGlnaGxpZ2h0IGF7Y29sb3I6IzM2MzYzNn0udWktc3RhdGUtZXJyb3IsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1lcnJvciwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZXJyb3J7Ym9yZGVyOjFweCBzb2xpZCAjY2QwYTBhO2JhY2tncm91bmQ6I2NkMGEwYTtjb2xvcjojZmZmfS51aS1zdGF0ZS1lcnJvciBhLC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZXJyb3IgYSwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZXJyb3IgYXtjb2xvcjojZmZmfS51aS1zdGF0ZS1lcnJvci10ZXh0LC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZXJyb3ItdGV4dCwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZXJyb3ItdGV4dHtjb2xvcjojZmZmfS51aS1wcmlvcml0eS1wcmltYXJ5LC51aS13aWRnZXQtY29udGVudCAudWktcHJpb3JpdHktcHJpbWFyeSwudWktd2lkZ2V0LWhlYWRlciAudWktcHJpb3JpdHktcHJpbWFyeXtmb250LXdlaWdodDpib2xkfS51aS1wcmlvcml0eS1zZWNvbmRhcnksLnVpLXdpZGdldC1jb250ZW50IC51aS1wcmlvcml0eS1zZWNvbmRhcnksLnVpLXdpZGdldC1oZWFkZXIgLnVpLXByaW9yaXR5LXNlY29uZGFyeXtvcGFjaXR5Oi43O2ZpbHRlcjpBbHBoYShPcGFjaXR5PTcwKTtmb250LXdlaWdodDpub3JtYWx9LnVpLXN0YXRlLWRpc2FibGVkLC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZGlzYWJsZWQsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWRpc2FibGVke29wYWNpdHk6LjM1O2ZpbHRlcjpBbHBoYShPcGFjaXR5PTM1KTtiYWNrZ3JvdW5kLWltYWdlOm5vbmV9LnVpLXN0YXRlLWRpc2FibGVkIC51aS1pY29ue2ZpbHRlcjpBbHBoYShPcGFjaXR5PTM1KX0udWktaWNvbnt3aWR0aDoxNnB4O2hlaWdodDoxNnB4fS51aS1pY29uLC51aS13aWRnZXQtY29udGVudCAudWktaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybCgiaW1hZ2VzL3VpLWljb25zXzcyYTdjZl8yNTZ4MjQwLnBuZyIpfS51aS13aWRnZXQtaGVhZGVyIC51aS1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKCJpbWFnZXMvdWktaWNvbnNfNzJhN2NmXzI1NngyNDAucG5nIil9LnVpLXN0YXRlLWhvdmVyIC51aS1pY29uLC51aS1zdGF0ZS1mb2N1cyAudWktaWNvbiwudWktYnV0dG9uOmhvdmVyIC51aS1pY29uLC51aS1idXR0b246Zm9jdXMgLnVpLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoImltYWdlcy91aS1pY29uc18yNjk0ZThfMjU2eDI0MC5wbmciKX0udWktc3RhdGUtYWN0aXZlIC51aS1pY29uLC51aS1idXR0b246YWN0aXZlIC51aS1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKCJpbWFnZXMvdWktaWNvbnNfZmZmZmZmXzI1NngyNDAucG5nIil9LnVpLXN0YXRlLWhpZ2hsaWdodCAudWktaWNvbiwudWktYnV0dG9uIC51aS1zdGF0ZS1oaWdobGlnaHQudWktaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybCgiaW1hZ2VzL3VpLWljb25zXzJlODNmZl8yNTZ4MjQwLnBuZyIpfS51aS1zdGF0ZS1lcnJvciAudWktaWNvbiwudWktc3RhdGUtZXJyb3ItdGV4dCAudWktaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybCgiaW1hZ2VzL3VpLWljb25zX2ZmZmZmZl8yNTZ4MjQwLnBuZyIpfS51aS1idXR0b24gLnVpLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoImltYWdlcy91aS1pY29uc18zZDgwYjNfMjU2eDI0MC5wbmciKX0udWktaWNvbi1ibGFua3tiYWNrZ3JvdW5kLXBvc2l0aW9uOjE2cHggMTZweH0udWktaWNvbi1jYXJldC0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjowIDB9LnVpLWljb24tY2FyZXQtMS1uZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IDB9LnVpLWljb24tY2FyZXQtMS1le2JhY2tncm91bmQtcG9zaXRpb246LTMycHggMH0udWktaWNvbi1jYXJldC0xLXNle2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggMH0udWktaWNvbi1jYXJldC0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNjVweCAwfS51aS1pY29uLWNhcmV0LTEtc3d7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAwfS51aS1pY29uLWNhcmV0LTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IDB9LnVpLWljb24tY2FyZXQtMS1ud3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAwfS51aS1pY29uLWNhcmV0LTItbi1ze2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IDB9LnVpLWljb24tY2FyZXQtMi1lLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggMH0udWktaWNvbi10cmlhbmdsZS0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTEtbmV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0xLXNle2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTY1cHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMS1zd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTEtbnd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMi1uLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMi1lLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTE2cHh9LnVpLWljb24tYXJyb3ctMS1ue2JhY2tncm91bmQtcG9zaXRpb246MCAtMzJweH0udWktaWNvbi1hcnJvdy0xLW5le2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTMycHh9LnVpLWljb24tYXJyb3ctMS1le2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTMycHh9LnVpLWljb24tYXJyb3ctMS1zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0zMnB4fS51aS1pY29uLWFycm93LTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NXB4IC0zMnB4fS51aS1pY29uLWFycm93LTEtc3d7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMzJweH0udWktaWNvbi1hcnJvdy0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMzJweH0udWktaWNvbi1hcnJvdy0xLW53e2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC0zMnB4fS51aS1pY29uLWFycm93LTItbi1ze2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC0zMnB4fS51aS1pY29uLWFycm93LTItbmUtc3d7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTMycHh9LnVpLWljb24tYXJyb3ctMi1lLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTYwcHggLTMycHh9LnVpLWljb24tYXJyb3ctMi1zZS1ud3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNzZweCAtMzJweH0udWktaWNvbi1hcnJvd3N0b3AtMS1ue2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC0zMnB4fS51aS1pY29uLWFycm93c3RvcC0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMjA4cHggLTMycHh9LnVpLWljb24tYXJyb3dzdG9wLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMjRweCAtMzJweH0udWktaWNvbi1hcnJvd3N0b3AtMS13e2JhY2tncm91bmQtcG9zaXRpb246LTI0MHB4IC0zMnB4fS51aS1pY29uLWFycm93dGhpY2stMS1ue2JhY2tncm91bmQtcG9zaXRpb246MXB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMS1uZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMS1le2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0xLXNle2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTEtc3d7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMS1ud3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTItbi1ze2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMi1uZS1zd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTItZS13e2JhY2tncm91bmQtcG9zaXRpb246LTE2MHB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMi1zZS1ud3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNzZweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrc3RvcC0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGlja3N0b3AtMS1le2JhY2tncm91bmQtcG9zaXRpb246LTIwOHB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2tzdG9wLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMjRweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrc3RvcC0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMjQwcHggLTQ4cHh9LnVpLWljb24tYXJyb3dyZXR1cm50aGljay0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjowIC02NHB4fS51aS1pY29uLWFycm93cmV0dXJudGhpY2stMS1ue2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTY0cHh9LnVpLWljb24tYXJyb3dyZXR1cm50aGljay0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtNjRweH0udWktaWNvbi1hcnJvd3JldHVybnRoaWNrLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC02NHB4fS51aS1pY29uLWFycm93cmV0dXJuLTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC02NHB4fS51aS1pY29uLWFycm93cmV0dXJuLTEtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC02NHB4fS51aS1pY29uLWFycm93cmV0dXJuLTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC02NHB4fS51aS1pY29uLWFycm93cmV0dXJuLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtNjRweH0udWktaWNvbi1hcnJvd3JlZnJlc2gtMS13e2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC02NHB4fS51aS1pY29uLWFycm93cmVmcmVzaC0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTY0cHh9LnVpLWljb24tYXJyb3dyZWZyZXNoLTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjBweCAtNjRweH0udWktaWNvbi1hcnJvd3JlZnJlc2gtMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTE3NnB4IC02NHB4fS51aS1pY29uLWFycm93LTR7YmFja2dyb3VuZC1wb3NpdGlvbjowIC04MHB4fS51aS1pY29uLWFycm93LTQtZGlhZ3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC04MHB4fS51aS1pY29uLWV4dGxpbmt7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtODBweH0udWktaWNvbi1uZXd3aW57YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtODBweH0udWktaWNvbi1yZWZyZXNoe2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTgwcHh9LnVpLWljb24tc2h1ZmZsZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC04MHB4fS51aS1pY29uLXRyYW5zZmVyLWUtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC04MHB4fS51aS1pY29uLXRyYW5zZmVydGhpY2stZS13e2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC04MHB4fS51aS1pY29uLWZvbGRlci1jb2xsYXBzZWR7YmFja2dyb3VuZC1wb3NpdGlvbjowIC05NnB4fS51aS1pY29uLWZvbGRlci1vcGVue2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTk2cHh9LnVpLWljb24tZG9jdW1lbnR7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtOTZweH0udWktaWNvbi1kb2N1bWVudC1ie2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTk2cHh9LnVpLWljb24tbm90ZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC05NnB4fS51aS1pY29uLW1haWwtY2xvc2Vke2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTk2cHh9LnVpLWljb24tbWFpbC1vcGVue2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTk2cHh9LnVpLWljb24tc3VpdGNhc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTk2cHh9LnVpLWljb24tY29tbWVudHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtOTZweH0udWktaWNvbi1wZXJzb257YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTk2cHh9LnVpLWljb24tcHJpbnR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTYwcHggLTk2cHh9LnVpLWljb24tdHJhc2h7YmFja2dyb3VuZC1wb3NpdGlvbjotMTc2cHggLTk2cHh9LnVpLWljb24tbG9ja2Vke2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC05NnB4fS51aS1pY29uLXVubG9ja2Vke2JhY2tncm91bmQtcG9zaXRpb246LTIwOHB4IC05NnB4fS51aS1pY29uLWJvb2ttYXJre2JhY2tncm91bmQtcG9zaXRpb246LTIyNHB4IC05NnB4fS51aS1pY29uLXRhZ3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNDBweCAtOTZweH0udWktaWNvbi1ob21le2JhY2tncm91bmQtcG9zaXRpb246MCAtMTEycHh9LnVpLWljb24tZmxhZ3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0xMTJweH0udWktaWNvbi1jYWxlbmRhcntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0xMTJweH0udWktaWNvbi1jYXJ0e2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTExMnB4fS51aS1pY29uLXBlbmNpbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0xMTJweH0udWktaWNvbi1jbG9ja3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xMTJweH0udWktaWNvbi1kaXNre2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTExMnB4fS51aS1pY29uLWNhbGN1bGF0b3J7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTExMnB4fS51aS1pY29uLXpvb21pbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtMTEycHh9LnVpLWljb24tem9vbW91dHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtMTEycHh9LnVpLWljb24tc2VhcmNoe2JhY2tncm91bmQtcG9zaXRpb246LTE2MHB4IC0xMTJweH0udWktaWNvbi13cmVuY2h7YmFja2dyb3VuZC1wb3NpdGlvbjotMTc2cHggLTExMnB4fS51aS1pY29uLWdlYXJ7YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggLTExMnB4fS51aS1pY29uLWhlYXJ0e2JhY2tncm91bmQtcG9zaXRpb246LTIwOHB4IC0xMTJweH0udWktaWNvbi1zdGFye2JhY2tncm91bmQtcG9zaXRpb246LTIyNHB4IC0xMTJweH0udWktaWNvbi1saW5re2JhY2tncm91bmQtcG9zaXRpb246LTI0MHB4IC0xMTJweH0udWktaWNvbi1jYW5jZWx7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xMjhweH0udWktaWNvbi1wbHVze2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTEyOHB4fS51aS1pY29uLXBsdXN0aGlja3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0xMjhweH0udWktaWNvbi1taW51c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0xMjhweH0udWktaWNvbi1taW51c3RoaWNre2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTEyOHB4fS51aS1pY29uLWNsb3Nle2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTEyOHB4fS51aS1pY29uLWNsb3NldGhpY2t7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMTI4cHh9LnVpLWljb24ta2V5e2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC0xMjhweH0udWktaWNvbi1saWdodGJ1bGJ7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTEyOHB4fS51aS1pY29uLXNjaXNzb3Jze2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC0xMjhweH0udWktaWNvbi1jbGlwYm9hcmR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTYwcHggLTEyOHB4fS51aS1pY29uLWNvcHl7YmFja2dyb3VuZC1wb3NpdGlvbjotMTc2cHggLTEyOHB4fS51aS1pY29uLWNvbnRhY3R7YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggLTEyOHB4fS51aS1pY29uLWltYWdle2JhY2tncm91bmQtcG9zaXRpb246LTIwOHB4IC0xMjhweH0udWktaWNvbi12aWRlb3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMjRweCAtMTI4cHh9LnVpLWljb24tc2NyaXB0e2JhY2tncm91bmQtcG9zaXRpb246LTI0MHB4IC0xMjhweH0udWktaWNvbi1hbGVydHtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTE0NHB4fS51aS1pY29uLWluZm97YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMTQ0cHh9LnVpLWljb24tbm90aWNle2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTE0NHB4fS51aS1pY29uLWhlbHB7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMTQ0cHh9LnVpLWljb24tY2hlY2t7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtMTQ0cHh9LnVpLWljb24tYnVsbGV0e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTE0NHB4fS51aS1pY29uLXJhZGlvLW9ue2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTE0NHB4fS51aS1pY29uLXJhZGlvLW9mZntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtMTQ0cHh9LnVpLWljb24tcGluLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTE0NHB4fS51aS1pY29uLXBpbi1ze2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC0xNDRweH0udWktaWNvbi1wbGF5e2JhY2tncm91bmQtcG9zaXRpb246MCAtMTYwcHh9LnVpLWljb24tcGF1c2V7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMTYwcHh9LnVpLWljb24tc2Vlay1uZXh0e2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTE2MHB4fS51aS1pY29uLXNlZWstcHJldntiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0xNjBweH0udWktaWNvbi1zZWVrLWVuZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0xNjBweH0udWktaWNvbi1zZWVrLXN0YXJ0e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTE2MHB4fS51aS1pY29uLXNlZWstZmlyc3R7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMTYwcHh9LnVpLWljb24tc3RvcHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xNjBweH0udWktaWNvbi1lamVjdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtMTYwcHh9LnVpLWljb24tdm9sdW1lLW9mZntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtMTYwcHh9LnVpLWljb24tdm9sdW1lLW9ue2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC0xNjBweH0udWktaWNvbi1wb3dlcntiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTE3NnB4fS51aS1pY29uLXNpZ25hbC1kaWFne2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTE3NnB4fS51aS1pY29uLXNpZ25hbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0xNzZweH0udWktaWNvbi1iYXR0ZXJ5LTB7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMTc2cHh9LnVpLWljb24tYmF0dGVyeS0xe2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTE3NnB4fS51aS1pY29uLWJhdHRlcnktMntiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xNzZweH0udWktaWNvbi1iYXR0ZXJ5LTN7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMTc2cHh9LnVpLWljb24tY2lyY2xlLXBsdXN7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xOTJweH0udWktaWNvbi1jaXJjbGUtbWludXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLWNsb3Nle2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS10cmlhbmdsZS1le2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS10cmlhbmdsZS1ze2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS10cmlhbmdsZS13e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS10cmlhbmdsZS1ue2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS1hcnJvdy1le2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtYXJyb3ctc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLWFycm93LXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS1hcnJvdy1ue2JhY2tncm91bmQtcG9zaXRpb246LTE2MHB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtem9vbWlue2JhY2tncm91bmQtcG9zaXRpb246LTE3NnB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtem9vbW91dHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xOTJweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLWNoZWNre2JhY2tncm91bmQtcG9zaXRpb246LTIwOHB4IC0xOTJweH0udWktaWNvbi1jaXJjbGVzbWFsbC1wbHVze2JhY2tncm91bmQtcG9zaXRpb246MCAtMjA4cHh9LnVpLWljb24tY2lyY2xlc21hbGwtbWludXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMjA4cHh9LnVpLWljb24tY2lyY2xlc21hbGwtY2xvc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMjA4cHh9LnVpLWljb24tc3F1YXJlc21hbGwtcGx1c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0yMDhweH0udWktaWNvbi1zcXVhcmVzbWFsbC1taW51c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0yMDhweH0udWktaWNvbi1zcXVhcmVzbWFsbC1jbG9zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0yMDhweH0udWktaWNvbi1ncmlwLWRvdHRlZC12ZXJ0aWNhbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTIyNHB4fS51aS1pY29uLWdyaXAtZG90dGVkLWhvcml6b250YWx7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMjI0cHh9LnVpLWljb24tZ3JpcC1zb2xpZC12ZXJ0aWNhbHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0yMjRweH0udWktaWNvbi1ncmlwLXNvbGlkLWhvcml6b250YWx7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMjI0cHh9LnVpLWljb24tZ3JpcHNtYWxsLWRpYWdvbmFsLXNle2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTIyNHB4fS51aS1pY29uLWdyaXAtZGlhZ29uYWwtc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMjI0cHh9LnVpLWNvcm5lci1hbGwsLnVpLWNvcm5lci10b3AsLnVpLWNvcm5lci1sZWZ0LC51aS1jb3JuZXItdGx7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czo2cHh9LnVpLWNvcm5lci1hbGwsLnVpLWNvcm5lci10b3AsLnVpLWNvcm5lci1yaWdodCwudWktY29ybmVyLXRye2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjZweH0udWktY29ybmVyLWFsbCwudWktY29ybmVyLWJvdHRvbSwudWktY29ybmVyLWxlZnQsLnVpLWNvcm5lci1ibHtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjZweH0udWktY29ybmVyLWFsbCwudWktY29ybmVyLWJvdHRvbSwudWktY29ybmVyLXJpZ2h0LC51aS1jb3JuZXItYnJ7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NnB4fS51aS13aWRnZXQtb3ZlcmxheXtiYWNrZ3JvdW5kOiNlZWUgdXJsKCJpbWFnZXMvdWktYmdfZGlhZ29uYWxzLXRoaWNrXzkwX2VlZWVlZV80MHg0MC5wbmciKSA1MCUgNTAlIHJlcGVhdDtvcGFjaXR5Oi44O2ZpbHRlcjpBbHBoYShPcGFjaXR5PTgwKX0udWktd2lkZ2V0LXNoYWRvd3std2Via2l0LWJveC1zaGFkb3c6LTdweCAtN3B4IDdweCAjMDAwO2JveC1zaGFkb3c6LTdweCAtN3B4IDdweCAjMDAwfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/jquery-ui.custom.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIGpRdWVyeSBVSSAtIHYxLjExLjIgLSAyMDE0LTEwLTE3CiogaHR0cDovL2pxdWVyeXVpLmNvbQoqIENvcHlyaWdodCAyMDE0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnM7IExpY2Vuc2VkIE1JVCAqLwooZnVuY3Rpb24oZSl7ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJqcXVlcnkiXSxlKTplKGpRdWVyeSl9KShmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQscyl7dmFyIG4sYSxvLHI9dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJhcmVhIj09PXI/KG49dC5wYXJlbnROb2RlLGE9bi5uYW1lLHQuaHJlZiYmYSYmIm1hcCI9PT1uLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk/KG89ZSgiaW1nW3VzZW1hcD0nIyIrYSsiJ10iKVswXSwhIW8mJmkobykpOiExKTooL2lucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0Ly50ZXN0KHIpPyF0LmRpc2FibGVkOiJhIj09PXI/dC5ocmVmfHxzOnMpJiZpKHQpfWZ1bmN0aW9uIGkodCl7cmV0dXJuIGUuZXhwci5maWx0ZXJzLnZpc2libGUodCkmJiFlKHQpLnBhcmVudHMoKS5hZGRCYWNrKCkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuImhpZGRlbiI9PT1lLmNzcyh0aGlzLCJ2aXNpYmlsaXR5Iil9KS5sZW5ndGh9ZS51aT1lLnVpfHx7fSxlLmV4dGVuZChlLnVpLHt2ZXJzaW9uOiIxLjExLjIiLGtleUNvZGU6e0JBQ0tTUEFDRTo4LENPTU1BOjE4OCxERUxFVEU6NDYsRE9XTjo0MCxFTkQ6MzUsRU5URVI6MTMsRVNDQVBFOjI3LEhPTUU6MzYsTEVGVDozNyxQQUdFX0RPV046MzQsUEFHRV9VUDozMyxQRVJJT0Q6MTkwLFJJR0hUOjM5LFNQQUNFOjMyLFRBQjo5LFVQOjM4fX0pLGUuZm4uZXh0ZW5kKHtzY3JvbGxQYXJlbnQ6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5jc3MoInBvc2l0aW9uIikscz0iYWJzb2x1dGUiPT09aSxuPXQ/LyhhdXRvfHNjcm9sbHxoaWRkZW4pLzovKGF1dG98c2Nyb2xsKS8sYT10aGlzLnBhcmVudHMoKS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpO3JldHVybiBzJiYic3RhdGljIj09PXQuY3NzKCJwb3NpdGlvbiIpPyExOm4udGVzdCh0LmNzcygib3ZlcmZsb3ciKSt0LmNzcygib3ZlcmZsb3cteSIpK3QuY3NzKCJvdmVyZmxvdy14IikpfSkuZXEoMCk7cmV0dXJuImZpeGVkIiE9PWkmJmEubGVuZ3RoP2E6ZSh0aGlzWzBdLm93bmVyRG9jdW1lbnR8fGRvY3VtZW50KX0sdW5pcXVlSWQ6ZnVuY3Rpb24oKXt2YXIgZT0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt0aGlzLmlkfHwodGhpcy5pZD0idWktaWQtIisgKytlKX0pfX0oKSxyZW1vdmVVbmlxdWVJZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXsvXnVpLWlkLVxkKyQvLnRlc3QodGhpcy5pZCkmJmUodGhpcykucmVtb3ZlQXR0cigiaWQiKX0pfX0pLGUuZXh0ZW5kKGUuZXhwclsiOiJdLHtkYXRhOmUuZXhwci5jcmVhdGVQc2V1ZG8/ZS5leHByLmNyZWF0ZVBzZXVkbyhmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oaSl7cmV0dXJuISFlLmRhdGEoaSx0KX19KTpmdW5jdGlvbih0LGkscyl7cmV0dXJuISFlLmRhdGEodCxzWzNdKX0sZm9jdXNhYmxlOmZ1bmN0aW9uKGkpe3JldHVybiB0KGksIWlzTmFOKGUuYXR0cihpLCJ0YWJpbmRleCIpKSl9LHRhYmJhYmxlOmZ1bmN0aW9uKGkpe3ZhciBzPWUuYXR0cihpLCJ0YWJpbmRleCIpLG49aXNOYU4ocyk7cmV0dXJuKG58fHM+PTApJiZ0KGksIW4pfX0pLGUoIjxhPiIpLm91dGVyV2lkdGgoMSkuanF1ZXJ5fHxlLmVhY2goWyJXaWR0aCIsIkhlaWdodCJdLGZ1bmN0aW9uKHQsaSl7ZnVuY3Rpb24gcyh0LGkscyxhKXtyZXR1cm4gZS5lYWNoKG4sZnVuY3Rpb24oKXtpLT1wYXJzZUZsb2F0KGUuY3NzKHQsInBhZGRpbmciK3RoaXMpKXx8MCxzJiYoaS09cGFyc2VGbG9hdChlLmNzcyh0LCJib3JkZXIiK3RoaXMrIldpZHRoIikpfHwwKSxhJiYoaS09cGFyc2VGbG9hdChlLmNzcyh0LCJtYXJnaW4iK3RoaXMpKXx8MCl9KSxpfXZhciBuPSJXaWR0aCI9PT1pP1siTGVmdCIsIlJpZ2h0Il06WyJUb3AiLCJCb3R0b20iXSxhPWkudG9Mb3dlckNhc2UoKSxvPXtpbm5lcldpZHRoOmUuZm4uaW5uZXJXaWR0aCxpbm5lckhlaWdodDplLmZuLmlubmVySGVpZ2h0LG91dGVyV2lkdGg6ZS5mbi5vdXRlcldpZHRoLG91dGVySGVpZ2h0OmUuZm4ub3V0ZXJIZWlnaHR9O2UuZm5bImlubmVyIitpXT1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dD9vWyJpbm5lciIraV0uY2FsbCh0aGlzKTp0aGlzLmVhY2goZnVuY3Rpb24oKXtlKHRoaXMpLmNzcyhhLHModGhpcyx0KSsicHgiKX0pfSxlLmZuWyJvdXRlciIraV09ZnVuY3Rpb24odCxuKXtyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIHQ/b1sib3V0ZXIiK2ldLmNhbGwodGhpcyx0KTp0aGlzLmVhY2goZnVuY3Rpb24oKXtlKHRoaXMpLmNzcyhhLHModGhpcyx0LCEwLG4pKyJweCIpfSl9fSksZS5mbi5hZGRCYWNrfHwoZS5mbi5hZGRCYWNrPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmFkZChudWxsPT1lP3RoaXMucHJldk9iamVjdDp0aGlzLnByZXZPYmplY3QuZmlsdGVyKGUpKX0pLGUoIjxhPiIpLmRhdGEoImEtYiIsImEiKS5yZW1vdmVEYXRhKCJhLWIiKS5kYXRhKCJhLWIiKSYmKGUuZm4ucmVtb3ZlRGF0YT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oaSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dC5jYWxsKHRoaXMsZS5jYW1lbENhc2UoaSkpOnQuY2FsbCh0aGlzKX19KGUuZm4ucmVtb3ZlRGF0YSkpLGUudWkuaWU9ISEvbXNpZSBbXHcuXSsvLmV4ZWMobmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKSxlLmZuLmV4dGVuZCh7Zm9jdXM6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGkscyl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBpP3RoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB0PXRoaXM7c2V0VGltZW91dChmdW5jdGlvbigpe2UodCkuZm9jdXMoKSxzJiZzLmNhbGwodCl9LGkpfSk6dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fShlLmZuLmZvY3VzKSxkaXNhYmxlU2VsZWN0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9Im9uc2VsZWN0c3RhcnQiaW4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik/InNlbGVjdHN0YXJ0IjoibW91c2Vkb3duIjtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5iaW5kKGUrIi51aS1kaXNhYmxlU2VsZWN0aW9uIixmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCl9KX19KCksZW5hYmxlU2VsZWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5iaW5kKCIudWktZGlzYWJsZVNlbGVjdGlvbiIpfSx6SW5kZXg6ZnVuY3Rpb24odCl7aWYodm9pZCAwIT09dClyZXR1cm4gdGhpcy5jc3MoInpJbmRleCIsdCk7aWYodGhpcy5sZW5ndGgpZm9yKHZhciBpLHMsbj1lKHRoaXNbMF0pO24ubGVuZ3RoJiZuWzBdIT09ZG9jdW1lbnQ7KXtpZihpPW4uY3NzKCJwb3NpdGlvbiIpLCgiYWJzb2x1dGUiPT09aXx8InJlbGF0aXZlIj09PWl8fCJmaXhlZCI9PT1pKSYmKHM9cGFyc2VJbnQobi5jc3MoInpJbmRleCIpLDEwKSwhaXNOYU4ocykmJjAhPT1zKSlyZXR1cm4gcztuPW4ucGFyZW50KCl9cmV0dXJuIDB9fSksZS51aS5wbHVnaW49e2FkZDpmdW5jdGlvbih0LGkscyl7dmFyIG4sYT1lLnVpW3RdLnByb3RvdHlwZTtmb3IobiBpbiBzKWEucGx1Z2luc1tuXT1hLnBsdWdpbnNbbl18fFtdLGEucGx1Z2luc1tuXS5wdXNoKFtpLHNbbl1dKX0sY2FsbDpmdW5jdGlvbihlLHQsaSxzKXt2YXIgbixhPWUucGx1Z2luc1t0XTtpZihhJiYoc3x8ZS5lbGVtZW50WzBdLnBhcmVudE5vZGUmJjExIT09ZS5lbGVtZW50WzBdLnBhcmVudE5vZGUubm9kZVR5cGUpKWZvcihuPTA7YS5sZW5ndGg+bjtuKyspZS5vcHRpb25zW2Fbbl1bMF1dJiZhW25dWzFdLmFwcGx5KGUuZWxlbWVudCxpKX19fSk7Ci8qISBqUXVlcnkgVUkgLSB2MS4xMS4yIC0gMjAxNC0xMC0xNwoqIGh0dHA6Ly9qcXVlcnl1aS5jb20KKiBDb3B5cmlnaHQgMjAxNCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzOyBMaWNlbnNlZCBNSVQgKi8KKGZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5Il0sZSk6ZShqUXVlcnkpfSkoZnVuY3Rpb24oZSl7dmFyIHQ9MCxpPUFycmF5LnByb3RvdHlwZS5zbGljZTtyZXR1cm4gZS5jbGVhbkRhdGE9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGkpe3ZhciBzLG4sYTtmb3IoYT0wO251bGwhPShuPWlbYV0pO2ErKyl0cnl7cz1lLl9kYXRhKG4sImV2ZW50cyIpLHMmJnMucmVtb3ZlJiZlKG4pLnRyaWdnZXJIYW5kbGVyKCJyZW1vdmUiKX1jYXRjaChvKXt9dChpKX19KGUuY2xlYW5EYXRhKSxlLndpZGdldD1mdW5jdGlvbih0LGkscyl7dmFyIG4sYSxvLHIsaD17fSxsPXQuc3BsaXQoIi4iKVswXTtyZXR1cm4gdD10LnNwbGl0KCIuIilbMV0sbj1sKyItIit0LHN8fChzPWksaT1lLldpZGdldCksZS5leHByWyI6Il1bbi50b0xvd2VyQ2FzZSgpXT1mdW5jdGlvbih0KXtyZXR1cm4hIWUuZGF0YSh0LG4pfSxlW2xdPWVbbF18fHt9LGE9ZVtsXVt0XSxvPWVbbF1bdF09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fY3JlYXRlV2lkZ2V0Pyhhcmd1bWVudHMubGVuZ3RoJiZ0aGlzLl9jcmVhdGVXaWRnZXQoZSx0KSx2b2lkIDApOm5ldyBvKGUsdCl9LGUuZXh0ZW5kKG8sYSx7dmVyc2lvbjpzLnZlcnNpb24sX3Byb3RvOmUuZXh0ZW5kKHt9LHMpLF9jaGlsZENvbnN0cnVjdG9yczpbXX0pLHI9bmV3IGksci5vcHRpb25zPWUud2lkZ2V0LmV4dGVuZCh7fSxyLm9wdGlvbnMpLGUuZWFjaChzLGZ1bmN0aW9uKHQscyl7cmV0dXJuIGUuaXNGdW5jdGlvbihzKT8oaFt0XT1mdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKCl7cmV0dXJuIGkucHJvdG90eXBlW3RdLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sbj1mdW5jdGlvbihlKXtyZXR1cm4gaS5wcm90b3R5cGVbdF0uYXBwbHkodGhpcyxlKX07cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQsaT10aGlzLl9zdXBlcixhPXRoaXMuX3N1cGVyQXBwbHk7cmV0dXJuIHRoaXMuX3N1cGVyPWUsdGhpcy5fc3VwZXJBcHBseT1uLHQ9cy5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5fc3VwZXI9aSx0aGlzLl9zdXBlckFwcGx5PWEsdH19KCksdm9pZCAwKTooaFt0XT1zLHZvaWQgMCl9KSxvLnByb3RvdHlwZT1lLndpZGdldC5leHRlbmQocix7d2lkZ2V0RXZlbnRQcmVmaXg6YT9yLndpZGdldEV2ZW50UHJlZml4fHx0OnR9LGgse2NvbnN0cnVjdG9yOm8sbmFtZXNwYWNlOmwsd2lkZ2V0TmFtZTp0LHdpZGdldEZ1bGxOYW1lOm59KSxhPyhlLmVhY2goYS5fY2hpbGRDb25zdHJ1Y3RvcnMsZnVuY3Rpb24odCxpKXt2YXIgcz1pLnByb3RvdHlwZTtlLndpZGdldChzLm5hbWVzcGFjZSsiLiIrcy53aWRnZXROYW1lLG8saS5fcHJvdG8pfSksZGVsZXRlIGEuX2NoaWxkQ29uc3RydWN0b3JzKTppLl9jaGlsZENvbnN0cnVjdG9ycy5wdXNoKG8pLGUud2lkZ2V0LmJyaWRnZSh0LG8pLG99LGUud2lkZ2V0LmV4dGVuZD1mdW5jdGlvbih0KXtmb3IodmFyIHMsbixhPWkuY2FsbChhcmd1bWVudHMsMSksbz0wLHI9YS5sZW5ndGg7cj5vO28rKylmb3IocyBpbiBhW29dKW49YVtvXVtzXSxhW29dLmhhc093blByb3BlcnR5KHMpJiZ2b2lkIDAhPT1uJiYodFtzXT1lLmlzUGxhaW5PYmplY3Qobik/ZS5pc1BsYWluT2JqZWN0KHRbc10pP2Uud2lkZ2V0LmV4dGVuZCh7fSx0W3NdLG4pOmUud2lkZ2V0LmV4dGVuZCh7fSxuKTpuKTtyZXR1cm4gdH0sZS53aWRnZXQuYnJpZGdlPWZ1bmN0aW9uKHQscyl7dmFyIG49cy5wcm90b3R5cGUud2lkZ2V0RnVsbE5hbWV8fHQ7ZS5mblt0XT1mdW5jdGlvbihhKXt2YXIgbz0ic3RyaW5nIj09dHlwZW9mIGEscj1pLmNhbGwoYXJndW1lbnRzLDEpLGg9dGhpcztyZXR1cm4gYT0hbyYmci5sZW5ndGg/ZS53aWRnZXQuZXh0ZW5kLmFwcGx5KG51bGwsW2FdLmNvbmNhdChyKSk6YSxvP3RoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBpLHM9ZS5kYXRhKHRoaXMsbik7cmV0dXJuImluc3RhbmNlIj09PWE/KGg9cywhMSk6cz9lLmlzRnVuY3Rpb24oc1thXSkmJiJfIiE9PWEuY2hhckF0KDApPyhpPXNbYV0uYXBwbHkocyxyKSxpIT09cyYmdm9pZCAwIT09aT8oaD1pJiZpLmpxdWVyeT9oLnB1c2hTdGFjayhpLmdldCgpKTppLCExKTp2b2lkIDApOmUuZXJyb3IoIm5vIHN1Y2ggbWV0aG9kICciK2ErIicgZm9yICIrdCsiIHdpZGdldCBpbnN0YW5jZSIpOmUuZXJyb3IoImNhbm5vdCBjYWxsIG1ldGhvZHMgb24gIit0KyIgcHJpb3IgdG8gaW5pdGlhbGl6YXRpb247ICIrImF0dGVtcHRlZCB0byBjYWxsIG1ldGhvZCAnIithKyInIil9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lLmRhdGEodGhpcyxuKTt0Pyh0Lm9wdGlvbihhfHx7fSksdC5faW5pdCYmdC5faW5pdCgpKTplLmRhdGEodGhpcyxuLG5ldyBzKGEsdGhpcykpfSksaH19LGUuV2lkZ2V0PWZ1bmN0aW9uKCl7fSxlLldpZGdldC5fY2hpbGRDb25zdHJ1Y3RvcnM9W10sZS5XaWRnZXQucHJvdG90eXBlPXt3aWRnZXROYW1lOiJ3aWRnZXQiLHdpZGdldEV2ZW50UHJlZml4OiIiLGRlZmF1bHRFbGVtZW50OiI8ZGl2PiIsb3B0aW9uczp7ZGlzYWJsZWQ6ITEsY3JlYXRlOm51bGx9LF9jcmVhdGVXaWRnZXQ6ZnVuY3Rpb24oaSxzKXtzPWUoc3x8dGhpcy5kZWZhdWx0RWxlbWVudHx8dGhpcylbMF0sdGhpcy5lbGVtZW50PWUocyksdGhpcy51dWlkPXQrKyx0aGlzLmV2ZW50TmFtZXNwYWNlPSIuIit0aGlzLndpZGdldE5hbWUrdGhpcy51dWlkLHRoaXMuYmluZGluZ3M9ZSgpLHRoaXMuaG92ZXJhYmxlPWUoKSx0aGlzLmZvY3VzYWJsZT1lKCkscyE9PXRoaXMmJihlLmRhdGEocyx0aGlzLndpZGdldEZ1bGxOYW1lLHRoaXMpLHRoaXMuX29uKCEwLHRoaXMuZWxlbWVudCx7cmVtb3ZlOmZ1bmN0aW9uKGUpe2UudGFyZ2V0PT09cyYmdGhpcy5kZXN0cm95KCl9fSksdGhpcy5kb2N1bWVudD1lKHMuc3R5bGU/cy5vd25lckRvY3VtZW50OnMuZG9jdW1lbnR8fHMpLHRoaXMud2luZG93PWUodGhpcy5kb2N1bWVudFswXS5kZWZhdWx0Vmlld3x8dGhpcy5kb2N1bWVudFswXS5wYXJlbnRXaW5kb3cpKSx0aGlzLm9wdGlvbnM9ZS53aWRnZXQuZXh0ZW5kKHt9LHRoaXMub3B0aW9ucyx0aGlzLl9nZXRDcmVhdGVPcHRpb25zKCksaSksdGhpcy5fY3JlYXRlKCksdGhpcy5fdHJpZ2dlcigiY3JlYXRlIixudWxsLHRoaXMuX2dldENyZWF0ZUV2ZW50RGF0YSgpKSx0aGlzLl9pbml0KCl9LF9nZXRDcmVhdGVPcHRpb25zOmUubm9vcCxfZ2V0Q3JlYXRlRXZlbnREYXRhOmUubm9vcCxfY3JlYXRlOmUubm9vcCxfaW5pdDplLm5vb3AsZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuX2Rlc3Ryb3koKSx0aGlzLmVsZW1lbnQudW5iaW5kKHRoaXMuZXZlbnROYW1lc3BhY2UpLnJlbW92ZURhdGEodGhpcy53aWRnZXRGdWxsTmFtZSkucmVtb3ZlRGF0YShlLmNhbWVsQ2FzZSh0aGlzLndpZGdldEZ1bGxOYW1lKSksdGhpcy53aWRnZXQoKS51bmJpbmQodGhpcy5ldmVudE5hbWVzcGFjZSkucmVtb3ZlQXR0cigiYXJpYS1kaXNhYmxlZCIpLnJlbW92ZUNsYXNzKHRoaXMud2lkZ2V0RnVsbE5hbWUrIi1kaXNhYmxlZCAiKyJ1aS1zdGF0ZS1kaXNhYmxlZCIpLHRoaXMuYmluZGluZ3MudW5iaW5kKHRoaXMuZXZlbnROYW1lc3BhY2UpLHRoaXMuaG92ZXJhYmxlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpLHRoaXMuZm9jdXNhYmxlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpfSxfZGVzdHJveTplLm5vb3Asd2lkZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudH0sb3B0aW9uOmZ1bmN0aW9uKHQsaSl7dmFyIHMsbixhLG89dDtpZigwPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZS53aWRnZXQuZXh0ZW5kKHt9LHRoaXMub3B0aW9ucyk7aWYoInN0cmluZyI9PXR5cGVvZiB0KWlmKG89e30scz10LnNwbGl0KCIuIiksdD1zLnNoaWZ0KCkscy5sZW5ndGgpe2ZvcihuPW9bdF09ZS53aWRnZXQuZXh0ZW5kKHt9LHRoaXMub3B0aW9uc1t0XSksYT0wO3MubGVuZ3RoLTE+YTthKyspbltzW2FdXT1uW3NbYV1dfHx7fSxuPW5bc1thXV07aWYodD1zLnBvcCgpLDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT1uW3RdP251bGw6blt0XTtuW3RdPWl9ZWxzZXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdm9pZCAwPT09dGhpcy5vcHRpb25zW3RdP251bGw6dGhpcy5vcHRpb25zW3RdO29bdF09aX1yZXR1cm4gdGhpcy5fc2V0T3B0aW9ucyhvKSx0aGlzfSxfc2V0T3B0aW9uczpmdW5jdGlvbihlKXt2YXIgdDtmb3IodCBpbiBlKXRoaXMuX3NldE9wdGlvbih0LGVbdF0pO3JldHVybiB0aGlzfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMub3B0aW9uc1tlXT10LCJkaXNhYmxlZCI9PT1lJiYodGhpcy53aWRnZXQoKS50b2dnbGVDbGFzcyh0aGlzLndpZGdldEZ1bGxOYW1lKyItZGlzYWJsZWQiLCEhdCksdCYmKHRoaXMuaG92ZXJhYmxlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpLHRoaXMuZm9jdXNhYmxlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpKSksdGhpc30sZW5hYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NldE9wdGlvbnMoe2Rpc2FibGVkOiExfSl9LGRpc2FibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2V0T3B0aW9ucyh7ZGlzYWJsZWQ6ITB9KX0sX29uOmZ1bmN0aW9uKHQsaSxzKXt2YXIgbixhPXRoaXM7ImJvb2xlYW4iIT10eXBlb2YgdCYmKHM9aSxpPXQsdD0hMSkscz8oaT1uPWUoaSksdGhpcy5iaW5kaW5ncz10aGlzLmJpbmRpbmdzLmFkZChpKSk6KHM9aSxpPXRoaXMuZWxlbWVudCxuPXRoaXMud2lkZ2V0KCkpLGUuZWFjaChzLGZ1bmN0aW9uKHMsbyl7ZnVuY3Rpb24gcigpe3JldHVybiB0fHxhLm9wdGlvbnMuZGlzYWJsZWQhPT0hMCYmIWUodGhpcykuaGFzQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIik/KCJzdHJpbmciPT10eXBlb2Ygbz9hW29dOm8pLmFwcGx5KGEsYXJndW1lbnRzKTp2b2lkIDB9InN0cmluZyIhPXR5cGVvZiBvJiYoci5ndWlkPW8uZ3VpZD1vLmd1aWR8fHIuZ3VpZHx8ZS5ndWlkKyspO3ZhciBoPXMubWF0Y2goL14oW1x3Oi1dKilccyooLiopJC8pLGw9aFsxXSthLmV2ZW50TmFtZXNwYWNlLHU9aFsyXTt1P24uZGVsZWdhdGUodSxsLHIpOmkuYmluZChsLHIpfSl9LF9vZmY6ZnVuY3Rpb24odCxpKXtpPShpfHwiIikuc3BsaXQoIiAiKS5qb2luKHRoaXMuZXZlbnROYW1lc3BhY2UrIiAiKSt0aGlzLmV2ZW50TmFtZXNwYWNlLHQudW5iaW5kKGkpLnVuZGVsZWdhdGUoaSksdGhpcy5iaW5kaW5ncz1lKHRoaXMuYmluZGluZ3Mubm90KHQpLmdldCgpKSx0aGlzLmZvY3VzYWJsZT1lKHRoaXMuZm9jdXNhYmxlLm5vdCh0KS5nZXQoKSksdGhpcy5ob3ZlcmFibGU9ZSh0aGlzLmhvdmVyYWJsZS5ub3QodCkuZ2V0KCkpfSxfZGVsYXk6ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBpKCl7cmV0dXJuKCJzdHJpbmciPT10eXBlb2YgZT9zW2VdOmUpLmFwcGx5KHMsYXJndW1lbnRzKX12YXIgcz10aGlzO3JldHVybiBzZXRUaW1lb3V0KGksdHx8MCl9LF9ob3ZlcmFibGU6ZnVuY3Rpb24odCl7dGhpcy5ob3ZlcmFibGU9dGhpcy5ob3ZlcmFibGUuYWRkKHQpLHRoaXMuX29uKHQse21vdXNlZW50ZXI6ZnVuY3Rpb24odCl7ZSh0LmN1cnJlbnRUYXJnZXQpLmFkZENsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpfSxtb3VzZWxlYXZlOmZ1bmN0aW9uKHQpe2UodC5jdXJyZW50VGFyZ2V0KS5yZW1vdmVDbGFzcygidWktc3RhdGUtaG92ZXIiKX19KX0sX2ZvY3VzYWJsZTpmdW5jdGlvbih0KXt0aGlzLmZvY3VzYWJsZT10aGlzLmZvY3VzYWJsZS5hZGQodCksdGhpcy5fb24odCx7Zm9jdXNpbjpmdW5jdGlvbih0KXtlKHQuY3VycmVudFRhcmdldCkuYWRkQ2xhc3MoInVpLXN0YXRlLWZvY3VzIil9LGZvY3Vzb3V0OmZ1bmN0aW9uKHQpe2UodC5jdXJyZW50VGFyZ2V0KS5yZW1vdmVDbGFzcygidWktc3RhdGUtZm9jdXMiKX19KX0sX3RyaWdnZXI6ZnVuY3Rpb24odCxpLHMpe3ZhciBuLGEsbz10aGlzLm9wdGlvbnNbdF07aWYocz1zfHx7fSxpPWUuRXZlbnQoaSksaS50eXBlPSh0PT09dGhpcy53aWRnZXRFdmVudFByZWZpeD90OnRoaXMud2lkZ2V0RXZlbnRQcmVmaXgrdCkudG9Mb3dlckNhc2UoKSxpLnRhcmdldD10aGlzLmVsZW1lbnRbMF0sYT1pLm9yaWdpbmFsRXZlbnQpZm9yKG4gaW4gYSluIGluIGl8fChpW25dPWFbbl0pO3JldHVybiB0aGlzLmVsZW1lbnQudHJpZ2dlcihpLHMpLCEoZS5pc0Z1bmN0aW9uKG8pJiZvLmFwcGx5KHRoaXMuZWxlbWVudFswXSxbaV0uY29uY2F0KHMpKT09PSExfHxpLmlzRGVmYXVsdFByZXZlbnRlZCgpKX19LGUuZWFjaCh7c2hvdzoiZmFkZUluIixoaWRlOiJmYWRlT3V0In0sZnVuY3Rpb24odCxpKXtlLldpZGdldC5wcm90b3R5cGVbIl8iK3RdPWZ1bmN0aW9uKHMsbixhKXsic3RyaW5nIj09dHlwZW9mIG4mJihuPXtlZmZlY3Q6bn0pO3ZhciBvLHI9bj9uPT09ITB8fCJudW1iZXIiPT10eXBlb2Ygbj9pOm4uZWZmZWN0fHxpOnQ7bj1ufHx7fSwibnVtYmVyIj09dHlwZW9mIG4mJihuPXtkdXJhdGlvbjpufSksbz0hZS5pc0VtcHR5T2JqZWN0KG4pLG4uY29tcGxldGU9YSxuLmRlbGF5JiZzLmRlbGF5KG4uZGVsYXkpLG8mJmUuZWZmZWN0cyYmZS5lZmZlY3RzLmVmZmVjdFtyXT9zW3RdKG4pOnIhPT10JiZzW3JdP3Nbcl0obi5kdXJhdGlvbixuLmVhc2luZyxhKTpzLnF1ZXVlKGZ1bmN0aW9uKGkpe2UodGhpcylbdF0oKSxhJiZhLmNhbGwoc1swXSksaSgpfSl9fSksZS53aWRnZXR9KTsKLyohIGpRdWVyeSBVSSAtIHYxLjExLjIgLSAyMDE0LTEwLTE3CiogaHR0cDovL2pxdWVyeXVpLmNvbQoqIENvcHlyaWdodCAyMDE0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnM7IExpY2Vuc2VkIE1JVCAqLwooZnVuY3Rpb24oZSl7ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJqcXVlcnkiLCIuL3dpZGdldCJdLGUpOmUoalF1ZXJ5KX0pKGZ1bmN0aW9uKGUpe3ZhciB0PSExO3JldHVybiBlKGRvY3VtZW50KS5tb3VzZXVwKGZ1bmN0aW9uKCl7dD0hMX0pLGUud2lkZ2V0KCJ1aS5tb3VzZSIse3ZlcnNpb246IjEuMTEuMiIsb3B0aW9uczp7Y2FuY2VsOiJpbnB1dCx0ZXh0YXJlYSxidXR0b24sc2VsZWN0LG9wdGlvbiIsZGlzdGFuY2U6MSxkZWxheTowfSxfbW91c2VJbml0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmVsZW1lbnQuYmluZCgibW91c2Vkb3duLiIrdGhpcy53aWRnZXROYW1lLGZ1bmN0aW9uKGUpe3JldHVybiB0Ll9tb3VzZURvd24oZSl9KS5iaW5kKCJjbGljay4iK3RoaXMud2lkZ2V0TmFtZSxmdW5jdGlvbihpKXtyZXR1cm4hMD09PWUuZGF0YShpLnRhcmdldCx0LndpZGdldE5hbWUrIi5wcmV2ZW50Q2xpY2tFdmVudCIpPyhlLnJlbW92ZURhdGEoaS50YXJnZXQsdC53aWRnZXROYW1lKyIucHJldmVudENsaWNrRXZlbnQiKSxpLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLCExKTp2b2lkIDB9KSx0aGlzLnN0YXJ0ZWQ9ITF9LF9tb3VzZURlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQudW5iaW5kKCIuIit0aGlzLndpZGdldE5hbWUpLHRoaXMuX21vdXNlTW92ZURlbGVnYXRlJiZ0aGlzLmRvY3VtZW50LnVuYmluZCgibW91c2Vtb3ZlLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlTW92ZURlbGVnYXRlKS51bmJpbmQoIm1vdXNldXAuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VVcERlbGVnYXRlKX0sX21vdXNlRG93bjpmdW5jdGlvbihpKXtpZighdCl7dGhpcy5fbW91c2VNb3ZlZD0hMSx0aGlzLl9tb3VzZVN0YXJ0ZWQmJnRoaXMuX21vdXNlVXAoaSksdGhpcy5fbW91c2VEb3duRXZlbnQ9aTt2YXIgcz10aGlzLG49MT09PWkud2hpY2gsYT0ic3RyaW5nIj09dHlwZW9mIHRoaXMub3B0aW9ucy5jYW5jZWwmJmkudGFyZ2V0Lm5vZGVOYW1lP2UoaS50YXJnZXQpLmNsb3Nlc3QodGhpcy5vcHRpb25zLmNhbmNlbCkubGVuZ3RoOiExO3JldHVybiBuJiYhYSYmdGhpcy5fbW91c2VDYXB0dXJlKGkpPyh0aGlzLm1vdXNlRGVsYXlNZXQ9IXRoaXMub3B0aW9ucy5kZWxheSx0aGlzLm1vdXNlRGVsYXlNZXR8fCh0aGlzLl9tb3VzZURlbGF5VGltZXI9c2V0VGltZW91dChmdW5jdGlvbigpe3MubW91c2VEZWxheU1ldD0hMH0sdGhpcy5vcHRpb25zLmRlbGF5KSksdGhpcy5fbW91c2VEaXN0YW5jZU1ldChpKSYmdGhpcy5fbW91c2VEZWxheU1ldChpKSYmKHRoaXMuX21vdXNlU3RhcnRlZD10aGlzLl9tb3VzZVN0YXJ0KGkpIT09ITEsIXRoaXMuX21vdXNlU3RhcnRlZCk/KGkucHJldmVudERlZmF1bHQoKSwhMCk6KCEwPT09ZS5kYXRhKGkudGFyZ2V0LHRoaXMud2lkZ2V0TmFtZSsiLnByZXZlbnRDbGlja0V2ZW50IikmJmUucmVtb3ZlRGF0YShpLnRhcmdldCx0aGlzLndpZGdldE5hbWUrIi5wcmV2ZW50Q2xpY2tFdmVudCIpLHRoaXMuX21vdXNlTW92ZURlbGVnYXRlPWZ1bmN0aW9uKGUpe3JldHVybiBzLl9tb3VzZU1vdmUoZSl9LHRoaXMuX21vdXNlVXBEZWxlZ2F0ZT1mdW5jdGlvbihlKXtyZXR1cm4gcy5fbW91c2VVcChlKX0sdGhpcy5kb2N1bWVudC5iaW5kKCJtb3VzZW1vdmUuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VNb3ZlRGVsZWdhdGUpLmJpbmQoIm1vdXNldXAuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VVcERlbGVnYXRlKSxpLnByZXZlbnREZWZhdWx0KCksdD0hMCwhMCkpOiEwfX0sX21vdXNlTW92ZTpmdW5jdGlvbih0KXtpZih0aGlzLl9tb3VzZU1vdmVkKXtpZihlLnVpLmllJiYoIWRvY3VtZW50LmRvY3VtZW50TW9kZXx8OT5kb2N1bWVudC5kb2N1bWVudE1vZGUpJiYhdC5idXR0b24pcmV0dXJuIHRoaXMuX21vdXNlVXAodCk7aWYoIXQud2hpY2gpcmV0dXJuIHRoaXMuX21vdXNlVXAodCl9cmV0dXJuKHQud2hpY2h8fHQuYnV0dG9uKSYmKHRoaXMuX21vdXNlTW92ZWQ9ITApLHRoaXMuX21vdXNlU3RhcnRlZD8odGhpcy5fbW91c2VEcmFnKHQpLHQucHJldmVudERlZmF1bHQoKSk6KHRoaXMuX21vdXNlRGlzdGFuY2VNZXQodCkmJnRoaXMuX21vdXNlRGVsYXlNZXQodCkmJih0aGlzLl9tb3VzZVN0YXJ0ZWQ9dGhpcy5fbW91c2VTdGFydCh0aGlzLl9tb3VzZURvd25FdmVudCx0KSE9PSExLHRoaXMuX21vdXNlU3RhcnRlZD90aGlzLl9tb3VzZURyYWcodCk6dGhpcy5fbW91c2VVcCh0KSksIXRoaXMuX21vdXNlU3RhcnRlZCl9LF9tb3VzZVVwOmZ1bmN0aW9uKGkpe3JldHVybiB0aGlzLmRvY3VtZW50LnVuYmluZCgibW91c2Vtb3ZlLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlTW92ZURlbGVnYXRlKS51bmJpbmQoIm1vdXNldXAuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VVcERlbGVnYXRlKSx0aGlzLl9tb3VzZVN0YXJ0ZWQmJih0aGlzLl9tb3VzZVN0YXJ0ZWQ9ITEsaS50YXJnZXQ9PT10aGlzLl9tb3VzZURvd25FdmVudC50YXJnZXQmJmUuZGF0YShpLnRhcmdldCx0aGlzLndpZGdldE5hbWUrIi5wcmV2ZW50Q2xpY2tFdmVudCIsITApLHRoaXMuX21vdXNlU3RvcChpKSksdD0hMSwhMX0sX21vdXNlRGlzdGFuY2VNZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgubWF4KE1hdGguYWJzKHRoaXMuX21vdXNlRG93bkV2ZW50LnBhZ2VYLWUucGFnZVgpLE1hdGguYWJzKHRoaXMuX21vdXNlRG93bkV2ZW50LnBhZ2VZLWUucGFnZVkpKT49dGhpcy5vcHRpb25zLmRpc3RhbmNlfSxfbW91c2VEZWxheU1ldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1vdXNlRGVsYXlNZXR9LF9tb3VzZVN0YXJ0OmZ1bmN0aW9uKCl7fSxfbW91c2VEcmFnOmZ1bmN0aW9uKCl7fSxfbW91c2VTdG9wOmZ1bmN0aW9uKCl7fSxfbW91c2VDYXB0dXJlOmZ1bmN0aW9uKCl7cmV0dXJuITB9fSl9KTsKLyohIGpRdWVyeSBVSSAtIHYxLjExLjIgLSAyMDE0LTEwLTE3CiogaHR0cDovL2pxdWVyeXVpLmNvbQoqIENvcHlyaWdodCAyMDE0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnM7IExpY2Vuc2VkIE1JVCAqLwooZnVuY3Rpb24oZSl7ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJqcXVlcnkiLCIuL2NvcmUiLCIuL21vdXNlIiwiLi93aWRnZXQiXSxlKTplKGpRdWVyeSl9KShmdW5jdGlvbihlKXtyZXR1cm4gZS53aWRnZXQoInVpLmRyYWdnYWJsZSIsZS51aS5tb3VzZSx7dmVyc2lvbjoiMS4xMS4yIix3aWRnZXRFdmVudFByZWZpeDoiZHJhZyIsb3B0aW9uczp7YWRkQ2xhc3NlczohMCxhcHBlbmRUbzoicGFyZW50IixheGlzOiExLGNvbm5lY3RUb1NvcnRhYmxlOiExLGNvbnRhaW5tZW50OiExLGN1cnNvcjoiYXV0byIsY3Vyc29yQXQ6ITEsZ3JpZDohMSxoYW5kbGU6ITEsaGVscGVyOiJvcmlnaW5hbCIsaWZyYW1lRml4OiExLG9wYWNpdHk6ITEscmVmcmVzaFBvc2l0aW9uczohMSxyZXZlcnQ6ITEscmV2ZXJ0RHVyYXRpb246NTAwLHNjb3BlOiJkZWZhdWx0IixzY3JvbGw6ITAsc2Nyb2xsU2Vuc2l0aXZpdHk6MjAsc2Nyb2xsU3BlZWQ6MjAsc25hcDohMSxzbmFwTW9kZToiYm90aCIsc25hcFRvbGVyYW5jZToyMCxzdGFjazohMSx6SW5kZXg6ITEsZHJhZzpudWxsLHN0YXJ0Om51bGwsc3RvcDpudWxsfSxfY3JlYXRlOmZ1bmN0aW9uKCl7Im9yaWdpbmFsIj09PXRoaXMub3B0aW9ucy5oZWxwZXImJnRoaXMuX3NldFBvc2l0aW9uUmVsYXRpdmUoKSx0aGlzLm9wdGlvbnMuYWRkQ2xhc3NlcyYmdGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1kcmFnZ2FibGUiKSx0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJnRoaXMuZWxlbWVudC5hZGRDbGFzcygidWktZHJhZ2dhYmxlLWRpc2FibGVkIiksdGhpcy5fc2V0SGFuZGxlQ2xhc3NOYW1lKCksdGhpcy5fbW91c2VJbml0KCl9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXt0aGlzLl9zdXBlcihlLHQpLCJoYW5kbGUiPT09ZSYmKHRoaXMuX3JlbW92ZUhhbmRsZUNsYXNzTmFtZSgpLHRoaXMuX3NldEhhbmRsZUNsYXNzTmFtZSgpKX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5oZWxwZXJ8fHRoaXMuZWxlbWVudCkuaXMoIi51aS1kcmFnZ2FibGUtZHJhZ2dpbmciKT8odGhpcy5kZXN0cm95T25DbGVhcj0hMCx2b2lkIDApOih0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLWRyYWdnYWJsZSB1aS1kcmFnZ2FibGUtZHJhZ2dpbmcgdWktZHJhZ2dhYmxlLWRpc2FibGVkIiksdGhpcy5fcmVtb3ZlSGFuZGxlQ2xhc3NOYW1lKCksdGhpcy5fbW91c2VEZXN0cm95KCksdm9pZCAwKX0sX21vdXNlQ2FwdHVyZTpmdW5jdGlvbih0KXt2YXIgaT10aGlzLm9wdGlvbnM7cmV0dXJuIHRoaXMuX2JsdXJBY3RpdmVFbGVtZW50KHQpLHRoaXMuaGVscGVyfHxpLmRpc2FibGVkfHxlKHQudGFyZ2V0KS5jbG9zZXN0KCIudWktcmVzaXphYmxlLWhhbmRsZSIpLmxlbmd0aD4wPyExOih0aGlzLmhhbmRsZT10aGlzLl9nZXRIYW5kbGUodCksdGhpcy5oYW5kbGU/KHRoaXMuX2Jsb2NrRnJhbWVzKGkuaWZyYW1lRml4PT09ITA/ImlmcmFtZSI6aS5pZnJhbWVGaXgpLCEwKTohMSl9LF9ibG9ja0ZyYW1lczpmdW5jdGlvbih0KXt0aGlzLmlmcmFtZUJsb2Nrcz10aGlzLmRvY3VtZW50LmZpbmQodCkubWFwKGZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKTtyZXR1cm4gZSgiPGRpdj4iKS5jc3MoInBvc2l0aW9uIiwiYWJzb2x1dGUiKS5hcHBlbmRUbyh0LnBhcmVudCgpKS5vdXRlcldpZHRoKHQub3V0ZXJXaWR0aCgpKS5vdXRlckhlaWdodCh0Lm91dGVySGVpZ2h0KCkpLm9mZnNldCh0Lm9mZnNldCgpKVswXX0pfSxfdW5ibG9ja0ZyYW1lczpmdW5jdGlvbigpe3RoaXMuaWZyYW1lQmxvY2tzJiYodGhpcy5pZnJhbWVCbG9ja3MucmVtb3ZlKCksZGVsZXRlIHRoaXMuaWZyYW1lQmxvY2tzKX0sX2JsdXJBY3RpdmVFbGVtZW50OmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMuZG9jdW1lbnRbMF07aWYodGhpcy5oYW5kbGVFbGVtZW50LmlzKHQudGFyZ2V0KSl0cnl7aS5hY3RpdmVFbGVtZW50JiYiYm9keSIhPT1pLmFjdGl2ZUVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmZShpLmFjdGl2ZUVsZW1lbnQpLmJsdXIoKX1jYXRjaChzKXt9fSxfbW91c2VTdGFydDpmdW5jdGlvbih0KXt2YXIgaT10aGlzLm9wdGlvbnM7cmV0dXJuIHRoaXMuaGVscGVyPXRoaXMuX2NyZWF0ZUhlbHBlcih0KSx0aGlzLmhlbHBlci5hZGRDbGFzcygidWktZHJhZ2dhYmxlLWRyYWdnaW5nIiksdGhpcy5fY2FjaGVIZWxwZXJQcm9wb3J0aW9ucygpLGUudWkuZGRtYW5hZ2VyJiYoZS51aS5kZG1hbmFnZXIuY3VycmVudD10aGlzKSx0aGlzLl9jYWNoZU1hcmdpbnMoKSx0aGlzLmNzc1Bvc2l0aW9uPXRoaXMuaGVscGVyLmNzcygicG9zaXRpb24iKSx0aGlzLnNjcm9sbFBhcmVudD10aGlzLmhlbHBlci5zY3JvbGxQYXJlbnQoITApLHRoaXMub2Zmc2V0UGFyZW50PXRoaXMuaGVscGVyLm9mZnNldFBhcmVudCgpLHRoaXMuaGFzRml4ZWRBbmNlc3Rvcj10aGlzLmhlbHBlci5wYXJlbnRzKCkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuImZpeGVkIj09PWUodGhpcykuY3NzKCJwb3NpdGlvbiIpfSkubGVuZ3RoPjAsdGhpcy5wb3NpdGlvbkFicz10aGlzLmVsZW1lbnQub2Zmc2V0KCksdGhpcy5fcmVmcmVzaE9mZnNldHModCksdGhpcy5vcmlnaW5hbFBvc2l0aW9uPXRoaXMucG9zaXRpb249dGhpcy5fZ2VuZXJhdGVQb3NpdGlvbih0LCExKSx0aGlzLm9yaWdpbmFsUGFnZVg9dC5wYWdlWCx0aGlzLm9yaWdpbmFsUGFnZVk9dC5wYWdlWSxpLmN1cnNvckF0JiZ0aGlzLl9hZGp1c3RPZmZzZXRGcm9tSGVscGVyKGkuY3Vyc29yQXQpLHRoaXMuX3NldENvbnRhaW5tZW50KCksdGhpcy5fdHJpZ2dlcigic3RhcnQiLHQpPT09ITE/KHRoaXMuX2NsZWFyKCksITEpOih0aGlzLl9jYWNoZUhlbHBlclByb3BvcnRpb25zKCksZS51aS5kZG1hbmFnZXImJiFpLmRyb3BCZWhhdmlvdXImJmUudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKHRoaXMsdCksdGhpcy5fbm9ybWFsaXplUmlnaHRCb3R0b20oKSx0aGlzLl9tb3VzZURyYWcodCwhMCksZS51aS5kZG1hbmFnZXImJmUudWkuZGRtYW5hZ2VyLmRyYWdTdGFydCh0aGlzLHQpLCEwKX0sX3JlZnJlc2hPZmZzZXRzOmZ1bmN0aW9uKGUpe3RoaXMub2Zmc2V0PXt0b3A6dGhpcy5wb3NpdGlvbkFicy50b3AtdGhpcy5tYXJnaW5zLnRvcCxsZWZ0OnRoaXMucG9zaXRpb25BYnMubGVmdC10aGlzLm1hcmdpbnMubGVmdCxzY3JvbGw6ITEscGFyZW50OnRoaXMuX2dldFBhcmVudE9mZnNldCgpLHJlbGF0aXZlOnRoaXMuX2dldFJlbGF0aXZlT2Zmc2V0KCl9LHRoaXMub2Zmc2V0LmNsaWNrPXtsZWZ0OmUucGFnZVgtdGhpcy5vZmZzZXQubGVmdCx0b3A6ZS5wYWdlWS10aGlzLm9mZnNldC50b3B9fSxfbW91c2VEcmFnOmZ1bmN0aW9uKHQsaSl7aWYodGhpcy5oYXNGaXhlZEFuY2VzdG9yJiYodGhpcy5vZmZzZXQucGFyZW50PXRoaXMuX2dldFBhcmVudE9mZnNldCgpKSx0aGlzLnBvc2l0aW9uPXRoaXMuX2dlbmVyYXRlUG9zaXRpb24odCwhMCksdGhpcy5wb3NpdGlvbkFicz10aGlzLl9jb252ZXJ0UG9zaXRpb25UbygiYWJzb2x1dGUiKSwhaSl7dmFyIHM9dGhpcy5fdWlIYXNoKCk7aWYodGhpcy5fdHJpZ2dlcigiZHJhZyIsdCxzKT09PSExKXJldHVybiB0aGlzLl9tb3VzZVVwKHt9KSwhMTt0aGlzLnBvc2l0aW9uPXMucG9zaXRpb259cmV0dXJuIHRoaXMuaGVscGVyWzBdLnN0eWxlLmxlZnQ9dGhpcy5wb3NpdGlvbi5sZWZ0KyJweCIsdGhpcy5oZWxwZXJbMF0uc3R5bGUudG9wPXRoaXMucG9zaXRpb24udG9wKyJweCIsZS51aS5kZG1hbmFnZXImJmUudWkuZGRtYW5hZ2VyLmRyYWcodGhpcyx0KSwhMX0sX21vdXNlU3RvcDpmdW5jdGlvbih0KXt2YXIgaT10aGlzLHM9ITE7cmV0dXJuIGUudWkuZGRtYW5hZ2VyJiYhdGhpcy5vcHRpb25zLmRyb3BCZWhhdmlvdXImJihzPWUudWkuZGRtYW5hZ2VyLmRyb3AodGhpcyx0KSksdGhpcy5kcm9wcGVkJiYocz10aGlzLmRyb3BwZWQsdGhpcy5kcm9wcGVkPSExKSwiaW52YWxpZCI9PT10aGlzLm9wdGlvbnMucmV2ZXJ0JiYhc3x8InZhbGlkIj09PXRoaXMub3B0aW9ucy5yZXZlcnQmJnN8fHRoaXMub3B0aW9ucy5yZXZlcnQ9PT0hMHx8ZS5pc0Z1bmN0aW9uKHRoaXMub3B0aW9ucy5yZXZlcnQpJiZ0aGlzLm9wdGlvbnMucmV2ZXJ0LmNhbGwodGhpcy5lbGVtZW50LHMpP2UodGhpcy5oZWxwZXIpLmFuaW1hdGUodGhpcy5vcmlnaW5hbFBvc2l0aW9uLHBhcnNlSW50KHRoaXMub3B0aW9ucy5yZXZlcnREdXJhdGlvbiwxMCksZnVuY3Rpb24oKXtpLl90cmlnZ2VyKCJzdG9wIix0KSE9PSExJiZpLl9jbGVhcigpfSk6dGhpcy5fdHJpZ2dlcigic3RvcCIsdCkhPT0hMSYmdGhpcy5fY2xlYXIoKSwhMX0sX21vdXNlVXA6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3VuYmxvY2tGcmFtZXMoKSxlLnVpLmRkbWFuYWdlciYmZS51aS5kZG1hbmFnZXIuZHJhZ1N0b3AodGhpcyx0KSx0aGlzLmhhbmRsZUVsZW1lbnQuaXModC50YXJnZXQpJiZ0aGlzLmVsZW1lbnQuZm9jdXMoKSxlLnVpLm1vdXNlLnByb3RvdHlwZS5fbW91c2VVcC5jYWxsKHRoaXMsdCl9LGNhbmNlbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhlbHBlci5pcygiLnVpLWRyYWdnYWJsZS1kcmFnZ2luZyIpP3RoaXMuX21vdXNlVXAoe30pOnRoaXMuX2NsZWFyKCksdGhpc30sX2dldEhhbmRsZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRpb25zLmhhbmRsZT8hIWUodC50YXJnZXQpLmNsb3Nlc3QodGhpcy5lbGVtZW50LmZpbmQodGhpcy5vcHRpb25zLmhhbmRsZSkpLmxlbmd0aDohMH0sX3NldEhhbmRsZUNsYXNzTmFtZTpmdW5jdGlvbigpe3RoaXMuaGFuZGxlRWxlbWVudD10aGlzLm9wdGlvbnMuaGFuZGxlP3RoaXMuZWxlbWVudC5maW5kKHRoaXMub3B0aW9ucy5oYW5kbGUpOnRoaXMuZWxlbWVudCx0aGlzLmhhbmRsZUVsZW1lbnQuYWRkQ2xhc3MoInVpLWRyYWdnYWJsZS1oYW5kbGUiKX0sX3JlbW92ZUhhbmRsZUNsYXNzTmFtZTpmdW5jdGlvbigpe3RoaXMuaGFuZGxlRWxlbWVudC5yZW1vdmVDbGFzcygidWktZHJhZ2dhYmxlLWhhbmRsZSIpfSxfY3JlYXRlSGVscGVyOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMub3B0aW9ucyxzPWUuaXNGdW5jdGlvbihpLmhlbHBlciksbj1zP2UoaS5oZWxwZXIuYXBwbHkodGhpcy5lbGVtZW50WzBdLFt0XSkpOiJjbG9uZSI9PT1pLmhlbHBlcj90aGlzLmVsZW1lbnQuY2xvbmUoKS5yZW1vdmVBdHRyKCJpZCIpOnRoaXMuZWxlbWVudDtyZXR1cm4gbi5wYXJlbnRzKCJib2R5IikubGVuZ3RofHxuLmFwcGVuZFRvKCJwYXJlbnQiPT09aS5hcHBlbmRUbz90aGlzLmVsZW1lbnRbMF0ucGFyZW50Tm9kZTppLmFwcGVuZFRvKSxzJiZuWzBdPT09dGhpcy5lbGVtZW50WzBdJiZ0aGlzLl9zZXRQb3NpdGlvblJlbGF0aXZlKCksblswXT09PXRoaXMuZWxlbWVudFswXXx8LyhmaXhlZHxhYnNvbHV0ZSkvLnRlc3Qobi5jc3MoInBvc2l0aW9uIikpfHxuLmNzcygicG9zaXRpb24iLCJhYnNvbHV0ZSIpLG59LF9zZXRQb3NpdGlvblJlbGF0aXZlOmZ1bmN0aW9uKCl7L14oPzpyfGF8ZikvLnRlc3QodGhpcy5lbGVtZW50LmNzcygicG9zaXRpb24iKSl8fCh0aGlzLmVsZW1lbnRbMF0uc3R5bGUucG9zaXRpb249InJlbGF0aXZlIil9LF9hZGp1c3RPZmZzZXRGcm9tSGVscGVyOmZ1bmN0aW9uKHQpeyJzdHJpbmciPT10eXBlb2YgdCYmKHQ9dC5zcGxpdCgiICIpKSxlLmlzQXJyYXkodCkmJih0PXtsZWZ0Oit0WzBdLHRvcDordFsxXXx8MH0pLCJsZWZ0ImluIHQmJih0aGlzLm9mZnNldC5jbGljay5sZWZ0PXQubGVmdCt0aGlzLm1hcmdpbnMubGVmdCksInJpZ2h0ImluIHQmJih0aGlzLm9mZnNldC5jbGljay5sZWZ0PXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdC5yaWdodCt0aGlzLm1hcmdpbnMubGVmdCksInRvcCJpbiB0JiYodGhpcy5vZmZzZXQuY2xpY2sudG9wPXQudG9wK3RoaXMubWFyZ2lucy50b3ApLCJib3R0b20iaW4gdCYmKHRoaXMub2Zmc2V0LmNsaWNrLnRvcD10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC10LmJvdHRvbSt0aGlzLm1hcmdpbnMudG9wKX0sX2lzUm9vdE5vZGU6ZnVuY3Rpb24oZSl7cmV0dXJuLyhodG1sfGJvZHkpL2kudGVzdChlLnRhZ05hbWUpfHxlPT09dGhpcy5kb2N1bWVudFswXX0sX2dldFBhcmVudE9mZnNldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMub2Zmc2V0UGFyZW50Lm9mZnNldCgpLGk9dGhpcy5kb2N1bWVudFswXTtyZXR1cm4iYWJzb2x1dGUiPT09dGhpcy5jc3NQb3NpdGlvbiYmdGhpcy5zY3JvbGxQYXJlbnRbMF0hPT1pJiZlLmNvbnRhaW5zKHRoaXMuc2Nyb2xsUGFyZW50WzBdLHRoaXMub2Zmc2V0UGFyZW50WzBdKSYmKHQubGVmdCs9dGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpLHQudG9wKz10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKSksdGhpcy5faXNSb290Tm9kZSh0aGlzLm9mZnNldFBhcmVudFswXSkmJih0PXt0b3A6MCxsZWZ0OjB9KSx7dG9wOnQudG9wKyhwYXJzZUludCh0aGlzLm9mZnNldFBhcmVudC5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKSxsZWZ0OnQubGVmdCsocGFyc2VJbnQodGhpcy5vZmZzZXRQYXJlbnQuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKSwxMCl8fDApfX0sX2dldFJlbGF0aXZlT2Zmc2V0OmZ1bmN0aW9uKCl7aWYoInJlbGF0aXZlIiE9PXRoaXMuY3NzUG9zaXRpb24pcmV0dXJue3RvcDowLGxlZnQ6MH07dmFyIGU9dGhpcy5lbGVtZW50LnBvc2l0aW9uKCksdD10aGlzLl9pc1Jvb3ROb2RlKHRoaXMuc2Nyb2xsUGFyZW50WzBdKTtyZXR1cm57dG9wOmUudG9wLShwYXJzZUludCh0aGlzLmhlbHBlci5jc3MoInRvcCIpLDEwKXx8MCkrKHQ/MDp0aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKSksbGVmdDplLmxlZnQtKHBhcnNlSW50KHRoaXMuaGVscGVyLmNzcygibGVmdCIpLDEwKXx8MCkrKHQ/MDp0aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCkpfX0sX2NhY2hlTWFyZ2luczpmdW5jdGlvbigpe3RoaXMubWFyZ2lucz17bGVmdDpwYXJzZUludCh0aGlzLmVsZW1lbnQuY3NzKCJtYXJnaW5MZWZ0IiksMTApfHwwLHRvcDpwYXJzZUludCh0aGlzLmVsZW1lbnQuY3NzKCJtYXJnaW5Ub3AiKSwxMCl8fDAscmlnaHQ6cGFyc2VJbnQodGhpcy5lbGVtZW50LmNzcygibWFyZ2luUmlnaHQiKSwxMCl8fDAsYm90dG9tOnBhcnNlSW50KHRoaXMuZWxlbWVudC5jc3MoIm1hcmdpbkJvdHRvbSIpLDEwKXx8MH19LF9jYWNoZUhlbHBlclByb3BvcnRpb25zOmZ1bmN0aW9uKCl7dGhpcy5oZWxwZXJQcm9wb3J0aW9ucz17d2lkdGg6dGhpcy5oZWxwZXIub3V0ZXJXaWR0aCgpLGhlaWdodDp0aGlzLmhlbHBlci5vdXRlckhlaWdodCgpfX0sX3NldENvbnRhaW5tZW50OmZ1bmN0aW9uKCl7dmFyIHQsaSxzLG49dGhpcy5vcHRpb25zLGE9dGhpcy5kb2N1bWVudFswXTtyZXR1cm4gdGhpcy5yZWxhdGl2ZUNvbnRhaW5lcj1udWxsLG4uY29udGFpbm1lbnQ/IndpbmRvdyI9PT1uLmNvbnRhaW5tZW50Pyh0aGlzLmNvbnRhaW5tZW50PVtlKHdpbmRvdykuc2Nyb2xsTGVmdCgpLXRoaXMub2Zmc2V0LnJlbGF0aXZlLmxlZnQtdGhpcy5vZmZzZXQucGFyZW50LmxlZnQsZSh3aW5kb3cpLnNjcm9sbFRvcCgpLXRoaXMub2Zmc2V0LnJlbGF0aXZlLnRvcC10aGlzLm9mZnNldC5wYXJlbnQudG9wLGUod2luZG93KS5zY3JvbGxMZWZ0KCkrZSh3aW5kb3cpLndpZHRoKCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC10aGlzLm1hcmdpbnMubGVmdCxlKHdpbmRvdykuc2Nyb2xsVG9wKCkrKGUod2luZG93KS5oZWlnaHQoKXx8YS5ib2R5LnBhcmVudE5vZGUuc2Nyb2xsSGVpZ2h0KS10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC10aGlzLm1hcmdpbnMudG9wXSx2b2lkIDApOiJkb2N1bWVudCI9PT1uLmNvbnRhaW5tZW50Pyh0aGlzLmNvbnRhaW5tZW50PVswLDAsZShhKS53aWR0aCgpLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdGhpcy5tYXJnaW5zLmxlZnQsKGUoYSkuaGVpZ2h0KCl8fGEuYm9keS5wYXJlbnROb2RlLnNjcm9sbEhlaWdodCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQtdGhpcy5tYXJnaW5zLnRvcF0sdm9pZCAwKTpuLmNvbnRhaW5tZW50LmNvbnN0cnVjdG9yPT09QXJyYXk/KHRoaXMuY29udGFpbm1lbnQ9bi5jb250YWlubWVudCx2b2lkIDApOigicGFyZW50Ij09PW4uY29udGFpbm1lbnQmJihuLmNvbnRhaW5tZW50PXRoaXMuaGVscGVyWzBdLnBhcmVudE5vZGUpLGk9ZShuLmNvbnRhaW5tZW50KSxzPWlbMF0scyYmKHQ9LyhzY3JvbGx8YXV0bykvLnRlc3QoaS5jc3MoIm92ZXJmbG93IikpLHRoaXMuY29udGFpbm1lbnQ9WyhwYXJzZUludChpLmNzcygiYm9yZGVyTGVmdFdpZHRoIiksMTApfHwwKSsocGFyc2VJbnQoaS5jc3MoInBhZGRpbmdMZWZ0IiksMTApfHwwKSwocGFyc2VJbnQoaS5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKSsocGFyc2VJbnQoaS5jc3MoInBhZGRpbmdUb3AiKSwxMCl8fDApLCh0P01hdGgubWF4KHMuc2Nyb2xsV2lkdGgscy5vZmZzZXRXaWR0aCk6cy5vZmZzZXRXaWR0aCktKHBhcnNlSW50KGkuY3NzKCJib3JkZXJSaWdodFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQoaS5jc3MoInBhZGRpbmdSaWdodCIpLDEwKXx8MCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC10aGlzLm1hcmdpbnMubGVmdC10aGlzLm1hcmdpbnMucmlnaHQsKHQ/TWF0aC5tYXgocy5zY3JvbGxIZWlnaHQscy5vZmZzZXRIZWlnaHQpOnMub2Zmc2V0SGVpZ2h0KS0ocGFyc2VJbnQoaS5jc3MoImJvcmRlckJvdHRvbVdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQoaS5jc3MoInBhZGRpbmdCb3R0b20iKSwxMCl8fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LXRoaXMubWFyZ2lucy50b3AtdGhpcy5tYXJnaW5zLmJvdHRvbV0sdGhpcy5yZWxhdGl2ZUNvbnRhaW5lcj1pKSx2b2lkIDApOih0aGlzLmNvbnRhaW5tZW50PW51bGwsdm9pZCAwKX0sX2NvbnZlcnRQb3NpdGlvblRvOmZ1bmN0aW9uKGUsdCl7dHx8KHQ9dGhpcy5wb3NpdGlvbik7dmFyIGk9ImFic29sdXRlIj09PWU/MTotMSxzPXRoaXMuX2lzUm9vdE5vZGUodGhpcy5zY3JvbGxQYXJlbnRbMF0pO3JldHVybnt0b3A6dC50b3ArdGhpcy5vZmZzZXQucmVsYXRpdmUudG9wKmkrdGhpcy5vZmZzZXQucGFyZW50LnRvcCppLSgiZml4ZWQiPT09dGhpcy5jc3NQb3NpdGlvbj8tdGhpcy5vZmZzZXQuc2Nyb2xsLnRvcDpzPzA6dGhpcy5vZmZzZXQuc2Nyb2xsLnRvcCkqaSxsZWZ0OnQubGVmdCt0aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0KmkrdGhpcy5vZmZzZXQucGFyZW50LmxlZnQqaS0oImZpeGVkIj09PXRoaXMuY3NzUG9zaXRpb24/LXRoaXMub2Zmc2V0LnNjcm9sbC5sZWZ0OnM/MDp0aGlzLm9mZnNldC5zY3JvbGwubGVmdCkqaX19LF9nZW5lcmF0ZVBvc2l0aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIGkscyxuLGEsbz10aGlzLm9wdGlvbnMscj10aGlzLl9pc1Jvb3ROb2RlKHRoaXMuc2Nyb2xsUGFyZW50WzBdKSxoPWUucGFnZVgsbD1lLnBhZ2VZO3JldHVybiByJiZ0aGlzLm9mZnNldC5zY3JvbGx8fCh0aGlzLm9mZnNldC5zY3JvbGw9e3RvcDp0aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKSxsZWZ0OnRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbExlZnQoKX0pLHQmJih0aGlzLmNvbnRhaW5tZW50JiYodGhpcy5yZWxhdGl2ZUNvbnRhaW5lcj8ocz10aGlzLnJlbGF0aXZlQ29udGFpbmVyLm9mZnNldCgpLGk9W3RoaXMuY29udGFpbm1lbnRbMF0rcy5sZWZ0LHRoaXMuY29udGFpbm1lbnRbMV0rcy50b3AsdGhpcy5jb250YWlubWVudFsyXStzLmxlZnQsdGhpcy5jb250YWlubWVudFszXStzLnRvcF0pOmk9dGhpcy5jb250YWlubWVudCxlLnBhZ2VYLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ8aVswXSYmKGg9aVswXSt0aGlzLm9mZnNldC5jbGljay5sZWZ0KSxlLnBhZ2VZLXRoaXMub2Zmc2V0LmNsaWNrLnRvcDxpWzFdJiYobD1pWzFdK3RoaXMub2Zmc2V0LmNsaWNrLnRvcCksZS5wYWdlWC10aGlzLm9mZnNldC5jbGljay5sZWZ0PmlbMl0mJihoPWlbMl0rdGhpcy5vZmZzZXQuY2xpY2subGVmdCksZS5wYWdlWS10aGlzLm9mZnNldC5jbGljay50b3A+aVszXSYmKGw9aVszXSt0aGlzLm9mZnNldC5jbGljay50b3ApKSxvLmdyaWQmJihuPW8uZ3JpZFsxXT90aGlzLm9yaWdpbmFsUGFnZVkrTWF0aC5yb3VuZCgobC10aGlzLm9yaWdpbmFsUGFnZVkpL28uZ3JpZFsxXSkqby5ncmlkWzFdOnRoaXMub3JpZ2luYWxQYWdlWSxsPWk/bi10aGlzLm9mZnNldC5jbGljay50b3A+PWlbMV18fG4tdGhpcy5vZmZzZXQuY2xpY2sudG9wPmlbM10/bjpuLXRoaXMub2Zmc2V0LmNsaWNrLnRvcD49aVsxXT9uLW8uZ3JpZFsxXTpuK28uZ3JpZFsxXTpuLGE9by5ncmlkWzBdP3RoaXMub3JpZ2luYWxQYWdlWCtNYXRoLnJvdW5kKChoLXRoaXMub3JpZ2luYWxQYWdlWCkvby5ncmlkWzBdKSpvLmdyaWRbMF06dGhpcy5vcmlnaW5hbFBhZ2VYLGg9aT9hLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ+PWlbMF18fGEtdGhpcy5vZmZzZXQuY2xpY2subGVmdD5pWzJdP2E6YS10aGlzLm9mZnNldC5jbGljay5sZWZ0Pj1pWzBdP2Etby5ncmlkWzBdOmErby5ncmlkWzBdOmEpLCJ5Ij09PW8uYXhpcyYmKGg9dGhpcy5vcmlnaW5hbFBhZ2VYKSwieCI9PT1vLmF4aXMmJihsPXRoaXMub3JpZ2luYWxQYWdlWSkpLHt0b3A6bC10aGlzLm9mZnNldC5jbGljay50b3AtdGhpcy5vZmZzZXQucmVsYXRpdmUudG9wLXRoaXMub2Zmc2V0LnBhcmVudC50b3ArKCJmaXhlZCI9PT10aGlzLmNzc1Bvc2l0aW9uPy10aGlzLm9mZnNldC5zY3JvbGwudG9wOnI/MDp0aGlzLm9mZnNldC5zY3JvbGwudG9wKSxsZWZ0OmgtdGhpcy5vZmZzZXQuY2xpY2subGVmdC10aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0KygiZml4ZWQiPT09dGhpcy5jc3NQb3NpdGlvbj8tdGhpcy5vZmZzZXQuc2Nyb2xsLmxlZnQ6cj8wOnRoaXMub2Zmc2V0LnNjcm9sbC5sZWZ0KX19LF9jbGVhcjpmdW5jdGlvbigpe3RoaXMuaGVscGVyLnJlbW92ZUNsYXNzKCJ1aS1kcmFnZ2FibGUtZHJhZ2dpbmciKSx0aGlzLmhlbHBlclswXT09PXRoaXMuZWxlbWVudFswXXx8dGhpcy5jYW5jZWxIZWxwZXJSZW1vdmFsfHx0aGlzLmhlbHBlci5yZW1vdmUoKSx0aGlzLmhlbHBlcj1udWxsLHRoaXMuY2FuY2VsSGVscGVyUmVtb3ZhbD0hMSx0aGlzLmRlc3Ryb3lPbkNsZWFyJiZ0aGlzLmRlc3Ryb3koKX0sX25vcm1hbGl6ZVJpZ2h0Qm90dG9tOmZ1bmN0aW9uKCl7InkiIT09dGhpcy5vcHRpb25zLmF4aXMmJiJhdXRvIiE9PXRoaXMuaGVscGVyLmNzcygicmlnaHQiKSYmKHRoaXMuaGVscGVyLndpZHRoKHRoaXMuaGVscGVyLndpZHRoKCkpLHRoaXMuaGVscGVyLmNzcygicmlnaHQiLCJhdXRvIikpLCJ4IiE9PXRoaXMub3B0aW9ucy5heGlzJiYiYXV0byIhPT10aGlzLmhlbHBlci5jc3MoImJvdHRvbSIpJiYodGhpcy5oZWxwZXIuaGVpZ2h0KHRoaXMuaGVscGVyLmhlaWdodCgpKSx0aGlzLmhlbHBlci5jc3MoImJvdHRvbSIsImF1dG8iKSl9LF90cmlnZ2VyOmZ1bmN0aW9uKHQsaSxzKXtyZXR1cm4gcz1zfHx0aGlzLl91aUhhc2goKSxlLnVpLnBsdWdpbi5jYWxsKHRoaXMsdCxbaSxzLHRoaXNdLCEwKSwvXihkcmFnfHN0YXJ0fHN0b3ApLy50ZXN0KHQpJiYodGhpcy5wb3NpdGlvbkFicz10aGlzLl9jb252ZXJ0UG9zaXRpb25UbygiYWJzb2x1dGUiKSxzLm9mZnNldD10aGlzLnBvc2l0aW9uQWJzKSxlLldpZGdldC5wcm90b3R5cGUuX3RyaWdnZXIuY2FsbCh0aGlzLHQsaSxzKX0scGx1Z2luczp7fSxfdWlIYXNoOmZ1bmN0aW9uKCl7cmV0dXJue2hlbHBlcjp0aGlzLmhlbHBlcixwb3NpdGlvbjp0aGlzLnBvc2l0aW9uLG9yaWdpbmFsUG9zaXRpb246dGhpcy5vcmlnaW5hbFBvc2l0aW9uLG9mZnNldDp0aGlzLnBvc2l0aW9uQWJzfX19KSxlLnVpLnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsImNvbm5lY3RUb1NvcnRhYmxlIix7c3RhcnQ6ZnVuY3Rpb24odCxpLHMpe3ZhciBuPWUuZXh0ZW5kKHt9LGkse2l0ZW06cy5lbGVtZW50fSk7cy5zb3J0YWJsZXM9W10sZShzLm9wdGlvbnMuY29ubmVjdFRvU29ydGFibGUpLmVhY2goZnVuY3Rpb24oKXt2YXIgaT1lKHRoaXMpLnNvcnRhYmxlKCJpbnN0YW5jZSIpO2kmJiFpLm9wdGlvbnMuZGlzYWJsZWQmJihzLnNvcnRhYmxlcy5wdXNoKGkpLGkucmVmcmVzaFBvc2l0aW9ucygpLGkuX3RyaWdnZXIoImFjdGl2YXRlIix0LG4pKX0pfSxzdG9wOmZ1bmN0aW9uKHQsaSxzKXt2YXIgbj1lLmV4dGVuZCh7fSxpLHtpdGVtOnMuZWxlbWVudH0pO3MuY2FuY2VsSGVscGVyUmVtb3ZhbD0hMSxlLmVhY2gocy5zb3J0YWJsZXMsZnVuY3Rpb24oKXt2YXIgZT10aGlzO2UuaXNPdmVyPyhlLmlzT3Zlcj0wLHMuY2FuY2VsSGVscGVyUmVtb3ZhbD0hMCxlLmNhbmNlbEhlbHBlclJlbW92YWw9ITEsZS5fc3RvcmVkQ1NTPXtwb3NpdGlvbjplLnBsYWNlaG9sZGVyLmNzcygicG9zaXRpb24iKSx0b3A6ZS5wbGFjZWhvbGRlci5jc3MoInRvcCIpLGxlZnQ6ZS5wbGFjZWhvbGRlci5jc3MoImxlZnQiKX0sZS5fbW91c2VTdG9wKHQpLGUub3B0aW9ucy5oZWxwZXI9ZS5vcHRpb25zLl9oZWxwZXIpOihlLmNhbmNlbEhlbHBlclJlbW92YWw9ITAsZS5fdHJpZ2dlcigiZGVhY3RpdmF0ZSIsdCxuKSl9KX0sZHJhZzpmdW5jdGlvbih0LGkscyl7ZS5lYWNoKHMuc29ydGFibGVzLGZ1bmN0aW9uKCl7dmFyIG49ITEsYT10aGlzO2EucG9zaXRpb25BYnM9cy5wb3NpdGlvbkFicyxhLmhlbHBlclByb3BvcnRpb25zPXMuaGVscGVyUHJvcG9ydGlvbnMsYS5vZmZzZXQuY2xpY2s9cy5vZmZzZXQuY2xpY2ssYS5faW50ZXJzZWN0c1dpdGgoYS5jb250YWluZXJDYWNoZSkmJihuPSEwLGUuZWFjaChzLnNvcnRhYmxlcyxmdW5jdGlvbigpe3JldHVybiB0aGlzLnBvc2l0aW9uQWJzPXMucG9zaXRpb25BYnMsdGhpcy5oZWxwZXJQcm9wb3J0aW9ucz1zLmhlbHBlclByb3BvcnRpb25zLHRoaXMub2Zmc2V0LmNsaWNrPXMub2Zmc2V0LmNsaWNrLHRoaXMhPT1hJiZ0aGlzLl9pbnRlcnNlY3RzV2l0aCh0aGlzLmNvbnRhaW5lckNhY2hlKSYmZS5jb250YWlucyhhLmVsZW1lbnRbMF0sdGhpcy5lbGVtZW50WzBdKSYmKG49ITEpLG59KSksbj8oYS5pc092ZXJ8fChhLmlzT3Zlcj0xLGEuY3VycmVudEl0ZW09aS5oZWxwZXIuYXBwZW5kVG8oYS5lbGVtZW50KS5kYXRhKCJ1aS1zb3J0YWJsZS1pdGVtIiwhMCksYS5vcHRpb25zLl9oZWxwZXI9YS5vcHRpb25zLmhlbHBlcixhLm9wdGlvbnMuaGVscGVyPWZ1bmN0aW9uKCl7cmV0dXJuIGkuaGVscGVyWzBdfSx0LnRhcmdldD1hLmN1cnJlbnRJdGVtWzBdLGEuX21vdXNlQ2FwdHVyZSh0LCEwKSxhLl9tb3VzZVN0YXJ0KHQsITAsITApLGEub2Zmc2V0LmNsaWNrLnRvcD1zLm9mZnNldC5jbGljay50b3AsYS5vZmZzZXQuY2xpY2subGVmdD1zLm9mZnNldC5jbGljay5sZWZ0LGEub2Zmc2V0LnBhcmVudC5sZWZ0LT1zLm9mZnNldC5wYXJlbnQubGVmdC1hLm9mZnNldC5wYXJlbnQubGVmdCxhLm9mZnNldC5wYXJlbnQudG9wLT1zLm9mZnNldC5wYXJlbnQudG9wLWEub2Zmc2V0LnBhcmVudC50b3Ascy5fdHJpZ2dlcigidG9Tb3J0YWJsZSIsdCkscy5kcm9wcGVkPWEuZWxlbWVudCxlLmVhY2gocy5zb3J0YWJsZXMsZnVuY3Rpb24oKXt0aGlzLnJlZnJlc2hQb3NpdGlvbnMoKX0pLHMuY3VycmVudEl0ZW09cy5lbGVtZW50LGEuZnJvbU91dHNpZGU9cyksYS5jdXJyZW50SXRlbSYmKGEuX21vdXNlRHJhZyh0KSxpLnBvc2l0aW9uPWEucG9zaXRpb24pKTphLmlzT3ZlciYmKGEuaXNPdmVyPTAsYS5jYW5jZWxIZWxwZXJSZW1vdmFsPSEwLGEub3B0aW9ucy5fcmV2ZXJ0PWEub3B0aW9ucy5yZXZlcnQsYS5vcHRpb25zLnJldmVydD0hMSxhLl90cmlnZ2VyKCJvdXQiLHQsYS5fdWlIYXNoKGEpKSxhLl9tb3VzZVN0b3AodCwhMCksYS5vcHRpb25zLnJldmVydD1hLm9wdGlvbnMuX3JldmVydCxhLm9wdGlvbnMuaGVscGVyPWEub3B0aW9ucy5faGVscGVyLGEucGxhY2Vob2xkZXImJmEucGxhY2Vob2xkZXIucmVtb3ZlKCkscy5fcmVmcmVzaE9mZnNldHModCksaS5wb3NpdGlvbj1zLl9nZW5lcmF0ZVBvc2l0aW9uKHQsITApLHMuX3RyaWdnZXIoImZyb21Tb3J0YWJsZSIsdCkscy5kcm9wcGVkPSExLGUuZWFjaChzLnNvcnRhYmxlcyxmdW5jdGlvbigpe3RoaXMucmVmcmVzaFBvc2l0aW9ucygpfSkpfSl9fSksZS51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJjdXJzb3IiLHtzdGFydDpmdW5jdGlvbih0LGkscyl7dmFyIG49ZSgiYm9keSIpLGE9cy5vcHRpb25zO24uY3NzKCJjdXJzb3IiKSYmKGEuX2N1cnNvcj1uLmNzcygiY3Vyc29yIikpLG4uY3NzKCJjdXJzb3IiLGEuY3Vyc29yKX0sc3RvcDpmdW5jdGlvbih0LGkscyl7dmFyIG49cy5vcHRpb25zO24uX2N1cnNvciYmZSgiYm9keSIpLmNzcygiY3Vyc29yIixuLl9jdXJzb3IpfX0pLGUudWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwib3BhY2l0eSIse3N0YXJ0OmZ1bmN0aW9uKHQsaSxzKXt2YXIgbj1lKGkuaGVscGVyKSxhPXMub3B0aW9ucztuLmNzcygib3BhY2l0eSIpJiYoYS5fb3BhY2l0eT1uLmNzcygib3BhY2l0eSIpKSxuLmNzcygib3BhY2l0eSIsYS5vcGFjaXR5KX0sc3RvcDpmdW5jdGlvbih0LGkscyl7dmFyIG49cy5vcHRpb25zO24uX29wYWNpdHkmJmUoaS5oZWxwZXIpLmNzcygib3BhY2l0eSIsbi5fb3BhY2l0eSl9fSksZS51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJzY3JvbGwiLHtzdGFydDpmdW5jdGlvbihlLHQsaSl7aS5zY3JvbGxQYXJlbnROb3RIaWRkZW58fChpLnNjcm9sbFBhcmVudE5vdEhpZGRlbj1pLmhlbHBlci5zY3JvbGxQYXJlbnQoITEpKSxpLnNjcm9sbFBhcmVudE5vdEhpZGRlblswXSE9PWkuZG9jdW1lbnRbMF0mJiJIVE1MIiE9PWkuc2Nyb2xsUGFyZW50Tm90SGlkZGVuWzBdLnRhZ05hbWUmJihpLm92ZXJmbG93T2Zmc2V0PWkuc2Nyb2xsUGFyZW50Tm90SGlkZGVuLm9mZnNldCgpKX0sZHJhZzpmdW5jdGlvbih0LGkscyl7dmFyIG49cy5vcHRpb25zLGE9ITEsbz1zLnNjcm9sbFBhcmVudE5vdEhpZGRlblswXSxyPXMuZG9jdW1lbnRbMF07byE9PXImJiJIVE1MIiE9PW8udGFnTmFtZT8obi5heGlzJiYieCI9PT1uLmF4aXN8fChzLm92ZXJmbG93T2Zmc2V0LnRvcCtvLm9mZnNldEhlaWdodC10LnBhZ2VZPG4uc2Nyb2xsU2Vuc2l0aXZpdHk/by5zY3JvbGxUb3A9YT1vLnNjcm9sbFRvcCtuLnNjcm9sbFNwZWVkOnQucGFnZVktcy5vdmVyZmxvd09mZnNldC50b3A8bi5zY3JvbGxTZW5zaXRpdml0eSYmKG8uc2Nyb2xsVG9wPWE9by5zY3JvbGxUb3Atbi5zY3JvbGxTcGVlZCkpLG4uYXhpcyYmInkiPT09bi5heGlzfHwocy5vdmVyZmxvd09mZnNldC5sZWZ0K28ub2Zmc2V0V2lkdGgtdC5wYWdlWDxuLnNjcm9sbFNlbnNpdGl2aXR5P28uc2Nyb2xsTGVmdD1hPW8uc2Nyb2xsTGVmdCtuLnNjcm9sbFNwZWVkOnQucGFnZVgtcy5vdmVyZmxvd09mZnNldC5sZWZ0PG4uc2Nyb2xsU2Vuc2l0aXZpdHkmJihvLnNjcm9sbExlZnQ9YT1vLnNjcm9sbExlZnQtbi5zY3JvbGxTcGVlZCkpKToobi5heGlzJiYieCI9PT1uLmF4aXN8fCh0LnBhZ2VZLWUocikuc2Nyb2xsVG9wKCk8bi5zY3JvbGxTZW5zaXRpdml0eT9hPWUocikuc2Nyb2xsVG9wKGUocikuc2Nyb2xsVG9wKCktbi5zY3JvbGxTcGVlZCk6ZSh3aW5kb3cpLmhlaWdodCgpLSh0LnBhZ2VZLWUocikuc2Nyb2xsVG9wKCkpPG4uc2Nyb2xsU2Vuc2l0aXZpdHkmJihhPWUocikuc2Nyb2xsVG9wKGUocikuc2Nyb2xsVG9wKCkrbi5zY3JvbGxTcGVlZCkpKSxuLmF4aXMmJiJ5Ij09PW4uYXhpc3x8KHQucGFnZVgtZShyKS5zY3JvbGxMZWZ0KCk8bi5zY3JvbGxTZW5zaXRpdml0eT9hPWUocikuc2Nyb2xsTGVmdChlKHIpLnNjcm9sbExlZnQoKS1uLnNjcm9sbFNwZWVkKTplKHdpbmRvdykud2lkdGgoKS0odC5wYWdlWC1lKHIpLnNjcm9sbExlZnQoKSk8bi5zY3JvbGxTZW5zaXRpdml0eSYmKGE9ZShyKS5zY3JvbGxMZWZ0KGUocikuc2Nyb2xsTGVmdCgpK24uc2Nyb2xsU3BlZWQpKSkpLGEhPT0hMSYmZS51aS5kZG1hbmFnZXImJiFuLmRyb3BCZWhhdmlvdXImJmUudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKHMsdCl9fSksZS51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJzbmFwIix7c3RhcnQ6ZnVuY3Rpb24odCxpLHMpe3ZhciBuPXMub3B0aW9ucztzLnNuYXBFbGVtZW50cz1bXSxlKG4uc25hcC5jb25zdHJ1Y3RvciE9PVN0cmluZz9uLnNuYXAuaXRlbXN8fCI6ZGF0YSh1aS1kcmFnZ2FibGUpIjpuLnNuYXApLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLGk9dC5vZmZzZXQoKTt0aGlzIT09cy5lbGVtZW50WzBdJiZzLnNuYXBFbGVtZW50cy5wdXNoKHtpdGVtOnRoaXMsd2lkdGg6dC5vdXRlcldpZHRoKCksaGVpZ2h0OnQub3V0ZXJIZWlnaHQoKSx0b3A6aS50b3AsbGVmdDppLmxlZnR9KX0pfSxkcmFnOmZ1bmN0aW9uKHQsaSxzKXt2YXIgbixhLG8scixoLGwsdSxkLGMsZixwPXMub3B0aW9ucyxtPXAuc25hcFRvbGVyYW5jZSxnPWkub2Zmc2V0LmxlZnQsdj1nK3MuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgseT1pLm9mZnNldC50b3AsXz15K3MuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0O2ZvcihjPXMuc25hcEVsZW1lbnRzLmxlbmd0aC0xO2M+PTA7Yy0tKWg9cy5zbmFwRWxlbWVudHNbY10ubGVmdC1zLm1hcmdpbnMubGVmdCxsPWgrcy5zbmFwRWxlbWVudHNbY10ud2lkdGgsdT1zLnNuYXBFbGVtZW50c1tjXS50b3Atcy5tYXJnaW5zLnRvcCxkPXUrcy5zbmFwRWxlbWVudHNbY10uaGVpZ2h0LGgtbT52fHxnPmwrbXx8dS1tPl98fHk+ZCttfHwhZS5jb250YWlucyhzLnNuYXBFbGVtZW50c1tjXS5pdGVtLm93bmVyRG9jdW1lbnQscy5zbmFwRWxlbWVudHNbY10uaXRlbSk/KHMuc25hcEVsZW1lbnRzW2NdLnNuYXBwaW5nJiZzLm9wdGlvbnMuc25hcC5yZWxlYXNlJiZzLm9wdGlvbnMuc25hcC5yZWxlYXNlLmNhbGwocy5lbGVtZW50LHQsZS5leHRlbmQocy5fdWlIYXNoKCkse3NuYXBJdGVtOnMuc25hcEVsZW1lbnRzW2NdLml0ZW19KSkscy5zbmFwRWxlbWVudHNbY10uc25hcHBpbmc9ITEpOigiaW5uZXIiIT09cC5zbmFwTW9kZSYmKG49bT49TWF0aC5hYnModS1fKSxhPW0+PU1hdGguYWJzKGQteSksbz1tPj1NYXRoLmFicyhoLXYpLHI9bT49TWF0aC5hYnMobC1nKSxuJiYoaS5wb3NpdGlvbi50b3A9cy5fY29udmVydFBvc2l0aW9uVG8oInJlbGF0aXZlIix7dG9wOnUtcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQsbGVmdDowfSkudG9wKSxhJiYoaS5wb3NpdGlvbi50b3A9cy5fY29udmVydFBvc2l0aW9uVG8oInJlbGF0aXZlIix7dG9wOmQsbGVmdDowfSkudG9wKSxvJiYoaS5wb3NpdGlvbi5sZWZ0PXMuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDowLGxlZnQ6aC1zLmhlbHBlclByb3BvcnRpb25zLndpZHRofSkubGVmdCksciYmKGkucG9zaXRpb24ubGVmdD1zLl9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6MCxsZWZ0Omx9KS5sZWZ0KSksZj1ufHxhfHxvfHxyLCJvdXRlciIhPT1wLnNuYXBNb2RlJiYobj1tPj1NYXRoLmFicyh1LXkpLGE9bT49TWF0aC5hYnMoZC1fKSxvPW0+PU1hdGguYWJzKGgtZykscj1tPj1NYXRoLmFicyhsLXYpLG4mJihpLnBvc2l0aW9uLnRvcD1zLl9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6dSxsZWZ0OjB9KS50b3ApLGEmJihpLnBvc2l0aW9uLnRvcD1zLl9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6ZC1zLmhlbHBlclByb3BvcnRpb25zLmhlaWdodCxsZWZ0OjB9KS50b3ApLG8mJihpLnBvc2l0aW9uLmxlZnQ9cy5fY29udmVydFBvc2l0aW9uVG8oInJlbGF0aXZlIix7dG9wOjAsbGVmdDpofSkubGVmdCksciYmKGkucG9zaXRpb24ubGVmdD1zLl9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6MCxsZWZ0Omwtcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aH0pLmxlZnQpKSwhcy5zbmFwRWxlbWVudHNbY10uc25hcHBpbmcmJihufHxhfHxvfHxyfHxmKSYmcy5vcHRpb25zLnNuYXAuc25hcCYmcy5vcHRpb25zLnNuYXAuc25hcC5jYWxsKHMuZWxlbWVudCx0LGUuZXh0ZW5kKHMuX3VpSGFzaCgpLHtzbmFwSXRlbTpzLnNuYXBFbGVtZW50c1tjXS5pdGVtfSkpLHMuc25hcEVsZW1lbnRzW2NdLnNuYXBwaW5nPW58fGF8fG98fHJ8fGYpfX0pLGUudWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwic3RhY2siLHtzdGFydDpmdW5jdGlvbih0LGkscyl7dmFyIG4sYT1zLm9wdGlvbnMsbz1lLm1ha2VBcnJheShlKGEuc3RhY2spKS5zb3J0KGZ1bmN0aW9uKHQsaSl7cmV0dXJuKHBhcnNlSW50KGUodCkuY3NzKCJ6SW5kZXgiKSwxMCl8fDApLShwYXJzZUludChlKGkpLmNzcygiekluZGV4IiksMTApfHwwKX0pO28ubGVuZ3RoJiYobj1wYXJzZUludChlKG9bMF0pLmNzcygiekluZGV4IiksMTApfHwwLGUobykuZWFjaChmdW5jdGlvbih0KXtlKHRoaXMpLmNzcygiekluZGV4IixuK3QpfSksdGhpcy5jc3MoInpJbmRleCIsbitvLmxlbmd0aCkpfX0pLGUudWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwiekluZGV4Iix7c3RhcnQ6ZnVuY3Rpb24odCxpLHMpe3ZhciBuPWUoaS5oZWxwZXIpLGE9cy5vcHRpb25zO24uY3NzKCJ6SW5kZXgiKSYmKGEuX3pJbmRleD1uLmNzcygiekluZGV4IikpLG4uY3NzKCJ6SW5kZXgiLGEuekluZGV4KX0sc3RvcDpmdW5jdGlvbih0LGkscyl7dmFyIG49cy5vcHRpb25zO24uX3pJbmRleCYmZShpLmhlbHBlcikuY3NzKCJ6SW5kZXgiLG4uX3pJbmRleCl9fSksZS51aS5kcmFnZ2FibGV9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/jquery.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohIGpRdWVyeSB2My4yLjEgfCAoYykgSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIHwganF1ZXJ5Lm9yZy9saWNlbnNlICovCiFmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0Ijsib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1hLmRvY3VtZW50P2IoYSwhMCk6ZnVuY3Rpb24oYSl7aWYoIWEuZG9jdW1lbnQpdGhyb3cgbmV3IEVycm9yKCJqUXVlcnkgcmVxdWlyZXMgYSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50Iik7cmV0dXJuIGIoYSl9OmIoYSl9KCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp0aGlzLGZ1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO3ZhciBjPVtdLGQ9YS5kb2N1bWVudCxlPU9iamVjdC5nZXRQcm90b3R5cGVPZixmPWMuc2xpY2UsZz1jLmNvbmNhdCxoPWMucHVzaCxpPWMuaW5kZXhPZixqPXt9LGs9ai50b1N0cmluZyxsPWouaGFzT3duUHJvcGVydHksbT1sLnRvU3RyaW5nLG49bS5jYWxsKE9iamVjdCksbz17fTtmdW5jdGlvbiBwKGEsYil7Yj1ifHxkO3ZhciBjPWIuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7Yy50ZXh0PWEsYi5oZWFkLmFwcGVuZENoaWxkKGMpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYyl9dmFyIHE9IjMuMi4xIixyPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyByLmZuLmluaXQoYSxiKX0scz0vXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2csdD0vXi1tcy0vLHU9Ly0oW2Etel0pL2csdj1mdW5jdGlvbihhLGIpe3JldHVybiBiLnRvVXBwZXJDYXNlKCl9O3IuZm49ci5wcm90b3R5cGU9e2pxdWVyeTpxLGNvbnN0cnVjdG9yOnIsbGVuZ3RoOjAsdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiBmLmNhbGwodGhpcyl9LGdldDpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT9mLmNhbGwodGhpcyk6YTwwP3RoaXNbYSt0aGlzLmxlbmd0aF06dGhpc1thXX0scHVzaFN0YWNrOmZ1bmN0aW9uKGEpe3ZhciBiPXIubWVyZ2UodGhpcy5jb25zdHJ1Y3RvcigpLGEpO3JldHVybiBiLnByZXZPYmplY3Q9dGhpcyxifSxlYWNoOmZ1bmN0aW9uKGEpe3JldHVybiByLmVhY2godGhpcyxhKX0sbWFwOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhyLm1hcCh0aGlzLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGEuY2FsbChiLGMsYil9KSl9LHNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGYuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKC0xKX0sZXE6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5sZW5ndGgsYz0rYSsoYTwwP2I6MCk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGM+PTAmJmM8Yj9bdGhpc1tjXV06W10pfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKCl9LHB1c2g6aCxzb3J0OmMuc29ydCxzcGxpY2U6Yy5zcGxpY2V9LHIuZXh0ZW5kPXIuZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGEsYixjLGQsZSxmLGc9YXJndW1lbnRzWzBdfHx7fSxoPTEsaT1hcmd1bWVudHMubGVuZ3RoLGo9ITE7Zm9yKCJib29sZWFuIj09dHlwZW9mIGcmJihqPWcsZz1hcmd1bWVudHNbaF18fHt9LGgrKyksIm9iamVjdCI9PXR5cGVvZiBnfHxyLmlzRnVuY3Rpb24oZyl8fChnPXt9KSxoPT09aSYmKGc9dGhpcyxoLS0pO2g8aTtoKyspaWYobnVsbCE9KGE9YXJndW1lbnRzW2hdKSlmb3IoYiBpbiBhKWM9Z1tiXSxkPWFbYl0sZyE9PWQmJihqJiZkJiYoci5pc1BsYWluT2JqZWN0KGQpfHwoZT1BcnJheS5pc0FycmF5KGQpKSk/KGU/KGU9ITEsZj1jJiZBcnJheS5pc0FycmF5KGMpP2M6W10pOmY9YyYmci5pc1BsYWluT2JqZWN0KGMpP2M6e30sZ1tiXT1yLmV4dGVuZChqLGYsZCkpOnZvaWQgMCE9PWQmJihnW2JdPWQpKTtyZXR1cm4gZ30sci5leHRlbmQoe2V4cGFuZG86ImpRdWVyeSIrKHErTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywiIiksaXNSZWFkeTohMCxlcnJvcjpmdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoYSl9LG5vb3A6ZnVuY3Rpb24oKXt9LGlzRnVuY3Rpb246ZnVuY3Rpb24oYSl7cmV0dXJuImZ1bmN0aW9uIj09PXIudHlwZShhKX0saXNXaW5kb3c6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWEmJmE9PT1hLndpbmRvd30saXNOdW1lcmljOmZ1bmN0aW9uKGEpe3ZhciBiPXIudHlwZShhKTtyZXR1cm4oIm51bWJlciI9PT1ifHwic3RyaW5nIj09PWIpJiYhaXNOYU4oYS1wYXJzZUZsb2F0KGEpKX0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihhKXt2YXIgYixjO3JldHVybiEoIWF8fCJbb2JqZWN0IE9iamVjdF0iIT09ay5jYWxsKGEpKSYmKCEoYj1lKGEpKXx8KGM9bC5jYWxsKGIsImNvbnN0cnVjdG9yIikmJmIuY29uc3RydWN0b3IsImZ1bmN0aW9uIj09dHlwZW9mIGMmJm0uY2FsbChjKT09PW4pKX0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihhKXt2YXIgYjtmb3IoYiBpbiBhKXJldHVybiExO3JldHVybiEwfSx0eXBlOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hP2ErIiI6Im9iamVjdCI9PXR5cGVvZiBhfHwiZnVuY3Rpb24iPT10eXBlb2YgYT9qW2suY2FsbChhKV18fCJvYmplY3QiOnR5cGVvZiBhfSxnbG9iYWxFdmFsOmZ1bmN0aW9uKGEpe3AoYSl9LGNhbWVsQ2FzZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKHQsIm1zLSIpLnJlcGxhY2UodSx2KX0sZWFjaDpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9MDtpZih3KGEpKXtmb3IoYz1hLmxlbmd0aDtkPGM7ZCsrKWlmKGIuY2FsbChhW2RdLGQsYVtkXSk9PT0hMSlicmVha31lbHNlIGZvcihkIGluIGEpaWYoYi5jYWxsKGFbZF0sZCxhW2RdKT09PSExKWJyZWFrO3JldHVybiBhfSx0cmltOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hPyIiOihhKyIiKS5yZXBsYWNlKHMsIiIpfSxtYWtlQXJyYXk6ZnVuY3Rpb24oYSxiKXt2YXIgYz1ifHxbXTtyZXR1cm4gbnVsbCE9YSYmKHcoT2JqZWN0KGEpKT9yLm1lcmdlKGMsInN0cmluZyI9PXR5cGVvZiBhP1thXTphKTpoLmNhbGwoYyxhKSksY30saW5BcnJheTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG51bGw9PWI/LTE6aS5jYWxsKGIsYSxjKX0sbWVyZ2U6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9K2IubGVuZ3RoLGQ9MCxlPWEubGVuZ3RoO2Q8YztkKyspYVtlKytdPWJbZF07cmV0dXJuIGEubGVuZ3RoPWUsYX0sZ3JlcDpmdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkLGU9W10sZj0wLGc9YS5sZW5ndGgsaD0hYztmPGc7ZisrKWQ9IWIoYVtmXSxmKSxkIT09aCYmZS5wdXNoKGFbZl0pO3JldHVybiBlfSxtYXA6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj0wLGg9W107aWYodyhhKSlmb3IoZD1hLmxlbmd0aDtmPGQ7ZisrKWU9YihhW2ZdLGYsYyksbnVsbCE9ZSYmaC5wdXNoKGUpO2Vsc2UgZm9yKGYgaW4gYSllPWIoYVtmXSxmLGMpLG51bGwhPWUmJmgucHVzaChlKTtyZXR1cm4gZy5hcHBseShbXSxoKX0sZ3VpZDoxLHByb3h5OmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlO2lmKCJzdHJpbmciPT10eXBlb2YgYiYmKGM9YVtiXSxiPWEsYT1jKSxyLmlzRnVuY3Rpb24oYSkpcmV0dXJuIGQ9Zi5jYWxsKGFyZ3VtZW50cywyKSxlPWZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkoYnx8dGhpcyxkLmNvbmNhdChmLmNhbGwoYXJndW1lbnRzKSkpfSxlLmd1aWQ9YS5ndWlkPWEuZ3VpZHx8ci5ndWlkKyssZX0sbm93OkRhdGUubm93LHN1cHBvcnQ6b30pLCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihyLmZuW1N5bWJvbC5pdGVyYXRvcl09Y1tTeW1ib2wuaXRlcmF0b3JdKSxyLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IgU3ltYm9sIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7alsiW29iamVjdCAiK2IrIl0iXT1iLnRvTG93ZXJDYXNlKCl9KTtmdW5jdGlvbiB3KGEpe3ZhciBiPSEhYSYmImxlbmd0aCJpbiBhJiZhLmxlbmd0aCxjPXIudHlwZShhKTtyZXR1cm4iZnVuY3Rpb24iIT09YyYmIXIuaXNXaW5kb3coYSkmJigiYXJyYXkiPT09Y3x8MD09PWJ8fCJudW1iZXIiPT10eXBlb2YgYiYmYj4wJiZiLTEgaW4gYSl9dmFyIHg9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQsdT0ic2l6emxlIisxKm5ldyBEYXRlLHY9YS5kb2N1bWVudCx3PTAseD0wLHk9aGEoKSx6PWhhKCksQT1oYSgpLEI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT09PWImJihsPSEwKSwwfSxDPXt9Lmhhc093blByb3BlcnR5LEQ9W10sRT1ELnBvcCxGPUQucHVzaCxHPUQucHVzaCxIPUQuc2xpY2UsST1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wLGQ9YS5sZW5ndGg7YzxkO2MrKylpZihhW2NdPT09YilyZXR1cm4gYztyZXR1cm4tMX0sSj0iY2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWQiLEs9IltcXHgyMFxcdFxcclxcblxcZl0iLEw9Iig/OlxcXFwufFtcXHctXXxbXlwwLVxceGEwXSkrIixNPSJcXFsiK0srIiooIitMKyIpKD86IitLKyIqKFsqXiR8IX5dPz0pIitLKyIqKD86JygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCJ8KCIrTCsiKSl8KSIrSysiKlxcXSIsTj0iOigiK0wrIikoPzpcXCgoKCcoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwiKXwoKD86XFxcXC58W15cXFxcKClbXFxdXXwiK00rIikqKXwuKilcXCl8KSIsTz1uZXcgUmVnRXhwKEsrIisiLCJnIiksUD1uZXcgUmVnRXhwKCJeIitLKyIrfCgoPzpefFteXFxcXF0pKD86XFxcXC4pKikiK0srIiskIiwiZyIpLFE9bmV3IFJlZ0V4cCgiXiIrSysiKiwiK0srIioiKSxSPW5ldyBSZWdFeHAoIl4iK0srIiooWz4rfl18IitLKyIpIitLKyIqIiksUz1uZXcgUmVnRXhwKCI9IitLKyIqKFteXFxdJ1wiXSo/KSIrSysiKlxcXSIsImciKSxUPW5ldyBSZWdFeHAoTiksVT1uZXcgUmVnRXhwKCJeIitMKyIkIiksVj17SUQ6bmV3IFJlZ0V4cCgiXiMoIitMKyIpIiksQ0xBU1M6bmV3IFJlZ0V4cCgiXlxcLigiK0wrIikiKSxUQUc6bmV3IFJlZ0V4cCgiXigiK0wrInxbKl0pIiksQVRUUjpuZXcgUmVnRXhwKCJeIitNKSxQU0VVRE86bmV3IFJlZ0V4cCgiXiIrTiksQ0hJTEQ6bmV3IFJlZ0V4cCgiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFwoIitLKyIqKGV2ZW58b2RkfCgoWystXXwpKFxcZCopbnwpIitLKyIqKD86KFsrLV18KSIrSysiKihcXGQrKXwpKSIrSysiKlxcKXwpIiwiaSIpLGJvb2w6bmV3IFJlZ0V4cCgiXig/OiIrSisiKSQiLCJpIiksbmVlZHNDb250ZXh0Om5ldyBSZWdFeHAoIl4iK0srIipbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg/OlxcKCIrSysiKigoPzotXFxkKT9cXGQqKSIrSysiKlxcKXwpKD89W14tXXwkKSIsImkiKX0sVz0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLFg9L15oXGQkL2ksWT0vXltee10rXHtccypcW25hdGl2ZSBcdy8sWj0vXig/OiMoW1x3LV0rKXwoXHcrKXxcLihbXHctXSspKSQvLCQ9L1srfl0vLF89bmV3IFJlZ0V4cCgiXFxcXChbXFxkYS1mXXsxLDZ9IitLKyI/fCgiK0srIil8LikiLCJpZyIpLGFhPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD0iMHgiK2ItNjU1MzY7cmV0dXJuIGQhPT1kfHxjP2I6ZDwwP1N0cmluZy5mcm9tQ2hhckNvZGUoZCs2NTUzNik6U3RyaW5nLmZyb21DaGFyQ29kZShkPj4xMHw1NTI5NiwxMDIzJmR8NTYzMjApfSxiYT0vKFtcMC1ceDFmXHg3Zl18Xi0/XGQpfF4tJHxbXlwwLVx4MWZceDdmLVx1RkZGRlx3LV0vZyxjYT1mdW5jdGlvbihhLGIpe3JldHVybiBiPyJcMCI9PT1hPyJcdWZmZmQiOmEuc2xpY2UoMCwtMSkrIlxcIithLmNoYXJDb2RlQXQoYS5sZW5ndGgtMSkudG9TdHJpbmcoMTYpKyIgIjoiXFwiK2F9LGRhPWZ1bmN0aW9uKCl7bSgpfSxlYT10YShmdW5jdGlvbihhKXtyZXR1cm4gYS5kaXNhYmxlZD09PSEwJiYoImZvcm0iaW4gYXx8ImxhYmVsImluIGEpfSx7ZGlyOiJwYXJlbnROb2RlIixuZXh0OiJsZWdlbmQifSk7dHJ5e0cuYXBwbHkoRD1ILmNhbGwodi5jaGlsZE5vZGVzKSx2LmNoaWxkTm9kZXMpLERbdi5jaGlsZE5vZGVzLmxlbmd0aF0ubm9kZVR5cGV9Y2F0Y2goZmEpe0c9e2FwcGx5OkQubGVuZ3RoP2Z1bmN0aW9uKGEsYil7Ri5hcHBseShhLEguY2FsbChiKSl9OmZ1bmN0aW9uKGEsYil7dmFyIGM9YS5sZW5ndGgsZD0wO3doaWxlKGFbYysrXT1iW2QrK10pO2EubGVuZ3RoPWMtMX19fWZ1bmN0aW9uIGdhKGEsYixkLGUpe3ZhciBmLGgsaixrLGwsbyxyLHM9YiYmYi5vd25lckRvY3VtZW50LHc9Yj9iLm5vZGVUeXBlOjk7aWYoZD1kfHxbXSwic3RyaW5nIiE9dHlwZW9mIGF8fCFhfHwxIT09dyYmOSE9PXcmJjExIT09dylyZXR1cm4gZDtpZighZSYmKChiP2Iub3duZXJEb2N1bWVudHx8Yjp2KSE9PW4mJm0oYiksYj1ifHxuLHApKXtpZigxMSE9PXcmJihsPVouZXhlYyhhKSkpaWYoZj1sWzFdKXtpZig5PT09dyl7aWYoIShqPWIuZ2V0RWxlbWVudEJ5SWQoZikpKXJldHVybiBkO2lmKGouaWQ9PT1mKXJldHVybiBkLnB1c2goaiksZH1lbHNlIGlmKHMmJihqPXMuZ2V0RWxlbWVudEJ5SWQoZikpJiZ0KGIsaikmJmouaWQ9PT1mKXJldHVybiBkLnB1c2goaiksZH1lbHNle2lmKGxbMl0pcmV0dXJuIEcuYXBwbHkoZCxiLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpKSxkO2lmKChmPWxbM10pJiZjLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSlyZXR1cm4gRy5hcHBseShkLGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShmKSksZH1pZihjLnFzYSYmIUFbYSsiICJdJiYoIXF8fCFxLnRlc3QoYSkpKXtpZigxIT09dylzPWIscj1hO2Vsc2UgaWYoIm9iamVjdCIhPT1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpeyhrPWIuZ2V0QXR0cmlidXRlKCJpZCIpKT9rPWsucmVwbGFjZShiYSxjYSk6Yi5zZXRBdHRyaWJ1dGUoImlkIixrPXUpLG89ZyhhKSxoPW8ubGVuZ3RoO3doaWxlKGgtLSlvW2hdPSIjIitrKyIgIitzYShvW2hdKTtyPW8uam9pbigiLCIpLHM9JC50ZXN0KGEpJiZxYShiLnBhcmVudE5vZGUpfHxifWlmKHIpdHJ5e3JldHVybiBHLmFwcGx5KGQscy5xdWVyeVNlbGVjdG9yQWxsKHIpKSxkfWNhdGNoKHgpe31maW5hbGx5e2s9PT11JiZiLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19fXJldHVybiBpKGEucmVwbGFjZShQLCIkMSIpLGIsZCxlKX1mdW5jdGlvbiBoYSgpe3ZhciBhPVtdO2Z1bmN0aW9uIGIoYyxlKXtyZXR1cm4gYS5wdXNoKGMrIiAiKT5kLmNhY2hlTGVuZ3RoJiZkZWxldGUgYlthLnNoaWZ0KCldLGJbYysiICJdPWV9cmV0dXJuIGJ9ZnVuY3Rpb24gaWEoYSl7cmV0dXJuIGFbdV09ITAsYX1mdW5jdGlvbiBqYShhKXt2YXIgYj1uLmNyZWF0ZUVsZW1lbnQoImZpZWxkc2V0Iik7dHJ5e3JldHVybiEhYShiKX1jYXRjaChjKXtyZXR1cm4hMX1maW5hbGx5e2IucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbH19ZnVuY3Rpb24ga2EoYSxiKXt2YXIgYz1hLnNwbGl0KCJ8IiksZT1jLmxlbmd0aDt3aGlsZShlLS0pZC5hdHRySGFuZGxlW2NbZV1dPWJ9ZnVuY3Rpb24gbGEoYSxiKXt2YXIgYz1iJiZhLGQ9YyYmMT09PWEubm9kZVR5cGUmJjE9PT1iLm5vZGVUeXBlJiZhLnNvdXJjZUluZGV4LWIuc291cmNlSW5kZXg7aWYoZClyZXR1cm4gZDtpZihjKXdoaWxlKGM9Yy5uZXh0U2libGluZylpZihjPT09YilyZXR1cm4tMTtyZXR1cm4gYT8xOi0xfWZ1bmN0aW9uIG1hKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWMmJmIudHlwZT09PWF9fWZ1bmN0aW9uIG5hKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKCJpbnB1dCI9PT1jfHwiYnV0dG9uIj09PWMpJiZiLnR5cGU9PT1hfX1mdW5jdGlvbiBvYShhKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuImZvcm0iaW4gYj9iLnBhcmVudE5vZGUmJmIuZGlzYWJsZWQ9PT0hMT8ibGFiZWwiaW4gYj8ibGFiZWwiaW4gYi5wYXJlbnROb2RlP2IucGFyZW50Tm9kZS5kaXNhYmxlZD09PWE6Yi5kaXNhYmxlZD09PWE6Yi5pc0Rpc2FibGVkPT09YXx8Yi5pc0Rpc2FibGVkIT09IWEmJmVhKGIpPT09YTpiLmRpc2FibGVkPT09YToibGFiZWwiaW4gYiYmYi5kaXNhYmxlZD09PWF9fWZ1bmN0aW9uIHBhKGEpe3JldHVybiBpYShmdW5jdGlvbihiKXtyZXR1cm4gYj0rYixpYShmdW5jdGlvbihjLGQpe3ZhciBlLGY9YShbXSxjLmxlbmd0aCxiKSxnPWYubGVuZ3RoO3doaWxlKGctLSljW2U9ZltnXV0mJihjW2VdPSEoZFtlXT1jW2VdKSl9KX0pfWZ1bmN0aW9uIHFhKGEpe3JldHVybiBhJiYidW5kZWZpbmVkIiE9dHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUmJmF9Yz1nYS5zdXBwb3J0PXt9LGY9Z2EuaXNYTUw9ZnVuY3Rpb24oYSl7dmFyIGI9YSYmKGEub3duZXJEb2N1bWVudHx8YSkuZG9jdW1lbnRFbGVtZW50O3JldHVybiEhYiYmIkhUTUwiIT09Yi5ub2RlTmFtZX0sbT1nYS5zZXREb2N1bWVudD1mdW5jdGlvbihhKXt2YXIgYixlLGc9YT9hLm93bmVyRG9jdW1lbnR8fGE6djtyZXR1cm4gZyE9PW4mJjk9PT1nLm5vZGVUeXBlJiZnLmRvY3VtZW50RWxlbWVudD8obj1nLG89bi5kb2N1bWVudEVsZW1lbnQscD0hZihuKSx2IT09biYmKGU9bi5kZWZhdWx0VmlldykmJmUudG9wIT09ZSYmKGUuYWRkRXZlbnRMaXN0ZW5lcj9lLmFkZEV2ZW50TGlzdGVuZXIoInVubG9hZCIsZGEsITEpOmUuYXR0YWNoRXZlbnQmJmUuYXR0YWNoRXZlbnQoIm9udW5sb2FkIixkYSkpLGMuYXR0cmlidXRlcz1qYShmdW5jdGlvbihhKXtyZXR1cm4gYS5jbGFzc05hbWU9ImkiLCFhLmdldEF0dHJpYnV0ZSgiY2xhc3NOYW1lIil9KSxjLmdldEVsZW1lbnRzQnlUYWdOYW1lPWphKGZ1bmN0aW9uKGEpe3JldHVybiBhLmFwcGVuZENoaWxkKG4uY3JlYXRlQ29tbWVudCgiIikpLCFhLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3RofSksYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lPVkudGVzdChuLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpLGMuZ2V0QnlJZD1qYShmdW5jdGlvbihhKXtyZXR1cm4gby5hcHBlbmRDaGlsZChhKS5pZD11LCFuLmdldEVsZW1lbnRzQnlOYW1lfHwhbi5nZXRFbGVtZW50c0J5TmFtZSh1KS5sZW5ndGh9KSxjLmdldEJ5SWQ/KGQuZmlsdGVyLklEPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShfLGFhKTtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlKCJpZCIpPT09Yn19LGQuZmluZC5JRD1mdW5jdGlvbihhLGIpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgYi5nZXRFbGVtZW50QnlJZCYmcCl7dmFyIGM9Yi5nZXRFbGVtZW50QnlJZChhKTtyZXR1cm4gYz9bY106W119fSk6KGQuZmlsdGVyLklEPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShfLGFhKTtyZXR1cm4gZnVuY3Rpb24oYSl7dmFyIGM9InVuZGVmaW5lZCIhPXR5cGVvZiBhLmdldEF0dHJpYnV0ZU5vZGUmJmEuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gYyYmYy52YWx1ZT09PWJ9fSxkLmZpbmQuSUQ9ZnVuY3Rpb24oYSxiKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGIuZ2V0RWxlbWVudEJ5SWQmJnApe3ZhciBjLGQsZSxmPWIuZ2V0RWxlbWVudEJ5SWQoYSk7aWYoZil7aWYoYz1mLmdldEF0dHJpYnV0ZU5vZGUoImlkIiksYyYmYy52YWx1ZT09PWEpcmV0dXJuW2ZdO2U9Yi5nZXRFbGVtZW50c0J5TmFtZShhKSxkPTA7d2hpbGUoZj1lW2QrK10paWYoYz1mLmdldEF0dHJpYnV0ZU5vZGUoImlkIiksYyYmYy52YWx1ZT09PWEpcmV0dXJuW2ZdfXJldHVybltdfX0pLGQuZmluZC5UQUc9Yy5nZXRFbGVtZW50c0J5VGFnTmFtZT9mdW5jdGlvbihhLGIpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgYi5nZXRFbGVtZW50c0J5VGFnTmFtZT9iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpOmMucXNhP2IucXVlcnlTZWxlY3RvckFsbChhKTp2b2lkIDB9OmZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPTAsZj1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpO2lmKCIqIj09PWEpe3doaWxlKGM9ZltlKytdKTE9PT1jLm5vZGVUeXBlJiZkLnB1c2goYyk7cmV0dXJuIGR9cmV0dXJuIGZ9LGQuZmluZC5DTEFTUz1jLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmZ1bmN0aW9uKGEsYil7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJnApcmV0dXJuIGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShhKX0scj1bXSxxPVtdLChjLnFzYT1ZLnRlc3Qobi5xdWVyeVNlbGVjdG9yQWxsKSkmJihqYShmdW5jdGlvbihhKXtvLmFwcGVuZENoaWxkKGEpLmlubmVySFRNTD0iPGEgaWQ9JyIrdSsiJz48L2E+PHNlbGVjdCBpZD0nIit1KyItXHJcXCcgbXNhbGxvd2NhcHR1cmU9Jyc+PG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4iLGEucXVlcnlTZWxlY3RvckFsbCgiW21zYWxsb3djYXB0dXJlXj0nJ10iKS5sZW5ndGgmJnEucHVzaCgiWypeJF09IitLKyIqKD86Jyd8XCJcIikiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGh8fHEucHVzaCgiXFxbIitLKyIqKD86dmFsdWV8IitKKyIpIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJbaWR+PSIrdSsiLV0iKS5sZW5ndGh8fHEucHVzaCgifj0iKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVja2VkIikubGVuZ3RofHxxLnB1c2goIjpjaGVja2VkIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJhIyIrdSsiKyoiKS5sZW5ndGh8fHEucHVzaCgiLiMuK1srfl0iKX0pLGphKGZ1bmN0aW9uKGEpe2EuaW5uZXJIVE1MPSI8YSBocmVmPScnIGRpc2FibGVkPSdkaXNhYmxlZCc+PC9hPjxzZWxlY3QgZGlzYWJsZWQ9J2Rpc2FibGVkJz48b3B0aW9uLz48L3NlbGVjdD4iO3ZhciBiPW4uY3JlYXRlRWxlbWVudCgiaW5wdXQiKTtiLnNldEF0dHJpYnV0ZSgidHlwZSIsImhpZGRlbiIpLGEuYXBwZW5kQ2hpbGQoYikuc2V0QXR0cmlidXRlKCJuYW1lIiwiRCIpLGEucXVlcnlTZWxlY3RvckFsbCgiW25hbWU9ZF0iKS5sZW5ndGgmJnEucHVzaCgibmFtZSIrSysiKlsqXiR8IX5dPz0iKSwyIT09YS5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxlbmd0aCYmcS5wdXNoKCI6ZW5hYmxlZCIsIjpkaXNhYmxlZCIpLG8uYXBwZW5kQ2hpbGQoYSkuZGlzYWJsZWQ9ITAsMiE9PWEucXVlcnlTZWxlY3RvckFsbCgiOmRpc2FibGVkIikubGVuZ3RoJiZxLnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIiksYS5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4IikscS5wdXNoKCIsLio6Iil9KSksKGMubWF0Y2hlc1NlbGVjdG9yPVkudGVzdChzPW8ubWF0Y2hlc3x8by53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fG8ubW96TWF0Y2hlc1NlbGVjdG9yfHxvLm9NYXRjaGVzU2VsZWN0b3J8fG8ubXNNYXRjaGVzU2VsZWN0b3IpKSYmamEoZnVuY3Rpb24oYSl7Yy5kaXNjb25uZWN0ZWRNYXRjaD1zLmNhbGwoYSwiKiIpLHMuY2FsbChhLCJbcyE9JyddOngiKSxyLnB1c2goIiE9IixOKX0pLHE9cS5sZW5ndGgmJm5ldyBSZWdFeHAocS5qb2luKCJ8IikpLHI9ci5sZW5ndGgmJm5ldyBSZWdFeHAoci5qb2luKCJ8IikpLGI9WS50ZXN0KG8uY29tcGFyZURvY3VtZW50UG9zaXRpb24pLHQ9Ynx8WS50ZXN0KG8uY29udGFpbnMpP2Z1bmN0aW9uKGEsYil7dmFyIGM9OT09PWEubm9kZVR5cGU/YS5kb2N1bWVudEVsZW1lbnQ6YSxkPWImJmIucGFyZW50Tm9kZTtyZXR1cm4gYT09PWR8fCEoIWR8fDEhPT1kLm5vZGVUeXBlfHwhKGMuY29udGFpbnM/Yy5jb250YWlucyhkKTphLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYxNiZhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGQpKSl9OmZ1bmN0aW9uKGEsYil7aWYoYil3aGlsZShiPWIucGFyZW50Tm9kZSlpZihiPT09YSlyZXR1cm4hMDtyZXR1cm4hMX0sQj1iP2Z1bmN0aW9uKGEsYil7aWYoYT09PWIpcmV0dXJuIGw9ITAsMDt2YXIgZD0hYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbi0hYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtyZXR1cm4gZD9kOihkPShhLm93bmVyRG9jdW1lbnR8fGEpPT09KGIub3duZXJEb2N1bWVudHx8Yik/YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKToxLDEmZHx8IWMuc29ydERldGFjaGVkJiZiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGEpPT09ZD9hPT09bnx8YS5vd25lckRvY3VtZW50PT09diYmdCh2LGEpPy0xOmI9PT1ufHxiLm93bmVyRG9jdW1lbnQ9PT12JiZ0KHYsYik/MTprP0koayxhKS1JKGssYik6MDo0JmQ/LTE6MSl9OmZ1bmN0aW9uKGEsYil7aWYoYT09PWIpcmV0dXJuIGw9ITAsMDt2YXIgYyxkPTAsZT1hLnBhcmVudE5vZGUsZj1iLnBhcmVudE5vZGUsZz1bYV0saD1bYl07aWYoIWV8fCFmKXJldHVybiBhPT09bj8tMTpiPT09bj8xOmU/LTE6Zj8xOms/SShrLGEpLUkoayxiKTowO2lmKGU9PT1mKXJldHVybiBsYShhLGIpO2M9YTt3aGlsZShjPWMucGFyZW50Tm9kZSlnLnVuc2hpZnQoYyk7Yz1iO3doaWxlKGM9Yy5wYXJlbnROb2RlKWgudW5zaGlmdChjKTt3aGlsZShnW2RdPT09aFtkXSlkKys7cmV0dXJuIGQ/bGEoZ1tkXSxoW2RdKTpnW2RdPT09dj8tMTpoW2RdPT09dj8xOjB9LG4pOm59LGdhLm1hdGNoZXM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZ2EoYSxudWxsLG51bGwsYil9LGdhLm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihhLGIpe2lmKChhLm93bmVyRG9jdW1lbnR8fGEpIT09biYmbShhKSxiPWIucmVwbGFjZShTLCI9JyQxJ10iKSxjLm1hdGNoZXNTZWxlY3RvciYmcCYmIUFbYisiICJdJiYoIXJ8fCFyLnRlc3QoYikpJiYoIXF8fCFxLnRlc3QoYikpKXRyeXt2YXIgZD1zLmNhbGwoYSxiKTtpZihkfHxjLmRpc2Nvbm5lY3RlZE1hdGNofHxhLmRvY3VtZW50JiYxMSE9PWEuZG9jdW1lbnQubm9kZVR5cGUpcmV0dXJuIGR9Y2F0Y2goZSl7fXJldHVybiBnYShiLG4sbnVsbCxbYV0pLmxlbmd0aD4wfSxnYS5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybihhLm93bmVyRG9jdW1lbnR8fGEpIT09biYmbShhKSx0KGEsYil9LGdhLmF0dHI9ZnVuY3Rpb24oYSxiKXsoYS5vd25lckRvY3VtZW50fHxhKSE9PW4mJm0oYSk7dmFyIGU9ZC5hdHRySGFuZGxlW2IudG9Mb3dlckNhc2UoKV0sZj1lJiZDLmNhbGwoZC5hdHRySGFuZGxlLGIudG9Mb3dlckNhc2UoKSk/ZShhLGIsIXApOnZvaWQgMDtyZXR1cm4gdm9pZCAwIT09Zj9mOmMuYXR0cmlidXRlc3x8IXA/YS5nZXRBdHRyaWJ1dGUoYik6KGY9YS5nZXRBdHRyaWJ1dGVOb2RlKGIpKSYmZi5zcGVjaWZpZWQ/Zi52YWx1ZTpudWxsfSxnYS5lc2NhcGU9ZnVuY3Rpb24oYSl7cmV0dXJuKGErIiIpLnJlcGxhY2UoYmEsY2EpfSxnYS5lcnJvcj1mdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrYSl9LGdhLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oYSl7dmFyIGIsZD1bXSxlPTAsZj0wO2lmKGw9IWMuZGV0ZWN0RHVwbGljYXRlcyxrPSFjLnNvcnRTdGFibGUmJmEuc2xpY2UoMCksYS5zb3J0KEIpLGwpe3doaWxlKGI9YVtmKytdKWI9PT1hW2ZdJiYoZT1kLnB1c2goZikpO3doaWxlKGUtLSlhLnNwbGljZShkW2VdLDEpfXJldHVybiBrPW51bGwsYX0sZT1nYS5nZXRUZXh0PWZ1bmN0aW9uKGEpe3ZhciBiLGM9IiIsZD0wLGY9YS5ub2RlVHlwZTtpZihmKXtpZigxPT09Znx8OT09PWZ8fDExPT09Zil7aWYoInN0cmluZyI9PXR5cGVvZiBhLnRleHRDb250ZW50KXJldHVybiBhLnRleHRDb250ZW50O2ZvcihhPWEuZmlyc3RDaGlsZDthO2E9YS5uZXh0U2libGluZyljKz1lKGEpfWVsc2UgaWYoMz09PWZ8fDQ9PT1mKXJldHVybiBhLm5vZGVWYWx1ZX1lbHNlIHdoaWxlKGI9YVtkKytdKWMrPWUoYik7cmV0dXJuIGN9LGQ9Z2Euc2VsZWN0b3JzPXtjYWNoZUxlbmd0aDo1MCxjcmVhdGVQc2V1ZG86aWEsbWF0Y2g6VixhdHRySGFuZGxlOnt9LGZpbmQ6e30scmVsYXRpdmU6eyI+Ijp7ZGlyOiJwYXJlbnROb2RlIixmaXJzdDohMH0sIiAiOntkaXI6InBhcmVudE5vZGUifSwiKyI6e2RpcjoicHJldmlvdXNTaWJsaW5nIixmaXJzdDohMH0sIn4iOntkaXI6InByZXZpb3VzU2libGluZyJ9fSxwcmVGaWx0ZXI6e0FUVFI6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbMV09YVsxXS5yZXBsYWNlKF8sYWEpLGFbM109KGFbM118fGFbNF18fGFbNV18fCIiKS5yZXBsYWNlKF8sYWEpLCJ+PSI9PT1hWzJdJiYoYVszXT0iICIrYVszXSsiICIpLGEuc2xpY2UoMCw0KX0sQ0hJTEQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbMV09YVsxXS50b0xvd2VyQ2FzZSgpLCJudGgiPT09YVsxXS5zbGljZSgwLDMpPyhhWzNdfHxnYS5lcnJvcihhWzBdKSxhWzRdPSsoYVs0XT9hWzVdKyhhWzZdfHwxKToyKigiZXZlbiI9PT1hWzNdfHwib2RkIj09PWFbM10pKSxhWzVdPSsoYVs3XSthWzhdfHwib2RkIj09PWFbM10pKTphWzNdJiZnYS5lcnJvcihhWzBdKSxhfSxQU0VVRE86ZnVuY3Rpb24oYSl7dmFyIGIsYz0hYVs2XSYmYVsyXTtyZXR1cm4gVi5DSElMRC50ZXN0KGFbMF0pP251bGw6KGFbM10/YVsyXT1hWzRdfHxhWzVdfHwiIjpjJiZULnRlc3QoYykmJihiPWcoYywhMCkpJiYoYj1jLmluZGV4T2YoIikiLGMubGVuZ3RoLWIpLWMubGVuZ3RoKSYmKGFbMF09YVswXS5zbGljZSgwLGIpLGFbMl09Yy5zbGljZSgwLGIpKSxhLnNsaWNlKDAsMykpfX0sZmlsdGVyOntUQUc6ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKF8sYWEpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIioiPT09YT9mdW5jdGlvbigpe3JldHVybiEwfTpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yn19LENMQVNTOmZ1bmN0aW9uKGEpe3ZhciBiPXlbYSsiICJdO3JldHVybiBifHwoYj1uZXcgUmVnRXhwKCIoXnwiK0srIikiK2ErIigiK0srInwkKSIpKSYmeShhLGZ1bmN0aW9uKGEpe3JldHVybiBiLnRlc3QoInN0cmluZyI9PXR5cGVvZiBhLmNsYXNzTmFtZSYmYS5jbGFzc05hbWV8fCJ1bmRlZmluZWQiIT10eXBlb2YgYS5nZXRBdHRyaWJ1dGUmJmEuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9KX0sQVRUUjpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGZ1bmN0aW9uKGQpe3ZhciBlPWdhLmF0dHIoZCxhKTtyZXR1cm4gbnVsbD09ZT8iIT0iPT09YjohYnx8KGUrPSIiLCI9Ij09PWI/ZT09PWM6IiE9Ij09PWI/ZSE9PWM6Il49Ij09PWI/YyYmMD09PWUuaW5kZXhPZihjKToiKj0iPT09Yj9jJiZlLmluZGV4T2YoYyk+LTE6IiQ9Ij09PWI/YyYmZS5zbGljZSgtYy5sZW5ndGgpPT09Yzoifj0iPT09Yj8oIiAiK2UucmVwbGFjZShPLCIgIikrIiAiKS5pbmRleE9mKGMpPi0xOiJ8PSI9PT1iJiYoZT09PWN8fGUuc2xpY2UoMCxjLmxlbmd0aCsxKT09PWMrIi0iKSl9fSxDSElMRDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPSJudGgiIT09YS5zbGljZSgwLDMpLGc9Imxhc3QiIT09YS5zbGljZSgtNCksaD0ib2YtdHlwZSI9PT1iO3JldHVybiAxPT09ZCYmMD09PWU/ZnVuY3Rpb24oYSl7cmV0dXJuISFhLnBhcmVudE5vZGV9OmZ1bmN0aW9uKGIsYyxpKXt2YXIgaixrLGwsbSxuLG8scD1mIT09Zz8ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbmciLHE9Yi5wYXJlbnROb2RlLHI9aCYmYi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLHM9IWkmJiFoLHQ9ITE7aWYocSl7aWYoZil7d2hpbGUocCl7bT1iO3doaWxlKG09bVtwXSlpZihoP20ubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXI6MT09PW0ubm9kZVR5cGUpcmV0dXJuITE7bz1wPSJvbmx5Ij09PWEmJiFvJiYibmV4dFNpYmxpbmcifXJldHVybiEwfWlmKG89W2c/cS5maXJzdENoaWxkOnEubGFzdENoaWxkXSxnJiZzKXttPXEsbD1tW3VdfHwobVt1XT17fSksaz1sW20udW5pcXVlSURdfHwobFttLnVuaXF1ZUlEXT17fSksaj1rW2FdfHxbXSxuPWpbMF09PT13JiZqWzFdLHQ9biYmalsyXSxtPW4mJnEuY2hpbGROb2Rlc1tuXTt3aGlsZShtPSsrbiYmbSYmbVtwXXx8KHQ9bj0wKXx8by5wb3AoKSlpZigxPT09bS5ub2RlVHlwZSYmKyt0JiZtPT09Yil7a1thXT1bdyxuLHRdO2JyZWFrfX1lbHNlIGlmKHMmJihtPWIsbD1tW3VdfHwobVt1XT17fSksaz1sW20udW5pcXVlSURdfHwobFttLnVuaXF1ZUlEXT17fSksaj1rW2FdfHxbXSxuPWpbMF09PT13JiZqWzFdLHQ9biksdD09PSExKXdoaWxlKG09KytuJiZtJiZtW3BdfHwodD1uPTApfHxvLnBvcCgpKWlmKChoP20ubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXI6MT09PW0ubm9kZVR5cGUpJiYrK3QmJihzJiYobD1tW3VdfHwobVt1XT17fSksaz1sW20udW5pcXVlSURdfHwobFttLnVuaXF1ZUlEXT17fSksa1thXT1bdyx0XSksbT09PWIpKWJyZWFrO3JldHVybiB0LT1lLHQ9PT1kfHx0JWQ9PT0wJiZ0L2Q+PTB9fX0sUFNFVURPOmZ1bmN0aW9uKGEsYil7dmFyIGMsZT1kLnBzZXVkb3NbYV18fGQuc2V0RmlsdGVyc1thLnRvTG93ZXJDYXNlKCldfHxnYS5lcnJvcigidW5zdXBwb3J0ZWQgcHNldWRvOiAiK2EpO3JldHVybiBlW3VdP2UoYik6ZS5sZW5ndGg+MT8oYz1bYSxhLCIiLGJdLGQuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eShhLnRvTG93ZXJDYXNlKCkpP2lhKGZ1bmN0aW9uKGEsYyl7dmFyIGQsZj1lKGEsYiksZz1mLmxlbmd0aDt3aGlsZShnLS0pZD1JKGEsZltnXSksYVtkXT0hKGNbZF09ZltnXSl9KTpmdW5jdGlvbihhKXtyZXR1cm4gZShhLDAsYyl9KTplfX0scHNldWRvczp7bm90OmlhKGZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM9W10sZD1oKGEucmVwbGFjZShQLCIkMSIpKTtyZXR1cm4gZFt1XT9pYShmdW5jdGlvbihhLGIsYyxlKXt2YXIgZixnPWQoYSxudWxsLGUsW10pLGg9YS5sZW5ndGg7d2hpbGUoaC0tKShmPWdbaF0pJiYoYVtoXT0hKGJbaF09ZikpfSk6ZnVuY3Rpb24oYSxlLGYpe3JldHVybiBiWzBdPWEsZChiLG51bGwsZixjKSxiWzBdPW51bGwsIWMucG9wKCl9fSksaGFzOmlhKGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4gZ2EoYSxiKS5sZW5ndGg+MH19KSxjb250YWluczppYShmdW5jdGlvbihhKXtyZXR1cm4gYT1hLnJlcGxhY2UoXyxhYSksZnVuY3Rpb24oYil7cmV0dXJuKGIudGV4dENvbnRlbnR8fGIuaW5uZXJUZXh0fHxlKGIpKS5pbmRleE9mKGEpPi0xfX0pLGxhbmc6aWEoZnVuY3Rpb24oYSl7cmV0dXJuIFUudGVzdChhfHwiIil8fGdhLmVycm9yKCJ1bnN1cHBvcnRlZCBsYW5nOiAiK2EpLGE9YS5yZXBsYWNlKF8sYWEpLnRvTG93ZXJDYXNlKCksZnVuY3Rpb24oYil7dmFyIGM7ZG8gaWYoYz1wP2IubGFuZzpiLmdldEF0dHJpYnV0ZSgieG1sOmxhbmciKXx8Yi5nZXRBdHRyaWJ1dGUoImxhbmciKSlyZXR1cm4gYz1jLnRvTG93ZXJDYXNlKCksYz09PWF8fDA9PT1jLmluZGV4T2YoYSsiLSIpO3doaWxlKChiPWIucGFyZW50Tm9kZSkmJjE9PT1iLm5vZGVUeXBlKTtyZXR1cm4hMX19KSx0YXJnZXQ6ZnVuY3Rpb24oYil7dmFyIGM9YS5sb2NhdGlvbiYmYS5sb2NhdGlvbi5oYXNoO3JldHVybiBjJiZjLnNsaWNlKDEpPT09Yi5pZH0scm9vdDpmdW5jdGlvbihhKXtyZXR1cm4gYT09PW99LGZvY3VzOmZ1bmN0aW9uKGEpe3JldHVybiBhPT09bi5hY3RpdmVFbGVtZW50JiYoIW4uaGFzRm9jdXN8fG4uaGFzRm9jdXMoKSkmJiEhKGEudHlwZXx8YS5ocmVmfHx+YS50YWJJbmRleCl9LGVuYWJsZWQ6b2EoITEpLGRpc2FibGVkOm9hKCEwKSxjaGVja2VkOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09YiYmISFhLmNoZWNrZWR8fCJvcHRpb24iPT09YiYmISFhLnNlbGVjdGVkfSxzZWxlY3RlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCxhLnNlbGVjdGVkPT09ITB9LGVtcHR5OmZ1bmN0aW9uKGEpe2ZvcihhPWEuZmlyc3RDaGlsZDthO2E9YS5uZXh0U2libGluZylpZihhLm5vZGVUeXBlPDYpcmV0dXJuITE7cmV0dXJuITB9LHBhcmVudDpmdW5jdGlvbihhKXtyZXR1cm4hZC5wc2V1ZG9zLmVtcHR5KGEpfSxoZWFkZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIFgudGVzdChhLm5vZGVOYW1lKX0saW5wdXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFcudGVzdChhLm5vZGVOYW1lKX0sYnV0dG9uOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09YiYmImJ1dHRvbiI9PT1hLnR5cGV8fCJidXR0b24iPT09Yn0sdGV4dDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4iaW5wdXQiPT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYidGV4dCI9PT1hLnR5cGUmJihudWxsPT0oYj1hLmdldEF0dHJpYnV0ZSgidHlwZSIpKXx8InRleHQiPT09Yi50b0xvd2VyQ2FzZSgpKX0sZmlyc3Q6cGEoZnVuY3Rpb24oKXtyZXR1cm5bMF19KSxsYXN0OnBhKGZ1bmN0aW9uKGEsYil7cmV0dXJuW2ItMV19KSxlcTpwYShmdW5jdGlvbihhLGIsYyl7cmV0dXJuW2M8MD9jK2I6Y119KSxldmVuOnBhKGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTA7YzxiO2MrPTIpYS5wdXNoKGMpO3JldHVybiBhfSksb2RkOnBhKGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTE7YzxiO2MrPTIpYS5wdXNoKGMpO3JldHVybiBhfSksbHQ6cGEoZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD1jPDA/YytiOmM7LS1kPj0wOylhLnB1c2goZCk7cmV0dXJuIGF9KSxndDpwYShmdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPWM8MD9jK2I6YzsrK2Q8YjspYS5wdXNoKGQpO3JldHVybiBhfSl9fSxkLnBzZXVkb3MubnRoPWQucHNldWRvcy5lcTtmb3IoYiBpbntyYWRpbzohMCxjaGVja2JveDohMCxmaWxlOiEwLHBhc3N3b3JkOiEwLGltYWdlOiEwfSlkLnBzZXVkb3NbYl09bWEoYik7Zm9yKGIgaW57c3VibWl0OiEwLHJlc2V0OiEwfSlkLnBzZXVkb3NbYl09bmEoYik7ZnVuY3Rpb24gcmEoKXt9cmEucHJvdG90eXBlPWQuZmlsdGVycz1kLnBzZXVkb3MsZC5zZXRGaWx0ZXJzPW5ldyByYSxnPWdhLnRva2VuaXplPWZ1bmN0aW9uKGEsYil7dmFyIGMsZSxmLGcsaCxpLGosaz16W2ErIiAiXTtpZihrKXJldHVybiBiPzA6ay5zbGljZSgwKTtoPWEsaT1bXSxqPWQucHJlRmlsdGVyO3doaWxlKGgpe2MmJiEoZT1RLmV4ZWMoaCkpfHwoZSYmKGg9aC5zbGljZShlWzBdLmxlbmd0aCl8fGgpLGkucHVzaChmPVtdKSksYz0hMSwoZT1SLmV4ZWMoaCkpJiYoYz1lLnNoaWZ0KCksZi5wdXNoKHt2YWx1ZTpjLHR5cGU6ZVswXS5yZXBsYWNlKFAsIiAiKX0pLGg9aC5zbGljZShjLmxlbmd0aCkpO2ZvcihnIGluIGQuZmlsdGVyKSEoZT1WW2ddLmV4ZWMoaCkpfHxqW2ddJiYhKGU9altnXShlKSl8fChjPWUuc2hpZnQoKSxmLnB1c2goe3ZhbHVlOmMsdHlwZTpnLG1hdGNoZXM6ZX0pLGg9aC5zbGljZShjLmxlbmd0aCkpO2lmKCFjKWJyZWFrfXJldHVybiBiP2gubGVuZ3RoOmg/Z2EuZXJyb3IoYSk6eihhLGkpLnNsaWNlKDApfTtmdW5jdGlvbiBzYShhKXtmb3IodmFyIGI9MCxjPWEubGVuZ3RoLGQ9IiI7YjxjO2IrKylkKz1hW2JdLnZhbHVlO3JldHVybiBkfWZ1bmN0aW9uIHRhKGEsYixjKXt2YXIgZD1iLmRpcixlPWIubmV4dCxmPWV8fGQsZz1jJiYicGFyZW50Tm9kZSI9PT1mLGg9eCsrO3JldHVybiBiLmZpcnN0P2Z1bmN0aW9uKGIsYyxlKXt3aGlsZShiPWJbZF0paWYoMT09PWIubm9kZVR5cGV8fGcpcmV0dXJuIGEoYixjLGUpO3JldHVybiExfTpmdW5jdGlvbihiLGMsaSl7dmFyIGosayxsLG09W3csaF07aWYoaSl7d2hpbGUoYj1iW2RdKWlmKCgxPT09Yi5ub2RlVHlwZXx8ZykmJmEoYixjLGkpKXJldHVybiEwfWVsc2Ugd2hpbGUoYj1iW2RdKWlmKDE9PT1iLm5vZGVUeXBlfHxnKWlmKGw9Ylt1XXx8KGJbdV09e30pLGs9bFtiLnVuaXF1ZUlEXXx8KGxbYi51bmlxdWVJRF09e30pLGUmJmU9PT1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpYj1iW2RdfHxiO2Vsc2V7aWYoKGo9a1tmXSkmJmpbMF09PT13JiZqWzFdPT09aClyZXR1cm4gbVsyXT1qWzJdO2lmKGtbZl09bSxtWzJdPWEoYixjLGkpKXJldHVybiEwfXJldHVybiExfX1mdW5jdGlvbiB1YShhKXtyZXR1cm4gYS5sZW5ndGg+MT9mdW5jdGlvbihiLGMsZCl7dmFyIGU9YS5sZW5ndGg7d2hpbGUoZS0tKWlmKCFhW2VdKGIsYyxkKSlyZXR1cm4hMTtyZXR1cm4hMH06YVswXX1mdW5jdGlvbiB2YShhLGIsYyl7Zm9yKHZhciBkPTAsZT1iLmxlbmd0aDtkPGU7ZCsrKWdhKGEsYltkXSxjKTtyZXR1cm4gY31mdW5jdGlvbiB3YShhLGIsYyxkLGUpe2Zvcih2YXIgZixnPVtdLGg9MCxpPWEubGVuZ3RoLGo9bnVsbCE9YjtoPGk7aCsrKShmPWFbaF0pJiYoYyYmIWMoZixkLGUpfHwoZy5wdXNoKGYpLGomJmIucHVzaChoKSkpO3JldHVybiBnfWZ1bmN0aW9uIHhhKGEsYixjLGQsZSxmKXtyZXR1cm4gZCYmIWRbdV0mJihkPXhhKGQpKSxlJiYhZVt1XSYmKGU9eGEoZSxmKSksaWEoZnVuY3Rpb24oZixnLGgsaSl7dmFyIGosayxsLG09W10sbj1bXSxvPWcubGVuZ3RoLHA9Znx8dmEoYnx8IioiLGgubm9kZVR5cGU/W2hdOmgsW10pLHE9IWF8fCFmJiZiP3A6d2EocCxtLGEsaCxpKSxyPWM/ZXx8KGY/YTpvfHxkKT9bXTpnOnE7aWYoYyYmYyhxLHIsaCxpKSxkKXtqPXdhKHIsbiksZChqLFtdLGgsaSksaz1qLmxlbmd0aDt3aGlsZShrLS0pKGw9altrXSkmJihyW25ba11dPSEocVtuW2tdXT1sKSl9aWYoZil7aWYoZXx8YSl7aWYoZSl7aj1bXSxrPXIubGVuZ3RoO3doaWxlKGstLSkobD1yW2tdKSYmai5wdXNoKHFba109bCk7ZShudWxsLHI9W10saixpKX1rPXIubGVuZ3RoO3doaWxlKGstLSkobD1yW2tdKSYmKGo9ZT9JKGYsbCk6bVtrXSk+LTEmJihmW2pdPSEoZ1tqXT1sKSl9fWVsc2Ugcj13YShyPT09Zz9yLnNwbGljZShvLHIubGVuZ3RoKTpyKSxlP2UobnVsbCxnLHIsaSk6Ry5hcHBseShnLHIpfSl9ZnVuY3Rpb24geWEoYSl7Zm9yKHZhciBiLGMsZSxmPWEubGVuZ3RoLGc9ZC5yZWxhdGl2ZVthWzBdLnR5cGVdLGg9Z3x8ZC5yZWxhdGl2ZVsiICJdLGk9Zz8xOjAsaz10YShmdW5jdGlvbihhKXtyZXR1cm4gYT09PWJ9LGgsITApLGw9dGEoZnVuY3Rpb24oYSl7cmV0dXJuIEkoYixhKT4tMX0saCwhMCksbT1bZnVuY3Rpb24oYSxjLGQpe3ZhciBlPSFnJiYoZHx8YyE9PWopfHwoKGI9Yykubm9kZVR5cGU/ayhhLGMsZCk6bChhLGMsZCkpO3JldHVybiBiPW51bGwsZX1dO2k8ZjtpKyspaWYoYz1kLnJlbGF0aXZlW2FbaV0udHlwZV0pbT1bdGEodWEobSksYyldO2Vsc2V7aWYoYz1kLmZpbHRlclthW2ldLnR5cGVdLmFwcGx5KG51bGwsYVtpXS5tYXRjaGVzKSxjW3VdKXtmb3IoZT0rK2k7ZTxmO2UrKylpZihkLnJlbGF0aXZlW2FbZV0udHlwZV0pYnJlYWs7cmV0dXJuIHhhKGk+MSYmdWEobSksaT4xJiZzYShhLnNsaWNlKDAsaS0xKS5jb25jYXQoe3ZhbHVlOiIgIj09PWFbaS0yXS50eXBlPyIqIjoiIn0pKS5yZXBsYWNlKFAsIiQxIiksYyxpPGUmJnlhKGEuc2xpY2UoaSxlKSksZTxmJiZ5YShhPWEuc2xpY2UoZSkpLGU8ZiYmc2EoYSkpfW0ucHVzaChjKX1yZXR1cm4gdWEobSl9ZnVuY3Rpb24gemEoYSxiKXt2YXIgYz1iLmxlbmd0aD4wLGU9YS5sZW5ndGg+MCxmPWZ1bmN0aW9uKGYsZyxoLGksayl7dmFyIGwsbyxxLHI9MCxzPSIwIix0PWYmJltdLHU9W10sdj1qLHg9Znx8ZSYmZC5maW5kLlRBRygiKiIsaykseT13Kz1udWxsPT12PzE6TWF0aC5yYW5kb20oKXx8LjEsej14Lmxlbmd0aDtmb3IoayYmKGo9Zz09PW58fGd8fGspO3MhPT16JiZudWxsIT0obD14W3NdKTtzKyspe2lmKGUmJmwpe289MCxnfHxsLm93bmVyRG9jdW1lbnQ9PT1ufHwobShsKSxoPSFwKTt3aGlsZShxPWFbbysrXSlpZihxKGwsZ3x8bixoKSl7aS5wdXNoKGwpO2JyZWFrfWsmJih3PXkpfWMmJigobD0hcSYmbCkmJnItLSxmJiZ0LnB1c2gobCkpfWlmKHIrPXMsYyYmcyE9PXIpe289MDt3aGlsZShxPWJbbysrXSlxKHQsdSxnLGgpO2lmKGYpe2lmKHI+MCl3aGlsZShzLS0pdFtzXXx8dVtzXXx8KHVbc109RS5jYWxsKGkpKTt1PXdhKHUpfUcuYXBwbHkoaSx1KSxrJiYhZiYmdS5sZW5ndGg+MCYmcitiLmxlbmd0aD4xJiZnYS51bmlxdWVTb3J0KGkpfXJldHVybiBrJiYodz15LGo9diksdH07cmV0dXJuIGM/aWEoZik6Zn1yZXR1cm4gaD1nYS5jb21waWxlPWZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPVtdLGY9QVthKyIgIl07aWYoIWYpe2J8fChiPWcoYSkpLGM9Yi5sZW5ndGg7d2hpbGUoYy0tKWY9eWEoYltjXSksZlt1XT9kLnB1c2goZik6ZS5wdXNoKGYpO2Y9QShhLHphKGUsZCkpLGYuc2VsZWN0b3I9YX1yZXR1cm4gZn0saT1nYS5zZWxlY3Q9ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGYsaSxqLGssbCxtPSJmdW5jdGlvbiI9PXR5cGVvZiBhJiZhLG49IWUmJmcoYT1tLnNlbGVjdG9yfHxhKTtpZihjPWN8fFtdLDE9PT1uLmxlbmd0aCl7aWYoaT1uWzBdPW5bMF0uc2xpY2UoMCksaS5sZW5ndGg+MiYmIklEIj09PShqPWlbMF0pLnR5cGUmJjk9PT1iLm5vZGVUeXBlJiZwJiZkLnJlbGF0aXZlW2lbMV0udHlwZV0pe2lmKGI9KGQuZmluZC5JRChqLm1hdGNoZXNbMF0ucmVwbGFjZShfLGFhKSxiKXx8W10pWzBdLCFiKXJldHVybiBjO20mJihiPWIucGFyZW50Tm9kZSksYT1hLnNsaWNlKGkuc2hpZnQoKS52YWx1ZS5sZW5ndGgpfWY9Vi5uZWVkc0NvbnRleHQudGVzdChhKT8wOmkubGVuZ3RoO3doaWxlKGYtLSl7aWYoaj1pW2ZdLGQucmVsYXRpdmVbaz1qLnR5cGVdKWJyZWFrO2lmKChsPWQuZmluZFtrXSkmJihlPWwoai5tYXRjaGVzWzBdLnJlcGxhY2UoXyxhYSksJC50ZXN0KGlbMF0udHlwZSkmJnFhKGIucGFyZW50Tm9kZSl8fGIpKSl7aWYoaS5zcGxpY2UoZiwxKSxhPWUubGVuZ3RoJiZzYShpKSwhYSlyZXR1cm4gRy5hcHBseShjLGUpLGM7YnJlYWt9fX1yZXR1cm4obXx8aChhLG4pKShlLGIsIXAsYywhYnx8JC50ZXN0KGEpJiZxYShiLnBhcmVudE5vZGUpfHxiKSxjfSxjLnNvcnRTdGFibGU9dS5zcGxpdCgiIikuc29ydChCKS5qb2luKCIiKT09PXUsYy5kZXRlY3REdXBsaWNhdGVzPSEhbCxtKCksYy5zb3J0RGV0YWNoZWQ9amEoZnVuY3Rpb24oYSl7cmV0dXJuIDEmYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihuLmNyZWF0ZUVsZW1lbnQoImZpZWxkc2V0IikpfSksamEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8YSBocmVmPScjJz48L2E+IiwiIyI9PT1hLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIil9KXx8a2EoInR5cGV8aHJlZnxoZWlnaHR8d2lkdGgiLGZ1bmN0aW9uKGEsYixjKXtpZighYylyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoYiwidHlwZSI9PT1iLnRvTG93ZXJDYXNlKCk/MToyKX0pLGMuYXR0cmlidXRlcyYmamEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8aW5wdXQvPiIsYS5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKSwiIj09PWEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoInZhbHVlIil9KXx8a2EoInZhbHVlIixmdW5jdGlvbihhLGIsYyl7aWYoIWMmJiJpbnB1dCI9PT1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpcmV0dXJuIGEuZGVmYXVsdFZhbHVlfSksamEoZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWEuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpfSl8fGthKEosZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2lmKCFjKXJldHVybiBhW2JdPT09ITA/Yi50b0xvd2VyQ2FzZSgpOihkPWEuZ2V0QXR0cmlidXRlTm9kZShiKSkmJmQuc3BlY2lmaWVkP2QudmFsdWU6bnVsbH0pLGdhfShhKTtyLmZpbmQ9eCxyLmV4cHI9eC5zZWxlY3RvcnMsci5leHByWyI6Il09ci5leHByLnBzZXVkb3Msci51bmlxdWVTb3J0PXIudW5pcXVlPXgudW5pcXVlU29ydCxyLnRleHQ9eC5nZXRUZXh0LHIuaXNYTUxEb2M9eC5pc1hNTCxyLmNvbnRhaW5zPXguY29udGFpbnMsci5lc2NhcGVTZWxlY3Rvcj14LmVzY2FwZTt2YXIgeT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9W10sZT12b2lkIDAhPT1jO3doaWxlKChhPWFbYl0pJiY5IT09YS5ub2RlVHlwZSlpZigxPT09YS5ub2RlVHlwZSl7aWYoZSYmcihhKS5pcyhjKSlicmVhaztkLnB1c2goYSl9cmV0dXJuIGR9LHo9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9W107YTthPWEubmV4dFNpYmxpbmcpMT09PWEubm9kZVR5cGUmJmEhPT1iJiZjLnB1c2goYSk7cmV0dXJuIGN9LEE9ci5leHByLm1hdGNoLm5lZWRzQ29udGV4dDtmdW5jdGlvbiBCKGEsYil7cmV0dXJuIGEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWIudG9Mb3dlckNhc2UoKX12YXIgQz0vXjwoW2Etel1bXlwvXDA+Olx4MjBcdFxyXG5cZl0qKVtceDIwXHRcclxuXGZdKlwvPz4oPzo8XC9cMT58KSQvaSxEPS9eLlteOiNcW1wuLF0qJC87ZnVuY3Rpb24gRShhLGIsYyl7cmV0dXJuIHIuaXNGdW5jdGlvbihiKT9yLmdyZXAoYSxmdW5jdGlvbihhLGQpe3JldHVybiEhYi5jYWxsKGEsZCxhKSE9PWN9KTpiLm5vZGVUeXBlP3IuZ3JlcChhLGZ1bmN0aW9uKGEpe3JldHVybiBhPT09YiE9PWN9KToic3RyaW5nIiE9dHlwZW9mIGI/ci5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGkuY2FsbChiLGEpPi0xIT09Y30pOkQudGVzdChiKT9yLmZpbHRlcihiLGEsYyk6KGI9ci5maWx0ZXIoYixhKSxyLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gaS5jYWxsKGIsYSk+LTEhPT1jJiYxPT09YS5ub2RlVHlwZX0pKX1yLmZpbHRlcj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YlswXTtyZXR1cm4gYyYmKGE9Ijpub3QoIithKyIpIiksMT09PWIubGVuZ3RoJiYxPT09ZC5ub2RlVHlwZT9yLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGQsYSk/W2RdOltdOnIuZmluZC5tYXRjaGVzKGEsci5ncmVwKGIsZnVuY3Rpb24oYSl7cmV0dXJuIDE9PT1hLm5vZGVUeXBlfSkpfSxyLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihhKXt2YXIgYixjLGQ9dGhpcy5sZW5ndGgsZT10aGlzO2lmKCJzdHJpbmciIT10eXBlb2YgYSlyZXR1cm4gdGhpcy5wdXNoU3RhY2socihhKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYj0wO2I8ZDtiKyspaWYoci5jb250YWlucyhlW2JdLHRoaXMpKXJldHVybiEwfSkpO2ZvcihjPXRoaXMucHVzaFN0YWNrKFtdKSxiPTA7YjxkO2IrKylyLmZpbmQoYSxlW2JdLGMpO3JldHVybiBkPjE/ci51bmlxdWVTb3J0KGMpOmN9LGZpbHRlcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soRSh0aGlzLGF8fFtdLCExKSl9LG5vdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soRSh0aGlzLGF8fFtdLCEwKSl9LGlzOmZ1bmN0aW9uKGEpe3JldHVybiEhRSh0aGlzLCJzdHJpbmciPT10eXBlb2YgYSYmQS50ZXN0KGEpP3IoYSk6YXx8W10sITEpLmxlbmd0aH19KTt2YXIgRixHPS9eKD86XHMqKDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKykpJC8sSD1yLmZuLmluaXQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlLGY7aWYoIWEpcmV0dXJuIHRoaXM7aWYoYz1jfHxGLCJzdHJpbmciPT10eXBlb2YgYSl7aWYoZT0iPCI9PT1hWzBdJiYiPiI9PT1hW2EubGVuZ3RoLTFdJiZhLmxlbmd0aD49Mz9bbnVsbCxhLG51bGxdOkcuZXhlYyhhKSwhZXx8IWVbMV0mJmIpcmV0dXJuIWJ8fGIuanF1ZXJ5PyhifHxjKS5maW5kKGEpOnRoaXMuY29uc3RydWN0b3IoYikuZmluZChhKTtpZihlWzFdKXtpZihiPWIgaW5zdGFuY2VvZiByP2JbMF06YixyLm1lcmdlKHRoaXMsci5wYXJzZUhUTUwoZVsxXSxiJiZiLm5vZGVUeXBlP2Iub3duZXJEb2N1bWVudHx8YjpkLCEwKSksQy50ZXN0KGVbMV0pJiZyLmlzUGxhaW5PYmplY3QoYikpZm9yKGUgaW4gYilyLmlzRnVuY3Rpb24odGhpc1tlXSk/dGhpc1tlXShiW2VdKTp0aGlzLmF0dHIoZSxiW2VdKTtyZXR1cm4gdGhpc31yZXR1cm4gZj1kLmdldEVsZW1lbnRCeUlkKGVbMl0pLGYmJih0aGlzWzBdPWYsdGhpcy5sZW5ndGg9MSksdGhpc31yZXR1cm4gYS5ub2RlVHlwZT8odGhpc1swXT1hLHRoaXMubGVuZ3RoPTEsdGhpcyk6ci5pc0Z1bmN0aW9uKGEpP3ZvaWQgMCE9PWMucmVhZHk/Yy5yZWFkeShhKTphKHIpOnIubWFrZUFycmF5KGEsdGhpcyl9O0gucHJvdG90eXBlPXIuZm4sRj1yKGQpO3ZhciBJPS9eKD86cGFyZW50c3xwcmV2KD86VW50aWx8QWxsKSkvLEo9e2NoaWxkcmVuOiEwLGNvbnRlbnRzOiEwLG5leHQ6ITAscHJldjohMH07ci5mbi5leHRlbmQoe2hhczpmdW5jdGlvbihhKXt2YXIgYj1yKGEsdGhpcyksYz1iLmxlbmd0aDtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodmFyIGE9MDthPGM7YSsrKWlmKHIuY29udGFpbnModGhpcyxiW2FdKSlyZXR1cm4hMH0pfSxjbG9zZXN0OmZ1bmN0aW9uKGEsYil7dmFyIGMsZD0wLGU9dGhpcy5sZW5ndGgsZj1bXSxnPSJzdHJpbmciIT10eXBlb2YgYSYmcihhKTtpZighQS50ZXN0KGEpKWZvcig7ZDxlO2QrKylmb3IoYz10aGlzW2RdO2MmJmMhPT1iO2M9Yy5wYXJlbnROb2RlKWlmKGMubm9kZVR5cGU8MTEmJihnP2cuaW5kZXgoYyk+LTE6MT09PWMubm9kZVR5cGUmJnIuZmluZC5tYXRjaGVzU2VsZWN0b3IoYyxhKSkpe2YucHVzaChjKTticmVha31yZXR1cm4gdGhpcy5wdXNoU3RhY2soZi5sZW5ndGg+MT9yLnVuaXF1ZVNvcnQoZik6Zil9LGluZGV4OmZ1bmN0aW9uKGEpe3JldHVybiBhPyJzdHJpbmciPT10eXBlb2YgYT9pLmNhbGwocihhKSx0aGlzWzBdKTppLmNhbGwodGhpcyxhLmpxdWVyeT9hWzBdOmEpOnRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZT90aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aDotMX0sYWRkOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHIudW5pcXVlU29ydChyLm1lcmdlKHRoaXMuZ2V0KCkscihhLGIpKSkpfSxhZGRCYWNrOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmFkZChudWxsPT1hP3RoaXMucHJldk9iamVjdDp0aGlzLnByZXZPYmplY3QuZmlsdGVyKGEpKX19KTtmdW5jdGlvbiBLKGEsYil7d2hpbGUoKGE9YVtiXSkmJjEhPT1hLm5vZGVUeXBlKTtyZXR1cm4gYX1yLmVhY2goe3BhcmVudDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJjExIT09Yi5ub2RlVHlwZT9iOm51bGx9LHBhcmVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIHkoYSwicGFyZW50Tm9kZSIpfSxwYXJlbnRzVW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB5KGEsInBhcmVudE5vZGUiLGMpfSxuZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBLKGEsIm5leHRTaWJsaW5nIil9LHByZXY6ZnVuY3Rpb24oYSl7cmV0dXJuIEsoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIHkoYSwibmV4dFNpYmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihhKXtyZXR1cm4geShhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dFVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4geShhLCJuZXh0U2libGluZyIsYyl9LHByZXZVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHkoYSwicHJldmlvdXNTaWJsaW5nIixjKX0sc2libGluZ3M6ZnVuY3Rpb24oYSl7cmV0dXJuIHooKGEucGFyZW50Tm9kZXx8e30pLmZpcnN0Q2hpbGQsYSl9LGNoaWxkcmVuOmZ1bmN0aW9uKGEpe3JldHVybiB6KGEuZmlyc3RDaGlsZCl9LGNvbnRlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBCKGEsImlmcmFtZSIpP2EuY29udGVudERvY3VtZW50OihCKGEsInRlbXBsYXRlIikmJihhPWEuY29udGVudHx8YSksci5tZXJnZShbXSxhLmNoaWxkTm9kZXMpKX19LGZ1bmN0aW9uKGEsYil7ci5mblthXT1mdW5jdGlvbihjLGQpe3ZhciBlPXIubWFwKHRoaXMsYixjKTtyZXR1cm4iVW50aWwiIT09YS5zbGljZSgtNSkmJihkPWMpLGQmJiJzdHJpbmciPT10eXBlb2YgZCYmKGU9ci5maWx0ZXIoZCxlKSksdGhpcy5sZW5ndGg+MSYmKEpbYV18fHIudW5pcXVlU29ydChlKSxJLnRlc3QoYSkmJmUucmV2ZXJzZSgpKSx0aGlzLnB1c2hTdGFjayhlKX19KTt2YXIgTD0vW15ceDIwXHRcclxuXGZdKy9nO2Z1bmN0aW9uIE0oYSl7dmFyIGI9e307cmV0dXJuIHIuZWFjaChhLm1hdGNoKEwpfHxbXSxmdW5jdGlvbihhLGMpe2JbY109ITB9KSxifXIuQ2FsbGJhY2tzPWZ1bmN0aW9uKGEpe2E9InN0cmluZyI9PXR5cGVvZiBhP00oYSk6ci5leHRlbmQoe30sYSk7dmFyIGIsYyxkLGUsZj1bXSxnPVtdLGg9LTEsaT1mdW5jdGlvbigpe2ZvcihlPWV8fGEub25jZSxkPWI9ITA7Zy5sZW5ndGg7aD0tMSl7Yz1nLnNoaWZ0KCk7d2hpbGUoKytoPGYubGVuZ3RoKWZbaF0uYXBwbHkoY1swXSxjWzFdKT09PSExJiZhLnN0b3BPbkZhbHNlJiYoaD1mLmxlbmd0aCxjPSExKX1hLm1lbW9yeXx8KGM9ITEpLGI9ITEsZSYmKGY9Yz9bXToiIil9LGo9e2FkZDpmdW5jdGlvbigpe3JldHVybiBmJiYoYyYmIWImJihoPWYubGVuZ3RoLTEsZy5wdXNoKGMpKSxmdW5jdGlvbiBkKGIpe3IuZWFjaChiLGZ1bmN0aW9uKGIsYyl7ci5pc0Z1bmN0aW9uKGMpP2EudW5pcXVlJiZqLmhhcyhjKXx8Zi5wdXNoKGMpOmMmJmMubGVuZ3RoJiYic3RyaW5nIiE9PXIudHlwZShjKSYmZChjKX0pfShhcmd1bWVudHMpLGMmJiFiJiZpKCkpLHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiByLmVhY2goYXJndW1lbnRzLGZ1bmN0aW9uKGEsYil7dmFyIGM7d2hpbGUoKGM9ci5pbkFycmF5KGIsZixjKSk+LTEpZi5zcGxpY2UoYywxKSxjPD1oJiZoLS19KSx0aGlzfSxoYXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/ci5pbkFycmF5KGEsZik+LTE6Zi5sZW5ndGg+MH0sZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gZiYmKGY9W10pLHRoaXN9LGRpc2FibGU6ZnVuY3Rpb24oKXtyZXR1cm4gZT1nPVtdLGY9Yz0iIix0aGlzfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiFmfSxsb2NrOmZ1bmN0aW9uKCl7cmV0dXJuIGU9Zz1bXSxjfHxifHwoZj1jPSIiKSx0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIWV9LGZpcmVXaXRoOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIGV8fChjPWN8fFtdLGM9W2EsYy5zbGljZT9jLnNsaWNlKCk6Y10sZy5wdXNoKGMpLGJ8fGkoKSksdGhpc30sZmlyZTpmdW5jdGlvbigpe3JldHVybiBqLmZpcmVXaXRoKHRoaXMsYXJndW1lbnRzKSx0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhZH19O3JldHVybiBqfTtmdW5jdGlvbiBOKGEpe3JldHVybiBhfWZ1bmN0aW9uIE8oYSl7dGhyb3cgYX1mdW5jdGlvbiBQKGEsYixjLGQpe3ZhciBlO3RyeXthJiZyLmlzRnVuY3Rpb24oZT1hLnByb21pc2UpP2UuY2FsbChhKS5kb25lKGIpLmZhaWwoYyk6YSYmci5pc0Z1bmN0aW9uKGU9YS50aGVuKT9lLmNhbGwoYSxiLGMpOmIuYXBwbHkodm9pZCAwLFthXS5zbGljZShkKSl9Y2F0Y2goYSl7Yy5hcHBseSh2b2lkIDAsW2FdKX19ci5leHRlbmQoe0RlZmVycmVkOmZ1bmN0aW9uKGIpe3ZhciBjPVtbIm5vdGlmeSIsInByb2dyZXNzIixyLkNhbGxiYWNrcygibWVtb3J5Iiksci5DYWxsYmFja3MoIm1lbW9yeSIpLDJdLFsicmVzb2x2ZSIsImRvbmUiLHIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLHIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLDAsInJlc29sdmVkIl0sWyJyZWplY3QiLCJmYWlsIixyLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxyLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwxLCJyZWplY3RlZCJdXSxkPSJwZW5kaW5nIixlPXtzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBkfSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1cm4gZi5kb25lKGFyZ3VtZW50cykuZmFpbChhcmd1bWVudHMpLHRoaXN9LCJjYXRjaCI6ZnVuY3Rpb24oYSl7cmV0dXJuIGUudGhlbihudWxsLGEpfSxwaXBlOmZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzO3JldHVybiByLkRlZmVycmVkKGZ1bmN0aW9uKGIpe3IuZWFjaChjLGZ1bmN0aW9uKGMsZCl7dmFyIGU9ci5pc0Z1bmN0aW9uKGFbZFs0XV0pJiZhW2RbNF1dO2ZbZFsxXV0oZnVuY3Rpb24oKXt2YXIgYT1lJiZlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTthJiZyLmlzRnVuY3Rpb24oYS5wcm9taXNlKT9hLnByb21pc2UoKS5wcm9ncmVzcyhiLm5vdGlmeSkuZG9uZShiLnJlc29sdmUpLmZhaWwoYi5yZWplY3QpOmJbZFswXSsiV2l0aCJdKHRoaXMsZT9bYV06YXJndW1lbnRzKX0pfSksYT1udWxsfSkucHJvbWlzZSgpfSx0aGVuOmZ1bmN0aW9uKGIsZCxlKXt2YXIgZj0wO2Z1bmN0aW9uIGcoYixjLGQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGg9dGhpcyxpPWFyZ3VtZW50cyxqPWZ1bmN0aW9uKCl7dmFyIGEsajtpZighKGI8Zikpe2lmKGE9ZC5hcHBseShoLGkpLGE9PT1jLnByb21pc2UoKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGVuYWJsZSBzZWxmLXJlc29sdXRpb24iKTtqPWEmJigib2JqZWN0Ij09dHlwZW9mIGF8fCJmdW5jdGlvbiI9PXR5cGVvZiBhKSYmYS50aGVuLHIuaXNGdW5jdGlvbihqKT9lP2ouY2FsbChhLGcoZixjLE4sZSksZyhmLGMsTyxlKSk6KGYrKyxqLmNhbGwoYSxnKGYsYyxOLGUpLGcoZixjLE8sZSksZyhmLGMsTixjLm5vdGlmeVdpdGgpKSk6KGQhPT1OJiYoaD12b2lkIDAsaT1bYV0pLChlfHxjLnJlc29sdmVXaXRoKShoLGkpKX19LGs9ZT9qOmZ1bmN0aW9uKCl7dHJ5e2ooKX1jYXRjaChhKXtyLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2smJnIuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayhhLGsuc3RhY2tUcmFjZSksYisxPj1mJiYoZCE9PU8mJihoPXZvaWQgMCxpPVthXSksYy5yZWplY3RXaXRoKGgsaSkpfX07Yj9rKCk6KHIuRGVmZXJyZWQuZ2V0U3RhY2tIb29rJiYoay5zdGFja1RyYWNlPXIuRGVmZXJyZWQuZ2V0U3RhY2tIb29rKCkpLGEuc2V0VGltZW91dChrKSl9fXJldHVybiByLkRlZmVycmVkKGZ1bmN0aW9uKGEpe2NbMF1bM10uYWRkKGcoMCxhLHIuaXNGdW5jdGlvbihlKT9lOk4sYS5ub3RpZnlXaXRoKSksY1sxXVszXS5hZGQoZygwLGEsci5pc0Z1bmN0aW9uKGIpP2I6TikpLGNbMl1bM10uYWRkKGcoMCxhLHIuaXNGdW5jdGlvbihkKT9kOk8pKX0pLnByb21pc2UoKX0scHJvbWlzZTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YT9yLmV4dGVuZChhLGUpOmV9fSxmPXt9O3JldHVybiByLmVhY2goYyxmdW5jdGlvbihhLGIpe3ZhciBnPWJbMl0saD1iWzVdO2VbYlsxXV09Zy5hZGQsaCYmZy5hZGQoZnVuY3Rpb24oKXtkPWh9LGNbMy1hXVsyXS5kaXNhYmxlLGNbMF1bMl0ubG9jayksZy5hZGQoYlszXS5maXJlKSxmW2JbMF1dPWZ1bmN0aW9uKCl7cmV0dXJuIGZbYlswXSsiV2l0aCJdKHRoaXM9PT1mP3ZvaWQgMDp0aGlzLGFyZ3VtZW50cyksdGhpc30sZltiWzBdKyJXaXRoIl09Zy5maXJlV2l0aH0pLGUucHJvbWlzZShmKSxiJiZiLmNhbGwoZixmKSxmfSx3aGVuOmZ1bmN0aW9uKGEpe3ZhciBiPWFyZ3VtZW50cy5sZW5ndGgsYz1iLGQ9QXJyYXkoYyksZT1mLmNhbGwoYXJndW1lbnRzKSxnPXIuRGVmZXJyZWQoKSxoPWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihjKXtkW2FdPXRoaXMsZVthXT1hcmd1bWVudHMubGVuZ3RoPjE/Zi5jYWxsKGFyZ3VtZW50cyk6YywtLWJ8fGcucmVzb2x2ZVdpdGgoZCxlKX19O2lmKGI8PTEmJihQKGEsZy5kb25lKGgoYykpLnJlc29sdmUsZy5yZWplY3QsIWIpLCJwZW5kaW5nIj09PWcuc3RhdGUoKXx8ci5pc0Z1bmN0aW9uKGVbY10mJmVbY10udGhlbikpKXJldHVybiBnLnRoZW4oKTt3aGlsZShjLS0pUChlW2NdLGgoYyksZy5yZWplY3QpO3JldHVybiBnLnByb21pc2UoKX19KTt2YXIgUT0vXihFdmFsfEludGVybmFsfFJhbmdlfFJlZmVyZW5jZXxTeW50YXh8VHlwZXxVUkkpRXJyb3IkLztyLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2s9ZnVuY3Rpb24oYixjKXthLmNvbnNvbGUmJmEuY29uc29sZS53YXJuJiZiJiZRLnRlc3QoYi5uYW1lKSYmYS5jb25zb2xlLndhcm4oImpRdWVyeS5EZWZlcnJlZCBleGNlcHRpb246ICIrYi5tZXNzYWdlLGIuc3RhY2ssYyl9LHIucmVhZHlFeGNlcHRpb249ZnVuY3Rpb24oYil7YS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgYn0pfTt2YXIgUj1yLkRlZmVycmVkKCk7ci5mbi5yZWFkeT1mdW5jdGlvbihhKXtyZXR1cm4gUi50aGVuKGEpWyJjYXRjaCJdKGZ1bmN0aW9uKGEpe3IucmVhZHlFeGNlcHRpb24oYSl9KSx0aGlzfSxyLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxyZWFkeTpmdW5jdGlvbihhKXsoYT09PSEwPy0tci5yZWFkeVdhaXQ6ci5pc1JlYWR5KXx8KHIuaXNSZWFkeT0hMCxhIT09ITAmJi0tci5yZWFkeVdhaXQ+MHx8Ui5yZXNvbHZlV2l0aChkLFtyXSkpfX0pLHIucmVhZHkudGhlbj1SLnRoZW47ZnVuY3Rpb24gUygpe2QucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsUyksCmEucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsUyksci5yZWFkeSgpfSJjb21wbGV0ZSI9PT1kLnJlYWR5U3RhdGV8fCJsb2FkaW5nIiE9PWQucmVhZHlTdGF0ZSYmIWQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsP2Euc2V0VGltZW91dChyLnJlYWR5KTooZC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixTKSxhLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLFMpKTt2YXIgVD1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXt2YXIgaD0wLGk9YS5sZW5ndGgsaj1udWxsPT1jO2lmKCJvYmplY3QiPT09ci50eXBlKGMpKXtlPSEwO2ZvcihoIGluIGMpVChhLGIsaCxjW2hdLCEwLGYsZyl9ZWxzZSBpZih2b2lkIDAhPT1kJiYoZT0hMCxyLmlzRnVuY3Rpb24oZCl8fChnPSEwKSxqJiYoZz8oYi5jYWxsKGEsZCksYj1udWxsKTooaj1iLGI9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBqLmNhbGwocihhKSxjKX0pKSxiKSlmb3IoO2g8aTtoKyspYihhW2hdLGMsZz9kOmQuY2FsbChhW2hdLGgsYihhW2hdLGMpKSk7cmV0dXJuIGU/YTpqP2IuY2FsbChhKTppP2IoYVswXSxjKTpmfSxVPWZ1bmN0aW9uKGEpe3JldHVybiAxPT09YS5ub2RlVHlwZXx8OT09PWEubm9kZVR5cGV8fCErYS5ub2RlVHlwZX07ZnVuY3Rpb24gVigpe3RoaXMuZXhwYW5kbz1yLmV4cGFuZG8rVi51aWQrK31WLnVpZD0xLFYucHJvdG90eXBlPXtjYWNoZTpmdW5jdGlvbihhKXt2YXIgYj1hW3RoaXMuZXhwYW5kb107cmV0dXJuIGJ8fChiPXt9LFUoYSkmJihhLm5vZGVUeXBlP2FbdGhpcy5leHBhbmRvXT1iOk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLHRoaXMuZXhwYW5kbyx7dmFsdWU6Yixjb25maWd1cmFibGU6ITB9KSkpLGJ9LHNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZT10aGlzLmNhY2hlKGEpO2lmKCJzdHJpbmciPT10eXBlb2YgYillW3IuY2FtZWxDYXNlKGIpXT1jO2Vsc2UgZm9yKGQgaW4gYillW3IuY2FtZWxDYXNlKGQpXT1iW2RdO3JldHVybiBlfSxnZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdm9pZCAwPT09Yj90aGlzLmNhY2hlKGEpOmFbdGhpcy5leHBhbmRvXSYmYVt0aGlzLmV4cGFuZG9dW3IuY2FtZWxDYXNlKGIpXX0sYWNjZXNzOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdm9pZCAwPT09Ynx8YiYmInN0cmluZyI9PXR5cGVvZiBiJiZ2b2lkIDA9PT1jP3RoaXMuZ2V0KGEsYik6KHRoaXMuc2V0KGEsYixjKSx2b2lkIDAhPT1jP2M6Yil9LHJlbW92ZTpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9YVt0aGlzLmV4cGFuZG9dO2lmKHZvaWQgMCE9PWQpe2lmKHZvaWQgMCE9PWIpe0FycmF5LmlzQXJyYXkoYik/Yj1iLm1hcChyLmNhbWVsQ2FzZSk6KGI9ci5jYW1lbENhc2UoYiksYj1iIGluIGQ/W2JdOmIubWF0Y2goTCl8fFtdKSxjPWIubGVuZ3RoO3doaWxlKGMtLSlkZWxldGUgZFtiW2NdXX0odm9pZCAwPT09Ynx8ci5pc0VtcHR5T2JqZWN0KGQpKSYmKGEubm9kZVR5cGU/YVt0aGlzLmV4cGFuZG9dPXZvaWQgMDpkZWxldGUgYVt0aGlzLmV4cGFuZG9dKX19LGhhc0RhdGE6ZnVuY3Rpb24oYSl7dmFyIGI9YVt0aGlzLmV4cGFuZG9dO3JldHVybiB2b2lkIDAhPT1iJiYhci5pc0VtcHR5T2JqZWN0KGIpfX07dmFyIFc9bmV3IFYsWD1uZXcgVixZPS9eKD86XHtbXHdcV10qXH18XFtbXHdcV10qXF0pJC8sWj0vW0EtWl0vZztmdW5jdGlvbiAkKGEpe3JldHVybiJ0cnVlIj09PWF8fCJmYWxzZSIhPT1hJiYoIm51bGwiPT09YT9udWxsOmE9PT0rYSsiIj8rYTpZLnRlc3QoYSk/SlNPTi5wYXJzZShhKTphKX1mdW5jdGlvbiBfKGEsYixjKXt2YXIgZDtpZih2b2lkIDA9PT1jJiYxPT09YS5ub2RlVHlwZSlpZihkPSJkYXRhLSIrYi5yZXBsYWNlKFosIi0kJiIpLnRvTG93ZXJDYXNlKCksYz1hLmdldEF0dHJpYnV0ZShkKSwic3RyaW5nIj09dHlwZW9mIGMpe3RyeXtjPSQoYyl9Y2F0Y2goZSl7fVguc2V0KGEsYixjKX1lbHNlIGM9dm9pZCAwO3JldHVybiBjfXIuZXh0ZW5kKHtoYXNEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiBYLmhhc0RhdGEoYSl8fFcuaGFzRGF0YShhKX0sZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIFguYWNjZXNzKGEsYixjKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhLGIpe1gucmVtb3ZlKGEsYil9LF9kYXRhOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gVy5hY2Nlc3MoYSxiLGMpfSxfcmVtb3ZlRGF0YTpmdW5jdGlvbihhLGIpe1cucmVtb3ZlKGEsYil9fSksci5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUsZj10aGlzWzBdLGc9ZiYmZi5hdHRyaWJ1dGVzO2lmKHZvaWQgMD09PWEpe2lmKHRoaXMubGVuZ3RoJiYoZT1YLmdldChmKSwxPT09Zi5ub2RlVHlwZSYmIVcuZ2V0KGYsImhhc0RhdGFBdHRycyIpKSl7Yz1nLmxlbmd0aDt3aGlsZShjLS0pZ1tjXSYmKGQ9Z1tjXS5uYW1lLDA9PT1kLmluZGV4T2YoImRhdGEtIikmJihkPXIuY2FtZWxDYXNlKGQuc2xpY2UoNSkpLF8oZixkLGVbZF0pKSk7Vy5zZXQoZiwiaGFzRGF0YUF0dHJzIiwhMCl9cmV0dXJuIGV9cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBhP3RoaXMuZWFjaChmdW5jdGlvbigpe1guc2V0KHRoaXMsYSl9KTpUKHRoaXMsZnVuY3Rpb24oYil7dmFyIGM7aWYoZiYmdm9pZCAwPT09Yil7aWYoYz1YLmdldChmLGEpLHZvaWQgMCE9PWMpcmV0dXJuIGM7aWYoYz1fKGYsYSksdm9pZCAwIT09YylyZXR1cm4gY31lbHNlIHRoaXMuZWFjaChmdW5jdGlvbigpe1guc2V0KHRoaXMsYSxiKX0pfSxudWxsLGIsYXJndW1lbnRzLmxlbmd0aD4xLG51bGwsITApfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtYLnJlbW92ZSh0aGlzLGEpfSl9fSksci5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZDtpZihhKXJldHVybiBiPShifHwiZngiKSsicXVldWUiLGQ9Vy5nZXQoYSxiKSxjJiYoIWR8fEFycmF5LmlzQXJyYXkoYyk/ZD1XLmFjY2VzcyhhLGIsci5tYWtlQXJyYXkoYykpOmQucHVzaChjKSksZHx8W119LGRlcXVldWU6ZnVuY3Rpb24oYSxiKXtiPWJ8fCJmeCI7dmFyIGM9ci5xdWV1ZShhLGIpLGQ9Yy5sZW5ndGgsZT1jLnNoaWZ0KCksZj1yLl9xdWV1ZUhvb2tzKGEsYiksZz1mdW5jdGlvbigpe3IuZGVxdWV1ZShhLGIpfTsiaW5wcm9ncmVzcyI9PT1lJiYoZT1jLnNoaWZ0KCksZC0tKSxlJiYoImZ4Ij09PWImJmMudW5zaGlmdCgiaW5wcm9ncmVzcyIpLGRlbGV0ZSBmLnN0b3AsZS5jYWxsKGEsZyxmKSksIWQmJmYmJmYuZW1wdHkuZmlyZSgpfSxfcXVldWVIb29rczpmdW5jdGlvbihhLGIpe3ZhciBjPWIrInF1ZXVlSG9va3MiO3JldHVybiBXLmdldChhLGMpfHxXLmFjY2VzcyhhLGMse2VtcHR5OnIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLmFkZChmdW5jdGlvbigpe1cucmVtb3ZlKGEsW2IrInF1ZXVlIixjXSl9KX0pfX0pLHIuZm4uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGIpe3ZhciBjPTI7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBhJiYoYj1hLGE9ImZ4IixjLS0pLGFyZ3VtZW50cy5sZW5ndGg8Yz9yLnF1ZXVlKHRoaXNbMF0sYSk6dm9pZCAwPT09Yj90aGlzOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBjPXIucXVldWUodGhpcyxhLGIpO3IuX3F1ZXVlSG9va3ModGhpcyxhKSwiZngiPT09YSYmImlucHJvZ3Jlc3MiIT09Y1swXSYmci5kZXF1ZXVlKHRoaXMsYSl9KX0sZGVxdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ci5kZXF1ZXVlKHRoaXMsYSl9KX0sY2xlYXJRdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5xdWV1ZShhfHwiZngiLFtdKX0scHJvbWlzZTpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9MSxlPXIuRGVmZXJyZWQoKSxmPXRoaXMsZz10aGlzLmxlbmd0aCxoPWZ1bmN0aW9uKCl7LS1kfHxlLnJlc29sdmVXaXRoKGYsW2ZdKX07InN0cmluZyIhPXR5cGVvZiBhJiYoYj1hLGE9dm9pZCAwKSxhPWF8fCJmeCI7d2hpbGUoZy0tKWM9Vy5nZXQoZltnXSxhKyJxdWV1ZUhvb2tzIiksYyYmYy5lbXB0eSYmKGQrKyxjLmVtcHR5LmFkZChoKSk7cmV0dXJuIGgoKSxlLnByb21pc2UoYil9fSk7dmFyIGFhPS9bKy1dPyg/OlxkKlwufClcZCsoPzpbZUVdWystXT9cZCt8KS8uc291cmNlLGJhPW5ldyBSZWdFeHAoIl4oPzooWystXSk9fCkoIithYSsiKShbYS16JV0qKSQiLCJpIiksY2E9WyJUb3AiLCJSaWdodCIsIkJvdHRvbSIsIkxlZnQiXSxkYT1mdW5jdGlvbihhLGIpe3JldHVybiBhPWJ8fGEsIm5vbmUiPT09YS5zdHlsZS5kaXNwbGF5fHwiIj09PWEuc3R5bGUuZGlzcGxheSYmci5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSkmJiJub25lIj09PXIuY3NzKGEsImRpc3BsYXkiKX0sZWE9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZixnPXt9O2ZvcihmIGluIGIpZ1tmXT1hLnN0eWxlW2ZdLGEuc3R5bGVbZl09YltmXTtlPWMuYXBwbHkoYSxkfHxbXSk7Zm9yKGYgaW4gYilhLnN0eWxlW2ZdPWdbZl07cmV0dXJuIGV9O2Z1bmN0aW9uIGZhKGEsYixjLGQpe3ZhciBlLGY9MSxnPTIwLGg9ZD9mdW5jdGlvbigpe3JldHVybiBkLmN1cigpfTpmdW5jdGlvbigpe3JldHVybiByLmNzcyhhLGIsIiIpfSxpPWgoKSxqPWMmJmNbM118fChyLmNzc051bWJlcltiXT8iIjoicHgiKSxrPShyLmNzc051bWJlcltiXXx8InB4IiE9PWomJitpKSYmYmEuZXhlYyhyLmNzcyhhLGIpKTtpZihrJiZrWzNdIT09ail7aj1qfHxrWzNdLGM9Y3x8W10saz0raXx8MTtkbyBmPWZ8fCIuNSIsay89ZixyLnN0eWxlKGEsYixrK2opO3doaWxlKGYhPT0oZj1oKCkvaSkmJjEhPT1mJiYtLWcpfXJldHVybiBjJiYoaz0ra3x8K2l8fDAsZT1jWzFdP2srKGNbMV0rMSkqY1syXTorY1syXSxkJiYoZC51bml0PWosZC5zdGFydD1rLGQuZW5kPWUpKSxlfXZhciBnYT17fTtmdW5jdGlvbiBoYShhKXt2YXIgYixjPWEub3duZXJEb2N1bWVudCxkPWEubm9kZU5hbWUsZT1nYVtkXTtyZXR1cm4gZT9lOihiPWMuYm9keS5hcHBlbmRDaGlsZChjLmNyZWF0ZUVsZW1lbnQoZCkpLGU9ci5jc3MoYiwiZGlzcGxheSIpLGIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKSwibm9uZSI9PT1lJiYoZT0iYmxvY2siKSxnYVtkXT1lLGUpfWZ1bmN0aW9uIGlhKGEsYil7Zm9yKHZhciBjLGQsZT1bXSxmPTAsZz1hLmxlbmd0aDtmPGc7ZisrKWQ9YVtmXSxkLnN0eWxlJiYoYz1kLnN0eWxlLmRpc3BsYXksYj8oIm5vbmUiPT09YyYmKGVbZl09Vy5nZXQoZCwiZGlzcGxheSIpfHxudWxsLGVbZl18fChkLnN0eWxlLmRpc3BsYXk9IiIpKSwiIj09PWQuc3R5bGUuZGlzcGxheSYmZGEoZCkmJihlW2ZdPWhhKGQpKSk6Im5vbmUiIT09YyYmKGVbZl09Im5vbmUiLFcuc2V0KGQsImRpc3BsYXkiLGMpKSk7Zm9yKGY9MDtmPGc7ZisrKW51bGwhPWVbZl0mJihhW2ZdLnN0eWxlLmRpc3BsYXk9ZVtmXSk7cmV0dXJuIGF9ci5mbi5leHRlbmQoe3Nob3c6ZnVuY3Rpb24oKXtyZXR1cm4gaWEodGhpcywhMCl9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gaWEodGhpcyl9LHRvZ2dsZTpmdW5jdGlvbihhKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBhP2E/dGhpcy5zaG93KCk6dGhpcy5oaWRlKCk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZGEodGhpcyk/cih0aGlzKS5zaG93KCk6cih0aGlzKS5oaWRlKCl9KX19KTt2YXIgamE9L14oPzpjaGVja2JveHxyYWRpbykkL2ksa2E9LzwoW2Etel1bXlwvXDA+XHgyMFx0XHJcblxmXSspL2ksbGE9L14kfFwvKD86amF2YXxlY21hKXNjcmlwdC9pLG1hPXtvcHRpb246WzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXSx0aGVhZDpbMSwiPHRhYmxlPiIsIjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il0sdGQ6WzMsIjx0YWJsZT48dGJvZHk+PHRyPiIsIjwvdHI+PC90Ym9keT48L3RhYmxlPiJdLF9kZWZhdWx0OlswLCIiLCIiXX07bWEub3B0Z3JvdXA9bWEub3B0aW9uLG1hLnRib2R5PW1hLnRmb290PW1hLmNvbGdyb3VwPW1hLmNhcHRpb249bWEudGhlYWQsbWEudGg9bWEudGQ7ZnVuY3Rpb24gbmEoYSxiKXt2YXIgYztyZXR1cm4gYz0idW5kZWZpbmVkIiE9dHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWU/YS5nZXRFbGVtZW50c0J5VGFnTmFtZShifHwiKiIpOiJ1bmRlZmluZWQiIT10eXBlb2YgYS5xdWVyeVNlbGVjdG9yQWxsP2EucXVlcnlTZWxlY3RvckFsbChifHwiKiIpOltdLHZvaWQgMD09PWJ8fGImJkIoYSxiKT9yLm1lcmdlKFthXSxjKTpjfWZ1bmN0aW9uIG9hKGEsYil7Zm9yKHZhciBjPTAsZD1hLmxlbmd0aDtjPGQ7YysrKVcuc2V0KGFbY10sImdsb2JhbEV2YWwiLCFifHxXLmdldChiW2NdLCJnbG9iYWxFdmFsIikpfXZhciBwYT0vPHwmIz9cdys7LztmdW5jdGlvbiBxYShhLGIsYyxkLGUpe2Zvcih2YXIgZixnLGgsaSxqLGssbD1iLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxtPVtdLG49MCxvPWEubGVuZ3RoO248bztuKyspaWYoZj1hW25dLGZ8fDA9PT1mKWlmKCJvYmplY3QiPT09ci50eXBlKGYpKXIubWVyZ2UobSxmLm5vZGVUeXBlP1tmXTpmKTtlbHNlIGlmKHBhLnRlc3QoZikpe2c9Z3x8bC5hcHBlbmRDaGlsZChiLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxoPShrYS5leGVjKGYpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpLGk9bWFbaF18fG1hLl9kZWZhdWx0LGcuaW5uZXJIVE1MPWlbMV0rci5odG1sUHJlZmlsdGVyKGYpK2lbMl0saz1pWzBdO3doaWxlKGstLSlnPWcubGFzdENoaWxkO3IubWVyZ2UobSxnLmNoaWxkTm9kZXMpLGc9bC5maXJzdENoaWxkLGcudGV4dENvbnRlbnQ9IiJ9ZWxzZSBtLnB1c2goYi5jcmVhdGVUZXh0Tm9kZShmKSk7bC50ZXh0Q29udGVudD0iIixuPTA7d2hpbGUoZj1tW24rK10paWYoZCYmci5pbkFycmF5KGYsZCk+LTEpZSYmZS5wdXNoKGYpO2Vsc2UgaWYoaj1yLmNvbnRhaW5zKGYub3duZXJEb2N1bWVudCxmKSxnPW5hKGwuYXBwZW5kQ2hpbGQoZiksInNjcmlwdCIpLGomJm9hKGcpLGMpe2s9MDt3aGlsZShmPWdbaysrXSlsYS50ZXN0KGYudHlwZXx8IiIpJiZjLnB1c2goZil9cmV0dXJuIGx9IWZ1bmN0aW9uKCl7dmFyIGE9ZC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksYj1hLmFwcGVuZENoaWxkKGQuY3JlYXRlRWxlbWVudCgiZGl2IikpLGM9ZC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2Muc2V0QXR0cmlidXRlKCJ0eXBlIiwicmFkaW8iKSxjLnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsImNoZWNrZWQiKSxjLnNldEF0dHJpYnV0ZSgibmFtZSIsInQiKSxiLmFwcGVuZENoaWxkKGMpLG8uY2hlY2tDbG9uZT1iLmNsb25lTm9kZSghMCkuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuY2hlY2tlZCxiLmlubmVySFRNTD0iPHRleHRhcmVhPng8L3RleHRhcmVhPiIsby5ub0Nsb25lQ2hlY2tlZD0hIWIuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuZGVmYXVsdFZhbHVlfSgpO3ZhciByYT1kLmRvY3VtZW50RWxlbWVudCxzYT0vXmtleS8sdGE9L14oPzptb3VzZXxwb2ludGVyfGNvbnRleHRtZW51fGRyYWd8ZHJvcCl8Y2xpY2svLHVhPS9eKFteLl0qKSg/OlwuKC4rKXwpLztmdW5jdGlvbiB2YSgpe3JldHVybiEwfWZ1bmN0aW9uIHdhKCl7cmV0dXJuITF9ZnVuY3Rpb24geGEoKXt0cnl7cmV0dXJuIGQuYWN0aXZlRWxlbWVudH1jYXRjaChhKXt9fWZ1bmN0aW9uIHlhKGEsYixjLGQsZSxmKXt2YXIgZyxoO2lmKCJvYmplY3QiPT10eXBlb2YgYil7InN0cmluZyIhPXR5cGVvZiBjJiYoZD1kfHxjLGM9dm9pZCAwKTtmb3IoaCBpbiBiKXlhKGEsaCxjLGQsYltoXSxmKTtyZXR1cm4gYX1pZihudWxsPT1kJiZudWxsPT1lPyhlPWMsZD1jPXZvaWQgMCk6bnVsbD09ZSYmKCJzdHJpbmciPT10eXBlb2YgYz8oZT1kLGQ9dm9pZCAwKTooZT1kLGQ9YyxjPXZvaWQgMCkpLGU9PT0hMSllPXdhO2Vsc2UgaWYoIWUpcmV0dXJuIGE7cmV0dXJuIDE9PT1mJiYoZz1lLGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHIoKS5vZmYoYSksZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGUuZ3VpZD1nLmd1aWR8fChnLmd1aWQ9ci5ndWlkKyspKSxhLmVhY2goZnVuY3Rpb24oKXtyLmV2ZW50LmFkZCh0aGlzLGIsZSxkLGMpfSl9ci5ldmVudD17Z2xvYmFsOnt9LGFkZDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmLGcsaCxpLGosayxsLG0sbixvLHAscT1XLmdldChhKTtpZihxKXtjLmhhbmRsZXImJihmPWMsYz1mLmhhbmRsZXIsZT1mLnNlbGVjdG9yKSxlJiZyLmZpbmQubWF0Y2hlc1NlbGVjdG9yKHJhLGUpLGMuZ3VpZHx8KGMuZ3VpZD1yLmd1aWQrKyksKGk9cS5ldmVudHMpfHwoaT1xLmV2ZW50cz17fSksKGc9cS5oYW5kbGUpfHwoZz1xLmhhbmRsZT1mdW5jdGlvbihiKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIHImJnIuZXZlbnQudHJpZ2dlcmVkIT09Yi50eXBlP3IuZXZlbnQuZGlzcGF0Y2guYXBwbHkoYSxhcmd1bWVudHMpOnZvaWQgMH0pLGI9KGJ8fCIiKS5tYXRjaChMKXx8WyIiXSxqPWIubGVuZ3RoO3doaWxlKGotLSloPXVhLmV4ZWMoYltqXSl8fFtdLG49cD1oWzFdLG89KGhbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxuJiYobD1yLmV2ZW50LnNwZWNpYWxbbl18fHt9LG49KGU/bC5kZWxlZ2F0ZVR5cGU6bC5iaW5kVHlwZSl8fG4sbD1yLmV2ZW50LnNwZWNpYWxbbl18fHt9LGs9ci5leHRlbmQoe3R5cGU6bixvcmlnVHlwZTpwLGRhdGE6ZCxoYW5kbGVyOmMsZ3VpZDpjLmd1aWQsc2VsZWN0b3I6ZSxuZWVkc0NvbnRleHQ6ZSYmci5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KGUpLG5hbWVzcGFjZTpvLmpvaW4oIi4iKX0sZiksKG09aVtuXSl8fChtPWlbbl09W10sbS5kZWxlZ2F0ZUNvdW50PTAsbC5zZXR1cCYmbC5zZXR1cC5jYWxsKGEsZCxvLGcpIT09ITF8fGEuYWRkRXZlbnRMaXN0ZW5lciYmYS5hZGRFdmVudExpc3RlbmVyKG4sZykpLGwuYWRkJiYobC5hZGQuY2FsbChhLGspLGsuaGFuZGxlci5ndWlkfHwoay5oYW5kbGVyLmd1aWQ9Yy5ndWlkKSksZT9tLnNwbGljZShtLmRlbGVnYXRlQ291bnQrKywwLGspOm0ucHVzaChrKSxyLmV2ZW50Lmdsb2JhbFtuXT0hMCl9fSxyZW1vdmU6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZixnLGgsaSxqLGssbCxtLG4sbyxwLHE9Vy5oYXNEYXRhKGEpJiZXLmdldChhKTtpZihxJiYoaT1xLmV2ZW50cykpe2I9KGJ8fCIiKS5tYXRjaChMKXx8WyIiXSxqPWIubGVuZ3RoO3doaWxlKGotLSlpZihoPXVhLmV4ZWMoYltqXSl8fFtdLG49cD1oWzFdLG89KGhbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxuKXtsPXIuZXZlbnQuc3BlY2lhbFtuXXx8e30sbj0oZD9sLmRlbGVnYXRlVHlwZTpsLmJpbmRUeXBlKXx8bixtPWlbbl18fFtdLGg9aFsyXSYmbmV3IFJlZ0V4cCgiKF58XFwuKSIrby5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCkiKSxnPWY9bS5sZW5ndGg7d2hpbGUoZi0tKWs9bVtmXSwhZSYmcCE9PWsub3JpZ1R5cGV8fGMmJmMuZ3VpZCE9PWsuZ3VpZHx8aCYmIWgudGVzdChrLm5hbWVzcGFjZSl8fGQmJmQhPT1rLnNlbGVjdG9yJiYoIioqIiE9PWR8fCFrLnNlbGVjdG9yKXx8KG0uc3BsaWNlKGYsMSksay5zZWxlY3RvciYmbS5kZWxlZ2F0ZUNvdW50LS0sbC5yZW1vdmUmJmwucmVtb3ZlLmNhbGwoYSxrKSk7ZyYmIW0ubGVuZ3RoJiYobC50ZWFyZG93biYmbC50ZWFyZG93bi5jYWxsKGEsbyxxLmhhbmRsZSkhPT0hMXx8ci5yZW1vdmVFdmVudChhLG4scS5oYW5kbGUpLGRlbGV0ZSBpW25dKX1lbHNlIGZvcihuIGluIGkpci5ldmVudC5yZW1vdmUoYSxuK2Jbal0sYyxkLCEwKTtyLmlzRW1wdHlPYmplY3QoaSkmJlcucmVtb3ZlKGEsImhhbmRsZSBldmVudHMiKX19LGRpc3BhdGNoOmZ1bmN0aW9uKGEpe3ZhciBiPXIuZXZlbnQuZml4KGEpLGMsZCxlLGYsZyxoLGk9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpLGo9KFcuZ2V0KHRoaXMsImV2ZW50cyIpfHx7fSlbYi50eXBlXXx8W10saz1yLmV2ZW50LnNwZWNpYWxbYi50eXBlXXx8e307Zm9yKGlbMF09YixjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKylpW2NdPWFyZ3VtZW50c1tjXTtpZihiLmRlbGVnYXRlVGFyZ2V0PXRoaXMsIWsucHJlRGlzcGF0Y2h8fGsucHJlRGlzcGF0Y2guY2FsbCh0aGlzLGIpIT09ITEpe2g9ci5ldmVudC5oYW5kbGVycy5jYWxsKHRoaXMsYixqKSxjPTA7d2hpbGUoKGY9aFtjKytdKSYmIWIuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSl7Yi5jdXJyZW50VGFyZ2V0PWYuZWxlbSxkPTA7d2hpbGUoKGc9Zi5oYW5kbGVyc1tkKytdKSYmIWIuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSliLnJuYW1lc3BhY2UmJiFiLnJuYW1lc3BhY2UudGVzdChnLm5hbWVzcGFjZSl8fChiLmhhbmRsZU9iaj1nLGIuZGF0YT1nLmRhdGEsZT0oKHIuZXZlbnQuc3BlY2lhbFtnLm9yaWdUeXBlXXx8e30pLmhhbmRsZXx8Zy5oYW5kbGVyKS5hcHBseShmLmVsZW0saSksdm9pZCAwIT09ZSYmKGIucmVzdWx0PWUpPT09ITEmJihiLnByZXZlbnREZWZhdWx0KCksYi5zdG9wUHJvcGFnYXRpb24oKSkpfXJldHVybiBrLnBvc3REaXNwYXRjaCYmay5wb3N0RGlzcGF0Y2guY2FsbCh0aGlzLGIpLGIucmVzdWx0fX0saGFuZGxlcnM6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUsZixnLGg9W10saT1iLmRlbGVnYXRlQ291bnQsaj1hLnRhcmdldDtpZihpJiZqLm5vZGVUeXBlJiYhKCJjbGljayI9PT1hLnR5cGUmJmEuYnV0dG9uPj0xKSlmb3IoO2ohPT10aGlzO2o9ai5wYXJlbnROb2RlfHx0aGlzKWlmKDE9PT1qLm5vZGVUeXBlJiYoImNsaWNrIiE9PWEudHlwZXx8ai5kaXNhYmxlZCE9PSEwKSl7Zm9yKGY9W10sZz17fSxjPTA7YzxpO2MrKylkPWJbY10sZT1kLnNlbGVjdG9yKyIgIix2b2lkIDA9PT1nW2VdJiYoZ1tlXT1kLm5lZWRzQ29udGV4dD9yKGUsdGhpcykuaW5kZXgoaik+LTE6ci5maW5kKGUsdGhpcyxudWxsLFtqXSkubGVuZ3RoKSxnW2VdJiZmLnB1c2goZCk7Zi5sZW5ndGgmJmgucHVzaCh7ZWxlbTpqLGhhbmRsZXJzOmZ9KX1yZXR1cm4gaj10aGlzLGk8Yi5sZW5ndGgmJmgucHVzaCh7ZWxlbTpqLGhhbmRsZXJzOmIuc2xpY2UoaSl9KSxofSxhZGRQcm9wOmZ1bmN0aW9uKGEsYil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHIuRXZlbnQucHJvdG90eXBlLGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpyLmlzRnVuY3Rpb24oYik/ZnVuY3Rpb24oKXtpZih0aGlzLm9yaWdpbmFsRXZlbnQpcmV0dXJuIGIodGhpcy5vcmlnaW5hbEV2ZW50KX06ZnVuY3Rpb24oKXtpZih0aGlzLm9yaWdpbmFsRXZlbnQpcmV0dXJuIHRoaXMub3JpZ2luYWxFdmVudFthXX0sc2V0OmZ1bmN0aW9uKGIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KX19KX0sZml4OmZ1bmN0aW9uKGEpe3JldHVybiBhW3IuZXhwYW5kb10/YTpuZXcgci5FdmVudChhKX0sc3BlY2lhbDp7bG9hZDp7bm9CdWJibGU6ITB9LGZvY3VzOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7aWYodGhpcyE9PXhhKCkmJnRoaXMuZm9jdXMpcmV0dXJuIHRoaXMuZm9jdXMoKSwhMX0sZGVsZWdhdGVUeXBlOiJmb2N1c2luIn0sYmx1cjp7dHJpZ2dlcjpmdW5jdGlvbigpe2lmKHRoaXM9PT14YSgpJiZ0aGlzLmJsdXIpcmV0dXJuIHRoaXMuYmx1cigpLCExfSxkZWxlZ2F0ZVR5cGU6ImZvY3Vzb3V0In0sY2xpY2s6e3RyaWdnZXI6ZnVuY3Rpb24oKXtpZigiY2hlY2tib3giPT09dGhpcy50eXBlJiZ0aGlzLmNsaWNrJiZCKHRoaXMsImlucHV0IikpcmV0dXJuIHRoaXMuY2xpY2soKSwhMX0sX2RlZmF1bHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIEIoYS50YXJnZXQsImEiKX19LGJlZm9yZXVubG9hZDp7cG9zdERpc3BhdGNoOmZ1bmN0aW9uKGEpe3ZvaWQgMCE9PWEucmVzdWx0JiZhLm9yaWdpbmFsRXZlbnQmJihhLm9yaWdpbmFsRXZlbnQucmV0dXJuVmFsdWU9YS5yZXN1bHQpfX19fSxyLnJlbW92ZUV2ZW50PWZ1bmN0aW9uKGEsYixjKXthLnJlbW92ZUV2ZW50TGlzdGVuZXImJmEucmVtb3ZlRXZlbnRMaXN0ZW5lcihiLGMpfSxyLkV2ZW50PWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiByLkV2ZW50PyhhJiZhLnR5cGU/KHRoaXMub3JpZ2luYWxFdmVudD1hLHRoaXMudHlwZT1hLnR5cGUsdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9YS5kZWZhdWx0UHJldmVudGVkfHx2b2lkIDA9PT1hLmRlZmF1bHRQcmV2ZW50ZWQmJmEucmV0dXJuVmFsdWU9PT0hMT92YTp3YSx0aGlzLnRhcmdldD1hLnRhcmdldCYmMz09PWEudGFyZ2V0Lm5vZGVUeXBlP2EudGFyZ2V0LnBhcmVudE5vZGU6YS50YXJnZXQsdGhpcy5jdXJyZW50VGFyZ2V0PWEuY3VycmVudFRhcmdldCx0aGlzLnJlbGF0ZWRUYXJnZXQ9YS5yZWxhdGVkVGFyZ2V0KTp0aGlzLnR5cGU9YSxiJiZyLmV4dGVuZCh0aGlzLGIpLHRoaXMudGltZVN0YW1wPWEmJmEudGltZVN0YW1wfHxyLm5vdygpLHZvaWQodGhpc1tyLmV4cGFuZG9dPSEwKSk6bmV3IHIuRXZlbnQoYSxiKX0sci5FdmVudC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnIuRXZlbnQsaXNEZWZhdWx0UHJldmVudGVkOndhLGlzUHJvcGFnYXRpb25TdG9wcGVkOndhLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOndhLGlzU2ltdWxhdGVkOiExLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPXZhLGEmJiF0aGlzLmlzU2ltdWxhdGVkJiZhLnByZXZlbnREZWZhdWx0KCl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXZhLGEmJiF0aGlzLmlzU2ltdWxhdGVkJiZhLnN0b3BQcm9wYWdhdGlvbigpfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD12YSxhJiYhdGhpcy5pc1NpbXVsYXRlZCYmYS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSx0aGlzLnN0b3BQcm9wYWdhdGlvbigpfX0sci5lYWNoKHthbHRLZXk6ITAsYnViYmxlczohMCxjYW5jZWxhYmxlOiEwLGNoYW5nZWRUb3VjaGVzOiEwLGN0cmxLZXk6ITAsZGV0YWlsOiEwLGV2ZW50UGhhc2U6ITAsbWV0YUtleTohMCxwYWdlWDohMCxwYWdlWTohMCxzaGlmdEtleTohMCx2aWV3OiEwLCJjaGFyIjohMCxjaGFyQ29kZTohMCxrZXk6ITAsa2V5Q29kZTohMCxidXR0b246ITAsYnV0dG9uczohMCxjbGllbnRYOiEwLGNsaWVudFk6ITAsb2Zmc2V0WDohMCxvZmZzZXRZOiEwLHBvaW50ZXJJZDohMCxwb2ludGVyVHlwZTohMCxzY3JlZW5YOiEwLHNjcmVlblk6ITAsdGFyZ2V0VG91Y2hlczohMCx0b0VsZW1lbnQ6ITAsdG91Y2hlczohMCx3aGljaDpmdW5jdGlvbihhKXt2YXIgYj1hLmJ1dHRvbjtyZXR1cm4gbnVsbD09YS53aGljaCYmc2EudGVzdChhLnR5cGUpP251bGwhPWEuY2hhckNvZGU/YS5jaGFyQ29kZTphLmtleUNvZGU6IWEud2hpY2gmJnZvaWQgMCE9PWImJnRhLnRlc3QoYS50eXBlKT8xJmI/MToyJmI/Mzo0JmI/MjowOmEud2hpY2h9fSxyLmV2ZW50LmFkZFByb3ApLHIuZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCIscG9pbnRlcmVudGVyOiJwb2ludGVyb3ZlciIscG9pbnRlcmxlYXZlOiJwb2ludGVyb3V0In0sZnVuY3Rpb24oYSxiKXtyLmV2ZW50LnNwZWNpYWxbYV09e2RlbGVnYXRlVHlwZTpiLGJpbmRUeXBlOmIsaGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBjLGQ9dGhpcyxlPWEucmVsYXRlZFRhcmdldCxmPWEuaGFuZGxlT2JqO3JldHVybiBlJiYoZT09PWR8fHIuY29udGFpbnMoZCxlKSl8fChhLnR5cGU9Zi5vcmlnVHlwZSxjPWYuaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyksYS50eXBlPWIpLGN9fX0pLHIuZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4geWEodGhpcyxhLGIsYyxkKX0sb25lOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB5YSh0aGlzLGEsYixjLGQsMSl9LG9mZjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZTtpZihhJiZhLnByZXZlbnREZWZhdWx0JiZhLmhhbmRsZU9iailyZXR1cm4gZD1hLmhhbmRsZU9iaixyKGEuZGVsZWdhdGVUYXJnZXQpLm9mZihkLm5hbWVzcGFjZT9kLm9yaWdUeXBlKyIuIitkLm5hbWVzcGFjZTpkLm9yaWdUeXBlLGQuc2VsZWN0b3IsZC5oYW5kbGVyKSx0aGlzO2lmKCJvYmplY3QiPT10eXBlb2YgYSl7Zm9yKGUgaW4gYSl0aGlzLm9mZihlLGIsYVtlXSk7cmV0dXJuIHRoaXN9cmV0dXJuIGIhPT0hMSYmImZ1bmN0aW9uIiE9dHlwZW9mIGJ8fChjPWIsYj12b2lkIDApLGM9PT0hMSYmKGM9d2EpLHRoaXMuZWFjaChmdW5jdGlvbigpe3IuZXZlbnQucmVtb3ZlKHRoaXMsYSxjLGIpfSl9fSk7dmFyIHphPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFthLXpdW15cL1wwPlx4MjBcdFxyXG5cZl0qKVtePl0qKVwvPi9naSxBYT0vPHNjcmlwdHw8c3R5bGV8PGxpbmsvaSxCYT0vY2hlY2tlZFxzKig/OltePV18PVxzKi5jaGVja2VkLikvaSxDYT0vXnRydWVcLyguKikvLERhPS9eXHMqPCEoPzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18LS0pPlxzKiQvZztmdW5jdGlvbiBFYShhLGIpe3JldHVybiBCKGEsInRhYmxlIikmJkIoMTEhPT1iLm5vZGVUeXBlP2I6Yi5maXJzdENoaWxkLCJ0ciIpP3IoIj50Ym9keSIsYSlbMF18fGE6YX1mdW5jdGlvbiBGYShhKXtyZXR1cm4gYS50eXBlPShudWxsIT09YS5nZXRBdHRyaWJ1dGUoInR5cGUiKSkrIi8iK2EudHlwZSxhfWZ1bmN0aW9uIEdhKGEpe3ZhciBiPUNhLmV4ZWMoYS50eXBlKTtyZXR1cm4gYj9hLnR5cGU9YlsxXTphLnJlbW92ZUF0dHJpYnV0ZSgidHlwZSIpLGF9ZnVuY3Rpb24gSGEoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqO2lmKDE9PT1iLm5vZGVUeXBlKXtpZihXLmhhc0RhdGEoYSkmJihmPVcuYWNjZXNzKGEpLGc9Vy5zZXQoYixmKSxqPWYuZXZlbnRzKSl7ZGVsZXRlIGcuaGFuZGxlLGcuZXZlbnRzPXt9O2ZvcihlIGluIGopZm9yKGM9MCxkPWpbZV0ubGVuZ3RoO2M8ZDtjKyspci5ldmVudC5hZGQoYixlLGpbZV1bY10pfVguaGFzRGF0YShhKSYmKGg9WC5hY2Nlc3MoYSksaT1yLmV4dGVuZCh7fSxoKSxYLnNldChiLGkpKX19ZnVuY3Rpb24gSWEoYSxiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7ImlucHV0Ij09PWMmJmphLnRlc3QoYS50eXBlKT9iLmNoZWNrZWQ9YS5jaGVja2VkOiJpbnB1dCIhPT1jJiYidGV4dGFyZWEiIT09Y3x8KGIuZGVmYXVsdFZhbHVlPWEuZGVmYXVsdFZhbHVlKX1mdW5jdGlvbiBKYShhLGIsYyxkKXtiPWcuYXBwbHkoW10sYik7dmFyIGUsZixoLGksaixrLGw9MCxtPWEubGVuZ3RoLG49bS0xLHE9YlswXSxzPXIuaXNGdW5jdGlvbihxKTtpZihzfHxtPjEmJiJzdHJpbmciPT10eXBlb2YgcSYmIW8uY2hlY2tDbG9uZSYmQmEudGVzdChxKSlyZXR1cm4gYS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBmPWEuZXEoZSk7cyYmKGJbMF09cS5jYWxsKHRoaXMsZSxmLmh0bWwoKSkpLEphKGYsYixjLGQpfSk7aWYobSYmKGU9cWEoYixhWzBdLm93bmVyRG9jdW1lbnQsITEsYSxkKSxmPWUuZmlyc3RDaGlsZCwxPT09ZS5jaGlsZE5vZGVzLmxlbmd0aCYmKGU9ZiksZnx8ZCkpe2ZvcihoPXIubWFwKG5hKGUsInNjcmlwdCIpLEZhKSxpPWgubGVuZ3RoO2w8bTtsKyspaj1lLGwhPT1uJiYoaj1yLmNsb25lKGosITAsITApLGkmJnIubWVyZ2UoaCxuYShqLCJzY3JpcHQiKSkpLGMuY2FsbChhW2xdLGosbCk7aWYoaSlmb3Ioaz1oW2gubGVuZ3RoLTFdLm93bmVyRG9jdW1lbnQsci5tYXAoaCxHYSksbD0wO2w8aTtsKyspaj1oW2xdLGxhLnRlc3Qoai50eXBlfHwiIikmJiFXLmFjY2VzcyhqLCJnbG9iYWxFdmFsIikmJnIuY29udGFpbnMoayxqKSYmKGouc3JjP3IuX2V2YWxVcmwmJnIuX2V2YWxVcmwoai5zcmMpOnAoai50ZXh0Q29udGVudC5yZXBsYWNlKERhLCIiKSxrKSl9cmV0dXJuIGF9ZnVuY3Rpb24gS2EoYSxiLGMpe2Zvcih2YXIgZCxlPWI/ci5maWx0ZXIoYixhKTphLGY9MDtudWxsIT0oZD1lW2ZdKTtmKyspY3x8MSE9PWQubm9kZVR5cGV8fHIuY2xlYW5EYXRhKG5hKGQpKSxkLnBhcmVudE5vZGUmJihjJiZyLmNvbnRhaW5zKGQub3duZXJEb2N1bWVudCxkKSYmb2EobmEoZCwic2NyaXB0IikpLGQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChkKSk7cmV0dXJuIGF9ci5leHRlbmQoe2h0bWxQcmVmaWx0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSh6YSwiPCQxPjwvJDI+Iil9LGNsb25lOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoPWEuY2xvbmVOb2RlKCEwKSxpPXIuY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpO2lmKCEoby5ub0Nsb25lQ2hlY2tlZHx8MSE9PWEubm9kZVR5cGUmJjExIT09YS5ub2RlVHlwZXx8ci5pc1hNTERvYyhhKSkpZm9yKGc9bmEoaCksZj1uYShhKSxkPTAsZT1mLmxlbmd0aDtkPGU7ZCsrKUlhKGZbZF0sZ1tkXSk7aWYoYilpZihjKWZvcihmPWZ8fG5hKGEpLGc9Z3x8bmEoaCksZD0wLGU9Zi5sZW5ndGg7ZDxlO2QrKylIYShmW2RdLGdbZF0pO2Vsc2UgSGEoYSxoKTtyZXR1cm4gZz1uYShoLCJzY3JpcHQiKSxnLmxlbmd0aD4wJiZvYShnLCFpJiZuYShhLCJzY3JpcHQiKSksaH0sY2xlYW5EYXRhOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYixjLGQsZT1yLmV2ZW50LnNwZWNpYWwsZj0wO3ZvaWQgMCE9PShjPWFbZl0pO2YrKylpZihVKGMpKXtpZihiPWNbVy5leHBhbmRvXSl7aWYoYi5ldmVudHMpZm9yKGQgaW4gYi5ldmVudHMpZVtkXT9yLmV2ZW50LnJlbW92ZShjLGQpOnIucmVtb3ZlRXZlbnQoYyxkLGIuaGFuZGxlKTtjW1cuZXhwYW5kb109dm9pZCAwfWNbWC5leHBhbmRvXSYmKGNbWC5leHBhbmRvXT12b2lkIDApfX19KSxyLmZuLmV4dGVuZCh7ZGV0YWNoOmZ1bmN0aW9uKGEpe3JldHVybiBLYSh0aGlzLGEsITApfSxyZW1vdmU6ZnVuY3Rpb24oYSl7cmV0dXJuIEthKHRoaXMsYSl9LHRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFQodGhpcyxmdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwPT09YT9yLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmVhY2goZnVuY3Rpb24oKXsxIT09dGhpcy5ub2RlVHlwZSYmMTEhPT10aGlzLm5vZGVUeXBlJiY5IT09dGhpcy5ub2RlVHlwZXx8KHRoaXMudGV4dENvbnRlbnQ9YSl9KX0sbnVsbCxhLGFyZ3VtZW50cy5sZW5ndGgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gSmEodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpe3ZhciBiPUVhKHRoaXMsYSk7Yi5hcHBlbmRDaGlsZChhKX19KX0scHJlcGVuZDpmdW5jdGlvbigpe3JldHVybiBKYSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihhKXtpZigxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2RlVHlwZSl7dmFyIGI9RWEodGhpcyxhKTtiLmluc2VydEJlZm9yZShhLGIuZmlyc3RDaGlsZCl9fSl9LGJlZm9yZTpmdW5jdGlvbigpe3JldHVybiBKYSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSx0aGlzKX0pfSxhZnRlcjpmdW5jdGlvbigpe3JldHVybiBKYSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSx0aGlzLm5leHRTaWJsaW5nKX0pfSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgYSxiPTA7bnVsbCE9KGE9dGhpc1tiXSk7YisrKTE9PT1hLm5vZGVUeXBlJiYoci5jbGVhbkRhdGEobmEoYSwhMSkpLGEudGV4dENvbnRlbnQ9IiIpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbihhLGIpe3JldHVybiBhPW51bGwhPWEmJmEsYj1udWxsPT1iP2E6Yix0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiByLmNsb25lKHRoaXMsYSxiKX0pfSxodG1sOmZ1bmN0aW9uKGEpe3JldHVybiBUKHRoaXMsZnVuY3Rpb24oYSl7dmFyIGI9dGhpc1swXXx8e30sYz0wLGQ9dGhpcy5sZW5ndGg7aWYodm9pZCAwPT09YSYmMT09PWIubm9kZVR5cGUpcmV0dXJuIGIuaW5uZXJIVE1MO2lmKCJzdHJpbmciPT10eXBlb2YgYSYmIUFhLnRlc3QoYSkmJiFtYVsoa2EuZXhlYyhhKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pe2E9ci5odG1sUHJlZmlsdGVyKGEpO3RyeXtmb3IoO2M8ZDtjKyspYj10aGlzW2NdfHx7fSwxPT09Yi5ub2RlVHlwZSYmKHIuY2xlYW5EYXRhKG5hKGIsITEpKSxiLmlubmVySFRNTD1hKTtiPTB9Y2F0Y2goZSl7fX1iJiZ0aGlzLmVtcHR5KCkuYXBwZW5kKGEpfSxudWxsLGEsYXJndW1lbnRzLmxlbmd0aCl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKCl7dmFyIGE9W107cmV0dXJuIEphKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMucGFyZW50Tm9kZTtyLmluQXJyYXkodGhpcyxhKTwwJiYoci5jbGVhbkRhdGEobmEodGhpcykpLGMmJmMucmVwbGFjZUNoaWxkKGIsdGhpcykpfSxhKX19KSxyLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihhLGIpe3IuZm5bYV09ZnVuY3Rpb24oYSl7Zm9yKHZhciBjLGQ9W10sZT1yKGEpLGY9ZS5sZW5ndGgtMSxnPTA7Zzw9ZjtnKyspYz1nPT09Zj90aGlzOnRoaXMuY2xvbmUoITApLHIoZVtnXSlbYl0oYyksaC5hcHBseShkLGMuZ2V0KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhkKX19KTt2YXIgTGE9L15tYXJnaW4vLE1hPW5ldyBSZWdFeHAoIl4oIithYSsiKSg/IXB4KVthLXolXSskIiwiaSIpLE5hPWZ1bmN0aW9uKGIpe3ZhciBjPWIub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldztyZXR1cm4gYyYmYy5vcGVuZXJ8fChjPWEpLGMuZ2V0Q29tcHV0ZWRTdHlsZShiKX07IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYigpe2lmKGkpe2kuc3R5bGUuY3NzVGV4dD0iYm94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7bWFyZ2luOmF1dG87Ym9yZGVyOjFweDtwYWRkaW5nOjFweDt0b3A6MSU7d2lkdGg6NTAlIixpLmlubmVySFRNTD0iIixyYS5hcHBlbmRDaGlsZChoKTt2YXIgYj1hLmdldENvbXB1dGVkU3R5bGUoaSk7Yz0iMSUiIT09Yi50b3AsZz0iMnB4Ij09PWIubWFyZ2luTGVmdCxlPSI0cHgiPT09Yi53aWR0aCxpLnN0eWxlLm1hcmdpblJpZ2h0PSI1MCUiLGY9IjRweCI9PT1iLm1hcmdpblJpZ2h0LHJhLnJlbW92ZUNoaWxkKGgpLGk9bnVsbH19dmFyIGMsZSxmLGcsaD1kLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGk9ZC5jcmVhdGVFbGVtZW50KCJkaXYiKTtpLnN0eWxlJiYoaS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iY29udGVudC1ib3giLGkuY2xvbmVOb2RlKCEwKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iIixvLmNsZWFyQ2xvbmVTdHlsZT0iY29udGVudC1ib3giPT09aS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCxoLnN0eWxlLmNzc1RleHQ9ImJvcmRlcjowO3dpZHRoOjhweDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHg7cGFkZGluZzowO21hcmdpbi10b3A6MXB4O3Bvc2l0aW9uOmFic29sdXRlIixoLmFwcGVuZENoaWxkKGkpLHIuZXh0ZW5kKG8se3BpeGVsUG9zaXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gYigpLGN9LGJveFNpemluZ1JlbGlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGIoKSxlfSxwaXhlbE1hcmdpblJpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIGIoKSxmfSxyZWxpYWJsZU1hcmdpbkxlZnQ6ZnVuY3Rpb24oKXtyZXR1cm4gYigpLGd9fSkpfSgpO2Z1bmN0aW9uIE9hKGEsYixjKXt2YXIgZCxlLGYsZyxoPWEuc3R5bGU7cmV0dXJuIGM9Y3x8TmEoYSksYyYmKGc9Yy5nZXRQcm9wZXJ0eVZhbHVlKGIpfHxjW2JdLCIiIT09Z3x8ci5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSl8fChnPXIuc3R5bGUoYSxiKSksIW8ucGl4ZWxNYXJnaW5SaWdodCgpJiZNYS50ZXN0KGcpJiZMYS50ZXN0KGIpJiYoZD1oLndpZHRoLGU9aC5taW5XaWR0aCxmPWgubWF4V2lkdGgsaC5taW5XaWR0aD1oLm1heFdpZHRoPWgud2lkdGg9ZyxnPWMud2lkdGgsaC53aWR0aD1kLGgubWluV2lkdGg9ZSxoLm1heFdpZHRoPWYpKSx2b2lkIDAhPT1nP2crIiI6Z31mdW5jdGlvbiBQYShhLGIpe3JldHVybntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYSgpP3ZvaWQgZGVsZXRlIHRoaXMuZ2V0Oih0aGlzLmdldD1iKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fX12YXIgUWE9L14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLFJhPS9eLS0vLFNhPXtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxUYT17bGV0dGVyU3BhY2luZzoiMCIsZm9udFdlaWdodDoiNDAwIn0sVWE9WyJXZWJraXQiLCJNb3oiLCJtcyJdLFZhPWQuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGU7ZnVuY3Rpb24gV2EoYSl7aWYoYSBpbiBWYSlyZXR1cm4gYTt2YXIgYj1hWzBdLnRvVXBwZXJDYXNlKCkrYS5zbGljZSgxKSxjPVVhLmxlbmd0aDt3aGlsZShjLS0paWYoYT1VYVtjXStiLGEgaW4gVmEpcmV0dXJuIGF9ZnVuY3Rpb24gWGEoYSl7dmFyIGI9ci5jc3NQcm9wc1thXTtyZXR1cm4gYnx8KGI9ci5jc3NQcm9wc1thXT1XYShhKXx8YSksYn1mdW5jdGlvbiBZYShhLGIsYyl7dmFyIGQ9YmEuZXhlYyhiKTtyZXR1cm4gZD9NYXRoLm1heCgwLGRbMl0tKGN8fDApKSsoZFszXXx8InB4Iik6Yn1mdW5jdGlvbiBaYShhLGIsYyxkLGUpe3ZhciBmLGc9MDtmb3IoZj1jPT09KGQ/ImJvcmRlciI6ImNvbnRlbnQiKT80OiJ3aWR0aCI9PT1iPzE6MDtmPDQ7Zis9MikibWFyZ2luIj09PWMmJihnKz1yLmNzcyhhLGMrY2FbZl0sITAsZSkpLGQ/KCJjb250ZW50Ij09PWMmJihnLT1yLmNzcyhhLCJwYWRkaW5nIitjYVtmXSwhMCxlKSksIm1hcmdpbiIhPT1jJiYoZy09ci5jc3MoYSwiYm9yZGVyIitjYVtmXSsiV2lkdGgiLCEwLGUpKSk6KGcrPXIuY3NzKGEsInBhZGRpbmciK2NhW2ZdLCEwLGUpLCJwYWRkaW5nIiE9PWMmJihnKz1yLmNzcyhhLCJib3JkZXIiK2NhW2ZdKyJXaWR0aCIsITAsZSkpKTtyZXR1cm4gZ31mdW5jdGlvbiAkYShhLGIsYyl7dmFyIGQsZT1OYShhKSxmPU9hKGEsYixlKSxnPSJib3JkZXItYm94Ij09PXIuY3NzKGEsImJveFNpemluZyIsITEsZSk7cmV0dXJuIE1hLnRlc3QoZik/ZjooZD1nJiYoby5ib3hTaXppbmdSZWxpYWJsZSgpfHxmPT09YS5zdHlsZVtiXSksImF1dG8iPT09ZiYmKGY9YVsib2Zmc2V0IitiWzBdLnRvVXBwZXJDYXNlKCkrYi5zbGljZSgxKV0pLGY9cGFyc2VGbG9hdChmKXx8MCxmK1phKGEsYixjfHwoZz8iYm9yZGVyIjoiY29udGVudCIpLGQsZSkrInB4Iil9ci5leHRlbmQoe2Nzc0hvb2tzOntvcGFjaXR5OntnZXQ6ZnVuY3Rpb24oYSxiKXtpZihiKXt2YXIgYz1PYShhLCJvcGFjaXR5Iik7cmV0dXJuIiI9PT1jPyIxIjpjfX19fSxjc3NOdW1iZXI6e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiEwLGNvbHVtbkNvdW50OiEwLGZpbGxPcGFjaXR5OiEwLGZsZXhHcm93OiEwLGZsZXhTaHJpbms6ITAsZm9udFdlaWdodDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206ITB9LGNzc1Byb3BzOnsiZmxvYXQiOiJjc3NGbG9hdCJ9LHN0eWxlOmZ1bmN0aW9uKGEsYixjLGQpe2lmKGEmJjMhPT1hLm5vZGVUeXBlJiY4IT09YS5ub2RlVHlwZSYmYS5zdHlsZSl7dmFyIGUsZixnLGg9ci5jYW1lbENhc2UoYiksaT1SYS50ZXN0KGIpLGo9YS5zdHlsZTtyZXR1cm4gaXx8KGI9WGEoaCkpLGc9ci5jc3NIb29rc1tiXXx8ci5jc3NIb29rc1toXSx2b2lkIDA9PT1jP2cmJiJnZXQiaW4gZyYmdm9pZCAwIT09KGU9Zy5nZXQoYSwhMSxkKSk/ZTpqW2JdOihmPXR5cGVvZiBjLCJzdHJpbmciPT09ZiYmKGU9YmEuZXhlYyhjKSkmJmVbMV0mJihjPWZhKGEsYixlKSxmPSJudW1iZXIiKSxudWxsIT1jJiZjPT09YyYmKCJudW1iZXIiPT09ZiYmKGMrPWUmJmVbM118fChyLmNzc051bWJlcltoXT8iIjoicHgiKSksby5jbGVhckNsb25lU3R5bGV8fCIiIT09Y3x8MCE9PWIuaW5kZXhPZigiYmFja2dyb3VuZCIpfHwoaltiXT0iaW5oZXJpdCIpLGcmJiJzZXQiaW4gZyYmdm9pZCAwPT09KGM9Zy5zZXQoYSxjLGQpKXx8KGk/ai5zZXRQcm9wZXJ0eShiLGMpOmpbYl09YykpLHZvaWQgMCl9fSxjc3M6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZixnLGg9ci5jYW1lbENhc2UoYiksaT1SYS50ZXN0KGIpO3JldHVybiBpfHwoYj1YYShoKSksZz1yLmNzc0hvb2tzW2JdfHxyLmNzc0hvb2tzW2hdLGcmJiJnZXQiaW4gZyYmKGU9Zy5nZXQoYSwhMCxjKSksdm9pZCAwPT09ZSYmKGU9T2EoYSxiLGQpKSwibm9ybWFsIj09PWUmJmIgaW4gVGEmJihlPVRhW2JdKSwiIj09PWN8fGM/KGY9cGFyc2VGbG9hdChlKSxjPT09ITB8fGlzRmluaXRlKGYpP2Z8fDA6ZSk6ZX19KSxyLmVhY2goWyJoZWlnaHQiLCJ3aWR0aCJdLGZ1bmN0aW9uKGEsYil7ci5jc3NIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEsYyxkKXtpZihjKXJldHVybiFRYS50ZXN0KHIuY3NzKGEsImRpc3BsYXkiKSl8fGEuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgmJmEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg/JGEoYSxiLGQpOmVhKGEsU2EsZnVuY3Rpb24oKXtyZXR1cm4gJGEoYSxiLGQpfSl9LHNldDpmdW5jdGlvbihhLGMsZCl7dmFyIGUsZj1kJiZOYShhKSxnPWQmJlphKGEsYixkLCJib3JkZXItYm94Ij09PXIuY3NzKGEsImJveFNpemluZyIsITEsZiksZik7cmV0dXJuIGcmJihlPWJhLmV4ZWMoYykpJiYicHgiIT09KGVbM118fCJweCIpJiYoYS5zdHlsZVtiXT1jLGM9ci5jc3MoYSxiKSksWWEoYSxjLGcpfX19KSxyLmNzc0hvb2tzLm1hcmdpbkxlZnQ9UGEoby5yZWxpYWJsZU1hcmdpbkxlZnQsZnVuY3Rpb24oYSxiKXtpZihiKXJldHVybihwYXJzZUZsb2F0KE9hKGEsIm1hcmdpbkxlZnQiKSl8fGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdC1lYShhLHttYXJnaW5MZWZ0OjB9LGZ1bmN0aW9uKCl7cmV0dXJuIGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdH0pKSsicHgifSksci5lYWNoKHttYXJnaW46IiIscGFkZGluZzoiIixib3JkZXI6IldpZHRoIn0sZnVuY3Rpb24oYSxiKXtyLmNzc0hvb2tzW2ErYl09e2V4cGFuZDpmdW5jdGlvbihjKXtmb3IodmFyIGQ9MCxlPXt9LGY9InN0cmluZyI9PXR5cGVvZiBjP2Muc3BsaXQoIiAiKTpbY107ZDw0O2QrKyllW2ErY2FbZF0rYl09ZltkXXx8ZltkLTJdfHxmWzBdO3JldHVybiBlfX0sTGEudGVzdChhKXx8KHIuY3NzSG9va3NbYStiXS5zZXQ9WWEpfSksci5mbi5leHRlbmQoe2NzczpmdW5jdGlvbihhLGIpe3JldHVybiBUKHRoaXMsZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj17fSxnPTA7aWYoQXJyYXkuaXNBcnJheShiKSl7Zm9yKGQ9TmEoYSksZT1iLmxlbmd0aDtnPGU7ZysrKWZbYltnXV09ci5jc3MoYSxiW2ddLCExLGQpO3JldHVybiBmfXJldHVybiB2b2lkIDAhPT1jP3Iuc3R5bGUoYSxiLGMpOnIuY3NzKGEsYil9LGEsYixhcmd1bWVudHMubGVuZ3RoPjEpfX0pO2Z1bmN0aW9uIF9hKGEsYixjLGQsZSl7cmV0dXJuIG5ldyBfYS5wcm90b3R5cGUuaW5pdChhLGIsYyxkLGUpfXIuVHdlZW49X2EsX2EucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpfYSxpbml0OmZ1bmN0aW9uKGEsYixjLGQsZSxmKXt0aGlzLmVsZW09YSx0aGlzLnByb3A9Yyx0aGlzLmVhc2luZz1lfHxyLmVhc2luZy5fZGVmYXVsdCx0aGlzLm9wdGlvbnM9Yix0aGlzLnN0YXJ0PXRoaXMubm93PXRoaXMuY3VyKCksdGhpcy5lbmQ9ZCx0aGlzLnVuaXQ9Znx8KHIuY3NzTnVtYmVyW2NdPyIiOiJweCIpfSxjdXI6ZnVuY3Rpb24oKXt2YXIgYT1fYS5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gYSYmYS5nZXQ/YS5nZXQodGhpcyk6X2EucHJvcEhvb2tzLl9kZWZhdWx0LmdldCh0aGlzKX0scnVuOmZ1bmN0aW9uKGEpe3ZhciBiLGM9X2EucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIHRoaXMub3B0aW9ucy5kdXJhdGlvbj90aGlzLnBvcz1iPXIuZWFzaW5nW3RoaXMuZWFzaW5nXShhLHRoaXMub3B0aW9ucy5kdXJhdGlvbiphLDAsMSx0aGlzLm9wdGlvbnMuZHVyYXRpb24pOnRoaXMucG9zPWI9YSx0aGlzLm5vdz0odGhpcy5lbmQtdGhpcy5zdGFydCkqYit0aGlzLnN0YXJ0LHRoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRoaXMuZWxlbSx0aGlzLm5vdyx0aGlzKSxjJiZjLnNldD9jLnNldCh0aGlzKTpfYS5wcm9wSG9va3MuX2RlZmF1bHQuc2V0KHRoaXMpLHRoaXN9fSxfYS5wcm90b3R5cGUuaW5pdC5wcm90b3R5cGU9X2EucHJvdG90eXBlLF9hLnByb3BIb29rcz17X2RlZmF1bHQ6e2dldDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4gMSE9PWEuZWxlbS5ub2RlVHlwZXx8bnVsbCE9YS5lbGVtW2EucHJvcF0mJm51bGw9PWEuZWxlbS5zdHlsZVthLnByb3BdP2EuZWxlbVthLnByb3BdOihiPXIuY3NzKGEuZWxlbSxhLnByb3AsIiIpLGImJiJhdXRvIiE9PWI/YjowKX0sc2V0OmZ1bmN0aW9uKGEpe3IuZnguc3RlcFthLnByb3BdP3IuZnguc3RlcFthLnByb3BdKGEpOjEhPT1hLmVsZW0ubm9kZVR5cGV8fG51bGw9PWEuZWxlbS5zdHlsZVtyLmNzc1Byb3BzW2EucHJvcF1dJiYhci5jc3NIb29rc1thLnByb3BdP2EuZWxlbVthLnByb3BdPWEubm93OnIuc3R5bGUoYS5lbGVtLGEucHJvcCxhLm5vdythLnVuaXQpfX19LF9hLnByb3BIb29rcy5zY3JvbGxUb3A9X2EucHJvcEhvb2tzLnNjcm9sbExlZnQ9e3NldDpmdW5jdGlvbihhKXthLmVsZW0ubm9kZVR5cGUmJmEuZWxlbS5wYXJlbnROb2RlJiYoYS5lbGVtW2EucHJvcF09YS5ub3cpfX0sci5lYXNpbmc9e2xpbmVhcjpmdW5jdGlvbihhKXtyZXR1cm4gYX0sc3dpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuLjUtTWF0aC5jb3MoYSpNYXRoLlBJKS8yfSxfZGVmYXVsdDoic3dpbmcifSxyLmZ4PV9hLnByb3RvdHlwZS5pbml0LHIuZnguc3RlcD17fTt2YXIgYWIsYmIsY2I9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLGRiPS9xdWV1ZUhvb2tzJC87ZnVuY3Rpb24gZWIoKXtiYiYmKGQuaGlkZGVuPT09ITEmJmEucmVxdWVzdEFuaW1hdGlvbkZyYW1lP2EucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGViKTphLnNldFRpbWVvdXQoZWIsci5meC5pbnRlcnZhbCksci5meC50aWNrKCkpfWZ1bmN0aW9uIGZiKCl7cmV0dXJuIGEuc2V0VGltZW91dChmdW5jdGlvbigpe2FiPXZvaWQgMH0pLGFiPXIubm93KCl9ZnVuY3Rpb24gZ2IoYSxiKXt2YXIgYyxkPTAsZT17aGVpZ2h0OmF9O2ZvcihiPWI/MTowO2Q8NDtkKz0yLWIpYz1jYVtkXSxlWyJtYXJnaW4iK2NdPWVbInBhZGRpbmciK2NdPWE7cmV0dXJuIGImJihlLm9wYWNpdHk9ZS53aWR0aD1hKSxlfWZ1bmN0aW9uIGhiKGEsYixjKXtmb3IodmFyIGQsZT0oa2IudHdlZW5lcnNbYl18fFtdKS5jb25jYXQoa2IudHdlZW5lcnNbIioiXSksZj0wLGc9ZS5sZW5ndGg7ZjxnO2YrKylpZihkPWVbZl0uY2FsbChjLGIsYSkpcmV0dXJuIGR9ZnVuY3Rpb24gaWIoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbD0id2lkdGgiaW4gYnx8ImhlaWdodCJpbiBiLG09dGhpcyxuPXt9LG89YS5zdHlsZSxwPWEubm9kZVR5cGUmJmRhKGEpLHE9Vy5nZXQoYSwiZnhzaG93Iik7Yy5xdWV1ZXx8KGc9ci5fcXVldWVIb29rcyhhLCJmeCIpLG51bGw9PWcudW5xdWV1ZWQmJihnLnVucXVldWVkPTAsaD1nLmVtcHR5LmZpcmUsZy5lbXB0eS5maXJlPWZ1bmN0aW9uKCl7Zy51bnF1ZXVlZHx8aCgpfSksZy51bnF1ZXVlZCsrLG0uYWx3YXlzKGZ1bmN0aW9uKCl7bS5hbHdheXMoZnVuY3Rpb24oKXtnLnVucXVldWVkLS0sci5xdWV1ZShhLCJmeCIpLmxlbmd0aHx8Zy5lbXB0eS5maXJlKCl9KX0pKTtmb3IoZCBpbiBiKWlmKGU9YltkXSxjYi50ZXN0KGUpKXtpZihkZWxldGUgYltkXSxmPWZ8fCJ0b2dnbGUiPT09ZSxlPT09KHA/ImhpZGUiOiJzaG93Iikpe2lmKCJzaG93IiE9PWV8fCFxfHx2b2lkIDA9PT1xW2RdKWNvbnRpbnVlO3A9ITB9bltkXT1xJiZxW2RdfHxyLnN0eWxlKGEsZCl9aWYoaT0hci5pc0VtcHR5T2JqZWN0KGIpLGl8fCFyLmlzRW1wdHlPYmplY3Qobikpe2wmJjE9PT1hLm5vZGVUeXBlJiYoYy5vdmVyZmxvdz1bby5vdmVyZmxvdyxvLm92ZXJmbG93WCxvLm92ZXJmbG93WV0saj1xJiZxLmRpc3BsYXksbnVsbD09aiYmKGo9Vy5nZXQoYSwiZGlzcGxheSIpKSxrPXIuY3NzKGEsImRpc3BsYXkiKSwibm9uZSI9PT1rJiYoaj9rPWo6KGlhKFthXSwhMCksaj1hLnN0eWxlLmRpc3BsYXl8fGosaz1yLmNzcyhhLCJkaXNwbGF5IiksaWEoW2FdKSkpLCgiaW5saW5lIj09PWt8fCJpbmxpbmUtYmxvY2siPT09ayYmbnVsbCE9aikmJiJub25lIj09PXIuY3NzKGEsImZsb2F0IikmJihpfHwobS5kb25lKGZ1bmN0aW9uKCl7by5kaXNwbGF5PWp9KSxudWxsPT1qJiYoaz1vLmRpc3BsYXksaj0ibm9uZSI9PT1rPyIiOmspKSxvLmRpc3BsYXk9ImlubGluZS1ibG9jayIpKSxjLm92ZXJmbG93JiYoby5vdmVyZmxvdz0iaGlkZGVuIixtLmFsd2F5cyhmdW5jdGlvbigpe28ub3ZlcmZsb3c9Yy5vdmVyZmxvd1swXSxvLm92ZXJmbG93WD1jLm92ZXJmbG93WzFdLG8ub3ZlcmZsb3dZPWMub3ZlcmZsb3dbMl19KSksaT0hMTtmb3IoZCBpbiBuKWl8fChxPyJoaWRkZW4iaW4gcSYmKHA9cS5oaWRkZW4pOnE9Vy5hY2Nlc3MoYSwiZnhzaG93Iix7ZGlzcGxheTpqfSksZiYmKHEuaGlkZGVuPSFwKSxwJiZpYShbYV0sITApLG0uZG9uZShmdW5jdGlvbigpe3B8fGlhKFthXSksVy5yZW1vdmUoYSwiZnhzaG93Iik7Zm9yKGQgaW4gbilyLnN0eWxlKGEsZCxuW2RdKX0pKSxpPWhiKHA/cVtkXTowLGQsbSksZCBpbiBxfHwocVtkXT1pLnN0YXJ0LHAmJihpLmVuZD1pLnN0YXJ0LGkuc3RhcnQ9MCkpfX1mdW5jdGlvbiBqYihhLGIpe3ZhciBjLGQsZSxmLGc7Zm9yKGMgaW4gYSlpZihkPXIuY2FtZWxDYXNlKGMpLGU9YltkXSxmPWFbY10sQXJyYXkuaXNBcnJheShmKSYmKGU9ZlsxXSxmPWFbY109ZlswXSksYyE9PWQmJihhW2RdPWYsZGVsZXRlIGFbY10pLGc9ci5jc3NIb29rc1tkXSxnJiYiZXhwYW5kImluIGcpe2Y9Zy5leHBhbmQoZiksZGVsZXRlIGFbZF07Zm9yKGMgaW4gZiljIGluIGF8fChhW2NdPWZbY10sYltjXT1lKX1lbHNlIGJbZF09ZX1mdW5jdGlvbiBrYihhLGIsYyl7dmFyIGQsZSxmPTAsZz1rYi5wcmVmaWx0ZXJzLmxlbmd0aCxoPXIuRGVmZXJyZWQoKS5hbHdheXMoZnVuY3Rpb24oKXtkZWxldGUgaS5lbGVtfSksaT1mdW5jdGlvbigpe2lmKGUpcmV0dXJuITE7Zm9yKHZhciBiPWFifHxmYigpLGM9TWF0aC5tYXgoMCxqLnN0YXJ0VGltZStqLmR1cmF0aW9uLWIpLGQ9Yy9qLmR1cmF0aW9ufHwwLGY9MS1kLGc9MCxpPWoudHdlZW5zLmxlbmd0aDtnPGk7ZysrKWoudHdlZW5zW2ddLnJ1bihmKTtyZXR1cm4gaC5ub3RpZnlXaXRoKGEsW2osZixjXSksZjwxJiZpP2M6KGl8fGgubm90aWZ5V2l0aChhLFtqLDEsMF0pLGgucmVzb2x2ZVdpdGgoYSxbal0pLCExKX0saj1oLnByb21pc2Uoe2VsZW06YSxwcm9wczpyLmV4dGVuZCh7fSxiKSxvcHRzOnIuZXh0ZW5kKCEwLHtzcGVjaWFsRWFzaW5nOnt9LGVhc2luZzpyLmVhc2luZy5fZGVmYXVsdH0sYyksb3JpZ2luYWxQcm9wZXJ0aWVzOmIsb3JpZ2luYWxPcHRpb25zOmMsc3RhcnRUaW1lOmFifHxmYigpLGR1cmF0aW9uOmMuZHVyYXRpb24sdHdlZW5zOltdLGNyZWF0ZVR3ZWVuOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9ci5Ud2VlbihhLGoub3B0cyxiLGMsai5vcHRzLnNwZWNpYWxFYXNpbmdbYl18fGoub3B0cy5lYXNpbmcpO3JldHVybiBqLnR3ZWVucy5wdXNoKGQpLGR9LHN0b3A6ZnVuY3Rpb24oYil7dmFyIGM9MCxkPWI/ai50d2VlbnMubGVuZ3RoOjA7aWYoZSlyZXR1cm4gdGhpcztmb3IoZT0hMDtjPGQ7YysrKWoudHdlZW5zW2NdLnJ1bigxKTtyZXR1cm4gYj8oaC5ub3RpZnlXaXRoKGEsW2osMSwwXSksaC5yZXNvbHZlV2l0aChhLFtqLGJdKSk6aC5yZWplY3RXaXRoKGEsW2osYl0pLHRoaXN9fSksaz1qLnByb3BzO2ZvcihqYihrLGoub3B0cy5zcGVjaWFsRWFzaW5nKTtmPGc7ZisrKWlmKGQ9a2IucHJlZmlsdGVyc1tmXS5jYWxsKGosYSxrLGoub3B0cykpcmV0dXJuIHIuaXNGdW5jdGlvbihkLnN0b3ApJiYoci5fcXVldWVIb29rcyhqLmVsZW0sai5vcHRzLnF1ZXVlKS5zdG9wPXIucHJveHkoZC5zdG9wLGQpKSxkO3JldHVybiByLm1hcChrLGhiLGopLHIuaXNGdW5jdGlvbihqLm9wdHMuc3RhcnQpJiZqLm9wdHMuc3RhcnQuY2FsbChhLGopLGoucHJvZ3Jlc3Moai5vcHRzLnByb2dyZXNzKS5kb25lKGoub3B0cy5kb25lLGoub3B0cy5jb21wbGV0ZSkuZmFpbChqLm9wdHMuZmFpbCkuYWx3YXlzKGoub3B0cy5hbHdheXMpLHIuZngudGltZXIoci5leHRlbmQoaSx7ZWxlbTphLGFuaW06aixxdWV1ZTpqLm9wdHMucXVldWV9KSksan1yLkFuaW1hdGlvbj1yLmV4dGVuZChrYix7dHdlZW5lcnM6eyIqIjpbZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmNyZWF0ZVR3ZWVuKGEsYik7cmV0dXJuIGZhKGMuZWxlbSxhLGJhLmV4ZWMoYiksYyksY31dfSx0d2VlbmVyOmZ1bmN0aW9uKGEsYil7ci5pc0Z1bmN0aW9uKGEpPyhiPWEsYT1bIioiXSk6YT1hLm1hdGNoKEwpO2Zvcih2YXIgYyxkPTAsZT1hLmxlbmd0aDtkPGU7ZCsrKWM9YVtkXSxrYi50d2VlbmVyc1tjXT1rYi50d2VlbmVyc1tjXXx8W10sa2IudHdlZW5lcnNbY10udW5zaGlmdChiKX0scHJlZmlsdGVyczpbaWJdLHByZWZpbHRlcjpmdW5jdGlvbihhLGIpe2I/a2IucHJlZmlsdGVycy51bnNoaWZ0KGEpOmtiLnByZWZpbHRlcnMucHVzaChhKX19KSxyLnNwZWVkPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hJiYib2JqZWN0Ij09dHlwZW9mIGE/ci5leHRlbmQoe30sYSk6e2NvbXBsZXRlOmN8fCFjJiZifHxyLmlzRnVuY3Rpb24oYSkmJmEsZHVyYXRpb246YSxlYXNpbmc6YyYmYnx8YiYmIXIuaXNGdW5jdGlvbihiKSYmYn07cmV0dXJuIHIuZngub2ZmP2QuZHVyYXRpb249MDoibnVtYmVyIiE9dHlwZW9mIGQuZHVyYXRpb24mJihkLmR1cmF0aW9uIGluIHIuZnguc3BlZWRzP2QuZHVyYXRpb249ci5meC5zcGVlZHNbZC5kdXJhdGlvbl06ZC5kdXJhdGlvbj1yLmZ4LnNwZWVkcy5fZGVmYXVsdCksbnVsbCE9ZC5xdWV1ZSYmZC5xdWV1ZSE9PSEwfHwoZC5xdWV1ZT0iZngiKSxkLm9sZD1kLmNvbXBsZXRlLGQuY29tcGxldGU9ZnVuY3Rpb24oKXtyLmlzRnVuY3Rpb24oZC5vbGQpJiZkLm9sZC5jYWxsKHRoaXMpLGQucXVldWUmJnIuZGVxdWV1ZSh0aGlzLGQucXVldWUpfSxkfSxyLmZuLmV4dGVuZCh7ZmFkZVRvOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLmZpbHRlcihkYSkuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTpifSxhLGMsZCl9LGFuaW1hdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ci5pc0VtcHR5T2JqZWN0KGEpLGY9ci5zcGVlZChiLGMsZCksZz1mdW5jdGlvbigpe3ZhciBiPWtiKHRoaXMsci5leHRlbmQoe30sYSksZik7KGV8fFcuZ2V0KHRoaXMsImZpbmlzaCIpKSYmYi5zdG9wKCEwKX07cmV0dXJuIGcuZmluaXNoPWcsZXx8Zi5xdWV1ZT09PSExP3RoaXMuZWFjaChnKTp0aGlzLnF1ZXVlKGYucXVldWUsZyl9LHN0b3A6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWZ1bmN0aW9uKGEpe3ZhciBiPWEuc3RvcDtkZWxldGUgYS5zdG9wLGIoYyl9O3JldHVybiJzdHJpbmciIT10eXBlb2YgYSYmKGM9YixiPWEsYT12b2lkIDApLGImJmEhPT0hMSYmdGhpcy5xdWV1ZShhfHwiZngiLFtdKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj0hMCxlPW51bGwhPWEmJmErInF1ZXVlSG9va3MiLGY9ci50aW1lcnMsZz1XLmdldCh0aGlzKTtpZihlKWdbZV0mJmdbZV0uc3RvcCYmZChnW2VdKTtlbHNlIGZvcihlIGluIGcpZ1tlXSYmZ1tlXS5zdG9wJiZkYi50ZXN0KGUpJiZkKGdbZV0pO2ZvcihlPWYubGVuZ3RoO2UtLTspZltlXS5lbGVtIT09dGhpc3x8bnVsbCE9YSYmZltlXS5xdWV1ZSE9PWF8fChmW2VdLmFuaW0uc3RvcChjKSxiPSExLGYuc3BsaWNlKGUsMSkpOyFiJiZjfHxyLmRlcXVldWUodGhpcyxhKX0pfSxmaW5pc2g6ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPT0hMSYmKGE9YXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGIsYz1XLmdldCh0aGlzKSxkPWNbYSsicXVldWUiXSxlPWNbYSsicXVldWVIb29rcyJdLGY9ci50aW1lcnMsZz1kP2QubGVuZ3RoOjA7Zm9yKGMuZmluaXNoPSEwLHIucXVldWUodGhpcyxhLFtdKSxlJiZlLnN0b3AmJmUuc3RvcC5jYWxsKHRoaXMsITApLGI9Zi5sZW5ndGg7Yi0tOylmW2JdLmVsZW09PT10aGlzJiZmW2JdLnF1ZXVlPT09YSYmKGZbYl0uYW5pbS5zdG9wKCEwKSxmLnNwbGljZShiLDEpKTtmb3IoYj0wO2I8ZztiKyspZFtiXSYmZFtiXS5maW5pc2gmJmRbYl0uZmluaXNoLmNhbGwodGhpcyk7ZGVsZXRlIGMuZmluaXNofSl9fSksci5lYWNoKFsidG9nZ2xlIiwic2hvdyIsImhpZGUiXSxmdW5jdGlvbihhLGIpe3ZhciBjPXIuZm5bYl07ci5mbltiXT1mdW5jdGlvbihhLGQsZSl7cmV0dXJuIG51bGw9PWF8fCJib29sZWFuIj09dHlwZW9mIGE/Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dGhpcy5hbmltYXRlKGdiKGIsITApLGEsZCxlKX19KSxyLmVhY2goe3NsaWRlRG93bjpnYigic2hvdyIpLHNsaWRlVXA6Z2IoImhpZGUiKSxzbGlkZVRvZ2dsZTpnYigidG9nZ2xlIiksZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9LGZhZGVUb2dnbGU6e29wYWNpdHk6InRvZ2dsZSJ9fSxmdW5jdGlvbihhLGIpe3IuZm5bYV09ZnVuY3Rpb24oYSxjLGQpe3JldHVybiB0aGlzLmFuaW1hdGUoYixhLGMsZCl9fSksci50aW1lcnM9W10sci5meC50aWNrPWZ1bmN0aW9uKCl7dmFyIGEsYj0wLGM9ci50aW1lcnM7Zm9yKGFiPXIubm93KCk7YjxjLmxlbmd0aDtiKyspYT1jW2JdLGEoKXx8Y1tiXSE9PWF8fGMuc3BsaWNlKGItLSwxKTtjLmxlbmd0aHx8ci5meC5zdG9wKCksYWI9dm9pZCAwfSxyLmZ4LnRpbWVyPWZ1bmN0aW9uKGEpe3IudGltZXJzLnB1c2goYSksci5meC5zdGFydCgpfSxyLmZ4LmludGVydmFsPTEzLHIuZnguc3RhcnQ9ZnVuY3Rpb24oKXtiYnx8KGJiPSEwLGViKCkpfSxyLmZ4LnN0b3A9ZnVuY3Rpb24oKXtiYj1udWxsfSxyLmZ4LnNwZWVkcz17c2xvdzo2MDAsZmFzdDoyMDAsX2RlZmF1bHQ6NDAwfSxyLmZuLmRlbGF5PWZ1bmN0aW9uKGIsYyl7cmV0dXJuIGI9ci5meD9yLmZ4LnNwZWVkc1tiXXx8YjpiLGM9Y3x8ImZ4Iix0aGlzLnF1ZXVlKGMsZnVuY3Rpb24oYyxkKXt2YXIgZT1hLnNldFRpbWVvdXQoYyxiKTtkLnN0b3A9ZnVuY3Rpb24oKXthLmNsZWFyVGltZW91dChlKX19KX0sZnVuY3Rpb24oKXt2YXIgYT1kLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksYj1kLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpLGM9Yi5hcHBlbmRDaGlsZChkLmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKTthLnR5cGU9ImNoZWNrYm94IixvLmNoZWNrT249IiIhPT1hLnZhbHVlLG8ub3B0U2VsZWN0ZWQ9Yy5zZWxlY3RlZCxhPWQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxhLnZhbHVlPSJ0IixhLnR5cGU9InJhZGlvIixvLnJhZGlvVmFsdWU9InQiPT09YS52YWx1ZX0oKTt2YXIgbGIsbWI9ci5leHByLmF0dHJIYW5kbGU7ci5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVCh0aGlzLHIuYXR0cixhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ci5yZW1vdmVBdHRyKHRoaXMsYSl9KX19KSxyLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPWEubm9kZVR5cGU7aWYoMyE9PWYmJjghPT1mJiYyIT09ZilyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGEuZ2V0QXR0cmlidXRlP3IucHJvcChhLGIsYyk6KDE9PT1mJiZyLmlzWE1MRG9jKGEpfHwoZT1yLmF0dHJIb29rc1tiLnRvTG93ZXJDYXNlKCldfHwoci5leHByLm1hdGNoLmJvb2wudGVzdChiKT9sYjp2b2lkIDApKSx2b2lkIDAhPT1jP251bGw9PT1jP3ZvaWQgci5yZW1vdmVBdHRyKGEsYik6ZSYmInNldCJpbiBlJiZ2b2lkIDAhPT0oZD1lLnNldChhLGMsYikpP2Q6KGEuc2V0QXR0cmlidXRlKGIsYysiIiksYyk6ZSYmImdldCJpbiBlJiZudWxsIT09KGQ9ZS5nZXQoYSxiKSk/ZDooZD1yLmZpbmQuYXR0cihhLGIpLApudWxsPT1kP3ZvaWQgMDpkKSl9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGEsYil7aWYoIW8ucmFkaW9WYWx1ZSYmInJhZGlvIj09PWImJkIoYSwiaW5wdXQiKSl7dmFyIGM9YS52YWx1ZTtyZXR1cm4gYS5zZXRBdHRyaWJ1dGUoInR5cGUiLGIpLGMmJihhLnZhbHVlPWMpLGJ9fX19LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPTAsZT1iJiZiLm1hdGNoKEwpO2lmKGUmJjE9PT1hLm5vZGVUeXBlKXdoaWxlKGM9ZVtkKytdKWEucmVtb3ZlQXR0cmlidXRlKGMpfX0pLGxiPXtzZXQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBiPT09ITE/ci5yZW1vdmVBdHRyKGEsYyk6YS5zZXRBdHRyaWJ1dGUoYyxjKSxjfX0sci5lYWNoKHIuZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCgvXHcrL2cpLGZ1bmN0aW9uKGEsYil7dmFyIGM9bWJbYl18fHIuZmluZC5hdHRyO21iW2JdPWZ1bmN0aW9uKGEsYixkKXt2YXIgZSxmLGc9Yi50b0xvd2VyQ2FzZSgpO3JldHVybiBkfHwoZj1tYltnXSxtYltnXT1lLGU9bnVsbCE9YyhhLGIsZCk/ZzpudWxsLG1iW2ddPWYpLGV9fSk7dmFyIG5iPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksb2I9L14oPzphfGFyZWEpJC9pO3IuZm4uZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFQodGhpcyxyLnByb3AsYSxiLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHJlbW92ZVByb3A6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2RlbGV0ZSB0aGlzW3IucHJvcEZpeFthXXx8YV19KX19KSxyLmV4dGVuZCh7cHJvcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPWEubm9kZVR5cGU7aWYoMyE9PWYmJjghPT1mJiYyIT09ZilyZXR1cm4gMT09PWYmJnIuaXNYTUxEb2MoYSl8fChiPXIucHJvcEZpeFtiXXx8YixlPXIucHJvcEhvb2tzW2JdKSx2b2lkIDAhPT1jP2UmJiJzZXQiaW4gZSYmdm9pZCAwIT09KGQ9ZS5zZXQoYSxjLGIpKT9kOmFbYl09YzplJiYiZ2V0ImluIGUmJm51bGwhPT0oZD1lLmdldChhLGIpKT9kOmFbYl19LHByb3BIb29rczp7dGFiSW5kZXg6e2dldDpmdW5jdGlvbihhKXt2YXIgYj1yLmZpbmQuYXR0cihhLCJ0YWJpbmRleCIpO3JldHVybiBiP3BhcnNlSW50KGIsMTApOm5iLnRlc3QoYS5ub2RlTmFtZSl8fG9iLnRlc3QoYS5ub2RlTmFtZSkmJmEuaHJlZj8wOi0xfX19LHByb3BGaXg6eyJmb3IiOiJodG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUifX0pLG8ub3B0U2VsZWN0ZWR8fChyLnByb3BIb29rcy5zZWxlY3RlZD17Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9kZTtyZXR1cm4gYiYmYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCxudWxsfSxzZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO2ImJihiLnNlbGVjdGVkSW5kZXgsYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCl9fSksci5lYWNoKFsidGFiSW5kZXgiLCJyZWFkT25seSIsIm1heExlbmd0aCIsImNlbGxTcGFjaW5nIiwiY2VsbFBhZGRpbmciLCJyb3dTcGFuIiwiY29sU3BhbiIsInVzZU1hcCIsImZyYW1lQm9yZGVyIiwiY29udGVudEVkaXRhYmxlIl0sZnVuY3Rpb24oKXtyLnByb3BGaXhbdGhpcy50b0xvd2VyQ2FzZSgpXT10aGlzfSk7ZnVuY3Rpb24gcGIoYSl7dmFyIGI9YS5tYXRjaChMKXx8W107cmV0dXJuIGIuam9pbigiICIpfWZ1bmN0aW9uIHFiKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIifXIuZm4uZXh0ZW5kKHthZGRDbGFzczpmdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGcsaCxpPTA7aWYoci5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7cih0aGlzKS5hZGRDbGFzcyhhLmNhbGwodGhpcyxiLHFiKHRoaXMpKSl9KTtpZigic3RyaW5nIj09dHlwZW9mIGEmJmEpe2I9YS5tYXRjaChMKXx8W107d2hpbGUoYz10aGlzW2krK10paWYoZT1xYihjKSxkPTE9PT1jLm5vZGVUeXBlJiYiICIrcGIoZSkrIiAiKXtnPTA7d2hpbGUoZj1iW2crK10pZC5pbmRleE9mKCIgIitmKyIgIik8MCYmKGQrPWYrIiAiKTtoPXBiKGQpLGUhPT1oJiZjLnNldEF0dHJpYnV0ZSgiY2xhc3MiLGgpfX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGgsaT0wO2lmKHIuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3IodGhpcykucmVtb3ZlQ2xhc3MoYS5jYWxsKHRoaXMsYixxYih0aGlzKSkpfSk7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMuYXR0cigiY2xhc3MiLCIiKTtpZigic3RyaW5nIj09dHlwZW9mIGEmJmEpe2I9YS5tYXRjaChMKXx8W107d2hpbGUoYz10aGlzW2krK10paWYoZT1xYihjKSxkPTE9PT1jLm5vZGVUeXBlJiYiICIrcGIoZSkrIiAiKXtnPTA7d2hpbGUoZj1iW2crK10pd2hpbGUoZC5pbmRleE9mKCIgIitmKyIgIik+LTEpZD1kLnJlcGxhY2UoIiAiK2YrIiAiLCIgIik7aD1wYihkKSxlIT09aCYmYy5zZXRBdHRyaWJ1dGUoImNsYXNzIixoKX19cmV0dXJuIHRoaXN9LHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKGEsYil7dmFyIGM9dHlwZW9mIGE7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgYiYmInN0cmluZyI9PT1jP2I/dGhpcy5hZGRDbGFzcyhhKTp0aGlzLnJlbW92ZUNsYXNzKGEpOnIuaXNGdW5jdGlvbihhKT90aGlzLmVhY2goZnVuY3Rpb24oYyl7cih0aGlzKS50b2dnbGVDbGFzcyhhLmNhbGwodGhpcyxjLHFiKHRoaXMpLGIpLGIpfSk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGIsZCxlLGY7aWYoInN0cmluZyI9PT1jKXtkPTAsZT1yKHRoaXMpLGY9YS5tYXRjaChMKXx8W107d2hpbGUoYj1mW2QrK10pZS5oYXNDbGFzcyhiKT9lLnJlbW92ZUNsYXNzKGIpOmUuYWRkQ2xhc3MoYil9ZWxzZSB2b2lkIDAhPT1hJiYiYm9vbGVhbiIhPT1jfHwoYj1xYih0aGlzKSxiJiZXLnNldCh0aGlzLCJfX2NsYXNzTmFtZV9fIixiKSx0aGlzLnNldEF0dHJpYnV0ZSYmdGhpcy5zZXRBdHRyaWJ1dGUoImNsYXNzIixifHxhPT09ITE/IiI6Vy5nZXQodGhpcywiX19jbGFzc05hbWVfXyIpfHwiIikpfSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZD0wO2I9IiAiK2ErIiAiO3doaWxlKGM9dGhpc1tkKytdKWlmKDE9PT1jLm5vZGVUeXBlJiYoIiAiK3BiKHFiKGMpKSsiICIpLmluZGV4T2YoYik+LTEpcmV0dXJuITA7cmV0dXJuITF9fSk7dmFyIHJiPS9cci9nO3IuZm4uZXh0ZW5kKHt2YWw6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU9dGhpc1swXTt7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD1yLmlzRnVuY3Rpb24oYSksdGhpcy5lYWNoKGZ1bmN0aW9uKGMpe3ZhciBlOzE9PT10aGlzLm5vZGVUeXBlJiYoZT1kP2EuY2FsbCh0aGlzLGMscih0aGlzKS52YWwoKSk6YSxudWxsPT1lP2U9IiI6Im51bWJlciI9PXR5cGVvZiBlP2UrPSIiOkFycmF5LmlzQXJyYXkoZSkmJihlPXIubWFwKGUsZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6YSsiIn0pKSxiPXIudmFsSG9va3NbdGhpcy50eXBlXXx8ci52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJzZXQiaW4gYiYmdm9pZCAwIT09Yi5zZXQodGhpcyxlLCJ2YWx1ZSIpfHwodGhpcy52YWx1ZT1lKSl9KTtpZihlKXJldHVybiBiPXIudmFsSG9va3NbZS50eXBlXXx8ci52YWxIb29rc1tlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJnZXQiaW4gYiYmdm9pZCAwIT09KGM9Yi5nZXQoZSwidmFsdWUiKSk/YzooYz1lLnZhbHVlLCJzdHJpbmciPT10eXBlb2YgYz9jLnJlcGxhY2UocmIsIiIpOm51bGw9PWM/IiI6Yyl9fX0pLHIuZXh0ZW5kKHt2YWxIb29rczp7b3B0aW9uOntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9ci5maW5kLmF0dHIoYSwidmFsdWUiKTtyZXR1cm4gbnVsbCE9Yj9iOnBiKHIudGV4dChhKSl9fSxzZWxlY3Q6e2dldDpmdW5jdGlvbihhKXt2YXIgYixjLGQsZT1hLm9wdGlvbnMsZj1hLnNlbGVjdGVkSW5kZXgsZz0ic2VsZWN0LW9uZSI9PT1hLnR5cGUsaD1nP251bGw6W10saT1nP2YrMTplLmxlbmd0aDtmb3IoZD1mPDA/aTpnP2Y6MDtkPGk7ZCsrKWlmKGM9ZVtkXSwoYy5zZWxlY3RlZHx8ZD09PWYpJiYhYy5kaXNhYmxlZCYmKCFjLnBhcmVudE5vZGUuZGlzYWJsZWR8fCFCKGMucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKGI9cihjKS52YWwoKSxnKXJldHVybiBiO2gucHVzaChiKX1yZXR1cm4gaH0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlPWEub3B0aW9ucyxmPXIubWFrZUFycmF5KGIpLGc9ZS5sZW5ndGg7d2hpbGUoZy0tKWQ9ZVtnXSwoZC5zZWxlY3RlZD1yLmluQXJyYXkoci52YWxIb29rcy5vcHRpb24uZ2V0KGQpLGYpPi0xKSYmKGM9ITApO3JldHVybiBjfHwoYS5zZWxlY3RlZEluZGV4PS0xKSxmfX19fSksci5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7ci52YWxIb29rc1t0aGlzXT17c2V0OmZ1bmN0aW9uKGEsYil7aWYoQXJyYXkuaXNBcnJheShiKSlyZXR1cm4gYS5jaGVja2VkPXIuaW5BcnJheShyKGEpLnZhbCgpLGIpPi0xfX0sby5jaGVja09ufHwoci52YWxIb29rc1t0aGlzXS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PT1hLmdldEF0dHJpYnV0ZSgidmFsdWUiKT8ib24iOmEudmFsdWV9KX0pO3ZhciBzYj0vXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC87ci5leHRlbmQoci5ldmVudCx7dHJpZ2dlcjpmdW5jdGlvbihiLGMsZSxmKXt2YXIgZyxoLGksaixrLG0sbixvPVtlfHxkXSxwPWwuY2FsbChiLCJ0eXBlIik/Yi50eXBlOmIscT1sLmNhbGwoYiwibmFtZXNwYWNlIik/Yi5uYW1lc3BhY2Uuc3BsaXQoIi4iKTpbXTtpZihoPWk9ZT1lfHxkLDMhPT1lLm5vZGVUeXBlJiY4IT09ZS5ub2RlVHlwZSYmIXNiLnRlc3QocCtyLmV2ZW50LnRyaWdnZXJlZCkmJihwLmluZGV4T2YoIi4iKT4tMSYmKHE9cC5zcGxpdCgiLiIpLHA9cS5zaGlmdCgpLHEuc29ydCgpKSxrPXAuaW5kZXhPZigiOiIpPDAmJiJvbiIrcCxiPWJbci5leHBhbmRvXT9iOm5ldyByLkV2ZW50KHAsIm9iamVjdCI9PXR5cGVvZiBiJiZiKSxiLmlzVHJpZ2dlcj1mPzI6MyxiLm5hbWVzcGFjZT1xLmpvaW4oIi4iKSxiLnJuYW1lc3BhY2U9Yi5uYW1lc3BhY2U/bmV3IFJlZ0V4cCgiKF58XFwuKSIrcS5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCkiKTpudWxsLGIucmVzdWx0PXZvaWQgMCxiLnRhcmdldHx8KGIudGFyZ2V0PWUpLGM9bnVsbD09Yz9bYl06ci5tYWtlQXJyYXkoYyxbYl0pLG49ci5ldmVudC5zcGVjaWFsW3BdfHx7fSxmfHwhbi50cmlnZ2VyfHxuLnRyaWdnZXIuYXBwbHkoZSxjKSE9PSExKSl7aWYoIWYmJiFuLm5vQnViYmxlJiYhci5pc1dpbmRvdyhlKSl7Zm9yKGo9bi5kZWxlZ2F0ZVR5cGV8fHAsc2IudGVzdChqK3ApfHwoaD1oLnBhcmVudE5vZGUpO2g7aD1oLnBhcmVudE5vZGUpby5wdXNoKGgpLGk9aDtpPT09KGUub3duZXJEb2N1bWVudHx8ZCkmJm8ucHVzaChpLmRlZmF1bHRWaWV3fHxpLnBhcmVudFdpbmRvd3x8YSl9Zz0wO3doaWxlKChoPW9bZysrXSkmJiFiLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpYi50eXBlPWc+MT9qOm4uYmluZFR5cGV8fHAsbT0oVy5nZXQoaCwiZXZlbnRzIil8fHt9KVtiLnR5cGVdJiZXLmdldChoLCJoYW5kbGUiKSxtJiZtLmFwcGx5KGgsYyksbT1rJiZoW2tdLG0mJm0uYXBwbHkmJlUoaCkmJihiLnJlc3VsdD1tLmFwcGx5KGgsYyksYi5yZXN1bHQ9PT0hMSYmYi5wcmV2ZW50RGVmYXVsdCgpKTtyZXR1cm4gYi50eXBlPXAsZnx8Yi5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8bi5fZGVmYXVsdCYmbi5fZGVmYXVsdC5hcHBseShvLnBvcCgpLGMpIT09ITF8fCFVKGUpfHxrJiZyLmlzRnVuY3Rpb24oZVtwXSkmJiFyLmlzV2luZG93KGUpJiYoaT1lW2tdLGkmJihlW2tdPW51bGwpLHIuZXZlbnQudHJpZ2dlcmVkPXAsZVtwXSgpLHIuZXZlbnQudHJpZ2dlcmVkPXZvaWQgMCxpJiYoZVtrXT1pKSksYi5yZXN1bHR9fSxzaW11bGF0ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9ci5leHRlbmQobmV3IHIuRXZlbnQsYyx7dHlwZTphLGlzU2ltdWxhdGVkOiEwfSk7ci5ldmVudC50cmlnZ2VyKGQsbnVsbCxiKX19KSxyLmZuLmV4dGVuZCh7dHJpZ2dlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtyLmV2ZW50LnRyaWdnZXIoYSxiLHRoaXMpfSl9LHRyaWdnZXJIYW5kbGVyOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpc1swXTtpZihjKXJldHVybiByLmV2ZW50LnRyaWdnZXIoYSxiLGMsITApfX0pLHIuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IHJlc2l6ZSBzY3JvbGwgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe3IuZm5bYl09ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMub24oYixudWxsLGEsYyk6dGhpcy50cmlnZ2VyKGIpfX0pLHIuZm4uZXh0ZW5kKHtob3ZlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoYSkubW91c2VsZWF2ZShifHxhKX19KSxvLmZvY3VzaW49Im9uZm9jdXNpbiJpbiBhLG8uZm9jdXNpbnx8ci5lYWNoKHtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPWZ1bmN0aW9uKGEpe3IuZXZlbnQuc2ltdWxhdGUoYixhLnRhcmdldCxyLmV2ZW50LmZpeChhKSl9O3IuZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsZT1XLmFjY2VzcyhkLGIpO2V8fGQuYWRkRXZlbnRMaXN0ZW5lcihhLGMsITApLFcuYWNjZXNzKGQsYiwoZXx8MCkrMSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5vd25lckRvY3VtZW50fHx0aGlzLGU9Vy5hY2Nlc3MoZCxiKS0xO2U/Vy5hY2Nlc3MoZCxiLGUpOihkLnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxjLCEwKSxXLnJlbW92ZShkLGIpKX19fSk7dmFyIHRiPWEubG9jYXRpb24sdWI9ci5ub3coKSx2Yj0vXD8vO3IucGFyc2VYTUw9ZnVuY3Rpb24oYil7dmFyIGM7aWYoIWJ8fCJzdHJpbmciIT10eXBlb2YgYilyZXR1cm4gbnVsbDt0cnl7Yz0obmV3IGEuRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcoYiwidGV4dC94bWwiKX1jYXRjaChkKXtjPXZvaWQgMH1yZXR1cm4gYyYmIWMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInBhcnNlcmVycm9yIikubGVuZ3RofHxyLmVycm9yKCJJbnZhbGlkIFhNTDogIitiKSxjfTt2YXIgd2I9L1xbXF0kLyx4Yj0vXHI/XG4vZyx5Yj0vXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksemI9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pO2Z1bmN0aW9uIEFiKGEsYixjLGQpe3ZhciBlO2lmKEFycmF5LmlzQXJyYXkoYikpci5lYWNoKGIsZnVuY3Rpb24oYixlKXtjfHx3Yi50ZXN0KGEpP2QoYSxlKTpBYihhKyJbIisoIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT1lP2I6IiIpKyJdIixlLGMsZCl9KTtlbHNlIGlmKGN8fCJvYmplY3QiIT09ci50eXBlKGIpKWQoYSxiKTtlbHNlIGZvcihlIGluIGIpQWIoYSsiWyIrZSsiXSIsYltlXSxjLGQpfXIucGFyYW09ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9ZnVuY3Rpb24oYSxiKXt2YXIgYz1yLmlzRnVuY3Rpb24oYik/YigpOmI7ZFtkLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGEpKyI9IitlbmNvZGVVUklDb21wb25lbnQobnVsbD09Yz8iIjpjKX07aWYoQXJyYXkuaXNBcnJheShhKXx8YS5qcXVlcnkmJiFyLmlzUGxhaW5PYmplY3QoYSkpci5lYWNoKGEsZnVuY3Rpb24oKXtlKHRoaXMubmFtZSx0aGlzLnZhbHVlKX0pO2Vsc2UgZm9yKGMgaW4gYSlBYihjLGFbY10sYixlKTtyZXR1cm4gZC5qb2luKCImIil9LHIuZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gci5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPXIucHJvcCh0aGlzLCJlbGVtZW50cyIpO3JldHVybiBhP3IubWFrZUFycmF5KGEpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgYT10aGlzLnR5cGU7cmV0dXJuIHRoaXMubmFtZSYmIXIodGhpcykuaXMoIjpkaXNhYmxlZCIpJiZ6Yi50ZXN0KHRoaXMubm9kZU5hbWUpJiYheWIudGVzdChhKSYmKHRoaXMuY2hlY2tlZHx8IWphLnRlc3QoYSkpfSkubWFwKGZ1bmN0aW9uKGEsYil7dmFyIGM9cih0aGlzKS52YWwoKTtyZXR1cm4gbnVsbD09Yz9udWxsOkFycmF5LmlzQXJyYXkoYyk/ci5tYXAoYyxmdW5jdGlvbihhKXtyZXR1cm57bmFtZTpiLm5hbWUsdmFsdWU6YS5yZXBsYWNlKHhiLCJcclxuIil9fSk6e25hbWU6Yi5uYW1lLHZhbHVlOmMucmVwbGFjZSh4YiwiXHJcbiIpfX0pLmdldCgpfX0pO3ZhciBCYj0vJTIwL2csQ2I9LyMuKiQvLERiPS8oWz8mXSlfPVteJl0qLyxFYj0vXiguKj8pOlsgXHRdKihbXlxyXG5dKikkL2dtLEZiPS9eKD86YWJvdXR8YXBwfGFwcC1zdG9yYWdlfC4rLWV4dGVuc2lvbnxmaWxlfHJlc3x3aWRnZXQpOiQvLEdiPS9eKD86R0VUfEhFQUQpJC8sSGI9L15cL1wvLyxJYj17fSxKYj17fSxLYj0iKi8iLmNvbmNhdCgiKiIpLExiPWQuY3JlYXRlRWxlbWVudCgiYSIpO0xiLmhyZWY9dGIuaHJlZjtmdW5jdGlvbiBNYihhKXtyZXR1cm4gZnVuY3Rpb24oYixjKXsic3RyaW5nIiE9dHlwZW9mIGImJihjPWIsYj0iKiIpO3ZhciBkLGU9MCxmPWIudG9Mb3dlckNhc2UoKS5tYXRjaChMKXx8W107aWYoci5pc0Z1bmN0aW9uKGMpKXdoaWxlKGQ9ZltlKytdKSIrIj09PWRbMF0/KGQ9ZC5zbGljZSgxKXx8IioiLChhW2RdPWFbZF18fFtdKS51bnNoaWZ0KGMpKTooYVtkXT1hW2RdfHxbXSkucHVzaChjKX19ZnVuY3Rpb24gTmIoYSxiLGMsZCl7dmFyIGU9e30sZj1hPT09SmI7ZnVuY3Rpb24gZyhoKXt2YXIgaTtyZXR1cm4gZVtoXT0hMCxyLmVhY2goYVtoXXx8W10sZnVuY3Rpb24oYSxoKXt2YXIgaj1oKGIsYyxkKTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGp8fGZ8fGVbal0/Zj8hKGk9aik6dm9pZCAwOihiLmRhdGFUeXBlcy51bnNoaWZ0KGopLGcoaiksITEpfSksaX1yZXR1cm4gZyhiLmRhdGFUeXBlc1swXSl8fCFlWyIqIl0mJmcoIioiKX1mdW5jdGlvbiBPYihhLGIpe3ZhciBjLGQsZT1yLmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9uc3x8e307Zm9yKGMgaW4gYil2b2lkIDAhPT1iW2NdJiYoKGVbY10/YTpkfHwoZD17fSkpW2NdPWJbY10pO3JldHVybiBkJiZyLmV4dGVuZCghMCxhLGQpLGF9ZnVuY3Rpb24gUGIoYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5jb250ZW50cyxpPWEuZGF0YVR5cGVzO3doaWxlKCIqIj09PWlbMF0paS5zaGlmdCgpLHZvaWQgMD09PWQmJihkPWEubWltZVR5cGV8fGIuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihkKWZvcihlIGluIGgpaWYoaFtlXSYmaFtlXS50ZXN0KGQpKXtpLnVuc2hpZnQoZSk7YnJlYWt9aWYoaVswXWluIGMpZj1pWzBdO2Vsc2V7Zm9yKGUgaW4gYyl7aWYoIWlbMF18fGEuY29udmVydGVyc1tlKyIgIitpWzBdXSl7Zj1lO2JyZWFrfWd8fChnPWUpfWY9Znx8Z31pZihmKXJldHVybiBmIT09aVswXSYmaS51bnNoaWZ0KGYpLGNbZl19ZnVuY3Rpb24gUWIoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqPXt9LGs9YS5kYXRhVHlwZXMuc2xpY2UoKTtpZihrWzFdKWZvcihnIGluIGEuY29udmVydGVycylqW2cudG9Mb3dlckNhc2UoKV09YS5jb252ZXJ0ZXJzW2ddO2Y9ay5zaGlmdCgpO3doaWxlKGYpaWYoYS5yZXNwb25zZUZpZWxkc1tmXSYmKGNbYS5yZXNwb25zZUZpZWxkc1tmXV09YiksIWkmJmQmJmEuZGF0YUZpbHRlciYmKGI9YS5kYXRhRmlsdGVyKGIsYS5kYXRhVHlwZSkpLGk9ZixmPWsuc2hpZnQoKSlpZigiKiI9PT1mKWY9aTtlbHNlIGlmKCIqIiE9PWkmJmkhPT1mKXtpZihnPWpbaSsiICIrZl18fGpbIiogIitmXSwhZylmb3IoZSBpbiBqKWlmKGg9ZS5zcGxpdCgiICIpLGhbMV09PT1mJiYoZz1qW2krIiAiK2hbMF1dfHxqWyIqICIraFswXV0pKXtnPT09ITA/Zz1qW2VdOmpbZV0hPT0hMCYmKGY9aFswXSxrLnVuc2hpZnQoaFsxXSkpO2JyZWFrfWlmKGchPT0hMClpZihnJiZhWyJ0aHJvd3MiXSliPWcoYik7ZWxzZSB0cnl7Yj1nKGIpfWNhdGNoKGwpe3JldHVybntzdGF0ZToicGFyc2VyZXJyb3IiLGVycm9yOmc/bDoiTm8gY29udmVyc2lvbiBmcm9tICIraSsiIHRvICIrZn19fXJldHVybntzdGF0ZToic3VjY2VzcyIsZGF0YTpifX1yLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6dGIuaHJlZix0eXBlOiJHRVQiLGlzTG9jYWw6RmIudGVzdCh0Yi5wcm90b2NvbCksZ2xvYmFsOiEwLHByb2Nlc3NEYXRhOiEwLGFzeW5jOiEwLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgiLGFjY2VwdHM6eyIqIjpLYix0ZXh0OiJ0ZXh0L3BsYWluIixodG1sOiJ0ZXh0L2h0bWwiLHhtbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0In0sY29udGVudHM6e3htbDovXGJ4bWxcYi8saHRtbDovXGJodG1sLyxqc29uOi9cYmpzb25cYi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQiLGpzb246InJlc3BvbnNlSlNPTiJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjpKU09OLnBhcnNlLCJ0ZXh0IHhtbCI6ci5wYXJzZVhNTH0sZmxhdE9wdGlvbnM6e3VybDohMCxjb250ZXh0OiEwfX0sYWpheFNldHVwOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/T2IoT2IoYSxyLmFqYXhTZXR0aW5ncyksYik6T2Ioci5hamF4U2V0dGluZ3MsYSl9LGFqYXhQcmVmaWx0ZXI6TWIoSWIpLGFqYXhUcmFuc3BvcnQ6TWIoSmIpLGFqYXg6ZnVuY3Rpb24oYixjKXsib2JqZWN0Ij09dHlwZW9mIGImJihjPWIsYj12b2lkIDApLGM9Y3x8e307dmFyIGUsZixnLGgsaSxqLGssbCxtLG4sbz1yLmFqYXhTZXR1cCh7fSxjKSxwPW8uY29udGV4dHx8byxxPW8uY29udGV4dCYmKHAubm9kZVR5cGV8fHAuanF1ZXJ5KT9yKHApOnIuZXZlbnQscz1yLkRlZmVycmVkKCksdD1yLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSx1PW8uc3RhdHVzQ29kZXx8e30sdj17fSx3PXt9LHg9ImNhbmNlbGVkIix5PXtyZWFkeVN0YXRlOjAsZ2V0UmVzcG9uc2VIZWFkZXI6ZnVuY3Rpb24oYSl7dmFyIGI7aWYoayl7aWYoIWgpe2g9e307d2hpbGUoYj1FYi5leGVjKGcpKWhbYlsxXS50b0xvd2VyQ2FzZSgpXT1iWzJdfWI9aFthLnRvTG93ZXJDYXNlKCldfXJldHVybiBudWxsPT1iP251bGw6Yn0sZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIGs/ZzpudWxsfSxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIG51bGw9PWsmJihhPXdbYS50b0xvd2VyQ2FzZSgpXT13W2EudG9Mb3dlckNhc2UoKV18fGEsdlthXT1iKSx0aGlzfSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1rJiYoby5taW1lVHlwZT1hKSx0aGlzfSxzdGF0dXNDb2RlOmZ1bmN0aW9uKGEpe3ZhciBiO2lmKGEpaWYoayl5LmFsd2F5cyhhW3kuc3RhdHVzXSk7ZWxzZSBmb3IoYiBpbiBhKXVbYl09W3VbYl0sYVtiXV07cmV0dXJuIHRoaXN9LGFib3J0OmZ1bmN0aW9uKGEpe3ZhciBiPWF8fHg7cmV0dXJuIGUmJmUuYWJvcnQoYiksQSgwLGIpLHRoaXN9fTtpZihzLnByb21pc2UoeSksby51cmw9KChifHxvLnVybHx8dGIuaHJlZikrIiIpLnJlcGxhY2UoSGIsdGIucHJvdG9jb2wrIi8vIiksby50eXBlPWMubWV0aG9kfHxjLnR5cGV8fG8ubWV0aG9kfHxvLnR5cGUsby5kYXRhVHlwZXM9KG8uZGF0YVR5cGV8fCIqIikudG9Mb3dlckNhc2UoKS5tYXRjaChMKXx8WyIiXSxudWxsPT1vLmNyb3NzRG9tYWluKXtqPWQuY3JlYXRlRWxlbWVudCgiYSIpO3RyeXtqLmhyZWY9by51cmwsai5ocmVmPWouaHJlZixvLmNyb3NzRG9tYWluPUxiLnByb3RvY29sKyIvLyIrTGIuaG9zdCE9ai5wcm90b2NvbCsiLy8iK2ouaG9zdH1jYXRjaCh6KXtvLmNyb3NzRG9tYWluPSEwfX1pZihvLmRhdGEmJm8ucHJvY2Vzc0RhdGEmJiJzdHJpbmciIT10eXBlb2Ygby5kYXRhJiYoby5kYXRhPXIucGFyYW0oby5kYXRhLG8udHJhZGl0aW9uYWwpKSxOYihJYixvLGMseSksaylyZXR1cm4geTtsPXIuZXZlbnQmJm8uZ2xvYmFsLGwmJjA9PT1yLmFjdGl2ZSsrJiZyLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpLG8udHlwZT1vLnR5cGUudG9VcHBlckNhc2UoKSxvLmhhc0NvbnRlbnQ9IUdiLnRlc3Qoby50eXBlKSxmPW8udXJsLnJlcGxhY2UoQ2IsIiIpLG8uaGFzQ29udGVudD9vLmRhdGEmJm8ucHJvY2Vzc0RhdGEmJjA9PT0oby5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiYoby5kYXRhPW8uZGF0YS5yZXBsYWNlKEJiLCIrIikpOihuPW8udXJsLnNsaWNlKGYubGVuZ3RoKSxvLmRhdGEmJihmKz0odmIudGVzdChmKT8iJiI6Ij8iKStvLmRhdGEsZGVsZXRlIG8uZGF0YSksby5jYWNoZT09PSExJiYoZj1mLnJlcGxhY2UoRGIsIiQxIiksbj0odmIudGVzdChmKT8iJiI6Ij8iKSsiXz0iK3ViKysgK24pLG8udXJsPWYrbiksby5pZk1vZGlmaWVkJiYoci5sYXN0TW9kaWZpZWRbZl0mJnkuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLHIubGFzdE1vZGlmaWVkW2ZdKSxyLmV0YWdbZl0mJnkuc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIsci5ldGFnW2ZdKSksKG8uZGF0YSYmby5oYXNDb250ZW50JiZvLmNvbnRlbnRUeXBlIT09ITF8fGMuY29udGVudFR5cGUpJiZ5LnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsby5jb250ZW50VHlwZSkseS5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLG8uZGF0YVR5cGVzWzBdJiZvLmFjY2VwdHNbby5kYXRhVHlwZXNbMF1dP28uYWNjZXB0c1tvLmRhdGFUeXBlc1swXV0rKCIqIiE9PW8uZGF0YVR5cGVzWzBdPyIsICIrS2IrIjsgcT0wLjAxIjoiIik6by5hY2NlcHRzWyIqIl0pO2ZvcihtIGluIG8uaGVhZGVycyl5LnNldFJlcXVlc3RIZWFkZXIobSxvLmhlYWRlcnNbbV0pO2lmKG8uYmVmb3JlU2VuZCYmKG8uYmVmb3JlU2VuZC5jYWxsKHAseSxvKT09PSExfHxrKSlyZXR1cm4geS5hYm9ydCgpO2lmKHg9ImFib3J0Iix0LmFkZChvLmNvbXBsZXRlKSx5LmRvbmUoby5zdWNjZXNzKSx5LmZhaWwoby5lcnJvciksZT1OYihKYixvLGMseSkpe2lmKHkucmVhZHlTdGF0ZT0xLGwmJnEudHJpZ2dlcigiYWpheFNlbmQiLFt5LG9dKSxrKXJldHVybiB5O28uYXN5bmMmJm8udGltZW91dD4wJiYoaT1hLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt5LmFib3J0KCJ0aW1lb3V0Iil9LG8udGltZW91dCkpO3RyeXtrPSExLGUuc2VuZCh2LEEpfWNhdGNoKHope2lmKGspdGhyb3cgejtBKC0xLHopfX1lbHNlIEEoLTEsIk5vIFRyYW5zcG9ydCIpO2Z1bmN0aW9uIEEoYixjLGQsaCl7dmFyIGosbSxuLHYsdyx4PWM7a3x8KGs9ITAsaSYmYS5jbGVhclRpbWVvdXQoaSksZT12b2lkIDAsZz1ofHwiIix5LnJlYWR5U3RhdGU9Yj4wPzQ6MCxqPWI+PTIwMCYmYjwzMDB8fDMwND09PWIsZCYmKHY9UGIobyx5LGQpKSx2PVFiKG8sdix5LGopLGo/KG8uaWZNb2RpZmllZCYmKHc9eS5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpLHcmJihyLmxhc3RNb2RpZmllZFtmXT13KSx3PXkuZ2V0UmVzcG9uc2VIZWFkZXIoImV0YWciKSx3JiYoci5ldGFnW2ZdPXcpKSwyMDQ9PT1ifHwiSEVBRCI9PT1vLnR5cGU/eD0ibm9jb250ZW50IjozMDQ9PT1iP3g9Im5vdG1vZGlmaWVkIjooeD12LnN0YXRlLG09di5kYXRhLG49di5lcnJvcixqPSFuKSk6KG49eCwhYiYmeHx8KHg9ImVycm9yIixiPDAmJihiPTApKSkseS5zdGF0dXM9Yix5LnN0YXR1c1RleHQ9KGN8fHgpKyIiLGo/cy5yZXNvbHZlV2l0aChwLFttLHgseV0pOnMucmVqZWN0V2l0aChwLFt5LHgsbl0pLHkuc3RhdHVzQ29kZSh1KSx1PXZvaWQgMCxsJiZxLnRyaWdnZXIoaj8iYWpheFN1Y2Nlc3MiOiJhamF4RXJyb3IiLFt5LG8saj9tOm5dKSx0LmZpcmVXaXRoKHAsW3kseF0pLGwmJihxLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW3ksb10pLC0tci5hY3RpdmV8fHIuZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSkpfXJldHVybiB5fSxnZXRKU09OOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gci5nZXQoYSxiLGMsImpzb24iKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHIuZ2V0KGEsdm9pZCAwLGIsInNjcmlwdCIpfX0pLHIuZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihhLGIpe3JbYl09ZnVuY3Rpb24oYSxjLGQsZSl7cmV0dXJuIHIuaXNGdW5jdGlvbihjKSYmKGU9ZXx8ZCxkPWMsYz12b2lkIDApLHIuYWpheChyLmV4dGVuZCh7dXJsOmEsdHlwZTpiLGRhdGFUeXBlOmUsZGF0YTpjLHN1Y2Nlc3M6ZH0sci5pc1BsYWluT2JqZWN0KGEpJiZhKSl9fSksci5fZXZhbFVybD1mdW5jdGlvbihhKXtyZXR1cm4gci5hamF4KHt1cmw6YSx0eXBlOiJHRVQiLGRhdGFUeXBlOiJzY3JpcHQiLGNhY2hlOiEwLGFzeW5jOiExLGdsb2JhbDohMSwidGhyb3dzIjohMH0pfSxyLmZuLmV4dGVuZCh7d3JhcEFsbDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4gdGhpc1swXSYmKHIuaXNGdW5jdGlvbihhKSYmKGE9YS5jYWxsKHRoaXNbMF0pKSxiPXIoYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKSx0aGlzWzBdLnBhcmVudE5vZGUmJmIuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLGIubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpczt3aGlsZShhLmZpcnN0RWxlbWVudENoaWxkKWE9YS5maXJzdEVsZW1lbnRDaGlsZDtyZXR1cm4gYX0pLmFwcGVuZCh0aGlzKSksdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKGEpe3JldHVybiByLmlzRnVuY3Rpb24oYSk/dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3IodGhpcykud3JhcElubmVyKGEuY2FsbCh0aGlzLGIpKX0pOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPXIodGhpcyksYz1iLmNvbnRlbnRzKCk7Yy5sZW5ndGg/Yy53cmFwQWxsKGEpOmIuYXBwZW5kKGEpfSl9LHdyYXA6ZnVuY3Rpb24oYSl7dmFyIGI9ci5pc0Z1bmN0aW9uKGEpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYyl7cih0aGlzKS53cmFwQWxsKGI/YS5jYWxsKHRoaXMsYyk6YSl9KX0sdW53cmFwOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnBhcmVudChhKS5ub3QoImJvZHkiKS5lYWNoKGZ1bmN0aW9uKCl7cih0aGlzKS5yZXBsYWNlV2l0aCh0aGlzLmNoaWxkTm9kZXMpfSksdGhpc319KSxyLmV4cHIucHNldWRvcy5oaWRkZW49ZnVuY3Rpb24oYSl7cmV0dXJuIXIuZXhwci5wc2V1ZG9zLnZpc2libGUoYSl9LHIuZXhwci5wc2V1ZG9zLnZpc2libGU9ZnVuY3Rpb24oYSl7cmV0dXJuISEoYS5vZmZzZXRXaWR0aHx8YS5vZmZzZXRIZWlnaHR8fGEuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpfSxyLmFqYXhTZXR0aW5ncy54aHI9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIG5ldyBhLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKGIpe319O3ZhciBSYj17MDoyMDAsMTIyMzoyMDR9LFNiPXIuYWpheFNldHRpbmdzLnhocigpO28uY29ycz0hIVNiJiYid2l0aENyZWRlbnRpYWxzImluIFNiLG8uYWpheD1TYj0hIVNiLHIuYWpheFRyYW5zcG9ydChmdW5jdGlvbihiKXt2YXIgYyxkO2lmKG8uY29yc3x8U2ImJiFiLmNyb3NzRG9tYWluKXJldHVybntzZW5kOmZ1bmN0aW9uKGUsZil7dmFyIGcsaD1iLnhocigpO2lmKGgub3BlbihiLnR5cGUsYi51cmwsYi5hc3luYyxiLnVzZXJuYW1lLGIucGFzc3dvcmQpLGIueGhyRmllbGRzKWZvcihnIGluIGIueGhyRmllbGRzKWhbZ109Yi54aHJGaWVsZHNbZ107Yi5taW1lVHlwZSYmaC5vdmVycmlkZU1pbWVUeXBlJiZoLm92ZXJyaWRlTWltZVR5cGUoYi5taW1lVHlwZSksYi5jcm9zc0RvbWFpbnx8ZVsiWC1SZXF1ZXN0ZWQtV2l0aCJdfHwoZVsiWC1SZXF1ZXN0ZWQtV2l0aCJdPSJYTUxIdHRwUmVxdWVzdCIpO2ZvcihnIGluIGUpaC5zZXRSZXF1ZXN0SGVhZGVyKGcsZVtnXSk7Yz1mdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oKXtjJiYoYz1kPWgub25sb2FkPWgub25lcnJvcj1oLm9uYWJvcnQ9aC5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCwiYWJvcnQiPT09YT9oLmFib3J0KCk6ImVycm9yIj09PWE/Im51bWJlciIhPXR5cGVvZiBoLnN0YXR1cz9mKDAsImVycm9yIik6ZihoLnN0YXR1cyxoLnN0YXR1c1RleHQpOmYoUmJbaC5zdGF0dXNdfHxoLnN0YXR1cyxoLnN0YXR1c1RleHQsInRleHQiIT09KGgucmVzcG9uc2VUeXBlfHwidGV4dCIpfHwic3RyaW5nIiE9dHlwZW9mIGgucmVzcG9uc2VUZXh0P3tiaW5hcnk6aC5yZXNwb25zZX06e3RleHQ6aC5yZXNwb25zZVRleHR9LGguZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpKX19LGgub25sb2FkPWMoKSxkPWgub25lcnJvcj1jKCJlcnJvciIpLHZvaWQgMCE9PWgub25hYm9ydD9oLm9uYWJvcnQ9ZDpoLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpezQ9PT1oLnJlYWR5U3RhdGUmJmEuc2V0VGltZW91dChmdW5jdGlvbigpe2MmJmQoKX0pfSxjPWMoImFib3J0Iik7dHJ5e2guc2VuZChiLmhhc0NvbnRlbnQmJmIuZGF0YXx8bnVsbCl9Y2F0Y2goaSl7aWYoYyl0aHJvdyBpfX0sYWJvcnQ6ZnVuY3Rpb24oKXtjJiZjKCl9fX0pLHIuYWpheFByZWZpbHRlcihmdW5jdGlvbihhKXthLmNyb3NzRG9tYWluJiYoYS5jb250ZW50cy5zY3JpcHQ9ITEpfSksci5hamF4U2V0dXAoe2FjY2VwdHM6e3NjcmlwdDoidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9lY21hc2NyaXB0LCBhcHBsaWNhdGlvbi94LWVjbWFzY3JpcHQifSxjb250ZW50czp7c2NyaXB0Oi9cYig/OmphdmF8ZWNtYSlzY3JpcHRcYi99LGNvbnZlcnRlcnM6eyJ0ZXh0IHNjcmlwdCI6ZnVuY3Rpb24oYSl7cmV0dXJuIHIuZ2xvYmFsRXZhbChhKSxhfX19KSxyLmFqYXhQcmVmaWx0ZXIoInNjcmlwdCIsZnVuY3Rpb24oYSl7dm9pZCAwPT09YS5jYWNoZSYmKGEuY2FjaGU9ITEpLGEuY3Jvc3NEb21haW4mJihhLnR5cGU9IkdFVCIpfSksci5hamF4VHJhbnNwb3J0KCJzY3JpcHQiLGZ1bmN0aW9uKGEpe2lmKGEuY3Jvc3NEb21haW4pe3ZhciBiLGM7cmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSxmKXtiPXIoIjxzY3JpcHQ+IikucHJvcCh7Y2hhcnNldDphLnNjcmlwdENoYXJzZXQsc3JjOmEudXJsfSkub24oImxvYWQgZXJyb3IiLGM9ZnVuY3Rpb24oYSl7Yi5yZW1vdmUoKSxjPW51bGwsYSYmZigiZXJyb3IiPT09YS50eXBlPzQwNDoyMDAsYS50eXBlKX0pLGQuaGVhZC5hcHBlbmRDaGlsZChiWzBdKX0sYWJvcnQ6ZnVuY3Rpb24oKXtjJiZjKCl9fX19KTt2YXIgVGI9W10sVWI9Lyg9KVw/KD89JnwkKXxcP1w/LztyLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGE9VGIucG9wKCl8fHIuZXhwYW5kbysiXyIrdWIrKztyZXR1cm4gdGhpc1thXT0hMCxhfX0pLHIuYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oYixjLGQpe3ZhciBlLGYsZyxoPWIuanNvbnAhPT0hMSYmKFViLnRlc3QoYi51cmwpPyJ1cmwiOiJzdHJpbmciPT10eXBlb2YgYi5kYXRhJiYwPT09KGIuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmVWIudGVzdChiLmRhdGEpJiYiZGF0YSIpO2lmKGh8fCJqc29ucCI9PT1iLmRhdGFUeXBlc1swXSlyZXR1cm4gZT1iLmpzb25wQ2FsbGJhY2s9ci5pc0Z1bmN0aW9uKGIuanNvbnBDYWxsYmFjayk/Yi5qc29ucENhbGxiYWNrKCk6Yi5qc29ucENhbGxiYWNrLGg/YltoXT1iW2hdLnJlcGxhY2UoVWIsIiQxIitlKTpiLmpzb25wIT09ITEmJihiLnVybCs9KHZiLnRlc3QoYi51cmwpPyImIjoiPyIpK2IuanNvbnArIj0iK2UpLGIuY29udmVydGVyc1sic2NyaXB0IGpzb24iXT1mdW5jdGlvbigpe3JldHVybiBnfHxyLmVycm9yKGUrIiB3YXMgbm90IGNhbGxlZCIpLGdbMF19LGIuZGF0YVR5cGVzWzBdPSJqc29uIixmPWFbZV0sYVtlXT1mdW5jdGlvbigpe2c9YXJndW1lbnRzfSxkLmFsd2F5cyhmdW5jdGlvbigpe3ZvaWQgMD09PWY/cihhKS5yZW1vdmVQcm9wKGUpOmFbZV09ZixiW2VdJiYoYi5qc29ucENhbGxiYWNrPWMuanNvbnBDYWxsYmFjayxUYi5wdXNoKGUpKSxnJiZyLmlzRnVuY3Rpb24oZikmJmYoZ1swXSksZz1mPXZvaWQgMH0pLCJzY3JpcHQifSksby5jcmVhdGVIVE1MRG9jdW1lbnQ9ZnVuY3Rpb24oKXt2YXIgYT1kLmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiIikuYm9keTtyZXR1cm4gYS5pbm5lckhUTUw9Ijxmb3JtPjwvZm9ybT48Zm9ybT48L2Zvcm0+IiwyPT09YS5jaGlsZE5vZGVzLmxlbmd0aH0oKSxyLnBhcnNlSFRNTD1mdW5jdGlvbihhLGIsYyl7aWYoInN0cmluZyIhPXR5cGVvZiBhKXJldHVybltdOyJib29sZWFuIj09dHlwZW9mIGImJihjPWIsYj0hMSk7dmFyIGUsZixnO3JldHVybiBifHwoby5jcmVhdGVIVE1MRG9jdW1lbnQ/KGI9ZC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpLGU9Yi5jcmVhdGVFbGVtZW50KCJiYXNlIiksZS5ocmVmPWQubG9jYXRpb24uaHJlZixiLmhlYWQuYXBwZW5kQ2hpbGQoZSkpOmI9ZCksZj1DLmV4ZWMoYSksZz0hYyYmW10sZj9bYi5jcmVhdGVFbGVtZW50KGZbMV0pXTooZj1xYShbYV0sYixnKSxnJiZnLmxlbmd0aCYmcihnKS5yZW1vdmUoKSxyLm1lcmdlKFtdLGYuY2hpbGROb2RlcykpfSxyLmZuLmxvYWQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnPXRoaXMsaD1hLmluZGV4T2YoIiAiKTtyZXR1cm4gaD4tMSYmKGQ9cGIoYS5zbGljZShoKSksYT1hLnNsaWNlKDAsaCkpLHIuaXNGdW5jdGlvbihiKT8oYz1iLGI9dm9pZCAwKTpiJiYib2JqZWN0Ij09dHlwZW9mIGImJihlPSJQT1NUIiksZy5sZW5ndGg+MCYmci5hamF4KHt1cmw6YSx0eXBlOmV8fCJHRVQiLGRhdGFUeXBlOiJodG1sIixkYXRhOmJ9KS5kb25lKGZ1bmN0aW9uKGEpe2Y9YXJndW1lbnRzLGcuaHRtbChkP3IoIjxkaXY+IikuYXBwZW5kKHIucGFyc2VIVE1MKGEpKS5maW5kKGQpOmEpfSkuYWx3YXlzKGMmJmZ1bmN0aW9uKGEsYil7Zy5lYWNoKGZ1bmN0aW9uKCl7Yy5hcHBseSh0aGlzLGZ8fFthLnJlc3BvbnNlVGV4dCxiLGFdKX0pfSksdGhpc30sci5lYWNoKFsiYWpheFN0YXJ0IiwiYWpheFN0b3AiLCJhamF4Q29tcGxldGUiLCJhamF4RXJyb3IiLCJhamF4U3VjY2VzcyIsImFqYXhTZW5kIl0sZnVuY3Rpb24oYSxiKXtyLmZuW2JdPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm9uKGIsYSl9fSksci5leHByLnBzZXVkb3MuYW5pbWF0ZWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHIuZ3JlcChyLnRpbWVycyxmdW5jdGlvbihiKXtyZXR1cm4gYT09PWIuZWxlbX0pLmxlbmd0aH0sci5vZmZzZXQ9e3NldE9mZnNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosaz1yLmNzcyhhLCJwb3NpdGlvbiIpLGw9cihhKSxtPXt9OyJzdGF0aWMiPT09ayYmKGEuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIiksaD1sLm9mZnNldCgpLGY9ci5jc3MoYSwidG9wIiksaT1yLmNzcyhhLCJsZWZ0Iiksaj0oImFic29sdXRlIj09PWt8fCJmaXhlZCI9PT1rKSYmKGYraSkuaW5kZXhPZigiYXV0byIpPi0xLGo/KGQ9bC5wb3NpdGlvbigpLGc9ZC50b3AsZT1kLmxlZnQpOihnPXBhcnNlRmxvYXQoZil8fDAsZT1wYXJzZUZsb2F0KGkpfHwwKSxyLmlzRnVuY3Rpb24oYikmJihiPWIuY2FsbChhLGMsci5leHRlbmQoe30saCkpKSxudWxsIT1iLnRvcCYmKG0udG9wPWIudG9wLWgudG9wK2cpLG51bGwhPWIubGVmdCYmKG0ubGVmdD1iLmxlZnQtaC5sZWZ0K2UpLCJ1c2luZyJpbiBiP2IudXNpbmcuY2FsbChhLG0pOmwuY3NzKG0pfX0sci5mbi5leHRlbmQoe29mZnNldDpmdW5jdGlvbihhKXtpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT1hP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3Iub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsYil9KTt2YXIgYixjLGQsZSxmPXRoaXNbMF07aWYoZilyZXR1cm4gZi5nZXRDbGllbnRSZWN0cygpLmxlbmd0aD8oZD1mLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGI9Zi5vd25lckRvY3VtZW50LGM9Yi5kb2N1bWVudEVsZW1lbnQsZT1iLmRlZmF1bHRWaWV3LHt0b3A6ZC50b3ArZS5wYWdlWU9mZnNldC1jLmNsaWVudFRvcCxsZWZ0OmQubGVmdCtlLnBhZ2VYT2Zmc2V0LWMuY2xpZW50TGVmdH0pOnt0b3A6MCxsZWZ0OjB9fSxwb3NpdGlvbjpmdW5jdGlvbigpe2lmKHRoaXNbMF0pe3ZhciBhLGIsYz10aGlzWzBdLGQ9e3RvcDowLGxlZnQ6MH07cmV0dXJuImZpeGVkIj09PXIuY3NzKGMsInBvc2l0aW9uIik/Yj1jLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOihhPXRoaXMub2Zmc2V0UGFyZW50KCksYj10aGlzLm9mZnNldCgpLEIoYVswXSwiaHRtbCIpfHwoZD1hLm9mZnNldCgpKSxkPXt0b3A6ZC50b3Arci5jc3MoYVswXSwiYm9yZGVyVG9wV2lkdGgiLCEwKSxsZWZ0OmQubGVmdCtyLmNzcyhhWzBdLCJib3JkZXJMZWZ0V2lkdGgiLCEwKX0pLHt0b3A6Yi50b3AtZC50b3Atci5jc3MoYywibWFyZ2luVG9wIiwhMCksbGVmdDpiLmxlZnQtZC5sZWZ0LXIuY3NzKGMsIm1hcmdpbkxlZnQiLCEwKX19fSxvZmZzZXRQYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9mZnNldFBhcmVudDt3aGlsZShhJiYic3RhdGljIj09PXIuY3NzKGEsInBvc2l0aW9uIikpYT1hLm9mZnNldFBhcmVudDtyZXR1cm4gYXx8cmF9KX19KSxyLmVhY2goe3Njcm9sbExlZnQ6InBhZ2VYT2Zmc2V0IixzY3JvbGxUb3A6InBhZ2VZT2Zmc2V0In0sZnVuY3Rpb24oYSxiKXt2YXIgYz0icGFnZVlPZmZzZXQiPT09YjtyLmZuW2FdPWZ1bmN0aW9uKGQpe3JldHVybiBUKHRoaXMsZnVuY3Rpb24oYSxkLGUpe3ZhciBmO3JldHVybiByLmlzV2luZG93KGEpP2Y9YTo5PT09YS5ub2RlVHlwZSYmKGY9YS5kZWZhdWx0Vmlldyksdm9pZCAwPT09ZT9mP2ZbYl06YVtkXTp2b2lkKGY/Zi5zY3JvbGxUbyhjP2YucGFnZVhPZmZzZXQ6ZSxjP2U6Zi5wYWdlWU9mZnNldCk6YVtkXT1lKX0sYSxkLGFyZ3VtZW50cy5sZW5ndGgpfX0pLHIuZWFjaChbInRvcCIsImxlZnQiXSxmdW5jdGlvbihhLGIpe3IuY3NzSG9va3NbYl09UGEoby5waXhlbFBvc2l0aW9uLGZ1bmN0aW9uKGEsYyl7aWYoYylyZXR1cm4gYz1PYShhLGIpLE1hLnRlc3QoYyk/cihhKS5wb3NpdGlvbigpW2JdKyJweCI6Y30pfSksci5lYWNoKHtIZWlnaHQ6ImhlaWdodCIsV2lkdGg6IndpZHRoIn0sZnVuY3Rpb24oYSxiKXtyLmVhY2goe3BhZGRpbmc6ImlubmVyIithLGNvbnRlbnQ6YiwiIjoib3V0ZXIiK2F9LGZ1bmN0aW9uKGMsZCl7ci5mbltkXT1mdW5jdGlvbihlLGYpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGgmJihjfHwiYm9vbGVhbiIhPXR5cGVvZiBlKSxoPWN8fChlPT09ITB8fGY9PT0hMD8ibWFyZ2luIjoiYm9yZGVyIik7cmV0dXJuIFQodGhpcyxmdW5jdGlvbihiLGMsZSl7dmFyIGY7cmV0dXJuIHIuaXNXaW5kb3coYik/MD09PWQuaW5kZXhPZigib3V0ZXIiKT9iWyJpbm5lciIrYV06Yi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrYV06OT09PWIubm9kZVR5cGU/KGY9Yi5kb2N1bWVudEVsZW1lbnQsTWF0aC5tYXgoYi5ib2R5WyJzY3JvbGwiK2FdLGZbInNjcm9sbCIrYV0sYi5ib2R5WyJvZmZzZXQiK2FdLGZbIm9mZnNldCIrYV0sZlsiY2xpZW50IithXSkpOnZvaWQgMD09PWU/ci5jc3MoYixjLGgpOnIuc3R5bGUoYixjLGUsaCl9LGIsZz9lOnZvaWQgMCxnKX19KX0pLHIuZm4uZXh0ZW5kKHtiaW5kOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy5vbihhLG51bGwsYixjKX0sdW5iaW5kOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMub2ZmKGEsbnVsbCxiKX0sZGVsZWdhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMub24oYixhLGMsZCl9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLm9mZihhLCIqKiIpOnRoaXMub2ZmKGIsYXx8IioqIixjKX19KSxyLmhvbGRSZWFkeT1mdW5jdGlvbihhKXthP3IucmVhZHlXYWl0Kys6ci5yZWFkeSghMCl9LHIuaXNBcnJheT1BcnJheS5pc0FycmF5LHIucGFyc2VKU09OPUpTT04ucGFyc2Usci5ub2RlTmFtZT1CLCJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQmJmRlZmluZSgianF1ZXJ5IixbXSxmdW5jdGlvbigpe3JldHVybiByfSk7dmFyIFZiPWEualF1ZXJ5LFdiPWEuJDtyZXR1cm4gci5ub0NvbmZsaWN0PWZ1bmN0aW9uKGIpe3JldHVybiBhLiQ9PT1yJiYoYS4kPVdiKSxiJiZhLmpRdWVyeT09PXImJihhLmpRdWVyeT1WYikscn0sYnx8KGEualF1ZXJ5PWEuJD1yKSxyfSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/lib/moment.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ly8hIG1vbWVudC5qcwovLyEgdmVyc2lvbiA6IDIuMTcuMQovLyEgYXV0aG9ycyA6IFRpbSBXb29kLCBJc2tyZW4gQ2hlcm5ldiwgTW9tZW50LmpzIGNvbnRyaWJ1dG9ycwovLyEgbGljZW5zZSA6IE1JVAovLyEgbW9tZW50anMuY29tCiFmdW5jdGlvbihhLGIpeyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGU/bW9kdWxlLmV4cG9ydHM9YigpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKGIpOmEubW9tZW50PWIoKX0odGhpcyxmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBhKCl7cmV0dXJuIG9kLmFwcGx5KG51bGwsYXJndW1lbnRzKX0KLy8gVGhpcyBpcyBkb25lIHRvIHJlZ2lzdGVyIHRoZSBtZXRob2QgY2FsbGVkIHdpdGggbW9tZW50KCkKLy8gd2l0aG91dCBjcmVhdGluZyBjaXJjdWxhciBkZXBlbmRlbmNpZXMuCmZ1bmN0aW9uIGIoYSl7b2Q9YX1mdW5jdGlvbiBjKGEpe3JldHVybiBhIGluc3RhbmNlb2YgQXJyYXl8fCJbb2JqZWN0IEFycmF5XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSl9ZnVuY3Rpb24gZChhKXsKLy8gSUU4IHdpbGwgdHJlYXQgdW5kZWZpbmVkIGFuZCBudWxsIGFzIG9iamVjdCBpZiBpdCB3YXNuJ3QgZm9yCi8vIGlucHV0ICE9IG51bGwKcmV0dXJuIG51bGwhPWEmJiJbb2JqZWN0IE9iamVjdF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpfWZ1bmN0aW9uIGUoYSl7dmFyIGI7Zm9yKGIgaW4gYSkKLy8gZXZlbiBpZiBpdHMgbm90IG93biBwcm9wZXJ0eSBJJ2Qgc3RpbGwgY2FsbCBpdCBub24tZW1wdHkKcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gZihhKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGF8fCJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpfWZ1bmN0aW9uIGcoYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBEYXRlfHwiW29iamVjdCBEYXRlXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSl9ZnVuY3Rpb24gaChhLGIpe3ZhciBjLGQ9W107Zm9yKGM9MDtjPGEubGVuZ3RoOysrYylkLnB1c2goYihhW2NdLGMpKTtyZXR1cm4gZH1mdW5jdGlvbiBpKGEsYil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGIpfWZ1bmN0aW9uIGooYSxiKXtmb3IodmFyIGMgaW4gYilpKGIsYykmJihhW2NdPWJbY10pO3JldHVybiBpKGIsInRvU3RyaW5nIikmJihhLnRvU3RyaW5nPWIudG9TdHJpbmcpLGkoYiwidmFsdWVPZiIpJiYoYS52YWx1ZU9mPWIudmFsdWVPZiksYX1mdW5jdGlvbiBrKGEsYixjLGQpe3JldHVybiByYihhLGIsYyxkLCEwKS51dGMoKX1mdW5jdGlvbiBsKCl7Ci8vIFdlIG5lZWQgdG8gZGVlcCBjbG9uZSB0aGlzIG9iamVjdC4KcmV0dXJue2VtcHR5OiExLHVudXNlZFRva2VuczpbXSx1bnVzZWRJbnB1dDpbXSxvdmVyZmxvdzotMixjaGFyc0xlZnRPdmVyOjAsbnVsbElucHV0OiExLGludmFsaWRNb250aDpudWxsLGludmFsaWRGb3JtYXQ6ITEsdXNlckludmFsaWRhdGVkOiExLGlzbzohMSxwYXJzZWREYXRlUGFydHM6W10sbWVyaWRpZW06bnVsbH19ZnVuY3Rpb24gbShhKXtyZXR1cm4gbnVsbD09YS5fcGYmJihhLl9wZj1sKCkpLGEuX3BmfWZ1bmN0aW9uIG4oYSl7aWYobnVsbD09YS5faXNWYWxpZCl7dmFyIGI9bShhKSxjPXFkLmNhbGwoYi5wYXJzZWREYXRlUGFydHMsZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWF9KSxkPSFpc05hTihhLl9kLmdldFRpbWUoKSkmJmIub3ZlcmZsb3c8MCYmIWIuZW1wdHkmJiFiLmludmFsaWRNb250aCYmIWIuaW52YWxpZFdlZWtkYXkmJiFiLm51bGxJbnB1dCYmIWIuaW52YWxpZEZvcm1hdCYmIWIudXNlckludmFsaWRhdGVkJiYoIWIubWVyaWRpZW18fGIubWVyaWRpZW0mJmMpO2lmKGEuX3N0cmljdCYmKGQ9ZCYmMD09PWIuY2hhcnNMZWZ0T3ZlciYmMD09PWIudW51c2VkVG9rZW5zLmxlbmd0aCYmdm9pZCAwPT09Yi5iaWdIb3VyKSxudWxsIT1PYmplY3QuaXNGcm96ZW4mJk9iamVjdC5pc0Zyb3plbihhKSlyZXR1cm4gZDthLl9pc1ZhbGlkPWR9cmV0dXJuIGEuX2lzVmFsaWR9ZnVuY3Rpb24gbyhhKXt2YXIgYj1rKE5hTik7cmV0dXJuIG51bGwhPWE/aihtKGIpLGEpOm0oYikudXNlckludmFsaWRhdGVkPSEwLGJ9ZnVuY3Rpb24gcChhKXtyZXR1cm4gdm9pZCAwPT09YX1mdW5jdGlvbiBxKGEsYil7dmFyIGMsZCxlO2lmKHAoYi5faXNBTW9tZW50T2JqZWN0KXx8KGEuX2lzQU1vbWVudE9iamVjdD1iLl9pc0FNb21lbnRPYmplY3QpLHAoYi5faSl8fChhLl9pPWIuX2kpLHAoYi5fZil8fChhLl9mPWIuX2YpLHAoYi5fbCl8fChhLl9sPWIuX2wpLHAoYi5fc3RyaWN0KXx8KGEuX3N0cmljdD1iLl9zdHJpY3QpLHAoYi5fdHptKXx8KGEuX3R6bT1iLl90em0pLHAoYi5faXNVVEMpfHwoYS5faXNVVEM9Yi5faXNVVEMpLHAoYi5fb2Zmc2V0KXx8KGEuX29mZnNldD1iLl9vZmZzZXQpLHAoYi5fcGYpfHwoYS5fcGY9bShiKSkscChiLl9sb2NhbGUpfHwoYS5fbG9jYWxlPWIuX2xvY2FsZSkscmQubGVuZ3RoPjApZm9yKGMgaW4gcmQpZD1yZFtjXSxlPWJbZF0scChlKXx8KGFbZF09ZSk7cmV0dXJuIGF9Ci8vIE1vbWVudCBwcm90b3R5cGUgb2JqZWN0CmZ1bmN0aW9uIHIoYil7cSh0aGlzLGIpLHRoaXMuX2Q9bmV3IERhdGUobnVsbCE9Yi5fZD9iLl9kLmdldFRpbWUoKTpOYU4pLHRoaXMuaXNWYWxpZCgpfHwodGhpcy5fZD1uZXcgRGF0ZShOYU4pKSwKLy8gUHJldmVudCBpbmZpbml0ZSBsb29wIGluIGNhc2UgdXBkYXRlT2Zmc2V0IGNyZWF0ZXMgbmV3IG1vbWVudAovLyBvYmplY3RzLgpzZD09PSExJiYoc2Q9ITAsYS51cGRhdGVPZmZzZXQodGhpcyksc2Q9ITEpfWZ1bmN0aW9uIHMoYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiByfHxudWxsIT1hJiZudWxsIT1hLl9pc0FNb21lbnRPYmplY3R9ZnVuY3Rpb24gdChhKXtyZXR1cm4gYTwwP01hdGguY2VpbChhKXx8MDpNYXRoLmZsb29yKGEpfWZ1bmN0aW9uIHUoYSl7dmFyIGI9K2EsYz0wO3JldHVybiAwIT09YiYmaXNGaW5pdGUoYikmJihjPXQoYikpLGN9Ci8vIGNvbXBhcmUgdHdvIGFycmF5cywgcmV0dXJuIHRoZSBudW1iZXIgb2YgZGlmZmVyZW5jZXMKZnVuY3Rpb24gdihhLGIsYyl7dmFyIGQsZT1NYXRoLm1pbihhLmxlbmd0aCxiLmxlbmd0aCksZj1NYXRoLmFicyhhLmxlbmd0aC1iLmxlbmd0aCksZz0wO2ZvcihkPTA7ZDxlO2QrKykoYyYmYVtkXSE9PWJbZF18fCFjJiZ1KGFbZF0pIT09dShiW2RdKSkmJmcrKztyZXR1cm4gZytmfWZ1bmN0aW9uIHcoYil7YS5zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3M9PT0hMSYmInVuZGVmaW5lZCIhPXR5cGVvZiBjb25zb2xlJiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybigiRGVwcmVjYXRpb24gd2FybmluZzogIitiKX1mdW5jdGlvbiB4KGIsYyl7dmFyIGQ9ITA7cmV0dXJuIGooZnVuY3Rpb24oKXtpZihudWxsIT1hLmRlcHJlY2F0aW9uSGFuZGxlciYmYS5kZXByZWNhdGlvbkhhbmRsZXIobnVsbCxiKSxkKXtmb3IodmFyIGUsZj1bXSxnPTA7Zzxhcmd1bWVudHMubGVuZ3RoO2crKyl7aWYoZT0iIiwib2JqZWN0Ij09dHlwZW9mIGFyZ3VtZW50c1tnXSl7ZSs9IlxuWyIrZysiXSAiO2Zvcih2YXIgaCBpbiBhcmd1bWVudHNbMF0pZSs9aCsiOiAiK2FyZ3VtZW50c1swXVtoXSsiLCAiO2U9ZS5zbGljZSgwLC0yKX1lbHNlIGU9YXJndW1lbnRzW2ddO2YucHVzaChlKX13KGIrIlxuQXJndW1lbnRzOiAiK0FycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGYpLmpvaW4oIiIpKyJcbiIrKG5ldyBFcnJvcikuc3RhY2spLGQ9ITF9cmV0dXJuIGMuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxjKX1mdW5jdGlvbiB5KGIsYyl7bnVsbCE9YS5kZXByZWNhdGlvbkhhbmRsZXImJmEuZGVwcmVjYXRpb25IYW5kbGVyKGIsYyksdGRbYl18fCh3KGMpLHRkW2JdPSEwKX1mdW5jdGlvbiB6KGEpe3JldHVybiBhIGluc3RhbmNlb2YgRnVuY3Rpb258fCJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSl9ZnVuY3Rpb24gQShhKXt2YXIgYixjO2ZvcihjIGluIGEpYj1hW2NdLHooYik/dGhpc1tjXT1iOnRoaXNbIl8iK2NdPWI7dGhpcy5fY29uZmlnPWEsCi8vIExlbmllbnQgb3JkaW5hbCBwYXJzaW5nIGFjY2VwdHMganVzdCBhIG51bWJlciBpbiBhZGRpdGlvbiB0bwovLyBudW1iZXIgKyAocG9zc2libHkpIHN0dWZmIGNvbWluZyBmcm9tIF9vcmRpbmFsUGFyc2VMZW5pZW50Lgp0aGlzLl9vcmRpbmFsUGFyc2VMZW5pZW50PW5ldyBSZWdFeHAodGhpcy5fb3JkaW5hbFBhcnNlLnNvdXJjZSsifCIrL1xkezEsMn0vLnNvdXJjZSl9ZnVuY3Rpb24gQihhLGIpe3ZhciBjLGU9aih7fSxhKTtmb3IoYyBpbiBiKWkoYixjKSYmKGQoYVtjXSkmJmQoYltjXSk/KGVbY109e30saihlW2NdLGFbY10pLGooZVtjXSxiW2NdKSk6bnVsbCE9YltjXT9lW2NdPWJbY106ZGVsZXRlIGVbY10pO2ZvcihjIGluIGEpaShhLGMpJiYhaShiLGMpJiZkKGFbY10pJiYoCi8vIG1ha2Ugc3VyZSBjaGFuZ2VzIHRvIHByb3BlcnRpZXMgZG9uJ3QgbW9kaWZ5IHBhcmVudCBjb25maWcKZVtjXT1qKHt9LGVbY10pKTtyZXR1cm4gZX1mdW5jdGlvbiBDKGEpe251bGwhPWEmJnRoaXMuc2V0KGEpfWZ1bmN0aW9uIEQoYSxiLGMpe3ZhciBkPXRoaXMuX2NhbGVuZGFyW2FdfHx0aGlzLl9jYWxlbmRhci5zYW1lRWxzZTtyZXR1cm4geihkKT9kLmNhbGwoYixjKTpkfWZ1bmN0aW9uIEUoYSl7dmFyIGI9dGhpcy5fbG9uZ0RhdGVGb3JtYXRbYV0sYz10aGlzLl9sb25nRGF0ZUZvcm1hdFthLnRvVXBwZXJDYXNlKCldO3JldHVybiBifHwhYz9iOih0aGlzLl9sb25nRGF0ZUZvcm1hdFthXT1jLnJlcGxhY2UoL01NTU18TU18RER8ZGRkZC9nLGZ1bmN0aW9uKGEpe3JldHVybiBhLnNsaWNlKDEpfSksdGhpcy5fbG9uZ0RhdGVGb3JtYXRbYV0pfWZ1bmN0aW9uIEYoKXtyZXR1cm4gdGhpcy5faW52YWxpZERhdGV9ZnVuY3Rpb24gRyhhKXtyZXR1cm4gdGhpcy5fb3JkaW5hbC5yZXBsYWNlKCIlZCIsYSl9ZnVuY3Rpb24gSChhLGIsYyxkKXt2YXIgZT10aGlzLl9yZWxhdGl2ZVRpbWVbY107cmV0dXJuIHooZSk/ZShhLGIsYyxkKTplLnJlcGxhY2UoLyVkL2ksYSl9ZnVuY3Rpb24gSShhLGIpe3ZhciBjPXRoaXMuX3JlbGF0aXZlVGltZVthPjA/ImZ1dHVyZSI6InBhc3QiXTtyZXR1cm4geihjKT9jKGIpOmMucmVwbGFjZSgvJXMvaSxiKX1mdW5jdGlvbiBKKGEsYil7dmFyIGM9YS50b0xvd2VyQ2FzZSgpO0RkW2NdPURkW2MrInMiXT1EZFtiXT1hfWZ1bmN0aW9uIEsoYSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBhP0RkW2FdfHxEZFthLnRvTG93ZXJDYXNlKCldOnZvaWQgMH1mdW5jdGlvbiBMKGEpe3ZhciBiLGMsZD17fTtmb3IoYyBpbiBhKWkoYSxjKSYmKGI9SyhjKSxiJiYoZFtiXT1hW2NdKSk7cmV0dXJuIGR9ZnVuY3Rpb24gTShhLGIpe0VkW2FdPWJ9ZnVuY3Rpb24gTihhKXt2YXIgYj1bXTtmb3IodmFyIGMgaW4gYSliLnB1c2goe3VuaXQ6Yyxwcmlvcml0eTpFZFtjXX0pO3JldHVybiBiLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5wcmlvcml0eS1iLnByaW9yaXR5fSksYn1mdW5jdGlvbiBPKGIsYyl7cmV0dXJuIGZ1bmN0aW9uKGQpe3JldHVybiBudWxsIT1kPyhRKHRoaXMsYixkKSxhLnVwZGF0ZU9mZnNldCh0aGlzLGMpLHRoaXMpOlAodGhpcyxiKX19ZnVuY3Rpb24gUChhLGIpe3JldHVybiBhLmlzVmFsaWQoKT9hLl9kWyJnZXQiKyhhLl9pc1VUQz8iVVRDIjoiIikrYl0oKTpOYU59ZnVuY3Rpb24gUShhLGIsYyl7YS5pc1ZhbGlkKCkmJmEuX2RbInNldCIrKGEuX2lzVVRDPyJVVEMiOiIiKStiXShjKX0KLy8gTU9NRU5UUwpmdW5jdGlvbiBSKGEpe3JldHVybiBhPUsoYSkseih0aGlzW2FdKT90aGlzW2FdKCk6dGhpc31mdW5jdGlvbiBTKGEsYil7aWYoIm9iamVjdCI9PXR5cGVvZiBhKXthPUwoYSk7Zm9yKHZhciBjPU4oYSksZD0wO2Q8Yy5sZW5ndGg7ZCsrKXRoaXNbY1tkXS51bml0XShhW2NbZF0udW5pdF0pfWVsc2UgaWYoYT1LKGEpLHoodGhpc1thXSkpcmV0dXJuIHRoaXNbYV0oYik7cmV0dXJuIHRoaXN9ZnVuY3Rpb24gVChhLGIsYyl7dmFyIGQ9IiIrTWF0aC5hYnMoYSksZT1iLWQubGVuZ3RoLGY9YT49MDtyZXR1cm4oZj9jPyIrIjoiIjoiLSIpK01hdGgucG93KDEwLE1hdGgubWF4KDAsZSkpLnRvU3RyaW5nKCkuc3Vic3RyKDEpK2R9Ci8vIHRva2VuOiAgICAnTScKLy8gcGFkZGVkOiAgIFsnTU0nLCAyXQovLyBvcmRpbmFsOiAgJ01vJwovLyBjYWxsYmFjazogZnVuY3Rpb24gKCkgeyB0aGlzLm1vbnRoKCkgKyAxIH0KZnVuY3Rpb24gVShhLGIsYyxkKXt2YXIgZT1kOyJzdHJpbmciPT10eXBlb2YgZCYmKGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tkXSgpfSksYSYmKElkW2FdPWUpLGImJihJZFtiWzBdXT1mdW5jdGlvbigpe3JldHVybiBUKGUuYXBwbHkodGhpcyxhcmd1bWVudHMpLGJbMV0sYlsyXSl9KSxjJiYoSWRbY109ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkub3JkaW5hbChlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhKX0pfWZ1bmN0aW9uIFYoYSl7cmV0dXJuIGEubWF0Y2goL1xbW1xzXFNdLyk/YS5yZXBsYWNlKC9eXFt8XF0kL2csIiIpOmEucmVwbGFjZSgvXFwvZywiIil9ZnVuY3Rpb24gVyhhKXt2YXIgYixjLGQ9YS5tYXRjaChGZCk7Zm9yKGI9MCxjPWQubGVuZ3RoO2I8YztiKyspSWRbZFtiXV0/ZFtiXT1JZFtkW2JdXTpkW2JdPVYoZFtiXSk7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBlLGY9IiI7Zm9yKGU9MDtlPGM7ZSsrKWYrPWRbZV1pbnN0YW5jZW9mIEZ1bmN0aW9uP2RbZV0uY2FsbChiLGEpOmRbZV07cmV0dXJuIGZ9fQovLyBmb3JtYXQgZGF0ZSB1c2luZyBuYXRpdmUgZGF0ZSBvYmplY3QKZnVuY3Rpb24gWChhLGIpe3JldHVybiBhLmlzVmFsaWQoKT8oYj1ZKGIsYS5sb2NhbGVEYXRhKCkpLEhkW2JdPUhkW2JdfHxXKGIpLEhkW2JdKGEpKTphLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpfWZ1bmN0aW9uIFkoYSxiKXtmdW5jdGlvbiBjKGEpe3JldHVybiBiLmxvbmdEYXRlRm9ybWF0KGEpfHxhfXZhciBkPTU7Zm9yKEdkLmxhc3RJbmRleD0wO2Q+PTAmJkdkLnRlc3QoYSk7KWE9YS5yZXBsYWNlKEdkLGMpLEdkLmxhc3RJbmRleD0wLGQtPTE7cmV0dXJuIGF9ZnVuY3Rpb24gWihhLGIsYyl7JGRbYV09eihiKT9iOmZ1bmN0aW9uKGEsZCl7cmV0dXJuIGEmJmM/YzpifX1mdW5jdGlvbiAkKGEsYil7cmV0dXJuIGkoJGQsYSk/JGRbYV0oYi5fc3RyaWN0LGIuX2xvY2FsZSk6bmV3IFJlZ0V4cChfKGEpKX0KLy8gQ29kZSBmcm9tIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzU2MTQ5My9pcy10aGVyZS1hLXJlZ2V4cC1lc2NhcGUtZnVuY3Rpb24taW4tamF2YXNjcmlwdApmdW5jdGlvbiBfKGEpe3JldHVybiBhYShhLnJlcGxhY2UoIlxcIiwiIikucmVwbGFjZSgvXFwoXFspfFxcKFxdKXxcWyhbXlxdXFtdKilcXXxcXCguKS9nLGZ1bmN0aW9uKGEsYixjLGQsZSl7cmV0dXJuIGJ8fGN8fGR8fGV9KSl9ZnVuY3Rpb24gYWEoYSl7cmV0dXJuIGEucmVwbGFjZSgvWy1cL1xcXiQqKz8uKCl8W1xde31dL2csIlxcJCYiKX1mdW5jdGlvbiBiYShhLGIpe3ZhciBjLGQ9Yjtmb3IoInN0cmluZyI9PXR5cGVvZiBhJiYoYT1bYV0pLGYoYikmJihkPWZ1bmN0aW9uKGEsYyl7Y1tiXT11KGEpfSksYz0wO2M8YS5sZW5ndGg7YysrKV9kW2FbY11dPWR9ZnVuY3Rpb24gY2EoYSxiKXtiYShhLGZ1bmN0aW9uKGEsYyxkLGUpe2QuX3c9ZC5fd3x8e30sYihhLGQuX3csZCxlKX0pfWZ1bmN0aW9uIGRhKGEsYixjKXtudWxsIT1iJiZpKF9kLGEpJiZfZFthXShiLGMuX2EsYyxhKX1mdW5jdGlvbiBlYShhLGIpe3JldHVybiBuZXcgRGF0ZShEYXRlLlVUQyhhLGIrMSwwKSkuZ2V0VVRDRGF0ZSgpfWZ1bmN0aW9uIGZhKGEsYil7cmV0dXJuIGE/Yyh0aGlzLl9tb250aHMpP3RoaXMuX21vbnRoc1thLm1vbnRoKCldOnRoaXMuX21vbnRoc1sodGhpcy5fbW9udGhzLmlzRm9ybWF0fHxrZSkudGVzdChiKT8iZm9ybWF0Ijoic3RhbmRhbG9uZSJdW2EubW9udGgoKV06dGhpcy5fbW9udGhzfWZ1bmN0aW9uIGdhKGEsYil7cmV0dXJuIGE/Yyh0aGlzLl9tb250aHNTaG9ydCk/dGhpcy5fbW9udGhzU2hvcnRbYS5tb250aCgpXTp0aGlzLl9tb250aHNTaG9ydFtrZS50ZXN0KGIpPyJmb3JtYXQiOiJzdGFuZGFsb25lIl1bYS5tb250aCgpXTp0aGlzLl9tb250aHNTaG9ydH1mdW5jdGlvbiBoYShhLGIsYyl7dmFyIGQsZSxmLGc9YS50b0xvY2FsZUxvd2VyQ2FzZSgpO2lmKCF0aGlzLl9tb250aHNQYXJzZSlmb3IoCi8vIHRoaXMgaXMgbm90IHVzZWQKdGhpcy5fbW9udGhzUGFyc2U9W10sdGhpcy5fbG9uZ01vbnRoc1BhcnNlPVtdLHRoaXMuX3Nob3J0TW9udGhzUGFyc2U9W10sZD0wO2Q8MTI7KytkKWY9ayhbMmUzLGRdKSx0aGlzLl9zaG9ydE1vbnRoc1BhcnNlW2RdPXRoaXMubW9udGhzU2hvcnQoZiwiIikudG9Mb2NhbGVMb3dlckNhc2UoKSx0aGlzLl9sb25nTW9udGhzUGFyc2VbZF09dGhpcy5tb250aHMoZiwiIikudG9Mb2NhbGVMb3dlckNhc2UoKTtyZXR1cm4gYz8iTU1NIj09PWI/KGU9amUuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLGcpLGUhPT0tMT9lOm51bGwpOihlPWplLmNhbGwodGhpcy5fbG9uZ01vbnRoc1BhcnNlLGcpLGUhPT0tMT9lOm51bGwpOiJNTU0iPT09Yj8oZT1qZS5jYWxsKHRoaXMuX3Nob3J0TW9udGhzUGFyc2UsZyksZSE9PS0xP2U6KGU9amUuY2FsbCh0aGlzLl9sb25nTW9udGhzUGFyc2UsZyksZSE9PS0xP2U6bnVsbCkpOihlPWplLmNhbGwodGhpcy5fbG9uZ01vbnRoc1BhcnNlLGcpLGUhPT0tMT9lOihlPWplLmNhbGwodGhpcy5fc2hvcnRNb250aHNQYXJzZSxnKSxlIT09LTE/ZTpudWxsKSl9ZnVuY3Rpb24gaWEoYSxiLGMpe3ZhciBkLGUsZjtpZih0aGlzLl9tb250aHNQYXJzZUV4YWN0KXJldHVybiBoYS5jYWxsKHRoaXMsYSxiLGMpOwovLyBUT0RPOiBhZGQgc29ydGluZwovLyBTb3J0aW5nIG1ha2VzIHN1cmUgaWYgb25lIG1vbnRoIChvciBhYmJyKSBpcyBhIHByZWZpeCBvZiBhbm90aGVyCi8vIHNlZSBzb3J0aW5nIGluIGNvbXB1dGVNb250aHNQYXJzZQpmb3IodGhpcy5fbW9udGhzUGFyc2V8fCh0aGlzLl9tb250aHNQYXJzZT1bXSx0aGlzLl9sb25nTW9udGhzUGFyc2U9W10sdGhpcy5fc2hvcnRNb250aHNQYXJzZT1bXSksZD0wO2Q8MTI7ZCsrKXsKLy8gdGVzdCB0aGUgcmVnZXgKaWYoCi8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeQplPWsoWzJlMyxkXSksYyYmIXRoaXMuX2xvbmdNb250aHNQYXJzZVtkXSYmKHRoaXMuX2xvbmdNb250aHNQYXJzZVtkXT1uZXcgUmVnRXhwKCJeIit0aGlzLm1vbnRocyhlLCIiKS5yZXBsYWNlKCIuIiwiIikrIiQiLCJpIiksdGhpcy5fc2hvcnRNb250aHNQYXJzZVtkXT1uZXcgUmVnRXhwKCJeIit0aGlzLm1vbnRoc1Nob3J0KGUsIiIpLnJlcGxhY2UoIi4iLCIiKSsiJCIsImkiKSksY3x8dGhpcy5fbW9udGhzUGFyc2VbZF18fChmPSJeIit0aGlzLm1vbnRocyhlLCIiKSsifF4iK3RoaXMubW9udGhzU2hvcnQoZSwiIiksdGhpcy5fbW9udGhzUGFyc2VbZF09bmV3IFJlZ0V4cChmLnJlcGxhY2UoIi4iLCIiKSwiaSIpKSxjJiYiTU1NTSI9PT1iJiZ0aGlzLl9sb25nTW9udGhzUGFyc2VbZF0udGVzdChhKSlyZXR1cm4gZDtpZihjJiYiTU1NIj09PWImJnRoaXMuX3Nob3J0TW9udGhzUGFyc2VbZF0udGVzdChhKSlyZXR1cm4gZDtpZighYyYmdGhpcy5fbW9udGhzUGFyc2VbZF0udGVzdChhKSlyZXR1cm4gZH19Ci8vIE1PTUVOVFMKZnVuY3Rpb24gamEoYSxiKXt2YXIgYztpZighYS5pc1ZhbGlkKCkpCi8vIE5vIG9wCnJldHVybiBhO2lmKCJzdHJpbmciPT10eXBlb2YgYilpZigvXlxkKyQvLnRlc3QoYikpYj11KGIpO2Vsc2UKLy8gVE9ETzogQW5vdGhlciBzaWxlbnQgZmFpbHVyZT8KaWYoYj1hLmxvY2FsZURhdGEoKS5tb250aHNQYXJzZShiKSwhZihiKSlyZXR1cm4gYTtyZXR1cm4gYz1NYXRoLm1pbihhLmRhdGUoKSxlYShhLnllYXIoKSxiKSksYS5fZFsic2V0IisoYS5faXNVVEM/IlVUQyI6IiIpKyJNb250aCJdKGIsYyksYX1mdW5jdGlvbiBrYShiKXtyZXR1cm4gbnVsbCE9Yj8oamEodGhpcyxiKSxhLnVwZGF0ZU9mZnNldCh0aGlzLCEwKSx0aGlzKTpQKHRoaXMsIk1vbnRoIil9ZnVuY3Rpb24gbGEoKXtyZXR1cm4gZWEodGhpcy55ZWFyKCksdGhpcy5tb250aCgpKX1mdW5jdGlvbiBtYShhKXtyZXR1cm4gdGhpcy5fbW9udGhzUGFyc2VFeGFjdD8oaSh0aGlzLCJfbW9udGhzUmVnZXgiKXx8b2EuY2FsbCh0aGlzKSxhP3RoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXg6dGhpcy5fbW9udGhzU2hvcnRSZWdleCk6KGkodGhpcywiX21vbnRoc1Nob3J0UmVnZXgiKXx8KHRoaXMuX21vbnRoc1Nob3J0UmVnZXg9bmUpLHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXgmJmE/dGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleDp0aGlzLl9tb250aHNTaG9ydFJlZ2V4KX1mdW5jdGlvbiBuYShhKXtyZXR1cm4gdGhpcy5fbW9udGhzUGFyc2VFeGFjdD8oaSh0aGlzLCJfbW9udGhzUmVnZXgiKXx8b2EuY2FsbCh0aGlzKSxhP3RoaXMuX21vbnRoc1N0cmljdFJlZ2V4OnRoaXMuX21vbnRoc1JlZ2V4KTooaSh0aGlzLCJfbW9udGhzUmVnZXgiKXx8KHRoaXMuX21vbnRoc1JlZ2V4PW9lKSx0aGlzLl9tb250aHNTdHJpY3RSZWdleCYmYT90aGlzLl9tb250aHNTdHJpY3RSZWdleDp0aGlzLl9tb250aHNSZWdleCl9ZnVuY3Rpb24gb2EoKXtmdW5jdGlvbiBhKGEsYil7cmV0dXJuIGIubGVuZ3RoLWEubGVuZ3RofXZhciBiLGMsZD1bXSxlPVtdLGY9W107Zm9yKGI9MDtiPDEyO2IrKykKLy8gbWFrZSB0aGUgcmVnZXggaWYgd2UgZG9uJ3QgaGF2ZSBpdCBhbHJlYWR5CmM9ayhbMmUzLGJdKSxkLnB1c2godGhpcy5tb250aHNTaG9ydChjLCIiKSksZS5wdXNoKHRoaXMubW9udGhzKGMsIiIpKSxmLnB1c2godGhpcy5tb250aHMoYywiIikpLGYucHVzaCh0aGlzLm1vbnRoc1Nob3J0KGMsIiIpKTtmb3IoCi8vIFNvcnRpbmcgbWFrZXMgc3VyZSBpZiBvbmUgbW9udGggKG9yIGFiYnIpIGlzIGEgcHJlZml4IG9mIGFub3RoZXIgaXQKLy8gd2lsbCBtYXRjaCB0aGUgbG9uZ2VyIHBpZWNlLgpkLnNvcnQoYSksZS5zb3J0KGEpLGYuc29ydChhKSxiPTA7YjwxMjtiKyspZFtiXT1hYShkW2JdKSxlW2JdPWFhKGVbYl0pO2ZvcihiPTA7YjwyNDtiKyspZltiXT1hYShmW2JdKTt0aGlzLl9tb250aHNSZWdleD1uZXcgUmVnRXhwKCJeKCIrZi5qb2luKCJ8IikrIikiLCJpIiksdGhpcy5fbW9udGhzU2hvcnRSZWdleD10aGlzLl9tb250aHNSZWdleCx0aGlzLl9tb250aHNTdHJpY3RSZWdleD1uZXcgUmVnRXhwKCJeKCIrZS5qb2luKCJ8IikrIikiLCJpIiksdGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleD1uZXcgUmVnRXhwKCJeKCIrZC5qb2luKCJ8IikrIikiLCJpIil9Ci8vIEhFTFBFUlMKZnVuY3Rpb24gcGEoYSl7cmV0dXJuIHFhKGEpPzM2NjozNjV9ZnVuY3Rpb24gcWEoYSl7cmV0dXJuIGElND09PTAmJmElMTAwIT09MHx8YSU0MDA9PT0wfWZ1bmN0aW9uIHJhKCl7cmV0dXJuIHFhKHRoaXMueWVhcigpKX1mdW5jdGlvbiBzYShhLGIsYyxkLGUsZixnKXsKLy9jYW4ndCBqdXN0IGFwcGx5KCkgdG8gY3JlYXRlIGEgZGF0ZToKLy9odHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE4MTM0OC9pbnN0YW50aWF0aW5nLWEtamF2YXNjcmlwdC1vYmplY3QtYnktY2FsbGluZy1wcm90b3R5cGUtY29uc3RydWN0b3ItYXBwbHkKdmFyIGg9bmV3IERhdGUoYSxiLGMsZCxlLGYsZyk7Ci8vdGhlIGRhdGUgY29uc3RydWN0b3IgcmVtYXBzIHllYXJzIDAtOTkgdG8gMTkwMC0xOTk5CnJldHVybiBhPDEwMCYmYT49MCYmaXNGaW5pdGUoaC5nZXRGdWxsWWVhcigpKSYmaC5zZXRGdWxsWWVhcihhKSxofWZ1bmN0aW9uIHRhKGEpe3ZhciBiPW5ldyBEYXRlKERhdGUuVVRDLmFwcGx5KG51bGwsYXJndW1lbnRzKSk7Ci8vdGhlIERhdGUuVVRDIGZ1bmN0aW9uIHJlbWFwcyB5ZWFycyAwLTk5IHRvIDE5MDAtMTk5OQpyZXR1cm4gYTwxMDAmJmE+PTAmJmlzRmluaXRlKGIuZ2V0VVRDRnVsbFllYXIoKSkmJmIuc2V0VVRDRnVsbFllYXIoYSksYn0KLy8gc3RhcnQtb2YtZmlyc3Qtd2VlayAtIHN0YXJ0LW9mLXllYXIKZnVuY3Rpb24gdWEoYSxiLGMpe3Zhci8vIGZpcnN0LXdlZWsgZGF5IC0tIHdoaWNoIGphbnVhcnkgaXMgYWx3YXlzIGluIHRoZSBmaXJzdCB3ZWVrICg0IGZvciBpc28sIDEgZm9yIG90aGVyKQpkPTcrYi1jLAovLyBmaXJzdC13ZWVrIGRheSBsb2NhbCB3ZWVrZGF5IC0tIHdoaWNoIGxvY2FsIHdlZWtkYXkgaXMgZndkCmU9KDcrdGEoYSwwLGQpLmdldFVUQ0RheSgpLWIpJTc7cmV0dXJuLWUrZC0xfQovL2h0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZSNDYWxjdWxhdGluZ19hX2RhdGVfZ2l2ZW5fdGhlX3llYXIuMkNfd2Vla19udW1iZXJfYW5kX3dlZWtkYXkKZnVuY3Rpb24gdmEoYSxiLGMsZCxlKXt2YXIgZixnLGg9KDcrYy1kKSU3LGk9dWEoYSxkLGUpLGo9MSs3KihiLTEpK2graTtyZXR1cm4gajw9MD8oZj1hLTEsZz1wYShmKStqKTpqPnBhKGEpPyhmPWErMSxnPWotcGEoYSkpOihmPWEsZz1qKSx7eWVhcjpmLGRheU9mWWVhcjpnfX1mdW5jdGlvbiB3YShhLGIsYyl7dmFyIGQsZSxmPXVhKGEueWVhcigpLGIsYyksZz1NYXRoLmZsb29yKChhLmRheU9mWWVhcigpLWYtMSkvNykrMTtyZXR1cm4gZzwxPyhlPWEueWVhcigpLTEsZD1nK3hhKGUsYixjKSk6Zz54YShhLnllYXIoKSxiLGMpPyhkPWcteGEoYS55ZWFyKCksYixjKSxlPWEueWVhcigpKzEpOihlPWEueWVhcigpLGQ9Zykse3dlZWs6ZCx5ZWFyOmV9fWZ1bmN0aW9uIHhhKGEsYixjKXt2YXIgZD11YShhLGIsYyksZT11YShhKzEsYixjKTtyZXR1cm4ocGEoYSktZCtlKS83fQovLyBIRUxQRVJTCi8vIExPQ0FMRVMKZnVuY3Rpb24geWEoYSl7cmV0dXJuIHdhKGEsdGhpcy5fd2Vlay5kb3csdGhpcy5fd2Vlay5kb3kpLndlZWt9ZnVuY3Rpb24gemEoKXtyZXR1cm4gdGhpcy5fd2Vlay5kb3d9ZnVuY3Rpb24gQWEoKXtyZXR1cm4gdGhpcy5fd2Vlay5kb3l9Ci8vIE1PTUVOVFMKZnVuY3Rpb24gQmEoYSl7dmFyIGI9dGhpcy5sb2NhbGVEYXRhKCkud2Vlayh0aGlzKTtyZXR1cm4gbnVsbD09YT9iOnRoaXMuYWRkKDcqKGEtYiksImQiKX1mdW5jdGlvbiBDYShhKXt2YXIgYj13YSh0aGlzLDEsNCkud2VlaztyZXR1cm4gbnVsbD09YT9iOnRoaXMuYWRkKDcqKGEtYiksImQiKX0KLy8gSEVMUEVSUwpmdW5jdGlvbiBEYShhLGIpe3JldHVybiJzdHJpbmciIT10eXBlb2YgYT9hOmlzTmFOKGEpPyhhPWIud2Vla2RheXNQYXJzZShhKSwibnVtYmVyIj09dHlwZW9mIGE/YTpudWxsKTpwYXJzZUludChhLDEwKX1mdW5jdGlvbiBFYShhLGIpe3JldHVybiJzdHJpbmciPT10eXBlb2YgYT9iLndlZWtkYXlzUGFyc2UoYSklN3x8Nzppc05hTihhKT9udWxsOmF9ZnVuY3Rpb24gRmEoYSxiKXtyZXR1cm4gYT9jKHRoaXMuX3dlZWtkYXlzKT90aGlzLl93ZWVrZGF5c1thLmRheSgpXTp0aGlzLl93ZWVrZGF5c1t0aGlzLl93ZWVrZGF5cy5pc0Zvcm1hdC50ZXN0KGIpPyJmb3JtYXQiOiJzdGFuZGFsb25lIl1bYS5kYXkoKV06dGhpcy5fd2Vla2RheXN9ZnVuY3Rpb24gR2EoYSl7cmV0dXJuIGE/dGhpcy5fd2Vla2RheXNTaG9ydFthLmRheSgpXTp0aGlzLl93ZWVrZGF5c1Nob3J0fWZ1bmN0aW9uIEhhKGEpe3JldHVybiBhP3RoaXMuX3dlZWtkYXlzTWluW2EuZGF5KCldOnRoaXMuX3dlZWtkYXlzTWlufWZ1bmN0aW9uIElhKGEsYixjKXt2YXIgZCxlLGYsZz1hLnRvTG9jYWxlTG93ZXJDYXNlKCk7aWYoIXRoaXMuX3dlZWtkYXlzUGFyc2UpZm9yKHRoaXMuX3dlZWtkYXlzUGFyc2U9W10sdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlPVtdLHRoaXMuX21pbldlZWtkYXlzUGFyc2U9W10sZD0wO2Q8NzsrK2QpZj1rKFsyZTMsMV0pLmRheShkKSx0aGlzLl9taW5XZWVrZGF5c1BhcnNlW2RdPXRoaXMud2Vla2RheXNNaW4oZiwiIikudG9Mb2NhbGVMb3dlckNhc2UoKSx0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbZF09dGhpcy53ZWVrZGF5c1Nob3J0KGYsIiIpLnRvTG9jYWxlTG93ZXJDYXNlKCksdGhpcy5fd2Vla2RheXNQYXJzZVtkXT10aGlzLndlZWtkYXlzKGYsIiIpLnRvTG9jYWxlTG93ZXJDYXNlKCk7cmV0dXJuIGM/ImRkZGQiPT09Yj8oZT1qZS5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsZyksZSE9PS0xP2U6bnVsbCk6ImRkZCI9PT1iPyhlPWplLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLGcpLGUhPT0tMT9lOm51bGwpOihlPWplLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSxnKSxlIT09LTE/ZTpudWxsKToiZGRkZCI9PT1iPyhlPWplLmNhbGwodGhpcy5fd2Vla2RheXNQYXJzZSxnKSxlIT09LTE/ZTooZT1qZS5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSxnKSxlIT09LTE/ZTooZT1qZS5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsZyksZSE9PS0xP2U6bnVsbCkpKToiZGRkIj09PWI/KGU9amUuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UsZyksZSE9PS0xP2U6KGU9amUuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLGcpLGUhPT0tMT9lOihlPWplLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSxnKSxlIT09LTE/ZTpudWxsKSkpOihlPWplLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSxnKSxlIT09LTE/ZTooZT1qZS5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsZyksZSE9PS0xP2U6KGU9amUuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UsZyksZSE9PS0xP2U6bnVsbCkpKX1mdW5jdGlvbiBKYShhLGIsYyl7dmFyIGQsZSxmO2lmKHRoaXMuX3dlZWtkYXlzUGFyc2VFeGFjdClyZXR1cm4gSWEuY2FsbCh0aGlzLGEsYixjKTtmb3IodGhpcy5fd2Vla2RheXNQYXJzZXx8KHRoaXMuX3dlZWtkYXlzUGFyc2U9W10sdGhpcy5fbWluV2Vla2RheXNQYXJzZT1bXSx0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2U9W10sdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2U9W10pLGQ9MDtkPDc7ZCsrKXsKLy8gdGVzdCB0aGUgcmVnZXgKaWYoCi8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeQplPWsoWzJlMywxXSkuZGF5KGQpLGMmJiF0aGlzLl9mdWxsV2Vla2RheXNQYXJzZVtkXSYmKHRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW2RdPW5ldyBSZWdFeHAoIl4iK3RoaXMud2Vla2RheXMoZSwiIikucmVwbGFjZSgiLiIsIi4/IikrIiQiLCJpIiksdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW2RdPW5ldyBSZWdFeHAoIl4iK3RoaXMud2Vla2RheXNTaG9ydChlLCIiKS5yZXBsYWNlKCIuIiwiLj8iKSsiJCIsImkiKSx0aGlzLl9taW5XZWVrZGF5c1BhcnNlW2RdPW5ldyBSZWdFeHAoIl4iK3RoaXMud2Vla2RheXNNaW4oZSwiIikucmVwbGFjZSgiLiIsIi4/IikrIiQiLCJpIikpLHRoaXMuX3dlZWtkYXlzUGFyc2VbZF18fChmPSJeIit0aGlzLndlZWtkYXlzKGUsIiIpKyJ8XiIrdGhpcy53ZWVrZGF5c1Nob3J0KGUsIiIpKyJ8XiIrdGhpcy53ZWVrZGF5c01pbihlLCIiKSx0aGlzLl93ZWVrZGF5c1BhcnNlW2RdPW5ldyBSZWdFeHAoZi5yZXBsYWNlKCIuIiwiIiksImkiKSksYyYmImRkZGQiPT09YiYmdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2VbZF0udGVzdChhKSlyZXR1cm4gZDtpZihjJiYiZGRkIj09PWImJnRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZVtkXS50ZXN0KGEpKXJldHVybiBkO2lmKGMmJiJkZCI9PT1iJiZ0aGlzLl9taW5XZWVrZGF5c1BhcnNlW2RdLnRlc3QoYSkpcmV0dXJuIGQ7aWYoIWMmJnRoaXMuX3dlZWtkYXlzUGFyc2VbZF0udGVzdChhKSlyZXR1cm4gZH19Ci8vIE1PTUVOVFMKZnVuY3Rpb24gS2EoYSl7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybiBudWxsIT1hP3RoaXM6TmFOO3ZhciBiPXRoaXMuX2lzVVRDP3RoaXMuX2QuZ2V0VVRDRGF5KCk6dGhpcy5fZC5nZXREYXkoKTtyZXR1cm4gbnVsbCE9YT8oYT1EYShhLHRoaXMubG9jYWxlRGF0YSgpKSx0aGlzLmFkZChhLWIsImQiKSk6Yn1mdW5jdGlvbiBMYShhKXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIG51bGwhPWE/dGhpczpOYU47dmFyIGI9KHRoaXMuZGF5KCkrNy10aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3cpJTc7cmV0dXJuIG51bGw9PWE/Yjp0aGlzLmFkZChhLWIsImQiKX1mdW5jdGlvbiBNYShhKXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIG51bGwhPWE/dGhpczpOYU47Ci8vIGJlaGF2ZXMgdGhlIHNhbWUgYXMgbW9tZW50I2RheSBleGNlcHQKLy8gYXMgYSBnZXR0ZXIsIHJldHVybnMgNyBpbnN0ZWFkIG9mIDAgKDEtNyByYW5nZSBpbnN0ZWFkIG9mIDAtNikKLy8gYXMgYSBzZXR0ZXIsIHN1bmRheSBzaG91bGQgYmVsb25nIHRvIHRoZSBwcmV2aW91cyB3ZWVrLgppZihudWxsIT1hKXt2YXIgYj1FYShhLHRoaXMubG9jYWxlRGF0YSgpKTtyZXR1cm4gdGhpcy5kYXkodGhpcy5kYXkoKSU3P2I6Yi03KX1yZXR1cm4gdGhpcy5kYXkoKXx8N31mdW5jdGlvbiBOYShhKXtyZXR1cm4gdGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0PyhpKHRoaXMsIl93ZWVrZGF5c1JlZ2V4Iil8fFFhLmNhbGwodGhpcyksYT90aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4OnRoaXMuX3dlZWtkYXlzUmVnZXgpOihpKHRoaXMsIl93ZWVrZGF5c1JlZ2V4Iil8fCh0aGlzLl93ZWVrZGF5c1JlZ2V4PXVlKSx0aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4JiZhP3RoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNSZWdleCl9ZnVuY3Rpb24gT2EoYSl7cmV0dXJuIHRoaXMuX3dlZWtkYXlzUGFyc2VFeGFjdD8oaSh0aGlzLCJfd2Vla2RheXNSZWdleCIpfHxRYS5jYWxsKHRoaXMpLGE/dGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4OnRoaXMuX3dlZWtkYXlzU2hvcnRSZWdleCk6KGkodGhpcywiX3dlZWtkYXlzU2hvcnRSZWdleCIpfHwodGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4PXZlKSx0aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXgmJmE/dGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4OnRoaXMuX3dlZWtkYXlzU2hvcnRSZWdleCl9ZnVuY3Rpb24gUGEoYSl7cmV0dXJuIHRoaXMuX3dlZWtkYXlzUGFyc2VFeGFjdD8oaSh0aGlzLCJfd2Vla2RheXNSZWdleCIpfHxRYS5jYWxsKHRoaXMpLGE/dGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleDp0aGlzLl93ZWVrZGF5c01pblJlZ2V4KTooaSh0aGlzLCJfd2Vla2RheXNNaW5SZWdleCIpfHwodGhpcy5fd2Vla2RheXNNaW5SZWdleD13ZSksdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleCYmYT90aGlzLl93ZWVrZGF5c01pblN0cmljdFJlZ2V4OnRoaXMuX3dlZWtkYXlzTWluUmVnZXgpfWZ1bmN0aW9uIFFhKCl7ZnVuY3Rpb24gYShhLGIpe3JldHVybiBiLmxlbmd0aC1hLmxlbmd0aH12YXIgYixjLGQsZSxmLGc9W10saD1bXSxpPVtdLGo9W107Zm9yKGI9MDtiPDc7YisrKQovLyBtYWtlIHRoZSByZWdleCBpZiB3ZSBkb24ndCBoYXZlIGl0IGFscmVhZHkKYz1rKFsyZTMsMV0pLmRheShiKSxkPXRoaXMud2Vla2RheXNNaW4oYywiIiksZT10aGlzLndlZWtkYXlzU2hvcnQoYywiIiksZj10aGlzLndlZWtkYXlzKGMsIiIpLGcucHVzaChkKSxoLnB1c2goZSksaS5wdXNoKGYpLGoucHVzaChkKSxqLnB1c2goZSksai5wdXNoKGYpO2ZvcigKLy8gU29ydGluZyBtYWtlcyBzdXJlIGlmIG9uZSB3ZWVrZGF5IChvciBhYmJyKSBpcyBhIHByZWZpeCBvZiBhbm90aGVyIGl0Ci8vIHdpbGwgbWF0Y2ggdGhlIGxvbmdlciBwaWVjZS4KZy5zb3J0KGEpLGguc29ydChhKSxpLnNvcnQoYSksai5zb3J0KGEpLGI9MDtiPDc7YisrKWhbYl09YWEoaFtiXSksaVtiXT1hYShpW2JdKSxqW2JdPWFhKGpbYl0pO3RoaXMuX3dlZWtkYXlzUmVnZXg9bmV3IFJlZ0V4cCgiXigiK2ouam9pbigifCIpKyIpIiwiaSIpLHRoaXMuX3dlZWtkYXlzU2hvcnRSZWdleD10aGlzLl93ZWVrZGF5c1JlZ2V4LHRoaXMuX3dlZWtkYXlzTWluUmVnZXg9dGhpcy5fd2Vla2RheXNSZWdleCx0aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4PW5ldyBSZWdFeHAoIl4oIitpLmpvaW4oInwiKSsiKSIsImkiKSx0aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXg9bmV3IFJlZ0V4cCgiXigiK2guam9pbigifCIpKyIpIiwiaSIpLHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXg9bmV3IFJlZ0V4cCgiXigiK2cuam9pbigifCIpKyIpIiwiaSIpfQovLyBGT1JNQVRUSU5HCmZ1bmN0aW9uIFJhKCl7cmV0dXJuIHRoaXMuaG91cnMoKSUxMnx8MTJ9ZnVuY3Rpb24gU2EoKXtyZXR1cm4gdGhpcy5ob3VycygpfHwyNH1mdW5jdGlvbiBUYShhLGIpe1UoYSwwLDAsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubWVyaWRpZW0odGhpcy5ob3VycygpLHRoaXMubWludXRlcygpLGIpfSl9Ci8vIFBBUlNJTkcKZnVuY3Rpb24gVWEoYSxiKXtyZXR1cm4gYi5fbWVyaWRpZW1QYXJzZX0KLy8gTE9DQUxFUwpmdW5jdGlvbiBWYShhKXsKLy8gSUU4IFF1aXJrcyBNb2RlICYgSUU3IFN0YW5kYXJkcyBNb2RlIGRvIG5vdCBhbGxvdyBhY2Nlc3Npbmcgc3RyaW5ncyBsaWtlIGFycmF5cwovLyBVc2luZyBjaGFyQXQgc2hvdWxkIGJlIG1vcmUgY29tcGF0aWJsZS4KcmV0dXJuInAiPT09KGErIiIpLnRvTG93ZXJDYXNlKCkuY2hhckF0KDApfWZ1bmN0aW9uIFdhKGEsYixjKXtyZXR1cm4gYT4xMT9jPyJwbSI6IlBNIjpjPyJhbSI6IkFNIn1mdW5jdGlvbiBYYShhKXtyZXR1cm4gYT9hLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgiXyIsIi0iKTphfQovLyBwaWNrIHRoZSBsb2NhbGUgZnJvbSB0aGUgYXJyYXkKLy8gdHJ5IFsnZW4tYXUnLCAnZW4tZ2InXSBhcyAnZW4tYXUnLCAnZW4tZ2InLCAnZW4nLCBhcyBpbiBtb3ZlIHRocm91Z2ggdGhlIGxpc3QgdHJ5aW5nIGVhY2gKLy8gc3Vic3RyaW5nIGZyb20gbW9zdCBzcGVjaWZpYyB0byBsZWFzdCwgYnV0IG1vdmUgdG8gdGhlIG5leHQgYXJyYXkgaXRlbSBpZiBpdCdzIGEgbW9yZSBzcGVjaWZpYyB2YXJpYW50IHRoYW4gdGhlIGN1cnJlbnQgcm9vdApmdW5jdGlvbiBZYShhKXtmb3IodmFyIGIsYyxkLGUsZj0wO2Y8YS5sZW5ndGg7KXtmb3IoZT1YYShhW2ZdKS5zcGxpdCgiLSIpLGI9ZS5sZW5ndGgsYz1YYShhW2YrMV0pLGM9Yz9jLnNwbGl0KCItIik6bnVsbDtiPjA7KXtpZihkPVphKGUuc2xpY2UoMCxiKS5qb2luKCItIikpKXJldHVybiBkO2lmKGMmJmMubGVuZ3RoPj1iJiZ2KGUsYywhMCk+PWItMSkKLy90aGUgbmV4dCBhcnJheSBpdGVtIGlzIGJldHRlciB0aGFuIGEgc2hhbGxvd2VyIHN1YnN0cmluZyBvZiB0aGlzIG9uZQpicmVhaztiLS19ZisrfXJldHVybiBudWxsfWZ1bmN0aW9uIFphKGEpe3ZhciBiPW51bGw7Ci8vIFRPRE86IEZpbmQgYSBiZXR0ZXIgd2F5IHRvIHJlZ2lzdGVyIGFuZCBsb2FkIGFsbCB0aGUgbG9jYWxlcyBpbiBOb2RlCmlmKCFCZVthXSYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGUmJm1vZHVsZSYmbW9kdWxlLmV4cG9ydHMpdHJ5e2I9eGUuX2FiYnIscmVxdWlyZSgiLi9sb2NhbGUvIithKSwKLy8gYmVjYXVzZSBkZWZpbmVMb2NhbGUgY3VycmVudGx5IGFsc28gc2V0cyB0aGUgZ2xvYmFsIGxvY2FsZSwgd2UKLy8gd2FudCB0byB1bmRvIHRoYXQgZm9yIGxhenkgbG9hZGVkIGxvY2FsZXMKJGEoYil9Y2F0Y2goYSl7fXJldHVybiBCZVthXX0KLy8gVGhpcyBmdW5jdGlvbiB3aWxsIGxvYWQgbG9jYWxlIGFuZCB0aGVuIHNldCB0aGUgZ2xvYmFsIGxvY2FsZS4gIElmCi8vIG5vIGFyZ3VtZW50cyBhcmUgcGFzc2VkIGluLCBpdCB3aWxsIHNpbXBseSByZXR1cm4gdGhlIGN1cnJlbnQgZ2xvYmFsCi8vIGxvY2FsZSBrZXkuCmZ1bmN0aW9uICRhKGEsYil7dmFyIGM7Ci8vIG1vbWVudC5kdXJhdGlvbi5fbG9jYWxlID0gbW9tZW50Ll9sb2NhbGUgPSBkYXRhOwpyZXR1cm4gYSYmKGM9cChiKT9iYihhKTpfYShhLGIpLGMmJih4ZT1jKSkseGUuX2FiYnJ9ZnVuY3Rpb24gX2EoYSxiKXtpZihudWxsIT09Yil7dmFyIGM9QWU7aWYoYi5hYmJyPWEsbnVsbCE9QmVbYV0peSgiZGVmaW5lTG9jYWxlT3ZlcnJpZGUiLCJ1c2UgbW9tZW50LnVwZGF0ZUxvY2FsZShsb2NhbGVOYW1lLCBjb25maWcpIHRvIGNoYW5nZSBhbiBleGlzdGluZyBsb2NhbGUuIG1vbWVudC5kZWZpbmVMb2NhbGUobG9jYWxlTmFtZSwgY29uZmlnKSBzaG91bGQgb25seSBiZSB1c2VkIGZvciBjcmVhdGluZyBhIG5ldyBsb2NhbGUgU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvZGVmaW5lLWxvY2FsZS8gZm9yIG1vcmUgaW5mby4iKSxjPUJlW2FdLl9jb25maWc7ZWxzZSBpZihudWxsIT1iLnBhcmVudExvY2FsZSl7aWYobnVsbD09QmVbYi5wYXJlbnRMb2NhbGVdKXJldHVybiBDZVtiLnBhcmVudExvY2FsZV18fChDZVtiLnBhcmVudExvY2FsZV09W10pLENlW2IucGFyZW50TG9jYWxlXS5wdXNoKHtuYW1lOmEsY29uZmlnOmJ9KSxudWxsO2M9QmVbYi5wYXJlbnRMb2NhbGVdLl9jb25maWd9Ci8vIGJhY2t3YXJkcyBjb21wYXQgZm9yIG5vdzogYWxzbyBzZXQgdGhlIGxvY2FsZQovLyBtYWtlIHN1cmUgd2Ugc2V0IHRoZSBsb2NhbGUgQUZURVIgYWxsIGNoaWxkIGxvY2FsZXMgaGF2ZSBiZWVuCi8vIGNyZWF0ZWQsIHNvIHdlIHdvbid0IGVuZCB1cCB3aXRoIHRoZSBjaGlsZCBsb2NhbGUgc2V0LgpyZXR1cm4gQmVbYV09bmV3IEMoQihjLGIpKSxDZVthXSYmQ2VbYV0uZm9yRWFjaChmdW5jdGlvbihhKXtfYShhLm5hbWUsYS5jb25maWcpfSksJGEoYSksQmVbYV19Ci8vIHVzZWZ1bCBmb3IgdGVzdGluZwpyZXR1cm4gZGVsZXRlIEJlW2FdLG51bGx9ZnVuY3Rpb24gYWIoYSxiKXtpZihudWxsIT1iKXt2YXIgYyxkPUFlOwovLyBNRVJHRQpudWxsIT1CZVthXSYmKGQ9QmVbYV0uX2NvbmZpZyksYj1CKGQsYiksYz1uZXcgQyhiKSxjLnBhcmVudExvY2FsZT1CZVthXSxCZVthXT1jLAovLyBiYWNrd2FyZHMgY29tcGF0IGZvciBub3c6IGFsc28gc2V0IHRoZSBsb2NhbGUKJGEoYSl9ZWxzZQovLyBwYXNzIG51bGwgZm9yIGNvbmZpZyB0byB1bnVwZGF0ZSwgdXNlZnVsIGZvciB0ZXN0cwpudWxsIT1CZVthXSYmKG51bGwhPUJlW2FdLnBhcmVudExvY2FsZT9CZVthXT1CZVthXS5wYXJlbnRMb2NhbGU6bnVsbCE9QmVbYV0mJmRlbGV0ZSBCZVthXSk7cmV0dXJuIEJlW2FdfQovLyByZXR1cm5zIGxvY2FsZSBkYXRhCmZ1bmN0aW9uIGJiKGEpe3ZhciBiO2lmKGEmJmEuX2xvY2FsZSYmYS5fbG9jYWxlLl9hYmJyJiYoYT1hLl9sb2NhbGUuX2FiYnIpLCFhKXJldHVybiB4ZTtpZighYyhhKSl7aWYoCi8vc2hvcnQtY2lyY3VpdCBldmVyeXRoaW5nIGVsc2UKYj1aYShhKSlyZXR1cm4gYjthPVthXX1yZXR1cm4gWWEoYSl9ZnVuY3Rpb24gY2IoKXtyZXR1cm4gd2QoQmUpfWZ1bmN0aW9uIGRiKGEpe3ZhciBiLGM9YS5fYTtyZXR1cm4gYyYmbShhKS5vdmVyZmxvdz09PS0yJiYoYj1jW2JlXTwwfHxjW2JlXT4xMT9iZTpjW2NlXTwxfHxjW2NlXT5lYShjW2FlXSxjW2JlXSk/Y2U6Y1tkZV08MHx8Y1tkZV0+MjR8fDI0PT09Y1tkZV0mJigwIT09Y1tlZV18fDAhPT1jW2ZlXXx8MCE9PWNbZ2VdKT9kZTpjW2VlXTwwfHxjW2VlXT41OT9lZTpjW2ZlXTwwfHxjW2ZlXT41OT9mZTpjW2dlXTwwfHxjW2dlXT45OTk/Z2U6LTEsbShhKS5fb3ZlcmZsb3dEYXlPZlllYXImJihiPGFlfHxiPmNlKSYmKGI9Y2UpLG0oYSkuX292ZXJmbG93V2Vla3MmJmI9PT0tMSYmKGI9aGUpLG0oYSkuX292ZXJmbG93V2Vla2RheSYmYj09PS0xJiYoYj1pZSksbShhKS5vdmVyZmxvdz1iKSxhfQovLyBkYXRlIGZyb20gaXNvIGZvcm1hdApmdW5jdGlvbiBlYihhKXt2YXIgYixjLGQsZSxmLGcsaD1hLl9pLGk9RGUuZXhlYyhoKXx8RWUuZXhlYyhoKTtpZihpKXtmb3IobShhKS5pc289ITAsYj0wLGM9R2UubGVuZ3RoO2I8YztiKyspaWYoR2VbYl1bMV0uZXhlYyhpWzFdKSl7ZT1HZVtiXVswXSxkPUdlW2JdWzJdIT09ITE7YnJlYWt9aWYobnVsbD09ZSlyZXR1cm4gdm9pZChhLl9pc1ZhbGlkPSExKTtpZihpWzNdKXtmb3IoYj0wLGM9SGUubGVuZ3RoO2I8YztiKyspaWYoSGVbYl1bMV0uZXhlYyhpWzNdKSl7Ci8vIG1hdGNoWzJdIHNob3VsZCBiZSAnVCcgb3Igc3BhY2UKZj0oaVsyXXx8IiAiKStIZVtiXVswXTticmVha31pZihudWxsPT1mKXJldHVybiB2b2lkKGEuX2lzVmFsaWQ9ITEpfWlmKCFkJiZudWxsIT1mKXJldHVybiB2b2lkKGEuX2lzVmFsaWQ9ITEpO2lmKGlbNF0pe2lmKCFGZS5leGVjKGlbNF0pKXJldHVybiB2b2lkKGEuX2lzVmFsaWQ9ITEpO2c9IloifWEuX2Y9ZSsoZnx8IiIpKyhnfHwiIiksa2IoYSl9ZWxzZSBhLl9pc1ZhbGlkPSExfQovLyBkYXRlIGZyb20gaXNvIGZvcm1hdCBvciBmYWxsYmFjawpmdW5jdGlvbiBmYihiKXt2YXIgYz1JZS5leGVjKGIuX2kpO3JldHVybiBudWxsIT09Yz92b2lkKGIuX2Q9bmV3IERhdGUoK2NbMV0pKTooZWIoYiksdm9pZChiLl9pc1ZhbGlkPT09ITEmJihkZWxldGUgYi5faXNWYWxpZCxhLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKGIpKSkpfQovLyBQaWNrIHRoZSBmaXJzdCBkZWZpbmVkIG9mIHR3byBvciB0aHJlZSBhcmd1bWVudHMuCmZ1bmN0aW9uIGdiKGEsYixjKXtyZXR1cm4gbnVsbCE9YT9hOm51bGwhPWI/YjpjfWZ1bmN0aW9uIGhiKGIpewovLyBob29rcyBpcyBhY3R1YWxseSB0aGUgZXhwb3J0ZWQgbW9tZW50IG9iamVjdAp2YXIgYz1uZXcgRGF0ZShhLm5vdygpKTtyZXR1cm4gYi5fdXNlVVRDP1tjLmdldFVUQ0Z1bGxZZWFyKCksYy5nZXRVVENNb250aCgpLGMuZ2V0VVRDRGF0ZSgpXTpbYy5nZXRGdWxsWWVhcigpLGMuZ2V0TW9udGgoKSxjLmdldERhdGUoKV19Ci8vIGNvbnZlcnQgYW4gYXJyYXkgdG8gYSBkYXRlLgovLyB0aGUgYXJyYXkgc2hvdWxkIG1pcnJvciB0aGUgcGFyYW1ldGVycyBiZWxvdwovLyBub3RlOiBhbGwgdmFsdWVzIHBhc3QgdGhlIHllYXIgYXJlIG9wdGlvbmFsIGFuZCB3aWxsIGRlZmF1bHQgdG8gdGhlIGxvd2VzdCBwb3NzaWJsZSB2YWx1ZS4KLy8gW3llYXIsIG1vbnRoLCBkYXkgLCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmRdCmZ1bmN0aW9uIGliKGEpe3ZhciBiLGMsZCxlLGY9W107aWYoIWEuX2QpewovLyBEZWZhdWx0IHRvIGN1cnJlbnQgZGF0ZS4KLy8gKiBpZiBubyB5ZWFyLCBtb250aCwgZGF5IG9mIG1vbnRoIGFyZSBnaXZlbiwgZGVmYXVsdCB0byB0b2RheQovLyAqIGlmIGRheSBvZiBtb250aCBpcyBnaXZlbiwgZGVmYXVsdCBtb250aCBhbmQgeWVhcgovLyAqIGlmIG1vbnRoIGlzIGdpdmVuLCBkZWZhdWx0IG9ubHkgeWVhcgovLyAqIGlmIHllYXIgaXMgZ2l2ZW4sIGRvbid0IGRlZmF1bHQgYW55dGhpbmcKZm9yKGQ9aGIoYSksCi8vY29tcHV0ZSBkYXkgb2YgdGhlIHllYXIgZnJvbSB3ZWVrcyBhbmQgd2Vla2RheXMKYS5fdyYmbnVsbD09YS5fYVtjZV0mJm51bGw9PWEuX2FbYmVdJiZqYihhKSwKLy9pZiB0aGUgZGF5IG9mIHRoZSB5ZWFyIGlzIHNldCwgZmlndXJlIG91dCB3aGF0IGl0IGlzCmEuX2RheU9mWWVhciYmKGU9Z2IoYS5fYVthZV0sZFthZV0pLGEuX2RheU9mWWVhcj5wYShlKSYmKG0oYSkuX292ZXJmbG93RGF5T2ZZZWFyPSEwKSxjPXRhKGUsMCxhLl9kYXlPZlllYXIpLGEuX2FbYmVdPWMuZ2V0VVRDTW9udGgoKSxhLl9hW2NlXT1jLmdldFVUQ0RhdGUoKSksYj0wO2I8MyYmbnVsbD09YS5fYVtiXTsrK2IpYS5fYVtiXT1mW2JdPWRbYl07Ci8vIFplcm8gb3V0IHdoYXRldmVyIHdhcyBub3QgZGVmYXVsdGVkLCBpbmNsdWRpbmcgdGltZQpmb3IoO2I8NztiKyspYS5fYVtiXT1mW2JdPW51bGw9PWEuX2FbYl0/Mj09PWI/MTowOmEuX2FbYl07Ci8vIENoZWNrIGZvciAyNDowMDowMC4wMDAKMjQ9PT1hLl9hW2RlXSYmMD09PWEuX2FbZWVdJiYwPT09YS5fYVtmZV0mJjA9PT1hLl9hW2dlXSYmKGEuX25leHREYXk9ITAsYS5fYVtkZV09MCksYS5fZD0oYS5fdXNlVVRDP3RhOnNhKS5hcHBseShudWxsLGYpLAovLyBBcHBseSB0aW1lem9uZSBvZmZzZXQgZnJvbSBpbnB1dC4gVGhlIGFjdHVhbCB1dGNPZmZzZXQgY2FuIGJlIGNoYW5nZWQKLy8gd2l0aCBwYXJzZVpvbmUuCm51bGwhPWEuX3R6bSYmYS5fZC5zZXRVVENNaW51dGVzKGEuX2QuZ2V0VVRDTWludXRlcygpLWEuX3R6bSksYS5fbmV4dERheSYmKGEuX2FbZGVdPTI0KX19ZnVuY3Rpb24gamIoYSl7dmFyIGIsYyxkLGUsZixnLGgsaTtpZihiPWEuX3csbnVsbCE9Yi5HR3x8bnVsbCE9Yi5XfHxudWxsIT1iLkUpZj0xLGc9NCwKLy8gVE9ETzogV2UgbmVlZCB0byB0YWtlIHRoZSBjdXJyZW50IGlzb1dlZWtZZWFyLCBidXQgdGhhdCBkZXBlbmRzIG9uCi8vIGhvdyB3ZSBpbnRlcnByZXQgbm93IChsb2NhbCwgdXRjLCBmaXhlZCBvZmZzZXQpLiBTbyBjcmVhdGUKLy8gYSBub3cgdmVyc2lvbiBvZiBjdXJyZW50IGNvbmZpZyAodGFrZSBsb2NhbC91dGMvb2Zmc2V0IGZsYWdzLCBhbmQKLy8gY3JlYXRlIG5vdykuCmM9Z2IoYi5HRyxhLl9hW2FlXSx3YShzYigpLDEsNCkueWVhciksZD1nYihiLlcsMSksZT1nYihiLkUsMSksKGU8MXx8ZT43KSYmKGk9ITApO2Vsc2V7Zj1hLl9sb2NhbGUuX3dlZWsuZG93LGc9YS5fbG9jYWxlLl93ZWVrLmRveTt2YXIgaj13YShzYigpLGYsZyk7Yz1nYihiLmdnLGEuX2FbYWVdLGoueWVhciksCi8vIERlZmF1bHQgdG8gY3VycmVudCB3ZWVrLgpkPWdiKGIudyxqLndlZWspLG51bGwhPWIuZD8oCi8vIHdlZWtkYXkgLS0gbG93IGRheSBudW1iZXJzIGFyZSBjb25zaWRlcmVkIG5leHQgd2VlawplPWIuZCwoZTwwfHxlPjYpJiYoaT0hMCkpOm51bGwhPWIuZT8oCi8vIGxvY2FsIHdlZWtkYXkgLS0gY291bnRpbmcgc3RhcnRzIGZyb20gYmVnaW5pbmcgb2Ygd2VlawplPWIuZStmLChiLmU8MHx8Yi5lPjYpJiYoaT0hMCkpOgovLyBkZWZhdWx0IHRvIGJlZ2luaW5nIG9mIHdlZWsKZT1mfWQ8MXx8ZD54YShjLGYsZyk/bShhKS5fb3ZlcmZsb3dXZWVrcz0hMDpudWxsIT1pP20oYSkuX292ZXJmbG93V2Vla2RheT0hMDooaD12YShjLGQsZSxmLGcpLGEuX2FbYWVdPWgueWVhcixhLl9kYXlPZlllYXI9aC5kYXlPZlllYXIpfQovLyBkYXRlIGZyb20gc3RyaW5nIGFuZCBmb3JtYXQgc3RyaW5nCmZ1bmN0aW9uIGtiKGIpewovLyBUT0RPOiBNb3ZlIHRoaXMgdG8gYW5vdGhlciBwYXJ0IG9mIHRoZSBjcmVhdGlvbiBmbG93IHRvIHByZXZlbnQgY2lyY3VsYXIgZGVwcwppZihiLl9mPT09YS5JU09fODYwMSlyZXR1cm4gdm9pZCBlYihiKTtiLl9hPVtdLG0oYikuZW1wdHk9ITA7Ci8vIFRoaXMgYXJyYXkgaXMgdXNlZCB0byBtYWtlIGEgRGF0ZSwgZWl0aGVyIHdpdGggYG5ldyBEYXRlYCBvciBgRGF0ZS5VVENgCnZhciBjLGQsZSxmLGcsaD0iIitiLl9pLGk9aC5sZW5ndGgsaj0wO2ZvcihlPVkoYi5fZixiLl9sb2NhbGUpLm1hdGNoKEZkKXx8W10sYz0wO2M8ZS5sZW5ndGg7YysrKWY9ZVtjXSxkPShoLm1hdGNoKCQoZixiKSl8fFtdKVswXSwKLy8gY29uc29sZS5sb2coJ3Rva2VuJywgdG9rZW4sICdwYXJzZWRJbnB1dCcsIHBhcnNlZElucHV0LAovLyAgICAgICAgICdyZWdleCcsIGdldFBhcnNlUmVnZXhGb3JUb2tlbih0b2tlbiwgY29uZmlnKSk7CmQmJihnPWguc3Vic3RyKDAsaC5pbmRleE9mKGQpKSxnLmxlbmd0aD4wJiZtKGIpLnVudXNlZElucHV0LnB1c2goZyksaD1oLnNsaWNlKGguaW5kZXhPZihkKStkLmxlbmd0aCksais9ZC5sZW5ndGgpLAovLyBkb24ndCBwYXJzZSBpZiBpdCdzIG5vdCBhIGtub3duIHRva2VuCklkW2ZdPyhkP20oYikuZW1wdHk9ITE6bShiKS51bnVzZWRUb2tlbnMucHVzaChmKSxkYShmLGQsYikpOmIuX3N0cmljdCYmIWQmJm0oYikudW51c2VkVG9rZW5zLnB1c2goZik7Ci8vIGFkZCByZW1haW5pbmcgdW5wYXJzZWQgaW5wdXQgbGVuZ3RoIHRvIHRoZSBzdHJpbmcKbShiKS5jaGFyc0xlZnRPdmVyPWktaixoLmxlbmd0aD4wJiZtKGIpLnVudXNlZElucHV0LnB1c2goaCksCi8vIGNsZWFyIF8xMmggZmxhZyBpZiBob3VyIGlzIDw9IDEyCmIuX2FbZGVdPD0xMiYmbShiKS5iaWdIb3VyPT09ITAmJmIuX2FbZGVdPjAmJihtKGIpLmJpZ0hvdXI9dm9pZCAwKSxtKGIpLnBhcnNlZERhdGVQYXJ0cz1iLl9hLnNsaWNlKDApLG0oYikubWVyaWRpZW09Yi5fbWVyaWRpZW0sCi8vIGhhbmRsZSBtZXJpZGllbQpiLl9hW2RlXT1sYihiLl9sb2NhbGUsYi5fYVtkZV0sYi5fbWVyaWRpZW0pLGliKGIpLGRiKGIpfWZ1bmN0aW9uIGxiKGEsYixjKXt2YXIgZDsKLy8gRmFsbGJhY2sKcmV0dXJuIG51bGw9PWM/YjpudWxsIT1hLm1lcmlkaWVtSG91cj9hLm1lcmlkaWVtSG91cihiLGMpOm51bGwhPWEuaXNQTT8oZD1hLmlzUE0oYyksZCYmYjwxMiYmKGIrPTEyKSxkfHwxMiE9PWJ8fChiPTApLGIpOmJ9Ci8vIGRhdGUgZnJvbSBzdHJpbmcgYW5kIGFycmF5IG9mIGZvcm1hdCBzdHJpbmdzCmZ1bmN0aW9uIG1iKGEpe3ZhciBiLGMsZCxlLGY7aWYoMD09PWEuX2YubGVuZ3RoKXJldHVybiBtKGEpLmludmFsaWRGb3JtYXQ9ITAsdm9pZChhLl9kPW5ldyBEYXRlKE5hTikpO2ZvcihlPTA7ZTxhLl9mLmxlbmd0aDtlKyspZj0wLGI9cSh7fSxhKSxudWxsIT1hLl91c2VVVEMmJihiLl91c2VVVEM9YS5fdXNlVVRDKSxiLl9mPWEuX2ZbZV0sa2IoYiksbihiKSYmKAovLyBpZiB0aGVyZSBpcyBhbnkgaW5wdXQgdGhhdCB3YXMgbm90IHBhcnNlZCBhZGQgYSBwZW5hbHR5IGZvciB0aGF0IGZvcm1hdApmKz1tKGIpLmNoYXJzTGVmdE92ZXIsCi8vb3IgdG9rZW5zCmYrPTEwKm0oYikudW51c2VkVG9rZW5zLmxlbmd0aCxtKGIpLnNjb3JlPWYsKG51bGw9PWR8fGY8ZCkmJihkPWYsYz1iKSk7aihhLGN8fGIpfWZ1bmN0aW9uIG5iKGEpe2lmKCFhLl9kKXt2YXIgYj1MKGEuX2kpO2EuX2E9aChbYi55ZWFyLGIubW9udGgsYi5kYXl8fGIuZGF0ZSxiLmhvdXIsYi5taW51dGUsYi5zZWNvbmQsYi5taWxsaXNlY29uZF0sZnVuY3Rpb24oYSl7cmV0dXJuIGEmJnBhcnNlSW50KGEsMTApfSksaWIoYSl9fWZ1bmN0aW9uIG9iKGEpe3ZhciBiPW5ldyByKGRiKHBiKGEpKSk7Ci8vIEFkZGluZyBpcyBzbWFydCBlbm91Z2ggYXJvdW5kIERTVApyZXR1cm4gYi5fbmV4dERheSYmKGIuYWRkKDEsImQiKSxiLl9uZXh0RGF5PXZvaWQgMCksYn1mdW5jdGlvbiBwYihhKXt2YXIgYj1hLl9pLGQ9YS5fZjtyZXR1cm4gYS5fbG9jYWxlPWEuX2xvY2FsZXx8YmIoYS5fbCksbnVsbD09PWJ8fHZvaWQgMD09PWQmJiIiPT09Yj9vKHtudWxsSW5wdXQ6ITB9KTooInN0cmluZyI9PXR5cGVvZiBiJiYoYS5faT1iPWEuX2xvY2FsZS5wcmVwYXJzZShiKSkscyhiKT9uZXcgcihkYihiKSk6KGcoYik/YS5fZD1iOmMoZCk/bWIoYSk6ZD9rYihhKTpxYihhKSxuKGEpfHwoYS5fZD1udWxsKSxhKSl9ZnVuY3Rpb24gcWIoYil7dmFyIGQ9Yi5faTt2b2lkIDA9PT1kP2IuX2Q9bmV3IERhdGUoYS5ub3coKSk6ZyhkKT9iLl9kPW5ldyBEYXRlKGQudmFsdWVPZigpKToic3RyaW5nIj09dHlwZW9mIGQ/ZmIoYik6YyhkKT8oYi5fYT1oKGQuc2xpY2UoMCksZnVuY3Rpb24oYSl7cmV0dXJuIHBhcnNlSW50KGEsMTApfSksaWIoYikpOiJvYmplY3QiPT10eXBlb2YgZD9uYihiKTpmKGQpPwovLyBmcm9tIG1pbGxpc2Vjb25kcwpiLl9kPW5ldyBEYXRlKGQpOmEuY3JlYXRlRnJvbUlucHV0RmFsbGJhY2soYil9ZnVuY3Rpb24gcmIoYSxiLGYsZyxoKXt2YXIgaT17fTsKLy8gb2JqZWN0IGNvbnN0cnVjdGlvbiBtdXN0IGJlIGRvbmUgdGhpcyB3YXkuCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L2lzc3Vlcy8xNDIzCnJldHVybiBmIT09ITAmJmYhPT0hMXx8KGc9ZixmPXZvaWQgMCksKGQoYSkmJmUoYSl8fGMoYSkmJjA9PT1hLmxlbmd0aCkmJihhPXZvaWQgMCksaS5faXNBTW9tZW50T2JqZWN0PSEwLGkuX3VzZVVUQz1pLl9pc1VUQz1oLGkuX2w9ZixpLl9pPWEsaS5fZj1iLGkuX3N0cmljdD1nLG9iKGkpfWZ1bmN0aW9uIHNiKGEsYixjLGQpe3JldHVybiByYihhLGIsYyxkLCExKX0KLy8gUGljayBhIG1vbWVudCBtIGZyb20gbW9tZW50cyBzbyB0aGF0IG1bZm5dKG90aGVyKSBpcyB0cnVlIGZvciBhbGwKLy8gb3RoZXIuIFRoaXMgcmVsaWVzIG9uIHRoZSBmdW5jdGlvbiBmbiB0byBiZSB0cmFuc2l0aXZlLgovLwovLyBtb21lbnRzIHNob3VsZCBlaXRoZXIgYmUgYW4gYXJyYXkgb2YgbW9tZW50IG9iamVjdHMgb3IgYW4gYXJyYXksIHdob3NlCi8vIGZpcnN0IGVsZW1lbnQgaXMgYW4gYXJyYXkgb2YgbW9tZW50IG9iamVjdHMuCmZ1bmN0aW9uIHRiKGEsYil7dmFyIGQsZTtpZigxPT09Yi5sZW5ndGgmJmMoYlswXSkmJihiPWJbMF0pLCFiLmxlbmd0aClyZXR1cm4gc2IoKTtmb3IoZD1iWzBdLGU9MTtlPGIubGVuZ3RoOysrZSliW2VdLmlzVmFsaWQoKSYmIWJbZV1bYV0oZCl8fChkPWJbZV0pO3JldHVybiBkfQovLyBUT0RPOiBVc2UgW10uc29ydCBpbnN0ZWFkPwpmdW5jdGlvbiB1Yigpe3ZhciBhPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO3JldHVybiB0YigiaXNCZWZvcmUiLGEpfWZ1bmN0aW9uIHZiKCl7dmFyIGE9W10uc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuIHRiKCJpc0FmdGVyIixhKX1mdW5jdGlvbiB3YihhKXt2YXIgYj1MKGEpLGM9Yi55ZWFyfHwwLGQ9Yi5xdWFydGVyfHwwLGU9Yi5tb250aHx8MCxmPWIud2Vla3x8MCxnPWIuZGF5fHwwLGg9Yi5ob3VyfHwwLGk9Yi5taW51dGV8fDAsaj1iLnNlY29uZHx8MCxrPWIubWlsbGlzZWNvbmR8fDA7Ci8vIHJlcHJlc2VudGF0aW9uIGZvciBkYXRlQWRkUmVtb3ZlCnRoaXMuX21pbGxpc2Vjb25kcz0raysxZTMqaisvLyAxMDAwCjZlNCppKy8vIDEwMDAgKiA2MAoxZTMqaCo2MCo2MCwvL3VzaW5nIDEwMDAgKiA2MCAqIDYwIGluc3RlYWQgb2YgMzZlNSB0byBhdm9pZCBmbG9hdGluZyBwb2ludCByb3VuZGluZyBlcnJvcnMgaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzI5NzgKLy8gQmVjYXVzZSBvZiBkYXRlQWRkUmVtb3ZlIHRyZWF0cyAyNCBob3VycyBhcyBkaWZmZXJlbnQgZnJvbSBhCi8vIGRheSB3aGVuIHdvcmtpbmcgYXJvdW5kIERTVCwgd2UgbmVlZCB0byBzdG9yZSB0aGVtIHNlcGFyYXRlbHkKdGhpcy5fZGF5cz0rZys3KmYsCi8vIEl0IGlzIGltcG9zc2libGUgdHJhbnNsYXRlIG1vbnRocyBpbnRvIGRheXMgd2l0aG91dCBrbm93aW5nCi8vIHdoaWNoIG1vbnRocyB5b3UgYXJlIGFyZSB0YWxraW5nIGFib3V0LCBzbyB3ZSBoYXZlIHRvIHN0b3JlCi8vIGl0IHNlcGFyYXRlbHkuCnRoaXMuX21vbnRocz0rZSszKmQrMTIqYyx0aGlzLl9kYXRhPXt9LHRoaXMuX2xvY2FsZT1iYigpLHRoaXMuX2J1YmJsZSgpfWZ1bmN0aW9uIHhiKGEpe3JldHVybiBhIGluc3RhbmNlb2Ygd2J9ZnVuY3Rpb24geWIoYSl7cmV0dXJuIGE8MD9NYXRoLnJvdW5kKC0xKmEpKi0xOk1hdGgucm91bmQoYSl9Ci8vIEZPUk1BVFRJTkcKZnVuY3Rpb24gemIoYSxiKXtVKGEsMCwwLGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy51dGNPZmZzZXQoKSxjPSIrIjtyZXR1cm4gYTwwJiYoYT0tYSxjPSItIiksYytUKH5+KGEvNjApLDIpK2IrVCh+fmElNjAsMil9KX1mdW5jdGlvbiBBYihhLGIpe3ZhciBjPShifHwiIikubWF0Y2goYSk7aWYobnVsbD09PWMpcmV0dXJuIG51bGw7dmFyIGQ9Y1tjLmxlbmd0aC0xXXx8W10sZT0oZCsiIikubWF0Y2goTWUpfHxbIi0iLDAsMF0sZj0rKDYwKmVbMV0pK3UoZVsyXSk7cmV0dXJuIDA9PT1mPzA6IisiPT09ZVswXT9mOi1mfQovLyBSZXR1cm4gYSBtb21lbnQgZnJvbSBpbnB1dCwgdGhhdCBpcyBsb2NhbC91dGMvem9uZSBlcXVpdmFsZW50IHRvIG1vZGVsLgpmdW5jdGlvbiBCYihiLGMpe3ZhciBkLGU7Ci8vIFVzZSBsb3ctbGV2ZWwgYXBpLCBiZWNhdXNlIHRoaXMgZm4gaXMgbG93LWxldmVsIGFwaS4KcmV0dXJuIGMuX2lzVVRDPyhkPWMuY2xvbmUoKSxlPShzKGIpfHxnKGIpP2IudmFsdWVPZigpOnNiKGIpLnZhbHVlT2YoKSktZC52YWx1ZU9mKCksZC5fZC5zZXRUaW1lKGQuX2QudmFsdWVPZigpK2UpLGEudXBkYXRlT2Zmc2V0KGQsITEpLGQpOnNiKGIpLmxvY2FsKCl9ZnVuY3Rpb24gQ2IoYSl7Ci8vIE9uIEZpcmVmb3guMjQgRGF0ZSNnZXRUaW1lem9uZU9mZnNldCByZXR1cm5zIGEgZmxvYXRpbmcgcG9pbnQuCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L3B1bGwvMTg3MQpyZXR1cm4gMTUqLU1hdGgucm91bmQoYS5fZC5nZXRUaW1lem9uZU9mZnNldCgpLzE1KX0KLy8gTU9NRU5UUwovLyBrZWVwTG9jYWxUaW1lID0gdHJ1ZSBtZWFucyBvbmx5IGNoYW5nZSB0aGUgdGltZXpvbmUsIHdpdGhvdXQKLy8gYWZmZWN0aW5nIHRoZSBsb2NhbCBob3VyLiBTbyA1OjMxOjI2ICswMzAwIC0tW3V0Y09mZnNldCgyLCB0cnVlKV0tLT4KLy8gNTozMToyNiArMDIwMCBJdCBpcyBwb3NzaWJsZSB0aGF0IDU6MzE6MjYgZG9lc24ndCBleGlzdCB3aXRoIG9mZnNldAovLyArMDIwMCwgc28gd2UgYWRqdXN0IHRoZSB0aW1lIGFzIG5lZWRlZCwgdG8gYmUgdmFsaWQuCi8vCi8vIEtlZXBpbmcgdGhlIHRpbWUgYWN0dWFsbHkgYWRkcy9zdWJ0cmFjdHMgKG9uZSBob3VyKQovLyBmcm9tIHRoZSBhY3R1YWwgcmVwcmVzZW50ZWQgdGltZS4gVGhhdCBpcyB3aHkgd2UgY2FsbCB1cGRhdGVPZmZzZXQKLy8gYSBzZWNvbmQgdGltZS4gSW4gY2FzZSBpdCB3YW50cyB1cyB0byBjaGFuZ2UgdGhlIG9mZnNldCBhZ2FpbgovLyBfY2hhbmdlSW5Qcm9ncmVzcyA9PSB0cnVlIGNhc2UsIHRoZW4gd2UgaGF2ZSB0byBhZGp1c3QsIGJlY2F1c2UKLy8gdGhlcmUgaXMgbm8gc3VjaCB0aW1lIGluIHRoZSBnaXZlbiB0aW1lem9uZS4KZnVuY3Rpb24gRGIoYixjKXt2YXIgZCxlPXRoaXMuX29mZnNldHx8MDtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIG51bGwhPWI/dGhpczpOYU47aWYobnVsbCE9Yil7aWYoInN0cmluZyI9PXR5cGVvZiBiKXtpZihiPUFiKFhkLGIpLG51bGw9PT1iKXJldHVybiB0aGlzfWVsc2UgTWF0aC5hYnMoYik8MTYmJihiPTYwKmIpO3JldHVybiF0aGlzLl9pc1VUQyYmYyYmKGQ9Q2IodGhpcykpLHRoaXMuX29mZnNldD1iLHRoaXMuX2lzVVRDPSEwLG51bGwhPWQmJnRoaXMuYWRkKGQsIm0iKSxlIT09YiYmKCFjfHx0aGlzLl9jaGFuZ2VJblByb2dyZXNzP1RiKHRoaXMsT2IoYi1lLCJtIiksMSwhMSk6dGhpcy5fY2hhbmdlSW5Qcm9ncmVzc3x8KHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3M9ITAsYS51cGRhdGVPZmZzZXQodGhpcywhMCksdGhpcy5fY2hhbmdlSW5Qcm9ncmVzcz1udWxsKSksdGhpc31yZXR1cm4gdGhpcy5faXNVVEM/ZTpDYih0aGlzKX1mdW5jdGlvbiBFYihhLGIpe3JldHVybiBudWxsIT1hPygic3RyaW5nIiE9dHlwZW9mIGEmJihhPS1hKSx0aGlzLnV0Y09mZnNldChhLGIpLHRoaXMpOi10aGlzLnV0Y09mZnNldCgpfWZ1bmN0aW9uIEZiKGEpe3JldHVybiB0aGlzLnV0Y09mZnNldCgwLGEpfWZ1bmN0aW9uIEdiKGEpe3JldHVybiB0aGlzLl9pc1VUQyYmKHRoaXMudXRjT2Zmc2V0KDAsYSksdGhpcy5faXNVVEM9ITEsYSYmdGhpcy5zdWJ0cmFjdChDYih0aGlzKSwibSIpKSx0aGlzfWZ1bmN0aW9uIEhiKCl7aWYobnVsbCE9dGhpcy5fdHptKXRoaXMudXRjT2Zmc2V0KHRoaXMuX3R6bSk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIHRoaXMuX2kpe3ZhciBhPUFiKFdkLHRoaXMuX2kpO251bGwhPWE/dGhpcy51dGNPZmZzZXQoYSk6dGhpcy51dGNPZmZzZXQoMCwhMCl9cmV0dXJuIHRoaXN9ZnVuY3Rpb24gSWIoYSl7cmV0dXJuISF0aGlzLmlzVmFsaWQoKSYmKGE9YT9zYihhKS51dGNPZmZzZXQoKTowLCh0aGlzLnV0Y09mZnNldCgpLWEpJTYwPT09MCl9ZnVuY3Rpb24gSmIoKXtyZXR1cm4gdGhpcy51dGNPZmZzZXQoKT50aGlzLmNsb25lKCkubW9udGgoMCkudXRjT2Zmc2V0KCl8fHRoaXMudXRjT2Zmc2V0KCk+dGhpcy5jbG9uZSgpLm1vbnRoKDUpLnV0Y09mZnNldCgpfWZ1bmN0aW9uIEtiKCl7aWYoIXAodGhpcy5faXNEU1RTaGlmdGVkKSlyZXR1cm4gdGhpcy5faXNEU1RTaGlmdGVkO3ZhciBhPXt9O2lmKHEoYSx0aGlzKSxhPXBiKGEpLGEuX2Epe3ZhciBiPWEuX2lzVVRDP2soYS5fYSk6c2IoYS5fYSk7dGhpcy5faXNEU1RTaGlmdGVkPXRoaXMuaXNWYWxpZCgpJiZ2KGEuX2EsYi50b0FycmF5KCkpPjB9ZWxzZSB0aGlzLl9pc0RTVFNoaWZ0ZWQ9ITE7cmV0dXJuIHRoaXMuX2lzRFNUU2hpZnRlZH1mdW5jdGlvbiBMYigpe3JldHVybiEhdGhpcy5pc1ZhbGlkKCkmJiF0aGlzLl9pc1VUQ31mdW5jdGlvbiBNYigpe3JldHVybiEhdGhpcy5pc1ZhbGlkKCkmJnRoaXMuX2lzVVRDfWZ1bmN0aW9uIE5iKCl7cmV0dXJuISF0aGlzLmlzVmFsaWQoKSYmKHRoaXMuX2lzVVRDJiYwPT09dGhpcy5fb2Zmc2V0KX1mdW5jdGlvbiBPYihhLGIpe3ZhciBjLGQsZSxnPWEsCi8vIG1hdGNoaW5nIGFnYWluc3QgcmVnZXhwIGlzIGV4cGVuc2l2ZSwgZG8gaXQgb24gZGVtYW5kCmg9bnVsbDsvLyBjaGVja3MgZm9yIG51bGwgb3IgdW5kZWZpbmVkCnJldHVybiB4YihhKT9nPXttczphLl9taWxsaXNlY29uZHMsZDphLl9kYXlzLE06YS5fbW9udGhzfTpmKGEpPyhnPXt9LGI/Z1tiXT1hOmcubWlsbGlzZWNvbmRzPWEpOihoPU5lLmV4ZWMoYSkpPyhjPSItIj09PWhbMV0/LTE6MSxnPXt5OjAsZDp1KGhbY2VdKSpjLGg6dShoW2RlXSkqYyxtOnUoaFtlZV0pKmMsczp1KGhbZmVdKSpjLG1zOnUoeWIoMWUzKmhbZ2VdKSkqY30pOihoPU9lLmV4ZWMoYSkpPyhjPSItIj09PWhbMV0/LTE6MSxnPXt5OlBiKGhbMl0sYyksTTpQYihoWzNdLGMpLHc6UGIoaFs0XSxjKSxkOlBiKGhbNV0sYyksaDpQYihoWzZdLGMpLG06UGIoaFs3XSxjKSxzOlBiKGhbOF0sYyl9KTpudWxsPT1nP2c9e306Im9iamVjdCI9PXR5cGVvZiBnJiYoImZyb20iaW4gZ3x8InRvImluIGcpJiYoZT1SYihzYihnLmZyb20pLHNiKGcudG8pKSxnPXt9LGcubXM9ZS5taWxsaXNlY29uZHMsZy5NPWUubW9udGhzKSxkPW5ldyB3YihnKSx4YihhKSYmaShhLCJfbG9jYWxlIikmJihkLl9sb2NhbGU9YS5fbG9jYWxlKSxkfWZ1bmN0aW9uIFBiKGEsYil7Ci8vIFdlJ2Qgbm9ybWFsbHkgdXNlIH5+aW5wIGZvciB0aGlzLCBidXQgdW5mb3J0dW5hdGVseSBpdCBhbHNvCi8vIGNvbnZlcnRzIGZsb2F0cyB0byBpbnRzLgovLyBpbnAgbWF5IGJlIHVuZGVmaW5lZCwgc28gY2FyZWZ1bCBjYWxsaW5nIHJlcGxhY2Ugb24gaXQuCnZhciBjPWEmJnBhcnNlRmxvYXQoYS5yZXBsYWNlKCIsIiwiLiIpKTsKLy8gYXBwbHkgc2lnbiB3aGlsZSB3ZSdyZSBhdCBpdApyZXR1cm4oaXNOYU4oYyk/MDpjKSpifWZ1bmN0aW9uIFFiKGEsYil7dmFyIGM9e21pbGxpc2Vjb25kczowLG1vbnRoczowfTtyZXR1cm4gYy5tb250aHM9Yi5tb250aCgpLWEubW9udGgoKSsxMiooYi55ZWFyKCktYS55ZWFyKCkpLGEuY2xvbmUoKS5hZGQoYy5tb250aHMsIk0iKS5pc0FmdGVyKGIpJiYtLWMubW9udGhzLGMubWlsbGlzZWNvbmRzPStiLSthLmNsb25lKCkuYWRkKGMubW9udGhzLCJNIiksY31mdW5jdGlvbiBSYihhLGIpe3ZhciBjO3JldHVybiBhLmlzVmFsaWQoKSYmYi5pc1ZhbGlkKCk/KGI9QmIoYixhKSxhLmlzQmVmb3JlKGIpP2M9UWIoYSxiKTooYz1RYihiLGEpLGMubWlsbGlzZWNvbmRzPS1jLm1pbGxpc2Vjb25kcyxjLm1vbnRocz0tYy5tb250aHMpLGMpOnttaWxsaXNlY29uZHM6MCxtb250aHM6MH19Ci8vIFRPRE86IHJlbW92ZSAnbmFtZScgYXJnIGFmdGVyIGRlcHJlY2F0aW9uIGlzIHJlbW92ZWQKZnVuY3Rpb24gU2IoYSxiKXtyZXR1cm4gZnVuY3Rpb24oYyxkKXt2YXIgZSxmOwovL2ludmVydCB0aGUgYXJndW1lbnRzLCBidXQgY29tcGxhaW4gYWJvdXQgaXQKcmV0dXJuIG51bGw9PT1kfHxpc05hTigrZCl8fCh5KGIsIm1vbWVudCgpLiIrYisiKHBlcmlvZCwgbnVtYmVyKSBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIG1vbWVudCgpLiIrYisiKG51bWJlciwgcGVyaW9kKS4gU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvYWRkLWludmVydGVkLXBhcmFtLyBmb3IgbW9yZSBpbmZvLiIpLGY9YyxjPWQsZD1mKSxjPSJzdHJpbmciPT10eXBlb2YgYz8rYzpjLGU9T2IoYyxkKSxUYih0aGlzLGUsYSksdGhpc319ZnVuY3Rpb24gVGIoYixjLGQsZSl7dmFyIGY9Yy5fbWlsbGlzZWNvbmRzLGc9eWIoYy5fZGF5cyksaD15YihjLl9tb250aHMpO2IuaXNWYWxpZCgpJiYoZT1udWxsPT1lfHxlLGYmJmIuX2Quc2V0VGltZShiLl9kLnZhbHVlT2YoKStmKmQpLGcmJlEoYiwiRGF0ZSIsUChiLCJEYXRlIikrZypkKSxoJiZqYShiLFAoYiwiTW9udGgiKStoKmQpLGUmJmEudXBkYXRlT2Zmc2V0KGIsZ3x8aCkpfWZ1bmN0aW9uIFViKGEsYil7dmFyIGM9YS5kaWZmKGIsImRheXMiLCEwKTtyZXR1cm4gYzwtNj8ic2FtZUVsc2UiOmM8LTE/Imxhc3RXZWVrIjpjPDA/Imxhc3REYXkiOmM8MT8ic2FtZURheSI6YzwyPyJuZXh0RGF5IjpjPDc/Im5leHRXZWVrIjoic2FtZUVsc2UifWZ1bmN0aW9uIFZiKGIsYyl7Ci8vIFdlIHdhbnQgdG8gY29tcGFyZSB0aGUgc3RhcnQgb2YgdG9kYXksIHZzIHRoaXMuCi8vIEdldHRpbmcgc3RhcnQtb2YtdG9kYXkgZGVwZW5kcyBvbiB3aGV0aGVyIHdlJ3JlIGxvY2FsL3V0Yy9vZmZzZXQgb3Igbm90Lgp2YXIgZD1ifHxzYigpLGU9QmIoZCx0aGlzKS5zdGFydE9mKCJkYXkiKSxmPWEuY2FsZW5kYXJGb3JtYXQodGhpcyxlKXx8InNhbWVFbHNlIixnPWMmJih6KGNbZl0pP2NbZl0uY2FsbCh0aGlzLGQpOmNbZl0pO3JldHVybiB0aGlzLmZvcm1hdChnfHx0aGlzLmxvY2FsZURhdGEoKS5jYWxlbmRhcihmLHRoaXMsc2IoZCkpKX1mdW5jdGlvbiBXYigpe3JldHVybiBuZXcgcih0aGlzKX1mdW5jdGlvbiBYYihhLGIpe3ZhciBjPXMoYSk/YTpzYihhKTtyZXR1cm4hKCF0aGlzLmlzVmFsaWQoKXx8IWMuaXNWYWxpZCgpKSYmKGI9SyhwKGIpPyJtaWxsaXNlY29uZCI6YiksIm1pbGxpc2Vjb25kIj09PWI/dGhpcy52YWx1ZU9mKCk+Yy52YWx1ZU9mKCk6Yy52YWx1ZU9mKCk8dGhpcy5jbG9uZSgpLnN0YXJ0T2YoYikudmFsdWVPZigpKX1mdW5jdGlvbiBZYihhLGIpe3ZhciBjPXMoYSk/YTpzYihhKTtyZXR1cm4hKCF0aGlzLmlzVmFsaWQoKXx8IWMuaXNWYWxpZCgpKSYmKGI9SyhwKGIpPyJtaWxsaXNlY29uZCI6YiksIm1pbGxpc2Vjb25kIj09PWI/dGhpcy52YWx1ZU9mKCk8Yy52YWx1ZU9mKCk6dGhpcy5jbG9uZSgpLmVuZE9mKGIpLnZhbHVlT2YoKTxjLnZhbHVlT2YoKSl9ZnVuY3Rpb24gWmIoYSxiLGMsZCl7cmV0dXJuIGQ9ZHx8IigpIiwoIigiPT09ZFswXT90aGlzLmlzQWZ0ZXIoYSxjKTohdGhpcy5pc0JlZm9yZShhLGMpKSYmKCIpIj09PWRbMV0/dGhpcy5pc0JlZm9yZShiLGMpOiF0aGlzLmlzQWZ0ZXIoYixjKSl9ZnVuY3Rpb24gJGIoYSxiKXt2YXIgYyxkPXMoYSk/YTpzYihhKTtyZXR1cm4hKCF0aGlzLmlzVmFsaWQoKXx8IWQuaXNWYWxpZCgpKSYmKGI9SyhifHwibWlsbGlzZWNvbmQiKSwibWlsbGlzZWNvbmQiPT09Yj90aGlzLnZhbHVlT2YoKT09PWQudmFsdWVPZigpOihjPWQudmFsdWVPZigpLHRoaXMuY2xvbmUoKS5zdGFydE9mKGIpLnZhbHVlT2YoKTw9YyYmYzw9dGhpcy5jbG9uZSgpLmVuZE9mKGIpLnZhbHVlT2YoKSkpfWZ1bmN0aW9uIF9iKGEsYil7cmV0dXJuIHRoaXMuaXNTYW1lKGEsYil8fHRoaXMuaXNBZnRlcihhLGIpfWZ1bmN0aW9uIGFjKGEsYil7cmV0dXJuIHRoaXMuaXNTYW1lKGEsYil8fHRoaXMuaXNCZWZvcmUoYSxiKX1mdW5jdGlvbiBiYyhhLGIsYyl7dmFyIGQsZSxmLGc7Ly8gMTAwMAovLyAxMDAwICogNjAKLy8gMTAwMCAqIDYwICogNjAKLy8gMTAwMCAqIDYwICogNjAgKiAyNCwgbmVnYXRlIGRzdAovLyAxMDAwICogNjAgKiA2MCAqIDI0ICogNywgbmVnYXRlIGRzdApyZXR1cm4gdGhpcy5pc1ZhbGlkKCk/KGQ9QmIoYSx0aGlzKSxkLmlzVmFsaWQoKT8oZT02ZTQqKGQudXRjT2Zmc2V0KCktdGhpcy51dGNPZmZzZXQoKSksYj1LKGIpLCJ5ZWFyIj09PWJ8fCJtb250aCI9PT1ifHwicXVhcnRlciI9PT1iPyhnPWNjKHRoaXMsZCksInF1YXJ0ZXIiPT09Yj9nLz0zOiJ5ZWFyIj09PWImJihnLz0xMikpOihmPXRoaXMtZCxnPSJzZWNvbmQiPT09Yj9mLzFlMzoibWludXRlIj09PWI/Zi82ZTQ6ImhvdXIiPT09Yj9mLzM2ZTU6ImRheSI9PT1iPyhmLWUpLzg2NGU1OiJ3ZWVrIj09PWI/KGYtZSkvNjA0OGU1OmYpLGM/Zzp0KGcpKTpOYU4pOk5hTn1mdW5jdGlvbiBjYyhhLGIpewovLyBkaWZmZXJlbmNlIGluIG1vbnRocwp2YXIgYyxkLGU9MTIqKGIueWVhcigpLWEueWVhcigpKSsoYi5tb250aCgpLWEubW9udGgoKSksCi8vIGIgaXMgaW4gKGFuY2hvciAtIDEgbW9udGgsIGFuY2hvciArIDEgbW9udGgpCmY9YS5jbG9uZSgpLmFkZChlLCJtb250aHMiKTsKLy9jaGVjayBmb3IgbmVnYXRpdmUgemVybywgcmV0dXJuIHplcm8gaWYgbmVnYXRpdmUgemVybwovLyBsaW5lYXIgYWNyb3NzIHRoZSBtb250aAovLyBsaW5lYXIgYWNyb3NzIHRoZSBtb250aApyZXR1cm4gYi1mPDA/KGM9YS5jbG9uZSgpLmFkZChlLTEsIm1vbnRocyIpLGQ9KGItZikvKGYtYykpOihjPWEuY2xvbmUoKS5hZGQoZSsxLCJtb250aHMiKSxkPShiLWYpLyhjLWYpKSwtKGUrZCl8fDB9ZnVuY3Rpb24gZGMoKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmxvY2FsZSgiZW4iKS5mb3JtYXQoImRkZCBNTU0gREQgWVlZWSBISDptbTpzcyBbR01UXVpaIil9ZnVuY3Rpb24gZWMoKXt2YXIgYT10aGlzLmNsb25lKCkudXRjKCk7cmV0dXJuIDA8YS55ZWFyKCkmJmEueWVhcigpPD05OTk5P3ooRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcpP3RoaXMudG9EYXRlKCkudG9JU09TdHJpbmcoKTpYKGEsIllZWVktTU0tRERbVF1ISDptbTpzcy5TU1NbWl0iKTpYKGEsIllZWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1taXSIpfS8qKgogKiBSZXR1cm4gYSBodW1hbiByZWFkYWJsZSByZXByZXNlbnRhdGlvbiBvZiBhIG1vbWVudCB0aGF0IGNhbgogKiBhbHNvIGJlIGV2YWx1YXRlZCB0byBnZXQgYSBuZXcgbW9tZW50IHdoaWNoIGlzIHRoZSBzYW1lCiAqCiAqIEBsaW5rIGh0dHBzOi8vbm9kZWpzLm9yZy9kaXN0L2xhdGVzdC9kb2NzL2FwaS91dGlsLmh0bWwjdXRpbF9jdXN0b21faW5zcGVjdF9mdW5jdGlvbl9vbl9vYmplY3RzCiAqLwpmdW5jdGlvbiBmYygpe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4ibW9tZW50LmludmFsaWQoLyogIit0aGlzLl9pKyIgKi8pIjt2YXIgYT0ibW9tZW50IixiPSIiO3RoaXMuaXNMb2NhbCgpfHwoYT0wPT09dGhpcy51dGNPZmZzZXQoKT8ibW9tZW50LnV0YyI6Im1vbWVudC5wYXJzZVpvbmUiLGI9IloiKTt2YXIgYz0iWyIrYSsnKCJdJyxkPTA8dGhpcy55ZWFyKCkmJnRoaXMueWVhcigpPD05OTk5PyJZWVlZIjoiWVlZWVlZIixlPSItTU0tRERbVF1ISDptbTpzcy5TU1MiLGY9YisnWyIpXSc7cmV0dXJuIHRoaXMuZm9ybWF0KGMrZCtlK2YpfWZ1bmN0aW9uIGdjKGIpe2J8fChiPXRoaXMuaXNVdGMoKT9hLmRlZmF1bHRGb3JtYXRVdGM6YS5kZWZhdWx0Rm9ybWF0KTt2YXIgYz1YKHRoaXMsYik7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLnBvc3Rmb3JtYXQoYyl9ZnVuY3Rpb24gaGMoYSxiKXtyZXR1cm4gdGhpcy5pc1ZhbGlkKCkmJihzKGEpJiZhLmlzVmFsaWQoKXx8c2IoYSkuaXNWYWxpZCgpKT9PYih7dG86dGhpcyxmcm9tOmF9KS5sb2NhbGUodGhpcy5sb2NhbGUoKSkuaHVtYW5pemUoIWIpOnRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCl9ZnVuY3Rpb24gaWMoYSl7cmV0dXJuIHRoaXMuZnJvbShzYigpLGEpfWZ1bmN0aW9uIGpjKGEsYil7cmV0dXJuIHRoaXMuaXNWYWxpZCgpJiYocyhhKSYmYS5pc1ZhbGlkKCl8fHNiKGEpLmlzVmFsaWQoKSk/T2Ioe2Zyb206dGhpcyx0bzphfSkubG9jYWxlKHRoaXMubG9jYWxlKCkpLmh1bWFuaXplKCFiKTp0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpfWZ1bmN0aW9uIGtjKGEpe3JldHVybiB0aGlzLnRvKHNiKCksYSl9Ci8vIElmIHBhc3NlZCBhIGxvY2FsZSBrZXksIGl0IHdpbGwgc2V0IHRoZSBsb2NhbGUgZm9yIHRoaXMKLy8gaW5zdGFuY2UuICBPdGhlcndpc2UsIGl0IHdpbGwgcmV0dXJuIHRoZSBsb2NhbGUgY29uZmlndXJhdGlvbgovLyB2YXJpYWJsZXMgZm9yIHRoaXMgaW5zdGFuY2UuCmZ1bmN0aW9uIGxjKGEpe3ZhciBiO3JldHVybiB2b2lkIDA9PT1hP3RoaXMuX2xvY2FsZS5fYWJicjooYj1iYihhKSxudWxsIT1iJiYodGhpcy5fbG9jYWxlPWIpLHRoaXMpfWZ1bmN0aW9uIG1jKCl7cmV0dXJuIHRoaXMuX2xvY2FsZX1mdW5jdGlvbiBuYyhhKXsKLy8gdGhlIGZvbGxvd2luZyBzd2l0Y2ggaW50ZW50aW9uYWxseSBvbWl0cyBicmVhayBrZXl3b3JkcwovLyB0byB1dGlsaXplIGZhbGxpbmcgdGhyb3VnaCB0aGUgY2FzZXMuCnN3aXRjaChhPUsoYSkpe2Nhc2UieWVhciI6dGhpcy5tb250aCgwKTsvKiBmYWxscyB0aHJvdWdoICovCmNhc2UicXVhcnRlciI6Y2FzZSJtb250aCI6dGhpcy5kYXRlKDEpOy8qIGZhbGxzIHRocm91Z2ggKi8KY2FzZSJ3ZWVrIjpjYXNlImlzb1dlZWsiOmNhc2UiZGF5IjpjYXNlImRhdGUiOnRoaXMuaG91cnMoMCk7LyogZmFsbHMgdGhyb3VnaCAqLwpjYXNlImhvdXIiOnRoaXMubWludXRlcygwKTsvKiBmYWxscyB0aHJvdWdoICovCmNhc2UibWludXRlIjp0aGlzLnNlY29uZHMoMCk7LyogZmFsbHMgdGhyb3VnaCAqLwpjYXNlInNlY29uZCI6dGhpcy5taWxsaXNlY29uZHMoMCl9Ci8vIHdlZWtzIGFyZSBhIHNwZWNpYWwgY2FzZQovLyBxdWFydGVycyBhcmUgYWxzbyBzcGVjaWFsCnJldHVybiJ3ZWVrIj09PWEmJnRoaXMud2Vla2RheSgwKSwiaXNvV2VlayI9PT1hJiZ0aGlzLmlzb1dlZWtkYXkoMSksInF1YXJ0ZXIiPT09YSYmdGhpcy5tb250aCgzKk1hdGguZmxvb3IodGhpcy5tb250aCgpLzMpKSx0aGlzfWZ1bmN0aW9uIG9jKGEpewovLyAnZGF0ZScgaXMgYW4gYWxpYXMgZm9yICdkYXknLCBzbyBpdCBzaG91bGQgYmUgY29uc2lkZXJlZCBhcyBzdWNoLgpyZXR1cm4gYT1LKGEpLHZvaWQgMD09PWF8fCJtaWxsaXNlY29uZCI9PT1hP3RoaXM6KCJkYXRlIj09PWEmJihhPSJkYXkiKSx0aGlzLnN0YXJ0T2YoYSkuYWRkKDEsImlzb1dlZWsiPT09YT8id2VlayI6YSkuc3VidHJhY3QoMSwibXMiKSl9ZnVuY3Rpb24gcGMoKXtyZXR1cm4gdGhpcy5fZC52YWx1ZU9mKCktNmU0Kih0aGlzLl9vZmZzZXR8fDApfWZ1bmN0aW9uIHFjKCl7cmV0dXJuIE1hdGguZmxvb3IodGhpcy52YWx1ZU9mKCkvMWUzKX1mdW5jdGlvbiByYygpe3JldHVybiBuZXcgRGF0ZSh0aGlzLnZhbHVlT2YoKSl9ZnVuY3Rpb24gc2MoKXt2YXIgYT10aGlzO3JldHVyblthLnllYXIoKSxhLm1vbnRoKCksYS5kYXRlKCksYS5ob3VyKCksYS5taW51dGUoKSxhLnNlY29uZCgpLGEubWlsbGlzZWNvbmQoKV19ZnVuY3Rpb24gdGMoKXt2YXIgYT10aGlzO3JldHVybnt5ZWFyczphLnllYXIoKSxtb250aHM6YS5tb250aCgpLGRhdGU6YS5kYXRlKCksaG91cnM6YS5ob3VycygpLG1pbnV0ZXM6YS5taW51dGVzKCksc2Vjb25kczphLnNlY29uZHMoKSxtaWxsaXNlY29uZHM6YS5taWxsaXNlY29uZHMoKX19ZnVuY3Rpb24gdWMoKXsKLy8gbmV3IERhdGUoTmFOKS50b0pTT04oKSA9PT0gbnVsbApyZXR1cm4gdGhpcy5pc1ZhbGlkKCk/dGhpcy50b0lTT1N0cmluZygpOm51bGx9ZnVuY3Rpb24gdmMoKXtyZXR1cm4gbih0aGlzKX1mdW5jdGlvbiB3Yygpe3JldHVybiBqKHt9LG0odGhpcykpfWZ1bmN0aW9uIHhjKCl7cmV0dXJuIG0odGhpcykub3ZlcmZsb3d9ZnVuY3Rpb24geWMoKXtyZXR1cm57aW5wdXQ6dGhpcy5faSxmb3JtYXQ6dGhpcy5fZixsb2NhbGU6dGhpcy5fbG9jYWxlLGlzVVRDOnRoaXMuX2lzVVRDLHN0cmljdDp0aGlzLl9zdHJpY3R9fWZ1bmN0aW9uIHpjKGEsYil7VSgwLFthLGEubGVuZ3RoXSwwLGIpfQovLyBNT01FTlRTCmZ1bmN0aW9uIEFjKGEpe3JldHVybiBFYy5jYWxsKHRoaXMsYSx0aGlzLndlZWsoKSx0aGlzLndlZWtkYXkoKSx0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3csdGhpcy5sb2NhbGVEYXRhKCkuX3dlZWsuZG95KX1mdW5jdGlvbiBCYyhhKXtyZXR1cm4gRWMuY2FsbCh0aGlzLGEsdGhpcy5pc29XZWVrKCksdGhpcy5pc29XZWVrZGF5KCksMSw0KX1mdW5jdGlvbiBDYygpe3JldHVybiB4YSh0aGlzLnllYXIoKSwxLDQpfWZ1bmN0aW9uIERjKCl7dmFyIGE9dGhpcy5sb2NhbGVEYXRhKCkuX3dlZWs7cmV0dXJuIHhhKHRoaXMueWVhcigpLGEuZG93LGEuZG95KX1mdW5jdGlvbiBFYyhhLGIsYyxkLGUpe3ZhciBmO3JldHVybiBudWxsPT1hP3dhKHRoaXMsZCxlKS55ZWFyOihmPXhhKGEsZCxlKSxiPmYmJihiPWYpLEZjLmNhbGwodGhpcyxhLGIsYyxkLGUpKX1mdW5jdGlvbiBGYyhhLGIsYyxkLGUpe3ZhciBmPXZhKGEsYixjLGQsZSksZz10YShmLnllYXIsMCxmLmRheU9mWWVhcik7cmV0dXJuIHRoaXMueWVhcihnLmdldFVUQ0Z1bGxZZWFyKCkpLHRoaXMubW9udGgoZy5nZXRVVENNb250aCgpKSx0aGlzLmRhdGUoZy5nZXRVVENEYXRlKCkpLHRoaXN9Ci8vIE1PTUVOVFMKZnVuY3Rpb24gR2MoYSl7cmV0dXJuIG51bGw9PWE/TWF0aC5jZWlsKCh0aGlzLm1vbnRoKCkrMSkvMyk6dGhpcy5tb250aCgzKihhLTEpK3RoaXMubW9udGgoKSUzKX0KLy8gSEVMUEVSUwovLyBNT01FTlRTCmZ1bmN0aW9uIEhjKGEpe3ZhciBiPU1hdGgucm91bmQoKHRoaXMuY2xvbmUoKS5zdGFydE9mKCJkYXkiKS10aGlzLmNsb25lKCkuc3RhcnRPZigieWVhciIpKS84NjRlNSkrMTtyZXR1cm4gbnVsbD09YT9iOnRoaXMuYWRkKGEtYiwiZCIpfWZ1bmN0aW9uIEljKGEsYil7YltnZV09dSgxZTMqKCIwLiIrYSkpfQovLyBNT01FTlRTCmZ1bmN0aW9uIEpjKCl7cmV0dXJuIHRoaXMuX2lzVVRDPyJVVEMiOiIifWZ1bmN0aW9uIEtjKCl7cmV0dXJuIHRoaXMuX2lzVVRDPyJDb29yZGluYXRlZCBVbml2ZXJzYWwgVGltZSI6IiJ9ZnVuY3Rpb24gTGMoYSl7cmV0dXJuIHNiKDFlMyphKX1mdW5jdGlvbiBNYygpe3JldHVybiBzYi5hcHBseShudWxsLGFyZ3VtZW50cykucGFyc2Vab25lKCl9ZnVuY3Rpb24gTmMoYSl7cmV0dXJuIGF9ZnVuY3Rpb24gT2MoYSxiLGMsZCl7dmFyIGU9YmIoKSxmPWsoKS5zZXQoZCxiKTtyZXR1cm4gZVtjXShmLGEpfWZ1bmN0aW9uIFBjKGEsYixjKXtpZihmKGEpJiYoYj1hLGE9dm9pZCAwKSxhPWF8fCIiLG51bGwhPWIpcmV0dXJuIE9jKGEsYixjLCJtb250aCIpO3ZhciBkLGU9W107Zm9yKGQ9MDtkPDEyO2QrKyllW2RdPU9jKGEsZCxjLCJtb250aCIpO3JldHVybiBlfQovLyAoKQovLyAoNSkKLy8gKGZtdCwgNSkKLy8gKGZtdCkKLy8gKHRydWUpCi8vICh0cnVlLCA1KQovLyAodHJ1ZSwgZm10LCA1KQovLyAodHJ1ZSwgZm10KQpmdW5jdGlvbiBRYyhhLGIsYyxkKXsiYm9vbGVhbiI9PXR5cGVvZiBhPyhmKGIpJiYoYz1iLGI9dm9pZCAwKSxiPWJ8fCIiKTooYj1hLGM9YixhPSExLGYoYikmJihjPWIsYj12b2lkIDApLGI9Ynx8IiIpO3ZhciBlPWJiKCksZz1hP2UuX3dlZWsuZG93OjA7aWYobnVsbCE9YylyZXR1cm4gT2MoYiwoYytnKSU3LGQsImRheSIpO3ZhciBoLGk9W107Zm9yKGg9MDtoPDc7aCsrKWlbaF09T2MoYiwoaCtnKSU3LGQsImRheSIpO3JldHVybiBpfWZ1bmN0aW9uIFJjKGEsYil7cmV0dXJuIFBjKGEsYiwibW9udGhzIil9ZnVuY3Rpb24gU2MoYSxiKXtyZXR1cm4gUGMoYSxiLCJtb250aHNTaG9ydCIpfWZ1bmN0aW9uIFRjKGEsYixjKXtyZXR1cm4gUWMoYSxiLGMsIndlZWtkYXlzIil9ZnVuY3Rpb24gVWMoYSxiLGMpe3JldHVybiBRYyhhLGIsYywid2Vla2RheXNTaG9ydCIpfWZ1bmN0aW9uIFZjKGEsYixjKXtyZXR1cm4gUWMoYSxiLGMsIndlZWtkYXlzTWluIil9ZnVuY3Rpb24gV2MoKXt2YXIgYT10aGlzLl9kYXRhO3JldHVybiB0aGlzLl9taWxsaXNlY29uZHM9WmUodGhpcy5fbWlsbGlzZWNvbmRzKSx0aGlzLl9kYXlzPVplKHRoaXMuX2RheXMpLHRoaXMuX21vbnRocz1aZSh0aGlzLl9tb250aHMpLGEubWlsbGlzZWNvbmRzPVplKGEubWlsbGlzZWNvbmRzKSxhLnNlY29uZHM9WmUoYS5zZWNvbmRzKSxhLm1pbnV0ZXM9WmUoYS5taW51dGVzKSxhLmhvdXJzPVplKGEuaG91cnMpLGEubW9udGhzPVplKGEubW9udGhzKSxhLnllYXJzPVplKGEueWVhcnMpLHRoaXN9ZnVuY3Rpb24gWGMoYSxiLGMsZCl7dmFyIGU9T2IoYixjKTtyZXR1cm4gYS5fbWlsbGlzZWNvbmRzKz1kKmUuX21pbGxpc2Vjb25kcyxhLl9kYXlzKz1kKmUuX2RheXMsYS5fbW9udGhzKz1kKmUuX21vbnRocyxhLl9idWJibGUoKX0KLy8gc3VwcG9ydHMgb25seSAyLjAtc3R5bGUgYWRkKDEsICdzJykgb3IgYWRkKGR1cmF0aW9uKQpmdW5jdGlvbiBZYyhhLGIpe3JldHVybiBYYyh0aGlzLGEsYiwxKX0KLy8gc3VwcG9ydHMgb25seSAyLjAtc3R5bGUgc3VidHJhY3QoMSwgJ3MnKSBvciBzdWJ0cmFjdChkdXJhdGlvbikKZnVuY3Rpb24gWmMoYSxiKXtyZXR1cm4gWGModGhpcyxhLGIsLTEpfWZ1bmN0aW9uICRjKGEpe3JldHVybiBhPDA/TWF0aC5mbG9vcihhKTpNYXRoLmNlaWwoYSl9ZnVuY3Rpb24gX2MoKXt2YXIgYSxiLGMsZCxlLGY9dGhpcy5fbWlsbGlzZWNvbmRzLGc9dGhpcy5fZGF5cyxoPXRoaXMuX21vbnRocyxpPXRoaXMuX2RhdGE7Ci8vIGlmIHdlIGhhdmUgYSBtaXggb2YgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIHZhbHVlcywgYnViYmxlIGRvd24gZmlyc3QKLy8gY2hlY2s6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L2lzc3Vlcy8yMTY2Ci8vIFRoZSBmb2xsb3dpbmcgY29kZSBidWJibGVzIHVwIHZhbHVlcywgc2VlIHRoZSB0ZXN0cyBmb3IKLy8gZXhhbXBsZXMgb2Ygd2hhdCB0aGF0IG1lYW5zLgovLyBjb252ZXJ0IGRheXMgdG8gbW9udGhzCi8vIDEyIG1vbnRocyAtPiAxIHllYXIKcmV0dXJuIGY+PTAmJmc+PTAmJmg+PTB8fGY8PTAmJmc8PTAmJmg8PTB8fChmKz04NjRlNSokYyhiZChoKStnKSxnPTAsaD0wKSxpLm1pbGxpc2Vjb25kcz1mJTFlMyxhPXQoZi8xZTMpLGkuc2Vjb25kcz1hJTYwLGI9dChhLzYwKSxpLm1pbnV0ZXM9YiU2MCxjPXQoYi82MCksaS5ob3Vycz1jJTI0LGcrPXQoYy8yNCksZT10KGFkKGcpKSxoKz1lLGctPSRjKGJkKGUpKSxkPXQoaC8xMiksaCU9MTIsaS5kYXlzPWcsaS5tb250aHM9aCxpLnllYXJzPWQsdGhpc31mdW5jdGlvbiBhZChhKXsKLy8gNDAwIHllYXJzIGhhdmUgMTQ2MDk3IGRheXMgKHRha2luZyBpbnRvIGFjY291bnQgbGVhcCB5ZWFyIHJ1bGVzKQovLyA0MDAgeWVhcnMgaGF2ZSAxMiBtb250aHMgPT09IDQ4MDAKcmV0dXJuIDQ4MDAqYS8xNDYwOTd9ZnVuY3Rpb24gYmQoYSl7Ci8vIHRoZSByZXZlcnNlIG9mIGRheXNUb01vbnRocwpyZXR1cm4gMTQ2MDk3KmEvNDgwMH1mdW5jdGlvbiBjZChhKXt2YXIgYixjLGQ9dGhpcy5fbWlsbGlzZWNvbmRzO2lmKGE9SyhhKSwibW9udGgiPT09YXx8InllYXIiPT09YSlyZXR1cm4gYj10aGlzLl9kYXlzK2QvODY0ZTUsYz10aGlzLl9tb250aHMrYWQoYiksIm1vbnRoIj09PWE/YzpjLzEyO3N3aXRjaCgKLy8gaGFuZGxlIG1pbGxpc2Vjb25kcyBzZXBhcmF0ZWx5IGJlY2F1c2Ugb2YgZmxvYXRpbmcgcG9pbnQgbWF0aCBlcnJvcnMgKGlzc3VlICMxODY3KQpiPXRoaXMuX2RheXMrTWF0aC5yb3VuZChiZCh0aGlzLl9tb250aHMpKSxhKXtjYXNlIndlZWsiOnJldHVybiBiLzcrZC82MDQ4ZTU7Y2FzZSJkYXkiOnJldHVybiBiK2QvODY0ZTU7Y2FzZSJob3VyIjpyZXR1cm4gMjQqYitkLzM2ZTU7Y2FzZSJtaW51dGUiOnJldHVybiAxNDQwKmIrZC82ZTQ7Y2FzZSJzZWNvbmQiOnJldHVybiA4NjQwMCpiK2QvMWUzOwovLyBNYXRoLmZsb29yIHByZXZlbnRzIGZsb2F0aW5nIHBvaW50IG1hdGggZXJyb3JzIGhlcmUKY2FzZSJtaWxsaXNlY29uZCI6cmV0dXJuIE1hdGguZmxvb3IoODY0ZTUqYikrZDtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5rbm93biB1bml0ICIrYSl9fQovLyBUT0RPOiBVc2UgdGhpcy5hcygnbXMnKT8KZnVuY3Rpb24gZGQoKXtyZXR1cm4gdGhpcy5fbWlsbGlzZWNvbmRzKzg2NGU1KnRoaXMuX2RheXMrdGhpcy5fbW9udGhzJTEyKjI1OTJlNiszMTUzNmU2KnUodGhpcy5fbW9udGhzLzEyKX1mdW5jdGlvbiBlZChhKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcyhhKX19ZnVuY3Rpb24gZmQoYSl7cmV0dXJuIGE9SyhhKSx0aGlzW2ErInMiXSgpfWZ1bmN0aW9uIGdkKGEpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kYXRhW2FdfX1mdW5jdGlvbiBoZCgpe3JldHVybiB0KHRoaXMuZGF5cygpLzcpfQovLyBoZWxwZXIgZnVuY3Rpb24gZm9yIG1vbWVudC5mbi5mcm9tLCBtb21lbnQuZm4uZnJvbU5vdywgYW5kIG1vbWVudC5kdXJhdGlvbi5mbi5odW1hbml6ZQpmdW5jdGlvbiBpZChhLGIsYyxkLGUpe3JldHVybiBlLnJlbGF0aXZlVGltZShifHwxLCEhYyxhLGQpfWZ1bmN0aW9uIGpkKGEsYixjKXt2YXIgZD1PYihhKS5hYnMoKSxlPW9mKGQuYXMoInMiKSksZj1vZihkLmFzKCJtIikpLGc9b2YoZC5hcygiaCIpKSxoPW9mKGQuYXMoImQiKSksaT1vZihkLmFzKCJNIikpLGo9b2YoZC5hcygieSIpKSxrPWU8cGYucyYmWyJzIixlXXx8Zjw9MSYmWyJtIl18fGY8cGYubSYmWyJtbSIsZl18fGc8PTEmJlsiaCJdfHxnPHBmLmgmJlsiaGgiLGddfHxoPD0xJiZbImQiXXx8aDxwZi5kJiZbImRkIixoXXx8aTw9MSYmWyJNIl18fGk8cGYuTSYmWyJNTSIsaV18fGo8PTEmJlsieSJdfHxbInl5IixqXTtyZXR1cm4ga1syXT1iLGtbM109K2E+MCxrWzRdPWMsaWQuYXBwbHkobnVsbCxrKX0KLy8gVGhpcyBmdW5jdGlvbiBhbGxvd3MgeW91IHRvIHNldCB0aGUgcm91bmRpbmcgZnVuY3Rpb24gZm9yIHJlbGF0aXZlIHRpbWUgc3RyaW5ncwpmdW5jdGlvbiBrZChhKXtyZXR1cm4gdm9pZCAwPT09YT9vZjoiZnVuY3Rpb24iPT10eXBlb2YgYSYmKG9mPWEsITApfQovLyBUaGlzIGZ1bmN0aW9uIGFsbG93cyB5b3UgdG8gc2V0IGEgdGhyZXNob2xkIGZvciByZWxhdGl2ZSB0aW1lIHN0cmluZ3MKZnVuY3Rpb24gbGQoYSxiKXtyZXR1cm4gdm9pZCAwIT09cGZbYV0mJih2b2lkIDA9PT1iP3BmW2FdOihwZlthXT1iLCEwKSl9ZnVuY3Rpb24gbWQoYSl7dmFyIGI9dGhpcy5sb2NhbGVEYXRhKCksYz1qZCh0aGlzLCFhLGIpO3JldHVybiBhJiYoYz1iLnBhc3RGdXR1cmUoK3RoaXMsYykpLGIucG9zdGZvcm1hdChjKX1mdW5jdGlvbiBuZCgpewovLyBmb3IgSVNPIHN0cmluZ3Mgd2UgZG8gbm90IHVzZSB0aGUgbm9ybWFsIGJ1YmJsaW5nIHJ1bGVzOgovLyAgKiBtaWxsaXNlY29uZHMgYnViYmxlIHVwIHVudGlsIHRoZXkgYmVjb21lIGhvdXJzCi8vICAqIGRheXMgZG8gbm90IGJ1YmJsZSBhdCBhbGwKLy8gICogbW9udGhzIGJ1YmJsZSB1cCB1bnRpbCB0aGV5IGJlY29tZSB5ZWFycwovLyBUaGlzIGlzIGJlY2F1c2UgdGhlcmUgaXMgbm8gY29udGV4dC1mcmVlIGNvbnZlcnNpb24gYmV0d2VlbiBob3VycyBhbmQgZGF5cwovLyAodGhpbmsgb2YgY2xvY2sgY2hhbmdlcykKLy8gYW5kIGFsc28gbm90IGJldHdlZW4gZGF5cyBhbmQgbW9udGhzICgyOC0zMSBkYXlzIHBlciBtb250aCkKdmFyIGEsYixjLGQ9cWYodGhpcy5fbWlsbGlzZWNvbmRzKS8xZTMsZT1xZih0aGlzLl9kYXlzKSxmPXFmKHRoaXMuX21vbnRocyk7Ci8vIDM2MDAgc2Vjb25kcyAtPiA2MCBtaW51dGVzIC0+IDEgaG91cgphPXQoZC82MCksYj10KGEvNjApLGQlPTYwLGElPTYwLAovLyAxMiBtb250aHMgLT4gMSB5ZWFyCmM9dChmLzEyKSxmJT0xMjsKLy8gaW5zcGlyZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL2RvcmRpbGxlL21vbWVudC1pc29kdXJhdGlvbi9ibG9iL21hc3Rlci9tb21lbnQuaXNvZHVyYXRpb24uanMKdmFyIGc9YyxoPWYsaT1lLGo9YixrPWEsbD1kLG09dGhpcy5hc1NlY29uZHMoKTtyZXR1cm4gbT8obTwwPyItIjoiIikrIlAiKyhnP2crIlkiOiIiKSsoaD9oKyJNIjoiIikrKGk/aSsiRCI6IiIpKyhqfHxrfHxsPyJUIjoiIikrKGo/aisiSCI6IiIpKyhrP2srIk0iOiIiKSsobD9sKyJTIjoiIik6IlAwRCJ9dmFyIG9kLHBkO3BkPUFycmF5LnByb3RvdHlwZS5zb21lP0FycmF5LnByb3RvdHlwZS5zb21lOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1PYmplY3QodGhpcyksYz1iLmxlbmd0aD4+PjAsZD0wO2Q8YztkKyspaWYoZCBpbiBiJiZhLmNhbGwodGhpcyxiW2RdLGQsYikpcmV0dXJuITA7cmV0dXJuITF9O3ZhciBxZD1wZCxyZD1hLm1vbWVudFByb3BlcnRpZXM9W10sc2Q9ITEsdGQ9e307YS5zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3M9ITEsYS5kZXByZWNhdGlvbkhhbmRsZXI9bnVsbDt2YXIgdWQ7dWQ9T2JqZWN0LmtleXM/T2JqZWN0LmtleXM6ZnVuY3Rpb24oYSl7dmFyIGIsYz1bXTtmb3IoYiBpbiBhKWkoYSxiKSYmYy5wdXNoKGIpO3JldHVybiBjfTt2YXIgdmQsd2Q9dWQseGQ9e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSx5ZD17TFRTOiJoOm1tOnNzIEEiLExUOiJoOm1tIEEiLEw6Ik1NL0REL1lZWVkiLExMOiJNTU1NIEQsIFlZWVkiLExMTDoiTU1NTSBELCBZWVlZIGg6bW0gQSIsTExMTDoiZGRkZCwgTU1NTSBELCBZWVlZIGg6bW0gQSJ9LHpkPSJJbnZhbGlkIGRhdGUiLEFkPSIlZCIsQmQ9L1xkezEsMn0vLENkPXtmdXR1cmU6ImluICVzIixwYXN0OiIlcyBhZ28iLHM6ImEgZmV3IHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sRGQ9e30sRWQ9e30sRmQ9LyhcW1teXFtdKlxdKXwoXFwpPyhbSGhdbW0oc3MpP3xNb3xNTT9NP00/fERvfERERG98REQ/RD9EP3xkZGQ/ZD98ZG8/fHdbb3x3XT98V1tvfFddP3xRbz98WVlZWVlZfFlZWVlZfFlZWVl8WVl8Z2coZ2dnPyk/fEdHKEdHRz8pP3xlfEV8YXxBfGhoP3xISD98a2s/fG1tP3xzcz98U3sxLDl9fHh8WHx6ej98Wlo/fC4pL2csR2Q9LyhcW1teXFtdKlxdKXwoXFwpPyhMVFN8TFR8TEw/TD9MP3xsezEsNH0pL2csSGQ9e30sSWQ9e30sSmQ9L1xkLyxLZD0vXGRcZC8sTGQ9L1xkezN9LyxNZD0vXGR7NH0vLE5kPS9bKy1dP1xkezZ9LyxPZD0vXGRcZD8vLFBkPS9cZFxkXGRcZD8vLFFkPS9cZFxkXGRcZFxkXGQ/LyxSZD0vXGR7MSwzfS8sU2Q9L1xkezEsNH0vLFRkPS9bKy1dP1xkezEsNn0vLFVkPS9cZCsvLFZkPS9bKy1dP1xkKy8sV2Q9L1p8WystXVxkXGQ6P1xkXGQvZ2ksWGQ9L1p8WystXVxkXGQoPzo6P1xkXGQpPy9naSxZZD0vWystXT9cZCsoXC5cZHsxLDN9KT8vLFpkPS9bMC05XSpbJ2Etelx1MDBBMC1cdTA1RkZcdTA3MDAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdK3xbXHUwNjAwLVx1MDZGRlwvXSsoXHMqP1tcdTA2MDAtXHUwNkZGXSspezEsMn0vaSwkZD17fSxfZD17fSxhZT0wLGJlPTEsY2U9MixkZT0zLGVlPTQsZmU9NSxnZT02LGhlPTcsaWU9ODt2ZD1BcnJheS5wcm90b3R5cGUuaW5kZXhPZj9BcnJheS5wcm90b3R5cGUuaW5kZXhPZjpmdW5jdGlvbihhKXsKLy8gSSBrbm93CnZhciBiO2ZvcihiPTA7Yjx0aGlzLmxlbmd0aDsrK2IpaWYodGhpc1tiXT09PWEpcmV0dXJuIGI7cmV0dXJuLTF9O3ZhciBqZT12ZDsKLy8gRk9STUFUVElORwpVKCJNIixbIk1NIiwyXSwiTW8iLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubW9udGgoKSsxfSksVSgiTU1NIiwwLDAsZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm1vbnRoc1Nob3J0KHRoaXMsYSl9KSxVKCJNTU1NIiwwLDAsZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm1vbnRocyh0aGlzLGEpfSksCi8vIEFMSUFTRVMKSigibW9udGgiLCJNIiksCi8vIFBSSU9SSVRZCk0oIm1vbnRoIiw4KSwKLy8gUEFSU0lORwpaKCJNIixPZCksWigiTU0iLE9kLEtkKSxaKCJNTU0iLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGIubW9udGhzU2hvcnRSZWdleChhKX0pLFooIk1NTU0iLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGIubW9udGhzUmVnZXgoYSl9KSxiYShbIk0iLCJNTSJdLGZ1bmN0aW9uKGEsYil7YltiZV09dShhKS0xfSksYmEoWyJNTU0iLCJNTU1NIl0sZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9Yy5fbG9jYWxlLm1vbnRoc1BhcnNlKGEsZCxjLl9zdHJpY3QpOwovLyBpZiB3ZSBkaWRuJ3QgZmluZCBhIG1vbnRoIG5hbWUsIG1hcmsgdGhlIGRhdGUgYXMgaW52YWxpZC4KbnVsbCE9ZT9iW2JlXT1lOm0oYykuaW52YWxpZE1vbnRoPWF9KTsKLy8gTE9DQUxFUwp2YXIga2U9L0Rbb0RdPyhcW1teXFtcXV0qXF18XHMpK01NTU0/LyxsZT0iSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxtZT0iSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMiLnNwbGl0KCJfIiksbmU9WmQsb2U9WmQ7Ci8vIEZPUk1BVFRJTkcKVSgiWSIsMCwwLGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy55ZWFyKCk7cmV0dXJuIGE8PTk5OTk/IiIrYToiKyIrYX0pLFUoMCxbIllZIiwyXSwwLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueWVhcigpJTEwMH0pLFUoMCxbIllZWVkiLDRdLDAsInllYXIiKSxVKDAsWyJZWVlZWSIsNV0sMCwieWVhciIpLFUoMCxbIllZWVlZWSIsNiwhMF0sMCwieWVhciIpLAovLyBBTElBU0VTCkooInllYXIiLCJ5IiksCi8vIFBSSU9SSVRJRVMKTSgieWVhciIsMSksCi8vIFBBUlNJTkcKWigiWSIsVmQpLFooIllZIixPZCxLZCksWigiWVlZWSIsU2QsTWQpLFooIllZWVlZIixUZCxOZCksWigiWVlZWVlZIixUZCxOZCksYmEoWyJZWVlZWSIsIllZWVlZWSJdLGFlKSxiYSgiWVlZWSIsZnVuY3Rpb24oYixjKXtjW2FlXT0yPT09Yi5sZW5ndGg/YS5wYXJzZVR3b0RpZ2l0WWVhcihiKTp1KGIpfSksYmEoIllZIixmdW5jdGlvbihiLGMpe2NbYWVdPWEucGFyc2VUd29EaWdpdFllYXIoYil9KSxiYSgiWSIsZnVuY3Rpb24oYSxiKXtiW2FlXT1wYXJzZUludChhLDEwKX0pLAovLyBIT09LUwphLnBhcnNlVHdvRGlnaXRZZWFyPWZ1bmN0aW9uKGEpe3JldHVybiB1KGEpKyh1KGEpPjY4PzE5MDA6MmUzKX07Ci8vIE1PTUVOVFMKdmFyIHBlPU8oIkZ1bGxZZWFyIiwhMCk7Ci8vIEZPUk1BVFRJTkcKVSgidyIsWyJ3dyIsMl0sIndvIiwid2VlayIpLFUoIlciLFsiV1ciLDJdLCJXbyIsImlzb1dlZWsiKSwKLy8gQUxJQVNFUwpKKCJ3ZWVrIiwidyIpLEooImlzb1dlZWsiLCJXIiksCi8vIFBSSU9SSVRJRVMKTSgid2VlayIsNSksTSgiaXNvV2VlayIsNSksCi8vIFBBUlNJTkcKWigidyIsT2QpLFooInd3IixPZCxLZCksWigiVyIsT2QpLFooIldXIixPZCxLZCksY2EoWyJ3Iiwid3ciLCJXIiwiV1ciXSxmdW5jdGlvbihhLGIsYyxkKXtiW2Quc3Vic3RyKDAsMSldPXUoYSl9KTt2YXIgcWU9e2RvdzowLC8vIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgpkb3k6Nn07Ci8vIEZPUk1BVFRJTkcKVSgiZCIsMCwiZG8iLCJkYXkiKSxVKCJkZCIsMCwwLGZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5c01pbih0aGlzLGEpfSksVSgiZGRkIiwwLDAsZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzU2hvcnQodGhpcyxhKX0pLFUoImRkZGQiLDAsMCxmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXModGhpcyxhKX0pLFUoImUiLDAsMCwid2Vla2RheSIpLFUoIkUiLDAsMCwiaXNvV2Vla2RheSIpLAovLyBBTElBU0VTCkooImRheSIsImQiKSxKKCJ3ZWVrZGF5IiwiZSIpLEooImlzb1dlZWtkYXkiLCJFIiksCi8vIFBSSU9SSVRZCk0oImRheSIsMTEpLE0oIndlZWtkYXkiLDExKSxNKCJpc29XZWVrZGF5IiwxMSksCi8vIFBBUlNJTkcKWigiZCIsT2QpLFooImUiLE9kKSxaKCJFIixPZCksWigiZGQiLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGIud2Vla2RheXNNaW5SZWdleChhKX0pLFooImRkZCIsZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi53ZWVrZGF5c1Nob3J0UmVnZXgoYSl9KSxaKCJkZGRkIixmdW5jdGlvbihhLGIpe3JldHVybiBiLndlZWtkYXlzUmVnZXgoYSl9KSxjYShbImRkIiwiZGRkIiwiZGRkZCJdLGZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWMuX2xvY2FsZS53ZWVrZGF5c1BhcnNlKGEsZCxjLl9zdHJpY3QpOwovLyBpZiB3ZSBkaWRuJ3QgZ2V0IGEgd2Vla2RheSBuYW1lLCBtYXJrIHRoZSBkYXRlIGFzIGludmFsaWQKbnVsbCE9ZT9iLmQ9ZTptKGMpLmludmFsaWRXZWVrZGF5PWF9KSxjYShbImQiLCJlIiwiRSJdLGZ1bmN0aW9uKGEsYixjLGQpe2JbZF09dShhKX0pOwovLyBMT0NBTEVTCnZhciByZT0iU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXkiLnNwbGl0KCJfIiksc2U9IlN1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCIuc3BsaXQoIl8iKSx0ZT0iU3VfTW9fVHVfV2VfVGhfRnJfU2EiLnNwbGl0KCJfIiksdWU9WmQsdmU9WmQsd2U9WmQ7VSgiSCIsWyJISCIsMl0sMCwiaG91ciIpLFUoImgiLFsiaGgiLDJdLDAsUmEpLFUoImsiLFsia2siLDJdLDAsU2EpLFUoImhtbSIsMCwwLGZ1bmN0aW9uKCl7cmV0dXJuIiIrUmEuYXBwbHkodGhpcykrVCh0aGlzLm1pbnV0ZXMoKSwyKX0pLFUoImhtbXNzIiwwLDAsZnVuY3Rpb24oKXtyZXR1cm4iIitSYS5hcHBseSh0aGlzKStUKHRoaXMubWludXRlcygpLDIpK1QodGhpcy5zZWNvbmRzKCksMil9KSxVKCJIbW0iLDAsMCxmdW5jdGlvbigpe3JldHVybiIiK3RoaXMuaG91cnMoKStUKHRoaXMubWludXRlcygpLDIpfSksVSgiSG1tc3MiLDAsMCxmdW5jdGlvbigpe3JldHVybiIiK3RoaXMuaG91cnMoKStUKHRoaXMubWludXRlcygpLDIpK1QodGhpcy5zZWNvbmRzKCksMil9KSxUYSgiYSIsITApLFRhKCJBIiwhMSksCi8vIEFMSUFTRVMKSigiaG91ciIsImgiKSwKLy8gUFJJT1JJVFkKTSgiaG91ciIsMTMpLFooImEiLFVhKSxaKCJBIixVYSksWigiSCIsT2QpLFooImgiLE9kKSxaKCJISCIsT2QsS2QpLFooImhoIixPZCxLZCksWigiaG1tIixQZCksWigiaG1tc3MiLFFkKSxaKCJIbW0iLFBkKSxaKCJIbW1zcyIsUWQpLGJhKFsiSCIsIkhIIl0sZGUpLGJhKFsiYSIsIkEiXSxmdW5jdGlvbihhLGIsYyl7Yy5faXNQbT1jLl9sb2NhbGUuaXNQTShhKSxjLl9tZXJpZGllbT1hfSksYmEoWyJoIiwiaGgiXSxmdW5jdGlvbihhLGIsYyl7YltkZV09dShhKSxtKGMpLmJpZ0hvdXI9ITB9KSxiYSgiaG1tIixmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5sZW5ndGgtMjtiW2RlXT11KGEuc3Vic3RyKDAsZCkpLGJbZWVdPXUoYS5zdWJzdHIoZCkpLG0oYykuYmlnSG91cj0hMH0pLGJhKCJobW1zcyIsZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEubGVuZ3RoLTQsZT1hLmxlbmd0aC0yO2JbZGVdPXUoYS5zdWJzdHIoMCxkKSksYltlZV09dShhLnN1YnN0cihkLDIpKSxiW2ZlXT11KGEuc3Vic3RyKGUpKSxtKGMpLmJpZ0hvdXI9ITB9KSxiYSgiSG1tIixmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5sZW5ndGgtMjtiW2RlXT11KGEuc3Vic3RyKDAsZCkpLGJbZWVdPXUoYS5zdWJzdHIoZCkpfSksYmEoIkhtbXNzIixmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5sZW5ndGgtNCxlPWEubGVuZ3RoLTI7YltkZV09dShhLnN1YnN0cigwLGQpKSxiW2VlXT11KGEuc3Vic3RyKGQsMikpLGJbZmVdPXUoYS5zdWJzdHIoZSkpfSk7dmFyIHhlLHllPS9bYXBdXC4/bT9cLj8vaSx6ZT1PKCJIb3VycyIsITApLEFlPXtjYWxlbmRhcjp4ZCxsb25nRGF0ZUZvcm1hdDp5ZCxpbnZhbGlkRGF0ZTp6ZCxvcmRpbmFsOkFkLG9yZGluYWxQYXJzZTpCZCxyZWxhdGl2ZVRpbWU6Q2QsbW9udGhzOmxlLG1vbnRoc1Nob3J0Om1lLHdlZWs6cWUsd2Vla2RheXM6cmUsd2Vla2RheXNNaW46dGUsd2Vla2RheXNTaG9ydDpzZSxtZXJpZGllbVBhcnNlOnllfSxCZT17fSxDZT17fSxEZT0vXlxzKigoPzpbKy1dXGR7Nn18XGR7NH0pLSg/OlxkXGQtXGRcZHxXXGRcZC1cZHxXXGRcZHxcZFxkXGR8XGRcZCkpKD86KFR8ICkoXGRcZCg/OjpcZFxkKD86OlxkXGQoPzpbLixdXGQrKT8pPyk/KShbXCtcLV1cZFxkKD86Oj9cZFxkKT98XHMqWik/KT8kLyxFZT0vXlxzKigoPzpbKy1dXGR7Nn18XGR7NH0pKD86XGRcZFxkXGR8V1xkXGRcZHxXXGRcZHxcZFxkXGR8XGRcZCkpKD86KFR8ICkoXGRcZCg/OlxkXGQoPzpcZFxkKD86Wy4sXVxkKyk/KT8pPykoW1wrXC1dXGRcZCg/Ojo/XGRcZCk/fFxzKlopPyk/JC8sRmU9L1p8WystXVxkXGQoPzo6P1xkXGQpPy8sR2U9W1siWVlZWVlZLU1NLUREIiwvWystXVxkezZ9LVxkXGQtXGRcZC9dLFsiWVlZWS1NTS1ERCIsL1xkezR9LVxkXGQtXGRcZC9dLFsiR0dHRy1bV11XVy1FIiwvXGR7NH0tV1xkXGQtXGQvXSxbIkdHR0ctW1ddV1ciLC9cZHs0fS1XXGRcZC8sITFdLFsiWVlZWS1EREQiLC9cZHs0fS1cZHszfS9dLFsiWVlZWS1NTSIsL1xkezR9LVxkXGQvLCExXSxbIllZWVlZWU1NREQiLC9bKy1dXGR7MTB9L10sWyJZWVlZTU1ERCIsL1xkezh9L10sCi8vIFlZWVlNTSBpcyBOT1QgYWxsb3dlZCBieSB0aGUgc3RhbmRhcmQKWyJHR0dHW1ddV1dFIiwvXGR7NH1XXGR7M30vXSxbIkdHR0dbV11XVyIsL1xkezR9V1xkezJ9LywhMV0sWyJZWVlZREREIiwvXGR7N30vXV0sSGU9W1siSEg6bW06c3MuU1NTUyIsL1xkXGQ6XGRcZDpcZFxkXC5cZCsvXSxbIkhIOm1tOnNzLFNTU1MiLC9cZFxkOlxkXGQ6XGRcZCxcZCsvXSxbIkhIOm1tOnNzIiwvXGRcZDpcZFxkOlxkXGQvXSxbIkhIOm1tIiwvXGRcZDpcZFxkL10sWyJISG1tc3MuU1NTUyIsL1xkXGRcZFxkXGRcZFwuXGQrL10sWyJISG1tc3MsU1NTUyIsL1xkXGRcZFxkXGRcZCxcZCsvXSxbIkhIbW1zcyIsL1xkXGRcZFxkXGRcZC9dLFsiSEhtbSIsL1xkXGRcZFxkL10sWyJISCIsL1xkXGQvXV0sSWU9L15cLz9EYXRlXCgoXC0/XGQrKS9pO2EuY3JlYXRlRnJvbUlucHV0RmFsbGJhY2s9eCgidmFsdWUgcHJvdmlkZWQgaXMgbm90IGluIGEgcmVjb2duaXplZCBJU08gZm9ybWF0LiBtb21lbnQgY29uc3RydWN0aW9uIGZhbGxzIGJhY2sgdG8ganMgRGF0ZSgpLCB3aGljaCBpcyBub3QgcmVsaWFibGUgYWNyb3NzIGFsbCBicm93c2VycyBhbmQgdmVyc2lvbnMuIE5vbiBJU08gZGF0ZSBmb3JtYXRzIGFyZSBkaXNjb3VyYWdlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGFuIHVwY29taW5nIG1ham9yIHJlbGVhc2UuIFBsZWFzZSByZWZlciB0byBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2pzLWRhdGUvIGZvciBtb3JlIGluZm8uIixmdW5jdGlvbihhKXthLl9kPW5ldyBEYXRlKGEuX2krKGEuX3VzZVVUQz8iIFVUQyI6IiIpKX0pLAovLyBjb25zdGFudCB0aGF0IHJlZmVycyB0byB0aGUgSVNPIHN0YW5kYXJkCmEuSVNPXzg2MDE9ZnVuY3Rpb24oKXt9O3ZhciBKZT14KCJtb21lbnQoKS5taW4gaXMgZGVwcmVjYXRlZCwgdXNlIG1vbWVudC5tYXggaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9taW4tbWF4LyIsZnVuY3Rpb24oKXt2YXIgYT1zYi5hcHBseShudWxsLGFyZ3VtZW50cyk7cmV0dXJuIHRoaXMuaXNWYWxpZCgpJiZhLmlzVmFsaWQoKT9hPHRoaXM/dGhpczphOm8oKX0pLEtlPXgoIm1vbWVudCgpLm1heCBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50Lm1pbiBpbnN0ZWFkLiBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL21pbi1tYXgvIixmdW5jdGlvbigpe3ZhciBhPXNiLmFwcGx5KG51bGwsYXJndW1lbnRzKTtyZXR1cm4gdGhpcy5pc1ZhbGlkKCkmJmEuaXNWYWxpZCgpP2E+dGhpcz90aGlzOmE6bygpfSksTGU9ZnVuY3Rpb24oKXtyZXR1cm4gRGF0ZS5ub3c/RGF0ZS5ub3coKTorbmV3IERhdGV9O3piKCJaIiwiOiIpLHpiKCJaWiIsIiIpLAovLyBQQVJTSU5HClooIloiLFhkKSxaKCJaWiIsWGQpLGJhKFsiWiIsIlpaIl0sZnVuY3Rpb24oYSxiLGMpe2MuX3VzZVVUQz0hMCxjLl90em09QWIoWGQsYSl9KTsKLy8gSEVMUEVSUwovLyB0aW1lem9uZSBjaHVua2VyCi8vICcrMTA6MDAnID4gWycxMCcsICAnMDAnXQovLyAnLTE1MzAnICA+IFsnLTE1JywgJzMwJ10KdmFyIE1lPS8oW1wrXC1dfFxkXGQpL2dpOwovLyBIT09LUwovLyBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIGEgbW9tZW50IGlzIG11dGF0ZWQuCi8vIEl0IGlzIGludGVuZGVkIHRvIGtlZXAgdGhlIG9mZnNldCBpbiBzeW5jIHdpdGggdGhlIHRpbWV6b25lLgphLnVwZGF0ZU9mZnNldD1mdW5jdGlvbigpe307Ci8vIEFTUC5ORVQganNvbiBkYXRlIGZvcm1hdCByZWdleAp2YXIgTmU9L14oXC0pPyg/OihcZCopWy4gXSk/KFxkKylcOihcZCspKD86XDooXGQrKShcLlxkKik/KT8kLyxPZT0vXigtKT9QKD86KC0/WzAtOSwuXSopWSk/KD86KC0/WzAtOSwuXSopTSk/KD86KC0/WzAtOSwuXSopVyk/KD86KC0/WzAtOSwuXSopRCk/KD86VCg/OigtP1swLTksLl0qKUgpPyg/OigtP1swLTksLl0qKU0pPyg/OigtP1swLTksLl0qKVMpPyk/JC87T2IuZm49d2IucHJvdG90eXBlO3ZhciBQZT1TYigxLCJhZGQiKSxRZT1TYigtMSwic3VidHJhY3QiKTthLmRlZmF1bHRGb3JtYXQ9IllZWVktTU0tRERUSEg6bW06c3NaIixhLmRlZmF1bHRGb3JtYXRVdGM9IllZWVktTU0tRERUSEg6bW06c3NbWl0iO3ZhciBSZT14KCJtb21lbnQoKS5sYW5nKCkgaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNlIG1vbWVudCgpLmxvY2FsZURhdGEoKSB0byBnZXQgdGhlIGxhbmd1YWdlIGNvbmZpZ3VyYXRpb24uIFVzZSBtb21lbnQoKS5sb2NhbGUoKSB0byBjaGFuZ2UgbGFuZ3VhZ2VzLiIsZnVuY3Rpb24oYSl7cmV0dXJuIHZvaWQgMD09PWE/dGhpcy5sb2NhbGVEYXRhKCk6dGhpcy5sb2NhbGUoYSl9KTsKLy8gRk9STUFUVElORwpVKDAsWyJnZyIsMl0sMCxmdW5jdGlvbigpe3JldHVybiB0aGlzLndlZWtZZWFyKCklMTAwfSksVSgwLFsiR0ciLDJdLDAsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc29XZWVrWWVhcigpJTEwMH0pLHpjKCJnZ2dnIiwid2Vla1llYXIiKSx6YygiZ2dnZ2ciLCJ3ZWVrWWVhciIpLHpjKCJHR0dHIiwiaXNvV2Vla1llYXIiKSx6YygiR0dHR0ciLCJpc29XZWVrWWVhciIpLAovLyBBTElBU0VTCkooIndlZWtZZWFyIiwiZ2ciKSxKKCJpc29XZWVrWWVhciIsIkdHIiksCi8vIFBSSU9SSVRZCk0oIndlZWtZZWFyIiwxKSxNKCJpc29XZWVrWWVhciIsMSksCi8vIFBBUlNJTkcKWigiRyIsVmQpLFooImciLFZkKSxaKCJHRyIsT2QsS2QpLFooImdnIixPZCxLZCksWigiR0dHRyIsU2QsTWQpLFooImdnZ2ciLFNkLE1kKSxaKCJHR0dHRyIsVGQsTmQpLFooImdnZ2dnIixUZCxOZCksY2EoWyJnZ2dnIiwiZ2dnZ2ciLCJHR0dHIiwiR0dHR0ciXSxmdW5jdGlvbihhLGIsYyxkKXtiW2Quc3Vic3RyKDAsMildPXUoYSl9KSxjYShbImdnIiwiR0ciXSxmdW5jdGlvbihiLGMsZCxlKXtjW2VdPWEucGFyc2VUd29EaWdpdFllYXIoYil9KSwKLy8gRk9STUFUVElORwpVKCJRIiwwLCJRbyIsInF1YXJ0ZXIiKSwKLy8gQUxJQVNFUwpKKCJxdWFydGVyIiwiUSIpLAovLyBQUklPUklUWQpNKCJxdWFydGVyIiw3KSwKLy8gUEFSU0lORwpaKCJRIixKZCksYmEoIlEiLGZ1bmN0aW9uKGEsYil7YltiZV09MyoodShhKS0xKX0pLAovLyBGT1JNQVRUSU5HClUoIkQiLFsiREQiLDJdLCJEbyIsImRhdGUiKSwKLy8gQUxJQVNFUwpKKCJkYXRlIiwiRCIpLAovLyBQUklPUk9JVFkKTSgiZGF0ZSIsOSksCi8vIFBBUlNJTkcKWigiRCIsT2QpLFooIkREIixPZCxLZCksWigiRG8iLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGE/Yi5fb3JkaW5hbFBhcnNlOmIuX29yZGluYWxQYXJzZUxlbmllbnR9KSxiYShbIkQiLCJERCJdLGNlKSxiYSgiRG8iLGZ1bmN0aW9uKGEsYil7YltjZV09dShhLm1hdGNoKE9kKVswXSwxMCl9KTsKLy8gTU9NRU5UUwp2YXIgU2U9TygiRGF0ZSIsITApOwovLyBGT1JNQVRUSU5HClUoIkRERCIsWyJEREREIiwzXSwiREREbyIsImRheU9mWWVhciIpLAovLyBBTElBU0VTCkooImRheU9mWWVhciIsIkRERCIpLAovLyBQUklPUklUWQpNKCJkYXlPZlllYXIiLDQpLAovLyBQQVJTSU5HClooIkRERCIsUmQpLFooIkREREQiLExkKSxiYShbIkRERCIsIkREREQiXSxmdW5jdGlvbihhLGIsYyl7Yy5fZGF5T2ZZZWFyPXUoYSl9KSwKLy8gRk9STUFUVElORwpVKCJtIixbIm1tIiwyXSwwLCJtaW51dGUiKSwKLy8gQUxJQVNFUwpKKCJtaW51dGUiLCJtIiksCi8vIFBSSU9SSVRZCk0oIm1pbnV0ZSIsMTQpLAovLyBQQVJTSU5HClooIm0iLE9kKSxaKCJtbSIsT2QsS2QpLGJhKFsibSIsIm1tIl0sZWUpOwovLyBNT01FTlRTCnZhciBUZT1PKCJNaW51dGVzIiwhMSk7Ci8vIEZPUk1BVFRJTkcKVSgicyIsWyJzcyIsMl0sMCwic2Vjb25kIiksCi8vIEFMSUFTRVMKSigic2Vjb25kIiwicyIpLAovLyBQUklPUklUWQpNKCJzZWNvbmQiLDE1KSwKLy8gUEFSU0lORwpaKCJzIixPZCksWigic3MiLE9kLEtkKSxiYShbInMiLCJzcyJdLGZlKTsKLy8gTU9NRU5UUwp2YXIgVWU9TygiU2Vjb25kcyIsITEpOwovLyBGT1JNQVRUSU5HClUoIlMiLDAsMCxmdW5jdGlvbigpe3JldHVybn5+KHRoaXMubWlsbGlzZWNvbmQoKS8xMDApfSksVSgwLFsiU1MiLDJdLDAsZnVuY3Rpb24oKXtyZXR1cm5+fih0aGlzLm1pbGxpc2Vjb25kKCkvMTApfSksVSgwLFsiU1NTIiwzXSwwLCJtaWxsaXNlY29uZCIpLFUoMCxbIlNTU1MiLDRdLDAsZnVuY3Rpb24oKXtyZXR1cm4gMTAqdGhpcy5taWxsaXNlY29uZCgpfSksVSgwLFsiU1NTU1MiLDVdLDAsZnVuY3Rpb24oKXtyZXR1cm4gMTAwKnRoaXMubWlsbGlzZWNvbmQoKX0pLFUoMCxbIlNTU1NTUyIsNl0sMCxmdW5jdGlvbigpe3JldHVybiAxZTMqdGhpcy5taWxsaXNlY29uZCgpfSksVSgwLFsiU1NTU1NTUyIsN10sMCxmdW5jdGlvbigpe3JldHVybiAxZTQqdGhpcy5taWxsaXNlY29uZCgpfSksVSgwLFsiU1NTU1NTU1MiLDhdLDAsZnVuY3Rpb24oKXtyZXR1cm4gMWU1KnRoaXMubWlsbGlzZWNvbmQoKX0pLFUoMCxbIlNTU1NTU1NTUyIsOV0sMCxmdW5jdGlvbigpe3JldHVybiAxZTYqdGhpcy5taWxsaXNlY29uZCgpfSksCi8vIEFMSUFTRVMKSigibWlsbGlzZWNvbmQiLCJtcyIpLAovLyBQUklPUklUWQpNKCJtaWxsaXNlY29uZCIsMTYpLAovLyBQQVJTSU5HClooIlMiLFJkLEpkKSxaKCJTUyIsUmQsS2QpLFooIlNTUyIsUmQsTGQpO3ZhciBWZTtmb3IoVmU9IlNTU1MiO1ZlLmxlbmd0aDw9OTtWZSs9IlMiKVooVmUsVWQpO2ZvcihWZT0iUyI7VmUubGVuZ3RoPD05O1ZlKz0iUyIpYmEoVmUsSWMpOwovLyBNT01FTlRTCnZhciBXZT1PKCJNaWxsaXNlY29uZHMiLCExKTsKLy8gRk9STUFUVElORwpVKCJ6IiwwLDAsInpvbmVBYmJyIiksVSgienoiLDAsMCwiem9uZU5hbWUiKTt2YXIgWGU9ci5wcm90b3R5cGU7WGUuYWRkPVBlLFhlLmNhbGVuZGFyPVZiLFhlLmNsb25lPVdiLFhlLmRpZmY9YmMsWGUuZW5kT2Y9b2MsWGUuZm9ybWF0PWdjLFhlLmZyb209aGMsWGUuZnJvbU5vdz1pYyxYZS50bz1qYyxYZS50b05vdz1rYyxYZS5nZXQ9UixYZS5pbnZhbGlkQXQ9eGMsWGUuaXNBZnRlcj1YYixYZS5pc0JlZm9yZT1ZYixYZS5pc0JldHdlZW49WmIsWGUuaXNTYW1lPSRiLFhlLmlzU2FtZU9yQWZ0ZXI9X2IsWGUuaXNTYW1lT3JCZWZvcmU9YWMsWGUuaXNWYWxpZD12YyxYZS5sYW5nPVJlLFhlLmxvY2FsZT1sYyxYZS5sb2NhbGVEYXRhPW1jLFhlLm1heD1LZSxYZS5taW49SmUsWGUucGFyc2luZ0ZsYWdzPXdjLFhlLnNldD1TLFhlLnN0YXJ0T2Y9bmMsWGUuc3VidHJhY3Q9UWUsWGUudG9BcnJheT1zYyxYZS50b09iamVjdD10YyxYZS50b0RhdGU9cmMsWGUudG9JU09TdHJpbmc9ZWMsWGUuaW5zcGVjdD1mYyxYZS50b0pTT049dWMsWGUudG9TdHJpbmc9ZGMsWGUudW5peD1xYyxYZS52YWx1ZU9mPXBjLFhlLmNyZWF0aW9uRGF0YT15YywKLy8gWWVhcgpYZS55ZWFyPXBlLFhlLmlzTGVhcFllYXI9cmEsCi8vIFdlZWsgWWVhcgpYZS53ZWVrWWVhcj1BYyxYZS5pc29XZWVrWWVhcj1CYywKLy8gUXVhcnRlcgpYZS5xdWFydGVyPVhlLnF1YXJ0ZXJzPUdjLAovLyBNb250aApYZS5tb250aD1rYSxYZS5kYXlzSW5Nb250aD1sYSwKLy8gV2VlawpYZS53ZWVrPVhlLndlZWtzPUJhLFhlLmlzb1dlZWs9WGUuaXNvV2Vla3M9Q2EsWGUud2Vla3NJblllYXI9RGMsWGUuaXNvV2Vla3NJblllYXI9Q2MsCi8vIERheQpYZS5kYXRlPVNlLFhlLmRheT1YZS5kYXlzPUthLFhlLndlZWtkYXk9TGEsWGUuaXNvV2Vla2RheT1NYSxYZS5kYXlPZlllYXI9SGMsCi8vIEhvdXIKWGUuaG91cj1YZS5ob3Vycz16ZSwKLy8gTWludXRlClhlLm1pbnV0ZT1YZS5taW51dGVzPVRlLAovLyBTZWNvbmQKWGUuc2Vjb25kPVhlLnNlY29uZHM9VWUsCi8vIE1pbGxpc2Vjb25kClhlLm1pbGxpc2Vjb25kPVhlLm1pbGxpc2Vjb25kcz1XZSwKLy8gT2Zmc2V0ClhlLnV0Y09mZnNldD1EYixYZS51dGM9RmIsWGUubG9jYWw9R2IsWGUucGFyc2Vab25lPUhiLFhlLmhhc0FsaWduZWRIb3VyT2Zmc2V0PUliLFhlLmlzRFNUPUpiLFhlLmlzTG9jYWw9TGIsWGUuaXNVdGNPZmZzZXQ9TWIsWGUuaXNVdGM9TmIsWGUuaXNVVEM9TmIsCi8vIFRpbWV6b25lClhlLnpvbmVBYmJyPUpjLFhlLnpvbmVOYW1lPUtjLAovLyBEZXByZWNhdGlvbnMKWGUuZGF0ZXM9eCgiZGF0ZXMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIGRhdGUgaW5zdGVhZC4iLFNlKSxYZS5tb250aHM9eCgibW9udGhzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSBtb250aCBpbnN0ZWFkIixrYSksWGUueWVhcnM9eCgieWVhcnMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIHllYXIgaW5zdGVhZCIscGUpLFhlLnpvbmU9eCgibW9tZW50KCkuem9uZSBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50KCkudXRjT2Zmc2V0IGluc3RlYWQuIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3Mvem9uZS8iLEViKSxYZS5pc0RTVFNoaWZ0ZWQ9eCgiaXNEU1RTaGlmdGVkIGlzIGRlcHJlY2F0ZWQuIFNlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2RzdC1zaGlmdGVkLyBmb3IgbW9yZSBpbmZvcm1hdGlvbiIsS2IpO3ZhciBZZT1DLnByb3RvdHlwZTtZZS5jYWxlbmRhcj1ELFllLmxvbmdEYXRlRm9ybWF0PUUsWWUuaW52YWxpZERhdGU9RixZZS5vcmRpbmFsPUcsWWUucHJlcGFyc2U9TmMsWWUucG9zdGZvcm1hdD1OYyxZZS5yZWxhdGl2ZVRpbWU9SCxZZS5wYXN0RnV0dXJlPUksWWUuc2V0PUEsCi8vIE1vbnRoClllLm1vbnRocz1mYSxZZS5tb250aHNTaG9ydD1nYSxZZS5tb250aHNQYXJzZT1pYSxZZS5tb250aHNSZWdleD1uYSxZZS5tb250aHNTaG9ydFJlZ2V4PW1hLAovLyBXZWVrClllLndlZWs9eWEsWWUuZmlyc3REYXlPZlllYXI9QWEsWWUuZmlyc3REYXlPZldlZWs9emEsCi8vIERheSBvZiBXZWVrClllLndlZWtkYXlzPUZhLFllLndlZWtkYXlzTWluPUhhLFllLndlZWtkYXlzU2hvcnQ9R2EsWWUud2Vla2RheXNQYXJzZT1KYSxZZS53ZWVrZGF5c1JlZ2V4PU5hLFllLndlZWtkYXlzU2hvcnRSZWdleD1PYSxZZS53ZWVrZGF5c01pblJlZ2V4PVBhLAovLyBIb3VycwpZZS5pc1BNPVZhLFllLm1lcmlkaWVtPVdhLCRhKCJlbiIse29yZGluYWxQYXJzZTovXGR7MSwyfSh0aHxzdHxuZHxyZCkvLG9yZGluYWw6ZnVuY3Rpb24oYSl7dmFyIGI9YSUxMCxjPTE9PT11KGElMTAwLzEwKT8idGgiOjE9PT1iPyJzdCI6Mj09PWI/Im5kIjozPT09Yj8icmQiOiJ0aCI7cmV0dXJuIGErY319KSwKLy8gU2lkZSBlZmZlY3QgaW1wb3J0cwphLmxhbmc9eCgibW9tZW50LmxhbmcgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGUgaW5zdGVhZC4iLCRhKSxhLmxhbmdEYXRhPXgoIm1vbWVudC5sYW5nRGF0YSBpcyBkZXByZWNhdGVkLiBVc2UgbW9tZW50LmxvY2FsZURhdGEgaW5zdGVhZC4iLGJiKTt2YXIgWmU9TWF0aC5hYnMsJGU9ZWQoIm1zIiksX2U9ZWQoInMiKSxhZj1lZCgibSIpLGJmPWVkKCJoIiksY2Y9ZWQoImQiKSxkZj1lZCgidyIpLGVmPWVkKCJNIiksZmY9ZWQoInkiKSxnZj1nZCgibWlsbGlzZWNvbmRzIiksaGY9Z2QoInNlY29uZHMiKSxqZj1nZCgibWludXRlcyIpLGtmPWdkKCJob3VycyIpLGxmPWdkKCJkYXlzIiksbWY9Z2QoIm1vbnRocyIpLG5mPWdkKCJ5ZWFycyIpLG9mPU1hdGgucm91bmQscGY9e3M6NDUsLy8gc2Vjb25kcyB0byBtaW51dGUKbTo0NSwvLyBtaW51dGVzIHRvIGhvdXIKaDoyMiwvLyBob3VycyB0byBkYXkKZDoyNiwvLyBkYXlzIHRvIG1vbnRoCk06MTF9LHFmPU1hdGguYWJzLHJmPXdiLnByb3RvdHlwZTsKLy8gRGVwcmVjYXRpb25zCi8vIFNpZGUgZWZmZWN0IGltcG9ydHMKLy8gRk9STUFUVElORwovLyBQQVJTSU5HCi8vIFNpZGUgZWZmZWN0IGltcG9ydHMKcmV0dXJuIHJmLmFicz1XYyxyZi5hZGQ9WWMscmYuc3VidHJhY3Q9WmMscmYuYXM9Y2QscmYuYXNNaWxsaXNlY29uZHM9JGUscmYuYXNTZWNvbmRzPV9lLHJmLmFzTWludXRlcz1hZixyZi5hc0hvdXJzPWJmLHJmLmFzRGF5cz1jZixyZi5hc1dlZWtzPWRmLHJmLmFzTW9udGhzPWVmLHJmLmFzWWVhcnM9ZmYscmYudmFsdWVPZj1kZCxyZi5fYnViYmxlPV9jLHJmLmdldD1mZCxyZi5taWxsaXNlY29uZHM9Z2YscmYuc2Vjb25kcz1oZixyZi5taW51dGVzPWpmLHJmLmhvdXJzPWtmLHJmLmRheXM9bGYscmYud2Vla3M9aGQscmYubW9udGhzPW1mLHJmLnllYXJzPW5mLHJmLmh1bWFuaXplPW1kLHJmLnRvSVNPU3RyaW5nPW5kLHJmLnRvU3RyaW5nPW5kLHJmLnRvSlNPTj1uZCxyZi5sb2NhbGU9bGMscmYubG9jYWxlRGF0YT1tYyxyZi50b0lzb1N0cmluZz14KCJ0b0lzb1N0cmluZygpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgdG9JU09TdHJpbmcoKSBpbnN0ZWFkIChub3RpY2UgdGhlIGNhcGl0YWxzKSIsbmQpLHJmLmxhbmc9UmUsVSgiWCIsMCwwLCJ1bml4IiksVSgieCIsMCwwLCJ2YWx1ZU9mIiksWigieCIsVmQpLFooIlgiLFlkKSxiYSgiWCIsZnVuY3Rpb24oYSxiLGMpe2MuX2Q9bmV3IERhdGUoMWUzKnBhcnNlRmxvYXQoYSwxMCkpfSksYmEoIngiLGZ1bmN0aW9uKGEsYixjKXtjLl9kPW5ldyBEYXRlKHUoYSkpfSksYS52ZXJzaW9uPSIyLjE3LjEiLGIoc2IpLGEuZm49WGUsYS5taW49dWIsYS5tYXg9dmIsYS5ub3c9TGUsYS51dGM9ayxhLnVuaXg9TGMsYS5tb250aHM9UmMsYS5pc0RhdGU9ZyxhLmxvY2FsZT0kYSxhLmludmFsaWQ9byxhLmR1cmF0aW9uPU9iLGEuaXNNb21lbnQ9cyxhLndlZWtkYXlzPVRjLGEucGFyc2Vab25lPU1jLGEubG9jYWxlRGF0YT1iYixhLmlzRHVyYXRpb249eGIsYS5tb250aHNTaG9ydD1TYyxhLndlZWtkYXlzTWluPVZjLGEuZGVmaW5lTG9jYWxlPV9hLGEudXBkYXRlTG9jYWxlPWFiLGEubG9jYWxlcz1jYixhLndlZWtkYXlzU2hvcnQ9VWMsYS5ub3JtYWxpemVVbml0cz1LLGEucmVsYXRpdmVUaW1lUm91bmRpbmc9a2QsYS5yZWxhdGl2ZVRpbWVUaHJlc2hvbGQ9bGQsYS5jYWxlbmRhckZvcm1hdD1VYixhLnByb3RvdHlwZT1YZSxhfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/LICENSE.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDE1IEFkYW0gU2hhdwoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCmEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQoiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCndpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCnBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwp0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQppbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELApFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQpMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCk9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgpXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/license.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDE1IEFkYW0gU2hhdwoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCmEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQoiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCndpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCnBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwp0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQppbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELApFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQpMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCk9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgpXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale-all.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsYSl7IWZ1bmN0aW9uKCl7IWZ1bmN0aW9uKCl7dmFyIGU9YS5kZWZpbmVMb2NhbGUoImFmIix7bW9udGhzOiJKYW51YXJpZV9GZWJydWFyaWVfTWFhcnRfQXByaWxfTWVpX0p1bmllX0p1bGllX0F1Z3VzdHVzX1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0Rlc2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRmViX01ydF9BcHJfTWVpX0p1bl9KdWxfQXVnX1NlcF9Pa3RfTm92X0RlcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiU29uZGFnX01hYW5kYWdfRGluc2RhZ19Xb2Vuc2RhZ19Eb25kZXJkYWdfVnJ5ZGFnX1NhdGVyZGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlNvbl9NYWFfRGluX1dvZV9Eb25fVnJ5X1NhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU29fTWFfRGlfV29fRG9fVnJfU2EiLnNwbGl0KCJfIiksbWVyaWRpZW1QYXJzZTovdm18bm0vaSxpc1BNOmZ1bmN0aW9uKGUpe3JldHVybi9ebm0kL2kudGVzdChlKX0sbWVyaWRpZW06ZnVuY3Rpb24oZSxhLHQpe3JldHVybiBlPDEyP3Q/InZtIjoiVk0iOnQ/Im5tIjoiTk0ifSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltWYW5kYWcgb21dIExUIixuZXh0RGF5OiJbTcO0cmUgb21dIExUIixuZXh0V2VlazoiZGRkZCBbb21dIExUIixsYXN0RGF5OiJbR2lzdGVyIG9tXSBMVCIsbGFzdFdlZWs6IltMYWFzXSBkZGRkIFtvbV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im9vciAlcyIscGFzdDoiJXMgZ2VsZWRlIixzOiInbiBwYWFyIHNla29uZGVzIixtOiInbiBtaW51dXQiLG1tOiIlZCBtaW51dGUiLGg6IiduIHV1ciIsaGg6IiVkIHVyZSIsZDoiJ24gZGFnIixkZDoiJWQgZGFlIixNOiInbiBtYWFuZCIsTU06IiVkIG1hYW5kZSIseToiJ24gamFhciIseXk6IiVkIGphYXIifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0oc3RlfGRlKS8sb3JkaW5hbDpmdW5jdGlvbihlKXtyZXR1cm4gZSsoMT09PWV8fDg9PT1lfHxlPj0yMD8ic3RlIjoiZGUiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSk7cmV0dXJuIGV9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgiYWYiLCJhZiIse2Nsb3NlVGV4dDoiU2VsZWt0ZWVyIixwcmV2VGV4dDoiVm9yaWdlIixuZXh0VGV4dDoiVm9sZ2VuZGUiLGN1cnJlbnRUZXh0OiJWYW5kYWciLG1vbnRoTmFtZXM6WyJKYW51YXJpZSIsIkZlYnJ1YXJpZSIsIk1hYXJ0IiwiQXByaWwiLCJNZWkiLCJKdW5pZSIsIkp1bGllIiwiQXVndXN0dXMiLCJTZXB0ZW1iZXIiLCJPa3RvYmVyIiwiTm92ZW1iZXIiLCJEZXNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1ydCIsIkFwciIsIk1laSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9rdCIsIk5vdiIsIkRlcyJdLGRheU5hbWVzOlsiU29uZGFnIiwiTWFhbmRhZyIsIkRpbnNkYWciLCJXb2Vuc2RhZyIsIkRvbmRlcmRhZyIsIlZyeWRhZyIsIlNhdGVyZGFnIl0sZGF5TmFtZXNTaG9ydDpbIlNvbiIsIk1hYSIsIkRpbiIsIldvZSIsIkRvbiIsIlZyeSIsIlNhdCJdLGRheU5hbWVzTWluOlsiU28iLCJNYSIsIkRpIiwiV28iLCJEbyIsIlZyIiwiU2EiXSx3ZWVrSGVhZGVyOiJXayIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoImFmIix7YnV0dG9uVGV4dDp7eWVhcjoiSmFhciIsbW9udGg6Ik1hYW5kIix3ZWVrOiJXZWVrIixkYXk6IkRhZyIsbGlzdDoiQWdlbmRhIn0sYWxsRGF5SHRtbDoiSGVlbGRhZyIsZXZlbnRMaW1pdFRleHQ6IkFkZGlzaW9uZWxlIixub0V2ZW50c01lc3NhZ2U6IkRhYXIgaXMgZ2VlbiBnZWJldXJ0ZW5pcyJ9KX0oKSxmdW5jdGlvbigpeyFmdW5jdGlvbigpe3ZhciBlPXsxOiLZoSIsMjoi2aIiLDM6ItmjIiw0OiLZpCIsNToi2aUiLDY6ItmmIiw3OiLZpyIsODoi2agiLDk6ItmpIiwwOiLZoCJ9LHQ9eyLZoSI6IjEiLCLZoiI6IjIiLCLZoyI6IjMiLCLZpCI6IjQiLCLZpSI6IjUiLCLZpiI6IjYiLCLZpyI6IjciLCLZqCI6IjgiLCLZqSI6IjkiLCLZoCI6IjAifSxuPWZ1bmN0aW9uKGUpe3JldHVybiAwPT09ZT8wOjE9PT1lPzE6Mj09PWU/MjplJTEwMD49MyYmZSUxMDA8PTEwPzM6ZSUxMDA+PTExPzQ6NX0scj17czpbItij2YLZhCDZhdmGINir2KfZhtmK2KkiLCLYq9in2YbZitipINmI2KfYrdiv2KkiLFsi2KvYp9mG2YrYqtin2YYiLCLYq9in2YbZitiq2YrZhiJdLCIlZCDYq9mI2KfZhiIsIiVkINir2KfZhtmK2KkiLCIlZCDYq9in2YbZitipIl0sbTpbItij2YLZhCDZhdmGINiv2YLZitmC2KkiLCLYr9mC2YrZgtipINmI2KfYrdiv2KkiLFsi2K/ZgtmK2YLYqtin2YYiLCLYr9mC2YrZgtiq2YrZhiJdLCIlZCDYr9mC2KfYptmCIiwiJWQg2K/ZgtmK2YLYqSIsIiVkINiv2YLZitmC2KkiXSxoOlsi2KPZgtmEINmF2YYg2LPYp9i52KkiLCLYs9in2LnYqSDZiNin2K3Yr9ipIixbItiz2KfYudiq2KfZhiIsItiz2KfYudiq2YrZhiJdLCIlZCDYs9in2LnYp9iqIiwiJWQg2LPYp9i52KkiLCIlZCDYs9in2LnYqSJdLGQ6WyLYo9mC2YQg2YXZhiDZitmI2YUiLCLZitmI2YUg2YjYp9it2K8iLFsi2YrZiNmF2KfZhiIsItmK2YjZhdmK2YYiXSwiJWQg2KPZitin2YUiLCIlZCDZitmI2YXZi9inIiwiJWQg2YrZiNmFIl0sTTpbItij2YLZhCDZhdmGINi02YfYsSIsIti02YfYsSDZiNin2K3YryIsWyLYtNmH2LHYp9mGIiwi2LTZh9ix2YrZhiJdLCIlZCDYo9i02YfYsSIsIiVkINi02YfYsdinIiwiJWQg2LTZh9ixIl0seTpbItij2YLZhCDZhdmGINi52KfZhSIsIti52KfZhSDZiNin2K3YryIsWyLYudin2YXYp9mGIiwi2LnYp9mF2YrZhiJdLCIlZCDYo9i52YjYp9mFIiwiJWQg2LnYp9mF2YvYpyIsIiVkINi52KfZhSJdfSxzPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihhLHQscyxkKXt2YXIgaT1uKGEpLG89cltlXVtuKGEpXTtyZXR1cm4gMj09PWkmJihvPW9bdD8wOjFdKSxvLnJlcGxhY2UoLyVkL2ksYSl9fSxkPVsi2YPYp9mG2YjZhiDYp9mE2KvYp9mG2Yog2YrZhtin2YrYsSIsIti02KjYp9i3INmB2KjYsdin2YrYsSIsItii2LDYp9ixINmF2KfYsdizIiwi2YbZitiz2KfZhiDYo9io2LHZitmEIiwi2KPZitin2LEg2YXYp9mK2YgiLCLYrdiy2YrYsdin2YYg2YrZiNmG2YrZiCIsItiq2YXZiNiyINmK2YjZhNmK2YgiLCLYotioINij2LrYs9i32LMiLCLYo9mK2YTZiNmEINiz2KjYqtmF2KjYsSIsItiq2LTYsdmK2YYg2KfZhNij2YjZhCDYo9mD2KrZiNio2LEiLCLYqti02LHZitmGINin2YTYq9in2YbZiiDZhtmI2YHZhdio2LEiLCLZg9in2YbZiNmGINin2YTYo9mI2YQg2K/Zitiz2YXYqNixIl0saT1hLmRlZmluZUxvY2FsZSgiYXIiLHttb250aHM6ZCxtb250aHNTaG9ydDpkLHdlZWtkYXlzOiLYp9mE2KPYrdivX9in2YTYpdir2YbZitmGX9in2YTYq9mE2KfYq9in2KFf2KfZhNij2LHYqNi52KfYoV/Yp9mE2K7ZhdmK2LNf2KfZhNis2YXYudipX9in2YTYs9io2KoiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi2KPYrdivX9il2KvZhtmK2YZf2KvZhNin2KvYp9ihX9ij2LHYqNi52KfYoV/YrtmF2YrYs1/YrNmF2LnYqV/Ys9io2KoiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ItitX9mGX9irX9ixX9iuX9isX9izIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJEL+KAj00v4oCPWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTov2LV82YUvLGlzUE06ZnVuY3Rpb24oZSl7cmV0dXJuItmFIj09PWV9LG1lcmlkaWVtOmZ1bmN0aW9uKGUsYSx0KXtyZXR1cm4gZTwxMj8i2LUiOiLZhSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb2KfZhNmK2YjZhSDYudmG2K8g2KfZhNiz2KfYudipXSBMVCIsbmV4dERheToiW9i62K/Zi9inINi52YbYryDYp9mE2LPYp9i52KldIExUIixuZXh0V2VlazoiZGRkZCBb2LnZhtivINin2YTYs9in2LnYqV0gTFQiLGxhc3REYXk6IlvYo9mF2LMg2LnZhtivINin2YTYs9in2LnYqV0gTFQiLGxhc3RXZWVrOiJkZGRkIFvYudmG2K8g2KfZhNiz2KfYudipXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi2KjYudivICVzIixwYXN0OiLZhdmG2LAgJXMiLHM6cygicyIpLG06cygibSIpLG1tOnMoIm0iKSxoOnMoImgiKSxoaDpzKCJoIiksZDpzKCJkIiksZGQ6cygiZCIpLE06cygiTSIpLE1NOnMoIk0iKSx5OnMoInkiKSx5eTpzKCJ5Iil9LHByZXBhcnNlOmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL1x1MjAwZi9nLCIiKS5yZXBsYWNlKC9b2aHZotmj2aTZpdmm2afZqNmp2aBdL2csZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KS5yZXBsYWNlKC/YjC9nLCIsIil9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXGQvZyxmdW5jdGlvbihhKXtyZXR1cm4gZVthXX0pLnJlcGxhY2UoLywvZywi2IwiKX0sd2Vlazp7ZG93OjYsZG95OjEyfX0pO3JldHVybiBpfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoImFyIiwiYXIiLHtjbG9zZVRleHQ6Itil2LrZhNin2YIiLHByZXZUZXh0OiImI3gzQzvYp9mE2LPYp9io2YIiLG5leHRUZXh0OiLYp9mE2KrYp9mE2YomI3gzRTsiLGN1cnJlbnRUZXh0OiLYp9mE2YrZiNmFIixtb250aE5hbWVzOlsi2YrZhtin2YrYsSIsItmB2KjYsdin2YrYsSIsItmF2KfYsdizIiwi2KPYqNix2YrZhCIsItmF2KfZitmIIiwi2YrZiNmG2YrZiCIsItmK2YjZhNmK2YgiLCLYo9i62LPYt9izIiwi2LPYqNiq2YXYqNixIiwi2KPZg9iq2YjYqNixIiwi2YbZiNmB2YXYqNixIiwi2K/Zitiz2YXYqNixIl0sbW9udGhOYW1lc1Nob3J0OlsiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiMTAiLCIxMSIsIjEyIl0sZGF5TmFtZXM6WyLYp9mE2KPYrdivIiwi2KfZhNin2KvZhtmK2YYiLCLYp9mE2KvZhNin2KvYp9ihIiwi2KfZhNij2LHYqNi52KfYoSIsItin2YTYrtmF2YrYsyIsItin2YTYrNmF2LnYqSIsItin2YTYs9io2KoiXSxkYXlOYW1lc1Nob3J0Olsi2KPYrdivIiwi2KfYq9mG2YrZhiIsItir2YTYp9ir2KfYoSIsItij2LHYqNi52KfYoSIsItiu2YXZitizIiwi2KzZhdi52KkiLCLYs9io2KoiXSxkYXlOYW1lc01pbjpbItitIiwi2YYiLCLYqyIsItixIiwi2K4iLCLYrCIsItizIl0sd2Vla0hlYWRlcjoi2KPYs9io2YjYuSIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjAsaXNSVEw6ITAsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoImFyIix7YnV0dG9uVGV4dDp7bW9udGg6Iti02YfYsSIsd2Vlazoi2KPYs9io2YjYuSIsZGF5OiLZitmI2YUiLGxpc3Q6Itij2KzZhtiv2KkifSxhbGxEYXlUZXh0OiLYp9mE2YrZiNmFINmD2YTZhyIsZXZlbnRMaW1pdFRleHQ6Itij2K7YsdmJIixub0V2ZW50c01lc3NhZ2U6Itij2Yog2KPYrdiv2KfYqyDZhNi52LHYtiJ9KX0oKSxmdW5jdGlvbigpeyFmdW5jdGlvbigpe3ZhciBlPWEuZGVmaW5lTG9jYWxlKCJhci1keiIse21vbnRoczoi2KzYp9mG2YHZil/ZgdmK2YHYsdmKX9mF2KfYsdizX9ij2YHYsdmK2YRf2YXYp9mKX9is2YjYp9mGX9is2YjZitmE2YrYqV/Yo9mI2Kpf2LPYqNiq2YXYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YHZhdio2LFf2K/Zitiz2YXYqNixIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiLYrNin2YbZgdmKX9mB2YrZgdix2Ypf2YXYp9ix2LNf2KPZgdix2YrZhF/Zhdin2Ypf2KzZiNin2YZf2KzZiNmK2YTZitipX9ij2YjYql/Ys9io2KrZhdio2LFf2KPZg9iq2YjYqNixX9mG2YjZgdmF2KjYsV/Yr9mK2LPZhdio2LEiLnNwbGl0KCJfIiksd2Vla2RheXM6Itin2YTYo9it2K9f2KfZhNil2KvZhtmK2YZf2KfZhNir2YTYp9ir2KfYoV/Yp9mE2KPYsdio2LnYp9ihX9in2YTYrtmF2YrYs1/Yp9mE2KzZhdi52Klf2KfZhNiz2KjYqiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLYp9it2K9f2KfYq9mG2YrZhl/Yq9mE2KfYq9in2KFf2KfYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi2KPYrV/YpdirX9ir2YTYp1/Yo9ixX9iu2YVf2KzZhV/Ys9ioIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW9in2YTZitmI2YUg2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLG5leHREYXk6IlvYutiv2Kcg2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLG5leHRXZWVrOiJkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsbGFzdERheToiW9ij2YXYsyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsbGFzdFdlZWs6ImRkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLZgdmKICVzIixwYXN0OiLZhdmG2LAgJXMiLHM6Itir2YjYp9mGIixtOiLYr9mC2YrZgtipIixtbToiJWQg2K/Zgtin2KbZgiIsaDoi2LPYp9i52KkiLGhoOiIlZCDYs9in2LnYp9iqIixkOiLZitmI2YUiLGRkOiIlZCDYo9mK2KfZhSIsTToi2LTZh9ixIixNTToiJWQg2KPYtNmH2LEiLHk6Itiz2YbYqSIseXk6IiVkINiz2YbZiNin2KoifSx3ZWVrOntkb3c6MCxkb3k6NH19KTtyZXR1cm4gZX0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJhci1keiIsImFyLURaIix7Y2xvc2VUZXh0OiLYpdi62YTYp9mCIixwcmV2VGV4dDoiJiN4M0M72KfZhNiz2KfYqNmCIixuZXh0VGV4dDoi2KfZhNiq2KfZhNmKJiN4M0U7IixjdXJyZW50VGV4dDoi2KfZhNmK2YjZhSIsbW9udGhOYW1lczpbItis2KfZhtmB2YoiLCLZgdmK2YHYsdmKIiwi2YXYp9ix2LMiLCLYo9mB2LHZitmEIiwi2YXYp9mKIiwi2KzZiNin2YYiLCLYrNmI2YrZhNmK2KkiLCLYo9mI2KoiLCLYs9io2KrZhdio2LEiLCLYo9mD2KrZiNio2LEiLCLZhtmI2YHZhdio2LEiLCLYr9mK2LPZhdio2LEiXSxtb250aE5hbWVzU2hvcnQ6WyIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiXSxkYXlOYW1lczpbItin2YTYo9it2K8iLCLYp9mE2KfYq9mG2YrZhiIsItin2YTYq9mE2KfYq9in2KEiLCLYp9mE2KPYsdio2LnYp9ihIiwi2KfZhNiu2YXZitizIiwi2KfZhNis2YXYudipIiwi2KfZhNiz2KjYqiJdLGRheU5hbWVzU2hvcnQ6WyLYp9mE2KPYrdivIiwi2KfZhNin2KvZhtmK2YYiLCLYp9mE2KvZhNin2KvYp9ihIiwi2KfZhNij2LHYqNi52KfYoSIsItin2YTYrtmF2YrYsyIsItin2YTYrNmF2LnYqSIsItin2YTYs9io2KoiXSxkYXlOYW1lc01pbjpbItitIiwi2YYiLCLYqyIsItixIiwi2K4iLCLYrCIsItizIl0sd2Vla0hlYWRlcjoi2KPYs9io2YjYuSIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjYsaXNSVEw6ITAsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoImFyLWR6Iix7YnV0dG9uVGV4dDp7bW9udGg6Iti02YfYsSIsd2Vlazoi2KPYs9io2YjYuSIsZGF5OiLZitmI2YUiLGxpc3Q6Itij2KzZhtiv2KkifSxhbGxEYXlUZXh0OiLYp9mE2YrZiNmFINmD2YTZhyIsZXZlbnRMaW1pdFRleHQ6Itij2K7YsdmJIixub0V2ZW50c01lc3NhZ2U6Itij2Yog2KPYrdiv2KfYqyDZhNi52LHYtiJ9KX0oKSxmdW5jdGlvbigpeyFmdW5jdGlvbigpe3ZhciBlPXsxOiIxIiwyOiIyIiwzOiIzIiw0OiI0Iiw1OiI1Iiw2OiI2Iiw3OiI3Iiw4OiI4Iiw5OiI5IiwwOiIwIn0sdD1mdW5jdGlvbihlKXtyZXR1cm4gMD09PWU/MDoxPT09ZT8xOjI9PT1lPzI6ZSUxMDA+PTMmJmUlMTAwPD0xMD8zOmUlMTAwPj0xMT80OjV9LG49e3M6WyLYo9mC2YQg2YXZhiDYq9in2YbZitipIiwi2KvYp9mG2YrYqSDZiNin2K3Yr9ipIixbItir2KfZhtmK2KrYp9mGIiwi2KvYp9mG2YrYqtmK2YYiXSwiJWQg2KvZiNin2YYiLCIlZCDYq9in2YbZitipIiwiJWQg2KvYp9mG2YrYqSJdLG06WyLYo9mC2YQg2YXZhiDYr9mC2YrZgtipIiwi2K/ZgtmK2YLYqSDZiNin2K3Yr9ipIixbItiv2YLZitmC2KrYp9mGIiwi2K/ZgtmK2YLYqtmK2YYiXSwiJWQg2K/Zgtin2KbZgiIsIiVkINiv2YLZitmC2KkiLCIlZCDYr9mC2YrZgtipIl0saDpbItij2YLZhCDZhdmGINiz2KfYudipIiwi2LPYp9i52Kkg2YjYp9it2K/YqSIsWyLYs9in2LnYqtin2YYiLCLYs9in2LnYqtmK2YYiXSwiJWQg2LPYp9i52KfYqiIsIiVkINiz2KfYudipIiwiJWQg2LPYp9i52KkiXSxkOlsi2KPZgtmEINmF2YYg2YrZiNmFIiwi2YrZiNmFINmI2KfYrdivIixbItmK2YjZhdin2YYiLCLZitmI2YXZitmGIl0sIiVkINij2YrYp9mFIiwiJWQg2YrZiNmF2YvYpyIsIiVkINmK2YjZhSJdLE06WyLYo9mC2YQg2YXZhiDYtNmH2LEiLCLYtNmH2LEg2YjYp9it2K8iLFsi2LTZh9ix2KfZhiIsIti02YfYsdmK2YYiXSwiJWQg2KPYtNmH2LEiLCIlZCDYtNmH2LHYpyIsIiVkINi02YfYsSJdLHk6WyLYo9mC2YQg2YXZhiDYudin2YUiLCLYudin2YUg2YjYp9it2K8iLFsi2LnYp9mF2KfZhiIsIti52KfZhdmK2YYiXSwiJWQg2KPYudmI2KfZhSIsIiVkINi52KfZhdmL2KciLCIlZCDYudin2YUiXX0scj1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oYSxyLHMsZCl7dmFyIGk9dChhKSxvPW5bZV1bdChhKV07cmV0dXJuIDI9PT1pJiYobz1vW3I/MDoxXSksby5yZXBsYWNlKC8lZC9pLGEpfX0scz1bItmK2YbYp9mK2LEiLCLZgdio2LHYp9mK2LEiLCLZhdin2LHYsyIsItij2KjYsdmK2YQiLCLZhdin2YrZiCIsItmK2YjZhtmK2YgiLCLZitmI2YTZitmIIiwi2KPYutiz2LfYsyIsItiz2KjYqtmF2KjYsSIsItij2YPYqtmI2KjYsSIsItmG2YjZgdmF2KjYsSIsItiv2YrYs9mF2KjYsSJdLGQ9YS5kZWZpbmVMb2NhbGUoImFyLWx5Iix7bW9udGhzOnMsbW9udGhzU2hvcnQ6cyx3ZWVrZGF5czoi2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Itij2K3Yr1/Ypdir2YbZitmGX9ir2YTYp9ir2KfYoV/Yo9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLYrV/Zhl/Yq1/YsV/Yrl/YrF/YsyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiRC/igI9NL+KAj1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LG1lcmlkaWVtUGFyc2U6L9i1fNmFLyxpc1BNOmZ1bmN0aW9uKGUpe3JldHVybiLZhSI9PT1lfSxtZXJpZGllbTpmdW5jdGlvbihlLGEsdCl7cmV0dXJuIGU8MTI/Iti1Ijoi2YUifSxjYWxlbmRhcjp7c2FtZURheToiW9in2YTZitmI2YUg2LnZhtivINin2YTYs9in2LnYqV0gTFQiLG5leHREYXk6IlvYutiv2YvYpyDYudmG2K8g2KfZhNiz2KfYudipXSBMVCIsbmV4dFdlZWs6ImRkZGQgW9i52YbYryDYp9mE2LPYp9i52KldIExUIixsYXN0RGF5OiJb2KPZhdizINi52YbYryDYp9mE2LPYp9i52KldIExUIixsYXN0V2VlazoiZGRkZCBb2LnZhtivINin2YTYs9in2LnYqV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Itio2LnYryAlcyIscGFzdDoi2YXZhtiwICVzIixzOnIoInMiKSxtOnIoIm0iKSxtbTpyKCJtIiksaDpyKCJoIiksaGg6cigiaCIpLGQ6cigiZCIpLGRkOnIoImQiKSxNOnIoIk0iKSxNTTpyKCJNIikseTpyKCJ5IikseXk6cigieSIpfSxwcmVwYXJzZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9cdTIwMGYvZywiIikucmVwbGFjZSgv2IwvZywiLCIpfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oYSl7cmV0dXJuIGVbYV19KS5yZXBsYWNlKC8sL2csItiMIil9LHdlZWs6e2Rvdzo2LGRveToxMn19KTtyZXR1cm4gZH0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJhci1seSIsImFyIix7Y2xvc2VUZXh0OiLYpdi62YTYp9mCIixwcmV2VGV4dDoiJiN4M0M72KfZhNiz2KfYqNmCIixuZXh0VGV4dDoi2KfZhNiq2KfZhNmKJiN4M0U7IixjdXJyZW50VGV4dDoi2KfZhNmK2YjZhSIsbW9udGhOYW1lczpbItmK2YbYp9mK2LEiLCLZgdio2LHYp9mK2LEiLCLZhdin2LHYsyIsItij2KjYsdmK2YQiLCLZhdin2YrZiCIsItmK2YjZhtmK2YgiLCLZitmI2YTZitmIIiwi2KPYutiz2LfYsyIsItiz2KjYqtmF2KjYsSIsItij2YPYqtmI2KjYsSIsItmG2YjZgdmF2KjYsSIsItiv2YrYs9mF2KjYsSJdLG1vbnRoTmFtZXNTaG9ydDpbIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEwIiwiMTEiLCIxMiJdLGRheU5hbWVzOlsi2KfZhNij2K3YryIsItin2YTYp9ir2YbZitmGIiwi2KfZhNir2YTYp9ir2KfYoSIsItin2YTYo9ix2KjYudin2KEiLCLYp9mE2K7ZhdmK2LMiLCLYp9mE2KzZhdi52KkiLCLYp9mE2LPYqNiqIl0sZGF5TmFtZXNTaG9ydDpbItij2K3YryIsItin2KvZhtmK2YYiLCLYq9mE2KfYq9in2KEiLCLYo9ix2KjYudin2KEiLCLYrtmF2YrYsyIsItis2YXYudipIiwi2LPYqNiqIl0sZGF5TmFtZXNNaW46WyLYrSIsItmGIiwi2KsiLCLYsSIsItiuIiwi2KwiLCLYsyJdLHdlZWtIZWFkZXI6Itij2LPYqNmI2LkiLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheTowLGlzUlRMOiEwLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJhci1seSIse2J1dHRvblRleHQ6e21vbnRoOiLYtNmH2LEiLHdlZWs6Itij2LPYqNmI2LkiLGRheToi2YrZiNmFIixsaXN0OiLYo9is2YbYr9ipIn0sYWxsRGF5VGV4dDoi2KfZhNmK2YjZhSDZg9mE2YciLGV2ZW50TGltaXRUZXh0OiLYo9iu2LHZiSIsbm9FdmVudHNNZXNzYWdlOiLYo9mKINij2K3Yr9in2Ksg2YTYudix2LYifSl9KCksZnVuY3Rpb24oKXshZnVuY3Rpb24oKXt2YXIgZT1hLmRlZmluZUxvY2FsZSgiYXItbWEiLHttb250aHM6ItmK2YbYp9mK2LFf2YHYqNix2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf2YXYp9mKX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiNiyX9i62LTYql/YtNiq2YbYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YbYqNixX9iv2KzZhtio2LEiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ItmK2YbYp9mK2LFf2YHYqNix2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf2YXYp9mKX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiNiyX9i62LTYql/YtNiq2YbYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YbYqNixX9iv2KzZhtio2LEiLnNwbGl0KCJfIiksd2Vla2RheXM6Itin2YTYo9it2K9f2KfZhNil2KrZhtmK2YZf2KfZhNir2YTYp9ir2KfYoV/Yp9mE2KPYsdio2LnYp9ihX9in2YTYrtmF2YrYs1/Yp9mE2KzZhdi52Klf2KfZhNiz2KjYqiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLYp9it2K9f2KfYqtmG2YrZhl/Yq9mE2KfYq9in2KFf2KfYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi2K1f2YZf2Ktf2LFf2K5f2Kxf2LMiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb2KfZhNmK2YjZhSDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsbmV4dERheToiW9i62K/YpyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsbmV4dFdlZWs6ImRkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUIixsYXN0RGF5OiJb2KPZhdizINi52YTZiSDYp9mE2LPYp9i52KldIExUIixsYXN0V2VlazoiZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ItmB2YogJXMiLHBhc3Q6ItmF2YbYsCAlcyIsczoi2KvZiNin2YYiLG06Itiv2YLZitmC2KkiLG1tOiIlZCDYr9mC2KfYptmCIixoOiLYs9in2LnYqSIsaGg6IiVkINiz2KfYudin2KoiLGQ6ItmK2YjZhSIsZGQ6IiVkINij2YrYp9mFIixNOiLYtNmH2LEiLE1NOiIlZCDYo9i02YfYsSIseToi2LPZhtipIix5eToiJWQg2LPZhtmI2KfYqiJ9LHdlZWs6e2Rvdzo2LGRveToxMn19KTtyZXR1cm4gZX0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJhci1tYSIsImFyIix7Y2xvc2VUZXh0OiLYpdi62YTYp9mCIixwcmV2VGV4dDoiJiN4M0M72KfZhNiz2KfYqNmCIixuZXh0VGV4dDoi2KfZhNiq2KfZhNmKJiN4M0U7IixjdXJyZW50VGV4dDoi2KfZhNmK2YjZhSIsbW9udGhOYW1lczpbItmK2YbYp9mK2LEiLCLZgdio2LHYp9mK2LEiLCLZhdin2LHYsyIsItij2KjYsdmK2YQiLCLZhdin2YrZiCIsItmK2YjZhtmK2YgiLCLZitmI2YTZitmIIiwi2KPYutiz2LfYsyIsItiz2KjYqtmF2KjYsSIsItij2YPYqtmI2KjYsSIsItmG2YjZgdmF2KjYsSIsItiv2YrYs9mF2KjYsSJdLG1vbnRoTmFtZXNTaG9ydDpbIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEwIiwiMTEiLCIxMiJdLGRheU5hbWVzOlsi2KfZhNij2K3YryIsItin2YTYp9ir2YbZitmGIiwi2KfZhNir2YTYp9ir2KfYoSIsItin2YTYo9ix2KjYudin2KEiLCLYp9mE2K7ZhdmK2LMiLCLYp9mE2KzZhdi52KkiLCLYp9mE2LPYqNiqIl0sZGF5TmFtZXNTaG9ydDpbItij2K3YryIsItin2KvZhtmK2YYiLCLYq9mE2KfYq9in2KEiLCLYo9ix2KjYudin2KEiLCLYrtmF2YrYsyIsItis2YXYudipIiwi2LPYqNiqIl0sZGF5TmFtZXNNaW46WyLYrSIsItmGIiwi2KsiLCLYsSIsItiuIiwi2KwiLCLYsyJdLHdlZWtIZWFkZXI6Itij2LPYqNmI2LkiLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheTowLGlzUlRMOiEwLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJhci1tYSIse2J1dHRvblRleHQ6e21vbnRoOiLYtNmH2LEiLHdlZWs6Itij2LPYqNmI2LkiLGRheToi2YrZiNmFIixsaXN0OiLYo9is2YbYr9ipIn0sYWxsRGF5VGV4dDoi2KfZhNmK2YjZhSDZg9mE2YciLGV2ZW50TGltaXRUZXh0OiLYo9iu2LHZiSIsbm9FdmVudHNNZXNzYWdlOiLYo9mKINij2K3Yr9in2Ksg2YTYudix2LYifSl9KCksZnVuY3Rpb24oKXshZnVuY3Rpb24oKXt2YXIgZT17MToi2aEiLDI6ItmiIiwzOiLZoyIsNDoi2aQiLDU6ItmlIiw2OiLZpiIsNzoi2aciLDg6ItmoIiw5OiLZqSIsMDoi2aAifSx0PXsi2aEiOiIxIiwi2aIiOiIyIiwi2aMiOiIzIiwi2aQiOiI0Iiwi2aUiOiI1Iiwi2aYiOiI2Iiwi2aciOiI3Iiwi2agiOiI4Iiwi2akiOiI5Iiwi2aAiOiIwIn0sbj1hLmRlZmluZUxvY2FsZSgiYXItc2EiLHttb250aHM6ItmK2YbYp9mK2LFf2YHYqNix2KfZitixX9mF2KfYsdizX9ij2KjYsdmK2YRf2YXYp9mK2Yhf2YrZiNmG2YrZiF/ZitmI2YTZitmIX9ij2LrYs9i32LNf2LPYqNiq2YXYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YHZhdio2LFf2K/Zitiz2YXYqNixIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiLZitmG2KfZitixX9mB2KjYsdin2YrYsV/Zhdin2LHYs1/Yo9io2LHZitmEX9mF2KfZitmIX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiF/Yo9i62LPYt9izX9iz2KjYqtmF2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmB2YXYqNixX9iv2YrYs9mF2KjYsSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Itij2K3Yr1/Ypdir2YbZitmGX9ir2YTYp9ir2KfYoV/Yo9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLYrV/Zhl/Yq1/YsV/Yrl/YrF/YsyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTov2LV82YUvLGlzUE06ZnVuY3Rpb24oZSl7cmV0dXJuItmFIj09PWV9LG1lcmlkaWVtOmZ1bmN0aW9uKGUsYSx0KXtyZXR1cm4gZTwxMj8i2LUiOiLZhSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb2KfZhNmK2YjZhSDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsbmV4dERheToiW9i62K/YpyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsbmV4dFdlZWs6ImRkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUIixsYXN0RGF5OiJb2KPZhdizINi52YTZiSDYp9mE2LPYp9i52KldIExUIixsYXN0V2VlazoiZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ItmB2YogJXMiLHBhc3Q6ItmF2YbYsCAlcyIsczoi2KvZiNin2YYiLG06Itiv2YLZitmC2KkiLG1tOiIlZCDYr9mC2KfYptmCIixoOiLYs9in2LnYqSIsaGg6IiVkINiz2KfYudin2KoiLGQ6ItmK2YjZhSIsZGQ6IiVkINij2YrYp9mFIixNOiLYtNmH2LEiLE1NOiIlZCDYo9i02YfYsSIseToi2LPZhtipIix5eToiJWQg2LPZhtmI2KfYqiJ9LHByZXBhcnNlOmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL1vZodmi2aPZpNml2abZp9mo2anZoF0vZyxmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pLnJlcGxhY2UoL9iML2csIiwiKX0scG9zdGZvcm1hdDpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKGEpe3JldHVybiBlW2FdfSkucmVwbGFjZSgvLC9nLCLYjCIpfSx3ZWVrOntkb3c6MCxkb3k6Nn19KTtyZXR1cm4gbn0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJhci1zYSIsImFyIix7Y2xvc2VUZXh0OiLYpdi62YTYp9mCIixwcmV2VGV4dDoiJiN4M0M72KfZhNiz2KfYqNmCIixuZXh0VGV4dDoi2KfZhNiq2KfZhNmKJiN4M0U7IixjdXJyZW50VGV4dDoi2KfZhNmK2YjZhSIsbW9udGhOYW1lczpbItmK2YbYp9mK2LEiLCLZgdio2LHYp9mK2LEiLCLZhdin2LHYsyIsItij2KjYsdmK2YQiLCLZhdin2YrZiCIsItmK2YjZhtmK2YgiLCLZitmI2YTZitmIIiwi2KPYutiz2LfYsyIsItiz2KjYqtmF2KjYsSIsItij2YPYqtmI2KjYsSIsItmG2YjZgdmF2KjYsSIsItiv2YrYs9mF2KjYsSJdLG1vbnRoTmFtZXNTaG9ydDpbIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEwIiwiMTEiLCIxMiJdLGRheU5hbWVzOlsi2KfZhNij2K3YryIsItin2YTYp9ir2YbZitmGIiwi2KfZhNir2YTYp9ir2KfYoSIsItin2YTYo9ix2KjYudin2KEiLCLYp9mE2K7ZhdmK2LMiLCLYp9mE2KzZhdi52KkiLCLYp9mE2LPYqNiqIl0sZGF5TmFtZXNTaG9ydDpbItij2K3YryIsItin2KvZhtmK2YYiLCLYq9mE2KfYq9in2KEiLCLYo9ix2KjYudin2KEiLCLYrtmF2YrYsyIsItis2YXYudipIiwi2LPYqNiqIl0sZGF5TmFtZXNNaW46WyLYrSIsItmGIiwi2KsiLCLYsSIsItiuIiwi2KwiLCLYsyJdLHdlZWtIZWFkZXI6Itij2LPYqNmI2LkiLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheTowLGlzUlRMOiEwLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJhci1zYSIse2J1dHRvblRleHQ6e21vbnRoOiLYtNmH2LEiLHdlZWs6Itij2LPYqNmI2LkiLGRheToi2YrZiNmFIixsaXN0OiLYo9is2YbYr9ipIn0sYWxsRGF5VGV4dDoi2KfZhNmK2YjZhSDZg9mE2YciLGV2ZW50TGltaXRUZXh0OiLYo9iu2LHZiSIsbm9FdmVudHNNZXNzYWdlOiLYo9mKINij2K3Yr9in2Ksg2YTYudix2LYifSl9KCksZnVuY3Rpb24oKXshZnVuY3Rpb24oKXt2YXIgZT1hLmRlZmluZUxvY2FsZSgiYXItdG4iLHttb250aHM6Itis2KfZhtmB2Ypf2YHZitmB2LHZil/Zhdin2LHYs1/Yo9mB2LHZitmEX9mF2KfZil/YrNmI2KfZhl/YrNmI2YrZhNmK2Klf2KPZiNiqX9iz2KjYqtmF2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmB2YXYqNixX9iv2YrYs9mF2KjYsSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoi2KzYp9mG2YHZil/ZgdmK2YHYsdmKX9mF2KfYsdizX9ij2YHYsdmK2YRf2YXYp9mKX9is2YjYp9mGX9is2YjZitmE2YrYqV/Yo9mI2Kpf2LPYqNiq2YXYqNixX9ij2YPYqtmI2KjYsV/ZhtmI2YHZhdio2LFf2K/Zitiz2YXYqNixIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiLYp9mE2KPYrdivX9in2YTYpdir2YbZitmGX9in2YTYq9mE2KfYq9in2KFf2KfZhNij2LHYqNi52KfYoV/Yp9mE2K7ZhdmK2LNf2KfZhNis2YXYudipX9in2YTYs9io2KoiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi2KPYrdivX9il2KvZhtmK2YZf2KvZhNin2KvYp9ihX9ij2LHYqNi52KfYoV/YrtmF2YrYs1/YrNmF2LnYqV/Ys9io2KoiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ItitX9mGX9irX9ixX9iuX9isX9izIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW9in2YTZitmI2YUg2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLG5leHREYXk6IlvYutiv2Kcg2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLG5leHRXZWVrOiJkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsbGFzdERheToiW9ij2YXYsyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsbGFzdFdlZWs6ImRkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLZgdmKICVzIixwYXN0OiLZhdmG2LAgJXMiLHM6Itir2YjYp9mGIixtOiLYr9mC2YrZgtipIixtbToiJWQg2K/Zgtin2KbZgiIsaDoi2LPYp9i52KkiLGhoOiIlZCDYs9in2LnYp9iqIixkOiLZitmI2YUiLGRkOiIlZCDYo9mK2KfZhSIsTToi2LTZh9ixIixNTToiJWQg2KPYtNmH2LEiLHk6Itiz2YbYqSIseXk6IiVkINiz2YbZiNin2KoifSx3ZWVrOntkb3c6MSxkb3k6NH19KTtyZXR1cm4gZX0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJhci10biIsImFyIix7Y2xvc2VUZXh0OiLYpdi62YTYp9mCIixwcmV2VGV4dDoiJiN4M0M72KfZhNiz2KfYqNmCIixuZXh0VGV4dDoi2KfZhNiq2KfZhNmKJiN4M0U7IixjdXJyZW50VGV4dDoi2KfZhNmK2YjZhSIsbW9udGhOYW1lczpbItmK2YbYp9mK2LEiLCLZgdio2LHYp9mK2LEiLCLZhdin2LHYsyIsItij2KjYsdmK2YQiLCLZhdin2YrZiCIsItmK2YjZhtmK2YgiLCLZitmI2YTZitmIIiwi2KPYutiz2LfYsyIsItiz2KjYqtmF2KjYsSIsItij2YPYqtmI2KjYsSIsItmG2YjZgdmF2KjYsSIsItiv2YrYs9mF2KjYsSJdLG1vbnRoTmFtZXNTaG9ydDpbIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEwIiwiMTEiLCIxMiJdLGRheU5hbWVzOlsi2KfZhNij2K3YryIsItin2YTYp9ir2YbZitmGIiwi2KfZhNir2YTYp9ir2KfYoSIsItin2YTYo9ix2KjYudin2KEiLCLYp9mE2K7ZhdmK2LMiLCLYp9mE2KzZhdi52KkiLCLYp9mE2LPYqNiqIl0sZGF5TmFtZXNTaG9ydDpbItij2K3YryIsItin2KvZhtmK2YYiLCLYq9mE2KfYq9in2KEiLCLYo9ix2KjYudin2KEiLCLYrtmF2YrYsyIsItis2YXYudipIiwi2LPYqNiqIl0sZGF5TmFtZXNNaW46WyLYrSIsItmGIiwi2KsiLCLYsSIsItiuIiwi2KwiLCLYsyJdLHdlZWtIZWFkZXI6Itij2LPYqNmI2LkiLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheTowLGlzUlRMOiEwLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJhci10biIse2J1dHRvblRleHQ6e21vbnRoOiLYtNmH2LEiLHdlZWs6Itij2LPYqNmI2LkiLGRheToi2YrZiNmFIixsaXN0OiLYo9is2YbYr9ipIn0sYWxsRGF5VGV4dDoi2KfZhNmK2YjZhSDZg9mE2YciLGV2ZW50TGltaXRUZXh0OiLYo9iu2LHZiSIsbm9FdmVudHNNZXNzYWdlOiLYo9mKINij2K3Yr9in2Ksg2YTYudix2LYifSl9KCksZnVuY3Rpb24oKXshZnVuY3Rpb24oKXt2YXIgZT1hLmRlZmluZUxvY2FsZSgiYmciLHttb250aHM6ItGP0L3Rg9Cw0YDQuF/RhNC10LLRgNGD0LDRgNC4X9C80LDRgNGCX9Cw0L/RgNC40Ltf0LzQsNC5X9GO0L3QuF/RjtC70Lhf0LDQstCz0YPRgdGCX9GB0LXQv9GC0LXQvNCy0YDQuF/QvtC60YLQvtC80LLRgNC4X9C90L7QtdC80LLRgNC4X9C00LXQutC10LzQstGA0LgiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ItGP0L3RgF/RhNC10LJf0LzQsNGAX9Cw0L/RgF/QvNCw0Llf0Y7QvdC4X9GO0LvQuF/QsNCy0LNf0YHQtdC/X9C+0LrRgl/QvdC+0LVf0LTQtdC6Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiLQvdC10LTQtdC70Y9f0L/QvtC90LXQtNC10LvQvdC40Lpf0LLRgtC+0YDQvdC40Lpf0YHRgNGP0LTQsF/Rh9C10YLQstGK0YDRgtGK0Lpf0L/QtdGC0YrQul/RgdGK0LHQvtGC0LAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi0L3QtdC0X9C/0L7QvV/QstGC0L5f0YHRgNGPX9GH0LXRgl/Qv9C10YJf0YHRitCxIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLQvdC0X9C/0L1f0LLRgl/RgdGAX9GH0YJf0L/Rgl/RgdCxIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvQlNC90LXRgSDQsl0gTFQiLG5leHREYXk6IlvQo9GC0YDQtSDQsl0gTFQiLG5leHRXZWVrOiJkZGRkIFvQsl0gTFQiLGxhc3REYXk6IlvQktGH0LXRgNCwINCyXSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOmNhc2UgMzpjYXNlIDY6cmV0dXJuIlvQkiDQuNC30LzQuNC90LDQu9Cw0YLQsF0gZGRkZCBb0LJdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIlvQkiDQuNC30LzQuNC90LDQu9C40Y9dIGRkZGQgW9CyXSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLRgdC70LXQtCAlcyIscGFzdDoi0L/RgNC10LTQuCAlcyIsczoi0L3Rj9C60L7Qu9C60L4g0YHQtdC60YPQvdC00LgiLG06ItC80LjQvdGD0YLQsCIsbW06IiVkINC80LjQvdGD0YLQuCIsaDoi0YfQsNGBIixoaDoiJWQg0YfQsNGB0LAiLGQ6ItC00LXQvSIsZGQ6IiVkINC00L3QuCIsTToi0LzQtdGB0LXRhiIsTU06IiVkINC80LXRgdC10YbQsCIseToi0LPQvtC00LjQvdCwIix5eToiJWQg0LPQvtC00LjQvdC4In0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9LSjQtdCyfNC10L180YLQuHzQstC4fNGA0Lh80LzQuCkvLG9yZGluYWw6ZnVuY3Rpb24oZSl7dmFyIGE9ZSUxMCx0PWUlMTAwO3JldHVybiAwPT09ZT9lKyIt0LXQsiI6MD09PXQ/ZSsiLdC10L0iOnQ+MTAmJnQ8MjA/ZSsiLdGC0LgiOjE9PT1hP2UrIi3QstC4IjoyPT09YT9lKyIt0YDQuCI6Nz09PWF8fDg9PT1hP2UrIi3QvNC4IjplKyIt0YLQuCJ9LHdlZWs6e2RvdzoxLGRveTo3fX0pO3JldHVybiBlfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoImJnIiwiYmciLHtjbG9zZVRleHQ6ItC30LDRgtCy0L7RgNC4IixwcmV2VGV4dDoiJiN4M0M70L3QsNC30LDQtCIsbmV4dFRleHQ6ItC90LDQv9GA0LXQtCYjeDNFOyIsbmV4dEJpZ1RleHQ6IiYjeDNFOyYjeDNFOyIsY3VycmVudFRleHQ6ItC00L3QtdGBIixtb250aE5hbWVzOlsi0K/QvdGD0LDRgNC4Iiwi0KTQtdCy0YDRg9Cw0YDQuCIsItCc0LDRgNGCIiwi0JDQv9GA0LjQuyIsItCc0LDQuSIsItCu0L3QuCIsItCu0LvQuCIsItCQ0LLQs9GD0YHRgiIsItCh0LXQv9GC0LXQvNCy0YDQuCIsItCe0LrRgtC+0LzQstGA0LgiLCLQndC+0LXQvNCy0YDQuCIsItCU0LXQutC10LzQstGA0LgiXSxtb250aE5hbWVzU2hvcnQ6WyLQr9C90YMiLCLQpNC10LIiLCLQnNCw0YAiLCLQkNC/0YAiLCLQnNCw0LkiLCLQrtC90LgiLCLQrtC70LgiLCLQkNCy0LMiLCLQodC10L8iLCLQntC60YIiLCLQndC+0LIiLCLQlNC10LoiXSxkYXlOYW1lczpbItCd0LXQtNC10LvRjyIsItCf0L7QvdC10LTQtdC70L3QuNC6Iiwi0JLRgtC+0YDQvdC40LoiLCLQodGA0Y/QtNCwIiwi0KfQtdGC0LLRitGA0YLRitC6Iiwi0J/QtdGC0YrQuiIsItCh0YrQsdC+0YLQsCJdLGRheU5hbWVzU2hvcnQ6WyLQndC10LQiLCLQn9C+0L0iLCLQktGC0L4iLCLQodGA0Y8iLCLQp9C10YIiLCLQn9C10YIiLCLQodGK0LEiXSxkYXlOYW1lc01pbjpbItCd0LUiLCLQn9C+Iiwi0JLRgiIsItCh0YAiLCLQp9C1Iiwi0J/QtSIsItCh0YoiXSx3ZWVrSGVhZGVyOiJXayIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoImJnIix7YnV0dG9uVGV4dDp7bW9udGg6ItCc0LXRgdC10YYiLHdlZWs6ItCh0LXQtNC80LjRhtCwIixkYXk6ItCU0LXQvSIsbGlzdDoi0JPRgNCw0YTQuNC6In0sYWxsRGF5VGV4dDoi0KbRj9C7INC00LXQvSIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIivQvtGJ0LUgIitlfSxub0V2ZW50c01lc3NhZ2U6ItCd0Y/QvNCwINGB0YrQsdC40YLQuNGPINC30LAg0L/QvtC60LDQt9Cy0LDQvdC1In0pfSgpLGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKCl7dmFyIGU9YS5kZWZpbmVMb2NhbGUoImNhIix7bW9udGhzOiJnZW5lcl9mZWJyZXJfbWFyw6dfYWJyaWxfbWFpZ19qdW55X2p1bGlvbF9hZ29zdF9zZXRlbWJyZV9vY3R1YnJlX25vdmVtYnJlX2Rlc2VtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJnZW4uX2ZlYnIuX21hci5fYWJyLl9tYWkuX2p1bi5fanVsLl9hZy5fc2V0Ll9vY3QuX25vdi5fZGVzLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJkaXVtZW5nZV9kaWxsdW5zX2RpbWFydHNfZGltZWNyZXNfZGlqb3VzX2RpdmVuZHJlc19kaXNzYWJ0ZSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkZy5fZGwuX2R0Ll9kYy5fZGouX2R2Ll9kcy4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkRnX0RsX0R0X0RjX0RqX0R2X0RzIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OmZ1bmN0aW9uKCl7cmV0dXJuIlthdnVpIGEgIisoMSE9PXRoaXMuaG91cnMoKT8ibGVzIjoibGEiKSsiXSBMVCJ9LG5leHREYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW2RlbcOgIGEgIisoMSE9PXRoaXMuaG91cnMoKT8ibGVzIjoibGEiKSsiXSBMVCJ9LG5leHRXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuImRkZGQgW2EgIisoMSE9PXRoaXMuaG91cnMoKT8ibGVzIjoibGEiKSsiXSBMVCJ9LGxhc3REYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW2FoaXIgYSAiKygxIT09dGhpcy5ob3VycygpPyJsZXMiOiJsYSIpKyJdIExUIn0sbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iW2VsXSBkZGRkIFtwYXNzYXQgYSAiKygxIT09dGhpcy5ob3VycygpPyJsZXMiOiJsYSIpKyJdIExUIn0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZCdhcXXDrSAlcyIscGFzdDoiZmEgJXMiLHM6InVucyBzZWdvbnMiLG06InVuIG1pbnV0IixtbToiJWQgbWludXRzIixoOiJ1bmEgaG9yYSIsaGg6IiVkIGhvcmVzIixkOiJ1biBkaWEiLGRkOiIlZCBkaWVzIixNOiJ1biBtZXMiLE1NOiIlZCBtZXNvcyIseToidW4gYW55Iix5eToiJWQgYW55cyJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfShyfG58dHzDqHxhKS8sb3JkaW5hbDpmdW5jdGlvbihlLGEpe3ZhciB0PTE9PT1lPyJyIjoyPT09ZT8ibiI6Mz09PWU/InIiOjQ9PT1lPyJ0Ijoiw6giO3JldHVybiJ3IiE9PWEmJiJXIiE9PWF8fCh0PSJhIiksZSt0fSx3ZWVrOntkb3c6MSxkb3k6NH19KTtyZXR1cm4gZX0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJjYSIsImNhIix7Y2xvc2VUZXh0OiJUYW5jYSIscHJldlRleHQ6IkFudGVyaW9yIixuZXh0VGV4dDoiU2Vnw7xlbnQiLGN1cnJlbnRUZXh0OiJBdnVpIixtb250aE5hbWVzOlsiZ2VuZXIiLCJmZWJyZXIiLCJtYXLDpyIsImFicmlsIiwibWFpZyIsImp1bnkiLCJqdWxpb2wiLCJhZ29zdCIsInNldGVtYnJlIiwib2N0dWJyZSIsIm5vdmVtYnJlIiwiZGVzZW1icmUiXSxtb250aE5hbWVzU2hvcnQ6WyJnZW4iLCJmZWIiLCJtYXLDpyIsImFiciIsIm1haWciLCJqdW55IiwianVsIiwiYWciLCJzZXQiLCJvY3QiLCJub3YiLCJkZXMiXSxkYXlOYW1lczpbImRpdW1lbmdlIiwiZGlsbHVucyIsImRpbWFydHMiLCJkaW1lY3JlcyIsImRpam91cyIsImRpdmVuZHJlcyIsImRpc3NhYnRlIl0sZGF5TmFtZXNTaG9ydDpbImRnIiwiZGwiLCJkdCIsImRjIiwiZGoiLCJkdiIsImRzIl0sZGF5TmFtZXNNaW46WyJkZyIsImRsIiwiZHQiLCJkYyIsImRqIiwiZHYiLCJkcyJdLHdlZWtIZWFkZXI6IlNldCIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoImNhIix7YnV0dG9uVGV4dDp7bW9udGg6Ik1lcyIsd2VlazoiU2V0bWFuYSIsZGF5OiJEaWEiLGxpc3Q6IkFnZW5kYSJ9LGFsbERheVRleHQ6IlRvdCBlbCBkaWEiLGV2ZW50TGltaXRUZXh0OiJtw6lzIixub0V2ZW50c01lc3NhZ2U6Ik5vIGhpIGhhIGVzZGV2ZW5pbWVudHMgcGVyIG1vc3RyYXIifSl9KCksZnVuY3Rpb24oKXshZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3JldHVybiBlPjEmJmU8NSYmMSE9PX5+KGUvMTApfWZ1bmN0aW9uIHQoYSx0LG4scil7dmFyIHM9YSsiICI7c3dpdGNoKG4pe2Nhc2UicyI6cmV0dXJuIHR8fHI/InDDoXIgc2VrdW5kIjoicMOhciBzZWt1bmRhbWkiO2Nhc2UibSI6cmV0dXJuIHQ/Im1pbnV0YSI6cj8ibWludXR1IjoibWludXRvdSI7Y2FzZSJtbSI6cmV0dXJuIHR8fHI/cysoZShhKT8ibWludXR5IjoibWludXQiKTpzKyJtaW51dGFtaSI7Y2FzZSJoIjpyZXR1cm4gdD8iaG9kaW5hIjpyPyJob2RpbnUiOiJob2Rpbm91IjtjYXNlImhoIjpyZXR1cm4gdHx8cj9zKyhlKGEpPyJob2RpbnkiOiJob2RpbiIpOnMrImhvZGluYW1pIjtjYXNlImQiOnJldHVybiB0fHxyPyJkZW4iOiJkbmVtIjtjYXNlImRkIjpyZXR1cm4gdHx8cj9zKyhlKGEpPyJkbnkiOiJkbsOtIik6cysiZG55IjtjYXNlIk0iOnJldHVybiB0fHxyPyJtxJtzw61jIjoibcSbc8OtY2VtIjtjYXNlIk1NIjpyZXR1cm4gdHx8cj9zKyhlKGEpPyJtxJtzw61jZSI6Im3Em3PDrWPFryIpOnMrIm3Em3PDrWNpIjtjYXNlInkiOnJldHVybiB0fHxyPyJyb2siOiJyb2tlbSI7Y2FzZSJ5eSI6cmV0dXJuIHR8fHI/cysoZShhKT8icm9reSI6ImxldCIpOnMrImxldHkifX12YXIgbj0ibGVkZW5fw7pub3JfYsWZZXplbl9kdWJlbl9rdsSbdGVuX8SNZXJ2ZW5fxI1lcnZlbmVjX3NycGVuX3rDocWZw61fxZnDrWplbl9saXN0b3BhZF9wcm9zaW5lYyIuc3BsaXQoIl8iKSxyPSJsZWRfw7pub19ixZllX2R1Yl9rdsSbX8SNdm5fxI12Y19zcnBfesOhxZlfxZnDrWpfbGlzX3BybyIuc3BsaXQoIl8iKSxzPWEuZGVmaW5lTG9jYWxlKCJjcyIse21vbnRoczpuLG1vbnRoc1Nob3J0OnIsbW9udGhzUGFyc2U6ZnVuY3Rpb24oZSxhKXt2YXIgdCxuPVtdO2Zvcih0PTA7dDwxMjt0Kyspblt0XT1uZXcgUmVnRXhwKCJeIitlW3RdKyIkfF4iK2FbdF0rIiQiLCJpIik7cmV0dXJuIG59KG4sciksc2hvcnRNb250aHNQYXJzZTpmdW5jdGlvbihlKXt2YXIgYSx0PVtdO2ZvcihhPTA7YTwxMjthKyspdFthXT1uZXcgUmVnRXhwKCJeIitlW2FdKyIkIiwiaSIpO3JldHVybiB0fShyKSxsb25nTW9udGhzUGFyc2U6ZnVuY3Rpb24oZSl7dmFyIGEsdD1bXTtmb3IoYT0wO2E8MTI7YSsrKXRbYV09bmV3IFJlZ0V4cCgiXiIrZVthXSsiJCIsImkiKTtyZXR1cm4gdH0obiksd2Vla2RheXM6Im5lZMSbbGVfcG9uZMSbbMOtX8O6dGVyw71fc3TFmWVkYV/EjXR2cnRla19ww6F0ZWtfc29ib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5lX3BvX8O6dF9zdF/EjXRfcMOhX3NvIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJuZV9wb1/DunRfc3RfxI10X3DDoV9zbyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgSDptbSIsTExMTDoiZGRkZCBELiBNTU1NIFlZWVkgSDptbSIsbDoiRC4gTS4gWVlZWSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbZG5lcyB2XSBMVCIsbmV4dERheToiW3rDrXRyYSB2XSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbdiBuZWTEm2xpIHZdIExUIjtjYXNlIDE6Y2FzZSAyOnJldHVybiJbdl0gZGRkZCBbdl0gTFQiO2Nhc2UgMzpyZXR1cm4iW3ZlIHN0xZllZHUgdl0gTFQiO2Nhc2UgNDpyZXR1cm4iW3ZlIMSNdHZydGVrIHZdIExUIjtjYXNlIDU6cmV0dXJuIlt2IHDDoXRlayB2XSBMVCI7Y2FzZSA2OnJldHVybiJbdiBzb2JvdHUgdl0gTFQifX0sbGFzdERheToiW3bEjWVyYSB2XSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbbWludWxvdSBuZWTEm2xpIHZdIExUIjtjYXNlIDE6Y2FzZSAyOnJldHVybiJbbWludWzDqV0gZGRkZCBbdl0gTFQiO2Nhc2UgMzpyZXR1cm4iW21pbnVsb3Ugc3TFmWVkdSB2XSBMVCI7Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW21pbnVsw71dIGRkZGQgW3ZdIExUIjtjYXNlIDY6cmV0dXJuIlttaW51bG91IHNvYm90dSB2XSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJ6YSAlcyIscGFzdDoicMWZZWQgJXMiLHM6dCxtOnQsbW06dCxoOnQsaGg6dCxkOnQsZGQ6dCxNOnQsTU06dCx5OnQseXk6dH0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSk7cmV0dXJuIHN9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgiY3MiLCJjcyIse2Nsb3NlVGV4dDoiWmF2xZnDrXQiLHByZXZUZXh0OiImI3gzQztExZnDrXZlIixuZXh0VGV4dDoiUG96ZMSbamkmI3gzRTsiLGN1cnJlbnRUZXh0OiJOeW7DrSIsbW9udGhOYW1lczpbImxlZGVuIiwiw7pub3IiLCJixZllemVuIiwiZHViZW4iLCJrdsSbdGVuIiwixI1lcnZlbiIsIsSNZXJ2ZW5lYyIsInNycGVuIiwiesOhxZnDrSIsIsWZw61qZW4iLCJsaXN0b3BhZCIsInByb3NpbmVjIl0sbW9udGhOYW1lc1Nob3J0OlsibGVkIiwiw7pubyIsImLFmWUiLCJkdWIiLCJrdsSbIiwixI1lciIsIsSNdmMiLCJzcnAiLCJ6w6HFmSIsIsWZw61qIiwibGlzIiwicHJvIl0sZGF5TmFtZXM6WyJuZWTEm2xlIiwicG9uZMSbbMOtIiwiw7p0ZXLDvSIsInN0xZllZGEiLCLEjXR2cnRlayIsInDDoXRlayIsInNvYm90YSJdLGRheU5hbWVzU2hvcnQ6WyJuZSIsInBvIiwiw7p0Iiwic3QiLCLEjXQiLCJww6EiLCJzbyJdLGRheU5hbWVzTWluOlsibmUiLCJwbyIsIsO6dCIsInN0IiwixI10IiwicMOhIiwic28iXSx3ZWVrSGVhZGVyOiJUw71kIixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiY3MiLHtidXR0b25UZXh0Onttb250aDoiTcSbc8OtYyIsd2VlazoiVMO9ZGVuIixkYXk6IkRlbiIsbGlzdDoiQWdlbmRhIn0sYWxsRGF5VGV4dDoiQ2Vsw70gZGVuIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihlKXtyZXR1cm4iK2RhbMWhw606ICIrZX0sbm9FdmVudHNNZXNzYWdlOiLFvcOhZG7DqSBha2NlIGsgem9icmF6ZW7DrSJ9KX0oKSxmdW5jdGlvbigpeyFmdW5jdGlvbigpe3ZhciBlPWEuZGVmaW5lTG9jYWxlKCJkYSIse21vbnRoczoiamFudWFyX2ZlYnJ1YXJfbWFydHNfYXByaWxfbWFqX2p1bmlfanVsaV9hdWd1c3Rfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbl9mZWJfbWFyX2Fwcl9tYWpfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJzw7huZGFnX21hbmRhZ190aXJzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sw7hyZGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InPDuG5fbWFuX3Rpcl9vbnNfdG9yX2ZyZV9sw7hyIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJzw7hfbWFfdGlfb25fdG9fZnJfbMO4Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIFtkLl0gRC4gTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltJIGRhZyBrbC5dIExUIixuZXh0RGF5OiJbSSBtb3JnZW4ga2wuXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2tsLl0gTFQiLGxhc3REYXk6IltJIGfDpXIga2wuXSBMVCIsbGFzdFdlZWs6IltzaWRzdGVdIGRkZGQgW2tsXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToib20gJXMiLHBhc3Q6IiVzIHNpZGVuIixzOiJmw6Ugc2VrdW5kZXIiLG06ImV0IG1pbnV0IixtbToiJWQgbWludXR0ZXIiLGg6ImVuIHRpbWUiLGhoOiIlZCB0aW1lciIsZDoiZW4gZGFnIixkZDoiJWQgZGFnZSIsTToiZW4gbcOlbmVkIixNTToiJWQgbcOlbmVkZXIiLHk6ImV0IMOlciIseXk6IiVkIMOlciJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pO3JldHVybiBlfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoImRhIiwiZGEiLHtjbG9zZVRleHQ6Ikx1ayIscHJldlRleHQ6IiYjeDNDO0ZvcnJpZ2UiLG5leHRUZXh0OiJOw6ZzdGUmI3gzRTsiLGN1cnJlbnRUZXh0OiJJZGFnIixtb250aE5hbWVzOlsiSmFudWFyIiwiRmVicnVhciIsIk1hcnRzIiwiQXByaWwiLCJNYWoiLCJKdW5pIiwiSnVsaSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9rdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWFqIiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2t0IiwiTm92IiwiRGVjIl0sZGF5TmFtZXM6WyJTw7huZGFnIiwiTWFuZGFnIiwiVGlyc2RhZyIsIk9uc2RhZyIsIlRvcnNkYWciLCJGcmVkYWciLCJMw7hyZGFnIl0sZGF5TmFtZXNTaG9ydDpbIlPDuG4iLCJNYW4iLCJUaXIiLCJPbnMiLCJUb3IiLCJGcmUiLCJMw7hyIl0sZGF5TmFtZXNNaW46WyJTw7giLCJNYSIsIlRpIiwiT24iLCJUbyIsIkZyIiwiTMO4Il0sd2Vla0hlYWRlcjoiVWdlIixkYXRlRm9ybWF0OiJkZC1tbS15eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiZGEiLHtidXR0b25UZXh0Onttb250aDoiTcOlbmVkIix3ZWVrOiJVZ2UiLGRheToiRGFnIixsaXN0OiJBZ2VuZGEifSxhbGxEYXlUZXh0OiJIZWxlIGRhZ2VuIixldmVudExpbWl0VGV4dDoiZmxlcmUiLG5vRXZlbnRzTWVzc2FnZToiSW5nZW4gYXJyYW5nZW1lbnRlciBhdCB2aXNlIn0pfSgpLGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLGEsdCxuKXt2YXIgcj17bTpbImVpbmUgTWludXRlIiwiZWluZXIgTWludXRlIl0saDpbImVpbmUgU3R1bmRlIiwiZWluZXIgU3R1bmRlIl0sZDpbImVpbiBUYWciLCJlaW5lbSBUYWciXSxkZDpbZSsiIFRhZ2UiLGUrIiBUYWdlbiJdLE06WyJlaW4gTW9uYXQiLCJlaW5lbSBNb25hdCJdLE1NOltlKyIgTW9uYXRlIixlKyIgTW9uYXRlbiJdLHk6WyJlaW4gSmFociIsImVpbmVtIEphaHIiXSx5eTpbZSsiIEphaHJlIixlKyIgSmFocmVuIl19O3JldHVybiBhP3JbdF1bMF06clt0XVsxXX12YXIgdD1hLmRlZmluZUxvY2FsZSgiZGUiLHttb250aHM6IkphbnVhcl9GZWJydWFyX03DpHJ6X0FwcmlsX01haV9KdW5pX0p1bGlfQXVndXN0X1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0RlemVtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW4uX0ZlYnIuX01yei5fQXByLl9NYWlfSnVuLl9KdWwuX0F1Zy5fU2VwdC5fT2t0Ll9Ob3YuX0Rlei4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiU29ubnRhZ19Nb250YWdfRGllbnN0YWdfTWl0dHdvY2hfRG9ubmVyc3RhZ19GcmVpdGFnX1NhbXN0YWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU28uX01vLl9EaS5fTWkuX0RvLl9Gci5fU2EuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTb19Nb19EaV9NaV9Eb19Gcl9TYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQuIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbaGV1dGUgdW1dIExUIFtVaHJdIixzYW1lRWxzZToiTCIsbmV4dERheToiW21vcmdlbiB1bV0gTFQgW1Vocl0iLG5leHRXZWVrOiJkZGRkIFt1bV0gTFQgW1Vocl0iLGxhc3REYXk6IltnZXN0ZXJuIHVtXSBMVCBbVWhyXSIsbGFzdFdlZWs6IltsZXR6dGVuXSBkZGRkIFt1bV0gTFQgW1Vocl0ifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6InZvciAlcyIsczoiZWluIHBhYXIgU2VrdW5kZW4iLG06ZSxtbToiJWQgTWludXRlbiIsaDplLGhoOiIlZCBTdHVuZGVuIixkOmUsZGQ6ZSxNOmUsTU06ZSx5OmUseXk6ZX0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSk7cmV0dXJuIHR9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgiZGUiLCJkZSIse2Nsb3NlVGV4dDoiU2NobGllw59lbiIscHJldlRleHQ6IiYjeDNDO1p1csO8Y2siLG5leHRUZXh0OiJWb3ImI3gzRTsiLGN1cnJlbnRUZXh0OiJIZXV0ZSIsbW9udGhOYW1lczpbIkphbnVhciIsIkZlYnJ1YXIiLCJNw6RyeiIsIkFwcmlsIiwiTWFpIiwiSnVuaSIsIkp1bGkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPa3RvYmVyIiwiTm92ZW1iZXIiLCJEZXplbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk3DpHIiLCJBcHIiLCJNYWkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPa3QiLCJOb3YiLCJEZXoiXSxkYXlOYW1lczpbIlNvbm50YWciLCJNb250YWciLCJEaWVuc3RhZyIsIk1pdHR3b2NoIiwiRG9ubmVyc3RhZyIsIkZyZWl0YWciLCJTYW1zdGFnIl0sZGF5TmFtZXNTaG9ydDpbIlNvIiwiTW8iLCJEaSIsIk1pIiwiRG8iLCJGciIsIlNhIl0sZGF5TmFtZXNNaW46WyJTbyIsIk1vIiwiRGkiLCJNaSIsIkRvIiwiRnIiLCJTYSJdLHdlZWtIZWFkZXI6IktXIixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiZGUiLHtidXR0b25UZXh0Onttb250aDoiTW9uYXQiLHdlZWs6IldvY2hlIixkYXk6IlRhZyIsbGlzdDoiVGVybWluw7xiZXJzaWNodCJ9LGFsbERheVRleHQ6Ikdhbnp0w6RnaWciLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGUpe3JldHVybiIrIHdlaXRlcmUgIitlfSxub0V2ZW50c01lc3NhZ2U6IktlaW5lIEVyZWlnbmlzc2UgYW56dXplaWdlbiJ9KX0oKSxmdW5jdGlvbigpeyFmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSxhLHQsbil7dmFyIHI9e206WyJlaW5lIE1pbnV0ZSIsImVpbmVyIE1pbnV0ZSJdLGg6WyJlaW5lIFN0dW5kZSIsImVpbmVyIFN0dW5kZSJdLGQ6WyJlaW4gVGFnIiwiZWluZW0gVGFnIl0sZGQ6W2UrIiBUYWdlIixlKyIgVGFnZW4iXSxNOlsiZWluIE1vbmF0IiwiZWluZW0gTW9uYXQiXSxNTTpbZSsiIE1vbmF0ZSIsZSsiIE1vbmF0ZW4iXSx5OlsiZWluIEphaHIiLCJlaW5lbSBKYWhyIl0seXk6W2UrIiBKYWhyZSIsZSsiIEphaHJlbiJdfTtyZXR1cm4gYT9yW3RdWzBdOnJbdF1bMV19dmFyIHQ9YS5kZWZpbmVMb2NhbGUoImRlLWF0Iix7bW9udGhzOiJKw6RubmVyX0ZlYnJ1YXJfTcOkcnpfQXByaWxfTWFpX0p1bmlfSnVsaV9BdWd1c3RfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGV6ZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IkrDpG4uX0ZlYnIuX01yei5fQXByLl9NYWlfSnVuLl9KdWwuX0F1Zy5fU2VwdC5fT2t0Ll9Ob3YuX0Rlei4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiU29ubnRhZ19Nb250YWdfRGllbnN0YWdfTWl0dHdvY2hfRG9ubmVyc3RhZ19GcmVpdGFnX1NhbXN0YWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU28uX01vLl9EaS5fTWkuX0RvLl9Gci5fU2EuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTb19Nb19EaV9NaV9Eb19Gcl9TYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQuIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbaGV1dGUgdW1dIExUIFtVaHJdIixzYW1lRWxzZToiTCIsbmV4dERheToiW21vcmdlbiB1bV0gTFQgW1Vocl0iLG5leHRXZWVrOiJkZGRkIFt1bV0gTFQgW1Vocl0iLGxhc3REYXk6IltnZXN0ZXJuIHVtXSBMVCBbVWhyXSIsbGFzdFdlZWs6IltsZXR6dGVuXSBkZGRkIFt1bV0gTFQgW1Vocl0ifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6InZvciAlcyIsczoiZWluIHBhYXIgU2VrdW5kZW4iLG06ZSxtbToiJWQgTWludXRlbiIsaDplLGhoOiIlZCBTdHVuZGVuIixkOmUsZGQ6ZSxNOmUsTU06ZSx5OmUseXk6ZX0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSk7cmV0dXJuIHR9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgiZGUtYXQiLCJkZSIse2Nsb3NlVGV4dDoiU2NobGllw59lbiIscHJldlRleHQ6IiYjeDNDO1p1csO8Y2siLG5leHRUZXh0OiJWb3ImI3gzRTsiLGN1cnJlbnRUZXh0OiJIZXV0ZSIsbW9udGhOYW1lczpbIkphbnVhciIsIkZlYnJ1YXIiLCJNw6RyeiIsIkFwcmlsIiwiTWFpIiwiSnVuaSIsIkp1bGkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPa3RvYmVyIiwiTm92ZW1iZXIiLCJEZXplbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk3DpHIiLCJBcHIiLCJNYWkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPa3QiLCJOb3YiLCJEZXoiXSxkYXlOYW1lczpbIlNvbm50YWciLCJNb250YWciLCJEaWVuc3RhZyIsIk1pdHR3b2NoIiwiRG9ubmVyc3RhZyIsIkZyZWl0YWciLCJTYW1zdGFnIl0sZGF5TmFtZXNTaG9ydDpbIlNvIiwiTW8iLCJEaSIsIk1pIiwiRG8iLCJGciIsIlNhIl0sZGF5TmFtZXNNaW46WyJTbyIsIk1vIiwiRGkiLCJNaSIsIkRvIiwiRnIiLCJTYSJdLHdlZWtIZWFkZXI6IktXIixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiZGUtYXQiLHtidXR0b25UZXh0Onttb250aDoiTW9uYXQiLHdlZWs6IldvY2hlIixkYXk6IlRhZyIsbGlzdDoiVGVybWluw7xiZXJzaWNodCJ9LGFsbERheVRleHQ6Ikdhbnp0w6RnaWciLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGUpe3JldHVybiIrIHdlaXRlcmUgIitlfSxub0V2ZW50c01lc3NhZ2U6IktlaW5lIEVyZWlnbmlzc2UgYW56dXplaWdlbiJ9KX0oKSxmdW5jdGlvbigpeyFmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBGdW5jdGlvbnx8IltvYmplY3QgRnVuY3Rpb25dIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKX12YXIgdD1hLmRlZmluZUxvY2FsZSgiZWwiLHttb250aHNOb21pbmF0aXZlRWw6Is6ZzrHOvc6/z4XOrM+BzrnOv8+CX86mzrXOss+Bzr/Phc6sz4HOuc6/z4JfzpzOrM+Bz4TOuc6/z4JfzpHPgM+Bzq/Ou865zr/Pgl/OnM6szrnOv8+CX86Zzr/Pjc69zrnOv8+CX86Zzr/Pjc67zrnOv8+CX86Rz43Os86/z4XPg8+Ezr/Pgl/Oo861z4DPhM6tzrzOss+BzrnOv8+CX86fzrrPhM+OzrLPgc65zr/Pgl/Onc6/zq3OvM6yz4HOuc6/z4JfzpTOtc66zq3OvM6yz4HOuc6/z4IiLnNwbGl0KCJfIiksbW9udGhzR2VuaXRpdmVFbDoizpnOsc69zr/Phc6xz4HOr86/z4VfzqbOtc6yz4HOv8+FzrHPgc6vzr/PhV/OnM6xz4HPhM6vzr/PhV/Okc+Az4HOuc67zq/Ov8+FX86czrHOkM6/z4VfzpnOv8+Fzr3Or86/z4VfzpnOv8+FzrvOr86/z4VfzpHPhc6zzr/Pjc+Dz4TOv8+FX86jzrXPgM+EzrXOvM6yz4HOr86/z4Vfzp/Ous+Ez4nOss+Bzq/Ov8+FX86dzr/Otc68zrLPgc6vzr/PhV/OlM61zrrOtc68zrLPgc6vzr/PhSIuc3BsaXQoIl8iKSxtb250aHM6ZnVuY3Rpb24oZSxhKXtyZXR1cm4vRC8udGVzdChhLnN1YnN0cmluZygwLGEuaW5kZXhPZigiTU1NTSIpKSk/dGhpcy5fbW9udGhzR2VuaXRpdmVFbFtlLm1vbnRoKCldOnRoaXMuX21vbnRoc05vbWluYXRpdmVFbFtlLm1vbnRoKCldfSxtb250aHNTaG9ydDoizpnOsc69X86mzrXOsl/OnM6xz4FfzpHPgM+BX86czrHPil/Omc6/z4XOvV/Omc6/z4XOu1/Okc+FzrNfzqPOtc+AX86fzrrPhF/Onc6/zrVfzpTOtc66Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiLOms+Fz4HOuc6xzrrOrl/OlM61z4XPhM6tz4HOsV/OpM+Bzq/PhM63X86kzrXPhM6sz4HPhM63X86gzq3OvM+Az4TOt1/OoM6xz4HOsc+DzrrOtc+Fzq5fzqPOrM6yzrLOsc+Ezr8iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoizprPhc+BX86UzrXPhV/OpM+BzrlfzqTOtc+EX86gzrXOvF/OoM6xz4FfzqPOsc6yIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLOms+FX86UzrVfzqTPgV/OpM61X86gzrVfzqDOsV/Oo86xIi5zcGxpdCgiXyIpLG1lcmlkaWVtOmZ1bmN0aW9uKGUsYSx0KXtyZXR1cm4gZT4xMT90PyLOvM68IjoizpzOnCI6dD8iz4DOvCI6Is6gzpwifSxpc1BNOmZ1bmN0aW9uKGUpe3JldHVybiLOvCI9PT0oZSsiIikudG9Mb3dlckNhc2UoKVswXX0sbWVyaWRpZW1QYXJzZTovW86gzpxdXC4/zpw/XC4/L2ksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJoOm1tIEEiLExUUzoiaDptbTpzcyBBIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgaDptbSBBIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEifSxjYWxlbmRhckVsOntzYW1lRGF5OiJbzqPOrs68zrXPgc6xIHt9XSBMVCIsbmV4dERheToiW86Rz43Pgc65zr8ge31dIExUIixuZXh0V2VlazoiZGRkZCBbe31dIExUIixsYXN0RGF5OiJbzqfOuM61z4Ige31dIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDY6cmV0dXJuIlvPhM6/IM+Az4HOv863zrPOv8+NzrzOtc69zr9dIGRkZGQgW3t9XSBMVCI7ZGVmYXVsdDpyZXR1cm4iW8+EzrfOvSDPgM+Bzr/Ot86zzr/Pjc68zrXOvc63XSBkZGRkIFt7fV0gTFQifX0sc2FtZUVsc2U6IkwifSxjYWxlbmRhcjpmdW5jdGlvbihhLHQpe3ZhciBuPXRoaXMuX2NhbGVuZGFyRWxbYV0scj10JiZ0LmhvdXJzKCk7cmV0dXJuIGUobikmJihuPW4uYXBwbHkodCkpLG4ucmVwbGFjZSgie30iLHIlMTI9PT0xPyLPg8+EzrciOiLPg8+EzrnPgiIpfSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiz4POtSAlcyIscGFzdDoiJXMgz4DPgc65zr0iLHM6Is67zq/Os86xIM60zrXPhc+EzrXPgc+MzrvOtc+Az4TOsSIsbToizq3Ovc6xIM67zrXPgM+Ez4wiLG1tOiIlZCDOu861z4DPhM6sIixoOiLOvM6vzrEgz47Pgc6xIixoaDoiJWQgz47Pgc61z4IiLGQ6Is68zq/OsSDOvM6tz4HOsSIsZGQ6IiVkIM68zq3Pgc61z4IiLE06Is6tzr3Osc+CIM68zq7Ovc6xz4IiLE1NOiIlZCDOvM6uzr3Otc+CIix5OiLOrc69zrHPgiDPh8+Bz4zOvc6/z4IiLHl5OiIlZCDPh8+Bz4zOvc65zrEifSxvcmRpbmFsUGFyc2U6L1xkezEsMn3Oty8sb3JkaW5hbDoiJWTOtyIsd2Vlazp7ZG93OjEsZG95OjR9fSk7cmV0dXJuIHR9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgiZWwiLCJlbCIse2Nsb3NlVGV4dDoizprOu861zq/Pg865zrzOvyIscHJldlRleHQ6Is6gz4HOv863zrPOv8+NzrzOtc69zr/PgiIsbmV4dFRleHQ6Is6Vz4DPjM68zrXOvc6/z4IiLGN1cnJlbnRUZXh0OiLOo86uzrzOtc+BzrEiLG1vbnRoTmFtZXM6WyLOmc6xzr3Ov8+FzqzPgc65zr/PgiIsIs6mzrXOss+Bzr/Phc6sz4HOuc6/z4IiLCLOnM6sz4HPhM65zr/PgiIsIs6Rz4DPgc6vzrvOuc6/z4IiLCLOnM6szrnOv8+CIiwizpnOv8+Nzr3Ouc6/z4IiLCLOmc6/z43Ou865zr/PgiIsIs6Rz43Os86/z4XPg8+Ezr/PgiIsIs6jzrXPgM+Ezq3OvM6yz4HOuc6/z4IiLCLOn866z4TPjs6yz4HOuc6/z4IiLCLOnc6/zq3OvM6yz4HOuc6/z4IiLCLOlM61zrrOrc68zrLPgc65zr/PgiJdLG1vbnRoTmFtZXNTaG9ydDpbIs6ZzrHOvSIsIs6mzrXOsiIsIs6czrHPgSIsIs6Rz4DPgSIsIs6czrHOuSIsIs6Zzr/Phc69IiwizpnOv8+FzrsiLCLOkc+FzrMiLCLOo861z4AiLCLOn866z4QiLCLOnc6/zrUiLCLOlM61zroiXSxkYXlOYW1lczpbIs6az4XPgc65zrHOus6uIiwizpTOtc+Fz4TOrc+BzrEiLCLOpM+Bzq/PhM63IiwizqTOtc+EzqzPgc+EzrciLCLOoM6tzrzPgM+EzrciLCLOoM6xz4HOsc+DzrrOtc+Fzq4iLCLOo86szrLOss6xz4TOvyJdLGRheU5hbWVzU2hvcnQ6WyLOms+Fz4EiLCLOlM61z4UiLCLOpM+BzrkiLCLOpM61z4QiLCLOoM61zrwiLCLOoM6xz4EiLCLOo86xzrIiXSxkYXlOYW1lc01pbjpbIs6az4UiLCLOlM61IiwizqTPgSIsIs6kzrUiLCLOoM61IiwizqDOsSIsIs6jzrEiXSx3ZWVrSGVhZGVyOiLOlc6yzrQiLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJlbCIse2J1dHRvblRleHQ6e21vbnRoOiLOnM6uzr3Osc+CIix3ZWVrOiLOlc6yzrTOv868zqzOtM6xIixkYXk6Is6XzrzOrc+BzrEiLGxpc3Q6Is6Rz4TOts6tzr3PhM6xIn0sYWxsRGF5VGV4dDoizp/Ou86/zq7OvM61z4HOvyIsZXZlbnRMaW1pdFRleHQ6Is+AzrXPgc65z4PPg8+Mz4TOtc+BzrEiLG5vRXZlbnRzTWVzc2FnZToizpTOtc69IM+Fz4DOrM+Bz4fOv8+Fzr0gzrPOtc6zzr/Ovc+Mz4TOsSDOs865zrEgzr3OsSDOtc68z4bOsc69zrnPg8+EzrXOryJ9KX0oKSxmdW5jdGlvbigpeyFmdW5jdGlvbigpe3ZhciBlPWEuZGVmaW5lTG9jYWxlKCJlbi1hdSIse21vbnRoczoiSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6IlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlN1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3VfTW9fVHVfV2VfVGhfRnJfU2EiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJoOm1tIEEiLExUUzoiaDptbTpzcyBBIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgaDptbSBBIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBoOm1tIEEifSxjYWxlbmRhcjp7c2FtZURheToiW1RvZGF5IGF0XSBMVCIsbmV4dERheToiW1RvbW9ycm93IGF0XSBMVCIsbmV4dFdlZWs6ImRkZGQgW2F0XSBMVCIsbGFzdERheToiW1llc3RlcmRheSBhdF0gTFQiLGxhc3RXZWVrOiJbTGFzdF0gZGRkZCBbYXRdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoiJXMgYWdvIixzOiJhIGZldyBzZWNvbmRzIixtOiJhIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6ImFuIGhvdXIiLGhoOiIlZCBob3VycyIsZDoiYSBkYXkiLGRkOiIlZCBkYXlzIixNOiJhIG1vbnRoIixNTToiJWQgbW9udGhzIix5OiJhIHllYXIiLHl5OiIlZCB5ZWFycyJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfShzdHxuZHxyZHx0aCkvLG9yZGluYWw6ZnVuY3Rpb24oZSl7dmFyIGE9ZSUxMCx0PTE9PT1+fihlJTEwMC8xMCk/InRoIjoxPT09YT8ic3QiOjI9PT1hPyJuZCI6Mz09PWE/InJkIjoidGgiO3JldHVybiBlK3R9LHdlZWs6ewpkb3c6MSxkb3k6NH19KTtyZXR1cm4gZX0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJlbi1hdSIsImVuLUFVIix7Y2xvc2VUZXh0OiJEb25lIixwcmV2VGV4dDoiUHJldiIsbmV4dFRleHQ6Ik5leHQiLGN1cnJlbnRUZXh0OiJUb2RheSIsbW9udGhOYW1lczpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sZGF5TmFtZXM6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLGRheU5hbWVzU2hvcnQ6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxkYXlOYW1lc01pbjpbIlN1IiwiTW8iLCJUdSIsIldlIiwiVGgiLCJGciIsIlNhIl0sd2Vla0hlYWRlcjoiV2siLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJlbi1hdSIpfSgpLGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKCl7dmFyIGU9YS5kZWZpbmVMb2NhbGUoImVuLWNhIix7bW9udGhzOiJKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdV9Nb19UdV9XZV9UaF9Gcl9TYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Img6bW0gQSIsTFRTOiJoOm1tOnNzIEEiLEw6IllZWVktTU0tREQiLExMOiJNTU1NIEQsIFlZWVkiLExMTDoiTU1NTSBELCBZWVlZIGg6bW0gQSIsTExMTDoiZGRkZCwgTU1NTSBELCBZWVlZIGg6bW0gQSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbVG9kYXkgYXRdIExUIixuZXh0RGF5OiJbVG9tb3Jyb3cgYXRdIExUIixuZXh0V2VlazoiZGRkZCBbYXRdIExUIixsYXN0RGF5OiJbWWVzdGVyZGF5IGF0XSBMVCIsbGFzdFdlZWs6IltMYXN0XSBkZGRkIFthdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiIlcyBhZ28iLHM6ImEgZmV3IHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0fG5kfHJkfHRoKS8sb3JkaW5hbDpmdW5jdGlvbihlKXt2YXIgYT1lJTEwLHQ9MT09PX5+KGUlMTAwLzEwKT8idGgiOjE9PT1hPyJzdCI6Mj09PWE/Im5kIjozPT09YT8icmQiOiJ0aCI7cmV0dXJuIGUrdH19KTtyZXR1cm4gZX0oKSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoImVuLWNhIil9KCksZnVuY3Rpb24oKXshZnVuY3Rpb24oKXt2YXIgZT1hLmRlZmluZUxvY2FsZSgiZW4tZ2IiLHttb250aHM6IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1RvZGF5IGF0XSBMVCIsbmV4dERheToiW1RvbW9ycm93IGF0XSBMVCIsbmV4dFdlZWs6ImRkZGQgW2F0XSBMVCIsbGFzdERheToiW1llc3RlcmRheSBhdF0gTFQiLGxhc3RXZWVrOiJbTGFzdF0gZGRkZCBbYXRdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoiJXMgYWdvIixzOiJhIGZldyBzZWNvbmRzIixtOiJhIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6ImFuIGhvdXIiLGhoOiIlZCBob3VycyIsZDoiYSBkYXkiLGRkOiIlZCBkYXlzIixNOiJhIG1vbnRoIixNTToiJWQgbW9udGhzIix5OiJhIHllYXIiLHl5OiIlZCB5ZWFycyJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfShzdHxuZHxyZHx0aCkvLG9yZGluYWw6ZnVuY3Rpb24oZSl7dmFyIGE9ZSUxMCx0PTE9PT1+fihlJTEwMC8xMCk/InRoIjoxPT09YT8ic3QiOjI9PT1hPyJuZCI6Mz09PWE/InJkIjoidGgiO3JldHVybiBlK3R9LHdlZWs6e2RvdzoxLGRveTo0fX0pO3JldHVybiBlfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoImVuLWdiIiwiZW4tR0IiLHtjbG9zZVRleHQ6IkRvbmUiLHByZXZUZXh0OiJQcmV2IixuZXh0VGV4dDoiTmV4dCIsY3VycmVudFRleHQ6IlRvZGF5Iixtb250aE5hbWVzOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSxkYXlOYW1lczpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sZGF5TmFtZXNTaG9ydDpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLGRheU5hbWVzTWluOlsiU3UiLCJNbyIsIlR1IiwiV2UiLCJUaCIsIkZyIiwiU2EiXSx3ZWVrSGVhZGVyOiJXayIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoImVuLWdiIil9KCksZnVuY3Rpb24oKXshZnVuY3Rpb24oKXt2YXIgZT1hLmRlZmluZUxvY2FsZSgiZW4taWUiLHttb250aHM6IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELU1NLVlZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbVG9kYXkgYXRdIExUIixuZXh0RGF5OiJbVG9tb3Jyb3cgYXRdIExUIixuZXh0V2VlazoiZGRkZCBbYXRdIExUIixsYXN0RGF5OiJbWWVzdGVyZGF5IGF0XSBMVCIsbGFzdFdlZWs6IltMYXN0XSBkZGRkIFthdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiIlcyBhZ28iLHM6ImEgZmV3IHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0fG5kfHJkfHRoKS8sb3JkaW5hbDpmdW5jdGlvbihlKXt2YXIgYT1lJTEwLHQ9MT09PX5+KGUlMTAwLzEwKT8idGgiOjE9PT1hPyJzdCI6Mj09PWE/Im5kIjozPT09YT8icmQiOiJ0aCI7cmV0dXJuIGUrdH0sd2Vlazp7ZG93OjEsZG95OjR9fSk7cmV0dXJuIGV9KCksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJlbi1pZSIpfSgpLGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKCl7dmFyIGU9YS5kZWZpbmVMb2NhbGUoImVuLW56Iix7bW9udGhzOiJKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdV9Nb19UdV9XZV9UaF9Gcl9TYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Img6bW0gQSIsTFRTOiJoOm1tOnNzIEEiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBoOm1tIEEiLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbVG9kYXkgYXRdIExUIixuZXh0RGF5OiJbVG9tb3Jyb3cgYXRdIExUIixuZXh0V2VlazoiZGRkZCBbYXRdIExUIixsYXN0RGF5OiJbWWVzdGVyZGF5IGF0XSBMVCIsbGFzdFdlZWs6IltMYXN0XSBkZGRkIFthdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiIlcyBhZ28iLHM6ImEgZmV3IHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0fG5kfHJkfHRoKS8sb3JkaW5hbDpmdW5jdGlvbihlKXt2YXIgYT1lJTEwLHQ9MT09PX5+KGUlMTAwLzEwKT8idGgiOjE9PT1hPyJzdCI6Mj09PWE/Im5kIjozPT09YT8icmQiOiJ0aCI7cmV0dXJuIGUrdH0sd2Vlazp7ZG93OjEsZG95OjR9fSk7cmV0dXJuIGV9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgiZW4tbnoiLCJlbi1OWiIse2Nsb3NlVGV4dDoiRG9uZSIscHJldlRleHQ6IlByZXYiLG5leHRUZXh0OiJOZXh0IixjdXJyZW50VGV4dDoiVG9kYXkiLG1vbnRoTmFtZXM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLGRheU5hbWVzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxkYXlOYW1lc1Nob3J0OlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sZGF5TmFtZXNNaW46WyJTdSIsIk1vIiwiVHUiLCJXZSIsIlRoIiwiRnIiLCJTYSJdLHdlZWtIZWFkZXI6IldrIixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiZW4tbnoiKX0oKSxmdW5jdGlvbigpeyFmdW5jdGlvbigpe3ZhciBlPSJlbmUuX2ZlYi5fbWFyLl9hYnIuX21heS5fanVuLl9qdWwuX2Fnby5fc2VwLl9vY3QuX25vdi5fZGljLiIuc3BsaXQoIl8iKSx0PSJlbmVfZmViX21hcl9hYnJfbWF5X2p1bl9qdWxfYWdvX3NlcF9vY3Rfbm92X2RpYyIuc3BsaXQoIl8iKSxuPWEuZGVmaW5lTG9jYWxlKCJlcyIse21vbnRoczoiZW5lcm9fZmVicmVyb19tYXJ6b19hYnJpbF9tYXlvX2p1bmlvX2p1bGlvX2Fnb3N0b19zZXB0aWVtYnJlX29jdHVicmVfbm92aWVtYnJlX2RpY2llbWJyZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDpmdW5jdGlvbihhLG4pe3JldHVybi8tTU1NLS8udGVzdChuKT90W2EubW9udGgoKV06ZVthLm1vbnRoKCldfSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJkb21pbmdvX2x1bmVzX21hcnRlc19tacOpcmNvbGVzX2p1ZXZlc192aWVybmVzX3PDoWJhZG8iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiZG9tLl9sdW4uX21hci5fbWnDqS5fanVlLl92aWUuX3PDoWIuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJkb19sdV9tYV9taV9qdV92aV9zw6EiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIixMTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tIixMTExMOiJkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltob3kgYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LG5leHREYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW21hw7FhbmEgYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LG5leHRXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuImRkZGQgW2EgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxsYXN0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltheWVyIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiJbZWxdIGRkZGQgW3Bhc2FkbyBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZW4gJXMiLHBhc3Q6ImhhY2UgJXMiLHM6InVub3Mgc2VndW5kb3MiLG06InVuIG1pbnV0byIsbW06IiVkIG1pbnV0b3MiLGg6InVuYSBob3JhIixoaDoiJWQgaG9yYXMiLGQ6InVuIGTDrWEiLGRkOiIlZCBkw61hcyIsTToidW4gbWVzIixNTToiJWQgbWVzZXMiLHk6InVuIGHDsW8iLHl5OiIlZCBhw7FvcyJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfcK6LyxvcmRpbmFsOiIlZMK6Iix3ZWVrOntkb3c6MSxkb3k6NH19KTtyZXR1cm4gbn0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJlcyIsImVzIix7Y2xvc2VUZXh0OiJDZXJyYXIiLHByZXZUZXh0OiImI3gzQztBbnQiLG5leHRUZXh0OiJTaWcmI3gzRTsiLGN1cnJlbnRUZXh0OiJIb3kiLG1vbnRoTmFtZXM6WyJlbmVybyIsImZlYnJlcm8iLCJtYXJ6byIsImFicmlsIiwibWF5byIsImp1bmlvIiwianVsaW8iLCJhZ29zdG8iLCJzZXB0aWVtYnJlIiwib2N0dWJyZSIsIm5vdmllbWJyZSIsImRpY2llbWJyZSJdLG1vbnRoTmFtZXNTaG9ydDpbImVuZSIsImZlYiIsIm1hciIsImFiciIsIm1heSIsImp1biIsImp1bCIsImFnbyIsInNlcCIsIm9jdCIsIm5vdiIsImRpYyJdLGRheU5hbWVzOlsiZG9taW5nbyIsImx1bmVzIiwibWFydGVzIiwibWnDqXJjb2xlcyIsImp1ZXZlcyIsInZpZXJuZXMiLCJzw6FiYWRvIl0sZGF5TmFtZXNTaG9ydDpbImRvbSIsImx1biIsIm1hciIsIm1pw6kiLCJqdWUiLCJ2aWUiLCJzw6FiIl0sZGF5TmFtZXNNaW46WyJEIiwiTCIsIk0iLCJYIiwiSiIsIlYiLCJTIl0sd2Vla0hlYWRlcjoiU20iLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJlcyIse2J1dHRvblRleHQ6e21vbnRoOiJNZXMiLHdlZWs6IlNlbWFuYSIsZGF5OiJEw61hIixsaXN0OiJBZ2VuZGEifSxhbGxEYXlIdG1sOiJUb2RvPGJyLz5lbCBkw61hIixldmVudExpbWl0VGV4dDoibcOhcyIsbm9FdmVudHNNZXNzYWdlOiJObyBoYXkgZXZlbnRvcyBwYXJhIG1vc3RyYXIifSl9KCksZnVuY3Rpb24oKXshZnVuY3Rpb24oKXt2YXIgZT0iZW5lLl9mZWIuX21hci5fYWJyLl9tYXkuX2p1bi5fanVsLl9hZ28uX3NlcC5fb2N0Ll9ub3YuX2RpYy4iLnNwbGl0KCJfIiksdD0iZW5lX2ZlYl9tYXJfYWJyX21heV9qdW5fanVsX2Fnb19zZXBfb2N0X25vdl9kaWMiLnNwbGl0KCJfIiksbj1hLmRlZmluZUxvY2FsZSgiZXMtZG8iLHttb250aHM6ImVuZXJvX2ZlYnJlcm9fbWFyem9fYWJyaWxfbWF5b19qdW5pb19qdWxpb19hZ29zdG9fc2VwdGllbWJyZV9vY3R1YnJlX25vdmllbWJyZV9kaWNpZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ZnVuY3Rpb24oYSxuKXtyZXR1cm4vLU1NTS0vLnRlc3Qobik/dFthLm1vbnRoKCldOmVbYS5tb250aCgpXX0sbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiZG9taW5nb19sdW5lc19tYXJ0ZXNfbWnDqXJjb2xlc19qdWV2ZXNfdmllcm5lc19zw6FiYWRvIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRvbS5fbHVuLl9tYXIuX21pw6kuX2p1ZS5fdmllLl9zw6FiLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiZG9fbHVfbWFfbWlfanVfdmlfc8OhIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6Img6bW0gQSIsTFRTOiJoOm1tOnNzIEEiLEw6IkREL01NL1lZWVkiLExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkiLExMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIGg6bW0gQSIsTExMTDoiZGRkZCwgRCBbZGVdIE1NTU0gW2RlXSBZWVlZIGg6bW0gQSJ9LGNhbGVuZGFyOntzYW1lRGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltob3kgYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LG5leHREYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW21hw7FhbmEgYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LG5leHRXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuImRkZGQgW2EgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxsYXN0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltheWVyIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiJbZWxdIGRkZGQgW3Bhc2FkbyBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZW4gJXMiLHBhc3Q6ImhhY2UgJXMiLHM6InVub3Mgc2VndW5kb3MiLG06InVuIG1pbnV0byIsbW06IiVkIG1pbnV0b3MiLGg6InVuYSBob3JhIixoaDoiJWQgaG9yYXMiLGQ6InVuIGTDrWEiLGRkOiIlZCBkw61hcyIsTToidW4gbWVzIixNTToiJWQgbWVzZXMiLHk6InVuIGHDsW8iLHl5OiIlZCBhw7FvcyJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfcK6LyxvcmRpbmFsOiIlZMK6Iix3ZWVrOntkb3c6MSxkb3k6NH19KTtyZXR1cm4gbn0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJlcy1kbyIsImVzIix7Y2xvc2VUZXh0OiJDZXJyYXIiLHByZXZUZXh0OiImI3gzQztBbnQiLG5leHRUZXh0OiJTaWcmI3gzRTsiLGN1cnJlbnRUZXh0OiJIb3kiLG1vbnRoTmFtZXM6WyJlbmVybyIsImZlYnJlcm8iLCJtYXJ6byIsImFicmlsIiwibWF5byIsImp1bmlvIiwianVsaW8iLCJhZ29zdG8iLCJzZXB0aWVtYnJlIiwib2N0dWJyZSIsIm5vdmllbWJyZSIsImRpY2llbWJyZSJdLG1vbnRoTmFtZXNTaG9ydDpbImVuZSIsImZlYiIsIm1hciIsImFiciIsIm1heSIsImp1biIsImp1bCIsImFnbyIsInNlcCIsIm9jdCIsIm5vdiIsImRpYyJdLGRheU5hbWVzOlsiZG9taW5nbyIsImx1bmVzIiwibWFydGVzIiwibWnDqXJjb2xlcyIsImp1ZXZlcyIsInZpZXJuZXMiLCJzw6FiYWRvIl0sZGF5TmFtZXNTaG9ydDpbImRvbSIsImx1biIsIm1hciIsIm1pw6kiLCJqdWUiLCJ2aWUiLCJzw6FiIl0sZGF5TmFtZXNNaW46WyJEIiwiTCIsIk0iLCJYIiwiSiIsIlYiLCJTIl0sd2Vla0hlYWRlcjoiU20iLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJlcy1kbyIse2J1dHRvblRleHQ6e21vbnRoOiJNZXMiLHdlZWs6IlNlbWFuYSIsZGF5OiJEw61hIixsaXN0OiJBZ2VuZGEifSxhbGxEYXlIdG1sOiJUb2RvPGJyLz5lbCBkw61hIixldmVudExpbWl0VGV4dDoibcOhcyIsbm9FdmVudHNNZXNzYWdlOiJObyBoYXkgZXZlbnRvcyBwYXJhIG1vc3RyYXIifSl9KCksZnVuY3Rpb24oKXshZnVuY3Rpb24oKXt2YXIgZT1hLmRlZmluZUxvY2FsZSgiZXUiLHttb250aHM6InVydGFycmlsYV9vdHNhaWxhX21hcnR4b2FfYXBpcmlsYV9tYWlhdHphX2VrYWluYV91enRhaWxhX2FidXp0dWFfaXJhaWxhX3VycmlhX2F6YXJvYV9hYmVuZHVhIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJ1cnQuX290cy5fbWFyLl9hcGkuX21haS5fZWthLl91enQuX2FidS5faXJhLl91cnIuX2F6YS5fYWJlLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJpZ2FuZGVhX2FzdGVsZWhlbmFfYXN0ZWFydGVhX2FzdGVhemtlbmFfb3N0ZWd1bmFfb3N0aXJhbGFfbGFydW5iYXRhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImlnLl9hbC5fYXIuX2F6Ll9vZy5fb2wuX2xyLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiaWdfYWxfYXJfYXpfb2dfb2xfbHIiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IllZWVktTU0tREQiLExMOiJZWVlZW2tvXSBNTU1NW3Jlbl0gRFthXSIsTExMOiJZWVlZW2tvXSBNTU1NW3Jlbl0gRFthXSBISDptbSIsTExMTDoiZGRkZCwgWVlZWVtrb10gTU1NTVtyZW5dIERbYV0gSEg6bW0iLGw6IllZWVktTS1EIixsbDoiWVlZWVtrb10gTU1NIERbYV0iLGxsbDoiWVlZWVtrb10gTU1NIERbYV0gSEg6bW0iLGxsbGw6ImRkZCwgWVlZWVtrb10gTU1NIERbYV0gSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2dhdXJdIExUW2V0YW5dIixuZXh0RGF5OiJbYmloYXJdIExUW2V0YW5dIixuZXh0V2VlazoiZGRkZCBMVFtldGFuXSIsbGFzdERheToiW2F0em9dIExUW2V0YW5dIixsYXN0V2VlazoiW2F1cnJla29dIGRkZGQgTFRbZXRhbl0iLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIGJhcnJ1IixwYXN0OiJkdWVsYSAlcyIsczoic2VndW5kbyBiYXR6dWsiLG06Im1pbnV0dSBiYXQiLG1tOiIlZCBtaW51dHUiLGg6Im9yZHUgYmF0IixoaDoiJWQgb3JkdSIsZDoiZWd1biBiYXQiLGRkOiIlZCBlZ3VuIixNOiJoaWxhYmV0ZSBiYXQiLE1NOiIlZCBoaWxhYmV0ZSIseToidXJ0ZSBiYXQiLHl5OiIlZCB1cnRlIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95Ojd9fSk7cmV0dXJuIGV9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgiZXUiLCJldSIse2Nsb3NlVGV4dDoiRWdpbmEiLHByZXZUZXh0OiImI3gzQztBdXIiLG5leHRUZXh0OiJIdXImI3gzRTsiLGN1cnJlbnRUZXh0OiJHYXVyIixtb250aE5hbWVzOlsidXJ0YXJyaWxhIiwib3RzYWlsYSIsIm1hcnR4b2EiLCJhcGlyaWxhIiwibWFpYXR6YSIsImVrYWluYSIsInV6dGFpbGEiLCJhYnV6dHVhIiwiaXJhaWxhIiwidXJyaWEiLCJhemFyb2EiLCJhYmVuZHVhIl0sbW9udGhOYW1lc1Nob3J0OlsidXJ0LiIsIm90cy4iLCJtYXIuIiwiYXBpLiIsIm1haS4iLCJla2EuIiwidXp0LiIsImFidS4iLCJpcmEuIiwidXJyLiIsImF6YS4iLCJhYmUuIl0sZGF5TmFtZXM6WyJpZ2FuZGVhIiwiYXN0ZWxlaGVuYSIsImFzdGVhcnRlYSIsImFzdGVhemtlbmEiLCJvc3RlZ3VuYSIsIm9zdGlyYWxhIiwibGFydW5iYXRhIl0sZGF5TmFtZXNTaG9ydDpbImlnLiIsImFsLiIsImFyLiIsImF6LiIsIm9nLiIsIm9sLiIsImxyLiJdLGRheU5hbWVzTWluOlsiaWciLCJhbCIsImFyIiwiYXoiLCJvZyIsIm9sIiwibHIiXSx3ZWVrSGVhZGVyOiJBcyIsZGF0ZUZvcm1hdDoieXktbW0tZGQiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoImV1Iix7YnV0dG9uVGV4dDp7bW9udGg6IkhpbGFiZXRlYSIsd2VlazoiQXN0ZWEiLGRheToiRWd1bmEiLGxpc3Q6IkFnZW5kYSJ9LGFsbERheUh0bWw6IkVndW48YnIvPm9zb2EiLGV2ZW50TGltaXRUZXh0OiJnZWhpYWdvIixub0V2ZW50c01lc3NhZ2U6IkV6IGRhZ28gZWtpdGFsZGlyaWsgZXJha3VzdGVrbyJ9KX0oKSxmdW5jdGlvbigpeyFmdW5jdGlvbigpe3ZhciBlPXsxOiLbsSIsMjoi27IiLDM6ItuzIiw0OiLbtCIsNToi27UiLDY6Itu2Iiw3OiLbtyIsODoi27giLDk6Itu5IiwwOiLbsCJ9LHQ9eyLbsSI6IjEiLCLbsiI6IjIiLCLbsyI6IjMiLCLbtCI6IjQiLCLbtSI6IjUiLCLbtiI6IjYiLCLbtyI6IjciLCLbuCI6IjgiLCLbuSI6IjkiLCLbsCI6IjAifSxuPWEuZGVmaW5lTG9jYWxlKCJmYSIse21vbnRoczoi2pjYp9mG2YjbjNmHX9mB2YjYsduM2Ydf2YXYp9ix2LNf2KLZiNix24zZhF/ZhdmHX9qY2YjYptmGX9qY2YjYptuM2Ydf2KfZiNiqX9iz2b7Yqtin2YXYqNixX9in2qnYqtio2LFf2YbZiNin2YXYqNixX9iv2LPYp9mF2KjYsSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoi2pjYp9mG2YjbjNmHX9mB2YjYsduM2Ydf2YXYp9ix2LNf2KLZiNix24zZhF/ZhdmHX9qY2YjYptmGX9qY2YjYptuM2Ydf2KfZiNiqX9iz2b7Yqtin2YXYqNixX9in2qnYqtio2LFf2YbZiNin2YXYqNixX9iv2LPYp9mF2KjYsSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi24zaqeKAjNi02YbYqNmHX9iv2YjYtNmG2KjZh1/Ys9mH4oCM2LTZhtio2Ydf2obZh9in2LHYtNmG2KjZh1/ZvtmG2KzigIzYtNmG2KjZh1/YrNmF2LnZh1/YtNmG2KjZhyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLbjNqp4oCM2LTZhtio2Ydf2K/ZiNi02YbYqNmHX9iz2YfigIzYtNmG2KjZh1/ahtmH2KfYsdi02YbYqNmHX9m+2YbYrOKAjNi02YbYqNmHX9is2YXYudmHX9i02YbYqNmHIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLbjF/Yr1/Ys1/ahl/Zvl/YrF/YtCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LG1lcmlkaWVtUGFyc2U6L9mC2KjZhCDYp9iyINi42YfYsXzYqNi52K8g2KfYsiDYuNmH2LEvLGlzUE06ZnVuY3Rpb24oZSl7cmV0dXJuL9io2LnYryDYp9iyINi42YfYsS8udGVzdChlKX0sbWVyaWRpZW06ZnVuY3Rpb24oZSxhLHQpe3JldHVybiBlPDEyPyLZgtio2YQg2KfYsiDYuNmH2LEiOiLYqNi52K8g2KfYsiDYuNmH2LEifSxjYWxlbmRhcjp7c2FtZURheToiW9in2YXYsdmI2LIg2LPYp9i52KpdIExUIixuZXh0RGF5OiJb2YHYsdiv2Kcg2LPYp9i52KpdIExUIixuZXh0V2VlazoiZGRkZCBb2LPYp9i52KpdIExUIixsYXN0RGF5OiJb2K/bjNix2YjYsiDYs9in2LnYql0gTFQiLGxhc3RXZWVrOiJkZGRkIFvZvtuM2LRdIFvYs9in2LnYql0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Itiv2LEgJXMiLHBhc3Q6IiVzINm+24zYtCIsczoi2obZhtiv24zZhiDYq9in2YbbjNmHIixtOiLbjNqpINiv2YLbjNmC2YciLG1tOiIlZCDYr9mC24zZgtmHIixoOiLbjNqpINiz2KfYudiqIixoaDoiJWQg2LPYp9i52KoiLGQ6ItuM2qkg2LHZiNiyIixkZDoiJWQg2LHZiNiyIixNOiLbjNqpINmF2KfZhyIsTU06IiVkINmF2KfZhyIseToi24zaqSDYs9in2YQiLHl5OiIlZCDYs9in2YQifSxwcmVwYXJzZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9b27At27ldL2csZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KS5yZXBsYWNlKC/YjC9nLCIsIil9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXGQvZyxmdW5jdGlvbihhKXtyZXR1cm4gZVthXX0pLnJlcGxhY2UoLywvZywi2IwiKX0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ92YUvLG9yZGluYWw6IiVk2YUiLHdlZWs6e2Rvdzo2LGRveToxMn19KTtyZXR1cm4gbn0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJmYSIsImZhIix7Y2xvc2VUZXh0OiLYqNiz2KrZhiIscHJldlRleHQ6IiYjeDNDO9mC2KjZhNuMIixuZXh0VGV4dDoi2KjYudiv24wmI3gzRTsiLGN1cnJlbnRUZXh0OiLYp9mF2LHZiNiyIixtb250aE5hbWVzOlsi2pjYp9mG2YjbjNmHIiwi2YHZiNix24zZhyIsItmF2KfYsdizIiwi2KLZiNix24zZhCIsItmF2YciLCLamNmI2KbZhiIsItqY2YjYptuM2YciLCLYp9mI2KoiLCLYs9m+2KrYp9mF2KjYsSIsItin2qnYqtio2LEiLCLZhtmI2KfZhdio2LEiLCLYr9iz2KfZhdio2LEiXSxtb250aE5hbWVzU2hvcnQ6WyIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiXSxkYXlOYW1lczpbItmK2qnYtNmG2KjZhyIsItiv2YjYtNmG2KjZhyIsItiz2YfigIzYtNmG2KjZhyIsItqG2YfYp9ix2LTZhtio2YciLCLZvtmG2KzYtNmG2KjZhyIsItis2YXYudmHIiwi2LTZhtio2YciXSxkYXlOYW1lc1Nob3J0Olsi24wiLCLYryIsItizIiwi2oYiLCLZviIsItisIiwi2LQiXSxkYXlOYW1lc01pbjpbItuMIiwi2K8iLCLYsyIsItqGIiwi2b4iLCLYrCIsIti0Il0sd2Vla0hlYWRlcjoi2YfZgSIsZGF0ZUZvcm1hdDoieXkvbW0vZGQiLGZpcnN0RGF5OjYsaXNSVEw6ITAsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoImZhIix7YnV0dG9uVGV4dDp7bW9udGg6ItmF2KfZhyIsd2Vlazoi2YfZgdiq2YciLGRheToi2LHZiNiyIixsaXN0OiLYqNix2YbYp9mF2YcifSxhbGxEYXlUZXh0OiLYqtmF2KfZhSDYsdmI2LIiLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGUpe3JldHVybiLYqNuM2LQg2KfYsiAiK2V9LG5vRXZlbnRzTWVzc2FnZToi2YfbjNqGINix2YjbjNiv2KfYr9uMINio2Ycg2YbZhdin24zYtCJ9KX0oKSxmdW5jdGlvbigpeyFmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSxhLG4scil7dmFyIHM9IiI7c3dpdGNoKG4pe2Nhc2UicyI6cmV0dXJuIHI/Im11dXRhbWFuIHNla3VubmluIjoibXV1dGFtYSBzZWt1bnRpIjtjYXNlIm0iOnJldHVybiByPyJtaW51dXRpbiI6Im1pbnV1dHRpIjtjYXNlIm1tIjpzPXI/Im1pbnV1dGluIjoibWludXV0dGlhIjticmVhaztjYXNlImgiOnJldHVybiByPyJ0dW5uaW4iOiJ0dW50aSI7Y2FzZSJoaCI6cz1yPyJ0dW5uaW4iOiJ0dW50aWEiO2JyZWFrO2Nhc2UiZCI6cmV0dXJuIHI/InDDpGl2w6RuIjoicMOkaXbDpCI7Y2FzZSJkZCI6cz1yPyJww6RpdsOkbiI6InDDpGl2w6TDpCI7YnJlYWs7Y2FzZSJNIjpyZXR1cm4gcj8ia3V1a2F1ZGVuIjoia3V1a2F1c2kiO2Nhc2UiTU0iOnM9cj8ia3V1a2F1ZGVuIjoia3V1a2F1dHRhIjticmVhaztjYXNlInkiOnJldHVybiByPyJ2dW9kZW4iOiJ2dW9zaSI7Y2FzZSJ5eSI6cz1yPyJ2dW9kZW4iOiJ2dW90dGEifXJldHVybiBzPXQoZSxyKSsiICIrc31mdW5jdGlvbiB0KGUsYSl7cmV0dXJuIGU8MTA/YT9yW2VdOm5bZV06ZX12YXIgbj0ibm9sbGEgeWtzaSBrYWtzaSBrb2xtZSBuZWxqw6Qgdmlpc2kga3V1c2kgc2VpdHNlbcOkbiBrYWhkZWtzYW4geWhkZWtzw6RuIi5zcGxpdCgiICIpLHI9WyJub2xsYSIsInloZGVuIiwia2FoZGVuIiwia29sbWVuIiwibmVsasOkbiIsInZpaWRlbiIsImt1dWRlbiIsbls3XSxuWzhdLG5bOV1dLHM9YS5kZWZpbmVMb2NhbGUoImZpIix7bW9udGhzOiJ0YW1taWt1dV9oZWxtaWt1dV9tYWFsaXNrdXVfaHVodGlrdXVfdG91a29rdXVfa2Vzw6RrdXVfaGVpbsOka3V1X2Vsb2t1dV9zeXlza3V1X2xva2FrdXVfbWFycmFza3V1X2pvdWx1a3V1Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJ0YW1taV9oZWxtaV9tYWFsaXNfaHVodGlfdG91a29fa2Vzw6RfaGVpbsOkX2Vsb19zeXlzX2xva2FfbWFycmFzX2pvdWx1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJzdW5udW50YWlfbWFhbmFudGFpX3RpaXN0YWlfa2Vza2l2aWlra29fdG9yc3RhaV9wZXJqYW50YWlfbGF1YW50YWkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoic3VfbWFfdGlfa2VfdG9fcGVfbGEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46InN1X21hX3RpX2tlX3RvX3BlX2xhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEgubW0iLExUUzoiSEgubW0uc3MiLEw6IkRELk1NLllZWVkiLExMOiJEbyBNTU1NW3RhXSBZWVlZIixMTEw6IkRvIE1NTU1bdGFdIFlZWVksIFtrbG9dIEhILm1tIixMTExMOiJkZGRkLCBEbyBNTU1NW3RhXSBZWVlZLCBba2xvXSBISC5tbSIsbDoiRC5NLllZWVkiLGxsOiJEbyBNTU0gWVlZWSIsbGxsOiJEbyBNTU0gWVlZWSwgW2tsb10gSEgubW0iLGxsbGw6ImRkZCwgRG8gTU1NIFlZWVksIFtrbG9dIEhILm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6Ilt0w6Ruw6TDpG5dIFtrbG9dIExUIixuZXh0RGF5OiJbaHVvbWVubmFdIFtrbG9dIExUIixuZXh0V2VlazoiZGRkZCBba2xvXSBMVCIsbGFzdERheToiW2VpbGVuXSBba2xvXSBMVCIsbGFzdFdlZWs6Ilt2aWltZV0gZGRkZFtuYV0gW2tsb10gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIHDDpMOkc3TDpCIscGFzdDoiJXMgc2l0dGVuIixzOmUsbTplLG1tOmUsaDplLGhoOmUsZDplLGRkOmUsTTplLE1NOmUseTplLHl5OmV9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pO3JldHVybiBzfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoImZpIiwiZmkiLHtjbG9zZVRleHQ6IlN1bGplIixwcmV2VGV4dDoiJiN4QUI7RWRlbGxpbmVuIixuZXh0VGV4dDoiU2V1cmFhdmEmI3hCQjsiLGN1cnJlbnRUZXh0OiJUw6Ruw6TDpG4iLG1vbnRoTmFtZXM6WyJUYW1taWt1dSIsIkhlbG1pa3V1IiwiTWFhbGlza3V1IiwiSHVodGlrdXUiLCJUb3Vrb2t1dSIsIktlc8Oka3V1IiwiSGVpbsOka3V1IiwiRWxva3V1IiwiU3l5c2t1dSIsIkxva2FrdXUiLCJNYXJyYXNrdXUiLCJKb3VsdWt1dSJdLG1vbnRoTmFtZXNTaG9ydDpbIlRhbW1pIiwiSGVsbWkiLCJNYWFsaXMiLCJIdWh0aSIsIlRvdWtvIiwiS2Vzw6QiLCJIZWluw6QiLCJFbG8iLCJTeXlzIiwiTG9rYSIsIk1hcnJhcyIsIkpvdWx1Il0sZGF5TmFtZXNTaG9ydDpbIlN1IiwiTWEiLCJUaSIsIktlIiwiVG8iLCJQZSIsIkxhIl0sZGF5TmFtZXM6WyJTdW5udW50YWkiLCJNYWFuYW50YWkiLCJUaWlzdGFpIiwiS2Vza2l2aWlra28iLCJUb3JzdGFpIiwiUGVyamFudGFpIiwiTGF1YW50YWkiXSxkYXlOYW1lc01pbjpbIlN1IiwiTWEiLCJUaSIsIktlIiwiVG8iLCJQZSIsIkxhIl0sd2Vla0hlYWRlcjoiVmsiLGRhdGVGb3JtYXQ6ImQubS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiZmkiLHtidXR0b25UZXh0Onttb250aDoiS3V1a2F1c2kiLHdlZWs6IlZpaWtrbyIsZGF5OiJQw6RpdsOkIixsaXN0OiJUYXBhaHR1bWF0In0sYWxsRGF5VGV4dDoiS29rbyBww6RpdsOkIixldmVudExpbWl0VGV4dDoibGlzw6TDpCIsbm9FdmVudHNNZXNzYWdlOiJFaSBuw6R5dGV0dMOkdmnDpCB0YXBhaHR1bWlhIn0pfSgpLGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKCl7dmFyIGU9YS5kZWZpbmVMb2NhbGUoImZyIix7bW9udGhzOiJqYW52aWVyX2bDqXZyaWVyX21hcnNfYXZyaWxfbWFpX2p1aW5fanVpbGxldF9hb8O7dF9zZXB0ZW1icmVfb2N0b2JyZV9ub3ZlbWJyZV9kw6ljZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ImphbnYuX2bDqXZyLl9tYXJzX2F2ci5fbWFpX2p1aW5fanVpbC5fYW/Du3Rfc2VwdC5fb2N0Ll9ub3YuX2TDqWMuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6ImRpbWFuY2hlX2x1bmRpX21hcmRpX21lcmNyZWRpX2pldWRpX3ZlbmRyZWRpX3NhbWVkaSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkaW0uX2x1bi5fbWFyLl9tZXIuX2pldS5fdmVuLl9zYW0uIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJEaV9MdV9NYV9NZV9KZV9WZV9TYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltBdWpvdXJkJ2h1aSDDoF0gTFQiLG5leHREYXk6IltEZW1haW4gw6BdIExUIixuZXh0V2VlazoiZGRkZCBbw6BdIExUIixsYXN0RGF5OiJbSGllciDDoF0gTFQiLGxhc3RXZWVrOiJkZGRkIFtkZXJuaWVyIMOgXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZGFucyAlcyIscGFzdDoiaWwgeSBhICVzIixzOiJxdWVscXVlcyBzZWNvbmRlcyIsbToidW5lIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6InVuZSBoZXVyZSIsaGg6IiVkIGhldXJlcyIsZDoidW4gam91ciIsZGQ6IiVkIGpvdXJzIixNOiJ1biBtb2lzIixNTToiJWQgbW9pcyIseToidW4gYW4iLHl5OiIlZCBhbnMifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0oZXJ8KS8sb3JkaW5hbDpmdW5jdGlvbihlKXtyZXR1cm4gZSsoMT09PWU/ImVyIjoiIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pO3JldHVybiBlfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoImZyIiwiZnIiLHtjbG9zZVRleHQ6IkZlcm1lciIscHJldlRleHQ6IlByw6ljw6lkZW50IixuZXh0VGV4dDoiU3VpdmFudCIsY3VycmVudFRleHQ6IkF1am91cmQnaHVpIixtb250aE5hbWVzOlsiamFudmllciIsImbDqXZyaWVyIiwibWFycyIsImF2cmlsIiwibWFpIiwianVpbiIsImp1aWxsZXQiLCJhb8O7dCIsInNlcHRlbWJyZSIsIm9jdG9icmUiLCJub3ZlbWJyZSIsImTDqWNlbWJyZSJdLG1vbnRoTmFtZXNTaG9ydDpbImphbnYuIiwiZsOpdnIuIiwibWFycyIsImF2ci4iLCJtYWkiLCJqdWluIiwianVpbC4iLCJhb8O7dCIsInNlcHQuIiwib2N0LiIsIm5vdi4iLCJkw6ljLiJdLGRheU5hbWVzOlsiZGltYW5jaGUiLCJsdW5kaSIsIm1hcmRpIiwibWVyY3JlZGkiLCJqZXVkaSIsInZlbmRyZWRpIiwic2FtZWRpIl0sZGF5TmFtZXNTaG9ydDpbImRpbS4iLCJsdW4uIiwibWFyLiIsIm1lci4iLCJqZXUuIiwidmVuLiIsInNhbS4iXSxkYXlOYW1lc01pbjpbIkQiLCJMIiwiTSIsIk0iLCJKIiwiViIsIlMiXSx3ZWVrSGVhZGVyOiJTZW0uIixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiZnIiLHtidXR0b25UZXh0Ont5ZWFyOiJBbm7DqWUiLG1vbnRoOiJNb2lzIix3ZWVrOiJTZW1haW5lIixkYXk6IkpvdXIiLGxpc3Q6Ik1vbiBwbGFubmluZyJ9LGFsbERheUh0bWw6IlRvdXRlIGxhPGJyLz5qb3VybsOpZSIsZXZlbnRMaW1pdFRleHQ6ImVuIHBsdXMiLG5vRXZlbnRzTWVzc2FnZToiQXVjdW4gw6l2w6luZW1lbnQgw6AgYWZmaWNoZXIifSl9KCksZnVuY3Rpb24oKXshZnVuY3Rpb24oKXt2YXIgZT1hLmRlZmluZUxvY2FsZSgiZnItY2EiLHttb250aHM6ImphbnZpZXJfZsOpdnJpZXJfbWFyc19hdnJpbF9tYWlfanVpbl9qdWlsbGV0X2Fvw7t0X3NlcHRlbWJyZV9vY3RvYnJlX25vdmVtYnJlX2TDqWNlbWJyZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFudi5fZsOpdnIuX21hcnNfYXZyLl9tYWlfanVpbl9qdWlsLl9hb8O7dF9zZXB0Ll9vY3QuX25vdi5fZMOpYy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiZGltYW5jaGVfbHVuZGlfbWFyZGlfbWVyY3JlZGlfamV1ZGlfdmVuZHJlZGlfc2FtZWRpIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRpbS5fbHVuLl9tYXIuX21lci5famV1Ll92ZW4uX3NhbS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkRpX0x1X01hX01lX0plX1ZlX1NhIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJZWVlZLU1NLUREIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0F1am91cmQnaHVpIMOgXSBMVCIsbmV4dERheToiW0RlbWFpbiDDoF0gTFQiLG5leHRXZWVrOiJkZGRkIFvDoF0gTFQiLGxhc3REYXk6IltIaWVyIMOgXSBMVCIsbGFzdFdlZWs6ImRkZGQgW2Rlcm5pZXIgw6BdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJkYW5zICVzIixwYXN0OiJpbCB5IGEgJXMiLHM6InF1ZWxxdWVzIHNlY29uZGVzIixtOiJ1bmUgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoidW5lIGhldXJlIixoaDoiJWQgaGV1cmVzIixkOiJ1biBqb3VyIixkZDoiJWQgam91cnMiLE06InVuIG1vaXMiLE1NOiIlZCBtb2lzIix5OiJ1biBhbiIseXk6IiVkIGFucyJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfShlcnxlKS8sb3JkaW5hbDpmdW5jdGlvbihlKXtyZXR1cm4gZSsoMT09PWU/ImVyIjoiZSIpfX0pO3JldHVybiBlfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoImZyLWNhIiwiZnItQ0EiLHtjbG9zZVRleHQ6IkZlcm1lciIscHJldlRleHQ6IlByw6ljw6lkZW50IixuZXh0VGV4dDoiU3VpdmFudCIsY3VycmVudFRleHQ6IkF1am91cmQnaHVpIixtb250aE5hbWVzOlsiamFudmllciIsImbDqXZyaWVyIiwibWFycyIsImF2cmlsIiwibWFpIiwianVpbiIsImp1aWxsZXQiLCJhb8O7dCIsInNlcHRlbWJyZSIsIm9jdG9icmUiLCJub3ZlbWJyZSIsImTDqWNlbWJyZSJdLG1vbnRoTmFtZXNTaG9ydDpbImphbnYuIiwiZsOpdnIuIiwibWFycyIsImF2cmlsIiwibWFpIiwianVpbiIsImp1aWwuIiwiYW/Du3QiLCJzZXB0LiIsIm9jdC4iLCJub3YuIiwiZMOpYy4iXSxkYXlOYW1lczpbImRpbWFuY2hlIiwibHVuZGkiLCJtYXJkaSIsIm1lcmNyZWRpIiwiamV1ZGkiLCJ2ZW5kcmVkaSIsInNhbWVkaSJdLGRheU5hbWVzU2hvcnQ6WyJkaW0uIiwibHVuLiIsIm1hci4iLCJtZXIuIiwiamV1LiIsInZlbi4iLCJzYW0uIl0sZGF5TmFtZXNNaW46WyJEIiwiTCIsIk0iLCJNIiwiSiIsIlYiLCJTIl0sd2Vla0hlYWRlcjoiU2VtLiIsZGF0ZUZvcm1hdDoieXktbW0tZGQiLGZpcnN0RGF5OjAsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoImZyLWNhIix7YnV0dG9uVGV4dDp7eWVhcjoiQW5uw6llIixtb250aDoiTW9pcyIsd2VlazoiU2VtYWluZSIsZGF5OiJKb3VyIixsaXN0OiJNb24gcGxhbm5pbmcifSxhbGxEYXlIdG1sOiJUb3V0ZSBsYTxici8+am91cm7DqWUiLGV2ZW50TGltaXRUZXh0OiJlbiBwbHVzIixub0V2ZW50c01lc3NhZ2U6IkF1Y3VuIMOpdsOpbmVtZW50IMOgIGFmZmljaGVyIn0pfSgpLGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKCl7dmFyIGU9YS5kZWZpbmVMb2NhbGUoImZyLWNoIix7bW9udGhzOiJqYW52aWVyX2bDqXZyaWVyX21hcnNfYXZyaWxfbWFpX2p1aW5fanVpbGxldF9hb8O7dF9zZXB0ZW1icmVfb2N0b2JyZV9ub3ZlbWJyZV9kw6ljZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ImphbnYuX2bDqXZyLl9tYXJzX2F2ci5fbWFpX2p1aW5fanVpbC5fYW/Du3Rfc2VwdC5fb2N0Ll9ub3YuX2TDqWMuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6ImRpbWFuY2hlX2x1bmRpX21hcmRpX21lcmNyZWRpX2pldWRpX3ZlbmRyZWRpX3NhbWVkaSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkaW0uX2x1bi5fbWFyLl9tZXIuX2pldS5fdmVuLl9zYW0uIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJEaV9MdV9NYV9NZV9KZV9WZV9TYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltBdWpvdXJkJ2h1aSDDoF0gTFQiLG5leHREYXk6IltEZW1haW4gw6BdIExUIixuZXh0V2VlazoiZGRkZCBbw6BdIExUIixsYXN0RGF5OiJbSGllciDDoF0gTFQiLGxhc3RXZWVrOiJkZGRkIFtkZXJuaWVyIMOgXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZGFucyAlcyIscGFzdDoiaWwgeSBhICVzIixzOiJxdWVscXVlcyBzZWNvbmRlcyIsbToidW5lIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6InVuZSBoZXVyZSIsaGg6IiVkIGhldXJlcyIsZDoidW4gam91ciIsZGQ6IiVkIGpvdXJzIixNOiJ1biBtb2lzIixNTToiJWQgbW9pcyIseToidW4gYW4iLHl5OiIlZCBhbnMifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0oZXJ8ZSkvLG9yZGluYWw6ZnVuY3Rpb24oZSl7cmV0dXJuIGUrKDE9PT1lPyJlciI6ImUiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSk7cmV0dXJuIGV9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgiZnItY2giLCJmci1DSCIse2Nsb3NlVGV4dDoiRmVybWVyIixwcmV2VGV4dDoiJiN4M0M7UHLDqWMiLG5leHRUZXh0OiJTdWl2JiN4M0U7IixjdXJyZW50VGV4dDoiQ291cmFudCIsbW9udGhOYW1lczpbImphbnZpZXIiLCJmw6l2cmllciIsIm1hcnMiLCJhdnJpbCIsIm1haSIsImp1aW4iLCJqdWlsbGV0IiwiYW/Du3QiLCJzZXB0ZW1icmUiLCJvY3RvYnJlIiwibm92ZW1icmUiLCJkw6ljZW1icmUiXSxtb250aE5hbWVzU2hvcnQ6WyJqYW52LiIsImbDqXZyLiIsIm1hcnMiLCJhdnJpbCIsIm1haSIsImp1aW4iLCJqdWlsLiIsImFvw7t0Iiwic2VwdC4iLCJvY3QuIiwibm92LiIsImTDqWMuIl0sZGF5TmFtZXM6WyJkaW1hbmNoZSIsImx1bmRpIiwibWFyZGkiLCJtZXJjcmVkaSIsImpldWRpIiwidmVuZHJlZGkiLCJzYW1lZGkiXSxkYXlOYW1lc1Nob3J0OlsiZGltLiIsImx1bi4iLCJtYXIuIiwibWVyLiIsImpldS4iLCJ2ZW4uIiwic2FtLiJdLGRheU5hbWVzTWluOlsiRCIsIkwiLCJNIiwiTSIsIkoiLCJWIiwiUyJdLHdlZWtIZWFkZXI6IlNtIixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiZnItY2giLHtidXR0b25UZXh0Ont5ZWFyOiJBbm7DqWUiLG1vbnRoOiJNb2lzIix3ZWVrOiJTZW1haW5lIixkYXk6IkpvdXIiLGxpc3Q6Ik1vbiBwbGFubmluZyJ9LGFsbERheUh0bWw6IlRvdXRlIGxhPGJyLz5qb3VybsOpZSIsZXZlbnRMaW1pdFRleHQ6ImVuIHBsdXMiLG5vRXZlbnRzTWVzc2FnZToiQXVjdW4gw6l2w6luZW1lbnQgw6AgYWZmaWNoZXIifSl9KCksZnVuY3Rpb24oKXshZnVuY3Rpb24oKXt2YXIgZT1hLmRlZmluZUxvY2FsZSgiZ2wiLHttb250aHM6InhhbmVpcm9fZmVicmVpcm9fbWFyem9fYWJyaWxfbWFpb194dcOxb194dWxsb19hZ29zdG9fc2V0ZW1icm9fb3V0dWJyb19ub3ZlbWJyb19kZWNlbWJybyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoieGFuLl9mZWIuX21hci5fYWJyLl9tYWkuX3h1w7EuX3h1bC5fYWdvLl9zZXQuX291dC5fbm92Ll9kZWMuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6ImRvbWluZ29fbHVuc19tYXJ0ZXNfbcOpcmNvcmVzX3hvdmVzX3ZlbnJlc19zw6FiYWRvIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ImRvbS5fbHVuLl9tYXIuX23DqXIuX3hvdi5fdmVuLl9zw6FiLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiZG9fbHVfbWFfbcOpX3hvX3ZlX3PDoSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkiLExMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEg6bW0iLExMTEw6ImRkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW2hveGUgIisoMSE9PXRoaXMuaG91cnMoKT8iw6FzIjoiw6EiKSsiXSBMVCJ9LG5leHREYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW21hw7HDoSAiKygxIT09dGhpcy5ob3VycygpPyLDoXMiOiLDoSIpKyJdIExUIn0sbmV4dFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iZGRkZCBbIisoMSE9PXRoaXMuaG91cnMoKT8iw6FzIjoiYSIpKyJdIExUIn0sbGFzdERheTpmdW5jdGlvbigpe3JldHVybiJbb250ZSAiKygxIT09dGhpcy5ob3VycygpPyLDoSI6ImEiKSsiXSBMVCJ9LGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIltvXSBkZGRkIFtwYXNhZG8gIisoMSE9PXRoaXMuaG91cnMoKT8iw6FzIjoiYSIpKyJdIExUIn0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZTpmdW5jdGlvbihlKXtyZXR1cm4gMD09PWUuaW5kZXhPZigidW4iKT8ibiIrZToiZW4gIitlfSxwYXN0OiJoYWkgJXMiLHM6InVucyBzZWd1bmRvcyIsbToidW4gbWludXRvIixtbToiJWQgbWludXRvcyIsaDoidW5oYSBob3JhIixoaDoiJWQgaG9yYXMiLGQ6InVuIGTDrWEiLGRkOiIlZCBkw61hcyIsTToidW4gbWVzIixNTToiJWQgbWVzZXMiLHk6InVuIGFubyIseXk6IiVkIGFub3MifSxvcmRpbmFsUGFyc2U6L1xkezEsMn3Cui8sb3JkaW5hbDoiJWTCuiIsd2Vlazp7ZG93OjEsZG95OjR9fSk7cmV0dXJuIGV9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgiZ2wiLCJnbCIse2Nsb3NlVGV4dDoiUGVjaGFyIixwcmV2VGV4dDoiJiN4M0M7QW50IixuZXh0VGV4dDoiU2VnJiN4M0U7IixjdXJyZW50VGV4dDoiSG94ZSIsbW9udGhOYW1lczpbIlhhbmVpcm8iLCJGZWJyZWlybyIsIk1hcnpvIiwiQWJyaWwiLCJNYWlvIiwiWHXDsW8iLCJYdWxsbyIsIkFnb3N0byIsIlNldGVtYnJvIiwiT3V0dWJybyIsIk5vdmVtYnJvIiwiRGVjZW1icm8iXSxtb250aE5hbWVzU2hvcnQ6WyJYYW4iLCJGZWIiLCJNYXIiLCJBYnIiLCJNYWkiLCJYdcOxIiwiWHVsIiwiQWdvIiwiU2V0IiwiT3V0IiwiTm92IiwiRGVjIl0sZGF5TmFtZXM6WyJEb21pbmdvIiwiTHVucyIsIk1hcnRlcyIsIk3DqXJjb3JlcyIsIlhvdmVzIiwiVmVucmVzIiwiU8OhYmFkbyJdLGRheU5hbWVzU2hvcnQ6WyJEb20iLCJMdW4iLCJNYXIiLCJNw6lyIiwiWG92IiwiVmVuIiwiU8OhYiJdLGRheU5hbWVzTWluOlsiRG8iLCJMdSIsIk1hIiwiTcOpIiwiWG8iLCJWZSIsIlPDoSJdLHdlZWtIZWFkZXI6IlNtIixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiZ2wiLHtidXR0b25UZXh0Onttb250aDoiTWVzIix3ZWVrOiJTZW1hbmEiLGRheToiRMOtYSIsbGlzdDoiQXhlbmRhIn0sYWxsRGF5SHRtbDoiVG9kbzxici8+byBkw61hIixldmVudExpbWl0VGV4dDoibcOhaXMiLG5vRXZlbnRzTWVzc2FnZToiTm9uIGhhaSBldmVudG9zIHBhcmEgYW1vc2FyIn0pfSgpLGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKCl7dmFyIGU9YS5kZWZpbmVMb2NhbGUoImhlIix7bW9udGhzOiLXmdeg15XXkNeoX9ek15HXqNeV15DXqF/Xnteo16Vf15DXpNeo15nXnF/XnteQ15lf15nXldeg15lf15nXldec15lf15DXldeS15XXodeYX9eh16TXmNee15HXqF/XkNeV16fXmNeV15HXqF/XoNeV15HXnteR16hf15PXptee15HXqCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoi15nXoNeV17Nf16TXkdeo17Nf157XqNelX9eQ16TXqNezX9ee15DXmV/XmdeV16DXmV/XmdeV15zXmV/XkNeV15LXs1/Xodek15jXs1/XkNeV16fXs1/XoNeV15HXs1/Xk9em157XsyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi16jXkNep15XXn1/Xqdeg15lf16nXnNeZ16nXmV/XqNeR15nXoteZX9eX157Xmdep15lf16nXmdep15lf16nXkdeqIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IteQ17Nf15HXs1/XktezX9eT17Nf15TXs1/XldezX9ep17MiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IteQX9eRX9eSX9eTX9eUX9eVX9epIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIFvXkV1NTU1NIFlZWVkiLExMTDoiRCBb15FdTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIFvXkV1NTU1NIFlZWVkgSEg6bW0iLGw6IkQvTS9ZWVlZIixsbDoiRCBNTU0gWVlZWSIsbGxsOiJEIE1NTSBZWVlZIEhIOm1tIixsbGxsOiJkZGQsIEQgTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW9eU15nXldedINeR1r5dTFQiLG5leHREYXk6IlvXnteX16gg15HWvl1MVCIsbmV4dFdlZWs6ImRkZGQgW9eR16nXoteUXSBMVCIsbGFzdERheToiW9eQ16rXnteV15wg15HWvl1MVCIsbGFzdFdlZWs6IlvXkdeZ15XXnV0gZGRkZCBb15TXkNeX16jXldefINeR16nXoteUXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi15HXoteV15MgJXMiLHBhc3Q6Itec16TXoNeZICVzIixzOiLXnteh16TXqCDXqdeg15nXldeqIixtOiLXk9en15QiLG1tOiIlZCDXk9en15XXqiIsaDoi16nXoteUIixoaDpmdW5jdGlvbihlKXtyZXR1cm4gMj09PWU/Itep16LXqteZ15nXnSI6ZSsiINep16LXldeqIn0sZDoi15nXldedIixkZDpmdW5jdGlvbihlKXtyZXR1cm4gMj09PWU/IteZ15XXnteZ15nXnSI6ZSsiINeZ157XmdedIn0sTToi15fXldeT16kiLE1NOmZ1bmN0aW9uKGUpe3JldHVybiAyPT09ZT8i15fXldeT16nXmdeZ150iOmUrIiDXl9eV15PXqdeZ150ifSx5OiLXqdeg15QiLHl5OmZ1bmN0aW9uKGUpe3JldHVybiAyPT09ZT8i16nXoNeq15nXmdedIjplJTEwPT09MCYmMTAhPT1lP2UrIiDXqdeg15QiOmUrIiDXqdeg15nXnSJ9fSxtZXJpZGllbVBhcnNlOi/XkNeX15Qi16Z815zXpNeg15Qi16Z815DXl9eo15kg15TXpteU16jXmdeZ151815zXpNeg15kg15TXpteU16jXmdeZ151815zXpNeg15XXqiDXkdeV16fXqHzXkdeR15XXp9eofNeR16LXqNeRL2ksaXNQTTpmdW5jdGlvbihlKXtyZXR1cm4vXijXkNeX15Qi16Z815DXl9eo15kg15TXpteU16jXmdeZ151815HXoteo15EpJC8udGVzdChlKX0sbWVyaWRpZW06ZnVuY3Rpb24oZSxhLHQpe3JldHVybiBlPDU/Itec16TXoNeV16og15HXlden16giOmU8MTA/IteR15HXlden16giOmU8MTI/dD8n15zXpNeg15Qi16YnOiLXnNek16DXmSDXlNem15TXqNeZ15nXnSI6ZTwxOD90PyfXkNeX15Qi16YnOiLXkNeX16jXmSDXlNem15TXqNeZ15nXnSI6IteR16LXqNeRIn19KTtyZXR1cm4gZX0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJoZSIsImhlIix7Y2xvc2VUZXh0OiLXodeS15XXqCIscHJldlRleHQ6IiYjeDNDO9eU16fXldeT150iLG5leHRUZXh0OiLXlNeR15AmI3gzRTsiLGN1cnJlbnRUZXh0OiLXlNeZ15XXnSIsbW9udGhOYW1lczpbIteZ16DXldeQ16giLCLXpNeR16jXldeQ16giLCLXnteo16UiLCLXkNek16jXmdecIiwi157XkNeZIiwi15nXldeg15kiLCLXmdeV15zXmSIsIteQ15XXkteV16HXmCIsIteh16TXmNee15HXqCIsIteQ15XXp9eY15XXkdeoIiwi16DXldeR157XkdeoIiwi15PXptee15HXqCJdLG1vbnRoTmFtZXNTaG9ydDpbIteZ16DXlSIsItek15HXqCIsItee16jXpSIsIteQ16TXqCIsItee15DXmSIsIteZ15XXoNeZIiwi15nXldec15kiLCLXkNeV15IiLCLXodek15giLCLXkNeV16ciLCLXoNeV15EiLCLXk9em154iXSxkYXlOYW1lczpbIteo15DXqdeV158iLCLXqdeg15kiLCLXqdec15nXqdeZIiwi16jXkdeZ16LXmSIsIteX157Xmdep15kiLCLXqdeZ16nXmSIsItep15HXqiJdLGRheU5hbWVzU2hvcnQ6WyLXkCciLCLXkSciLCLXkiciLCLXkyciLCLXlCciLCLXlSciLCLXqdeR16oiXSxkYXlOYW1lc01pbjpbIteQJyIsIteRJyIsIteSJyIsIteTJyIsIteUJyIsIteVJyIsItep15HXqiJdLHdlZWtIZWFkZXI6IldrIixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MCxpc1JUTDohMCxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiaGUiLHtidXR0b25UZXh0Onttb250aDoi15fXldeT16kiLHdlZWs6Itep15HXldeiIixkYXk6IteZ15XXnSIsbGlzdDoi16HXk9eoINeZ15XXnSJ9LGFsbERheVRleHQ6Iteb15wg15TXmdeV150iLGV2ZW50TGltaXRUZXh0OiLXkNeX16giLG5vRXZlbnRzTWVzc2FnZToi15DXmdefINeQ15nXqNeV16LXmdedINec15TXpteS15QiLHdlZWtOdW1iZXJUaXRsZToi16nXkdeV16IifSl9KCksZnVuY3Rpb24oKXshZnVuY3Rpb24oKXt2YXIgZT17MToi4KWnIiwyOiLgpagiLDM6IuClqSIsNDoi4KWqIiw1OiLgpasiLDY6IuClrCIsNzoi4KWtIiw4OiLgpa4iLDk6IuClryIsMDoi4KWmIn0sdD17IuClpyI6IjEiLCLgpagiOiIyIiwi4KWpIjoiMyIsIuClqiI6IjQiLCLgpasiOiI1Iiwi4KWsIjoiNiIsIuClrSI6IjciLCLgpa4iOiI4Iiwi4KWvIjoiOSIsIuClpiI6IjAifSxuPWEuZGVmaW5lTG9jYWxlKCJoaSIse21vbnRoczoi4KSc4KSo4KS14KSw4KWAX+Ckq+CkvOCksOCkteCksOClgF/gpK7gpL7gpLDgpY3gpJpf4KSF4KSq4KWN4KSw4KWI4KSyX+CkruCkiF/gpJzgpYLgpKhf4KSc4KWB4KSy4KS+4KSIX+CkheCkl+CkuOCljeCkpF/gpLjgpL/gpKTgpK7gpY3gpKzgpLBf4KSF4KSV4KWN4KSf4KWC4KSs4KSwX+CkqOCkteCkruCljeCkrOCksF/gpKbgpL/gpLjgpK7gpY3gpKzgpLAiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IuCknOCkqC5f4KSr4KS84KSwLl/gpK7gpL7gpLDgpY3gpJpf4KSF4KSq4KWN4KSw4KWILl/gpK7gpIhf4KSc4KWC4KSoX+CknOClgeCksi5f4KSF4KSXLl/gpLjgpL/gpKQuX+CkheCkleCljeCkn+Clgi5f4KSo4KS1Ll/gpKbgpL/gpLguIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6IuCksOCkteCkv+CkteCkvuCksF/gpLjgpYvgpK7gpLXgpL7gpLBf4KSu4KSC4KSX4KSy4KS14KS+4KSwX+CkrOClgeCkp+CkteCkvuCksF/gpJfgpYHgpLDgpYLgpLXgpL7gpLBf4KS24KWB4KSV4KWN4KSw4KS14KS+4KSwX+CktuCkqOCkv+CkteCkvuCksCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLgpLDgpLXgpL9f4KS44KWL4KSuX+CkruCkguCkl+Cksl/gpKzgpYHgpKdf4KSX4KWB4KSw4KWCX+CktuClgeCkleCljeCksF/gpLbgpKjgpL8iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IuCksF/gpLjgpYtf4KSu4KSCX+CkrOClgV/gpJfgpYFf4KS24KWBX+CktiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkEgaDptbSDgpKzgpJzgpYciLExUUzoiQSBoOm1tOnNzIOCkrOCknOClhyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZLCBBIGg6bW0g4KSs4KSc4KWHIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSwgQSBoOm1tIOCkrOCknOClhyJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb4KSG4KScXSBMVCIsbmV4dERheToiW+CkleCksl0gTFQiLG5leHRXZWVrOiJkZGRkLCBMVCIsbGFzdERheToiW+CkleCksl0gTFQiLGxhc3RXZWVrOiJb4KSq4KS/4KSb4KSy4KWHXSBkZGRkLCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMg4KSu4KWH4KSCIixwYXN0OiIlcyDgpKrgpLngpLLgpYciLHM6IuCkleClgeCkmyDgpLngpYAg4KSV4KWN4KS34KSjIixtOiLgpI/gpJUg4KSu4KS/4KSo4KSfIixtbToiJWQg4KSu4KS/4KSo4KSfIixoOiLgpI/gpJUg4KSY4KSC4KSf4KS+IixoaDoiJWQg4KSY4KSC4KSf4KWHIixkOiLgpI/gpJUg4KSm4KS/4KSoIixkZDoiJWQg4KSm4KS/4KSoIixNOiLgpI/gpJUg4KSu4KS54KWA4KSo4KWHIixNTToiJWQg4KSu4KS54KWA4KSo4KWHIix5OiLgpI/gpJUg4KS14KSw4KWN4KS3Iix5eToiJWQg4KS14KSw4KWN4KS3In0scHJlcGFyc2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvW+Clp+ClqOClqeClquClq+ClrOClreClruClr+Clpl0vZyxmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1xkL2csZnVuY3Rpb24oYSl7cmV0dXJuIGVbYV19KX0sbWVyaWRpZW1QYXJzZTov4KSw4KS+4KSkfOCkuOClgeCkrOCkuXzgpKbgpYvgpKrgpLngpLB84KS24KS+4KSuLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oZSxhKXtyZXR1cm4gMTI9PT1lJiYoZT0wKSwi4KSw4KS+4KSkIj09PWE/ZTw0P2U6ZSsxMjoi4KS44KWB4KSs4KS5Ij09PWE/ZToi4KSm4KWL4KSq4KS54KSwIj09PWE/ZT49MTA/ZTplKzEyOiLgpLbgpL7gpK4iPT09YT9lKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oZSxhLHQpe3JldHVybiBlPDQ/IuCksOCkvuCkpCI6ZTwxMD8i4KS44KWB4KSs4KS5IjplPDE3PyLgpKbgpYvgpKrgpLngpLAiOmU8MjA/IuCktuCkvuCkriI6IuCksOCkvuCkpCJ9LHdlZWs6e2RvdzowLGRveTo2fX0pO3JldHVybiBufSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoImhpIiwiaGkiLHtjbG9zZVRleHQ6IuCkrOCkguCkpiIscHJldlRleHQ6IuCkquCkv+Ckm+CksuCkviIsbmV4dFRleHQ6IuCkheCkl+CksuCkviIsY3VycmVudFRleHQ6IuCkhuCknCIsbW9udGhOYW1lczpbIuCknOCkqOCkteCksOClgCAiLCLgpKvgpLDgpLXgpLDgpYAiLCLgpK7gpL7gpLDgpY3gpJoiLCLgpIXgpKrgpY3gpLDgpYfgpLIiLCLgpK7gpIgiLCLgpJzgpYLgpKgiLCLgpJzgpYLgpLLgpL7gpIgiLCLgpIXgpJfgpLjgpY3gpKQgIiwi4KS44KS/4KSk4KSu4KWN4KSs4KSwIiwi4KSF4KSV4KWN4KSf4KWC4KSs4KSwIiwi4KSo4KS14KSu4KWN4KSs4KSwIiwi4KSm4KS/4KS44KSu4KWN4KSs4KSwIl0sbW9udGhOYW1lc1Nob3J0Olsi4KSc4KSoIiwi4KSr4KSwIiwi4KSu4KS+4KSw4KWN4KSaIiwi4KSF4KSq4KWN4KSw4KWH4KSyIiwi4KSu4KSIIiwi4KSc4KWC4KSoIiwi4KSc4KWC4KSy4KS+4KSIIiwi4KSF4KSXIiwi4KS44KS/4KSkIiwi4KSF4KSV4KWN4KSfIiwi4KSo4KS1Iiwi4KSm4KS/Il0sZGF5TmFtZXM6WyLgpLDgpLXgpL/gpLXgpL7gpLAiLCLgpLjgpYvgpK7gpLXgpL7gpLAiLCLgpK7gpILgpJfgpLLgpLXgpL7gpLAiLCLgpKzgpYHgpKfgpLXgpL7gpLAiLCLgpJfgpYHgpLDgpYHgpLXgpL7gpLAiLCLgpLbgpYHgpJXgpY3gpLDgpLXgpL7gpLAiLCLgpLbgpKjgpL/gpLXgpL7gpLAiXSxkYXlOYW1lc1Nob3J0Olsi4KSw4KS14KS/Iiwi4KS44KWL4KSuIiwi4KSu4KSC4KSX4KSyIiwi4KSs4KWB4KSnIiwi4KSX4KWB4KSw4KWBIiwi4KS24KWB4KSV4KWN4KSwIiwi4KS24KSo4KS/Il0sZGF5TmFtZXNNaW46WyLgpLDgpLXgpL8iLCLgpLjgpYvgpK4iLCLgpK7gpILgpJfgpLIiLCLgpKzgpYHgpKciLCLgpJfgpYHgpLDgpYEiLCLgpLbgpYHgpJXgpY3gpLAiLCLgpLbgpKjgpL8iXSx3ZWVrSGVhZGVyOiLgpLngpKvgpY3gpKTgpL4iLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJoaSIse2J1dHRvblRleHQ6e21vbnRoOiLgpK7gpLngpYDgpKjgpL4iLHdlZWs6IuCkuOCkquCljeCkpOCkvuCkuSIsZGF5OiLgpKbgpL/gpKgiLGxpc3Q6IuCkleCkvuCksOCljeCkr+CkuOClguCkmuClgCJ9LGFsbERheVRleHQ6IuCkuOCkreClgCDgpKbgpL/gpKgiLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGUpe3JldHVybiIr4KSF4KSn4KS/4KSVICIrZX0sbm9FdmVudHNNZXNzYWdlOiLgpJXgpYvgpIgg4KSY4KSf4KSo4KS+4KST4KSCIOCkleCliyDgpKrgpY3gpLDgpKbgpLDgpY3gpLbgpL/gpKQg4KSV4KSw4KSo4KWHIOCkleClhyDgpLLgpL/gpI8ifSl9KCksZnVuY3Rpb24oKXshZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsYSx0KXt2YXIgbj1lKyIgIjtzd2l0Y2godCl7Y2FzZSJtIjpyZXR1cm4gYT8iamVkbmEgbWludXRhIjoiamVkbmUgbWludXRlIjtjYXNlIm1tIjpyZXR1cm4gbis9MT09PWU/Im1pbnV0YSI6Mj09PWV8fDM9PT1lfHw0PT09ZT8ibWludXRlIjoibWludXRhIjtjYXNlImgiOnJldHVybiBhPyJqZWRhbiBzYXQiOiJqZWRub2cgc2F0YSI7Y2FzZSJoaCI6cmV0dXJuIG4rPTE9PT1lPyJzYXQiOjI9PT1lfHwzPT09ZXx8ND09PWU/InNhdGEiOiJzYXRpIjtjYXNlImRkIjpyZXR1cm4gbis9MT09PWU/ImRhbiI6ImRhbmEiO2Nhc2UiTU0iOnJldHVybiBuKz0xPT09ZT8ibWplc2VjIjoyPT09ZXx8Mz09PWV8fDQ9PT1lPyJtamVzZWNhIjoibWplc2VjaSI7Y2FzZSJ5eSI6cmV0dXJuIG4rPTE9PT1lPyJnb2RpbmEiOjI9PT1lfHwzPT09ZXx8ND09PWU/ImdvZGluZSI6ImdvZGluYSJ9fXZhciB0PWEuZGVmaW5lTG9jYWxlKCJociIse21vbnRoczp7Zm9ybWF0OiJzaWplxI1uamFfdmVsamHEjWVfb8W+dWprYV90cmF2bmphX3N2aWJuamFfbGlwbmphX3NycG5qYV9rb2xvdm96YV9ydWpuYV9saXN0b3BhZGFfc3R1ZGVub2dhX3Byb3NpbmNhIi5zcGxpdCgiXyIpLHN0YW5kYWxvbmU6InNpamXEjWFual92ZWxqYcSNYV9vxb51amFrX3RyYXZhbmpfc3ZpYmFual9saXBhbmpfc3JwYW5qX2tvbG92b3pfcnVqYW5fbGlzdG9wYWRfc3R1ZGVuaV9wcm9zaW5hYyIuc3BsaXQoIl8iKX0sbW9udGhzU2hvcnQ6InNpai5fdmVsai5fb8W+dS5fdHJhLl9zdmkuX2xpcC5fc3JwLl9rb2wuX3J1ai5fbGlzLl9zdHUuX3Byby4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoibmVkamVsamFfcG9uZWRqZWxqYWtfdXRvcmFrX3NyaWplZGFfxI1ldHZydGFrX3BldGFrX3N1Ym90YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJuZWQuX3Bvbi5fdXRvLl9zcmkuX8SNZXQuX3BldC5fc3ViLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoibmVfcG9fdXRfc3JfxI1lX3BlX3N1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgSDptbSIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2RhbmFzIHVdIExUIixuZXh0RGF5OiJbc3V0cmEgdV0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW3VdIFtuZWRqZWxqdV0gW3VdIExUIjtjYXNlIDM6cmV0dXJuIlt1XSBbc3JpamVkdV0gW3VdIExUIjtjYXNlIDY6cmV0dXJuIlt1XSBbc3Vib3R1XSBbdV0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW3VdIGRkZGQgW3VdIExUIn19LGxhc3REYXk6IltqdcSNZXIgdV0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpjYXNlIDM6cmV0dXJuIltwcm/FoWx1XSBkZGRkIFt1XSBMVCI7Y2FzZSA2OnJldHVybiJbcHJvxaFsZV0gW3N1Ym90ZV0gW3VdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIltwcm/FoWxpXSBkZGRkIFt1XSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJ6YSAlcyIscGFzdDoicHJpamUgJXMiLHM6InBhciBzZWt1bmRpIixtOmUsbW06ZSxoOmUsaGg6ZSxkOiJkYW4iLGRkOmUsTToibWplc2VjIixNTTplLHk6ImdvZGludSIseXk6ZX0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95Ojd9fSk7cmV0dXJuIHR9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgiaHIiLCJociIse2Nsb3NlVGV4dDoiWmF0dm9yaSIscHJldlRleHQ6IiYjeDNDOyIsbmV4dFRleHQ6IiYjeDNFOyIsY3VycmVudFRleHQ6IkRhbmFzIixtb250aE5hbWVzOlsiU2lqZcSNYW5qIiwiVmVsamHEjWEiLCJPxb51amFrIiwiVHJhdmFuaiIsIlN2aWJhbmoiLCJMaXBhbmoiLCJTcnBhbmoiLCJLb2xvdm96IiwiUnVqYW4iLCJMaXN0b3BhZCIsIlN0dWRlbmkiLCJQcm9zaW5hYyJdLAptb250aE5hbWVzU2hvcnQ6WyJTaWoiLCJWZWxqIiwiT8W+dSIsIlRyYSIsIlN2aSIsIkxpcCIsIlNycCIsIktvbCIsIlJ1aiIsIkxpcyIsIlN0dSIsIlBybyJdLGRheU5hbWVzOlsiTmVkamVsamEiLCJQb25lZGplbGphayIsIlV0b3JhayIsIlNyaWplZGEiLCLEjGV0dnJ0YWsiLCJQZXRhayIsIlN1Ym90YSJdLGRheU5hbWVzU2hvcnQ6WyJOZWQiLCJQb24iLCJVdG8iLCJTcmkiLCLEjGV0IiwiUGV0IiwiU3ViIl0sZGF5TmFtZXNNaW46WyJOZSIsIlBvIiwiVXQiLCJTciIsIsSMZSIsIlBlIiwiU3UiXSx3ZWVrSGVhZGVyOiJUamUiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5LiIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiaHIiLHtidXR0b25UZXh0OntwcmV2OiJQcmlqYcWhbmppIixuZXh0OiJTbGplZGXEh2kiLG1vbnRoOiJNamVzZWMiLHdlZWs6IlRqZWRhbiIsZGF5OiJEYW4iLGxpc3Q6IlJhc3BvcmVkIn0sYWxsRGF5VGV4dDoiQ2lqZWxpIGRhbiIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIisgam/FoSAiK2V9LG5vRXZlbnRzTWVzc2FnZToiTmVtYSBkb2dhxJFhamEgemEgcHJpa2F6In0pfSgpLGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLGEsdCxuKXt2YXIgcj1lO3N3aXRjaCh0KXtjYXNlInMiOnJldHVybiBufHxhPyJuw6low6FueSBtw6Fzb2RwZXJjIjoibsOpaMOhbnkgbcOhc29kcGVyY2UiO2Nhc2UibSI6cmV0dXJuImVneSIrKG58fGE/IiBwZXJjIjoiIHBlcmNlIik7Y2FzZSJtbSI6cmV0dXJuIHIrKG58fGE/IiBwZXJjIjoiIHBlcmNlIik7Y2FzZSJoIjpyZXR1cm4iZWd5Iisobnx8YT8iIMOzcmEiOiIgw7Nyw6FqYSIpO2Nhc2UiaGgiOnJldHVybiByKyhufHxhPyIgw7NyYSI6IiDDs3LDoWphIik7Y2FzZSJkIjpyZXR1cm4iZWd5Iisobnx8YT8iIG5hcCI6IiBuYXBqYSIpO2Nhc2UiZGQiOnJldHVybiByKyhufHxhPyIgbmFwIjoiIG5hcGphIik7Y2FzZSJNIjpyZXR1cm4iZWd5Iisobnx8YT8iIGjDs25hcCI6IiBow7NuYXBqYSIpO2Nhc2UiTU0iOnJldHVybiByKyhufHxhPyIgaMOzbmFwIjoiIGjDs25hcGphIik7Y2FzZSJ5IjpyZXR1cm4iZWd5Iisobnx8YT8iIMOpdiI6IiDDqXZlIik7Y2FzZSJ5eSI6cmV0dXJuIHIrKG58fGE/IiDDqXYiOiIgw6l2ZSIpfXJldHVybiIifWZ1bmN0aW9uIHQoZSl7cmV0dXJuKGU/IiI6Ilttw7psdF0gIikrIlsiK25bdGhpcy5kYXkoKV0rIl0gTFRbLWtvcl0ifXZhciBuPSJ2YXPDoXJuYXAgaMOpdGbFkW4ga2VkZGVuIHN6ZXJkw6FuIGNzw7x0w7ZydMO2a8O2biBww6ludGVrZW4gc3pvbWJhdG9uIi5zcGxpdCgiICIpLHI9YS5kZWZpbmVMb2NhbGUoImh1Iix7bW9udGhzOiJqYW51w6FyX2ZlYnJ1w6FyX23DoXJjaXVzX8OhcHJpbGlzX23DoWp1c19qw7puaXVzX2rDumxpdXNfYXVndXN6dHVzX3N6ZXB0ZW1iZXJfb2t0w7NiZXJfbm92ZW1iZXJfZGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbl9mZWJfbcOhcmNfw6Fwcl9tw6FqX2rDum5fasO6bF9hdWdfc3plcHRfb2t0X25vdl9kZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6InZhc8Ohcm5hcF9ow6l0ZsWRX2tlZGRfc3plcmRhX2Nzw7x0w7ZydMO2a19ww6ludGVrX3N6b21iYXQiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoidmFzX2jDqXRfa2VkZF9zemVfY3PDvHRfcMOpbl9zem8iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46InZfaF9rX3N6ZV9jc19wX3N6byIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiWVlZWS5NTS5ERC4iLExMOiJZWVlZLiBNTU1NIEQuIixMTEw6IllZWVkuIE1NTU0gRC4gSDptbSIsTExMTDoiWVlZWS4gTU1NTSBELiwgZGRkZCBIOm1tIn0sbWVyaWRpZW1QYXJzZTovZGV8ZHUvaSxpc1BNOmZ1bmN0aW9uKGUpe3JldHVybiJ1Ij09PWUuY2hhckF0KDEpLnRvTG93ZXJDYXNlKCl9LG1lcmlkaWVtOmZ1bmN0aW9uKGUsYSx0KXtyZXR1cm4gZTwxMj90PT09ITA/ImRlIjoiREUiOnQ9PT0hMD8iZHUiOiJEVSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbbWFdIExUWy1rb3JdIixuZXh0RGF5OiJbaG9sbmFwXSBMVFsta29yXSIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4gdC5jYWxsKHRoaXMsITApfSxsYXN0RGF5OiJbdGVnbmFwXSBMVFsta29yXSIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4gdC5jYWxsKHRoaXMsITEpfSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBtw7psdmEiLHBhc3Q6IiVzIixzOmUsbTplLG1tOmUsaDplLGhoOmUsZDplLGRkOmUsTTplLE1NOmUseTplLHl5OmV9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pO3JldHVybiByfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoImh1IiwiaHUiLHtjbG9zZVRleHQ6ImJlesOhciIscHJldlRleHQ6InZpc3N6YSIsbmV4dFRleHQ6ImVsxZFyZSIsY3VycmVudFRleHQ6Im1hIixtb250aE5hbWVzOlsiSmFudcOhciIsIkZlYnJ1w6FyIiwiTcOhcmNpdXMiLCLDgXByaWxpcyIsIk3DoWp1cyIsIkrDum5pdXMiLCJKw7psaXVzIiwiQXVndXN6dHVzIiwiU3plcHRlbWJlciIsIk9rdMOzYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk3DoXIiLCLDgXByIiwiTcOhaiIsIkrDum4iLCJKw7psIiwiQXVnIiwiU3plcCIsIk9rdCIsIk5vdiIsIkRlYyJdLGRheU5hbWVzOlsiVmFzw6FybmFwIiwiSMOpdGbFkSIsIktlZGQiLCJTemVyZGEiLCJDc8O8dMO2cnTDtmsiLCJQw6ludGVrIiwiU3pvbWJhdCJdLGRheU5hbWVzU2hvcnQ6WyJWYXMiLCJIw6l0IiwiS2VkIiwiU3plIiwiQ3PDvCIsIlDDqW4iLCJTem8iXSxkYXlOYW1lc01pbjpbIlYiLCJIIiwiSyIsIlN6ZSIsIkNzIiwiUCIsIlN6byJdLHdlZWtIZWFkZXI6IkjDqXQiLGRhdGVGb3JtYXQ6Inl5Lm1tLmRkLiIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITAseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiaHUiLHtidXR0b25UZXh0Onttb250aDoiSMOzbmFwIix3ZWVrOiJIw6l0IixkYXk6Ik5hcCIsbGlzdDoiTmFwbMOzIn0sYWxsRGF5VGV4dDoiRWfDqXN6IG5hcCIsZXZlbnRMaW1pdFRleHQ6InRvdsOhYmJpIixub0V2ZW50c01lc3NhZ2U6Ik5pbmNzIG1lZ2plbGVuw610aGV0xZEgZXNlbcOpbnllayJ9KX0oKSxmdW5jdGlvbigpeyFmdW5jdGlvbigpe3ZhciBlPWEuZGVmaW5lTG9jYWxlKCJpZCIse21vbnRoczoiSmFudWFyaV9GZWJydWFyaV9NYXJldF9BcHJpbF9NZWlfSnVuaV9KdWxpX0FndXN0dXNfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGVzZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFyX0Fwcl9NZWlfSnVuX0p1bF9BZ3NfU2VwX09rdF9Ob3ZfRGVzIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJNaW5nZ3VfU2VuaW5fU2VsYXNhX1JhYnVfS2FtaXNfSnVtYXRfU2FidHUiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiTWluX1Nlbl9TZWxfUmFiX0thbV9KdW1fU2FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJNZ19Tbl9TbF9SYl9LbV9KbV9TYiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhILm1tIixMVFM6IkhILm1tLnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbSJ9LG1lcmlkaWVtUGFyc2U6L3BhZ2l8c2lhbmd8c29yZXxtYWxhbS8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKGUsYSl7cmV0dXJuIDEyPT09ZSYmKGU9MCksInBhZ2kiPT09YT9lOiJzaWFuZyI9PT1hP2U+PTExP2U6ZSsxMjoic29yZSI9PT1hfHwibWFsYW0iPT09YT9lKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oZSxhLHQpe3JldHVybiBlPDExPyJwYWdpIjplPDE1PyJzaWFuZyI6ZTwxOT8ic29yZSI6Im1hbGFtIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltIYXJpIGluaSBwdWt1bF0gTFQiLG5leHREYXk6IltCZXNvayBwdWt1bF0gTFQiLG5leHRXZWVrOiJkZGRkIFtwdWt1bF0gTFQiLGxhc3REYXk6IltLZW1hcmluIHB1a3VsXSBMVCIsbGFzdFdlZWs6ImRkZGQgW2xhbHUgcHVrdWxdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJkYWxhbSAlcyIscGFzdDoiJXMgeWFuZyBsYWx1IixzOiJiZWJlcmFwYSBkZXRpayIsbToic2VtZW5pdCIsbW06IiVkIG1lbml0IixoOiJzZWphbSIsaGg6IiVkIGphbSIsZDoic2VoYXJpIixkZDoiJWQgaGFyaSIsTToic2VidWxhbiIsTU06IiVkIGJ1bGFuIix5OiJzZXRhaHVuIix5eToiJWQgdGFodW4ifSx3ZWVrOntkb3c6MSxkb3k6N319KTtyZXR1cm4gZX0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJpZCIsImlkIix7Y2xvc2VUZXh0OiJUdXR1cCIscHJldlRleHQ6IiYjeDNDO211bmR1ciIsbmV4dFRleHQ6Im1hanUmI3gzRTsiLGN1cnJlbnRUZXh0OiJoYXJpIGluaSIsbW9udGhOYW1lczpbIkphbnVhcmkiLCJGZWJydWFyaSIsIk1hcmV0IiwiQXByaWwiLCJNZWkiLCJKdW5pIiwiSnVsaSIsIkFndXN0dXMiLCJTZXB0ZW1iZXIiLCJPa3RvYmVyIiwiTm9wZW1iZXIiLCJEZXNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1laSIsIkp1biIsIkp1bCIsIkFndXMiLCJTZXAiLCJPa3QiLCJOb3AiLCJEZXMiXSxkYXlOYW1lczpbIk1pbmdndSIsIlNlbmluIiwiU2VsYXNhIiwiUmFidSIsIkthbWlzIiwiSnVtYXQiLCJTYWJ0dSJdLGRheU5hbWVzU2hvcnQ6WyJNaW4iLCJTZW4iLCJTZWwiLCJSYWIiLCJrYW0iLCJKdW0iLCJTYWIiXSxkYXlOYW1lc01pbjpbIk1nIiwiU24iLCJTbCIsIlJiIiwiS20iLCJqbSIsIlNiIl0sd2Vla0hlYWRlcjoiTWciLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheTowLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJpZCIse2J1dHRvblRleHQ6e21vbnRoOiJCdWxhbiIsd2VlazoiTWluZ2d1IixkYXk6IkhhcmkiLGxpc3Q6IkFnZW5kYSJ9LGFsbERheUh0bWw6IlNlaGFyaTxici8+cGVudWgiLGV2ZW50TGltaXRUZXh0OiJsZWJpaCIsbm9FdmVudHNNZXNzYWdlOiJUaWRhayBhZGEgYWNhcmEgdW50dWsgZGl0YW1waWxrYW4ifSl9KCksZnVuY3Rpb24oKXshZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3JldHVybiBlJTEwMD09PTExfHxlJTEwIT09MX1mdW5jdGlvbiB0KGEsdCxuLHIpe3ZhciBzPWErIiAiO3N3aXRjaChuKXtjYXNlInMiOnJldHVybiB0fHxyPyJub2trcmFyIHNla8O6bmR1ciI6Im5va2tydW0gc2Vrw7puZHVtIjtjYXNlIm0iOnJldHVybiB0PyJtw61uw7p0YSI6Im3DrW7DunR1IjtjYXNlIm1tIjpyZXR1cm4gZShhKT9zKyh0fHxyPyJtw61uw7p0dXIiOiJtw61uw7p0dW0iKTp0P3MrIm3DrW7DunRhIjpzKyJtw61uw7p0dSI7Y2FzZSJoaCI6cmV0dXJuIGUoYSk/cysodHx8cj8ia2x1a2t1c3R1bmRpciI6ImtsdWtrdXN0dW5kdW0iKTpzKyJrbHVra3VzdHVuZCI7Y2FzZSJkIjpyZXR1cm4gdD8iZGFndXIiOnI/ImRhZyI6ImRlZ2kiO2Nhc2UiZGQiOnJldHVybiBlKGEpP3Q/cysiZGFnYXIiOnMrKHI/ImRhZ2EiOiJkw7ZndW0iKTp0P3MrImRhZ3VyIjpzKyhyPyJkYWciOiJkZWdpIik7Y2FzZSJNIjpyZXR1cm4gdD8ibcOhbnXDsHVyIjpyPyJtw6FudcOwIjoibcOhbnXDsGkiO2Nhc2UiTU0iOnJldHVybiBlKGEpP3Q/cysibcOhbnXDsGlyIjpzKyhyPyJtw6FudcOwaSI6Im3DoW51w7B1bSIpOnQ/cysibcOhbnXDsHVyIjpzKyhyPyJtw6FudcOwIjoibcOhbnXDsGkiKTtjYXNlInkiOnJldHVybiB0fHxyPyLDoXIiOiLDoXJpIjtjYXNlInl5IjpyZXR1cm4gZShhKT9zKyh0fHxyPyLDoXIiOiLDoXJ1bSIpOnMrKHR8fHI/IsOhciI6IsOhcmkiKX19dmFyIG49YS5kZWZpbmVMb2NhbGUoImlzIix7bW9udGhzOiJqYW7DumFyX2ZlYnLDumFyX21hcnNfYXByw61sX21hw61fasO6bsOtX2rDumzDrV/DoWfDunN0X3NlcHRlbWJlcl9va3TDs2Jlcl9uw7N2ZW1iZXJfZGVzZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbl9mZWJfbWFyX2Fwcl9tYcOtX2rDum5fasO6bF/DoWfDul9zZXBfb2t0X27Ds3ZfZGVzIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJzdW5udWRhZ3VyX23DoW51ZGFndXJfw75yacOwanVkYWd1cl9tacOwdmlrdWRhZ3VyX2ZpbW10dWRhZ3VyX2bDtnN0dWRhZ3VyX2xhdWdhcmRhZ3VyIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InN1bl9tw6FuX8O+cmlfbWnDsF9maW1fZsO2c19sYXUiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlN1X03DoV/DnnJfTWlfRmlfRsO2X0xhIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBba2wuXSBIOm1tIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgW2tsLl0gSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbw60gZGFnIGtsLl0gTFQiLG5leHREYXk6IlvDoSBtb3JndW4ga2wuXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2tsLl0gTFQiLGxhc3REYXk6IlvDrSBnw6ZyIGtsLl0gTFQiLGxhc3RXZWVrOiJbc8Otw7Bhc3RhXSBkZGRkIFtrbC5dIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJlZnRpciAlcyIscGFzdDoiZnlyaXIgJXMgc8Otw7BhbiIsczp0LG06dCxtbTp0LGg6ImtsdWtrdXN0dW5kIixoaDp0LGQ6dCxkZDp0LE06dCxNTTp0LHk6dCx5eTp0fSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KTtyZXR1cm4gbn0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJpcyIsImlzIix7Y2xvc2VUZXh0OiJMb2thIixwcmV2VGV4dDoiJiN4M0M7IEZ5cnJpIixuZXh0VGV4dDoiTsOmc3RpICYjeDNFOyIsY3VycmVudFRleHQ6IsONIGRhZyIsbW9udGhOYW1lczpbIkphbsO6YXIiLCJGZWJyw7phciIsIk1hcnMiLCJBcHLDrWwiLCJNYcOtIiwiSsO6bsOtIiwiSsO6bMOtIiwiw4Fnw7pzdCIsIlNlcHRlbWJlciIsIk9rdMOzYmVyIiwiTsOzdmVtYmVyIiwiRGVzZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYcOtIiwiSsO6biIsIkrDumwiLCLDgWfDuiIsIlNlcCIsIk9rdCIsIk7Ds3YiLCJEZXMiXSxkYXlOYW1lczpbIlN1bm51ZGFndXIiLCJNw6FudWRhZ3VyIiwiw55yacOwanVkYWd1ciIsIk1pw7B2aWt1ZGFndXIiLCJGaW1tdHVkYWd1ciIsIkbDtnN0dWRhZ3VyIiwiTGF1Z2FyZGFndXIiXSxkYXlOYW1lc1Nob3J0OlsiU3VuIiwiTcOhbiIsIsOecmkiLCJNacOwIiwiRmltIiwiRsO2cyIsIkxhdSJdLGRheU5hbWVzTWluOlsiU3UiLCJNw6EiLCLDnnIiLCJNaSIsIkZpIiwiRsO2IiwiTGEiXSx3ZWVrSGVhZGVyOiJWaWthIixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MCxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiaXMiLHtidXR0b25UZXh0Onttb250aDoiTcOhbnXDsHVyIix3ZWVrOiJWaWthIixkYXk6IkRhZ3VyIixsaXN0OiJEYWdza3LDoSJ9LGFsbERheUh0bWw6IkFsbGFuPGJyLz5kYWdpbm4iLGV2ZW50TGltaXRUZXh0OiJtZWlyYSIsbm9FdmVudHNNZXNzYWdlOiJFbmdpciB2acOwYnVyw7BpciB0aWwgYcOwIHPDvW5hIn0pfSgpLGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKCl7dmFyIGU9YS5kZWZpbmVMb2NhbGUoIml0Iix7bW9udGhzOiJnZW5uYWlvX2ZlYmJyYWlvX21hcnpvX2FwcmlsZV9tYWdnaW9fZ2l1Z25vX2x1Z2xpb19hZ29zdG9fc2V0dGVtYnJlX290dG9icmVfbm92ZW1icmVfZGljZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imdlbl9mZWJfbWFyX2Fwcl9tYWdfZ2l1X2x1Z19hZ29fc2V0X290dF9ub3ZfZGljIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJEb21lbmljYV9MdW5lZMOsX01hcnRlZMOsX01lcmNvbGVkw6xfR2lvdmVkw6xfVmVuZXJkw6xfU2FiYXRvIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkRvbV9MdW5fTWFyX01lcl9HaW9fVmVuX1NhYiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiRG9fTHVfTWFfTWVfR2lfVmVfU2EiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbT2dnaSBhbGxlXSBMVCIsbmV4dERheToiW0RvbWFuaSBhbGxlXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2FsbGVdIExUIixsYXN0RGF5OiJbSWVyaSBhbGxlXSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbbGEgc2NvcnNhXSBkZGRkIFthbGxlXSBMVCI7ZGVmYXVsdDpyZXR1cm4iW2xvIHNjb3Jzb10gZGRkZCBbYWxsZV0gTFQifX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZTpmdW5jdGlvbihlKXtyZXR1cm4oL15bMC05XS4rJC8udGVzdChlKT8idHJhIjoiaW4iKSsiICIrZX0scGFzdDoiJXMgZmEiLHM6ImFsY3VuaSBzZWNvbmRpIixtOiJ1biBtaW51dG8iLG1tOiIlZCBtaW51dGkiLGg6InVuJ29yYSIsaGg6IiVkIG9yZSIsZDoidW4gZ2lvcm5vIixkZDoiJWQgZ2lvcm5pIixNOiJ1biBtZXNlIixNTToiJWQgbWVzaSIseToidW4gYW5ubyIseXk6IiVkIGFubmkifSxvcmRpbmFsUGFyc2U6L1xkezEsMn3Cui8sb3JkaW5hbDoiJWTCuiIsd2Vlazp7ZG93OjEsZG95OjR9fSk7cmV0dXJuIGV9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgiaXQiLCJpdCIse2Nsb3NlVGV4dDoiQ2hpdWRpIixwcmV2VGV4dDoiJiN4M0M7UHJlYyIsbmV4dFRleHQ6IlN1Y2MmI3gzRTsiLGN1cnJlbnRUZXh0OiJPZ2dpIixtb250aE5hbWVzOlsiR2VubmFpbyIsIkZlYmJyYWlvIiwiTWFyem8iLCJBcHJpbGUiLCJNYWdnaW8iLCJHaXVnbm8iLCJMdWdsaW8iLCJBZ29zdG8iLCJTZXR0ZW1icmUiLCJPdHRvYnJlIiwiTm92ZW1icmUiLCJEaWNlbWJyZSJdLG1vbnRoTmFtZXNTaG9ydDpbIkdlbiIsIkZlYiIsIk1hciIsIkFwciIsIk1hZyIsIkdpdSIsIkx1ZyIsIkFnbyIsIlNldCIsIk90dCIsIk5vdiIsIkRpYyJdLGRheU5hbWVzOlsiRG9tZW5pY2EiLCJMdW5lZMOsIiwiTWFydGVkw6wiLCJNZXJjb2xlZMOsIiwiR2lvdmVkw6wiLCJWZW5lcmTDrCIsIlNhYmF0byJdLGRheU5hbWVzU2hvcnQ6WyJEb20iLCJMdW4iLCJNYXIiLCJNZXIiLCJHaW8iLCJWZW4iLCJTYWIiXSxkYXlOYW1lc01pbjpbIkRvIiwiTHUiLCJNYSIsIk1lIiwiR2kiLCJWZSIsIlNhIl0sd2Vla0hlYWRlcjoiU20iLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJpdCIse2J1dHRvblRleHQ6e21vbnRoOiJNZXNlIix3ZWVrOiJTZXR0aW1hbmEiLGRheToiR2lvcm5vIixsaXN0OiJBZ2VuZGEifSxhbGxEYXlIdG1sOiJUdXR0byBpbDxici8+Z2lvcm5vIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihlKXtyZXR1cm4iK2FsdHJpICIrZX0sbm9FdmVudHNNZXNzYWdlOiJOb24gY2kgc29ubyBldmVudGkgZGEgdmlzdWFsaXp6YXJlIn0pfSgpLGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKCl7dmFyIGU9YS5kZWZpbmVMb2NhbGUoImphIix7bW9udGhzOiIx5pyIXzLmnIhfM+aciF805pyIXzXmnIhfNuaciF835pyIXzjmnIhfOeaciF8xMOaciF8xMeaciF8xMuaciCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiMeaciF8y5pyIXzPmnIhfNOaciF815pyIXzbmnIhfN+aciF845pyIXznmnIhfMTDmnIhfMTHmnIhfMTLmnIgiLnNwbGl0KCJfIiksd2Vla2RheXM6IuaXpeabnOaXpV/mnIjmm5zml6Vf54Gr5puc5pelX+awtOabnOaXpV/mnKjmm5zml6Vf6YeR5puc5pelX+Wcn+abnOaXpSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLml6Vf5pyIX+eBq1/msLRf5pyoX+mHkV/lnJ8iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IuaXpV/mnIhf54GrX+awtF/mnKhf6YeRX+WcnyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkFo5pmCbeWIhiIsTFRTOiJBaOaZgm3liIZz56eSIixMOiJZWVlZL01NL0REIixMTDoiWVlZWeW5tE3mnIhE5pelIixMTEw6IllZWVnlubRN5pyIROaXpUFo5pmCbeWIhiIsTExMTDoiWVlZWeW5tE3mnIhE5pelQWjmmYJt5YiGIGRkZGQifSxtZXJpZGllbVBhcnNlOi/ljYjliY185Y2I5b6ML2ksaXNQTTpmdW5jdGlvbihlKXtyZXR1cm4i5Y2I5b6MIj09PWV9LG1lcmlkaWVtOmZ1bmN0aW9uKGUsYSx0KXtyZXR1cm4gZTwxMj8i5Y2I5YmNIjoi5Y2I5b6MIn0sY2FsZW5kYXI6e3NhbWVEYXk6Ilvku4rml6VdIExUIixuZXh0RGF5OiJb5piO5pelXSBMVCIsbmV4dFdlZWs6IlvmnaXpgLFdZGRkZCBMVCIsbGFzdERheToiW+aYqOaXpV0gTFQiLGxhc3RXZWVrOiJb5YmN6YCxXWRkZGQgTFQiLHNhbWVFbHNlOiJMIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ95pelLyxvcmRpbmFsOmZ1bmN0aW9uKGUsYSl7c3dpdGNoKGEpe2Nhc2UiZCI6Y2FzZSJEIjpjYXNlIkRERCI6cmV0dXJuIGUrIuaXpSI7ZGVmYXVsdDpyZXR1cm4gZX19LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlc+W+jCIscGFzdDoiJXPliY0iLHM6IuaVsOenkiIsbToiMeWIhiIsbW06IiVk5YiGIixoOiIx5pmC6ZaTIixoaDoiJWTmmYLplpMiLGQ6IjHml6UiLGRkOiIlZOaXpSIsTToiMeODtuaciCIsTU06IiVk44O25pyIIix5OiIx5bm0Iix5eToiJWTlubQifX0pO3JldHVybiBlfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoImphIiwiamEiLHtjbG9zZVRleHQ6IumWieOBmOOCiyIscHJldlRleHQ6IiYjeDNDO+WJjSIsbmV4dFRleHQ6IuasoSYjeDNFOyIsY3VycmVudFRleHQ6IuS7iuaXpSIsbW9udGhOYW1lczpbIjHmnIgiLCIy5pyIIiwiM+aciCIsIjTmnIgiLCI15pyIIiwiNuaciCIsIjfmnIgiLCI45pyIIiwiOeaciCIsIjEw5pyIIiwiMTHmnIgiLCIxMuaciCJdLG1vbnRoTmFtZXNTaG9ydDpbIjHmnIgiLCIy5pyIIiwiM+aciCIsIjTmnIgiLCI15pyIIiwiNuaciCIsIjfmnIgiLCI45pyIIiwiOeaciCIsIjEw5pyIIiwiMTHmnIgiLCIxMuaciCJdLGRheU5hbWVzOlsi5pel5puc5pelIiwi5pyI5puc5pelIiwi54Gr5puc5pelIiwi5rC05puc5pelIiwi5pyo5puc5pelIiwi6YeR5puc5pelIiwi5Zyf5puc5pelIl0sZGF5TmFtZXNTaG9ydDpbIuaXpSIsIuaciCIsIueBqyIsIuawtCIsIuacqCIsIumHkSIsIuWcnyJdLGRheU5hbWVzTWluOlsi5pelIiwi5pyIIiwi54GrIiwi5rC0Iiwi5pyoIiwi6YeRIiwi5ZyfIl0sd2Vla0hlYWRlcjoi6YCxIixkYXRlRm9ybWF0OiJ5eS9tbS9kZCIsZmlyc3REYXk6MCxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITAseWVhclN1ZmZpeDoi5bm0In0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiamEiLHtidXR0b25UZXh0Onttb250aDoi5pyIIix3ZWVrOiLpgLEiLGRheToi5pelIixsaXN0OiLkuojlrprjg6rjgrnjg4gifSxhbGxEYXlUZXh0OiLntYLml6UiLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGUpe3JldHVybiLku5YgIitlKyIg5Lu2In0sbm9FdmVudHNNZXNzYWdlOiLjgqTjg5njg7Pjg4jjgYzooajnpLrjgZXjgozjgarjgYTjgojjgYbjgasifSl9KCksZnVuY3Rpb24oKXshZnVuY3Rpb24oKXt2YXIgZT17MDoiLdGI0ZYiLDE6Ii3RiNGWIiwyOiIt0YjRliIsMzoiLdGI0ZYiLDQ6Ii3RiNGWIiw1OiIt0YjRliIsNjoiLdGI0YsiLDc6Ii3RiNGWIiw4OiIt0YjRliIsOToiLdGI0YsiLDEwOiIt0YjRiyIsMjA6Ii3RiNGLIiwzMDoiLdGI0YsiLDQwOiIt0YjRiyIsNTA6Ii3RiNGWIiw2MDoiLdGI0YsiLDcwOiIt0YjRliIsODA6Ii3RiNGWIiw5MDoiLdGI0YsiLDEwMDoiLdGI0ZYifSx0PWEuZGVmaW5lTG9jYWxlKCJrayIse21vbnRoczoi0pvQsNKj0YLQsNGAX9Cw0pvQv9Cw0L1f0L3QsNGD0YDRi9C3X9GB05nRg9GW0YBf0LzQsNC80YvRgF/QvNCw0YPRgdGL0Lxf0YjRltC70LTQtV/RgtCw0LzRi9C3X9Kb0YvRgNC60q/QudC10Lpf0pvQsNC30LDQvV/Sm9Cw0YDQsNGI0LBf0LbQtdC70YLQvtKb0YHQsNC9Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiLSm9Cw0qNf0LDSm9C/X9C90LDRg1/RgdOZ0YNf0LzQsNC8X9C80LDRg1/RiNGW0Ltf0YLQsNC8X9Kb0YvRgF/Sm9Cw0Ldf0pvQsNGAX9C20LXQuyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi0LbQtdC60YHQtdC90LHRll/QtNKv0LnRgdC10L3QsdGWX9GB0LXQudGB0LXQvdCx0ZZf0YHTmdGA0YHQtdC90LHRll/QsdC10LnRgdC10L3QsdGWX9C20rHQvNCwX9GB0LXQvdCx0ZYiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi0LbQtdC6X9C00q/QuV/RgdC10Llf0YHTmdGAX9Cx0LXQuV/QttKx0Lxf0YHQtdC9Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLQttC6X9C00Llf0YHQuV/RgdGAX9Cx0Llf0LbQvF/RgdC9Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW9CR0q/Qs9GW0L0g0YHQsNKT0LDRgl0gTFQiLG5leHREYXk6IlvQldGA0YLQtdKjINGB0LDSk9Cw0YJdIExUIixuZXh0V2VlazoiZGRkZCBb0YHQsNKT0LDRgl0gTFQiLGxhc3REYXk6IlvQmtC10YjQtSDRgdCw0pPQsNGCXSBMVCIsbGFzdFdlZWs6IlvTqNGC0LrQtdC9INCw0L/RgtCw0L3Ri9KjXSBkZGRkIFvRgdCw0pPQsNGCXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMg0ZbRiNGW0L3QtNC1IixwYXN0OiIlcyDQsdKx0YDRi9C9IixzOiLQsdGW0YDQvdC10YjQtSDRgdC10LrRg9C90LQiLG06ItCx0ZbRgCDQvNC40L3Rg9GCIixtbToiJWQg0LzQuNC90YPRgiIsaDoi0LHRltGAINGB0LDSk9Cw0YIiLGhoOiIlZCDRgdCw0pPQsNGCIixkOiLQsdGW0YAg0LrSr9C9IixkZDoiJWQg0LrSr9C9IixNOiLQsdGW0YAg0LDQuSIsTU06IiVkINCw0LkiLHk6ItCx0ZbRgCDQttGL0LsiLHl5OiIlZCDQttGL0LsifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0tKNGI0ZZ80YjRiykvLG9yZGluYWw6ZnVuY3Rpb24oYSl7dmFyIHQ9YSUxMCxuPWE+PTEwMD8xMDA6bnVsbDtyZXR1cm4gYSsoZVthXXx8ZVt0XXx8ZVtuXSl9LHdlZWs6e2RvdzoxLGRveTo3fX0pO3JldHVybiB0fSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoImtrIiwia2siLHtjbG9zZVRleHQ6ItCW0LDQsdGDIixwcmV2VGV4dDoiJiN4M0M70JDQu9C00YvSo9KT0YsiLG5leHRUZXh0OiLQmtC10LvQtdGB0ZYmI3gzRTsiLGN1cnJlbnRUZXh0OiLQkdKv0LPRltC9Iixtb250aE5hbWVzOlsi0prQsNKj0YLQsNGAIiwi0JDSm9C/0LDQvSIsItCd0LDRg9GA0YvQtyIsItCh05nRg9GW0YAiLCLQnNCw0LzRi9GAIiwi0JzQsNGD0YHRi9C8Iiwi0KjRltC70LTQtSIsItCi0LDQvNGL0LciLCLSmtGL0YDQutKv0LnQtdC6Iiwi0prQsNC30LDQvSIsItKa0LDRgNCw0YjQsCIsItCW0LXQu9GC0L7Sm9GB0LDQvSJdLG1vbnRoTmFtZXNTaG9ydDpbItKa0LDSoyIsItCQ0pvQvyIsItCd0LDRgyIsItCh05nRgyIsItCc0LDQvCIsItCc0LDRgyIsItCo0ZbQuyIsItCi0LDQvCIsItKa0YvRgCIsItKa0LDQtyIsItKa0LDRgCIsItCW0LXQuyJdLGRheU5hbWVzOlsi0JbQtdC60YHQtdC90LHRliIsItCU0q/QudGB0LXQvdCx0ZYiLCLQodC10LnRgdC10L3QsdGWIiwi0KHTmdGA0YHQtdC90LHRliIsItCR0LXQudGB0LXQvdCx0ZYiLCLQltKx0LzQsCIsItCh0LXQvdCx0ZYiXSxkYXlOYW1lc1Nob3J0Olsi0LbQutGBIiwi0LTRgdC9Iiwi0YHRgdC9Iiwi0YHRgNGBIiwi0LHRgdC9Iiwi0LbQvNCwIiwi0YHQvdCxIl0sZGF5TmFtZXNNaW46WyLQltC6Iiwi0JTRgSIsItCh0YEiLCLQodGAIiwi0JHRgSIsItCW0LwiLCLQodC9Il0sd2Vla0hlYWRlcjoi0J3QtSIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoImtrIix7YnV0dG9uVGV4dDp7bW9udGg6ItCQ0LkiLHdlZWs6ItCQ0L/RgtCwIixkYXk6ItCa0q/QvSIsbGlzdDoi0JrSr9C9INGC05nRgNGC0ZbQsdGWIn0sYWxsRGF5VGV4dDoi0JrSr9C90ZYg0LHQvtC50YsiLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGUpe3JldHVybiIrINGC0LDSk9GLICIrZX0sbm9FdmVudHNNZXNzYWdlOiLQmtOp0YDRgdC10YLRgyDSr9GI0ZbQvSDQvtKb0LjSk9Cw0LvQsNGAINC20L7SmyJ9KX0oKSxmdW5jdGlvbigpeyFmdW5jdGlvbigpe3ZhciBlPWEuZGVmaW5lTG9jYWxlKCJrbyIse21vbnRoczoiMeyblF8y7JuUXzPsm5RfNOyblF817JuUXzbsm5RfN+yblF847JuUXznsm5RfMTDsm5RfMTHsm5RfMTLsm5QiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IjHsm5RfMuyblF8z7JuUXzTsm5RfNeyblF827JuUXzfsm5RfOOyblF857JuUXzEw7JuUXzEx7JuUXzEy7JuUIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiLsnbzsmpTsnbxf7JuU7JqU7J28X+2ZlOyalOydvF/siJjsmpTsnbxf66qp7JqU7J28X+q4iOyalOydvF/thqDsmpTsnbwiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi7J28X+yblF/tmZRf7IiYX+uqqV/quIhf7YagIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLsnbxf7JuUX+2ZlF/siJhf66qpX+q4iF/thqAiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGjsi5wgbeu2hCIsTFRTOiJBIGjsi5wgbeu2hCBz7LSIIixMOiJZWVlZLk1NLkREIixMTDoiWVlZWeuFhCBNTU1NIETsnbwiLExMTDoiWVlZWeuFhCBNTU1NIETsnbwgQSBo7IucIG3rtoQiLExMTEw6IllZWVnrhYQgTU1NTSBE7J28IGRkZGQgQSBo7IucIG3rtoQifSxjYWxlbmRhcjp7c2FtZURheToi7Jik64qYIExUIixuZXh0RGF5OiLrgrTsnbwgTFQiLG5leHRXZWVrOiJkZGRkIExUIixsYXN0RGF5OiLslrTsoJwgTFQiLGxhc3RXZWVrOiLsp4Drgpzso7wgZGRkZCBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMg7ZuEIixwYXN0OiIlcyDsoIQiLHM6IuuqhyDstIgiLHNzOiIlZOy0iCIsbToi7J2867aEIixtbToiJWTrtoQiLGg6Iu2VnCDsi5zqsIQiLGhoOiIlZOyLnOqwhCIsZDoi7ZWY66OoIixkZDoiJWTsnbwiLE06Iu2VnCDri6wiLE1NOiIlZOuLrCIseToi7J28IOuFhCIseXk6IiVk64WEIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ97J28LyxvcmRpbmFsOiIlZOydvCIsbWVyaWRpZW1QYXJzZTov7Jik7KCEfOyYpO2bhC8saXNQTTpmdW5jdGlvbihlKXtyZXR1cm4i7Jik7ZuEIj09PWV9LG1lcmlkaWVtOmZ1bmN0aW9uKGUsYSx0KXtyZXR1cm4gZTwxMj8i7Jik7KCEIjoi7Jik7ZuEIn19KTtyZXR1cm4gZX0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJrbyIsImtvIix7Y2xvc2VUZXh0OiLri6vquLAiLHByZXZUZXh0OiLsnbTsoITri6wiLG5leHRUZXh0OiLri6TsnYzri6wiLGN1cnJlbnRUZXh0OiLsmKTripgiLG1vbnRoTmFtZXM6WyIx7JuUIiwiMuyblCIsIjPsm5QiLCI07JuUIiwiNeyblCIsIjbsm5QiLCI37JuUIiwiOOyblCIsIjnsm5QiLCIxMOyblCIsIjEx7JuUIiwiMTLsm5QiXSxtb250aE5hbWVzU2hvcnQ6WyIx7JuUIiwiMuyblCIsIjPsm5QiLCI07JuUIiwiNeyblCIsIjbsm5QiLCI37JuUIiwiOOyblCIsIjnsm5QiLCIxMOyblCIsIjEx7JuUIiwiMTLsm5QiXSxkYXlOYW1lczpbIuydvOyalOydvCIsIuyblOyalOydvCIsIu2ZlOyalOydvCIsIuyImOyalOydvCIsIuuqqeyalOydvCIsIuq4iOyalOydvCIsIu2GoOyalOydvCJdLGRheU5hbWVzU2hvcnQ6WyLsnbwiLCLsm5QiLCLtmZQiLCLsiJgiLCLrqqkiLCLquIgiLCLthqAiXSxkYXlOYW1lc01pbjpbIuydvCIsIuyblCIsIu2ZlCIsIuyImCIsIuuqqSIsIuq4iCIsIu2GoCJdLHdlZWtIZWFkZXI6IuyjvCIsZGF0ZUZvcm1hdDoieXkuIG0uIGQuIixmaXJzdERheTowLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMCx5ZWFyU3VmZml4OiLrhYQifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJrbyIse2J1dHRvblRleHQ6e21vbnRoOiLsm5QiLHdlZWs6IuyjvCIsZGF5OiLsnbwiLGxpc3Q6IuydvOygleuqqeuhnSJ9LGFsbERheVRleHQ6IuyiheydvCIsZXZlbnRMaW1pdFRleHQ6IuqwnCIsbm9FdmVudHNNZXNzYWdlOiLsnbzsoJXsnbQg7ZGc7IucIOyXhuyKteuLiOuLpCJ9KX0oKSxmdW5jdGlvbigpeyFmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSxhLHQsbil7dmFyIHI9e206WyJlbmcgTWludXR0IiwiZW5nZXIgTWludXR0Il0saDpbImVuZyBTdG9ubiIsImVuZ2VyIFN0b25uIl0sZDpbImVlbiBEYWciLCJlbmdlbSBEYWciXSxNOlsiZWUgTW91bnQiLCJlbmdlbSBNb3VudCJdLHk6WyJlZSBKb2VyIiwiZW5nZW0gSm9lciJdfTtyZXR1cm4gYT9yW3RdWzBdOnJbdF1bMV19ZnVuY3Rpb24gdChlKXt2YXIgYT1lLnN1YnN0cigwLGUuaW5kZXhPZigiICIpKTtyZXR1cm4gcihhKT8iYSAiK2U6ImFuICIrZX1mdW5jdGlvbiBuKGUpe3ZhciBhPWUuc3Vic3RyKDAsZS5pbmRleE9mKCIgIikpO3JldHVybiByKGEpPyJ2aXJ1ICIrZToidmlydW4gIitlfWZ1bmN0aW9uIHIoZSl7aWYoZT1wYXJzZUludChlLDEwKSxpc05hTihlKSlyZXR1cm4hMTtpZihlPDApcmV0dXJuITA7aWYoZTwxMClyZXR1cm4gNDw9ZSYmZTw9NztpZihlPDEwMCl7dmFyIGE9ZSUxMCx0PWUvMTA7cmV0dXJuIHIoMD09PWE/dDphKX1pZihlPDFlNCl7Zm9yKDtlPj0xMDspZS89MTA7cmV0dXJuIHIoZSl9cmV0dXJuIGUvPTFlMyxyKGUpfXZhciBzPWEuZGVmaW5lTG9jYWxlKCJsYiIse21vbnRoczoiSmFudWFyX0ZlYnJ1YXJfTcOkZXJ6X0FicsOrbGxfTWVlX0p1bmlfSnVsaV9BdWd1c3RfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGV6ZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbi5fRmVici5fTXJ6Ll9BYnIuX01lZV9KdW4uX0p1bC5fQXVnLl9TZXB0Ll9Pa3QuX05vdi5fRGV6LiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJTb25uZGVnX03DqWluZGVnX0TDq25zY2hkZWdfTcOrdHR3b2NoX0Rvbm5lc2NoZGVnX0ZyZWlkZWdfU2Ftc2NoZGVnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlNvLl9Nw6kuX0TDqy5fTcOrLl9Eby5fRnIuX1NhLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU29fTcOpX0TDq19Nw6tfRG9fRnJfU2EiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSBbQXVlcl0iLExUUzoiSDptbTpzcyBbQXVlcl0iLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIEg6bW0gW0F1ZXJdIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgSDptbSBbQXVlcl0ifSxjYWxlbmRhcjp7c2FtZURheToiW0hhdXQgdW1dIExUIixzYW1lRWxzZToiTCIsbmV4dERheToiW011ZXIgdW1dIExUIixuZXh0V2VlazoiZGRkZCBbdW1dIExUIixsYXN0RGF5OiJbR8Orc2NodGVyIHVtXSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAyOmNhc2UgNDpyZXR1cm4iW0xlc2NodGVuXSBkZGRkIFt1bV0gTFQiO2RlZmF1bHQ6cmV0dXJuIltMZXNjaHRlXSBkZGRkIFt1bV0gTFQifX19LHJlbGF0aXZlVGltZTp7ZnV0dXJlOnQscGFzdDpuLHM6ImUgcHVlciBTZWtvbm5lbiIsbTplLG1tOiIlZCBNaW51dHRlbiIsaDplLGhoOiIlZCBTdG9ubmVuIixkOmUsZGQ6IiVkIERlZWciLE06ZSxNTToiJWQgTcOpaW50Iix5OmUseXk6IiVkIEpvZXIifSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KTtyZXR1cm4gc30oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJsYiIsImxiIix7Y2xvc2VUZXh0OiJGw6RlcmRlZyIscHJldlRleHQ6Ilpyw6ljayIsbmV4dFRleHQ6IldlaWRlciIsY3VycmVudFRleHQ6IkhhdXQiLG1vbnRoTmFtZXM6WyJKYW51YXIiLCJGZWJydWFyIiwiTcOkZXJ6IiwiQWJyw6tsbCIsIk1lZSIsIkp1bmkiLCJKdWxpIiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2t0b2JlciIsIk5vdmVtYmVyIiwiRGV6ZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZWIiLCJNw6RlIiwiQWJyIiwiTWVlIiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2t0IiwiTm92IiwiRGV6Il0sZGF5TmFtZXM6WyJTb25uZGVnIiwiTcOpaW5kZWciLCJEw6tuc2NoZGVnIiwiTcOrdHR3b2NoIiwiRG9ubmVzY2hkZWciLCJGcmVpZGVnIiwiU2Ftc2NoZGVnIl0sZGF5TmFtZXNTaG9ydDpbIlNvbiIsIk3DqWkiLCJEw6tuIiwiTcOrdCIsIkRvbiIsIkZyZSIsIlNhbSJdLGRheU5hbWVzTWluOlsiU28iLCJNw6kiLCJEw6siLCJNw6siLCJEbyIsIkZyIiwiU2EiXSx3ZWVrSGVhZGVyOiJXIixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgibGIiLHtidXR0b25UZXh0Onttb250aDoiTW91bnQiLHdlZWs6IldvY2giLGRheToiRGFnIixsaXN0OiJUZXJtaW5pd3dlcnNpaWNodCJ9LGFsbERheVRleHQ6IkdhbnplbiBEYWciLGV2ZW50TGltaXRUZXh0OiJtw6lpIixub0V2ZW50c01lc3NhZ2U6Ik5lZSBFdmVuZW1lbnRlciB6ZSBhZmZpY2jDqWllcmVuIn0pfSgpLGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLGEsdCxuKXtyZXR1cm4gYT8ia2VsaW9zIHNla3VuZMSXcyI6bj8ia2VsacWzIHNla3VuZMW+acWzIjoia2VsaWFzIHNla3VuZGVzIn1mdW5jdGlvbiB0KGUsYSx0LG4pe3JldHVybiBhP3IodClbMF06bj9yKHQpWzFdOnIodClbMl19ZnVuY3Rpb24gbihlKXtyZXR1cm4gZSUxMD09PTB8fGU+MTAmJmU8MjB9ZnVuY3Rpb24gcihlKXtyZXR1cm4gZFtlXS5zcGxpdCgiXyIpfWZ1bmN0aW9uIHMoZSxhLHMsZCl7dmFyIGk9ZSsiICI7cmV0dXJuIDE9PT1lP2krdChlLGEsc1swXSxkKTphP2krKG4oZSk/cihzKVsxXTpyKHMpWzBdKTpkP2krcihzKVsxXTppKyhuKGUpP3IocylbMV06cihzKVsyXSl9dmFyIGQ9e206Im1pbnV0xJdfbWludXTEl3NfbWludXTEmSIsbW06Im1pbnV0xJdzX21pbnXEjWnFs19taW51dGVzIixoOiJ2YWxhbmRhX3ZhbGFuZG9zX3ZhbGFuZMSFIixoaDoidmFsYW5kb3NfdmFsYW5kxbNfdmFsYW5kYXMiLGQ6ImRpZW5hX2RpZW5vc19kaWVuxIUiLGRkOiJkaWVub3NfZGllbsWzX2RpZW5hcyIsTToibcSXbnVvX23El25lc2lvX23El25lc8SvIixNTToibcSXbmVzaWFpX23El25lc2nFs19txJduZXNpdXMiLHk6Im1ldGFpX21ldMWzX21ldHVzIix5eToibWV0YWlfbWV0xbNfbWV0dXMifSxpPWEuZGVmaW5lTG9jYWxlKCJsdCIse21vbnRoczp7Zm9ybWF0OiJzYXVzaW9fdmFzYXJpb19rb3ZvX2JhbGFuZMW+aW9fZ2VndcW+xJdzX2JpcsW+ZWxpb19saWVwb3NfcnVncGrFq8SNaW9fcnVnc8SXam9fc3BhbGlvX2xhcGtyacSNaW9fZ3J1b2TFvmlvIi5zcGxpdCgiXyIpLHN0YW5kYWxvbmU6InNhdXNpc192YXNhcmlzX2tvdmFzX2JhbGFuZGlzX2dlZ3XFvsSXX2JpcsW+ZWxpc19saWVwYV9ydWdwasWrdGlzX3J1Z3PEl2ppc19zcGFsaXNfbGFwa3JpdGlzX2dydW9kaXMiLnNwbGl0KCJfIiksaXNGb3JtYXQ6L0Rbb0RdPyhcW1teXFtcXV0qXF18XHMpK01NTU0/fE1NTU0/KFxbW15cW1xdXSpcXXxccykrRFtvRF0/L30sbW9udGhzU2hvcnQ6InNhdV92YXNfa292X2JhbF9nZWdfYmlyX2xpZV9yZ3BfcmdzX3NwYV9sYXBfZ3JkIi5zcGxpdCgiXyIpLHdlZWtkYXlzOntmb3JtYXQ6InNla21hZGllbsSvX3Bpcm1hZGllbsSvX2FudHJhZGllbsSvX3RyZcSNaWFkaWVuxK9fa2V0dmlydGFkaWVuxK9fcGVua3RhZGllbsSvX8WhZcWhdGFkaWVuxK8iLnNwbGl0KCJfIiksc3RhbmRhbG9uZToic2VrbWFkaWVuaXNfcGlybWFkaWVuaXNfYW50cmFkaWVuaXNfdHJlxI1pYWRpZW5pc19rZXR2aXJ0YWRpZW5pc19wZW5rdGFkaWVuaXNfxaFlxaF0YWRpZW5pcyIuc3BsaXQoIl8iKSxpc0Zvcm1hdDovZGRkZCBISDptbS99LHdlZWtkYXlzU2hvcnQ6IlNla19QaXJfQW50X1RyZV9LZXRfUGVuX8WgZcWhIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTX1BfQV9UX0tfUG5fxaAiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IllZWVktTU0tREQiLExMOiJZWVlZIFttLl0gTU1NTSBEIFtkLl0iLExMTDoiWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBISDptbSBbdmFsLl0iLExMTEw6IllZWVkgW20uXSBNTU1NIEQgW2QuXSwgZGRkZCwgSEg6bW0gW3ZhbC5dIixsOiJZWVlZLU1NLUREIixsbDoiWVlZWSBbbS5dIE1NTU0gRCBbZC5dIixsbGw6IllZWVkgW20uXSBNTU1NIEQgW2QuXSwgSEg6bW0gW3ZhbC5dIixsbGxsOiJZWVlZIFttLl0gTU1NTSBEIFtkLl0sIGRkZCwgSEg6bW0gW3ZhbC5dIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvFoGlhbmRpZW5dIExUIixuZXh0RGF5OiJbUnl0b2pdIExUIixuZXh0V2VlazoiZGRkZCBMVCIsbGFzdERheToiW1Zha2FyXSBMVCIsbGFzdFdlZWs6IltQcmHEl2p1c8SvXSBkZGRkIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJwbyAlcyIscGFzdDoicHJpZcWhICVzIixzOmUsbTp0LG1tOnMsaDp0LGhoOnMsZDp0LGRkOnMsTTp0LE1NOnMseTp0LHl5OnN9LG9yZGluYWxQYXJzZTovXGR7MSwyfS1vamkvLG9yZGluYWw6ZnVuY3Rpb24oZSl7cmV0dXJuIGUrIi1vamkifSx3ZWVrOntkb3c6MSxkb3k6NH19KTtyZXR1cm4gaX0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJsdCIsImx0Iix7Y2xvc2VUZXh0OiJVxb5kYXJ5dGkiLHByZXZUZXh0OiImI3gzQztBdGdhbCIsbmV4dFRleHQ6IlBpcm15biYjeDNFOyIsY3VycmVudFRleHQ6IsWgaWFuZGllbiIsbW9udGhOYW1lczpbIlNhdXNpcyIsIlZhc2FyaXMiLCJLb3ZhcyIsIkJhbGFuZGlzIiwiR2VndcW+xJciLCJCaXLFvmVsaXMiLCJMaWVwYSIsIlJ1Z3Bqxat0aXMiLCJSdWdzxJdqaXMiLCJTcGFsaXMiLCJMYXBrcml0aXMiLCJHcnVvZGlzIl0sbW9udGhOYW1lc1Nob3J0OlsiU2F1IiwiVmFzIiwiS292IiwiQmFsIiwiR2VnIiwiQmlyIiwiTGllIiwiUnVncCIsIlJ1Z3MiLCJTcGEiLCJMYXAiLCJHcnUiXSxkYXlOYW1lczpbInNla21hZGllbmlzIiwicGlybWFkaWVuaXMiLCJhbnRyYWRpZW5pcyIsInRyZcSNaWFkaWVuaXMiLCJrZXR2aXJ0YWRpZW5pcyIsInBlbmt0YWRpZW5pcyIsIsWhZcWhdGFkaWVuaXMiXSxkYXlOYW1lc1Nob3J0Olsic2VrIiwicGlyIiwiYW50IiwidHJlIiwia2V0IiwicGVuIiwixaFlxaEiXSxkYXlOYW1lc01pbjpbIlNlIiwiUHIiLCJBbiIsIlRyIiwiS2UiLCJQZSIsIsWgZSJdLHdlZWtIZWFkZXI6IlNBViIsZGF0ZUZvcm1hdDoieXktbW0tZGQiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiEwLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoImx0Iix7YnV0dG9uVGV4dDp7bW9udGg6Ik3El251byIsd2VlazoiU2F2YWl0xJciLGRheToiRGllbmEiLGxpc3Q6IkRhcmJvdHZhcmvElyJ9LGFsbERheVRleHQ6IlZpc8SFIGRpZW7EhSIsZXZlbnRMaW1pdFRleHQ6ImRhdWdpYXUiLG5vRXZlbnRzTWVzc2FnZToiTsSXcmEgxK92eWtpxbMgcm9keXRpIn0pfSgpLGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLGEsdCl7cmV0dXJuIHQ/YSUxMD09PTEmJmElMTAwIT09MTE/ZVsyXTplWzNdOmElMTA9PT0xJiZhJTEwMCE9PTExP2VbMF06ZVsxXX1mdW5jdGlvbiB0KGEsdCxuKXtyZXR1cm4gYSsiICIrZShzW25dLGEsdCl9ZnVuY3Rpb24gbihhLHQsbil7cmV0dXJuIGUoc1tuXSxhLHQpfWZ1bmN0aW9uIHIoZSxhKXtyZXR1cm4gYT8iZGHFvmFzIHNla3VuZGVzIjoiZGHFvsSBbSBzZWt1bmTEk20ifXZhciBzPXttOiJtaW7Fq3Rlc19taW7Fq3TEk21fbWluxat0ZV9taW7Fq3RlcyIuc3BsaXQoIl8iKSxtbToibWluxat0ZXNfbWluxat0xJNtX21pbsWrdGVfbWluxat0ZXMiLnNwbGl0KCJfIiksaDoic3R1bmRhc19zdHVuZMSBbV9zdHVuZGFfc3R1bmRhcyIuc3BsaXQoIl8iKSxoaDoic3R1bmRhc19zdHVuZMSBbV9zdHVuZGFfc3R1bmRhcyIuc3BsaXQoIl8iKSxkOiJkaWVuYXNfZGllbsSBbV9kaWVuYV9kaWVuYXMiLnNwbGl0KCJfIiksZGQ6ImRpZW5hc19kaWVuxIFtX2RpZW5hX2RpZW5hcyIuc3BsaXQoIl8iKSxNOiJtxJNuZcWhYV9txJNuZcWhaWVtX23Ek25lc2lzX23Ek25lxaFpIi5zcGxpdCgiXyIpLE1NOiJtxJNuZcWhYV9txJNuZcWhaWVtX23Ek25lc2lzX23Ek25lxaFpIi5zcGxpdCgiXyIpLHk6ImdhZGFfZ2FkaWVtX2dhZHNfZ2FkaSIuc3BsaXQoIl8iKSx5eToiZ2FkYV9nYWRpZW1fZ2Fkc19nYWRpIi5zcGxpdCgiXyIpfSxkPWEuZGVmaW5lTG9jYWxlKCJsdiIse21vbnRoczoiamFudsSBcmlzX2ZlYnJ1xIFyaXNfbWFydHNfYXByxKtsaXNfbWFpanNfasWrbmlqc19qxatsaWpzX2F1Z3VzdHNfc2VwdGVtYnJpc19va3RvYnJpc19ub3ZlbWJyaXNfZGVjZW1icmlzIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW5fZmViX21hcl9hcHJfbWFpX2rFq25fasWrbF9hdWdfc2VwX29rdF9ub3ZfZGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJzdsSTdGRpZW5hX3Bpcm1kaWVuYV9vdHJkaWVuYV90cmXFoWRpZW5hX2NldHVydGRpZW5hX3BpZWt0ZGllbmFfc2VzdGRpZW5hIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlN2X1BfT19UX0NfUGtfUyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3ZfUF9PX1RfQ19Qa19TIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZLiIsTEw6IllZWVkuIFtnYWRhXSBELiBNTU1NIixMTEw6IllZWVkuIFtnYWRhXSBELiBNTU1NLCBISDptbSIsTExMTDoiWVlZWS4gW2dhZGFdIEQuIE1NTU0sIGRkZGQsIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvFoG9kaWVuIHB1bGtzdGVuXSBMVCIsbmV4dERheToiW1LEq3QgcHVsa3N0ZW5dIExUIixuZXh0V2VlazoiZGRkZCBbcHVsa3N0ZW5dIExUIixsYXN0RGF5OiJbVmFrYXIgcHVsa3N0ZW5dIExUIixsYXN0V2VlazoiW1BhZ8SBanXFocSBXSBkZGRkIFtwdWxrc3Rlbl0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InDEk2MgJXMiLHBhc3Q6InBpcm1zICVzIixzOnIsbTpuLG1tOnQsaDpuLGhoOnQsZDpuLGRkOnQsTTpuLE1NOnQseTpuLHl5OnR9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pO3JldHVybiBkfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoImx2IiwibHYiLHtjbG9zZVRleHQ6IkFpenbEk3J0IixwcmV2VGV4dDoiSWVwci4iLG5leHRUZXh0OiJOxIFrLiIsY3VycmVudFRleHQ6IsWgb2RpZW4iLG1vbnRoTmFtZXM6WyJKYW52xIFyaXMiLCJGZWJydcSBcmlzIiwiTWFydHMiLCJBcHLEq2xpcyIsIk1haWpzIiwiSsWrbmlqcyIsIkrFq2xpanMiLCJBdWd1c3RzIiwiU2VwdGVtYnJpcyIsIk9rdG9icmlzIiwiTm92ZW1icmlzIiwiRGVjZW1icmlzIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWFpIiwiSsWrbiIsIkrFq2wiLCJBdWciLCJTZXAiLCJPa3QiLCJOb3YiLCJEZWMiXSxkYXlOYW1lczpbInN2xJN0ZGllbmEiLCJwaXJtZGllbmEiLCJvdHJkaWVuYSIsInRyZcWhZGllbmEiLCJjZXR1cnRkaWVuYSIsInBpZWt0ZGllbmEiLCJzZXN0ZGllbmEiXSxkYXlOYW1lc1Nob3J0Olsic3Z0IiwicHJtIiwib3RyIiwidHJlIiwiY3RyIiwicGt0Iiwic3N0Il0sZGF5TmFtZXNNaW46WyJTdiIsIlByIiwiT3QiLCJUciIsIkN0IiwiUGsiLCJTcyJdLHdlZWtIZWFkZXI6Ik5lZC4iLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJsdiIse2J1dHRvblRleHQ6e21vbnRoOiJNxJNuZXNpcyIsd2VlazoiTmVkxJPEvGEiLGRheToiRGllbmEiLGxpc3Q6IkRpZW5hcyBrxIFydMSrYmEifSxhbGxEYXlUZXh0OiJWaXN1IGRpZW51IixldmVudExpbWl0VGV4dDpmdW5jdGlvbihlKXtyZXR1cm4iK3bEk2wgIitlfSxub0V2ZW50c01lc3NhZ2U6Ik5hdiBub3Rpa3VtdSwgbGFpIHBhcsSBZMSrdHUifSl9KCksZnVuY3Rpb24oKXshZnVuY3Rpb24oKXt2YXIgZT1hLmRlZmluZUxvY2FsZSgibWsiLHttb250aHM6ItGY0LDQvdGD0LDRgNC4X9GE0LXQstGA0YPQsNGA0Lhf0LzQsNGA0YJf0LDQv9GA0LjQu1/QvNCw0Zhf0ZjRg9C90Lhf0ZjRg9C70Lhf0LDQstCz0YPRgdGCX9GB0LXQv9GC0LXQvNCy0YDQuF/QvtC60YLQvtC80LLRgNC4X9C90L7QtdC80LLRgNC4X9C00LXQutC10LzQstGA0LgiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ItGY0LDQvV/RhNC10LJf0LzQsNGAX9Cw0L/RgF/QvNCw0Zhf0ZjRg9C9X9GY0YPQu1/QsNCy0LNf0YHQtdC/X9C+0LrRgl/QvdC+0LVf0LTQtdC6Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiLQvdC10LTQtdC70LBf0L/QvtC90LXQtNC10LvQvdC40Lpf0LLRgtC+0YDQvdC40Lpf0YHRgNC10LTQsF/Rh9C10YLQstGA0YLQvtC6X9C/0LXRgtC+0Lpf0YHQsNCx0L7RgtCwIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ItC90LXQtF/Qv9C+0L1f0LLRgtC+X9GB0YDQtV/Rh9C10YJf0L/QtdGCX9GB0LDQsSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi0L1lX9C/b1/QstGCX9GB0YBf0YfQtV/Qv9C1X9GBYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiRC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb0JTQtdC90LXRgSDQstC+XSBMVCIsbmV4dERheToiW9Cj0YLRgNC1INCy0L5dIExUIixuZXh0V2VlazoiW9CS0L5dIGRkZGQgW9Cy0L5dIExUIixsYXN0RGF5OiJb0JLRh9C10YDQsCDQstC+XSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOmNhc2UgMzpjYXNlIDY6cmV0dXJuIlvQmNC30LzQuNC90LDRgtCw0YLQsF0gZGRkZCBb0LLQvl0gTFQiO2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgNTpyZXR1cm4iW9CY0LfQvNC40L3QsNGC0LjQvtGCXSBkZGRkIFvQstC+XSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLQv9C+0YHQu9C1ICVzIixwYXN0OiLQv9GA0LXQtCAlcyIsczoi0L3QtdC60L7Qu9C60YMg0YHQtdC60YPQvdC00LgiLG06ItC80LjQvdGD0YLQsCIsbW06IiVkINC80LjQvdGD0YLQuCIsaDoi0YfQsNGBIixoaDoiJWQg0YfQsNGB0LAiLGQ6ItC00LXQvSIsZGQ6IiVkINC00LXQvdCwIixNOiLQvNC10YHQtdGGIixNTToiJWQg0LzQtdGB0LXRhtC4Iix5OiLQs9C+0LTQuNC90LAiLHl5OiIlZCDQs9C+0LTQuNC90LgifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0tKNC10LJ80LXQvXzRgtC4fNCy0Lh80YDQuHzQvNC4KS8sb3JkaW5hbDpmdW5jdGlvbihlKXt2YXIgYT1lJTEwLHQ9ZSUxMDA7cmV0dXJuIDA9PT1lP2UrIi3QtdCyIjowPT09dD9lKyIt0LXQvSI6dD4xMCYmdDwyMD9lKyIt0YLQuCI6MT09PWE/ZSsiLdCy0LgiOjI9PT1hP2UrIi3RgNC4Ijo3PT09YXx8OD09PWE/ZSsiLdC80LgiOmUrIi3RgtC4In0sd2Vlazp7ZG93OjEsZG95Ojd9fSk7cmV0dXJuIGV9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgibWsiLCJtayIse2Nsb3NlVGV4dDoi0JfQsNGC0LLQvtGA0LgiLHByZXZUZXh0OiImI3gzQzsiLG5leHRUZXh0OiImI3gzRTsiLGN1cnJlbnRUZXh0OiLQlNC10L3QtdGBIixtb250aE5hbWVzOlsi0IjQsNC90YPQsNGA0LgiLCLQpNC10LLRgNGD0LDRgNC4Iiwi0JzQsNGA0YIiLCLQkNC/0YDQuNC7Iiwi0JzQsNGYIiwi0IjRg9C90LgiLCLQiNGD0LvQuCIsItCQ0LLQs9GD0YHRgiIsItCh0LXQv9GC0LXQvNCy0YDQuCIsItCe0LrRgtC+0LzQstGA0LgiLCLQndC+0LXQvNCy0YDQuCIsItCU0LXQutC10LzQstGA0LgiXSxtb250aE5hbWVzU2hvcnQ6WyLQiNCw0L0iLCLQpNC10LIiLCLQnNCw0YAiLCLQkNC/0YAiLCLQnNCw0ZgiLCLQiNGD0L0iLCLQiNGD0LsiLCLQkNCy0LMiLCLQodC10L8iLCLQntC60YIiLCLQndC+0LUiLCLQlNC10LoiXSxkYXlOYW1lczpbItCd0LXQtNC10LvQsCIsItCf0L7QvdC10LTQtdC70L3QuNC6Iiwi0JLRgtC+0YDQvdC40LoiLCLQodGA0LXQtNCwIiwi0KfQtdGC0LLRgNGC0L7QuiIsItCf0LXRgtC+0LoiLCLQodCw0LHQvtGC0LAiXSxkYXlOYW1lc1Nob3J0Olsi0J3QtdC0Iiwi0J/QvtC9Iiwi0JLRgtC+Iiwi0KHRgNC1Iiwi0KfQtdGCIiwi0J/QtdGCIiwi0KHQsNCxIl0sZGF5TmFtZXNNaW46WyLQndC1Iiwi0J/QviIsItCS0YIiLCLQodGAIiwi0KfQtSIsItCf0LUiLCLQodCwIl0sd2Vla0hlYWRlcjoi0KHQtdC0IixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgibWsiLHtidXR0b25UZXh0Onttb250aDoi0JzQtdGB0LXRhiIsd2Vlazoi0J3QtdC00LXQu9CwIixkYXk6ItCU0LXQvSIsbGlzdDoi0JPRgNCw0YTQuNC6In0sYWxsRGF5VGV4dDoi0KbQtdC7INC00LXQvSIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIivQv9C+0LLQtdGc0LUgIitlfSxub0V2ZW50c01lc3NhZ2U6ItCd0LXQvNCwINC90LDRgdGC0LDQvdC4INC30LAg0L/RgNC40LrQsNC20YPQstCw0ZrQtSJ9KX0oKSxmdW5jdGlvbigpeyFmdW5jdGlvbigpe3ZhciBlPWEuZGVmaW5lTG9jYWxlKCJtcyIse21vbnRoczoiSmFudWFyaV9GZWJydWFyaV9NYWNfQXByaWxfTWVpX0p1bl9KdWxhaV9PZ29zX1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0Rpc2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRmViX01hY19BcHJfTWVpX0p1bl9KdWxfT2dzX1NlcF9Pa3RfTm92X0RpcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiQWhhZF9Jc25pbl9TZWxhc2FfUmFidV9LaGFtaXNfSnVtYWF0X1NhYnR1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkFoZF9Jc25fU2VsX1JhYl9LaGFfSnVtX1NhYiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiQWhfSXNfU2xfUmJfS21fSm1fU2IiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISC5tbSIsTFRTOiJISC5tbS5zcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0ifSxtZXJpZGllbVBhcnNlOi9wYWdpfHRlbmdhaGFyaXxwZXRhbmd8bWFsYW0vLG1lcmlkaWVtSG91cjpmdW5jdGlvbihlLGEpe3JldHVybiAxMj09PWUmJihlPTApLCJwYWdpIj09PWE/ZToidGVuZ2FoYXJpIj09PWE/ZT49MTE/ZTplKzEyOiJwZXRhbmciPT09YXx8Im1hbGFtIj09PWE/ZSsxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1bmN0aW9uKGUsYSx0KXtyZXR1cm4gZTwxMT8icGFnaSI6ZTwxNT8idGVuZ2FoYXJpIjplPDE5PyJwZXRhbmciOiJtYWxhbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSGFyaSBpbmkgcHVrdWxdIExUIixuZXh0RGF5OiJbRXNvayBwdWt1bF0gTFQiLG5leHRXZWVrOiJkZGRkIFtwdWt1bF0gTFQiLGxhc3REYXk6IltLZWxtYXJpbiBwdWt1bF0gTFQiLGxhc3RXZWVrOiJkZGRkIFtsZXBhcyBwdWt1bF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImRhbGFtICVzIixwYXN0OiIlcyB5YW5nIGxlcGFzIixzOiJiZWJlcmFwYSBzYWF0IixtOiJzZW1pbml0IixtbToiJWQgbWluaXQiLGg6InNlamFtIixoaDoiJWQgamFtIixkOiJzZWhhcmkiLGRkOiIlZCBoYXJpIixNOiJzZWJ1bGFuIixNTToiJWQgYnVsYW4iLHk6InNldGFodW4iLHl5OiIlZCB0YWh1biJ9LHdlZWs6e2RvdzoxLGRveTo3fX0pO3JldHVybiBlfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoIm1zIiwibXMiLHtjbG9zZVRleHQ6IlR1dHVwIixwcmV2VGV4dDoiJiN4M0M7U2ViZWx1bSIsbmV4dFRleHQ6IlNlbGVwYXMmI3gzRTsiLGN1cnJlbnRUZXh0OiJoYXJpIGluaSIsbW9udGhOYW1lczpbIkphbnVhcmkiLCJGZWJydWFyaSIsIk1hYyIsIkFwcmlsIiwiTWVpIiwiSnVuIiwiSnVsYWkiLCJPZ29zIiwiU2VwdGVtYmVyIiwiT2t0b2JlciIsIk5vdmVtYmVyIiwiRGlzZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZWIiLCJNYWMiLCJBcHIiLCJNZWkiLCJKdW4iLCJKdWwiLCJPZ28iLCJTZXAiLCJPa3QiLCJOb3YiLCJEaXMiXSxkYXlOYW1lczpbIkFoYWQiLCJJc25pbiIsIlNlbGFzYSIsIlJhYnUiLCJLaGFtaXMiLCJKdW1hYXQiLCJTYWJ0dSJdLGRheU5hbWVzU2hvcnQ6WyJBaGEiLCJJc24iLCJTZWwiLCJSYWIiLCJraGEiLCJKdW0iLCJTYWIiXSxkYXlOYW1lc01pbjpbIkFoIiwiSXMiLCJTZSIsIlJhIiwiS2giLCJKdSIsIlNhIl0sd2Vla0hlYWRlcjoiTWciLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheTowLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJtcyIse2J1dHRvblRleHQ6e21vbnRoOiJCdWxhbiIsd2VlazoiTWluZ2d1IixkYXk6IkhhcmkiLGxpc3Q6IkFnZW5kYSJ9LGFsbERheVRleHQ6IlNlcGFuamFuZyBoYXJpIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihlKXtyZXR1cm4ibWFzaWggYWRhICIrZSsiIGFjYXJhIn0sbm9FdmVudHNNZXNzYWdlOiJUaWFkYSBwZXJpc3Rpd2EgdW50dWsgZGlwYXBhcmthbiJ9KX0oKSxmdW5jdGlvbigpeyFmdW5jdGlvbigpe3ZhciBlPWEuZGVmaW5lTG9jYWxlKCJtcy1teSIse21vbnRoczoiSmFudWFyaV9GZWJydWFyaV9NYWNfQXByaWxfTWVpX0p1bl9KdWxhaV9PZ29zX1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0Rpc2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRmViX01hY19BcHJfTWVpX0p1bl9KdWxfT2dzX1NlcF9Pa3RfTm92X0RpcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiQWhhZF9Jc25pbl9TZWxhc2FfUmFidV9LaGFtaXNfSnVtYWF0X1NhYnR1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkFoZF9Jc25fU2VsX1JhYl9LaGFfSnVtX1NhYiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiQWhfSXNfU2xfUmJfS21fSm1fU2IiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISC5tbSIsTFRTOiJISC5tbS5zcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIFtwdWt1bF0gSEgubW0ifSxtZXJpZGllbVBhcnNlOi9wYWdpfHRlbmdhaGFyaXxwZXRhbmd8bWFsYW0vLG1lcmlkaWVtSG91cjpmdW5jdGlvbihlLGEpe3JldHVybiAxMj09PWUmJihlPTApLCJwYWdpIj09PWE/ZToidGVuZ2FoYXJpIj09PWE/ZT49MTE/ZTplKzEyOiJwZXRhbmciPT09YXx8Im1hbGFtIj09PWE/ZSsxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1bmN0aW9uKGUsYSx0KXtyZXR1cm4gZTwxMT8icGFnaSI6ZTwxNT8idGVuZ2FoYXJpIjplPDE5PyJwZXRhbmciOiJtYWxhbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSGFyaSBpbmkgcHVrdWxdIExUIixuZXh0RGF5OiJbRXNvayBwdWt1bF0gTFQiLG5leHRXZWVrOiJkZGRkIFtwdWt1bF0gTFQiLGxhc3REYXk6IltLZWxtYXJpbiBwdWt1bF0gTFQiLGxhc3RXZWVrOiJkZGRkIFtsZXBhcyBwdWt1bF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImRhbGFtICVzIixwYXN0OiIlcyB5YW5nIGxlcGFzIixzOiJiZWJlcmFwYSBzYWF0IixtOiJzZW1pbml0IixtbToiJWQgbWluaXQiLGg6InNlamFtIixoaDoiJWQgamFtIixkOiJzZWhhcmkiLGRkOiIlZCBoYXJpIixNOiJzZWJ1bGFuIixNTToiJWQgYnVsYW4iLHk6InNldGFodW4iLHl5OiIlZCB0YWh1biJ9LHdlZWs6e2RvdzoxLGRveTo3fX0pO3JldHVybiBlfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoIm1zLW15IiwibXMiLHtjbG9zZVRleHQ6IlR1dHVwIixwcmV2VGV4dDoiJiN4M0M7U2ViZWx1bSIsbmV4dFRleHQ6IlNlbGVwYXMmI3gzRTsiLGN1cnJlbnRUZXh0OiJoYXJpIGluaSIsbW9udGhOYW1lczpbIkphbnVhcmkiLCJGZWJydWFyaSIsIk1hYyIsIkFwcmlsIiwiTWVpIiwiSnVuIiwiSnVsYWkiLCJPZ29zIiwiU2VwdGVtYmVyIiwiT2t0b2JlciIsIk5vdmVtYmVyIiwiRGlzZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZWIiLCJNYWMiLCJBcHIiLCJNZWkiLCJKdW4iLCJKdWwiLCJPZ28iLCJTZXAiLCJPa3QiLCJOb3YiLCJEaXMiXSxkYXlOYW1lczpbIkFoYWQiLCJJc25pbiIsIlNlbGFzYSIsIlJhYnUiLCJLaGFtaXMiLCJKdW1hYXQiLCJTYWJ0dSJdLGRheU5hbWVzU2hvcnQ6WyJBaGEiLCJJc24iLCJTZWwiLCJSYWIiLCJraGEiLCJKdW0iLCJTYWIiXSxkYXlOYW1lc01pbjpbIkFoIiwiSXMiLCJTZSIsIlJhIiwiS2giLCJKdSIsIlNhIl0sd2Vla0hlYWRlcjoiTWciLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheTowLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJtcy1teSIse2J1dHRvblRleHQ6e21vbnRoOiJCdWxhbiIsd2VlazoiTWluZ2d1IixkYXk6IkhhcmkiLGxpc3Q6IkFnZW5kYSJ9LGFsbERheVRleHQ6IlNlcGFuamFuZyBoYXJpIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihlKXtyZXR1cm4ibWFzaWggYWRhICIrZSsiIGFjYXJhIn0sbm9FdmVudHNNZXNzYWdlOiJUaWFkYSBwZXJpc3Rpd2EgdW50dWsgZGlwYXBhcmthbiJ9KX0oKSxmdW5jdGlvbigpeyFmdW5jdGlvbigpe3ZhciBlPWEuZGVmaW5lTG9jYWxlKCJuYiIse21vbnRoczoiamFudWFyX2ZlYnJ1YXJfbWFyc19hcHJpbF9tYWlfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZXNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuLl9mZWIuX21hcnNfYXByaWxfbWFpX2p1bmlfanVsaV9hdWcuX3NlcC5fb2t0Ll9ub3YuX2Rlcy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoic8O4bmRhZ19tYW5kYWdfdGlyc2RhZ19vbnNkYWdfdG9yc2RhZ19mcmVkYWdfbMO4cmRhZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJzw7guX21hLl90aS5fb24uX3RvLl9mci5fbMO4LiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoic8O4X21hX3RpX29uX3RvX2ZyX2zDuCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgW2tsLl0gSEg6bW0iLExMTEw6ImRkZGQgRC4gTU1NTSBZWVlZIFtrbC5dIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltpIGRhZyBrbC5dIExUIixuZXh0RGF5OiJbaSBtb3JnZW4ga2wuXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2tsLl0gTFQiLGxhc3REYXk6IltpIGfDpXIga2wuXSBMVCIsbGFzdFdlZWs6Iltmb3JyaWdlXSBkZGRkIFtrbC5dIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJvbSAlcyIscGFzdDoiJXMgc2lkZW4iLHM6Im5vZW4gc2VrdW5kZXIiLG06ImV0dCBtaW51dHQiLG1tOiIlZCBtaW51dHRlciIsaDoiZW4gdGltZSIsaGg6IiVkIHRpbWVyIixkOiJlbiBkYWciLGRkOiIlZCBkYWdlciIsTToiZW4gbcOlbmVkIixNTToiJWQgbcOlbmVkZXIiLHk6ImV0dCDDpXIiLHl5OiIlZCDDpXIifSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KTtyZXR1cm4gZX0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJuYiIsIm5iIix7Y2xvc2VUZXh0OiJMdWtrIixwcmV2VGV4dDoiJiN4QUI7Rm9ycmlnZSIsbmV4dFRleHQ6Ik5lc3RlJiN4QkI7IixjdXJyZW50VGV4dDoiSSBkYWciLG1vbnRoTmFtZXM6WyJqYW51YXIiLCJmZWJydWFyIiwibWFycyIsImFwcmlsIiwibWFpIiwianVuaSIsImp1bGkiLCJhdWd1c3QiLCJzZXB0ZW1iZXIiLCJva3RvYmVyIiwibm92ZW1iZXIiLCJkZXNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbImphbiIsImZlYiIsIm1hciIsImFwciIsIm1haSIsImp1biIsImp1bCIsImF1ZyIsInNlcCIsIm9rdCIsIm5vdiIsImRlcyJdLGRheU5hbWVzU2hvcnQ6WyJzw7huIiwibWFuIiwidGlyIiwib25zIiwidG9yIiwiZnJlIiwibMO4ciJdLGRheU5hbWVzOlsic8O4bmRhZyIsIm1hbmRhZyIsInRpcnNkYWciLCJvbnNkYWciLCJ0b3JzZGFnIiwiZnJlZGFnIiwibMO4cmRhZyJdLGRheU5hbWVzTWluOlsic8O4IiwibWEiLCJ0aSIsIm9uIiwidG8iLCJmciIsImzDuCJdLHdlZWtIZWFkZXI6IlVrZSIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoIm5iIix7YnV0dG9uVGV4dDp7bW9udGg6Ik3DpW5lZCIsd2VlazoiVWtlIixkYXk6IkRhZyIsbGlzdDoiQWdlbmRhIn0sYWxsRGF5VGV4dDoiSGVsZSBkYWdlbiIsZXZlbnRMaW1pdFRleHQ6InRpbCIsbm9FdmVudHNNZXNzYWdlOiJJbmdlbiBoZW5kZWxzZXIgw6UgdmlzZSJ9KX0oKSxmdW5jdGlvbigpeyFmdW5jdGlvbigpe3ZhciBlPSJqYW4uX2ZlYi5fbXJ0Ll9hcHIuX21laV9qdW4uX2p1bC5fYXVnLl9zZXAuX29rdC5fbm92Ll9kZWMuIi5zcGxpdCgiXyIpLHQ9Imphbl9mZWJfbXJ0X2Fwcl9tZWlfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVjIi5zcGxpdCgiXyIpLG49Wy9eamFuL2ksL15mZWIvaSwvXm1hYXJ0fG1ydC4/JC9pLC9eYXByL2ksL15tZWkkL2ksL15qdW5baS5dPyQvaSwvXmp1bFtpLl0/JC9pLC9eYXVnL2ksL15zZXAvaSwvXm9rdC9pLC9ebm92L2ksL15kZWMvaV0scj0vXihqYW51YXJpfGZlYnJ1YXJpfG1hYXJ0fGFwcmlsfG1laXxhcHJpbHxqdVtubF1pfGF1Z3VzdHVzfHNlcHRlbWJlcnxva3RvYmVyfG5vdmVtYmVyfGRlY2VtYmVyfGphblwuP3xmZWJcLj98bXJ0XC4/fGFwclwuP3xqdVtubF1cLj98YXVnXC4/fHNlcFwuP3xva3RcLj98bm92XC4/fGRlY1wuPykvaSxzPWEuZGVmaW5lTG9jYWxlKCJubCIse21vbnRoczoiamFudWFyaV9mZWJydWFyaV9tYWFydF9hcHJpbF9tZWlfanVuaV9qdWxpX2F1Z3VzdHVzX3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OmZ1bmN0aW9uKGEsbil7cmV0dXJuLy1NTU0tLy50ZXN0KG4pP3RbYS5tb250aCgpXTplW2EubW9udGgoKV19LG1vbnRoc1JlZ2V4OnIsbW9udGhzU2hvcnRSZWdleDpyLG1vbnRoc1N0cmljdFJlZ2V4Oi9eKGphbnVhcml8ZmVicnVhcml8bWFhcnR8bWVpfGp1W25sXWl8YXByaWx8YXVndXN0dXN8c2VwdGVtYmVyfG9rdG9iZXJ8bm92ZW1iZXJ8ZGVjZW1iZXIpL2ksbW9udGhzU2hvcnRTdHJpY3RSZWdleDovXihqYW5cLj98ZmViXC4/fG1ydFwuP3xhcHJcLj98bWVpfGp1W25sXVwuP3xhdWdcLj98c2VwXC4/fG9rdFwuP3xub3ZcLj98ZGVjXC4/KS9pLG1vbnRoc1BhcnNlOm4sbG9uZ01vbnRoc1BhcnNlOm4sc2hvcnRNb250aHNQYXJzZTpuLHdlZWtkYXlzOiJ6b25kYWdfbWFhbmRhZ19kaW5zZGFnX3dvZW5zZGFnX2RvbmRlcmRhZ192cmlqZGFnX3phdGVyZGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InpvLl9tYS5fZGkuX3dvLl9kby5fdnIuX3phLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiWm9fTWFfRGlfV29fRG9fVnJfWmEiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELU1NLVlZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbdmFuZGFhZyBvbV0gTFQiLG5leHREYXk6Ilttb3JnZW4gb21dIExUIixuZXh0V2VlazoiZGRkZCBbb21dIExUIiwKbGFzdERheToiW2dpc3RlcmVuIG9tXSBMVCIsbGFzdFdlZWs6IlthZmdlbG9wZW5dIGRkZGQgW29tXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToib3ZlciAlcyIscGFzdDoiJXMgZ2VsZWRlbiIsczoiZWVuIHBhYXIgc2Vjb25kZW4iLG06IsOpw6luIG1pbnV1dCIsbW06IiVkIG1pbnV0ZW4iLGg6IsOpw6luIHV1ciIsaGg6IiVkIHV1ciIsZDoiw6nDqW4gZGFnIixkZDoiJWQgZGFnZW4iLE06IsOpw6luIG1hYW5kIixNTToiJWQgbWFhbmRlbiIseToiw6nDqW4gamFhciIseXk6IiVkIGphYXIifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0oc3RlfGRlKS8sb3JkaW5hbDpmdW5jdGlvbihlKXtyZXR1cm4gZSsoMT09PWV8fDg9PT1lfHxlPj0yMD8ic3RlIjoiZGUiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSk7cmV0dXJuIHN9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgibmwiLCJubCIse2Nsb3NlVGV4dDoiU2x1aXRlbiIscHJldlRleHQ6IuKGkCIsbmV4dFRleHQ6IuKGkiIsY3VycmVudFRleHQ6IlZhbmRhYWciLG1vbnRoTmFtZXM6WyJqYW51YXJpIiwiZmVicnVhcmkiLCJtYWFydCIsImFwcmlsIiwibWVpIiwianVuaSIsImp1bGkiLCJhdWd1c3R1cyIsInNlcHRlbWJlciIsIm9rdG9iZXIiLCJub3ZlbWJlciIsImRlY2VtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiamFuIiwiZmViIiwibXJ0IiwiYXByIiwibWVpIiwianVuIiwianVsIiwiYXVnIiwic2VwIiwib2t0Iiwibm92IiwiZGVjIl0sZGF5TmFtZXM6WyJ6b25kYWciLCJtYWFuZGFnIiwiZGluc2RhZyIsIndvZW5zZGFnIiwiZG9uZGVyZGFnIiwidnJpamRhZyIsInphdGVyZGFnIl0sZGF5TmFtZXNTaG9ydDpbInpvbiIsIm1hYSIsImRpbiIsIndvZSIsImRvbiIsInZyaSIsInphdCJdLGRheU5hbWVzTWluOlsiem8iLCJtYSIsImRpIiwid28iLCJkbyIsInZyIiwiemEiXSx3ZWVrSGVhZGVyOiJXayIsZGF0ZUZvcm1hdDoiZGQtbW0teXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoIm5sIix7YnV0dG9uVGV4dDp7bW9udGg6Ik1hYW5kIix3ZWVrOiJXZWVrIixkYXk6IkRhZyIsbGlzdDoiQWdlbmRhIn0sYWxsRGF5VGV4dDoiSGVsZSBkYWciLGV2ZW50TGltaXRUZXh0OiJleHRyYSIsbm9FdmVudHNNZXNzYWdlOiJHZWVuIGV2ZW5lbWVudGVuIG9tIHRlIGxhdGVuIHppZW4ifSl9KCksZnVuY3Rpb24oKXshZnVuY3Rpb24oKXt2YXIgZT0iamFuLl9mZWIuX21ydC5fYXByLl9tZWlfanVuLl9qdWwuX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVjLiIuc3BsaXQoIl8iKSx0PSJqYW5fZmViX21ydF9hcHJfbWVpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYyIuc3BsaXQoIl8iKSxuPVsvXmphbi9pLC9eZmViL2ksL15tYWFydHxtcnQuPyQvaSwvXmFwci9pLC9ebWVpJC9pLC9eanVuW2kuXT8kL2ksL15qdWxbaS5dPyQvaSwvXmF1Zy9pLC9ec2VwL2ksL15va3QvaSwvXm5vdi9pLC9eZGVjL2ldLHI9L14oamFudWFyaXxmZWJydWFyaXxtYWFydHxhcHJpbHxtZWl8YXByaWx8anVbbmxdaXxhdWd1c3R1c3xzZXB0ZW1iZXJ8b2t0b2Jlcnxub3ZlbWJlcnxkZWNlbWJlcnxqYW5cLj98ZmViXC4/fG1ydFwuP3xhcHJcLj98anVbbmxdXC4/fGF1Z1wuP3xzZXBcLj98b2t0XC4/fG5vdlwuP3xkZWNcLj8pL2kscz1hLmRlZmluZUxvY2FsZSgibmwtYmUiLHttb250aHM6ImphbnVhcmlfZmVicnVhcmlfbWFhcnRfYXByaWxfbWVpX2p1bmlfanVsaV9hdWd1c3R1c19zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDpmdW5jdGlvbihhLG4pe3JldHVybi8tTU1NLS8udGVzdChuKT90W2EubW9udGgoKV06ZVthLm1vbnRoKCldfSxtb250aHNSZWdleDpyLG1vbnRoc1Nob3J0UmVnZXg6cixtb250aHNTdHJpY3RSZWdleDovXihqYW51YXJpfGZlYnJ1YXJpfG1hYXJ0fG1laXxqdVtubF1pfGFwcmlsfGF1Z3VzdHVzfHNlcHRlbWJlcnxva3RvYmVyfG5vdmVtYmVyfGRlY2VtYmVyKS9pLG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6L14oamFuXC4/fGZlYlwuP3xtcnRcLj98YXByXC4/fG1laXxqdVtubF1cLj98YXVnXC4/fHNlcFwuP3xva3RcLj98bm92XC4/fGRlY1wuPykvaSxtb250aHNQYXJzZTpuLGxvbmdNb250aHNQYXJzZTpuLHNob3J0TW9udGhzUGFyc2U6bix3ZWVrZGF5czoiem9uZGFnX21hYW5kYWdfZGluc2RhZ193b2Vuc2RhZ19kb25kZXJkYWdfdnJpamRhZ196YXRlcmRhZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJ6by5fbWEuX2RpLl93by5fZG8uX3ZyLl96YS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlpvX01hX0RpX1dvX0RvX1ZyX1phIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW3ZhbmRhYWcgb21dIExUIixuZXh0RGF5OiJbbW9yZ2VuIG9tXSBMVCIsbmV4dFdlZWs6ImRkZGQgW29tXSBMVCIsbGFzdERheToiW2dpc3RlcmVuIG9tXSBMVCIsbGFzdFdlZWs6IlthZmdlbG9wZW5dIGRkZGQgW29tXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToib3ZlciAlcyIscGFzdDoiJXMgZ2VsZWRlbiIsczoiZWVuIHBhYXIgc2Vjb25kZW4iLG06IsOpw6luIG1pbnV1dCIsbW06IiVkIG1pbnV0ZW4iLGg6IsOpw6luIHV1ciIsaGg6IiVkIHV1ciIsZDoiw6nDqW4gZGFnIixkZDoiJWQgZGFnZW4iLE06IsOpw6luIG1hYW5kIixNTToiJWQgbWFhbmRlbiIseToiw6nDqW4gamFhciIseXk6IiVkIGphYXIifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0oc3RlfGRlKS8sb3JkaW5hbDpmdW5jdGlvbihlKXtyZXR1cm4gZSsoMT09PWV8fDg9PT1lfHxlPj0yMD8ic3RlIjoiZGUiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSk7cmV0dXJuIHN9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgibmwtYmUiLCJubC1CRSIse2Nsb3NlVGV4dDoiU2x1aXRlbiIscHJldlRleHQ6IuKGkCIsbmV4dFRleHQ6IuKGkiIsY3VycmVudFRleHQ6IlZhbmRhYWciLG1vbnRoTmFtZXM6WyJqYW51YXJpIiwiZmVicnVhcmkiLCJtYWFydCIsImFwcmlsIiwibWVpIiwianVuaSIsImp1bGkiLCJhdWd1c3R1cyIsInNlcHRlbWJlciIsIm9rdG9iZXIiLCJub3ZlbWJlciIsImRlY2VtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiamFuIiwiZmViIiwibXJ0IiwiYXByIiwibWVpIiwianVuIiwianVsIiwiYXVnIiwic2VwIiwib2t0Iiwibm92IiwiZGVjIl0sZGF5TmFtZXM6WyJ6b25kYWciLCJtYWFuZGFnIiwiZGluc2RhZyIsIndvZW5zZGFnIiwiZG9uZGVyZGFnIiwidnJpamRhZyIsInphdGVyZGFnIl0sZGF5TmFtZXNTaG9ydDpbInpvbiIsIm1hYSIsImRpbiIsIndvZSIsImRvbiIsInZyaSIsInphdCJdLGRheU5hbWVzTWluOlsiem8iLCJtYSIsImRpIiwid28iLCJkbyIsInZyIiwiemEiXSx3ZWVrSGVhZGVyOiJXayIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoIm5sLWJlIix7YnV0dG9uVGV4dDp7bW9udGg6Ik1hYW5kIix3ZWVrOiJXZWVrIixkYXk6IkRhZyIsbGlzdDoiQWdlbmRhIn0sYWxsRGF5VGV4dDoiSGVsZSBkYWciLGV2ZW50TGltaXRUZXh0OiJleHRyYSIsbm9FdmVudHNNZXNzYWdlOiJHZWVuIGV2ZW5lbWVudGVuIG9tIHRlIGxhdGVuIHppZW4ifSl9KCksZnVuY3Rpb24oKXshZnVuY3Rpb24oKXt2YXIgZT1hLmRlZmluZUxvY2FsZSgibm4iLHttb250aHM6ImphbnVhcl9mZWJydWFyX21hcnNfYXByaWxfbWFpX2p1bmlfanVsaV9hdWd1c3Rfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVzZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbl9mZWJfbWFyX2Fwcl9tYWlfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVzIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJzdW5kYWdfbcOlbmRhZ190eXNkYWdfb25zZGFnX3RvcnNkYWdfZnJlZGFnX2xhdXJkYWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoic3VuX23DpW5fdHlzX29uc190b3JfZnJlX2xhdSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoic3VfbcOlX3R5X29uX3RvX2ZyX2zDuCIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBba2wuXSBIOm1tIixMTExMOiJkZGRkIEQuIE1NTU0gWVlZWSBba2wuXSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSSBkYWcga2xva2thXSBMVCIsbmV4dERheToiW0kgbW9yZ29uIGtsb2trYV0gTFQiLG5leHRXZWVrOiJkZGRkIFtrbG9ra2FdIExUIixsYXN0RGF5OiJbSSBnw6VyIGtsb2trYV0gTFQiLGxhc3RXZWVrOiJbRsO4cmVnw6VhbmRlXSBkZGRkIFtrbG9ra2FdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJvbSAlcyIscGFzdDoiJXMgc2lkYW4iLHM6Im5va3JlIHNla3VuZCIsbToiZWl0IG1pbnV0dCIsbW06IiVkIG1pbnV0dCIsaDoiZWluIHRpbWUiLGhoOiIlZCB0aW1hciIsZDoiZWluIGRhZyIsZGQ6IiVkIGRhZ2FyIixNOiJlaW4gbcOlbmFkIixNTToiJWQgbcOlbmFkZXIiLHk6ImVpdCDDpXIiLHl5OiIlZCDDpXIifSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KTtyZXR1cm4gZX0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJubiIsIm5uIix7Y2xvc2VUZXh0OiJMdWtrIixwcmV2VGV4dDoiJiN4QUI7RsO4cnJlIixuZXh0VGV4dDoiTmVzdGUmI3hCQjsiLGN1cnJlbnRUZXh0OiJJIGRhZyIsbW9udGhOYW1lczpbImphbnVhciIsImZlYnJ1YXIiLCJtYXJzIiwiYXByaWwiLCJtYWkiLCJqdW5pIiwianVsaSIsImF1Z3VzdCIsInNlcHRlbWJlciIsIm9rdG9iZXIiLCJub3ZlbWJlciIsImRlc2VtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiamFuIiwiZmViIiwibWFyIiwiYXByIiwibWFpIiwianVuIiwianVsIiwiYXVnIiwic2VwIiwib2t0Iiwibm92IiwiZGVzIl0sZGF5TmFtZXNTaG9ydDpbInN1biIsIm3DpW4iLCJ0eXMiLCJvbnMiLCJ0b3IiLCJmcmUiLCJsYXUiXSxkYXlOYW1lczpbInN1bmRhZyIsIm3DpW5kYWciLCJ0eXNkYWciLCJvbnNkYWciLCJ0b3JzZGFnIiwiZnJlZGFnIiwibGF1cmRhZyJdLGRheU5hbWVzTWluOlsic3UiLCJtw6UiLCJ0eSIsIm9uIiwidG8iLCJmciIsImxhIl0sd2Vla0hlYWRlcjoiVmVrZSIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoIm5uIix7YnV0dG9uVGV4dDp7bW9udGg6Ik3DpW5hZCIsd2VlazoiVmVrZSIsZGF5OiJEYWciLGxpc3Q6IkFnZW5kYSJ9LGFsbERheVRleHQ6IkhlaWxlIGRhZ2VuIixldmVudExpbWl0VGV4dDoidGlsIixub0V2ZW50c01lc3NhZ2U6IkluZ2VuIGhlbmRlbHNlciDDpSB2aXNlIn0pfSgpLGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4gZSUxMDw1JiZlJTEwPjEmJn5+KGUvMTApJTEwIT09MX1mdW5jdGlvbiB0KGEsdCxuKXt2YXIgcj1hKyIgIjtzd2l0Y2gobil7Y2FzZSJtIjpyZXR1cm4gdD8ibWludXRhIjoibWludXTEmSI7Y2FzZSJtbSI6cmV0dXJuIHIrKGUoYSk/Im1pbnV0eSI6Im1pbnV0Iik7Y2FzZSJoIjpyZXR1cm4gdD8iZ29kemluYSI6ImdvZHppbsSZIjtjYXNlImhoIjpyZXR1cm4gcisoZShhKT8iZ29kemlueSI6ImdvZHppbiIpO2Nhc2UiTU0iOnJldHVybiByKyhlKGEpPyJtaWVzacSFY2UiOiJtaWVzacSZY3kiKTtjYXNlInl5IjpyZXR1cm4gcisoZShhKT8ibGF0YSI6ImxhdCIpfX12YXIgbj0ic3R5Y3plxYRfbHV0eV9tYXJ6ZWNfa3dpZWNpZcWEX21hal9jemVyd2llY19saXBpZWNfc2llcnBpZcWEX3dyemVzaWXFhF9wYcW6ZHppZXJuaWtfbGlzdG9wYWRfZ3J1ZHppZcWEIi5zcGxpdCgiXyIpLHI9InN0eWN6bmlhX2x1dGVnb19tYXJjYV9rd2lldG5pYV9tYWphX2N6ZXJ3Y2FfbGlwY2Ffc2llcnBuaWFfd3J6ZcWbbmlhX3Bhxbpkemllcm5pa2FfbGlzdG9wYWRhX2dydWRuaWEiLnNwbGl0KCJfIikscz1hLmRlZmluZUxvY2FsZSgicGwiLHttb250aHM6ZnVuY3Rpb24oZSxhKXtyZXR1cm4iIj09PWE/IigiK3JbZS5tb250aCgpXSsifCIrbltlLm1vbnRoKCldKyIpIjovRCBNTU1NLy50ZXN0KGEpP3JbZS5tb250aCgpXTpuW2UubW9udGgoKV19LG1vbnRoc1Nob3J0OiJzdHlfbHV0X21hcl9rd2lfbWFqX2N6ZV9saXBfc2llX3dyel9wYcW6X2xpc19ncnUiLnNwbGl0KCJfIiksd2Vla2RheXM6Im5pZWR6aWVsYV9wb25pZWR6aWHFgmVrX3d0b3Jla1/Fm3JvZGFfY3p3YXJ0ZWtfcGnEhXRla19zb2JvdGEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoibmR6X3Bvbl93dF/Fm3JfY3p3X3B0X3NvYiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiTmRfUG5fV3RfxZpyX0N6X1B0X1NvIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0R6acWbIG9dIExUIixuZXh0RGF5OiJbSnV0cm8gb10gTFQiLG5leHRXZWVrOiJbV10gZGRkZCBbb10gTFQiLGxhc3REYXk6IltXY3pvcmFqIG9dIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIltXIHplc3rFgsSFIG5pZWR6aWVsxJkgb10gTFQiO2Nhc2UgMzpyZXR1cm4iW1cgemVzesWCxIUgxZtyb2TEmSBvXSBMVCI7Y2FzZSA2OnJldHVybiJbVyB6ZXN6xYLEhSBzb2JvdMSZIG9dIExUIjtkZWZhdWx0OnJldHVybiJbVyB6ZXN6xYJ5XSBkZGRkIFtvXSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJ6YSAlcyIscGFzdDoiJXMgdGVtdSIsczoia2lsa2Egc2VrdW5kIixtOnQsbW06dCxoOnQsaGg6dCxkOiIxIGR6aWXFhCIsZGQ6IiVkIGRuaSIsTToibWllc2nEhWMiLE1NOnQseToicm9rIix5eTp0fSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KTtyZXR1cm4gc30oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJwbCIsInBsIix7Y2xvc2VUZXh0OiJaYW1rbmlqIixwcmV2VGV4dDoiJiN4M0M7UG9wcnplZG5pIixuZXh0VGV4dDoiTmFzdMSZcG55JiN4M0U7IixjdXJyZW50VGV4dDoiRHppxZsiLG1vbnRoTmFtZXM6WyJTdHljemXFhCIsIkx1dHkiLCJNYXJ6ZWMiLCJLd2llY2llxYQiLCJNYWoiLCJDemVyd2llYyIsIkxpcGllYyIsIlNpZXJwaWXFhCIsIldyemVzaWXFhCIsIlBhxbpkemllcm5payIsIkxpc3RvcGFkIiwiR3J1ZHppZcWEIl0sbW9udGhOYW1lc1Nob3J0OlsiU3R5IiwiTHUiLCJNYXIiLCJLdyIsIk1haiIsIkN6ZSIsIkxpcCIsIlNpZSIsIldyeiIsIlBhIiwiTGlzIiwiR3J1Il0sZGF5TmFtZXM6WyJOaWVkemllbGEiLCJQb25pZWR6aWHFgmVrIiwiV3RvcmVrIiwixZpyb2RhIiwiQ3p3YXJ0ZWsiLCJQacSFdGVrIiwiU29ib3RhIl0sZGF5TmFtZXNTaG9ydDpbIk5pZSIsIlBuIiwiV3QiLCLFmnIiLCJDenciLCJQdCIsIlNvIl0sZGF5TmFtZXNNaW46WyJOIiwiUG4iLCJXdCIsIsWaciIsIkN6IiwiUHQiLCJTbyJdLHdlZWtIZWFkZXI6IlR5ZHoiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJwbCIse2J1dHRvblRleHQ6e21vbnRoOiJNaWVzacSFYyIsd2VlazoiVHlkemllxYQiLGRheToiRHppZcWEIixsaXN0OiJQbGFuIGRuaWEifSxhbGxEYXlUZXh0OiJDYcWCeSBkemllxYQiLGV2ZW50TGltaXRUZXh0OiJ3acSZY2VqIixub0V2ZW50c01lc3NhZ2U6IkJyYWsgd3lkYXJ6ZcWEIGRvIHd5xZt3aWV0bGVuaWEifSl9KCksZnVuY3Rpb24oKXshZnVuY3Rpb24oKXt2YXIgZT1hLmRlZmluZUxvY2FsZSgicHQiLHttb250aHM6IkphbmVpcm9fRmV2ZXJlaXJvX01hcsOnb19BYnJpbF9NYWlvX0p1bmhvX0p1bGhvX0Fnb3N0b19TZXRlbWJyb19PdXR1YnJvX05vdmVtYnJvX0RlemVtYnJvIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRmV2X01hcl9BYnJfTWFpX0p1bl9KdWxfQWdvX1NldF9PdXRfTm92X0RleiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiRG9taW5nb19TZWd1bmRhLUZlaXJhX1RlcsOnYS1GZWlyYV9RdWFydGEtRmVpcmFfUXVpbnRhLUZlaXJhX1NleHRhLUZlaXJhX1PDoWJhZG8iLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiRG9tX1NlZ19UZXJfUXVhX1F1aV9TZXhfU8OhYiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiRG9tXzLCql8zwqpfNMKqXzXCql82wqpfU8OhYiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSIsTExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSG9qZSDDoHNdIExUIixuZXh0RGF5OiJbQW1hbmjDoyDDoHNdIExUIixuZXh0V2VlazoiZGRkZCBbw6BzXSBMVCIsbGFzdERheToiW09udGVtIMOgc10gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLmRheSgpfHw2PT09dGhpcy5kYXkoKT8iW8OabHRpbW9dIGRkZGQgW8Ogc10gTFQiOiJbw5psdGltYV0gZGRkZCBbw6BzXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImVtICVzIixwYXN0OiJow6EgJXMiLHM6InNlZ3VuZG9zIixtOiJ1bSBtaW51dG8iLG1tOiIlZCBtaW51dG9zIixoOiJ1bWEgaG9yYSIsaGg6IiVkIGhvcmFzIixkOiJ1bSBkaWEiLGRkOiIlZCBkaWFzIixNOiJ1bSBtw6pzIixNTToiJWQgbWVzZXMiLHk6InVtIGFubyIseXk6IiVkIGFub3MifSxvcmRpbmFsUGFyc2U6L1xkezEsMn3Cui8sb3JkaW5hbDoiJWTCuiIsd2Vlazp7ZG93OjEsZG95OjR9fSk7cmV0dXJuIGV9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgicHQiLCJwdCIse2Nsb3NlVGV4dDoiRmVjaGFyIixwcmV2VGV4dDoiQW50ZXJpb3IiLG5leHRUZXh0OiJTZWd1aW50ZSIsY3VycmVudFRleHQ6IkhvamUiLG1vbnRoTmFtZXM6WyJKYW5laXJvIiwiRmV2ZXJlaXJvIiwiTWFyw6dvIiwiQWJyaWwiLCJNYWlvIiwiSnVuaG8iLCJKdWxobyIsIkFnb3N0byIsIlNldGVtYnJvIiwiT3V0dWJybyIsIk5vdmVtYnJvIiwiRGV6ZW1icm8iXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZXYiLCJNYXIiLCJBYnIiLCJNYWkiLCJKdW4iLCJKdWwiLCJBZ28iLCJTZXQiLCJPdXQiLCJOb3YiLCJEZXoiXSxkYXlOYW1lczpbIkRvbWluZ28iLCJTZWd1bmRhLWZlaXJhIiwiVGVyw6dhLWZlaXJhIiwiUXVhcnRhLWZlaXJhIiwiUXVpbnRhLWZlaXJhIiwiU2V4dGEtZmVpcmEiLCJTw6FiYWRvIl0sZGF5TmFtZXNTaG9ydDpbIkRvbSIsIlNlZyIsIlRlciIsIlF1YSIsIlF1aSIsIlNleCIsIlPDoWIiXSxkYXlOYW1lc01pbjpbIkRvbSIsIlNlZyIsIlRlciIsIlF1YSIsIlF1aSIsIlNleCIsIlPDoWIiXSx3ZWVrSGVhZGVyOiJTZW0iLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheTowLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJwdCIse2J1dHRvblRleHQ6e21vbnRoOiJNw6pzIix3ZWVrOiJTZW1hbmEiLGRheToiRGlhIixsaXN0OiJBZ2VuZGEifSxhbGxEYXlUZXh0OiJUb2RvIG8gZGlhIixldmVudExpbWl0VGV4dDoibWFpcyIsbm9FdmVudHNNZXNzYWdlOiJOw6NvIGjDoSBldmVudG9zIHBhcmEgbW9zdHJhciJ9KX0oKSxmdW5jdGlvbigpeyFmdW5jdGlvbigpe3ZhciBlPWEuZGVmaW5lTG9jYWxlKCJwdC1iciIse21vbnRoczoiSmFuZWlyb19GZXZlcmVpcm9fTWFyw6dvX0FicmlsX01haW9fSnVuaG9fSnVsaG9fQWdvc3RvX1NldGVtYnJvX091dHVicm9fTm92ZW1icm9fRGV6ZW1icm8iLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZXZfTWFyX0Ficl9NYWlfSnVuX0p1bF9BZ29fU2V0X091dF9Ob3ZfRGV6Ii5zcGxpdCgiXyIpLHdlZWtkYXlzOiJEb21pbmdvX1NlZ3VuZGEtZmVpcmFfVGVyw6dhLWZlaXJhX1F1YXJ0YS1mZWlyYV9RdWludGEtZmVpcmFfU2V4dGEtZmVpcmFfU8OhYmFkbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJEb21fU2VnX1Rlcl9RdWFfUXVpX1NleF9Tw6FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJEb21fMsKqXzPCql80wqpfNcKqXzbCql9Tw6FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIixMTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSBbw6BzXSBISDptbSIsTExMTDoiZGRkZCwgRCBbZGVdIE1NTU0gW2RlXSBZWVlZIFvDoHNdIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltIb2plIMOgc10gTFQiLG5leHREYXk6IltBbWFuaMOjIMOgc10gTFQiLG5leHRXZWVrOiJkZGRkIFvDoHNdIExUIixsYXN0RGF5OiJbT250ZW0gw6BzXSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuZGF5KCl8fDY9PT10aGlzLmRheSgpPyJbw5psdGltb10gZGRkZCBbw6BzXSBMVCI6IlvDmmx0aW1hXSBkZGRkIFvDoHNdIExUIn0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZW0gJXMiLHBhc3Q6IiVzIGF0csOhcyIsczoicG91Y29zIHNlZ3VuZG9zIixtOiJ1bSBtaW51dG8iLG1tOiIlZCBtaW51dG9zIixoOiJ1bWEgaG9yYSIsaGg6IiVkIGhvcmFzIixkOiJ1bSBkaWEiLGRkOiIlZCBkaWFzIixNOiJ1bSBtw6pzIixNTToiJWQgbWVzZXMiLHk6InVtIGFubyIseXk6IiVkIGFub3MifSxvcmRpbmFsUGFyc2U6L1xkezEsMn3Cui8sb3JkaW5hbDoiJWTCuiJ9KTtyZXR1cm4gZX0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJwdC1iciIsInB0LUJSIix7Y2xvc2VUZXh0OiJGZWNoYXIiLHByZXZUZXh0OiImI3gzQztBbnRlcmlvciIsbmV4dFRleHQ6IlByw7N4aW1vJiN4M0U7IixjdXJyZW50VGV4dDoiSG9qZSIsbW9udGhOYW1lczpbIkphbmVpcm8iLCJGZXZlcmVpcm8iLCJNYXLDp28iLCJBYnJpbCIsIk1haW8iLCJKdW5obyIsIkp1bGhvIiwiQWdvc3RvIiwiU2V0ZW1icm8iLCJPdXR1YnJvIiwiTm92ZW1icm8iLCJEZXplbWJybyJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZldiIsIk1hciIsIkFiciIsIk1haSIsIkp1biIsIkp1bCIsIkFnbyIsIlNldCIsIk91dCIsIk5vdiIsIkRleiJdLGRheU5hbWVzOlsiRG9taW5nbyIsIlNlZ3VuZGEtZmVpcmEiLCJUZXLDp2EtZmVpcmEiLCJRdWFydGEtZmVpcmEiLCJRdWludGEtZmVpcmEiLCJTZXh0YS1mZWlyYSIsIlPDoWJhZG8iXSxkYXlOYW1lc1Nob3J0OlsiRG9tIiwiU2VnIiwiVGVyIiwiUXVhIiwiUXVpIiwiU2V4IiwiU8OhYiJdLGRheU5hbWVzTWluOlsiRG9tIiwiU2VnIiwiVGVyIiwiUXVhIiwiUXVpIiwiU2V4IiwiU8OhYiJdLHdlZWtIZWFkZXI6IlNtIixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MCxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgicHQtYnIiLHtidXR0b25UZXh0Onttb250aDoiTcOqcyIsd2VlazoiU2VtYW5hIixkYXk6IkRpYSIsbGlzdDoiQ29tcHJvbWlzc29zIn0sYWxsRGF5VGV4dDoiZGlhIGludGVpcm8iLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGUpe3JldHVybiJtYWlzICsiK2V9LG5vRXZlbnRzTWVzc2FnZToiTsOjbyBow6EgZXZlbnRvcyBwYXJhIG1vc3RyYXIifSl9KCksZnVuY3Rpb24oKXshZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsYSx0KXt2YXIgbj17bW06Im1pbnV0ZSIsaGg6Im9yZSIsZGQ6InppbGUiLE1NOiJsdW5pIix5eToiYW5pIn0scj0iICI7cmV0dXJuKGUlMTAwPj0yMHx8ZT49MTAwJiZlJTEwMD09PTApJiYocj0iIGRlICIpLGUrcituW3RdfXZhciB0PWEuZGVmaW5lTG9jYWxlKCJybyIse21vbnRoczoiaWFudWFyaWVfZmVicnVhcmllX21hcnRpZV9hcHJpbGllX21haV9pdW5pZV9pdWxpZV9hdWd1c3Rfc2VwdGVtYnJpZV9vY3RvbWJyaWVfbm9pZW1icmllX2RlY2VtYnJpZSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiaWFuLl9mZWJyLl9tYXJ0Ll9hcHIuX21haV9pdW4uX2l1bC5fYXVnLl9zZXB0Ll9vY3QuX25vdi5fZGVjLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJkdW1pbmljxINfbHVuaV9tYXLIm2lfbWllcmN1cmlfam9pX3ZpbmVyaV9zw6JtYsSDdMSDIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkR1bV9MdW5fTWFyX01pZV9Kb2lfVmluX1PDom0iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkR1X0x1X01hX01pX0pvX1ZpX1PDoiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2F6aSBsYV0gTFQiLG5leHREYXk6Ilttw6JpbmUgbGFdIExUIixuZXh0V2VlazoiZGRkZCBbbGFdIExUIixsYXN0RGF5OiJbaWVyaSBsYV0gTFQiLGxhc3RXZWVrOiJbZm9zdGFdIGRkZGQgW2xhXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToicGVzdGUgJXMiLHBhc3Q6IiVzIMOubiB1cm3EgyIsczoiY8OidGV2YSBzZWN1bmRlIixtOiJ1biBtaW51dCIsbW06ZSxoOiJvIG9yxIMiLGhoOmUsZDoibyB6aSIsZGQ6ZSxNOiJvIGx1bsSDIixNTTplLHk6InVuIGFuIix5eTplfSx3ZWVrOntkb3c6MSxkb3k6N319KTtyZXR1cm4gdH0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJybyIsInJvIix7Y2xvc2VUZXh0OiLDjm5jaGlkZSIscHJldlRleHQ6IiYjeEFCOyBMdW5hIHByZWNlZGVudMSDIixuZXh0VGV4dDoiTHVuYSB1cm3Eg3RvYXJlICYjeEJCOyIsY3VycmVudFRleHQ6IkF6aSIsbW9udGhOYW1lczpbIklhbnVhcmllIiwiRmVicnVhcmllIiwiTWFydGllIiwiQXByaWxpZSIsIk1haSIsIkl1bmllIiwiSXVsaWUiLCJBdWd1c3QiLCJTZXB0ZW1icmllIiwiT2N0b21icmllIiwiTm9pZW1icmllIiwiRGVjZW1icmllIl0sbW9udGhOYW1lc1Nob3J0OlsiSWFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWFpIiwiSXVuIiwiSXVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sZGF5TmFtZXM6WyJEdW1pbmljxIMiLCJMdW5pIiwiTWFyxaNpIiwiTWllcmN1cmkiLCJKb2kiLCJWaW5lcmkiLCJTw6JtYsSDdMSDIl0sZGF5TmFtZXNTaG9ydDpbIkR1bSIsIkx1biIsIk1hciIsIk1pZSIsIkpvaSIsIlZpbiIsIlPDom0iXSxkYXlOYW1lc01pbjpbIkR1IiwiTHUiLCJNYSIsIk1pIiwiSm8iLCJWaSIsIlPDoiJdLHdlZWtIZWFkZXI6IlPEg3B0IixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgicm8iLHtidXR0b25UZXh0OntwcmV2OiJwcmVjZWRlbnTEgyIsbmV4dDoidXJtxIN0b2FyZSIsbW9udGg6Ikx1bsSDIix3ZWVrOiJTxINwdMSDbcOibsSDIixkYXk6IlppIixsaXN0OiJBZ2VuZMSDIn0sYWxsRGF5VGV4dDoiVG9hdMSDIHppdWEiLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGUpe3JldHVybiIrYWx0ZSAiK2V9LG5vRXZlbnRzTWVzc2FnZToiTnUgZXhpc3TEgyBldmVuaW1lbnRlIGRlIGFmaciZYXQifSl9KCksZnVuY3Rpb24oKXshZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsYSl7dmFyIHQ9ZS5zcGxpdCgiXyIpO3JldHVybiBhJTEwPT09MSYmYSUxMDAhPT0xMT90WzBdOmElMTA+PTImJmElMTA8PTQmJihhJTEwMDwxMHx8YSUxMDA+PTIwKT90WzFdOnRbMl19ZnVuY3Rpb24gdChhLHQsbil7dmFyIHI9e21tOnQ/ItC80LjQvdGD0YLQsF/QvNC40L3Rg9GC0Ytf0LzQuNC90YPRgiI6ItC80LjQvdGD0YLRg1/QvNC40L3Rg9GC0Ytf0LzQuNC90YPRgiIsaGg6ItGH0LDRgV/Rh9Cw0YHQsF/Rh9Cw0YHQvtCyIixkZDoi0LTQtdC90Yxf0LTQvdGPX9C00L3QtdC5IixNTToi0LzQtdGB0Y/Rhl/QvNC10YHRj9GG0LBf0LzQtdGB0Y/RhtC10LIiLHl5OiLQs9C+0LRf0LPQvtC00LBf0LvQtdGCIn07cmV0dXJuIm0iPT09bj90PyLQvNC40L3Rg9GC0LAiOiLQvNC40L3Rg9GC0YMiOmErIiAiK2UocltuXSwrYSl9dmFyIG49Wy9e0Y/QvdCyL2ksL17RhNC10LIvaSwvXtC80LDRgC9pLC9e0LDQv9GAL2ksL17QvNCwW9C50Y9dL2ksL17QuNGO0L0vaSwvXtC40Y7Quy9pLC9e0LDQstCzL2ksL17RgdC10L0vaSwvXtC+0LrRgi9pLC9e0L3QvtGPL2ksL17QtNC10LovaV0scj1hLmRlZmluZUxvY2FsZSgicnUiLHttb250aHM6e2Zvcm1hdDoi0Y/QvdCy0LDRgNGPX9GE0LXQstGA0LDQu9GPX9C80LDRgNGC0LBf0LDQv9GA0LXQu9GPX9C80LDRj1/QuNGO0L3Rj1/QuNGO0LvRj1/QsNCy0LPRg9GB0YLQsF/RgdC10L3RgtGP0LHRgNGPX9C+0LrRgtGP0LHRgNGPX9C90L7Rj9Cx0YDRj1/QtNC10LrQsNCx0YDRjyIuc3BsaXQoIl8iKSxzdGFuZGFsb25lOiLRj9C90LLQsNGA0Yxf0YTQtdCy0YDQsNC70Yxf0LzQsNGA0YJf0LDQv9GA0LXQu9GMX9C80LDQuV/QuNGO0L3RjF/QuNGO0LvRjF/QsNCy0LPRg9GB0YJf0YHQtdC90YLRj9Cx0YDRjF/QvtC60YLRj9Cx0YDRjF/QvdC+0Y/QsdGA0Yxf0LTQtdC60LDQsdGA0YwiLnNwbGl0KCJfIil9LG1vbnRoc1Nob3J0Ontmb3JtYXQ6ItGP0L3Qsi5f0YTQtdCy0YAuX9C80LDRgC5f0LDQv9GALl/QvNCw0Y9f0LjRjtC90Y9f0LjRjtC70Y9f0LDQstCzLl/RgdC10L3Rgi5f0L7QutGCLl/QvdC+0Y/QsS5f0LTQtdC6LiIuc3BsaXQoIl8iKSxzdGFuZGFsb25lOiLRj9C90LIuX9GE0LXQstGALl/QvNCw0YDRgl/QsNC/0YAuX9C80LDQuV/QuNGO0L3RjF/QuNGO0LvRjF/QsNCy0LMuX9GB0LXQvdGCLl/QvtC60YIuX9C90L7Rj9CxLl/QtNC10LouIi5zcGxpdCgiXyIpfSx3ZWVrZGF5czp7c3RhbmRhbG9uZToi0LLQvtGB0LrRgNC10YHQtdC90YzQtV/Qv9C+0L3QtdC00LXQu9GM0L3QuNC6X9Cy0YLQvtGA0L3QuNC6X9GB0YDQtdC00LBf0YfQtdGC0LLQtdGA0LNf0L/Rj9GC0L3QuNGG0LBf0YHRg9Cx0LHQvtGC0LAiLnNwbGl0KCJfIiksZm9ybWF0OiLQstC+0YHQutGA0LXRgdC10L3RjNC1X9C/0L7QvdC10LTQtdC70YzQvdC40Lpf0LLRgtC+0YDQvdC40Lpf0YHRgNC10LTRg1/Rh9C10YLQstC10YDQs1/Qv9GP0YLQvdC40YbRg1/RgdGD0LHQsdC+0YLRgyIuc3BsaXQoIl8iKSxpc0Zvcm1hdDovXFsgP1vQktCyXSA/KD860L/RgNC+0YjQu9GD0Y580YHQu9C10LTRg9GO0YnRg9GOfNGN0YLRgyk/ID9cXSA/ZGRkZC99LHdlZWtkYXlzU2hvcnQ6ItCy0YFf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ItCy0YFf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEiLnNwbGl0KCJfIiksbW9udGhzUGFyc2U6bixsb25nTW9udGhzUGFyc2U6bixzaG9ydE1vbnRoc1BhcnNlOm4sbW9udGhzUmVnZXg6L14o0Y/QvdCy0LDRgFvRjNGPXXzRj9C90LJcLj980YTQtdCy0YDQsNC7W9GM0Y9dfNGE0LXQstGAP1wuP3zQvNCw0YDRgtCwP3zQvNCw0YBcLj980LDQv9GA0LXQu1vRjNGPXXzQsNC/0YBcLj980LzQsFvQudGPXXzQuNGO0L1b0YzRj1180LjRjtC9XC4/fNC40Y7Qu1vRjNGPXXzQuNGO0LtcLj980LDQstCz0YPRgdGC0LA/fNCw0LLQs1wuP3zRgdC10L3RgtGP0LHRgFvRjNGPXXzRgdC10L3Rgj9cLj980L7QutGC0Y/QsdGAW9GM0Y9dfNC+0LrRglwuP3zQvdC+0Y/QsdGAW9GM0Y9dfNC90L7Rj9CxP1wuP3zQtNC10LrQsNCx0YBb0YzRj1180LTQtdC6XC4/KS9pLG1vbnRoc1Nob3J0UmVnZXg6L14o0Y/QvdCy0LDRgFvRjNGPXXzRj9C90LJcLj980YTQtdCy0YDQsNC7W9GM0Y9dfNGE0LXQstGAP1wuP3zQvNCw0YDRgtCwP3zQvNCw0YBcLj980LDQv9GA0LXQu1vRjNGPXXzQsNC/0YBcLj980LzQsFvQudGPXXzQuNGO0L1b0YzRj1180LjRjtC9XC4/fNC40Y7Qu1vRjNGPXXzQuNGO0LtcLj980LDQstCz0YPRgdGC0LA/fNCw0LLQs1wuP3zRgdC10L3RgtGP0LHRgFvRjNGPXXzRgdC10L3Rgj9cLj980L7QutGC0Y/QsdGAW9GM0Y9dfNC+0LrRglwuP3zQvdC+0Y/QsdGAW9GM0Y9dfNC90L7Rj9CxP1wuP3zQtNC10LrQsNCx0YBb0YzRj1180LTQtdC6XC4/KS9pLG1vbnRoc1N0cmljdFJlZ2V4Oi9eKNGP0L3QstCw0YBb0Y/RjF180YTQtdCy0YDQsNC7W9GP0YxdfNC80LDRgNGC0LA/fNCw0L/RgNC10Ltb0Y/RjF180LzQsFvRj9C5XXzQuNGO0L1b0Y/RjF180LjRjtC7W9GP0YxdfNCw0LLQs9GD0YHRgtCwP3zRgdC10L3RgtGP0LHRgFvRj9GMXXzQvtC60YLRj9Cx0YBb0Y/RjF180L3QvtGP0LHRgFvRj9GMXXzQtNC10LrQsNCx0YBb0Y/RjF0pL2ksbW9udGhzU2hvcnRTdHJpY3RSZWdleDovXijRj9C90LJcLnzRhNC10LLRgD9cLnzQvNCw0YBb0YIuXXzQsNC/0YBcLnzQvNCwW9GP0LldfNC40Y7QvVvRjNGPLl180LjRjtC7W9GM0Y8uXXzQsNCy0LNcLnzRgdC10L3Rgj9cLnzQvtC60YJcLnzQvdC+0Y/QsT9cLnzQtNC10LpcLikvaSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkg0LMuIixMTEw6IkQgTU1NTSBZWVlZINCzLiwgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZINCzLiwgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW9Ch0LXQs9C+0LTQvdGPINCyXSBMVCIsbmV4dERheToiW9CX0LDQstGC0YDQsCDQsl0gTFQiLGxhc3REYXk6IlvQktGH0LXRgNCwINCyXSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oZSl7aWYoZS53ZWVrKCk9PT10aGlzLndlZWsoKSlyZXR1cm4gMj09PXRoaXMuZGF5KCk/IlvQktC+XSBkZGRkIFvQsl0gTFQiOiJb0JJdIGRkZGQgW9CyXSBMVCI7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW9CSINGB0LvQtdC00YPRjtGJ0LXQtV0gZGRkZCBb0LJdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpyZXR1cm4iW9CSINGB0LvQtdC00YPRjtGJ0LjQuV0gZGRkZCBb0LJdIExUIjtjYXNlIDM6Y2FzZSA1OmNhc2UgNjpyZXR1cm4iW9CSINGB0LvQtdC00YPRjtGJ0YPRjl0gZGRkZCBb0LJdIExUIn19LGxhc3RXZWVrOmZ1bmN0aW9uKGUpe2lmKGUud2VlaygpPT09dGhpcy53ZWVrKCkpcmV0dXJuIDI9PT10aGlzLmRheSgpPyJb0JLQvl0gZGRkZCBb0LJdIExUIjoiW9CSXSBkZGRkIFvQsl0gTFQiO3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIlvQkiDQv9GA0L7RiNC70L7QtV0gZGRkZCBb0LJdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpyZXR1cm4iW9CSINC/0YDQvtGI0LvRi9C5XSBkZGRkIFvQsl0gTFQiO2Nhc2UgMzpjYXNlIDU6Y2FzZSA2OnJldHVybiJb0JIg0L/RgNC+0YjQu9GD0Y5dIGRkZGQgW9CyXSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLRh9C10YDQtdC3ICVzIixwYXN0OiIlcyDQvdCw0LfQsNC0IixzOiLQvdC10YHQutC+0LvRjNC60L4g0YHQtdC60YPQvdC0IixtOnQsbW06dCxoOiLRh9Cw0YEiLGhoOnQsZDoi0LTQtdC90YwiLGRkOnQsTToi0LzQtdGB0Y/RhiIsTU06dCx5OiLQs9C+0LQiLHl5OnR9LG1lcmlkaWVtUGFyc2U6L9C90L7Rh9C4fNGD0YLRgNCwfNC00L3Rj3zQstC10YfQtdGA0LAvaSxpc1BNOmZ1bmN0aW9uKGUpe3JldHVybi9eKNC00L3Rj3zQstC10YfQtdGA0LApJC8udGVzdChlKX0sbWVyaWRpZW06ZnVuY3Rpb24oZSxhLHQpe3JldHVybiBlPDQ/ItC90L7Rh9C4IjplPDEyPyLRg9GC0YDQsCI6ZTwxNz8i0LTQvdGPIjoi0LLQtdGH0LXRgNCwIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9LSjQuXzQs9C+fNGPKS8sb3JkaW5hbDpmdW5jdGlvbihlLGEpe3N3aXRjaChhKXtjYXNlIk0iOmNhc2UiZCI6Y2FzZSJEREQiOnJldHVybiBlKyIt0LkiO2Nhc2UiRCI6cmV0dXJuIGUrIi3Qs9C+IjtjYXNlInciOmNhc2UiVyI6cmV0dXJuIGUrIi3RjyI7ZGVmYXVsdDpyZXR1cm4gZX19LHdlZWs6e2RvdzoxLGRveTo3fX0pO3JldHVybiByfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoInJ1IiwicnUiLHtjbG9zZVRleHQ6ItCX0LDQutGA0YvRgtGMIixwcmV2VGV4dDoiJiN4M0M70J/RgNC10LQiLG5leHRUZXh0OiLQodC70LXQtCYjeDNFOyIsY3VycmVudFRleHQ6ItCh0LXQs9C+0LTQvdGPIixtb250aE5hbWVzOlsi0K/QvdCy0LDRgNGMIiwi0KTQtdCy0YDQsNC70YwiLCLQnNCw0YDRgiIsItCQ0L/RgNC10LvRjCIsItCc0LDQuSIsItCY0Y7QvdGMIiwi0JjRjtC70YwiLCLQkNCy0LPRg9GB0YIiLCLQodC10L3RgtGP0LHRgNGMIiwi0J7QutGC0Y/QsdGA0YwiLCLQndC+0Y/QsdGA0YwiLCLQlNC10LrQsNCx0YDRjCJdLG1vbnRoTmFtZXNTaG9ydDpbItCv0L3QsiIsItCk0LXQsiIsItCc0LDRgCIsItCQ0L/RgCIsItCc0LDQuSIsItCY0Y7QvSIsItCY0Y7QuyIsItCQ0LLQsyIsItCh0LXQvSIsItCe0LrRgiIsItCd0L7RjyIsItCU0LXQuiJdLGRheU5hbWVzOlsi0LLQvtGB0LrRgNC10YHQtdC90YzQtSIsItC/0L7QvdC10LTQtdC70YzQvdC40LoiLCLQstGC0L7RgNC90LjQuiIsItGB0YDQtdC00LAiLCLRh9C10YLQstC10YDQsyIsItC/0Y/RgtC90LjRhtCwIiwi0YHRg9Cx0LHQvtGC0LAiXSxkYXlOYW1lc1Nob3J0Olsi0LLRgdC6Iiwi0L/QvdC0Iiwi0LLRgtGAIiwi0YHRgNC0Iiwi0YfRgtCyIiwi0L/RgtC9Iiwi0YHQsdGCIl0sZGF5TmFtZXNNaW46WyLQktGBIiwi0J/QvSIsItCS0YIiLCLQodGAIiwi0KfRgiIsItCf0YIiLCLQodCxIl0sd2Vla0hlYWRlcjoi0J3QtdC0IixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgicnUiLHtidXR0b25UZXh0Onttb250aDoi0JzQtdGB0Y/RhiIsd2Vlazoi0J3QtdC00LXQu9GPIixkYXk6ItCU0LXQvdGMIixsaXN0OiLQn9C+0LLQtdGB0YLQutCwINC00L3RjyJ9LGFsbERheVRleHQ6ItCS0LXRgdGMINC00LXQvdGMIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihlKXtyZXR1cm4iKyDQtdGJ0ZEgIitlfSxub0V2ZW50c01lc3NhZ2U6ItCd0LXRgiDRgdC+0LHRi9GC0LjQuSDQtNC70Y8g0L7RgtC+0LHRgNCw0LbQtdC90LjRjyJ9KX0oKSxmdW5jdGlvbigpeyFmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7cmV0dXJuIGU+MSYmZTw1fWZ1bmN0aW9uIHQoYSx0LG4scil7dmFyIHM9YSsiICI7c3dpdGNoKG4pe2Nhc2UicyI6cmV0dXJuIHR8fHI/InDDoXIgc2Vrw7puZCI6InDDoXIgc2VrdW5kYW1pIjtjYXNlIm0iOnJldHVybiB0PyJtaW7DunRhIjpyPyJtaW7DunR1IjoibWluw7p0b3UiO2Nhc2UibW0iOnJldHVybiB0fHxyP3MrKGUoYSk/Im1pbsO6dHkiOiJtaW7DunQiKTpzKyJtaW7DunRhbWkiO2Nhc2UiaCI6cmV0dXJuIHQ/ImhvZGluYSI6cj8iaG9kaW51IjoiaG9kaW5vdSI7Y2FzZSJoaCI6cmV0dXJuIHR8fHI/cysoZShhKT8iaG9kaW55IjoiaG9kw61uIik6cysiaG9kaW5hbWkiO2Nhc2UiZCI6cmV0dXJuIHR8fHI/ImRlxYgiOiJkxYhvbSI7Y2FzZSJkZCI6cmV0dXJuIHR8fHI/cysoZShhKT8iZG5pIjoiZG7DrSIpOnMrImTFiGFtaSI7Y2FzZSJNIjpyZXR1cm4gdHx8cj8ibWVzaWFjIjoibWVzaWFjb20iO2Nhc2UiTU0iOnJldHVybiB0fHxyP3MrKGUoYSk/Im1lc2lhY2UiOiJtZXNpYWNvdiIpOnMrIm1lc2lhY21pIjtjYXNlInkiOnJldHVybiB0fHxyPyJyb2siOiJyb2tvbSI7Y2FzZSJ5eSI6cmV0dXJuIHR8fHI/cysoZShhKT8icm9reSI6InJva292Iik6cysicm9rbWkifX12YXIgbj0iamFudcOhcl9mZWJydcOhcl9tYXJlY19hcHLDrWxfbcOhal9qw7puX2rDumxfYXVndXN0X3NlcHRlbWJlcl9va3TDs2Jlcl9ub3ZlbWJlcl9kZWNlbWJlciIuc3BsaXQoIl8iKSxyPSJqYW5fZmViX21hcl9hcHJfbcOhal9qw7puX2rDumxfYXVnX3NlcF9va3Rfbm92X2RlYyIuc3BsaXQoIl8iKSxzPWEuZGVmaW5lTG9jYWxlKCJzayIse21vbnRoczpuLG1vbnRoc1Nob3J0OnIsd2Vla2RheXM6Im5lZGXEvmFfcG9uZGVsb2tfdXRvcm9rX3N0cmVkYV/FoXR2cnRva19waWF0b2tfc29ib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5lX3BvX3V0X3N0X8WhdF9waV9zbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoibmVfcG9fdXRfc3RfxaF0X3BpX3NvIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBIOm1tIixMTExMOiJkZGRkIEQuIE1NTU0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltkbmVzIG9dIExUIixuZXh0RGF5OiJbemFqdHJhIG9dIExUIixuZXh0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIlt2IG5lZGXEvnUgb10gTFQiO2Nhc2UgMTpjYXNlIDI6cmV0dXJuIlt2XSBkZGRkIFtvXSBMVCI7Y2FzZSAzOnJldHVybiJbdiBzdHJlZHUgb10gTFQiO2Nhc2UgNDpyZXR1cm4iW3ZvIMWhdHZydG9rIG9dIExUIjtjYXNlIDU6cmV0dXJuIlt2IHBpYXRvayBvXSBMVCI7Y2FzZSA2OnJldHVybiJbdiBzb2JvdHUgb10gTFQifX0sbGFzdERheToiW3bEjWVyYSBvXSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbbWludWzDuiBuZWRlxL51IG9dIExUIjtjYXNlIDE6Y2FzZSAyOnJldHVybiJbbWludWzDvV0gZGRkZCBbb10gTFQiO2Nhc2UgMzpyZXR1cm4iW21pbnVsw7ogc3RyZWR1IG9dIExUIjtjYXNlIDQ6Y2FzZSA1OnJldHVybiJbbWludWzDvV0gZGRkZCBbb10gTFQiO2Nhc2UgNjpyZXR1cm4iW21pbnVsw7ogc29ib3R1IG9dIExUIn19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InphICVzIixwYXN0OiJwcmVkICVzIixzOnQsbTp0LG1tOnQsaDp0LGhoOnQsZDp0LGRkOnQsTTp0LE1NOnQseTp0LHl5OnR9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pO3JldHVybiBzfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoInNrIiwic2siLHtjbG9zZVRleHQ6IlphdnJpZcWlIixwcmV2VGV4dDoiJiN4M0M7UHJlZGNow6FkemFqw7pjaSIsbmV4dFRleHQ6Ik5hc2xlZHVqw7pjaSYjeDNFOyIsY3VycmVudFRleHQ6IkRuZXMiLG1vbnRoTmFtZXM6WyJqYW51w6FyIiwiZmVicnXDoXIiLCJtYXJlYyIsImFwcsOtbCIsIm3DoWoiLCJqw7puIiwiasO6bCIsImF1Z3VzdCIsInNlcHRlbWJlciIsIm9rdMOzYmVyIiwibm92ZW1iZXIiLCJkZWNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk3DoWoiLCJKw7puIiwiSsO6bCIsIkF1ZyIsIlNlcCIsIk9rdCIsIk5vdiIsIkRlYyJdLGRheU5hbWVzOlsibmVkZcS+YSIsInBvbmRlbG9rIiwidXRvcm9rIiwic3RyZWRhIiwixaF0dnJ0b2siLCJwaWF0b2siLCJzb2JvdGEiXSxkYXlOYW1lc1Nob3J0OlsiTmVkIiwiUG9uIiwiVXRvIiwiU3RyIiwixaB0diIsIlBpYSIsIlNvYiJdLGRheU5hbWVzTWluOlsiTmUiLCJQbyIsIlV0IiwiU3QiLCLFoHQiLCJQaWEiLCJTbyJdLHdlZWtIZWFkZXI6IlR5IixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgic2siLHtidXR0b25UZXh0Onttb250aDoiTWVzaWFjIix3ZWVrOiJUw73FvmRlxYgiLGRheToiRGXFiCIsbGlzdDoiUm96dnJoIn0sYWxsRGF5VGV4dDoiQ2Vsw70gZGXFiCIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIivEj2FsxaFpZTogIitlfSxub0V2ZW50c01lc3NhZ2U6IsW9aWFkbmUgYWtjaWUgbmEgem9icmF6ZW5pZSJ9KX0oKSxmdW5jdGlvbigpeyFmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSxhLHQsbil7dmFyIHI9ZSsiICI7c3dpdGNoKHQpe2Nhc2UicyI6cmV0dXJuIGF8fG4/Im5la2FqIHNla3VuZCI6Im5la2FqIHNla3VuZGFtaSI7Y2FzZSJtIjpyZXR1cm4gYT8iZW5hIG1pbnV0YSI6ImVubyBtaW51dG8iO2Nhc2UibW0iOnJldHVybiByKz0xPT09ZT9hPyJtaW51dGEiOiJtaW51dG8iOjI9PT1lP2F8fG4/Im1pbnV0aSI6Im1pbnV0YW1hIjplPDU/YXx8bj8ibWludXRlIjoibWludXRhbWkiOmF8fG4/Im1pbnV0IjoibWludXRhbWkiO2Nhc2UiaCI6cmV0dXJuIGE/ImVuYSB1cmEiOiJlbm8gdXJvIjtjYXNlImhoIjpyZXR1cm4gcis9MT09PWU/YT8idXJhIjoidXJvIjoyPT09ZT9hfHxuPyJ1cmkiOiJ1cmFtYSI6ZTw1P2F8fG4/InVyZSI6InVyYW1pIjphfHxuPyJ1ciI6InVyYW1pIjtjYXNlImQiOnJldHVybiBhfHxuPyJlbiBkYW4iOiJlbmltIGRuZW0iO2Nhc2UiZGQiOnJldHVybiByKz0xPT09ZT9hfHxuPyJkYW4iOiJkbmVtIjoyPT09ZT9hfHxuPyJkbmkiOiJkbmV2b21hIjphfHxuPyJkbmkiOiJkbmV2aSI7Y2FzZSJNIjpyZXR1cm4gYXx8bj8iZW4gbWVzZWMiOiJlbmltIG1lc2VjZW0iO2Nhc2UiTU0iOnJldHVybiByKz0xPT09ZT9hfHxuPyJtZXNlYyI6Im1lc2VjZW0iOjI9PT1lP2F8fG4/Im1lc2VjYSI6Im1lc2VjZW1hIjplPDU/YXx8bj8ibWVzZWNlIjoibWVzZWNpIjphfHxuPyJtZXNlY2V2IjoibWVzZWNpIjtjYXNlInkiOnJldHVybiBhfHxuPyJlbm8gbGV0byI6ImVuaW0gbGV0b20iO2Nhc2UieXkiOnJldHVybiByKz0xPT09ZT9hfHxuPyJsZXRvIjoibGV0b20iOjI9PT1lP2F8fG4/ImxldGkiOiJsZXRvbWEiOmU8NT9hfHxuPyJsZXRhIjoibGV0aSI6YXx8bj8ibGV0IjoibGV0aSJ9fXZhciB0PWEuZGVmaW5lTG9jYWxlKCJzbCIse21vbnRoczoiamFudWFyX2ZlYnJ1YXJfbWFyZWNfYXByaWxfbWFqX2p1bmlqX2p1bGlqX2F2Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuLl9mZWIuX21hci5fYXByLl9tYWouX2p1bi5fanVsLl9hdmcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoibmVkZWxqYV9wb25lZGVsamVrX3RvcmVrX3NyZWRhX8SNZXRydGVrX3BldGVrX3NvYm90YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJuZWQuX3Bvbi5fdG9yLl9zcmUuX8SNZXQuX3BldC5fc29iLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoibmVfcG9fdG9fc3JfxI1lX3BlX3NvIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgSDptbSIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2RhbmVzIG9iXSBMVCIsbmV4dERheToiW2p1dHJpIG9iXSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbdl0gW25lZGVsam9dIFtvYl0gTFQiO2Nhc2UgMzpyZXR1cm4iW3ZdIFtzcmVkb10gW29iXSBMVCI7Y2FzZSA2OnJldHVybiJbdl0gW3NvYm90b10gW29iXSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA1OnJldHVybiJbdl0gZGRkZCBbb2JdIExUIn19LGxhc3REYXk6Ilt2xI1lcmFqIG9iXSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbcHJlasWhbmpvXSBbbmVkZWxqb10gW29iXSBMVCI7Y2FzZSAzOnJldHVybiJbcHJlasWhbmpvXSBbc3JlZG9dIFtvYl0gTFQiO2Nhc2UgNjpyZXR1cm4iW3ByZWrFoW5qb10gW3NvYm90b10gW29iXSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA1OnJldHVybiJbcHJlasWhbmppXSBkZGRkIFtvYl0gTFQifX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToixI1leiAlcyIscGFzdDoicHJlZCAlcyIsczplLG06ZSxtbTplLGg6ZSxoaDplLGQ6ZSxkZDplLE06ZSxNTTplLHk6ZSx5eTplfSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6N319KTtyZXR1cm4gdH0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJzbCIsInNsIix7Y2xvc2VUZXh0OiJaYXByaSIscHJldlRleHQ6IiYjeDNDO1ByZWrFoW5qaSIsbmV4dFRleHQ6Ik5hc2xlZG5qaSYjeDNFOyIsY3VycmVudFRleHQ6IlRyZW51dG5pIixtb250aE5hbWVzOlsiSmFudWFyIiwiRmVicnVhciIsIk1hcmVjIiwiQXByaWwiLCJNYWoiLCJKdW5paiIsIkp1bGlqIiwiQXZndXN0IiwiU2VwdGVtYmVyIiwiT2t0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYWoiLCJKdW4iLCJKdWwiLCJBdmciLCJTZXAiLCJPa3QiLCJOb3YiLCJEZWMiXSxkYXlOYW1lczpbIk5lZGVsamEiLCJQb25lZGVsamVrIiwiVG9yZWsiLCJTcmVkYSIsIsSMZXRydGVrIiwiUGV0ZWsiLCJTb2JvdGEiXSxkYXlOYW1lc1Nob3J0OlsiTmVkIiwiUG9uIiwiVG9yIiwiU3JlIiwixIxldCIsIlBldCIsIlNvYiJdLGRheU5hbWVzTWluOlsiTmUiLCJQbyIsIlRvIiwiU3IiLCLEjGUiLCJQZSIsIlNvIl0sd2Vla0hlYWRlcjoiVGVkZW4iLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJzbCIse2J1dHRvblRleHQ6e21vbnRoOiJNZXNlYyIsd2VlazoiVGVkZW4iLGRheToiRGFuIixsaXN0OiJEbmV2bmkgcmVkIn0sYWxsRGF5VGV4dDoiVmVzIGRhbiIsZXZlbnRMaW1pdFRleHQ6InZlxI0iLG5vRXZlbnRzTWVzc2FnZToiTmkgZG9nb2Rrb3YgemEgcHJpa2F6In0pfSgpLGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKCl7dmFyIGU9e3dvcmRzOnttOlsiamVkYW4gbWludXQiLCJqZWRuZSBtaW51dGUiXSxtbTpbIm1pbnV0IiwibWludXRlIiwibWludXRhIl0saDpbImplZGFuIHNhdCIsImplZG5vZyBzYXRhIl0saGg6WyJzYXQiLCJzYXRhIiwic2F0aSJdLGRkOlsiZGFuIiwiZGFuYSIsImRhbmEiXSxNTTpbIm1lc2VjIiwibWVzZWNhIiwibWVzZWNpIl0seXk6WyJnb2RpbmEiLCJnb2RpbmUiLCJnb2RpbmEiXX0sY29ycmVjdEdyYW1tYXRpY2FsQ2FzZTpmdW5jdGlvbihlLGEpe3JldHVybiAxPT09ZT9hWzBdOmU+PTImJmU8PTQ/YVsxXTphWzJdfSx0cmFuc2xhdGU6ZnVuY3Rpb24oYSx0LG4pe3ZhciByPWUud29yZHNbbl07cmV0dXJuIDE9PT1uLmxlbmd0aD90P3JbMF06clsxXTphKyIgIitlLmNvcnJlY3RHcmFtbWF0aWNhbENhc2UoYSxyKX19LHQ9YS5kZWZpbmVMb2NhbGUoInNyIix7bW9udGhzOiJqYW51YXJfZmVicnVhcl9tYXJ0X2FwcmlsX21hal9qdW5fanVsX2F2Z3VzdF9zZXB0ZW1iYXJfb2t0b2Jhcl9ub3ZlbWJhcl9kZWNlbWJhciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuLl9mZWIuX21hci5fYXByLl9tYWpfanVuX2p1bF9hdmcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoibmVkZWxqYV9wb25lZGVsamFrX3V0b3Jha19zcmVkYV/EjWV0dnJ0YWtfcGV0YWtfc3Vib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5lZC5fcG9uLl91dG8uX3NyZS5fxI1ldC5fcGV0Ll9zdWIuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJuZV9wb191dF9zcl/EjWVfcGVfc3UiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBIOm1tIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbZGFuYXMgdV0gTFQiLG5leHREYXk6IltzdXRyYSB1XSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbdV0gW25lZGVsanVdIFt1XSBMVCI7Y2FzZSAzOnJldHVybiJbdV0gW3NyZWR1XSBbdV0gTFQiO2Nhc2UgNjpyZXR1cm4iW3VdIFtzdWJvdHVdIFt1XSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA1OnJldHVybiJbdV0gZGRkZCBbdV0gTFQifX0sbGFzdERheToiW2p1xI1lIHVdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3ZhciBlPVsiW3Byb8WhbGVdIFtuZWRlbGplXSBbdV0gTFQiLCJbcHJvxaFsb2ddIFtwb25lZGVsamthXSBbdV0gTFQiLCJbcHJvxaFsb2ddIFt1dG9ya2FdIFt1XSBMVCIsIltwcm/FoWxlXSBbc3JlZGVdIFt1XSBMVCIsIltwcm/FoWxvZ10gW8SNZXR2cnRrYV0gW3VdIExUIiwiW3Byb8WhbG9nXSBbcGV0a2FdIFt1XSBMVCIsIltwcm/FoWxlXSBbc3Vib3RlXSBbdV0gTFQiXTtyZXR1cm4gZVt0aGlzLmRheSgpXX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiemEgJXMiLHBhc3Q6InByZSAlcyIsczoibmVrb2xpa28gc2VrdW5kaSIsbTplLnRyYW5zbGF0ZSxtbTplLnRyYW5zbGF0ZSxoOmUudHJhbnNsYXRlLGhoOmUudHJhbnNsYXRlLGQ6ImRhbiIsZGQ6ZS50cmFuc2xhdGUsTToibWVzZWMiLE1NOmUudHJhbnNsYXRlLHk6ImdvZGludSIseXk6ZS50cmFuc2xhdGV9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo3fX0pO3JldHVybiB0fSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoInNyIiwic3IiLHtjbG9zZVRleHQ6ItCX0LDRgtCy0L7RgNC4IixwcmV2VGV4dDoiJiN4M0M7IixuZXh0VGV4dDoiJiN4M0U7IixjdXJyZW50VGV4dDoi0JTQsNC90LDRgSIsbW9udGhOYW1lczpbItCI0LDQvdGD0LDRgCIsItCk0LXQsdGA0YPQsNGAIiwi0JzQsNGA0YIiLCLQkNC/0YDQuNC7Iiwi0JzQsNGYIiwi0IjRg9C9Iiwi0IjRg9C7Iiwi0JDQstCz0YPRgdGCIiwi0KHQtdC/0YLQtdC80LHQsNGAIiwi0J7QutGC0L7QsdCw0YAiLCLQndC+0LLQtdC80LHQsNGAIiwi0JTQtdGG0LXQvNCx0LDRgCJdLG1vbnRoTmFtZXNTaG9ydDpbItCI0LDQvSIsItCk0LXQsSIsItCc0LDRgCIsItCQ0L/RgCIsItCc0LDRmCIsItCI0YPQvSIsItCI0YPQuyIsItCQ0LLQsyIsItCh0LXQvyIsItCe0LrRgiIsItCd0L7QsiIsItCU0LXRhiJdLGRheU5hbWVzOlsi0J3QtdC00LXRmdCwIiwi0J/QvtC90LXQtNC10ZnQsNC6Iiwi0KPRgtC+0YDQsNC6Iiwi0KHRgNC10LTQsCIsItCn0LXRgtCy0YDRgtCw0LoiLCLQn9C10YLQsNC6Iiwi0KHRg9Cx0L7RgtCwIl0sZGF5TmFtZXNTaG9ydDpbItCd0LXQtCIsItCf0L7QvSIsItCj0YLQviIsItCh0YDQtSIsItCn0LXRgiIsItCf0LXRgiIsItCh0YPQsSJdLGRheU5hbWVzTWluOlsi0J3QtSIsItCf0L4iLCLQo9GCIiwi0KHRgCIsItCn0LUiLCLQn9C1Iiwi0KHRgyJdLHdlZWtIZWFkZXI6ItCh0LXQtCIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoInNyIix7YnV0dG9uVGV4dDp7bW9udGg6ItCc0LXRgdC10YYiLHdlZWs6ItCd0LXQtNC10ZnQsCIsZGF5OiLQlNCw0L0iLGxpc3Q6ItCf0LvQsNC90LXRgCJ9LGFsbERheVRleHQ6ItCm0LXQviDQtNCw0L0iLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGUpe3JldHVybiIrINGY0L7RiCAiK2V9LG5vRXZlbnRzTWVzc2FnZToi0J3QtdC80LAg0LTQvtCz0LDRktCw0ZjQsCDQt9CwINC/0YDQuNC60LDQtyJ9KX0oKSxmdW5jdGlvbigpeyFmdW5jdGlvbigpe3ZhciBlPXt3b3Jkczp7bTpbItGY0LXQtNCw0L0g0LzQuNC90YPRgiIsItGY0LXQtNC90LUg0LzQuNC90YPRgtC1Il0sbW06WyLQvNC40L3Rg9GCIiwi0LzQuNC90YPRgtC1Iiwi0LzQuNC90YPRgtCwIl0saDpbItGY0LXQtNCw0L0g0YHQsNGCIiwi0ZjQtdC00L3QvtCzINGB0LDRgtCwIl0saGg6WyLRgdCw0YIiLCLRgdCw0YLQsCIsItGB0LDRgtC4Il0sZGQ6WyLQtNCw0L0iLCLQtNCw0L3QsCIsItC00LDQvdCwIl0sTU06WyLQvNC10YHQtdGGIiwi0LzQtdGB0LXRhtCwIiwi0LzQtdGB0LXRhtC4Il0seXk6WyLQs9C+0LTQuNC90LAiLCLQs9C+0LTQuNC90LUiLCLQs9C+0LTQuNC90LAiXX0sY29ycmVjdEdyYW1tYXRpY2FsQ2FzZTpmdW5jdGlvbihlLGEpe3JldHVybiAxPT09ZT9hWzBdOmU+PTImJmU8PTQ/YVsxXTphWzJdfSx0cmFuc2xhdGU6ZnVuY3Rpb24oYSx0LG4pe3ZhciByPWUud29yZHNbbl07cmV0dXJuIDE9PT1uLmxlbmd0aD90P3JbMF06clsxXTphKyIgIitlLmNvcnJlY3RHcmFtbWF0aWNhbENhc2UoYSxyKX19LHQ9YS5kZWZpbmVMb2NhbGUoInNyLWN5cmwiLHttb250aHM6ItGY0LDQvdGD0LDRgF/RhNC10LHRgNGD0LDRgF/QvNCw0YDRgl/QsNC/0YDQuNC7X9C80LDRmF/RmNGD0L1f0ZjRg9C7X9Cw0LLQs9GD0YHRgl/RgdC10L/RgtC10LzQsdCw0YBf0L7QutGC0L7QsdCw0YBf0L3QvtCy0LXQvNCx0LDRgF/QtNC10YbQtdC80LHQsNGAIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiLRmNCw0L0uX9GE0LXQsS5f0LzQsNGALl/QsNC/0YAuX9C80LDRmF/RmNGD0L1f0ZjRg9C7X9Cw0LLQsy5f0YHQtdC/Ll/QvtC60YIuX9C90L7Qsi5f0LTQtdGGLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiLQvdC10LTQtdGZ0LBf0L/QvtC90LXQtNC10ZnQsNC6X9GD0YLQvtGA0LDQul/RgdGA0LXQtNCwX9GH0LXRgtCy0YDRgtCw0Lpf0L/QtdGC0LDQul/RgdGD0LHQvtGC0LAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi0L3QtdC0Ll/Qv9C+0L0uX9GD0YLQvi5f0YHRgNC1Ll/Rh9C10YIuX9C/0LXRgi5f0YHRg9CxLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi0L3QtV/Qv9C+X9GD0YJf0YHRgF/Rh9C1X9C/0LVf0YHRgyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIEg6bW0iLExMTEw6ImRkZGQsIEQuIE1NTU0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvQtNCw0L3QsNGBINGDXSBMVCIsbmV4dERheToiW9GB0YPRgtGA0LAg0YNdIExUIixuZXh0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIlvRg10gW9C90LXQtNC10ZnRg10gW9GDXSBMVCI7Y2FzZSAzOnJldHVybiJb0YNdIFvRgdGA0LXQtNGDXSBb0YNdIExUIjtjYXNlIDY6cmV0dXJuIlvRg10gW9GB0YPQsdC+0YLRg10gW9GDXSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA1OnJldHVybiJb0YNdIGRkZGQgW9GDXSBMVCJ9fSxsYXN0RGF5OiJb0ZjRg9GH0LUg0YNdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3ZhciBlPVsiW9C/0YDQvtGI0LvQtV0gW9C90LXQtNC10ZnQtV0gW9GDXSBMVCIsIlvQv9GA0L7RiNC70L7Qs10gW9C/0L7QvdC10LTQtdGZ0LrQsF0gW9GDXSBMVCIsIlvQv9GA0L7RiNC70L7Qs10gW9GD0YLQvtGA0LrQsF0gW9GDXSBMVCIsIlvQv9GA0L7RiNC70LVdIFvRgdGA0LXQtNC1XSBb0YNdIExUIiwiW9C/0YDQvtGI0LvQvtCzXSBb0YfQtdGC0LLRgNGC0LrQsF0gW9GDXSBMVCIsIlvQv9GA0L7RiNC70L7Qs10gW9C/0LXRgtC60LBdIFvRg10gTFQiLCJb0L/RgNC+0YjQu9C1XSBb0YHRg9Cx0L7RgtC1XSBb0YNdIExUIl07cmV0dXJuIGVbdGhpcy5kYXkoKV19LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ItC30LAgJXMiLHBhc3Q6ItC/0YDQtSAlcyIsczoi0L3QtdC60L7Qu9C40LrQviDRgdC10LrRg9C90LTQuCIsbTplLnRyYW5zbGF0ZSxtbTplLnRyYW5zbGF0ZSxoOmUudHJhbnNsYXRlLGhoOmUudHJhbnNsYXRlLGQ6ItC00LDQvSIsZGQ6ZS50cmFuc2xhdGUsTToi0LzQtdGB0LXRhiIsTU06ZS50cmFuc2xhdGUseToi0LPQvtC00LjQvdGDIix5eTplLnRyYW5zbGF0ZX0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95Ojd9fSk7cmV0dXJuIHR9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgic3ItY3lybCIsInNyIix7Y2xvc2VUZXh0OiLQl9Cw0YLQstC+0YDQuCIscHJldlRleHQ6IiYjeDNDOyIsbmV4dFRleHQ6IiYjeDNFOyIsY3VycmVudFRleHQ6ItCU0LDQvdCw0YEiLG1vbnRoTmFtZXM6WyLQiNCw0L3Rg9Cw0YAiLCLQpNC10LHRgNGD0LDRgCIsItCc0LDRgNGCIiwi0JDQv9GA0LjQuyIsItCc0LDRmCIsItCI0YPQvSIsItCI0YPQuyIsItCQ0LLQs9GD0YHRgiIsItCh0LXQv9GC0LXQvNCx0LDRgCIsItCe0LrRgtC+0LHQsNGAIiwi0J3QvtCy0LXQvNCx0LDRgCIsItCU0LXRhtC10LzQsdCw0YAiXSxtb250aE5hbWVzU2hvcnQ6WyLQiNCw0L0iLCLQpNC10LEiLCLQnNCw0YAiLCLQkNC/0YAiLCLQnNCw0ZgiLCLQiNGD0L0iLCLQiNGD0LsiLCLQkNCy0LMiLCLQodC10L8iLCLQntC60YIiLCLQndC+0LIiLCLQlNC10YYiXSxkYXlOYW1lczpbItCd0LXQtNC10ZnQsCIsItCf0L7QvdC10LTQtdGZ0LDQuiIsItCj0YLQvtGA0LDQuiIsItCh0YDQtdC00LAiLCLQp9C10YLQstGA0YLQsNC6Iiwi0J/QtdGC0LDQuiIsItCh0YPQsdC+0YLQsCJdLGRheU5hbWVzU2hvcnQ6WyLQndC10LQiLCLQn9C+0L0iLCLQo9GC0L4iLCLQodGA0LUiLCLQp9C10YIiLCLQn9C10YIiLCLQodGD0LEiXSxkYXlOYW1lc01pbjpbItCd0LUiLCLQn9C+Iiwi0KPRgiIsItCh0YAiLCLQp9C1Iiwi0J/QtSIsItCh0YMiXSx3ZWVrSGVhZGVyOiLQodC10LQiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJzci1jeXJsIix7YnV0dG9uVGV4dDp7bW9udGg6ItCc0LXRgdC10YYiLHdlZWs6ItCd0LXQtNC10ZnQsCIsZGF5OiLQlNCw0L0iLGxpc3Q6ItCf0LvQsNC90LXRgCJ9LGFsbERheVRleHQ6ItCm0LXQviDQtNCw0L0iLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGUpe3JldHVybiIrINGY0L7RiCAiK2V9LG5vRXZlbnRzTWVzc2FnZToi0J3QtdC80LAg0LTQvtCz0LDRktCw0ZjQsCDQt9CwINC/0YDQuNC60LDQtyJ9KX0oKSxmdW5jdGlvbigpeyFmdW5jdGlvbigpe3ZhciBlPWEuZGVmaW5lTG9jYWxlKCJzdiIse21vbnRoczoiamFudWFyaV9mZWJydWFyaV9tYXJzX2FwcmlsX21hal9qdW5pX2p1bGlfYXVndXN0aV9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2ZlYl9tYXJfYXByX21hal9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6InPDtm5kYWdfbcOlbmRhZ190aXNkYWdfb25zZGFnX3RvcnNkYWdfZnJlZGFnX2zDtnJkYWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoic8O2bl9tw6VuX3Rpc19vbnNfdG9yX2ZyZV9sw7ZyIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJzw7ZfbcOlX3RpX29uX3RvX2ZyX2zDtiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJZWVlZLU1NLUREIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgW2tsLl0gSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgW2tsLl0gSEg6bW0iLGxsbDoiRCBNTU0gWVlZWSBISDptbSIsbGxsbDoiZGRkIEQgTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0lkYWddIExUIixuZXh0RGF5OiJbSW1vcmdvbl0gTFQiLGxhc3REYXk6IltJZ8Olcl0gTFQiLG5leHRXZWVrOiJbUMOlXSBkZGRkIExUIixsYXN0V2VlazoiW0ldIGRkZGRbc10gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im9tICVzIixwYXN0OiJmw7ZyICVzIHNlZGFuIixzOiJuw6VncmEgc2VrdW5kZXIiLG06ImVuIG1pbnV0IixtbToiJWQgbWludXRlciIsaDoiZW4gdGltbWUiLGhoOiIlZCB0aW1tYXIiLGQ6ImVuIGRhZyIsZGQ6IiVkIGRhZ2FyIixNOiJlbiBtw6VuYWQiLE1NOiIlZCBtw6VuYWRlciIseToiZXR0IMOlciIseXk6IiVkIMOlciJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfShlfGEpLyxvcmRpbmFsOmZ1bmN0aW9uKGUpe3ZhciBhPWUlMTAsdD0xPT09fn4oZSUxMDAvMTApPyJlIjoxPT09YT8iYSI6Mj09PWE/ImEiOiJlIjtyZXR1cm4gZSt0fSx3ZWVrOntkb3c6MSxkb3k6NH19KTtyZXR1cm4gZX0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJzdiIsInN2Iix7Y2xvc2VUZXh0OiJTdMOkbmciLHByZXZUZXh0OiImI3hBQjtGw7ZycmEiLG5leHRUZXh0OiJOw6RzdGEmI3hCQjsiLGN1cnJlbnRUZXh0OiJJZGFnIixtb250aE5hbWVzOlsiSmFudWFyaSIsIkZlYnJ1YXJpIiwiTWFycyIsIkFwcmlsIiwiTWFqIiwiSnVuaSIsIkp1bGkiLCJBdWd1c3RpIiwiU2VwdGVtYmVyIiwiT2t0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYWoiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPa3QiLCJOb3YiLCJEZWMiXSxkYXlOYW1lc1Nob3J0OlsiU8O2biIsIk3DpW4iLCJUaXMiLCJPbnMiLCJUb3IiLCJGcmUiLCJMw7ZyIl0sZGF5TmFtZXM6WyJTw7ZuZGFnIiwiTcOlbmRhZyIsIlRpc2RhZyIsIk9uc2RhZyIsIlRvcnNkYWciLCJGcmVkYWciLCJMw7ZyZGFnIl0sZGF5TmFtZXNNaW46WyJTw7YiLCJNw6UiLCJUaSIsIk9uIiwiVG8iLCJGciIsIkzDtiJdLHdlZWtIZWFkZXI6IlZlIixkYXRlRm9ybWF0OiJ5eS1tbS1kZCIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgic3YiLHtidXR0b25UZXh0Onttb250aDoiTcOlbmFkIix3ZWVrOiJWZWNrYSIsZGF5OiJEYWciLGxpc3Q6IlByb2dyYW0ifSxhbGxEYXlUZXh0OiJIZWxkYWciLGV2ZW50TGltaXRUZXh0OiJ0aWxsIixub0V2ZW50c01lc3NhZ2U6IkluZ2EgaMOkbmRlbHNlciBhdHQgdmlzYSJ9KX0oKSxmdW5jdGlvbigpeyFmdW5jdGlvbigpe3ZhciBlPWEuZGVmaW5lTG9jYWxlKCJ0aCIse21vbnRoczoi4Lih4LiB4Lij4Liy4LiE4LihX+C4geC4uOC4oeC4oOC4suC4nuC4seC4meC4mOC5jF/guKHguLXguJnguLLguITguKFf4LmA4Lih4Lip4Liy4Lii4LiZX+C4nuC4pOC4qeC4oOC4suC4hOC4oV/guKHguLTguJbguLjguJnguLLguKLguJlf4LiB4Lij4LiB4LiO4Liy4LiE4LihX+C4quC4tOC4h+C4q+C4suC4hOC4oV/guIHguLHguJnguKLguLLguKLguJlf4LiV4Li44Lil4Liy4LiE4LihX+C4nuC4pOC4qOC4iOC4tOC4geC4suC4ouC4mV/guJjguLHguJnguKfguLLguITguKEiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IuC4oS7guIQuX+C4gS7guJ4uX+C4oeC4tS7guIQuX+C5gOC4oS7guKIuX+C4ni7guIQuX+C4oeC4tC7guKIuX+C4gS7guIQuX+C4qi7guIQuX+C4gS7guKIuX+C4lS7guIQuX+C4ni7guKIuX+C4mC7guIQuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6IuC4reC4suC4l+C4tOC4leC4ouC5jF/guIjguLHguJnguJfguKPguYxf4Lit4Lix4LiH4LiE4Liy4LijX+C4nuC4uOC4mF/guJ7guKTguKvguLHguKrguJrguJTguLVf4Lio4Li44LiB4Lij4LmMX+C5gOC4quC4suC4o+C5jCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLguK3guLLguJfguLTguJXguKLguYxf4LiI4Lix4LiZ4LiX4Lij4LmMX+C4reC4seC4h+C4hOC4suC4o1/guJ7guLjguJhf4Lie4Lik4Lir4Lix4LiqX+C4qOC4uOC4geC4o+C5jF/guYDguKrguLLguKPguYwiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IuC4reC4si5f4LiILl/guK0uX+C4ni5f4Lie4LikLl/guKguX+C4qi4iLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJZWVlZL01NL0REIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkg4LmA4Lin4Lil4LiyIEg6bW0iLExMTEw6IuC4p+C4seC4mWRkZGTguJfguLXguYggRCBNTU1NIFlZWVkg4LmA4Lin4Lil4LiyIEg6bW0ifSxtZXJpZGllbVBhcnNlOi/guIHguYjguK3guJnguYDguJfguLXguYjguKLguId84Lir4Lil4Lix4LiH4LmA4LiX4Li14LmI4Lii4LiHLyxpc1BNOmZ1bmN0aW9uKGUpe3JldHVybiLguKvguKXguLHguIfguYDguJfguLXguYjguKLguIciPT09ZX0sbWVyaWRpZW06ZnVuY3Rpb24oZSxhLHQpe3JldHVybiBlPDEyPyLguIHguYjguK3guJnguYDguJfguLXguYjguKLguIciOiLguKvguKXguLHguIfguYDguJfguLXguYjguKLguIcifSxjYWxlbmRhcjp7c2FtZURheToiW+C4p+C4seC4meC4meC4teC5iSDguYDguKfguKXguLJdIExUIixuZXh0RGF5OiJb4Lie4Lij4Li44LmI4LiH4LiZ4Li14LmJIOC5gOC4p+C4peC4sl0gTFQiLG5leHRXZWVrOiJkZGRkW+C4q+C4meC5ieC4siDguYDguKfguKXguLJdIExUIixsYXN0RGF5OiJb4LmA4Lih4Li34LmI4Lit4Lin4Liy4LiZ4LiZ4Li14LmJIOC5gOC4p+C4peC4sl0gTFQiLGxhc3RXZWVrOiJb4Lin4Lix4LiZXWRkZGRb4LiX4Li14LmI4LmB4Lil4LmJ4LinIOC5gOC4p+C4peC4sl0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IuC4reC4teC4gSAlcyIscGFzdDoiJXPguJfguLXguYjguYHguKXguYnguKciLHM6IuC5hOC4oeC5iOC4geC4teC5iOC4p+C4tOC4meC4suC4l+C4tSIsbToiMSDguJnguLLguJfguLUiLG1tOiIlZCDguJnguLLguJfguLUiLGg6IjEg4LiK4Lix4LmI4Lin4LmC4Lih4LiHIixoaDoiJWQg4LiK4Lix4LmI4Lin4LmC4Lih4LiHIixkOiIxIOC4p+C4seC4mSIsZGQ6IiVkIOC4p+C4seC4mSIsTToiMSDguYDguJTguLfguK3guJkiLE1NOiIlZCDguYDguJTguLfguK3guJkiLAp5OiIxIOC4m+C4tSIseXk6IiVkIOC4m+C4tSJ9fSk7cmV0dXJuIGV9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgidGgiLCJ0aCIse2Nsb3NlVGV4dDoi4Lib4Li04LiUIixwcmV2VGV4dDoiJiN4QUI7JiN4QTA74Lii4LmJ4Lit4LiZIixuZXh0VGV4dDoi4LiW4Lix4LiU4LmE4LibJiN4QTA7JiN4QkI7IixjdXJyZW50VGV4dDoi4Lin4Lix4LiZ4LiZ4Li14LmJIixtb250aE5hbWVzOlsi4Lih4LiB4Lij4Liy4LiE4LihIiwi4LiB4Li44Lih4Lig4Liy4Lie4Lix4LiZ4LiY4LmMIiwi4Lih4Li14LiZ4Liy4LiE4LihIiwi4LmA4Lih4Lip4Liy4Lii4LiZIiwi4Lie4Lik4Lip4Lig4Liy4LiE4LihIiwi4Lih4Li04LiW4Li44LiZ4Liy4Lii4LiZIiwi4LiB4Lij4LiB4LiO4Liy4LiE4LihIiwi4Liq4Li04LiH4Lir4Liy4LiE4LihIiwi4LiB4Lix4LiZ4Lii4Liy4Lii4LiZIiwi4LiV4Li44Lil4Liy4LiE4LihIiwi4Lie4Lik4Lio4LiI4Li04LiB4Liy4Lii4LiZIiwi4LiY4Lix4LiZ4Lin4Liy4LiE4LihIl0sbW9udGhOYW1lc1Nob3J0Olsi4LihLuC4hC4iLCLguIEu4LieLiIsIuC4oeC4tS7guIQuIiwi4LmA4LihLuC4oi4iLCLguJ4u4LiELiIsIuC4oeC4tC7guKIuIiwi4LiBLuC4hC4iLCLguKou4LiELiIsIuC4gS7guKIuIiwi4LiVLuC4hC4iLCLguJ4u4LiiLiIsIuC4mC7guIQuIl0sZGF5TmFtZXM6WyLguK3guLLguJfguLTguJXguKLguYwiLCLguIjguLHguJnguJfguKPguYwiLCLguK3guLHguIfguITguLLguKMiLCLguJ7guLjguJgiLCLguJ7guKTguKvguLHguKrguJrguJTguLUiLCLguKjguLjguIHguKPguYwiLCLguYDguKrguLLguKPguYwiXSxkYXlOYW1lc1Nob3J0Olsi4Lit4LiyLiIsIuC4iC4iLCLguK0uIiwi4LieLiIsIuC4nuC4pC4iLCLguKguIiwi4LiqLiJdLGRheU5hbWVzTWluOlsi4Lit4LiyLiIsIuC4iC4iLCLguK0uIiwi4LieLiIsIuC4nuC4pC4iLCLguKguIiwi4LiqLiJdLHdlZWtIZWFkZXI6IldrIixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MCxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgidGgiLHtidXR0b25UZXh0Onttb250aDoi4LmA4LiU4Li34Lit4LiZIix3ZWVrOiLguKrguLHguJvguJTguLLguKvguYwiLGRheToi4Lin4Lix4LiZIixsaXN0OiLguYHguJzguJnguIfguLLguJkifSxhbGxEYXlUZXh0OiLguJXguKXguK3guJTguKfguLHguJkiLGV2ZW50TGltaXRUZXh0OiLguYDguJ7guLTguYjguKHguYDguJXguLTguKEiLG5vRXZlbnRzTWVzc2FnZToi4LmE4Lih4LmI4Lih4Li14LiB4Li04LiI4LiB4Lij4Lij4Lih4LiX4Li14LmI4LiI4Liw4LmB4Liq4LiU4LiHIn0pfSgpLGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKCl7dmFyIGU9ezE6IidpbmNpIiw1OiInaW5jaSIsODoiJ2luY2kiLDcwOiInaW5jaSIsODA6IidpbmNpIiwyOiInbmNpIiw3OiInbmNpIiwyMDoiJ25jaSIsNTA6IiduY2kiLDM6IifDvG5jw7wiLDQ6IifDvG5jw7wiLDEwMDoiJ8O8bmPDvCIsNjoiJ25jxLEiLDk6Iid1bmN1IiwxMDoiJ3VuY3UiLDMwOiIndW5jdSIsNjA6IifEsW5jxLEiLDkwOiInxLFuY8SxIn0sdD1hLmRlZmluZUxvY2FsZSgidHIiLHttb250aHM6Ik9jYWtfxZ51YmF0X01hcnRfTmlzYW5fTWF5xLFzX0hhemlyYW5fVGVtbXV6X0HEn3VzdG9zX0V5bMO8bF9Fa2ltX0thc8SxbV9BcmFsxLFrIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJPY2FfxZ51Yl9NYXJfTmlzX01heV9IYXpfVGVtX0HEn3VfRXlsX0VraV9LYXNfQXJhIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJQYXphcl9QYXphcnRlc2lfU2FsxLFfw4dhcsWfYW1iYV9QZXLFn2VtYmVfQ3VtYV9DdW1hcnRlc2kiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiUGF6X1B0c19TYWxfw4dhcl9QZXJfQ3VtX0N0cyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiUHpfUHRfU2Ffw4dhX1BlX0N1X0N0Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2J1Z8O8biBzYWF0XSBMVCIsbmV4dERheToiW3lhcsSxbiBzYWF0XSBMVCIsbmV4dFdlZWs6IltoYWZ0YXlhXSBkZGRkIFtzYWF0XSBMVCIsbGFzdERheToiW2TDvG5dIExUIixsYXN0V2VlazoiW2dlw6dlbiBoYWZ0YV0gZGRkZCBbc2FhdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIHNvbnJhIixwYXN0OiIlcyDDtm5jZSIsczoiYmlya2HDpyBzYW5peWUiLG06ImJpciBkYWtpa2EiLG1tOiIlZCBkYWtpa2EiLGg6ImJpciBzYWF0IixoaDoiJWQgc2FhdCIsZDoiYmlyIGfDvG4iLGRkOiIlZCBnw7xuIixNOiJiaXIgYXkiLE1NOiIlZCBheSIseToiYmlyIHnEsWwiLHl5OiIlZCB5xLFsIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9JyhpbmNpfG5jaXzDvG5jw7x8bmPEsXx1bmN1fMSxbmPEsSkvLG9yZGluYWw6ZnVuY3Rpb24oYSl7aWYoMD09PWEpcmV0dXJuIGErIifEsW5jxLEiO3ZhciB0PWElMTAsbj1hJTEwMC10LHI9YT49MTAwPzEwMDpudWxsO3JldHVybiBhKyhlW3RdfHxlW25dfHxlW3JdKX0sd2Vlazp7ZG93OjEsZG95Ojd9fSk7cmV0dXJuIHR9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgidHIiLCJ0ciIse2Nsb3NlVGV4dDoia2FwYXQiLHByZXZUZXh0OiImI3gzQztnZXJpIixuZXh0VGV4dDoiaWxlcmkmI3gzZSIsY3VycmVudFRleHQ6ImJ1Z8O8biIsbW9udGhOYW1lczpbIk9jYWsiLCLFnnViYXQiLCJNYXJ0IiwiTmlzYW4iLCJNYXnEsXMiLCJIYXppcmFuIiwiVGVtbXV6IiwiQcSfdXN0b3MiLCJFeWzDvGwiLCJFa2ltIiwiS2FzxLFtIiwiQXJhbMSxayJdLG1vbnRoTmFtZXNTaG9ydDpbIk9jYSIsIsWedWIiLCJNYXIiLCJOaXMiLCJNYXkiLCJIYXoiLCJUZW0iLCJBxJ91IiwiRXlsIiwiRWtpIiwiS2FzIiwiQXJhIl0sZGF5TmFtZXM6WyJQYXphciIsIlBhemFydGVzaSIsIlNhbMSxIiwiw4dhcsWfYW1iYSIsIlBlcsWfZW1iZSIsIkN1bWEiLCJDdW1hcnRlc2kiXSxkYXlOYW1lc1Nob3J0OlsiUHoiLCJQdCIsIlNhIiwiw4dhIiwiUGUiLCJDdSIsIkN0Il0sZGF5TmFtZXNNaW46WyJQeiIsIlB0IiwiU2EiLCLDh2EiLCJQZSIsIkN1IiwiQ3QiXSx3ZWVrSGVhZGVyOiJIZiIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoInRyIix7YnV0dG9uVGV4dDp7bmV4dDoiaWxlcmkiLG1vbnRoOiJBeSIsd2VlazoiSGFmdGEiLGRheToiR8O8biIsbGlzdDoiQWphbmRhIn0sYWxsRGF5VGV4dDoiVMO8bSBnw7xuIixldmVudExpbWl0VGV4dDoiZGFoYSBmYXpsYSIsbm9FdmVudHNNZXNzYWdlOiJIZXJoYW5naSBiaXIgZXRraW5saWsgZ8O2csO8bnTDvGxlbWVrIGnDp2luIn0pfSgpLGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLGEpe3ZhciB0PWUuc3BsaXQoIl8iKTtyZXR1cm4gYSUxMD09PTEmJmElMTAwIT09MTE/dFswXTphJTEwPj0yJiZhJTEwPD00JiYoYSUxMDA8MTB8fGElMTAwPj0yMCk/dFsxXTp0WzJdfWZ1bmN0aW9uIHQoYSx0LG4pe3ZhciByPXttbTp0PyLRhdCy0LjQu9C40L3QsF/RhdCy0LjQu9C40L3QuF/RhdCy0LjQu9C40L0iOiLRhdCy0LjQu9C40L3Rg1/RhdCy0LjQu9C40L3QuF/RhdCy0LjQu9C40L0iLGhoOnQ/ItCz0L7QtNC40L3QsF/Qs9C+0LTQuNC90Lhf0LPQvtC00LjQvSI6ItCz0L7QtNC40L3Rg1/Qs9C+0LTQuNC90Lhf0LPQvtC00LjQvSIsZGQ6ItC00LXQvdGMX9C00L3Rll/QtNC90ZbQsiIsTU06ItC80ZbRgdGP0YbRjF/QvNGW0YHRj9GG0ZZf0LzRltGB0Y/RhtGW0LIiLHl5OiLRgNGW0Lpf0YDQvtC60Lhf0YDQvtC60ZbQsiJ9O3JldHVybiJtIj09PW4/dD8i0YXQstC40LvQuNC90LAiOiLRhdCy0LjQu9C40L3RgyI6ImgiPT09bj90PyLQs9C+0LTQuNC90LAiOiLQs9C+0LTQuNC90YMiOmErIiAiK2UocltuXSwrYSl9ZnVuY3Rpb24gbihlLGEpe3ZhciB0PXtub21pbmF0aXZlOiLQvdC10LTRltC70Y9f0L/QvtC90LXQtNGW0LvQvtC6X9Cy0ZbQstGC0L7RgNC+0Lpf0YHQtdGA0LXQtNCwX9GH0LXRgtCy0LXRgF/Qv+KAmdGP0YLQvdC40YbRj1/RgdGD0LHQvtGC0LAiLnNwbGl0KCJfIiksYWNjdXNhdGl2ZToi0L3QtdC00ZbQu9GOX9C/0L7QvdC10LTRltC70L7Qul/QstGW0LLRgtC+0YDQvtC6X9GB0LXRgNC10LTRg1/Rh9C10YLQstC10YBf0L/igJnRj9GC0L3QuNGG0Y5f0YHRg9Cx0L7RgtGDIi5zcGxpdCgiXyIpLGdlbml0aXZlOiLQvdC10LTRltC70ZZf0L/QvtC90LXQtNGW0LvQutCwX9Cy0ZbQstGC0L7RgNC60LBf0YHQtdGA0LXQtNC4X9GH0LXRgtCy0LXRgNCz0LBf0L/igJnRj9GC0L3QuNGG0ZZf0YHRg9Cx0L7RgtC4Ii5zcGxpdCgiXyIpfSxuPS8oXFtb0JLQstCj0YNdXF0pID9kZGRkLy50ZXN0KGEpPyJhY2N1c2F0aXZlIjovXFs/KD860LzQuNC90YPQu9C+0Zd80L3QsNGB0YLRg9C/0L3QvtGXKT8gP1xdID9kZGRkLy50ZXN0KGEpPyJnZW5pdGl2ZSI6Im5vbWluYXRpdmUiO3JldHVybiB0W25dW2UuZGF5KCldfWZ1bmN0aW9uIHIoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGUrItC+IisoMTE9PT10aGlzLmhvdXJzKCk/ItCxIjoiIikrIl0gTFQifX12YXIgcz1hLmRlZmluZUxvY2FsZSgidWsiLHttb250aHM6e2Zvcm1hdDoi0YHRltGH0L3Rj1/Qu9GO0YLQvtCz0L5f0LHQtdGA0LXQt9C90Y9f0LrQstGW0YLQvdGPX9GC0YDQsNCy0L3Rj1/Rh9C10YDQstC90Y9f0LvQuNC/0L3Rj1/RgdC10YDQv9C90Y9f0LLQtdGA0LXRgdC90Y9f0LbQvtCy0YLQvdGPX9C70LjRgdGC0L7Qv9Cw0LTQsF/Qs9GA0YPQtNC90Y8iLnNwbGl0KCJfIiksc3RhbmRhbG9uZToi0YHRltGH0LXQvdGMX9C70Y7RgtC40Llf0LHQtdGA0LXQt9C10L3RjF/QutCy0ZbRgtC10L3RjF/RgtGA0LDQstC10L3RjF/Rh9C10YDQstC10L3RjF/Qu9C40L/QtdC90Yxf0YHQtdGA0L/QtdC90Yxf0LLQtdGA0LXRgdC10L3RjF/QttC+0LLRgtC10L3RjF/Qu9C40YHRgtC+0L/QsNC0X9Cz0YDRg9C00LXQvdGMIi5zcGxpdCgiXyIpfSxtb250aHNTaG9ydDoi0YHRltGHX9C70Y7Rgl/QsdC10YBf0LrQstGW0YJf0YLRgNCw0LJf0YfQtdGA0LJf0LvQuNC/X9GB0LXRgNC/X9Cy0LXRgF/QttC+0LLRgl/Qu9C40YHRgl/Qs9GA0YPQtCIuc3BsaXQoIl8iKSx3ZWVrZGF5czpuLHdlZWtkYXlzU2hvcnQ6ItC90LRf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ItC90LRf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZINGALiIsTExMOiJEIE1NTU0gWVlZWSDRgC4sIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSDRgC4sIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6cigiW9Ch0YzQvtCz0L7QtNC90ZYgIiksbmV4dERheTpyKCJb0JfQsNCy0YLRgNCwICIpLGxhc3REYXk6cigiW9CS0YfQvtGA0LAgIiksbmV4dFdlZWs6cigiW9CjXSBkZGRkIFsiKSxsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6Y2FzZSAzOmNhc2UgNTpjYXNlIDY6cmV0dXJuIHIoIlvQnNC40L3Rg9C70L7Rl10gZGRkZCBbIikuY2FsbCh0aGlzKTtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpyZXR1cm4gcigiW9Cc0LjQvdGD0LvQvtCz0L5dIGRkZGQgWyIpLmNhbGwodGhpcyl9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLQt9CwICVzIixwYXN0OiIlcyDRgtC+0LzRgyIsczoi0LTQtdC60ZbQu9GM0LrQsCDRgdC10LrRg9C90LQiLG06dCxtbTp0LGg6ItCz0L7QtNC40L3RgyIsaGg6dCxkOiLQtNC10L3RjCIsZGQ6dCxNOiLQvNGW0YHRj9GG0YwiLE1NOnQseToi0YDRltC6Iix5eTp0fSxtZXJpZGllbVBhcnNlOi/QvdC+0YfRlnzRgNCw0L3QutGDfNC00L3Rj3zQstC10YfQvtGA0LAvLGlzUE06ZnVuY3Rpb24oZSl7cmV0dXJuL14o0LTQvdGPfNCy0LXRh9C+0YDQsCkkLy50ZXN0KGUpfSxtZXJpZGllbTpmdW5jdGlvbihlLGEsdCl7cmV0dXJuIGU8ND8i0L3QvtGH0ZYiOmU8MTI/ItGA0LDQvdC60YMiOmU8MTc/ItC00L3RjyI6ItCy0LXRh9C+0YDQsCJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfS0o0Ll80LPQvikvLG9yZGluYWw6ZnVuY3Rpb24oZSxhKXtzd2l0Y2goYSl7Y2FzZSJNIjpjYXNlImQiOmNhc2UiREREIjpjYXNlInciOmNhc2UiVyI6cmV0dXJuIGUrIi3QuSI7Y2FzZSJEIjpyZXR1cm4gZSsiLdCz0L4iO2RlZmF1bHQ6cmV0dXJuIGV9fSx3ZWVrOntkb3c6MSxkb3k6N319KTtyZXR1cm4gc30oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJ1ayIsInVrIix7Y2xvc2VUZXh0OiLQl9Cw0LrRgNC40YLQuCIscHJldlRleHQ6IiYjeDNDOyIsbmV4dFRleHQ6IiYjeDNFOyIsY3VycmVudFRleHQ6ItCh0YzQvtCz0L7QtNC90ZYiLG1vbnRoTmFtZXM6WyLQodGW0YfQtdC90YwiLCLQm9GO0YLQuNC5Iiwi0JHQtdGA0LXQt9C10L3RjCIsItCa0LLRltGC0LXQvdGMIiwi0KLRgNCw0LLQtdC90YwiLCLQp9C10YDQstC10L3RjCIsItCb0LjQv9C10L3RjCIsItCh0LXRgNC/0LXQvdGMIiwi0JLQtdGA0LXRgdC10L3RjCIsItCW0L7QstGC0LXQvdGMIiwi0JvQuNGB0YLQvtC/0LDQtCIsItCT0YDRg9C00LXQvdGMIl0sbW9udGhOYW1lc1Nob3J0Olsi0KHRltGHIiwi0JvRjtGCIiwi0JHQtdGAIiwi0JrQstGWIiwi0KLRgNCwIiwi0KfQtdGAIiwi0JvQuNC/Iiwi0KHQtdGAIiwi0JLQtdGAIiwi0JbQvtCyIiwi0JvQuNGBIiwi0JPRgNGDIl0sZGF5TmFtZXM6WyLQvdC10LTRltC70Y8iLCLQv9C+0L3QtdC00ZbQu9C+0LoiLCLQstGW0LLRgtC+0YDQvtC6Iiwi0YHQtdGA0LXQtNCwIiwi0YfQtdGC0LLQtdGAIiwi0L/igJnRj9GC0L3QuNGG0Y8iLCLRgdGD0LHQvtGC0LAiXSxkYXlOYW1lc1Nob3J0Olsi0L3QtdC0Iiwi0L/QvdC0Iiwi0LLRltCyIiwi0YHRgNC0Iiwi0YfRgtCyIiwi0L/RgtC9Iiwi0YHQsdGCIl0sZGF5TmFtZXNNaW46WyLQndC0Iiwi0J/QvSIsItCS0YIiLCLQodGAIiwi0KfRgiIsItCf0YIiLCLQodCxIl0sd2Vla0hlYWRlcjoi0KLQuNC2IixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgidWsiLHtidXR0b25UZXh0Onttb250aDoi0JzRltGB0Y/RhtGMIix3ZWVrOiLQotC40LbQtNC10L3RjCIsZGF5OiLQlNC10L3RjCIsbGlzdDoi0J/QvtGA0Y/QtNC+0Log0LTQtdC90L3QuNC5In0sYWxsRGF5VGV4dDoi0KPQstC10YHRjCDQtNC10L3RjCIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIivRidC1ICIrZSsiLi4uIn0sbm9FdmVudHNNZXNzYWdlOiLQndC10LzQsNGUINC/0L7QtNGW0Lkg0LTQu9GPINCy0ZbQtNC+0LHRgNCw0LbQtdC90L3RjyJ9KX0oKSxmdW5jdGlvbigpeyFmdW5jdGlvbigpe3ZhciBlPWEuZGVmaW5lTG9jYWxlKCJ2aSIse21vbnRoczoidGjDoW5nIDFfdGjDoW5nIDJfdGjDoW5nIDNfdGjDoW5nIDRfdGjDoW5nIDVfdGjDoW5nIDZfdGjDoW5nIDdfdGjDoW5nIDhfdGjDoW5nIDlfdGjDoW5nIDEwX3Row6FuZyAxMV90aMOhbmcgMTIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6IlRoMDFfVGgwMl9UaDAzX1RoMDRfVGgwNV9UaDA2X1RoMDdfVGgwOF9UaDA5X1RoMTBfVGgxMV9UaDEyIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6ImNo4bunIG5o4bqtdF90aOG7qSBoYWlfdGjhu6kgYmFfdGjhu6kgdMawX3Ro4bupIG7Eg21fdGjhu6kgc8OhdV90aOG7qSBi4bqjeSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJDTl9UMl9UM19UNF9UNV9UNl9UNyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiQ05fVDJfVDNfVDRfVDVfVDZfVDciLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLG1lcmlkaWVtUGFyc2U6L3NhfGNoL2ksaXNQTTpmdW5jdGlvbihlKXtyZXR1cm4vXmNoJC9pLnRlc3QoZSl9LG1lcmlkaWVtOmZ1bmN0aW9uKGUsYSx0KXtyZXR1cm4gZTwxMj90PyJzYSI6IlNBIjp0PyJjaCI6IkNIIn0sbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBbbsSDbV0gWVlZWSIsTExMOiJEIE1NTU0gW27Eg21dIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBbbsSDbV0gWVlZWSBISDptbSIsbDoiREQvTS9ZWVlZIixsbDoiRCBNTU0gWVlZWSIsbGxsOiJEIE1NTSBZWVlZIEhIOm1tIixsbGxsOiJkZGQsIEQgTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0jDtG0gbmF5IGzDumNdIExUIixuZXh0RGF5OiJbTmfDoHkgbWFpIGzDumNdIExUIixuZXh0V2VlazoiZGRkZCBbdHXhuqduIHThu5tpIGzDumNdIExUIixsYXN0RGF5OiJbSMO0bSBxdWEgbMO6Y10gTFQiLGxhc3RXZWVrOiJkZGRkIFt0deG6p24gcuG7k2kgbMO6Y10gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIHThu5tpIixwYXN0OiIlcyB0csaw4bubYyIsczoidsOgaSBnacOieSIsbToibeG7mXQgcGjDunQiLG1tOiIlZCBwaMO6dCIsaDoibeG7mXQgZ2nhu50iLGhoOiIlZCBnaeG7nSIsZDoibeG7mXQgbmfDoHkiLGRkOiIlZCBuZ8OgeSIsTToibeG7mXQgdGjDoW5nIixNTToiJWQgdGjDoW5nIix5OiJt4buZdCBuxINtIix5eToiJWQgbsSDbSJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfS8sb3JkaW5hbDpmdW5jdGlvbihlKXtyZXR1cm4gZX0sd2Vlazp7ZG93OjEsZG95OjR9fSk7cmV0dXJuIGV9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgidmkiLCJ2aSIse2Nsb3NlVGV4dDoixJDDs25nIixwcmV2VGV4dDoiJiN4M0M7VHLGsOG7m2MiLG5leHRUZXh0OiJUaeG6v3AmI3gzRTsiLGN1cnJlbnRUZXh0OiJIw7RtIG5heSIsbW9udGhOYW1lczpbIlRow6FuZyBN4buZdCIsIlRow6FuZyBIYWkiLCJUaMOhbmcgQmEiLCJUaMOhbmcgVMawIiwiVGjDoW5nIE7Eg20iLCJUaMOhbmcgU8OhdSIsIlRow6FuZyBC4bqjeSIsIlRow6FuZyBUw6FtIiwiVGjDoW5nIENow61uIiwiVGjDoW5nIE3GsOG7nWkiLCJUaMOhbmcgTcaw4budaSBN4buZdCIsIlRow6FuZyBNxrDhu51pIEhhaSJdLG1vbnRoTmFtZXNTaG9ydDpbIlRow6FuZyAxIiwiVGjDoW5nIDIiLCJUaMOhbmcgMyIsIlRow6FuZyA0IiwiVGjDoW5nIDUiLCJUaMOhbmcgNiIsIlRow6FuZyA3IiwiVGjDoW5nIDgiLCJUaMOhbmcgOSIsIlRow6FuZyAxMCIsIlRow6FuZyAxMSIsIlRow6FuZyAxMiJdLGRheU5hbWVzOlsiQ2jhu6cgTmjhuq10IiwiVGjhu6kgSGFpIiwiVGjhu6kgQmEiLCJUaOG7qSBUxrAiLCJUaOG7qSBOxINtIiwiVGjhu6kgU8OhdSIsIlRo4bupIELhuqN5Il0sZGF5TmFtZXNTaG9ydDpbIkNOIiwiVDIiLCJUMyIsIlQ0IiwiVDUiLCJUNiIsIlQ3Il0sZGF5TmFtZXNNaW46WyJDTiIsIlQyIiwiVDMiLCJUNCIsIlQ1IiwiVDYiLCJUNyJdLHdlZWtIZWFkZXI6IlR1IixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MCxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgidmkiLHtidXR0b25UZXh0Onttb250aDoiVGjDoW5nIix3ZWVrOiJUdcOizIBuIixkYXk6Ik5nw6B5IixsaXN0OiJM4buLY2ggYmnhu4N1In0sYWxsRGF5VGV4dDoiQ+G6oyBuZ8OgeSIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIisgdGjDqm0gIitlfSxub0V2ZW50c01lc3NhZ2U6Iktow7RuZyBjw7Mgc+G7sSBraeG7h24gxJHhu4MgaGnhu4NuIHRo4buLIn0pfSgpLGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKCl7dmFyIGU9YS5kZWZpbmVMb2NhbGUoInpoLWNuIix7bW9udGhzOiLkuIDmnIhf5LqM5pyIX+S4ieaciF/lm5vmnIhf5LqU5pyIX+WFreaciF/kuIPmnIhf5YWr5pyIX+S5neaciF/ljYHmnIhf5Y2B5LiA5pyIX+WNgeS6jOaciCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiMeaciF8y5pyIXzPmnIhfNOaciF815pyIXzbmnIhfN+aciF845pyIXznmnIhfMTDmnIhfMTHmnIhfMTLmnIgiLnNwbGl0KCJfIiksd2Vla2RheXM6IuaYn+acn+aXpV/mmJ/mnJ/kuIBf5pif5pyf5LqMX+aYn+acn+S4iV/mmJ/mnJ/lm5tf5pif5pyf5LqUX+aYn+acn+WFrSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLlkajml6Vf5ZGo5LiAX+WRqOS6jF/lkajkuIlf5ZGo5ZubX+WRqOS6lF/lkajlha0iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IuaXpV/kuIBf5LqMX+S4iV/lm5tf5LqUX+WFrSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkFo54K5bW3liIYiLExUUzoiQWjngrlt5YiGc+enkiIsTDoiWVlZWS1NTS1ERCIsTEw6IllZWVnlubRNTU1E5pelIixMTEw6IllZWVnlubRNTU1E5pelQWjngrltbeWIhiIsTExMTDoiWVlZWeW5tE1NTUTml6VkZGRkQWjngrltbeWIhiIsbDoiWVlZWS1NTS1ERCIsbGw6IllZWVnlubRNTU1E5pelIixsbGw6IllZWVnlubRNTU1E5pelQWjngrltbeWIhiIsbGxsbDoiWVlZWeW5tE1NTUTml6VkZGRkQWjngrltbeWIhiJ9LG1lcmlkaWVtUGFyc2U6L+WHjOaZqHzml6nkuIp85LiK5Y2IfOS4reWNiHzkuIvljYh85pma5LiKLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oZSxhKXtyZXR1cm4gMTI9PT1lJiYoZT0wKSwi5YeM5pmoIj09PWF8fCLml6nkuIoiPT09YXx8IuS4iuWNiCI9PT1hP2U6IuS4i+WNiCI9PT1hfHwi5pma5LiKIj09PWE/ZSsxMjplPj0xMT9lOmUrMTJ9LG1lcmlkaWVtOmZ1bmN0aW9uKGUsYSx0KXt2YXIgbj0xMDAqZSthO3JldHVybiBuPDYwMD8i5YeM5pmoIjpuPDkwMD8i5pep5LiKIjpuPDExMzA/IuS4iuWNiCI6bjwxMjMwPyLkuK3ljYgiOm48MTgwMD8i5LiL5Y2IIjoi5pma5LiKIn0sY2FsZW5kYXI6e3NhbWVEYXk6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMubWludXRlcygpPyJb5LuK5aSpXUFoW+eCueaVtF0iOiJb5LuK5aSpXUxUIn0sbmV4dERheTpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5taW51dGVzKCk/IlvmmI7lpKldQWhb54K55pW0XSI6IlvmmI7lpKldTFQifSxsYXN0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLm1pbnV0ZXMoKT8iW+aYqOWkqV1BaFvngrnmlbRdIjoiW+aYqOWkqV1MVCJ9LG5leHRXZWVrOmZ1bmN0aW9uKCl7dmFyIGUsdDtyZXR1cm4gZT1hKCkuc3RhcnRPZigid2VlayIpLHQ9dGhpcy5kaWZmKGUsImRheXMiKT49Nz8iW+S4i10iOiJb5pysXSIsMD09PXRoaXMubWludXRlcygpP3QrImRkZEFo54K55pW0Ijp0KyJkZGRBaOeCuW1tIn0sbGFzdFdlZWs6ZnVuY3Rpb24oKXt2YXIgZSx0O3JldHVybiBlPWEoKS5zdGFydE9mKCJ3ZWVrIiksdD10aGlzLnVuaXgoKTxlLnVuaXgoKT8iW+S4il0iOiJb5pysXSIsMD09PXRoaXMubWludXRlcygpP3QrImRkZEFo54K55pW0Ijp0KyJkZGRBaOeCuW1tIn0sc2FtZUVsc2U6IkxMIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KOaXpXzmnIh85ZGoKS8sb3JkaW5hbDpmdW5jdGlvbihlLGEpe3N3aXRjaChhKXtjYXNlImQiOmNhc2UiRCI6Y2FzZSJEREQiOnJldHVybiBlKyLml6UiO2Nhc2UiTSI6cmV0dXJuIGUrIuaciCI7Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBlKyLlkagiO2RlZmF1bHQ6cmV0dXJuIGV9fSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXPlhoUiLHBhc3Q6IiVz5YmNIixzOiLlh6Dnp5IiLG06IjEg5YiG6ZKfIixtbToiJWQg5YiG6ZKfIixoOiIxIOWwj+aXtiIsaGg6IiVkIOWwj+aXtiIsZDoiMSDlpKkiLGRkOiIlZCDlpKkiLE06IjEg5Liq5pyIIixNTToiJWQg5Liq5pyIIix5OiIxIOW5tCIseXk6IiVkIOW5tCJ9LHdlZWs6e2RvdzoxLGRveTo0fX0pO3JldHVybiBlfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoInpoLWNuIiwiemgtQ04iLHtjbG9zZVRleHQ6IuWFs+mXrSIscHJldlRleHQ6IiYjeDNDO+S4iuaciCIsbmV4dFRleHQ6IuS4i+aciCYjeDNFOyIsY3VycmVudFRleHQ6IuS7iuWkqSIsbW9udGhOYW1lczpbIuS4gOaciCIsIuS6jOaciCIsIuS4ieaciCIsIuWbm+aciCIsIuS6lOaciCIsIuWFreaciCIsIuS4g+aciCIsIuWFq+aciCIsIuS5neaciCIsIuWNgeaciCIsIuWNgeS4gOaciCIsIuWNgeS6jOaciCJdLG1vbnRoTmFtZXNTaG9ydDpbIuS4gOaciCIsIuS6jOaciCIsIuS4ieaciCIsIuWbm+aciCIsIuS6lOaciCIsIuWFreaciCIsIuS4g+aciCIsIuWFq+aciCIsIuS5neaciCIsIuWNgeaciCIsIuWNgeS4gOaciCIsIuWNgeS6jOaciCJdLGRheU5hbWVzOlsi5pif5pyf5pelIiwi5pif5pyf5LiAIiwi5pif5pyf5LqMIiwi5pif5pyf5LiJIiwi5pif5pyf5ZubIiwi5pif5pyf5LqUIiwi5pif5pyf5YWtIl0sZGF5TmFtZXNTaG9ydDpbIuWRqOaXpSIsIuWRqOS4gCIsIuWRqOS6jCIsIuWRqOS4iSIsIuWRqOWbmyIsIuWRqOS6lCIsIuWRqOWFrSJdLGRheU5hbWVzTWluOlsi5pelIiwi5LiAIiwi5LqMIiwi5LiJIiwi5ZubIiwi5LqUIiwi5YWtIl0sd2Vla0hlYWRlcjoi5ZGoIixkYXRlRm9ybWF0OiJ5eS1tbS1kZCIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITAseWVhclN1ZmZpeDoi5bm0In0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiemgtY24iLHtidXR0b25UZXh0Onttb250aDoi5pyIIix3ZWVrOiLlkagiLGRheToi5pelIixsaXN0OiLml6XnqIsifSxhbGxEYXlUZXh0OiLlhajlpKkiLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGUpe3JldHVybiLlj6blpJYgIitlKyIg5LiqIn0sbm9FdmVudHNNZXNzYWdlOiLmsqHmnInkuovku7bmmL7npLoifSl9KCksZnVuY3Rpb24oKXshZnVuY3Rpb24oKXt2YXIgZT1hLmRlZmluZUxvY2FsZSgiemgtdHciLHttb250aHM6IuS4gOaciF/kuozmnIhf5LiJ5pyIX+Wbm+aciF/kupTmnIhf5YWt5pyIX+S4g+aciF/lhavmnIhf5Lmd5pyIX+WNgeaciF/ljYHkuIDmnIhf5Y2B5LqM5pyIIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiIx5pyIXzLmnIhfM+aciF805pyIXzXmnIhfNuaciF835pyIXzjmnIhfOeaciF8xMOaciF8xMeaciF8xMuaciCIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi5pif5pyf5pelX+aYn+acn+S4gF/mmJ/mnJ/kuoxf5pif5pyf5LiJX+aYn+acn+Wbm1/mmJ/mnJ/kupRf5pif5pyf5YWtIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IumAseaXpV/pgLHkuIBf6YCx5LqMX+mAseS4iV/pgLHlm5tf6YCx5LqUX+mAseWFrSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi5pelX+S4gF/kuoxf5LiJX+Wbm1/kupRf5YWtIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiQWjpu55tbeWIhiIsTFRTOiJBaOm7nm3liIZz56eSIixMOiJZWVlZ5bm0TU1NROaXpSIsTEw6IllZWVnlubRNTU1E5pelIixMTEw6IllZWVnlubRNTU1E5pelQWjpu55tbeWIhiIsTExMTDoiWVlZWeW5tE1NTUTml6VkZGRkQWjpu55tbeWIhiIsbDoiWVlZWeW5tE1NTUTml6UiLGxsOiJZWVlZ5bm0TU1NROaXpSIsbGxsOiJZWVlZ5bm0TU1NROaXpUFo6buebW3liIYiLGxsbGw6IllZWVnlubRNTU1E5pelZGRkZEFo6buebW3liIYifSxtZXJpZGllbVBhcnNlOi/lh4zmmah85pep5LiKfOS4iuWNiHzkuK3ljYh85LiL5Y2IfOaZmuS4ii8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKGUsYSl7cmV0dXJuIDEyPT09ZSYmKGU9MCksIuWHjOaZqCI9PT1hfHwi5pep5LiKIj09PWF8fCLkuIrljYgiPT09YT9lOiLkuK3ljYgiPT09YT9lPj0xMT9lOmUrMTI6IuS4i+WNiCI9PT1hfHwi5pma5LiKIj09PWE/ZSsxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1bmN0aW9uKGUsYSx0KXt2YXIgbj0xMDAqZSthO3JldHVybiBuPDYwMD8i5YeM5pmoIjpuPDkwMD8i5pep5LiKIjpuPDExMzA/IuS4iuWNiCI6bjwxMjMwPyLkuK3ljYgiOm48MTgwMD8i5LiL5Y2IIjoi5pma5LiKIn0sY2FsZW5kYXI6e3NhbWVEYXk6Ilvku4rlpKldTFQiLG5leHREYXk6IlvmmI7lpKldTFQiLG5leHRXZWVrOiJb5LiLXWRkZGRMVCIsbGFzdERheToiW+aYqOWkqV1MVCIsbGFzdFdlZWs6IlvkuIpdZGRkZExUIixzYW1lRWxzZToiTCJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfSjml6V85pyIfOmAsSkvLG9yZGluYWw6ZnVuY3Rpb24oZSxhKXtzd2l0Y2goYSl7Y2FzZSJkIjpjYXNlIkQiOmNhc2UiREREIjpyZXR1cm4gZSsi5pelIjtjYXNlIk0iOnJldHVybiBlKyLmnIgiO2Nhc2UidyI6Y2FzZSJXIjpyZXR1cm4gZSsi6YCxIjtkZWZhdWx0OnJldHVybiBlfX0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVz5YWnIixwYXN0OiIlc+WJjSIsczoi5bm+56eSIixtOiIxIOWIhumQmCIsbW06IiVkIOWIhumQmCIsaDoiMSDlsI/mmYIiLGhoOiIlZCDlsI/mmYIiLGQ6IjEg5aSpIixkZDoiJWQg5aSpIixNOiIxIOWAi+aciCIsTU06IiVkIOWAi+aciCIseToiMSDlubQiLHl5OiIlZCDlubQifX0pO3JldHVybiBlfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoInpoLXR3IiwiemgtVFciLHtjbG9zZVRleHQ6IumXnOmWiSIscHJldlRleHQ6IiYjeDNDO+S4iuaciCIsbmV4dFRleHQ6IuS4i+aciCYjeDNFOyIsY3VycmVudFRleHQ6IuS7iuWkqSIsbW9udGhOYW1lczpbIuS4gOaciCIsIuS6jOaciCIsIuS4ieaciCIsIuWbm+aciCIsIuS6lOaciCIsIuWFreaciCIsIuS4g+aciCIsIuWFq+aciCIsIuS5neaciCIsIuWNgeaciCIsIuWNgeS4gOaciCIsIuWNgeS6jOaciCJdLG1vbnRoTmFtZXNTaG9ydDpbIuS4gOaciCIsIuS6jOaciCIsIuS4ieaciCIsIuWbm+aciCIsIuS6lOaciCIsIuWFreaciCIsIuS4g+aciCIsIuWFq+aciCIsIuS5neaciCIsIuWNgeaciCIsIuWNgeS4gOaciCIsIuWNgeS6jOaciCJdLGRheU5hbWVzOlsi5pif5pyf5pelIiwi5pif5pyf5LiAIiwi5pif5pyf5LqMIiwi5pif5pyf5LiJIiwi5pif5pyf5ZubIiwi5pif5pyf5LqUIiwi5pif5pyf5YWtIl0sZGF5TmFtZXNTaG9ydDpbIuWRqOaXpSIsIuWRqOS4gCIsIuWRqOS6jCIsIuWRqOS4iSIsIuWRqOWbmyIsIuWRqOS6lCIsIuWRqOWFrSJdLGRheU5hbWVzTWluOlsi5pelIiwi5LiAIiwi5LqMIiwi5LiJIiwi5ZubIiwi5LqUIiwi5YWtIl0sd2Vla0hlYWRlcjoi5ZGoIixkYXRlRm9ybWF0OiJ5eS9tbS9kZCIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITAseWVhclN1ZmZpeDoi5bm0In0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiemgtdHciLHtidXR0b25UZXh0Onttb250aDoi5pyIIix3ZWVrOiLpgLEiLGRheToi5aSpIixsaXN0OiLmtLvli5XliJfooagifSxhbGxEYXlUZXh0OiLmlbTlpKkiLGV2ZW50TGltaXRUZXh0OiLpoa/npLrmm7TlpJoiLG5vRXZlbnRzTWVzc2FnZToi5rKh5pyJ5Lu75L2V5rS75YuVIn0pfSgpLGEubG9jYWxlKCJlbiIpLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiZW4iKSxlLmRhdGVwaWNrZXImJmUuZGF0ZXBpY2tlci5zZXREZWZhdWx0cyhlLmRhdGVwaWNrZXIucmVnaW9uYWxbIiJdKX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/af.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsYSl7IWZ1bmN0aW9uKCl7dmFyIGU9YS5kZWZpbmVMb2NhbGUoImFmIix7bW9udGhzOiJKYW51YXJpZV9GZWJydWFyaWVfTWFhcnRfQXByaWxfTWVpX0p1bmllX0p1bGllX0F1Z3VzdHVzX1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0Rlc2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRmViX01ydF9BcHJfTWVpX0p1bl9KdWxfQXVnX1NlcF9Pa3RfTm92X0RlcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiU29uZGFnX01hYW5kYWdfRGluc2RhZ19Xb2Vuc2RhZ19Eb25kZXJkYWdfVnJ5ZGFnX1NhdGVyZGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlNvbl9NYWFfRGluX1dvZV9Eb25fVnJ5X1NhdCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU29fTWFfRGlfV29fRG9fVnJfU2EiLnNwbGl0KCJfIiksbWVyaWRpZW1QYXJzZTovdm18bm0vaSxpc1BNOmZ1bmN0aW9uKGUpe3JldHVybi9ebm0kL2kudGVzdChlKX0sbWVyaWRpZW06ZnVuY3Rpb24oZSxhLG4pe3JldHVybiBlPDEyP24/InZtIjoiVk0iOm4/Im5tIjoiTk0ifSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltWYW5kYWcgb21dIExUIixuZXh0RGF5OiJbTcO0cmUgb21dIExUIixuZXh0V2VlazoiZGRkZCBbb21dIExUIixsYXN0RGF5OiJbR2lzdGVyIG9tXSBMVCIsbGFzdFdlZWs6IltMYWFzXSBkZGRkIFtvbV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im9vciAlcyIscGFzdDoiJXMgZ2VsZWRlIixzOiInbiBwYWFyIHNla29uZGVzIixtOiInbiBtaW51dXQiLG1tOiIlZCBtaW51dGUiLGg6IiduIHV1ciIsaGg6IiVkIHVyZSIsZDoiJ24gZGFnIixkZDoiJWQgZGFlIixNOiInbiBtYWFuZCIsTU06IiVkIG1hYW5kZSIseToiJ24gamFhciIseXk6IiVkIGphYXIifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0oc3RlfGRlKS8sb3JkaW5hbDpmdW5jdGlvbihlKXtyZXR1cm4gZSsoMT09PWV8fDg9PT1lfHxlPj0yMD8ic3RlIjoiZGUiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSk7cmV0dXJuIGV9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgiYWYiLCJhZiIse2Nsb3NlVGV4dDoiU2VsZWt0ZWVyIixwcmV2VGV4dDoiVm9yaWdlIixuZXh0VGV4dDoiVm9sZ2VuZGUiLGN1cnJlbnRUZXh0OiJWYW5kYWciLG1vbnRoTmFtZXM6WyJKYW51YXJpZSIsIkZlYnJ1YXJpZSIsIk1hYXJ0IiwiQXByaWwiLCJNZWkiLCJKdW5pZSIsIkp1bGllIiwiQXVndXN0dXMiLCJTZXB0ZW1iZXIiLCJPa3RvYmVyIiwiTm92ZW1iZXIiLCJEZXNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1ydCIsIkFwciIsIk1laSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9rdCIsIk5vdiIsIkRlcyJdLGRheU5hbWVzOlsiU29uZGFnIiwiTWFhbmRhZyIsIkRpbnNkYWciLCJXb2Vuc2RhZyIsIkRvbmRlcmRhZyIsIlZyeWRhZyIsIlNhdGVyZGFnIl0sZGF5TmFtZXNTaG9ydDpbIlNvbiIsIk1hYSIsIkRpbiIsIldvZSIsIkRvbiIsIlZyeSIsIlNhdCJdLGRheU5hbWVzTWluOlsiU28iLCJNYSIsIkRpIiwiV28iLCJEbyIsIlZyIiwiU2EiXSx3ZWVrSGVhZGVyOiJXayIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoImFmIix7YnV0dG9uVGV4dDp7eWVhcjoiSmFhciIsbW9udGg6Ik1hYW5kIix3ZWVrOiJXZWVrIixkYXk6IkRhZyIsbGlzdDoiQWdlbmRhIn0sYWxsRGF5SHRtbDoiSGVlbGRhZyIsZXZlbnRMaW1pdFRleHQ6IkFkZGlzaW9uZWxlIixub0V2ZW50c01lc3NhZ2U6IkRhYXIgaXMgZ2VlbiBnZWJldXJ0ZW5pcyJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/ar-dz.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKCl7dmFyIGU9dC5kZWZpbmVMb2NhbGUoImFyLWR6Iix7bW9udGhzOiLYrNin2YbZgdmKX9mB2YrZgdix2Ypf2YXYp9ix2LNf2KPZgdix2YrZhF/Zhdin2Ypf2KzZiNin2YZf2KzZiNmK2YTZitipX9ij2YjYql/Ys9io2KrZhdio2LFf2KPZg9iq2YjYqNixX9mG2YjZgdmF2KjYsV/Yr9mK2LPZhdio2LEiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Itis2KfZhtmB2Ypf2YHZitmB2LHZil/Zhdin2LHYs1/Yo9mB2LHZitmEX9mF2KfZil/YrNmI2KfZhl/YrNmI2YrZhNmK2Klf2KPZiNiqX9iz2KjYqtmF2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmB2YXYqNixX9iv2YrYs9mF2KjYsSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Itin2K3Yr1/Yp9ir2YbZitmGX9ir2YTYp9ir2KfYoV/Yp9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLYo9itX9il2Ktf2KvZhNinX9ij2LFf2K7ZhV/YrNmFX9iz2KgiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb2KfZhNmK2YjZhSDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsbmV4dERheToiW9i62K/YpyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsbmV4dFdlZWs6ImRkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUIixsYXN0RGF5OiJb2KPZhdizINi52YTZiSDYp9mE2LPYp9i52KldIExUIixsYXN0V2VlazoiZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ItmB2YogJXMiLHBhc3Q6ItmF2YbYsCAlcyIsczoi2KvZiNin2YYiLG06Itiv2YLZitmC2KkiLG1tOiIlZCDYr9mC2KfYptmCIixoOiLYs9in2LnYqSIsaGg6IiVkINiz2KfYudin2KoiLGQ6ItmK2YjZhSIsZGQ6IiVkINij2YrYp9mFIixNOiLYtNmH2LEiLE1NOiIlZCDYo9i02YfYsSIseToi2LPZhtipIix5eToiJWQg2LPZhtmI2KfYqiJ9LHdlZWs6e2RvdzowLGRveTo0fX0pO3JldHVybiBlfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoImFyLWR6IiwiYXItRFoiLHtjbG9zZVRleHQ6Itil2LrZhNin2YIiLHByZXZUZXh0OiImI3gzQzvYp9mE2LPYp9io2YIiLG5leHRUZXh0OiLYp9mE2KrYp9mE2YomI3gzRTsiLGN1cnJlbnRUZXh0OiLYp9mE2YrZiNmFIixtb250aE5hbWVzOlsi2KzYp9mG2YHZiiIsItmB2YrZgdix2YoiLCLZhdin2LHYsyIsItij2YHYsdmK2YQiLCLZhdin2YoiLCLYrNmI2KfZhiIsItis2YjZitmE2YrYqSIsItij2YjYqiIsItiz2KjYqtmF2KjYsSIsItij2YPYqtmI2KjYsSIsItmG2YjZgdmF2KjYsSIsItiv2YrYs9mF2KjYsSJdLG1vbnRoTmFtZXNTaG9ydDpbIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEwIiwiMTEiLCIxMiJdLGRheU5hbWVzOlsi2KfZhNij2K3YryIsItin2YTYp9ir2YbZitmGIiwi2KfZhNir2YTYp9ir2KfYoSIsItin2YTYo9ix2KjYudin2KEiLCLYp9mE2K7ZhdmK2LMiLCLYp9mE2KzZhdi52KkiLCLYp9mE2LPYqNiqIl0sZGF5TmFtZXNTaG9ydDpbItin2YTYo9it2K8iLCLYp9mE2KfYq9mG2YrZhiIsItin2YTYq9mE2KfYq9in2KEiLCLYp9mE2KPYsdio2LnYp9ihIiwi2KfZhNiu2YXZitizIiwi2KfZhNis2YXYudipIiwi2KfZhNiz2KjYqiJdLGRheU5hbWVzTWluOlsi2K0iLCLZhiIsItirIiwi2LEiLCLYriIsItisIiwi2LMiXSx3ZWVrSGVhZGVyOiLYo9iz2KjZiNi5IixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6Nixpc1JUTDohMCxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiYXItZHoiLHtidXR0b25UZXh0Onttb250aDoi2LTZh9ixIix3ZWVrOiLYo9iz2KjZiNi5IixkYXk6ItmK2YjZhSIsbGlzdDoi2KPYrNmG2K/YqSJ9LGFsbERheVRleHQ6Itin2YTZitmI2YUg2YPZhNmHIixldmVudExpbWl0VGV4dDoi2KPYrtix2YkiLG5vRXZlbnRzTWVzc2FnZToi2KPZiiDYo9it2K/Yp9irINmE2LnYsdi2In0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/ar-ly.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKCl7dmFyIGU9ezE6IjEiLDI6IjIiLDM6IjMiLDQ6IjQiLDU6IjUiLDY6IjYiLDc6IjciLDg6IjgiLDk6IjkiLDA6IjAifSxyPWZ1bmN0aW9uKGUpe3JldHVybiAwPT09ZT8wOjE9PT1lPzE6Mj09PWU/MjplJTEwMD49MyYmZSUxMDA8PTEwPzM6ZSUxMDA+PTExPzQ6NX0sZD17czpbItij2YLZhCDZhdmGINir2KfZhtmK2KkiLCLYq9in2YbZitipINmI2KfYrdiv2KkiLFsi2KvYp9mG2YrYqtin2YYiLCLYq9in2YbZitiq2YrZhiJdLCIlZCDYq9mI2KfZhiIsIiVkINir2KfZhtmK2KkiLCIlZCDYq9in2YbZitipIl0sbTpbItij2YLZhCDZhdmGINiv2YLZitmC2KkiLCLYr9mC2YrZgtipINmI2KfYrdiv2KkiLFsi2K/ZgtmK2YLYqtin2YYiLCLYr9mC2YrZgtiq2YrZhiJdLCIlZCDYr9mC2KfYptmCIiwiJWQg2K/ZgtmK2YLYqSIsIiVkINiv2YLZitmC2KkiXSxoOlsi2KPZgtmEINmF2YYg2LPYp9i52KkiLCLYs9in2LnYqSDZiNin2K3Yr9ipIixbItiz2KfYudiq2KfZhiIsItiz2KfYudiq2YrZhiJdLCIlZCDYs9in2LnYp9iqIiwiJWQg2LPYp9i52KkiLCIlZCDYs9in2LnYqSJdLGQ6WyLYo9mC2YQg2YXZhiDZitmI2YUiLCLZitmI2YUg2YjYp9it2K8iLFsi2YrZiNmF2KfZhiIsItmK2YjZhdmK2YYiXSwiJWQg2KPZitin2YUiLCIlZCDZitmI2YXZi9inIiwiJWQg2YrZiNmFIl0sTTpbItij2YLZhCDZhdmGINi02YfYsSIsIti02YfYsSDZiNin2K3YryIsWyLYtNmH2LHYp9mGIiwi2LTZh9ix2YrZhiJdLCIlZCDYo9i02YfYsSIsIiVkINi02YfYsdinIiwiJWQg2LTZh9ixIl0seTpbItij2YLZhCDZhdmGINi52KfZhSIsIti52KfZhSDZiNin2K3YryIsWyLYudin2YXYp9mGIiwi2LnYp9mF2YrZhiJdLCIlZCDYo9i52YjYp9mFIiwiJWQg2LnYp9mF2YvYpyIsIiVkINi52KfZhSJdfSxhPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0LGEsbixtKXt2YXIgbz1yKHQpLHM9ZFtlXVtyKHQpXTtyZXR1cm4gMj09PW8mJihzPXNbYT8wOjFdKSxzLnJlcGxhY2UoLyVkL2ksdCl9fSxuPVsi2YrZhtin2YrYsSIsItmB2KjYsdin2YrYsSIsItmF2KfYsdizIiwi2KPYqNix2YrZhCIsItmF2KfZitmIIiwi2YrZiNmG2YrZiCIsItmK2YjZhNmK2YgiLCLYo9i62LPYt9izIiwi2LPYqNiq2YXYqNixIiwi2KPZg9iq2YjYqNixIiwi2YbZiNmB2YXYqNixIiwi2K/Zitiz2YXYqNixIl0sbT10LmRlZmluZUxvY2FsZSgiYXItbHkiLHttb250aHM6bixtb250aHNTaG9ydDpuLHdlZWtkYXlzOiLYp9mE2KPYrdivX9in2YTYpdir2YbZitmGX9in2YTYq9mE2KfYq9in2KFf2KfZhNij2LHYqNi52KfYoV/Yp9mE2K7ZhdmK2LNf2KfZhNis2YXYudipX9in2YTYs9io2KoiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi2KPYrdivX9il2KvZhtmK2YZf2KvZhNin2KvYp9ihX9ij2LHYqNi52KfYoV/YrtmF2YrYs1/YrNmF2LnYqV/Ys9io2KoiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ItitX9mGX9irX9ixX9iuX9isX9izIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJEL+KAj00v4oCPWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTov2LV82YUvLGlzUE06ZnVuY3Rpb24oZSl7cmV0dXJuItmFIj09PWV9LG1lcmlkaWVtOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZTwxMj8i2LUiOiLZhSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb2KfZhNmK2YjZhSDYudmG2K8g2KfZhNiz2KfYudipXSBMVCIsbmV4dERheToiW9i62K/Zi9inINi52YbYryDYp9mE2LPYp9i52KldIExUIixuZXh0V2VlazoiZGRkZCBb2LnZhtivINin2YTYs9in2LnYqV0gTFQiLGxhc3REYXk6IlvYo9mF2LMg2LnZhtivINin2YTYs9in2LnYqV0gTFQiLGxhc3RXZWVrOiJkZGRkIFvYudmG2K8g2KfZhNiz2KfYudipXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi2KjYudivICVzIixwYXN0OiLZhdmG2LAgJXMiLHM6YSgicyIpLG06YSgibSIpLG1tOmEoIm0iKSxoOmEoImgiKSxoaDphKCJoIiksZDphKCJkIiksZGQ6YSgiZCIpLE06YSgiTSIpLE1NOmEoIk0iKSx5OmEoInkiKSx5eTphKCJ5Iil9LHByZXBhcnNlOmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL1x1MjAwZi9nLCIiKS5yZXBsYWNlKC/YjC9nLCIsIil9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFjZSgvXGQvZyxmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pLnJlcGxhY2UoLywvZywi2IwiKX0sd2Vlazp7ZG93OjYsZG95OjEyfX0pO3JldHVybiBtfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoImFyLWx5IiwiYXIiLHtjbG9zZVRleHQ6Itil2LrZhNin2YIiLHByZXZUZXh0OiImI3gzQzvYp9mE2LPYp9io2YIiLG5leHRUZXh0OiLYp9mE2KrYp9mE2YomI3gzRTsiLGN1cnJlbnRUZXh0OiLYp9mE2YrZiNmFIixtb250aE5hbWVzOlsi2YrZhtin2YrYsSIsItmB2KjYsdin2YrYsSIsItmF2KfYsdizIiwi2KPYqNix2YrZhCIsItmF2KfZitmIIiwi2YrZiNmG2YrZiCIsItmK2YjZhNmK2YgiLCLYo9i62LPYt9izIiwi2LPYqNiq2YXYqNixIiwi2KPZg9iq2YjYqNixIiwi2YbZiNmB2YXYqNixIiwi2K/Zitiz2YXYqNixIl0sbW9udGhOYW1lc1Nob3J0OlsiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiMTAiLCIxMSIsIjEyIl0sZGF5TmFtZXM6WyLYp9mE2KPYrdivIiwi2KfZhNin2KvZhtmK2YYiLCLYp9mE2KvZhNin2KvYp9ihIiwi2KfZhNij2LHYqNi52KfYoSIsItin2YTYrtmF2YrYsyIsItin2YTYrNmF2LnYqSIsItin2YTYs9io2KoiXSxkYXlOYW1lc1Nob3J0Olsi2KPYrdivIiwi2KfYq9mG2YrZhiIsItir2YTYp9ir2KfYoSIsItij2LHYqNi52KfYoSIsItiu2YXZitizIiwi2KzZhdi52KkiLCLYs9io2KoiXSxkYXlOYW1lc01pbjpbItitIiwi2YYiLCLYqyIsItixIiwi2K4iLCLYrCIsItizIl0sd2Vla0hlYWRlcjoi2KPYs9io2YjYuSIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjAsaXNSVEw6ITAsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoImFyLWx5Iix7YnV0dG9uVGV4dDp7bW9udGg6Iti02YfYsSIsd2Vlazoi2KPYs9io2YjYuSIsZGF5OiLZitmI2YUiLGxpc3Q6Itij2KzZhtiv2KkifSxhbGxEYXlUZXh0OiLYp9mE2YrZiNmFINmD2YTZhyIsZXZlbnRMaW1pdFRleHQ6Itij2K7YsdmJIixub0V2ZW50c01lc3NhZ2U6Itij2Yog2KPYrdiv2KfYqyDZhNi52LHYtiJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/ar-ma.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKCl7dmFyIGU9dC5kZWZpbmVMb2NhbGUoImFyLW1hIix7bW9udGhzOiLZitmG2KfZitixX9mB2KjYsdin2YrYsV/Zhdin2LHYs1/Yo9io2LHZitmEX9mF2KfZil/ZitmI2YbZitmIX9mK2YjZhNmK2YjYsl/Yuti02Kpf2LTYqtmG2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmG2KjYsV/Yr9is2YbYqNixIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiLZitmG2KfZitixX9mB2KjYsdin2YrYsV/Zhdin2LHYs1/Yo9io2LHZitmEX9mF2KfZil/ZitmI2YbZitmIX9mK2YjZhNmK2YjYsl/Yuti02Kpf2LTYqtmG2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmG2KjYsV/Yr9is2YbYqNixIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiLYp9mE2KPYrdivX9in2YTYpdiq2YbZitmGX9in2YTYq9mE2KfYq9in2KFf2KfZhNij2LHYqNi52KfYoV/Yp9mE2K7ZhdmK2LNf2KfZhNis2YXYudipX9in2YTYs9io2KoiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi2KfYrdivX9in2KrZhtmK2YZf2KvZhNin2KvYp9ihX9in2LHYqNi52KfYoV/YrtmF2YrYs1/YrNmF2LnYqV/Ys9io2KoiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ItitX9mGX9irX9ixX9iuX9isX9izIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW9in2YTZitmI2YUg2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLG5leHREYXk6IlvYutiv2Kcg2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLG5leHRXZWVrOiJkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsbGFzdERheToiW9ij2YXYsyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsbGFzdFdlZWs6ImRkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLZgdmKICVzIixwYXN0OiLZhdmG2LAgJXMiLHM6Itir2YjYp9mGIixtOiLYr9mC2YrZgtipIixtbToiJWQg2K/Zgtin2KbZgiIsaDoi2LPYp9i52KkiLGhoOiIlZCDYs9in2LnYp9iqIixkOiLZitmI2YUiLGRkOiIlZCDYo9mK2KfZhSIsTToi2LTZh9ixIixNTToiJWQg2KPYtNmH2LEiLHk6Itiz2YbYqSIseXk6IiVkINiz2YbZiNin2KoifSx3ZWVrOntkb3c6Nixkb3k6MTJ9fSk7cmV0dXJuIGV9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgiYXItbWEiLCJhciIse2Nsb3NlVGV4dDoi2KXYutmE2KfZgiIscHJldlRleHQ6IiYjeDNDO9in2YTYs9in2KjZgiIsbmV4dFRleHQ6Itin2YTYqtin2YTZiiYjeDNFOyIsY3VycmVudFRleHQ6Itin2YTZitmI2YUiLG1vbnRoTmFtZXM6WyLZitmG2KfZitixIiwi2YHYqNix2KfZitixIiwi2YXYp9ix2LMiLCLYo9io2LHZitmEIiwi2YXYp9mK2YgiLCLZitmI2YbZitmIIiwi2YrZiNmE2YrZiCIsItij2LrYs9i32LMiLCLYs9io2KrZhdio2LEiLCLYo9mD2KrZiNio2LEiLCLZhtmI2YHZhdio2LEiLCLYr9mK2LPZhdio2LEiXSxtb250aE5hbWVzU2hvcnQ6WyIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiXSxkYXlOYW1lczpbItin2YTYo9it2K8iLCLYp9mE2KfYq9mG2YrZhiIsItin2YTYq9mE2KfYq9in2KEiLCLYp9mE2KPYsdio2LnYp9ihIiwi2KfZhNiu2YXZitizIiwi2KfZhNis2YXYudipIiwi2KfZhNiz2KjYqiJdLGRheU5hbWVzU2hvcnQ6WyLYo9it2K8iLCLYp9ir2YbZitmGIiwi2KvZhNin2KvYp9ihIiwi2KPYsdio2LnYp9ihIiwi2K7ZhdmK2LMiLCLYrNmF2LnYqSIsItiz2KjYqiJdLGRheU5hbWVzTWluOlsi2K0iLCLZhiIsItirIiwi2LEiLCLYriIsItisIiwi2LMiXSx3ZWVrSGVhZGVyOiLYo9iz2KjZiNi5IixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MCxpc1JUTDohMCxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiYXItbWEiLHtidXR0b25UZXh0Onttb250aDoi2LTZh9ixIix3ZWVrOiLYo9iz2KjZiNi5IixkYXk6ItmK2YjZhSIsbGlzdDoi2KPYrNmG2K/YqSJ9LGFsbERheVRleHQ6Itin2YTZitmI2YUg2YPZhNmHIixldmVudExpbWl0VGV4dDoi2KPYrtix2YkiLG5vRXZlbnRzTWVzc2FnZToi2KPZiiDYo9it2K/Yp9irINmE2LnYsdi2In0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/ar-sa.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKCl7dmFyIGU9ezE6ItmhIiwyOiLZoiIsMzoi2aMiLDQ6ItmkIiw1OiLZpSIsNjoi2aYiLDc6ItmnIiw4OiLZqCIsOToi2akiLDA6ItmgIn0sYT17ItmhIjoiMSIsItmiIjoiMiIsItmjIjoiMyIsItmkIjoiNCIsItmlIjoiNSIsItmmIjoiNiIsItmnIjoiNyIsItmoIjoiOCIsItmpIjoiOSIsItmgIjoiMCJ9LHI9dC5kZWZpbmVMb2NhbGUoImFyLXNhIix7bW9udGhzOiLZitmG2KfZitixX9mB2KjYsdin2YrYsV/Zhdin2LHYs1/Yo9io2LHZitmEX9mF2KfZitmIX9mK2YjZhtmK2Yhf2YrZiNmE2YrZiF/Yo9i62LPYt9izX9iz2KjYqtmF2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmB2YXYqNixX9iv2YrYs9mF2KjYsSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoi2YrZhtin2YrYsV/Zgdio2LHYp9mK2LFf2YXYp9ix2LNf2KPYqNix2YrZhF/Zhdin2YrZiF/ZitmI2YbZitmIX9mK2YjZhNmK2Yhf2KPYutiz2LfYs1/Ys9io2KrZhdio2LFf2KPZg9iq2YjYqNixX9mG2YjZgdmF2KjYsV/Yr9mK2LPZhdio2LEiLnNwbGl0KCJfIiksd2Vla2RheXM6Itin2YTYo9it2K9f2KfZhNil2KvZhtmK2YZf2KfZhNir2YTYp9ir2KfYoV/Yp9mE2KPYsdio2LnYp9ihX9in2YTYrtmF2YrYs1/Yp9mE2KzZhdi52Klf2KfZhNiz2KjYqiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLYo9it2K9f2KXYq9mG2YrZhl/Yq9mE2KfYq9in2KFf2KPYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi2K1f2YZf2Ktf2LFf2K5f2Kxf2LMiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBISDptbSJ9LG1lcmlkaWVtUGFyc2U6L9i1fNmFLyxpc1BNOmZ1bmN0aW9uKGUpe3JldHVybiLZhSI9PT1lfSxtZXJpZGllbTpmdW5jdGlvbihlLHQsYSl7cmV0dXJuIGU8MTI/Iti1Ijoi2YUifSxjYWxlbmRhcjp7c2FtZURheToiW9in2YTZitmI2YUg2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLG5leHREYXk6IlvYutiv2Kcg2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLG5leHRXZWVrOiJkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsbGFzdERheToiW9ij2YXYsyDYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsbGFzdFdlZWs6ImRkZGQgW9i52YTZiSDYp9mE2LPYp9i52KldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLZgdmKICVzIixwYXN0OiLZhdmG2LAgJXMiLHM6Itir2YjYp9mGIixtOiLYr9mC2YrZgtipIixtbToiJWQg2K/Zgtin2KbZgiIsaDoi2LPYp9i52KkiLGhoOiIlZCDYs9in2LnYp9iqIixkOiLZitmI2YUiLGRkOiIlZCDYo9mK2KfZhSIsTToi2LTZh9ixIixNTToiJWQg2KPYtNmH2LEiLHk6Itiz2YbYqSIseXk6IiVkINiz2YbZiNin2KoifSxwcmVwYXJzZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9b2aHZotmj2aTZpdmm2afZqNmp2aBdL2csZnVuY3Rpb24oZSl7cmV0dXJuIGFbZV19KS5yZXBsYWNlKC/YjC9nLCIsIil9LHBvc3Rmb3JtYXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFjZSgvXGQvZyxmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pLnJlcGxhY2UoLywvZywi2IwiKX0sd2Vlazp7ZG93OjAsZG95OjZ9fSk7cmV0dXJuIHJ9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgiYXItc2EiLCJhciIse2Nsb3NlVGV4dDoi2KXYutmE2KfZgiIscHJldlRleHQ6IiYjeDNDO9in2YTYs9in2KjZgiIsbmV4dFRleHQ6Itin2YTYqtin2YTZiiYjeDNFOyIsY3VycmVudFRleHQ6Itin2YTZitmI2YUiLG1vbnRoTmFtZXM6WyLZitmG2KfZitixIiwi2YHYqNix2KfZitixIiwi2YXYp9ix2LMiLCLYo9io2LHZitmEIiwi2YXYp9mK2YgiLCLZitmI2YbZitmIIiwi2YrZiNmE2YrZiCIsItij2LrYs9i32LMiLCLYs9io2KrZhdio2LEiLCLYo9mD2KrZiNio2LEiLCLZhtmI2YHZhdio2LEiLCLYr9mK2LPZhdio2LEiXSxtb250aE5hbWVzU2hvcnQ6WyIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiXSxkYXlOYW1lczpbItin2YTYo9it2K8iLCLYp9mE2KfYq9mG2YrZhiIsItin2YTYq9mE2KfYq9in2KEiLCLYp9mE2KPYsdio2LnYp9ihIiwi2KfZhNiu2YXZitizIiwi2KfZhNis2YXYudipIiwi2KfZhNiz2KjYqiJdLGRheU5hbWVzU2hvcnQ6WyLYo9it2K8iLCLYp9ir2YbZitmGIiwi2KvZhNin2KvYp9ihIiwi2KPYsdio2LnYp9ihIiwi2K7ZhdmK2LMiLCLYrNmF2LnYqSIsItiz2KjYqiJdLGRheU5hbWVzTWluOlsi2K0iLCLZhiIsItirIiwi2LEiLCLYriIsItisIiwi2LMiXSx3ZWVrSGVhZGVyOiLYo9iz2KjZiNi5IixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MCxpc1JUTDohMCxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiYXItc2EiLHtidXR0b25UZXh0Onttb250aDoi2LTZh9ixIix3ZWVrOiLYo9iz2KjZiNi5IixkYXk6ItmK2YjZhSIsbGlzdDoi2KPYrNmG2K/YqSJ9LGFsbERheVRleHQ6Itin2YTZitmI2YUg2YPZhNmHIixldmVudExpbWl0VGV4dDoi2KPYrtix2YkiLG5vRXZlbnRzTWVzc2FnZToi2KPZiiDYo9it2K/Yp9irINmE2LnYsdi2In0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/ar-tn.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKCl7dmFyIGU9dC5kZWZpbmVMb2NhbGUoImFyLXRuIix7bW9udGhzOiLYrNin2YbZgdmKX9mB2YrZgdix2Ypf2YXYp9ix2LNf2KPZgdix2YrZhF/Zhdin2Ypf2KzZiNin2YZf2KzZiNmK2YTZitipX9ij2YjYql/Ys9io2KrZhdio2LFf2KPZg9iq2YjYqNixX9mG2YjZgdmF2KjYsV/Yr9mK2LPZhdio2LEiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Itis2KfZhtmB2Ypf2YHZitmB2LHZil/Zhdin2LHYs1/Yo9mB2LHZitmEX9mF2KfZil/YrNmI2KfZhl/YrNmI2YrZhNmK2Klf2KPZiNiqX9iz2KjYqtmF2KjYsV/Yo9mD2KrZiNio2LFf2YbZiNmB2YXYqNixX9iv2YrYs9mF2KjYsSIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi2KfZhNij2K3Yr1/Yp9mE2KXYq9mG2YrZhl/Yp9mE2KvZhNin2KvYp9ihX9in2YTYo9ix2KjYudin2KFf2KfZhNiu2YXZitizX9in2YTYrNmF2LnYqV/Yp9mE2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Itij2K3Yr1/Ypdir2YbZitmGX9ir2YTYp9ir2KfYoV/Yo9ix2KjYudin2KFf2K7ZhdmK2LNf2KzZhdi52Klf2LPYqNiqIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLYrV/Zhl/Yq1/YsV/Yrl/YrF/YsyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvYp9mE2YrZiNmFINi52YTZiSDYp9mE2LPYp9i52KldIExUIixuZXh0RGF5OiJb2LrYr9inINi52YTZiSDYp9mE2LPYp9i52KldIExUIixuZXh0V2VlazoiZGRkZCBb2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLGxhc3REYXk6IlvYo9mF2LMg2LnZhNmJINin2YTYs9in2LnYqV0gTFQiLGxhc3RXZWVrOiJkZGRkIFvYudmE2Ykg2KfZhNiz2KfYudipXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi2YHZiiAlcyIscGFzdDoi2YXZhtiwICVzIixzOiLYq9mI2KfZhiIsbToi2K/ZgtmK2YLYqSIsbW06IiVkINiv2YLYp9im2YIiLGg6Itiz2KfYudipIixoaDoiJWQg2LPYp9i52KfYqiIsZDoi2YrZiNmFIixkZDoiJWQg2KPZitin2YUiLE06Iti02YfYsSIsTU06IiVkINij2LTZh9ixIix5OiLYs9mG2KkiLHl5OiIlZCDYs9mG2YjYp9iqIn0sd2Vlazp7ZG93OjEsZG95OjR9fSk7cmV0dXJuIGV9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgiYXItdG4iLCJhciIse2Nsb3NlVGV4dDoi2KXYutmE2KfZgiIscHJldlRleHQ6IiYjeDNDO9in2YTYs9in2KjZgiIsbmV4dFRleHQ6Itin2YTYqtin2YTZiiYjeDNFOyIsY3VycmVudFRleHQ6Itin2YTZitmI2YUiLG1vbnRoTmFtZXM6WyLZitmG2KfZitixIiwi2YHYqNix2KfZitixIiwi2YXYp9ix2LMiLCLYo9io2LHZitmEIiwi2YXYp9mK2YgiLCLZitmI2YbZitmIIiwi2YrZiNmE2YrZiCIsItij2LrYs9i32LMiLCLYs9io2KrZhdio2LEiLCLYo9mD2KrZiNio2LEiLCLZhtmI2YHZhdio2LEiLCLYr9mK2LPZhdio2LEiXSxtb250aE5hbWVzU2hvcnQ6WyIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiXSxkYXlOYW1lczpbItin2YTYo9it2K8iLCLYp9mE2KfYq9mG2YrZhiIsItin2YTYq9mE2KfYq9in2KEiLCLYp9mE2KPYsdio2LnYp9ihIiwi2KfZhNiu2YXZitizIiwi2KfZhNis2YXYudipIiwi2KfZhNiz2KjYqiJdLGRheU5hbWVzU2hvcnQ6WyLYo9it2K8iLCLYp9ir2YbZitmGIiwi2KvZhNin2KvYp9ihIiwi2KPYsdio2LnYp9ihIiwi2K7ZhdmK2LMiLCLYrNmF2LnYqSIsItiz2KjYqiJdLGRheU5hbWVzTWluOlsi2K0iLCLZhiIsItirIiwi2LEiLCLYriIsItisIiwi2LMiXSx3ZWVrSGVhZGVyOiLYo9iz2KjZiNi5IixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MCxpc1JUTDohMCxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiYXItdG4iLHtidXR0b25UZXh0Onttb250aDoi2LTZh9ixIix3ZWVrOiLYo9iz2KjZiNi5IixkYXk6ItmK2YjZhSIsbGlzdDoi2KPYrNmG2K/YqSJ9LGFsbERheVRleHQ6Itin2YTZitmI2YUg2YPZhNmHIixldmVudExpbWl0VGV4dDoi2KPYrtix2YkiLG5vRXZlbnRzTWVzc2FnZToi2KPZiiDYo9it2K/Yp9irINmE2LnYsdi2In0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/ar.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKCl7dmFyIGU9ezE6ItmhIiwyOiLZoiIsMzoi2aMiLDQ6ItmkIiw1OiLZpSIsNjoi2aYiLDc6ItmnIiw4OiLZqCIsOToi2akiLDA6ItmgIn0scj17ItmhIjoiMSIsItmiIjoiMiIsItmjIjoiMyIsItmkIjoiNCIsItmlIjoiNSIsItmmIjoiNiIsItmnIjoiNyIsItmoIjoiOCIsItmpIjoiOSIsItmgIjoiMCJ9LGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT1lPzA6MT09PWU/MToyPT09ZT8yOmUlMTAwPj0zJiZlJTEwMDw9MTA/MzplJTEwMD49MTE/NDo1fSxuPXtzOlsi2KPZgtmEINmF2YYg2KvYp9mG2YrYqSIsItir2KfZhtmK2Kkg2YjYp9it2K/YqSIsWyLYq9in2YbZitiq2KfZhiIsItir2KfZhtmK2KrZitmGIl0sIiVkINir2YjYp9mGIiwiJWQg2KvYp9mG2YrYqSIsIiVkINir2KfZhtmK2KkiXSxtOlsi2KPZgtmEINmF2YYg2K/ZgtmK2YLYqSIsItiv2YLZitmC2Kkg2YjYp9it2K/YqSIsWyLYr9mC2YrZgtiq2KfZhiIsItiv2YLZitmC2KrZitmGIl0sIiVkINiv2YLYp9im2YIiLCIlZCDYr9mC2YrZgtipIiwiJWQg2K/ZgtmK2YLYqSJdLGg6WyLYo9mC2YQg2YXZhiDYs9in2LnYqSIsItiz2KfYudipINmI2KfYrdiv2KkiLFsi2LPYp9i52KrYp9mGIiwi2LPYp9i52KrZitmGIl0sIiVkINiz2KfYudin2KoiLCIlZCDYs9in2LnYqSIsIiVkINiz2KfYudipIl0sZDpbItij2YLZhCDZhdmGINmK2YjZhSIsItmK2YjZhSDZiNin2K3YryIsWyLZitmI2YXYp9mGIiwi2YrZiNmF2YrZhiJdLCIlZCDYo9mK2KfZhSIsIiVkINmK2YjZhdmL2KciLCIlZCDZitmI2YUiXSxNOlsi2KPZgtmEINmF2YYg2LTZh9ixIiwi2LTZh9ixINmI2KfYrdivIixbIti02YfYsdin2YYiLCLYtNmH2LHZitmGIl0sIiVkINij2LTZh9ixIiwiJWQg2LTZh9ix2KciLCIlZCDYtNmH2LEiXSx5Olsi2KPZgtmEINmF2YYg2LnYp9mFIiwi2LnYp9mFINmI2KfYrdivIixbIti52KfZhdin2YYiLCLYudin2YXZitmGIl0sIiVkINij2LnZiNin2YUiLCIlZCDYudin2YXZi9inIiwiJWQg2LnYp9mFIl19LGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixhLG8pe3ZhciBtPWQodCkscz1uW2VdW2QodCldO3JldHVybiAyPT09bSYmKHM9c1tyPzA6MV0pLHMucmVwbGFjZSgvJWQvaSx0KX19LG89WyLZg9in2YbZiNmGINin2YTYq9in2YbZiiDZitmG2KfZitixIiwi2LTYqNin2Lcg2YHYqNix2KfZitixIiwi2KLYsNin2LEg2YXYp9ix2LMiLCLZhtmK2LPYp9mGINij2KjYsdmK2YQiLCLYo9mK2KfYsSDZhdin2YrZiCIsItit2LLZitix2KfZhiDZitmI2YbZitmIIiwi2KrZhdmI2LIg2YrZiNmE2YrZiCIsItii2Kgg2KPYutiz2LfYsyIsItij2YrZhNmI2YQg2LPYqNiq2YXYqNixIiwi2KrYtNix2YrZhiDYp9mE2KPZiNmEINij2YPYqtmI2KjYsSIsItiq2LTYsdmK2YYg2KfZhNir2KfZhtmKINmG2YjZgdmF2KjYsSIsItmD2KfZhtmI2YYg2KfZhNij2YjZhCDYr9mK2LPZhdio2LEiXSxtPXQuZGVmaW5lTG9jYWxlKCJhciIse21vbnRoczpvLG1vbnRoc1Nob3J0Om8sd2Vla2RheXM6Itin2YTYo9it2K9f2KfZhNil2KvZhtmK2YZf2KfZhNir2YTYp9ir2KfYoV/Yp9mE2KPYsdio2LnYp9ihX9in2YTYrtmF2YrYs1/Yp9mE2KzZhdi52Klf2KfZhNiz2KjYqiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLYo9it2K9f2KXYq9mG2YrZhl/Yq9mE2KfYq9in2KFf2KPYsdio2LnYp9ihX9iu2YXZitizX9is2YXYudipX9iz2KjYqiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi2K1f2YZf2Ktf2LFf2K5f2Kxf2LMiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkQv4oCPTS/igI9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxtZXJpZGllbVBhcnNlOi/YtXzZhS8saXNQTTpmdW5jdGlvbihlKXtyZXR1cm4i2YUiPT09ZX0sbWVyaWRpZW06ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPDEyPyLYtSI6ItmFIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvYp9mE2YrZiNmFINi52YbYryDYp9mE2LPYp9i52KldIExUIixuZXh0RGF5OiJb2LrYr9mL2Kcg2LnZhtivINin2YTYs9in2LnYqV0gTFQiLG5leHRXZWVrOiJkZGRkIFvYudmG2K8g2KfZhNiz2KfYudipXSBMVCIsbGFzdERheToiW9ij2YXYsyDYudmG2K8g2KfZhNiz2KfYudipXSBMVCIsbGFzdFdlZWs6ImRkZGQgW9i52YbYryDYp9mE2LPYp9i52KldIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLYqNi52K8gJXMiLHBhc3Q6ItmF2YbYsCAlcyIsczphKCJzIiksbTphKCJtIiksbW06YSgibSIpLGg6YSgiaCIpLGhoOmEoImgiKSxkOmEoImQiKSxkZDphKCJkIiksTTphKCJNIiksTU06YSgiTSIpLHk6YSgieSIpLHl5OmEoInkiKX0scHJlcGFyc2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvXHUyMDBmL2csIiIpLnJlcGxhY2UoL1vZodmi2aPZpNml2abZp9mo2anZoF0vZyxmdW5jdGlvbihlKXtyZXR1cm4gcltlXX0pLnJlcGxhY2UoL9iML2csIiwiKX0scG9zdGZvcm1hdDpmdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKHQpe3JldHVybiBlW3RdfSkucmVwbGFjZSgvLC9nLCLYjCIpfSx3ZWVrOntkb3c6Nixkb3k6MTJ9fSk7cmV0dXJuIG19KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgiYXIiLCJhciIse2Nsb3NlVGV4dDoi2KXYutmE2KfZgiIscHJldlRleHQ6IiYjeDNDO9in2YTYs9in2KjZgiIsbmV4dFRleHQ6Itin2YTYqtin2YTZiiYjeDNFOyIsY3VycmVudFRleHQ6Itin2YTZitmI2YUiLG1vbnRoTmFtZXM6WyLZitmG2KfZitixIiwi2YHYqNix2KfZitixIiwi2YXYp9ix2LMiLCLYo9io2LHZitmEIiwi2YXYp9mK2YgiLCLZitmI2YbZitmIIiwi2YrZiNmE2YrZiCIsItij2LrYs9i32LMiLCLYs9io2KrZhdio2LEiLCLYo9mD2KrZiNio2LEiLCLZhtmI2YHZhdio2LEiLCLYr9mK2LPZhdio2LEiXSxtb250aE5hbWVzU2hvcnQ6WyIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIxMCIsIjExIiwiMTIiXSxkYXlOYW1lczpbItin2YTYo9it2K8iLCLYp9mE2KfYq9mG2YrZhiIsItin2YTYq9mE2KfYq9in2KEiLCLYp9mE2KPYsdio2LnYp9ihIiwi2KfZhNiu2YXZitizIiwi2KfZhNis2YXYudipIiwi2KfZhNiz2KjYqiJdLGRheU5hbWVzU2hvcnQ6WyLYo9it2K8iLCLYp9ir2YbZitmGIiwi2KvZhNin2KvYp9ihIiwi2KPYsdio2LnYp9ihIiwi2K7ZhdmK2LMiLCLYrNmF2LnYqSIsItiz2KjYqiJdLGRheU5hbWVzTWluOlsi2K0iLCLZhiIsItirIiwi2LEiLCLYriIsItisIiwi2LMiXSx3ZWVrSGVhZGVyOiLYo9iz2KjZiNi5IixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MCxpc1JUTDohMCxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiYXIiLHtidXR0b25UZXh0Onttb250aDoi2LTZh9ixIix3ZWVrOiLYo9iz2KjZiNi5IixkYXk6ItmK2YjZhSIsbGlzdDoi2KPYrNmG2K/YqSJ9LGFsbERheVRleHQ6Itin2YTZitmI2YUg2YPZhNmHIixldmVudExpbWl0VGV4dDoi2KPYrtix2YkiLG5vRXZlbnRzTWVzc2FnZToi2KPZiiDYo9it2K/Yp9irINmE2LnYsdi2In0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/bg.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKCl7dmFyIGU9dC5kZWZpbmVMb2NhbGUoImJnIix7bW9udGhzOiLRj9C90YPQsNGA0Lhf0YTQtdCy0YDRg9Cw0YDQuF/QvNCw0YDRgl/QsNC/0YDQuNC7X9C80LDQuV/RjtC90Lhf0Y7Qu9C4X9Cw0LLQs9GD0YHRgl/RgdC10L/RgtC10LzQstGA0Lhf0L7QutGC0L7QvNCy0YDQuF/QvdC+0LXQvNCy0YDQuF/QtNC10LrQtdC80LLRgNC4Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiLRj9C90YBf0YTQtdCyX9C80LDRgF/QsNC/0YBf0LzQsNC5X9GO0L3QuF/RjtC70Lhf0LDQstCzX9GB0LXQv1/QvtC60YJf0L3QvtC1X9C00LXQuiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi0L3QtdC00LXQu9GPX9C/0L7QvdC10LTQtdC70L3QuNC6X9Cy0YLQvtGA0L3QuNC6X9GB0YDRj9C00LBf0YfQtdGC0LLRitGA0YLRitC6X9C/0LXRgtGK0Lpf0YHRitCx0L7RgtCwIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ItC90LXQtF/Qv9C+0L1f0LLRgtC+X9GB0YDRj1/Rh9C10YJf0L/QtdGCX9GB0YrQsSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi0L3QtF/Qv9C9X9Cy0YJf0YHRgF/Rh9GCX9C/0YJf0YHQsSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiRC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb0JTQvdC10YEg0LJdIExUIixuZXh0RGF5OiJb0KPRgtGA0LUg0LJdIExUIixuZXh0V2VlazoiZGRkZCBb0LJdIExUIixsYXN0RGF5OiJb0JLRh9C10YDQsCDQsl0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpjYXNlIDM6Y2FzZSA2OnJldHVybiJb0JIg0LjQt9C80LjQvdCw0LvQsNGC0LBdIGRkZGQgW9CyXSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA1OnJldHVybiJb0JIg0LjQt9C80LjQvdCw0LvQuNGPXSBkZGRkIFvQsl0gTFQifX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi0YHQu9C10LQgJXMiLHBhc3Q6ItC/0YDQtdC00LggJXMiLHM6ItC90Y/QutC+0LvQutC+INGB0LXQutGD0L3QtNC4IixtOiLQvNC40L3Rg9GC0LAiLG1tOiIlZCDQvNC40L3Rg9GC0LgiLGg6ItGH0LDRgSIsaGg6IiVkINGH0LDRgdCwIixkOiLQtNC10L0iLGRkOiIlZCDQtNC90LgiLE06ItC80LXRgdC10YYiLE1NOiIlZCDQvNC10YHQtdGG0LAiLHk6ItCz0L7QtNC40L3QsCIseXk6IiVkINCz0L7QtNC40L3QuCJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfS0o0LXQsnzQtdC9fNGC0Lh80LLQuHzRgNC4fNC80LgpLyxvcmRpbmFsOmZ1bmN0aW9uKGUpe3ZhciB0PWUlMTAsYT1lJTEwMDtyZXR1cm4gMD09PWU/ZSsiLdC10LIiOjA9PT1hP2UrIi3QtdC9IjphPjEwJiZhPDIwP2UrIi3RgtC4IjoxPT09dD9lKyIt0LLQuCI6Mj09PXQ/ZSsiLdGA0LgiOjc9PT10fHw4PT09dD9lKyIt0LzQuCI6ZSsiLdGC0LgifSx3ZWVrOntkb3c6MSxkb3k6N319KTtyZXR1cm4gZX0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJiZyIsImJnIix7Y2xvc2VUZXh0OiLQt9Cw0YLQstC+0YDQuCIscHJldlRleHQ6IiYjeDNDO9C90LDQt9Cw0LQiLG5leHRUZXh0OiLQvdCw0L/RgNC10LQmI3gzRTsiLG5leHRCaWdUZXh0OiImI3gzRTsmI3gzRTsiLGN1cnJlbnRUZXh0OiLQtNC90LXRgSIsbW9udGhOYW1lczpbItCv0L3Rg9Cw0YDQuCIsItCk0LXQstGA0YPQsNGA0LgiLCLQnNCw0YDRgiIsItCQ0L/RgNC40LsiLCLQnNCw0LkiLCLQrtC90LgiLCLQrtC70LgiLCLQkNCy0LPRg9GB0YIiLCLQodC10L/RgtC10LzQstGA0LgiLCLQntC60YLQvtC80LLRgNC4Iiwi0J3QvtC10LzQstGA0LgiLCLQlNC10LrQtdC80LLRgNC4Il0sbW9udGhOYW1lc1Nob3J0Olsi0K/QvdGDIiwi0KTQtdCyIiwi0JzQsNGAIiwi0JDQv9GAIiwi0JzQsNC5Iiwi0K7QvdC4Iiwi0K7Qu9C4Iiwi0JDQstCzIiwi0KHQtdC/Iiwi0J7QutGCIiwi0J3QvtCyIiwi0JTQtdC6Il0sZGF5TmFtZXM6WyLQndC10LTQtdC70Y8iLCLQn9C+0L3QtdC00LXQu9C90LjQuiIsItCS0YLQvtGA0L3QuNC6Iiwi0KHRgNGP0LTQsCIsItCn0LXRgtCy0YrRgNGC0YrQuiIsItCf0LXRgtGK0LoiLCLQodGK0LHQvtGC0LAiXSxkYXlOYW1lc1Nob3J0Olsi0J3QtdC0Iiwi0J/QvtC9Iiwi0JLRgtC+Iiwi0KHRgNGPIiwi0KfQtdGCIiwi0J/QtdGCIiwi0KHRitCxIl0sZGF5TmFtZXNNaW46WyLQndC1Iiwi0J/QviIsItCS0YIiLCLQodGAIiwi0KfQtSIsItCf0LUiLCLQodGKIl0sd2Vla0hlYWRlcjoiV2siLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJiZyIse2J1dHRvblRleHQ6e21vbnRoOiLQnNC10YHQtdGGIix3ZWVrOiLQodC10LTQvNC40YbQsCIsZGF5OiLQlNC10L0iLGxpc3Q6ItCT0YDQsNGE0LjQuiJ9LGFsbERheVRleHQ6ItCm0Y/QuyDQtNC10L0iLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGUpe3JldHVybiIr0L7RidC1ICIrZX0sbm9FdmVudHNNZXNzYWdlOiLQndGP0LzQsCDRgdGK0LHQuNGC0LjRjyDQt9CwINC/0L7QutCw0LfQstCw0L3QtSJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/ca.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsYSl7IWZ1bmN0aW9uKCl7dmFyIGU9YS5kZWZpbmVMb2NhbGUoImNhIix7bW9udGhzOiJnZW5lcl9mZWJyZXJfbWFyw6dfYWJyaWxfbWFpZ19qdW55X2p1bGlvbF9hZ29zdF9zZXRlbWJyZV9vY3R1YnJlX25vdmVtYnJlX2Rlc2VtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJnZW4uX2ZlYnIuX21hci5fYWJyLl9tYWkuX2p1bi5fanVsLl9hZy5fc2V0Ll9vY3QuX25vdi5fZGVzLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJkaXVtZW5nZV9kaWxsdW5zX2RpbWFydHNfZGltZWNyZXNfZGlqb3VzX2RpdmVuZHJlc19kaXNzYWJ0ZSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkZy5fZGwuX2R0Ll9kYy5fZGouX2R2Ll9kcy4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkRnX0RsX0R0X0RjX0RqX0R2X0RzIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OmZ1bmN0aW9uKCl7cmV0dXJuIlthdnVpIGEgIisoMSE9PXRoaXMuaG91cnMoKT8ibGVzIjoibGEiKSsiXSBMVCJ9LG5leHREYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW2RlbcOgIGEgIisoMSE9PXRoaXMuaG91cnMoKT8ibGVzIjoibGEiKSsiXSBMVCJ9LG5leHRXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuImRkZGQgW2EgIisoMSE9PXRoaXMuaG91cnMoKT8ibGVzIjoibGEiKSsiXSBMVCJ9LGxhc3REYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW2FoaXIgYSAiKygxIT09dGhpcy5ob3VycygpPyJsZXMiOiJsYSIpKyJdIExUIn0sbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iW2VsXSBkZGRkIFtwYXNzYXQgYSAiKygxIT09dGhpcy5ob3VycygpPyJsZXMiOiJsYSIpKyJdIExUIn0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZCdhcXXDrSAlcyIscGFzdDoiZmEgJXMiLHM6InVucyBzZWdvbnMiLG06InVuIG1pbnV0IixtbToiJWQgbWludXRzIixoOiJ1bmEgaG9yYSIsaGg6IiVkIGhvcmVzIixkOiJ1biBkaWEiLGRkOiIlZCBkaWVzIixNOiJ1biBtZXMiLE1NOiIlZCBtZXNvcyIseToidW4gYW55Iix5eToiJWQgYW55cyJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfShyfG58dHzDqHxhKS8sb3JkaW5hbDpmdW5jdGlvbihlLGEpe3ZhciB0PTE9PT1lPyJyIjoyPT09ZT8ibiI6Mz09PWU/InIiOjQ9PT1lPyJ0Ijoiw6giO3JldHVybiJ3IiE9PWEmJiJXIiE9PWF8fCh0PSJhIiksZSt0fSx3ZWVrOntkb3c6MSxkb3k6NH19KTtyZXR1cm4gZX0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJjYSIsImNhIix7Y2xvc2VUZXh0OiJUYW5jYSIscHJldlRleHQ6IkFudGVyaW9yIixuZXh0VGV4dDoiU2Vnw7xlbnQiLGN1cnJlbnRUZXh0OiJBdnVpIixtb250aE5hbWVzOlsiZ2VuZXIiLCJmZWJyZXIiLCJtYXLDpyIsImFicmlsIiwibWFpZyIsImp1bnkiLCJqdWxpb2wiLCJhZ29zdCIsInNldGVtYnJlIiwib2N0dWJyZSIsIm5vdmVtYnJlIiwiZGVzZW1icmUiXSxtb250aE5hbWVzU2hvcnQ6WyJnZW4iLCJmZWIiLCJtYXLDpyIsImFiciIsIm1haWciLCJqdW55IiwianVsIiwiYWciLCJzZXQiLCJvY3QiLCJub3YiLCJkZXMiXSxkYXlOYW1lczpbImRpdW1lbmdlIiwiZGlsbHVucyIsImRpbWFydHMiLCJkaW1lY3JlcyIsImRpam91cyIsImRpdmVuZHJlcyIsImRpc3NhYnRlIl0sZGF5TmFtZXNTaG9ydDpbImRnIiwiZGwiLCJkdCIsImRjIiwiZGoiLCJkdiIsImRzIl0sZGF5TmFtZXNNaW46WyJkZyIsImRsIiwiZHQiLCJkYyIsImRqIiwiZHYiLCJkcyJdLHdlZWtIZWFkZXI6IlNldCIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoImNhIix7YnV0dG9uVGV4dDp7bW9udGg6Ik1lcyIsd2VlazoiU2V0bWFuYSIsZGF5OiJEaWEiLGxpc3Q6IkFnZW5kYSJ9LGFsbERheVRleHQ6IlRvdCBlbCBkaWEiLGV2ZW50TGltaXRUZXh0OiJtw6lzIixub0V2ZW50c01lc3NhZ2U6Ik5vIGhpIGhhIGVzZGV2ZW5pbWVudHMgcGVyIG1vc3RyYXIifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/cs.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsbil7IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4gZT4xJiZlPDUmJjEhPT1+fihlLzEwKX1mdW5jdGlvbiB0KG4sdCxyLHMpe3ZhciBhPW4rIiAiO3N3aXRjaChyKXtjYXNlInMiOnJldHVybiB0fHxzPyJww6FyIHNla3VuZCI6InDDoXIgc2VrdW5kYW1pIjtjYXNlIm0iOnJldHVybiB0PyJtaW51dGEiOnM/Im1pbnV0dSI6Im1pbnV0b3UiO2Nhc2UibW0iOnJldHVybiB0fHxzP2ErKGUobik/Im1pbnV0eSI6Im1pbnV0Iik6YSsibWludXRhbWkiO2Nhc2UiaCI6cmV0dXJuIHQ/ImhvZGluYSI6cz8iaG9kaW51IjoiaG9kaW5vdSI7Y2FzZSJoaCI6cmV0dXJuIHR8fHM/YSsoZShuKT8iaG9kaW55IjoiaG9kaW4iKTphKyJob2RpbmFtaSI7Y2FzZSJkIjpyZXR1cm4gdHx8cz8iZGVuIjoiZG5lbSI7Y2FzZSJkZCI6cmV0dXJuIHR8fHM/YSsoZShuKT8iZG55IjoiZG7DrSIpOmErImRueSI7Y2FzZSJNIjpyZXR1cm4gdHx8cz8ibcSbc8OtYyI6Im3Em3PDrWNlbSI7Y2FzZSJNTSI6cmV0dXJuIHR8fHM/YSsoZShuKT8ibcSbc8OtY2UiOiJtxJtzw61jxa8iKTphKyJtxJtzw61jaSI7Y2FzZSJ5IjpyZXR1cm4gdHx8cz8icm9rIjoicm9rZW0iO2Nhc2UieXkiOnJldHVybiB0fHxzP2ErKGUobik/InJva3kiOiJsZXQiKTphKyJsZXR5In19dmFyIHI9ImxlZGVuX8O6bm9yX2LFmWV6ZW5fZHViZW5fa3bEm3Rlbl/EjWVydmVuX8SNZXJ2ZW5lY19zcnBlbl96w6HFmcOtX8WZw61qZW5fbGlzdG9wYWRfcHJvc2luZWMiLnNwbGl0KCJfIikscz0ibGVkX8O6bm9fYsWZZV9kdWJfa3bEm1/EjXZuX8SNdmNfc3JwX3rDocWZX8WZw61qX2xpc19wcm8iLnNwbGl0KCJfIiksYT1uLmRlZmluZUxvY2FsZSgiY3MiLHttb250aHM6cixtb250aHNTaG9ydDpzLG1vbnRoc1BhcnNlOmZ1bmN0aW9uKGUsbil7dmFyIHQscj1bXTtmb3IodD0wO3Q8MTI7dCsrKXJbdF09bmV3IFJlZ0V4cCgiXiIrZVt0XSsiJHxeIituW3RdKyIkIiwiaSIpO3JldHVybiByfShyLHMpLHNob3J0TW9udGhzUGFyc2U6ZnVuY3Rpb24oZSl7dmFyIG4sdD1bXTtmb3Iobj0wO248MTI7bisrKXRbbl09bmV3IFJlZ0V4cCgiXiIrZVtuXSsiJCIsImkiKTtyZXR1cm4gdH0ocyksbG9uZ01vbnRoc1BhcnNlOmZ1bmN0aW9uKGUpe3ZhciBuLHQ9W107Zm9yKG49MDtuPDEyO24rKyl0W25dPW5ldyBSZWdFeHAoIl4iK2Vbbl0rIiQiLCJpIik7cmV0dXJuIHR9KHIpLHdlZWtkYXlzOiJuZWTEm2xlX3BvbmTEm2zDrV/DunRlcsO9X3N0xZllZGFfxI10dnJ0ZWtfcMOhdGVrX3NvYm90YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJuZV9wb1/DunRfc3RfxI10X3DDoV9zbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoibmVfcG9fw7p0X3N0X8SNdF9ww6Ffc28iLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIEg6bW0iLExMTEw6ImRkZGQgRC4gTU1NTSBZWVlZIEg6bW0iLGw6IkQuIE0uIFlZWVkifSxjYWxlbmRhcjp7c2FtZURheToiW2RuZXMgdl0gTFQiLG5leHREYXk6Ilt6w610cmEgdl0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW3YgbmVkxJtsaSB2XSBMVCI7Y2FzZSAxOmNhc2UgMjpyZXR1cm4iW3ZdIGRkZGQgW3ZdIExUIjtjYXNlIDM6cmV0dXJuIlt2ZSBzdMWZZWR1IHZdIExUIjtjYXNlIDQ6cmV0dXJuIlt2ZSDEjXR2cnRlayB2XSBMVCI7Y2FzZSA1OnJldHVybiJbdiBww6F0ZWsgdl0gTFQiO2Nhc2UgNjpyZXR1cm4iW3Ygc29ib3R1IHZdIExUIn19LGxhc3REYXk6Ilt2xI1lcmEgdl0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW21pbnVsb3UgbmVkxJtsaSB2XSBMVCI7Y2FzZSAxOmNhc2UgMjpyZXR1cm4iW21pbnVsw6ldIGRkZGQgW3ZdIExUIjtjYXNlIDM6cmV0dXJuIlttaW51bG91IHN0xZllZHUgdl0gTFQiO2Nhc2UgNDpjYXNlIDU6cmV0dXJuIlttaW51bMO9XSBkZGRkIFt2XSBMVCI7Y2FzZSA2OnJldHVybiJbbWludWxvdSBzb2JvdHUgdl0gTFQifX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiemEgJXMiLHBhc3Q6InDFmWVkICVzIixzOnQsbTp0LG1tOnQsaDp0LGhoOnQsZDp0LGRkOnQsTTp0LE1NOnQseTp0LHl5OnR9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pO3JldHVybiBhfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoImNzIiwiY3MiLHtjbG9zZVRleHQ6IlphdsWZw610IixwcmV2VGV4dDoiJiN4M0M7RMWZw612ZSIsbmV4dFRleHQ6IlBvemTEm2ppJiN4M0U7IixjdXJyZW50VGV4dDoiTnluw60iLG1vbnRoTmFtZXM6WyJsZWRlbiIsIsO6bm9yIiwiYsWZZXplbiIsImR1YmVuIiwia3bEm3RlbiIsIsSNZXJ2ZW4iLCLEjWVydmVuZWMiLCJzcnBlbiIsInrDocWZw60iLCLFmcOtamVuIiwibGlzdG9wYWQiLCJwcm9zaW5lYyJdLG1vbnRoTmFtZXNTaG9ydDpbImxlZCIsIsO6bm8iLCJixZllIiwiZHViIiwia3bEmyIsIsSNZXIiLCLEjXZjIiwic3JwIiwiesOhxZkiLCLFmcOtaiIsImxpcyIsInBybyJdLGRheU5hbWVzOlsibmVkxJtsZSIsInBvbmTEm2zDrSIsIsO6dGVyw70iLCJzdMWZZWRhIiwixI10dnJ0ZWsiLCJww6F0ZWsiLCJzb2JvdGEiXSxkYXlOYW1lc1Nob3J0OlsibmUiLCJwbyIsIsO6dCIsInN0IiwixI10IiwicMOhIiwic28iXSxkYXlOYW1lc01pbjpbIm5lIiwicG8iLCLDunQiLCJzdCIsIsSNdCIsInDDoSIsInNvIl0sd2Vla0hlYWRlcjoiVMO9ZCIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoImNzIix7YnV0dG9uVGV4dDp7bW9udGg6Ik3Em3PDrWMiLHdlZWs6IlTDvWRlbiIsZGF5OiJEZW4iLGxpc3Q6IkFnZW5kYSJ9LGFsbERheVRleHQ6IkNlbMO9IGRlbiIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIitkYWzFocOtOiAiK2V9LG5vRXZlbnRzTWVzc2FnZToixb3DoWRuw6kgYWtjZSBrIHpvYnJhemVuw60ifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/da.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsYSl7IWZ1bmN0aW9uKCl7dmFyIGU9YS5kZWZpbmVMb2NhbGUoImRhIix7bW9udGhzOiJqYW51YXJfZmVicnVhcl9tYXJ0c19hcHJpbF9tYWpfanVuaV9qdWxpX2F1Z3VzdF9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuX2ZlYl9tYXJfYXByX21hal9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6InPDuG5kYWdfbWFuZGFnX3RpcnNkYWdfb25zZGFnX3RvcnNkYWdfZnJlZGFnX2zDuHJkYWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoic8O4bl9tYW5fdGlyX29uc190b3JfZnJlX2zDuHIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46InPDuF9tYV90aV9vbl90b19mcl9sw7giLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgW2QuXSBELiBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0kgZGFnIGtsLl0gTFQiLG5leHREYXk6IltJIG1vcmdlbiBrbC5dIExUIixuZXh0V2VlazoiZGRkZCBba2wuXSBMVCIsbGFzdERheToiW0kgZ8OlciBrbC5dIExUIixsYXN0V2VlazoiW3NpZHN0ZV0gZGRkZCBba2xdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJvbSAlcyIscGFzdDoiJXMgc2lkZW4iLHM6ImbDpSBzZWt1bmRlciIsbToiZXQgbWludXQiLG1tOiIlZCBtaW51dHRlciIsaDoiZW4gdGltZSIsaGg6IiVkIHRpbWVyIixkOiJlbiBkYWciLGRkOiIlZCBkYWdlIixNOiJlbiBtw6VuZWQiLE1NOiIlZCBtw6VuZWRlciIseToiZXQgw6VyIix5eToiJWQgw6VyIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSk7cmV0dXJuIGV9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgiZGEiLCJkYSIse2Nsb3NlVGV4dDoiTHVrIixwcmV2VGV4dDoiJiN4M0M7Rm9ycmlnZSIsbmV4dFRleHQ6Ik7DpnN0ZSYjeDNFOyIsY3VycmVudFRleHQ6IklkYWciLG1vbnRoTmFtZXM6WyJKYW51YXIiLCJGZWJydWFyIiwiTWFydHMiLCJBcHJpbCIsIk1haiIsIkp1bmkiLCJKdWxpIiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2t0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxtb250aE5hbWVzU2hvcnQ6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYWoiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPa3QiLCJOb3YiLCJEZWMiXSxkYXlOYW1lczpbIlPDuG5kYWciLCJNYW5kYWciLCJUaXJzZGFnIiwiT25zZGFnIiwiVG9yc2RhZyIsIkZyZWRhZyIsIkzDuHJkYWciXSxkYXlOYW1lc1Nob3J0OlsiU8O4biIsIk1hbiIsIlRpciIsIk9ucyIsIlRvciIsIkZyZSIsIkzDuHIiXSxkYXlOYW1lc01pbjpbIlPDuCIsIk1hIiwiVGkiLCJPbiIsIlRvIiwiRnIiLCJMw7giXSx3ZWVrSGVhZGVyOiJVZ2UiLGRhdGVGb3JtYXQ6ImRkLW1tLXl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJkYSIse2J1dHRvblRleHQ6e21vbnRoOiJNw6VuZWQiLHdlZWs6IlVnZSIsZGF5OiJEYWciLGxpc3Q6IkFnZW5kYSJ9LGFsbERheVRleHQ6IkhlbGUgZGFnZW4iLGV2ZW50TGltaXRUZXh0OiJmbGVyZSIsbm9FdmVudHNNZXNzYWdlOiJJbmdlbiBhcnJhbmdlbWVudGVyIGF0IHZpc2UifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/de-at.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbixhKXt2YXIgcj17bTpbImVpbmUgTWludXRlIiwiZWluZXIgTWludXRlIl0saDpbImVpbmUgU3R1bmRlIiwiZWluZXIgU3R1bmRlIl0sZDpbImVpbiBUYWciLCJlaW5lbSBUYWciXSxkZDpbZSsiIFRhZ2UiLGUrIiBUYWdlbiJdLE06WyJlaW4gTW9uYXQiLCJlaW5lbSBNb25hdCJdLE1NOltlKyIgTW9uYXRlIixlKyIgTW9uYXRlbiJdLHk6WyJlaW4gSmFociIsImVpbmVtIEphaHIiXSx5eTpbZSsiIEphaHJlIixlKyIgSmFocmVuIl19O3JldHVybiB0P3Jbbl1bMF06cltuXVsxXX12YXIgbj10LmRlZmluZUxvY2FsZSgiZGUtYXQiLHttb250aHM6IkrDpG5uZXJfRmVicnVhcl9Nw6Ryel9BcHJpbF9NYWlfSnVuaV9KdWxpX0F1Z3VzdF9TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXplbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSsOkbi5fRmVici5fTXJ6Ll9BcHIuX01haV9KdW4uX0p1bC5fQXVnLl9TZXB0Ll9Pa3QuX05vdi5fRGV6LiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJTb25udGFnX01vbnRhZ19EaWVuc3RhZ19NaXR0d29jaF9Eb25uZXJzdGFnX0ZyZWl0YWdfU2Ftc3RhZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJTby5fTW8uX0RpLl9NaS5fRG8uX0ZyLl9TYS4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IlNvX01vX0RpX01pX0RvX0ZyX1NhIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltoZXV0ZSB1bV0gTFQgW1Vocl0iLHNhbWVFbHNlOiJMIixuZXh0RGF5OiJbbW9yZ2VuIHVtXSBMVCBbVWhyXSIsbmV4dFdlZWs6ImRkZGQgW3VtXSBMVCBbVWhyXSIsbGFzdERheToiW2dlc3Rlcm4gdW1dIExUIFtVaHJdIixsYXN0V2VlazoiW2xldHp0ZW5dIGRkZGQgW3VtXSBMVCBbVWhyXSJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoidm9yICVzIixzOiJlaW4gcGFhciBTZWt1bmRlbiIsbTplLG1tOiIlZCBNaW51dGVuIixoOmUsaGg6IiVkIFN0dW5kZW4iLGQ6ZSxkZDplLE06ZSxNTTplLHk6ZSx5eTplfSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KTtyZXR1cm4gbn0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJkZS1hdCIsImRlIix7Y2xvc2VUZXh0OiJTY2hsaWXDn2VuIixwcmV2VGV4dDoiJiN4M0M7WnVyw7xjayIsbmV4dFRleHQ6IlZvciYjeDNFOyIsY3VycmVudFRleHQ6IkhldXRlIixtb250aE5hbWVzOlsiSmFudWFyIiwiRmVicnVhciIsIk3DpHJ6IiwiQXByaWwiLCJNYWkiLCJKdW5pIiwiSnVsaSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9rdG9iZXIiLCJOb3ZlbWJlciIsIkRlemVtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmViIiwiTcOkciIsIkFwciIsIk1haSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9rdCIsIk5vdiIsIkRleiJdLGRheU5hbWVzOlsiU29ubnRhZyIsIk1vbnRhZyIsIkRpZW5zdGFnIiwiTWl0dHdvY2giLCJEb25uZXJzdGFnIiwiRnJlaXRhZyIsIlNhbXN0YWciXSxkYXlOYW1lc1Nob3J0OlsiU28iLCJNbyIsIkRpIiwiTWkiLCJEbyIsIkZyIiwiU2EiXSxkYXlOYW1lc01pbjpbIlNvIiwiTW8iLCJEaSIsIk1pIiwiRG8iLCJGciIsIlNhIl0sd2Vla0hlYWRlcjoiS1ciLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJkZS1hdCIse2J1dHRvblRleHQ6e21vbnRoOiJNb25hdCIsd2VlazoiV29jaGUiLGRheToiVGFnIixsaXN0OiJUZXJtaW7DvGJlcnNpY2h0In0sYWxsRGF5VGV4dDoiR2FuenTDpGdpZyIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIisgd2VpdGVyZSAiK2V9LG5vRXZlbnRzTWVzc2FnZToiS2VpbmUgRXJlaWduaXNzZSBhbnp1emVpZ2VuIn0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/de.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsbixhKXt2YXIgcj17bTpbImVpbmUgTWludXRlIiwiZWluZXIgTWludXRlIl0saDpbImVpbmUgU3R1bmRlIiwiZWluZXIgU3R1bmRlIl0sZDpbImVpbiBUYWciLCJlaW5lbSBUYWciXSxkZDpbZSsiIFRhZ2UiLGUrIiBUYWdlbiJdLE06WyJlaW4gTW9uYXQiLCJlaW5lbSBNb25hdCJdLE1NOltlKyIgTW9uYXRlIixlKyIgTW9uYXRlbiJdLHk6WyJlaW4gSmFociIsImVpbmVtIEphaHIiXSx5eTpbZSsiIEphaHJlIixlKyIgSmFocmVuIl19O3JldHVybiB0P3Jbbl1bMF06cltuXVsxXX12YXIgbj10LmRlZmluZUxvY2FsZSgiZGUiLHttb250aHM6IkphbnVhcl9GZWJydWFyX03DpHJ6X0FwcmlsX01haV9KdW5pX0p1bGlfQXVndXN0X1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0RlemVtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW4uX0ZlYnIuX01yei5fQXByLl9NYWlfSnVuLl9KdWwuX0F1Zy5fU2VwdC5fT2t0Ll9Ob3YuX0Rlei4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiU29ubnRhZ19Nb250YWdfRGllbnN0YWdfTWl0dHdvY2hfRG9ubmVyc3RhZ19GcmVpdGFnX1NhbXN0YWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU28uX01vLl9EaS5fTWkuX0RvLl9Gci5fU2EuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTb19Nb19EaV9NaV9Eb19Gcl9TYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQuIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbaGV1dGUgdW1dIExUIFtVaHJdIixzYW1lRWxzZToiTCIsbmV4dERheToiW21vcmdlbiB1bV0gTFQgW1Vocl0iLG5leHRXZWVrOiJkZGRkIFt1bV0gTFQgW1Vocl0iLGxhc3REYXk6IltnZXN0ZXJuIHVtXSBMVCBbVWhyXSIsbGFzdFdlZWs6IltsZXR6dGVuXSBkZGRkIFt1bV0gTFQgW1Vocl0ifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6InZvciAlcyIsczoiZWluIHBhYXIgU2VrdW5kZW4iLG06ZSxtbToiJWQgTWludXRlbiIsaDplLGhoOiIlZCBTdHVuZGVuIixkOmUsZGQ6ZSxNOmUsTU06ZSx5OmUseXk6ZX0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSk7cmV0dXJuIG59KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgiZGUiLCJkZSIse2Nsb3NlVGV4dDoiU2NobGllw59lbiIscHJldlRleHQ6IiYjeDNDO1p1csO8Y2siLG5leHRUZXh0OiJWb3ImI3gzRTsiLGN1cnJlbnRUZXh0OiJIZXV0ZSIsbW9udGhOYW1lczpbIkphbnVhciIsIkZlYnJ1YXIiLCJNw6RyeiIsIkFwcmlsIiwiTWFpIiwiSnVuaSIsIkp1bGkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPa3RvYmVyIiwiTm92ZW1iZXIiLCJEZXplbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk3DpHIiLCJBcHIiLCJNYWkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPa3QiLCJOb3YiLCJEZXoiXSxkYXlOYW1lczpbIlNvbm50YWciLCJNb250YWciLCJEaWVuc3RhZyIsIk1pdHR3b2NoIiwiRG9ubmVyc3RhZyIsIkZyZWl0YWciLCJTYW1zdGFnIl0sZGF5TmFtZXNTaG9ydDpbIlNvIiwiTW8iLCJEaSIsIk1pIiwiRG8iLCJGciIsIlNhIl0sZGF5TmFtZXNNaW46WyJTbyIsIk1vIiwiRGkiLCJNaSIsIkRvIiwiRnIiLCJTYSJdLHdlZWtIZWFkZXI6IktXIixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiZGUiLHtidXR0b25UZXh0Onttb250aDoiTW9uYXQiLHdlZWs6IldvY2hlIixkYXk6IlRhZyIsbGlzdDoiVGVybWluw7xiZXJzaWNodCJ9LGFsbERheVRleHQ6Ikdhbnp0w6RnaWciLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGUpe3JldHVybiIrIHdlaXRlcmUgIitlfSxub0V2ZW50c01lc3NhZ2U6IktlaW5lIEVyZWlnbmlzc2UgYW56dXplaWdlbiJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/el.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIEZ1bmN0aW9ufHwiW29iamVjdCBGdW5jdGlvbl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfXZhciBuPXQuZGVmaW5lTG9jYWxlKCJlbCIse21vbnRoc05vbWluYXRpdmVFbDoizpnOsc69zr/Phc6sz4HOuc6/z4JfzqbOtc6yz4HOv8+FzqzPgc65zr/Pgl/OnM6sz4HPhM65zr/Pgl/Okc+Az4HOr867zrnOv8+CX86czqzOuc6/z4JfzpnOv8+Nzr3Ouc6/z4JfzpnOv8+NzrvOuc6/z4JfzpHPjc6zzr/Phc+Dz4TOv8+CX86jzrXPgM+Ezq3OvM6yz4HOuc6/z4Jfzp/Ous+Ez47Oss+BzrnOv8+CX86dzr/Orc68zrLPgc65zr/Pgl/OlM61zrrOrc68zrLPgc65zr/PgiIuc3BsaXQoIl8iKSxtb250aHNHZW5pdGl2ZUVsOiLOmc6xzr3Ov8+FzrHPgc6vzr/PhV/Ops61zrLPgc6/z4XOsc+Bzq/Ov8+FX86czrHPgc+Ezq/Ov8+FX86Rz4DPgc65zrvOr86/z4VfzpzOsc6Qzr/PhV/Omc6/z4XOvc6vzr/PhV/Omc6/z4XOu86vzr/PhV/Okc+FzrPOv8+Nz4PPhM6/z4VfzqPOtc+Az4TOtc68zrLPgc6vzr/PhV/On866z4TPic6yz4HOr86/z4Vfzp3Ov861zrzOss+Bzq/Ov8+FX86UzrXOus61zrzOss+Bzq/Ov8+FIi5zcGxpdCgiXyIpLG1vbnRoczpmdW5jdGlvbihlLHQpe3JldHVybi9ELy50ZXN0KHQuc3Vic3RyaW5nKDAsdC5pbmRleE9mKCJNTU1NIikpKT90aGlzLl9tb250aHNHZW5pdGl2ZUVsW2UubW9udGgoKV06dGhpcy5fbW9udGhzTm9taW5hdGl2ZUVsW2UubW9udGgoKV19LG1vbnRoc1Nob3J0OiLOmc6xzr1fzqbOtc6yX86czrHPgV/Okc+Az4FfzpzOsc+KX86Zzr/Phc69X86Zzr/Phc67X86Rz4XOs1/Oo861z4Bfzp/Ous+EX86dzr/OtV/OlM61zroiLnNwbGl0KCJfIiksd2Vla2RheXM6Is6az4XPgc65zrHOus6uX86UzrXPhc+Ezq3Pgc6xX86kz4HOr8+EzrdfzqTOtc+EzqzPgc+EzrdfzqDOrc68z4DPhM63X86gzrHPgc6xz4POus61z4XOrl/Oo86szrLOss6xz4TOvyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLOms+Fz4FfzpTOtc+FX86kz4HOuV/OpM61z4RfzqDOtc68X86gzrHPgV/Oo86xzrIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Is6az4VfzpTOtV/OpM+BX86kzrVfzqDOtV/OoM6xX86jzrEiLnNwbGl0KCJfIiksbWVyaWRpZW06ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPjExP24/Is68zrwiOiLOnM6cIjpuPyLPgM68IjoizqDOnCJ9LGlzUE06ZnVuY3Rpb24oZSl7cmV0dXJuIs68Ij09PShlKyIiKS50b0xvd2VyQ2FzZSgpWzBdfSxtZXJpZGllbVBhcnNlOi9bzqDOnF1cLj/OnD9cLj8vaSxsb25nRGF0ZUZvcm1hdDp7TFQ6Img6bW0gQSIsTFRTOiJoOm1tOnNzIEEiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBoOm1tIEEiLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQSJ9LGNhbGVuZGFyRWw6e3NhbWVEYXk6IlvOo86uzrzOtc+BzrEge31dIExUIixuZXh0RGF5OiJbzpHPjc+BzrnOvyB7fV0gTFQiLG5leHRXZWVrOiJkZGRkIFt7fV0gTFQiLGxhc3REYXk6IlvOp864zrXPgiB7fV0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgNjpyZXR1cm4iW8+Ezr8gz4DPgc6/zrfOs86/z43OvM61zr3Ov10gZGRkZCBbe31dIExUIjtkZWZhdWx0OnJldHVybiJbz4TOt869IM+Az4HOv863zrPOv8+NzrzOtc69zrddIGRkZGQgW3t9XSBMVCJ9fSxzYW1lRWxzZToiTCJ9LGNhbGVuZGFyOmZ1bmN0aW9uKHQsbil7dmFyIGE9dGhpcy5fY2FsZW5kYXJFbFt0XSxvPW4mJm4uaG91cnMoKTtyZXR1cm4gZShhKSYmKGE9YS5hcHBseShuKSksYS5yZXBsYWNlKCJ7fSIsbyUxMj09PTE/Is+Dz4TOtyI6Is+Dz4TOuc+CIil9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLPg861ICVzIixwYXN0OiIlcyDPgM+BzrnOvSIsczoizrvOr86zzrEgzrTOtc+Fz4TOtc+Bz4zOu861z4DPhM6xIixtOiLOrc69zrEgzrvOtc+Az4TPjCIsbW06IiVkIM67zrXPgM+EzqwiLGg6Is68zq/OsSDPjs+BzrEiLGhoOiIlZCDPjs+BzrXPgiIsZDoizrzOr86xIM68zq3Pgc6xIixkZDoiJWQgzrzOrc+BzrXPgiIsTToizq3Ovc6xz4IgzrzOrs69zrHPgiIsTU06IiVkIM68zq7Ovc61z4IiLHk6Is6tzr3Osc+CIM+Hz4HPjM69zr/PgiIseXk6IiVkIM+Hz4HPjM69zrnOsSJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfc63LyxvcmRpbmFsOiIlZM63Iix3ZWVrOntkb3c6MSxkb3k6NH19KTtyZXR1cm4gbn0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJlbCIsImVsIix7Y2xvc2VUZXh0OiLOms67zrXOr8+DzrnOvM6/IixwcmV2VGV4dDoizqDPgc6/zrfOs86/z43OvM61zr3Ov8+CIixuZXh0VGV4dDoizpXPgM+MzrzOtc69zr/PgiIsY3VycmVudFRleHQ6Is6jzq7OvM61z4HOsSIsbW9udGhOYW1lczpbIs6ZzrHOvc6/z4XOrM+BzrnOv8+CIiwizqbOtc6yz4HOv8+FzqzPgc65zr/PgiIsIs6czqzPgc+EzrnOv8+CIiwizpHPgM+Bzq/Ou865zr/PgiIsIs6czqzOuc6/z4IiLCLOmc6/z43Ovc65zr/PgiIsIs6Zzr/Pjc67zrnOv8+CIiwizpHPjc6zzr/Phc+Dz4TOv8+CIiwizqPOtc+Az4TOrc68zrLPgc65zr/PgiIsIs6fzrrPhM+OzrLPgc65zr/PgiIsIs6dzr/Orc68zrLPgc65zr/PgiIsIs6UzrXOus6tzrzOss+BzrnOv8+CIl0sbW9udGhOYW1lc1Nob3J0OlsizpnOsc69IiwizqbOtc6yIiwizpzOsc+BIiwizpHPgM+BIiwizpzOsc65IiwizpnOv8+Fzr0iLCLOmc6/z4XOuyIsIs6Rz4XOsyIsIs6jzrXPgCIsIs6fzrrPhCIsIs6dzr/OtSIsIs6UzrXOuiJdLGRheU5hbWVzOlsizprPhc+BzrnOsc66zq4iLCLOlM61z4XPhM6tz4HOsSIsIs6kz4HOr8+EzrciLCLOpM61z4TOrM+Bz4TOtyIsIs6gzq3OvM+Az4TOtyIsIs6gzrHPgc6xz4POus61z4XOriIsIs6jzqzOss6yzrHPhM6/Il0sZGF5TmFtZXNTaG9ydDpbIs6az4XPgSIsIs6UzrXPhSIsIs6kz4HOuSIsIs6kzrXPhCIsIs6gzrXOvCIsIs6gzrHPgSIsIs6jzrHOsiJdLGRheU5hbWVzTWluOlsizprPhSIsIs6UzrUiLCLOpM+BIiwizqTOtSIsIs6gzrUiLCLOoM6xIiwizqPOsSJdLHdlZWtIZWFkZXI6Is6VzrLOtCIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoImVsIix7YnV0dG9uVGV4dDp7bW9udGg6Is6czq7Ovc6xz4IiLHdlZWs6Is6VzrLOtM6/zrzOrM60zrEiLGRheToizpfOvM6tz4HOsSIsbGlzdDoizpHPhM62zq3Ovc+EzrEifSxhbGxEYXlUZXh0OiLOn867zr/Ors68zrXPgc6/IixldmVudExpbWl0VGV4dDoiz4DOtc+BzrnPg8+Dz4zPhM61z4HOsSIsbm9FdmVudHNNZXNzYWdlOiLOlM61zr0gz4XPgM6sz4HPh86/z4XOvSDOs861zrPOv869z4zPhM6xIM6zzrnOsSDOvc6xIM61zrzPhs6xzr3Ouc+Dz4TOtc6vIn0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/en-au.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsYSl7IWZ1bmN0aW9uKCl7dmFyIGU9YS5kZWZpbmVMb2NhbGUoImVuLWF1Iix7bW9udGhzOiJKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdV9Nb19UdV9XZV9UaF9Gcl9TYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Img6bW0gQSIsTFRTOiJoOm1tOnNzIEEiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBoOm1tIEEiLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbVG9kYXkgYXRdIExUIixuZXh0RGF5OiJbVG9tb3Jyb3cgYXRdIExUIixuZXh0V2VlazoiZGRkZCBbYXRdIExUIixsYXN0RGF5OiJbWWVzdGVyZGF5IGF0XSBMVCIsbGFzdFdlZWs6IltMYXN0XSBkZGRkIFthdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiIlcyBhZ28iLHM6ImEgZmV3IHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0fG5kfHJkfHRoKS8sb3JkaW5hbDpmdW5jdGlvbihlKXt2YXIgYT1lJTEwLHI9MT09PX5+KGUlMTAwLzEwKT8idGgiOjE9PT1hPyJzdCI6Mj09PWE/Im5kIjozPT09YT8icmQiOiJ0aCI7cmV0dXJuIGUrcn0sd2Vlazp7ZG93OjEsZG95OjR9fSk7cmV0dXJuIGV9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgiZW4tYXUiLCJlbi1BVSIse2Nsb3NlVGV4dDoiRG9uZSIscHJldlRleHQ6IlByZXYiLG5leHRUZXh0OiJOZXh0IixjdXJyZW50VGV4dDoiVG9kYXkiLG1vbnRoTmFtZXM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLGRheU5hbWVzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxkYXlOYW1lc1Nob3J0OlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sZGF5TmFtZXNNaW46WyJTdSIsIk1vIiwiVHUiLCJXZSIsIlRoIiwiRnIiLCJTYSJdLHdlZWtIZWFkZXI6IldrIixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiZW4tYXUiKX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/en-ca.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsYSl7IWZ1bmN0aW9uKCl7dmFyIGU9YS5kZWZpbmVMb2NhbGUoImVuLWNhIix7bW9udGhzOiJKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdV9Nb19UdV9XZV9UaF9Gcl9TYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Img6bW0gQSIsTFRTOiJoOm1tOnNzIEEiLEw6IllZWVktTU0tREQiLExMOiJNTU1NIEQsIFlZWVkiLExMTDoiTU1NTSBELCBZWVlZIGg6bW0gQSIsTExMTDoiZGRkZCwgTU1NTSBELCBZWVlZIGg6bW0gQSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbVG9kYXkgYXRdIExUIixuZXh0RGF5OiJbVG9tb3Jyb3cgYXRdIExUIixuZXh0V2VlazoiZGRkZCBbYXRdIExUIixsYXN0RGF5OiJbWWVzdGVyZGF5IGF0XSBMVCIsbGFzdFdlZWs6IltMYXN0XSBkZGRkIFthdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiIlcyBhZ28iLHM6ImEgZmV3IHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0fG5kfHJkfHRoKS8sb3JkaW5hbDpmdW5jdGlvbihlKXt2YXIgYT1lJTEwLHQ9MT09PX5+KGUlMTAwLzEwKT8idGgiOjE9PT1hPyJzdCI6Mj09PWE/Im5kIjozPT09YT8icmQiOiJ0aCI7cmV0dXJuIGUrdH19KTtyZXR1cm4gZX0oKSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoImVuLWNhIil9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/en-gb.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsYSl7IWZ1bmN0aW9uKCl7dmFyIGU9YS5kZWZpbmVMb2NhbGUoImVuLWdiIix7bW9udGhzOiJKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdV9Nb19UdV9XZV9UaF9Gcl9TYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIsbToiYSBtaW51dGUiLG1tOiIlZCBtaW51dGVzIixoOiJhbiBob3VyIixoaDoiJWQgaG91cnMiLGQ6ImEgZGF5IixkZDoiJWQgZGF5cyIsTToiYSBtb250aCIsTU06IiVkIG1vbnRocyIseToiYSB5ZWFyIix5eToiJWQgeWVhcnMifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0oc3R8bmR8cmR8dGgpLyxvcmRpbmFsOmZ1bmN0aW9uKGUpe3ZhciBhPWUlMTAscj0xPT09fn4oZSUxMDAvMTApPyJ0aCI6MT09PWE/InN0IjoyPT09YT8ibmQiOjM9PT1hPyJyZCI6InRoIjtyZXR1cm4gZStyfSx3ZWVrOntkb3c6MSxkb3k6NH19KTtyZXR1cm4gZX0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJlbi1nYiIsImVuLUdCIix7Y2xvc2VUZXh0OiJEb25lIixwcmV2VGV4dDoiUHJldiIsbmV4dFRleHQ6Ik5leHQiLGN1cnJlbnRUZXh0OiJUb2RheSIsbW9udGhOYW1lczpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sZGF5TmFtZXM6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLGRheU5hbWVzU2hvcnQ6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxkYXlOYW1lc01pbjpbIlN1IiwiTW8iLCJUdSIsIldlIiwiVGgiLCJGciIsIlNhIl0sd2Vla0hlYWRlcjoiV2siLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJlbi1nYiIpfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/en-ie.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsYSl7IWZ1bmN0aW9uKCl7dmFyIGU9YS5kZWZpbmVMb2NhbGUoImVuLWllIix7bW9udGhzOiJKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdV9Nb19UdV9XZV9UaF9Gcl9TYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC1NTS1ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW1RvZGF5IGF0XSBMVCIsbmV4dERheToiW1RvbW9ycm93IGF0XSBMVCIsbmV4dFdlZWs6ImRkZGQgW2F0XSBMVCIsbGFzdERheToiW1llc3RlcmRheSBhdF0gTFQiLGxhc3RXZWVrOiJbTGFzdF0gZGRkZCBbYXRdIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoiJXMgYWdvIixzOiJhIGZldyBzZWNvbmRzIixtOiJhIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6ImFuIGhvdXIiLGhoOiIlZCBob3VycyIsZDoiYSBkYXkiLGRkOiIlZCBkYXlzIixNOiJhIG1vbnRoIixNTToiJWQgbW9udGhzIix5OiJhIHllYXIiLHl5OiIlZCB5ZWFycyJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfShzdHxuZHxyZHx0aCkvLG9yZGluYWw6ZnVuY3Rpb24oZSl7dmFyIGE9ZSUxMCx0PTE9PT1+fihlJTEwMC8xMCk/InRoIjoxPT09YT8ic3QiOjI9PT1hPyJuZCI6Mz09PWE/InJkIjoidGgiO3JldHVybiBlK3R9LHdlZWs6e2RvdzoxLGRveTo0fX0pO3JldHVybiBlfSgpLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiZW4taWUiKX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/en-nz.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsYSl7IWZ1bmN0aW9uKCl7dmFyIGU9YS5kZWZpbmVMb2NhbGUoImVuLW56Iix7bW9udGhzOiJKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoiU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXkiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdV9Nb19UdV9XZV9UaF9Gcl9TYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Img6bW0gQSIsTFRTOiJoOm1tOnNzIEEiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBoOm1tIEEiLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIGg6bW0gQSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbVG9kYXkgYXRdIExUIixuZXh0RGF5OiJbVG9tb3Jyb3cgYXRdIExUIixuZXh0V2VlazoiZGRkZCBbYXRdIExUIixsYXN0RGF5OiJbWWVzdGVyZGF5IGF0XSBMVCIsbGFzdFdlZWs6IltMYXN0XSBkZGRkIFthdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImluICVzIixwYXN0OiIlcyBhZ28iLHM6ImEgZmV3IHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0fG5kfHJkfHRoKS8sb3JkaW5hbDpmdW5jdGlvbihlKXt2YXIgYT1lJTEwLHI9MT09PX5+KGUlMTAwLzEwKT8idGgiOjE9PT1hPyJzdCI6Mj09PWE/Im5kIjozPT09YT8icmQiOiJ0aCI7cmV0dXJuIGUrcn0sd2Vlazp7ZG93OjEsZG95OjR9fSk7cmV0dXJuIGV9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgiZW4tbnoiLCJlbi1OWiIse2Nsb3NlVGV4dDoiRG9uZSIscHJldlRleHQ6IlByZXYiLG5leHRUZXh0OiJOZXh0IixjdXJyZW50VGV4dDoiVG9kYXkiLG1vbnRoTmFtZXM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLGRheU5hbWVzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxkYXlOYW1lc1Nob3J0OlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sZGF5TmFtZXNNaW46WyJTdSIsIk1vIiwiVHUiLCJXZSIsIlRoIiwiRnIiLCJTYSJdLHdlZWtIZWFkZXI6IldrIixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiZW4tbnoiKX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/es-do.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsYSl7IWZ1bmN0aW9uKCl7dmFyIGU9ImVuZS5fZmViLl9tYXIuX2Fici5fbWF5Ll9qdW4uX2p1bC5fYWdvLl9zZXAuX29jdC5fbm92Ll9kaWMuIi5zcGxpdCgiXyIpLG89ImVuZV9mZWJfbWFyX2Ficl9tYXlfanVuX2p1bF9hZ29fc2VwX29jdF9ub3ZfZGljIi5zcGxpdCgiXyIpLHM9YS5kZWZpbmVMb2NhbGUoImVzLWRvIix7bW9udGhzOiJlbmVyb19mZWJyZXJvX21hcnpvX2FicmlsX21heW9fanVuaW9fanVsaW9fYWdvc3RvX3NlcHRpZW1icmVfb2N0dWJyZV9ub3ZpZW1icmVfZGljaWVtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OmZ1bmN0aW9uKGEscyl7cmV0dXJuLy1NTU0tLy50ZXN0KHMpP29bYS5tb250aCgpXTplW2EubW9udGgoKV19LG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6ImRvbWluZ29fbHVuZXNfbWFydGVzX21pw6lyY29sZXNfanVldmVzX3ZpZXJuZXNfc8OhYmFkbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkb20uX2x1bi5fbWFyLl9tacOpLl9qdWUuX3ZpZS5fc8OhYi4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImRvX2x1X21hX21pX2p1X3ZpX3PDoSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJoOm1tIEEiLExUUzoiaDptbTpzcyBBIixMOiJERC9NTS9ZWVlZIixMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIixMTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSBoOm1tIEEiLExMTEw6ImRkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBoOm1tIEEifSxjYWxlbmRhcjp7c2FtZURheTpmdW5jdGlvbigpe3JldHVybiJbaG95IGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxuZXh0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIlttYcOxYW5hIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxuZXh0V2VlazpmdW5jdGlvbigpe3JldHVybiJkZGRkIFthIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbGFzdERheTpmdW5jdGlvbigpe3JldHVybiJbYXllciBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iW2VsXSBkZGRkIFtwYXNhZG8gYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImVuICVzIixwYXN0OiJoYWNlICVzIixzOiJ1bm9zIHNlZ3VuZG9zIixtOiJ1biBtaW51dG8iLG1tOiIlZCBtaW51dG9zIixoOiJ1bmEgaG9yYSIsaGg6IiVkIGhvcmFzIixkOiJ1biBkw61hIixkZDoiJWQgZMOtYXMiLE06InVuIG1lcyIsTU06IiVkIG1lc2VzIix5OiJ1biBhw7FvIix5eToiJWQgYcOxb3MifSxvcmRpbmFsUGFyc2U6L1xkezEsMn3Cui8sb3JkaW5hbDoiJWTCuiIsd2Vlazp7ZG93OjEsZG95OjR9fSk7cmV0dXJuIHN9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgiZXMtZG8iLCJlcyIse2Nsb3NlVGV4dDoiQ2VycmFyIixwcmV2VGV4dDoiJiN4M0M7QW50IixuZXh0VGV4dDoiU2lnJiN4M0U7IixjdXJyZW50VGV4dDoiSG95Iixtb250aE5hbWVzOlsiZW5lcm8iLCJmZWJyZXJvIiwibWFyem8iLCJhYnJpbCIsIm1heW8iLCJqdW5pbyIsImp1bGlvIiwiYWdvc3RvIiwic2VwdGllbWJyZSIsIm9jdHVicmUiLCJub3ZpZW1icmUiLCJkaWNpZW1icmUiXSxtb250aE5hbWVzU2hvcnQ6WyJlbmUiLCJmZWIiLCJtYXIiLCJhYnIiLCJtYXkiLCJqdW4iLCJqdWwiLCJhZ28iLCJzZXAiLCJvY3QiLCJub3YiLCJkaWMiXSxkYXlOYW1lczpbImRvbWluZ28iLCJsdW5lcyIsIm1hcnRlcyIsIm1pw6lyY29sZXMiLCJqdWV2ZXMiLCJ2aWVybmVzIiwic8OhYmFkbyJdLGRheU5hbWVzU2hvcnQ6WyJkb20iLCJsdW4iLCJtYXIiLCJtacOpIiwianVlIiwidmllIiwic8OhYiJdLGRheU5hbWVzTWluOlsiRCIsIkwiLCJNIiwiWCIsIkoiLCJWIiwiUyJdLHdlZWtIZWFkZXI6IlNtIixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiZXMtZG8iLHtidXR0b25UZXh0Onttb250aDoiTWVzIix3ZWVrOiJTZW1hbmEiLGRheToiRMOtYSIsbGlzdDoiQWdlbmRhIn0sYWxsRGF5SHRtbDoiVG9kbzxici8+ZWwgZMOtYSIsZXZlbnRMaW1pdFRleHQ6Im3DoXMiLG5vRXZlbnRzTWVzc2FnZToiTm8gaGF5IGV2ZW50b3MgcGFyYSBtb3N0cmFyIn0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/es.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsYSl7IWZ1bmN0aW9uKCl7dmFyIGU9ImVuZS5fZmViLl9tYXIuX2Fici5fbWF5Ll9qdW4uX2p1bC5fYWdvLl9zZXAuX29jdC5fbm92Ll9kaWMuIi5zcGxpdCgiXyIpLG89ImVuZV9mZWJfbWFyX2Ficl9tYXlfanVuX2p1bF9hZ29fc2VwX29jdF9ub3ZfZGljIi5zcGxpdCgiXyIpLHM9YS5kZWZpbmVMb2NhbGUoImVzIix7bW9udGhzOiJlbmVyb19mZWJyZXJvX21hcnpvX2FicmlsX21heW9fanVuaW9fanVsaW9fYWdvc3RvX3NlcHRpZW1icmVfb2N0dWJyZV9ub3ZpZW1icmVfZGljaWVtYnJlIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OmZ1bmN0aW9uKGEscyl7cmV0dXJuLy1NTU0tLy50ZXN0KHMpP29bYS5tb250aCgpXTplW2EubW9udGgoKV19LG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6ImRvbWluZ29fbHVuZXNfbWFydGVzX21pw6lyY29sZXNfanVldmVzX3ZpZXJuZXNfc8OhYmFkbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkb20uX2x1bi5fbWFyLl9tacOpLl9qdWUuX3ZpZS5fc8OhYi4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImRvX2x1X21hX21pX2p1X3ZpX3PDoSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkiLExMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEg6bW0iLExMTEw6ImRkZGQsIEQgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW2hveSBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbmV4dERheTpmdW5jdGlvbigpe3JldHVybiJbbWHDsWFuYSBhIGxhIisoMSE9PXRoaXMuaG91cnMoKT8icyI6IiIpKyJdIExUIn0sbmV4dFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4iZGRkZCBbYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LGxhc3REYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW2F5ZXIgYSBsYSIrKDEhPT10aGlzLmhvdXJzKCk/InMiOiIiKSsiXSBMVCJ9LGxhc3RXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIltlbF0gZGRkZCBbcGFzYWRvIGEgbGEiKygxIT09dGhpcy5ob3VycygpPyJzIjoiIikrIl0gTFQifSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJlbiAlcyIscGFzdDoiaGFjZSAlcyIsczoidW5vcyBzZWd1bmRvcyIsbToidW4gbWludXRvIixtbToiJWQgbWludXRvcyIsaDoidW5hIGhvcmEiLGhoOiIlZCBob3JhcyIsZDoidW4gZMOtYSIsZGQ6IiVkIGTDrWFzIixNOiJ1biBtZXMiLE1NOiIlZCBtZXNlcyIseToidW4gYcOxbyIseXk6IiVkIGHDsW9zIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9wrovLG9yZGluYWw6IiVkwroiLHdlZWs6e2RvdzoxLGRveTo0fX0pO3JldHVybiBzfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoImVzIiwiZXMiLHtjbG9zZVRleHQ6IkNlcnJhciIscHJldlRleHQ6IiYjeDNDO0FudCIsbmV4dFRleHQ6IlNpZyYjeDNFOyIsY3VycmVudFRleHQ6IkhveSIsbW9udGhOYW1lczpbImVuZXJvIiwiZmVicmVybyIsIm1hcnpvIiwiYWJyaWwiLCJtYXlvIiwianVuaW8iLCJqdWxpbyIsImFnb3N0byIsInNlcHRpZW1icmUiLCJvY3R1YnJlIiwibm92aWVtYnJlIiwiZGljaWVtYnJlIl0sbW9udGhOYW1lc1Nob3J0OlsiZW5lIiwiZmViIiwibWFyIiwiYWJyIiwibWF5IiwianVuIiwianVsIiwiYWdvIiwic2VwIiwib2N0Iiwibm92IiwiZGljIl0sZGF5TmFtZXM6WyJkb21pbmdvIiwibHVuZXMiLCJtYXJ0ZXMiLCJtacOpcmNvbGVzIiwianVldmVzIiwidmllcm5lcyIsInPDoWJhZG8iXSxkYXlOYW1lc1Nob3J0OlsiZG9tIiwibHVuIiwibWFyIiwibWnDqSIsImp1ZSIsInZpZSIsInPDoWIiXSxkYXlOYW1lc01pbjpbIkQiLCJMIiwiTSIsIlgiLCJKIiwiViIsIlMiXSx3ZWVrSGVhZGVyOiJTbSIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoImVzIix7YnV0dG9uVGV4dDp7bW9udGg6Ik1lcyIsd2VlazoiU2VtYW5hIixkYXk6IkTDrWEiLGxpc3Q6IkFnZW5kYSJ9LGFsbERheUh0bWw6IlRvZG88YnIvPmVsIGTDrWEiLGV2ZW50TGltaXRUZXh0OiJtw6FzIixub0V2ZW50c01lc3NhZ2U6Ik5vIGhheSBldmVudG9zIHBhcmEgbW9zdHJhciJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/eu.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWEocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmEoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGEsZSl7IWZ1bmN0aW9uKCl7dmFyIGE9ZS5kZWZpbmVMb2NhbGUoImV1Iix7bW9udGhzOiJ1cnRhcnJpbGFfb3RzYWlsYV9tYXJ0eG9hX2FwaXJpbGFfbWFpYXR6YV9la2FpbmFfdXp0YWlsYV9hYnV6dHVhX2lyYWlsYV91cnJpYV9hemFyb2FfYWJlbmR1YSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoidXJ0Ll9vdHMuX21hci5fYXBpLl9tYWkuX2VrYS5fdXp0Ll9hYnUuX2lyYS5fdXJyLl9hemEuX2FiZS4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiaWdhbmRlYV9hc3RlbGVoZW5hX2FzdGVhcnRlYV9hc3RlYXprZW5hX29zdGVndW5hX29zdGlyYWxhX2xhcnVuYmF0YSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJpZy5fYWwuX2FyLl9hei5fb2cuX29sLl9sci4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImlnX2FsX2FyX2F6X29nX29sX2xyIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJZWVlZLU1NLUREIixMTDoiWVlZWVtrb10gTU1NTVtyZW5dIERbYV0iLExMTDoiWVlZWVtrb10gTU1NTVtyZW5dIERbYV0gSEg6bW0iLExMTEw6ImRkZGQsIFlZWVlba29dIE1NTU1bcmVuXSBEW2FdIEhIOm1tIixsOiJZWVlZLU0tRCIsbGw6IllZWVlba29dIE1NTSBEW2FdIixsbGw6IllZWVlba29dIE1NTSBEW2FdIEhIOm1tIixsbGxsOiJkZGQsIFlZWVlba29dIE1NTSBEW2FdIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltnYXVyXSBMVFtldGFuXSIsbmV4dERheToiW2JpaGFyXSBMVFtldGFuXSIsbmV4dFdlZWs6ImRkZGQgTFRbZXRhbl0iLGxhc3REYXk6IlthdHpvXSBMVFtldGFuXSIsbGFzdFdlZWs6IlthdXJyZWtvXSBkZGRkIExUW2V0YW5dIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBiYXJydSIscGFzdDoiZHVlbGEgJXMiLHM6InNlZ3VuZG8gYmF0enVrIixtOiJtaW51dHUgYmF0IixtbToiJWQgbWludXR1IixoOiJvcmR1IGJhdCIsaGg6IiVkIG9yZHUiLGQ6ImVndW4gYmF0IixkZDoiJWQgZWd1biIsTToiaGlsYWJldGUgYmF0IixNTToiJWQgaGlsYWJldGUiLHk6InVydGUgYmF0Iix5eToiJWQgdXJ0ZSJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo3fX0pO3JldHVybiBhfSgpLGEuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoImV1IiwiZXUiLHtjbG9zZVRleHQ6IkVnaW5hIixwcmV2VGV4dDoiJiN4M0M7QXVyIixuZXh0VGV4dDoiSHVyJiN4M0U7IixjdXJyZW50VGV4dDoiR2F1ciIsbW9udGhOYW1lczpbInVydGFycmlsYSIsIm90c2FpbGEiLCJtYXJ0eG9hIiwiYXBpcmlsYSIsIm1haWF0emEiLCJla2FpbmEiLCJ1enRhaWxhIiwiYWJ1enR1YSIsImlyYWlsYSIsInVycmlhIiwiYXphcm9hIiwiYWJlbmR1YSJdLG1vbnRoTmFtZXNTaG9ydDpbInVydC4iLCJvdHMuIiwibWFyLiIsImFwaS4iLCJtYWkuIiwiZWthLiIsInV6dC4iLCJhYnUuIiwiaXJhLiIsInVyci4iLCJhemEuIiwiYWJlLiJdLGRheU5hbWVzOlsiaWdhbmRlYSIsImFzdGVsZWhlbmEiLCJhc3RlYXJ0ZWEiLCJhc3RlYXprZW5hIiwib3N0ZWd1bmEiLCJvc3RpcmFsYSIsImxhcnVuYmF0YSJdLGRheU5hbWVzU2hvcnQ6WyJpZy4iLCJhbC4iLCJhci4iLCJhei4iLCJvZy4iLCJvbC4iLCJsci4iXSxkYXlOYW1lc01pbjpbImlnIiwiYWwiLCJhciIsImF6Iiwib2ciLCJvbCIsImxyIl0sd2Vla0hlYWRlcjoiQXMiLGRhdGVGb3JtYXQ6Inl5LW1tLWRkIixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksYS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJldSIse2J1dHRvblRleHQ6e21vbnRoOiJIaWxhYmV0ZWEiLHdlZWs6IkFzdGVhIixkYXk6IkVndW5hIixsaXN0OiJBZ2VuZGEifSxhbGxEYXlIdG1sOiJFZ3VuPGJyLz5vc29hIixldmVudExpbWl0VGV4dDoiZ2VoaWFnbyIsbm9FdmVudHNNZXNzYWdlOiJFeiBkYWdvIGVraXRhbGRpcmlrIGVyYWt1c3Rla28ifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/fa.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKCl7dmFyIGU9ezE6ItuxIiwyOiLbsiIsMzoi27MiLDQ6Itu0Iiw1OiLbtSIsNjoi27YiLDc6Itu3Iiw4OiLbuCIsOToi27kiLDA6ItuwIn0sYT17ItuxIjoiMSIsItuyIjoiMiIsItuzIjoiMyIsItu0IjoiNCIsItu1IjoiNSIsItu2IjoiNiIsItu3IjoiNyIsItu4IjoiOCIsItu5IjoiOSIsItuwIjoiMCJ9LHI9dC5kZWZpbmVMb2NhbGUoImZhIix7bW9udGhzOiLamNin2YbZiNuM2Ydf2YHZiNix24zZh1/Zhdin2LHYs1/YotmI2LHbjNmEX9mF2Ydf2pjZiNim2YZf2pjZiNim24zZh1/Yp9mI2Kpf2LPZvtiq2KfZhdio2LFf2Kfaqdiq2KjYsV/ZhtmI2KfZhdio2LFf2K/Ys9in2YXYqNixIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiLamNin2YbZiNuM2Ydf2YHZiNix24zZh1/Zhdin2LHYs1/YotmI2LHbjNmEX9mF2Ydf2pjZiNim2YZf2pjZiNim24zZh1/Yp9mI2Kpf2LPZvtiq2KfZhdio2LFf2Kfaqdiq2KjYsV/ZhtmI2KfZhdio2LFf2K/Ys9in2YXYqNixIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiLbjNqp4oCM2LTZhtio2Ydf2K/ZiNi02YbYqNmHX9iz2YfigIzYtNmG2KjZh1/ahtmH2KfYsdi02YbYqNmHX9m+2YbYrOKAjNi02YbYqNmHX9is2YXYudmHX9i02YbYqNmHIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ItuM2qnigIzYtNmG2KjZh1/Yr9mI2LTZhtio2Ydf2LPZh+KAjNi02YbYqNmHX9qG2YfYp9ix2LTZhtio2Ydf2b7Zhtis4oCM2LTZhtio2Ydf2KzZhdi52Ydf2LTZhtio2YciLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ItuMX9ivX9izX9qGX9m+X9isX9i0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhIOm1tIn0sbWVyaWRpZW1QYXJzZTov2YLYqNmEINin2LIg2LjZh9ixfNio2LnYryDYp9iyINi42YfYsS8saXNQTTpmdW5jdGlvbihlKXtyZXR1cm4v2KjYudivINin2LIg2LjZh9ixLy50ZXN0KGUpfSxtZXJpZGllbTpmdW5jdGlvbihlLHQsYSl7cmV0dXJuIGU8MTI/ItmC2KjZhCDYp9iyINi42YfYsSI6Itio2LnYryDYp9iyINi42YfYsSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb2KfZhdix2YjYsiDYs9in2LnYql0gTFQiLG5leHREYXk6IlvZgdix2K/YpyDYs9in2LnYql0gTFQiLG5leHRXZWVrOiJkZGRkIFvYs9in2LnYql0gTFQiLGxhc3REYXk6IlvYr9uM2LHZiNiyINiz2KfYudiqXSBMVCIsbGFzdFdlZWs6ImRkZGQgW9m+24zYtF0gW9iz2KfYudiqXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi2K/YsSAlcyIscGFzdDoiJXMg2b7bjNi0IixzOiLahtmG2K/bjNmGINir2KfZhtuM2YciLG06ItuM2qkg2K/ZgtuM2YLZhyIsbW06IiVkINiv2YLbjNmC2YciLGg6ItuM2qkg2LPYp9i52KoiLGhoOiIlZCDYs9in2LnYqiIsZDoi24zaqSDYsdmI2LIiLGRkOiIlZCDYsdmI2LIiLE06ItuM2qkg2YXYp9mHIixNTToiJWQg2YXYp9mHIix5OiLbjNqpINiz2KfZhCIseXk6IiVkINiz2KfZhCJ9LHByZXBhcnNlOmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL1vbsC3buV0vZyxmdW5jdGlvbihlKXtyZXR1cm4gYVtlXX0pLnJlcGxhY2UoL9iML2csIiwiKX0scG9zdGZvcm1hdDpmdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKHQpe3JldHVybiBlW3RdfSkucmVwbGFjZSgvLC9nLCLYjCIpfSxvcmRpbmFsUGFyc2U6L1xkezEsMn3ZhS8sb3JkaW5hbDoiJWTZhSIsd2Vlazp7ZG93OjYsZG95OjEyfX0pO3JldHVybiByfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoImZhIiwiZmEiLHtjbG9zZVRleHQ6Itio2LPYqtmGIixwcmV2VGV4dDoiJiN4M0M72YLYqNmE24wiLG5leHRUZXh0OiLYqNi52K/bjCYjeDNFOyIsY3VycmVudFRleHQ6Itin2YXYsdmI2LIiLG1vbnRoTmFtZXM6WyLamNin2YbZiNuM2YciLCLZgdmI2LHbjNmHIiwi2YXYp9ix2LMiLCLYotmI2LHbjNmEIiwi2YXZhyIsItqY2YjYptmGIiwi2pjZiNim24zZhyIsItin2YjYqiIsItiz2b7Yqtin2YXYqNixIiwi2Kfaqdiq2KjYsSIsItmG2YjYp9mF2KjYsSIsItiv2LPYp9mF2KjYsSJdLG1vbnRoTmFtZXNTaG9ydDpbIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIjEwIiwiMTEiLCIxMiJdLGRheU5hbWVzOlsi2Yraqdi02YbYqNmHIiwi2K/ZiNi02YbYqNmHIiwi2LPZh+KAjNi02YbYqNmHIiwi2obZh9in2LHYtNmG2KjZhyIsItm+2YbYrNi02YbYqNmHIiwi2KzZhdi52YciLCLYtNmG2KjZhyJdLGRheU5hbWVzU2hvcnQ6WyLbjCIsItivIiwi2LMiLCLahiIsItm+Iiwi2KwiLCLYtCJdLGRheU5hbWVzTWluOlsi24wiLCLYryIsItizIiwi2oYiLCLZviIsItisIiwi2LQiXSx3ZWVrSGVhZGVyOiLZh9mBIixkYXRlRm9ybWF0OiJ5eS9tbS9kZCIsZmlyc3REYXk6Nixpc1JUTDohMCxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiZmEiLHtidXR0b25UZXh0Onttb250aDoi2YXYp9mHIix3ZWVrOiLZh9mB2KrZhyIsZGF5OiLYsdmI2LIiLGxpc3Q6Itio2LHZhtin2YXZhyJ9LGFsbERheVRleHQ6Itiq2YXYp9mFINix2YjYsiIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuItio24zYtCDYp9iyICIrZX0sbm9FdmVudHNNZXNzYWdlOiLZh9uM2oYg2LHZiNuM2K/Yp9iv24wg2KjZhyDZhtmF2KfbjNi0In0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/fi.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsYSl7IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLGEsdCxpKXt2YXIgbj0iIjtzd2l0Y2godCl7Y2FzZSJzIjpyZXR1cm4gaT8ibXV1dGFtYW4gc2VrdW5uaW4iOiJtdXV0YW1hIHNla3VudGkiO2Nhc2UibSI6cmV0dXJuIGk/Im1pbnV1dGluIjoibWludXV0dGkiO2Nhc2UibW0iOm49aT8ibWludXV0aW4iOiJtaW51dXR0aWEiO2JyZWFrO2Nhc2UiaCI6cmV0dXJuIGk/InR1bm5pbiI6InR1bnRpIjtjYXNlImhoIjpuPWk/InR1bm5pbiI6InR1bnRpYSI7YnJlYWs7Y2FzZSJkIjpyZXR1cm4gaT8icMOkaXbDpG4iOiJww6RpdsOkIjtjYXNlImRkIjpuPWk/InDDpGl2w6RuIjoicMOkaXbDpMOkIjticmVhaztjYXNlIk0iOnJldHVybiBpPyJrdXVrYXVkZW4iOiJrdXVrYXVzaSI7Y2FzZSJNTSI6bj1pPyJrdXVrYXVkZW4iOiJrdXVrYXV0dGEiO2JyZWFrO2Nhc2UieSI6cmV0dXJuIGk/InZ1b2RlbiI6InZ1b3NpIjtjYXNlInl5IjpuPWk/InZ1b2RlbiI6InZ1b3R0YSJ9cmV0dXJuIG49dShlLGkpKyIgIitufWZ1bmN0aW9uIHUoZSxhKXtyZXR1cm4gZTwxMD9hP2lbZV06dFtlXTplfXZhciB0PSJub2xsYSB5a3NpIGtha3NpIGtvbG1lIG5lbGrDpCB2aWlzaSBrdXVzaSBzZWl0c2Vtw6RuIGthaGRla3NhbiB5aGRla3PDpG4iLnNwbGl0KCIgIiksaT1bIm5vbGxhIiwieWhkZW4iLCJrYWhkZW4iLCJrb2xtZW4iLCJuZWxqw6RuIiwidmlpZGVuIiwia3V1ZGVuIix0WzddLHRbOF0sdFs5XV0sbj1hLmRlZmluZUxvY2FsZSgiZmkiLHttb250aHM6InRhbW1pa3V1X2hlbG1pa3V1X21hYWxpc2t1dV9odWh0aWt1dV90b3Vrb2t1dV9rZXPDpGt1dV9oZWluw6RrdXVfZWxva3V1X3N5eXNrdXVfbG9rYWt1dV9tYXJyYXNrdXVfam91bHVrdXUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6InRhbW1pX2hlbG1pX21hYWxpc19odWh0aV90b3Vrb19rZXPDpF9oZWluw6RfZWxvX3N5eXNfbG9rYV9tYXJyYXNfam91bHUiLnNwbGl0KCJfIiksd2Vla2RheXM6InN1bm51bnRhaV9tYWFuYW50YWlfdGlpc3RhaV9rZXNraXZpaWtrb190b3JzdGFpX3BlcmphbnRhaV9sYXVhbnRhaSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJzdV9tYV90aV9rZV90b19wZV9sYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoic3VfbWFfdGlfa2VfdG9fcGVfbGEiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISC5tbSIsTFRTOiJISC5tbS5zcyIsTDoiREQuTU0uWVlZWSIsTEw6IkRvIE1NTU1bdGFdIFlZWVkiLExMTDoiRG8gTU1NTVt0YV0gWVlZWSwgW2tsb10gSEgubW0iLExMTEw6ImRkZGQsIERvIE1NTU1bdGFdIFlZWVksIFtrbG9dIEhILm1tIixsOiJELk0uWVlZWSIsbGw6IkRvIE1NTSBZWVlZIixsbGw6IkRvIE1NTSBZWVlZLCBba2xvXSBISC5tbSIsbGxsbDoiZGRkLCBEbyBNTU0gWVlZWSwgW2tsb10gSEgubW0ifSxjYWxlbmRhcjp7c2FtZURheToiW3TDpG7DpMOkbl0gW2tsb10gTFQiLG5leHREYXk6IltodW9tZW5uYV0gW2tsb10gTFQiLG5leHRXZWVrOiJkZGRkIFtrbG9dIExUIixsYXN0RGF5OiJbZWlsZW5dIFtrbG9dIExUIixsYXN0V2VlazoiW3ZpaW1lXSBkZGRkW25hXSBba2xvXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgcMOkw6RzdMOkIixwYXN0OiIlcyBzaXR0ZW4iLHM6ZSxtOmUsbW06ZSxoOmUsaGg6ZSxkOmUsZGQ6ZSxNOmUsTU06ZSx5OmUseXk6ZX0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSk7cmV0dXJuIG59KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgiZmkiLCJmaSIse2Nsb3NlVGV4dDoiU3VsamUiLHByZXZUZXh0OiImI3hBQjtFZGVsbGluZW4iLG5leHRUZXh0OiJTZXVyYWF2YSYjeEJCOyIsY3VycmVudFRleHQ6IlTDpG7DpMOkbiIsbW9udGhOYW1lczpbIlRhbW1pa3V1IiwiSGVsbWlrdXUiLCJNYWFsaXNrdXUiLCJIdWh0aWt1dSIsIlRvdWtva3V1IiwiS2Vzw6RrdXUiLCJIZWluw6RrdXUiLCJFbG9rdXUiLCJTeXlza3V1IiwiTG9rYWt1dSIsIk1hcnJhc2t1dSIsIkpvdWx1a3V1Il0sbW9udGhOYW1lc1Nob3J0OlsiVGFtbWkiLCJIZWxtaSIsIk1hYWxpcyIsIkh1aHRpIiwiVG91a28iLCJLZXPDpCIsIkhlaW7DpCIsIkVsbyIsIlN5eXMiLCJMb2thIiwiTWFycmFzIiwiSm91bHUiXSxkYXlOYW1lc1Nob3J0OlsiU3UiLCJNYSIsIlRpIiwiS2UiLCJUbyIsIlBlIiwiTGEiXSxkYXlOYW1lczpbIlN1bm51bnRhaSIsIk1hYW5hbnRhaSIsIlRpaXN0YWkiLCJLZXNraXZpaWtrbyIsIlRvcnN0YWkiLCJQZXJqYW50YWkiLCJMYXVhbnRhaSJdLGRheU5hbWVzTWluOlsiU3UiLCJNYSIsIlRpIiwiS2UiLCJUbyIsIlBlIiwiTGEiXSx3ZWVrSGVhZGVyOiJWayIsZGF0ZUZvcm1hdDoiZC5tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJmaSIse2J1dHRvblRleHQ6e21vbnRoOiJLdXVrYXVzaSIsd2VlazoiVmlpa2tvIixkYXk6IlDDpGl2w6QiLGxpc3Q6IlRhcGFodHVtYXQifSxhbGxEYXlUZXh0OiJLb2tvIHDDpGl2w6QiLGV2ZW50TGltaXRUZXh0OiJsaXPDpMOkIixub0V2ZW50c01lc3NhZ2U6IkVpIG7DpHl0ZXR0w6R2acOkIHRhcGFodHVtaWEifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/fr-ca.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsYSl7IWZ1bmN0aW9uKCl7dmFyIGU9YS5kZWZpbmVMb2NhbGUoImZyLWNhIix7bW9udGhzOiJqYW52aWVyX2bDqXZyaWVyX21hcnNfYXZyaWxfbWFpX2p1aW5fanVpbGxldF9hb8O7dF9zZXB0ZW1icmVfb2N0b2JyZV9ub3ZlbWJyZV9kw6ljZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ImphbnYuX2bDqXZyLl9tYXJzX2F2ci5fbWFpX2p1aW5fanVpbC5fYW/Du3Rfc2VwdC5fb2N0Ll9ub3YuX2TDqWMuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6ImRpbWFuY2hlX2x1bmRpX21hcmRpX21lcmNyZWRpX2pldWRpX3ZlbmRyZWRpX3NhbWVkaSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkaW0uX2x1bi5fbWFyLl9tZXIuX2pldS5fdmVuLl9zYW0uIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJEaV9MdV9NYV9NZV9KZV9WZV9TYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiWVlZWS1NTS1ERCIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltBdWpvdXJkJ2h1aSDDoF0gTFQiLG5leHREYXk6IltEZW1haW4gw6BdIExUIixuZXh0V2VlazoiZGRkZCBbw6BdIExUIixsYXN0RGF5OiJbSGllciDDoF0gTFQiLGxhc3RXZWVrOiJkZGRkIFtkZXJuaWVyIMOgXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZGFucyAlcyIscGFzdDoiaWwgeSBhICVzIixzOiJxdWVscXVlcyBzZWNvbmRlcyIsbToidW5lIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6InVuZSBoZXVyZSIsaGg6IiVkIGhldXJlcyIsZDoidW4gam91ciIsZGQ6IiVkIGpvdXJzIixNOiJ1biBtb2lzIixNTToiJWQgbW9pcyIseToidW4gYW4iLHl5OiIlZCBhbnMifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0oZXJ8ZSkvLG9yZGluYWw6ZnVuY3Rpb24oZSl7cmV0dXJuIGUrKDE9PT1lPyJlciI6ImUiKX19KTtyZXR1cm4gZX0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJmci1jYSIsImZyLUNBIix7Y2xvc2VUZXh0OiJGZXJtZXIiLHByZXZUZXh0OiJQcsOpY8OpZGVudCIsbmV4dFRleHQ6IlN1aXZhbnQiLGN1cnJlbnRUZXh0OiJBdWpvdXJkJ2h1aSIsbW9udGhOYW1lczpbImphbnZpZXIiLCJmw6l2cmllciIsIm1hcnMiLCJhdnJpbCIsIm1haSIsImp1aW4iLCJqdWlsbGV0IiwiYW/Du3QiLCJzZXB0ZW1icmUiLCJvY3RvYnJlIiwibm92ZW1icmUiLCJkw6ljZW1icmUiXSxtb250aE5hbWVzU2hvcnQ6WyJqYW52LiIsImbDqXZyLiIsIm1hcnMiLCJhdnJpbCIsIm1haSIsImp1aW4iLCJqdWlsLiIsImFvw7t0Iiwic2VwdC4iLCJvY3QuIiwibm92LiIsImTDqWMuIl0sZGF5TmFtZXM6WyJkaW1hbmNoZSIsImx1bmRpIiwibWFyZGkiLCJtZXJjcmVkaSIsImpldWRpIiwidmVuZHJlZGkiLCJzYW1lZGkiXSxkYXlOYW1lc1Nob3J0OlsiZGltLiIsImx1bi4iLCJtYXIuIiwibWVyLiIsImpldS4iLCJ2ZW4uIiwic2FtLiJdLGRheU5hbWVzTWluOlsiRCIsIkwiLCJNIiwiTSIsIkoiLCJWIiwiUyJdLHdlZWtIZWFkZXI6IlNlbS4iLGRhdGVGb3JtYXQ6Inl5LW1tLWRkIixmaXJzdERheTowLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJmci1jYSIse2J1dHRvblRleHQ6e3llYXI6IkFubsOpZSIsbW9udGg6Ik1vaXMiLHdlZWs6IlNlbWFpbmUiLGRheToiSm91ciIsbGlzdDoiTW9uIHBsYW5uaW5nIn0sYWxsRGF5SHRtbDoiVG91dGUgbGE8YnIvPmpvdXJuw6llIixldmVudExpbWl0VGV4dDoiZW4gcGx1cyIsbm9FdmVudHNNZXNzYWdlOiJBdWN1biDDqXbDqW5lbWVudCDDoCBhZmZpY2hlciJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/fr-ch.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUscil7IWZ1bmN0aW9uKCl7dmFyIGU9ci5kZWZpbmVMb2NhbGUoImZyLWNoIix7bW9udGhzOiJqYW52aWVyX2bDqXZyaWVyX21hcnNfYXZyaWxfbWFpX2p1aW5fanVpbGxldF9hb8O7dF9zZXB0ZW1icmVfb2N0b2JyZV9ub3ZlbWJyZV9kw6ljZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ImphbnYuX2bDqXZyLl9tYXJzX2F2ci5fbWFpX2p1aW5fanVpbC5fYW/Du3Rfc2VwdC5fb2N0Ll9ub3YuX2TDqWMuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6ImRpbWFuY2hlX2x1bmRpX21hcmRpX21lcmNyZWRpX2pldWRpX3ZlbmRyZWRpX3NhbWVkaSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkaW0uX2x1bi5fbWFyLl9tZXIuX2pldS5fdmVuLl9zYW0uIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJEaV9MdV9NYV9NZV9KZV9WZV9TYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltBdWpvdXJkJ2h1aSDDoF0gTFQiLG5leHREYXk6IltEZW1haW4gw6BdIExUIixuZXh0V2VlazoiZGRkZCBbw6BdIExUIixsYXN0RGF5OiJbSGllciDDoF0gTFQiLGxhc3RXZWVrOiJkZGRkIFtkZXJuaWVyIMOgXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZGFucyAlcyIscGFzdDoiaWwgeSBhICVzIixzOiJxdWVscXVlcyBzZWNvbmRlcyIsbToidW5lIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6InVuZSBoZXVyZSIsaGg6IiVkIGhldXJlcyIsZDoidW4gam91ciIsZGQ6IiVkIGpvdXJzIixNOiJ1biBtb2lzIixNTToiJWQgbW9pcyIseToidW4gYW4iLHl5OiIlZCBhbnMifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0oZXJ8ZSkvLG9yZGluYWw6ZnVuY3Rpb24oZSl7cmV0dXJuIGUrKDE9PT1lPyJlciI6ImUiKX0sd2Vlazp7ZG93OjEsZG95OjR9fSk7cmV0dXJuIGV9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgiZnItY2giLCJmci1DSCIse2Nsb3NlVGV4dDoiRmVybWVyIixwcmV2VGV4dDoiJiN4M0M7UHLDqWMiLG5leHRUZXh0OiJTdWl2JiN4M0U7IixjdXJyZW50VGV4dDoiQ291cmFudCIsbW9udGhOYW1lczpbImphbnZpZXIiLCJmw6l2cmllciIsIm1hcnMiLCJhdnJpbCIsIm1haSIsImp1aW4iLCJqdWlsbGV0IiwiYW/Du3QiLCJzZXB0ZW1icmUiLCJvY3RvYnJlIiwibm92ZW1icmUiLCJkw6ljZW1icmUiXSxtb250aE5hbWVzU2hvcnQ6WyJqYW52LiIsImbDqXZyLiIsIm1hcnMiLCJhdnJpbCIsIm1haSIsImp1aW4iLCJqdWlsLiIsImFvw7t0Iiwic2VwdC4iLCJvY3QuIiwibm92LiIsImTDqWMuIl0sZGF5TmFtZXM6WyJkaW1hbmNoZSIsImx1bmRpIiwibWFyZGkiLCJtZXJjcmVkaSIsImpldWRpIiwidmVuZHJlZGkiLCJzYW1lZGkiXSxkYXlOYW1lc1Nob3J0OlsiZGltLiIsImx1bi4iLCJtYXIuIiwibWVyLiIsImpldS4iLCJ2ZW4uIiwic2FtLiJdLGRheU5hbWVzTWluOlsiRCIsIkwiLCJNIiwiTSIsIkoiLCJWIiwiUyJdLHdlZWtIZWFkZXI6IlNtIixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiZnItY2giLHtidXR0b25UZXh0Ont5ZWFyOiJBbm7DqWUiLG1vbnRoOiJNb2lzIix3ZWVrOiJTZW1haW5lIixkYXk6IkpvdXIiLGxpc3Q6Ik1vbiBwbGFubmluZyJ9LGFsbERheUh0bWw6IlRvdXRlIGxhPGJyLz5qb3VybsOpZSIsZXZlbnRMaW1pdFRleHQ6ImVuIHBsdXMiLG5vRXZlbnRzTWVzc2FnZToiQXVjdW4gw6l2w6luZW1lbnQgw6AgYWZmaWNoZXIifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/fr.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUscil7IWZ1bmN0aW9uKCl7dmFyIGU9ci5kZWZpbmVMb2NhbGUoImZyIix7bW9udGhzOiJqYW52aWVyX2bDqXZyaWVyX21hcnNfYXZyaWxfbWFpX2p1aW5fanVpbGxldF9hb8O7dF9zZXB0ZW1icmVfb2N0b2JyZV9ub3ZlbWJyZV9kw6ljZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ImphbnYuX2bDqXZyLl9tYXJzX2F2ci5fbWFpX2p1aW5fanVpbC5fYW/Du3Rfc2VwdC5fb2N0Ll9ub3YuX2TDqWMuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6ImRpbWFuY2hlX2x1bmRpX21hcmRpX21lcmNyZWRpX2pldWRpX3ZlbmRyZWRpX3NhbWVkaSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkaW0uX2x1bi5fbWFyLl9tZXIuX2pldS5fdmVuLl9zYW0uIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJEaV9MdV9NYV9NZV9KZV9WZV9TYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltBdWpvdXJkJ2h1aSDDoF0gTFQiLG5leHREYXk6IltEZW1haW4gw6BdIExUIixuZXh0V2VlazoiZGRkZCBbw6BdIExUIixsYXN0RGF5OiJbSGllciDDoF0gTFQiLGxhc3RXZWVrOiJkZGRkIFtkZXJuaWVyIMOgXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZGFucyAlcyIscGFzdDoiaWwgeSBhICVzIixzOiJxdWVscXVlcyBzZWNvbmRlcyIsbToidW5lIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6InVuZSBoZXVyZSIsaGg6IiVkIGhldXJlcyIsZDoidW4gam91ciIsZGQ6IiVkIGpvdXJzIixNOiJ1biBtb2lzIixNTToiJWQgbW9pcyIseToidW4gYW4iLHl5OiIlZCBhbnMifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0oZXJ8KS8sb3JkaW5hbDpmdW5jdGlvbihlKXtyZXR1cm4gZSsoMT09PWU/ImVyIjoiIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pO3JldHVybiBlfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoImZyIiwiZnIiLHtjbG9zZVRleHQ6IkZlcm1lciIscHJldlRleHQ6IlByw6ljw6lkZW50IixuZXh0VGV4dDoiU3VpdmFudCIsY3VycmVudFRleHQ6IkF1am91cmQnaHVpIixtb250aE5hbWVzOlsiamFudmllciIsImbDqXZyaWVyIiwibWFycyIsImF2cmlsIiwibWFpIiwianVpbiIsImp1aWxsZXQiLCJhb8O7dCIsInNlcHRlbWJyZSIsIm9jdG9icmUiLCJub3ZlbWJyZSIsImTDqWNlbWJyZSJdLG1vbnRoTmFtZXNTaG9ydDpbImphbnYuIiwiZsOpdnIuIiwibWFycyIsImF2ci4iLCJtYWkiLCJqdWluIiwianVpbC4iLCJhb8O7dCIsInNlcHQuIiwib2N0LiIsIm5vdi4iLCJkw6ljLiJdLGRheU5hbWVzOlsiZGltYW5jaGUiLCJsdW5kaSIsIm1hcmRpIiwibWVyY3JlZGkiLCJqZXVkaSIsInZlbmRyZWRpIiwic2FtZWRpIl0sZGF5TmFtZXNTaG9ydDpbImRpbS4iLCJsdW4uIiwibWFyLiIsIm1lci4iLCJqZXUuIiwidmVuLiIsInNhbS4iXSxkYXlOYW1lc01pbjpbIkQiLCJMIiwiTSIsIk0iLCJKIiwiViIsIlMiXSx3ZWVrSGVhZGVyOiJTZW0uIixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiZnIiLHtidXR0b25UZXh0Ont5ZWFyOiJBbm7DqWUiLG1vbnRoOiJNb2lzIix3ZWVrOiJTZW1haW5lIixkYXk6IkpvdXIiLGxpc3Q6Ik1vbiBwbGFubmluZyJ9LGFsbERheUh0bWw6IlRvdXRlIGxhPGJyLz5qb3VybsOpZSIsZXZlbnRMaW1pdFRleHQ6ImVuIHBsdXMiLG5vRXZlbnRzTWVzc2FnZToiQXVjdW4gw6l2w6luZW1lbnQgw6AgYWZmaWNoZXIifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/gl.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsbyl7IWZ1bmN0aW9uKCl7dmFyIGU9by5kZWZpbmVMb2NhbGUoImdsIix7bW9udGhzOiJ4YW5laXJvX2ZlYnJlaXJvX21hcnpvX2FicmlsX21haW9feHXDsW9feHVsbG9fYWdvc3RvX3NldGVtYnJvX291dHVicm9fbm92ZW1icm9fZGVjZW1icm8iLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Inhhbi5fZmViLl9tYXIuX2Fici5fbWFpLl94dcOxLl94dWwuX2Fnby5fc2V0Ll9vdXQuX25vdi5fZGVjLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJkb21pbmdvX2x1bnNfbWFydGVzX23DqXJjb3Jlc194b3Zlc192ZW5yZXNfc8OhYmFkbyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJkb20uX2x1bi5fbWFyLl9tw6lyLl94b3YuX3Zlbi5fc8OhYi4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ImRvX2x1X21hX23DqV94b192ZV9zw6EiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIixMTEw6IkQgW2RlXSBNTU1NIFtkZV0gWVlZWSBIOm1tIixMTExMOiJkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OmZ1bmN0aW9uKCl7cmV0dXJuIltob3hlICIrKDEhPT10aGlzLmhvdXJzKCk/IsOhcyI6IsOhIikrIl0gTFQifSxuZXh0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIlttYcOxw6EgIisoMSE9PXRoaXMuaG91cnMoKT8iw6FzIjoiw6EiKSsiXSBMVCJ9LG5leHRXZWVrOmZ1bmN0aW9uKCl7cmV0dXJuImRkZGQgWyIrKDEhPT10aGlzLmhvdXJzKCk/IsOhcyI6ImEiKSsiXSBMVCJ9LGxhc3REYXk6ZnVuY3Rpb24oKXtyZXR1cm4iW29udGUgIisoMSE9PXRoaXMuaG91cnMoKT8iw6EiOiJhIikrIl0gTFQifSxsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiJbb10gZGRkZCBbcGFzYWRvICIrKDEhPT10aGlzLmhvdXJzKCk/IsOhcyI6ImEiKSsiXSBMVCJ9LHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT1lLmluZGV4T2YoInVuIik/Im4iK2U6ImVuICIrZX0scGFzdDoiaGFpICVzIixzOiJ1bnMgc2VndW5kb3MiLG06InVuIG1pbnV0byIsbW06IiVkIG1pbnV0b3MiLGg6InVuaGEgaG9yYSIsaGg6IiVkIGhvcmFzIixkOiJ1biBkw61hIixkZDoiJWQgZMOtYXMiLE06InVuIG1lcyIsTU06IiVkIG1lc2VzIix5OiJ1biBhbm8iLHl5OiIlZCBhbm9zIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9wrovLG9yZGluYWw6IiVkwroiLHdlZWs6e2RvdzoxLGRveTo0fX0pO3JldHVybiBlfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoImdsIiwiZ2wiLHtjbG9zZVRleHQ6IlBlY2hhciIscHJldlRleHQ6IiYjeDNDO0FudCIsbmV4dFRleHQ6IlNlZyYjeDNFOyIsY3VycmVudFRleHQ6IkhveGUiLG1vbnRoTmFtZXM6WyJYYW5laXJvIiwiRmVicmVpcm8iLCJNYXJ6byIsIkFicmlsIiwiTWFpbyIsIlh1w7FvIiwiWHVsbG8iLCJBZ29zdG8iLCJTZXRlbWJybyIsIk91dHVicm8iLCJOb3ZlbWJybyIsIkRlY2VtYnJvIl0sbW9udGhOYW1lc1Nob3J0OlsiWGFuIiwiRmViIiwiTWFyIiwiQWJyIiwiTWFpIiwiWHXDsSIsIlh1bCIsIkFnbyIsIlNldCIsIk91dCIsIk5vdiIsIkRlYyJdLGRheU5hbWVzOlsiRG9taW5nbyIsIkx1bnMiLCJNYXJ0ZXMiLCJNw6lyY29yZXMiLCJYb3ZlcyIsIlZlbnJlcyIsIlPDoWJhZG8iXSxkYXlOYW1lc1Nob3J0OlsiRG9tIiwiTHVuIiwiTWFyIiwiTcOpciIsIlhvdiIsIlZlbiIsIlPDoWIiXSxkYXlOYW1lc01pbjpbIkRvIiwiTHUiLCJNYSIsIk3DqSIsIlhvIiwiVmUiLCJTw6EiXSx3ZWVrSGVhZGVyOiJTbSIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoImdsIix7YnV0dG9uVGV4dDp7bW9udGg6Ik1lcyIsd2VlazoiU2VtYW5hIixkYXk6IkTDrWEiLGxpc3Q6IkF4ZW5kYSJ9LGFsbERheUh0bWw6IlRvZG88YnIvPm8gZMOtYSIsZXZlbnRMaW1pdFRleHQ6Im3DoWlzIixub0V2ZW50c01lc3NhZ2U6Ik5vbiBoYWkgZXZlbnRvcyBwYXJhIGFtb3NhciJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/he.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKCl7dmFyIGU9dC5kZWZpbmVMb2NhbGUoImhlIix7bW9udGhzOiLXmdeg15XXkNeoX9ek15HXqNeV15DXqF/Xnteo16Vf15DXpNeo15nXnF/XnteQ15lf15nXldeg15lf15nXldec15lf15DXldeS15XXodeYX9eh16TXmNee15HXqF/XkNeV16fXmNeV15HXqF/XoNeV15HXnteR16hf15PXptee15HXqCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoi15nXoNeV17Nf16TXkdeo17Nf157XqNelX9eQ16TXqNezX9ee15DXmV/XmdeV16DXmV/XmdeV15zXmV/XkNeV15LXs1/Xodek15jXs1/XkNeV16fXs1/XoNeV15HXs1/Xk9em157XsyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi16jXkNep15XXn1/Xqdeg15lf16nXnNeZ16nXmV/XqNeR15nXoteZX9eX157Xmdep15lf16nXmdep15lf16nXkdeqIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IteQ17Nf15HXs1/XktezX9eT17Nf15TXs1/XldezX9ep17MiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IteQX9eRX9eSX9eTX9eUX9eVX9epIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIFvXkV1NTU1NIFlZWVkiLExMTDoiRCBb15FdTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIFvXkV1NTU1NIFlZWVkgSEg6bW0iLGw6IkQvTS9ZWVlZIixsbDoiRCBNTU0gWVlZWSIsbGxsOiJEIE1NTSBZWVlZIEhIOm1tIixsbGxsOiJkZGQsIEQgTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW9eU15nXldedINeR1r5dTFQiLG5leHREYXk6IlvXnteX16gg15HWvl1MVCIsbmV4dFdlZWs6ImRkZGQgW9eR16nXoteUXSBMVCIsbGFzdERheToiW9eQ16rXnteV15wg15HWvl1MVCIsbGFzdFdlZWs6IlvXkdeZ15XXnV0gZGRkZCBb15TXkNeX16jXldefINeR16nXoteUXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi15HXoteV15MgJXMiLHBhc3Q6Itec16TXoNeZICVzIixzOiLXnteh16TXqCDXqdeg15nXldeqIixtOiLXk9en15QiLG1tOiIlZCDXk9en15XXqiIsaDoi16nXoteUIixoaDpmdW5jdGlvbihlKXtyZXR1cm4gMj09PWU/Itep16LXqteZ15nXnSI6ZSsiINep16LXldeqIn0sZDoi15nXldedIixkZDpmdW5jdGlvbihlKXtyZXR1cm4gMj09PWU/IteZ15XXnteZ15nXnSI6ZSsiINeZ157XmdedIn0sTToi15fXldeT16kiLE1NOmZ1bmN0aW9uKGUpe3JldHVybiAyPT09ZT8i15fXldeT16nXmdeZ150iOmUrIiDXl9eV15PXqdeZ150ifSx5OiLXqdeg15QiLHl5OmZ1bmN0aW9uKGUpe3JldHVybiAyPT09ZT8i16nXoNeq15nXmdedIjplJTEwPT09MCYmMTAhPT1lP2UrIiDXqdeg15QiOmUrIiDXqdeg15nXnSJ9fSxtZXJpZGllbVBhcnNlOi/XkNeX15Qi16Z815zXpNeg15Qi16Z815DXl9eo15kg15TXpteU16jXmdeZ151815zXpNeg15kg15TXpteU16jXmdeZ151815zXpNeg15XXqiDXkdeV16fXqHzXkdeR15XXp9eofNeR16LXqNeRL2ksaXNQTTpmdW5jdGlvbihlKXtyZXR1cm4vXijXkNeX15Qi16Z815DXl9eo15kg15TXpteU16jXmdeZ151815HXoteo15EpJC8udGVzdChlKX0sbWVyaWRpZW06ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPDU/Itec16TXoNeV16og15HXlden16giOmU8MTA/IteR15HXlden16giOmU8MTI/bj8n15zXpNeg15Qi16YnOiLXnNek16DXmSDXlNem15TXqNeZ15nXnSI6ZTwxOD9uPyfXkNeX15Qi16YnOiLXkNeX16jXmSDXlNem15TXqNeZ15nXnSI6IteR16LXqNeRIn19KTtyZXR1cm4gZX0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJoZSIsImhlIix7Y2xvc2VUZXh0OiLXodeS15XXqCIscHJldlRleHQ6IiYjeDNDO9eU16fXldeT150iLG5leHRUZXh0OiLXlNeR15AmI3gzRTsiLGN1cnJlbnRUZXh0OiLXlNeZ15XXnSIsbW9udGhOYW1lczpbIteZ16DXldeQ16giLCLXpNeR16jXldeQ16giLCLXnteo16UiLCLXkNek16jXmdecIiwi157XkNeZIiwi15nXldeg15kiLCLXmdeV15zXmSIsIteQ15XXkteV16HXmCIsIteh16TXmNee15HXqCIsIteQ15XXp9eY15XXkdeoIiwi16DXldeR157XkdeoIiwi15PXptee15HXqCJdLG1vbnRoTmFtZXNTaG9ydDpbIteZ16DXlSIsItek15HXqCIsItee16jXpSIsIteQ16TXqCIsItee15DXmSIsIteZ15XXoNeZIiwi15nXldec15kiLCLXkNeV15IiLCLXodek15giLCLXkNeV16ciLCLXoNeV15EiLCLXk9em154iXSxkYXlOYW1lczpbIteo15DXqdeV158iLCLXqdeg15kiLCLXqdec15nXqdeZIiwi16jXkdeZ16LXmSIsIteX157Xmdep15kiLCLXqdeZ16nXmSIsItep15HXqiJdLGRheU5hbWVzU2hvcnQ6WyLXkCciLCLXkSciLCLXkiciLCLXkyciLCLXlCciLCLXlSciLCLXqdeR16oiXSxkYXlOYW1lc01pbjpbIteQJyIsIteRJyIsIteSJyIsIteTJyIsIteUJyIsIteVJyIsItep15HXqiJdLHdlZWtIZWFkZXI6IldrIixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MCxpc1JUTDohMCxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiaGUiLHtidXR0b25UZXh0Onttb250aDoi15fXldeT16kiLHdlZWs6Itep15HXldeiIixkYXk6IteZ15XXnSIsbGlzdDoi16HXk9eoINeZ15XXnSJ9LGFsbERheVRleHQ6Iteb15wg15TXmdeV150iLGV2ZW50TGltaXRUZXh0OiLXkNeX16giLG5vRXZlbnRzTWVzc2FnZToi15DXmdefINeQ15nXqNeV16LXmdedINec15TXpteS15QiLHdlZWtOdW1iZXJUaXRsZToi16nXkdeV16IifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/hi.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKCl7dmFyIGU9ezE6IuClpyIsMjoi4KWoIiwzOiLgpakiLDQ6IuClqiIsNToi4KWrIiw2OiLgpawiLDc6IuClrSIsODoi4KWuIiw5OiLgpa8iLDA6IuClpiJ9LG49eyLgpaciOiIxIiwi4KWoIjoiMiIsIuClqSI6IjMiLCLgpaoiOiI0Iiwi4KWrIjoiNSIsIuClrCI6IjYiLCLgpa0iOiI3Iiwi4KWuIjoiOCIsIuClryI6IjkiLCLgpaYiOiIwIn0scj10LmRlZmluZUxvY2FsZSgiaGkiLHttb250aHM6IuCknOCkqOCkteCksOClgF/gpKvgpLzgpLDgpLXgpLDgpYBf4KSu4KS+4KSw4KWN4KSaX+CkheCkquCljeCksOCliOCksl/gpK7gpIhf4KSc4KWC4KSoX+CknOClgeCksuCkvuCkiF/gpIXgpJfgpLjgpY3gpKRf4KS44KS/4KSk4KSu4KWN4KSs4KSwX+CkheCkleCljeCkn+ClguCkrOCksF/gpKjgpLXgpK7gpY3gpKzgpLBf4KSm4KS/4KS44KSu4KWN4KSs4KSwIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiLgpJzgpKguX+Ckq+CkvOCksC5f4KSu4KS+4KSw4KWN4KSaX+CkheCkquCljeCksOCliC5f4KSu4KSIX+CknOClguCkqF/gpJzgpYHgpLIuX+CkheCkly5f4KS44KS/4KSkLl/gpIXgpJXgpY3gpJ/gpYIuX+CkqOCktS5f4KSm4KS/4KS4LiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiLgpLDgpLXgpL/gpLXgpL7gpLBf4KS44KWL4KSu4KS14KS+4KSwX+CkruCkguCkl+CksuCkteCkvuCksF/gpKzgpYHgpKfgpLXgpL7gpLBf4KSX4KWB4KSw4KWC4KS14KS+4KSwX+CktuClgeCkleCljeCksOCkteCkvuCksF/gpLbgpKjgpL/gpLXgpL7gpLAiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoi4KSw4KS14KS/X+CkuOCli+Ckrl/gpK7gpILgpJfgpLJf4KSs4KWB4KSnX+Ckl+ClgeCksOClgl/gpLbgpYHgpJXgpY3gpLBf4KS24KSo4KS/Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLgpLBf4KS44KWLX+CkruCkgl/gpKzgpYFf4KSX4KWBX+CktuClgV/gpLYiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJBIGg6bW0g4KSs4KSc4KWHIixMVFM6IkEgaDptbTpzcyDgpKzgpJzgpYciLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSwgQSBoOm1tIOCkrOCknOClhyIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVksIEEgaDptbSDgpKzgpJzgpYcifSxjYWxlbmRhcjp7c2FtZURheToiW+CkhuCknF0gTFQiLG5leHREYXk6IlvgpJXgpLJdIExUIixuZXh0V2VlazoiZGRkZCwgTFQiLGxhc3REYXk6IlvgpJXgpLJdIExUIixsYXN0V2VlazoiW+CkquCkv+Ckm+CksuClh10gZGRkZCwgTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIOCkruClh+CkgiIscGFzdDoiJXMg4KSq4KS54KSy4KWHIixzOiLgpJXgpYHgpJsg4KS54KWAIOCkleCljeCkt+CkoyIsbToi4KSP4KSVIOCkruCkv+CkqOCknyIsbW06IiVkIOCkruCkv+CkqOCknyIsaDoi4KSP4KSVIOCkmOCkguCkn+CkviIsaGg6IiVkIOCkmOCkguCkn+ClhyIsZDoi4KSP4KSVIOCkpuCkv+CkqCIsZGQ6IiVkIOCkpuCkv+CkqCIsTToi4KSP4KSVIOCkruCkueClgOCkqOClhyIsTU06IiVkIOCkruCkueClgOCkqOClhyIseToi4KSP4KSVIOCkteCksOCljeCktyIseXk6IiVkIOCkteCksOCljeCktyJ9LHByZXBhcnNlOmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL1vgpafgpajgpangpargpavgpazgpa3gpa7gpa/gpaZdL2csZnVuY3Rpb24oZSl7cmV0dXJuIG5bZV19KX0scG9zdGZvcm1hdDpmdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKC9cZC9nLGZ1bmN0aW9uKHQpe3JldHVybiBlW3RdfSl9LG1lcmlkaWVtUGFyc2U6L+CksOCkvuCkpHzgpLjgpYHgpKzgpLl84KSm4KWL4KSq4KS54KSwfOCktuCkvuCkri8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIDEyPT09ZSYmKGU9MCksIuCksOCkvuCkpCI9PT10P2U8ND9lOmUrMTI6IuCkuOClgeCkrOCkuSI9PT10P2U6IuCkpuCli+CkquCkueCksCI9PT10P2U+PTEwP2U6ZSsxMjoi4KS24KS+4KSuIj09PXQ/ZSsxMjp2b2lkIDB9LG1lcmlkaWVtOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZTw0PyLgpLDgpL7gpKQiOmU8MTA/IuCkuOClgeCkrOCkuSI6ZTwxNz8i4KSm4KWL4KSq4KS54KSwIjplPDIwPyLgpLbgpL7gpK4iOiLgpLDgpL7gpKQifSx3ZWVrOntkb3c6MCxkb3k6Nn19KTtyZXR1cm4gcn0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJoaSIsImhpIix7Y2xvc2VUZXh0OiLgpKzgpILgpKYiLHByZXZUZXh0OiLgpKrgpL/gpJvgpLLgpL4iLG5leHRUZXh0OiLgpIXgpJfgpLLgpL4iLGN1cnJlbnRUZXh0OiLgpIbgpJwiLG1vbnRoTmFtZXM6WyLgpJzgpKjgpLXgpLDgpYAgIiwi4KSr4KSw4KS14KSw4KWAIiwi4KSu4KS+4KSw4KWN4KSaIiwi4KSF4KSq4KWN4KSw4KWH4KSyIiwi4KSu4KSIIiwi4KSc4KWC4KSoIiwi4KSc4KWC4KSy4KS+4KSIIiwi4KSF4KSX4KS44KWN4KSkICIsIuCkuOCkv+CkpOCkruCljeCkrOCksCIsIuCkheCkleCljeCkn+ClguCkrOCksCIsIuCkqOCkteCkruCljeCkrOCksCIsIuCkpuCkv+CkuOCkruCljeCkrOCksCJdLG1vbnRoTmFtZXNTaG9ydDpbIuCknOCkqCIsIuCkq+CksCIsIuCkruCkvuCksOCljeCkmiIsIuCkheCkquCljeCksOClh+CksiIsIuCkruCkiCIsIuCknOClguCkqCIsIuCknOClguCksuCkvuCkiCIsIuCkheCklyIsIuCkuOCkv+CkpCIsIuCkheCkleCljeCknyIsIuCkqOCktSIsIuCkpuCkvyJdLGRheU5hbWVzOlsi4KSw4KS14KS/4KS14KS+4KSwIiwi4KS44KWL4KSu4KS14KS+4KSwIiwi4KSu4KSC4KSX4KSy4KS14KS+4KSwIiwi4KSs4KWB4KSn4KS14KS+4KSwIiwi4KSX4KWB4KSw4KWB4KS14KS+4KSwIiwi4KS24KWB4KSV4KWN4KSw4KS14KS+4KSwIiwi4KS24KSo4KS/4KS14KS+4KSwIl0sZGF5TmFtZXNTaG9ydDpbIuCksOCkteCkvyIsIuCkuOCli+CkriIsIuCkruCkguCkl+CksiIsIuCkrOClgeCkpyIsIuCkl+ClgeCksOClgSIsIuCktuClgeCkleCljeCksCIsIuCktuCkqOCkvyJdLGRheU5hbWVzTWluOlsi4KSw4KS14KS/Iiwi4KS44KWL4KSuIiwi4KSu4KSC4KSX4KSyIiwi4KSs4KWB4KSnIiwi4KSX4KWB4KSw4KWBIiwi4KS24KWB4KSV4KWN4KSwIiwi4KS24KSo4KS/Il0sd2Vla0hlYWRlcjoi4KS54KSr4KWN4KSk4KS+IixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiaGkiLHtidXR0b25UZXh0Onttb250aDoi4KSu4KS54KWA4KSo4KS+Iix3ZWVrOiLgpLjgpKrgpY3gpKTgpL7gpLkiLGRheToi4KSm4KS/4KSoIixsaXN0OiLgpJXgpL7gpLDgpY3gpK/gpLjgpYLgpJrgpYAifSxhbGxEYXlUZXh0OiLgpLjgpK3gpYAg4KSm4KS/4KSoIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihlKXtyZXR1cm4iK+CkheCkp+Ckv+CklSAiK2V9LG5vRXZlbnRzTWVzc2FnZToi4KSV4KWL4KSIIOCkmOCkn+CkqOCkvuCkk+CkgiDgpJXgpYsg4KSq4KWN4KSw4KSm4KSw4KWN4KS24KS/4KSkIOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIn0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/hr.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsYSl7IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLGEsdCl7dmFyIG49ZSsiICI7c3dpdGNoKHQpe2Nhc2UibSI6cmV0dXJuIGE/ImplZG5hIG1pbnV0YSI6ImplZG5lIG1pbnV0ZSI7Y2FzZSJtbSI6cmV0dXJuIG4rPTE9PT1lPyJtaW51dGEiOjI9PT1lfHwzPT09ZXx8ND09PWU/Im1pbnV0ZSI6Im1pbnV0YSI7Y2FzZSJoIjpyZXR1cm4gYT8iamVkYW4gc2F0IjoiamVkbm9nIHNhdGEiO2Nhc2UiaGgiOnJldHVybiBuKz0xPT09ZT8ic2F0IjoyPT09ZXx8Mz09PWV8fDQ9PT1lPyJzYXRhIjoic2F0aSI7Y2FzZSJkZCI6cmV0dXJuIG4rPTE9PT1lPyJkYW4iOiJkYW5hIjtjYXNlIk1NIjpyZXR1cm4gbis9MT09PWU/Im1qZXNlYyI6Mj09PWV8fDM9PT1lfHw0PT09ZT8ibWplc2VjYSI6Im1qZXNlY2kiO2Nhc2UieXkiOnJldHVybiBuKz0xPT09ZT8iZ29kaW5hIjoyPT09ZXx8Mz09PWV8fDQ9PT1lPyJnb2RpbmUiOiJnb2RpbmEifX12YXIgdD1hLmRlZmluZUxvY2FsZSgiaHIiLHttb250aHM6e2Zvcm1hdDoic2lqZcSNbmphX3ZlbGphxI1lX2/FvnVqa2FfdHJhdm5qYV9zdmlibmphX2xpcG5qYV9zcnBuamFfa29sb3ZvemFfcnVqbmFfbGlzdG9wYWRhX3N0dWRlbm9nYV9wcm9zaW5jYSIuc3BsaXQoIl8iKSxzdGFuZGFsb25lOiJzaWplxI1hbmpfdmVsamHEjWFfb8W+dWpha190cmF2YW5qX3N2aWJhbmpfbGlwYW5qX3NycGFual9rb2xvdm96X3J1amFuX2xpc3RvcGFkX3N0dWRlbmlfcHJvc2luYWMiLnNwbGl0KCJfIil9LG1vbnRoc1Nob3J0OiJzaWouX3ZlbGouX2/FvnUuX3RyYS5fc3ZpLl9saXAuX3NycC5fa29sLl9ydWouX2xpcy5fc3R1Ll9wcm8uIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6Im5lZGplbGphX3BvbmVkamVsamFrX3V0b3Jha19zcmlqZWRhX8SNZXR2cnRha19wZXRha19zdWJvdGEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoibmVkLl9wb24uX3V0by5fc3JpLl/EjWV0Ll9wZXQuX3N1Yi4iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Im5lX3BvX3V0X3NyX8SNZV9wZV9zdSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIEg6bW0iLExMTEw6ImRkZGQsIEQuIE1NTU0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltkYW5hcyB1XSBMVCIsbmV4dERheToiW3N1dHJhIHVdIExUIixuZXh0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIlt1XSBbbmVkamVsanVdIFt1XSBMVCI7Y2FzZSAzOnJldHVybiJbdV0gW3NyaWplZHVdIFt1XSBMVCI7Y2FzZSA2OnJldHVybiJbdV0gW3N1Ym90dV0gW3VdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIlt1XSBkZGRkIFt1XSBMVCJ9fSxsYXN0RGF5OiJbanXEjWVyIHVdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6Y2FzZSAzOnJldHVybiJbcHJvxaFsdV0gZGRkZCBbdV0gTFQiO2Nhc2UgNjpyZXR1cm4iW3Byb8WhbGVdIFtzdWJvdGVdIFt1XSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA1OnJldHVybiJbcHJvxaFsaV0gZGRkZCBbdV0gTFQifX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiemEgJXMiLHBhc3Q6InByaWplICVzIixzOiJwYXIgc2VrdW5kaSIsbTplLG1tOmUsaDplLGhoOmUsZDoiZGFuIixkZDplLE06Im1qZXNlYyIsTU06ZSx5OiJnb2RpbnUiLHl5OmV9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo3fX0pO3JldHVybiB0fSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoImhyIiwiaHIiLHtjbG9zZVRleHQ6IlphdHZvcmkiLHByZXZUZXh0OiImI3gzQzsiLG5leHRUZXh0OiImI3gzRTsiLGN1cnJlbnRUZXh0OiJEYW5hcyIsbW9udGhOYW1lczpbIlNpamXEjWFuaiIsIlZlbGphxI1hIiwiT8W+dWphayIsIlRyYXZhbmoiLCJTdmliYW5qIiwiTGlwYW5qIiwiU3JwYW5qIiwiS29sb3ZveiIsIlJ1amFuIiwiTGlzdG9wYWQiLCJTdHVkZW5pIiwiUHJvc2luYWMiXSxtb250aE5hbWVzU2hvcnQ6WyJTaWoiLCJWZWxqIiwiT8W+dSIsIlRyYSIsIlN2aSIsIkxpcCIsIlNycCIsIktvbCIsIlJ1aiIsIkxpcyIsIlN0dSIsIlBybyJdLGRheU5hbWVzOlsiTmVkamVsamEiLCJQb25lZGplbGphayIsIlV0b3JhayIsIlNyaWplZGEiLCLEjGV0dnJ0YWsiLCJQZXRhayIsIlN1Ym90YSJdLGRheU5hbWVzU2hvcnQ6WyJOZWQiLCJQb24iLCJVdG8iLCJTcmkiLCLEjGV0IiwiUGV0IiwiU3ViIl0sZGF5TmFtZXNNaW46WyJOZSIsIlBvIiwiVXQiLCJTciIsIsSMZSIsIlBlIiwiU3UiXSx3ZWVrSGVhZGVyOiJUamUiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5LiIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiaHIiLHtidXR0b25UZXh0OntwcmV2OiJQcmlqYcWhbmppIixuZXh0OiJTbGplZGXEh2kiLG1vbnRoOiJNamVzZWMiLHdlZWs6IlRqZWRhbiIsZGF5OiJEYW4iLGxpc3Q6IlJhc3BvcmVkIn0sYWxsRGF5VGV4dDoiQ2lqZWxpIGRhbiIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIisgam/FoSAiK2V9LG5vRXZlbnRzTWVzc2FnZToiTmVtYSBkb2dhxJFhamEgemEgcHJpa2F6In0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/hu.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUscil7IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHIsdCxhKXt2YXIgbj1lO3N3aXRjaCh0KXtjYXNlInMiOnJldHVybiBhfHxyPyJuw6low6FueSBtw6Fzb2RwZXJjIjoibsOpaMOhbnkgbcOhc29kcGVyY2UiO2Nhc2UibSI6cmV0dXJuImVneSIrKGF8fHI/IiBwZXJjIjoiIHBlcmNlIik7Y2FzZSJtbSI6cmV0dXJuIG4rKGF8fHI/IiBwZXJjIjoiIHBlcmNlIik7Y2FzZSJoIjpyZXR1cm4iZWd5IisoYXx8cj8iIMOzcmEiOiIgw7Nyw6FqYSIpO2Nhc2UiaGgiOnJldHVybiBuKyhhfHxyPyIgw7NyYSI6IiDDs3LDoWphIik7Y2FzZSJkIjpyZXR1cm4iZWd5IisoYXx8cj8iIG5hcCI6IiBuYXBqYSIpO2Nhc2UiZGQiOnJldHVybiBuKyhhfHxyPyIgbmFwIjoiIG5hcGphIik7Y2FzZSJNIjpyZXR1cm4iZWd5IisoYXx8cj8iIGjDs25hcCI6IiBow7NuYXBqYSIpO2Nhc2UiTU0iOnJldHVybiBuKyhhfHxyPyIgaMOzbmFwIjoiIGjDs25hcGphIik7Y2FzZSJ5IjpyZXR1cm4iZWd5IisoYXx8cj8iIMOpdiI6IiDDqXZlIik7Y2FzZSJ5eSI6cmV0dXJuIG4rKGF8fHI/IiDDqXYiOiIgw6l2ZSIpfXJldHVybiIifWZ1bmN0aW9uIHQoZSl7cmV0dXJuKGU/IiI6Ilttw7psdF0gIikrIlsiK2FbdGhpcy5kYXkoKV0rIl0gTFRbLWtvcl0ifXZhciBhPSJ2YXPDoXJuYXAgaMOpdGbFkW4ga2VkZGVuIHN6ZXJkw6FuIGNzw7x0w7ZydMO2a8O2biBww6ludGVrZW4gc3pvbWJhdG9uIi5zcGxpdCgiICIpLG49ci5kZWZpbmVMb2NhbGUoImh1Iix7bW9udGhzOiJqYW51w6FyX2ZlYnJ1w6FyX23DoXJjaXVzX8OhcHJpbGlzX23DoWp1c19qw7puaXVzX2rDumxpdXNfYXVndXN6dHVzX3N6ZXB0ZW1iZXJfb2t0w7NiZXJfbm92ZW1iZXJfZGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imphbl9mZWJfbcOhcmNfw6Fwcl9tw6FqX2rDum5fasO6bF9hdWdfc3plcHRfb2t0X25vdl9kZWMiLnNwbGl0KCJfIiksd2Vla2RheXM6InZhc8Ohcm5hcF9ow6l0ZsWRX2tlZGRfc3plcmRhX2Nzw7x0w7ZydMO2a19ww6ludGVrX3N6b21iYXQiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoidmFzX2jDqXRfa2VkZF9zemVfY3PDvHRfcMOpbl9zem8iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46InZfaF9rX3N6ZV9jc19wX3N6byIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiWVlZWS5NTS5ERC4iLExMOiJZWVlZLiBNTU1NIEQuIixMTEw6IllZWVkuIE1NTU0gRC4gSDptbSIsTExMTDoiWVlZWS4gTU1NTSBELiwgZGRkZCBIOm1tIn0sbWVyaWRpZW1QYXJzZTovZGV8ZHUvaSxpc1BNOmZ1bmN0aW9uKGUpe3JldHVybiJ1Ij09PWUuY2hhckF0KDEpLnRvTG93ZXJDYXNlKCl9LG1lcmlkaWVtOmZ1bmN0aW9uKGUscix0KXtyZXR1cm4gZTwxMj90PT09ITA/ImRlIjoiREUiOnQ9PT0hMD8iZHUiOiJEVSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbbWFdIExUWy1rb3JdIixuZXh0RGF5OiJbaG9sbmFwXSBMVFsta29yXSIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4gdC5jYWxsKHRoaXMsITApfSxsYXN0RGF5OiJbdGVnbmFwXSBMVFsta29yXSIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtyZXR1cm4gdC5jYWxsKHRoaXMsITEpfSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyBtw7psdmEiLHBhc3Q6IiVzIixzOmUsbTplLG1tOmUsaDplLGhoOmUsZDplLGRkOmUsTTplLE1NOmUseTplLHl5OmV9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pO3JldHVybiBufSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoImh1IiwiaHUiLHtjbG9zZVRleHQ6ImJlesOhciIscHJldlRleHQ6InZpc3N6YSIsbmV4dFRleHQ6ImVsxZFyZSIsY3VycmVudFRleHQ6Im1hIixtb250aE5hbWVzOlsiSmFudcOhciIsIkZlYnJ1w6FyIiwiTcOhcmNpdXMiLCLDgXByaWxpcyIsIk3DoWp1cyIsIkrDum5pdXMiLCJKw7psaXVzIiwiQXVndXN6dHVzIiwiU3plcHRlbWJlciIsIk9rdMOzYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk3DoXIiLCLDgXByIiwiTcOhaiIsIkrDum4iLCJKw7psIiwiQXVnIiwiU3plcCIsIk9rdCIsIk5vdiIsIkRlYyJdLGRheU5hbWVzOlsiVmFzw6FybmFwIiwiSMOpdGbFkSIsIktlZGQiLCJTemVyZGEiLCJDc8O8dMO2cnTDtmsiLCJQw6ludGVrIiwiU3pvbWJhdCJdLGRheU5hbWVzU2hvcnQ6WyJWYXMiLCJIw6l0IiwiS2VkIiwiU3plIiwiQ3PDvCIsIlDDqW4iLCJTem8iXSxkYXlOYW1lc01pbjpbIlYiLCJIIiwiSyIsIlN6ZSIsIkNzIiwiUCIsIlN6byJdLHdlZWtIZWFkZXI6IkjDqXQiLGRhdGVGb3JtYXQ6Inl5Lm1tLmRkLiIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITAseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiaHUiLHtidXR0b25UZXh0Onttb250aDoiSMOzbmFwIix3ZWVrOiJIw6l0IixkYXk6Ik5hcCIsbGlzdDoiTmFwbMOzIn0sYWxsRGF5VGV4dDoiRWfDqXN6IG5hcCIsZXZlbnRMaW1pdFRleHQ6InRvdsOhYmJpIixub0V2ZW50c01lc3NhZ2U6Ik5pbmNzIG1lZ2plbGVuw610aGV0xZEgZXNlbcOpbnllayJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/id.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsYSl7IWZ1bmN0aW9uKCl7dmFyIGU9YS5kZWZpbmVMb2NhbGUoImlkIix7bW9udGhzOiJKYW51YXJpX0ZlYnJ1YXJpX01hcmV0X0FwcmlsX01laV9KdW5pX0p1bGlfQWd1c3R1c19TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXNlbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0ZlYl9NYXJfQXByX01laV9KdW5fSnVsX0Fnc19TZXBfT2t0X05vdl9EZXMiLnNwbGl0KCJfIiksd2Vla2RheXM6Ik1pbmdndV9TZW5pbl9TZWxhc2FfUmFidV9LYW1pc19KdW1hdF9TYWJ0dSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJNaW5fU2VuX1NlbF9SYWJfS2FtX0p1bV9TYWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46Ik1nX1NuX1NsX1JiX0ttX0ptX1NiIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEgubW0iLExUUzoiSEgubW0uc3MiLEw6IkREL01NL1lZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBbcHVrdWxdIEhILm1tIn0sbWVyaWRpZW1QYXJzZTovcGFnaXxzaWFuZ3xzb3JlfG1hbGFtLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oZSxhKXtyZXR1cm4gMTI9PT1lJiYoZT0wKSwicGFnaSI9PT1hP2U6InNpYW5nIj09PWE/ZT49MTE/ZTplKzEyOiJzb3JlIj09PWF8fCJtYWxhbSI9PT1hP2UrMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihlLGEsaSl7cmV0dXJuIGU8MTE/InBhZ2kiOmU8MTU/InNpYW5nIjplPDE5PyJzb3JlIjoibWFsYW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0hhcmkgaW5pIHB1a3VsXSBMVCIsbmV4dERheToiW0Jlc29rIHB1a3VsXSBMVCIsbmV4dFdlZWs6ImRkZGQgW3B1a3VsXSBMVCIsbGFzdERheToiW0tlbWFyaW4gcHVrdWxdIExUIixsYXN0V2VlazoiZGRkZCBbbGFsdSBwdWt1bF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6ImRhbGFtICVzIixwYXN0OiIlcyB5YW5nIGxhbHUiLHM6ImJlYmVyYXBhIGRldGlrIixtOiJzZW1lbml0IixtbToiJWQgbWVuaXQiLGg6InNlamFtIixoaDoiJWQgamFtIixkOiJzZWhhcmkiLGRkOiIlZCBoYXJpIixNOiJzZWJ1bGFuIixNTToiJWQgYnVsYW4iLHk6InNldGFodW4iLHl5OiIlZCB0YWh1biJ9LHdlZWs6e2RvdzoxLGRveTo3fX0pO3JldHVybiBlfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoImlkIiwiaWQiLHtjbG9zZVRleHQ6IlR1dHVwIixwcmV2VGV4dDoiJiN4M0M7bXVuZHVyIixuZXh0VGV4dDoibWFqdSYjeDNFOyIsY3VycmVudFRleHQ6ImhhcmkgaW5pIixtb250aE5hbWVzOlsiSmFudWFyaSIsIkZlYnJ1YXJpIiwiTWFyZXQiLCJBcHJpbCIsIk1laSIsIkp1bmkiLCJKdWxpIiwiQWd1c3R1cyIsIlNlcHRlbWJlciIsIk9rdG9iZXIiLCJOb3BlbWJlciIsIkRlc2VtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWVpIiwiSnVuIiwiSnVsIiwiQWd1cyIsIlNlcCIsIk9rdCIsIk5vcCIsIkRlcyJdLGRheU5hbWVzOlsiTWluZ2d1IiwiU2VuaW4iLCJTZWxhc2EiLCJSYWJ1IiwiS2FtaXMiLCJKdW1hdCIsIlNhYnR1Il0sZGF5TmFtZXNTaG9ydDpbIk1pbiIsIlNlbiIsIlNlbCIsIlJhYiIsImthbSIsIkp1bSIsIlNhYiJdLGRheU5hbWVzTWluOlsiTWciLCJTbiIsIlNsIiwiUmIiLCJLbSIsImptIiwiU2IiXSx3ZWVrSGVhZGVyOiJNZyIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjAsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoImlkIix7YnV0dG9uVGV4dDp7bW9udGg6IkJ1bGFuIix3ZWVrOiJNaW5nZ3UiLGRheToiSGFyaSIsbGlzdDoiQWdlbmRhIn0sYWxsRGF5SHRtbDoiU2VoYXJpPGJyLz5wZW51aCIsZXZlbnRMaW1pdFRleHQ6ImxlYmloIixub0V2ZW50c01lc3NhZ2U6IlRpZGFrIGFkYSBhY2FyYSB1bnR1ayBkaXRhbXBpbGthbiJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/is.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUscil7IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4gZSUxMDA9PT0xMXx8ZSUxMCE9PTF9ZnVuY3Rpb24gYShyLGEsdSxuKXt2YXIgdD1yKyIgIjtzd2l0Y2godSl7Y2FzZSJzIjpyZXR1cm4gYXx8bj8ibm9ra3JhciBzZWvDum5kdXIiOiJub2trcnVtIHNla8O6bmR1bSI7Y2FzZSJtIjpyZXR1cm4gYT8ibcOtbsO6dGEiOiJtw61uw7p0dSI7Y2FzZSJtbSI6cmV0dXJuIGUocik/dCsoYXx8bj8ibcOtbsO6dHVyIjoibcOtbsO6dHVtIik6YT90KyJtw61uw7p0YSI6dCsibcOtbsO6dHUiO2Nhc2UiaGgiOnJldHVybiBlKHIpP3QrKGF8fG4/ImtsdWtrdXN0dW5kaXIiOiJrbHVra3VzdHVuZHVtIik6dCsia2x1a2t1c3R1bmQiO2Nhc2UiZCI6cmV0dXJuIGE/ImRhZ3VyIjpuPyJkYWciOiJkZWdpIjtjYXNlImRkIjpyZXR1cm4gZShyKT9hP3QrImRhZ2FyIjp0KyhuPyJkYWdhIjoiZMO2Z3VtIik6YT90KyJkYWd1ciI6dCsobj8iZGFnIjoiZGVnaSIpO2Nhc2UiTSI6cmV0dXJuIGE/Im3DoW51w7B1ciI6bj8ibcOhbnXDsCI6Im3DoW51w7BpIjtjYXNlIk1NIjpyZXR1cm4gZShyKT9hP3QrIm3DoW51w7BpciI6dCsobj8ibcOhbnXDsGkiOiJtw6FudcOwdW0iKTphP3QrIm3DoW51w7B1ciI6dCsobj8ibcOhbnXDsCI6Im3DoW51w7BpIik7Y2FzZSJ5IjpyZXR1cm4gYXx8bj8iw6FyIjoiw6FyaSI7Y2FzZSJ5eSI6cmV0dXJuIGUocik/dCsoYXx8bj8iw6FyIjoiw6FydW0iKTp0KyhhfHxuPyLDoXIiOiLDoXJpIil9fXZhciB1PXIuZGVmaW5lTG9jYWxlKCJpcyIse21vbnRoczoiamFuw7phcl9mZWJyw7phcl9tYXJzX2FwcsOtbF9tYcOtX2rDum7DrV9qw7psw61fw6Fnw7pzdF9zZXB0ZW1iZXJfb2t0w7NiZXJfbsOzdmVtYmVyX2Rlc2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW5fZmViX21hcl9hcHJfbWHDrV9qw7puX2rDumxfw6Fnw7pfc2VwX29rdF9uw7N2X2RlcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoic3VubnVkYWd1cl9tw6FudWRhZ3VyX8O+cmnDsGp1ZGFndXJfbWnDsHZpa3VkYWd1cl9maW1tdHVkYWd1cl9mw7ZzdHVkYWd1cl9sYXVnYXJkYWd1ciIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJzdW5fbcOhbl/DvnJpX21pw7BfZmltX2bDtnNfbGF1Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTdV9Nw6Ffw55yX01pX0ZpX0bDtl9MYSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgW2tsLl0gSDptbSIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZIFtrbC5dIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW8OtIGRhZyBrbC5dIExUIixuZXh0RGF5OiJbw6EgbW9yZ3VuIGtsLl0gTFQiLG5leHRXZWVrOiJkZGRkIFtrbC5dIExUIixsYXN0RGF5OiJbw60gZ8OmciBrbC5dIExUIixsYXN0V2VlazoiW3PDrcOwYXN0YV0gZGRkZCBba2wuXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZWZ0aXIgJXMiLHBhc3Q6ImZ5cmlyICVzIHPDrcOwYW4iLHM6YSxtOmEsbW06YSxoOiJrbHVra3VzdHVuZCIsaGg6YSxkOmEsZGQ6YSxNOmEsTU06YSx5OmEseXk6YX0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSk7cmV0dXJuIHV9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgiaXMiLCJpcyIse2Nsb3NlVGV4dDoiTG9rYSIscHJldlRleHQ6IiYjeDNDOyBGeXJyaSIsbmV4dFRleHQ6Ik7DpnN0aSAmI3gzRTsiLGN1cnJlbnRUZXh0OiLDjSBkYWciLG1vbnRoTmFtZXM6WyJKYW7DumFyIiwiRmVicsO6YXIiLCJNYXJzIiwiQXByw61sIiwiTWHDrSIsIkrDum7DrSIsIkrDumzDrSIsIsOBZ8O6c3QiLCJTZXB0ZW1iZXIiLCJPa3TDs2JlciIsIk7Ds3ZlbWJlciIsIkRlc2VtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWHDrSIsIkrDum4iLCJKw7psIiwiw4Fnw7oiLCJTZXAiLCJPa3QiLCJOw7N2IiwiRGVzIl0sZGF5TmFtZXM6WyJTdW5udWRhZ3VyIiwiTcOhbnVkYWd1ciIsIsOecmnDsGp1ZGFndXIiLCJNacOwdmlrdWRhZ3VyIiwiRmltbXR1ZGFndXIiLCJGw7ZzdHVkYWd1ciIsIkxhdWdhcmRhZ3VyIl0sZGF5TmFtZXNTaG9ydDpbIlN1biIsIk3DoW4iLCLDnnJpIiwiTWnDsCIsIkZpbSIsIkbDtnMiLCJMYXUiXSxkYXlOYW1lc01pbjpbIlN1IiwiTcOhIiwiw55yIiwiTWkiLCJGaSIsIkbDtiIsIkxhIl0sd2Vla0hlYWRlcjoiVmlrYSIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjAsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoImlzIix7YnV0dG9uVGV4dDp7bW9udGg6Ik3DoW51w7B1ciIsd2VlazoiVmlrYSIsZGF5OiJEYWd1ciIsbGlzdDoiRGFnc2tyw6EifSxhbGxEYXlIdG1sOiJBbGxhbjxici8+ZGFnaW5uIixldmVudExpbWl0VGV4dDoibWVpcmEiLG5vRXZlbnRzTWVzc2FnZToiRW5naXIgdmnDsGJ1csOwaXIgdGlsIGHDsCBzw71uYSJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/it.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsYSl7IWZ1bmN0aW9uKCl7dmFyIGU9YS5kZWZpbmVMb2NhbGUoIml0Iix7bW9udGhzOiJnZW5uYWlvX2ZlYmJyYWlvX21hcnpvX2FwcmlsZV9tYWdnaW9fZ2l1Z25vX2x1Z2xpb19hZ29zdG9fc2V0dGVtYnJlX290dG9icmVfbm92ZW1icmVfZGljZW1icmUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imdlbl9mZWJfbWFyX2Fwcl9tYWdfZ2l1X2x1Z19hZ29fc2V0X290dF9ub3ZfZGljIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJEb21lbmljYV9MdW5lZMOsX01hcnRlZMOsX01lcmNvbGVkw6xfR2lvdmVkw6xfVmVuZXJkw6xfU2FiYXRvIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkRvbV9MdW5fTWFyX01lcl9HaW9fVmVuX1NhYiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiRG9fTHVfTWFfTWVfR2lfVmVfU2EiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbT2dnaSBhbGxlXSBMVCIsbmV4dERheToiW0RvbWFuaSBhbGxlXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2FsbGVdIExUIixsYXN0RGF5OiJbSWVyaSBhbGxlXSBMVCIsbGFzdFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbbGEgc2NvcnNhXSBkZGRkIFthbGxlXSBMVCI7ZGVmYXVsdDpyZXR1cm4iW2xvIHNjb3Jzb10gZGRkZCBbYWxsZV0gTFQifX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZTpmdW5jdGlvbihlKXtyZXR1cm4oL15bMC05XS4rJC8udGVzdChlKT8idHJhIjoiaW4iKSsiICIrZX0scGFzdDoiJXMgZmEiLHM6ImFsY3VuaSBzZWNvbmRpIixtOiJ1biBtaW51dG8iLG1tOiIlZCBtaW51dGkiLGg6InVuJ29yYSIsaGg6IiVkIG9yZSIsZDoidW4gZ2lvcm5vIixkZDoiJWQgZ2lvcm5pIixNOiJ1biBtZXNlIixNTToiJWQgbWVzaSIseToidW4gYW5ubyIseXk6IiVkIGFubmkifSxvcmRpbmFsUGFyc2U6L1xkezEsMn3Cui8sb3JkaW5hbDoiJWTCuiIsd2Vlazp7ZG93OjEsZG95OjR9fSk7cmV0dXJuIGV9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgiaXQiLCJpdCIse2Nsb3NlVGV4dDoiQ2hpdWRpIixwcmV2VGV4dDoiJiN4M0M7UHJlYyIsbmV4dFRleHQ6IlN1Y2MmI3gzRTsiLGN1cnJlbnRUZXh0OiJPZ2dpIixtb250aE5hbWVzOlsiR2VubmFpbyIsIkZlYmJyYWlvIiwiTWFyem8iLCJBcHJpbGUiLCJNYWdnaW8iLCJHaXVnbm8iLCJMdWdsaW8iLCJBZ29zdG8iLCJTZXR0ZW1icmUiLCJPdHRvYnJlIiwiTm92ZW1icmUiLCJEaWNlbWJyZSJdLG1vbnRoTmFtZXNTaG9ydDpbIkdlbiIsIkZlYiIsIk1hciIsIkFwciIsIk1hZyIsIkdpdSIsIkx1ZyIsIkFnbyIsIlNldCIsIk90dCIsIk5vdiIsIkRpYyJdLGRheU5hbWVzOlsiRG9tZW5pY2EiLCJMdW5lZMOsIiwiTWFydGVkw6wiLCJNZXJjb2xlZMOsIiwiR2lvdmVkw6wiLCJWZW5lcmTDrCIsIlNhYmF0byJdLGRheU5hbWVzU2hvcnQ6WyJEb20iLCJMdW4iLCJNYXIiLCJNZXIiLCJHaW8iLCJWZW4iLCJTYWIiXSxkYXlOYW1lc01pbjpbIkRvIiwiTHUiLCJNYSIsIk1lIiwiR2kiLCJWZSIsIlNhIl0sd2Vla0hlYWRlcjoiU20iLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJpdCIse2J1dHRvblRleHQ6e21vbnRoOiJNZXNlIix3ZWVrOiJTZXR0aW1hbmEiLGRheToiR2lvcm5vIixsaXN0OiJBZ2VuZGEifSxhbGxEYXlIdG1sOiJUdXR0byBpbDxici8+Z2lvcm5vIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihlKXtyZXR1cm4iK2FsdHJpICIrZX0sbm9FdmVudHNNZXNzYWdlOiJOb24gY2kgc29ubyBldmVudGkgZGEgdmlzdWFsaXp6YXJlIn0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/ja.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKCl7dmFyIGU9dC5kZWZpbmVMb2NhbGUoImphIix7bW9udGhzOiIx5pyIXzLmnIhfM+aciF805pyIXzXmnIhfNuaciF835pyIXzjmnIhfOeaciF8xMOaciF8xMeaciF8xMuaciCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiMeaciF8y5pyIXzPmnIhfNOaciF815pyIXzbmnIhfN+aciF845pyIXznmnIhfMTDmnIhfMTHmnIhfMTLmnIgiLnNwbGl0KCJfIiksd2Vla2RheXM6IuaXpeabnOaXpV/mnIjmm5zml6Vf54Gr5puc5pelX+awtOabnOaXpV/mnKjmm5zml6Vf6YeR5puc5pelX+Wcn+abnOaXpSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLml6Vf5pyIX+eBq1/msLRf5pyoX+mHkV/lnJ8iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IuaXpV/mnIhf54GrX+awtF/mnKhf6YeRX+WcnyIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkFo5pmCbeWIhiIsTFRTOiJBaOaZgm3liIZz56eSIixMOiJZWVlZL01NL0REIixMTDoiWVlZWeW5tE3mnIhE5pelIixMTEw6IllZWVnlubRN5pyIROaXpUFo5pmCbeWIhiIsTExMTDoiWVlZWeW5tE3mnIhE5pelQWjmmYJt5YiGIGRkZGQifSxtZXJpZGllbVBhcnNlOi/ljYjliY185Y2I5b6ML2ksaXNQTTpmdW5jdGlvbihlKXtyZXR1cm4i5Y2I5b6MIj09PWV9LG1lcmlkaWVtOmZ1bmN0aW9uKGUsdCxhKXtyZXR1cm4gZTwxMj8i5Y2I5YmNIjoi5Y2I5b6MIn0sY2FsZW5kYXI6e3NhbWVEYXk6Ilvku4rml6VdIExUIixuZXh0RGF5OiJb5piO5pelXSBMVCIsbmV4dFdlZWs6IlvmnaXpgLFdZGRkZCBMVCIsbGFzdERheToiW+aYqOaXpV0gTFQiLGxhc3RXZWVrOiJb5YmN6YCxXWRkZGQgTFQiLHNhbWVFbHNlOiJMIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ95pelLyxvcmRpbmFsOmZ1bmN0aW9uKGUsdCl7c3dpdGNoKHQpe2Nhc2UiZCI6Y2FzZSJEIjpjYXNlIkRERCI6cmV0dXJuIGUrIuaXpSI7ZGVmYXVsdDpyZXR1cm4gZX19LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlc+W+jCIscGFzdDoiJXPliY0iLHM6IuaVsOenkiIsbToiMeWIhiIsbW06IiVk5YiGIixoOiIx5pmC6ZaTIixoaDoiJWTmmYLplpMiLGQ6IjHml6UiLGRkOiIlZOaXpSIsTToiMeODtuaciCIsTU06IiVk44O25pyIIix5OiIx5bm0Iix5eToiJWTlubQifX0pO3JldHVybiBlfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoImphIiwiamEiLHtjbG9zZVRleHQ6IumWieOBmOOCiyIscHJldlRleHQ6IiYjeDNDO+WJjSIsbmV4dFRleHQ6IuasoSYjeDNFOyIsY3VycmVudFRleHQ6IuS7iuaXpSIsbW9udGhOYW1lczpbIjHmnIgiLCIy5pyIIiwiM+aciCIsIjTmnIgiLCI15pyIIiwiNuaciCIsIjfmnIgiLCI45pyIIiwiOeaciCIsIjEw5pyIIiwiMTHmnIgiLCIxMuaciCJdLG1vbnRoTmFtZXNTaG9ydDpbIjHmnIgiLCIy5pyIIiwiM+aciCIsIjTmnIgiLCI15pyIIiwiNuaciCIsIjfmnIgiLCI45pyIIiwiOeaciCIsIjEw5pyIIiwiMTHmnIgiLCIxMuaciCJdLGRheU5hbWVzOlsi5pel5puc5pelIiwi5pyI5puc5pelIiwi54Gr5puc5pelIiwi5rC05puc5pelIiwi5pyo5puc5pelIiwi6YeR5puc5pelIiwi5Zyf5puc5pelIl0sZGF5TmFtZXNTaG9ydDpbIuaXpSIsIuaciCIsIueBqyIsIuawtCIsIuacqCIsIumHkSIsIuWcnyJdLGRheU5hbWVzTWluOlsi5pelIiwi5pyIIiwi54GrIiwi5rC0Iiwi5pyoIiwi6YeRIiwi5ZyfIl0sd2Vla0hlYWRlcjoi6YCxIixkYXRlRm9ybWF0OiJ5eS9tbS9kZCIsZmlyc3REYXk6MCxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITAseWVhclN1ZmZpeDoi5bm0In0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiamEiLHtidXR0b25UZXh0Onttb250aDoi5pyIIix3ZWVrOiLpgLEiLGRheToi5pelIixsaXN0OiLkuojlrprjg6rjgrnjg4gifSxhbGxEYXlUZXh0OiLntYLml6UiLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGUpe3JldHVybiLku5YgIitlKyIg5Lu2In0sbm9FdmVudHNNZXNzYWdlOiLjgqTjg5njg7Pjg4jjgYzooajnpLrjgZXjgozjgarjgYTjgojjgYbjgasifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/kk.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKCl7dmFyIGU9ezA6Ii3RiNGWIiwxOiIt0YjRliIsMjoiLdGI0ZYiLDM6Ii3RiNGWIiw0OiIt0YjRliIsNToiLdGI0ZYiLDY6Ii3RiNGLIiw3OiIt0YjRliIsODoiLdGI0ZYiLDk6Ii3RiNGLIiwxMDoiLdGI0YsiLDIwOiIt0YjRiyIsMzA6Ii3RiNGLIiw0MDoiLdGI0YsiLDUwOiIt0YjRliIsNjA6Ii3RiNGLIiw3MDoiLdGI0ZYiLDgwOiIt0YjRliIsOTA6Ii3RiNGLIiwxMDA6Ii3RiNGWIn0sYT10LmRlZmluZUxvY2FsZSgia2siLHttb250aHM6ItKb0LDSo9GC0LDRgF/QsNKb0L/QsNC9X9C90LDRg9GA0YvQt1/RgdOZ0YPRltGAX9C80LDQvNGL0YBf0LzQsNGD0YHRi9C8X9GI0ZbQu9C00LVf0YLQsNC80YvQt1/Sm9GL0YDQutKv0LnQtdC6X9Kb0LDQt9Cw0L1f0pvQsNGA0LDRiNCwX9C20LXQu9GC0L7Sm9GB0LDQvSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoi0pvQsNKjX9Cw0pvQv1/QvdCw0YNf0YHTmdGDX9C80LDQvF/QvNCw0YNf0YjRltC7X9GC0LDQvF/Sm9GL0YBf0pvQsNC3X9Kb0LDRgF/QttC10LsiLnNwbGl0KCJfIiksd2Vla2RheXM6ItC20LXQutGB0LXQvdCx0ZZf0LTSr9C50YHQtdC90LHRll/RgdC10LnRgdC10L3QsdGWX9GB05nRgNGB0LXQvdCx0ZZf0LHQtdC50YHQtdC90LHRll/QttKx0LzQsF/RgdC10L3QsdGWIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ItC20LXQul/QtNKv0Llf0YHQtdC5X9GB05nRgF/QsdC10Llf0LbSsdC8X9GB0LXQvSIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi0LbQul/QtNC5X9GB0Llf0YHRgF/QsdC5X9C20Lxf0YHQvSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgSEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvQkdKv0LPRltC9INGB0LDSk9Cw0YJdIExUIixuZXh0RGF5OiJb0JXRgNGC0LXSoyDRgdCw0pPQsNGCXSBMVCIsbmV4dFdlZWs6ImRkZGQgW9GB0LDSk9Cw0YJdIExUIixsYXN0RGF5OiJb0JrQtdGI0LUg0YHQsNKT0LDRgl0gTFQiLGxhc3RXZWVrOiJb06jRgtC60LXQvSDQsNC/0YLQsNC90YvSo10gZGRkZCBb0YHQsNKT0LDRgl0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzINGW0YjRltC90LTQtSIscGFzdDoiJXMg0LHSsdGA0YvQvSIsczoi0LHRltGA0L3QtdGI0LUg0YHQtdC60YPQvdC0IixtOiLQsdGW0YAg0LzQuNC90YPRgiIsbW06IiVkINC80LjQvdGD0YIiLGg6ItCx0ZbRgCDRgdCw0pPQsNGCIixoaDoiJWQg0YHQsNKT0LDRgiIsZDoi0LHRltGAINC60q/QvSIsZGQ6IiVkINC60q/QvSIsTToi0LHRltGAINCw0LkiLE1NOiIlZCDQsNC5Iix5OiLQsdGW0YAg0LbRi9C7Iix5eToiJWQg0LbRi9C7In0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9LSjRiNGWfNGI0YspLyxvcmRpbmFsOmZ1bmN0aW9uKHQpe3ZhciBhPXQlMTAsZD10Pj0xMDA/MTAwOm51bGw7cmV0dXJuIHQrKGVbdF18fGVbYV18fGVbZF0pfSx3ZWVrOntkb3c6MSxkb3k6N319KTtyZXR1cm4gYX0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJrayIsImtrIix7Y2xvc2VUZXh0OiLQltCw0LHRgyIscHJldlRleHQ6IiYjeDNDO9CQ0LvQtNGL0qPSk9GLIixuZXh0VGV4dDoi0JrQtdC70LXRgdGWJiN4M0U7IixjdXJyZW50VGV4dDoi0JHSr9Cz0ZbQvSIsbW9udGhOYW1lczpbItKa0LDSo9GC0LDRgCIsItCQ0pvQv9Cw0L0iLCLQndCw0YPRgNGL0LciLCLQodOZ0YPRltGAIiwi0JzQsNC80YvRgCIsItCc0LDRg9GB0YvQvCIsItCo0ZbQu9C00LUiLCLQotCw0LzRi9C3Iiwi0prRi9GA0LrSr9C50LXQuiIsItKa0LDQt9Cw0L0iLCLSmtCw0YDQsNGI0LAiLCLQltC10LvRgtC+0pvRgdCw0L0iXSxtb250aE5hbWVzU2hvcnQ6WyLSmtCw0qMiLCLQkNKb0L8iLCLQndCw0YMiLCLQodOZ0YMiLCLQnNCw0LwiLCLQnNCw0YMiLCLQqNGW0LsiLCLQotCw0LwiLCLSmtGL0YAiLCLSmtCw0LciLCLSmtCw0YAiLCLQltC10LsiXSxkYXlOYW1lczpbItCW0LXQutGB0LXQvdCx0ZYiLCLQlNKv0LnRgdC10L3QsdGWIiwi0KHQtdC50YHQtdC90LHRliIsItCh05nRgNGB0LXQvdCx0ZYiLCLQkdC10LnRgdC10L3QsdGWIiwi0JbSsdC80LAiLCLQodC10L3QsdGWIl0sZGF5TmFtZXNTaG9ydDpbItC20LrRgSIsItC00YHQvSIsItGB0YHQvSIsItGB0YDRgSIsItCx0YHQvSIsItC20LzQsCIsItGB0L3QsSJdLGRheU5hbWVzTWluOlsi0JbQuiIsItCU0YEiLCLQodGBIiwi0KHRgCIsItCR0YEiLCLQltC8Iiwi0KHQvSJdLHdlZWtIZWFkZXI6ItCd0LUiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJrayIse2J1dHRvblRleHQ6e21vbnRoOiLQkNC5Iix3ZWVrOiLQkNC/0YLQsCIsZGF5OiLQmtKv0L0iLGxpc3Q6ItCa0q/QvSDRgtOZ0YDRgtGW0LHRliJ9LGFsbERheVRleHQ6ItCa0q/QvdGWINCx0L7QudGLIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihlKXtyZXR1cm4iKyDRgtCw0pPRiyAiK2V9LG5vRXZlbnRzTWVzc2FnZToi0JrTqdGA0YHQtdGC0YMg0q/RiNGW0L0g0L7Sm9C40pPQsNC70LDRgCDQttC+0psifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/ko.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKCl7dmFyIGU9dC5kZWZpbmVMb2NhbGUoImtvIix7bW9udGhzOiIx7JuUXzLsm5RfM+yblF807JuUXzXsm5RfNuyblF837JuUXzjsm5RfOeyblF8xMOyblF8xMeyblF8xMuyblCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiMeyblF8y7JuUXzPsm5RfNOyblF817JuUXzbsm5RfN+yblF847JuUXznsm5RfMTDsm5RfMTHsm5RfMTLsm5QiLnNwbGl0KCJfIiksd2Vla2RheXM6IuydvOyalOydvF/sm5TsmpTsnbxf7ZmU7JqU7J28X+yImOyalOydvF/rqqnsmpTsnbxf6riI7JqU7J28X+2GoOyalOydvCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLsnbxf7JuUX+2ZlF/siJhf66qpX+q4iF/thqAiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IuydvF/sm5Rf7ZmUX+yImF/rqqlf6riIX+2GoCIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkEgaOyLnCBt67aEIixMVFM6IkEgaOyLnCBt67aEIHPstIgiLEw6IllZWVkuTU0uREQiLExMOiJZWVlZ64WEIE1NTU0gROydvCIsTExMOiJZWVlZ64WEIE1NTU0gROydvCBBIGjsi5wgbeu2hCIsTExMTDoiWVlZWeuFhCBNTU1NIETsnbwgZGRkZCBBIGjsi5wgbeu2hCJ9LGNhbGVuZGFyOntzYW1lRGF5OiLsmKTripggTFQiLG5leHREYXk6IuuCtOydvCBMVCIsbmV4dFdlZWs6ImRkZGQgTFQiLGxhc3REYXk6IuyWtOygnCBMVCIsbGFzdFdlZWs6IuyngOuCnOyjvCBkZGRkIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlcyDtm4QiLHBhc3Q6IiVzIOyghCIsczoi66qHIOy0iCIsc3M6IiVk7LSIIixtOiLsnbzrtoQiLG1tOiIlZOu2hCIsaDoi7ZWcIOyLnOqwhCIsaGg6IiVk7Iuc6rCEIixkOiLtlZjro6giLGRkOiIlZOydvCIsTToi7ZWcIOuLrCIsTU06IiVk64usIix5OiLsnbwg64WEIix5eToiJWTrhYQifSxvcmRpbmFsUGFyc2U6L1xkezEsMn3snbwvLG9yZGluYWw6IiVk7J28IixtZXJpZGllbVBhcnNlOi/smKTsoIR87Jik7ZuELyxpc1BNOmZ1bmN0aW9uKGUpe3JldHVybiLsmKTtm4QiPT09ZX0sbWVyaWRpZW06ZnVuY3Rpb24oZSx0LGEpe3JldHVybiBlPDEyPyLsmKTsoIQiOiLsmKTtm4QifX0pO3JldHVybiBlfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoImtvIiwia28iLHtjbG9zZVRleHQ6IuuLq+q4sCIscHJldlRleHQ6IuydtOyghOuLrCIsbmV4dFRleHQ6IuuLpOydjOuLrCIsY3VycmVudFRleHQ6IuyYpOuKmCIsbW9udGhOYW1lczpbIjHsm5QiLCIy7JuUIiwiM+yblCIsIjTsm5QiLCI17JuUIiwiNuyblCIsIjfsm5QiLCI47JuUIiwiOeyblCIsIjEw7JuUIiwiMTHsm5QiLCIxMuyblCJdLG1vbnRoTmFtZXNTaG9ydDpbIjHsm5QiLCIy7JuUIiwiM+yblCIsIjTsm5QiLCI17JuUIiwiNuyblCIsIjfsm5QiLCI47JuUIiwiOeyblCIsIjEw7JuUIiwiMTHsm5QiLCIxMuyblCJdLGRheU5hbWVzOlsi7J287JqU7J28Iiwi7JuU7JqU7J28Iiwi7ZmU7JqU7J28Iiwi7IiY7JqU7J28Iiwi66qp7JqU7J28Iiwi6riI7JqU7J28Iiwi7Yag7JqU7J28Il0sZGF5TmFtZXNTaG9ydDpbIuydvCIsIuyblCIsIu2ZlCIsIuyImCIsIuuqqSIsIuq4iCIsIu2GoCJdLGRheU5hbWVzTWluOlsi7J28Iiwi7JuUIiwi7ZmUIiwi7IiYIiwi66qpIiwi6riIIiwi7YagIl0sd2Vla0hlYWRlcjoi7KO8IixkYXRlRm9ybWF0OiJ5eS4gbS4gZC4iLGZpcnN0RGF5OjAsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiEwLHllYXJTdWZmaXg6IuuFhCJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoImtvIix7YnV0dG9uVGV4dDp7bW9udGg6IuyblCIsd2Vlazoi7KO8IixkYXk6IuydvCIsbGlzdDoi7J287KCV66qp66GdIn0sYWxsRGF5VGV4dDoi7KKF7J28IixldmVudExpbWl0VGV4dDoi6rCcIixub0V2ZW50c01lc3NhZ2U6IuydvOygleydtCDtkZzsi5wg7JeG7Iq164uI64ukIn0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/lb.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsbil7IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLG4scix0KXt2YXIgYT17bTpbImVuZyBNaW51dHQiLCJlbmdlciBNaW51dHQiXSxoOlsiZW5nIFN0b25uIiwiZW5nZXIgU3Rvbm4iXSxkOlsiZWVuIERhZyIsImVuZ2VtIERhZyJdLE06WyJlZSBNb3VudCIsImVuZ2VtIE1vdW50Il0seTpbImVlIEpvZXIiLCJlbmdlbSBKb2VyIl19O3JldHVybiBuP2Fbcl1bMF06YVtyXVsxXX1mdW5jdGlvbiByKGUpe3ZhciBuPWUuc3Vic3RyKDAsZS5pbmRleE9mKCIgIikpO3JldHVybiBhKG4pPyJhICIrZToiYW4gIitlfWZ1bmN0aW9uIHQoZSl7dmFyIG49ZS5zdWJzdHIoMCxlLmluZGV4T2YoIiAiKSk7cmV0dXJuIGEobik/InZpcnUgIitlOiJ2aXJ1biAiK2V9ZnVuY3Rpb24gYShlKXtpZihlPXBhcnNlSW50KGUsMTApLGlzTmFOKGUpKXJldHVybiExO2lmKGU8MClyZXR1cm4hMDtpZihlPDEwKXJldHVybiA0PD1lJiZlPD03O2lmKGU8MTAwKXt2YXIgbj1lJTEwLHI9ZS8xMDtyZXR1cm4gYSgwPT09bj9yOm4pfWlmKGU8MWU0KXtmb3IoO2U+PTEwOyllLz0xMDtyZXR1cm4gYShlKX1yZXR1cm4gZS89MWUzLGEoZSl9dmFyIHU9bi5kZWZpbmVMb2NhbGUoImxiIix7bW9udGhzOiJKYW51YXJfRmVicnVhcl9Nw6RlcnpfQWJyw6tsbF9NZWVfSnVuaV9KdWxpX0F1Z3VzdF9TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXplbWJlciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuLl9GZWJyLl9NcnouX0Fici5fTWVlX0p1bi5fSnVsLl9BdWcuX1NlcHQuX09rdC5fTm92Ll9EZXouIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6IlNvbm5kZWdfTcOpaW5kZWdfRMOrbnNjaGRlZ19Nw6t0dHdvY2hfRG9ubmVzY2hkZWdfRnJlaWRlZ19TYW1zY2hkZWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiU28uX03DqS5fRMOrLl9Nw6suX0RvLl9Gci5fU2EuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTb19Nw6lfRMOrX03Dq19Eb19Gcl9TYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIFtBdWVyXSIsTFRTOiJIOm1tOnNzIFtBdWVyXSIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgSDptbSBbQXVlcl0iLExMTEw6ImRkZGQsIEQuIE1NTU0gWVlZWSBIOm1tIFtBdWVyXSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSGF1dCB1bV0gTFQiLHNhbWVFbHNlOiJMIixuZXh0RGF5OiJbTXVlciB1bV0gTFQiLG5leHRXZWVrOiJkZGRkIFt1bV0gTFQiLGxhc3REYXk6IltHw6tzY2h0ZXIgdW1dIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDI6Y2FzZSA0OnJldHVybiJbTGVzY2h0ZW5dIGRkZGQgW3VtXSBMVCI7ZGVmYXVsdDpyZXR1cm4iW0xlc2NodGVdIGRkZGQgW3VtXSBMVCJ9fX0scmVsYXRpdmVUaW1lOntmdXR1cmU6cixwYXN0OnQsczoiZSBwdWVyIFNla29ubmVuIixtOmUsbW06IiVkIE1pbnV0dGVuIixoOmUsaGg6IiVkIFN0b25uZW4iLGQ6ZSxkZDoiJWQgRGVlZyIsTTplLE1NOiIlZCBNw6lpbnQiLHk6ZSx5eToiJWQgSm9lciJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pO3JldHVybiB1fSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoImxiIiwibGIiLHtjbG9zZVRleHQ6IkbDpGVyZGVnIixwcmV2VGV4dDoiWnLDqWNrIixuZXh0VGV4dDoiV2VpZGVyIixjdXJyZW50VGV4dDoiSGF1dCIsbW9udGhOYW1lczpbIkphbnVhciIsIkZlYnJ1YXIiLCJNw6RlcnoiLCJBYnLDq2xsIiwiTWVlIiwiSnVuaSIsIkp1bGkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPa3RvYmVyIiwiTm92ZW1iZXIiLCJEZXplbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk3DpGUiLCJBYnIiLCJNZWUiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPa3QiLCJOb3YiLCJEZXoiXSxkYXlOYW1lczpbIlNvbm5kZWciLCJNw6lpbmRlZyIsIkTDq25zY2hkZWciLCJNw6t0dHdvY2giLCJEb25uZXNjaGRlZyIsIkZyZWlkZWciLCJTYW1zY2hkZWciXSxkYXlOYW1lc1Nob3J0OlsiU29uIiwiTcOpaSIsIkTDq24iLCJNw6t0IiwiRG9uIiwiRnJlIiwiU2FtIl0sZGF5TmFtZXNNaW46WyJTbyIsIk3DqSIsIkTDqyIsIk3DqyIsIkRvIiwiRnIiLCJTYSJdLHdlZWtIZWFkZXI6IlciLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJsYiIse2J1dHRvblRleHQ6e21vbnRoOiJNb3VudCIsd2VlazoiV29jaCIsZGF5OiJEYWciLGxpc3Q6IlRlcm1pbml3d2Vyc2lpY2h0In0sYWxsRGF5VGV4dDoiR2FuemVuIERhZyIsZXZlbnRMaW1pdFRleHQ6Im3DqWkiLG5vRXZlbnRzTWVzc2FnZToiTmVlIEV2ZW5lbWVudGVyIHplIGFmZmljaMOpaWVyZW4ifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/lt.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsaSl7IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLGksYSxzKXtyZXR1cm4gaT8ia2VsaW9zIHNla3VuZMSXcyI6cz8ia2VsacWzIHNla3VuZMW+acWzIjoia2VsaWFzIHNla3VuZGVzIn1mdW5jdGlvbiBhKGUsaSxhLHMpe3JldHVybiBpP24oYSlbMF06cz9uKGEpWzFdOm4oYSlbMl19ZnVuY3Rpb24gcyhlKXtyZXR1cm4gZSUxMD09PTB8fGU+MTAmJmU8MjB9ZnVuY3Rpb24gbihlKXtyZXR1cm4gZFtlXS5zcGxpdCgiXyIpfWZ1bmN0aW9uIHQoZSxpLHQsZCl7dmFyIHI9ZSsiICI7cmV0dXJuIDE9PT1lP3IrYShlLGksdFswXSxkKTppP3IrKHMoZSk/bih0KVsxXTpuKHQpWzBdKTpkP3Irbih0KVsxXTpyKyhzKGUpP24odClbMV06bih0KVsyXSl9dmFyIGQ9e206Im1pbnV0xJdfbWludXTEl3NfbWludXTEmSIsbW06Im1pbnV0xJdzX21pbnXEjWnFs19taW51dGVzIixoOiJ2YWxhbmRhX3ZhbGFuZG9zX3ZhbGFuZMSFIixoaDoidmFsYW5kb3NfdmFsYW5kxbNfdmFsYW5kYXMiLGQ6ImRpZW5hX2RpZW5vc19kaWVuxIUiLGRkOiJkaWVub3NfZGllbsWzX2RpZW5hcyIsTToibcSXbnVvX23El25lc2lvX23El25lc8SvIixNTToibcSXbmVzaWFpX23El25lc2nFs19txJduZXNpdXMiLHk6Im1ldGFpX21ldMWzX21ldHVzIix5eToibWV0YWlfbWV0xbNfbWV0dXMifSxyPWkuZGVmaW5lTG9jYWxlKCJsdCIse21vbnRoczp7Zm9ybWF0OiJzYXVzaW9fdmFzYXJpb19rb3ZvX2JhbGFuZMW+aW9fZ2VndcW+xJdzX2JpcsW+ZWxpb19saWVwb3NfcnVncGrFq8SNaW9fcnVnc8SXam9fc3BhbGlvX2xhcGtyacSNaW9fZ3J1b2TFvmlvIi5zcGxpdCgiXyIpLHN0YW5kYWxvbmU6InNhdXNpc192YXNhcmlzX2tvdmFzX2JhbGFuZGlzX2dlZ3XFvsSXX2JpcsW+ZWxpc19saWVwYV9ydWdwasWrdGlzX3J1Z3PEl2ppc19zcGFsaXNfbGFwa3JpdGlzX2dydW9kaXMiLnNwbGl0KCJfIiksaXNGb3JtYXQ6L0Rbb0RdPyhcW1teXFtcXV0qXF18XHMpK01NTU0/fE1NTU0/KFxbW15cW1xdXSpcXXxccykrRFtvRF0/L30sbW9udGhzU2hvcnQ6InNhdV92YXNfa292X2JhbF9nZWdfYmlyX2xpZV9yZ3BfcmdzX3NwYV9sYXBfZ3JkIi5zcGxpdCgiXyIpLHdlZWtkYXlzOntmb3JtYXQ6InNla21hZGllbsSvX3Bpcm1hZGllbsSvX2FudHJhZGllbsSvX3RyZcSNaWFkaWVuxK9fa2V0dmlydGFkaWVuxK9fcGVua3RhZGllbsSvX8WhZcWhdGFkaWVuxK8iLnNwbGl0KCJfIiksc3RhbmRhbG9uZToic2VrbWFkaWVuaXNfcGlybWFkaWVuaXNfYW50cmFkaWVuaXNfdHJlxI1pYWRpZW5pc19rZXR2aXJ0YWRpZW5pc19wZW5rdGFkaWVuaXNfxaFlxaF0YWRpZW5pcyIuc3BsaXQoIl8iKSxpc0Zvcm1hdDovZGRkZCBISDptbS99LHdlZWtkYXlzU2hvcnQ6IlNla19QaXJfQW50X1RyZV9LZXRfUGVuX8WgZcWhIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJTX1BfQV9UX0tfUG5fxaAiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IllZWVktTU0tREQiLExMOiJZWVlZIFttLl0gTU1NTSBEIFtkLl0iLExMTDoiWVlZWSBbbS5dIE1NTU0gRCBbZC5dLCBISDptbSBbdmFsLl0iLExMTEw6IllZWVkgW20uXSBNTU1NIEQgW2QuXSwgZGRkZCwgSEg6bW0gW3ZhbC5dIixsOiJZWVlZLU1NLUREIixsbDoiWVlZWSBbbS5dIE1NTU0gRCBbZC5dIixsbGw6IllZWVkgW20uXSBNTU1NIEQgW2QuXSwgSEg6bW0gW3ZhbC5dIixsbGxsOiJZWVlZIFttLl0gTU1NTSBEIFtkLl0sIGRkZCwgSEg6bW0gW3ZhbC5dIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvFoGlhbmRpZW5dIExUIixuZXh0RGF5OiJbUnl0b2pdIExUIixuZXh0V2VlazoiZGRkZCBMVCIsbGFzdERheToiW1Zha2FyXSBMVCIsbGFzdFdlZWs6IltQcmHEl2p1c8SvXSBkZGRkIExUIixzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJwbyAlcyIscGFzdDoicHJpZcWhICVzIixzOmUsbTphLG1tOnQsaDphLGhoOnQsZDphLGRkOnQsTTphLE1NOnQseTphLHl5OnR9LG9yZGluYWxQYXJzZTovXGR7MSwyfS1vamkvLG9yZGluYWw6ZnVuY3Rpb24oZSl7cmV0dXJuIGUrIi1vamkifSx3ZWVrOntkb3c6MSxkb3k6NH19KTtyZXR1cm4gcn0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJsdCIsImx0Iix7Y2xvc2VUZXh0OiJVxb5kYXJ5dGkiLHByZXZUZXh0OiImI3gzQztBdGdhbCIsbmV4dFRleHQ6IlBpcm15biYjeDNFOyIsY3VycmVudFRleHQ6IsWgaWFuZGllbiIsbW9udGhOYW1lczpbIlNhdXNpcyIsIlZhc2FyaXMiLCJLb3ZhcyIsIkJhbGFuZGlzIiwiR2VndcW+xJciLCJCaXLFvmVsaXMiLCJMaWVwYSIsIlJ1Z3Bqxat0aXMiLCJSdWdzxJdqaXMiLCJTcGFsaXMiLCJMYXBrcml0aXMiLCJHcnVvZGlzIl0sbW9udGhOYW1lc1Nob3J0OlsiU2F1IiwiVmFzIiwiS292IiwiQmFsIiwiR2VnIiwiQmlyIiwiTGllIiwiUnVncCIsIlJ1Z3MiLCJTcGEiLCJMYXAiLCJHcnUiXSxkYXlOYW1lczpbInNla21hZGllbmlzIiwicGlybWFkaWVuaXMiLCJhbnRyYWRpZW5pcyIsInRyZcSNaWFkaWVuaXMiLCJrZXR2aXJ0YWRpZW5pcyIsInBlbmt0YWRpZW5pcyIsIsWhZcWhdGFkaWVuaXMiXSxkYXlOYW1lc1Nob3J0Olsic2VrIiwicGlyIiwiYW50IiwidHJlIiwia2V0IiwicGVuIiwixaFlxaEiXSxkYXlOYW1lc01pbjpbIlNlIiwiUHIiLCJBbiIsIlRyIiwiS2UiLCJQZSIsIsWgZSJdLHdlZWtIZWFkZXI6IlNBViIsZGF0ZUZvcm1hdDoieXktbW0tZGQiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiEwLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoImx0Iix7YnV0dG9uVGV4dDp7bW9udGg6Ik3El251byIsd2VlazoiU2F2YWl0xJciLGRheToiRGllbmEiLGxpc3Q6IkRhcmJvdHZhcmvElyJ9LGFsbERheVRleHQ6IlZpc8SFIGRpZW7EhSIsZXZlbnRMaW1pdFRleHQ6ImRhdWdpYXUiLG5vRXZlbnRzTWVzc2FnZToiTsSXcmEgxK92eWtpxbMgcm9keXRpIn0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/lv.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQscyl7cmV0dXJuIHM/dCUxMD09PTEmJnQlMTAwIT09MTE/ZVsyXTplWzNdOnQlMTA9PT0xJiZ0JTEwMCE9PTExP2VbMF06ZVsxXX1mdW5jdGlvbiBzKHQscyxhKXtyZXR1cm4gdCsiICIrZShpW2FdLHQscyl9ZnVuY3Rpb24gYSh0LHMsYSl7cmV0dXJuIGUoaVthXSx0LHMpfWZ1bmN0aW9uIG4oZSx0KXtyZXR1cm4gdD8iZGHFvmFzIHNla3VuZGVzIjoiZGHFvsSBbSBzZWt1bmTEk20ifXZhciBpPXttOiJtaW7Fq3Rlc19taW7Fq3TEk21fbWluxat0ZV9taW7Fq3RlcyIuc3BsaXQoIl8iKSxtbToibWluxat0ZXNfbWluxat0xJNtX21pbsWrdGVfbWluxat0ZXMiLnNwbGl0KCJfIiksaDoic3R1bmRhc19zdHVuZMSBbV9zdHVuZGFfc3R1bmRhcyIuc3BsaXQoIl8iKSxoaDoic3R1bmRhc19zdHVuZMSBbV9zdHVuZGFfc3R1bmRhcyIuc3BsaXQoIl8iKSxkOiJkaWVuYXNfZGllbsSBbV9kaWVuYV9kaWVuYXMiLnNwbGl0KCJfIiksZGQ6ImRpZW5hc19kaWVuxIFtX2RpZW5hX2RpZW5hcyIuc3BsaXQoIl8iKSxNOiJtxJNuZcWhYV9txJNuZcWhaWVtX23Ek25lc2lzX23Ek25lxaFpIi5zcGxpdCgiXyIpLE1NOiJtxJNuZcWhYV9txJNuZcWhaWVtX23Ek25lc2lzX23Ek25lxaFpIi5zcGxpdCgiXyIpLHk6ImdhZGFfZ2FkaWVtX2dhZHNfZ2FkaSIuc3BsaXQoIl8iKSx5eToiZ2FkYV9nYWRpZW1fZ2Fkc19nYWRpIi5zcGxpdCgiXyIpfSxkPXQuZGVmaW5lTG9jYWxlKCJsdiIse21vbnRoczoiamFudsSBcmlzX2ZlYnJ1xIFyaXNfbWFydHNfYXByxKtsaXNfbWFpanNfasWrbmlqc19qxatsaWpzX2F1Z3VzdHNfc2VwdGVtYnJpc19va3RvYnJpc19ub3ZlbWJyaXNfZGVjZW1icmlzIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW5fZmViX21hcl9hcHJfbWFpX2rFq25fasWrbF9hdWdfc2VwX29rdF9ub3ZfZGVjIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJzdsSTdGRpZW5hX3Bpcm1kaWVuYV9vdHJkaWVuYV90cmXFoWRpZW5hX2NldHVydGRpZW5hX3BpZWt0ZGllbmFfc2VzdGRpZW5hIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IlN2X1BfT19UX0NfUGtfUyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiU3ZfUF9PX1RfQ19Qa19TIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZLiIsTEw6IllZWVkuIFtnYWRhXSBELiBNTU1NIixMTEw6IllZWVkuIFtnYWRhXSBELiBNTU1NLCBISDptbSIsTExMTDoiWVlZWS4gW2dhZGFdIEQuIE1NTU0sIGRkZGQsIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvFoG9kaWVuIHB1bGtzdGVuXSBMVCIsbmV4dERheToiW1LEq3QgcHVsa3N0ZW5dIExUIixuZXh0V2VlazoiZGRkZCBbcHVsa3N0ZW5dIExUIixsYXN0RGF5OiJbVmFrYXIgcHVsa3N0ZW5dIExUIixsYXN0V2VlazoiW1BhZ8SBanXFocSBXSBkZGRkIFtwdWxrc3Rlbl0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InDEk2MgJXMiLHBhc3Q6InBpcm1zICVzIixzOm4sbTphLG1tOnMsaDphLGhoOnMsZDphLGRkOnMsTTphLE1NOnMseTphLHl5OnN9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pO3JldHVybiBkfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoImx2IiwibHYiLHtjbG9zZVRleHQ6IkFpenbEk3J0IixwcmV2VGV4dDoiSWVwci4iLG5leHRUZXh0OiJOxIFrLiIsY3VycmVudFRleHQ6IsWgb2RpZW4iLG1vbnRoTmFtZXM6WyJKYW52xIFyaXMiLCJGZWJydcSBcmlzIiwiTWFydHMiLCJBcHLEq2xpcyIsIk1haWpzIiwiSsWrbmlqcyIsIkrFq2xpanMiLCJBdWd1c3RzIiwiU2VwdGVtYnJpcyIsIk9rdG9icmlzIiwiTm92ZW1icmlzIiwiRGVjZW1icmlzIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWFpIiwiSsWrbiIsIkrFq2wiLCJBdWciLCJTZXAiLCJPa3QiLCJOb3YiLCJEZWMiXSxkYXlOYW1lczpbInN2xJN0ZGllbmEiLCJwaXJtZGllbmEiLCJvdHJkaWVuYSIsInRyZcWhZGllbmEiLCJjZXR1cnRkaWVuYSIsInBpZWt0ZGllbmEiLCJzZXN0ZGllbmEiXSxkYXlOYW1lc1Nob3J0Olsic3Z0IiwicHJtIiwib3RyIiwidHJlIiwiY3RyIiwicGt0Iiwic3N0Il0sZGF5TmFtZXNNaW46WyJTdiIsIlByIiwiT3QiLCJUciIsIkN0IiwiUGsiLCJTcyJdLHdlZWtIZWFkZXI6Ik5lZC4iLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJsdiIse2J1dHRvblRleHQ6e21vbnRoOiJNxJNuZXNpcyIsd2VlazoiTmVkxJPEvGEiLGRheToiRGllbmEiLGxpc3Q6IkRpZW5hcyBrxIFydMSrYmEifSxhbGxEYXlUZXh0OiJWaXN1IGRpZW51IixldmVudExpbWl0VGV4dDpmdW5jdGlvbihlKXtyZXR1cm4iK3bEk2wgIitlfSxub0V2ZW50c01lc3NhZ2U6Ik5hdiBub3Rpa3VtdSwgbGFpIHBhcsSBZMSrdHUifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/mk.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKCl7dmFyIGU9dC5kZWZpbmVMb2NhbGUoIm1rIix7bW9udGhzOiLRmNCw0L3Rg9Cw0YDQuF/RhNC10LLRgNGD0LDRgNC4X9C80LDRgNGCX9Cw0L/RgNC40Ltf0LzQsNGYX9GY0YPQvdC4X9GY0YPQu9C4X9Cw0LLQs9GD0YHRgl/RgdC10L/RgtC10LzQstGA0Lhf0L7QutGC0L7QvNCy0YDQuF/QvdC+0LXQvNCy0YDQuF/QtNC10LrQtdC80LLRgNC4Ii5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiLRmNCw0L1f0YTQtdCyX9C80LDRgF/QsNC/0YBf0LzQsNGYX9GY0YPQvV/RmNGD0Ltf0LDQstCzX9GB0LXQv1/QvtC60YJf0L3QvtC1X9C00LXQuiIuc3BsaXQoIl8iKSx3ZWVrZGF5czoi0L3QtdC00LXQu9CwX9C/0L7QvdC10LTQtdC70L3QuNC6X9Cy0YLQvtGA0L3QuNC6X9GB0YDQtdC00LBf0YfQtdGC0LLRgNGC0L7Qul/Qv9C10YLQvtC6X9GB0LDQsdC+0YLQsCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLQvdC10LRf0L/QvtC9X9Cy0YLQvl/RgdGA0LVf0YfQtdGCX9C/0LXRgl/RgdCw0LEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ItC9ZV/Qv29f0LLRgl/RgdGAX9GH0LVf0L/QtV/RgWEiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEg6bW0iLExMTEw6ImRkZGQsIEQgTU1NTSBZWVlZIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW9CU0LXQvdC10YEg0LLQvl0gTFQiLG5leHREYXk6IlvQo9GC0YDQtSDQstC+XSBMVCIsbmV4dFdlZWs6IlvQktC+XSBkZGRkIFvQstC+XSBMVCIsbGFzdERheToiW9CS0YfQtdGA0LAg0LLQvl0gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpjYXNlIDM6Y2FzZSA2OnJldHVybiJb0JjQt9C80LjQvdCw0YLQsNGC0LBdIGRkZGQgW9Cy0L5dIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIlvQmNC30LzQuNC90LDRgtC40L7Rgl0gZGRkZCBb0LLQvl0gTFQifX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi0L/QvtGB0LvQtSAlcyIscGFzdDoi0L/RgNC10LQgJXMiLHM6ItC90LXQutC+0LvQutGDINGB0LXQutGD0L3QtNC4IixtOiLQvNC40L3Rg9GC0LAiLG1tOiIlZCDQvNC40L3Rg9GC0LgiLGg6ItGH0LDRgSIsaGg6IiVkINGH0LDRgdCwIixkOiLQtNC10L0iLGRkOiIlZCDQtNC10L3QsCIsTToi0LzQtdGB0LXRhiIsTU06IiVkINC80LXRgdC10YbQuCIseToi0LPQvtC00LjQvdCwIix5eToiJWQg0LPQvtC00LjQvdC4In0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9LSjQtdCyfNC10L180YLQuHzQstC4fNGA0Lh80LzQuCkvLG9yZGluYWw6ZnVuY3Rpb24oZSl7dmFyIHQ9ZSUxMCxhPWUlMTAwO3JldHVybiAwPT09ZT9lKyIt0LXQsiI6MD09PWE/ZSsiLdC10L0iOmE+MTAmJmE8MjA/ZSsiLdGC0LgiOjE9PT10P2UrIi3QstC4IjoyPT09dD9lKyIt0YDQuCI6Nz09PXR8fDg9PT10P2UrIi3QvNC4IjplKyIt0YLQuCJ9LHdlZWs6e2RvdzoxLGRveTo3fX0pO3JldHVybiBlfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoIm1rIiwibWsiLHtjbG9zZVRleHQ6ItCX0LDRgtCy0L7RgNC4IixwcmV2VGV4dDoiJiN4M0M7IixuZXh0VGV4dDoiJiN4M0U7IixjdXJyZW50VGV4dDoi0JTQtdC90LXRgSIsbW9udGhOYW1lczpbItCI0LDQvdGD0LDRgNC4Iiwi0KTQtdCy0YDRg9Cw0YDQuCIsItCc0LDRgNGCIiwi0JDQv9GA0LjQuyIsItCc0LDRmCIsItCI0YPQvdC4Iiwi0IjRg9C70LgiLCLQkNCy0LPRg9GB0YIiLCLQodC10L/RgtC10LzQstGA0LgiLCLQntC60YLQvtC80LLRgNC4Iiwi0J3QvtC10LzQstGA0LgiLCLQlNC10LrQtdC80LLRgNC4Il0sbW9udGhOYW1lc1Nob3J0Olsi0IjQsNC9Iiwi0KTQtdCyIiwi0JzQsNGAIiwi0JDQv9GAIiwi0JzQsNGYIiwi0IjRg9C9Iiwi0IjRg9C7Iiwi0JDQstCzIiwi0KHQtdC/Iiwi0J7QutGCIiwi0J3QvtC1Iiwi0JTQtdC6Il0sZGF5TmFtZXM6WyLQndC10LTQtdC70LAiLCLQn9C+0L3QtdC00LXQu9C90LjQuiIsItCS0YLQvtGA0L3QuNC6Iiwi0KHRgNC10LTQsCIsItCn0LXRgtCy0YDRgtC+0LoiLCLQn9C10YLQvtC6Iiwi0KHQsNCx0L7RgtCwIl0sZGF5TmFtZXNTaG9ydDpbItCd0LXQtCIsItCf0L7QvSIsItCS0YLQviIsItCh0YDQtSIsItCn0LXRgiIsItCf0LXRgiIsItCh0LDQsSJdLGRheU5hbWVzTWluOlsi0J3QtSIsItCf0L4iLCLQktGCIiwi0KHRgCIsItCn0LUiLCLQn9C1Iiwi0KHQsCJdLHdlZWtIZWFkZXI6ItCh0LXQtCIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoIm1rIix7YnV0dG9uVGV4dDp7bW9udGg6ItCc0LXRgdC10YYiLHdlZWs6ItCd0LXQtNC10LvQsCIsZGF5OiLQlNC10L0iLGxpc3Q6ItCT0YDQsNGE0LjQuiJ9LGFsbERheVRleHQ6ItCm0LXQuyDQtNC10L0iLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGUpe3JldHVybiIr0L/QvtCy0LXRnNC1ICIrZX0sbm9FdmVudHNNZXNzYWdlOiLQndC10LzQsCDQvdCw0YHRgtCw0L3QuCDQt9CwINC/0YDQuNC60LDQttGD0LLQsNGa0LUifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/ms-my.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsYSl7IWZ1bmN0aW9uKCl7dmFyIGU9YS5kZWZpbmVMb2NhbGUoIm1zLW15Iix7bW9udGhzOiJKYW51YXJpX0ZlYnJ1YXJpX01hY19BcHJpbF9NZWlfSnVuX0p1bGFpX09nb3NfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGlzZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFjX0Fwcl9NZWlfSnVuX0p1bF9PZ3NfU2VwX09rdF9Ob3ZfRGlzIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJBaGFkX0lzbmluX1NlbGFzYV9SYWJ1X0toYW1pc19KdW1hYXRfU2FidHUiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiQWhkX0lzbl9TZWxfUmFiX0toYV9KdW1fU2FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJBaF9Jc19TbF9SYl9LbV9KbV9TYiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhILm1tIixMVFM6IkhILm1tLnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbSJ9LG1lcmlkaWVtUGFyc2U6L3BhZ2l8dGVuZ2FoYXJpfHBldGFuZ3xtYWxhbS8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKGUsYSl7cmV0dXJuIDEyPT09ZSYmKGU9MCksInBhZ2kiPT09YT9lOiJ0ZW5nYWhhcmkiPT09YT9lPj0xMT9lOmUrMTI6InBldGFuZyI9PT1hfHwibWFsYW0iPT09YT9lKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oZSxhLHQpe3JldHVybiBlPDExPyJwYWdpIjplPDE1PyJ0ZW5nYWhhcmkiOmU8MTk/InBldGFuZyI6Im1hbGFtIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltIYXJpIGluaSBwdWt1bF0gTFQiLG5leHREYXk6IltFc29rIHB1a3VsXSBMVCIsbmV4dFdlZWs6ImRkZGQgW3B1a3VsXSBMVCIsbGFzdERheToiW0tlbG1hcmluIHB1a3VsXSBMVCIsbGFzdFdlZWs6ImRkZGQgW2xlcGFzIHB1a3VsXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZGFsYW0gJXMiLHBhc3Q6IiVzIHlhbmcgbGVwYXMiLHM6ImJlYmVyYXBhIHNhYXQiLG06InNlbWluaXQiLG1tOiIlZCBtaW5pdCIsaDoic2VqYW0iLGhoOiIlZCBqYW0iLGQ6InNlaGFyaSIsZGQ6IiVkIGhhcmkiLE06InNlYnVsYW4iLE1NOiIlZCBidWxhbiIseToic2V0YWh1biIseXk6IiVkIHRhaHVuIn0sd2Vlazp7ZG93OjEsZG95Ojd9fSk7cmV0dXJuIGV9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgibXMtbXkiLCJtcyIse2Nsb3NlVGV4dDoiVHV0dXAiLHByZXZUZXh0OiImI3gzQztTZWJlbHVtIixuZXh0VGV4dDoiU2VsZXBhcyYjeDNFOyIsY3VycmVudFRleHQ6ImhhcmkgaW5pIixtb250aE5hbWVzOlsiSmFudWFyaSIsIkZlYnJ1YXJpIiwiTWFjIiwiQXByaWwiLCJNZWkiLCJKdW4iLCJKdWxhaSIsIk9nb3MiLCJTZXB0ZW1iZXIiLCJPa3RvYmVyIiwiTm92ZW1iZXIiLCJEaXNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hYyIsIkFwciIsIk1laSIsIkp1biIsIkp1bCIsIk9nbyIsIlNlcCIsIk9rdCIsIk5vdiIsIkRpcyJdLGRheU5hbWVzOlsiQWhhZCIsIklzbmluIiwiU2VsYXNhIiwiUmFidSIsIktoYW1pcyIsIkp1bWFhdCIsIlNhYnR1Il0sZGF5TmFtZXNTaG9ydDpbIkFoYSIsIklzbiIsIlNlbCIsIlJhYiIsImtoYSIsIkp1bSIsIlNhYiJdLGRheU5hbWVzTWluOlsiQWgiLCJJcyIsIlNlIiwiUmEiLCJLaCIsIkp1IiwiU2EiXSx3ZWVrSGVhZGVyOiJNZyIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjAsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoIm1zLW15Iix7YnV0dG9uVGV4dDp7bW9udGg6IkJ1bGFuIix3ZWVrOiJNaW5nZ3UiLGRheToiSGFyaSIsbGlzdDoiQWdlbmRhIn0sYWxsRGF5VGV4dDoiU2VwYW5qYW5nIGhhcmkiLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGUpe3JldHVybiJtYXNpaCBhZGEgIitlKyIgYWNhcmEifSxub0V2ZW50c01lc3NhZ2U6IlRpYWRhIHBlcmlzdGl3YSB1bnR1ayBkaXBhcGFya2FuIn0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/ms.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsYSl7IWZ1bmN0aW9uKCl7dmFyIGU9YS5kZWZpbmVMb2NhbGUoIm1zIix7bW9udGhzOiJKYW51YXJpX0ZlYnJ1YXJpX01hY19BcHJpbF9NZWlfSnVuX0p1bGFpX09nb3NfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGlzZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Ikphbl9GZWJfTWFjX0Fwcl9NZWlfSnVuX0p1bF9PZ3NfU2VwX09rdF9Ob3ZfRGlzIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJBaGFkX0lzbmluX1NlbGFzYV9SYWJ1X0toYW1pc19KdW1hYXRfU2FidHUiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiQWhkX0lzbl9TZWxfUmFiX0toYV9KdW1fU2FiIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJBaF9Jc19TbF9SYl9LbV9KbV9TYiIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhILm1tIixMVFM6IkhILm1tLnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFlZWVkiLExMTDoiRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgW3B1a3VsXSBISC5tbSJ9LG1lcmlkaWVtUGFyc2U6L3BhZ2l8dGVuZ2FoYXJpfHBldGFuZ3xtYWxhbS8sbWVyaWRpZW1Ib3VyOmZ1bmN0aW9uKGUsYSl7cmV0dXJuIDEyPT09ZSYmKGU9MCksInBhZ2kiPT09YT9lOiJ0ZW5nYWhhcmkiPT09YT9lPj0xMT9lOmUrMTI6InBldGFuZyI9PT1hfHwibWFsYW0iPT09YT9lKzEyOnZvaWQgMH0sbWVyaWRpZW06ZnVuY3Rpb24oZSxhLHQpe3JldHVybiBlPDExPyJwYWdpIjplPDE1PyJ0ZW5nYWhhcmkiOmU8MTk/InBldGFuZyI6Im1hbGFtIn0sY2FsZW5kYXI6e3NhbWVEYXk6IltIYXJpIGluaSBwdWt1bF0gTFQiLG5leHREYXk6IltFc29rIHB1a3VsXSBMVCIsbmV4dFdlZWs6ImRkZGQgW3B1a3VsXSBMVCIsbGFzdERheToiW0tlbG1hcmluIHB1a3VsXSBMVCIsbGFzdFdlZWs6ImRkZGQgW2xlcGFzIHB1a3VsXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiZGFsYW0gJXMiLHBhc3Q6IiVzIHlhbmcgbGVwYXMiLHM6ImJlYmVyYXBhIHNhYXQiLG06InNlbWluaXQiLG1tOiIlZCBtaW5pdCIsaDoic2VqYW0iLGhoOiIlZCBqYW0iLGQ6InNlaGFyaSIsZGQ6IiVkIGhhcmkiLE06InNlYnVsYW4iLE1NOiIlZCBidWxhbiIseToic2V0YWh1biIseXk6IiVkIHRhaHVuIn0sd2Vlazp7ZG93OjEsZG95Ojd9fSk7cmV0dXJuIGV9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgibXMiLCJtcyIse2Nsb3NlVGV4dDoiVHV0dXAiLHByZXZUZXh0OiImI3gzQztTZWJlbHVtIixuZXh0VGV4dDoiU2VsZXBhcyYjeDNFOyIsY3VycmVudFRleHQ6ImhhcmkgaW5pIixtb250aE5hbWVzOlsiSmFudWFyaSIsIkZlYnJ1YXJpIiwiTWFjIiwiQXByaWwiLCJNZWkiLCJKdW4iLCJKdWxhaSIsIk9nb3MiLCJTZXB0ZW1iZXIiLCJPa3RvYmVyIiwiTm92ZW1iZXIiLCJEaXNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hYyIsIkFwciIsIk1laSIsIkp1biIsIkp1bCIsIk9nbyIsIlNlcCIsIk9rdCIsIk5vdiIsIkRpcyJdLGRheU5hbWVzOlsiQWhhZCIsIklzbmluIiwiU2VsYXNhIiwiUmFidSIsIktoYW1pcyIsIkp1bWFhdCIsIlNhYnR1Il0sZGF5TmFtZXNTaG9ydDpbIkFoYSIsIklzbiIsIlNlbCIsIlJhYiIsImtoYSIsIkp1bSIsIlNhYiJdLGRheU5hbWVzTWluOlsiQWgiLCJJcyIsIlNlIiwiUmEiLCJLaCIsIkp1IiwiU2EiXSx3ZWVrSGVhZGVyOiJNZyIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjAsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoIm1zIix7YnV0dG9uVGV4dDp7bW9udGg6IkJ1bGFuIix3ZWVrOiJNaW5nZ3UiLGRheToiSGFyaSIsbGlzdDoiQWdlbmRhIn0sYWxsRGF5VGV4dDoiU2VwYW5qYW5nIGhhcmkiLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGUpe3JldHVybiJtYXNpaCBhZGEgIitlKyIgYWNhcmEifSxub0V2ZW50c01lc3NhZ2U6IlRpYWRhIHBlcmlzdGl3YSB1bnR1ayBkaXBhcGFya2FuIn0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/nb.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsYSl7IWZ1bmN0aW9uKCl7dmFyIGU9YS5kZWZpbmVMb2NhbGUoIm5iIix7bW9udGhzOiJqYW51YXJfZmVicnVhcl9tYXJzX2FwcmlsX21haV9qdW5pX2p1bGlfYXVndXN0X3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2Rlc2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW4uX2ZlYi5fbWFyc19hcHJpbF9tYWlfanVuaV9qdWxpX2F1Zy5fc2VwLl9va3QuX25vdi5fZGVzLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJzw7huZGFnX21hbmRhZ190aXJzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sw7hyZGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InPDuC5fbWEuX3RpLl9vbi5fdG8uX2ZyLl9sw7guIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJzw7hfbWFfdGlfb25fdG9fZnJfbMO4Ii5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBba2wuXSBISDptbSIsTExMTDoiZGRkZCBELiBNTU1NIFlZWVkgW2tsLl0gSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2kgZGFnIGtsLl0gTFQiLG5leHREYXk6IltpIG1vcmdlbiBrbC5dIExUIixuZXh0V2VlazoiZGRkZCBba2wuXSBMVCIsbGFzdERheToiW2kgZ8OlciBrbC5dIExUIixsYXN0V2VlazoiW2ZvcnJpZ2VdIGRkZGQgW2tsLl0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im9tICVzIixwYXN0OiIlcyBzaWRlbiIsczoibm9lbiBzZWt1bmRlciIsbToiZXR0IG1pbnV0dCIsbW06IiVkIG1pbnV0dGVyIixoOiJlbiB0aW1lIixoaDoiJWQgdGltZXIiLGQ6ImVuIGRhZyIsZGQ6IiVkIGRhZ2VyIixNOiJlbiBtw6VuZWQiLE1NOiIlZCBtw6VuZWRlciIseToiZXR0IMOlciIseXk6IiVkIMOlciJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo0fX0pO3JldHVybiBlfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoIm5iIiwibmIiLHtjbG9zZVRleHQ6Ikx1a2siLHByZXZUZXh0OiImI3hBQjtGb3JyaWdlIixuZXh0VGV4dDoiTmVzdGUmI3hCQjsiLGN1cnJlbnRUZXh0OiJJIGRhZyIsbW9udGhOYW1lczpbImphbnVhciIsImZlYnJ1YXIiLCJtYXJzIiwiYXByaWwiLCJtYWkiLCJqdW5pIiwianVsaSIsImF1Z3VzdCIsInNlcHRlbWJlciIsIm9rdG9iZXIiLCJub3ZlbWJlciIsImRlc2VtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiamFuIiwiZmViIiwibWFyIiwiYXByIiwibWFpIiwianVuIiwianVsIiwiYXVnIiwic2VwIiwib2t0Iiwibm92IiwiZGVzIl0sZGF5TmFtZXNTaG9ydDpbInPDuG4iLCJtYW4iLCJ0aXIiLCJvbnMiLCJ0b3IiLCJmcmUiLCJsw7hyIl0sZGF5TmFtZXM6WyJzw7huZGFnIiwibWFuZGFnIiwidGlyc2RhZyIsIm9uc2RhZyIsInRvcnNkYWciLCJmcmVkYWciLCJsw7hyZGFnIl0sZGF5TmFtZXNNaW46WyJzw7giLCJtYSIsInRpIiwib24iLCJ0byIsImZyIiwibMO4Il0sd2Vla0hlYWRlcjoiVWtlIixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgibmIiLHtidXR0b25UZXh0Onttb250aDoiTcOlbmVkIix3ZWVrOiJVa2UiLGRheToiRGFnIixsaXN0OiJBZ2VuZGEifSxhbGxEYXlUZXh0OiJIZWxlIGRhZ2VuIixldmVudExpbWl0VGV4dDoidGlsIixub0V2ZW50c01lc3NhZ2U6IkluZ2VuIGhlbmRlbHNlciDDpSB2aXNlIn0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/nl-be.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsYSl7IWZ1bmN0aW9uKCl7dmFyIGU9Imphbi5fZmViLl9tcnQuX2Fwci5fbWVpX2p1bi5fanVsLl9hdWcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4iLnNwbGl0KCJfIiksbj0iamFuX2ZlYl9tcnRfYXByX21laV9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZWMiLnNwbGl0KCJfIiksdD1bL15qYW4vaSwvXmZlYi9pLC9ebWFhcnR8bXJ0Lj8kL2ksL15hcHIvaSwvXm1laSQvaSwvXmp1bltpLl0/JC9pLC9eanVsW2kuXT8kL2ksL15hdWcvaSwvXnNlcC9pLC9eb2t0L2ksL15ub3YvaSwvXmRlYy9pXSxyPS9eKGphbnVhcml8ZmVicnVhcml8bWFhcnR8YXByaWx8bWVpfGFwcmlsfGp1W25sXWl8YXVndXN0dXN8c2VwdGVtYmVyfG9rdG9iZXJ8bm92ZW1iZXJ8ZGVjZW1iZXJ8amFuXC4/fGZlYlwuP3xtcnRcLj98YXByXC4/fGp1W25sXVwuP3xhdWdcLj98c2VwXC4/fG9rdFwuP3xub3ZcLj98ZGVjXC4/KS9pLG89YS5kZWZpbmVMb2NhbGUoIm5sLWJlIix7bW9udGhzOiJqYW51YXJpX2ZlYnJ1YXJpX21hYXJ0X2FwcmlsX21laV9qdW5pX2p1bGlfYXVndXN0dXNfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ZnVuY3Rpb24oYSx0KXtyZXR1cm4vLU1NTS0vLnRlc3QodCk/blthLm1vbnRoKCldOmVbYS5tb250aCgpXX0sbW9udGhzUmVnZXg6cixtb250aHNTaG9ydFJlZ2V4OnIsbW9udGhzU3RyaWN0UmVnZXg6L14oamFudWFyaXxmZWJydWFyaXxtYWFydHxtZWl8anVbbmxdaXxhcHJpbHxhdWd1c3R1c3xzZXB0ZW1iZXJ8b2t0b2Jlcnxub3ZlbWJlcnxkZWNlbWJlcikvaSxtb250aHNTaG9ydFN0cmljdFJlZ2V4Oi9eKGphblwuP3xmZWJcLj98bXJ0XC4/fGFwclwuP3xtZWl8anVbbmxdXC4/fGF1Z1wuP3xzZXBcLj98b2t0XC4/fG5vdlwuP3xkZWNcLj8pL2ksbW9udGhzUGFyc2U6dCxsb25nTW9udGhzUGFyc2U6dCxzaG9ydE1vbnRoc1BhcnNlOnQsd2Vla2RheXM6InpvbmRhZ19tYWFuZGFnX2RpbnNkYWdfd29lbnNkYWdfZG9uZGVyZGFnX3ZyaWpkYWdfemF0ZXJkYWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiem8uX21hLl9kaS5fd28uX2RvLl92ci5femEuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJab19NYV9EaV9Xb19Eb19Wcl9aYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQvTU0vWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6Ilt2YW5kYWFnIG9tXSBMVCIsbmV4dERheToiW21vcmdlbiBvbV0gTFQiLG5leHRXZWVrOiJkZGRkIFtvbV0gTFQiLGxhc3REYXk6IltnaXN0ZXJlbiBvbV0gTFQiLGxhc3RXZWVrOiJbYWZnZWxvcGVuXSBkZGRkIFtvbV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im92ZXIgJXMiLHBhc3Q6IiVzIGdlbGVkZW4iLHM6ImVlbiBwYWFyIHNlY29uZGVuIixtOiLDqcOpbiBtaW51dXQiLG1tOiIlZCBtaW51dGVuIixoOiLDqcOpbiB1dXIiLGhoOiIlZCB1dXIiLGQ6IsOpw6luIGRhZyIsZGQ6IiVkIGRhZ2VuIixNOiLDqcOpbiBtYWFuZCIsTU06IiVkIG1hYW5kZW4iLHk6IsOpw6luIGphYXIiLHl5OiIlZCBqYWFyIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0ZXxkZSkvLG9yZGluYWw6ZnVuY3Rpb24oZSl7cmV0dXJuIGUrKDE9PT1lfHw4PT09ZXx8ZT49MjA/InN0ZSI6ImRlIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pO3JldHVybiBvfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoIm5sLWJlIiwibmwtQkUiLHtjbG9zZVRleHQ6IlNsdWl0ZW4iLHByZXZUZXh0OiLihpAiLG5leHRUZXh0OiLihpIiLGN1cnJlbnRUZXh0OiJWYW5kYWFnIixtb250aE5hbWVzOlsiamFudWFyaSIsImZlYnJ1YXJpIiwibWFhcnQiLCJhcHJpbCIsIm1laSIsImp1bmkiLCJqdWxpIiwiYXVndXN0dXMiLCJzZXB0ZW1iZXIiLCJva3RvYmVyIiwibm92ZW1iZXIiLCJkZWNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbImphbiIsImZlYiIsIm1ydCIsImFwciIsIm1laSIsImp1biIsImp1bCIsImF1ZyIsInNlcCIsIm9rdCIsIm5vdiIsImRlYyJdLGRheU5hbWVzOlsiem9uZGFnIiwibWFhbmRhZyIsImRpbnNkYWciLCJ3b2Vuc2RhZyIsImRvbmRlcmRhZyIsInZyaWpkYWciLCJ6YXRlcmRhZyJdLGRheU5hbWVzU2hvcnQ6WyJ6b24iLCJtYWEiLCJkaW4iLCJ3b2UiLCJkb24iLCJ2cmkiLCJ6YXQiXSxkYXlOYW1lc01pbjpbInpvIiwibWEiLCJkaSIsIndvIiwiZG8iLCJ2ciIsInphIl0sd2Vla0hlYWRlcjoiV2siLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJubC1iZSIse2J1dHRvblRleHQ6e21vbnRoOiJNYWFuZCIsd2VlazoiV2VlayIsZGF5OiJEYWciLGxpc3Q6IkFnZW5kYSJ9LGFsbERheVRleHQ6IkhlbGUgZGFnIixldmVudExpbWl0VGV4dDoiZXh0cmEiLG5vRXZlbnRzTWVzc2FnZToiR2VlbiBldmVuZW1lbnRlbiBvbSB0ZSBsYXRlbiB6aWVuIn0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/nl.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsYSl7IWZ1bmN0aW9uKCl7dmFyIGU9Imphbi5fZmViLl9tcnQuX2Fwci5fbWVpX2p1bi5fanVsLl9hdWcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4iLnNwbGl0KCJfIiksbj0iamFuX2ZlYl9tcnRfYXByX21laV9qdW5fanVsX2F1Z19zZXBfb2t0X25vdl9kZWMiLnNwbGl0KCJfIiksdD1bL15qYW4vaSwvXmZlYi9pLC9ebWFhcnR8bXJ0Lj8kL2ksL15hcHIvaSwvXm1laSQvaSwvXmp1bltpLl0/JC9pLC9eanVsW2kuXT8kL2ksL15hdWcvaSwvXnNlcC9pLC9eb2t0L2ksL15ub3YvaSwvXmRlYy9pXSxyPS9eKGphbnVhcml8ZmVicnVhcml8bWFhcnR8YXByaWx8bWVpfGFwcmlsfGp1W25sXWl8YXVndXN0dXN8c2VwdGVtYmVyfG9rdG9iZXJ8bm92ZW1iZXJ8ZGVjZW1iZXJ8amFuXC4/fGZlYlwuP3xtcnRcLj98YXByXC4/fGp1W25sXVwuP3xhdWdcLj98c2VwXC4/fG9rdFwuP3xub3ZcLj98ZGVjXC4/KS9pLG89YS5kZWZpbmVMb2NhbGUoIm5sIix7bW9udGhzOiJqYW51YXJpX2ZlYnJ1YXJpX21hYXJ0X2FwcmlsX21laV9qdW5pX2p1bGlfYXVndXN0dXNfc2VwdGVtYmVyX29rdG9iZXJfbm92ZW1iZXJfZGVjZW1iZXIiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ZnVuY3Rpb24oYSx0KXtyZXR1cm4vLU1NTS0vLnRlc3QodCk/blthLm1vbnRoKCldOmVbYS5tb250aCgpXX0sbW9udGhzUmVnZXg6cixtb250aHNTaG9ydFJlZ2V4OnIsbW9udGhzU3RyaWN0UmVnZXg6L14oamFudWFyaXxmZWJydWFyaXxtYWFydHxtZWl8anVbbmxdaXxhcHJpbHxhdWd1c3R1c3xzZXB0ZW1iZXJ8b2t0b2Jlcnxub3ZlbWJlcnxkZWNlbWJlcikvaSxtb250aHNTaG9ydFN0cmljdFJlZ2V4Oi9eKGphblwuP3xmZWJcLj98bXJ0XC4/fGFwclwuP3xtZWl8anVbbmxdXC4/fGF1Z1wuP3xzZXBcLj98b2t0XC4/fG5vdlwuP3xkZWNcLj8pL2ksbW9udGhzUGFyc2U6dCxsb25nTW9udGhzUGFyc2U6dCxzaG9ydE1vbnRoc1BhcnNlOnQsd2Vla2RheXM6InpvbmRhZ19tYWFuZGFnX2RpbnNkYWdfd29lbnNkYWdfZG9uZGVyZGFnX3ZyaWpkYWdfemF0ZXJkYWciLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiem8uX21hLl9kaS5fd28uX2RvLl92ci5femEuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJab19NYV9EaV9Xb19Eb19Wcl9aYSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQtTU0tWVlZWSIsTEw6IkQgTU1NTSBZWVlZIixMTEw6IkQgTU1NTSBZWVlZIEhIOm1tIixMTExMOiJkZGRkIEQgTU1NTSBZWVlZIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6Ilt2YW5kYWFnIG9tXSBMVCIsbmV4dERheToiW21vcmdlbiBvbV0gTFQiLG5leHRXZWVrOiJkZGRkIFtvbV0gTFQiLGxhc3REYXk6IltnaXN0ZXJlbiBvbV0gTFQiLGxhc3RXZWVrOiJbYWZnZWxvcGVuXSBkZGRkIFtvbV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6Im92ZXIgJXMiLHBhc3Q6IiVzIGdlbGVkZW4iLHM6ImVlbiBwYWFyIHNlY29uZGVuIixtOiLDqcOpbiBtaW51dXQiLG1tOiIlZCBtaW51dGVuIixoOiLDqcOpbiB1dXIiLGhoOiIlZCB1dXIiLGQ6IsOpw6luIGRhZyIsZGQ6IiVkIGRhZ2VuIixNOiLDqcOpbiBtYWFuZCIsTU06IiVkIG1hYW5kZW4iLHk6IsOpw6luIGphYXIiLHl5OiIlZCBqYWFyIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHN0ZXxkZSkvLG9yZGluYWw6ZnVuY3Rpb24oZSl7cmV0dXJuIGUrKDE9PT1lfHw4PT09ZXx8ZT49MjA/InN0ZSI6ImRlIil9LHdlZWs6e2RvdzoxLGRveTo0fX0pO3JldHVybiBvfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoIm5sIiwibmwiLHtjbG9zZVRleHQ6IlNsdWl0ZW4iLHByZXZUZXh0OiLihpAiLG5leHRUZXh0OiLihpIiLGN1cnJlbnRUZXh0OiJWYW5kYWFnIixtb250aE5hbWVzOlsiamFudWFyaSIsImZlYnJ1YXJpIiwibWFhcnQiLCJhcHJpbCIsIm1laSIsImp1bmkiLCJqdWxpIiwiYXVndXN0dXMiLCJzZXB0ZW1iZXIiLCJva3RvYmVyIiwibm92ZW1iZXIiLCJkZWNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbImphbiIsImZlYiIsIm1ydCIsImFwciIsIm1laSIsImp1biIsImp1bCIsImF1ZyIsInNlcCIsIm9rdCIsIm5vdiIsImRlYyJdLGRheU5hbWVzOlsiem9uZGFnIiwibWFhbmRhZyIsImRpbnNkYWciLCJ3b2Vuc2RhZyIsImRvbmRlcmRhZyIsInZyaWpkYWciLCJ6YXRlcmRhZyJdLGRheU5hbWVzU2hvcnQ6WyJ6b24iLCJtYWEiLCJkaW4iLCJ3b2UiLCJkb24iLCJ2cmkiLCJ6YXQiXSxkYXlOYW1lc01pbjpbInpvIiwibWEiLCJkaSIsIndvIiwiZG8iLCJ2ciIsInphIl0sd2Vla0hlYWRlcjoiV2siLGRhdGVGb3JtYXQ6ImRkLW1tLXl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJubCIse2J1dHRvblRleHQ6e21vbnRoOiJNYWFuZCIsd2VlazoiV2VlayIsZGF5OiJEYWciLGxpc3Q6IkFnZW5kYSJ9LGFsbERheVRleHQ6IkhlbGUgZGFnIixldmVudExpbWl0VGV4dDoiZXh0cmEiLG5vRXZlbnRzTWVzc2FnZToiR2VlbiBldmVuZW1lbnRlbiBvbSB0ZSBsYXRlbiB6aWVuIn0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/nn.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsYSl7IWZ1bmN0aW9uKCl7dmFyIGU9YS5kZWZpbmVMb2NhbGUoIm5uIix7bW9udGhzOiJqYW51YXJfZmVicnVhcl9tYXJzX2FwcmlsX21haV9qdW5pX2p1bGlfYXVndXN0X3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2Rlc2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW5fZmViX21hcl9hcHJfbWFpX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlcyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoic3VuZGFnX23DpW5kYWdfdHlzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sYXVyZGFnIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6InN1bl9tw6VuX3R5c19vbnNfdG9yX2ZyZV9sYXUiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46InN1X23DpV90eV9vbl90b19mcl9sw7giLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgW2tsLl0gSDptbSIsTExMTDoiZGRkZCBELiBNTU1NIFlZWVkgW2tsLl0gSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0kgZGFnIGtsb2trYV0gTFQiLG5leHREYXk6IltJIG1vcmdvbiBrbG9ra2FdIExUIixuZXh0V2VlazoiZGRkZCBba2xva2thXSBMVCIsbGFzdERheToiW0kgZ8OlciBrbG9ra2FdIExUIixsYXN0V2VlazoiW0bDuHJlZ8OlYW5kZV0gZGRkZCBba2xva2thXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToib20gJXMiLHBhc3Q6IiVzIHNpZGFuIixzOiJub2tyZSBzZWt1bmQiLG06ImVpdCBtaW51dHQiLG1tOiIlZCBtaW51dHQiLGg6ImVpbiB0aW1lIixoaDoiJWQgdGltYXIiLGQ6ImVpbiBkYWciLGRkOiIlZCBkYWdhciIsTToiZWluIG3DpW5hZCIsTU06IiVkIG3DpW5hZGVyIix5OiJlaXQgw6VyIix5eToiJWQgw6VyIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSk7cmV0dXJuIGV9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgibm4iLCJubiIse2Nsb3NlVGV4dDoiTHVrayIscHJldlRleHQ6IiYjeEFCO0bDuHJyZSIsbmV4dFRleHQ6Ik5lc3RlJiN4QkI7IixjdXJyZW50VGV4dDoiSSBkYWciLG1vbnRoTmFtZXM6WyJqYW51YXIiLCJmZWJydWFyIiwibWFycyIsImFwcmlsIiwibWFpIiwianVuaSIsImp1bGkiLCJhdWd1c3QiLCJzZXB0ZW1iZXIiLCJva3RvYmVyIiwibm92ZW1iZXIiLCJkZXNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbImphbiIsImZlYiIsIm1hciIsImFwciIsIm1haSIsImp1biIsImp1bCIsImF1ZyIsInNlcCIsIm9rdCIsIm5vdiIsImRlcyJdLGRheU5hbWVzU2hvcnQ6WyJzdW4iLCJtw6VuIiwidHlzIiwib25zIiwidG9yIiwiZnJlIiwibGF1Il0sZGF5TmFtZXM6WyJzdW5kYWciLCJtw6VuZGFnIiwidHlzZGFnIiwib25zZGFnIiwidG9yc2RhZyIsImZyZWRhZyIsImxhdXJkYWciXSxkYXlOYW1lc01pbjpbInN1IiwibcOlIiwidHkiLCJvbiIsInRvIiwiZnIiLCJsYSJdLHdlZWtIZWFkZXI6IlZla2UiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJubiIse2J1dHRvblRleHQ6e21vbnRoOiJNw6VuYWQiLHdlZWs6IlZla2UiLGRheToiRGFnIixsaXN0OiJBZ2VuZGEifSxhbGxEYXlUZXh0OiJIZWlsZSBkYWdlbiIsZXZlbnRMaW1pdFRleHQ6InRpbCIsbm9FdmVudHNNZXNzYWdlOiJJbmdlbiBoZW5kZWxzZXIgw6UgdmlzZSJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/pl.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4gZSUxMDw1JiZlJTEwPjEmJn5+KGUvMTApJTEwIT09MX1mdW5jdGlvbiBpKHQsaSxhKXt2YXIgcj10KyIgIjtzd2l0Y2goYSl7Y2FzZSJtIjpyZXR1cm4gaT8ibWludXRhIjoibWludXTEmSI7Y2FzZSJtbSI6cmV0dXJuIHIrKGUodCk/Im1pbnV0eSI6Im1pbnV0Iik7Y2FzZSJoIjpyZXR1cm4gaT8iZ29kemluYSI6ImdvZHppbsSZIjtjYXNlImhoIjpyZXR1cm4gcisoZSh0KT8iZ29kemlueSI6ImdvZHppbiIpO2Nhc2UiTU0iOnJldHVybiByKyhlKHQpPyJtaWVzacSFY2UiOiJtaWVzacSZY3kiKTtjYXNlInl5IjpyZXR1cm4gcisoZSh0KT8ibGF0YSI6ImxhdCIpfX12YXIgYT0ic3R5Y3plxYRfbHV0eV9tYXJ6ZWNfa3dpZWNpZcWEX21hal9jemVyd2llY19saXBpZWNfc2llcnBpZcWEX3dyemVzaWXFhF9wYcW6ZHppZXJuaWtfbGlzdG9wYWRfZ3J1ZHppZcWEIi5zcGxpdCgiXyIpLHI9InN0eWN6bmlhX2x1dGVnb19tYXJjYV9rd2lldG5pYV9tYWphX2N6ZXJ3Y2FfbGlwY2Ffc2llcnBuaWFfd3J6ZcWbbmlhX3Bhxbpkemllcm5pa2FfbGlzdG9wYWRhX2dydWRuaWEiLnNwbGl0KCJfIiksbj10LmRlZmluZUxvY2FsZSgicGwiLHttb250aHM6ZnVuY3Rpb24oZSx0KXtyZXR1cm4iIj09PXQ/IigiK3JbZS5tb250aCgpXSsifCIrYVtlLm1vbnRoKCldKyIpIjovRCBNTU1NLy50ZXN0KHQpP3JbZS5tb250aCgpXTphW2UubW9udGgoKV19LG1vbnRoc1Nob3J0OiJzdHlfbHV0X21hcl9rd2lfbWFqX2N6ZV9saXBfc2llX3dyel9wYcW6X2xpc19ncnUiLnNwbGl0KCJfIiksd2Vla2RheXM6Im5pZWR6aWVsYV9wb25pZWR6aWHFgmVrX3d0b3Jla1/Fm3JvZGFfY3p3YXJ0ZWtfcGnEhXRla19zb2JvdGEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoibmR6X3Bvbl93dF/Fm3JfY3p3X3B0X3NvYiIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiTmRfUG5fV3RfxZpyX0N6X1B0X1NvIi5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0R6acWbIG9dIExUIixuZXh0RGF5OiJbSnV0cm8gb10gTFQiLG5leHRXZWVrOiJbV10gZGRkZCBbb10gTFQiLGxhc3REYXk6IltXY3pvcmFqIG9dIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIltXIHplc3rFgsSFIG5pZWR6aWVsxJkgb10gTFQiO2Nhc2UgMzpyZXR1cm4iW1cgemVzesWCxIUgxZtyb2TEmSBvXSBMVCI7Y2FzZSA2OnJldHVybiJbVyB6ZXN6xYLEhSBzb2JvdMSZIG9dIExUIjtkZWZhdWx0OnJldHVybiJbVyB6ZXN6xYJ5XSBkZGRkIFtvXSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJ6YSAlcyIscGFzdDoiJXMgdGVtdSIsczoia2lsa2Egc2VrdW5kIixtOmksbW06aSxoOmksaGg6aSxkOiIxIGR6aWXFhCIsZGQ6IiVkIGRuaSIsTToibWllc2nEhWMiLE1NOmkseToicm9rIix5eTppfSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6NH19KTtyZXR1cm4gbn0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJwbCIsInBsIix7Y2xvc2VUZXh0OiJaYW1rbmlqIixwcmV2VGV4dDoiJiN4M0M7UG9wcnplZG5pIixuZXh0VGV4dDoiTmFzdMSZcG55JiN4M0U7IixjdXJyZW50VGV4dDoiRHppxZsiLG1vbnRoTmFtZXM6WyJTdHljemXFhCIsIkx1dHkiLCJNYXJ6ZWMiLCJLd2llY2llxYQiLCJNYWoiLCJDemVyd2llYyIsIkxpcGllYyIsIlNpZXJwaWXFhCIsIldyemVzaWXFhCIsIlBhxbpkemllcm5payIsIkxpc3RvcGFkIiwiR3J1ZHppZcWEIl0sbW9udGhOYW1lc1Nob3J0OlsiU3R5IiwiTHUiLCJNYXIiLCJLdyIsIk1haiIsIkN6ZSIsIkxpcCIsIlNpZSIsIldyeiIsIlBhIiwiTGlzIiwiR3J1Il0sZGF5TmFtZXM6WyJOaWVkemllbGEiLCJQb25pZWR6aWHFgmVrIiwiV3RvcmVrIiwixZpyb2RhIiwiQ3p3YXJ0ZWsiLCJQacSFdGVrIiwiU29ib3RhIl0sZGF5TmFtZXNTaG9ydDpbIk5pZSIsIlBuIiwiV3QiLCLFmnIiLCJDenciLCJQdCIsIlNvIl0sZGF5TmFtZXNNaW46WyJOIiwiUG4iLCJXdCIsIsWaciIsIkN6IiwiUHQiLCJTbyJdLHdlZWtIZWFkZXI6IlR5ZHoiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJwbCIse2J1dHRvblRleHQ6e21vbnRoOiJNaWVzacSFYyIsd2VlazoiVHlkemllxYQiLGRheToiRHppZcWEIixsaXN0OiJQbGFuIGRuaWEifSxhbGxEYXlUZXh0OiJDYcWCeSBkemllxYQiLGV2ZW50TGltaXRUZXh0OiJ3acSZY2VqIixub0V2ZW50c01lc3NhZ2U6IkJyYWsgd3lkYXJ6ZcWEIGRvIHd5xZt3aWV0bGVuaWEifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/pt-br.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsYSl7IWZ1bmN0aW9uKCl7dmFyIGU9YS5kZWZpbmVMb2NhbGUoInB0LWJyIix7bW9udGhzOiJKYW5laXJvX0ZldmVyZWlyb19NYXLDp29fQWJyaWxfTWFpb19KdW5ob19KdWxob19BZ29zdG9fU2V0ZW1icm9fT3V0dWJyb19Ob3ZlbWJyb19EZXplbWJybyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0Zldl9NYXJfQWJyX01haV9KdW5fSnVsX0Fnb19TZXRfT3V0X05vdl9EZXoiLnNwbGl0KCJfIiksd2Vla2RheXM6IkRvbWluZ29fU2VndW5kYS1mZWlyYV9UZXLDp2EtZmVpcmFfUXVhcnRhLWZlaXJhX1F1aW50YS1mZWlyYV9TZXh0YS1mZWlyYV9Tw6FiYWRvIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkRvbV9TZWdfVGVyX1F1YV9RdWlfU2V4X1PDoWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkRvbV8ywqpfM8KqXzTCql81wqpfNsKqX1PDoWIiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkiLExMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIFvDoHNdIEhIOm1tIixMTExMOiJkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgW8Ogc10gSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0hvamUgw6BzXSBMVCIsbmV4dERheToiW0FtYW5ow6Mgw6BzXSBMVCIsbmV4dFdlZWs6ImRkZGQgW8Ogc10gTFQiLGxhc3REYXk6IltPbnRlbSDDoHNdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5kYXkoKXx8Nj09PXRoaXMuZGF5KCk/IlvDmmx0aW1vXSBkZGRkIFvDoHNdIExUIjoiW8OabHRpbWFdIGRkZGQgW8Ogc10gTFQifSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJlbSAlcyIscGFzdDoiJXMgYXRyw6FzIixzOiJwb3Vjb3Mgc2VndW5kb3MiLG06InVtIG1pbnV0byIsbW06IiVkIG1pbnV0b3MiLGg6InVtYSBob3JhIixoaDoiJWQgaG9yYXMiLGQ6InVtIGRpYSIsZGQ6IiVkIGRpYXMiLE06InVtIG3DqnMiLE1NOiIlZCBtZXNlcyIseToidW0gYW5vIix5eToiJWQgYW5vcyJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfcK6LyxvcmRpbmFsOiIlZMK6In0pO3JldHVybiBlfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoInB0LWJyIiwicHQtQlIiLHtjbG9zZVRleHQ6IkZlY2hhciIscHJldlRleHQ6IiYjeDNDO0FudGVyaW9yIixuZXh0VGV4dDoiUHLDs3hpbW8mI3gzRTsiLGN1cnJlbnRUZXh0OiJIb2plIixtb250aE5hbWVzOlsiSmFuZWlybyIsIkZldmVyZWlybyIsIk1hcsOnbyIsIkFicmlsIiwiTWFpbyIsIkp1bmhvIiwiSnVsaG8iLCJBZ29zdG8iLCJTZXRlbWJybyIsIk91dHVicm8iLCJOb3ZlbWJybyIsIkRlemVtYnJvIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmV2IiwiTWFyIiwiQWJyIiwiTWFpIiwiSnVuIiwiSnVsIiwiQWdvIiwiU2V0IiwiT3V0IiwiTm92IiwiRGV6Il0sZGF5TmFtZXM6WyJEb21pbmdvIiwiU2VndW5kYS1mZWlyYSIsIlRlcsOnYS1mZWlyYSIsIlF1YXJ0YS1mZWlyYSIsIlF1aW50YS1mZWlyYSIsIlNleHRhLWZlaXJhIiwiU8OhYmFkbyJdLGRheU5hbWVzU2hvcnQ6WyJEb20iLCJTZWciLCJUZXIiLCJRdWEiLCJRdWkiLCJTZXgiLCJTw6FiIl0sZGF5TmFtZXNNaW46WyJEb20iLCJTZWciLCJUZXIiLCJRdWEiLCJRdWkiLCJTZXgiLCJTw6FiIl0sd2Vla0hlYWRlcjoiU20iLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheTowLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJwdC1iciIse2J1dHRvblRleHQ6e21vbnRoOiJNw6pzIix3ZWVrOiJTZW1hbmEiLGRheToiRGlhIixsaXN0OiJDb21wcm9taXNzb3MifSxhbGxEYXlUZXh0OiJkaWEgaW50ZWlybyIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIm1haXMgKyIrZX0sbm9FdmVudHNNZXNzYWdlOiJOw6NvIGjDoSBldmVudG9zIHBhcmEgbW9zdHJhciJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/pt.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsYSl7IWZ1bmN0aW9uKCl7dmFyIGU9YS5kZWZpbmVMb2NhbGUoInB0Iix7bW9udGhzOiJKYW5laXJvX0ZldmVyZWlyb19NYXLDp29fQWJyaWxfTWFpb19KdW5ob19KdWxob19BZ29zdG9fU2V0ZW1icm9fT3V0dWJyb19Ob3ZlbWJyb19EZXplbWJybyIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiSmFuX0Zldl9NYXJfQWJyX01haV9KdW5fSnVsX0Fnb19TZXRfT3V0X05vdl9EZXoiLnNwbGl0KCJfIiksd2Vla2RheXM6IkRvbWluZ29fU2VndW5kYS1GZWlyYV9UZXLDp2EtRmVpcmFfUXVhcnRhLUZlaXJhX1F1aW50YS1GZWlyYV9TZXh0YS1GZWlyYV9Tw6FiYWRvIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkRvbV9TZWdfVGVyX1F1YV9RdWlfU2V4X1PDoWIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IkRvbV8ywqpfM8KqXzTCql81wqpfNsKqX1PDoWIiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkREL01NL1lZWVkiLExMOiJEIFtkZV0gTU1NTSBbZGVdIFlZWVkiLExMTDoiRCBbZGVdIE1NTU0gW2RlXSBZWVlZIEhIOm1tIixMTExMOiJkZGRkLCBEIFtkZV0gTU1NTSBbZGVdIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW0hvamUgw6BzXSBMVCIsbmV4dERheToiW0FtYW5ow6Mgw6BzXSBMVCIsbmV4dFdlZWs6ImRkZGQgW8Ogc10gTFQiLGxhc3REYXk6IltPbnRlbSDDoHNdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5kYXkoKXx8Nj09PXRoaXMuZGF5KCk/IlvDmmx0aW1vXSBkZGRkIFvDoHNdIExUIjoiW8OabHRpbWFdIGRkZGQgW8Ogc10gTFQifSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiJlbSAlcyIscGFzdDoiaMOhICVzIixzOiJzZWd1bmRvcyIsbToidW0gbWludXRvIixtbToiJWQgbWludXRvcyIsaDoidW1hIGhvcmEiLGhoOiIlZCBob3JhcyIsZDoidW0gZGlhIixkZDoiJWQgZGlhcyIsTToidW0gbcOqcyIsTU06IiVkIG1lc2VzIix5OiJ1bSBhbm8iLHl5OiIlZCBhbm9zIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9wrovLG9yZGluYWw6IiVkwroiLHdlZWs6e2RvdzoxLGRveTo0fX0pO3JldHVybiBlfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoInB0IiwicHQiLHtjbG9zZVRleHQ6IkZlY2hhciIscHJldlRleHQ6IkFudGVyaW9yIixuZXh0VGV4dDoiU2VndWludGUiLGN1cnJlbnRUZXh0OiJIb2plIixtb250aE5hbWVzOlsiSmFuZWlybyIsIkZldmVyZWlybyIsIk1hcsOnbyIsIkFicmlsIiwiTWFpbyIsIkp1bmhvIiwiSnVsaG8iLCJBZ29zdG8iLCJTZXRlbWJybyIsIk91dHVicm8iLCJOb3ZlbWJybyIsIkRlemVtYnJvIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmV2IiwiTWFyIiwiQWJyIiwiTWFpIiwiSnVuIiwiSnVsIiwiQWdvIiwiU2V0IiwiT3V0IiwiTm92IiwiRGV6Il0sZGF5TmFtZXM6WyJEb21pbmdvIiwiU2VndW5kYS1mZWlyYSIsIlRlcsOnYS1mZWlyYSIsIlF1YXJ0YS1mZWlyYSIsIlF1aW50YS1mZWlyYSIsIlNleHRhLWZlaXJhIiwiU8OhYmFkbyJdLGRheU5hbWVzU2hvcnQ6WyJEb20iLCJTZWciLCJUZXIiLCJRdWEiLCJRdWkiLCJTZXgiLCJTw6FiIl0sZGF5TmFtZXNNaW46WyJEb20iLCJTZWciLCJUZXIiLCJRdWEiLCJRdWkiLCJTZXgiLCJTw6FiIl0sd2Vla0hlYWRlcjoiU2VtIixkYXRlRm9ybWF0OiJkZC9tbS95eSIsZmlyc3REYXk6MCxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgicHQiLHtidXR0b25UZXh0Onttb250aDoiTcOqcyIsd2VlazoiU2VtYW5hIixkYXk6IkRpYSIsbGlzdDoiQWdlbmRhIn0sYWxsRGF5VGV4dDoiVG9kbyBvIGRpYSIsZXZlbnRMaW1pdFRleHQ6Im1haXMiLG5vRXZlbnRzTWVzc2FnZToiTsOjbyBow6EgZXZlbnRvcyBwYXJhIG1vc3RyYXIifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/ro.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsaSl7IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLGksdCl7dmFyIGE9e21tOiJtaW51dGUiLGhoOiJvcmUiLGRkOiJ6aWxlIixNTToibHVuaSIseXk6ImFuaSJ9LHI9IiAiO3JldHVybihlJTEwMD49MjB8fGU+PTEwMCYmZSUxMDA9PT0wKSYmKHI9IiBkZSAiKSxlK3IrYVt0XX12YXIgdD1pLmRlZmluZUxvY2FsZSgicm8iLHttb250aHM6ImlhbnVhcmllX2ZlYnJ1YXJpZV9tYXJ0aWVfYXByaWxpZV9tYWlfaXVuaWVfaXVsaWVfYXVndXN0X3NlcHRlbWJyaWVfb2N0b21icmllX25vaWVtYnJpZV9kZWNlbWJyaWUiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6Imlhbi5fZmVici5fbWFydC5fYXByLl9tYWlfaXVuLl9pdWwuX2F1Zy5fc2VwdC5fb2N0Ll9ub3YuX2RlYy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiZHVtaW5pY8SDX2x1bmlfbWFyyJtpX21pZXJjdXJpX2pvaV92aW5lcmlfc8OibWLEg3TEgyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJEdW1fTHVuX01hcl9NaWVfSm9pX1Zpbl9Tw6JtIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJEdV9MdV9NYV9NaV9Kb19WaV9Tw6IiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSBIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlthemkgbGFdIExUIixuZXh0RGF5OiJbbcOiaW5lIGxhXSBMVCIsbmV4dFdlZWs6ImRkZGQgW2xhXSBMVCIsbGFzdERheToiW2llcmkgbGFdIExUIixsYXN0V2VlazoiW2Zvc3RhXSBkZGRkIFtsYV0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6InBlc3RlICVzIixwYXN0OiIlcyDDrm4gdXJtxIMiLHM6ImPDonRldmEgc2VjdW5kZSIsbToidW4gbWludXQiLG1tOmUsaDoibyBvcsSDIixoaDplLGQ6Im8gemkiLGRkOmUsTToibyBsdW7EgyIsTU06ZSx5OiJ1biBhbiIseXk6ZX0sd2Vlazp7ZG93OjEsZG95Ojd9fSk7cmV0dXJuIHR9KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgicm8iLCJybyIse2Nsb3NlVGV4dDoiw45uY2hpZGUiLHByZXZUZXh0OiImI3hBQjsgTHVuYSBwcmVjZWRlbnTEgyIsbmV4dFRleHQ6Ikx1bmEgdXJtxIN0b2FyZSAmI3hCQjsiLGN1cnJlbnRUZXh0OiJBemkiLG1vbnRoTmFtZXM6WyJJYW51YXJpZSIsIkZlYnJ1YXJpZSIsIk1hcnRpZSIsIkFwcmlsaWUiLCJNYWkiLCJJdW5pZSIsIkl1bGllIiwiQXVndXN0IiwiU2VwdGVtYnJpZSIsIk9jdG9tYnJpZSIsIk5vaWVtYnJpZSIsIkRlY2VtYnJpZSJdLG1vbnRoTmFtZXNTaG9ydDpbIklhbiIsIkZlYiIsIk1hciIsIkFwciIsIk1haSIsIkl1biIsIkl1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLGRheU5hbWVzOlsiRHVtaW5pY8SDIiwiTHVuaSIsIk1hcsWjaSIsIk1pZXJjdXJpIiwiSm9pIiwiVmluZXJpIiwiU8OibWLEg3TEgyJdLGRheU5hbWVzU2hvcnQ6WyJEdW0iLCJMdW4iLCJNYXIiLCJNaWUiLCJKb2kiLCJWaW4iLCJTw6JtIl0sZGF5TmFtZXNNaW46WyJEdSIsIkx1IiwiTWEiLCJNaSIsIkpvIiwiVmkiLCJTw6IiXSx3ZWVrSGVhZGVyOiJTxINwdCIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoInJvIix7YnV0dG9uVGV4dDp7cHJldjoicHJlY2VkZW50xIMiLG5leHQ6InVybcSDdG9hcmUiLG1vbnRoOiJMdW7EgyIsd2VlazoiU8SDcHTEg23Dom7EgyIsZGF5OiJaaSIsbGlzdDoiQWdlbmTEgyJ9LGFsbERheVRleHQ6IlRvYXTEgyB6aXVhIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihlKXtyZXR1cm4iK2FsdGUgIitlfSxub0V2ZW50c01lc3NhZ2U6Ik51IGV4aXN0xIMgZXZlbmltZW50ZSBkZSBhZmnImWF0In0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/ru.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3ZhciBkPWUuc3BsaXQoIl8iKTtyZXR1cm4gdCUxMD09PTEmJnQlMTAwIT09MTE/ZFswXTp0JTEwPj0yJiZ0JTEwPD00JiYodCUxMDA8MTB8fHQlMTAwPj0yMCk/ZFsxXTpkWzJdfWZ1bmN0aW9uIGQodCxkLHIpe3ZhciBfPXttbTpkPyLQvNC40L3Rg9GC0LBf0LzQuNC90YPRgtGLX9C80LjQvdGD0YIiOiLQvNC40L3Rg9GC0YNf0LzQuNC90YPRgtGLX9C80LjQvdGD0YIiLGhoOiLRh9Cw0YFf0YfQsNGB0LBf0YfQsNGB0L7QsiIsZGQ6ItC00LXQvdGMX9C00L3Rj1/QtNC90LXQuSIsTU06ItC80LXRgdGP0YZf0LzQtdGB0Y/RhtCwX9C80LXRgdGP0YbQtdCyIix5eToi0LPQvtC0X9Cz0L7QtNCwX9C70LXRgiJ9O3JldHVybiJtIj09PXI/ZD8i0LzQuNC90YPRgtCwIjoi0LzQuNC90YPRgtGDIjp0KyIgIitlKF9bcl0sK3QpfXZhciByPVsvXtGP0L3Qsi9pLC9e0YTQtdCyL2ksL17QvNCw0YAvaSwvXtCw0L/RgC9pLC9e0LzQsFvQudGPXS9pLC9e0LjRjtC9L2ksL17QuNGO0LsvaSwvXtCw0LLQsy9pLC9e0YHQtdC9L2ksL17QvtC60YIvaSwvXtC90L7Rjy9pLC9e0LTQtdC6L2ldLF89dC5kZWZpbmVMb2NhbGUoInJ1Iix7bW9udGhzOntmb3JtYXQ6ItGP0L3QstCw0YDRj1/RhNC10LLRgNCw0LvRj1/QvNCw0YDRgtCwX9Cw0L/RgNC10LvRj1/QvNCw0Y9f0LjRjtC90Y9f0LjRjtC70Y9f0LDQstCz0YPRgdGC0LBf0YHQtdC90YLRj9Cx0YDRj1/QvtC60YLRj9Cx0YDRj1/QvdC+0Y/QsdGA0Y9f0LTQtdC60LDQsdGA0Y8iLnNwbGl0KCJfIiksc3RhbmRhbG9uZToi0Y/QvdCy0LDRgNGMX9GE0LXQstGA0LDQu9GMX9C80LDRgNGCX9Cw0L/RgNC10LvRjF/QvNCw0Llf0LjRjtC90Yxf0LjRjtC70Yxf0LDQstCz0YPRgdGCX9GB0LXQvdGC0Y/QsdGA0Yxf0L7QutGC0Y/QsdGA0Yxf0L3QvtGP0LHRgNGMX9C00LXQutCw0LHRgNGMIi5zcGxpdCgiXyIpfSxtb250aHNTaG9ydDp7Zm9ybWF0OiLRj9C90LIuX9GE0LXQstGALl/QvNCw0YAuX9Cw0L/RgC5f0LzQsNGPX9C40Y7QvdGPX9C40Y7Qu9GPX9Cw0LLQsy5f0YHQtdC90YIuX9C+0LrRgi5f0L3QvtGP0LEuX9C00LXQui4iLnNwbGl0KCJfIiksc3RhbmRhbG9uZToi0Y/QvdCyLl/RhNC10LLRgC5f0LzQsNGA0YJf0LDQv9GALl/QvNCw0Llf0LjRjtC90Yxf0LjRjtC70Yxf0LDQstCzLl/RgdC10L3Rgi5f0L7QutGCLl/QvdC+0Y/QsS5f0LTQtdC6LiIuc3BsaXQoIl8iKX0sd2Vla2RheXM6e3N0YW5kYWxvbmU6ItCy0L7RgdC60YDQtdGB0LXQvdGM0LVf0L/QvtC90LXQtNC10LvRjNC90LjQul/QstGC0L7RgNC90LjQul/RgdGA0LXQtNCwX9GH0LXRgtCy0LXRgNCzX9C/0Y/RgtC90LjRhtCwX9GB0YPQsdCx0L7RgtCwIi5zcGxpdCgiXyIpLGZvcm1hdDoi0LLQvtGB0LrRgNC10YHQtdC90YzQtV/Qv9C+0L3QtdC00LXQu9GM0L3QuNC6X9Cy0YLQvtGA0L3QuNC6X9GB0YDQtdC00YNf0YfQtdGC0LLQtdGA0LNf0L/Rj9GC0L3QuNGG0YNf0YHRg9Cx0LHQvtGC0YMiLnNwbGl0KCJfIiksaXNGb3JtYXQ6L1xbID9b0JLQsl0gPyg/OtC/0YDQvtGI0LvRg9GOfNGB0LvQtdC00YPRjtGJ0YPRjnzRjdGC0YMpPyA/XF0gP2RkZGQvfSx3ZWVrZGF5c1Nob3J0OiLQstGBX9C/0L1f0LLRgl/RgdGAX9GH0YJf0L/Rgl/RgdCxIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLQstGBX9C/0L1f0LLRgl/RgdGAX9GH0YJf0L/Rgl/RgdCxIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlOnIsbG9uZ01vbnRoc1BhcnNlOnIsc2hvcnRNb250aHNQYXJzZTpyLG1vbnRoc1JlZ2V4Oi9eKNGP0L3QstCw0YBb0YzRj1180Y/QvdCyXC4/fNGE0LXQstGA0LDQu1vRjNGPXXzRhNC10LLRgD9cLj980LzQsNGA0YLQsD980LzQsNGAXC4/fNCw0L/RgNC10Ltb0YzRj1180LDQv9GAXC4/fNC80LBb0LnRj1180LjRjtC9W9GM0Y9dfNC40Y7QvVwuP3zQuNGO0Ltb0YzRj1180LjRjtC7XC4/fNCw0LLQs9GD0YHRgtCwP3zQsNCy0LNcLj980YHQtdC90YLRj9Cx0YBb0YzRj1180YHQtdC90YI/XC4/fNC+0LrRgtGP0LHRgFvRjNGPXXzQvtC60YJcLj980L3QvtGP0LHRgFvRjNGPXXzQvdC+0Y/QsT9cLj980LTQtdC60LDQsdGAW9GM0Y9dfNC00LXQulwuPykvaSxtb250aHNTaG9ydFJlZ2V4Oi9eKNGP0L3QstCw0YBb0YzRj1180Y/QvdCyXC4/fNGE0LXQstGA0LDQu1vRjNGPXXzRhNC10LLRgD9cLj980LzQsNGA0YLQsD980LzQsNGAXC4/fNCw0L/RgNC10Ltb0YzRj1180LDQv9GAXC4/fNC80LBb0LnRj1180LjRjtC9W9GM0Y9dfNC40Y7QvVwuP3zQuNGO0Ltb0YzRj1180LjRjtC7XC4/fNCw0LLQs9GD0YHRgtCwP3zQsNCy0LNcLj980YHQtdC90YLRj9Cx0YBb0YzRj1180YHQtdC90YI/XC4/fNC+0LrRgtGP0LHRgFvRjNGPXXzQvtC60YJcLj980L3QvtGP0LHRgFvRjNGPXXzQvdC+0Y/QsT9cLj980LTQtdC60LDQsdGAW9GM0Y9dfNC00LXQulwuPykvaSxtb250aHNTdHJpY3RSZWdleDovXijRj9C90LLQsNGAW9GP0YxdfNGE0LXQstGA0LDQu1vRj9GMXXzQvNCw0YDRgtCwP3zQsNC/0YDQtdC7W9GP0YxdfNC80LBb0Y/QuV180LjRjtC9W9GP0YxdfNC40Y7Qu1vRj9GMXXzQsNCy0LPRg9GB0YLQsD980YHQtdC90YLRj9Cx0YBb0Y/RjF180L7QutGC0Y/QsdGAW9GP0YxdfNC90L7Rj9Cx0YBb0Y/RjF180LTQtdC60LDQsdGAW9GP0YxdKS9pLG1vbnRoc1Nob3J0U3RyaWN0UmVnZXg6L14o0Y/QvdCyXC580YTQtdCy0YA/XC580LzQsNGAW9GCLl180LDQv9GAXC580LzQsFvRj9C5XXzQuNGO0L1b0YzRjy5dfNC40Y7Qu1vRjNGPLl180LDQstCzXC580YHQtdC90YI/XC580L7QutGCXC580L3QvtGP0LE/XC580LTQtdC6XC4pL2ksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZINCzLiIsTExMOiJEIE1NTU0gWVlZWSDQsy4sIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSDQsy4sIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6IlvQodC10LPQvtC00L3RjyDQsl0gTFQiLG5leHREYXk6IlvQl9Cw0LLRgtGA0LAg0LJdIExUIixsYXN0RGF5OiJb0JLRh9C10YDQsCDQsl0gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKGUpe2lmKGUud2VlaygpPT09dGhpcy53ZWVrKCkpcmV0dXJuIDI9PT10aGlzLmRheSgpPyJb0JLQvl0gZGRkZCBb0LJdIExUIjoiW9CSXSBkZGRkIFvQsl0gTFQiO3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIlvQkiDRgdC70LXQtNGD0Y7RidC10LVdIGRkZGQgW9CyXSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6cmV0dXJuIlvQkiDRgdC70LXQtNGD0Y7RidC40LldIGRkZGQgW9CyXSBMVCI7Y2FzZSAzOmNhc2UgNTpjYXNlIDY6cmV0dXJuIlvQkiDRgdC70LXQtNGD0Y7RidGD0Y5dIGRkZGQgW9CyXSBMVCJ9fSxsYXN0V2VlazpmdW5jdGlvbihlKXtpZihlLndlZWsoKT09PXRoaXMud2VlaygpKXJldHVybiAyPT09dGhpcy5kYXkoKT8iW9CS0L5dIGRkZGQgW9CyXSBMVCI6IlvQkl0gZGRkZCBb0LJdIExUIjtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJb0JIg0L/RgNC+0YjQu9C+0LVdIGRkZGQgW9CyXSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6cmV0dXJuIlvQkiDQv9GA0L7RiNC70YvQuV0gZGRkZCBb0LJdIExUIjtjYXNlIDM6Y2FzZSA1OmNhc2UgNjpyZXR1cm4iW9CSINC/0YDQvtGI0LvRg9GOXSBkZGRkIFvQsl0gTFQifX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi0YfQtdGA0LXQtyAlcyIscGFzdDoiJXMg0L3QsNC30LDQtCIsczoi0L3QtdGB0LrQvtC70YzQutC+INGB0LXQutGD0L3QtCIsbTpkLG1tOmQsaDoi0YfQsNGBIixoaDpkLGQ6ItC00LXQvdGMIixkZDpkLE06ItC80LXRgdGP0YYiLE1NOmQseToi0LPQvtC0Iix5eTpkfSxtZXJpZGllbVBhcnNlOi/QvdC+0YfQuHzRg9GC0YDQsHzQtNC90Y980LLQtdGH0LXRgNCwL2ksaXNQTTpmdW5jdGlvbihlKXtyZXR1cm4vXijQtNC90Y980LLQtdGH0LXRgNCwKSQvLnRlc3QoZSl9LG1lcmlkaWVtOmZ1bmN0aW9uKGUsdCxkKXtyZXR1cm4gZTw0PyLQvdC+0YfQuCI6ZTwxMj8i0YPRgtGA0LAiOmU8MTc/ItC00L3RjyI6ItCy0LXRh9C10YDQsCJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfS0o0Ll80LPQvnzRjykvLG9yZGluYWw6ZnVuY3Rpb24oZSx0KXtzd2l0Y2godCl7Y2FzZSJNIjpjYXNlImQiOmNhc2UiREREIjpyZXR1cm4gZSsiLdC5IjtjYXNlIkQiOnJldHVybiBlKyIt0LPQviI7Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBlKyIt0Y8iO2RlZmF1bHQ6cmV0dXJuIGV9fSx3ZWVrOntkb3c6MSxkb3k6N319KTtyZXR1cm4gX30oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJydSIsInJ1Iix7Y2xvc2VUZXh0OiLQl9Cw0LrRgNGL0YLRjCIscHJldlRleHQ6IiYjeDNDO9Cf0YDQtdC0IixuZXh0VGV4dDoi0KHQu9C10LQmI3gzRTsiLGN1cnJlbnRUZXh0OiLQodC10LPQvtC00L3RjyIsbW9udGhOYW1lczpbItCv0L3QstCw0YDRjCIsItCk0LXQstGA0LDQu9GMIiwi0JzQsNGA0YIiLCLQkNC/0YDQtdC70YwiLCLQnNCw0LkiLCLQmNGO0L3RjCIsItCY0Y7Qu9GMIiwi0JDQstCz0YPRgdGCIiwi0KHQtdC90YLRj9Cx0YDRjCIsItCe0LrRgtGP0LHRgNGMIiwi0J3QvtGP0LHRgNGMIiwi0JTQtdC60LDQsdGA0YwiXSxtb250aE5hbWVzU2hvcnQ6WyLQr9C90LIiLCLQpNC10LIiLCLQnNCw0YAiLCLQkNC/0YAiLCLQnNCw0LkiLCLQmNGO0L0iLCLQmNGO0LsiLCLQkNCy0LMiLCLQodC10L0iLCLQntC60YIiLCLQndC+0Y8iLCLQlNC10LoiXSxkYXlOYW1lczpbItCy0L7RgdC60YDQtdGB0LXQvdGM0LUiLCLQv9C+0L3QtdC00LXQu9GM0L3QuNC6Iiwi0LLRgtC+0YDQvdC40LoiLCLRgdGA0LXQtNCwIiwi0YfQtdGC0LLQtdGA0LMiLCLQv9GP0YLQvdC40YbQsCIsItGB0YPQsdCx0L7RgtCwIl0sZGF5TmFtZXNTaG9ydDpbItCy0YHQuiIsItC/0L3QtCIsItCy0YLRgCIsItGB0YDQtCIsItGH0YLQsiIsItC/0YLQvSIsItGB0LHRgiJdLGRheU5hbWVzTWluOlsi0JLRgSIsItCf0L0iLCLQktGCIiwi0KHRgCIsItCn0YIiLCLQn9GCIiwi0KHQsSJdLHdlZWtIZWFkZXI6ItCd0LXQtCIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoInJ1Iix7YnV0dG9uVGV4dDp7bW9udGg6ItCc0LXRgdGP0YYiLHdlZWs6ItCd0LXQtNC10LvRjyIsZGF5OiLQlNC10L3RjCIsbGlzdDoi0J/QvtCy0LXRgdGC0LrQsCDQtNC90Y8ifSxhbGxEYXlUZXh0OiLQktC10YHRjCDQtNC10L3RjCIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIisg0LXRidGRICIrZX0sbm9FdmVudHNNZXNzYWdlOiLQndC10YIg0YHQvtCx0YvRgtC40Lkg0LTQu9GPINC+0YLQvtCx0YDQsNC20LXQvdC40Y8ifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/sk.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4gZT4xJiZlPDV9ZnVuY3Rpb24gcih0LHIsYSxuKXt2YXIgbz10KyIgIjtzd2l0Y2goYSl7Y2FzZSJzIjpyZXR1cm4gcnx8bj8icMOhciBzZWvDum5kIjoicMOhciBzZWt1bmRhbWkiO2Nhc2UibSI6cmV0dXJuIHI/Im1pbsO6dGEiOm4/Im1pbsO6dHUiOiJtaW7DunRvdSI7Y2FzZSJtbSI6cmV0dXJuIHJ8fG4/bysoZSh0KT8ibWluw7p0eSI6Im1pbsO6dCIpOm8rIm1pbsO6dGFtaSI7Y2FzZSJoIjpyZXR1cm4gcj8iaG9kaW5hIjpuPyJob2RpbnUiOiJob2Rpbm91IjtjYXNlImhoIjpyZXR1cm4gcnx8bj9vKyhlKHQpPyJob2RpbnkiOiJob2TDrW4iKTpvKyJob2RpbmFtaSI7Y2FzZSJkIjpyZXR1cm4gcnx8bj8iZGXFiCI6ImTFiG9tIjtjYXNlImRkIjpyZXR1cm4gcnx8bj9vKyhlKHQpPyJkbmkiOiJkbsOtIik6bysiZMWIYW1pIjtjYXNlIk0iOnJldHVybiByfHxuPyJtZXNpYWMiOiJtZXNpYWNvbSI7Y2FzZSJNTSI6cmV0dXJuIHJ8fG4/bysoZSh0KT8ibWVzaWFjZSI6Im1lc2lhY292Iik6bysibWVzaWFjbWkiO2Nhc2UieSI6cmV0dXJuIHJ8fG4/InJvayI6InJva29tIjtjYXNlInl5IjpyZXR1cm4gcnx8bj9vKyhlKHQpPyJyb2t5Ijoicm9rb3YiKTpvKyJyb2ttaSJ9fXZhciBhPSJqYW51w6FyX2ZlYnJ1w6FyX21hcmVjX2FwcsOtbF9tw6FqX2rDum5fasO6bF9hdWd1c3Rfc2VwdGVtYmVyX29rdMOzYmVyX25vdmVtYmVyX2RlY2VtYmVyIi5zcGxpdCgiXyIpLG49Imphbl9mZWJfbWFyX2Fwcl9tw6FqX2rDum5fasO6bF9hdWdfc2VwX29rdF9ub3ZfZGVjIi5zcGxpdCgiXyIpLG89dC5kZWZpbmVMb2NhbGUoInNrIix7bW9udGhzOmEsbW9udGhzU2hvcnQ6bix3ZWVrZGF5czoibmVkZcS+YV9wb25kZWxva191dG9yb2tfc3RyZWRhX8WhdHZydG9rX3BpYXRva19zb2JvdGEiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoibmVfcG9fdXRfc3RfxaF0X3BpX3NvIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJuZV9wb191dF9zdF/FoXRfcGlfc28iLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJELiBNTU1NIFlZWVkiLExMTDoiRC4gTU1NTSBZWVlZIEg6bW0iLExMTEw6ImRkZGQgRC4gTU1NTSBZWVlZIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2RuZXMgb10gTFQiLG5leHREYXk6Ilt6YWp0cmEgb10gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW3YgbmVkZcS+dSBvXSBMVCI7Y2FzZSAxOmNhc2UgMjpyZXR1cm4iW3ZdIGRkZGQgW29dIExUIjtjYXNlIDM6cmV0dXJuIlt2IHN0cmVkdSBvXSBMVCI7Y2FzZSA0OnJldHVybiJbdm8gxaF0dnJ0b2sgb10gTFQiO2Nhc2UgNTpyZXR1cm4iW3YgcGlhdG9rIG9dIExUIjtjYXNlIDY6cmV0dXJuIlt2IHNvYm90dSBvXSBMVCJ9fSxsYXN0RGF5OiJbdsSNZXJhIG9dIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIlttaW51bMO6IG5lZGXEvnUgb10gTFQiO2Nhc2UgMTpjYXNlIDI6cmV0dXJuIlttaW51bMO9XSBkZGRkIFtvXSBMVCI7Y2FzZSAzOnJldHVybiJbbWludWzDuiBzdHJlZHUgb10gTFQiO2Nhc2UgNDpjYXNlIDU6cmV0dXJuIlttaW51bMO9XSBkZGRkIFtvXSBMVCI7Y2FzZSA2OnJldHVybiJbbWludWzDuiBzb2JvdHUgb10gTFQifX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiemEgJXMiLHBhc3Q6InByZWQgJXMiLHM6cixtOnIsbW06cixoOnIsaGg6cixkOnIsZGQ6cixNOnIsTU06cix5OnIseXk6cn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9XC4vLG9yZGluYWw6IiVkLiIsd2Vlazp7ZG93OjEsZG95OjR9fSk7cmV0dXJuIG99KCksZS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgic2siLCJzayIse2Nsb3NlVGV4dDoiWmF2cmllxaUiLHByZXZUZXh0OiImI3gzQztQcmVkY2jDoWR6YWrDumNpIixuZXh0VGV4dDoiTmFzbGVkdWrDumNpJiN4M0U7IixjdXJyZW50VGV4dDoiRG5lcyIsbW9udGhOYW1lczpbImphbnXDoXIiLCJmZWJydcOhciIsIm1hcmVjIiwiYXByw61sIiwibcOhaiIsImrDum4iLCJqw7psIiwiYXVndXN0Iiwic2VwdGVtYmVyIiwib2t0w7NiZXIiLCJub3ZlbWJlciIsImRlY2VtYmVyIl0sbW9udGhOYW1lc1Nob3J0OlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTcOhaiIsIkrDum4iLCJKw7psIiwiQXVnIiwiU2VwIiwiT2t0IiwiTm92IiwiRGVjIl0sZGF5TmFtZXM6WyJuZWRlxL5hIiwicG9uZGVsb2siLCJ1dG9yb2siLCJzdHJlZGEiLCLFoXR2cnRvayIsInBpYXRvayIsInNvYm90YSJdLGRheU5hbWVzU2hvcnQ6WyJOZWQiLCJQb24iLCJVdG8iLCJTdHIiLCLFoHR2IiwiUGlhIiwiU29iIl0sZGF5TmFtZXNNaW46WyJOZSIsIlBvIiwiVXQiLCJTdCIsIsWgdCIsIlBpYSIsIlNvIl0sd2Vla0hlYWRlcjoiVHkiLGRhdGVGb3JtYXQ6ImRkLm1tLnl5IixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJzayIse2J1dHRvblRleHQ6e21vbnRoOiJNZXNpYWMiLHdlZWs6IlTDvcW+ZGXFiCIsZGF5OiJEZcWIIixsaXN0OiJSb3p2cmgifSxhbGxEYXlUZXh0OiJDZWzDvSBkZcWIIixldmVudExpbWl0VGV4dDpmdW5jdGlvbihlKXtyZXR1cm4iK8SPYWzFoWllOiAiK2V9LG5vRXZlbnRzTWVzc2FnZToixb1pYWRuZSBha2NpZSBuYSB6b2JyYXplbmllIn0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/sl.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsYSl7IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLGEscix0KXt2YXIgbj1lKyIgIjtzd2l0Y2gocil7Y2FzZSJzIjpyZXR1cm4gYXx8dD8ibmVrYWogc2VrdW5kIjoibmVrYWogc2VrdW5kYW1pIjtjYXNlIm0iOnJldHVybiBhPyJlbmEgbWludXRhIjoiZW5vIG1pbnV0byI7Y2FzZSJtbSI6cmV0dXJuIG4rPTE9PT1lP2E/Im1pbnV0YSI6Im1pbnV0byI6Mj09PWU/YXx8dD8ibWludXRpIjoibWludXRhbWEiOmU8NT9hfHx0PyJtaW51dGUiOiJtaW51dGFtaSI6YXx8dD8ibWludXQiOiJtaW51dGFtaSI7Y2FzZSJoIjpyZXR1cm4gYT8iZW5hIHVyYSI6ImVubyB1cm8iO2Nhc2UiaGgiOnJldHVybiBuKz0xPT09ZT9hPyJ1cmEiOiJ1cm8iOjI9PT1lP2F8fHQ/InVyaSI6InVyYW1hIjplPDU/YXx8dD8idXJlIjoidXJhbWkiOmF8fHQ/InVyIjoidXJhbWkiO2Nhc2UiZCI6cmV0dXJuIGF8fHQ/ImVuIGRhbiI6ImVuaW0gZG5lbSI7Y2FzZSJkZCI6cmV0dXJuIG4rPTE9PT1lP2F8fHQ/ImRhbiI6ImRuZW0iOjI9PT1lP2F8fHQ/ImRuaSI6ImRuZXZvbWEiOmF8fHQ/ImRuaSI6ImRuZXZpIjtjYXNlIk0iOnJldHVybiBhfHx0PyJlbiBtZXNlYyI6ImVuaW0gbWVzZWNlbSI7Y2FzZSJNTSI6cmV0dXJuIG4rPTE9PT1lP2F8fHQ/Im1lc2VjIjoibWVzZWNlbSI6Mj09PWU/YXx8dD8ibWVzZWNhIjoibWVzZWNlbWEiOmU8NT9hfHx0PyJtZXNlY2UiOiJtZXNlY2kiOmF8fHQ/Im1lc2VjZXYiOiJtZXNlY2kiO2Nhc2UieSI6cmV0dXJuIGF8fHQ/ImVubyBsZXRvIjoiZW5pbSBsZXRvbSI7Y2FzZSJ5eSI6cmV0dXJuIG4rPTE9PT1lP2F8fHQ/ImxldG8iOiJsZXRvbSI6Mj09PWU/YXx8dD8ibGV0aSI6ImxldG9tYSI6ZTw1P2F8fHQ/ImxldGEiOiJsZXRpIjphfHx0PyJsZXQiOiJsZXRpIn19dmFyIHI9YS5kZWZpbmVMb2NhbGUoInNsIix7bW9udGhzOiJqYW51YXJfZmVicnVhcl9tYXJlY19hcHJpbF9tYWpfanVuaWpfanVsaWpfYXZndXN0X3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW4uX2ZlYi5fbWFyLl9hcHIuX21hai5fanVuLl9qdWwuX2F2Zy5fc2VwLl9va3QuX25vdi5fZGVjLiIuc3BsaXQoIl8iKSxtb250aHNQYXJzZUV4YWN0OiEwLHdlZWtkYXlzOiJuZWRlbGphX3BvbmVkZWxqZWtfdG9yZWtfc3JlZGFfxI1ldHJ0ZWtfcGV0ZWtfc29ib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5lZC5fcG9uLl90b3IuX3NyZS5fxI1ldC5fcGV0Ll9zb2IuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJuZV9wb190b19zcl/EjWVfcGVfc28iLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBIOm1tIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbZGFuZXMgb2JdIExUIixuZXh0RGF5OiJbanV0cmkgb2JdIExUIixuZXh0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIlt2XSBbbmVkZWxqb10gW29iXSBMVCI7Y2FzZSAzOnJldHVybiJbdl0gW3NyZWRvXSBbb2JdIExUIjtjYXNlIDY6cmV0dXJuIlt2XSBbc29ib3RvXSBbb2JdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIlt2XSBkZGRkIFtvYl0gTFQifX0sbGFzdERheToiW3bEjWVyYWogb2JdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6cmV0dXJuIltwcmVqxaFuam9dIFtuZWRlbGpvXSBbb2JdIExUIjtjYXNlIDM6cmV0dXJuIltwcmVqxaFuam9dIFtzcmVkb10gW29iXSBMVCI7Y2FzZSA2OnJldHVybiJbcHJlasWhbmpvXSBbc29ib3RvXSBbb2JdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIltwcmVqxaFuamldIGRkZGQgW29iXSBMVCJ9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLEjWV6ICVzIixwYXN0OiJwcmVkICVzIixzOmUsbTplLG1tOmUsaDplLGhoOmUsZDplLGRkOmUsTTplLE1NOmUseTplLHl5OmV9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo3fX0pO3JldHVybiByfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoInNsIiwic2wiLHtjbG9zZVRleHQ6IlphcHJpIixwcmV2VGV4dDoiJiN4M0M7UHJlasWhbmppIixuZXh0VGV4dDoiTmFzbGVkbmppJiN4M0U7IixjdXJyZW50VGV4dDoiVHJlbnV0bmkiLG1vbnRoTmFtZXM6WyJKYW51YXIiLCJGZWJydWFyIiwiTWFyZWMiLCJBcHJpbCIsIk1haiIsIkp1bmlqIiwiSnVsaWoiLCJBdmd1c3QiLCJTZXB0ZW1iZXIiLCJPa3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1haiIsIkp1biIsIkp1bCIsIkF2ZyIsIlNlcCIsIk9rdCIsIk5vdiIsIkRlYyJdLGRheU5hbWVzOlsiTmVkZWxqYSIsIlBvbmVkZWxqZWsiLCJUb3JlayIsIlNyZWRhIiwixIxldHJ0ZWsiLCJQZXRlayIsIlNvYm90YSJdLGRheU5hbWVzU2hvcnQ6WyJOZWQiLCJQb24iLCJUb3IiLCJTcmUiLCLEjGV0IiwiUGV0IiwiU29iIl0sZGF5TmFtZXNNaW46WyJOZSIsIlBvIiwiVG8iLCJTciIsIsSMZSIsIlBlIiwiU28iXSx3ZWVrSGVhZGVyOiJUZWRlbiIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoInNsIix7YnV0dG9uVGV4dDp7bW9udGg6Ik1lc2VjIix3ZWVrOiJUZWRlbiIsZGF5OiJEYW4iLGxpc3Q6IkRuZXZuaSByZWQifSxhbGxEYXlUZXh0OiJWZXMgZGFuIixldmVudExpbWl0VGV4dDoidmXEjSIsbm9FdmVudHNNZXNzYWdlOiJOaSBkb2dvZGtvdiB6YSBwcmlrYXoifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/sr-cyrl.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKCl7dmFyIGU9e3dvcmRzOnttOlsi0ZjQtdC00LDQvSDQvNC40L3Rg9GCIiwi0ZjQtdC00L3QtSDQvNC40L3Rg9GC0LUiXSxtbTpbItC80LjQvdGD0YIiLCLQvNC40L3Rg9GC0LUiLCLQvNC40L3Rg9GC0LAiXSxoOlsi0ZjQtdC00LDQvSDRgdCw0YIiLCLRmNC10LTQvdC+0LMg0YHQsNGC0LAiXSxoaDpbItGB0LDRgiIsItGB0LDRgtCwIiwi0YHQsNGC0LgiXSxkZDpbItC00LDQvSIsItC00LDQvdCwIiwi0LTQsNC90LAiXSxNTTpbItC80LXRgdC10YYiLCLQvNC10YHQtdGG0LAiLCLQvNC10YHQtdGG0LgiXSx5eTpbItCz0L7QtNC40L3QsCIsItCz0L7QtNC40L3QtSIsItCz0L7QtNC40L3QsCJdfSxjb3JyZWN0R3JhbW1hdGljYWxDYXNlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIDE9PT1lP3RbMF06ZT49MiYmZTw9ND90WzFdOnRbMl19LHRyYW5zbGF0ZTpmdW5jdGlvbih0LGEscil7dmFyIHM9ZS53b3Jkc1tyXTtyZXR1cm4gMT09PXIubGVuZ3RoP2E/c1swXTpzWzFdOnQrIiAiK2UuY29ycmVjdEdyYW1tYXRpY2FsQ2FzZSh0LHMpfX0sYT10LmRlZmluZUxvY2FsZSgic3ItY3lybCIse21vbnRoczoi0ZjQsNC90YPQsNGAX9GE0LXQsdGA0YPQsNGAX9C80LDRgNGCX9Cw0L/RgNC40Ltf0LzQsNGYX9GY0YPQvV/RmNGD0Ltf0LDQstCz0YPRgdGCX9GB0LXQv9GC0LXQvNCx0LDRgF/QvtC60YLQvtCx0LDRgF/QvdC+0LLQtdC80LHQsNGAX9C00LXRhtC10LzQsdCw0YAiLnNwbGl0KCJfIiksbW9udGhzU2hvcnQ6ItGY0LDQvS5f0YTQtdCxLl/QvNCw0YAuX9Cw0L/RgC5f0LzQsNGYX9GY0YPQvV/RmNGD0Ltf0LDQstCzLl/RgdC10L8uX9C+0LrRgi5f0L3QvtCyLl/QtNC10YYuIi5zcGxpdCgiXyIpLG1vbnRoc1BhcnNlRXhhY3Q6ITAsd2Vla2RheXM6ItC90LXQtNC10ZnQsF/Qv9C+0L3QtdC00LXRmdCw0Lpf0YPRgtC+0YDQsNC6X9GB0YDQtdC00LBf0YfQtdGC0LLRgNGC0LDQul/Qv9C10YLQsNC6X9GB0YPQsdC+0YLQsCIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLQvdC10LQuX9C/0L7QvS5f0YPRgtC+Ll/RgdGA0LUuX9GH0LXRgi5f0L/QtdGCLl/RgdGD0LEuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiLQvdC1X9C/0L5f0YPRgl/RgdGAX9GH0LVf0L/QtV/RgdGDIi5zcGxpdCgiXyIpLHdlZWtkYXlzUGFyc2VFeGFjdDohMCxsb25nRGF0ZUZvcm1hdDp7TFQ6Ikg6bW0iLExUUzoiSDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQuIE1NTU0gWVlZWSIsTExMOiJELiBNTU1NIFlZWVkgSDptbSIsTExMTDoiZGRkZCwgRC4gTU1NTSBZWVlZIEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW9C00LDQvdCw0YEg0YNdIExUIixuZXh0RGF5OiJb0YHRg9GC0YDQsCDRg10gTFQiLG5leHRXZWVrOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuZGF5KCkpe2Nhc2UgMDpyZXR1cm4iW9GDXSBb0L3QtdC00LXRmdGDXSBb0YNdIExUIjtjYXNlIDM6cmV0dXJuIlvRg10gW9GB0YDQtdC00YNdIFvRg10gTFQiO2Nhc2UgNjpyZXR1cm4iW9GDXSBb0YHRg9Cx0L7RgtGDXSBb0YNdIExUIjtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpjYXNlIDU6cmV0dXJuIlvRg10gZGRkZCBb0YNdIExUIn19LGxhc3REYXk6IlvRmNGD0YfQtSDRg10gTFQiLGxhc3RXZWVrOmZ1bmN0aW9uKCl7dmFyIGU9WyJb0L/RgNC+0YjQu9C1XSBb0L3QtdC00LXRmdC1XSBb0YNdIExUIiwiW9C/0YDQvtGI0LvQvtCzXSBb0L/QvtC90LXQtNC10ZnQutCwXSBb0YNdIExUIiwiW9C/0YDQvtGI0LvQvtCzXSBb0YPRgtC+0YDQutCwXSBb0YNdIExUIiwiW9C/0YDQvtGI0LvQtV0gW9GB0YDQtdC00LVdIFvRg10gTFQiLCJb0L/RgNC+0YjQu9C+0LNdIFvRh9C10YLQstGA0YLQutCwXSBb0YNdIExUIiwiW9C/0YDQvtGI0LvQvtCzXSBb0L/QtdGC0LrQsF0gW9GDXSBMVCIsIlvQv9GA0L7RiNC70LVdIFvRgdGD0LHQvtGC0LVdIFvRg10gTFQiXTtyZXR1cm4gZVt0aGlzLmRheSgpXX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi0LfQsCAlcyIscGFzdDoi0L/RgNC1ICVzIixzOiLQvdC10LrQvtC70LjQutC+INGB0LXQutGD0L3QtNC4IixtOmUudHJhbnNsYXRlLG1tOmUudHJhbnNsYXRlLGg6ZS50cmFuc2xhdGUsaGg6ZS50cmFuc2xhdGUsZDoi0LTQsNC9IixkZDplLnRyYW5zbGF0ZSxNOiLQvNC10YHQtdGGIixNTTplLnRyYW5zbGF0ZSx5OiLQs9C+0LTQuNC90YMiLHl5OmUudHJhbnNsYXRlfSxvcmRpbmFsUGFyc2U6L1xkezEsMn1cLi8sb3JkaW5hbDoiJWQuIix3ZWVrOntkb3c6MSxkb3k6N319KTtyZXR1cm4gYX0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJzci1jeXJsIiwic3IiLHtjbG9zZVRleHQ6ItCX0LDRgtCy0L7RgNC4IixwcmV2VGV4dDoiJiN4M0M7IixuZXh0VGV4dDoiJiN4M0U7IixjdXJyZW50VGV4dDoi0JTQsNC90LDRgSIsbW9udGhOYW1lczpbItCI0LDQvdGD0LDRgCIsItCk0LXQsdGA0YPQsNGAIiwi0JzQsNGA0YIiLCLQkNC/0YDQuNC7Iiwi0JzQsNGYIiwi0IjRg9C9Iiwi0IjRg9C7Iiwi0JDQstCz0YPRgdGCIiwi0KHQtdC/0YLQtdC80LHQsNGAIiwi0J7QutGC0L7QsdCw0YAiLCLQndC+0LLQtdC80LHQsNGAIiwi0JTQtdGG0LXQvNCx0LDRgCJdLG1vbnRoTmFtZXNTaG9ydDpbItCI0LDQvSIsItCk0LXQsSIsItCc0LDRgCIsItCQ0L/RgCIsItCc0LDRmCIsItCI0YPQvSIsItCI0YPQuyIsItCQ0LLQsyIsItCh0LXQvyIsItCe0LrRgiIsItCd0L7QsiIsItCU0LXRhiJdLGRheU5hbWVzOlsi0J3QtdC00LXRmdCwIiwi0J/QvtC90LXQtNC10ZnQsNC6Iiwi0KPRgtC+0YDQsNC6Iiwi0KHRgNC10LTQsCIsItCn0LXRgtCy0YDRgtCw0LoiLCLQn9C10YLQsNC6Iiwi0KHRg9Cx0L7RgtCwIl0sZGF5TmFtZXNTaG9ydDpbItCd0LXQtCIsItCf0L7QvSIsItCj0YLQviIsItCh0YDQtSIsItCn0LXRgiIsItCf0LXRgiIsItCh0YPQsSJdLGRheU5hbWVzTWluOlsi0J3QtSIsItCf0L4iLCLQo9GCIiwi0KHRgCIsItCn0LUiLCLQn9C1Iiwi0KHRgyJdLHdlZWtIZWFkZXI6ItCh0LXQtCIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoInNyLWN5cmwiLHtidXR0b25UZXh0Onttb250aDoi0JzQtdGB0LXRhiIsd2Vlazoi0J3QtdC00LXRmdCwIixkYXk6ItCU0LDQvSIsbGlzdDoi0J/Qu9Cw0L3QtdGAIn0sYWxsRGF5VGV4dDoi0KbQtdC+INC00LDQvSIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIisg0ZjQvtGIICIrZX0sbm9FdmVudHNNZXNzYWdlOiLQndC10LzQsCDQtNC+0LPQsNGS0LDRmNCwINC30LAg0L/RgNC40LrQsNC3In0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/sr.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsYSl7IWZ1bmN0aW9uKCl7dmFyIGU9e3dvcmRzOnttOlsiamVkYW4gbWludXQiLCJqZWRuZSBtaW51dGUiXSxtbTpbIm1pbnV0IiwibWludXRlIiwibWludXRhIl0saDpbImplZGFuIHNhdCIsImplZG5vZyBzYXRhIl0saGg6WyJzYXQiLCJzYXRhIiwic2F0aSJdLGRkOlsiZGFuIiwiZGFuYSIsImRhbmEiXSxNTTpbIm1lc2VjIiwibWVzZWNhIiwibWVzZWNpIl0seXk6WyJnb2RpbmEiLCJnb2RpbmUiLCJnb2RpbmEiXX0sY29ycmVjdEdyYW1tYXRpY2FsQ2FzZTpmdW5jdGlvbihlLGEpe3JldHVybiAxPT09ZT9hWzBdOmU+PTImJmU8PTQ/YVsxXTphWzJdfSx0cmFuc2xhdGU6ZnVuY3Rpb24oYSx0LHIpe3ZhciBuPWUud29yZHNbcl07cmV0dXJuIDE9PT1yLmxlbmd0aD90P25bMF06blsxXTphKyIgIitlLmNvcnJlY3RHcmFtbWF0aWNhbENhc2UoYSxuKX19LHQ9YS5kZWZpbmVMb2NhbGUoInNyIix7bW9udGhzOiJqYW51YXJfZmVicnVhcl9tYXJ0X2FwcmlsX21hal9qdW5fanVsX2F2Z3VzdF9zZXB0ZW1iYXJfb2t0b2Jhcl9ub3ZlbWJhcl9kZWNlbWJhciIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiamFuLl9mZWIuX21hci5fYXByLl9tYWpfanVuX2p1bF9hdmcuX3NlcC5fb2t0Ll9ub3YuX2RlYy4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoibmVkZWxqYV9wb25lZGVsamFrX3V0b3Jha19zcmVkYV/EjWV0dnJ0YWtfcGV0YWtfc3Vib3RhIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6Im5lZC5fcG9uLl91dG8uX3NyZS5fxI1ldC5fcGV0Ll9zdWIuIi5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJuZV9wb191dF9zcl/EjWVfcGVfc3UiLnNwbGl0KCJfIiksd2Vla2RheXNQYXJzZUV4YWN0OiEwLGxvbmdEYXRlRm9ybWF0OntMVDoiSDptbSIsTFRTOiJIOm1tOnNzIixMOiJERC5NTS5ZWVlZIixMTDoiRC4gTU1NTSBZWVlZIixMTEw6IkQuIE1NTU0gWVlZWSBIOm1tIixMTExMOiJkZGRkLCBELiBNTU1NIFlZWVkgSDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbZGFuYXMgdV0gTFQiLG5leHREYXk6IltzdXRyYSB1XSBMVCIsbmV4dFdlZWs6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5kYXkoKSl7Y2FzZSAwOnJldHVybiJbdV0gW25lZGVsanVdIFt1XSBMVCI7Y2FzZSAzOnJldHVybiJbdV0gW3NyZWR1XSBbdV0gTFQiO2Nhc2UgNjpyZXR1cm4iW3VdIFtzdWJvdHVdIFt1XSBMVCI7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6Y2FzZSA1OnJldHVybiJbdV0gZGRkZCBbdV0gTFQifX0sbGFzdERheToiW2p1xI1lIHVdIExUIixsYXN0V2VlazpmdW5jdGlvbigpe3ZhciBlPVsiW3Byb8WhbGVdIFtuZWRlbGplXSBbdV0gTFQiLCJbcHJvxaFsb2ddIFtwb25lZGVsamthXSBbdV0gTFQiLCJbcHJvxaFsb2ddIFt1dG9ya2FdIFt1XSBMVCIsIltwcm/FoWxlXSBbc3JlZGVdIFt1XSBMVCIsIltwcm/FoWxvZ10gW8SNZXR2cnRrYV0gW3VdIExUIiwiW3Byb8WhbG9nXSBbcGV0a2FdIFt1XSBMVCIsIltwcm/FoWxlXSBbc3Vib3RlXSBbdV0gTFQiXTtyZXR1cm4gZVt0aGlzLmRheSgpXX0sc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiemEgJXMiLHBhc3Q6InByZSAlcyIsczoibmVrb2xpa28gc2VrdW5kaSIsbTplLnRyYW5zbGF0ZSxtbTplLnRyYW5zbGF0ZSxoOmUudHJhbnNsYXRlLGhoOmUudHJhbnNsYXRlLGQ6ImRhbiIsZGQ6ZS50cmFuc2xhdGUsTToibWVzZWMiLE1NOmUudHJhbnNsYXRlLHk6ImdvZGludSIseXk6ZS50cmFuc2xhdGV9LG9yZGluYWxQYXJzZTovXGR7MSwyfVwuLyxvcmRpbmFsOiIlZC4iLHdlZWs6e2RvdzoxLGRveTo3fX0pO3JldHVybiB0fSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoInNyIiwic3IiLHtjbG9zZVRleHQ6ItCX0LDRgtCy0L7RgNC4IixwcmV2VGV4dDoiJiN4M0M7IixuZXh0VGV4dDoiJiN4M0U7IixjdXJyZW50VGV4dDoi0JTQsNC90LDRgSIsbW9udGhOYW1lczpbItCI0LDQvdGD0LDRgCIsItCk0LXQsdGA0YPQsNGAIiwi0JzQsNGA0YIiLCLQkNC/0YDQuNC7Iiwi0JzQsNGYIiwi0IjRg9C9Iiwi0IjRg9C7Iiwi0JDQstCz0YPRgdGCIiwi0KHQtdC/0YLQtdC80LHQsNGAIiwi0J7QutGC0L7QsdCw0YAiLCLQndC+0LLQtdC80LHQsNGAIiwi0JTQtdGG0LXQvNCx0LDRgCJdLG1vbnRoTmFtZXNTaG9ydDpbItCI0LDQvSIsItCk0LXQsSIsItCc0LDRgCIsItCQ0L/RgCIsItCc0LDRmCIsItCI0YPQvSIsItCI0YPQuyIsItCQ0LLQsyIsItCh0LXQvyIsItCe0LrRgiIsItCd0L7QsiIsItCU0LXRhiJdLGRheU5hbWVzOlsi0J3QtdC00LXRmdCwIiwi0J/QvtC90LXQtNC10ZnQsNC6Iiwi0KPRgtC+0YDQsNC6Iiwi0KHRgNC10LTQsCIsItCn0LXRgtCy0YDRgtCw0LoiLCLQn9C10YLQsNC6Iiwi0KHRg9Cx0L7RgtCwIl0sZGF5TmFtZXNTaG9ydDpbItCd0LXQtCIsItCf0L7QvSIsItCj0YLQviIsItCh0YDQtSIsItCn0LXRgiIsItCf0LXRgiIsItCh0YPQsSJdLGRheU5hbWVzTWluOlsi0J3QtSIsItCf0L4iLCLQo9GCIiwi0KHRgCIsItCn0LUiLCLQn9C1Iiwi0KHRgyJdLHdlZWtIZWFkZXI6ItCh0LXQtCIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoInNyIix7YnV0dG9uVGV4dDp7bW9udGg6ItCc0LXRgdC10YYiLHdlZWs6ItCd0LXQtNC10ZnQsCIsZGF5OiLQlNCw0L0iLGxpc3Q6ItCf0LvQsNC90LXRgCJ9LGFsbERheVRleHQ6ItCm0LXQviDQtNCw0L0iLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGUpe3JldHVybiIrINGY0L7RiCAiK2V9LG5vRXZlbnRzTWVzc2FnZToi0J3QtdC80LAg0LTQvtCz0LDRktCw0ZjQsCDQt9CwINC/0YDQuNC60LDQtyJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/sv.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsYSl7IWZ1bmN0aW9uKCl7dmFyIGU9YS5kZWZpbmVMb2NhbGUoInN2Iix7bW9udGhzOiJqYW51YXJpX2ZlYnJ1YXJpX21hcnNfYXByaWxfbWFqX2p1bmlfanVsaV9hdWd1c3RpX3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJqYW5fZmViX21hcl9hcHJfbWFqX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYyIuc3BsaXQoIl8iKSx3ZWVrZGF5czoic8O2bmRhZ19tw6VuZGFnX3Rpc2RhZ19vbnNkYWdfdG9yc2RhZ19mcmVkYWdfbMO2cmRhZyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiJzw7ZuX23DpW5fdGlzX29uc190b3JfZnJlX2zDtnIiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46InPDtl9tw6VfdGlfb25fdG9fZnJfbMO2Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IllZWVktTU0tREQiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBba2wuXSBISDptbSIsTExMTDoiZGRkZCBEIE1NTU0gWVlZWSBba2wuXSBISDptbSIsbGxsOiJEIE1NTSBZWVlZIEhIOm1tIixsbGxsOiJkZGQgRCBNTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSWRhZ10gTFQiLG5leHREYXk6IltJbW9yZ29uXSBMVCIsbGFzdERheToiW0lnw6VyXSBMVCIsbmV4dFdlZWs6IltQw6VdIGRkZGQgTFQiLGxhc3RXZWVrOiJbSV0gZGRkZFtzXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToib20gJXMiLHBhc3Q6ImbDtnIgJXMgc2VkYW4iLHM6Im7DpWdyYSBzZWt1bmRlciIsbToiZW4gbWludXQiLG1tOiIlZCBtaW51dGVyIixoOiJlbiB0aW1tZSIsaGg6IiVkIHRpbW1hciIsZDoiZW4gZGFnIixkZDoiJWQgZGFnYXIiLE06ImVuIG3DpW5hZCIsTU06IiVkIG3DpW5hZGVyIix5OiJldHQgw6VyIix5eToiJWQgw6VyIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KGV8YSkvLG9yZGluYWw6ZnVuY3Rpb24oZSl7dmFyIGE9ZSUxMCxyPTE9PT1+fihlJTEwMC8xMCk/ImUiOjE9PT1hPyJhIjoyPT09YT8iYSI6ImUiO3JldHVybiBlK3J9LHdlZWs6e2RvdzoxLGRveTo0fX0pO3JldHVybiBlfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoInN2Iiwic3YiLHtjbG9zZVRleHQ6IlN0w6RuZyIscHJldlRleHQ6IiYjeEFCO0bDtnJyYSIsbmV4dFRleHQ6Ik7DpHN0YSYjeEJCOyIsY3VycmVudFRleHQ6IklkYWciLG1vbnRoTmFtZXM6WyJKYW51YXJpIiwiRmVicnVhcmkiLCJNYXJzIiwiQXByaWwiLCJNYWoiLCJKdW5pIiwiSnVsaSIsIkF1Z3VzdGkiLCJTZXB0ZW1iZXIiLCJPa3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1haiIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9rdCIsIk5vdiIsIkRlYyJdLGRheU5hbWVzU2hvcnQ6WyJTw7ZuIiwiTcOlbiIsIlRpcyIsIk9ucyIsIlRvciIsIkZyZSIsIkzDtnIiXSxkYXlOYW1lczpbIlPDtm5kYWciLCJNw6VuZGFnIiwiVGlzZGFnIiwiT25zZGFnIiwiVG9yc2RhZyIsIkZyZWRhZyIsIkzDtnJkYWciXSxkYXlOYW1lc01pbjpbIlPDtiIsIk3DpSIsIlRpIiwiT24iLCJUbyIsIkZyIiwiTMO2Il0sd2Vla0hlYWRlcjoiVmUiLGRhdGVGb3JtYXQ6Inl5LW1tLWRkIixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksZS5mdWxsQ2FsZW5kYXIubG9jYWxlKCJzdiIse2J1dHRvblRleHQ6e21vbnRoOiJNw6VuYWQiLHdlZWs6IlZlY2thIixkYXk6IkRhZyIsbGlzdDoiUHJvZ3JhbSJ9LGFsbERheVRleHQ6IkhlbGRhZyIsZXZlbnRMaW1pdFRleHQ6InRpbGwiLG5vRXZlbnRzTWVzc2FnZToiSW5nYSBow6RuZGVsc2VyIGF0dCB2aXNhIn0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/th.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKCl7dmFyIGU9dC5kZWZpbmVMb2NhbGUoInRoIix7bW9udGhzOiLguKHguIHguKPguLLguITguKFf4LiB4Li44Lih4Lig4Liy4Lie4Lix4LiZ4LiY4LmMX+C4oeC4teC4meC4suC4hOC4oV/guYDguKHguKnguLLguKLguJlf4Lie4Lik4Lip4Lig4Liy4LiE4LihX+C4oeC4tOC4luC4uOC4meC4suC4ouC4mV/guIHguKPguIHguI7guLLguITguKFf4Liq4Li04LiH4Lir4Liy4LiE4LihX+C4geC4seC4meC4ouC4suC4ouC4mV/guJXguLjguKXguLLguITguKFf4Lie4Lik4Lio4LiI4Li04LiB4Liy4Lii4LiZX+C4mOC4seC4meC4p+C4suC4hOC4oSIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoi4LihLuC4hC5f4LiBLuC4ni5f4Lih4Li1LuC4hC5f4LmA4LihLuC4oi5f4LieLuC4hC5f4Lih4Li0LuC4oi5f4LiBLuC4hC5f4LiqLuC4hC5f4LiBLuC4oi5f4LiVLuC4hC5f4LieLuC4oi5f4LiYLuC4hC4iLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoi4Lit4Liy4LiX4Li04LiV4Lii4LmMX+C4iOC4seC4meC4l+C4o+C5jF/guK3guLHguIfguITguLLguKNf4Lie4Li44LiYX+C4nuC4pOC4q+C4seC4quC4muC4lOC4tV/guKjguLjguIHguKPguYxf4LmA4Liq4Liy4Lij4LmMIi5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IuC4reC4suC4l+C4tOC4leC4ouC5jF/guIjguLHguJnguJfguKPguYxf4Lit4Lix4LiH4LiE4Liy4LijX+C4nuC4uOC4mF/guJ7guKTguKvguLHguKpf4Lio4Li44LiB4Lij4LmMX+C5gOC4quC4suC4o+C5jCIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoi4Lit4LiyLl/guIguX+C4rS5f4LieLl/guJ7guKQuX+C4qC5f4LiqLiIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbG9uZ0RhdGVGb3JtYXQ6e0xUOiJIOm1tIixMVFM6Ikg6bW06c3MiLEw6IllZWVkvTU0vREQiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSDguYDguKfguKXguLIgSDptbSIsTExMTDoi4Lin4Lix4LiZZGRkZOC4l+C4teC5iCBEIE1NTU0gWVlZWSDguYDguKfguKXguLIgSDptbSJ9LG1lcmlkaWVtUGFyc2U6L+C4geC5iOC4reC4meC5gOC4l+C4teC5iOC4ouC4h3zguKvguKXguLHguIfguYDguJfguLXguYjguKLguIcvLGlzUE06ZnVuY3Rpb24oZSl7cmV0dXJuIuC4q+C4peC4seC4h+C5gOC4l+C4teC5iOC4ouC4hyI9PT1lfSxtZXJpZGllbTpmdW5jdGlvbihlLHQsYSl7cmV0dXJuIGU8MTI/IuC4geC5iOC4reC4meC5gOC4l+C4teC5iOC4ouC4hyI6IuC4q+C4peC4seC4h+C5gOC4l+C4teC5iOC4ouC4hyJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb4Lin4Lix4LiZ4LiZ4Li14LmJIOC5gOC4p+C4peC4sl0gTFQiLG5leHREYXk6IlvguJ7guKPguLjguYjguIfguJnguLXguYkg4LmA4Lin4Lil4LiyXSBMVCIsbmV4dFdlZWs6ImRkZGRb4Lir4LiZ4LmJ4LiyIOC5gOC4p+C4peC4sl0gTFQiLGxhc3REYXk6IlvguYDguKHguLfguYjguK3guKfguLLguJnguJnguLXguYkg4LmA4Lin4Lil4LiyXSBMVCIsbGFzdFdlZWs6IlvguKfguLHguJldZGRkZFvguJfguLXguYjguYHguKXguYnguKcg4LmA4Lin4Lil4LiyXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToi4Lit4Li14LiBICVzIixwYXN0OiIlc+C4l+C4teC5iOC5geC4peC5ieC4pyIsczoi4LmE4Lih4LmI4LiB4Li14LmI4Lin4Li04LiZ4Liy4LiX4Li1IixtOiIxIOC4meC4suC4l+C4tSIsbW06IiVkIOC4meC4suC4l+C4tSIsaDoiMSDguIrguLHguYjguKfguYLguKHguIciLGhoOiIlZCDguIrguLHguYjguKfguYLguKHguIciLGQ6IjEg4Lin4Lix4LiZIixkZDoiJWQg4Lin4Lix4LiZIixNOiIxIOC5gOC4lOC4t+C4reC4mSIsTU06IiVkIOC5gOC4lOC4t+C4reC4mSIseToiMSDguJvguLUiLHl5OiIlZCDguJvguLUifX0pO3JldHVybiBlfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoInRoIiwidGgiLHtjbG9zZVRleHQ6IuC4m+C4tOC4lCIscHJldlRleHQ6IiYjeEFCOyYjeEEwO+C4ouC5ieC4reC4mSIsbmV4dFRleHQ6IuC4luC4seC4lOC5hOC4myYjeEEwOyYjeEJCOyIsY3VycmVudFRleHQ6IuC4p+C4seC4meC4meC4teC5iSIsbW9udGhOYW1lczpbIuC4oeC4geC4o+C4suC4hOC4oSIsIuC4geC4uOC4oeC4oOC4suC4nuC4seC4meC4mOC5jCIsIuC4oeC4teC4meC4suC4hOC4oSIsIuC5gOC4oeC4qeC4suC4ouC4mSIsIuC4nuC4pOC4qeC4oOC4suC4hOC4oSIsIuC4oeC4tOC4luC4uOC4meC4suC4ouC4mSIsIuC4geC4o+C4geC4juC4suC4hOC4oSIsIuC4quC4tOC4h+C4q+C4suC4hOC4oSIsIuC4geC4seC4meC4ouC4suC4ouC4mSIsIuC4leC4uOC4peC4suC4hOC4oSIsIuC4nuC4pOC4qOC4iOC4tOC4geC4suC4ouC4mSIsIuC4mOC4seC4meC4p+C4suC4hOC4oSJdLG1vbnRoTmFtZXNTaG9ydDpbIuC4oS7guIQuIiwi4LiBLuC4ni4iLCLguKHguLUu4LiELiIsIuC5gOC4oS7guKIuIiwi4LieLuC4hC4iLCLguKHguLQu4LiiLiIsIuC4gS7guIQuIiwi4LiqLuC4hC4iLCLguIEu4LiiLiIsIuC4lS7guIQuIiwi4LieLuC4oi4iLCLguJgu4LiELiJdLGRheU5hbWVzOlsi4Lit4Liy4LiX4Li04LiV4Lii4LmMIiwi4LiI4Lix4LiZ4LiX4Lij4LmMIiwi4Lit4Lix4LiH4LiE4Liy4LijIiwi4Lie4Li44LiYIiwi4Lie4Lik4Lir4Lix4Liq4Lia4LiU4Li1Iiwi4Lio4Li44LiB4Lij4LmMIiwi4LmA4Liq4Liy4Lij4LmMIl0sZGF5TmFtZXNTaG9ydDpbIuC4reC4si4iLCLguIguIiwi4LitLiIsIuC4ni4iLCLguJ7guKQuIiwi4LioLiIsIuC4qi4iXSxkYXlOYW1lc01pbjpbIuC4reC4si4iLCLguIguIiwi4LitLiIsIuC4ni4iLCLguJ7guKQuIiwi4LioLiIsIuC4qi4iXSx3ZWVrSGVhZGVyOiJXayIsZGF0ZUZvcm1hdDoiZGQvbW0veXkiLGZpcnN0RGF5OjAsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoInRoIix7YnV0dG9uVGV4dDp7bW9udGg6IuC5gOC4lOC4t+C4reC4mSIsd2Vlazoi4Liq4Lix4Lib4LiU4Liy4Lir4LmMIixkYXk6IuC4p+C4seC4mSIsbGlzdDoi4LmB4Lic4LiZ4LiH4Liy4LiZIn0sYWxsRGF5VGV4dDoi4LiV4Lil4Lit4LiU4Lin4Lix4LiZIixldmVudExpbWl0VGV4dDoi4LmA4Lie4Li04LmI4Lih4LmA4LiV4Li04LihIixub0V2ZW50c01lc3NhZ2U6IuC5hOC4oeC5iOC4oeC4teC4geC4tOC4iOC4geC4o+C4o+C4oeC4l+C4teC5iOC4iOC4sOC5geC4quC4lOC4hyJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/tr.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sYSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWEocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmEoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGEsZSl7IWZ1bmN0aW9uKCl7dmFyIGE9ezE6IidpbmNpIiw1OiInaW5jaSIsODoiJ2luY2kiLDcwOiInaW5jaSIsODA6IidpbmNpIiwyOiInbmNpIiw3OiInbmNpIiwyMDoiJ25jaSIsNTA6IiduY2kiLDM6IifDvG5jw7wiLDQ6IifDvG5jw7wiLDEwMDoiJ8O8bmPDvCIsNjoiJ25jxLEiLDk6Iid1bmN1IiwxMDoiJ3VuY3UiLDMwOiIndW5jdSIsNjA6IifEsW5jxLEiLDkwOiInxLFuY8SxIn0sdD1lLmRlZmluZUxvY2FsZSgidHIiLHttb250aHM6Ik9jYWtfxZ51YmF0X01hcnRfTmlzYW5fTWF5xLFzX0hhemlyYW5fVGVtbXV6X0HEn3VzdG9zX0V5bMO8bF9Fa2ltX0thc8SxbV9BcmFsxLFrIi5zcGxpdCgiXyIpLG1vbnRoc1Nob3J0OiJPY2FfxZ51Yl9NYXJfTmlzX01heV9IYXpfVGVtX0HEn3VfRXlsX0VraV9LYXNfQXJhIi5zcGxpdCgiXyIpLHdlZWtkYXlzOiJQYXphcl9QYXphcnRlc2lfU2FsxLFfw4dhcsWfYW1iYV9QZXLFn2VtYmVfQ3VtYV9DdW1hcnRlc2kiLnNwbGl0KCJfIiksd2Vla2RheXNTaG9ydDoiUGF6X1B0c19TYWxfw4dhcl9QZXJfQ3VtX0N0cyIuc3BsaXQoIl8iKSx3ZWVrZGF5c01pbjoiUHpfUHRfU2Ffw4dhX1BlX0N1X0N0Ii5zcGxpdCgiXyIpLGxvbmdEYXRlRm9ybWF0OntMVDoiSEg6bW0iLExUUzoiSEg6bW06c3MiLEw6IkRELk1NLllZWVkiLExMOiJEIE1NTU0gWVlZWSIsTExMOiJEIE1NTU0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFlZWVkgSEg6bW0ifSxjYWxlbmRhcjp7c2FtZURheToiW2J1Z8O8biBzYWF0XSBMVCIsbmV4dERheToiW3lhcsSxbiBzYWF0XSBMVCIsbmV4dFdlZWs6IltoYWZ0YXlhXSBkZGRkIFtzYWF0XSBMVCIsbGFzdERheToiW2TDvG5dIExUIixsYXN0V2VlazoiW2dlw6dlbiBoYWZ0YV0gZGRkZCBbc2FhdF0gTFQiLHNhbWVFbHNlOiJMIn0scmVsYXRpdmVUaW1lOntmdXR1cmU6IiVzIHNvbnJhIixwYXN0OiIlcyDDtm5jZSIsczoiYmlya2HDpyBzYW5peWUiLG06ImJpciBkYWtpa2EiLG1tOiIlZCBkYWtpa2EiLGg6ImJpciBzYWF0IixoaDoiJWQgc2FhdCIsZDoiYmlyIGfDvG4iLGRkOiIlZCBnw7xuIixNOiJiaXIgYXkiLE1NOiIlZCBheSIseToiYmlyIHnEsWwiLHl5OiIlZCB5xLFsIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9JyhpbmNpfG5jaXzDvG5jw7x8bmPEsXx1bmN1fMSxbmPEsSkvLG9yZGluYWw6ZnVuY3Rpb24oZSl7aWYoMD09PWUpcmV0dXJuIGUrIifEsW5jxLEiO3ZhciB0PWUlMTAsbj1lJTEwMC10LGk9ZT49MTAwPzEwMDpudWxsO3JldHVybiBlKyhhW3RdfHxhW25dfHxhW2ldKX0sd2Vlazp7ZG93OjEsZG95Ojd9fSk7cmV0dXJuIHR9KCksYS5mdWxsQ2FsZW5kYXIuZGF0ZXBpY2tlckxvY2FsZSgidHIiLCJ0ciIse2Nsb3NlVGV4dDoia2FwYXQiLHByZXZUZXh0OiImI3gzQztnZXJpIixuZXh0VGV4dDoiaWxlcmkmI3gzZSIsY3VycmVudFRleHQ6ImJ1Z8O8biIsbW9udGhOYW1lczpbIk9jYWsiLCLFnnViYXQiLCJNYXJ0IiwiTmlzYW4iLCJNYXnEsXMiLCJIYXppcmFuIiwiVGVtbXV6IiwiQcSfdXN0b3MiLCJFeWzDvGwiLCJFa2ltIiwiS2FzxLFtIiwiQXJhbMSxayJdLG1vbnRoTmFtZXNTaG9ydDpbIk9jYSIsIsWedWIiLCJNYXIiLCJOaXMiLCJNYXkiLCJIYXoiLCJUZW0iLCJBxJ91IiwiRXlsIiwiRWtpIiwiS2FzIiwiQXJhIl0sZGF5TmFtZXM6WyJQYXphciIsIlBhemFydGVzaSIsIlNhbMSxIiwiw4dhcsWfYW1iYSIsIlBlcsWfZW1iZSIsIkN1bWEiLCJDdW1hcnRlc2kiXSxkYXlOYW1lc1Nob3J0OlsiUHoiLCJQdCIsIlNhIiwiw4dhIiwiUGUiLCJDdSIsIkN0Il0sZGF5TmFtZXNNaW46WyJQeiIsIlB0IiwiU2EiLCLDh2EiLCJQZSIsIkN1IiwiQ3QiXSx3ZWVrSGVhZGVyOiJIZiIsZGF0ZUZvcm1hdDoiZGQubW0ueXkiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiExLHllYXJTdWZmaXg6IiJ9KSxhLmZ1bGxDYWxlbmRhci5sb2NhbGUoInRyIix7YnV0dG9uVGV4dDp7bmV4dDoiaWxlcmkiLG1vbnRoOiJBeSIsd2VlazoiSGFmdGEiLGRheToiR8O8biIsbGlzdDoiQWphbmRhIn0sYWxsRGF5VGV4dDoiVMO8bSBnw7xuIixldmVudExpbWl0VGV4dDoiZGFoYSBmYXpsYSIsbm9FdmVudHNNZXNzYWdlOiJIZXJoYW5naSBiaXIgZXRraW5saWsgZ8O2csO8bnTDvGxlbWVrIGnDp2luIn0pfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/uk.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3ZhciBfPWUuc3BsaXQoIl8iKTtyZXR1cm4gdCUxMD09PTEmJnQlMTAwIT09MTE/X1swXTp0JTEwPj0yJiZ0JTEwPD00JiYodCUxMDA8MTB8fHQlMTAwPj0yMCk/X1sxXTpfWzJdfWZ1bmN0aW9uIF8odCxfLG4pe3ZhciBhPXttbTpfPyLRhdCy0LjQu9C40L3QsF/RhdCy0LjQu9C40L3QuF/RhdCy0LjQu9C40L0iOiLRhdCy0LjQu9C40L3Rg1/RhdCy0LjQu9C40L3QuF/RhdCy0LjQu9C40L0iLGhoOl8/ItCz0L7QtNC40L3QsF/Qs9C+0LTQuNC90Lhf0LPQvtC00LjQvSI6ItCz0L7QtNC40L3Rg1/Qs9C+0LTQuNC90Lhf0LPQvtC00LjQvSIsZGQ6ItC00LXQvdGMX9C00L3Rll/QtNC90ZbQsiIsTU06ItC80ZbRgdGP0YbRjF/QvNGW0YHRj9GG0ZZf0LzRltGB0Y/RhtGW0LIiLHl5OiLRgNGW0Lpf0YDQvtC60Lhf0YDQvtC60ZbQsiJ9O3JldHVybiJtIj09PW4/Xz8i0YXQstC40LvQuNC90LAiOiLRhdCy0LjQu9C40L3RgyI6ImgiPT09bj9fPyLQs9C+0LTQuNC90LAiOiLQs9C+0LTQuNC90YMiOnQrIiAiK2UoYVtuXSwrdCl9ZnVuY3Rpb24gbihlLHQpe3ZhciBfPXtub21pbmF0aXZlOiLQvdC10LTRltC70Y9f0L/QvtC90LXQtNGW0LvQvtC6X9Cy0ZbQstGC0L7RgNC+0Lpf0YHQtdGA0LXQtNCwX9GH0LXRgtCy0LXRgF/Qv+KAmdGP0YLQvdC40YbRj1/RgdGD0LHQvtGC0LAiLnNwbGl0KCJfIiksYWNjdXNhdGl2ZToi0L3QtdC00ZbQu9GOX9C/0L7QvdC10LTRltC70L7Qul/QstGW0LLRgtC+0YDQvtC6X9GB0LXRgNC10LTRg1/Rh9C10YLQstC10YBf0L/igJnRj9GC0L3QuNGG0Y5f0YHRg9Cx0L7RgtGDIi5zcGxpdCgiXyIpLGdlbml0aXZlOiLQvdC10LTRltC70ZZf0L/QvtC90LXQtNGW0LvQutCwX9Cy0ZbQstGC0L7RgNC60LBf0YHQtdGA0LXQtNC4X9GH0LXRgtCy0LXRgNCz0LBf0L/igJnRj9GC0L3QuNGG0ZZf0YHRg9Cx0L7RgtC4Ii5zcGxpdCgiXyIpfSxuPS8oXFtb0JLQstCj0YNdXF0pID9kZGRkLy50ZXN0KHQpPyJhY2N1c2F0aXZlIjovXFs/KD860LzQuNC90YPQu9C+0Zd80L3QsNGB0YLRg9C/0L3QvtGXKT8gP1xdID9kZGRkLy50ZXN0KHQpPyJnZW5pdGl2ZSI6Im5vbWluYXRpdmUiO3JldHVybiBfW25dW2UuZGF5KCldfWZ1bmN0aW9uIGEoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGUrItC+IisoMTE9PT10aGlzLmhvdXJzKCk/ItCxIjoiIikrIl0gTFQifX12YXIgcj10LmRlZmluZUxvY2FsZSgidWsiLHttb250aHM6e2Zvcm1hdDoi0YHRltGH0L3Rj1/Qu9GO0YLQvtCz0L5f0LHQtdGA0LXQt9C90Y9f0LrQstGW0YLQvdGPX9GC0YDQsNCy0L3Rj1/Rh9C10YDQstC90Y9f0LvQuNC/0L3Rj1/RgdC10YDQv9C90Y9f0LLQtdGA0LXRgdC90Y9f0LbQvtCy0YLQvdGPX9C70LjRgdGC0L7Qv9Cw0LTQsF/Qs9GA0YPQtNC90Y8iLnNwbGl0KCJfIiksc3RhbmRhbG9uZToi0YHRltGH0LXQvdGMX9C70Y7RgtC40Llf0LHQtdGA0LXQt9C10L3RjF/QutCy0ZbRgtC10L3RjF/RgtGA0LDQstC10L3RjF/Rh9C10YDQstC10L3RjF/Qu9C40L/QtdC90Yxf0YHQtdGA0L/QtdC90Yxf0LLQtdGA0LXRgdC10L3RjF/QttC+0LLRgtC10L3RjF/Qu9C40YHRgtC+0L/QsNC0X9Cz0YDRg9C00LXQvdGMIi5zcGxpdCgiXyIpfSxtb250aHNTaG9ydDoi0YHRltGHX9C70Y7Rgl/QsdC10YBf0LrQstGW0YJf0YLRgNCw0LJf0YfQtdGA0LJf0LvQuNC/X9GB0LXRgNC/X9Cy0LXRgF/QttC+0LLRgl/Qu9C40YHRgl/Qs9GA0YPQtCIuc3BsaXQoIl8iKSx3ZWVrZGF5czpuLHdlZWtkYXlzU2hvcnQ6ItC90LRf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ItC90LRf0L/QvV/QstGCX9GB0YBf0YfRgl/Qv9GCX9GB0LEiLnNwbGl0KCJfIiksbG9uZ0RhdGVGb3JtYXQ6e0xUOiJISDptbSIsTFRTOiJISDptbTpzcyIsTDoiREQuTU0uWVlZWSIsTEw6IkQgTU1NTSBZWVlZINGALiIsTExMOiJEIE1NTU0gWVlZWSDRgC4sIEhIOm1tIixMTExMOiJkZGRkLCBEIE1NTU0gWVlZWSDRgC4sIEhIOm1tIn0sY2FsZW5kYXI6e3NhbWVEYXk6YSgiW9Ch0YzQvtCz0L7QtNC90ZYgIiksbmV4dERheTphKCJb0JfQsNCy0YLRgNCwICIpLGxhc3REYXk6YSgiW9CS0YfQvtGA0LAgIiksbmV4dFdlZWs6YSgiW9CjXSBkZGRkIFsiKSxsYXN0V2VlazpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmRheSgpKXtjYXNlIDA6Y2FzZSAzOmNhc2UgNTpjYXNlIDY6cmV0dXJuIGEoIlvQnNC40L3Rg9C70L7Rl10gZGRkZCBbIikuY2FsbCh0aGlzKTtjYXNlIDE6Y2FzZSAyOmNhc2UgNDpyZXR1cm4gYSgiW9Cc0LjQvdGD0LvQvtCz0L5dIGRkZGQgWyIpLmNhbGwodGhpcyl9fSxzYW1lRWxzZToiTCJ9LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiLQt9CwICVzIixwYXN0OiIlcyDRgtC+0LzRgyIsczoi0LTQtdC60ZbQu9GM0LrQsCDRgdC10LrRg9C90LQiLG06XyxtbTpfLGg6ItCz0L7QtNC40L3RgyIsaGg6XyxkOiLQtNC10L3RjCIsZGQ6XyxNOiLQvNGW0YHRj9GG0YwiLE1NOl8seToi0YDRltC6Iix5eTpffSxtZXJpZGllbVBhcnNlOi/QvdC+0YfRlnzRgNCw0L3QutGDfNC00L3Rj3zQstC10YfQvtGA0LAvLGlzUE06ZnVuY3Rpb24oZSl7cmV0dXJuL14o0LTQvdGPfNCy0LXRh9C+0YDQsCkkLy50ZXN0KGUpfSxtZXJpZGllbTpmdW5jdGlvbihlLHQsXyl7cmV0dXJuIGU8ND8i0L3QvtGH0ZYiOmU8MTI/ItGA0LDQvdC60YMiOmU8MTc/ItC00L3RjyI6ItCy0LXRh9C+0YDQsCJ9LG9yZGluYWxQYXJzZTovXGR7MSwyfS0o0Ll80LPQvikvLG9yZGluYWw6ZnVuY3Rpb24oZSx0KXtzd2l0Y2godCl7Y2FzZSJNIjpjYXNlImQiOmNhc2UiREREIjpjYXNlInciOmNhc2UiVyI6cmV0dXJuIGUrIi3QuSI7Y2FzZSJEIjpyZXR1cm4gZSsiLdCz0L4iO2RlZmF1bHQ6cmV0dXJuIGV9fSx3ZWVrOntkb3c6MSxkb3k6N319KTtyZXR1cm4gcn0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJ1ayIsInVrIix7Y2xvc2VUZXh0OiLQl9Cw0LrRgNC40YLQuCIscHJldlRleHQ6IiYjeDNDOyIsbmV4dFRleHQ6IiYjeDNFOyIsY3VycmVudFRleHQ6ItCh0YzQvtCz0L7QtNC90ZYiLG1vbnRoTmFtZXM6WyLQodGW0YfQtdC90YwiLCLQm9GO0YLQuNC5Iiwi0JHQtdGA0LXQt9C10L3RjCIsItCa0LLRltGC0LXQvdGMIiwi0KLRgNCw0LLQtdC90YwiLCLQp9C10YDQstC10L3RjCIsItCb0LjQv9C10L3RjCIsItCh0LXRgNC/0LXQvdGMIiwi0JLQtdGA0LXRgdC10L3RjCIsItCW0L7QstGC0LXQvdGMIiwi0JvQuNGB0YLQvtC/0LDQtCIsItCT0YDRg9C00LXQvdGMIl0sbW9udGhOYW1lc1Nob3J0Olsi0KHRltGHIiwi0JvRjtGCIiwi0JHQtdGAIiwi0JrQstGWIiwi0KLRgNCwIiwi0KfQtdGAIiwi0JvQuNC/Iiwi0KHQtdGAIiwi0JLQtdGAIiwi0JbQvtCyIiwi0JvQuNGBIiwi0JPRgNGDIl0sZGF5TmFtZXM6WyLQvdC10LTRltC70Y8iLCLQv9C+0L3QtdC00ZbQu9C+0LoiLCLQstGW0LLRgtC+0YDQvtC6Iiwi0YHQtdGA0LXQtNCwIiwi0YfQtdGC0LLQtdGAIiwi0L/igJnRj9GC0L3QuNGG0Y8iLCLRgdGD0LHQvtGC0LAiXSxkYXlOYW1lc1Nob3J0Olsi0L3QtdC0Iiwi0L/QvdC0Iiwi0LLRltCyIiwi0YHRgNC0Iiwi0YfRgtCyIiwi0L/RgtC9Iiwi0YHQsdGCIl0sZGF5TmFtZXNNaW46WyLQndC0Iiwi0J/QvSIsItCS0YIiLCLQodGAIiwi0KfRgiIsItCf0YIiLCLQodCxIl0sd2Vla0hlYWRlcjoi0KLQuNC2IixkYXRlRm9ybWF0OiJkZC5tbS55eSIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgidWsiLHtidXR0b25UZXh0Onttb250aDoi0JzRltGB0Y/RhtGMIix3ZWVrOiLQotC40LbQtNC10L3RjCIsZGF5OiLQlNC10L3RjCIsbGlzdDoi0J/QvtGA0Y/QtNC+0Log0LTQtdC90L3QuNC5In0sYWxsRGF5VGV4dDoi0KPQstC10YHRjCDQtNC10L3RjCIsZXZlbnRMaW1pdFRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIivRidC1ICIrZSsiLi4uIn0sbm9FdmVudHNNZXNzYWdlOiLQndC10LzQsNGUINC/0L7QtNGW0Lkg0LTQu9GPINCy0ZbQtNC+0LHRgNCw0LbQtdC90L3RjyJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/vi.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKG4peyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sbik6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPW4ocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOm4oalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKG4sdCl7IWZ1bmN0aW9uKCl7dmFyIG49dC5kZWZpbmVMb2NhbGUoInZpIix7bW9udGhzOiJ0aMOhbmcgMV90aMOhbmcgMl90aMOhbmcgM190aMOhbmcgNF90aMOhbmcgNV90aMOhbmcgNl90aMOhbmcgN190aMOhbmcgOF90aMOhbmcgOV90aMOhbmcgMTBfdGjDoW5nIDExX3Row6FuZyAxMiIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiVGgwMV9UaDAyX1RoMDNfVGgwNF9UaDA1X1RoMDZfVGgwN19UaDA4X1RoMDlfVGgxMF9UaDExX1RoMTIiLnNwbGl0KCJfIiksbW9udGhzUGFyc2VFeGFjdDohMCx3ZWVrZGF5czoiY2jhu6cgbmjhuq10X3Ro4bupIGhhaV90aOG7qSBiYV90aOG7qSB0xrBfdGjhu6kgbsSDbV90aOG7qSBzw6F1X3Ro4bupIGLhuqN5Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6IkNOX1QyX1QzX1Q0X1Q1X1Q2X1Q3Ii5zcGxpdCgiXyIpLHdlZWtkYXlzTWluOiJDTl9UMl9UM19UNF9UNV9UNl9UNyIuc3BsaXQoIl8iKSx3ZWVrZGF5c1BhcnNlRXhhY3Q6ITAsbWVyaWRpZW1QYXJzZTovc2F8Y2gvaSxpc1BNOmZ1bmN0aW9uKG4pe3JldHVybi9eY2gkL2kudGVzdChuKX0sbWVyaWRpZW06ZnVuY3Rpb24obix0LGUpe3JldHVybiBuPDEyP2U/InNhIjoiU0EiOmU/ImNoIjoiQ0gifSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkhIOm1tIixMVFM6IkhIOm1tOnNzIixMOiJERC9NTS9ZWVlZIixMTDoiRCBNTU1NIFtuxINtXSBZWVlZIixMTEw6IkQgTU1NTSBbbsSDbV0gWVlZWSBISDptbSIsTExMTDoiZGRkZCwgRCBNTU1NIFtuxINtXSBZWVlZIEhIOm1tIixsOiJERC9NL1lZWVkiLGxsOiJEIE1NTSBZWVlZIixsbGw6IkQgTU1NIFlZWVkgSEg6bW0iLGxsbGw6ImRkZCwgRCBNTU0gWVlZWSBISDptbSJ9LGNhbGVuZGFyOntzYW1lRGF5OiJbSMO0bSBuYXkgbMO6Y10gTFQiLG5leHREYXk6IltOZ8OgeSBtYWkgbMO6Y10gTFQiLG5leHRXZWVrOiJkZGRkIFt0deG6p24gdOG7m2kgbMO6Y10gTFQiLGxhc3REYXk6IltIw7RtIHF1YSBsw7pjXSBMVCIsbGFzdFdlZWs6ImRkZGQgW3R14bqnbiBy4buTaSBsw7pjXSBMVCIsc2FtZUVsc2U6IkwifSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXMgdOG7m2kiLHBhc3Q6IiVzIHRyxrDhu5tjIixzOiJ2w6BpIGdpw6J5IixtOiJt4buZdCBwaMO6dCIsbW06IiVkIHBow7p0IixoOiJt4buZdCBnaeG7nSIsaGg6IiVkIGdp4budIixkOiJt4buZdCBuZ8OgeSIsZGQ6IiVkIG5nw6B5IixNOiJt4buZdCB0aMOhbmciLE1NOiIlZCB0aMOhbmciLHk6Im3hu5l0IG7Eg20iLHl5OiIlZCBuxINtIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9LyxvcmRpbmFsOmZ1bmN0aW9uKG4pe3JldHVybiBufSx3ZWVrOntkb3c6MSxkb3k6NH19KTtyZXR1cm4gbn0oKSxuLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJ2aSIsInZpIix7Y2xvc2VUZXh0OiLEkMOzbmciLHByZXZUZXh0OiImI3gzQztUcsaw4bubYyIsbmV4dFRleHQ6IlRp4bq/cCYjeDNFOyIsY3VycmVudFRleHQ6IkjDtG0gbmF5Iixtb250aE5hbWVzOlsiVGjDoW5nIE3hu5l0IiwiVGjDoW5nIEhhaSIsIlRow6FuZyBCYSIsIlRow6FuZyBUxrAiLCJUaMOhbmcgTsSDbSIsIlRow6FuZyBTw6F1IiwiVGjDoW5nIELhuqN5IiwiVGjDoW5nIFTDoW0iLCJUaMOhbmcgQ2jDrW4iLCJUaMOhbmcgTcaw4budaSIsIlRow6FuZyBNxrDhu51pIE3hu5l0IiwiVGjDoW5nIE3GsOG7nWkgSGFpIl0sbW9udGhOYW1lc1Nob3J0OlsiVGjDoW5nIDEiLCJUaMOhbmcgMiIsIlRow6FuZyAzIiwiVGjDoW5nIDQiLCJUaMOhbmcgNSIsIlRow6FuZyA2IiwiVGjDoW5nIDciLCJUaMOhbmcgOCIsIlRow6FuZyA5IiwiVGjDoW5nIDEwIiwiVGjDoW5nIDExIiwiVGjDoW5nIDEyIl0sZGF5TmFtZXM6WyJDaOG7pyBOaOG6rXQiLCJUaOG7qSBIYWkiLCJUaOG7qSBCYSIsIlRo4bupIFTGsCIsIlRo4bupIE7Eg20iLCJUaOG7qSBTw6F1IiwiVGjhu6kgQuG6o3kiXSxkYXlOYW1lc1Nob3J0OlsiQ04iLCJUMiIsIlQzIiwiVDQiLCJUNSIsIlQ2IiwiVDciXSxkYXlOYW1lc01pbjpbIkNOIiwiVDIiLCJUMyIsIlQ0IiwiVDUiLCJUNiIsIlQ3Il0sd2Vla0hlYWRlcjoiVHUiLGRhdGVGb3JtYXQ6ImRkL21tL3l5IixmaXJzdERheTowLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OiIifSksbi5mdWxsQ2FsZW5kYXIubG9jYWxlKCJ2aSIse2J1dHRvblRleHQ6e21vbnRoOiJUaMOhbmciLHdlZWs6IlR1w6LMgG4iLGRheToiTmfDoHkiLGxpc3Q6Ikzhu4tjaCBiaeG7g3UifSxhbGxEYXlUZXh0OiJD4bqjIG5nw6B5IixldmVudExpbWl0VGV4dDpmdW5jdGlvbihuKXtyZXR1cm4iKyB0aMOqbSAiK259LG5vRXZlbnRzTWVzc2FnZToiS2jDtG5nIGPDsyBz4buxIGtp4buHbiDEkeG7gyBoaeG7g24gdGjhu4sifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/zh-cn.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKCl7dmFyIGU9dC5kZWZpbmVMb2NhbGUoInpoLWNuIix7bW9udGhzOiLkuIDmnIhf5LqM5pyIX+S4ieaciF/lm5vmnIhf5LqU5pyIX+WFreaciF/kuIPmnIhf5YWr5pyIX+S5neaciF/ljYHmnIhf5Y2B5LiA5pyIX+WNgeS6jOaciCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiMeaciF8y5pyIXzPmnIhfNOaciF815pyIXzbmnIhfN+aciF845pyIXznmnIhfMTDmnIhfMTHmnIhfMTLmnIgiLnNwbGl0KCJfIiksd2Vla2RheXM6IuaYn+acn+aXpV/mmJ/mnJ/kuIBf5pif5pyf5LqMX+aYn+acn+S4iV/mmJ/mnJ/lm5tf5pif5pyf5LqUX+aYn+acn+WFrSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLlkajml6Vf5ZGo5LiAX+WRqOS6jF/lkajkuIlf5ZGo5ZubX+WRqOS6lF/lkajlha0iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IuaXpV/kuIBf5LqMX+S4iV/lm5tf5LqUX+WFrSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkFo54K5bW3liIYiLExUUzoiQWjngrlt5YiGc+enkiIsTDoiWVlZWS1NTS1ERCIsTEw6IllZWVnlubRNTU1E5pelIixMTEw6IllZWVnlubRNTU1E5pelQWjngrltbeWIhiIsTExMTDoiWVlZWeW5tE1NTUTml6VkZGRkQWjngrltbeWIhiIsbDoiWVlZWS1NTS1ERCIsbGw6IllZWVnlubRNTU1E5pelIixsbGw6IllZWVnlubRNTU1E5pelQWjngrltbeWIhiIsbGxsbDoiWVlZWeW5tE1NTUTml6VkZGRkQWjngrltbeWIhiJ9LG1lcmlkaWVtUGFyc2U6L+WHjOaZqHzml6nkuIp85LiK5Y2IfOS4reWNiHzkuIvljYh85pma5LiKLyxtZXJpZGllbUhvdXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gMTI9PT1lJiYoZT0wKSwi5YeM5pmoIj09PXR8fCLml6nkuIoiPT09dHx8IuS4iuWNiCI9PT10P2U6IuS4i+WNiCI9PT10fHwi5pma5LiKIj09PXQ/ZSsxMjplPj0xMT9lOmUrMTJ9LG1lcmlkaWVtOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0xMDAqZSt0O3JldHVybiByPDYwMD8i5YeM5pmoIjpyPDkwMD8i5pep5LiKIjpyPDExMzA/IuS4iuWNiCI6cjwxMjMwPyLkuK3ljYgiOnI8MTgwMD8i5LiL5Y2IIjoi5pma5LiKIn0sY2FsZW5kYXI6e3NhbWVEYXk6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMubWludXRlcygpPyJb5LuK5aSpXUFoW+eCueaVtF0iOiJb5LuK5aSpXUxUIn0sbmV4dERheTpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5taW51dGVzKCk/IlvmmI7lpKldQWhb54K55pW0XSI6IlvmmI7lpKldTFQifSxsYXN0RGF5OmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLm1pbnV0ZXMoKT8iW+aYqOWkqV1BaFvngrnmlbRdIjoiW+aYqOWkqV1MVCJ9LG5leHRXZWVrOmZ1bmN0aW9uKCl7dmFyIGUsbjtyZXR1cm4gZT10KCkuc3RhcnRPZigid2VlayIpLG49dGhpcy5kaWZmKGUsImRheXMiKT49Nz8iW+S4i10iOiJb5pysXSIsMD09PXRoaXMubWludXRlcygpP24rImRkZEFo54K55pW0IjpuKyJkZGRBaOeCuW1tIn0sbGFzdFdlZWs6ZnVuY3Rpb24oKXt2YXIgZSxuO3JldHVybiBlPXQoKS5zdGFydE9mKCJ3ZWVrIiksbj10aGlzLnVuaXgoKTxlLnVuaXgoKT8iW+S4il0iOiJb5pysXSIsMD09PXRoaXMubWludXRlcygpP24rImRkZEFo54K55pW0IjpuKyJkZGRBaOeCuW1tIn0sc2FtZUVsc2U6IkxMIn0sb3JkaW5hbFBhcnNlOi9cZHsxLDJ9KOaXpXzmnIh85ZGoKS8sb3JkaW5hbDpmdW5jdGlvbihlLHQpe3N3aXRjaCh0KXtjYXNlImQiOmNhc2UiRCI6Y2FzZSJEREQiOnJldHVybiBlKyLml6UiO2Nhc2UiTSI6cmV0dXJuIGUrIuaciCI7Y2FzZSJ3IjpjYXNlIlciOnJldHVybiBlKyLlkagiO2RlZmF1bHQ6cmV0dXJuIGV9fSxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiJXPlhoUiLHBhc3Q6IiVz5YmNIixzOiLlh6Dnp5IiLG06IjEg5YiG6ZKfIixtbToiJWQg5YiG6ZKfIixoOiIxIOWwj+aXtiIsaGg6IiVkIOWwj+aXtiIsZDoiMSDlpKkiLGRkOiIlZCDlpKkiLE06IjEg5Liq5pyIIixNTToiJWQg5Liq5pyIIix5OiIxIOW5tCIseXk6IiVkIOW5tCJ9LHdlZWs6e2RvdzoxLGRveTo0fX0pO3JldHVybiBlfSgpLGUuZnVsbENhbGVuZGFyLmRhdGVwaWNrZXJMb2NhbGUoInpoLWNuIiwiemgtQ04iLHtjbG9zZVRleHQ6IuWFs+mXrSIscHJldlRleHQ6IiYjeDNDO+S4iuaciCIsbmV4dFRleHQ6IuS4i+aciCYjeDNFOyIsY3VycmVudFRleHQ6IuS7iuWkqSIsbW9udGhOYW1lczpbIuS4gOaciCIsIuS6jOaciCIsIuS4ieaciCIsIuWbm+aciCIsIuS6lOaciCIsIuWFreaciCIsIuS4g+aciCIsIuWFq+aciCIsIuS5neaciCIsIuWNgeaciCIsIuWNgeS4gOaciCIsIuWNgeS6jOaciCJdLG1vbnRoTmFtZXNTaG9ydDpbIuS4gOaciCIsIuS6jOaciCIsIuS4ieaciCIsIuWbm+aciCIsIuS6lOaciCIsIuWFreaciCIsIuS4g+aciCIsIuWFq+aciCIsIuS5neaciCIsIuWNgeaciCIsIuWNgeS4gOaciCIsIuWNgeS6jOaciCJdLGRheU5hbWVzOlsi5pif5pyf5pelIiwi5pif5pyf5LiAIiwi5pif5pyf5LqMIiwi5pif5pyf5LiJIiwi5pif5pyf5ZubIiwi5pif5pyf5LqUIiwi5pif5pyf5YWtIl0sZGF5TmFtZXNTaG9ydDpbIuWRqOaXpSIsIuWRqOS4gCIsIuWRqOS6jCIsIuWRqOS4iSIsIuWRqOWbmyIsIuWRqOS6lCIsIuWRqOWFrSJdLGRheU5hbWVzTWluOlsi5pelIiwi5LiAIiwi5LqMIiwi5LiJIiwi5ZubIiwi5LqUIiwi5YWtIl0sd2Vla0hlYWRlcjoi5ZGoIixkYXRlRm9ybWF0OiJ5eS1tbS1kZCIsZmlyc3REYXk6MSxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITAseWVhclN1ZmZpeDoi5bm0In0pLGUuZnVsbENhbGVuZGFyLmxvY2FsZSgiemgtY24iLHtidXR0b25UZXh0Onttb250aDoi5pyIIix3ZWVrOiLlkagiLGRheToi5pelIixsaXN0OiLml6XnqIsifSxhbGxEYXlUZXh0OiLlhajlpKkiLGV2ZW50TGltaXRUZXh0OmZ1bmN0aW9uKGUpe3JldHVybiLlj6blpJYgIitlKyIg5LiqIn0sbm9FdmVudHNNZXNzYWdlOiLmsqHmnInkuovku7bmmL7npLoifSl9KTs=]]></data>
	</file>
	<file>
	  <filename>/lib/fullcalendar/locale/zh-tw.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IWZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwibW9tZW50Il0sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWUocmVxdWlyZSgianF1ZXJ5IikscmVxdWlyZSgibW9tZW50IikpOmUoalF1ZXJ5LG1vbWVudCl9KGZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uKCl7dmFyIGU9dC5kZWZpbmVMb2NhbGUoInpoLXR3Iix7bW9udGhzOiLkuIDmnIhf5LqM5pyIX+S4ieaciF/lm5vmnIhf5LqU5pyIX+WFreaciF/kuIPmnIhf5YWr5pyIX+S5neaciF/ljYHmnIhf5Y2B5LiA5pyIX+WNgeS6jOaciCIuc3BsaXQoIl8iKSxtb250aHNTaG9ydDoiMeaciF8y5pyIXzPmnIhfNOaciF815pyIXzbmnIhfN+aciF845pyIXznmnIhfMTDmnIhfMTHmnIhfMTLmnIgiLnNwbGl0KCJfIiksd2Vla2RheXM6IuaYn+acn+aXpV/mmJ/mnJ/kuIBf5pif5pyf5LqMX+aYn+acn+S4iV/mmJ/mnJ/lm5tf5pif5pyf5LqUX+aYn+acn+WFrSIuc3BsaXQoIl8iKSx3ZWVrZGF5c1Nob3J0OiLpgLHml6Vf6YCx5LiAX+mAseS6jF/pgLHkuIlf6YCx5ZubX+mAseS6lF/pgLHlha0iLnNwbGl0KCJfIiksd2Vla2RheXNNaW46IuaXpV/kuIBf5LqMX+S4iV/lm5tf5LqUX+WFrSIuc3BsaXQoIl8iKSxsb25nRGF0ZUZvcm1hdDp7TFQ6IkFo6buebW3liIYiLExUUzoiQWjpu55t5YiGc+enkiIsTDoiWVlZWeW5tE1NTUTml6UiLExMOiJZWVlZ5bm0TU1NROaXpSIsTExMOiJZWVlZ5bm0TU1NROaXpUFo6buebW3liIYiLExMTEw6IllZWVnlubRNTU1E5pelZGRkZEFo6buebW3liIYiLGw6IllZWVnlubRNTU1E5pelIixsbDoiWVlZWeW5tE1NTUTml6UiLGxsbDoiWVlZWeW5tE1NTUTml6VBaOm7nm1t5YiGIixsbGxsOiJZWVlZ5bm0TU1NROaXpWRkZGRBaOm7nm1t5YiGIn0sbWVyaWRpZW1QYXJzZTov5YeM5pmofOaXqeS4inzkuIrljYh85Lit5Y2IfOS4i+WNiHzmmZrkuIovLG1lcmlkaWVtSG91cjpmdW5jdGlvbihlLHQpe3JldHVybiAxMj09PWUmJihlPTApLCLlh4zmmagiPT09dHx8IuaXqeS4iiI9PT10fHwi5LiK5Y2IIj09PXQ/ZToi5Lit5Y2IIj09PXQ/ZT49MTE/ZTplKzEyOiLkuIvljYgiPT09dHx8IuaZmuS4iiI9PT10P2UrMTI6dm9pZCAwfSxtZXJpZGllbTpmdW5jdGlvbihlLHQsYSl7dmFyIGQ9MTAwKmUrdDtyZXR1cm4gZDw2MDA/IuWHjOaZqCI6ZDw5MDA/IuaXqeS4iiI6ZDwxMTMwPyLkuIrljYgiOmQ8MTIzMD8i5Lit5Y2IIjpkPDE4MDA/IuS4i+WNiCI6IuaZmuS4iiJ9LGNhbGVuZGFyOntzYW1lRGF5OiJb5LuK5aSpXUxUIixuZXh0RGF5OiJb5piO5aSpXUxUIixuZXh0V2VlazoiW+S4i11kZGRkTFQiLGxhc3REYXk6IlvmmKjlpKldTFQiLGxhc3RXZWVrOiJb5LiKXWRkZGRMVCIsc2FtZUVsc2U6IkwifSxvcmRpbmFsUGFyc2U6L1xkezEsMn0o5pelfOaciHzpgLEpLyxvcmRpbmFsOmZ1bmN0aW9uKGUsdCl7c3dpdGNoKHQpe2Nhc2UiZCI6Y2FzZSJEIjpjYXNlIkRERCI6cmV0dXJuIGUrIuaXpSI7Y2FzZSJNIjpyZXR1cm4gZSsi5pyIIjtjYXNlInciOmNhc2UiVyI6cmV0dXJuIGUrIumAsSI7ZGVmYXVsdDpyZXR1cm4gZX19LHJlbGF0aXZlVGltZTp7ZnV0dXJlOiIlc+WFpyIscGFzdDoiJXPliY0iLHM6IuW5vuenkiIsbToiMSDliIbpkJgiLG1tOiIlZCDliIbpkJgiLGg6IjEg5bCP5pmCIixoaDoiJWQg5bCP5pmCIixkOiIxIOWkqSIsZGQ6IiVkIOWkqSIsTToiMSDlgIvmnIgiLE1NOiIlZCDlgIvmnIgiLHk6IjEg5bm0Iix5eToiJWQg5bm0In19KTtyZXR1cm4gZX0oKSxlLmZ1bGxDYWxlbmRhci5kYXRlcGlja2VyTG9jYWxlKCJ6aC10dyIsInpoLVRXIix7Y2xvc2VUZXh0OiLpl5zplokiLHByZXZUZXh0OiImI3gzQzvkuIrmnIgiLG5leHRUZXh0OiLkuIvmnIgmI3gzRTsiLGN1cnJlbnRUZXh0OiLku4rlpKkiLG1vbnRoTmFtZXM6WyLkuIDmnIgiLCLkuozmnIgiLCLkuInmnIgiLCLlm5vmnIgiLCLkupTmnIgiLCLlha3mnIgiLCLkuIPmnIgiLCLlhavmnIgiLCLkuZ3mnIgiLCLljYHmnIgiLCLljYHkuIDmnIgiLCLljYHkuozmnIgiXSxtb250aE5hbWVzU2hvcnQ6WyLkuIDmnIgiLCLkuozmnIgiLCLkuInmnIgiLCLlm5vmnIgiLCLkupTmnIgiLCLlha3mnIgiLCLkuIPmnIgiLCLlhavmnIgiLCLkuZ3mnIgiLCLljYHmnIgiLCLljYHkuIDmnIgiLCLljYHkuozmnIgiXSxkYXlOYW1lczpbIuaYn+acn+aXpSIsIuaYn+acn+S4gCIsIuaYn+acn+S6jCIsIuaYn+acn+S4iSIsIuaYn+acn+WbmyIsIuaYn+acn+S6lCIsIuaYn+acn+WFrSJdLGRheU5hbWVzU2hvcnQ6WyLlkajml6UiLCLlkajkuIAiLCLlkajkuowiLCLlkajkuIkiLCLlkajlm5siLCLlkajkupQiLCLlkajlha0iXSxkYXlOYW1lc01pbjpbIuaXpSIsIuS4gCIsIuS6jCIsIuS4iSIsIuWbmyIsIuS6lCIsIuWFrSJdLHdlZWtIZWFkZXI6IuWRqCIsZGF0ZUZvcm1hdDoieXkvbW0vZGQiLGZpcnN0RGF5OjEsaXNSVEw6ITEsc2hvd01vbnRoQWZ0ZXJZZWFyOiEwLHllYXJTdWZmaXg6IuW5tCJ9KSxlLmZ1bGxDYWxlbmRhci5sb2NhbGUoInpoLXR3Iix7YnV0dG9uVGV4dDp7bW9udGg6IuaciCIsd2Vlazoi6YCxIixkYXk6IuWkqSIsbGlzdDoi5rS75YuV5YiX6KGoIn0sYWxsRGF5VGV4dDoi5pW05aSpIixldmVudExpbWl0VGV4dDoi6aGv56S65pu05aSaIixub0V2ZW50c01lc3NhZ2U6IuayoeacieS7u+S9lea0u+WLlSJ9KX0pOw==]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCB2ZXJzaW9uX2NvbXBhcmUocGhwdmVyc2lvbigpLCc1LjQuMycpIDwgMCApIHsKICAgIHJldHVybiAiTWluaW11bSBQSFAgdmVyc2lvbiBvZiA1LjQuMyByZXF1aXJlZCI7Cn0KCiR1aWQgPSBnZXRfdXNlcmlkKCk7CiRkYiA9ICR0aGlzLT5HZXREYigpOwokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7CiR0YWJsZV9vcHRpb25zID0gYXJyYXkoJ215c3FsJyA9PiAnRU5HSU5FPUlubm9EQicpOwoKLy8gY3JlYXRlIGNhdGVnb3JpZXMgdGFibGUKJGZpZWxkcyA9ICIKCQkJY2F0ZWdvcnlfaWQgSSBLRVkgTk9UIE5VTEwsCgkJCWNhdGVnb3J5X25hbWUgQygyNTUpIE5PVCBOVUxMLAogICAgICAgICAgICBjYXRlZ29yeV9iZ2NvbG9yIEMoMTApLAogICAgICAgICAgICBjYXRlZ29yeV9mZ2NvbG9yIEMoMTApLAoJCQljYXRlZ29yeV9vcmRlciBJCgkJIjsKJHNxbF9hcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCgkdGhpcy0+Y2F0ZWdvcmllc190YWJsZV9uYW1lLCAkZmllbGRzLCAkdGFibGVfb3B0aW9ucyk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbF9hcnJheSk7CgokZGItPkNyZWF0ZVNlcXVlbmNlKCR0aGlzLT5jYXRlZ29yaWVzX3RhYmxlX25hbWUgLiAnX3NlcScpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZUluZGV4U1FMKCdpbmRleF9jYXRlZ29yeV9uYW1lJywkdGhpcy0+Y2F0ZWdvcmllc190YWJsZV9uYW1lLCdjYXRlZ29yeV9uYW1lJyk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCi8vIGNyZWF0ZSBmaWVsZHMgdGFibGUKJGZpZWxkcyA9ICJmaWVsZF9uYW1lIEMoMjU1KSBLRVksCiAgICAgICAgICAgZmllbGRfdHlwZSBJLAogICAgICAgICAgIGZpZWxkX3NlYXJjaGFibGUgSTEsCiAgICAgICAgICAgZmllbGRfZXh0cmEgWCwKICAgICAgICAgICBmaWVsZF9vcmRlciBJCgkgICI7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCgkdGhpcy0+ZmllbGRzX3RhYmxlX25hbWUsICRmaWVsZHMsICR0YWJsZV9vcHRpb25zKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZUluZGV4U1FMKCdpbmRleF9maWVsZF9uYW1lJywkdGhpcy0+ZmllbGRzX3RhYmxlX25hbWUsJ2ZpZWxkX25hbWUnKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKCi8vIGNyZWF0ZSBldmVudHMgdGFibGUKJGZpZWxkcyA9ICIKCQkJZXZlbnRfaWQgSSBLRVksCgkJCWV2ZW50X3RpdGxlIEMoMjU1KSwKCQkJZXZlbnRfc3VtbWFyeSBYLAoJCQlldmVudF9kZXRhaWxzIFgsCgkJCWV2ZW50X2RhdGVfc3RhcnQgIi5DTVNfQURPREJfRFQuIiwKCQkJZXZlbnRfZGF0ZV9lbmQgIi5DTVNfQURPREJfRFQuIiwKCQkJZXZlbnRfcGFyZW50X2lkIEksCgkJCWV2ZW50X3JlY3VyX3BlcmlvZCBDKDEwKSwKCQkJZXZlbnRfZGF0ZV9yZWN1cl9lbmQgIi5DTVNfQURPREJfRFQuIiwKCQkJZXZlbnRfY3JlYXRlZF9ieSBJLAoJCQlldmVudF9jcmVhdGVfZGF0ZSAiLkNNU19BRE9EQl9EVC4iLAoJCQlldmVudF9tb2RpZmllZF9kYXRlICIuQ01TX0FET0RCX0RULiIsCiAgICAgICAgICAgIGV2ZW50X3JlY3VyX25ldmVudHMgSSwKICAgICAgICAgICAgZXZlbnRfcmVjdXJfaW50ZXJ2YWwgSSwKICAgICAgICAgICAgZXZlbnRfcmVjdXJfd2Vla2RheXMgQygyNTUpLAogICAgICAgICAgICBldmVudF9yZWN1cl9tb250aGRheXMgQygyNTUpLAogICAgICAgICAgICBldmVudF9hbGxvd3Nfb3ZlcmxhcCBJMSwKICAgICAgICAgICAgZXZlbnRfYWxsX2RheSBJMSwKICAgICAgICAgICAgZXZlbnRfc3RhdHVzIEMoMSkiOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lLCAkZmllbGRzLCAkdGFibGVfb3B0aW9ucyk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiRkYi0+RXhlY3V0ZSgnQUxURVIgVEFCTEUgJy4kdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUuJyBBREQgRlVMTFRFWFQoZXZlbnRfdGl0bGUsZXZlbnRfc3VtbWFyeSxldmVudF9kZXRhaWxzKScpOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlSW5kZXhTUUwoJ2NnY2FsZW5kYXJfZXZlbnRzX2RhdGUnLCR0aGlzLT5ldmVudHNfdGFibGVfbmFtZSwnZXZlbnRfZGF0ZV9zdGFydCxldmVudF9kYXRlX2VuZCcpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVJbmRleFNRTCgnY2djYWxlbmRhcl9ldmVudHNfZGF0ZTInLCR0aGlzLT5ldmVudHNfdGFibGVfbmFtZSwnZXZlbnRfZGF0ZV9zdGFydCxldmVudF9kYXRlX2VuZCxldmVudF9zdGF0dXMnKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlSW5kZXhTUUwoJ2NnY2FsZW5kYXJfZXZlbnRzX2NyZWF0ZWQnLCR0aGlzLT5ldmVudHNfdGFibGVfbmFtZSwnZXZlbnRfY3JlYXRlX2RhdGUnKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlSW5kZXhTUUwoJ2NnY2FsZW5kYXJfZXZlbnRzX21vZGlmaWVkJywkdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUsJ2V2ZW50X21vZGlmaWVkX2RhdGUnKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlSW5kZXhTUUwoJ2NnY2FsZW5kYXJfZXZlbnRzX3BhcmVudCcsJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lLCdldmVudF9wYXJlbnRfaWQnKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJGRiLT5DcmVhdGVTZXF1ZW5jZSgkdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUuJ19zZXEnKTsKCi8vIGNyZWF0ZSBldmVudF9maWVsZF92YWx1ZXMgdGFibGUKJGZpZWxkcyA9ICIKCQkJZmllbGRfbmFtZSBDKDI1NSkgS0VZLAoJCQlldmVudF9pZCBJIEtFWSwKCQkJZmllbGRfdmFsdWUgWAoJCSI7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCgkdGhpcy0+ZXZlbnRfZmllbGRfdmFsdWVzX3RhYmxlX25hbWUsICRmaWVsZHMsICR0YWJsZV9vcHRpb25zICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoICRzcWxhcnJheSApOwoKLy8gY3JlYXRlIGV2ZW50c190b19jYXRlZ29yaWVzIHRhYmxlCiRmaWVsZHMgPSAiCgkJCWNhdGVnb3J5X2lkIEkgS0VZLAoJCQlldmVudF9pZCBJIEtFWQoJCSI7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCgkdGhpcy0+ZXZlbnRzX3RvX2NhdGVnb3JpZXNfdGFibGVfbmFtZSwgJGZpZWxkcywgJHRhYmxlX29wdGlvbnMgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSggJHNxbGFycmF5ICk7CgovLyBzZXQgdXAgYSBHZW5lcmFsIGNhdGVnb3J5CiRuZXdfaWQgPSAkZGItPkdlbklEKCR0aGlzLT5jYXRlZ29yaWVzX3RhYmxlX25hbWUuJ19zZXEnKTsKCiRzcWwgPSAnSU5TRVJUIElOVE8gJyAuICR0aGlzLT5jYXRlZ29yaWVzX3RhYmxlX25hbWUgLiAiIChjYXRlZ29yeV9pZCwgY2F0ZWdvcnlfbmFtZSwgY2F0ZWdvcnlfb3JkZXIpCgkJCQkJCVZBTFVFUyAoJG5ld19pZCwgJ0dlbmVyYWwnLCA1MCkiOwokZGItPkV4ZWN1dGUoJHNxbCk7CgoKCi8vCi8vIHRlbXBsYXRlcwovLwoKLy8gdG9kbzogZ2V0IHRoZSBpZCBvZiB0aGUgZGVmYXVsdCBkZXNpZ24uCgp0cnkgewogICAgLy8gc2VhcmNoIGZvcm0gdGVtcGxhdGUgdHlwZQogICAgJHNlYXJjaF90ZW1wbGF0ZV90eXBlID0gbmV3IFxDbXNMYXlvdXRUZW1wbGF0ZVR5cGUoKTsKICAgICRzZWFyY2hfdGVtcGxhdGVfdHlwZS0+c2V0X29yaWdpbmF0b3IoJHRoaXMtPkdldE5hbWUoKSk7CiAgICAkc2VhcmNoX3RlbXBsYXRlX3R5cGUtPnNldF9uYW1lKCdzZWFyY2hmb3JtJyk7CiAgICAkc2VhcmNoX3RlbXBsYXRlX3R5cGUtPnNldF9kZmx0X2ZsYWcoVFJVRSk7CiAgICAkc2VhcmNoX3RlbXBsYXRlX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdDR0NhbGVuZGFyOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICAgJHNlYXJjaF90ZW1wbGF0ZV90eXBlLT5zZXRfY29udGVudF9jYWxsYmFjaygnQ0dDYWxlbmRhcjo6cmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzJyk7CiAgICAkc2VhcmNoX3RlbXBsYXRlX3R5cGUtPnJlc2V0X2NvbnRlbnRfdG9fZmFjdG9yeSgpOwogICAgJHNlYXJjaF90ZW1wbGF0ZV90eXBlLT5zYXZlKCk7CgogICAgLy8gY3JlYXRlIGEgc2FtcGxlIHRlbXBsYXRlIG9mIHRoaXMgdHlwZQogICAgJGZuID0gX19ESVJfXy4nL3RlbXBsYXRlcy9vcmlnX3NlYXJjaF90ZW1wbGF0ZS50cGwnOwogICAgaWYoIGlzX2ZpbGUoICRmbiApICkgewogICAgICAgICRjb250ZW50cyA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOwogICAgICAgICR0cGwgPSBuZXcgQ21zTGF5b3V0VGVtcGxhdGUoKTsKICAgICAgICAkdHBsLT5zZXRfbmFtZSgnQ0dDYWxlbmRhciBTZWFyY2ggRm9ybSBTYW1wbGUnKTsKICAgICAgICAkdHBsLT5zZXRfb3duZXIoJHVpZCk7CiAgICAgICAgJHRwbC0+c2V0X2NvbnRlbnQoJGNvbnRlbnRzKTsKICAgICAgICAkdHBsLT5zZXRfdHlwZSgkc2VhcmNoX3RlbXBsYXRlX3R5cGUpOwogICAgICAgICR0cGwtPnNldF90eXBlX2RmbHQoVFJVRSk7CiAgICAgICAgJHRwbC0+c2F2ZSgpOwogICAgfQp9CmNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgLy8gbG9nIGl0CiAgICBkZWJ1Z190b19sb2coJ0VSUk9SOiAnLiRlLT5HZXRNZXNzYWdlKCkpOwogICAgZGVidWdfdG9fbG9nKCRlLT5HZXRUcmFjZUFzU3RyaW5nKCkpOwogICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnSW5zdGFsbGF0aW9uIEVycm9yOiAnLiRlLT5HZXRNZXNzYWdlKCkpOwp9Cgp0cnkgewogICAgJHNlYXJjaHJlc3VsdF90ZW1wbGF0ZV90eXBlID0gbmV3IFxDbXNMYXlvdXRUZW1wbGF0ZVR5cGUoKTsKICAgICRzZWFyY2hyZXN1bHRfdGVtcGxhdGVfdHlwZS0+c2V0X29yaWdpbmF0b3IoJHRoaXMtPkdldE5hbWUoKSk7CiAgICAkc2VhcmNocmVzdWx0X3RlbXBsYXRlX3R5cGUtPnNldF9uYW1lKCdzZWFyY2hyZXN1bHQnKTsKICAgICRzZWFyY2hyZXN1bHRfdGVtcGxhdGVfdHlwZS0+c2V0X2RmbHRfZmxhZyhUUlVFKTsKICAgICRzZWFyY2hyZXN1bHRfdGVtcGxhdGVfdHlwZS0+c2V0X2xhbmdfY2FsbGJhY2soJ0NHQ2FsZW5kYXI6OnBhZ2VfdHlwZV9sYW5nX2NhbGxiYWNrJyk7CiAgICAkc2VhcmNocmVzdWx0X3RlbXBsYXRlX3R5cGUtPnNldF9jb250ZW50X2NhbGxiYWNrKCdDR0NhbGVuZGFyOjpyZXNldF9wYWdlX3R5cGVfZGVmYXVsdHMnKTsKICAgICRzZWFyY2hyZXN1bHRfdGVtcGxhdGVfdHlwZS0+cmVzZXRfY29udGVudF90b19mYWN0b3J5KCk7CiAgICAkc2VhcmNocmVzdWx0X3RlbXBsYXRlX3R5cGUtPnNhdmUoKTsKCiAgICAvLyBjcmVhdGUgYSBzYW1wbGUgdGVtcGxhdGUgb2YgdGhpcyB0eXBlCiAgICAkZm4gPSBfX0RJUl9fLicvdGVtcGxhdGVzL29yaWdfc2VhcmNocmVzdWx0X3RlbXBsYXRlLnRwbCc7CiAgICBpZiggaXNfZmlsZSggJGZuICkgKSB7CiAgICAgICAgJGNvbnRlbnRzID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7CiAgICAgICAgJHRwbCA9IG5ldyBDbXNMYXlvdXRUZW1wbGF0ZSgpOwogICAgICAgICR0cGwtPnNldF9uYW1lKCdDR0NhbGVuZGFyIFNlYXJjaCBSZXN1bHRzIFNhbXBsZScpOwogICAgICAgICR0cGwtPnNldF9vd25lcigkdWlkKTsKICAgICAgICAkdHBsLT5zZXRfY29udGVudCgkY29udGVudHMpOwogICAgICAgICR0cGwtPnNldF90eXBlKCRzZWFyY2hyZXN1bHRfdGVtcGxhdGVfdHlwZSk7CiAgICAgICAgJHRwbC0+c2V0X3R5cGVfZGZsdChUUlVFKTsKICAgICAgICAkdHBsLT5zYXZlKCk7CiAgICB9Cn0KY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAvLyBsb2cgaXQKICAgIGRlYnVnX3RvX2xvZygnRVJST1I6ICcuJGUtPkdldE1lc3NhZ2UoKSk7CiAgICBkZWJ1Z190b19sb2coJGUtPkdldFRyYWNlQXNTdHJpbmcoKSk7CiAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdJbnN0YWxsYXRpb24gRXJyb3I6ICcuJGUtPkdldE1lc3NhZ2UoKSk7Cn0KCnRyeSB7CiAgICAkZXZlbnRfdGVtcGxhdGVfdHlwZSA9IG5ldyBcQ21zTGF5b3V0VGVtcGxhdGVUeXBlKCk7CiAgICAkZXZlbnRfdGVtcGxhdGVfdHlwZS0+c2V0X29yaWdpbmF0b3IoJHRoaXMtPkdldE5hbWUoKSk7CiAgICAkZXZlbnRfdGVtcGxhdGVfdHlwZS0+c2V0X25hbWUoJ2V2ZW50Jyk7CiAgICAkZXZlbnRfdGVtcGxhdGVfdHlwZS0+c2V0X2RmbHRfZmxhZyhUUlVFKTsKICAgICRldmVudF90ZW1wbGF0ZV90eXBlLT5zZXRfbGFuZ19jYWxsYmFjaygnQ0dDYWxlbmRhcjo6cGFnZV90eXBlX2xhbmdfY2FsbGJhY2snKTsKICAgICRldmVudF90ZW1wbGF0ZV90eXBlLT5zZXRfY29udGVudF9jYWxsYmFjaygnQ0dDYWxlbmRhcjo6cmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzJyk7CiAgICAkZXZlbnRfdGVtcGxhdGVfdHlwZS0+cmVzZXRfY29udGVudF90b19mYWN0b3J5KCk7CiAgICAkZXZlbnRfdGVtcGxhdGVfdHlwZS0+c2F2ZSgpOwoKICAgIC8vIGNyZWF0ZSBhIHNhbXBsZSB0ZW1wbGF0ZSBvZiB0aGlzIHR5cGUKICAgICRmbiA9IF9fRElSX18uJy90ZW1wbGF0ZXMvb3JpZ19ldmVudF90ZW1wbGF0ZS50cGwnOwogICAgaWYoIGlzX2ZpbGUoICRmbiApICkgewogICAgICAgICRjb250ZW50cyA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOwogICAgICAgICR0cGwgPSBuZXcgQ21zTGF5b3V0VGVtcGxhdGUoKTsKICAgICAgICAkdHBsLT5zZXRfbmFtZSgnQ0dDYWxlbmRhciBFdmVudCBWaWV3IFNhbXBsZScpOwogICAgICAgICR0cGwtPnNldF9vd25lcigkdWlkKTsKICAgICAgICAkdHBsLT5zZXRfY29udGVudCgkY29udGVudHMpOwogICAgICAgICR0cGwtPnNldF90eXBlKCRldmVudF90ZW1wbGF0ZV90eXBlKTsKICAgICAgICAkdHBsLT5zZXRfdHlwZV9kZmx0KFRSVUUpOwogICAgICAgICR0cGwtPnNhdmUoKTsKICAgIH0KfQpjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgIC8vIGxvZyBpdAogICAgZGVidWdfdG9fbG9nKCdFUlJPUjogJy4kZS0+R2V0TWVzc2FnZSgpKTsKICAgIGRlYnVnX3RvX2xvZygkZS0+R2V0VHJhY2VBc1N0cmluZygpKTsKICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ0luc3RhbGxhdGlvbiBFcnJvcjogJy4kZS0+R2V0TWVzc2FnZSgpKTsKfQoKdHJ5IHsKICAgICRldmVudGxpc3RfdGVtcGxhdGVfdHlwZSA9IG5ldyBcQ21zTGF5b3V0VGVtcGxhdGVUeXBlKCk7CiAgICAkZXZlbnRsaXN0X3RlbXBsYXRlX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOwogICAgJGV2ZW50bGlzdF90ZW1wbGF0ZV90eXBlLT5zZXRfbmFtZSgnZXZlbnRsaXN0Jyk7CiAgICAkZXZlbnRsaXN0X3RlbXBsYXRlX3R5cGUtPnNldF9kZmx0X2ZsYWcoVFJVRSk7CiAgICAkZXZlbnRsaXN0X3RlbXBsYXRlX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdDR0NhbGVuZGFyOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICAgJGV2ZW50bGlzdF90ZW1wbGF0ZV90eXBlLT5zZXRfY29udGVudF9jYWxsYmFjaygnQ0dDYWxlbmRhcjo6cmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzJyk7CiAgICAkZXZlbnRsaXN0X3RlbXBsYXRlX3R5cGUtPnJlc2V0X2NvbnRlbnRfdG9fZmFjdG9yeSgpOwogICAgJGV2ZW50bGlzdF90ZW1wbGF0ZV90eXBlLT5zYXZlKCk7CgogICAgLy8gY3JlYXRlIGEgc2FtcGxlIHRlbXBsYXRlIG9mIHRoaXMgdHlwZQogICAgJGZuID0gX19ESVJfXy4nL3RlbXBsYXRlcy9vcmlnX2xpc3RfdGVtcGxhdGUudHBsJzsKICAgIGlmKCBpc19maWxlKCAkZm4gKSApIHsKICAgICAgICAkY29udGVudHMgPSBAZmlsZV9nZXRfY29udGVudHMoJGZuKTsKICAgICAgICAkdHBsID0gbmV3IENtc0xheW91dFRlbXBsYXRlKCk7CiAgICAgICAgJHRwbC0+c2V0X25hbWUoJ0NHQ2FsZW5kYXIgTGlzdCBWaWV3IFNhbXBsZScpOwogICAgICAgICR0cGwtPnNldF9vd25lcigkdWlkKTsKICAgICAgICAkdHBsLT5zZXRfY29udGVudCgkY29udGVudHMpOwogICAgICAgICR0cGwtPnNldF90eXBlKCRldmVudGxpc3RfdGVtcGxhdGVfdHlwZSk7CiAgICAgICAgJHRwbC0+c2V0X3R5cGVfZGZsdChUUlVFKTsKICAgICAgICAkdHBsLT5zYXZlKCk7CiAgICB9Cn0KY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAvLyBsb2cgaXQKICAgIGRlYnVnX3RvX2xvZygnRVJST1I6ICcuJGUtPkdldE1lc3NhZ2UoKSk7CiAgICBkZWJ1Z190b19sb2coJGUtPkdldFRyYWNlQXNTdHJpbmcoKSk7CiAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdJbnN0YWxsYXRpb24gRXJyb3I6ICcuJGUtPkdldE1lc3NhZ2UoKSk7Cn0KCnRyeSB7CiAgICAkbXlldmVudHNfdGVtcGxhdGVfdHlwZSA9IG5ldyBcQ21zTGF5b3V0VGVtcGxhdGVUeXBlKCk7CiAgICAkbXlldmVudHNfdGVtcGxhdGVfdHlwZS0+c2V0X29yaWdpbmF0b3IoJHRoaXMtPkdldE5hbWUoKSk7CiAgICAkbXlldmVudHNfdGVtcGxhdGVfdHlwZS0+c2V0X25hbWUoJ215ZXZlbnRzJyk7CiAgICAkbXlldmVudHNfdGVtcGxhdGVfdHlwZS0+c2V0X2RmbHRfZmxhZyhUUlVFKTsKICAgICRteWV2ZW50c190ZW1wbGF0ZV90eXBlLT5zZXRfbGFuZ19jYWxsYmFjaygnQ0dDYWxlbmRhcjo6cGFnZV90eXBlX2xhbmdfY2FsbGJhY2snKTsKICAgICRteWV2ZW50c190ZW1wbGF0ZV90eXBlLT5zZXRfY29udGVudF9jYWxsYmFjaygnQ0dDYWxlbmRhcjo6cmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzJyk7CiAgICAkbXlldmVudHNfdGVtcGxhdGVfdHlwZS0+cmVzZXRfY29udGVudF90b19mYWN0b3J5KCk7CiAgICAkbXlldmVudHNfdGVtcGxhdGVfdHlwZS0+c2F2ZSgpOwoKICAgIC8vIGNyZWF0ZSBhIHNhbXBsZSB0ZW1wbGF0ZSBvZiB0aGlzIHR5cGUKICAgICRmbiA9IF9fRElSX18uJy90ZW1wbGF0ZXMvb3JpZ19teWV2ZW50c190ZW1wbGF0ZS50cGwnOwogICAgaWYoIGlzX2ZpbGUoICRmbiApICkgewogICAgICAgICRjb250ZW50cyA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOwogICAgICAgICR0cGwgPSBuZXcgQ21zTGF5b3V0VGVtcGxhdGUoKTsKICAgICAgICAkdHBsLT5zZXRfbmFtZSgnQ0dDYWxlbmRhciBNeUV2ZW50cyBWaWV3IFNhbXBsZScpOwogICAgICAgICR0cGwtPnNldF9vd25lcigkdWlkKTsKICAgICAgICAkdHBsLT5zZXRfY29udGVudCgkY29udGVudHMpOwogICAgICAgICR0cGwtPnNldF90eXBlKCRteWV2ZW50c190ZW1wbGF0ZV90eXBlKTsKICAgICAgICAkdHBsLT5zZXRfdHlwZV9kZmx0KFRSVUUpOwogICAgICAgICR0cGwtPnNhdmUoKTsKICAgIH0KfQpjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgIC8vIGxvZyBpdAogICAgZGVidWdfdG9fbG9nKCdFUlJPUjogJy4kZS0+R2V0TWVzc2FnZSgpKTsKICAgIGRlYnVnX3RvX2xvZygkZS0+R2V0VHJhY2VBc1N0cmluZygpKTsKICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ0luc3RhbGxhdGlvbiBFcnJvcjogJy4kZS0+R2V0TWVzc2FnZSgpKTsKfQoKdHJ5IHsKICAgICRlZGl0ZXZlbnRfdGVtcGxhdGVfdHlwZSA9IG5ldyBcQ21zTGF5b3V0VGVtcGxhdGVUeXBlKCk7CiAgICAkZWRpdGV2ZW50X3RlbXBsYXRlX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOwogICAgJGVkaXRldmVudF90ZW1wbGF0ZV90eXBlLT5zZXRfbmFtZSgnZWRpdGV2ZW50Jyk7CiAgICAkZWRpdGV2ZW50X3RlbXBsYXRlX3R5cGUtPnNldF9kZmx0X2ZsYWcoVFJVRSk7CiAgICAkZWRpdGV2ZW50X3RlbXBsYXRlX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdDR0NhbGVuZGFyOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICAgJGVkaXRldmVudF90ZW1wbGF0ZV90eXBlLT5zZXRfY29udGVudF9jYWxsYmFjaygnQ0dDYWxlbmRhcjo6cmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzJyk7CiAgICAkZWRpdGV2ZW50X3RlbXBsYXRlX3R5cGUtPnJlc2V0X2NvbnRlbnRfdG9fZmFjdG9yeSgpOwogICAgJGVkaXRldmVudF90ZW1wbGF0ZV90eXBlLT5zYXZlKCk7CgogICAgLy8gY3JlYXRlIGEgc2FtcGxlIHRlbXBsYXRlIG9mIHRoaXMgdHlwZQogICAgJGZuID0gX19ESVJfXy4nL3RlbXBsYXRlcy9vcmlnX2VkaXRldmVudF90ZW1wbGF0ZS50cGwnOwogICAgaWYoIGlzX2ZpbGUoICRmbiApICkgewogICAgICAgICRjb250ZW50cyA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOwogICAgICAgICR0cGwgPSBuZXcgQ21zTGF5b3V0VGVtcGxhdGUoKTsKICAgICAgICAkdHBsLT5zZXRfbmFtZSgnQ0dDYWxlbmRhciBFZGl0IEV2ZW50IEZvcm0gU2FtcGxlJyk7CiAgICAgICAgJHRwbC0+c2V0X293bmVyKCR1aWQpOwogICAgICAgICR0cGwtPnNldF9jb250ZW50KCRjb250ZW50cyk7CiAgICAgICAgJHRwbC0+c2V0X3R5cGUoJGVkaXRldmVudF90ZW1wbGF0ZV90eXBlKTsKICAgICAgICAkdHBsLT5zZXRfdHlwZV9kZmx0KFRSVUUpOwogICAgICAgICR0cGwtPnNhdmUoKTsKICAgIH0KfQpjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgIC8vIGxvZyBpdAogICAgZGVidWdfdG9fbG9nKCdFUlJPUjogJy4kZS0+R2V0TWVzc2FnZSgpKTsKICAgIGRlYnVnX3RvX2xvZygkZS0+R2V0VHJhY2VBc1N0cmluZygpKTsKICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ0luc3RhbGxhdGlvbiBFcnJvcjogJy4kZS0+R2V0TWVzc2FnZSgpKTsKfQoKdHJ5IHsKICAgICRkZWxldGVldmVudF90ZW1wbGF0ZV90eXBlID0gbmV3IFxDbXNMYXlvdXRUZW1wbGF0ZVR5cGUoKTsKICAgICRkZWxldGVldmVudF90ZW1wbGF0ZV90eXBlLT5zZXRfb3JpZ2luYXRvcigkdGhpcy0+R2V0TmFtZSgpKTsKICAgICRkZWxldGVldmVudF90ZW1wbGF0ZV90eXBlLT5zZXRfbmFtZSgnZGVsZXRlZXZlbnQnKTsKICAgICRkZWxldGVldmVudF90ZW1wbGF0ZV90eXBlLT5zZXRfZGZsdF9mbGFnKFRSVUUpOwogICAgJGRlbGV0ZWV2ZW50X3RlbXBsYXRlX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdDR0NhbGVuZGFyOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICAgJGRlbGV0ZWV2ZW50X3RlbXBsYXRlX3R5cGUtPnNldF9jb250ZW50X2NhbGxiYWNrKCdDR0NhbGVuZGFyOjpyZXNldF9wYWdlX3R5cGVfZGVmYXVsdHMnKTsKICAgICRkZWxldGVldmVudF90ZW1wbGF0ZV90eXBlLT5yZXNldF9jb250ZW50X3RvX2ZhY3RvcnkoKTsKICAgICRkZWxldGVldmVudF90ZW1wbGF0ZV90eXBlLT5zYXZlKCk7CgogICAgLy8gY3JlYXRlIGEgc2FtcGxlIHRlbXBsYXRlIG9mIHRoaXMgdHlwZQogICAgJGZuID0gX19ESVJfXy4nL3RlbXBsYXRlcy9vcmlnX2RlbGV0ZWV2ZW50X3RlbXBsYXRlLnRwbCc7CiAgICBpZiggaXNfZmlsZSggJGZuICkgKSB7CiAgICAgICAgJGNvbnRlbnRzID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7CiAgICAgICAgJHRwbCA9IG5ldyBDbXNMYXlvdXRUZW1wbGF0ZSgpOwogICAgICAgICR0cGwtPnNldF9uYW1lKCdDR0NhbGVuZGFyIERlbGV0ZSBFdmVudCBGb3JtIFNhbXBsZScpOwogICAgICAgICR0cGwtPnNldF9vd25lcigkdWlkKTsKICAgICAgICAkdHBsLT5zZXRfY29udGVudCgkY29udGVudHMpOwogICAgICAgICR0cGwtPnNldF90eXBlKCRkZWxldGVldmVudF90ZW1wbGF0ZV90eXBlKTsKICAgICAgICAkdHBsLT5zZXRfdHlwZV9kZmx0KFRSVUUpOwogICAgICAgICR0cGwtPnNhdmUoKTsKICAgIH0KfQpjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgIC8vIGxvZyBpdAogICAgZGVidWdfdG9fbG9nKCdFUlJPUjogJy4kZS0+R2V0TWVzc2FnZSgpKTsKICAgIGRlYnVnX3RvX2xvZygkZS0+R2V0VHJhY2VBc1N0cmluZygpKTsKICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ0luc3RhbGxhdGlvbiBFcnJvcjogJy4kZS0+R2V0TWVzc2FnZSgpKTsKfQoKdHJ5IHsKICAgICRmdWxsY2FsZW5kYXJfdGVtcGxhdGVfdHlwZSA9IG5ldyBcQ21zTGF5b3V0VGVtcGxhdGVUeXBlKCk7CiAgICAkZnVsbGNhbGVuZGFyX3RlbXBsYXRlX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOwogICAgJGZ1bGxjYWxlbmRhcl90ZW1wbGF0ZV90eXBlLT5zZXRfbmFtZSgnZnVsbGNhbGVuZGFyJyk7CiAgICAkZnVsbGNhbGVuZGFyX3RlbXBsYXRlX3R5cGUtPnNldF9kZmx0X2ZsYWcoVFJVRSk7CiAgICAkZnVsbGNhbGVuZGFyX3RlbXBsYXRlX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdDR0NhbGVuZGFyOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICAgJGZ1bGxjYWxlbmRhcl90ZW1wbGF0ZV90eXBlLT5zZXRfY29udGVudF9jYWxsYmFjaygnQ0dDYWxlbmRhcjo6cmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzJyk7CiAgICAkZnVsbGNhbGVuZGFyX3RlbXBsYXRlX3R5cGUtPnJlc2V0X2NvbnRlbnRfdG9fZmFjdG9yeSgpOwogICAgJGZ1bGxjYWxlbmRhcl90ZW1wbGF0ZV90eXBlLT5zYXZlKCk7CgogICAgLy8gY3JlYXRlIGEgc2FtcGxlIHRlbXBsYXRlIG9mIHRoaXMgdHlwZQogICAgJGZuID0gX19ESVJfXy4nL3RlbXBsYXRlcy9vcmlnX2Z1bGxjYWxlbmRhcl90ZW1wbGF0ZS50cGwnOwogICAgaWYoIGlzX2ZpbGUoICRmbiApICkgewogICAgICAgICRjb250ZW50cyA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOwogICAgICAgICR0cGwgPSBuZXcgQ21zTGF5b3V0VGVtcGxhdGUoKTsKICAgICAgICAkdHBsLT5zZXRfbmFtZSgnQ0dDYWxlbmRhciBGdWxsQ2FsZW5kYXIgVmlldyBTYW1wbGUnKTsKICAgICAgICAkdHBsLT5zZXRfb3duZXIoJHVpZCk7CiAgICAgICAgJHRwbC0+c2V0X2NvbnRlbnQoJGNvbnRlbnRzKTsKICAgICAgICAkdHBsLT5zZXRfdHlwZSgkZnVsbGNhbGVuZGFyX3RlbXBsYXRlX3R5cGUpOwogICAgICAgICR0cGwtPnNldF90eXBlX2RmbHQoVFJVRSk7CiAgICAgICAgJHRwbC0+c2F2ZSgpOwogICAgfQp9CmNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgLy8gbG9nIGl0CiAgICBkZWJ1Z190b19sb2coJ0VSUk9SOiAnLiRlLT5HZXRNZXNzYWdlKCkpOwogICAgZGVidWdfdG9fbG9nKCRlLT5HZXRUcmFjZUFzU3RyaW5nKCkpOwogICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnSW5zdGFsbGF0aW9uIEVycm9yOiAnLiRlLT5HZXRNZXNzYWdlKCkpOwp9CgovLyBQcmVmZXJlbmNlcwokdGhpcy0+U2V0UHJlZmVyZW5jZSgndXBsb2FkZGlyZWN0b3J5JywnJyk7CgovLyBFdmVudHMKJHRoaXMtPkNyZWF0ZUV2ZW50KCdFdmVudEFkZGVkJyk7CiR0aGlzLT5DcmVhdGVFdmVudCgnRXZlbnRFZGl0ZWRQcmUnKTsKJHRoaXMtPkNyZWF0ZUV2ZW50KCdFdmVudEVkaXRlZCcpOwokdGhpcy0+Q3JlYXRlRXZlbnQoJ0V2ZW50RGVsZXRlZCcpOwokdGhpcy0+Q3JlYXRlRXZlbnQoJ0NhdGVnb3J5QWRkZWQnKTsKJHRoaXMtPkNyZWF0ZUV2ZW50KCdDYXRlZ29yeUVkaXRlZCcpOwokdGhpcy0+Q3JlYXRlRXZlbnQoJ0NhdGVnb3J5RGVsZXRlZCcpOwoKLy8gUGVybWlzc2lvbnMKJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ01vZGlmeSBDYWxlbmRhcicsICdNb2RpZnkgQ2FsZW5kYXInKTsKJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ0FkZCBDYWxlbmRhciBFdmVudHMnLCAnQWRkIENhbGVuZGFyIEV2ZW50cycpOwokdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignRWRpdCBNeSBDYWxlbmRhciBFdmVudHMnLCAnRWRpdCBNeSBDYWxlbmRhciBFdmVudHMnKTsKJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ01hbmFnZSBDYWxlbmRhciBBdHRyaWJ1dGVzJywnTWFuYWdlIENhbGVuZGFyIEF0dHJpYnV0ZXMnKTsK]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCgokZGIgPSBjbXNtcygpLT5HZXREYigpOwokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7Cgokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCR0aGlzLT5ldmVudHNfdGFibGVfbmFtZSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoJHRoaXMtPmV2ZW50c190b19jYXRlZ29yaWVzX3RhYmxlX25hbWUpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Cgokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCR0aGlzLT5jYXRlZ29yaWVzX3RhYmxlX25hbWUpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Cgokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCR0aGlzLT5ldmVudF9maWVsZF92YWx1ZXNfdGFibGVfbmFtZSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoJHRoaXMtPmZpZWxkc190YWJsZV9uYW1lKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKdHJ5IHsKICAgICRkYi0+RHJvcFNlcXVlbmNlKCR0aGlzLT5ldmVudHNfdGFibGVfbmFtZS4nX3NlcScpOwogICAgJGRiLT5Ecm9wU2VxdWVuY2UoJHRoaXMtPmNhdGVnb3JpZXNfdGFibGVfbmFtZS4nX3NlcScpOwp9CmNhdGNoKCBcRXhjZXB0aW9uICRlICkgewoKfQoKLy8gdGVtcGxhdGVzCiR0aGlzLT5EZWxldGVUZW1wbGF0ZSgpOwoKLy8gcHJlZmVyZW5jZXMKJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoKTsKCi8vIEV2ZW50cwokdGhpcy0+UmVtb3ZlRXZlbnQoJ0V2ZW50QWRkZWQnKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCdFdmVudEVkaXRlZCcpOwokdGhpcy0+UmVtb3ZlRXZlbnQoJ0V2ZW50RWRpdGVkUHJlJyk7CiR0aGlzLT5SZW1vdmVFdmVudCgnRXZlbnREZWxldGVkJyk7CiR0aGlzLT5SZW1vdmVFdmVudCgnQ2F0ZWdvcnlBZGRlZCcpOwokdGhpcy0+UmVtb3ZlRXZlbnQoJ0NhdGVnb3J5RWRpdGVkJyk7CiR0aGlzLT5SZW1vdmVFdmVudCgnQ2F0ZWdvcnlEZWxldGVkJyk7CgovLyBQZXJtaXNzaW9ucwokdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignTW9kaWZ5IENhbGVuZGFyJyk7CiR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdBZGQgQ2FsZW5kYXIgRXZlbnRzJyk7CiR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdFZGl0IE15IENhbGVuZGFyIEV2ZW50cycpOwokdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignTWFuYWdlIENhbGVuZGFyIEF0dHJpYnV0ZXMnKTsKCnRyeSB7CiAgICAkdHlwZXMgPSBDbXNMYXlvdXRUZW1wbGF0ZVR5cGU6OmxvYWRfYWxsX2J5X29yaWdpbmF0b3IoJHRoaXMtPkdldE5hbWUoKSk7CiAgICBpZiggaXNfYXJyYXkoJHR5cGVzKSAmJiBjb3VudCgkdHlwZXMpICkgewogICAgICAgIGZvcmVhY2goICR0eXBlcyBhcyAkdHlwZSApIHsKICAgICAgICAgICAgJHRlbXBsYXRlcyA9ICR0eXBlLT5nZXRfdGVtcGxhdGVfbGlzdCgpOwogICAgICAgICAgICBpZiggaXNfYXJyYXkoJHRlbXBsYXRlcykgJiYgY291bnQoJHRlbXBsYXRlcykgKSB7CiAgICAgICAgICAgICAgICBmb3JlYWNoKCAkdGVtcGxhdGVzIGFzICR0ZW1wbGF0ZSApIHsKICAgICAgICAgICAgICAgICAgICAkdGVtcGxhdGUtPmRlbGV0ZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICR0eXBlLT5kZWxldGUoKTsKICAgICAgICB9CiAgICB9Cn0KY2F0Y2goIEV4Y2VwdGlvbiAkZSApIHsKICAgIC8vIGxvZyBpdAogICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnVW5pbnN0YWxsIEVycm9yOiAnLiRlLT5HZXRNZXNzYWdlKCkpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCiRkYiA9ICR0aGlzLT5HZXREYigpOwkJCQkvKiBAdmFyICRkYiBBRE9Db25uZWN0aW9uICovCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsgCS8qIEB2YXIgJGRpY3QgQURPREJfRGF0YURpY3QgKi8KCmlmKCB2ZXJzaW9uX2NvbXBhcmUocGhwdmVyc2lvbigpLCc1LjQuMycpIDwgMCApIHsKICAgIHJldHVybiAiTWluaW11bSBQSFAgdmVyc2lvbiBvZiA1LjQuMyByZXF1aXJlZCI7Cn0KCmRlZmluZSgnQ0dDQUxFTkRBUl9QUkVGX05FV0NBTEVOREFSX1RFTVBMQVRFJywnY2djYWxlbmRhcl9wcmVmX25ld2NhbGVuZGFyX3RlbXBsYXRlJyk7CmRlZmluZSgnQ0dDQUxFTkRBUl9QUkVGX0RGTFRDQUxFTkRBUl9URU1QTEFURScsJ2NnY2FsZW5kYXJfcHJlZl9kZmx0Y2FsZW5kYXJfdGVtcGxhdGUnKTsKZGVmaW5lKCdDR0NBTEVOREFSX1BSRUZfTkVXTElTVF9URU1QTEFURScsJ2NnY2FsZW5kYXJfcHJlZl9uZXdsaXN0X3RlbXBsYXRlJyk7CmRlZmluZSgnQ0dDQUxFTkRBUl9QUkVGX0RGTFRMSVNUX1RFTVBMQVRFJywnY2djYWxlbmRhcl9wcmVmX2RmbHRsaXN0X3RlbXBsYXRlJyk7CmRlZmluZSgnQ0dDQUxFTkRBUl9QUkVGX05FV1VQQ09NSU5HTElTVF9URU1QTEFURScsJ2NnY2FsZW5kYXJfcHJlZl9uZXd1cGNvbWluZ2xpc3RfdGVtcGxhdGUnKTsKZGVmaW5lKCdDR0NBTEVOREFSX1BSRUZfREZMVFVQQ09NSU5HTElTVF9URU1QTEFURScsJ2NnY2FsZW5kYXJfcHJlZl9kZmx0dXBjb21pbmdsaXN0X3RlbXBsYXRlJyk7CmRlZmluZSgnQ0dDQUxFTkRBUl9QUkVGX05FV0VWRU5UX1RFTVBMQVRFJywnY2djYWxlbmRhcl9wcmVmX25ld2V2ZW50X3RlbXBsYXRlJyk7CmRlZmluZSgnQ0dDQUxFTkRBUl9QUkVGX0RGTFRFVkVOVF9URU1QTEFURScsJ2NnY2FsZW5kYXJfcHJlZl9kZmx0ZXZlbnRfdGVtcGxhdGUnKTsKZGVmaW5lKCdDR0NBTEVOREFSX1BSRUZfTkVXU0VBUkNIX1RFTVBMQVRFJywnY2djYWxlbmRhcl9wcmVmX25ld3NlYXJjaF90ZW1wbGF0ZScpOwpkZWZpbmUoJ0NHQ0FMRU5EQVJfUFJFRl9ERkxUU0VBUkNIX1RFTVBMQVRFJywnY2djYWxlbmRhcl9wcmVmX2RmbHRzZWFyY2hfdGVtcGxhdGUnKTsKZGVmaW5lKCdDR0NBTEVOREFSX1BSRUZfTkVXU0VBUkNIUkVTVUxUX1RFTVBMQVRFJywnY2djYWxlbmRhcl9wcmVmX25ld3NlYXJjaHJlc3VsdF90ZW1wbGF0ZScpOwpkZWZpbmUoJ0NHQ0FMRU5EQVJfUFJFRl9ERkxUU0VBUkNIUkVTVUxUX1RFTVBMQVRFJywnY2djYWxlbmRhcl9wcmVmX2RmbHRzZWFyY2hyZXN1bHRfdGVtcGxhdGUnKTsKZGVmaW5lKCdDR0NBTEVOREFSX1BSRUZfTkVXTVlFVkVOVFNfVEVNUExBVEUnLCdjZ2NhbGVuZGFyX3ByZWZfbmV3bXlldmVudHNfdGVtcGxhdGUnKTsKZGVmaW5lKCdDR0NBTEVOREFSX1BSRUZfREZMVE1ZRVZFTlRTX1RFTVBMQVRFJywnY2djYWxlbmRhcl9wcmVmX2RmbHRteWV2ZW50c190ZW1wbGF0ZScpOwpkZWZpbmUoJ0NHQ0FMRU5EQVJfUFJFRl9ORVdFRElURVZFTlRfVEVNUExBVEUnLCdjZ2NhbGVuZGFyX3ByZWZfbmV3ZWRpdGV2ZW50X3RlbXBsYXRlJyk7CmRlZmluZSgnQ0dDQUxFTkRBUl9QUkVGX0RGTFRFRElURVZFTlRfVEVNUExBVEUnLCdjZ2NhbGVuZGFyX3ByZWZfZGZsdGVkaXRldmVudF90ZW1wbGF0ZScpOwpkZWZpbmUoJ0NHQ0FMRU5EQVJfUFJFRl9ORVdERUxFVEVFVkVOVF9URU1QTEFURScsJ2NnY2FsZW5kYXJfcHJlZl9uZXdkZWxldGVldmVudF90ZW1wbGF0ZScpOwpkZWZpbmUoJ0NHQ0FMRU5EQVJfUFJFRl9ERkxUREVMRVRFRVZFTlRfVEVNUExBVEUnLCdjZ2NhbGVuZGFyX3ByZWZfZGZsdGRlbGV0ZWV2ZW50X3RlbXBsYXRlJyk7CmRlZmluZSgnQ0dDQUxFTkRBUl9QUkVGX05FV0ZVTExDQUxFTkRBUl9URU1QTEFURScsJ2NnY2FsZW5kYXJfcHJlZl9uZXdmdWxsY2FsZW5kYXJfdGVtcGxhdGUnKTsKZGVmaW5lKCdDR0NBTEVOREFSX1BSRUZfREZMVEZVTExDQUxFTkRBUl9URU1QTEFURScsJ2NnY2FsZW5kYXJfcHJlZl9kZmx0ZnVsbGNhbGVuZGFyX3RlbXBsYXRlJyk7Cgpzd2l0Y2goICRvbGR2ZXJzaW9uICkKICB7CiAgY2FzZSAnMS4wJzoKICBjYXNlICcxLjAuMSc6CiAgICAkZGItPkV4ZWN1dGUoJ0FMVEVSIFRBQkxFICcuJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lLicgQUREIEZVTExURVhUKGV2ZW50X3RpdGxlLGV2ZW50X3N1bW1hcnksZXZlbnRfZGV0YWlscyknKTsKICAgICRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lLCAiZXZlbnRfcmVjdXJfbW9udGhkYXlzIEMoMjU1KSIpOwogICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKICAgIC8vIFNlYXJjaCBmb3JtIHRlbXBsYXRlKHMpCiAgICAkZm4gPSBjbXNfam9pbl9wYXRoKGRpcm5hbWUoX19GSUxFX18pLCd0ZW1wbGF0ZXMnLCdvcmlnX3NlYXJjaF90ZW1wbGF0ZS50cGwnKTsKICAgIGlmKCBmaWxlX2V4aXN0cygkZm4pICkKICAgICAgewoJJHRlbXBsYXRlID0gZmlsZV9nZXRfY29udGVudHMoJGZuKTsKCSR0aGlzLT5TZXRQcmVmZXJlbmNlKENHQ0FMRU5EQVJfUFJFRl9ORVdTRUFSQ0hfVEVNUExBVEUsJHRlbXBsYXRlKTsKCSR0aGlzLT5TZXRUZW1wbGF0ZSgnc2VhcmNoX1NhbXBsZScsJHRlbXBsYXRlKTsKCSR0aGlzLT5TZXRQcmVmZXJlbmNlKENHQ0FMRU5EQVJfUFJFRl9ERkxUU0VBUkNIX1RFTVBMQVRFLCdTYW1wbGUnKTsKICAgICAgfQoKICAgIC8vIFNlYXJjaCByZXN1bHQgdGVtcGxhdGUocykKICAgICRmbiA9IGNtc19qb2luX3BhdGgoZGlybmFtZShfX0ZJTEVfXyksJ3RlbXBsYXRlcycsJ29yaWdfc2VhcmNocmVzdWx0X3RlbXBsYXRlLnRwbCcpOwogICAgaWYoIGZpbGVfZXhpc3RzKCRmbikgKQogICAgICB7CgkkdGVtcGxhdGUgPSBmaWxlX2dldF9jb250ZW50cygkZm4pOwoJJHRoaXMtPlNldFByZWZlcmVuY2UoQ0dDQUxFTkRBUl9QUkVGX05FV1NFQVJDSFJFU1VMVF9URU1QTEFURSwkdGVtcGxhdGUpOwoJJHRoaXMtPlNldFRlbXBsYXRlKCdzZWFyY2hyZXN1bHRfU2FtcGxlJywkdGVtcGxhdGUpOwoJJHRoaXMtPlNldFByZWZlcmVuY2UoQ0dDQUxFTkRBUl9QUkVGX0RGTFRTRUFSQ0hSRVNVTFRfVEVNUExBVEUsJ1NhbXBsZScpOwogICAgICB9CgogIGNhc2UgJzEuMic6CiAgY2FzZSAnMS4yLjEnOgogIGNhc2UgJzEuMi4yJzoKICBjYXNlICcxLjIuMyc6CiAgY2FzZSAnMS4yLjQnOgogIGNhc2UgJzEuMi41JzoKICAgICRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lLAoJCQkJICAgICJldmVudF9hbGxvd3Nfb3ZlcmxhcCBJMSIpOwogICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKICBjYXNlICcxLjMnOgogIGNhc2UgJzEuMy4xJzoKICAgIC8vIE15IEV2ZW50cyB0ZW1wbGF0ZShzKQogICAgJGZuID0gY21zX2pvaW5fcGF0aChkaXJuYW1lKF9fRklMRV9fKSwndGVtcGxhdGVzJywnb3JpZ19teWV2ZW50c190ZW1wbGF0ZS50cGwnKTsKICAgIGlmKCBmaWxlX2V4aXN0cygkZm4pICkKICAgICAgewoJJHRlbXBsYXRlID0gZmlsZV9nZXRfY29udGVudHMoJGZuKTsKCSR0aGlzLT5TZXRQcmVmZXJlbmNlKENHQ0FMRU5EQVJfUFJFRl9ORVdNWUVWRU5UU19URU1QTEFURSwkdGVtcGxhdGUpOwoJJHRoaXMtPlNldFRlbXBsYXRlKCdteWV2ZW50c19TYW1wbGUnLCR0ZW1wbGF0ZSk7CgkkdGhpcy0+U2V0UHJlZmVyZW5jZShDR0NBTEVOREFSX1BSRUZfREZMVE1ZRVZFTlRTX1RFTVBMQVRFLCdTYW1wbGUnKTsKICAgICAgfQoKICAgIC8vIEVkaXQgRXZlbnQgZm9ybSB0ZW1wbGF0ZShzKQogICAgJGZuID0gY21zX2pvaW5fcGF0aChkaXJuYW1lKF9fRklMRV9fKSwndGVtcGxhdGVzJywnb3JpZ19lZGl0ZXZlbnRfdGVtcGxhdGUudHBsJyk7CiAgICBpZiggZmlsZV9leGlzdHMoJGZuKSApCiAgICAgIHsKCSR0ZW1wbGF0ZSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7CgkkdGhpcy0+U2V0UHJlZmVyZW5jZShDR0NBTEVOREFSX1BSRUZfTkVXRURJVEVWRU5UX1RFTVBMQVRFLCR0ZW1wbGF0ZSk7CgkkdGhpcy0+U2V0VGVtcGxhdGUoJ2VkaXRldmVudF9TYW1wbGUnLCR0ZW1wbGF0ZSk7CgkkdGhpcy0+U2V0UHJlZmVyZW5jZShDR0NBTEVOREFSX1BSRUZfREZMVEVESVRFVkVOVF9URU1QTEFURSwnU2FtcGxlJyk7CiAgICAgIH0KCiAgICAkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlSW5kZXhTUUwoJ2V2ZW50X3BlcmlvZCcsJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lLAoJCQkJICAgICAgJ2V2ZW50X2RhdGVfc3RhcnQsZXZlbnRfZGF0ZV9lbmQnKTsKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoICRzcWxhcnJheSApOwoKICAgICRxdWVyeSA9ICdVUERBVEUgJy4kdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUuJwogICAgICAgICAgICAgICAgIFNFVCBldmVudF9jcmVhdGVkX2J5ID0gZXZlbnRfY3JlYXRlZF9ieSAqIC0xIC0gMTAwJzsKICAgICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoKICBjYXNlICcxLjQnOgogICAgJHNxbGFycmF5ID0gJGRpY3QtPkFkZENvbHVtblNRTCgkdGhpcy0+ZmllbGRzX3RhYmxlX25hbWUsJ2ZpZWxkX3NlYXJjaGFibGUgSTEnKTsKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiAgICAkcXVlcnkgPSAnVVBEQVRFICcuJHRoaXMtPmZpZWxkc190YWJsZV9uYW1lLicgU0VUIGZpZWxkX3NlYXJjaGFibGUgPSAxCiAgICAgICAgICAgICAgIFdIRVJFIGZpZWxkX3R5cGUgIT0gMSc7CiAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCiAgY2FzZSAnMS40LjEnOiAvLyBqdXN0IGZvciBzYWZldHkKICBjYXNlICcxLjQuMic6IC8vIGp1c3QgZm9yIHNhZmV0eQogIGNhc2UgJzEuNSc6CiAgY2FzZSAnMS41LjEnOgogIGNhc2UgJzEuNS4yJzoKICBjYXNlICcxLjUuMyc6CiAgY2FzZSAnMS41LjQnOgogIGNhc2UgJzEuNS41JzoKICBjYXNlICcxLjUuNic6CiAgY2FzZSAnMS41LjcnOgogICAgJHNxbGFycmF5ID0gJGRpY3QtPkFkZENvbHVtblNRTCgkdGhpcy0+ZmllbGRzX3RhYmxlX25hbWUsJ2ZpZWxkX2V4dHJhIFgnKTsKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiAgfQoKaWYoIHZlcnNpb25fY29tcGFyZSgkb2xkdmVyc2lvbiwnMS4xMS4xJykgPCAwICkgewogICRjYXRzID0gJHRoaXMtPkdldENhdGVnb3JpZXMoKTsKICBpZiggaXNfYXJyYXkoJGNhdHMpICYmIGNvdW50KCRjYXRzKSApIHsKICAgIC8vIGNoYW5nZSB0aGUgb3JkZXIgc3R1ZmYgdG8gYmUgYXV0b21hdGljYWxseSBhc2NlbmRpbmcKICAgICRxdWVyeSA9ICdVUERBVEUgJy4kdGhpcy0+Y2F0ZWdvcmllc190YWJsZV9uYW1lLicgU0VUIGNhdGVnb3J5X29yZGVyID0gPyBXSEVSRSBjYXRlZ29yeV9pZCA9ID8nOwogICAgZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJGNhdHMpOyAkaSsrICkgewogICAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRpLCRjYXRzWyRpXVsnY2F0ZWdvcnlfaWQnXSkpOwogICAgfQogIH0KCiAgLy8gdXBkYXRlIGZpZWxkcy4KICAkZmllbGRzID0gJHRoaXMtPkdldEZpZWxkcygpOwogICRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoJHRoaXMtPmZpZWxkc190YWJsZV9uYW1lLCdmaWVsZF9vcmRlciBJJyk7CiAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwogIGlmKCBpc19hcnJheSgkZmllbGRzKSAmJiBjb3VudCgkZmllbGRzKSApIHsKICAgIC8vIGFkZCB0aGUgb3JkZXIgc3R1ZmYuCiAgICAkcXVlcnkgPSAnVVBEQVRFICcuJHRoaXMtPmZpZWxkc190YWJsZV9uYW1lLicgU0VUIGZpZWxkX2V4dHJhID0gPywgZmllbGRfb3JkZXIgPSA/IFdIRVJFIGZpZWxkX25hbWUgPSA/JzsKICAgIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCRmaWVsZHMpOyAkaSsrICkgewogICAgICAkcm93ID0gJGZpZWxkc1skaV07CiAgICAgIGlmKCAkcm93WydmaWVsZF90eXBlJ10gIT0gMCAmJiAkcm93WydmaWVsZF90eXBlJ10gIT0gMiApICRyb3dbJ2ZpZWxkX3NlYXJjaGFibGUnXSA9IDA7CiAgICAgICRmaWVsZF9leHRyYSA9IHNlcmlhbGl6ZShhcnJheSgnc2VhcmNoYWJsZScsJHJvd1snZmllbGRfc2VhcmNoYWJsZSddLCd3eXNpd3lnJz0+MCkpOwogICAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRmaWVsZF9leHRyYSwkaSwkcm93WydmaWVsZF9uYW1lJ10pKTsKICAgIH0KICB9CiAgJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BDb2x1bW5TUUwoJHRoaXMtPmZpZWxkc190YWJsZV9uYW1lLCdmaWVsZF9zZWFyY2hhYmxlJyk7CiAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwp9CgppZiggdmVyc2lvbl9jb21wYXJlKCRvbGR2ZXJzaW9uLCcxLjEzJykgPCAwICkgewogICR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdBZGQgQ2FsZW5kYXIgRXZlbnRzJywgJ0FkZCBDYWxlbmRhciBFdmVudHMnKTsKICAkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignRWRpdCBNeSBDYWxlbmRhciBFdmVudHMnLCAnRWRpdCBNeSBDYWxlbmRhciBFdmVudHMnKTsKfQoKaWYoIHZlcnNpb25fY29tcGFyZSgkb2xkdmVyc2lvbiwnMS4xNCcpIDwgMCApIHsKICAgIHRyeSB7CiAgICAgICAgJHNxbGFycmF5ID0gJGRpY3QtPkFkZENvbHVtblNRTCgkdGhpcy0+ZXZlbnRzX3RhYmxlX25hbWUsICJldmVudF9hbGxfZGF5IEMoMjU1KSIpOwogICAgICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKICAgIH0KICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgIC8vIG5vdGhpbmcgaGVyZS4KICAgIH0KCiAgICAvLyBjb252ZXJ0IGV2ZW50cyB0aGF0IHN0YXJ0IGF0IDAwOjAwLCBhbmQgZW5kIGF0IDIzOjU5IHRvIGFsbCBkYXkgZXZlbnRzIChzZXQgdGhlaXIgc3RhcnQgYW5kIGVuZCB0aW1lcyB0byAxMzowMCBhbmQgMTQ6MDAKICAgICRxdWVyeSA9ICdTRUxFQ1QgZXZlbnRfaWQgRlJPTSAnLiR0aGlzLT5ldmVudHNfdGFibGVfbmFtZS4nIFdIRVJFIEhPVVIoZXZlbnRfZGF0ZV9zdGFydCkgPSAwIEFORCBNSU5VVEUoZXZlbnRfZGF0ZV9zdGFydCkgPSAwIEFORCBIT1VSKGV2ZW50X2RhdGVfZW5kKSA9IDIzIEFORCBNSU5VVEUoZXZlbnRfZGF0ZV9lbmQpID0gNTknOwogICAgJGxpc3QgPSAkZGItPkdldENvbCgkcXVlcnkpOwogICAgaWYoIGlzX2FycmF5KCRsaXN0KSAmJiBjb3VudCgkbGlzdCkgKSB7CiAgICAgICAgJHF1ZXJ5ID0gJ1VQREFURSAnLiR0aGlzLT5ldmVudHNfdGFibGVfbmFtZS4nIFNFVCBldmVudF9kYXRlX3N0YXJ0ID0gQ09OQ0FUX1dTKFwnIFwnLCBEQVRFKGV2ZW50X2RhdGVfc3RhcnQpLCBcJzEzOjAwOjAwXCcpLAogICAgICAgICAgICAgICAgICAgICBldmVudF9kYXRlX2VuZCA9IENPTkNBVF9XUyhcJyBcJywgREFURShldmVudF9kYXRlX2VuZCksIFwnMTQ6MDA6MDBcJyksIGV2ZW50X2FsbF9kYXkgPSAxCiAgICAgICAgICAgICAgICAgIFdIRVJFIGV2ZW50X2lkIElOICgnLmltcGxvZGUoJywnLCRsaXN0KS4nKSc7CiAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiAgICB9CgogICAgLy8gYWRkIHNvbWUgY29sdW1ucyB0byB0aGUgY2F0ZWdvcmllcyB0YWJsZSwgYW5kIHNldCBzb21lIGluaXRpYWwgdmFsdWVzLgogICAgJHNxbGFycmF5ID0gJGRpY3QtPkFkZENvbHVtblNRTCgkdGhpcy0+Y2F0ZWdvcmllc190YWJsZV9uYW1lLCdjYXRlZ29yeV9iZ2NvbG9yIEMoMTApLGNhdGVnb3J5X2ZnY29sb3IgQygxMCknKTsKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKICAgICRxdWVyeSA9ICdVUERBVEUgJy4kdGhpcy0+Y2F0ZWdvcmllc190YWJsZV9uYW1lLicgU0VUIGNhdGVnb3J5X2JnY29sb3IgPSA/LCBjYXRlZ29yeV9mZ2NvbG9yID0gPyc7CiAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCcjMzM2NmZmJywnI2ZmZmZmZicpKTsKCiAgICAvLyBmaXggY2F0ZWdvcnkgb3JkZXJzCiAgICAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLiR0aGlzLT5jYXRlZ29yaWVzX3RhYmxlX25hbWUuJyBPUkRFUiBCWSBjYXRlZ29yeV9vcmRlcic7CiAgICAkY2F0cyA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5KTsKICAgIGlmKCBjb3VudCgkY2F0cykgKSB7CiAgICAgICAgJHF1ZXJ5ID0gJ1VQREFURSAnLiR0aGlzLT5jYXRlZ29yaWVzX3RhYmxlX25hbWUuJyBTRVQgY2F0ZWdvcnlfb3JkZXIgPSA/IFdIRVJFIGNhdGVnb3J5X2lkID0gPyc7CiAgICAgICAgZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJGNhdHMpOyAkaSsrICkgewogICAgICAgICAgICAkcm93ID0gJGNhdHNbJGldOwogICAgICAgICAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRpKzEsJHJvd1snY2F0ZWdvcnlfaWQnXSkpOwogICAgICAgIH0KICAgIH0KfQoKaWYoIHZlcnNpb25fY29tcGFyZSgkb2xkdmVyc2lvbiwnMS4xNS4zJykgPCAwICkgewogICAgJHRtcDEgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZShDR0NBTEVOREFSX1BSRUZfTkVXRlVMTENBTEVOREFSX1RFTVBsQVRFKTsKICAgICR0bXAyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoQ0dDQUxFTkRBUl9QUkVGX0RGTFRGVUxMQ0FMRU5EQVJfVEVNUExBVEUpOwogICAgaWYoICEkdG1wMSB8fCAhJHRtcDIgKSB7CiAgICAgICAgJGZuID0gY21zX2pvaW5fcGF0aChkaXJuYW1lKF9fRklMRV9fKSwndGVtcGxhdGVzJywnb3JpZ19mdWxsY2FsZW5kYXJfdGVtcGxhdGUudHBsJyk7CiAgICAgICAgJHRlbXBsYXRlID0gZmlsZV9nZXRfY29udGVudHMoJGZuKTsKICAgICAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZShDR0NBTEVOREFSX1BSRUZfTkVXRlVMTENBTEVOREFSX1RFTVBMQVRFLCR0ZW1wbGF0ZSk7CiAgICAgICAgJHRoaXMtPlNldFRlbXBsYXRlKCdmdWxsY2FsZW5kYXJfU2FtcGxlJywkdGVtcGxhdGUpOwogICAgICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKENHQ0FMRU5EQVJfUFJFRl9ERkxURlVMTENBTEVOREFSX1RFTVBMQVRFLCdTYW1wbGUnKTsKICAgIH0KfQoKLy8gRGVsZXRlIEV2ZW50IGZvcm0gdGVtcGxhdGUocykKaWYoIHZlcnNpb25fY29tcGFyZSgkb2xkdmVyc2lvbiwnMS4xNicpIDwgMCApIHsKICAgICRmbiA9IGNtc19qb2luX3BhdGgoZGlybmFtZShfX0ZJTEVfXyksJ3RlbXBsYXRlcycsJ29yaWdfZGVsZXRlZXZlbnRfdGVtcGxhdGUudHBsJyk7CiAgICBpZiggZmlsZV9leGlzdHMoJGZuKSApIHsKICAgICAgICAkdGVtcGxhdGUgPSBmaWxlX2dldF9jb250ZW50cygkZm4pOwogICAgICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKENHQ0FMRU5EQVJfUFJFRl9ORVdERUxFVEVFVkVOVF9URU1QTEFURSwkdGVtcGxhdGUpOwogICAgICAgICR0aGlzLT5TZXRUZW1wbGF0ZSgnZGVsZXRlZXZlbnRfU2FtcGxlJywkdGVtcGxhdGUpOwogICAgICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKENHQ0FMRU5EQVJfUFJFRl9ERkxUREVMRVRFRVZFTlRfVEVNUExBVEUsJ1NhbXBsZScpOwogICAgfQp9CgppZiggdmVyc2lvbl9jb21wYXJlKCRvbGR2ZXJzaW9uLCcyLjAnKSA8IDAgKSB7CiAgICAkdWlkID0gZ2V0X3VzZXJpZCgpOwogICAgJHNlYXJjaF90ZW1wbGF0ZV90eXBlID0gbnVsbDsKICAgICRzZWFyY2hyZXN1bHRfdGVtcGxhdGVfdHlwZSA9IG51bGw7CiAgICAkZXZlbnRfdGVtcGxhdGVfdHlwZSA9IG51bGw7CiAgICAkZXZlbnRsaXN0X3RlbXBsYXRlX3R5cGUgPSBudWxsOwogICAgJG15ZXZlbnRzX3RlbXBsYXRlX3R5cGUgPSBudWxsOwogICAgJGVkaXRldmVudF90ZW1wbGF0ZV90eXBlID0gbnVsbDsKICAgICRkZWxldGVldmVudF90ZW1wbGF0ZV90eXBlID0gbnVsbDsKICAgICRmdWxsY2FsZW5kYXJfdGVtcGxhdGVfdHlwZSA9IG51bGw7CgogICAgLy8gY3JlYXRlIHRlbXBsYXRlIHR5cGVzCiAgICB0cnkgewogICAgICAgIC8vIHNlYXJjaCBmb3JtIHRlbXBsYXRlIHR5cGUKICAgICAgICAkc2VhcmNoX3RlbXBsYXRlX3R5cGUgPSBuZXcgXENtc0xheW91dFRlbXBsYXRlVHlwZSgpOwogICAgICAgICRzZWFyY2hfdGVtcGxhdGVfdHlwZS0+c2V0X29yaWdpbmF0b3IoJHRoaXMtPkdldE5hbWUoKSk7CiAgICAgICAgJHNlYXJjaF90ZW1wbGF0ZV90eXBlLT5zZXRfbmFtZSgnc2VhcmNoZm9ybScpOwogICAgICAgICRzZWFyY2hfdGVtcGxhdGVfdHlwZS0+c2V0X2RmbHRfZmxhZyhUUlVFKTsKICAgICAgICAkc2VhcmNoX3RlbXBsYXRlX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdDR0NhbGVuZGFyOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICAgICAgICRzZWFyY2hfdGVtcGxhdGVfdHlwZS0+c2V0X2NvbnRlbnRfY2FsbGJhY2soJ0NHQ2FsZW5kYXI6OnJlc2V0X3BhZ2VfdHlwZV9kZWZhdWx0cycpOwogICAgICAgICRzZWFyY2hfdGVtcGxhdGVfdHlwZS0+cmVzZXRfY29udGVudF90b19mYWN0b3J5KCk7CiAgICAgICAgJHNlYXJjaF90ZW1wbGF0ZV90eXBlLT5zYXZlKCk7CgogICAgICAgIC8vIGNyZWF0ZSBhIHNhbXBsZSB0ZW1wbGF0ZSBvZiB0aGlzIHR5cGUKICAgICAgICAkZm4gPSBfX0RJUl9fLicvdGVtcGxhdGVzL29yaWdfc2VhcmNoX3RlbXBsYXRlLnRwbCc7CiAgICAgICAgaWYoIGlzX2ZpbGUoICRmbiApICkgewogICAgICAgICAgICAkY29udGVudHMgPSBAZmlsZV9nZXRfY29udGVudHMoJGZuKTsKICAgICAgICAgICAgJHRwbCA9IG5ldyBDbXNMYXlvdXRUZW1wbGF0ZSgpOwogICAgICAgICAgICAkdHBsLT5zZXRfbmFtZSgnQ0dDYWxlbmRhciBTZWFyY2ggRm9ybSBTYW1wbGUnKTsKICAgICAgICAgICAgJHRwbC0+c2V0X293bmVyKCR1aWQpOwogICAgICAgICAgICAkdHBsLT5zZXRfY29udGVudCgkY29udGVudHMpOwogICAgICAgICAgICAkdHBsLT5zZXRfdHlwZSgkc2VhcmNoX3RlbXBsYXRlX3R5cGUpOwogICAgICAgICAgICAkdHBsLT5zZXRfdHlwZV9kZmx0KFRSVUUpOwogICAgICAgICAgICAkdHBsLT5zYXZlKCk7CiAgICAgICAgfQogICAgfQogICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgLy8gbG9nIGl0CiAgICAgICAgZGVidWdfdG9fbG9nKCdFUlJPUjogJy4kZS0+R2V0TWVzc2FnZSgpKTsKICAgICAgICBkZWJ1Z190b19sb2coJGUtPkdldFRyYWNlQXNTdHJpbmcoKSk7CiAgICAgICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnSW5zdGFsbGF0aW9uIEVycm9yOiAnLiRlLT5HZXRNZXNzYWdlKCkpOwogICAgfQoKICAgIHRyeSB7CiAgICAgICAgJHNlYXJjaHJlc3VsdF90ZW1wbGF0ZV90eXBlID0gbmV3IFxDbXNMYXlvdXRUZW1wbGF0ZVR5cGUoKTsKICAgICAgICAkc2VhcmNocmVzdWx0X3RlbXBsYXRlX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOwogICAgICAgICRzZWFyY2hyZXN1bHRfdGVtcGxhdGVfdHlwZS0+c2V0X25hbWUoJ3NlYXJjaHJlc3VsdCcpOwogICAgICAgICRzZWFyY2hyZXN1bHRfdGVtcGxhdGVfdHlwZS0+c2V0X2RmbHRfZmxhZyhUUlVFKTsKICAgICAgICAkc2VhcmNocmVzdWx0X3RlbXBsYXRlX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdDR0NhbGVuZGFyOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICAgICAgICRzZWFyY2hyZXN1bHRfdGVtcGxhdGVfdHlwZS0+c2V0X2NvbnRlbnRfY2FsbGJhY2soJ0NHQ2FsZW5kYXI6OnJlc2V0X3BhZ2VfdHlwZV9kZWZhdWx0cycpOwogICAgICAgICRzZWFyY2hyZXN1bHRfdGVtcGxhdGVfdHlwZS0+cmVzZXRfY29udGVudF90b19mYWN0b3J5KCk7CiAgICAgICAgJHNlYXJjaHJlc3VsdF90ZW1wbGF0ZV90eXBlLT5zYXZlKCk7CgogICAgICAgIC8vIGNyZWF0ZSBhIHNhbXBsZSB0ZW1wbGF0ZSBvZiB0aGlzIHR5cGUKICAgICAgICAkZm4gPSBfX0RJUl9fLicvdGVtcGxhdGVzL29yaWdfc2VhcmNocmVzdWx0X3RlbXBsYXRlLnRwbCc7CiAgICAgICAgaWYoIGlzX2ZpbGUoICRmbiApICkgewogICAgICAgICAgICAkY29udGVudHMgPSBAZmlsZV9nZXRfY29udGVudHMoJGZuKTsKICAgICAgICAgICAgJHRwbCA9IG5ldyBDbXNMYXlvdXRUZW1wbGF0ZSgpOwogICAgICAgICAgICAkdHBsLT5zZXRfbmFtZSgnQ0dDYWxlbmRhciBTZWFyY2ggUmVzdWx0cyBTYW1wbGUnKTsKICAgICAgICAgICAgJHRwbC0+c2V0X293bmVyKCR1aWQpOwogICAgICAgICAgICAkdHBsLT5zZXRfY29udGVudCgkY29udGVudHMpOwogICAgICAgICAgICAkdHBsLT5zZXRfdHlwZSgkc2VhcmNocmVzdWx0X3RlbXBsYXRlX3R5cGUpOwogICAgICAgICAgICAkdHBsLT5zZXRfdHlwZV9kZmx0KFRSVUUpOwogICAgICAgICAgICAkdHBsLT5zYXZlKCk7CiAgICAgICAgfQogICAgfQogICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgLy8gbG9nIGl0CiAgICAgICAgZGVidWdfdG9fbG9nKCdFUlJPUjogJy4kZS0+R2V0TWVzc2FnZSgpKTsKICAgICAgICBkZWJ1Z190b19sb2coJGUtPkdldFRyYWNlQXNTdHJpbmcoKSk7CiAgICAgICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnSW5zdGFsbGF0aW9uIEVycm9yOiAnLiRlLT5HZXRNZXNzYWdlKCkpOwogICAgfQoKICAgIHRyeSB7CiAgICAgICAgJGV2ZW50X3RlbXBsYXRlX3R5cGUgPSBuZXcgXENtc0xheW91dFRlbXBsYXRlVHlwZSgpOwogICAgICAgICRldmVudF90ZW1wbGF0ZV90eXBlLT5zZXRfb3JpZ2luYXRvcigkdGhpcy0+R2V0TmFtZSgpKTsKICAgICAgICAkZXZlbnRfdGVtcGxhdGVfdHlwZS0+c2V0X25hbWUoJ2V2ZW50Jyk7CiAgICAgICAgJGV2ZW50X3RlbXBsYXRlX3R5cGUtPnNldF9kZmx0X2ZsYWcoVFJVRSk7CiAgICAgICAgJGV2ZW50X3RlbXBsYXRlX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdDR0NhbGVuZGFyOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICAgICAgICRldmVudF90ZW1wbGF0ZV90eXBlLT5zZXRfY29udGVudF9jYWxsYmFjaygnQ0dDYWxlbmRhcjo6cmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzJyk7CiAgICAgICAgJGV2ZW50X3RlbXBsYXRlX3R5cGUtPnJlc2V0X2NvbnRlbnRfdG9fZmFjdG9yeSgpOwogICAgICAgICRldmVudF90ZW1wbGF0ZV90eXBlLT5zYXZlKCk7CgogICAgICAgIC8vIGNyZWF0ZSBhIHNhbXBsZSB0ZW1wbGF0ZSBvZiB0aGlzIHR5cGUKICAgICAgICAkZm4gPSBfX0RJUl9fLicvdGVtcGxhdGVzL29yaWdfZXZlbnRfdGVtcGxhdGUudHBsJzsKICAgICAgICBpZiggaXNfZmlsZSggJGZuICkgKSB7CiAgICAgICAgICAgICRjb250ZW50cyA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOwogICAgICAgICAgICAkdHBsID0gbmV3IENtc0xheW91dFRlbXBsYXRlKCk7CiAgICAgICAgICAgICR0cGwtPnNldF9uYW1lKCdDR0NhbGVuZGFyIEV2ZW50IFZpZXcgU2FtcGxlJyk7CiAgICAgICAgICAgICR0cGwtPnNldF9vd25lcigkdWlkKTsKICAgICAgICAgICAgJHRwbC0+c2V0X2NvbnRlbnQoJGNvbnRlbnRzKTsKICAgICAgICAgICAgJHRwbC0+c2V0X3R5cGUoJGV2ZW50X3RlbXBsYXRlX3R5cGUpOwogICAgICAgICAgICAkdHBsLT5zZXRfdHlwZV9kZmx0KFRSVUUpOwogICAgICAgICAgICAkdHBsLT5zYXZlKCk7CiAgICAgICAgfQogICAgfQogICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgLy8gbG9nIGl0CiAgICAgICAgZGVidWdfdG9fbG9nKCdFUlJPUjogJy4kZS0+R2V0TWVzc2FnZSgpKTsKICAgICAgICBkZWJ1Z190b19sb2coJGUtPkdldFRyYWNlQXNTdHJpbmcoKSk7CiAgICAgICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnSW5zdGFsbGF0aW9uIEVycm9yOiAnLiRlLT5HZXRNZXNzYWdlKCkpOwogICAgfQoKICAgIHRyeSB7CiAgICAgICAgJGV2ZW50bGlzdF90ZW1wbGF0ZV90eXBlID0gbmV3IFxDbXNMYXlvdXRUZW1wbGF0ZVR5cGUoKTsKICAgICAgICAkZXZlbnRsaXN0X3RlbXBsYXRlX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOwogICAgICAgICRldmVudGxpc3RfdGVtcGxhdGVfdHlwZS0+c2V0X25hbWUoJ2V2ZW50bGlzdCcpOwogICAgICAgICRldmVudGxpc3RfdGVtcGxhdGVfdHlwZS0+c2V0X2RmbHRfZmxhZyhUUlVFKTsKICAgICAgICAkZXZlbnRsaXN0X3RlbXBsYXRlX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdDR0NhbGVuZGFyOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICAgICAgICRldmVudGxpc3RfdGVtcGxhdGVfdHlwZS0+c2V0X2NvbnRlbnRfY2FsbGJhY2soJ0NHQ2FsZW5kYXI6OnJlc2V0X3BhZ2VfdHlwZV9kZWZhdWx0cycpOwogICAgICAgICRldmVudGxpc3RfdGVtcGxhdGVfdHlwZS0+cmVzZXRfY29udGVudF90b19mYWN0b3J5KCk7CiAgICAgICAgJGV2ZW50bGlzdF90ZW1wbGF0ZV90eXBlLT5zYXZlKCk7CgogICAgICAgIC8vIGNyZWF0ZSBhIHNhbXBsZSB0ZW1wbGF0ZSBvZiB0aGlzIHR5cGUKICAgICAgICAkZm4gPSBfX0RJUl9fLicvdGVtcGxhdGVzL29yaWdfbGlzdF90ZW1wbGF0ZS50cGwnOwogICAgICAgIGlmKCBpc19maWxlKCAkZm4gKSApIHsKICAgICAgICAgICAgJGNvbnRlbnRzID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7CiAgICAgICAgICAgICR0cGwgPSBuZXcgQ21zTGF5b3V0VGVtcGxhdGUoKTsKICAgICAgICAgICAgJHRwbC0+c2V0X25hbWUoJ0NHQ2FsZW5kYXIgTGlzdCBWaWV3IFNhbXBsZScpOwogICAgICAgICAgICAkdHBsLT5zZXRfb3duZXIoJHVpZCk7CiAgICAgICAgICAgICR0cGwtPnNldF9jb250ZW50KCRjb250ZW50cyk7CiAgICAgICAgICAgICR0cGwtPnNldF90eXBlKCRldmVudGxpc3RfdGVtcGxhdGVfdHlwZSk7CiAgICAgICAgICAgICR0cGwtPnNldF90eXBlX2RmbHQoVFJVRSk7CiAgICAgICAgICAgICR0cGwtPnNhdmUoKTsKICAgICAgICB9CiAgICB9CiAgICBjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAvLyBsb2cgaXQKICAgICAgICBkZWJ1Z190b19sb2coJ0VSUk9SOiAnLiRlLT5HZXRNZXNzYWdlKCkpOwogICAgICAgIGRlYnVnX3RvX2xvZygkZS0+R2V0VHJhY2VBc1N0cmluZygpKTsKICAgICAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdJbnN0YWxsYXRpb24gRXJyb3I6ICcuJGUtPkdldE1lc3NhZ2UoKSk7CiAgICB9CgogICAgdHJ5IHsKICAgICAgICAkbXlldmVudHNfdGVtcGxhdGVfdHlwZSA9IG5ldyBcQ21zTGF5b3V0VGVtcGxhdGVUeXBlKCk7CiAgICAgICAgJG15ZXZlbnRzX3RlbXBsYXRlX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOwogICAgICAgICRteWV2ZW50c190ZW1wbGF0ZV90eXBlLT5zZXRfbmFtZSgnbXlldmVudHMnKTsKICAgICAgICAkbXlldmVudHNfdGVtcGxhdGVfdHlwZS0+c2V0X2RmbHRfZmxhZyhUUlVFKTsKICAgICAgICAkbXlldmVudHNfdGVtcGxhdGVfdHlwZS0+c2V0X2xhbmdfY2FsbGJhY2soJ0NHQ2FsZW5kYXI6OnBhZ2VfdHlwZV9sYW5nX2NhbGxiYWNrJyk7CiAgICAgICAgJG15ZXZlbnRzX3RlbXBsYXRlX3R5cGUtPnNldF9jb250ZW50X2NhbGxiYWNrKCdDR0NhbGVuZGFyOjpyZXNldF9wYWdlX3R5cGVfZGVmYXVsdHMnKTsKICAgICAgICAkbXlldmVudHNfdGVtcGxhdGVfdHlwZS0+cmVzZXRfY29udGVudF90b19mYWN0b3J5KCk7CiAgICAgICAgJG15ZXZlbnRzX3RlbXBsYXRlX3R5cGUtPnNhdmUoKTsKCiAgICAgICAgLy8gY3JlYXRlIGEgc2FtcGxlIHRlbXBsYXRlIG9mIHRoaXMgdHlwZQogICAgICAgICRmbiA9IF9fRElSX18uJy90ZW1wbGF0ZXMvb3JpZ19teWV2ZW50c190ZW1wbGF0ZS50cGwnOwogICAgICAgIGlmKCBpc19maWxlKCAkZm4gKSApIHsKICAgICAgICAgICAgJGNvbnRlbnRzID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7CiAgICAgICAgICAgICR0cGwgPSBuZXcgQ21zTGF5b3V0VGVtcGxhdGUoKTsKICAgICAgICAgICAgJHRwbC0+c2V0X25hbWUoJ0NHQ2FsZW5kYXIgTXlFdmVudHMgVmlldyBTYW1wbGUnKTsKICAgICAgICAgICAgJHRwbC0+c2V0X293bmVyKCR1aWQpOwogICAgICAgICAgICAkdHBsLT5zZXRfY29udGVudCgkY29udGVudHMpOwogICAgICAgICAgICAkdHBsLT5zZXRfdHlwZSgkbXlldmVudHNfdGVtcGxhdGVfdHlwZSk7CiAgICAgICAgICAgICR0cGwtPnNldF90eXBlX2RmbHQoVFJVRSk7CiAgICAgICAgICAgICR0cGwtPnNhdmUoKTsKICAgICAgICB9CiAgICB9CiAgICBjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAvLyBsb2cgaXQKICAgICAgICBkZWJ1Z190b19sb2coJ0VSUk9SOiAnLiRlLT5HZXRNZXNzYWdlKCkpOwogICAgICAgIGRlYnVnX3RvX2xvZygkZS0+R2V0VHJhY2VBc1N0cmluZygpKTsKICAgICAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdJbnN0YWxsYXRpb24gRXJyb3I6ICcuJGUtPkdldE1lc3NhZ2UoKSk7CiAgICB9CgogICAgdHJ5IHsKICAgICAgICAkZWRpdGV2ZW50X3RlbXBsYXRlX3R5cGUgPSBuZXcgXENtc0xheW91dFRlbXBsYXRlVHlwZSgpOwogICAgICAgICRlZGl0ZXZlbnRfdGVtcGxhdGVfdHlwZS0+c2V0X29yaWdpbmF0b3IoJHRoaXMtPkdldE5hbWUoKSk7CiAgICAgICAgJGVkaXRldmVudF90ZW1wbGF0ZV90eXBlLT5zZXRfbmFtZSgnZWRpdGV2ZW50Jyk7CiAgICAgICAgJGVkaXRldmVudF90ZW1wbGF0ZV90eXBlLT5zZXRfZGZsdF9mbGFnKFRSVUUpOwogICAgICAgICRlZGl0ZXZlbnRfdGVtcGxhdGVfdHlwZS0+c2V0X2xhbmdfY2FsbGJhY2soJ0NHQ2FsZW5kYXI6OnBhZ2VfdHlwZV9sYW5nX2NhbGxiYWNrJyk7CiAgICAgICAgJGVkaXRldmVudF90ZW1wbGF0ZV90eXBlLT5zZXRfY29udGVudF9jYWxsYmFjaygnQ0dDYWxlbmRhcjo6cmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzJyk7CiAgICAgICAgJGVkaXRldmVudF90ZW1wbGF0ZV90eXBlLT5yZXNldF9jb250ZW50X3RvX2ZhY3RvcnkoKTsKICAgICAgICAkZWRpdGV2ZW50X3RlbXBsYXRlX3R5cGUtPnNhdmUoKTsKCiAgICAgICAgLy8gY3JlYXRlIGEgc2FtcGxlIHRlbXBsYXRlIG9mIHRoaXMgdHlwZQogICAgICAgICRmbiA9IF9fRElSX18uJy90ZW1wbGF0ZXMvb3JpZ19lZGl0ZXZlbnRfdGVtcGxhdGUudHBsJzsKICAgICAgICBpZiggaXNfZmlsZSggJGZuICkgKSB7CiAgICAgICAgICAgICRjb250ZW50cyA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOwogICAgICAgICAgICAkdHBsID0gbmV3IENtc0xheW91dFRlbXBsYXRlKCk7CiAgICAgICAgICAgICR0cGwtPnNldF9uYW1lKCdDR0NhbGVuZGFyIEVkaXQgRXZlbnQgRm9ybSBTYW1wbGUnKTsKICAgICAgICAgICAgJHRwbC0+c2V0X293bmVyKCR1aWQpOwogICAgICAgICAgICAkdHBsLT5zZXRfY29udGVudCgkY29udGVudHMpOwogICAgICAgICAgICAkdHBsLT5zZXRfdHlwZSgkZWRpdGV2ZW50X3RlbXBsYXRlX3R5cGUpOwogICAgICAgICAgICAkdHBsLT5zZXRfdHlwZV9kZmx0KFRSVUUpOwogICAgICAgICAgICAkdHBsLT5zYXZlKCk7CiAgICAgICAgfQogICAgfQogICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgLy8gbG9nIGl0CiAgICAgICAgZGVidWdfdG9fbG9nKCdFUlJPUjogJy4kZS0+R2V0TWVzc2FnZSgpKTsKICAgICAgICBkZWJ1Z190b19sb2coJGUtPkdldFRyYWNlQXNTdHJpbmcoKSk7CiAgICAgICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnSW5zdGFsbGF0aW9uIEVycm9yOiAnLiRlLT5HZXRNZXNzYWdlKCkpOwogICAgfQoKICAgIHRyeSB7CiAgICAgICAgJGRlbGV0ZWV2ZW50X3RlbXBsYXRlX3R5cGUgPSBuZXcgXENtc0xheW91dFRlbXBsYXRlVHlwZSgpOwogICAgICAgICRkZWxldGVldmVudF90ZW1wbGF0ZV90eXBlLT5zZXRfb3JpZ2luYXRvcigkdGhpcy0+R2V0TmFtZSgpKTsKICAgICAgICAkZGVsZXRlZXZlbnRfdGVtcGxhdGVfdHlwZS0+c2V0X25hbWUoJ2RlbGV0ZWV2ZW50Jyk7CiAgICAgICAgJGRlbGV0ZWV2ZW50X3RlbXBsYXRlX3R5cGUtPnNldF9kZmx0X2ZsYWcoVFJVRSk7CiAgICAgICAgJGRlbGV0ZWV2ZW50X3RlbXBsYXRlX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdDR0NhbGVuZGFyOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICAgICAgICRkZWxldGVldmVudF90ZW1wbGF0ZV90eXBlLT5zZXRfY29udGVudF9jYWxsYmFjaygnQ0dDYWxlbmRhcjo6cmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzJyk7CiAgICAgICAgJGRlbGV0ZWV2ZW50X3RlbXBsYXRlX3R5cGUtPnJlc2V0X2NvbnRlbnRfdG9fZmFjdG9yeSgpOwogICAgICAgICRkZWxldGVldmVudF90ZW1wbGF0ZV90eXBlLT5zYXZlKCk7CgogICAgICAgIC8vIGNyZWF0ZSBhIHNhbXBsZSB0ZW1wbGF0ZSBvZiB0aGlzIHR5cGUKICAgICAgICAkZm4gPSBfX0RJUl9fLicvdGVtcGxhdGVzL29yaWdfZGVsZXRlZXZlbnRfdGVtcGxhdGUudHBsJzsKICAgICAgICBpZiggaXNfZmlsZSggJGZuICkgKSB7CiAgICAgICAgICAgICRjb250ZW50cyA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOwogICAgICAgICAgICAkdHBsID0gbmV3IENtc0xheW91dFRlbXBsYXRlKCk7CiAgICAgICAgICAgICR0cGwtPnNldF9uYW1lKCdDR0NhbGVuZGFyIERlbGV0ZSBFdmVudCBGb3JtIFNhbXBsZScpOwogICAgICAgICAgICAkdHBsLT5zZXRfb3duZXIoJHVpZCk7CiAgICAgICAgICAgICR0cGwtPnNldF9jb250ZW50KCRjb250ZW50cyk7CiAgICAgICAgICAgICR0cGwtPnNldF90eXBlKCRkZWxldGVldmVudF90ZW1wbGF0ZV90eXBlKTsKICAgICAgICAgICAgJHRwbC0+c2V0X3R5cGVfZGZsdChUUlVFKTsKICAgICAgICAgICAgJHRwbC0+c2F2ZSgpOwogICAgICAgIH0KICAgIH0KICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgIC8vIGxvZyBpdAogICAgICAgIGRlYnVnX3RvX2xvZygnRVJST1I6ICcuJGUtPkdldE1lc3NhZ2UoKSk7CiAgICAgICAgZGVidWdfdG9fbG9nKCRlLT5HZXRUcmFjZUFzU3RyaW5nKCkpOwogICAgICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ0luc3RhbGxhdGlvbiBFcnJvcjogJy4kZS0+R2V0TWVzc2FnZSgpKTsKICAgIH0KCiAgICB0cnkgewogICAgICAgICRmdWxsY2FsZW5kYXJfdGVtcGxhdGVfdHlwZSA9IG5ldyBcQ21zTGF5b3V0VGVtcGxhdGVUeXBlKCk7CiAgICAgICAgJGZ1bGxjYWxlbmRhcl90ZW1wbGF0ZV90eXBlLT5zZXRfb3JpZ2luYXRvcigkdGhpcy0+R2V0TmFtZSgpKTsKICAgICAgICAkZnVsbGNhbGVuZGFyX3RlbXBsYXRlX3R5cGUtPnNldF9uYW1lKCdmdWxsY2FsZW5kYXInKTsKICAgICAgICAkZnVsbGNhbGVuZGFyX3RlbXBsYXRlX3R5cGUtPnNldF9kZmx0X2ZsYWcoVFJVRSk7CiAgICAgICAgJGZ1bGxjYWxlbmRhcl90ZW1wbGF0ZV90eXBlLT5zZXRfbGFuZ19jYWxsYmFjaygnQ0dDYWxlbmRhcjo6cGFnZV90eXBlX2xhbmdfY2FsbGJhY2snKTsKICAgICAgICAkZnVsbGNhbGVuZGFyX3RlbXBsYXRlX3R5cGUtPnNldF9jb250ZW50X2NhbGxiYWNrKCdDR0NhbGVuZGFyOjpyZXNldF9wYWdlX3R5cGVfZGVmYXVsdHMnKTsKICAgICAgICAkZnVsbGNhbGVuZGFyX3RlbXBsYXRlX3R5cGUtPnJlc2V0X2NvbnRlbnRfdG9fZmFjdG9yeSgpOwogICAgICAgICRmdWxsY2FsZW5kYXJfdGVtcGxhdGVfdHlwZS0+c2F2ZSgpOwoKICAgICAgICAvLyBjcmVhdGUgYSBzYW1wbGUgdGVtcGxhdGUgb2YgdGhpcyB0eXBlCiAgICAgICAgJGZuID0gX19ESVJfXy4nL3RlbXBsYXRlcy9vcmlnX2Z1bGxjYWxlbmRhcl90ZW1wbGF0ZS50cGwnOwogICAgICAgIGlmKCBpc19maWxlKCAkZm4gKSApIHsKICAgICAgICAgICAgJGNvbnRlbnRzID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7CiAgICAgICAgICAgICR0cGwgPSBuZXcgQ21zTGF5b3V0VGVtcGxhdGUoKTsKICAgICAgICAgICAgJHRwbC0+c2V0X25hbWUoJ0NHQ2FsZW5kYXIgRnVsbENhbGVuZGFyIFZpZXcgU2FtcGxlJyk7CiAgICAgICAgICAgICR0cGwtPnNldF9vd25lcigkdWlkKTsKICAgICAgICAgICAgJHRwbC0+c2V0X2NvbnRlbnQoJGNvbnRlbnRzKTsKICAgICAgICAgICAgJHRwbC0+c2V0X3R5cGUoJGZ1bGxjYWxlbmRhcl90ZW1wbGF0ZV90eXBlKTsKICAgICAgICAgICAgJHRwbC0+c2V0X3R5cGVfZGZsdChUUlVFKTsKICAgICAgICAgICAgJHRwbC0+c2F2ZSgpOwogICAgICAgIH0KICAgIH0KICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgIC8vIGxvZyBpdAogICAgICAgIGRlYnVnX3RvX2xvZygnRVJST1I6ICcuJGUtPkdldE1lc3NhZ2UoKSk7CiAgICAgICAgZGVidWdfdG9fbG9nKCRlLT5HZXRUcmFjZUFzU3RyaW5nKCkpOwogICAgICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ0luc3RhbGxhdGlvbiBFcnJvcjogJy4kZS0+R2V0TWVzc2FnZSgpKTsKICAgIH0KCiAgICAvLyBhIG1hcCBvZiB0aGUgb2xkIHByZWZpeGVzLCB0byB0aGUgbmV3IHR5cGVzLgogICAgJG1hcCA9IGFycmF5KCdzZWFyY2gnID0+IGFycmF5KCd0eXBlX25hbWUnPT4nQ0dDYWxlbmRhcjo6c2VhcmNoZm9ybScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnPT4kc2VhcmNoX3RlbXBsYXRlX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ291dF9wcmVmaXgnID0+ICdDR0NhbGVuZGFyLVNlYXJjaC1Gb3JtLScpLAogICAgICAgICAgICAgICAgICdzZWFyY2hyZXN1bHQnID0+IGFycmF5KCd0eXBlX25hbWUnPT4nQ0dDYWxlbmRhcjo6c2VhcmNocmVzdWx0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZSc9PiRzZWFyY2hyZXN1bHRfdGVtcGxhdGVfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3V0X3ByZWZpeCcgPT4gJ0NHQ2FsZW5kYXItU2VhcmNocmVzdWx0LVZpZXctJyksCiAgICAgICAgICAgICAgICAgJ2V2ZW50JyA9PiBhcnJheSgndHlwZV9uYW1lJyA9PiAnQ0dDYWxlbmRhcjo6ZXZlbnQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnPT4kZXZlbnRfdGVtcGxhdGVfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvdXRfcHJlZml4JyA9PiAnQ0dDYWxlbmRhci1FdmVudC1WaWV3LScpLAogICAgICAgICAgICAgICAgICdsaXN0JyA9PiBhcnJheSgndHlwZV9uYW1lJz0+J0NHQ2FsZW5kYXI6OmV2ZW50bGlzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJz0+JGV2ZW50bGlzdF90ZW1wbGF0ZV90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3V0X3ByZWZpeCc9PidDR0NhbGVuZGFyLUxpc3QtVmlldy0nKSwKICAgICAgICAgICAgICAgICAndXBjb21pbmdsaXN0JyA9PiBhcnJheSgndHlwZV9uYW1lJz0+J0NHQ2FsZW5kYXI6OmV2ZW50bGlzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnPT4kZXZlbnRsaXN0X3RlbXBsYXRlX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ291dF9wcmVmaXgnPT4nQ0dDYWxlbmRhci1MaXN0LVZpZXctJyksCiAgICAgICAgICAgICAgICAgJ215ZXZlbnRzJyA9PiBhcnJheSgndHlwZV9uYW1lJz0+J0NHQ2FsZW5kYXI6Om15ZXZlbnRzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJz0+JG15ZXZlbnRzX3RlbXBsYXRlX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3V0X3ByZWZpeCcgPT4gJ0NHQ2FsZW5kYXItTXlldmVudHMtVmlldy0nKSwKICAgICAgICAgICAgICAgICAnZWRpdGV2ZW50JyA9PiBhcnJheSgndHlwZV9uYW1lJz0+J0NHQ2FsZW5kYXI6OmVkaXRldmVudCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnPT4kZWRpdGV2ZW50X3RlbXBsYXRlX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ291dF9wcmVmaXgnPT4nQ0dDYWxlbmRhci1FZGl0ZXZlbnQtRm9ybS0nKSwKICAgICAgICAgICAgICAgICAnZGVsZXRlZXZlbnQnID0+IGFycmF5KCd0eXBlX25hbWUnPT4nQ0dDYWxlbmRhcjo6ZGVsZXRlZXZlbnQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnPT4kZGVsZXRlZXZlbnRfdGVtcGxhdGVfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvdXRfcHJlZml4Jz0+J0NHQ2FsZW5kYXItRGVsZXRlZXZlbnQtRm9ybS0nKSwKICAgICAgICAgICAgICAgICAnZnVsbGNhbGVuZGFyJyA9PiBhcnJheSgndHlwZV9uYW1lJz0+J0NHQ2FsZW5kYXI6OmZ1bGxjYWxlbmRhcicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnPT4kZnVsbGNhbGVuZGFyX3RlbXBsYXRlX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ291dF9wcmVmaXgnPT4nQ0dDYWxlbmRhci1mdWxsQ2FsZW5kYXItVmlldy0nKQogICAgICAgICk7CgogICAgLy8gbm93LCBqdXN0IGluIGNhc2UuLi4gd2UncmUgZ29ubmEgcmVsb2FkIHRoZSB0eXBlcy4KICAgIGZvcmVhY2goICRtYXAgYXMgJGtleSA9PiAkcmVjICkgewogICAgICAgIGlmKCAhJHJlY1sndHlwZSddLT5nZXRfaWQoKSApIHsKICAgICAgICAgICAgJHJlY1sndHlwZSddID0gXENtc0xheW91dFRlbXBsYXRlVHlwZTo6bG9hZCgnQ0dDYWxlbmRhcjo6Jy4kcmVjWyd0eXBlJ10tPmdldF9uYW1lKCkpOwogICAgICAgIH0KICAgIH0KCiAgICAkX2ZpeF9uYW1lID0gZnVuY3Rpb24oJHN0cil7CiAgICAgICAgaWYoIFxDbXNBZG1pblV0aWxzOjppc192YWxpZF9pdGVtbmFtZSgkc3RyKSApIHJldHVybiAkc3RyOwogICAgICAgICRvcmlnID0gJHN0cjsKICAgICAgICAkc3RyID0gdHJpbSgkc3RyKTsKICAgICAgICBpZiggIUNtc0FkbWluVXRpbHM6OmlzX3ZhbGlkX2l0ZW1uYW1lKCRzdHJbMF0pICkgJHN0clswXSA9ICdfJzsKICAgICAgICBmb3IoICRpID0gMTsgJGkgPCBzdHJsZW4oJHN0cik7ICRpKysgKSB7CiAgICAgICAgICAgIGlmKCAhQ21zQWRtaW5VdGlsczo6aXNfdmFsaWRfaXRlbW5hbWUoJHN0clskaV0pICkgJHN0clskaV0gPSAnXyc7CiAgICAgICAgfQogICAgICAgIGZvciggJGkgPSAwOyAkaSA8IDU7ICRpKysgKSB7CiAgICAgICAgICAgICRpbiA9ICRzdHI7CiAgICAgICAgICAgICRzdHIgPSBzdHJfcmVwbGFjZSgnX18nLCdfJywkc3RyKTsKICAgICAgICAgICAgaWYoICRpbiA9PSAkc3RyICkgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGlmKCAkc3RyID09ICdfJyApIHRocm93IG5ldyBcRXhjZXB0aW9uKCdJbnZhbGlkIG5hbWUgJy4kb3JpZy4nIGFuZCBjYW5ub3QgYmUgY29ycmVjdGVkJyk7CiAgICAgICAgcmV0dXJuICRzdHI7CiAgICB9OwoKICAgICR1aWQgPSBnZXRfdXNlcmlkKGZhbHNlKTsKICAgICRtb2QgPSAkdGhpczsKICAgICRfdXBncmFkZV90ZW1wbGF0ZSA9IGZ1bmN0aW9uKENtc0xheW91dFRlbXBsYXRlVHlwZSAkdHlwZSwkdHlwZV9wcmVmaXgsJHRwbF9uYW1lLCRpc19kZmx0LCRuYW1lcHJlZml4KSB1c2UgKCYkbW9kLCYkX2ZpeF9uYW1lLCR1aWQpIHsKICAgICAgICAkY29udGVudHMgPSAkbW9kLT5HZXRUZW1wbGF0ZSgkdHlwZV9wcmVmaXguJ18nLiR0cGxfbmFtZSk7CiAgICAgICAgaWYoICEkY29udGVudHMgKSByZXR1cm47CgogICAgICAgIC8vJHByb3RvdHlwZV9uYW1lID0gc3Vic3RyKCR0cGxfbmFtZSxzdHJsZW4oJHR5cGVfcHJlZml4KSk7CiAgICAgICAgJHByb3RvdHlwZSA9ICRuYW1lcHJlZml4LiRfZml4X25hbWUoJHRwbF9uYW1lKTsKCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJHRwbCA9IG5ldyBcQ21zTGF5b3V0VGVtcGxhdGUoKTsKICAgICAgICAgICAgJHRwbC0+c2V0X293bmVyKCR1aWQpOwogICAgICAgICAgICAkdHBsLT5zZXRfdHlwZSgkdHlwZSk7CiAgICAgICAgICAgICR0cGwtPnNldF9uYW1lKCR0cGw6OmdlbmVyYXRlX3VuaXF1ZV9uYW1lKCRwcm90b3R5cGUsJG5hbWVwcmVmaXgpKTsKICAgICAgICAgICAgJHRwbC0+c2V0X2NvbnRlbnQoJGNvbnRlbnRzKTsKICAgICAgICAgICAgJHRwbC0+c2V0X3R5cGVfZGZsdCgkaXNfZGZsdCk7CiAgICAgICAgICAgICR0cGwtPnNhdmUoKTsKCiAgICAgICAgICAgICRtb2QtPkRlbGV0ZVRlbXBsYXRlKCR0cGxfbmFtZSk7CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgIC8vIGxvZyBpdC4KICAgICAgICAgICAgZGVidWdfdG9fbG9nKCdFUlJPUjogJy4kZS0+R2V0TWVzc2FnZSgpKTsKICAgICAgICAgICAgZGVidWdfdG9fbG9nKCRlLT5HZXRUcmFjZUFzU3RyaW5nKCkpOwogICAgICAgICAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdJbnN0YWxsYXRpb24gRXJyb3I6ICcuJGUtPkdldE1lc3NhZ2UoKSk7CiAgICAgICAgfQogICAgfTsKCiAgICAvLyBub3RlLCBvbGQgJ2NhbGVuZGFyJyB0ZW1wbGF0ZXMgYXJlIG5vdCBjb252ZXJ0ZWQsIGJ1dCBzdGlsbCBpbiB0aGUgZGF0YWJhc2UuCiAgICAvLyBnZXQgYWxsIG9mIHRoZSBtb2R1bGUgZGF0YWJhc2UgdGVtcGxhdGVzCiAgICAkYWxsX21vZHVsZV9kYl90ZW1wbGF0ZXMgPSAkdGhpcy0+TGlzdFRlbXBsYXRlcygpOwogICAgLy8gZm9yIGVhY2ggdGVtcGxhdGUKICAgIGZvcmVhY2goICRhbGxfbW9kdWxlX2RiX3RlbXBsYXRlcyBhcyAkdHBsX25hbWUgKSB7CiAgICAgICAgLy8gICAgZ2V0IGl0cyBwcmVmaXgKICAgICAgICBsaXN0KCRwcmVmaXgsJG5hbWVwYXJ0KSA9IGV4cGxvZGUoJ18nLCR0cGxfbmFtZSk7CiAgICAgICAgaWYoICFpc3NldCgkbWFwWyRwcmVmaXhdKSApIGNvbnRpbnVlOwoKICAgICAgICAkcmVjID0mICRtYXBbJHByZWZpeF07CiAgICAgICAgJHR5cGUgPSAkcmVjWyd0eXBlJ107CgogICAgICAgICRoYXZlX2RmbHQgPSAoaXNzZXQoJHJlY1snaGF2ZV9kZmx0J10pICYmICRyZWNbJ2hhdmVfZGZsdCddKSA/IFRSVUUgOiBGQUxTRTsKICAgICAgICBpZiggISRoYXZlX2RmbHQgKSAkcmVjWydoYXZlX2RmbHQnXSA9IFRSVUU7CiAgICAgICAgJGlzX2RmbHQgPSAhJGhhdmVfZGZsdDsKICAgICAgICAkX3VwZ3JhZGVfdGVtcGxhdGUoJHJlY1sndHlwZSddLCRwcmVmaXgsJG5hbWVwYXJ0LCRpc19kZmx0LCRyZWNbJ291dF9wcmVmaXgnXSk7CiAgICB9CgogICAgLy8gcmVtb3ZlIHNvbWUgcHJlZmVyZW5jZXMKICAgICRwcmVmcyA9IGFycmF5KCdjZ2NhbGVuZGFyX3ByZWZfbmV3Y2FsZW5kYXJfdGVtcGxhdGUnLCdjZ2NhbGVuZGFyX3ByZWZfZGZsdGNhbGVuZGFyX3RlbXBsYXRlJywnY2djYWxlbmRhcl9wcmVmX25ld2xpc3RfdGVtcGxhdGUnLAogICAgICAgICAgICAgICAgICAgJ2NnY2FsZW5kYXJfcHJlZl9kZmx0bGlzdF90ZW1wbGF0ZScsJ2NnY2FsZW5kYXJfcHJlZl9uZXd1cGNvbWluZ2xpc3RfdGVtcGxhdGUnLCdjZ2NhbGVuZGFyX3ByZWZfZGZsdHVwY29taW5nbGlzdF90ZW1wbGF0ZScsCiAgICAgICAgICAgICAgICAgICAnY2djYWxlbmRhcl9wcmVmX25ld2V2ZW50X3RlbXBsYXRlJywnY2djYWxlbmRhcl9wcmVmX2RmbHRldmVudF90ZW1wbGF0ZScsJ2NnY2FsZW5kYXJfcHJlZl9uZXdzZWFyY2hfdGVtcGxhdGUnLAogICAgICAgICAgICAgICAgICAgJ2NnY2FsZW5kYXJfcHJlZl9kZmx0c2VhcmNoX3RlbXBsYXRlJywnY2djYWxlbmRhcl9wcmVmX25ld3NlYXJjaHJlc3VsdF90ZW1wbGF0ZScsJ2NnY2FsZW5kYXJfcHJlZl9kZmx0c2VhcmNocmVzdWx0X3RlbXBsYXRlJywKICAgICAgICAgICAgICAgICAgICdjZ2NhbGVuZGFyX3ByZWZfbmV3bXlldmVudHNfdGVtcGxhdGUnLCdjZ2NhbGVuZGFyX3ByZWZfZGZsdG15ZXZlbnRzX3RlbXBsYXRlJywKICAgICAgICAgICAgICAgICAgICdjZ2NhbGVuZGFyX3ByZWZfbmV3ZWRpdGV2ZW50X3RlbXBsYXRlJywnY2djYWxlbmRhcl9wcmVmX2RmbHRlZGl0ZXZlbnRfdGVtcGxhdGUnLCdjZ2NhbGVuZGFyX3ByZWZfbmV3ZGVsZXRlZXZlbnRfdGVtcGxhdGUnLAogICAgICAgICAgICAgICAgICAgJ2NnY2FsZW5kYXJfcHJlZl9kZmx0ZGVsZXRlZXZlbnRfdGVtcGxhdGUnLCdjZ2NhbGVuZGFyX3ByZWZfbmV3ZnVsbGNhbGVuZGFyX3RlbXBsYXRlJywnY2djYWxlbmRhcl9wcmVmX2RmbHRmdWxsY2FsZW5kYXJfdGVtcGxhdGUnKTsKICAgIGZvcmVhY2goICRwcmVmcyBhcyAkcHJlZl9uYW1lICkgewogICAgICAgICR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCRwcmVmX25hbWUpOwogICAgfQoKICAgIC8vIHNob3VsZCBiZSBhbGwgZG9uZSBub3cuCn0KCmlmKCB2ZXJzaW9uX2NvbXBhcmUoJG9sZHZlcnNpb24sJzIuMycpIDwgMCApIHsKICAgICRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lLCAiZXZlbnRfc3RhdHVzIEMoMSkiKTsKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKICAgICRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVJbmRleFNRTCgnY2djYWxlbmRhcl9ldmVudHNfZGF0ZTInLCR0aGlzLT5ldmVudHNfdGFibGVfbmFtZSwnZXZlbnRfZGF0ZV9zdGFydCxldmVudF9kYXRlX2VuZCxldmVudF9zdGF0dXMnKTsKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKICAgICRzcWwgPSAnVVBEQVRFICcuJHRoaXMtPmV2ZW50c190YWJsZV9uYW1lLicgU0VUIGV2ZW50X3N0YXR1cyA9ID8nOwogICAgJGRiLT5FeGVjdXRlKCAkc3FsLCBbICdQJyBdICk7Cn0KaWYoIHZlcnNpb25fY29tcGFyZSgkb2xkdmVyc2lvbiwnMi40LjEnKSA8IDAgKSB7CiAgICAkdGhpcy0+Q3JlYXRlRXZlbnQoJ0V2ZW50RWRpdGVkUHJlJyk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9ICJDR0NhbGVuZGFyIgp2ZXJzaW9uID0gMi41CmF1dGhvciA9ICJSb2JlcnQgQ2FtcGJlbGwiCmF1dGhvcmVtYWlsID0gImNhbGd1eTEwMDBAZ21haWwuY29tIgptaW5jbXN2ZXJzaW9uID0gIjIuMS42IgpsYXp5bG9hZGFkbWluID0gMQpsYXp5bG9hZGZyb250ZW5kID0gMApbZGVwZW5kc10KQ0dFeHRlbnNpb25zID0gIjEuNTUuMyIKQ0dTaW1wbGVTbWFydHkgPSAiMi4xLjYiCg==]]></data>
	</file>
	<file>
	  <filename>/sample_csv_file.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3RhcnQgdGltZSxlbmQgdGltZSxUaXRsZSxzdW1tYXJ5LERlc2NyaXB0aW9uLGNhdGVnb3J5LHRlc3QxLHRlc3QyIC8vIGFueXRoaW5nIGFmdGVyIC8vIG9uIGEgbGluZSBpcyBpZ25vcmVkCi8vIHRoaXMgaXMgYSBmdWxsIGxpbmUgY29tbWVudAoyMDEyLTAxLTMxIDAwOjAwOjAwLDIwMTItMDEtMzEgMjM6NTk6MDAsTGFzdCBEYXksIkxhc3QgRGF5IG9mIEphbnVhcnkiLCJUaGlzIGlzIHRoZSBsYXN0IGRheSBvZiBqYW51YXJ5LCBmb3IgdGVzdGluZyIsR2VuZXJhbCxmb28sYmFyCjIwMTItMDItMTQsLFZhbGVudGluZXMgRGF5LFN0IFZhbGVudGluZXMgRGF5LCJSZW1lbWJlciB0byBnaXZlIHlvdXIgbG92ZWQgb25lIHNvbWUgZ2lmdHMsIHByb2JhYmx5IGNob2NvbGF0ZSBhbmQgZmxvd2VycyIsIkhvbGlkYXlzO1JvbWFudGljIix0ZXN0MXZhbCx0ZXN0MnZhbAowNC0wMS0yMDEyLDA0LTAxLTIwMTIgMTI6MDAsQXByaWwgRm9vbHMsQXByaWwgRm9vbHMgRGF5LCJXYXRjaCBvdXQgZm9yIHByYWN0aWNhbCBqb2tlcyIsSG9saWRheXMsdGVzdDF2YWxhLHRlc3QydmFsYSAvLyBqdXN0IHNvbWUgZHVtbXkgdmFsdWVzIGZvciB0ZXN0MSx0ZXN0Mgo=]]></data>
	</file>
	<file>
	  <filename>/skeleton.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHQ2FsZW5kYXIgKGMpIDIwMDgKIyAgICAgIGJ5IFJvYmVydCBBbGxlbiAoYWtyYWJhdCkgdG8gMjAwOCBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykgKDIwMDggYW5kIGJleW9uZCkKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojCiMgIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGZvcmtlZCBpbiAyMDA5IGZyb20gdGhlIENhbGVuZGFyIG1vZHVsZSBieSBSb2JlcnQgQWxsZW4sCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdHMgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiMKIyBFT0YKIwo=]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/admin_addedit_category.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2NnanNfcmVxdWlyZSBjc3NmaWxlPSdsaWIvY29sb3JQaWNrZXIvY29sb3JQaWNrZXIuY3NzJ30Ke2NnanNfcmVxdWlyZSBqc2ZpbGU9J2xpYi9jb2xvclBpY2tlci9qcXVlcnkuY29sb3JQaWNrZXIubWluLmpzJ30Ke2NnanNfYWRkfQokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogIGZ1bmN0aW9uIHVwZGF0ZV9jb2xvcigpIHsKICAgIHZhciBiZ2NvbG9yID0gJCgnI2JnY29sb3InKS52YWwoKTsKICAgIHZhciBmZ2NvbG9yID0gJCgnI2ZnY29sb3InKS52YWwoKTsKICAgIGlmKCBiZ2NvbG9yICYmIGZnY29sb3IgKSB7CiAgICAgICQoJy50ZXN0bGFiZWwnKS5jc3MoJ2JhY2tncm91bmQtY29sb3InLCBiZ2NvbG9yICkuY3NzKCdjb2xvcicsIGZnY29sb3IpOwogICAgfQogIH0KICB1cGRhdGVfY29sb3IoKTsKICAkKCcjYmdjb2xvciwjZmdjb2xvcicpLmNoYW5nZShmdW5jdGlvbigpewogICAgdXBkYXRlX2NvbG9yKCk7CiAgfSkKICAkKCdpbnB1dC5jb2xvclBpY2tlcicpLmNvbG9yUGlja2VyKCk7CiAgJChkb2N1bWVudCkub24oJ2NsaWNrJywnI2NhbmNlbCcsZnVuY3Rpb24oKXsKICAgICQoJzppbnB1dCcpLnJlbW92ZUF0dHIoJ3JlcXVpcmVkJyk7CiAgfSkKfSk7CnsvY2dqc19hZGR9Cgp7aWYgJGNhdGVnb3J5LmlkID4gMH0KPGgzPnskbW9kLT5MYW5nKCdlZGl0X2NhdGVnb3J5Jyl9PC9oMz4Ke2Vsc2V9CjxoMz57JG1vZC0+TGFuZygnYWRkX2NhdGVnb3J5Jyl9PC9oMz4Key9pZn0KCnskZm9ybXN0YXJ0fQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1zdWJtaXQiIHZhbHVlPSJ7JG1vZC0+TGFuZygnc3VibWl0Jyl9Ii8+CiAgICA8aW5wdXQgaWQ9ImNhbmNlbCIgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfWNhbmNlbCIgdmFsdWU9InskbW9kLT5MYW5nKCdjYW5jZWwnKX0iLz4KICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+KnskbW9kLT5MYW5nKCduYW1lJyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfW5hbWUiIHZhbHVlPSJ7JGNhdGVnb3J5Lm5hbWV8ZGVmYXVsdDonJ30iIHNpemU9IjQwIiByZXF1aXJlZC8+CiAgICAmbmJzcDs8c3BhbiBjbGFzcz0idGVzdGxhYmVsIiBzdHlsZT0icGFkZGluZzogNXB4OyI+U2FtcGxlPC9zcGFuPgogIDwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4qeyRtb2QtPkxhbmcoJ2JnY29sb3InKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IGlkPSJiZ2NvbG9yIiB0eXBlPSJ0ZXh0IiBjbGFzcz0iY29sb3JQaWNrZXIiIG5hbWU9InskYWN0aW9uaWR9Ymdjb2xvciIgdmFsdWU9InskY2F0ZWdvcnkuYmdjb2xvcnxkZWZhdWx0OicnfSIgc2l6ZT0iNyIvPgogIDwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4qeyRtb2QtPkxhbmcoJ2ZnY29sb3InKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IGlkPSJmZ2NvbG9yIiB0eXBlPSJ0ZXh0IiBjbGFzcz0iY29sb3JQaWNrZXIiIG5hbWU9InskYWN0aW9uaWR9Zmdjb2xvciIgdmFsdWU9InskY2F0ZWdvcnkuZmdjb2xvcnxkZWZhdWx0OicnfSIgc2l6ZT0iNyIvPgogIDwvcD4KPC9kaXY+CnskZm9ybWVuZH0=]]></data>
	</file>
	<file>
	  <filename>/templates/admin_add_event.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2NnY3NzX2FkZH0KQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTIwMHB4KSB7CiAgLmdyaWRfOCB7CiAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50OwogIH0KICAuZ3JpZF80IHsKICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7CiAgfQp9CnRleHRhcmVhIHsKICB3aWR0aDogaW5pdGlhbDsKICBoZWlnaHQ6IGluaXRpYWw7Cn0Key9jZ2Nzc19hZGR9Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgdmFyIGF1dG9jaGFuZ2VfZW5kZGF0ZSA9IHtpZiAkZXZlbnQuZXZlbnRfaWQgPiAwfTB7ZWxzZX0xey9pZn07CiAgJCgnI3VwZGF0ZV9jaGlsZHJlbicpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAkKCcjcmVjdXJfYWxsJykudG9nZ2xlKCk7CiAgfSk7CiAgJCgnI3N0YXJ0ZGF0ZSA6aW5wdXQnKS5jaGFuZ2UoZnVuY3Rpb24oKXsKICAgIGlmKCAhYXV0b2NoYW5nZV9lbmRkYXRlICkgcmV0dXJuOwogICAgdmFyIG5hbWUgPSAkKHRoaXMpLmF0dHIoJ25hbWUnKS5yZXBsYWNlKCdzdGFydCcsJ2VuZCcpOwogICAgdmFyIG5hbWUyID0gJCh0aGlzKS5hdHRyKCduYW1lJykucmVwbGFjZSgnc3RhcnRkYXRlJywnZXZlbnRfcmVjdXJfZGF0ZScpOwogICAgdmFyIHMgPSAiOmlucHV0W25hbWU9JyIgKyBuYW1lICsgIiddIjsKICAgICQocykudmFsKCQodGhpcykudmFsKCkpOwogICAgdmFyIHMyID0gIjppbnB1dFtuYW1lPSciICsgbmFtZTIgKyAiJ10iOwogICAgJChzMikudmFsKCQodGhpcykudmFsKCkpOwogIH0pOwogICQoJyNzdGFydGRhdGUgOmlucHV0JykudHJpZ2dlcignY2hhbmdlJyk7CgogICQoJyNlbmRkYXRlIDppbnB1dCcpLmNoYW5nZShmdW5jdGlvbigpewogICAgYXV0b2NoYW5nZV9lbmRkYXRlID0gMDsKICB9KQoKICAkKCcjYWxsX2RheV9ldmVudCcpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICBpZiggJCh0aGlzKS5hdHRyKCdjaGVja2VkJykgKSB7CiAgICAgICQoJyNzdGFydHRpbWUnKS5oaWRlKCk7CiAgICAgICQoJyNlbmR0aW1lJykuaGlkZSgpOwogICAgICAkKCcjdXNlX2VuZGRhdGUnKS5oaWRlKCk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgJCgnI3N0YXJ0dGltZScpLnNob3coKTsKICAgICAgJCgnI2VuZHRpbWUnKS5zaG93KCk7CiAgICAgICQoJyN1c2VfZW5kZGF0ZScpLnNob3coKTsKICAgIH0KICB9KTsKICAkKCcjZW5kZGF0ZV92YWxpZCcpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICBpZiggJCh0aGlzKS5hdHRyKCdjaGVja2VkJykgKSB7CiAgICAgICQoJyNlbmRkYXRlJykuc2hvdygpOwogICAgfQogICAgZWxzZSB7CiAgICAgICQoJyNlbmRkYXRlJykuaGlkZSgpOwogICAgfQogIH0pOwp9KTsKZnVuY3Rpb24gaGFuZGxlRHJvcGRvd24oKQp7CiAgdmFyIGxhYmVscyA9IG5ldyBBcnJheSgpOwogIGxhYmVsc1siZGFpbHkiXSA9ICJ7JG1vZC0+TGFuZygncGx1cmFsX2RhaWx5Jyl9IjsKICBsYWJlbHNbIndlZWtseSJdID0gInskbW9kLT5MYW5nKCdwbHVyYWxfd2Vla2x5Jyl9IjsKICBsYWJlbHNbIm1vbnRobHkiXSA9ICJ7JG1vZC0+TGFuZygncGx1cmFsX21vbnRobHknKX0iOwogIGxhYmVsc1sieWVhcmx5Il0gPSAieyRtb2QtPkxhbmcoJ3BsdXJhbF95ZWFybHknKX0iOwoKICB2YXIgZWwgID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlY3VyZGV0YWlscycpOwogIHZhciBlbDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVjdXJwZXJpb2QnKTsKICB2YXIgd2Vla2x5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlY3VyX3dlZWtseScpOwogIHZhciBlbDQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW50ZXJ2YWxsYWJlbCcpOwogIHZhciBtb250aGx5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlY3VyX21vbnRobHknKTsKICB2YXIgaWR4ID0gZWwyLnNlbGVjdGVkSW5kZXg7CiAgdmFyIHZhbCA9IGVsMltpZHhdLnZhbHVlOwogIHZhciB0eHQgPSAnaW5saW5lJzsKICB2YXIgdHh0X3dlZWtseSA9ICdub25lJzsKICB2YXIgdHh0X21vbnRobHkgPSAnbm9uZSc7CgogIGlmKCB2YWwgPT0gJ25vbmUnICkKICB7CiAgICB0eHQgPSAnbm9uZSc7CiAgICB0eHRfd2Vla2x5ID0gJ25vbmUnOwogICAgdHh0X21vbnRobHkgPSAnbm9uZSc7CiAgfQoKICBlbHNlIGlmKCB2YWwgPT0gJ3dlZWtseScgKQogIHsKICAgIHR4dCA9ICdpbmxpbmUnOwogICAgdHh0X3dlZWtseSA9ICdibG9jayc7CiAgICB0eHRfbW9udGhseSA9ICdub25lJzsKICB9CgogIGVsc2UgaWYoIHZhbCA9PSAnbW9udGhseScgKQogIHsKICAgIHR4dCA9ICdpbmxpbmUnOwogICAgdHh0X3dlZWtseSA9ICdub25lJzsKICAgIHR4dF9tb250aGx5ID0gJ2Jsb2NrJzsKICB9CgogIGVsLnN0eWxlLmRpc3BsYXkgPSB0eHQ7CiAgd2Vla2x5LnN0eWxlLmRpc3BsYXkgPSB0eHRfd2Vla2x5OwogIG1vbnRobHkuc3R5bGUuZGlzcGxheSA9IHR4dF9tb250aGx5OwoKICBlbDQuaW5uZXJIVE1MID0gbGFiZWxzW3ZhbF07Cn0KPC9zY3JpcHQ+Cgp7aWYgJGV2ZW50LmV2ZW50X2lkID4gMH0KPGgzPnskbW9kLT5MYW5nKCdlZGl0X2V2ZW50Jyl9PC9oMz4Ke2Vsc2V9CjxoMz57JG1vZC0+TGFuZygnY2FsX2FkZGV2ZW50Jyl9PC9oMz4Key9pZn0KCntpZiAkZXZlbnQuZXZlbnRfaWQgPiAwICYmICRldmVudC5ldmVudF9wYXJlbnRfaWQgPiAwfQo8ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyI+eyRtb2QtPkxhbmcoJ2luZm9fZWRpdF9jaGlsZGV2ZW50Jyl9PC9kaXY+CnsvaWZ9CntpZiAkZXZlbnQuZXZlbnRfaWQgPiAwICYmICRldmVudC5ldmVudF9yZWN1cl9wZXJpb2QgIT0gJ25vbmUnICYmICRldmVudC5ldmVudF9wYXJlbnRfaWQgPT0gLTF9CjxkaXYgY2xhc3M9ImluZm9ybWF0aW9uIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7Ij57JG1vZC0+TGFuZygnaW5mb19lZGl0X3BhcmVudGV2ZW50Jyl9PC9kaXY+CnsvaWZ9Cgp7JGZvcm1zdGFydH17JGhpZGRlbnxkZWZhdWx0OicnfQoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9c3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfSIvPgogICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1jYW5jZWwiIHZhbHVlPSJ7JG1vZC0+TGFuZygnY2FuY2VsJyl9Ii8+CiAgPC9wPgo8L2Rpdj4KCntjYXB0dXJlIGFzc2lnbj0ndXNlMjQnfXskbW9kLT5HZXRQcmVmZXJlbmNlKCd1c2VfdHdlbHZlX2hvdXJfY2xvY2snKX17L2NhcHR1cmV9CntpZiAkdXNlMjQgPT0gMX0KICB7YXNzaWduIHZhcj0ndXNlMjQnIHZhbHVlPTB9CntlbHNlfQogIHthc3NpZ24gdmFyPSd1c2UyNCcgdmFsdWU9MX0Key9pZn0KCjxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgPGRpdiBjbGFzcz0iZ3JpZF84IiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDA7Ij4KICAgIDxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgICAgIDxsYWJlbCBjbGFzcz0iZ3JpZF8zIj4qeyRtb2QtPkxhbmcoJ2NhbF9mcm9tZGF0ZScpfTo8L2xhYmVsPgogICAgICA8ZGl2IGNsYXNzPSJncmlkXzkiPgogICAgICAgIHtjYXB0dXJlIGFzc2lnbj0ndG1wJ317JGFjdGlvbmlkfXN0YXJ0ZGF0ZV97L2NhcHR1cmV9CiAgICAgICAgPHNwYW4gaWQ9InN0YXJ0ZGF0ZSI+e2h0bWxfc2VsZWN0X2RhdGUgcHJlZml4PSR0bXAgdGltZT0kZXZlbnQuZXZlbnRfZGF0ZV9zdGFydF91dCBzdGFydF95ZWFyPSRzdGFydF95ZWFyIGVuZF95ZWFyPSRlbmRfeWVhcn08L3NwYW4+CiAgICAgICAgJm5ic3A7PHNwYW4gaWQ9InN0YXJ0dGltZSJ7aWYgJGV2ZW50LmFsbF9kYXlfZXZlbnQgPT0gMX0gc3R5bGU9ImRpc3BsYXk6IG5vbmU7InsvaWZ9PiA8c3BhbiBzdHlsZT0icGFkZGluZy1yaWdodDogMC41ZW07Ij5APC9zcGFuPiB7aHRtbF9zZWxlY3RfdGltZSB1c2VfMjRfaG91cnM9JHVzZTI0IHByZWZpeD0kdG1wIHRpbWU9JGV2ZW50LmV2ZW50X2RhdGVfc3RhcnRfdXQgbWludXRlX2ludGVydmFsPTE1IGRpc3BsYXlfc2Vjb25kcz1mYWxzZX08L3NwYW4+CiAgICAgICAgJm5ic3A7eyRtb2QtPkxhbmcoJ2FsbGRheScpfTogPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfWFsbF9kYXlfZXZlbnQiIGlkPSJhbGxfZGF5X2V2ZW50IiB2YWx1ZT0iMSIge2lmICRldmVudC5hbGxfZGF5X2V2ZW50fSBjaGVja2VkPSJjaGVja2VkInsvaWZ9Lz4KICAgICAgICB7YXNzaWduIHZhcj0nc19kYXRlJyB2YWx1ZT0kZXZlbnQuZXZlbnRfZGF0ZV9zdGFydF91dH17YXNzaWduIHZhcj0nZV9kYXRlJyB2YWx1ZT0kZXZlbnQuZXZlbnRfZGF0ZV9lbmRfdXR9PGJyLz4KICAgICAgICA8bGFiZWwgaWQ9InVzZV9lbmRkYXRlIj48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJlbmRkYXRlX3ZhbGlkIiBuYW1lPSJ7JGFjdGlvbmlkfWVuZGRhdGVfdmFsaWQiIHZhbHVlPSIxIiB7aWYgJHNfZGF0ZSAhPSAkZV9kYXRlICYmICRlX2RhdGUgIT0gMH1jaGVja2VkPSJjaGVja2VkInsvaWZ9Lz57JG1vZC0+TGFuZygndXNlX3RvX2RhdGUnKX08L2xhYmVsPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgaWQ9ImVuZGRhdGUiIGNsYXNzPSJjX2Z1bGwgY2YiIHtpZiAkc19kYXRlID09ICRlX2RhdGUgfHwgJGVfZGF0ZSA9PSAwfXN0eWxlPSJkaXNwbGF5OiBub25lOyJ7L2lmfT4KICAgICAgPGxhYmVsIGNsYXNzPSJncmlkXzMiPnskbW9kLT5MYW5nKCdjYWxfdG9kYXRlJyl9OjwvbGFiZWw+CiAgICAgIDxkaXYgY2xhc3M9ImdyaWRfOCI+CiAgICAgICAge2NhcHR1cmUgYXNzaWduPSd0bXAnfXskYWN0aW9uaWR9ZW5kZGF0ZV97L2NhcHR1cmV9CiAgICAgICAge2h0bWxfc2VsZWN0X2RhdGUgcHJlZml4PSR0bXAgIHRpbWU9JGV2ZW50LmV2ZW50X2RhdGVfZW5kX3V0IHN0YXJ0X3llYXI9JHN0YXJ0X3llYXIgZW5kX3llYXI9JGVuZF95ZWFyfTxzcGFuIGlkPSJlbmR0aW1lIntpZiAkZXZlbnQuYWxsX2RheV9ldmVudCA9PSAxfSBzdHlsZT0iZGlzcGxheTogbm9uZTsiey9pZn0+IDxzcGFuIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OiAwLjVlbTsiPkA8L3NwYW4+IHtodG1sX3NlbGVjdF90aW1lIHVzZV8yNF9ob3Vycz0kdXNlMjQgdGltZT0kZXZlbnQuZXZlbnRfZGF0ZV9lbmRfdXQgcHJlZml4PSR0bXAgbWludXRlX2ludGVydmFsPTE1IGRpc3BsYXlfc2Vjb25kcz1mYWxzZX08L3NwYW4+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgICAgPGxhYmVsIGNsYXNzPSJncmlkXzMiPip7JG1vZC0+TGFuZygnY2FsX3RpdGxlJyl9OjwvbGFiZWw+CiAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZ3JpZF84IiBuYW1lPSJ7JGFjdGlvbmlkfWV2ZW50X3RpdGxlIiB2YWx1ZT0ieyRldmVudC5ldmVudF90aXRsZX0iIG1heGxlbmd0aD0iMjU1Ii8+PC9wPgogICAgPC9kaXY+CgogICAge2lmIGlzc2V0KCRldmVudF9zdW1tYXJ5KX0KICAgIDxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgICAgIDxsYWJlbCBjbGFzcz0iZ3JpZF8zIj57JG1vZC0+TGFuZygnY2FsX3N1bW1hcnknKX06PC9sYWJlbD4KICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJncmlkXzgiIG5hbWU9InskYWN0aW9uaWR9ZXZlbnRfc3VtbWFyeSIgdmFsdWU9InskZXZlbnQuZXZlbnRfc3VtbWFyeX0iIG1heGxlbmd0aD0iMjU1Ii8+CiAgICA8L2Rpdj4KICAgIHsvaWZ9CgogIDwvZGl2PnsqIC5ncmlkXzggKn0KCiAgPGRpdiBjbGFzcz0iZ3JpZF80Ij4KICAgIHtpZiBpc3NldCgkZXZlbnQub3duZXJfbmFtZSl9CiAgICA8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICAgICA8bGFiZWwgY2xhc3M9ImdyaWRfMyI+eyRtb2QtPkxhbmcoJ293bmVyJyl9OjwvbGFiZWw+CiAgICAgIDxkaXYgY2xhc3M9ImdyaWRfOSI+eyRldmVudC5vd25lcl9uYW1lfTwvZGl2PgogICAgPC9kaXY+CiAgICB7L2lmfQoKICAgIDxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgICAgIDxsYWJlbCBjbGFzcz0iZ3JpZF8zIj57JG1vZC0+TGFuZygnc3RhdHVzJyl9OjwvbGFiZWw+CiAgICAgIHskdG1wID0gWyAnRCc9PiRtb2QtPkxhbmcoJ2RyYWZ0JyksICdQJz0+JG1vZC0+TGFuZygncHVibGlzaGVkJykgXX0KICAgICAgPHNlbGVjdCBuYW1lPSJ7JGFjdGlvbmlkfWV2ZW50X3N0YXR1cyIgY2xhc3M9ImdyaWRfOCI+CiAgICAgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kdG1wIHNlbGVjdGVkPSRldmVudC5ldmVudF9zdGF0dXN9CiAgICAgIDwvc2VsZWN0PgogICAgPC9kaXY+CiAgICB7aWYgaXNzZXQoJGNhdGVnb3JpZXMpfQogICAgICA8YnIvPgogICAgICA8cCBjbGFzcz0iY19mdWxsIGNmIj48c3Ryb25nPnskbW9kLT5MYW5nKCdjYWxfY2F0ZWdvcmllcycpfTo8L3N0cm9uZz48L3A+CiAgICAgIDxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgICAgIHtmb3JlYWNoIGZyb209JGNhdGVnb3JpZXMgaXRlbT0nb25lJ30KICAgICAgICA8bGFiZWwgc3R5bGU9ImZsb2F0OiBsZWZ0OyB3aWR0aDogNTAlOyI+eyRvbmUtPmZpZWxkfSB7JG9uZS0+bmFtZX08L2xhYmVsPgogICAgICB7L2ZvcmVhY2h9CiAgICAgIDwvZGl2PgogICAgICA8aHIvPgogICAgey9pZn0KCiAgICB7aWYgaXNzZXQoJGFsbG93X292ZXJsYXApfQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnY2FsX292ZXJsYXAnKX06PC9wPgogICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JGFjdGlvbmlkfWV2ZW50X2FsbG93c19vdmVybGFwIiB2YWx1ZT0iMCIvPgogICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ieyRhY3Rpb25pZH1ldmVudF9hbGxvd3Nfb3ZlcmxhcCIgdmFsdWU9IjEiIGNoZWNrZWQ9ImNoZWNrZWQiLz4KICAgICAgICA8YnIvPnskbW9kLT5MYW5nKCdjYWxfaW5mb19vdmVybGFwJyl9CiAgICAgIDwvcD4KICAgIDwvZGl2PgogICAgey9pZn0KCiAgICA8ZGl2IGlkPSJyZWN1cl9hbGwiIHtpZiAkZXZlbnQuZXZlbnRfcmVjdXJfcGVyaW9kICE9ICdub25lJyAmJiAkZXZlbnQuZXZlbnRfaWQgPiAwfXN0eWxlPSJkaXNwbGF5OiBub25lOyJ7L2lmfT4KICAgIHtpZiAkZXZlbnQuZXZlbnRfcGFyZW50X2lkIDw9IDB9CiAgICA8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICAgICA8bGFiZWwgY2xhc3M9ImdyaWRfMyI+eyRtb2QtPkxhbmcoJ2NhbF9yZWN1cl9wZXJpb2QnKX06PC9sYWJlbD4KICAgICAge2NhcHR1cmUgYXNzaWduPSd0bXAnfXskYWN0aW9uaWR9ZXZlbnRfcmVjdXJfcGVyaW9key9jYXB0dXJlfQogICAgICA8c2VsZWN0IGNsYXNzPSJncmlkXzkiIGlkPSJyZWN1cnBlcmlvZCIgbmFtZT0ieyRhY3Rpb25pZH1ldmVudF9yZWN1cl9wZXJpb2QiIG9uY2xpY2s9ImhhbmRsZURyb3Bkb3duKCk7Ij4KICAgICAgICB7Zm9yZWFjaCBmcm9tPSRyZWN1cl9vcHRpb25zIGtleT1rZXkgaXRlbT12YWx1ZX0KICAgICAgICAgIDxvcHRpb24gdmFsdWU9InskdmFsdWV9IiB7aWYgJHZhbHVlID09ICRldmVudF9yZWN1cl9wZXJpb2R9c2VsZWN0ZWQ9InNlbGVjdGVkInsvaWZ9Pnska2V5fTwvb3B0aW9uPgogICAgICAgIHsvZm9yZWFjaH0KICAgICAgPC9zZWxlY3Q+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiIGlkPSJyZWN1cmRldGFpbHMiIHN0eWxlPSJwYWRkaW5nOiAxZW07IHtpZiAkZXZlbnQuZXZlbnRfcmVjdXJfcGVyaW9kID09ICdub25lJ31kaXNwbGF5OiBub25lO3svaWZ9Ij4KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2NhbF9yZWN1cl9kZXRhaWxzJyl9OjwvcD4KICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIHtjYXB0dXJlIGFzc2lnbj0ndG1wJ317JGFjdGlvbmlkfWV2ZW50X3JlY3VyX2ludGVydmFsey9jYXB0dXJlfQogICAgICB7JG1vZC0+TGFuZygnaW50ZXJ2YWwnKX06Jm5ic3A7e2h0bWxfb3B0aW9ucyBuYW1lPSR0bXAgc2VsZWN0ZWQ9JGV2ZW50LmV2ZW50X3JlY3VyX2ludGVydmFsIG9wdGlvbnM9JG51bXN9Jm5ic3A7PHNwYW4gaWQ9ImludGVydmFsbGFiZWwiPnskcmVwZWF0X3N0cn08L3NwYW4+PGJyLz4KICAgICAgPC9wPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciIGlkPSJyZWN1cl93ZWVrbHkiIHtpZiAkZXZlbnQuZXZlbnRfcmVjdXJfcGVyaW9kICE9ICd3ZWVrbHknfXN0eWxlPSJkaXNwbGF5OiBub25lO3svaWZ9Ij4KICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnd2Vla2RheXMnKX06PC9wPgogICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3dlZWtkYXlzfTwvcD4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93IiBpZD0icmVjdXJfbW9udGhseSIge2lmICRldmVudC5ldmVudF9yZWN1cl9wZXJpb2QgIT0gJ21vbnRobHknfXN0eWxlPSJkaXNwbGF5OiBub25lO3svaWZ9Ij4KICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnZnJlcXVlbmN5Jyl9OjwvcD4KICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgICA8c2VsZWN0IG5hbWU9InskYWN0aW9uaWR9ZXZlbnRfcmVjdXJfbW9udGhkYXlzW10iIG11bHRpcGxlPSJtdWx0aXBsZSIgc2l6ZT0iNSI+CiAgICAgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kcmVjdXJfZGF5cyBzZWxlY3RlZD0kZXZlbnQuZXZlbnRfcmVjdXJfbW9udGhkYXlzfQogICAgICAgPC9zZWxlY3Q+CiAgICAgIDwvcD4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2NhbF9yZWN1cl91bnRpbCcpfTo8L3A+CiAgICAgIHtjYXB0dXJlIGFzc2lnbj0ndG1wJ317JGFjdGlvbmlkfWV2ZW50X3JlY3VyX2RhdGVfey9jYXB0dXJlfQogICAgICB7Y2FwdHVyZSBhc3NpZ249J3RtcDInfXskYWN0aW9uaWR9ZXZlbnRfcmVjdXJfY291bnR7L2NhcHR1cmV9CiAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPntodG1sX3NlbGVjdF9kYXRlIHRpbWU9JGV2ZW50LmV2ZW50X2RhdGVfcmVjdXJfZW5kX3V0IHByZWZpeD0kdG1wIHN0YXJ0X3llYXI9JHN0YXJ0X3llYXIgZW5kX3llYXI9JGVuZF95ZWFyfQogICAgICA8YnIvPnskbW9kLT5MYW5nKCdtYXhfcmVjdXJfZXZlbnRzJyl9OiZuYnNwO3todG1sX29wdGlvbnMgbmFtZT0kdG1wMiBvcHRpb25zPSRtYXhpdGVycyBzZWxlY3RlZD0kZXZlbnQuZXZlbnRfcmVjdXJfY291bnR9PC9wPgogICAgPC9kaXY+CiAgICA8L2Rpdj57KiByZWN1cmRldGFpbHMgKn0KICAgIDwvZGl2PnsqIHJlY3VyX2FsbCAqfQogICAgey9pZn0KCiAgICB7aWYgJGV2ZW50LmV2ZW50X2lkID4gMCAmJiAkZXZlbnQuZXZlbnRfcmVjdXJfcGVyaW9kICE9ICdub25lJyAmJiAkZXZlbnQuZXZlbnRfcGFyZW50X2lkID09IC0xfQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygndXBkYXRlX2NoaWxkcmVuJyl9OjwvcD4KICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgICAge2NhcHR1cmUgYXNzaWduPSd0bXAnfXskYWN0aW9uaWR9dXBkYXRlX2NoaWxkcmVuey9jYXB0dXJlfQogICAgICAgIDxpbnB1dCBpZD0idXBkYXRlX2NoaWxkcmVuIiB0eXBlPSJjaGVja2JveCIgbmFtZT0ieyR0bXB9IiB2YWx1ZT0iMSIvPgogICAgICA8L3A+CiAgICA8L2Rpdj4KICAgIHsvaWZ9CgogICAge2lmICRldmVudC5ldmVudF9pZCA+IDAgJiYgJGV2ZW50LmV2ZW50X3BhcmVudF9pZCA+IDB9CiAgICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfcmVtb3ZlZnJvbXBhcmVudCcpfTwvcD4KICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgICAge2NnZV95ZXNub19vcHRpb25zIHByZWZpeD0kYWN0aW9uaWQgbmFtZT1yZW1vdmVmcm9tcGFyZW50fQogICAgICAgIDxici8+eyRtb2QtPkxhbmcoJ2luZm9fcmVtb3ZlZnJvbXBhcmVudCcpfQogICAgICA8L3A+CiAgICA8L2Rpdj4KICAgIHsvaWZ9CiAgPC9kaXY+eyogLmdyaWRfNCAqfQo8L2Rpdj4KCjxoci8+CjxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgICB7aWYgaXNzZXQoJGV2ZW50X2RldGFpbHMpfQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnY2FsX2RldGFpbHMnKX06PC9wPgogICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGV2ZW50X2RldGFpbHN9PC9wPgogICAgPC9kaXY+CiAgICB7L2lmfQoKICAgIHtpZiBpc3NldCgkZmllbGRzKX0KICAgICAge2ZvcmVhY2ggZnJvbT0kZmllbGRzIGl0ZW09J29uZSd9CiAgICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG9uZS0+bmFtZX08L3A+CiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRvbmUtPmZpZWxkfTwvcD4KICAgICAgPC9kaXY+CiAgICAgIHsvZm9yZWFjaH0KICAgIHsvaWZ9CjwvZGl2PnsqIGNfZnVsbCAqfQoKeyRmb3JtZW5kfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/admin_ajax_getcategories.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCRjYXRlZ29yaWVzKSAmJiBjb3VudCgkY2F0ZWdvcmllcyl9Cjx0YWJsZSBjbGFzcz0icGFnZXRhYmxlIj4KICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgIDx0aD57JG1vZC0+TGFuZygnbmFtZScpfTwvdGg+CiAgICAgIDx0aD48L3RoPgogICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj48L3RoPgogICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj48L3RoPgogICAgPC90cj4KICA8L3RoZWFkPgogIDx0Ym9keSBpZD0iY2F0ZWdvcnlsaXN0Ij4KICB7Zm9yZWFjaCAkY2F0ZWdvcmllcyBhcyAkY2F0fQogICAge21vZHVsZV9hY3Rpb25fbGluayBhY3Rpb249YWRtaW5fYWRkZWRpdF9jYXRlZ29yeSBjYXRpZD0kY2F0LmNhdGVnb3J5X2lkIHVybG9ubHk9MSBhc3NpZ249J2VkaXRfdXJsJ30KICAgIHttb2R1bGVfYWN0aW9uX2xpbmsgYWN0aW9uPWFkbWluX2RlbGV0ZV9jYXRlZ29yeSBjYXRpZD0kY2F0LmNhdGVnb3J5X2lkIHVybG9ubHk9MSBhc3NpZ249J2RlbGV0ZV91cmwnfQogICAgPHRyIGlkPSJjYXRfeyRjYXQuY2F0ZWdvcnlfaWR9Ij4KICAgICAgPHRkPgogICAgICAgIDxhIGhyZWY9InskZWRpdF91cmx9IiB0aXRsZT0ieyRtb2QtPkxhbmcoJ2VkaXQnKX0iPnskY2F0LmNhdGVnb3J5X25hbWV9PC9hPgogICAgICA8L3RkPgogICAgICA8dGQ+CiAgICAgICAgIDxzcGFuIHN0eWxlPSJwYWRkaW5nOiAycHg7IHtpZiAkY2F0LmNhdGVnb3J5X2JnY29sb3J9YmFja2dyb3VuZC1jb2xvcjogeyRjYXQuY2F0ZWdvcnlfYmdjb2xvcn07ey9pZn0ge2lmICRjYXQuY2F0ZWdvcnlfZmdjb2xvcn1jb2xvcjogeyRjYXQuY2F0ZWdvcnlfZmdjb2xvcn07ey9pZn0iPlNhbXBsZSBUZXh0PC9zcGFuPgogICAgICA8L3RkPgogICAgICA8dGQ+PGEgaHJlZj0ieyRlZGl0X3VybH0iIHRpdGxlPSJ7JG1vZC0+TGFuZygnZWRpdCcpfSI+e2NnaW1hZ2UgaW1hZ2U9J2ljb25zL3N5c3RlbS9lZGl0LmdpZicgY2xhc3M9J3N5c3RlbWljb24nIGFsdD0kbW9kLT5MYW5nKCdlZGl0Jyl9PC9hPjwvdGQ+CiAgICAgIDx0ZD48YSBocmVmPSJ7JGRlbGV0ZV91cmx9IiB0aXRsZT0ieyRtb2QtPkxhbmcoJ2RlbGV0ZScpfSI+e2NnaW1hZ2UgaW1hZ2U9J2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJyBjbGFzcz0nc3lzdGVtaWNvbicgYWx0PSRtb2QtPkxhbmcoJ2RlbGV0ZScpfTwvYT48L3RkPgogICAgPC90cj4KICB7L2ZvcmVhY2h9CiAgPC90Ym9keT4KPC90YWJsZT4Key9pZn0=]]></data>
	</file>
	<file>
	  <filename>/templates/admin_categories_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogIHZhciBjYXRlZ29yeV9yZWZyZXNoX3VybCA9ICd7bW9kdWxlX2FjdGlvbl9saW5rIGFjdGlvbj0nYWRtaW5fYWpheF9nZXRjYXRlZ29yaWVzJyBqc2ZyaWVuZGx5PTF9JnNob3d0ZW1wbGF0ZT1mYWxzZSc7CiAgJCgnI2NhdGVnb3J5dGFibGUnKS5sb2FkKGNhdGVnb3J5X3JlZnJlc2hfdXJsKTsKCiAgJCgnI3Jlb3JkZXJfbW9kZV9idXR0b24nKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI2NhdGVnb3J5X29wdGlvbnMnKS5oaWRlKCk7CiAgICAkKCcjcmVvcmRlcl9tb2RlJykuc2hvdygpOwogICAgJCgndGJvZHkjY2F0ZWdvcnlsaXN0Jykuc29ydGFibGUoewogICAgICBpdGVtczogJz4gdHInLAogICAgICBjdXJzb3I6ICdtb3ZlJwogICAgfSkKICB9KTsKICAkKCcjcmVvcmRlcl9tb2RlX2NhbmNlbCcpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAkKCcjcmVvcmRlcl9tb2RlJykuaGlkZSgpOwogICAgJCgnI2NhdGVnb3J5X29wdGlvbnMnKS5zaG93KCk7CiAgICAkKCd0Ym9keSNjYXRlZ29yeWxpc3QnKS5zb3J0YWJsZSgnZGVzdHJveScpOwogICAgLy8gYWpheCBjYWxsIHRvIHJlc3RvcmUgdGhlIGNhdGVnb3J5IGxpc3QKICAgICQoJyNjYXRlZ29yeXRhYmxlJykubG9hZChjYXRlZ29yeV9yZWZyZXNoX3VybCk7CiAgfSk7CiAgJCgnI3Jlb3JkZXJfbW9kZV9zdWJtaXQnKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI3Jlb3JkZXJfbW9kZScpLmhpZGUoKTsKICAgICQoJyNjYXRlZ29yeV9vcHRpb25zJykuc2hvdygpOwogICAgLy8gYWpheCBjYWxsIHRvIHN1Ym1pdCB0aGUgY2F0ZWdvcnkgbGlzdAogICAgJC5hamF4KHsKICAgICAgdHlwZTogJ1BPU1QnLAogICAgICB1cmw6ICd7bW9kdWxlX2FjdGlvbl9saW5rIGFjdGlvbj1hZG1pbl9hamF4X29yZGVyY2F0ZWdvcmllcyBqc2ZyaWVuZGx5PTF9JnNob3d0ZW1wbGF0ZT1mYWxzZScsCiAgICAgIGRhdGE6ICQoJ3Rib2R5I2NhdGVnb3J5bGlzdCcpLnNvcnRhYmxlKCdzZXJpYWxpemUnKSwKICAgICAgc3VjY2VzczogZnVuY3Rpb24oIGRhdGEgKSB7CiAgICAgICAgLy8gYWpheCBjYWxsIHRvIHJlc3RvcmUgdGhlIGNhdGVnb3J5IGxpc3QKICAgICAgICAkKCcjY2F0ZWdvcnl0YWJsZScpLmxvYWQoY2F0ZWdvcnlfcmVmcmVzaF91cmwpOwogICAgICB9LAogICAgICBlcnJvcjogZnVuY3Rpb24oanFYSFIsIHRleHRTdGF0dXMsIGVycm9yVGhyb3duKSB7CiAgICAgICAgYWxlcnQoJ2ZhaWwgJyt0ZXh0U3RhdHVzKTsKICAgICAgICAvLyBhamF4IGNhbGwgdG8gcmVzdG9yZSB0aGUgY2F0ZWdvcnkgbGlzdAogICAgICAgICQoJyNjYXRlZ29yeXRhYmxlJykubG9hZChjYXRlZ29yeV9yZWZyZXNoX3VybCk7CiAgICAgIH0KICAgIH0pOwogIH0pOwp9KTsKPC9zY3JpcHQ+Cgo8ZGl2IGlkPSJjYXRlZ29yeV9vcHRpb25zIiBjbGFzcz0icGFnZW9wdGlvbnMiPgogIDxhIGhyZWY9Inttb2R1bGVfYWN0aW9uX2xpbmsgYWN0aW9uPSdhZG1pbl9hZGRlZGl0X2NhdGVnb3J5JyB1cmxvbmx5PTF9Ij57Y2dpbWFnZSBpbWFnZT0naWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnIGFsdD0kbW9kLT5MYW5nKCdhZGRfY2F0ZWdvcnknKSBjbGFzcz0nc3lzdGVtaWNvbid9IHskbW9kLT5MYW5nKCdhZGRfY2F0ZWdvcnknKX08L2E+CiAgPGEgaWQ9InJlb3JkZXJfbW9kZV9idXR0b24iPntjZ2ltYWdlIGltYWdlPSdpY29ucy9zeXN0ZW0vcmVvcmRlci5naWYnIGFsdD0kbW9kLT5MYW5nKCdyZW9yZGVyJyl9IHskbW9kLT5MYW5nKCdyZW9yZGVyJyl9PC9hPgo8L2Rpdj4KCjxkaXYgaWQ9InJlb3JkZXJfbW9kZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KICA8ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyI+eyRtb2QtPkxhbmcoJ2luZm9fcmVvcmRlcl9jYXRlZ29yaWVzJyl9PC9kaXY+CiAgPGEgaWQ9InJlb3JkZXJfbW9kZV9jYW5jZWwiPntjZ2ltYWdlIGltYWdlPSdmYWxzZS5naWYnIGFsdD0kbW9kLT5MYW5nKCdjYW5jZWwnKX0geyRtb2QtPkxhbmcoJ2NhbmNlbCcpfTwvYT4mbmJzcDsKICA8YSBpZD0icmVvcmRlcl9tb2RlX3N1Ym1pdCI+e2NnaW1hZ2UgaW1hZ2U9J3RydWUuZ2lmJyBhbHQ9JG1vZC0+TGFuZygnc3VibWl0Jyl9IHskbW9kLT5MYW5nKCdzdWJtaXQnKX08L2E+CjwvZGl2PgoKPGRpdiBpZD0iY2F0ZWdvcnl0YWJsZSI+PC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/admin_events_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2NnanNfcmVxdWlyZSBjc3NmaWxlPSdsaWIvZnVsbGNhbGVuZGFyL2Z1bGxjYWxlbmRhci5taW4uY3NzJ30Ke2NnanNfcmVxdWlyZSBqc2ZpbGU9J2xpYi9mdWxsY2FsZW5kYXIvbGliL21vbWVudC5taW4uanMnfQp7Y2dqc19yZXF1aXJlIGpzZmlsZT0nbGliL2Z1bGxjYWxlbmRhci9mdWxsY2FsZW5kYXIuanMnfQp7Y2dqc19yZXF1aXJlIGNzc2ZpbGU9J2xpYi9jb2xvclBpY2tlci9jb2xvclBpY2tlci5jc3MnfQp7Y2dqc19yZXF1aXJlIGpzZmlsZT0nbGliL2NvbG9yUGlja2VyL2pxdWVyeS5jb2xvclBpY2tlci5taW4uanMnfQp7Y2djc3NfYWRkfQouZmMtZXZlbnQgewogIG1pbi1oZWlnaHQ6IDIwcHg7Cn0KLmZjLWV2ZW50LWljb25zIHsKICB0ZXh0LWFsaWduOiByaWdodDsKICBmbG9hdDogcmlnaHQ7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGJvdHRvbTogMDsKICByaWdodDogMDsKfQouaW5mb3JtYXRpb24gewogIGRpc3BsYXk6IGJsb2NrOwp9Ci5lcnJvciB7CiAgZGlzcGxheTogYmxvY2s7Cn0KLmZjLWV2ZW50LWNvbnRhaW5lciBhIHsKICBjb2xvcjogd2hpdGU7Cn0KLnRleHRfcmlnaHQgewogIHRleHQtYWxpZ246IHJpZ2h0Owp9Ci5mb3JtX3JvdyB7CiAgcGFkZGluZzogMnB4IDA7CiAgaGVpZ2h0OiBhdXRvOwp9Ci5mb3JtX3Byb21wdCB7CiAgdGV4dC1hbGlnbjogcmlnaHQ7Cn0KLmZvcm1faW5wdXQgewp9CmEuZ290b19kYXRlIHsKICBjdXJzb3I6IHBvaW50ZXI7IGN1cnNvcjogaGFuZDsKfQojZmluZF9yZXN1bHRzX3BhbmVsIHRhYmxlIHsKICB3aWR0aDogMTAwJTsKfQojZmluZF9yZXN1bHRzX3BhbmVsIHRoIHsKICBwYWRkaW5nLXJpZ2h0OiAxZW07Cn0KI2ZpbmRfcmVzdWx0c19wYW5lbCB0ZCB7CiAgcGFkZGluZy1yaWdodDogMWVtOwp9CiNmaW5kX3Jlc3VsdHNfbm9uZSB7CiAgd2lkdGg6IDk1JTsKfQp7L2NnY3NzX2FkZH0KCnttb2R1bGVfYWN0aW9uX2xpbmsgYWN0aW9uPSdhZG1pbl9hamF4X2ZldGNoZXZlbnRzJyBqc2ZyaWVuZGx5PTEgYXNzaWduPWZldGNoX3VybH0KCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KU3RyaW5nLnByb3RvdHlwZS5hZGRTbGFzaGVzID0gZnVuY3Rpb24oKQp7CiAgIC8vbm8gbmVlZCB0byBkbyAoc3RyKycnKSBhbnltb3JlIGJlY2F1c2UgJ3RoaXMnIGNhbiBvbmx5IGJlIGEgc3RyaW5nCiAgIHJldHVybiB0aGlzLnJlcGxhY2UoL1tcXCInXS9nLCAnXFwkJicpLnJlcGxhY2UoL1x1MDAwMC9nLCAnXFwwJyk7Cn0KClN0cmluZy5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24oKSB7CiAgIHZhciB0eHQgPSAkKCc8ZGl2Lz4nKS5odG1sKHRoaXMpLnRleHQoKTsKICAgcmV0dXJuIHR4dDsKfQoKZnVuY3Rpb24gY2xvc2VEaWFsb2coc2VsKSB7CiAgdHJ5IHsKICAgIGlmKCAkKHNlbCkuZGlhbG9nKCdpc09wZW4nKSApICQoc2VsKS5kaWFsb2coJ2Nsb3NlJyk7CiAgfSBjYXRjaCggZXJyICkgewogICAgLy8gbm90aGluZy4KICB9Cn0KZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlLHNob3dfdGltZSkgewogIHZhciBsb2NhbGUgPSB3aW5kb3cubmF2aWdhdG9yLnVzZXJMYW5ndWFnZSB8fCB3aW5kb3cubmF2aWdhdG9yLmxhbmd1YWdlOwogIGRhdGUubG9jYWxlKGxvY2FsZSk7CiAgdmFyIG91dCA9IGRhdGUuZm9ybWF0KCdMJyk7CiAgaWYoIHNob3dfdGltZSApIG91dCA9IGRhdGUuZm9ybWF0KCdMIExUJyk7CiAgcmV0dXJuIG91dDsKfQpmdW5jdGlvbiBjcmVhdGVDb29raWUobmFtZSwgdmFsdWUsIGRheXMpIHsKICAgIHZhciBleHBpcmVzOwoKICAgIGlmIChkYXlzKSB7CiAgICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZSgpOwogICAgICAgIGRhdGUuc2V0VGltZShkYXRlLmdldFRpbWUoKSArIChkYXlzICogMjQgKiA2MCAqIDYwICogMTAwMCkpOwogICAgICAgIGV4cGlyZXMgPSAiOyBleHBpcmVzPSIgKyBkYXRlLnRvR01UU3RyaW5nKCk7CiAgICB9IGVsc2UgewogICAgICAgIGV4cGlyZXMgPSAiIjsKICAgIH0KICAgIGRvY3VtZW50LmNvb2tpZSA9IGVzY2FwZShuYW1lKSArICI9IiArIGVzY2FwZShKU09OLnN0cmluZ2lmeSh2YWx1ZSkpICsgZXhwaXJlcyArICI7IHBhdGg9LyI7Cn0KZnVuY3Rpb24gcmVhZENvb2tpZShuYW1lKSB7CiAgICB2YXIgbmFtZUVRID0gZXNjYXBlKG5hbWUpICsgIj0iOwogICAgdmFyIGNhID0gZG9jdW1lbnQuY29va2llLnNwbGl0KCc7Jyk7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIGMgPSBjYVtpXTsKICAgICAgICB3aGlsZSAoYy5jaGFyQXQoMCkgPT09ICcgJykgYyA9IGMuc3Vic3RyaW5nKDEsIGMubGVuZ3RoKTsKICAgICAgICBpZiAoYy5pbmRleE9mKG5hbWVFUSkgPT09IDApIHsKCSAgdmFyIHQgPSB1bmVzY2FwZShjLnN1YnN0cmluZyhuYW1lRVEubGVuZ3RoLCBjLmxlbmd0aCkpOwoJICB0ID0galF1ZXJ5LnBhcnNlSlNPTih0KTsKCSAgcmV0dXJuIHQ7Cgl9CiAgICB9CiAgICByZXR1cm4gbnVsbDsKfQpmdW5jdGlvbiBlcmFzZUNvb2tpZShuYW1lKSB7CiAgICBjcmVhdGVDb29raWUobmFtZSwgIiIsIC0xKTsKfQoKJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICB2YXIgZGZsdENhbGVuZGFyVmlldyA9IChyZWFkQ29va2llKCdjZ2NhbGVuZGFyX2N1cnZpZXcnKSkgPyByZWFkQ29va2llKCdjZ2NhbGVuZGFyX2N1cnZpZXcnKSA6ICdtb250aCc7CiAgLy8gcmVzdG9yZSBvdXIgc2VsZWN0ZWQgZGF0ZSBmcm9tIGEgY29va2llLgogIHZhciBjdXJfZGF0ZSA9IG5ldyBEYXRlKCk7CiAgdmFyIGRhdGVzdHJpbmdzID0geyRkYXRlc3RyaW5nc307CiAgdmFyIHRtcCA9IHJlYWRDb29raWUoJ2NnY2FsZW5kYXJfZGF0ZScpOwogIGlmKCB0bXAgIT0gbnVsbCApIGN1cl9kYXRlID0gbmV3IERhdGUodG1wKTsKCiAgdmFyIF9ob2xpZGF5cyA9IG51bGw7CiAgJC5hamF4KHsKICAgICB1cmw6ICd7bW9kdWxlX2FjdGlvbl91cmwgYWN0aW9uPWFqYXhfZmV0Y2hob2xpZGF5cyBmb3JhamF4PTF9JwogIH0pLmRvbmUoZnVuY3Rpb24oZGF0YSl7CiAgICAgaWYoIHR5cGVvZiBkYXRhICE9ICd1bmRlZmluZWQnICYmIGRhdGEgIT0gbnVsbCAmJiBkYXRhLmxlbmd0aCA+IDAgKSB7CiAgICAgICAgX2hvbGlkYXlzID0gZGF0YTsKICAgICB9CiAgJCgnI2NhbGVuZGFydmlldycpLmZ1bGxDYWxlbmRhcih7CiAgICBkYXlSZW5kZXI6IGZ1bmN0aW9uKCBkYXRlLCBjZWxsICkgewogICAgICAgLy8gZ2V0IGhvbGlkYXkgZXZlbnRzIGZvciB0b2RheS4KICAgICAgIGlmKCAhIF9ob2xpZGF5cyBpbnN0YW5jZW9mIEFycmF5ICkgcmV0dXJuOwogICAgICAgaWYoIF9ob2xpZGF5cyA9PSBudWxsIHx8IF9ob2xpZGF5cy5sZW5ndGggPT0gMCApIHJldHVybjsKICAgICAgIHZhciBfdHN0MSA9IGRhdGUuZm9ybWF0KCdZWVlZLU1NLUREJyk7CiAgICAgICBfaG9saWRheXMuZm9yRWFjaChmdW5jdGlvbihlbnRyeSl7CiAgICAgICAgICBpZiggX3RzdDEgPT0gZW50cnkuc3RhcnQgKSB7CiAgICAgICAgICAgICBjZWxsLmFkZENsYXNzKCdob2xpZGF5Jyk7CgkgICAgIGNlbGwuY3NzKCdiYWNrZ3JvdW5kQ29sb3InLCd7JGhvbGlkYXlfYmdjb2xvcn0nKS5jc3MoJ2NvbG9yJywneyRob2xpZGF5X2ZnY29sb3J9Jyk7CgkgICAgIGNlbGwuaHRtbChlbnRyeS50aXRsZSk7CgkgIH0KICAgICAgIH0pOwogICAgfSwKICAgIGRheUNsaWNrOiBmdW5jdGlvbiggZGF0ZSwganNFdmVudCwgdmlldyApIHsKICAgICAgIHZhciB1cmwgPSAne21vZHVsZV9hY3Rpb25fbGluayBhY3Rpb249YWRtaW5fYWRkX2V2ZW50IHN0YXJ0PXh4IGpzZnJpZW5kbHk9MX0nOwogICAgICAgdmFyIHN0ID0geyRkZmx0X3N0YXJ0dGltZX07CiAgICAgICBkYXRlLnRpbWUoIHN0WzBdKyc6JytzdFsxXSApOyAgLy8gYWRqdXN0IHRpbWUgdG8gb3VyIGRlZmF1bHQgc3RhcnQvZW5kIHRpbWUuCiAgICAgICBzdGFydCA9IGRhdGUudG9JU09TdHJpbmcoKTsgLy8gYXNzdW1lIFVUQy9adWx1IHRpbWUuCiAgICAgICB1cmwgPSB1cmwucmVwbGFjZSgneHgnLHN0YXJ0KTs7CiAgICAgICBpZiggY29uZmlybSgneyRtb2QtPkxhbmcoJ2NvbmZpcm1fYWRkX2V2ZW50X2hlcmUnKX0nKSApIHsKICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDsKICAgICAgIH0KICAgIH0sCiAgICBldmVudHM6IHsKICAgICAgIHVybDogJ3skZmV0Y2hfdXJsfSZzaG93dGVtcGxhdGU9ZmFsc2UmdD0nK01hdGgucmFuZG9tKCksCiAgICAgICB0eXBlOiAnR0VUJywKICAgICAgIGRhdGE6IGZ1bmN0aW9uKCkgewogICAgICAgICB2YXIgbyA9IHt9OwogICAgICAgICBvWyd7JGFjdGlvbmlkfWZpbHRlciddID0gJCgnI2ZpbHRlcicpLnZhbCgpOwogICAgICAgICBvWyd7JGFjdGlvbmlkfXNob3djaGlsZHJlbiddID0gMTsKICAgICAgICAgcmV0dXJuIG87CiAgICAgICB9LAogICAgICAgZXJyb3I6IGZ1bmN0aW9uKGRhdGEpIHsKICAgICAgICAgYWxlcnQoZGF0YSk7CiAgICAgICAgIGFsZXJ0KCd7JG1vZC0+TGFuZygnZXJyb3JfZmV0Y2hpbmdfZXZlbnRzJyl8Y21zX2VzY2FwZX0nKTsKICAgICAgIH0KICAgIH0sCiAgICBkZWZhdWx0RGF0ZTogY3VyX2RhdGUsCiAgICBoZWFkZXI6IHsKICAgICAgbGVmdDogJ3ByZXYsbmV4dCx0b2RheScsCiAgICAgIGNlbnRlcjogJ3RpdGxlJywKICAgICAgcmlnaHQ6ICdsaXN0WWVhcixtb250aCxhZ2VuZGFXZWVrLGFnZW5kYURheScKICAgIH0sCiAgICBldmVudENvbG9yOiAneyRkZmx0X2JnY29sb3J9JywKICAgIGV2ZW50VGV4dENvbG9yOiAneyRkZmx0X2ZnY29sb3J9JywKICAgIGFsbERheVRleHQ6ICd7JG1vZC0+TGFuZygnYWxsZGF5Jyl8Y21zX2VzY2FwZX0nLAogICAgbW9udGhOYW1lczogZGF0ZXN0cmluZ3MubW9udGhOYW1lcywKICAgIG1vbnRoTmFtZXNTaG9ydDogZGF0ZXN0cmluZ3MubW9udGhOYW1lc1Nob3J0LAogICAgZGF5TmFtZXM6IGRhdGVzdHJpbmdzLmRheU5hbWVzLAogICAgZGF5TmFtZXNTaG9ydDogZGF0ZXN0cmluZ3MuZGF5TmFtZXNTaG9ydCwKICAgIGJ1dHRvblRleHQ6IHsKICAgICAgIGxpc3RZZWFyOiAnWWVhcicsCiAgICAgICB0b2RheTogJ3skdGV4dF90b2RheXxjbXNfZXNjYXBlfScuZGVjb2RlKCksCiAgICAgICB3ZWVrOiAneyR0ZXh0X3dlZWt8Y21zX2VzY2FwZX0nLmRlY29kZSgpLAogICAgICAgbW9udGg6ICd7JHRleHRfbW9udGh8Y21zX2VzY2FwZX0nLmRlY29kZSgpLAogICAgICAgZGF5OiAneyR0ZXh0X2RheXxjbXNfZXNjYXBlfScuZGVjb2RlKCkKICAgIH0sCiAgICBmaXJzdERheTogeyRmaXJzdGRheW9md2Vla30sCiAgICBkZWZhdWx0VmlldzogZGZsdENhbGVuZGFyVmlldywKICAgIGRlZmF1bHRFdmVudE1pbnV0ZXM6IDE1LAogICAgc2xvdE1pbnV0ZXM6IDE1LAogICAgZWRpdGFibGU6IHRydWUsCiAgICB2aWV3UmVuZGVyOiBmdW5jdGlvbiggdmlldywgZWxlbWVudCApIHsKICAgICAgY3VyX2RhdGUgPSAkKCcjY2FsZW5kYXJ2aWV3JykuZnVsbENhbGVuZGFyKCdnZXREYXRlJyk7CiAgICAgIGNyZWF0ZUNvb2tpZSgnY2djYWxlbmRhcl9kYXRlJyxjdXJfZGF0ZSw3KTsKICAgICAgY3JlYXRlQ29va2llKCdjZ2NhbGVuZGFyX2N1cnZpZXcnLHZpZXcubmFtZSw3KTsKICAgIH0sCiAgICB2aWV3RGVzdHJveTogZnVuY3Rpb24odmlldykgewogICAgICAgIGNsb3NlRGlhbG9nKCcjZXZlbnRwcmV2aWV3Jyk7CgljbG9zZURpYWxvZygnI2ZpbmRfcGFuZWwnKTsKCWNsb3NlRGlhbG9nKCcjZmluZF9yZXN1bHRzX3BhbmVsJyk7CiAgICB9LAoKICAgIGV2ZW50Q2xpY2s6IGZ1bmN0aW9uKGV2ZW50LCBqc0V2ZW50LCB2aWV3KSB7CiAgICAgICAkKCcjZXZlbnRfc3RhcnQnKS5odG1sKGZvcm1hdERhdGUoZXZlbnQuc3RhcnQsIWV2ZW50LmFsbERheSkpOwogICAgICAgJCgnI2V2ZW50X2Rlc2MnKS5odG1sKGV2ZW50LnN1bW1hcnkpOwogICAgICAgJCgnI2V2ZW50cHJldmlldyAuZHJhZnRfYmxvY2snKS5oaWRlKCk7CiAgICAgICAkKCcjZXZlbnRwcmV2aWV3IC5wYXJlbnRfYmxvY2snKS5oaWRlKCk7CiAgICAgICAkKCcjZXZlbnRwcmV2aWV3IC5jaGlsZF9ibG9jaycpLmhpZGUoKTsKICAgICAgIGlmKCBldmVudC5jaGlsZCApIHsKICAgICAgICAgJCgnI2V2ZW50cHJldmlldyAuY2hpbGRfYmxvY2snKS5zaG93KCk7CiAgICAgICB9CiAgICAgICBlbHNlIGlmKCBldmVudC5yZWN1cnMgKSB7CiAgICAgICAgICQoJyNldmVudHByZXZpZXcgLmNoaWxkX2Jsb2NrJykuaGlkZSgpOwogICAgICAgICAkKCcjZXZlbnRwcmV2aWV3IC5wYXJlbnRfYmxvY2snKS5zaG93KCk7CiAgICAgICB9CgogICAgICAgaWYoIGV2ZW50LnN0YXR1cyAhPSAnUCcgKSAkKCcjZXZlbnRwcmV2aWV3IC5kcmFmdF9ibG9jaycpLnNob3coKTsKCiAgICAgICBpZiggZXZlbnQuYWxsRGF5ICkgewogICAgICAgICAkKCcjZXZlbnRwcmV2aWV3IC5lbmRfYmxvY2snKS5oaWRlKCk7CgkgJCgnI2V2ZW50cHJldmlldyAuYWxsZGF5X2Jsb2NrJykuc2hvdygpOwogICAgICAgfQogICAgICAgZWxzZSB7CiAgICAgICAgICQoJyNldmVudHByZXZpZXcgLmFsbGRheV9ibG9jaycpLmhpZGUoKTsKICAgICAgICAgaWYoIGV2ZW50LmVuZCApIHsKICAgICAgICAgICAkKCcjZXZlbnRwcmV2aWV3IC5lbmRfYmxvY2snKS5zaG93KCk7CiAgICAgICAgICAgJCgnI2V2ZW50X2VuZCcpLmh0bWwoZm9ybWF0RGF0ZShldmVudC5lbmQsIWV2ZW50LmFsbERheSkpOwoJIH0KCSBlbHNlIHsKICAgICAgICAgICAkKCcjZXZlbnRwcmV2aWV3IC5lbmRfYmxvY2snKS5oaWRlKCk7CgkgfQogICAgICAgfQoKICAgICAgIHZhciB0bXBfYnV0dG9ucyA9IFt7CiAgICAgICAgIHRleHQ6ICd7JG1vZC0+TGFuZygnY2FsX2VkaXQnKX0nLAoJIGNsaWNrOiBmdW5jdGlvbigpIHsKICAgICAgICAgICB2YXIgdXJsID0gJ3ttb2R1bGVfYWN0aW9uX2xpbmsgYWN0aW9uPWFkbWluX2FkZF9ldmVudCBldmVudF9pZD14eCBqc2ZyaWVuZGx5PTF9JzsKICAgICAgICAgICB1cmwgPSB1cmwucmVwbGFjZSgneHgnLGV2ZW50Ll9pZCk7CiAgICAgICAgICAgbG9jYXRpb24uaHJlZiA9IHVybDsKCSB9CiAgICAgICB9XTsKCiAgICAgICBpZiggZXZlbnQuY2hpbGQgKSB7CiAgICAgICAgIHRtcF9idXR0b25zLnB1c2goewogICAgICAgICAgIHRleHQ6ICd7JG1vZC0+TGFuZygnZWRpdHBhcmVudCcpfScsCgkgICBjbGljazogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICB2YXIgdXJsID0gJ3ttb2R1bGVfYWN0aW9uX2xpbmsgYWN0aW9uPWFkbWluX2FkZF9ldmVudCBldmVudF9pZD14eCBqc2ZyaWVuZGx5PTF9JzsKICAgICAgICAgICAgIHVybCA9IHVybC5yZXBsYWNlKCd4eCcsZXZlbnQuY2hpbGQpOwogICAgICAgICAgICAgbG9jYXRpb24uaHJlZiA9IHVybDsKCSAgIH0KICAgICAgICAgfSk7CiAgICAgICB9CgogICAgICAgdG1wX2J1dHRvbnMucHVzaCh7CiAgICAgICAgIHRleHQ6ICd7JG1vZC0+TGFuZygnZGVsZXRlJyl9JywKICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgdmFyIGNvbnQgPSB0aGlzOwoJICAgICAkLmFqYXgoewoJICAgICAgICAgdHlwZTogJ1BPU1QnLAogICAgICAgICAgICAgICAgIHVybDogJ3ttb2R1bGVfYWN0aW9uX2xpbmsgYWN0aW9uPWFkbWluX2FqYXhfZGVsZXRlZXZlbnQganNmcmllbmRseT0xfSZzaG93dGVtcGxhdGU9ZmFsc2UnLAogICAgIAkgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLAogCSAgICAgICAgIGRhdGE6IHsKICAJICAgICAgCSAgICAneyRhY3Rpb25pZH1ldmVudF9pZCc6IGV2ZW50Ll9pZCwKCSAgICAgCSAgICAneyRhY3Rpb25pZH1kZWxldGVfY2hpbGRyZW4nOiAxIC8vIHRvZG8sIG1ha2UgdGhpcyBhbiBvcHRpb24KCSAgICAgICAgIH0KICAgICAgICAgICAgIH0pLmRvbmUoZnVuY3Rpb24oZGF0YSkgewoJICAgICAgICAgaWYoIGRhdGEuc3RhdHVzID09IDAgKSB7CiAgIAkgICAgICAgICAgICAgYWxlcnQoZGF0YS5tc2cpOwoJICAgICAgICAgfSBlbHNlIHsKCSAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgaXQncyBub3QgdmlzaWJsZQoJICAgICAgICAgICAgICQoJyNjYWxlbmRhcnZpZXcnKS5mdWxsQ2FsZW5kYXIoJ3JlZmV0Y2hFdmVudHMnKTsKICAgICAgCSAgICAgICAgIH0KCSAgICAgICAgIGNsb3NlRGlhbG9nKGNvbnQpOwogICAJICAgICB9KS5mYWlsKGZ1bmN0aW9uKGpxWEhSLCB0ZXh0U3RhdHVzLCBlcnJvclRocm93bikgewoJICAgICAgICAgYWxlcnQoJ2ZhaWwgJyt0ZXh0U3RhdHVzKTsKCSAgICAgICAgIGNsb3NlRGlhbG9nKGNvbnQpOwogICAgICAgICAgICAgfSk7CgkgfQogICAgICAgfSk7CgogICAgICAgdG1wX2J1dHRvbnMucHVzaCh7CiAgICAgICAgIHRleHQ6ICd7JG1vZC0+TGFuZygnY2FuY2VsJyl9JywKCSBjbGljazogZnVuY3Rpb24oKSB7CgkgICAkKHRoaXMpLmRpYWxvZygnY2xvc2UnKTsKCSB9CiAgICAgICB9KTsKCiAgICAgICAkKCcjZXZlbnRwcmV2aWV3JykuZGlhbG9nKHsKICAgICAgICAgdGl0bGU6IGV2ZW50LnRpdGxlLAoJIHBvc2l0aW9uOiB7CgkgICBteTogJ2NlbnRlciBib3R0b20nLAoJICAgYXQ6ICd0b3AgY2VudGVyJywKCSAgIG9mOiBqc0V2ZW50CgkgfSwKICAgICAgICAgd2lkdGg6IDQwMCwKICAgICAgICAgaGVpZ2h0OiAyMDAsCgkgYnV0dG9uczogdG1wX2J1dHRvbnMKICAgICAgIH0pOwogICAgfSwKCiAgICBldmVudFJlc2l6ZTogZnVuY3Rpb24oZXYsIGRheURlbHRhLCBtaW51dGVEZWx0YSwgcmV2ZXJ0RnVuYyApIHsKICAgICAgLy8gYW4gZXZlbnQgdGltZSBoYXMgYmVlbiBleHRlbmRlZAogICAgICAkLmFqYXgoewogICAgICAgIHR5cGU6ICdQT1NUJywKCXVybDogICd7bW9kdWxlX2FjdGlvbl9saW5rIGFjdGlvbj1hZG1pbl9hamF4X2VkaXRldmVudCBqc2ZyaWVuZGx5PTF9JnNob3d0ZW1wbGF0ZT1mYWxzZScsCglkYXRhVHlwZTogJ2pzb24nLAoJZGF0YTogewoJICAneyRhY3Rpb25pZH1ldmVudF9pZCc6IGV2LmlkLAoJICAneyRhY3Rpb25pZH1kYXlEZWx0YSc6IGRheURlbHRhLAoJICAneyRhY3Rpb25pZH1taW51dGVEZWx0YSc6IG1pbnV0ZURlbHRhLAoJfSwKCXN1Y2Nlc3M6IGZ1bmN0aW9uKCBkYXRhICkgewoJICBpZiggZGF0YS5zdGF0dXMgPT0gMCApIHsKCSAgICAgIGFsZXJ0KGRhdGEubXNnKTsKCSAgICAgIHJldmVydEZ1bmMoKTsKCSAgfQoJfSwKCWZhaWw6IGZ1bmN0aW9uKCBkYXRhICkgewoJICBhbGVydCgnZmFpbCcpOwoJICByZXZlcnRGdW5jKCk7Cgl9CiAgICAgIH0pOwogICAgfSwKCiAgICBldmVudERyb3A6IGZ1bmN0aW9uKGV2LCBkYXlEZWx0YSwgbWludXRlRGVsdGEsIGFsbERheSwgcmV2ZXJ0RnVuYykgewogICAgICAvLyBhbiBldmVudCBoYXMgYmVlbiBtb3ZlZAogICAgICAkLmFqYXgoewogICAgICAgIHR5cGU6ICdQT1NUJywKCXVybDogICd7bW9kdWxlX2FjdGlvbl9saW5rIGFjdGlvbj1hZG1pbl9hamF4X2VkaXRldmVudCBqc2ZyaWVuZGx5PTF9JnNob3d0ZW1wbGF0ZT1mYWxzZScsCglkYXRhVHlwZTogJ2pzb24nLAoJZGF0YTogewoJICAneyRhY3Rpb25pZH1ldmVudF9pZCc6IGV2LmlkLAoJICAneyRhY3Rpb25pZH1kYXlEZWx0YSc6IGRheURlbHRhLAoJICAneyRhY3Rpb25pZH1taW51dGVEZWx0YSc6IG1pbnV0ZURlbHRhLAoJICAneyRhY3Rpb25pZH1hbGxEYXknOiBhbGxEYXkgPyAxIDogMCwKCSAgJ3skYWN0aW9uaWR9bW92ZSc6IDEKCX0sCglzdWNjZXNzOiBmdW5jdGlvbiggZGF0YSApIHsKCSAgaWYoIGRhdGEuc3RhdHVzID09IDAgKSB7CgkgICAgICBhbGVydChkYXRhLm1zZyk7CgkgICAgICByZXZlcnRGdW5jKCk7CgkgIH0KCX0sCglmYWlsOiBmdW5jdGlvbiggZGF0YSApIHsKCSAgYWxlcnQoJ2ZhaWwnKTsKCSAgcmV2ZXJ0RnVuYygpOwoJfQogICAgICB9KTsKICAgIH0KICB9KTsKCiAgfSk7ICAvLyBmZXRjaCBob2xpZGF5cyBkb25lLi4uCgogIC8qCiAgJCgnYSNhZGRfZXZlbnQnKS5jbGljayhmdW5jdGlvbigpewogICAgdmFyIGQgPSAkKCcjY2FsZW5kYXJ2aWV3JykuZnVsbENhbGVuZGFyKCdnZXREYXRlJykudmFsdWVPZigpLzEwMDA7CiAgICAkKHRoaXMpLmF0dHIoJ2hyZWYnLCQodGhpcykuYXR0cignaHJlZicpLnJlcGxhY2UoJ3h4eHgnLGQpKTsKICB9KTsKICAqLwoKICAkKCcjZmlsdGVyJykuY2hhbmdlKGZ1bmN0aW9uKCl7CiAgICAgJCgnI2NhbGVuZGFydmlldycpLmZ1bGxDYWxlbmRhcigncmVmZXRjaEV2ZW50cycpOwogIH0pOwoKICAkKCdhI2ZpbmRfZXZlbnQnKS5jbGljayhmdW5jdGlvbigpewogICAgdmFyIHQgPSByZWFkQ29va2llKCdjZ2NhbF9maW5kJyk7CiAgICBpZiggdCAhPSBudWxsICkgewogICAgICBmb3IoIHZhciBrIGluIHQgKSB7CiAgICAgICAgdmFyIHMgPSAnI2ZpbmRfcGFuZWwgOmlucHV0W25hbWU9IicgKyBrICsgJyJdJzsKCSQocykudmFsKHRba10pOwogICAgICB9CiAgICB9CiAgICAkKCcjZmluZF9wYW5lbCcpLmRpYWxvZyh7CiAgICAgIHdpZHRoOiAzNzUsCiAgICAgIGJ1dHRvbnM6IFsKICAgICAgICB7CgkgIHRleHQ6ICd7JG1vZC0+TGFuZygnc3VibWl0Jyl9JywKCSAgY2xpY2s6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAvLyBnZXQgdGhlIGRhdGEKCSAgICB2YXIgZGF0YSA9IHt9OwoJICAgIHZhciBmID0gMDsKCSAgICAkKCcjZmluZF9wYW5lbCA6aW5wdXQnKS5lYWNoKGZ1bmN0aW9uKCl7CgkgICAgICAgdmFyIG4gPSAkKHRoaXMpLmF0dHIoJ25hbWUnKTsKCSAgICAgICB2YXIgdiA9ICQodGhpcykudmFsKCk7CgkgICAgICAgaWYoIHYgKSB7CgkgICAgICAgICBkYXRhW25dID0gdjsKCQkgZiA9IDE7CgkgICAgICAgfQoJICAgIH0pCgkgICAgLy8gc2F2ZSBpdCBpbiBhIGNvb2tpZQoJICAgIGlmKCBmICkgY3JlYXRlQ29va2llKCdjZ2NhbF9maW5kJyxkYXRhLDcpOwoKCSAgICAvLyBjbG9zZSB0aGUgZGlhbG9nCgkgICAgJCh0aGlzKS5kaWFsb2coJ2Nsb3NlJyk7CgoJICAgICQuYWpheCh7CgkgICAgICAgdXJsOiAneyRmZXRjaF91cmx9JnNob3d0ZW1wbGF0ZT1mYWxzZScsCgkgICAgICAgdHlwZTogJ0dFVCcsCiAgICAgICAgICAgICAgIGNhY2hlOiBmYWxzZSwKCSAgICAgICBkYXRhVHlwZTogJ2pzb24nLAoJICAgICAgIGRhdGE6IHsKCQkgJ3skYWN0aW9uaWR9a2V5d29yZCc6IGRhdGEua2V5d29yZCwKCQkgJ3skYWN0aW9uaWR9Y2F0ZWdvcnknOiBkYXRhLmNhdGVnb3J5LAoJICAgICAgICAgJ3skYWN0aW9uaWR9c2hvd2NoaWxkcmVuJzogZGF0YS5zaG93Y2hpbGRyZW4sCgkJICd7JGFjdGlvbmlkfXdoZW4nOiBkYXRhLndoZW4sCgkJICd7JGFjdGlvbmlkfWxpbWl0JzogMTAKCSAgICAgICB9LAoJICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKCBkYXRhICkgewoJICAgICAgICAgaWYoIHR5cGVvZiBkYXRhLnN0YXR1cyAhPSAndW5kZWZpbmVkJyAmJiBkYXRhLnN0YXR1cyA9PSAwICkgewoJCSAgIGFsZXJ0KCdmZXRjaDogJytkYXRhLm1zZyk7CgkJIH0gZWxzZSB7CgkJICAgLy8gZ290IDAgb3IgbW9yZSByZXN1bHRzCgkJICAgaWYoIGRhdGEubGVuZ3RoID09IDAgKSB7CgkJICAgICAkKCcjZmluZF9yZXN1bHRzX25vbmUnKS5zaG93KCk7CgkJICAgICAkKCcjZmluZF9yZXN1bHRzX2FyZWEnKS5oaWRlKCk7CgkJICAgfQoJCSAgIGVsc2UgewoJCSAgICAgJCgnI2ZpbmRfcmVzdWx0c19ub25lJykuaGlkZSgpOwoJCSAgICAgJCgnI2ZpbmRfcmVzdWx0c19hcmVhJykuc2hvdygpOwoJCSAgICAgJCgnI2ZpbmRfcmVzdWx0c19kYXRhJykuaHRtbCgnJyk7CgoJCSAgICAgJC5lYWNoKGRhdGEsIGZ1bmN0aW9uKGlkeCxyb3cpIHsKCQkgICAgICAgLy8gZGlzcGxheSBlYWNoIG9mIHRoZSByZXN1bHRzIG9mIHRoZSByb3cuCgkJICAgICAgIHZhciBzX2RhdGUgPSBtb21lbnQocm93LnN0YXJ0KTsKCQkgICAgICAgdmFyIGVfZGF0ZSA9IG51bGw7CgkJICAgICAgIGlmKCByb3cuZW5kICkgZV9kYXRlID0gbW9tZW50KHJvdy5lbmQpOwoKCQkgICAgICAgdmFyIG91dCA9ICQoJzx0cj48L3RyPicpOwoJCSAgICAgICBvdXQuYXBwZW5kKCc8dGQ+PGEgY2xhc3M9ImVkaXRfZXZlbnQiIGhyZWY9Iicrcm93LmVkaXRfdXJsKyciIHRpdGxlPSJ7JG1vZC0+TGFuZygnZWRpdF9ldmVudCcpfGNtc19lc2NhcGV9Ij4nK3Jvdy50aXRsZSsnPC9hPjwvdGQ+Jyk7CgkJICAgICAgIG91dC5hcHBlbmQoJzx0ZD4nICsgZm9ybWF0RGF0ZShzX2RhdGUsIXJvdy5hbGxEYXkpICsgJzwvdGQ+Jyk7CgkJICAgICAgIGlmKCBlX2RhdGUgKSB7CgkJICAgICAgICAgb3V0LmFwcGVuZCgnPHRkPicgKyBmb3JtYXREYXRlKGVfZGF0ZSwhcm93LmFsbERheSkgKyAnPC90ZD4nKTsKCQkgICAgICAgfSBlbHNlIHsKCQkgICAgICAgICBvdXQuYXBwZW5kKCc8dGQ+PC90ZD4nKTsKCQkgICAgICAgfQoJICAgICAgICAgICAgICAgb3V0LmFwcGVuZCgnPHRkPjxhIGNsYXNzPSJnb3RvX2RhdGUiIGRhdGEtZGF0ZT0iJytzX2RhdGUudG9TdHJpbmcoKSsnIj57Y2dpbWFnZSBpbWFnZT0naWNvbnMvc3lzdGVtL3ZpZXcuZ2lmJyBhbHQ9JG1vZC0+TGFuZygnZ290b19kYXRlJyl9PC9hPjwvdGQ+Jyk7CgkgICAgICAgICAgICAgICBvdXQuYXBwZW5kKCc8dGQ+PGEgY2xhc3M9ImVkaXRfZXZlbnQiIGhyZWY9Iicrcm93LmVkaXRfdXJsKyciPntjZ2ltYWdlIGNsYXNzPSdlZGl0X2V2ZW50JyBpbWFnZT0naWNvbnMvc3lzdGVtL2VkaXQuZ2lmJyBhbHQ9JG1vZC0+TGFuZygnZWRpdF9ldmVudCcpfTwvYT48L3RkPicpOwoJCSAgICAgICAkKCcjZmluZF9yZXN1bHRzX2RhdGEnKS5hcHBlbmQob3V0KTsKCQkgICAgIH0pOwoJCSAgIH0gLyogZWxzZSAqLwoJCSB9CgkgICAgICAgfQoJICAgIH0pOwoKCSAgICAvLyBvcGVuIG91ciByZXN1bHRzIGRpYWxvZwoJICAgICQoJyNmaW5kX3Jlc3VsdHNfcGFuZWwnKS5kaWFsb2coewoJICAgICAgd2lkdGg6ICdhdXRvJwoJICAgIH0pOwoKCSAgfQoJfSwKICAgICAgICB7CgkgIHRleHQ6ICd7JG1vZC0+TGFuZygnY2FuY2VsJyl9JywKCSAgY2xpY2s6IGZ1bmN0aW9uKCkgewoJICAgICQodGhpcykuZGlhbG9nKCdjbG9zZScpOwoJICB9Cgl9CiAgICAgIF0KICAgIH0pOwogIH0pOwoKICAkKGRvY3VtZW50KS5vbignY2xpY2snLCdhLmdvdG9fZGF0ZScsZnVuY3Rpb24oKXsKICAgIGNsb3NlRGlhbG9nKCcjZmluZF9yZXN1bHRzX3BhbmVsJyk7CiAgICB2YXIgZGF0ZSA9ICQodGhpcykuZGF0YSgnZGF0ZScpOwogICAgaWYoICFkYXRlICkgcmV0dXJuIGZhbHNlOwogICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUpOwogICAgJCgnI2NhbGVuZGFydmlldycpLmZ1bGxDYWxlbmRhcignZ290b0RhdGUnLGRhdGUpOwogIH0pCgogICQoJyNwYWdlX3RhYnMgPiBkaXYnKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI2NhbGVuZGFydmlldycpLmZ1bGxDYWxlbmRhcigncmVuZGVyJyk7CiAgICBjbG9zZURpYWxvZygnI2V2ZW50cHJldmlldycpOwogICAgY2xvc2VEaWFsb2coJyNmaW5kX3BhbmVsJyk7CiAgICBjbG9zZURpYWxvZygnI2ZpbmRfcmVzdWx0c19wYW5lbCcpOwogIH0pOwp9KTsKPC9zY3JpcHQ+Cgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAuNWVtIj4KICA8YSBpZD0iYWRkX2V2ZW50IiBocmVmPSJ7bW9kdWxlX2FjdGlvbl9saW5rIGFjdGlvbj1hZG1pbl9hZGRfZXZlbnQgdXJsb25seT0xfSI+e2NnaW1hZ2UgaW1hZ2U9J2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJyBhbHQ9JG1vZC0+TGFuZygnY2FsX2FkZF9ldmVudCcpIGNsYXNzPSdzeXN0ZW1pY29uJ30geyRtb2QtPkxhbmcoJ2NhbF9hZGRfZXZlbnQnKX0uLi48L2E+Jm5ic3A7Jm5ic3A7CiAge2lmICRjYW5fbWFuYWdlfQogIDxhIGlkPSJpbXBvcnRfZXZlbnRzIiBocmVmPSJ7bW9kdWxlX2FjdGlvbl91cmwgYWN0aW9uPWFkbWluX2ltcG9ydH0iPntjZ2ltYWdlIGltYWdlPSdpY29ucy9zeXN0ZW0vaW1wb3J0LmdpZicgYWx0PSRtb2QtPkxhbmcoJ2NhbF9pbXBvcnRfZXZlbnRzJykgY2xhc3M9J3N5c3RlbWljb24nfSB7JG1vZC0+TGFuZygnY2FsX2ltcG9ydF9ldmVudHMnKX08L2E+Jm5ic3A7Jm5ic3A7CiAgPGEgaWQ9ImV4cG9ydF9ldmVudHMiIGhyZWY9Inttb2R1bGVfYWN0aW9uX3VybCBhY3Rpb249YWRtaW5fZXhwb3J0fSI+e2NnaW1hZ2UgaW1hZ2U9J2ljb25zL3N5c3RlbS9leHBvcnQuZ2lmJyBhbHQ9JG1vZC0+TGFuZygnY2FsX2V4cG9ydF9ldmVudHMnKSBjbGFzcz0nc3lzdGVtaWNvbid9IHskbW9kLT5MYW5nKCdjYWxfZXhwb3J0X2V2ZW50cycpfTwvYT4mbmJzcDsmbmJzcDsKICA8YSBocmVmPSJ7bW9kdWxlX2FjdGlvbl91cmwgYWN0aW9uPWFkbWluX3JlbW92ZV9leHBpcmVkfSI+e2NnaW1hZ2UgaW1hZ2U9J2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJyBhbHQ9JG1vZC0+TGFuZygnY2FsX2RlbGV0ZV9leHBpcmVkJykgY2xhc3M9J3N5c3RlbWljb24nfSB7JG1vZC0+TGFuZygnY2FsX2RlbGV0ZV9leHBpcmVkJyl9PC9hPiZuYnNwOyZuYnNwOwogIHsvaWZ9CiAgPGEgaWQ9ImZpbmRfZXZlbnQiPntjZ2ltYWdlIGltYWdlPSdpY29ucy9zeXN0ZW0vdmlldy5naWYnIGFsdD0kbW9kLT5MYW5nKCdmaW5kJyl9IHskbW9kLT5MYW5nKCdmaW5kJyl9PC9hPgogIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7Ij4KICAgICAge2NnZV9oZWxwdGFnIGtleT0nZXZlbnRzdGFiJ30KICA8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMC41ZW07Ij4KICAgIDxsYWJlbD57JG1vZC0+TGFuZygnZGlzcGxheScpfTogPHNlbGVjdCBpZD0iZmlsdGVyIj4KICAgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kZmlsdGVyX29wdHN9CiAgICA8L3NlbGVjdD48L2xhYmVsPgo8L2Rpdj4KPGhyLz4KCnsqIHRoaXMgaXMgd2hlcmUgdGhlIGZ1bGxjYWxlbmRhciBnb2VzICp9CjxkaXYgaWQ9ImNhbGVuZGFydmlldyI+PC9kaXY+Cgp7KiBvdGhlciBzdHVmZiAqfQoKeyogdGhlIHBvcHVwIGRpYWxvZyB3aGVuIGNsaWNraW5nIG9uIGFuIGV2ZW50ICp9CjxkaXYgaWQ9ImV2ZW50cHJldmlldyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiB0aXRsZT0ieyRtb2QtPkxhbmcoJ2V2ZW50X2FjdGlvbicpfSI+CiAgPGRpdiBjbGFzcz0iY19mdWxsIGFsbGRheV9ibG9jayI+CiAgICA8c3Ryb25nPnskbW9kLT5MYW5nKCdhbGxkYXlfZXZlbnQnKX08L3N0cm9uZz4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJjX2Z1bGwgc3RhcnRfYmxvY2siPgogICAgPHAgY2xhc3M9ImdyaWRfMyB0ZXh0X3JpZ2h0Ij57JG1vZC0+TGFuZygnc3RhcnQnKX06PC9wPgogICAgPHAgaWQ9ImV2ZW50X3N0YXJ0IiBjbGFzcz0iZ3JpZF85IGNmIj48L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY19mdWxsIGVuZF9ibG9jayI+CiAgICA8cCBjbGFzcz0iZ3JpZF8zIHRleHRfcmlnaHQiPnskbW9kLT5MYW5nKCdlbmQnKX06PC9wPgogICAgPHAgaWQ9ImV2ZW50X2VuZCIgY2xhc3M9ImdyaWRfOSBjZiI+PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImNfZnVsbCBkcmFmdF9ibG9jayIgc3R5bGU9ImNvbG9yOiBvcmFuZ2U7Ij4KICAgIDxzcGFuPnskbW9kLT5MYW5nKCdzdGF0dXNfZHJhZnQnKX08L3NwYW4+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY19mdWxsIGNoaWxkX2Jsb2NrIj4KICAgIDxwIGNsYXNzPSJncmlkXzMgdGV4dF9yaWdodCIgc3R5bGU9ImNvbG9yOiByZWQ7Ij57JG1vZC0+TGFuZygnbm90ZScpfTo8L3A+CiAgICA8cCBjbGFzcz0iZ3JpZF85IGNmIj57JG1vZC0+TGFuZygndGl0bGVfY2hpbGRfZXZlbnQnKX08L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFyZW50X2Jsb2NrIj4KICAgIDxkaXYgY2xhc3M9ImNfZnVsbCBwYXJlbnRfYmxvY2siPgogICAgICA8cCBjbGFzcz0iZ3JpZF8zIHRleHRfcmlnaHQiIHN0eWxlPSJjb2xvcjogcmVkOyI+eyRtb2QtPkxhbmcoJ25vdGUnKX06PC9wPgogICAgICA8cCBjbGFzcz0iZ3JpZF85IGNmIj57JG1vZC0+TGFuZygndGl0bGVfcGFyZW50X2V2ZW50Jyl9PC9wPgogICAgPC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iY19mdWxsIGRlc2NfYmxvY2siPgogICAgPHAgY2xhc3M9ImdyaWRfMyB0ZXh0X3JpZ2h0Ij57JG1vZC0+TGFuZygnZGVzYzInKX06PC9wPgogICAgPHAgaWQ9ImV2ZW50X2Rlc2MiIGNsYXNzPSJncmlkXzkgY2YiPjwvcD4KICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGlkPSJmaW5kX3BhbmVsIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiIHRpdGxlPSJ7JG1vZC0+TGFuZygnZmluZCcpfSI+CiAgPGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPnskbW9kLT5MYW5nKCdpbmZvX2ZpbmRfZXZlbnRzJyl9PC9kaXY+CiAgPGRpdiBjbGFzcz0iY19mdWxsIGZvcm1fcm93Ij4KICAgIDxwIGNsYXNzPSJncmlkXzMgZm9ybV9wcm9tcHQiPnskbW9kLT5MYW5nKCdrZXl3b3JkcycpfTo8L3A+CiAgICA8cCBjbGFzcz0iZ3JpZF85IGZvcm1faW5wdXQiPgogICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ia2V5d29yZCIgbWF4bGVuZ3RoPSIyNTUiIHZhbHVlPSIiLz4KICAgICAge2NnZV9oZWxwdGFnIGtleT0nZmluZF90aXRsZSd9CiAgICA8L3A+CiAgICA8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2PgogIDwvZGl2PgoKICB7aWYgaXNzZXQoJGNhdGVnb3JpZXMpfQogIDxkaXYgY2xhc3M9ImNfZnVsbCI+CiAgICA8cCBjbGFzcz0iZ3JpZF8zIGZvcm1fcHJvbXB0Ij57JG1vZC0+TGFuZygnY2F0ZWdvcnknKX06PC9wPgogICAgPHAgY2xhc3M9ImdyaWRfOSBmb3JtX2lucHV0Ij4KICAgICAgPHNlbGVjdCBuYW1lPSJjYXRlZ29yeSI+CiAgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kY2F0ZWdvcmllc30KICAgICAgPC9zZWxlY3Q+CiAgICA8L3A+CiAgICA8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2PgogIDwvZGl2PgogIHsvaWZ9CgogIDxkaXYgY2xhc3M9ImNfZnVsbCI+CiAgICA8cCBjbGFzcz0iZ3JpZF8zIGZvcm1fcHJvbXB0Ij57JG1vZC0+TGFuZygnZmluZF9zaG93Y2hpbGRyZW4nKX06PC9wPgogICAgPHAgY2xhc3M9ImdyaWRfOSBmb3JtX2lucHV0Ij4KICAgICAge2NnZV95ZXNub19vcHRpb25zIG5hbWU9J3Nob3djaGlsZHJlbid9CiAgICAgIHtjZ2VfaGVscHRhZyBrZXk9J2ZpbmRfc2hvd2NoaWxkcmVuJ30KICAgIDwvcD4KICAgIDxkaXYgY2xhc3M9ImNsZWFyYiI+PC9kaXY+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9ImNfZnVsbCI+CiAgICA8cCBjbGFzcz0iZ3JpZF8zIGZvcm1fcHJvbXB0Ij57JG1vZC0+TGFuZygnZmluZF93aGVuJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJncmlkXzkgZm9ybV9pbnB1dCI+CiAgICAgIDxzZWxlY3QgbmFtZT0id2hlbiI+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0iYW55Ij57JG1vZC0+TGFuZygnYW55Jyl9PC9vcHRpb24+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0icGFzdCI+eyRtb2QtPkxhbmcoJ3Bhc3QnKX08L29wdGlvbj4KICAgICAgICA8b3B0aW9uIHZhbHVlPSJmdXR1cmUiPnskbW9kLT5MYW5nKCdmdXR1cmUnKX08L29wdGlvbj4KICAgICAgPC9zZWxlY3Q+Jm5ic3A7e2NnZV9oZWxwdGFnIGtleT0naGZpbmRfd2hlbid9CiAgICA8L3A+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0iZmluZF9yZXN1bHRzX3BhbmVsIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiIHRpdGxlPSJ7JG1vZC0+TGFuZygncmVzdWx0cycpfS4uLiI+CiAgPGRpdiBpZD0iZmluZF9yZXN1bHRzX25vbmUiIGNsYXNzPSJyZWQiPnskbW9kLT5MYW5nKCdub3Jlc3VsdHMnKX08L2Rpdj4KICA8ZGl2IGlkPSJmaW5kX3Jlc3VsdHNfYXJlYSI+CiAgICA8ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRtb2QtPkxhbmcoJ2luZm9fZmluZF9yZXN1bHRzJyl9PC9kaXY+CiAgICA8dGFibGUgY2xhc3M9InVpLXdpZGdldCIgaWQ9ImZpbmRfcmVzdWx0c190YWJsZSI+CiAgICAgIDx0aGVhZCBjbGFzcz0idWktd2lkZ2V0LWhlYWRlciI+CiAgICAgICAgPHRoPnskbW9kLT5MYW5nKCdjYWxfdGl0bGUnKX08L3RoPgogICAgICAgIDx0aD57JG1vZC0+TGFuZygnc3RhcnQnKX08L3RoPgogICAgICAgIDx0aD57JG1vZC0+TGFuZygnZW5kJyl9PC90aD4KICAgICAgICA8dGg+PC90aD4KICAgICAgICA8dGg+PC90aD4KICAgICAgPC90aGVhZD4KICAgICAgPHRib2R5IGlkPSJmaW5kX3Jlc3VsdHNfZGF0YSI+PC90Ym9keT4KICAgIDwvdGFibGU+CiAgPC9kaXY+CjwvZGl2PgoKe2NnZV9oZWxwaGFuZGxlcn0KPGRpdiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgogIHtjZ2VfaGVscGNvbnRlbnQga2V5PSdldmVudHN0YWInIHRleHQ9JG1vZC0+TGFuZygnaGVscF9ldmVudHN0YWInKX0KICB7Y2dlX2hlbHBjb250ZW50IGtleT0nZmluZF90aXRsZScgdGV4dD0kbW9kLT5MYW5nKCdoZWxwX2ZpbmRfZXZlbnRfa2V5d29yZCcpfQogIHtjZ2VfaGVscGNvbnRlbnQga2V5PSdmaW5kX3Nob3djaGlsZHJlbicgdGV4dD0kbW9kLT5MYW5nKCdoZWxwX2ZpbmRfc2hvd2NoaWxkcmVuJyl9CiAge2NnZV9oZWxwY29udGVudCBrZXk9J2hmaW5kX3doZW4nIHRleHQ9JG1vZC0+TGFuZygnaGVscF9maW5kX3doZW4nKX0KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/admin_export.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbW9kLT5MYW5nKCdjYWxfZXhwb3J0X2V2ZW50cycpfTwvaDM+CjxkaXYgY2xhc3M9ImluZm9ybWF0aW9uIj57JG1vZC0+TGFuZygnaW5mb19leHBvcnRfZXZlbnRzJyl9PC9kaXY+Cgp7Zm9ybV9zdGFydH0KPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICA8bGFiZWwgY2xhc3M9ImdyaWRfMiI+eyRtb2QtPkxhbmcoJ2V4cG9ydF9kYXRlc2VsJyl9PC9sYWJlbD4KICA8ZGl2IGNsYXNzPSJncmlkXzkiPgogICAgPGxhYmVsIGNsYXNzPSJncmlkXzEyIj48aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InskYWN0aW9uaWR9ZGF0ZXNlbCIgdmFsdWU9ImNyZWF0ZWQiIHtpZiAkc2V0dGluZ3MtPmRhdGVzZWw9PSdjcmVhdGVkJ31jaGVja2Vkey9pZn0+IHskbW9kLT5MYW5nKCdleHBvcnRfZGF0ZXNlbF9jcmVhdGVkJyl9PC9sYWJlbD4KICAgIDxsYWJlbCBjbGFzcz0iZ3JpZF8xMiI+PGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJ7JGFjdGlvbmlkfWRhdGVzZWwiIHZhbHVlPSJtb2RpZmllZCIge2lmICRzZXR0aW5ncy0+ZGF0ZXNlbD09J21vZGlmaWVkJ31jaGVja2Vkey9pZn0+IHskbW9kLT5MYW5nKCdleHBvcnRfZGF0ZXNlbF9tb2RpZmllZCcpfTwvbGFiZWw+CiAgICA8bGFiZWwgY2xhc3M9ImdyaWRfMTIiPjxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0ieyRhY3Rpb25pZH1kYXRlc2VsIiB2YWx1ZT0ic3RhcnQiIHtpZiAkc2V0dGluZ3MtPmRhdGVzZWw9PSdzdGFydCd9Y2hlY2tlZHsvaWZ9PiB7JG1vZC0+TGFuZygnZXhwb3J0X2RhdGVzZWxfc3RhcnQnKX08L2xhYmVsPgogIDwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgIDxsYWJlbCBjbGFzcz0iZ3JpZF8yIj57JG1vZC0+TGFuZygnZXhwb3J0X2Zyb21fZGF0ZScpfTo8L2xhYmVsPgogICAgPGRpdiBjbGFzcz0iZ3JpZF85Ij4KICAgICAgICA8aW5wdXQgY2xhc3M9ImdyaWRfMTIiIHR5cGU9ImRhdGUiIHBsYWNlaG9sZGVyPSJZWVlZLU1NLUREIiBuYW1lPSJ7JGFjdGlvbmlkfWZyb21kYXRlIiB2YWx1ZT0ieyRzZXR0aW5ncy0+ZnJvbWRhdGV8ZGF0ZV9mb3JtYXQ6JyVZLSVtLSVkJ30iLz4KICAgIDwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgIDxsYWJlbCBjbGFzcz0iZ3JpZF8yIj57JG1vZC0+TGFuZygnZXhwb3J0X2NhdGVnb3J5Jyl9OjwvbGFiZWw+CiAgICA8ZGl2IGNsYXNzPSJncmlkXzkiPgogICAgICAgIDxzZWxlY3QgbmFtZT0ieyRhY3Rpb25pZH1jYXRlZ29yeSIgY2xhc3M9ImdyaWRfMTIiPgogICAgICAgICAgIDxvcHRpb24gdmFsdWU9IiI+eyRtb2QtPkxhbmcoJ2FueScpfTwvb3B0aW9uPgogICAgICAgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kY2F0ZWdvcmllcyBzZWxlY3RlZD0kc2V0dGluZ3MtPmNhdGVnb3J5fQogICAgICAgIDwvc2VsZWN0PgogICAgPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICAgPGxhYmVsIGNsYXNzPSJncmlkXzIiPip7JG1vZC0+TGFuZygnZXhwb3J0X2RlbGltaXRlcicpfTo8L2xhYmVsPgogICAgPGRpdiBjbGFzcz0iZ3JpZF85Ij4KICAgICAgICA8aW5wdXQgY2xhc3M9ImdyaWRfMTIiIHR5cGU9InRleHQiIHBsYWNlaG9sZGVyPSJkZWxpbWl0ZXIiIG5hbWU9InskYWN0aW9uaWR9ZGVsaW1pdGVyIiB2YWx1ZT0ieyRzZXR0aW5ncy0+ZGVsaW1pdGVyfSIgcmVxdWlyZWQgbWF4bGVuZ3RoPSIyIi8+CiAgICA8L2Rpdj4KPC9kaXY+Cgo8aHIvPgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9c3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfSIvPgogIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9Y2FuY2VsIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2NhbmNlbCcpfSIgZm9ybW5vdmFsaWRhdGUvPgo8L2Rpdj4Ke2Zvcm1fZW5kfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/admin_import.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbW9kLT5MYW5nKCdjYWxfaW1wb3J0X2V2ZW50cycpfTwvaDM+CjxkaXYgY2xhc3M9Indhcm5pbmciPnskbW9kLT5MYW5nKCd3YXJuX2ltcG9ydCcpfTwvZGl2PgoKe2lmIGlzc2V0KCRmb3Jtc3RhcnQpfQp7JGZvcm1zdGFydH0KPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnaW5mb19jc3ZfZm9ybWF0Jyl9OjwvcD4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdjb2x1bW5fZGVsaW1pdGVyJyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfWRlbGltaXRlciIgdmFsdWU9InskaW1wb3J0X2RlbGltaXRlcn0iIHNpemU9IjMiIG1heGxlbmd0aD0iMyIvPgogIDwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2Nzdl9maWxlJyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIDxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJ7JGFjdGlvbmlkfWNzdl9maWxlIiBzaXplPSI1MCIvPgogIDwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij48L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfXN1Ym1pdCIgdmFsdWU9InskbW9kLT5MYW5nKCdzdWJtaXQnKX0iLz4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9Y2FuY2VsIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2NhbmNlbCcpfSIvPgogIDwvcD4KPC9kaXY+CnskZm9ybWVuZH0Ke2Vsc2V9CjxoND57JG1vZC0+TGFuZygnaW1wb3J0X2NvbXBsZXRlZCcpfTo8L2g0Pgo8cD57JG1vZC0+TGFuZygnbnVtX2ltcG9ydGVkJywkaW1wb3J0ZWQpfTwvcD4KPHA+eyRtb2QtPkxhbmcoJ2ltcG9ydF9saW5lcycsJGxpbmVudW0pfTwvcD4Ke2lmIGlzc2V0KCRlcnJvcnMpfQogIDxoNCBzdHlsZT0iY29sb3I6IHJlZDsiPnskbW9kLT5MYW5nKCdlcnJvcnMnKX06PC9oND4KICA8dWwgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJlZDsiPgogIHtmb3JlYWNoIGZyb209JGVycm9ycyBpdGVtPSdlcnJvcid9CiAgICA8dWw+eyRlcnJvcn08L3VsPgogIHsvZm9yZWFjaH0KICA8L3VsPgp7L2lmfQp7L2lmfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/admin_remove_expired.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgJCgnI3NlbGVjdF9hbGwnKS5jbGljayhmdW5jdGlvbigpewogICAgICAgdmFyIF92ID0gJCh0aGlzKS5pcygnOmNoZWNrZWQnKTsKICAgICAgIGlmKCBfdiApIHsKICAgICAgICAgICQoJy5jYWxfc2VsZWN0JykuYXR0cignY2hlY2tlZCcsJ2NoZWNrZWQnKTsKICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAkKCcuY2FsX3NlbGVjdCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICAgICAgIH0KICAgICB9KQogIH0pOwo8L3NjcmlwdD4KCjxoMz57JG1vZC0+TGFuZygnY2FsX2RlbGV0ZV9leHBpcmVkJyl9PC9oMz4KCntmb3JtX3N0YXJ0fQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1jYWxfc3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfSIvPgogICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1jYWxfY2FuY2VsIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2NhbmNlbCcpfSIvPgogIDwvcD4KPC9kaXY+CjxoND5FdmVudHMgdG8gRGVsZXRlOjwvaDQ+Cjx0YWJsZSBjbGFzcz0icGFnZXRhYmxlIj4KICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgIDx0aD57JG1vZC0+TGFuZygnY2FsX2lkJyl9PC90aD4KICAgICAgPHRoPnskbW9kLT5MYW5nKCdjYWxfdGl0bGUnKX0vdGg+CiAgICAgIDx0aD57JG1vZC0+TGFuZygnY2FsX3N1bW1hcnknKX08L3RoPgogICAgICA8dGg+eyRtb2QtPkxhbmcoJ2NhbF9mcm9tZGF0ZScpfTwvdGg+CiAgICAgIDx0aD57JG1vZC0+TGFuZygnY2FsX3RvZGF0ZScpfTwvdGg+CiAgICAgIDx0aD57JG1vZC0+TGFuZygnY2FsX3JlY3VyX3VudGlsJyl9PC90aD4KICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+CiAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0ic2VsZWN0X2FsbCIgdmFsdWU9IjEiIHRpdGxlPSJTZWxlY3QgQWxsIi8+CiAgICAgIDwvdGg+CiAgICA8L3RyPgogIDwvdGhlYWQ+CiAgPHRib2R5PgogIHtmb3JlYWNoICRldmVudHMgYXMgJG9uZV9ldmVudH0KICAgIDx0ciBjbGFzcz0ie2N5Y2xlIHZhbHVlcz0ncm93MSxyb3cyJ30iPgogICAgICA8dGQ+eyRvbmVfZXZlbnQuZXZlbnRfaWR9PC90ZD4KICAgICAgPHRkPnskb25lX2V2ZW50LmV2ZW50X3RpdGxlfTwvdGQ+CiAgICAgIDx0ZD57JG9uZV9ldmVudC5ldmVudF9zdW1tYXJ5fHN1bW1hcml6ZTozMH08L3RkPgogICAgICA8dGQ+eyRvbmVfZXZlbnQuZXZlbnRfZGF0ZV9zdGFydHxkYXRlX2Zvcm1hdDonJXggJVgnfTwvdGQ+CiAgICAgIDx0ZD57aWYgIWVtcHR5KCRvbmVfZXZlbnQuZXZlbnRfZGF0ZV9lbmQpfXskb25lX2V2ZW50LmV2ZW50X2RhdGVfZW5kfGRhdGVfZm9ybWF0OicleCAlWCd9ey9pZn08L3RkPgogICAgICA8dGQ+CiAgICAgICAge2lmICFlbXB0eSgkb25lX2V2ZW50LmV2ZW50X3JlY3VyX2xhc3QpfQoJICB7aWYgJG9uZV9ldmVudC5ldmVudF9yZWN1cl9sYXN0ID4gJHNtYXJ0eS5ub3d9CgkgICAgPHNwYW4gc3R5bGU9ImNvbG9yOiByZWQ7Ij57JG9uZV9ldmVudC5ldmVudF9yZWN1cl9sYXN0fGRhdGVfZm9ybWF0OicleCAlWCd9PC9zcGFuPgoJICB7ZWxzZX0KCSAgICA8c3Bhbj57JG9uZV9ldmVudC5ldmVudF9yZWN1cl9sYXN0fGRhdGVfZm9ybWF0OicleCAlWCd9PC9zcGFuPgoJICB7L2lmfQogICAgICAgIHsvaWZ9CiAgICAgIDwvdGQ+CiAgICAgIDx0ZD4KICAgICAgICAge2lmIGVtcHR5KCRvbmVfZXZlbnQuZXZlbnRfcmVjdXJfbGFzdCkgfHwgJG9uZV9ldmVudC5ldmVudF9yZWN1cl9sYXN0IDwgJHNtYXJ0eS5ub3d9CiAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ieyRhY3Rpb25pZH1jYWxfc2VsZWN0W10iIHZhbHVlPSJ7JG9uZV9ldmVudC5ldmVudF9pZH0iIGNsYXNzPSJjYWxfc2VsZWN0Ii8+Cgkgey9pZn0KICAgICAgPC90ZD4KICAgIDwvdHI+CiAgey9mb3JlYWNofQogIDwvdGJvZHk+CjwvdGFibGU+Cntmb3JtX2VuZH0=]]></data>
	</file>
	<file>
	  <filename>/templates/editevent.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRsYW5ndWFnZXRleHR9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGxhbmd1YWdlaW5wdXR9PC9wPgoJPC9kaXY+CnskZW5kZm9ybX0=]]></data>
	</file>
	<file>
	  <filename>/templates/fieldstab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgpmdW5jdGlvbiB1cGRhdGVfZmllbGRfcm93KCRyb3cpIHsKICB2YXIgdHlwZSA9ICQoJ3NlbGVjdC5mbGRfdHlwZScsJHJvdykudmFsKCk7CiAgaWYoIHR5cGUgIT0gMCAmJiB0eXBlICE9IDIgKSB7CiAgICAkKCcuZmxkX3NlYXJjaGFibGUnLCRyb3cpLmhpZGUoKTsKICB9IGVsc2UgewogICAgJCgnLmZsZF9zZWFyY2hhYmxlJywkcm93KS5zaG93KCk7CiAgfQoKICBpZiggdHlwZSAhPSA2ICkgewogICAgJCgnLmZsZF9idG5fZGRvcHRzJywkcm93KS5oaWRlKCk7CiAgfSBlbHNlIHsKICAgICQoJy5mbGRfYnRuX2Rkb3B0cycsJHJvdykuc2hvdygpOwogIH0KCiAgaWYoIHR5cGUgIT0gMiApIHsKICAgICQoJy5mbGRfd3lzaXd5ZycsJHJvdykuaGlkZSgpOwogIH0gZWxzZSB7CiAgICAkKCcuZmxkX3d5c2l3eWcnLCRyb3cpLnNob3coKTsKICB9Cn0KJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICAkKCcjY2djYWxfZmllbGRzID4gdGJvZHknKS5zb3J0YWJsZSgpOwogICQoJyNjZ2NhbF9maWVsZHMgPiB0Ym9keSB0cicpLmVhY2goZnVuY3Rpb24oaWR4LGVsKXsKICAgIGlmKCAkKGVsKS5hdHRyKCdpZCcpID09ICdmbGRfc2tlbGV0b24nICkgcmV0dXJuOwogICAgdXBkYXRlX2ZpZWxkX3JvdyhlbCk7CiAgfSk7CiAgJChkb2N1bWVudCkub24oJ2NoYW5nZScsJ3NlbGVjdC5mbGRfdHlwZScsZnVuY3Rpb24oKXsKICAgIHVwZGF0ZV9maWVsZF9yb3coJCh0aGlzKS5jbG9zZXN0KCd0cicpKTsKICB9KTsKICAkKGRvY3VtZW50KS5vbignY2xpY2snLCcuZmxkX2RlbGV0ZScsZnVuY3Rpb24oKXsKICAgIGlmKCAhY29uZmlybSgneyRtb2QtPkxhbmcoJ2NhbF9hcmV5b3VzdXJlJyl9JykgKSByZXR1cm4gZmFsc2U7CiAgICAkKHRoaXMpLmNsb3Nlc3QoJ3RyJykucmVtb3ZlKCk7CiAgfSk7CiAgJChkb2N1bWVudCkub24oJ2NsaWNrJywnI2ZsZF9hZGQnLGZ1bmN0aW9uKCl7CiAgICB2YXIgcm93ID0gJCgndHIjZmxkX3NrZWxldG9uJykuY2xvbmUoKTsKICAgIHVwZGF0ZV9maWVsZF9yb3cocm93KTsKICAgICQocm93KS5zaG93KCkucmVtb3ZlQXR0cignaWQnKS5hcHBlbmRUbygnI2NnY2FsX2ZpZWxkcyA+IHRib2R5Jyk7CiAgICByZXR1cm4gZmFsc2U7CiAgfSk7CiAgJChkb2N1bWVudCkub24oJ2NsaWNrJywnI2ZsZF91cGRhdGUnLGZ1bmN0aW9uKCl7CiAgICAkKCcjY2djYWxfZmllbGRzID4gdGJvZHkgdHInKS5lYWNoKGZ1bmN0aW9uKGlkeCwkZWwpewogICAgICB2YXIgb2xkbmFtZSA9ICQoJ2lucHV0LmZsZF9pZCcsJGVsKS52YWwoKTsKICAgICAgdmFyIG5ld25hbWUgPSAkKCdpbnB1dC5mbGRfbmFtZScsJGVsKS52YWwoKTsKICAgICAgaWYoIG9sZG5hbWUgIT0gJycgJiYgbmV3bmFtZSA9PSAnJyApIHsKICAgICAgICBhbGVydCgnZ290IGVtcHRpZWQgbmFtZScpOwogICAgICB9CiAgICB9KTsKICAgICQoJ3RyI2ZpZWxkX3NrZWxldG9uJykucmVtb3ZlKCk7CiAgfSk7CiAgJChkb2N1bWVudCkub24oJ2NsaWNrJywnLmZsZF9idG5fZGRvcHRzJyxmdW5jdGlvbihldil7CiAgICAgZXYucHJldmVudERlZmF1bHQoKTsKICAgICB2YXIgcm93ID0gJCh0aGlzKS5jbG9zZXN0KCd0cicpOwogICAgIHZhciB0ZXh0ID0gJCgnLmZsZF9kZG9wdHMnLHJvdykudmFsKCk7CiAgICAgJCgnI2lucHV0X2Rkb3B0cycpLnZhbCh0ZXh0KTsKICAgICAkKCcjZGxnX2VkaXRfZGRvcHRzJykuZGlhbG9nKHsKICAgICAgICBtb2RhbDogdHJ1ZSwKCXdpZHRoOiAnYXV0bycsCglidXR0b25zOiBbCiAgICAgICAgICAgewoJICAgICAgdGV4dDogJ3skbW9kLT5MYW5nKCdvaycpfScsCgkgICAgICBjbGljazogZnVuY3Rpb24oKSB7CgkgICAgICAgICAkKCcuZmxkX2Rkb3B0cycscm93KS52YWwoJCgnI2lucHV0X2Rkb3B0cycpLnZhbCgpKTsKCQkgJCh0aGlzKS5kaWFsb2coJ2Nsb3NlJyk7CgkgICAgICB9LAoJICAgfSwKICAgICAgICAgICB7CgkgICAgICB0ZXh0OiAneyRtb2QtPkxhbmcoJ2NhbmNlbCcpfScsCgkgICAgICBjbGljazogZnVuY3Rpb24oKXsKCQkgJCh0aGlzKS5kaWFsb2coJ2Nsb3NlJyk7CgkgICAgICB9CgkgICB9LAoJXQogICAgIH0pCiAgfSk7Cn0pOwo8L3NjcmlwdD4KCjxkaXYgY2xhc3M9ImluZm9ybWF0aW9uIj57JG1vZC0+TGFuZygnaW5mb19jdXN0b21maWVsZHNfdGFiJyl9PC9kaXY+CnskZm9ybXN0YXJ0fQoKPHRhYmxlIGNsYXNzPSJwYWdldGFibGUiIGlkPSJjZ2NhbF9maWVsZHMiPgogIDx0aGVhZD4KICAgIDx0aD57JG5hbWV0ZXh0fTwvdGg+CiAgICA8dGg+eyR0eXBldGV4dH08L3RoPgogICAgPHRoPnskbW9kLT5MYW5nKCdzZWFyY2hhYmxlJyl9PC90aD4KICAgIDx0aD57JG1vZC0+TGFuZygnd3lzaXd5ZycpfTwvdGg+CiAgICA8dGggY2xhc3M9InBhZ2VpY29uIj48L3RoPgogIDwvdGhlYWQ+CiAgPHRib2R5PgogICAge2lmIGlzc2V0KCRmaWVsZHMpfQogICAge2ZvcmVhY2ggZnJvbT0kZmllbGRzIGl0ZW09J2VudHJ5J30KICAgICAgPHRyPgogICAgICAgIDx0ZD4KICAgICAgICAgIDxpbnB1dCBjbGFzcz0iZmxkX2lkIiB0eXBlPSJoaWRkZW4iIG5hbWU9InskYWN0aW9uaWR9ZmllbGRfaWRzW10iIHZhbHVlPSJ7JGVudHJ5LmZpZWxkX25hbWV9Ii8+CiAgICAgICAgICA8aW5wdXQgY2xhc3M9ImZsZF9uYW1lIiB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfWZpZWxkX25hbWVzW10iIHZhbHVlPSJ7JGVudHJ5LmZpZWxkX25hbWV9IiBtYXhsZW5ndGg9IjI1NSIvPgogICAgICAgIDwvdGQ+CiAgICAgICAgPHRkPgoJICAgPHNlbGVjdCBjbGFzcz0iZmxkX3R5cGUiIG5hbWU9InskYWN0aW9uaWR9ZmllbGRfdHlwZXNbXSI+e2h0bWxfb3B0aW9ucyBvcHRpb25zPSR0eXBlcyBzZWxlY3RlZD0kZW50cnkuZmllbGRfdHlwZX08L3NlbGVjdD4KCSAgIDxpbnB1dCBjbGFzcz0iZmxkX2Rkb3B0cyIgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JGFjdGlvbmlkfWZpZWxkX2Rkb3B0c1tdIiB2YWx1ZT0ieyRlbnRyeS5maWVsZF9leHRyYS5kZG9wdHN8ZGVmYXVsdDonJ30iLz4KICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJmbGRfYnRuX2Rkb3B0cyIgdGl0bGU9InskbW9kLT5MYW5nKCd0aXRsZV9lZGl0X2Rkb3B0cycpfSI+Li4uPC9idXR0b24+CiAgICAgICAgPC90ZD4KICAgICAgICA8dGQ+PHNlbGVjdCBjbGFzcz0iZmxkX3NlYXJjaGFibGUiIG5hbWU9InskYWN0aW9uaWR9ZmllbGRfc2VhcmNoYWJsZVtdIj57Y2dlX3llc25vX29wdGlvbnMgc2VsZWN0ZWQ9JGVudHJ5LmZpZWxkX2V4dHJhLnNlYXJjaGFibGV9PC9zZWxlY3Q+PC90ZD4KICAgICAgICA8dGQ+PHNlbGVjdCBjbGFzcz0iZmxkX3d5c2l3eWciIG5hbWU9InskYWN0aW9uaWR9ZmllbGRfd3lzaXd5Z1tdIj57Y2dlX3llc25vX29wdGlvbnMgc2VsZWN0ZWQ9JGVudHJ5LmZpZWxkX2V4dHJhLnd5c2l3eWd9PC9zZWxlY3Q+PC90ZD4KCTx0ZD57Y2dpbWFnZSBpbWFnZT0naWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnIGNsYXNzPSJmbGRfZGVsZXRlIn08L3RkPgogICAgICA8L3RyPgogICAgey9mb3JlYWNofQogICAgey9pZn0KICAgIDx0ciBpZD0iZmxkX3NrZWxldG9uIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgogICAgICA8dGQ+CiAgICAgICAgPGlucHV0IGNsYXNzPSJmbGRfaWQiIG5hbWU9InskYWN0aW9uaWR9ZmllbGRfaWRzW10iIHR5cGU9ImhpZGRlbiIgdmFsdWU9IiIvPgogICAgICAgIDxpbnB1dCBjbGFzcz0iZmxkX25hbWUiIG5hbWU9InskYWN0aW9uaWR9ZmllbGRfbmFtZXNbXSIgdHlwZT0idGV4dCIgdmFsdWU9IiIgbWF4bGVuZ3RoPSIyNTUiLz4KICAgICAgPC90ZD4KICAgICAgPHRkPgogICAgICAgIDxzZWxlY3QgY2xhc3M9ImZsZF90eXBlIiBuYW1lPSJ7JGFjdGlvbmlkfWZpZWxkX3R5cGVzW10iPntodG1sX29wdGlvbnMgb3B0aW9ucz0kdHlwZXN9PC9zZWxlY3Q+CiAgICAgICAgPGlucHV0IGNsYXNzPSJmbGRfZGRvcHRzIiB0eXBlPSJoaWRkZW4iIG5hbWU9InskYWN0aW9uaWR9ZmllbGRfZGRvcHRzW10iIHZhbHVlPSJ7JGVudHJ5LmZpZWxkX2Rkb3B0c3xkZWZhdWx0OicnfSIvPgogICAgICAgIDxidXR0b24gY2xhc3M9ImZsZF9idG5fZGRvcHRzIiB0aXRsZT0ieyRtb2QtPkxhbmcoJ3RpdGxlX2VkaXRfZGRvcHRzJyl9Ij4uLi48L2J1dHRvbj4KICAgICAgPC90ZD4KICAgICAgPHRkPgogICAgICAgIDxzZWxlY3QgY2xhc3M9ImZsZF9zZWFyY2hhYmxlIiBuYW1lPSJ7JGFjdGlvbmlkfWZpZWxkX3NlYXJjaGFibGVbXSI+e2NnZV95ZXNub19vcHRpb25zfTwvc2VsZWN0PgogICAgICA8L3RkPgogICAgICA8dGQ+CiAgICAgICAgPHNlbGVjdCBjbGFzcz0iZmxkX3d5c2l3eWciIG5hbWU9InskYWN0aW9uaWR9ZmllbGRfd3lzaXd5Z1tdIj57Y2dlX3llc25vX29wdGlvbnN9PC9zZWxlY3Q+CiAgICAgIDwvdGQ+CiAgICAgIDx0ZD57Y2dpbWFnZSBpbWFnZT0naWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnIGNsYXNzPSJmbGRfZGVsZXRlIn08L3RkPgogICAgPC90cj4KICA8L3Rib2R5Pgo8L3RhYmxlPgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgaWQ9ImZsZF9hZGQiIHZhbHVlPSJ7JG1vZC0+TGFuZygnYWRkX2ZpZWxkJyl9Ii8+CiAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBpZD0iZmxkX3VwZGF0ZSIgbmFtZT0ieyRhY3Rpb25pZH1zdWJtaXQiIHZhbHVlPSJ7JG1vZC0+TGFuZygnY2FsX3VwZGF0ZV9maWVsZHMnKX0iLz4KICA8L3A+CjwvZGl2Pgo8ZGl2IGlkPSJkbGdfZWRpdF9kZG9wdHMiIHRpdGxlPSJ7JG1vZC0+TGFuZygndGl0bGVfZWRpdF9kZG9wdHMnKX0iIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+KiB7JG1vZC0+TGFuZygncHJvbXB0X2Rkb3B0cycpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPHRleHRhcmVhIGlkPSJpbnB1dF9kZG9wdHMiIHJvd3M9IjgiIGNvbHM9IjMwIj48L3RleHRhcmVhPgogICAgICA8YnIvPnskbW9kLT5MYW5nKCdpbmZvX2Rkb3B0cycpfQogICAgPC9wPgogIDwvZGl2Pgo8L2Rpdj4KeyRmb3JtZW5kfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/importtemplate.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRlcnJvcm1zZyAhPSAiIn0KCTxkaXYgY2xhc3M9InBhZ2VlcnJvciI+eyRlcnJvcm1zZ308L2Rpdj4Key9pZn0KeyRzdGFydGZvcm19Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+KnskbmV3dGVtcGxhdGV9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0bmFtZX08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRoaWRkZW59eyRzdWJtaXR9eyRjYW5jZWx9PC9wPgoJPC9kaXY+CnskZW5kZm9ybX0K]]></data>
	</file>
	<file>
	  <filename>/templates/newedittemplate.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCTxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdH17JGNhbmNlbH08L3A+DQoJPC9kaXY+DQoNCg0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCTxwIGNsYXNzPSJwYWdldGV4dCI+KiB7JG5hbWV0ZXh0fTo8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskbmFtZWlucHV0fTwvcD4NCgk8L2Rpdj4NCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskY29udGVudHRleHR9OjwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRjb250ZW50aW5wdXR9PC9wPg0KCTwvZGl2Pg0KDQoJDQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fXskY2FuY2VsfTwvcD4NCgk8L2Rpdj4NCg==]]></data>
	</file>
	<file>
	  <filename>/templates/orig_calendar_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICFpc3NldCgkc21hcnR5LmdldC5ub2pzKX0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPntqc21pbn0KLy8gdGhlIGpzbWluIHBsdWdpbiBpcyBpbmNsdWRlZCB3aXRoIENHRXh0ZW5zaW9ucy4KaWYoIHR5cGVvZiBqUXVlcnkgIT0gJ3VuZGVmaW5lZCcgKSB7CiAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsJ2EuY2FsZW5kYXItbmF2JyxmdW5jdGlvbihldil7CiAgICAgIC8vIGFsbG93IHBhZ2luYXRpbmcgdGhyb3VnaCBtb250aHMgdmlhIGFqYXguCiAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7CiAgICAgIHZhciB1cmwgPSAkKHRoaXMpLmF0dHIoJ2hyZWYnKSsnJm5vanM9MSZzaG93dGVtcGxhdGU9ZmFsc2UnOwogICAgICB1cmwgPSB1cmwucmVwbGFjZSgvYW1wOy9nLCcnKTsKICAgICAgJCgnI2NhbC1jYWxlbmRhcicpLmxvYWQodXJsKTsKICAgIH0pOwoKICAgIGlmKCBqUXVlcnkoKS5kaWFsb2cgKSB7CiAgICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsJ2EuY2FsZW5kYXItZGF5bGlzdCcsZnVuY3Rpb24oZXYpewogICAgICAgIC8vIGRlbW9uc3RyYXRlIHZpZXdpbmcgYSBkYXkgbGlzdCBpbiBhIHBvcHVwIGRpYWxvZwogICAgICAgIC8vIGFuZCBtaXhpbmcgc21hcnR5IGFuZCBqYXZhc2NyaXB0IGNvZGUuCiAgICAgICAgLy8gdXNlcyBqcXVlcnkgdWkgZGlhbG9nLi4uIGJ1dCBjb3VsZCBqdXN0IGFzIGVhc2lseSB1c2UgZmFuY3lib3ggZXRjLgogICAgICAgIC8vIHlvdSBjb3VsZCBhZGQgcGFyYW1ldGVycyBoZXJlIGZvciBjaGFuZ2luZyB0aGUgdGVtcGxhdGUgZnJvbSB0aGUgZGVmYXVsdCwgZXRjLCBvciBldmVuIGZpbHRlciBieSBjYXRlZ29yeS4KICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIHZhciBkYXkgPSBuZXcgRGF0ZSggJCh0aGlzKS5kYXRhKCdkYXknKSAqIDEwMDAgKTsKICAgICAgICB2YXIgbSA9IGRheS5nZXRNb250aCgpKzE7CiAgICAgICAgdmFyIGQgPSBkYXkuZ2V0RGF0ZSgpOwogICAgICAgIHZhciB5ID0gZGF5LmdldEZ1bGxZZWFyKCk7CiAgICAgICAgdmFyIHVybCA9ICd7bW9kdWxlX2FjdGlvbl9saW5rIG1vZHVsZT1DR0NhbGVuZGFyIGRpc3BsYXk9bGlzdCBkYXk9RERERCAgbW9udGg9TU1NTSB5ZWFyPVlZWVkganNmcmllbmRseT0xfSZzaG93dGVtcGxhdGU9ZmFsc2UnOwogICAgICAgIHVybCA9IHVybC5yZXBsYWNlKCdNTU1NJyxtKS5yZXBsYWNlKCdEREREJyxkKS5yZXBsYWNlKCdZWVlZJyx5KTsKICAgICAgICAkKCcjY2FsLWRheXZpZXcnKS5sb2FkKHVybCxmdW5jdGlvbihkYXRhKXsKICAgICAgICAgICQoJyNjYWwtZGF5dmlldycpLmRpYWxvZyh7CiAgICAgICAgICAgIHRpdGxlOiAneyRtb2QtPkxhbmcoJ2RheXZpZXcnKX0nCiAgICAgICAgICB9KQogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0KICB9KQp9IC8vIGpxdWVyeSB0ZXN0CnsvanNtaW59PC9zY3JpcHQ+CnsvaWZ9Cgp7c3RyaXB9CntpZiAhaXNzZXQoJHNtYXJ0eS5nZXQubm9qcyl9CjxkaXYgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij57KiBhIHNpbXBsZSB3cmFwcGVyICp9CiAgPGRpdiBpZD0iY2FsLWRheXZpZXciPjwvZGl2Pgo8L2Rpdj4Key9pZn0KCjx0YWJsZSBjbGFzcz0iY2FsZW5kYXIiIGlkPSJjYWwtY2FsZW5kYXIiPgo8Y2FwdGlvbiBjbGFzcz0iY2FsZW5kYXItbW9udGgiPgogICA8c3BhbiBjbGFzcz0iY2FsZW5kYXItcHJldiI+PGEgY2xhc3M9ImNhbGVuZGFyLW5hdiIgaHJlZj0ieyRuYXZpZ2F0aW9uLnByZXZ9Ij4mbGFxdW87PC9hPjwvc3Bhbj4KICAgICA8c3BhbiBjbGFzcz0iY2FsZW5kYXItbGJsIj57JGRhdGV8ZGF0ZV9mb3JtYXQ6JyViICVZJ308L3NwYW4+CiAgIDxzcGFuIGNsYXNzPSJjYWxlbmRhci1uZXh0Ij48YSBjbGFzcz0iY2FsZW5kYXItbmF2IiBocmVmPSJ7JG5hdmlnYXRpb24ubmV4dH0iPiZyYXF1bzs8L2E+PC9zcGFuPgo8L2NhcHRpb24+Cjx0Ym9keT48dHI+Cntmb3JlYWNoIGZyb209JGRheV9uYW1lcyBpdGVtPWRheSBrZXk9a2V5fQo8dGggY2xhc3M9ImNhbC1kYXloZHIgY2FsLXskZGF5X3Nob3J0X25hbWVzWyRrZXldfHN0cnRvbG93ZXJ9IiBhYmJyPSJ7JGRheX0iPnskZGF5X3Nob3J0X25hbWVzWyRrZXldfTwvdGg+CnsvZm9yZWFjaH08L3RyPgoKPHRyPgp7KiBpbml0aWFsIGVtcHR5IGRheXMgKn0Ke2lmICRmaXJzdF9vZl9tb250aF93ZWVrZGF5X251bWJlciA+IDB9Cjx0ZCBjb2xzcGFuPSJ7JGZpcnN0X29mX21vbnRoX3dlZWtkYXlfbnVtYmVyfSI+Jm5ic3A7PC90ZD4Key9pZn0KCnsqIGl0ZXJhdGUgb3ZlciB0aGUgZGF5cyBvZiB0aGlzIG1vbnRoICp9Cnthc3NpZ24gdmFyPXdlZWtkYXkgdmFsdWU9JGZpcnN0X29mX21vbnRoX3dlZWtkYXlfbnVtYmVyfQp7Zm9yZWFjaCBmcm9tPSRkYXlzIGl0ZW09ZGF5IGtleT1rZXl9CntpZiAkd2Vla2RheSA9PSA3fQogIHthc3NpZ24gdmFyPXdlZWtkYXkgdmFsdWU9MH0KPC90cj4KPHRyPgp7L2lmfQo8dGQge2lmIGlzc2V0KCRkYXkuY2xhc3MpfWNsYXNzPSJ7JGRheS5jbGFzc30gY2FsLWRheSBjYWwteyRkYXlfc2hvcnRfbmFtZXNbJHdlZWtkYXldfHN0cnRvbG93ZXJ9InsvaWZ9Pgp7aWYgaXNzZXQoJGRheS5ldmVudHMuMCl9PGEgY2xhc3M9ImNhbGVuZGFyLWRheWxpc3QiIGRhdGEtZGF5PSJ7JGRheS5kYXRlfSIgaHJlZj0ieyRkYXkubmlfdXJsfSI+eyRrZXl9PC9hPnsqIGJ5IGRlZmF1bHQgdXNlIHRoZSBub24gaW5saW5lIChyZXBsYWNlIGNvbnRlbnQgdGFnKSB2ZXJzaW9uIG9mIHRoZSBVUkwgKn0KPHVsPgp7Zm9yZWFjaCBmcm9tPSRkYXkuZXZlbnRzIGl0ZW09ZXZlbnR9CjxsaT4KICB7KiBzb21lIHNpbXBsZSBzbWFydHkgbG9naWMgdG8gdXNlIHRoZSBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kIGNvbG9ycyBhc3NpZ25lZCB0byBhbiBldmVudCAqfQogIHskc3R5bGU9Jyd9e2lmICRldmVudC5iZ2NvbG9yfXskc3R5bGU9InN0eWxlPVwiY29sb3I6IHskZXZlbnQuZmdjb2xvcn07IGJhY2tncm91bmQtY29sb3I6IHskZXZlbnQuYmdjb2xvcn1cIiJ9ey9pZn0KICA8YSBjbGFzcz0iY2FsZW5kYXItZXZlbnQiIGhyZWY9InskZXZlbnQudXJsfSIgeyRzdHlsZX0+eyRldmVudC5ldmVudF90aXRsZXxzdW1tYXJpemU6MjB9PC9hPjwvbGk+CnsvZm9yZWFjaH0KPC91bD4Ke2Vsc2V9eyRrZXl9ey9pZn0KPC90ZD4Ke21hdGggYXNzaWduPXdlZWtkYXkgZXF1YXRpb249InggKyAxIiB4PSR3ZWVrZGF5fQp7L2ZvcmVhY2h9Cgp7KiByZW1haW5pbmcgZW1wdHkgZGF5cyAqfQp7aWYgJHdlZWtkYXkgIT0gN30KPHRkIGNvbHNwYW49InttYXRoIGVxdWF0aW9uPSI3LXgiIHg9JHdlZWtkYXl9Ij4mbmJzcDs8L3RkPgp7L2lmfQoKCjwvdHI+CjwvdGJvZHk+PC90YWJsZT4KCnsvc3RyaXB9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/orig_deleteevent_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogZGVsZXRlIGV2ZW50IHRlbXBsYXRlICp9CjxoMz5EZWxldGUgRXZlbnQ8L2gzPgoKe2lmICRldmVudC5ldmVudF9yZWN1cl9wZXJpb2QgIT0gJycgJiYgJGV2ZW50LmV2ZW50X3JlY3VyX3BlcmlvZCAhPSAnbm9uZSd9CiAgPGRpdiBjbGFzcz0icm93IHdhcm5pbmciPgogICAgPHA+eyRtb2QtPkxhbmcoJ2RlbGV0ZWV2ZW50X3dhcm5fY2hpbGRyZW4nKX08L3A+CiAgPC9kaXY+CntlbHNlaWYgJGV2ZW50LmV2ZW50X3BhcmVudF9pZCA+IDB9CiAgPGRpdiBjbGFzcz0icm93IHdhcm5pbmciPgogICAgPHA+eyRtb2QtPkxhbmcoJ2RlbGV0ZWV2ZW50X3dhcm5fY2hpbGQnKX08L3A+CiAgPC9kaXY+CnsvaWZ9Cgp7JGZvcm1zdGFydH0KPGZpZWxkc2V0PgogIDxsZWdlbmQ+eyRtb2QtPkxhbmcoJ2NhbF9kZXRhaWxzJyl9OjwvbGVnZW5kPgogIDxkaXYgY2xhc3M9InJvdyI+CiAgICA8cCBjbGFzcz0icm93X3Byb21wdCI+eyRtb2QtPkxhbmcoJ2NhbF90aXRsZScpfTo8cD4KICAgIDxwIGNsYXNzPSJyb3dfaW5wdXQiPnskZXZlbnQuZXZlbnRfdGl0bGV9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InJvdyI+CiAgICA8cCBjbGFzcz0icm93X3Byb21wdCI+eyRtb2QtPkxhbmcoJ2NhbF9zdW1tYXJ5Jyl9OjxwPgogICAgPHAgY2xhc3M9InJvd19pbnB1dCI+eyRldmVudC5ldmVudF9zdW1tYXJ5fTwvcD4KICA8L2Rpdj4KPC9maWVsZHNldD4KCjxkaXYgY2xhc3M9InJvdyI+CiAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1jYWxfc3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2RlbGV0ZScpfSIvPgogIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9Y2FsX2NhbmNlbCIgdmFsdWU9InskbW9kLT5MYW5nKCdjYW5jZWwnKX0iLz4KPC9kaXY+CnskZm9ybWVuZH0=]]></data>
	</file>
	<file>
	  <filename>/templates/orig_editevent_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogZWRpdCBldmVudCB0ZW1wbGF0ZSAqfQoKeyogTk9URTogVGhpcyB0ZW1wbGF0ZSByZXF1aXJlcyBKUVVFUlkgYmUgZW5hYmxlZCAqfQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CnsqIEkgd291bGQgcHJlZmVyIHRvIHVzZSBqcXVlcnkgaGVyZSwgYnV0IGFzIHdlIGRvbid0IG5lZWQgYW55IG90aGVyIGZ1bmN0aW9uYWxpdHksIHRoaXMgZnVuY3Rpb24gaXMgc2ltcGxlIGVub3VnaCB0byB1c2UgKn0KZnVuY3Rpb24gdG9nZ2xlRGlzcGxheShlbGVtKSB7CiAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbSk7CiAgdmFyIHR4dCA9IGVsLnN0eWxlLmRpc3BsYXk7CiAgaWYoIHR4dCA9PSAnbm9uZScgKSB7CiAgICAgIHR4dCA9ICdibG9jayc7CiAgfSBlbHNlIHsKICAgICAgdHh0ID0gJ25vbmUnOwogIH0KICBlbC5zdHlsZS5kaXNwbGF5ID0gdHh0Owp9CiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgIHZhciBpbnRlcnZhbHMgPSB7JHBsdXJhbHNfanNvbn07CiAgICQoJyNldmVudF9yZWN1cnMnKS5jaGFuZ2UoZnVuY3Rpb24oKXsKICAgICB2YXIgX3JlY3VycyA9ICQodGhpcykudmFsKCk7CiAgICAgaWYoIF9yZWN1cnMgPT0gJ25vbmUnICkgewogICAgICAgICQoJyNyZWN1cnNfYXJlYScpLmhpZGUoKTsKICAgICB9IGVsc2UgewogICAgICAgIC8vIHNldCB0aGUgbGFiZWwgZm9yIHRoZSByZWN1ciBpbnRldmFsCgkkKCcjaW50ZXJ2YWxfcGx1cmFsJykuaHRtbChpbnRlcnZhbHNbX3JlY3Vyc10pOwoKICAgICAgICAvLyBoaWRlIGFuZCBzaG93IG90aGVyIHN0dWZmIGhlcmUuCiAgICAgICAgJCgnI3JlY3Vyc193ZWVrbHksI3JlY3Vyc19tb250aGx5JykuaGlkZSgpOwoJc3dpdGNoKF9yZWN1cnMpIHsKCSAgIGNhc2UgJ3dlZWtseSc6CgkgICAgICAkKCcjcmVjdXJzX3dlZWtseScpLnNob3coKTsKCSAgICAgIGJyZWFrOwoJICAgY2FzZSAnbW9udGhseSc6CgkgICAgICAkKCcjcmVjdXJzX21vbnRobHknKS5zaG93KCk7CgkgICAgICBicmVhazsKCX0KCgkvLyBzaG93IHRoZSBhcmVhCiAgICAgICAgJCgnI3JlY3Vyc19hcmVhJykuc2hvdygpOwogICAgIH0KICAgfSk7CiAgICQoJyNldmVudF9yZWN1cnMnKS50cmlnZ2VyKCdjaGFuZ2UnKTsKfSk7Cjwvc2NyaXB0PgoKe2lmIGlzc2V0KCRtZXNzYWdlKX0KICB7aWYgaXNzZXQoJHN0YXR1cyl9CiAgICA8ZGl2IGNsYXNzPSJlcnJvciI+eyRtZXNzYWdlfTwvZGl2PgogIHtlbHNlfQogICAgPGRpdiBjbGFzcz0ibWVzc2FnZSI+eyRtZXNzYWdlfTwvZGl2PgogIHsvaWZ9CnsvaWZ9Cgo8ZGl2IGlkPSJjZ2NhbGVuZGFyX2FkZGVkaXRfZXZlbnQiPgogIHtpZiAkZXZlbnQuZXZlbnRfaWQgPiAwIH0KICAgIDxoND57JG1vZC0+TGFuZygnY2FsX2VkaXRfZXZlbnQnLCRldmVudC5ldmVudF9pZCl9PC9oND4KICB7ZWxzZX0KICAgIDxoND57JG1vZC0+TGFuZygnY2FsX2FkZF9ldmVudCcpfTwvaDQ+CiAgey9pZn0KCiAgeyR1c2UyND0xfQogIHskdXNlMTI9JG1vZC0+R2V0UHJlZmVyZW5jZSgndXNlX3R3ZWx2ZV9ob3VyX2Nsb2NrJyl9CiAge2lmICR1c2UxMn17JHVzZTI0PTB9ey9pZn0KICB7JGZvcm1zdGFydH0KCiAgPGRpdiBjbGFzcz0icm93Ij4KICAgIDxwIGNsYXNzPSJyb3dfcHJvbXB0Ij57JG1vZC0+TGFuZygnY2FsX2Zyb21kYXRlJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJyb3dfaW5wdXQiPgogICAgICB7Y2FwdHVyZSBhc3NpZ249J3RtcCd9eyRhY3Rpb25pZH1jYWxfc3RhcnRkYXRlX3svY2FwdHVyZX0KICAgICAge2h0bWxfc2VsZWN0X2RhdGUgcHJlZml4PSR0bXAgdGltZT0kZXZlbnQuZXZlbnRfZGF0ZV9zdGFydF91dCBzdGFydF95ZWFyPSRzdGFydF95ZWFyIGVuZF95ZWFyPSRlbmRfeWVhcn0KICAgICAgJm5ic3A7QWxsIERheTogPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfWNhbF9hbGxfZGF5X2V2ZW50IiBpZD0iYWxsX2RheV9ldmVudCIgdmFsdWU9IjEie2lmICRldmVudC5hbGxfZGF5X2V2ZW50ID09IDF9IGNoZWNrZWQ9ImNoZWNrZWQiey9pZn0gb25jbGljaz0idG9nZ2xlRGlzcGxheSgnc3RhcnR0aW1lJyk7IHRvZ2dsZURpc3BsYXkoJ2VuZHRpbWUnKTsiLz4KICAgICAgPHNwYW4gaWQ9InN0YXJ0dGltZSJ7aWYgJGV2ZW50LmFsbF9kYXlfZXZlbnQgPT0gMX0gc3R5bGU9ImRpc3BsYXk6IG5vbmU7InsvaWZ9PiBhdCB7aHRtbF9zZWxlY3RfdGltZSB1c2VfMjRfaG91cnM9JHVzZTI0IHByZWZpeD0kdG1wIHRpbWU9JGV2ZW50LmV2ZW50X2RhdGVfc3RhcnRfdXQgbWludXRlX2ludGVydmFsPTE1IGRpc3BsYXlfc2Vjb25kcz1mYWxzZX08L3NwYW4+CiAgICA8L3A+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9InJvdyI+CiAgICA8cCBjbGFzcz0icm93X3Byb21wdCI+eyRtb2QtPkxhbmcoJ2NhbF90b2RhdGUnKX06PC9wPgogICAgPHAgY2xhc3M9InJvd19pbnB1dCI+CiAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ieyRhY3Rpb25pZH1jYWxfZW5kZGF0ZV92YWxpZCIgdmFsdWU9IjEiIHtpZiAkZXZlbnQuYWx0X2VuZF9kYXRlID09IDF9Y2hlY2tlZD0iY2hlY2tlZCJ7L2lmfSBvbmNsaWNrPSJ0b2dnbGVEaXNwbGF5KCdlbmRkYXRlJyk7Ij57JG1vZC0+TGFuZygndXNlX3RvX2RhdGUnKX08YnIvPgogICAgICB7Y2FwdHVyZSBhc3NpZ249J3RtcCd9eyRhY3Rpb25pZH1jYWxfZW5kZGF0ZV97L2NhcHR1cmV9CiAgICAgIHskZW5kX2RhdGU9JGV2ZW50LmV2ZW50X2RhdGVfZW5kX3V0fGRlZmF1bHQ6JHNtYXJ0eS5ub3d9CiAgICAgIDxzcGFuIGlkPSJlbmRkYXRlIiB7aWYgZW1wdHkoJGV2ZW50LmV2ZW50X2RhdGVfZW5kKSB8fCAkZXZlbnQuZXZlbnRfZGF0ZV9lbmQgPT0gJycgfHwgJGV2ZW50LmFsdF9lbmRfZGF0ZSA9PSAwfXN0eWxlPSJkaXNwbGF5OiBub25lOyJ7L2lmfT4KICAgICAgICB7aHRtbF9zZWxlY3RfZGF0ZSBwcmVmaXg9JHRtcCB0aW1lPSRlbmRfZGF0ZSBzdGFydF95ZWFyPSRzdGFydF95ZWFyIGVuZF95ZWFyPSRlbmRfeWVhcn0KICAgICAgICA8c3BhbiBpZD0iZW5kdGltZSJ7aWYgJGV2ZW50LmFsbF9kYXlfZXZlbnQgPT0gMX0gc3R5bGU9ImRpc3BsYXk6IG5vbmU7InsvaWZ9PiBhdCB7aHRtbF9zZWxlY3RfdGltZSB1c2VfMjRfaG91cnM9JHVzZTI0IHRpbWU9JGV2ZW50LmV2ZW50X2RhdGVfZW5kX3V0IHByZWZpeD0kdG1wIG1pbnV0ZV9pbnRlcnZhbD0xNSBkaXNwbGF5X3NlY29uZHM9ZmFsc2V9PC9zcGFuPgogICAgICA8L3NwYW4+CiAgICA8L3A+CiAgPC9kaXY+CgogIHtpZiAkZXZlbnQuZXZlbnRfcGFyZW50X2lkIDwgMX0KICAgIDxkaXYgY2xhc3M9InJvdyI+eyogcmVjdXJzIG9wdGlvbiAqfQogICAgICAgPHAgY2xhc3M9InJvd19wcm9tcHQiPnskbW9kLT5MYW5nKCdyZWN1cnMnKX06PC9wPgogICAgICAgPHAgY2xhc3M9InJvd19pbnB1dCI+CiAgICAgICAgIDxzZWxlY3QgbmFtZT0ieyRhY3Rpb25pZH1jYWxfZXZlbnRfcmVjdXJfcGVyaW9kIiBpZD0iZXZlbnRfcmVjdXJzIj4KICAgICAgICAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JHJlY3VyX29wdGlvbnMgc2VsZWN0ZWQ9JGV2ZW50LmV2ZW50X3JlY3VyX3BlcmlvZH0KICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICA8L3A+CiAgICA8L2Rpdj57KiByZWN1cnMgb3B0aW9uICp9CgogICAgPGZpZWxkc2V0IGlkPSJyZWN1cnNfYXJlYSIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KICAgICAgIDxsZWdlbmQ+eyRtb2QtPkxhbmcoJ2NhbF9yZWN1cl9kZXRhaWxzJyl9OjwvbGVnZW5kPgogICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgPHAgY2xhc3M9InJvd19wcm9tcHQiPnskbW9kLT5MYW5nKCdpbnRlcnZhbCcpfTwvc3Bhbj48L3A+CiAgICAgICAgIDxwIGNsYXNzPSJyb3dfaW5wdXQiPgogICAgICAgICAgIHskbW9kLT5MYW5nKCdldmVyeScpfQogICAgICAgICAgIDxzZWxlY3QgbmFtZT0ieyRhY3Rpb25pZH1jYWxfZXZlbnRfcmVjdXJfaW50ZXJ2YWwiPgoJICAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JG51bXMgc2VsZWN0ZWQ9JGV2ZW50LmV2ZW50X3JlY3VyX2ludGVydmFsfQoJICAgPC9zZWxlY3Q+CgkgICA8c3BhbiBpZD0iaW50ZXJ2YWxfcGx1cmFsIj48L3NwYW4+CiAgICAgICAgIDwvcD4KICAgICAgIDwvZGl2PgoKICAgICAgIHsqIHdlZWtseSByZWN1cnMgYXJlYSAqfQogICAgICAgPGRpdiBpZD0icmVjdXJzX3dlZWtseSI+CiAgICAgICAgIDxwIGNsYXNzPSJyb3dfcHJvbXB0Ij57JG1vZC0+TGFuZygnd2Vla2RheXMnKX06PC9wPgogICAgICAgICA8cCBjbGFzcz0icm93X2lucHV0Ij4KICAgICAgICAgICA8c2VsZWN0IG5hbWU9InskYWN0aW9uaWR9Y2FsX2V2ZW50X3JlY3VyX3dlZWtkYXlzW10iIG11bHRpcGxlPSJtdWx0aXBsZSIgc2l6ZT0iNyI+CgkgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kd2Vla2RheXMgc2VsZWN0ZWQ9JGV2ZW50LmV2ZW50X3JlY3VyX3dlZWtkYXlzfQoJICAgPC9zZWxlY3Q+CiAgICAgICAgIDwvcD4KICAgICAgIDwvZGl2PgoKICAgICAgIDxkaXYgaWQ9InJlY3Vyc19tb250aGx5Ij4KICAgICAgICAgPHAgY2xhc3M9InJvd19wcm9tcHQiPnskbW9kLT5MYW5nKCdmcmVxdWVuY3knKX06PC9wPgogICAgICAgICA8cCBjbGFzcz0icm93X2lucHV0Ij4KICAgICAgICAgICA8c2VsZWN0IG5hbWU9InskYWN0aW9uaWR9Y2FsX2V2ZW50X3JlY3VyX21vbnRoZGF5cyIgbXVsdGlwbGU9Im11bHRpcGxlIiBzaXplPSI1Ij4KCSAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRyZWN1cl9kYXlzIHNlbGVjdGVkPSRldmVudC5ldmVudF9yZWN1cl9tb250aGRheXN9CgkgICA8L3NlbGVjdD4KICAgICAgICAgPC9wPgogICAgICAgPC9kaXY+CgogICAgICAgeyogcmVjdXJzIHVudGlsIGFyZWEgKn0KICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgIDxwIGNsYXNzPSJyb3dfcHJvbXB0Ij57JG1vZC0+TGFuZygnY2FsX3JlY3VyX3VudGlsJyl9OjwvcD4KICAgICAgICAgPHAgY2xhc3M9InJvd19pbnB1dCI+CiAgICAgICAgICAgPGlucHV0IHR5cGU9ImRhdGUiIG5hbWU9InskYWN0aW9uaWR9Y2FsX2V2ZW50X3JlY3VyX2RhdGUiIHBsYWNlaG9sZGVyPSJZWVlZLU1NLUREIiB2YWx1ZT0ieyRldmVudC5ldmVudF9kYXRlX3JlY3VyX2VuZF91dHxkYXRlX2Zvcm1hdDonJVktJW0tJWQnfSIvPgogICAgICAgICA8L3A+CiAgICAgICA8L2Rpdj4KICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgIDxwIGNsYXNzPSJyb3dfcHJvbXB0Ij57JG1vZC0+TGFuZygnbWF4X3JlY3VyX2V2ZW50cycpfTo8L3A+CiAgICAgICAgIDxwIGNsYXNzPSJyb3dfaW5wdXQiPgogICAgICAgICAgIDxzZWxlY3QgbmFtZT0ieyRhY3Rpb25pZH1jYWxfZXZlbnRfcmVjdXJfY291bnQiPgoJICAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JG1heGl0ZXJzIHNlbGVjdGVkPSRldmVudC5ldmVudF9yZWN1cl9jb3VudH0KCSAgIDwvc2VsZWN0PgogICAgICAgICA8L3A+CiAgICAgICA8L2Rpdj4KICAgIDwvZmllbGRzZXQ+eyogI3JlY3Vyc19hcmVhICp9CiAgey9pZn0KCiAgPGRpdiBjbGFzcz0icm93Ij4KICAgIDxwIGNsYXNzPSJyb3dfcHJvbXB0Ij4qeyRtb2QtPkxhbmcoJ2NhbF90aXRsZScpfTo8L3A+CiAgICA8cCBjbGFzcz0icm93X2lucHV0Ij4KICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9Y2FsX2V2ZW50X3RpdGxlIiB2YWx1ZT0ieyRldmVudC5ldmVudF90aXRsZX0iIHNpemU9IjgwIiBtYXhsZW5ndGg9IjI1NSIvPgogICAgPC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgPHAgY2xhc3M9InJvd19wcm9tcHQiPnskbW9kLT5MYW5nKCdjYWxfc3VtbWFyeScpfTo8L3A+CiAgICA8cCBjbGFzcz0icm93X2lucHV0Ij4KICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9Y2FsX2V2ZW50X3N1bW1hcnkiIHZhbHVlPSJ7JGV2ZW50LmV2ZW50X3N1bW1hcnl9IiBzaXplPSI4MCIgbWF4bGVuZ3RoPSIyNTUiLz4KICAgIDwvcD4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0icm93Ij4KICAgIDxwIGNsYXNzPSJyb3dfcHJvbXB0Ij57JG1vZC0+TGFuZygnY2FsX2RldGFpbHMnKX06PC9wPgogICAgPHAgY2xhc3M9InJvd19pbnB1dCI+CiAgICAgIHtjZ2VfdGV4dGFyZWEgbmFtZT0ieyRhY3Rpb25pZH1jYWxfZXZlbnRfZGV0YWlscyIgcm93cz0iNSIgdmFsdWU9JGV2ZW50LmV2ZW50X2RldGFpbHMgd3lzaXd5Zz0xfQogICAgPC9wPgogIDwvZGl2PgoKICB7aWYgaXNzZXQoJGZpZWxkcyl9CiAgICB7Zm9yZWFjaCBmcm9tPSRmaWVsZHMgaXRlbT0nZmllbGQnfQogICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgIDxwIGNsYXNzPSJyb3dfcHJvbXB0Ij57JGZpZWxkLT5uYW1lfTo8L3A+CiAgICAgICAgPHAgY2xhc3M9InJvd19pbnB1dCI+CiAgICAgICAgICB7aWYgJGZpZWxkLT50eXBlID09IDB9CiAgICAgIAkgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9Y2FsX2ZpZWxkX3skZmllbGQtPnNhZmVuYW1lfSIgc2l6ZT0iNDAiIHZhbHVlPSJ7JGZpZWxkLT52YWx1ZX0iLz4KICAgICAgICAgIHtlbHNlaWYgJGZpZWxkLT50eXBlID09IDJ9CiAgICAgCSAgICB7Y2dlX3RleHRhcmVhIHd5c2l3eWc9JGZpZWxkLT5leHRyYS53eXNpd3lnIG5hbWU9InskYWN0aW9uaWR9Y2FsX2ZpZWxkX3skZmllbGQtPnNhZmVuYW1lfSIgcm93cz0iNSIgdmFsdWU9InskZmllbGQtPnZhbHVlfSJ9CiAgICAgICAgICB7ZWxzZX0KICAgICAgICAgICAge2lmICRmaWVsZC0+dHlwZSA9PSAxfTxzcGFuPnskZmllbGQtPnZhbHVlfTwvc3Bhbj48YnIvPnsvaWZ9CiAgICAgICAgICAgIHskZmllbGQtPmZpZWxkfQogICAgICAgICAgey9pZn0KICAgICAgICA8L3A+CiAgICAgIDwvZGl2PgogICAgey9mb3JlYWNofQogIHsvaWZ9CgogIHtpZiBpc3NldCgkY2F0ZWdvcmllcyl9CiAgICB7Zm9yZWFjaCBmcm9tPSRjYXRlZ29yaWVzIGl0ZW09J2NhdGVnb3J5J30KICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgIDxwIGNsYXNzPSJyb3dfcHJvbXB0Ij57JGNhdGVnb3J5LT5uYW1lfTo8L3A+CiAgICAgIDxwIGNsYXNzPSJyb3dfaW5wdXQiPgogICAgICAgIHskY2F0ZWdvcnktPmZpZWxkfQogICAgICA8L3A+CiAgICA8L2Rpdj4KICAgIHsvZm9yZWFjaH0KICB7L2lmfQoKICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgPHAgY2xhc3M9InJvd19wcm9tcHQiPjwvcD4KICAgIDxwIGNsYXNzPSJyb3dfaW5wdXQiPgogICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfWNhbF9zdWJtaXQiIHZhbHVlPSJ7JG1vZC0+TGFuZygnc3VibWl0Jyl9Ii8+CiAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9Y2FsX2NhbmNlbCIgdmFsdWU9InskbW9kLT5MYW5nKCdjYW5jZWwnKX0iLz4KICAgIDwvcD4KICA8L2Rpdj4KICB7JGZvcm1lbmR9CjwvZGl2PnsqICNjZ2NhbGVuZGFyX2FkZGVkaXRfZXZlbnQgKn0K]]></data>
	</file>
	<file>
	  <filename>/templates/orig_event_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iY2FsZW5kYXItZXZlbnQiPgo8aDE+eyRldmVudC5ldmVudF90aXRsZX08L2gxPgoKeyogY3JlYXRlIGEgY2Fub25pY2FsIHZhcmlhYmxlIHRvIHVzZSBpbiB0aGUgcGFnZSBoZWFkZXIuLi4gbm90ZSB3ZSBtdXN0IGNvcHkgaXQgdG8gdGhlIGdsb2JhbCBzY29wZSAqfQp7aWYgaXNzZXQoJGV2ZW50LnVybCl9eyRjYW5vbmljYWw9JGV2ZW50LnVybCBzY29wZT1nbG9iYWx9ey9pZn0KCnthc3NpZ24gdmFyPW1vbnRoX251bWJlciB2YWx1ZT0kZXZlbnQuZXZlbnRfZGF0ZV9zdGFydHxkYXRlX2Zvcm1hdDoiJW0ifQp7YXNzaWduIHZhcj1lbmRfbW9udGhfbnVtYmVyIHZhbHVlPSRldmVudC5ldmVudF9kYXRlX2VuZHxkYXRlX2Zvcm1hdDoiJW0ifQp7aWYgJGV2ZW50LmV2ZW50X2RhdGVfc3RhcnQgPT0gJGV2ZW50LmV2ZW50X2RhdGVfZW5kIHx8ICRldmVudC5ldmVudF9kYXRlX2VuZCA9PSAwfQogIDxkaXYgY2xhc3M9ImNhbGVuZGFyLWRhdGUtZnJvbSI+PHNwYW4gY2xhc3M9ImNhbGVuZGFyLWRhdGUtdGl0bGUiPnskbGFuZy5kYXRlfTogPC9zcGFuPnskZXZlbnQuZXZlbnRfZGF0ZV9zdGFydHxjbXNfZGF0ZV9mb3JtYXR9IHskZXZlbnQuZXZlbnRfZGF0ZV9zdGFydHxkYXRlX2Zvcm1hdDoiJVgifTwvZGl2Pgp7ZWxzZX0Ke2lmICRldmVudC5ldmVudF9kYXRlX3N0YXJ0fGRhdGVfZm9ybWF0OiIlZCVtJVkiID09ICRldmVudC5ldmVudF9kYXRlX2VuZHxkYXRlX2Zvcm1hdDoiJWQlbSVZIn0KICA8ZGl2IGNsYXNzPSJjYWxlbmRhci1kYXRlLWZyb20iPjxzcGFuIGNsYXNzPSJjYWxlbmRhci1kYXRlLXRpdGxlIj57JGxhbmcuZGF0ZX06IDwvc3Bhbj57JGV2ZW50LmV2ZW50X2RhdGVfc3RhcnR8Y21zX2RhdGVfZm9ybWF0fSB7JGV2ZW50LmV2ZW50X2RhdGVfc3RhcnR8ZGF0ZV9mb3JtYXQ6IiVYIn0geyRsYW5nLnRvfSB7JGV2ZW50LmV2ZW50X2RhdGVfZW5kfGRhdGVfZm9ybWF0OiIlSDolTSJ9PC9kaXY+CntlbHNlfQogIDxkaXYgY2xhc3M9ImNhbGVuZGFyLWRhdGUtZnJvbSI+PHNwYW4gY2xhc3M9ImNhbGVuZGFyLWRhdGUtdGl0bGUiPnskbGFuZy5kYXRlfTogPC9zcGFuPnskZXZlbnQuZXZlbnRfZGF0ZV9zdGFydHxkYXRlX2Zvcm1hdDoiJWUifSB7JGV2ZW50X2RhdGVfc3RhcnR8ZGF0ZV9mb3JtYXQ6JyVCJ30geyRldmVudC5ldmVudF9kYXRlX3N0YXJ0fGRhdGVfZm9ybWF0OiIlWSAlSDolTSJ9IHskbGFuZy50b30geyRldmVudC5ldmVudF9kYXRlX2VuZHxkYXRlX2Zvcm1hdDoiJWQifSB7JGV2bmV0X2RhdGVfZW5kfGRhdGVfZm9ybWF0OiclQid9IHskZXZlbnQuZXZlbnRfZGF0ZV9lbmR8ZGF0ZV9mb3JtYXQ6IiVZICVIOiVNIn08L2Rpdj4Key9pZn0Key9pZn0Ke2lmICRldmVudC5ldmVudF9zdW1tYXJ5ICE9IiIgJiYgJGV2ZW50LmV2ZW50X2RldGFpbHMgPT0iIn0KCTxkaXYgY2xhc3M9ImNhbGVuZGFyLXN1bW1hcnkiPjxzcGFuIGNsYXNzPSJjYWxlbmRhci1zdW1tYXJ5LXRpdGxlIj57JGxhbmcuc3VtbWFyeX06IDwvc3Bhbj57JGV2ZW50LmV2ZW50X3N1bW1hcnl9PC9kaXY+CnsvaWZ9CntpZiAkZXZlbnQuZXZlbnRfcGFyZW50X2lkID4gMH0KICB7KiB0aGlzIGlzIGEgY2hpbGQgZXZlbnQuLi4gd2UgY2FuIGRpc3BsYXkgYSBsaW5rIHRvIHRoZSBwYXJlbnQgKn0KICA8ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRtb2QtPkxhbmcoJ2luZm9fYWJvdXRfY2hpbGRfZXZlbnQnKX08L2Rpdj4KICA8ZGl2PgogICAgeyogbm90ZSwgdGhpcyBkb2VzIG5vdCBnZW5lcmF0ZSBhIHByZXR0eSB1cmwgdG8gdGhlIGV2ZW50IGF0IHRoaXMgdGltZSwgIGJ1dCB0aGUgY2Fub25pY2FsIFVSTCBzdHVmZiBpbiB0aGUgZGV0YWlsIHZpZXcgc2hvdWxkIHJlc29sdmUgYW55IHByb2JsZW1zICp9CiAgICA8YSBocmVmPSJ7bW9kdWxlX2FjdGlvbl91cmwgbW9kdWxlPUNHQ2FsZW5kYXIgYWN0aW9uPWRlZmF1bHQgZGlzcGxheT1ldmVudCBldmVudF9pZD0kZXZlbnQuZXZlbnRfcGFyZW50X2lkfSI+eyRtb2QtPkxhbmcoJ3ZpZXdfcGFyZW50X2V2ZW50Jyl9PC9hPgogIDwvZGl2Pgp7ZWxzZX0KICB7KiB0aGlzIGlzIGEgcGFyZW50L29ycGhhbiBldmVudCAqfQogIHtpZiAkZXZlbnQuZXZlbnRfcmVjdXJfcGVyaW9kICE9ICcnICYmICRldmVudC5ldmVudF9yZWN1cl9wZXJpb2QgIT0gJ25vbmUnIH0KICAgIDxkaXYgY2xhc3M9ImluZm9ybWF0aW9uIj57JG1vZC0+TGFuZygnaW5mb19hYm91dF9wYXJlbnRfZXZlbnQnKX08L2Rpdj4KICAgIDxkaXY+CiAgICAgICB7JHBlcmlvZD0kbGFuZy5yZWN1cl9wZXJpb2RbJGV2ZW50LmV2ZW50X3JlY3VyX3BlcmlvZF18c3RydG9sb3dlcn0KICAgICAgIHskZGF0ZXN0cj0kZXZlbnQuZXZlbnRfZGF0ZV9yZWN1cl9lbmR8ZGF0ZV9mb3JtYXQ6JyVkICViICVZJ30KICAgICAgIHtpZiAkZXZlbnQuZXZlbnRfcmVjdXJfbmV2ZW50cyA+IDB9CiAgICAgICAgIHskbW9kLT5MYW5nKCdjYWxfcmVjdXJfc3RyJywkcGVyaW9kLCRkYXRlc3RyLCRldmVudC5ldmVudF9yZWN1cl9uZXZlbnRzKX0KICAgICAgIHtlbHNlfQogICAgICAgICB7JG1vZC0+TGFuZygnY2FsX3JlY3VyX3N0cjInLCRwZXJpb2QsJGRhdGVzdHIpfQogICAgICAgey9pZn0KICAgIDwvZGl2PgogIHsvaWZ9CnsvaWZ9Cgp7aWYgJGV2ZW50LmV2ZW50X2RldGFpbHMgIT0iIiAmJiAkZXZlbnQuZXZlbnRfZGV0YWlscyAhPSAiPGJyIC8+In0KCTxkaXYgY2xhc3M9ImNhbGVuZGFyLWRldGFpbHMiPjxzcGFuIGNsYXNzPSJjYWxlbmRhci1kZXRhaWxzLXRpdGxlIj57JGxhbmcuZGV0YWlsc306IDwvc3Bhbj57ZXZhbCB2YXI9JGV2ZW50LmV2ZW50X2RldGFpbHN9PC9kaXY+CnsvaWZ9Cgp7KiBEaXNwbGF5IGN1c3RvbSBmaWVsZHMKICAgVGhlcmUgYXJlIHR3byB3YXlzIHRvIGFkZHJlc3MgY3VzdG9tIGZpZWxkcwogICAxKSB7JGV2ZW50LmZpZWxkcy5maWVsZG5hbWV9CiAgIDIpIHtmb3JlYWNoICRldmVudC5maWVsZHMgYXMgJGZpZWxkbmFtZSA9PiAkZmllbGRyZWN9CiAgICAgICAgeyRmaWVsZG5hbWV9OiZuYnNwO3skZmllbGRyZWMuZmllbGRfdmFsdWV9CiAgICAgIHsvZm9yZWFjaH0KICAgWW91IG1heSB3YW50IHRvIHVzZSB0aGUgZm9ybWVyIG1ldGhvZCB3aXRoIGZpbGUgdXBsb2FkIG9yIGF0dGFjaG1lbnQgZmllbGRzLgogICBOb3RlOiAgVGhlIGZpZWxkcmVjIGFycmF5IGNvbnRhaW5zIGFsbCBvZiB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZpZWxkLCBpbmNsdWRpbmcgaXRzIG9wdGlvbnMsIGFuZCByYXdfdmFsdWUgKGZvciBkcm9wZG93biBvciBzaW1pbGFyIGZpZWxkcykKICAgTm90ZTogIHZhbHVlcyBpbiBmaWxlIGF0dGFjaG1lbnQgZmllbGRzIGFyZSBhbGwgcmVsYXRpdmUgdG8gdGhlIHVwbG9hZF91cmwgY29uZmlnIGVudHJ5ICh3aGljaCBpcyBieSBkZWZhdWx0IDxyb290Pi91cGxvYWRzKS4gICh2Mi41KykKKn0Ke2lmIGlzc2V0KCRldmVudC5maWVsZHMpfQogIDxkaXYgY2xhc3M9ImNhbGVuZGFyLWZpZWxkcyI+CiAgICB7Zm9yZWFjaCAkZXZlbnQuZmllbGRzIGFzICRmaWVsZG5hbWUgPT4gJGZpZWxkcmVjfQogICAgICB7JGZpZWxkbmFtZX06Jm5ic3A7eyRmaWVsZHJlYy5maWVsZF92YWx1ZX08YnIvPgogICAgey9mb3JlYWNofQogIDwvZGl2Pgp7L2lmfQoKe2lmIGlzc2V0KCRlZGl0X3VybCl9CiAgeyogb25seSBhdmFpbGFibGUgaWYgbG9nZ2VkIGluIHRvIEZFVS4uLiBidXQgc2luY2UgRkVVIGlzIG5vdCBhIGRlcGVuZGVuY3kgd2UgY2Fubm90IHVzZSB0aGUgZmV1IHNtYXJ0eSBwbHVnaW5zIGluIGEgc3RvY2sgdGVtcGxhdGUgKn0KICA8ZGl2IGNsYXNzPSJjYWxlbmRhci1lZGl0Ij4KICAgIDxhIGhyZWY9InskZWRpdF91cmx9Ij48aW1nIHNyYz0ieyRtb2QtPkdldE1vZHVsZVVSTFBhdGgoKX0vaW1hZ2VzL2NhbGVuZGFyX2VkaXQucG5nIiBhbHQ9IiIvPiB7JG1vZC0+TGFuZygnZWRpdCcpfTwvYT4KICAgIDxhIGhyZWY9Inttb2R1bGVfYWN0aW9uX3VybCBtb2R1bGU9Q0dDYWxlbmRhciBhY3Rpb249ZGVsZXRlX2V2ZW50IGV2ZW50X2lkPSRldmVudC5ldmVudF9pZH0iPjxpbWcgc3JjPSJ7JG1vZC0+R2V0TW9kdWxlVVJMUGF0aCgpfS9pbWFnZXMvY2FsZW5kYXJfZGVsZXRlLnBuZyIgYWx0PSIiLz4geyRtb2QtPkxhbmcoJ2RlbGV0ZScpfTwvYT4KICA8L2Rpdj4Key9pZn0KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/orig_fullcalendar_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogb3JpZyBmdWxsY2FsZW5kYXIgdmlldyAqfQp7KiBUaGlzIHRlbXBsYXRlIHV0aWxpemVzIGZ1bGxjYWxlbmRhciAoaHR0cDovL2Z1bGxjYWxlbmRhci5pbykgYW4gaW50ZXJhY3RpdmUgamF2YXNjcmlwdCBjYWxlbmRhciAqfQp7KiB0aGlzIGFjdGlvbiByZXF1aXJlcyB0aGF0OgogICBhOiBqcXVlcnkgYW5kIGpxdWVyeS11aSBiZSBlbmFibGVkIGluIHRoZSBwYWdlIGhlYWRlci4gIFlvdSBjYW4gdXNlIGpRdWVyeVRvb2xzLCBvciB7Y21zX2pxdWVyeX0gZm9yIHRoaXMuCiAgIGI6IHtjZ2pzX3JlbmRlcn0gYmUgY2FsbGVkIGluIHRoZSBwYWdlIGhlYWRlciwgYWZ0ZXIgdGhlIGluY2x1c2lvbiBvZiBqcXVlcnkgYW5kIGpxdWVyeSB1aS4KKn0Ke2NnanNfcmVxdWlyZSBjc3NmaWxlPSdsaWIvZnVsbGNhbGVuZGFyL2Z1bGxjYWxlbmRhci5taW4uY3NzJ30Ke2NnanNfcmVxdWlyZSBqc2ZpbGU9J2xpYi9mdWxsY2FsZW5kYXIvbGliL21vbWVudC5taW4uanMnfQp7Y2dqc19yZXF1aXJlIGpzZmlsZT0nbGliL2Z1bGxjYWxlbmRhci9mdWxsY2FsZW5kYXIuanMnfQp7Y2dqc19hZGQgbm9taW5pZnk9MX0Ke21vZHVsZV9hY3Rpb25fdXJsIGFjdGlvbj1hamF4X2ZldGNoZXZlbnRzIGZvcmFqYXg9MSBhc3NpZ249J2ZldGNoX3VybCd9CnskYWN0aW9uaWQ9J2NudG50MDEnfQpmdW5jdGlvbiBlbnRpdHlfZGVjb2RlKGVuY29kZWQpIHsKICAgcmV0dXJuICQoJzx0ZXh0YXJlYS8+JykuaHRtbChlbmNvZGVkKS50ZXh0KCk7Cn0KJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICB2YXIgX2hvbGlkYXlzID0gbnVsbDsKICB2YXIgZGF0ZVN0cmluZ3MgPSB7JGRhdGVzdHJpbmdzanNvbn07CiAgJC5hamF4KHsKICAgICB1cmw6ICd7bW9kdWxlX2FjdGlvbl91cmwgYWN0aW9uPWFqYXhfZmV0Y2hob2xpZGF5cyBmb3JhamF4PTF9JwogIH0pLmRvbmUoZnVuY3Rpb24oZGF0YSl7CiAgICAgaWYoIHR5cGVvZiBkYXRhICE9ICd1bmRlZmluZWQnICYmIGRhdGEgIT0gbnVsbCAmJiBkYXRhLmxlbmd0aCA+IDAgKSB7CiAgICAgICAgX2hvbGlkYXlzID0gZGF0YTsKICAgICB9CgogICAkKCcjZnVsbGNhbGVuZGFyJykuZnVsbENhbGVuZGFyKHsKICAgICBkYXlSZW5kZXI6IGZ1bmN0aW9uKCBkYXRlLCBjZWxsICkgewogICAgICAgLy8gZ2V0IGhvbGlkYXkgZXZlbnRzIGZvciB0b2RheS4KICAgICAgIGlmKCB0eXBlb2YgX2hvbGlkYXlzID09ICdzdHJpbmcnICkgcmV0dXJuOwogICAgICAgaWYoICFfaG9saWRheXMgfHwgISBfaG9saWRheXMgaW5zdGFuY2VvZiBBcnJheSApIHJldHVybjsKICAgICAgIHZhciBfdHN0MSA9IGRhdGUuZm9ybWF0KCdZWVlZLU1NLUREJyk7CiAgICAgICBfaG9saWRheXMuZm9yRWFjaChmdW5jdGlvbihlbnRyeSl7CiAgICAgICAgICBpZiggX3RzdDEgPT0gZW50cnkuc3RhcnQgKSB7CiAgICAgICAgICAgICBjZWxsLmFkZENsYXNzKCdob2xpZGF5Jyk7CgkgICAgIGNlbGwuY3NzKCdiYWNrZ3JvdW5kQ29sb3InLCd7JGhvbGlkYXlfYmdjb2xvcn0nKS5jc3MoJ2NvbG9yJywneyRob2xpZGF5X2ZnY29sb3J9Jyk7CgkgICAgIGNlbGwuaHRtbChlbnRyeS50aXRsZSk7CgkgIH0KICAgICAgIH0pOwogICAgIH0sCiAgICAgZXZlbnRzOiB7CiAgICAgICB1cmw6ICAneyRmZXRjaF91cmx9JywKICAgICAgIHR5cGU6ICdHRVQnLAogICAgICAgZGF0YTogewogICAgICAgICAneyRhY3Rpb25pZH1zaG93Y2hpbGRyZW4nOiAxLAoJICd7JGFjdGlvbmlkfWRldGFpbHBhZ2UnOiAneyRkZXRhaWxwYWdlfScsCgkgJ3skYWN0aW9uaWR9ZXZlbnR0ZW1wbGF0ZSc6ICd7JGFjdGlvbnBhcmFtcy5ldmVudHRlbXBsYXRlfGRlZmF1bHQ6Jyd9JywKCSAneyRhY3Rpb25pZH1lZGl0cGFnZSc6ICd7JGFjdGlvbnBhcmFtcy5lZGl0cGFnZXxkZWZhdWx0OicnfScsCgkgJ3skYWN0aW9uaWR9ZWRpdGV2ZW50dGVtcGxhdGUnOiAneyRhY3Rpb25wYXJhbXMuZWRpdGV2ZW50dGVtcGxhdGV8ZGVmYXVsdDonJ30nLAogICAgICAgfSwKICAgICAgIGVycm9yOiBmdW5jdGlvbigpIHsKICAgICAgICAgYWxlcnQoJ3skbW9kLT5MYW5nKCdlcnJvcl9mZXRjaGluZ19ldmVudHMnKXxjbXNfZXNjYXBlfScpOwogICAgICAgfQogICAgIH0sCiAgICAgaGVhZGVyOiB7CiAgICAgICBsZWZ0OiAncHJldixuZXh0LHRvZGF5JywKICAgICAgIGNlbnRlcjogJ3RpdGxlJywKICAgICAgIHJpZ2h0OiAnbW9udGgsYWdlbmRhV2VlayxhZ2VuZGFEYXknCiAgICAgfSwKICAgICBkZWZhdWx0RXZlbnRNaW51dGVzOiAxNSwKICAgICBzbG90TWludXRlczogMTUsCiAgICAgYWxsRGF5VGV4dDogJ3skbW9kLT5MYW5nKCdhbGxkYXknKXxjbXNfZXNjYXBlfScsCiAgICAgZXZlbnRDb2xvcjogJ3skZGZsdF9iZ2NvbG9yfScsCiAgICAgZXZlbnRUZXh0Q29sb3I6ICd7JGRmbHRfZmdjb2xvcn0nLAogICAgIG1vbnRoTmFtZXM6IGRhdGVTdHJpbmdzLm1vbnRoTmFtZXMsCiAgICAgbW9udGhOYW1lc1Nob3J0OiBkYXRlU3RyaW5ncy5tb250aE5hbWVzU2hvcnQsCiAgICAgZGF5TmFtZXM6IGRhdGVTdHJpbmdzLmRheU5hbWVzLAogICAgIGRheU5hbWVzU2hvcnQ6IGRhdGVTdHJpbmdzLmRheU5hbWVzU2hvcnQsCiAgICAgZmlyc3REYXk6IHskZmlyc3RkYXlvZndlZWt9LAogICAgIHZpZXdzOiB7CiAgICAgICAgbW9udGg6IHsgY29sdW1uRm9ybWF0OiAnZGRkJyB9LAogICAgICAgIHdlZWs6IHsgY29sdW1uRm9ybWF0OiAnZGRkIGQvdycgfSwKICAgICAgICBkYXk6IHsgY29sdW1uRm9ybWF0OiAnZGRkZCBkL00nIH0sCiAgICAgfSwKICAgICBidXR0b25UZXh0OiB7CiAgICAgICB0b2RheTogZW50aXR5X2RlY29kZSgneyR0ZXh0X3RvZGF5fGNtc19lc2NhcGV9JyksCiAgICAgICB3ZWVrOiAneyR0ZXh0X3dlZWt8Y21zX2VzY2FwZX0nLAogICAgICAgbW9udGg6ICd7JHRleHRfbW9udGh8Y21zX2VzY2FwZX0nLAogICAgICAgZGF5OiAneyR0ZXh0X2RheXxjbXNfZXNjYXBlfScKICAgICB9LAogICAgIGV2ZW50Q2xpY2s6IGZ1bmN0aW9uKGV2ZW50LCBqc0V2ZW50LCB2aWV3KSB7CiAgICAgICAvLyB3b290LCB3ZSBjYW4gZ28gdG8gYSBkZXRhaWwgdmlldy4KICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9IGV2ZW50LmRldGFpbF91cmw7CiAgICAgfQogICB9KTsKCiAgIH0pOwp9KTsKey9jZ2pzX2FkZH0KCjxkaXYgaWQ9ImZ1bGxjYWxlbmRhciI+PC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/orig_list_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogQ0dDYWxlbmRhciBsaXN0IHZpZXcgdGVtcGxhdGUgKn0KCnsqIHRoaXMgdGVtcGxhdGUgdXNlcyBqcXVlcnkgYW5kIGFqYXggZm9yIG5hdmlnYXRpb24gKn0Ke2lmICFpc3NldCgkYWN0aW9ucGFyYW1zLmNhbF9vcmlncGFyYW1zKX0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICQoZG9jdW1lbnQpLm9uKCdjbGljaycsJ2EuY2FsZW5kYXItbmF2LCBhLmNhbGVuZGFyLWN1cicsZnVuY3Rpb24oZXYpewogICAgIC8vIHRoaXMgbG9hZHMgdGhlIGV2ZW50cyB2aWEgYWpheC4KICAgICBldi5wcmV2ZW50RGVmYXVsdCgpOwogICAgIHZhciB1cmwgPSAkKHRoaXMpLmF0dHIoJ2hyZWYnKSsnJnNob3d0ZW1wbGF0ZT1mYWxzZSc7CiAgICAgdXJsID0gdXJsLnJlcGxhY2UoL2FtcDsvZywnJyk7CiAgICAgJCh0aGlzKS5jbG9zZXN0KCcuY2FsZW5kYXItbGlzdCcpLmxvYWQodXJsKTsKICAgICByZXR1cm4gZmFsc2U7CiAgfSk7Cn0pOwo8L3NjcmlwdD4Key9pZn0KCjxkaXYgY2xhc3M9ImNhbGVuZGFyLWxpc3QiPgogIHsqIGEgaGVhZGVyICp9CiAgPGRpdiBjbGFzcz0iY2FsZW5kYXItbGlzdC1oZHIiPgogICAge2lmICRsaXN0dHlwZSA9PSAnZGF5J30KICAgICAgIDxoMz57JG1vZC0+TGFuZygnaGRyX2RheWxpc3QnKX06IHskc3RhcnRfdHN8ZGF0ZV9mb3JtYXQ6JyVkICViICVZJ308L2gzPgogICAge2Vsc2VpZiAkbGlzdHR5cGUgPT0gJ3dlZWsnfQogICAgICAgPGgzPnskc3RhcnRfdHN8ZGF0ZV9mb3JtYXQ6JyVkICViICVZJ30geyRsYW5nLnRvfSB7JGVuZF90c3xkYXRlX2Zvcm1hdDonJWQgJWIgJVknfTwvaDM+CiAgICB7ZWxzZWlmICRsaXN0dHlwZSA9PSAnbW9udGgnfQogICAgICAgPGgzPnskbW9kLT5MYW5nKCdoZHJfbW9udGhsaXN0Jyl9IHskc3RhcnRfdHN8ZGF0ZV9mb3JtYXQ6JyViICVZJ308L2gzPgogICAge2Vsc2VpZiAkbGlzdHR5cGUgPT0gJ3llYXInfQogICAgICAgPGgzPnskbW9kLT5MYW5nKCdoZHJfeWVhcmxpc3QnKX0geyR5ZWFyfTwvaDM+CiAgICB7ZWxzZWlmICRsaXN0dHlwZSA9PSAndXBjb21pbmdsaXN0J30KICAgICAgIDxoMz57JG1vZC0+TGFuZygnaGRyX3VwY29taW5nbGlzdCcpfTwvaDM+CiAgICB7ZWxzZWlmICRsaXN0dHlwZSA9PSAncGFzdGxpc3QnfQogICAgICAgPGgzPnskbW9kLT5MYW5nKCdoZHJfcGFzdGxpc3QnKX08L2gzPgogICAgey9pZn0KICA8L2Rpdj4KCiAgeyogYSBuYXZpZ2F0aW9uLCBzb21lIHZpZXdzIGRvIG5vdCBoYXZlIG5hdmlnYXRpb24gKn0KICB7aWYgJG5hdn0KICA8ZGl2IGNsYXNzPSJjYWxlbmRhci1saXN0LW5hdiI+CiAgICB7aWYgaXNzZXQoJG5hdi5wcmV2X3VybCl9CiAgICAgICA8c3BhbiBjbGFzcz0iY2FsZW5kYXItcHJldiI+PGEgY2xhc3M9ImNhbGVuZGFyLW5hdiIgaHJlZj0ieyRuYXYucHJldl91cmx9Ij57JGxhbmcucHJldn08L2E+PC9zcGFuPgogICAgey9pZn0KICAgIHtpZiBpc3NldCgkbmF2LmhvbWVfdXJsKX0KICAgICAgIDxzcGFuIGNsYXNzPSJjYWxlbmRhci1jdXIiPjxhIGNsYXNzPSJjYWxlbmRhci1jdXIiIGhyZWY9InskbmF2LmhvbWVfdXJsfSI+eyRsYW5nLnRvZGF5fTwvYT48L3NwYW4+CiAgICB7L2lmfQogICAge2lmIGlzc2V0KCRuYXYucHJldl91cmwpfQogICAgICAgPHNwYW4gY2xhc3M9ImNhbGVuZGFyLW5leHQiPjxhIGNsYXNzPSJjYWxlbmRhci1uYXYiIGhyZWY9InskbmF2Lm5leHRfdXJsfSI+eyRsYW5nLm5leHR9PC9hPjwvc3Bhbj4KICAgIHsvaWZ9CiAgPC9kaXY+CiAgey9pZn0KCiAgeyogdGhlIGV2ZW50cyB0aGVtc2VsdmVzICp9CiAge2ZvcmVhY2ggZnJvbT0kZXZlbnRzIGtleT1rZXkgaXRlbT1ldmVudH0KICAgIDxkaXYgY2xhc3M9ImNhbGVuZGFyLWV2ZW50Ij4KICAgICAge2lmICRldmVudC5mZ2NvbG9yICE9ICcnICYmICRldmVudC5iZ2NvbG9yICE9ICcnfQogICAgICAgIDxoMiBzdHlsZT0iY29sb3I6IHskZXZlbnQuZmdjb2xvcn07IGJhY2tncm91bmQtY29sb3I6IHskZXZlbnQuYmdjb2xvcn07Ij57JGV2ZW50LmV2ZW50X3RpdGxlfTwvaDI+CiAgICAgIHtlbHNlfQogICAgICAgIDxoMj57JGV2ZW50LmV2ZW50X3RpdGxlfTwvaDI+CiAgICAgIHsvaWZ9CgogICAgICB7aWYgJGV2ZW50LmV2ZW50X2RhdGVfc3RhcnQgPT0gJGV2ZW50LmV2ZW50X2RhdGVfZW5kIHx8ICRldmVudC5ldmVudF9kYXRlX2VuZCA9PSAwfQogICAgICAgIHsqIGV2ZW50IGhhcyBubyBlbmQgZGF0ZSAqfQogICAgICAgIDxkaXYgY2xhc3M9ImNhbGVuZGFyLWRhdGUtZnJvbSI+PHNwYW4gY2xhc3M9ImNhbGVuZGFyLWRhdGUtdGl0bGUiPnskbGFuZy5kYXRlfTogPC9zcGFuPnskZXZlbnQuZXZlbnRfZGF0ZV9zdGFydHxkYXRlX2Zvcm1hdDoiJXgifTwvZGl2PgogICAgICB7ZWxzZX0KICAgICAgICB7aWYgJGV2ZW50LmV2ZW50X2RhdGVfc3RhcnR8ZGF0ZV9mb3JtYXQ6IiVkJW0lWSIgPT0gJGV2ZW50LmV2ZW50X2RhdGVfZW5kfGRhdGVfZm9ybWF0OiIlZCVtJVkifQoJICAgeyogZXZlbnQgc3RhcnRzIGFuZCBlbmRzIG9uIHRoZSBzYW1lIGRheSAqfQogICAgICAgICAgIDxkaXYgY2xhc3M9ImNhbGVuZGFyLWRhdGUtZnJvbSI+PHNwYW4gY2xhc3M9ImNhbGVuZGFyLWRhdGUtdGl0bGUiPnskbGFuZy5kYXRlfTogPC9zcGFuPnskZXZlbnQuZXZlbnRfZGF0ZV9zdGFydHxkYXRlX2Zvcm1hdDoiJXggJUg6JU0ifSB7JGxhbmcudG99IHskZXZlbnQuZXZlbnRfZGF0ZV9lbmR8ZGF0ZV9mb3JtYXQ6IiVIOiVNIn08L2Rpdj4KICAgICAgICB7ZWxzZX0KCSAgIHsqIGV2ZW50IHN0YWFydHMgYW5kIGVuZHMgb24gZGlmZmVyZW50IGRhdGVzICp9CiAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FsZW5kYXItZGF0ZS1mcm9tIj48c3BhbiBjbGFzcz0iY2FsZW5kYXItZGF0ZS10aXRsZSI+eyRsYW5nLmRhdGV9OiA8L3NwYW4+eyRldmVudC5ldmVudF9kYXRlX3N0YXJ0fGRhdGVfZm9ybWF0OiIleCAlSDolTSJ9IHskbGFuZy50b30geyRldmVudC5ldmVudF9kYXRlX2VuZHxkYXRlX2Zvcm1hdDoiJXggJUg6JU0ifTwvZGl2PgogICAgICAgIHsvaWZ9CiAgICAgIHsvaWZ9CgogICAgICB7JGRldGFpbHM9JGV2ZW50LmV2ZW50X2RldGFpbHN8c3RyaXBfdGFnc3x0cmltfQogICAgICB7aWYgJGV2ZW50LmV2ZW50X3N1bW1hcnkgIT0gJycgJiYgJGRldGFpbHMgIT0gJyd9CiAgICAgICAgPGRpdiBjbGFzcz0iY2FsZW5kYXItc3VtbWFyeSI+PHNwYW4gY2xhc3M9ImNhbGVuZGFyLXN1bW1hcnktdGl0bGUiPnskbGFuZy5zdW1tYXJ5fTogPC9zcGFuPnskZXZlbnQuZXZlbnRfc3VtbWFyeX08L2Rpdj4KICAgICAgey9pZn0KICAgICAgeyogb3B0aW9uYWxseSBkaXNwbGF5IGRldGFpbCBpbmZvcm1hdGlvbgogICAgICB7aWYgJGRldGFpbHMgIT0gJyd9CiAgICAgICAgPGRpdiBjbGFzcz0iY2FsZW5kYXItZGV0YWlscyI+PHNwYW4gY2xhc3M9ImNhbGVuZGFyLWRldGFpbHMtdGl0bGUiPnskbGFuZy5kZXRhaWxzfTogPC9zcGFuPnskZXZlbnQuZXZlbnRfZGV0YWlsc308L2Rpdj4KICAgICAgey9pZn0KICAgICAgKn0KICAgICAgPGEgaHJlZj0ieyRldmVudC51cmx9Ij57JG1vZC0+TGFuZygnY2FsX21vcmUnKX08L2E+CiAgICA8L2Rpdj4KICB7L2ZvcmVhY2h9CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/orig_myevents_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogbXlldmVudHMgdGVtcGxhdGUgKn0KPGRpdiBpZD0iY2djYWxfbXlldmVudHNfbGlzdCI+CntpZiBpc3NldCgkcmVjb3Jkcyl9Cjx0YWJsZSBjbGFzcz0idGFibGUiPgogIDx0aGVhZD4KICAgPHRyPgogICAgPHRoPnskbW9kLT5MYW5nKCdjYWxfaWQnKX08L3RoPgogICAgPHRoPnskbW9kLT5MYW5nKCdjYWxfdGl0bGUnKX08L3RoPgogICAgPHRoPnskbW9kLT5MYW5nKCdzdGFydF9kYXRlJyl9PC90aD4KICAgIDx0aD57JG1vZC0+TGFuZygnZW5kX2RhdGUnKX08L3RoPgogICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+PC90aD4KICAgIDx0aCBjbGFzcz0icGFnZWljb24iPjwvdGg+CiAgIDwvdHI+CiAgPC90aGVhZD4KICA8dGJvZHk+CiAge2ZvcmVhY2ggZnJvbT0kcmVjb3JkcyBpdGVtPSdldmVudCd9CiAgICA8dHI+CiAgICAgIDx0ZD57JGV2ZW50LmV2ZW50X2lkfTwvdGQ+CiAgICAgIDx0ZD57JGV2ZW50LmV2ZW50X3RpdGxlfHN1bW1hcml6ZTo4MH08L3RkPgogICAgICA8dGQ+eyRldmVudC5ldmVudF9kYXRlX3N0YXJ0fGNtc19kYXRlX2Zvcm1hdH08L3RkPgogICAgICA8dGQ+eyRldmVudC5ldmVudF9kYXRlX2VuZHxjbXNfZGF0ZV9mb3JtYXR9PC90ZD4KICAgICAgPHRkPjxhIGhyZWY9InskZXZlbnQuZWRpdF91cmx9Ij57JG1vZC0+TGFuZygnY2FsX2VkaXQnKX08L3RkPgogICAgICA8dGQ+PGEgaHJlZj0ieyRldmVudC5kZWxldGVfdXJsfSI+eyRtb2QtPkxhbmcoJ2NhbF9kZWxldGUnKX08L3RkPgogICAgPC90cj4KICB7L2ZvcmVhY2h9CiAgPC90Ym9keT4KPC90YWJsZT4Key9pZn0Ke2lmIGlzc2V0KCRhZGRfZXZlbnRfdXJsKX0KPGEgY2xhc3M9ImxpbmsiIGhyZWY9InskYWRkX2V2ZW50X3VybH0iPkFkZCBOZXcgRXZlbnQ8L2E+Cjxici8+CnsvaWZ9CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/orig_searchresult_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogb3JpZ2luYWwgc2VhcmNoIHJlc3VsdCB0ZW1wbGF0ZSAqfQoKPGgzPnskbW9kLT5MYW5nKCdzZWFyY2hfcmVzdWx0cycpfTwvaDM+CjxwPnskbW9kLT5MYW5nKCdzZWFyY2hfd29yZHMnKX06Jm5ic3A7eyRzZWFyY2hfdGV4dH08L3A+CjxwPnskbW9kLT5MYW5nKCdzdGFydF9kYXRlJyl9OiZuYnNwO3skc2VhcmNoX3N0YXJ0X2RhdGV8Y21zX2RhdGVfZm9ybWF0fTwvcD4KPHA+eyRtb2QtPkxhbmcoJ2VuZF9kYXRlJyl9OiZuYnNwO3skc2VhcmNoX2VuZF9kYXRlfGNtc19kYXRlX2Zvcm1hdH08L3A+CjxwPnskbW9kLT5MYW5nKCdjYXRlZ29yeScpfTombmJzcDt7aWYgJHNlYXJjaF9jYXRlZ29yeSA9PSAnLTEnfXskbW9kLT5MYW5nKCdjYWxfYW55X2NhdGVnb3J5Jyl9e2Vsc2V9eyRtb2QtPkdldENhdGVnb3J5TmFtZSgkc2VhcmNoX2NhdGVnb3J5KX17L2lmfTwvcD4Ke2lmICFpc3NldCgkZXZlbnRzKX0KICB7JG1vZC0+TGFuZygnbm9fcmVzdWx0c19mb3VuZCcpfQp7ZWxzZX0KPGJyLz4KCnsqIHBhZ2luYXRpb24gc3R1ZmYgKn0Ke2lmIGlzc2V0KCRmaXJzdHBhZ2VfdXJsKSB8fCBpc3NldCgkbGFzdHBhZ2VfdXJsKX0KPGRpdiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+CiAge2lmIGlzc2V0KCRmaXJzdHBhZ2VfdXJsKX0KICAgIDxhIGhyZWY9InskZmlyc3RwYWdlX3VybH0iPnskbW9kLT5MYW5nKCdmaXJzdF9wYWdlJyl9PC9hPiZuYnNwOwogICAgPGEgaHJlZj0ieyRwcmV2cGFnZV91cmx9Ij57JG1vZC0+TGFuZygncHJldl9wYWdlJyl9PC9hPiZuYnNwOwogIHsvaWZ9CiAgeyRtb2QtPkxhbmcoJ3BhZ2Vfb2YnLCRwYWdlbnVtLCRudW1wYWdlcyl9CiAge2lmIGlzc2V0KCRsYXN0cGFnZV91cmwpfQogICAgJm5ic3A7PGEgaHJlZj0ieyRuZXh0cGFnZV91cmx9Ij57JG1vZC0+TGFuZygnbmV4dF9wYWdlJyl9PC9hPgogICAgJm5ic3A7PGEgaHJlZj0ieyRsYXN0cGFnZV91cmx9Ij57JG1vZC0+TGFuZygnbGFzdF9wYWdlJyl9PC9hPgogIHsvaWZ9CjwvZGl2Pgp7L2lmfQoKeyogZGlzcGxheSB0aGUgb3V0cHV0ICp9Cntmb3JlYWNoIGZyb209JGV2ZW50cyBrZXk9a2V5IGl0ZW09ZXZlbnR9Cgk8ZGl2IGNsYXNzPSJjYWxlbmRhci1ldmVudCI+Cgk8aDQ+eyRldmVudC5ldmVudF90aXRsZX08L2g0PgoKCXthc3NpZ24gdmFyPW1vbnRoX251bWJlciB2YWx1ZT0kZXZlbnQuZXZlbnRfZGF0ZV9zdGFydHxkYXRlX2Zvcm1hdDoiJW0ifQoJe2Fzc2lnbiB2YXI9ZW5kX21vbnRoX251bWJlciB2YWx1ZT0kZXZlbnQuZXZlbnRfZGF0ZV9lbmR8ZGF0ZV9mb3JtYXQ6IiVtIn0KCXtpZiAkZXZlbnQuZXZlbnRfZGF0ZV9zdGFydCA9PSAkZXZlbnQuZXZlbnRfZGF0ZV9lbmQgfHwgJGV2ZW50LmV2ZW50X2RhdGVfZW5kID09IDB9Cgk8ZGl2IGNsYXNzPSJjYWxlbmRhci1kYXRlLWZyb20iPjxzcGFuIGNsYXNzPSJjYWxlbmRhci1kYXRlLXRpdGxlIj57JGxhbmcuZGF0ZX06IDwvc3Bhbj57JGV2ZW50LmV2ZW50X2RhdGVfc3RhcnR8ZGF0ZV9mb3JtYXQ6IiVlIn0geyRtb250aF9uYW1lc1skbW9udGhfbnVtYmVyXX0geyRldmVudC5ldmVudF9kYXRlX3N0YXJ0fGRhdGVfZm9ybWF0OiIlWSJ9PC9kaXY+Cgl7ZWxzZX0KCXtpZiAkZXZlbnQuZXZlbnRfZGF0ZV9zdGFydHxkYXRlX2Zvcm1hdDoiJWQlbSVZIiA9PSAkZXZlbnQuZXZlbnRfZGF0ZV9lbmR8ZGF0ZV9mb3JtYXQ6IiVkJW0lWSJ9Cgk8ZGl2IGNsYXNzPSJjYWxlbmRhci1kYXRlLWZyb20iPjxzcGFuIGNsYXNzPSJjYWxlbmRhci1kYXRlLXRpdGxlIj57JGxhbmcuZGF0ZX06IDwvc3Bhbj57JGV2ZW50LmV2ZW50X2RhdGVfc3RhcnR8ZGF0ZV9mb3JtYXQ6IiVlIn0geyRtb250aF9uYW1lc1skbW9udGhfbnVtYmVyXX0geyRldmVudC5ldmVudF9kYXRlX3N0YXJ0fGRhdGVfZm9ybWF0OiIlWSAlSDolTSJ9IHskbGFuZy50b30geyRldmVudC5ldmVudF9kYXRlX2VuZHxkYXRlX2Zvcm1hdDoiJUg6JU0ifTwvZGl2PgoJe2Vsc2V9Cgk8ZGl2IGNsYXNzPSJjYWxlbmRhci1kYXRlLWZyb20iPjxzcGFuIGNsYXNzPSJjYWxlbmRhci1kYXRlLXRpdGxlIj57JGxhbmcuZGF0ZX06IDwvc3Bhbj57JGV2ZW50LmV2ZW50X2RhdGVfc3RhcnR8ZGF0ZV9mb3JtYXQ6IiVlIn0geyRtb250aF9uYW1lc1skbW9udGhfbnVtYmVyXX0geyRldmVudC5ldmVudF9kYXRlX3N0YXJ0fGRhdGVfZm9ybWF0OiIlWSAlSDolTSJ9IHskbGFuZy50b30geyRldmVudC5ldmVudF9kYXRlX2VuZHxkYXRlX2Zvcm1hdDoiJWQifSB7JG1vbnRoX25hbWVzWyRlbmRfbW9udGhfbnVtYmVyXX0geyRldmVudC5ldmVudF9kYXRlX2VuZHxkYXRlX2Zvcm1hdDoiJVkgJUg6JU0ifTwvZGl2PgoJey9pZn0KCXsvaWZ9Cgl7aWYgJGV2ZW50LmV2ZW50X3N1bW1hcnkgIT0iIiAmJiAoJGRldGFpbCAhPSAxIHx8ICgkZXZlbnQuZXZlbnRfZGV0YWlscyA9PSIiIHx8ICAkZXZlbnQuZXZlbnRfZGV0YWlscyA9PSAiPGJyIC8+IikpfQoJCTxkaXYgY2xhc3M9ImNhbGVuZGFyLXN1bW1hcnkiPjxzcGFuIGNsYXNzPSJjYWxlbmRhci1zdW1tYXJ5LXRpdGxlIj57JGxhbmcuc3VtbWFyeX06IDwvc3Bhbj57JGV2ZW50LmV2ZW50X3N1bW1hcnl9PC9kaXY+Cgl7L2lmfQoJeyogb3B0aW9uYWxseSBkaXNwbGF5IGRldGFpbCBpbmZvcm1hdGlvbiAKCQl7aWYgJGV2ZW50LmV2ZW50X2RldGFpbHMgIT0iIiAmJiAkZXZlbnQuZXZlbnRfZGV0YWlscyAhPSAiPGJyIC8+In0KCQk8ZGl2IGNsYXNzPSJjYWxlbmRhci1kZXRhaWxzIj48c3BhbiBjbGFzcz0iY2FsZW5kYXItZGV0YWlscy10aXRsZSI+eyRsYW5nLmRldGFpbHN9OiA8L3NwYW4+eyRldmVudC5ldmVudF9kZXRhaWxzfTwvZGl2PgoJCXsvaWZ9CgkqfQoJPGEgaHJlZj0ieyRldmVudC51cmx9Ij57JG1vZC0+TGFuZygnY2FsX21vcmUnKX08L2E+CgoJPC9kaXY+CnsvZm9yZWFjaH0Key9pZn0=]]></data>
	</file>
	<file>
	  <filename>/templates/orig_search_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogc2VhcmNoIGZvcm0gdGVtcGxhdGUgKn0KPGRpdiBpZD0iY2djYWxfc2VhcmNoZm9ybSI+CnskZm9ybXN0YXJ0fQogIDxkaXYgY2xhc3M9InJvdyI+CiAgICA8ZGl2IHN0eWxlPSJ3aWR0aDogNDAlOyBmbG9hdDogbGVmdDsgdGV4dC1hbGlnbjogcmlnaHQ7Ij4KICAgICAgeyRtb2QtPkxhbmcoJ3RleHQnKX06CiAgICA8L2Rpdj4KICAgIDxkaXYgc3R5bGU9IndpZHRoOiA0MCU7IGZsb2F0OiBsZWZ0OyI+CiAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfWNhbF9zZWFyY2hfdGV4dCIgdmFsdWU9Inskc2VhcmNoX3RleHR9IiBzaXplPSI1MCIvPgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9InJvdyI+CiAgICA8ZGl2IHN0eWxlPSJ3aWR0aDogNDAlOyBmbG9hdDogbGVmdDsgdGV4dC1hbGlnbjogcmlnaHQ7Ij4KICAgICAgeyRtb2QtPkxhbmcoJ3NlYXJjaF90eXBlJyl9OgogICAgPC9kaXY+CiAgICA8ZGl2IHN0eWxlPSJ3aWR0aDogNDAlOyBmbG9hdDogbGVmdDsiPgogICAgICB7Y2FwdHVyZSBhc3NpZ249J3RtcCd9eyRhY3Rpb25pZH1jYWxfc2VhcmNoX3R5cGV7L2NhcHR1cmV9CiAgICAgIDxzZWxlY3QgbmFtZT0ieyR0bXB9Ij4KICAgICAgICA8b3B0aW9uIHZhbHVlPSJvciIgbGFiZWw9InskbW9kLT5MYW5nKCdzZWFyY2hfYW55Jyl9Ij57JG1vZC0+TGFuZygnc2VhcmNoX2FueScpfTwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdmFsdWU9ImFuZCIgbGFiZWw9InskbW9kLT5MYW5nKCdzZWFyY2hfYWxsJyl9Ij57JG1vZC0+TGFuZygnc2VhcmNoX2FsbCcpfTwvb3B0aW9uPgogICAgICA8L3NlbGVjdD4KICAgIDwvZGl2PgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgPGRpdiBzdHlsZT0id2lkdGg6IDQwJTsgZmxvYXQ6IGxlZnQ7IHRleHQtYWxpZ246IHJpZ2h0OyI+CiAgICAgIHskbW9kLT5MYW5nKCdzdGFydF9kYXRlJyl9OgogICAgPC9kaXY+CiAgICA8ZGl2IHN0eWxlPSJ3aWR0aDogNDAlOyBmbG9hdDogbGVmdDsiPgogICAgICB7Y2FwdHVyZSBhc3NpZ249J3RtcCd9eyRhY3Rpb25pZH1jYWxfc2VhcmNoX3N0YXJ0X2RhdGVfey9jYXB0dXJlfQogICAgICB7aHRtbF9zZWxlY3RfZGF0ZSBwcmVmaXg9JHRtcCB0aW1lPSRzZWFyY2hfc3RhcnRfZGF0ZSBzdGFydF95ZWFyPSctMicgZW5kX3llYXI9JysyJ30KICAgICAgeyoge2h0bWxfc2VsZWN0X3RpbWUgcHJlZml4PSR0bXAgdGltZT0kc2VhcmNoX3N0YXJ0X2RhdGUgZGlzcGxheV9zZWNvbmRzPTB9ICp9CiAgICA8L2Rpdj4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0icm93Ij4KICAgIDxkaXYgc3R5bGU9IndpZHRoOiA0MCU7IGZsb2F0OiBsZWZ0OyB0ZXh0LWFsaWduOiByaWdodDsiPgogICAgICB7JG1vZC0+TGFuZygnZW5kX2RhdGUnKX06CiAgICA8L2Rpdj4KICAgIDxkaXYgc3R5bGU9IndpZHRoOiA0MCU7IGZsb2F0OiBsZWZ0OyI+CiAgICAgIHtjYXB0dXJlIGFzc2lnbj0ndG1wJ317JGFjdGlvbmlkfWNhbF9zZWFyY2hfZW5kX2RhdGVfey9jYXB0dXJlfQogICAgICB7aHRtbF9zZWxlY3RfZGF0ZSBwcmVmaXg9JHRtcCB0aW1lPSRzZWFyY2hfZW5kX2RhdGUgc3RhcnRfeWVhcj0nLTInIGVuZF95ZWFyPScrMid9CiAgICAgIHsqIHtodG1sX3NlbGVjdF90aW1lIHByZWZpeD0kdG1wIHRpbWU9JHNlYXJjaF9lbmRfZGF0ZSBkaXNwbGF5X3NlY29uZHM9MH0gKn0KICAgIDwvZGl2PgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgPGRpdiBzdHlsZT0id2lkdGg6IDQwJTsgZmxvYXQ6IGxlZnQ7IHRleHQtYWxpZ246IHJpZ2h0OyI+CiAgICAgIHskbW9kLT5MYW5nKCdjYXRlZ29yeScpfToKICAgIDwvZGl2PgogICAgPGRpdiBzdHlsZT0id2lkdGg6IDQwJTsgZmxvYXQ6IGxlZnQ7Ij4KICAgICAgPHNlbGVjdCBuYW1lPSJ7JGFjdGlvbmlkfWNhbF9zZWFyY2hfY2F0ZWdvcnkiPgogICAgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kbGlzdF9jYXRlZ29yaWVzIHNlbGVjdGVkPSRzZWFyY2hfY2F0ZWdvcnl9CiAgICAgIDwvc2VsZWN0PgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9InJvdyI+CiAgICA8ZGl2IHN0eWxlPSJ3aWR0aDogNDAlOyBmbG9hdDogbGVmdDsgdGV4dC1hbGlnbjogcmlnaHQ7Ij4mbmJzcDs8L2Rpdj4KICAgIDxkaXYgc3R5bGU9IndpZHRoOiA0MCU7IGZsb2F0OiBsZWZ0OyI+CiAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9Y2FsX3NlYXJjaF9zdWJtaXQiIHZhbHVlPSJ7JG1vZC0+TGFuZygnc2VhcmNoJyl9Ii8+CiAgICA8L2Rpdj4KICA8L2Rpdj4KCnskZm9ybWVuZH0KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/orig_upcominglist_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iY2FsLXVwY29taW5nbGlzdCI+CntpZiBpc3NldCgkcGFzdGl0ZW1zKSAmJiAkcGFzdGl0ZW1zID09IDF9CjxoMT57JGxhbmcucGFzdF9ldmVudHN9PC9oMT4Ke2Vsc2V9CjxoMT57JGxhbmcudXBjb21pbmdfZXZlbnRzfTwvaDE+CnsvaWZ9Cgp7aWYgaXNzZXQoJG5hdmlnYXRpb24pfQp7aWYgaXNzZXQoJG5hdmlnYXRpb24ucHJldil9PHNwYW4gY2xhc3M9ImNhbGVuZGFyLXByZXYiPjxhIGhyZWY9InskbmF2aWdhdGlvbi5wcmV2fSI+eyRsYW5nLnByZXZ9PC9hPjwvc3Bhbj57L2lmfSAmbmJzcDsgJm5ic3A7e2lmIGlzc2V0KCRuYXZpZ2F0aW9uLm5leHQpfTxzcGFuIGNsYXNzPSJjYWxlbmRhci1uZXh0Ij48YSBocmVmPSJ7JG5hdmlnYXRpb24ubmV4dH0iPnskbGFuZy5uZXh0fTwvYT48L3NwYW4+ey9pZn0Key9pZn0KCgp7Zm9yZWFjaCBmcm9tPSRldmVudHMga2V5PWtleSBpdGVtPWV2ZW50fQoJPGRpdiBjbGFzcz0iY2FsZW5kYXItZXZlbnQiPgoJPGgyPnskZXZlbnQuZXZlbnRfdGl0bGV9PC9oMj4KCgl7aWYgJGV2ZW50LmV2ZW50X2RhdGVfc3RhcnQgPT0gJGV2ZW50LmV2ZW50X2RhdGVfZW5kIHx8ICRldmVudC5ldmVudF9kYXRlX2VuZCA9PSAwfQoJPGRpdiBjbGFzcz0iY2FsZW5kYXItZGF0ZS1mcm9tIj48c3BhbiBjbGFzcz0iY2FsZW5kYXItZGF0ZS10aXRsZSI+eyRsYW5nLmRhdGV9OiA8L3NwYW4+eyRldmVudC5ldmVudF9kYXRlX3N0YXJ0fGRhdGVfZm9ybWF0OiclZSAlQiAlWSd9IDwvZGl2PgoJe2Vsc2V9Cgl7aWYgJGV2ZW50LmV2ZW50X2RhdGVfc3RhcnR8ZGF0ZV9mb3JtYXQ6IiVkJW0lWSIgPT0gJGV2ZW50LmV2ZW50X2RhdGVfZW5kfGRhdGVfZm9ybWF0OiIlZCVtJVkifQoJPGRpdiBjbGFzcz0iY2FsZW5kYXItZGF0ZS1mcm9tIj48c3BhbiBjbGFzcz0iY2FsZW5kYXItZGF0ZS10aXRsZSI+eyRsYW5nLmRhdGV9OiA8L3NwYW4+eyRldmVudC5ldmVudF9kYXRlX3N0YXJ0fGRhdGVfZm9ybWF0OiclZSAlQiAlWSAlSDolTSd9IHskbGFuZy50b30geyRldmVudC5ldmVudF9kYXRlX2VuZHxkYXRlX2Zvcm1hdDoiJUg6JU0ifTwvZGl2PgoJe2Vsc2V9Cgk8ZGl2IGNsYXNzPSJjYWxlbmRhci1kYXRlLWZyb20iPjxzcGFuIGNsYXNzPSJjYWxlbmRhci1kYXRlLXRpdGxlIj57JGxhbmcuZGF0ZX06IDwvc3Bhbj57JGV2ZW50LmV2ZW50X2RhdGVfc3RhcnR8ZGF0ZV9mb3JtYXQ6JyVlICVCICVZICVIOiVNJ30geyRsYW5nLnRvfSB7JGV2ZW50LmV2ZW50X2RhdGVfZW5kfGRhdGVfZm9ybWF0OiIlZSAlQiAlWSAlSDolTSJ9PC9kaXY+Cgl7L2lmfQoJey9pZn0KCXtpZiAkZXZlbnQuZXZlbnRfc3VtbWFyeSAhPSIifQoJCTxkaXYgY2xhc3M9ImNhbGVuZGFyLXN1bW1hcnkiPjxzcGFuIGNsYXNzPSJjYWxlbmRhci1zdW1tYXJ5LXRpdGxlIj57JGxhbmcuc3VtbWFyeX06IDwvc3Bhbj57JGV2ZW50LmV2ZW50X3N1bW1hcnl9PC9kaXY+Cgl7L2lmfQoJeyogb3B0aW9uYWxseSBkaXNwbGF5IGRldGFpbCBpbmZvcm1hdGlvbgoJe2lmICRldmVudC5ldmVudF9kZXRhaWxzICE9IiJ9CgkgICAgICAgIDxkaXYgY2xhc3M9ImNhbGVuZGFyLWRldGFpbHMiPjxzcGFuIGNsYXNzPSJjYWxlbmRhci1kZXRhaWxzLXRpdGxlIj57JGxhbmcuZGV0YWlsc306IDwvc3Bhbj57JGV2ZW50LmV2ZW50X2RldGFpbHN9PC9kaXY+Cgl7L2lmfQogICAgICAgICp9Cgk8YSBocmVmPSJ7JGV2ZW50LnVybH0iPnskbW9kLT5MYW5nKCdjYWxfbW9yZScpfTwvYT4KCgk8L2Rpdj4Key9mb3JlYWNofQo8L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/settings.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2NnanNfcmVxdWlyZSBqc2ZpbGU9J2xpYi9jb2xvclBpY2tlci9qcXVlcnkuY29sb3JQaWNrZXIubWluLmpzJ30Ke2NnanNfYWRkfQokKGZ1bmN0aW9uKCl7CiAgICAkKCc6aW5wdXQuY29sb3JQaWNrZXInKS5jb2xvclBpY2tlcigpOwp9KTsKey9jZ2pzX2FkZH0KCnskc3RhcnRmb3JtfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fTwvcD4KPC9kaXY+Cgo8ZmllbGRzZXQ+CiAgPGxlZ2VuZD57JG1vZC0+TGFuZygncHJvbXB0X2dlbmVyYWxfc2V0dGluZ3MnKX06PC9sZWdlbmQ+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9mcmllbmRseW5hbWUnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfWZyaWVuZGx5bmFtZSIgc2l6ZT0iNDAiIG1heGxlbmd0aD0iMjU1IiB2YWx1ZT0ieyRmcmllbmRseW5hbWV9Ii8+CiAgICAgIDxici8+eyRtb2QtPkxhbmcoJ2luZm9fZnJpZW5kbHluYW1lJyl9CiAgICA8L3A+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskZGVmYXVsdGNhbGVuZGFycGFnZV90ZXh0fTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGRlZmF1bHRjYWxlbmRhcnBhZ2VfaW5wdXR9PC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnZGZsdF9zdGF0dXNfbmV3ZXZlbnRzJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICB7JHRtcD1bJ0QnPT4kbW9kLT5MYW5nKCdkcmFmdCcpLCAnUCc9PiRtb2QtPkxhbmcoJ3B1Ymxpc2hlZCcpXX0KICAgICAgPHNlbGVjdCBuYW1lPSJ7JGFjdGlvbmlkfWRmbHRfc3RhdHVzIj4KICAgICAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JHRtcCBzZWxlY3RlZD0kZGZsdF9zdGF0dXN9CiAgICAgIDwvc2VsZWN0PgogICAgPC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdkZmx0X3VybHByZWZpeCcpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjIwIiBuYW1lPSJ7JGFjdGlvbmlkfXVybF9wcmVmaXgiIHZhbHVlPSJ7JHVybF9wcmVmaXh9IiAvPgogICAgPC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnZGZsdF9jb2xvcnMnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIDxsYWJlbD48aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImNvbG9yUGlja2VyIiBzaXplPSI3IiBuYW1lPSJ7JGFjdGlvbmlkfWRmbHRfZmdjb2xvciIgdmFsdWU9InskZGZsdF9mZ2NvbG9yfSIgLz4geyRtb2QtPkxhbmcoJ2ZnY29sb3InKX08L2xhYmVsPgogICAgICA8bGFiZWw+PGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJjb2xvclBpY2tlciIgc2l6ZT0iNyIgbmFtZT0ieyRhY3Rpb25pZH1kZmx0X2JnY29sb3IiIHZhbHVlPSJ7JGRmbHRfYmdjb2xvcn0iIC8+IHskbW9kLT5MYW5nKCdiZ2NvbG9yJyl9PC9sYWJlbD4KICAgIDwvcD4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9pY2FsX2hvbGlkYXlzJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1pY2FsX2hvbGlkYXlzIiB2YWx1ZT0ieyRpY2FsX2hvbGlkYXlzfSIgc2l6ZT0iODAiLz4KICAgICAgPGJyLz57JG1vZC0+TGFuZygnaW5mb19pY2FsX2hvbGlkYXlzJyl9CiAgICA8L3A+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdob2xpZGF5X2NvbG9ycycpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPGxhYmVsPjxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iY29sb3JQaWNrZXIiIHNpemU9IjciIG5hbWU9InskYWN0aW9uaWR9aG9saWRheV9mZ2NvbG9yIiB2YWx1ZT0ieyRob2xpZGF5X2ZnY29sb3J9IiAvPiB7JG1vZC0+TGFuZygnZmdjb2xvcicpfTwvbGFiZWw+CiAgICAgIDxsYWJlbD48aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImNvbG9yUGlja2VyIiBzaXplPSI3IiBuYW1lPSJ7JGFjdGlvbmlkfWhvbGlkYXlfYmdjb2xvciIgdmFsdWU9InskaG9saWRheV9iZ2NvbG9yfSIgLz4geyRtb2QtPkxhbmcoJ2JnY29sb3InKX08L2xhYmVsPgogICAgPC9wPgogIDwvZGl2Pgo8L2ZpZWxkc2V0PgoKPGZpZWxkc2V0PgogIDxsZWdlbmQ+eyRtb2QtPkxhbmcoJ3Byb21wdF9lZGl0aW5nX3NldHRpbmdzJyl9OjwvbGVnZW5kPgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskdHdlbHZlaG91cnRleHR9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdHdlbHZlaG91cmlucHV0fTwvcD4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9maXJzdGRheW9md2VlaycpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPHNlbGVjdCBuYW1lPSJ7JGFjdGlvbmlkfWZpcnN0ZGF5b2Z3ZWVrIj4KICAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRkYXlvcHRpb25zIHNlbGVjdGVkPSRmaXJzdGRheW9md2Vla30KICAgICAgPC9zZWxlY3Q+CiAgICA8L3A+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfb3ZlcmxhcF9wb2xpY3knKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIDxzZWxlY3QgbmFtZT0ieyRhY3Rpb25pZH1vdmVybGFwX3BvbGljeSI+CiAgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kb3ZlcmxhcF9wb2xpY2llcyBzZWxlY3RlZD0kb3ZlcmxhcF9wb2xpY3l9CiAgICAgIDwvc2VsZWN0PgogICAgPC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X292ZXJsYXBfYWN0aW9uJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICA8c2VsZWN0IG5hbWU9InskYWN0aW9uaWR9b3ZlcmxhcF9hY3Rpb24iPgogICAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JG92ZXJsYXBfYWN0aW9ucyBzZWxlY3RlZD0kb3ZlcmxhcF9hY3Rpb259CiAgICAgIDwvc2VsZWN0PgogICAgPC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGZvcmNlY2F0dGV4dH06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRmb3JjZWNhdGlucHV0fTwvcD4KICA8L2Rpdj4KCiAge2lmIGlzc2V0KCRkZWZjYXR0ZXh0KX0KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGRlZmNhdHRleHR9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZGVmY2F0aW5wdXR9PC9wPgogIDwvZGl2PgogIHsvaWZ9CgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcGFzdHllYXJzdGV4dH06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRwYXN0eWVhcnNpbnB1dH08L3A+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskZnV0dXJleWVhcnN0ZXh0fTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGZ1dHVyZXllYXJzaW5wdXR9PC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGhpZGVzdW1tYXJ5dGV4dH06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRoaWRlc3VtbWFyeWlucHV0fTwvcD4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRoaWRlY29udGVudHRleHR9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaGlkZWNvbnRlbnRpbnB1dH08L3A+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdkZmx0X2FsbGRheWV2ZW50Jyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICB7Y2dlX3llc25vX29wdGlvbnMgcHJlZml4PSRhY3Rpb25pZCBuYW1lPSdkZmx0X2FsbGRheWV2ZW50JyBzZWxlY3RlZD0kZGZsdF9hbGxkYXlldmVudH0KICAgIDwvcD4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2RmbHRfc3RhcnR0aW1lJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICB7Y2FwdHVyZSBhc3NpZ249J3RtcCd9eyRhY3Rpb25pZH1kZmx0X3N0YXJ0dGltZV97L2NhcHR1cmV9CiAgICAgIHtodG1sX3NlbGVjdF90aW1lIHByZWZpeD0kdG1wIGRpc3BsYXlfc2Vjb25kcz1mYWxzZSB0aW1lPSRkZmx0X3N0YXJ0dGltZSBtaW51dGVfaW50ZXJ2YWw9MTV9CiAgICAgIDxici8+CiAgICAgIHskbW9kLT5MYW5nKCdpbmZvX2RmbHRfc3RhcnR0aW1lJyl9CiAgICA8L3A+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskdXBsb2FkZGlyZWN0b3J5X3RleHR9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdXBsb2FkZGlyZWN0b3J5X2lucHV0fTwvcD4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyR1cGxvYWRmaWxldHlwZXNfdGV4dH06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR1cGxvYWRmaWxldHlwZXNfaW5wdXR9PC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHVwbG9hZHVuaXF1ZV90ZXh0fTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHVwbG9hZHVuaXF1ZV9pbnB1dH08L3A+CiAgPC9kaXY+CjwvZmllbGRzZXQ+Cgp7aWYgaXNzZXQoJGdyb3VwbGlzdCl9CjxmaWVsZHNldD4KICA8bGVnZW5kPnskbW9kLT5MYW5nKCdwcm9tcHRfZmVlZGl0X3NldHRpbmdzJyl9OjwvbGVnZW5kPgoKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+bGFuZygncHJvbXB0X2ZlZWRpdF9ncm91cCcpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPHNlbGVjdCBuYW1lPSJ7JGFjdGlvbmlkfWZyb250ZW5kX2dyb3VwIj4KICAgICAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JGdyb3VwbGlzdCBzZWxlY3RlZD0kZnJvbnRlbmRfZ3JvdXB9CiAgICAgIDwvc2VsZWN0PgogICAgPC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+bGFuZygncHJvbXB0X2ZlZWRpdF9tYXN0ZXJncm91cCcpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPHNlbGVjdCBuYW1lPSJ7JGFjdGlvbmlkfWZyb250ZW5kX21hc3Rlcmdyb3VwIj4KICAgICAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JGdyb3VwbGlzdCBzZWxlY3RlZD0kZnJvbnRlbmRfbWFzdGVyZ3JvdXB9CiAgICAgIDwvc2VsZWN0PgogICAgPC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2ZlZWRpdF9wYWdlJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+CiAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfWZyb250ZW5kX3JlZGlyZWN0cGFnZSIgc2l6ZT0iNTAiIG1heGxlbmd0aD0iMjU1IiB2YWx1ZT0ieyRmcm9udGVuZF9yZWRpcmVjdHBhZ2V9Ii8+CiAgICA8L3A+CiAgPC9kaXY+CjwvZmllbGRzZXQ+CnsvaWZ9CnskZW5kZm9ybX0=]]></data>
	</file>
</module>
