<?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>MCFramework</name>
	<version>0.0.2</version>
  <mincmsversion>1.11.10</mincmsversion>
	<help><![CDATA[PGgzPlBhcmFtZXRlcnM8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsYW5nPSJlbl9VUyIgLSBQYXJhbWV0ZXIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoYXQgbGFuZ3VhZ2UgdG8gdXNlIGZvciBkaXNwbGF5IG9uIHRoZSBmcm9udGVuZC4gTm90IGFsbCBtb2R1bGVzIHN1cHBvcnQgb3IgbmVlZCB0aGlzLjwvbGk+PC91bD4=]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgJmx0O2pjY0Btb3JyaXMtY2hhcG1hbi5jb20mZ3Q7PGJyIC8+PGJyIC8+VmVyc2lvbjogMC4wLjI8YnIgLz4=]]></about>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/.idea/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/.idea/.name</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[TUNGcmFtZXdvcms=]]></data>
	</file>
	<file>
	  <filename>/.idea/encodings.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHByb2plY3QgdmVyc2lvbj0iNCI+CiAgPGNvbXBvbmVudCBuYW1lPSJFbmNvZGluZyIgdXNlVVRGR3Vlc3Npbmc9InRydWUiIG5hdGl2ZTJBc2NpaUZvclByb3BlcnRpZXNGaWxlcz0iZmFsc2UiIC8+CjwvcHJvamVjdD4KCg==]]></data>
	</file>
	<file>
	  <filename>/.idea/MCFramework.iml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG1vZHVsZSB0eXBlPSJXRUJfTU9EVUxFIiB2ZXJzaW9uPSI0Ij4KICA8Y29tcG9uZW50IG5hbWU9Ik5ld01vZHVsZVJvb3RNYW5hZ2VyIj4KICAgIDxjb250ZW50IHVybD0iZmlsZTovLyRNT0RVTEVfRElSJCIgLz4KICAgIDxvcmRlckVudHJ5IHR5cGU9ImluaGVyaXRlZEpkayIgLz4KICAgIDxvcmRlckVudHJ5IHR5cGU9InNvdXJjZUZvbGRlciIgZm9yVGVzdHM9ImZhbHNlIiAvPgogICAgPG9yZGVyRW50cnkgdHlwZT0ibW9kdWxlLWxpYnJhcnkiPgogICAgICA8bGlicmFyeSBuYW1lPSJQSFAiPgogICAgICAgIDxDTEFTU0VTPgogICAgICAgICAgPHJvb3QgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkLy4uLy4uL2xpYiIgLz4KICAgICAgICA8L0NMQVNTRVM+CiAgICAgICAgPFNPVVJDRVM+CiAgICAgICAgICA8cm9vdCB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQvLi4vLi4vbGliIiAvPgogICAgICAgIDwvU09VUkNFUz4KICAgICAgPC9saWJyYXJ5PgogICAgPC9vcmRlckVudHJ5PgogIDwvY29tcG9uZW50Pgo8L21vZHVsZT4KCg==]]></data>
	</file>
	<file>
	  <filename>/.idea/misc.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHByb2plY3QgdmVyc2lvbj0iNCI+CiAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0Um9vdE1hbmFnZXIiIHZlcnNpb249IjIiIC8+CjwvcHJvamVjdD4KCg==]]></data>
	</file>
	<file>
	  <filename>/.idea/modules.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHByb2plY3QgdmVyc2lvbj0iNCI+CiAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0TW9kdWxlTWFuYWdlciI+CiAgICA8bW9kdWxlcz4KICAgICAgPG1vZHVsZSBmaWxldXJsPSJmaWxlOi8vJFBST0pFQ1RfRElSJC8uaWRlYS9NQ0ZyYW1ld29yay5pbWwiIGZpbGVwYXRoPSIkUFJPSkVDVF9ESVIkLy5pZGVhL01DRnJhbWV3b3JrLmltbCIgLz4KICAgIDwvbW9kdWxlcz4KICA8L2NvbXBvbmVudD4KPC9wcm9qZWN0PgoK]]></data>
	</file>
	<file>
	  <filename>/.idea/scopes/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/.idea/scopes/scope_settings.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGNvbXBvbmVudCBuYW1lPSJEZXBlbmRlbmN5VmFsaWRhdGlvbk1hbmFnZXIiPgogIDxzdGF0ZT4KICAgIDxvcHRpb24gbmFtZT0iU0tJUF9JTVBPUlRfU1RBVEVNRU5UUyIgdmFsdWU9ImZhbHNlIiAvPgogIDwvc3RhdGU+CjwvY29tcG9uZW50Pg==]]></data>
	</file>
	<file>
	  <filename>/.idea/vcs.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHByb2plY3QgdmVyc2lvbj0iNCI+CiAgPGNvbXBvbmVudCBuYW1lPSJWY3NEaXJlY3RvcnlNYXBwaW5ncyI+CiAgICA8bWFwcGluZyBkaXJlY3Rvcnk9IiRQUk9KRUNUX0RJUiQiIHZjcz0iR2l0IiAvPgogIDwvY29tcG9uZW50Pgo8L3Byb2plY3Q+Cgo=]]></data>
	</file>
	<file>
	  <filename>/.idea/workspace.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHByb2plY3QgdmVyc2lvbj0iNCI+CiAgPGNvbXBvbmVudCBuYW1lPSJDaGFuZ2VMaXN0TWFuYWdlciI+CiAgICA8bGlzdCBkZWZhdWx0PSJ0cnVlIiBpZD0iMGNjNmU4MGYtYTdhOS00NmQyLTllYjEtNDhmNDkzYmFjNzI2IiBuYW1lPSJEZWZhdWx0IiBjb21tZW50PSIiIC8+CiAgICA8aWdub3JlZCBwYXRoPSJNQ0ZyYW1ld29yay5pd3MiIC8+CiAgICA8aWdub3JlZCBwYXRoPSIuaWRlYS93b3Jrc3BhY2UueG1sIiAvPgogICAgPG9wdGlvbiBuYW1lPSJUUkFDS0lOR19FTkFCTEVEIiB2YWx1ZT0idHJ1ZSIgLz4KICAgIDxvcHRpb24gbmFtZT0iU0hPV19ESUFMT0ciIHZhbHVlPSJmYWxzZSIgLz4KICAgIDxvcHRpb24gbmFtZT0iSElHSExJR0hUX0NPTkZMSUNUUyIgdmFsdWU9InRydWUiIC8+CiAgICA8b3B0aW9uIG5hbWU9IkhJR0hMSUdIVF9OT05fQUNUSVZFX0NIQU5HRUxJU1QiIHZhbHVlPSJmYWxzZSIgLz4KICAgIDxvcHRpb24gbmFtZT0iTEFTVF9SRVNPTFVUSU9OIiB2YWx1ZT0iSUdOT1JFIiAvPgogIDwvY29tcG9uZW50PgogIDxjb21wb25lbnQgbmFtZT0iQ2hhbmdlc1ZpZXdNYW5hZ2VyIiBmbGF0dGVuZWRfdmlldz0idHJ1ZSIgc2hvd19pZ25vcmVkPSJmYWxzZSIgLz4KICA8Y29tcG9uZW50IG5hbWU9IkNyZWF0ZVBhdGNoQ29tbWl0RXhlY3V0b3IiPgogICAgPG9wdGlvbiBuYW1lPSJQQVRDSF9QQVRIIiB2YWx1ZT0iIiAvPgogIDwvY29tcG9uZW50PgogIDxjb21wb25lbnQgbmFtZT0iRGFlbW9uQ29kZUFuYWx5emVyIj4KICAgIDxkaXNhYmxlX2hpbnRzIC8+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJFeGVjdXRpb25UYXJnZXRNYW5hZ2VyIiBTRUxFQ1RFRF9UQVJHRVQ9ImRlZmF1bHRfdGFyZ2V0IiAvPgogIDxjb21wb25lbnQgbmFtZT0iRmF2b3JpdGVzTWFuYWdlciI+CiAgICA8ZmF2b3JpdGVzX2xpc3QgbmFtZT0iTUNGcmFtZXdvcmsiIC8+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJGaWxlRWRpdG9yTWFuYWdlciI+CiAgICA8bGVhZj4KICAgICAgPGZpbGUgbGVhZi1maWxlLW5hbWU9Ik1DRnJhbWV3b3JrLm1vZHVsZS5waHAiIHBpbm5lZD0iZmFsc2UiIGN1cnJlbnQ9InRydWUiIGN1cnJlbnQtaW4tdGFiPSJ0cnVlIj4KICAgICAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvTUNGcmFtZXdvcmsubW9kdWxlLnBocCI+CiAgICAgICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgICAgIDxzdGF0ZSBsaW5lPSIxMyIgY29sdW1uPSIwIiBzZWxlY3Rpb24tc3RhcnQ9IjIzMCIgc2VsZWN0aW9uLWVuZD0iMjMwIiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4xMzU0MDYyMyIgdmVydGljYWwtb2Zmc2V0PSIwIiBtYXgtdmVydGljYWwtb2Zmc2V0PSI5OTciPgogICAgICAgICAgICAgIDxmb2xkaW5nIC8+CiAgICAgICAgICAgIDwvc3RhdGU+CiAgICAgICAgICA8L3Byb3ZpZGVyPgogICAgICAgIDwvZW50cnk+CiAgICAgIDwvZmlsZT4KICAgICAgPGZpbGUgbGVhZi1maWxlLW5hbWU9ImNsYXNzLk1DRk9iamVjdC5waHAiIHBpbm5lZD0iZmFsc2UiIGN1cnJlbnQ9ImZhbHNlIiBjdXJyZW50LWluLXRhYj0iZmFsc2UiPgogICAgICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9saWIvY2xhc3MuTUNGT2JqZWN0LnBocCI+CiAgICAgICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgICAgIDxzdGF0ZSBsaW5lPSIyNzAiIGNvbHVtbj0iMTgiIHNlbGVjdGlvbi1zdGFydD0iNjQyMyIgc2VsZWN0aW9uLWVuZD0iNjQyMyIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMCIgdmVydGljYWwtb2Zmc2V0PSIzNzE4IiBtYXgtdmVydGljYWwtb2Zmc2V0PSI1MjgwIj4KICAgICAgICAgICAgICA8Zm9sZGluZyAvPgogICAgICAgICAgICA8L3N0YXRlPgogICAgICAgICAgPC9wcm92aWRlcj4KICAgICAgICA8L2VudHJ5PgogICAgICA8L2ZpbGU+CiAgICAgIDxmaWxlIGxlYWYtZmlsZS1uYW1lPSJjbGFzcy5NQ0ZDcml0ZXJpYS5waHAiIHBpbm5lZD0iZmFsc2UiIGN1cnJlbnQ9ImZhbHNlIiBjdXJyZW50LWluLXRhYj0iZmFsc2UiPgogICAgICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9saWIvY2xhc3MuTUNGQ3JpdGVyaWEucGhwIj4KICAgICAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICAgICAgPHN0YXRlIGxpbmU9IjAiIGNvbHVtbj0iMCIgc2VsZWN0aW9uLXN0YXJ0PSIwIiBzZWxlY3Rpb24tZW5kPSIwIiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4wIiB2ZXJ0aWNhbC1vZmZzZXQ9IjIzMyIgbWF4LXZlcnRpY2FsLW9mZnNldD0iNTY3MCI+CiAgICAgICAgICAgICAgPGZvbGRpbmcgLz4KICAgICAgICAgICAgPC9zdGF0ZT4KICAgICAgICAgIDwvcHJvdmlkZXI+CiAgICAgICAgPC9lbnRyeT4KICAgICAgPC9maWxlPgogICAgPC9sZWFmPgogIDwvY29tcG9uZW50PgogIDxjb21wb25lbnQgbmFtZT0iRmluZE1hbmFnZXIiPgogICAgPEZpbmRVc2FnZXNNYW5hZ2VyPgogICAgICA8c2V0dGluZyBuYW1lPSJPUEVOX05FV19UQUIiIHZhbHVlPSJmYWxzZSIgLz4KICAgIDwvRmluZFVzYWdlc01hbmFnZXI+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJHaXQuU2V0dGluZ3MiPgogICAgPG9wdGlvbiBuYW1lPSJSRUNFTlRfR0lUX1JPT1RfUEFUSCIgdmFsdWU9IiRQUk9KRUNUX0RJUiQiIC8+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJJZGVEb2N1bWVudEhpc3RvcnkiPgogICAgPG9wdGlvbiBuYW1lPSJjaGFuZ2VkRmlsZXMiPgogICAgICA8bGlzdD4KICAgICAgICA8b3B0aW9uIHZhbHVlPSIkUFJPSkVDVF9ESVIkL2xpYi9jbGFzcy5NQ0ZPYmplY3QucGhwIiAvPgogICAgICAgIDxvcHRpb24gdmFsdWU9IiRQUk9KRUNUX0RJUiQvTUNGcmFtZXdvcmsubW9kdWxlLnBocCIgLz4KICAgICAgPC9saXN0PgogICAgPC9vcHRpb24+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJQaHBXb3Jrc3BhY2VQcm9qZWN0Q29uZmlndXJhdGlvbiIgYmFja3dhcmRfY29tcGF0aWJpbGl0eV9wZXJmb3JtZWQ9InRydWUiPgogICAgPGluY2x1ZGVfcGF0aD4KICAgICAgPHBhdGggdmFsdWU9IiRQUk9KRUNUX0RJUiQvLi4vLi4vbGliIiAvPgogICAgPC9pbmNsdWRlX3BhdGg+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0RnJhbWVCb3VuZHMiPgogICAgPG9wdGlvbiBuYW1lPSJ4IiB2YWx1ZT0iODEiIC8+CiAgICA8b3B0aW9uIG5hbWU9InkiIHZhbHVlPSI2MSIgLz4KICAgIDxvcHRpb24gbmFtZT0id2lkdGgiIHZhbHVlPSIxOTIyIiAvPgogICAgPG9wdGlvbiBuYW1lPSJoZWlnaHQiIHZhbHVlPSIxMTE4IiAvPgogIDwvY29tcG9uZW50PgogIDxjb21wb25lbnQgbmFtZT0iUHJvamVjdExldmVsVmNzTWFuYWdlciIgc2V0dGluZ3NFZGl0ZWRNYW51YWxseT0iZmFsc2UiPgogICAgPE9wdGlvbnNTZXR0aW5nIHZhbHVlPSJ0cnVlIiBpZD0iQWRkIiAvPgogICAgPE9wdGlvbnNTZXR0aW5nIHZhbHVlPSJ0cnVlIiBpZD0iUmVtb3ZlIiAvPgogICAgPE9wdGlvbnNTZXR0aW5nIHZhbHVlPSJ0cnVlIiBpZD0iQ2hlY2tvdXQiIC8+CiAgICA8T3B0aW9uc1NldHRpbmcgdmFsdWU9InRydWUiIGlkPSJVcGRhdGUiIC8+CiAgICA8T3B0aW9uc1NldHRpbmcgdmFsdWU9InRydWUiIGlkPSJTdGF0dXMiIC8+CiAgICA8T3B0aW9uc1NldHRpbmcgdmFsdWU9InRydWUiIGlkPSJFZGl0IiAvPgogICAgPENvbmZpcm1hdGlvbnNTZXR0aW5nIHZhbHVlPSIwIiBpZD0iQWRkIiAvPgogICAgPENvbmZpcm1hdGlvbnNTZXR0aW5nIHZhbHVlPSIwIiBpZD0iUmVtb3ZlIiAvPgogIDwvY29tcG9uZW50PgogIDxjb21wb25lbnQgbmFtZT0iUHJvamVjdFJlbG9hZFN0YXRlIj4KICAgIDxvcHRpb24gbmFtZT0iU1RBVEUiIHZhbHVlPSIwIiAvPgogIDwvY29tcG9uZW50PgogIDxjb21wb25lbnQgbmFtZT0iUHJvamVjdFZpZXciPgogICAgPG5hdmlnYXRvciBjdXJyZW50Vmlldz0iUHJvamVjdFBhbmUiIHByb3BvcnRpb25zPSIiIHZlcnNpb249IjEiIHNwbGl0dGVyUHJvcG9ydGlvbj0iMC41Ij4KICAgICAgPGZsYXR0ZW5QYWNrYWdlcyAvPgogICAgICA8c2hvd01lbWJlcnMgLz4KICAgICAgPHNob3dNb2R1bGVzIC8+CiAgICAgIDxzaG93TGlicmFyeUNvbnRlbnRzIC8+CiAgICAgIDxoaWRlRW1wdHlQYWNrYWdlcyAvPgogICAgICA8YWJicmV2aWF0ZVBhY2thZ2VOYW1lcyAvPgogICAgICA8YXV0b3Njcm9sbFRvU291cmNlIC8+CiAgICAgIDxhdXRvc2Nyb2xsRnJvbVNvdXJjZSAvPgogICAgICA8c29ydEJ5VHlwZSAvPgogICAgPC9uYXZpZ2F0b3I+CiAgICA8cGFuZXM+CiAgICAgIDxwYW5lIGlkPSJTY29wZSIgLz4KICAgICAgPHBhbmUgaWQ9IlByb2plY3RQYW5lIj4KICAgICAgICA8c3ViUGFuZT4KICAgICAgICAgIDxQQVRIPgogICAgICAgICAgICA8UEFUSF9FTEVNRU5UPgogICAgICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtSWQiIHZhbHVlPSJNQ0ZyYW1ld29yayIgLz4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbVR5cGUiIHZhbHVlPSJjb20uaW50ZWxsaWouaWRlLnByb2plY3RWaWV3LmltcGwubm9kZXMuUHJvamVjdFZpZXdQcm9qZWN0Tm9kZSIgLz4KICAgICAgICAgICAgPC9QQVRIX0VMRU1FTlQ+CiAgICAgICAgICA8L1BBVEg+CiAgICAgICAgICA8UEFUSD4KICAgICAgICAgICAgPFBBVEhfRUxFTUVOVD4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbUlkIiB2YWx1ZT0iTUNGcmFtZXdvcmsiIC8+CiAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1UeXBlIiB2YWx1ZT0iY29tLmludGVsbGlqLmlkZS5wcm9qZWN0Vmlldy5pbXBsLm5vZGVzLlByb2plY3RWaWV3UHJvamVjdE5vZGUiIC8+CiAgICAgICAgICAgIDwvUEFUSF9FTEVNRU5UPgogICAgICAgICAgICA8UEFUSF9FTEVNRU5UPgogICAgICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtSWQiIHZhbHVlPSJNQ0ZyYW1ld29yayIgLz4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbVR5cGUiIHZhbHVlPSJjb20uaW50ZWxsaWouaWRlLnByb2plY3RWaWV3LmltcGwubm9kZXMuUHNpRGlyZWN0b3J5Tm9kZSIgLz4KICAgICAgICAgICAgPC9QQVRIX0VMRU1FTlQ+CiAgICAgICAgICA8L1BBVEg+CiAgICAgICAgICA8UEFUSD4KICAgICAgICAgICAgPFBBVEhfRUxFTUVOVD4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbUlkIiB2YWx1ZT0iTUNGcmFtZXdvcmsiIC8+CiAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1UeXBlIiB2YWx1ZT0iY29tLmludGVsbGlqLmlkZS5wcm9qZWN0Vmlldy5pbXBsLm5vZGVzLlByb2plY3RWaWV3UHJvamVjdE5vZGUiIC8+CiAgICAgICAgICAgIDwvUEFUSF9FTEVNRU5UPgogICAgICAgICAgICA8UEFUSF9FTEVNRU5UPgogICAgICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtSWQiIHZhbHVlPSJNQ0ZyYW1ld29yayIgLz4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbVR5cGUiIHZhbHVlPSJjb20uaW50ZWxsaWouaWRlLnByb2plY3RWaWV3LmltcGwubm9kZXMuUHNpRGlyZWN0b3J5Tm9kZSIgLz4KICAgICAgICAgICAgPC9QQVRIX0VMRU1FTlQ+CiAgICAgICAgICAgIDxQQVRIX0VMRU1FTlQ+CiAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1JZCIgdmFsdWU9ImxpYiIgLz4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbVR5cGUiIHZhbHVlPSJjb20uaW50ZWxsaWouaWRlLnByb2plY3RWaWV3LmltcGwubm9kZXMuUHNpRGlyZWN0b3J5Tm9kZSIgLz4KICAgICAgICAgICAgPC9QQVRIX0VMRU1FTlQ+CiAgICAgICAgICA8L1BBVEg+CiAgICAgICAgPC9zdWJQYW5lPgogICAgICA8L3BhbmU+CiAgICA8L3BhbmVzPgogIDwvY29tcG9uZW50PgogIDxjb21wb25lbnQgbmFtZT0iUHJvcGVydGllc0NvbXBvbmVudCI+CiAgICA8cHJvcGVydHkgbmFtZT0iV2ViU2VydmVyVG9vbFdpbmRvd0ZhY3RvcnlTdGF0ZSIgdmFsdWU9ImZhbHNlIiAvPgogICAgPHByb3BlcnR5IG5hbWU9Imxhc3Rfb3BlbmVkX2ZpbGVfcGF0aCIgdmFsdWU9IiRQUk9KRUNUX0RJUiQvLi4vLi4vbGliIiAvPgogICAgPHByb3BlcnR5IG5hbWU9IkZ1bGxTY3JlZW4iIHZhbHVlPSJmYWxzZSIgLz4KICA8L2NvbXBvbmVudD4KICA8Y29tcG9uZW50IG5hbWU9IlJlY2VudHNNYW5hZ2VyIj4KICAgIDxrZXkgbmFtZT0iTW92ZUZpbGUuUkVDRU5UX0tFWVMiPgogICAgICA8cmVjZW50IG5hbWU9IiRQUk9KRUNUX0RJUiQvbGliIiAvPgogICAgPC9rZXk+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJSdW5NYW5hZ2VyIj4KICAgIDxsaXN0IHNpemU9IjAiIC8+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJTaGVsdmVDaGFuZ2VzTWFuYWdlciIgc2hvd19yZWN5Y2xlZD0iZmFsc2UiIC8+CiAgPGNvbXBvbmVudCBuYW1lPSJTdm5Db25maWd1cmF0aW9uIiBtYXhBbm5vdGF0ZVJldmlzaW9ucz0iNTAwIiBteVVzZUFjY2VsZXJhdGlvbj0ibm90aGluZyIgbXlBdXRvVXBkYXRlQWZ0ZXJDb21taXQ9ImZhbHNlIiBjbGVhbnVwT25TdGFydFJ1bj0iZmFsc2UiIFNTTF9QUk9UT0NPTFM9InNzbHYzIj4KICAgIDxvcHRpb24gbmFtZT0iVVNFUiIgdmFsdWU9IiIgLz4KICAgIDxvcHRpb24gbmFtZT0iUEFTU1dPUkQiIHZhbHVlPSIiIC8+CiAgICA8b3B0aW9uIG5hbWU9Im15U1NIQ29ubmVjdGlvblRpbWVvdXQiIHZhbHVlPSIzMDAwMCIgLz4KICAgIDxvcHRpb24gbmFtZT0ibXlTU0hSZWFkVGltZW91dCIgdmFsdWU9IjMwMDAwIiAvPgogICAgPG9wdGlvbiBuYW1lPSJMQVNUX01FUkdFRF9SRVZJU0lPTiIgLz4KICAgIDxvcHRpb24gbmFtZT0iTUVSR0VfRFJZX1JVTiIgdmFsdWU9ImZhbHNlIiAvPgogICAgPG9wdGlvbiBuYW1lPSJNRVJHRV9ESUZGX1VTRV9BTkNFU1RSWSIgdmFsdWU9InRydWUiIC8+CiAgICA8b3B0aW9uIG5hbWU9IlVQREFURV9MT0NLX09OX0RFTUFORCIgdmFsdWU9ImZhbHNlIiAvPgogICAgPG9wdGlvbiBuYW1lPSJJR05PUkVfU1BBQ0VTX0lOX01FUkdFIiB2YWx1ZT0iZmFsc2UiIC8+CiAgICA8b3B0aW9uIG5hbWU9IkNIRUNLX05FU1RFRF9GT1JfUVVJQ0tfTUVSR0UiIHZhbHVlPSJmYWxzZSIgLz4KICAgIDxvcHRpb24gbmFtZT0iSUdOT1JFX1NQQUNFU19JTl9BTk5PVEFURSIgdmFsdWU9InRydWUiIC8+CiAgICA8b3B0aW9uIG5hbWU9IlNIT1dfTUVSR0VfU09VUkNFU19JTl9BTk5PVEFURSIgdmFsdWU9InRydWUiIC8+CiAgICA8b3B0aW9uIG5hbWU9IkZPUkNFX1VQREFURSIgdmFsdWU9ImZhbHNlIiAvPgogICAgPG9wdGlvbiBuYW1lPSJJR05PUkVfRVhURVJOQUxTIiB2YWx1ZT0iZmFsc2UiIC8+CiAgICA8bXlJc1VzZURlZmF1bHRQcm94eT5mYWxzZTwvbXlJc1VzZURlZmF1bHRQcm94eT4KICA8L2NvbXBvbmVudD4KICA8Y29tcG9uZW50IG5hbWU9IlRhc2tNYW5hZ2VyIj4KICAgIDx0YXNrIGFjdGl2ZT0idHJ1ZSIgaWQ9IkRlZmF1bHQiIHN1bW1hcnk9IkRlZmF1bHQgdGFzayI+CiAgICAgIDxjaGFuZ2VsaXN0IGlkPSIwY2M2ZTgwZi1hN2E5LTQ2ZDItOWViMS00OGY0OTNiYWM3MjYiIG5hbWU9IkRlZmF1bHQiIGNvbW1lbnQ9IiIgLz4KICAgICAgPGNyZWF0ZWQ+MTM5MTUyODg3NjUwODwvY3JlYXRlZD4KICAgICAgPHVwZGF0ZWQ+MTM5MTUyODg3NjUwODwvdXBkYXRlZD4KICAgIDwvdGFzaz4KICAgIDxzZXJ2ZXJzIC8+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJUb29sV2luZG93TWFuYWdlciI+CiAgICA8ZnJhbWUgeD0iODEiIHk9IjYxIiB3aWR0aD0iMTkyMiIgaGVpZ2h0PSIxMTE4IiBleHRlbmRlZC1zdGF0ZT0iMCIgLz4KICAgIDxlZGl0b3IgYWN0aXZlPSJ0cnVlIiAvPgogICAgPGxheW91dD4KICAgICAgPHdpbmRvd19pbmZvIGlkPSJDaGFuZ2VzIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9ImJvdHRvbSIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMzMiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjAiIHNpZGVfdG9vbD0iZmFsc2UiIGNvbnRlbnRfdWk9InRhYnMiIC8+CiAgICAgIDx3aW5kb3dfaW5mbyBpZD0iVGVybWluYWwiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0iYm90dG9tIiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4zMyIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMCIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0idGFicyIgLz4KICAgICAgPHdpbmRvd19pbmZvIGlkPSJUT0RPIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9ImJvdHRvbSIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMzMiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjAiIHNpZGVfdG9vbD0iZmFsc2UiIGNvbnRlbnRfdWk9InRhYnMiIC8+CiAgICAgIDx3aW5kb3dfaW5mbyBpZD0iRGF0YWJhc2UiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0icmlnaHQiIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjMzIiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSIwIiBzaWRlX3Rvb2w9ImZhbHNlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgogICAgICA8d2luZG93X2luZm8gaWQ9IlN0cnVjdHVyZSIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJsZWZ0IiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4zMyIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMCIgc2lkZV90b29sPSJ0cnVlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgogICAgICA8d2luZG93X2luZm8gaWQ9IlByb2plY3QiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0ibGVmdCIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9InRydWUiIHdlaWdodD0iMC4zMjk4NjQ3IiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSIwIiBzaWRlX3Rvb2w9ImZhbHNlIiBjb250ZW50X3VpPSJjb21ibyIgLz4KICAgICAgPHdpbmRvd19pbmZvIGlkPSJEZWJ1ZyIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJib3R0b20iIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjMzIiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSIwIiBzaWRlX3Rvb2w9ImZhbHNlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgogICAgICA8d2luZG93X2luZm8gaWQ9IkZhdm9yaXRlcyIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJsZWZ0IiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4zMyIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMCIgc2lkZV90b29sPSJ0cnVlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgogICAgICA8d2luZG93X2luZm8gaWQ9IkV2ZW50IExvZyIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJib3R0b20iIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjMzIiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSIwIiBzaWRlX3Rvb2w9InRydWUiIGNvbnRlbnRfdWk9InRhYnMiIC8+CiAgICAgIDx3aW5kb3dfaW5mbyBpZD0iUnVuIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9ImJvdHRvbSIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMzMiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjAiIHNpZGVfdG9vbD0iZmFsc2UiIGNvbnRlbnRfdWk9InRhYnMiIC8+CiAgICAgIDx3aW5kb3dfaW5mbyBpZD0iVmVyc2lvbiBDb250cm9sIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9ImJvdHRvbSIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMzMiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjAiIHNpZGVfdG9vbD0iZmFsc2UiIGNvbnRlbnRfdWk9InRhYnMiIC8+CiAgICA8L2xheW91dD4KICA8L2NvbXBvbmVudD4KICA8Y29tcG9uZW50IG5hbWU9IlZjcy5Mb2cuVWlQcm9wZXJ0aWVzIj4KICAgIDxvcHRpb24gbmFtZT0iUkVDRU5UTFlfRklMVEVSRURfVVNFUl9HUk9VUFMiPgogICAgICA8Y29sbGVjdGlvbiAvPgogICAgPC9vcHRpb24+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJWY3NDb250ZW50QW5ub3RhdGlvblNldHRpbmdzIj4KICAgIDxvcHRpb24gbmFtZT0ibXlMaW1pdCIgdmFsdWU9IjI2Nzg0MDAwMDAiIC8+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJWY3NNYW5hZ2VyQ29uZmlndXJhdGlvbiI+CiAgICA8b3B0aW9uIG5hbWU9Im15VG9kb1BhbmVsU2V0dGluZ3MiPgogICAgICA8VG9kb1BhbmVsU2V0dGluZ3MgLz4KICAgIDwvb3B0aW9uPgogIDwvY29tcG9uZW50PgogIDxjb21wb25lbnQgbmFtZT0iWERlYnVnZ2VyTWFuYWdlciI+CiAgICA8YnJlYWtwb2ludC1tYW5hZ2VyIC8+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJlZGl0b3JIaXN0b3J5TWFuYWdlciI+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvTUNGcmFtZXdvcmsubW9kdWxlLnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iMTYiIGNvbHVtbj0iMjEiIHNlbGVjdGlvbi1zdGFydD0iMjkxIiBzZWxlY3Rpb24tZW5kPSIyOTEiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjAiIHZlcnRpY2FsLW9mZnNldD0iMTgwIiBtYXgtdmVydGljYWwtb2Zmc2V0PSI0NTAiPgogICAgICAgICAgPGZvbGRpbmcgLz4KICAgICAgICA8L3N0YXRlPgogICAgICA8L3Byb3ZpZGVyPgogICAgPC9lbnRyeT4KICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9saWIvY2xhc3MuTUNGT2JqZWN0LnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iMjcwIiBjb2x1bW49IjE4IiBzZWxlY3Rpb24tc3RhcnQ9IjY0MjMiIHNlbGVjdGlvbi1lbmQ9IjY0MjMiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjAiIHZlcnRpY2FsLW9mZnNldD0iMzcxOCIgbWF4LXZlcnRpY2FsLW9mZnNldD0iNTI4MCI+CiAgICAgICAgICA8Zm9sZGluZyAvPgogICAgICAgIDwvc3RhdGU+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL2xpYi9jbGFzcy5NQ0ZDcml0ZXJpYS5waHAiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjAiIGNvbHVtbj0iMCIgc2VsZWN0aW9uLXN0YXJ0PSIwIiBzZWxlY3Rpb24tZW5kPSIwIiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4wIiB2ZXJ0aWNhbC1vZmZzZXQ9IjIzMyIgbWF4LXZlcnRpY2FsLW9mZnNldD0iNTY3MCI+CiAgICAgICAgICA8Zm9sZGluZyAvPgogICAgICAgIDwvc3RhdGU+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL01DRnJhbWV3b3JrLm1vZHVsZS5waHAiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjI3IiBjb2x1bW49IjUiIHNlbGVjdGlvbi1zdGFydD0iNDc4IiBzZWxlY3Rpb24tZW5kPSI0NzgiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjAiIHZlcnRpY2FsLW9mZnNldD0iNDA1IiBtYXgtdmVydGljYWwtb2Zmc2V0PSI1MTAiPgogICAgICAgICAgPGZvbGRpbmcgLz4KICAgICAgICA8L3N0YXRlPgogICAgICA8L3Byb3ZpZGVyPgogICAgPC9lbnRyeT4KICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9saWIvY2xhc3MuTUNGT2JqZWN0LnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iMjcwIiBjb2x1bW49IjE4IiBzZWxlY3Rpb24tc3RhcnQ9IjY0MjMiIHNlbGVjdGlvbi1lbmQ9IjY0MjMiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjAiIHZlcnRpY2FsLW9mZnNldD0iMzcxOCIgbWF4LXZlcnRpY2FsLW9mZnNldD0iNTI4MCI+CiAgICAgICAgICA8Zm9sZGluZyAvPgogICAgICAgIDwvc3RhdGU+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL2xpYi9jbGFzcy5NQ0ZDcml0ZXJpYS5waHAiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjAiIGNvbHVtbj0iMCIgc2VsZWN0aW9uLXN0YXJ0PSIwIiBzZWxlY3Rpb24tZW5kPSIwIiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4wIiB2ZXJ0aWNhbC1vZmZzZXQ9IjIzMyIgbWF4LXZlcnRpY2FsLW9mZnNldD0iNTY3MCI+CiAgICAgICAgICA8Zm9sZGluZyAvPgogICAgICAgIDwvc3RhdGU+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL2xpYi9jbGFzcy5NQ0ZDcml0ZXJpYS5waHAiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjAiIGNvbHVtbj0iMCIgc2VsZWN0aW9uLXN0YXJ0PSIwIiBzZWxlY3Rpb24tZW5kPSIwIiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4wIiB2ZXJ0aWNhbC1vZmZzZXQ9IjIzMyIgbWF4LXZlcnRpY2FsLW9mZnNldD0iNTY3MCI+CiAgICAgICAgICA8Zm9sZGluZyAvPgogICAgICAgIDwvc3RhdGU+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL2xpYi9jbGFzcy5NQ0ZPYmplY3QucGhwIj4KICAgICAgPHByb3ZpZGVyIHNlbGVjdGVkPSJ0cnVlIiBlZGl0b3ItdHlwZS1pZD0idGV4dC1lZGl0b3IiPgogICAgICAgIDxzdGF0ZSBsaW5lPSIyNzAiIGNvbHVtbj0iMTgiIHNlbGVjdGlvbi1zdGFydD0iNjQyMyIgc2VsZWN0aW9uLWVuZD0iNjQyMyIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMCIgdmVydGljYWwtb2Zmc2V0PSIzNzE4IiBtYXgtdmVydGljYWwtb2Zmc2V0PSI1MjgwIj4KICAgICAgICAgIDxmb2xkaW5nIC8+CiAgICAgICAgPC9zdGF0ZT4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvTUNGcmFtZXdvcmsubW9kdWxlLnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iMTMiIGNvbHVtbj0iMCIgc2VsZWN0aW9uLXN0YXJ0PSIyMzAiIHNlbGVjdGlvbi1lbmQ9IjIzMCIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMTM1NDA2MjMiIHZlcnRpY2FsLW9mZnNldD0iMCIgbWF4LXZlcnRpY2FsLW9mZnNldD0iOTk3Ij4KICAgICAgICAgIDxmb2xkaW5nIC8+CiAgICAgICAgPC9zdGF0ZT4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgPC9jb21wb25lbnQ+CjwvcHJvamVjdD4KCg==]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.MCFCriteria.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIE1DRkNyaXRlcmlhIHsKCgl2YXIgJG9yZGVyX2J5ID0gYXJyYXkoKTsKCXZhciAkY29uZGl0aW9ucyA9IGFycmF5KCk7Cgl2YXIgJGNvbmRpdGlvbnNfb3IgPSBhcnJheSgpOwoJdmFyICRmaWx0ZXJzID0gYXJyYXkoKTsKCXZhciAkZ3JvdXBfYnkgPSBhcnJheSgpOwoJdmFyICRzZWxlY3RlZF9jb2x1bW5zID0gYXJyYXkoKTsKCQoJdmFyICRsaW1pdDsKCXZhciAkb2Zmc2V0OwoJCgl2YXIgJHZhbHVlcyA9IGFycmF5KCk7CgkKCS8vIENPTlNUCgkKICAvKiogQ29tcGFyaXNvbiB0eXBlLiAqLwogIGNvbnN0IEVRVUFMID0gIj0iOwogIGNvbnN0IE5PVF9FUVVBTCA9ICI8PiI7CiAgY29uc3QgQUxUX05PVF9FUVVBTCA9ICIhPSI7CiAgY29uc3QgR1JFQVRFUl9USEFOID0gIj4iOwogIGNvbnN0IExFU1NfVEhBTiA9ICI8IjsKICBjb25zdCBHUkVBVEVSX0VRVUFMID0gIj49IjsKICBjb25zdCBMRVNTX0VRVUFMID0gIjw9IjsKICBjb25zdCBMSUtFID0gIiBMSUtFICI7CiAgY29uc3QgTVVMVElMSUtFID0gIiBNVUxUSUxJS0UgIjsKICBjb25zdCBNVUxUSU5PVExJS0UgPSAiIE1VTFRJTk9UTElLRSAiOwogIGNvbnN0IE5PVF9MSUtFID0gIiBOT1QgTElLRSAiOwogIGNvbnN0IFVQQ09NSU5HID0gIiBVUENPTUlORyAiOwogIGNvbnN0IERBVEVfVVBDT01JTkcgPSAiIERBVEVfVVBDT01JTkcgIjsKICBjb25zdCBQQVNUID0gIiBQQVNUICI7CiAgY29uc3QgUEFTVF9PUl9OT1cgPSAiIFBBU1RfT1JfTk9XICI7CiAgY29uc3QgREFURV9QQVNUX09SX05PVyA9ICIgREFURV9QQVNUX09SX05PVyAiOwoKICAvKiogUG9zdGdyZVNRTCBjb21wYXJpc29uIHR5cGUgKi8KICBjb25zdCBJTElLRSA9ICIgSUxJS0UgIjsKCiAgLyoqIFBvc3RncmVTUUwgY29tcGFyaXNvbiB0eXBlICovCiAgY29uc3QgTk9UX0lMSUtFID0gIiBOT1QgSUxJS0UgIjsKCiAgLyoqIENvbXBhcmlzb24gdHlwZS4gKi8KICBjb25zdCBDVVNUT00gPSAiQ1VTVE9NIjsKCiAgLyoqIENvbXBhcmlzb24gdHlwZS4gKi8KICBjb25zdCBESVNUSU5DVCA9ICJESVNUSU5DVCAiOwoKICAvKiogQ29tcGFyaXNvbiB0eXBlLiAqLwogIGNvbnN0IElOID0gIiBJTiAiOwoKICAvKiogQ29tcGFyaXNvbiB0eXBlLiAqLwogIGNvbnN0IE5PVF9JTiA9ICIgTk9UIElOICI7CgogIC8qKiBDb21wYXJpc29uIHR5cGUuICovCiAgY29uc3QgQUxMID0gIkFMTCAiOwoKICAvKiogQ29tcGFyaXNvbiB0eXBlLiAqLwogIGNvbnN0IEpPSU4gPSAiSk9JTiI7CgogIC8qKiBCaW5hcnkgbWF0aCBvcGVyYXRvcjogQU5EICovCiAgY29uc3QgQklOQVJZX0FORCA9ICImIjsKCiAgLyoqIEJpbmFyeSBtYXRoIG9wZXJhdG9yOiBPUiAqLwogIGNvbnN0IEJJTkFSWV9PUiA9ICJ8IjsKCiAgLyoqICJPcmRlciBieSIgcXVhbGlmaWVyIC0gYXNjZW5kaW5nICovCiAgY29uc3QgQVNDID0gIkFTQyI7CgogIC8qKiAiT3JkZXIgYnkiIHF1YWxpZmllciAtIGRlc2NlbmRpbmcgKi8KICBjb25zdCBERVNDID0gIkRFU0MiOwoKICAvKiogIklTIE5VTEwiIG51bGwgY29tcGFyaXNvbiAqLwogIGNvbnN0IElTTlVMTCA9ICIgSVMgTlVMTCAiOwoKICAvKiogIklTIE5PVCBOVUxMIiBudWxsIGNvbXBhcmlzb24gKi8KICBjb25zdCBJU05PVE5VTEwgPSAiIElTIE5PVCBOVUxMICI7CgogIGNvbnN0IElTTk9URU1QVFkgPSAnIElTIE5PVCBFTVBUWSAnOwogIGNvbnN0IElTRU1QVFkgPSAnIElTIEVNUFRZICc7CgogIC8qKiAiQ1VSUkVOVF9EQVRFIiBBTlNJIFNRTCBmdW5jdGlvbiAqLwogIGNvbnN0IENVUlJFTlRfREFURSA9ICJDVVJSRU5UX0RBVEUiOwoKICAvKiogIkNVUlJFTlRfVElNRSIgQU5TSSBTUUwgZnVuY3Rpb24gKi8KICBjb25zdCBDVVJSRU5UX1RJTUUgPSAiQ1VSUkVOVF9USU1FIjsKCiAgLyoqICJDVVJSRU5UX1RJTUVTVEFNUCIgQU5TSSBTUUwgZnVuY3Rpb24gKi8KICBjb25zdCBDVVJSRU5UX1RJTUVTVEFNUCA9ICJDVVJSRU5UX1RJTUVTVEFNUCI7CgogIC8qKiAiTEVGVCBKT0lOIiBTUUwgc3RhdGVtZW50ICovCiAgY29uc3QgTEVGVF9KT0lOID0gIkxFRlQgSk9JTiI7CgogIC8qKiAiUklHSFQgSk9JTiIgU1FMIHN0YXRlbWVudCAqLwogIGNvbnN0IFJJR0hUX0pPSU4gPSAiUklHSFQgSk9JTiI7CgogIC8qKiAiSU5ORVIgSk9JTiIgU1FMIHN0YXRlbWVudCAqLwogIGNvbnN0IElOTkVSX0pPSU4gPSAiSU5ORVIgSk9JTiI7CgoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKCXsKCSAgcmV0dXJuICR0aGlzOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBhZGRBc2NlbmRpbmdPcmRlckJ5Q29sdW1uKCRjb2x1bW4pCgl7CgkJJHRoaXMtPm9yZGVyX2J5W10gPSBhcnJheSAoJ2NvbHVtbicgPT4gJGNvbHVtbiwgJ29yZGVyJyA9PiBzZWxmOjpBU0MpOwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gYWRkRGVzY2VuZGluZ09yZGVyQnlDb2x1bW4oJGNvbHVtbikKCXsKCQkkdGhpcy0+b3JkZXJfYnlbXSA9IGFycmF5ICgnY29sdW1uJyA9PiAkY29sdW1uLCAnb3JkZXInID0+IHNlbGY6OkRFU0MpOwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gYWRkU2VsZWN0Q29sdW1uKCRjb2x1bW5fbmFtZSkKCXsKCQkkdGhpcy0+c2VsZWN0ZWRfY29sdW1uc1tdID0gJGNvbHVtbl9uYW1lOwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gYWRkR3JvdXBCeUNvbHVtbigkY29sdW1uX25hbWUpCgl7CgkJJHRoaXMtPmdyb3VwX2J5W10gPSAkY29sdW1uX25hbWU7Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBhZGQoJGNvbHVtbiwgJHZhbHVlLCAkY29uZGl0aW9uID0gc2VsZjo6RVFVQUwsICRleHRyYV9xdWVyeSA9ICcnKQoJewoJCWlmICgkY29uZGl0aW9uID09IHNlbGY6OklOKSB7CgkJCWlmIChlbXB0eSgkdmFsdWUpKSB7CgkJCQkkY29sdW1uID0gMTsKCQkJCSR2YWx1ZSA9IC0xOwoJCQkJJGNvbmRpdGlvbiA9IHNlbGY6OkVRVUFMOwoJCQl9CgkJfQoJCSR0aGlzLT5jb25kaXRpb25zW10gPSBhcnJheSAoJ2NvbHVtbicgPT4gJGNvbHVtbiwgJ3ZhbHVlJyA9PiAkdmFsdWUsICdjb25kaXRpb24nID0+ICRjb25kaXRpb24sICdleHRyYV9xdWVyeScgPT4gJGV4dHJhX3F1ZXJ5KTsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIGFkZE9yKCRjb2x1bW4sICR2YWx1ZSwgJGNvbmRpdGlvbiA9IHNlbGY6OkVRVUFMLCAkZXh0cmFfcXVlcnkgPSAnJykKCXsKCSAgaWYgKCRjb25kaXRpb24gPT0gc2VsZjo6SU4pIHsKCQkJaWYgKGVtcHR5KCR2YWx1ZSkpIHsKCQkJCSRjb2x1bW4gPSAxOwoJCQkJJHZhbHVlID0gLTE7CgkJCQkkY29uZGl0aW9uID0gc2VsZjo6RVFVQUw7CgkJCX0KCQl9CgkJJHRoaXMtPmNvbmRpdGlvbnNfb3JbXSA9IGFycmF5ICgnY29sdW1uJyA9PiAkY29sdW1uLCAndmFsdWUnID0+ICR2YWx1ZSwgJ2NvbmRpdGlvbicgPT4gJGNvbmRpdGlvbiwgJ2V4dHJhX3F1ZXJ5JyA9PiAkZXh0cmFfcXVlcnkpOwoJfQoJCgkKCXB1YmxpYyBmdW5jdGlvbiBzZXRMaW1pdCgkbGltaXQpCgl7CgkJJHRoaXMtPmxpbWl0ID0gJGxpbWl0OwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gc2V0T2Zmc2V0KCRvZmZzZXQpIHsKCQkkdGhpcy0+b2Zmc2V0ID0gJG9mZnNldDsKCX0KCQoJLy8gUkVRVUVTVCBCVUlMRElORwogIAogIHB1YmxpYyBmdW5jdGlvbiBidWlsZENvbmRpdGlvbigkY29uZGl0aW9uKQogIHsKICAgIHN3aXRjaCAoJGNvbmRpdGlvblsnY29uZGl0aW9uJ10pIHsKICAgICAgY2FzZSAnIElOICc6CiAgICAgICAgJGRiID0gY21zX3V0aWxzOjpnZXRfZGIoKTsKICAgICAgICBmb3JlYWNoICgkY29uZGl0aW9uWyd2YWx1ZSddIGFzICYkdmFsdWUpIHsKICAgICAgICAgIC8vICR2YWx1ZSA9ICInIiAuIG15c3FsaV9yZWFsX2VzY2FwZV9zdHJpbmcoJHZhbHVlKSAuICInIjsKICAgICAgICAgICR2YWx1ZSA9ICRkYi0+cXN0cigkdmFsdWUpOwogICAgICAgIH0KICAgICAgICB1bnNldCgkdmFsdWUpOwogICAgICAgICRxdWVyeSA9ICRjb25kaXRpb25bJ2NvbHVtbiddIC4gJyBJTiAoJyAuIGltcGxvZGUoJywnLCAkY29uZGl0aW9uWyd2YWx1ZSddKSAuICcpJzsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAnIE1VTFRJTElLRSAnOgogICAgICAgICR2YWx1ZXMgPSBleHBsb2RlKCcsJywkY29uZGl0aW9uWyd2YWx1ZSddKTsKICAgICAgICAkcXVlcmllcyA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCgkdmFsdWVzIGFzICR2YWx1ZSkKICAgICAgICB7CiAgICAgICAgICAkcXVlcmllc1tdID0gJHRoaXMtPmJ1aWxkTXVsdGlMaWtlKCRjb25kaXRpb25bJ2NvbHVtbiddLCAkdmFsdWUpOwogICAgICAgIH0gICAgICAgIAogICAgICAgICRxdWVyeSA9ICcoJyAuIGltcGxvZGUoJyBPUiAnLCAkcXVlcmllcykgLiAnKSc7CgogICAgICAgIGJyZWFrOwogICAgICBjYXNlICcgTVVMVElOT1RMSUtFICc6CiAgICAgICAgJHZhbHVlcyA9IGV4cGxvZGUoJywnLCRjb25kaXRpb25bJ3ZhbHVlJ10pOwogICAgICAgICRxdWVyaWVzID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoKCR2YWx1ZXMgYXMgJHZhbHVlKQogICAgICAgIHsKICAgICAgICAgICRxdWVyaWVzW10gPSAkdGhpcy0+YnVpbGRNdWx0aUxpa2UoJGNvbmRpdGlvblsnY29sdW1uJ10sICR2YWx1ZSwgJyBBTkQgJywgJ05PVCcpOwogICAgICAgIH0gICAgICAgIAogICAgICAgICRxdWVyeSA9ICcoJyAuIGltcGxvZGUoJyBBTkQgJywgJHF1ZXJpZXMpIC4gJyknOwoKICAgICAgICBicmVhazsKICAgICAgY2FzZSAnIElTIEVNUFRZICc6CiAgICAgICAgJHF1ZXJ5ID0gICcoJyAuICRjb25kaXRpb25bJ2NvbHVtbiddIC4gJyBJUyBOVUxMIE9SICcgLiAkY29uZGl0aW9uWydjb2x1bW4nXSAuICcgPSA/ICknOwogICAgICAgICR0aGlzLT52YWx1ZXNbXSA9ICcnOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlICcgSVMgTk9UIEVNUFRZICc6CiAgICAgICAgJHF1ZXJ5ID0gICcoJyAuICRjb25kaXRpb25bJ2NvbHVtbiddIC4gJyBJUyBOT1QgTlVMTCBBTkQgJyAuICRjb25kaXRpb25bJ2NvbHVtbiddIC4gJyAhPSA/ICknIDsKICAgICAgICAkdGhpcy0+dmFsdWVzW10gPSAnJzsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAnIElTIE5VTEwgJzoKICAgICAgY2FzZSAnIElTIE5PVCBOVUxMICc6CiAgICAgICAgJHF1ZXJ5ID0gJGNvbmRpdGlvblsnY29sdW1uJ10gLiAkY29uZGl0aW9uWydjb25kaXRpb24nXTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAnIFVQQ09NSU5HICc6CiAgICAgICAgJHF1ZXJ5ID0gJGNvbmRpdGlvblsnY29sdW1uJ10gLiAnID49IE5PVygpJzsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAnIERBVEVfVVBDT01JTkcgJzoKICAgICAgICAkcXVlcnkgPSAkY29uZGl0aW9uWydjb2x1bW4nXSAuICcgPj0gREFURShOT1coKSknOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlICcgUEFTVCAnOgogICAgICAgICRxdWVyeSA9ICRjb25kaXRpb25bJ2NvbHVtbiddIC4gJyA8IE5PVygpJzsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAnIFBBU1RfT1JfTk9XICc6CiAgICAgICAgJHF1ZXJ5ID0gJGNvbmRpdGlvblsnY29sdW1uJ10gLiAnIDw9IE5PVygpJzsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAnIERBVEVfUEFTVF9PUl9OT1cgJzoKICAgICAgICAkcXVlcnkgPSAkY29uZGl0aW9uWydjb2x1bW4nXSAuICcgPD0gREFURShOT1coKSknOwogICAgICAgIGJyZWFrOwogICAgICBkZWZhdWx0OgogICAgICAgICRxdWVyeSA9ICRjb25kaXRpb25bJ2NvbHVtbiddIC4gJyAnIC4gJGNvbmRpdGlvblsnY29uZGl0aW9uJ10gLiAnID8nOwogICAgICAgICR0aGlzLT52YWx1ZXNbXSA9ICRjb25kaXRpb25bJ3ZhbHVlJ107CiAgICAgICAgYnJlYWs7CiAgICB9CgogICAgaWYoaXNzZXQoJGNvbmRpdGlvblsnZXh0cmFfcXVlcnknXSkpCiAgICB7CiAgICAgICRxdWVyeSA9ICcoJyAuICRxdWVyeSAuICcgJyAuICRjb25kaXRpb25bJ2V4dHJhX3F1ZXJ5J10gLiAnKSc7CiAgICB9CgogICAgcmV0dXJuICRxdWVyeTsKICB9CgogIHB1YmxpYyBmdW5jdGlvbiBidWlsZE11bHRpTGlrZSgkY29sdW1uLCAkdmFsdWUsICRhbmRvciA9ICcgT1IgJywgJG5vdCA9ICcnKQogIHsKICAgICRjb25kaXRpb25zID0gYXJyYXkoKTsKICAgICRjb25kaXRpb25zW10gPSAkY29sdW1uIC4gJyAnIC4gJG5vdCAuICcgTElLRSA/JzsKICAgICR0aGlzLT52YWx1ZXNbXSA9ICR2YWx1ZTsKICAgICRjb25kaXRpb25zW10gPSAkY29sdW1uIC4gJyAnIC4gJG5vdCAuICcgTElLRSA/JzsKICAgICR0aGlzLT52YWx1ZXNbXSA9ICR2YWx1ZSAuICd8fHwlJzsKICAgICRjb25kaXRpb25zW10gPSAkY29sdW1uIC4gJyAnIC4gJG5vdCAuICcgTElLRSA/JzsKICAgICR0aGlzLT52YWx1ZXNbXSA9ICclfHx8JyAuICR2YWx1ZTsKICAgICRjb25kaXRpb25zW10gPSAkY29sdW1uIC4gJyAnIC4gJG5vdCAuICcgTElLRSA/JzsKICAgICR0aGlzLT52YWx1ZXNbXSA9ICclfHx8JyAuICR2YWx1ZSAuICd8fHwlJzsKCiAgICByZXR1cm4gJygnLiBpbXBsb2RlKCRhbmRvciwgJGNvbmRpdGlvbnMpIC4gJyknOwogICAgCiAgICAvLyAkcXVlcnkgPSAnICgnOwogICAgLy8gJHF1ZXJ5IC49ICRjb2x1bW4gLiAoJG5vdCk/JyBOT1QgTElLRSA/JzonIExJS0UgPyc7CiAgICAvLyAkdGhpcy0+dmFsdWVzW10gPSAkdmFsdWU7CiAgICAvLyAkcXVlcnkgLj0gKCRub3QpPycgQU5EICc6JyBPUiAnOwogICAgLy8gJHF1ZXJ5IC49ICRjb2x1bW4gLiAoJG5vdCk/JyBOT1QgTElLRSA/JzonIExJS0UgPyc7CiAgICAvLyAkdGhpcy0+dmFsdWVzW10gPSAkdmFsdWUgLiAnfHx8JSc7CiAgICAvLyAkcXVlcnkgLj0gKCRub3QpPycgQU5EICc6JyBPUiAnOwogICAgLy8gJHF1ZXJ5IC49ICRjb2x1bW4gLiAoJG5vdCk/JyBOT1QgTElLRSA/JzonIExJS0UgPyc7CiAgICAvLyAkdGhpcy0+dmFsdWVzW10gPSAnJXx8fCcgLiAkdmFsdWU7CiAgICAvLyAkcXVlcnkgLj0gKCRub3QpPycgQU5EICc6JyBPUiAnOwogICAgLy8gJHF1ZXJ5IC49ICRjb2x1bW4gLiAoJG5vdCk/JyBOT1QgTElLRSA/JzonIExJS0UgPyc7CiAgICAvLyAkdGhpcy0+dmFsdWVzW10gPSAnJXx8fCcgLiAkdmFsdWUgLiAnfHx8JSc7CiAgICAvLyAkcXVlcnkgLj0gJykgJzsKICAgIC8vIAogICAgLy8gcmV0dXJuICRxdWVyeTsKICB9CgogIHB1YmxpYyAgZnVuY3Rpb24gYnVpbGRDb25kaXRpb25zKCR0YWJsZV9uYW1lID0gbnVsbCkKICB7CiAgICAvKiBGSVhNRTogUHJvY2VlZCB3aXRoIGFsbCB0aGUgcG9zc2libGUgY29uZGl0aW9ucyAqLwoKICAgICRxdWVyeSA9IG51bGw7CiAgICAvLyBXSEVSRQoKICAgIGlmIChjb3VudCgkdGhpcy0+Y29uZGl0aW9ucykgPiAwKQogICAgewogICAgICAkcXVlcnkgLj0gJyBXSEVSRSAnOwogICAgICAKICAgICAgJGNvbmRpdGlvbnMgPSBhcnJheSgpOwoKICAgICAgZm9yZWFjaCAoJHRoaXMtPmNvbmRpdGlvbnMgYXMgJGNvbmRpdGlvbikKICAgICAgewogICAgICAgICRjb25kaXRpb25zW10gPSAkdGhpcy0+YnVpbGRDb25kaXRpb24oJGNvbmRpdGlvbik7CiAgICAgIH0KICAgICAgCiAgICAgICRxdWVyeSAuPSBpbXBsb2RlKCcgQU5EICcsICRjb25kaXRpb25zKTsKICAgIH0KICAgIAogICAgLy8gT1IgQ09ORElUSU9OUwogICAgaWYgKGNvdW50KCR0aGlzLT5jb25kaXRpb25zX29yKSA+IDApCiAgICB7CiAgICAgIGlmIChjb3VudCgkdGhpcy0+Y29uZGl0aW9ucykgPiAwKQogICAgICB7CiAgICAgICAgJHF1ZXJ5IC49ICcgQU5EICc7CiAgICAgIH0KICAgICAgZWxzZQogICAgICB7CiAgICAgICAgJHF1ZXJ5IC49ICcgV0hFUkUgJzsKICAgICAgfSAKICAgICAgICAkY29uZGl0aW9uc19vciA9IGFycmF5KCk7CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5jb25kaXRpb25zX29yIGFzICRjb25kaXRpb24pCiAgICAgICAgewogICAgICAgICAgJGNvbmRpdGlvbnNfb3JbXSA9ICR0aGlzLT5idWlsZENvbmRpdGlvbigkY29uZGl0aW9uKTsKICAgICAgICB9CgogICAgICAgICRxdWVyeSAuPSAnKCcgLiBpbXBsb2RlKCcgT1IgJywgJGNvbmRpdGlvbnNfb3IpIC4gJyknOwogICAgfQogICAgCiAgICAKICAgIC8vIEdST1VQIEJZCgogICAgaWYoY291bnQoJHRoaXMtPmdyb3VwX2J5KSA+IDApCiAgICB7CiAgICAgICRxdWVyeSAuPSAnIEdST1VQIEJZICcgLiBpbXBsb2RlICgnLCAnLCAkdGhpcy0+Z3JvdXBfYnkpOwogICAgfQogICAgCiAgICAvLyBPUkRFUiBCWQogICAgCiAgICBpZiAoY291bnQoJHRoaXMtPm9yZGVyX2J5KSA+IDApCiAgICB7CiAgICAgICRxdWVyeSAuPSAnIE9SREVSIEJZICc7CiAgICAgIAogICAgICAkb3JkZXJzID0gYXJyYXkoKTsKICAgICAgCiAgICAgIGZvcmVhY2ggKCR0aGlzLT5vcmRlcl9ieSBhcyAkb3JkZXJfYnkpCiAgICAgIHsKICAgICAgICAkb3JkZXJzW10gPSAkb3JkZXJfYnlbJ2NvbHVtbiddIC4gJyAnIC4gJG9yZGVyX2J5WydvcmRlciddOwogICAgICB9CiAgICAgIAogICAgICAkcXVlcnkgLj0gaW1wbG9kZSgnICwnLCAkb3JkZXJzKTsKICAgIH0KCgogICAgJG9mZnNldCA9ICR0aGlzLT5vZmZzZXQgPyAkdGhpcy0+b2Zmc2V0IDogMDsKICAgICRsaW1pdCA9ICR0aGlzLT5saW1pdCA/ICR0aGlzLT5saW1pdCA6IFBIUF9JTlRfTUFYOwogICAgJHF1ZXJ5IC49ICcgTElNSVQgJyAuJG9mZnNldC4nLCcuJGxpbWl0OwogICAgcmV0dXJuICRxdWVyeTsKICB9CgoJcHVibGljIGZ1bmN0aW9uIGJ1aWxkUXVlcnkoJHRhYmxlX25hbWUsICRjb2x1bW5fd2l0aF9kYiA9IGZhbHNlKQoJewoJCSRxdWVyeSA9ICdTRUxFQ1QgJzsKCQkKCQlpZiAoY291bnQoJHRoaXMtPnNlbGVjdGVkX2NvbHVtbnMpID4gMCkKCQl7CgkJCWZvcmVhY2ggKCR0aGlzLT5zZWxlY3RlZF9jb2x1bW5zIGFzICRjb2x1bW4pIAoJCQl7CgkJCQkkcXVlcnkgLj0gJGNvbHVtbiAuICcgJzsKCQkJfQoJCX0KCQllbHNlIAoJCXsKCQkgIGlmKCRjb2x1bW5fd2l0aF9kYikKCQkgIHsKCQkgICAkcXVlcnkgLj0gJyAnIC4gJHRhYmxlX25hbWUgLiAnLiogJzsgCgkJICB9CgkJICBlbHNlCgkJICB7CQkgICAKICAJCQkkcXVlcnkgLj0gJyAqICc7IAoJCSAgfQoJCX0KCQkKCQkkcXVlcnkgLj0gJ0ZST00gJyAuICR0YWJsZV9uYW1lOwoJCQkJCgkJJHF1ZXJ5IC49ICR0aGlzLT5idWlsZENvbmRpdGlvbnMoJHRhYmxlX25hbWUpOwoJCXJldHVybiAkcXVlcnk7CQkKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0VmFsdWVzKCkgewoJCXJldHVybiAkdGhpcy0+dmFsdWVzOwoJfQoKfQoKPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/class.MCFObject.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmFic3RyYWN0IGNsYXNzIE1DRk9iamVjdAp7CgogICAgLyoqCiAgICAgKiBAdmFyCiAgICAgKi8KICAgIHByb3RlY3RlZCAkaWQ7CiAgICAvKioKICAgICAqIEB2YXIKICAgICAqLwogICAgcHJvdGVjdGVkICRjcmVhdGVkX2F0OwogICAgLyoqCiAgICAgKiBAdmFyCiAgICAgKi8KICAgIHByb3RlY3RlZCAkY3JlYXRlZF9ieTsKICAgIC8qKgogICAgICogQHZhcgogICAgICovCiAgICBwcm90ZWN0ZWQgJHVwZGF0ZWRfYXQ7CiAgICAvKioKICAgICAqIEB2YXIKICAgICAqLwogICAgcHJvdGVjdGVkICR1cGRhdGVkX2J5OwoKICAgIC8qKgogICAgICogRGF0YWJhc2UgZmllbGRzIG1hcHBpbmcKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIHN0YXRpYyAkdGFibGVfZmllbGRzID0gYXJyYXkoCiAgICAgICAgJ2lkJyA9PiAnSSBLRVkgQVVUTycsCiAgICAgICAgJ2NyZWF0ZWRfYXQnID0+ICdEVCcsCiAgICAgICAgJ2NyZWF0ZWRfYnknID0+ICdJJywKICAgICAgICAndXBkYXRlZF9hdCcgPT4gJ0RUJywKICAgICAgICAndXBkYXRlZF9ieScgPT4gJ0knLAogICAgKTsKCiAgICAvKioKICAgICAqIERhdGFiYXNlIGluZGV4ZWQgZmllbGRzCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCBzdGF0aWMgJHRhYmxlX2ZpZWxkc19pbmRleGVzID0gYXJyYXkoJ2lkJyk7CgogICAgY29uc3QgVEFCTEVfTkFNRSA9ICcnOwoKICAgIC8qKgogICAgICogVGFibGUgcmVsYXRpb25zCiAgICAgKiBFeGFtcGxlOgogICAgICogIGFycmF5KAogICAgICogICAgICAncmVsYXRpb25fbmFtZScgPT4gYXJyYXkoCiAgICAgKiAgICAgICAgICAnbG9jYWwnID0+ICdsb2NhbCBmaWVsZCcsCiAgICAgKiAgICAgICAgICAncmVtb3RlJyA9PiAncmVtb3RlIGZpZWxkJywKICAgICAqICAgICAgICAgICdjbGFzcycgPT4gJ1JlbW90ZSBjbGFzcycKICAgICAqICAgICAgKQogICAgICogKTsKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIHN0YXRpYyAkdGFibGVfcmVsYXRpb25zID0gYXJyYXkoKTsKICAgIC8vIFRPRE8KICAgIC8vICRjYXNjYWRlID0+IExpc3Qgb2YgY2hpbGQgb2JqZWN0cyAvLyBQb3NzaWJseSBkYiBjb25zdHJhaW50ID8KICAgIC8vICRmb3JlaW5fa2V5cwoKICAgIHB1YmxpYyBzdGF0aWMgJGJsYWNrbGlzdCA9IGFycmF5KAogICAgICAgICd0YWJsZWZpZWxkcycKICAgICk7CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRUYWJsZUZpZWxkcygpCiAgICB7CiAgICAgICAgaWYgKCRwYXJlbnQgPSBnZXRfcGFyZW50X2NsYXNzKGdldF9jYWxsZWRfY2xhc3MoKSkpIHsKICAgICAgICAgICAgcmV0dXJuICRwYXJlbnQ6OmdldFRhYmxlRmllbGRzKCkgKyBzdGF0aWM6OiR0YWJsZV9maWVsZHM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIHN0YXRpYzo6JHRhYmxlX2ZpZWxkczsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZXRyaWV2ZVRhYmxlRmllbGRzKCkKICAgIHsKICAgICAgICAkZmllbGRzID0gYXJyYXkoKTsKCiAgICAgICAgZm9yZWFjaCAoc3RhdGljOjpnZXRUYWJsZUZpZWxkcygpIGFzICRmaWVsZF9uYW1lID0+ICRmaWVsZF90eXBlKSB7CiAgICAgICAgICAgICRmaWVsZHNbXSA9ICRmaWVsZF9uYW1lIC4gJyAnIC4gJGZpZWxkX3R5cGU7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkZmllbGRzOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0VGFibGVGaWVsZEluZGV4ZXMoKQogICAgewogICAgICAgIGlmICgkcGFyZW50ID0gZ2V0X3BhcmVudF9jbGFzcyhnZXRfY2FsbGVkX2NsYXNzKCkpKSB7CiAgICAgICAgICAgIHJldHVybiAkcGFyZW50OjpnZXRUYWJsZUZpZWxkSW5kZXhlcygpICsgc3RhdGljOjokdGFibGVfZmllbGRzX2luZGV4ZXM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIHN0YXRpYzo6JHRhYmxlX2ZpZWxkc19pbmRleGVzOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldElkKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmlkOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3NldCgkbmFtZSwgJHZhbHVlKQogICAgewogICAgICAgICR0aGlzLT4kbmFtZSA9ICR2YWx1ZTsKICAgIH0KCgogICAgcHVibGljIGZ1bmN0aW9uIF9fZ2V0KCRuYW1lKQogICAgewogICAgICAgICRtZXRob2QgPSAnZ2V0JyAuIHNlbGY6OkNhbWVsaXNlKCRuYW1lKTsKCiAgICAgICAgaWYgKG1ldGhvZF9leGlzdHMoJHRoaXMsICRtZXRob2QpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+JG1ldGhvZCgpOwogICAgICAgIH0KICAgICAgICBpZiAobWV0aG9kX2V4aXN0cygkdGhpcywgJG5hbWUpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+JG5hbWUoKTsKICAgICAgICB9IGVsc2VpZiAocHJvcGVydHlfZXhpc3RzKCR0aGlzLCAkbmFtZSkpIHsKCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+JG5hbWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignUHJvcGVydHkgJyAuICRuYW1lIC4gJyBkbyBub3QgZXhpc3RzIGluICcgLiBfX0NMQVNTX18pOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIENhbWVsaXNlKCRuYW1lLCAkZ2x1ZSA9ICcnKQogICAgewogICAgICAgICR3b3JkcyA9IGV4cGxvZGUoJ18nLCAkbmFtZSk7CiAgICAgICAgZm9yZWFjaCAoJHdvcmRzIGFzICYkd29yZCkgewogICAgICAgICAgICAkd29yZCA9IHVjZmlyc3QoJHdvcmQpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gaW1wbG9kZSgkZ2x1ZSwgJHdvcmRzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2F2ZSgkaW5zZXJ0ID0gZmFsc2UpCiAgICB7CiAgICAgICAgaWYgKGVtcHR5KCR0aGlzLT5pZCkgfHwgJGluc2VydCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmluc2VydCgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+dXBkYXRlKCk7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gaW5zZXJ0KCkKICAgIHsKICAgICAgICAkZGIgPSBjbXNfdXRpbHM6OmdldF9kYigpOwogICAgICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnIC4gY21zX2RiX3ByZWZpeCgpIC4gc3RhdGljOjpUQUJMRV9OQU1FOwoKICAgICAgICAkZmllbGRzID0gYXJyYXkoKTsKICAgICAgICAkZXhjbHVkZSA9IGFycmF5KCk7CiAgICAgICAgJHZhbHVlcyA9IGFycmF5KCk7CgogICAgICAgIGlmICghZW1wdHkoJHRoaXMtPmlkKSkgewogICAgICAgICAgICAkZmllbGRzW10gPSAnaWQgPSA/JzsKICAgICAgICAgICAgJHZhbHVlc1tdID0gJHRoaXMtPmdldElkKCk7CiAgICAgICAgICAgICRleGNsdWRlW10gPSAnaWQnOwogICAgICAgIH0KCiAgICAgICAgJGZpZWxkc1tdID0gJ2NyZWF0ZWRfYXQgPSBOT1coKSc7CiAgICAgICAgJGV4Y2x1ZGVbXSA9ICdjcmVhdGVkX2F0JzsKCiAgICAgICAgJGZpZWxkc1tdID0gJ2NyZWF0ZWRfYnkgPSA/JzsKICAgICAgICAkdmFsdWVzW10gPSBnZXRfdXNlcmlkKGZhbHNlKTsKICAgICAgICAkZXhjbHVkZVtdID0gJ2NyZWF0ZWRfYnknOwoKICAgICAgICAkZmllbGRzW10gPSAndXBkYXRlZF9hdCA9IE5PVygpJzsKICAgICAgICAkZXhjbHVkZVtdID0gJ3VwZGF0ZWRfYXQnOwoKICAgICAgICAkZmllbGRzW10gPSAndXBkYXRlZF9ieSA9ID8nOwogICAgICAgICR2YWx1ZXNbXSA9IGdldF91c2VyaWQoZmFsc2UpOwogICAgICAgICRleGNsdWRlW10gPSAndXBkYXRlZF9ieSc7CgoKICAgICAgICBmb3JlYWNoIChzdGF0aWM6OmdldFRhYmxlRmllbGRzKCkgYXMgJGZpZWxkX25hbWUgPT4gJGZpZWxkX3R5cGUpIHsKICAgICAgICAgICAgaWYgKCFpbl9hcnJheSgkZmllbGRfbmFtZSwgJGV4Y2x1ZGUpKSB7CiAgICAgICAgICAgICAgICAkZmllbGRzW10gPSAkZmllbGRfbmFtZSAuICcgPSA/JzsKICAgICAgICAgICAgICAgICR2YWx1ZXNbXSA9ICR0aGlzLT5fX2dldCgkZmllbGRfbmFtZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRxdWVyeSAuPSAnIFNFVCAnIC4gaW1wbG9kZSgnLCAnLCAkZmllbGRzKTsKCiAgICAgICAgJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksICR2YWx1ZXMpOwoKICAgICAgICBpZiAoJHJlc3VsdCA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignSW1wb3NzaWJsZSB0byBleGVjdXRlIHF1ZXJ5OiAnIC4gJHF1ZXJ5KTsKICAgICAgICB9CgogICAgICAgIGlmIChlbXB0eSgkdGhpcy0+aWQpKSB7CiAgICAgICAgICAgICR0aGlzLT5pZCA9ICRkYi0+SW5zZXJ0X0lEKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiB1cGRhdGUoKQogICAgewogICAgICAgICRkYiA9IGNtc191dGlsczo6Z2V0X2RiKCk7CiAgICAgICAgJHF1ZXJ5ID0gJ1VQREFURSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gc3RhdGljOjpUQUJMRV9OQU1FOwoKICAgICAgICAkZmllbGRzID0gYXJyYXkoKTsKICAgICAgICAkZXhjbHVkZSA9IGFycmF5KCk7CiAgICAgICAgJHZhbHVlcyA9IGFycmF5KCk7CgogICAgICAgICRleGNsdWRlW10gPSAnaWQnOwogICAgICAgICRleGNsdWRlW10gPSAnY3JlYXRlZF9hdCc7CiAgICAgICAgJGV4Y2x1ZGVbXSA9ICdjcmVhdGVkX2J5JzsKCiAgICAgICAgJGZpZWxkc1tdID0gJ3VwZGF0ZWRfYXQgPSBOT1coKSc7CiAgICAgICAgJGV4Y2x1ZGVbXSA9ICd1cGRhdGVkX2F0JzsKCiAgICAgICAgJGZpZWxkc1tdID0gJ3VwZGF0ZWRfYnkgPSA/JzsKICAgICAgICAkdmFsdWVzW10gPSBnZXRfdXNlcmlkKGZhbHNlKTsKICAgICAgICAkZXhjbHVkZVtdID0gJ3VwZGF0ZWRfYnknOwoKICAgICAgICBmb3JlYWNoIChzdGF0aWM6OmdldFRhYmxlRmllbGRzKCkgYXMgJGZpZWxkX25hbWUgPT4gJGZpZWxkX3R5cGUpIHsKICAgICAgICAgICAgaWYgKCFpbl9hcnJheSgkZmllbGRfbmFtZSwgJGV4Y2x1ZGUpKSB7CiAgICAgICAgICAgICAgICAkZmllbGRzW10gPSAkZmllbGRfbmFtZSAuICcgPSA/JzsKICAgICAgICAgICAgICAgICR2YWx1ZXNbXSA9ICR0aGlzLT5fX2dldCgkZmllbGRfbmFtZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRxdWVyeSAuPSAnIFNFVCAnIC4gaW1wbG9kZSgnLCAnLCAkZmllbGRzKSAuICcgV0hFUkUgaWQgPSA/JzsKCiAgICAgICAgJHZhbHVlc1tdID0gJHRoaXMtPmdldElkKCk7CgogICAgICAgICRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCAkdmFsdWVzKTsKCiAgICAgICAgaWYgKCRyZXN1bHQgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0ltcG9zc2libGUgdG8gZXhlY3V0ZSBxdWVyeTogJyAuICRxdWVyeSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGRlbGV0ZSgpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5nZXRJZCgpKSB7CiAgICAgICAgICAgICRkYiA9IGNtc191dGlsczo6Z2V0X2RiKCk7CiAgICAgICAgICAgICRxdWVyeSA9ICdERUxFVEUgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gc3RhdGljOjpUQUJMRV9OQU1FIC4gJyBXSEVSRSBpZCA9ID8nOwogICAgICAgICAgICAkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHRoaXMtPmdldElkKCkpKTsKICAgICAgICAgICAgaWYgKCRyZXN1bHQgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gTUNGQ3JpdGVyaWEgJGMKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkb1NlbGVjdChNQ0ZDcml0ZXJpYSAkYykKICAgIHsKICAgICAgICAkZGIgPSBjbXNfdXRpbHM6OmdldF9kYigpOwogICAgICAgICRxdWVyeSA9ICRjLT5idWlsZFF1ZXJ5KGNtc19kYl9wcmVmaXgoKSAuIHN0YXRpYzo6VEFCTEVfTkFNRSk7CiAgICAgICAgJHJlc3VsdCA9ICRkYi0+ZXhlY3V0ZSgkcXVlcnksICRjLT52YWx1ZXMpOwoKICAgICAgICAkZW50aXRpZXMgPSBhcnJheSgpOwoKICAgICAgICB3aGlsZSAoJHJlc3VsdCAmJiAoJHJvdyA9ICRyZXN1bHQtPkZldGNoUm93KCkpKSB7CgogICAgICAgICAgICAkZW50aXRpZXNbXSA9IHN0YXRpYzo6cG9wdWxhdGUoJHJvdyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkZW50aXRpZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gTUNGQ3JpdGVyaWEgJGMKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZG9Db3VudChNQ0ZDcml0ZXJpYSAkYykKICAgIHsKICAgICAgICAkZGIgPSBjbXNfdXRpbHM6OmdldF9kYigpOwogICAgICAgICRxdWVyeSA9ICRjLT5idWlsZFF1ZXJ5KGNtc19kYl9wcmVmaXgoKSAuIHN0YXRpYzo6VEFCTEVfTkFNRSk7CiAgICAgICAgJHJlc3VsdCA9ICRkYi0+ZXhlY3V0ZSgkcXVlcnksICRjLT52YWx1ZXMpOwoKICAgICAgICBpZigkcmVzdWx0KQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIChpbnQpICRyZXN1bHQtPk51bVJvd3MoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBwb3B1bGF0ZSgkcm93LCAkZW50aXR5ID0gbnVsbCkKICAgIHsKICAgICAgICBpZihpc19udWxsKCRlbnRpdHkpKQogICAgICAgIHsKICAgICAgICAgICAgJGVudGl0eSA9IG5ldyBzdGF0aWMoKTsKICAgICAgICB9CiAgICAgICAgZm9yZWFjaCAoc3RhdGljOjpnZXRUYWJsZUZpZWxkcygpIGFzICRuYW1lID0+ICR0eXBlKSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkcm93WyRuYW1lXSkpICRlbnRpdHktPl9fc2V0KCRuYW1lLCAkcm93WyRuYW1lXSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkZW50aXR5OwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIE1DRkNyaXRlcmlhICRjCiAgICAgKiBAcmV0dXJuIG1peGVkfG51bGwKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkb1NlbGVjdE9uZShNQ0ZDcml0ZXJpYSAkYykKICAgIHsKCiAgICAgICAgJGMtPnNldExpbWl0KDEpOwogICAgICAgICRyZXN1bHQgPSBzdGF0aWM6OmRvU2VsZWN0KCRjKTsKCiAgICAgICAgaWYgKGNvdW50KCRyZXN1bHQpID4gMCkgewogICAgICAgICAgICByZXNldCgkcmVzdWx0KTsKICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQoJHJlc3VsdCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmV0cmlldmVCeVBrKCRwaykKICAgIHsKICAgICAgICAkYyA9IG5ldyBNQ0ZDcml0ZXJpYSgpOwogICAgICAgICRjLT5hZGQoJ2lkJywgJHBrKTsKICAgICAgICByZXR1cm4gc3RhdGljOjpkb1NlbGVjdE9uZSgkYyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZXRyaWV2ZUJ5SWQoJGlkKQogICAgewogICAgICAgIHJldHVybiBzdGF0aWM6OnJldHJpZXZlQnlQaygkaWQpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlVGFibGUoKQogICAgewogICAgICAgICRkYiA9IGNtc191dGlsczo6Z2V0X2RiKCk7CiAgICAgICAgJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwogICAgICAgICRzcWwgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpIC4gc3RhdGljOjpUQUJMRV9OQU1FLCBpbXBsb2RlKCcsJywgc3RhdGljOjpyZXRyaWV2ZVRhYmxlRmllbGRzKCkpKTsKICAgICAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWwpOwoKICAgICAgICAkaWR4bmFtZSA9IHN0cnRvbG93ZXIoc3RhdGljOjpUQUJMRV9OQU1FKSAuICdfaW5kZXhlcyc7CiAgICAgICAgJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZUluZGV4U1FMKCRpZHhuYW1lLCBjbXNfZGJfcHJlZml4KCkgLiBzdGF0aWM6OlRBQkxFX05BTUUsIGltcGxvZGUoJywnLCBzdGF0aWM6OmdldFRhYmxlRmllbGRJbmRleGVzKCkpKTsKICAgICAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkZWxldGVUYWJsZSgpCiAgICB7CiAgICAgICAgJGRiID0gY21zX3V0aWxzOjpnZXRfZGIoKTsKICAgICAgICAkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7CiAgICAgICAgJHNxbCA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpIC4gc3RhdGljOjpUQUJMRV9OQU1FKTsKICAgICAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWwpOwogICAgfQp9]]></data>
	</file>
	<file>
	  <filename>/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIDIsIEp1bmUgMTk5MQoKIENvcHlyaWdodCAoQykgMTk4OSwgMTk5MSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDxodHRwOi8vZnNmLm9yZy8+CiA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCiBFdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMKIG9mIHRoaXMgbGljZW5zZSBkb2N1bWVudCwgYnV0IGNoYW5naW5nIGl0IGlzIG5vdCBhbGxvd2VkLgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZWFtYmxlCgogIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhcmUgZGVzaWduZWQgdG8gdGFrZSBhd2F5IHlvdXIKZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIGl0LiAgQnkgY29udHJhc3QsIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKTGljZW5zZSBpcyBpbnRlbmRlZCB0byBndWFyYW50ZWUgeW91ciBmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgZnJlZQpzb2Z0d2FyZS0tdG8gbWFrZSBzdXJlIHRoZSBzb2Z0d2FyZSBpcyBmcmVlIGZvciBhbGwgaXRzIHVzZXJzLiAgVGhpcwpHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFwcGxpZXMgdG8gbW9zdCBvZiB0aGUgRnJlZSBTb2Z0d2FyZQpGb3VuZGF0aW9uJ3Mgc29mdHdhcmUgYW5kIHRvIGFueSBvdGhlciBwcm9ncmFtIHdob3NlIGF1dGhvcnMgY29tbWl0IHRvCnVzaW5nIGl0LiAgKFNvbWUgb3RoZXIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIHNvZnR3YXJlIGlzIGNvdmVyZWQgYnkKdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpbnN0ZWFkLikgIFlvdSBjYW4gYXBwbHkgaXQgdG8KeW91ciBwcm9ncmFtcywgdG9vLgoKICBXaGVuIHdlIHNwZWFrIG9mIGZyZWUgc29mdHdhcmUsIHdlIGFyZSByZWZlcnJpbmcgdG8gZnJlZWRvbSwgbm90CnByaWNlLiAgT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhhdCB5b3UKaGF2ZSB0aGUgZnJlZWRvbSB0byBkaXN0cmlidXRlIGNvcGllcyBvZiBmcmVlIHNvZnR3YXJlIChhbmQgY2hhcmdlIGZvcgp0aGlzIHNlcnZpY2UgaWYgeW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQKaWYgeW91IHdhbnQgaXQsIHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhlIHNvZnR3YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQKaW4gbmV3IGZyZWUgcHJvZ3JhbXM7IGFuZCB0aGF0IHlvdSBrbm93IHlvdSBjYW4gZG8gdGhlc2UgdGhpbmdzLgoKICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkCmFueW9uZSB0byBkZW55IHlvdSB0aGVzZSByaWdodHMgb3IgdG8gYXNrIHlvdSB0byBzdXJyZW5kZXIgdGhlIHJpZ2h0cy4KVGhlc2UgcmVzdHJpY3Rpb25zIHRyYW5zbGF0ZSB0byBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgZm9yIHlvdSBpZiB5b3UKZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZiB5b3UgbW9kaWZ5IGl0LgoKICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyCmdyYXRpcyBvciBmb3IgYSBmZWUsIHlvdSBtdXN0IGdpdmUgdGhlIHJlY2lwaWVudHMgYWxsIHRoZSByaWdodHMgdGhhdAp5b3UgaGF2ZS4gIFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHRoZXksIHRvbywgcmVjZWl2ZSBvciBjYW4gZ2V0IHRoZQpzb3VyY2UgY29kZS4gIEFuZCB5b3UgbXVzdCBzaG93IHRoZW0gdGhlc2UgdGVybXMgc28gdGhleSBrbm93IHRoZWlyCnJpZ2h0cy4KCiAgV2UgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIHR3byBzdGVwczogKDEpIGNvcHlyaWdodCB0aGUgc29mdHdhcmUsIGFuZAooMikgb2ZmZXIgeW91IHRoaXMgbGljZW5zZSB3aGljaCBnaXZlcyB5b3UgbGVnYWwgcGVybWlzc2lvbiB0byBjb3B5LApkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhlIHNvZnR3YXJlLgoKICBBbHNvLCBmb3IgZWFjaCBhdXRob3IncyBwcm90ZWN0aW9uIGFuZCBvdXJzLCB3ZSB3YW50IHRvIG1ha2UgY2VydGFpbgp0aGF0IGV2ZXJ5b25lIHVuZGVyc3RhbmRzIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoaXMgZnJlZQpzb2Z0d2FyZS4gIElmIHRoZSBzb2Z0d2FyZSBpcyBtb2RpZmllZCBieSBzb21lb25lIGVsc2UgYW5kIHBhc3NlZCBvbiwgd2UKd2FudCBpdHMgcmVjaXBpZW50cyB0byBrbm93IHRoYXQgd2hhdCB0aGV5IGhhdmUgaXMgbm90IHRoZSBvcmlnaW5hbCwgc28KdGhhdCBhbnkgcHJvYmxlbXMgaW50cm9kdWNlZCBieSBvdGhlcnMgd2lsbCBub3QgcmVmbGVjdCBvbiB0aGUgb3JpZ2luYWwKYXV0aG9ycycgcmVwdXRhdGlvbnMuCgogIEZpbmFsbHksIGFueSBmcmVlIHByb2dyYW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlCnBhdGVudHMuICBXZSB3aXNoIHRvIGF2b2lkIHRoZSBkYW5nZXIgdGhhdCByZWRpc3RyaWJ1dG9ycyBvZiBhIGZyZWUKcHJvZ3JhbSB3aWxsIGluZGl2aWR1YWxseSBvYnRhaW4gcGF0ZW50IGxpY2Vuc2VzLCBpbiBlZmZlY3QgbWFraW5nIHRoZQpwcm9ncmFtIHByb3ByaWV0YXJ5LiAgVG8gcHJldmVudCB0aGlzLCB3ZSBoYXZlIG1hZGUgaXQgY2xlYXIgdGhhdCBhbnkKcGF0ZW50IG11c3QgYmUgbGljZW5zZWQgZm9yIGV2ZXJ5b25lJ3MgZnJlZSB1c2Ugb3Igbm90IGxpY2Vuc2VkIGF0IGFsbC4KCiAgVGhlIHByZWNpc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQKbW9kaWZpY2F0aW9uIGZvbGxvdy4KCiAgICAgICAgICAgICAgICAgICAgR05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9ESUZJQ0FUSU9OCgogIDAuIFRoaXMgTGljZW5zZSBhcHBsaWVzIHRvIGFueSBwcm9ncmFtIG9yIG90aGVyIHdvcmsgd2hpY2ggY29udGFpbnMKYSBub3RpY2UgcGxhY2VkIGJ5IHRoZSBjb3B5cmlnaHQgaG9sZGVyIHNheWluZyBpdCBtYXkgYmUgZGlzdHJpYnV0ZWQKdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoZSAiUHJvZ3JhbSIsIGJlbG93LApyZWZlcnMgdG8gYW55IHN1Y2ggcHJvZ3JhbSBvciB3b3JrLCBhbmQgYSAid29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSIKbWVhbnMgZWl0aGVyIHRoZSBQcm9ncmFtIG9yIGFueSBkZXJpdmF0aXZlIHdvcmsgdW5kZXIgY29weXJpZ2h0IGxhdzoKdGhhdCBpcyB0byBzYXksIGEgd29yayBjb250YWluaW5nIHRoZSBQcm9ncmFtIG9yIGEgcG9ydGlvbiBvZiBpdCwKZWl0aGVyIHZlcmJhdGltIG9yIHdpdGggbW9kaWZpY2F0aW9ucyBhbmQvb3IgdHJhbnNsYXRlZCBpbnRvIGFub3RoZXIKbGFuZ3VhZ2UuICAoSGVyZWluYWZ0ZXIsIHRyYW5zbGF0aW9uIGlzIGluY2x1ZGVkIHdpdGhvdXQgbGltaXRhdGlvbiBpbgp0aGUgdGVybSAibW9kaWZpY2F0aW9uIi4pICBFYWNoIGxpY2Vuc2VlIGlzIGFkZHJlc3NlZCBhcyAieW91Ii4KCkFjdGl2aXRpZXMgb3RoZXIgdGhhbiBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kIG1vZGlmaWNhdGlvbiBhcmUgbm90CmNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlOyB0aGV5IGFyZSBvdXRzaWRlIGl0cyBzY29wZS4gIFRoZSBhY3Qgb2YKcnVubmluZyB0aGUgUHJvZ3JhbSBpcyBub3QgcmVzdHJpY3RlZCwgYW5kIHRoZSBvdXRwdXQgZnJvbSB0aGUgUHJvZ3JhbQppcyBjb3ZlcmVkIG9ubHkgaWYgaXRzIGNvbnRlbnRzIGNvbnN0aXR1dGUgYSB3b3JrIGJhc2VkIG9uIHRoZQpQcm9ncmFtIChpbmRlcGVuZGVudCBvZiBoYXZpbmcgYmVlbiBtYWRlIGJ5IHJ1bm5pbmcgdGhlIFByb2dyYW0pLgpXaGV0aGVyIHRoYXQgaXMgdHJ1ZSBkZXBlbmRzIG9uIHdoYXQgdGhlIFByb2dyYW0gZG9lcy4KCiAgMS4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSdzCnNvdXJjZSBjb2RlIGFzIHlvdSByZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0IHlvdQpjb25zcGljdW91c2x5IGFuZCBhcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlCmNvcHlyaWdodCBub3RpY2UgYW5kIGRpc2NsYWltZXIgb2Ygd2FycmFudHk7IGtlZXAgaW50YWN0IGFsbCB0aGUKbm90aWNlcyB0aGF0IHJlZmVyIHRvIHRoaXMgTGljZW5zZSBhbmQgdG8gdGhlIGFic2VuY2Ugb2YgYW55IHdhcnJhbnR5OwphbmQgZ2l2ZSBhbnkgb3RoZXIgcmVjaXBpZW50cyBvZiB0aGUgUHJvZ3JhbSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlCmFsb25nIHdpdGggdGhlIFByb2dyYW0uCgpZb3UgbWF5IGNoYXJnZSBhIGZlZSBmb3IgdGhlIHBoeXNpY2FsIGFjdCBvZiB0cmFuc2ZlcnJpbmcgYSBjb3B5LCBhbmQKeW91IG1heSBhdCB5b3VyIG9wdGlvbiBvZmZlciB3YXJyYW50eSBwcm90ZWN0aW9uIGluIGV4Y2hhbmdlIGZvciBhIGZlZS4KCiAgMi4gWW91IG1heSBtb2RpZnkgeW91ciBjb3B5IG9yIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbgpvZiBpdCwgdGh1cyBmb3JtaW5nIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSwgYW5kIGNvcHkgYW5kCmRpc3RyaWJ1dGUgc3VjaCBtb2RpZmljYXRpb25zIG9yIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMQphYm92ZSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOgoKICAgIGEpIFlvdSBtdXN0IGNhdXNlIHRoZSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcwogICAgc3RhdGluZyB0aGF0IHlvdSBjaGFuZ2VkIHRoZSBmaWxlcyBhbmQgdGhlIGRhdGUgb2YgYW55IGNoYW5nZS4KCiAgICBiKSBZb3UgbXVzdCBjYXVzZSBhbnkgd29yayB0aGF0IHlvdSBkaXN0cmlidXRlIG9yIHB1Ymxpc2gsIHRoYXQgaW4KICAgIHdob2xlIG9yIGluIHBhcnQgY29udGFpbnMgb3IgaXMgZGVyaXZlZCBmcm9tIHRoZSBQcm9ncmFtIG9yIGFueQogICAgcGFydCB0aGVyZW9mLCB0byBiZSBsaWNlbnNlZCBhcyBhIHdob2xlIGF0IG5vIGNoYXJnZSB0byBhbGwgdGhpcmQKICAgIHBhcnRpZXMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KCiAgICBjKSBJZiB0aGUgbW9kaWZpZWQgcHJvZ3JhbSBub3JtYWxseSByZWFkcyBjb21tYW5kcyBpbnRlcmFjdGl2ZWx5CiAgICB3aGVuIHJ1biwgeW91IG11c3QgY2F1c2UgaXQsIHdoZW4gc3RhcnRlZCBydW5uaW5nIGZvciBzdWNoCiAgICBpbnRlcmFjdGl2ZSB1c2UgaW4gdGhlIG1vc3Qgb3JkaW5hcnkgd2F5LCB0byBwcmludCBvciBkaXNwbGF5IGFuCiAgICBhbm5vdW5jZW1lbnQgaW5jbHVkaW5nIGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UgYW5kIGEKICAgIG5vdGljZSB0aGF0IHRoZXJlIGlzIG5vIHdhcnJhbnR5IChvciBlbHNlLCBzYXlpbmcgdGhhdCB5b3UgcHJvdmlkZQogICAgYSB3YXJyYW50eSkgYW5kIHRoYXQgdXNlcnMgbWF5IHJlZGlzdHJpYnV0ZSB0aGUgcHJvZ3JhbSB1bmRlcgogICAgdGhlc2UgY29uZGl0aW9ucywgYW5kIHRlbGxpbmcgdGhlIHVzZXIgaG93IHRvIHZpZXcgYSBjb3B5IG9mIHRoaXMKICAgIExpY2Vuc2UuICAoRXhjZXB0aW9uOiBpZiB0aGUgUHJvZ3JhbSBpdHNlbGYgaXMgaW50ZXJhY3RpdmUgYnV0CiAgICBkb2VzIG5vdCBub3JtYWxseSBwcmludCBzdWNoIGFuIGFubm91bmNlbWVudCwgeW91ciB3b3JrIGJhc2VkIG9uCiAgICB0aGUgUHJvZ3JhbSBpcyBub3QgcmVxdWlyZWQgdG8gcHJpbnQgYW4gYW5ub3VuY2VtZW50LikKClRoZXNlIHJlcXVpcmVtZW50cyBhcHBseSB0byB0aGUgbW9kaWZpZWQgd29yayBhcyBhIHdob2xlLiAgSWYKaWRlbnRpZmlhYmxlIHNlY3Rpb25zIG9mIHRoYXQgd29yayBhcmUgbm90IGRlcml2ZWQgZnJvbSB0aGUgUHJvZ3JhbSwKYW5kIGNhbiBiZSByZWFzb25hYmx5IGNvbnNpZGVyZWQgaW5kZXBlbmRlbnQgYW5kIHNlcGFyYXRlIHdvcmtzIGluCnRoZW1zZWx2ZXMsIHRoZW4gdGhpcyBMaWNlbnNlLCBhbmQgaXRzIHRlcm1zLCBkbyBub3QgYXBwbHkgdG8gdGhvc2UKc2VjdGlvbnMgd2hlbiB5b3UgZGlzdHJpYnV0ZSB0aGVtIGFzIHNlcGFyYXRlIHdvcmtzLiAgQnV0IHdoZW4geW91CmRpc3RyaWJ1dGUgdGhlIHNhbWUgc2VjdGlvbnMgYXMgcGFydCBvZiBhIHdob2xlIHdoaWNoIGlzIGEgd29yayBiYXNlZApvbiB0aGUgUHJvZ3JhbSwgdGhlIGRpc3RyaWJ1dGlvbiBvZiB0aGUgd2hvbGUgbXVzdCBiZSBvbiB0aGUgdGVybXMgb2YKdGhpcyBMaWNlbnNlLCB3aG9zZSBwZXJtaXNzaW9ucyBmb3Igb3RoZXIgbGljZW5zZWVzIGV4dGVuZCB0byB0aGUKZW50aXJlIHdob2xlLCBhbmQgdGh1cyB0byBlYWNoIGFuZCBldmVyeSBwYXJ0IHJlZ2FyZGxlc3Mgb2Ygd2hvIHdyb3RlIGl0LgoKVGh1cywgaXQgaXMgbm90IHRoZSBpbnRlbnQgb2YgdGhpcyBzZWN0aW9uIHRvIGNsYWltIHJpZ2h0cyBvciBjb250ZXN0CnlvdXIgcmlnaHRzIHRvIHdvcmsgd3JpdHRlbiBlbnRpcmVseSBieSB5b3U7IHJhdGhlciwgdGhlIGludGVudCBpcyB0bwpleGVyY2lzZSB0aGUgcmlnaHQgdG8gY29udHJvbCB0aGUgZGlzdHJpYnV0aW9uIG9mIGRlcml2YXRpdmUgb3IKY29sbGVjdGl2ZSB3b3JrcyBiYXNlZCBvbiB0aGUgUHJvZ3JhbS4KCkluIGFkZGl0aW9uLCBtZXJlIGFnZ3JlZ2F0aW9uIG9mIGFub3RoZXIgd29yayBub3QgYmFzZWQgb24gdGhlIFByb2dyYW0Kd2l0aCB0aGUgUHJvZ3JhbSAob3Igd2l0aCBhIHdvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0pIG9uIGEgdm9sdW1lIG9mCmEgc3RvcmFnZSBvciBkaXN0cmlidXRpb24gbWVkaXVtIGRvZXMgbm90IGJyaW5nIHRoZSBvdGhlciB3b3JrIHVuZGVyCnRoZSBzY29wZSBvZiB0aGlzIExpY2Vuc2UuCgogIDMuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSAob3IgYSB3b3JrIGJhc2VkIG9uIGl0LAp1bmRlciBTZWN0aW9uIDIpIGluIG9iamVjdCBjb2RlIG9yIGV4ZWN1dGFibGUgZm9ybSB1bmRlciB0aGUgdGVybXMgb2YKU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIGRvIG9uZSBvZiB0aGUgZm9sbG93aW5nOgoKICAgIGEpIEFjY29tcGFueSBpdCB3aXRoIHRoZSBjb21wbGV0ZSBjb3JyZXNwb25kaW5nIG1hY2hpbmUtcmVhZGFibGUKICAgIHNvdXJjZSBjb2RlLCB3aGljaCBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucwogICAgMSBhbmQgMiBhYm92ZSBvbiBhIG1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCgogICAgYikgQWNjb21wYW55IGl0IHdpdGggYSB3cml0dGVuIG9mZmVyLCB2YWxpZCBmb3IgYXQgbGVhc3QgdGhyZWUKICAgIHllYXJzLCB0byBnaXZlIGFueSB0aGlyZCBwYXJ0eSwgZm9yIGEgY2hhcmdlIG5vIG1vcmUgdGhhbiB5b3VyCiAgICBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyBzb3VyY2UgZGlzdHJpYnV0aW9uLCBhIGNvbXBsZXRlCiAgICBtYWNoaW5lLXJlYWRhYmxlIGNvcHkgb2YgdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUsIHRvIGJlCiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBvbiBhIG1lZGl1bQogICAgY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2U7IG9yLAoKICAgIGMpIEFjY29tcGFueSBpdCB3aXRoIHRoZSBpbmZvcm1hdGlvbiB5b3UgcmVjZWl2ZWQgYXMgdG8gdGhlIG9mZmVyCiAgICB0byBkaXN0cmlidXRlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUuICAoVGhpcyBhbHRlcm5hdGl2ZSBpcwogICAgYWxsb3dlZCBvbmx5IGZvciBub25jb21tZXJjaWFsIGRpc3RyaWJ1dGlvbiBhbmQgb25seSBpZiB5b3UKICAgIHJlY2VpdmVkIHRoZSBwcm9ncmFtIGluIG9iamVjdCBjb2RlIG9yIGV4ZWN1dGFibGUgZm9ybSB3aXRoIHN1Y2gKICAgIGFuIG9mZmVyLCBpbiBhY2NvcmQgd2l0aCBTdWJzZWN0aW9uIGIgYWJvdmUuKQoKVGhlIHNvdXJjZSBjb2RlIGZvciBhIHdvcmsgbWVhbnMgdGhlIHByZWZlcnJlZCBmb3JtIG9mIHRoZSB3b3JrIGZvcgptYWtpbmcgbW9kaWZpY2F0aW9ucyB0byBpdC4gIEZvciBhbiBleGVjdXRhYmxlIHdvcmssIGNvbXBsZXRlIHNvdXJjZQpjb2RlIG1lYW5zIGFsbCB0aGUgc291cmNlIGNvZGUgZm9yIGFsbCBtb2R1bGVzIGl0IGNvbnRhaW5zLCBwbHVzIGFueQphc3NvY2lhdGVkIGludGVyZmFjZSBkZWZpbml0aW9uIGZpbGVzLCBwbHVzIHRoZSBzY3JpcHRzIHVzZWQgdG8KY29udHJvbCBjb21waWxhdGlvbiBhbmQgaW5zdGFsbGF0aW9uIG9mIHRoZSBleGVjdXRhYmxlLiAgSG93ZXZlciwgYXMgYQpzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHNvdXJjZSBjb2RlIGRpc3RyaWJ1dGVkIG5lZWQgbm90IGluY2x1ZGUKYW55dGhpbmcgdGhhdCBpcyBub3JtYWxseSBkaXN0cmlidXRlZCAoaW4gZWl0aGVyIHNvdXJjZSBvciBiaW5hcnkKZm9ybSkgd2l0aCB0aGUgbWFqb3IgY29tcG9uZW50cyAoY29tcGlsZXIsIGtlcm5lbCwgYW5kIHNvIG9uKSBvZiB0aGUKb3BlcmF0aW5nIHN5c3RlbSBvbiB3aGljaCB0aGUgZXhlY3V0YWJsZSBydW5zLCB1bmxlc3MgdGhhdCBjb21wb25lbnQKaXRzZWxmIGFjY29tcGFuaWVzIHRoZSBleGVjdXRhYmxlLgoKSWYgZGlzdHJpYnV0aW9uIG9mIGV4ZWN1dGFibGUgb3Igb2JqZWN0IGNvZGUgaXMgbWFkZSBieSBvZmZlcmluZwphY2Nlc3MgdG8gY29weSBmcm9tIGEgZGVzaWduYXRlZCBwbGFjZSwgdGhlbiBvZmZlcmluZyBlcXVpdmFsZW50CmFjY2VzcyB0byBjb3B5IHRoZSBzb3VyY2UgY29kZSBmcm9tIHRoZSBzYW1lIHBsYWNlIGNvdW50cyBhcwpkaXN0cmlidXRpb24gb2YgdGhlIHNvdXJjZSBjb2RlLCBldmVuIHRob3VnaCB0aGlyZCBwYXJ0aWVzIGFyZSBub3QKY29tcGVsbGVkIHRvIGNvcHkgdGhlIHNvdXJjZSBhbG9uZyB3aXRoIHRoZSBvYmplY3QgY29kZS4KCiAgNC4gWW91IG1heSBub3QgY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlLCBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtCmV4Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55IGF0dGVtcHQKb3RoZXJ3aXNlIHRvIGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGlzCnZvaWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4KSG93ZXZlciwgcGFydGllcyB3aG8gaGF2ZSByZWNlaXZlZCBjb3BpZXMsIG9yIHJpZ2h0cywgZnJvbSB5b3UgdW5kZXIKdGhpcyBMaWNlbnNlIHdpbGwgbm90IGhhdmUgdGhlaXIgbGljZW5zZXMgdGVybWluYXRlZCBzbyBsb25nIGFzIHN1Y2gKcGFydGllcyByZW1haW4gaW4gZnVsbCBjb21wbGlhbmNlLgoKICA1LiBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBhY2NlcHQgdGhpcyBMaWNlbnNlLCBzaW5jZSB5b3UgaGF2ZSBub3QKc2lnbmVkIGl0LiAgSG93ZXZlciwgbm90aGluZyBlbHNlIGdyYW50cyB5b3UgcGVybWlzc2lvbiB0byBtb2RpZnkgb3IKZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBvciBpdHMgZGVyaXZhdGl2ZSB3b3Jrcy4gIFRoZXNlIGFjdGlvbnMgYXJlCnByb2hpYml0ZWQgYnkgbGF3IGlmIHlvdSBkbyBub3QgYWNjZXB0IHRoaXMgTGljZW5zZS4gIFRoZXJlZm9yZSwgYnkKbW9kaWZ5aW5nIG9yIGRpc3RyaWJ1dGluZyB0aGUgUHJvZ3JhbSAob3IgYW55IHdvcmsgYmFzZWQgb24gdGhlClByb2dyYW0pLCB5b3UgaW5kaWNhdGUgeW91ciBhY2NlcHRhbmNlIG9mIHRoaXMgTGljZW5zZSB0byBkbyBzbywgYW5kCmFsbCBpdHMgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGluZyBvciBtb2RpZnlpbmcKdGhlIFByb2dyYW0gb3Igd29ya3MgYmFzZWQgb24gaXQuCgogIDYuIEVhY2ggdGltZSB5b3UgcmVkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKUHJvZ3JhbSksIHRoZSByZWNpcGllbnQgYXV0b21hdGljYWxseSByZWNlaXZlcyBhIGxpY2Vuc2UgZnJvbSB0aGUKb3JpZ2luYWwgbGljZW5zb3IgdG8gY29weSwgZGlzdHJpYnV0ZSBvciBtb2RpZnkgdGhlIFByb2dyYW0gc3ViamVjdCB0bwp0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucy4gIFlvdSBtYXkgbm90IGltcG9zZSBhbnkgZnVydGhlcgpyZXN0cmljdGlvbnMgb24gdGhlIHJlY2lwaWVudHMnIGV4ZXJjaXNlIG9mIHRoZSByaWdodHMgZ3JhbnRlZCBoZXJlaW4uCllvdSBhcmUgbm90IHJlc3BvbnNpYmxlIGZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHRvCnRoaXMgTGljZW5zZS4KCiAgNy4gSWYsIGFzIGEgY29uc2VxdWVuY2Ugb2YgYSBjb3VydCBqdWRnbWVudCBvciBhbGxlZ2F0aW9uIG9mIHBhdGVudAppbmZyaW5nZW1lbnQgb3IgZm9yIGFueSBvdGhlciByZWFzb24gKG5vdCBsaW1pdGVkIHRvIHBhdGVudCBpc3N1ZXMpLApjb25kaXRpb25zIGFyZSBpbXBvc2VkIG9uIHlvdSAod2hldGhlciBieSBjb3VydCBvcmRlciwgYWdyZWVtZW50IG9yCm90aGVyd2lzZSkgdGhhdCBjb250cmFkaWN0IHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZSwgdGhleSBkbyBub3QKZXhjdXNlIHlvdSBmcm9tIHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZS4gIElmIHlvdSBjYW5ub3QKZGlzdHJpYnV0ZSBzbyBhcyB0byBzYXRpc2Z5IHNpbXVsdGFuZW91c2x5IHlvdXIgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcwpMaWNlbnNlIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IG9ibGlnYXRpb25zLCB0aGVuIGFzIGEgY29uc2VxdWVuY2UgeW91Cm1heSBub3QgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBhdCBhbGwuICBGb3IgZXhhbXBsZSwgaWYgYSBwYXRlbnQKbGljZW5zZSB3b3VsZCBub3QgcGVybWl0IHJveWFsdHktZnJlZSByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbSBieQphbGwgdGhvc2Ugd2hvIHJlY2VpdmUgY29waWVzIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCB5b3UsIHRoZW4KdGhlIG9ubHkgd2F5IHlvdSBjb3VsZCBzYXRpc2Z5IGJvdGggaXQgYW5kIHRoaXMgTGljZW5zZSB3b3VsZCBiZSB0bwpyZWZyYWluIGVudGlyZWx5IGZyb20gZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtLgoKSWYgYW55IHBvcnRpb24gb2YgdGhpcyBzZWN0aW9uIGlzIGhlbGQgaW52YWxpZCBvciB1bmVuZm9yY2VhYmxlIHVuZGVyCmFueSBwYXJ0aWN1bGFyIGNpcmN1bXN0YW5jZSwgdGhlIGJhbGFuY2Ugb2YgdGhlIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8KYXBwbHkgYW5kIHRoZSBzZWN0aW9uIGFzIGEgd2hvbGUgaXMgaW50ZW5kZWQgdG8gYXBwbHkgaW4gb3RoZXIKY2lyY3Vtc3RhbmNlcy4KCkl0IGlzIG5vdCB0aGUgcHVycG9zZSBvZiB0aGlzIHNlY3Rpb24gdG8gaW5kdWNlIHlvdSB0byBpbmZyaW5nZSBhbnkKcGF0ZW50cyBvciBvdGhlciBwcm9wZXJ0eSByaWdodCBjbGFpbXMgb3IgdG8gY29udGVzdCB2YWxpZGl0eSBvZiBhbnkKc3VjaCBjbGFpbXM7IHRoaXMgc2VjdGlvbiBoYXMgdGhlIHNvbGUgcHVycG9zZSBvZiBwcm90ZWN0aW5nIHRoZQppbnRlZ3JpdHkgb2YgdGhlIGZyZWUgc29mdHdhcmUgZGlzdHJpYnV0aW9uIHN5c3RlbSwgd2hpY2ggaXMKaW1wbGVtZW50ZWQgYnkgcHVibGljIGxpY2Vuc2UgcHJhY3RpY2VzLiAgTWFueSBwZW9wbGUgaGF2ZSBtYWRlCmdlbmVyb3VzIGNvbnRyaWJ1dGlvbnMgdG8gdGhlIHdpZGUgcmFuZ2Ugb2Ygc29mdHdhcmUgZGlzdHJpYnV0ZWQKdGhyb3VnaCB0aGF0IHN5c3RlbSBpbiByZWxpYW5jZSBvbiBjb25zaXN0ZW50IGFwcGxpY2F0aW9uIG9mIHRoYXQKc3lzdGVtOyBpdCBpcyB1cCB0byB0aGUgYXV0aG9yL2Rvbm9yIHRvIGRlY2lkZSBpZiBoZSBvciBzaGUgaXMgd2lsbGluZwp0byBkaXN0cmlidXRlIHNvZnR3YXJlIHRocm91Z2ggYW55IG90aGVyIHN5c3RlbSBhbmQgYSBsaWNlbnNlZSBjYW5ub3QKaW1wb3NlIHRoYXQgY2hvaWNlLgoKVGhpcyBzZWN0aW9uIGlzIGludGVuZGVkIHRvIG1ha2UgdGhvcm91Z2hseSBjbGVhciB3aGF0IGlzIGJlbGlldmVkIHRvCmJlIGEgY29uc2VxdWVuY2Ugb2YgdGhlIHJlc3Qgb2YgdGhpcyBMaWNlbnNlLgoKICA4LiBJZiB0aGUgZGlzdHJpYnV0aW9uIGFuZC9vciB1c2Ugb2YgdGhlIFByb2dyYW0gaXMgcmVzdHJpY3RlZCBpbgpjZXJ0YWluIGNvdW50cmllcyBlaXRoZXIgYnkgcGF0ZW50cyBvciBieSBjb3B5cmlnaHRlZCBpbnRlcmZhY2VzLCB0aGUKb3JpZ2luYWwgY29weXJpZ2h0IGhvbGRlciB3aG8gcGxhY2VzIHRoZSBQcm9ncmFtIHVuZGVyIHRoaXMgTGljZW5zZQptYXkgYWRkIGFuIGV4cGxpY2l0IGdlb2dyYXBoaWNhbCBkaXN0cmlidXRpb24gbGltaXRhdGlvbiBleGNsdWRpbmcKdGhvc2UgY291bnRyaWVzLCBzbyB0aGF0IGRpc3RyaWJ1dGlvbiBpcyBwZXJtaXR0ZWQgb25seSBpbiBvciBhbW9uZwpjb3VudHJpZXMgbm90IHRodXMgZXhjbHVkZWQuICBJbiBzdWNoIGNhc2UsIHRoaXMgTGljZW5zZSBpbmNvcnBvcmF0ZXMKdGhlIGxpbWl0YXRpb24gYXMgaWYgd3JpdHRlbiBpbiB0aGUgYm9keSBvZiB0aGlzIExpY2Vuc2UuCgogIDkuIFRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gbWF5IHB1Ymxpc2ggcmV2aXNlZCBhbmQvb3IgbmV3IHZlcnNpb25zCm9mIHRoZSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiAgU3VjaCBuZXcgdmVyc2lvbnMgd2lsbApiZSBzaW1pbGFyIGluIHNwaXJpdCB0byB0aGUgcHJlc2VudCB2ZXJzaW9uLCBidXQgbWF5IGRpZmZlciBpbiBkZXRhaWwgdG8KYWRkcmVzcyBuZXcgcHJvYmxlbXMgb3IgY29uY2VybnMuCgpFYWNoIHZlcnNpb24gaXMgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gIElmIHRoZSBQcm9ncmFtCnNwZWNpZmllcyBhIHZlcnNpb24gbnVtYmVyIG9mIHRoaXMgTGljZW5zZSB3aGljaCBhcHBsaWVzIHRvIGl0IGFuZCAiYW55CmxhdGVyIHZlcnNpb24iLCB5b3UgaGF2ZSB0aGUgb3B0aW9uIG9mIGZvbGxvd2luZyB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMKZWl0aGVyIG9mIHRoYXQgdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKU29mdHdhcmUgRm91bmRhdGlvbi4gIElmIHRoZSBQcm9ncmFtIGRvZXMgbm90IHNwZWNpZnkgYSB2ZXJzaW9uIG51bWJlciBvZgp0aGlzIExpY2Vuc2UsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24uCgogIDEwLiBJZiB5b3Ugd2lzaCB0byBpbmNvcnBvcmF0ZSBwYXJ0cyBvZiB0aGUgUHJvZ3JhbSBpbnRvIG90aGVyIGZyZWUKcHJvZ3JhbXMgd2hvc2UgZGlzdHJpYnV0aW9uIGNvbmRpdGlvbnMgYXJlIGRpZmZlcmVudCwgd3JpdGUgdG8gdGhlIGF1dGhvcgp0byBhc2sgZm9yIHBlcm1pc3Npb24uICBGb3Igc29mdHdhcmUgd2hpY2ggaXMgY29weXJpZ2h0ZWQgYnkgdGhlIEZyZWUKU29mdHdhcmUgRm91bmRhdGlvbiwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgd2Ugc29tZXRpbWVzCm1ha2UgZXhjZXB0aW9ucyBmb3IgdGhpcy4gIE91ciBkZWNpc2lvbiB3aWxsIGJlIGd1aWRlZCBieSB0aGUgdHdvIGdvYWxzCm9mIHByZXNlcnZpbmcgdGhlIGZyZWUgc3RhdHVzIG9mIGFsbCBkZXJpdmF0aXZlcyBvZiBvdXIgZnJlZSBzb2Z0d2FyZSBhbmQKb2YgcHJvbW90aW5nIHRoZSBzaGFyaW5nIGFuZCByZXVzZSBvZiBzb2Z0d2FyZSBnZW5lcmFsbHkuCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgTk8gV0FSUkFOVFkKCiAgMTEuIEJFQ0FVU0UgVEhFIFBST0dSQU0gSVMgTElDRU5TRUQgRlJFRSBPRiBDSEFSR0UsIFRIRVJFIElTIE5PIFdBUlJBTlRZCkZPUiBUSEUgUFJPR1JBTSwgVE8gVEhFIEVYVEVOVCBQRVJNSVRURUQgQlkgQVBQTElDQUJMRSBMQVcuICBFWENFUFQgV0hFTgpPVEhFUldJU0UgU1RBVEVEIElOIFdSSVRJTkcgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORC9PUiBPVEhFUiBQQVJUSUVTClBST1ZJREUgVEhFIFBST0dSQU0gIkFTIElTIiBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTU0VECk9SIElNUExJRUQsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCk1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBUSEUgRU5USVJFIFJJU0sgQVMKVE8gVEhFIFFVQUxJVFkgQU5EIFBFUkZPUk1BTkNFIE9GIFRIRSBQUk9HUkFNIElTIFdJVEggWU9VLiAgU0hPVUxEIFRIRQpQUk9HUkFNIFBST1ZFIERFRkVDVElWRSwgWU9VIEFTU1VNRSBUSEUgQ09TVCBPRiBBTEwgTkVDRVNTQVJZIFNFUlZJQ0lORywKUkVQQUlSIE9SIENPUlJFQ1RJT04uCgogIDEyLiBJTiBOTyBFVkVOVCBVTkxFU1MgUkVRVUlSRUQgQlkgQVBQTElDQUJMRSBMQVcgT1IgQUdSRUVEIFRPIElOIFdSSVRJTkcKV0lMTCBBTlkgQ09QWVJJR0hUIEhPTERFUiwgT1IgQU5ZIE9USEVSIFBBUlRZIFdITyBNQVkgTU9ESUZZIEFORC9PUgpSRURJU1RSSUJVVEUgVEhFIFBST0dSQU0gQVMgUEVSTUlUVEVEIEFCT1ZFLCBCRSBMSUFCTEUgVE8gWU9VIEZPUiBEQU1BR0VTLApJTkNMVURJTkcgQU5ZIEdFTkVSQUwsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEFSSVNJTkcKT1VUIE9GIFRIRSBVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBUSEUgUFJPR1JBTSAoSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRApUTyBMT1NTIE9GIERBVEEgT1IgREFUQSBCRUlORyBSRU5ERVJFRCBJTkFDQ1VSQVRFIE9SIExPU1NFUyBTVVNUQUlORUQgQlkKWU9VIE9SIFRISVJEIFBBUlRJRVMgT1IgQSBGQUlMVVJFIE9GIFRIRSBQUk9HUkFNIFRPIE9QRVJBVEUgV0lUSCBBTlkgT1RIRVIKUFJPR1JBTVMpLCBFVkVOIElGIFNVQ0ggSE9MREVSIE9SIE9USEVSIFBBUlRZIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFClBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4KCiAgICAgICAgICAgICAgICAgICAgIEVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OUwoKICAgICAgICAgICAgSG93IHRvIEFwcGx5IFRoZXNlIFRlcm1zIHRvIFlvdXIgTmV3IFByb2dyYW1zCgogIElmIHlvdSBkZXZlbG9wIGEgbmV3IHByb2dyYW0sIGFuZCB5b3Ugd2FudCBpdCB0byBiZSBvZiB0aGUgZ3JlYXRlc3QKcG9zc2libGUgdXNlIHRvIHRoZSBwdWJsaWMsIHRoZSBiZXN0IHdheSB0byBhY2hpZXZlIHRoaXMgaXMgdG8gbWFrZSBpdApmcmVlIHNvZnR3YXJlIHdoaWNoIGV2ZXJ5b25lIGNhbiByZWRpc3RyaWJ1dGUgYW5kIGNoYW5nZSB1bmRlciB0aGVzZSB0ZXJtcy4KCiAgVG8gZG8gc28sIGF0dGFjaCB0aGUgZm9sbG93aW5nIG5vdGljZXMgdG8gdGhlIHByb2dyYW0uICBJdCBpcyBzYWZlc3QKdG8gYXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZpbGUgdG8gbW9zdCBlZmZlY3RpdmVseQpjb252ZXkgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdAp0aGUgImNvcHlyaWdodCIgbGluZSBhbmQgYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4KCiAgICB7ZGVzY3JpcHRpb259CiAgICBDb3B5cmlnaHQgKEMpIHt5ZWFyfSAge2Z1bGxuYW1lfQoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwogICAgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKICAgIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCgpBbHNvIGFkZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY29udGFjdCB5b3UgYnkgZWxlY3Ryb25pYyBhbmQgcGFwZXIgbWFpbC4KCklmIHRoZSBwcm9ncmFtIGlzIGludGVyYWN0aXZlLCBtYWtlIGl0IG91dHB1dCBhIHNob3J0IG5vdGljZSBsaWtlIHRoaXMKd2hlbiBpdCBzdGFydHMgaW4gYW4gaW50ZXJhY3RpdmUgbW9kZToKCiAgICBHbm9tb3Zpc2lvbiB2ZXJzaW9uIDY5LCBDb3B5cmlnaHQgKEMpIHllYXIgbmFtZSBvZiBhdXRob3IKICAgIEdub21vdmlzaW9uIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWTsgZm9yIGRldGFpbHMgdHlwZSBgc2hvdyB3Jy4KICAgIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZSwgYW5kIHlvdSBhcmUgd2VsY29tZSB0byByZWRpc3RyaWJ1dGUgaXQKICAgIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9uczsgdHlwZSBgc2hvdyBjJyBmb3IgZGV0YWlscy4KClRoZSBoeXBvdGhldGljYWwgY29tbWFuZHMgYHNob3cgdycgYW5kIGBzaG93IGMnIHNob3VsZCBzaG93IHRoZSBhcHByb3ByaWF0ZQpwYXJ0cyBvZiB0aGUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIE9mIGNvdXJzZSwgdGhlIGNvbW1hbmRzIHlvdSB1c2UgbWF5CmJlIGNhbGxlZCBzb21ldGhpbmcgb3RoZXIgdGhhbiBgc2hvdyB3JyBhbmQgYHNob3cgYyc7IHRoZXkgY291bGQgZXZlbiBiZQptb3VzZS1jbGlja3Mgb3IgbWVudSBpdGVtcy0td2hhdGV2ZXIgc3VpdHMgeW91ciBwcm9ncmFtLgoKWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHlvdXIKc2Nob29sLCBpZiBhbnksIHRvIHNpZ24gYSAiY29weXJpZ2h0IGRpc2NsYWltZXIiIGZvciB0aGUgcHJvZ3JhbSwgaWYKbmVjZXNzYXJ5LiAgSGVyZSBpcyBhIHNhbXBsZTsgYWx0ZXIgdGhlIG5hbWVzOgoKICBZb3lvZHluZSwgSW5jLiwgaGVyZWJ5IGRpc2NsYWltcyBhbGwgY29weXJpZ2h0IGludGVyZXN0IGluIHRoZSBwcm9ncmFtCiAgYEdub21vdmlzaW9uJyAod2hpY2ggbWFrZXMgcGFzc2VzIGF0IGNvbXBpbGVycykgd3JpdHRlbiBieSBKYW1lcyBIYWNrZXIuCgogIHtzaWduYXR1cmUgb2YgVHkgQ29vbn0sIDEgQXByaWwgMTk4OQogIFR5IENvb24sIFByZXNpZGVudCBvZiBWaWNlCgpUaGlzIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGluY29ycG9yYXRpbmcgeW91ciBwcm9ncmFtIGludG8KcHJvcHJpZXRhcnkgcHJvZ3JhbXMuICBJZiB5b3VyIHByb2dyYW0gaXMgYSBzdWJyb3V0aW5lIGxpYnJhcnksIHlvdSBtYXkKY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGggdGhlCmxpYnJhcnkuICBJZiB0aGlzIGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLgo=]]></data>
	</file>
	<file>
	  <filename>/MCFramework.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIERhdGU6IDA0LzAyLzE0CiAqIFRpbWU6IDE2OjQ4CiAqIEF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIEN1dmVsaWVyIDxqY2NAbW9ycmlzLWNoYXBtYW4uY29tPgogKi8KCmNsYXNzIE1DRnJhbWV3b3JrIGV4dGVuZHMgQ01TTW9kdWxlIHsKCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ00mQyBGcmFtZXdvcmsnOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRWZXJzaW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gJzAuMC4yJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0QXV0aG9yKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0plYW4tQ2hyaXN0b3BoZSBDdXZlbGllcic7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEdldEF1dGhvckVtYWlsKCkKICAgIHsKICAgICAgICByZXR1cm4gJ2pjY0Btb3JyaXMtY2hhcG1hbi5jb20nOwogICAgfQp9IA==]]></data>
	</file>
	<file>
	  <filename>/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Y21zbXMtbWNmcmFtZXdvcmsKPT09PT09PT09PT09PT09PT0KCk1DRnJhbWV3b3JrIGlzIGEgcmVwb3NpdG9yeSBvZiBvYmplY3RzIGFuZCB0b29scyB1c2VkIGluIHZhcmlvdXMgTSZhbXA7QyBNb2R1bGVzIGZvciBDTVMgTWFkZSBTaW1wbGUK]]></data>
	</file>
</module>
