<?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>Utilities</name>
	<version>1.8</version>
    <mincmsversion>2.0</mincmsversion>
	<help><![CDATA[DQo8aDMgbmFtZT0iIj5XaGF0IGRvZXMgdGhpcyBkbz88L2gzPg0KPHA+J1V0aWxpdGllcycgcHJvdmlkZXMgYSBzZXQgb2YgYWRkaXRpb25hbCBmdW5jdGlvbnMgdXNlZnVsIGFjcm9zcyBtYW55IHdlYnNpdGVzLiBQcmV2aW91c2x5IHRoZXNlIHdlcmUgUGx1Z2lucyBvciBVRFRzLjwvcD48YnI+DQo8cD5UYWdzIC8gU21hcnR5IEZ1bmN0aW9uczo8L3A+DQo8dWw+DQogICA8bGk+Y29udGVudF90eXBlPC9saT4NCiAgIDxsaT5lZGl0Q29udGVudFRhYnM8L2xpPg0KICAgPGxpPmdvb2dsZUZvbnRVcmw8L2xpPg0KICAgPGxpPmdhbGxlcnlDb3ZlcnM8L2xpPg0KICAgPGxpPnlvdVR1YmVQbGF5ZXI8L2xpPg0KICAgPGxpPmNzc01pbmlmaWVyPC9saT4NCiAgIDxsaT50d2l0dGVyRmVlZDwvbGk+DQogICA8bGk+ZmFjZWJvb2tGZWVkPC9saT4NCiAgIDxsaT5nZXRDdXN0b21HUzwvbGk+DQogICA8bGk+YWRtaW5Vc2VyPC9saT4NCiAgIDxsaT5hZG1pbkFjdGlvblVybDwvbGk+DQogICA8bGk+Z29vZ2xlTWFwPC9saT4NCjwvdWw+DQo8YnI+DQoNCg0KDQo8aDI+VGFncyAvIFNtYXJ0eSBGdW5jdGlvbnM8L2gyPg0KDQo8aDM+Y29udGVudF90eXBlPC9oMz4NCjxwPntjb250ZW50X3R5cGUgdHlwZT0nc3RyaW5nX21pbWVfdHlwZSd9PC9wPg0KPHA+U2V0cyB0aGUgcmVxdWVzdCBjb250ZW50IHR5cGUgdG8gYSB2YWxpZCBtaW1lIHR5cGUuPC9wPg0KPHA+UGFyYW1ldGVyczo8L3A+DQo8dWw+DQogICA8bGk+dHlwZSAocmVxdWlyZWQpIC0gYSB2YWxpZCBtaW1lIHR5cGUuPC9saT4NCjwvdWw+DQo8YnI+DQoNCg0KDQo8aDM+ZWRpdENvbnRlbnRUYWJzPC9oMz4NCjxwPntlZGl0Q29udGVudFRhYnMgLi4ufSBpcyBpbmNsdWRlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIGFkbWluIHRlbXBsYXRlICdtb2R1bGVfY3VzdG9tXENNU0NvbnRlbnRNYW5hZ2VyXHRlbXBsYXRlc1xhZG1pbl9lZGl0Y29udGVudC50cGwnLiBFZGl0cyBhZG1pbiBzbWFydHkgYXJyYXlzICR0YWJfbmFtZXMgJiAkdGFiX2NvbnRlbnRzX2FycmF5LCB0byBoaWRlIHNvbWUgdGFicyBhbmQgbW92ZSBzb21lIGZpZWxkcy48L3A+DQo8cD5JZGVhbGx5IHRoaXMgZnVuY3Rpb25hbGl0eSB3b3VsZCBiZSByZXBsYWNlZCBieSBDTVNNUyBjb3JlIGZ1bmN0aW9uYWxpdHkgYXQgc29tZSBwb2ludCBpbiB0aGUgZnV0dXJlLjwvcD4NCjxwPlRvIGNoYW5nZSB0aGUgZGlzcGxheWVkIEFkbWluIGZpZWxkIHRpdGxlcywganVzdCB1c2UgdGhlIGNvcmUgYWRtaW5fY3VzdG9tIGZ1bmN0aW9uYWxpdHkuIEFkZCBhIGZpbGUgaW50byAvYXNzZXRzL2FkbWluX2N1c3RvbS9sYW5nL2VuX1VTLnBocCAob3Igc2ltaWxhciAtIEM8UzxTIHYyLjIrKSB0aGF0IGNoYW5nZXMgdGhlIGxhbmd1YWdlIHN0cmluZ3MgZnJvbSAvYWRtaW4vbGFuZy9lbl9VUy5waHAuPC9wPjxicj4NCjxwPlRpcDogaWYgbW92aW5nIGluZGl2aWR1YWwgZmllbGRzIGFkZCBvbmUgYXQgYSB0aW1lIHRvIHRoZSBtb3ZlX2ZpZWxkcyBwYXJhbWV0ZXIgYW5kIHNldCBkZWJ1Zz0xIC0gbWFrZXMgaXQgZWFzaWVyIHRvIHdvcmsgb3V0IHRoZSBuZXcgcG9zaXRpb25zITwvcD4NCjxwPlBhcmFtZXRlcnM6PC9wPg0KPHVsPg0KICAgPGxpPmRlYnVnIChvcHRpb25hbCkgLSBzZXQgZGVidWc9MSB0byB0dXJuIG9uIG91dHB1dCBvZiBDb250ZW50IE1hbmFnZXIgdGFicyBhbmQgZmllbGRzLCBiZWZvcmUgYW5kIGFmdGVyIGVkaXRDb250ZW50VGFicyBjaGFuZ2VzLiBKdXN0IHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlZmluZSBjaGFuZ2VzLjwvbGk+DQogICA8bGk+bW92ZV90YWJfY29udGVudCAob3B0aW9uYWwpIC0gbW92ZXMgYWxsIGNvbnRlbnQgZnJvbSBvbmUgVGFiIHRvIGFub3RoZXIgVGFiLiBGb3JtYXQgaXMgbW92ZV90YWJfY29udGVudD0iZnJvbVRhYix0b1RhYnxmcm9tVGFiLHRvVGFiIiBlLmcuIG1vdmVfdGFiX2NvbnRlbnQ9IkxvZ2ljLE9wdGlvbnN8UGVybWlzc2lvbnMsT3B0aW9ucyIgPC9saT4NCiAgIDxsaT5tb3ZlX2ZpZWxkcyAob3B0aW9uYWwpIC0gbW92ZXMgYSBzaW5nbGUgZmllbGQgZnJvbSBvbmUgVGFiIC8gUG9zaXRpb24gdG8gYW5vdGhlciBUYWIgLyBQb3NpdGlvbi4gRm9ybWF0IGlzIG1vdmVfZmllbGRzPSJmcm9tVGFiLGZyb21Qb3NpdGlvbix0b1RhYix0b1Bvc2l0aW9ufGZyb21UYWIsZnJvbVBvc2l0aW9uLHRvVGFiLHRvUG9zaXRpb24iIGUuZy4gbW92ZV9maWVsZHM9Ik5hdmlnYXRpb24sMCxNYWluLDB8J05hdmlnYXRpb24nLDEsJ01haW4nLDEiIDwvbGk+DQogICA8bGk+cmVuYW1lX3RhYiAob3B0aW9uYWwpIC0ganVzdCByZW5hbWVzIG9uZSBvciBtb3JlIHRhYnMuIEZvcm1hdCByZW5hbWVfdGFiPSJmcm9tVGFiLHRvVGFifGZyb21UYWIsdG9UYWIiIGUuZy4gcmVuYW1lX3RhYj0iTmF2aWdhdGlvbixNZW51Ii4gWWVzIC0gSSBrbm93IHRoZXJlIGNhbiBiZSBhY2hpZXZlZCB0aHJvdWdoIHRoZSBtb2R1bGVfY3VzdG9tL2xhbmcgZmlsZXMgLSBpdCBqdXN0IHNlZW1lZCBtb3JlIGNvbnNpc3RlbnQgdG8gbWVzcyB3aXRoIHRhYnMvZmllbGRzIGFsbCBpbiB0aGUgb25lIHBsYWNlITwvbGk+DQo8L3VsPg0KPGJyPg0KDQoNCg0KPGgzPmdvb2dsZUZvbnRVcmw8L2gzPg0KPHA+e2dvb2dsZUZvbnRVcmx9IHJldHVybnMgdGhlIGZ1bGwgdXJsIGZvciBpbmNsdWRpbmcgR29vZ2xlIEZvbnRzLCBlLmcuIGZvciB1c2UgaW4gVGlueU1DRSBqcyBmaWxlLjwvcD4NCjxwPkFjdHVhbCBmb250cyBhcmUgc2V0IGJ5IHRoZSBDdXN0b21HUyB2YXJpYWJsZSAnR29vZ2xlIEZvbnRzJy4gRW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGlmIHRoYXQgZmllbGQgaXMgYmxhbmsuPC9wPg0KPHA+UGFyYW1ldGVyczo8L3A+DQo8dWw+DQogICA8bGk+Y3VzdG9tZ3NfZmllbGQgKG9wdGlvbmFsKSAtIHNwZWNpZnkgYW4gYWx0ZXJuYXRpdmUgQ3VzdG9tR1MgZmllbGQgdG8gdXNlIChkZWZhdWx0OiAnR29vZ2xlIEZvbnRzJykuPC9saT4NCjwvdWw+DQoNCjxwcmU+DQpDcmVhdGUgQ3VzdG9tR1MgVGV4dGZpZWxkICdHb29nbGUgRm9udHMnLCBzZXQgaGVscCB0bzoNCmUuZy4gJ09wZW4rU2Fuc3xSb2JvdG8nIG9yICdPcGVuK1NhbnN8Um9ib3RvOndnaHRANzAwOzkwMCcgIFVzZXMgR29vZ2xlIEZvbnRzIHYyIEFQSSBhbmQgJyZkaXNwbGF5PXN3YXAnIGlzIGFkZGVkIHRvIHRoZSB1cmwNCg0KVXNlIHRoZSBmb2xsb3dpbmcgaW4gdGhlIHBhZ2UgdGVtcGxhdGU6DQp7aWYgIWVtcHR5KCRnb29nbGVGb250VXJsKX0NCiAgICAmbHQ7bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20iJmd0Ow0KICAgICZsdDtsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbSIgY3Jvc3NvcmlnaW4mZ3Q7DQogICAgJmx0O2xpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJ7JGdvb2dsZUZvbnRVcmx9IiZndDsNCnsvaWZ9DQo8L3ByZT4NCjxicj4NCg0KDQoNCjxoMz5nYWxsZXJ5Q292ZXJzPC9oMz4NCjxwPnNldHMgJGdhbGxlcnlDb3ZlcnMgYXJyYXkgY29udGFpbmluZyB0aGUgY292ZXJmaWxlICYgY292ZXJwYXRoIG9mIHRoZSBmdWxsIHNpemUgY292ZXIgaW1hZ2VzIG9mIHRoZSBnYWxsZXJpZXMgaW4gJGRpciBwYXJhbWV0ZXIgKHJlcXVpcmVkKTwvcD4NCjxwPnRoaXMgaXMgcmVxdWlyZWQgYXMgYnkgZGVmYXVsdCB0aGUgR2FsbGVyeSBtb2R1bGUgb25seSBwcm92aWRlcyBhIHByZS1wcm9jZXNzZWQgdGh1bWJuYWlsIGZvciBhbnkgZGlyZWN0b3JpZXMsIG5vdCBhIHVybCB0byB0aGUgZnVsbCBpbWFnZS4gQWxzbyBkb2Vzbid0IGhhbmRsZSBhdXRvLXJvdGF0ZSBjb3JyZWN0bHkuPC9wPg0KPHA+UGFyYW1ldGVyczo8L3A+DQo8dWw+DQogICA8bGk+IGRpciAocmVxdWlyZWQpIC0gR2FsbGVyeSBkaXJlY3RvcnkgPC9saT4NCjwvdWw+DQo8YnI+DQoNCg0KDQo8aDM+eW91VHViZVBsYXllcjwvaDM+DQo8cD57eW91VHViZVBsYXllciB2aWRlb2lkPSdKdXIxRk9fblk5OCd9IGltYmVkcyBhIFlvdVR1YmUgdmlkZW8gcGxheWVyIGluIHRoZSBwYWdlLiBSZXF1aXJlcyBCb290c3RyYXAgQ1NTLjwvcD4NCjxwPnVzZXMgIj9yZWw9MCZtb2Rlc3RicmFuZGluZz0xIiB0byBoaWRlIHJlbGF0ZWQgdmlkZW9zIGF0IGVuZCBhbmQgc2hvdyBtaW5pbWFsIFlvdVR1YmUgYnJhbmRpbmc8L3A+DQo8cD5pZnJhbWUgaXMgbm93IGFsd2F5cyByZXNwb25zaXZlIC0gaGVpZ2h0ICYgd2lkdGggcGFyYW1hdGVycyBubyBsb25nZXIgc3VwcG9ydGVkICh2MS44KTwvcD4NCjxwPklmIHRoZSAndGh1bWJuYWlsJyBvcHRpb24gaXMgdXNlZCBhbiBpbWFnZSB3aWxsIGJlIGRpc3BsYXllZCBpbmxpbmUgYW5kIHdoZW4gY2xpY2tlZCB3aWxsIHBvcHVwIGEgbW9kYWwgY29udGFpbmluZyB0aGUgWW91VHViZSBpZnJhbWUuIChyZXF1aXJlcyBhZGRpdGlvbmFsIGpzKTwvcD4NCjxwPlBhcmFtZXRlcnM6PC9wPg0KPHVsPg0KICAgPGxpPnZpZGVvaWQgIChyZXF1aXJlZCk8L2xpPg0KICAgPGxpPnN0YXJ0ICAgIChvcHRpb25hbCkgLSBiZWdpbnMgcGxheWluZyB0aGUgdmlkZW8gYXQgdGhlIGdpdmVuIG51bWJlciBvZiBzZWNvbmRzIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSB2aWRlbzwvbGk+DQogICA8bGk+Y2xhc3MgICAgKG9wdGlvbmFsKSAtIGFkZGl0aW9uYWwgY2xhc3NlcyB0byBiZSBhZGRlZCBpbnRvIHRoZSBjbGFzcyBhdHRyaWJ1dGU8L2xpPg0KICAgPGxpPmF1dG9wbGF5IChvcHRpb25hbCkgLSBzZXQgdG8gMSB0byB0dXJuIG9uIGF1dG9wbGF5PC9saT4NCiAgIDxsaT5hc3BlY3QgICAob3B0aW9uYWwpIC0gc3BlY2lmeSBhc3BlY3QgcmF0aW8gJzE2Ynk5JyAoZGVmYXVsdCkgb3IgJzRieTMnPC9saT4NCiAgIDxsaT50aHVtYm5haWwgKG9wdGlvbmFsKSAtIHdpbGwgZGlzcGxheSBhbiBpbWFnZSBpbmxpbmUsIGFuZCB3aGVuIGNsaWNrZWQgd2lsbCBwb3B1cCBhIG1vZGFsIGNvbnRhaW5pbmcgdGhlIFlvdVR1YmUgaWZyYW1lLiBVc2UgZWl0aGVyOiAnc21hbGwnLCAnbWVkaXVtJywgJ21heCcsIG9yIHRoZSB1cmwgb2YgYW4gaW1hZ2UgdG8gdXNlLjxicj4NCiAgICdzbWFsbCcgKDMyMHgxODBweCksICdtZWRpdW0nICg0ODB4MzYwcHgpIGFuZCAnbWF4JyAoMTkyMHgxMDgwcHgpIGFyZSBhbGwgWW91VHViZSBnZW5lcmF0ZWQgdGh1bWJuYWlscy4NCiAgIDxsaT5zaXplICAgICAob3B0aW9uYWwpIC0gc2V0cyB0aGUgc2l6ZSBvZiB0aGUgcG9wdXAgbW9kYWwgKHdoZW4gJ3RodW1ibmFpbCcgaXMgdXNlZCkgdXNlICdzbScsICdtZCcsICdsZycsICd4bCc8L2xpPg0KPC91bD4NCjxwPk5vdGU6IGlmIHlvdSB3aXNoIHRvIG1vZGlmeSB0aGUgdGVtcGxhdGUgY29weSAvVXRpbGl0aWVzL3RlbXBsYXRlcy95b3VUdWJlUGxheWVyX3RlbXBsYXRlLnRwbCBpbnRvIGFzc2V0cy9tb2R1bGVfY3VzdG9tL1V0aWxpdGllcy90ZW1wbGF0ZXMveW91VHViZVBsYXllcl90ZW1wbGF0ZS50cGwgYW5kIG1vZGlmeSB0aGF0IHZlcnNpb24uIChOb3QgY2hhbmdlZCBieSBtb2R1bGUgdXBncmFkZXMpLjwvcD4NCjxicj4NCg0KDQoNCjxoMz5jc3NNaW5pZmllcjwvaDM+DQo8cD5UaGlzIENNU01TIGNzc01pbmlmaWVyIHBsdWdpbiBsZXRzIGEgdXNlciBjb252ZXJ0IHRoZSBkZWZhdWx0IHtjbXNfc3R5bGVzaGVldH0gaW50byBhIG1pbmlmaWVkIGNzcyBmaWxlLjwvcD4NCjxwPlRoaXMgZnVuY3Rpb24gdGFrZXMgY3NzIGFuZCBjb21wcmVzc2VzIGl0LCByZW1vdmluZyB1bm5lY2Nlc3Nhcnkgd2hpdGVzcGFjZSwgY29sb25zLCByZW1vdmluZyB1bm5lY2Nlc3NhcnkgcHgvZW0gZGVjbGFyYXRpb25zIGV0Yy48L3A+DQo8cD5SZXBsYWNlIHRoZSBkZWZhdWx0IHtjbXNfc3R5bGVzaGVldH0gdGFnIHdpdGg6PGJyPg0KICAgPGNvZGU+e2Nzc01pbmlmaWVyIGNzcz0ie2Ntc19zdHlsZXNoZWV0IG5vbGlua3M9dHJ1ZX0ifTwvY29kZT48L3A+DQo8cD5QYXJhbWV0ZXJzOjwvcD4NCjx1bD4NCiAgIDxsaT4ocmVxdWlyZWQpIGNzcyAoc3RyaW5nKSAtIGNzcyBmaWxlbmFtZSA8L2xpPg0KICAgPGxpPihvcHRpb25hbCkgbm9taW5pZnkgKHN0cmluZykgLSBpZiBzZXQgdGhlIHVubWluaWZpZWQgY3NzIGlzIG91dHB1dCAoZm9yIGRlYnVnZ2luZyk8L2xpPg0KPC91bD4NCjxicj4NCg0KDQoNCjxoMz50d2l0dGVyRmVlZDwvaDM+DQo8cD5vdXRwdXRzIGEgVHdpdHRlciBGZWVkIChzZWU6IGh0dHBzOi8vZGV2LnR3aXR0ZXIuY29tL3dlYi9lbWJlZGRlZC10aW1lbGluZXMgZm9yIGRldGFpbHMpLjwvcD4NCjxwPkFkZCB0aGUgdGFnIHt0d2l0dGVyRmVlZH0gaW50byBhIFdpZGdldCBvciBGb290ZXIsIGV0Yy4gVXNlcyBDdXN0b21HUy5Ud2l0dGVyIGFzIGRlZmF1bHQgc2NyZWVuX25hbWUgb3IgdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnM8L3A+DQo8cD50ZXN0IHdpdGg6IHt0d2l0dGVyRmVlZCBzY3JlZW5fbmFtZT0nTm8xRmFybWVySmFrZScgd2lkdGg9NTAwIGhlaWdodD01MDAgdGhlbWU9ZGFyayBsaW5rX2NvbG9yPScjQUFBQTUyJyBib3JkZXJfY29sb3I9cmVkIGNocm9tZV9vcHRpb25zPSdub2hlYWRlciBub2Zvb3RlciBub2JvcmRlcnMgbm9zY3JvbGxiYXInfTwvcD4NCjxwPlBhcmFtZXRlcnM6PC9wPg0KPHVsPg0KICAgPGxpPihvcHRpb25hbCkgc2NyZWVuX25hbWUgKHN0cmluZykgLSB1c2VzIEN1c3RvbUdTLlR3aXR0ZXIgYXMgZGVmYXVsdCwgb3IgZS5nLiAnTm8xRmFybWVySmFrZSc8L2xpPg0KICAgPGxpPihvcHRpb25hbCkgd2lkdGggKGludCkgLSBsZWF2ZSBlbXB0eSBmb3IgcmVzcG9uc2l2ZTwvbGk+DQogICA8bGk+KG9wdGlvbmFsKSBoZWlnaHQgKGludCkgLSBkZWZhdWx0IGlzIDMwMDwvbGk+DQogICA8bGk+KG9wdGlvbmFsKSB0aGVtZSAoc3RyaW5nKSAtICdsaWdodCcgKGRlZmF1bHQpIG9yICdkYXJrPC9saT4NCiAgIDxsaT4ob3B0aW9uYWwpIGxpbmtfY29sb3IgKHN0cmluZykgLSBlLmcuICcjQUFBQTUyJyA8L2xpPg0KICAgPGxpPihvcHRpb25hbCkgYm9yZGVyX2NvbG9yIChzdHJpbmcpIC0gb3B0aW9uYWwgb3Igc2V0IGluIENTUzwvbGk+DQogICA8bGk+KG9wdGlvbmFsKSBjaHJvbWVfb3B0aW9ucyAoc3RyaW5nKSAtIDEgb3IgbW9yZSBvZiAoc3BhY2Ugc2VwYXJhdGVkKToNCiAgICAgICAgICAgICAgICAgICAgICAgICdub2hlYWRlciBub2Zvb3RlciBub2JvcmRlcnMgbm9zY3JvbGxiYXIgdHJhbnNwYXJlbnQnPC9saT4NCjwvdWw+DQo8cD5Ob3RlOiBpZiB5b3Ugd2lzaCB0byBtb2RpZnkgdGhlIHRlbXBsYXRlIGNvcHkgL1V0aWxpdGllcy90ZW1wbGF0ZXMvdHdpdHRlckZlZWRfdGVtcGxhdGUudHBsIGludG8gYXNzZXRzL21vZHVsZV9jdXN0b20vVXRpbGl0aWVzL3RlbXBsYXRlcy90d2l0dGVyRmVlZF90ZW1wbGF0ZS50cGwgYW5kIG1vZGlmeSB0aGF0IHZlcnNpb24uIChOb3QgY2hhbmdlZCBieSBtb2R1bGUgdXBncmFkZXMpLjwvcD4NCjxicj4NCg0KDQoNCjxoMz5mYWNlYm9va0ZlZWQ8L2gzPg0KPHA+b3V0cHV0cyBhIEZhY2Vib29rIFBhZ2UgRmVlZCAoc2VlOiBodHRwczovL2RldmVsb3BlcnMuZmFjZWJvb2suY29tL2RvY3MvcGx1Z2lucy9wYWdlLXBsdWdpbi8gZm9yIGRldGFpbHMpLjwvcD4NCjxwPkFkZCB0aGUgdGFnIHtmYWNlYm9va0ZlZWR9IGludG8gYSBXaWRnZXQgb3IgRm9vdGVyLCBldGMuIFVzZXMgQ3VzdG9tR1MuRmFjZWJvb2sgYXMgZGVmYXVsdCBwYWdlSWQgb3IgdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnM8L3A+DQo8cD50ZXN0IHdpdGg6IHtmYWNlYm9va0ZlZWQgcGFnZUlkPSdObzFGYXJtZXJKYWtlJyB3aWR0aD01MDAgaGVpZ2h0PTUwMCB0aGVtZT1kYXJrIGxpbmtfY29sb3I9JyNBQUFBNTInIGJvcmRlcl9jb2xvcj1yZWQgY2hyb21lX29wdGlvbnM9J25vaGVhZGVyIG5vZm9vdGVyIG5vYm9yZGVycyBub3Njcm9sbGJhcid9PC9wPg0KPHA+UGFyYW1ldGVyczo8L3A+DQo8dWw+DQogICA8bGk+d2lkdGggKG9wdGlvbmFsKSAtIFRoZSBwaXhlbCB3aWR0aCBvZiB0aGUgcGx1Z2luLiBNaW4uIGlzIDE4MCBhbmQgTWF4LiBpcyA1MDA8L2xpPg0KICAgPGxpPmhlaWdodCAob3B0aW9uYWwpIC0gVGhlIHBpeGVsIGhlaWdodCBvZiB0aGUgcGx1Z2luLiBNaW4uIGlzIDcwPC9saT4NCiAgIDxsaT5oaWRlQ292ZXIgKG9wdGlvbmFsKSAtIEhpZGUgY292ZXIgcGhvdG8gaW4gdGhlIGhlYWRlcjwvbGk+DQogICA8bGk+c2hvd0ZhY2VwaWxlIChvcHRpb25hbCkgLSBTaG93IHByb2ZpbGUgcGhvdG9zIHdoZW4gZnJpZW5kcyBsaWtlIHRoaXM8L2xpPg0KICAgPGxpPnNob3dQb3N0cyAob3B0aW9uYWwpIC0gU2hvdyBwb3N0cyBmcm9tIHRoZSBQYWdlJ3MgdGltZWxpbmU8L2xpPg0KICAgPGxpPmhpZGVDdGEgKG9wdGlvbmFsKSAtIEhpZGUgdGhlIGN1c3RvbSBjYWxsIHRvIGFjdGlvbiBidXR0b24gKGlmIGF2YWlsYWJsZSk8L2xpPg0KICAgPGxpPnNtYWxsSGVhZGVyIChvcHRpb25hbCkgLSBVc2UgdGhlIHNtYWxsIGhlYWRlciBpbnN0ZWFkPC9saT4NCiAgIDxsaT5hZGFwdENvbnRhaW5lcldpZHRoIChvcHRpb25hbCkgLSBUcnkgdG8gZml0IGluc2lkZSB0aGUgY29udGFpbmVyIHdpZHRoIC0gc2VtaS1yZXNwb25zaXZlPC9saT4NCjwvdWw+DQo8cD5Ob3RlOiBpZiB5b3Ugd2lzaCB0byBtb2RpZnkgdGhlIHRlbXBsYXRlIGNvcHkgL1V0aWxpdGllcy90ZW1wbGF0ZXMvZmFjZWJvb2tGZWVkX3RlbXBsYXRlLnRwbCBpbnRvIGFzc2V0cy9tb2R1bGVfY3VzdG9tL1V0aWxpdGllcy90ZW1wbGF0ZXMvZmFjZWJvb2tGZWVkX3RlbXBsYXRlLnRwbCBhbmQgbW9kaWZ5IHRoYXQgdmVyc2lvbi4gKE5vdCBjaGFuZ2VkIGJ5IG1vZHVsZSB1cGdyYWRlcykuPC9wPg0KPGJyPg0KDQoNCg0KPGgzPmdldEN1c3RvbUdTPC9oMz4NCjxwPlJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBDdXN0b21HUyBzZXR0aW5nLiAgV2lsbCB3b3JrIGluIGFkbWluIHBhZ2Ugd2hlbiBDdXN0b21HUyBoYXNuJ3QgYmVlbiBzZXQsIGUuZy4gZm9yIHNldHRpbmcgdGhlIFdpZGdldCBzdHlsZXMgdGhlIHNhbWUgYXMgU2VjdGlvbiBzdHlsZXMuPC9wPg0KPHA+VXNhZ2UgLSAgYWRkIHRoZSB0YWc6IHtnZXRDdXN0b21HUyBjdXN0b21nc19maWVsZD0nc2V0dGluZyBuYW1lJ308L3A+DQo8cD5QYXJhbWV0ZXJzOjwvcD4NCjx1bD4NCiAgIDxsaT5jdXN0b21nc19maWVsZCAocmVxdWlyZWQpIC0gVGhlIG5hbWUgKHdpdGggc3BhY2VzKSBvZiB0aGUgQ3VzdG9tR1MgZmllbGQgdG8gcmV0dXJuIHRoZSB2YWx1ZSBvZi48L2xpPg0KPC91bD4NCjxicj4NCg0KDQoNCjxoMz5hZG1pblVzZXI8L2gzPg0KPHA+VGVzdHMgaW4gdGhlIGZyb250IGVuZCB2aXNpdG9yIGlzIGFsc28gbG9nZ2VkIGluIHRvIHRoZSBDTVNNUyBBZG1pbi4gUmV0dXJucyB0cnVlIG9yIGZhbHNlLjwvcD4NCjxwPlVzYWdlIC0gIGFkZCB0aGUgdGFnOiB7aWYge2FkbWluVXNlcn19WWVzIC0gSVMgQURNSU4gVVNFUntlbHNlfU5PIC0gbm90IEFkbWluIFVzZXJ7L2lmfTwvcD4NCjxwPlBhcmFtZXRlcnM6PC9wPg0KPHVsPg0KICAgPGxpPnJlZGlyZWN0IChvcHRpb25hbCkgLSBub3QgcmVjb21tZW5kZWQgaW4gbW9zdCBjYXNlcy4gSWYgc2V0IGFuZCB2aXN0b3Igbm90IGxvZ2dlZCBpbiwgd2lsbCByZWRpcmVjdCB0byB0aGUgYWRtaW4gbG9naW4gcGFnZS48L2xpPg0KICAgPGxpPmFzc2lnbiAob3B0aW9uYWwpIC0gd2lsbCBhc3NpZ24gdGhlIGJvb2xlYW4gcmVzdWx0IHRvIHRoZSBnaXZlbiB2YXJpYWJsZSBuYW1lPC9saT4NCiAgIHJlZGlyZWN0DQo8L3VsPg0KPGJyPg0KDQoNCg0KPGgzPmFkbWluQWN0aW9uVXJsPC9oMz4NCjxwPkdlbmVyYXRlcyBhbiBhZG1pbiBhY3Rpb24gdXJsIGZvciB1c2Ugb24gYSBmcm9udGVuZCBwYWdlLCBidXQgb25seSBpZiB0aGUgZnJvbnQgZW5kIHZpc2l0b3IgaXMgYWxzbyBsb2dnZWQgaW4gdG8gdGhlIENNU01TIEFkbWluLiBTaW1pbGFyIHRvIHtjbXNfYWN0aW9uX3VybH0uPC9wPg0KPHA+VXNhZ2UgLSAgZS5nLiBhZGQgdGhlIHRhZzoge2FkbWluQWN0aW9uVXJsIG1vZHVsZT1DTVNDb250ZW50TWFuYWdlciBhY3Rpb249YWRtaW5fZWRpdGNvbnRlbnQgY29udGVudF9pZD0kY29udGVudF9pZH0gaW50byBhIGJ1dHRvbiBocmVmLjwvcD4NCjxwPlBhcmFtZXRlcnM6PC9wPg0KPHVsPg0KICAgPGxpPm1vZHVsZSAtIChvcHRpb25hbCkgLSBUaGUgbW9kdWxlIG5hbWUgdG8gZ2VuZXJhdGUgYSBVUkwgZm9yLiBUaGlzIHBhcmFtZXRlciBpcyBub3QgbmVjZXNzYXJ5IGlmIGdlbmVyYXRpbmcgYSBVUkwgZnJvbSB3aXRoaW4gYSBtb2R1bGUgYWN0aW9uIHRvIGFuIGFjdGlvbiB3aXRoaW4gdGhlIHNhbWUgbW9kdWxlLjwvbGk+DQogICA8bGk+YWN0aW9uIC0gKHJlcXVpcmVkKSAtIFRoZSBhY3Rpb24gbmFtZSB0byBnZW5lcmF0ZSBhIFVSTCB0by48L2xpPg0KICAgPGxpPnJldHVybmlkIC0gKG9wdGlvbmFsKSAtIFRoZSBpbnRlZ2VyIHBhZ2VpZCB0byBkaXNwbGF5IHRoZSByZXN1bHRzIG9mIHRoZSBhY3Rpb24gaW4uIFRoaXMgcGFyYW1ldGVyIGlzIG5vdCBuZWNlc3NhcnkgaWYgdGhlIGFjdGlvbiBpcyB0byBiZSBkaXNwbGF5ZWQgb24gdGhlIGN1cnJlbnQgcGFnZSwgb3IgaWYgdGhlIFVSTCBpcyB0byBhbiBhZG1pbiBhY3Rpb24gZnJvbSB3aXRoaW4gYW4gYWRtaW4gYWN0aW9uLjwvbGk+DQogICA8bGk+bWlkIC0gKG9wdGlvbmFsKSAtIFRoZSBtb2R1bGUgYWN0aW9uIGlkLiBUaGlzIGRlZmF1bHRzIHRvICJtMV8iIGZvciBhZG1pbiBhY3Rpb25zLCBhbmQgImNudG50MDEiIGZvciBmcm9udGVuZCBhY3Rpb25zLjwvbGk+DQogICA8bGk+Zm9yanMgLSAob3B0aW9uYWwpIC0gQW4gb3B0aW9uYWwgaW50ZWdlciBpbmRpY2F0aW5nIHRoYXQgdGhlIGdlbmVyYXRlZCBVUkwgc2hvdWxkIGJlIHN1aXRhYmxlIGZvciB1c2UgaW4gSmF2YVNjcmlwdC48L2xpPg0KICAgPGxpPmFzc2lnbiAtIChvcHRpb25hbCkgLSBBc3NpZ24gdGhlIG91dHB1dCBVUkwgdG8gdGhlIG5hbWVkIHNtYXJ0eSB2YXJpYWJsZS48L2xpPg0KPC91bD4NCjxicj4NCg0KDQoNCjxoMyBpZD0iZ29vZ2xlTWFwIj5nb29nbGVNYXA8L2gzPg0KPHA+Q3JlYXRlcyBhIHNpbXBsZSBHb29nbGUgTWFwIHVzaW5nIHRoZSBHb29nbGUgTWFwcyBFbWJlZCBBUEkuIFNlZTogPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9lbWJlZC9ndWlkZSI+aHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2VtYmVkL2d1aWRlPC9hPjwvcD4NCjxwPlRoaXMgaXMgYWxzbyBhIHNpbXBsZSByZXBsYWNlbWVudCBmb3IgdGhlIENHR29vZ2xlTWFwcyBtb2R1bGUuIFdvcmtzIGZpbmUgZm9yIDEgJ3BsYWNlJyBhbmQgZm9yIG1hbnkgb3RoZXIgb3B0aW9ucy48L3A+DQo8cD5Ob3RlOiByZWNvbW1lbmQgdXNpbmcgUGxhY2UgSURzIGFzIGEgc3RhYmxlIHdheSB0byB1bmlxdWVseSBpZGVudGlmeSBhIHBsYWNlLiBTZWU6IDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9leGFtcGxlcy9wbGFjZXMtcGxhY2VpZC1maW5kZXIiPmh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L2V4YW1wbGVzL3BsYWNlcy1wbGFjZWlkLWZpbmRlcjwvYT48L3A+DQo8cD5Vc2FnZSAtICBlLmcuIGFkZCB0aGUgdGFnOiB7Z29vZ2xlTWFwIGFwaWtleT1ZT1VSX0FQSV9LRVkgcT0ncGxhY2VfaWQ6Q2hJSjJkR01qTU1FZGtnUnFWcWt1WFFrajdjJ30gaW50byBhIHRlbXBsYXRlLjxicj5TZWU6IDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vZW1iZWQvZ2V0LWFwaS1rZXkiPmh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9lbWJlZC9nZXQtYXBpLWtleTwvYT4gZm9yIGhvdyB0byBnZXQgJ1lPVVJfQVBJX0tFWSc8L3A+DQo8cD5QYXJhbWV0ZXJzOjwvcD4NCjx1bD4NCiAgIDxsaT5hcGlrZXkgLSAocmVxdWlyZWQpIC0gWW91ciBHb29nbGUgaXNzdWVkIEFQSSBLZXkuPC9saT4NCiAgIDxsaT5oZWlnaHQgLSAob3B0aW9uYWwpIGRlZmF1bHQ6NTAwIC0gd2lkdGggaXMgc2V0IHRvIDEwMCUgZm9yIHJlc3BvbnNpdmUgYmVoYXZpb3VyPC9saT4NCiAgIDxsaT5tb2RlIC0gKG9wdGlvbmFsKSBkZWZhdWx0OidwbGFjZScgLSBvbmUgb2YgcGxhY2UsIHNlYXJjaCwgdmlldywgZGlyZWN0aW9ucywgb3Igc3RyZWV0dmlldy48L2xpPg0KICAgPGxpPnEgLSAob3B0aW9uYWwpIC0gdGhlIHBsYWNlIHRvIGhpZ2hsaWdodCBvbiB0aGUgbWFwLiBJdCBhY2NlcHRzIGEgbG9jYXRpb24gYXMgZWl0aGVyIGEgcGxhY2UgbmFtZSwgYWRkcmVzcywgb3IgcGxhY2UgSUQuPGJyPg0KICAgUGxhY2UgSURzIHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoIHBsYWNlX2lkOiBlLmcuIHE9J3BsYWNlX2lkOkNoSUoyZEdNak1NRWRrZ1JxVnFrdVhRa2o3YycgPC9saT4NCiAgIDxsaT56b29tIC0gKG9wdGlvbmFsKSBkZWZhdWx0OjExIC0gMCAodGhlIHdob2xlIHdvcmxkKSB0byAyMSAoaW5kaXZpZHVhbCBidWlsZGluZ3MpPC9saT4NCiAgIDxsaT5tYXB0eXBlIC0gKG9wdGlvbmFsKSBkZWZhdWx0Oidyb2FkbWFwJyAtICdyb2FkbWFwJyBvciAnc2F0ZWxsaXRlJzwvbGk+DQogICA8bGk+cGFyYW1ldGVycyAtIChvcHRpb25hbCkgLSBhbiBhcnJheSBrZXkgJiB2YWx1ZSBwYWlycyB0byBiZSBwYXNzZWQgdG8gR29vZ2xlIE1hcHMgYXBpLiBTZWUgPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9lbWJlZC9ndWlkZSI+aHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2VtYmVkL2d1aWRlPC9hPjwvbGk+DQo8L3VsPg0KPGJyPg0KDQoNCg0KPGgzIGlkPSJpbnN0YWdyYW1GZWVkIj5pbnN0YWdyYW1GZWVkPC9oMz4NCjxwPkNyZWF0ZXMgYW4gSW5zdGFncmFtIG1lZGlhIGZlZWQgb2YgdXAgdG8gdGhlIGxhc3QgMjUgaW1hZ2VzLiBVc2luZyB0aGUgSW5zdGFncmFtIEJhc2ljIERpc3BsYXkgQVBJLiBTZWU6IDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwczovL2RldmVsb3BlcnMuZmFjZWJvb2suY29tL2RvY3MvaW5zdGFncmFtLWJhc2ljLWRpc3BsYXktYXBpLyI+aHR0cHM6Ly9kZXZlbG9wZXJzLmZhY2Vib29rLmNvbS9kb2NzL2luc3RhZ3JhbS1iYXNpYy1kaXNwbGF5LWFwaS88L2E+PC9wPg0KPHA+VGhlIGFjY2VzcyB0b2tlbiBpcyB2YWxpZCBmb3IgNjAgZGF5cywgYnV0IGlzIGF1dG9tYXRpY2FsbHkgcmVnZW5lcmF0ZWQgZXZlcnkgNyBkYXlzLCB0byBrZWVwIGl0IGN1cnJlbnQuIFRoZSBtZWRpYSBkYXRhIGlzIHJlZnJlc2hlZCBob3VybHkgYW5kIGNhY2hlZCBsb2NhbGx5IHRvIGltcHJvdmUgc3BlZWQuIEl0IGlzIGFsc28gcmVjb21tZW5kZWQgdG8gdXNlIGVpdGhlciBTbWFydEltYWdlIG9yIENHU21hcnRJbWFnZSBpbiB0aGUgdGVtcGxhdGUgdG8gZ2VuZXJhdGUgbG9jYWxseSBjYWNoZWQgYW5kIG9wdGltaXNlZCB0aHVtYm5haWxzLjwvcD4NCjxwPlVzYWdlIC0gIGUuZy4gYWRkIHRoZSB0YWc6IHtpbnN0YWdyYW1GZWVkIHRlbXBsYXRlPSd5b3VyX2luc3RhZ3JhbV90ZW1wbGF0ZSd9IGludG8gYSB0ZW1wbGF0ZS48L3A+DQo8cD5QYXJhbWV0ZXJzOjwvcD4NCjx1bD4NCiAgIDxsaT50ZW1wbGF0ZSAtIChvcHRpb25hbCBidXQgcmVjb21tZW5kZWQpIC0gbmFtZSBvZiBhIERlc2lnbiBNYW5hZ2VyIHRlbXBsYXRlLiBZb3UgY2FuIGNvcHkgdGhlIGRlZmF1bHQgdGVtcGxhdGUgZnJvbSAnL1V0aWxpdGllcy90ZW1wbGF0ZXMvaW5zdGFncmFtRmVlZF90ZW1wbGF0ZS50cGwnPC9saT4NCjwvdWw+DQo8cD5UbyBnZXQgYWNjZXNzIHRvIHRoZSBJbnN0YWdyYW0gZmVlZCBkZXRhaWxzLCB5b3UgbmVlZCB0byBjb21wbGV0ZSBtdWx0aXBsZSBzdGVwcyB0byBzZXR1cCBhIEZhY2Vib29rIGZvciBEZXZlbG9wZXJzIEFwcC4gU29ycnkgdGhlcmUgYXJlIHNvIG1hbnkgc3RlcHMsIGJ1dCB0aGlzIGlzIHRoZSBiZXN0IG9wdGlvbiBJIGNvdWxkIGlkZW50aWZ5LjwvcD4NCjxwcmU+DQpSZWdpc3RlciBhIEZhY2Vib29rIERldmVsb3BlciBBcHA6DQoxLiBMb2dpbiB0byBGYWNlYm9vaywgdGhlbiBnbyB0byBGYWNlYm9vayBmb3IgRGV2ZWxvcGVyczogPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVycy5mYWNlYm9vay5jb20vYXBwcy8iPmh0dHBzOi8vZGV2ZWxvcGVycy5mYWNlYm9vay5jb20vYXBwcy88L2E+DQoyLiBDbGljayBvbiAnQ3JlYXRlIEFwcCcgYW5kIHNlbGVjdCB0aGUgb3B0aW9uICdDb25zdW1lcicgJiBDb250aW51ZQ0KMy4gU2V0IHRoZSAnQXBwIERpc3BsYXkgTmFtZScsICdBcHAgQ29udGFjdCBFbWFpbCcgdGhlbiBjbGljayAnQ3JlYXRlIEFwcCc6DQogICAg4oCiIEFwcCBEaXNwbGF5IE5hbWU6IGUuZy4gJ0NNU01TIFV0aWxpdGllcyAtIHdlYnNpdGVfbmFtZScgKGNhbm5vdCBpbmNsdWRlIEluc3RhZ3JhbSwgSW5zdGEsIEZhY2Vib29rLCBldGMsIDMyIGNoYXJhY3RlcnMgbWF4LikNCiAgICDigKIgQXBwIENvbnRhY3QgRW1haWw6IHlvdXIgRmFjZWJvb2sgb3Igb3RoZXIgZW1haWwgYWNjb3VudA0KICAgIOKAoiBEbyB5b3UgaGF2ZSBhIEJ1c2luZXNzIE1hbmFnZXIgYWNjb3VudD86IGNhbiBsZWF2ZSBlbXB0eQ0KNC4gVGhlbiAnQWRkIFByb2R1Y3RzIHRvIFlvdXIgQXBw4oCZLiBGaW5kICdJbnN0YWdyYW0gQmFzaWMgRGlzcGxheScsIGFuZCBjbGljayB0aGUgJ1NldCBVcCcgYnV0dG9uIHRvIHByb2NlZWQuDQo1LiBPbiB0aGUgbmV4dCBwYWdlLCBzY3JvbGwgZG93biB0byB0aGUgYm90dG9tIGFuZCBjbGljayB0aGUgJ0NyZWF0ZSBOZXcgQXBwJyBidXR0b24uIFRoaXMgc2hvdWxkIHRyaWdnZXIgYSBwb3AgdXAgd2luZG93LCBkb3VibGUgY2hlY2sgeW91ciAnRGlzcGxheSBOYW1lJyBhbmQgdGhlbiBjbGljayB0aGUgJ0NyZWF0ZSBBcHAnIGJ1dHRvbi4NCg0KTm93LCB5b3UgbmVlZCB0byBmaW5hbGl6ZSBzb21lIG9mIHRoZSBzZXR0aW5nczoNCjYuIFNjcm9sbCBkb3duIHRvIHRoZSBib3R0b20gb2YgdGhlIGFwcCBkYXNoYm9hcmQgdG8gJ015IFByb2R1Y3RzJyA+ICdJbnN0YWdyYW0gQmFzaWMgRGlzcGxheScgYW5kIGNsaWNrICdTZXR0aW5ncycuDQo3LiBTY3JvbGwgZG93biBhbmQgZmlsbCBmb2xsb3dpbmcgZmllbGRzIHdpdGggeW91ciB3ZWJzaXRl4oCZcyByb290IFVSTCAoaHR0cHMgcmVxdWlyZWQpOg0KICAgIOKAoiBWYWxpZCBPQXV0aCBSZWRpcmVjdCBVUklzDQogICAg4oCiIERlYXV0aG9yaXplIENhbGxiYWNrIFVSTA0KICAgIOKAoiBEYXRhIERlbGV0aW9uIFJlcXVlc3RzDQo4LiBTY3JvbGwgdG8gdGhlIHBhZ2UgYm90dG9tIHRvICdBcHAgUmV2aWV3IGZvciBJbnN0YWdyYW0gQmFzaWMgRGlzcGxheScgYW5kIGNsaWNrICdBZGQgdG8gU3VibWlzc2lvbicgZm9yIGJvdGggJ2luc3RhZ3JhbV9ncmFwaF91c2VyX3Byb2ZpbGUnIGFuZCAnaW5zdGFncmFtX2dyYXBoX3VzZXJfbWVkaWEnIHBlcm1pc3Npb25zLiBUaGVuICdTYXZlIENoYW5nZXMnLiANCjkuIFRoZW4gZmluZCB0aGUgJ1VzZXIgVG9rZW4gR2VuZXJhdG9yJyBzZWN0aW9uLCBjbGljayAnQWRkIG9yIFJlbW92ZSBJbnN0YWdyYW0gVGVzdGVycycuIA0KICAgIOKAoiBzY3JvbGwgdG8gdGhlICdJbnN0YWdyYW0gVGVzdGVycycgc2VjdGlvbiwgY2xpY2sgJ0FkZCBJbnN0YWdyYW0gVGVzdGVycycNCiAgICDigKIgYWRkIHRoZSB1c2VybmFtZSBvZiB0aGUgSW5zdGFncmFtIGFjY291bnQgeW91IHdhbnQgdG8gYWRkIHRvIHRoZSB3ZWJzaXRlLg0KDQpBdXRob3Jpc2UgSW5zdGFncmFtIGFjY2VzczoNCjEwLiBUaGVuIHlvdSAob3IgdGhlIG93bmVyIG9mIHRoYXQgSW5zdGFncmFtIGFjY291bnQpIG5lZWRzIHRvIGF1dGhvcmlzZSBhY2Nlc3M6DQogICAgQ291bGQgeW91IHBsZWFzZSBhdXRob3Jpc2UgdGhlIHdlYnNpdGUgdG8gaGF2ZSBhY2Nlc3MgdG8geW91ciBJbnN0YWdyYW0gcGhvdG9zIGFuZCBkaXNwbGF5IHRoZW0uIChJdCBjYW4gb25seSBkaXNwbGF5IHBob3RvcyAmIGNhbm5vdCBjaGFuZ2UgYW55dGhpbmcpDQogICAg4oCiIE9wZW4gYSBuZXcgd2ViIGJyb3dzZXIgYW5kIGdvIHRvIHd3dy5pbnN0YWdyYW0uY29tIGFuZCBzaWduIGludG8geW91ciBJbnN0YWdyYW0gYWNjb3VudC4gDQogICAg4oCiIE5hdmlnYXRlIHRvIChQcm9maWxlIEljb24pID4gRWRpdCBQcm9maWxlID4gQXBwcyBhbmQgV2Vic2l0ZXMgPiBUZXN0ZXIgSW52aXRlcyBhbmQgYWNjZXB0IHRoZSBpbnZpdGF0aW9uLg0KDQpHZW5lcmF0ZSBVc2VyIFRva2VuIGZvciAnVXRpbGl0aWVzJyBtb2R1bGU6DQoxMS4gT25jZSBhdXRob3Jpc2VkLCBiYWNrIGluIEZhY2Vib29rIGZvciBEZXZlbG9wZXJzID4gUHJvZHVjdHMgPiBJbnN0YWdyYW0gPiBCYXNpYyBEaXNwbGF5ID4gVXNlciBUb2tlbiBHZW5lcmF0b3IsIHRoZSBuZXdseSBhdXRob3Jpc2VkIEluc3RhZ3JhbSBhY2NvdW50IHNob3VsZCBhcHBlYXIuDQogICAg4oCiIFRoZW4gY2xpY2sgJ0dlbmVyYXRlIFRva2VuJyBidXR0b24gdG8gYXV0aG9yaXplIGFuZCBnZW5lcmF0ZSBhIGxvbmctbGl2ZWQgYWNjZXNzIHRva2VuIGZvciBJbnN0YWdyYW0gYW5kIGNvcHkgaXQuDQogICAg4oCiIFRoZW4gaW4gJ1V0aWxpdGllcycgbW9kdWxlID4gT3B0aW9ucywgcGFzdGUgdGhpcyBpbnRvIHRoZSAnTmV3IEluc3RhZ3JhbSBsb25nLWxpdmVkIGFjY2VzcyB0b2tlbicgYW5kICdVcGRhdGUgVG9rZW4uDQo8L3ByZT4NCjxicj4NCg0KDQoNCjxoMz5TdXBwb3J0PC9oMz4NCjxwPkFzIHBlciB0aGUgR1BMIGxpY2VuY2UsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMgaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0IG9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLg0KVGhlIG1vZHVsZSBhdXRob3IgaXMgbm90IG9ibGlnYXRlZCB0byBwcm92aWRlIHN1cHBvcnQgZm9yIHRoaXMgY29kZS4gSG93ZXZlciB5b3UgbWlnaHQgZ2V0IHN1cHBvcnQgdGhyb3VnaCB0aGUgZm9sbG93aW5nOjwvcD4NCjx1bD4NCiAgIDxsaT5Gb3Igc3VwcG9ydCwgZmlyc3QgPHN0cm9uZz5zZWFyY2g8L3N0cm9uZz4gdGhlIDxhIGhyZWY9Ii8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bTwvYT4sIGZvciBpc3N1ZXMgd2l0aCB0aGUgbW9kdWxlIHNpbWlsYXIgdG8gdGhvc2UgeW91IGFyZSBmaW5kaW5nLjwvbGk+DQogICA8bGk+VGhlbiwgaWYgbmVjZXNzYXJ5LCBvcGVuIGEgPHN0cm9uZz5uZXcgZm9ydW0gdG9waWM8L3N0cm9uZz4gdG8gcmVxdWVzdCBoZWxwLCB3aXRoIGEgdGhvcm91Z2ggZGVzY3JpcHRpb24gb2YgeW91ciBpc3N1ZSwgYW5kIHN0ZXBzIHRvIHJlcHJvZHVjZSBpdC48L2xpPg0KICAgPGxpPklmIHlvdSBmaW5kIGEgYnVnIHlvdSBjYW4gPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9idWcvbGlzdC8xNDIxIj5zdWJtaXQgYSBCdWcgUmVwb3J0PC9hPi48L2xpPg0KICAgPGxpPkZvciBhbnkgZ29vZCBpZGVhcyB5b3UgY2FuIDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvZmVhdHVyZV9yZXF1ZXN0L2xpc3QvMTQyMSI+c3VibWl0IGEgRmVhdHVyZSBSZXF1ZXN0PC9hPi48L2xpPg0KICAgPGxpPklmIHlvdSBmb3VuZCB0aGUgTW9kdWxlIHVzZWZ1bCAtIHNob3V0IG91dCB0byBtZSBvbiBUd2l0dGVyIDxhIGhyZWY9Ii8vdHdpdHRlci5jb20vS2l3aUNocmlzQlQiPkBLaXdpQ2hyaXNCVDwvYT48L2xpPg0KPC91bD48YnI+DQoNCg0KPGgzPkNvcHlyaWdodCAmYW1wOyBMaWNlbmNlPC9oMz4NCjxwPkNvcHlyaWdodCDCqSAyMDE5LCBDaHJpcyBUYXlsb3IgPGNocmlzIGF0IGJpbm5vdmF0aXZlIGRvdCBjbyBkb3QgdWs+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+PGJyPg0KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIEdOVSBQdWJsaWMgTGljZW5zZSB2My4gSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuIFlvdSBtYXkgb25seSB1c2UgdGhpcyBzb2Z0d2FyZSB3aGVuIHRoZXJlIGlzIGEgY2xlYXIgYW5kIG9idmlvdXMgaW5kaWNhdGlvbiBpbiB0aGUgYWRtaW4gc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIFNpbXBsZSE8L3A+PGJyPg0KPGJyPg==]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBDaHJpcyBUYXlsb3IgJmx0O2NocmlzQGJpbm5vdmF0aXZlLmNvLnVrJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuODxiciAvPjxiciAvPkNoYW5nZSBIaXN0b3J5OjxiciAvPg0KPGgzPlZlcnNpb24gMS44IC0gMDJBdWcyMzwvaDM+DQo8dWw+DQogICA8bGk+Z29vZ2xlRm9udFVybCAtIHVwZGF0ZWQgdG8gdXNlIHYyIEFQSSBhbmQgJyZkaXNwbGF5PXN3YXAnIGlzIGFkZGVkIHRvIHRoZSB1cmwuIFNob3VsZCBhbHNvIHdvcmsgZm9yIHYxIHN0eWxlIGZpZWxkIHZhbHVlICgnfCcgcmVwbGFjZWQgYnkgJyZmYW1pbHk9JykuPC9saT4NCjwvdWw+DQo8YnI+DQoNCg0KPGgzPlZlcnNpb24gMS43LjIgLSAyMUp1bjIzPC9oMz4NCjx1bD4NCiAgIDxsaT5maXggd2FybmluZyBtZXNzYWdlcyBwaHA4KyAtICgkc21hcnR5KSBtdXN0IGJlIHBhc3NlZCBieSByZWZlcmVuY2UsIHZhbHVlIGdpdmVuPC9saT4NCjwvdWw+DQo8YnI+DQoNCg0KPGgzPlZlcnNpb24gMS43LjEgLSAxNUp1bjIzPC9oMz4NCjx1bD4NCiAgIDxsaT5lZGl0Q29udGVudFRhYnMgLSBidWcgZml4ZXMgZm9yIHBocCB3YXJuaW5nICYgZXJyb3IgcmVzaWxpZW5jZTwvbGk+DQo8L3VsPg0KPGJyPg0KDQoNCjxoMz5WZXJzaW9uIDEuNyAtIDIyTWF5MjM8L2gzPg0KPHVsPg0KICAgPGxpPnlvdVR1YmVQbGF5ZXIgLSBhZGRlZCBzaXplIHBhcmFtZXRlciArIHVwZ3JhZGVkIHRvIHVzZSBCUzUuPC9saT4NCjwvdWw+DQo8YnI+DQoNCg0KPGgzPlZlcnNpb24gMS42LjEgLSAxMEphbjIzPC9oMz4NCjx1bD4NCiAgIDxsaT5pbXByb3ZlbWVudHMgdG8gZWRpdENvbnRlbnRUYWJzIHRvIG1ha2UgaXQgbW9yZSByZXNpbGllbnQgdG8gbWlzc2luZyB0YWJzICYgZmllbGRzPC9saT4NCjwvdWw+DQo8YnI+DQoNCg0KPGgzPlZlcnNpb24gMS42IC0gMzBOb3YyMjwvaDM+DQo8dWw+DQogICA8bGk+dXBkYXRlIHRvIGNzc01pbmlmaWVyIGNvZGUgLSB0aGFua3MgdG8gTWFnYWwgZm9yIHRoZSBjb2RlIGFuZCBoZWFkcyB1cCA6KTwvbGk+DQo8L3VsPg0KPGJyPg0KDQoNCjxoMz5WZXJzaW9uIDEuNSAtIDAySnVuMjE8L2gzPg0KPHVsPg0KICAgPGxpPmFkZGVkIGluc3RhZ3JhbUZlZWQgdGFnIC0gQ3JlYXRlcyBhbiBJbnN0YWdyYW0gbWVkaWEgZmVlZCBvZiB1cCB0byB0aGUgbGFzdCAyNSBpbWFnZXMuIFVzaW5nIHRoZSBJbnN0YWdyYW0gQmFzaWMgRGlzcGxheSBBUEkuPC9saT4NCiAgIDxsaT5hZGRzIGFuIGFkbWluIHBhZ2UgZm9yIFV0aWxpdGllcyBtb2R1bGU8L2xpPg0KPC91bD4NCjxicj4NCg0KDQo8aDM+VmVyc2lvbiAxLjQgLSAyMkF1ZzIwPC9oMz4NCjx1bD4NCiAgIDxsaT5hZGRlZCBnb29nbGVNYXAgdGFnIC0gYSBzaW1wbGUgcmVwbGFjZW1lbnQgZm9yIENHR29vZ2xlTWFwczwvbGk+DQo8L3VsPg0KPGJyPg0KDQoNCjxoMz5WZXJzaW9uIDEuMyAtIDE1SnVsMjA8L2gzPg0KPHVsPg0KICAgPGxpPmFkZGVkIGFkbWluQWN0aW9uVXJsIHRhZyAtIHRoYW5rcyBWZWxkZW4gOik8L2xpPg0KPC91bD4NCjxicj4NCg0KDQo8aDM+VmVyc2lvbiAxLjIgLSAwMkp1bDIwPC9oMz4NCjx1bD4NCiAgIDxsaT5hZGRlZCBhZG1pblVzZXIgdGFnIC0gdGhhbmtzIFZlbGRlbiA6KTwvbGk+DQo8L3VsPg0KPGJyPg0KDQo8aDM+VmVyc2lvbiAxLjEuMSAtIDE3SnVuMTk8L2gzPg0KPHVsPg0KICAgPGxpPm1pbm9yIGJ1ZyBmaXggaW4gaGVscDwvbGk+DQo8L3VsPg0KPGJyPg0KDQo8aDM+VmVyc2lvbiAxLjEgLSAxNE1hcjE5PC9oMz4NCjx1bD4NCiAgIDxsaT5hZGRlZCBub21pbmlmeSBwYXJhbWV0ZXI8L2xpPg0KICAgPGxpPkV4dHJhIGhlbHAgbm90ZXMgZm9yIGVkaXRDb250ZW50VGFiczwvbGk+DQo8L3VsPg0KPGJyPg0KDQo8aDM+VmVyc2lvbiAxLjAgLSAxNkZlYjE5PC9oMz4NCjx1bD4NCiAgIDxsaT5maXJzdCBwdWJsaWMgcmVsZWFzZTwvbGk+DQo8L3VsPg0KPGJyPg0KPGJyIC8+]]></about>
	<description><![CDATA[Provides a set of additional functions useful across many websites.]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQppZiAoICFkZWZpbmVkKCdDTVNfVkVSU0lPTicpICkgZXhpdDsNCg0KDQo=]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQppZiAoICFkZWZpbmVkKCdDTVNfVkVSU0lPTicpICkgZXhpdDsNCg0KDQppZiAoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpICkgeyAvLyBjb3JlIHBlcm1pc3Npb24NCiAgICR0aGlzLT5TaG93RXJyb3JzKCAkdGhpcy0+TGFuZygnbmVlZF9wZXJtaXNzaW9uJykgKTsNCiAgIHJldHVybjsNCn0NCg0KDQppZiAoIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSApICB7DQoNCiAgICBpZiAoICRwYXJhbXNbJ3N1Ym1pdCddPT0ndXBkYXRlX3Rva2VuJyApIHsNCiAgICAgICBpZiAoICFlbXB0eSgkcGFyYW1zWydpbnN0YWdyYW1fdG9rZW4nXSkgKSB7DQogICAgICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCAnaW5zdGFncmFtX3Rva2VuJywgc3RydmFsKCRwYXJhbXNbJ2luc3RhZ3JhbV90b2tlbiddKSApOw0KICAgICAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSggJ2luc3RhZ3JhbV90b2tlbl90aW1lc3RhbXAnLCB0aW1lKCkgKTsNCiAgICAgICAgJHRoaXMtPlNob3dNZXNzYWdlKCAkdGhpcy0+TGFuZygndG9rZW5fdXBkYXRlZCcpICk7IA0KDQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkdGhpcy0+U2hvd0Vycm9ycyggJHRoaXMtPkxhbmcoJ3Rva2VuX25vdF91cGRhdGVkJykgKTsgDQogICAgICAgIH0gICANCg0KICAgIH0gZWxzZWlmICggJHBhcmFtc1snc3VibWl0J109PSdjbGVhcl9tZWRpYV9jYWNoZScgKSB7DQogICAgICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCAnaW5zdGFncmFtX21lZGlhX3RpbWVzdGFtcCcsIDAgKTsgDQogICAgICAgIA0KICAgIH0NCn0NCg0KDQoNCi8vIENyZWF0ZSBBZG1pbiB0YWJzDQplY2hvICR0aGlzLT5TdGFydFRhYkhlYWRlcnMoKTsNCiAgIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigib3B0aW9ucyIsICR0aGlzLT5MYW5nKCJ0YWJfb3B0aW9ucyIpKTsNCmVjaG8gJHRoaXMtPkVuZFRhYkhlYWRlcnMoKTsNCg0KDQovLyBjcmVhdGUgVGFiIGNvbnRlbnQNCmVjaG8gJHRoaXMtPlN0YXJ0VGFiQ29udGVudCgpOw0KDQogICAgZWNobyAkdGhpcy0+U3RhcnRUYWIoIm9wdGlvbnMiKTsNCiAgICAgICAgJHRwbCA9ICRzbWFydHktPkNyZWF0ZVRlbXBsYXRlKCAkdGhpcy0+R2V0VGVtcGxhdGVSZXNvdXJjZSgnYWRtaW5fb3B0aW9ucy50cGwnKSwgbnVsbCwgbnVsbCwgJHNtYXJ0eSApOw0KICAgICAgICAvLyBjcmVhdGUgYWxsIHJlcXVpcmVkIHNtYXJ0eSB2YXJzDQogICAgICAgICR0cGwtPmFzc2lnbiggJyRtb2QnLCAkdGhpcyApOw0KICAgICAgICAkdHBsLT5hc3NpZ24oICdpbnN0YWdyYW1fdG9rZW4nLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaW5zdGFncmFtX3Rva2VuJykgKTsNCiAgICAgICAgJHRwbC0+YXNzaWduKCAnaW5zdGFncmFtX3Rva2VuX3RpbWVzdGFtcCcsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdpbnN0YWdyYW1fdG9rZW5fdGltZXN0YW1wJykgKTsNCiAgICAgICAgJHRwbC0+YXNzaWduKCAnaW5zdGFncmFtX21lZGlhX3RpbWVzdGFtcCcsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdpbnN0YWdyYW1fbWVkaWFfdGltZXN0YW1wJykgKTsNCiAgICAgICAgJGluc3RhZ3JhbSA9IG5ldyBpbnN0YWdyYW1GZWVkOw0KICAgICAgICAkdHBsLT5hc3NpZ24oICd0b2tlbl9yZWZyZXNoX3BlcmlvZCcsICRpbnN0YWdyYW0tPnRva2VuX3JlZnJlc2hfcGVyaW9kICk7DQogICAgICAgICR0cGwtPmFzc2lnbiggJ21lZGlhX3JlZnJlc2hfcGVyaW9kJywgJGluc3RhZ3JhbS0+bWVkaWFfcmVmcmVzaF9wZXJpb2QgKTsNCiAgICAgICAgJHRwbC0+ZGlzcGxheSgpOw0KICAgIGVjaG8gJHRoaXMtPkVuZFRhYigpOw0KDQplY2hvICR0aGlzLT5FbmRUYWJDb250ZW50KCk7DQoNCg0K]]></data>
	</file>
	<file>
	  <filename>/function.adminActionUrl.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCmZ1bmN0aW9uIGFkbWluQWN0aW9uVXJsKCRwYXJhbXMsICRzbWFydHkpIHsNCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vIGJhc2VkIG9uIGZ1bmN0aW9uLm15X2FkbWluX2FjdGlvbl91cmwucGhwIC0gZnJvbSBWZWxkZW4gOikNCi8vICAgICsgd2lsbCBvbmx5IGdpdmUgYSByZXN1bHQgaWYgdXNlciBpcyBsb2dnZWQgaW50byBhZG1pbg0KLy8NCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgIGlmICggIWdldF91c2VyaWQoZmFsc2UpICkgcmV0dXJuOw0KDQogICAkbW9kdWxlID0gJHNtYXJ0eS0+Z2V0VGVtcGxhdGVWYXJzKCdhY3Rpb25tb2R1bGUnKTsNCiAgIC8vJHJldHVybmlkID0gJHNtYXJ0eS0+Z2V0VGVtcGxhdGVWYXJzKCdyZXR1cm5pZCcpOw0KICAgJHJldHVybmlkID0gJyc7DQogICAkbWlkID0gJHNtYXJ0eS0+Z2V0VGVtcGxhdGVWYXJzKCdhY3Rpb25pZCcpOw0KICAgJGFjdGlvbiA9IG51bGw7DQogICAkYXNzaWduID0gbnVsbDsNCiAgICRmb3JqcyAgPSAwOw0KDQogICAkYWN0aW9ucGFybXMgPSBhcnJheSgpOw0KICAgZm9yZWFjaCggJHBhcmFtcyBhcyAka2V5ID0+ICR2YWx1ZSApIHsNCiAgICAgc3dpdGNoKCAka2V5ICkgew0KICAgICBjYXNlICdtb2R1bGUnOg0KICAgICAgICAgJG1vZHVsZSA9IHRyaW0oJHZhbHVlKTsNCiAgICAgICAgIGJyZWFrOw0KICAgICBjYXNlICdhY3Rpb24nOg0KICAgICAgICAgJGFjdGlvbiA9IHRyaW0oJHZhbHVlKTsNCiAgICAgICAgIGJyZWFrOw0KICAgICBjYXNlICdyZXR1cm5pZCc6DQogICAgICAgICAvLyRyZXR1cm5pZCA9IChpbnQpdHJpbSgkdmFsdWUpOw0KICAgICAgICAgYnJlYWs7DQogICAgIGNhc2UgJ21pZCc6DQogICAgICAgICAkbWlkID0gdHJpbSgkdmFsdWUpOw0KICAgICAgICAgYnJlYWs7DQogICAgIGNhc2UgJ2Fzc2lnbic6DQogICAgICAgICAkYXNzaWduID0gdHJpbSgkdmFsdWUpOw0KICAgICAgICAgYnJlYWs7DQogICAgIGNhc2UgJ2ZvcmpzJzoNCiAgICAgICAgICRmb3JqcyA9IDE7DQogICAgICAgICBicmVhazsNCiAgICAgZGVmYXVsdDoNCiAgICAgICAgICRhY3Rpb25wYXJtc1ska2V5XSA9ICR2YWx1ZTsNCiAgICAgICAgIGJyZWFrOw0KICAgICB9DQogICB9DQoNCg0KDQogICAvLyB2YWxpZGF0ZSBwYXJhbXMNCiAgICRnQ21zID0gQ21zQXBwOjpnZXRfaW5zdGFuY2UoKTsNCiAgIGlmKCAkbW9kdWxlID09ICcnICkgcmV0dXJuOw0KICAgaWYoICRnQ21zLT50ZXN0X3N0YXRlKENtc0FwcDo6U1RBVEVfQURNSU5fUEFHRSkgKSB7DQogICAgIGlmKCAkbWlkID09ICcnICkgJG1pZCA9ICdtMV8nOw0KICAgICBpZiggJGFjdGlvbiA9PSAnJyApICRhY3Rpb24gPSAnZGVmYXVsdGFkbWluJzsNCiAgIH0NCiAgIGVsc2UgaWYoICRnQ21zLT5pc19mcm9udGVuZF9yZXF1ZXN0KCkgKSB7DQogICAgIGlmKCAkbWlkID09ICcnICkgJG1pZCA9ICdjbnRudDAxJzsNCiAgICAgaWYoICRhY3Rpb24gPT0gJycgKSAkYWN0aW9uID0gJ2RlZmF1bHQnOw0KICAgfQ0KICAgaWYoICRhY3Rpb24gPT0gJycgKSByZXR1cm47DQoNCiAgICRvYmogPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJG1vZHVsZSk7DQogICBpZiggISRvYmogKSByZXR1cm47DQoNCiAgICR1cmwgPSAkb2JqLT5jcmVhdGVfdXJsKCRtaWQsJGFjdGlvbiwkcmV0dXJuaWQsJGFjdGlvbnBhcm1zKTsNCiAgIGlmKCAhJHVybCApIHJldHVybjsNCg0KDQogICBpZiggJGZvcmpzICkgew0KICAgICAkdXJsID0gc3RyX3JlcGxhY2UoJyZhbXA7JywnJicsJHVybCk7DQogICB9DQogICBpZiggJGFzc2lnbiApIHsNCiAgICAgJHNtYXJ0eS0+YXNzaWduKCRhc3NpZ24sJHVybCk7DQogICAgIHJldHVybjsNCiAgIH0NCiAgIHJldHVybiAkdXJsOw0KDQp9DQoNCg0K]]></data>
	</file>
	<file>
	  <filename>/function.cssMinifier.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCmZ1bmN0aW9uIGNzc01pbmlmaWVyKCRwYXJhbXMsICRzbWFydHkpIHsNCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vIGJhc2VkIG9uIFBsdWdpbiBjc3NNaW5pZmllciB2MS4wLCBieSBNYWdhbCBIZXppIEBhdXRob3IgU3RlZmZlbiBCZWNrZXINCi8vDQovLyBDcmVkaXRzIGZvciBzb21lIG9mIHRoaXMgY29kZSBnbyB0bzoNCi8vICAgIC0gTWFnYWwgSGV6aSBAYXV0aG9yIFN0ZWZmZW4gQmVja2VyIC0gY3NzTWluaWZpZXIgcGx1Z2luDQovLyAgICAtIENocmlzdGlhbiBTY2hhZWZlcjogdHdpdHRlci5jb20vZGVyU2NoZXBwLCBnaXRodWIuY29tL1NjaGVwcC9DU1MtSlMtQm9vc3Rlcg0KLy8NCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCg0KICAgJGRhdGFfZmllbGQgPSBpc3NldCgkcGFyYW1zWydjc3MnXSkgPyAkcGFyYW1zWydjc3MnXSA6ICcnOw0KICAgJGNzc0ZpbGVzID0gZXhwbG9kZSgiLCIsICRkYXRhX2ZpZWxkKTsNCiAgICRjc3NDb250ZW50cyA9ICcnOw0KICAgJGNvbmZpZyA9IFxjbXNfY29uZmlnOjpnZXRfaW5zdGFuY2UoKTsNCg0KICAgZm9yZWFjaCgkY3NzRmlsZXMgYXMgJGZpbGUpIHsNCiAgICAgICRmaWxlbmFtZSA9IGJhc2VuYW1lKCRmaWxlKTsNCg0KICAgICAgaWYgKCBpc3NldCgkcGFyYW1zWydub21pbmlmeSddKSApIHsNCiAgICAgICAgIGVjaG8gJzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IicuJGNvbmZpZ1sndG1wX2NhY2hlX2xvY2F0aW9uJ10uJy8nLiRmaWxlbmFtZS4nIiAvPic7DQoNCiAgICAgIH0gZWxzZSB7IC8vIG1pbmlmeQ0KICAgICAgICAgJGNzc0NvbnRlbnRzID0gZmlsZV9nZXRfY29udGVudHMoJGNvbmZpZ1sndG1wX2NhY2hlX2xvY2F0aW9uJ10uJy8nLiRmaWxlbmFtZSk7DQogICAgICAgICAkbWluRmlsZU5hbWUgPSAnbWluaWZpZWRfJy4kZmlsZW5hbWU7DQogICAgICAgICAkbWluRmlsZUZ1bGxQYXRoID0gJGNvbmZpZ1sndG1wX2NhY2hlX2xvY2F0aW9uJ10uJy8nLiRtaW5GaWxlTmFtZTsNCg0KICAgICAgICAgaWYgKCFmaWxlX2V4aXN0cygkbWluRmlsZUZ1bGxQYXRoKSkgew0KICAgICAgICAgICAgZmlsZV9wdXRfY29udGVudHMoJG1pbkZpbGVGdWxsUGF0aCwgbWluaWZ5Q3NzKCRjc3NDb250ZW50cykpOw0KICAgICAgICAgfQ0KICAgICAgICAgZWNobyAnPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iJy4kY29uZmlnWydwdWJsaWNfY2FjaGVfdXJsJ10uJy8nLiRtaW5GaWxlTmFtZS4nIiAvPic7DQogICAgICB9DQogICB9DQp9DQoNCg0KDQpmdW5jdGlvbiBtaW5pZnlDc3MoJGNzcykgew0KICAgLy8gc29tZSBvZiB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB0byBtaW5pbWl6ZSB0aGUgY3NzLW91dHB1dCBhcmUgZGlyZWN0bHkgdGFrZW4NCiAgIC8vIGZyb20gdGhlIGF3ZXNvbWUgQ1NTIEpTIEJvb3N0ZXI6IGh0dHBzOi8vZ2l0aHViLmNvbS9TY2hlcHAvQ1NTLUpTLUJvb3N0ZXINCiAgIC8vIGFsbCBjcmVkaXRzIHRvIENocmlzdGlhbiBTY2hhZWZlcjogaHR0cDovL3R3aXR0ZXIuY29tL2RlclNjaGVwcA0KDQogICAvLyByZW1vdmUgY29tbWVudHMNCiAgICRjc3MgPSBwcmVnX3JlcGxhY2UoJyEvXCpbXipdKlwqKyhbXi9dW14qXSpcKispKi8hJywgJycsICRjc3MpOw0KDQogICAvLyBiYWNrdXAgdmFsdWVzIHdpdGhpbiBzaW5nbGUgb3IgZG91YmxlIHF1b3Rlcw0KICAgcHJlZ19tYXRjaF9hbGwoJy8oXCdbXlwnXSo/XCd8IlteIl0qPyIpL2ltcycsICRjc3MsICRoaXQsIFBSRUdfUEFUVEVSTl9PUkRFUik7DQogICBmb3IgKCRpPTA7ICRpIDwgY291bnQoJGhpdFsxXSk7ICRpKyspIHsNCiAgICAgICRjc3MgPSBzdHJfcmVwbGFjZSgkaGl0WzFdWyRpXSwgJyMjIyMjIyMjIyMnIC4gJGkgLiAnIyMjIyMjIyMjIycsICRjc3MpOw0KICAgfQ0KDQogICAvLyByZW1vdmUgdHJhbGluZyBzZW1pY29sb24gb2Ygc2VsZWN0b3IncyBsYXN0IHByb3BlcnR5DQogICAkY3NzID0gcHJlZ19yZXBsYWNlKCcvO1tcc1xyXG5cdF0qP31bXHNcclxuXHRdKi9pbXMnLCAifVxyXG4iLCAkY3NzKTsNCiAgIC8vIHJlbW92ZSBhbnkgd2hpdGVzcGFjZSBiZXR3ZWVuIHNlbWljb2xvbiBhbmQgcHJvcGVydHktbmFtZQ0KICAgJGNzcyA9IHByZWdfcmVwbGFjZSgnLztbXHNcclxuXHRdKj8oW1xyXG5dP1teXHNcclxuXHRdKS9pbXMnLCAnOyQxJywgJGNzcyk7DQogICAvLyByZW1vdmUgYW55IHdoaXRlc3BhY2Ugc3Vycm91bmRpbmcgcHJvcGVydHktY29sb24NCiAgICRjc3MgPSBwcmVnX3JlcGxhY2UoJy9bXHNcclxuXHRdKjpbXHNcclxuXHRdKj8oW15cc1xyXG5cdF0pL2ltcycsICc6JDEnLCAkY3NzKTsNCiAgIC8vIHJlbW92ZSBhbnkgd2hpdGVzcGFjZSBzdXJyb3VuZGluZyBzZWxlY3Rvci1jb21tYQ0KICAgJGNzcyA9IHByZWdfcmVwbGFjZSgnL1tcc1xyXG5cdF0qLFtcc1xyXG5cdF0qPyhbXlxzXHJcblx0XSkvaW1zJywgJywkMScsICRjc3MpOw0KICAgLy8gcmVtb3ZlIGFueSB3aGl0ZXNwYWNlIHN1cnJvdW5kaW5nIG9wZW5pbmcgcGFyZW50aGVzaXMNCiAgICRjc3MgPSBwcmVnX3JlcGxhY2UoJy9bXHNcclxuXHRdKntbXHNcclxuXHRdKj8oW15cc1xyXG5cdF0pL2ltcycsICd7JDEnLCAkY3NzKTsNCiAgIC8vIHJlbW92ZSBhbnkgd2hpdGVzcGFjZSBiZXR3ZWVuIG51bWJlcnMgYW5kIHVuaXRzDQogICAkY3NzID0gcHJlZ19yZXBsYWNlKCcvKFtcZFwuXSspW1xzXHJcblx0XSsocHh8ZW18cHR8JSkvaW1zJywgJyQxJDInLCAkY3NzKTsNCiAgIC8vIHNob3J0ZW4gemVyby12YWx1ZXMNCiAgICRjc3MgPSBwcmVnX3JlcGxhY2UoJy8oW15cZFwuXTApKHB4fGVtfHB0fCUpL2ltcycsICckMScsICRjc3MpOw0KICAgLy8gY29uc3RyYWluIG11bHRpcGxlIHdoaXRlc3BhY2VzDQogICAkY3NzID0gcHJlZ19yZXBsYWNlKCcvXHB7WnN9Ky9pbXMnLCcgJywgJGNzcyk7DQogICAvLyByZW1vdmUgbmV3bGluZXMNCiAgICRjc3MgPSBzdHJfcmVwbGFjZShhcnJheSgiXHJcbiIsICJcciIsICJcbiIpLCAnJywgJGNzcyk7DQoNCiAgIC8vIFJlc3RvcmUgYmFja3VwcGVkIHZhbHVlcyB3aXRoaW4gc2luZ2xlIG9yIGRvdWJsZSBxdW90ZXMNCiAgIGZvciAoJGk9MDsgJGkgPCBjb3VudCgkaGl0WzFdKTsgJGkrKykgew0KICAgICAgJGNzcyA9IHN0cl9yZXBsYWNlKCcjIyMjIyMjIyMjJyAuICRpIC4gJyMjIyMjIyMjIyMnLCAkaGl0WzFdWyRpXSwgJGNzcyk7DQogICB9DQoNCiAgIHJldHVybiAkY3NzOw0KfQ0KDQoNCg==]]></data>
	</file>
	<file>
	  <filename>/function.editContentTabs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCmZ1bmN0aW9uIGVkaXRDb250ZW50VGFicygkcGFyYW1zLCAkc21hcnR5KSB7DQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLyBlZGl0cyBhZG1pbiBzbWFydHkgYXJyYXlzICR0YWJfbmFtZXMgJiAkdGFiX2NvbnRlbnRzX2FycmF5LCB0byBoaWRlIHNvbWUgdGFicyBhbmQNCi8vIG1vdmUgc29tZSBmaWVsZHMgdG8gb3RoZXIgdGFicw0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgJHRhYl9uYW1lcyA9ICRzbWFydHktPmdldF90ZW1wbGF0ZV92YXJzKCd0YWJfbmFtZXMnKTsNCiAgICR0YWJfY29udGVudHNfYXJyYXkgPSAkc21hcnR5LT5nZXRfdGVtcGxhdGVfdmFycygndGFiX2NvbnRlbnRzX2FycmF5Jyk7DQogICAkdGFiX2xvb2t1cCA9ICFlbXB0eSgkdGFiX25hbWVzKSA/IGFycmF5X2ZsaXAoJHRhYl9uYW1lcykgOiBbXTsNCg0KICAgaWYgKCBpc3NldCgkcGFyYW1zWydkZWJ1ZyddKSApIHsNCiAgICAgIGVjaG8gIjxwcmU+ZWRpdENvbnRlbnRUYWJzIC0gZGVidWcgT04gLSBiZWZvcmUgY2hhbmdlcyBcblxuIjsNCiAgICAgIGVjaG8gIlRhYnMgJiBDb250ZW50IGFyZTpcbiI7DQogICAgICBmb3JlYWNoICgkdGFiX2NvbnRlbnRzX2FycmF5IGFzICR0YWJrZXkgPT4gJHRhYikgew0KICAgICAgICAgZWNobyAiVGFiOiAnIi4kdGFiX25hbWVzWyR0YWJrZXldLiInXG4iOw0KICAgICAgICAgZm9yZWFjaCAoJHRhYiBhcyAkY29udGVudHBvcyA9PiAkY29udGVudCkgew0KICAgICAgICAgICAgZWNobyAiICAgIFskY29udGVudHBvc10gJyIuJGNvbnRlbnRbMF0uIidcbiI7DQogICAgICAgICB9DQogICAgICB9DQogICAgICBlY2hvICI8L3ByZT4iOw0KICAgfQ0KDQogICAvLyBtb3ZlX3RhYl9jb250ZW50IC0gbW92ZXMgYWxsIGNvbnRlbnQgZnJvbTogVGFiIHRvOiBUYWINCiAgIGlmICggIWVtcHR5KCRwYXJhbXNbJ21vdmVfdGFiX2NvbnRlbnQnXSkgKSB7DQogICAgICAkbW92ZVRhYnMgPSBleHBsb2RlKCd8JywgJHBhcmFtc1snbW92ZV90YWJfY29udGVudCddKTsNCiAgICAgIGZvcmVhY2ggKCRtb3ZlVGFicyBhcyAkbW92ZVRhYikgew0KICAgICAgICAgJHRtcCA9IGV4cGxvZGUoJywnLCB0cmltKCRtb3ZlVGFiKSApOw0KICAgICAgICAgaWYgKCBjb3VudCgkdG1wKT09MiApIHsNCiAgICAgICAgICAgICRmcm9tX3RhYl9uYW1lID0gdHJpbSh0cmltKCR0bXBbMF0sICciJyksICInIik7DQogICAgICAgICAgICAkZnJvbVRhYiA9IGlzc2V0KCR0YWJfbG9va3VwWyRmcm9tX3RhYl9uYW1lXSkgPyAkdGFiX2xvb2t1cFskZnJvbV90YWJfbmFtZV0gOiBOVUxMOw0KICAgICAgICAgICAgJHRvX3RhYl9uYW1lID0gdHJpbSh0cmltKCR0bXBbMV0sICciJyksICInIik7DQogICAgICAgICAgICAkdG9UYWIgPSBpc3NldCgkdGFiX2xvb2t1cFskdG9fdGFiX25hbWVdKSA/ICR0YWJfbG9va3VwWyR0b190YWJfbmFtZV0gOiBOVUxMOw0KICAgICAgICAgICAgaWYgKCAkZnJvbVRhYiAmJiAkdG9UYWIgKSB7DQogICAgICAgICAgICAgICAgJHRhYl9jb250ZW50c19hcnJheVskdG9UYWJdID0gYXJyYXlfbWVyZ2UgKCAkdGFiX2NvbnRlbnRzX2FycmF5WyR0b1RhYl0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGFiX2NvbnRlbnRzX2FycmF5WyRmcm9tVGFiXSApOw0KICAgICAgICAgICAgICAgIHVuc2V0KCR0YWJfbmFtZXNbJGZyb21UYWJdKTsNCiAgICAgICAgICAgICAgICB1bnNldCgkdGFiX2NvbnRlbnRzX2FycmF5WyRmcm9tVGFiXSk7DQogICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICB9DQogICB9DQoNCg0KICAgLy8gbW92ZV9maWVsZHMgLSBmcm9tOiBUYWIgLyBQb3NpdGlvbiB0bzogVGFiIC8gUG9zaXRpb24NCiAgIGlmICggIWVtcHR5KCRwYXJhbXNbJ21vdmVfZmllbGRzJ10pICkgew0KICAgICAgJG1vdmVzID0gZXhwbG9kZSgnfCcsICRwYXJhbXNbJ21vdmVfZmllbGRzJ10pOw0KICAgICAgZm9yZWFjaCAoJG1vdmVzIGFzICRtb3ZlKSB7DQogICAgICAgICAkdG1wID0gZXhwbG9kZSgnLCcsIHRyaW0oJG1vdmUpICk7DQogICAgICAgICBpZiAoIGNvdW50KCR0bXApPT00ICkgew0KICAgICAgICAgICAgJGZyb21fdGFiX25hbWUgPSB0cmltKHRyaW0oJHRtcFswXSwgJyInKSwgIiciKTsNCiAgICAgICAgICAgICRmcm9tVGFiID0gaXNzZXQoJHRhYl9sb29rdXBbJGZyb21fdGFiX25hbWVdKSA/ICR0YWJfbG9va3VwWyRmcm9tX3RhYl9uYW1lXSA6IE5VTEw7DQogICAgICAgICAgICAkZnJvbVBvcyA9IHRyaW0odHJpbSgkdG1wWzFdLCAnIicpLCAiJyIpOw0KICAgICAgICAgICAgJHRvX3RhYl9uYW1lID0gdHJpbSh0cmltKCR0bXBbMl0sICciJyksICInIik7DQogICAgICAgICAgICAkdG9UYWIgPSBpc3NldCgkdGFiX2xvb2t1cFskdG9fdGFiX25hbWVdKSA/ICR0YWJfbG9va3VwWyR0b190YWJfbmFtZV0gOiBOVUxMOw0KICAgICAgICAgICAgJHRvUG9zID0gdHJpbSh0cmltKCR0bXBbM10sICciJyksICInIik7DQogICAgICAgICAgICBpZiAoICRmcm9tVGFiICYmICR0b1RhYiAmJiBpc19pbnRlZ2VyKCRmcm9tUG9zKSAmJiBpc19pbnRlZ2VyKCR0b1BvcykgKSB7DQogICAgICAgICAgICAgICAgLy8gbm93IG1vdmUgJiByZW1vdmUNCiAgICAgICAgICAgICAgICBhcnJheV9zcGxpY2UoICR0YWJfY29udGVudHNfYXJyYXlbJHRvVGFiXSwgJHRvUG9zLCAwLA0KICAgICAgICAgICAgICAgIGFycmF5KCR0YWJfY29udGVudHNfYXJyYXlbJGZyb21UYWJdWyRmcm9tUG9zXSkgKTsNCiAgICAgICAgICAgICAgICB1bnNldCggJHRhYl9jb250ZW50c19hcnJheVskZnJvbVRhYl1bJGZyb21Qb3NdICk7DQogICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICB9DQogICB9DQoNCg0KICAgLy8gcmVuYW1lX3RhYg0KICAgaWYgKCAhZW1wdHkoJHBhcmFtc1sncmVuYW1lX3RhYiddKSApIHsNCiAgICAgICRyZW5hbWVUYWJzID0gZXhwbG9kZSgnfCcsICRwYXJhbXNbJ3JlbmFtZV90YWInXSk7DQogICAgICBmb3JlYWNoICgkcmVuYW1lVGFicyBhcyAkcmVuYW1lVGFiKSB7DQogICAgICAgICAkdG1wID0gZXhwbG9kZSgnLCcsIHRyaW0oJHJlbmFtZVRhYikgKTsNCiAgICAgICAgIGlmICggY291bnQoJHRtcCk9PTIgKSB7DQogICAgICAgICAgICAkZnJvbV90YWJfbmFtZSA9IHRyaW0odHJpbSgkdG1wWzBdLCAnIicpLCAiJyIpOw0KICAgICAgICAgICAgJGZyb21UYWIgPSBpc3NldCgkdGFiX2xvb2t1cFskZnJvbV90YWJfbmFtZV0pID8gJHRhYl9sb29rdXBbJGZyb21fdGFiX25hbWVdIDogTlVMTDsNCiAgICAgICAgICAgICR0b190YWJfbmFtZSA9IHRyaW0odHJpbSgkdG1wWzBdLCAnIicpLCAiJyIpOw0KICAgICAgICAgICAgJHRvVGFiID0gaXNzZXQoJHRhYl9sb29rdXBbJHRvX3RhYl9uYW1lXSkgPyAkdGFiX2xvb2t1cFskdG9fdGFiX25hbWVdIDogTlVMTDsNCiAgICAgICAgICAgIGlmICggJGZyb21UYWIgJiYgJHRvVGFiICkgew0KICAgICAgICAgICAgICAgICRmcm9tVGFiID0gJHRhYl9sb29rdXBbdHJpbSh0cmltKCR0bXBbMF0sICciJyksICInIildOw0KICAgICAgICAgICAgICAgICR0b1RhYiA9IHRyaW0odHJpbSgkdG1wWzFdLCAnIicpLCAiJyIpOw0KICAgICAgICAgICAgICAgICR0YWJfbmFtZXNbJGZyb21UYWJdID0gJHRvVGFiOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KICAgICAgfQ0KICAgfQ0KDQoNCiAgIC8vIGhpZGUgdGFicyAtIGF1dG9tYXRpY2FsbHkgcmVtb3ZlIGFueSBlbXB0eSB0YWJzDQogICBmb3JlYWNoICgkdGFiX2NvbnRlbnRzX2FycmF5IGFzICR0YWJrZXkgPT4gJHRhYikgew0KICAgICAgaWYgKCBlbXB0eSgkdGFiKSApIHsNCiAgICAgICAgIHVuc2V0KCR0YWJfbmFtZXNbJHRhYmtleV0pOw0KICAgICAgICAgdW5zZXQoJHRhYl9jb250ZW50c19hcnJheVskdGFia2V5XSk7DQogICAgICB9DQogICB9DQoNCg0KICAgLy8gc2V0IHNtYXJ0eSB2YXJzDQogICAkc21hcnR5LT5hc3NpZ24oJ3RhYl9uYW1lcycsICR0YWJfbmFtZXMpOw0KICAgJHNtYXJ0eS0+YXNzaWduKCd0YWJfY29udGVudHNfYXJyYXknLCAkdGFiX2NvbnRlbnRzX2FycmF5KTsNCg0KDQogICBpZiAoIGlzc2V0KCRwYXJhbXNbJ2RlYnVnJ10pICkgew0KICAgICAgZWNobyAiPHByZT5lZGl0Q29udGVudFRhYnMgLSBkZWJ1ZyBPTiAtIGFmdGVyIGNoYW5nZXNcblxuIjsNCiAgICAgIGVjaG8gIlRhYnMgJiBDb250ZW50IGFyZTpcbiI7DQogICAgICBmb3JlYWNoICgkdGFiX2NvbnRlbnRzX2FycmF5IGFzICR0YWJrZXkgPT4gJHRhYikgew0KICAgICAgICAgZWNobyAiVGFiOiAnIi4kdGFiX25hbWVzWyR0YWJrZXldLiInXG4iOw0KICAgICAgICAgZm9yZWFjaCAoJHRhYiBhcyAkY29udGVudHBvcyA9PiAkY29udGVudCkgew0KICAgICAgICAgICAgZWNobyAiICAgIFsiLiRjb250ZW50cG9zLiJdICciOw0KICAgICAgICAgICAgICAgcHJpbnRfcigkY29udGVudFswXSk7DQogICAgICAgICAgICBlY2hvICInXG4iOw0KICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgZWNobyAiPC9wcmU+IjsNCiAgIH0NCn0NCg0KDQo=]]></data>
	</file>
	<file>
	  <filename>/function.facebookFeed.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCmZ1bmN0aW9uIGZhY2Vib29rRmVlZCgkcGFyYW1zLCAkc21hcnR5KSB7DQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLyBiYXNlZCBvbiBHQ0IgLSB2MS4xIC0gMDFEZWMxNQ0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgLy8gc2V0IGRlZmF1bHRzDQogICAkd2lkdGggPSA1MDA7ICAgICAgICAgICAgICAgICAgICAvLyBUaGUgcGl4ZWwgd2lkdGggb2YgdGhlIHBsdWdpbi4gTWluLiBpcyAxODAgYW5kIE1heC4gaXMgNTAwDQogICAkaGVpZ2h0ID0gNDAwOyAgICAgICAgICAgICAgICAgICAvLyBUaGUgcGl4ZWwgaGVpZ2h0IG9mIHRoZSBwbHVnaW4uIE1pbi4gaXMgNzANCiAgICRoaWRlQ292ZXIgPSAnZmFsc2UnOyAgICAgICAgICAgIC8vIEhpZGUgY292ZXIgcGhvdG8gaW4gdGhlIGhlYWRlcg0KICAgJHNob3dGYWNlcGlsZSA9ICdmYWxzZSc7ICAgICAgICAgLy8gU2hvdyBwcm9maWxlIHBob3RvcyB3aGVuIGZyaWVuZHMgbGlrZSB0aGlzDQogICAkc2hvd1Bvc3RzID0gJ3RydWUnOyAgICAgICAgICAgICAvLyBTaG93IHBvc3RzIGZyb20gdGhlIFBhZ2UncyB0aW1lbGluZQ0KICAgJGhpZGVDdGEgPSAndHJ1ZSc7ICAgICAgICAgICAgICAgLy8gSGlkZSB0aGUgY3VzdG9tIGNhbGwgdG8gYWN0aW9uIGJ1dHRvbiAoaWYgYXZhaWxhYmxlKQ0KICAgJHNtYWxsSGVhZGVyID0gJ3RydWUnOyAgICAgICAgICAgLy8gVXNlIHRoZSBzbWFsbCBoZWFkZXIgaW5zdGVhZA0KICAgJGFkYXB0Q29udGFpbmVyV2lkdGggPSAndHJ1ZSc7ICAgLy8gVHJ5IHRvIGZpdCBpbnNpZGUgdGhlIGNvbnRhaW5lciB3aWR0aCAtIHNlbWktcmVzcG9uc2l2ZQ0KDQoNCiAgIC8vIHBhZ2VJZCAocmVxdWlyZWQpIGlzIHBhcmFtIG9yIEN1c3RvbUdTLkZhY2Vib29rIGlmIHNldA0KICAgaWYgKCAhZW1wdHkoJHBhcmFtc1sncGFnZUlkJ10pICl7DQogICAgICAkcGFnZUlkID0gJHBhcmFtc1sncGFnZUlkJ107DQogICB9IGVsc2Ugew0KICAgICAgJEN1c3RvbUdTID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdDdXN0b21HUycpOw0KICAgICAgaWYoIGlzX29iamVjdCgkQ3VzdG9tR1MpICkgew0KICAgICAgICAgJEN1c3RvbUdTX0ZhY2Vib29rID0gJEN1c3RvbUdTLT5HZXRGaWVsZCgnRmFjZWJvb2snKTsNCiAgICAgICAgIGlmICggIWVtcHR5KCRDdXN0b21HU19GYWNlYm9va1sndmFsdWUnXSkgKSB7DQogICAgICAgICAgICAkcGFnZUlkID0gJEN1c3RvbUdTX0ZhY2Vib29rWyd2YWx1ZSddOw0KICAgICAgICAgfQ0KICAgICAgfQ0KICAgfQ0KDQogICAkbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdVdGlsaXRpZXMnKTsNCiAgIGlmKCBpc19vYmplY3QoJG1vZCkgJiYgIWVtcHR5KCRwYWdlSWQpICkgew0KICAgICAgLy8gdXNlIG90aGVyIHBhcmFtcyBpZiBzZXQNCiAgICAgIGlmICghZW1wdHkoJHBhcmFtc1snd2lkdGgnXSkpICR3aWR0aCA9ICRwYXJhbXNbJ3dpZHRoJ107DQogICAgICBpZiAoIWVtcHR5KCRwYXJhbXNbJ2hlaWdodCddKSkgJGhlaWdodCA9ICRwYXJhbXNbJ2hlaWdodCddOw0KICAgICAgaWYgKCFlbXB0eSgkcGFyYW1zWydoaWRlQ292ZXInXSkpICRoaWRlQ292ZXIgPSAkcGFyYW1zWydoaWRlQ292ZXInXTsNCiAgICAgIGlmICghZW1wdHkoJHBhcmFtc1snc2hvd0ZhY2VwaWxlJ10pKSAkc2hvd0ZhY2VwaWxlID0gJHBhcmFtc1snc2hvd0ZhY2VwaWxlJ107DQogICAgICBpZiAoIWVtcHR5KCRwYXJhbXNbJ3Nob3dQb3N0cyddKSkgJHNob3dQb3N0cyA9ICRwYXJhbXNbJ3Nob3dQb3N0cyddOw0KICAgICAgaWYgKCFlbXB0eSgkcGFyYW1zWydoaWRlQ3RhJ10pKSAkaGlkZUN0YSA9ICRwYXJhbXNbJ2hpZGVDdGEnXTsNCiAgICAgIGlmICghZW1wdHkoJHBhcmFtc1snc21hbGxIZWFkZXInXSkpICRzbWFsbEhlYWRlciA9ICRwYXJhbXNbJ3NtYWxsSGVhZGVyJ107DQogICAgICBpZiAoIWVtcHR5KCRwYXJhbXNbJ2FkYXB0Q29udGFpbmVyV2lkdGgnXSkpICRhZGFwdENvbnRhaW5lcldpZHRoID0gJHBhcmFtc1snYWRhcHRDb250YWluZXJXaWR0aCddOw0KDQoNCiAgICAgICR0cGwgPSAkc21hcnR5LT5DcmVhdGVUZW1wbGF0ZSggJG1vZC0+R2V0VGVtcGxhdGVSZXNvdXJjZSgnZmFjZWJvb2tGZWVkX3RlbXBsYXRlLnRwbCcpLCBudWxsLCBudWxsLCAkc21hcnR5ICk7DQogICAgICAkdHBsLT5hc3NpZ24oJ3BhZ2VJZCcsICRwYWdlSWQpOw0KICAgICAgJHRwbC0+YXNzaWduKCd3aWR0aCcsICR3aWR0aCk7DQogICAgICAkdHBsLT5hc3NpZ24oJ2hlaWdodCcsICRoZWlnaHQpOw0KICAgICAgJHRwbC0+YXNzaWduKCdoaWRlQ292ZXInLCAkaGlkZUNvdmVyKTsNCiAgICAgICR0cGwtPmFzc2lnbignc2hvd0ZhY2VwaWxlJywgJHNob3dGYWNlcGlsZSk7DQogICAgICAkdHBsLT5hc3NpZ24oJ3Nob3dQb3N0cycsICRzaG93UG9zdHMpOw0KICAgICAgJHRwbC0+YXNzaWduKCdoaWRlQ3RhJywgJGhpZGVDdGEpOw0KICAgICAgJHRwbC0+YXNzaWduKCdzbWFsbEhlYWRlcicsICRzbWFsbEhlYWRlcik7DQogICAgICAkdHBsLT5hc3NpZ24oJ2FkYXB0Q29udGFpbmVyV2lkdGgnLCAkYWRhcHRDb250YWluZXJXaWR0aCk7DQogICAgICAkdHBsLT5kaXNwbGF5KCk7DQogICB9DQoNCn0NCg0KDQo=]]></data>
	</file>
	<file>
	  <filename>/function.googleMap.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCmZ1bmN0aW9uIGdvb2dsZU1hcCgkcGFyYW1zLCAkc21hcnR5KSB7DQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLyBzZWU6IGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9lbWJlZC9nZXQtc3RhcnRlZA0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KDQogICAvLyBzZXQgZGVmYXVsdHMNCiAgICRhcGlrZXkgPSAnJzsgLy8gWU9VUl9BUElfS0VZIC0gcmVxdWlyZWQgdG8gZnVuY3Rpb24NCiAgICRoZWlnaHQgPSA1MDA7DQogICAkbW9kZSA9ICdwbGFjZSc7IC8vIGlzIG9uZSBvZiBwbGFjZSwgc2VhcmNoLCB2aWV3LCBkaXJlY3Rpb25zLCBvciBzdHJlZXR2aWV3DQogICAkcGFyYW1ldGVyc1sncSddID0gJ0xvbmRvbiwgVUsnOyAvLyBxIGRlZmluZXMgdGhlIHBsYWNlIHRvIGhpZ2hsaWdodCBvbiB0aGUgbWFwDQogICAkcGFyYW1ldGVyc1snem9vbSddID0gMTE7ICAvLyAgMCAodGhlIHdob2xlIHdvcmxkKSB0byAyMSAoaW5kaXZpZHVhbCBidWlsZGluZ3MpDQogICAkcGFyYW1ldGVyc1snbWFwdHlwZSddID0gJ3JvYWRtYXAnOyAvLyByb2FkbWFwICh0aGUgZGVmYXVsdCkgb3Igc2F0ZWxsaXRlDQoNCiAgIC8vIHNldCBvdGhlciBwYXJhbXMgaWYgdXNlZA0KICAgaWYgKCFlbXB0eSgkcGFyYW1zWydhcGlrZXknXSkpICRhcGlrZXkgPSAoc3RyaW5nKSAkcGFyYW1zWydhcGlrZXknXTsNCiAgIGlmICghZW1wdHkoJHBhcmFtc1snaGVpZ2h0J10pKSAkaGVpZ2h0ID0gKGludCkgJHBhcmFtc1snaGVpZ2h0J107DQogICBpZiAoIWVtcHR5KCRwYXJhbXNbJ21vZGUnXSkpICRtb2RlID0gKHN0cmluZykgJHBhcmFtc1snbW9kZSddOw0KICAgaWYgKCFlbXB0eSggJHBhcmFtc1sncGFyYW1ldGVycyddKSAmJiBpc19hcnJheSgkcGFyYW1zWydwYXJhbWV0ZXJzJ10pICkgew0KICAgICAgJHBhcmFtZXRlcnMgPSBhcnJheV9tZXJnZSgkcGFyYW1ldGVycywgJHBhcmFtc1sncGFyYW1ldGVycyddKTsNCiAgIH0NCiAgIGlmICgkbW9kZSE9J3BsYWNlJykgdW5zZXQoICRwYXJhbWV0ZXJzWydxJ10gKTsgLy8gcmVtb3ZlIGRlZmF1bHQgcGxhY2UgZm9yIHRoaXMgbW9kZQ0KICAgaWYgKCFlbXB0eSgkcGFyYW1zWydxJ10pKSAkcGFyYW1ldGVyc1sncSddID0gKHN0cmluZykgJHBhcmFtc1sncSddOw0KICAgaWYgKCFlbXB0eSgkcGFyYW1zWyd6b29tJ10pKSAkcGFyYW1ldGVyc1snem9vbSddID0gKGludCkgJHBhcmFtc1snem9vbSddOw0KICAgaWYgKCFlbXB0eSgkcGFyYW1zWydtYXB0eXBlJ10pKSAkcGFyYW1ldGVyc1snbWFwdHlwZSddID0gKHN0cmluZykgJHBhcmFtc1snbWFwdHlwZSddOw0KICAgJHBhcmFtZXRlcnMgPSBzdHJfcmVwbGFjZSggJyUzQScsICc6JywgaHR0cF9idWlsZF9xdWVyeSgkcGFyYW1ldGVycykgKTsNCiAgIA0KICAgJG1vZCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnVXRpbGl0aWVzJyk7DQogICAkdHBsID0gJHNtYXJ0eS0+Q3JlYXRlVGVtcGxhdGUoICRtb2QtPkdldFRlbXBsYXRlUmVzb3VyY2UoJ2dvb2dsZU1hcF90ZW1wbGF0ZS50cGwnKSwgbnVsbCwgbnVsbCwgJHNtYXJ0eSApOw0KICAgJHRwbC0+YXNzaWduKCdhcGlrZXknLCAkYXBpa2V5KTsNCiAgICR0cGwtPmFzc2lnbignaGVpZ2h0JywgJGhlaWdodCk7DQogICAkdHBsLT5hc3NpZ24oJ21vZGUnLCAkbW9kZSk7DQogICAkdHBsLT5hc3NpZ24oJ3BhcmFtZXRlcnMnLCAkcGFyYW1ldGVycyk7DQogICAkdHBsLT5kaXNwbGF5KCk7DQoNCn0NCg0KDQo=]]></data>
	</file>
	<file>
	  <filename>/function.twitterFeed.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCmZ1bmN0aW9uIHR3aXR0ZXJGZWVkKCRwYXJhbXMsICRzbWFydHkpIHsNCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vIGJhc2VkIG9uIEdDQiB2MS4wIC0gMDlKdW4xNg0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgLy8gc2V0IGRlZmF1bHRzDQogICAkdHdpdHRlcldpZHRoID0gJyc7ICAgICAgICAvLyBsZWF2ZSBlbXB0eSBmb3IgcmVzcG9uc2l2ZQ0KICAgJHR3aXR0ZXJIZWlnaHQgPSAzMDA7DQogICAkdHdpdHRlclRoZW1lID0gJ2xpZ2h0JzsgICAvLyAnbGlnaHQnIChkZWZhdWx0KSBvciAnZGFyaycNCiAgICR0d2l0dGVyTGlua0NvbG9yID0gJyc7ICAgIC8vIGUuZy4gJyNBQUFBNTInIG9wdGlvbmFsDQogICAkdHdpdHRlckJvcmRlckNvbG9yID0gJyc7ICAvLyBvcHRpb25hbCBvciBzZXQgaW4gQ1NTDQogICAkdHdpdHRlckNocm9tZU9wdGlvbnMgPSAnbm9mb290ZXIgdHJhbnNwYXJlbnQgJzsgICAvLyAxIG9yIG1vcmUgKHNwYWNlIHNlcGFyYXRlZCkgJ25vaGVhZGVyIG5vZm9vdGVyIG5vYm9yZGVycyBub3Njcm9sbGJhciB0cmFuc3BhcmVudCcNCg0KDQogICAvLyBzY3JlZW5fbmFtZSAocmVxdWlyZWQpIGlzIHBhcmFtIG9yIEN1c3RvbUdTLlR3aXR0ZXIgaWYgc2V0DQogICBpZiAoICFlbXB0eSgkcGFyYW1zWydzY3JlZW5fbmFtZSddKSApew0KICAgICAgJHR3aXR0ZXJTY3JlZW5OYW1lID0gJHBhcmFtc1snc2NyZWVuX25hbWUnXTsNCg0KICAgfSBlbHNlIHsNCiAgICAgICRDdXN0b21HUyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ3VzdG9tR1MnKTsNCiAgICAgIGlmKCBpc19vYmplY3QoJEN1c3RvbUdTKSApIHsNCiAgICAgICAgICRDdXN0b21HU19Ud2l0dGVyID0gJEN1c3RvbUdTLT5HZXRGaWVsZCgnVHdpdHRlcicpOw0KICAgICAgICAgaWYgKCAhZW1wdHkoJEN1c3RvbUdTX1R3aXR0ZXJbJ3ZhbHVlJ10pICkgew0KICAgICAgICAgICAgJHR3aXR0ZXJTY3JlZW5OYW1lID0gJEN1c3RvbUdTX1R3aXR0ZXJbJ3ZhbHVlJ107DQogICAgICAgICB9DQogICAgICB9DQogICB9DQoNCiAgICRtb2QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ1V0aWxpdGllcycpOw0KICAgaWYoIGlzX29iamVjdCgkbW9kKSAmJiAhZW1wdHkoJHR3aXR0ZXJTY3JlZW5OYW1lKSApIHsNCg0KICAgICAgLy8gdXNlIG90aGVyIHBhcmFtcyBpZiBzZXQNCiAgICAgIGlmICghZW1wdHkoJHBhcmFtc1snd2lkdGgnXSkpICR0d2l0dGVyV2lkdGggPSAkcGFyYW1zWyd3aWR0aCddOw0KICAgICAgaWYgKCFlbXB0eSgkcGFyYW1zWydoZWlnaHQnXSkpICR0d2l0dGVySGVpZ2h0ID0gJHBhcmFtc1snaGVpZ2h0J107DQogICAgICBpZiAoIWVtcHR5KCRwYXJhbXNbJ3RoZW1lJ10pKSAkdHdpdHRlclRoZW1lID0gJHBhcmFtc1sndGhlbWUnXTsNCiAgICAgIGlmICghZW1wdHkoJHBhcmFtc1snbGlua19jb2xvciddKSkgJHR3aXR0ZXJMaW5rQ29sb3IgPSAkcGFyYW1zWydsaW5rX2NvbG9yJ107DQogICAgICBpZiAoIWVtcHR5KCRwYXJhbXNbJ2JvcmRlcl9jb2xvciddKSkgJHR3aXR0ZXJCb3JkZXJDb2xvciA9ICRwYXJhbXNbJ2JvcmRlcl9jb2xvciddOw0KICAgICAgaWYgKCFlbXB0eSgkcGFyYW1zWydjaHJvbWVfb3B0aW9ucyddKSkgJHR3aXR0ZXJDaHJvbWVPcHRpb25zID0gJHBhcmFtc1snY2hyb21lX29wdGlvbnMnXTsNCg0KICAgICAgJHRwbCA9ICRzbWFydHktPkNyZWF0ZVRlbXBsYXRlKCAkbW9kLT5HZXRUZW1wbGF0ZVJlc291cmNlKCd0d2l0dGVyRmVlZF90ZW1wbGF0ZS50cGwnKSwgbnVsbCwgbnVsbCwgJHNtYXJ0eSApOw0KICAgICAgJHRwbC0+YXNzaWduKCd0d2l0dGVyU2NyZWVuTmFtZScsICR0d2l0dGVyU2NyZWVuTmFtZSk7DQogICAgICAkdHBsLT5hc3NpZ24oJ3R3aXR0ZXJXaWR0aCcsICR0d2l0dGVyV2lkdGgpOw0KICAgICAgJHRwbC0+YXNzaWduKCd0d2l0dGVySGVpZ2h0JywgJHR3aXR0ZXJIZWlnaHQpOw0KICAgICAgJHRwbC0+YXNzaWduKCd0d2l0dGVyVGhlbWUnLCAkdHdpdHRlclRoZW1lKTsNCiAgICAgICR0cGwtPmFzc2lnbigndHdpdHRlckxpbmtDb2xvcicsICR0d2l0dGVyTGlua0NvbG9yKTsNCiAgICAgICR0cGwtPmFzc2lnbigndHdpdHRlckJvcmRlckNvbG9yJywgJHR3aXR0ZXJCb3JkZXJDb2xvcik7DQogICAgICAkdHBsLT5hc3NpZ24oJ3R3aXR0ZXJDaHJvbWVPcHRpb25zJywgJHR3aXR0ZXJDaHJvbWVPcHRpb25zKTsNCiAgICAgICR0cGwtPmRpc3BsYXkoKTsNCiAgIH0NCg0KfQ0KDQoNCg==]]></data>
	</file>
	<file>
	  <filename>/function.youTubePlayer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi8vIGJhc2VkIG9uIFVEVCB5b3VUdWJlUGxheWVyIC0gdjEuMiAtIDI2U2VwMTYNCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCmZ1bmN0aW9uIHlvdVR1YmVQbGF5ZXIoJHBhcmFtcywgJHNtYXJ0eSkgDQp7DQogICAgJG1vZCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnVXRpbGl0aWVzJyk7DQoNCiAgICBpZiAoIGlzX29iamVjdCgkbW9kKSAmJiAhZW1wdHkoJHBhcmFtc1sndmlkZW9pZCddKSApIHsNCiAgICAgICAgJHZpZGVvaWQgPSB0cmltKCRwYXJhbXNbJ3ZpZGVvaWQnXSk7DQogICAgICAgICRjbGFzcyA9ICcnOw0KICAgICAgICAkc3RhcnQgPSAnJzsNCiAgICAgICAgJGF1dG9wbGF5ID0gJyc7DQogICAgICAgICR0ZXh0ID0gJyc7DQogICAgICAgICRhc3BlY3QgPSAnMTZieTknOw0KICAgICAgICAkdGh1bWJuYWlsID0gJyc7DQogICAgICAgICRzaXplID0gJ2xnJzsNCiAgICAgICAgaWYgKGlzc2V0KCRwYXJhbXNbJ2NsYXNzJ10pKSAkY2xhc3MgPSAkcGFyYW1zWydjbGFzcyddOw0KICAgICAgICBpZiAoaXNzZXQoJHBhcmFtc1snc3RhcnQnXSkpICRzdGFydCA9ICcmc3RhcnQ9Jy4oaW50KSRwYXJhbXNbJ3N0YXJ0J107DQogICAgICAgIGlmIChpc3NldCgkcGFyYW1zWydhdXRvcGxheSddKSAmJiAkcGFyYW1zWydhdXRvcGxheSddPT0xKSAkYXV0b3BsYXkgPSAnJmF1dG9wbGF5PTEnOw0KICAgICAgICBpZiAoaXNzZXQoJHBhcmFtc1snYXNwZWN0J10pICYmICRwYXJhbXNbJ2FzcGVjdCddPT0nNGJ5MycpICRhc3BlY3QgPSAnNGJ5Myc7DQogICAgICAgIGlmIChpc3NldCgkcGFyYW1zWyd0ZXh0J10pKSAkdGV4dCA9ICRwYXJhbXNbJ3RleHQnXTsNCiAgICAgICAgaWYgKGlzc2V0KCRwYXJhbXNbJ3RodW1ibmFpbCddKSkgew0KICAgICAgICAgICAgJHRodW1iID0gdHJpbSgkcGFyYW1zWyd0aHVtYm5haWwnXSk7DQogICAgICAgICAgICBzd2l0Y2ggKCR0aHVtYikgew0KICAgICAgICAgICAgICAgIGNhc2UgJ3NtYWxsJzoNCiAgICAgICAgICAgICAgICAkdGh1bWJuYWlsID0gJy8vaTEueXRpbWcuY29tL3ZpLycuJHZpZGVvaWQuJy9tcWRlZmF1bHQuanBnJzsgIC8vIHNtYWxsIC0gMzIwIHggMTgwcHgNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlICdtZWRpdW0nOg0KICAgICAgICAgICAgICAgICR0aHVtYm5haWwgPSAnLy9pMS55dGltZy5jb20vdmkvJy4kdmlkZW9pZC4nLzAuanBnJzsgIC8vIG1lZGl1bSAtIDQ4MCB4IDM2MHB4DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAnbWF4JzoNCiAgICAgICAgICAgICAgICAkdGh1bWJuYWlsID0gJy8vaTEueXRpbWcuY29tL3ZpLycuJHZpZGVvaWQuJy9tYXhyZXNkZWZhdWx0LmpwZyc7ICAvLyBtYXggLSAxOTIwIHggMTA4MHB4DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICAgICAkdGh1bWJuYWlsID0gJHRodW1iOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGlmIChpc3NldCgkcGFyYW1zWydzaXplJ10pICYmIGluX2FycmF5KCRwYXJhbXNbJ3NpemUnXSwgWydzbScsJ21kJywnbGcnLCd4bCddKSApIHsNCiAgICAgICAgICAgICRzaXplID0gJHBhcmFtc1snc2l6ZSddOw0KICAgICAgICB9DQoNCiAgICAgICAgJHRwbCA9ICRzbWFydHktPkNyZWF0ZVRlbXBsYXRlKCAkbW9kLT5HZXRUZW1wbGF0ZVJlc291cmNlKCd5b3VUdWJlUGxheWVyX3RlbXBsYXRlLnRwbCcpLCBudWxsLCBudWxsLCAkc21hcnR5ICk7DQogICAgICAgICR0cGwtPmFzc2lnbigndmlkZW9pZCcsICR2aWRlb2lkKTsNCiAgICAgICAgJHRwbC0+YXNzaWduKCdjbGFzcycsICRjbGFzcyk7DQogICAgICAgICR0cGwtPmFzc2lnbignc3RhcnQnLCAkc3RhcnQpOw0KICAgICAgICAkdHBsLT5hc3NpZ24oJ2F1dG9wbGF5JywgJGF1dG9wbGF5KTsNCiAgICAgICAgJHRwbC0+YXNzaWduKCdhc3BlY3QnLCAkYXNwZWN0KTsNCiAgICAgICAgJHRwbC0+YXNzaWduKCd0ZXh0JywgJHRleHQpOw0KICAgICAgICAkdHBsLT5hc3NpZ24oJ3RodW1ibmFpbCcsICR0aHVtYm5haWwpOw0KICAgICAgICAkdHBsLT5hc3NpZ24oJ3NpemUnLCAkc2l6ZSk7DQogICAgICAgICR0cGwtPmRpc3BsYXkoKTsNCg0KICAgIH0NCn0NCg0KDQo=]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxNiBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnVXRpbGl0aWVzJzsNCiRsYW5nWydhZG1pbmRlc2NyaXB0aW9uJ10gPSAnUHJvdmlkZXMgYSBzZXQgb2YgYWRkaXRpb25hbCBmdW5jdGlvbnMgdXNlZnVsIGFjcm9zcyBtYW55IHdlYnNpdGVzLic7DQoNCiRsYW5nWydpbnN0YWxsX21zZyddID0gIllvdSBoYXZlIHN1Y2Nlc3NmdWxseSBpbnN0YWxsZWQgdGhlICdVdGlsaXRpZXMnIG1vZHVsZS4iOw0KJGxhbmdbJ2luc3RhbGxfQklFeHRlbnNpb25zX2Vycm9yJ10gPSAiTW9kdWxlICdCSUV4dGVuc2lvbnMnIG5lZWRzIHRvIGJlIHVuaW5zdGFsbGVkIGJlZm9yZSBpbnN0YWxsaW5nICdVdGlsaXRpZXMnIjsNCiRsYW5nWydhc2tfdW5pbnN0YWxsJ10gPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHVuaW5zdGFsbCB0aGUgVXRpbGl0aWVzIG1vZHVsZT8nOw0KDQoNCiRsYW5nWyduZWVkX3Blcm1pc3Npb24nXSA9ICdZb3UgbmVlZCBwZXJtaXNzaW9uIHRvIGJlIGFibGUgdG8gdmlldyBvciBlZGl0IHRoaXMgcGFnZSc7DQoNCg0KJGxhbmdbJ3RhYl9vcHRpb25zJ10gPSAnT3B0aW9ucyc7DQokbGFuZ1sndG9rZW5fdXBkYXRlZCddID0gJ0luc3RhZ3JhbSB0b2tlbiB1cGRhdGVkJzsNCiRsYW5nWyd0b2tlbl9ub3RfdXBkYXRlZCddID0gJ0luc3RhZ3JhbSB0b2tlbiBub3QgdXBkYXRlZCc7DQoNCiRsYW5nWydpbnN0YWdyYW1fZmVlZF9vcHRpb25zJ10gPSAnaW5zdGFncmFtRmVlZCBvcHRpb25zJzsNCiRsYW5nWydpbnN0YWdyYW1fYWNjZXNzX3Rva2VuJ10gPSAnSW5zdGFncmFtIEFjY2VzcyBUb2tlbic7DQokbGFuZ1snaW5zdGFncmFtX3Rva2VuX2Vycm9yJ10gPSAnSW5zdGFncmFtIFRva2VuIEVycm9yJzsNCiRsYW5nWyd2YWxpZF90b2tlbiddID0gJ1ZhbGlkIFRva2VuLCByZWZyZXNoZXMgYXQnOw0KJGxhbmdbJ21lZGlhX2NhY2hlX3JlZnJlc2gnXSA9ICdNZWRpYSBjYWNoZSwgcmVmcmVzaGVzIGF0JzsNCiRsYW5nWydub190b2tlbiddID0gJ25vIHRva2VuIHNhdmVkJzsNCiRsYW5nWyduZXdfaW5zdGFncmFtX3Rva2VuJ10gPSAnTmV3IEluc3RhZ3JhbSBsb25nLWxpdmVkIGFjY2VzcyB0b2tlbic7DQokbGFuZ1sndXBkYXRlX3Rva2VuJ10gPSAnVXBkYXRlIHRva2VuJzsNCiRsYW5nWyduZXdfdG9rZW5fZmllbGRfbm90ZSddID0gJ05vdGU6IHRoaXMgZmllbGQgaXMgbm9ybWFsbHkgZW1wdHksIHVubGVzcyB5b3UgbmVlZCB0byBzdWJtaXQgYSBuZXcgdG9rZW4uJzsNCiRsYW5nWydpbnN0YWdyYW1fbWVkaWFfY2FjaGUnXSA9ICdJbnN0YWdyYW0gTWVkaWEgQ2FjaGUnOw0KJGxhbmdbJ2NsZWFyX2NhY2hlJ10gPSAnY2xlYXIgY2FjaGUnOw0KDQoNCg0KDQoNCg0KDQoNCg0KIyMjICAgICMjIyAgICMjIyMjIyMjIyAgICMjIyAgICAgICAgIyMjIyMjIyMjDQojIyMgICAgIyMjICAgIyMjIyMjIyMjICAgIyMjICAgICAgICAjIyMjIyMjIyMNCiMjIyAgICAjIyMgICAjIyMgICAgICAgICAjIyMgICAgICAgICMjIyAgICMjIw0KIyMjIyMjIyMjIyAgICMjIyMjIyMjIyAgICMjIyAgICAgICAgIyMjIyMjIyMjDQojIyMjIyMjIyMjICAgIyMjIyMjIyMjICAgIyMjICAgICAgICAjIyMjIyMjIyMNCiMjIyAgICAjIyMgICAjIyMgICAgICAgICAjIyMgICAgICAgICMjIw0KIyMjICAgICMjIyAgICMjIyMjIyMjIyAgICMjIyMjIyMjIyAgIyMjDQojIyMgICAgIyMjICAgIyMjIyMjIyMjICAgIyMjIyMjIyMjICAjIyMNCg0KJGxhbmdbJ2hlbHAnXSA9IDw8PCdFT0QnDQoNCjxoMyBuYW1lPSIiPldoYXQgZG9lcyB0aGlzIGRvPzwvaDM+DQo8cD4nVXRpbGl0aWVzJyBwcm92aWRlcyBhIHNldCBvZiBhZGRpdGlvbmFsIGZ1bmN0aW9ucyB1c2VmdWwgYWNyb3NzIG1hbnkgd2Vic2l0ZXMuIFByZXZpb3VzbHkgdGhlc2Ugd2VyZSBQbHVnaW5zIG9yIFVEVHMuPC9wPjxicj4NCjxwPlRhZ3MgLyBTbWFydHkgRnVuY3Rpb25zOjwvcD4NCjx1bD4NCiAgIDxsaT5jb250ZW50X3R5cGU8L2xpPg0KICAgPGxpPmVkaXRDb250ZW50VGFiczwvbGk+DQogICA8bGk+Z29vZ2xlRm9udFVybDwvbGk+DQogICA8bGk+Z2FsbGVyeUNvdmVyczwvbGk+DQogICA8bGk+eW91VHViZVBsYXllcjwvbGk+DQogICA8bGk+Y3NzTWluaWZpZXI8L2xpPg0KICAgPGxpPnR3aXR0ZXJGZWVkPC9saT4NCiAgIDxsaT5mYWNlYm9va0ZlZWQ8L2xpPg0KICAgPGxpPmdldEN1c3RvbUdTPC9saT4NCiAgIDxsaT5hZG1pblVzZXI8L2xpPg0KICAgPGxpPmFkbWluQWN0aW9uVXJsPC9saT4NCiAgIDxsaT5nb29nbGVNYXA8L2xpPg0KPC91bD4NCjxicj4NCg0KDQoNCjxoMj5UYWdzIC8gU21hcnR5IEZ1bmN0aW9uczwvaDI+DQoNCjxoMz5jb250ZW50X3R5cGU8L2gzPg0KPHA+e2NvbnRlbnRfdHlwZSB0eXBlPSdzdHJpbmdfbWltZV90eXBlJ308L3A+DQo8cD5TZXRzIHRoZSByZXF1ZXN0IGNvbnRlbnQgdHlwZSB0byBhIHZhbGlkIG1pbWUgdHlwZS48L3A+DQo8cD5QYXJhbWV0ZXJzOjwvcD4NCjx1bD4NCiAgIDxsaT50eXBlIChyZXF1aXJlZCkgLSBhIHZhbGlkIG1pbWUgdHlwZS48L2xpPg0KPC91bD4NCjxicj4NCg0KDQoNCjxoMz5lZGl0Q29udGVudFRhYnM8L2gzPg0KPHA+e2VkaXRDb250ZW50VGFicyAuLi59IGlzIGluY2x1ZGVkIGF0IHRoZSBzdGFydCBvZiB0aGUgYWRtaW4gdGVtcGxhdGUgJ21vZHVsZV9jdXN0b21cQ01TQ29udGVudE1hbmFnZXJcdGVtcGxhdGVzXGFkbWluX2VkaXRjb250ZW50LnRwbCcuIEVkaXRzIGFkbWluIHNtYXJ0eSBhcnJheXMgJHRhYl9uYW1lcyAmICR0YWJfY29udGVudHNfYXJyYXksIHRvIGhpZGUgc29tZSB0YWJzIGFuZCBtb3ZlIHNvbWUgZmllbGRzLjwvcD4NCjxwPklkZWFsbHkgdGhpcyBmdW5jdGlvbmFsaXR5IHdvdWxkIGJlIHJlcGxhY2VkIGJ5IENNU01TIGNvcmUgZnVuY3Rpb25hbGl0eSBhdCBzb21lIHBvaW50IGluIHRoZSBmdXR1cmUuPC9wPg0KPHA+VG8gY2hhbmdlIHRoZSBkaXNwbGF5ZWQgQWRtaW4gZmllbGQgdGl0bGVzLCBqdXN0IHVzZSB0aGUgY29yZSBhZG1pbl9jdXN0b20gZnVuY3Rpb25hbGl0eS4gQWRkIGEgZmlsZSBpbnRvIC9hc3NldHMvYWRtaW5fY3VzdG9tL2xhbmcvZW5fVVMucGhwIChvciBzaW1pbGFyIC0gQzxTPFMgdjIuMispIHRoYXQgY2hhbmdlcyB0aGUgbGFuZ3VhZ2Ugc3RyaW5ncyBmcm9tIC9hZG1pbi9sYW5nL2VuX1VTLnBocC48L3A+PGJyPg0KPHA+VGlwOiBpZiBtb3ZpbmcgaW5kaXZpZHVhbCBmaWVsZHMgYWRkIG9uZSBhdCBhIHRpbWUgdG8gdGhlIG1vdmVfZmllbGRzIHBhcmFtZXRlciBhbmQgc2V0IGRlYnVnPTEgLSBtYWtlcyBpdCBlYXNpZXIgdG8gd29yayBvdXQgdGhlIG5ldyBwb3NpdGlvbnMhPC9wPg0KPHA+UGFyYW1ldGVyczo8L3A+DQo8dWw+DQogICA8bGk+ZGVidWcgKG9wdGlvbmFsKSAtIHNldCBkZWJ1Zz0xIHRvIHR1cm4gb24gb3V0cHV0IG9mIENvbnRlbnQgTWFuYWdlciB0YWJzIGFuZCBmaWVsZHMsIGJlZm9yZSBhbmQgYWZ0ZXIgZWRpdENvbnRlbnRUYWJzIGNoYW5nZXMuIEp1c3QgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVmaW5lIGNoYW5nZXMuPC9saT4NCiAgIDxsaT5tb3ZlX3RhYl9jb250ZW50IChvcHRpb25hbCkgLSBtb3ZlcyBhbGwgY29udGVudCBmcm9tIG9uZSBUYWIgdG8gYW5vdGhlciBUYWIuIEZvcm1hdCBpcyBtb3ZlX3RhYl9jb250ZW50PSJmcm9tVGFiLHRvVGFifGZyb21UYWIsdG9UYWIiIGUuZy4gbW92ZV90YWJfY29udGVudD0iTG9naWMsT3B0aW9uc3xQZXJtaXNzaW9ucyxPcHRpb25zIiA8L2xpPg0KICAgPGxpPm1vdmVfZmllbGRzIChvcHRpb25hbCkgLSBtb3ZlcyBhIHNpbmdsZSBmaWVsZCBmcm9tIG9uZSBUYWIgLyBQb3NpdGlvbiB0byBhbm90aGVyIFRhYiAvIFBvc2l0aW9uLiBGb3JtYXQgaXMgbW92ZV9maWVsZHM9ImZyb21UYWIsZnJvbVBvc2l0aW9uLHRvVGFiLHRvUG9zaXRpb258ZnJvbVRhYixmcm9tUG9zaXRpb24sdG9UYWIsdG9Qb3NpdGlvbiIgZS5nLiBtb3ZlX2ZpZWxkcz0iTmF2aWdhdGlvbiwwLE1haW4sMHwnTmF2aWdhdGlvbicsMSwnTWFpbicsMSIgPC9saT4NCiAgIDxsaT5yZW5hbWVfdGFiIChvcHRpb25hbCkgLSBqdXN0IHJlbmFtZXMgb25lIG9yIG1vcmUgdGFicy4gRm9ybWF0IHJlbmFtZV90YWI9ImZyb21UYWIsdG9UYWJ8ZnJvbVRhYix0b1RhYiIgZS5nLiByZW5hbWVfdGFiPSJOYXZpZ2F0aW9uLE1lbnUiLiBZZXMgLSBJIGtub3cgdGhlcmUgY2FuIGJlIGFjaGlldmVkIHRocm91Z2ggdGhlIG1vZHVsZV9jdXN0b20vbGFuZyBmaWxlcyAtIGl0IGp1c3Qgc2VlbWVkIG1vcmUgY29uc2lzdGVudCB0byBtZXNzIHdpdGggdGFicy9maWVsZHMgYWxsIGluIHRoZSBvbmUgcGxhY2UhPC9saT4NCjwvdWw+DQo8YnI+DQoNCg0KDQo8aDM+Z29vZ2xlRm9udFVybDwvaDM+DQo8cD57Z29vZ2xlRm9udFVybH0gcmV0dXJucyB0aGUgZnVsbCB1cmwgZm9yIGluY2x1ZGluZyBHb29nbGUgRm9udHMsIGUuZy4gZm9yIHVzZSBpbiBUaW55TUNFIGpzIGZpbGUuPC9wPg0KPHA+QWN0dWFsIGZvbnRzIGFyZSBzZXQgYnkgdGhlIEN1c3RvbUdTIHZhcmlhYmxlICdHb29nbGUgRm9udHMnLiBFbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgdGhhdCBmaWVsZCBpcyBibGFuay48L3A+DQo8cD5QYXJhbWV0ZXJzOjwvcD4NCjx1bD4NCiAgIDxsaT5jdXN0b21nc19maWVsZCAob3B0aW9uYWwpIC0gc3BlY2lmeSBhbiBhbHRlcm5hdGl2ZSBDdXN0b21HUyBmaWVsZCB0byB1c2UgKGRlZmF1bHQ6ICdHb29nbGUgRm9udHMnKS48L2xpPg0KPC91bD4NCg0KPHByZT4NCkNyZWF0ZSBDdXN0b21HUyBUZXh0ZmllbGQgJ0dvb2dsZSBGb250cycsIHNldCBoZWxwIHRvOg0KZS5nLiAnT3BlbitTYW5zfFJvYm90bycgb3IgJ09wZW4rU2Fuc3xSb2JvdG86d2dodEA3MDA7OTAwJyAgVXNlcyBHb29nbGUgRm9udHMgdjIgQVBJIGFuZCAnJmRpc3BsYXk9c3dhcCcgaXMgYWRkZWQgdG8gdGhlIHVybA0KDQpVc2UgdGhlIGZvbGxvd2luZyBpbiB0aGUgcGFnZSB0ZW1wbGF0ZToNCntpZiAhZW1wdHkoJGdvb2dsZUZvbnRVcmwpfQ0KICAgICZsdDtsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbSImZ3Q7DQogICAgJmx0O2xpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tIiBjcm9zc29yaWdpbiZndDsNCiAgICAmbHQ7bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InskZ29vZ2xlRm9udFVybH0iJmd0Ow0Key9pZn0NCjwvcHJlPg0KPGJyPg0KDQoNCg0KPGgzPmdhbGxlcnlDb3ZlcnM8L2gzPg0KPHA+c2V0cyAkZ2FsbGVyeUNvdmVycyBhcnJheSBjb250YWluaW5nIHRoZSBjb3ZlcmZpbGUgJiBjb3ZlcnBhdGggb2YgdGhlIGZ1bGwgc2l6ZSBjb3ZlciBpbWFnZXMgb2YgdGhlIGdhbGxlcmllcyBpbiAkZGlyIHBhcmFtZXRlciAocmVxdWlyZWQpPC9wPg0KPHA+dGhpcyBpcyByZXF1aXJlZCBhcyBieSBkZWZhdWx0IHRoZSBHYWxsZXJ5IG1vZHVsZSBvbmx5IHByb3ZpZGVzIGEgcHJlLXByb2Nlc3NlZCB0aHVtYm5haWwgZm9yIGFueSBkaXJlY3Rvcmllcywgbm90IGEgdXJsIHRvIHRoZSBmdWxsIGltYWdlLiBBbHNvIGRvZXNuJ3QgaGFuZGxlIGF1dG8tcm90YXRlIGNvcnJlY3RseS48L3A+DQo8cD5QYXJhbWV0ZXJzOjwvcD4NCjx1bD4NCiAgIDxsaT4gZGlyIChyZXF1aXJlZCkgLSBHYWxsZXJ5IGRpcmVjdG9yeSA8L2xpPg0KPC91bD4NCjxicj4NCg0KDQoNCjxoMz55b3VUdWJlUGxheWVyPC9oMz4NCjxwPnt5b3VUdWJlUGxheWVyIHZpZGVvaWQ9J0p1cjFGT19uWTk4J30gaW1iZWRzIGEgWW91VHViZSB2aWRlbyBwbGF5ZXIgaW4gdGhlIHBhZ2UuIFJlcXVpcmVzIEJvb3RzdHJhcCBDU1MuPC9wPg0KPHA+dXNlcyAiP3JlbD0wJm1vZGVzdGJyYW5kaW5nPTEiIHRvIGhpZGUgcmVsYXRlZCB2aWRlb3MgYXQgZW5kIGFuZCBzaG93IG1pbmltYWwgWW91VHViZSBicmFuZGluZzwvcD4NCjxwPmlmcmFtZSBpcyBub3cgYWx3YXlzIHJlc3BvbnNpdmUgLSBoZWlnaHQgJiB3aWR0aCBwYXJhbWF0ZXJzIG5vIGxvbmdlciBzdXBwb3J0ZWQgKHYxLjgpPC9wPg0KPHA+SWYgdGhlICd0aHVtYm5haWwnIG9wdGlvbiBpcyB1c2VkIGFuIGltYWdlIHdpbGwgYmUgZGlzcGxheWVkIGlubGluZSBhbmQgd2hlbiBjbGlja2VkIHdpbGwgcG9wdXAgYSBtb2RhbCBjb250YWluaW5nIHRoZSBZb3VUdWJlIGlmcmFtZS4gKHJlcXVpcmVzIGFkZGl0aW9uYWwganMpPC9wPg0KPHA+UGFyYW1ldGVyczo8L3A+DQo8dWw+DQogICA8bGk+dmlkZW9pZCAgKHJlcXVpcmVkKTwvbGk+DQogICA8bGk+c3RhcnQgICAgKG9wdGlvbmFsKSAtIGJlZ2lucyBwbGF5aW5nIHRoZSB2aWRlbyBhdCB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHNlY29uZHMgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHZpZGVvPC9saT4NCiAgIDxsaT5jbGFzcyAgICAob3B0aW9uYWwpIC0gYWRkaXRpb25hbCBjbGFzc2VzIHRvIGJlIGFkZGVkIGludG8gdGhlIGNsYXNzIGF0dHJpYnV0ZTwvbGk+DQogICA8bGk+YXV0b3BsYXkgKG9wdGlvbmFsKSAtIHNldCB0byAxIHRvIHR1cm4gb24gYXV0b3BsYXk8L2xpPg0KICAgPGxpPmFzcGVjdCAgIChvcHRpb25hbCkgLSBzcGVjaWZ5IGFzcGVjdCByYXRpbyAnMTZieTknIChkZWZhdWx0KSBvciAnNGJ5Myc8L2xpPg0KICAgPGxpPnRodW1ibmFpbCAob3B0aW9uYWwpIC0gd2lsbCBkaXNwbGF5IGFuIGltYWdlIGlubGluZSwgYW5kIHdoZW4gY2xpY2tlZCB3aWxsIHBvcHVwIGEgbW9kYWwgY29udGFpbmluZyB0aGUgWW91VHViZSBpZnJhbWUuIFVzZSBlaXRoZXI6ICdzbWFsbCcsICdtZWRpdW0nLCAnbWF4Jywgb3IgdGhlIHVybCBvZiBhbiBpbWFnZSB0byB1c2UuPGJyPg0KICAgJ3NtYWxsJyAoMzIweDE4MHB4KSwgJ21lZGl1bScgKDQ4MHgzNjBweCkgYW5kICdtYXgnICgxOTIweDEwODBweCkgYXJlIGFsbCBZb3VUdWJlIGdlbmVyYXRlZCB0aHVtYm5haWxzLg0KICAgPGxpPnNpemUgICAgIChvcHRpb25hbCkgLSBzZXRzIHRoZSBzaXplIG9mIHRoZSBwb3B1cCBtb2RhbCAod2hlbiAndGh1bWJuYWlsJyBpcyB1c2VkKSB1c2UgJ3NtJywgJ21kJywgJ2xnJywgJ3hsJzwvbGk+DQo8L3VsPg0KPHA+Tm90ZTogaWYgeW91IHdpc2ggdG8gbW9kaWZ5IHRoZSB0ZW1wbGF0ZSBjb3B5IC9VdGlsaXRpZXMvdGVtcGxhdGVzL3lvdVR1YmVQbGF5ZXJfdGVtcGxhdGUudHBsIGludG8gYXNzZXRzL21vZHVsZV9jdXN0b20vVXRpbGl0aWVzL3RlbXBsYXRlcy95b3VUdWJlUGxheWVyX3RlbXBsYXRlLnRwbCBhbmQgbW9kaWZ5IHRoYXQgdmVyc2lvbi4gKE5vdCBjaGFuZ2VkIGJ5IG1vZHVsZSB1cGdyYWRlcykuPC9wPg0KPGJyPg0KDQoNCg0KPGgzPmNzc01pbmlmaWVyPC9oMz4NCjxwPlRoaXMgQ01TTVMgY3NzTWluaWZpZXIgcGx1Z2luIGxldHMgYSB1c2VyIGNvbnZlcnQgdGhlIGRlZmF1bHQge2Ntc19zdHlsZXNoZWV0fSBpbnRvIGEgbWluaWZpZWQgY3NzIGZpbGUuPC9wPg0KPHA+VGhpcyBmdW5jdGlvbiB0YWtlcyBjc3MgYW5kIGNvbXByZXNzZXMgaXQsIHJlbW92aW5nIHVubmVjY2Vzc2FyeSB3aGl0ZXNwYWNlLCBjb2xvbnMsIHJlbW92aW5nIHVubmVjY2Vzc2FyeSBweC9lbSBkZWNsYXJhdGlvbnMgZXRjLjwvcD4NCjxwPlJlcGxhY2UgdGhlIGRlZmF1bHQge2Ntc19zdHlsZXNoZWV0fSB0YWcgd2l0aDo8YnI+DQogICA8Y29kZT57Y3NzTWluaWZpZXIgY3NzPSJ7Y21zX3N0eWxlc2hlZXQgbm9saW5rcz10cnVlfSJ9PC9jb2RlPjwvcD4NCjxwPlBhcmFtZXRlcnM6PC9wPg0KPHVsPg0KICAgPGxpPihyZXF1aXJlZCkgY3NzIChzdHJpbmcpIC0gY3NzIGZpbGVuYW1lIDwvbGk+DQogICA8bGk+KG9wdGlvbmFsKSBub21pbmlmeSAoc3RyaW5nKSAtIGlmIHNldCB0aGUgdW5taW5pZmllZCBjc3MgaXMgb3V0cHV0IChmb3IgZGVidWdnaW5nKTwvbGk+DQo8L3VsPg0KPGJyPg0KDQoNCg0KPGgzPnR3aXR0ZXJGZWVkPC9oMz4NCjxwPm91dHB1dHMgYSBUd2l0dGVyIEZlZWQgKHNlZTogaHR0cHM6Ly9kZXYudHdpdHRlci5jb20vd2ViL2VtYmVkZGVkLXRpbWVsaW5lcyBmb3IgZGV0YWlscykuPC9wPg0KPHA+QWRkIHRoZSB0YWcge3R3aXR0ZXJGZWVkfSBpbnRvIGEgV2lkZ2V0IG9yIEZvb3RlciwgZXRjLiBVc2VzIEN1c3RvbUdTLlR3aXR0ZXIgYXMgZGVmYXVsdCBzY3JlZW5fbmFtZSBvciB0aGUgcHJvdmlkZWQgcGFyYW1ldGVyczwvcD4NCjxwPnRlc3Qgd2l0aDoge3R3aXR0ZXJGZWVkIHNjcmVlbl9uYW1lPSdObzFGYXJtZXJKYWtlJyB3aWR0aD01MDAgaGVpZ2h0PTUwMCB0aGVtZT1kYXJrIGxpbmtfY29sb3I9JyNBQUFBNTInIGJvcmRlcl9jb2xvcj1yZWQgY2hyb21lX29wdGlvbnM9J25vaGVhZGVyIG5vZm9vdGVyIG5vYm9yZGVycyBub3Njcm9sbGJhcid9PC9wPg0KPHA+UGFyYW1ldGVyczo8L3A+DQo8dWw+DQogICA8bGk+KG9wdGlvbmFsKSBzY3JlZW5fbmFtZSAoc3RyaW5nKSAtIHVzZXMgQ3VzdG9tR1MuVHdpdHRlciBhcyBkZWZhdWx0LCBvciBlLmcuICdObzFGYXJtZXJKYWtlJzwvbGk+DQogICA8bGk+KG9wdGlvbmFsKSB3aWR0aCAoaW50KSAtIGxlYXZlIGVtcHR5IGZvciByZXNwb25zaXZlPC9saT4NCiAgIDxsaT4ob3B0aW9uYWwpIGhlaWdodCAoaW50KSAtIGRlZmF1bHQgaXMgMzAwPC9saT4NCiAgIDxsaT4ob3B0aW9uYWwpIHRoZW1lIChzdHJpbmcpIC0gJ2xpZ2h0JyAoZGVmYXVsdCkgb3IgJ2Rhcms8L2xpPg0KICAgPGxpPihvcHRpb25hbCkgbGlua19jb2xvciAoc3RyaW5nKSAtIGUuZy4gJyNBQUFBNTInIDwvbGk+DQogICA8bGk+KG9wdGlvbmFsKSBib3JkZXJfY29sb3IgKHN0cmluZykgLSBvcHRpb25hbCBvciBzZXQgaW4gQ1NTPC9saT4NCiAgIDxsaT4ob3B0aW9uYWwpIGNocm9tZV9vcHRpb25zIChzdHJpbmcpIC0gMSBvciBtb3JlIG9mIChzcGFjZSBzZXBhcmF0ZWQpOg0KICAgICAgICAgICAgICAgICAgICAgICAgJ25vaGVhZGVyIG5vZm9vdGVyIG5vYm9yZGVycyBub3Njcm9sbGJhciB0cmFuc3BhcmVudCc8L2xpPg0KPC91bD4NCjxwPk5vdGU6IGlmIHlvdSB3aXNoIHRvIG1vZGlmeSB0aGUgdGVtcGxhdGUgY29weSAvVXRpbGl0aWVzL3RlbXBsYXRlcy90d2l0dGVyRmVlZF90ZW1wbGF0ZS50cGwgaW50byBhc3NldHMvbW9kdWxlX2N1c3RvbS9VdGlsaXRpZXMvdGVtcGxhdGVzL3R3aXR0ZXJGZWVkX3RlbXBsYXRlLnRwbCBhbmQgbW9kaWZ5IHRoYXQgdmVyc2lvbi4gKE5vdCBjaGFuZ2VkIGJ5IG1vZHVsZSB1cGdyYWRlcykuPC9wPg0KPGJyPg0KDQoNCg0KPGgzPmZhY2Vib29rRmVlZDwvaDM+DQo8cD5vdXRwdXRzIGEgRmFjZWJvb2sgUGFnZSBGZWVkIChzZWU6IGh0dHBzOi8vZGV2ZWxvcGVycy5mYWNlYm9vay5jb20vZG9jcy9wbHVnaW5zL3BhZ2UtcGx1Z2luLyBmb3IgZGV0YWlscykuPC9wPg0KPHA+QWRkIHRoZSB0YWcge2ZhY2Vib29rRmVlZH0gaW50byBhIFdpZGdldCBvciBGb290ZXIsIGV0Yy4gVXNlcyBDdXN0b21HUy5GYWNlYm9vayBhcyBkZWZhdWx0IHBhZ2VJZCBvciB0aGUgcHJvdmlkZWQgcGFyYW1ldGVyczwvcD4NCjxwPnRlc3Qgd2l0aDoge2ZhY2Vib29rRmVlZCBwYWdlSWQ9J05vMUZhcm1lckpha2UnIHdpZHRoPTUwMCBoZWlnaHQ9NTAwIHRoZW1lPWRhcmsgbGlua19jb2xvcj0nI0FBQUE1MicgYm9yZGVyX2NvbG9yPXJlZCBjaHJvbWVfb3B0aW9ucz0nbm9oZWFkZXIgbm9mb290ZXIgbm9ib3JkZXJzIG5vc2Nyb2xsYmFyJ308L3A+DQo8cD5QYXJhbWV0ZXJzOjwvcD4NCjx1bD4NCiAgIDxsaT53aWR0aCAob3B0aW9uYWwpIC0gVGhlIHBpeGVsIHdpZHRoIG9mIHRoZSBwbHVnaW4uIE1pbi4gaXMgMTgwIGFuZCBNYXguIGlzIDUwMDwvbGk+DQogICA8bGk+aGVpZ2h0IChvcHRpb25hbCkgLSBUaGUgcGl4ZWwgaGVpZ2h0IG9mIHRoZSBwbHVnaW4uIE1pbi4gaXMgNzA8L2xpPg0KICAgPGxpPmhpZGVDb3ZlciAob3B0aW9uYWwpIC0gSGlkZSBjb3ZlciBwaG90byBpbiB0aGUgaGVhZGVyPC9saT4NCiAgIDxsaT5zaG93RmFjZXBpbGUgKG9wdGlvbmFsKSAtIFNob3cgcHJvZmlsZSBwaG90b3Mgd2hlbiBmcmllbmRzIGxpa2UgdGhpczwvbGk+DQogICA8bGk+c2hvd1Bvc3RzIChvcHRpb25hbCkgLSBTaG93IHBvc3RzIGZyb20gdGhlIFBhZ2UncyB0aW1lbGluZTwvbGk+DQogICA8bGk+aGlkZUN0YSAob3B0aW9uYWwpIC0gSGlkZSB0aGUgY3VzdG9tIGNhbGwgdG8gYWN0aW9uIGJ1dHRvbiAoaWYgYXZhaWxhYmxlKTwvbGk+DQogICA8bGk+c21hbGxIZWFkZXIgKG9wdGlvbmFsKSAtIFVzZSB0aGUgc21hbGwgaGVhZGVyIGluc3RlYWQ8L2xpPg0KICAgPGxpPmFkYXB0Q29udGFpbmVyV2lkdGggKG9wdGlvbmFsKSAtIFRyeSB0byBmaXQgaW5zaWRlIHRoZSBjb250YWluZXIgd2lkdGggLSBzZW1pLXJlc3BvbnNpdmU8L2xpPg0KPC91bD4NCjxwPk5vdGU6IGlmIHlvdSB3aXNoIHRvIG1vZGlmeSB0aGUgdGVtcGxhdGUgY29weSAvVXRpbGl0aWVzL3RlbXBsYXRlcy9mYWNlYm9va0ZlZWRfdGVtcGxhdGUudHBsIGludG8gYXNzZXRzL21vZHVsZV9jdXN0b20vVXRpbGl0aWVzL3RlbXBsYXRlcy9mYWNlYm9va0ZlZWRfdGVtcGxhdGUudHBsIGFuZCBtb2RpZnkgdGhhdCB2ZXJzaW9uLiAoTm90IGNoYW5nZWQgYnkgbW9kdWxlIHVwZ3JhZGVzKS48L3A+DQo8YnI+DQoNCg0KDQo8aDM+Z2V0Q3VzdG9tR1M8L2gzPg0KPHA+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIEN1c3RvbUdTIHNldHRpbmcuICBXaWxsIHdvcmsgaW4gYWRtaW4gcGFnZSB3aGVuIEN1c3RvbUdTIGhhc24ndCBiZWVuIHNldCwgZS5nLiBmb3Igc2V0dGluZyB0aGUgV2lkZ2V0IHN0eWxlcyB0aGUgc2FtZSBhcyBTZWN0aW9uIHN0eWxlcy48L3A+DQo8cD5Vc2FnZSAtICBhZGQgdGhlIHRhZzoge2dldEN1c3RvbUdTIGN1c3RvbWdzX2ZpZWxkPSdzZXR0aW5nIG5hbWUnfTwvcD4NCjxwPlBhcmFtZXRlcnM6PC9wPg0KPHVsPg0KICAgPGxpPmN1c3RvbWdzX2ZpZWxkIChyZXF1aXJlZCkgLSBUaGUgbmFtZSAod2l0aCBzcGFjZXMpIG9mIHRoZSBDdXN0b21HUyBmaWVsZCB0byByZXR1cm4gdGhlIHZhbHVlIG9mLjwvbGk+DQo8L3VsPg0KPGJyPg0KDQoNCg0KPGgzPmFkbWluVXNlcjwvaDM+DQo8cD5UZXN0cyBpbiB0aGUgZnJvbnQgZW5kIHZpc2l0b3IgaXMgYWxzbyBsb2dnZWQgaW4gdG8gdGhlIENNU01TIEFkbWluLiBSZXR1cm5zIHRydWUgb3IgZmFsc2UuPC9wPg0KPHA+VXNhZ2UgLSAgYWRkIHRoZSB0YWc6IHtpZiB7YWRtaW5Vc2VyfX1ZZXMgLSBJUyBBRE1JTiBVU0VSe2Vsc2V9Tk8gLSBub3QgQWRtaW4gVXNlcnsvaWZ9PC9wPg0KPHA+UGFyYW1ldGVyczo8L3A+DQo8dWw+DQogICA8bGk+cmVkaXJlY3QgKG9wdGlvbmFsKSAtIG5vdCByZWNvbW1lbmRlZCBpbiBtb3N0IGNhc2VzLiBJZiBzZXQgYW5kIHZpc3RvciBub3QgbG9nZ2VkIGluLCB3aWxsIHJlZGlyZWN0IHRvIHRoZSBhZG1pbiBsb2dpbiBwYWdlLjwvbGk+DQogICA8bGk+YXNzaWduIChvcHRpb25hbCkgLSB3aWxsIGFzc2lnbiB0aGUgYm9vbGVhbiByZXN1bHQgdG8gdGhlIGdpdmVuIHZhcmlhYmxlIG5hbWU8L2xpPg0KICAgcmVkaXJlY3QNCjwvdWw+DQo8YnI+DQoNCg0KDQo8aDM+YWRtaW5BY3Rpb25Vcmw8L2gzPg0KPHA+R2VuZXJhdGVzIGFuIGFkbWluIGFjdGlvbiB1cmwgZm9yIHVzZSBvbiBhIGZyb250ZW5kIHBhZ2UsIGJ1dCBvbmx5IGlmIHRoZSBmcm9udCBlbmQgdmlzaXRvciBpcyBhbHNvIGxvZ2dlZCBpbiB0byB0aGUgQ01TTVMgQWRtaW4uIFNpbWlsYXIgdG8ge2Ntc19hY3Rpb25fdXJsfS48L3A+DQo8cD5Vc2FnZSAtICBlLmcuIGFkZCB0aGUgdGFnOiB7YWRtaW5BY3Rpb25VcmwgbW9kdWxlPUNNU0NvbnRlbnRNYW5hZ2VyIGFjdGlvbj1hZG1pbl9lZGl0Y29udGVudCBjb250ZW50X2lkPSRjb250ZW50X2lkfSBpbnRvIGEgYnV0dG9uIGhyZWYuPC9wPg0KPHA+UGFyYW1ldGVyczo8L3A+DQo8dWw+DQogICA8bGk+bW9kdWxlIC0gKG9wdGlvbmFsKSAtIFRoZSBtb2R1bGUgbmFtZSB0byBnZW5lcmF0ZSBhIFVSTCBmb3IuIFRoaXMgcGFyYW1ldGVyIGlzIG5vdCBuZWNlc3NhcnkgaWYgZ2VuZXJhdGluZyBhIFVSTCBmcm9tIHdpdGhpbiBhIG1vZHVsZSBhY3Rpb24gdG8gYW4gYWN0aW9uIHdpdGhpbiB0aGUgc2FtZSBtb2R1bGUuPC9saT4NCiAgIDxsaT5hY3Rpb24gLSAocmVxdWlyZWQpIC0gVGhlIGFjdGlvbiBuYW1lIHRvIGdlbmVyYXRlIGEgVVJMIHRvLjwvbGk+DQogICA8bGk+cmV0dXJuaWQgLSAob3B0aW9uYWwpIC0gVGhlIGludGVnZXIgcGFnZWlkIHRvIGRpc3BsYXkgdGhlIHJlc3VsdHMgb2YgdGhlIGFjdGlvbiBpbi4gVGhpcyBwYXJhbWV0ZXIgaXMgbm90IG5lY2Vzc2FyeSBpZiB0aGUgYWN0aW9uIGlzIHRvIGJlIGRpc3BsYXllZCBvbiB0aGUgY3VycmVudCBwYWdlLCBvciBpZiB0aGUgVVJMIGlzIHRvIGFuIGFkbWluIGFjdGlvbiBmcm9tIHdpdGhpbiBhbiBhZG1pbiBhY3Rpb24uPC9saT4NCiAgIDxsaT5taWQgLSAob3B0aW9uYWwpIC0gVGhlIG1vZHVsZSBhY3Rpb24gaWQuIFRoaXMgZGVmYXVsdHMgdG8gIm0xXyIgZm9yIGFkbWluIGFjdGlvbnMsIGFuZCAiY250bnQwMSIgZm9yIGZyb250ZW5kIGFjdGlvbnMuPC9saT4NCiAgIDxsaT5mb3JqcyAtIChvcHRpb25hbCkgLSBBbiBvcHRpb25hbCBpbnRlZ2VyIGluZGljYXRpbmcgdGhhdCB0aGUgZ2VuZXJhdGVkIFVSTCBzaG91bGQgYmUgc3VpdGFibGUgZm9yIHVzZSBpbiBKYXZhU2NyaXB0LjwvbGk+DQogICA8bGk+YXNzaWduIC0gKG9wdGlvbmFsKSAtIEFzc2lnbiB0aGUgb3V0cHV0IFVSTCB0byB0aGUgbmFtZWQgc21hcnR5IHZhcmlhYmxlLjwvbGk+DQo8L3VsPg0KPGJyPg0KDQoNCg0KPGgzIGlkPSJnb29nbGVNYXAiPmdvb2dsZU1hcDwvaDM+DQo8cD5DcmVhdGVzIGEgc2ltcGxlIEdvb2dsZSBNYXAgdXNpbmcgdGhlIEdvb2dsZSBNYXBzIEVtYmVkIEFQSS4gU2VlOiA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2VtYmVkL2d1aWRlIj5odHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vZW1iZWQvZ3VpZGU8L2E+PC9wPg0KPHA+VGhpcyBpcyBhbHNvIGEgc2ltcGxlIHJlcGxhY2VtZW50IGZvciB0aGUgQ0dHb29nbGVNYXBzIG1vZHVsZS4gV29ya3MgZmluZSBmb3IgMSAncGxhY2UnIGFuZCBmb3IgbWFueSBvdGhlciBvcHRpb25zLjwvcD4NCjxwPk5vdGU6IHJlY29tbWVuZCB1c2luZyBQbGFjZSBJRHMgYXMgYSBzdGFibGUgd2F5IHRvIHVuaXF1ZWx5IGlkZW50aWZ5IGEgcGxhY2UuIFNlZTogPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L2V4YW1wbGVzL3BsYWNlcy1wbGFjZWlkLWZpbmRlciI+aHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2phdmFzY3JpcHQvZXhhbXBsZXMvcGxhY2VzLXBsYWNlaWQtZmluZGVyPC9hPjwvcD4NCjxwPlVzYWdlIC0gIGUuZy4gYWRkIHRoZSB0YWc6IHtnb29nbGVNYXAgYXBpa2V5PVlPVVJfQVBJX0tFWSBxPSdwbGFjZV9pZDpDaElKMmRHTWpNTUVka2dScVZxa3VYUWtqN2MnfSBpbnRvIGEgdGVtcGxhdGUuPGJyPlNlZTogPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9lbWJlZC9nZXQtYXBpLWtleSI+aHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2VtYmVkL2dldC1hcGkta2V5PC9hPiBmb3IgaG93IHRvIGdldCAnWU9VUl9BUElfS0VZJzwvcD4NCjxwPlBhcmFtZXRlcnM6PC9wPg0KPHVsPg0KICAgPGxpPmFwaWtleSAtIChyZXF1aXJlZCkgLSBZb3VyIEdvb2dsZSBpc3N1ZWQgQVBJIEtleS48L2xpPg0KICAgPGxpPmhlaWdodCAtIChvcHRpb25hbCkgZGVmYXVsdDo1MDAgLSB3aWR0aCBpcyBzZXQgdG8gMTAwJSBmb3IgcmVzcG9uc2l2ZSBiZWhhdmlvdXI8L2xpPg0KICAgPGxpPm1vZGUgLSAob3B0aW9uYWwpIGRlZmF1bHQ6J3BsYWNlJyAtIG9uZSBvZiBwbGFjZSwgc2VhcmNoLCB2aWV3LCBkaXJlY3Rpb25zLCBvciBzdHJlZXR2aWV3LjwvbGk+DQogICA8bGk+cSAtIChvcHRpb25hbCkgLSB0aGUgcGxhY2UgdG8gaGlnaGxpZ2h0IG9uIHRoZSBtYXAuIEl0IGFjY2VwdHMgYSBsb2NhdGlvbiBhcyBlaXRoZXIgYSBwbGFjZSBuYW1lLCBhZGRyZXNzLCBvciBwbGFjZSBJRC48YnI+DQogICBQbGFjZSBJRHMgc2hvdWxkIGJlIHByZWZpeGVkIHdpdGggcGxhY2VfaWQ6IGUuZy4gcT0ncGxhY2VfaWQ6Q2hJSjJkR01qTU1FZGtnUnFWcWt1WFFrajdjJyA8L2xpPg0KICAgPGxpPnpvb20gLSAob3B0aW9uYWwpIGRlZmF1bHQ6MTEgLSAwICh0aGUgd2hvbGUgd29ybGQpIHRvIDIxIChpbmRpdmlkdWFsIGJ1aWxkaW5ncyk8L2xpPg0KICAgPGxpPm1hcHR5cGUgLSAob3B0aW9uYWwpIGRlZmF1bHQ6J3JvYWRtYXAnIC0gJ3JvYWRtYXAnIG9yICdzYXRlbGxpdGUnPC9saT4NCiAgIDxsaT5wYXJhbWV0ZXJzIC0gKG9wdGlvbmFsKSAtIGFuIGFycmF5IGtleSAmIHZhbHVlIHBhaXJzIHRvIGJlIHBhc3NlZCB0byBHb29nbGUgTWFwcyBhcGkuIFNlZSA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFwcy9kb2N1bWVudGF0aW9uL2VtYmVkL2d1aWRlIj5odHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vZW1iZWQvZ3VpZGU8L2E+PC9saT4NCjwvdWw+DQo8YnI+DQoNCg0KDQo8aDMgaWQ9Imluc3RhZ3JhbUZlZWQiPmluc3RhZ3JhbUZlZWQ8L2gzPg0KPHA+Q3JlYXRlcyBhbiBJbnN0YWdyYW0gbWVkaWEgZmVlZCBvZiB1cCB0byB0aGUgbGFzdCAyNSBpbWFnZXMuIFVzaW5nIHRoZSBJbnN0YWdyYW0gQmFzaWMgRGlzcGxheSBBUEkuIFNlZTogPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVycy5mYWNlYm9vay5jb20vZG9jcy9pbnN0YWdyYW0tYmFzaWMtZGlzcGxheS1hcGkvIj5odHRwczovL2RldmVsb3BlcnMuZmFjZWJvb2suY29tL2RvY3MvaW5zdGFncmFtLWJhc2ljLWRpc3BsYXktYXBpLzwvYT48L3A+DQo8cD5UaGUgYWNjZXNzIHRva2VuIGlzIHZhbGlkIGZvciA2MCBkYXlzLCBidXQgaXMgYXV0b21hdGljYWxseSByZWdlbmVyYXRlZCBldmVyeSA3IGRheXMsIHRvIGtlZXAgaXQgY3VycmVudC4gVGhlIG1lZGlhIGRhdGEgaXMgcmVmcmVzaGVkIGhvdXJseSBhbmQgY2FjaGVkIGxvY2FsbHkgdG8gaW1wcm92ZSBzcGVlZC4gSXQgaXMgYWxzbyByZWNvbW1lbmRlZCB0byB1c2UgZWl0aGVyIFNtYXJ0SW1hZ2Ugb3IgQ0dTbWFydEltYWdlIGluIHRoZSB0ZW1wbGF0ZSB0byBnZW5lcmF0ZSBsb2NhbGx5IGNhY2hlZCBhbmQgb3B0aW1pc2VkIHRodW1ibmFpbHMuPC9wPg0KPHA+VXNhZ2UgLSAgZS5nLiBhZGQgdGhlIHRhZzoge2luc3RhZ3JhbUZlZWQgdGVtcGxhdGU9J3lvdXJfaW5zdGFncmFtX3RlbXBsYXRlJ30gaW50byBhIHRlbXBsYXRlLjwvcD4NCjxwPlBhcmFtZXRlcnM6PC9wPg0KPHVsPg0KICAgPGxpPnRlbXBsYXRlIC0gKG9wdGlvbmFsIGJ1dCByZWNvbW1lbmRlZCkgLSBuYW1lIG9mIGEgRGVzaWduIE1hbmFnZXIgdGVtcGxhdGUuIFlvdSBjYW4gY29weSB0aGUgZGVmYXVsdCB0ZW1wbGF0ZSBmcm9tICcvVXRpbGl0aWVzL3RlbXBsYXRlcy9pbnN0YWdyYW1GZWVkX3RlbXBsYXRlLnRwbCc8L2xpPg0KPC91bD4NCjxwPlRvIGdldCBhY2Nlc3MgdG8gdGhlIEluc3RhZ3JhbSBmZWVkIGRldGFpbHMsIHlvdSBuZWVkIHRvIGNvbXBsZXRlIG11bHRpcGxlIHN0ZXBzIHRvIHNldHVwIGEgRmFjZWJvb2sgZm9yIERldmVsb3BlcnMgQXBwLiBTb3JyeSB0aGVyZSBhcmUgc28gbWFueSBzdGVwcywgYnV0IHRoaXMgaXMgdGhlIGJlc3Qgb3B0aW9uIEkgY291bGQgaWRlbnRpZnkuPC9wPg0KPHByZT4NClJlZ2lzdGVyIGEgRmFjZWJvb2sgRGV2ZWxvcGVyIEFwcDoNCjEuIExvZ2luIHRvIEZhY2Vib29rLCB0aGVuIGdvIHRvIEZhY2Vib29rIGZvciBEZXZlbG9wZXJzOiA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXJzLmZhY2Vib29rLmNvbS9hcHBzLyI+aHR0cHM6Ly9kZXZlbG9wZXJzLmZhY2Vib29rLmNvbS9hcHBzLzwvYT4NCjIuIENsaWNrIG9uICdDcmVhdGUgQXBwJyBhbmQgc2VsZWN0IHRoZSBvcHRpb24gJ0NvbnN1bWVyJyAmIENvbnRpbnVlDQozLiBTZXQgdGhlICdBcHAgRGlzcGxheSBOYW1lJywgJ0FwcCBDb250YWN0IEVtYWlsJyB0aGVuIGNsaWNrICdDcmVhdGUgQXBwJzoNCiAgICDigKIgQXBwIERpc3BsYXkgTmFtZTogZS5nLiAnQ01TTVMgVXRpbGl0aWVzIC0gd2Vic2l0ZV9uYW1lJyAoY2Fubm90IGluY2x1ZGUgSW5zdGFncmFtLCBJbnN0YSwgRmFjZWJvb2ssIGV0YywgMzIgY2hhcmFjdGVycyBtYXguKQ0KICAgIOKAoiBBcHAgQ29udGFjdCBFbWFpbDogeW91ciBGYWNlYm9vayBvciBvdGhlciBlbWFpbCBhY2NvdW50DQogICAg4oCiIERvIHlvdSBoYXZlIGEgQnVzaW5lc3MgTWFuYWdlciBhY2NvdW50PzogY2FuIGxlYXZlIGVtcHR5DQo0LiBUaGVuICdBZGQgUHJvZHVjdHMgdG8gWW91ciBBcHDigJkuIEZpbmQgJ0luc3RhZ3JhbSBCYXNpYyBEaXNwbGF5JywgYW5kIGNsaWNrIHRoZSAnU2V0IFVwJyBidXR0b24gdG8gcHJvY2VlZC4NCjUuIE9uIHRoZSBuZXh0IHBhZ2UsIHNjcm9sbCBkb3duIHRvIHRoZSBib3R0b20gYW5kIGNsaWNrIHRoZSAnQ3JlYXRlIE5ldyBBcHAnIGJ1dHRvbi4gVGhpcyBzaG91bGQgdHJpZ2dlciBhIHBvcCB1cCB3aW5kb3csIGRvdWJsZSBjaGVjayB5b3VyICdEaXNwbGF5IE5hbWUnIGFuZCB0aGVuIGNsaWNrIHRoZSAnQ3JlYXRlIEFwcCcgYnV0dG9uLg0KDQpOb3csIHlvdSBuZWVkIHRvIGZpbmFsaXplIHNvbWUgb2YgdGhlIHNldHRpbmdzOg0KNi4gU2Nyb2xsIGRvd24gdG8gdGhlIGJvdHRvbSBvZiB0aGUgYXBwIGRhc2hib2FyZCB0byAnTXkgUHJvZHVjdHMnID4gJ0luc3RhZ3JhbSBCYXNpYyBEaXNwbGF5JyBhbmQgY2xpY2sgJ1NldHRpbmdzJy4NCjcuIFNjcm9sbCBkb3duIGFuZCBmaWxsIGZvbGxvd2luZyBmaWVsZHMgd2l0aCB5b3VyIHdlYnNpdGXigJlzIHJvb3QgVVJMIChodHRwcyByZXF1aXJlZCk6DQogICAg4oCiIFZhbGlkIE9BdXRoIFJlZGlyZWN0IFVSSXMNCiAgICDigKIgRGVhdXRob3JpemUgQ2FsbGJhY2sgVVJMDQogICAg4oCiIERhdGEgRGVsZXRpb24gUmVxdWVzdHMNCjguIFNjcm9sbCB0byB0aGUgcGFnZSBib3R0b20gdG8gJ0FwcCBSZXZpZXcgZm9yIEluc3RhZ3JhbSBCYXNpYyBEaXNwbGF5JyBhbmQgY2xpY2sgJ0FkZCB0byBTdWJtaXNzaW9uJyBmb3IgYm90aCAnaW5zdGFncmFtX2dyYXBoX3VzZXJfcHJvZmlsZScgYW5kICdpbnN0YWdyYW1fZ3JhcGhfdXNlcl9tZWRpYScgcGVybWlzc2lvbnMuIFRoZW4gJ1NhdmUgQ2hhbmdlcycuIA0KOS4gVGhlbiBmaW5kIHRoZSAnVXNlciBUb2tlbiBHZW5lcmF0b3InIHNlY3Rpb24sIGNsaWNrICdBZGQgb3IgUmVtb3ZlIEluc3RhZ3JhbSBUZXN0ZXJzJy4gDQogICAg4oCiIHNjcm9sbCB0byB0aGUgJ0luc3RhZ3JhbSBUZXN0ZXJzJyBzZWN0aW9uLCBjbGljayAnQWRkIEluc3RhZ3JhbSBUZXN0ZXJzJw0KICAgIOKAoiBhZGQgdGhlIHVzZXJuYW1lIG9mIHRoZSBJbnN0YWdyYW0gYWNjb3VudCB5b3Ugd2FudCB0byBhZGQgdG8gdGhlIHdlYnNpdGUuDQoNCkF1dGhvcmlzZSBJbnN0YWdyYW0gYWNjZXNzOg0KMTAuIFRoZW4geW91IChvciB0aGUgb3duZXIgb2YgdGhhdCBJbnN0YWdyYW0gYWNjb3VudCkgbmVlZHMgdG8gYXV0aG9yaXNlIGFjY2VzczoNCiAgICBDb3VsZCB5b3UgcGxlYXNlIGF1dGhvcmlzZSB0aGUgd2Vic2l0ZSB0byBoYXZlIGFjY2VzcyB0byB5b3VyIEluc3RhZ3JhbSBwaG90b3MgYW5kIGRpc3BsYXkgdGhlbS4gKEl0IGNhbiBvbmx5IGRpc3BsYXkgcGhvdG9zICYgY2Fubm90IGNoYW5nZSBhbnl0aGluZykNCiAgICDigKIgT3BlbiBhIG5ldyB3ZWIgYnJvd3NlciBhbmQgZ28gdG8gd3d3Lmluc3RhZ3JhbS5jb20gYW5kIHNpZ24gaW50byB5b3VyIEluc3RhZ3JhbSBhY2NvdW50LiANCiAgICDigKIgTmF2aWdhdGUgdG8gKFByb2ZpbGUgSWNvbikgPiBFZGl0IFByb2ZpbGUgPiBBcHBzIGFuZCBXZWJzaXRlcyA+IFRlc3RlciBJbnZpdGVzIGFuZCBhY2NlcHQgdGhlIGludml0YXRpb24uDQoNCkdlbmVyYXRlIFVzZXIgVG9rZW4gZm9yICdVdGlsaXRpZXMnIG1vZHVsZToNCjExLiBPbmNlIGF1dGhvcmlzZWQsIGJhY2sgaW4gRmFjZWJvb2sgZm9yIERldmVsb3BlcnMgPiBQcm9kdWN0cyA+IEluc3RhZ3JhbSA+IEJhc2ljIERpc3BsYXkgPiBVc2VyIFRva2VuIEdlbmVyYXRvciwgdGhlIG5ld2x5IGF1dGhvcmlzZWQgSW5zdGFncmFtIGFjY291bnQgc2hvdWxkIGFwcGVhci4NCiAgICDigKIgVGhlbiBjbGljayAnR2VuZXJhdGUgVG9rZW4nIGJ1dHRvbiB0byBhdXRob3JpemUgYW5kIGdlbmVyYXRlIGEgbG9uZy1saXZlZCBhY2Nlc3MgdG9rZW4gZm9yIEluc3RhZ3JhbSBhbmQgY29weSBpdC4NCiAgICDigKIgVGhlbiBpbiAnVXRpbGl0aWVzJyBtb2R1bGUgPiBPcHRpb25zLCBwYXN0ZSB0aGlzIGludG8gdGhlICdOZXcgSW5zdGFncmFtIGxvbmctbGl2ZWQgYWNjZXNzIHRva2VuJyBhbmQgJ1VwZGF0ZSBUb2tlbi4NCjwvcHJlPg0KPGJyPg0KDQoNCg0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+QXMgcGVyIHRoZSBHUEwgbGljZW5jZSwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcyBpcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuDQpUaGUgbW9kdWxlIGF1dGhvciBpcyBub3Qgb2JsaWdhdGVkIHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhpcyBjb2RlLiBIb3dldmVyIHlvdSBtaWdodCBnZXQgc3VwcG9ydCB0aHJvdWdoIHRoZSBmb2xsb3dpbmc6PC9wPg0KPHVsPg0KICAgPGxpPkZvciBzdXBwb3J0LCBmaXJzdCA8c3Ryb25nPnNlYXJjaDwvc3Ryb25nPiB0aGUgPGEgaHJlZj0iLy9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtPC9hPiwgZm9yIGlzc3VlcyB3aXRoIHRoZSBtb2R1bGUgc2ltaWxhciB0byB0aG9zZSB5b3UgYXJlIGZpbmRpbmcuPC9saT4NCiAgIDxsaT5UaGVuLCBpZiBuZWNlc3NhcnksIG9wZW4gYSA8c3Ryb25nPm5ldyBmb3J1bSB0b3BpYzwvc3Ryb25nPiB0byByZXF1ZXN0IGhlbHAsIHdpdGggYSB0aG9yb3VnaCBkZXNjcmlwdGlvbiBvZiB5b3VyIGlzc3VlLCBhbmQgc3RlcHMgdG8gcmVwcm9kdWNlIGl0LjwvbGk+DQogICA8bGk+SWYgeW91IGZpbmQgYSBidWcgeW91IGNhbiA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL2J1Zy9saXN0LzE0MjEiPnN1Ym1pdCBhIEJ1ZyBSZXBvcnQ8L2E+LjwvbGk+DQogICA8bGk+Rm9yIGFueSBnb29kIGlkZWFzIHlvdSBjYW4gPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9mZWF0dXJlX3JlcXVlc3QvbGlzdC8xNDIxIj5zdWJtaXQgYSBGZWF0dXJlIFJlcXVlc3Q8L2E+LjwvbGk+DQogICA8bGk+SWYgeW91IGZvdW5kIHRoZSBNb2R1bGUgdXNlZnVsIC0gc2hvdXQgb3V0IHRvIG1lIG9uIFR3aXR0ZXIgPGEgaHJlZj0iLy90d2l0dGVyLmNvbS9LaXdpQ2hyaXNCVCI+QEtpd2lDaHJpc0JUPC9hPjwvbGk+DQo8L3VsPjxicj4NCg0KDQo8aDM+Q29weXJpZ2h0ICZhbXA7IExpY2VuY2U8L2gzPg0KPHA+Q29weXJpZ2h0IMKpIDIwMTksIENocmlzIFRheWxvciA8Y2hyaXMgYXQgYmlubm92YXRpdmUgZG90IGNvIGRvdCB1az4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD48YnI+DQo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgR05VIFB1YmxpYyBMaWNlbnNlIHYzLiBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gWW91IG1heSBvbmx5IHVzZSB0aGlzIHNvZnR3YXJlIHdoZW4gdGhlcmUgaXMgYSBjbGVhciBhbmQgb2J2aW91cyBpbmRpY2F0aW9uIGluIHRoZSBhZG1pbiBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgU2ltcGxlITwvcD48YnI+DQo8YnI+DQpFT0Q7DQoNCg0KDQoNCg0KDQoNCg0KIyMjIyMjIyMjICAjIyMgICAgIyMjICAjIyMjIyMjIyMjICAjIyMgICAgIyMjICAjIyMjIyMjIyMgICMjIyMjIyMjICAjIyMgICAgICAgIyMjIyMjIyMjICAjIyMjIyMjIyMNCiMjIyMjIyMjIyAgIyMjICAgICMjIyAgIyMjIyMjIyMjIyAgIyMjIyAgICMjIyAgIyMjIyMjIyMjICAjIyMjIyMjIyAgIyMjICAgICAgICMjIyMjIyMjIyAgIyMjIyMjIyMjDQojIyMgICAgICAgICMjIyAgICAjIyMgICMjIyAgICAjIyMgICMjIyMjICAjIyMgICMjIyAgICAgICAgIyMjICAgICAgICMjIyAgICAgICAjIyMgICAjIyMgICMjIw0KIyMjICAgICAgICAjIyMjIyMjIyMjICAjIyMjIyMjIyMjICAjIyMgIyMgIyMjICAjIyMgICAgICAgICMjIyMjIyMjICAjIyMgICAgICAgIyMjICAgIyMjICAjIyMNCiMjIyAgICAgICAgIyMjIyMjIyMjIyAgIyMjIyMjIyMjIyAgIyMjICAjIyMjIyAgIyMjICAgIyMjICAjIyMjIyMjIyAgIyMjICAgICAgICMjIyAgICMjIyAgIyMjICAgIyMjDQojIyMgICAgICAgICMjIyAgICAjIyMgICMjIyAgICAjIyMgICMjIyAgICMjIyMgICMjIyAgICMjIyAgIyMjICAgICAgICMjIyAgICAgICAjIyMgICAjIyMgICMjIyAgICMjIw0KIyMjIyMjIyMjICAjIyMgICAgIyMjICAjIyMgICAgIyMjICAjIyMgICAgIyMjICAjIyMjIyMjIyMgICMjIyMjIyMjICAjIyMjIyMjIyMgIyMjIyMjIyMjICAjIyMjIyMjIyMNCiMjIyMjIyMjIyAgIyMjICAgICMjIyAgIyMjICAgICMjIyAgIyMjICAgICMjIyAgIyMjIyMjIyMjICAjIyMjIyMjIyAgIyMjIyMjIyMjICMjIyMjIyMjIyAgIyMjIyMjIyMjDQoNCiRsYW5nWydjaGFuZ2Vsb2cnXSA9IDw8PCdFT0QnDQoNCjxoMz5WZXJzaW9uIDEuOCAtIDAyQXVnMjM8L2gzPg0KPHVsPg0KICAgPGxpPmdvb2dsZUZvbnRVcmwgLSB1cGRhdGVkIHRvIHVzZSB2MiBBUEkgYW5kICcmZGlzcGxheT1zd2FwJyBpcyBhZGRlZCB0byB0aGUgdXJsLiBTaG91bGQgYWxzbyB3b3JrIGZvciB2MSBzdHlsZSBmaWVsZCB2YWx1ZSAoJ3wnIHJlcGxhY2VkIGJ5ICcmZmFtaWx5PScpLjwvbGk+DQo8L3VsPg0KPGJyPg0KDQoNCjxoMz5WZXJzaW9uIDEuNy4yIC0gMjFKdW4yMzwvaDM+DQo8dWw+DQogICA8bGk+Zml4IHdhcm5pbmcgbWVzc2FnZXMgcGhwOCsgLSAoJHNtYXJ0eSkgbXVzdCBiZSBwYXNzZWQgYnkgcmVmZXJlbmNlLCB2YWx1ZSBnaXZlbjwvbGk+DQo8L3VsPg0KPGJyPg0KDQoNCjxoMz5WZXJzaW9uIDEuNy4xIC0gMTVKdW4yMzwvaDM+DQo8dWw+DQogICA8bGk+ZWRpdENvbnRlbnRUYWJzIC0gYnVnIGZpeGVzIGZvciBwaHAgd2FybmluZyAmIGVycm9yIHJlc2lsaWVuY2U8L2xpPg0KPC91bD4NCjxicj4NCg0KDQo8aDM+VmVyc2lvbiAxLjcgLSAyMk1heTIzPC9oMz4NCjx1bD4NCiAgIDxsaT55b3VUdWJlUGxheWVyIC0gYWRkZWQgc2l6ZSBwYXJhbWV0ZXIgKyB1cGdyYWRlZCB0byB1c2UgQlM1LjwvbGk+DQo8L3VsPg0KPGJyPg0KDQoNCjxoMz5WZXJzaW9uIDEuNi4xIC0gMTBKYW4yMzwvaDM+DQo8dWw+DQogICA8bGk+aW1wcm92ZW1lbnRzIHRvIGVkaXRDb250ZW50VGFicyB0byBtYWtlIGl0IG1vcmUgcmVzaWxpZW50IHRvIG1pc3NpbmcgdGFicyAmIGZpZWxkczwvbGk+DQo8L3VsPg0KPGJyPg0KDQoNCjxoMz5WZXJzaW9uIDEuNiAtIDMwTm92MjI8L2gzPg0KPHVsPg0KICAgPGxpPnVwZGF0ZSB0byBjc3NNaW5pZmllciBjb2RlIC0gdGhhbmtzIHRvIE1hZ2FsIGZvciB0aGUgY29kZSBhbmQgaGVhZHMgdXAgOik8L2xpPg0KPC91bD4NCjxicj4NCg0KDQo8aDM+VmVyc2lvbiAxLjUgLSAwMkp1bjIxPC9oMz4NCjx1bD4NCiAgIDxsaT5hZGRlZCBpbnN0YWdyYW1GZWVkIHRhZyAtIENyZWF0ZXMgYW4gSW5zdGFncmFtIG1lZGlhIGZlZWQgb2YgdXAgdG8gdGhlIGxhc3QgMjUgaW1hZ2VzLiBVc2luZyB0aGUgSW5zdGFncmFtIEJhc2ljIERpc3BsYXkgQVBJLjwvbGk+DQogICA8bGk+YWRkcyBhbiBhZG1pbiBwYWdlIGZvciBVdGlsaXRpZXMgbW9kdWxlPC9saT4NCjwvdWw+DQo8YnI+DQoNCg0KPGgzPlZlcnNpb24gMS40IC0gMjJBdWcyMDwvaDM+DQo8dWw+DQogICA8bGk+YWRkZWQgZ29vZ2xlTWFwIHRhZyAtIGEgc2ltcGxlIHJlcGxhY2VtZW50IGZvciBDR0dvb2dsZU1hcHM8L2xpPg0KPC91bD4NCjxicj4NCg0KDQo8aDM+VmVyc2lvbiAxLjMgLSAxNUp1bDIwPC9oMz4NCjx1bD4NCiAgIDxsaT5hZGRlZCBhZG1pbkFjdGlvblVybCB0YWcgLSB0aGFua3MgVmVsZGVuIDopPC9saT4NCjwvdWw+DQo8YnI+DQoNCg0KPGgzPlZlcnNpb24gMS4yIC0gMDJKdWwyMDwvaDM+DQo8dWw+DQogICA8bGk+YWRkZWQgYWRtaW5Vc2VyIHRhZyAtIHRoYW5rcyBWZWxkZW4gOik8L2xpPg0KPC91bD4NCjxicj4NCg0KPGgzPlZlcnNpb24gMS4xLjEgLSAxN0p1bjE5PC9oMz4NCjx1bD4NCiAgIDxsaT5taW5vciBidWcgZml4IGluIGhlbHA8L2xpPg0KPC91bD4NCjxicj4NCg0KPGgzPlZlcnNpb24gMS4xIC0gMTRNYXIxOTwvaDM+DQo8dWw+DQogICA8bGk+YWRkZWQgbm9taW5pZnkgcGFyYW1ldGVyPC9saT4NCiAgIDxsaT5FeHRyYSBoZWxwIG5vdGVzIGZvciBlZGl0Q29udGVudFRhYnM8L2xpPg0KPC91bD4NCjxicj4NCg0KPGgzPlZlcnNpb24gMS4wIC0gMTZGZWIxOTwvaDM+DQo8dWw+DQogICA8bGk+Zmlyc3QgcHVibGljIHJlbGVhc2U8L2xpPg0KPC91bD4NCjxicj4NCg0KRU9EOw0KDQoNCg==]]></data>
	</file>
	<file>
	  <filename>/lang/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lang/LICENCE.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFV0aWxpdGllcw0KIyBBdXRob3I6IENocmlzIFRheWxvcg0KIyBDb3B5cmlnaHQ6IChDKSAyMDE5IENocmlzIFRheWxvciwgY2hyaXNAYmlubm92YXRpdmUuY28udWsNCiMgTW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvdXRpbGl0aWVzDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMTkgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24gKGNvcHlyaWdodEBjbXNtYWRlc2ltcGxlLm9yZykNCiMgUHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUNCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMNCiMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7DQojIHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuDQojIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMNCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uDQojIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQ0KICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIDMsIDI5IEp1bmUgMjAwNw0KDQogQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiA8aHR0cDovL2ZzZi5vcmcvPg0KIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcw0KIG9mIHRoaXMgbGljZW5zZSBkb2N1bWVudCwgYnV0IGNoYW5naW5nIGl0IGlzIG5vdCBhbGxvd2VkLg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlYW1ibGUNCg0KICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgYSBmcmVlLCBjb3B5bGVmdCBsaWNlbnNlIGZvcg0Kc29mdHdhcmUgYW5kIG90aGVyIGtpbmRzIG9mIHdvcmtzLg0KDQogIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhbmQgb3RoZXIgcHJhY3RpY2FsIHdvcmtzIGFyZSBkZXNpZ25lZA0KdG8gdGFrZSBhd2F5IHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIHRoZSB3b3Jrcy4gIEJ5IGNvbnRyYXN0LA0KdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8NCnNoYXJlIGFuZCBjaGFuZ2UgYWxsIHZlcnNpb25zIG9mIGEgcHJvZ3JhbS0tdG8gbWFrZSBzdXJlIGl0IHJlbWFpbnMgZnJlZQ0Kc29mdHdhcmUgZm9yIGFsbCBpdHMgdXNlcnMuICBXZSwgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgdXNlIHRoZQ0KR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vc3Qgb2Ygb3VyIHNvZnR3YXJlOyBpdCBhcHBsaWVzIGFsc28gdG8NCmFueSBvdGhlciB3b3JrIHJlbGVhc2VkIHRoaXMgd2F5IGJ5IGl0cyBhdXRob3JzLiAgWW91IGNhbiBhcHBseSBpdCB0bw0KeW91ciBwcm9ncmFtcywgdG9vLg0KDQogIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QNCnByaWNlLiAgT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhhdCB5b3UNCmhhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZSBmb3INCnRoZW0gaWYgeW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQgaWYgeW91DQp3YW50IGl0LCB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBvciB1c2UgcGllY2VzIG9mIGl0IGluIG5ldw0KZnJlZSBwcm9ncmFtcywgYW5kIHRoYXQgeW91IGtub3cgeW91IGNhbiBkbyB0aGVzZSB0aGluZ3MuDQoNCiAgVG8gcHJvdGVjdCB5b3VyIHJpZ2h0cywgd2UgbmVlZCB0byBwcmV2ZW50IG90aGVycyBmcm9tIGRlbnlpbmcgeW91DQp0aGVzZSByaWdodHMgb3IgYXNraW5nIHlvdSB0byBzdXJyZW5kZXIgdGhlIHJpZ2h0cy4gIFRoZXJlZm9yZSwgeW91IGhhdmUNCmNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZg0KeW91IG1vZGlmeSBpdDogcmVzcG9uc2liaWxpdGllcyB0byByZXNwZWN0IHRoZSBmcmVlZG9tIG9mIG90aGVycy4NCg0KICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyDQpncmF0aXMgb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBwYXNzIG9uIHRvIHRoZSByZWNpcGllbnRzIHRoZSBzYW1lDQpmcmVlZG9tcyB0aGF0IHlvdSByZWNlaXZlZC4gIFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHRoZXksIHRvbywgcmVjZWl2ZQ0Kb3IgY2FuIGdldCB0aGUgc291cmNlIGNvZGUuICBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkNCmtub3cgdGhlaXIgcmlnaHRzLg0KDQogIERldmVsb3BlcnMgdGhhdCB1c2UgdGhlIEdOVSBHUEwgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIHR3byBzdGVwczoNCigxKSBhc3NlcnQgY29weXJpZ2h0IG9uIHRoZSBzb2Z0d2FyZSwgYW5kICgyKSBvZmZlciB5b3UgdGhpcyBMaWNlbnNlDQpnaXZpbmcgeW91IGxlZ2FsIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IGl0Lg0KDQogIEZvciB0aGUgZGV2ZWxvcGVycycgYW5kIGF1dGhvcnMnIHByb3RlY3Rpb24sIHRoZSBHUEwgY2xlYXJseSBleHBsYWlucw0KdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBmcmVlIHNvZnR3YXJlLiAgRm9yIGJvdGggdXNlcnMnIGFuZA0KYXV0aG9ycycgc2FrZSwgdGhlIEdQTCByZXF1aXJlcyB0aGF0IG1vZGlmaWVkIHZlcnNpb25zIGJlIG1hcmtlZCBhcw0KY2hhbmdlZCwgc28gdGhhdCB0aGVpciBwcm9ibGVtcyB3aWxsIG5vdCBiZSBhdHRyaWJ1dGVkIGVycm9uZW91c2x5IHRvDQphdXRob3JzIG9mIHByZXZpb3VzIHZlcnNpb25zLg0KDQogIFNvbWUgZGV2aWNlcyBhcmUgZGVzaWduZWQgdG8gZGVueSB1c2VycyBhY2Nlc3MgdG8gaW5zdGFsbCBvciBydW4NCm1vZGlmaWVkIHZlcnNpb25zIG9mIHRoZSBzb2Z0d2FyZSBpbnNpZGUgdGhlbSwgYWx0aG91Z2ggdGhlIG1hbnVmYWN0dXJlcg0KY2FuIGRvIHNvLiAgVGhpcyBpcyBmdW5kYW1lbnRhbGx5IGluY29tcGF0aWJsZSB3aXRoIHRoZSBhaW0gb2YNCnByb3RlY3RpbmcgdXNlcnMnIGZyZWVkb20gdG8gY2hhbmdlIHRoZSBzb2Z0d2FyZS4gIFRoZSBzeXN0ZW1hdGljDQpwYXR0ZXJuIG9mIHN1Y2ggYWJ1c2Ugb2NjdXJzIGluIHRoZSBhcmVhIG9mIHByb2R1Y3RzIGZvciBpbmRpdmlkdWFscyB0bw0KdXNlLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hlcmUgaXQgaXMgbW9zdCB1bmFjY2VwdGFibGUuICBUaGVyZWZvcmUsIHdlDQpoYXZlIGRlc2lnbmVkIHRoaXMgdmVyc2lvbiBvZiB0aGUgR1BMIHRvIHByb2hpYml0IHRoZSBwcmFjdGljZSBmb3IgdGhvc2UNCnByb2R1Y3RzLiAgSWYgc3VjaCBwcm9ibGVtcyBhcmlzZSBzdWJzdGFudGlhbGx5IGluIG90aGVyIGRvbWFpbnMsIHdlDQpzdGFuZCByZWFkeSB0byBleHRlbmQgdGhpcyBwcm92aXNpb24gdG8gdGhvc2UgZG9tYWlucyBpbiBmdXR1cmUgdmVyc2lvbnMNCm9mIHRoZSBHUEwsIGFzIG5lZWRlZCB0byBwcm90ZWN0IHRoZSBmcmVlZG9tIG9mIHVzZXJzLg0KDQogIEZpbmFsbHksIGV2ZXJ5IHByb2dyYW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlIHBhdGVudHMuDQpTdGF0ZXMgc2hvdWxkIG5vdCBhbGxvdyBwYXRlbnRzIHRvIHJlc3RyaWN0IGRldmVsb3BtZW50IGFuZCB1c2Ugb2YNCnNvZnR3YXJlIG9uIGdlbmVyYWwtcHVycG9zZSBjb21wdXRlcnMsIGJ1dCBpbiB0aG9zZSB0aGF0IGRvLCB3ZSB3aXNoIHRvDQphdm9pZCB0aGUgc3BlY2lhbCBkYW5nZXIgdGhhdCBwYXRlbnRzIGFwcGxpZWQgdG8gYSBmcmVlIHByb2dyYW0gY291bGQNCm1ha2UgaXQgZWZmZWN0aXZlbHkgcHJvcHJpZXRhcnkuICBUbyBwcmV2ZW50IHRoaXMsIHRoZSBHUEwgYXNzdXJlcyB0aGF0DQpwYXRlbnRzIGNhbm5vdCBiZSB1c2VkIHRvIHJlbmRlciB0aGUgcHJvZ3JhbSBub24tZnJlZS4NCg0KICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZA0KbW9kaWZpY2F0aW9uIGZvbGxvdy4NCg0KICAgICAgICAgICAgICAgICAgICAgICBURVJNUyBBTkQgQ09ORElUSU9OUw0KDQogIDAuIERlZmluaXRpb25zLg0KDQogICJUaGlzIExpY2Vuc2UiIHJlZmVycyB0byB2ZXJzaW9uIDMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLg0KDQogICJDb3B5cmlnaHQiIGFsc28gbWVhbnMgY29weXJpZ2h0LWxpa2UgbGF3cyB0aGF0IGFwcGx5IHRvIG90aGVyIGtpbmRzIG9mDQp3b3Jrcywgc3VjaCBhcyBzZW1pY29uZHVjdG9yIG1hc2tzLg0KDQogICJUaGUgUHJvZ3JhbSIgcmVmZXJzIHRvIGFueSBjb3B5cmlnaHRhYmxlIHdvcmsgbGljZW5zZWQgdW5kZXIgdGhpcw0KTGljZW5zZS4gIEVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLiAgIkxpY2Vuc2VlcyIgYW5kDQoicmVjaXBpZW50cyIgbWF5IGJlIGluZGl2aWR1YWxzIG9yIG9yZ2FuaXphdGlvbnMuDQoNCiAgVG8gIm1vZGlmeSIgYSB3b3JrIG1lYW5zIHRvIGNvcHkgZnJvbSBvciBhZGFwdCBhbGwgb3IgcGFydCBvZiB0aGUgd29yaw0KaW4gYSBmYXNoaW9uIHJlcXVpcmluZyBjb3B5cmlnaHQgcGVybWlzc2lvbiwgb3RoZXIgdGhhbiB0aGUgbWFraW5nIG9mIGFuDQpleGFjdCBjb3B5LiAgVGhlIHJlc3VsdGluZyB3b3JrIGlzIGNhbGxlZCBhICJtb2RpZmllZCB2ZXJzaW9uIiBvZiB0aGUNCmVhcmxpZXIgd29yayBvciBhIHdvcmsgImJhc2VkIG9uIiB0aGUgZWFybGllciB3b3JrLg0KDQogIEEgImNvdmVyZWQgd29yayIgbWVhbnMgZWl0aGVyIHRoZSB1bm1vZGlmaWVkIFByb2dyYW0gb3IgYSB3b3JrIGJhc2VkDQpvbiB0aGUgUHJvZ3JhbS4NCg0KICBUbyAicHJvcGFnYXRlIiBhIHdvcmsgbWVhbnMgdG8gZG8gYW55dGhpbmcgd2l0aCBpdCB0aGF0LCB3aXRob3V0DQpwZXJtaXNzaW9uLCB3b3VsZCBtYWtlIHlvdSBkaXJlY3RseSBvciBzZWNvbmRhcmlseSBsaWFibGUgZm9yDQppbmZyaW5nZW1lbnQgdW5kZXIgYXBwbGljYWJsZSBjb3B5cmlnaHQgbGF3LCBleGNlcHQgZXhlY3V0aW5nIGl0IG9uIGENCmNvbXB1dGVyIG9yIG1vZGlmeWluZyBhIHByaXZhdGUgY29weS4gIFByb3BhZ2F0aW9uIGluY2x1ZGVzIGNvcHlpbmcsDQpkaXN0cmlidXRpb24gKHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24pLCBtYWtpbmcgYXZhaWxhYmxlIHRvIHRoZQ0KcHVibGljLCBhbmQgaW4gc29tZSBjb3VudHJpZXMgb3RoZXIgYWN0aXZpdGllcyBhcyB3ZWxsLg0KDQogIFRvICJjb252ZXkiIGEgd29yayBtZWFucyBhbnkga2luZCBvZiBwcm9wYWdhdGlvbiB0aGF0IGVuYWJsZXMgb3RoZXINCnBhcnRpZXMgdG8gbWFrZSBvciByZWNlaXZlIGNvcGllcy4gIE1lcmUgaW50ZXJhY3Rpb24gd2l0aCBhIHVzZXIgdGhyb3VnaA0KYSBjb21wdXRlciBuZXR3b3JrLCB3aXRoIG5vIHRyYW5zZmVyIG9mIGEgY29weSwgaXMgbm90IGNvbnZleWluZy4NCg0KICBBbiBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZSBkaXNwbGF5cyAiQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlcyINCnRvIHRoZSBleHRlbnQgdGhhdCBpdCBpbmNsdWRlcyBhIGNvbnZlbmllbnQgYW5kIHByb21pbmVudGx5IHZpc2libGUNCmZlYXR1cmUgdGhhdCAoMSkgZGlzcGxheXMgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSwgYW5kICgyKQ0KdGVsbHMgdGhlIHVzZXIgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhlIHdvcmsgKGV4Y2VwdCB0byB0aGUNCmV4dGVudCB0aGF0IHdhcnJhbnRpZXMgYXJlIHByb3ZpZGVkKSwgdGhhdCBsaWNlbnNlZXMgbWF5IGNvbnZleSB0aGUNCndvcmsgdW5kZXIgdGhpcyBMaWNlbnNlLCBhbmQgaG93IHRvIHZpZXcgYSBjb3B5IG9mIHRoaXMgTGljZW5zZS4gIElmDQp0aGUgaW50ZXJmYWNlIHByZXNlbnRzIGEgbGlzdCBvZiB1c2VyIGNvbW1hbmRzIG9yIG9wdGlvbnMsIHN1Y2ggYXMgYQ0KbWVudSwgYSBwcm9taW5lbnQgaXRlbSBpbiB0aGUgbGlzdCBtZWV0cyB0aGlzIGNyaXRlcmlvbi4NCg0KICAxLiBTb3VyY2UgQ29kZS4NCg0KICBUaGUgInNvdXJjZSBjb2RlIiBmb3IgYSB3b3JrIG1lYW5zIHRoZSBwcmVmZXJyZWQgZm9ybSBvZiB0aGUgd29yaw0KZm9yIG1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgIk9iamVjdCBjb2RlIiBtZWFucyBhbnkgbm9uLXNvdXJjZQ0KZm9ybSBvZiBhIHdvcmsuDQoNCiAgQSAiU3RhbmRhcmQgSW50ZXJmYWNlIiBtZWFucyBhbiBpbnRlcmZhY2UgdGhhdCBlaXRoZXIgaXMgYW4gb2ZmaWNpYWwNCnN0YW5kYXJkIGRlZmluZWQgYnkgYSByZWNvZ25pemVkIHN0YW5kYXJkcyBib2R5LCBvciwgaW4gdGhlIGNhc2Ugb2YNCmludGVyZmFjZXMgc3BlY2lmaWVkIGZvciBhIHBhcnRpY3VsYXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIG9uZSB0aGF0DQppcyB3aWRlbHkgdXNlZCBhbW9uZyBkZXZlbG9wZXJzIHdvcmtpbmcgaW4gdGhhdCBsYW5ndWFnZS4NCg0KICBUaGUgIlN5c3RlbSBMaWJyYXJpZXMiIG9mIGFuIGV4ZWN1dGFibGUgd29yayBpbmNsdWRlIGFueXRoaW5nLCBvdGhlcg0KdGhhbiB0aGUgd29yayBhcyBhIHdob2xlLCB0aGF0IChhKSBpcyBpbmNsdWRlZCBpbiB0aGUgbm9ybWFsIGZvcm0gb2YNCnBhY2thZ2luZyBhIE1ham9yIENvbXBvbmVudCwgYnV0IHdoaWNoIGlzIG5vdCBwYXJ0IG9mIHRoYXQgTWFqb3INCkNvbXBvbmVudCwgYW5kIChiKSBzZXJ2ZXMgb25seSB0byBlbmFibGUgdXNlIG9mIHRoZSB3b3JrIHdpdGggdGhhdA0KTWFqb3IgQ29tcG9uZW50LCBvciB0byBpbXBsZW1lbnQgYSBTdGFuZGFyZCBJbnRlcmZhY2UgZm9yIHdoaWNoIGFuDQppbXBsZW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgdG8gdGhlIHB1YmxpYyBpbiBzb3VyY2UgY29kZSBmb3JtLiAgQQ0KIk1ham9yIENvbXBvbmVudCIsIGluIHRoaXMgY29udGV4dCwgbWVhbnMgYSBtYWpvciBlc3NlbnRpYWwgY29tcG9uZW50DQooa2VybmVsLCB3aW5kb3cgc3lzdGVtLCBhbmQgc28gb24pIG9mIHRoZSBzcGVjaWZpYyBvcGVyYXRpbmcgc3lzdGVtDQooaWYgYW55KSBvbiB3aGljaCB0aGUgZXhlY3V0YWJsZSB3b3JrIHJ1bnMsIG9yIGEgY29tcGlsZXIgdXNlZCB0bw0KcHJvZHVjZSB0aGUgd29yaywgb3IgYW4gb2JqZWN0IGNvZGUgaW50ZXJwcmV0ZXIgdXNlZCB0byBydW4gaXQuDQoNCiAgVGhlICJDb3JyZXNwb25kaW5nIFNvdXJjZSIgZm9yIGEgd29yayBpbiBvYmplY3QgY29kZSBmb3JtIG1lYW5zIGFsbA0KdGhlIHNvdXJjZSBjb2RlIG5lZWRlZCB0byBnZW5lcmF0ZSwgaW5zdGFsbCwgYW5kIChmb3IgYW4gZXhlY3V0YWJsZQ0Kd29yaykgcnVuIHRoZSBvYmplY3QgY29kZSBhbmQgdG8gbW9kaWZ5IHRoZSB3b3JrLCBpbmNsdWRpbmcgc2NyaXB0cyB0bw0KY29udHJvbCB0aG9zZSBhY3Rpdml0aWVzLiAgSG93ZXZlciwgaXQgZG9lcyBub3QgaW5jbHVkZSB0aGUgd29yaydzDQpTeXN0ZW0gTGlicmFyaWVzLCBvciBnZW5lcmFsLXB1cnBvc2UgdG9vbHMgb3IgZ2VuZXJhbGx5IGF2YWlsYWJsZSBmcmVlDQpwcm9ncmFtcyB3aGljaCBhcmUgdXNlZCB1bm1vZGlmaWVkIGluIHBlcmZvcm1pbmcgdGhvc2UgYWN0aXZpdGllcyBidXQNCndoaWNoIGFyZSBub3QgcGFydCBvZiB0aGUgd29yay4gIEZvciBleGFtcGxlLCBDb3JyZXNwb25kaW5nIFNvdXJjZQ0KaW5jbHVkZXMgaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMgYXNzb2NpYXRlZCB3aXRoIHNvdXJjZSBmaWxlcyBmb3INCnRoZSB3b3JrLCBhbmQgdGhlIHNvdXJjZSBjb2RlIGZvciBzaGFyZWQgbGlicmFyaWVzIGFuZCBkeW5hbWljYWxseQ0KbGlua2VkIHN1YnByb2dyYW1zIHRoYXQgdGhlIHdvcmsgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIHJlcXVpcmUsDQpzdWNoIGFzIGJ5IGludGltYXRlIGRhdGEgY29tbXVuaWNhdGlvbiBvciBjb250cm9sIGZsb3cgYmV0d2VlbiB0aG9zZQ0Kc3VicHJvZ3JhbXMgYW5kIG90aGVyIHBhcnRzIG9mIHRoZSB3b3JrLg0KDQogIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBuZWVkIG5vdCBpbmNsdWRlIGFueXRoaW5nIHRoYXQgdXNlcnMNCmNhbiByZWdlbmVyYXRlIGF1dG9tYXRpY2FsbHkgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUgQ29ycmVzcG9uZGluZw0KU291cmNlLg0KDQogIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBmb3IgYSB3b3JrIGluIHNvdXJjZSBjb2RlIGZvcm0gaXMgdGhhdA0Kc2FtZSB3b3JrLg0KDQogIDIuIEJhc2ljIFBlcm1pc3Npb25zLg0KDQogIEFsbCByaWdodHMgZ3JhbnRlZCB1bmRlciB0aGlzIExpY2Vuc2UgYXJlIGdyYW50ZWQgZm9yIHRoZSB0ZXJtIG9mDQpjb3B5cmlnaHQgb24gdGhlIFByb2dyYW0sIGFuZCBhcmUgaXJyZXZvY2FibGUgcHJvdmlkZWQgdGhlIHN0YXRlZA0KY29uZGl0aW9ucyBhcmUgbWV0LiAgVGhpcyBMaWNlbnNlIGV4cGxpY2l0bHkgYWZmaXJtcyB5b3VyIHVubGltaXRlZA0KcGVybWlzc2lvbiB0byBydW4gdGhlIHVubW9kaWZpZWQgUHJvZ3JhbS4gIFRoZSBvdXRwdXQgZnJvbSBydW5uaW5nIGENCmNvdmVyZWQgd29yayBpcyBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZSBvbmx5IGlmIHRoZSBvdXRwdXQsIGdpdmVuIGl0cw0KY29udGVudCwgY29uc3RpdHV0ZXMgYSBjb3ZlcmVkIHdvcmsuICBUaGlzIExpY2Vuc2UgYWNrbm93bGVkZ2VzIHlvdXINCnJpZ2h0cyBvZiBmYWlyIHVzZSBvciBvdGhlciBlcXVpdmFsZW50LCBhcyBwcm92aWRlZCBieSBjb3B5cmlnaHQgbGF3Lg0KDQogIFlvdSBtYXkgbWFrZSwgcnVuIGFuZCBwcm9wYWdhdGUgY292ZXJlZCB3b3JrcyB0aGF0IHlvdSBkbyBub3QNCmNvbnZleSwgd2l0aG91dCBjb25kaXRpb25zIHNvIGxvbmcgYXMgeW91ciBsaWNlbnNlIG90aGVyd2lzZSByZW1haW5zDQppbiBmb3JjZS4gIFlvdSBtYXkgY29udmV5IGNvdmVyZWQgd29ya3MgdG8gb3RoZXJzIGZvciB0aGUgc29sZSBwdXJwb3NlDQpvZiBoYXZpbmcgdGhlbSBtYWtlIG1vZGlmaWNhdGlvbnMgZXhjbHVzaXZlbHkgZm9yIHlvdSwgb3IgcHJvdmlkZSB5b3UNCndpdGggZmFjaWxpdGllcyBmb3IgcnVubmluZyB0aG9zZSB3b3JrcywgcHJvdmlkZWQgdGhhdCB5b3UgY29tcGx5IHdpdGgNCnRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UgaW4gY29udmV5aW5nIGFsbCBtYXRlcmlhbCBmb3Igd2hpY2ggeW91IGRvDQpub3QgY29udHJvbCBjb3B5cmlnaHQuICBUaG9zZSB0aHVzIG1ha2luZyBvciBydW5uaW5nIHRoZSBjb3ZlcmVkIHdvcmtzDQpmb3IgeW91IG11c3QgZG8gc28gZXhjbHVzaXZlbHkgb24geW91ciBiZWhhbGYsIHVuZGVyIHlvdXIgZGlyZWN0aW9uDQphbmQgY29udHJvbCwgb24gdGVybXMgdGhhdCBwcm9oaWJpdCB0aGVtIGZyb20gbWFraW5nIGFueSBjb3BpZXMgb2YNCnlvdXIgY29weXJpZ2h0ZWQgbWF0ZXJpYWwgb3V0c2lkZSB0aGVpciByZWxhdGlvbnNoaXAgd2l0aCB5b3UuDQoNCiAgQ29udmV5aW5nIHVuZGVyIGFueSBvdGhlciBjaXJjdW1zdGFuY2VzIGlzIHBlcm1pdHRlZCBzb2xlbHkgdW5kZXINCnRoZSBjb25kaXRpb25zIHN0YXRlZCBiZWxvdy4gIFN1YmxpY2Vuc2luZyBpcyBub3QgYWxsb3dlZDsgc2VjdGlvbiAxMA0KbWFrZXMgaXQgdW5uZWNlc3NhcnkuDQoNCiAgMy4gUHJvdGVjdGluZyBVc2VycycgTGVnYWwgUmlnaHRzIEZyb20gQW50aS1DaXJjdW12ZW50aW9uIExhdy4NCg0KICBObyBjb3ZlcmVkIHdvcmsgc2hhbGwgYmUgZGVlbWVkIHBhcnQgb2YgYW4gZWZmZWN0aXZlIHRlY2hub2xvZ2ljYWwNCm1lYXN1cmUgdW5kZXIgYW55IGFwcGxpY2FibGUgbGF3IGZ1bGZpbGxpbmcgb2JsaWdhdGlvbnMgdW5kZXIgYXJ0aWNsZQ0KMTEgb2YgdGhlIFdJUE8gY29weXJpZ2h0IHRyZWF0eSBhZG9wdGVkIG9uIDIwIERlY2VtYmVyIDE5OTYsIG9yDQpzaW1pbGFyIGxhd3MgcHJvaGliaXRpbmcgb3IgcmVzdHJpY3RpbmcgY2lyY3VtdmVudGlvbiBvZiBzdWNoDQptZWFzdXJlcy4NCg0KICBXaGVuIHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIHlvdSB3YWl2ZSBhbnkgbGVnYWwgcG93ZXIgdG8gZm9yYmlkDQpjaXJjdW12ZW50aW9uIG9mIHRlY2hub2xvZ2ljYWwgbWVhc3VyZXMgdG8gdGhlIGV4dGVudCBzdWNoIGNpcmN1bXZlbnRpb24NCmlzIGVmZmVjdGVkIGJ5IGV4ZXJjaXNpbmcgcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZSB3aXRoIHJlc3BlY3QgdG8NCnRoZSBjb3ZlcmVkIHdvcmssIGFuZCB5b3UgZGlzY2xhaW0gYW55IGludGVudGlvbiB0byBsaW1pdCBvcGVyYXRpb24gb3INCm1vZGlmaWNhdGlvbiBvZiB0aGUgd29yayBhcyBhIG1lYW5zIG9mIGVuZm9yY2luZywgYWdhaW5zdCB0aGUgd29yaydzDQp1c2VycywgeW91ciBvciB0aGlyZCBwYXJ0aWVzJyBsZWdhbCByaWdodHMgdG8gZm9yYmlkIGNpcmN1bXZlbnRpb24gb2YNCnRlY2hub2xvZ2ljYWwgbWVhc3VyZXMuDQoNCiAgNC4gQ29udmV5aW5nIFZlcmJhdGltIENvcGllcy4NCg0KICBZb3UgbWF5IGNvbnZleSB2ZXJiYXRpbSBjb3BpZXMgb2YgdGhlIFByb2dyYW0ncyBzb3VyY2UgY29kZSBhcyB5b3UNCnJlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQgeW91IGNvbnNwaWN1b3VzbHkgYW5kDQphcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2U7DQprZWVwIGludGFjdCBhbGwgbm90aWNlcyBzdGF0aW5nIHRoYXQgdGhpcyBMaWNlbnNlIGFuZCBhbnkNCm5vbi1wZXJtaXNzaXZlIHRlcm1zIGFkZGVkIGluIGFjY29yZCB3aXRoIHNlY3Rpb24gNyBhcHBseSB0byB0aGUgY29kZTsNCmtlZXAgaW50YWN0IGFsbCBub3RpY2VzIG9mIHRoZSBhYnNlbmNlIG9mIGFueSB3YXJyYW50eTsgYW5kIGdpdmUgYWxsDQpyZWNpcGllbnRzIGEgY29weSBvZiB0aGlzIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgUHJvZ3JhbS4NCg0KICBZb3UgbWF5IGNoYXJnZSBhbnkgcHJpY2Ugb3Igbm8gcHJpY2UgZm9yIGVhY2ggY29weSB0aGF0IHlvdSBjb252ZXksDQphbmQgeW91IG1heSBvZmZlciBzdXBwb3J0IG9yIHdhcnJhbnR5IHByb3RlY3Rpb24gZm9yIGEgZmVlLg0KDQogIDUuIENvbnZleWluZyBNb2RpZmllZCBTb3VyY2UgVmVyc2lvbnMuDQoNCiAgWW91IG1heSBjb252ZXkgYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtLCBvciB0aGUgbW9kaWZpY2F0aW9ucyB0bw0KcHJvZHVjZSBpdCBmcm9tIHRoZSBQcm9ncmFtLCBpbiB0aGUgZm9ybSBvZiBzb3VyY2UgY29kZSB1bmRlciB0aGUNCnRlcm1zIG9mIHNlY3Rpb24gNCwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOg0KDQogICAgYSkgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgeW91IG1vZGlmaWVkDQogICAgaXQsIGFuZCBnaXZpbmcgYSByZWxldmFudCBkYXRlLg0KDQogICAgYikgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgaXQgaXMNCiAgICByZWxlYXNlZCB1bmRlciB0aGlzIExpY2Vuc2UgYW5kIGFueSBjb25kaXRpb25zIGFkZGVkIHVuZGVyIHNlY3Rpb24NCiAgICA3LiAgVGhpcyByZXF1aXJlbWVudCBtb2RpZmllcyB0aGUgcmVxdWlyZW1lbnQgaW4gc2VjdGlvbiA0IHRvDQogICAgImtlZXAgaW50YWN0IGFsbCBub3RpY2VzIi4NCg0KICAgIGMpIFlvdSBtdXN0IGxpY2Vuc2UgdGhlIGVudGlyZSB3b3JrLCBhcyBhIHdob2xlLCB1bmRlciB0aGlzDQogICAgTGljZW5zZSB0byBhbnlvbmUgd2hvIGNvbWVzIGludG8gcG9zc2Vzc2lvbiBvZiBhIGNvcHkuICBUaGlzDQogICAgTGljZW5zZSB3aWxsIHRoZXJlZm9yZSBhcHBseSwgYWxvbmcgd2l0aCBhbnkgYXBwbGljYWJsZSBzZWN0aW9uIDcNCiAgICBhZGRpdGlvbmFsIHRlcm1zLCB0byB0aGUgd2hvbGUgb2YgdGhlIHdvcmssIGFuZCBhbGwgaXRzIHBhcnRzLA0KICAgIHJlZ2FyZGxlc3Mgb2YgaG93IHRoZXkgYXJlIHBhY2thZ2VkLiAgVGhpcyBMaWNlbnNlIGdpdmVzIG5vDQogICAgcGVybWlzc2lvbiB0byBsaWNlbnNlIHRoZSB3b3JrIGluIGFueSBvdGhlciB3YXksIGJ1dCBpdCBkb2VzIG5vdA0KICAgIGludmFsaWRhdGUgc3VjaCBwZXJtaXNzaW9uIGlmIHlvdSBoYXZlIHNlcGFyYXRlbHkgcmVjZWl2ZWQgaXQuDQoNCiAgICBkKSBJZiB0aGUgd29yayBoYXMgaW50ZXJhY3RpdmUgdXNlciBpbnRlcmZhY2VzLCBlYWNoIG11c3QgZGlzcGxheQ0KICAgIEFwcHJvcHJpYXRlIExlZ2FsIE5vdGljZXM7IGhvd2V2ZXIsIGlmIHRoZSBQcm9ncmFtIGhhcyBpbnRlcmFjdGl2ZQ0KICAgIGludGVyZmFjZXMgdGhhdCBkbyBub3QgZGlzcGxheSBBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzLCB5b3VyDQogICAgd29yayBuZWVkIG5vdCBtYWtlIHRoZW0gZG8gc28uDQoNCiAgQSBjb21waWxhdGlvbiBvZiBhIGNvdmVyZWQgd29yayB3aXRoIG90aGVyIHNlcGFyYXRlIGFuZCBpbmRlcGVuZGVudA0Kd29ya3MsIHdoaWNoIGFyZSBub3QgYnkgdGhlaXIgbmF0dXJlIGV4dGVuc2lvbnMgb2YgdGhlIGNvdmVyZWQgd29yaywNCmFuZCB3aGljaCBhcmUgbm90IGNvbWJpbmVkIHdpdGggaXQgc3VjaCBhcyB0byBmb3JtIGEgbGFyZ2VyIHByb2dyYW0sDQppbiBvciBvbiBhIHZvbHVtZSBvZiBhIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSwgaXMgY2FsbGVkIGFuDQoiYWdncmVnYXRlIiBpZiB0aGUgY29tcGlsYXRpb24gYW5kIGl0cyByZXN1bHRpbmcgY29weXJpZ2h0IGFyZSBub3QNCnVzZWQgdG8gbGltaXQgdGhlIGFjY2VzcyBvciBsZWdhbCByaWdodHMgb2YgdGhlIGNvbXBpbGF0aW9uJ3MgdXNlcnMNCmJleW9uZCB3aGF0IHRoZSBpbmRpdmlkdWFsIHdvcmtzIHBlcm1pdC4gIEluY2x1c2lvbiBvZiBhIGNvdmVyZWQgd29yaw0KaW4gYW4gYWdncmVnYXRlIGRvZXMgbm90IGNhdXNlIHRoaXMgTGljZW5zZSB0byBhcHBseSB0byB0aGUgb3RoZXINCnBhcnRzIG9mIHRoZSBhZ2dyZWdhdGUuDQoNCiAgNi4gQ29udmV5aW5nIE5vbi1Tb3VyY2UgRm9ybXMuDQoNCiAgWW91IG1heSBjb252ZXkgYSBjb3ZlcmVkIHdvcmsgaW4gb2JqZWN0IGNvZGUgZm9ybSB1bmRlciB0aGUgdGVybXMNCm9mIHNlY3Rpb25zIDQgYW5kIDUsIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gY29udmV5IHRoZQ0KbWFjaGluZS1yZWFkYWJsZSBDb3JyZXNwb25kaW5nIFNvdXJjZSB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLA0KaW4gb25lIG9mIHRoZXNlIHdheXM6DQoNCiAgICBhKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIGluLCBvciBlbWJvZGllZCBpbiwgYSBwaHlzaWNhbCBwcm9kdWN0DQogICAgKGluY2x1ZGluZyBhIHBoeXNpY2FsIGRpc3RyaWJ1dGlvbiBtZWRpdW0pLCBhY2NvbXBhbmllZCBieSB0aGUNCiAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSBmaXhlZCBvbiBhIGR1cmFibGUgcGh5c2ljYWwgbWVkaXVtDQogICAgY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2UuDQoNCiAgICBiKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIGluLCBvciBlbWJvZGllZCBpbiwgYSBwaHlzaWNhbCBwcm9kdWN0DQogICAgKGluY2x1ZGluZyBhIHBoeXNpY2FsIGRpc3RyaWJ1dGlvbiBtZWRpdW0pLCBhY2NvbXBhbmllZCBieSBhDQogICAgd3JpdHRlbiBvZmZlciwgdmFsaWQgZm9yIGF0IGxlYXN0IHRocmVlIHllYXJzIGFuZCB2YWxpZCBmb3IgYXMNCiAgICBsb25nIGFzIHlvdSBvZmZlciBzcGFyZSBwYXJ0cyBvciBjdXN0b21lciBzdXBwb3J0IGZvciB0aGF0IHByb2R1Y3QNCiAgICBtb2RlbCwgdG8gZ2l2ZSBhbnlvbmUgd2hvIHBvc3Nlc3NlcyB0aGUgb2JqZWN0IGNvZGUgZWl0aGVyICgxKSBhDQogICAgY29weSBvZiB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgZm9yIGFsbCB0aGUgc29mdHdhcmUgaW4gdGhlDQogICAgcHJvZHVjdCB0aGF0IGlzIGNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlLCBvbiBhIGR1cmFibGUgcGh5c2ljYWwNCiAgICBtZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2UsIGZvciBhIHByaWNlIG5vDQogICAgbW9yZSB0aGFuIHlvdXIgcmVhc29uYWJsZSBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyB0aGlzDQogICAgY29udmV5aW5nIG9mIHNvdXJjZSwgb3IgKDIpIGFjY2VzcyB0byBjb3B5IHRoZQ0KICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGZyb20gYSBuZXR3b3JrIHNlcnZlciBhdCBubyBjaGFyZ2UuDQoNCiAgICBjKSBDb252ZXkgaW5kaXZpZHVhbCBjb3BpZXMgb2YgdGhlIG9iamVjdCBjb2RlIHdpdGggYSBjb3B5IG9mIHRoZQ0KICAgIHdyaXR0ZW4gb2ZmZXIgdG8gcHJvdmlkZSB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UuICBUaGlzDQogICAgYWx0ZXJuYXRpdmUgaXMgYWxsb3dlZCBvbmx5IG9jY2FzaW9uYWxseSBhbmQgbm9uY29tbWVyY2lhbGx5LCBhbmQNCiAgICBvbmx5IGlmIHlvdSByZWNlaXZlZCB0aGUgb2JqZWN0IGNvZGUgd2l0aCBzdWNoIGFuIG9mZmVyLCBpbiBhY2NvcmQNCiAgICB3aXRoIHN1YnNlY3Rpb24gNmIuDQoNCiAgICBkKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIGJ5IG9mZmVyaW5nIGFjY2VzcyBmcm9tIGEgZGVzaWduYXRlZA0KICAgIHBsYWNlIChncmF0aXMgb3IgZm9yIGEgY2hhcmdlKSwgYW5kIG9mZmVyIGVxdWl2YWxlbnQgYWNjZXNzIHRvIHRoZQ0KICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGluIHRoZSBzYW1lIHdheSB0aHJvdWdoIHRoZSBzYW1lIHBsYWNlIGF0IG5vDQogICAgZnVydGhlciBjaGFyZ2UuICBZb3UgbmVlZCBub3QgcmVxdWlyZSByZWNpcGllbnRzIHRvIGNvcHkgdGhlDQogICAgQ29ycmVzcG9uZGluZyBTb3VyY2UgYWxvbmcgd2l0aCB0aGUgb2JqZWN0IGNvZGUuICBJZiB0aGUgcGxhY2UgdG8NCiAgICBjb3B5IHRoZSBvYmplY3QgY29kZSBpcyBhIG5ldHdvcmsgc2VydmVyLCB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UNCiAgICBtYXkgYmUgb24gYSBkaWZmZXJlbnQgc2VydmVyIChvcGVyYXRlZCBieSB5b3Ugb3IgYSB0aGlyZCBwYXJ0eSkNCiAgICB0aGF0IHN1cHBvcnRzIGVxdWl2YWxlbnQgY29weWluZyBmYWNpbGl0aWVzLCBwcm92aWRlZCB5b3UgbWFpbnRhaW4NCiAgICBjbGVhciBkaXJlY3Rpb25zIG5leHQgdG8gdGhlIG9iamVjdCBjb2RlIHNheWluZyB3aGVyZSB0byBmaW5kIHRoZQ0KICAgIENvcnJlc3BvbmRpbmcgU291cmNlLiAgUmVnYXJkbGVzcyBvZiB3aGF0IHNlcnZlciBob3N0cyB0aGUNCiAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSwgeW91IHJlbWFpbiBvYmxpZ2F0ZWQgdG8gZW5zdXJlIHRoYXQgaXQgaXMNCiAgICBhdmFpbGFibGUgZm9yIGFzIGxvbmcgYXMgbmVlZGVkIHRvIHNhdGlzZnkgdGhlc2UgcmVxdWlyZW1lbnRzLg0KDQogICAgZSkgQ29udmV5IHRoZSBvYmplY3QgY29kZSB1c2luZyBwZWVyLXRvLXBlZXIgdHJhbnNtaXNzaW9uLCBwcm92aWRlZA0KICAgIHlvdSBpbmZvcm0gb3RoZXIgcGVlcnMgd2hlcmUgdGhlIG9iamVjdCBjb2RlIGFuZCBDb3JyZXNwb25kaW5nDQogICAgU291cmNlIG9mIHRoZSB3b3JrIGFyZSBiZWluZyBvZmZlcmVkIHRvIHRoZSBnZW5lcmFsIHB1YmxpYyBhdCBubw0KICAgIGNoYXJnZSB1bmRlciBzdWJzZWN0aW9uIDZkLg0KDQogIEEgc2VwYXJhYmxlIHBvcnRpb24gb2YgdGhlIG9iamVjdCBjb2RlLCB3aG9zZSBzb3VyY2UgY29kZSBpcyBleGNsdWRlZA0KZnJvbSB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgYXMgYSBTeXN0ZW0gTGlicmFyeSwgbmVlZCBub3QgYmUNCmluY2x1ZGVkIGluIGNvbnZleWluZyB0aGUgb2JqZWN0IGNvZGUgd29yay4NCg0KICBBICJVc2VyIFByb2R1Y3QiIGlzIGVpdGhlciAoMSkgYSAiY29uc3VtZXIgcHJvZHVjdCIsIHdoaWNoIG1lYW5zIGFueQ0KdGFuZ2libGUgcGVyc29uYWwgcHJvcGVydHkgd2hpY2ggaXMgbm9ybWFsbHkgdXNlZCBmb3IgcGVyc29uYWwsIGZhbWlseSwNCm9yIGhvdXNlaG9sZCBwdXJwb3Nlcywgb3IgKDIpIGFueXRoaW5nIGRlc2lnbmVkIG9yIHNvbGQgZm9yIGluY29ycG9yYXRpb24NCmludG8gYSBkd2VsbGluZy4gIEluIGRldGVybWluaW5nIHdoZXRoZXIgYSBwcm9kdWN0IGlzIGEgY29uc3VtZXIgcHJvZHVjdCwNCmRvdWJ0ZnVsIGNhc2VzIHNoYWxsIGJlIHJlc29sdmVkIGluIGZhdm9yIG9mIGNvdmVyYWdlLiAgRm9yIGEgcGFydGljdWxhcg0KcHJvZHVjdCByZWNlaXZlZCBieSBhIHBhcnRpY3VsYXIgdXNlciwgIm5vcm1hbGx5IHVzZWQiIHJlZmVycyB0byBhDQp0eXBpY2FsIG9yIGNvbW1vbiB1c2Ugb2YgdGhhdCBjbGFzcyBvZiBwcm9kdWN0LCByZWdhcmRsZXNzIG9mIHRoZSBzdGF0dXMNCm9mIHRoZSBwYXJ0aWN1bGFyIHVzZXIgb3Igb2YgdGhlIHdheSBpbiB3aGljaCB0aGUgcGFydGljdWxhciB1c2VyDQphY3R1YWxseSB1c2VzLCBvciBleHBlY3RzIG9yIGlzIGV4cGVjdGVkIHRvIHVzZSwgdGhlIHByb2R1Y3QuICBBIHByb2R1Y3QNCmlzIGEgY29uc3VtZXIgcHJvZHVjdCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIHByb2R1Y3QgaGFzIHN1YnN0YW50aWFsDQpjb21tZXJjaWFsLCBpbmR1c3RyaWFsIG9yIG5vbi1jb25zdW1lciB1c2VzLCB1bmxlc3Mgc3VjaCB1c2VzIHJlcHJlc2VudA0KdGhlIG9ubHkgc2lnbmlmaWNhbnQgbW9kZSBvZiB1c2Ugb2YgdGhlIHByb2R1Y3QuDQoNCiAgIkluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiIgZm9yIGEgVXNlciBQcm9kdWN0IG1lYW5zIGFueSBtZXRob2RzLA0KcHJvY2VkdXJlcywgYXV0aG9yaXphdGlvbiBrZXlzLCBvciBvdGhlciBpbmZvcm1hdGlvbiByZXF1aXJlZCB0byBpbnN0YWxsDQphbmQgZXhlY3V0ZSBtb2RpZmllZCB2ZXJzaW9ucyBvZiBhIGNvdmVyZWQgd29yayBpbiB0aGF0IFVzZXIgUHJvZHVjdCBmcm9tDQphIG1vZGlmaWVkIHZlcnNpb24gb2YgaXRzIENvcnJlc3BvbmRpbmcgU291cmNlLiAgVGhlIGluZm9ybWF0aW9uIG11c3QNCnN1ZmZpY2UgdG8gZW5zdXJlIHRoYXQgdGhlIGNvbnRpbnVlZCBmdW5jdGlvbmluZyBvZiB0aGUgbW9kaWZpZWQgb2JqZWN0DQpjb2RlIGlzIGluIG5vIGNhc2UgcHJldmVudGVkIG9yIGludGVyZmVyZWQgd2l0aCBzb2xlbHkgYmVjYXVzZQ0KbW9kaWZpY2F0aW9uIGhhcyBiZWVuIG1hZGUuDQoNCiAgSWYgeW91IGNvbnZleSBhbiBvYmplY3QgY29kZSB3b3JrIHVuZGVyIHRoaXMgc2VjdGlvbiBpbiwgb3Igd2l0aCwgb3INCnNwZWNpZmljYWxseSBmb3IgdXNlIGluLCBhIFVzZXIgUHJvZHVjdCwgYW5kIHRoZSBjb252ZXlpbmcgb2NjdXJzIGFzDQpwYXJ0IG9mIGEgdHJhbnNhY3Rpb24gaW4gd2hpY2ggdGhlIHJpZ2h0IG9mIHBvc3Nlc3Npb24gYW5kIHVzZSBvZiB0aGUNClVzZXIgUHJvZHVjdCBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgcmVjaXBpZW50IGluIHBlcnBldHVpdHkgb3IgZm9yIGENCmZpeGVkIHRlcm0gKHJlZ2FyZGxlc3Mgb2YgaG93IHRoZSB0cmFuc2FjdGlvbiBpcyBjaGFyYWN0ZXJpemVkKSwgdGhlDQpDb3JyZXNwb25kaW5nIFNvdXJjZSBjb252ZXllZCB1bmRlciB0aGlzIHNlY3Rpb24gbXVzdCBiZSBhY2NvbXBhbmllZA0KYnkgdGhlIEluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbi4gIEJ1dCB0aGlzIHJlcXVpcmVtZW50IGRvZXMgbm90IGFwcGx5DQppZiBuZWl0aGVyIHlvdSBub3IgYW55IHRoaXJkIHBhcnR5IHJldGFpbnMgdGhlIGFiaWxpdHkgdG8gaW5zdGFsbA0KbW9kaWZpZWQgb2JqZWN0IGNvZGUgb24gdGhlIFVzZXIgUHJvZHVjdCAoZm9yIGV4YW1wbGUsIHRoZSB3b3JrIGhhcw0KYmVlbiBpbnN0YWxsZWQgaW4gUk9NKS4NCg0KICBUaGUgcmVxdWlyZW1lbnQgdG8gcHJvdmlkZSBJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24gZG9lcyBub3QgaW5jbHVkZSBhDQpyZXF1aXJlbWVudCB0byBjb250aW51ZSB0byBwcm92aWRlIHN1cHBvcnQgc2VydmljZSwgd2FycmFudHksIG9yIHVwZGF0ZXMNCmZvciBhIHdvcmsgdGhhdCBoYXMgYmVlbiBtb2RpZmllZCBvciBpbnN0YWxsZWQgYnkgdGhlIHJlY2lwaWVudCwgb3IgZm9yDQp0aGUgVXNlciBQcm9kdWN0IGluIHdoaWNoIGl0IGhhcyBiZWVuIG1vZGlmaWVkIG9yIGluc3RhbGxlZC4gIEFjY2VzcyB0byBhDQpuZXR3b3JrIG1heSBiZSBkZW5pZWQgd2hlbiB0aGUgbW9kaWZpY2F0aW9uIGl0c2VsZiBtYXRlcmlhbGx5IGFuZA0KYWR2ZXJzZWx5IGFmZmVjdHMgdGhlIG9wZXJhdGlvbiBvZiB0aGUgbmV0d29yayBvciB2aW9sYXRlcyB0aGUgcnVsZXMgYW5kDQpwcm90b2NvbHMgZm9yIGNvbW11bmljYXRpb24gYWNyb3NzIHRoZSBuZXR3b3JrLg0KDQogIENvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkLCBhbmQgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uIHByb3ZpZGVkLA0KaW4gYWNjb3JkIHdpdGggdGhpcyBzZWN0aW9uIG11c3QgYmUgaW4gYSBmb3JtYXQgdGhhdCBpcyBwdWJsaWNseQ0KZG9jdW1lbnRlZCAoYW5kIHdpdGggYW4gaW1wbGVtZW50YXRpb24gYXZhaWxhYmxlIHRvIHRoZSBwdWJsaWMgaW4NCnNvdXJjZSBjb2RlIGZvcm0pLCBhbmQgbXVzdCByZXF1aXJlIG5vIHNwZWNpYWwgcGFzc3dvcmQgb3Iga2V5IGZvcg0KdW5wYWNraW5nLCByZWFkaW5nIG9yIGNvcHlpbmcuDQoNCiAgNy4gQWRkaXRpb25hbCBUZXJtcy4NCg0KICAiQWRkaXRpb25hbCBwZXJtaXNzaW9ucyIgYXJlIHRlcm1zIHRoYXQgc3VwcGxlbWVudCB0aGUgdGVybXMgb2YgdGhpcw0KTGljZW5zZSBieSBtYWtpbmcgZXhjZXB0aW9ucyBmcm9tIG9uZSBvciBtb3JlIG9mIGl0cyBjb25kaXRpb25zLg0KQWRkaXRpb25hbCBwZXJtaXNzaW9ucyB0aGF0IGFyZSBhcHBsaWNhYmxlIHRvIHRoZSBlbnRpcmUgUHJvZ3JhbSBzaGFsbA0KYmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlIGluY2x1ZGVkIGluIHRoaXMgTGljZW5zZSwgdG8gdGhlIGV4dGVudA0KdGhhdCB0aGV5IGFyZSB2YWxpZCB1bmRlciBhcHBsaWNhYmxlIGxhdy4gIElmIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMNCmFwcGx5IG9ubHkgdG8gcGFydCBvZiB0aGUgUHJvZ3JhbSwgdGhhdCBwYXJ0IG1heSBiZSB1c2VkIHNlcGFyYXRlbHkNCnVuZGVyIHRob3NlIHBlcm1pc3Npb25zLCBidXQgdGhlIGVudGlyZSBQcm9ncmFtIHJlbWFpbnMgZ292ZXJuZWQgYnkNCnRoaXMgTGljZW5zZSB3aXRob3V0IHJlZ2FyZCB0byB0aGUgYWRkaXRpb25hbCBwZXJtaXNzaW9ucy4NCg0KICBXaGVuIHlvdSBjb252ZXkgYSBjb3B5IG9mIGEgY292ZXJlZCB3b3JrLCB5b3UgbWF5IGF0IHlvdXIgb3B0aW9uDQpyZW1vdmUgYW55IGFkZGl0aW9uYWwgcGVybWlzc2lvbnMgZnJvbSB0aGF0IGNvcHksIG9yIGZyb20gYW55IHBhcnQgb2YNCml0LiAgKEFkZGl0aW9uYWwgcGVybWlzc2lvbnMgbWF5IGJlIHdyaXR0ZW4gdG8gcmVxdWlyZSB0aGVpciBvd24NCnJlbW92YWwgaW4gY2VydGFpbiBjYXNlcyB3aGVuIHlvdSBtb2RpZnkgdGhlIHdvcmsuKSAgWW91IG1heSBwbGFjZQ0KYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBvbiBtYXRlcmlhbCwgYWRkZWQgYnkgeW91IHRvIGEgY292ZXJlZCB3b3JrLA0KZm9yIHdoaWNoIHlvdSBoYXZlIG9yIGNhbiBnaXZlIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBwZXJtaXNzaW9uLg0KDQogIE5vdHdpdGhzdGFuZGluZyBhbnkgb3RoZXIgcHJvdmlzaW9uIG9mIHRoaXMgTGljZW5zZSwgZm9yIG1hdGVyaWFsIHlvdQ0KYWRkIHRvIGEgY292ZXJlZCB3b3JrLCB5b3UgbWF5IChpZiBhdXRob3JpemVkIGJ5IHRoZSBjb3B5cmlnaHQgaG9sZGVycyBvZg0KdGhhdCBtYXRlcmlhbCkgc3VwcGxlbWVudCB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlIHdpdGggdGVybXM6DQoNCiAgICBhKSBEaXNjbGFpbWluZyB3YXJyYW50eSBvciBsaW1pdGluZyBsaWFiaWxpdHkgZGlmZmVyZW50bHkgZnJvbSB0aGUNCiAgICB0ZXJtcyBvZiBzZWN0aW9ucyAxNSBhbmQgMTYgb2YgdGhpcyBMaWNlbnNlOyBvcg0KDQogICAgYikgUmVxdWlyaW5nIHByZXNlcnZhdGlvbiBvZiBzcGVjaWZpZWQgcmVhc29uYWJsZSBsZWdhbCBub3RpY2VzIG9yDQogICAgYXV0aG9yIGF0dHJpYnV0aW9ucyBpbiB0aGF0IG1hdGVyaWFsIG9yIGluIHRoZSBBcHByb3ByaWF0ZSBMZWdhbA0KICAgIE5vdGljZXMgZGlzcGxheWVkIGJ5IHdvcmtzIGNvbnRhaW5pbmcgaXQ7IG9yDQoNCiAgICBjKSBQcm9oaWJpdGluZyBtaXNyZXByZXNlbnRhdGlvbiBvZiB0aGUgb3JpZ2luIG9mIHRoYXQgbWF0ZXJpYWwsIG9yDQogICAgcmVxdWlyaW5nIHRoYXQgbW9kaWZpZWQgdmVyc2lvbnMgb2Ygc3VjaCBtYXRlcmlhbCBiZSBtYXJrZWQgaW4NCiAgICByZWFzb25hYmxlIHdheXMgYXMgZGlmZmVyZW50IGZyb20gdGhlIG9yaWdpbmFsIHZlcnNpb247IG9yDQoNCiAgICBkKSBMaW1pdGluZyB0aGUgdXNlIGZvciBwdWJsaWNpdHkgcHVycG9zZXMgb2YgbmFtZXMgb2YgbGljZW5zb3JzIG9yDQogICAgYXV0aG9ycyBvZiB0aGUgbWF0ZXJpYWw7IG9yDQoNCiAgICBlKSBEZWNsaW5pbmcgdG8gZ3JhbnQgcmlnaHRzIHVuZGVyIHRyYWRlbWFyayBsYXcgZm9yIHVzZSBvZiBzb21lDQogICAgdHJhZGUgbmFtZXMsIHRyYWRlbWFya3MsIG9yIHNlcnZpY2UgbWFya3M7IG9yDQoNCiAgICBmKSBSZXF1aXJpbmcgaW5kZW1uaWZpY2F0aW9uIG9mIGxpY2Vuc29ycyBhbmQgYXV0aG9ycyBvZiB0aGF0DQogICAgbWF0ZXJpYWwgYnkgYW55b25lIHdobyBjb252ZXlzIHRoZSBtYXRlcmlhbCAob3IgbW9kaWZpZWQgdmVyc2lvbnMgb2YNCiAgICBpdCkgd2l0aCBjb250cmFjdHVhbCBhc3N1bXB0aW9ucyBvZiBsaWFiaWxpdHkgdG8gdGhlIHJlY2lwaWVudCwgZm9yDQogICAgYW55IGxpYWJpbGl0eSB0aGF0IHRoZXNlIGNvbnRyYWN0dWFsIGFzc3VtcHRpb25zIGRpcmVjdGx5IGltcG9zZSBvbg0KICAgIHRob3NlIGxpY2Vuc29ycyBhbmQgYXV0aG9ycy4NCg0KICBBbGwgb3RoZXIgbm9uLXBlcm1pc3NpdmUgYWRkaXRpb25hbCB0ZXJtcyBhcmUgY29uc2lkZXJlZCAiZnVydGhlcg0KcmVzdHJpY3Rpb25zIiB3aXRoaW4gdGhlIG1lYW5pbmcgb2Ygc2VjdGlvbiAxMC4gIElmIHRoZSBQcm9ncmFtIGFzIHlvdQ0KcmVjZWl2ZWQgaXQsIG9yIGFueSBwYXJ0IG9mIGl0LCBjb250YWlucyBhIG5vdGljZSBzdGF0aW5nIHRoYXQgaXQgaXMNCmdvdmVybmVkIGJ5IHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIGEgdGVybSB0aGF0IGlzIGEgZnVydGhlcg0KcmVzdHJpY3Rpb24sIHlvdSBtYXkgcmVtb3ZlIHRoYXQgdGVybS4gIElmIGEgbGljZW5zZSBkb2N1bWVudCBjb250YWlucw0KYSBmdXJ0aGVyIHJlc3RyaWN0aW9uIGJ1dCBwZXJtaXRzIHJlbGljZW5zaW5nIG9yIGNvbnZleWluZyB1bmRlciB0aGlzDQpMaWNlbnNlLCB5b3UgbWF5IGFkZCB0byBhIGNvdmVyZWQgd29yayBtYXRlcmlhbCBnb3Zlcm5lZCBieSB0aGUgdGVybXMNCm9mIHRoYXQgbGljZW5zZSBkb2N1bWVudCwgcHJvdmlkZWQgdGhhdCB0aGUgZnVydGhlciByZXN0cmljdGlvbiBkb2VzDQpub3Qgc3Vydml2ZSBzdWNoIHJlbGljZW5zaW5nIG9yIGNvbnZleWluZy4NCg0KICBJZiB5b3UgYWRkIHRlcm1zIHRvIGEgY292ZXJlZCB3b3JrIGluIGFjY29yZCB3aXRoIHRoaXMgc2VjdGlvbiwgeW91DQptdXN0IHBsYWNlLCBpbiB0aGUgcmVsZXZhbnQgc291cmNlIGZpbGVzLCBhIHN0YXRlbWVudCBvZiB0aGUNCmFkZGl0aW9uYWwgdGVybXMgdGhhdCBhcHBseSB0byB0aG9zZSBmaWxlcywgb3IgYSBub3RpY2UgaW5kaWNhdGluZw0Kd2hlcmUgdG8gZmluZCB0aGUgYXBwbGljYWJsZSB0ZXJtcy4NCg0KICBBZGRpdGlvbmFsIHRlcm1zLCBwZXJtaXNzaXZlIG9yIG5vbi1wZXJtaXNzaXZlLCBtYXkgYmUgc3RhdGVkIGluIHRoZQ0KZm9ybSBvZiBhIHNlcGFyYXRlbHkgd3JpdHRlbiBsaWNlbnNlLCBvciBzdGF0ZWQgYXMgZXhjZXB0aW9uczsNCnRoZSBhYm92ZSByZXF1aXJlbWVudHMgYXBwbHkgZWl0aGVyIHdheS4NCg0KICA4LiBUZXJtaW5hdGlvbi4NCg0KICBZb3UgbWF5IG5vdCBwcm9wYWdhdGUgb3IgbW9kaWZ5IGEgY292ZXJlZCB3b3JrIGV4Y2VwdCBhcyBleHByZXNzbHkNCnByb3ZpZGVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIEFueSBhdHRlbXB0IG90aGVyd2lzZSB0byBwcm9wYWdhdGUgb3INCm1vZGlmeSBpdCBpcyB2b2lkLCBhbmQgd2lsbCBhdXRvbWF0aWNhbGx5IHRlcm1pbmF0ZSB5b3VyIHJpZ2h0cyB1bmRlcg0KdGhpcyBMaWNlbnNlIChpbmNsdWRpbmcgYW55IHBhdGVudCBsaWNlbnNlcyBncmFudGVkIHVuZGVyIHRoZSB0aGlyZA0KcGFyYWdyYXBoIG9mIHNlY3Rpb24gMTEpLg0KDQogIEhvd2V2ZXIsIGlmIHlvdSBjZWFzZSBhbGwgdmlvbGF0aW9uIG9mIHRoaXMgTGljZW5zZSwgdGhlbiB5b3VyDQpsaWNlbnNlIGZyb20gYSBwYXJ0aWN1bGFyIGNvcHlyaWdodCBob2xkZXIgaXMgcmVpbnN0YXRlZCAoYSkNCnByb3Zpc2lvbmFsbHksIHVubGVzcyBhbmQgdW50aWwgdGhlIGNvcHlyaWdodCBob2xkZXIgZXhwbGljaXRseSBhbmQNCmZpbmFsbHkgdGVybWluYXRlcyB5b3VyIGxpY2Vuc2UsIGFuZCAoYikgcGVybWFuZW50bHksIGlmIHRoZSBjb3B5cmlnaHQNCmhvbGRlciBmYWlscyB0byBub3RpZnkgeW91IG9mIHRoZSB2aW9sYXRpb24gYnkgc29tZSByZWFzb25hYmxlIG1lYW5zDQpwcmlvciB0byA2MCBkYXlzIGFmdGVyIHRoZSBjZXNzYXRpb24uDQoNCiAgTW9yZW92ZXIsIHlvdXIgbGljZW5zZSBmcm9tIGEgcGFydGljdWxhciBjb3B5cmlnaHQgaG9sZGVyIGlzDQpyZWluc3RhdGVkIHBlcm1hbmVudGx5IGlmIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vdGlmaWVzIHlvdSBvZiB0aGUNCnZpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMsIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgeW91IGhhdmUNCnJlY2VpdmVkIG5vdGljZSBvZiB2aW9sYXRpb24gb2YgdGhpcyBMaWNlbnNlIChmb3IgYW55IHdvcmspIGZyb20gdGhhdA0KY29weXJpZ2h0IGhvbGRlciwgYW5kIHlvdSBjdXJlIHRoZSB2aW9sYXRpb24gcHJpb3IgdG8gMzAgZGF5cyBhZnRlcg0KeW91ciByZWNlaXB0IG9mIHRoZSBub3RpY2UuDQoNCiAgVGVybWluYXRpb24gb2YgeW91ciByaWdodHMgdW5kZXIgdGhpcyBzZWN0aW9uIGRvZXMgbm90IHRlcm1pbmF0ZSB0aGUNCmxpY2Vuc2VzIG9mIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzIG9yIHJpZ2h0cyBmcm9tIHlvdSB1bmRlcg0KdGhpcyBMaWNlbnNlLiAgSWYgeW91ciByaWdodHMgaGF2ZSBiZWVuIHRlcm1pbmF0ZWQgYW5kIG5vdCBwZXJtYW5lbnRseQ0KcmVpbnN0YXRlZCwgeW91IGRvIG5vdCBxdWFsaWZ5IHRvIHJlY2VpdmUgbmV3IGxpY2Vuc2VzIGZvciB0aGUgc2FtZQ0KbWF0ZXJpYWwgdW5kZXIgc2VjdGlvbiAxMC4NCg0KICA5LiBBY2NlcHRhbmNlIE5vdCBSZXF1aXJlZCBmb3IgSGF2aW5nIENvcGllcy4NCg0KICBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBhY2NlcHQgdGhpcyBMaWNlbnNlIGluIG9yZGVyIHRvIHJlY2VpdmUgb3INCnJ1biBhIGNvcHkgb2YgdGhlIFByb2dyYW0uICBBbmNpbGxhcnkgcHJvcGFnYXRpb24gb2YgYSBjb3ZlcmVkIHdvcmsNCm9jY3VycmluZyBzb2xlbHkgYXMgYSBjb25zZXF1ZW5jZSBvZiB1c2luZyBwZWVyLXRvLXBlZXIgdHJhbnNtaXNzaW9uDQp0byByZWNlaXZlIGEgY29weSBsaWtld2lzZSBkb2VzIG5vdCByZXF1aXJlIGFjY2VwdGFuY2UuICBIb3dldmVyLA0Kbm90aGluZyBvdGhlciB0aGFuIHRoaXMgTGljZW5zZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8gcHJvcGFnYXRlIG9yDQptb2RpZnkgYW55IGNvdmVyZWQgd29yay4gIFRoZXNlIGFjdGlvbnMgaW5mcmluZ2UgY29weXJpZ2h0IGlmIHlvdSBkbw0Kbm90IGFjY2VwdCB0aGlzIExpY2Vuc2UuICBUaGVyZWZvcmUsIGJ5IG1vZGlmeWluZyBvciBwcm9wYWdhdGluZyBhDQpjb3ZlcmVkIHdvcmssIHlvdSBpbmRpY2F0ZSB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhpcyBMaWNlbnNlIHRvIGRvIHNvLg0KDQogIDEwLiBBdXRvbWF0aWMgTGljZW5zaW5nIG9mIERvd25zdHJlYW0gUmVjaXBpZW50cy4NCg0KICBFYWNoIHRpbWUgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5DQpyZWNlaXZlcyBhIGxpY2Vuc2UgZnJvbSB0aGUgb3JpZ2luYWwgbGljZW5zb3JzLCB0byBydW4sIG1vZGlmeSBhbmQNCnByb3BhZ2F0ZSB0aGF0IHdvcmssIHN1YmplY3QgdG8gdGhpcyBMaWNlbnNlLiAgWW91IGFyZSBub3QgcmVzcG9uc2libGUNCmZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHdpdGggdGhpcyBMaWNlbnNlLg0KDQogIEFuICJlbnRpdHkgdHJhbnNhY3Rpb24iIGlzIGEgdHJhbnNhY3Rpb24gdHJhbnNmZXJyaW5nIGNvbnRyb2wgb2YgYW4NCm9yZ2FuaXphdGlvbiwgb3Igc3Vic3RhbnRpYWxseSBhbGwgYXNzZXRzIG9mIG9uZSwgb3Igc3ViZGl2aWRpbmcgYW4NCm9yZ2FuaXphdGlvbiwgb3IgbWVyZ2luZyBvcmdhbml6YXRpb25zLiAgSWYgcHJvcGFnYXRpb24gb2YgYSBjb3ZlcmVkDQp3b3JrIHJlc3VsdHMgZnJvbSBhbiBlbnRpdHkgdHJhbnNhY3Rpb24sIGVhY2ggcGFydHkgdG8gdGhhdA0KdHJhbnNhY3Rpb24gd2hvIHJlY2VpdmVzIGEgY29weSBvZiB0aGUgd29yayBhbHNvIHJlY2VpdmVzIHdoYXRldmVyDQpsaWNlbnNlcyB0byB0aGUgd29yayB0aGUgcGFydHkncyBwcmVkZWNlc3NvciBpbiBpbnRlcmVzdCBoYWQgb3IgY291bGQNCmdpdmUgdW5kZXIgdGhlIHByZXZpb3VzIHBhcmFncmFwaCwgcGx1cyBhIHJpZ2h0IHRvIHBvc3Nlc3Npb24gb2YgdGhlDQpDb3JyZXNwb25kaW5nIFNvdXJjZSBvZiB0aGUgd29yayBmcm9tIHRoZSBwcmVkZWNlc3NvciBpbiBpbnRlcmVzdCwgaWYNCnRoZSBwcmVkZWNlc3NvciBoYXMgaXQgb3IgY2FuIGdldCBpdCB3aXRoIHJlYXNvbmFibGUgZWZmb3J0cy4NCg0KICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIgcmVzdHJpY3Rpb25zIG9uIHRoZSBleGVyY2lzZSBvZiB0aGUNCnJpZ2h0cyBncmFudGVkIG9yIGFmZmlybWVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIEZvciBleGFtcGxlLCB5b3UgbWF5DQpub3QgaW1wb3NlIGEgbGljZW5zZSBmZWUsIHJveWFsdHksIG9yIG90aGVyIGNoYXJnZSBmb3IgZXhlcmNpc2Ugb2YNCnJpZ2h0cyBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZSwgYW5kIHlvdSBtYXkgbm90IGluaXRpYXRlIGxpdGlnYXRpb24NCihpbmNsdWRpbmcgYSBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0DQphbnkgcGF0ZW50IGNsYWltIGlzIGluZnJpbmdlZCBieSBtYWtpbmcsIHVzaW5nLCBzZWxsaW5nLCBvZmZlcmluZyBmb3INCnNhbGUsIG9yIGltcG9ydGluZyB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbiBvZiBpdC4NCg0KICAxMS4gUGF0ZW50cy4NCg0KICBBICJjb250cmlidXRvciIgaXMgYSBjb3B5cmlnaHQgaG9sZGVyIHdobyBhdXRob3JpemVzIHVzZSB1bmRlciB0aGlzDQpMaWNlbnNlIG9mIHRoZSBQcm9ncmFtIG9yIGEgd29yayBvbiB3aGljaCB0aGUgUHJvZ3JhbSBpcyBiYXNlZC4gIFRoZQ0Kd29yayB0aHVzIGxpY2Vuc2VkIGlzIGNhbGxlZCB0aGUgY29udHJpYnV0b3IncyAiY29udHJpYnV0b3IgdmVyc2lvbiIuDQoNCiAgQSBjb250cmlidXRvcidzICJlc3NlbnRpYWwgcGF0ZW50IGNsYWltcyIgYXJlIGFsbCBwYXRlbnQgY2xhaW1zDQpvd25lZCBvciBjb250cm9sbGVkIGJ5IHRoZSBjb250cmlidXRvciwgd2hldGhlciBhbHJlYWR5IGFjcXVpcmVkIG9yDQpoZXJlYWZ0ZXIgYWNxdWlyZWQsIHRoYXQgd291bGQgYmUgaW5mcmluZ2VkIGJ5IHNvbWUgbWFubmVyLCBwZXJtaXR0ZWQNCmJ5IHRoaXMgTGljZW5zZSwgb2YgbWFraW5nLCB1c2luZywgb3Igc2VsbGluZyBpdHMgY29udHJpYnV0b3IgdmVyc2lvbiwNCmJ1dCBkbyBub3QgaW5jbHVkZSBjbGFpbXMgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQgb25seSBhcyBhDQpjb25zZXF1ZW5jZSBvZiBmdXJ0aGVyIG1vZGlmaWNhdGlvbiBvZiB0aGUgY29udHJpYnV0b3IgdmVyc2lvbi4gIEZvcg0KcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAiY29udHJvbCIgaW5jbHVkZXMgdGhlIHJpZ2h0IHRvIGdyYW50DQpwYXRlbnQgc3VibGljZW5zZXMgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YNCnRoaXMgTGljZW5zZS4NCg0KICBFYWNoIGNvbnRyaWJ1dG9yIGdyYW50cyB5b3UgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZQ0KcGF0ZW50IGxpY2Vuc2UgdW5kZXIgdGhlIGNvbnRyaWJ1dG9yJ3MgZXNzZW50aWFsIHBhdGVudCBjbGFpbXMsIHRvDQptYWtlLCB1c2UsIHNlbGwsIG9mZmVyIGZvciBzYWxlLCBpbXBvcnQgYW5kIG90aGVyd2lzZSBydW4sIG1vZGlmeSBhbmQNCnByb3BhZ2F0ZSB0aGUgY29udGVudHMgb2YgaXRzIGNvbnRyaWJ1dG9yIHZlcnNpb24uDQoNCiAgSW4gdGhlIGZvbGxvd2luZyB0aHJlZSBwYXJhZ3JhcGhzLCBhICJwYXRlbnQgbGljZW5zZSIgaXMgYW55IGV4cHJlc3MNCmFncmVlbWVudCBvciBjb21taXRtZW50LCBob3dldmVyIGRlbm9taW5hdGVkLCBub3QgdG8gZW5mb3JjZSBhIHBhdGVudA0KKHN1Y2ggYXMgYW4gZXhwcmVzcyBwZXJtaXNzaW9uIHRvIHByYWN0aWNlIGEgcGF0ZW50IG9yIGNvdmVuYW50IG5vdCB0bw0Kc3VlIGZvciBwYXRlbnQgaW5mcmluZ2VtZW50KS4gIFRvICJncmFudCIgc3VjaCBhIHBhdGVudCBsaWNlbnNlIHRvIGENCnBhcnR5IG1lYW5zIHRvIG1ha2Ugc3VjaCBhbiBhZ3JlZW1lbnQgb3IgY29tbWl0bWVudCBub3QgdG8gZW5mb3JjZSBhDQpwYXRlbnQgYWdhaW5zdCB0aGUgcGFydHkuDQoNCiAgSWYgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywga25vd2luZ2x5IHJlbHlpbmcgb24gYSBwYXRlbnQgbGljZW5zZSwNCmFuZCB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2Ugb2YgdGhlIHdvcmsgaXMgbm90IGF2YWlsYWJsZSBmb3IgYW55b25lDQp0byBjb3B5LCBmcmVlIG9mIGNoYXJnZSBhbmQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSwgdGhyb3VnaCBhDQpwdWJsaWNseSBhdmFpbGFibGUgbmV0d29yayBzZXJ2ZXIgb3Igb3RoZXIgcmVhZGlseSBhY2Nlc3NpYmxlIG1lYW5zLA0KdGhlbiB5b3UgbXVzdCBlaXRoZXIgKDEpIGNhdXNlIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSB0byBiZSBzbw0KYXZhaWxhYmxlLCBvciAoMikgYXJyYW5nZSB0byBkZXByaXZlIHlvdXJzZWxmIG9mIHRoZSBiZW5lZml0IG9mIHRoZQ0KcGF0ZW50IGxpY2Vuc2UgZm9yIHRoaXMgcGFydGljdWxhciB3b3JrLCBvciAoMykgYXJyYW5nZSwgaW4gYSBtYW5uZXINCmNvbnNpc3RlbnQgd2l0aCB0aGUgcmVxdWlyZW1lbnRzIG9mIHRoaXMgTGljZW5zZSwgdG8gZXh0ZW5kIHRoZSBwYXRlbnQNCmxpY2Vuc2UgdG8gZG93bnN0cmVhbSByZWNpcGllbnRzLiAgIktub3dpbmdseSByZWx5aW5nIiBtZWFucyB5b3UgaGF2ZQ0KYWN0dWFsIGtub3dsZWRnZSB0aGF0LCBidXQgZm9yIHRoZSBwYXRlbnQgbGljZW5zZSwgeW91ciBjb252ZXlpbmcgdGhlDQpjb3ZlcmVkIHdvcmsgaW4gYSBjb3VudHJ5LCBvciB5b3VyIHJlY2lwaWVudCdzIHVzZSBvZiB0aGUgY292ZXJlZCB3b3JrDQppbiBhIGNvdW50cnksIHdvdWxkIGluZnJpbmdlIG9uZSBvciBtb3JlIGlkZW50aWZpYWJsZSBwYXRlbnRzIGluIHRoYXQNCmNvdW50cnkgdGhhdCB5b3UgaGF2ZSByZWFzb24gdG8gYmVsaWV2ZSBhcmUgdmFsaWQuDQoNCiAgSWYsIHB1cnN1YW50IHRvIG9yIGluIGNvbm5lY3Rpb24gd2l0aCBhIHNpbmdsZSB0cmFuc2FjdGlvbiBvcg0KYXJyYW5nZW1lbnQsIHlvdSBjb252ZXksIG9yIHByb3BhZ2F0ZSBieSBwcm9jdXJpbmcgY29udmV5YW5jZSBvZiwgYQ0KY292ZXJlZCB3b3JrLCBhbmQgZ3JhbnQgYSBwYXRlbnQgbGljZW5zZSB0byBzb21lIG9mIHRoZSBwYXJ0aWVzDQpyZWNlaXZpbmcgdGhlIGNvdmVyZWQgd29yayBhdXRob3JpemluZyB0aGVtIHRvIHVzZSwgcHJvcGFnYXRlLCBtb2RpZnkNCm9yIGNvbnZleSBhIHNwZWNpZmljIGNvcHkgb2YgdGhlIGNvdmVyZWQgd29yaywgdGhlbiB0aGUgcGF0ZW50IGxpY2Vuc2UNCnlvdSBncmFudCBpcyBhdXRvbWF0aWNhbGx5IGV4dGVuZGVkIHRvIGFsbCByZWNpcGllbnRzIG9mIHRoZSBjb3ZlcmVkDQp3b3JrIGFuZCB3b3JrcyBiYXNlZCBvbiBpdC4NCg0KICBBIHBhdGVudCBsaWNlbnNlIGlzICJkaXNjcmltaW5hdG9yeSIgaWYgaXQgZG9lcyBub3QgaW5jbHVkZSB3aXRoaW4NCnRoZSBzY29wZSBvZiBpdHMgY292ZXJhZ2UsIHByb2hpYml0cyB0aGUgZXhlcmNpc2Ugb2YsIG9yIGlzDQpjb25kaXRpb25lZCBvbiB0aGUgbm9uLWV4ZXJjaXNlIG9mIG9uZSBvciBtb3JlIG9mIHRoZSByaWdodHMgdGhhdCBhcmUNCnNwZWNpZmljYWxseSBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIFlvdSBtYXkgbm90IGNvbnZleSBhIGNvdmVyZWQNCndvcmsgaWYgeW91IGFyZSBhIHBhcnR5IHRvIGFuIGFycmFuZ2VtZW50IHdpdGggYSB0aGlyZCBwYXJ0eSB0aGF0IGlzDQppbiB0aGUgYnVzaW5lc3Mgb2YgZGlzdHJpYnV0aW5nIHNvZnR3YXJlLCB1bmRlciB3aGljaCB5b3UgbWFrZSBwYXltZW50DQp0byB0aGUgdGhpcmQgcGFydHkgYmFzZWQgb24gdGhlIGV4dGVudCBvZiB5b3VyIGFjdGl2aXR5IG9mIGNvbnZleWluZw0KdGhlIHdvcmssIGFuZCB1bmRlciB3aGljaCB0aGUgdGhpcmQgcGFydHkgZ3JhbnRzLCB0byBhbnkgb2YgdGhlDQpwYXJ0aWVzIHdobyB3b3VsZCByZWNlaXZlIHRoZSBjb3ZlcmVkIHdvcmsgZnJvbSB5b3UsIGEgZGlzY3JpbWluYXRvcnkNCnBhdGVudCBsaWNlbnNlIChhKSBpbiBjb25uZWN0aW9uIHdpdGggY29waWVzIG9mIHRoZSBjb3ZlcmVkIHdvcmsNCmNvbnZleWVkIGJ5IHlvdSAob3IgY29waWVzIG1hZGUgZnJvbSB0aG9zZSBjb3BpZXMpLCBvciAoYikgcHJpbWFyaWx5DQpmb3IgYW5kIGluIGNvbm5lY3Rpb24gd2l0aCBzcGVjaWZpYyBwcm9kdWN0cyBvciBjb21waWxhdGlvbnMgdGhhdA0KY29udGFpbiB0aGUgY292ZXJlZCB3b3JrLCB1bmxlc3MgeW91IGVudGVyZWQgaW50byB0aGF0IGFycmFuZ2VtZW50LA0Kb3IgdGhhdCBwYXRlbnQgbGljZW5zZSB3YXMgZ3JhbnRlZCwgcHJpb3IgdG8gMjggTWFyY2ggMjAwNy4NCg0KICBOb3RoaW5nIGluIHRoaXMgTGljZW5zZSBzaGFsbCBiZSBjb25zdHJ1ZWQgYXMgZXhjbHVkaW5nIG9yIGxpbWl0aW5nDQphbnkgaW1wbGllZCBsaWNlbnNlIG9yIG90aGVyIGRlZmVuc2VzIHRvIGluZnJpbmdlbWVudCB0aGF0IG1heQ0Kb3RoZXJ3aXNlIGJlIGF2YWlsYWJsZSB0byB5b3UgdW5kZXIgYXBwbGljYWJsZSBwYXRlbnQgbGF3Lg0KDQogIDEyLiBObyBTdXJyZW5kZXIgb2YgT3RoZXJzJyBGcmVlZG9tLg0KDQogIElmIGNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3INCm90aGVyd2lzZSkgdGhhdCBjb250cmFkaWN0IHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZSwgdGhleSBkbyBub3QNCmV4Y3VzZSB5b3UgZnJvbSB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UuICBJZiB5b3UgY2Fubm90IGNvbnZleSBhDQpjb3ZlcmVkIHdvcmsgc28gYXMgdG8gc2F0aXNmeSBzaW11bHRhbmVvdXNseSB5b3VyIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMNCkxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UgbWF5DQpub3QgY29udmV5IGl0IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiB5b3UgYWdyZWUgdG8gdGVybXMgdGhhdCBvYmxpZ2F0ZSB5b3UNCnRvIGNvbGxlY3QgYSByb3lhbHR5IGZvciBmdXJ0aGVyIGNvbnZleWluZyBmcm9tIHRob3NlIHRvIHdob20geW91IGNvbnZleQ0KdGhlIFByb2dyYW0sIHRoZSBvbmx5IHdheSB5b3UgY291bGQgc2F0aXNmeSBib3RoIHRob3NlIHRlcm1zIGFuZCB0aGlzDQpMaWNlbnNlIHdvdWxkIGJlIHRvIHJlZnJhaW4gZW50aXJlbHkgZnJvbSBjb252ZXlpbmcgdGhlIFByb2dyYW0uDQoNCiAgMTMuIFVzZSB3aXRoIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuDQoNCiAgTm90d2l0aHN0YW5kaW5nIGFueSBvdGhlciBwcm92aXNpb24gb2YgdGhpcyBMaWNlbnNlLCB5b3UgaGF2ZQ0KcGVybWlzc2lvbiB0byBsaW5rIG9yIGNvbWJpbmUgYW55IGNvdmVyZWQgd29yayB3aXRoIGEgd29yayBsaWNlbnNlZA0KdW5kZXIgdmVyc2lvbiAzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaW50byBhIHNpbmdsZQ0KY29tYmluZWQgd29yaywgYW5kIHRvIGNvbnZleSB0aGUgcmVzdWx0aW5nIHdvcmsuICBUaGUgdGVybXMgb2YgdGhpcw0KTGljZW5zZSB3aWxsIGNvbnRpbnVlIHRvIGFwcGx5IHRvIHRoZSBwYXJ0IHdoaWNoIGlzIHRoZSBjb3ZlcmVkIHdvcmssDQpidXQgdGhlIHNwZWNpYWwgcmVxdWlyZW1lbnRzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsDQpzZWN0aW9uIDEzLCBjb25jZXJuaW5nIGludGVyYWN0aW9uIHRocm91Z2ggYSBuZXR3b3JrIHdpbGwgYXBwbHkgdG8gdGhlDQpjb21iaW5hdGlvbiBhcyBzdWNoLg0KDQogIDE0LiBSZXZpc2VkIFZlcnNpb25zIG9mIHRoaXMgTGljZW5zZS4NCg0KICBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucyBvZg0KdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiAgU3VjaCBuZXcgdmVyc2lvbnMgd2lsbA0KYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwgYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvDQphZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4NCg0KICBFYWNoIHZlcnNpb24gaXMgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gIElmIHRoZQ0KUHJvZ3JhbSBzcGVjaWZpZXMgdGhhdCBhIGNlcnRhaW4gbnVtYmVyZWQgdmVyc2lvbiBvZiB0aGUgR05VIEdlbmVyYWwNClB1YmxpYyBMaWNlbnNlICJvciBhbnkgbGF0ZXIgdmVyc2lvbiIgYXBwbGllcyB0byBpdCwgeW91IGhhdmUgdGhlDQpvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBlaXRoZXIgb2YgdGhhdCBudW1iZXJlZA0KdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUNCkZvdW5kYXRpb24uICBJZiB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBzcGVjaWZ5IGEgdmVyc2lvbiBudW1iZXIgb2YgdGhlDQpHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQNCmJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQoNCiAgSWYgdGhlIFByb2dyYW0gc3BlY2lmaWVzIHRoYXQgYSBwcm94eSBjYW4gZGVjaWRlIHdoaWNoIGZ1dHVyZQ0KdmVyc2lvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGNhbiBiZSB1c2VkLCB0aGF0IHByb3h5J3MNCnB1YmxpYyBzdGF0ZW1lbnQgb2YgYWNjZXB0YW5jZSBvZiBhIHZlcnNpb24gcGVybWFuZW50bHkgYXV0aG9yaXplcyB5b3UNCnRvIGNob29zZSB0aGF0IHZlcnNpb24gZm9yIHRoZSBQcm9ncmFtLg0KDQogIExhdGVyIGxpY2Vuc2UgdmVyc2lvbnMgbWF5IGdpdmUgeW91IGFkZGl0aW9uYWwgb3IgZGlmZmVyZW50DQpwZXJtaXNzaW9ucy4gIEhvd2V2ZXIsIG5vIGFkZGl0aW9uYWwgb2JsaWdhdGlvbnMgYXJlIGltcG9zZWQgb24gYW55DQphdXRob3Igb3IgY29weXJpZ2h0IGhvbGRlciBhcyBhIHJlc3VsdCBvZiB5b3VyIGNob29zaW5nIHRvIGZvbGxvdyBhDQpsYXRlciB2ZXJzaW9uLg0KDQogIDE1LiBEaXNjbGFpbWVyIG9mIFdhcnJhbnR5Lg0KDQogIFRIRVJFIElTIE5PIFdBUlJBTlRZIEZPUiBUSEUgUFJPR1JBTSwgVE8gVEhFIEVYVEVOVCBQRVJNSVRURUQgQlkNCkFQUExJQ0FCTEUgTEFXLiAgRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQNCkhPTERFUlMgQU5EL09SIE9USEVSIFBBUlRJRVMgUFJPVklERSBUSEUgUFJPR1JBTSAiQVMgSVMiIFdJVEhPVVQgV0FSUkFOVFkNCk9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTU0VEIE9SIElNUExJRUQsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLA0KVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KUFVSUE9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUyBUTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFIFBST0dSQU0NCklTIFdJVEggWU9VLiAgU0hPVUxEIFRIRSBQUk9HUkFNIFBST1ZFIERFRkVDVElWRSwgWU9VIEFTU1VNRSBUSEUgQ09TVCBPRg0KQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLg0KDQogIDE2LiBMaW1pdGF0aW9uIG9mIExpYWJpbGl0eS4NCg0KICBJTiBOTyBFVkVOVCBVTkxFU1MgUkVRVUlSRUQgQlkgQVBQTElDQUJMRSBMQVcgT1IgQUdSRUVEIFRPIElOIFdSSVRJTkcNCldJTEwgQU5ZIENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBXSE8gTU9ESUZJRVMgQU5EL09SIENPTlZFWVMNClRIRSBQUk9HUkFNIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVSBGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWQ0KR0VORVJBTCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORyBPVVQgT0YgVEhFDQpVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBUSEUgUFJPR1JBTSAoSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBMT1NTIE9GDQpEQVRBIE9SIERBVEEgQkVJTkcgUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRA0KUEFSVElFUyBPUiBBIEZBSUxVUkUgT0YgVEhFIFBST0dSQU0gVE8gT1BFUkFURSBXSVRIIEFOWSBPVEhFUiBQUk9HUkFNUyksDQpFVkVOIElGIFNVQ0ggSE9MREVSIE9SIE9USEVSIFBBUlRZIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GDQpTVUNIIERBTUFHRVMuDQoNCiAgMTcuIEludGVycHJldGF0aW9uIG9mIFNlY3Rpb25zIDE1IGFuZCAxNi4NCg0KICBJZiB0aGUgZGlzY2xhaW1lciBvZiB3YXJyYW50eSBhbmQgbGltaXRhdGlvbiBvZiBsaWFiaWxpdHkgcHJvdmlkZWQNCmFib3ZlIGNhbm5vdCBiZSBnaXZlbiBsb2NhbCBsZWdhbCBlZmZlY3QgYWNjb3JkaW5nIHRvIHRoZWlyIHRlcm1zLA0KcmV2aWV3aW5nIGNvdXJ0cyBzaGFsbCBhcHBseSBsb2NhbCBsYXcgdGhhdCBtb3N0IGNsb3NlbHkgYXBwcm94aW1hdGVzDQphbiBhYnNvbHV0ZSB3YWl2ZXIgb2YgYWxsIGNpdmlsIGxpYWJpbGl0eSBpbiBjb25uZWN0aW9uIHdpdGggdGhlDQpQcm9ncmFtLCB1bmxlc3MgYSB3YXJyYW50eSBvciBhc3N1bXB0aW9uIG9mIGxpYWJpbGl0eSBhY2NvbXBhbmllcyBhDQpjb3B5IG9mIHRoZSBQcm9ncmFtIGluIHJldHVybiBmb3IgYSBmZWUuDQoNCiAgICAgICAgICAgICAgICAgICAgIEVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OUw==]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.instagramFeed.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOCBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpjbGFzcyBpbnN0YWdyYW1GZWVkIHsNCg0KICAgIHByaXZhdGUgJG1vZHVsZW5hbWUgPSAnVXRpbGl0aWVzJzsNCiAgICBwcml2YXRlICRtb2Q7DQogICAgcHJpdmF0ZSAkZGF0YSA9IFtdOw0KICAgIHByaXZhdGUgJGVycm9ycyA9IFtdOw0KICAgIHByaXZhdGUgJG1lZGlhX3VybCA9ICJodHRwczovL2dyYXBoLmluc3RhZ3JhbS5jb20vbWUvbWVkaWE/ZmllbGRzPXVzZXJuYW1lLG1lZGlhX3VybCxtZWRpYV90eXBlLHRodW1ibmFpbF91cmwscGVybWFsaW5rLHRpbWVzdGFtcCxjYXB0aW9uJmFjY2Vzc190b2tlbj0iOyAgIC8vICsgJHRva2VuDQogICAgcHJpdmF0ZSAkcmVmcmVzaF91cmwgPSAiaHR0cHM6Ly9ncmFwaC5pbnN0YWdyYW0uY29tL3JlZnJlc2hfYWNjZXNzX3Rva2VuP2dyYW50X3R5cGU9aWdfcmVmcmVzaF90b2tlbiZhY2Nlc3NfdG9rZW49IjsgIC8vICsgJHRva2VuDQogICAgcHJpdmF0ZSAkdGVtcGxhdGUgPSAnaW5zdGFncmFtRmVlZF90ZW1wbGF0ZS50cGwnOw0KDQogICAgcHVibGljICR0b2tlbl9yZWZyZXNoX3BlcmlvZCA9IDcqMjQqNjAqNjA7ICAgLy8gNyBkYXlzDQogICAgcHVibGljICRtZWRpYV9yZWZyZXNoX3BlcmlvZCA9IDYwKjYwOyAvLyAxIGhvdXINCiAgICANCg0KDQogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgICMgTWFnaWMgbWV0aG9kcw0KICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7DQoNCiAgICAgICAgJHRoaXMtPm1vZCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSggJHRoaXMtPm1vZHVsZW5hbWUgKTsNCiAgICAgICAgDQogICAgfQ0KDQoNCg0KICAgIC8qKg0KICAgICAqIHNpbXBsZSBjdXJsIGhlbHBlciBmdW5jdGlvbiANCiAgICAgKiANCiAgICAgKiBAcmV0dXJuIGFycmF5IGRlY29kZWQgcmVwc29uc2UNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVxdWVzdCgkdXJsKSB7DQogICAgICAgICRjdXJsID0gY3VybF9pbml0KCk7DQogICAgICAgIGN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX1VSTCwgJHVybCk7DQogICAgICAgIGN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsNCiAgICAgICAgY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfSEVBREVSLCBmYWxzZSk7DQogICAgICAgICRyZXF1ZXN0ID0gY3VybF9leGVjKCRjdXJsKTsNCiAgICAgICAgY3VybF9jbG9zZSgkY3VybCk7DQogICAgICAgICRyZXF1ZXN0ID0ganNvbl9kZWNvZGUoJHJlcXVlc3QsIHRydWUpOw0KICAgICAgICByZXR1cm4gJHJlcXVlc3Q7DQogICAgfQ0KDQoNCg0KICAgIC8qKg0KICAgICAqIHJldHVybnMgY3VycmVudCB2YWxpZCB0b2tlbiBvciBpZiBjdXJyZW50IHRva2VuIG9sZGVyIHRoYW4gcmVmcmVzaCBwZXJpb2QgKDcgZGF5cykgZ2V0cyBhIG5ldyANCiAgICAgKiB0b2tlbiBmcm9tIEluc3RhZ3JhbS4NCiAgICAgKiANCiAgICAgKiBAcmV0dXJuIHN0cmluZyB0b2tlbiAob3IgZW1wdHkgc3RyaW5nKQ0KICAgICAqLw0KICAgIGZ1bmN0aW9uIGdldFRva2VuKCkNCiAgICB7DQogICAgICAgICRtb2QgPSAkdGhpcy0+bW9kOw0KICAgICAgICAkY29uZmlnID0gXENtc0FwcDo6Z2V0X2luc3RhbmNlKCktPkdldENvbmZpZygpOw0KICAgICAgICAkcm9vdFVybCA9ICRjb25maWdbJ3Jvb3RfdXJsJ107DQogICAgICAgICR0b2tlbiA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ2luc3RhZ3JhbV90b2tlbicpOw0KICAgICAgICAkdG9rZW5fdGltZXN0YW1wID0gaW50dmFsKCRtb2QtPkdldFByZWZlcmVuY2UoJ2luc3RhZ3JhbV90b2tlbl90aW1lc3RhbXAnKSk7ICANCiAgICAgICAgJG5vdyA9IHRpbWUoKTsNCg0KICAgICAgICBpZiAoICRub3cgPiAoJHRva2VuX3RpbWVzdGFtcCArICR0aGlzLT50b2tlbl9yZWZyZXNoX3BlcmlvZCkgKSB7DQoNCiAgICAgICAgICAgICRyZXNwb25zZSA9ICR0aGlzLT5yZXF1ZXN0KCAkdGhpcy0+cmVmcmVzaF91cmwuJHRva2VuICk7DQoNCiAgICAgICAgICAgIGlmICggaXNzZXQoJHJlc3BvbnNlWydhY2Nlc3NfdG9rZW4nXSkgJiYgJHJlc3BvbnNlWydhY2Nlc3NfdG9rZW4nXSE9JycgKSB7DQogICAgICAgICAgICAgICAgLy8gc2F2ZSBuZXcgdG9rZW4gJiB1cGRhdGUgdGltZXN0YW1wDQogICAgICAgICAgICAgICAgJHRva2VuID0gc3RydmFsKCRyZXNwb25zZVsnYWNjZXNzX3Rva2VuJ10pOw0KICAgICAgICAgICAgICAgICRtb2QtPlNldFByZWZlcmVuY2UoICdpbnN0YWdyYW1fdG9rZW4nLCAkdG9rZW4gKTsNCiAgICAgICAgICAgICAgICAkbW9kLT5TZXRQcmVmZXJlbmNlKCAnaW5zdGFncmFtX3Rva2VuX3RpbWVzdGFtcCcsIHRpbWUoKSApOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAkZXJyb3IgPSAkbW9kLT5MYW5nKCdpbnN0YWdyYW1fdG9rZW5fZXJyb3InKTsNCiAgICAgICAgICAgICAgICAkbW9kLT5BdWRpdCggMCwgJG1vZC0+TGFuZygnZnJpZW5kbHluYW1lJyksICRlcnJvciApOw0KICAgICAgICAgICAgICAgICRlcnJvcnNbXSA9ICRlcnJvcjsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuICR0b2tlbjsNCiAgICB9DQoNCg0KDQogICAgLyoqDQogICAgICogcmV0cmlldmVzIG1lZGlhIGRhdGEgZWl0aGVyIGZyb20gSW5zdGFncmFtIG9yIG1lZGlhIGRhdGEgY2FjaGVkIGZvciAoMWhyPykNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TWVkaWEoKQ0KICAgIHsNCiAgICAgICAgJG1vZCA9ICR0aGlzLT5tb2Q7DQogICAgICAgICRtZWRpYV90aW1lc3RhbXAgPSBpbnR2YWwoJG1vZC0+R2V0UHJlZmVyZW5jZSgnaW5zdGFncmFtX21lZGlhX3RpbWVzdGFtcCcpKTsgIA0KICAgICAgICAkbm93ID0gdGltZSgpOw0KDQogICAgICAgIGlmICggJG5vdyA+ICgkbWVkaWFfdGltZXN0YW1wICsgJHRoaXMtPm1lZGlhX3JlZnJlc2hfcGVyaW9kKSApIHsNCiAgICAgICAgICAgIC8vIGdldCBmcmVzaCBtZWRpYSBkYXRhIGZyb20gSW5zdGFncmFtDQogICAgICAgICAgICAkdG9rZW4gPSAkdGhpcy0+Z2V0VG9rZW4oKTsNCiAgICAgICAgICAgICRyZXNwb25zZSA9ICR0aGlzLT5yZXF1ZXN0KCAkdGhpcy0+bWVkaWFfdXJsLiR0b2tlbiApOw0KDQogICAgICAgICAgICBpZiAoaXNzZXQoICRyZXNwb25zZVsnZGF0YSddKSApIHsNCiAgICAgICAgICAgICAgICAkdGhpcy0+ZGF0YSA9ICRyZXNwb25zZVsnZGF0YSddOw0KICAgICAgICAgICAgICAgICRtb2QtPlNldFByZWZlcmVuY2UoICdpbnN0YWdyYW1fbWVkaWEnLCBqc29uX2VuY29kZSgkdGhpcy0+ZGF0YSkgKTsNCiAgICAgICAgICAgICAgICAkbW9kLT5TZXRQcmVmZXJlbmNlKCAnaW5zdGFncmFtX21lZGlhX3RpbWVzdGFtcCcsIHRpbWUoKSApOw0KDQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICR0aGlzLT5lcnJvciA9IGlzc2V0KCRyZXNwb25zZVsnZXJyb3InXSkgPyAkcmVzcG9uc2VbJ2Vycm9yJ10gOiAkbW9kLT5MYW5nKCdpbnN0YWdyYW1fbWVkaWFfZXJyb3InKTsNCiAgICAgICAgICAgICAgICAkbW9kLT5TZXRQcmVmZXJlbmNlKCAnaW5zdGFncmFtX21lZGlhX3RpbWVzdGFtcCcsIDAgKTsNCiAgICAgICAgICAgICAgICAkbW9kLT5BdWRpdCggMCwgJG1vZC0+TGFuZygnZnJpZW5kbHluYW1lJyksICRlcnJvciApOw0KICAgICAgICAgICAgICAgICRlcnJvcnNbXSA9ICRlcnJvcjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIA0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgLy8gdXNlIGNhY2hlZCBtZWRpYSBkYXRhDQogICAgICAgICAgICAkdGhpcy0+ZGF0YSA9IGpzb25fZGVjb2RlKCAkbW9kLT5HZXRQcmVmZXJlbmNlKCdpbnN0YWdyYW1fbWVkaWEnKSwgdHJ1ZSApOw0KDQogICAgICAgIH0NCg0KICAgIH0NCg0KDQoNCiAgICAvKioNCiAgICAgKiBvdXRwdXQgc21hcnR5IHRlbXBsYXRlDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGRpc3BsYXkoJHBhcmFtcywgJiRzbWFydHkpDQogICAgew0KICAgICAgICBpZiAoIWVtcHR5KCRwYXJhbXNbJ3RlbXBsYXRlJ10pKSB7DQogICAgICAgICAgICAkdGVtcGxhdGUgPSBzdHJ2YWwoJHBhcmFtc1sndGVtcGxhdGUnXSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkdGVtcGxhdGUgPSAkdGhpcy0+dGVtcGxhdGUgOw0KICAgICAgICB9DQogICAgICAgICR0cGwgPSAkc21hcnR5LT5DcmVhdGVUZW1wbGF0ZSggJHRoaXMtPm1vZC0+R2V0VGVtcGxhdGVSZXNvdXJjZSgkdGVtcGxhdGUpLCBudWxsLCBudWxsLCAkc21hcnR5ICk7DQogICAgICAgICR0cGwtPmFzc2lnbignbW9kJywgJHRoaXMtPm1vZCk7DQogICAgICAgICR0cGwtPmFzc2lnbignZXJyb3JzJywgJHRoaXMtPmVycm9ycyk7DQogICAgICAgICR0cGwtPmFzc2lnbignZGF0YScsICR0aGlzLT5kYXRhKTsNCiAgICAgICAgJHRwbC0+ZGlzcGxheSgpOw0KICAgIH0NCg0KDQoNCn0=]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0Ow0KDQokbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdCSUV4dGVuc2lvbnMnKTsNCmlmICggaXNfb2JqZWN0KCRtb2QpICkgew0KICAgLy8gZmFpbCBpbnN0YWxsICYgcmV0dXJuIG1lc3NhZ2UNCiAgIHJldHVybiAkdGhpcy0+bGFuZygnaW5zdGFsbF9CSUV4dGVuc2lvbnNfZXJyb3InKTsNCn0NCg0KDQoNCg==]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0Ow0KDQovLyB1bnJlZ2lzdGVyIGFsbCBmdW5jdGlvbnMNCiRzbWFydHktPnVucmVnaXN0ZXJfZnVuY3Rpb24oJ2NvbnRlbnRfdHlwZScpOw0KJHNtYXJ0eS0+dW5yZWdpc3Rlcl9mdW5jdGlvbignZ2FsbGVyeUNvdmVycycpOw0KJHNtYXJ0eS0+dW5yZWdpc3Rlcl9mdW5jdGlvbignZ29vZ2xlRm9udFVybCcpOw0KJHNtYXJ0eS0+dW5yZWdpc3Rlcl9mdW5jdGlvbignZ2V0Q3VzdG9tR1MnKTsNCiRzbWFydHktPnVucmVnaXN0ZXJfZnVuY3Rpb24oJ2lzX2FkbWluX3VzZXInKTsNCiRzbWFydHktPnVucmVnaXN0ZXJfZnVuY3Rpb24oJ2FkbWluX3VzZXJfYWN0aW9uX3VybCcpOw0KDQokc21hcnR5LT51bnJlZ2lzdGVyX2Z1bmN0aW9uKCdjc3NNaW5pZmllcicpOw0KJHNtYXJ0eS0+dW5yZWdpc3Rlcl9mdW5jdGlvbigneW91VHViZVBsYXllcicpOw0KJHNtYXJ0eS0+dW5yZWdpc3Rlcl9mdW5jdGlvbignZWRpdENvbnRlbnRUYWJzJyk7DQokc21hcnR5LT51bnJlZ2lzdGVyX2Z1bmN0aW9uKCd0d2l0dGVyRmVlZCcpOw0KJHNtYXJ0eS0+dW5yZWdpc3Rlcl9mdW5jdGlvbignZmFjZWJvb2tGZWVkJyk7DQoNCg0K]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQppZiAoICFkZWZpbmVkKCdDTVNfVkVSU0lPTicpICkgZXhpdDsNCg0KDQppZiAoJG9sZHZlcnNpb24gPCAnMS41Jykgew0KICAgIC8vIGRlbGV0ZSBhbiB1bnVzZWQgdGVzdCBkaXIgYW5kIHRlbXBsYXRlDQogICAgJHRlc3RfZGlyID0gJHRoaXMtPkdldE1vZHVsZVBhdGgoKS5ESVJFQ1RPUllfU0VQQVJBVE9SLid0ZXN0JzsNCiAgICB1bmxpbmsoJHRlc3RfZGlyLkRJUkVDVE9SWV9TRVBBUkFUT1IuJ1V0aWxpdGllc19UZXN0X1RlbXBsYXRlLnRwbCcpOyANCiAgICBybWRpcigkdGVzdF9kaXIpOw0KfQ0KDQoNCi8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZw0KJHRoaXMtPkF1ZGl0KCAwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICR0aGlzLT5MYW5nKCd1cGdyYWRlZCcsICR0aGlzLT5HZXRWZXJzaW9uKCkpICk7DQoNCg0K]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9ICJVdGlsaXRpZXMiCnZlcnNpb24gPSAxLjgKYXV0aG9yID0gIkNocmlzIFRheWxvciIKYXV0aG9yZW1haWwgPSAiY2hyaXNAYmlubm92YXRpdmUuY28udWsiCm1pbmNtc3ZlcnNpb24gPSAyLjAKbGF6eWxvYWRhZG1pbiA9IDAKbGF6eWxvYWRmcm9udGVuZCA9IDAK]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/admin_options.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogYWRtaW5fb3B0aW9ucy50cGwgKn0NCg0KDQo8ZmllbGRzZXQ+DQogICAgPGxlZ2VuZD57JG1vZC0+TGFuZygnaW5zdGFncmFtX2ZlZWRfb3B0aW9ucycpfTwvbGVnZW5kPg0KICAgIHtmb3JtX3N0YXJ0IGFjdGlvbj1kZWZhdWx0YWRtaW59DQogICAgICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdpbnN0YWdyYW1fYWNjZXNzX3Rva2VuJyl9OjwvcD4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPg0KICAgICAgICAgICAge2lmICFlbXB0eSgkaW5zdGFncmFtX3Rva2VuKX0NCiAgICAgICAgICAgICAgICB7JG1vZC0+TGFuZygndmFsaWRfdG9rZW4nKX06IHsoJGluc3RhZ3JhbV90b2tlbl90aW1lc3RhbXArJHRva2VuX3JlZnJlc2hfcGVyaW9kKXxjbXNfZGF0ZV9mb3JtYXR9DQogICAgICAgICAgICB7ZWxzZX0NCiAgICAgICAgICAgICAgICB7JG1vZC0+TGFuZygnbm9fdG9rZW4nKX0NCiAgICAgICAgICAgIHsvaWZ9DQogICAgICAgICAgICA8L3A+DQogICAgICAgIDwvZGl2Pg0KDQogICAgICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQogICAgICAgICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCduZXdfaW5zdGFncmFtX3Rva2VuJyl9OjwvcD4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPg0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfWluc3RhZ3JhbV90b2tlbiIgdmFsdWU9IiIgc2l6ZT0iMTAwIi8+DQogICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSIiIG5hbWU9InskYWN0aW9uaWR9c3VibWl0IiB2YWx1ZT0idXBkYXRlX3Rva2VuIj57JG1vZC0+TGFuZygndXBkYXRlX3Rva2VuJyl9PC9idXR0b24+PGJyPg0KICAgICAgICAgICAgICAgIDxpPnskbW9kLT5MYW5nKCduZXdfdG9rZW5fZmllbGRfbm90ZScpfTwvaT4NCiAgICAgICAgICAgIDwvcD4NCiAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2luc3RhZ3JhbV9tZWRpYV9jYWNoZScpfTo8L3A+DQogICAgICAgICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4NCiAgICAgICAgICAgIHtpZiAhZW1wdHkoJGluc3RhZ3JhbV9tZWRpYV90aW1lc3RhbXApfQ0KICAgICAgICAgICAgICAgIHskbW9kLT5MYW5nKCdtZWRpYV9jYWNoZV9yZWZyZXNoJyl9OiB7KCRpbnN0YWdyYW1fbWVkaWFfdGltZXN0YW1wKyRtZWRpYV9yZWZyZXNoX3BlcmlvZCl8Y21zX2RhdGVfZm9ybWF0fQ0KICAgICAgICAgICAge2Vsc2V9DQogICAgICAgICAgICAgICAgbm90IGNhY2hlZCwgcmVmcmVzaGVzIGF0IG5leHQgcmVxdWVzdA0KICAgICAgICAgICAgey9pZn0NCiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImltcG9ydGFudCIgc3R5bGU9ImZvbnQtc3R5bGU6aXRhbGljOyIgbmFtZT0ieyRhY3Rpb25pZH1zdWJtaXQiIHZhbHVlPSJjbGVhcl9tZWRpYV9jYWNoZSI+eyRtb2QtPkxhbmcoJ2NsZWFyX2NhY2hlJyl9PC9idXR0b24+PGJyPg0KICAgICAgICAgICAgPC9wPg0KICAgICAgICA8L2Rpdj4NCiAgICB7Zm9ybV9lbmR9DQoNCjwvZmllbGRzZXQ+DQoNCjxwPiZuYnNwOzwvcD4=]]></data>
	</file>
	<file>
	  <filename>/templates/facebookFeed_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogZmFjZWJvb2tGZWVkX3RlbXBsYXRlLnRwbCAtIHYxLjIgLSAwNkZlYjE5DQoNCiAgIC0gdjEuMiAtIDA2RmViMTkgLSBhZGRlZCBpbnRvIFV0aWxpdGllcw0KICAgLSB2MS4xIC0gMDFEZWMxNQ0KDQogICBTZWUgaHR0cHM6Ly9kZXZlbG9wZXJzLmZhY2Vib29rLmNvbS9kb2NzL3BsdWdpbnMvcGFnZS1wbHVnaW4vIGZvciBkZXRhaWxzLg0KDQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKip9DQogICA8ZGl2IGlkPSJmYi1yb290Ij48L2Rpdj4NCiAgIDxzY3JpcHQ+e2xpdGVyYWx9KGZ1bmN0aW9uKGQsIHMsIGlkKSB7DQogICAgICB2YXIganMsIGZqcyA9IGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUocylbMF07DQogICAgICBpZiAoZC5nZXRFbGVtZW50QnlJZChpZCkpIHJldHVybjsNCiAgICAgIGpzID0gZC5jcmVhdGVFbGVtZW50KHMpOyBqcy5pZCA9IGlkOw0KICAgICAganMuc3JjID0gIi8vY29ubmVjdC5mYWNlYm9vay5uZXQvZW5fR0Ivc2RrLmpzI3hmYm1sPTEmdmVyc2lvbj12Mi4zIjsNCiAgICAgIGZqcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShqcywgZmpzKTsNCiAgIH0oZG9jdW1lbnQsICdzY3JpcHQnLCAnZmFjZWJvb2stanNzZGsnKSk7DQogICB7L2xpdGVyYWx9PC9zY3JpcHQ+DQogICA8ZGl2IGNsYXNzPSJmYi1wYWdlIiBkYXRhLWhyZWY9Imh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS97JHBhZ2VJZH0vIiBkYXRhLXdpZHRoPSJ7JHdpZHRofSIgZGF0YS1oZWlnaHQ9InskaGVpZ2h0fSIgZGF0YS1oaWRlLWNvdmVyPSJ7JGhpZGVDb3Zlcn0iIGRhdGEtc2hvdy1mYWNlcGlsZT0ieyRzaG93RmFjZXBpbGV9IiBkYXRhLXNob3ctcG9zdHM9Inskc2hvd1Bvc3RzfSIgZGF0YS1oaWRlLWN0YT0ieyRoaWRlQ3RhfSIgZGF0YS1zbWFsbC1oZWFkZXI9Inskc21hbGxIZWFkZXJ9IiBkYXRhLWFkYXB0LWNvbnRhaW5lci13aWR0aD0ieyRhZGFwdENvbnRhaW5lcldpZHRofSI+DQogICAgICA8ZGl2IGNsYXNzPSJmYi14ZmJtbC1wYXJzZS1pZ25vcmUiPg0KICAgICAgICAgPGJsb2NrcXVvdGUgY2l0ZT0iaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tL3skcGFnZUlkfS8iPg0KICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tL3skcGFnZUlkfS8iPnskc2l0ZW5hbWV9PC9hPg0KICAgICAgICAgPC9ibG9ja3F1b3RlPg0KICAgICAgPC9kaXY+DQogICA8L2Rpdj4=]]></data>
	</file>
	<file>
	  <filename>/templates/googleMap_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogZ29vZ2xlTWFwX3RlbXBsYXRlLnRwbCAtIHYxLjAgLSAyMkF1ZzIwDQoNCiAgIC0gdjEuMCAtIDI2TWF5MjAgLSAxc3QgdmVyc2lvbiBhcyBhIHNpbXBsZSBtYXBzIHNvbHV0aW9uIChjYW4gcmVwbGFjZSBDR0dvb2dsZU1hcHMgaW4gbW9zdCBjYXNlcykNCg0KICAgU2VlOiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vZW1iZWQvZ3VpZGUNCg0KICAgUGxhY2UgSURzIGFyZSBzdGFibGUgd2F5IHRvIHVuaXF1ZWx5IGlkZW50aWZ5IGEgcGxhY2U6DQogICAgICBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9leGFtcGxlcy9wbGFjZXMtcGxhY2VpZC1maW5kZXINCg0KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqfQ0KICAgPGlmcmFtZSB3aWR0aD0iMTAwJSIgaGVpZ2h0PSJ7JGhlaWdodH0iIGZyYW1lYm9yZGVyPSIwIiBzdHlsZT0iZGlzcGxheTpibG9jazsgYm9yZGVyOjA7IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vbWFwcy9lbWJlZC92MS97JG1vZGV9P2tleT17JGFwaWtleX0meyRwYXJhbWV0ZXJzfSIgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPg==]]></data>
	</file>
	<file>
	  <filename>/templates/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/templates/instagramFeed_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogaW5zdGFncmFtRmVlZF90ZW1wbGF0ZS50cGwgLSB2MS4wIC0gMDFKdW4yMSANCiAgICANCiAgICBzbWFydHkgdmFyaWFibGVzIGF2YWlsYWJsZToNCiAgICAgICAgJGRhdGEgLSBhcnJheSBvZiBhbGwgbWVkaWEgaXRlbXMgcmV0dXJuZWQgZnJvbSBJbnN0YWdyYW0NCiAgICAgICAgJG1vZCAtIHRoaXMgbW9kdWxlcyBvYmplY3QsIGUuZy4gZm9yIGFjY2Vzc2luZyBsYW5nIGFycmF5DQoNCiAgICBSZWNvbW1lbmQgdG8gdXNlIGVpdGhlciBTbWFydEltYWdlIG9yIENHU21hcnRJbWFnZSB0byBsb2NhbGx5IGNhY2hlIGltYWdlcw0KICAgICAgICANCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKn0NCntpZiAhZW1wdHkoJGVycm9ycyl9DQogICAgPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtd2FybmluZyIgcm9sZT0iYWxlcnQiPnsnPGJyPid8aW1wbG9kZTokZXJyb3JzfTwvZGl2Pg0Key9pZn0NCg0Ke2lmICFlbXB0eSgkZGF0YSl9DQogICAgPGRpdiBjbGFzcz0iaW5zdGFncmFtLWltYWdlcyBjYXJkLWRlY2sganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIiPg0KICAgIHtmb3JlYWNoICRkYXRhIGFzICRpbWFnZX0NCiAgICAgICAge2lmICRpbWFnZUBpbmRleDwxMH0NCiAgICAgICAgeyRpbWFnZUFsdD0kaW1hZ2UtPnRpdGxlbmFtZXxlc2NhcGV9DQogICAgICAgIDxhIGNsYXNzPSJjYXJkIGNhcmQtNSBtYi1ncmlkIiBocmVmPSJ7JGltYWdlLnBlcm1hbGlua30iIHRhcmdldD0iX2JsYW5rIj4NCiAgICAgICAgICAgIHtpZiAkaW1hZ2UubWVkaWFfdHlwZT09VklERU99DQogICAgICAgICAgICAgICAgeyRpbWdzcmM9JGltYWdlLnRodW1ibmFpbF91cmx9DQogICAgICAgICAgICB7ZWxzZX0NCiAgICAgICAgICAgICAgICB7JGltZ3NyYz0kaW1hZ2UubWVkaWFfdXJsfQ0KICAgICAgICAgICAgey9pZn0NCiAgICAgICAgICAgIHtDR1NtYXJ0SW1hZ2Ugc3JjPSRpbWdzcmMgYWx0PSIkaW1hZ2UudXNlcm5hbWUgSW5zdGFncmFtICRpbWFnZS50aW1lc3RhbXB8ZGF0ZV9mb3JtYXQiIGNsYXNzPSdjYXJkLWltZycgZmlsdGVyX2Nyb3B0b2ZpdD0nMzIwLDMyMCxjLDEnIG5vZW1iZWQ9MX0NCiAgICAgICAgPC9hPg0KICAgICAgICB7L2lmfQ0KICAgIHsvZm9yZWFjaH0NCiAgICA8L2Rpdj4NCnsvaWZ9]]></data>
	</file>
	<file>
	  <filename>/templates/twitterFeed_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogdHdpdHRlckZlZWRfdGVtcGxhdGUudHBsIC0gdjEuMCAtIDA5SnVuMTYNCg0KICAgLSB2MS4wIC0gMDlKdW4xNiAtIGluaXRpYWwgdmVyc2lvbg0KDQogICBTZWUgaHR0cHM6Ly9kZXYudHdpdHRlci5jb20vd2ViL2VtYmVkZGVkLXRpbWVsaW5lcyBmb3IgZGV0YWlscy4NCg0KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqfQ0Ke2lmICR0d2l0dGVyU2NyZWVuTmFtZSE9Jyd9DQp7aWYgJHR3aXR0ZXJIZWlnaHR9DQogICA8ZGl2IGNsYXNzPSJ0d2l0dGVyLXRpbWVsaW5lLW91dGVyIiBzdHlsZT0iaGVpZ2h0OnskdHdpdHRlckhlaWdodH1weDt7aWYgJHR3aXR0ZXJCb3JkZXJDb2xvcn0gYm9yZGVyOjFweCBzb2xpZCB7JHR3aXR0ZXJCb3JkZXJDb2xvcn07ey9pZn0iPg0Key9pZn0NCiAgICAgIDxhIGNsYXNzPSJ0d2l0dGVyLXRpbWVsaW5lIiBocmVmPSIvL3R3aXR0ZXIuY29tL3skdHdpdHRlclNjcmVlbk5hbWV9IntzdHJpcH0NCiAgICAgICAgIHtpZiAkdHdpdHRlcldpZHRofSBkYXRhLXdpZHRoPSJ7JHR3aXR0ZXJXaWR0aH0iIHsvaWZ9DQogICAgICAgICB7aWYgJHR3aXR0ZXJIZWlnaHR9IGRhdGEtaGVpZ2h0PSJ7JHR3aXR0ZXJIZWlnaHR9IiBzdHlsZT0iaGVpZ2h0OnskdHdpdHRlckhlaWdodH1weCJ7L2lmfQ0KICAgICAgICAge2lmICR0d2l0dGVyVGhlbWV9IGRhdGEtdGhlbWU9InskdHdpdHRlclRoZW1lfSIgey9pZn0NCiAgICAgICAgIHtpZiAkdHdpdHRlckNocm9tZU9wdGlvbnN9IGRhdGEtY2hyb21lPSJ7JHR3aXR0ZXJDaHJvbWVPcHRpb25zfSIgey9pZn0NCiAgICAgICAgIGRhdGEtZG50PSJ0cnVlIg0KICAgICAgey9zdHJpcH0+VHdlZXRzIGJ5IHskdHdpdHRlclNjcmVlbk5hbWV9PC9hPg0KICAgICAge2xpdGVyYWx9PHNjcmlwdCBhc3luYyBzcmM9Ii8vcGxhdGZvcm0udHdpdHRlci5jb20vd2lkZ2V0cy5qcyIgY2hhcnNldD0idXRmLTgiPjwvc2NyaXB0PnsvbGl0ZXJhbH0NCntpZiAkdHdpdHRlckhlaWdodH0gICA8L2Rpdj57L2lmfQ0Key9pZn0=]]></data>
	</file>
	<file>
	  <filename>/templates/Utilities_Test_Template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogVXRpbGl0aWVzX1Rlc3RfVGVtcGxhdGUgLSB2MS4yIC0gMDJKdWwyMA0KDQogICAtIHYxLjIgLSAwMkp1bDIwIC0gZXh0cmEgdGVzdCBmb3IgYWRtaW5fdXNlciAmIG1vdmUgdGVzdCB0ZW1wbGF0ZSBpbnRvIFV0aWxpdGllcy90ZW1wbGF0ZXMNCiAgIC0gdjEuMSAtIDA3RmViMTkgLSByZW1vdmUgc29tZSByZWR1bmRhbnQgY29udGVudA0KICAgLSB2MS4wIC0gMDVGZWIxOSAtDQoNCiAgIFRlbXBsYXRlIHN0b3JlZCBpbiBVdGlsaXRpZXMvdGVtcGxhdGVzL1V0aWxpdGllc19UZXN0X1RlbXBsYXRlLnRwbA0KICAgICAgLSBjcmVhdGUgYSB2ZXJ5IHNpbXBsZSBjb3JlOnBhZ2UgdGVtcGxhdGUgJ1V0aWxpdGllc19UZXN0JyB3aXRoIGp1c3QgdGhlIDEgbGluZToNCiAgICAgICAgICAgIHtpbmNsdWRlIGZpbGU9J21vZHVsZV9maWxlX3RwbDpVdGlsaXRpZXM7VXRpbGl0aWVzX1Rlc3RfVGVtcGxhdGUudHBsJ30NCiAgICAgIC0gY3JlYXRlICdVdGlsaXRpZXMgVGVzdCcgcGFnZSwgdXNpbmcgdGhlIGFib3ZlIHRlbXBsYXRlLg0KDQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKn17c3RyaXB9DQp7Y29udGVudCBvbmVsaW5lPTEgbGFiZWw9IlV0aWxpdGllcyBURVNUIFRlbXBsYXRlIiBhc3NpZ249Y29udGVudDF9DQoNCg0Ke2NnanNfcmVxdWlyZSBsaWI9J2pxdWVyeSd9DQp7Y2dqc19yZXF1aXJlIGpzZmlsZT0nYXNzZXRzL2pzL2Jvb3RzdHJhcC5idW5kbGUubWluLmpzJ30NCntjZ2pzX3JlcXVpcmUgbGliPSdmb3JtJ30NCntjZ2pzX3JlcXVpcmUganNmaWxlPSdhc3NldHMvanMvc2xpY2subWluLmpzJ30NCntjZ2pzX3JlcXVpcmUganNmaWxlPSdhc3NldHMvanMvbWFpbi5qcyd9DQoNCg0Key9zdHJpcH08IURPQ1RZUEUgaHRtbD4NCjxodG1sIGxhbmc9ImVuIj4NCjxoZWFkPg0Ke2luY2x1ZGUgZmlsZT0nY21zX3RlbXBsYXRlOlN0YW5kYXJkIEdsb2JhbCBNZXRhZGF0YSd9DQogICB7KmNtc19zdHlsZXNoZWV0Kn0NCiAgIHtjc3NNaW5pZmllciBjc3M9IntjbXNfc3R5bGVzaGVldCBub2xpbmtzPXRydWV9In0NCiAgIDxzdHlsZT57bGl0ZXJhbH0ucHJlIHtmb250LWZhbWlseTptb25vc3BhY2U7IHdoaXRlLXNwYWNlOnByZS13cmFwOyB3b3JkLXdyYXA6YnJlYWstd29yZDsNCiAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiNEREQ7IHBhZGRpbmc6MWVtO317L2xpdGVyYWx9PC9zdHlsZT4NCjwvaGVhZD4NCg0KPGJvZHkgY2xhc3M9InBhZ2UteyRwYWdlX2FsaWFzfSI+DQoNCntnbG9iYWxfY29udGVudCBuYW1lPSdoZWFkZXInfQ0KDQo8ZGl2IGNsYXNzPSJtYWluIj4NCiAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+DQogICAgICA8ZGl2IGNsYXNzPSJyb3ciPg0KICAgICAgICAgPGRpdiBjbGFzcz0iY29sLTEyIj4NCg0KPGgxPlV0aWxpdGllcyBUZXN0IFBhZ2UgLSBGcm9udGVuZCBUZXN0czwvaDE+DQoNCg0KPGgyPlRlc3QgMTogZ2FsbGVyeUNvdmVyczwvaDI+DQo8cD4kZ2FsbGVyeUNvdmVycyBkaXI9J3Byb2plY3QtZ2FsbGVyaWVzJyBpczo8L3A+DQo8ZGl2IGNsYXNzPSJwcmUiPntnYWxsZXJ5Q292ZXJzIGRpcj0ncHJvamVjdC1nYWxsZXJpZXMnfXskZ2FsbGVyeUNvdmVyc3xwcmludF9yfTwvZGl2Pg0KPGRpdiBjbGFzcz0icm93Ij4NCiAgIHtmb3JlYWNoICRnYWxsZXJ5Q292ZXJzIGFzICRpbWd9DQogICAgICA8ZGl2IGNsYXNzPSJjb2wtMiI+PGltZyBzcmM9Int1cGxvYWRzX3VybH0veyRpbWd9IiBhbHQ9IiI+PC9kaXY+DQogICB7L2ZvcmVhY2h9DQo8L2Rpdj48YnI+DQoNCg0KDQo8aDI+VGVzdCAyOiBnb29nbGVGb250VXJsPC9oMj4NCntjb250ZW50IGJsb2NrPWNvbnRlbnQyIGxhYmVsPSJnb29nbGVGb250VXJsOiBjaGVjayB0aGF0IGNvcnJlY3QgZm9udHMgYmVpbmcgdXNlZCBpbiBUaW55TUNFIiBhc3NpZ249Y29udGVudDJ9DQo8cD5nb29nbGVGb250VXJsIGlzOiAne2dvb2dsZUZvbnRVcmx9JzwvcD4NCjxicj4NCg0KDQo8aDI+VGVzdCAzOiBjc3NNaW5pZmllcjwvaDI+DQo8cD5UbyBjaGVjayA8c3Ryb25nPmNzc01pbmlmaWVyPC9zdHJvbmc+IG91dHB1dDo8L3A+DQo8b2w+DQogICA8bGk+dmlldyBwYWdlIHNvdXJjZTwvbGk+DQogICA8bGk+ZmluZCBDU1MgbGluayBpbiBoZWFkICcuLi5taW5pZmllZF9zdHlsZXNoZWV0X2NvbWJpbmVkXy4uLic8L2xpPg0KICAgPGxpPm9wZW4gaW4gTmV3IFRhYjwvbGk+DQogICA8bGk+Y2hlY2sgdGhhdCBhbGwgQ1NTIGlzIG1pbmlmaWVkIDopPC9saT4NCjwvb2w+DQo8YnI+DQoNCg0KPGgyPlRlc3QgNDogeW91VHViZVBsYXllcjwvaDI+DQo8cD55b3VUdWJlUGxheWVyIC0gbG9hZCBZb3VUdWJlIGlmcmFtZSBpbW1lZGlhdGVseSAoZGVmYXVsdCk8L3A+DQo8ZGl2IGNsYXNzPSJjb2wtMyI+e3lvdVR1YmVQbGF5ZXIgdmlkZW9pZD0iSnVyMUZPX25ZOTgifTwvZGl2Pjxicj4NCg0KPHA+eW91VHViZVBsYXllciAtIGxvYWQgdGh1bWJuYWlsIG9ubHkgJiBZb3VUdWJlIHBvcHVwIG9ubHkgb24gY2xpY2sgKG5lZWRzIGpzKTwvcD4NCjxkaXYgY2xhc3M9ImNvbC0zIj57eW91VHViZVBsYXllciB2aWRlb2lkPSJKdXIxRk9fblk5OCIgdGh1bWJuYWlsPW1lZGl1bX08L2Rpdj48YnI+DQoNCg0KPGgyPlRlc3QgNTogdHdpdHRlckZlZWQ8L2gyPg0KPGRpdiBjbGFzcz0iY29sLTUiPnt0d2l0dGVyRmVlZCBzY3JlZW5fbmFtZT0nY21zbXMnfTwvZGl2Pjxicj4NCg0KDQo8aDI+VGVzdCA2OiBlZGl0Q29udGVudFRhYnM8L2gyPg0Ke2NvbnRlbnQgYmxvY2s9Y29udGVudDMgbGFiZWw9IlRlc3QgNjogZWRpdENvbnRlbnRUYWJzOiBjaGVjayB0aGF0IGNvcnJlY3QgdGFicyBhbmQgZmllbGRzIGFyZSBiZWluZyBkaXNwbGF5ZWQuIENvdWxkIG1ha2UgYWRkaXRpb25hbCBjaGFuZ2VzICYgdGVzdCBpZiByZXF1aXJlZCIgb25lbGluZT0xIGFzc2lnbj1jb250ZW50M30NCjxwPk5vdGhpbmcgdG8gc2VlIG9uIHRoZSBmcm9udGVuZCE8L3A+PGJyPg0KDQoNCjxoMj5UZXN0IDc6IGZhY2Vib29rRmVlZDwvaDI+DQp7ZmFjZWJvb2tGZWVkIHBhZ2VJZD0nQklubm92YXRpdmVXZWJEZXZlbG9wbWVudCd9PGJyPjxicj4NCg0KDQo8aDI+VGVzdCA4OiBnZXRDdXN0b21HUzwvaDI+DQo8cD5TaG91bGQgc2hvdyB0aGUgQ3VzdG9tR1MgJ0ZhY2Vib29rJyBzZXR0aW5nIGhlcmU6ICd7Z2V0Q3VzdG9tR1MgY3VzdG9tZ3NfZmllbGQ9J0ZhY2Vib29rJ30nPC9wPjxicj4NCg0KDQo8aDI+VGVzdCA5OiBhZG1pbl91c2VyPC9oMj4NCjxwPmFkbWluX3VzZXI6e2lmIHthZG1pblVzZXJ9fVllcyAtIElTIEFETUlOIFVTRVJ7ZWxzZX1OTyAtIG5vdCBBZG1pbiBVc2Vyey9pZn08YnI+DQogICA8c21hbGw+b3BlbiBpbiBpbmNvZ25pdG8gd2luZG93IHRvIHRlc3QgaWYgbm90IGxvZ2dlZCBpbjwvc21hbGw+PC9wPjxicj4NCg0KDQoNCjxoMj5UZXN0IDEwOiBhZG1pbkFjdGlvblVybDwvaDI+DQo8cD5JZiBOT1QgQWRtaW4gVXNlcjogYnV0dG9uIGxpbmtzIHRvIGhvbWUgcGFnZSAmIHVybCBpcyBibGFuazxicj4NCiAgIElmIElTIEFkbWluIFVzZXI6IGJ1dHRvbiAmIHVybCBzaG93biBiZWxvdzo8YnI+DQogICA8dWw+DQogICAgICA8bGk+PGEgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCIgaHJlZj0ie2FkbWluQWN0aW9uVXJsIG1vZHVsZT1DTVNDb250ZW50TWFuYWdlciBhY3Rpb249YWRtaW5fZWRpdGNvbnRlbnQgY29udGVudF9pZD0kY29udGVudF9pZH0iPkVkaXQgdGhpcyBwYWdlIDopPC9hPjwvbGk+DQogICAgICA8bGk+dXJsOiB7YWRtaW5BY3Rpb25VcmwgbW9kdWxlPUNNU0NvbnRlbnRNYW5hZ2VyIGFjdGlvbj1hZG1pbl9lZGl0Y29udGVudCBjb250ZW50X2lkPSRjb250ZW50X2lkfTwvbGk+DQogICA8L3VsPg0KICAgPHNtYWxsPm9wZW4gaW4gaW5jb2duaXRvIHdpbmRvdyB0byB0ZXN0IGlmIG5vdCBsb2dnZWQgaW48L3NtYWxsPjwvcD48YnI+DQogICAgICAgICA8L3A+PGJyPg0KDQogICAgICAgICANCg0KICAgPGgyPlRlc3QgMTE6IGdvb2dsZU1hcCAtIGJhc2ljPC9oMj4NCiAgIHtjb250ZW50IGJsb2NrPWNvbnRlbnQxMSBsYWJlbD0iZ29vZ2xlTWFwIGFwaWtleTogZW50ZXIgYXBpa2V5IGhlcmUgKHJlcXVpcmVkKSIgb25lbGluZT0xIGFzc2lnbj1nb29nbGVNYXBzQXBpS2V5fQ0KICAgPHA+ZGVmYXVsdCB0YWcgb25seSBhcGkga2V5OiB7bGRlbGltfWdvb2dsZU1hcCBhcGlrZXk9JGdvb2dsZU1hcHNBcGlLZXl7cmRlbGltfTwvcD4NCiAgIHtnb29nbGVNYXAgYXBpa2V5PSRnb29nbGVNYXBzQXBpS2V5fQ0KICAgPGJyPg0KDQogICA8aDI+VGVzdCAxMUE6IGdvb2dsZU1hcCAtIG5vIGFwaWtleTwvaDI+DQogICA8cD5kZWZhdWx0IHRhZyB3aXRob3V0IGFueSBwYXJhbWV0ZXJzOiB7bGRlbGltfWdvb2dsZU1hcHtyZGVsaW19PC9wPg0KICAge2dvb2dsZU1hcCBoZWlnaHQ9MTAwfQ0KICAgPGJyPg0KDQogICA8aDI+VGVzdCAxMUI6IGdvb2dsZU1hcCAtIHdpdGggcGFyYW1ldGVyczwvaDI+DQogICA8cD5kZWZhdWx0IHRhZyB3aXRob3V0IGFueSBwYXJhbWV0ZXJzOiB7bGRlbGltfWdvb2dsZU1hcCBhcGlrZXk9JGdvb2dsZU1hcHNBcGlLZXkgcT0ncGxhY2VfaWQ6Q2hJSjJkR01qTU1FZGtnUnFWcWt1WFFrajdjJyBoZWlnaHQ9NDAwIHpvb209MTkgbWFwdHlwZT1zYXRlbGxpdGV7cmRlbGltfTwvcD4NCiAgIHtnb29nbGVNYXAgYXBpa2V5PSRnb29nbGVNYXBzQXBpS2V5IHE9J3BsYWNlX2lkOkNoSUoyZEdNak1NRWRrZ1JxVnFrdVhRa2o3YycgaGVpZ2h0PTQwMCB6b29tPTE5IG1hcHR5cGU9c2F0ZWxsaXRlfQ0KICAgPGJyPg0KICAgPHA+YW5kIHRoZSB0YWcgdXNpbmcgaW4gdGhlIGhlbHA6IHtsZGVsaW19Z29vZ2xlTWFwIGFwaWtleT1ZT1VSX0FQSV9LRVkgcT0ncGxhY2VfaWQ6Q2hJSjJkR01qTU1FZGtnUnFWcWt1WFFrajdjJ3tyZGVsaW19PC9wPg0KICAge2dvb2dsZU1hcCBhcGlrZXk9JGdvb2dsZU1hcHNBcGlLZXkgcT0ncGxhY2VfaWQ6Q2hJSjJkR01qTU1FZGtnUnFWcWt1WFFrajdjJ30NCiAgIDxicj4NCg0KICAgPGgyPlRlc3QgMTFDOiBnb29nbGVNYXAgLSB2aWV3IG1vZGUgd2l0aCBwYXJhbWV0ZXJzPC9oMj4NCiAgIDxwPntsZGVsaW19JHBhcmFtZXRlcnNDLmNlbnRlcj0nLTMzLjg1NjksMTUxLjIxNTIne3JkZWxpbX0NCiAgICAgIHtsZGVsaW19Z29vZ2xlTWFwIGFwaWtleT0kZ29vZ2xlTWFwc0FwaUtleSBoZWlnaHQ9NDAwIHpvb209MTggbWFwdHlwZT1zYXRlbGxpdGUgbW9kZT12aWV3ICBwYXJhbWV0ZXJzPSRwYXJhbWV0ZXJzQ3tyZGVsaW19PC9wPg0KICAgeyRwYXJhbWV0ZXJzQy5jZW50ZXI9Jy0zMy44NTY5LDE1MS4yMTUyJ30NCiAgIHtnb29nbGVNYXAgYXBpa2V5PSRnb29nbGVNYXBzQXBpS2V5IGhlaWdodD00MDAgem9vbT0xOCBtYXB0eXBlPXNhdGVsbGl0ZSBtb2RlPXZpZXcgIHBhcmFtZXRlcnM9JHBhcmFtZXRlcnNDfQ0KICAgPGJyPg0KDQogICA8aDI+VGVzdCAxMjogaW5zdGFncmFtRmVlZCAtIC4uLjwvaDI+DQogICA8cD57bGRlbGltfWluc3RhZ3JhbUZlZWR7cmRlbGltfTwvcD4NCiAgIHtpbnN0YWdyYW1GZWVkfQ0KICAgPGJyPg0KDQoNCjxicj48YnI+PHA+VGhhdCdzIGl0LiBBbGwgVGVzdHMgZG9uZSA6KTwvcD4NCg0KICAgICAgICAgPC9kaXY+DQogICAgICA8L2Rpdj4NCiAgIDwvZGl2Pg0KPC9kaXY+PCEtLSBtYWluLS0+DQoNCg0Ke2dsb2JhbF9jb250ZW50IG5hbWU9J2Zvb3Rlcid9DQoNCntnb29nbGVGb250VXJsIHVybG9ubHk9MSBhc3NpZ249Z29vZ2xlRm9udFVybH0NCntpZiAhZW1wdHkoJGdvb2dsZUZvbnRVcmwpfQ0KICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0ieyRnb29nbGVGb250VXJsfSI+DQp7L2lmfQ0Ke2NnanNfcmVuZGVyIGFkZGtleT0nMTlPY3QxOCd9DQoNCjwvYm9keT4NCjwvaHRtbD4=]]></data>
	</file>
	<file>
	  <filename>/templates/youTubePlayer_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogeW91VHViZVBsYXllcl90ZW1wbGF0ZS50cGwgLSB2MS4wIC0gMDdGZWIxOQ0KDQogICAtIHYxLjAgLSAwN0ZlYjE5IC0gaW5pdGlhbCB2ZXJzaW9uDQoNCiAgIFNlZSBodHRwczovL3N1cHBvcnQuZ29vZ2xlLmNvbS95b3V0dWJlL2Fuc3dlci8xNzE3ODA/aGw9ZW4tR0IgZm9yIGRldGFpbHMuDQoNCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKn0NCntpZiAkdGh1bWJuYWlsPT0nJ30NCnsqIGluc2VydCBZb3VUdWJlIGlmcmFtZSBpbmxpbmUgJiByZXNwb25zaXZlIHVzaW5nIGJvb3RzdHJhcCBjc3MgKn0NCiAgICAgIDxkaXYgY2xhc3M9InZpZGVvLWNvbnRhaW5lciBlbWJlZC1yZXNwb25zaXZlIGVtYmVkLXJlc3BvbnNpdmUteyRhc3BlY3R9IHskY2xhc3N9Ij4NCiAgICAgICAgIDxpZnJhbWUgY2xhc3M9ImVtYmVkLXJlc3BvbnNpdmUtaXRlbSIgc3JjPSIvL3d3dy55b3V0dWJlLmNvbS9lbWJlZC97JHZpZGVvaWR9P3JlbD0wJm1vZGVzdGJyYW5kaW5nPTF7JHN0YXJ0fXskYXV0b3BsYXl9Ij48L2lmcmFtZT4NCiAgICAgIDwvZGl2Pg0KDQp7ZWxzZX0NCnsqIGluc2VydCBzcGVjaWZpZWQgdGh1bWJuYWlsIGFuZCBsb2FkIHBvcHVwIHZpZGVvIG9uIGNsaWNrDQogICBub3RlOiB0aGlzIG9wdGlvbiByZXF1aXJlcyBzbW9lIGN1c3RvbSBqcyBhbmQgY3NzIHRvIGZ1bmN0aW9uICp9DQogICAgICA8YSBjbGFzcz0idmlkZW8tdGh1bWJuYWlsIGNhcmQgbW9kYWwtYXV0byIgZGF0YS10b2dnbGU9Im1vZGFsIiBkYXRhLXZpZGVvLXNyYz0iLy93d3cueW91dHViZS5jb20vZW1iZWQveyR2aWRlb2lkfSIgZGF0YS10YXJnZXQ9IiNtb2RhbC1hdXRvIiBkYXRhLW1vZGFsLXNpemU9Inskc2l6ZX0iIGhyZWY9IiMiPg0KICAgICAgICAgPGltZyBzcmM9InskdGh1bWJuYWlsfSIgYWx0PSJ7JHRleHR9Ij4NCiAgICAgICAgIDxzcGFuIGNsYXNzPSJjYXJkLWltZy1vdmVybGF5IGQtZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHRleHQtY2VudGVyIj4NCiAgICAgICAgICAgIDxpIGNsYXNzPSJpY29uLXlvdXR1YmUgaWNvbi01eCIgc3R5bGU9ImNvbG9yOnJlZDsiPjwvaT4NCiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0Ij57JHRleHR9PC9zcGFuPg0KICAgICAgICAgPC9zcGFuPg0KICAgICAgPC9hPg0Key9pZn0=]]></data>
	</file>
	<file>
	  <filename>/Utilities.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIE1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3V0aWxpdGllcw0KIyBMaWNlbmNlOiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMNCiMgICAgICAgICAgc2VlIC9VdGlsaXRpZXMvbGFuZy9MSUNFTkNFLnR4dCBvciA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDE5IGJ5IENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uIChjb3B5cmlnaHRAY21zbWFkZXNpbXBsZS5vcmcpDQojIFByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlDQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzDQojIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOw0KIyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLg0KIyBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQojDQojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLg0KIyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCg0KLy8gcHV0IG1vcmUgY29tcGxleCBmdW5jdGlvbnMgaW4gc2VwYXJhdGUgZnVuY3Rpb24uTmFtZS5waHAgZmlsZSAtIGJ1dCByZXF1aXJlIGhlcmU6DQokZm4gPSBjbXNfam9pbl9wYXRoKF9fRElSX18sJ2Z1bmN0aW9uLmNzc01pbmlmaWVyLnBocCcpOyByZXF1aXJlX29uY2UoJGZuKTsNCiRmbiA9IGNtc19qb2luX3BhdGgoX19ESVJfXywnZnVuY3Rpb24ueW91VHViZVBsYXllci5waHAnKTsgcmVxdWlyZV9vbmNlKCRmbik7DQokZm4gPSBjbXNfam9pbl9wYXRoKF9fRElSX18sJ2Z1bmN0aW9uLnR3aXR0ZXJGZWVkLnBocCcpOyByZXF1aXJlX29uY2UoJGZuKTsNCiRmbiA9IGNtc19qb2luX3BhdGgoX19ESVJfXywnZnVuY3Rpb24uZWRpdENvbnRlbnRUYWJzLnBocCcpOyByZXF1aXJlX29uY2UoJGZuKTsNCiRmbiA9IGNtc19qb2luX3BhdGgoX19ESVJfXywnZnVuY3Rpb24uZmFjZWJvb2tGZWVkLnBocCcpOyByZXF1aXJlX29uY2UoJGZuKTsNCiRmbiA9IGNtc19qb2luX3BhdGgoX19ESVJfXywnZnVuY3Rpb24uYWRtaW5BY3Rpb25VcmwucGhwJyk7IHJlcXVpcmVfb25jZSgkZm4pOw0KJGZuID0gY21zX2pvaW5fcGF0aChfX0RJUl9fLCdmdW5jdGlvbi5nb29nbGVNYXAucGhwJyk7IHJlcXVpcmVfb25jZSgkZm4pOw0KDQoNCmNsYXNzIFV0aWxpdGllcyBleHRlbmRzIFxDTVNNb2R1bGUgew0KDQogICBwdWJsaWMgZnVuY3Rpb24gR2V0VmVyc2lvbigpIHsgcmV0dXJuICcxLjgnOyB9DQogICBwdWJsaWMgZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkgeyByZXR1cm4gJ1V0aWxpdGllcyc7IH0NCiAgIHB1YmxpYyBmdW5jdGlvbiBHZXRBZG1pbkRlc2NyaXB0aW9uKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2FkbWluZGVzY3JpcHRpb24nKTsgfQ0KICAgcHVibGljIGZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkgeyByZXR1cm4gVFJVRTsgfQ0KICAgcHVibGljIGZ1bmN0aW9uIEhhc0FkbWluKCkgeyByZXR1cm4gVFJVRTsgfQ0KICAgcHVibGljIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpIHsgcmV0dXJuICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJyk7IH0NCiAgIHB1YmxpYyBmdW5jdGlvbiBHZXRIZWxwKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2hlbHAnKTsgfQ0KICAgcHVibGljIGZ1bmN0aW9uIEdldEF1dGhvcigpIHsgcmV0dXJuICdDaHJpcyBUYXlsb3InOyB9DQogICBwdWJsaWMgZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKSB7IHJldHVybiAnY2hyaXNAYmlubm92YXRpdmUuY28udWsnOyB9DQogICBwdWJsaWMgZnVuY3Rpb24gR2V0Q2hhbmdlTG9nKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2NoYW5nZWxvZycpOyB9DQogICBwdWJsaWMgZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKSB7IHJldHVybiAnMi4wJzsgfQ0KICAgcHVibGljIGZ1bmN0aW9uIEluc3RhbGxQb3N0TWVzc2FnZSgpIHsgcmV0dXJuICR0aGlzLT5MYW5nKCdpbnN0YWxsX21zZycpOyB9DQogICBwdWJsaWMgZnVuY3Rpb24gVW5pbnN0YWxsUHJlTWVzc2FnZSgpIHsgcmV0dXJuICR0aGlzLT5MYW5nKCdhc2tfdW5pbnN0YWxsJyk7IH0NCg0KDQogICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7DQogICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCk7DQoNCiAgICAgICRzbWFydHkgPSBcQ21zQXBwOjpnZXRfaW5zdGFuY2UoKS0+R2V0U21hcnR5KCk7DQogICAgICBpZiggISRzbWFydHkgKSByZXR1cm47DQoNCiAgICAgIC8vIHJlZ2lzdGVyIGZ1bmN0aW9ucyAtIGxlYXZlIHNpbXBsZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlDQogICAgICAkc21hcnR5LT5yZWdpc3Rlcl9mdW5jdGlvbignY29udGVudF90eXBlJywgYXJyYXkoJHRoaXMsICdjb250ZW50X3R5cGUnKSApOw0KICAgICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ2dhbGxlcnlDb3ZlcnMnLCBhcnJheSgkdGhpcywgJ2dhbGxlcnlDb3ZlcnMnKSApOw0KICAgICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ2dvb2dsZUZvbnRVcmwnLCBhcnJheSgkdGhpcywgJ2dvb2dsZUZvbnRVcmwnKSApOw0KICAgICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ2dldEN1c3RvbUdTJywgYXJyYXkoJHRoaXMsICdnZXRDdXN0b21HUycpICk7DQogICAgICAkc21hcnR5LT5yZWdpc3Rlcl9mdW5jdGlvbignYWRtaW5Vc2VyJywgYXJyYXkoJHRoaXMsICdhZG1pblVzZXInKSApOw0KICAgICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ2luc3RhZ3JhbUZlZWQnLCBhcnJheSgkdGhpcywgJ2luc3RhZ3JhbUZlZWQnKSApOw0KDQoNCiAgICAgIC8vIHJlZ2lzdGVyIGZ1bmN0aW9ucyAtIHB1dCBtb3JlIGNvbXBsZXggZnVuY3Rpb25zIGluIHNlcGFyYXRlIGZ1bmN0aW9uLk5hbWUucGhwIGZpbGUNCiAgICAgICRzbWFydHktPnJlZ2lzdGVyX2Z1bmN0aW9uKCdjc3NNaW5pZmllcicsICdjc3NNaW5pZmllcicpOw0KICAgICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ3lvdVR1YmVQbGF5ZXInLCAneW91VHViZVBsYXllcicpOw0KICAgICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ2VkaXRDb250ZW50VGFicycsICdlZGl0Q29udGVudFRhYnMnKTsNCiAgICAgICRzbWFydHktPnJlZ2lzdGVyX2Z1bmN0aW9uKCd0d2l0dGVyRmVlZCcsICd0d2l0dGVyRmVlZCcpOw0KICAgICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ2ZhY2Vib29rRmVlZCcsICdmYWNlYm9va0ZlZWQnKTsNCiAgICAgICRzbWFydHktPnJlZ2lzdGVyX2Z1bmN0aW9uKCdhZG1pbkFjdGlvblVybCcsICdhZG1pbkFjdGlvblVybCcpOw0KICAgICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ2dvb2dsZU1hcCcsICdnb29nbGVNYXAnKTsNCg0KICAgfQ0KDQoNCg0KICAgcHVibGljIGZ1bmN0aW9uIEluaXRpYWxpemVGcm9udGVuZCgpIHsNCiAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdzY3JlZW5fbmFtZScsIENMRUFOX1NUUklORyk7DQogICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnd2lkdGgnLCBDTEVBTl9JTlQpOw0KICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2hlaWdodCcsIENMRUFOX0lOVCk7DQogICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgndGhlbWUnLCBDTEVBTl9TVFJJTkcpOw0KICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2xpbmtfY29sb3InLCBDTEVBTl9TVFJJTkcpOw0KICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2JvcmRlcl9jb2xvcicsIENMRUFOX1NUUklORyk7DQogICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnY2hyb21lX29wdGlvbnMnLCBDTEVBTl9TVFJJTkcpOw0KICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2Fzc2lnbicsIENMRUFOX1NUUklORyk7DQogICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnY3VzdG9tZ3NfZmllbGQnLCBDTEVBTl9TVFJJTkcpOw0KICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ21vdmVfdGFiX2NvbnRlbnQnLCBDTEVBTl9TVFJJTkcpOw0KICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ21vdmVfZmllbGRzJywgQ0xFQU5fU1RSSU5HKTsNCiAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdyZW5hbWVfdGFiJywgQ0xFQU5fU1RSSU5HKTsNCiAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdwYWdlSWQnLCBDTEVBTl9TVFJJTkcpOw0KICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2hpZGVDb3ZlcicsIENMRUFOX1NUUklORyk7DQogICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnc2hvd0ZhY2VwaWxlJywgQ0xFQU5fU1RSSU5HKTsNCiAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdzaG93UG9zdHMnLCBDTEVBTl9TVFJJTkcpOw0KICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2hpZGVDdGEnLCBDTEVBTl9TVFJJTkcpOw0KICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3NtYWxsSGVhZGVyJywgQ0xFQU5fU1RSSU5HKTsNCiAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdhZGFwdENvbnRhaW5lcldpZHRoJywgQ0xFQU5fU1RSSU5HKTsNCiAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdjdXN0b21nc19maWVsZCcsIENMRUFOX1NUUklORyk7DQogICAgICAvLyBkb24ndCBhZGQgYW55IG1vcmUgcGFyYW1ldGVycyBoZXJlIC0ganVzdCBjbGVhbiB3aGVuIGVhY2ggaXMgdXNlZCBieSBmdW5jdGlvbg0KICAgICAgLy8gdG8gZG8gLSBtb3ZlIHRoZXNlIHRvIGVhY2ggZnVuY3Rpb24gYWxzbw0KICAgfQ0KDQoNCg0KICAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLw0KICAgLy8gU2ltcGxlIGZ1bmN0aW9ucyAtIHN0YXJ0IGhlcmUNCiAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8NCg0KDQoNCiAgIGZ1bmN0aW9uIGNvbnRlbnRfdHlwZSAoJHBhcmFtcykgew0KICAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLw0KICAgLy8gU2V0cyB0aGUgcmVxdWVzdCBjb250ZW50IHR5cGUgdG8gYSB2YWxpZCBtaW1lIHR5cGUNCiAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8NCg0KICAgICAgaWYgKCBpc3NldCgkcGFyYW1zWyd0eXBlJ10pICkNCiAgICAgICAgICRjb250ZW50X3R5cGUgPSBzdHJ2YWwoICRwYXJhbXNbJ3R5cGUnXSApOw0KDQogICAgICBpZiAoICFlbXB0eSggJGNvbnRlbnRfdHlwZSApICkNCiAgICAgICAgIENNU0FwcDo6Z2V0X2luc3RhbmNlKCktPnNldF9jb250ZW50X3R5cGUoJGNvbnRlbnRfdHlwZSk7DQoNCiAgIH0NCg0KDQogICBmdW5jdGlvbiBnYWxsZXJ5Q292ZXJzKCRwYXJhbXMsICRzbWFydHkpIHsNCiAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgIC8vIHNldHMgJGdhbGxlcnlDb3ZlcnMgYXJyYXkgY29udGFpbmluZyB0aGUgY292ZXJmaWxlICYgY292ZXJwYXRoIG9mIHRoZSBmdWxsIHNpemUgY292ZXIgaW1hZ2VzDQogICAvLyBvZiB0aGUgZ2FsbGVyaWVzIGluICRkaXIgcGFyYW1ldGVyICByZXF1aXJlZA0KICAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgICAgJG91dCA9ICcnOw0KICAgICAgJGRpciA9IHN0cnZhbCgkcGFyYW1zWydkaXInXSk7DQoNCiAgICAgICRnYWxsZXJ5Q292ZXJzID0gYXJyYXkoKTsNCiAgICAgICRHYWxsZXJ5ID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdHYWxsZXJ5Jyk7DQogICAgICBpZiggaXNfb2JqZWN0KCRHYWxsZXJ5KSAmJiAhZW1wdHkoJGRpcikgKSB7DQogICAgICAgICAvLyBQRyA9IFBhcmVudCBHYWxsZXJ5LCBDRyA9IENoaWxkIEdhbGxlcnksIENJID0gQ292ZXIgSW1hZ2UNCiAgICAgICAgICRzcWwgPSAiU0VMRUNUIENHLiosIENJLmZpbGVuYW1lIEFTIGNvdmVyZmlsZSwgQ0kuZmlsZXBhdGggQVMgY292ZXJwYXRoDQogICAgICAgICAgICBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZ2FsbGVyeSBBUyBQRw0KICAgICAgICAgICAgSk9JTiAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2dhbGxlcnkgQVMgQ0cNCiAgICAgICAgICAgICAgIE9OIFBHLmZpbGVpZCA9IENHLmdhbGxlcnlpZA0KICAgICAgICAgICAgSk9JTiAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2dhbGxlcnkgQVMgQ0kNCiAgICAgICAgICAgICAgICAgIE9OIENHLmRlZmF1bHRmaWxlID0gQ0kuZmlsZWlkDQogICAgICAgICAgICBXSEVSRSBQRy5maWxlbmFtZT0nIi4kZGlyLiIvJyI7DQogICAgICAgICAkZGIgPSBcY21zX3V0aWxzOjpnZXRfZGIoKTsNCiAgICAgICAgICRyZXMgPSAkZGItPkdldEFycmF5KCRzcWwsICRkaXIuJy8nKTsNCiAgICAgIH0NCiAgICAgIGZvcmVhY2ggKCRyZXMgYXMgJGdhbGxlcnkpIHsNCiAgICAgICAgICRnYWxsZXJ5Q292ZXJzWyRnYWxsZXJ5WydmaWxlcGF0aCddLiRnYWxsZXJ5WydmaWxlbmFtZSddXSA9DQogICAgICAgICAgICAnaW1hZ2VzL0dhbGxlcnkvJy4kZ2FsbGVyeVsnY292ZXJwYXRoJ10uJGdhbGxlcnlbJ2NvdmVyZmlsZSddOw0KICAgICAgfQ0KDQogICAgICAkc21hcnR5LT5hc3NpZ24oJ2dhbGxlcnlDb3ZlcnMnLCAkZ2FsbGVyeUNvdmVycyk7DQogICB9DQoNCg0KDQogICAgLyoqDQogICAgICogIEByZXR1cm4gc3RyaW5nIGdvb2dsZSBmb250IHVybCB0byBmb250cyBzcGVjaWZpZWQgaW4gQ3VzdG9tR1MgDQogICAgICogIEBwYXJhbSBzdHJpbmcgY3VzdG9tZ3NfZmllbGQgLSAnR29vZ2xlIEZvbnRzJyAoZGVmYXVsdCkNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBnb29nbGVGb250VXJsKCRwYXJhbXMsICRzbWFydHkpIA0KICAgIHsNCiAgICAgICAgJG91dD0nJzsNCiAgICAgICAgJEN1c3RvbUdTID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdDdXN0b21HUycpOw0KICAgICAgICAkQ3VzdG9tR1NGaWVsZE5hbWUgPSAnR29vZ2xlIEZvbnRzJzsNCiAgICAgICAgJGRpc3BsYXkgPSAnc3dhcCc7DQoNCiAgICAgICAgaWYgKCAhZW1wdHkoJHBhcmFtc1snY3VzdG9tZ3NfZmllbGQnXSkgKSB7DQogICAgICAgICAgICAkQ3VzdG9tR1NGaWVsZE5hbWUgPSBmaWx0ZXJfdmFyKCRwYXJhbXNbJ2N1c3RvbWdzX2ZpZWxkJ10sIEZJTFRFUl9TQU5JVElaRV9TVFJJTkcpOw0KICAgICAgICB9DQogICAgICAgIGlmICggaXNfb2JqZWN0KCRDdXN0b21HUykgKSB7DQogICAgICAgICAgICAvLyAgJGdvb2dsZUZvbnRzID0gJEN1c3RvbUdTLT5HZXRGaWVsZCgkQ3VzdG9tR1NGaWVsZCk7DQogICAgICAgICAgICAkQ3VzdG9tR1NGaWVsZCA9ICRDdXN0b21HUy0+R2V0RmllbGQoJEN1c3RvbUdTRmllbGROYW1lKTsNCg0KICAgICAgICAgICAgaWYgKCAhZW1wdHkoJEN1c3RvbUdTRmllbGRbJ3ZhbHVlJ10pICkgew0KICAgICAgICAgICAgLy8gc3RyX3JlcGxhY2UoJEN1c3RvbUdTRmllbGRbJ3ZhbHVlJ10sICd8JywgJyZmYW1pbHk9JykNCiAgICAgICAgICAgICAgICAkZm9udF9mYW1pbGllcyA9IHN0cl9yZXBsYWNlKCd8JywgJyZmYW1pbHk9JywgJEN1c3RvbUdTRmllbGRbJ3ZhbHVlJ10pOw0KICAgICAgICAgICAgICAgIC8vICRDdXN0b21HU0ZpZWxkWyd2YWx1ZSddIGltcGxvZGUoJyZmYW1pbHk9JywpDQogICAgICAgICAgICAgICAgLy8gIG91dHB1dCBmdWxsIGdvb2dsZWFwaXMgdXJsDQogICAgICAgICAgICAgICAgJG91dCA9ICcvL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PScuJGZvbnRfZmFtaWxpZXMuJyZkaXNwbGF5PScuJGRpc3BsYXk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgaWYgKCAhZW1wdHkoJHBhcmFtc1snYXNzaWduJ10pICkgew0KICAgICAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCAkcGFyYW1zWydhc3NpZ24nXSwgJG91dCApOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgZWNobyAkb3V0Ow0KICAgICAgICB9DQogICAgfQ0KDQoNCg0KICAgZnVuY3Rpb24gZ2V0Q3VzdG9tR1MoJHBhcmFtcywgJHNtYXJ0eSkgew0KICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgLy8gYmFzZWQgb24gcGFnZVZhcnMgZ2V0Q3VzdG9tR1MNCiAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgICAgICRDdXN0b21HUyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ3VzdG9tR1MnKTsNCg0KICAgICAgaWYoIGlzX29iamVjdCgkQ3VzdG9tR1MpICYmICFlbXB0eSgkcGFyYW1zWydjdXN0b21nc19maWVsZCddKSApIHsNCiAgICAgICAgICR0bXAgPSAkQ3VzdG9tR1MtPkdldEZpZWxkKCAkcGFyYW1zWydjdXN0b21nc19maWVsZCddICk7DQogICAgICAgICAkdmFsdWUgPSAkdG1wWyd2YWx1ZSddOw0KICAgICAgICAgcmV0dXJuICR2YWx1ZTsNCiAgICAgIH0NCiAgIH0NCg0KDQogICBmdW5jdGlvbiBhZG1pblVzZXIoJHBhcmFtcywgJHNtYXJ0eSkgew0KICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgLy8gYmFzZWQgb24gVmVsZGVucyBzdWdnZXN0aW9uDQogICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQoNCiAgICAgICRhc3NpZ24gPSAoaXNzZXQoJHBhcmFtc1snYXNzaWduJ10pID8gJHBhcmFtc1snYXNzaWduJ10gOiBmYWxzZSk7DQogICAgICAkcmVkaXJlY3QgPSAoaXNzZXQoJHBhcmFtc1sncmVkaXJlY3QnXSkgPyAoYm9vbGVhbikgJHBhcmFtc1sncmVkaXJlY3QnXSA6IGZhbHNlKTsNCg0KICAgICAgJHVzZXJpZCA9IGdldF91c2VyaWQoJHJlZGlyZWN0KTsNCg0KICAgICAgaWYgKCAkYXNzaWduICkgew0KICAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCRhc3NpZ24sIChib29sZWFuKSAkdXNlcmlkICk7DQogICAgICB9IGVsc2Ugew0KICAgICAgICAgcmV0dXJuIChib29sZWFuKSAkdXNlcmlkOw0KICAgICAgfQ0KDQogICB9DQoNCg0KICAgLyoqDQogICAgKiBvdXRwdXRzIGFuIGluc3RhZ3JhbSBmZWVkDQogICAgKg0KICAgICogQHBhcmFtIHRlbXBsYXRlIC0gb3B0aW9uYWwgRE0gdGVtcGxhdGUgdG8gdXNlDQogICAgKi8NCiAgIGZ1bmN0aW9uIGluc3RhZ3JhbUZlZWQoJHBhcmFtcywgJHNtYXJ0eSkgDQogICB7DQogICAgICAkZmVlZCA9IG5ldyBpbnN0YWdyYW1GZWVkOw0KICAgICAgJGZlZWQtPmdldE1lZGlhKCk7DQogICAgICAkZmVlZC0+ZGlzcGxheSgkcGFyYW1zLCAkc21hcnR5KTsNCiAgIH0NCg0KDQp9]]></data>
	</file>
</module>
