<?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>MAMS</name>
	<version>1.1.0</version>
    <mincmsversion>2.2.9</mincmsversion>
	<help><![CDATA[PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwOi8vbG9jYWxob3N0L21hbXNfc2FuZGJveC9tb2R1bGVzL01BTVMvY3NzL21hbXMuY3NzIiAvPgo8c2NyaXB0IHNyYz0iaHR0cDovL2xvY2FsaG9zdC9tYW1zX3NhbmRib3gvbW9kdWxlcy9NQU1TL2pzL2pzLmNvb2tpZS5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQ+CmpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICB2YXIgYWN0aXZlX3RhYiA9IENvb2tpZXMuZ2V0KCdtYW1zX2FjdGl2ZScpOwoKICBpZih0eXBlb2YgYWN0aXZlX3RhYiA9PT0gInVuZGVmaW5lZCIpCiAgewogICAgX3NldF9hY3RpdmVfdGFiKCdnZW5lcmFsJyk7CiAgfQogIGVsc2UKICB7CiAgICBfc2V0X2FjdGl2ZV90YWIoYWN0aXZlX3RhYik7CiAgfQoKICAkKCcjcGFnZV90YWJzID4gZGl2JykKICAgIC5lYWNoKGZ1bmN0aW9uKCkKICAgIHsKICAgICAgJCh0aGlzKS5jbGljayhmdW5jdGlvbigpCiAgICAgIHsKICAgICAgICBDb29raWVzLnNldCgnbWFtc19hY3RpdmUnLCB0aGlzLmlkKTsKICAgICAgfSk7CiAgICB9KTsKfSk7CgoKZnVuY3Rpb24gX3NldF9hY3RpdmVfdGFiKHRhYl9uYW1lKQp7CiAgJCgnI3BhZ2VfdGFicyA+IGRpdicpCiAgICAuZWFjaChmdW5jdGlvbigpCiAgICB7CiAgICAgICQodGhpcykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpOwogICAgfSk7CgogICQoJyNwYWdlX2NvbnRlbnQgPiBkaXYnKQogICAgLmVhY2goZnVuY3Rpb24oKQogICAgewogICAgICAkKHRoaXMpLmhpZGUoKTsKICAgIH0pOwoKICAkKCcjJyArIHRhYl9uYW1lKS5hZGRDbGFzcygnYWN0aXZlJyk7CiAgJCgnIycgKyB0YWJfbmFtZSArICdfYycpLnNob3coKTsKICBDb29raWVzLnNldCgnbWFtc19hY3RpdmUnLCB0YWJfbmFtZSk7Cgp9Cjwvc2NyaXB0PgoKPGRpdiBjbGFzcz0iY2xlYXIiPjwvZGl2PgoKPGRpdiBpZD0icGFnZV90YWJzIj4KCiAgPGRpdiAgaWQ9ImdlbmVyYWwiPgogICAgR2VuZXJhbAogIDwvZGl2PgogIDxkaXYgaWQ9InVzaW5nIj4KICAgIEhvdyBEbyBJIFVzZSBJdAogIDwvZGl2PgogIDxkaXYgaWQ9InBhcmFtZXRlcnMiPgogICAgUGFyYW1ldGVycwogIDwvZGl2PgogIDxkaXYgaWQ9InNtYXJ0eSI+CiAgICBTbWFydHkgUGx1Z2lucwogIDwvZGl2PgogIDxkaXYgaWQ9Imhvb2tzIj4KICAgIEhvb2tzCiAgPC9kaXY+CiAgICA8ZGl2IGlkPSJhYm91dCI+CiAgICBBYm91dAogIDwvZGl2PgoKPC9kaXY+Cgo8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2Pgo8ZGl2IGlkPSJwYWdlX2NvbnRlbnQiPgoKICA8ZGl2IGlkPSJnZW5lcmFsX2MiPgogICAgPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CiAgPHA+VGhpcyBtb2R1bGUgYWxsb3dzIG1hbmFnZW1lbnQgYW5kIGFkbWluaXN0cmF0aW9uIG9mIGZyb250IGVuZCB1c2VycyA8aT4odXNlcnMgd2hvIGhhdmUgbm8gYWRtaW4gYWNjZXNzZXMpPC9pPi4gIEl0IGFsbG93cyBjcmVhdGlvbiBvZiB1c2VyIGdyb3VwcywgYW5kIHVzZXIgYWNjb3VudHMgYW5kIGFsbG93cyB1c2VycyB0byBsb2dpbiBhbmQgbG9nb3V0LjwvcD4KICA8aDQ+RmVhdHVyZXM6PC9oND4KICA8dWw+CiAgICA8bGk+VXNlcnMgY2FuIGJlIG1lbWJlcnMgb2YgbXVsdGlwbGUgZ3JvdXBzLjwvbGk+CiAgICA8bGk+VXNlciBhY2NvdW50IGV4cGlyYXRpb24uICBZb3UgY2FuIGNyZWF0ZSB0ZW1wb3JhcnkgdXNlcnM8L2xpPgogICAgPGxpPkdyb3VwIFByb3BlcnRpZXMuICBZb3UgY2FuIGFzayBmb3IgZGlmZmVyZW50IGluZm9ybWF0aW9uIGZyb20gbWVtYmVycyBvZiBkaWZmZXJlbnQgZ3JvdXBzLjwvbGk+CiAgICA8bGk+TG90cyBvZiBmaWVsZCB0eXBlcy48L2xpPgogICAgPGxpPlByb3ZpZGVzIGEgY29udGVudCB0eXBlIHRvIG1ha2UgcHJvdGVjdGluZyBjb250ZW50IHNpbXBsZSwgaWYgbm90IHRyaXZpYWwuPC9saT4KICAgIDxsaT5DYXBhYmxlIG9mIGhhbmRsaW5nIHRob3VzYW5kcyBvZiB1c2VyczwvbGk+CiAgICA8bGk+RXh0ZW5zaXZlIGZsZXhpYmlsaXR5IGZvciBoYW5kbGluZyByZWRpcmVjdGlvbiBhZnRlciBsb2dpbiwgYW5kIHNlbmRzIGV2ZW50cyB0byBleHRlbmQgdGhlIHdvcmtmbG93IHByb2Nlc3MuPC9saT4KICAgIDxsaT5Gb3Jnb3R0ZW4gcGFzc3dvcmQsIGFuZCBmb3Jnb3QgdXNlcm5hbWUgZnVuY3Rpb25hbGl0eS4uLiBhbGxvd3MgdXNlcnMgdG8gc2V0IGEgbmV3IHBhc3N3b3JkLCBhbmQvb3IgdG8gcmVjb3ZlciB0aGVpciB1c2VybmFtZSBpZiB0aGV5IGNvbXBsZXRlbHkgZm9yZ290IGxvZ2luIGRldGFpbHMuPC9saT4KICAgIDxsaT5FeHRlbmRhYmxlIHRvIGRpZmZlcmVudCBhdXRoZW50aWNhdGlvbiB0eXBlcyAoTERBUCwgRmFjZWJvb2ssIGV0YykuPC9saT4KICAgIDxsaT5Qcm92aWRlcyBleHRlbnNpdmUgaW1wb3J0IGFuZCBleHBvcnQgY2FwYWJpbGl0aWVzLjwvbGk+CiAgICA8bGk+SGFzIGFuIGV4dGVuc2l2ZSBBUEkgZm9yIGFkZGluZyBmdW5jdGlvbmFsaXR5IGludG8gdmFyaW91cyBvdGhlciBDTVNNUyBhZGRvbiBtb2R1bGVzLjwvbGk+CiAgICA8bGk+VGhlIGFiaWxpdHkgdG8gZW5jcnlwdCBzZW5zaXRpdmUgdXNlciBkYXRhLjwvbGk+CiAgICA8bGk+U3Ryb25nIGVuY3J5cHRpb24gYW5kIHNlY3VyaXR5LjwvbGk+CiAgICA8bGk+RXh0ZW5zaXZlIGFkbWluaXN0cmF0aXZlIGNhcGFiaWxpdGllcy48L2xpPgogICAgPGxpPkFkZGl0aW9uYWwgPGI+TElTRTwvYj4gY3VzdG9tIGZpZWxkcyBpZiB5b3UgaGF2ZSBpdCBpbnN0YWxsZWQuPC9saT4KICA8L3VsPgoKCjxkaXYgY2xhc3M9Indhcm5pbmciPgo8aDM+UHJpdmFjeSBXYXJuaW5nOjwvaDM+CjxwPkFkbWluaXN0cmF0b3JzIGFyZSByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIHNhZmV0eSBhbmQgc2VjdXJpdHkgb2YgYW55IHBlcnNvbmFsIGluZm9ybWF0aW9uIGNvbGxlY3RlZC48L3A+Cgo8cD5UaGlzIG1vZHVsZSBkb2VzIGxvZyB0aGUgSVAgYWRkcmVzcyBvZiB1c2Vycy4gVGhpcyBpcyBub3QgY29tcGF0aWJsZSB3aXRoIERvLU5vdC1UcmFjayBwb2xpY2llcywgYW5kIG1heSBicmVhayBzb21lIGxhd3MuICA8c3Ryb25nPlVzZSBBdCBZb3VyIE93biBSaXNrLjwvc3Ryb25nPjwvcD4KPHA+QWRkaXRpb25hbGx5LCB0aGUgYWRtaW5pc3RyYXRvciBoYXMgdGhlIGFiaWxpdHkgdG8gY29uZmlndXJlIHRoZSBtb2R1bGUgc28gdGhhdCBjb29raWVzIGFyZSB1c2VkLiAgSG93ZXZlciBubyBwZXJzb25hbCBpbmZvcm1hdGlvbiBpcyBzdG9yZWQgaW4gdGhlIGNvb2tpZXMgKGlmIGVuYWJsZWQpLiAgT25seSBhIHN5c3RlbSBhc3NpZ25lZCB1bmlxdWUgdXNlciBpZGVudGlmaWVyLCBhbmQgYSBzZXNzaW9uIGlkZW50aWZpZXIuPC9wPgoKPHA+VGhpcyBtb2R1bGUgcHJvdmlkZXMgc29tZSBhc3Npc3RhbmNlIGluIG1hbmFnaW5nIHVzZXIgcHJpdmFjeS4gIFRoZXJlIGlzIGZ1bmN0aW9uYWxpdHkgdG8gYW5vbnltaXplIGEgdXNlcnMgYWNjb3VudCwgYW5kIGZ1bmN0aW9uYWxpdHkgdGhhdCB3aWxsIGF1dG9tYXRpY2FsbHkgY2xlYXIgb2xkIGRhdGEgZnJvbSB1c2VyIGhpc3RvcnkgbG9ncy48L3A+Cgo8cD5UaGlzIG1vZHVsZSBkb2VzIE5PVCBwcm92aWRlIHRoZSBhYmlsaXR5IGZvciB1c2VycyB0byByZW1vdmUgdGhlaXIgYWNjb3VudHMuICBUaGlzIGlzIGJlY2F1c2Ugb3RoZXIgZnVuY3Rpb25hbGl0eSAoc3VjaCBhcyBFLWNvbW1lcmNlKSBtYXkgcmVxdWlyZSB0aGUgdXNlciBpbmZvcm1hdGlvbiBmb3IgcmVmZXJlbnRpYWwgaW50ZWdyaXR5LiAgSG93ZXZlciwgdGhlcmUgaXMgYW4gYWRtaW4gb3B0aW9uIHRvIGFsbG93IGFub255bWl6aW5nIGEgdXNlci48L3A+CjwvZGl2PgoKPGgzPkVuY3J5cHRlZCBEYXRhOjwvaDM+CjxwPlRoZSBFbmNyeXB0ZWQgZmllbGQgZnVuY3Rpb25hbGl0eSBpcyBpbnRlbmRlZCB0byBzdG9yZSAoaW4gYSBzZWN1cmUgd2F5KSBwZXJzb25hbCBhbmQgcHJpdmF0ZSBkYXRhIHRoYXQgZXZlbiB0aGUgc2l0ZSBhZG1pbmlzdHJhdG9yIHNob3VsZCBub3QgaGF2ZSBhY2Nlc3MgdG8uICBpLmU6IGl0ZW1zIHN1Y2ggYXMgQ3JlZGl0IENhcmQgaW5mb3JtYXRpb24uICBUaGUgb25seSBwZXJzb24gdGhhdCBzaG91bGQgYmUgYWJsZSB0byB2aWV3IGFuZCBlZGl0IHRoaXMgZGF0YSBpcyB0aGUgdXNlciBoaW1zZWxmLiAgIFRoaXMgZGF0YSBzaG91bGQgbm90IGJlIGV4cG9ydGVkIHRvIHBsYWluIHRleHQgZWl0aGVyLiAgVGhlIGRhdGEgY291bGQgaG93ZXZlciBiZSByZWFkIGFuZCB1c2VkIGJ5IG90aGVyIG1vZHVsZXMuPC9wPgo8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+ICBUaGVyZSBtYXkgYmUgc21hYSBuZWVkIGZvciBhbiBhZGRpdGlvbmFsIG1vZHVsZSB0byBkaXNwbGF5IHRoZSB1bmVuY3J5cHRlZCBmb3JtIG9mIGVuY3J5cHRlZCB1c2VyIGluZm9ybWF0aW9uLCBob3dldmVyIHRoZSBNQU1TIG1vZHVsZSBkb2VzIG5vdCBuZWVkIGl0LjwvcD4KCjxoMz5UaXBzPC9oMz4KPHVsPgogIDxsaT5EeW5hbWljIE5hdmlnYXRpb25zOgogICAgPHA+SW4gbW9zdCBjaXJjdW1zdGFuY2VzIHlvdSBjYW5ub3QgYWxsb3cgYnJvd3NlciBjYWNoaW5nIG9uIGFueSBwYWdlIHRoYXQgaGFzIGEgZHluYW1pYyBuYXZpZ2F0aW9uLi4uIHRoZSB0d28gc2hvdWxkIG5vdCBiZSBtaXhlZC48L3A+CiAgPC9saT4KICA8bGk+UmVkaXJlY3QgUHJlZmVyZW5jZXMgYW5kICZsYnJhY2U7JHVzZXJuYW1lfToKICAgIDxwPklmIHVzaW5nIHRoZSA8Y29kZT4mbGJyYWNlOyR1c2VybmFtZX08L2NvZGU+IHNtYXJ0eSB2YXJpYWJsZSBpbiBhbnkgb2YgdGhlIHJlZGlyZWN0IHByZWZlcmVuY2VzIGluIHRoZSBNQU1TIG1vZHVsZSdzICZxdW90O2J1aWx0aW4gYXV0aGVudGljYXRpb24mcXVvdDsgdGFiIGJlIHN1cmUgdG8gdHVybiBPRkYgdGhlICZxdW90O0VtYWlsIGlzIFVzZXJuYW1lJnF1b3Q7IHByZWZlcmVuY2UuPC9wPgogIDwvbGk+CjwvdWw+Cgo8ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+CiAgPHA+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBpZiB5b3UgaGF2ZSA8Yj5Gcm9udCBFbmQgVXNlcnMgKEZFVSk8L2I+IGluc3RhbGxlZCB5b3UnbGwgc2VlIGEgbmV3IHRhYiBoZXJlIHJlZ2FyZGluZyB0aGUgbWlncmF0aW9uIHN0ZXBzIGZyb20gPGI+RkVVPC9iPiB0byA8Yj5NQU1TPC9iPiBzaG91bGQgeW91IHJlcXVpcmUgaXQuPC9wPgo8L2Rpdj4gIDwvZGl2PgogIDxkaXYgaWQ9InVzaW5nX2MiPgogICAgPGgzPkhvdyBkbyBJIHVzZSBpdDo8L2gzPgo8cD5BZnRlciBpbnN0YWxsYXRpb24geW91IGNhbiB0aGUgYWNjZXNzIGFkbWluIHBhbmVsIHRvIHRoZSBNQU1TIG1vZHVsZSB1bmRlciB0aGUgJnF1b3Q7VXNlcnMgJmFtcDsgR3JvdXBzJnF1b3Q7IG1lbnUuPC9wPgo8cD5Zb3UgbmVlZCB0byBkZWZpbmUgYXQgbGVhc3Qgb25lIHByb3BlcnR5LiAgUHJvcGVydGllcyBhcmUgZXNzZW50aWFsbHkgZmllbGQgZGVmaW5pdGlvbnMsIGhlcmUgeW91IHNwZWNpZnkgdGhlIHR5cGUgb2YgaW5mb3JtYXRpb24geW91IHdhbnQgdG8gZ2F0aGVyLCBhbmQgbGltaXRzLiBpLmU6ICBOYW1lLCBBZ2UsIENpdHksIFN0YXRlLCBDb3VudHJ5LCBldGMuPC9wPgo8cD48Yj5Ob3RlOjwvYj4gWW91IGRvIG5vdCBuZWVkIHRvIGRlZmluZSBwcm9wZXJ0aWVzIGZvciB1c2VybmFtZSAob3IgZW1haWwgYWRkcmVzcykgYW5kIHBhc3N3b3JkLCB0aGVzZSB3aWxsIGJlIHByb3ZpZGVkIGZvciB5b3UuICBUaG91Z2ggeW91IGNhbiBwcm92aWRlIHByb3BlcnRpZXMgZm9yIGFkZGl0aW9uYWwgZW1haWwgYWRkcmVzc2VzLjwvcD4KPHA+PGI+Tm90ZTo8L2I+IE5ldyBpbnN0YWxsYXRpb25zIG9mIHRoZSBNQU1TIG1vZHVsZSBzcGVjaWZ5IHRoYXQgdGhlIHVzZXJzIGVtYWlsIGFkZHJlc3MgaXMgdGhlaXIgdXNlcm5hbWUgKHRoaXMgb3B0aW9uIGNhbiBiZSBjaGFuZ2VkIGluIHRoZSBtb2R1bGVzIGFkbWluIHBhbmVsKS4gIFNvIGlmIHVzaW5nIHRoaXMgb3B0aW9uIHlvdSB3aWxsIG5vdCBuZWVkIHRvIGNyZWF0ZSBhbiBlbWFpbCBhZGRyZXNzIHByb3BlcnR5LjwvcD4KPHA+TmV4dCB5b3UgbXVzdCBjcmVhdGUgb25lIG9yIG1vcmUgdXNlciBncm91cHMuICBXaGVuIHlvdSBjcmVhdGUgYSBncm91cCwgeW91IGFyZSBhc2tlZCBmb3IgYSBncm91cCBuYW1lLCBhIGRlc2NyaXB0aW9uIGFuZCB0byBhc3NvY2lhdGUgb25lIG9yIG1vcmUgcHJvcGVydGllcyB3aXRoIHRoYXQgZ3JvdXAsIHNwZWNpZnkgdGhlIHByb3BlcnRpZXMgc29ydCBvcmRlciwgYW5kIHdoZXRoZXIgaXQgaXMgYW4gb3B0aW9uYWwsIHJlcXVpcmVkLCBvciBoaWRkZW4gZmllbGQuICBBdCBsZWFzdCBvbmUgcHJvcGVydHkgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggYSBncm91cC48L3A+CjxwPjxiPk5vdGU6PC9iPiBCZWZvcmUgcHJvY2VlZGluZywgeW91IHNob3VsZCBlbnN1cmUgdGhhdCB0aGUgcHJlZmVyZW5jZXMgYXJlIHNldCBjb3JyZWN0bHkuICBUYWtlIHNvbWUgdGltZSBoZXJlLCB0aGVyZSBhcmUgbnVtZXJvdXMgb3B0aW9ucy48L3A+CjxwPlRoaXJkbHkgeW91IHNob3VsZCBjcmVhdGUgc29tZSB1c2Vycy4gIEFkZGluZyB1c2VycyBpcyBhIHR3byBzdGVwIHByb2Nlc3MuICBXaGVuIGNyZWF0aW5nIGEgdXNlciB5b3UgYXJlIGFza2VkIGZvciB0aGUgdXNlcm5hbWUvZW1haWwgYW5kIHBhc3N3b3JkLCBhbmQgYW4gZXhwaXJ5IGRhdGUgZm9yIHRoYXQgdXNlci4gIFlvdSB0aGVuIG11c3Qgc2VsZWN0IHRoZSBncm91cHMgdGhhdCB0aGF0IHVzZXIgaXMgYSBtZW1iZXIgb2YsIGFuZCBjbGljayAmcXVvdDtOZXh0JnF1b3Q7PC9wPgo8cD48ZW0+Tm90ZTogPC9lbT5UaGlzIGlzIGEgbGFib3VyIGludGVuc2l2ZSBhbmQgYm9yaW5nIHByb2Nlc3MsIGl0IGlzIGVhc2llciB0byBsZXQgdXNlcnMgcmVnaXN0ZXIgdGhlbXNlbHZlcyA8ZW0+KFNlZSB0aGUgU2VsZlJlZ2lzdHJhdGlvbiBNb2R1bGUpPC9lbT4sIGFuZCB0aGVuIHlvdSBjYW4gZWRpdCB0aGVpciBncm91cCBpbmZvcm1hdGlvbi4gIGJ1dCBmb3IgdGVzdGluZyBwdXJwb3NlcywgcGxlYXNlIGNyZWF0ZSBhdCBsZWFzdCBvbmUgdXNlcjwvcD4KPHA+TGFzdGx5LCBhZnRlciB0aGUgc3lzdGVtIGhhcyBkZXRlcm1pbmVkIGFsbCBvZiB0aGUgaW5mb3JtYXRpb24gZmllbGRzIHRvIGJlIHByZXNlbnRlZCBmb3IgdGhhdCB1c2VyLCB5b3UgYXJlIHByZXNlbnRlZCB3aXRoIGEgZm9ybSBhc2tpbmcgZm9yIGFsbCBvZiB0aGUgcmVxdWlyZWQgdXNlciBpbmZvcm1hdGlvbi4gIENvbXBsZXRlIHRoaXMgZm9ybSB0byBjb21wbGV0ZSB0aGUgdXNlciBhZGRpdGlvbjwvcD4KPHA+WW91IGFyZSBub3cgcmVhZHkgdG8gYWRkIHRoZSBmcm9udCBlbmQgZnVuY3Rpb25hbGl0eSB0byB5b3VyIHNpdGUuICBUaGlzIGlzIGFzIHNpbXBsZSBhcyBhZGRpbmcgdGhlICYjMTIzO01BTVN9IHRhZyB0byB5b3VyIHBhZ2Ugb3IgdGVtcGxhdGUuICBZb3UgbXVzdCBlbnN1cmUgdGhhdCB0aGlzIHBhZ2UgaXMgc2V0IHRvICZxdW90O25vdCBjYWNoZSZxdW90OyB3aGVuIGVkaXRpbmcgdGhlIGNvbnRlbnQgcGFnZShzKSB3aGVyZSB0aGUgbG9naW4gZm9ybSBpcyBkaXNwbGF5ZWQuICBJZiB5b3UgY2FsbCB0aGUgJiMxMjM7TUFNU30gdGFnIGZyb20gd2l0aGluIGEgcGFnZSB0ZW1wbGF0ZSwgeW91IG11c3QgZGlzYWJsZSBjYWNoaW5nIG9uIGFsbCBwYWdlcyB0aGF0IHVzZSB0aGF0IHRlbXBsYXRlLjwvcD4KPHA+QWRkaW5nIHByb3RlY3RlZCBjb250ZW50IHRvIHlvdXIgQ01TTVMgc2l0ZSBpcyBhcyBzaW1wbGUgYXMgY3JlYXRpbmcgbmV3IHBhZ2VzIG9mIHR5cGUgJnF1b3Q7UHJvdGVjdGVkIENvbnRlbnQmcXVvdDsgYW5kIHNlbGVjdGluZyB3aGljaCB1c2VyIGdyb3VwcyAob3IgYWxsKSB0aGF0IGFyZSBhbGxvd2VkIHRvIHZpZXcgdGhlIHBhZ2UuPC9wPgo8cD48ZW0+T3B0aW9uYWxseTwvZW0+IENyZWF0ZSBhbm90aGVyIG5ldyBjb250ZW50IHBhZ2Ugb2YgdHlwZSAnRXJyb3IgSGFuZGxlcicgYW5kIHNldCB0aGUgZXJyb3IgaGFuZGxlciB0byA0MDMgZXJyb3IuICBJbiB0aGUgY29udGVudCBhcmVhIG9mIHRoYXQgcGFnZSwgeW91IHNob3VsZCBjYWxsICYjMTIzO01BTVN9IHRvIGRpc3BsYXkgYSBsb2dpbiBmb3JtIG9uIHRoZSA0MDMgZXJyb3IgcGFnZS48L3A+Cgo8aDM+U3Ryb25nIFBhc3N3b3Jkczo8L2gzPgo8cD5UaGlzIG1vZHVsZSwgd2hlbiBmcmVzaGx5IGluc3RhbGxlZCAobm90IGFuIHVwZ3JhZGUpIGVuYWJsZXMgc3Ryb25nIHBhc3N3b3Jkcy4gIEF0IGEgbWluaW11bSBvbmUgdXBwZXIgY2FzZSBjaGFyYWN0ZXIgYW5kIG9uZSBkaWdpdCBhcmUgcmVxdWlyZWQgdG8gYmUgaW4gZXZlcnkgcGFzc3dvcmQuICBUaGUgc2l0ZSBhZG1pbmlzdHJhdG9yIGNhbiBhbHNvIHNwZWNpZnkgb3RoZXIgb3B0aW9uYWwgY2hhcmFjdGVycywgb25lIG9mIHdoaWNoIG11c3QgYmUgcHJlc2VudCBpbiBhbGwgcGFzc3dvcmRzLjwvcD4gIDwvZGl2PgogIDxkaXYgaWQ9InBhcmFtZXRlcnNfYyI+CiAgICA8aDM+UGFyYW1ldGVyczwvaDM+Cjx1bD4KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiBhY3Rpb24gPSA8L2I+ImRlZmF1bHQiCiAgICA8cD5BY3Rpb25zOjwvcD4KICAgIDx1bD4KICAgICAgPGxpPjxiPjxlbT5kZWZhdWx0PC9lbT48L2I+IC0gVGhlIGRlZmF1bHQgYWN0aW9uLiAgSWYgdGhlIHVzZXIgaXMgbG9nZ2VkIGluLCB0aGUgbG9nb3V0Zm9ybSBhY3Rpb24gd2lsbCBiZSBkaXNwbGF5ZWQuICBJZiB0aGUgdXNlciBpcyBub3QgbG9nZ2VkIGluIHRoZSBsb2dpbiBhY3Rpb24gd2lsbCBiZSBjYWxsZWQuCiAgICAgIDxsaT48Yj48ZW0+bG9naW48L2VtPjwvYj4gLSBEaXNwbGF5IHRoZSBsb2dpbiBmb3JtLjwvbGk+CiAgICAgIDxsaT48Yj48ZW0+bG9nb3V0Zm9ybTwvZW0+PC9iPiAtIERpc3BsYXkgb3V0cHV0IGFib3V0IHlvdXIgY3VycmVudCB1c2VybmFtZSwgYW5kIGFjdGlvbnMgdG8gY2hhbmdlIHlvdXIgc2V0dGluZ3MsIG9yIGxvZ291dC4gIElmIHRoZSB1c2VyIGlzIG5vdCBsb2dnZWQgaW4sIHRoaXMgYWN0aW9uIGRvZXMgbm90aGluZy48L2xpPgogICAgICA8bGk+PGI+PGVtPmNoYW5nZXNldHRpbmdzPC9lbT48L2I+IC0gRGlzcGxheSB0aGUgY2hhbmdlIHNldHRpbmdzIGZvcm0gZm9yIGxvZ2dlZCBpbiB1c2Vycy4gIElmIHRoZSB1c2VyIGlzIG5vdCBsb2dnZWQgaW4sIHRoaXMgYWN0aW9uIGRvZXMgbm90aGluZy48L2xpPgogICAgICA8bGk+PGI+PGVtPmZvcmdvdHB3PC9lbT48L2I+IC0gRGlzcGxheSB0aGUgZm9yZ290IHBhc3N3b3JkIGZvcm0uPC9saT4KICAgICAgICAgICAgPGxpPjxiPjxlbT5sb3N0dXNlcm5hbWU8L2VtPjwvYj4gLSBEaXNwbGF5IHRoZSBsb3N0dXNlcm5hbWUgZm9ybSAoaWYgdGhlIHN5c3RlbSBpcyBwcm9wZXJseSBzZXR1cCB0byBoYW5kbGUgbG9zdCB1c2VybmFtZSByZXF1ZXN0cywgYW5kIHRoZSB1c2VyIGlzIG5vdCBjdXJyZW50bHkgbG9nZ2VkIGluLjwvbGk+CiAgICAgIDxsaT48Yj48ZW0+cmVzZXRfc2Vzc2lvbjwvZW0+PC9iPiAtIFByb3ZpZGUgYSBqYXZhc2NyaXB0IGNvbnRyb2xsZWQgdGVtcGxhdGUgdG8gYWxsb3cgdGhlIG1hbnVhbCwgb3IgYXV0b21hdGljIHBpbmdpbmcgb2YgdGhlIHVzZXIgc2Vzc2lvbi4gIFRoaXMgdGVtcGxhdGUgY2FuIGJlIHVzZWQgdG8gcmVtaW5kIHRoZSB1c2VyIHRoYXQgaGlzIGxvZ2luIHNlc3Npb24gaXMgYWJvdXQgdG8gZXhwaXJlLCBhbmQgdG8gdHJpZ2dlciBpdHMgcmVzZXQuICBOb3JtYWxseSB0aGlzIG1ldGhvZCBpcyBub3QgcmVxdWlyZWQgYXMgYW55IHBhZ2UgdGhhdCBkaXNwbGF5cyB0aGUgRnJvbnRFbmRVc2VyIGNvbnRyb2xzIHdvdWxkIGhhbmRsZSB0aGlzLCBqdXN0IHJlcXVpcmluZyB0aGUgdXNlciB0byB2aWV3IGEgcGFnZSBvbiBhIHJlZ3VsYXIgYmFzaXMuICBIb3dldmVyLCBpZiB0aGVyZSBhcmUgcGFnZXMgd2l0aCBhbG90IG9mIGNvbnRlbnQgcmVxdWlyaW5nIGV4dGVuc2l2ZSByZWFkaW5nLCB0aGlzIG1heSBiZSBhIHVzZWZ1bCBzb2x1dGlvbi48L2xpPgogICAgICA8bGk+PGI+PGVtPnZpZXd1c2VyPC9lbT48L2I+IC0gRGlzcGxheSBhIHJlcG9ydCBmb3IgYSBzaW5nbGUgdXNlciwgcmVxdWlyZXMgdXNlIG9mIHRoZSB1aWQgcGFyYW1ldGVyLjwvbGk+CiAgICA8L3VsPgogIDwvbGk+CgogIDxsaT48Yj48ZW0+KG9wdGlvbmFsKTwvZW0+IHJldHVybnRvID0gPC9iPiJwYWdlIgogICAgPHA+VXNlZCB3aXRoIHRoZSBsb2dpbiwgbG9nb3V0LCBhbmQgY2hhbmdlc2V0dGluZ3MgZm9ybXMsIHRoaXMgcGFyYW1ldGVyIGNvbnRhaW5zIHRoZSBwYWdlIGlkIG9yIGFsaWFzIG9mIGEgcGFnZSB0byByZWRpcmVjdCB0bywgd2hlbiB0aGUgZm9ybSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgY29tcGxldGVkPC9wPgogICAgPHA+Tm90ZTogVGhhdCBvbiBsb2dpbiB0aGlzIGNhbiBiZSBvdmVycmlkZGVuIHVuZGVyIHNvbWUgY2lyY3Vtc3RhbmNlcy48L3A+CiAgPC9MST4KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiBvbmx5X2dyb3VwcyA9IDwvYj4iZ3JvdXAxLCBncm91cDIsIGdyb3VwMyIKICAgICA8cD5Vc2VkIHdpdGggdGhlIGxvZ2luIGZvcm1zLiAgQmFzaWNhbGx5IG9ubHkgYWxsb3dzIHVzZXJzIHRvIGxvZ2luIGlmIHRoZXkgYmVsb25nIHRvIHRoYXQgcGFydGljdWxhciBncm91cChzKS48L3A+CiAgPC9saT4KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiBsb3N0dW5fZ3JvdXAgPSA8L2I+Imdyb3VwIgogICAgIDxwPlVzZWQgd2l0aCB0aGUgbG9zdHVzZXJuYW1lIGZvcm0sIHRoaXMgZmVhdHVyZSBzcGVjaWZpZXMgdGhlIGZyb250ZW5kIHVzZXIgZ3JvdXAgdG8gYXNzdW1lIHRodCB1c2VycyBhcmUgbWVtYmVycyBvZi48L3A+CiAgPC9saT4KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiBub2NhcHRjaGEgPSA8L2I+IjEiCiAgICA8cD5Vc2VkIHdpdGggdGhlIGxvZ2luIGFuZCB2ZXJpZnkgZm9ybXMsIFRoaXMgd2lsbCBkaXNhYmxlIGNhcHRjaGEgb24gdGhlIGZvcm0uIEJ5IGRlZmF1bHQsIGlmIHRoZSBDYXB0Y2hhIG1vZHVsZSBpcyBpbnN0YWxsZWQsIHZhbGlkYXRpb24gb2YgYSBjYXB0Y2hhIGltYWdlIHdpbGwgYmUgcmVxdWlyZWQgZm9yIGxvZ2luLiAgVGhpcyBpcyBhIHNlY3VyaXR5IG1lYXN1cmUgaW50ZW50ZWQgdG8gcHJldmVudCBicnV0ZSBmb3JjZSBhdHRhY2tzLjwvcD4KICA8L2xpPgogIDxsaT48Yj48ZW0+KG9wdGlvbmFsKTwvZW0+IHVpZCA9IDwvYj5udWxsCiAgICA8cD5Vc2VkIHdpdGggdGhlIHZpZXd1c2VyIGFjdGlvbi4gIFRoaXMgcGFyYW1ldGVyIGlzIHJlcXVpcmVkIHRvIHNwZWNpZnkgd2hpY2ggdXNlciB0byB2aWV3IHRoZSBkZXRhaWxzIG9mLjwvcD4KICA8L2xpPgogIDxsaT48Yj48ZW0+KG9wdGlvbmFsKTwvZW0+IGlubGluZSA9IDwvYj50cnVlCiAgICA8cD5Vc2VkIHdpdGggdGhlIGxvZ2luIGFjdGlvbiwgdGhpcyBwYXJhbWV0ZXIgaW5kaWNhdGVzIHRoYXQgdGhlIHJlc3VsdCBvZiB0aGUgZm9ybSBzdWJtaXNzaW9uIHNob3VsZCByZXBsYWNlIHRoZSBvcmlnaW5hbCBpbnB1dCB0YWcuPC9wPgogIDwvbGk+CiAgPGxpPjxiPjxlbT4ob3B0aW9uYWwpPC9lbT4gbG9naW50ZW1wbGF0ZSA9IDwvYj5zdHJpbmcKICAgIDxwPlRoaXMgcGFyYW1ldGVyIGFsbG93cyBvdmVycmlkaW5nIHRoZSBkZWZhdWx0IGxvZ2luIGZvcm0gdGVtcGxhdGUgd2l0aCB0aGUgbmFtZSBvZiBhIGRpZmZlcmVudCBvbmUuPC9wPgogIDwvbGk+CiAgPGxpPjxiPjxlbT4ob3B0aW9uYWwpPC9lbT4gbG9nb3V0dGVtcGxhdGUgPSA8L2I+c3RyaW5nCiAgICA8cD5UaGlzIHBhcmFtZXRlciBhbGxvd3Mgb3ZlcnJpZGluZyB0aGUgZGVmYXVsdCBsb2dvdXQgdGVtcGxhdGUgd2l0aCB0aGUgbmFtZSBvZiBhIGRpZmZlcmVudCBvbmUuPC9wPgogIDwvbGk+CiAgPGxpPjxiPjxlbT4ob3B0aW9uYWwpPC9lbT4gY2hhbmdlc2V0dGluZ3N0ZW1wbGF0ZSA9IDwvYj5zdHJpbmcKICAgIDxwPlRoaXMgcGFyYW1ldGVyIGFsbG93cyBvdmVycmlkaW5nIHRoZSBkZWZhdWx0IGNoYW5nZXNldHRpbmdzIGZvcm0gdGVtcGxhdGUgd2l0aCB0aGUgbmFtZSBvZiBhIGRpZmZlcmVudCBvbmUuPC9wPgogIDwvbGk+CiAgPGxpPjxiPjxlbT4ob3B0aW9uYWwpPC9lbT4gZm9yZ290cHd0ZW1wbGF0ZSA9IDwvYj5zdHJpbmcKICAgIDxwPlRoaXMgcGFyYW1ldGVyIGFsbG93cyBvdmVycmlkaW5nIHRoZSBkZWZhdWx0IGZvcmdvdCBwYXNzd29yZCBmb3JtIHRlbXBsYXRlIHdpdGggdGhlIG5hbWUgb2YgYSBkaWZmZXJlbnQgb25lLjwvcD4KICA8L2xpPgogIDxsaT48Yj48ZW0+KG9wdGlvbmFsKTwvZW0+IGxvc3R1bnRlbXBsYXRlID0gPC9iPnN0cmluZwogICAgPHA+VGhpcyBwYXJhbWV0ZXIgYWxsb3dzIG92ZXJyaWRpbmcgdGhlIGxvc3QgdXNlcm5hbWUgZm9ybSB0ZW1wbGF0ZSB3aXRoIHRoZSBuYW1lIG9mIGEgZGlmZmVyZW50IG9uZS48L3A+CiAgPC9saT4KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiB2aWV3dXNlcnRlbXBsYXRlID0gPC9iPnN0cmluZwogICAgPHA+VGhpcyBwYXJhbWV0ZXIgYWxsb3dzIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHQgdmlld3VzZXIgdGVtcGxhdGUgd2l0aCB0aGUgbmFtZSBvZiBhIGRpZmZlcmVudCBvbmUuPC9wPgogIDwvbGk+CiAgPGxpPjxiPjxlbT4ob3B0aW9uYWwpPC9lbT4gYWZ0ZXJ2ZXJpZnl0ZW1wbGF0ZSA9IDwvYj5zdHJpbmcKICAgIDxwPlRoaXMgcGFyYW1ldGVyIGFsbG93cyBvdmVycmlkaW5nIHRoZSBkZWZhdWx0IGFmdGVyIHZlcmlmaWNhdGlvbiB0ZW1wbGF0ZSB3aXRoIHRoZSBuYW1lIG9mIGEgZGlmZmVyZW50IG9uZS48L3A+CiAgPC9saT4KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiByZXNldHNlc3Npb250ZW1wbGF0ZSA9IDwvYj5zdHJpbmcKICAgIDxwPlRoaXMgcGFyYW1ldGVyIGFsbG93cyBvdmVycmlkaW5nIHRoZSBkZWZhdWx0IHJlc2V0IHNlc3Npb24gZm9ybSB0ZW1wbGF0ZSB3aXRoIHRoZSBuYW1lIG9mIGEgZGlmZmVyZW50IG9uZS48L3A+CiAgPC9saT4KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiB2ZXJpZnlmb3JtdGVtcGxhdGUgPSA8L2I+c3RyaW5nCiAgICA8cD5UaGlzIHBhcmFtZXRlciBhbGxvd3Mgb3ZlcnJpZGluZyB0aGUgZGVmYXVsdCB2ZXJpZmljYXRpb24gZm9ybSB0ZW1wbGF0ZSB3aXRoIHRoZSBuYW1lIG9mIGEgZGlmZmVyZW50IG9uZS48L3A+CiAgPC9saT4KPC91bD4KPHA+PHN0cm9uZz5UaXA6PC9zdHJvbmc+IFlvdSBjYW4gdXNlIHRoZSAmIzEyMzt4dF9tb2R1bGVfaGludH0gcGx1Z2luIGZyb20gQ01TRXh0LCBvciB0aGUgJiMxMjM7Y21zX21vZHVsZV9oaW50fSBwbHVnaW4gaW4gQ01TTVMgMi4wIHRvIHNldCB0aGVzZSBwYXJhbWV0ZXJzIG9uIGEgZ2xvYmFsLCBwZXItcGFnZS10ZW1wbGF0ZSwgb3IgcGVyLXBhZ2UgYmFzaXMgd2l0aG91dCBoYXZpbmcgdG8gYWRqdXN0IGV2ZXJ5IGNhbGwsIGFuZCB3aGlsZSBzdGlsbCBtYWludGFpbmluZyBwcmV0dHkgVVJMJ3MuPC9wPgoKPGgzPlVzaW5nIERpZmZlcmVudCBUZW1wbGF0ZXMuPC9oMz4KPHA+SXQgaXMgcG9zc2libGUgdG8gc3BlY2lmeSBkaWZmZXJlbnQgdGVtcGxhdGVzIGZvciBtYW55IG9mIHRoZSBNQU1TIG1vZHVsZSB0ZW1wbGF0ZXMuICBJdCBpcyBhbHNvIGZsZXhpYmxlLiAgWW91IGNhbiB1c2UgZ2xvYmFsIGNvbnRlbnQgYmxvY2tzLCBvciBmaWxlIGJhc2VkIHRlbXBsYXRlcyBvcgogYW55IG90aGVyIHNtYXJ0eSByZXNvdXJjZSBhcyBhIHRlbXBsYXRlLjwvcD4KPHVsPgogIDxsaT5UZW1wbGF0ZSBuYW1lcyBlbmRpbmcgd2l0aCAudHBsCiAgICA8cD5JZiB0aGUgc3BlY2lmaWVkIHRlbXBsYXRlIG5hbWUgaXMgbm90IGEgc21hcnR5IHJlc291cmNlLCBidXQgZW5kcyB3aXRoIHRoZSBleHRlbnNpb24gPGNvZGU+LnRwbDwvY29kZT4sIHRoZW4gTUFNUyAoYWN0dWFsbHkgQ01TRXh0KSB3aWxsIGFzc3VtZSB0aGF0IHlvdSB3YW50IGEgZmlsZSB0ZW1wbGF0ZSBmcm9tIHRoZSBtb2R1bGUgZGlyZWN0b3J5LCBvciBmcm9tIHRoZSBtb2R1bGVfY3VzdG9tIGRpcmVjdG9yeSA8ZW0+KHNlZSA8YSBocmVmPSJodHRwOi8vZG9jcy5jbXNtYWRlc2ltcGxlLm9yZyI+aHR0cDovL2RvY3MuY21zbWFkZXNpbXBsZS5vcmc8L2E+IGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBtb2R1bGVfY3VzdG9tIHN0dWZmKTwvZW0+LgogIDwvbGk+CiAgPGxpPmdsb2JhbGNvbnRlbnQ6Z2NiX25hbWUKICAgIDxwPlNwZWNpZnlpbmcgYSB0ZW1wbGF0ZSBpbiB0aGlzIHN5bnRheCBhbGxvd3MgeW91IHRvIHVzZSBhIGdsb2JhbCBjb250ZW50IGJsb2NrIGFzIGFzIHJlcGxhY2VtZW50IHRlbXBsYXRlLjwvcD4KICA8L2xpPgogIDxsaT50ZW1wbGF0ZTpnY2JfbmFtZQogICAgPHA+U3BlY2lmeWluZyBhIHRlbXBsYXRlIGluIHRoaXMgc3ludGF4IGFsbG93cyB5b3UgdG8gdXNlIGEgcGFnZSB0ZW1wbGF0ZSBhcyBhcyByZXBsYWNlbWVudCB0ZW1wbGF0ZS48L3A+CiAgPC9saT4KICA8bGk+Y21zX3RlbXBsYXRlOm5hbWUKICAgIDxwPlNwZWNpZnlpbmcgYSB0ZW1wbGF0ZSBpbiB0aGlzIHN5bnRheCBhbGxvd3MgeW91IHRvIHVzZSBhIHRlbXBsYXRlIGZyb20gd2l0aGluIERlc2lnbiBNYW5hZ2VyIGFzIGFzIHJlcGxhY2VtZW50IHRlbXBsYXRlLjwvcD4KICA8L2xpPgogIDxsaT5maWxlOmZpbGVuYW1lLnRwbAogICAgPHA+VXNpbmcgdGhpcyBzeW50YXggYWxsb3dzIHlvdSB0byB1c2UgYSBmaWxlIGJhc2VkIHRlbXBsYXRlIGZyb20gd2l0aGluIHRoZSBzbWFydHkgdGVtcGxhdGVzIGRpciA8ZW0+KHVzdWFsbHkgdG1wL3RlbXBsYXRlcyk8L2VtPi4KICA8L2xpPgo8L3VsPgo8cD5UaGVzZSBtZXRob2RzIGNhbiBiZSB1c2VkIHdpdGggdGhlIGxvZ2ludGVtcGxhdGUsIGxvZ291dHRlbXBsYXRlLCBjaGFuZ2VzZXR0aW5nc3RlbXBsYXRlLCBhbmQgZm9yZ290cHd0ZW1wbGF0ZSBwYXJhbWV0ZXJzLjwvcD4KPHA+Tm90ZTogVGhlc2UgcGFyYW1ldGVycyBtYXkgbm90IGJlIHBhc3NlZCB0byB0aGUgdmFyaW91cyBmb3JtcyBmcm9tIHRoZSBwcmltYXJ5ICYjMTIzO01BTVN9IGNhbGwuICBJbnN0ZWFkLCB5b3Ugc2hvdWxkIHVzZSB0aGUgJiMxMjM7eHRfbW9kdWxlX2hpbnR9IHRhZyBvbiB0aGUgcGFnZSB3aGVyZSB0aGUgdmFyaW91cyBmb3JtcyBvciB2aWV3cyB3aWxsIGJlIGRpc3BsYXllZC4gaS5lOgo8cHJlPjxjb2RlPiYjMTIzO3h0X21vZHVsZV9oaW50IG1vZHVsZSA9IE1BTVMgY2hhbmdlc2V0dGluZ3N0ZW1wbGF0ZSA9ICdnbG9iYWxfY29udGVudDpteWNoYW5nZXNldHRpbmdzJ308L2NvZGU+PC9wcmU+CiAgLjwvcD4gIDwvZGl2PgogIDxkaXYgaWQ9InNtYXJ0eV9jIj4KICAgIDxoMz5TbWFydHkgUGx1Z2luczo8L2gzPgo8aDQ+JiMxMjM7bWFtc191c2VyX29wdGlvbnN9PC9oND4KPHA+VGhpcyBmdW5jdGlvbiBwbHVnaW4gcHJvdmlkZXMgYSBjb252ZW5pZW50IG1ldGhvZCB0byBnZW5lcmF0ZSBvcHRpb25zIGZvciBhIHNlbGVjdCBlbGVtZW50IHdpdGggdXNlcnMgZnJvbSB0aGUgTUFNUyBtb2R1bGUuICBUaGlzIGlzIHVzZWZ1bCBpbiBhZG1pbiBpbnRlcmZhY2VzLjwvcD4KPGg1PlVzYWdlOjwvaDU+CjxwcmU+PGNvZGU+JiMxMjM7bWFtc191c2VyX29wdGlvbnMgW2dyb3VwPXN0cmluZ10gW25vdGRpc2FibGVkPWJvb2xdIFtub3RleHBpcmVkPWJvb2xdIFt1c2VfdXNlcmlkcz1ib29sXSBbc2VsZWN0ZWQgPSBtaXhlZF19PC9jb2RlPjwvcHJlPgo8aDU+UGFyYW1ldGVyczo8L2g1Pgo8dWw+CiAgICA8bGk+PGNvZGU+Z3JvdXA9c3RyaW5nPC9jb2RlPiAtIERpc3BsYXkgb25seSB1c2VycyB0aGF0IGFyZSBtZW1iZXJzIG9mIHRoZSBuYW1lZCBncm91cC48L2xpPgogICAgPGxpPjxjb2RlPm5vdGV4cGlyZWQ9Ym9vbDwvY29kZT4gLSBEaXNwbGF5IG9ubHkgdXNlcnMgdGhhdCBhcmUgbm90IGV4cGlyZWQuPC9saT4KICAgIDxsaT48Y29kZT5ub3RkaXNhYmxlZD1ib29sPC9jb2RlPiAtIERpc3BsYXkgb25seSB1c2VycyB0aGF0IGFyZXIgbm90IGRpc2FibGVkLjwvbGk+CiAgICA8bGk+PGNvZGU+dXNlX3VzZXJpZHM9Ym9vbDwvY29kZT4gLSAoZGVmYXVsdCBmYWxzZSkgVGhlIHZhbHVlcyBmb3IgZWFjaCBvcHRpb24gd2lsbCBiZSB0aGUgdXNlcmlkLCBub3QgdGhlIHVzZXJuYW1lLjwvbGk+CiAgICA8bGk+PGNvZGU+c2VsZWN0ZWQgPSBtaXhlZDwvY29kZT4gLSBUaGUgdmFsdWUgb2YgdGhlIG9wdGlvbiB0byBzZWxlY3QuICBJZiB1c2VfdXNlcmlkcyBpcyBlbmFibGVkLCB0aGlzIHNob3VsZCBiZSBhbiBpbnRlZ2VyIHVpZC4gIE90aGVyd2lzZSB0aGlzIHNob3VsZCBiZSBhIHVzZXJuYW1lIHN0cmluZy48L2xpPgo8L3VsPgoKPGhyPgoKPGg0PiYjMTIzO21hbXNfcHJvdGVjdH08L2g0Pgo8cD5UaGUgPHN0cm9uZz5tYW1zX3Byb3RlY3Q8L3N0cm9uZz4gYmxvY2sgcGx1Z2luIHByb3ZpZGVzIGEgY29udmVuaWVudCBtZXRob2QgdG8gaGlkZSBzb21lIGNvbnRlbnQgZnJvbSB1c2VycyBvbiB3aGF0IGlzIG5vcm1hbGx5IGEgcHVibGljIHBhZ2UuPC9wPgoKPGRpdiBjbGFzcz0id2FybmluZyI+PHA+PHN0cm9uZyBzdHlsZT0iY29sb3I6IHJlZDsiPldhcm5pbmc6PC9zdHJvbmc+PC9wPgogIDxwPiBUaGlzIHBsdWdpbiBjYW5ub3QgYmUgY29uc2lkZXJlZCAxMDAlIHNlY3VyZSwgYW5kIHNob3VsZCBub3QgYXQgYW55IHRpbWUgYmUgdXNlZCBpbiB0aGUgcGFnZSB0ZW1wbGF0ZSB0byBwcm90ZWN0IHRoZSBkZWZhdWx0ICYjMTIzO2NvbnRlbnR9IHRhZy4gIFRoZXJlIGFyZSB3YXlzIHRvIGFjY2VzcyB0aGUgZGVmYXVsdCBjb250ZW50IHByb3BlcnR5IG9mIGEgcGFnZSwgb3IgdG8gY2FsbCBhIG1vZHVsZSBhY3Rpb24gd2l0aG91dCBwcm9jZXNzaW5nIHRoZSBwYWdlIHRlbXBsYXRlLiAgSWYgeW91IG5lZWQgdG8gcHJvdGVjdCB0aGUgY29udGVudCBhbmQgZW5zdXJlIHRoYXQgbm8gdW5hdXRob3JpemVkIHVzZXJzIGFjY2VzcyB0aGUgcGFnZSwgdXNlIHRoZSBwcm90ZWN0ZWQgcGFnZSBjb250ZW50IHR5cGUgcHJvdmlkZWQgYnkgdGhpcyBtb2R1bGUuPC9wPgo8L2Rpdj4KPGg1PlVzYWdlOjwvaDU+CjxwcmU+PGNvZGU+JiMxMjM7bWFtc19wcm90ZWN0IGdyb3Vwcz0iZ3JvdXAxLGdyb3VwMixncm9wMyJ9CiAgJmx0O3AmZ3Q7U21hcnR5IGNvbnRlbnQgdGhhdCBzaG91bGQgb25seSBiZSB2aXNpYmxlIHRvIG1lbWJlcnMgb2YgdGhvc2UgZ3JvdXBzLiZsdDsvcCZndDsKJiMxMjM7L21hbXNfcHJvdGVjdH08L2NvZGU+PC9wcmU+CjxkaXYgY2xhc3M9ImluZm9ybWF0aW9uIj4KICA8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFRoZSB1c2VyIG11c3QgYmUgYSBtZW1iZXIgb2YgYXQgbGVhc3Qgb25lIG9mIHRoZSBzcGVjaWZpZWQgZ3JvdXBzLiAgVGhlIGdyb3VwIG5hbWVzIGFyZSBjYXNlIHNlbnNpdGl2ZS48L3A+CjwvZGl2Pgo8aHI+Cgo8aDQ+VGhlIG1hbXNfc21hcnR5IGNsYXNzPC9oND4KPHA+VGhlIDxzdHJvbmc+bWFtc19zbWFydHk8L3N0cm9uZz4gY2xhc3MgcHJvdmlkZXMgc29tZSBmdW5jdGlvbnMgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgZGF0YWJhc2UgYW5kIHB1bGwgYW5kIHRlc3QgZm9yIHVzZXIgaW5mb3JtYXRpb24uPC9wPgo8cD5Tb21lIGludGVyYWN0aW9uIHdpdGggdGhlIE1BTVMgbW9kdWxlIGRhdGFiYXNlIGlzIHBvc3NpYmxlIHdpdGggc21hcnR5IGFuZCB0aGUgbWFtc19zbWFydHkgY2xhc3MuPC9wPgoKPGg1PkZ1bmN0aW9uczo8L2g1Pgo8dWw+CjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfY3VycmVudF91c2VyaWQoKX08L2NvZGU+PC9zdHJvbmc+CjxwPlRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgaW50ZWdlciB1c2VyIGlkIGlmIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIgKGlmIGFueSkuPC9wPgo8cD5FeGFtcGxlOjwvcD4KPHByZT48Y29kZT4mIzEyMzskdWlkID0gbWFtc19zbWFydHk6OmdldF9jdXJyZW50X3VzZXJpZCgpfTwvY29kZT48L3ByZT4KPC9saT4KCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfY3VycmVudF91c2VybmFtZSgpfTwvY29kZT48L3N0cm9uZz4KPHA+VGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB1c2VyIG5hbWUgaWYgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlciAoaWYgYW55KS48L3A+CjxwPkV4YW1wbGU6PC9wPgo8cHJlPjxjb2RlPiYjMTIzOyR1c2VybmFtZSA9IG1hbXNfc21hcnR5OjpnZXRfY3VycmVudF91c2VybmFtZSgpfTwvY29kZT48L3ByZT4KPC9saT4KCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfdXNlcmlkKCR1c2VybmFtZSl9PC9jb2RlPjwvc3Ryb25nPgo8cD5UaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIHJldHVybiB0aGUgaW50ZWdlciB1c2VyIGlkIGdpdmVuIGEgdXNlcm5hbWUuPC9wPgo8cD5FeGFtcGxlOjwvcD4KPHByZT48Y29kZT4mIzEyMzskdWlkID0gbWFtc19zbWFydHk6OmdldF91c2VyaWQoJHVzZXJuYW1lKX08L2NvZGU+PC9wcmU+CjwvbGk+Cgo8bGk+PHN0cm9uZz48Y29kZT4mIzEyMzttYW1zX3NtYXJ0eTo6Z2V0X3VzZXJuYW1lKFskdWlkXSl9PC9jb2RlPjwvc3Ryb25nPgo8cD5UaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIHJldHVybiB0aGUgc3RyaW5nIHVzZXJuYW1lIGdpdmVuIGFuIGludGVnZXIgdWlkLiAgSWYgbm8gdWlkIGlzIHNwZWNpZmllZCwgdGhlIGN1cnJlbnQgbG9nZ2VkIGluIHVpZCBpcyBhc3N1bWVkLjwvcD4KPHA+RXhhbXBsZTo8L3A+CjxwcmU+PGNvZGU+JiMxMjM7bWFtc19zbWFydHk6OmdldF91c2VybmFtZSgkdGhlX3VpZCl9PC9jb2RlPjwvcHJlPgo8L2xpPgoKPGxpPjxzdHJvbmc+PGNvZGU+JiMxMjM7bWFtc19zbWFydHk6OmdldF9lbWFpbChbJHVpZF0pfTwvY29kZT48L3N0cm9uZz4KPHA+VGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byByZXR1cm4gYW4gZW1haWwgYWRkZXJlc3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBpbnRlZ2VyIHVpZC4gIElmIG5vIHVpZCBpcyBzcGVjaWZpZWQsIHRoZSBjdXJyZW50IGxvZ2dlZCBpbiB1aWQgaXMgYXNzdW1lZC48L3A+CjxwPkV4YW1wbGU6PC9wPgo8cHJlPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfZW1haWwoJHRoZV91aWQpfTwvY29kZT48L3ByZT4KPC9saT4KCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfdXNlcmluZm8oWyR1aWRdKX08L2NvZGU+PC9zdHJvbmc+CjxwPlRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gcmV0dXJuIHRoZSB1c2VyIGluZm9ybWF0aW9uIGZvciBhIHNpbmdsZSB1c2VyLiAgSWYgbm8gdWlkIGlzIHNwZWNpZmllZCwgdGhlIGN1cnJlbnQgbG9nZ2VkIGluIHVpZCBpcyBhc3N1bWVkLjwvcD4KPHA+RXhhbXBsZTo8L3A+CjxwcmU+PGNvZGU+JiMxMjM7JHVpbmZvID0gbWFtc19zbWFydHk6OmdldF91c2VyaW5mbygkc29tZXRoaW5nLnVzZXJpZCl9PGJyIC8+JiMxMjM7JHVpbmZvfEBwcmludF9yfTwvY29kZT48L3ByZT4KPC9saT4KCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfdXNlcnNfYnlfZ3JvdXBuYW1lKCRncm91cG5hbWVbLCRmb3JfbGlzdF0pfTwvY29kZT48L3N0cm9uZz4KPHA+VGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBleHRyYWN0IGFuIGFycmF5IG9mIHVzZXJuYW1lcyBhbmQgdXNlcmlkcyBmb3IgYWxsIHVzZXJzIHRoYXQgYmVsb25nIHRvIHRoZSBzcGVjaWZpZWQgZ3JvdXAuPC9wPgo8cD5UaGUgZ3JvdXBuYW1lIHBhcmFtZXRlciBtdXN0IGJlIGEgc2luZ2xlIHN0cmluZyBncm91cG5hbWUuPC9wPgo8cD5UaGUgZm9yX2xpc3QgcGFyYW1ldGVyIGlzIGEgYm9vbGVhbiB0aGF0IGluZGljYXRlcyB0aGF0IHRoZSBvdXRwdXQgc2hvdWxkIGJlIHN1aXRhYmxlIGZvciB1c2UgaW4gYSBzZWxlY3QgbGlzdC48L3A+CjxwPkV4YW1wbGU6PC9wPgo8cHJlPjxjb2RlPiYjMTIzOyRteW1lbWJlcnMgPSBtYW1zX3NtYXJ0eTo6Z2V0X3VzZXJzX2J5X2dyb3VwbmFtZSgnbWVtYmVycycpfTxiciAvPiYjMTIzOyRteW1lbWJlcnN8QHByaW50X3J9PC9jb2RlPjwvcHJlPgo8L2xpPgoKPGxpPjxzdHJvbmc+PGNvZGU+JiMxMjM7bWFtc19zbWFydHk6OmdldF9ncm91cF9tZW1iZXJsaXN0KCRnaWQpfTwvY29kZT48L3N0cm9uZz4KICA8cD5UaGlzIGZ1bmN0aW9uIHJldHVybnMgYW4gYXJyYXkgb2YgdWlkIGFuZCB1c2VybmFtZXMgZm9yIGFsbCB1c2VycyB0aGF0IGFyZSBtZW1iZXJzIG9mIHRoZSBzcGVjaWZpZWQgZ3JvdXAgKGJ5IGdyb3VwIGlkKS48L3A+CiAgPHA+RXhhbXBsZTo8L3A+CiAgPHByZT48Y29kZT4mIzEyMztodG1sX29wdGlvbnMgb3B0aW9ucyA9IG1hbXNfc21hcnR5OjpnZXRfZ3JvdXBfbWVtYmVybGlzdCgkZ2lkKSBzZWxlY3RlZD0kdWlkfTwvY29kZT48L3ByZT4KPC9saT4KCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfdXNlcl9leHBpcnkoWyR1aWRdKX08L2NvZGU+PC9zdHJvbmc+CjxwPlRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgdW5peCB0aW1lc3RhbXAgdGhhdCB0aGUgc3BlY2lmaWVkIHVpZCBhY2NvdW50IGV4cGlyZXMuICBUaGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gZmFsc2UgaWYgdGhlIHVpZCBjYW5ub3QgYmUgZm91bmQgb3Igc29tZSBvdGhlciBlcnJvciBvY2N1cnJlZC48L3A+CjxwPkV4YW1wbGU6PC9wPgo8cHJlPjxjb2RlPiYjMTIzOyRleHBpcnkgPSBtYW1zX3NtYXJ0eTo6Z2V0X3VzZXJfZXhwaXJ5KDI1KX08YnIgLz4mIzEyMzskZXhwaXJ5fGNtc19kYXRlX2Zvcm1hdH08L2NvZGU+PC9wcmU+CjwvbGk+Cgo8bGk+PHN0cm9uZz48Y29kZT4mIzEyMzttYW1zX3NtYXJ0eTo6dXNlcl9leHBpcmVkKCR1aWQpfTwvY29kZT48L3N0cm9uZz4KPHA+VGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdldGhlciB0aGUgc3BlY2lmaWVkIHVzZXIgYWNjb3VudCBoYXMgZXhwaXJlZC4gIFRoZSBtZXRob2Qgd2lsbCBhbHNvIHJldHVybiBmYWxzZSBpZiB0aGUgdWlkIGNhbm5vdCBiZSBmb3VuZCBvciBzb21lIG90aGVyIGVycm9yIG9jY3VycmVkLjwvcD4KPHA+RXhhbXBsZTo8L3A+CjxwcmU+PGNvZGU+JiMxMjM7JGV4cGlyZWQgPSBtYW1zX3NtYXJ0eTo6dXNlcl9leHBpcmVkKDI1KX08YnIgLz4mIzEyMztpZiAkZXhwaXJlZH1VSUQgMjUgY2FuIG5vIGxvbmdlciBsb2dpbiB0byB0aGUgc3lzdGVtJiMxMjM7L2lmfTwvY29kZT48L3ByZT4KPC9saT4KCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfdXNlcl9wcm9wZXJ0aWVzKCR1aWQpfTwvY29kZT48L3N0cm9uZz4KPHA+VGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBleHRyYWN0IGEgbGlzdCBvZiBwcm9wZXJ0aWVzIGZvciB0aGUgc3BlY2lmaWVkIHVzZXIuICBJZiB0aGUgdWlkIGlzIG5vdCBzcGVjaWZpZWQgdGhlIGN1cnJlbnQgbG9nZ2VkIGluIHVpZCBpcyB1c2VkLjwvcD4KPHA+RXhhbXBsZTo8L3A+CjxwcmU+PGNvZGU+JiMxMjM7JHVzZXJwcm9wcyA9IG1hbXNfc21hcnR5OjpnZXRfdXNlcl9wcm9wZXJ0aWVzKDUpfTxiciAvPiYjMTIzOyR1c2VycHJvcHN8QHByaW50X3J9PC9jb2RlPjwvcHJlPgo8L2xpPgoKPGxpPjxzdHJvbmc+PGNvZGU+JiMxMjM7bWFtc19zbWFydHk6OmdldF91c2VyX3Byb3BlcnR5KCRwcm9wZXJ0eSxbJHVpZF0pfTwvY29kZT48L3N0cm9uZz4KICA8cD5UaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHZhbHVlIG9mIGEgc2luZ2xlIHByb3BlcnR5IGZvciB0aGUgc3BlY2lmaWVkIHVpZC4gIElmIHRoZSB1aWQgcGFyYW1ldGVyIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBjdXJyZW50IGxvZ2dlZCBpbiB1aWQgaXMgdXNlZC48L3A+CiAgPHA+RXhhbXBsZTo8L3A+CiAgPHByZT48Y29kZT4mIzEyMzttYW1zX3NtYXJ0eTo6Z2V0X3VzZXJfcHJvcGVydHkoJ2Z1bGxuYW1lJyw1KX08L2NvZGU+PC9wcmU+CjwvbGk+Cgo8bGk+PHN0cm9uZz48Y29kZT4mIzEyMzttYW1zX3NtYXJ0eTo6Z2V0X2Ryb3Bkb3duX3RleHQoJHByb3BuYW1lLCRwcm9wdmFsdWUpfTwvY29kZT48L3N0cm9uZz4KICA8cD5UaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHRleHQgc3BlY2lmaWVkIGZvciBhIHBhcnRpY3VsYXIgb3B0aW9uIHZhbHVlIGZvciBhIHNwZWNpZmllZCBkcm9wZG93biBwcm9wZXJ0eS48L3A+CiAgPHA+RXhhbXBsZTo8L3A+CiAgPHByZT48Y29kZT4mIzEyMzttYW1zX3NtYXJ0eTo6Z2V0X2Ryb3Bkb3duX3RleHQoJ2FnZV9yYW5nZScsJG9uZXByb3B2YWx1ZSl9PC9jb2RlPjwvcHJlPgo8L2xpPgoKPGxpPjxzdHJvbmc+PGNvZGU+JiMxMjM7bWFtc19zbWFydHk6OmdldF9tdWx0aXNlbGVjdF90ZXh0KCRwcm9wbmFtZSwkcHJvcHZhbHVlKX08L2NvZGU+PC9zdHJvbmc+CiAgPHA+VGhpcyBmdW5jdGlvbiByZXR1cm5zIGFuIGFycmF5IG9mIG9wdGlvbiB0ZXh0cyBjb3JyZXNwb25kaW5nIHRvIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2Ygb3B0aW9uIHZhbHVlcy48L3A+CiAgPHA+RXhhbXBsZTo8L3A+CiAgPHByZT48Y29kZT4mIzEyMzskZmF2b3JpdGVfZm9vZHMgPSBtYW1zX3NtYXJ0eTo6Z2V0X211bHRpc2VsZWN0X3RleHQoJ2Zhdm9yaXRlX2Zvb2RzJywkb25lcHJvcHZhbHVlKX08YnIgLz4mIzEyMzskZmF2b3JpdGVfZm9vZHN8QHByaW50X3J9PC9jb2RlPjwvcHJlPgo8L2xpPgoKPGxpPjxzdHJvbmc+PGNvZGU+JiMxMjM7bWFtc19zbWFydHk6OmdldF9ncm91cF9saXN0KCl9PC9jb2RlPjwvc3Ryb25nPgogIDxwPlRoaXMgZnVuY3Rpb24gcmV0dXJucyBhbiBhcnJheSBvZiBNQU1TIGdyb3VwcyB0aGF0IGlzIHN1aXRhYmxlIGZvciB1c2UgaW4gYSBkcm9wZG93bi48L3A+CiAgPHA+RXhhbXBsZTo8L3A+CjxwcmU+PGNvZGU+Jmx0O3NlbGVjdCBpZD0iZ3JvdXAiJmd0OyYjMTIzO2h0bWxfb3B0aW9ucyBvcHRpb25zID0gbWFtc19zbWFydHk6OmdldF9ncm91cF9saXN0KCl9Jmx0Oy9zZWxlY3QmZ3Q7PC9jb2RlPjwvcHJlPgo8L2xpPgoKPGxpPjxzdHJvbmc+PGNvZGU+JiMxMjM7bWFtc19zbWFydHk6OmdldF91c2VyX2dyb3VwcyhbJHVpZF0pfTwvY29kZT48L3N0cm9uZz4KICA8cD5UaGlzIGZ1bmN0aW9uIHJldHVybnMgYW4gYXJyYXkgb2YgTUFNUyBncm91cHMgdGhhdCB0aGlzIHVzZXIgYmVsb25ncyB0byAoaWYgYW55KS4gIFRoZSBvdXRwdXQgaXMgYW4gYXJyYXkgc3VpdGFibGUgZm9yIHVzZSBpbiBhIHNlbGVjdCBsaXN0ICh0aGUga2V5IGlzIHRoZSBncm91cGlkLCB2YWx1ZSBpcyB0aGUgZ3JvdXAgbmFtZSkuPC9wPgogIDxwPkV4YW1wbGU6PC9wPgo8cHJlPjxjb2RlPiYjMTIzOyRteWdyb3VwcyA9IG1hbXNfc21hcnR5OjpnZXRfdXNlcl9ncm91cHMoKX0KJiMxMjM7JG15Z3JvdXBzfEBwcmludF9yfTwvY29kZT48L3ByZT4KPC9saT4KCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpwcmVsb2FkX3VzZXJzKCR1aWRfbGlzdFssJGRlZXAgPSBmYWxzZV0pfTwvY29kZT48L3N0cm9uZz4KICA8cD5UaGlzIGZ1bmN0aW9uIHdpbGwgcHJlbG9hZCBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCB1c2Vycy4gIEl0IGRvZXMgbm90IHJldHVybiBhbnkgb3V0cHV0LjwvcD4KICA8cD5FeGFtcGxlOjwvcD4KPHByZT48Y29kZT4mIzEyMzskbGlzdCA9IFsgNSwgMTAsIDExLCAxMywgMTggXX0KJiMxMjM7bWFtc19zbWFydHk6OnByZWxvYWRfdXNlcnMoJGxpc3QpfTwvY29kZT48L3ByZT4KPC9saT4KCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5Ojppc191c2VyX21lbWJlcm9mKCRncm91cHNbLCR1aWRdKX08L2NvZGU+PC9zdHJvbmc+CiAgPHA+VGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgYm9vbGVhbiBpZiB0aGUgdXNlciBpcyBhIG1lbWJlciBvZiBvbmUgdGhlIHNwZWNpZmllZCBncm91cHMuPC9wPgogIDxwPlRoZSBncm91cHMgcGFyYW1ldGVyIGNhbiBiZSBhIGNvbW1hIGRlbGltaXRlZCBzdHJpbmcgb2YgZ3JvdXAgbmFtZXMsIG9yIGFuIGFycmF5IG9mIGdyb3VwIG5hbWVzLjwvcD4KICA8cD5JZiB0aGUgdWlkIHBhcmFtZXRlciBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyaWQgaXMgdXNlZC48L3A+CiAgPHA+RXhhbXBsZTo8L3A+CjxwcmU+PGNvZGU+JiMxMjM7aWYgbWFtc19zbWFydHk6OmlzX3VzZXJfbWVtYmVyb2YoJ1N0YWZmLE1hbmFnZXJzJyl9SGVsbG8gQ3VzdG9tZXImIzEyMzsvaWZ9PC9jb2RlPjwvcHJlPgo8L3VsPiAgPC9kaXY+CiAgPGRpdiBpZD0iaG9va3NfYyI+CiAgICA8aDM+SG9va3M8L2gzPgo8cD5UaGlzIG1vZHVsZSB1c2VzIEhvb2tzIHRvIHRpZSBpbiBleHRlcm5hbCBmdW5jdGlvbmFsaXR5LiAgVGhlIGZvbGxvd2luZyBob29rcyBhcmUgYXZhaWxhYmxlOjwvcD4KPHVsPgogICAgPGxpPjxjb2RlPk1BTVM6OkJlZm9yZUNoYW5nZVNldHRpbmdzPC9jb2RlPgogICAgICAgIDxwPlNlbnQgYWZ0ZXIgdGhlIGNoYW5nZSBzZXR0aW5ncyBmb3JtIGhhcyBiZWVuIHN1Ym1pdHRlZCwgYnV0IGJlZm9yZSBhbnkgdmFsaWRhdGlvbiBvY2N1cnMuPC9wPgoJPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPgoJPHVsPgoJICAgPGxpPjxjb2RlPnVpZDwvY29kZT4gOiBpbnQgLSBUaGUgdXNlciBpZDwvbGk+Cgk8L3VsPgogICAgPC9saT4KICAgIDxsaT48Y29kZT5NQU1TOjpDaGFuZ2VTZXR0aW5nc0FmdGVyVmFsaWRhdGU8L2NvZGU+CiAgICAgICAgPHA+U2VudCBhZnRlciBhbGwgdmFsaWRhdGlvbiBpcyBkb25lIGluIHRoZSBjaGFuZ2Ugc2V0dGluZ3MgZm9ybSwgYnV0IGJlZm9yZSBhbnl0aGluZyBpcyBzYXZlZCB0byB0aGUgZGF0YWJhc2UuPC9wPgoJPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPgoJPHVsPgoJICAgPGxpPjxjb2RlPnVpZDwvY29kZT4gOiBpbnQgLSBUaGUgdXNlciBpZDwvbGk+Cgk8L3VsPgogICAgPC9saT4KICAgIDxsaT48Y29kZT5NQU1TOjpPbkNyZWF0ZVVzZXI8L2NvZGU+CiAgICAgICAgPHA+U2VudCBhZnRlciBhIHVzZXIgaXMgY3JlYXRlZCBpbiB0aGUgZGF0YWJhc2UuPC9wPgogICAgICAgIDxwPlBhcmFtZXRlcnMgKGFzIGFuIGFzc29jaWF0aXZlIGFycmF5KTwvcD4KCTx1bD4KCSAgIDxsaT48Y29kZT5pZDwvY29kZT4gOiBpbnQgLSBUaGUgdXNlciBpZDwvbGk+CgkgICA8bGk+PGNvZGU+bmFtZTwvY29kZT4gOiBzdHJpbmcgLSBUaGUgdXNlcm5hbWU8L2xpPgoJPC91bD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+TUFNUzo6T25VcGRhdGVVc2VyPC9jb2RlPgogICAgICAgIDxwPlNlbnQgYWZ0ZXIgYSB1c2VyIGluZm9ybWF0aW9uIGlzIGVkaXRlZCBpbiB0aGUgZGF0YWJhc2UuPC9wPgogICAgICAgIDxwPlBhcmFtZXRlcnMgKGFzIGFuIGFzc29jaWF0aXZlIGFycmF5KTwvcD4KCTx1bD4KCSAgIDxsaT48Y29kZT5pZDwvY29kZT4gOiBpbnQgLSBUaGUgdXNlciBpZDwvbGk+CgkgICA8bGk+PGNvZGU+bmFtZTwvY29kZT4gOiBzdHJpbmcgLSBUaGUgdXNlcm5hbWU8L2xpPgoJPC91bD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+TUFNUzo6T25EZWxldGVVc2VyPC9jb2RlPgogICAgICAgIDxwPlNlbnQgYmVmb3JlIGEgdXNlciBpcyByZW1vdmVkIGZyb20gIHRoZSBkYXRhYmFzZS48L3A+CiAgICAgICAgPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPgoJPHVsPgoJICAgPGxpPjxjb2RlPmlkPC9jb2RlPiA6IGludCAtIFRoZSB1c2VyIGlkPC9saT4KCSAgIDxsaT48Y29kZT51c2VybmFtZTwvY29kZT4gOiBzdHJpbmcgLSBUaGUgdXNlcm5hbWU8L2xpPgoJPC91bD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+TUFNUzo6T25DcmVhdGVHcm91cDwvY29kZT4KICAgICAgICA8cD5QYXJhbWV0ZXJzIChhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L3A+Cgk8dWw+CgkgICA8bGk+PGNvZGU+aWQ8L2NvZGU+IDogaW50IC0gVGhlIGdyb3VwIGlkPC9saT4KCSAgIDxsaT48Y29kZT5uYW1lPC9jb2RlPiA6IHN0cmluZyAtIFRoZSBncm91cCBuYW1lPC9saT4KCSAgIDxsaT48Y29kZT5kZXNjcmlwdGlvbjwvY29kZT4gOiBzdHJpbmcgLSBUaGUgZ3JvdXAgZGVzY3JpcHRpb248L2xpPgoJPC91bD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+TUFNUzo6T25VcGRhdGVHcm91cDwvY29kZT4KICAgICAgICA8cD5QYXJhbWV0ZXJzIChhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L3A+Cgk8dWw+CgkgICA8bGk+PGNvZGU+aWQ8L2NvZGU+IDogaW50IC0gVGhlIGdyb3VwIGlkPC9saT4KCSAgIDxsaT48Y29kZT5uYW1lPC9jb2RlPiA6IHN0cmluZyAtIFRoZSBncm91cCBuYW1lPC9saT4KCSAgIDxsaT48Y29kZT5kZXNjcmlwdGlvbjwvY29kZT4gOiBzdHJpbmcgLSBUaGUgZ3JvdXAgZGVzY3JpcHRpb248L2xpPgoJPC91bD4KICAgIDwvbGk+CiAgICA8bGk+PGNvZGU+TUFNUzo6T25EZWxldGVHcm91cDwvY29kZT4KICAgICAgICA8cD5QYXJhbWV0ZXJzIChhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L3A+Cgk8dWw+CgkgICA8bGk+PGNvZGU+aWQ8L2NvZGU+IDogaW50IC0gVGhlIGdyb3VwIGlkPC9saT4KCSAgIDxsaT48Y29kZT5uYW1lPC9jb2RlPiA6IHN0cmluZyAtIFRoZSBncm91cCBuYW1lPC9saT4KCTwvdWw+CiAgICA8L2xpPgogICAgPGxpPjxjb2RlPk1BTVM6OkJlZm9yZUxvZ2luPC9jb2RlPgogICAgICAgIDxwPlNlbnQgYmVmb3JlIGEgdXNlciBpcyBhdXRoZW50aWNhdGVkIG9yIGxvZ2dlZCBpbi4gSGFuZGxlcnMgY2FuIHRocm93IHRoZSA8Y29kZT5NQU1TTG9naW5GYWlsZWRFeGNlcHRpb248L2NvZGU+IHRvIGdlbmVyYXRlIGFuIGVycm9yLjwvcD4KICAgICAgICA8cD5QYXJhbWV0ZXJzIChhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L3A+Cgk8dWw+CgkgICA8bGk+PGNvZGU+dXNlcm5hbWU8L2NvZGU+IDogc3RyaW5nIC0gVGhlIHByb3ZpZGVkIHVzZXJuYW1lLjwvbGk+CgkgICA8bGk+PGNvZGU+Z3JvdXBzPC9jb2RlPiA6IHN0cmluZyAtIEEgbGlzdCBvZiBvbmx5Z3JvdXBzIChzZWUgdGhlIG9ubHlncm91cHMgcGFyYW0pPC9saT4KCSAgIDxsaT48Y29kZT5pcDwvY29kZT4gOiBzdHJpbmcgLSBUaGUgSVAgYWRkcmVzcyBkZXRlY3RlZC48L2xpPgoJPC91bD4KICAgIDwvbGk+CgogICAgPGxpPjxjb2RlPk1BTVM6OkFmdGVyTG9naW5BdXRoPC9jb2RlPgogICAgICAgIDxwPlNlbnQgYWZ0ZXIgYSB1c2VyIGlzIGF1dGhlbnRpY2F0ZWQsIGJ1dCBiZWZvcmUgYWN0dWFsbHkgYmVpbmcgbG9nZ2VkIGluLiAgVGhpcyBob29rIGlzIHVzZWZ1bCB0byBhbGxvdyBvdGhlciBtb2R1bGVzIHRvIGRvIGFkZGl0aW9uYWwgc2VjdXJpdHkgY2hlY2tzLiAgSGFuZGxlcnMgY2FuIHRocm93IGEgPGNvZGU+TUFNU0xvZ2luRmFpbGVkRXhjZXB0aW9uPC9jb2RlPiB0byBnZW5lcmF0ZSBhbiBlcnJvci48L3A+CiAgICAgICAgPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPgoJPHVsPgoJICAgPGxpPjxjb2RlPmlkPC9jb2RlPiA6IGludCAtIFRoZSBpZCBkZXRlY3RlZCBmb3IgdGhpcyB1c2VybmFtZS48L2xpPgoJICAgPGxpPjxjb2RlPnVzZXJuYW1lPC9jb2RlPiA6IHN0cmluZyAtIFRoZSBwcm92aWRlZCB1c2VybmFtZS48L2xpPgoJICAgPGxpPjxjb2RlPmdyb3VwczwvY29kZT4gOiBzdHJpbmcgLSBBIGxpc3Qgb2Ygb25seWdyb3VwcyAoc2VlIHRoZSBvbmx5Z3JvdXBzIHBhcmFtKTwvbGk+CgkgICA8bGk+PGNvZGU+aXA8L2NvZGU+IDogc3RyaW5nIC0gVGhlIElQIGFkZHJlc3MgZGV0ZWN0ZWQuPC9saT4KCTwvdWw+CiAgICA8L2xpPgoKICAgIDxsaT48Y29kZT5NQU1TOjpPbkxvZ2luRmFpbGVkPC9jb2RlPgogICAgICAgIDxwPlNlbnQgd2hlbiBhIGxvZ2luIGF0dGVtcHQgaGFzIGZhaWxlZCBmb3Igc29tZSByZWFzb24uPC9wPgogICAgICAgIDxwPlBhcmFtZXRlcnMgKGFzIGFuIGFzc29jaWF0aXZlIGFycmF5KTwvcD4KCTx1bD4KCSAgIDxsaT48Y29kZT51c2VybmFtZTwvY29kZT4gOiBzdHJpbmcgLSBUaGUgcHJvdmlkZWQgdXNlcm5hbWUuPC9saT4KCSAgIDxsaT48Y29kZT5tc2c8L2NvZGU+IDogc3RyaW5nIC0gVGhlIGVycm9yIG1lc3NhZ2UgYXNzb2NpYXRlZCB3aXRodCBoZSBmYWlsZWQgbG9naW4gYXR0ZW1wdC48L2xpPgoJPC91bD4KICAgIDwvbGk+CgogICAgPGxpPjxjb2RlPk1BTVM6Ok9uRXhwaXJlVXNlcjwvY29kZT4KICAgICAgICA8cD5TZW50IHdoZW4gYSB1c2VyIHNlc3Npb24gaXMgZXhwaXJlZCwgYW5kIHRoZSB1c2VyIGlzIGxvZ2dlZCBvdXQuPC9wPgogICAgICAgIDxwPlBhcmFtZXRlcnMgKGFzIGFuIGFzc29jaWF0aXZlIGFycmF5KTwvcD4KCTx1bD4KCSAgIDxsaT48Y29kZT5pZDwvY29kZT4gOiBpbnQgLSBUaGUgZXhwaXJlZCB1c2VyaWQuPC9saT4KCSAgIDxsaT48Y29kZT51c2VybmFtZTwvY29kZT4gOiBzdHJpbmcgLSBUaGUgZXhwaXJlZCB1c2VybmFtZS48L2xpPgoJPC91bD4KICAgIDwvbGk+CgogICAgPGxpPjxjb2RlPk1BTVM6OkJlZm9yZUFub25pbWl6ZVVzZXI8L2NvZGU+CiAgICAgICAgPHA+U2VudCBpbW1lZGlhdGVseSBiZWZvcmUgYSB1c2VyIGlzIGFub25pbWl6ZWQuPC9wPgoJPHA+UGFyYW1ldGVyczo8L3A+Cgk8dWw+CgkgICAgPGxpPjxjb2RlPiR1aWQ8L2NvZGU+IDogaW50IC0gVGhlIHVzZXJpZCB0byBleHBpcmUuPC9saT4KCTwvdWw+CiAgICA8L2xpPgoKICAgIDxsaT48Y29kZT5NQU1TOjpBZnRlckFub25pbWl6ZVVzZXI8L2NvZGU+CiAgICAgICAgPHA+U2VudCBpbW1lZGlhdGVseSBhZnRlciBhIHVzZXIgaXMgYW5vbmltaXplZC48L3A+Cgk8cD5QYXJhbWV0ZXJzOjwvcD4KCTx1bD4KCSAgICA8bGk+PGNvZGU+JHVpZDwvY29kZT4gOiBpbnQgLSBUaGUgdXNlcmlkIHRvIGV4cGlyZS48L2xpPgoJPC91bD4KICAgIDwvbGk+CgogICAgPGxpPjxjb2RlPk1BTVM6OkFmZXJWZXJpZnk8L2NvZGU+CiAgICAgICAgPHA+U2VudCBpbW1lZGlhdGVseSBhZnRlciBhIHVzZXIgYWNjb3VudCBpcyB2ZXJpZmllZC48L3A+CiAgICAgICAgPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPgoJPHVsPgoJICAgIDxsaT48Y29kZT51aWQ8L2NvZGU+IDogaW50IC0gVGhlIHVzZXJpZCB0byBleHBpcmUuPC9saT4KCTwvdWw+CiAgICA8L2xpPgoKICAgIDxsaT48Y29kZT5NQU1TOjpDbGVhclVzZXJIaXN0b3J5PC9jb2RlPgogICAgICAgIDxwPlNlbnQgaW1tZWRpYXRlbHkgYmVmb3JlIHVzZXIgaGlzdG9yeSBpcyBjbGVhcmVkIGZyb20gdGhlIGRhdGFiYXNlLjwvbGk+CiAgICAgICAgPHA+UGFyYW1ldGVyczo8L3A+Cgk8dWw+CgkgICAgPGxpPjxjb2RlPiRvbGRlcl90aGFuPC9jb2RlPiA6IGludCAtIEEgdW5peCB0aW1lc3RhbXAgY29udGFpbmluZyB0aGUgbWF4aW11bSB0aW1lIG9mIHJlY29yZHMgdG8ga2VlcC48L2xpPgoJPC91bD4KICA8L2xpPgoKICA8bGk+PGNvZGU+TUFNUzo6T25Mb2dpbjwvY29kZT4KICAgICAgICA8cD5TZW50IGFmdGVyIGEgc3VjY2Vzc2Z1bCBsb2dpbiBvcGVyYXRpb24uPC9wPgogICAgICAgIDxwPlBhcmFtZXRlcnMgKGFzIGFuIGFzc29jaWF0aXZlIGFycmF5KTwvcD4KCTx1bD4KCSAgIDxsaT48Y29kZT5pZDwvY29kZT4gOiBpbnQgLSBUaGUgdXNlcmlkLjwvbGk+CgkgICA8bGk+PGNvZGU+dXNlcm5hbWU8L2NvZGU+IDogc3RyaW5nIC0gVGhlIHVzZXJuYW1lLjwvbGk+CgkgICA8bGk+PGNvZGU+aXA8L2NvZGU+IDogc3RyaW5nIC0gVGhlIElQIGFkZHJlc3MgZGV0ZWN0ZWQuPC9saT4KCTwvdWw+CiAgICA8L2xpPgoKICAgIDxsaT48Y29kZT5NQU1TOjpPbkxvZ291dDwvY29kZT4KICAgICAgICA8cD5TZW50IGFmdGVyIGEgdXNlciBoYXMgYmVlbiBsb2dnZWQgb3V0IG9mIHRoZSBzeXN0ZW0uPC9wPgogICAgICAgIDxwPlBhcmFtZXRlcnMgKGFzIGFuIGFzc29jaWF0aXZlIGFycmF5KTwvcD4KCTx1bD4KCSAgIDxsaT48Y29kZT5pZDwvY29kZT4gOiBpbnQgLSBUaGUgdXNlcmlkLjwvbGk+Cgk8L3VsPgogICAgPC9saT4KPC91bD4gIDwvZGl2PgogICAgPGRpdiBpZD0iYWJvdXRfYyI+CiAgICA8aDM+QWJvdXQgdGhpcyBtb2R1bGU8L2gzPgoKICA8cD5UaGlzIG1vZHVsZSBpcyBhIGZvcmsgb2YgPHN0cm9uZz5Gcm9udEVuZFVzZXJzPC9zdHJvbmc+IGRldmVsb3BlZCBieSA8c3Ryb25nPlJvYmVydCBDYW1wYmVsbCAmbHQ7Y2FsZ3V5MTAwMCZndDs8L3N0cm9uZz4uPGJyIC8+CiAgICAgIFRoaXMgaXMgYSAxc3QgZ2VuZXJhdGlvbiBmb3JrIG9mIHRoZSBtb2R1bGUuIENvbnNpZGVyIHRoaXMgYXMgYW5vdGhlciBmbGF2b3VyIG9mIHRoZSBvcmlnaW5hbCBtb2R1bGUuPGJyIC8+CgogIElmIHlvdSBmaW5kIGFueSBidWdzIHBsZWFzZSBmZWVsIGZyZWUgdG8gc3VibWl0IGEgYnVnIHJlcG9ydCA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL2J1Zy9saXN0LzE0NjUiIHRhcmdldD0iX2JsYW5rIj5oZXJlPC9hPiBvciBmb3IgYW55IGdvb2QgaWRlYXMgY29uc2lkZXIgc3VibWl0aW5nIGEgZmVhdHVyZSByZXF1ZXN0IDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvZmVhdHVyZV9yZXF1ZXN0L2xpc3QvMTQ2NSIgdGFyZ2V0PSJfYmxhbmsiPmhlcmU8L2E+LjwvcD4KICA8cD5QbGVhc2Uga2VlcCBpbiBtaW5kIHRoYXQgZGV2ZWxvcGVycyBkbyBoYXZlIHRoZWlyIGRhaWx5IGpvYnMgd2hpY2ggbWVhbnMgdGhhdCBmZWF0dXJlIHJlcXVlc3RzIGFyZSBjb25zaWRlcmVkIGFuZCBkb25lIGFzIHRpbWUgYWxsb3dzLiBJZiB5b3UgbmVlZCBhIGZlYXR1cmUgcmVhbGx5IGJhZGx5IGNvbnNpZGVyIGNvbnRhY3Rpbmcgb25lIG9mIHRoZSBkZXZlbG9wZXJzIGZvciBhIHNwb25zb3JlZCBkZXZlbG9wbWVudC4KICA8L3A+Cgo8aDM+U3VwcG9ydDwvaDM+CjxwPlRoZSBtb2R1bGUgYXV0aG9yIC8gbWFpbnRhaW5lcnMgb3IgcHJvamVjdCBtYW5hZ2VycyBhcmUgaW4gbm8gd2F5IG9ibGlnYXRlZCB0byBwcm92aWRlIHN1cHBvcnQgZm9yIHRoaXMgY29kZSBpbiBhbnkgZmFzaGlvbi4gIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPgo8dWw+CjxsaT5BIGJ1ZyB0cmFja2luZyBhbmQgZmVhdHVyZSByZXF1ZXN0IHN5c3RlbSBoYXMgYmVlbiBjcmVhdGVkIGZvciB0aGlzIG1vZHVsZSA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL21hbXMiPmhlcmU8L2E+LiBQbGVhc2UgYmUgdmVyYm9zZSBhbmQgZGVzY3JpcHRpdmUgd2hlbiBzdWJtaXR0aW5nIGJ1ZyByZXBvcnRzIGFuZCBmZWF0dXJlIHJlcXVlc3RzLCBhbmQgZm9yIGJ1ZyByZXBvcnRzIGVuc3VyZSB0aGF0IHlvdSBoYXZlIHByb3ZpZGVkIHN1ZmZpY2llbnQgaW5mb3JtYXRpb24gdG8gcmVsaWFibHkgcmVwcm9kdWNlIHRoZSBpc3N1ZS48L2xpPgo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LiAgV2hlbiBkZXNjcmliaW5nIGFuIGlzc3VlIHBsZWFzZSBtYWtlIGFuIGVmZm9ydCB0byBwcm92aWRlIGFsbCByZWxldmFudCBpbmZvcm1hdGlvbiwgYSB0aG9yb3VnaCBkZXNjcmlwdGlvbiBvZiB5b3VyIGlzc3VlLCBhbmQgc3RlcHMgdG8gcmVwcm9kdWNlIGl0IG9yIHlvdXIgZGlzY3Vzc2lvbiBtYXkgYmUgaWdub3JlZC48L2xpPgo8L3VsPgoKPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CjxwPkNvcHlyaWdodCAmY29weTsgMjAyMCAtIDIwMjQsIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uIDxhIGhyZWY9Im1haWx0bzppbmZvQGNtc21hZGVzaW1wbGUub3JnIj4mbHQ7aW5mb0BjbXNtYWRlc2ltcGxlLm9yZyZndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+CjxwPkNvcHlyaWdodCAmY29weTsgMjAwOC0yMDE5LCBSb2JlcnQgQ2FtcGJlbGwgJmx0O2NhbGd1eTEwMDAmZ3Q7LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+Cjxocj4KPHA+PHN0cm9uZz5Gcm9udEVuZFVzZXJzPC9zdHJvbmc+IGlzIGZyZWUgc29mdHdhcmU7PGJyIC8+IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSA8c3Ryb25nPkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlPC9zdHJvbmc+IGFzIHB1Ymxpc2hlZCBieSB0aGUgPHN0cm9uZz5GcmVlIFNvZnR3YXJlIEZvdW5kYXRpb248L3N0cm9uZz47PGJyIC8+IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uPC9wPgo8cD48c3Ryb25nPkZyb250RW5kVXNlcnM8L3N0cm9uZz4gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IDxzdHJvbmc+V0lUSE9VVCBBTlkgV0FSUkFOVFk8L3N0cm9uZz47PGJyIC8+IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiA8c3Ryb25nPk1FUkNIQU5UQUJJTElUWTwvc3Ryb25nPiBvciA8c3Ryb25nPkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFPC9zdHJvbmc+LjwvcD4KPHA+U2VlIHRoZUdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuPC9wPgogPHA+WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgPHN0cm9uZz5HTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZTwvc3Ryb25nPiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTs8YnIgLz4gaWYgbm90LCB3cml0ZSB0byB0aGUgPHN0cm9uZz5GcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBPC9zdHJvbmc+IG9yIDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPnJlYWQgaXQgb25saW5lPC9hPi48L3A+CjxwPjxzdHJvbmc+WW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyA8c3Ryb25nPkZyb250RW5kVXNlcnM8L3N0cm9uZz4uPC9zdHJvbmc+PC9wPgo8aHI+CjxoND5DdXJyZW50IE1haW50YWluZXJzPC9oND4KPHVsPgogIDxsaSBjbGFzcz0icF9ib3R0b21fMTUiPjxzdHJvbmc+RmVybmFuZG8gTW9yZ2FkbyAoSm8gTW9yZyk8L3N0cm9uZz48L2xpPgo8L3VsPgoKPGg0PlBhc3QgTWFpbnRhaW5lcnM8L2g0Pgo8dWw+CiAgPGxpPjxzdHJvbmc+Um9iZXJ0IENhbXBiZWxsIChjYWxndXkxMDAwKTwvc3Ryb25nPiA8YnIgLz53d3cuY2FsZ3V5MTAwMC5jb208L2xpPgo8L3VsPgoKPGg0Pktub3duIENvbnRyaWJ1dG9yczwvaDQ+Cjx1bD4KICA8bGk+PHN0cm9uZz5Sb2JlcnQgQ2FtcGJlbGwgKGNhbGd1eTEwMDApPC9zdHJvbmc+PGJyIC8+d3d3LmNhbGd1eTEwMDAuY29tPC9saT4KPC91bD4KCiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9ImNsZWFyYiI+PC9kaXY+CjwvZGl2PjxoMz5EZXBlbmRlbmNpZXM8L2gzPjx1bD48bGk+Q01TTVNFeHQgPSZndDsgMS40LjM8L2xpPjxsaT5TbWFydHlFeHQgPSZndDsgMS4wPC9saT48L3VsPg==]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBKbyBNb3JnICZsdDtqb21vcmdAY21zbWFkZXNpbXBsZS5vcmcmZ3Q7PGJyIC8+PGJyIC8+VmVyc2lvbjogMS4xLjA8YnIgLz48YnIgLz5DaGFuZ2UgSGlzdG9yeTo8YnIgLz48c3R5bGU+CiAgc2VjdGlvbiNjaGFuZ2Vsb2cgc3BhbgogIHsKICAgIE1vbm8nLCAnTHVjaWRhIENvbnNvbGUnLCAnTHVjaWRhIFNhbnMgVHlwZXdyaXRlcicsICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZTsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICBjb2xvcjogIzIzMjMyMzsKICAgIGhlaWdodDogYXV0bzsKICAgIGJvcmRlci1yYWRpdXM6IDAuMzE1ZW07CiAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOwogICAgcGFkZGluZzogMC4zZW07CiAgICBmb250LXNpemU6IDAuOWVtOwogIH0KPC9zdHlsZT4KPHNlY3Rpb24gaWQ9ImNoYW5nZWxvZyI+CiAgPGgzPjxzcGFuPlZlcnNpb24gMS4xLjA8L3NwYW4+IDxzbWFsbD4yMDI0LTAyLTEyPC9zbWFsbD48L2gzPgoKICA8dWw+CiAgICA8bGk+PHNwYW4+Zml4ZWQ8L3NwYW4+IGJhY2tlbmQgdGFicyBhY3RpdmUgc3RhdGU7PC9saT4KICAgIDxsaT48c3Bhbj5maXhlZDwvc3Bhbj4gYmFja2VuZCBsYXlvdXQ7PC9saT4KICAgIDxsaT48c3Bhbj5jaGFuZ2VkPC9zcGFuPiBmaW5hbGx5IEdyb3VwcyBhbmQgUHJvcGVydGllcyBhcmUgbm90IHJlcXVpcmVkIHRvIGJlIHNldCBmb3IgdXNlcnMgdG8gYmUgY3JlYXRlZDs8L2xpPgogICAgPGxpPjxzcGFuPmNoYW5nZWQ8L3NwYW4+IGEgbmV3IEFQSSBoYXMgYmVlbiBzdGFydGVkIHRvIGJlIGltcGxlbWVudGVkIHRvIGJlIG1vcmUgY29uc2lzdGVudCBhbmQgZWZmaWNpZW50OzwvbGk+CiAgICA8bGk+PHNwYW4+ZGVwcmVjYXRlZDwvc3Bhbj4gdGhlIG9sZCBBUEkgaGFzIGJlZW4gZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZWFyIGZ1dHVyZTs8L2xpPgogICAgPGxpPjxzcGFuPmZpeGVkPC9zcGFuPiBjb21wYXRpYmlsaXR5IHdpdGggUEhQIDgrICh0aGVyZSBtYXkgc3RpbGwgYmUgYSBmZXcgbm90aWNlcyBvciB3YXJuaW5ncyk7PC9saT4KICA8L3VsPgoKICA8aDM+PHNwYW4+VmVyc2lvbiAxLjA8L3NwYW4+IDxzbWFsbD4yMDIxLTAyLTIzPC9zbWFsbD48L2gzPgoKICA8cD5Jbml0aWFsIHB1YmxpYyByZWxlYXNlPC9wPgo8L3NlY3Rpb24+CjxiciAvPg==]]></about>
	<description><![CDATA[Members Area Made Simple: allow users to log in to the frontend of your site]]></description>
	<requires>
	  <requiredname>CMSMSExt</requiredname>
	  <requiredversion>1.4.3</requiredversion>
	</requires>
	<requires>
	  <requiredname>SmartyExt</requiredname>
	  <requiredversion>1.0</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/##event.CGEcommerceBase.OrderDeleted.php##</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKLy8gYW4gb3JkZXIgaGFzIGJlZW4gZGVsZXRlZC4KaWYoICFpc3NldCgkcGFyYW1zWydvcmRlcl9pZCddKSApIHJldHVybjsKCi8vIGhhbmRsZSB0aGUgY2FzZSBvZiBhdHRlbXB0ZWQgcmVjdXJzaW9uLgppZiggeHRfdG1wZGF0YTo6ZXhpc3RzKF9fRklMRV9fKSApIHJldHVybjsKeHRfdG1wZGF0YTo6c2V0KF9fRklMRV9fLDEpOwoKLy8gaGVyZSB3ZSBncmFiIHRoZSBvcmRlciBkaXJlY3RseS4KJG9yZGVyX2lkID0gKGludCkkcGFyYW1zWydvcmRlcl9pZCddOwokb3JkZXJfb2JqID0gb3JkZXJzX29wczo6bG9hZF9ieV9pZCgkb3JkZXJfaWQpOwppZiggISRvcmRlcl9vYmogKSByZXR1cm47CgovLyBmaW5kIHRoZSBsaW5lIGl0ZW0gd2l0aCBhIFNlbGZSZWcgU3Vic2NyaXB0aW9uLgpmb3IoICRzID0gMDsgJHMgPCAkb3JkZXJfb2JqLT5jb3VudF9kZXN0aW5hdGlvbnMoKTsgJHMrKyApIHsKICAgICRzaGlwcGluZyA9ICRvcmRlcl9vYmotPmdldF9zaGlwcGluZygkcyk7CiAgICBmb3IoICRpID0gMDsgJGkgPCAkc2hpcHBpbmctPmNvdW50X2FsbF9pdGVtcygpOyAkaSsrICkgewogICAgICAgICRpdGVtID0gJHNoaXBwaW5nLT5nZXRfaXRlbSgkaSk7CiAgICAgICAgaWYoICRpdGVtLT5nZXRfc291cmNlKCkgIT0gJ1NlbGZSZWdpc3RyYXRpb24nICkgY29udGludWU7CiAgICAgICAgaWYoICRpdGVtLT5nZXRfaXRlbV90eXBlKCkgIT0gbGluZV9pdGVtOjpJVEVNVFlQRV9TRVJWSUNFICkgY29udGludWU7CiAgICAgICAgaWYoICEkaXRlbS0+aXNfc3Vic2NyaXB0aW9uKCkgKSBjb250aW51ZTsKCiAgICAgICAgJHVpZCA9ICRpdGVtLT5nZXRfZXh0cmEoJ21hbXNfdWlkJyk7CiAgICAgICAgaWYoICEkdWlkICkgY29udGludWU7ICAvLyBubyBhc3NvY2RhdGEsIG1heWJlIHRoaXMgdXNlciBuZXZlciBwYWlkLgoKICAgICAgICAkdWluZm8gPSAkdGhpcy0+R2V0VXNlckluZm8oICR1aWQgKTsKICAgICAgICBpZiggIWlzX2FycmF5KCR1aW5mbykgfHwgJHVpbmZvWzBdID09IEZBTFNFICkgewogICAgICAgICAgICBhdWRpdCgkdWlkLCR0aGlzLT5HZXROYW1lKCksIHNwcmludGYoJ09yZGVyICVkIGRlbGV0ZWQgYnV0IGNhbm5vdCBmaW5kIHVzZXIgYWNjb3VudCcsJG9yZGVyX2lkKSk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgJHVpbmZvID0gJHVpbmZvWzFdOwoKICAgICAgICBzd2l0Y2goICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdlY29tbV9vcmRlcmRlbGV0ZWQnKSApCiAgICAgICAgewogICAgICAgIGNhc2UgJ2RlbGV0ZSc6CiAgICAgICAgICAgICR0aGlzLT5EZWxldGVBbGxVc2VyUHJvcGVydGllcygnJywkdWlkLHRydWUpOwogICAgICAgICAgICAkdGhpcy0+RGVsZXRlVXNlckZ1bGwoJHVpZCk7CiAgICAgICAgICAgIGF1ZGl0KCR1aWQsJHRoaXMtPkdldE5hbWUoKSwgc3ByaW50ZignRGVsZXRlZCB1c2VyICVzIGJlY2F1c2Ugb3JkZXIgJWQgd2FzIGRlbGV0ZWQnLCR1aW5mb1sndXNlcm5hbWUnXSwkb3JkZXJfaWQpKTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ2Rpc2FibGUnOgogICAgICAgICAgICAkdGhpcy0+U2V0VXNlckRpc2FibGVkKCAkdWlkICk7CiAgICAgICAgICAgIGF1ZGl0KCR1aWQsJHRoaXMtPkdldE5hbWUoKSxzcHJpbnRmKCdEaXNhYmxlZCB1c2VyICVzIGJlY2F1c2Ugb3JkZXIgJXMgd2FzIGRlbGV0ZWQnLCR1aW5mb1sndXNlcm5hbWUnXSwkb3JkZXJfaWQpKTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ2V4cGlyZSc6CiAgICAgICAgICAgICR0aGlzLT5TZXRVc2VyKCR1aWQsJHVpbmZvWyd1c2VybmFtZSddLCR1aW5mb1sncGFzc3dvcmQnXSx0aW1lKCktMzYwMCxmYWxzZSk7CiAgICAgICAgICAgIGF1ZGl0KCR1aWQsJHRoaXMtPkdldE5hbWUoKSwgc3ByaW50ZignRXhwaXJlZCB1c2VyICVzIGJlY2F1c2Ugb3JkZXIgJWQgd2FzIGRlbGV0ZWQnLCR1aW5mb1sndXNlcm5hbWUnXSwkb3JkZXJfaWQpKTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJ25vbmUnOgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICB9Cn0KCi8vIHNldHVwIGZvciBhbm90aGVyIG9yZGVyLi4uIHNob3VsZG4ndCBoYXBwZW4sIGJ1dCBqdXN0IGluIGNhc2UuCnh0X3RtcGRhdGE6OmVyYXNlKF9fRklMRV9fKTsKCiMKIyBFT0YKIwo=]]></data>
	</file>
	<file>
	  <filename>/##event.CGEcommerceBase.OrderUpdated.php##</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKLy8gYW4gb3JkZXIgaGFzIGJlZW4gZGVsZXRlZC4KaWYoICFpc3NldCgkcGFyYW1zWydvcmRlcl9pZCddKSApIHJldHVybjsKCi8vIGhhbmRsZSB0aGUgY2FzZSBvZiBhdHRlbXB0ZWQgcmVjdXJzaW9uLgoKaWYoIHh0X3RtcGRhdGE6OmV4aXN0cyhfX0ZJTEVfXykgKSByZXR1cm47Cnh0X3RtcGRhdGE6OnNldChfX0ZJTEVfXywxKTsKCi8vIGhlcmUgd2UgZ3JhYiB0aGUgb3JkZXIgZGlyZWN0bHkuCiRvcmRlcl9pZCA9IChpbnQpJHBhcmFtc1snb3JkZXJfaWQnXTsKJG9yZGVyX29iaiA9IG9yZGVyc19vcHM6OmxvYWRfYnlfaWQoJG9yZGVyX2lkKTsKaWYoICEkb3JkZXJfb2JqICkgcmV0dXJuOwppZiggIWluX2FycmF5KCAkb3JkZXJfb2JqLT5nZXRfc3RhdHVzKCksIFsnY2FuY2VsbGVkJywgJ2hvbGQnLCAnc3Vic2NyaWJlZCddICkgKSByZXR1cm47IC8vIGRvIG5vdCB1c2UgY29uc3RhbnQgYXMgaXQgY3JlYXRlcyBhIGRlcGVuZGVuY3kuCgovLyBmaW5kIHRoZSBsaW5lIGl0ZW0gd2l0aCBhIFNlbGZSZWcgU3Vic2NyaXB0aW9uLgpmb3IoICRzID0gMDsgJHMgPCAkb3JkZXJfb2JqLT5jb3VudF9kZXN0aW5hdGlvbnMoKTsgJHMrKyApIHsKICAgICRzaGlwcGluZyA9ICRvcmRlcl9vYmotPmdldF9zaGlwcGluZygkcyk7CiAgICBmb3IoICRpID0gMDsgJGkgPCAkc2hpcHBpbmctPmNvdW50X2FsbF9pdGVtcygpOyAkaSsrICkgewogICAgICAgICRpdGVtID0gJHNoaXBwaW5nLT5nZXRfaXRlbSgkaSk7CiAgICAgICAgaWYoICRpdGVtLT5nZXRfc291cmNlKCkgIT0gJ1NlbGZSZWdpc3RyYXRpb24nICkgY29udGludWU7CiAgICAgICAgaWYoICRpdGVtLT5nZXRfaXRlbV90eXBlKCkgIT0gbGluZV9pdGVtOjpJVEVNVFlQRV9TRVJWSUNFICkgY29udGludWU7CiAgICAgICAgaWYoICEkaXRlbS0+aXNfc3Vic2NyaXB0aW9uKCkgKSBjb250aW51ZTsKCiAgICAgICAgJHVpZCA9ICRpdGVtLT5nZXRfZXh0cmEoJ21hbXNfdWlkJyk7CiAgICAgICAgaWYoICEkdWlkICkgY29udGludWU7ICAvLyBubyBhc3NvY2RhdGEsIG1heWJlIHRoaXMgdXNlciBuZXZlciBwYWlkLgoKICAgICAgICAkdWluZm8gPSAkdGhpcy0+R2V0VXNlckluZm8oICR1aWQgKTsKICAgICAgICBpZiggIWlzX2FycmF5KCR1aW5mbykgfHwgJHVpbmZvWzBdID09IEZBTFNFICkgewogICAgICAgICAgICBhdWRpdCgkdWlkLCR0aGlzLT5HZXROYW1lKCksc3ByaW50ZignVHJhbnNhY3Rpb24gcmVsYXRlZCB0byB1c2VyICVkIG9jY3VycmVkLCBidXQgY291bGQgbm90IGZpbmQgdXNlciBhY2NvdW50JykpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgICR1aW5mbyA9ICR1aW5mb1sxXTsKCiAgICAgICAgaWYoICRvcmRlcl9vYmotPmdldF9zdGF0dXMoKSA9PSAnaG9sZCcgKSB7CiAgICAgICAgICAgIC8vIGhvbGQgb3JkZXIsIHByb2xseSByZWxhdGVkIHRvIGRlY2xpbmVkIHBheW1lbnQuCiAgICAgICAgICAgICR0aGlzLT5TZXRVc2VyRGlzYWJsZWQoICR1aWQgKTsKICAgICAgICAgICAgYXVkaXQoJHVpZCwkdGhpcy0+R2V0TmFtZSgpLCdEaXNhYmxlZCB1c2VyIGR1ZSB0byByZWxhdGVkIG9yZGVyIHN0YXR1cyBvZiBob2xkJyk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoICRvcmRlcl9vYmotPmdldF9zdGF0dXMoKSA9PSAnc3Vic2NyaWJlZCcgKSB7CiAgICAgICAgICAgIC8vIHN1YnNjcmliZWQuCiAgICAgICAgICAgICR0aGlzLT5TZXRVc2VyRGlzYWJsZWQoICR1aWQsIEZBTFNFICk7CiAgICAgICAgICAgIGF1ZGl0KCR1aWQsJHRoaXMtPkdldE5hbWUoKSwnRW5hYmxlZCB1c2VyIGR1ZSB0byByZWxhdGVkIG9yZGVyIHN0YXR1cyBvZiBzdWJzY3JpYmVkJyk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAvLyBjYW5jZWxsZWQgb3JkZXIKICAgICAgICAgICAgc3dpdGNoKCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZWNvbW1fb3JkZXJjYW5jZWxsZWQnKSApIHsKICAgICAgICAgICAgY2FzZSAnZGVsZXRlJzoKICAgICAgICAgICAgICAgICR0aGlzLT5EZWxldGVBbGxVc2VyUHJvcGVydGllcygnJywkdWlkLHRydWUpOwogICAgICAgICAgICAgICAgJHRoaXMtPkRlbGV0ZVVzZXIoJHVpZCk7CiAgICAgICAgICAgICAgICBhdWRpdCgkdWlkLCR0aGlzLT5HZXROYW1lKCksIHNwcmludGYoJ0RlbGV0ZWQgdXNlciAlcyBiZWNhdXNlIG9yZGVyICVkIHdhcyBkZWxldGVkJywkdWluZm9bJ3VzZXJuYW1lJ10sJG9yZGVyX2lkKSk7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgJ2Rpc2FibGUnOgogICAgICAgICAgICAgICAgJHRoaXMtPlNldFVzZXJEaXNhYmxlZCggJHVpZCApOwogICAgICAgICAgICAgICAgYXVkaXQoJHVpZCwkdGhpcy0+R2V0TmFtZSgpLHNwcmludGYoJ0Rpc2FibGVkIHVzZXIgJXMgYmVjYXVzZSBvcmRlciAlcyB3YXMgY2FuY2VsbGVkJywkdWluZm9bJ3VzZXJuYW1lJ10sJG9yZGVyX2lkKSk7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgJ2V4cGlyZSc6CiAgICAgICAgICAgICAgICAkdGhpcy0+U2V0VXNlcigkdWlkLCR1aW5mb1sndXNlcm5hbWUnXSxudWxsLHRpbWUoKS0zNjAwKTsKICAgICAgICAgICAgICAgIGF1ZGl0KCR1aWQsJHRoaXMtPkdldE5hbWUoKSwgc3ByaW50ZignRXhwaXJlZCB1c2VyICVzIGJlY2F1c2Ugb3JkZXIgJWQgd2FzIGRlbGV0ZWQnLCR1aW5mb1sndXNlcm5hbWUnXSwkb3JkZXJfaWQpKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAnbm9uZSc6CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKLy8gc2V0dXAgZm9yIGFub3RoZXIgb3JkZXIuLi4gc2hvdWxkbid0IGhhcHBlbiwgYnV0IGp1c3QgaW4gY2FzZS4KeHRfdG1wZGF0YTo6ZXJhc2UoX19GSUxFX18pOwoKIwojIEVPRgojCg==]]></data>
	</file>
	<file>
	  <filename>/action.addgroup.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KCmZ1bmN0aW9uIHN3YXAoJiRhLCAmJGIpIDogdm9pZAp7CiAgJHRtcCA9ICRhOwogICRhICAgPSAkYjsKICAkYiAgID0gJHRtcDsKfQoKCmZ1bmN0aW9uIHJlb3JkZXJfYnlfa2V5KCYkaW5wdXQsICRmbGQsICRrZXlzKSA6IHZvaWQKewogIGlmKCFpc19hcnJheSgkaW5wdXQpKXtyZXR1cm47fQogIAogICR0bXAgPSBbXTsKICAKICBmb3JlYWNoKCRrZXlzIGFzICRvbmVrZXkpCiAgewogICAgZm9yZWFjaCgkaW5wdXQgYXMgJHJlYykKICAgIHsKICAgICAgaWYoJHJlY1skZmxkXSA9PSAkb25la2V5KQogICAgICB7CiAgICAgICAgJHRtcFtdID0gJHJlYzsKICAgICAgICBicmVhazsKICAgICAgfQogICAgfQogIH0KICAKICAkaW5wdXQgPSAkdG1wOwp9CgpmdW5jdGlvbiBhZGp1c3Rfb3JkZXJfYnlfa2V5cygmJGlucHV0LCAkZmxkLCAka2V5cykgOiB2b2lkCnsKICBpZighaXNfYXJyYXkoJGlucHV0KSl7cmV0dXJuO30KICAKICAkdG1wID0gW107CiAgCiAgZm9yZWFjaCgka2V5cyBhcyAkb25la2V5KQogIHsKICAgIGZvcmVhY2goJGlucHV0IGFzICRyZWMpCiAgICB7CiAgICAgIGlmKCRyZWNbJGZsZF0gPT0gJG9uZWtleSkKICAgICAgewogICAgICAgICR0bXBbXSA9ICRyZWM7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0KICB9CiAgCiAgZm9yZWFjaCgkaW5wdXQgYXMgJHJlYykKICB7CiAgICAkZjEgPSAwOwogICAgZm9yZWFjaCgkdG1wIGFzICR0bXByZWMpCiAgICB7CiAgICAgIGlmKCRyZWNbJGZsZF0gPT0gJHRtcHJlY1skZmxkXSkKICAgICAgewogICAgICAgICRmMSA9IDE7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0KICAgIGlmKDAgPT0gJGYxKSB7ICR0bXBbXSA9ICRyZWM7IH0KICB9CiAgCiAgJGlucHV0ID0gJHRtcDsKfQoKCi8vCi8vIEluaXRpYWxpemF0aW9uCi8vCiRncm91cG5hbWUgPSAkcGFyYW1zWydpbnB1dF9ncm91cG5hbWUnXSA/PyAnJzsKJGdyb3VwZGVzYyA9ICRwYXJhbXNbJ2lucHV0X2dyb3VwZGVzYyddID8/ICcnOwokZ2lkICAgICAgID0gLTE7CgovLyBjaGVjayBwZXJtaXNzaW9ucyBhZ2FpbgppZighaXNzZXQoJHBhcmFtc1snZ3JvdXBfaWQnXSkpCnsKICBpZighJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ2FkZGdyb3VwJykpCiAgewogICAgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwogICAgCiAgICByZXR1cm47CiAgfQp9CmVsc2UKewogIGlmKCEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnZWRpdGdyb3VwcycpKQogIHsKICAgICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKICAgIAogICAgcmV0dXJuOwogIH0KfQoKJHByb3BkZWZuID0gW107CnsKICAkdG1wID0gJHRoaXMtPkdldFByb3BlcnR5RGVmbnMoKTsKICAKICAjIHdoeSB3b3VsZCB3ZSB3YW50IHRvIGVuZm9yY2UgdGhlIHVzZSBvZiBleHRyYSBwcm9wZXJ0aWVzPyAoSk0pCiAgCi8vICBpZihjb3VudCgkdG1wKSA9PSAwKQovLyAgewovLyAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCdlcnJvcl9ub3Byb3BlcnRpZXMnKSk7Ci8vCi8vICAgIHJldHVybjsKLy8gIH0KICAKICBmb3JlYWNoKCR0bXAgYXMgJGtleSA9PiAkcmVjKQogIHsKICAgICRyZWNbJ3JlcXVpcmVkJ10gPSAwOwogICAgJHByb3BkZWZuWyRrZXldICA9ICRyZWM7CiAgfQp9CgppZihpc3NldCgkcGFyYW1zWydncm91cF9pZCddKSkKewogIC8vIHdlJ3JlIGVkaXRpbmcgYSBncm91cAogICRnaWQgICA9IChpbnQpJHBhcmFtc1snZ3JvdXBfaWQnXTsKICAkZ2luZm8gPSAkdGhpcy0+R2V0R3JvdXBJbmZvKCRnaWQpOwogIAogIGlmKGlzc2V0KCRnaW5mb1swXSkgJiYgRkFMU0UgPT0gJGdpbmZvWzBdKQogIHsKICAgICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2Vycm9yX2dyb3Vwbm90Zm91bmQnKSk7CiAgICAKICAgIHJldHVybjsKICB9CiAgCiAgJGdyb3VwbmFtZSA9ICRnaW5mb1snZ3JvdXBuYW1lJ107CiAgJGdyb3VwZGVzYyA9ICRnaW5mb1snZ3JvdXBkZXNjJ107CiAgCiAgLy8gbG9hZCByZWxhdGlvbnMsIGFuZCBhZGp1c3QgdGhlIHByb3BkZWZuIGFycmF5CiAgJHJlcyA9ICR0aGlzLT5HZXRHcm91cFByb3BlcnR5UmVsYXRpb25zKCRnaWQpOwogIAogIGlmKEZBTFNFID09ICRyZXNbMF0pCiAgewogICAgLy8gZWRpdGluZyBhIGdyb3VwLCBidXQgbm8gcHJvcGVydHkgcmVsYXRpb25zIChtYXliZSB0aGUgZ3JvdXBzIGFyZSBoZWxkIGluIGEgY29uc3VtZXIgbW9kdWxlLCBidXQgbm90IHRoZSBwcm9wZXJ0eSBkZWZzKS4KICAgIC8vIHRyZWF0IGl0IGxpa2Ugd2UncmUgYWRkaW5nIGEgZ3JvdXAuCiAgICAvKgogICAgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLAoJCQkgICAgICR0aGlzLT5MYW5nKCdlcnJvcl9ub2dyb3VwcHJvcGVydGllcycpKTsKICAgIHJldHVybjsKICAgICovCiAgfQogIGVsc2UKICB7CiAgICAvLyBzb3J0IHRoZW0gYnkgc29ydCBrZXkKICAgIHVhc29ydCgkcmVzLCBbJ3h0X2FycmF5JywgJ2NvbXBhcmVfZWxlbWVudHNfYnlfc29ydG9yZGVyX2tleSddKTsKICAgIAogICAgLy8gc29ydCB0aGUgcHJvcGRlZm5zIGJ5IHRoZSBzb3J0IG9yZGVyLgogICAgJG5hbWVzID0gW107CiAgICBmb3JlYWNoKCRyZXMgYXMgJHRtcCl7JG5hbWVzW10gPSAkdG1wWyduYW1lJ107fQogICAgYWRqdXN0X29yZGVyX2J5X2tleXMoJHByb3BkZWZuLCAnbmFtZScsICRuYW1lcyk7CiAgICAKICAgIC8vIHVwZGF0ZSB0aGUgcHJvcGRlZm5zCiAgICBmb3IoJGkgPSAwLCAkaU1heCA9IGNvdW50KCRyZXMpOyAkaSA8ICRpTWF4OyAkaSsrKQogICAgewogICAgICBmb3IoJGogPSAwLCAkak1heCA9IGNvdW50KCRwcm9wZGVmbik7ICRqIDwgJGpNYXg7ICRqKyspCiAgICAgIHsKICAgICAgICBpZigkcmVzWyRpXVsnbmFtZSddID09ICRwcm9wZGVmblskal1bJ25hbWUnXSkKICAgICAgICB7CiAgICAgICAgICAkcHJvcGRlZm5bJGpdWydyZXF1aXJlZCddID0gJHJlc1skaV1bJ3JlcXVpcmVkJ107CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIH0KICAgIH0gLy8gZm9yCiAgfSAvLyBlbHNlCn0KCi8vIGV4Y2x1ZGUgcHJvcGVydHkgZGVmbnMgZnJvbSBtb2R1bGVzCnsKICAkdG1wID0gW107CiAgCiAgZm9yZWFjaCgkcHJvcGRlZm4gYXMgJGtleSA9PiAkcmVjKQogIHsKICAgIGlmKCFpc3NldCgkcmVjWydleHRyYSddWydtb2R1bGUnXSkpIHsgJHRtcFtdID0gJHJlYzsgfQogIH0KICAKICAkcHJvcGRlZm4gPSAkdG1wOwp9CgppZihpc3NldCAoJHBhcmFtc1snY2FuY2VsJ10pKSB7ICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwgJ2dyb3VwcycpOyB9CgppZihpc3NldCgkcGFyYW1zWydtb3ZldXAnXSkpCnsKICAvLyB1cGRhdGUgdGhlIHByb3BkZWZuIHdpdGggc3RhdHVzIHZhbHVlcwogIGZvcigkaSA9IDAsICRpTWF4ID0gY291bnQoJHBhcmFtc1snaW5wdXRfbmFtZSddKTsgJGkgPCAkaU1heDsgJGkrKykKICB7CiAgICAkbmFtZSA9ICRwYXJhbXNbJ2lucHV0X25hbWUnXVskaV07CiAgICBmb3IoJGogPSAwLCAkak1heCA9IGNvdW50KCRwcm9wZGVmbik7ICRqIDwgJGpNYXg7ICRqKyspCiAgICB7CiAgICAgIGlmKCRuYW1lID09ICRwcm9wZGVmblskal1bJ25hbWUnXSkKICAgICAgewogICAgICAgICRwcm9wZGVmblskal1bJ3JlcXVpcmVkJ10gPSAkcGFyYW1zWydpbnB1dF9yZXF1aXJlZCddWyRpXTsKICAgICAgICBicmVhazsKICAgICAgfQogICAgfQogIH0KICAKICBpZihpc3NldCgkcGFyYW1zWydpbnB1dF9ncm91cG5hbWUnXSkpCiAgewogICAgJGdyb3VwbmFtZSA9IHRyaW0oJHBhcmFtc1snaW5wdXRfZ3JvdXBuYW1lJ10pOwogIH0KICAKICBpZihpc3NldCgkcGFyYW1zWydpbnB1dF9ncm91cGRlc2MnXSkpCiAgewogICAgJGdyb3VwZGVzYyA9IHRyaW0oJHBhcmFtc1snaW5wdXRfZ3JvdXBkZXNjJ10pOwogIH0KICAKICAvLyB3ZSdyZSBtb3Zpbmcgc3R1ZmYgdXAKICAvLyBzbyBhZGp1c3QgdGhlIHByb3BkZWZuIGFycmF5CiAgJGlkeCA9IChpbnQpJHBhcmFtc1snbW92ZXVwJ10gLSAxOwogIHN3YXAoJHBhcmFtc1snaW5wdXRfbmFtZSddWyRpZHhdLCAkcGFyYW1zWydpbnB1dF9uYW1lJ11bJGlkeCAtIDFdKTsKICByZW9yZGVyX2J5X2tleSgkcHJvcGRlZm4sICduYW1lJywgJHBhcmFtc1snaW5wdXRfbmFtZSddKTsKfQoKaWYoaXNzZXQoJHBhcmFtc1snbW92ZWRvd24nXSkpCnsKICAvLyB1cGRhdGUgdGhlIHByb3BkZWZuIHdpdGggc3RhdHVzIHZhbHVlcwogIGZvcigkaSA9IDAsICRpTWF4ID0gY291bnQoJHBhcmFtc1snaW5wdXRfbmFtZSddKTsgJGkgPCAkaU1heDsgJGkrKykKICB7CiAgICAkbmFtZSA9ICRwYXJhbXNbJ2lucHV0X25hbWUnXVskaV07CiAgICBmb3IoJGogPSAwLCAkak1heCA9IGNvdW50KCRwcm9wZGVmbik7ICRqIDwgJGpNYXg7ICRqKyspCiAgICB7CiAgICAgIGlmKCRuYW1lID09ICRwcm9wZGVmblskal1bJ25hbWUnXSkKICAgICAgewogICAgICAgICRwcm9wZGVmblskal1bJ3JlcXVpcmVkJ10gPSAkcGFyYW1zWydpbnB1dF9yZXF1aXJlZCddWyRpXTsKICAgICAgICBicmVhazsKICAgICAgfQogICAgfQogIH0KICAKICBpZihpc3NldCgkcGFyYW1zWydpbnB1dF9ncm91cG5hbWUnXSkpCiAgewogICAgJGdyb3VwbmFtZSA9IHRyaW0oJHBhcmFtc1snaW5wdXRfZ3JvdXBuYW1lJ10pOwogIH0KICAKICBpZihpc3NldCgkcGFyYW1zWydpbnB1dF9ncm91cGRlc2MnXSkpCiAgewogICAgJGdyb3VwZGVzYyA9IHRyaW0oJHBhcmFtc1snaW5wdXRfZ3JvdXBkZXNjJ10pOwogIH0KICAKICAvLyB3ZSdyZSBtb3Zpbmcgc3R1ZmYgZG93bgogIC8vIHNvIGFkanVzdCB0aGUgcHJvcGRlZm4gYXJyYXkKICAkaWR4ID0gKGludCkkcGFyYW1zWydtb3ZlZG93biddIC0gMTsKICBzd2FwKCRwYXJhbXNbJ2lucHV0X25hbWUnXVskaWR4XSwgJHBhcmFtc1snaW5wdXRfbmFtZSddWyRpZHggKyAxXSk7CiAgcmVvcmRlcl9ieV9rZXkoJHByb3BkZWZuLCAnbmFtZScsICRwYXJhbXNbJ2lucHV0X25hbWUnXSk7Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSkKewogICR0aGlzLT5teVJlZGlyZWN0KCRpZCwgJ2RvX2FkZGdyb3VwJywgJHJldHVybmlkLCAkcGFyYW1zKTsKfQoKLy8gcG9wdWxhdGUgdGhlIHRlbXBsYXRlCmlmKGlzc2V0KCRwYXJhbXNbJ2Vycm9yJ10pKQp7CiAgJHNtYXJ0eS0+YXNzaWduKCdlcnJvcicsICRwYXJhbXNbJ2Vycm9yJ10pOwp9CmlmKGlzc2V0KCRwYXJhbXNbJ21lc3NhZ2UnXSkpCnsKICAkc21hcnR5LT5hc3NpZ24oJ21lc3NhZ2UnLCAkcGFyYW1zWydtZXNzYWdlJ10pOwp9CiRzbWFydHktPmFzc2lnbigndGl0bGUnLCAkdGhpcy0+TGFuZygnYWRkZ3JvdXAnKSk7CmlmKCRnaWQgPiAwKQp7CiAgJHNtYXJ0eS0+YXNzaWduKCdoaWRkZW4nLCAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAnZ3JvdXBfaWQnLCAkZ2lkKSk7CiAgJHNtYXJ0eS0+YXNzaWduKCd0aXRsZScsICR0aGlzLT5MYW5nKCdlZGl0Z3JvdXAnKSk7Cn0KJHNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2FkZGdyb3VwJywgJHJldHVybmlkKSk7CiRzbWFydHktPmFzc2lnbignZW5kZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkdGhpcy0+TGFuZygnc3VibWl0JykpKTsKJHNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnY2FuY2VsJywgJHRoaXMtPkxhbmcoJ2NhbmNlbCcpKSk7Cgokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9ncm91cG5hbWUnLCAkdGhpcy0+TGFuZygnbmFtZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfZ3JvdXBkZXNjJywgJHRoaXMtPkxhbmcoJ2Rlc2NyaXB0aW9uJykpOwokY29uc3VtZXIgPSBtYW1zX3V0aWxzOjpnZXRfYXV0aF9jb25zdW1lcigpOwokYWRkdGV4dCAgPSAnJzsKCmlmKAogICEkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRjb25zdW1lcjo6Q0FQQUJJTElUWV9FRElUR1JPVVBTKSAmJgogICEkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRjb25zdW1lcjo6Q0FQQUJJTElUWV9VU0VTVERHUk9VUFMpCikKewogICRhZGR0ZXh0ID0gJ3JlYWRvbmx5PSJyZWFkb25seSIgZGlzYWJsZWQ9ImRpc2FibGVkIic7Cn0KCiRzbWFydHktPmFzc2lnbignaW5wdXRfZ3JvdXBuYW1lJywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdpbnB1dF9ncm91cG5hbWUnLCAkZ3JvdXBuYW1lLCAyMCwgODAsICRhZGR0ZXh0KSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfZ3JvdXBkZXNjJywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdpbnB1dF9ncm91cGRlc2MnLCAkZ3JvdXBkZXNjLCA4MCwgMjU1LCAkYWRkdGV4dCkpOwoKLy8gZGlzcGxheSBhIGxpc3Qgb2YgdGhlIHByb3BlcnRpZXMgaW4gYSBmb3JtCi8vIHRvIGFsbG93IHRoZSB1c2VyIHRvIHBpY2sgd2hpY2ggb25lcyBhcmUgcmVxdWlyZWQgYW5kIHdoaWNoIG9uZXMgYXJlbnQuCiRyb3dhcnJheSA9IGFycmF5KCk7CiRrZXlzICAgICA9IGFycmF5X2tleXMoJHRoaXMtPkdldEZpZWxkVHlwZXMoKSk7CiRvcHRpb25zICA9IGFycmF5KAogICR0aGlzLT5MYW5nKCdvZmYnKSAgICAgID0+IDAsCiAgJHRoaXMtPkxhbmcoJ29wdGlvbmFsJykgPT4gMSwKICAkdGhpcy0+TGFuZygncmVxdWlyZWQnKSA9PiAyLAogICR0aGlzLT5MYW5nKCdoaWRkZW4nKSAgID0+IDMsCiAgJHRoaXMtPkxhbmcoJ3JlYWRvbmx5JykgPT4gNAopOwoKJHRoZW1lT2JqZWN0ID0gY21zX3V0aWxzOjpnZXRfdGhlbWVfb2JqZWN0KCk7CiRpbWdfdXAgICAgICA9ICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vc29ydF91cC5naWYnLCAkdGhpcy0+TGFuZygnbW92ZV91cCcsICcnLCAnJywgJ3N5c3RlbWljb24nKSk7CiRzbWFydHktPmFzc2lnbignaW1nX3VwJywgJGltZ191cCk7CiRpbWdfZG93biA9ICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vc29ydF9kb3duLmdpZicsICR0aGlzLT5MYW5nKCdtb3ZlX2Rvd24nLCAnJywgJycsICdzeXN0ZW1pY29uJykpOwokc21hcnR5LT5hc3NpZ24oJ2ltZ19kb3duJywgJGltZ19kb3duKTsKCiRzdWJtaXRfYnRuID0gZnVuY3Rpb24oc3RyaW5nICRpZCwgc3RyaW5nICRuYW1lLCBzdHJpbmcgJHZhbHVlLCBzdHJpbmcgJGFkZHRleHQgPSBOVUxMLCBzdHJpbmcgJGltZyA9IE5VTEwpewogIHJldHVybiAiPGJ1dHRvbiBuYW1lPSd7JGlkfXskbmFtZX0nIHZhbHVlPSd7JHZhbHVlfScgJGFkZHRleHQ+IiAuICR0aGlzLT5EaXNwbGF5SW1hZ2UoJGltZywgJG5hbWUpIC4gJzwvYnV0dG9uPic7Cn07CiRzb3J0b3JkZXIgID0gMTsKCmZvcmVhY2goJHByb3BkZWZuIGFzICRkZWZuKQp7CiAgJG9uZXJvdyAgICAgICAgICAgID0gbmV3IFN0ZENsYXNzKCk7CiAgJG9uZXJvdy0+bmFtZSAgICAgID0gJGRlZm5bJ25hbWUnXTsKICAkb25lcm93LT5wcm9tcHQgICAgPSAkZGVmblsncHJvbXB0J107CiAgJG9uZXJvdy0+dHlwZSAgICAgID0gJHRoaXMtPkxhbmcoJGtleXNbJGRlZm5bJ3R5cGUnXV0pOwogICRvbmVyb3ctPmhpZGRlbiAgICA9ICc8ZGl2PicgLiAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAnaW5wdXRfbmFtZVtdJywgJGRlZm5bJ25hbWUnXSkgLiAnPC9kaXY+JzsKICAkb25lcm93LT5yZXF1aXJlZCAgPSAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdpbnB1dF9yZXF1aXJlZFtdJywgJG9wdGlvbnMsIC0xLCAkZGVmblsncmVxdWlyZWQnXSk7CiAgJG9uZXJvdy0+ZW5jcnlwdGVkID0gJGRlZm5bJ2VuY3J5cHQnXTsKICAKICBpZigkc29ydG9yZGVyID4gMSkKICB7CiAgICAkb25lcm93LT5tb3ZldXBfaWR4ID0gJHNvcnRvcmRlcjsKICAgICRvbmVyb3ctPm1vdmV1cCAgICAgPSAkc3VibWl0X2J0bigkaWQsICdtb3ZldXAnLCAkc29ydG9yZGVyLCAnJywgJ2ljb25zL3N5c3RlbS9zb3J0X3VwLmdpZicpOwogIH0KICBpZigkc29ydG9yZGVyIDwgY291bnQoJHByb3BkZWZuKSkKICB7CiAgICAkb25lcm93LT5tb3ZlZG93bl9pZHggPSAkc29ydG9yZGVyOwogICAgJG9uZXJvdy0+bW92ZWRvd24gICAgID0gJHN1Ym1pdF9idG4oJGlkLCAnbW92ZWRvd24nLCAkc29ydG9yZGVyLCAnJywgJ2ljb25zL3N5c3RlbS9zb3J0X2Rvd24uZ2lmJyk7CiAgfQogIAogICRyb3dhcnJheVtdID0gJG9uZXJvdzsKICArKyRzb3J0b3JkZXI7Cn0KCiRzbWFydHktPmFzc2lnbigncHJvcHMnLCAkcm93YXJyYXkpOwokc21hcnR5LT5hc3NpZ24oJ3Byb3Bjb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwokc21hcnR5LT5hc3NpZ24oJ3NvcnRvcmRlcnRleHQnLCAkdGhpcy0+TGFuZygnc29ydG9yZGVyJykpOwokc21hcnR5LT5hc3NpZ24oJ25hbWV0ZXh0JywgJHRoaXMtPkxhbmcoJ25hbWUnKSk7CiRzbWFydHktPmFzc2lnbigncHJvbXB0dGV4dCcsICR0aGlzLT5MYW5nKCdwcm9tcHQnKSk7CiRzbWFydHktPmFzc2lnbigndHlwZXRleHQnLCAkdGhpcy0+TGFuZygndHlwZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdmaWVsZHN0YXR1c3RleHQnLCAkdGhpcy0+TGFuZygnZmllbGRzdGF0dXMnKSk7CiRzbWFydHktPmFzc2lnbigndXNlZGlubG9zdHVudGV4dCcsICR0aGlzLT5MYW5nKCd1c2VkaW5sb3N0dW4nKSk7CgovLyBEaXNwbGF5IHRoZSBwb3B1bGF0ZWQgdGVtcGxhdGUKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZGRncm91cC50cGwnKTsK]]></data>
	</file>
	<file>
	  <filename>/action.addprop.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZighZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkgeyBleGl0OyB9CgppbmNsdWRlX29uY2UgX19ESVJfXyAuICcvaW5jbHVkZXMvZnVuY3Rpb24uaHRtbF9lbnRpdHlfZGVjb2RlX3BocDQucGhwJzsKCmlmKCEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnYWRkcHJvcCcpKSB7IGV4aXQ7IH0KCiMKIyBJbml0aWFsaXphdGlvbgojCiR0eXBlcyA9ICR0aGlzLT5HZXRGaWVsZFR5cGVzKCk7CnVuc2V0KCR0eXBlc1snZGF0YSddKTsKJGZpZWxkdHlwZXMgICAgICAgICAgID0gJHRoaXMtPmxhbmdpZnlLZXlzKCR0eXBlcyk7CiR0aXRsZSAgICAgICAgICAgICAgICA9ICR0aGlzLT5MYW5nKCdhZGRwcm9wJyk7CiRkZWZuICAgICAgICAgICAgICAgICA9IFtdOwokZGVmblsnbmFtZSddICAgICAgICAgPSAnJzsKJGRlZm5bJ3Byb21wdCddICAgICAgID0gJyc7CiRkZWZuWyd0eXBlJ10gICAgICAgICA9IDA7CiRkZWZuWydsZW5ndGgnXSAgICAgICA9IDgwOwokZGVmblsnbWF4bGVuZ3RoJ10gICAgPSAyNTU7CiRkZWZuWydhdHRyaWJzJ10gICAgICA9ICcnOwokZGVmblsnZm9yY2VfdW5pcXVlJ10gPSAwOwokZGVmblsnZW5jcnlwdCddICAgICAgPSAwOwokYXR0cmlicyAgICAgICAgICAgICAgPSBbXTsKJG9wdGlvbnMgICAgICAgICAgICAgID0gW107CiRzZWxvcHRpb25zICAgICAgICAgICA9ICcnOwokc3RhdHVzICAgICAgICAgICAgICAgPSAnJzsKJG1lc3NhZ2UgICAgICAgICAgICAgID0gJyc7CiRwcm9wbmFtZSAgICAgICAgICAgICA9ICcnOwokdG1wICAgICAgICAgICAgICAgICAgPSBbXTsKCiMKIyBSZWFkIFBhcmFtZXRlcnMKIwppZihpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpCnsKICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsICdwcm9wZXJ0aWVzJyk7CiAgCiAgcmV0dXJuOwp9CgppZihpc3NldCgkcGFyYW1zWydwcm9wbmFtZSddKSkKewogICRwcm9wbmFtZSA9IHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsICdwcm9wbmFtZScpOwogICR0aXRsZSAgICA9ICR0aGlzLT5MYW5nKCdlZGl0cHJvcCcsICRwcm9wbmFtZSk7CiAgJGRlZm4gICAgID0gJHRoaXMtPkdldFByb3BlcnR5RGVmbigkcHJvcG5hbWUpOwogIAogIGlmKCRkZWZuID09IEZBTFNFKQogIHsKICAgICRwYXJtcyAgICAgICAgICAgID0gW107CiAgICAkcGFybXNbJ2Vycm9yJ10gICA9IDE7CiAgICAkcGFybXNbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9wcm9wbm90Zm91bmQnKTsKICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwgJ3Byb3BlcnRpZXMnLCAkcGFybXMpOwogICAgCiAgICByZXR1cm47CiAgfQogIAogICR0bXAgPSAkdGhpcy0+R2V0U2VsZWN0T3B0aW9ucygkcHJvcG5hbWUpOwogIAogIGlmKCFlbXB0eSgkdG1wKSkKICB7CiAgICAkc2Vsb3B0aW9ucyA9IFtdOwogICAgCiAgICBmb3JlYWNoKCR0bXAgYXMgJGtleSA9PiAkdmFsKQogICAgewogICAgICAkc2Vsb3B0aW9uc1tdID0gKCRrZXkgPT09ICR2YWwpID8gJHZhbCA6ICIka2V5PSR2YWwiOwogICAgfQogICAgCiAgICAkc2Vsb3B0aW9ucyA9IGltcGxvZGUoIlxuIiwgJHNlbG9wdGlvbnMpOwogIH0KICAKICBpZihpc3NldCgkZGVmblsnYXR0cmlicyddKSAmJiAhZW1wdHkoJGRlZm5bJ2F0dHJpYnMnXSkpCiAgewogICAgJGF0dHJpYnMgPSB1bnNlcmlhbGl6ZSgkZGVmblsnYXR0cmlicyddKTsKICB9CiAgCn0KCmlmKGlzc2V0KCRwYXJhbXNbJ2lucHV0X3R5cGUnXSkpCnsKICAkZGVmblsndHlwZSddID0gKGludCkkcGFyYW1zWydpbnB1dF90eXBlJ107Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ2lucHV0X2xlbmd0aCddKSkKewogICRkZWZuWydsZW5ndGgnXSA9IChpbnQpJHBhcmFtc1snaW5wdXRfbGVuZ3RoJ107Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ2lucHV0X21heGxlbmd0aCddKSkKewogICRkZWZuWydtYXhsZW5ndGgnXSA9IChpbnQpJHBhcmFtc1snaW5wdXRfbWF4bGVuZ3RoJ107Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ2lucHV0X25hbWUnXSkpCnsKICAkZGVmblsnbmFtZSddID0gc3RydG9sb3dlcih4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCAnaW5wdXRfbmFtZScpKTsKICAkZGVmblsnbmFtZSddID0gbXVuZ2Vfc3RyaW5nX3RvX3VybCgkZGVmblsnbmFtZSddKTsKICAkZGVmblsnbmFtZSddID0gc3RyX3JlcGxhY2UoJy0nLCAnXycsICRkZWZuWyduYW1lJ10pOwp9CgppZihpc3NldCgkcGFyYW1zWydpbnB1dF9wcm9tcHQnXSkpCnsKICAkZGVmblsncHJvbXB0J10gPSB4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCAnaW5wdXRfcHJvbXB0Jyk7Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ2lucHV0X2ZvcmNlX3VuaXF1ZSddKSkKewogICRkZWZuWydmb3JjZV91bmlxdWUnXSA9IChpbnQpJHBhcmFtc1snaW5wdXRfZm9yY2VfdW5pcXVlJ107Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ2lucHV0X2VuY3J5cHQnXSkpCnsKICAkZGVmblsnZW5jcnlwdCddID0gKGludCkkcGFyYW1zWydpbnB1dF9lbmNyeXB0J107Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ2lucHV0X3NlbG9wdGlvbnMnXSkpCnsKICAkc2Vsb3B0aW9ucyA9IHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsICdpbnB1dF9zZWxvcHRpb25zJyk7CiAgLy8kc2Vsb3B0aW9ucyA9IGNtc19odG1sX2VudGl0eV9kZWNvZGUoJHNlbG9wdGlvbnMpOwogICRzZWxvcHRpb25zID0gXG1hbXNcY21zX2h0bWxfZW50aXR5X2RlY29kZSgkc2Vsb3B0aW9ucyk7Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ2lucHV0X3JhZGlvb3B0aW9ucyddKSkKewogICRzZWxvcHRpb25zID0geHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywgJ2lucHV0X3JhZGlvb3B0aW9ucycpOwogIC8vJHNlbG9wdGlvbnMgPSBjbXNfaHRtbF9lbnRpdHlfZGVjb2RlKCRzZWxvcHRpb25zKTsKICAkc2Vsb3B0aW9ucyA9IFxtYW1zXGNtc19odG1sX2VudGl0eV9kZWNvZGUoJHNlbG9wdGlvbnMpOwp9Cgpmb3JlYWNoKCRwYXJhbXMgYXMgJGtleSA9PiAkdmFsdWUpCnsKICBpZihzdGFydHN3aXRoKCRrZXksICdpbnB1dF9hdHRyaWJfJykpCiAgewogICAgJGF0dHJpYiAgICAgICAgICAgPSBzdWJzdHIoJGtleSwgMTMpOwogICAgJGF0dHJpYnNbJGF0dHJpYl0gPSAkdmFsdWU7CiAgfQp9CgppZihpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkpCnsKICBpZihlbXB0eSgkZGVmblsnbmFtZSddKSB8fCBlbXB0eSgkZGVmblsncHJvbXB0J10pKQogIHsKICAgICRzdGF0dXMgID0gJ2Vycm9yJzsKICAgICRtZXNzYWdlID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRwYXJhbXMnKTsKICB9CiAgCiAgaWYoZW1wdHkoJHN0YXR1cykgJiYgJHNlbG9wdGlvbnMpCiAgewogICAgJG9wdGlvbnMgPSBbXTsKICAgICR0bXAgICAgID0gc3RyX3JlcGxhY2UoWyJcclxuIiwgIlxyIiwgIlxuIl0sICd8OnwnICwgJHNlbG9wdGlvbnMpOwogICAgJHRtcCAgICAgPSBleHBsb2RlKCd8OnwnLCAkdG1wKTsKICAgIAogICAgZm9yZWFjaCgkdG1wIGFzICRsaW5lKQogICAgewogICAgICAkbGluZSA9IHRyaW0oJGxpbmUpOwogICAgICBpZignJyAhPT0gJGxpbmUpIHsgJG9wdGlvbnNbXSA9ICRsaW5lOyB9CiAgICB9CiAgfQogIAogIGZvcmVhY2goJHRtcCBhcyAkb25lKQogIHsKICAgICRvbmUgPSB0cmltKCRvbmUpOwogICAgCiAgICBpZighZW1wdHkoJG9uZSkpIHsgJG9wdGlvbnNbXSA9ICRvbmU7IH0KICB9CiAgCiAgaWYoZW1wdHkoJHN0YXR1cykpCiAgewogICAgc3dpdGNoKCRkZWZuWyd0eXBlJ10pCiAgICB7CiAgICAgIGNhc2UgJzAnOiAvKiB0ZXh0ICovCiAgICAgIGJyZWFrOwogICAgICBjYXNlICc2JzogLyogaW1hZ2UgKi8KICAgICAgICAkZGVmblsnbGVuZ3RoJ10gID0gMjU1OwogICAgICAgICRkZWZuWydlbmNyeXB0J10gPSAwOwogICAgICBicmVhazsKICAgICAgY2FzZSAnMic6IC8qIGVtYWlsICovCiAgICAgICAgLy8gZW1haWwgZmllbGRzIGNhbm5vdCBiZSBlbmNyeXB0ZWQuCiAgICAgICAgJGRlZm5bJ2VuY3J5cHQnXSA9IDA7CiAgICAgIGJyZWFrOwogICAgICBjYXNlIDE6ICAgLyogY2hlY2tib3ggKi8KICAgICAgICAkZGVmblsnbGVuZ3RoJ10gPSAxOwogICAgICBicmVhazsKICAgICAgY2FzZSAzOiAgIC8qIHRleHRhcmVhICovCiAgICAgICAgJGRlZm5bJ2xlbmd0aCddID0gMjU1OwogICAgICBicmVhazsKICAgICAgY2FzZSA0OgogICAgICBjYXNlIDU6CiAgICAgICAgJGRlZm5bJ2xlbmd0aCddID0gY291bnQoJG9wdGlvbnMpOwogICAgICBicmVhazsKICAgICAgY2FzZSA3OiAvKiByYWRpb2J1dHRvbnMgKi8KICAgICAgICAkZGVmblsnbGVuZ3RoJ10gPSBjb3VudCgkb3B0aW9ucyk7CiAgICAgIGJyZWFrOwogICAgICBjYXNlIDg6IC8qIGRhdGUgKi8KICAgICAgZGVmYXVsdDoKICAgICAgICAkZGVmblsnbGVuZ3RoJ10gPSAxOwogICAgICBicmVhazsKICAgIH0KICAgIAogICAgaWYoCiAgICAgICgoJGRlZm5bJ3R5cGUnXSA9PSAwIHx8ICRkZWZuWyd0eXBlJ10gPT0gMikgJiYKICAgICAgICgkZGVmblsnbGVuZ3RoJ10gPCAxIHx8ICRkZWZuWydsZW5ndGgnXSA+IDI1NSB8fCAkZGVmblsnbWF4bGVuZ3RoJ10gPCAxIHx8ICRkZWZuWydtYXhsZW5ndGgnXSA+IDEwMjQgfHwKICAgICAgICAkZGVmblsnbWF4bGVuZ3RoJ10gPCAkZGVmblsnbGVuZ3RoJ10pKSB8fAogICAgICAoKCRkZWZuWyd0eXBlJ10gPT0gNCB8fCAkZGVmblsndHlwZSddID09IDUgfHwgJGRlZm5bJ3R5cGUnXSA9PSA3KSAmJiAkc2Vsb3B0aW9ucyA9PSAnJykgfHwKICAgICAgKCgkZGVmblsndHlwZSddID09IDYpICYmICgkZGVmblsnbGVuZ3RoJ10gPCAxMCB8fCAkZGVmblsnbGVuZ3RoJ10gPiAxMDI0KSkKICAgICkKICAgIHsKICAgICAgJHN0YXR1cyAgPSAnZXJyb3InOwogICAgICAkbWVzc2FnZSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkcGFyYW1zJyk7CiAgICB9CiAgfQogIAogIGlmKGVtcHR5KCRzdGF0dXMpKQogIHsKICAgICRkZWZuWydhdHRyaWJzJ10gPSBzZXJpYWxpemUoJGF0dHJpYnMpOwogIH0KICAKICBpZihlbXB0eSgkc3RhdHVzKSkKICB7CiAgICBpZighZW1wdHkoJHByb3BuYW1lKSkKICAgIHsKICAgICAgJHRtcCA9ICR0aGlzLT5TZXRQcm9wZXJ0eURlZm4oCiAgICAgICAgJHByb3BuYW1lLCAkZGVmblsnbmFtZSddLCAkZGVmblsncHJvbXB0J10sICRkZWZuWydsZW5ndGgnXSwgJGRlZm5bJ3R5cGUnXSwgJGRlZm5bJ21heGxlbmd0aCddLCAkZGVmblsnYXR0cmlicyddLAogICAgICAgICRkZWZuWydmb3JjZV91bmlxdWUnXSwgJGRlZm5bJ2VuY3J5cHQnXQogICAgICApOwogICAgfQogICAgZWxzZQogICAgewogICAgICAvLyBOZXcgcHJvcGVydHkKICAgICAgJHRtcCA9ICR0aGlzLT5BZGRQcm9wZXJ0eURlZm4oCiAgICAgICAgJGRlZm5bJ25hbWUnXSwgJGRlZm5bJ3Byb21wdCddLCAkZGVmblsndHlwZSddLCAkZGVmblsnbGVuZ3RoJ10sICRkZWZuWydtYXhsZW5ndGgnXSwgJGRlZm5bJ2F0dHJpYnMnXSwKICAgICAgICAkZGVmblsnZm9yY2VfdW5pcXVlJ10sICRkZWZuWydlbmNyeXB0J10KICAgICAgKTsKICAgICAgaWYoISR0bXBbMF0pCiAgICAgIHsKICAgICAgICAkc3RhdHVzICA9ICdlcnJvcic7CiAgICAgICAgJG1lc3NhZ2UgPSAkdG1wWzFdOwogICAgICB9CiAgICB9CiAgfQogIAogIGlmKGVtcHR5KCRzdGF0dXMpICYmIGlzc2V0KCRvcHRpb25zKSAmJiAhZW1wdHkoJG9wdGlvbnMpKQogIHsKICAgIAogICAgaWYoIWVtcHR5KCRwcm9wbmFtZSkpCiAgICB7CiAgICAgICR0aGlzLT5EZWxldGVTZWxlY3RPcHRpb25zKCRwcm9wbmFtZSk7CiAgICB9CiAgICAKICAgICR0bXAgPSAkdGhpcy0+QWRkU2VsZWN0T3B0aW9ucygkZGVmblsnbmFtZSddLCAkb3B0aW9ucyk7CiAgICAKICAgIGlmKCEkdG1wWzBdKQogICAgewogICAgICAkc3RhdHVzICA9ICdlcnJvcic7CiAgICAgICRtZXNzYWdlID0gJHRtcFsxXTsKICAgIH0KICB9CiAgCiAgaWYoZW1wdHkoJHN0YXR1cykpCiAgewogICAgJHRoaXMtPlNldE1lc3NhZ2UoJHRoaXMtPkxhbmcoJ29wZXJhdGlvbl9jb21wbGV0ZWQnKSk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsICdwcm9wZXJ0aWVzJyk7CiAgfQogIAogIC8vCiAgLy8gaWYgd2UgZ2V0IGhlcmUsIGl0J3MgYW4gZXJyb3Igb2Ygc29tZSBzb3J0CiAgLy8KfQoKIwojIEdpdmUgZXZlcnl0aGluZyB0byBzbWFydHkKIwppZighZW1wdHkoJHN0YXR1cykpCnsKICAkc21hcnR5LT5hc3NpZ24oJ2Vycm9yJywgMSk7Cn0KCmlmKCFlbXB0eSgkbWVzc2FnZSkpCnsKICAkc21hcnR5LT5hc3NpZ24oJ21lc3NhZ2UnLCAkbWVzc2FnZSk7Cn0KCiRzbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdhZGRwcm9wJywgJHJldHVybmlkLCAncG9zdCcsICcnLCBGQUxTRSwgJycsICRwYXJhbXMpKTsKJHNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiRzbWFydHktPmFzc2lnbigndGl0bGUnLCAkdGl0bGUpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9uYW1lJywgJHRoaXMtPkxhbmcoJ25hbWUnKSk7CiRzbWFydHktPmFzc2lnbignaW5mb19uYW1lJywgJHRoaXMtPkxhbmcoJ2luZm9fbmFtZScpKTsKCiRxdWVyeSAgID0gJ1NFTEVDVCBjb3VudChpZCkgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX3VzZXJzJzsKJG51c2VycyAgPSAkZGItPkdldE9uZSgkcXVlcnkpOwokcXVlcnkgICA9ICdTRUxFQ1QgY291bnQoaWQpIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc19ncm91cHMnOwokbmdyb3VwcyA9ICRkYi0+R2V0T25lKCRxdWVyeSk7CgppZighZW1wdHkoJHByb3BuYW1lKSAmJiAoJG51c2VycyA+IDAgfHwgJG5ncm91cHMgPiAwKSkKewogICRzbWFydHktPmFzc2lnbigKICAgICdpbnB1dF9uYW1lJywKICAgICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdpbnB1dF9uYW1lJywgJHByb3BuYW1lKSAuICRwcm9wbmFtZQogICk7Cn0KZWxzZQp7CiAgJHNtYXJ0eS0+YXNzaWduKAogICAgJ2lucHV0X25hbWUnLAogICAgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdpbnB1dF9uYW1lJywgJGRlZm5bJ25hbWUnXSwgMzAsIDMwKQogICk7Cn0KCiRzbWFydHktPmFzc2lnbigncHJvbXB0X3Byb21wdCcsICR0aGlzLT5MYW5nKCdwcm9tcHQnKSk7CiRzbWFydHktPmFzc2lnbigKICAnaW5wdXRfcHJvbXB0JywKICAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2lucHV0X3Byb21wdCcsICRkZWZuWydwcm9tcHQnXSwgODAsIDI1NSkKKTsKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdHlwZScsICR0aGlzLT5MYW5nKCd0eXBlJykpOwokc21hcnR5LT5hc3NpZ24oCiAgJ2lucHV0X3R5cGUnLAogICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKAogICAgJGlkLCAnaW5wdXRfdHlwZScsICRmaWVsZHR5cGVzLCAtMSwgJGRlZm5bJ3R5cGUnXSwKICAgICdvbmNoYW5nZT0idGhpcy5mb3JtLnN1Ym1pdCgpOyInCiAgKQopOwoKaWYoJGRlZm5bJ3R5cGUnXSA9PSAwIHx8ICRkZWZuWyd0eXBlJ10gPT0gMikKewogICRzbWFydHktPmFzc2lnbigKICAgICdpbnB1dF9mb3JjZV91bmlxdWUnLAogICAgJHRoaXMtPkNyZWF0ZUlucHV0WWVzTm9Ecm9wZG93bigkaWQsICdpbnB1dF9mb3JjZV91bmlxdWUnLCAkZGVmblsnZm9yY2VfdW5pcXVlJ10pCiAgKTsKfQoKaWYoIWlzc2V0KCRwYXJhbXNbJ3Byb3BuYW1lJ10pKQp7CiAgJHNtYXJ0eS0+YXNzaWduKAogICAgJ2lucHV0X2VuY3J5cHQnLAogICAgJHRoaXMtPkNyZWF0ZUlucHV0WWVzTm9Ecm9wZG93bigkaWQsICdpbnB1dF9lbmNyeXB0JywgJGRlZm5bJ2VuY3J5cHQnXSkKICApOwp9CmVsc2UKewogICRzbWFydHktPmFzc2lnbignaW5wdXRfZW5jcnlwdCcsICRkZWZuWydlbmNyeXB0J10gPyAkdGhpcy0+TGFuZygneWVzJykgOiAkdGhpcy0+TGFuZygnbm8nKSk7Cn0KCiRzbWFydHktPmFzc2lnbignZGVmbicsICRkZWZuKTsKJHNtYXJ0eS0+YXNzaWduKAogICdvcmlnX3R5cGUnLAogICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdvcmlnX3R5cGUnLCAkZGVmblsndHlwZSddKQopOwokc21hcnR5LT5hc3NpZ24oCiAgJ3N1Ym1pdCcsCiAgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsICR0aGlzLT5MYW5nKCdzdWJtaXQnKSkKKTsKJHNtYXJ0eS0+YXNzaWduKAogICdjYW5jZWwnLAogICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdjYW5jZWwnLCAkdGhpcy0+TGFuZygnY2FuY2VsJykpCik7CgokZmxkcyA9IFtdOwpzd2l0Y2goJGRlZm5bJ3R5cGUnXSkKewogIGNhc2UgMDoKICBjYXNlIDI6CiAgICAkZmxkc1tdID0gWwogICAgICAkdGhpcy0+TGFuZygnbGVuZ3RoJykgLiAkdGhpcy0+TGFuZygnbGVuZ3RoY29tbWVudCcpLAogICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2lucHV0X2xlbmd0aCcsICRkZWZuWydsZW5ndGgnXSwgMywgMykKICAgIF07CiAgICAkZmxkc1tdID0gWwogICAgICAkdGhpcy0+TGFuZygnbWF4bGVuZ3RoJyksCiAgICAgICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnaW5wdXRfbWF4bGVuZ3RoJywgJGRlZm5bJ21heGxlbmd0aCddLCAzLCAzKQogICAgXTsKICBicmVhazsKICBjYXNlIDE6IC8vIGNoZWNrYm94CiAgICAkdmFsICAgID0gKGlzc2V0KCRhdHRyaWJzWydjaGVja2VkJ10pKSA/ICRhdHRyaWJzWydjaGVja2VkJ10gOiAwOwogICAgJGZsZHNbXSA9IFsKICAgICAgJHRoaXMtPkxhbmcoJ3Byb21wdF9kZmx0X2NoZWNrZWQnKSwKICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnaW5wdXRfYXR0cmliX2NoZWNrZWQnLCAxLCAkdmFsKQogICAgXTsKICBicmVhazsKICAKICBjYXNlIDM6CiAgICAkdmFsICAgID0gKGlzc2V0KCRhdHRyaWJzWyd3eXNpd3lnJ10pKSA/ICRhdHRyaWJzWyd3eXNpd3lnJ10gOiAwOwogICAgJGZsZHNbXSA9IFsKICAgICAgJHRoaXMtPkxhbmcoJ3Byb3BfdGV4dGFyZWFfd3lzaXd5ZycpLAogICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAnaW5wdXRfYXR0cmliX3d5c2l3eWcnLCAnMCcpIC4KICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnaW5wdXRfYXR0cmliX3d5c2l3eWcnLCAnMScsICR2YWwpCiAgICBdOzsKICBicmVhazsKICAKICBjYXNlIDQ6CiAgY2FzZSA1OgogICAgJGZsZHNbXSA9IFsKICAgICAgJHRoaXMtPkxhbmcoJ3NlbG9wdGlvbnMnKSwKICAgICAgLy8kdGhpcy0+Q3JlYXRlVGV4dEFyZWEoRkFMU0UsICRpZCwgJHNlbG9wdGlvbnMsICdpbnB1dF9zZWxvcHRpb25zJykKICAgICAgbWFtc191dGlsczo6Q3JlYXRlVGV4dEFyZWEoRkFMU0UsICRpZCwgJHNlbG9wdGlvbnMsICdpbnB1dF9zZWxvcHRpb25zJykKICAgIF07CiAgYnJlYWs7CiAgCiAgY2FzZSA2OgogICAgLy8gbm90aGluZyBoZXJlCiAgYnJlYWs7CiAgCiAgY2FzZSA3OgogICAgJGZsZHNbXSA9IFsKICAgICAgJHRoaXMtPkxhbmcoJ3JhZGlvb3B0aW9ucycpLAogICAgICAvLyR0aGlzLT5DcmVhdGVUZXh0QXJlYShGQUxTRSwgJGlkLCAkc2Vsb3B0aW9ucywgJ2lucHV0X3JhZGlvb3B0aW9ucycpCiAgICAgIG1hbXNfdXRpbHM6OkNyZWF0ZVRleHRBcmVhKEZBTFNFLCAkaWQsICRzZWxvcHRpb25zLCAnaW5wdXRfc2Vsb3B0aW9ucycpCiAgICBdOwogIGJyZWFrOwogIAogIGNhc2UgODogLyogZGF0ZSAqLwogICAgJGZsZHNbXSA9IFsKICAgICAgJHRoaXMtPkxhbmcoJ3N0YXJ0X3llYXInKSAuICc6JywKICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgKICAgICAgICAkaWQsICdpbnB1dF9hdHRyaWJfc3RhcnR5ZWFyJywKICAgICAgICAoaXNzZXQoJGF0dHJpYnNbJ3N0YXJ0eWVhciddKSkgPyAkYXR0cmlic1snc3RhcnR5ZWFyJ10gOiAnLTUnLAogICAgICAgIDQsIDQKICAgICAgKQogICAgXTsKICAgICRmbGRzW10gPSBbCiAgICAgICR0aGlzLT5MYW5nKCdlbmRfeWVhcicpIC4gJzonLAogICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KAogICAgICAgICRpZCwgJ2lucHV0X2F0dHJpYl9lbmR5ZWFyJywKICAgICAgICAoaXNzZXQoJGF0dHJpYnNbJ2VuZHllYXInXSkpID8gJGF0dHJpYnNbJ2VuZHllYXInXSA6ICcrMTAnLAogICAgICAgIDQsIDQKICAgICAgKQogICAgXTsKICBicmVhazsKICAKfQoKJHNtYXJ0eS0+YXNzaWduKCdmaWVsZHMnLCAkZmxkcyk7CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkZHByb3AudHBsJyk7CgpyZXR1cm47Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_ajax_quickfind.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFkZWZpbmVkKCdDTVNfVkVSU0lPTicpICkgeyBleGl0OyB9CmlmKCAhICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCd1c2VycycpICkgZXhpdDsKCiR0ZXJtID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCAkX1JFUVVFU1QsICd0ZXJtJyApOwokbGlzdCA9IG51bGw7CmlmKCBpc19udW1lcmljKCAkdGVybSApICYmIChpbnQpICR0ZXJtID4gMCApIHsKICAgIC8vIGFzc3VtZSBpdCdzIGEgdWlkLgogICAgJHNxbCA9ICdTRUxFQ1QgaWQsIHVzZXJuYW1lIEZST00gJy5DTVNfREJfUFJFRklYLidtb2R1bGVfbWFtc191c2VycyBXSEVSRSBDQVNUKGlkIEFTIENIQVIpIExJS0UgPyBMSU1JVCAxMCc7CiAgICAkbGlzdCA9ICRkYi0+R2V0QXJyYXkoICRzcWwsIFsgJyUnLiR0ZXJtLiclJyBdICk7CiAgICBkZWJ1Z190b19sb2coICRkYi0+c3FsICk7Cn0gZWxzZSB7CiAgICAvLyBhc3N1bWUgaXQncyBwYXJ0IG9mIHRoZSB1c2VybmFtZQogICAgJHNxbCA9ICdTRUxFQ1QgaWQsIHVzZXJuYW1lIEZST00gJy5DTVNfREJfUFJFRklYLidtb2R1bGVfbWFtc191c2VycyBXSEVSRSB1c2VybmFtZSBMSUtFID8gTElNSVQgMTAnOwogICAgJGxpc3QgPSAkZGItPkdldEFycmF5KCAkc3FsLCBbICclJy4kdGVybS4nJScgXSApOwp9CgppZiggIWlzX2FycmF5KCAkbGlzdCApIHx8ICFjb3VudCgkbGlzdCkgKSBleGl0OwoKJG91dCA9IG51bGw7CmZvcmVhY2goICRsaXN0IGFzICRvbmUgKSB7CiAgICAkb3V0W10gPSBbICdsYWJlbCc9PiRvbmVbJ3VzZXJuYW1lJ10uJyAoJy4kb25lWydpZCddLicpJywgJ3ZhbHVlJz0+JG9uZVsnaWQnXSBdOwp9Clx4dF91dGlsczo6c2VuZF9hamF4X2FuZF9leGl0KCAkb3V0ICk7]]></data>
	</file>
	<file>
	  <filename>/action.admin_anonimize_user.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVM7CmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIHsgZXhpdDsgfQppZiggISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCAndXNlcnMnICkgKSByZXR1cm47CiR0aGlzLT5TZXRDdXJyZW50VGFiKCd1c2VycycpOwoKdHJ5IHsKICAgICR1aWQgPSBceHRfcGFyYW06OmdldF9pbnQoICRwYXJhbXMsICd1aWQnICk7CgogICAgLy8gZ2VuZXJhdGUgYSB1bmlxdWUgZGlzYWJsZWQgdXNlcm5hbWUuLi4gc29tZXRoaW5nIHByZXR0eSBtdWNoIGd1YXJhbnRlZWQgdG8gYmUgdW5pcXVlCiAgICAkbmV3X3VzZXJuYW1lID0gJ3UnLnNoYTEoIHRpbWUoKS5fX0ZJTEVfXy5yYW5kKCkgKTsKICAgICRuZXdfcGFzc3dvcmQgPSBzaGExKCBzaGExKCB0aW1lKCkuX19GSUxFX18ucmFuZCgpICkgKTsKCiAgICAvLyB0b2RvOiBjaGVjayBpZiB0aGUgbmV3IHVzZXJuYW1lIGV4aXN0cwoKICAgIC8vIHNlbmQgYSBob29rIGJlZm9yZSBhbm9uaW1pemluZwogICAgXENNU01TXEhvb2tNYW5hZ2VyOjpkb19ob29rKCAnTUFNUzo6QmVmb3JlQW5vbmltaXplVXNlcicsICR1aWQgKTsKCiAgICAkZmlsZXMgPSAkdGhpcy0+R2V0VXNlckZpbGVzRnVsbCggJHVpZCwgVFJVRSApOwogICAgaWYoICRmaWxlcyApIHsKICAgICAgICAkcGF0aCA9ICR0aGlzLT5nZXRfdXBsb2FkX2Rpcm5hbWUoKTsKICAgICAgICBmb3JlYWNoKCAkZmlsZXMgYXMgJGZpbGUgKSB7CiAgICAgICAgICAgICRmbiA9ICIkcGF0aC8kZmlsZSI7CiAgICAgICAgICAgICR0biA9ICIkcGF0aC90aHVtYl97JGZpbGV9IjsKICAgICAgICAgICAgaWYoIGlzX2ZpbGUoJGZuKSAmJiAhaXNfd3JpdGFibGUoJGZuKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiSW5zdWZmaWNpZW50IHBlcm1pc3Npb24gdG8gcmVtb3ZlIHVzZXIgZmlsZSAkZmlsZSIpOwogICAgICAgICAgICBpZiggaXNfZmlsZSgkdG4pICYmICFpc193cml0YWJsZSgkdG4pICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCJJbnN1ZmZpY2llbnQgcGVybWlzc2lvbiB0byByZW1vdmUgdXNlciB0aHVtYm5haWwgZm9yICRmaWxlIik7CiAgICAgICAgICAgIGlmKCBpc19maWxlKCR0bikgKSB1bmxpbmsoJHRuKTsKICAgICAgICAgICAgaWYoIGlzX2ZpbGUoJGZuKSApIHVubGluaygkZm4pOwogICAgICAgIH0KICAgIH0KCiAgICAvLyBjbGVhciBhbGwgdGhlIHVzZXJzIHByb3BlcnRpZXMKICAgICR0aGlzLT5EZWxldGVBbGxVc2VyUHJvcGVydGllc0Z1bGwoICR1aWQgKTsKCiAgICAvLyB3ZSBhZGp1c3QgdGhlIHVzZXJuYW1lLCB0aGUgcGFzc3dvcmQsIGFuZCBkaXNhYmxlIHRoZSBhY2NvdW50CiAgICAkdGhpcy0+U2V0VXNlckRpc2FibGVkKCAkdWlkICk7CiAgICAkdGhpcy0+U2V0VXNlciggJHVpZCwgJG5ld191c2VybmFtZSwgJG5ld19wYXNzd29yZCApOwoKICAgIC8vIGRlbGV0ZSBhbGwgdXNlciBoaXN0b3J5CiAgICAkc3FsID0gJ0RFTEVURSBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfbWFtc19oaXN0b3J5IFdIRVJFIHVzZXJpZCA9ID8nOwogICAgJGRiLT5FeGVjdXRlKCAkc3FsLCBbICR1aWQgXSApOwoKICAgIC8vIHNlbmQgYSBob29rIGFmdGVyIGFub25pbWl6aW5nCiAgICBcQ01TTVNcSG9va01hbmFnZXI6OmRvX2hvb2soICdNQU1TOjpBZnRlckFub25pbWl6ZVVzZXInLCAkdWlkICk7CgogICAgYXVkaXQoJHVpZCwnTUFNUycsJ1VzZXIgYW5vbmltaXplZCcpOwoKICAgICR0aGlzLT5TZXRNZXNzYWdlKCAkdGhpcy0+TGFuZygnbXNnX2Fub25pbWl6ZWQnKSApOwogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsKfQpjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICR0aGlzLT5TZXRFcnJvcigkZS0+R2V0TWVzc2FnZSgpKTsKICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/action.admin_bulkactions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQp1c2UgXE1BTVNcdXNlcl9lZGl0X2Fzc2lzdGFudDsKaWYoICFpc3NldCggJGdDbXMgKSApIGV4aXQ7CiR0aGlzLT5TZXRDdXJyZW50VGFiKCd1c2VycycpOwoKJGRiID0gXHh0X3V0aWxzOjpnZXRfZGIoKTsKdHJ5IHsKICAgICRqb2IgPSB0cmltKCRwYXJhbXNbJ2pvYiddKTsKICAgICRzZWwgPSB1bnNlcmlhbGl6ZShiYXNlNjRfZGVjb2RlKCRwYXJhbXNbJ3VpZHMnXSkpOwogICAgJHNlbCA9IGFycmF5X3NsaWNlKCRzZWwsMCw1MDApOyAvLyBtYXhpbXVtIG9mIDUwMCBpZHMuCiAgICBpZiggIWlzX2FycmF5KCRzZWwpIHx8ICFjb3VudCgkc2VsKSApIHRocm93IG5ldyBcRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKSk7CgogICAgc3dpdGNoKCAkam9iICkgewogICAgY2FzZSAnZGVsZXRlJzoKICAgICAgICBpZiggISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdyZW1vdmV1c2VycycpICkgdGhyb3cgbmV3IFxFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKICAgICAgICB0cnkgewogICAgICAgICAgICAkZGItPkJlZ2luVHJhbnMoKTsKICAgICAgICAgICAgZm9yZWFjaCggJHNlbCBhcyAkb25ldWlkICkgewogICAgICAgICAgICAgICAgJHRoaXMtPkRlbGV0ZVVzZXJGdWxsKCAkb25ldWlkICk7CiAgICAgICAgICAgICAgICAkcGFybXMgPSBbICd1aWQnID0+ICRvbmV1aWQgXTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkZGItPkNvbW1pdFRyYW5zKCk7CiAgICAgICAgICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ0RlbGV0ZWQgJy5jb3VudCgkc2VsKS4nIHVzZXJzJyk7CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAkdGhpcy0+Um9sbGJhY2tUcmFucygpOwogICAgICAgICAgICB0aHJvdyAkZTsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAnZGlzYWJsZSc6CiAgICBjYXNlICdlbmFibGUnOgogICAgICAgIGlmKCAhJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ2VkaXR1c2VycycpICkgdGhyb3cgbmV3IFxFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKICAgICAgICB0cnkgewogICAgICAgICAgICAkZGItPkJlZ2luVHJhbnMoKTsKICAgICAgICAgICAgZm9yZWFjaCggJHNlbCBhcyAkb25ldWlkICkgewogICAgICAgICAgICAgICAgJHVzZXIgPSBuZXcgdXNlcl9lZGl0X2Fzc2lzdGFudCgkb25ldWlkKTsKICAgICAgICAgICAgICAgICR1c2VyLT5pc19kaXNhYmxlZCA9ICgkam9iID09ICdkaXNhYmxlJykgPyBUUlVFIDogRkFMU0U7CiAgICAgICAgICAgICAgICAkdXNlci0+c2F2ZSgpOwogICAgICAgICAgICAgICAgXENNU01TXEhvb2tNYW5hZ2VyOjpkb19ob29rKCdNQU1TOjpPblVwZGF0ZVVzZXInLCBbICduYW1lJz0+JHVzZXItPnVzZXJuYW1lLCAnaWQnPT4kdXNlci0+aWQgXSApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRkYi0+Q29tbWl0VHJhbnMoKTsKICAgICAgICAgICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnVG9nZ2xlZCBhY3RpdmUgc3RhdGUgb24gJy5jb3VudCgkc2VsKS4nIHVzZXJzJyk7CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAkZGItPlJvbGxiYWNrVHJhbnMoKTsKICAgICAgICAgICAgdGhyb3cgJGU7CiAgICAgICAgfQogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgJ2ZvcmNlY2hzZXR0aW5ncyc6CiAgICAgICAgaWYoICEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnZWRpdHVzZXJzJykgKSB0aHJvdyBuZXcgXEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRkYi0+QmVnaW5UcmFucygpOwogICAgICAgICAgICBmb3JlYWNoKCAkc2VsIGFzICRvbmV1aWQgKSB7CiAgICAgICAgICAgICAgICAkdXNlciA9IG5ldyB1c2VyX2VkaXRfYXNzaXN0YW50KCRvbmV1aWQpOwogICAgICAgICAgICAgICAgJHVzZXItPmZvcmNlX2NoYW5nZV9zZXR0aW5ncyA9IFRSVUU7CiAgICAgICAgICAgICAgICAkdXNlci0+c2F2ZSgpOwogICAgICAgICAgICAgICAgXENNU01TXEhvb2tNYW5hZ2VyOjpkb19ob29rKCdNQU1TOjpPblVwZGF0ZVVzZXInLCBbICduYW1lJz0+JHVzZXItPnVzZXJuYW1lLCAnaWQnPT4kdXNlci0+aWQgXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGRiLT5Db21taXRUcmFucygpOwogICAgICAgICAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdTZXQgZm9yY2UgY2hhbmdlIHNldHRpbmdzIGZvciAnLmNvdW50KCRzZWwpLicgdXNlcnMnKTsKICAgICAgICB9CiAgICAgICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgICRkYi0+Um9sbGJhY2tUcmFucygpOwogICAgICAgICAgICB0aHJvdyAkZTsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAnZm9yY2VjaHB3JzoKICAgICAgICBpZiggISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdlZGl0dXNlcnMnKSApIHRocm93IG5ldyBcRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJGRiLT5CZWdpblRyYW5zKCk7CiAgICAgICAgICAgIGZvcmVhY2goICRzZWwgYXMgJG9uZXVpZCApIHsKICAgICAgICAgICAgICAgICR1c2VyID0gbmV3IHVzZXJfZWRpdF9hc3Npc3RhbnQoJG9uZXVpZCk7CiAgICAgICAgICAgICAgICAkdXNlci0+Zm9yY2VfcGFzc3dvcmRfY2hhbmdlID0gVFJVRTsKICAgICAgICAgICAgICAgICR1c2VyLT5zYXZlKCk7CiAgICAgICAgICAgICAgICBcQ01TTVNcSG9va01hbmFnZXI6OmRvX2hvb2soJ01BTVM6Ok9uVXBkYXRlVXNlcicsIFsgJ25hbWUnPT4kdXNlci0+dXNlcm5hbWUsICdpZCc9PiR1c2VyLT5pZCBdKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkZGItPkNvbW1pdFRyYW5zKCk7CiAgICAgICAgICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ1NldCBmb3JjZSBjaGFuZ2UgcGFzc3dvcmQgZm9yICcuY291bnQoJHNlbCkuJyB1c2VycycpOwogICAgICAgIH0KICAgICAgICBjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAgICAgJGRiLT5Sb2xsYmFja1RyYW5zKCk7CiAgICAgICAgICAgIHRocm93ICRlOwogICAgICAgIH0KICAgICAgICBicmVhazsKCiAgICBjYXNlICdzZXRwYXNzd29yZCc6CiAgICAgICAgLy8gcmVxdWlyZXMgYSBmb3JtCiAgICAgICAgaWYoICEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnZWRpdHVzZXJzJykgKSB0aHJvdyBuZXcgXEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwogICAgICAgIGlmKCBpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkgKSB7CiAgICAgICAgICAgICR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdtc2dfY2FuY2VsbGVkJykpOwogICAgICAgICAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmKCBpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAkcGFzc3dkMSA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdwYXNzd29yZCcpOwogICAgICAgICAgICAgICAgJHBhc3N3ZDIgPSBceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywncmVwZWF0cGFzc3dvcmQnKTsKICAgICAgICAgICAgICAgIGlmKCAhJHRoaXMtPmlzVmFsaWRQYXNzd29yZCggJHBhc3N3ZDEgKSApIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkcGFzc3dvcmQnKSk7CiAgICAgICAgICAgICAgICBpZiggJHBhc3N3ZDEgIT0gJHBhc3N3ZDIgKSB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfcGFzc3dvcmRtaXNtYXRjaCcpKTsKCiAgICAgICAgICAgICAgICAkZGItPkJlZ2luVHJhbnMoKTsKICAgICAgICAgICAgICAgIGZvcmVhY2goICRzZWwgYXMgJG9uZXVpZCApIHsKICAgICAgICAgICAgICAgICAgICAkdXNlciA9IG5ldyB1c2VyX2VkaXRfYXNzaXN0YW50KCRvbmV1aWQpOwogICAgICAgICAgICAgICAgICAgICR1c2VyLT5uZXdfcGFzc3dvcmQgPSAkcGFzc3dkMTsKICAgICAgICAgICAgICAgICAgICAkdXNlci0+c2F2ZSgpOwogICAgICAgICAgICAgICAgICAgIFxDTVNNU1xIb29rTWFuYWdlcjo6ZG9faG9vaygnTUFNUzo6T25VcGRhdGVVc2VyJywgWyAnbmFtZSc9PiR1c2VyLT51c2VybmFtZSwgJ2lkJz0+JHVzZXItPmlkIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGRiLT5Db21taXRUcmFucygpOwogICAgICAgICAgICAgICAgJHRoaXMtPlNldG1lc3NhZ2UoJHRoaXMtPkxhbmcoJ29wZXJhdGlvbl9jb21wbGV0ZWQnKSk7CiAgICAgICAgICAgICAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdCdWxrIHJlc2V0IHBhc3N3b3JkIHRvICcuY291bnQoJHNlbCkuJyB1c2VycycpOwogICAgICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsgLy8gZG9uZQogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoKCBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAgICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkZS0+R2V0TWVzc2FnZSgpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAgICAgICAgICRkYi0+Um9sbGJhY2tUcmFucygpOwogICAgICAgICAgICAgICAgdGhyb3cgJGU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJHRwbCA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgnYWRtaW5fYnVsa19zZXRwYXNzd2QudHBsJyk7CiAgICAgICAgJHRwbC0+YXNzaWduKCd1aWRzJywkcGFyYW1zWyd1aWRzJ10pOwogICAgICAgICR0cGwtPmFzc2lnbignam9iJywkam9iKTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ3NlbGVjdGVkJywkc2VsKTsKICAgICAgICAkdHBsLT5kaXNwbGF5KCk7CiAgICAgICAgcmV0dXJuOwoKICAgIGNhc2UgJ3NldGV4cGlyeSc6CiAgICAgICAgLy8gcmVxdWlyZXMgYSBmb3JtCiAgICAgICAgaWYoICEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnZWRpdHVzZXJzJykgKSB0aHJvdyBuZXcgXEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwogICAgICAgIGlmKCBpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkgKSB7CiAgICAgICAgICAgICR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdtc2dfY2FuY2VsbGVkJykpOwogICAgICAgICAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmKCBpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAkbmV3X2V4cGlyZXMgPSBceHRfcGFyYW06OmdldF9zZXBhcmF0ZWRfZGF0ZSgkcGFyYW1zLCdleHBpcmVzJyk7CgogICAgICAgICAgICAgICAgJGRiLT5CZWdpblRyYW5zKCk7CiAgICAgICAgICAgICAgICBmb3JlYWNoKCAkc2VsIGFzICRvbmV1aWQgKSB7CiAgICAgICAgICAgICAgICAgICAgJHVzZXIgPSBuZXcgdXNlcl9lZGl0X2Fzc2lzdGFudCgkb25ldWlkKTsKICAgICAgICAgICAgICAgICAgICAkdXNlci0+ZXhwaXJlcyA9ICRuZXdfZXhwaXJlczsKICAgICAgICAgICAgICAgICAgICAkdXNlci0+c2F2ZSgpOwogICAgICAgICAgICAgICAgICAgIFxDTVNNU1xIb29rTWFuYWdlcjo6ZG9faG9vaygnTUFNUzo6T25VcGRhdGVVc2VyJywgWyAnbmFtZSc9PiR1c2VyLT51c2VybmFtZSwgJ2lkJz0+JHVzZXItPmlkIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGRiLT5Db21taXRUcmFucygpOwogICAgICAgICAgICAgICAgJHRoaXMtPlNldG1lc3NhZ2UoJHRoaXMtPkxhbmcoJ29wZXJhdGlvbl9jb21wbGV0ZWQnKSk7CiAgICAgICAgICAgICAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdBZGp1c3RlZCB0aGUgZXhwaXJ5IGRhdGUgZm9yICcuY291bnQoJHNlbCkuJyB1c2VycycpOwogICAgICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsgLy8gZG9uZQogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoKCBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAgICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkZS0+R2V0TWVzc2FnZSgpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAgICAgICAgICRkYi0+Um9sbGJhY2tUcmFucygpOwogICAgICAgICAgICAgICAgdGhyb3cgJGU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJHRwbCA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgnYWRtaW5fYnVsa19zZXRleHBpcnkudHBsJyk7CiAgICAgICAgJHRwbC0+YXNzaWduKCd1aWRzJywkcGFyYW1zWyd1aWRzJ10pOwogICAgICAgICR0cGwtPmFzc2lnbignam9iJywkam9iKTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ3NlbGVjdGVkJywkc2VsKTsKICAgICAgICAkdHBsLT5kaXNwbGF5KCk7CiAgICAgICAgcmV0dXJuOwoKICAgIGNhc2UgJyc6CiAgICAgICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsKICAgICAgICByZXR1cm47CgogICAgZGVmYXVsdDoKICAgICAgICAvLyBpbnZhbGlkIGpvYgogICAgICAgIHRocm93IG5ldyBcRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKSk7CiAgICB9CgogICAgJHRoaXMtPlNldG1lc3NhZ2UoJHRoaXMtPkxhbmcoJ29wZXJhdGlvbl9jb21wbGV0ZWQnKSk7Cn0KY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICBhdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCdGYWlsZWQgYnVsayB0cmFuc2FjdGlvbicpOwogICAgXHh0X3V0aWxzOjpsb2dfZXhjZXB0aW9uKCRlKTsKICAgICR0aGlzLT5TZXRFcnJvcigkZS0+R2V0TWVzc2FnZSgpKTsKfQoKJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsKCiMKIyBFT0YKIwo=]]></data>
	</file>
	<file>
	  <filename>/action.admin_deleteprop.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KaWYoICEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucyggJ2RlbGV0ZXByb3AnICkgKSByZXR1cm47CiR0aGlzLT5TZXRDdXJyZW50VGFiKCdwcm9wZXJ0aWVzJyk7Cgp0cnkgewogICAgJHByb3BuYW1lID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ3Byb3BuYW1lJyk7CiAgICBpZiggISRwcm9wbmFtZSApIHJldHVybjsKCiAgICAvLyBnZXQgdGhlIGRldGFpbHMgYWJvdXQgdGhpcyBwcm9wZXJ0eQogICAgLy8gbWFrZSBzdXJlIGl0J3Mgbm90IGEgcmVxdWlyZWQvaGlkZGVuIHByb3BlcnR5IGluIGFueSBncm91cCAoT0ZGIE9SIE9QVElPTkFMIG9ubHkpCiAgICAvLyBJRiBJVCBJUywgd2UgY2Fubm90IGRlbGV0ZSBpdC4uLiBzbyB3ZSBqdXN0IHRocm93IGFuIGV4Y2VwdGlvbiBhbmQgZ2V0IG91dGEgaGVyZQogICAgJGNhbl9kZWxldGUgPSBUUlVFOwogICAgJHByb3Bncm91cHMgPSAkdGhpcy0+R2V0UHJvcGVydHlHcm91cFJlbGF0aW9ucygkcHJvcG5hbWUpOwogICAgaWYoIGNvdW50KCRwcm9wZ3JvdXBzKSApIHsKICAgICAgICBmb3JlYWNoKCAkcHJvcGdyb3VwcyBhcyAkcmVjICkgewogICAgICAgICAgICBpZiggJHJlY1sncmVxdWlyZWQnXSA+IDEgKSB7CiAgICAgICAgICAgICAgICAkY2FuX2RlbGV0ZSA9IEZBTFNFOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBpZiggISRjYW5fZGVsZXRlICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9kZWxldGVfcHJvcGRlZm4nKSk7CgogICAgLy8gaGFuZGxlIHN1Ym1pdCAmIGNhbmNlbAogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2NhbmNlbCddKSApIHsKICAgICAgICAkdGhpcy0+U2V0TWVzc2FnZSgkdGhpcy0+TGFuZygnbXNnX2NhbmNlbGxlZCcpKTsKICAgICAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwogICAgfQogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSApIHsKICAgICAgICAkbWFtc19jb25maXJtID0gXHh0X3BhcmFtOjpnZXRfYm9vbCgkcGFyYW1zLCdtYW1zX2NvbmZpcm0nKTsKICAgICAgICBpZiggISRtYW1zX2NvbmZpcm0gKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2FjdGlvbl9ub3Rjb25maXJtZWQnKSk7CgogICAgICAgIC8vIG5vdyByZWFkeSB0byBkZWxldGUgdGhlIHByb3BlcnR5CiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5EZWxldGVQcm9wZXJ0eURlZm4oICRwcm9wbmFtZSApOwogICAgICAgIGlmKCAhJHJlc3VsdCApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfZGVsZXRlcHJvcCcpKTsKCiAgICAgICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnUmVtb3ZlZCBwcm9wZXJ0eXkgJy4kcHJvcG5hbWUpOwogICAgICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwncHJvcGVydGllcycpOwogICAgfQoKICAgIC8vIGdpdmUgdmVyeXRoaW5nIHRvIHNtYXJ0eQogICAgJHR5cGVzID0gJHRoaXMtPnR5cGVzOwogICAgdW5zZXQoJHR5cGVzWydkYXRhJ10pOwogICAgJGZpZWxkdHlwZXMgPSBhcnJheV9mbGlwKCR0aGlzLT5sYW5naWZ5S2V5cygkdHlwZXMpKTsKCiAgICAkZGVmbiA9ICR0aGlzLT5HZXRQcm9wZXJ0eURlZm4oJHByb3BuYW1lKTsKICAgICR0cGwgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJ2FkbWluX2RlbGV0ZXByb3AudHBsJyk7CiAgICAkdHBsLT5hc3NpZ24oJ2ZpZWxkdHlwZXMnLCRmaWVsZHR5cGVzKTsKICAgICR0cGwtPmFzc2lnbigncHJvcG5hbWUnLCRwcm9wbmFtZSk7CiAgICAkdHBsLT5hc3NpZ24oJ2RlZm4nLCRkZWZuKTsKICAgICR0cGwtPmFzc2lnbignZm9ybXN0YXJ0JywkdGhpcy0+WFRDcmVhdGVGb3JtU1RhcnQoJGlkLCdhZG1pbl9kZWxldGVwcm9wJywkcmV0dXJuaWQsYXJyYXkoJ3Byb3BuYW1lJz0+JHByb3BuYW1lKSkpOwogICAgJHRwbC0+YXNzaWduKCdmb3JtZW5kJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKICAgICR0cGwtPmRpc3BsYXkoKTsKfQpjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICR0aGlzLT5TZXRFcnJvcigkZS0+R2V0TWVzc2FnZSgpKTsKICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCk7Cn0KCgoKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.admin_doimport.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KJGhhbmRsZXJzID0gb2JfbGlzdF9oYW5kbGVycygpOwpmb3IgKCRjbnQgPSAwOyAkY250IDwgc2l6ZW9mKCRoYW5kbGVycyk7ICRjbnQrKykgeyBvYl9lbmRfY2xlYW4oKTsgfQppZiggISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCd1c2VycycpICkgZXhpdDsKJGZpbGUgPSB4dF91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJ2ZpbGUnKTsKaWYoICEkZmlsZSApIGV4aXQ7CiRmaWxlID0gVE1QX0NBQ0hFX0xPQ0FUSU9OLiIvJGZpbGUiOwppZiggIWlzX3JlYWRhYmxlKCRmaWxlKSApIGV4aXQ7CiRub3cgPSB0aW1lKCk7CgokaW1hZ2VEaXIgPSAkZ0Ntcy0+Y29uZmlnWyd1cGxvYWRzX3BhdGgnXS5ESVJFQ1RPUllfU0VQQVJBVE9SOwokaW1hZ2VEaXIgLj0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ltYWdlX2Rlc3RpbmF0aW9uX3BhdGgnLCAnbWFtcycpOwoKJHRtcCA9ICR0aGlzLT5YVEdldFByZWZlcmVuY2UoJ2ltcG9ydHByZWZzJyk7CmlmKCAhJHRtcCApIGV4aXQ7CiRpbXBvcnRwcmVmcyA9IHVuc2VyaWFsaXplKCR0bXApOwoKJHByb2dyZXNzX21heCA9IGZ1bmN0aW9uKCR2YWwpIHsKICAgICR2YWwgPSAoaW50KSR2YWw7CiAgICAkdmFsID0gbWF4KDEsJHZhbCk7CiAgICBlY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+cGFyZW50LmltcG9ydF9wcm9ncmVzc19tYXgoJy4kdmFsLicpOzwvc2NyaXB0Pic7CiAgICBmbHVzaCgpOwp9OwokcHJvZ3Jlc3Nfc2V0ID0gZnVuY3Rpb24oJHZhbCkgewogICAgJHZhbCA9IChpbnQpJHZhbDsKICAgICR2YWwgPSBtYXgoMSwkdmFsKTsKICAgIGVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5wYXJlbnQuaW1wb3J0X3Byb2dyZXNzX3NldCgnLiR2YWwuJyk7PC9zY3JpcHQ+JzsKICAgIGZsdXNoKCk7Cn07CiRpbXBvcnRfc3RhdHVzID0gZnVuY3Rpb24oJG1zZykgewogICAgJG1zZyA9IHRyaW0oJG1zZyk7CiAgICBpZiggISRtc2cgKSByZXR1cm47CiAgICBlY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+cGFyZW50LmltcG9ydF9zdGF0dXMoXCcnLiRtc2cuJ1wnKTs8L3NjcmlwdD4nOwogICAgZmx1c2goKTsKfTsKJGltcG9ydF93YXJuaW5nID0gZnVuY3Rpb24oJG1zZykgewogICAgJG1zZyA9IHRyaW0oJG1zZyk7CiAgICBpZiggISRtc2cgKSByZXR1cm47CiAgICBlY2hvICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+cGFyZW50LmltcG9ydF93YXJuaW5nKFwnJy4kbXNnLidcJyk7PC9zY3JpcHQ+JzsKICAgIGZsdXNoKCk7Cn07CiRpbXBvcnRfZXJyb3IgPSBmdW5jdGlvbigkbXNnKSB7CiAgICAkbXNnID0gdHJpbSgkbXNnKTsKICAgIGlmKCAhJG1zZyApIHJldHVybjsKICAgIGVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5wYXJlbnQuaW1wb3J0X2Vycm9yKFwnJy4kbXNnLidcJyk7PC9zY3JpcHQ+JzsKICAgIGZsdXNoKCk7Cn07CiRpbXBvcnRfZXJyb3JfbGluZSA9IGZ1bmN0aW9uKCRsaW5lbnVtLCRtc2cpIHsKICAgICRsaW5lbnVtID0gKGludCkkbGluZW51bTsKICAgICRtc2cgPSB0cmltKCRtc2cpOwogICAgaWYoICEkbXNnICkgcmV0dXJuOwogICAgZWNobyAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPnBhcmVudC5pbXBvcnRfZXJyb3IoXCcnLiRsaW5lbnVtLic6ICcuJG1zZy4nXCcpOzwvc2NyaXB0Pic7CiAgICBmbHVzaCgpOwp9OwokaW1wb3J0X2ZpbmlzaCA9IGZ1bmN0aW9uKCkgewogICAgZWNobyAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPnBhcmVudC5pbXBvcnRfZmluaXNoKCk7PC9zY3JpcHQ+JzsKICAgIGZsdXNoKCk7Cn07CiRjbGVhbl9maWVsZHMgPSBmdW5jdGlvbigkdGhlX2FycmF5KSB7CiAgICBmb3JlYWNoKCAkdGhlX2FycmF5IGFzICYkZWxlbSApIHsKICAgICAgICAkZWxlbSA9IHRyaW0odHJpbSgkZWxlbSwnIlwnJykpOwogICAgfQogICAgcmV0dXJuICR0aGVfYXJyYXk7Cn07CiRnZXRfZmllbGQgPSBmdW5jdGlvbigkY29sdW1ucywkZmllbGRtYXAsJGZpZWxkKSB7CiAgICBpZiggISRmaWVsZCApIHRocm93IG5ldyBFeGNlcHRpb24oJ0ludmFsaWQgZmllbGQgc3BlY2lmaWVkICcuJGZpZWxkKTsKICAgICRpZHggPSBhcnJheV9zZWFyY2goJGZpZWxkLCRmaWVsZG1hcCk7CiAgICBpZiggJGlkeCA9PT0gRkFMU0UgKSByZXR1cm47CiAgICBpZiggaXNzZXQoJGNvbHVtbnNbJGlkeF0pICkgcmV0dXJuICRjb2x1bW5zWyRpZHhdOwp9OwokYWxsX2NvbHVtbnNfZW1wdHkgPSBmdW5jdGlvbigkY29sdW1ucykgewogICAgZm9yZWFjaCggJGNvbHVtbnMgYXMgJGNvbCApIHsKICAgICAgICBpZiggJGNvbCApIHJldHVybiBGQUxTRTsKICAgIH0KICAgIHJldHVybiBUUlVFOwp9OwoKdHJ5IHsKICAgICRmaWxlc2l6ZSA9IGZpbGVzaXplKCRmaWxlKTsKICAgICRmaCA9IGZvcGVuKCRmaWxlLCdyJyk7CiAgICAkbGluZV9udW0gPSAwOwogICAgJHByb2Nlc3NlZF9saW5lcyA9IDA7CiAgICAkaGF2ZV9oZWFkZXIgPSAwOwogICAgJGZpZWxkbWFwID0gbnVsbDsKICAgICRncm91cHMgPSAkdGhpcy0+R2V0R3JvdXBMaXN0KCk7CiAgICAkcHJvcGRlZm5zID0gJHRoaXMtPkdldFByb3BlcnR5RGVmbnMoKTsKICAgICRyZWxucyA9IGFycmF5KCk7CiAgICBmb3JlYWNoKCAkZ3JvdXBzIGFzICRnbmFtZSA9PiAkZ2lkICkgewogICAgICAgICRyZWxuc1skZ25hbWVdID0gJHRoaXMtPkdldEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoJGdpZCk7CiAgICB9CiAgICAkdG1wID0gbWF4KDEsKGludCkkdGhpcy0+WFRHZXRQcmVmZXJlbmNlKCdleHBpcmVhZ2VfbW9udGhzJyw1MjApKTsKICAgICRkZmx0X2V4cGlyeSA9IHN0cnRvdGltZShzcHJpbnRmKCcrICVkIG1vbnRocycsJHRtcCkpOwogICAgJGRmbHRfcGFzc3dvcmQgPSAnY2hhbmdlbWUnOwogICAgJGVycm9yX3VzZXJzID0gYXJyYXkoKTsKICAgICRhbGxfdXNlcnMgPSBudWxsOwogICAgewogICAgICAgICRxdWVyeSA9IG5ldyBtYW1zX3VzZXJfcXVlcnkoKTsKICAgICAgICAkcnMgPSAkcXVlcnktPmV4ZWN1dGUoKTsKICAgICAgICB3aGlsZSggISRycy0+RU9GICkgewogICAgICAgICAgICAkZmxkcyA9ICRycy0+ZmllbGRzOwogICAgICAgICAgICAkYWxsX3VzZXJzWyRmbGRzWyd1c2VybmFtZSddXSA9ICRmbGRzWydpZCddOwogICAgICAgICAgICAkcnMtPk1vdmVOZXh0KCk7CiAgICAgICAgfQogICAgfQogICAgJHRvdWNoZWRfZ2lkcyA9IGFycmF5KCk7CiAgICAkdG91Y2hlZF91aWRzID0gYXJyYXkoKTsKCiAgICAkcHJvZ3Jlc3NfbWF4KCRmaWxlc2l6ZSk7CiAgICB3aGlsZSggIWZlb2YoJGZoKSApIHsKICAgICAgICBzZXRfdGltZV9saW1pdCgzMCk7CiAgICAgICAgJHByb2dyZXNzX3NldChmdGVsbCgkZmgpKTsKICAgICAgICAkcmVjID0gZmdldGNzdigkZmgpOwogICAgICAgICRsaW5lX251bSsrOwoKICAgICAgICBpZiggIWlzX2FycmF5KCRyZWMpIHx8ICFjb3VudCgkcmVjKSApIGNvbnRpbnVlOwoKICAgICAgICAkcHJvY2Vzc2VkX2xpbmVzKys7CiAgICAgICAgaWYoICRwcm9jZXNzZWRfbGluZXMgPT0gMSApIHsKICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gcHJvY2VzcyB0aGUgaGVhZGVyCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIGlmKCAhc3RhcnRzd2l0aCgkcmVjWzBdLCcjIycpICkgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW1wb3J0ZmlsZWZvcm1hdCcpKTsKICAgICAgICAgICAgJGZpZWxkbWFwID0gJHJlYzsKICAgICAgICAgICAgJGZpZWxkbWFwWzBdID0gc3Vic3RyKCRmaWVsZG1hcFswXSwyKTsKICAgICAgICAgICAgJGZpZWxkbWFwID0gJGNsZWFuX2ZpZWxkcygkZmllbGRtYXApOwogICAgICAgICAgICBpZiggIWluX2FycmF5KCd1c2VybmFtZScsJGZpZWxkbWFwKSApIHRocm93IG5ldyBFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2ltcG9ydHJlcXVpcmVkZmllbGQnLCd1c2VybmFtZScpKTsKICAgICAgICAgICAgaWYoICFpbl9hcnJheSgnZ3JvdXBuYW1lJywkZmllbGRtYXApICkgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW1wb3J0cmVxdWlyZWRmaWVsZCcsJ2dyb3VwbmFtZScpKTsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQoKICAgICAgICAvLwogICAgICAgIC8vIHByb2Nlc3NpbmcgYSBkYXRhIGxpbmUKICAgICAgICAvLwogICAgICAgICRjb2x1bW5zID0gJHJlYzsKICAgICAgICAkY29sdW1ucyA9ICRjbGVhbl9maWVsZHMoJGNvbHVtbnMpOwoKICAgICAgICBpZiggJGFsbF9jb2x1bW5zX2VtcHR5KCRjb2x1bW5zKSApIGNvbnRpbnVlOwoKICAgICAgICBpZiggY291bnQoJGNvbHVtbnMpIDwgY291bnQoJGZpZWxkbWFwKSAtIDEgfHwgY291bnQoJGNvbHVtbnMpID4gY291bnQoJGZpZWxkbWFwKSApIHsKICAgICAgICAgICAgJGltcG9ydF9lcnJvcl9saW5lKCRsaW5lX251bSwkdGhpcy0+TGFuZygnZXJyb3JfaW1wb3J0X2NvbHVtbmNvdW50JykpOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgaWYoIGNvdW50KCRjb2x1bW5zKSA8IGFycmF5X3NlYXJjaCgndXNlcm5hbWUnLCRmaWVsZG1hcCkgKSB7CiAgICAgICAgICAgICRpbXBvcnRfZXJyb3JfbGluZSgkbGluZV9udW0sJHRoaXMtPkxhbmcoJ2Vycm9yX2ltcG9ydF9jb2x1bW5jb3VudCcpKTsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQoKICAgICAgICAvLyBnZXQgdGhlIHVzZXIgcmVjLgogICAgICAgICR1c2VyID0gYXJyYXkoJ3VzZXJuYW1lJz0+JycsJ3Bhc3N3b3JkJz0+JycsJ2duYW1lJz0+bnVsbCwnZXhwaXJlcyc9Pm51bGwsJ3Byb3BzJz0+YXJyYXkoKSk7CiAgICAgICAgJHVzZXJbJ3VzZXJuYW1lJ10gPSAkZ2V0X2ZpZWxkKCRjb2x1bW5zLCRmaWVsZG1hcCwndXNlcm5hbWUnKTsKICAgICAgICAkdXNlclsncGFzc3dvcmQnXSA9ICRnZXRfZmllbGQoJGNvbHVtbnMsJGZpZWxkbWFwLCd0eHRwYXNzd29yZCcpOwogICAgICAgICR1c2VyWydjcmVhdGVkYXRlJ10gPSAkZ2V0X2ZpZWxkKCRjb2x1bW5zLCRmaWVsZG1hcCwnY3JlYXRlZGF0ZScsJG5vdyk7CiAgICAgICAgJHVzZXJbJ2V4cGlyZXMnXSA9ICRnZXRfZmllbGQoJGNvbHVtbnMsJGZpZWxkbWFwLCdleHBpcmVzJywkbm93KTsKICAgICAgICAkZ25hbWVzID0gJGdldF9maWVsZCgkY29sdW1ucywkZmllbGRtYXAsJ2dyb3VwbmFtZScpOwogICAgICAgIGlmKCAhJGduYW1lcyApIHsKICAgICAgICAgICAgJGltcG9ydF9lcnJvcl9saW5lKCRsaW5lX251bSwkdGhpcy0+TGFuZygnZXJyb3JfaW1wb3J0Z3JvdXBuYW1lJywkZ25hbWUpKTsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgICRnbmFtZXMgPSAkY2xlYW5fZmllbGRzKGV4cGxvZGUoJywnLCRnbmFtZXMpKTsKICAgICAgICB0cnkgewogICAgICAgICAgICBmb3JlYWNoKCAkZ25hbWVzIGFzICRnbmFtZSApIHsKICAgICAgICAgICAgICAgIGlmKCAhaXNzZXQoJGdyb3Vwc1skZ25hbWVdKSApIHRocm93IG5ldyBFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2ltcG9ydGdyb3VwbmFtZScsJGduYW1lKSk7CiAgICAgICAgICAgICAgICBpZiggIWlzc2V0KCRyZWxuc1skZ25hbWVdKSApIHRocm93IG5ldyBFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2ltcG9ydGdyb3VwbmFtZScsJGduYW1lKSk7CgogICAgICAgICAgICAgICAgZm9yZWFjaCggJHJlbG5zWyRnbmFtZV0gYXMgJHJlbG4gKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoZSByZXF1aXJlZCBmaWVsZHMgZm9yIHRoaXMgZ3JvdXAgYXJlIGF2YWlsYWJsZSBpbiB0aGUgZmllbGQgbWFwCiAgICAgICAgICAgICAgICAgICAgaWYoICRyZWxuWydyZXF1aXJlZCddID09IDIgJiYgIWluX2FycmF5KCRyZWxuWyduYW1lJ10sJGZpZWxkbWFwKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW1wb3J0cmVxdWlyZWRmaWVsZCcsJHJlbG5bJ25hbWUnXSkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAvLyBhZGQgdGhlIGZpZWxkIHRvIHRoZSB1c2VyIHJlYwogICAgICAgICAgICAgICAgICAgICR0bXAgPSAkZ2V0X2ZpZWxkKCRjb2x1bW5zLCRmaWVsZG1hcCwkcmVsblsnbmFtZSddKTsKICAgICAgICAgICAgICAgICAgICBpZiggJHRtcCApICR1c2VyWydwcm9wcyddWyRyZWxuWyduYW1lJ11dID0gJHRtcDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjYXRjaCggRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAkaW1wb3J0X2Vycm9yX2xpbmUoJGxpbmVfbnVtLCRlLT5HZXRNZXNzYWdlKCkpOwogICAgICAgICAgICBpZiggJHVzZXJbJ3VzZXJuYW1lJ10gKSAkZXJyb3JfdXNlcnNbXSA9ICR1c2VyWyd1c2VybmFtZSddOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICAgIC8vIHZhbGlkYXRlIHRoZSB1c2VyIHJlYy4KICAgICAgICBpZiggIXh0X3V0aWxzOjpnZXRfcGFyYW0oJHVzZXIsJ3VzZXJuYW1lJykgKSB7CiAgICAgICAgICAgICRpbXBvcnRfZXJyb3JfbGluZSgkbGluZV9udW0sJHRoaXMtPkxhbmcoJ2Vycm9yX2ltcG9ydHJlcXVpcmVkZmllbGQnLCd1c2VybmFtZScpKTsKICAgICAgICAgICAgaWYoICR1c2VyWyd1c2VybmFtZSddICkgJGVycm9yX3VzZXJzW10gPSAkdXNlclsndXNlcm5hbWUnXTsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQoKICAgICAgICBpZiggIXh0X3V0aWxzOjpnZXRfcGFyYW0oJHVzZXIsJ2NyZWF0ZWRhdGUnKSApICR1c2VyWydjcmVhdGVkYXRlJ10gPSAkbm93OwogICAgICAgIGlmKCAhaXNfaW50KCR1c2VyWydjcmVhdGVkYXRlJ10pICkgJHVzZXJbJ2NyZWF0ZWRhdGUnXSA9IHN0cnRvdGltZSgkdXNlclsnY3JlYXRlZGF0ZSddKTsKICAgICAgICBpZiggIWlzX2ludCgkdXNlclsnZXhwaXJlcyddKSApICR1c2VyWydleHBpcmVzJ10gPSBzdHJ0b3RpbWUoJHVzZXJbJ2V4cGlyZXMnXSk7CiAgICAgICAgLy8geWVwLCBhZ2Fpbi4KICAgICAgICBpZiggIXh0X3V0aWxzOjpnZXRfcGFyYW0oJHVzZXIsJ2NyZWF0ZWRhdGUnKSApICR1c2VyWydjcmVhdGVkYXRlJ10gPSAkbm93OwogICAgICAgIGlmKCAheHRfdXRpbHM6OmdldF9wYXJhbSgkdXNlciwnZXhwaXJlcycpICkgJHVzZXJbJ2V4cGlyZXMnXSA9ICRkZmx0X2V4cGlyeTsKICAgICAgICB0cnkgewogICAgICAgICAgICBmb3JlYWNoKCAkZ25hbWVzIGFzICRnbmFtZSApIHsKICAgICAgICAgICAgICAgIGZvcmVhY2goICRyZWxuc1skZ25hbWVdIGFzICRyZWxuICkgewogICAgICAgICAgICAgICAgICAgICR2YWwgPSB4dF91dGlsczo6Z2V0X3BhcmFtKCR1c2VyWydwcm9wcyddLCRyZWxuWyduYW1lJ10pOwogICAgICAgICAgICAgICAgICAgIGlmKCAkcmVsblsncmVxdWlyZWQnXSA9PSAyICYmICEkdmFsICkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHZhbGlkYXRlcyB0aGF0IGEgcmVxdWlyZWQgZmllbGQgZm9yIG91ciBkZXN0aW5hdGlvbiBncm91cCBpcyBmaWxsZWQgaW4KICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW1wb3J0cmVxdWlyZWRmaWVsZCcsJHJlbG5bJ25hbWUnXSkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiggJHZhbCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgaGF2ZSBhIHZhbHVlIGZvciB0aGlzIHByb3BlcnR5CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBwcm9wZXJ0eSBpcyBhIGRyb3Bkb3duIG9yIG11bHRpc2VsZWN0LCBtYWtlIHN1cmUgdGhlIHZhbHVlIGlzIHZhbGlkLgogICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2goICRwcm9wZGVmbnNbJHJlbG5bJ25hbWUnXV1bJ3R5cGUnXSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAkdGhpczo6RklFTERUWVBFX0RBVEU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggaXNfaW50KCR2YWwpICYmICR2YWwgPCAwICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2ltcG9ydGZpZWxkdmFsdWUnLCRyZWxuWyduYW1lJ10pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYoIHN0cnRvdGltZSgkdmFsKSA8IDEgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW1wb3J0ZmllbGR2YWx1ZScsJHJlbG5bJ25hbWUnXSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICR0aGlzOjpGSUVMRFRZUEVfRU1BSUw6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggIWlzX2VtYWlsKCR2YWwpICkgdGhyb3cgbmV3IEV4Y2VwdGlvbigiJHZhbCBpZCBub3QgYSB2YWxpZCBlbWFpbCBhZGRyZXNzIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggIWlzX2VtYWlsKCR2YWwpICkgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW1wb3J0ZmllbGR2YWx1ZScsJHJlbG5bJ25hbWUnXSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICR0aGlzOjpGSUVMRFRZUEVfSU1BR0U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBqdXN0IGVuc3VyZSB0aGF0IHRoZSBpbWFnZSBleGlzdHMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmlsZXNwZWMgPSAkaW1hZ2VEaXIuJy8nLiR2YWw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggIWZpbGVfZXhpc3RzKCRmaWxlc3BlYykgKSB0aHJvdyBuZXcgRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbXBvcnRmaWVsZHZhbHVlJywkcmVsblsnbmFtZSddKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJHRoaXM6OkZJRUxEVFlQRV9NVUxUSVNFTEVDVDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvcHRzID0gYXJyYXlfZmxpcCgkdGhpcy0+R2V0U2VsZWN0T3B0aW9ucygkcmVsblsnbmFtZSddKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmFscyA9ICRjbGVhbl9maWVsZHMoZXhwbG9kZSgnLCcsJHZhbCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCggJHZhbHMgYXMgJG9uZXZhbCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggIWlzc2V0KCRvcHRzWyRvbmV2YWxdKSApIHRocm93IG5ldyBFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2ltcG9ydGZpZWxkdmFsdWUnLCRyZWxuWyduYW1lJ10pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAkdGhpczo6RklFTERUWVBFX0RST1BET1dOOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICR0aGlzOjpGSUVMRFRZUEVfUkFESU9CVVROUzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvcHRzID0gYXJyYXlfZmxpcCgkdGhpcy0+R2V0U2VsZWN0T3B0aW9ucygkcmVsblsnbmFtZSddKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggIWlzc2V0KCRvcHRzWyR2YWxdKSApIHRocm93IG5ldyBFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2ltcG9ydGZpZWxkdmFsdWUnLCRyZWxuWyduYW1lJ10pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgICRpbXBvcnRfZXJyb3JfbGluZSgkbGluZV9udW0sJGUtPkdldE1lc3NhZ2UoKSk7CiAgICAgICAgICAgIGlmKCAkdXNlclsndXNlcm5hbWUnXSApICRlcnJvcl91c2Vyc1tdID0gJHVzZXJbJ3VzZXJuYW1lJ107CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KCiAgICAgICAgLy8gZG8gdGhlIGFkZCBvciB1cGRhdGUuCiAgICAgICAgJHVpZCA9IG51bGw7CiAgICAgICAgaWYoIGlzc2V0KCRhbGxfdXNlcnNbJHVzZXJbJ3VzZXJuYW1lJ11dKSApIHsKICAgICAgICAgICAgLy8gdXBkYXRlIHRoZSB1c2VyLgogICAgICAgICAgICAkdWlkID0gJGFsbF91c2Vyc1skdXNlclsndXNlcm5hbWUnXV07CiAgICAgICAgICAgICR0bXAgPSAkdGhpcy0+U2V0VXNlcigkdWlkLCR1c2VyWyd1c2VybmFtZSddLCR1c2VyWydwYXNzd29yZCddLCR1c2VyWydleHBpcmVzJ10pOwogICAgICAgICAgICBpZiggIWlzX2FycmF5KCR0bXApIHx8ICR0bXBbMF0gPT09IEZBTFNFICkgewogICAgICAgICAgICAgICAgJGltcG9ydF9lcnJvcl9saW5lKCRsaW5lX251bSwkdGhpcy0+TGFuZygnZXJyb3JfaW1wb3J0dXBkYXRldXNlcicsJHRtcFsxXSkpOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoICR1c2VyWydjcmVhdGVkYXRlJ10gJiYgJHVzZXJbJ2NyZWF0ZWRhdGUnXSA8ICgkbm93IC0gOTApICkgewogICAgICAgICAgICAgICAgJHNxbCA9ICdVUERBVEUgJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX3VzZXJzIFNFVCBjcmVhdGVkYXRlID0gPyBXSEVSRSBpZCA9ID8nOwogICAgICAgICAgICAgICAgJHRtcCA9IHRyaW0oJGRiLT5EYlRpbWVTdGFtcCgkdXNlclsnY3JlYXRlZGF0ZSddKSwiJyIpOwogICAgICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCRzcWwsIFsgJHRtcCwgJHVpZCBdICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGdpZGxpc3QgPSBhcnJheSgpOwogICAgICAgICAgICBmb3JlYWNoKCAkZ25hbWVzIGFzICRnbmFtZSApIHsKICAgICAgICAgICAgICAgICRnaWRsaXN0W10gPSAkZ3JvdXBzWyRnbmFtZV07CiAgICAgICAgICAgICAgICBpZiggIWluX2FycmF5KCRncm91cHNbJGduYW1lXSwkdG91Y2hlZF9naWRzKSApICR0b3VjaGVkX2dpZHNbXSA9ICRncm91cHNbJGduYW1lXTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdGhpcy0+U2V0VXNlckdyb3VwcygkdWlkLCRnaWRsaXN0KTsKICAgICAgICAgICAgJHRoaXMtPlNldFVzZXJQcm9wZXJ0aWVzKCR1aWQsJHVzZXJbJ3Byb3BzJ10pOwogICAgICAgICAgICAkaW1wb3J0X3N0YXR1cygndXBkYXRlZCB1c2VyICcuJHVzZXJbJ3VzZXJuYW1lJ10pOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgLy8gaW5zZXJ0IHRoZSB1c2VyCiAgICAgICAgICAgIGlmKCAheHRfdXRpbHM6OmdldF9wYXJhbSgkdXNlciwncGFzc3dvcmQnKSApICR1c2VyWydwYXNzd29yZCddID0gJGRmbHRfcGFzc3dvcmQ7CiAgICAgICAgICAgIGlmKCAheHRfdXRpbHM6OmdldF9wYXJhbSgkdXNlciwnZXhwaXJlcycpICkgJHVzZXJbJ2V4cGlyZXMnXSA9ICRkZmx0X2V4cGlyeTsKICAgICAgICAgICAgJHRtcCA9ICR0aGlzLT5BZGRVc2VyKCR1c2VyWyd1c2VybmFtZSddLCR1c2VyWydwYXNzd29yZCddLCR1c2VyWydleHBpcmVzJ10pOwogICAgICAgICAgICBpZiggIWlzX2FycmF5KCR0bXApIHx8ICR0bXBbMF0gPT09IEZBTFNFICkgewogICAgICAgICAgICAgICAgJGltcG9ydF9lcnJvcl9saW5lKCRsaW5lX251bSwkdGhpcy0+TGFuZygnZXJyb3JfaW1wb3J0aW5zZXJ0dXNlcicsJHRtcFsxXSkpOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHVpZCA9IChpbnQpICR0bXBbMV07CiAgICAgICAgICAgIGlmKCAkdXNlclsnY3JlYXRlZGF0ZSddICYmICR1c2VyWydjcmVhdGVkYXRlJ10gPCAoJG5vdyAtIDkwKSApIHsKICAgICAgICAgICAgICAgICRzcWwgPSAnVVBEQVRFICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfbWFtc191c2VycyBTRVQgY3JlYXRlZGF0ZSA9ID8gV0hFUkUgaWQgPSA/JzsKICAgICAgICAgICAgICAgICR0bXAgPSB0cmltKCRkYi0+RGJUaW1lU3RhbXAoJHVzZXJbJ2NyZWF0ZWRhdGUnXSksIiciKTsKICAgICAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgkc3FsLCBbICR0bXAsICR1aWQgXSApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRnaWRsaXN0ID0gYXJyYXkoKTsKICAgICAgICAgICAgZm9yZWFjaCggJGduYW1lcyBhcyAkZ25hbWUgKSB7CiAgICAgICAgICAgICAgICAkZ2lkbGlzdFtdID0gJGdyb3Vwc1skZ25hbWVdOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0aGlzLT5TZXRVc2VyR3JvdXBzKCR1aWQsJGdpZGxpc3QpOwogICAgICAgICAgICAkdGhpcy0+U2V0VXNlclByb3BlcnRpZXMoJHVpZCwkdXNlclsncHJvcHMnXSk7CiAgICAgICAgICAgICRpbXBvcnRfc3RhdHVzKCdjcmVhdGVkIHVzZXIgJy4kdXNlclsndXNlcm5hbWUnXSk7CiAgICAgICAgICAgIC8vIHRvZG86IHN0YXR1cyBtc2cKICAgICAgICB9CgogICAgICAgIC8vIHNldCBwcm9ncmVzcwogICAgICAgICRwcm9ncmVzc19zZXQoZnRlbGwoJGZoKSk7CgogICAgICAgIC8vIHNldCB0aGUgdXNlcgogICAgICAgIGlmKCAkdWlkICYmICFpbl9hcnJheSgkdWlkLCR0b3VjaGVkX3VpZHMpICkgJHRvdWNoZWRfdWlkc1tdID0gJHVpZDsKCiAgICAgICAgLy8gZGVsZXRlIHRoZSB1c2VyIGZyb20gdGhlIGNvbXBsZXRlIHVzZXIgbGlzdC4KICAgICAgICB1bnNldCgkYWxsX3VzZXJzWyR1c2VyWyd1c2VybmFtZSddXSk7CgogICAgfSAvLyBmZW9mCgogICAgLy8gZGVsZXRlIHVzZXJzIHdobyBhcmUgbWVtYmVyIG9mIHRoZSBpbXBvcnRlZCBncm91cCwgKGFzc3VtaW5nIHdlIG9ubHkgbGlzdGVkIG9uZSBncm91cCkgYnV0CiAgICAvLyBub3QgbGlzdGVkIGluIHRoaXMgbGlzdC4KICAgICR0b3VjaGVkX3VpZHMgPSBhcnJheV91bmlxdWUoJHRvdWNoZWRfdWlkcyk7CiAgICBpZiggY291bnQoJHRvdWNoZWRfZ2lkcykgPT0gMSAmJiBjb3VudCgkdG91Y2hlZF91aWRzKSAmJiAkaW1wb3J0cHJlZnNbJ2RlbGV0ZV91c2VycyddICkgewogICAgICAgIC8vIGdvdHRhIGdldCB0aGUgdWlkcyBvZiBhbGwgb2YgdGhlIHVzZXJzIGluIHRoaXMgZ3JvdXAuCiAgICAgICAgJHF1ZXJ5ID0gbmV3IG1hbXNfdXNlcl9xdWVyeSgpOwogICAgICAgICRxdWVyeS0+YWRkX2FuZF9vcHQobWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfR1JPVVBJRCwkdG91Y2hlZF9naWRzWzBdKTsKICAgICAgICAkcnMgPSAkcXVlcnktPmV4ZWN1dGUoKTsKICAgICAgICAkZGVsX3VpZHMgPSBhcnJheSgpOwogICAgICAgIHdoaWxlKCAhJHJzLT5FT0YoKSApIHsKICAgICAgICAgICAgaWYoICFpbl9hcnJheSgkcnMtPmZpZWxkc1snaWQnXSwkdG91Y2hlZF91aWRzKSAmJiAhaW5fYXJyYXkoJHJzLT5maWVsZHNbJ2lkJ10sJGRlbF91aWRzKSApIHsKICAgICAgICAgICAgICAgICRkZWxfdWlkc1tdID0gJHJzLT5maWVsZHNbJ2lkJ107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHJzLT5Nb3ZlTmV4dCgpOwogICAgICAgIH0KCiAgICAgICAgLy8gZ290dGEgZGVsZXRlIHJlbWFpbmluZyB1c2VycwogICAgICAgIGlmKCBjb3VudCgkZGVsX3VpZHMpICkgewogICAgICAgICAgICAkcHJvZ3Jlc3NfbWF4KGNvdW50KCRkZWxfdWlkcykpOwogICAgICAgICAgICAkbiA9IDA7CiAgICAgICAgICAgIGZvcmVhY2goICRkZWxfdWlkcyBhcyAkdWlkICkgewogICAgICAgICAgICAgICAgc2V0X3RpbWVfbGltaXQoMjApOwogICAgICAgICAgICAgICAgaWYoICR1aWQgPiAwICkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5EZWxldGVVc2VyRnVsbCggJHVpZCApOwogICAgICAgICAgICAgICAgICAgICRpbXBvcnRfc3RhdHVzKCR0aGlzLT5MYW5nKCdpbXBvcnRfZGVsZXRlZHVzZXInLCR1aWQpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRuKys7CiAgICAgICAgICAgICAgICAkcHJvZ3Jlc3Nfc2V0KCRuKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAkaW1wb3J0X2ZpbmlzaCgpOwp9CmNhdGNoKCBFeGNlcHRpb24gJGUgKSB7CiAgICAkaW1wb3J0X2Vycm9yKCRlLT5HZXRNZXNzYWdlKCkpOwp9CmV4aXQ7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.admin_edituser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQpuYW1lc3BhY2UgTUFNUzsKdXNlIG1hbXNfdXRpbHM7CnVzZSB4dF91dGlsczsKdXNlIHh0X3BhcmFtOwoKaWYoICFkZWZpbmVkKCdDTVNfVkVSU0lPTicpICkgeyBleGl0OyB9CmlmKCAhJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoICd1c2VycycgKSApIHJldHVybjsKCi8vIHRoaXMgYWN0aW9uIGhhbmRsZXMgdGhlIGZpcnN0IHBvcnRpb24gb2YgdGhlIGFkZC9lZGl0IHVzZXIgd2l6YXJkLgoKJGRlZmF1bHRfZ3JvdXAgPSAoaW50KSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9ncm91cCcpOwoKdHJ5CnsKICAkdGhpcy0+U2V0Q3VycmVudFRhYigndXNlcnMnKTsKICAKICBpZihpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpCiAgewogICAgLy8gd2UncmUgY2FuY2VsbGluZy4KICAgICR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdtc2dfY2FuY2VsbGVkJykpOwogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsKICB9CiAgCiAgJHVzZXJfaWQgPSB4dF9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCAndXNlcl9pZCcpOwogICR1c2VyICAgID0gdXNlcl9lZGl0X2Fzc2lzdGFudDo6cmV0cmlldmUoKTsKICAKICBpZigkdXNlcikKICB7CiAgICAvLyB3ZSBhcmUgaGVyZSBmcm9tIHRoZSAnYmFjaycgb3BlcmF0aW9uLiBvciBhbiBlcnJvciBpbiBzdGVwMi4KICAgIGlmKCR1c2VyLT5pZCAhPSAkdXNlcl9pZCkgeyAkdXNlciA9IE5VTEw7IH0KICB9CiAgCiAgaWYoISR1c2VyKQogIHsKICAgICR1c2VyID0gbmV3IHVzZXJfZWRpdF9hc3Npc3RhbnQoJHVzZXJfaWQpOwogIH0KICAKICAgIGlmKCBpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgKQogICAgewogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgIC8vIGZpbGwgdGhlIGRhdGEgZnJvbSB0aGUgZm9ybQogICAgICAgICAgJHVzZXItPm5ld191c2VybmFtZSA9IGNtc19odG1sX2VudGl0eV9kZWNvZGUoeHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywndXNlcm5hbWUnKSk7CiAgICAgICAgICAkdXNlci0+bmV3X3Bhc3N3b3JkID0gY21zX2h0bWxfZW50aXR5X2RlY29kZSh4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdwYXNzd29yZCcpKTsKICAgICAgICAgICR1c2VyLT5yZXBlYXRfcGFzc3dvcmQgPSBjbXNfaHRtbF9lbnRpdHlfZGVjb2RlKHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ3JlcGVhdHBhc3N3b3JkJykpOwogICAgICAgICAgJHVzZXItPmV4cGlyZXMgPSB4dF9wYXJhbTo6Z2V0X3NlcGFyYXRlZF9kYXRlKCRwYXJhbXMsJ2V4cGlyZXMnKTsKICAgICAgICAgICR1c2VyLT5pc19kaXNhYmxlZCA9IHh0X3BhcmFtOjpnZXRfYm9vbCgkcGFyYW1zLCdkaXNhYmxlZCcpOwogICAgICAgICAgJHVzZXItPmZvcmNlX2NoYW5nZV9zZXR0aW5ncyA9IHh0X3BhcmFtOjpnZXRfYm9vbCgkcGFyYW1zLCdmb3JjZV9jaHNldHRpbmdzJyk7CiAgICAgICAgICAkdXNlci0+Zm9yY2VfcGFzc3dvcmRfY2hhbmdlID0geHRfcGFyYW06OmdldF9ib29sKCRwYXJhbXMsJ2ZvcmNlX25ld3B3Jyk7CiAgICAgICAgICAkdXNlci0+bXVzdF92YWxpZGF0ZSA9IHh0X3BhcmFtOjpnZXRfYm9vbCgkcGFyYW1zLCdtdXN0X3ZhbGlkYXRlJyk7CiAgICAgICAgICAkdXNlci0+c2V0X2dyb3Vwcyh4dF91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJ21lbWJlcm9mJykpOyMjIwoKICAgICAgICAgIC8vIHZhbGlkYXRlIHRoZSBkYXRhCiAgICAgICAgICAkdXNlci0+dmFsaWRhdGUoKTsKICAgICAgICAgIAogICAgICAgICAgLy8gc2F2ZSB0aGUgZGF0YSAodGVtcG9yYXJpbHkpCiAgICAgICAgICAkdXNlci0+c3RvcmUoKTsKCiAgICAgICAgICAvLyByZWRpcmVjdCB0byB0aGUgbmV4dCBzdGVwLgogICAgICAgICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwnYWRtaW5fZWRpdHVzZXIyJywkcmV0dXJuaWQpOwogICAgICAgIH0KICAgICAgICBjYXRjaChcRXhjZXB0aW9uICRlKQogICAgICAgIHsKICAgICAgICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJGUtPkdldE1lc3NhZ2UoKSk7CiAgICAgICAgfQogICAgfQoKICAgICRhdXRoX2NvbnN1bWVyID0gbWFtc191dGlsczo6Z2V0X2F1dGhfY29uc3VtZXIoKTsKICAgICR0cGwgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJ2FkbWluX2VkaXR1c2VyLnRwbCcpOwogICAgJHRwbC0+YXNzaWduKCdmb3Jtc3RhcnQnLCR0aGlzLT5YVENyZWF0ZUZvcm1TdGFydCgkaWQsJ2FkbWluX2VkaXR1c2VyJywkcmV0dXJuaWQsWyAndXNlcl9pZCcgPT4gJHVzZXJfaWQgXSkpOwogICAgJHRwbC0+YXNzaWduKCdmb3JtZW5kJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKICAgICR0cGwtPmFzc2lnbigndXNlcicsJHVzZXIpOwogICAgJHRwbC0+YXNzaWduKCdwcm9tcHRfdXNlcm5hbWUnLCRhdXRoX2NvbnN1bWVyLT5nZXRfdXNlcm5hbWVfcHJvbXB0KCkpOwogICAgJHRwbC0+YXNzaWduKCd1bmZsZGxlbicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZXJuYW1lZmxkbGVuZ3RoJykpOwogICAgJHRwbC0+YXNzaWduKCdtYXhfdW5mbGRsZW4nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXhfdXNlcm5hbWVsZW5ndGgnKSk7CiAgICAkdHBsLT5hc3NpZ24oJ3B3ZmxkbGVuJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFzc3dvcmRmbGRsZW5ndGgnKSk7CiAgICAkdHBsLT5hc3NpZ24oJ21heF9wd2ZsZGxlbicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ21heF9wYXNzd29yZGxlbmd0aCcpKTsKICAgICR0cGwtPmFzc2lnbigncmVxdWlyZV9vbmVncm91cCcsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3JlcXVpcmVfb25lZ3JvdXAnKSk7CgogICAgJGdyb3VwcyA9IG51bGw7CiAgICAkZ3JvdXBzID0gJHRoaXMtPkdldEdyb3VwTGlzdEZ1bGwoKTsKICAgIGlmKCAkZGVmYXVsdF9ncm91cCA8IDEgJiYgY291bnQoJGdyb3VwcykgKSB7CiAgICAgICAgJGdpZHMgPSBhcnJheV9rZXlzKCRncm91cHMpOwogICAgICAgICRkZWZhdWx0X2dyb3VwID0gJGdpZHNbMF07CiAgICB9CiAgICAkdHBsLT5hc3NpZ24oJ2RlZmF1bHRfZ3JvdXAnLCRkZWZhdWx0X2dyb3VwKTsKICAgICR0cGwtPmFzc2lnbignZ3JvdXBzJywkZ3JvdXBzKTsKCiAgICAkdHBsLT5kaXNwbGF5KCk7Cn0KY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAkdGhpcy0+U2V0RXJyb3IoJGUtPkdldE1lc3NhZ2UoKSk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_edituser2.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVM7CgppZighZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkKewogIGV4aXQ7Cn0KaWYoISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCd1c2VycycpKQp7CiAgcmV0dXJuOwp9CgokdXNlcl9pZCA9ICR1c2VyID0gTlVMTDsKdHJ5CnsKICAkdGhpcy0+U2V0Q3VycmVudFRhYigndXNlcnMnKTsKICBpZihpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpCiAgewogICAgLy8gY2xlYXIgYW55dGhpbmcgaW4gdGhlIHNlc3Npb24sIGJ1dCBkb24ndCBuZWVkIHRoZSBkYXRhLgogICAgXE1BTVNcdXNlcl9lZGl0X2Fzc2lzdGFudDo6cmV0cmlldmUoKTsKICAgICR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdtc2dfY2FuY2VsbGVkJykpOwogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsKICB9CiAgCiAgJHVzZXIgPSBcTUFNU1x1c2VyX2VkaXRfYXNzaXN0YW50OjpyZXRyaWV2ZSgpOwogIAogIGlmKCEkdXNlcikKICB7CiAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDb3VsZCBub3QgcmVzdG9yZSB1c2VyIGVkaXQgaW5mbyBmcm9tIHNlc3Npb24nKTsKICB9CiAgCiAgJHVzZXJfaWQgPSAkdXNlci0+aWQ7CiAgCiAgaWYoaXNzZXQoJHBhcmFtc1snYmFjayddKSkKICB7CiAgICAkdXNlci0+c3RvcmUoKTsKICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsICdhZG1pbl9lZGl0dXNlcicsICRyZXR1cm5pZCwgWyd1c2VyX2lkJyA9PiAkdXNlcl9pZF0pOwogIH0KICAKICAkYWxsZGVmbnMgICA9ICR0aGlzLT5HZXRQcm9wZXJ0eURlZm5zKCk7CiAgJGZpZWxkcyAgICAgPSBbXTsKICAkcHJvcGVydGllcyA9IFxtYW1zX3V0aWxzOjpnZXRfcHJvcGVydGllc19mb3JfZ3JvdXBzKCR1c2VyLT5nZXRfZ3JvdXBzKCkpOwogIAogICMgcmVtb3ZlIGVtcHR5IHByb3BzLi4uIElESyB3aHkgdGhlcmUgYXJlIGFueSBidXQgZG8gbWFrZSB0aGlzIHB1a2UuLi4gbmVlZCB0byByZXZpc2l0IChKTSkKICAkcHJvcGVydGllcyA9IFxhcnJheV9maWx0ZXIoJHByb3BlcnRpZXMpOwogIAogIGlmKCFcY291bnQoJHByb3BlcnRpZXMpKQogIHsKICAgIC8vIHRoZXJlIGFyZSBubyBwcm9wZXJ0aWVzIHRvIHRoaW5rIG9mLgogICAgLy8gc2ltdWxhdGUgc3VibWlzc2lvbi4KICAgICRwYXJhbXNbJ3N1Ym1pdCddID0gMTsKICB9CiAgZWxzZQogIHsKICAgIGZvcmVhY2goJHByb3BlcnRpZXMgYXMgJHByb3ApCiAgICB7CiAgICAgICRwcm9wX25hbWUgPSAkcHJvcFsnbmFtZSddOwogICAgICAKICAgICAgaWYoIWlzc2V0KCRhbGxkZWZuc1skcHJvcF9uYW1lXSkpCiAgICAgIHsKICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdEZWZpbml0aW9uIGZvciBwcm9wZXJ0eSAnIC4gJHByb3BfbmFtZSAuICcgbm90IGZvdW5kJyk7CiAgICAgIH0KICAgICAgLy9pZiggJGFsbGRlZm5zWyRwcm9wX25hbWVdWydlbmNyeXB0J10gJiYgJHVzZXJfaWQgPiAwICkgY29udGludWU7ICAvLyBjYW5ub3QgZWRpdCBlbmNyeXB0ZWQgcHJvcGVydGllcy4KICAgICAgJGZpZWxkc1skcHJvcF9uYW1lXSA9IG5ldyBwcm9wZXJ0eV9lZGl0b3JfZGVmbigkYWxsZGVmbnNbJHByb3BfbmFtZV0sICRwcm9wLCAkdXNlcik7CiAgICB9CiAgfQogIAogIGlmKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSkKICB7CiAgICAvKiBoYW5kbGUgc3VibWlzc2lvbiAqLwogICAgdHJ5CiAgICB7CiAgICAgIC8vIG5vdGUsIHdlIHVzZSB0aGUgc2V0IHZhbHVlIG1ldGhvZCBvbiB0aGUgZmllbGQuLi4gaXQgd2lsbCBhY3R1YWxseSBtb2RpZnkgdGhlIHVzZXIKICAgICAgLy8gYW5kIHNldCB0aGUgZGF0YS4KICAgICAgZm9yZWFjaCgkZmllbGRzIGFzICRwcm9wX25hbWUgPT4gJGZpZWxkKQogICAgICB7CiAgICAgICAgJGtleSAgPSAncHJvcF8nIC4gJHByb3BfbmFtZTsKICAgICAgICAka2V5MiA9ICdwcm9wZGVsXycgLiAkcHJvcF9uYW1lOwogICAgICAgICR2YWwgID0gXHh0X3V0aWxzOjpnZXRfcGFyYW0oJHBhcmFtcywgJGtleSk7CiAgICAgICAgaWYoJGZpZWxkLT50eXBlID09IDgpCiAgICAgICAgewogICAgICAgICAgJHZhbCA9IFx4dF9wYXJhbTo6Z2V0X3NlcGFyYXRlZF9kYXRlKCRwYXJhbXMsICRrZXkpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmKCRmaWVsZC0+dHlwZSA9PSA2KQogICAgICAgIHsKICAgICAgICAgIC8vIGltYWdlCiAgICAgICAgICBpZihpc3NldCgkcGFyYW1zWyRrZXkyXSkpCiAgICAgICAgICB7CiAgICAgICAgICAgICRmaWVsZC0+Y2xlYXJfdmFsdWUoKTsKICAgICAgICAgIH0KICAgICAgICAgICR2YWwgPSAkaWQgLiAka2V5OwogICAgICAgIH0KICAgICAgICAkZmllbGQtPnNldF92YWx1ZSgkdmFsKTsKICAgICAgfQogICAgICAKICAgICAgLy8gcGFzcyAyIC4uIHZhbGlkYXRlIHRoZSBpbnB1dCAocmVxdWlyZWQgZmllbGRzLCB1cGxvYWQgdHlwZXMgYW5kIHNvLW9uKQogICAgICBmb3JlYWNoKCRmaWVsZHMgYXMgJHByb3BfbmFtZSA9PiAkZmllbGQpCiAgICAgIHsKICAgICAgICAkZmllbGQtPnZhbGlkYXRlKCk7CiAgICAgIH0KICAgICAgCiAgICAgIC8vIHBhc3MgMi4xIC4uLiBlbnN1cmUgdGhhdCBpZiBtdXN0X3ZhbGlkYXRlIGlzIG9uLCB0aGF0IHdlIGhhdmUgYW4gZW1haWwgYWRkcmVzcwogICAgICAvLyBmb3IgdGhpcyB1c2VyLgogICAgICBpZigkdXNlci0+bXVzdF92YWxpZGF0ZSAmJiAhJHVzZXItPmNhbl92YWxpZGF0ZSgpKQogICAgICB7CiAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl92YWxpZGF0ZV9pbnN1ZmZpY2llbnRpbmZvJykpOwogICAgICB9CiAgICAgIAogICAgICAkaXNfYWRkID0gKCR1c2VyLT5pZCA8IDEpID8gVFJVRSA6IEZBTFNFOwogICAgICAkdXNlci0+c2F2ZSgpOwogICAgICAKICAgICAgLy8gcGFzcyAzIC4uIGRvIHBvc3QgcHJvY2Vzc2luZy4KICAgICAgZm9yZWFjaCgkZmllbGRzIGFzICRwcm9wX25hbWUgPT4gJGZpZWxkKQogICAgICB7CiAgICAgICAgJGZpZWxkLT5wb3N0cHJvY2VzcygkdXNlcik7CiAgICAgIH0KICAgICAgCiAgICAgIC8vIGFsbCBkb25lLi4uIGp1c3QgZ290dGEgZG8gc29tZSBub3RpZmljYXRpb25zIGFuZCBldmVudHMuCiAgICAgICRldnRfcGFybXMgPSBbJ25hbWUnID0+ICR1c2VyLT51c2VybmFtZSwgJ2lkJyA9PiAkdXNlci0+aWRdOwogICAgICAKICAgICAgaWYoJGlzX2FkZCkKICAgICAgewogICAgICAgIGF1ZGl0KCcnLCAkdGhpcy0+R2V0TmFtZSgpLCAnQWRkZWQgdXNlciAnIC4gJHVzZXItPnVzZXJuYW1lKTsKICAgICAgICAkdGhpcy0+YWRkX2hpc3RvcnkoJHVzZXItPmlkLCAnYWRtaW4gYWRkIHVzZXInKTsKICAgICAgICBcQ01TTVNcSG9va01hbmFnZXI6OmRvX2hvb2soJ01BTVM6Ok9uQ3JlYXRlVXNlcicsICRldnRfcGFybXMpOwogICAgICAgICR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdtc2dfdXNlcmFkZGVkJykpOwogICAgICB9CiAgICAgIGVsc2UKICAgICAgewogICAgICAgICR0aGlzLT5hZGRfaGlzdG9yeSgkdXNlcl9pZCwgJ2FkbWluIGNoYW5nZSBzZXR0aW5ncycpOwogICAgICAgIGF1ZGl0KCR1c2VyLT5pZCwgJHRoaXMtPkdldE5hbWUoKSwgJ01vZGlmaWVkIHVzZXIgJyAuICR1c2VyLT51c2VybmFtZSk7CiAgICAgICAgCiAgICAgICAgXENNU01TXEhvb2tNYW5hZ2VyOjpkb19ob29rKCdNQU1TOjpPblVwZGF0ZVVzZXInLCAkZXZ0X3Bhcm1zKTsKICAgICAgICAkdGhpcy0+U2V0TWVzc2FnZSgkdGhpcy0+TGFuZygnbXNnX3VzZXJtb2RpZmllZCcpKTsKICAgICAgICAKICAgICAgICBpZigkdXNlci0+bXVzdF92YWxpZGF0ZSkKICAgICAgICB7CiAgICAgICAgICAvLyB1c2VyIHNhdmUgcmVzZXRzIHRoZSB0ZW1wIGNvZGUuCiAgICAgICAgICAkaGVscGVyID0gJHRoaXMtPmdldF92ZXJpZmljYXRpb25fYXNzaXN0YW50KCk7CiAgICAgICAgICAkY29kZSAgID0gJGhlbHBlci0+c2V0X2ZvcmNlX3ZlcmlmeSgkdXNlci0+aWQpOwogICAgICAgICAgJGhlbHBlci0+c2VuZCgkdXNlci0+aWQsICRjb2RlKTsKICAgICAgICAgIGF1ZGl0KCR1c2VyLT5pZCwgJ01BTVMnLCAnVXNlciBzZW50IHZlcmlmaWNhdGlvbiBlbWFpbCcpOwogICAgICAgIH0KICAgICAgfQogICAgICAKICAgICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsKICAgIH0KICAgIGNhdGNoKFxFeGNlcHRpb24gJGUpCiAgICB7CiAgICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJGUtPkdldE1lc3NhZ2UoKSk7CiAgICB9CiAgfQogIAogICR0cGwgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJ2FkbWluX2VkaXR1c2VyMi50cGwnKTsKICAkdHBsLT5hc3NpZ24oJ3JlcXVpcmVkX2ZpZWxkX2NvbG9yJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3JlcXVpcmVkX2ZpZWxkX2NvbG9yJywgJ2JsdWUnKSk7CiAgJHRwbC0+YXNzaWduKCdoaWRkZW5fZmllbGRfY29sb3InLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaGlkZGVuX2ZpZWxkX2NvbG9yJywgJ2JsdWUnKSk7CiAgJHRwbC0+YXNzaWduKCdyZXF1aXJlZF9maWVsZF9tYXJrZXInLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncmVxdXJpZWRfZmllbGRfbWFya2VyJywgJyonKSk7CiAgJHRwbC0+YXNzaWduKCdoaWRkZW5fZmllbGRfbWFya2VyJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2hpZGRlbl9maWVsZF9tYXJrZXInLCAnISEnKSk7CiAgJHRwbC0+YXNzaWduKCdmaWVsZHMnLCAkZmllbGRzKTsKICAkdHBsLT5hc3NpZ24oJ3VzZXInLCAkdXNlcik7CiAgJHRwbC0+ZGlzcGxheSgpOwogICR1c2VyLT5zdG9yZSgpOwp9CmNhdGNoKFxFeGNlcHRpb24gJGUpCnsKICBpZigkdXNlcikKICB7CiAgICAkdXNlci0+c3RvcmUoKTsKICB9CiAgJHRoaXMtPlNldEVycm9yKCRlLT5HZXRNZXNzYWdlKCkpOwogICR0aGlzLT5SZWRpcmVjdCgkaWQsICdhZG1pbl9lZGl0dXNlcicsICRyZXR1cm5pZCwgWyd1c2VyX2lkJyA9PiAkdXNlcl9pZF0pOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_enable_user.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KaWYoICEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnZWRpdHVzZXJzJykgKSBleGl0OwoKJHVpZCA9IChpbnQpIHh0X3V0aWxzOjpnZXRfcGFyYW0oJHBhcmFtcywndWlkJyk7CiRzdGF0ZSA9IChpbnQpIHh0X3V0aWxzOjpnZXRfcGFyYW0oJHBhcmFtcywnc3RhdGUnLDApOwokc3RhdGUgPSAhJHN0YXRlOwokdGhpcy0+U2V0Q3VycmVudFRhYigndXNlcnMnKTsKCnRyeSB7CiAgICAkdGhpcy0+U2V0VXNlckRpc2FibGVkKCR1aWQsJHN0YXRlKTsKICAgICR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdtc2dfdXNlcl9zdGF0ZV9jaGFuZ2VkJykpOwp9CmNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgJHRoaXMtPlNldEVycm9yKCRlLT5HZXRNZXNzYWdlKCkpOwp9CiR0aGlzLT5SZWRpcmVjdFRvVGFiKCk7]]></data>
	</file>
	<file>
	  <filename>/action.admin_exportgroup.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCAkZ0NtcyApICkgcmV0dXJuOwppZiggISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdlZGl0Z3JvdXBzJykgKSByZXR1cm47CgppZiggIWlzc2V0KCRwYXJhbXNbJ2dyb3VwX2lkJ10pICkgcmV0dXJuOwoKJGdyb3VwaWQgPSAkcGFyYW1zWydncm91cF9pZCddOwoKJHRoaXMtPlNldEN1cnJlbnRUYWIoJ2dyb3VwcycpOwppZiggIW1hbXNfdXRpbHM6OnVzaW5nX3N0ZF9jb25zdW1lcigpICkgewogICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3Jfbm90c3VwcG9ydGVkJykpOwogICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwnZ3JvdXBzJyk7Cn0KCiRncnBfaW5mbyA9ICR0aGlzLT5HZXRHcm91cEluZm8oICRncm91cGlkICk7CmlmKCAhaXNfYXJyYXkoICRncnBfaW5mbyApIHx8ICFpc3NldCgkZ3JwX2luZm9bJ2lkJ10pICkgewogICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZGdyb3VwaWQnLCRncm91cGlkKSk7CiAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCdncm91cHMnKTsKICByZXR1cm47Cn0KCiRncnBfcHJvcF9yZWxzID0gJHRoaXMtPkdldEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoICRncm91cGlkICk7CmlmKCAhaXNfYXJyYXkoICRncnBfcHJvcF9yZWxzICkgfHwgIWNvdW50KCRncnBfcHJvcF9yZWxzKSApIHsKICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX25vcmVsYXRpb25zJykpOwogICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwnZ3JvdXBzJyk7CiAgcmV0dXJuOwp9CgokZmlsZW5hbWUgPSAkZ3JwX2luZm9bJ2dyb3VwbmFtZSddLicueG1sJzsKJHNtYXJ0eS0+YXNzaWduKCdncm91cF9uYW1lJywkZ3JwX2luZm9bJ2dyb3VwbmFtZSddKTsKJHNtYXJ0eS0+YXNzaWduKCdncm91cF9kZXNjcmlwdGlvbicsJGdycF9pbmZvWydncm91cGRlc2MnXSk7CiRwcm9wZXJ0aWVzID0gYXJyYXkoKTsKZm9yZWFjaCggJGdycF9wcm9wX3JlbHMgYXMgJG9uZXJlbCApIHsKICAkZGVmbiA9ICR0aGlzLT5HZXRQcm9wZXJ0eURlZm4oICRvbmVyZWxbJ25hbWUnXSApOwogIGlmKCAhJGRlZm4gKSB7CiAgICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX3Byb3Bub3Rmb3VuZCcsJG9uZXJlbFsnbmFtZSddKSk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsJ2dyb3VwcycpOwogICAgcmV0dXJuOwogIH0KCiAgJG9iaiA9IG5ldyBTdGRDbGFzcygpOwogICRvYmotPm5hbWUgPSAkb25lcmVsWyduYW1lJ107CiAgJG9iai0+c29ydG9yZGVyID0gJG9uZXJlbFsnc29ydF9rZXknXTsKICAkb2JqLT5zdGF0dXMgPSAkb25lcmVsWydyZXF1aXJlZCddOwogICRvYmotPmxvc3R1bmZsYWcgPSAkb25lcmVsWydsb3N0dW5mbGFnJ107CiAgJG9iai0+cHJvbXB0ID0gJGRlZm5bJ3Byb21wdCddOwogICRvYmotPnR5cGUgPSAkZGVmblsndHlwZSddOwogICRvYmotPmxlbmd0aCA9ICRkZWZuWydsZW5ndGgnXTsKICAkb2JqLT5tYXhsZW5ndGggPSAkZGVmblsnbWF4bGVuZ3RoJ107CiAgaWYoICRvYmotPnR5cGUgPT0gNCB8fCAkb2JqLT50eXBlID09IDUgKSB7CiAgICAkb3BzID0gYXJyYXkoKTsKICAgICRzZWxlY3Rfb3BzID0gJHRoaXMtPkdldFNlbGVjdE9wdGlvbnMoICRvYmotPm5hbWUsIDIgKTsKICAgIGZvcmVhY2goICRzZWxlY3Rfb3BzIGFzICRzZWxfb3AgKSB7CiAgICAgICRvcCA9IG5ldyBTdGRDbGFzczsKICAgICAgJG9wLT5uYW1lID0gdHJpbSgkc2VsX29wWydvcHRpb25fbmFtZSddKTsKICAgICAgJG9wLT50ZXh0ID0gdHJpbSgkc2VsX29wWydvcHRpb25fdGV4dCddKTsKICAgICAgJG9wc1tdID0gJG9wOwogICAgfQogICAgJG9iai0+b3B0aW9ucyA9ICRvcHM7CiAgfQoKICAkcHJvcGVydGllc1tdID0gJG9iajsKfQokc21hcnR5LT5hc3NpZ24oJ3Byb3BlcnRpZXMnLCRwcm9wZXJ0aWVzKTsKCmlmKGluaV9nZXQoJ3psaWIub3V0cHV0X2NvbXByZXNzaW9uJykpIGluaV9zZXQoJ3psaWIub3V0cHV0X2NvbXByZXNzaW9uJywgJ09mZicpOwpzZXRfdGltZV9saW1pdCg5OTk5KTsKCi8vIGdldCB0aGUgZGF0YQokaGFuZGxlcnMgPSBvYl9saXN0X2hhbmRsZXJzKCk7IApmb3IgKCRjbnQgPSAwOyAkY250IDwgc2l6ZW9mKCRoYW5kbGVycyk7ICRjbnQrKykgeyBvYl9lbmRfY2xlYW4oKTsgfQokZGF0YSA9ICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2dyb3VwX3htbC50cGwnKTsKCmhlYWRlcignUHJhZ21hOiBwdWJsaWMnKTsKaGVhZGVyKCdFeHBpcmVzOiAwJyk7CmhlYWRlcignQ2FjaGUtQ29udHJvbDogbXVzdC1yZXZhbGlkYXRlLCBwb3N0LWNoZWNrPTAsIHByZS1jaGVjaz0wJyk7CmhlYWRlcignQ2FjaGUtQ29udHJvbDogcHJpdmF0ZScsZmFsc2UpOwpoZWFkZXIoJ0NvbnRlbnQtRGVzY3JpcHRpb246IEZpbGUgVHJhbnNmZXInKTsKaGVhZGVyKCdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScpOwpoZWFkZXIoIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiJGZpbGVuYW1lXCIiICk7CmhlYWRlcignQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmluYXJ5Jyk7CmhlYWRlcignQ29udGVudC1MZW5ndGg6ICcgLiBzdHJsZW4oJGRhdGEpKTsKZWNobyAkZGF0YTsKCkBmbHVzaCgpOyBAb2JfZmx1c2goKTsgQG9iX2ZsdXNoKCk7Ci8vIEVPRgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_export_users.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KaWYoICEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygndXNlcnMnKSApIHJldHVybjsKJHRoaXMtPlNldEN1cnJlbnRUYWIoJ3VzZXJzJyk7Cgokb2Zmc2V0ID0gMDsKJGJhdGNoc2l6ZSA9IDUwOwokY291bnQgPSAkZGItPkdldE9uZSgnU0VMRUNUIENPVU5UKERJU1RJTkNUIHUuaWQpIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX3VzZXJzIHUnKTsKaWYoICRjb3VudCA9PSAwICkgewogICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfZXhwb3J0X25vdXNlcnMnKSk7CiAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsKfQokdXF1ZXJ5ID0gJ1NFTEVDVCBESVNUaU5DVCB1LmlkLHUudXNlcm5hbWUsdS5leHBpcmVzLHUuY3JlYXRlZGF0ZQogICAgICAgICAgIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX3VzZXJzIHUgT1JERVIgQlkgdS5pZCc7CgokZ3JvdXBzID0gYXJyYXlfZmxpcCgkdGhpcy0+R2V0R3JvdXBMaXN0KCkpOwokcHJvcGRlZm5zID0gJHRoaXMtPkdldFByb3BlcnR5RGVmbnMoKTsKJHJlbG5zID0gYXJyYXkoKTsKZm9yZWFjaCggJGdyb3VwcyBhcyAkZ2lkID0+ICRnbmFtZSApIHsKICAkcmVsbnNbJGdpZF0gPSAkdGhpcy0+R2V0R3JvdXBQcm9wZXJ0eVJlbGF0aW9ucygkZ2lkKTsKfQoKLy8gYnVpbGQgdGhlIGZpZWxkIG1hcAokZmllbGRtYXAgPSBhcnJheSgndXNlcm5hbWUnPT5udWxsLCdleHBpcmVzJz0+bnVsbCwnY3JlYXRlZGF0ZSc9Pm51bGwsJ2dyb3VwbmFtZSc9Pm51bGwpOwpmb3JlYWNoKCAkcmVsbnMgYXMgJGdpZCA9PiAkcmVsbl9saXN0ICkgewogICAgZm9yZWFjaCggJHJlbG5fbGlzdCBhcyAkcmVsbiApIHsKICAgICAgICBpZiggIWlzc2V0KCRwcm9wZGVmbnNbJHJlbG5bJ25hbWUnXV0pICkgY29udGludWU7CiAgICAgICAgaWYoICRwcm9wZGVmbnNbJHJlbG5bJ25hbWUnXV1bJ2VuY3J5cHQnXSApIGNvbnRpbnVlOwogICAgICAgIGlmKCAkcmVsblsncmVxdWlyZWQnXSA9PSAyIHx8ICRyZWxuWydyZXF1aXJlZCddID09IDEgfHwgJHJlbG5bJ3JlcXVpcmVkJ10gPT0gMyApICRmaWVsZG1hcFskcmVsblsnbmFtZSddXSA9IG51bGw7CiAgICB9Cn0KCi8vIGNsZWFyIGFsbCBidWZmZXJzCi8vIGV4cG9ydCB0aGUgaGVhZGVyIGxpbmUKJGZuPSJtYW1zLSIuZGF0ZSgnWS1tLWQnKS4nLmNzdic7CiRoZWFkZXIgPSAnIyMnLmltcGxvZGUoJywnLGFycmF5X2tleXMoJGZpZWxkbWFwKSk7CiRoYW5kbGVycyA9IG9iX2xpc3RfaGFuZGxlcnMoKTsKZm9yICgkY250ID0gMDsgJGNudCA8IHNpemVvZigkaGFuZGxlcnMpOyAkY250KyspIHsgb2JfZW5kX2NsZWFuKCk7IH0KaGVhZGVyKCdDb250ZW50LURlc2NyaXB0aW9uOiBGaWxlIFRyYW5zZmVyJyk7CmhlYWRlcignQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9mb3JjZS1kb3dubG9hZCcpOwpoZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPScuJGZuKTsKZWNobyAkaGVhZGVyLiJcbiI7Cgp3aGlsZSggJG9mZnNldCA8ICRjb3VudCApIHsKICAgICRkYnJfdSA9ICRkYi0+U2VsZWN0TGltaXQoJHVxdWVyeSwkYmF0Y2hzaXplLCRvZmZzZXQpOwoKICAgIC8vIGdldCB0aGUgdXNlciBpZHMuCiAgICAkdWlkcyA9IGFycmF5KCk7CiAgICB3aGlsZSggISRkYnJfdS0+RU9GKCkgKSB7CiAgICAgICAgJHRtcCA9IChpbnQpJGRicl91LT5maWVsZHNbJ2lkJ107CiAgICAgICAgaWYoICR0bXAgPiAwICYmICFpbl9hcnJheSgkdG1wLCR1aWRzKSApICR1aWRzW10gPSAkdG1wOwogICAgICAgICRkYnJfdS0+TW92ZU5leHQoKTsKICAgIH0KICAgICRkYnJfdS0+TW92ZUZpcnN0KCk7CgogICAgLy8gZ2V0IHRoZSBiZWxvbmdzIHN0dWZmIGZvciB0aGVzZSB1c2VycwogICAgJGJxdWVyeSA9ICdTRUxFQ1QgdXNlcmlkLGdyb3VwaWQgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX21hbXNfYmVsb25ncwogICAgICAgICAgICAgV0hFUkUgdXNlcmlkIElOICgnLmltcGxvZGUoJywnLCR1aWRzKS4nKSBPUkRFUiBCWSB1c2VyaWQsZ3JvdXBpZCc7CiAgICAkdG1wID0gJGRiLT5HZXRBcnJheSgkYnF1ZXJ5KTsKICAgICRiZWxvbmdzID0gYXJyYXkoKTsKICAgIGZvcmVhY2goICR0bXAgYXMgJGJyb3cgKSB7CiAgICAgICAgaWYoICFpc3NldCgkYmVsb25nc1skYnJvd1sndXNlcmlkJ11dKSApICRiZWxvbmdzWyRicm93Wyd1c2VyaWQnXV0gPSBhcnJheSgpOwogICAgICAgICRiZWxvbmdzWyRicm93Wyd1c2VyaWQnXV1bXSA9ICRicm93Wydncm91cGlkJ107CiAgICB9CgogICAgLy8gZ2V0IHRoZSBwcm9wZXJ0aWVzIGZvciB0aGVzZSB1c2VycwogICAgJHBxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfbWFtc19wcm9wZXJ0aWVzCiAgICAgICAgICAgICBXSEVSRSB1c2VyaWQgSU4gKCcuaW1wbG9kZSgnLCcsJHVpZHMpLicpIE9SREVSIEJZIHVzZXJpZCx0aXRsZSc7CiAgICAkdG1wID0gJGRiLT5HZXRBcnJheSgkcHF1ZXJ5KTsKICAgICRwcm9wZXJ0aWVzID0gYXJyYXkoKTsKICAgIGZvcmVhY2goICR0bXAgYXMgJHByb3cgKSB7CiAgICAgICAgaWYoICFpc3NldCgkcHJvcGVydGllc1skcHJvd1sndXNlcmlkJ11dKSApICRwcm9wZXJ0aWVzWyRwcm93Wyd1c2VyaWQnXV0gPSBhcnJheSgpOwogICAgICAgICRwcm9wZXJ0aWVzWyRwcm93Wyd1c2VyaWQnXV1bXSA9IGFycmF5KCRwcm93Wyd0aXRsZSddLCRwcm93WydkYXRhJ10pOwogICAgfQoKICAgIHdoaWxlKCAhJGRicl91LT5FT0YoKSApIHsKICAgICAgICAvLyBhZGQgcHJpbWFyeSBmaWVsZHMKICAgICAgICAkdWlkID0gJGRicl91LT5maWVsZHNbJ2lkJ107CiAgICAgICAgJHJvdyA9ICRmaWVsZG1hcDsKICAgICAgICAkcm93Wyd1c2VybmFtZSddID0gJGRicl91LT5maWVsZHNbJ3VzZXJuYW1lJ107CiAgICAgICAgJHJvd1snZXhwaXJlcyddID0gJGRicl91LT5maWVsZHNbJ2V4cGlyZXMnXTsKICAgICAgICAkcm93WydjcmVhdGVkYXRlJ10gPSAkZGJyX3UtPmZpZWxkc1snY3JlYXRlZGF0ZSddOwoKICAgICAgICAvLyBhZGQgZ3JvdXBuYW1lKHMpCiAgICAgICAgaWYoIGlzc2V0KCRiZWxvbmdzWyR1aWRdKSApIHsKICAgICAgICAgICAgJHRtcCA9IGFycmF5KCk7CiAgICAgICAgICAgIGZvcmVhY2goICRiZWxvbmdzWyR1aWRdIGFzICRnaWQgKSB7CiAgICAgICAgICAgICAgICBpZiggaXNzZXQoJGdyb3Vwc1skZ2lkXSkgKSAkdG1wW10gPSAkZ3JvdXBzWyRnaWRdOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRyb3dbJ2dyb3VwbmFtZSddID0gaW1wbG9kZSgnLCcsJHRtcCk7CiAgICAgICAgfQoKICAgICAgICAvLyBhZGQgcHJvcGVydGllcwogICAgICAgIGlmKCBpc3NldCgkcHJvcGVydGllc1skdWlkXSkgKSB7CiAgICAgICAgICAgIGZvcmVhY2goICRwcm9wZXJ0aWVzWyR1aWRdIGFzICRyZWMgKSB7CiAgICAgICAgICAgICAgICBpZiggYXJyYXlfa2V5X2V4aXN0cygkcmVjWzBdLCRyb3cpICkgJHJvd1skcmVjWzBdXSA9ICRyZWNbMV07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJGRicl91LT5Nb3ZlTmV4dCgpOwoKICAgICAgICAvLyBvdXRwdXQgdGhlIHJvdy4KICAgICAgICBlY2hvIHh0X2FycmF5OjppbXBsb2RlX3F1b3RlZChhcnJheV92YWx1ZXMoJHJvdykpLiJcbiI7CiAgICB9CiAgICAkb2Zmc2V0ICs9ICRiYXRjaHNpemU7Cn0gLy8gd2hpbGUKCmV4aXQoKTsKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_importgroup.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCAkZ0NtcyApICkgcmV0dXJuOwppZiggISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdlZGl0Z3JvdXBzJykgKSByZXR1cm47CgpmdW5jdGlvbiBjaGVja19ncm91cF9jb21wbGV0ZSggJiRncnAgKQp7CiAgaWYoICFpc19hcnJheSggJGdycCApICkgcmV0dXJuIGZhbHNlOwogIGlmKCFpc3NldCgkZ3JwWyduYW1lJ10pIHx8IGVtcHR5KCRncnBbJ25hbWUnXSkpIHJldHVybiBmYWxzZTsKCiAgLy8gcGFzc2VkCiAgaWYoICFpc3NldCgkZ3JwWydwcm9wZXJ0aWVzJ10pIHx8ICFpc19hcnJheSgkZ3JwWydwcm9wZXJ0aWVzJ10pIHx8IChjb3VudCgkZ3JwWydwcm9wZXJ0aWVzJ10pID09IDApICkgcmV0dXJuIGZhbHNlOwoKICBmb3JlYWNoKCAkZ3JwWydwcm9wZXJ0aWVzJ10gYXMgJG9uZXByb3AgKSB7CiAgICBpZiggIWNoZWNrX3Byb3BlcnR5X2NvbXBsZXRlKCAkb25lcHJvcCApICkgcmV0dXJuIGZhbHNlOwogIH0KCiAgcmV0dXJuIHRydWU7Cn0KCgpmdW5jdGlvbiBjaGVja19wcm9wZXJ0eV9jb21wbGV0ZSggJiRwcm9wICkKewogIGlmKCAhaXNfYXJyYXkoICRwcm9wICkgKSByZXR1cm4gRkFMU0U7CiAgaWYoIWlzc2V0KCRwcm9wWyduYW1lJ10pIHx8IGVtcHR5KCRwcm9wWyduYW1lJ10pKSByZXR1cm4gRkFMU0U7CiAgaWYoIWlzc2V0KCRwcm9wWyd0eXBlJ10pIHx8ICRwcm9wWyd0eXBlJ10gPT0gJycpIHJldHVybiBGQUxTRTsKICBpZighaXNzZXQoJHByb3BbJ3Byb21wdCddKSB8fCBlbXB0eSgkcHJvcFsncHJvbXB0J10pKSByZXR1cm4gRkFMU0U7CiAgaWYoIWlzc2V0KCRwcm9wWydzb3J0b3JkZXInXSkgfHwgJHByb3BbJ3NvcnRvcmRlciddID09PSAnJyApIHJldHVybiBGQUxTRTsKICBpZighaXNzZXQoJHByb3BbJ3N0YXR1cyddKSB8fCBlbXB0eSgkcHJvcFsnc3RhdHVzJ10pKSByZXR1cm4gRkFMU0U7CiAgaWYoIWlzc2V0KCRwcm9wWydsb3N0dW5mbGFnJ10pIHx8IGVtcHR5KCRwcm9wWydsb3N0dW5mbGFnJ10pKSByZXR1cm4gRkFMU0U7CgogIGlmKGlzc2V0KCRwcm9wWydsZW5ndGgnXSkpIHsKICAgIGlmKGVtcHR5KCRwcm9wWydsZW5ndGgnXSkpIHJldHVybiBGQUxTRTsKICAgIGlmKGludHZhbCgkcHJvcFsnbGVuZ3RoJ10pID09IDApIHJldHVybiBGQUxTRTsKICB9CiAgaWYoaXNzZXQoJHByb3BbJ21heGxlbmd0aCddKSkgewogICAgaWYoZW1wdHkoJHByb3BbJ21heGxlbmd0aCddKSkgcmV0dXJuIEZBTFNFOwogICAgaWYoaW50dmFsKCRwcm9wWydtYXhsZW5ndGgnXSkgPT0gMCkgcmV0dXJuIEZBTFNFOwogIH0KCiAgJHR5cGUgPSBpbnR2YWwoJHByb3BbJ3R5cGUnXSk7CiAgaWYoICR0eXBlID4gOSB8fCAkdHlwZSA8IDAgKSByZXR1cm4gRkFMU0U7CiAgaWYoICR0eXBlID09IDQgfHwgJHR5cGUgPT0gNSApIHsKICAgIC8vIGNoZWNrIGZvciBvcHRpb25zCiAgICBpZiggIWlzc2V0KCRwcm9wWydvcHRpb25zJ10pIHx8ICFpc19hcnJheSgkcHJvcFsnb3B0aW9ucyddKSApIHJldHVybiBGQUxTRTsKCiAgICBmb3JlYWNoKCAkcHJvcFsnb3B0aW9ucyddIGFzICRvbmVvcCApIHsKICAgICAgaWYoICFpc3NldCgkb25lb3BbJ25hbWUnXSkgfHwgIWlzc2V0KCRvbmVvcFsndGV4dCddKSApIHJldHVybiBGQUxTRTsKICAgIH0KICB9CgogIHJldHVybiBUUlVFOwp9CgppZiggIW1hbXNfdXRpbHM6OnVzaW5nX3N0ZF9jb25zdW1lcigpICkgewogICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3Jfbm90c3VwcG9ydGVkJykpOwogICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwnZ3JvdXBzJyk7Cn0KCmlmKCBpc3NldCggJHBhcmFtc1snY2FuY2VsJ10gKSApIHsKICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsJ2dyb3VwcycpOwp9CgppZiggaXNzZXQoICRwYXJhbXNbJ3N1Ym1pdCddICkgKSB7CiAgLy8KICAvLyBTdWJtaXQgd2FzIHByZXNzZWQKICAvLwogIGlmKCAhaXNzZXQoICRfRklMRVNbJGlkLid4bWxmaWxlJ10gKSApIHsKICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfbWlzc2luZ191cGxvYWQnKSk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsJ2dyb3VwcycpOwogIH0KICAkdGhlZmlsZSA9JiAkX0ZJTEVTWyRpZC4neG1sZmlsZSddOwogIGlmKCAkdGhlZmlsZVsndHlwZSddICE9ICd0ZXh0L3htbCcgfHwgJHRoZWZpbGVbJ3NpemUnXSA9PSAwIHx8ICR0aGVmaWxlWydlcnJvciddICE9IDAgKSB7CiAgICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX3Byb2JsZW1fdXBsb2FkJykpOwogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCdncm91cHMnKTsKICB9CgogIC8vCiAgLy8gV2UgZ290IGFuIFhNTCBmaWxlIChob3BlIGl0J3MgdGhlIHJpZ2h0IG9uZQogIC8vIG5vdyB3ZSBjYW4gdHJ5IHRvIHBhcnNlIGl0CiAgLy8KCiAgJHhtbCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCAkdGhlZmlsZVsndG1wX25hbWUnXSApOwogICRwYXJzZXIgPSB4bWxfcGFyc2VyX2NyZWF0ZSgpOwogICRyZXQgPSB4bWxfcGFyc2VfaW50b19zdHJ1Y3QoICRwYXJzZXIsICR4bWwsICR2YWwsICR4dCApOwogIHhtbF9wYXJzZXJfZnJlZSggJHBhcnNlciApOwoKICBpZiggJHJldCA9PSAwICkgewogICAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9iYWRfeG1sJykuJyAxJyk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsJ2dyb3VwcycpOwogIH0KCiAgLy8KICAvLyBXZSBoYXZlIHNvbWUga2luZCBvZiB2YWxpZCBYTUwKICAvLwogICRvbmVwcm9wZXJ0eSA9IGFycmF5KCk7CiAgJG9uZW9wdGlvbiA9IGFycmF5KCk7CiAgJGhhdmVfY29tcGxldGVfZ3JvdXAgPSBmYWxzZTsKICAkZ3JwX2luZm8gPSBhcnJheSgpOwogIGZvcmVhY2goICR2YWwgYXMgJGVsZW0gKSB7CiAgICAkdmFsdWUgPSAoaXNzZXQoJGVsZW1bJ3ZhbHVlJ10pPyRlbGVtWyd2YWx1ZSddOicnKTsKICAgICR0eXBlID0gKGlzc2V0KCRlbGVtWyd0eXBlJ10pPyRlbGVtWyd0eXBlJ106JycpOwogICAgJHRhZyA9IHN0cnRvbG93ZXIoJGVsZW1bJ3RhZyddKTsKICAgICRmbGQgPSBzdWJzdHIoJHRhZyxzdHJwb3MoJHRhZywnXycpKzEpOwoKICAgIHN3aXRjaCggJHRhZyApIHsKICAgIGNhc2UgJ21hbXNfZ3JvdXAnOgogICAgICB7CglpZiggJHR5cGUgIT0gJ2NvbXBsZXRlJyAmJiAkdHlwZSAhPSAnY2xvc2UnICkgY29udGludWU7CglpZiggIWNoZWNrX2dyb3VwX2NvbXBsZXRlKCRncnBfaW5mbykgKSB7CgkgIC8vIGFuIGVycm9yIHRoYXQgd2Ugc2hvdWxkIG5ldmVyIGdldAoJICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX2JhZF94bWwnKS4nIDInKTsKCSAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCdncm91cHMnKTsKCSAgcmV0dXJuOwoJfQoJLy8gd2Ugc2hvdWxkIGhhdmUgYSBjb21wbGV0ZSBncm91cCBhdCB0aGlzIHBvaW50CgkkaGF2ZV9jb21wbGV0ZV9ncm91cCA9IHRydWU7CglicmVhazsKICAgICAgfQoKICAgIGNhc2UgJ2dycF9uYW1lJzoKICAgIGNhc2UgJ2dycF9kZXNjcmlwdGlvbic6CiAgICAgIHsKCWlmKCAkdHlwZSAhPSAnY29tcGxldGUnICYmICR0eXBlICE9ICdjbG9zZScgKSBjb250aW51ZTsKCWlmKCBpc3NldCgkZ3JwX2luZm9bJGZsZF0pICkgewoJICAvLyBhbiBlcnJvciB0aGF0IHdlIHNob3VsZCBuZXZlciBnZXQKCSAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9iYWRfeG1sJykuJyAzJyk7CgkgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwnZ3JvdXBzJyk7CgkgIHJldHVybjsKCX0KCSRncnBfaW5mb1skZmxkXSA9ICR2YWx1ZTsKCWJyZWFrOwogICAgICB9CgoKICAgIGNhc2UgJ3Byb3BlcnR5JzoKICAgICAgewoJaWYoICR0eXBlICE9ICdjb21wbGV0ZScgJiYgJHR5cGUgIT0gJ2Nsb3NlJyApIGNvbnRpbnVlOwoJaWYoICFjaGVja19wcm9wZXJ0eV9jb21wbGV0ZSgkb25lcHJvcGVydHkpICkgewoJICAvLyBhbiBlcnJvciB0aGF0IHdlIHNob3VsZCBuZXZlciBnZXQKCSAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9iYWRfeG1sJykuJyA0Jyk7CgkgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwnZ3JvdXBzJyk7CgkgIHJldHVybjsKCX0KCWlmKCAhaXNzZXQoJGdycF9pbmZvWydwcm9wZXJ0aWVzJ10pICkgJGdycF9pbmZvWydwcm9wZXJ0aWVzJ10gPSBhcnJheSgpOwoJJGdycF9pbmZvWydwcm9wZXJ0aWVzJ11bXSA9ICRvbmVwcm9wZXJ0eTsKCSRvbmVwcm9wZXJ0eSA9IGFycmF5KCk7CglicmVhazsKICAgICAgfQoKICAgIGNhc2UgJ3Byb3BfbmFtZSc6CiAgICBjYXNlICdwcm9wX3Byb21wdCc6CiAgICBjYXNlICdwcm9wX3ZhbHVlJzoKICAgIGNhc2UgJ3Byb3BfdHlwZSc6CiAgICBjYXNlICdwcm9wX2xlbmd0aCc6CiAgICBjYXNlICdwcm9wX21heGxlbmd0aCc6CiAgICBjYXNlICdwcm9wX3NvcnRvcmRlcic6CiAgICBjYXNlICdwcm9wX3N0YXR1cyc6CiAgICBjYXNlICdwcm9wX2xvc3R1bmZsYWcnOgogICAgICB7CglpZiggJHR5cGUgIT0gJ2NvbXBsZXRlJyAmJiAkdHlwZSAhPSAnY2xvc2UnICkgY29udGludWU7CglpZiggaXNzZXQoICRvbmVwcm9wZXJ0eVskZmxkXSApICkgewoJICAvLyBhbiBlcnJvciB0aGF0IHdlIHNob3VsZCBuZXZlciBnZXQKCSAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9iYWRfeG1sJykuJyA1Jyk7CgkgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwnZ3JvdXBzJyk7CgkgIHJldHVybjsKCX0KCSRvbmVwcm9wZXJ0eVskZmxkXSA9ICR2YWx1ZTsKCWJyZWFrOwogICAgICB9CgogICAgY2FzZSAncHJvcF9vcHRpb24nOgogICAgICB7CglpZiggJHR5cGUgIT0gJ2NvbXBsZXRlJyAmJiAkdHlwZSAhPSAnY2xvc2UnICkgY29udGludWU7Cgkkb25lcHJvcGVydHlbJ29wdGlvbnMnXVtdID0gJG9uZW9wdGlvbjsKCSRvbmVvcHRpb24gPSBhcnJheSgpOwoJYnJlYWs7CiAgICAgIH0KCiAgICBjYXNlICdvcF9uYW1lJzoKICAgIGNhc2UgJ29wX3RleHQnOgogICAgICB7CglpZiggJHR5cGUgIT0gJ2NvbXBsZXRlJyAmJiAkdHlwZSAhPSAnY2xvc2UnICkgY29udGludWU7Cgkkb25lb3B0aW9uWyRmbGRdID0gJHZhbHVlOwoJYnJlYWs7CiAgICAgIH0KICAgIH0gLy8gc3dpdGNoCiAgfSAvLyBmb3JlYWNoCgogIC8vCiAgLy8gSWYgd2UgZ290IGhlcmUsIHdlIHBhcnNlZCB0aGUgeG1sIGZpbGUgcHJvcGVybHkKICAvLyBhbmQgaXQgbG9va3MgZ29vZC4KICAvLwoKICAvLyBJZiB0aGUgbmV3bmFtZSBpcyBzZXQsIHdlJ2xsIHVzZSB0aGF0CiAgaWYoIGlzc2V0KCRwYXJhbXNbJ2lucHV0X25ld25hbWUnXSkgJiYgJHBhcmFtc1snaW5wdXRfbmV3bmFtZSddICE9ICcnICkgJGdycF9pbmZvWyduYW1lJ10gPSAkcGFyYW1zWydpbnB1dF9uZXduYW1lJ107CgogIGlmKCAkdGhpcy0+R3JvdXBFeGlzdHNCeU5hbWUoICRncnBfaW5mb1snbmFtZSddICkgKSB7CiAgICAvLyBhbiBlcnJvciB0aGF0IHdlIHNob3VsZCBuZXZlciBnZXQKICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfZ3JvdXBleGlzdHMnKSk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsJ2dyb3VwcycpOwogICAgcmV0dXJuOwogIH0KCiAgaWYoICFpc3NldCgkZ3JwX2luZm9bJ3Byb3BlcnRpZXMnXSkgfHwgIWlzX2FycmF5KCRncnBfaW5mb1sncHJvcGVydGllcyddKSB8fCAoY291bnQoJGdycF9pbmZvWydwcm9wZXJ0aWVzJ10pID09IDApICkgewogICAgLy8gbm8gcHJvcGVydGllcz8KICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfcHJvcGVydGllcycpKTsKICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwnZ3JvdXBzJyk7CiAgICByZXR1cm47CiAgfQoKICAvLyBOb3cgYWRkIHRoZSBwcm9wZXJ0aWVzCiAgLy8gKGZpcnN0IHNjYW4gZm9yIG5hbWVzKQogICRwYXNzZWQgPSB0cnVlOwogIGZvcmVhY2goICRncnBfaW5mb1sncHJvcGVydGllcyddIGFzICRvbmVwcm9wICkgewogICAgJHJlcyA9ICR0aGlzLT5HZXRQcm9wZXJ0eURlZm4oICRvbmVwcm9wWyduYW1lJ10gKTsKICAgIGlmKCBpc19hcnJheSgkcmVzKSApIHsKICAgICAgJHBhc3NlZCA9IGZhbHNlOwogICAgICBicmVhazsKICAgIH0KICB9CiAgaWYoICEkcGFzc2VkICkgewogICAgLy8gbm8gcHJvcGVydGllcz8KICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfZHVwX3Byb3BlcnRpZXMnKSk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsJ2dyb3VwcycpOwogICAgcmV0dXJuOwogIH0KCiAgLy8KICAvLyBOb3cgcmVhbGx5IGFkZCB0aGVtCiAgLy8KICBmb3JlYWNoKCAkZ3JwX2luZm9bJ3Byb3BlcnRpZXMnXSBhcyAkb25lcHJvcCApIHsKICAgICRyZXMgPSAkdGhpcy0+QWRkUHJvcGVydHlEZWZuKCRvbmVwcm9wWyduYW1lJ10sICRvbmVwcm9wWydwcm9tcHQnXSwgJG9uZXByb3BbJ3R5cGUnXSwgJG9uZXByb3BbJ2xlbmd0biddLCAkb25lcHJvcFsnbWF4bGVuZ3RoJ10pOwogICAgaWYoIGlzX2FycmF5KCAkcmVzICkgJiYgJHJlc1swXSA9PT0gRkFMU0UgKSB7CiAgICAgIC8vIGZvciBzb21lIGR1bWIgcmVhc29uLCB3ZSBzdGlsbCBjb3VsZG4ndCBpbnNlcnQKICAgICAgLy8gdGhlIHByb3BlcnR5CiAgICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfY2FudGFkZHByb3AnKSk7CiAgICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwnZ3JvdXBzJyk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiggJG9uZXByb3BbJ3R5cGUnXSA9PSA0IHx8ICRvbmVwcm9wWyd0eXBlJ10gPT0gNSApIHsKICAgICAgLy8gaXQncyBhIHNlbGVjdCB0eXBlCiAgICAgICRvcHMgPSBhcnJheSgpOwogICAgICBmb3JlYWNoKCAkb25lcHJvcFsnb3B0aW9ucyddIGFzICRvbmVvcCApIHsKCSRvcHNbXSA9ICRvbmVvcFsndGV4dCddLic9Jy4kb25lb3BbJ25hbWUnXTsKICAgICAgfQogICAgICAkcmVzID0gJHRoaXMtPkFkZFNlbGVjdE9wdGlvbnMoICRvbmVwcm9wWyduYW1lJ10sICRvcHMgKTsKICAgICAgaWYoICRyZXNbMF0gPT0gRkFMU0UgKSB7CgkvLyBmb3Igc29tZSBkdW1iIHJlYXNvbiwgd2Ugc3RpbGwgY291bGRuJ3QgaW5zZXJ0CgkvLyB0aGUgcHJvcGVydHkKCSR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfY2FudGFkZHByb3AnKS4nIDInKTsKCSR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwnZ3JvdXBzJyk7CglyZXR1cm47CiAgICAgIH0KICAgIH0KICB9CgogIC8vIFdvb2hvbywgdGhlIHByb3BlcnRpZXMgd2VyZSBhZGRlZAogIC8vIE5vdyB0byBhZGQgdGhlIGdyb3VwIGl0c2VsZi4KICAkcmVzID0gJHRoaXMtPkFkZEdyb3VwKCRncnBfaW5mb1snbmFtZSddLCRncnBfaW5mb1snZGVzY3JpcHRpb24nXSk7CiAgaWYoIGlzX2FycmF5KCAkcmVzICkgJiYgJHJlc1swXSA9PT0gRkFMU0UgKSB7CiAgICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX2NhbnRhZGRncm91cCcpKTsKICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwnZ3JvdXBzJyk7CiAgICByZXR1cm47CiAgfQogICRncnBpZCA9ICRyZXNbMV07CgogIC8vIGFuZCBhc3NvY2lhdGUgdGhlIHByb3BlcnRpZXMgd2l0aCB0aGUgZ3JvdXAKICAkZXJyb3IgPSBmYWxzZTsKICBmb3JlYWNoKCAkZ3JwX2luZm9bJ3Byb3BlcnRpZXMnXSBhcyAkb25lcHJvcCApIHsKICAgIC8vIGlmIGl0J3MgYW4gb3B0aW9uIHR5cGUgKHR5cGUgNCBvciA1KSB0aGVuCiAgICAvLyBhZGQgdGhlIG9wdGlvbnMKICAgICRyZXMgPSAkdGhpcy0+QWRkR3JvdXBQcm9wZXJ0eVJlbGF0aW9uKCAkZ3JwaWQsICRvbmVwcm9wWyduYW1lJ10sICRvbmVwcm9wWydzb3J0b3JkZXInXSwgJG9uZXByb3BbJ2xvc3R1bmZsYWcnXSwgJG9uZXByb3BbJ3N0YXR1cyddICk7CiAgICBpZiggJHJlc1swXSA9PT0gRkFMU0UgKSAkZXJyb3IgPSB0cnVlOwogIH0KICBpZiggJGVycm9yID09IHRydWUgKSB7CiAgICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX2NhbnRhZGRncm91cHJlbHMnKSk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsJ2dyb3VwcycpOwogICAgcmV0dXJuOwogIH0KCiAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCdncm91cHMnKTsKfSAvLyBpZgoKLy8gUHJvdmlkZSBhIHNpbXBsZSBmb3JtIHRoYXQgYWxsb3dzIHBlb3BsZSB0byBjaG9vc2UgdGhlIGZpbGUgdG8gaW1wb3J0CiRzbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwnYWRtaW5faW1wb3J0Z3JvdXAnLCRyZXR1cm5pZCwncG9zdCcsJ211bHRpcGFydC9mb3JtLWRhdGEnKSk7CiRzbWFydHktPmFzc2lnbignZW5kZm9ybScsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiRzbWFydHktPmFzc2lnbignc3VibWl0JywkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdzdWJtaXQnLCR0aGlzLT5MYW5nKCdzdWJtaXQnKSkpOwokc21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnY2FuY2VsJywkdGhpcy0+TGFuZygnY2FuY2VsJykpKTsKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfZmlsZW5hbWUnLCR0aGlzLT5MYW5nKCdwcm9tcHRfaW1wb3J0eG1sZmlsZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9maWxlbmFtZScsJHRoaXMtPkNyZWF0ZUZpbGVVcGxvYWRJbnB1dCgkaWQsJ3htbGZpbGUnLCcnLDQwKSk7CiRzbWFydHktPmFzc2lnbigncHJvbXB0X25ld25hbWUnLCR0aGlzLT5MYW5nKCdwcm9tcHRfbmV3Z3JvdXBuYW1lJykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X25ld25hbWUnLCR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdpbnB1dF9uZXduYW1lJykpOwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdpbXBvcnRncm91cC50cGwnKTsKCi8vIEVPRgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_import_from_feu.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIHsgZXhpdDsgfQ0KaWYoICEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnc2l0ZXByZWZzJykgKSByZXR1cm47DQovKiogQHZhciBpbnQgJHJldHVybmlkIGluIHNjb3BlIGZyb20gZmlsZSBpbmNsdXNpb24gKi8NCg0KJHBhcm1zID0gW107DQokcGFybXNbJ2Vycm9yJ10gPSAwOw0KJHBhcm1zWydtZXNzYWdlJ10gPSAnU3VjY2VzcyEnOw0KDQoNCg0KaWYoIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSB8fCBpc3NldCgkcGFyYW1zWydkb19pbXBvcnQnXSkgKQ0Kew0KICAkciA9IFxNQU1TXGZldV9pbXBvcnRlcjo6cnVuKCk7DQogICRwYXJtc1snZXJyb3InXSA9ICRyWzFdWzBdOw0KICAkcGFybXNbJ21lc3NhZ2UnXSA9ICRyWzFdWzFdOw0KfQ0KZWxzZQ0Kew0KICAkcGFybXNbJ2Vycm9yJ10gPSAxOw0KICAkcGFybXNbJ21lc3NhZ2UnXSA9ICdObyBkaXJlY3QgYWNjZXNzISc7DQp9DQoNCiR0aGlzLT5SZWRpcmVjdCgkaWQsICdhZG1pbl9zZXR0aW5ncycsICRyZXR1cm5pZCwgJHBhcm1zKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_import_users.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KaWYoICEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygndXNlcnMnKSApIHJldHVybjsKJHRoaXMtPlNldEN1cnJlbnRUYWIoJ3VzZXJzJyk7CgppZiggaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pICkgJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsKCmlmKCAhbWFtc191dGlsczo6dXNpbmdfc3RkX2NvbnN1bWVyKCkgKSB7CiAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9ub3RzdXBwb3J0ZWQnKSk7CiAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkKTsKICByZXR1cm47Cn0KCiRpbXBvcnRwcmVmcyA9IGFycmF5KCdkZWxldGVfdXNlcnMnPT4wLCdkZWxpbWl0ZXInPT4nLCcpOwokdG1wID0gJHRoaXMtPlhUR2V0UHJlZmVyZW5jZSgnaW1wb3J0cHJlZnMnKTsKaWYoICR0bXAgKSAkdG1wID0gdW5zZXJpYWxpemUoJHRtcCk7CmlmKCBpc19hcnJheSgkdG1wKSApICRpbXBvcnRwcmVmcyA9ICR0bXA7CgppZiggaXNzZXQoJHBhcmFtc1snc3VibWl0J10pICkgewogIHRyeSB7CiAgICAkX2ZwID0gJGlkLidmaWxlJzsKICAgIC8vIGNoZWNrIHRoZSBmaWxlCiAgICBpZiggIWlzc2V0KCRfRklMRVMpIHx8ICFpc3NldCgkX0ZJTEVTWyRfZnBdKSB8fCAkX0ZJTEVTWyRfZnBdWyduYW1lJ10gPT0gJycgKSB7CiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX3Byb2JsZW1fdXBsb2FkJykpOwogICAgfQogICAgaWYoICRfRklMRVNbJF9mcF1bJ3NpemUnXSA9PSAwIHx8ICRfRklMRVNbJF9mcF1bJ2Vycm9yJ10gIT0gMCApIHsKICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfcHJvYmxlbV91cGxvYWQnKSk7CiAgICB9CiAgICAkZmggPSBmb3BlbigkX0ZJTEVTWyRfZnBdWyd0bXBfbmFtZSddLCdyJyk7CiAgICBpZiggISRmaCApIHRocm93IG5ldyBFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX21pc3Npbmd1cGxvYWQnKSk7CiAgICB3aGlsZSggIWZlb2YoJGZoKSApIHsKICAgICAgJGxpbmUgPSB4dF91dGlsczo6ZmdldHMoJGZoKTsKICAgICAgJGxpbmUgPSB0cmltKCRsaW5lKTsKICAgICAgaWYoICEkbGluZSApIGNvbnRpbnVlOwogICAgICBpZiggIXN0YXJ0c3dpdGgoJGxpbmUsJyMjJykgKSB0aHJvdyBuZXcgRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbXBvcnRmaWxlZm9ybWF0JykpOwogICAgICAkbGluZSA9IHRyaW0oc3Vic3RyKCRsaW5lLDIpKTsKICAgICAgJGZpZWxkcyA9IHh0X2FycmF5OjpzbWFydF9leHBsb2RlKCRsaW5lLCRpbXBvcnRwcmVmc1snZGVsaW1pdGVyJ10pOwogICAgICBpZiggY291bnQoJGZpZWxkcykgPCAxICkgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW1wb3J0ZmlsZWZvcm1hdCcpKTsKICAgICAgYnJlYWs7CiAgICB9CiAgICBmY2xvc2UoJGZoKTsKCiAgICAkaW1wb3J0cHJlZnNbJ2RlbGV0ZV91c2VycyddID0gKGludCl4dF91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJ2RlbGV0ZV91c2VycycsMCk7CiAgICAkaW1wb3J0cHJlZnNbJ2RlbGltaXRlciddID0gdHJpbSh4dF91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJ2RlbGltaXRlcicpKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdpbXBvcnRwcmVmcycsc2VyaWFsaXplKCRpbXBvcnRwcmVmcykpOwoKICAgICRmbiA9IHRlbXBuYW0oVE1QX0NBQ0hFX0xPQ0FUSU9OLCdtYW1zX2ltcG9ydCcpOwogICAgaWYoICEkZm4gKSB0aHJvdyBuZXcgRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9jcmVhdGV0bXBmaWxlJykpOwogICAgQGNvcHkoJF9GSUxFU1skX2ZwXVsndG1wX25hbWUnXSwkZm4pOwoKICAgICRyZXR1cm5fdXJsID0gJHRoaXMtPmNyZWF0ZV91cmwoJGlkLCdkZWZhdWx0YWRtaW4nLCRyZXR1cm5pZCk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ3JldHVybl91cmwnLCRyZXR1cm5fdXJsKTsKCiAgICAkdXJsID0gJHRoaXMtPmNyZWF0ZV91cmwoJGlkLCdhZG1pbl9kb2ltcG9ydCcsICRyZXR1cm5pZCxhcnJheSgnZmlsZSc9PmJhc2VuYW1lKCRmbikpKS4nJnNob3d0ZW1wbGF0ZT1mYWxzZSc7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2lmcmFtZV9zcmMnLCAkdXJsKTsKICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5faW1wb3J0X3VzZXJzMi50cGwnKTsKICAgIHJldHVybjsKICB9CiAgY2F0Y2goIEV4Y2VwdGlvbiAkZSApIHsKICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJGUtPkdldE1lc3NhZ2UoKSk7CiAgfQp9CgovLyBidWlsZCB0aGUgZm9ybS4KJGdyb3VwbGlzdCA9IGFycmF5X2ZsaXAoJHRoaXMtPkdldEdyb3VwTGlzdCgpKTsKaWYoICFjb3VudCgkZ3JvdXBsaXN0KSApIHsKICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ25vZ3JvdXBzJykpOwogICR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCk7Cn0KCiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywkdGhpcy0+WFRDcmVhdGVGb3JtU3RhcnQoJGlkLCdhZG1pbl9pbXBvcnRfdXNlcnMnKSk7CiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiRzbWFydHktPmFzc2lnbignb3B0aW9ucycsJGltcG9ydHByZWZzKTsKJHNtYXJ0eS0+YXNzaWduKCdncm91cGxpc3QnLCRncm91cGxpc3QpOwplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluX2ltcG9ydF91c2Vycy50cGwnKTsKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_logout.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KCmlmKCAkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnZWRpdHVzZXJzJykgKSB7CglpZiggaXNzZXQoJHBhcmFtc1sndXNlcl9pZCddKSApIHsKCQkkdGhpcy0+TG9nb3V0VXNlciggJHBhcmFtc1sndXNlcl9pZCddLCAnTG9nZ2VkIG91dCBieSBhZG1pbicgKTsKCX0KfQoKJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCd1c2VycycpOwoKLy8gRU9GCg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_settings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KaWYoICEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnc2l0ZXByZWZzJykgKSByZXR1cm47CgppZiggaXNzZXQoJHBhcmFtc1snZXJyb3InXSkgJiYgJHBhcmFtc1snZXJyb3InXSA9PSAxICkKewogIAogIGlmKCBpc19hcnJheSgkcGFyYW1zWydtZXNzYWdlJ10pKQogIHsKICAgICRlcnJfbGlzdCA9IFtdOwogICAgZm9yZWFjaCgkcGFyYW1zWydtZXNzYWdlJ10gYXMgJG1zZykKICAgIHsKICAgICAgJGVycl9saXN0W10gPSAkdGhpcy0+TGFuZygkbXNnKTsKICAgIH0KICB9CiAgZWxzZQogIHsKICAgICRlcnJfbGlzdCA9IFskdGhpcy0+TGFuZygkcGFyYW1zWydtZXNzYWdlJ10pXTsKICB9CiAgJHRoaXMtPlNob3dFcnJvcnMoJGVycl9saXN0KTsKfQplbHNlCnsKICBpZiggaXNzZXQoJHBhcmFtc1snbWVzc2FnZSddKSApCiAgewogICAgJHRoaXMtPlNob3dNZXNzYWdlKCAkdGhpcy0+TGFuZygkcGFyYW1zWydtZXNzYWdlJ10pICk7CiAgfQp9CgplY2hvICR0aGlzLT5TdGFydFRhYkhlYWRlcnMoKTsKZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCAncHJlZnMnLCAkdGhpcy0+TGFuZygncHJlZmVyZW5jZXMnKSk7CmVjaG8gJHRoaXMtPlNldFRhYkhlYWRlciggJ2F1dGgnLCAkdGhpcy0+TGFuZygnYXV0aGVudGljYXRpb24nKSk7CmVjaG8gJHRoaXMtPkVuZFRhYkhlYWRlcnMoKTsKCmVjaG8gJHRoaXMtPlN0YXJ0VGFiQ29udGVudCgpOwplY2hvICR0aGlzLT5TdGFydFRhYigncHJlZnMnLCRwYXJhbXMpOwppbmNsdWRlKF9fRElSX18uJy9mdW5jdGlvbi5hZG1pbl9wcmVmc3RhYi5waHAnKTsKZWNobyAkdGhpcy0+RW5kVGFiKCk7CgplY2hvICR0aGlzLT5TdGFydFRhYignYXV0aCcsJHBhcmFtcyk7CmluY2x1ZGUoX19ESVJfXy4nL2Z1bmN0aW9uLmFkbWluX2F1dGh0YWIucGhwJyk7CmVjaG8gJHRoaXMtPkVuZFRhYigpOwplY2hvICR0aGlzLT5FbmRUYWJDb250ZW50KCk7CiMKIyBFT0YKIwo=]]></data>
	</file>
	<file>
	  <filename>/action.admin_set_auth.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIHJldHVybjsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpICkgcmV0dXJuOwokdGhpcy0+U2V0Q3VycmVudFRhYignYXV0aCcpOwoKaWYoICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1c2VfdXNlcnNhbHQnKSApIHsKICAgIGlmKCBceHRfcGFyYW06OmV4aXN0cygkcGFyYW1zLCdwd3NhbHQnKSApIHsKICAgICAgICAkcHdzYWx0ID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ3B3c2FsdCcpOwogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgY291bnQoaWQpIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX3VzZXJzJzsKICAgICAgICAkbnVzZXJzID0gJGRiLT5HZXRPbmUoJHF1ZXJ5KTsKICAgICAgICBpZiggJG51c2VycyA+IDAgKSB7CiAgICAgICAgICAgICRvbGRzYWx0ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3B3c2FsdCcpOwogICAgICAgICAgICBpZiggJG9sZHNhbHQgIT0gJHB3c2FsdCApIHsKICAgICAgICAgICAgICAgIC8vIGNhbiBvbmx5IGNoYW5nZSB0aGUgc2FsdCBpZiB0aGVyZSBhcmUgbm8gdXNlcnMuCiAgICAgICAgICAgICAgICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX2FkanVzdHNhbHQnKSk7CiAgICAgICAgICAgICAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsICdhdXRoJywgJycsICdhZG1pbl9zZXR0aW5ncycpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwd3NhbHQnLCRwd3NhbHQpOwogICAgfQp9CgokdGhpcy0+U2V0UHJlZmVyZW5jZSgncmVxdWlyZV9vbmVncm91cCcsKGludCkkcGFyYW1zWydyZXF1aXJlX29uZWdyb3VwJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9ncm91cCcsKGludCkkcGFyYW1zWydkZWZhdWx0X2dyb3VwJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnc3VwcG9ydF9sb3N0dW4nLChpbnQpJHBhcmFtc1snc3VwcG9ydF9sb3N0dW4nXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhbGxvd19jaGFuZ2V1c2VybmFtZScsKGludCkkcGFyYW1zWydhbGxvd19jaGFuZ2V1c2VybmFtZSddKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3N1cHBvcnRfbG9zdHB3JywoaW50KSRwYXJhbXNbJ3N1cHBvcnRfbG9zdHB3J10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgncGFzc3dvcmRmbGRsZW5ndGgnLChpbnQpJHBhcmFtc1sncHdmbGRsZW4nXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtaW5fcGFzc3dvcmRsZW5ndGgnLChpbnQpJHBhcmFtc1snbWlucHdsZW4nXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXhfcGFzc3dvcmRsZW5ndGgnLChpbnQpJHBhcmFtc1snbWF4cHdsZW4nXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdlbmhhbmNlZF9wYXNzd29yZCcsKGludCkkcGFyYW1zWydlbmhhbmNlZHB3J10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgncGFzc3dvcmRfcmVxdWlyZWRjaGFycycsdHJpbSgkcGFyYW1zWydwd3JlcXVpcmVkY2hhcnMnXSkpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlcm5hbWVmbGRsZW5ndGgnLChpbnQpJHBhcmFtc1sndW5mbGRsZW4nXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtaW5fdXNlcm5hbWVsZW5ndGgnLChpbnQpJHBhcmFtc1snbWludW5sZW4nXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXhfdXNlcm5hbWVsZW5ndGgnLChpbnQpJHBhcmFtc1snbWF4dW5sZW4nXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdjb29raWVuYW1lJyx0cmltKCRwYXJhbXNbJ2Nvb2tpZW5hbWUnXSkpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnY29va2llX2tlZXBhbGl2ZScsKGludCkkcGFyYW1zWydjb29raWVfa2VlcGFsaXZlJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlcm5hbWVfaXNfZW1haWwnLChpbnQpJHBhcmFtc1sndXNlcm5hbWVfaXNfZW1haWwnXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhbGxvd19kdXBsaWNhdGVfZW1haWxzJywoaW50KSRwYXJhbXNbJ2FsbG93X2R1cGxpY2F0ZV9lbWFpbHMnXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhbGxvd19kdXBsaWNhdGVfcmVtaW5kZXJzJywoaW50KSRwYXJhbXNbJ2FsbG93X2R1cGxpY2F0ZV9yZW1pbmRlcnMnXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdsb2dpbl9hZnRlcl92ZXJpZnknLCAoaW50KSAkcGFyYW1zWydsb2dpbl9hZnRlcl92ZXJpZnknXSk7CgokdGhpcy0+U2V0UHJlZmVyZW5jZSgnc2lnbmluX2J1dHRvbicsdHJpbSgkcGFyYW1zWydzaWduaW5fYnV0dG9uJ10pKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3JlcXVpcmVkX2ZpZWxkX21hcmtlcicsdHJpbSgkcGFyYW1zWydyZXF1aXJlZF9maWVsZF9tYXJrZXInXSkpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgncmVxdWlyZWRfZmllbGRfY29sb3InLHRyaW0oJHBhcmFtc1sncmVxdWlyZWRfZmllbGRfY29sb3InXSkpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnaGlkZGVuX2ZpZWxkX21hcmtlcicsdHJpbSgkcGFyYW1zWydoaWRkZW5fZmllbGRfbWFya2VyJ10pKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2hpZGRlbl9maWVsZF9jb2xvcicsdHJpbSgkcGFyYW1zWydoaWRkZW5fZmllbGRfY29sb3InXSkpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnc2VjdXJlX2ZpZWxkX21hcmtlcicsdHJpbSgkcGFyYW1zWydzZWN1cmVfZmllbGRfbWFya2VyJ10pKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3NlY3VyZV9maWVsZF9jb2xvcicsdHJpbSgkcGFyYW1zWydzZWN1cmVfZmllbGRfY29sb3InXSkpOwoKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3BhZ2VpZGZvcmdvdHBhc3N3ZCcsdHJpbSgkcGFyYW1zWydwYWdlaWRmb3Jnb3RwYXNzd2QnXSkpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgncGFnZWlkX2NoYW5nZXNldHRpbmdzJyx0cmltKCRwYXJhbXNbJ3BhZ2VpZF9jaGFuZ2VzZXR0aW5ncyddKSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwYWdlaWRfbG9naW4nLHRyaW0oJHBhcmFtc1sncGFnZWlkX2xvZ2luJ10pKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3BhZ2VpZF9sb2dvdXQnLHRyaW0oJHBhcmFtc1sncGFnZWlkX2xvZ291dCddKSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwYWdlaWRfb252ZXJpZnknLHRyaW0oJHBhcmFtc1sncGFnZWlkX29udmVyaWZ5J10pKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3BhZ2VpZF9hZnRlcnZlcmlmeScsdHJpbSgkcGFyYW1zWydwYWdlaWRfYWZ0ZXJ2ZXJpZnknXSkpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgncGFnZWlkX2FmdGVyY2hhbmdlc2V0dGluZ3MnLHRyaW0oJHBhcmFtc1sncGFnZWlkX2FmdGVyY2hhbmdlc2V0dGluZ3MnXSkpOwoKaWYoIGlzc2V0KCRwYXJhbXNbJ2Vjb21tX29yZGVyY2FuY2VsbGVkJ10pICkgIHsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdlY29tbV9wYWlkcmVnaXN0cmF0aW9uJywoaW50KSRwYXJhbXNbJ2Vjb21tX3BhaWRyZWdpc3RyYXRpb24nXSk7CiAgICBpZiggJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Vjb21tX3BhaWRyZWdpc3RyYXRpb24nKSApIHsKICAgICAgICAkdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCdDR0Vjb21tZXJjZUJhc2UnLCdPcmRlclVwZGF0ZWQnLGZhbHNlKTsKICAgICAgICAkdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCdDR0Vjb21tZXJjZUJhc2UnLCdPcmRlckRlbGV0ZWQnLGZhbHNlKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoJ0NHRWNvbW1lcmNlQmFzZScsJ09yZGVyVXBkYXRlZCcpOwogICAgICAgICR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoJ0NHRWNvbW1lcmNlQmFzZScsJ09yZGVyRGVsZXRlZCcpOwogICAgfQogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Vjb21tX29yZGVyY2FuY2VsbGVkJyx0cmltKCRwYXJhbXNbJ2Vjb21tX29yZGVyY2FuY2VsbGVkJ10pKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdlY29tbV9vcmRlcmRlbGV0ZWQnLHRyaW0oJHBhcmFtc1snZWNvbW1fb3JkZXJkZWxldGVkJ10pKTsKfQokdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsICdhdXRoJywgJycsICdhZG1pbl9zZXR0aW5ncycpOw==]]></data>
	</file>
	<file>
	  <filename>/action.ajax.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qKiBAdmFyICAkcGFyYW1zIGFycmF5ICovDQokb3V0ID0gWw0KICAnbXNnJyAgICAgPT4gJ29rJywNCiAgJ2Vycm9yJyAgID0+IDAsDQogICdjb250ZW50JyA9PiAnJywNCiAgJ3R5cGUnID0+ICd0eHQnLA0KICAncGFyYW1zJyAgPT4gJHBhcmFtcw0KXTsNCg0KJHBhcmFtcyA9IFxNQU1TXHV0aWxzOjpwcm1zX3RvX3BhcmFtcygkcGFyYW1zLCBUUlVFKTsNCg0KaWYoICFkZWZpbmVkKCdDTVNfVkVSU0lPTicpICkNCnsNCiAgaGVhZGVyKCdIVFRQLzEuMSA0MDMgRm9yYmlkZGVuIScpOw0KICBoZWFkZXIoJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD1VVEYtOCcpOw0KICAkb3V0Wydtc2cnXSA9ICdGb3JiaWRkZW4nOw0KICAkb3V0WydlcnJvciddID0gODAwODU7DQogIGRpZSgganNvbl9lbmNvZGUoJG91dCkgKTsNCn0NCg0KaWYoIGlzc2V0KCRwYXJhbXNbJ2ZuYyddKSApDQp7DQogICRmbmMgPSB0cmltKCRwYXJhbXNbJ2ZuYyddKTsNCiAgJHBybXMgPSBbXTsNCiAgDQogIGlmKCBpc3NldCgkcGFyYW1zWydwYXJhbXMnXSkgKQ0KICB7DQogICAgaWYoIGlzX2FycmF5KCRwYXJhbXNbJ3BhcmFtcyddKSApDQogICAgew0KICAgICAgJHBybXMgPSAkcGFyYW1zWydwYXJhbXMnXTsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgICRwcm1zID0gZXhwbG9kZSgnLCcsICRwYXJhbXNbJ3BhcmFtcyddKTsNCiAgICB9DQogIH0NCiAgDQogIGFycmF5X3Vuc2hpZnQoJHBybXMsICR0aGlzLT5HZXROYW1lKCkpOw0KICANCiAgaWYoIGNtc21zKCktPmlzX2Zyb250ZW5kX3JlcXVlc3QoKSApDQogIHsNCiAgICAjIGZyb250ZW5kIGFwaQ0KICAgICRjYWxsYWJsZSA9ICdcXE1BTVNcXGFqYXhfaGFuZGxlcjo6ZmVfJyAuICRmbmM7DQogIH0NCiAgZWxzZQ0KICB7DQogICAgIyBiYWNrZW5kIGFwaQ0KICAgICRjYWxsYWJsZSA9ICdcXE1BTVNcXGFqYXhfaGFuZGxlcjo6YmVfJyAuICRmbmM7DQogIH0NCiAgDQogIGlmKCFpc19jYWxsYWJsZSgkY2FsbGFibGUsIEZBTFNFLCAkY2FsbGFibGVfbmFtZSkpDQogIHsNCiAgICBoZWFkZXIoJ0hUVFAvMS4xIDUwMCBSZXF1ZXN0IGZ1bmN0aW9uIGVycm9yIScpOw0KICAgIGhlYWRlcignQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PVVURi04Jyk7DQogICAgJG91dFsnbXNnJ10gICA9ICRmbmMgLiAnIG5vdCB2YWxpZCBhcGkgY2FsbCEnOw0KICAgICRvdXRbJ2Vycm9yJ10gPSA4MDA4NTsNCiAgICBkaWUoanNvbl9lbmNvZGUoJG91dCkpOw0KICB9DQogIA0KICB0cnkNCiAgew0KICAgICRvdXRbJ2NvbnRlbnQnXSA9IEBjYWxsX3VzZXJfZnVuY19hcnJheSgkY2FsbGFibGUsICRwcm1zKTsNCiAgfQ0KICBjYXRjaChcQXJndW1lbnRDb3VudEVycm9yICRlKQ0KICB7DQogICAgJG91dFsnZXJyb3InXSAgID0gJGUtPmdldENvZGUoKTsNCiAgICAkb3V0Wydtc2cnXSAgICAgPSAkZS0+Z2V0TWVzc2FnZSgpOw0KICAgICRvdXRbJ2NvbnRlbnQnXSA9ICdPb3BzISc7DQogIH0NCiAgY2F0Y2goXEV4Y2VwdGlvbiAkZSkNCiAgew0KICAgICRvdXRbJ2Vycm9yJ10gICA9ICRlLT5nZXRDb2RlKCk7DQogICAgJG91dFsnbXNnJ10gICAgID0gJGUtPmdldE1lc3NhZ2UoKTsNCiAgICAkb3V0Wydjb250ZW50J10gPSAnT29wcyEnOw0KICB9DQogIA0KICBoZWFkZXIoJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD1VVEYtOCcpOw0KICBkaWUoanNvbl9lbmNvZGUoJG91dCkpOw0KfQ0KDQpoZWFkZXIoJ0hUVFAvMS4xIDUwMCBSZXF1ZXN0IGZ1bmN0aW9uIGVycm9yIScpOw0KaGVhZGVyKCdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9VVRGLTgnKTsNCiRvdXRbJ21zZyddICAgPSAnd3Jvbmcgc2V0IG9mIHBhcmFtcyc7DQokb3V0WydlcnJvciddID0gODAwODU7DQoNCmRpZShqc29uX2VuY29kZSgkb3V0KSk7DQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.changesettings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KCiRfU0VTU0lPTlsnbWFtcyddWydlcnJvcmlkJ10gPSAwOwokY2FuX2NoYW5nZXBhc3N3ZCA9IFRSVUU7CiRjb25zdW1lciAgICAgICAgID0gbWFtc191dGlsczo6Z2V0X2F1dGhfY29uc3VtZXIoKTsKJGNhbl9jaGFuZ2VwYXNzd2QgPSAkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KG1hbXNfYXV0aF9jb25zdW1lcjo6Q0FQQUJJTElUWV9DSEFOR0VQQVNTV0QpOwoKJHVpZCA9ICR0aGlzLT5Mb2dnZWRJbklkKCk7CgppZigkdWlkIDwgMSkKewogICRfU0VTU0lPTlsnbWFtc2NzJ11bJ2Vycm9yaWQnXSA9IDE7CiAgJF9TRVNTSU9OWydtYW1zY3MnXVsnZXJyb3InXSA9ICdub3RfbG9nZ2VkX2luX29yX25vbmV4aXN0ZW50JzsKICAkX1NFU1NJT05bJ21hbXNjcyddWydlcnJvcl9tZXNzYWdlJ10gPSAnWW91IGFyZSBub3QgbG9nZ2VkIGluLic7CiAgcmV0dXJuOwp9CgokcmVzdWx0ID0gJHRoaXMtPkdldFVzZXJJbmZvKCR1aWQpOwoKaWYoISRyZXN1bHRbMF0pCnsKICAvLyB1c2VyIGlzbid0IGxvZ2dlZCBpbgogICRfU0VTU0lPTlsnbWFtc2NzJ11bJ2Vycm9yaWQnXSA9IDI7CiAgJF9TRVNTSU9OWydtYW1zY3MnXVsnZXJyb3InXSA9ICdub3RfbG9nZ2VkX2luX29yX2FjY291bnRfZXhwaXJlZCc7CiAgJF9TRVNTSU9OWydtYW1zY3MnXVsnZXJyb3JfbWVzc2FnZSddID0gJ1lvdSBhcmUgbm90IGxvZ2dlZCBpbi4nOwogICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHJlc3VsdFsxXSk7CiAgCiAgcmV0dXJuOwp9CgppZigkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KG1hbXNfYXV0aF9jb25zdW1lcjo6Q0FQQUJJTElUWV9DSEFOR0VTRVRUSU5HUykpCnsKICAvLyB0aGUgY29uc3VtZXIgcHJvdmlkZXMgdGhlIGxvZ2luIGNhcGFiaWxpdGllcwogIGVjaG8gJGNvbnN1bWVyLT5nZXRfY2hhbmdlc2V0dGluZ3NfZGlzcGxheSgkaWQsICRyZXR1cm5pZCwgJHBhcmFtcyk7CiAgCiAgcmV0dXJuOwp9CgppZighJGNvbnN1bWVyLT5oYXNfY2FwYWJpbGl0eShtYW1zX2F1dGhfY29uc3VtZXI6OkNBUEFCSUxJVFlfVVNFU1REQ0hBTkdFU0VUVElOR1MpKSB7IHJldHVybjsgfQoKJHVpbmZvID0gJHJlc3VsdFsxXTsKCi8vIGdldCB0aGUgdXNlcnMgbWVtYmVyIGdyb3VwcwokZ3JvdXBzID0gJHRoaXMtPkdldE1lbWJlckdyb3Vwc0FycmF5KCR1aWQpOwoKLy9pZighJGdyb3VwcykKLy97Ci8vICAvLyB0aGlzIHVzZXIgaXMgbm90IGEgbWVtYmVyIG9mIGFueSBncnVvcHMuLi4KLy8gIC8vIGhhbmRsZSB0aGlzIGxhdGVyIHRvZG8KLy8gICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2Vycm9yX25vZ3JvdXBzJykpOwovLwovLyAgcmV0dXJuOwovL30KCi8vIG5vdyB3ZSBoYXZlIHRoZSBncm91cHMsIHdlIGJ1aWxkIGEgdW5pb24gb2YgYWxsIG9mIHRoZSBncm91cHMgcHJvcGVydGllcwokcHJvcGVydGllcyA9IFtdOwoKZm9yZWFjaCgkZ3JvdXBzIGFzICRncnByZWNvcmQpCnsKICAkZ2lkICAgICAgICAgICA9ICRncnByZWNvcmRbJ2dyb3VwaWQnXTsKICAkcHJvcHJlbGF0aW9ucyA9ICR0aGlzLT5HZXRHcm91cFByb3BlcnR5UmVsYXRpb25zKCRnaWQpOwogIAogIGlmKGlzX2FycmF5KCRwcm9wcmVsYXRpb25zKSAmJiBjb3VudCgkcHJvcHJlbGF0aW9ucykgPT0gMiAmJiAkcHJvcHJlbGF0aW9uc1swXSA9PT0gRkFMU0UpIHsgY29udGludWU7IH0KICAKICBpZihjb3VudCgkcHJvcGVydGllcykpCiAgewogICAgJHByb3BlcnRpZXMgPSBcTUFNU1xSUlV0aWxzOjphcnJheV9tZXJnZV9ieV9uYW1lX3JlcXVpcmVkKCRwcm9wZXJ0aWVzLCAkcHJvcHJlbGF0aW9ucyk7CiAgfQogIGVsc2UKICB7CiAgICAkcHJvcGVydGllcyA9ICRwcm9wcmVsYXRpb25zOwogIH0KfQoKdWFzb3J0KCRwcm9wZXJ0aWVzLCBhcnJheSgneHRfYXJyYXknLCAnY29tcGFyZV9lbGVtZW50c19ieV9zb3J0b3JkZXJfa2V5JykpOwoKaWYoY291bnQoJHByb3BlcnRpZXMpID09IDAgJiYgMCkgIyBtYW5kYXRvcnkgcHJvcGVydGllcyBwZXIgZ3JvdXAgd2lsbCBiZSBhIHByZWZlcmVuY2UgKEpNKQp7CiAgaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3JlcXVpcmVfb25lZ3JvdXAnKSA9PSAxKQogIHsKICAgIC8vIHRoaXMgdXNlciBpcyBub3QgYSBtZW1iZXIgb2YgYW55IGdyb3Vwcy4uLgogICAgLy8gaGFuZGxlIHRoaXMgbGF0ZXIgdG9kbwogICAgCiAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCdlcnJvcl9vbmVncm91cHJlcXVpcmVkJykpOwogICAgCiAgICByZXR1cm47CiAgfQp9CgovLyBub3cgd2UncmUgcmVhZHkgdG8gcG9wdWxhdGUgdGhlIHRlbXBsYXRlCi8vIGZpcnN0IHdlIHB1dCBpbiBzdHVmZiB0aGF0IGlzIHJlcXVpcmVkICh1c2VybmFtZSwgcGFzc3dvcmQsIGV0YywgZXRjKQokcm93YXJyYXkgPSBbXTsKCi8vIG1ha2Ugc3VyZSB1c2VybmFtZSBpcyBpbiB0aGVyZQovLyB3ZSBjYW4gaGlkZSBpdCBpbiB0aGUgdGVtcGxhdGUuCiR2YWwgICAgICAgICAgICAgICAgPSAkdWluZm9bJ3VzZXJuYW1lJ107CiRvbmVyb3cgICAgICAgICAgICAgPSBuZXcgU3RkQ2xhc3MoKTsKJG9uZXJvdy0+bmFtZSAgICAgICA9ICd1c2VybmFtZSc7CiRvbmVyb3ctPnR5cGUgICAgICAgPSAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZXJuYW1lX2lzX2VtYWlsJykpID8gMiA6IDA7CiRvbmVyb3ctPmNvbG9yICAgICAgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncmVxdWlyZWRfZmllbGRfY29sb3InLCAnYmx1ZScpOwokb25lcm93LT5tYXJrZXIgICAgID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3JlcXVpcmVkX2ZpZWxkX21hcmtlcicsICcqJyk7CiRvbmVyb3ctPnJlcXVpcmVkICAgPSAxOwokb25lcm93LT5wcm9tcHQgICAgID0gJGNvbnN1bWVyLT5nZXRfdXNlcm5hbWVfcHJvbXB0KCk7CiRvbmVyb3ctPnZhbHVlICAgICAgPSAkdmFsOwokb25lcm93LT5pbnB1dF9pZCAgID0gJ21hbXNfaW5wdXRfdXNlcm5hbWUnOwokb25lcm93LT5pbnB1dF9uYW1lID0gJGlkIC4gJG9uZXJvdy0+aW5wdXRfaWQ7CiRvbmVyb3ctPmxlbmd0aCAgICAgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlcm5hbWVmbGRsZW5ndGgnLCA0MCk7CiRvbmVyb3ctPm1heGxlbmd0aCAgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWF4X3VzZXJuYW1lbGVuZ3RoJywgODApOwokb25lcm93LT5yZWFkb25seSAgID0gKCEkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KG1hbXNfYXV0aF9jb25zdW1lcjo6Q0FQQUJJTElUWV9DSEFOR0VVU0VSTkFNRSkpOwoKJHRtcCA9ICdkaXNhYmxlZD0iZGlzYWJsZWQiJzsKCmlmKCRjb25zdW1lci0+aGFzX2NhcGFiaWxpdHkobWFtc19hdXRoX2NvbnN1bWVyOjpDQVBBQklMSVRZX0NIQU5HRVVTRVJOQU1FKSkgeyAkdG1wID0gJyc7IH0KCiRvbmVyb3ctPmNvbnRyb2wgICAgICAgICA9ICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoCiAgJGlkLCAnbWFtc19pbnB1dF91c2VybmFtZScsICR2YWwsICRvbmVyb3ctPmxlbmd0aCwgJG9uZXJvdy0+bWF4bGVuZ3RoLCAkdG1wCik7Cgokcm93YXJyYXlbJG9uZXJvdy0+bmFtZV0gPSAkb25lcm93OwoKaWYoJGNhbl9jaGFuZ2VwYXNzd2QpCnsKICAvLyBhbmQgcGFzc3dvcmQKICAkdmFsID0gJyc7CiAgaWYoaXNzZXQoJHBhcmFtc1snbWFtc19pbnB1dF9wYXNzd29yZCddKSkKICB7CiAgICAkdmFsID0gJHBhcmFtc1snbWFtc19pbnB1dF9wYXNzd29yZCddOwogIH0KICAKICAkb25lcm93ICAgICAgICAgICA9IG5ldyBTdGRDbGFzcygpOwogICRvbmVyb3ctPm5hbWUgICAgID0gJ3Bhc3N3b3JkJzsKICAkb25lcm93LT50eXBlICAgICA9ICdwYXNzd29yZCc7CiAgJG9uZXJvdy0+Y29sb3IgICAgPSBOVUxMOwogICRvbmVyb3ctPnJlcXVpcmVkID0gKCR1aW5mb1snZm9yY2VfbmV3cHcnXSkgPyAxIDogMDsKICAkb25lcm93LT5tYXJrZXIgICA9IE5VTEw7CiAgCiAgaWYoJG9uZXJvdy0+cmVxdWlyZWQpCiAgewogICAgJG9uZXJvdy0+Y29sb3IgID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3JlcXVpcmVkX2ZpZWxkX2NvbG9yJywgJ2JsdWUnKTsKICAgICRvbmVyb3ctPm1hcmtlciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdyZXF1aXJlZF9maWVsZF9tYXJrZXInLCAnKicpOwogIH0KICAKICAkb25lcm93LT5wcm9tcHQgICAgICAgICAgPSAkdGhpcy0+TGFuZygncGFzc3dvcmQnKTsKICAkb25lcm93LT5jb250cm9sICAgICAgICAgPSAkdGhpcy0+Q3JlYXRlSW5wdXRQYXNzd29yZCgKICAgICRpZCwgJ21hbXNfaW5wdXRfcGFzc3dvcmQnLCAkdmFsLAogICAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Bhc3N3b3JkZmxkbGVuZ3RoJyksCiAgICAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWF4X3Bhc3N3b3JkbGVuZ3RoJykKICApOwogIAogICRvbmVyb3ctPmFkZHRleHQgICAgICAgICA9ICR0aGlzLT5MYW5nKCdpbmZvX2VtcHR5cGFzc3dvcmRmaWVsZCcpOwogICRvbmVyb3ctPnZhbHVlICAgICAgICAgICA9IE5VTEw7CiAgJG9uZXJvdy0+aW5wdXRfaWQgICAgICAgID0gJ21hbXNfaW5wdXRfcGFzc3dvcmQnOwogICRvbmVyb3ctPmlucHV0X25hbWUgICAgICA9ICRpZCAuICRvbmVyb3ctPmlucHV0X2lkOwogICRvbmVyb3ctPmxlbmd0aCAgICAgICAgICA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwYXNzd29yZGZsZGxlbmd0aCcpOwogICRvbmVyb3ctPm1heGxlbmd0aCAgICAgICA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXhfcGFzc3dvcmRsZW5ndGgnKTsKICAkb25lcm93LT5yZWFkb25seSAgICAgICAgPSBGQUxTRTsKICAkcm93YXJyYXlbJG9uZXJvdy0+bmFtZV0gPSAkb25lcm93OwogIAogIC8vIGFuZCBtYWtlIGhpbSByZXBlYXQgdGhlIHBhc3N3b3JkCiAgJHZhbCA9ICcnOwogIAogIGlmKGlzc2V0KCRwYXJhbXNbJ21hbXNfaW5wdXRfcmVwZWF0cGFzc3dvcmQnXSkpCiAgewogICAgJHZhbCA9ICRwYXJhbXNbJ21hbXNfaW5wdXRfcmVwZWF0cGFzc3dvcmQnXTsKICB9CiAgCiAgJG9uZXJvdyAgICAgICAgICAgPSBuZXcgU3RkQ2xhc3MoKTsKICAkb25lcm93LT5uYW1lICAgICA9ICdyZXBlYXRfcGFzc3dvcmQnOwogICRvbmVyb3ctPnR5cGUgICAgID0gJ3Bhc3N3b3JkJzsKICAkb25lcm93LT5jb2xvciAgICA9IE5VTEw7CiAgJG9uZXJvdy0+bWFya2VyICAgPSBOVUxMOwogICRvbmVyb3ctPnJlcXVpcmVkID0gKCR1aW5mb1snZm9yY2VfbmV3cHcnXSkgPyAxIDogMDsKICAKICBpZigkb25lcm93LT5yZXF1aXJlZCkKICB7CiAgICAkb25lcm93LT5tYXJrZXIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncmVxdWlyZWRfZmllbGRfbWFya2VyJywgJyonKTsKICAgICRvbmVyb3ctPmNvbG9yICA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdyZXF1aXJlZF9maWVsZF9jb2xvcicsICdibHVlJyk7CiAgfQogIAogICRvbmVyb3ctPnByb21wdCAgICAgICAgICA9ICR0aGlzLT5MYW5nKCdyZXBlYXRwYXNzd29yZCcpOwogICRvbmVyb3ctPmNvbnRyb2wgICAgICAgICA9ICR0aGlzLT5DcmVhdGVJbnB1dFBhc3N3b3JkKAogICAgJGlkLCAnbWFtc19pbnB1dF9yZXBlYXRwYXNzd29yZCcsICR2YWwsCiAgICAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFzc3dvcmRmbGRsZW5ndGgnKSwKICAgICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXhfcGFzc3dvcmRsZW5ndGgnKQogICk7CiAgCiAgJG9uZXJvdy0+YWRkdGV4dCAgICAgICAgID0gJHRoaXMtPkxhbmcoJ2luZm9fZW1wdHlwYXNzd29yZGZpZWxkJyk7CiAgJG9uZXJvdy0+dmFsdWUgICAgICAgICAgID0gTlVMTDsKICAkb25lcm93LT5pbnB1dF9pZCAgICAgICAgPSAnbWFtc19pbnB1dF9yZXBlYXRwYXNzd29yZCc7CiAgJG9uZXJvdy0+aW5wdXRfbmFtZSAgICAgID0gJGlkIC4gJG9uZXJvdy0+aW5wdXRfaWQ7CiAgJG9uZXJvdy0+bGVuZ3RoICAgICAgICAgID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Bhc3N3b3JkZmxkbGVuZ3RoJyk7CiAgJG9uZXJvdy0+bWF4bGVuZ3RoICAgICAgID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ21heF9wYXNzd29yZGxlbmd0aCcpOwogICRvbmVyb3ctPnJlYWRvbmx5ICAgICAgICA9IEZBTFNFOwogICRyb3dhcnJheVskb25lcm93LT5uYW1lXSA9ICRvbmVyb3c7Cn0KCiRlbmNyeXB0X2NvbG9yICA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzZWN1cmVfZmllbGRfY29sb3InLCAneWVsbG93Jyk7CiRlbmNyeXB0X21hcmtlciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzZWN1cmVfZmllbGRfbWFya2VyJywgJ15eJyk7CgoKLy8gbm93IGZvciB0aGUgcHJvcGVydGllcwpmb3JlYWNoKCRwcm9wZXJ0aWVzIGFzICRwcm9wKQp7CiAgLy8gZ2V0IHRoZSBwcm9wZXJ0eSBkZWZpbml0aW9uCiAgJGRlZm4gPSAkdGhpcy0+R2V0UHJvcGVydHlEZWZuKCRwcm9wWyduYW1lJ10pOwogIAogIGlmKCRwcm9wWydyZXF1aXJlZCddID09IDMpe2NvbnRpbnVlO30gLy8gaGlkZGVuLgogIAogICRvbmVyb3cgICAgICAgICAgICAgPSBuZXcgU3RkQ2xhc3MoKTsKICAkb25lcm93LT5uYW1lICAgICAgID0gJHByb3BbJ25hbWUnXTsKICAkb25lcm93LT5wcm9wbmFtZSAgID0gJHByb3BbJ25hbWUnXTsKICAkb25lcm93LT5pbnB1dF9pZCAgID0gJ21hbXNfaW5wdXRfJyAuICRvbmVyb3ctPnByb3BuYW1lOwogICRvbmVyb3ctPmlucHV0X25hbWUgPSAkaWQgLiAkb25lcm93LT5pbnB1dF9pZDsKICAkdmFsICAgICAgICAgICAgICAgID0gJHRoaXMtPkdldFVzZXJQcm9wZXJ0eUZ1bGwoJHByb3BbJ25hbWUnXSwgJHVpZCk7CiAgCiAgaWYoaXNzZXQoJHBhcmFtc1skb25lcm93LT5pbnB1dF9pZF0pKQogIHsKICAgICR2YWwgPSAkcGFyYW1zWyRvbmVyb3ctPmlucHV0X2lkXTsKICB9CiAgCiAgLy8gYmVnaW4gYnVpbGRpbmcgdGhlIG9iamVjdCB0aGF0IGNvbnRhaW5zIGRhdGEgZm9yIGJ1aWxkaW5nIHRoZSBmaWVsZHMuCiAgJG9uZXJvdy0+dHlwZSAgICAgID0gJGRlZm5bJ3R5cGUnXTsKICAkb25lcm93LT5lbmNyeXB0ZWQgPSAkZGVmblsnZW5jcnlwdCddOwogICRvbmVyb3ctPnJlcXVpcmVkICA9ICgkcHJvcFsncmVxdWlyZWQnXSA9PSAyKTsKICAkb25lcm93LT5yZWFkb25seSAgPSAoJHByb3BbJ3JlcXVpcmVkJ10gPT0gNCk7CiAgJG9uZXJvdy0+c3RhdHVzICAgID0gJHByb3BbJ3JlcXVpcmVkJ107CiAgJG9uZXJvdy0+Y29sb3IgICAgID0gTlVMTDsKICAkb25lcm93LT5tYXJrZXIgICAgPSBOVUxMOzsKICAkb25lcm93LT52YWx1ZSAgICAgPSAkdmFsOwogICRvbmVyb3ctPmxlbmd0aCAgICA9ICRkZWZuWydsZW5ndGgnXTsKICAkb25lcm93LT5tYXhsZW5ndGggPSAkZGVmblsnbWF4bGVuZ3RoJ107CiAgJG9uZXJvdy0+cHJvbXB0ICAgID0gJGRlZm5bJ3Byb21wdCddOwogIAogIGlmKCRkZWZuWydlbmNyeXB0J10pCiAgewogICAgJG9uZXJvdy0+Y29sb3IgID0gJGVuY3J5cHRfY29sb3I7CiAgICAkb25lcm93LT5tYXJrZXIgPSAkZW5jcnlwdF9tYXJrZXI7CiAgfQogIGVsc2UgaWYoJG9uZXJvdy0+cmVxdWlyZWQpCiAgewogICAgJG9uZXJvdy0+Y29sb3IgID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3JlcXVpcmVkX2ZpZWxkX2NvbG9yJywgJ2JsdWUnKTsKICAgICRvbmVyb3ctPm1hcmtlciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdyZXF1aXJlZF9maWVsZF9tYXJrZXInLCAnKicpOwogIH0KICAKICBzd2l0Y2goJGRlZm5bJ3R5cGUnXSkKICB7CiAgICBjYXNlIDA6IC8vIHRleHQKICAgICAgJG9uZXJvdy0+Y29udHJvbCA9ICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAkb25lcm93LT5pbnB1dF9uYW1lLCAkdmFsLCAkZGVmblsnbGVuZ3RoJ10sICRkZWZuWydtYXhsZW5ndGgnXSk7CiAgICBicmVhazsKICAgIAogICAgY2FzZSAxOiAvLyBjaGVja2JveAogICAgICAkb25lcm93LT5jb250cm9sID0gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJG9uZXJvdy0+aW5wdXRfbmFtZSwgMCk7CiAgICAgICRvbmVyb3ctPmNvbnRyb2wgLj0gXE1BTVNcUlJVdGlsczo6bXlDcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJG9uZXJvdy0+aW5wdXRfbmFtZSwgMSwgJHZhbCk7CiAgICBicmVhazsKICAgIAogICAgY2FzZSAyOiAvLyBlbWFpbAogICAgICAkb25lcm93LT5jb250cm9sID0gJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICRvbmVyb3ctPmlucHV0X25hbWUsICR2YWwsICRkZWZuWydsZW5ndGgnXSwgJGRlZm5bJ21heGxlbmd0aCddKTsKICAgIGJyZWFrOwogICAgCiAgICBjYXNlIDM6IC8vIHRleHRhcmVhCiAgICAgICRmbGFnID0gRkFMU0U7CiAgICAgIGlmKGlzc2V0KCRkZWZuWydhdHRyaWJzJ10pICYmICFlbXB0eSgkZGVmblsnYXR0cmlicyddKSkKICAgICAgewogICAgICAgICRhdHRyaWJzID0gdW5zZXJpYWxpemUoJGRlZm5bJ2F0dHJpYnMnXSk7CiAgICAgICAgaWYoaXNfYXJyYXkoJGF0dHJpYnMpICYmIGlzc2V0KCRhdHRyaWJzWyd3eXNpd3lnJ10pKQogICAgICAgIHsKICAgICAgICAgICRmbGFnID0gJGF0dHJpYnNbJ3d5c2l3eWcnXTsKICAgICAgICB9CiAgICAgIH0KICAgICAgJG9uZXJvdy0+d3lzaXd5ZyA9ICRmbGFnOwogICAgICAkb25lcm93LT5jb250cm9sID0gJHRoaXMtPkNyZWF0ZVRleHRBcmVhKCRmbGFnLCAkaWQsICR2YWwsICRvbmVyb3ctPmlucHV0X25hbWUpOwogICAgYnJlYWs7CiAgICAKICAgIGNhc2UgNDogLy8gZHJvcGRvd24KICAgICAgJG9wdHMgICAgICAgICAgICA9ICR0aGlzLT5HZXRTZWxlY3RPcHRpb25zKCRkZWZuWyduYW1lJ10pOwogICAgICAkb25lcm93LT5vcHRpb25zID0gYXJyYXlfZmxpcCgkb3B0cyk7CiAgICAgICRvbmVyb3ctPmNvbnRyb2wgPSAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICRvbmVyb3ctPmlucHV0X25hbWUsICRvcHRzLCAtMSwgJHZhbCk7CiAgICBicmVhazsKICAgIAogICAgY2FzZSA1OiAvLyBtdWx0aXNlbGVjdAogICAgICAkb3B0cyAgICAgICAgICAgICA9ICR0aGlzLT5HZXRTZWxlY3RPcHRpb25zKCRkZWZuWyduYW1lJ10pOwogICAgICAkb25lcm93LT5vcHRpb25zICA9IGFycmF5X2ZsaXAoJG9wdHMpOwogICAgICAKICAgICAgIyBqdXN0IGluIGNhc2UsIG1ha2Ugc3VyZSB3ZSBoYXZlIGEgY29tbWEgc2VwYXJhdGVkIGxpc3QKICAgICAgaWYoaXNfYXJyYXkoJHZhbCkpIHsgJHZhbCA9IGltcGxvZGUoJywnLCAkdmFsKTsgfQogICAgICAKICAgICAgJG9uZXJvdy0+c2VsZWN0ZWQgPSBleHBsb2RlKCcsJywgJHZhbCk7CiAgICAgICRvbmVyb3ctPmNvbnRyb2wgID0gJHRoaXMtPkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgKICAgICAgICAkaWQsICRvbmVyb3ctPmlucHV0X25hbWUgLiAnW10nLCAkb3B0cywgJG9uZXJvdy0+c2VsZWN0ZWQsICRkZWZuWydsZW5ndGgnXQogICAgICApOwogICAgYnJlYWs7CiAgICAKICAgIGNhc2UgNjogLy8gaW1hZ2UKICAgICAgJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOwogICAgICAkZGVzdERpcjEgPSAkY29uZmlnWyd1cGxvYWRzX3BhdGgnXSAuIERJUkVDVE9SWV9TRVBBUkFUT1I7CiAgICAgICRkZXN0RGlyMSAuPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaW1hZ2VfZGVzdGluYXRpb25fcGF0aCcsICdtYW1zJykgLiBESVJFQ1RPUllfU0VQQVJBVE9SOwogICAgICAkZGVzdERpcjIgPSAkY29uZmlnWyd1cGxvYWRzX3VybCddIC4gJy8nOwogICAgICAkZGVzdERpcjIgLj0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ltYWdlX2Rlc3RpbmF0aW9uX3BhdGgnLCAnbWFtcycpIC4gJy8nOwogICAgICAkZmlsZTEgICAgPSAkZGVzdERpcjEgLiAkdmFsOwogICAgICAkZmlsZTIgICAgPSAkZGVzdERpcjIgLiAkdmFsOwogICAgICAKICAgICAgaWYoaXNfcmVhZGFibGUoJGZpbGUxKSAmJiBpc19maWxlKCRmaWxlMSkpCiAgICAgIHsKICAgICAgICAkb25lcm93LT5pbWFnZV91cmwgPSAkZmlsZTI7CiAgICAgICAgJG9uZXJvdy0+aW1hZ2UgICAgID0gJzxpbWcgc3JjPSInIC4gJGZpbGUyIC4gJyIgYWx0PSInIC4gJHZhbCAuICciLz4nOwogICAgICAgIGlmKCEkb25lcm93LT5yZXF1aXJlZCkKICAgICAgICB7CiAgICAgICAgICAkb25lcm93LT5wcm9tcHQyICAgICA9ICR0aGlzLT5MYW5nKCdwcm9tcHRfY2xlYXInKTsKICAgICAgICAgICRvbmVyb3ctPmlucHV0X25hbWUyID0gJG9uZXJvdy0+aW5wdXRfbmFtZSAuICdfY2xlYXInOwogICAgICAgICAgJG9uZXJvdy0+Y29udHJvbDIgICAgPSAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICRvbmVyb3ctPmlucHV0X25hbWUgLiAnX2NsZWFyJywgJ2NsZWFyJywgJycpOwogICAgICAgIH0KICAgICAgfQogICAgICAkb25lcm93LT5jb250cm9sID0gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJG9uZXJvdy0+aW5wdXRfbmFtZSwgJHZhbCkgLgogICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkNyZWF0ZUZpbGVVcGxvYWRJbnB1dCgkaWQsICdtYW1zXycgLiAkb25lcm93LT5pbnB1dF9uYW1lLCAnJywgJGRlZm5bJ2xlbmd0aCddKTsKICAgIGJyZWFrOwogICAgCiAgICBjYXNlICc3JzogLy8gcmFkaW8gZ3JvdXAKICAgICAgJG9wdHMgICAgICAgICAgICA9ICR0aGlzLT5HZXRTZWxlY3RPcHRpb25zKCRkZWZuWyduYW1lJ10pOwogICAgICAkb25lcm93LT5vcHRpb25zID0gYXJyYXlfZmxpcCgkb3B0cyk7CiAgICAgICRvbmVyb3ctPmNvbnRyb2wgPSAkdGhpcy0+Q3JlYXRlSW5wdXRSYWRpb0dyb3VwKCRpZCwgJG9uZXJvdy0+aW5wdXRfbmFtZSwgJG9wdHMsICR2YWwsICcnLCAnPGJyLz4nKTsKICAgIGJyZWFrOwogICAgCiAgICBjYXNlICc4JzogLy8gZGF0ZQogICAgICAkcGFybXMgICAgICAgICAgID0gYXJyYXkoKTsKICAgICAgJHBhcm1zWydwcmVmaXgnXSA9ICRvbmVyb3ctPmlucHV0X2lkOwogICAgICBpZigkdmFsKQogICAgICB7CiAgICAgICAgJHBhcm1zWyd0aW1lJ10gPSAkdmFsOwogICAgICB9CiAgICAgICRwYXJtc1snc3RhcnRfeWVhciddID0gIi01IjsKICAgICAgJHBhcm1zWydlbmRfeWVhciddICAgPSAiKzEwIjsKICAgICAgCiAgICAgIGlmKGlzc2V0KCRkZWZuWydhdHRyaWJzJ10pICYmICFlbXB0eSgkZGVmblsnYXR0cmlicyddKSkKICAgICAgewogICAgICAgICRhdHRyaWJzID0gdW5zZXJpYWxpemUoJGRlZm5bJ2F0dHJpYnMnXSk7CiAgICAgICAgaWYoaXNzZXQoJGF0dHJpYnNbJ3N0YXJ0eWVhciddKSAmJiAhZW1wdHkoJGF0dHJpYnNbJ3N0YXJ0eWVhciddKSkKICAgICAgICB7CiAgICAgICAgICAkcGFybXNbJ3N0YXJ0X3llYXInXSA9ICRhdHRyaWJzWydzdGFydHllYXInXTsKICAgICAgICB9CiAgICAgICAgaWYoaXNzZXQoJGF0dHJpYnNbJ2VuZHllYXInXSkgJiYgIWVtcHR5KCRhdHRyaWJzWydlbmR5ZWFyJ10pKQogICAgICAgIHsKICAgICAgICAgICRwYXJtc1snZW5kX3llYXInXSA9ICRhdHRyaWJzWydlbmR5ZWFyJ107CiAgICAgICAgfQogICAgICB9CiAgICAgIAogICAgICAkcmVsX3RvX2Fic195ZWFyID0gZnVuY3Rpb24oJHN0cil7CiAgICAgICAgaWYoc3RhcnRzd2l0aCgkc3RyLCAnLScpKQogICAgICAgIHsKICAgICAgICAgICR2ICAgID0gKGludClzdWJzdHIoJHN0ciwgMSk7CiAgICAgICAgICAkeWVhciA9IGRhdGUoJ1knKSAtICR2OwogICAgICAgICAgCiAgICAgICAgICByZXR1cm4gJHllYXI7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoc3RhcnRzd2l0aCgkc3RyLCAnKycpKQogICAgICAgIHsKICAgICAgICAgICR2ICAgID0gKGludClzdWJzdHIoJHN0ciwgMSk7CiAgICAgICAgICAkeWVhciA9IGRhdGUoJ1knKSArICR2OwogICAgICAgICAgCiAgICAgICAgICByZXR1cm4gJHllYXI7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiAoaW50KSRzdHI7CiAgICAgIH07CiAgICAgIAogICAgICAkc3RyID0gJ3todG1sX3NlbGVjdF9kYXRlICc7CiAgICAgIGZvcmVhY2goJHBhcm1zIGFzICRrZXkgPT4gJHZhbHVlKQogICAgICB7CiAgICAgICAgJHN0ciAuPSAka2V5IC4gJz0iJyAuICR2YWx1ZSAuICciICc7CiAgICAgIH0KICAgICAgJHN0ciAgICAgICAgICAgICAgICAuPSAnfSc7CiAgICAgICRvbmVyb3ctPmNvbnRyb2wgICAgPSAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJHN0cik7CiAgICAgICRvbmVyb3ctPnN0YXJ0X3llYXIgPSAkcmVsX3RvX2Fic195ZWFyKCRwYXJtc1snc3RhcnRfeWVhciddKTsKICAgICAgJG9uZXJvdy0+ZW5kX3llYXIgICA9ICRyZWxfdG9fYWJzX3llYXIoJHBhcm1zWydlbmRfeWVhciddKTsKICAgIAogICAgYnJlYWs7CiAgfQogICRyb3dhcnJheVskcHJvcFsnbmFtZSddXSA9ICRvbmVyb3c7Cn0KCi8vIGZpbGwgaW4gdGhlIHZhcmlhYmxlcyBmb3IgdGhlIHRlbXBsYXRlCiR0aGV0ZW1wbGF0ZSA9IFxtYW1zX3V0aWxzOjpnZXRfdGVtcGxhdGUoJHBhcmFtcywgJ2NoYW5nZXNldHRpbmdzdGVtcGxhdGUnLCAnTUFNUzo6Y2hzZXR0aW5ncyBmb3JtJyk7CiR0cGwgICAgICAgICA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgkdGhldGVtcGxhdGUpOwoKaWYoaXNzZXQoJHBhcmFtc1snZXJyb3InXSkpCnsKICAkdHBsLT5hc3NpZ24oJ2Vycm9yJywgJHBhcmFtc1snZXJyb3InXSk7Cn0KCmlmKGlzc2V0KCRwYXJhbXNbJ21lc3NhZ2UnXSkpCnsKICAkdHBsLT5hc3NpZ24oJ21lc3NhZ2UnLCAkcGFyYW1zWydtZXNzYWdlJ10pOwp9CgokdHBsLT5hc3NpZ24oJ3RpdGxlJywgJHRoaXMtPkxhbmcoJ3VzZXJfc2V0dGluZ3MnKSk7IC8vIGRlcHJlY2F0ZWQKJHRwbC0+YXNzaWduKCdzdGFydGZvcm0nLCAkdGhpcy0+WFRDcmVhdGVGb3JtU3RhcnQoJGlkLCAnZG9fdXNlcmNoYW5nZXNldHRpbmdzJywgJHJldHVybmlkKSk7CiR0cGwtPmFzc2lnbignZW5kZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwokdHBsLT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdtYW1zX3N1Ym1pdCcsICR0aGlzLT5MYW5nKCdzdWJtaXQnKSkpOyAvLyBkZXByZWNhdGVkCgppZihpc3NldCgkcGFyYW1zWydyZXR1cm50byddKSkKewogICR0cGwtPmFzc2lnbignaGlkZGVuJywgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ21hbXNfcmV0dXJudG8nLCAkcGFyYW1zWydyZXR1cm50byddKSk7Cn0KCiR0cGwtPmFzc2lnbignZm9ybWlkJywgJGlkKTsKJHRwbC0+YXNzaWduKCdjb250cm9scycsICRyb3dhcnJheSk7CiR0cGwtPmFzc2lnbignY29udHJvbGNvdW50JywgY291bnQoJHJvd2FycmF5KSk7CiR0cGwtPmRpc3BsYXkoKTsKCi8vIEVPRgo=]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBhbGxvdyBtYW5hZ2VtZW50IG9mIGZyb250ZW5kCiMgIHVzZXJzLCBhbmQgdGhlaXIgbG9naW4gcHJvY2VzcyB3aXRoaW4gYSBDTVMgTWFkZSBTaW1wbGUgcG93ZXJlZAojICB3ZWJzaXRlLgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIEEgZm9yayBvZjoKIwojIE1vZHVsZTogRnJvbnRFbmRVc2VycyAoYykgMjAwOC0yMDE0IGJ5IFJvYmVydCBDYW1wYmVsbAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIENNU01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA2IC0gMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojIENNU01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBWaXNpdCB0aGUgQ01TTVMgSG9tZXBhZ2UgYXQ6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIHsgZXhpdDsgfQoKCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLy8gRE8gVEhFIEFDVElPTgovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCgppZighJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoKSkKewogIGVjaG8gIkJyZWFraW5nIGFuIGVudHJ5LCBhcmUgd2U/IjsKICAKICByZXR1cm47Cn0KCiRjdXJyZW50X3RhYiA9IGlzc2V0KCRwYXJhbXNbJ19fYWN0aXZldGFiJ10pID8gJHBhcmFtc1snX19hY3RpdmV0YWInXSA6ICd1c2Vycyc7CgovLyB0aGUgdGFicwplY2hvICR0aGlzLT5TdGFydFRhYkhlYWRlcnMoKTsKCmlmKCAkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygndXNlcnMnKSApCnsKICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3VzZXJzJywgJHRoaXMtPkxhbmcoJ3VzZXJzJyksICRjdXJyZW50X3RhYiA9PSAndXNlcnMnKTsKICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3VzZXJoaXN0b3J5JywgJHRoaXMtPkxhbmcoJ3VzZXJoaXN0b3J5JyksICRjdXJyZW50X3RhYiA9PSAndXNlcmhpc3RvcnknKTsKICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2FkbWluJywgJHRoaXMtPkxhbmcoJ2FkbWluJyksICRjdXJyZW50X3RhYiA9PSAnYWRtaW4nKTsKfQppZigkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygncHJvcGVydGllcycpKQp7CiAgZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdwcm9wZXJ0aWVzJywgJHRoaXMtPkxhbmcoJ3VzZXJfcHJvcGVydGllcycpLCAkY3VycmVudF90YWIgPT0gJ3Byb3BlcnRpZXMnKTsKfQppZiggJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ2dyb3VwcycpICkKewogIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignZ3JvdXBzJywgJHRoaXMtPkxhbmcoJ2dyb3VwcycpLCAkY3VycmVudF90YWIgPT0gJ2dyb3VwcycpOwp9CmVjaG8gJHRoaXMtPkVuZFRhYkhlYWRlcnMoKTsKCi8vIFRoZWNvbnRlbnQgb2YgdGhlIHRhYnMKZWNobyAkdGhpcy0+U3RhcnRUYWJDb250ZW50KCk7CgppZigkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygndXNlcnMnKSkKewogIGVjaG8gJHRoaXMtPlN0YXJ0VGFiKCd1c2VycycsICRwYXJhbXMpOwogIGluY2x1ZGUoX19ESVJfXyAuICcvZnVuY3Rpb24uYWRtaW5fdXNlcnN0YWIucGhwJyk7CiAgZWNobyAkdGhpcy0+RW5kVGFiKCk7CiAgCiAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3VzZXJoaXN0b3J5JywgJHBhcmFtcyk7CiAgaW5jbHVkZShfX0RJUl9fIC4gJy9hY3Rpb24udXNlcmhpc3RvcnkucGhwJyk7CiAgZWNobyAkdGhpcy0+RW5kVGFiKCk7CiAgCiAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ2FkbWluJywgJHBhcmFtcyk7CiAgaW5jbHVkZShfX0RJUl9fIC4gJy9mdW5jdGlvbi5hZG1pbl9hZG1pbnRhYi5waHAnKTsKICBlY2hvICR0aGlzLT5FbmRUYWIoKTsKfQoKaWYoJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ3Byb3BlcnRpZXMnKSkKewogIGVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdwcm9wZXJ0aWVzJywgJHBhcmFtcyk7CiAgaW5jbHVkZShfX0RJUl9fIC4gJy9mdW5jdGlvbi5hZG1pbl9wcm9wZXJ0aWVzdGFiLnBocCcpOwogIGVjaG8gJHRoaXMtPkVuZFRhYigpOwp9CgppZigkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnZ3JvdXBzJykpCnsKICBlY2hvICR0aGlzLT5TdGFydFRhYignZ3JvdXBzJywgJHBhcmFtcyk7CiAgaW5jbHVkZShfX0RJUl9fIC4gJy9mdW5jdGlvbi5hZG1pbl9ncm91cHN0YWIucGhwJyk7CiAgZWNobyAkdGhpcy0+RW5kVGFiKCk7Cn0KCmVjaG8gJHRoaXMtPkVuZFRhYkNvbnRlbnQoKTsK]]></data>
	</file>
	<file>
	  <filename>/action.do_addgroup.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KJGNvbnN1bWVyID0gbWFtc191dGlsczo6Z2V0X2F1dGhfY29uc3VtZXIoKTsKCiRnaWQgPSBmYWxzZTsKaWYoIGlzc2V0KCRwYXJhbXNbJ2dyb3VwX2lkJ10pICkgJGdpZCA9IChpbnQpJHBhcmFtc1snZ3JvdXBfaWQnXTsKCiRncm91cG5hbWUgPSAnJzsKJGdyb3VwZGVzYyA9ICcnOwppZiggaXNzZXQoICRwYXJhbXNbJ2lucHV0X2dyb3VwbmFtZSddICkgKSAkZ3JvdXBuYW1lID0gdHJpbSgkcGFyYW1zWydpbnB1dF9ncm91cG5hbWUnXSk7CmlmKCBpc3NldCggJHBhcmFtc1snaW5wdXRfZ3JvdXBkZXNjJ10gKSApICRncm91cGRlc2MgPSB0cmltKCRwYXJhbXNbJ2lucHV0X2dyb3VwZGVzYyddKTsKCmlmKCAkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRjb25zdW1lcjo6Q0FQQUJJTElUWV9FRElUR1JPVVBTKSApIHsKICAvLyBtYWtlIHN1cmUgdGhlIHBhcmFtZXRlcnMgYXJlIGZpbGxlZCBpbgogIGlmKCAkZ3JvdXBuYW1lID09ICcnIHx8ICRncm91cGRlc2MgPT0gJycgKSB7CiAgICB1bnNldCgkcGFyYW1zWydzdWJtaXQnXSk7CiAgICAkcGFyYW1zWydlcnJvciddID0gJzEnOwogICAgJHBhcmFtc1snbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRwYXJhbXMnKTsKICAgICR0aGlzLT5teVJlZGlyZWN0KCAkaWQsICdhZGRncm91cCcsICRyZXR1cm5pZCwgJHBhcmFtcyApOwogICAgcmV0dXJuOwogIH0KCiAgLy8gbWFrZSBzdXJlIHRoZSBncm91cCBuYW1lIGRvZXNuJ3QgYWxyZWFkeSBleGlzdAogICR0bXAgPSAkdGhpcy0+R2V0R3JvdXBJRCggJGdyb3VwbmFtZSApOwogIAogIGlmKCAkdG1wICE9ICRnaWQgJiYgJHRtcCAhPSAnLTEnICkgewogICAgdW5zZXQoJHBhcmFtc1snc3VibWl0J10pOwogICAgJHBhcmFtc1snZXJyb3InXSA9ICcxJzsKICAgICRwYXJhbXNbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9ncm91cGV4aXN0cycpOwogICAgJHRoaXMtPm15UmVkaXJlY3QoICRpZCwgJ2FkZGdyb3VwJywgJHJldHVybmlkLCAkcGFyYW1zICk7CiAgICByZXR1cm47CiAgfQp9CgovLyBtYWtlIHN1cmUgbm90IGFsbCBwcm9wZXJ0aWVzIGFyZSBvZmYuCi8vIGFuZCB0aGF0IHdlJ3JlIG5vdCBzZXR0aW5nIGEgbG9zdHVuIGZsYWcgZm9yIGEgaGlkZGVuIG9yIG9wdGlvbmFsIGZpZWxkLgppZiggJHBhcmFtc1snaW5wdXRfbmFtZSddICYmICRjb25zdW1lci0+aGFzX2NhcGFiaWxpdHkoJGNvbnN1bWVyOjpDQVBBQklMSVRZX0VESVRHUk9VUFBST1BTKSApCnsKICAgICRyZWxuYWRkZWQgPSAwOwogICAgZm9yKCRpID0gMCwgJGlNYXggPSBjb3VudCgkcGFyYW1zWydpbnB1dF9uYW1lJ10pOyAkaSA8ICRpTWF4OyAkaSsrICkKICAgIHsKICAgICAgICBpZiggJHBhcmFtc1snaW5wdXRfcmVxdWlyZWQnXVskaV0gIT0gMCApICRyZWxuYWRkZWQrKzsKICAgICAgICBpZiggJHBhcmFtc1snaW5wdXRfcmVxdWlyZWQnXVskaV0gIT0gMiApIHsKICAgICAgICAgICAgLy8gaXQncyBub3QgYSByZXF1aXJlZCBmaWVsZC4uLi4gc28gY2FuJ3QgYmUgdXNlZCBpbiBsb3N0dW4KICAgICAgICAgICAgJHN0ciA9ICRwYXJhbXNbJ2lucHV0X25hbWUnXVskaV07CiAgICAgICAgICAgIGlmKCBpc3NldCgkcGFyYW1zWydpbnB1dF9sb3N0dW5fJy4kc3RyXSkgKSB7CiAgICAgICAgICAgICAgICB1bnNldCgkcGFyYW1zWydzdWJtaXQnXSk7CiAgICAgICAgICAgICAgICAkcGFyYW1zWydlcnJvciddID0gJzEnOwogICAgICAgICAgICAgICAgJHBhcmFtc1snbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2xvc3R1bl9ub25yZXF1aXJlZCcpOwogICAgICAgICAgICAgICAgJHRoaXMtPm15UmVkaXJlY3QoICRpZCwgJ2FkZGdyb3VwJywgJHJldHVybmlkLCAkcGFyYW1zICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAKICAgICMgd2lsbCBub3QgZW5mb3JjZSByZWxhdGlvbnMgYW55bW9yZSAoSk0pCi8vICAgIGlmKCAkcmVsbmFkZGVkID09IDAgKSB7Ci8vICAgICAgICB1bnNldCgkcGFyYW1zWydzdWJtaXQnXSk7Ci8vICAgICAgICAkcGFyYW1zWydlcnJvciddID0gJzEnOwovLyAgICAgICAgJHBhcmFtc1snbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX25vcmVsYXRpb25zJyk7Ci8vICAgICAgICAkdGhpcy0+bXlSZWRpcmVjdCggJGlkLCAnYWRkZ3JvdXAnLCAkcmV0dXJuaWQsICRwYXJhbXMgKTsKLy8gICAgICAgIHJldHVybjsKLy8gICAgfQp9CgovLyB3ZSdyZSBjbGVhciB0byBhZGQgb3IgdXBkYXRlCmlmKCAkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRjb25zdW1lcjo6Q0FQQUJJTElUWV9FRElUR1JPVVBTKSApIHsKICBpZiggJGdpZCAhPT0gZmFsc2UgKSB7CiAgICAkcmV0ID0gJHRoaXMtPlNldEdyb3VwKCAkZ2lkLCAkZ3JvdXBuYW1lLCAkZ3JvdXBkZXNjICk7CiAgICBpZiggJHJldFswXSA9PSBGQUxTRSApIHsKICAgICAgdW5zZXQoJHBhcmFtc1snc3VibWl0J10pOwogICAgICAkcGFyYW1zWydlcnJvciddID0gJzEnOwogICAgICAkcGFyYW1zWydtZXNzYWdlJ10gPSAkcmV0WzFdOwogICAgICAkdGhpcy0+bXlSZWRpcmVjdCggJGlkLCAnYWRkZ3JvdXAnLCAkcmV0dXJuaWQsICRwYXJhbXMgKTsKICAgICAgcmV0dXJuOwogICAgfQogIH0KICBlbHNlIHsKICAgICRyZXQgPSAkdGhpcy0+QWRkR3JvdXAoICRncm91cG5hbWUsICRncm91cGRlc2MgKTsKICAgIGlmKCAkcmV0WzBdID09IEZBTFNFICkgewogICAgICB1bnNldCgkcGFyYW1zWydzdWJtaXQnXSk7CiAgICAgICRwYXJhbXNbJ2Vycm9yJ10gPSAnMSc7CiAgICAgICRwYXJhbXNbJ21lc3NhZ2UnXSA9ICRyZXRbMV07CiAgICAgICR0aGlzLT5teVJlZGlyZWN0KCAkaWQsICdhZGRncm91cCcsICRyZXR1cm5pZCwgJHBhcmFtcyApOwogICAgICByZXR1cm47CiAgICB9CiAgICAkZ2lkID0gJHJldFsxXTsKICB9Cn0KCmlmKCAkcGFyYW1zWydpbnB1dF9uYW1lJ10gJiYgJGNvbnN1bWVyLT5oYXNfY2FwYWJpbGl0eSgkY29uc3VtZXI6OkNBUEFCSUxJVFlfRURJVEdST1VQUFJPUFMpICkgewogIC8vIGFsc28gYWRkIHRoZSBwcm9wZXJ0eSBjaG9pY2VzCiAgJHRoaXMtPkRlbGV0ZUFsbEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoICRnaWQgKTsKICBmb3IoJGkgPSAwLCAkaU1heCA9IGNvdW50KCRwYXJhbXNbJ2lucHV0X25hbWUnXSk7ICRpIDwgJGlNYXg7ICRpKysgKSB7CiAgICAkcHJvcG5hbWUgPSAnJzsKICAgICRzb3J0b3JkZXIgPSAnJzsKICAgICRsb3N0dW4gPSAtMTsKICAgICRyZXF1aXJlZCA9IDA7CgogICAgJHByb3BuYW1lID0gJHBhcmFtc1snaW5wdXRfbmFtZSddWyRpXTsKICAgICRyZXF1aXJlZCA9ICRwYXJhbXNbJ2lucHV0X3JlcXVpcmVkJ11bJGldOwogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydpbnB1dF9sb3N0dW5fJy4kcHJvcG5hbWVdICkgKSB7CiAgICAgICRsb3N0dW4gPSAxOwogICAgfQoKICAgIGlmKCAkcmVxdWlyZWQgIT0gMCAmJiAkcHJvcG5hbWUgIT0gJycpIHsKICAgICAgJHJlcyA9ICR0aGlzLT5BZGRHcm91cFByb3BlcnR5UmVsYXRpb24oICRnaWQsICRwcm9wbmFtZSwgJGksICRsb3N0dW4sICRyZXF1aXJlZCApOwogICAgfQogIH0KfQoKLy8gc2VuZCBhbiBldmVudAokcGFybXMgPSBhcnJheSgpOwokcGFybXNbJ25hbWUnXSA9ICRncm91cG5hbWU7CiRwYXJtc1snZGVzY3JpcHRpb24nXSA9ICRncm91cGRlc2M7CiRwYXJtc1snaWQnXSA9ICRnaWQ7CiRzdHIgPSAnT25DcmVhdGVHcm91cCc7CmlmKCBpc3NldCgkcGFyYW1zWydncm91cF9pZCddKSApIHsKICAkc3RyID0gJ09uVXBkYXRlR3JvdXAnOwp9ClxDTVNNU1xIb29rTWFuYWdlcjo6ZG9faG9vaygnTUFNUzo6Jy4kc3RyLCRwYXJtcyk7CgokdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsICdncm91cHMnICk7Ci8vIEVPRgo=]]></data>
	</file>
	<file>
	  <filename>/action.do_admintasks.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KaWYoICEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygndXNlcnNuZ3JvdXBzJykgKSByZXR1cm47CgppZiggaXNzZXQoICRwYXJhbXNbJ2J1dHRvbl9leHBvcnR1c2VyaGlzdG9yeSddICkgKSB7CiAgaW5jbHVkZShfX0RJUl9fLicvZnVuY3Rpb24uYWRtaW5fZXhwb3J0dXNlcmhpc3RvcnkucGhwJyk7Cn0KZWxzZSBpZiggaXNzZXQoICRwYXJhbXNbJ2J1dHRvbl9jbGVhcnVzZXJoaXN0b3J5J10gKSApIHsKICBpbmNsdWRlKF9fRElSX18uJy9mdW5jdGlvbi5hZG1pbl9jbGVhcnVzZXJoaXN0b3J5LnBocCcpOwp9CiAgCi8vIEVPRg==]]></data>
	</file>
	<file>
	  <filename>/action.do_deletegroup.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KaWYoICEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucyggJ3JlbW92ZWdyb3VwcycgKSApIHJldHVybjsKCmlmICghaXNzZXQgKCRwYXJhbXNbJ2dyb3VwX2lkJ10pIHx8ICRwYXJhbXNbJ2dyb3VwX2lkJ10gPT0gIiIpIHsKICAgICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSAoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nICgnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJykpOwogICAgcmV0dXJuOwp9CgokZ3JvdXAgPSAkdGhpcy0+R2V0R3JvdXBJbmZvKCAkcGFyYW1zWydncm91cF9pZCddICk7CmlmKCAhaXNzZXQoJGdyb3VwWydpZCddKSAmJiAkZ3JvdXBbMF0gPT0gRkFMU0UgKSB7CiAgICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UgKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkZ3JvdXBbMV0gKTsKICAgIHJldHVybjsKfQoKJHF1ZXJ5ID0gbmV3IG1hbXNfdXNlcl9xdWVyeSgpOwokcXVlcnktPmFkZF9hbmRfb3B0KG1hbXNfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX0dST1VQSUQsJGdyb3VwWydpZCddKTsKJHJzID0gJHF1ZXJ5LT5leGVjdXRlKCk7CmlmKCAkcnMtPmdldF9mb3VuZF9yb3dzKCkgPiAwICkgewogICAgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlICgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcgKCdlcnJvcl9ub3RlbXB0eWdyb3VwJykpOwogICAgcmV0dXJuOwp9CgokcmV0ID0gJHRoaXMtPkRlbGV0ZUdyb3VwRnVsbCggJHBhcmFtc1snZ3JvdXBfaWQnXSApOwppZiggJHJldFswXSA9PSBGQUxTRSApIHsKICAkdGhpcy0+X0Rpc3BsYXlFcnJvclBhZ2UgKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkZ3JvdXBbMV0gKTsKICByZXR1cm47Cn0KCiRwYXJtcyA9IGFycmF5KCk7CiRwYXJtc1snaWQnXSA9ICRwYXJhbXNbJ2dyb3VwX2lkJ107CiRwYXJtc1snbmFtZSddID0gJGdyb3VwWydncm91cG5hbWUnXTsKXENNU01TXEhvb2tNYW5hZ2VyOjpkb19ob29rKCdNQU1TOjpPbkRlbGV0ZUdyb3VwJywkcGFybXMpOwoKJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCAnZ3JvdXBzJyApOwoKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.do_deleteuser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KaWYoICEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucyggJ3JlbW92ZXVzZXJzJyApICkgcmV0dXJuOwokdGhpcy0+U2V0Q3VycmVudFRhYigndXNlcnMnKTsKCiR1c2VyX2lkID0gXHh0X3BhcmFtOjpnZXRfaW50KCRwYXJhbXMsJ3VzZXJfaWQnKTsKaWYoICR1c2VyX2lkIDwgMSApIHsKICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJykpOwogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkKTsKICAgIHJldHVybjsKfQoKJHVzZXIgPSAkdGhpcy0+R2V0VXNlckluZm8oICRwYXJhbXNbJ3VzZXJfaWQnXSApOwppZiggIWlzX2FycmF5KCR1c2VyKSB8fCAkdXNlclswXSA9PSBGQUxTRSApIHsKICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfdXNlcm5vdGZvdW5kJykpOwogICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkKTsKICAgIHJldHVybjsKfQoKLy8gR2V0IGFsbCBvZiB0aGUgcHJvcGVydHkgZGVmaW5pdGlvbnMsIGlmIHRoZXkncmUgb2YgdHlwZSA2Ci8vIGFuZCB0aGUgcHJvcGVydHkgaXMgbm90IGVtcHR5LCB0aGVuIHdlIG1heQovLyBoYXZlIHRvIGRlbGV0ZSBhIGZpbGUgYXMgd2VsbC4KJHJldCA9ICR0aGlzLT5EZWxldGVVc2VyRnVsbCggJHBhcmFtc1sndXNlcl9pZCddICk7CmlmKCAkcmV0WzBdID09IEZBTFNFICkgewogICAgYXVkaXQoJHVzZXJfaWQsJ01BTVMnLCdGYWlsZWQgdG8gZGVsZXRlIHVzZXIgKGZvcmVpZ24ga2V5IHByb2JsZW0gPz8pJyk7CiAgICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX3VzZXJkZWxldGUnKSk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQpOwogICAgcmV0dXJuOwp9CgovLyBzZW5kIGFuIGV2ZW50CiRwYXJtc1sndWlkJ10gPSAkdXNlcl9pZDsKJHBhcm1zWyd1c2VybmFtZSddID0gJHVzZXJbMV1bJ3VzZXJuYW1lJ107CgovLyBhbmQgbG9nIGl0CmF1ZGl0KCAnJywgJHRoaXMtPkdldE5hbWUoKSwnRGVsZXRlZCBVc2VyICcuJHBhcmFtc1sndXNlcl9pZCddKTsKCiR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCwgJ3VzZXJzJyApOwoKLy8gRU9GCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.do_setprefs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZighZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkgeyBleGl0OyB9CgppZighJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSkgeyByZXR1cm47IH0KCmlmKGlzc2V0KCRwYXJhbXNbJ2lucHV0X3JlbW92ZWFsbCddKSkKewogICR0aGlzLT5FeHBpcmVUZW1wQ29kZXMoJy01IHllYXJzJyk7CiAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCAncHJlZnMnLCAnJywgJ2FkbWluX3NldHRpbmdzJyk7Cn0KZWxzZSBpZihpc3NldCgkcGFyYW1zWydpbnB1dF9yZW1vdmUxd2VlayddKSkKewogICR0aGlzLT5FeHBpcmVUZW1wQ29kZXMoJy0xIHdlZWsnKTsKICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsICdwcmVmcycsICcnLCAnYWRtaW5fc2V0dGluZ3MnKTsKfQplbHNlIGlmKGlzc2V0KCRwYXJhbXNbJ2lucHV0X3JlbW92ZTFtb250aCddKSkKewogICR0aGlzLT5FeHBpcmVUZW1wQ29kZXMoJy0xIG1vbnRoJyk7CiAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCAncHJlZnMnLCAnJywgJ2FkbWluX3NldHRpbmdzJyk7Cn0KZWxzZSBpZihpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpCnsKICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsICdwcmVmcycsICcnLCAnYWRtaW5fc2V0dGluZ3MnKTsKfQoKCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhdXRvX2NyZWF0ZV91bmtub3duJywoaW50KSRwYXJhbXNbJ2F1dG9fY3JlYXRlX3Vua25vd24nXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhdXRoX21vZHVsZScsdHJpbSgkcGFyYW1zWydhdXRoX21vZHVsZSddKSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdjbGVhcmhpc3RvcnlfYWdlJywgXHh0X3BhcmFtOjpnZXRfaW50KCAkcGFyYW1zLCAnY2xlYXJoaXN0b3J5X2FnZScpICk7CgokcmFuZG9tdXNlcm5hbWUgPSAwOwppZiggaXNzZXQoICRwYXJhbXNbJ2lucHV0X3JhbmRvbXVzZXJuYW1lJ10pICkgJHJhbmRvbXVzZXJuYW1lID0gKGludCkkcGFyYW1zWydpbnB1dF9yYW5kb211c2VybmFtZSddOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlX3JhbmRvbXVzZXJuYW1lJywkcmFuZG9tdXNlcm5hbWUpOwppZiggaXNzZXQoICRwYXJhbXNbJ2lucHV0X2V4cGlyZWFnZSddKSApICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdleHBpcmVhZ2VfbW9udGhzJywoaW50KSRwYXJhbXNbJ2lucHV0X2V4cGlyZWFnZSddKTsKCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1c2VyX3Nlc3Npb25fZXhwaXJlcycsICRwYXJhbXNbJ2lucHV0X3Nlc3Npb250aW1lb3V0J10pOwoKJGNvb2tpZV9rZWVwYWxpdmUgPSAwOwppZiggaXNzZXQoICRwYXJhbXNbJ2lucHV0X2Nvb2tpZWtlZXBhbGl2ZSddICkgKSAkY29va2llX2tlZXBhbGl2ZSA9ICRwYXJhbXNbJ2lucHV0X2Nvb2tpZWtlZXBhbGl2ZSddOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnY29va2llX2tlZXBhbGl2ZScsJGNvb2tpZV9rZWVwYWxpdmUpOwppZiggaXNzZXQoJHBhcmFtc1snaW5wdXRfc2lnbmluX2J1dHRvbiddKSApICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdzaWduaW5fYnV0dG9uJywgJHBhcmFtc1snaW5wdXRfc2lnbmluX2J1dHRvbiddKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2FsbG93X3JlcGVhdGVkX2xvZ2lucycsKGlzc2V0KCRwYXJhbXNbJ2lucHV0X2FsbG93X3JlcGVhdGVkX2xvZ2lucyddKT8kcGFyYW1zWydpbnB1dF9hbGxvd19yZXBlYXRlZF9sb2dpbnMnXTowKSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdpbWFnZV9kZXN0aW5hdGlvbl9wYXRoJywkcGFyYW1zWydpbnB1dF9pbWFnZV9kZXN0aW5hdGlvbl9wYXRoJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnYWxsb3dlZF9pbWFnZV9leHRlbnNpb25zJywkcGFyYW1zWydpbnB1dF9hbGxvd2VkX2ltYWdlX2V4dGVuc2lvbnMnXSk7CiRtYW1zX3NwZWNpZmljX3Blcm1pc3Npb25zID0gMDsKaWYoIGlzc2V0KCAkcGFyYW1zWydpbnB1dF9tYW1zX3NwZWNpZmljX3Blcm1pc3Npb25zJ10gKSApICRtYW1zX3NwZWNpZmljX3Blcm1pc3Npb25zID0gJHBhcmFtc1snaW5wdXRfbWFtc19zcGVjaWZpY19wZXJtaXNzaW9ucyddOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFtc19zcGVjaWZpY19wZXJtaXNzaW9ucycsJG1hbXNfc3BlY2lmaWNfcGVybWlzc2lvbnMpOwoKaWYgKGlzc2V0KCRwYXJhbXNbJ2lucHV0X21hbXNfc3BlY2lmaWNfcGVybWlzc2lvbnMnXSkgJiYgJHBhcmFtc1snaW5wdXRfbWFtc19zcGVjaWZpY19wZXJtaXNzaW9ucyddPT0xKSAgewogICAgLy8gdXNpbmcgRkVVc2VyLXNwZWNpZmljIHBlcm1pc3Npb25zLCBzbyBjcmVhdGUgdGhlbSBpZiBuZWNlc3NhcnkKICAgICR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdNQU1TIE1vZGlmeSBVc2VycycsJ01vZGlmeSBNQU1TIFVzZXJzJyk7CiAgICAkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignTUFNUyBNb2RpZnkgR3JvdXBzJywnTW9kaWZ5IE1BTVMgVXNlciBHcm91cHMnKTsKICAgICR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdNQU1TIE1vZGlmeSBNQU1TVXNlclByb3BzJywnTW9kaWZ5IE1BTVMgVXNlciBQcm9wZXJ0aWVzJyk7Cn0KCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdmb3JjZWxvZ291dF90aW1lcycsdHJpbSgkcGFyYW1zWydmb3JjZWxvZ291dF90aW1lcyddKSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdmb3JjZWxvZ291dF9zZXNzaW9uYWdlJywoaW50KSRwYXJhbXNbJ2ZvcmNlbG9nb3V0X3Nlc3Npb25hZ2UnXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdleHBpcmV1c2Vyc19pbnRlcnZhbCcsKGludCkkcGFyYW1zWydleHBpcmV1c2Vyc19pbnRlcnZhbCddKTsKaWYoIGlzc2V0KCRwYXJhbXNbJ3BhZ2V0eXBlX2dyb3VwcyddKSApICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwYWdldHlwZV9ncm91cHMnLGltcGxvZGUoJywnLCRwYXJhbXNbJ3BhZ2V0eXBlX2dyb3VwcyddKSk7CiR0aGlzLT5TZXRDdXJyZW50VGFiKCdwcmVmcycpOwokdGhpcy0+U2V0Q3VycmVudEFjdGlvbignYWRtaW5fc2V0dGluZ3MnKTsKJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsKCi8vIEVPRgo=]]></data>
	</file>
	<file>
	  <filename>/action.do_userchangesettings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZighZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkgeyBleGl0OyB9CgokcmV0dXJudG8gPSBceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywgJ21hbXNfcmV0dXJudG8nKTsKCmlmKGlzc2V0KCRwYXJhbXNbJ21hbXNfY2FuY2VsJ10pKQp7CiAgaWYoJHJldHVybnRvKQogIHsKICAgICRyZXR1cm5pZCA9ICR0aGlzLT5yZXNvbHZlX2FsaWFzX29yX2lkKCRyZXR1cm50bywgJHJldHVybmlkKTsKICAgICR0aGlzLT5SZWRpcmVjdENvbnRlbnQoJHJldHVybmlkKTsKICB9Cn0KCiR1aWQgPSAkdGhpcy0+TG9nZ2VkSW5JZCgpOwoKaWYoJHVpZCA8IDEpCnsKICAkX1NFU1NJT05bJ21hbXNjcyddWydlcnJvcmlkJ10gPSAzOwogICRfU0VTU0lPTlsnbWFtc2NzJ11bJ2Vycm9yJ10gPSAnbm90X2xvZ2dlZF9pbl9vcl9zZXNzaW9uX2V4cGlyZWQnOwogICRfU0VTU0lPTlsnbWFtc2NzJ11bJ2Vycm9yX21lc3NhZ2UnXSA9ICdTZXNzaW9uIGV4cGlyZWQuIFlvdSBhcmUgbm90IGxvZ2dlZCBpbi4nOwogIC8vIHVzZXIgaXNuJ3QgbG9nZ2VkIGluCiAgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkdGhpcy0+TGFuZygnZXJyb3Jfbm90bG9nZ2VkaW4nKSk7CiAgCiAgcmV0dXJuOwp9CiRyZXN1bHQgPSAkdGhpcy0+R2V0VXNlckluZm8oJHVpZCk7CmlmKCRyZXN1bHRbMF0gPT0gRkFMU0UpCnsKICAvLyB1c2VyIGlzbid0IGxvZ2dlZCBpbgogICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHJlc3VsdFsxXSk7CiAgCiAgcmV0dXJuOwp9CiR1aW5mbyA9ICRyZXN1bHRbMV07CgokdXNlcm5hbWUgPSAkdWluZm9bJ3VzZXJuYW1lJ107CiRwYXNzd29yZCA9ICcnOwoKY2xhc3MgTUFNU0NoYW5nZVNldHRpbmdzRXJyb3IgZXh0ZW5kcyBcUnVudGltZUV4Y2VwdGlvbiB7fQoKdHJ5CnsKICBpZighXHh0X3V0aWxzOjp2YWxpZF9mb3JtX2NzcmYoKSkKICB7CiAgICB0aHJvdyBuZXcgTUFNU0NoYW5nZVNldHRpbmdzRXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX3NlY3VyaXR5JykpOwogIH0KICAKICBcQ01TTVNcSG9va01hbmFnZXI6OmRvX2hvb2soJ01BTVM6OkJlZm9yZUNoYW5nZVNldHRpbmdzJywgWyd1aWQnID0+ICR1aWRdKTsKICAKICAvLyBjaGVjayBpZiB1c2VyIGlzIGFsbG93ZWQgdG8gY2hhbmdlIGhpcyB1c2VybmFtZQogICRjb25zdW1lciA9IG1hbXNfdXRpbHM6OmdldF9hdXRoX2NvbnN1bWVyKCk7CiAgaWYoJGNvbnN1bWVyLT5oYXNfY2FwYWJpbGl0eShtYW1zX2F1dGhfY29uc3VtZXI6OkNBUEFCSUxJVFlfQ0hBTkdFVVNFUk5BTUUpKQogIHsKICAgIGlmKGlzc2V0KCRwYXJhbXNbJ21hbXNfaW5wdXRfdXNlcm5hbWUnXSkpCiAgICB7CiAgICAgIC8vIHVzZXIgaXMgY2hhbmdpbmcgaGlzIHVzZXJuYW1lCiAgICAgICR0bXAgPSB0cmltKCRwYXJhbXNbJ21hbXNfaW5wdXRfdXNlcm5hbWUnXSk7CiAgICAgIGlmKCEkdGhpcy0+SXNWYWxpZFVzZXJuYW1lKCR0bXAsIEZBTFNFLCAkdWlkKSkKICAgICAgewogICAgICAgIHRocm93IG5ldyBNQU1TQ2hhbmdlU2V0dGluZ3NFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZHVzZXJuYW1lJykpOwogICAgICB9CiAgICAgIGlmKCR0bXApCiAgICAgIHsKICAgICAgICAkdXNlcm5hbWUgPSAkdG1wOwogICAgICB9CiAgICB9CiAgfQogIAogIC8vIGNoZWNrIGlmIHRoZSB1c2VyIGlzIGFsbG93ZWQgdG8gY2hhbmdlIGhpcyBwYXNzd29yZAogIGlmKCRjb25zdW1lci0+aGFzX2NhcGFiaWxpdHkobWFtc19hdXRoX2NvbnN1bWVyOjpDQVBBQklMSVRZX0NIQU5HRVBBU1NXRCkpCiAgewogICAgLy8gY2hhbmdlIHRoaXMgcGFzc3dvcmQKICAgICRwYXNzd29yZCA9IGNtc19odG1sX2VudGl0eV9kZWNvZGUodHJpbSgkcGFyYW1zWydtYW1zX2lucHV0X3Bhc3N3b3JkJ10pKTsKICAgICRyZXBlYXQgICA9IGNtc19odG1sX2VudGl0eV9kZWNvZGUodHJpbSgkcGFyYW1zWydtYW1zX2lucHV0X3JlcGVhdHBhc3N3b3JkJ10pKTsKICAgIGlmKCR1aW5mb1snZm9yY2VfbmV3cHcnXSAmJiAhJHBhc3N3b3JkKQogICAgewogICAgICB0aHJvdyBuZXcgTUFNU0NoYW5nZVNldHRpbmdzRXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX3JlcXVpcmVkZmllbGQnLCAncGFzc3dvcmQnKSk7CiAgICB9CiAgICAKICAgIGlmKCR1aW5mb1snZm9yY2VfbmV3cHcnXSAmJiAhJHJlcGVhdCkKICAgIHsKICAgICAgdGhyb3cgbmV3IE1BTVNDaGFuZ2VTZXR0aW5nc0Vycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9yZXF1cmllZGZpZWxkJywgJ3JlcGVhdHBhc3N3b3JkJykpOwogICAgfQogICAgCiAgICBpZigkcGFzc3dvcmQgIT0gJHJlcGVhdCAmJiAkcGFzc3dvcmQgIT0gJycpCiAgICB7CiAgICAgIHRocm93IG5ldyBNQU1TQ2hhbmdlU2V0dGluZ3NFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfcGFzc3dvcmRtaXNtYXRjaCcpKTsKICAgIH0KICAgIAogICAgaWYoJHBhc3N3b3JkICE9ICcnICYmICEkdGhpcy0+SXNWYWxpZFBhc3N3b3JkKCRwYXNzd29yZCkpCiAgICB7CiAgICAgIHRocm93IG5ldyBNQU1TQ2hhbmdlU2V0dGluZ3NFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZHBhc3N3b3JkJykpOwogICAgfQogIH0KICAKICAvLyBnZXQgcHJvcGVydHkgZGVmaW5pdGlvbnMKICAkZGVmbnNieW5hbWUgPSAkdGhpcy0+R2V0UHJvcGVydHlEZWZucygpOwogIAogIC8vIEdldCBtZW1iZXIgZ3JvdXBzCiAgJGdyb3VwcyA9ICR0aGlzLT5HZXRNZW1iZXJHcm91cHNBcnJheSgkdWlkKTsKICAKICAvLyBHZXQgZ3JvdXAgcHJvcGVydHkgcmVsYXRpb25zIGludG8gYSB1bmlvbi4KICAkcHJvcGVydGllcyA9IFtdOwogICR0bXAgICAgICAgID0gW107CiAgZm9yZWFjaCgkZ3JvdXBzIGFzICRvbmVncm91cCkKICB7CiAgICAkcHJvcHJlbGF0aW9ucyA9ICR0aGlzLT5HZXRHcm91cFByb3BlcnR5UmVsYXRpb25zKCRvbmVncm91cFsnZ3JvdXBpZCddKTsKICAgICR0bXAgICAgICAgICAgID0gXE1BTVNcUlJVdGlsczo6YXJyYXlfbWVyZ2VfYnlfbmFtZV9yZXF1aXJlZCgkdG1wLCAkcHJvcHJlbGF0aW9ucyk7CiAgICB1YXNvcnQoJHRtcCwgWyd4dF9hcnJheScsICdjb21wYXJlX2VsZW1lbnRzX2J5X3NvcnRvcmRlcl9rZXknXSk7CiAgfQogICRwcm9wZXJ0aWVzID0geHRfYXJyYXk6OnRvX2hhc2goJHRtcCwgJ25hbWUnKTsKICAKICAkdXNlcnByb3BzICAgPSAkdGhpcy0+R2V0VXNlclByb3BlcnRpZXMoJHVpZCk7CiAgJGRlbGV0ZXByb3BzID0gW107CiAgCiAgLy8gZG8gdmFsaWRhdGlvbiBvZiB0aGUgZmllbGRzLgogIGZvcmVhY2goJHByb3BlcnRpZXMgYXMgJHByb3BuYW1lID0+ICRwcm9wKQogIHsKICAgICRmbGR0eXBlICA9ICRkZWZuc2J5bmFtZVskcHJvcG5hbWVdWyd0eXBlJ107CiAgICAkcmVxdWlyZWQgPSAoJHByb3BbJ3JlcXVpcmVkJ10gPT0gMik7CiAgICAkaGlkZGVuICAgPSAoJHByb3BbJ3JlcXVpcmVkJ10gPT0gMyk7CiAgICAkcmVhZG9ubHkgPSAoJHByb3BbJ3JlcXVpcmVkJ10gPT0gNCk7CiAgICAKICAgIHN3aXRjaCgkZmxkdHlwZSkKICAgIHsKICAgICAgY2FzZSBNQU1TOjpGSUVMRFRZUEVfVEVYVDoKICAgICAgICBpZigkcmVxdWlyZWQpCiAgICAgICAgewogICAgICAgICAgaWYoIWlzc2V0KCRwYXJhbXNbJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZV0pIHx8IGVtcHR5KCRwYXJhbXNbJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZV0pKQogICAgICAgICAgewogICAgICAgICAgICB0aHJvdyBuZXcgTUFNU0NoYW5nZVNldHRpbmdzRXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX3JlcXVpcmVkZmllbGQnLCAkZGVmbnNieW5hbWVbJHByb3BuYW1lXVsncHJvbXB0J10pKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIGJyZWFrOwogICAgICAKICAgICAgY2FzZSBNQU1TOjpGSUVMRFRZUEVfQ0hFQ0tCT1g6CiAgICAgICAgaWYoIWlzc2V0KCRwYXJhbXNbJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZV0pKQogICAgICAgIHsKICAgICAgICAgICRwYXJhbXNbJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZV0gPSAwOwogICAgICAgIH0KICAgICAgICBpZigkcmVxdWlyZWQpCiAgICAgICAgewogICAgICAgICAgaWYoJHBhcmFtc1snbWFtc19pbnB1dF8nIC4gJHByb3BuYW1lXSA9PSAwKQogICAgICAgICAgewogICAgICAgICAgICB0aHJvdyBuZXcgTUFNU0NoYW5nZVNldHRpbmdzRXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX3JlcXVpcmVkZmllbGQnLCAkZGVmbnNieW5hbWVbJHByb3BuYW1lXVsncHJvbXB0J10pKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIGJyZWFrOwogICAgICAKICAgICAgY2FzZSBNQU1TOjpGSUVMRFRZUEVfRU1BSUw6CiAgICAgICAgaWYoJHJlcXVpcmVkKQogICAgICAgIHsKICAgICAgICAgIGlmKCFpc3NldCgkcGFyYW1zWydtYW1zX2lucHV0XycgLiAkcHJvcG5hbWVdKSkKICAgICAgICAgIHsKICAgICAgICAgICAgdGhyb3cgbmV3IE1BTVNDaGFuZ2VTZXR0aW5nc0Vycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkZW1haWxhZGRyZXNzJykpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZQogICAgICAgICAgewogICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPklzVmFsaWRFbWFpbEFkZHJlc3MoJHBhcmFtc1snbWFtc19pbnB1dF8nIC4gJHByb3BuYW1lXSwgJHVpZCk7CiAgICAgICAgICAgIGlmKCRyZXN1bHRbMF0gPT0gRkFMU0UpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAkZW1sID0gJHBhcmFtc1snbWFtc19pbnB1dF8nIC4gJHByb3BuYW1lXTsKICAgICAgICAgICAgICB0aHJvdyBuZXcgTUFNU0NoYW5nZVNldHRpbmdzRXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRlbWFpbGFkZHJlc3MnKSAuICIgJGVtbCIpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICBicmVhazsKICAgICAgCiAgICAgIGNhc2UgTUFNUzo6RklFTERUWVBFX1RFWFRBUkVBOgogICAgICAgIGlmKCRyZXF1aXJlZCAmJiAhaXNzZXQoJHBhcmFtc1snbWFtc19pbnB1dF8nIC4gJHByb3BuYW1lXSkpCiAgICAgICAgewogICAgICAgICAgdGhyb3cgbmV3IE1BTVNDaGFuZ2VTZXR0aW5nc0Vycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9yZXF1aXJlZGZpZWxkJywgJGRlZm5zYnluYW1lWyRwcm9wbmFtZV1bJ3Byb21wdCddKSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmKCRyZXF1aXJlZCAmJiBlbXB0eSgkcGFyYW1zWydtYW1zX2lucHV0XycgLiAkcHJvcG5hbWVdKSkKICAgICAgICB7CiAgICAgICAgICB0aHJvdyBuZXcgTUFNU0NoYW5nZVNldHRpbmdzRXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX3JlcXVpcmVkZmllbGQnLCAkZGVmbnNieW5hbWVbJHByb3BuYW1lXVsncHJvbXB0J10pKTsKICAgICAgICB9CiAgICAgIGJyZWFrOwogICAgICAKICAgICAgY2FzZSBNQU1TOjpGSUVMRFRZUEVfTVVMVElTRUxFQ1Q6CiAgICAgICAgaWYoJHJlcXVpcmVkICYmICFpc3NldCgkcGFyYW1zWydtYW1zX2lucHV0XycgLiAkcHJvcG5hbWVdKSkKICAgICAgICB7CiAgICAgICAgICB0aHJvdyBuZXcgTUFNU0NoYW5nZVNldHRpbmdzRXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX3JlcXVpcmVkZmllbGQnLCAkZGVmbnNieW5hbWVbJHByb3BuYW1lXVsncHJvbXB0J10pKTsKICAgICAgICB9CiAgICAgICAgLy8gZW5jb2RlIGl0IGludG8gYSBjb21tYSBzZXBhcmF0ZWQgbGlzdC4KICAgICAgICBpZihpc3NldCgkcGFyYW1zWydtYW1zX2lucHV0XycgLiAkcHJvcG5hbWVdKSkKICAgICAgICB7CiAgICAgICAgICAkcGFyYW1zWydtYW1zX2lucHV0XycgLiAkcHJvcG5hbWVdID0gaW1wbG9kZSgnLCcsICRwYXJhbXNbJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZV0pOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgJHBhcmFtc1snbWFtc19pbnB1dF8nIC4gJHByb3BuYW1lXSA9ICcnOwogICAgICAgIH0KICAgICAgYnJlYWs7CiAgICAgIAogICAgICBjYXNlIE1BTVM6OkZJRUxEVFlQRV9JTUFHRToKICAgICAgICBpZigKICAgICAgICAgIGlzc2V0KCRwYXJhbXNbJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZSAuICdfY2xlYXInXSkgJiYKICAgICAgICAgICRwYXJhbXNbJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZSAuICdfY2xlYXInXSA9PSAnY2xlYXInCiAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgIC8vIHdlJ3JlIHRvbGQgdG8gY2xlYXIgYW4gaW1hZ2UgcHJvcGVydHksIHdlIG11c3QgYWxzbwogICAgICAgICAgLy8gZGVsZXRlIHRoZSBpbWFnZQogICAgICAgICAgJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOwogICAgICAgICAgJGRlc3REaXIxID0gJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10gLiAnLyc7CiAgICAgICAgICAkZGVzdERpcjEgLj0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ltYWdlX2Rlc3RpbmF0aW9uX3BhdGgnLCAnbWFtcycpIC4gJy8nOwogICAgICAgICAgJGZpbGUxICAgID0gJGRlc3REaXIxIC4gJHBhcmFtc1snbWFtc19pbnB1dF8nIC4gJHByb3BuYW1lXTsKICAgICAgICAgIAogICAgICAgICAgaWYoaXNfZmlsZSgkZmlsZTEpKSB7IEB1bmxpbmsoJGZpbGUxKTsgfQogICAgICAgICAgCiAgICAgICAgICAvLyB1bnNldCB0aGUgaGlkZGVuIHBhcmFtIHRvIHByZXZlbnQgYW55IGZ1cnRoZXIgcHJvY2Vzc2luZwogICAgICAgICAgJGRlbGV0ZXByb3BzW10gPSAkcHJvcG5hbWU7CiAgICAgICAgICB1bnNldCgkcGFyYW1zWydtYW1zX2lucHV0XycgLiAkcHJvcG5hbWVdKTsKICAgICAgICB9CiAgICAgICAgaWYoCiAgICAgICAgICAkcmVxdWlyZWQgJiYKICAgICAgICAgICgoIWlzc2V0KCRfRklMRVNbJGlkIC4gJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZV0pIHx8CiAgICAgICAgICAgICRfRklMRVNbJGlkIC4gJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZV1bJ3NpemUnXSA9PSAwKSAmJgogICAgICAgICAgICghaXNzZXQoJHBhcmFtc1snbWFtc19pbnB1dF8nIC4gJHByb3BuYW1lXSkgfHwgJHBhcmFtc1snbWFtc19pbnB1dF8nIC4gJHByb3BuYW1lXSA9PSAnJykpCiAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgIC8vIGJ1dCB3ZSBjYW4ndCBmaW5kIGEgdmFsdWUKICAgICAgICAgIHRocm93IG5ldyBNQU1TQ2hhbmdlU2V0dGluZ3NFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfcmVxdWlyZWRmaWVsZCcsICRwcm9wbmFtZSkpOwogICAgICAgIH0KICAgICAgYnJlYWs7CiAgICAgIAogICAgICBjYXNlIE1BTVM6OkZJRUxEVFlQRV9EQVRFOgogICAgICAgIGlmKGlzc2V0KCRwYXJhbXNbJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZSAuICdNb250aCddKSkKICAgICAgICB7CiAgICAgICAgICAkcGFyYW1zWydtYW1zX2lucHV0XycgLiAkcHJvcG5hbWVdID0KICAgICAgICAgICAgbWt0aW1lKAogICAgICAgICAgICAgIDAsIDAsIDAsCiAgICAgICAgICAgICAgJHBhcmFtc1snbWFtc19pbnB1dF8nIC4gJHByb3BuYW1lIC4gJ01vbnRoJ10sCiAgICAgICAgICAgICAgJHBhcmFtc1snbWFtc19pbnB1dF8nIC4gJHByb3BuYW1lIC4gJ0RheSddLAogICAgICAgICAgICAgICRwYXJhbXNbJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZSAuICdZZWFyJ10KICAgICAgICAgICAgKTsKICAgICAgICAgIHVuc2V0KCRwYXJhbXNbJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZSAuICdNb250aCddKTsKICAgICAgICAgIHVuc2V0KCRwYXJhbXNbJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZSAuICdEYXknXSk7CiAgICAgICAgICB1bnNldCgkcGFyYW1zWydtYW1zX2lucHV0XycgLiAkcHJvcG5hbWUgLiAnWWVhciddKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJHZhbCA9ICRwYXJhbXNbJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZV07CiAgICAgICAgCiAgICAgICAgaWYocHJlZ19tYXRjaCgiL15bMC05XXs0fS0oMFsxLTldfDFbMC0yXSktKDBbMS05XXxbMS0yXVswLTldfDNbMC0xXSkkLyIsICR2YWwpKQogICAgICAgIHsKICAgICAgICAgICRwYXJhbXNbJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZV0gPSBzdHJ0b3RpbWUoJHZhbCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmKCRyZXF1aXJlZCAmJiAhaXNzZXQoJHBhcmFtc1snbWFtc19pbnB1dF8nIC4gJHByb3BuYW1lXSkpCiAgICAgICAgewogICAgICAgICAgdGhyb3cgbmV3IE1BTVNDaGFuZ2VTZXR0aW5nc0Vycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9yZXF1aXJlZGZpZWxkJywgJHByb3BuYW1lKSk7CiAgICAgICAgfQogICAgICBicmVhazsKICAgICAgCiAgICAgIGNhc2UgTUFNUzo6RklFTERUWVBFX0RST1BET1dOOgogICAgICBjYXNlIE1BTVM6OkZJRUxEVFlQRV9SQURJT0JVVE5TOgogICAgICAgIGlmKCRyZXF1aXJlZCAmJiAhaXNzZXQoJHBhcmFtc1snbWFtc19pbnB1dF8nIC4gJHByb3BuYW1lXSkpCiAgICAgICAgewogICAgICAgICAgdGhyb3cgbmV3IE1BTVNDaGFuZ2VTZXR0aW5nc0Vycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9yZXF1aXJlZGZpZWxkJywgJHByb3BuYW1lKSk7CiAgICAgICAgfQogICAgICBicmVhazsKICAgICAgCiAgICAgIGRlZmF1bHQ6CiAgICAgICAgLy8gd2UgZG9uJ3QgYWNjZXB0IGZpZWxkIHR5cGVzIGxpa2UgdGhpcwogICAgICAgIHRocm93IG5ldyBNQU1TQ2hhbmdlU2V0dGluZ3NFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfY2FudHNldHByb3BlcnR5dHlwZScsICRwcm9wbmFtZSkpOwogICAgICBicmVhazsKICAgIH0KICB9CiAgCiAgXENNU01TXEhvb2tNYW5hZ2VyOjpkb19ob29rKCdNQU1TOjpDaGFuZ2VTZXR0aW5nc0FmdGVyVmFsaWRhdGUnLCBbJ3VpZCcgPT4gJHVpZF0pOwogIAogIC8vCiAgLy8gbm93IHdlIGFjdHVhbGx5IGNoYW5nZSB0aGUgdXNlciBzZXR0aW5ncwogIC8vCiAgCiAgLy8gcGFzc3dvcmQKICBpZigkcGFzc3dvcmQgIT0gJycgfHwgJHVzZXJuYW1lICE9ICcnKQogIHsKICAgICRyZXN1bHQgPSAkdGhpcy0+U2V0VXNlcigkdWlkLCAkdXNlcm5hbWUsICRwYXNzd29yZCk7CiAgICAkdGhpcy0+Rm9yY2VQYXNzd29yZENoYW5nZSgkdWlkLCBGQUxTRSk7CiAgICAKICAgIGlmKCRyZXN1bHRbMF0gPT0gRkFMU0UpCiAgICB7CiAgICAgIHRocm93IG5ldyBNQU1TQ2hhbmdlU2V0dGluZ3NFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfcHJvYmxlbXNldHRpbmdpbmZvJykgLiAnICcgLiAkcmVzdWx0WzFdKTsKICAgIH0KICB9CiAgCiAgLy8KICAvLyBub3cgZGVsZXRlIGFsbCB0aGUgcHJvcGVydGllcyBmb3IgdGhpcyB1c2VyCiAgLy8gaW4gcHJlcGFyYXRpb24gZm9yIHNldHRpbmcgbmV3IG9uZXMuCiAgLy8KICAkdGhpcy0+Rm9yY2VDaGFuZ2VTZXR0aW5ncygkdWlkLCBGQUxTRSk7CiAgCiAgZm9yZWFjaCgkZGVsZXRlcHJvcHMgYXMgJG9uZSkKICB7CiAgICAkdGhpcy0+RGVsZXRlVXNlclByb3BlcnR5RnVsbCgkb25lLCAkdWlkLCBGQUxTRSk7CiAgfQogIAogIGZvcmVhY2goJHByb3BlcnRpZXMgYXMgJHByb3BuYW1lID0+ICRwcm9wKQogIHsKICAgICRyZXF1aXJlZCAgICAgPSAoJHByb3BbJ3JlcXVpcmVkJ10gPT0gMik7CiAgICAkaGlkZGVuICAgICAgID0gKCRwcm9wWydyZXF1aXJlZCddID09IDMpOwogICAgJHJlYWRvbmx5ICAgICA9ICgkcHJvcFsncmVxdWlyZWQnXSA9PSA0KTsKICAgICRmbGR0eXBlICAgICAgPSAkZGVmbnNieW5hbWVbJHByb3BuYW1lXVsndHlwZSddOwogICAgJGZvcmNlX3VuaXF1ZSA9ICRkZWZuc2J5bmFtZVskcHJvcG5hbWVdWydmb3JjZV91bmlxdWUnXTsKICAgICR2YWwgICAgICAgICAgPSBOVUxMOwogICAgCiAgICBpZighaXNzZXQoJHBhcmFtc1snbWFtc19pbnB1dF8nIC4gJHByb3BuYW1lXSkpIHsgY29udGludWU7IH0KICAgIAogICAgaWYoJHJlYWRvbmx5IHx8ICRoaWRkZW4pIHsgY29udGludWU7IH0gLy8gY2Fubm90IHNldCByZWFkb25seSBvciBoaWRkZW4gZmllbGRzCiAgICAKICAgIGlmKCRmbGR0eXBlID09IE1BTVM6OkZJRUxEVFlQRV9JTUFHRSkKICAgIHsKICAgICAgLy8gaW1hZ2UgdHlwZQogICAgICAkdmFsID0gJHBhcmFtc1snbWFtc19pbnB1dF8nIC4gJHByb3BuYW1lXTsKICAgICAgCiAgICAgIGlmKGlzc2V0KCRfRklMRVNbJGlkIC4gJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZV0pICYmICRfRklMRVNbJGlkIC4gJ21hbXNfaW5wdXRfJyAuICRwcm9wbmFtZV1bJ3NpemUnXSA+IDApCiAgICAgIHsKICAgICAgICAvLyBJdCBpcyBhbiB1cGxvYWQgZmlsZSB0eXBlCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5NYW5hZ2VJbWFnZVVwbG9hZCgkaWQgLiAnbWFtc19pbnB1dF8nIC4gJHByb3BuYW1lLCAkcHJvcG5hbWUpOwogICAgICAgIGlmKCRyZXN1bHRbMF0gPT0gRkFMU0UpCiAgICAgICAgewogICAgICAgICAgJHBhcmFtc1snZXJyb3InXSAgID0gMTsKICAgICAgICAgICRwYXJhbXNbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcicpIC4gJyZuYnNwOycgLiAkcmVzdWx0WzFdOwogICAgICAgICAgJHRoaXMtPm15UmVkaXJlY3QoJGlkLCAnY2hhbmdlc2V0dGluZ3MnLCAkcmV0dXJuaWQsICRwYXJhbXMpOwogICAgICAgIH0KICAgICAgICAkdmFsID0gJHJlc3VsdFsxXTsKICAgICAgfQogICAgfQogICAgZWxzZQogICAgewogICAgICAkdmFsID0gdHJpbSgkcGFyYW1zWydtYW1zX2lucHV0XycgLiAkcHJvcG5hbWVdKTsKICAgICAgJHZhbCA9IGNtc19odG1sX2VudGl0eV9kZWNvZGUoJHZhbCk7CiAgICAgIAogICAgICBpZigkZmxkdHlwZSA9PSBNQU1TOjpGSUVMRFRZUEVfVEVYVCkKICAgICAgewogICAgICAgICR2YWwgPSBmaWx0ZXJfdmFyKCR2YWwsIEZJTFRFUl9TQU5JVElaRV9TVFJJTkcpOwogICAgICB9CiAgICAgIGVsc2UgaWYoJGZsZHR5cGUgPT0gTUFNUzo6RklFTERUWVBFX1RFWFRBUkVBKQogICAgICB7CiAgICAgICAgJHZhbCA9IHh0X3V0aWxzOjpjbGVhbl9pbnB1dF9odG1sKCR2YWwpOwogICAgICB9CiAgICB9CiAgICAKICAgIC8vIGNoZWNrIGZvciBmb3JjZWQgdW5pcXVlIHZhbHVlcy4KICAgIGlmKCR2YWwgJiYgJGZvcmNlX3VuaXF1ZSAmJiAhJHRoaXMtPklzVXNlclByb3BlcnR5VmFsdWVVbmlxdWUoJHVpZCwgJHByb3BuYW1lLCAkdmFsKSkKICAgIHsKICAgICAgJHBhcmFtc1snZXJyb3InXSAgID0gMTsKICAgICAgJHBhcmFtc1snbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX3VzZXJfbm9udW5pcXVlX2ZpZWxkX3ZhbHVlJywgJHByb3BuYW1lKTsKICAgICAgJHRoaXMtPm15UmVkaXJlY3QoJGlkLCAnY2hhbmdlc2V0dGluZ3MnLCAkcmV0dXJuaWQsICRwYXJhbXMpOwogICAgICAKICAgICAgcmV0dXJuOwogICAgfQogICAgCiAgICAkcmV0ID0gJHRoaXMtPlNldFVzZXJQcm9wZXJ0eUZ1bGwoJHByb3BuYW1lLCAkdmFsLCAkdWlkKTsKICAgIGlmKCRyZXQgPT0gRkFMU0UpCiAgICB7CiAgICAgICRwYXJhbXNbJ2Vycm9yJ10gICA9IDE7CiAgICAgICRwYXJhbXNbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9zZXR0aW5ncHJvcGVydHknKSAuICcgJyAuICRwcm9wbmFtZTsKICAgICAgJHRoaXMtPm15UmVkaXJlY3QoJGlkLCAnY2hhbmdlc2V0dGluZ3MnLCAkcmV0dXJuaWQsICRwYXJhbXMpOwogICAgICAKICAgICAgcmV0dXJuOwogICAgfQogIH0KICAKICAkdGhpcy0+YWRkX2hpc3RvcnkoJHVpZCwgJ2NoYW5nZSBzZXR0aW5ncycpOwogIAogIC8vIHNlbmQgYSBob29rCiAgJGV2ZW50X3BhcmFtcyAgICAgICAgID0gW107CiAgJGV2ZW50X3BhcmFtc1snbmFtZSddID0gJHVpbmZvWyd1c2VybmFtZSddOwogICRldmVudF9wYXJhbXNbJ2lkJ10gICA9ICR1aWQ7CiAgXENNU01TXEhvb2tNYW5hZ2VyOjpkb19ob29rKCdNQU1TOjpPblVwZGF0ZVVzZXInLCAkZXZlbnRfcGFyYW1zKTsKICAKfQpjYXRjaChcRXhjZXB0aW9uICRlKQp7CiAgJGVyciAgICAgICAgICAgICAgID0gJGUtPkdldE1lc3NhZ2UoKTsKICAkcGFyYW1zWydlcnJvciddICAgPSAxOwogICRwYXJhbXNbJ21lc3NhZ2UnXSA9ICRlLT5HZXRNZXNzYWdlKCk7CiAgJHRoaXMtPm15UmVkaXJlY3QoJGlkLCAnY2hhbmdlc2V0dGluZ3MnLCAkcmV0dXJuaWQsICRwYXJhbXMpOwp9CgppZigkcmV0dXJudG8pCnsKICAkcGFnZWlkID0gJHRoaXMtPnJlc29sdmVfYWxpYXNfb3JfaWQoJHJldHVybnRvKTsKICBpZigkcGFnZWlkKQogIHsKICAgICR0aGlzLT5SZWRpcmVjdENvbnRlbnQoJHBhZ2VpZCk7CiAgfQp9CmlmKCgkdXJsID0gJHRoaXMtPkdldFBvc3RMb2dpblVSTCgpKSkKewogIHJlZGlyZWN0KCR1cmwpOwp9CmVsc2UgaWYoKCR0cGxzdHIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFnZWlkX2FmdGVyY2hhbmdlc2V0dGluZ3MnKSkpCnsKICAkdHBsID0gJHNtYXJ0eS0+Q3JlYXRlVGVtcGxhdGUoJ3N0cmluZzonIC4gJHRwbHN0cik7CiAgJHRwbC0+YXNzaWduKCd1c2VybmFtZScsICR1aW5mb1sndXNlcm5hbWUnXSk7CiAgJHRwbC0+YXNzaWduKCd1c2VyaW5mbycsICR1aW5mbyk7CiAgJGdyb3VwcyAgICA9ICR0aGlzLT5HZXRNZW1iZXJHcm91cHNBcnJheSgkdGhpcy0+TG9nZ2VkaW5JZCgpKTsKICAkZ3JvdXBuYW1lID0gJHRoaXMtPkdldEdyb3VwTmFtZSgkZ3JvdXBzWzBdWydncm91cGlkJ10pOwogICR0cGwtPmFzc2lnbignZ3JvdXAnLCAkZ3JvdXBuYW1lKTsKICAkdG1wID0gdHJpbSgkdHBsLT5mZXRjaCgpKTsKICAKICBpZigkdG1wKQogIHsKICAgICRwYWdlaWQgPSAkdGhpcy0+cmVzb2x2ZV9hbGlhc19vcl9pZCgkdG1wKTsKICAgIGlmKCRwYWdlaWQpCiAgICB7CiAgICAgICR0aGlzLT5SZWRpcmVjdENvbnRlbnQoJHBhZ2VpZCk7CiAgICB9CiAgfQp9CgokcGFybXMgPSBbJ21lc3NhZ2UnID0+ICR0aGlzLT5MYW5nKCdtc2dfc2V0dGluZ3NjaGFuZ2VkJyldOwokdGhpcy0+bXlSZWRpcmVjdCgnY250bnQwMScsICdsb2dvdXRmb3JtJywgJHJldHVybmlkLCAkcGFybXMpOwo=]]></data>
	</file>
	<file>
	  <filename>/action.forgotpw.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KCiR1c2VybmFtZSA9ICRlbWFpbCA9IG51bGw7CiRlcnJvciA9IG51bGw7CiRtZXNzYWdlID0gbnVsbDsKJHVzZXJuYW1lX2lzX2VtYWlsID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZXJuYW1lX2lzX2VtYWlsJywwKTsKJG5vY2FwdGNoYSA9IFx4dF9wYXJhbTo6Z2V0X2Jvb2woJHBhcmFtcywnbm9jYXB0Y2hhJyxGQUxTRSk7CiRyZXR1cm50byA9IFx4dF9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCdyZXR1cm50bycsJHJldHVybmlkKTsKCiR0aGV0ZW1wbGF0ZSA9IFxtYW1zX3V0aWxzOjpnZXRfdGVtcGxhdGUoJHBhcmFtcywnZm9yZ290cHd0ZW1wbGF0ZScsJ01BTVM6OmZvcmdvdCBwYXNzd29yZCBmb3JtJyk7CiR0cGwgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJHRoZXRlbXBsYXRlKTsKCmlmKCBpc3NldCgkcGFyYW1zWydtYW1zX2NhbmNlbCddKSApIHsKICAgICR0aGlzLT5SZWRpcmVjdENvbnRlbnQoJHJldHVybnRvKTsKfQplbHNlIGlmKCBpc3NldCgkcGFyYW1zWydtYW1zX3N1Ym1pdCddKSApIHsKICAgIHRyeSB7CiAgICAgICAgaWYoICFceHRfdXRpbHM6OnZhbGlkX2Zvcm1fY3NyZigpICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbiggJHRoaXMtPkxhbmcoJ2Vycm9yX3NlY3VyaXR5JykgKTsKCiAgICAgICAgLy8gbWFrZSBzdXJlIHdlIGhhdmUgYSB1c2VybmFtZQogICAgICAgICR1c2VybmFtZSA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdtYW1zX3VzZXJuYW1lJyk7CiAgICAgICAgaWYoICEkdXNlcm5hbWUgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpKTsKICAgICAgICBpZiggJHVzZXJuYW1lX2lzX2VtYWlsICYmICFpc19lbWFpbCgkdXNlcm5hbWUpICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkZW1haWxhZGRyZXNzJykpOwoKICAgICAgICAvLyB2YWxpZGF0ZSB0aGUgY2FwdGNoYQogICAgICAgIGlmKCAhJG5vY2FwdGNoYSApIHsKICAgICAgICAgICAgJGNhcHRjaGEgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdDYXB0Y2hhJyk7CiAgICAgICAgICAgIGlmKCBpc19vYmplY3QoJGNhcHRjaGEpICYmICEkY2FwdGNoYS0+Q2hlY2tDYXB0Y2hhKFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdtYW1zX2lucHV0X2NhcHRjaGEnKSkgKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2NhcHRjaGFtaXNtYXRjaCcpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gc2VlIGlmIHdlIGNhbiBmaW5kIHRoaXMgdXNlcgogICAgICAgICR1aWQgPSAkdGhpcy0+R2V0VXNlcklEKCR1c2VybmFtZSk7CiAgICAgICAgaWYoICEkdWlkICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl91c2Vybm90Zm91bmQnKSk7CiAgICAgICAgJHRtcCA9ICR0aGlzLT5HZXRVc2VySW5mbygkdWlkKTsKICAgICAgICBpZiggISR0bXAgfHwgISR0bXBbMF0gKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2NvdWxkbm90ZmluZGVtYWlsJykpOwogICAgICAgICR1c2VyX2luZm8gPSAkdG1wWzFdOwogICAgICAgIHVuc2V0KCR0bXApOwogICAgICAgIGlmKCAkdXNlcl9pbmZvWydkaXNhYmxlZCddICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9hY2NvdW50ZGlzYWJsZWQnKSk7CiAgICAgICAgaWYoIHRpbWUoKSA+IHN0cnRvdGltZSgkdXNlcl9pbmZvWydleHBpcmVzJ10pICkgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfYWNjb3VudGV4cGlyZWQnKSk7CiAgICAgICAgJGVtYWlsID0gJHVzZXJuYW1lOwogICAgICAgIGlmKCAhJHVzZXJuYW1lX2lzX2VtYWlsICkgewogICAgICAgICAgICAkZW1haWwgPSAkdGhpcy0+R2V0RW1haWwoJHVpZCk7CiAgICAgICAgICAgIGlmKCAhJGVtYWlsICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9jb3VsZG5vdGZpbmRlbWFpbCcpKTsKICAgICAgICB9CgogICAgICAgIC8vIHNlZSBpZiB3ZSBoYXZlIGEgdGVtcGNvZGUgZm9yIHRoaXMgdXNlciBhbHJlYWR5CiAgICAgICAgaWYoICEkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYWxsb3dfZHVwbGljYXRlX3JlbWluZGVycycpICYmICR0aGlzLT5HZXRVc2VyVGVtcENvZGUoJHVpZCkgKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfcmVzZXRhbHJlYWR5c2VudCcpKTsKICAgICAgICB9CgogICAgICAgIC8vCiAgICAgICAgLy8gd29vdC4uLiBhdCB0aGlzIHBvaW50IGl0IGFsbCB3b3JrZWQuCiAgICAgICAgLy8gcmVhZHkgdG8gZ2V0IGEgdGVtcCBjb2RlIGFuZCBzZW5kIGFuIGVtYWlsLgogICAgICAgIC8vCiAgICAgICAgJGNvZGUgPSBzdWJzdHIoc3RydG91cHBlcihtZDUoX19GSUxFX18uJHVzZXJuYW1lLm1pY3JvdGltZSgpKSksMCwyNSk7CiAgICAgICAgJHRoaXMtPlNldFVzZXJUZW1wQ29kZSggJHVpZCwgJGNvZGUgKTsKCiAgICAgICAgLy8gc2VuZCBvdXIgZnVua3kgZW1haWwKICAgICAgICAkZGVzdHBhZ2UgPSAkcmV0dXJuaWQ7CiAgICAgICAgJHRtcCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwYWdlaWRmb3Jnb3RwYXNzd2QnKTsKICAgICAgICBpZiggJHRtcCApICRkZXN0cGFnZSA9ICR0aGlzLT5yZXNvbHZlX2FsaWFzX29yX2lkKCR0bXApOwoKICAgICAgICAkdGhldGVtcGxhdGUgPSBcbWFtc191dGlsczo6Z2V0X3RlbXBsYXRlKCRwYXJhbXMsJ2ZvcmdvdHB3ZW1haWx0ZW1wbGF0ZScsJ01BTVM6OmZvcmdvdCBwYXNzd29yZCBlbWFpbCcpOwogICAgICAgICR0cGwyID0gJHRoaXMtPkNyZWF0ZVNtYXJ0eVRlbXBsYXRlKCR0aGV0ZW1wbGF0ZSk7CiAgICAgICAgJHRwbDItPmFzc2lnbigndGl0bGUnLCR0aGlzLT5MYW5nKCd0aXRsZV9mb3Jnb3Rwd2VtYWlsJykpOwogICAgICAgICR0cGwyLT5hc3NpZ24oJ21lc3NhZ2VfZm9yZ290cHdlbWFpbCcsJHRoaXMtPkxhbmcoJ21lc3NhZ2VfZm9yZ290cHdlbWFpbCcpKTsKICAgICAgICAkdHBsMi0+YXNzaWduKCdtZXNzYWdlX2ZvcmdvdHB3bWFpbCcsJHRoaXMtPkxhbmcoJ21lc3NhZ2VfZm9yZ290cHdlbWFpbCcpKTsKICAgICAgICAkdHBsMi0+YXNzaWduKCdtZXNzYWdlJywkdGhpcy0+TGFuZygnbWVzc2FnZV9mb3Jnb3Rwd2VtYWlsJykpOwogICAgICAgICR0cGwyLT5hc3NpZ24oJ3Byb21wdF9jb2RlJywkdGhpcy0+TGFuZygncHJvbXB0X2NvZGUnKSk7CiAgICAgICAgJHRwbDItPmFzc2lnbignZGF0YV9jb2RlJywkY29kZSk7CiAgICAgICAgJHRwbDItPmFzc2lnbigncHJvbXB0X2xpbmsnLCR0aGlzLT5MYW5nKCdwcm9tcHRfbGluaycpKTsKICAgICAgICAkcHJldHR5ID0gIm1hbXMvdmVyaWZ5Y29kZS8kZGVzdHBhZ2UvJHVpZC8kY29kZSI7CiAgICAgICAgJHBhcm1zID0gYXJyYXkoJ3VpZCc9PiR1aWQsJ2NvZGUnPT4kY29kZSk7CiAgICAgICAgJHRwbDItPmFzc2lnbignZGF0YV91cmwnLCR0aGlzLT5jcmVhdGVfdXJsKCdjbnRudDAnLCd2ZXJpZnljb2RlJywkZGVzdHBhZ2UsJHBhcm1zLGZhbHNlLGZhbHNlLCRwcmV0dHkpKTsKICAgICAgICAkYm9keSA9ICR0cGwyLT5mZXRjaCgpOwoKICAgICAgICAkY21zbWFpbGVyID0gbmV3IFxjbXNfbWFpbGVyKCk7CiAgICAgICAgJGNtc21haWxlci0+cmVzZXQoKTsKICAgICAgICAkY21zbWFpbGVyLT5BZGRBZGRyZXNzKCRlbWFpbCk7CiAgICAgICAgJGNtc21haWxlci0+U2V0Qm9keSgkYm9keSk7CiAgICAgICAgJGNtc21haWxlci0+U2V0U3ViamVjdCgkdGhpcy0+TGFuZygnbG9zdHBhc3N3b3JkX2VtYWlsc3ViamVjdCcpKTsKICAgICAgICAkY21zbWFpbGVyLT5Jc0hUTUwodHJ1ZSk7CiAgICAgICAgJGNtc21haWxlci0+U2V0UHJpb3JpdHkoMSk7CiAgICAgICAgJGNtc21haWxlci0+U2VuZCgpOwoKICAgICAgICAvLyBhdWRpdCBzb21ldGhpbmcKICAgICAgICBhdWRpdCgkdWlkLCR0aGlzLT5HZXROYW1lKCksJ1JlcXVlc3RlZCBhIHBhc3N3b3JkIHJlc2V0IGNvZGUnKTsKCiAgICAgICAgJHRoaXMtPmFkZF9oaXN0b3J5KCR1aWQsJ2ZvcmdvdHB3Jyk7CgogICAgICAgIC8vIGFuZCB3ZSdyZSBkb25lLCBkbyBhIHJlZGlyZWN0IGFmdGVyIHBvc3QKICAgICAgICAkdGhpcy0+U2hvd0Zvcm1hdHRlZE1lc3NhZ2UoJHRoaXMtPkxhbmcoJ2luZm9fZm9yZ290cHdtZXNzYWdlc2VudCcsJGVtYWlsKSxmYWxzZSwkdGhpcy0+TGFuZygndGl0bGVfZm9yZ290cHcnKSk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgJGVycm9yID0gMTsKICAgICAgICAkbWVzc2FnZSA9ICRlLT5HZXRNZXNzYWdlKCk7CiAgICB9Cn0KCi8vIGNyZWF0ZSBhbmQgZGlzcGxheSB0aGUgdGVtcGxhdGUuCiR0cGwtPmFzc2lnbignZXJyb3InLCRlcnJvcik7CiR0cGwtPmFzc2lnbignbWVzc2FnZScsJG1lc3NhZ2UpOwokdHBsLT5hc3NpZ24oJ3VzZXJuYW1lJywkdXNlcm5hbWUpOwokY2FwdGNoYSA9ICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgnQ2FwdGNoYScpOwppZiggaXNfb2JqZWN0KCRjYXB0Y2hhKSAmJiAhJG5vY2FwdGNoYSApIHsKICAgICR0cGwtPmFzc2lnbignY2FwdGNoYV90aXRsZScsJHRoaXMtPkxhbmcoJ2NhcHRjaGFfdGl0bGUnKSk7CiAgICAkdHBsLT5hc3NpZ24oJ2NhcHRjaGEnLCRjYXB0Y2hhLT5nZXRDYXB0Y2hhKCkpOwogICAgJHRlc3QgPSBtZXRob2RfZXhpc3RzKCRjYXB0Y2hhLCAnTmVlZHNJbnB1dEZpZWxkJykgPyAkY2FwdGNoYS0+TmVlZHNJbnB1dEZpZWxkKCkgOiB0cnVlOwogICAgaWYoICR0ZXN0ICkgJHRwbC0+YXNzaWduKCdpbnB1dF9jYXB0Y2hhJywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ21hbXNfaW5wdXRfY2FwdGNoYScsJycsMTApKTsKfQokcGFybXMgPSBhcnJheSgpOwokcGFybXNbJ25vY2FwdGNoYSddID0gJG5vY2FwdGNoYTsKJHBhcm1zWydyZXR1cm50byddID0gJHJldHVybnRvOwokdHBsLT5hc3NpZ24oJ3N0YXJ0Zm9ybScsJHRoaXMtPlhUQ3JlYXRlRm9ybVN0YXJ0KCAkaWQsICdmb3Jnb3RwdycsICRyZXR1cm5pZCwgJHBhcm1zICkpOwokdHBsLT5hc3NpZ24oJ2VuZGZvcm0nLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwokdHBsLT5hc3NpZ24oJ3VzZXJuYW1lX2lzX2VtYWlsJywkdXNlcm5hbWVfaXNfZW1haWwpOwokdHBsLT5hc3NpZ24oJ3VuZmxkbGVuJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlcm5hbWVmbGRsZW5ndGgnKSk7CiR0cGwtPmFzc2lnbignbWF4X3VuZmxkbGVuJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWF4X3VzZXJuYW1lbGVuZ3RoJykpOwokdHBsLT5kaXNwbGF5KCk7CgojCiMgRU9GCiMK]]></data>
	</file>
	<file>
	  <filename>/action.getfile.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFkZWZpbmVkKCdDTVNfVkVSU0lPTicpICkgeyBleGl0OyB9CmlmKCAoJHVpZCA9ICR0aGlzLT5Mb2dnZWRJbklkKCkpIDwgMSApIHRocm93IG5ldyBcQ21zRXJyb3I0MDNFeGNlcHRpb24oKTsKCi8vIGRvd25sb2FkIGFuIGltYWdlLi4uIG9yIGEgZmlsZSwgb3IgZHVtcCBhbiBpbWFnZSB0byBzdGRvdXQKLy8ganVzdCB3aXRoIG9iZnVzY2F0aW9uIHNvIHRoYXQgdGhlIGZpbGVuYW1lIGFuZCBwYXRoIGFyZSBub3Qgb2J2aW91cy4KLy8gYW5kIHdpdGggRkVVIHByb3RlY3Rpb24KJHBhcmFtcyA9IFx4dF91dGlsczo6ZGVjcnlwdF9wYXJhbXMoICRwYXJhbXMgKTsKJGZpbGUgPSBceHRfcGFyYW06OmdldF9zdHJpbmcoICRwYXJhbXMsICdmaWxlJyApOwokZGwgPSBceHRfcGFyYW06OmdldF9ib29sKCAkcGFyYW1zLCAnZG93bmxvYWQnICk7CiRncm91cHMgPSBceHRfcGFyYW06OmdldF9zdHJpbmcoICRwYXJhbXMsICdncm91cHMnICk7CiRub2NhY2hlID0gXHh0X3BhcmFtOjpnZXRfYm9vbCggJHBhcmFtcywgJ25vY2FjaGUnICk7CgppZiggJGdyb3VwcyApIHsKICAgIC8vIGNvbnZlcnQgcGVybWl0dGVkIGdyb3VwcyBpbnRvIGdpZHMuCiAgICAkZ3JvdXBzID0gZXhwbG9kZSgnLCcsJGdyb3Vwcyk7CiAgICAkYWxsX2dyb3VwcyA9ICR0aGlzLT5HZXRHcm91cExpc3QoKTsKICAgICRhbGxvd2VkX2dyb3VwcyA9IG51bGw7CiAgICBmb3JlYWNoKCAkZ3JvdXBzIGFzICRncm91cF9uYW1lICkgewogICAgICAgICRncm91cF9uYW1lID0gdHJpbSgkZ3JvdXBfbmFtZSk7CiAgICAgICAgaWYoICEkZ3JvdXBfbmFtZSApIGNvbnRpbnVlOwogICAgICAgIGlmKCBpc3NldCggJGFsbF9ncm91cHNbJGdyb3VwX25hbWVdKSApICRhbGxvd2VkX2dyb3VwcyA9ICRhbGxfZ3JvdXBzWyRncm91cF9uYW1lXTsKICAgIH0KCiAgICAvLyBzZWUgaWYgdGhlIGN1cnJlbnQgdXNlciBpcyBpbiBvbmUgb2YgdGhlc2UgZ3JvdXBzCiAgICBpZiggISAkdGhpcy0+TWVtYmVyT2ZHcm91cCggJHVpZCwgJGFsbG93ZWRfZ3JvdXBzICkgKSB0aHJvdyBuZXcgXENtc0Vycm9yNDAzRXhjZXB0aW9uKCk7Cn0KCmlmKCAkZmlsZSApIHsKICAgIGlmKCAhaXNfZmlsZSggJGZpbGUgKSApIHRocm93IG5ldyBcQ21zRXJyb3I0MDRFeGNlcHRpb24oKTsKCiAgICAkbWltZV90eXBlID0gXHh0X3V0aWxzOjpnZXRfbWltZV90eXBlKCAkZmlsZSApOwogICAgaWYoICEgc3RhcnRzd2l0aCggJG1pbWVfdHlwZSwgJ2ltYWdlLycpICkgJGRsID0gdHJ1ZTsKICAgIGlmKCAkZGwgKSBceHRfdXRpbHM6OnNlbmRfZmlsZV9hbmRfZXhpdCggJGZpbGUgKTsKCiAgICAvLyBpdHMgYW4gaW1hZ2UuCiAgICAvLyBzbyBqdXN0IHBhc3N0aHJvdWdoIHRoZSBpbWFnZQogICAgaWYoICRub2NhY2hlICkgewogICAgICAgIGhlYWRlcignQ2FjaGUtQ29udHJvbDogbXVzdC1yZXZhbGlkYXRlLCBwb3N0LWNoZWNrPTAsIHByZS1jaGVjaz0wJyk7CiAgICAgICAgaGVhZGVyKCdDYWNoZS1Db250cm9sOiBwcml2YXRlJyxmYWxzZSk7CiAgICB9CiAgICBoZWFkZXIoJ0NvbnRlbnQtdHlwZTogJy4kbWltZV90eXBlKTsKICAgIGhlYWRlcignQ29udGVudC1MZW5ndGg6ICcgLiBmaWxlc2l6ZSgkZmlsZSkpOwoKICAgICRjaHVua3NpemUgPSA2NTUzNTsKICAgICRoYW5kbGU9Zm9wZW4oJGZpbGUsJ3JiJyk7CiAgICAkY29udGVudHMgPSAnJzsKICAgIGRvIHsKICAgICAgICAkZGF0YSA9IGZyZWFkKCRoYW5kbGUsJGNodW5rc2l6ZSk7CiAgICAgICAgaWYoIHN0cmxlbigkZGF0YSkgPT0gMCApIGJyZWFrOwogICAgICAgIHByaW50KCRkYXRhKTsKICAgIH0gd2hpbGUodHJ1ZSk7CiAgICBmY2xvc2UoJGhhbmRsZSk7Cn0KZXhpdCgpOwo=]]></data>
	</file>
	<file>
	  <filename>/action.login.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQovKiogQHZhciBpbnQgJHJldHVybmlkIGluIHNjb3BlIGZyb20gZmlsZSBpbmNsdXNpb24gKi8KaWYoICFpc3NldCgkZ0NtcykgKSByZXR1cm47CgppZiggIWNsYXNzX2V4aXN0cygnTUFNU0xvZ2luRmFpbGVkZXhjZXB0aW9uJykgKSB7CiAgICBjbGFzcyBNQU1TTG9naW5GYWlsZWRFeGNlcHRpb24gZXh0ZW5kcyBcUnVudGltZUV4Y2VwdGlvbiB7fQp9CgoKJGNvbnN1bWVyID0gbWFtc191dGlsczo6Z2V0X2F1dGhfY29uc3VtZXIoKTsKCi8vIHRoaXMgaXMgdGhlIHN0YW5kYXJkIGxvZ2luLi4uIHNob3VsZCBhbGwgZ28gaW4gdGhlIG1hbXNfc3RkX2NvbnN1bWVyIGNsYXNzLgp0cnkKewogICRlcnJvciAgICAgID0gJHVzZXJuYW1lID0gJHBhc3N3b3JkID0gJHJlbWVtYmVybWUgPSBOVUxMOwogICRpbmxpbmUgICAgID0gXHh0X3BhcmFtOjpnZXRfYm9vbCgkcGFyYW1zLCAnaW5saW5lJyk7CiAgJG5vY2FwdGNoYSAgPSBceHRfcGFyYW06OmdldF9ib29sKCRwYXJhbXMsICdub2NhcHRjaGEnKTsKICAkcmV0dXJudG8gICA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCAncmV0dXJudG8nKTsKICAkb25seWdyb3VwcyA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCAnb25seV9ncm91cHMnKTsKCiAgICBpZiggaXNzZXQoJHBhcmFtc1snc3VibWl0J10pIHx8IGlzc2V0KCRwYXJhbXNbJ21hbXNfc3VibWl0J10pICkgewogICAgICAgICR1c2VybmFtZSA9ICRpcCA9IG51bGw7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgLy8gY2hlY2sgdGhlIENTUkYgc3R1ZmYuCiAgICAgICAgICAgIGlmKCAhXHh0X3V0aWxzOjp2YWxpZF9mb3JtX2NzcmYoKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbiggJHRoaXMtPkxhbmcoJ2Vycm9yX3NlY3VyaXR5JykgKTsKCiAgICAgICAgICAgIC8vIGNoZWNrIHRoZSBob25leXBvdAogICAgICAgICAgICBpZiggaXNzZXQoJHBhcmFtc1snbWFtc19fZGF0YSddKSApIHsKICAgICAgICAgICAgICAgICRob25leXBvdCA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdtYW1zX19kYXRhJyk7CiAgICAgICAgICAgICAgICBpZiggJGhvbmV5cG90ICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9zZWN1cml0eScpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gdGhpcyBpcyB0aGUgZ3V0cyBvZiB0aGUgbG9naW4gcHJvY2Vzcy4KICAgICAgICAgICAgJHVzZXJuYW1lID0gY21zX2h0bWxfZW50aXR5X2RlY29kZShceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnbWFtc19pbnB1dF91c2VybmFtZScpKTsKICAgICAgICAgICAgJHBhc3N3b3JkID0gY21zX2h0bWxfZW50aXR5X2RlY29kZShceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnbWFtc19pbnB1dF9wYXNzd29yZCcpKTsKICAgICAgICAgICAgJHJlbWVtYmVybWUgPSBceHRfcGFyYW06OmdldF9ib29sKCRwYXJhbXMsJ21hbXNfcmVtZW1iZXJtZScpOwoKICAgICAgICAgICAgLy8gY2hlY2sgdXNlcm5hbWUgJiBwYXNzd29yZAogICAgICAgICAgICBpZiggISR1c2VybmFtZSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfbWlzc2luZ3VzZXJuYW1lJykpOwogICAgICAgICAgICBpZiggISRwYXNzd29yZCApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfbWlzc2luZ3Bhc3N3b3JkJykpOwoKICAgICAgICAgICAgLy8gZG8gQmVmb3JlTG9naW4uLi4gdGhlc2UgcmVmZXJlbmNlcyBhcmUgcHJldHR5IGhhY2t5CiAgICAgICAgICAgICRpcCA9IFx4dF91dGlsczo6Z2V0X3JlYWxfaXAoKTsKICAgICAgICAgICAgJG9rID0gdHJ1ZTsKICAgICAgICAgICAgJG1zZyA9IG51bGw7CiAgICAgICAgICAgICRwYXJtcyA9IFsgJ3VzZXJuYW1lJz0+JHVzZXJuYW1lLCAnZ3JvdXBzJz0+JG9ubHlncm91cHMsICdpcCc9PiRpcCwgJ2FsbG93Jz0+JiRvaywgJ21lc3NhZ2UnPT4mJG1zZyBdOwogICAgICAgICAgICBcQ01TTVNcSG9va01hbmFnZXI6OmRvX2hvb2soJ01BTVM6OkJlZm9yZUxvZ2luJywgJHBhcm1zICk7CiAgICAgICAgICAgIGlmKCAhXGNtc190b19ib29sKCRvaykgKSB7IHRocm93IG5ldyBcTUFNU0xvZ2luRmFpbGVkRXhjZXB0aW9uKCRtc2cpOyB9IC8vIFdoeSBjaGVjayB0aGlzIGhlcmU/Pz8gSk0KCiAgICAgICAgICAgIC8vIGNoZWNrIHRoZSBjYXB0Y2hhCiAgICAgICAgICBpZighJG5vY2FwdGNoYSkKICAgICAgICAgIHsKICAgICAgICAgICAgJGNhcHRjaGEgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdDYXB0Y2hhJyk7CiAgICAgICAgICAgIGlmKGlzX29iamVjdCgkY2FwdGNoYSkgJiYgISRjYXB0Y2hhLT5DaGVja0NhcHRjaGEoXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsICdtYW1zX2lucHV0X2NhcHRjaGEnKSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICB0aHJvdyBuZXcgXE1BTVNMb2dpbkZhaWxlZEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfY2FwdGNoYW1pc21hdGNoJykpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CgogICAgICAgICAgICAvLyBjaGVjayBwYXNzd29yZCwgYnV0IGRvIG5vdCBsb2dpbgogICAgICAgICAgICAkdWlkID0gJHRoaXMtPkNoZWNrUGFzc3dvcmQoICR1c2VybmFtZSwgJHBhc3N3b3JkLCAkb25seWdyb3VwcyApOwogICAgICAgICAgICBpZiggJHVpZCA8IDEgKSB0aHJvdyBuZXcgXE1BTVNMb2dpbkZhaWxlZEV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfbG9naW5mYWlsZWQnKSk7CgogICAgICAgICAgICAvLyBsb2dpbiBwYXNzZWQuLi4gbm93IGRvIHRoZSBhZnRlcmxvZ2luYXV0aCBldmVudAogICAgICAgICAgICAvLyB0byBzZWUgaWYgYW55IG90aGVyIG1vZHVsZSBpcyBwcmV2ZW50aW5nIGxvZ2luLgogICAgICAgICAgICAvLyByZWZlcmVuY2VzIGFyZSBwcmV0dHkgaGFja3kuCiAgICAgICAgICAgICRvayA9IHRydWU7CiAgICAgICAgICAgICRtc2cgPSBudWxsOwogICAgICAgICAgICAkcGFybXMgPSBbICdpZCc9PiR1aWQsICd1c2VybmFtZSc9PiR1c2VybmFtZSwgJ2dyb3Vwcyc9PiRvbmx5Z3JvdXBzLCAnaXAnPT4kaXAsICdhbGxvdyc9PiYkb2ssICdtZXNzYWdlJz0+JiRtc2cgXTsKICAgICAgICAgICAgXENNU01TXEhvb2tNYW5hZ2VyOjpkb19ob29rKCdNQU1TOjpBZnRlckxvZ2luQXV0aCcsICRwYXJtcyApOwogICAgICAgICAgICBpZiggIVxjbXNfdG9fYm9vbCgkb2spICkgdGhyb3cgbmV3IFxNQU1TTG9naW5GYWlsZWRFeGNlcHRpb24oJG1zZyk7CgogICAgICAgICAgICAvLyBnZXQgdWlkIGFuZCB1c2VyaW5mbwogICAgICAgICAgICAkcmVzID0gJHRoaXMtPkdldFVzZXJJbmZvKCR1aWQpOwogICAgICAgICAgICBpZiggISRyZXNbMF0gKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX3VzZXJub3Rmb3VuZCcpKTsgLy8gc2hvdWxkIG5ldmVyIGV2ZXIgaGFwcGVuLgogICAgICAgICAgICAkdXNlcl9pbmZvID0gJHJlc1sxXTsKCiAgICAgICAgICAgIGlmKCAhZW1wdHkoJHVzZXJfaW5mb1snbXVzdF92YWxpZGF0ZSddKSAmJiAkdXNlcl9pbmZvWydtdXN0X3ZhbGlkYXRlJ10gKSB7CiAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCB0byB0aGUgdmVyaWZ5b25seSBhY3Rpb24uLi4KICAgICAgICAgICAgICAgIC8vIHN0b3JlIHVzZXJuYW1lIC8gcGFzc3dvcmQgLyBncm91cHMKICAgICAgICAgICAgICAgICR0ZW1wY29kZSA9ICR0aGlzLT5HZXRVc2VyVGVtcENvZGUoICR1aWQgKTsKICAgICAgICAgICAgICAgIGlmKCAkdGVtcGNvZGUgKSB7CiAgICAgICAgICAgICAgICAgICAgXG1hbXNfdXRpbHM6OnNhdmVfdGVtcF9sb2dpbmRhdGEoICR1c2VybmFtZSwgJHBhc3N3b3JkLCAkb25seWdyb3VwcyApOwogICAgICAgICAgICAgICAgICAgICRhc3Npc3RhbnQgPSAkdGhpcy0+Z2V0X3ZlcmlmaWNhdGlvbl9hc3Npc3RhbnQoKTsKICAgICAgICAgICAgICAgICAgICAkdXJsID0gJGFzc2lzdGFudC0+Z2V0X3ZlcmlmeV9mb3JtX3VybCggJHVpZCApOwogICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0KCR1cmwpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBhY3R1YWxseSBsb2cgdGhlIHVzZXIgaW4uCiAgICAgICAgICAgICRyZXMgPSAkdGhpcy0+TG9naW4oICR1c2VybmFtZSwgJHBhc3N3b3JkLCAkb25seWdyb3Vwcyk7CiAgICAgICAgICAgIGlmKCAhJHJlc1swXSApIHRocm93IG5ldyBcTUFNU0xvZ2luRmFpbGVkRXhjZXB0aW9uKCRyZXNbMV0pOwogICAgICAgICAgICAkdWlkID0gJHJlc1swXTsKCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIC8vIHdlJ3JlIGxvZ2dlZCBpbgogICAgICAgICAgICAvLwoKICAgICAgICAgICAgaWYoICR1c2VyX2luZm9bJ211c3RfdmFsaWRhdGUnXSApIHsKICAgICAgICAgICAgICAgIC8vIGZvcmNlIHRoZSB1c2VyIHRvIHZhbGlkYXRlIHRoZW1zZWx2ZXMuCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoICR1c2VyX2luZm9bJ2ZvcmNlX2Noc2V0dGluZ3MnXSApIHsKICAgICAgICAgICAgICAgIC8vIGZvcmNlIHVzZXIgdG8gY2hhbmdlIHNldHRpbmdzLgogICAgICAgICAgICAgICAgJGNzcGFnZSA9ICRyZXR1cm5pZDsKICAgICAgICAgICAgICAgIGlmKCAoJHRtcCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwYWdlaWRfY2hhbmdlc2V0dGluZ3MnKSkgKSB7ICAvLyB0ZXN0IG1lCiAgICAgICAgICAgICAgICAgICAgJHRwbDIgPSAkc21hcnR5LT5DcmVhdGVUZW1wbGF0ZSgnc3RyaW5nOicuJHRtcCk7CiAgICAgICAgICAgICAgICAgICAgJGdyb3VwcyA9ICR0aGlzLT5HZXRNZW1iZXJHcm91cHNBcnJheSggJHVpZCApOwogICAgICAgICAgICAgICAgICAgICRncm91cG5hbWUgPSAkdGhpcy0+R2V0R3JvdXBOYW1lKCAkZ3JvdXBzWzBdWydncm91cGlkJ10gKTsKICAgICAgICAgICAgICAgICAgICAkdHBsMi0+YXNzaWduKCd1c2VybmFtZScsJHVzZXJuYW1lKTsKICAgICAgICAgICAgICAgICAgICAkdHBsMi0+YXNzaWduKCdncm91cCcsJGdyb3VwbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgJHRtcCA9ICR0cGwyLT5mZXRjaCgpOwogICAgICAgICAgICAgICAgICAgIGlmKCAkdG1wICkgJGNzcGFnZSA9ICR0aGlzLT5yZXNvbHZlX2FsaWFzX29yX2lkKCR0bXAsJHJldHVybmlkKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRwYXJtcyA9IGFycmF5KCd1aWQnPT4kdWlkKTsKICAgICAgICAgICAgICAgIGlmKCAkcmV0dXJudG8gKSAkcGFybXNbJ3JldHVybnRvJ10gPSAkcmV0dXJudG87CiAgICAgICAgICAgICAgICAkdGhpcy0+UmVkaXJlY3RGb3JGcm9udGVuZCgkaWQsJGNzcGFnZSwnY2hhbmdlc2V0dGluZ3MnLCRwYXJtcyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoICR1c2VyX2luZm9bJ2ZvcmNlX25ld3B3J10gKSB7CiAgICAgICAgICAgICAgICAvLyB1c2VyIGNhbm5vdCBiZSByZW1lbWJlcmVkIGlmIGZvcmNlIHBhc3N3b3JkIHJlc2V0IChmb3Igc2VjdXJpdHkpCiAgICAgICAgICAgICAgICAkcGFybXMgPSBhcnJheSgndWlkJz0+JHVpZCk7CiAgICAgICAgICAgICAgICBpZiggJHJldHVybnRvICkgJHBhcm1zWydyZXR1cm50byddID0gJHJldHVybnRvOwogICAgICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0Rm9yRnJvbnRlbmQoJGlkLCRyZXR1cm5pZCwndXNlcl9mb3JjZW5ld3B3JywkcGFybXMpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiggJHJlbWVtYmVybWUgKSAkdGhpcy0+U2V0UGVybWFuZW50Q29va2llKCR1aWQpOwoKICAgICAgICAgICAgLy8gcmVkaXJlY3Qgc29tZXdoZXJlID8KICAgICAgICAgICAgaWYoICRyZXR1cm50byApIHsKICAgICAgICAgICAgICAgIC8vIGEgcGFnZSBpZCBvciBhbGlhcwogICAgICAgICAgICAgICAgJHBhZ2VpZCA9ICR0aGlzLT5yZXNvbHZlX2FsaWFzX29yX2lkKCRyZXR1cm50byk7CiAgICAgICAgICAgICAgICBpZiggJHBhZ2VpZCApICR0aGlzLT5SZWRpcmVjdENvbnRlbnQoJHBhZ2VpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoICgkdXJsID0gJHRoaXMtPkdldFBvc3RMb2dpblVSTCgpICkgKSB7CiAgICAgICAgICAgICAgICAvLyB0aGlzIG92ZXJyaWRlcyB0aGUgcHJlZmVyZW5jZSwgYnV0IG5vdCByZXR1cm50by4KICAgICAgICAgICAgICAgIHJlZGlyZWN0KCR1cmwpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYoICgkdHBsc3RyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BhZ2VpZF9sb2dpbicpKSApIHsKICAgICAgICAgICAgICAgICR0cGwgPSAkc21hcnR5LT5DcmVhdGVUZW1wbGF0ZSgnc3RyaW5nOicuJHRwbHN0cik7CiAgICAgICAgICAgICAgICAkZ3JvdXBzID0gJHRoaXMtPkdldE1lbWJlckdyb3Vwc0FycmF5KCAkdWlkICk7CiAgICAgICAgICAgICAgICAkZ3JvdXBuYW1lID0gJHRoaXMtPkdldEdyb3VwTmFtZSggJGdyb3Vwc1swXVsnZ3JvdXBpZCddICk7CiAgICAgICAgICAgICAgICAkdHBsLT5hc3NpZ24oJ3VzZXJuYW1lJywkdXNlcm5hbWUpOwogICAgICAgICAgICAgICAgJHRwbC0+YXNzaWduKCdncm91cCcsJGdyb3VwbmFtZSk7CiAgICAgICAgICAgICAgICAkdG1wID0gdHJpbSgkdHBsLT5mZXRjaCgpKTsKICAgICAgICAgICAgICAgIGlmKCAkdG1wICkgewogICAgICAgICAgICAgICAgICAgICRwYWdlaWQgPSAkdGhpcy0+cmVzb2x2ZV9hbGlhc19vcl9pZCgkdG1wKTsKICAgICAgICAgICAgICAgICAgICBpZiggJHBhZ2VpZCApICR0aGlzLT5SZWRpcmVjdENvbnRlbnQoJHBhZ2VpZCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gYWxsIGVsc2UgZmFpbHMsIHJlZGlyZWN0IGJhY2sgdG8gb3VyIGN1cnJlbiBwYWdlLgogICAgICAgICAgICAkdGhpcy0+UmVkaXJlY3RDb250ZW50KCAkcmV0dXJuaWQgKTsKICAgICAgICB9CiAgICAgICAgY2F0Y2goIFxNQU1TTG9naW5GYWlsZWRFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgICRlcnJvciA9ICRlLT5HZXRNZXNzYWdlKCk7CiAgICAgICAgICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ0xvZ2luIGZhaWxlZCBmb3IgdXNlciAnLiR1c2VybmFtZSk7CiAgICAgICAgICAgIFxDTVNNU1xIb29rTWFuYWdlcjo6ZG9faG9vaygnTUFNUzo6T25Mb2dpbkZhaWxlZCcsIFsgJ3VzZXJuYW1lJyA9PiAkdXNlcm5hbWUsICdpcCc9PiRpcCwgJ21zZycgPT4gJGVycm9yIF0gKTsKICAgICAgICB9CiAgICAgICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgICRlcnJvciA9ICRlLT5HZXRNZXNzYWdlKCk7CiAgICAgICAgfQogICAgfQoKICAgIC8vIGJ1aWxkIHRoZSBmb3JtCiAgICAkY29udGVudCA9IFxjbXNfdXRpbHM6OmdldF9jdXJyZW50X2NvbnRlbnQoKTsKICAgIGlmKCBnZXRfY2xhc3MoJGNvbnRlbnQpID09ICdFcnJvclBhZ2UnICkgewogICAgICAgIC8vIHdlJ3JlIGJlaW5nIGNhbGxlZCBmcm9tIGFuIGVycm9yIHBhZ2UuLi4gc28gd2hlbiB3ZSdyZSBkb25lIHdlIHdhbnQgdG8gcmVkaXJlY3QgYmFjayB0byB0aGUKICAgICAgICAvLyByZXF1ZXN0ZWQgcGFnZSwgaWYgZW5hYmxlZC4KICAgICAgICAkdGhpcy0+U2V0UG9zdExvZ2luVVJMKCRfU0VSVkVSWydSRVFVRVNUX1VSSSddKTsKICAgIH0KCiAgICAkdGhldGVtcGxhdGUgPSBcbWFtc191dGlsczo6Z2V0X3RlbXBsYXRlKCRwYXJhbXMsJ2xvZ2ludGVtcGxhdGUnLCdNQU1TOjpsb2dpbiBmb3JtJyk7CiAgICAkdHBsID0gJHRoaXMtPkNyZWF0ZVNtYXJ0eVRlbXBsYXRlKCR0aGV0ZW1wbGF0ZSk7CiAgICAkcGFybXMgPSBhcnJheSgpOwogICAgJHBhcm1zWydpbmxpbmUnXSA9ICRpbmxpbmU7CiAgICAkcGFybXNbJ25vY2FwdGNoYSddID0gJG5vY2FwdGNoYTsKICAgICRwYXJtc1sncmV0dXJudG8nXSA9ICRyZXR1cm50bzsKICAgICRwYXJtc1snb25seV9ncm91cHMnXSA9ICRvbmx5Z3JvdXBzOwogICAgJHRwbC0+YXNzaWduKCdzdGFydGZvcm0nLCAkdGhpcy0+WFRDcmVhdGVGb3JtU3RhcnQoICRpZCwgJ2xvZ2luJywgJHJldHVybmlkLCAkcGFybXMsICRpbmxpbmUgKSk7CiAgICAkdHBsLT5hc3NpZ24oJ2VuZGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCiAgICAkY2FwdGNoYSA9ICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgnQ2FwdGNoYScpOwogICAgaWYoIGlzX29iamVjdCgkY2FwdGNoYSkgJiYgISRub2NhcHRjaGEgKSB7CiAgICAgICAgJHRlc3QgPSBtZXRob2RfZXhpc3RzKCRjYXB0Y2hhLCAnTmVlZHNJbnB1dEZpZWxkJykgPyAkY2FwdGNoYS0+TmVlZHNJbnB1dEZpZWxkKCkgOiB0cnVlOwogICAgICAgICR0cGwtPmFzc2lnbignY2FwdGNoYV90aXRsZScsICR0aGlzLT5MYW5nKCdjYXB0Y2hhX3RpdGxlJykpOwogICAgICAgICR0cGwtPmFzc2lnbignY2FwdGNoYScsICRjYXB0Y2hhLT5nZXRDYXB0Y2hhKCkpOwogICAgICAgICR0cGwtPmFzc2lnbignbmVlZF9jYXB0Y2hhX2lucHV0JywkdGVzdCk7CiAgICB9CgogICAgJHRwbC0+YXNzaWduKCdlcnJvcicsJGVycm9yKTsKICAgICR0cGwtPmFzc2lnbigndXNlcm5hbWVfaXNfZW1haWwnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1c2VybmFtZV9pc19lbWFpbCcpKTsKICAgICR0cGwtPmFzc2lnbignZmxkbmFtZV91c2VybmFtZScsJGlkLidtYW1zX2lucHV0X3VzZXJuYW1lJyk7CiAgICAkdHBsLT5hc3NpZ24oJ3Byb21wdF91c2VybmFtZScsJGNvbnN1bWVyLT5nZXRfdXNlcm5hbWVfcHJvbXB0KCkpOwogICAgJHRwbC0+YXNzaWduKCd1c2VybmFtZV9tYXhsZW5ndGgnLCR0aGlzLT5YVEdldFByZWZlcmVuY2UoJ21heF91c2VybmFtZWxlbmd0aCcsMjApKTsKICAgICR0cGwtPmFzc2lnbigncGFzc3dvcmRfbWF4bGVuZ3RoJywkdGhpcy0+WFRHZXRQcmVmZXJlbmNlKCdtYXhfcGFzc3dvcmRsZW5ndGgnLDIwKSk7CiAgICAkdHBsLT5hc3NpZ24oJ3VzZXJuYW1lX3NpemUnLG1heCgzLChpbnQpJHRoaXMtPlhUR2V0UHJlZmVyZW5jZSgndXNlcm5hbWVmbGRsZW5ndGgnLDEwKSkpOwogICAgJHRwbC0+YXNzaWduKCdwYXNzd29yZF9zaXplJyxtYXgoMywkdGhpcy0+WFRHZXRQcmVmZXJlbmNlKCdwYXNzd29yZGZsZGxlbmd0aCcsMTApKSk7CiAgICAkdHBsLT5hc3NpZ24oJ3VzZXJuYW1lJywkdXNlcm5hbWUpOwogICAgJHRwbC0+YXNzaWduKCdwYXNzd29yZCcsJHBhc3N3b3JkKTsKICAgICR0cGwtPmFzc2lnbigncmVtZW1iZXJtZScsJHJlbWVtYmVybWUpOwogICAgJHRwbC0+YXNzaWduKCdmbGRuYW1lX3Bhc3N3b3JkJywkaWQuJ21hbXNfaW5wdXRfcGFzc3dvcmQnKTsKICAgICR0cGwtPmFzc2lnbigncHJvbXB0X3Bhc3N3b3JkJywgJHRoaXMtPkxhbmcoJ3Byb21wdF9wYXNzd29yZCcpKTsKICAgIGlmKCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY29va2llbmFtZScpICkgewogICAgICAgICR0cGwtPmFzc2lnbigncHJvbXB0X3JlbWVtYmVybWUnLCR0aGlzLT5MYW5nKCdwcm9tcHRfcmVtZW1iZXJtZScpKTsgLy8gY2FuIGdldCByaWQgb2YgdGhpcyB0b28KICAgICAgICAkdHBsLT5hc3NpZ24oJ2ZsZG5hbWVfcmVtZW1iZXJtZScsJGlkLidtYW1zX3JlbWVtYmVybWUnKTsKICAgIH0KCiAgICAkcGlkID0gJHJldHVybmlkOwogICAgaWYoICgkdG1wID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BhZ2VpZGZvcmdvdHBhc3N3ZCcpKSApIHsKICAgICAgICAkdG1wID0gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwYWdlaWRmb3Jnb3RwYXNzd2QnKSk7CiAgICAgICAgaWYoICR0bXAgKSAkcGlkID0gJHRoaXMtPnJlc29sdmVfYWxpYXNfb3JfaWQoJHRtcCwkcmV0dXJuaWQpOwogICAgfQogICAgaWYoICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzdXBwb3J0X2xvc3RwdycsMSkgKSAkdHBsLT5hc3NpZ24oJ3VybF9mb3Jnb3QnLCR0aGlzLT5jcmVhdGVfdXJsKCRpZCwnZm9yZ290cHcnLCRwaWQpKTsKICAgIGlmKCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc3VwcG9ydF9sb3N0dW4nLDEpICkgJHRwbC0+YXNzaWduKCd1cmxfbG9zdHVuJywkdGhpcy0+Y3JlYXRlX3VybCgkaWQsJ2xvc3R1c2VybmFtZScsJHBpZCkpOwoKICAgIGlmKCAkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRjb25zdW1lcjo6Q0FQQUJJTElUWV9BTFRMT0dJTikgKSAkdHBsLT5hc3NpZ24oJ2FsdF9sb2dpbmZvcm0nLCRjb25zdW1lci0+Z2V0X2xvZ2luX2Rpc3BsYXkoJGlkLCRyZXR1cm5pZCwkcGFyYW1zKSk7CiAgICAkdHBsLT5kaXNwbGF5KCk7Cn0KY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAvLyBmYXRhbCBleGNlcHRpb25zIHdlIGNhbiBkbyBub3RoaW5nIHdpdGhvdXQuCiAgICB4dF91dGlsczo6bG9nX2V4Y2VwdGlvbigkZSk7CiAgICBlY2hvICR0aGlzLT5EaXNwbGF5RXJyb3JNZXNzYWdlKCRlLT5HZXRNZXNzYWdlKCkpOwp9Ci8vIEVPRgo=]]></data>
	</file>
	<file>
	  <filename>/action.logout.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KCiR1aWQgPSAkdGhpcy0+TG9nZ2VkSW5JZCgpOwppZiggJHVpZCA8IDEgKSByZXR1cm47CiR1c2VybmFtZSA9ICR0aGlzLT5Mb2dnZWRJbk5hbWUoKTsKJHRoaXMtPkxvZ291dCgpOwoKYXVkaXQoICcnLCAkdGhpcy0+R2V0TmFtZSgpLCAiJHVzZXJuYW1lIGxvZ2dlZCBvdXQiKTsKCiRwYXJtcyA9IFtdOwokcGFybXNbJ3VzZXJuYW1lJ10gPSAkdXNlcm5hbWU7CiRwYXJtc1snaWQnXSA9ICR1aWQ7CgovLyB3ZSdyZSBsb2dnZWQgb3V0Ci8vIHJlZGlyZWN0IHNvbWV3aGVyZQppZiggKCRyZXR1cm50byA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdyZXR1cm50bycpKSApIHsKICAgICRwYWdlaWQgPSAkdGhpcy0+cmVzb2x2ZV9hbGlhc19vcl9pZCgkcmV0dXJudG8pOwogICAgaWYoICRwYWdlaWQgKSAkdGhpcy0+UmVkaXJlY3RDb250ZW50KCRwYWdlaWQpOwp9CmlmKCAoJHVybCA9ICR0aGlzLT5HZXRQb3N0TG9naW5VUkwoKSkgKSB7CiAgICByZWRpcmVjdCgkdXJsKTsKfQplbHNlIGlmKCAoJHRwbHN0ciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwYWdlaWRfbG9nb3V0JykpICkgewogICAgJHRwbCA9ICRzbWFydHktPkNyZWF0ZVRlbXBsYXRlKCdzdHJpbmc6Jy4kdHBsc3RyKTsKICAgICRncm91cHMgPSAkdGhpcy0+R2V0TWVtYmVyR3JvdXBzQXJyYXkoICR1aWQgKTsKICAgICRncm91cG5hbWUgPSAkdGhpcy0+R2V0R3JvdXBOYW1lKCAkZ3JvdXBzWzBdWydncm91cGlkJ10gKTsKICAgICR0cGwtPmFzc2lnbigndXNlcm5hbWUnLCR1c2VybmFtZSk7CiAgICAkdHBsLT5hc3NpZ24oJ2dyb3VwJywkZ3JvdXBuYW1lKTsKICAgICR0bXAgPSAkdHBsLT5mZXRjaCgpOwogICAgaWYoICR0bXAgKSB7CiAgICAgICAgJHBhZ2VpZCA9ICR0aGlzLT5yZXNvbHZlX2FsaWFzX29yX2lkKCR0bXApOwogICAgICAgIGlmKCAkcGFnZWlkICkgJHRoaXMtPlJlZGlyZWN0Q29udGVudCgkcGFnZWlkKTsKICAgIH0KfQovLyBhbGwgZWxzZSBmYWlscywgcmVkaXJlY3QgYmFjayB0byBvdXIgY3VycmVuIHBhZ2UuCiR0aGlzLT5SZWRpcmVjdENvbnRlbnQoJHJldHVybmlkKTsK]]></data>
	</file>
	<file>
	  <filename>/action.logoutform.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KJGNvbnN1bWVyID0gbWFtc191dGlsczo6Z2V0X2F1dGhfY29uc3VtZXIoKTsKaWYoICRjb25zdW1lci0+aGFzX2NhcGFiaWxpdHkobWFtc19hdXRoX2NvbnN1bWVyOjpDQVBBQklMSVRZX0xPR09VVCkgKSB7CiAgLy8gdGhlIGNvbnN1bWVyIHByb3ZpZGVzIHRoZSBsb2dpbiBjYXBhYmlsaXRpZXMKICBlY2hvICRjb25zdW1lci0+Z2V0X2xvZ291dF9kaXNwbGF5KCRpZCwkcmV0dXJuaWQsJHBhcmFtcyk7CiAgcmV0dXJuOwp9Cgp0cnkgewovLyBkbyB0aGUgZGVmYXVsdAogICAgJHVpZCA9ICR0aGlzLT5Mb2dnZWRJbklkKCk7CiAgICBpZiggISR1aWQgKSByZXR1cm47IC8vIG5vdGhpbmcgdG8gZG8sIHVzZXIgaXMgbm90IGxvZ2dlZCBpbi4KCiAgICAkcmV0dXJudG8gPSBceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywncmV0dXJudG8nKTsgLy8gdGVzdCBtZS4KICAgICR1c2VybmFtZSA9ICR0aGlzLT5Mb2dnZWRJbk5hbWUoKTsKICAgICR0aGV0ZW1wbGF0ZSA9IFxtYW1zX3V0aWxzOjpnZXRfdGVtcGxhdGUoJHBhcmFtcywnbG9nb3V0dGVtcGxhdGUnLCdNQU1TOjpsb2dvdXQgZm9ybScpOwogICAgJHRwbCA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgkdGhldGVtcGxhdGUpOwogICAgLy8gcmVwbGFjZSB7JGdyb3VwbmFtZX0gd2l0aCB0aGUgZmlyc3QgZ3JvdXBuYW1lIHdlIGNhbiBmaW5kIHRoYXQgbWF0Y2hlcwogICAgJGdyb3VwcyA9ICR0aGlzLT5HZXRNZW1iZXJHcm91cHNBcnJheSggJHVpZCApOwogICAgJGdyb3VwbmFtZSA9ICR0aGlzLT5HZXRHcm91cE5hbWUoICRncm91cHNbMF1bJ2dyb3VwaWQnXSApOwogICAgJHRwbC0+YXNzaWduKCdwcm9tcHRfbG9nZ2VkaW4nLCAkdGhpcy0+TGFuZygnbXNnX2N1cnJlbnRseWxvZ2dlZGluYXMnKSk7IC8vIGNhbiBnZXQgcmlkIG9mIHRoaXMuCiAgICAkdHBsLT5hc3NpZ24oJ3VzZXJpZCcsICR1aWQpOwogICAgJHRwbC0+YXNzaWduKCd1c2VybmFtZScsICR1c2VybmFtZSk7CiAgICAkbXNnID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ21lc3NhZ2UnKTsKICAgIGlmKCAkbXNnICkgJHRwbC0+YXNzaWduKCdtZXNzYWdlJywkbXNnKTsKCiAgICAvLyBzdGFydCB1Z2x5CiAgICAvLyB0b2RvOiBuZWVkIHNvbWUgbWVjaGFuaXNtIHRvIHRlbGwgJ3doaWNoJyBhdXRoZW50aWNhdGlvbiB3YXMgdXNlZCwgaWYgYWx0IGF1dGhlbnRpY2F0aW9uIGlzIHN1cHBvcnRlZC4KICAgICRsb2dnZWRpbl91c2luZ19zdGQgPSBGQUxTRTsKICAgICRtYW5pcCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpOwogICAgaWYoICRtYW5pcC0+X3N0ZF9Mb2dnZWRJbklkKCkgKSAkbG9nZ2VkaW5fdXNpbmdfc3RkID0gVFJVRTsKICAgIC8vIGVuZCB1Z2x5CgogICAgJHBhcm1zID0gYXJyYXkoKTsKICAgIGlmKCAkcmV0dXJudG8gKSAkcGFybXNbJ3JldHVybnRvJ10gPSAkcmV0dXJudG87CiAgICAkdXJsID0gJHRoaXMtPmNyZWF0ZV91cmwoJGlkLCdsb2dvdXQnLCRyZXR1cm5pZCwkcGFybXMpOwogICAgJHRwbC0+YXNzaWduKCd1cmxfbG9nb3V0JywkdXJsKTsKCiAgICAvLyByZXBsYWNlIHskZ3JvdXBuYW1lfSB3aXRoIHRoZSBmaXJzdCBncm91cG5hbWUgd2UgY2FuIGZpbmQgdGhhdCBtYXRjaGVzCiAgICAkY3NwYWdlID0gJHJldHVybmlkOwogICAgaWYoICgkdG1wID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BhZ2VpZF9jaGFuZ2VzZXR0aW5ncycpKSApIHsgIC8vIHRlc3QgbWUKICAgICAgICAkdHBsMiA9ICRzbWFydHktPkNyZWF0ZVRlbXBsYXRlKCdzdHJpbmc6Jy4kdG1wKTsKICAgICAgICAkdG1wID0gJHRwbDItPmZldGNoKCk7CiAgICAgICAgaWYoICR0bXAgKSAkY3NwYWdlID0gJHRoaXMtPnJlc29sdmVfYWxpYXNfb3JfaWQoJHRtcCwkcmV0dXJuaWQpOwogICAgfQogICAgJHBhcm1zID0gYXJyYXkoJ2Zvcm0nPT4nY2hhbmdlc2V0dGluZ3MnKTsKICAgIGlmKCAkcmV0dXJudG8gKSAkcGFybXNbJ3JldHVybnRvJ10gPSAkcmV0dXJudG87CiAgICAkdXJsID0gJHRoaXMtPmNyZWF0ZV91cmwoJGlkLCdkZWZhdWx0JywkY3NwYWdlLCRwYXJtcyk7CiAgICAkdHBsLT5hc3NpZ24oJ3VybF9jaGFuZ2VzZXR0aW5ncycsJHVybCk7CiAgICAkcHJvcHMgPSAkdGhpcy0+R2V0VXNlclByb3BlcnRpZXMoICR0aGlzLT5Mb2dnZWRJbklkKCkgKTsKICAgIGlmKCAkcHJvcHMgIT09IGZhbHNlICkgewogICAgICAgIGZvcmVhY2goICRwcm9wcyBhcyAkcCApIHsKICAgICAgICAgICAgJHRwbC0+YXNzaWduKCRwWyd0aXRsZSddLCRwWydkYXRhJ10pOwogICAgICAgIH0KICAgIH0KCiAgICBpZiggJGNvbnN1bWVyLT5oYXNfY2FwYWJpbGl0eSgkY29uc3VtZXI6OkNBUEFCSUxJVFlfQUxUTE9HSU4pICkgewogICAgICAgIC8vIHRoZSBjb25zdW1lciBoYXMgYWx0ZXJuYXRlIGxvZ2luIGNhcGFiaWxpdGllcy4uLi4KICAgICAgICAkcmVzID0gJGNvbnN1bWVyLT5nZXRfbG9nb3V0X2Rpc3BsYXkoJGlkLCRyZXR1cm5pZCwkcGFyYW1zKTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ2FsdF9sb2dvdXRmb3JtJywkcmVzKTsKICAgIH0KCiAgICAkdHBsLT5kaXNwbGF5KCk7Cn0KY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAvLyBmYXRhbCBlcnJvciB3ZSBjYW5ub3Qgd29yayBhcm91bmQuCiAgICBlY2hvICR0aGlzLT5EaXNwbGF5RXJyb3JNZXNzYWdlKCRlLT5HZXRNZXNzYWdlKCkpOwp9CgojCiMgRU9GCiM=]]></data>
	</file>
	<file>
	  <filename>/action.lostusername.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KCnRyeSB7CiAgICBpZiggISR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzdXBwb3J0X2xvc3R1bicpICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignU29ycnksIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBkaXNhYmxlZCcpOwogICAgJG1lc3NhZ2UgPSBudWxsOwogICAgJHVzZXJuYW1lX2lzX2VtYWlsID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZXJuYW1lX2lzX2VtYWlsJyk7CiAgICAkbm9jYXB0Y2hhID0gXHh0X3BhcmFtOjpnZXRfYm9vbCgkcGFyYW1zLCdub2NhcHRjaGEnKTsKICAgICR0aGV0ZW1wbGF0ZSA9IFxtYW1zX3V0aWxzOjpnZXRfdGVtcGxhdGUoJHBhcmFtcywnbG9zdHVudGVtcGxhdGUnLCdNQU1TOjpsb3N0IHVzZXJuYW1lIGZvcm0nKTsKICAgICRyZXR1cm50byA9IFx4dF9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCdyZXR1cm50bycsJHJldHVybmlkKTsKCiAgICAkZ2lkID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ21hbXNfZ2lkJywtMSk7CiAgICAkZ2lkID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ2xvc3R1bl9ncm91cCcsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlZmF1bHRfZ3JvdXAnLCRnaWQpKTsKICAgIGlmKCAhaXNfbnVtZXJpYygkZ2lkKSApIHsKICAgICAgICAkZ2lkID0gJHRoaXMtPkdldEdyb3VwSUQoICRnaWQgKTsKICAgICAgICBpZiggJGdpZCA8IDEgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2dyb3Vwbm90Zm91bmQnKSk7CiAgICB9CiAgICBpZiggJGdpZCA8PSAwICkgewogICAgICAgIC8vIG5vIGdpZCBzcGVjaWZpZWQgb3IgZm91bmQsICBnZXQgdGhlIGdpZCBvZiB0aGUgZmlyc3QgZ3JvdXAuCiAgICAgICAgJGdyb3VwcyA9ICR0aGlzLT5HZXRHcm91cExpc3QoKTsKICAgICAgICBpZiggIWNvdW50KCRncm91cHMpICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdub2dyb3VwcycpKTsKICAgICAgICAkdmFsdWVzID0gYXJyYXlfdmFsdWVzKCRncm91cHMpOwogICAgICAgICRnaWQgPSAkdmFsdWVzWzBdOwogICAgfQoKICAgICRyZWxucyA9ICR0aGlzLT5HZXRHcm91cFByb3BlcnR5UmVsYXRpb25zKCAkZ2lkICk7CiAgICBpZiggIWlzX2FycmF5KCAkcmVsbnMgKSB8fCAkcmVsbnNbMF0gPT09IEZBTFNFICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdVbmtub3duIEVycm9yJyk7CgogICAgLy8gTm93OiB3ZSBuZWVkIHRvIGdldCB0aGUgcHJvcGVydGllcyB0aGF0IG1heSBiZSBmaWxsZWQgaW4gaW4gdGhpcyBncm91cC4KICAgIC8vIGFuZCBkaXNwbGF5IHRoZW0gaW4gdGhlIGZvcm0KICAgIC8vIHdlIGRvIHRoaXMgYmVmb3JlIGhhbmRsaW5nIHN1Ym1pdCBzbyB0aGF0IHdlIGRvbid0IGxvc2UgYXMgbXVjaCB1c2VyIGVudGVyZWQgaW5mb3JtYXRpb24KICAgIC8vIGlmIHRoZXJlIGlzIGEgc2lsbHkgZXJyb3IgaW4gZm9ybSBzdWJtaXNzaW9uLgogICAgJHJvd2FycmF5ID0gYXJyYXkoKTsKICAgICRkZWZucyA9ICR0aGlzLT5HZXRQcm9wZXJ0eURlZm5zKCk7CiAgICBmb3JlYWNoKCAkcmVsbnMgYXMgJG9uZXJlbG4gKSB7CiAgICAgICAgLy8gaWYgaXQncyBub3QgcmVxdWlyZWQgaGVyZSwgZG9uJ3QgZG8gYW55dGhpbmcKICAgICAgICBpZiggJG9uZXJlbG5bJ3JlcXVpcmVkJ10gPT0gMyB8fCAkb25lcmVsblsncmVxdWlyZWQnXSA9PSA0ICkgewogICAgICAgICAgICAvLyBoaWRkZW4gb3IgcmVhZC1vbmx5IGZpZWxkcyBhcmUgaGlkZGVuLgogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICAgICRkZWZuID0gJGRlZm5zWyAkb25lcmVsblsnbmFtZSddIF07CgogICAgICAgICRvbmVyb3cgPSBuZXcgU3RkQ2xhc3MoKTsKICAgICAgICAkb25lcm93LT5yZXF1aXJlZCA9IGZhbHNlOwogICAgICAgICRvbmVyb3ctPnByb3BuYW1lID0gJG9uZXJlbG5bJ25hbWUnXTsKICAgICAgICAkb25lcm93LT5uYW1lID0gJ21hbXNfaW5wdXRfJy4kb25lcmVsblsnbmFtZSddOwogICAgICAgICRvbmVyb3ctPmZsZG5hbWUgPSAkaWQuJG9uZXJvdy0+bmFtZTsKICAgICAgICAkb25lcm93LT50eXBlID0gJGRlZm5bJ3R5cGUnXTsKICAgICAgICBpZiggJG9uZXJvdy0+dHlwZSA9PSA4ICkgewogICAgICAgICAgICAvLyBkYXRlIGZpZWxkIHVzZXMgaHRtbF9zZWxlY3RfZGF0ZSB3aGljaCBwcm92aWRlcyB0aHJlZSBpbnB1dCBmaWVsZHMuCiAgICAgICAgICAgICRfbSA9IFx4dF9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCRvbmVyb3ctPm5hbWUuJ01vbnRoJyk7CiAgICAgICAgICAgICRfZCA9IFx4dF9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCRvbmVyb3ctPm5hbWUuJ0RheScpOwogICAgICAgICAgICAkX3kgPSBceHRfcGFyYW06OmdldF9pbnQoJHBhcmFtcywkb25lcm93LT5uYW1lLidZZWFyJyk7CiAgICAgICAgICAgIGlmKCAkX20gJiYgJF9kICYmICRfeSApICRwYXJhbXNbJG9uZXJvdy0+bmFtZV0gPSBta3RpbWUoMCwwLDAsJF9tLCRfZCwkX3kpOwogICAgICAgIH0KICAgICAgICAkb25lcm93LT52YWwgPSBceHRfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCRvbmVyb3ctPm5hbWUpOyAvLyBkbyBub3QgdXNlIHh0X3BhcmFtIGJlY2F1c2UgaW5wdXQgbWF5IGJlIGFuIGFycmF5CiAgICAgICAgJG9uZXJvdy0+bGVuZ3RoID0gJGRlZm5bJ2xlbmd0aCddOwogICAgICAgICRvbmVyb3ctPm1heGxlbmd0aCA9ICRkZWZuWydtYXhsZW5ndGgnXTsKICAgICAgICAkb25lcm93LT5wcm9tcHQgPSAkZGVmblsncHJvbXB0J107CgogICAgICAgIHN3aXRjaCggJGRlZm5bJ3R5cGUnXSApIHsKICAgICAgICBjYXNlIDQ6IC8vIGRyb3Bkb3duCiAgICAgICAgY2FzZSA1OiAvLyBtdWx0aXNlbGVjdAogICAgICAgIGNhc2UgNzogLy8gcmFkaW9idG5zCiAgICAgICAgICAgICRvbmVyb3ctPm9wdGlvbnMgPSBhcnJheV9mbGlwKCR0aGlzLT5HZXRTZWxlY3RPcHRpb25zKCRkZWZuWyduYW1lJ10pKTsKICAgICAgICAgICAgJG9uZXJvdy0+bGVuZ3RoID0gNTsKICAgICAgICAgICAgaWYoIGNvdW50KCRvbmVyb3ctPm9wdGlvbnMpID4gMjAgKSAkb25lcm93LT5sZW5ndGggPSAxMDsKICAgICAgICAgICAgJG9uZXJvdy0+bGVuZ3RoID0gbWluKGNvdW50KCRvbmVyb3ctPm9wdGlvbnMpLCRvbmVyb3ctPmxlbmd0aCk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDg6IC8vIGRhdGUKICAgICAgICAgICAgJG9uZXJvdy0+c3RhcnRfeWVhciA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkZGVmblsnZXh0cmEnXSwnc3RhcnR5ZWFyJywnLTEwJyk7CiAgICAgICAgICAgICRvbmVyb3ctPmVuZF95ZWFyID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRkZWZuWydleHRyYSddLCdlbmR5ZWFyJywnKzUnKTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgNjogLy8gaW1hZ2UKICAgICAgICAgICAgLy8gdGhpcyBpc24ndCBhbGxvd2VkCiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgICRyb3dhcnJheVskb25lcm93LT5wcm9wbmFtZV0gPSAkb25lcm93OwogICAgfQogICAgaWYoICFjb3VudCgkcm93YXJyYXkpICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9sb3N0dW5fbm9jb250cm9scycpKTsKCiAgICBpZiggaXNzZXQoJHBhcmFtc1snbWFtc19jYW5jZWwnXSkgKSB7CiAgICAgICAgJHRoaXMtPlJlZGlyZWN0Q29udGVudCgkcmV0dXJudG8pOwogICAgfQogICAgZWxzZSBpZiggaXNzZXQoJHBhcmFtc1snbWFtc19zdWJtaXQnXSkgKSB7CiAgICAgICAgLy8KICAgICAgICAvLyBoYW5kbGUgZm9ybSBzdWJtaXQKICAgICAgICAvLwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIC8vIGJ5IHRoaXMgcG9pbnQgb3VyIHZhbHVlcyBzaG91bGQgYmUgdXB0b2RhdGUgaW4gdGhlICRyb3dhcnJheQoKICAgICAgICAgICAgLy8gY2hlY2sgb3VyIGhvbmV5cG90CiAgICAgICAgICAgIGlmKCBpc3NldCgkcGFyYW1zWydtYW1zX19kYXRhJ10pICkgewogICAgICAgICAgICAgICAgJHRtcCA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdtYW1zX19kYXRhJyk7CiAgICAgICAgICAgICAgICBpZiggJHRtcCApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfeW91YXJlYWJvdCcpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gY2hlY2sgdGhlIGNhcHRjaGEKICAgICAgICAgICAgaWYoICEkbm9jYXB0Y2hhICkgewogICAgICAgICAgICAgICAgJGNhcHRjaGEgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdDYXB0Y2hhJyk7CiAgICAgICAgICAgICAgICBpZiggaXNfb2JqZWN0KCRjYXB0Y2hhKSAmJiAhJGNhcHRjaGEtPkNoZWNrQ2FwdGNoYSgkcGFyYW1zWydtYW1zX2lucHV0X2NhcHRjaGEnXSkgKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9jYXB0Y2hhbWlzbWF0Y2gnKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGNoZWNrIGFueSByZXF1aXJlZCBmaWVsZHMKICAgICAgICAgICAgZm9yZWFjaCggJHJvd2FycmF5IGFzICRrZXkgPT4gJHJlYyApIHsKICAgICAgICAgICAgICAgIGlmKCAkcmVjLT5yZXF1aXJlZCAmJiAhJHJlYy0+dmFsICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9yZXF1aXJlZGZpZWxkJywkcmVjLT5wcm9tcHQpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gcmVhZHkgdG8gZG8gcmVhbCB3b3JrCiAgICAgICAgICAgIC8vIHdlIGl0ZXJhdGUgdGhyb3VnaCB0aGUgZmllbGRzIChleGNlcHQgcGFzc3dvcmQpIGFuZCBidWlsZCBhbiBtYW1zIHF1ZXJ5CiAgICAgICAgICAgIC8vIGFuZCBob3BlIHRoYXQgd2Ugb25seSBmaW5kIG9uZSByZXN1bHQuCiAgICAgICAgICAgIC8vIGlmIHdlIGZpbmQgb25lIHJlc3VsdC4uLiB3ZSBjYW4gZGlzcGxheSBzb21lIGluZm9ybWF0aW9uIHRvIHRoZSBndXkuCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgICRzcWwgPSAnU0VMRUNUIERJU1RJTkNUIFUuKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfbWFtc191c2VycyBVICc7CiAgICAgICAgICAgICRuX2NvbmRzID0gMDsKICAgICAgICAgICAgJHdoZXJlID0gJGpvaW5zID0gJHBhcm1zID0gYXJyYXkoKTsKCiAgICAgICAgICAgIGZvcmVhY2goICRyb3dhcnJheSBhcyAka2V5ID0+ICRyZWMgKSB7CiAgICAgICAgICAgICAgICBpZiggISRyZWMtPnZhbCApIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgaWYoICRrZXkgPT0gJ19wYXNzd29yZCcgKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIGlmKCAka2V5ID09ICdfZW1haWwnICkgY29udGludWU7CgogICAgICAgICAgICAgICAgc3dpdGNoKCAkcmVjLT50eXBlICkgewogICAgICAgICAgICAgICAgY2FzZSAwOiAvLyB0ZXh0CiAgICAgICAgICAgICAgICBjYXNlIDI6IC8vIGVtYWlsCiAgICAgICAgICAgICAgICBjYXNlIDM6IC8vIHRleHRhcmVhCiAgICAgICAgICAgICAgICAgICAgaWYoIHN0cmxlbigkcmVjLT52YWwpID4gMyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGFsaWFzID0gIlB7JG5fY29uZHN9IjsgJG5fY29uZHMrKzsKICAgICAgICAgICAgICAgICAgICAgICAgJGpvaW5zW10gPSAnTEVGVCBKT0lOICcuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfbWFtc19wcm9wZXJ0aWVzICRhbGlhcyBPTiBVLmlkID0geyRhbGlhc30udXNlcmlkIEFORCB7JGFsaWFzfS50aXRsZSA9ICd7JHJlYy0+cHJvcG5hbWV9JyI7CiAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gInskYWxpYXN9LmRhdGEgTElLRSA/IjsKICAgICAgICAgICAgICAgICAgICAgICAgJHBhcm1zW10gPSAnJScuJHJlYy0+dmFsLiclJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAxOiAvLyBjaGVja2JveAogICAgICAgICAgICAgICAgICAgICRhbGlhcyA9ICJQeyRuX2NvbmRzfSI7ICRuX2NvbmRzKys7CiAgICAgICAgICAgICAgICAgICAgJGpvaW5zW10gPSAnTEVGVCBKT0lOICcuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfbWFtc19wcm9wZXJ0aWVzICRhbGlhcyBPTiBVLmlkID0geyRhbGlhc30udXNlcmlkIEFORCB7JGFsaWFzfS50aXRsZSA9ICd7JHJlYy0+cHJvcG5hbWV9JyI7CiAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAieyRhbGlhc30uZGF0YSA9ID8iOwogICAgICAgICAgICAgICAgICAgICRwYXJtc1tdID0gMTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDQ6IC8vIGRyb3Bkb3duCiAgICAgICAgICAgICAgICBjYXNlIDc6IC8vIHJhZGlvYnRucwogICAgICAgICAgICAgICAgICAgICRhbGlhcyA9ICJQeyRuX2NvbmRzfSI7ICRuX2NvbmRzKys7CiAgICAgICAgICAgICAgICAgICAgJGpvaW5zW10gPSAnTEVGVCBKT0lOICcuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfbWFtc19wcm9wZXJ0aWVzICRhbGlhcyBPTiBVLmlkID0geyRhbGlhc30udXNlcmlkIEFORCB7JGFsaWFzfS50aXRsZSA9ICd7JHJlYy0+cHJvcG5hbWV9JyI7CiAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAieyRhbGlhc30uZGF0YSA9ID8iOwogICAgICAgICAgICAgICAgICAgICRwYXJtc1tdID0gJHJlYy0+dmFsOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgNDogLy8gbXVsdGlzZWxlY3QKICAgICAgICAgICAgICAgICAgICAvLyBtdWx0aXNlbGVjdCBpcyBhIGRpZmZlcmVudCBjYXNlLi4uIHdlIG5lZWQgdG8gYnVpbGQgYW4gT1IgcmVsYXRpb25zaGlwIHNvIHRoYXQgYW55IG9mIHRoZSBzZWxlY3RlZCBpdGVtcyBtYXRjaC4KICAgICAgICAgICAgICAgICAgICAkYWxpYXMgPSAiUHskbl9jb25kc30iOyAkbl9jb25kcysrOwogICAgICAgICAgICAgICAgICAgICRqb2luc1tdID0gJ0xFRlQgSk9JTiAnLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX21hbXNfcHJvcGVydGllcyAkYWxpYXMgT04gVS5pZCA9IHskYWxpYXN9LnVzZXJpZCBBTkQgeyRhbGlhc30udGl0bGUgPSAneyRyZWMtPnByb3BuYW1lfSciOwogICAgICAgICAgICAgICAgICAgICR0X3ZhbCA9ICRyZWMtPnZhbDsKICAgICAgICAgICAgICAgICAgICBpZiggIWlzX2FycmF5KCR0X3ZhbCkgKSAkdF92YWwgPSBhcnJheSgkdF92YWwpOwogICAgICAgICAgICAgICAgICAgIGlmKCBjb3VudCgkdF92YWwpID09IDEgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gInskYWxpYXN9LmRhdGEgPSA/IjsKICAgICAgICAgICAgICAgICAgICAgICAgJHBhcm1zW10gPSAkdF92YWw7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkc3RyID0gJyUnLmltcGxvZGUoJyUnLCR0X3ZhbCkuJyUnOwogICAgICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICJ7JGFsaWFzfS5kYXRhIExJS0UgPyI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgODogLy8gZGF0ZQogICAgICAgICAgICAgICAgICAgICRhbGlhcyA9ICJQeyRuX2NvbmRzfSI7ICRuX2NvbmRzKys7CiAgICAgICAgICAgICAgICAgICAgJGpvaW5zW10gPSAnTEVGVCBKT0lOICcuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfbWFtc19wcm9wZXJ0aWVzICRhbGlhcyBPTiBVLmlkID0geyRhbGlhc30udXNlcmlkIEFORCB7JGFsaWFzfS50aXRsZSA9ICd7JHJlYy0+cHJvcG5hbWV9JyI7CiAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAieyRhbGlhc30uZGF0YSA9ID8iOwogICAgICAgICAgICAgICAgICAgICRwYXJtc1tdID0gJHJlYy0+dmFsOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBjaGVjayB0byBtYWtlIHN1cmUgdGhhdCB0aGVyZSBpcyBhdCBsZWFzdCBzb21lIGluZm9ybWF0aW9uCiAgICAgICAgICAgIGlmKCAkbl9jb25kcyA9PSAwICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9sb3N0dW5fbm9kYXRhJykpOwoKICAgICAgICAgICAgLy8gYnVpbGQgdGhlIHF1ZXJ5CiAgICAgICAgICAgICRzcWwgLj0gaW1wbG9kZSgnICcsJGpvaW5zKTsKICAgICAgICAgICAgJHNxbCAuPSAnIFdIRVJFICcuaW1wbG9kZSgnIEFORCAnLCR3aGVyZSk7CiAgICAgICAgICAgICRzcWwgLj0gJyBMSU1JVCAyJzsKICAgICAgICAgICAgJHRtcCA9ICRkYi0+R2V0QXJyYXkoJHNxbCwkcGFybXMpOwogICAgICAgICAgICBpZiggY291bnQoJHRtcCkgPiAxICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9ub3VuaXF1ZW1hdGNoJykpOwogICAgICAgICAgICBpZiggIWNvdW50KCR0bXApICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9sb3N0dW5fdXNlcm5vdGZvdW5kJykpOwogICAgICAgICAgICAkdWluZm8gPSAkdG1wWzBdOwogICAgICAgICAgICAkdXNlcm5hbWUgPSAkdWluZm9bJ3VzZXJuYW1lJ107CgogICAgICAgICAgICAkdGhpcy0+YWRkX2hpc3RvcnkoJHVpbmZvWydpZCddLCdnZXR1c2VybmFtZScpOwoKICAgICAgICAgICAgLy8gYW5kIGRpc3BsYXkgc29tZXRoaW5nCiAgICAgICAgICAgICR0aGV0ZW1wbGF0ZTIgPSBcbWFtc191dGlsczo6Z2V0X3RlbXBsYXRlKCRwYXJhbXMsJ2xvc3R1bmNvbmZpcm10ZW1wbGF0ZScsJ01BTVM6Omxvc3QgdXNlcm5hbWUgY29uZmlybScpOwogICAgICAgICAgICAkdHBsID0gJHRoaXMtPkNyZWF0ZVNtYXJ0eVRlbXBsYXRlKCR0aGV0ZW1wbGF0ZTIpOwogICAgICAgICAgICAkdHBsLT5hc3NpZ24oJ3VzZXJuYW1lJywkdXNlcm5hbWUpOwogICAgICAgICAgICAkdHBsLT5hc3NpZ24oJ3Byb21wdF95b3VydXNlcm5hbWVpcycsJHRoaXMtPkxhbmcoJ3lvdXJfdXNlcm5hbWVfaXMnKSk7CiAgICAgICAgICAgICR0cGwtPmFzc2lnbigncHJlbXNnJywkdGhpcy0+TGFuZygnbG9zdHVuY29uZmlybV9wcmVtc2cnKSk7CiAgICAgICAgICAgICR0cGwtPmFzc2lnbigncG9zdG1zZycsJHRoaXMtPkxhbmcoJ2xvc3R1bmNvbmZpcm1fcG9zdG1zZycpKTsKICAgICAgICAgICAgJHRwbC0+ZGlzcGxheSgpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAkbWVzc2FnZSA9ICRlLT5HZXRNZXNzYWdlKCk7CiAgICAgICAgfQogICAgfQoKICAgIC8vIHN0YXJ0IGdpdmluZyBzdHVmZiB0byBzbWFydHkuCiAgICAkdHBsID0gJHRoaXMtPkNyZWF0ZVNtYXJ0eVRlbXBsYXRlKCR0aGV0ZW1wbGF0ZSk7CiAgICAkcGFybXMgPSBhcnJheSgnbWFtc19naWQnPT4kZ2lkKTsKICAgICRwYXJtc1snbm9jYXB0Y2hhJ10gPSAkbm9jYXB0Y2hhOwogICAgJHBhcm1zWydyZXR1cm50byddID0gJHJldHVybnRvOwogICAgJHBhcm1zWydtYW1zX2xvc3R1bnRlbXBsYXRlJ10gPSAkdGhldGVtcGxhdGU7CiAgICAkdHBsLT5hc3NpZ24oJ3N0YXJ0Zm9ybScsICR0aGlzLT5YVENyZWF0ZUZvcm1TdGFydCgkaWQsJ2xvc3R1c2VybmFtZScsJHJldHVybmlkLCRwYXJtcykpOwogICAgJHRwbC0+YXNzaWduKCdlbmRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiAgICAkdHBsLT5hc3NpZ24oJ3VzZXJuYW1lX2lzX2VtYWlsJywkdXNlcm5hbWVfaXNfZW1haWwpOwogICAgJHRwbC0+YXNzaWduKCd1bmZsZGxlbicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZXJuYW1lZmxkbGVuZ3RoJykpOwogICAgJHRwbC0+YXNzaWduKCdtYXhfdW5mbGRsZW4nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXhfdXNlcm5hbWVsZW5ndGgnKSk7CiAgICAkdHBsLT5hc3NpZ24oJ21lc3NhZ2UnLCRtZXNzYWdlKTsKCiAgICBpZiggISRub2NhcHRjaGEgKSB7CiAgICAgICAgJGNhcHRjaGEgPSAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoJ0NhcHRjaGEnKTsKICAgICAgICBpZiggaXNfb2JqZWN0KCRjYXB0Y2hhKSApIHsKICAgICAgICAgICAgJHRwbC0+YXNzaWduKCdjYXB0Y2hhJywgJGNhcHRjaGEtPmdldENhcHRjaGEoKSk7CiAgICAgICAgICAgICR0cGwtPmFzc2lnbignY2FwdGNoYV90aXRsZScsICR0aGlzLT5MYW5nKCdjYXB0Y2hhX3RpdGxlJykpOwogICAgICAgICAgICAkdGVzdCA9IG1ldGhvZF9leGlzdHMoJGNhcHRjaGEsICdOZWVkc0lucHV0RmllbGQnKSA/ICRjYXB0Y2hhLT5OZWVkc0lucHV0RmllbGQoKSA6IHRydWU7CiAgICAgICAgICAgICR0cGwtPmFzc2lnbignbmVlZF9jYXB0Y2hhX2lucHV0JywkdGVzdCk7CiAgICAgICAgfQogICAgfQoKICAgICR0cGwtPmFzc2lnbignY29udHJvbHMnLCAkcm93YXJyYXkpOwogICAgJHRwbC0+ZGlzcGxheSgpOwp9CmNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgLy8gZmF0YWwgZXJyb3IgdGhhdCB3ZSBjYW50IHdvcmsgYXJvdW5kLgogICAgZWNobyAkdGhpcy0+RGlzcGxheUVycm9yTWVzc2FnZSgkZS0+R2V0TWVzc2FnZSgpKTsKfQoKLy8gRU9GCg==]]></data>
	</file>
	<file>
	  <filename>/action.reset_session.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIHJldHVybjsKJHVpZCA9ICR0aGlzLT5Mb2dnZWRJbklkKCk7CmlmKCAkdWlkID09PSBmYWxzZSApIHJldHVybjsKCmlmKCBpc3NldCgkcGFyYW1zWydtYW1zX2NoZWNrb25seSddKSAmJiAkcGFyYW1zWydtYW1zX2NoZWNrb25seSddID09IDEgKSB7CiAgICBpZiggIWlzc2V0KCRwYXJhbXNbJ21hbXNfdWlkJ10pICkgcmV0dXJuOwogICAgLy8gbm90aGluZyB0byBkbyBoZXJlLgp9CmVsc2UgewogICAgJHRoZXRlbXBsYXRlID0gXG1hbXNfdXRpbHM6OmdldF90ZW1wbGF0ZSgkcGFyYW1zLCdyZXNldHNlc3Npb250ZW1wbGF0ZScsJ01BTVM6OnJlc2V0IHNlc3Npb24nKTsKICAgICR0cGwgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJHRoZXRlbXBsYXRlKTsKICAgICRwcmV0dHl1cmwgPSAibWFtcy9yZXNldC97JHVpZH0iOwogICAgJHRwbC0+YXNzaWduKCdzZXNzaW9uX3RpbWVvdXQnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1c2VyX3Nlc3Npb25fZXhwaXJlcycpKTsKICAgICR0cGwtPmFzc2lnbigncmVzZXRfdXJsJywKICAgICAgICAgICAgICAgICAkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ3Jlc2V0X3Nlc3Npb24nLCRyZXR1cm5pZCwnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgnbWFtc191aWQnPT4kdWlkLCdtYW1zX2NoZWNrb25seSc9PjEsJ3Nob3d0ZW1wbGF0ZSc9PidmYWxzZScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLHRydWUsZmFsc2UsJycsZmFsc2UsJHByZXR0eXVybCkpOwogICAgJHRwbC0+ZGlzcGxheSgpOwp9CgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.silent.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIHJldHVybjsKCiR1aWQgPSAkdGhpcy0+TG9nZ2VkSW5JZCgpOwppZiggJHVpZCA8IDEgKSByZXR1cm47CgovLyByZXBsYWNlIHskZ3JvdXBuYW1lfSB3aXRoIHRoZSBmaXJzdCBncm91cG5hbWUgd2UgY2FuIGZpbmQgdGhhdCBtYXRjaGVzCiRncm91cHMgPSAkdGhpcy0+R2V0TWVtYmVyR3JvdXBzQXJyYXkoICR1aWQgKTsKJGdyb3VwbmFtZXMgPSBhcnJheSgpOwpmb3JlYWNoKCAkZ3JvdXBzIGFzICRvbmUgKSB7CiAgICAkZ3JvdXBuYW1lc1tdID0gJHRoaXMtPkdldEdyb3VwTmFtZSggJG9uZVsnZ3JvdXBpZCddICk7Cn0KCiRtYW1zX2RhdGEgPSBhcnJheSgpOwokbWFtc19kYXRhWyd1c2VyaWQnXSA9ICR1aWQ7CiRtYW1zX2RhdGFbJ3VzZXJuYW1lJ10gPSAkdGhpcy0+TG9nZ2VkSW5OYW1lKCk7CiRtYW1zX2RhdGFbJ21lbWJlcl9ncm91cHMnXSA9ICRncm91cG5hbWVzOwokbWFtc19kYXRhWyd1cmxfbG9nb3V0J10gPSAkdGhpcy0+Y3JlYXRlX3VybCgkaWQsJ2xvZ291dCcsJHJldHVybmlkKTsKCiRwYWdlaWQgPSAkcmV0dXJuaWQ7CmlmKCAoJHRtcCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwYWdlaWRfY2hhbmdlc2V0dGluZycpKSApIHsKICAgICR0cGwgPSAkc21hcnR5LT5DcmVhdGVUZW1wbGF0ZSgnc3RyaW5nOicuJHRtcCk7CiAgICAkdHBsLT5hc3NpZ24oJ2dyb3VwJywkZ3JvdXBuYW1lKTsKICAgICR0cGwtPmFzc2lnbignZ3JvdXBpZCcsJGdyb3Vwc1swXVsnZ3JvdXBpZCddKTsKICAgICR0cGwtPmFzc2lnbigndXNlcm5hbWUnLCR1c2VybmFtZSk7CiAgICAkdHBsLT5hc3NpZ24oJ3VpZCcsJHVpZCk7CiAgICAkdG1wID0gJHRwbC0+ZmV0Y2goKTsKICAgIGlmKCAkdG1wICkgJHBhZ2VpZCA9ICR0aGlzLT5yZXNvbHZlX2FsaWFzX29yX2lkKCR0bXAsJHJldHVybmlkKTsKfQokbWFtc19kYXRhWyd1cmxfY2hhbmdlc2V0dGluZ3MnXSA9ICR0aGlzLT5jcmVhdGVfdXJsKCRpZCwnZGVmYXVsdCcsJHBhZ2VpZCxhcnJheSgnZm9ybSc9PidjaGFuZ2VzZXR0aW5ncycpKTsKCiRwcm9wcyA9ICR0aGlzLT5HZXRVc2VyUHJvcGVydGllcyggJHVpZCApOwpmb3JlYWNoKCAkcHJvcHMgYXMgJHAgKSB7CiAgICAkbWFtc19kYXRhWyRwWyd0aXRsZSddXSA9ICRwWydkYXRhJ107Cn0KCiRzbWFydHktPmFzc2lnbignbWFtc19kYXRhJywkbWFtc19kYXRhKTsKJHNtYXJ0eS0+YXNzaWduR2xvYmFsKCdtYW1zX2RhdGEnLCRtYW1zX2RhdGEpOwo=]]></data>
	</file>
	<file>
	  <filename>/action.userhistory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KaWYoICEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucyggJ2xpc3R1c2VycycgKSApIHJldHVybjsKCiR0aGlzLT5TZXRDdXJyZW50VGFiKCd1c2VyaGlzdG9yeScpOwokdXNlcmlkID0gXHh0X3BhcmFtOjpnZXRfaW50KCRwYXJhbXMsJ3VzZXJfaWQnKTsKJHBhZ2VsaW1pdHMgPSBhcnJheSgpOwokcGFnZWxpbWl0c1snNSddID0gNTsKJHBhZ2VsaW1pdHNbJzEwJ10gPSAxMDsKJHBhZ2VsaW1pdHNbJzI1J10gPSAyNTsKJHBhZ2VsaW1pdHNbJzUwJ10gPSA1MDsKJHBhZ2VsaW1pdHNbJzEwMCddID0gMTAwOwokcGFnZWxpbWl0c1snMjUwJ10gPSAyNTA7CiRwYWdlbGltaXRzWyc1MDAnXSA9IDUwMDsKCiRkYXRlbGlzdCA9IGFycmF5KCk7CiRkYXRlbGlzdFskdGhpcy0+TGFuZygnZGF0ZV9hbGxyZWNvcmRzJyldID0gLTE7CiRkYXRlbGlzdFskdGhpcy0+TGFuZygnZGF0ZV9vbmVob3Vyb2xkJyldID0gJzFoJzsKJGRhdGVsaXN0WyR0aGlzLT5MYW5nKCdkYXRlX3NpeGhvdXJvbGQnKV0gPSAnNmgnOwokZGF0ZWxpc3RbJHRoaXMtPkxhbmcoJ2RhdGVfdHdlbHZlaG91cm9sZCcpXSA9ICcxMmgnOwokZGF0ZWxpc3RbJHRoaXMtPkxhbmcoJ2RhdGVfb25lZGF5b2xkJyldID0gJzFkJzsKJGRhdGVsaXN0WyR0aGlzLT5MYW5nKCdkYXRlX29uZXdlZWtvbGQnKV0gPSAnMXcnOwokZGF0ZWxpc3RbJHRoaXMtPkxhbmcoJ2RhdGVfdHdvd2Vla3NvbGQnKV0gPSAnMncnOwokZGF0ZWxpc3RbJHRoaXMtPkxhbmcoJ2RhdGVfb25lbW9udGhvbGQnKV0gPSAnMW0nOwokZGF0ZWxpc3RbJHRoaXMtPkxhbmcoJ2RhdGVfdGhyZWVtb250aHNvbGQnKV0gPSAnM20nOwokZGF0ZWxpc3RbJHRoaXMtPkxhbmcoJ2RhdGVfc2l4bW9udGhzb2xkJyldID0gJzZtJzsKJGRhdGVsaXN0WyR0aGlzLT5MYW5nKCdkYXRlX29uZXllYXJvbGQnKV0gPSAnMXknOwoKJHNvcnRvcmRlcnMgPSBhcnJheSgpOwokc29ydG9yZGVyc1skdGhpcy0+TGFuZygnc29ydG9yZGVyX2RhdGVfZGVzYycpXSA9ICdyZWZkYXRlIERFU0MnOwokc29ydG9yZGVyc1skdGhpcy0+TGFuZygnc29ydG9yZGVyX2RhdGVfYXNjJyldID0gJ3JlZmRhdGUgQVNDJzsKJHNvcnRvcmRlcnNbJHRoaXMtPkxhbmcoJ3NvcnRvcmRlcl9hY3Rpb25fZGVzYycpXSA9ICdhY3Rpb24gREVTQyc7CiRzb3J0b3JkZXJzWyR0aGlzLT5MYW5nKCdzb3J0b3JkZXJfYWN0aW9uX2FzYycpXSA9ICdhY3Rpb24gQVNDJzsKJHNvcnRvcmRlcnNbJHRoaXMtPkxhbmcoJ3NvcnRvcmRlcl9pcGFkZHJlc3NfZGVzYycpXSA9ICdpcGFkZHJlc3MgREVTQyc7CiRzb3J0b3JkZXJzWyR0aGlzLT5MYW5nKCdzb3J0b3JkZXJfaXBhZGRyZXNzX2FzYycpXSA9ICdpcGFkZHJlc3MgQVNDJzsKaWYoICR1c2VyaWQgPT0gJycgKSB7CiAgICAkc29ydG9yZGVyc1skdGhpcy0+TGFuZygnc29ydG9yZGVyX3VzZXJuYW1lX2Rlc2MnKV0gPSAndXNlcm5hbWUgREVTQyc7CiAgICAkc29ydG9yZGVyc1skdGhpcy0+TGFuZygnc29ydG9yZGVyX3VzZXJuYW1lX2FzYycpXSA9ICd1c2VybmFtZSBBU0MnOwp9CgokZXZlbnR0eXBlcyA9IGFycmF5KCk7CiRldmVudHR5cGVzWydhbGwnXSA9ICdhbGwnOwokZXZlbnR0eXBlc1snZmFpbCddID0gJ2ZhaWwnOwokZXZlbnR0eXBlc1snbG9naW4nXSA9ICdsb2dpbic7CiRldmVudHR5cGVzWydsb2dvdXQnXSA9ICdsb2dvdXQnOwokZXZlbnR0eXBlc1snZXhwaXJlJ10gPSAnZXhwaXJlJzsKJGV2ZW50dHlwZXNbJ3Jlc2V0cHcnXSA9ICdyZXNldHB3JzsKJGV2ZW50dHlwZXNbJ2dldHVzZXJuYW1lJ10gPSAnZ2V0dXNlcm5hbWUnOwokZXZlbnR0eXBlc1snZm9yZ290cHcnXSA9ICdmb3Jnb3Rwdyc7CiRldmVudHR5cGVzWydpbml0X3ZlcmlmeSddID0gJ2luaXRfdmVyaWZ5JzsKJGV2ZW50dHlwZXNbJ3ZlcmlmeSBjb21wbGV0ZSddID0gJ3ZlcmlmeSBjb21wbGV0ZSc7CiRldmVudHR5cGVzWydhZG1pbiBhZGQgdXNlciddID0gJ2FkbWluIGFkZCB1c2VyJzsKJGV2ZW50dHlwZXNbJ2FkbWluIGNoYW5nZSBzZXR0aW5ncyddID0gJ2FkbWluIGNoYW5nZSBzZXR0aW5ncyc7CmlmKCBpc3NldCggJHBhcmFtc1snc3VibWl0dXNlcmhpc3RvcnknXSApICkgewogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydpbnB1dF9wYWdlbGltaXQnXSApICkgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3VzZXJoaXN0b3J5X3BhZ2VsaW1pdCcsJHBhcmFtc1snaW5wdXRfcGFnZWxpbWl0J10pOwogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydpbnB1dF9zb3J0b3JkZXInXSApICkgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3VzZXJoaXN0b3J5X3NvcnRvcmRlcicsJHBhcmFtc1snaW5wdXRfc29ydG9yZGVyJ10pOwogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydpbnB1dF9ldmVudHR5cGUnXSApICkgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3VzZXJoaXN0b3J5X2V2ZW50dHlwZScsJHBhcmFtc1snaW5wdXRfZXZlbnR0eXBlJ10pOwogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydpbnB1dF9maWx0ZXJfZGF0ZSddICkgKSAkdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlcmhpc3RvcnlfZGF0ZScsJHBhcmFtc1snaW5wdXRfZmlsdGVyX2RhdGUnXSk7CiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2lucHV0X2dyb3VwX2lwJ10gKSApICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlcmhpc3RvcnlfZ3JvdXBfaXAnLCRwYXJhbXNbJ2lucHV0X2dyb3VwX2lwJ10pOwogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydpbnB1dF91c2VybmFtZV9yZWdleCddICkgKSAkdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlcmhpc3RvcnlfdXNlcm5hbWVfcmVnZXgnLCRwYXJhbXNbJ2lucHV0X3VzZXJuYW1lX3JlZ2V4J10pOwogICAgaWYoICEkdXNlcmlkICkgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCd1c2VyaGlzdG9yeScpOwp9CmVsc2UgaWYoIGlzc2V0KCAkcGFyYW1zWydyZXNldCddICkgKSB7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlcmhpc3RvcnlfcGFnZWxpbWl0JywxMCk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlcmhpc3RvcnlfZXZlbnR0eXBlJywnYWxsJyk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlcmhpc3RvcnlfZGF0ZScsJy0xJyk7IC8vIHRvZG8KICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1c2VyaGlzdG9yeV9ncm91cF9pcCcsMCk7IC8vIHRvZG8KICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1c2VyaGlzdG9yeV9zb3J0b3JkZXInLCdyZWZkYXRlIERFU0MnKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1c2VyaGlzdG9yeV91c2VybmFtZV9yZWdleCcsJycpOwogICAgaWYoICEkdXNlcmlkICkgJHRoaXMtPlJlZGlyZWN0VG9UYWIoJGlkLCd1c2VyaGlzdG9yeScpOwp9CgokaW5wdXRfcGFnZWxpbWl0ID0gKGludCkkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlcmhpc3RvcnlfcGFnZWxpbWl0JywxMCk7CiRpbnB1dF9zb3J0b3JkZXIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlcmhpc3Rvcnlfc29ydG9yZGVyJywncmVmZGF0ZSBERVNDJyk7CiRpbnB1dF9ldmVudHR5cGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlcmhpc3RvcnlfZXZlbnR0eXBlJywnYWxsJyk7CiRpbnB1dF9maWx0ZXJfZGF0ZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1c2VyaGlzdG9yeV9kYXRlJywnLTEnKTsKJGlucHV0X2dyb3VwX2lwID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZXJoaXN0b3J5X2dyb3VwX2lwJywwKTsKJGlucHV0X3VzZXJuYW1lX3JlZ2V4ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZXJoaXN0b3J5X3VzZXJuYW1lX3JlZ2V4Jyk7CgovLyBBZGQgdGhlIHVzZXIgaW5mbyB0byBzbWFydHkKaWYoICR1c2VyaWQgIT0gJycgKSB7CiAgICAvLyR0aGlzLT5TZXRFbmNyeXB0aW9uS2V5KCR1c2VyaWQpOwogICAgJHJlc3VsdHMgPSAkdGhpcy0+R2V0VXNlckluZm8oJHBhcmFtc1sndXNlcl9pZCddKTsKICAgICR1c2VyaW5mbyA9ICcnOwogICAgaWYoICRyZXN1bHRzWzBdID09PSBUUlVFICkgJHVzZXJpbmZvID0gJHJlc3VsdHNbMV07CiAgICBmb3JlYWNoKCAkdXNlcmluZm8gYXMgJGsgPT4gJHYgKSB7CiAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCd1c2VyXycuJGssJHYpOwogICAgfQogICAgJHByb3BzID0gJHRoaXMtPkdldFVzZXJQcm9wZXJ0aWVzKCRwYXJhbXNbJ3VzZXJfaWQnXSk7CiAgICBmb3JlYWNoKCAkcHJvcHMgYXMgJG9uZXByb3AgKSB7CiAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCd1c2VycHJvcF8nLiRvbmVwcm9wWyd0aXRsZSddLCRvbmVwcm9wWydkYXRhJ10pOwogICAgfQp9CgovLyBmaWd1cmUgb3V0IHdoYXQgcGFnZSB3ZSdyZSBvbgokcGFnZW51bWJlciA9IFx4dF9wYXJhbTo6Z2V0X2ludCgkcGFyYW1zLCdwYWdlbnVtYmVyJywxKTsKJHN0YXJ0ZWxlbWVudCA9ICgkcGFnZW51bWJlci0xKSAqICRpbnB1dF9wYWdlbGltaXQ7CgovLwovLyBBZGQgdGhlIGhpc3RvcnkgdG8gc21hcnR5Ci8vCiR3aGVyZSA9IGFycmF5KCk7CiRwYXJtcyA9IGFycmF5KCk7CiRxdWVyeTEgPSAiU0VMRUNUIEEuKixCLnVzZXJuYW1lCiAgICAgICAgICAgICBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfbWFtc19oaXN0b3J5IEEsCiAgICAgICAgICAgICAgICAgICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfbWFtc191c2VycyBCCiAgICAgICAgICAgIFdIRVJFIEEudXNlcmlkID0gQi5pZCI7CiRxdWVyeTIgPSAiU0VMRUNUIENPVU5UKEEudXNlcmlkKSBBUyBjb3VudAogICAgICAgICAgICAgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX21hbXNfaGlzdG9yeSBBLAogICAgICAgICAgICAgICAgICAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX21hbXNfdXNlcnMgQgogICAgICAgICAgICBXSEVSRSBBLnVzZXJpZCA9IEIuaWQiOwppZiggJHVzZXJpZCA+IDEgKSB7CiAgICAkd2hlcmVbXSA9ICd1c2VyaWQgPSA/JzsKICAgICRwYXJtc1tdID0gJHVzZXJpZDsKfQplbHNlIHsKICAgIC8vIG9ubHkgdXNlIHRoZSB1c2VybmFtZSByZWdleCBpZiB0aGUgdXNlcmlkIGlzIGVtcHR5CiAgICBpZiggJGlucHV0X3VzZXJuYW1lX3JlZ2V4ICE9ICcnICkgewogICAgICAgICR3aGVyZVtdID0gJ3VzZXJuYW1lIFJFR0VYUCA/JzsKICAgICAgICAkcGFybXNbXSA9ICRpbnB1dF91c2VybmFtZV9yZWdleDsKICAgIH0KfQppZiggJGlucHV0X2V2ZW50dHlwZSAhPSAnYWxsJyApIHsKICAgICR3aGVyZVtdID0gJ2FjdGlvbiA9ID8nOwogICAgJHBhcm1zW10gPSAkaW5wdXRfZXZlbnR0eXBlOwp9CmlmKCAkaW5wdXRfZmlsdGVyX2RhdGUgIT0gLTEgKSB7CiAgICAkZGF0ZSA9ICcnOwogICAgc3dpdGNoKCAkaW5wdXRfZmlsdGVyX2RhdGUgKSB7CiAgICBjYXNlICcxaCc6CiAgICAgICAgJGRhdGUgPSBzdHJ0b3RpbWUoJzEgaG91ciBhZ28nKTsKICAgICAgICBicmVhazsKICAgIGNhc2UgJzZoJzoKICAgICAgICAkZGF0ZSA9IHN0cnRvdGltZSgnNiBob3VycyBhZ28nKTsKICAgICAgICBicmVhazsKICAgIGNhc2UgJzEyaCc6CiAgICAgICAgJGRhdGUgPSBzdHJ0b3RpbWUoJzEyIGhvdXJzIGFnbycpOwogICAgICAgIGJyZWFrOwogICAgY2FzZSAnMWQnOgogICAgICAgICRkYXRlID0gc3RydG90aW1lKCcxIGRheSBhZ28nKTsKICAgICAgICBicmVhazsKICAgIGNhc2UgJzF3JzoKICAgICAgICAkZGF0ZSA9IHN0cnRvdGltZSgnMSB3ZWVrIGFnbycpOwogICAgICAgIGJyZWFrOwogICAgY2FzZSAnMncnOgogICAgICAgICRkYXRlID0gc3RydG90aW1lKCcyIHdlZWtzIGFnbycpOwogICAgICAgIGJyZWFrOwogICAgY2FzZSAnMW0nOgogICAgICAgICRkYXRlID0gc3RydG90aW1lKCcxIG1vbnRoIGFnbycpOwogICAgICAgIGJyZWFrOwogICAgY2FzZSAnM20nOgogICAgICAgICRkYXRlID0gc3RydG90aW1lKCczIG1vbnRocyBhZ28nKTsKICAgICAgICBicmVhazsKICAgIGNhc2UgJzZtJzoKICAgICAgICAkZGF0ZSA9IHN0cnRvdGltZSgnNiBtb250aHMgYWdvJyk7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlICcxeSc6CiAgICAgICAgJGRhdGUgPSBzdHJ0b3RpbWUoJzEgeWVhciBhZ28nKTsKICAgICAgICBicmVhazsKICAgIH0KICAgIGlmKCAkZGF0ZSAhPSAnJyApIHsKICAgICAgICAkd2hlcmVbXSA9ICdyZWZkYXRlID4gPyc7CiAgICAgICAgJHBhcm1zW10gPSB0cmltKCRkYi0+RGJUaW1lU3RhbXAoJGRhdGUpLCInIik7CiAgICB9Cn0KaWYoIGNvdW50KCR3aGVyZSkgPiAwICkgewogICAgJHF1ZXJ5MSAuPSAnIEFORCAnLmltcGxvZGUoJyBBTkQgJywkd2hlcmUpOwogICAgJHF1ZXJ5MiAuPSAnIEFORCAnLmltcGxvZGUoJyBBTkQgJywkd2hlcmUpOwp9CmlmKCAkaW5wdXRfZ3JvdXBfaXAgPT0gMSApIHsKICAgICRxdWVyeTEgLj0gJyBHUk9VUCBCWSBpcGFkZHJlc3MnOwogICAgJHF1ZXJ5MiAuPSAnIEdST1VQIEJZIGlwYWRkcmVzcyc7Cn0KJHF1ZXJ5MSAuPSAiIE9SREVSIEJZICIuJGlucHV0X3NvcnRvcmRlcjsKJHF1ZXJ5MSAuPSAiIExJTUlUICRzdGFydGVsZW1lbnQsJGlucHV0X3BhZ2VsaW1pdCI7CgovLyBOb3cgZ2V0IHRoZSBjb3VudCwgYW5kIG51bWJlciBvZiBwYWdlcwokdG1wcm93ID0gJGRiLT5HZXRSb3coICRxdWVyeTIsICRwYXJtcyApOwokcmVjb3JkY291bnQgPSAkdG1wcm93Wydjb3VudCddOwokcGFnZWNvdW50ID0gKGludCljZWlsKCRyZWNvcmRjb3VudCAvICRpbnB1dF9wYWdlbGltaXQpOwokc21hcnR5LT5hc3NpZ24oJ3JlY29yZGNvdW50JywkcmVjb3JkY291bnQpOwoKLy8gc29tZSBwYWdpbmF0aW9uIHZhcmlhYmxlcyB0byBzbWFydHkuCmlmKCAkcGFnZW51bWJlciA9PSAxICkgewogICAgJHNtYXJ0eS0+YXNzaWduKCdwcmV2cGFnZScsJzwnKTsKICAgICRzbWFydHktPmFzc2lnbignZmlyc3RwYWdlJywnPDwnKTsKfQplbHNlIHsKICAgICRzbWFydHktPmFzc2lnbigncHJldnBhZ2UnLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCc8JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgncGFnZW51bWJlcic9PiRwYWdlbnVtYmVyLTEsICd1c2VyX2lkJz0+JHVzZXJpZCwneHRfYWN0aXZldGFiJz0+J3VzZXJoaXN0b3J5JykpKTsKICAgICRzbWFydHktPmFzc2lnbignZmlyc3RwYWdlJywKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwnPDwnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCdwYWdlbnVtYmVyJz0+MSwgJ3VzZXJfaWQnPT4kdXNlcmlkLCd4dF9hY3RpdmV0YWInPT4ndXNlcmhpc3RvcnknKSkpOwp9CmlmKCAkcGFnZW51bWJlciA+PSAkcGFnZWNvdW50ICkgewogICAgJHNtYXJ0eS0+YXNzaWduKCduZXh0cGFnZScsJz4nKTsKICAgICRzbWFydHktPmFzc2lnbignbGFzdHBhZ2UnLCc+PicpOwp9CmVsc2UgewogICAgJHNtYXJ0eS0+YXNzaWduKCduZXh0cGFnZScsCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsJz4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCdwYWdlbnVtYmVyJz0+JHBhZ2VudW1iZXIrMSwgJ3VzZXJfaWQnPT4kdXNlcmlkLCd4dF9hY3RpdmV0YWInPT4ndXNlcmhpc3RvcnknKSkpOwoKICAgICRzbWFydHktPmFzc2lnbignbGFzdHBhZ2UnLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCc+PicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkoJ3BhZ2VudW1iZXInPT4kcGFnZWNvdW50LCAndXNlcl9pZCc9PiR1c2VyaWQsJ3h0X2FjdGl2ZXRhYic9Pid1c2VyaGlzdG9yeScpKSk7Cgp9CiRzbWFydHktPmFzc2lnbigncGFnZW51bWJlcicsJHBhZ2VudW1iZXIpOwokc21hcnR5LT5hc3NpZ24oJ3BhZ2Vjb3VudCcsJHBhZ2Vjb3VudCk7CiRzbWFydHktPmFzc2lnbignb2Z0ZXh0JywkdGhpcy0+TGFuZygncHJvbXB0X29mJykpOwppZiggJHVzZXJpZCA9PSAnJyApICRzbWFydHktPmFzc2lnbignbXVsdGl1c2VyJywxKTsKCi8vIFRoZSBkYXRhYmFzZSBxdWVyeQokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxdWVyeTEsICRwYXJtcyApOwokcm93YXJyYXkgPSBhcnJheSgpOwokcm93Y2xhc3MgPSAncm93MSc7CndoaWxlKCAkZGJyZXN1bHQgJiYgISRkYnJlc3VsdC0+RU9GICkgewogICAgJGZpZWxkcyA9ICRkYnJlc3VsdC0+ZmllbGRzOwogICAgJG9uZXJvdyA9IG5ldyBzdGRDbGFzcygpOwogICAgZm9yZWFjaCggJGZpZWxkcyBhcyAka2V5ID0+ICR2YWx1ZSApIHsKICAgICAgICAkb25lcm93LT4ka2V5ID0gJHZhbHVlOwogICAgfQoKICAgIC8vIGZpeCBzb21lIGZpZWxkcyB1cAogICAgJG9uZXJvdy0+cmVmZGF0ZSA9ICRkYi0+VW5peFRpbWVTdGFtcCgkb25lcm93LT5yZWZkYXRlKTsKICAgIGlmKCAkb25lcm93LT5pcGFkZHJlc3MgPT0gJycgKSAkb25lcm93LT5pcGFkZHJlc3MgPSAkdGhpcy0+TGFuZygndW5rbm93bicpOwogICAgJG9uZXJvdy0+cm93Y2xhc3MgPSAkcm93Y2xhc3M7CgogICAgJHJvd2FycmF5W10gPSAkb25lcm93OwogICAgJHJvd2NsYXNzID0gKCRyb3djbGFzcyA9PSAncm93MScpID8gJ3JvdzInIDogJ3JvdzEnOwogICAgJGRicmVzdWx0LT5Nb3ZlTmV4dCgpOwp9CgppZiggY291bnQoJHJvd2FycmF5KSA9PSAwICkgJHNtYXJ0eS0+YXNzaWduKCdtZXNzYWdlJywkdGhpcy0+TGFuZygnaW5mb19ub2hpc3RvcnlkZXRlY3RlZCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfcmVjb3Jkc2ZvdW5kJywkdGhpcy0+TGFuZygncHJvbXB0X3JlY29yZHNmb3VuZCcpKTsKJHNtYXJ0eS0+YXNzaWduKCd0aXRsZV9sZWdlbmRfZmlsdGVyJywkdGhpcy0+TGFuZygnZmlsdGVyJykpOwokc21hcnR5LT5hc3NpZ24oJ3RpdGxlX2xlZ2VuZF9ncm91cHNvcnQnLCR0aGlzLT5MYW5nKCd0aXRsZV9ncm91cHNvcnQnKSk7CiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywkdGhpcy0+WFRDcmVhdGVGb3JtU3RhcnQoJGlkLCd1c2VyaGlzdG9yeScpKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3JtZW5kJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdHVzZXJoaXN0b3J5JywkdGhpcy0+TGFuZygnc3VibWl0JykpKTsKJHNtYXJ0eS0+YXNzaWduKCdyZXNldCcsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwncmVzZXQnLCR0aGlzLT5MYW5nKCdyZXNldCcpKSk7Cgokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9wYWdlbGltaXQnLCR0aGlzLT5MYW5nKCdwcm9tcHRfcGFnZWxpbWl0JykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3BhZ2VsaW1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnaW5wdXRfcGFnZWxpbWl0JywkcGFnZWxpbWl0cywgLTEsICRpbnB1dF9wYWdlbGltaXQpKTsKCiRzbWFydHktPmFzc2lnbigncHJvbXB0X3NvcnRvcmRlcicsJHRoaXMtPkxhbmcoJ3NvcnRieScpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9zb3J0b3JkZXInLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ2lucHV0X3NvcnRvcmRlcicsJHNvcnRvcmRlcnMsIC0xLCAkaW5wdXRfc29ydG9yZGVyKSk7Cgokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9ncm91cF9pcCcsJHRoaXMtPkxhbmcoJ3Byb21wdF9ncm91cF9pcCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9ncm91cF9pcCcsCiAgICAgICAgICAgICAgICAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ2lucHV0X2dyb3VwX2lwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCR0aGlzLT5MYW5nKCd5ZXMnKT0+MSwgJHRoaXMtPkxhbmcoJ25vJyk9PjApLCAtMSwgJGlucHV0X2dyb3VwX2lwKSk7Cgokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF91c2VybmFtZV9yZWdleCcsJHRoaXMtPkxhbmcoJ3VzZXJmaWx0ZXInKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfdXNlcm5hbWVfcmVnZXgnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnaW5wdXRfdXNlcm5hbWVfcmVnZXgnLCAkaW5wdXRfdXNlcm5hbWVfcmVnZXgsIDI1KSk7Cgokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9maWx0ZXJfZXZlbnR0eXBlJywkdGhpcy0+TGFuZygncHJvbXB0X2ZpbHRlcl9ldmVudHR5cGUnKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfZmlsdGVyX2V2ZW50dHlwZScsICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnaW5wdXRfZXZlbnR0eXBlJywgJGV2ZW50dHlwZXMsIC0xLCRpbnB1dF9ldmVudHR5cGUpKTsKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfZmlsdGVyX2RhdGUnLCR0aGlzLT5MYW5nKCdwcm9tcHRfZmlsdGVyX2RhdGUnKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfZmlsdGVyX2RhdGUnLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ2lucHV0X2ZpbHRlcl9kYXRlJywgJGRhdGVsaXN0LC0xLCRpbnB1dF9maWx0ZXJfZGF0ZSkpOwoKJHNtYXJ0eS0+YXNzaWduKCd0aXRsZV91c2VyaGlzdG9yeScsJHRoaXMtPkxhbmcoJ3RpdGxlX3VzZXJoaXN0b3J5JykpOwokc21hcnR5LT5hc3NpZ24oJ2ZvcicsJHRoaXMtPkxhbmcoJ2ZvcicpKTsKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdXNlcm5hbWUnLCR0aGlzLT5MYW5nKCdwcm9tcHRfdXNlcm5hbWUnKSk7CiRzbWFydHktPmFzc2lnbigncHJvbXB0X2ZvcicsJHRoaXMtPkxhbmcoJ3Byb21wdF9mb3InKSk7CiRzbWFydHktPmFzc2lnbignaXRlbXMnLCRyb3dhcnJheSk7CiRzbWFydHktPmFzc2lnbignaXRlbWNvdW50Jyxjb3VudCgkcm93YXJyYXkpKTsKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfcmVmZGF0ZScsJHRoaXMtPkxhbmcoJ3Byb21wdF9kYXRlJykpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9hY3Rpb24nLCR0aGlzLT5MYW5nKCdwcm9tcHRfZXZlbnR0eXBlJykpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9pcGFkZHJlc3MnLCR0aGlzLT5MYW5nKCdwcm9tcHRfaXBhZGRyZXNzJykpOwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCd1c2VyaGlzdG9yeS50cGwnKTsKLy8gRU9GCg==]]></data>
	</file>
	<file>
	  <filename>/action.user_forcenewpw.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KCiR0ZW1wbGF0ZSA9IFxtYW1zX3V0aWxzOjpnZXRfdGVtcGxhdGUoJHBhcmFtcywnZm9yY2VuZXdwd3RlbXBsYXRlJywnTUFNUzo6Zm9yY2UgbmV3IHBhc3N3b3JkJyk7CiR0cGwgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJHRlbXBsYXRlKTsKJHRwbC0+YXNzaWduKCdmb3Jtc3RhcnQnLCR0aGlzLT5YVENyZWF0ZUZvcm1TdGFydCgkaWQsJ3VzZXJfZm9yY2VuZXdwdycsJHJldHVybmlkLCRwYXJhbXMpKTsKJHRwbC0+YXNzaWduKCdmb3JtZW5kJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCnRyeSB7CiAgICAkdWlkID0gKGludCkgeHRfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCd1aWQnKTsKICAgIGlmKCAkdWlkIDwgMSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZHBhcmFtcycpKTsKICAgICR1aWQyID0gJHRoaXMtPkxvZ2dlZEluSWQoKTsKICAgIGlmKCAkdWlkICE9ICR1aWQyICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkcGFyYW1zJykpOwoKICAgIGlmKCBpc3NldCgkcGFyYW1zWydtYW1zX3N1Ym1pdCddKSApIHsKICAgICAgICAkcHcxID0gY21zX2h0bWxfZW50aXR5X2RlY29kZSh4dF91dGlsczo6Z2V0X3BhcmFtKCRwYXJhbXMsJ21hbXNfcGFzc3dvcmQnKSk7CiAgICAgICAgJHB3MiA9IGNtc19odG1sX2VudGl0eV9kZWNvZGUoeHRfdXRpbHM6OmdldF9wYXJhbSgkcGFyYW1zLCdtYW1zX3JlcGVhdHBhc3N3b3JkJykpOwogICAgICAgIGlmKCAkcHcxICE9ICRwdzIgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX3Bhc3N3b3JkbWlzbWF0Y2gnKSk7CgogICAgICAgIC8vIHNlZSBpZiBpdCBpcyBhIHZhbGlkIHBhc3N3b3JkLgogICAgICAgIGlmKCAhJHRoaXMtPklzVmFsaWRQYXNzd29yZCgkcHcxICkgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRwYXNzd29yZCcpKTsKCiAgICAgICAgLy8gbm93IHNlZSBpZiB0aGUgcGFzc3dvcmQgaGFzIGFjdHVhbGx5IGNoYW5nZWQuCiAgICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICAgICAkZW5jcnlwdGVkID0gJHRoaXMtPkVuY3J5cHRQYXNzd29yZCgkdWlkLCRwdzEpOwogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgcGFzc3dvcmQgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX21hbXNfdXNlcnMgV0hFUkUgaWQgPSA/JzsKICAgICAgICAkc3RvcmVkID0gJGRiLT5HZXRPbmUoJHF1ZXJ5LGFycmF5KCR1aWQpKTsKICAgICAgICBpZiggJGVuY3J5cHRlZCA9PSAkc3RvcmVkICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9wYXNzd29yZG5vdGNoYW5nZWQnKSk7CgogICAgICAgIC8vIHNldCB0aGUgcGFzc3dvcmQKICAgICAgICAkdGhpcy0+U2V0VXNlclBhc3N3b3JkKCR1aWQsJHB3MSk7CgogICAgICAgIC8vIGRpc2FibGUgdGhlIGZvcmNlIHJlc2V0IGZsYWcKICAgICAgICAkdGhpcy0+Rm9yY2VQYXNzd29yZENoYW5nZSgkdWlkLEZBTFNFKTsKCiAgICAgICAgLy8gYW5kIHJlZGlyZWN0IG91dCBvIGhlcmUuCiAgICAgICAgaWYoICgkcmV0dXJudG8gPSBceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywncmV0dXJudG8nKSkgKSB7CiAgICAgICAgICAgICRwYWdlaWQgPSAkdGhpcy0+cmVzb2x2ZV9hbGlhc19vcl9pZCgkcmV0dXJudG8pOwogICAgICAgICAgICBpZiggJHBhZ2VpZCApICR0aGlzLT5SZWRpcmVjdENvbnRlbnQoJHBhZ2VpZCk7CiAgICAgICAgfQogICAgICAgIGlmKCAoJHVybCA9ICR0aGlzLT5HZXRQb3N0TG9naW5VUkwoKSkgKSB7CiAgICAgICAgICAgIHJlZGlyZWN0KCR1cmwpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmKCAoJHRwbHN0ciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwYWdlaWRfbG9naW4nKSkgKSB7CiAgICAgICAgICAgICR0cGwgPSAkc21hcnR5LT5DcmVhdGVUZW1wbGF0ZSgnc3RyaW5nOicuJHRwbHN0cik7CiAgICAgICAgICAgICRncm91cHMgPSAkdGhpcy0+R2V0TWVtYmVyR3JvdXBzQXJyYXkoICR1aWQgKTsKICAgICAgICAgICAgJGdyb3VwbmFtZSA9ICR0aGlzLT5HZXRHcm91cE5hbWUoICRncm91cHNbMF1bJ2dyb3VwaWQnXSApOwogICAgICAgICAgICAkdHBsLT5hc3NpZ24oJ3VzZXJuYW1lJywkdXNlcm5hbWUpOwogICAgICAgICAgICAkdHBsLT5hc3NpZ24oJ2dyb3VwJywkZ3JvdXBuYW1lKTsKICAgICAgICAgICAgJHRtcCA9ICR0cGwtPmZldGNoKCk7CiAgICAgICAgICAgIGlmKCAkdG1wICkgewogICAgICAgICAgICAgICAgJHBhZ2VpZCA9ICR0aGlzLT5yZXNvbHZlX2FsaWFzX29yX2lkKCR0bXApOwogICAgICAgICAgICAgICAgaWYoICRwYWdlaWQgKSAkdGhpcy0+UmVkaXJlY3RDb250ZW50KCRwYWdlaWQpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIGFsbCBlbHNlIGZhaWxzLCByZWRpcmVjdCBiYWNrIHRvIG91ciBjdXJyZW4gcGFnZS4KICAgICAgICAkdGhpcy0+UmVkaXJlY3RDb250ZW50KCRyZXR1cm5pZCk7CiAgICB9Cn0KY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAvLyBvbiBlcnJvciwgd2UganVzdCBkaXNwbGF5IGEgbWVzc2FnZS4KICAgICR0cGwtPmFzc2lnbignZXJyb3InLCRlLT5HZXRNZXNzYWdlKCkpOwp9CgokdHBsLT5kaXNwbGF5KCk7]]></data>
	</file>
	<file>
	  <filename>/action.verifycode.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KCiR1c2VybmFtZSA9ICRmYXRhbCA9ICRlcnJvciA9ICRtZXNzYWdlID0gbnVsbDsKJGRvX2Zvcm0gPSAxOwokdWlkID0gXHh0X3BhcmFtOjpnZXRfaW50KCRwYXJhbXMsJ3VpZCcpOwokY29kZSA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdjb2RlJyk7CiR1c2VybmFtZV9pc19lbWFpbCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd1c2VybmFtZV9pc19lbWFpbCcsMCk7CiRwYXNzd29yZDEgPSBceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnbWFtc19wYXNzd29yZDEnKTsKJHBhc3N3b3JkMiA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdtYW1zX3Bhc3N3b3JkMicpOwokdGVtcGxhdGUgPSBcbWFtc191dGlsczo6Z2V0X3RlbXBsYXRlKCRwYXJhbXMsJ2ZvcmdvdHB3dmVyaWZ5dGVtcGxhdGUnLCdNQU1TOjpmb3Jnb3QgcGFzc3dvcmQgdmVyaWZ5Jyk7CiR0cGwgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJHRlbXBsYXRlKTsKCnRyeSB7CiAgICBpZiggJHVpZCA8IDEgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKSk7CiAgICBpZiggISRjb2RlICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJykpOwogICAgJHJlcyA9ICR0aGlzLT5HZXRVc2VySW5mbygkdWlkKTsKICAgIGlmKCAhJHJlcyApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX3VzZXJub3Rmb3VuZCcpKTsKICAgICR1aW5mbyA9ICRyZXNbMV07CiAgICBpZiggIWlzX2FycmF5KCR1aW5mbyApKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl91c2Vybm90Zm91bmQnKSk7CiAgICBpZiggJHVpbmZvWydkaXNhYmxlZCddICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfYWNjb3VudGRpc2FibGVkJykpOwogICAgaWYoIHRpbWUoKSA+IHN0cnRvdGltZSgkdWluZm9bJ2V4cGlyZXMnXSkgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9hY2NvdW50ZXhwaXJlZCcpKTsKICAgICR1c2VybmFtZSA9ICR1aW5mb1sndXNlcm5hbWUnXTsKCiAgICBpZiggaXNzZXQoJHBhcmFtc1snbWFtc19hZnRlcnZlcmlmeSddKSApIHsKICAgICAgICAkdHBsLT5hc3NpZ24oJ21hbXNfYWZ0ZXJ2ZXJpZnknLDEpOwogICAgICAgICRkb19mb3JtID0gMDsKICAgICAgICAkbWVzc2FnZSA9ICR0aGlzLT5MYW5nKCdpbmZvX3Bhc3N3b3JkX3Jlc2V0Jyk7CiAgICB9CiAgICBlbHNlIGlmKCBpc3NldCgkcGFyYW1zWydtYW1zX3N1Ym1pdCddKSApIHsKICAgICAgICBpZiggIVx4dF91dGlsczo6dmFsaWRfZm9ybV9jc3JmKCkgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCAkdGhpcy0+TGFuZygnZXJyb3Jfc2VjdXJpdHknKSApOwogICAgICAgICR0ZW1wY29kZSA9ICR0aGlzLT5HZXRVc2VyVGVtcENvZGUoJHVpZCk7CiAgICAgICAgaWYoICEkdGVtcGNvZGUgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl90ZW1wY29kZW5vdGZvdW5kJykpOwoKICAgICAgICAkY29kZSA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdtYW1zX2NvZGUnKTsKICAgICAgICAkcGFzc3dvcmQxID0gY21zX2h0bWxfZW50aXR5X2RlY29kZShceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnbWFtc19wYXNzd29yZDEnKSk7CiAgICAgICAgJHBhc3N3b3JkMiA9IGNtc19odG1sX2VudGl0eV9kZWNvZGUoXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ21hbXNfcGFzc3dvcmQyJykpOwogICAgICAgIGlmKCAhJHRoaXMtPklzVmFsaWRQYXNzd29yZCgkcGFzc3dvcmQxKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZHBhc3N3b3JkJykpOwogICAgICAgIGlmKCAkcGFzc3dvcmQxICE9ICRwYXNzd29yZDIgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX3Bhc3N3b3JkbWlzbWF0Y2gnKSk7CiAgICAgICAgaWYoICRjb2RlICE9ICR0ZW1wY29kZSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZGNvZGUnKSk7CiAgICAgICAgJHRoaXMtPlNldFVzZXJQYXNzd29yZCgkdWlkLCRwYXNzd29yZDEpOwogICAgICAgICR0aGlzLT5SZW1vdmVVc2VyVGVtcENvZGUoJHVpZCk7CiAgICAgICAgJHVzZXJuYW1lID0gJHRoaXMtPkdldFVzZXJuYW1lKCR1aWQpOwoKICAgICAgICAvLyBhbmQgc2VuZCBhbiBldmVudAogICAgICAgICRldmVudF9wYXJhbXMgPSBhcnJheSgpOwogICAgICAgICRldmVudF9wYXJhbXNbJ25hbWUnXSA9ICR1c2VybmFtZTsKICAgICAgICAkZXZlbnRfcGFyYW1zWydpZCddID0gJHVpZDsKICAgICAgICBcQ01TTVNcSG9va01hbmFnZXI6OmRvX2hvb2soJ01BTVM6Ok9uVXBkYXRlVXNlcicsJGV2ZW50X3BhcmFtcyk7CgogICAgICAgIC8vIGFuZCBhdWRpdCBpdAogICAgICAgIGF1ZGl0KCR1aWQsJHRoaXMtPkdldE5hbWUoKSwnU3VjY2Vzc2Z1bGx5IGNoYW5nZWQgcGFzc3dvcmQgdmlhIGZvcmdvdHB3Jyk7CiAgICAgICAgJHRoaXMtPmFkZF9oaXN0b3J5KCR1aWQsJ3Jlc2V0cHcnKTsKCiAgICAgICAgLy8gYW5kIHJlZGlyZWN0IHNvbWV3aGVyZQogICAgICAgICRwYWdldHBsID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BhZ2VpZF9hZnRlcnZlcmlmeScpOwogICAgICAgIGlmKCAkcGFnZXRwbCApIHsKICAgICAgICAgICAgJHRwbDIgPSAkc21hcnR5LT5DcmVhdGVUZW1wbGF0ZSgnc3RyaW5nOicuJHBhZ2V0cGwpOwogICAgICAgICAgICAkdHBsMi0+YXNzaWduKCd1c2VybmFtZScsJGV2ZW50X3BhcmFtc1snbmFtZSddKTsKICAgICAgICAgICAgJHRwbDItPmFzc2lnbigndWlkJywkdWlkKTsKICAgICAgICAgICAgJGdyb3VwcyA9ICR0aGlzLT5HZXRNZW1iZXJHcm91cHNBcnJheSggJHVpZCApOwogICAgICAgICAgICAkZ3JvdXBuYW1lID0gJHRoaXMtPkdldEdyb3VwTmFtZSggJGdyb3Vwc1swXVsnZ3JvdXBpZCddICk7CiAgICAgICAgICAgICR0cGwyLT5hc3NpZ24oJ2dyb3VwbmFtZScsJGdyb3VwbmFtZSk7CiAgICAgICAgICAgICRwYWdlID0gJHRwbDItPmZldGNoKCk7CiAgICAgICAgICAgICRkZXN0ID0gJHRoaXMtPnJlc29sdmVfYWxpYXNfb3JfaWQoJHBhZ2UsJHJldHVybmlkKTsKICAgICAgICAgICAgaWYoICEkZGVzdCApIHsKICAgICAgICAgICAgICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ0NvdWxkIG5vdCBjb252ZXJ0IHRlbXBsYXRlICZxdW90OycuJHBhZ2V0cGwuJyZxdW90OyB0byBhIHBhZ2UgaWQnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICR0aGlzLT5SZWRpcmVjdENvbnRlbnQoJGRlc3QpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAvLyByZWRpcmVjdCBhZnRlciBQT1NUCiAgICAgICAgICAgICRwYXJtcyA9IGFycmF5KCdtYW1zX2FmdGVydmVyaWZ5Jz0+MSwndWlkJz0+JHVpZCwnY29kZSc9PidfX2ludmFsaWRfXycpOwogICAgICAgICAgICAkdGhpcy0+cmVkaXJlY3QoJ2NudG50MDAxJywndmVyaWZ5Y29kZScsJHJldHVybmlkLCRwYXJtcyk7CiAgICAgICAgfQogICAgfQp9CmNhdGNoKCBcUnVudGltZUV4Y2VwdGlvbiAkZSApIHsKICAgICRlcnJvciA9IDE7CiAgICAkbWVzc2FnZSA9ICRlLT5HZXRNZXNzYWdlKCk7Cn0KY2F0Y2goIFxMb2dpY0V4Y2VwdGlvbiAkZSApIHsKICAgICRkb19mb3JtID0gMDsKICAgICRlcnJvciA9IDE7CiAgICAkbWVzc2FnZSA9ICRlLT5HZXRNZXNzYWdlKCk7Cn0KCgovLyBjcmVhdGUgdGhlIHRlbXBsYXRlCmlmKCAkZG9fZm9ybSApIHsKICAgICRwYXJtcyA9IGFycmF5KCd1aWQnPT4kdWlkLCdjb2RlJz0+JGNvZGUpOwogICAgJHRwbC0+YXNzaWduKCdzdGFydGZvcm0nLCR0aGlzLT5YVENyZWF0ZUZvcm1TdGFydCgnY250bnQwMScsJ3ZlcmlmeWNvZGUnLCRyZXR1cm5pZCwkcGFybXMpKTsKICAgICR0cGwtPmFzc2lnbignZW5kZm9ybScsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7Cn0KJHRwbC0+YXNzaWduKCd1bmZsZGxlbicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZXJuYW1lZmxkbGVuZ3RoJykpOwokdHBsLT5hc3NpZ24oJ21heF91bmZsZGxlbicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ21heF91c2VybmFtZWxlbmd0aCcpKTsKJHRwbC0+YXNzaWduKCdwd2ZsZGxlbicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Bhc3N3b3JkZmxkbGVuZ3RoJykpOwokdHBsLT5hc3NpZ24oJ21heF9wd2ZsZGxlbicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ21heF9wYXNzd29yZGxlbmd0aCcpKTsKJHRwbC0+YXNzaWduKCd1c2VybmFtZV9pc19lbWFpbCcsJHVzZXJuYW1lX2lzX2VtYWlsKTsKJHRwbC0+YXNzaWduKCd1c2VybmFtZScsJHVzZXJuYW1lKTsKJHRwbC0+YXNzaWduKCdwYXNzd29yZDEnLCRwYXNzd29yZDEpOwokdHBsLT5hc3NpZ24oJ3Bhc3N3b3JkMicsJHBhc3N3b3JkMik7CiR0cGwtPmFzc2lnbignY29kZScsJGNvZGUpOwokdHBsLT5hc3NpZ24oJ3VpZCcsJHVpZCk7CiR0cGwtPmFzc2lnbignZXJyb3InLCRlcnJvcik7CiR0cGwtPmFzc2lnbignbWVzc2FnZScsJG1lc3NhZ2UpOwokdHBsLT5kaXNwbGF5KCk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.verifyonly.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KCiR0aXRsZSA9ICRlcnJvciA9ICRtc2cgPSBudWxsOwoKdHJ5IHsKICAgICR1aWQgPSBceHRfcGFyYW06OmdldF9pbnQoJHBhcmFtcywndWlkJyk7CiAgICBpZiggJHVpZCA8IDEgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpKTsKICAgICRyZXMgPSAkdGhpcy0+R2V0VXNlckluZm8oJHVpZCk7CiAgICBpZiggISRyZXMgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX3VzZXJub3Rmb3VuZCcpKTsKICAgICR1aW5mbyA9ICRyZXNbMV07CiAgICBpZiggIWlzX2FycmF5KCR1aW5mbyApKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX3VzZXJub3Rmb3VuZCcpKTsKICAgIGlmKCAkdWluZm9bJ2Rpc2FibGVkJ10gKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycm9yX2FjY291bnRkaXNhYmxlZCcpKTsKICAgIGlmKCB0aW1lKCkgPiBzdHJ0b3RpbWUoJHVpbmZvWydleHBpcmVzJ10pICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9hY2NvdW50ZXhwaXJlZCcpKTsKICAgIHVuc2V0KCRyZXMpOwogICAgJGNvZGUgPSBceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnY29kZScpOwogICAgaWYoICEkY29kZSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJykpOwogICAgaWYoICRjb2RlID09ICd4eHh4JyApICRjb2RlID0gbnVsbDsKICAgICRkYmNvZGUgPSAkdGhpcy0+R2V0VXNlclRlbXBDb2RlKCR1aWQpOwogICAgaWYoICEkZGJjb2RlICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCAkdGhpcy0+TGFuZygnZXJyb3JfdGVtcGNvZGVub3Rmb3VuZCcgKSApOwoKICAgIGlmKCBpc3NldCgkcGFyYW1zWydtYW1zX3N1Ym1pdCddKSApIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBpZiggIVx4dF91dGlsczo6dmFsaWRfZm9ybV9jc3JmKCkgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCAkdGhpcy0+TGFuZygnZXJyb3Jfc2VjdXJpdHknKSApOwoKICAgICAgICAgICAgJHRpdGxlID0gJHRoaXMtPkxhbmcoJ2FjY291bnRfdmVyaWZpY2F0aW9uJyk7CiAgICAgICAgICAgICRtc2cgPSBudWxsOwogICAgICAgICAgICAkZXJyb3IgPSBmYWxzZTsKCiAgICAgICAgICAgIGlmKCAhJGRiY29kZSB8fCAkZGJjb2RlICE9ICRjb2RlICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkY29kZScpKTsKCiAgICAgICAgICAgIC8vIHN1Y2Nlc3MgY29uZGl0aW9uCiAgICAgICAgICAgICR0aGlzLT5SZW1vdmVVc2VyVGVtcENvZGUoJHVpZCk7CiAgICAgICAgICAgICR0aGlzLT5Gb3JjZVZlcmlmeSgkdWlkLEZBTFNFKTsKICAgICAgICAgICAgYXVkaXQoJHVpZCwkdGhpcy0+R2V0TmFtZSgpLCdTdWNjZXNzZnVsbHkgdmVyaWZpZWQgaGlzL2hlciBpbmZvcm1hdGlvbicpOwogICAgICAgICAgICAkdGhpcy0+YWRkX2hpc3RvcnkoJHVpZCwndmVyaWZ5IGNvbXBsZXRlJyk7CgogICAgICAgICAgICBcQ01TTVNcSG9va01hbmFnZXI6OmRvX2hvb2soICdNQU1TOjpBZnRlclZlcmlmeScsIFsndWlkJz0+JHVpZCBdICk7CgogICAgICAgICAgICAkZXZlbnRfcGFybXMgPSBbXTsKICAgICAgICAgICAgJGV2ZW50X3Bhcm1zWydpZCddID0gJHVpZDsKICAgICAgICAgICAgJGV2ZW50X3Bhcm1zWyduYW1lJ10gPSAkdWluZm9bJ3VzZXJuYW1lJ107CiAgICAgICAgICAgIFxDTVNNU1xIb29rTWFuYWdlcjo6ZG9faG9vaygnTUFNUzo6T25VcGRhdGVVc2VyJywkZXZlbnRfcGFybXMpOwoKICAgICAgICAgICAgLy8gaWYgd2UgaGF2ZSBzYXZlZCBkYXRhIEFORCB3ZSBjYW4gbG9naW4gYWZ0ZXIgdmVyaWZ5CiAgICAgICAgICAgIC8vIHRoZW4gbG9nIHRoZSB1c2VyIGluLgogICAgICAgICAgICBpZiggJHRoaXMtPkdldFByZWZlcmVuY2UoJ2xvZ2luX2FmdGVyX3ZlcmlmeScpICkgewogICAgICAgICAgICAgICAgJGRhdGEgPSBcbWFtc191dGlsczo6cmV0cmlldmVfdGVtcF9sb2dpbmRhdGEoKTsKICAgICAgICAgICAgICAgIGlmKCAkZGF0YSApIHsKICAgICAgICAgICAgICAgICAgICAkcmVzID0gJHRoaXMtPkxvZ2luKCAkZGF0YS0+dXNlcm5hbWUsICRkYXRhLT5wYXNzd29yZCwgJGRhdGEtPm9ubHlncm91cHMpOwogICAgICAgICAgICAgICAgICAgIGlmKCAhJHJlc1swXSApIHRocm93IG5ldyBcTUFNU0xvZ2luRmFpbGVkRXhjZXB0aW9uKCRyZXNbMV0pOwogICAgICAgICAgICAgICAgICAgICR1aWQgPSAkcmVzWzBdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBzZWUgaWYgd2UgY2FuIHJlZGlyZWN0CiAgICAgICAgICAgICRwYWdlID0gXG1hbXNfdXRpbHM6OnJlc29sdmVfcHJlZnRwbF90b19wYWdlKCdwYWdlaWRfYWZ0ZXJ2ZXJpZnknLCR1aWQpOwogICAgICAgICAgICBpZiggJHBhZ2UgKSAkdGhpcy0+UmVkaXJlY3RDb250ZW50KCRwYWdlKTsKCiAgICAgICAgICAgIC8vIG5vIHBhZ2V0ZW1wbGF0ZSBvciBvdGhlciBlcnJvciBtZWFucyBubyByZWRpcmVjdAogICAgICAgICAgICAvLyBmYWxsIHRocm91Z2ggdG8gZGlzcGxheWluZyBhIG1lc3NhZ2UKICAgICAgICAgICAgJG1zZyA9ICR0aGlzLT5MYW5nKCdtc2dfdmVyaWZpY2F0aW9uX2NvbXBsZXRlJyk7CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgICAgICAkbXNnID0gJGUtPkdldE1lc3NhZ2UoKTsKICAgICAgICAgICAgJGVycm9yID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgJHRoaXMtPlNob3dGb3JtYXR0ZWRNZXNzYWdlKCRtc2csJGVycm9yLCR0aXRsZSk7CiAgICAgICAgcmV0dXJuOwogICAgfSAvLyBzdWJtaXQKCiAgICAvLyBkaXNwbGF5IHRoZSBmb3JtCiAgICAkdGhldGVtcGxhdGUgPSBcbWFtc191dGlsczo6Z2V0X3RlbXBsYXRlKCRwYXJhbXMsJ3ZlcmlmeWZvcm10ZW1wbGF0ZScsJ01BTVM6OnZlcmlmeV9mb3JtJyk7CiAgICAkdHBsID0gJHRoaXMtPkNyZWF0ZVNtYXJ0eVRlbXBsYXRlKCR0aGV0ZW1wbGF0ZSk7CiAgICAkdHBsLT5hc3NpZ24oJ3VpZCcsJHVpZCk7CiAgICAkdHBsLT5hc3NpZ24oJ2NvZGUnLCRjb2RlKTsKICAgICR0cGwtPmRpc3BsYXkoKTsKfQpjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICRtc2cgPSAkZS0+R2V0TWVzc2FnZSgpOwogICAgJGVycm9yID0gdHJ1ZTsKICAgICR0aGlzLT5TaG93Rm9ybWF0dGVkTWVzc2FnZSgkbXNnLCRlcnJvciwkdGl0bGUpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/action.viewuser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KCiR1aWQgPSAoaW50KSR0aGlzLT5Mb2dnZWRJbklkKCk7CiR1aWQgPSBceHRfcGFyYW06OmdldF9pbnQoJHBhcmFtcywndWlkJywkdWlkKTsKaWYoICR1aWQgPCAxICkgcmV0dXJuOwokdG1wID0gJHRoaXMtPkdldFVzZXJJbmZvKCR1aWQpOwppZiggJHRtcFswXSA9PT0gRkFMU0UgKSByZXR1cm47CiR1c2VyX2luZm8gPSAkdG1wWzFdOwokdG1wID0gbnVsbDsKJGdyb3VwcyA9ICR0aGlzLT5HZXRNZW1iZXJHcm91cHNBcnJheSggJHVpZCApOwppZiggISRncm91cHMgKSByZXR1cm47CgokdGhldGVtcGxhdGUgPSBcbWFtc191dGlsczo6Z2V0X3RlbXBsYXRlKCRwYXJhbXMsJ3ZpZXd1c2VydGVtcGxhdGUnLCdNQU1TOjp2aWV3IHVzZXInKTsKJHRwbCA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgkdGhldGVtcGxhdGUpOwokdHBsLT5hc3NpZ24oJ3VzZXJpbmZvJywkdXNlcl9pbmZvKTsKJHRwbC0+YXNzaWduKCdlbWFpbF9hZGRyZXNzJywkdGhpcy0+R2V0RW1haWwoJHVpZCkpOwoKLy8gbm93IHdlIGhhdmUgdGhlIGdyb3Vwcywgd2UgYnVpbGQgYSB1bmlvbiBvZiBhbGwgb2YgdGhlIGdyb3VwcyBwcm9wZXJ0aWVzCiRwcm9wMiA9IGFycmF5KCk7CmZvcmVhY2goICRncm91cHMgYXMgJGdycHJlY29yZCApCnsKICAgICRnaWQgPSAkZ3JwcmVjb3JkWydncm91cGlkJ107CiAgICAkcHJvcHJlbGF0aW9ucyA9ICR0aGlzLT5HZXRHcm91cFByb3BlcnR5UmVsYXRpb25zKCAkZ2lkICk7CiAgICAkcHJvcDIgPSBcTUFNU1xSUlV0aWxzOjphcnJheV9tZXJnZV9ieV9uYW1lX3JlcXVpcmVkKCAkcHJvcDIsICRwcm9wcmVsYXRpb25zICk7CiAgICB1YXNvcnQoICRwcm9wMiwgYXJyYXkoJ3h0X2FycmF5JywnY29tcGFyZV9lbGVtZW50c19ieV9zb3J0b3JkZXJfa2V5JykgKTsKfQoKLy8gbm93IHdlIG1lcmdlIGluIGFsbCBvZiB0aGUgcHJvcGVydHkgZGVmaW5pdGlvbnMKJGRlZm5zID0gJHRoaXMtPkdldFByb3BlcnR5RGVmbnMoKTsKJHByb3AzID0gYXJyYXkoKTsKZm9yZWFjaCggJHByb3AyIGFzICRvbmVwcm9wICkgewogICAgZm9yZWFjaCggJGRlZm5zIGFzICRvbmVkZWZuICkgewogICAgICAgIGlmKCAkb25lZGVmblsnbmFtZSddID09ICRvbmVwcm9wWyduYW1lJ10gKSB7CiAgICAgICAgICAgICRvbmVwcm9wWydwcm9tcHQnXSA9ICRvbmVkZWZuWydwcm9tcHQnXTsKICAgICAgICAgICAgJG9uZXByb3BbJ3R5cGUnXSA9ICRvbmVkZWZuWyd0eXBlJ107CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KICAgICRwcm9wM1tdID0gJG9uZXByb3A7Cn0KCi8vIEFuZCBub3cgbWVyZ2UgaW4gdGhlIHZhbHVlcwokdXNlcnByb3BzID0gJHRoaXMtPkdldFVzZXJQcm9wZXJ0aWVzKCR1aWQpOwokcHJvcHNieW5hbWUgPSBhcnJheSgpOwpmb3JlYWNoKCAkcHJvcDMgYXMgJG9uZXByb3AgKSB7CiAgICBpZiggaXNfYXJyYXkoJHVzZXJwcm9wcykgKSB7CiAgICAgICAgZm9yZWFjaCggJHVzZXJwcm9wcyBhcyAkb25ldmFsICkgewogICAgICAgICAgICBpZiggJG9uZXByb3BbJ25hbWUnXSA9PSAkb25ldmFsWyd0aXRsZSddICYmIGlzc2V0KCRvbmV2YWxbJ2RhdGEnXSkgJiYgIWVtcHR5KCRvbmV2YWxbJ2RhdGEnXSkgKSB7CiAgICAgICAgICAgICAgICAkb25lcHJvcFsnZGF0YSddID0gJG9uZXZhbFsnZGF0YSddOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgaWYoIGlzc2V0KCRvbmVwcm9wWydkYXRhJ10pICkgJHByb3BzYnluYW1lWyRvbmVwcm9wWyduYW1lJ11dID0gJG9uZXByb3A7Cn0KCiR0cGwtPmFzc2lnbigndXNlcl9wcm9wZXJ0aWVzJywkcHJvcHNieW5hbWUpOwokdHBsLT5kaXNwbGF5KCk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/css</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/css/bs</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/css/bs/bs.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiLi9saWIvY29yZS5jc3MiOw0KQGltcG9ydCAiLi9saWIvaGVscGVycy5jc3MiOw0KQGltcG9ydCAiLi9saWIvbWFyZ2luX3BhZGRpbmcuY3NzIjsNCkBpbXBvcnQgIi4vbGliL21pc2MuY3NzIjsNCkBpbXBvcnQgIi4vbGliL2dyaWQuY3NzIjsNCkBpbXBvcnQgIi4vbGliL2xnLWdyaWQuY3NzIjsNCkBpbXBvcnQgIi4vbGliL21kLWdyaWQuY3NzIjsNCkBpbXBvcnQgIi4vbGliL3NtLWdyaWQuY3NzIjsNCkBpbXBvcnQgIi4vbGliL2dyaWQtdXRpbHMuY3NzIjsNCg==]]></data>
	</file>
	<file>
	  <filename>/css/bs/lib</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/css/bs/lib/core.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgIlVURi04IjsKCi5cXC1sYXlvdXQKewogIGRpc3BsYXk6IGJsb2NrOwogIG92ZXJmbG93LXg6IGhpZGRlbjsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDEwMCU7CiAgZm9udC1zaXplOiAxNnB4OwogIGNvbG9yOiAjNTQ2Nzc4OwogIGZvbnQtd2VpZ2h0OiBub3JtYWw7Cn0KCi5cXC1sYXlvdXQtLWxlZnQKewogIGZsb2F0OiBsZWZ0Owp9CgouXFwtbGF5b3V0LS1yaWdodAp7CiAgZmxvYXQ6IHJpZ2h0Owp9CgouXFwtYnJhbmQKewogIGZvbnQtZmFtaWx5OiAiTW9udHNlcnJhdCIsICJSb2JvdG8iLCBzYW5zLXNlcmlmOwp9CgouXFwtYmxvY2txdW90ZQp7CiAgZGlzcGxheTogYmxvY2s7CiAgY29sb3I6ICM4NzlBQUI7CiAgZm9udC1zaXplOiAxNnB4OwogIGxpbmUtaGVpZ2h0OiAyNHB4OwogIGJvcmRlci1sZWZ0OiA0cHggc29saWQgIzg3OUFBQjsKICBwYWRkaW5nLXRvcDogNXB4OwogIHBhZGRpbmctYm90dG9tOiA1cHg7CiAgcGFkZGluZy1yaWdodDogMTBweDsKICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKICBtYXJnaW4tbGVmdDogMHB4OwogIG1hcmdpbi1yaWdodDogMHB4Owp9CgouXFwtY29kZQp7CiAgY29sb3I6ICNFRTY3NUQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGZvbnQtc2l6ZTogMTNweDsKICBmb250LXdlaWdodDogNjAwOwogIGJhY2tncm91bmQtY29sb3I6ICNFRUYyRjc7CiAgYm9yZGVyLXJhZGl1czogM3B4OwogIHBhZGRpbmctdG9wOiAycHg7CiAgcGFkZGluZy1ib3R0b206IDJweDsKICBwYWRkaW5nLWxlZnQ6IDVweDsKICBwYWRkaW5nLXJpZ2h0OiA1cHg7Cn0KCi5cXC1jb2RlLS1kYXJrCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2Nzc4ICFpbXBvcnRhbnQ7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1oMQp7CiAgZGlzcGxheTogYmxvY2s7CiAgZm9udC1zaXplOiA0MHB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgbGluZS1oZWlnaHQ6IDUxcHg7CiAgY29sb3I6ICM1NDY3Nzg7CiAgcGFkZGluZzogMHB4OwogIG1hcmdpbi1ib3R0b206IDAuNWVtOwp9CgouXFwtaDE6bm90KDpmaXJzdC1jaGlsZCkKewogIG1hcmdpbi10b3A6IDMwcHg7Cn0KCi5cXC1oMgp7CiAgZGlzcGxheTogYmxvY2s7CiAgZm9udC1zaXplOiAzMnB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgbGluZS1oZWlnaHQ6IDQwcHg7CiAgY29sb3I6ICM1NDY3Nzg7CiAgcGFkZGluZzogMHB4OwogIG1hcmdpbi1ib3R0b206IDAuNWVtOwp9CgouXFwtaDI6bm90KDpmaXJzdC1jaGlsZCkKewogIG1hcmdpbi10b3A6IDMwcHg7Cn0KCi5cXC1oMwp7CiAgZGlzcGxheTogYmxvY2s7CiAgZm9udC1zaXplOiAyOHB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgbGluZS1oZWlnaHQ6IDI5cHg7CiAgY29sb3I6ICM1NDY3Nzg7CiAgcGFkZGluZzogMHB4OwogIG1hcmdpbi1ib3R0b206IDAuNWVtOwp9CgouXFwtaDM6bm90KDpmaXJzdC1jaGlsZCkKewogIG1hcmdpbi10b3A6IDMwcHg7Cn0KCi5cXC1oNAp7CiAgZGlzcGxheTogYmxvY2s7CiAgZm9udC1zaXplOiAyNHB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgbGluZS1oZWlnaHQ6IDI1cHg7CiAgY29sb3I6ICM1NDY3Nzg7CiAgcGFkZGluZzogMHB4OwogIG1hcmdpbi1ib3R0b206IDAuNWVtOwp9CgouXFwtaDQ6bm90KDpmaXJzdC1jaGlsZCkKewogIG1hcmdpbi10b3A6IDMwcHg7Cn0KCi5cXC1oNQp7CiAgZGlzcGxheTogYmxvY2s7CiAgZm9udC1zaXplOiAyMHB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgbGluZS1oZWlnaHQ6IDIycHg7CiAgY29sb3I6ICM1NDY3Nzg7CiAgcGFkZGluZzogMHB4OwogIG1hcmdpbi1ib3R0b206IDAuNWVtOwp9CgouXFwtaDU6bm90KDpmaXJzdC1jaGlsZCkKewogIG1hcmdpbi10b3A6IDMwcHg7Cn0KCi5cXC1oNgp7CiAgZGlzcGxheTogYmxvY2s7CiAgZm9udC1zaXplOiAxNnB4OwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgbGluZS1oZWlnaHQ6IDIwcHg7CiAgY29sb3I6ICM1NDY3Nzg7CiAgcGFkZGluZzogMHB4OwogIG1hcmdpbi1ib3R0b206IDAuNWVtOwp9CgouXFwtaDY6bm90KDpmaXJzdC1jaGlsZCkKewogIG1hcmdpbi10b3A6IDMwcHg7Cn0KCi5cXC1saW5rCnsKICBjb2xvcjogIzRFOTFFNDsKICBmb250LXdlaWdodDogNjAwOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICB0cmFuc2l0aW9uOiBjb2xvciAwLjNzOwogIGN1cnNvcjogcG9pbnRlcjsKfQoKLlxcLWxpbms6aG92ZXIKewogIGNvbG9yOiAjMUI1RUIxOwp9CgouXFwtcGFyYWdyYXBoLAouXFwtcAp7CiAgZGlzcGxheTogYmxvY2s7CiAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgZm9udC1zaXplOiAxNnB4OwogIG1hcmdpbi10b3A6IDBweDsKICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9CgouXFwtcGFyYWdyYXBoLS1sZWFkLAouXFwtcC0tbGVhZAp7CiAgZm9udC1zaXplOiAyMHB4OwogIGxpbmUtaGVpZ2h0OiAzMHB4Owp9CgouXFwtcHJlCnsKICBkaXNwbGF5OiBibG9jazsKICBvdmVyZmxvdy14OiBhdXRvOwogIHdpZHRoOiBjYWxjKDEwMCUgLSAyICogMTVweCk7CiAgY29sb3I6ICM1NDY3Nzg7CiAgbGluZS1oZWlnaHQ6IDIycHg7CiAgZm9udC1zaXplOiAxNHB4OwogIGJhY2tncm91bmQtY29sb3I6ICNFRUYyRjc7CiAgYm9yZGVyLXJhZGl1czogNXB4OwogIHBhZGRpbmc6IDE1cHg7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKICBtYXJnaW4tdG9wOiAwcHg7Cn0KCi5cXC1wcmUtLWRhcmsKewogIGJhY2tncm91bmQtY29sb3I6ICM1NDY3NzggIWltcG9ydGFudDsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLXNtYWxsCnsKICBmb250LXNpemU6IDEzcHg7CiAgY29sb3I6ICM4NzlBQUI7Cn0KCi5cXC1idG4KewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3M7CiAgY3Vyc29yOiBwb2ludGVyOwogIGxpbmUtaGVpZ2h0OiAyNHB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgZm9udC1zaXplOiAxNnB4OwogIHBhZGRpbmctbGVmdDogMTVweDsKICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogIHBhZGRpbmctdG9wOiA1cHg7CiAgcGFkZGluZy1ib3R0b206IDVweDsKICBib3JkZXItcmFkaXVzOiA1cHg7CiAgYm9yZGVyOiAwcHg7CiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAta2h0bWwtdXNlci1zZWxlY3Q6IG5vbmU7CiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7Cn0KCi5cXC1idG46aG92ZXIKewogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUVGMkY3Owp9CgouXFwtYnRuLlxcLWJ0bi0tcHJpbWFyeQp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzRFOTFFNDsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWJ0bi5cXC1idG4tLXByaW1hcnk6aG92ZXIKewogIGJhY2tncm91bmQtY29sb3I6ICMxQjVFQjE7Cn0KCi5cXC1idG4uXFwtYnRuLS1zdWNjZXNzCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNEFDRjdGOwogIGNvbG9yOiAjRkZGOwp9CgouXFwtYnRuLlxcLWJ0bi0tc3VjY2Vzczpob3Zlcgp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzI2OEQ0RjsKfQoKLlxcLWJ0bi5cXC1idG4tLXdhcm5pbmcKewogIGJhY2tncm91bmQtY29sb3I6ICNGQkM4NTA7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1idG4uXFwtYnRuLS13YXJuaW5nOmhvdmVyCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRTA5RjA1Owp9CgouXFwtYnRuLlxcLWJ0bi0tZXJyb3IKewogIGJhY2tncm91bmQtY29sb3I6ICNFRTY3NUQ7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1idG4uXFwtYnRuLS1lcnJvcjpob3Zlcgp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0NGMjMxNjsKfQoKLlxcLWJ0bi5cXC1idG4tLWRhcmsKewogIGJhY2tncm91bmQtY29sb3I6ICM1NDY3Nzg7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1idG4uXFwtYnRuLS1kYXJrOmhvdmVyCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMkEzNDNDOwp9CgouXFwtYnRuLlxcLWJ0bi0tbGlnaHQKewogIGJhY2tncm91bmQtY29sb3I6ICNEREU1RUU7CiAgY29sb3I6ICM1NDY3Nzg7Cn0KCi5cXC1idG4uXFwtYnRuLS1saWdodDpob3Zlcgp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0NCRDhFNjsKfQoKLlxcLWJ0bi5cXC1idG4tLW5hdnkKewogIGJhY2tncm91bmQtY29sb3I6ICM1NDY3Nzg7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1idG4uXFwtYnRuLS1ncmVlbgp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzkzRDI2MDsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWJ0bi5cXC1idG4tLXRlYWwKewogIGJhY2tncm91bmQtY29sb3I6ICM2MEQyQjY7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1idG4uXFwtYnRuLS1ibHVlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNEU5MUU0OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtYnRuLlxcLWJ0bi0tcHVycGxlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjQUM5NEU4OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtYnRuLlxcLWJ0bi0tcGluawp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0U3N0VCODsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWJ0bi5cXC1idG4tLXJlZAp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFNjc1RDsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWJ0bi5cXC1idG4tLW9yYW5nZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0Y3ODA1NTsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWJ0bi5cXC1idG4tLXllbGxvdwp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0ZCQzg1MDsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWJ0bi5cXC1idG4tLWdyZXkKewogIGJhY2tncm91bmQtY29sb3I6ICNEREU1RUU7CiAgY29sb3I6ICM1NDY3Nzg7Cn0KCi5cXC1idG4tLWRpc2FibGVkCnsKICBvcGFjaXR5OiAwLjYgIWltcG9ydGFudDsKICBjdXJzb3I6IG5vdC1hbGxvd2VkICFpbXBvcnRhbnQ7Cn0KCi5cXC1idG4tLXNtYWxsCnsKICBwYWRkaW5nLWxlZnQ6IDEwcHg7CiAgcGFkZGluZy1yaWdodDogMTBweDsKICBwYWRkaW5nLXRvcDogNHB4OwogIHBhZGRpbmctYm90dG9tOiA0cHg7CiAgZm9udC1zaXplOiAxMnB4OwogIGxpbmUtaGVpZ2h0OiAxNnB4Owp9CgouXFwtYnRuLS1iaWcKewogIHBhZGRpbmctbGVmdDogMjBweDsKICBwYWRkaW5nLXJpZ2h0OiAyMHB4OwogIHBhZGRpbmctdG9wOiA5cHg7CiAgcGFkZGluZy1ib3R0b206IDlweDsKICBmb250LXNpemU6IDIwcHg7CiAgbGluZS1oZWlnaHQ6IDMwcHg7Cn0KCi5cXC1idG4tLWZsdWlkCnsKICB3aWR0aDogMTAwJTsKICBwYWRkaW5nLWxlZnQ6IDBweCAhaW1wb3J0YW50OwogIHBhZGRpbmctcmlnaHQ6IDBweCAhaW1wb3J0YW50Owp9CgouXFwtYnRuLS1yb3VuZGVkCnsKICBib3JkZXItcmFkaXVzOiA1MHB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC1idG4tZ3JvdXAKewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLlxcLWJ0bi1ncm91cCA+IC5cXC1idG46bm90KDpmaXJzdC1jaGlsZCkKewogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDBweDsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwcHg7CiAgbWFyZ2luLWxlZnQ6IC0xcHg7Cn0KCi5cXC1idG4tZ3JvdXAgPiAuXFwtYnRuOm5vdCg6bGFzdC1jaGlsZCkKewogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwcHg7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDBweDsKICBtYXJnaW4tcmlnaHQ6IC0ycHg7Cn0KCi5cXC1jbG9zZQp7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiAyMHB4OwogIGhlaWdodDogMjBweDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBib3JkZXItcmFkaXVzOiAxMDBweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDg0LCAxMDMsIDEyMCwgMC4zKTsKfQoKLlxcLWNsb3NlOmFmdGVyLCAuXFwtY2xvc2U6YmVmb3JlCnsKICBjb250ZW50OiAiIjsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTJweDsKICBoZWlnaHQ6IDJweDsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiA5cHg7CiAgbGVmdDogNHB4OwogIGJhY2tncm91bmQtY29sb3I6ICNGRkY7Cn0KCi5cXC1jbG9zZTphZnRlcgp7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7CiAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOwp9CgouXFwtY2xvc2U6YmVmb3JlCnsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7CiAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsKfQoKLlxcLWNsb3NlOmhvdmVyCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDg0LCAxMDMsIDEyMCwgMC41KTsKfQoKLlxcLXJ1bGUKewogIGRpc3BsYXk6IGJsb2NrOwogIGhlaWdodDogMnB4OwogIGJhY2tncm91bmQtY29sb3I6ICNEREU1RUU7CiAgcGFkZGluZzogMHB4OwogIG1hcmdpbi10b3A6IDE1cHg7CiAgbWFyZ2luLWJvdHRvbTogMTVweDsKICBib3JkZXI6IDBweDsKfQoKLlxcLXJ1bGU6Zmlyc3QtY2hpbGQKewogIG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50Owp9CgouXFwtcnVsZTpsYXN0LWNoaWxkCnsKICBtYXJnaW4tYm90dG9tOiAwcHggIWltcG9ydGFudDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHNpaW1wbGUtc3Bpbm5lci1hbmltYXRpb24KewogIDUwJQogIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIH0KfQoKQGtleWZyYW1lcyBzaWltcGxlLXNwaW5uZXItYW5pbWF0aW9uCnsKICA1MCUKICB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICB9Cn0KCi5cXC1zcGlubmVyCnsKICB3aWR0aDogMTBweDsKICBoZWlnaHQ6IDEwcHg7CiAgY29udGVudDogIiI7CiAgLXdlYmtpdC1hbmltYXRpb246IHNpaW1wbGUtc3Bpbm5lci1hbmltYXRpb24gMXMgaW5maW5pdGUgZWFzZS1pbi1vdXQ7CiAgYW5pbWF0aW9uOiBzaWltcGxlLXNwaW5uZXItYW5pbWF0aW9uIDFzIGluZmluaXRlIGVhc2UtaW4tb3V0OwogIC13ZWJraXQtYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDsKICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoOwogIGJvcmRlci1yYWRpdXM6IDEwMHB4OwogIGRpc3BsYXk6IGJsb2NrOwogIHRleHQtaW5kZW50OiAtOTk5OWVtOwogIGZvbnQtc2l6ZTogMTBweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOwogIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAwLjMzczsKICBhbmltYXRpb24tZGVsYXk6IDAuMzNzOwogIG1hcmdpbi1sZWZ0OiBhdXRvOwogIG1hcmdpbi1yaWdodDogYXV0bzsKICBtYXJnaW4tdG9wOiAwcHg7Cn0KCi5cXC1zcGlubmVyOmJlZm9yZQp7CiAgd2lkdGg6IDEwcHg7CiAgaGVpZ2h0OiAxMHB4OwogIGNvbnRlbnQ6ICIiOwogIC13ZWJraXQtYW5pbWF0aW9uOiBzaWltcGxlLXNwaW5uZXItYW5pbWF0aW9uIDFzIGluZmluaXRlIGVhc2UtaW4tb3V0OwogIGFuaW1hdGlvbjogc2lpbXBsZS1zcGlubmVyLWFuaW1hdGlvbiAxcyBpbmZpbml0ZSBlYXNlLWluLW91dDsKICAtd2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7CiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDsKICBib3JkZXItcmFkaXVzOiAxMDBweDsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogY2FsYygxNXB4ICogLTEpOwogIHRvcDogMDsKfQoKLlxcLXNwaW5uZXI6YWZ0ZXIKewogIHdpZHRoOiAxMHB4OwogIGhlaWdodDogMTBweDsKICBjb250ZW50OiAiIjsKICAtd2Via2l0LWFuaW1hdGlvbjogc2lpbXBsZS1zcGlubmVyLWFuaW1hdGlvbiAxcyBpbmZpbml0ZSBlYXNlLWluLW91dDsKICBhbmltYXRpb246IHNpaW1wbGUtc3Bpbm5lci1hbmltYXRpb24gMXMgaW5maW5pdGUgZWFzZS1pbi1vdXQ7CiAgLXdlYmtpdC1hbmltYXRpb24tZmlsbC1tb2RlOiBib3RoOwogIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7CiAgYm9yZGVyLXJhZGl1czogMTAwcHg7CiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDAuNjZzOwogIGFuaW1hdGlvbi1kZWxheTogMC42NnM7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDE1cHg7CiAgdG9wOiAwOwp9CgouXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1wcmltYXJ5LCAuXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1wcmltYXJ5OmFmdGVyLCAuXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1wcmltYXJ5OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzRFOTFFNDsKfQoKLlxcLXNwaW5uZXIuXFwtc3Bpbm5lci0tc3VjY2VzcywgLlxcLXNwaW5uZXIuXFwtc3Bpbm5lci0tc3VjY2VzczphZnRlciwgLlxcLXNwaW5uZXIuXFwtc3Bpbm5lci0tc3VjY2VzczpiZWZvcmUKewogIGJhY2tncm91bmQtY29sb3I6ICM0QUNGN0Y7Cn0KCi5cXC1zcGlubmVyLlxcLXNwaW5uZXItLXdhcm5pbmcsIC5cXC1zcGlubmVyLlxcLXNwaW5uZXItLXdhcm5pbmc6YWZ0ZXIsIC5cXC1zcGlubmVyLlxcLXNwaW5uZXItLXdhcm5pbmc6YmVmb3JlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkJDODUwOwp9CgouXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1lcnJvciwgLlxcLXNwaW5uZXIuXFwtc3Bpbm5lci0tZXJyb3I6YWZ0ZXIsIC5cXC1zcGlubmVyLlxcLXNwaW5uZXItLWVycm9yOmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFNjc1RDsKfQoKLlxcLXNwaW5uZXIuXFwtc3Bpbm5lci0tZGFyaywgLlxcLXNwaW5uZXIuXFwtc3Bpbm5lci0tZGFyazphZnRlciwgLlxcLXNwaW5uZXIuXFwtc3Bpbm5lci0tZGFyazpiZWZvcmUKewogIGJhY2tncm91bmQtY29sb3I6ICM1NDY3Nzg7Cn0KCi5cXC1zcGlubmVyLlxcLXNwaW5uZXItLWxpZ2h0LCAuXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1saWdodDphZnRlciwgLlxcLXNwaW5uZXIuXFwtc3Bpbm5lci0tbGlnaHQ6YmVmb3JlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRERFNUVFOwp9CgouXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1uYXZ5LCAuXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1uYXZ5OmFmdGVyLCAuXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1uYXZ5OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzU0Njc3ODsKfQoKLlxcLXNwaW5uZXIuXFwtc3Bpbm5lci0tZ3JlZW4sIC5cXC1zcGlubmVyLlxcLXNwaW5uZXItLWdyZWVuOmFmdGVyLCAuXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1ncmVlbjpiZWZvcmUKewogIGJhY2tncm91bmQtY29sb3I6ICM5M0QyNjA7Cn0KCi5cXC1zcGlubmVyLlxcLXNwaW5uZXItLXRlYWwsIC5cXC1zcGlubmVyLlxcLXNwaW5uZXItLXRlYWw6YWZ0ZXIsIC5cXC1zcGlubmVyLlxcLXNwaW5uZXItLXRlYWw6YmVmb3JlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjBEMkI2Owp9CgouXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1ibHVlLCAuXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1ibHVlOmFmdGVyLCAuXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1ibHVlOmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzRFOTFFNDsKfQoKLlxcLXNwaW5uZXIuXFwtc3Bpbm5lci0tcHVycGxlLCAuXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1wdXJwbGU6YWZ0ZXIsIC5cXC1zcGlubmVyLlxcLXNwaW5uZXItLXB1cnBsZTpiZWZvcmUKewogIGJhY2tncm91bmQtY29sb3I6ICNBQzk0RTg7Cn0KCi5cXC1zcGlubmVyLlxcLXNwaW5uZXItLXBpbmssIC5cXC1zcGlubmVyLlxcLXNwaW5uZXItLXBpbms6YWZ0ZXIsIC5cXC1zcGlubmVyLlxcLXNwaW5uZXItLXBpbms6YmVmb3JlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRTc3RUI4Owp9CgouXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1yZWQsIC5cXC1zcGlubmVyLlxcLXNwaW5uZXItLXJlZDphZnRlciwgLlxcLXNwaW5uZXIuXFwtc3Bpbm5lci0tcmVkOmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFNjc1RDsKfQoKLlxcLXNwaW5uZXIuXFwtc3Bpbm5lci0tb3JhbmdlLCAuXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1vcmFuZ2U6YWZ0ZXIsIC5cXC1zcGlubmVyLlxcLXNwaW5uZXItLW9yYW5nZTpiZWZvcmUKewogIGJhY2tncm91bmQtY29sb3I6ICNGNzgwNTU7Cn0KCi5cXC1zcGlubmVyLlxcLXNwaW5uZXItLXllbGxvdywgLlxcLXNwaW5uZXIuXFwtc3Bpbm5lci0teWVsbG93OmFmdGVyLCAuXFwtc3Bpbm5lci5cXC1zcGlubmVyLS15ZWxsb3c6YmVmb3JlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkJDODUwOwp9CgouXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1ncmV5LCAuXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1ncmV5OmFmdGVyLCAuXFwtc3Bpbm5lci5cXC1zcGlubmVyLS1ncmV5OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0RERTVFRTsKfQoKLlxcLXNwaW5uZXItLXNtYWxsLCAuXFwtc3Bpbm5lci0tc21hbGw6YmVmb3JlLCAuXFwtc3Bpbm5lci0tc21hbGw6YWZ0ZXIKewogIHdpZHRoOiA4cHggIWltcG9ydGFudDsKICBoZWlnaHQ6IDhweCAhaW1wb3J0YW50Owp9CgouXFwtc3Bpbm5lci0tc21hbGw6YmVmb3JlCnsKICBsZWZ0OiBjYWxjKDEzcHggKiAtMSkgIWltcG9ydGFudDsKfQoKLlxcLXNwaW5uZXItLXNtYWxsOmFmdGVyCnsKICBsZWZ0OiAxM3B4ICFpbXBvcnRhbnQ7Cn0KCi5cXC1zcGlubmVyLS1sYXJnZSwgLlxcLXNwaW5uZXItLWxhcmdlOmJlZm9yZSwgLlxcLXNwaW5uZXItLWxhcmdlOmFmdGVyCnsKICB3aWR0aDogMTVweCAhaW1wb3J0YW50OwogIGhlaWdodDogMTVweCAhaW1wb3J0YW50Owp9CgouXFwtc3Bpbm5lci0tbGFyZ2U6YmVmb3JlCnsKICBsZWZ0OiBjYWxjKDIwcHggKiAtMSkgIWltcG9ydGFudDsKfQoKLlxcLXNwaW5uZXItLWxhcmdlOmFmdGVyCnsKICBsZWZ0OiAyMHB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC10YWcKewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBmb250LXNpemU6IDExcHg7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGxpbmUtaGVpZ2h0OiAxOXB4OwogIGJvcmRlci1yYWRpdXM6IDRweDsKICBwYWRkaW5nLWxlZnQ6IDhweDsKICBwYWRkaW5nLXJpZ2h0OiA4cHg7CiAgdmVydGljYWwtYWxpZ246IHRleHQtdG9wOwp9CgouXFwtdGFnLS1yb3VuZGVkCnsKICBib3JkZXItcmFkaXVzOiAxNXB4Owp9CgouXFwtdGFnLlxcLXRhZy0tcHJpbWFyeQp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzRFOTFFNDsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLXRhZy5cXC10YWctLXN1Y2Nlc3MKewogIGJhY2tncm91bmQtY29sb3I6ICM0QUNGN0Y7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC10YWcuXFwtdGFnLS13YXJuaW5nCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkJDODUwOwogIGNvbG9yOiAjRkZGOwp9CgouXFwtdGFnLlxcLXRhZy0tZXJyb3IKewogIGJhY2tncm91bmQtY29sb3I6ICNFRTY3NUQ7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC10YWcuXFwtdGFnLS1kYXJrCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2Nzc4OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtdGFnLlxcLXRhZy0tbGlnaHQKewogIGJhY2tncm91bmQtY29sb3I6ICNEREU1RUU7CiAgY29sb3I6ICM1NDY3Nzg7Cn0KCi5cXC10YWcuXFwtdGFnLS1uYXZ5CnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2Nzc4OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtdGFnLlxcLXRhZy0tZ3JlZW4KewogIGJhY2tncm91bmQtY29sb3I6ICM5M0QyNjA7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC10YWcuXFwtdGFnLS10ZWFsCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjBEMkI2OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtdGFnLlxcLXRhZy0tYmx1ZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzRFOTFFNDsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLXRhZy5cXC10YWctLXB1cnBsZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0FDOTRFODsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLXRhZy5cXC10YWctLXBpbmsKewogIGJhY2tncm91bmQtY29sb3I6ICNFNzdFQjg7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC10YWcuXFwtdGFnLS1yZWQKewogIGJhY2tncm91bmQtY29sb3I6ICNFRTY3NUQ7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC10YWcuXFwtdGFnLS1vcmFuZ2UKewogIGJhY2tncm91bmQtY29sb3I6ICNGNzgwNTU7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC10YWcuXFwtdGFnLS15ZWxsb3cKewogIGJhY2tncm91bmQtY29sb3I6ICNGQkM4NTA7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC10YWcuXFwtdGFnLS1ncmV5CnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRERFNUVFOwogIGNvbG9yOiAjNTQ2Nzc4Owp9CgouXFwtdGlwCnsKICBkaXNwbGF5OiBibG9jazsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgd2lkdGg6IGNhbGMoMTAwJSAtIDI1cHggLSAyMHB4IC0gNXB4KTsKICBib3JkZXItbGVmdC1zdHlsZTogc29saWQ7CiAgYm9yZGVyLWxlZnQtd2lkdGg6IDVweDsKICBib3JkZXItcmFkaXVzOiA1cHg7CiAgcGFkZGluZy10b3A6IDEwcHg7CiAgcGFkZGluZy1yaWdodDogMjBweCAhaW1wb3J0YW50OwogIHBhZGRpbmctYm90dG9tOiAxMHB4OwogIHBhZGRpbmctbGVmdDogMjVweCAhaW1wb3J0YW50OwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFRjJGNzsKICBmb250LXNpemU6IDE2cHg7CiAgY29sb3I6ICM1NDY3Nzg7CiAgbGluZS1oZWlnaHQ6IDI0cHg7Cn0KCi5cXC10aXA6OmJlZm9yZQp7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMTBweDsKICBsZWZ0OiAtMTJweDsKICB3aWR0aDogMjBweDsKICBoZWlnaHQ6IDIwcHg7CiAgYm9yZGVyLXJhZGl1czogMTAwcHg7CiAgY29sb3I6ICNGRkY7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGxpbmUtaGVpZ2h0OiAyMHB4Owp9CgouXFwtdGlwLlxcLXRpcC0tcHJpbWFyeQp7CiAgYm9yZGVyLWxlZnQtY29sb3I6ICM0RTkxRTQ7Cn0KCi5cXC10aXAuXFwtdGlwLS1wcmltYXJ5OjpiZWZvcmUKewogIGJhY2tncm91bmQtY29sb3I6ICM0RTkxRTQ7Cn0KCi5cXC10aXAuXFwtdGlwLS1zdWNjZXNzCnsKICBib3JkZXItbGVmdC1jb2xvcjogIzRBQ0Y3RjsKfQoKLlxcLXRpcC5cXC10aXAtLXN1Y2Nlc3M6OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzRBQ0Y3RjsKfQoKLlxcLXRpcC5cXC10aXAtLXdhcm5pbmcKewogIGJvcmRlci1sZWZ0LWNvbG9yOiAjRkJDODUwOwp9CgouXFwtdGlwLlxcLXRpcC0td2FybmluZzo6YmVmb3JlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkJDODUwOwp9CgouXFwtdGlwLlxcLXRpcC0tZXJyb3IKewogIGJvcmRlci1sZWZ0LWNvbG9yOiAjRUU2NzVEOwp9CgouXFwtdGlwLlxcLXRpcC0tZXJyb3I6OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFNjc1RDsKfQoKLlxcLXRpcC5cXC10aXAtLWRhcmsKewogIGJvcmRlci1sZWZ0LWNvbG9yOiAjNTQ2Nzc4Owp9CgouXFwtdGlwLlxcLXRpcC0tZGFyazo6YmVmb3JlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2Nzc4Owp9CgouXFwtdGlwLlxcLXRpcC0tbGlnaHQKewogIGJvcmRlci1sZWZ0LWNvbG9yOiAjRERFNUVFOwp9CgouXFwtdGlwLlxcLXRpcC0tbGlnaHQ6OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0RERTVFRTsKfQoKLlxcLXRpcC5cXC10aXAtLW5hdnkKewogIGJvcmRlci1sZWZ0LWNvbG9yOiAjNTQ2Nzc4Owp9CgouXFwtdGlwLlxcLXRpcC0tbmF2eTo6YmVmb3JlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2Nzc4Owp9CgouXFwtdGlwLlxcLXRpcC0tZ3JlZW4KewogIGJvcmRlci1sZWZ0LWNvbG9yOiAjOTNEMjYwOwp9CgouXFwtdGlwLlxcLXRpcC0tZ3JlZW46OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzkzRDI2MDsKfQoKLlxcLXRpcC5cXC10aXAtLXRlYWwKewogIGJvcmRlci1sZWZ0LWNvbG9yOiAjNjBEMkI2Owp9CgouXFwtdGlwLlxcLXRpcC0tdGVhbDo6YmVmb3JlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjBEMkI2Owp9CgouXFwtdGlwLlxcLXRpcC0tYmx1ZQp7CiAgYm9yZGVyLWxlZnQtY29sb3I6ICM0RTkxRTQ7Cn0KCi5cXC10aXAuXFwtdGlwLS1ibHVlOjpiZWZvcmUKewogIGJhY2tncm91bmQtY29sb3I6ICM0RTkxRTQ7Cn0KCi5cXC10aXAuXFwtdGlwLS1wdXJwbGUKewogIGJvcmRlci1sZWZ0LWNvbG9yOiAjQUM5NEU4Owp9CgouXFwtdGlwLlxcLXRpcC0tcHVycGxlOjpiZWZvcmUKewogIGJhY2tncm91bmQtY29sb3I6ICNBQzk0RTg7Cn0KCi5cXC10aXAuXFwtdGlwLS1waW5rCnsKICBib3JkZXItbGVmdC1jb2xvcjogI0U3N0VCODsKfQoKLlxcLXRpcC5cXC10aXAtLXBpbms6OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0U3N0VCODsKfQoKLlxcLXRpcC5cXC10aXAtLXJlZAp7CiAgYm9yZGVyLWxlZnQtY29sb3I6ICNFRTY3NUQ7Cn0KCi5cXC10aXAuXFwtdGlwLS1yZWQ6OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFNjc1RDsKfQoKLlxcLXRpcC5cXC10aXAtLW9yYW5nZQp7CiAgYm9yZGVyLWxlZnQtY29sb3I6ICNGNzgwNTU7Cn0KCi5cXC10aXAuXFwtdGlwLS1vcmFuZ2U6OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0Y3ODA1NTsKfQoKLlxcLXRpcC5cXC10aXAtLXllbGxvdwp7CiAgYm9yZGVyLWxlZnQtY29sb3I6ICNGQkM4NTA7Cn0KCi5cXC10aXAuXFwtdGlwLS15ZWxsb3c6OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0ZCQzg1MDsKfQoKLlxcLXRpcC5cXC10aXAtLWdyZXkKewogIGJvcmRlci1sZWZ0LWNvbG9yOiAjRERFNUVFOwp9CgouXFwtdGlwLlxcLXRpcC0tZ3JleTo6YmVmb3JlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRERFNUVFOwp9CgouXFwtdGlwLS1leGNsYW1hdGlvbjo6YmVmb3JlCnsKICBjb250ZW50OiAiISI7Cn0KCi5cXC10aXAtLXF1ZXN0aW9uOjpiZWZvcmUKewogIGNvbnRlbnQ6ICI/IjsKfQoKLlxcLXRpcC0taGVhcnQ6OmJlZm9yZQp7CiAgY29udGVudDogIuKdpCI7Cn0KCi5cXC1hbGVydAp7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IGNhbGMoMTAwJSAtIDE1cHggLSAzMHB4KTsKICBsaW5lLWhlaWdodDogMjRweDsKICBmb250LXNpemU6IDE2cHg7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGJvcmRlci1yYWRpdXM6IDVweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUVGMkY3OwogIGNvbG9yOiAjNTQ2Nzc4OwogIHBhZGRpbmctdG9wOiAxMHB4OwogIHBhZGRpbmctcmlnaHQ6IDMwcHg7CiAgcGFkZGluZy1ib3R0b206IDEwcHg7CiAgcGFkZGluZy1sZWZ0OiAxNXB4OwogIG1hcmdpbi1ib3R0b206IDIwcHg7Cn0KCi5cXC1hbGVydC10aXRsZQp7CiAgZm9udC1zaXplOiAxOXB4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIGxpbmUtaGVpZ2h0OiAyNnB4Owp9CgouXFwtYWxlcnQtY2xvc2UKewogIGRpc3BsYXk6IGJsb2NrOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDEwcHg7CiAgcmlnaHQ6IDEwcHg7CiAgd2lkdGg6IDE2cHg7CiAgaGVpZ2h0OiAxNnB4OwogIGN1cnNvcjogcG9pbnRlcjsKICBvcGFjaXR5OiAwLjY7CiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzOwp9CgouXFwtYWxlcnQtY2xvc2U6aG92ZXIKewogIG9wYWNpdHk6IDE7Cn0KCi5cXC1hbGVydC1jbG9zZTo6YmVmb3JlLCAuXFwtYWxlcnQtY2xvc2U6OmFmdGVyCnsKICBjb250ZW50OiAiIjsKICB3aWR0aDogMTZweDsKICBoZWlnaHQ6IDNweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2Nzc4OwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBib3JkZXItcmFkaXVzOiAxcHg7CiAgdG9wOiA2cHg7Cn0KCi5cXC1hbGVydC1jbG9zZTo6YmVmb3JlCnsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsKICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7Cn0KCi5cXC1hbGVydC1jbG9zZTo6YWZ0ZXIKewogIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsKICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOwp9CgouXFwtYWxlcnQuXFwtYWxlcnQtLXByaW1hcnkKewogIGJhY2tncm91bmQtY29sb3I6ICNBN0M4RjI7CiAgY29sb3I6ICMxQjVFQjE7Cn0KCi5cXC1hbGVydC0tcHJpbWFyeSAuXFwtYWxlcnQtY2xvc2U6OmJlZm9yZSwgLlxcLWFsZXJ0LS1wcmltYXJ5IC5cXC1hbGVydC1jbG9zZTo6YWZ0ZXIKewogIGJhY2tncm91bmQtY29sb3I6ICMxQjVFQjE7Cn0KCi5cXC1hbGVydC5cXC1hbGVydC0tc3VjY2Vzcwp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzlCRTRCODsKICBjb2xvcjogIzI2OEQ0RjsKfQoKLlxcLWFsZXJ0LS1zdWNjZXNzIC5cXC1hbGVydC1jbG9zZTo6YmVmb3JlLCAuXFwtYWxlcnQtLXN1Y2Nlc3MgLlxcLWFsZXJ0LWNsb3NlOjphZnRlcgp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzI2OEQ0RjsKfQoKLlxcLWFsZXJ0LlxcLWFsZXJ0LS13YXJuaW5nCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkRFN0I0OwogIGNvbG9yOiAjRTA5RjA1Owp9CgouXFwtYWxlcnQtLXdhcm5pbmcgLlxcLWFsZXJ0LWNsb3NlOjpiZWZvcmUsIC5cXC1hbGVydC0td2FybmluZyAuXFwtYWxlcnQtY2xvc2U6OmFmdGVyCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRTA5RjA1Owp9CgouXFwtYWxlcnQuXFwtYWxlcnQtLWVycm9yCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjhCRUI5OwogIGNvbG9yOiAjQ0YyMzE2Owp9CgouXFwtYWxlcnQtLWVycm9yIC5cXC1hbGVydC1jbG9zZTo6YmVmb3JlLCAuXFwtYWxlcnQtLWVycm9yIC5cXC1hbGVydC1jbG9zZTo6YWZ0ZXIKewogIGJhY2tncm91bmQtY29sb3I6ICNDRjIzMTY7Cn0KCi5cXC1hbGVydC5cXC1hbGVydC0tZGFyawp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzg3OUFBQjsKICBjb2xvcjogIzJBMzQzQzsKfQoKLlxcLWFsZXJ0LS1kYXJrIC5cXC1hbGVydC1jbG9zZTo6YmVmb3JlLCAuXFwtYWxlcnQtLWRhcmsgLlxcLWFsZXJ0LWNsb3NlOjphZnRlcgp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzJBMzQzQzsKfQoKLlxcLWFsZXJ0LlxcLWFsZXJ0LS1saWdodAp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFRjJGNzsKICBjb2xvcjogI0NCRDhFNjsKfQoKLlxcLWFsZXJ0LS1saWdodCAuXFwtYWxlcnQtY2xvc2U6OmJlZm9yZSwgLlxcLWFsZXJ0LS1saWdodCAuXFwtYWxlcnQtY2xvc2U6OmFmdGVyCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjQ0JEOEU2Owp9CgouXFwtYWxlcnQuXFwtYWxlcnQtLW5hdnkKewogIGJhY2tncm91bmQtY29sb3I6ICM3ODhFQTE7CiAgY29sb3I6ICMzNDQxNEI7Cn0KCi5cXC1hbGVydC5cXC1hbGVydC0tZ3JlZW4KewogIGJhY2tncm91bmQtY29sb3I6ICNCQ0UzOUM7CiAgY29sb3I6ICM2Q0IzMzI7Cn0KCi5cXC1hbGVydC5cXC1hbGVydC0tdGVhbAp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzlDRTNEMTsKICBjb2xvcjogIzMyQjM5MzsKfQoKLlxcLWFsZXJ0LlxcLWFsZXJ0LS1ibHVlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTBCQkVFOwogIGNvbG9yOiAjMUU2QUM4Owp9CgouXFwtYWxlcnQuXFwtYWxlcnQtLXB1cnBsZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0RFRDVGNjsKICBjb2xvcjogIzdDNTdEQjsKfQoKLlxcLWFsZXJ0LlxcLWFsZXJ0LS1waW5rCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjNCRURCOwogIGNvbG9yOiAjREIzRDk0Owp9CgouXFwtYWxlcnQuXFwtYWxlcnQtLXJlZAp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0Y1QThBMzsKICBjb2xvcjogI0U3MjYxODsKfQoKLlxcLWFsZXJ0LlxcLWFsZXJ0LS1vcmFuZ2UKewogIGJhY2tncm91bmQtY29sb3I6ICNGQUI2OUU7CiAgY29sb3I6ICNGNDQ5MEI7Cn0KCi5cXC1hbGVydC5cXC1hbGVydC0teWVsbG93CnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkRFMDlCOwogIGNvbG9yOiAjRkFCMDA1Owp9CgouXFwtYWxlcnQuXFwtYWxlcnQtLWdyZXkKewogIGJhY2tncm91bmQtY29sb3I6ICNFRUYyRjc7CiAgY29sb3I6ICNDQkQ4RTY7Cn0KCi5cXC1hbGVydCAuXFwtY2xvc2UKewogIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50OwogIHJpZ2h0OiA1cHggIWltcG9ydGFudDsKICB0b3A6IDVweCAhaW1wb3J0YW50Owp9CgouXFwtYnJlYWRjcnVtYgp7CiAgZGlzcGxheTogYmxvY2s7CiAgaGVpZ2h0OiAyNHB4OwogIHBhZGRpbmctdG9wOiAxMHB4OwogIHBhZGRpbmctYm90dG9tOiAxMHB4OwogIHBhZGRpbmctbGVmdDogMTVweDsKICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFRjJGNzsKICBib3JkZXItcmFkaXVzOiA1cHg7CiAgYm9yZGVyOiAwcHg7Cn0KCi5cXC1icmVhZGNydW1iLWl0ZW0sIC5cXC1icmVhZGNydW1iLWNydW1iCnsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgZmxvYXQ6IGxlZnQ7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGhlaWdodDogMjRweDsKICBsaW5lLWhlaWdodDogMjRweDsKICBmb250LXNpemU6IDE0cHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgY29sb3I6ICM0RTkxRTQ7CiAgdHJhbnNpdGlvbjogY29sb3IgMC4zczsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KCi5cXC1icmVhZGNydW1iLWl0ZW06bm90KDpmaXJzdC1vZi10eXBlKSwgLlxcLWJyZWFkY3J1bWItY3J1bWI6bm90KDpmaXJzdC1vZi10eXBlKQp7CiAgcGFkZGluZy1sZWZ0OiA4cHg7Cn0KCi5cXC1icmVhZGNydW1iLWl0ZW06aG92ZXIsIC5cXC1icmVhZGNydW1iLWNydW1iOmhvdmVyCnsKICBjb2xvcjogIzFCNUVCMTsKfQoKLlxcLWJyZWFkY3J1bWItaXRlbTpub3QoOmZpcnN0LW9mLXR5cGUpOjpiZWZvcmUsIC5cXC1icmVhZGNydW1iLWNydW1iOm5vdCg6Zmlyc3Qtb2YtdHlwZSk6OmJlZm9yZQp7CiAgY29udGVudDogIi8iOwogIGNvbG9yOiAjODc5QUFCOwogIGZvbnQtd2VpZ2h0OiBib2xkICFpbXBvcnRhbnQ7CiAgcGFkZGluZy1yaWdodDogOHB4Owp9CgouXFwtYnJlYWRjcnVtYi1pdGVtLS1zZWxlY3RlZCwgLlxcLWJyZWFkY3J1bWItY3J1bWItLXNlbGVjdGVkCnsKICBjb2xvcjogIzU0Njc3OCAhaW1wb3J0YW50OwogIGN1cnNvcjogZGVmYXVsdCAhaW1wb3J0YW50OwogIGZvbnQtd2VpZ2h0OiBub3JtYWwgIWltcG9ydGFudDsKfQoKLlxcLWNhcmQKewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgY29sb3I6ICM1NDY3Nzg7CiAgZm9udC1zaXplOiAxNnB4Owp9CgouXFwtY2FyZC1oZWFkZXIsIC5cXC1jYXJkLWJvZHksIC5cXC1jYXJkLWZvb3RlciwgLlxcLWNhcmQtbGluawp7CiAgZGlzcGxheTogYmxvY2s7CiAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjRUVGMkY3OwogIGJvcmRlci1yaWdodDogMnB4IHNvbGlkICNFRUYyRjc7CiAgYm9yZGVyLXRvcDogMnB4IHNvbGlkICNFRUYyRjc7Cn0KCi5cXC1jYXJkLWhlYWRlcjpmaXJzdC1jaGlsZCwgLlxcLWNhcmQtYm9keTpmaXJzdC1jaGlsZCwgLlxcLWNhcmQtZm9vdGVyOmZpcnN0LWNoaWxkLCAuXFwtY2FyZC1saW5rOmZpcnN0LWNoaWxkCnsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA1cHg7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDVweDsKfQoKLlxcLWNhcmQtaGVhZGVyOmxhc3QtY2hpbGQsIC5cXC1jYXJkLWJvZHk6bGFzdC1jaGlsZCwgLlxcLWNhcmQtZm9vdGVyOmxhc3QtY2hpbGQsIC5cXC1jYXJkLWxpbms6bGFzdC1jaGlsZAp7CiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNFRUYyRjc7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNXB4OwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA1cHg7Cn0KCi5cXC1jYXJkLWhlYWRlciwgLlxcLWNhcmQtZm9vdGVyCnsKICBwYWRkaW5nOiAxMnB4OwogIGJhY2tncm91bmQtY29sb3I6ICNFRUYyRjc7Cn0KCi5cXC1jYXJkLWhlYWRlcgp7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCi5cXC1jYXJkLWJvZHkKewogIHBhZGRpbmc6IDEycHg7Cn0KCi5cXC1jYXJkLWxpbmsKewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBjb2xvcjogIzRFOTFFNDsKICBmb250LXdlaWdodDogYm9sZDsKICBmb250LXNpemU6IDE1cHg7CiAgcGFkZGluZzogMTJweDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzOwp9CgouXFwtY2FyZC1saW5rOjpiZWZvcmUKewogIGRpc3BsYXk6IGJsb2NrOwogIGNvbnRlbnQ6ICIiOwogIHdpZHRoOiAxMXB4OwogIGhlaWdodDogMTFweDsKICBib3JkZXItdG9wOiAzcHggc29saWQgIzRFOTFFNDsKICBib3JkZXItcmlnaHQ6IDNweCBzb2xpZCAjNEU5MUU0OwogIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOwogIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsKICBib3JkZXItcmFkaXVzOiAycHg7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMTdweDsKICByaWdodDogMTVweDsKICB0cmFuc2l0aW9uOiByaWdodCAwLjNzOwp9CgouXFwtY2FyZC1saW5rOmhvdmVyCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUVGMkY3Owp9CgouXFwtY2FyZC1saW5rOmhvdmVyOjpiZWZvcmUKewogIHJpZ2h0OiAxMnB4Owp9CgouXFwtY2FyZC10aXRsZQp7CiAgZGlzcGxheTogYmxvY2s7CiAgZm9udC1zaXplOiAxOHB4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIG1hcmdpbi1ib3R0b206IDVweDsKfQoKLlxcLWNhcmQtc3VidGl0bGUKewogIGRpc3BsYXk6IGJsb2NrOwogIGZvbnQtc2l6ZTogMTVweDsKICBjb2xvcjogIzg3OUFBQjsKICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgbGluZS1oZWlnaHQ6IDIzcHg7Cn0KCi5cXC1jYXJkLXRpdGxlICsgLlxcLWNhcmQtc3VidGl0bGUKewogIG1hcmdpbi10b3A6IC01cHggIWltcG9ydGFudDsKfQoKLlxcLWxpc3QKewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgY29sb3I6ICM1NDY3Nzg7CiAgZm9udC1zaXplOiAxNnB4OwogIGxpbmUtaGVpZ2h0OiAyNHB4Owp9CgouXFwtbGlzdC1pdGVtCnsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nOiAxMHB4OwogIGJhY2tncm91bmQtY29sb3I6ICNFRUYyRjc7CiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgY29sb3I6ICM1NDY3Nzg7Cn0KCi5cXC1saXN0LWl0ZW06Zmlyc3QtY2hpbGQKewogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDVweDsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNXB4Owp9CgouXFwtbGlzdC1pdGVtOmxhc3QtY2hpbGQKewogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDVweDsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNXB4Owp9CgouXFwtbGlzdC1pdGVtOm5vdCg6bGFzdC1jaGlsZCkKewogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRERFNUVFOwp9CgouXFwtbGlzdC0taG92ZXIgLlxcLWxpc3QtaXRlbTpub3QoLlxcLWxpc3QtaXRlbS0tc2VsZWN0ZWQpOmhvdmVyCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRERFNUVFOwogIGN1cnNvcjogcG9pbnRlcjsKfQoKLlxcLWxpc3QtaXRlbS0tc2VsZWN0ZWQKewogIGJhY2tncm91bmQtY29sb3I6ICNBN0M4RjI7Cn0KCi5cXC1saXN0LWl0ZW0tLXNlbGVjdGVkLCAuXFwtbGlzdC1pdGVtLS1zZWxlY3RlZCAuXFwtbGlzdC10aXRsZSwgLlxcLWxpc3QtaXRlbS0tc2VsZWN0ZWQgLlxcLWxpc3QtZGVzY3JpcHRpb24KewogIGNvbG9yOiAjMUI1RUIxOwp9CgouXFwtbGlzdC10aXRsZQp7CiAgZGlzcGxheTogYmxvY2s7CiAgZm9udC1zaXplOiAxNnB4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIGxpbmUtaGVpZ2h0OiAyNHB4OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBjb2xvcjogIzU0Njc3ODsKfQoKLlxcLWxpc3QtZGVzY3JpcHRpb24KewogIGRpc3BsYXk6IGJsb2NrOwogIGZvbnQtc2l6ZTogMTRweDsKICBsaW5lLWhlaWdodDogMjBweDsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgY29sb3I6ICM4NzlBQUI7Cn0KCi5cXC1saXN0LWl0ZW0gLlxcLXRhZwp7CiAgZmxvYXQ6IHJpZ2h0Owp9CgouXFwtbWVudQp7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKfQoKLlxcLW1lbnUtZ3JvdXAKewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMjVweDsKICBsaW5lLWhlaWdodDogMjVweDsKICB0cmFuc2l0aW9uOiBjb2xvciAwLjNzOwogIGZvbnQtc2l6ZTogMTVweDsKICBmb250LXdlaWdodDogYm9sZDsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgY29sb3I6ICM4NzlBQUI7Cn0KCi5cXC1tZW51LWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpCnsKICBtYXJnaW4tdG9wOiAxMHB4Owp9CgouXFwtbWVudS1ncm91cDpob3Zlcgp7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7Cn0KCi5cXC1tZW51LWl0ZW0KewogIGRpc3BsYXk6IGJsb2NrOwogIGhlaWdodDogMzRweDsKICBsaW5lLWhlaWdodDogMzRweDsKICBib3JkZXItcmFkaXVzOiA1cHg7CiAgZm9udC1zaXplOiAxNXB4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIGNvbG9yOiAjODc5QUFCOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBwYWRkaW5nLWxlZnQ6IDEwcHg7CiAgcGFkZGluZy1yaWdodDogMTBweDsKICB0cmFuc2l0aW9uOiBhbGwgZWFzZSAwLjNzOwogIGN1cnNvcjogcG9pbnRlcjsKfQoKLlxcLW1lbnUtaXRlbTpub3QoLlxcLW1lbnUtaXRlbS0tc2VsZWN0ZWQpOmhvdmVyCnsKICB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDsKICBjb2xvcjogIzRFOTFFNDsKfQoKLlxcLW1lbnUtaXRlbS0tc2VsZWN0ZWQKewogIGJhY2tncm91bmQtY29sb3I6ICNFRUYyRjc7CiAgY29sb3I6ICM1NDY3Nzg7Cn0KCi5cXC1tZW51LXN1YiwgLlxcLW1lbnUtc3VibWVudQp7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZy1sZWZ0OiAxMHB4OwogIG1hcmdpbi1sZWZ0OiAxMHB4OwogIG1hcmdpbi10b3A6IDVweDsKICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjQ0JEOEU2Owp9CgouXFwtdGFibGUKewogIGRpc3BsYXk6IHRhYmxlOwogIHdpZHRoOiAxMDAlOwogIGZvbnQtc2l6ZTogMTZweDsKICBjb2xvcjogIzU0Njc3ODsKICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlOwogIGJvcmRlci1zcGFjaW5nOiAwOwogIGJvcmRlci13aWR0aDogMHB4OwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoKLlxcLXRhYmxlLXJvdwp7CiAgZGlzcGxheTogdGFibGUtcm93OwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KCi5cXC10YWJsZS1jZWxsCnsKICBkaXNwbGF5OiB0YWJsZS1jZWxsOwogIGxpbmUtaGVpZ2h0OiAyNHB4OwogIHBhZGRpbmc6IDEwcHg7CiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzOwogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjQ0JEOEU2OwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgdmVydGljYWwtYWxpZ246IHRvcDsKfQoKLlxcLXRhYmxlLWNlbGwtLXNvcnRhYmxlCnsKICBwYWRkaW5nLXJpZ2h0OiAyMHB4ICFpbXBvcnRhbnQ7CiAgY3Vyc29yOiBwb2ludGVyOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLlxcLXRhYmxlLWNlbGwtLXNvcnRhYmxlOjpiZWZvcmUsIC5cXC10YWJsZS1jZWxsLS1zb3J0YWJsZTo6YWZ0ZXIKewogIGRpc3BsYXk6IGJsb2NrOwogIGNvbnRlbnQ6ICIiOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICByaWdodDogNXB4OwogIHdpZHRoOiAwcHg7CiAgaGVpZ2h0OiAwcHg7CiAgYm9yZGVyLWxlZnQ6IDZweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItcmlnaHQ6IDZweCBzb2xpZCB0cmFuc3BhcmVudDsKICB0cmFuc2l0aW9uOiBhbGwgMC4zczsKfQoKLlxcLXRhYmxlLWNlbGwtLXNvcnRhYmxlOjpiZWZvcmUKewogIHRvcDogMTJweDsKICBib3JkZXItYm90dG9tOiA4cHggc29saWQgI0RERTVFRTsKfQoKLlxcLXRhYmxlLWNlbGwtLXNvcnRhYmxlOjphZnRlcgp7CiAgYm90dG9tOiAxMnB4OwogIGJvcmRlci10b3A6IDhweCBzb2xpZCAjRERFNUVFOwp9CgouXFwtdGFibGUtY2VsbC0tYXNjOjpiZWZvcmUKewogIGJvcmRlci1ib3R0b20tY29sb3I6ICM0RTkxRTQ7Cn0KCi5cXC10YWJsZS1jZWxsLS1kZXNjOjphZnRlcgp7CiAgYm9yZGVyLXRvcC1jb2xvcjogIzRFOTFFNDsKfQoKLlxcLXRhYmxlLWNlbGwtLTEKewogIHdpZHRoOiA4LjMzJTsKfQoKLlxcLXRhYmxlLWNlbGwtLTIKewogIHdpZHRoOiAxNi42NiU7Cn0KCi5cXC10YWJsZS1jZWxsLS0zCnsKICB3aWR0aDogMjQuOTklOwp9CgouXFwtdGFibGUtY2VsbC0tNAp7CiAgd2lkdGg6IDMzLjMzJTsKfQoKLlxcLXRhYmxlLWNlbGwtLTUKewogIHdpZHRoOiA0MS42NiU7Cn0KCi5cXC10YWJsZS1jZWxsLS02CnsKICB3aWR0aDogNDkuOTklOwp9CgouXFwtdGFibGUtY2VsbC0tNwp7CiAgd2lkdGg6IDU4LjMzJTsKfQoKLlxcLXRhYmxlLWNlbGwtLTgKewogIHdpZHRoOiA2Ni42NiU7Cn0KCi5cXC10YWJsZS1jZWxsLS05CnsKICB3aWR0aDogNzQuOTklOwp9CgouXFwtdGFibGUtY2VsbC0tMTAKewogIHdpZHRoOiA4My4zMyU7Cn0KCi5cXC10YWJsZS1jZWxsLS0xMQp7CiAgd2lkdGg6IDkxLjY2JTsKfQoKLlxcLXRhYmxlLWNlbGwtLTEyCnsKICB3aWR0aDogOTkuOTklOwp9CgouXFwtdGFibGUtLWJvcmRlciAuXFwtdGFibGUtY2VsbAp7CiAgYm9yZGVyOiAxcHggc29saWQgI0NCRDhFNjsKfQoKLlxcLXRhYmxlLWhlYWRlcgp7CiAgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwOwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KCi5cXC10YWJsZS0tYm9yZGVyIC5cXC10YWJsZS1oZWFkZXIgLlxcLXRhYmxlLXJvdzpmaXJzdC1jaGlsZCAuXFwtdGFibGUtY2VsbDpmaXJzdC1jaGlsZAp7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNXB4OwogIGJvcmRlci1sZWZ0LXdpZHRoOiAycHg7Cn0KCi5cXC10YWJsZS0tYm9yZGVyIC5cXC10YWJsZS1oZWFkZXIgLlxcLXRhYmxlLXJvdzpmaXJzdC1jaGlsZCAuXFwtdGFibGUtY2VsbDpsYXN0LWNoaWxkCnsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNXB4OwogIGJvcmRlci1yaWdodC13aWR0aDogMnB4Owp9CgouXFwtdGFibGUtLWJvcmRlciAuXFwtdGFibGUtaGVhZGVyIC5cXC10YWJsZS1yb3c6Zmlyc3QtY2hpbGQgLlxcLXRhYmxlLWNlbGwKewogIGJvcmRlci10b3Atd2lkdGg6IDJweDsKfQoKLlxcLXRhYmxlLWhlYWRlciAuXFwtdGFibGUtY2VsbAp7CiAgdmVydGljYWwtYWxpZ246IGJvdHRvbTsKICBib3JkZXItYm90dG9tOiAycHggc29saWQgI0NCRDhFNjsKICBmb250LXdlaWdodDogNjAwOwp9CgouXFwtdGFibGUtYm9keQp7CiAgZGlzcGxheTogdGFibGUtcm93LWdyb3VwOwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCi5cXC10YWJsZS1ib2R5IC5cXC10YWJsZS1yb3c6bm90KDpsYXN0LWNoaWxkKSAuXFwtdGFibGUtY2VsbAp7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNDQkQ4RTY7Cn0KCi5cXC10YWJsZS0tYm9yZGVyIC5cXC10YWJsZS1ib2R5IC5cXC10YWJsZS1yb3c6bGFzdC1jaGlsZCAuXFwtdGFibGUtY2VsbDpmaXJzdC1jaGlsZAp7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNXB4Owp9CgouXFwtdGFibGUtLWJvcmRlciAuXFwtdGFibGUtYm9keSAuXFwtdGFibGUtcm93Omxhc3QtY2hpbGQgLlxcLXRhYmxlLWNlbGw6bGFzdC1jaGlsZAp7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDVweDsKfQoKLlxcLXRhYmxlLS1ib3JkZXIgLlxcLXRhYmxlLWJvZHkgLlxcLXRhYmxlLXJvdzpsYXN0LWNoaWxkIC5cXC10YWJsZS1jZWxsCnsKICBib3JkZXItYm90dG9tLXdpZHRoOiAycHg7Cn0KCi5cXC10YWJsZS0tYm9yZGVyIC5cXC10YWJsZS1ib2R5IC5cXC10YWJsZS1yb3cgLlxcLXRhYmxlLWNlbGw6Zmlyc3QtY2hpbGQKewogIGJvcmRlci1sZWZ0LXdpZHRoOiAycHg7Cn0KCi5cXC10YWJsZS0tYm9yZGVyIC5cXC10YWJsZS1ib2R5IC5cXC10YWJsZS1yb3cgLlxcLXRhYmxlLWNlbGw6bGFzdC1jaGlsZAp7CiAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAycHg7Cn0KCi5cXC10YWJsZS0tc3RyaXBlZCAuXFwtdGFibGUtYm9keSAuXFwtdGFibGUtcm93Om50aC1jaGlsZChvZGQpIC5cXC10YWJsZS1jZWxsCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIzOCwgMjQyLCAyNDcsIDAuOCk7Cn0KCi5cXC10YWJsZS0taG92ZXIgLlxcLXRhYmxlLWJvZHkgLlxcLXRhYmxlLXJvdzpob3ZlciAuXFwtdGFibGUtY2VsbAp7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMjEsIDIyOSwgMjM4LCAwLjgpOwp9CgouXFwtdGFibGUtLWZpeGVkCnsKICB0YWJsZS1sYXlvdXQ6IGZpeGVkOwp9CgouXFwtdGFibGUtcmVzcG9uc2l2ZQp7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgb3ZlcmZsb3cteDogYXV0bzsKfQoKLlxcLXRhYmxlLXJvdy0tcHJpbWFyeSwgLlxcLXRhYmxlLXJvdy0tcHJpbWFyeSAuXFwtdGFibGUtY2VsbAp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0E3QzhGMiAhaW1wb3J0YW50Owp9CgouXFwtdGFibGUtcm93LS1zdWNjZXNzLCAuXFwtdGFibGUtcm93LS1zdWNjZXNzIC5cXC10YWJsZS1jZWxsCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjOUJFNEI4ICFpbXBvcnRhbnQ7Cn0KCi5cXC10YWJsZS1yb3ctLXdhcm5pbmcsIC5cXC10YWJsZS1yb3ctLXdhcm5pbmcgLlxcLXRhYmxlLWNlbGwKewogIGJhY2tncm91bmQtY29sb3I6ICNGREU3QjQgIWltcG9ydGFudDsKfQoKLlxcLXRhYmxlLXJvdy0tZXJyb3IsIC5cXC10YWJsZS1yb3ctLWVycm9yIC5cXC10YWJsZS1jZWxsCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjhCRUI5ICFpbXBvcnRhbnQ7Cn0KCi5cXC10YWJzCnsKICBkaXNwbGF5OiBibG9jazsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiA0MHB4OwogIGZvbnQtc2l6ZTogMTZweDsKICBtYXJnaW4tYm90dG9tOiAyMHB4OwogIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjRERFNUVFOwogIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgLWtodG1sLXVzZXItc2VsZWN0OiBub25lOwogIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgLW1zLXVzZXItc2VsZWN0OiBub25lOwp9CgouXFwtdGFicy10YWIsIC5cXC10YWJzLWl0ZW0KewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBmbG9hdDogbGVmdDsKICBoZWlnaHQ6IGNhbGMoNDBweCAtIDJweCk7CiAgbGluZS1oZWlnaHQ6IDQwcHg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBjb2xvcjogIzg3OUFBQjsKICBwYWRkaW5nLWxlZnQ6IDE1cHg7CiAgcGFkZGluZy1yaWdodDogMTVweDsKICBtYXJnaW4tYm90dG9tOiAtMXB4OwogIGJvcmRlcjogMnB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDVweDsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNXB4OwogIGN1cnNvcjogcG9pbnRlcjsKICB0cmFuc2l0aW9uOiBhbGwgMC4zczsKfQoKLlxcLXRhYnMtdGFiOmhvdmVyLCAuXFwtdGFicy1pdGVtOmhvdmVyCnsKICBib3JkZXItdG9wLWNvbG9yOiAjRUVGMkY3OwogIGJvcmRlci1sZWZ0LWNvbG9yOiAjRUVGMkY3OwogIGJvcmRlci1yaWdodC1jb2xvcjogI0VFRjJGNzsKfQoKLlxcLXRhYnMtdGFiLS1zZWxlY3RlZCwgLlxcLXRhYnMtaXRlbS0tc2VsZWN0ZWQKewogIGJvcmRlci10b3AtY29sb3I6ICNEREU1RUUgIWltcG9ydGFudDsKICBib3JkZXItbGVmdC1jb2xvcjogI0RERTVFRSAhaW1wb3J0YW50OwogIGJvcmRlci1yaWdodC1jb2xvcjogI0RERTVFRSAhaW1wb3J0YW50OwogIGJvcmRlci1ib3R0b20tY29sb3I6ICNGRkYgIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGICFpbXBvcnRhbnQ7CiAgY29sb3I6ICM1NDY3Nzg7Cn0KCi5cXC1ib3gKewogIGRpc3BsYXk6IGJsb2NrOwogIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgd2lkdGg6IGNhbGMoMTAwJSAtIDYwcHgpOwogIGJhY2tncm91bmQtY29sb3I6ICNEREU1RUU7CiAgYm9yZGVyLXJhZGl1czogNXB4OwogIHBhZGRpbmc6IDMwcHg7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKfQoKLlxcLWJveC10aXRsZSwgLlxcLWJveC1zdWJ0aXRsZSwgLlxcLWJveC1kZXRhaWwKewogIGRpc3BsYXk6IGJsb2NrOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKLlxcLWJveC10aXRsZQp7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgZm9udC1zaXplOiAzNXB4Owp9CgouXFwtYm94LXN1YnRpdGxlCnsKICBmb250LXdlaWdodDogNjAwOwogIGZvbnQtc2l6ZTogMjJweDsKICBvcGFjaXR5OiAwLjc1Owp9CgouXFwtYm94LWRldGFpbAp7CiAgZm9udC1zaXplOiAxNnB4OwogIGxpbmUtaGVpZ2h0OiAyMnB4OwogIG9wYWNpdHk6IDAuNTsKfQoKLlxcLWJveC10aXRsZSArIC5cXC1ib3gtc3VidGl0bGUsIC5cXC1ib3gtc3VidGl0bGUgKyAuXFwtYm94LWRldGFpbCwgLlxcLWJveC10aXRsZSArIC5cXC1ib3gtZGV0YWlsCnsKICBtYXJnaW4tdG9wOiA1cHg7Cn0KCi5cXC1ib3guXFwtYm94LS1wcmltYXJ5CnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNEU5MUU0OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtYm94LlxcLWJveC0tc3VjY2Vzcwp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzRBQ0Y3RjsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWJveC5cXC1ib3gtLXdhcm5pbmcKewogIGJhY2tncm91bmQtY29sb3I6ICNGQkM4NTA7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1ib3guXFwtYm94LS1lcnJvcgp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFNjc1RDsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWJveC5cXC1ib3gtLWRhcmsKewogIGJhY2tncm91bmQtY29sb3I6ICM1NDY3Nzg7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1ib3guXFwtYm94LS1saWdodAp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0RERTVFRTsKICBjb2xvcjogIzU0Njc3ODsKfQoKLlxcLWJveC5cXC1ib3gtLW5hdnkKewogIGJhY2tncm91bmQtY29sb3I6ICM1NDY3Nzg7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1ib3guXFwtYm94LS1ncmVlbgp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzkzRDI2MDsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWJveC5cXC1ib3gtLXRlYWwKewogIGJhY2tncm91bmQtY29sb3I6ICM2MEQyQjY7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1ib3guXFwtYm94LS1ibHVlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNEU5MUU0OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtYm94LlxcLWJveC0tcHVycGxlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjQUM5NEU4OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtYm94LlxcLWJveC0tcGluawp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0U3N0VCODsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWJveC5cXC1ib3gtLXJlZAp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFNjc1RDsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWJveC5cXC1ib3gtLW9yYW5nZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0Y3ODA1NTsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWJveC5cXC1ib3gtLXllbGxvdwp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0ZCQzg1MDsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWJveC5cXC1ib3gtLWdyZXkKewogIGJhY2tncm91bmQtY29sb3I6ICNEREU1RUU7CiAgY29sb3I6ICM1NDY3Nzg7Cn0KCi5cXC1jb250ZW50CnsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nLXRvcDogMzBweDsKICBwYWRkaW5nLWJvdHRvbTogMzBweDsKfQoKLlxcLWNvbnRlbnQtLWV4dHJhLXNtYWxsCnsKICBtYXgtd2lkdGg6IDQ4MHB4OwogIHBhZGRpbmctbGVmdDogY2FsYyg1MCUgLSA0ODBweCAvIDIpOwogIHBhZGRpbmctcmlnaHQ6IGNhbGMoNTAlIC0gNDgwcHggLyAyKTsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDgwcHgpCnsKICAuXFwtY29udGVudC0tZXh0cmEtc21hbGwKICB7CiAgICB3aWR0aDogY2FsYygxMDAlIC0gNDBweCk7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4OwogIH0KfQoKLlxcLWNvbnRlbnQtLXNtYWxsCnsKICBtYXgtd2lkdGg6IDYwMHB4OwogIHBhZGRpbmctbGVmdDogY2FsYyg1MCUgLSA2MDBweCAvIDIpOwogIHBhZGRpbmctcmlnaHQ6IGNhbGMoNTAlIC0gNjAwcHggLyAyKTsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjAwcHgpCnsKICAuXFwtY29udGVudC0tc21hbGwKICB7CiAgICB3aWR0aDogY2FsYygxMDAlIC0gNDBweCk7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4OwogIH0KfQoKLlxcLWNvbnRlbnQtLW1lZGl1bQp7CiAgbWF4LXdpZHRoOiA3NjhweDsKICBwYWRkaW5nLWxlZnQ6IGNhbGMoNTAlIC0gNzY4cHggLyAyKTsKICBwYWRkaW5nLXJpZ2h0OiBjYWxjKDUwJSAtIDc2OHB4IC8gMik7Cn0KCkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2OHB4KQp7CiAgLlxcLWNvbnRlbnQtLW1lZGl1bQogIHsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0MHB4KTsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgfQp9CgouXFwtY29udGVudC0tbGFyZ2UKewogIG1heC13aWR0aDogOTYwcHg7CiAgcGFkZGluZy1sZWZ0OiBjYWxjKDUwJSAtIDk2MHB4IC8gMik7CiAgcGFkZGluZy1yaWdodDogY2FsYyg1MCUgLSA5NjBweCAvIDIpOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5NjBweCkKewogIC5cXC1jb250ZW50LS1sYXJnZQogIHsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0MHB4KTsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgfQp9CgouXFwtY29udGVudC0tZXh0cmEtbGFyZ2UKewogIG1heC13aWR0aDogMTI4MHB4OwogIHBhZGRpbmctbGVmdDogY2FsYyg1MCUgLSAxMjgwcHggLyAyKTsKICBwYWRkaW5nLXJpZ2h0OiBjYWxjKDUwJSAtIDEyODBweCAvIDIpOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMjgwcHgpCnsKICAuXFwtY29udGVudC0tZXh0cmEtbGFyZ2UKICB7CiAgICB3aWR0aDogY2FsYygxMDAlIC0gNDBweCk7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4OwogIH0KfQoKLlxcLWNvbnRlbnQtLWZsdWlkCnsKICB3aWR0aDogY2FsYygxMDAlIC0gNDBweCk7CiAgcGFkZGluZy1sZWZ0OiAyMHB4OwogIHBhZGRpbmctcmlnaHQ6IDIwcHg7Cn0KCi5cXC1mb290ZXIKewogIGRpc3BsYXk6IGJsb2NrOwogIHBhZGRpbmctdG9wOiA1MHB4OwogIHBhZGRpbmctYm90dG9tOiA1MHB4OwogIGZvbnQtc2l6ZTogMTRweDsKICBsaW5lLWhlaWdodDogMjFweDsKfQoKLlxcLWZvb3Rlci0tZXh0cmEtc21hbGwKewogIG1heC13aWR0aDogNDgwcHg7CiAgcGFkZGluZy1sZWZ0OiBjYWxjKDUwJSAtIDQ4MHB4IC8gMik7CiAgcGFkZGluZy1yaWdodDogY2FsYyg1MCUgLSA0ODBweCAvIDIpOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0ODBweCkKewogIC5cXC1mb290ZXItLWV4dHJhLXNtYWxsCiAgewogICAgd2lkdGg6IGNhbGMoMTAwJSAtIDQwcHgpOwogICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogICAgcGFkZGluZy1yaWdodDogMjBweDsKICB9Cn0KCi5cXC1mb290ZXItLXNtYWxsCnsKICBtYXgtd2lkdGg6IDYwMHB4OwogIHBhZGRpbmctbGVmdDogY2FsYyg1MCUgLSA2MDBweCAvIDIpOwogIHBhZGRpbmctcmlnaHQ6IGNhbGMoNTAlIC0gNjAwcHggLyAyKTsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjAwcHgpCnsKICAuXFwtZm9vdGVyLS1zbWFsbAogIHsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0MHB4KTsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgfQp9CgouXFwtZm9vdGVyLS1tZWRpdW0KewogIG1heC13aWR0aDogNzY4cHg7CiAgcGFkZGluZy1sZWZ0OiBjYWxjKDUwJSAtIDc2OHB4IC8gMik7CiAgcGFkZGluZy1yaWdodDogY2FsYyg1MCUgLSA3NjhweCAvIDIpOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkKewogIC5cXC1mb290ZXItLW1lZGl1bQogIHsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0MHB4KTsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgfQp9CgouXFwtZm9vdGVyLS1sYXJnZQp7CiAgbWF4LXdpZHRoOiA5NjBweDsKICBwYWRkaW5nLWxlZnQ6IGNhbGMoNTAlIC0gOTYwcHggLyAyKTsKICBwYWRkaW5nLXJpZ2h0OiBjYWxjKDUwJSAtIDk2MHB4IC8gMik7Cn0KCkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk2MHB4KQp7CiAgLlxcLWZvb3Rlci0tbGFyZ2UKICB7CiAgICB3aWR0aDogY2FsYygxMDAlIC0gNDBweCk7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4OwogIH0KfQoKLlxcLWZvb3Rlci0tZXh0cmEtbGFyZ2UKewogIG1heC13aWR0aDogMTI4MHB4OwogIHBhZGRpbmctbGVmdDogY2FsYyg1MCUgLSAxMjgwcHggLyAyKTsKICBwYWRkaW5nLXJpZ2h0OiBjYWxjKDUwJSAtIDEyODBweCAvIDIpOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMjgwcHgpCnsKICAuXFwtZm9vdGVyLS1leHRyYS1sYXJnZQogIHsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0MHB4KTsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgfQp9CgouXFwtZm9vdGVyLS1mbHVpZAp7CiAgd2lkdGg6IGNhbGMoMTAwJSAtIDQwcHgpOwogIHBhZGRpbmctbGVmdDogMjBweDsKICBwYWRkaW5nLXJpZ2h0OiAyMHB4Owp9CgouXFwtZm9vdGVyLS1saWdodAp7CiAgY29sb3I6ICM4NzlBQUI7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFRjJGNzsKfQoKLlxcLWZvb3Rlci0tZGFyawp7CiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2Nzc4Owp9CgouXFwtZm9vdGVyLXRpdGxlCnsKICBkaXNwbGF5OiBibG9jazsKICBmb250LXNpemU6IDIwcHg7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGxpbmUtaGVpZ2h0OiAzMHB4Owp9CgouXFwtZm9vdGVyLXN1YnRpdGxlCnsKICBkaXNwbGF5OiBibG9jazsKICBmb250LXNpemU6IDE1cHg7CiAgb3BhY2l0eTogMC44OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKLlxcLWZvb3Rlci1ncm91cAp7CiAgZGlzcGxheTogYmxvY2s7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgZm9udC1zaXplOiAxNXB4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIG1hcmdpbi1ib3R0b206IDVweDsKfQoKLlxcLWZvb3Rlci0tbGlnaHQgLlxcLWZvb3Rlci1ncm91cAp7CiAgY29sb3I6ICM4NzlBQUI7Cn0KCi5cXC1mb290ZXItLWRhcmsgLlxcLWZvb3Rlci1ncm91cAp7CiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsKfQoKLlxcLWZvb3Rlci1saW5rCnsKICBkaXNwbGF5OiBibG9jazsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICB0cmFuc2l0aW9uOiBjb2xvciAwLjNzOwogIGN1cnNvcjogcG9pbnRlcjsKICBvcGFjaXR5OiAwLjg1Owp9CgouXFwtZm9vdGVyLWxpbmstLWlubGluZQp7CiAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Cn0KCi5cXC1mb290ZXItbGluay0taW5saW5lOm5vdCg6bGFzdC1jaGlsZCkKewogIG1hcmdpbi1yaWdodDogMTBweDsKfQoKLlxcLWZvb3Rlci1saW5rOmhvdmVyCnsKICBjb2xvcjogIzRFOTFFNCAhaW1wb3J0YW50Owp9CgouXFwtZm9vdGVyLWxpbmstZGVzY3JpcHRpb24KewogIGRpc3BsYXk6IGJsb2NrOwogIGZvbnQtc2l6ZTogMTJweDsKICBmb250LXdlaWdodDogbm9ybWFsOwogIG1hcmdpbi1ib3R0b206IDNweDsKICBtYXJnaW4tdG9wOiAtNHB4Owp9CgouXFwtZm9vdGVyLS1saWdodCAuXFwtZm9vdGVyLWxpbmsKewogIGNvbG9yOiAjODc5QUFCOwp9CgouXFwtZm9vdGVyLS1saWdodCAuXFwtZm9vdGVyLWxpbmstZGVzY3JpcHRpb24KewogIGNvbG9yOiAjODc5QUFCICFpbXBvcnRhbnQ7Cn0KCi5cXC1mb290ZXItLWRhcmsgLlxcLWZvb3Rlci1saW5rCnsKICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpOwp9CgouXFwtZm9vdGVyLS1kYXJrIC5cXC1mb290ZXItbGluay1kZXNjcmlwdGlvbgp7CiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KSAhaW1wb3J0YW50Owp9CgouXFwtZm9vdGVyLXBhcmFncmFwaAp7CiAgZGlzcGxheTogYmxvY2s7CiAgbWFyZ2luLWJvdHRvbTogMTBweDsKfQoKLlxcLWZvb3Rlci1ydWxlCnsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDJweDsKICBtYXJnaW4tdG9wOiAyMHB4OwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgb3BhY2l0eTogMC42Owp9CgouXFwtZm9vdGVyLS1saWdodCAuXFwtZm9vdGVyLXJ1bGUKewogIGJhY2tncm91bmQtY29sb3I6ICNDQkQ4RTY7Cn0KCi5cXC1mb290ZXItLWRhcmsgLlxcLWZvb3Rlci1ydWxlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNik7Cn0KCi5cXC1mb290ZXIuXFwtZm9vdGVyLS1uYXZ5CnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2Nzc4OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtZm9vdGVyLlxcLWZvb3Rlci0tZ3JlZW4KewogIGJhY2tncm91bmQtY29sb3I6ICM5M0QyNjA7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1mb290ZXIuXFwtZm9vdGVyLS10ZWFsCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjBEMkI2OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtZm9vdGVyLlxcLWZvb3Rlci0tYmx1ZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzRFOTFFNDsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWZvb3Rlci5cXC1mb290ZXItLXB1cnBsZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0FDOTRFODsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWZvb3Rlci5cXC1mb290ZXItLXBpbmsKewogIGJhY2tncm91bmQtY29sb3I6ICNFNzdFQjg7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1mb290ZXIuXFwtZm9vdGVyLS1yZWQKewogIGJhY2tncm91bmQtY29sb3I6ICNFRTY3NUQ7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1mb290ZXIuXFwtZm9vdGVyLS1vcmFuZ2UKewogIGJhY2tncm91bmQtY29sb3I6ICNGNzgwNTU7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1mb290ZXIuXFwtZm9vdGVyLS15ZWxsb3cKewogIGJhY2tncm91bmQtY29sb3I6ICNGQkM4NTA7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1mb290ZXIuXFwtZm9vdGVyLS1ncmV5CnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRERFNUVFOwogIGNvbG9yOiAjNTQ2Nzc4Owp9CgouXFwtanVtYm90cm9uCnsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nLXRvcDogODVweDsKICBwYWRkaW5nLWJvdHRvbTogODVweDsKfQoKLlxcLWp1bWJvdHJvbi0tZXh0cmEtc21hbGwKewogIG1heC13aWR0aDogNDgwcHg7CiAgcGFkZGluZy1sZWZ0OiBjYWxjKDUwJSAtIDQ4MHB4IC8gMik7CiAgcGFkZGluZy1yaWdodDogY2FsYyg1MCUgLSA0ODBweCAvIDIpOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0ODBweCkKewogIC5cXC1qdW1ib3Ryb24tLWV4dHJhLXNtYWxsCiAgewogICAgd2lkdGg6IGNhbGMoMTAwJSAtIDQwcHgpOwogICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogICAgcGFkZGluZy1yaWdodDogMjBweDsKICB9Cn0KCi5cXC1qdW1ib3Ryb24tLXNtYWxsCnsKICBtYXgtd2lkdGg6IDYwMHB4OwogIHBhZGRpbmctbGVmdDogY2FsYyg1MCUgLSA2MDBweCAvIDIpOwogIHBhZGRpbmctcmlnaHQ6IGNhbGMoNTAlIC0gNjAwcHggLyAyKTsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjAwcHgpCnsKICAuXFwtanVtYm90cm9uLS1zbWFsbAogIHsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0MHB4KTsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgfQp9CgouXFwtanVtYm90cm9uLS1tZWRpdW0KewogIG1heC13aWR0aDogNzY4cHg7CiAgcGFkZGluZy1sZWZ0OiBjYWxjKDUwJSAtIDc2OHB4IC8gMik7CiAgcGFkZGluZy1yaWdodDogY2FsYyg1MCUgLSA3NjhweCAvIDIpOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkKewogIC5cXC1qdW1ib3Ryb24tLW1lZGl1bQogIHsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0MHB4KTsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgfQp9CgouXFwtanVtYm90cm9uLS1sYXJnZQp7CiAgbWF4LXdpZHRoOiA5NjBweDsKICBwYWRkaW5nLWxlZnQ6IGNhbGMoNTAlIC0gOTYwcHggLyAyKTsKICBwYWRkaW5nLXJpZ2h0OiBjYWxjKDUwJSAtIDk2MHB4IC8gMik7Cn0KCkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk2MHB4KQp7CiAgLlxcLWp1bWJvdHJvbi0tbGFyZ2UKICB7CiAgICB3aWR0aDogY2FsYygxMDAlIC0gNDBweCk7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4OwogIH0KfQoKLlxcLWp1bWJvdHJvbi0tZXh0cmEtbGFyZ2UKewogIG1heC13aWR0aDogMTI4MHB4OwogIHBhZGRpbmctbGVmdDogY2FsYyg1MCUgLSAxMjgwcHggLyAyKTsKICBwYWRkaW5nLXJpZ2h0OiBjYWxjKDUwJSAtIDEyODBweCAvIDIpOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMjgwcHgpCnsKICAuXFwtanVtYm90cm9uLS1leHRyYS1sYXJnZQogIHsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0MHB4KTsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgfQp9CgouXFwtanVtYm90cm9uLS1mbHVpZAp7CiAgd2lkdGg6IGNhbGMoMTAwJSAtIDQwcHgpOwogIHBhZGRpbmctbGVmdDogMjBweDsKICBwYWRkaW5nLXJpZ2h0OiAyMHB4Owp9CgouXFwtanVtYm90cm9uLXRpdGxlLCAuXFwtanVtYm90cm9uLXN1YnRpdGxlLCAuXFwtanVtYm90cm9uLWRldGFpbAp7CiAgZGlzcGxheTogYmxvY2s7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CgouXFwtanVtYm90cm9uLXRpdGxlCnsKICBmb250LXdlaWdodDogYm9sZDsKICBmb250LXNpemU6IDQwcHg7Cn0KCi5cXC1qdW1ib3Ryb24tc3VidGl0bGUKewogIGZvbnQtc2l6ZTogMjRweDsKICBmb250LXdlaWdodDogNjAwOwogIG9wYWNpdHk6IDAuODsKfQoKLlxcLWp1bWJvdHJvbi1kZXRhaWwKewogIGxpbmUtaGVpZ2h0OiAyMnB4OwogIGZvbnQtc2l6ZTogMTZweDsKICBvcGFjaXR5OiAwLjY7Cn0KCi5cXC1qdW1ib3Ryb24tdGl0bGUgKyAuXFwtanVtYm90cm9uLXN1YnRpdGxlLCAuXFwtanVtYm90cm9uLXRpdGxlICsgLlxcLWp1bWJvdHJvbi1kZXRhaWwsIC5cXC1qdW1ib3Ryb24tc3VidGl0bGUgKyAuXFwtanVtYm90cm9uLWRldGFpbAp7CiAgbWFyZ2luLXRvcDogNXB4Owp9CgouXFwtanVtYm90cm9uLlxcLWp1bWJvdHJvbi0tcHJpbWFyeQp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzRFOTFFNDsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWp1bWJvdHJvbi5cXC1qdW1ib3Ryb24tLXN1Y2Nlc3MKewogIGJhY2tncm91bmQtY29sb3I6ICM0QUNGN0Y7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1qdW1ib3Ryb24uXFwtanVtYm90cm9uLS13YXJuaW5nCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkJDODUwOwogIGNvbG9yOiAjRkZGOwp9CgouXFwtanVtYm90cm9uLlxcLWp1bWJvdHJvbi0tZXJyb3IKewogIGJhY2tncm91bmQtY29sb3I6ICNFRTY3NUQ7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1qdW1ib3Ryb24uXFwtanVtYm90cm9uLS1kYXJrCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2Nzc4OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtanVtYm90cm9uLlxcLWp1bWJvdHJvbi0tbGlnaHQKewogIGJhY2tncm91bmQtY29sb3I6ICNEREU1RUU7CiAgY29sb3I6ICM1NDY3Nzg7Cn0KCi5cXC1qdW1ib3Ryb24uXFwtanVtYm90cm9uLS1uYXZ5CnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2Nzc4OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtanVtYm90cm9uLlxcLWp1bWJvdHJvbi0tZ3JlZW4KewogIGJhY2tncm91bmQtY29sb3I6ICM5M0QyNjA7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1qdW1ib3Ryb24uXFwtanVtYm90cm9uLS10ZWFsCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjBEMkI2OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtanVtYm90cm9uLlxcLWp1bWJvdHJvbi0tYmx1ZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzRFOTFFNDsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWp1bWJvdHJvbi5cXC1qdW1ib3Ryb24tLXB1cnBsZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0FDOTRFODsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWp1bWJvdHJvbi5cXC1qdW1ib3Ryb24tLXBpbmsKewogIGJhY2tncm91bmQtY29sb3I6ICNFNzdFQjg7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1qdW1ib3Ryb24uXFwtanVtYm90cm9uLS1yZWQKewogIGJhY2tncm91bmQtY29sb3I6ICNFRTY3NUQ7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1qdW1ib3Ryb24uXFwtanVtYm90cm9uLS1vcmFuZ2UKewogIGJhY2tncm91bmQtY29sb3I6ICNGNzgwNTU7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1qdW1ib3Ryb24uXFwtanVtYm90cm9uLS15ZWxsb3cKewogIGJhY2tncm91bmQtY29sb3I6ICNGQkM4NTA7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1qdW1ib3Ryb24uXFwtanVtYm90cm9uLS1ncmV5CnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRERFNUVFOwogIGNvbG9yOiAjNTQ2Nzc4Owp9CgouXFwtbmF2YmFyCnsKICBkaXNwbGF5OiBibG9jazsKICB6LWluZGV4OiAzOwogIG1heC13aWR0aDogY2FsYygxMDAlIC0gMiAqIDIwcHgpOwogIGhlaWdodDogMzRweDsKICBwYWRkaW5nLXRvcDogMTVweDsKICBwYWRkaW5nLWJvdHRvbTogMTVweDsKICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgcGFkZGluZy1yaWdodDogMjBweDsKfQoKLlxcLW5hdmJhci0tZXh0cmEtc21hbGwKewogIG1heC13aWR0aDogNDgwcHg7CiAgcGFkZGluZy1sZWZ0OiBjYWxjKDUwJSAtIDQ4MHB4IC8gMik7CiAgcGFkZGluZy1yaWdodDogY2FsYyg1MCUgLSA0ODBweCAvIDIpOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0ODBweCkKewogIC5cXC1uYXZiYXItLWV4dHJhLXNtYWxsCiAgewogICAgd2lkdGg6IGNhbGMoMTAwJSAtIDQwcHgpOwogICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogICAgcGFkZGluZy1yaWdodDogMjBweDsKICB9Cn0KCi5cXC1uYXZiYXItLXNtYWxsCnsKICBtYXgtd2lkdGg6IDYwMHB4OwogIHBhZGRpbmctbGVmdDogY2FsYyg1MCUgLSA2MDBweCAvIDIpOwogIHBhZGRpbmctcmlnaHQ6IGNhbGMoNTAlIC0gNjAwcHggLyAyKTsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjAwcHgpCnsKICAuXFwtbmF2YmFyLS1zbWFsbAogIHsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0MHB4KTsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgfQp9CgouXFwtbmF2YmFyLS1tZWRpdW0KewogIG1heC13aWR0aDogNzY4cHg7CiAgcGFkZGluZy1sZWZ0OiBjYWxjKDUwJSAtIDc2OHB4IC8gMik7CiAgcGFkZGluZy1yaWdodDogY2FsYyg1MCUgLSA3NjhweCAvIDIpOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkKewogIC5cXC1uYXZiYXItLW1lZGl1bQogIHsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0MHB4KTsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgfQp9CgouXFwtbmF2YmFyLS1sYXJnZQp7CiAgbWF4LXdpZHRoOiA5NjBweDsKICBwYWRkaW5nLWxlZnQ6IGNhbGMoNTAlIC0gOTYwcHggLyAyKTsKICBwYWRkaW5nLXJpZ2h0OiBjYWxjKDUwJSAtIDk2MHB4IC8gMik7Cn0KCkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk2MHB4KQp7CiAgLlxcLW5hdmJhci0tbGFyZ2UKICB7CiAgICB3aWR0aDogY2FsYygxMDAlIC0gNDBweCk7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4OwogIH0KfQoKLlxcLW5hdmJhci0tZXh0cmEtbGFyZ2UKewogIG1heC13aWR0aDogMTI4MHB4OwogIHBhZGRpbmctbGVmdDogY2FsYyg1MCUgLSAxMjgwcHggLyAyKTsKICBwYWRkaW5nLXJpZ2h0OiBjYWxjKDUwJSAtIDEyODBweCAvIDIpOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMjgwcHgpCnsKICAuXFwtbmF2YmFyLS1leHRyYS1sYXJnZQogIHsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0MHB4KTsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgfQp9CgouXFwtbmF2YmFyLS1mbHVpZAp7CiAgd2lkdGg6IGNhbGMoMTAwJSAtIDQwcHgpOwogIHBhZGRpbmctbGVmdDogMjBweDsKICBwYWRkaW5nLXJpZ2h0OiAyMHB4Owp9CgouXFwtbmF2YmFyLXRpdGxlCnsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgaGVpZ2h0OiAzNHB4OwogIGxpbmUtaGVpZ2h0OiAzNHB4OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBmb250LXdlaWdodDogYm9sZDsKICBmb250LXNpemU6IDIxcHg7CiAgcGFkZGluZy1sZWZ0OiAwcHg7CiAgcGFkZGluZy1yaWdodDogMHB4OwogIGN1cnNvcjogcG9pbnRlcjsKfQoKLlxcLW5hdmJhci1zdWJ0aXRsZQp7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGhlaWdodDogMzRweDsKICBsaW5lLWhlaWdodDogMzRweDsKICBmb250LXNpemU6IDE2cHg7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGN1cnNvcjogcG9pbnRlcjsKICBwYWRkaW5nLWxlZnQ6IDVweDsKICBvcGFjaXR5OiAwLjg7Cn0KCi5cXC1uYXZiYXItaXRlbSwgLlxcLW5hdmJhci1saW5rCnsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgaGVpZ2h0OiAzNHB4OwogIGxpbmUtaGVpZ2h0OiAzNHB4OwogIHBhZGRpbmctbGVmdDogMTBweDsKICBwYWRkaW5nLXJpZ2h0OiAxMHB4OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgZm9udC1zaXplOiAxNnB4OwogIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zczsKICBjdXJzb3I6IHBvaW50ZXI7CiAgb3BhY2l0eTogMC45Owp9CgouXFwtbmF2YmFyLWl0ZW06aG92ZXIsIC5cXC1uYXZiYXItbGluazpob3Zlcgp7CiAgb3BhY2l0eTogMTsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLXByaW1hcnkKewogIGNvbG9yOiAjRkZGOwogIGJhY2tncm91bmQtY29sb3I6ICM0RTkxRTQ7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS1wcmltYXJ5IC5cXC1uYXZiYXItdGl0bGUsIC5cXC1uYXZiYXIuXFwtbmF2YmFyLS1wcmltYXJ5IC5cXC1uYXZiYXItc3VidGl0bGUsIC5cXC1uYXZiYXIuXFwtbmF2YmFyLS1wcmltYXJ5IC5cXC1uYXZiYXItbGluaywgLlxcLW5hdmJhci5cXC1uYXZiYXItLXByaW1hcnkgLlxcLW5hdmJhci1pdGVtCnsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLXN1Y2Nlc3MKewogIGNvbG9yOiAjRkZGOwogIGJhY2tncm91bmQtY29sb3I6ICM0QUNGN0Y7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS1zdWNjZXNzIC5cXC1uYXZiYXItdGl0bGUsIC5cXC1uYXZiYXIuXFwtbmF2YmFyLS1zdWNjZXNzIC5cXC1uYXZiYXItc3VidGl0bGUsIC5cXC1uYXZiYXIuXFwtbmF2YmFyLS1zdWNjZXNzIC5cXC1uYXZiYXItbGluaywgLlxcLW5hdmJhci5cXC1uYXZiYXItLXN1Y2Nlc3MgLlxcLW5hdmJhci1pdGVtCnsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLXdhcm5pbmcKewogIGNvbG9yOiAjRkZGOwogIGJhY2tncm91bmQtY29sb3I6ICNGQkM4NTA7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS13YXJuaW5nIC5cXC1uYXZiYXItdGl0bGUsIC5cXC1uYXZiYXIuXFwtbmF2YmFyLS13YXJuaW5nIC5cXC1uYXZiYXItc3VidGl0bGUsIC5cXC1uYXZiYXIuXFwtbmF2YmFyLS13YXJuaW5nIC5cXC1uYXZiYXItbGluaywgLlxcLW5hdmJhci5cXC1uYXZiYXItLXdhcm5pbmcgLlxcLW5hdmJhci1pdGVtCnsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLWVycm9yCnsKICBjb2xvcjogI0ZGRjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUU2NzVEOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tZXJyb3IgLlxcLW5hdmJhci10aXRsZSwgLlxcLW5hdmJhci5cXC1uYXZiYXItLWVycm9yIC5cXC1uYXZiYXItc3VidGl0bGUsIC5cXC1uYXZiYXIuXFwtbmF2YmFyLS1lcnJvciAuXFwtbmF2YmFyLWxpbmssIC5cXC1uYXZiYXIuXFwtbmF2YmFyLS1lcnJvciAuXFwtbmF2YmFyLWl0ZW0KewogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tZGFyawp7CiAgY29sb3I6ICNGRkY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzU0Njc3ODsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLWRhcmsgLlxcLW5hdmJhci10aXRsZSwgLlxcLW5hdmJhci5cXC1uYXZiYXItLWRhcmsgLlxcLW5hdmJhci1zdWJ0aXRsZSwgLlxcLW5hdmJhci5cXC1uYXZiYXItLWRhcmsgLlxcLW5hdmJhci1saW5rLCAuXFwtbmF2YmFyLlxcLW5hdmJhci0tZGFyayAuXFwtbmF2YmFyLWl0ZW0KewogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tbGlnaHQKewogIGNvbG9yOiAjNTQ2Nzc4OwogIGJhY2tncm91bmQtY29sb3I6ICNEREU1RUU7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS1saWdodCAuXFwtbmF2YmFyLXRpdGxlLCAuXFwtbmF2YmFyLlxcLW5hdmJhci0tbGlnaHQgLlxcLW5hdmJhci1zdWJ0aXRsZSwgLlxcLW5hdmJhci5cXC1uYXZiYXItLWxpZ2h0IC5cXC1uYXZiYXItbGluaywgLlxcLW5hdmJhci5cXC1uYXZiYXItLWxpZ2h0IC5cXC1uYXZiYXItaXRlbQp7CiAgY29sb3I6ICM1NDY3Nzg7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS1uYXZ5CnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2Nzc4OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tbmF2eSAuXFwtbmF2YmFyLXRpdGxlCnsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLW5hdnkgLlxcLW5hdmJhci1zdWJ0aXRsZQp7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS1uYXZ5IC5cXC1uYXZiYXItc3VidGl0bGU6OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLW5hdnkgLlxcLW5hdmJhci1saW5rLCAuXFwtbmF2YmFyLlxcLW5hdmJhci0tbmF2eSAuXFwtbmF2YmFyLWl0ZW0KewogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tZ3JlZW4KewogIGJhY2tncm91bmQtY29sb3I6ICM5M0QyNjA7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS1ncmVlbiAuXFwtbmF2YmFyLXRpdGxlCnsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLWdyZWVuIC5cXC1uYXZiYXItc3VidGl0bGUKewogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tZ3JlZW4gLlxcLW5hdmJhci1zdWJ0aXRsZTo6YmVmb3JlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tZ3JlZW4gLlxcLW5hdmJhci1saW5rLCAuXFwtbmF2YmFyLlxcLW5hdmJhci0tZ3JlZW4gLlxcLW5hdmJhci1pdGVtCnsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLXRlYWwKewogIGJhY2tncm91bmQtY29sb3I6ICM2MEQyQjY7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS10ZWFsIC5cXC1uYXZiYXItdGl0bGUKewogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tdGVhbCAuXFwtbmF2YmFyLXN1YnRpdGxlCnsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLXRlYWwgLlxcLW5hdmJhci1zdWJ0aXRsZTo6YmVmb3JlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tdGVhbCAuXFwtbmF2YmFyLWxpbmssIC5cXC1uYXZiYXIuXFwtbmF2YmFyLS10ZWFsIC5cXC1uYXZiYXItaXRlbQp7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS1ibHVlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNEU5MUU0OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tYmx1ZSAuXFwtbmF2YmFyLXRpdGxlCnsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLWJsdWUgLlxcLW5hdmJhci1zdWJ0aXRsZQp7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS1ibHVlIC5cXC1uYXZiYXItc3VidGl0bGU6OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLWJsdWUgLlxcLW5hdmJhci1saW5rLCAuXFwtbmF2YmFyLlxcLW5hdmJhci0tYmx1ZSAuXFwtbmF2YmFyLWl0ZW0KewogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tcHVycGxlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjQUM5NEU4OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tcHVycGxlIC5cXC1uYXZiYXItdGl0bGUKewogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tcHVycGxlIC5cXC1uYXZiYXItc3VidGl0bGUKewogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tcHVycGxlIC5cXC1uYXZiYXItc3VidGl0bGU6OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLXB1cnBsZSAuXFwtbmF2YmFyLWxpbmssIC5cXC1uYXZiYXIuXFwtbmF2YmFyLS1wdXJwbGUgLlxcLW5hdmJhci1pdGVtCnsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLXBpbmsKewogIGJhY2tncm91bmQtY29sb3I6ICNFNzdFQjg7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS1waW5rIC5cXC1uYXZiYXItdGl0bGUKewogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tcGluayAuXFwtbmF2YmFyLXN1YnRpdGxlCnsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLXBpbmsgLlxcLW5hdmJhci1zdWJ0aXRsZTo6YmVmb3JlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tcGluayAuXFwtbmF2YmFyLWxpbmssIC5cXC1uYXZiYXIuXFwtbmF2YmFyLS1waW5rIC5cXC1uYXZiYXItaXRlbQp7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS1yZWQKewogIGJhY2tncm91bmQtY29sb3I6ICNFRTY3NUQ7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS1yZWQgLlxcLW5hdmJhci10aXRsZQp7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS1yZWQgLlxcLW5hdmJhci1zdWJ0aXRsZQp7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS1yZWQgLlxcLW5hdmJhci1zdWJ0aXRsZTo6YmVmb3JlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tcmVkIC5cXC1uYXZiYXItbGluaywgLlxcLW5hdmJhci5cXC1uYXZiYXItLXJlZCAuXFwtbmF2YmFyLWl0ZW0KewogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tb3JhbmdlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjc4MDU1OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tb3JhbmdlIC5cXC1uYXZiYXItdGl0bGUKewogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tb3JhbmdlIC5cXC1uYXZiYXItc3VidGl0bGUKewogIGNvbG9yOiAjRkZGOwp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tb3JhbmdlIC5cXC1uYXZiYXItc3VidGl0bGU6OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLW9yYW5nZSAuXFwtbmF2YmFyLWxpbmssIC5cXC1uYXZiYXIuXFwtbmF2YmFyLS1vcmFuZ2UgLlxcLW5hdmJhci1pdGVtCnsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLXllbGxvdwp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0ZCQzg1MDsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLXllbGxvdyAuXFwtbmF2YmFyLXRpdGxlCnsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLXllbGxvdyAuXFwtbmF2YmFyLXN1YnRpdGxlCnsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLXllbGxvdyAuXFwtbmF2YmFyLXN1YnRpdGxlOjpiZWZvcmUKewogIGJhY2tncm91bmQtY29sb3I6ICNGRkY7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS15ZWxsb3cgLlxcLW5hdmJhci1saW5rLCAuXFwtbmF2YmFyLlxcLW5hdmJhci0teWVsbG93IC5cXC1uYXZiYXItaXRlbQp7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS1ncmV5CnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRERFNUVFOwogIGNvbG9yOiAjNTQ2Nzc4Owp9CgouXFwtbmF2YmFyLlxcLW5hdmJhci0tZ3JleSAuXFwtbmF2YmFyLXRpdGxlCnsKICBjb2xvcjogIzU0Njc3ODsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLWdyZXkgLlxcLW5hdmJhci1zdWJ0aXRsZQp7CiAgY29sb3I6ICM1NDY3Nzg7Cn0KCi5cXC1uYXZiYXIuXFwtbmF2YmFyLS1ncmV5IC5cXC1uYXZiYXItc3VidGl0bGU6OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzU0Njc3ODsKfQoKLlxcLW5hdmJhci5cXC1uYXZiYXItLWdyZXkgLlxcLW5hdmJhci1saW5rLCAuXFwtbmF2YmFyLlxcLW5hdmJhci0tZ3JleSAuXFwtbmF2YmFyLWl0ZW0KewogIGNvbG9yOiAjNTQ2Nzc4Owp9CgouXFwtY2hlY2tib3gKewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgd2lkdGg6IDE4cHg7CiAgaGVpZ2h0OiAxOHB4OwogIG1hcmdpbi1sZWZ0OiAxMHB4OwogIG1hcmdpbi1yaWdodDogMTBweDsKICBtYXJnaW4tdG9wOiA4cHg7CiAgbWFyZ2luLWJvdHRvbTogOHB4OwogIHZlcnRpY2FsLWFsaWduOiB0b3A7Cn0KCi5cXC1jaGVja2JveCBsYWJlbAp7CiAgd2lkdGg6IDE4cHg7CiAgaGVpZ2h0OiAxOHB4OwogIGN1cnNvcjogcG9pbnRlcjsKICB0cmFuc2l0aW9uOiBhbGwgMC4zczsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwOwogIGxlZnQ6IDA7CiAgYm9yZGVyLXJhZGl1czogMnB4OwogIGJhY2tncm91bmQ6ICNEREU1RUU7Cn0KCi5cXC1jaGVja2JveCBsYWJlbDphZnRlcgp7CiAgY29udGVudDogIiI7CiAgb3BhY2l0eTogMC4yOwogIHdpZHRoOiA4cHg7CiAgaGVpZ2h0OiA0cHg7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOwogIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7CiAgdHJhbnNpdGlvbjogYWxsIDAuM3M7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogNXB4OwogIGxlZnQ6IDRweDsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICBib3JkZXI6IDJweCBzb2xpZCAjNTQ2Nzc4OwogIGJvcmRlci10b3A6IDBweDsKICBib3JkZXItcmlnaHQ6IDBweDsKfQoKLlxcLWNoZWNrYm94IGxhYmVsOmhvdmVyOjphZnRlcgp7CiAgb3BhY2l0eTogMC41Owp9CgouXFwtY2hlY2tib3ggaW5wdXRbdHlwZT1jaGVja2JveF0KewogIHZpc2liaWxpdHk6IGhpZGRlbjsKfQoKLlxcLWNoZWNrYm94IGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQgKyBsYWJlbDphZnRlcgp7CiAgb3BhY2l0eTogMTsKICBib3JkZXItY29sb3I6ICNGRkY7Cn0KCi5cXC1jaGVja2JveCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkICsgbGFiZWwKewogIGJhY2tncm91bmQtY29sb3I6ICM0RTkxRTQ7Cn0KCi5cXC1jaGVja2JveC0tc3VjY2VzcyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkICsgbGFiZWwKewogIGJhY2tncm91bmQtY29sb3I6ICM0QUNGN0Y7Cn0KCi5cXC1jaGVja2JveC0tZXJyb3IgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCArIGxhYmVsCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUU2NzVEOwp9CgouXFwtY2hlY2tib3gtLXdhcm5pbmcgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCArIGxhYmVsCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkJDODUwOwp9CgouXFwtZmllbGQsCi5cXC1mb3JtLWZpZWxkCnsKICBkaXNwbGF5OiBibG9jazsKICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgbWFyZ2luLXRvcDogMHB4Owp9CgouXFwtZmllbGQtbGFiZWwsCi5cXC1mb3JtLWZpZWxkLWxhYmVsCnsKICBkaXNwbGF5OiBibG9jazsKICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgZm9udC1zaXplOiAxNXB4OwogIGNvbG9yOiAjNTQ2Nzc4OwogIG1hcmdpbi10b3A6IDBweDsKICBtYXJnaW4tYm90dG9tOiA1cHg7Cn0KCi5cXC1maWVsZC1oZWxwZXIsCi5cXC1mb3JtLWZpZWxkLWhlbHBlcgp7CiAgZGlzcGxheTogYmxvY2s7CiAgdmVydGljYWwtYWxpZ246IHRvcDsKICBmb250LXdlaWdodDogbm9ybWFsOwogIGZvbnQtc2l6ZTogMTNweDsKICBjb2xvcjogIzg3OUFBQjsKICBtYXJnaW4tdG9wOiA1cHg7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKfQoKLlxcLWZvcm0KewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIG1hcmdpbi10b3A6IDBweDsKICBtYXJnaW4tYm90dG9tOiAyMHB4OwogIGZvbnQtc2l6ZTogMTZweDsKfQoKLlxcLWZvcm0tdGl0bGUKewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgZm9udC1zaXplOiAyNHB4OwogIGNvbG9yOiAjNTQ2Nzc4OwogIG1hcmdpbi1ib3R0b206IDEwcHg7Cn0KCi5cXC1mb3JtLWRldGFpbAp7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgdmVydGljYWwtYWxpZ246IHRvcDsKICBmb250LXNpemU6IDE2cHg7CiAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgY29sb3I6ICM1NDY3Nzg7CiAgbWFyZ2luLWJvdHRvbTogMjBweDsKfQoKLlxcLWZvcm0tcnVsZQp7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNDQkQ4RTY7CiAgbWFyZ2luLXRvcDogNXB4OwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgaGVpZ2h0OiAwcHg7Cn0KCi5cXC1pbnB1dAp7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGhlaWdodDogMzRweDsKICBsaW5lLWhlaWdodDogMzRweDsKICBmb250LXNpemU6IDE0cHg7CiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICBjb2xvcjogIzU0Njc3ODsKICBwYWRkaW5nLWxlZnQ6IDEwcHg7CiAgcGFkZGluZy1yaWdodDogMTBweDsKICBwYWRkaW5nLXRvcDogMHB4OwogIHBhZGRpbmctYm90dG9tOiAwcHg7CiAgYm9yZGVyOiAwcHg7CiAgYm9yZGVyLXJhZGl1czogNXB4OwogIG91dGxpbmU6IDBweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUVGMkY3OwogIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoKLlxcLWlucHV0LS1mbHVpZAp7CiAgd2lkdGg6IDEwMCU7Cn0KCi5cXC1pbnB1dC0tbGlnaHQKewogIGJhY2tncm91bmQtY29sb3I6ICNGRkY7Cn0KCi5cXC1pbnB1dC0tZGFyawp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzU0Njc3ODsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWxhYmVsCnsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgbWluLWhlaWdodDogMzRweDsKICBsaW5lLWhlaWdodDogMzRweDsKICBmb250LXNpemU6IDE1cHg7CiAgY29sb3I6ICM1NDY3Nzg7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBwYWRkaW5nLXJpZ2h0OiAxMHB4OwogIHBhZGRpbmctbGVmdDogMHB4OwogIHZlcnRpY2FsLWFsaWduOiB0b3A7Cn0KCi5cXC1sYWJlbC0tbGlnaHQKewogIGNvbG9yOiAjRkZGOwp9CgouXFwtbGFiZWwtLWRhcmsKewogIGNvbG9yOiAjNTQ2Nzc4Owp9CgouXFwtcmFkaW8KewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMThweDsKICBoZWlnaHQ6IDE4cHg7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgbWFyZ2luOiA4cHg7CiAgY3Vyc29yOiBwb2ludGVyOwp9CgouXFwtcmFkaW8gPiBsYWJlbAp7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IGNhbGMoMThweCAtIDIgKiAzcHgpOwogIGhlaWdodDogY2FsYygxOHB4IC0gMiAqIDNweCk7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMHB4OwogIGxlZnQ6IDBweDsKICBib3JkZXItcmFkaXVzOiAxMDBweDsKICBib3JkZXItd2lkdGg6IDNweDsKICBib3JkZXItc3R5bGU6IHNvbGlkOwogIGJvcmRlci1jb2xvcjogI0RERTVFRTsKICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4zcyBlYXNlOwogIGN1cnNvcjogcG9pbnRlcjsKfQoKLlxcLXJhZGlvID4gbGFiZWw6YWZ0ZXIKewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBkaXNwbGF5OiBibG9jazsKICBjb250ZW50OiAiIjsKICB3aWR0aDogNnB4OwogIGhlaWdodDogNnB4OwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlci1yYWRpdXM6IDEwMHB4OwogIHRvcDogY2FsYyg1MCUgLSA2cHggLyAyKTsKICBsZWZ0OiBjYWxjKDUwJSAtIDZweCAvIDIpOwogIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7Cn0KCi5cXC1yYWRpbzpob3ZlciA+IGxhYmVsOmFmdGVyCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRERFNUVFOwp9CgouXFwtcmFkaW8gaW5wdXRbdHlwZT1yYWRpb10KewogIHZpc2liaWxpdHk6IGhpZGRlbjsKfQoKLlxcLXJhZGlvIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQgKyBsYWJlbDphZnRlcgp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzRFOTFFNDsKfQoKLlxcLXJhZGlvIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQgKyBsYWJlbAp7CiAgYm9yZGVyLWNvbG9yOiAjNEU5MUU0Owp9CgouXFwtcmFkaW8tLXN1Y2Nlc3MgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCArIGxhYmVsOmFmdGVyCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNEFDRjdGOwp9CgouXFwtcmFkaW8tLXN1Y2Nlc3MgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCArIGxhYmVsCnsKICBib3JkZXItY29sb3I6ICM0QUNGN0Y7Cn0KCi5cXC1yYWRpby0tZXJyb3IgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCArIGxhYmVsOmFmdGVyCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUU2NzVEOwp9CgouXFwtcmFkaW8tLWVycm9yIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQgKyBsYWJlbAp7CiAgYm9yZGVyLWNvbG9yOiAjRUU2NzVEOwp9CgouXFwtcmFkaW8tLXdhcm5pbmcgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCArIGxhYmVsOmFmdGVyCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkJDODUwOwp9CgouXFwtcmFkaW8tLXdhcm5pbmcgaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZCArIGxhYmVsCnsKICBib3JkZXItY29sb3I6ICNGQkM4NTA7Cn0KCi5cXC1zZWxlY3QKewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBoZWlnaHQ6IDM0cHg7CiAgbGluZS1oZWlnaHQ6IDM0cHg7CiAgZm9udC1zaXplOiAxNHB4OwogIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgY29sb3I6ICM1NDY3Nzg7CiAgcGFkZGluZy1sZWZ0OiAxMHB4OwogIHBhZGRpbmctcmlnaHQ6IDEwcHg7CiAgcGFkZGluZy10b3A6IDBweDsKICBwYWRkaW5nLWJvdHRvbTogMHB4OwogIGJvcmRlcjogMHB4OwogIGJvcmRlci1yYWRpdXM6IDVweDsKICBvdXRsaW5lOiAwcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFRjJGNzsKICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KCi5cXC1zZWxlY3QtLWZsdWlkCnsKICB3aWR0aDogMTAwJTsKfQoKLlxcLXNlbGVjdC0tbGlnaHQKewogIGJhY2tncm91bmQtY29sb3I6ICNGRkY7Cn0KCi5cXC1zZWxlY3QtLWRhcmsKewogIGJhY2tncm91bmQtY29sb3I6ICM1NDY3Nzg7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1zd2l0Y2gKewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMzJweDsKICBoZWlnaHQ6IDE4cHg7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgbWFyZ2luLWxlZnQ6IDEwcHg7CiAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogIG1hcmdpbi10b3A6IDhweDsKICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgdmVydGljYWwtYWxpZ246IHRvcDsKfQoKLlxcLXN3aXRjaCBsYWJlbAp7CiAgY3Vyc29yOiBwb2ludGVyOwp9CgouXFwtc3dpdGNoIGxhYmVsOjphZnRlcgp7CiAgZGlzcGxheTogYmxvY2s7CiAgY29udGVudDogIiI7CiAgd2lkdGg6IDE0cHg7CiAgaGVpZ2h0OiAxNHB4OwogIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICBiYWNrZ3JvdW5kOiAjODc5QUFCOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDJweDsKICBsZWZ0OiAycHg7CiAgei1pbmRleDogMjsKICBvcGFjaXR5OiAwLjY7Cn0KCi5cXC1zd2l0Y2ggbGFiZWw6OmFmdGVyOmhvdmVyCnsKICBvcGFjaXR5OiAxOwp9CgouXFwtc3dpdGNoIGxhYmVsOjpiZWZvcmUKewogIGRpc3BsYXk6IGJsb2NrOwogIGNvbnRlbnQ6ICIiOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTAwJTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRERFNUVFOwogIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgdHJhbnNpdGlvbjogYWxsIDAuM3M7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMHB4OwogIHotaW5kZXg6IDE7Cn0KCi5cXC1zd2l0Y2ggaW5wdXRbdHlwZT1jaGVja2JveF0KewogIHZpc2liaWxpdHk6IGhpZGRlbjsKfQoKLlxcLXN3aXRjaCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkIH4gbGFiZWw6OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzRFOTFFNDsKfQoKLlxcLXN3aXRjaCBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkIH4gbGFiZWw6OmFmdGVyCnsKICBsZWZ0OiAxNnB4OwogIG9wYWNpdHk6IDE7CiAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjsKfQoKLlxcLXN3aXRjaC0tc3VjY2VzcyBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkIH4gbGFiZWw6OmJlZm9yZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzRBQ0Y3RjsKfQoKLlxcLXN3aXRjaC0tZXJyb3IgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCB+IGxhYmVsOjpiZWZvcmUKewogIGJhY2tncm91bmQtY29sb3I6ICNFRTY3NUQ7Cn0KCi5cXC1zd2l0Y2gtLXdhcm5pbmcgaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZCB+IGxhYmVsOjpiZWZvcmUKewogIGJhY2tncm91bmQtY29sb3I6ICNGQkM4NTA7Cn0KCi5cXC10ZXh0YXJlYQp7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGxpbmUtaGVpZ2h0OiAyMHB4OwogIGZvbnQtc2l6ZTogMTRweDsKICBjb2xvcjogIzU0Njc3ODsKICBwYWRkaW5nOiAxMHB4OwogIGJvcmRlcjogMHB4OwogIGJvcmRlci1yYWRpdXM6IDVweDsKICBvdXRsaW5lOiAwcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFRjJGNzsKICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgcmVzaXplOiB2ZXJ0aWNhbDsKfQoKLlxcLXRleHRhcmVhLS1mbHVpZAp7CiAgd2lkdGg6IDEwMCU7Cn0KCi5cXC10ZXh0YXJlYS0tbGlnaHQKewogIGJhY2tncm91bmQtY29sb3I6ICNGRkY7Cn0KCi5cXC10ZXh0YXJlYS0tZGFyawp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzU0Njc3ODsKICBjb2xvcjogI0ZGRjsKfQoKLlxcLWdyaWQKewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIG1hcmdpbi1sZWZ0OiBhdXRvOwogIG1hcmdpbi1yaWdodDogYXV0bzsKfQoKLlxcLWdyaWQtcm93CnsKICBkaXNwbGF5OiBibG9jazsKICBtYXJnaW4tbGVmdDogLTEycHg7CiAgbWFyZ2luLXJpZ2h0OiAtMTJweDsKfQoKLlxcLWdyaWQtcm93OmFmdGVyCnsKICBjb250ZW50OiAiICI7CiAgY2xlYXI6IGJvdGg7CiAgZGlzcGxheTogdGFibGU7CiAgbGluZS1oZWlnaHQ6IDA7Cn0KCi5cXC1ncmlkLWNvbAp7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgZmxvYXQ6IGxlZnQ7CiAgcGFkZGluZzogMTJweDsKfQoKLlxcLWdyaWQtY29sLS0xCnsKICB3aWR0aDogY2FsYyg4LjMzJSAtIDIgKiAxMnB4KTsKfQoKLlxcLWdyaWQtY29sLS0yCnsKICB3aWR0aDogY2FsYygxNi42NiUgLSAyICogMTJweCk7Cn0KCi5cXC1ncmlkLWNvbC0tMwp7CiAgd2lkdGg6IGNhbGMoMjQuOTklIC0gMiAqIDEycHgpOwp9CgouXFwtZ3JpZC1jb2wtLTQKewogIHdpZHRoOiBjYWxjKDMzLjMzJSAtIDIgKiAxMnB4KTsKfQoKLlxcLWdyaWQtY29sLS01CnsKICB3aWR0aDogY2FsYyg0MS42NiUgLSAyICogMTJweCk7Cn0KCi5cXC1ncmlkLWNvbC0tNgp7CiAgd2lkdGg6IGNhbGMoNDkuOTklIC0gMiAqIDEycHgpOwp9CgouXFwtZ3JpZC1jb2wtLTcKewogIHdpZHRoOiBjYWxjKDU4LjMzJSAtIDIgKiAxMnB4KTsKfQoKLlxcLWdyaWQtY29sLS04CnsKICB3aWR0aDogY2FsYyg2Ni42NiUgLSAyICogMTJweCk7Cn0KCi5cXC1ncmlkLWNvbC0tOQp7CiAgd2lkdGg6IGNhbGMoNzQuOTklIC0gMiAqIDEycHgpOwp9CgouXFwtZ3JpZC1jb2wtLTEwCnsKICB3aWR0aDogY2FsYyg4My4zMyUgLSAyICogMTJweCk7Cn0KCi5cXC1ncmlkLWNvbC0tMTEKewogIHdpZHRoOiBjYWxjKDkxLjY2JSAtIDIgKiAxMnB4KTsKfQoKLlxcLWdyaWQtY29sLS0xMgp7CiAgd2lkdGg6IGNhbGMoOTkuOTklIC0gMiAqIDEycHgpOwp9CgpAbWVkaWEgKG1heC13aWR0aDogMTI4MHB4KQp7CiAgLlxcLWdyaWQtY29sLS14bC0xLCAuXFwtZ3JpZC1jb2wteGwtLTEKICB7CiAgICB3aWR0aDogY2FsYyg4LjMzJSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS14bC0yLCAuXFwtZ3JpZC1jb2wteGwtLTIKICB7CiAgICB3aWR0aDogY2FsYygxNi42NiUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0teGwtMywgLlxcLWdyaWQtY29sLXhsLS0zCiAgewogICAgd2lkdGg6IGNhbGMoMjQuOTklIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLXhsLTQsIC5cXC1ncmlkLWNvbC14bC0tNAogIHsKICAgIHdpZHRoOiBjYWxjKDMzLjMzJSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS14bC01LCAuXFwtZ3JpZC1jb2wteGwtLTUKICB7CiAgICB3aWR0aDogY2FsYyg0MS42NiUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0teGwtNiwgLlxcLWdyaWQtY29sLXhsLS02CiAgewogICAgd2lkdGg6IGNhbGMoNDkuOTklIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLXhsLTcsIC5cXC1ncmlkLWNvbC14bC0tNwogIHsKICAgIHdpZHRoOiBjYWxjKDU4LjMzJSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS14bC04LCAuXFwtZ3JpZC1jb2wteGwtLTgKICB7CiAgICB3aWR0aDogY2FsYyg2Ni42NiUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0teGwtOSwgLlxcLWdyaWQtY29sLXhsLS05CiAgewogICAgd2lkdGg6IGNhbGMoNzQuOTklIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLXhsLTEwLCAuXFwtZ3JpZC1jb2wteGwtLTEwCiAgewogICAgd2lkdGg6IGNhbGMoODMuMzMlIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLXhsLTExLCAuXFwtZ3JpZC1jb2wteGwtLTExCiAgewogICAgd2lkdGg6IGNhbGMoOTEuNjYlIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLXhsLTEyLCAuXFwtZ3JpZC1jb2wteGwtLTEyCiAgewogICAgd2lkdGg6IGNhbGMoOTkuOTklIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLXhsLWhpZGUKICB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogOTYwcHgpCnsKICAuXFwtZ3JpZC1jb2wtLWxnLTEsIC5cXC1ncmlkLWNvbC1sZy0tMQogIHsKICAgIHdpZHRoOiBjYWxjKDguMzMlIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLWxnLTIsIC5cXC1ncmlkLWNvbC1sZy0tMgogIHsKICAgIHdpZHRoOiBjYWxjKDE2LjY2JSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS1sZy0zLCAuXFwtZ3JpZC1jb2wtbGctLTMKICB7CiAgICB3aWR0aDogY2FsYygyNC45OSUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0tbGctNCwgLlxcLWdyaWQtY29sLWxnLS00CiAgewogICAgd2lkdGg6IGNhbGMoMzMuMzMlIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLWxnLTUsIC5cXC1ncmlkLWNvbC1sZy0tNQogIHsKICAgIHdpZHRoOiBjYWxjKDQxLjY2JSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS1sZy02LCAuXFwtZ3JpZC1jb2wtbGctLTYKICB7CiAgICB3aWR0aDogY2FsYyg0OS45OSUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0tbGctNywgLlxcLWdyaWQtY29sLWxnLS03CiAgewogICAgd2lkdGg6IGNhbGMoNTguMzMlIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLWxnLTgsIC5cXC1ncmlkLWNvbC1sZy0tOAogIHsKICAgIHdpZHRoOiBjYWxjKDY2LjY2JSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS1sZy05LCAuXFwtZ3JpZC1jb2wtbGctLTkKICB7CiAgICB3aWR0aDogY2FsYyg3NC45OSUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0tbGctMTAsIC5cXC1ncmlkLWNvbC1sZy0tMTAKICB7CiAgICB3aWR0aDogY2FsYyg4My4zMyUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0tbGctMTEsIC5cXC1ncmlkLWNvbC1sZy0tMTEKICB7CiAgICB3aWR0aDogY2FsYyg5MS42NiUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0tbGctMTIsIC5cXC1ncmlkLWNvbC1sZy0tMTIKICB7CiAgICB3aWR0aDogY2FsYyg5OS45OSUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0tbGctaGlkZQogIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkKewogIC5cXC1ncmlkLWNvbC0tbWQtMSwgLlxcLWdyaWQtY29sLW1kLS0xCiAgewogICAgd2lkdGg6IGNhbGMoOC4zMyUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0tbWQtMiwgLlxcLWdyaWQtY29sLW1kLS0yCiAgewogICAgd2lkdGg6IGNhbGMoMTYuNjYlIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLW1kLTMsIC5cXC1ncmlkLWNvbC1tZC0tMwogIHsKICAgIHdpZHRoOiBjYWxjKDI0Ljk5JSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS1tZC00LCAuXFwtZ3JpZC1jb2wtbWQtLTQKICB7CiAgICB3aWR0aDogY2FsYygzMy4zMyUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0tbWQtNSwgLlxcLWdyaWQtY29sLW1kLS01CiAgewogICAgd2lkdGg6IGNhbGMoNDEuNjYlIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLW1kLTYsIC5cXC1ncmlkLWNvbC1tZC0tNgogIHsKICAgIHdpZHRoOiBjYWxjKDQ5Ljk5JSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS1tZC03LCAuXFwtZ3JpZC1jb2wtbWQtLTcKICB7CiAgICB3aWR0aDogY2FsYyg1OC4zMyUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0tbWQtOCwgLlxcLWdyaWQtY29sLW1kLS04CiAgewogICAgd2lkdGg6IGNhbGMoNjYuNjYlIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLW1kLTksIC5cXC1ncmlkLWNvbC1tZC0tOQogIHsKICAgIHdpZHRoOiBjYWxjKDc0Ljk5JSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS1tZC0xMCwgLlxcLWdyaWQtY29sLW1kLS0xMAogIHsKICAgIHdpZHRoOiBjYWxjKDgzLjMzJSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS1tZC0xMSwgLlxcLWdyaWQtY29sLW1kLS0xMQogIHsKICAgIHdpZHRoOiBjYWxjKDkxLjY2JSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS1tZC0xMiwgLlxcLWdyaWQtY29sLW1kLS0xMgogIHsKICAgIHdpZHRoOiBjYWxjKDk5Ljk5JSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS1tZC1oaWRlCiAgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KQp7CiAgLlxcLWdyaWQtY29sLS1zbS0xLCAuXFwtZ3JpZC1jb2wtc20tLTEKICB7CiAgICB3aWR0aDogY2FsYyg4LjMzJSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS1zbS0yLCAuXFwtZ3JpZC1jb2wtc20tLTIKICB7CiAgICB3aWR0aDogY2FsYygxNi42NiUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0tc20tMywgLlxcLWdyaWQtY29sLXNtLS0zCiAgewogICAgd2lkdGg6IGNhbGMoMjQuOTklIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLXNtLTQsIC5cXC1ncmlkLWNvbC1zbS0tNAogIHsKICAgIHdpZHRoOiBjYWxjKDMzLjMzJSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS1zbS01LCAuXFwtZ3JpZC1jb2wtc20tLTUKICB7CiAgICB3aWR0aDogY2FsYyg0MS42NiUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0tc20tNiwgLlxcLWdyaWQtY29sLXNtLS02CiAgewogICAgd2lkdGg6IGNhbGMoNDkuOTklIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLXNtLTcsIC5cXC1ncmlkLWNvbC1zbS0tNwogIHsKICAgIHdpZHRoOiBjYWxjKDU4LjMzJSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS1zbS04LCAuXFwtZ3JpZC1jb2wtc20tLTgKICB7CiAgICB3aWR0aDogY2FsYyg2Ni42NiUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0tc20tOSwgLlxcLWdyaWQtY29sLXNtLS05CiAgewogICAgd2lkdGg6IGNhbGMoNzQuOTklIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLXNtLTEwLCAuXFwtZ3JpZC1jb2wtc20tLTEwCiAgewogICAgd2lkdGg6IGNhbGMoODMuMzMlIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLXNtLTExLCAuXFwtZ3JpZC1jb2wtc20tLTExCiAgewogICAgd2lkdGg6IGNhbGMoOTEuNjYlIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLXNtLTEyLCAuXFwtZ3JpZC1jb2wtc20tLTEyCiAgewogICAgd2lkdGg6IGNhbGMoOTkuOTklIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLXNtLWhpZGUKICB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogNDgwcHgpCnsKICAuXFwtZ3JpZC1jb2wtLXhzLTEsIC5cXC1ncmlkLWNvbC14cy0tMQogIHsKICAgIHdpZHRoOiBjYWxjKDguMzMlIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLXhzLTIsIC5cXC1ncmlkLWNvbC14cy0tMgogIHsKICAgIHdpZHRoOiBjYWxjKDE2LjY2JSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS14cy0zLCAuXFwtZ3JpZC1jb2wteHMtLTMKICB7CiAgICB3aWR0aDogY2FsYygyNC45OSUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0teHMtNCwgLlxcLWdyaWQtY29sLXhzLS00CiAgewogICAgd2lkdGg6IGNhbGMoMzMuMzMlIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLXhzLTUsIC5cXC1ncmlkLWNvbC14cy0tNQogIHsKICAgIHdpZHRoOiBjYWxjKDQxLjY2JSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS14cy02LCAuXFwtZ3JpZC1jb2wteHMtLTYKICB7CiAgICB3aWR0aDogY2FsYyg0OS45OSUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0teHMtNywgLlxcLWdyaWQtY29sLXhzLS03CiAgewogICAgd2lkdGg6IGNhbGMoNTguMzMlIC0gMiAqIDEycHgpOwogIH0KICAKICAuXFwtZ3JpZC1jb2wtLXhzLTgsIC5cXC1ncmlkLWNvbC14cy0tOAogIHsKICAgIHdpZHRoOiBjYWxjKDY2LjY2JSAtIDIgKiAxMnB4KTsKICB9CiAgCiAgLlxcLWdyaWQtY29sLS14cy05LCAuXFwtZ3JpZC1jb2wteHMtLTkKICB7CiAgICB3aWR0aDogY2FsYyg3NC45OSUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0teHMtMTAsIC5cXC1ncmlkLWNvbC14cy0tMTAKICB7CiAgICB3aWR0aDogY2FsYyg4My4zMyUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0teHMtMTEsIC5cXC1ncmlkLWNvbC14cy0tMTEKICB7CiAgICB3aWR0aDogY2FsYyg5MS42NiUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0teHMtMTIsIC5cXC1ncmlkLWNvbC14cy0tMTIKICB7CiAgICB3aWR0aDogY2FsYyg5OS45OSUgLSAyICogMTJweCk7CiAgfQogIAogIC5cXC1ncmlkLWNvbC0teHMtaGlkZQogIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB9Cn0KCi5cXC1kcm9wZG93bgp7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouXFwtZHJvcGRvd24tdG9nZ2xlOjphZnRlcgp7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGNvbnRlbnQ6ICIiOwogIGhlaWdodDogMHB4OwogIHdpZHRoOiAwcHg7CiAgbWFyZ2luLWxlZnQ6IDRweDsKICBib3JkZXItdG9wOiA2cHggc29saWQgI0ZGRjsKICBib3JkZXItbGVmdDogNHB4IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1yaWdodDogNHB4IHNvbGlkIHRyYW5zcGFyZW50OwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCi5cXC1kcm9wZG93bi10b2dnbGUtLWxpZ2h0OjphZnRlcgp7CiAgYm9yZGVyLXRvcC1jb2xvcjogI0ZGRjsKfQoKLlxcLWRyb3Bkb3duLXRvZ2dsZS0tZGFyazo6YWZ0ZXIKewogIGJvcmRlci10b3AtY29sb3I6ICM1NDY3Nzg7Cn0KCi5cXC1kcm9wZG93bi1jb250ZW50CnsKICBkaXNwbGF5OiBub25lOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IGNhbGMoMTAwJSArIDJweCk7CiAgbGVmdDogMHB4OwogIG1pbi13aWR0aDogMTUwcHg7CiAgY29sb3I6ICM1NDY3Nzg7CiAgdGV4dC1hbGlnbjogbGVmdDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGOwogIGJvcmRlci1yYWRpdXM6IDVweDsKICBib3JkZXI6IDFweCBzb2xpZCAjRERFNUVFOwp9CgouXFwtZHJvcGRvd24tLXZpc2libGUgLlxcLWRyb3Bkb3duLWNvbnRlbnQKewogIGRpc3BsYXk6IGJsb2NrOwp9CgouXFwtZHJvcGRvd24taXRlbQp7CiAgZGlzcGxheTogYmxvY2s7CiAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgZm9udC1zaXplOiAxNnB4OwogIHBhZGRpbmctbGVmdDogMTVweDsKICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogIHBhZGRpbmctdG9wOiA0cHg7CiAgcGFkZGluZy1ib3R0b206IDRweDsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGN1cnNvcjogcG9pbnRlcjsKICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3M7Cn0KCi5cXC1kcm9wZG93bi1pdGVtOmhvdmVyCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUVGMkY3Owp9CgouXFwtZHJvcGRvd24tc2VwYXJhdG9yCnsKICBkaXNwbGF5OiBibG9jazsKICBoZWlnaHQ6IDBweDsKICBib3JkZXItdG9wOiAxcHggc29saWQgI0RERTVFRTsKICBtYXJnaW4tdG9wOiA1cHg7CiAgbWFyZ2luLWJvdHRvbTogNXB4Owp9CgouXFwtbW9kYWwKewogIGRpc3BsYXk6IGZsZXg7CiAgd2lkdGg6IGNhbGMoMTAwJSAtIDIgKiAxNXB4KTsKICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDIgKiAxNXB4KTsKICBwb3NpdGlvbjogZml4ZWQ7CiAgdG9wOiAwcHg7CiAgbGVmdDogMHB4OwogIHotaW5kZXg6IDQwMDsKICBwYWRkaW5nOiAxNXB4OwogIG92ZXJmbG93LXg6IGhpZGRlbjsKICBvdmVyZmxvdy15OiBoaWRkZW47CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQyLCA1MiwgNjAsIDAuNCk7Cn0KCi5cXC1tb2RhbC1jb250ZW50CnsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGOwogIGJvcmRlci1yYWRpdXM6IDVweDsKICBwYWRkaW5nOiAwcHg7Cn0KCi5cXC1tb2RhbC1oZWFkZXIKewogIGRpc3BsYXk6IGJsb2NrOwogIGhlaWdodDogMjRweDsKICBwYWRkaW5nOiAyMHB4OwogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDVweDsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNXB4OwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRERFNUVFOwp9CgouXFwtbW9kYWwtaGVhZGVyLXRpdGxlCnsKICBmbG9hdDogbGVmdDsKICBmb250LXdlaWdodDogYm9sZDsKICBmb250LXNpemU6IDIwcHg7CiAgaGVpZ2h0OiAyNHB4OwogIGxpbmUtaGVpZ2h0OiAyNHB4Owp9CgouXFwtbW9kYWwtaGVhZGVyLWNsb3NlCnsKICBkaXNwbGF5OiBibG9jazsKICBmbG9hdDogcmlnaHQ7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHdpZHRoOiAxNnB4OwogIGhlaWdodDogMjRweDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgb3BhY2l0eTogMC42OwogIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zczsKfQoKLlxcLW1vZGFsLWhlYWRlci1jbG9zZTpob3Zlcgp7CiAgb3BhY2l0eTogMTsKfQoKLlxcLW1vZGFsLWhlYWRlci1jbG9zZTo6YmVmb3JlLCAuXFwtbW9kYWwtaGVhZGVyLWNsb3NlOjphZnRlcgp7CiAgY29udGVudDogIiI7CiAgd2lkdGg6IDE2cHg7CiAgaGVpZ2h0OiAzcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogIzU0Njc3ODsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgYm9yZGVyLXJhZGl1czogMXB4OwogIHRvcDogMTBweDsKfQoKLlxcLW1vZGFsLWhlYWRlci1jbG9zZTo6YmVmb3JlCnsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsKICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7Cn0KCi5cXC1tb2RhbC1oZWFkZXItY2xvc2U6OmFmdGVyCnsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7CiAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsKfQoKLlxcLW1vZGFsLWhlYWRlcjphZnRlcgp7CiAgY29udGVudDogIiI7CiAgY2xlYXI6IGJvdGg7Cn0KCi5cXC1tb2RhbC1ib2R5CnsKICBkaXNwbGF5OiBibG9jazsKICBvdmVyZmxvdy15OiBhdXRvOwogIG1heC1oZWlnaHQ6IDUwdmg7CiAgcGFkZGluZzogMjBweDsKfQoKLlxcLW1vZGFsLWZvb3Rlcgp7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZzogMjBweDsKICBjb2xvcjogIzg3OUFBQjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUVGMkY3OwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDVweDsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNXB4Owp9CgouXFwtbW9kYWwtLXNtYWxsIC5cXC1tb2RhbC1jb250ZW50CnsKICBtYXgtd2lkdGg6IDYwMHB4Owp9CgouXFwtbW9kYWwtLW1lZGl1bSAuXFwtbW9kYWwtY29udGVudAp7CiAgbWF4LXdpZHRoOiA3NjhweDsKfQoKLlxcLW1vZGFsLS1sYXJnZSAuXFwtbW9kYWwtY29udGVudAp7CiAgbWF4LXdpZHRoOiA5NjBweDsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHNpaW1wbGUtcHJvZ3Jlc3MtYW5pbWF0aW9uCnsKICAwJQogIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgMDsKICB9CiAgMTAwJQogIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IDUwcHggNTBweDsKICB9Cn0KCkBrZXlmcmFtZXMgc2lpbXBsZS1wcm9ncmVzcy1hbmltYXRpb24KewogIDAlCiAgewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwOwogIH0KICAxMDAlCiAgewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTBweCA1MHB4OwogIH0KfQoKLlxcLXByb2dyZXNzCnsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDIwcHg7CiAgcGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7CiAgbWFyZ2luLXRvcDogMHB4OwogIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgYm9yZGVyLXJhZGl1czogNXB4OwogIGJhY2tncm91bmQtY29sb3I6ICNFRUYyRjc7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgLW16LWFwcGVhcmFuY2U6IG5vbmU7Cn0KCi5cXC1wcm9ncmVzcyA+IHNwYW4KewogIGRpc3BsYXk6IGJsb2NrOwogIGhlaWdodDogMTAwJTsKICBvdmVyZmxvdzogaGlkZGVuOwogIHRyYW5zaXRpb246IGFsbCAwLjNzOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgbGluZS1oZWlnaHQ6IDIwcHg7CiAgZm9udC1zaXplOiAxMnB4Owp9CgouXFwtcHJvZ3Jlc3MtLXN0cmlwZWQgPiBzcGFuOjphZnRlciwgLlxcLXByb2dyZXNzLS1zdHJpcGVkLXNsb3cgPiBzcGFuOjphZnRlciwgLlxcLXByb2dyZXNzLS1zdHJpcGVkLWZhc3QgPiBzcGFuOjphZnRlcgp7CiAgY29udGVudDogIiI7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMHB4OwogIGxlZnQ6IDBweDsKICByaWdodDogMHB4OwogIGJvdHRvbTogMHB4OwogIHotaW5kZXg6IDE7CiAgYmFja2dyb3VuZC1zaXplOiA1MHB4IDUwcHg7CiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC00NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwp9CgouXFwtcHJvZ3Jlc3MtLXN0cmlwZWQgPiBzcGFuOjphZnRlcgp7CiAgLXdlYmtpdC1hbmltYXRpb246IHNpaW1wbGUtcHJvZ3Jlc3MtYW5pbWF0aW9uIDIuNXMgbGluZWFyIGluZmluaXRlOwogIGFuaW1hdGlvbjogc2lpbXBsZS1wcm9ncmVzcy1hbmltYXRpb24gMi41cyBsaW5lYXIgaW5maW5pdGU7Cn0KCi5cXC1wcm9ncmVzcy0tc3RyaXBlZC1mYXN0ID4gc3Bhbjo6YWZ0ZXIKewogIC13ZWJraXQtYW5pbWF0aW9uOiBzaWltcGxlLXByb2dyZXNzLWFuaW1hdGlvbiAxcyBsaW5lYXIgaW5maW5pdGU7CiAgYW5pbWF0aW9uOiBzaWltcGxlLXByb2dyZXNzLWFuaW1hdGlvbiAxcyBsaW5lYXIgaW5maW5pdGU7Cn0KCi5cXC1wcm9ncmVzcy0tc3RyaXBlZC1zbG93ID4gc3Bhbjo6YWZ0ZXIKewogIC13ZWJraXQtYW5pbWF0aW9uOiBzaWltcGxlLXByb2dyZXNzLWFuaW1hdGlvbiA0cyBsaW5lYXIgaW5maW5pdGU7CiAgYW5pbWF0aW9uOiBzaWltcGxlLXByb2dyZXNzLWFuaW1hdGlvbiA0cyBsaW5lYXIgaW5maW5pdGU7Cn0KCi5cXC1wcm9ncmVzcy5cXC1wcm9ncmVzcy0tcHJpbWFyeSA+IHNwYW4KewogIGJhY2tncm91bmQtY29sb3I6ICM0RTkxRTQ7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1wcm9ncmVzcy5cXC1wcm9ncmVzcy0tc3VjY2VzcyA+IHNwYW4KewogIGJhY2tncm91bmQtY29sb3I6ICM0QUNGN0Y7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1wcm9ncmVzcy5cXC1wcm9ncmVzcy0td2FybmluZyA+IHNwYW4KewogIGJhY2tncm91bmQtY29sb3I6ICNGQkM4NTA7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1wcm9ncmVzcy5cXC1wcm9ncmVzcy0tZXJyb3IgPiBzcGFuCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUU2NzVEOwogIGNvbG9yOiAjRkZGOwp9CgouXFwtcHJvZ3Jlc3MuXFwtcHJvZ3Jlc3MtLWRhcmsgPiBzcGFuCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2Nzc4OwogIGNvbG9yOiAjRkZGOwp9CgouXFwtcHJvZ3Jlc3MuXFwtcHJvZ3Jlc3MtLWxpZ2h0ID4gc3Bhbgp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0RERTVFRTsKICBjb2xvcjogIzU0Njc3ODsKfQoKLlxcLXN0ZXBzCnsKICBkaXNwbGF5OiBibG9jazsKICBtYXJnaW4tYm90dG9tOiAyMHB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLlxcLXN0ZXBzLWl0ZW0KewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBwYWRkaW5nLXRvcDogNDBweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5cXC1zdGVwcy1pdGVtLWJ1YmJsZQp7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDM0cHg7CiAgaGVpZ2h0OiAzNHB4OwogIGJvcmRlci1yYWRpdXM6IDEwMHB4OwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiBjYWxjKDUwJSAtIDM0cHggLyAyKTsKICB0b3A6IDBweDsKICB6LWluZGV4OiAxMDsKICBsaW5lLWhlaWdodDogMzRweDsKICBmb250LXNpemU6IDIwcHg7CiAgY29sb3I6ICNGRkY7Cn0KCi5cXC1zdGVwcy1pdGVtLXRpdGxlCnsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogY2FsYygxMDAlIC0gMiAqIDVweCk7CiAgcGFkZGluZy1sZWZ0OiA1cHg7CiAgcGFkZGluZy1yaWdodDogNXB4OwogIGZvbnQtc2l6ZTogMTVweDsKICBsaW5lLWhlaWdodDogMjJweDsKICBmb250LXdlaWdodDogYm9sZDsKICBjb2xvcjogI0NCRDhFNjsKfQoKLlxcLXN0ZXBzLWl0ZW0tZGVzY3JpcHRpb24KewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiBjYWxjKDEwMCUgLSAyICogNXB4KTsKICBwYWRkaW5nLWxlZnQ6IDVweDsKICBwYWRkaW5nLXJpZ2h0OiA1cHg7CiAgZm9udC1zaXplOiAxM3B4OwogIGxpbmUtaGVpZ2h0OiAyMHB4OwogIGNvbG9yOiAjRERFNUVFOwp9CgouXFwtc3RlcHMtaXRlbTpub3QoOmxhc3QtY2hpbGQpOjphZnRlcgp7CiAgY29udGVudDogIiI7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiA4cHg7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogY2FsYygyNnB4IC8gMik7CiAgbGVmdDogNTAlOwp9CgouXFwtc3RlcHMtaXRlbS0tY3VycmVudCB+IC5cXC1zdGVwcy1pdGVtIC5cXC1zdGVwcy1pdGVtLWJ1YmJsZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0RERTVFRSAhaW1wb3J0YW50Owp9CgouXFwtc3RlcHMtaXRlbS0tY3VycmVudDo6YWZ0ZXIsIC5cXC1zdGVwcy1pdGVtLS1jdXJyZW50IH4gLlxcLXN0ZXBzLWl0ZW06OmFmdGVyCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRERFNUVFICFpbXBvcnRhbnQ7Cn0KCi5cXC1zdGVwcy1pdGVtLS1jdXJyZW50IC5cXC1zdGVwcy1pdGVtLXRpdGxlCnsKICBjb2xvcjogIzU0Njc3OCAhaW1wb3J0YW50Owp9CgouXFwtc3RlcHMtaXRlbS0tY3VycmVudCAuXFwtc3RlcHMtaXRlbS1kZXNjcmlwdGlvbgp7CiAgY29sb3I6ICM4NzlBQUIgIWltcG9ydGFudDsKfQoKLlxcLXN0ZXBzLWl0ZW0tLWNoZWNrIC5cXC1zdGVwcy1pdGVtLWJ1YmJsZTo6YWZ0ZXIsIC5cXC1zdGVwcy1pdGVtLS1jaGVjayAuXFwtc3RlcHMtaXRlbS1idWJibGU6OmJlZm9yZSwgLlxcLXN0ZXBzLWl0ZW0tLWNyb3NzIC5cXC1zdGVwcy1pdGVtLWJ1YmJsZTo6YWZ0ZXIsIC5cXC1zdGVwcy1pdGVtLS1jcm9zcyAuXFwtc3RlcHMtaXRlbS1idWJibGU6OmJlZm9yZSwgLlxcLXN0ZXBzLWl0ZW0tLWV4Y2xhbWF0aW9uIC5cXC1zdGVwcy1pdGVtLWJ1YmJsZTo6YWZ0ZXIsIC5cXC1zdGVwcy1pdGVtLS1leGNsYW1hdGlvbiAuXFwtc3RlcHMtaXRlbS1idWJibGU6OmJlZm9yZQp7CiAgZGlzcGxheTogYmxvY2s7CiAgY29udGVudDogIiI7CiAgaGVpZ2h0OiAzcHg7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGJhY2tncm91bmQtY29sb3I6ICNGRkY7CiAgYm9yZGVyLXJhZGl1czogNXB4Owp9CgouXFwtc3RlcHMtaXRlbS0tY2hlY2sgLlxcLXN0ZXBzLWl0ZW0tYnViYmxlOjphZnRlcgp7CiAgd2lkdGg6IDEwcHg7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7CiAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOwogIHRvcDogMTlweDsKICBsZWZ0OiA2LjVweDsKfQoKLlxcLXN0ZXBzLWl0ZW0tLWNoZWNrIC5cXC1zdGVwcy1pdGVtLWJ1YmJsZTo6YmVmb3JlCnsKICB3aWR0aDogMThweDsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7CiAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsKICB0b3A6IDE2cHg7CiAgbGVmdDogMTAuNXB4Owp9CgouXFwtc3RlcHMtaXRlbS0tY3Jvc3MgLlxcLXN0ZXBzLWl0ZW0tYnViYmxlOjphZnRlcgp7CiAgd2lkdGg6IDIwcHg7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7CiAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOwogIHRvcDogMTUuNXB4OwogIGxlZnQ6IDdweDsKfQoKLlxcLXN0ZXBzLWl0ZW0tLWNyb3NzIC5cXC1zdGVwcy1pdGVtLWJ1YmJsZTo6YmVmb3JlCnsKICB3aWR0aDogMjBweDsKICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7CiAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsKICB0b3A6IDE1LjVweDsKICBsZWZ0OiA3cHg7Cn0KCi5cXC1zdGVwcy1pdGVtLS1leGNsYW1hdGlvbiAuXFwtc3RlcHMtaXRlbS1idWJibGU6OmFmdGVyCnsKICB3aWR0aDogM3B4OwogIHRvcDogMjJweDsKICBsZWZ0OiAxNS41cHg7Cn0KCi5cXC1zdGVwcy1pdGVtLS1leGNsYW1hdGlvbiAuXFwtc3RlcHMtaXRlbS1idWJibGU6OmJlZm9yZQp7CiAgd2lkdGg6IDNweDsKICBoZWlnaHQ6IDExcHg7CiAgdG9wOiA4cHg7CiAgbGVmdDogMTUuNXB4Owp9CgouXFwtc3RlcHMtLXByaW1hcnkgLlxcLXN0ZXBzLWl0ZW0tYnViYmxlCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNEU5MUU0Owp9CgouXFwtc3RlcHMtLXByaW1hcnkgLlxcLXN0ZXBzLWl0ZW06bm90KDpsYXN0LWNoaWxkKTo6YWZ0ZXIKewogIGJhY2tncm91bmQtY29sb3I6ICM0RTkxRTQ7Cn0KCi5cXC1zdGVwcy0tc3VjY2VzcyAuXFwtc3RlcHMtaXRlbS1idWJibGUKewogIGJhY2tncm91bmQtY29sb3I6ICM0QUNGN0Y7Cn0KCi5cXC1zdGVwcy0tc3VjY2VzcyAuXFwtc3RlcHMtaXRlbTpub3QoOmxhc3QtY2hpbGQpOjphZnRlcgp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzRBQ0Y3RjsKfQoKLlxcLXN0ZXBzLS13YXJuaW5nIC5cXC1zdGVwcy1pdGVtLWJ1YmJsZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0ZCQzg1MDsKfQoKLlxcLXN0ZXBzLS13YXJuaW5nIC5cXC1zdGVwcy1pdGVtOm5vdCg6bGFzdC1jaGlsZCk6OmFmdGVyCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkJDODUwOwp9CgouXFwtc3RlcHMtLWVycm9yIC5cXC1zdGVwcy1pdGVtLWJ1YmJsZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFNjc1RDsKfQoKLlxcLXN0ZXBzLS1lcnJvciAuXFwtc3RlcHMtaXRlbTpub3QoOmxhc3QtY2hpbGQpOjphZnRlcgp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFNjc1RDsKfQoKLlxcLXN0ZXBzLS1kYXJrIC5cXC1zdGVwcy1pdGVtLWJ1YmJsZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzU0Njc3ODsKfQoKLlxcLXN0ZXBzLS1kYXJrIC5cXC1zdGVwcy1pdGVtOm5vdCg6bGFzdC1jaGlsZCk6OmFmdGVyCnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ2Nzc4Owp9CgouXFwtc3RlcHMtLWxpZ2h0IC5cXC1zdGVwcy1pdGVtLWJ1YmJsZQp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0RERTVFRTsKfQoKLlxcLXN0ZXBzLS1saWdodCAuXFwtc3RlcHMtaXRlbTpub3QoOmxhc3QtY2hpbGQpOjphZnRlcgp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0RERTVFRTsKfQoKLlxcLS1jb2xvci1wcmltYXJ5CnsKICBjb2xvcjogIzRFOTFFNCAhaW1wb3J0YW50Owp9CgouXFwtLWJnLXByaW1hcnkKewogIGJhY2tncm91bmQtY29sb3I6ICM0RTkxRTQgIWltcG9ydGFudDsKfQoKLlxcLS1jb2xvci1zdWNjZXNzCnsKICBjb2xvcjogIzRBQ0Y3RiAhaW1wb3J0YW50Owp9CgouXFwtLWJnLXN1Y2Nlc3MKewogIGJhY2tncm91bmQtY29sb3I6ICM0QUNGN0YgIWltcG9ydGFudDsKfQoKLlxcLS1jb2xvci13YXJuaW5nCnsKICBjb2xvcjogI0ZCQzg1MCAhaW1wb3J0YW50Owp9CgouXFwtLWJnLXdhcm5pbmcKewogIGJhY2tncm91bmQtY29sb3I6ICNGQkM4NTAgIWltcG9ydGFudDsKfQoKLlxcLS1jb2xvci1lcnJvcgp7CiAgY29sb3I6ICNFRTY3NUQgIWltcG9ydGFudDsKfQoKLlxcLS1iZy1lcnJvcgp7CiAgYmFja2dyb3VuZC1jb2xvcjogI0VFNjc1RCAhaW1wb3J0YW50Owp9CgouXFwtLWNvbG9yLWRhcmsKewogIGNvbG9yOiAjNTQ2Nzc4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tYmctZGFyawp7CiAgYmFja2dyb3VuZC1jb2xvcjogIzU0Njc3OCAhaW1wb3J0YW50Owp9CgouXFwtLWNvbG9yLWxpZ2h0CnsKICBjb2xvcjogI0RERTVFRSAhaW1wb3J0YW50Owp9CgouXFwtLWJnLWxpZ2h0CnsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjRERFNUVFICFpbXBvcnRhbnQ7Cn0KCi5cXC0tY29sb3Itd2hpdGUKewogIGNvbG9yOiAjRkZGICFpbXBvcnRhbnQ7Cn0KCi5cXC0tYmctd2hpdGUKewogIGJhY2tncm91bmQtY29sb3I6ICNGRkYgIWltcG9ydGFudDsKfQoKLlxcLS1kaXNwbGF5LW5vbmUKewogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQoKLlxcLS1kaXNwbGF5LWJsb2NrCnsKICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50Owp9CgouXFwtLWRpc3BsYXktaW5saW5lCnsKICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsKfQoKLlxcLS1kaXNwbGF5LWlubGluZS1ibG9jawp7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7Cn0KCi5cXC0tZGlzcGxheS10YWJsZQp7CiAgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsKfQoKLlxcLS1kaXNwbGF5LXRhYmxlLWNlbGwKewogIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKfQoKLlxcLS1kaXNwbGF5LXRhYmxlLXJvdwp7CiAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tZGlzcGxheS1mbGV4CnsKICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tZGlzcGxheS1pbmxpbmUtZmxleAp7CiAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsKfQoKQG1lZGlhIChtYXgtd2lkdGg6IDEyODBweCkKewogIC5cXC0tZGlzcGxheS14bC1ub25lCiAgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWRpc3BsYXkteGwtYmxvY2sKICB7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWRpc3BsYXkteGwtaW5saW5lCiAgewogICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7CiAgfQogIAogIC5cXC0tZGlzcGxheS14bC1pbmxpbmUtYmxvY2sKICB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1kaXNwbGF5LXhsLXRhYmxlCiAgewogICAgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1kaXNwbGF5LXhsLXRhYmxlLWNlbGwKICB7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7CiAgfQogIAogIC5cXC0tZGlzcGxheS14bC10YWJsZS1yb3cKICB7CiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1kaXNwbGF5LXhsLWZsZXgKICB7CiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgfQogIAogIC5cXC0tZGlzcGxheS14bC1pbmxpbmUtZmxleAogIHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CiAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogOTYwcHgpCnsKICAuXFwtLWRpc3BsYXktbGctbm9uZQogIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1kaXNwbGF5LWxnLWJsb2NrCiAgewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1kaXNwbGF5LWxnLWlubGluZQogIHsKICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWRpc3BsYXktbGctaW5saW5lLWJsb2NrCiAgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIAogIC5cXC0tZGlzcGxheS1sZy10YWJsZQogIHsKICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7CiAgfQogIAogIC5cXC0tZGlzcGxheS1sZy10YWJsZS1jZWxsCiAgewogICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWRpc3BsYXktbGctdGFibGUtcm93CiAgewogICAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7CiAgfQogIAogIC5cXC0tZGlzcGxheS1sZy1mbGV4CiAgewogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWRpc3BsYXktbGctaW5saW5lLWZsZXgKICB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OwogIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KQp7CiAgLlxcLS1kaXNwbGF5LW1kLW5vbmUKICB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgfQogIAogIC5cXC0tZGlzcGxheS1tZC1ibG9jawogIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIAogIC5cXC0tZGlzcGxheS1tZC1pbmxpbmUKICB7CiAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1kaXNwbGF5LW1kLWlubGluZS1ibG9jawogIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWRpc3BsYXktbWQtdGFibGUKICB7CiAgICBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWRpc3BsYXktbWQtdGFibGUtY2VsbAogIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1kaXNwbGF5LW1kLXRhYmxlLXJvdwogIHsKICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWRpc3BsYXktbWQtZmxleAogIHsKICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1kaXNwbGF5LW1kLWlubGluZS1mbGV4CiAgewogICAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsKICB9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCkKewogIC5cXC0tZGlzcGxheS1zbS1ub25lCiAgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWRpc3BsYXktc20tYmxvY2sKICB7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWRpc3BsYXktc20taW5saW5lCiAgewogICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7CiAgfQogIAogIC5cXC0tZGlzcGxheS1zbS1pbmxpbmUtYmxvY2sKICB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1kaXNwbGF5LXNtLXRhYmxlCiAgewogICAgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1kaXNwbGF5LXNtLXRhYmxlLWNlbGwKICB7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7CiAgfQogIAogIC5cXC0tZGlzcGxheS1zbS10YWJsZS1yb3cKICB7CiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1kaXNwbGF5LXNtLWZsZXgKICB7CiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgfQogIAogIC5cXC0tZGlzcGxheS1zbS1pbmxpbmUtZmxleAogIHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CiAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogNDgwcHgpCnsKICAuXFwtLWRpc3BsYXkteHMtbm9uZQogIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1kaXNwbGF5LXhzLWJsb2NrCiAgewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1kaXNwbGF5LXhzLWlubGluZQogIHsKICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWRpc3BsYXkteHMtaW5saW5lLWJsb2NrCiAgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIAogIC5cXC0tZGlzcGxheS14cy10YWJsZQogIHsKICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7CiAgfQogIAogIC5cXC0tZGlzcGxheS14cy10YWJsZS1jZWxsCiAgewogICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWRpc3BsYXkteHMtdGFibGUtcm93CiAgewogICAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7CiAgfQogIAogIC5cXC0tZGlzcGxheS14cy1mbGV4CiAgewogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWRpc3BsYXkteHMtaW5saW5lLWZsZXgKICB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OwogIH0KfQoKLlxcLS1mbG9hdC1sZWZ0CnsKICBmbG9hdDogbGVmdCAhaW1wb3J0YW50Owp9CgouXFwtLWZsb2F0LXJpZ2h0CnsKICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDsKfQoKLlxcLS1mbG9hdC1ub25lCnsKICBmbG9hdDogbm9uZSAhaW1wb3J0YW50Owp9CgpAbWVkaWEgKG1heC13aWR0aDogMTI4MHB4KQp7CiAgLlxcLS1mbG9hdC14bC1sZWZ0CiAgewogICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1mbG9hdC14bC1yaWdodAogIHsKICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWZsb2F0LXhsLW5vbmUKICB7CiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50OwogIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6IDk2MHB4KQp7CiAgLlxcLS1mbG9hdC1sZy1sZWZ0CiAgewogICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1mbG9hdC1sZy1yaWdodAogIHsKICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWZsb2F0LWxnLW5vbmUKICB7CiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50OwogIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KQp7CiAgLlxcLS1mbG9hdC1tZC1sZWZ0CiAgewogICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1mbG9hdC1tZC1yaWdodAogIHsKICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWZsb2F0LW1kLW5vbmUKICB7CiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50OwogIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KQp7CiAgLlxcLS1mbG9hdC1zbS1sZWZ0CiAgewogICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1mbG9hdC1zbS1yaWdodAogIHsKICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWZsb2F0LXNtLW5vbmUKICB7CiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50OwogIH0KfQoKQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KQp7CiAgLlxcLS1mbG9hdC14cy1sZWZ0CiAgewogICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKICB9CiAgCiAgLlxcLS1mbG9hdC14cy1yaWdodAogIHsKICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50OwogIH0KICAKICAuXFwtLWZsb2F0LXhzLW5vbmUKICB7CiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50OwogIH0KfQoKLlxcLS1jbGVhcmZpeDo6YWZ0ZXIKewogIGRpc3BsYXk6IGJsb2NrOwogIGNvbnRlbnQ6ICIiOwogIGNsZWFyOiBib3RoOwp9CgouXFwtLWxoLW5vcm1hbAp7CiAgbGluZS1oZWlnaHQ6IDI0cHggIWltcG9ydGFudDsKfQoKLlxcLS1saC1jb25kZW5zZWQKewogIGxpbmUtaGVpZ2h0OiAxOHB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0td2lkdGgtMAp7CiAgd2lkdGg6IDAlICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbXdpZHRoLTAKewogIG1heC13aWR0aDogMCUgIWltcG9ydGFudDsKfQoKLlxcLS1oZWlnaHQtMAp7CiAgaGVpZ2h0OiAwJSAhaW1wb3J0YW50Owp9CgouXFwtLW1oZWlnaHQtMAp7CiAgbWF4LWhlaWdodDogMCUgIWltcG9ydGFudDsKfQoKLlxcLS13aWR0aC0yNQp7CiAgd2lkdGg6IDI1JSAhaW1wb3J0YW50Owp9CgouXFwtLW13aWR0aC0yNQp7CiAgbWF4LXdpZHRoOiAyNSUgIWltcG9ydGFudDsKfQoKLlxcLS1oZWlnaHQtMjUKewogIGhlaWdodDogMjUlICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbWhlaWdodC0yNQp7CiAgbWF4LWhlaWdodDogMjUlICFpbXBvcnRhbnQ7Cn0KCi5cXC0td2lkdGgtNTAKewogIHdpZHRoOiA1MCUgIWltcG9ydGFudDsKfQoKLlxcLS1td2lkdGgtNTAKewogIG1heC13aWR0aDogNTAlICFpbXBvcnRhbnQ7Cn0KCi5cXC0taGVpZ2h0LTUwCnsKICBoZWlnaHQ6IDUwJSAhaW1wb3J0YW50Owp9CgouXFwtLW1oZWlnaHQtNTAKewogIG1heC1oZWlnaHQ6IDUwJSAhaW1wb3J0YW50Owp9CgouXFwtLXdpZHRoLTc1CnsKICB3aWR0aDogNzUlICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbXdpZHRoLTc1CnsKICBtYXgtd2lkdGg6IDc1JSAhaW1wb3J0YW50Owp9CgouXFwtLWhlaWdodC03NQp7CiAgaGVpZ2h0OiA3NSUgIWltcG9ydGFudDsKfQoKLlxcLS1taGVpZ2h0LTc1CnsKICBtYXgtaGVpZ2h0OiA3NSUgIWltcG9ydGFudDsKfQoKLlxcLS13aWR0aC0xMDAKewogIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbXdpZHRoLTEwMAp7CiAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7Cn0KCi5cXC0taGVpZ2h0LTEwMAp7CiAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbWhlaWdodC0xMDAKewogIG1heC1oZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKfQoKLlxcLS1tdC0wCnsKICBtYXJnaW4tdG9wOiAwcHggIWltcG9ydGFudDsKfQoKLlxcLS1tYi0wCnsKICBtYXJnaW4tYm90dG9tOiAwcHggIWltcG9ydGFudDsKfQoKLlxcLS1tbC0wCnsKICBtYXJnaW4tbGVmdDogMHB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbXItMAp7CiAgbWFyZ2luLXJpZ2h0OiAwcHggIWltcG9ydGFudDsKfQoKLlxcLS1teC0wCnsKICBtYXJnaW4tbGVmdDogMHB4ICFpbXBvcnRhbnQ7CiAgbWFyZ2luLXJpZ2h0OiAwcHggIWltcG9ydGFudDsKfQoKLlxcLS1teS0wCnsKICBtYXJnaW4tdG9wOiAwcHggIWltcG9ydGFudDsKICBtYXJnaW4tYm90dG9tOiAwcHggIWltcG9ydGFudDsKfQoKLlxcLS1wdC0wCnsKICBwYWRkaW5nLXRvcDogMHB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tcGItMAp7CiAgcGFkZGluZy1ib3R0b206IDBweCAhaW1wb3J0YW50Owp9CgouXFwtLXBsLTAKewogIHBhZGRpbmctbGVmdDogMHB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tcHItMAp7CiAgcGFkZGluZy1yaWdodDogMHB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tcHgtMAp7CiAgcGFkZGluZy1sZWZ0OiAwcHggIWltcG9ydGFudDsKICBwYWRkaW5nLXJpZ2h0OiAwcHggIWltcG9ydGFudDsKfQoKLlxcLS1weS0wCnsKICBwYWRkaW5nLXRvcDogMHB4ICFpbXBvcnRhbnQ7CiAgcGFkZGluZy1ib3R0b206IDBweCAhaW1wb3J0YW50Owp9CgouXFwtLW10LTEKewogIG1hcmdpbi10b3A6IDVweCAhaW1wb3J0YW50Owp9CgouXFwtLW1iLTEKewogIG1hcmdpbi1ib3R0b206IDVweCAhaW1wb3J0YW50Owp9CgouXFwtLW1sLTEKewogIG1hcmdpbi1sZWZ0OiA1cHggIWltcG9ydGFudDsKfQoKLlxcLS1tci0xCnsKICBtYXJnaW4tcmlnaHQ6IDVweCAhaW1wb3J0YW50Owp9CgouXFwtLW14LTEKewogIG1hcmdpbi1sZWZ0OiA1cHggIWltcG9ydGFudDsKICBtYXJnaW4tcmlnaHQ6IDVweCAhaW1wb3J0YW50Owp9CgouXFwtLW15LTEKewogIG1hcmdpbi10b3A6IDVweCAhaW1wb3J0YW50OwogIG1hcmdpbi1ib3R0b206IDVweCAhaW1wb3J0YW50Owp9CgouXFwtLXB0LTEKewogIHBhZGRpbmctdG9wOiA1cHggIWltcG9ydGFudDsKfQoKLlxcLS1wYi0xCnsKICBwYWRkaW5nLWJvdHRvbTogNXB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tcGwtMQp7CiAgcGFkZGluZy1sZWZ0OiA1cHggIWltcG9ydGFudDsKfQoKLlxcLS1wci0xCnsKICBwYWRkaW5nLXJpZ2h0OiA1cHggIWltcG9ydGFudDsKfQoKLlxcLS1weC0xCnsKICBwYWRkaW5nLWxlZnQ6IDVweCAhaW1wb3J0YW50OwogIHBhZGRpbmctcmlnaHQ6IDVweCAhaW1wb3J0YW50Owp9CgouXFwtLXB5LTEKewogIHBhZGRpbmctdG9wOiA1cHggIWltcG9ydGFudDsKICBwYWRkaW5nLWJvdHRvbTogNXB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbXQtMgp7CiAgbWFyZ2luLXRvcDogMTBweCAhaW1wb3J0YW50Owp9CgouXFwtLW1iLTIKewogIG1hcmdpbi1ib3R0b206IDEwcHggIWltcG9ydGFudDsKfQoKLlxcLS1tbC0yCnsKICBtYXJnaW4tbGVmdDogMTBweCAhaW1wb3J0YW50Owp9CgouXFwtLW1yLTIKewogIG1hcmdpbi1yaWdodDogMTBweCAhaW1wb3J0YW50Owp9CgouXFwtLW14LTIKewogIG1hcmdpbi1sZWZ0OiAxMHB4ICFpbXBvcnRhbnQ7CiAgbWFyZ2luLXJpZ2h0OiAxMHB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbXktMgp7CiAgbWFyZ2luLXRvcDogMTBweCAhaW1wb3J0YW50OwogIG1hcmdpbi1ib3R0b206IDEwcHggIWltcG9ydGFudDsKfQoKLlxcLS1wdC0yCnsKICBwYWRkaW5nLXRvcDogMTBweCAhaW1wb3J0YW50Owp9CgouXFwtLXBiLTIKewogIHBhZGRpbmctYm90dG9tOiAxMHB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tcGwtMgp7CiAgcGFkZGluZy1sZWZ0OiAxMHB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tcHItMgp7CiAgcGFkZGluZy1yaWdodDogMTBweCAhaW1wb3J0YW50Owp9CgouXFwtLXB4LTIKewogIHBhZGRpbmctbGVmdDogMTBweCAhaW1wb3J0YW50OwogIHBhZGRpbmctcmlnaHQ6IDEwcHggIWltcG9ydGFudDsKfQoKLlxcLS1weS0yCnsKICBwYWRkaW5nLXRvcDogMTBweCAhaW1wb3J0YW50OwogIHBhZGRpbmctYm90dG9tOiAxMHB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbXQtMwp7CiAgbWFyZ2luLXRvcDogMTVweCAhaW1wb3J0YW50Owp9CgouXFwtLW1iLTMKewogIG1hcmdpbi1ib3R0b206IDE1cHggIWltcG9ydGFudDsKfQoKLlxcLS1tbC0zCnsKICBtYXJnaW4tbGVmdDogMTVweCAhaW1wb3J0YW50Owp9CgouXFwtLW1yLTMKewogIG1hcmdpbi1yaWdodDogMTVweCAhaW1wb3J0YW50Owp9CgouXFwtLW14LTMKewogIG1hcmdpbi1sZWZ0OiAxNXB4ICFpbXBvcnRhbnQ7CiAgbWFyZ2luLXJpZ2h0OiAxNXB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbXktMwp7CiAgbWFyZ2luLXRvcDogMTVweCAhaW1wb3J0YW50OwogIG1hcmdpbi1ib3R0b206IDE1cHggIWltcG9ydGFudDsKfQoKLlxcLS1wdC0zCnsKICBwYWRkaW5nLXRvcDogMTVweCAhaW1wb3J0YW50Owp9CgouXFwtLXBiLTMKewogIHBhZGRpbmctYm90dG9tOiAxNXB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tcGwtMwp7CiAgcGFkZGluZy1sZWZ0OiAxNXB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tcHItMwp7CiAgcGFkZGluZy1yaWdodDogMTVweCAhaW1wb3J0YW50Owp9CgouXFwtLXB4LTMKewogIHBhZGRpbmctbGVmdDogMTVweCAhaW1wb3J0YW50OwogIHBhZGRpbmctcmlnaHQ6IDE1cHggIWltcG9ydGFudDsKfQoKLlxcLS1weS0zCnsKICBwYWRkaW5nLXRvcDogMTVweCAhaW1wb3J0YW50OwogIHBhZGRpbmctYm90dG9tOiAxNXB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbXQtNAp7CiAgbWFyZ2luLXRvcDogMjVweCAhaW1wb3J0YW50Owp9CgouXFwtLW1iLTQKewogIG1hcmdpbi1ib3R0b206IDI1cHggIWltcG9ydGFudDsKfQoKLlxcLS1tbC00CnsKICBtYXJnaW4tbGVmdDogMjVweCAhaW1wb3J0YW50Owp9CgouXFwtLW1yLTQKewogIG1hcmdpbi1yaWdodDogMjVweCAhaW1wb3J0YW50Owp9CgouXFwtLW14LTQKewogIG1hcmdpbi1sZWZ0OiAyNXB4ICFpbXBvcnRhbnQ7CiAgbWFyZ2luLXJpZ2h0OiAyNXB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbXktNAp7CiAgbWFyZ2luLXRvcDogMjVweCAhaW1wb3J0YW50OwogIG1hcmdpbi1ib3R0b206IDI1cHggIWltcG9ydGFudDsKfQoKLlxcLS1wdC00CnsKICBwYWRkaW5nLXRvcDogMjVweCAhaW1wb3J0YW50Owp9CgouXFwtLXBiLTQKewogIHBhZGRpbmctYm90dG9tOiAyNXB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tcGwtNAp7CiAgcGFkZGluZy1sZWZ0OiAyNXB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tcHItNAp7CiAgcGFkZGluZy1yaWdodDogMjVweCAhaW1wb3J0YW50Owp9CgouXFwtLXB4LTQKewogIHBhZGRpbmctbGVmdDogMjVweCAhaW1wb3J0YW50OwogIHBhZGRpbmctcmlnaHQ6IDI1cHggIWltcG9ydGFudDsKfQoKLlxcLS1weS00CnsKICBwYWRkaW5nLXRvcDogMjVweCAhaW1wb3J0YW50OwogIHBhZGRpbmctYm90dG9tOiAyNXB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbXQtNQp7CiAgbWFyZ2luLXRvcDogNDVweCAhaW1wb3J0YW50Owp9CgouXFwtLW1iLTUKewogIG1hcmdpbi1ib3R0b206IDQ1cHggIWltcG9ydGFudDsKfQoKLlxcLS1tbC01CnsKICBtYXJnaW4tbGVmdDogNDVweCAhaW1wb3J0YW50Owp9CgouXFwtLW1yLTUKewogIG1hcmdpbi1yaWdodDogNDVweCAhaW1wb3J0YW50Owp9CgouXFwtLW14LTUKewogIG1hcmdpbi1sZWZ0OiA0NXB4ICFpbXBvcnRhbnQ7CiAgbWFyZ2luLXJpZ2h0OiA0NXB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbXktNQp7CiAgbWFyZ2luLXRvcDogNDVweCAhaW1wb3J0YW50OwogIG1hcmdpbi1ib3R0b206IDQ1cHggIWltcG9ydGFudDsKfQoKLlxcLS1wdC01CnsKICBwYWRkaW5nLXRvcDogNDVweCAhaW1wb3J0YW50Owp9CgouXFwtLXBiLTUKewogIHBhZGRpbmctYm90dG9tOiA0NXB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tcGwtNQp7CiAgcGFkZGluZy1sZWZ0OiA0NXB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tcHItNQp7CiAgcGFkZGluZy1yaWdodDogNDVweCAhaW1wb3J0YW50Owp9CgouXFwtLXB4LTUKewogIHBhZGRpbmctbGVmdDogNDVweCAhaW1wb3J0YW50OwogIHBhZGRpbmctcmlnaHQ6IDQ1cHggIWltcG9ydGFudDsKfQoKLlxcLS1weS01CnsKICBwYWRkaW5nLXRvcDogNDVweCAhaW1wb3J0YW50OwogIHBhZGRpbmctYm90dG9tOiA0NXB4ICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbXQtYXV0bwp7CiAgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50Owp9CgouXFwtLW1iLWF1dG8KewogIG1hcmdpbi1ib3R0b206IGF1dG8gIWltcG9ydGFudDsKfQoKLlxcLS1tbC1hdXRvCnsKICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50Owp9CgouXFwtLW1yLWF1dG8KewogIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50Owp9CgouXFwtLW14LWF1dG8KewogIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7Cn0KCi5cXC0tbXktYXV0bwp7CiAgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50OwogIG1hcmdpbi1ib3R0b206IGF1dG8gIWltcG9ydGFudDsKfQoKLlxcLS10ZXh0LWp1c3RpZnkKewogIHRleHQtYWxpZ246IGp1c3RpZnkgIWltcG9ydGFudDsKfQoKLlxcLS10ZXh0LWxlZnQKewogIHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsKfQoKLlxcLS10ZXh0LWNlbnRlcgp7CiAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi5cXC0tdGV4dC1yaWdodAp7CiAgdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDsKfQoKLlxcLS10ZXh0LXVwcGVyY2FzZQp7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZSAhaW1wb3J0YW50Owp9CgouXFwtLXRleHQtbG93ZXJjYXNlCnsKICB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlICFpbXBvcnRhbnQ7Cn0KCi5cXC0tdGV4dC1jYXBpdGFsaXplCnsKICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZSAhaW1wb3J0YW50Owp9CgouXFwtLXRleHQtYm9sZAp7CiAgZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50Owp9CgouXFwtLXRleHQtaXRhbGljCnsKICBmb250LXN0eWxlOiBpdGFsaWMgIWltcG9ydGFudDsKfQoKLlxcLS10ZXh0LW5vcm1hbAp7CiAgZm9udC13ZWlnaHQ6IDQwMCAhaW1wb3J0YW50Owp9CgouXFwtLXRleHQtc21hbGwKewogIGZvbnQtc2l6ZTogMTNweCAhaW1wb3J0YW50Owp9CgouXFwtLXJvdW5kZWQKewogIGJvcmRlci1yYWRpdXM6IDVweDsKfQ==]]></data>
	</file>
	<file>
	  <filename>/css/bs/lib/grid-utils.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LlxcLWdyaWQgICAgICAgICAgICB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsgfQouXFwtZ3JpZC5cLXRvcCAgICAgIHsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IH0KLlxcLWdyaWQuXC1taWRkbGUgICB7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH0KLlxcLWdyaWQuXC1ib3R0b20gICB7IGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsgfQouXFwtZ3JpZC5cLXN0cmV0Y2ggIHsgYWxpZ24taXRlbXM6IHN0cmV0Y2g7IH0KLlxcLWdyaWQuXC1iYXNlbGluZSB7IGFsaWduLWl0ZW1zOiBiYXNlbGluZTsgfQouXFwtZ3JpZC5cLWxlZnQgICAgIHsganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OyB9Ci5cXC1ncmlkLlwtY2VudGVyICAgeyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgfQouXFwtZ3JpZC5cLXJpZ2h0ICAgIHsganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsgfQouXFwtZ3JpZC5cLWJldHdlZW4gIHsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyB9Ci5cXC1ncmlkLlwtYXJvdW5kICAgeyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsgfQoKLlxcLWNlbGwgICAgICAgICAgICB7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZsZXgtc2hyaW5rOiAwOyB9Ci5cXC1jZWxsLlwtZmlsbCAgICAgeyB3aWR0aDogMDsgbWluLXdpZHRoOiAwOyBmbGV4LWdyb3c6IDE7IH0KLlxcLWNlbGwuXC0xICAgICAgICB7IHdpZHRoOiBjYWxjKDEwMCUgKiAxIC8gMTIpOyB9Ci5cXC1jZWxsLlwtMiAgICAgICAgeyB3aWR0aDogY2FsYygxMDAlICogMiAvIDEyKTsgfQouXFwtY2VsbC5cLTMgICAgICAgIHsgd2lkdGg6IGNhbGMoMTAwJSAqIDMgLyAxMik7IH0KLlxcLWNlbGwuXC00ICAgICAgICB7IHdpZHRoOiBjYWxjKDEwMCUgKiA0IC8gMTIpOyB9Ci5cXC1jZWxsLlwtNSAgICAgICAgeyB3aWR0aDogY2FsYygxMDAlICogNSAvIDEyKTsgfQouXFwtY2VsbC5cLTYgICAgICAgIHsgd2lkdGg6IGNhbGMoMTAwJSAqIDYgLyAxMik7IH0KLlxcLWNlbGwuXC03ICAgICAgICB7IHdpZHRoOiBjYWxjKDEwMCUgKiA3IC8gMTIpOyB9Ci5cXC1jZWxsLlwtOCAgICAgICAgeyB3aWR0aDogY2FsYygxMDAlICogOCAvIDEyKTsgfQouXFwtY2VsbC5cLTkgICAgICAgIHsgd2lkdGg6IGNhbGMoMTAwJSAqIDkgLyAxMik7IH0KLlxcLWNlbGwuXC0xMCAgICAgICB7IHdpZHRoOiBjYWxjKDEwMCUgKiAxMCAvIDEyKTsgfQouXFwtY2VsbC5cLTExICAgICAgIHsgd2lkdGg6IGNhbGMoMTAwJSAqIDExIC8gMTIpOyB9Ci5cXC1jZWxsLlwtMTIgICAgICAgeyB3aWR0aDogMTAwJTsgfQo=]]></data>
	</file>
	<file>
	  <filename>/css/bs/lib/grid.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LlxcLWNvbCB7CiAgZmxvYXQ6IGxlZnQ7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoKLlxcLWNvbC1yaWdodCB7CiAgZmxvYXQ6IHJpZ2h0OwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KCi5cXC1jb2wtMSB7CiAgd2lkdGg6IGNhbGMoMS8xMiAqIDEwMCUpOwp9CgouXFwtY29sLTIgewogIHdpZHRoOiBjYWxjKDIvMTIgKiAxMDAlKTsKfQoKLlxcLWNvbC0zIHsKICB3aWR0aDogY2FsYygzLzEyICogMTAwJSk7Cn0KCi5cXC1jb2wtNCB7CiAgd2lkdGg6IGNhbGMoNC8xMiAqIDEwMCUpOwp9CgouXFwtY29sLTUgewogIHdpZHRoOiBjYWxjKDUvMTIgKiAxMDAlKTsKfQoKLlxcLWNvbC02IHsKICB3aWR0aDogY2FsYyg2LzEyICogMTAwJSk7Cn0KCi5cXC1jb2wtNyB7CiAgd2lkdGg6IGNhbGMoNy8xMiAqIDEwMCUpOwp9CgouXFwtY29sLTggewogIHdpZHRoOiBjYWxjKDgvMTIgKiAxMDAlKTsKfQoKLlxcLWNvbC05IHsKICB3aWR0aDogY2FsYyg5LzEyICogMTAwJSk7Cn0KCi5cXC1jb2wtMTAgewogIHdpZHRoOiBjYWxjKDEwLzEyICogMTAwJSk7Cn0KCi5cXC1jb2wtMTEgewogIHdpZHRoOiBjYWxjKDExLzEyICogMTAwJSk7Cn0KCi5cXC1jb2wtMTIgewogIHdpZHRoOiAxMDAlOwp9Cgo=]]></data>
	</file>
	<file>
	  <filename>/css/bs/lib/helpers.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LlxcLWNvbnRhaW5lciwgLlxcLXBhbmVsDQp7DQogIHBhZGRpbmc6IDAuMDFlbSAxNnB4DQp9DQoNCi5cXC1wYW5lbA0Kew0KICBtYXJnaW4tdG9wOiAxNnB4Ow0KICBtYXJnaW4tYm90dG9tOiAxNnB4DQp9DQoNCi5cXC1jb250YWluZXI6YWZ0ZXIsIC5cXC1jb250YWluZXI6YmVmb3JlLCAuXFwtcGFuZWw6YWZ0ZXIsIC5cXC1wYW5lbDpiZWZvcmUNCnsNCiAgY29udGVudDogIiI7DQogIGRpc3BsYXk6IHRhYmxlOw0KICBjbGVhcjogYm90aA0KfQ0KDQouXFwtbGVmdA0Kew0KICBmbG9hdDogbGVmdDsNCn0NCg0KLlxcLXJpZ2h0DQp7DQogIGZsb2F0OiByaWdodDsNCn0NCg0KLlxcLWNsZWFyZml4OmJlZm9yZSwgLlxcLWNsZWFyZml4OmFmdGVyDQp7DQogIGNvbnRlbnQ6ICIgIjsNCiAgZGlzcGxheTogdGFibGU7DQp9DQoNCi5cXC1jbGVhcmZpeDphZnRlcg0Kew0KICBjbGVhcjogYm90aDsNCn0NCg0KLlxcLXppbmRleC0xDQp7DQogIHotaW5kZXg6IDE7DQp9DQoNCi5cXC16aW5kZXgtMg0Kew0KICB6LWluZGV4OiAyOw0KfQ0KDQouXFwtemluZGV4LTMNCnsNCiAgei1pbmRleDogMzsNCn0NCg0KLlxcLXppbmRleC00DQp7DQogIHotaW5kZXg6IDQ7DQp9DQoNCi5cXC1maXhlZA0Kew0KICBwb3NpdGlvbjogZml4ZWQ7DQp9DQoNCi5cXC1yZWxhdGl2ZQ0Kew0KICBwb3NpdGlvbjogcmVsYXRpdmU7DQp9DQoNCi5cXC1hYnNvbHV0ZQ0Kew0KICBwb3NpdGlvbjogYWJzb2x1dGU7DQp9DQoNCi5cXC10ZXh0LWxlZnQNCnsNCiAgdGV4dC1hbGlnbjogbGVmdDsNCn0NCg0KLlxcLXRleHQtcmlnaHQNCnsNCiAgdGV4dC1hbGlnbjogcmlnaHQ7DQp9DQoNCi5cXC10ZXh0LWNlbnRlcg0Kew0KICB0ZXh0LWFsaWduOiBjZW50ZXI7DQp9DQoNCi5cXC10ZXh0LWp1c3QNCnsNCiAgdGV4dC1hbGlnbjoganVzdGlmeTsNCn0NCg0KLlxcLWFsaWduLXRvcA0Kew0KICB2ZXJ0aWNhbC1hbGlnbjogdG9wOw0KfQ0KDQouXFwtYWxpZ24tYm90dG9tDQp7DQogIHZlcnRpY2FsLWFsaWduOiBib3R0b207DQp9DQoNCi5cXC1hbGlnbi1taWRkbGUNCnsNCiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsNCn0NCg0KLlxcLWFsaWduLWJhc2VsaW5lDQp7DQogIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsNCn0NCg0KLlxcLWZpdA0Kew0KICBtYXgtd2lkdGg6IDEwMCU7DQp9DQoNCi5cXC1oYWxmLXdpZHRoDQp7DQogIHdpZHRoOiA1MCU7DQp9DQoNCi5cXC1mdWxsLXdpZHRoDQp7DQogIHdpZHRoOiAxMDAlOw0KfQ0KDQouXFwtZnVsbC1oZWlnaHQNCnsNCiAgaGVpZ2h0OiAxMDAlOw0KfQ0KDQouXFwtaW5saW5lDQp7DQogIGRpc3BsYXk6IGlubGluZTsNCn0NCg0KLlxcLWJsb2NrDQp7DQogIGRpc3BsYXk6IGJsb2NrOw0KfQ0KDQouXFwtaW5saW5lLWJsb2NrDQp7DQogIGRpc3BsYXk6IGlubGluZS1ibG9jazsNCn0NCg0KLlxcLWhpZGRlbg0Kew0KICBkaXNwbGF5OiBub25lOw0KfQ0KDQovKi53aGl0ZSovDQovKnsqLw0KLyogIGNvbG9yOiAjRkZGOyovDQovKn0qLw0KDQovKi5ncmF5Ki8NCi8qeyovDQovKiAgY29sb3I6ICMyQzNFNTA7Ki8NCi8qfSovDQoNCi8qLmRhcmstZ3JheSovDQovKnsqLw0KLyogIGNvbG9yOiAjOTVBNUE2OyovDQovKn0qLw0KDQovKi5ub3RpY2UqLw0KLyp7Ki8NCi8qICBjb2xvcjogIzM0OThEQjsqLw0KLyp9Ki8NCg0KLyouc3VjY2VzcyovDQovKnsqLw0KLyogIGNvbG9yOiAjMUFCQzlDOyovDQovKn0qLw0KDQovKi5hbGVydCovDQovKnsqLw0KLyogIGNvbG9yOiAjRTc0QzNDOyovDQovKn0qLw0KDQovKi53aGl0ZS1iZyovDQovKnsqLw0KLyogIGJhY2tncm91bmQtY29sb3I6ICNGRkY7Ki8NCi8qfSovDQoNCi8qLmdyYXktYmcqLw0KLyp7Ki8NCi8qICBiYWNrZ3JvdW5kLWNvbG9yOiAjMkMzRTUwOyovDQovKn0qLw0KDQovKi5kYXJrLWdyYXktYmcqLw0KLyp7Ki8NCi8qICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTVBNUE2OyovDQovKn0qLw0KDQovKi5ub3RpY2UtYmcqLw0KLyp7Ki8NCi8qICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQ5OERCOyovDQovKn0qLw0KDQovKi5zdWNjZXNzLWJnKi8NCi8qeyovDQovKiAgYmFja2dyb3VuZC1jb2xvcjogIzFBQkM5QzsqLw0KLyp9Ki8NCg0KLyouYWxlcnQtYmcqLw0KLyp7Ki8NCi8qICBiYWNrZ3JvdW5kLWNvbG9yOiAjRTc0QzNDOyovDQovKn0qLw0KDQouXFwtYm9sZA0Kew0KICBmb250LXdlaWdodDogYm9sZDsNCn0NCg0KLlxcLXJlZ3VsYXINCnsNCiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsNCn0NCg0KLlxcLWl0YWxpYw0Kew0KICBmb250LXN0eWxlOiBpdGFsaWM7DQp9DQoNCi5cXC10cnVuY2F0ZQ0Kew0KICB3aGl0ZS1zcGFjZTogbm93cmFwOw0KICBvdmVyZmxvdzogaGlkZGVuOw0KICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsNCn0NCg0KLlxcLWJyZWFrLXdvcmQNCnsNCiAgd29yZC13cmFwOiBicmVhay13b3JkOw0KfQ0KDQouXFwtbm8td3JhcA0Kew0KICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1uby1idWxsZXRzLCAuXFwtbGlzdC1iYXJlDQp7DQogIGxpc3Qtc3R5bGU6IG5vbmU7DQp9DQoNCi5cXC1idWxsZXRzLWluc2lkZQ0Kew0KICBsaXN0LXN0eWxlOiBpbnNpZGU7DQp9DQoNCi5cXC1saXN0LWJhcmUNCnsNCiAgbWFyZ2luOiAwOw0KICBwYWRkaW5nOiAwOw0KfQ0KDQouXFwtYm9yZGVyLWFsbA0Kew0KICBib3JkZXI6IDFweCBzb2xpZCAjRUNGMEYxOw0KfQ0KDQouXFwtYm9yZGVyLXRvcA0Kew0KICBib3JkZXItdG9wOiAxcHggc29saWQgI0VDRjBGMTsNCn0NCg0KLlxcLWJvcmRlci1ib3R0b20NCnsNCiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNFQ0YwRjE7DQp9DQoNCi5cXC1ib3JkZXItcmlnaHQNCnsNCiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0VDRjBGMTsNCn0NCg0KLlxcLWJvcmRlci1sZWZ0DQp7DQogIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI0VDRjBGMTsNCn0NCg0KLlxcLWJvcmRlci1hbGwtLWRhcmsNCnsNCiAgYm9yZGVyOiAxcHggc29saWQgI0JEQzNDNzsNCn0NCg0KLlxcLWJvcmRlci10b3AtLWRhcmsNCnsNCiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNCREMzQzc7DQp9DQoNCi5cXC1ib3JkZXItYm90dG9tLS1kYXJrDQp7DQogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjQkRDM0M3Ow0KfQ0KDQouXFwtYm9yZGVyLXJpZ2h0LS1kYXJrDQp7DQogIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNCREMzQzc7DQp9DQoNCi5cXC1ib3JkZXItbGVmdC0tZGFyaw0Kew0KICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNCREMzQzc7DQp9DQoNCi8qDQogKiBIaWRlIHZpc3VhbGx5IGFuZCBmcm9tIHNjcmVlbiByZWFkZXJzOg0KICogaHR0cDovL2p1aWN5c3R1ZGlvLmNvbS9hcnRpY2xlL3NjcmVlbi1yZWFkZXJzLWRpc3BsYXktbm9uZS5waHANCiAqLw0KLlxcLWhpZGRlbg0Kew0KICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7DQogIHZpc2liaWxpdHk6IGhpZGRlbjsNCn0NCg0KLyoNCiAqIEhpZGUgb25seSB2aXN1YWxseSwgYnV0IGhhdmUgaXQgYXZhaWxhYmxlIGZvciBzY3JlZW4gcmVhZGVyczoNCiAqIGh0dHA6Ly9zbm9vay5jYS9hcmNoaXZlcy9odG1sX2FuZF9jc3MvaGlkaW5nLWNvbnRlbnQtZm9yLWFjY2Vzc2liaWxpdHkNCiAqLw0KLlxcLXZpc3VhbGx5aGlkZGVuDQp7DQogIGJvcmRlcjogMDsNCiAgY2xpcDogcmVjdCgwIDAgMCAwKTsNCiAgaGVpZ2h0OiAxcHg7DQogIG1hcmdpbjogLTFweDsNCiAgb3ZlcmZsb3c6IGhpZGRlbjsNCiAgcGFkZGluZzogMDsNCiAgcG9zaXRpb246IGFic29sdXRlOw0KICB3aWR0aDogMXB4Ow0KfQ0KDQovKg0KICogRXh0ZW5kcyB0aGUgLnZpc3VhbGx5aGlkZGVuIGNsYXNzIHRvIGFsbG93IHRoZSBlbGVtZW50DQogKiB0byBiZSBmb2N1c2FibGUgd2hlbiBuYXZpZ2F0ZWQgdG8gdmlhIHRoZSBrZXlib2FyZDoNCiAqIGh0dHBzOi8vd3d3LmRydXBhbC5vcmcvbm9kZS84OTc2MzgNCiAqLw0KLlxcLXZpc3VhbGx5aGlkZGVuLmZvY3VzYWJsZTphY3RpdmUsDQouXFwtdmlzdWFsbHloaWRkZW4uZm9jdXNhYmxlOmZvY3VzDQp7DQogIGNsaXA6IGF1dG87DQogIGhlaWdodDogYXV0bzsNCiAgbWFyZ2luOiAwOw0KICBvdmVyZmxvdzogdmlzaWJsZTsNCiAgcG9zaXRpb246IHN0YXRpYzsNCiAgd2lkdGg6IGF1dG87DQp9DQoNCi8qDQogKiBIaWRlIHZpc3VhbGx5IGFuZCBmcm9tIHNjcmVlbiByZWFkZXJzLCBidXQgbWFpbnRhaW4gbGF5b3V0DQogKi8NCi5cXC1pbnZpc2libGUNCnsNCiAgdmlzaWJpbGl0eTogaGlkZGVuOw0KfQ0KDQouXFwtcmFkaXVzDQp7DQogIGJvcmRlci1yYWRpdXM6IDNweDsNCn0NCg0KLlxcLXJhZGl1cy10b3ANCnsNCiAgYm9yZGVyLXJhZGl1czogM3B4IDNweCAwIDA7DQp9DQoNCi5cXC1yYWRpdXMtcmlnaHQNCnsNCiAgYm9yZGVyLXJhZGl1czogMCAzcHggM3B4IDA7DQp9DQoNCi5cXC1yYWRpdXMtYm90dG9tDQp7DQogIGJvcmRlci1yYWRpdXM6IDAgMCAzcHggM3B4Ow0KfQ0KDQouXFwtcmFkaXVzLWxlZnQNCnsNCiAgYm9yZGVyLXJhZGl1czogM3B4IDAgMCAzcHg7DQp9DQoNCi5cXC1tYXJnaW4tdG9wLW5vbmUNCnsNCiAgbWFyZ2luLXRvcDogMDsNCn0NCg0KLlxcLW1hcmdpbi10b3AtcXVhcnRlcg0Kew0KICBtYXJnaW4tdG9wOiAwLjI1ZW07DQp9DQoNCi5cXC1tYXJnaW4tdG9wLWhhbGYNCnsNCiAgbWFyZ2luLXRvcDogMC41ZW07DQp9DQoNCi5cXC1tYXJnaW4tdG9wLW9uZQ0Kew0KICBtYXJnaW4tdG9wOiAxZW07DQp9DQoNCi5cXC1tYXJnaW4tdG9wLXR3bw0Kew0KICBtYXJnaW4tdG9wOiAyZW07DQp9DQoNCi5cXC1tYXJnaW4tdG9wLXRocmVlDQp7DQogIG1hcmdpbi10b3A6IDNlbTsNCn0NCg0KLlxcLW1hcmdpbi10b3AtZm91cg0Kew0KICBtYXJnaW4tdG9wOiA0ZW07DQp9DQoNCi5cXC1tYXJnaW4tYm90dG9tLW5vbmUNCnsNCiAgbWFyZ2luLWJvdHRvbTogMDsNCn0NCg0KLlxcLW1hcmdpbi1ib3R0b20tcXVhcnRlcg0Kew0KICBtYXJnaW4tYm90dG9tOiAwLjI1ZW07DQp9DQoNCi5cXC1tYXJnaW4tYm90dG9tLWhhbGYNCnsNCiAgbWFyZ2luLWJvdHRvbTogMC41ZW07DQp9DQoNCi5cXC1tYXJnaW4tYm90dG9tLW9uZQ0Kew0KICBtYXJnaW4tYm90dG9tOiAxZW07DQp9DQoNCi5cXC1tYXJnaW4tYm90dG9tLXR3bw0Kew0KICBtYXJnaW4tYm90dG9tOiAyZW07DQp9DQoNCi5cXC1tYXJnaW4tYm90dG9tLXRocmVlDQp7DQogIG1hcmdpbi1ib3R0b206IDNlbTsNCn0NCg0KLlxcLW1hcmdpbi1ib3R0b20tZm91cg0Kew0KICBtYXJnaW4tYm90dG9tOiA0ZW07DQp9DQoNCi5cXC1tYXJnaW4tcmlnaHQtbm9uZQ0Kew0KICBtYXJnaW4tcmlnaHQ6IDA7DQp9DQoNCi5cXC1tYXJnaW4tcmlnaHQtcXVhcnRlcg0Kew0KICBtYXJnaW4tcmlnaHQ6IDAuMjVlbTsNCn0NCg0KLlxcLW1hcmdpbi1yaWdodC1oYWxmDQp7DQogIG1hcmdpbi1yaWdodDogMC41ZW07DQp9DQoNCi5cXC1tYXJnaW4tcmlnaHQtb25lDQp7DQogIG1hcmdpbi1yaWdodDogMWVtOw0KfQ0KDQouXFwtbWFyZ2luLXJpZ2h0LXR3bw0Kew0KICBtYXJnaW4tcmlnaHQ6IDJlbTsNCn0NCg0KLlxcLW1hcmdpbi1yaWdodC10aHJlZQ0Kew0KICBtYXJnaW4tcmlnaHQ6IDNlbTsNCn0NCg0KLlxcLW1hcmdpbi1yaWdodC1mb3VyDQp7DQogIG1hcmdpbi1yaWdodDogNGVtOw0KfQ0KDQouXFwtbWFyZ2luLWxlZnQtbm9uZQ0Kew0KICBtYXJnaW4tbGVmdDogMDsNCn0NCg0KLlxcLW1hcmdpbi1sZWZ0LXF1YXJ0ZXINCnsNCiAgbWFyZ2luLWxlZnQ6IDAuMjVlbTsNCn0NCg0KLlxcLW1hcmdpbi1sZWZ0LWhhbGYNCnsNCiAgbWFyZ2luLWxlZnQ6IDAuNWVtOw0KfQ0KDQouXFwtbWFyZ2luLWxlZnQtb25lDQp7DQogIG1hcmdpbi1sZWZ0OiAxZW07DQp9DQoNCi5cXC1tYXJnaW4tbGVmdC10d28NCnsNCiAgbWFyZ2luLWxlZnQ6IDJlbTsNCn0NCg0KLlxcLW1hcmdpbi1sZWZ0LXRocmVlDQp7DQogIG1hcmdpbi1sZWZ0OiAzZW07DQp9DQoNCi5cXC1tYXJnaW4tbGVmdC1mb3VyDQp7DQogIG1hcmdpbi1sZWZ0OiA0ZW07DQp9DQoNCi5cXC1tYXJnaW4tbm9uZQ0Kew0KICBtYXJnaW46IDA7DQp9DQoNCi5cXC1tYXJnaW4tcXVhcnRlcg0Kew0KICBtYXJnaW46IDAuMjVlbTsNCn0NCg0KLlxcLW1hcmdpbi1oYWxmDQp7DQogIG1hcmdpbjogMC41ZW07DQp9DQoNCi5cXC1tYXJnaW4tb25lDQp7DQogIG1hcmdpbjogMWVtOw0KfQ0KDQouXFwtbWFyZ2luLXR3bw0Kew0KICBtYXJnaW46IDJlbTsNCn0NCg0KLlxcLW1hcmdpbi10aHJlZQ0Kew0KICBtYXJnaW46IDNlbTsNCn0NCg0KLlxcLW1hcmdpbi1mb3VyDQp7DQogIG1hcmdpbjogNGVtOw0KfQ0KDQouXFwtcGFkZGluZy10b3Atbm9uZQ0Kew0KICBwYWRkaW5nLXRvcDogMDsNCn0NCg0KLlxcLXBhZGRpbmctdG9wLXF1YXJ0ZXINCnsNCiAgcGFkZGluZy10b3A6IDAuMjVlbTsNCn0NCg0KLlxcLXBhZGRpbmctdG9wLWhhbHZlDQp7DQogIHBhZGRpbmctdG9wOiAwLjVlbTsNCn0NCg0KLlxcLXBhZGRpbmctdG9wLW9uZQ0Kew0KICBwYWRkaW5nLXRvcDogMWVtOw0KfQ0KDQouXFwtcGFkZGluZy10b3AtdHdvDQp7DQogIHBhZGRpbmctdG9wOiAyZW07DQp9DQoNCi5cXC1wYWRkaW5nLXRvcC10aHJlZQ0Kew0KICBwYWRkaW5nLXRvcDogM2VtOw0KfQ0KDQouXFwtcGFkZGluZy10b3AtZm91cg0Kew0KICBwYWRkaW5nLXRvcDogNGVtOw0KfQ0KDQouXFwtcGFkZGluZy1ib3R0b20tbm9uZQ0Kew0KICBwYWRkaW5nLWJvdHRvbTogMDsNCn0NCg0KLlxcLXBhZGRpbmctYm90dG9tLXF1YXJ0ZXINCnsNCiAgcGFkZGluZy1ib3R0b206IDAuMjVlbTsNCn0NCg0KLlxcLXBhZGRpbmctYm90dG9tLWhhbHZlDQp7DQogIHBhZGRpbmctYm90dG9tOiAwLjVlbTsNCn0NCg0KLlxcLXBhZGRpbmctYm90dG9tLW9uZQ0Kew0KICBwYWRkaW5nLWJvdHRvbTogMWVtOw0KfQ0KDQouXFwtcGFkZGluZy1ib3R0b20tdHdvDQp7DQogIHBhZGRpbmctYm90dG9tOiAyZW07DQp9DQoNCi5cXC1wYWRkaW5nLWJvdHRvbS10aHJlZQ0Kew0KICBwYWRkaW5nLWJvdHRvbTogM2VtOw0KfQ0KDQouXFwtcGFkZGluZy1ib3R0b20tZm91cg0Kew0KICBwYWRkaW5nLWJvdHRvbTogNGVtOw0KfQ0KDQouXFwtcGFkZGluZy1yaWdodC1ub25lDQp7DQogIHBhZGRpbmctcmlnaHQ6IDA7DQp9DQoNCi5cXC1wYWRkaW5nLXJpZ2h0LXF1YXJ0ZXINCnsNCiAgcGFkZGluZy1yaWdodDogMC4yNWVtOw0KfQ0KDQouXFwtcGFkZGluZy1yaWdodC1oYWx2ZQ0Kew0KICBwYWRkaW5nLXJpZ2h0OiAwLjVlbTsNCn0NCg0KLlxcLXBhZGRpbmctcmlnaHQtb25lDQp7DQogIHBhZGRpbmctcmlnaHQ6IDFlbTsNCn0NCg0KLlxcLXBhZGRpbmctcmlnaHQtdHdvDQp7DQogIHBhZGRpbmctcmlnaHQ6IDJlbTsNCn0NCg0KLlxcLXBhZGRpbmctcmlnaHQtdGhyZWUNCnsNCiAgcGFkZGluZy1yaWdodDogM2VtOw0KfQ0KDQouXFwtcGFkZGluZy1yaWdodC1mb3VyDQp7DQogIHBhZGRpbmctcmlnaHQ6IDRlbTsNCn0NCg0KLlxcLXBhZGRpbmctbGVmdC1ub25lDQp7DQogIHBhZGRpbmctbGVmdDogMDsNCn0NCg0KLlxcLXBhZGRpbmctbGVmdC1xdWFydGVyDQp7DQogIHBhZGRpbmctbGVmdDogMC4yNWVtOw0KfQ0KDQouXFwtcGFkZGluZy1sZWZ0LWhhbHZlDQp7DQogIHBhZGRpbmctbGVmdDogMC41ZW07DQp9DQoNCi5cXC1wYWRkaW5nLWxlZnQtb25lDQp7DQogIHBhZGRpbmctbGVmdDogMWVtOw0KfQ0KDQouXFwtcGFkZGluZy1sZWZ0LXR3bw0Kew0KICBwYWRkaW5nLWxlZnQ6IDJlbTsNCn0NCg0KLlxcLXBhZGRpbmctbGVmdC10aHJlZQ0Kew0KICBwYWRkaW5nLWxlZnQ6IDNlbTsNCn0NCg0KLlxcLXBhZGRpbmctbGVmdC1mb3VyDQp7DQogIHBhZGRpbmctbGVmdDogNGVtOw0KfQ0KDQouXFwtcGFkZGluZy1ub25lDQp7DQogIHBhZGRpbmc6IDA7DQp9DQoNCi5cXC1wYWRkaW5nLXF1YXJ0ZXINCnsNCiAgcGFkZGluZzogMC4yNWVtOw0KfQ0KDQouXFwtcGFkZGluZy1oYWx2ZQ0Kew0KICBwYWRkaW5nOiAwLjVlbTsNCn0NCg0KLlxcLXBhZGRpbmctb25lDQp7DQogIHBhZGRpbmc6IDFlbTsNCn0NCg0KLlxcLXBhZGRpbmctdHdvDQp7DQogIHBhZGRpbmc6IDJlbTsNCn0NCg0KLlxcLXBhZGRpbmctdGhyZWUNCnsNCiAgcGFkZGluZzogM2VtOw0KfQ0KDQouXFwtcGFkZGluZy1mb3VyDQp7DQogIHBhZGRpbmc6IDRlbTsNCn0=]]></data>
	</file>
	<file>
	  <filename>/css/bs/lib/lg-grid.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QG1lZGlhICgtLWJyZWFrcG9pbnQtbGcpIHsKCiAgLlxcLWxnLWNvbCB7CiAgICBmbG9hdDogbGVmdDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgfQoKICAuXFwtbGctY29sLXJpZ2h0IHsKICAgIGZsb2F0OiByaWdodDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgfQoKICAuXFwtbGctY29sLTEgewogICAgd2lkdGg6IGNhbGMoMS8xMiAqIDEwMCUpOwogIH0KCiAgLlxcLWxnLWNvbC0yIHsKICAgIHdpZHRoOiBjYWxjKDIvMTIgKiAxMDAlKTsKICB9CgogIC5cXC1sZy1jb2wtMyB7CiAgICB3aWR0aDogY2FsYygzLzEyICogMTAwJSk7CiAgfQoKICAuXFwtbGctY29sLTQgewogICAgd2lkdGg6IGNhbGMoNC8xMiAqIDEwMCUpOwogIH0KCiAgLlxcLWxnLWNvbC01IHsKICAgIHdpZHRoOiBjYWxjKDUvMTIgKiAxMDAlKTsKICB9CgogIC5cXC1sZy1jb2wtNiB7CiAgICB3aWR0aDogY2FsYyg2LzEyICogMTAwJSk7CiAgfQoKICAuXFwtbGctY29sLTcgewogICAgd2lkdGg6IGNhbGMoNy8xMiAqIDEwMCUpOwogIH0KCiAgLlxcLWxnLWNvbC04IHsKICAgIHdpZHRoOiBjYWxjKDgvMTIgKiAxMDAlKTsKICB9CgogIC5cXC1sZy1jb2wtOSB7CiAgICB3aWR0aDogY2FsYyg5LzEyICogMTAwJSk7CiAgfQoKICAuXFwtbGctY29sLTEwIHsKICAgIHdpZHRoOiBjYWxjKDEwLzEyICogMTAwJSk7CiAgfQoKICAuXFwtbGctY29sLTExIHsKICAgIHdpZHRoOiBjYWxjKDExLzEyICogMTAwJSk7CiAgfQoKICAuXFwtbGctY29sLTEyIHsKICAgIHdpZHRoOiAxMDAlOwogIH0KCn0KCg==]]></data>
	</file>
	<file>
	  <filename>/css/bs/lib/margin_padding.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LlxcLXAtNSB7DQogIHBhZGRpbmc6IDVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcC0xMCB7DQogIHBhZGRpbmc6IDEwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXAtMTUgew0KICBwYWRkaW5nOiAxNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wLTIwIHsNCiAgcGFkZGluZzogMjBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcC0yNSB7DQogIHBhZGRpbmc6IDI1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXAtMzAgew0KICBwYWRkaW5nOiAzMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wLTM1IHsNCiAgcGFkZGluZzogMzVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcC00MCB7DQogIHBhZGRpbmc6IDQwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXAtNDUgew0KICBwYWRkaW5nOiA0NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wLTUwIHsNCiAgcGFkZGluZzogNTBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcC02MCB7DQogIHBhZGRpbmc6IDYwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXAtNjUgew0KICBwYWRkaW5nOiA2NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wLTcwIHsNCiAgcGFkZGluZzogNzBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcC03NSB7DQogIHBhZGRpbmc6IDc1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXAtODAgew0KICBwYWRkaW5nOiA4MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wLTg1IHsNCiAgcGFkZGluZzogODVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcC05MCB7DQogIHBhZGRpbmc6IDkwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXAtOTUgew0KICBwYWRkaW5nOiA5NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wLTEwMCB7DQogIHBhZGRpbmc6IDEwMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wLTEyNSB7DQogIHBhZGRpbmc6IDEyNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wLTE1MCB7DQogIHBhZGRpbmc6IDE1MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wLTE3NSB7DQogIHBhZGRpbmc6IDE3NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wLTIwMCB7DQogIHBhZGRpbmc6IDIwMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wdC01IHsNCiAgcGFkZGluZy10b3A6IDVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtMTAgew0KICBwYWRkaW5nLXRvcDogMTBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtMTUgew0KICBwYWRkaW5nLXRvcDogMTVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtMjAgew0KICBwYWRkaW5nLXRvcDogMjBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtMjUgew0KICBwYWRkaW5nLXRvcDogMjVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtMzAgew0KICBwYWRkaW5nLXRvcDogMzBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtMzUgew0KICBwYWRkaW5nLXRvcDogMzVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtNDAgew0KICBwYWRkaW5nLXRvcDogNDBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtNDUgew0KICBwYWRkaW5nLXRvcDogNDVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtNTAgew0KICBwYWRkaW5nLXRvcDogNTBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtNjAgew0KICBwYWRkaW5nLXRvcDogNjBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtNjUgew0KICBwYWRkaW5nLXRvcDogNjVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtNzAgew0KICBwYWRkaW5nLXRvcDogNzBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtNzUgew0KICBwYWRkaW5nLXRvcDogNzVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtODAgew0KICBwYWRkaW5nLXRvcDogODBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtODUgew0KICBwYWRkaW5nLXRvcDogODVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtOTAgew0KICBwYWRkaW5nLXRvcDogOTBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtOTUgew0KICBwYWRkaW5nLXRvcDogOTVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtMTAwIHsNCiAgcGFkZGluZy10b3A6IDEwMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wdC0xMjUgew0KICBwYWRkaW5nLXRvcDogMTI1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXB0LTE1MCB7DQogIHBhZGRpbmctdG9wOiAxNTBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHQtMTc1IHsNCiAgcGFkZGluZy10b3A6IDE3NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wdC0yMDAgew0KICBwYWRkaW5nLXRvcDogMjAwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXBiLTUgew0KICBwYWRkaW5nLWJvdHRvbTogNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi0xMCB7DQogIHBhZGRpbmctYm90dG9tOiAxMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi0xNSB7DQogIHBhZGRpbmctYm90dG9tOiAxNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi0yMCB7DQogIHBhZGRpbmctYm90dG9tOiAyMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi0yNSB7DQogIHBhZGRpbmctYm90dG9tOiAyNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi0zMCB7DQogIHBhZGRpbmctYm90dG9tOiAzMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi0zNSB7DQogIHBhZGRpbmctYm90dG9tOiAzNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi00MCB7DQogIHBhZGRpbmctYm90dG9tOiA0MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi00NSB7DQogIHBhZGRpbmctYm90dG9tOiA0NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi01MCB7DQogIHBhZGRpbmctYm90dG9tOiA1MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi02MCB7DQogIHBhZGRpbmctYm90dG9tOiA2MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi02NSB7DQogIHBhZGRpbmctYm90dG9tOiA2NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi03MCB7DQogIHBhZGRpbmctYm90dG9tOiA3MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi03NSB7DQogIHBhZGRpbmctYm90dG9tOiA3NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi04MCB7DQogIHBhZGRpbmctYm90dG9tOiA4MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi04NSB7DQogIHBhZGRpbmctYm90dG9tOiA4NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi05MCB7DQogIHBhZGRpbmctYm90dG9tOiA5MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi05NSB7DQogIHBhZGRpbmctYm90dG9tOiA5NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi0xMDAgew0KICBwYWRkaW5nLWJvdHRvbTogMTAwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXBiLTEyNSB7DQogIHBhZGRpbmctYm90dG9tOiAxMjVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcGItMTUwIHsNCiAgcGFkZGluZy1ib3R0b206IDE1MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wYi0xNzUgew0KICBwYWRkaW5nLWJvdHRvbTogMTc1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXBiLTIwMCB7DQogIHBhZGRpbmctYm90dG9tOiAyMDBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcGwtNSB7DQogIHBhZGRpbmctbGVmdDogNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wbC0xMCB7DQogIHBhZGRpbmctbGVmdDogMTBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcGwtMTUgew0KICBwYWRkaW5nLWxlZnQ6IDE1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXBsLTIwIHsNCiAgcGFkZGluZy1sZWZ0OiAyMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wbC0yNSB7DQogIHBhZGRpbmctbGVmdDogMjVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcGwtMzAgew0KICBwYWRkaW5nLWxlZnQ6IDMwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXBsLTM1IHsNCiAgcGFkZGluZy1sZWZ0OiAzNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wbC00MCB7DQogIHBhZGRpbmctbGVmdDogNDBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcGwtNDUgew0KICBwYWRkaW5nLWxlZnQ6IDQ1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXBsLTUwIHsNCiAgcGFkZGluZy1sZWZ0OiA1MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wbC02MCB7DQogIHBhZGRpbmctbGVmdDogNjBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcGwtNjUgew0KICBwYWRkaW5nLWxlZnQ6IDY1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXBsLTcwIHsNCiAgcGFkZGluZy1sZWZ0OiA3MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wbC03NSB7DQogIHBhZGRpbmctbGVmdDogNzVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcGwtODAgew0KICBwYWRkaW5nLWxlZnQ6IDgwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXBsLTg1IHsNCiAgcGFkZGluZy1sZWZ0OiA4NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wbC05MCB7DQogIHBhZGRpbmctbGVmdDogOTBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcGwtOTUgew0KICBwYWRkaW5nLWxlZnQ6IDk1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXBsLTEwMCB7DQogIHBhZGRpbmctbGVmdDogMTAwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXBsLTEyNSB7DQogIHBhZGRpbmctbGVmdDogMTI1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXBsLTE1MCB7DQogIHBhZGRpbmctbGVmdDogMTUwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXBsLTE3NSB7DQogIHBhZGRpbmctbGVmdDogMTc1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXBsLTIwMCB7DQogIHBhZGRpbmctbGVmdDogMjAwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXByLTUgew0KICBwYWRkaW5nLXJpZ2h0OiA1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXByLTEwIHsNCiAgcGFkZGluZy1yaWdodDogMTBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHItMTUgew0KICBwYWRkaW5nLXJpZ2h0OiAxNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wci0yMCB7DQogIHBhZGRpbmctcmlnaHQ6IDIwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXByLTI1IHsNCiAgcGFkZGluZy1yaWdodDogMjVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHItMzAgew0KICBwYWRkaW5nLXJpZ2h0OiAzMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wci0zNSB7DQogIHBhZGRpbmctcmlnaHQ6IDM1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXByLTQwIHsNCiAgcGFkZGluZy1yaWdodDogNDBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHItNDUgew0KICBwYWRkaW5nLXJpZ2h0OiA0NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wci01MCB7DQogIHBhZGRpbmctcmlnaHQ6IDUwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXByLTYwIHsNCiAgcGFkZGluZy1yaWdodDogNjBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHItNjUgew0KICBwYWRkaW5nLXJpZ2h0OiA2NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wci03MCB7DQogIHBhZGRpbmctcmlnaHQ6IDcwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXByLTc1IHsNCiAgcGFkZGluZy1yaWdodDogNzVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHItODAgew0KICBwYWRkaW5nLXJpZ2h0OiA4MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wci04NSB7DQogIHBhZGRpbmctcmlnaHQ6IDg1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXByLTkwIHsNCiAgcGFkZGluZy1yaWdodDogOTBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHItOTUgew0KICBwYWRkaW5nLXJpZ2h0OiA5NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wci0xMDAgew0KICBwYWRkaW5nLXJpZ2h0OiAxMDBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHItMTI1IHsNCiAgcGFkZGluZy1yaWdodDogMTI1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLXByLTE1MCB7DQogIHBhZGRpbmctcmlnaHQ6IDE1MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1wci0xNzUgew0KICBwYWRkaW5nLXJpZ2h0OiAxNzVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtcHItMjAwIHsNCiAgcGFkZGluZy1yaWdodDogMjAwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW0tNSB7DQogIG1hcmdpbjogNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTEwIHsNCiAgbWFyZ2luOiAxMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTE1IHsNCiAgbWFyZ2luOiAxNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTIwIHsNCiAgbWFyZ2luOiAyMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTI1IHsNCiAgbWFyZ2luOiAyNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTMwIHsNCiAgbWFyZ2luOiAzMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTM1IHsNCiAgbWFyZ2luOiAzNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTQwIHsNCiAgbWFyZ2luOiA0MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTQ1IHsNCiAgbWFyZ2luOiA0NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTUwIHsNCiAgbWFyZ2luOiA1MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTYwIHsNCiAgbWFyZ2luOiA2MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTY1IHsNCiAgbWFyZ2luOiA2NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTcwIHsNCiAgbWFyZ2luOiA3MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTc1IHsNCiAgbWFyZ2luOiA3NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTgwIHsNCiAgbWFyZ2luOiA4MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTg1IHsNCiAgbWFyZ2luOiA4NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTkwIHsNCiAgbWFyZ2luOiA5MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTk1IHsNCiAgbWFyZ2luOiA5NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTEwMCB7DQogIG1hcmdpbjogMTAwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW0tMTI1IHsNCiAgbWFyZ2luOiAxMjVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbS0xNTAgew0KICBtYXJnaW46IDE1MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tLTE3NSB7DQogIG1hcmdpbjogMTc1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW0tMjAwIHsNCiAgbWFyZ2luOiAyMDBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXQtNSB7DQogIG1hcmdpbi10b3A6IDVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXQtMTAgew0KICBtYXJnaW4tdG9wOiAxMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tdC0xNSB7DQogIG1hcmdpbi10b3A6IDE1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW10LTIwIHsNCiAgbWFyZ2luLXRvcDogMjBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXQtMjUgew0KICBtYXJnaW4tdG9wOiAyNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tdC0zMCB7DQogIG1hcmdpbi10b3A6IDMwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW10LTM1IHsNCiAgbWFyZ2luLXRvcDogMzVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXQtNDAgew0KICBtYXJnaW4tdG9wOiA0MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tdC00NSB7DQogIG1hcmdpbi10b3A6IDQ1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW10LTUwIHsNCiAgbWFyZ2luLXRvcDogNTBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXQtNjAgew0KICBtYXJnaW4tdG9wOiA2MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tdC02NSB7DQogIG1hcmdpbi10b3A6IDY1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW10LTcwIHsNCiAgbWFyZ2luLXRvcDogNzBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXQtNzUgew0KICBtYXJnaW4tdG9wOiA3NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tdC04MCB7DQogIG1hcmdpbi10b3A6IDgwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW10LTg1IHsNCiAgbWFyZ2luLXRvcDogODVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXQtOTAgew0KICBtYXJnaW4tdG9wOiA5MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tdC05NSB7DQogIG1hcmdpbi10b3A6IDk1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW10LTEwMCB7DQogIG1hcmdpbi10b3A6IDEwMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tdC0xMjUgew0KICBtYXJnaW4tdG9wOiAxMjVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXQtMTUwIHsNCiAgbWFyZ2luLXRvcDogMTUwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW10LTE3NSB7DQogIG1hcmdpbi10b3A6IDE3NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tdC0yMDAgew0KICBtYXJnaW4tdG9wOiAyMDBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbWItNSB7DQogIG1hcmdpbi1ib3R0b206IDVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbWItMTAgew0KICBtYXJnaW4tYm90dG9tOiAxMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tYi0xNSB7DQogIG1hcmdpbi1ib3R0b206IDE1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1iLTIwIHsNCiAgbWFyZ2luLWJvdHRvbTogMjBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbWItMjUgew0KICBtYXJnaW4tYm90dG9tOiAyNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tYi0zMCB7DQogIG1hcmdpbi1ib3R0b206IDMwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1iLTM1IHsNCiAgbWFyZ2luLWJvdHRvbTogMzVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbWItNDAgew0KICBtYXJnaW4tYm90dG9tOiA0MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tYi00NSB7DQogIG1hcmdpbi1ib3R0b206IDQ1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1iLTUwIHsNCiAgbWFyZ2luLWJvdHRvbTogNTBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbWItNjAgew0KICBtYXJnaW4tYm90dG9tOiA2MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tYi02NSB7DQogIG1hcmdpbi1ib3R0b206IDY1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1iLTcwIHsNCiAgbWFyZ2luLWJvdHRvbTogNzBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbWItNzUgew0KICBtYXJnaW4tYm90dG9tOiA3NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tYi04MCB7DQogIG1hcmdpbi1ib3R0b206IDgwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1iLTg1IHsNCiAgbWFyZ2luLWJvdHRvbTogODVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbWItOTAgew0KICBtYXJnaW4tYm90dG9tOiA5MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tYi05NSB7DQogIG1hcmdpbi1ib3R0b206IDk1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1iLTEwMCB7DQogIG1hcmdpbi1ib3R0b206IDEwMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tYi0xMjUgew0KICBtYXJnaW4tYm90dG9tOiAxMjVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbWItMTUwIHsNCiAgbWFyZ2luLWJvdHRvbTogMTUwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1iLTE3NSB7DQogIG1hcmdpbi1ib3R0b206IDE3NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tYi0yMDAgew0KICBtYXJnaW4tYm90dG9tOiAyMDBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbWwtNSB7DQogIG1hcmdpbi1sZWZ0OiA1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTEwIHsNCiAgbWFyZ2luLWxlZnQ6IDEwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTE1IHsNCiAgbWFyZ2luLWxlZnQ6IDE1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTIwIHsNCiAgbWFyZ2luLWxlZnQ6IDIwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTI1IHsNCiAgbWFyZ2luLWxlZnQ6IDI1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTMwIHsNCiAgbWFyZ2luLWxlZnQ6IDMwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTM1IHsNCiAgbWFyZ2luLWxlZnQ6IDM1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTQwIHsNCiAgbWFyZ2luLWxlZnQ6IDQwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTQ1IHsNCiAgbWFyZ2luLWxlZnQ6IDQ1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTUwIHsNCiAgbWFyZ2luLWxlZnQ6IDUwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTYwIHsNCiAgbWFyZ2luLWxlZnQ6IDYwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTY1IHsNCiAgbWFyZ2luLWxlZnQ6IDY1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTcwIHsNCiAgbWFyZ2luLWxlZnQ6IDcwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTc1IHsNCiAgbWFyZ2luLWxlZnQ6IDc1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTgwIHsNCiAgbWFyZ2luLWxlZnQ6IDgwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTg1IHsNCiAgbWFyZ2luLWxlZnQ6IDg1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTkwIHsNCiAgbWFyZ2luLWxlZnQ6IDkwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTk1IHsNCiAgbWFyZ2luLWxlZnQ6IDk1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTEwMCB7DQogIG1hcmdpbi1sZWZ0OiAxMDBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbWwtMTI1IHsNCiAgbWFyZ2luLWxlZnQ6IDEyNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tbC0xNTAgew0KICBtYXJnaW4tbGVmdDogMTUwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1sLTE3NSB7DQogIG1hcmdpbi1sZWZ0OiAxNzVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbWwtMjAwIHsNCiAgbWFyZ2luLWxlZnQ6IDIwMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tci01IHsNCiAgbWFyZ2luLXJpZ2h0OiA1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1yLTEwIHsNCiAgbWFyZ2luLXJpZ2h0OiAxMHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tci0xNSB7DQogIG1hcmdpbi1yaWdodDogMTVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXItMjAgew0KICBtYXJnaW4tcmlnaHQ6IDIwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1yLTI1IHsNCiAgbWFyZ2luLXJpZ2h0OiAyNXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tci0zMCB7DQogIG1hcmdpbi1yaWdodDogMzBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXItMzUgew0KICBtYXJnaW4tcmlnaHQ6IDM1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1yLTQwIHsNCiAgbWFyZ2luLXJpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tci00NSB7DQogIG1hcmdpbi1yaWdodDogNDVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXItNTAgew0KICBtYXJnaW4tcmlnaHQ6IDUwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1yLTYwIHsNCiAgbWFyZ2luLXJpZ2h0OiA2MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tci02NSB7DQogIG1hcmdpbi1yaWdodDogNjVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXItNzAgew0KICBtYXJnaW4tcmlnaHQ6IDcwcHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1yLTc1IHsNCiAgbWFyZ2luLXJpZ2h0OiA3NXB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tci04MCB7DQogIG1hcmdpbi1yaWdodDogODBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXItODUgew0KICBtYXJnaW4tcmlnaHQ6IDg1cHggIWltcG9ydGFudDsNCn0NCg0KLlxcLW1yLTkwIHsNCiAgbWFyZ2luLXJpZ2h0OiA5MHB4ICFpbXBvcnRhbnQ7DQp9DQoNCi5cXC1tci05NSB7DQogIG1hcmdpbi1yaWdodDogOTVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXItMTAwIHsNCiAgbWFyZ2luLXJpZ2h0OiAxMDBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXItMTI1IHsNCiAgbWFyZ2luLXJpZ2h0OiAxMjVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXItMTUwIHsNCiAgbWFyZ2luLXJpZ2h0OiAxNTBweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXItMTc1IHsNCiAgbWFyZ2luLXJpZ2h0OiAxNzVweCAhaW1wb3J0YW50Ow0KfQ0KDQouXFwtbXItMjAwIHsNCiAgbWFyZ2luLXJpZ2h0OiAyMDBweCAhaW1wb3J0YW50Ow0KfQ==]]></data>
	</file>
	<file>
	  <filename>/css/bs/lib/md-grid.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QG1lZGlhICgtLWJyZWFrcG9pbnQtbWQpIHsKCiAgLlxcLXNtLWxnLWNvbCB7CiAgICBmbG9hdDogbGVmdDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgfQoKICAuXFwtc20tbGctY29sLXJpZ2h0IHsKICAgIGZsb2F0OiByaWdodDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgfQoKICAuXFwtc20tbGctY29sLTEgewogICAgd2lkdGg6IGNhbGMoMS8xMiAqIDEwMCUpOwogIH0KCiAgLlxcLXNtLWxnLWNvbC0yIHsKICAgIHdpZHRoOiBjYWxjKDIvMTIgKiAxMDAlKTsKICB9CgogIC5cXC1zbS1sZy1jb2wtMyB7CiAgICB3aWR0aDogY2FsYygzLzEyICogMTAwJSk7CiAgfQoKICAuXFwtc20tbGctY29sLTQgewogICAgd2lkdGg6IGNhbGMoNC8xMiAqIDEwMCUpOwogIH0KCiAgLlxcLXNtLWxnLWNvbC01IHsKICAgIHdpZHRoOiBjYWxjKDUvMTIgKiAxMDAlKTsKICB9CgogIC5cXC1zbS1sZy1jb2wtNiB7CiAgICB3aWR0aDogY2FsYyg2LzEyICogMTAwJSk7CiAgfQoKICAuXFwtc20tbGctY29sLTcgewogICAgd2lkdGg6IGNhbGMoNy8xMiAqIDEwMCUpOwogIH0KCiAgLlxcLXNtLWxnLWNvbC04IHsKICAgIHdpZHRoOiBjYWxjKDgvMTIgKiAxMDAlKTsKICB9CgogIC5cXC1zbS1sZy1jb2wtOSB7CiAgICB3aWR0aDogY2FsYyg5LzEyICogMTAwJSk7CiAgfQoKICAuXFwtc20tbGctY29sLTEwIHsKICAgIHdpZHRoOiBjYWxjKDEwLzEyICogMTAwJSk7CiAgfQoKICAuXFwtc20tbGctY29sLTExIHsKICAgIHdpZHRoOiBjYWxjKDExLzEyICogMTAwJSk7CiAgfQoKICAuXFwtc20tbGctY29sLTEyIHsKICAgIHdpZHRoOiAxMDAlOwogIH0KCn0KCg==]]></data>
	</file>
	<file>
	  <filename>/css/bs/lib/misc.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LlxcLWZpdA0Kew0KICBtYXgtd2lkdGg6IDEwMCU7DQp9DQoNCi5cXC1oYWxmLXdpZHRoDQp7DQogIHdpZHRoOiA1MCUNCn0NCg0KLlxcLWZ1bGwtd2lkdGgNCnsNCiAgd2lkdGg6IDEwMCU7DQp9DQoNCi5cXC1mdWxsLWhlaWdodA0Kew0KICBoZWlnaHQ6IDEwMCU7DQp9DQoNCi5cXC1maXhlZA0Kew0KICBwb3NpdGlvbjogZml4ZWQ7DQp9DQoNCi5cXC1yZWxhdGl2ZQ0Kew0KICBwb3NpdGlvbjogcmVsYXRpdmU7DQp9DQoNCi5cXC1hYnNvbHV0ZQ0Kew0KICBwb3NpdGlvbjogYWJzb2x1dGU7DQp9DQoNCi5cXC1zdGF0aWMNCnsNCiAgcG9zaXRpb246IHN0YXRpYzsNCn0NCg0KLlxcLXppbmRleC0xDQp7DQogIHotaW5kZXg6IDE7DQp9DQoNCi5cXC16aW5kZXgtMg0Kew0KICB6LWluZGV4OiAyOw0KfQ0KDQouXFwtemluZGV4LTMNCnsNCiAgei1pbmRleDogMzsNCn0NCg0KLyogTWFyZ2lucw0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KDQouXFwtc3BhY2UtbGVmdDAgIHsgbWFyZ2luLWxlZnQ6ICAgIDVweDt9DQouXFwtc3BhY2UtbGVmdDEgIHsgbWFyZ2luLWxlZnQ6ICAgMTBweDt9DQouXFwtc3BhY2UtbGVmdDIgIHsgbWFyZ2luLWxlZnQ6ICAgMjBweDt9DQouXFwtc3BhY2UtbGVmdDMgIHsgbWFyZ2luLWxlZnQ6ICAgMzBweDt9DQouXFwtc3BhY2UtbGVmdDQgIHsgbWFyZ2luLWxlZnQ6ICAgNDBweDt9DQouXFwtc3BhY2UtbGVmdDggIHsgbWFyZ2luLWxlZnQ6ICAgODBweDt9DQouXFwtc3BhY2UtbGVmdDEyIHsgbWFyZ2luLWxlZnQ6ICAxMjBweDt9DQouXFwtc3BhY2UtbGVmdDE2IHsgbWFyZ2luLWxlZnQ6ICAxNjBweDt9DQouXFwtc3BhY2UtbGVmdDIwIHsgbWFyZ2luLWxlZnQ6ICAyMDBweDt9DQouXFwtc3BhY2UtbGVmdDI0IHsgbWFyZ2luLWxlZnQ6ICAyNDBweDt9DQoNCi5cXC1zcGFjZS1yaWdodDAgIHsgbWFyZ2luLXJpZ2h0OiAgIDVweDt9DQouXFwtc3BhY2UtcmlnaHQxICB7IG1hcmdpbi1yaWdodDogIDEwcHg7fQ0KLlxcLXNwYWNlLXJpZ2h0MiAgeyBtYXJnaW4tcmlnaHQ6ICAyMHB4O30NCi5cXC1zcGFjZS1yaWdodDMgIHsgbWFyZ2luLXJpZ2h0OiAgMzBweDt9DQouXFwtc3BhY2UtcmlnaHQ0ICB7IG1hcmdpbi1yaWdodDogIDQwcHg7fQ0KLlxcLXNwYWNlLXJpZ2h0OCAgeyBtYXJnaW4tcmlnaHQ6ICA4MHB4O30NCi5cXC1zcGFjZS1yaWdodDEyIHsgbWFyZ2luLXJpZ2h0OiAxMjBweDt9DQouXFwtc3BhY2UtcmlnaHQxNiB7IG1hcmdpbi1yaWdodDogMTYwcHg7fQ0KLlxcLXNwYWNlLXJpZ2h0MjAgeyBtYXJnaW4tcmlnaHQ6IDIwMHB4O30NCi5cXC1zcGFjZS1yaWdodDI0IHsgbWFyZ2luLXJpZ2h0OiAyNDBweDt9DQoNCi5cXC1zcGFjZS1ib3R0b20wICAgICAgICAgICAgICAgIHsgbWFyZ2luLWJvdHRvbTogIDVweDt9DQouXFwtc3BhY2UtYm90dG9tMSAgICAgICAgICAgICAgICB7IG1hcmdpbi1ib3R0b206IDEwcHg7fQ0KLlxcLXNwYWNlLWJvdHRvbTIgICAgICAgICAgICAgICAgeyBtYXJnaW4tYm90dG9tOiAyMHB4O30NCi5cXC1zcGFjZS1ib3R0b200ICAgICAgICAgICAgICAgIHsgbWFyZ2luLWJvdHRvbTogNDBweDt9DQouXFwtc3BhY2UtYm90dG9tOCAgICAgICAgICAgICAgICB7IG1hcmdpbi1ib3R0b206IDgwcHg7fQ0KDQouXFwtc3BhY2UtdG9wMCAgICAgICAgICAgICAgICAgICB7IG1hcmdpbi10b3A6ICA1cHg7fQ0KLlxcLXNwYWNlLXRvcDEgICAgICAgICAgICAgICAgICAgeyBtYXJnaW4tdG9wOiAxMHB4O30NCi5cXC1zcGFjZS10b3AyICAgICAgICAgICAgICAgICAgIHsgbWFyZ2luLXRvcDogMjBweDt9DQouXFwtc3BhY2UtdG9wNCAgICAgICAgICAgICAgICAgICB7IG1hcmdpbi10b3A6IDQwcHg7fQ0KLlxcLXNwYWNlLXRvcDggICAgICAgICAgICAgICAgICAgeyBtYXJnaW4tdG9wOiA4MHB4O30NCg0KLyogUGFkZGluZw0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KLlxcLXBhZDAgIHsgcGFkZGluZzo1cHg7IH0NCi5cXC1wYWQweSB7IHBhZGRpbmctdG9wOjVweDsgcGFkZGluZy1ib3R0b206NXB4OyB9DQouXFwtcGFkMHggeyBwYWRkaW5nLXJpZ2h0OjVweDsgcGFkZGluZy1sZWZ0OjVweDsgfQ0KDQouXFwtcGFkMSAgICB7IHBhZGRpbmc6MTBweDsgfQ0KLlxcLXBhZDIgICAgeyBwYWRkaW5nOjIwcHg7IH0NCi5cXC1wYWQ0ICAgIHsgcGFkZGluZzo0MHB4OyB9DQoNCi5cXC1wYWQxeCB7IHBhZGRpbmctbGVmdDogMTBweDsgcGFkZGluZy1yaWdodDogMTBweDt9DQouXFwtcGFkMnggeyBwYWRkaW5nLWxlZnQ6IDIwcHg7IHBhZGRpbmctcmlnaHQ6IDIwcHg7fQ0KLlxcLXBhZDR4IHsgcGFkZGluZy1sZWZ0OiA0MHB4OyBwYWRkaW5nLXJpZ2h0OiA0MHB4O30NCg0KLlxcLXBhZDF5IHsgcGFkZGluZy10b3A6IDEwcHg7IHBhZGRpbmctYm90dG9tOiAxMHB4O30NCi5cXC1wYWQyeSB7IHBhZGRpbmctdG9wOiAyMHB4OyBwYWRkaW5nLWJvdHRvbTogMjBweDt9DQouXFwtcGFkNHkgeyBwYWRkaW5nLXRvcDogNDBweDsgcGFkZGluZy1ib3R0b206IDQwcHg7fQ0KDQouXFwtcGFkOCB7ICBwYWRkaW5nOiA4MHB4OyB9DQouXFwtcGFkOHkgeyBwYWRkaW5nLXRvcDogODBweDsgcGFkZGluZy1ib3R0b206IDgwcHg7fQ0KLlxcLXBhZDh4IHsgcGFkZGluZy1sZWZ0OiA4MHB4OyBwYWRkaW5nLXJpZ2h0OiA4MHB4O30NCg0KLyogQWJzb2x1dGUgY29udGFpbmVycw0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KLlxcLXBpbi10b3AsDQouXFwtcGluLXJpZ2h0LA0KLlxcLXBpbi1ib3R0b20sDQouXFwtcGluLWxlZnQsDQouXFwtcGluLXRvcGxlZnQsDQouXFwtcGluLXRvcHJpZ2h0LA0KLlxcLXBpbi1ib3R0b21sZWZ0LA0KLlxcLXBpbi1ib3R0b21yaWdodCB7DQogIHBvc2l0aW9uOmFic29sdXRlOw0KfQ0KLlxcLXBpbi1ib3R0b20geyByaWdodDowOyBib3R0b206MDsgbGVmdDowOyB9DQouXFwtcGluLXRvcCAgICB7IHRvcDowOyByaWdodDowOyBsZWZ0OjA7IH0NCi5cXC1waW4tbGVmdCAgIHsgdG9wOjA7IGJvdHRvbTowOyBsZWZ0OjA7IH0NCi5cXC1waW4tcmlnaHQgIHsgdG9wOjA7IHJpZ2h0OjA7IGJvdHRvbTowOyB9DQouXFwtcGluLWJvdHRvbXJpZ2h0IHsgYm90dG9tOjA7IHJpZ2h0OjA7IH0NCi5cXC1waW4tYm90dG9tbGVmdCAgeyBib3R0b206MDsgbGVmdDowOyB9DQouXFwtcGluLXRvcHJpZ2h0ICAgIHsgdG9wOjA7IHJpZ2h0OjA7IH0NCi5cXC1waW4tdG9wbGVmdCAgICAgeyB0b3A6MDsgbGVmdDowOyB9DQoNCi8qIEZpeGVkIGNvbnRhaW5lcnMNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCi5cXC1maXhlZC10b3AsDQouXFwtZml4ZWQtcmlnaHQsDQouXFwtZml4ZWQtYm90dG9tLA0KLlxcLWZpeGVkLWxlZnQsDQouXFwtZml4ZWQtdG9wbGVmdCwNCi5cXC1maXhlZC10b3ByaWdodCwNCi5cXC1maXhlZC1ib3R0b21sZWZ0LA0KLlxcLWZpeGVkLWJvdHRvbXJpZ2h0IHsNCiAgcG9zaXRpb246Zml4ZWQ7DQp9DQouXFwtZml4ZWQtYm90dG9tIHsgcmlnaHQ6MDsgYm90dG9tOjA7IGxlZnQ6MDsgfQ0KLlxcLWZpeGVkLXRvcCAgICB7IHRvcDowOyByaWdodDowOyBsZWZ0OjA7IH0NCi5cXC1maXhlZC1sZWZ0ICAgeyB0b3A6MDsgYm90dG9tOjA7IGxlZnQ6MDsgfQ0KLlxcLWZpeGVkLXJpZ2h0ICB7IHRvcDowOyByaWdodDowOyBib3R0b206MDsgfQ0KLlxcLWZpeGVkLWJvdHRvbXJpZ2h0IHsgYm90dG9tOjA7IHJpZ2h0OjA7IH0NCi5cXC1maXhlZC1ib3R0b21sZWZ0ICB7IGJvdHRvbTowOyBsZWZ0OjA7IH0NCi5cXC1maXhlZC10b3ByaWdodCAgICB7IHRvcDowOyByaWdodDowOyB9DQouXFwtZml4ZWQtdG9wbGVmdCAgICAgeyB0b3A6MDsgbGVmdDowOyB9DQoNCi8qIEFkZGl0aW9uYWwgVXRpbGl0eSBDbGFzc2VzDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQouXFwtZnINCnsNCiAgZmxvYXQ6IHJpZ2h0Ow0KfQ0KDQouXFwtZmwNCnsNCiAgZmxvYXQ6IGxlZnQ7DQp9DQoNCi5cXC11bmZsb2F0DQp7DQogIGZsb2F0OiBub25lOw0KfQ0KDQouXFwtZG90DQp7DQogIGJvcmRlci1yYWRpdXM6IDUwJTsNCn0NCg0KLlxcLXF1aWV0DQp7DQogIGNvbG9yOiAjN0Y3RjdGOw0KICBjb2xvcjogcmdiYSgwLCAwLCAwLCAuNSk7DQp9DQoNCi5cXC1kYXJrIC5xdWlldA0Kew0KICBjb2xvcjogIzdGN0Y3RjsNCiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjUpOw0KfQ0KDQouXFwtY2VudGVyDQp7DQogIHRleHQtYWxpZ246IGNlbnRlcjsNCn0NCg0KLlxcLWNvbnRhaW4NCnsNCiAgcG9zaXRpb246IHJlbGF0aXZlOw0KfQ0KDQouXFwtY2xpcA0Kew0KICBvdmVyZmxvdzogaGlkZGVuOw0KfQ0KDQouXFwtaGlkZGVuLmhpZGRlbg0Kew0KICBkaXNwbGF5OiBub25lOw0KfQ0KDQouXFwtdGV4dC1sZWZ0DQp7DQogIHRleHQtYWxpZ246IGxlZnQ7DQp9DQoNCi5cXC10ZXh0LXJpZ2h0DQp7DQogIHRleHQtYWxpZ246IHJpZ2h0Ow0KfQ0KDQouXFwtc3BhY2UgPiAqDQp7DQogIG1hcmdpbi1yaWdodDogNXB4Ow0KfQ0KDQouXFwtaGlkZS10YWJsZXQsIC5oaWRlLW1vYmlsZQ0Kew0KICBkaXNwbGF5OiBibG9jazsNCn0NCg0KLlxcLXNob3ctdGFibGV0LCAuc2hvdy1tb2JpbGUNCnsNCiAgZGlzcGxheTogbm9uZTsNCn0NCg0KLlxcLXNob3ctbW9iaWxlDQp7DQogIGRpc3BsYXk6IG5vbmU7DQp9DQoNCi5cXC1zaG93LW1vYmlsZS5pbmxpbmUNCnsNCiAgZGlzcGxheTogbm9uZTsNCn0NCg0KaW1nLmlubGluZSwgLmlubGluZQ0Kew0KICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7DQp9DQoNCi5cXC1icmVhay13b3JkDQp7DQogIHdvcmQtd3JhcDogYnJlYWstd29yZDsNCn0NCg0KLlxcLWFsaWduLW1pZGRsZQ0Kew0KICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOw0KfQ0KDQouXFwtYWxpZ24tdG9wDQp7DQogIHZlcnRpY2FsLWFsaWduOiB0b3A7DQp9DQoNCi5cXC1ibG9jaw0Kew0KICBkaXNwbGF5OiBibG9jazsNCn0NCg0KLlxcLXNjcm9sbC1oDQp7DQogIG92ZXJmbG93LXg6IGF1dG87DQp9DQoNCi5cXC1zY3JvbGwtdg0Kew0KICBvdmVyZmxvdy15OiBhdXRvOw0KfQ0KDQouXFwtY2FwaXRhbGl6ZQ0Kew0KICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsNCn0NCg0KLlxcLXoxDQp7DQogIHotaW5kZXg6IDE7DQp9DQoNCi5cXC16Mg0Kew0KICB6LWluZGV4OiAyOw0KfQ0KDQouXFwtejgNCnsNCiAgei1pbmRleDogODsNCn0NCg0KLlxcLXoxMA0Kew0KICB6LWluZGV4OiAxMDsNCn0NCg0KLlxcLXoxMDANCnsNCiAgei1pbmRleDogMTAwOw0KfQ0KDQouXFwtcm91bmQNCnsNCiAgYm9yZGVyLXJhZGl1czogM3B4Ow0KfQ0KDQouXFwtcm91bmQtdG9wDQp7DQogIGJvcmRlci1yYWRpdXM6IDNweCAzcHggMCAwOw0KfQ0KDQouXFwtcm91bmQtcmlnaHQNCnsNCiAgYm9yZGVyLXJhZGl1czogMCAzcHggM3B4IDA7DQp9DQoNCi5cXC1yb3VuZC1ib3R0b20NCnsNCiAgYm9yZGVyLXJhZGl1czogMCAwIDNweCAzcHg7DQp9DQoNCi5cXC1yb3VuZC1sZWZ0DQp7DQogIGJvcmRlci1yYWRpdXM6IDNweCAwIDAgM3B4Ow0KfQ0KDQouXFwtcm91bmQtdG9wbGVmdA0Kew0KICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7DQp9DQoNCi5cXC1yb3VuZC1ib3R0b21sZWZ0DQp7DQogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDNweDsNCn0NCg0KLlxcLXJvdW5kLXRvcHJpZ2h0DQp7DQogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAzcHg7DQp9DQoNCi5cXC1yb3VuZC1ib3R0b21yaWdodA0Kew0KICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogM3B4Ow0KfQ0KDQouXFwtc2hhZG93DQp7DQogIGJveC1zaGFkb3c6IDAgMCAyNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjE1KTsNCn0NCg0KLlxcLXVwcGVyY2FzZQ0Kew0KICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOw0KfQ0KDQouXFwtbm9ldmVudHMNCnsNCiAgcG9pbnRlci1ldmVudHM6IG5vbmU7DQp9DQoNCi5cXC11bnJvdW5kLA0KLlxcLXBpbGwudW5yb3VuZCAudW5yb3VuZA0Kew0KICBib3JkZXItcmFkaXVzOiAwOw0KfQ0KDQouXFwtY2FwdGlvbg0Kew0KICBkaXNwbGF5OiBibG9jazsNCn0NCg0KLlxcLXByb3NlIC5jYXB0aW9uDQp7DQogIGZvbnQtc2l6ZTogMTJweDsNCiAgbWFyZ2luOiAtMjBweCAwIDIwcHgNCn0NCg0KLlxcLXRydW5jYXRlDQp7DQogIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOw0KICB3aGl0ZS1zcGFjZTogbm93cmFwOw0KICBvdmVyZmxvdzogaGlkZGVuOw0KfQ0KDQovKiBDU1MgQW5pbWF0aW9ucy9UcmFuc2l0aW9ucw0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCi5cXC1hbmltYXRlIHsNCiAgLXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuMTI1czsNCiAgLW1vei10cmFuc2l0aW9uOmFsbCAuMTI1czsNCiAgLW1zLXRyYW5zaXRpb246YWxsIC4xMjVzOw0KICB0cmFuc2l0aW9uOmFsbCAuMTI1czsNCn0NCg0KLlxcLW9mZmNhbnZhcy10b3AgICAgew0KICAtd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKTsNCiAgLW1vei10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTAwJSk7DQogIC1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTAwJSk7DQogIHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKTsNCn0NCi5cXC1vZmZjYW52YXMtcmlnaHQgIHsNCiAgLXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgxMDAlKTsNCiAgLW1vei10cmFuc2Zvcm06dHJhbnNsYXRlWCgxMDAlKTsNCiAgLW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVYKDEwMCUpOw0KICB0cmFuc2Zvcm06dHJhbnNsYXRlWCgxMDAlKTsNCn0NCi5cXC1vZmZjYW52YXMtYm90dG9tIHsNCiAgLXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSgxMDAlKTsNCiAgLW1vei10cmFuc2Zvcm06dHJhbnNsYXRlWSgxMDAlKTsNCiAgLW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpOw0KICB0cmFuc2Zvcm06dHJhbnNsYXRlWSgxMDAlKTsNCn0NCi5cXC1vZmZjYW52YXMtbGVmdCAgIHsNCiAgLXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSk7DQogIC1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpOw0KICAtbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpOw0KICB0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSk7DQp9DQoNCi5cXC1vZmZjYW52YXMtdG9wLmFjdGl2ZSwNCi5cXC1vZmZjYW52YXMtYm90dG9tLmFjdGl2ZSwNCi5cXC1vZmZjYW52YXMtdG9wOnRhcmdldCwNCi5cXC1vZmZjYW52YXMtYm90dG9tOnRhcmdldCB7DQogIC13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCk7DQogIC1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCk7DQogIC1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgwKTsNCiAgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCk7DQp9DQoNCi5cXC1vZmZjYW52YXMtbGVmdC5hY3RpdmUsDQouXFwtb2ZmY2FudmFzLXJpZ2h0LmFjdGl2ZSwNCi5cXC1vZmZjYW52YXMtbGVmdDp0YXJnZXQsDQouXFwtb2ZmY2FudmFzLXJpZ2h0OnRhcmdldCB7DQogIC13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCk7DQogIC1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCk7DQogIC1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWCgwKTsNCiAgdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCk7DQp9DQoNCi8qIFNsaWRpbmcgcGFuZXMgKi8NCi5cXC1zbGlkaW5nICAgICAgIHsgcG9zaXRpb246cmVsYXRpdmU7IH0NCi5cXC1zbGlkaW5nID4gKiAgIHsgcG9zaXRpb246YWJzb2x1dGU7IH0NCi5cXC1zbGlkaW5nLmggPiAqIHsNCiAgLXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSk7DQogIC1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpOw0KICAtbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTEwMCUpOw0KICB0cmFuc2Zvcm06dHJhbnNsYXRlWCgtMTAwJSk7DQp9DQouXFwtc2xpZGluZy52ID4gKiB7DQogIC13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEwMCUpOw0KICAtbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKTsNCiAgLW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMDAlKTsNCiAgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEwMCUpOw0KfQ0KLlxcLXNsaWRpbmcuaC5hY3RpdmUxID4gKjpudGgtY2hpbGQoICAgMSksDQouXFwtc2xpZGluZy5oLmFjdGl2ZTIgPiAqOm50aC1jaGlsZCggICAyKSwNCi5cXC1zbGlkaW5nLmguYWN0aXZlMyA+ICo6bnRoLWNoaWxkKCAgIDMpLA0KLlxcLXNsaWRpbmcuaC5hY3RpdmU0ID4gKjpudGgtY2hpbGQoICAgNCksDQouXFwtc2xpZGluZy5oLmFjdGl2ZTUgPiAqOm50aC1jaGlsZCggICA1KSwNCi5cXC1zbGlkaW5nLmguYWN0aXZlNiA+ICo6bnRoLWNoaWxkKCAgIDYpLA0KLlxcLXNsaWRpbmcuaC5hY3RpdmU3ID4gKjpudGgtY2hpbGQoICAgNyksDQouXFwtc2xpZGluZy5oLmFjdGl2ZTggPiAqOm50aC1jaGlsZCggICA4KSwNCi5cXC1zbGlkaW5nLmguYWN0aXZlOSA+ICo6bnRoLWNoaWxkKCAgIDkpIHsNCiAgLXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgwJSk7DQogIC1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCUpOw0KICAtbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCUpOw0KICB0cmFuc2Zvcm06dHJhbnNsYXRlWCgwJSk7DQp9DQouXFwtc2xpZGluZy5oLmFjdGl2ZTEgPiAqOm50aC1jaGlsZCggbisyKSwNCi5cXC1zbGlkaW5nLmguYWN0aXZlMiA+ICo6bnRoLWNoaWxkKCBuKzMpLA0KLlxcLXNsaWRpbmcuaC5hY3RpdmUzID4gKjpudGgtY2hpbGQoIG4rNCksDQouXFwtc2xpZGluZy5oLmFjdGl2ZTQgPiAqOm50aC1jaGlsZCggbis1KSwNCi5cXC1zbGlkaW5nLmguYWN0aXZlNSA+ICo6bnRoLWNoaWxkKCBuKzYpLA0KLlxcLXNsaWRpbmcuaC5hY3RpdmU2ID4gKjpudGgtY2hpbGQoIG4rNyksDQouXFwtc2xpZGluZy5oLmFjdGl2ZTcgPiAqOm50aC1jaGlsZCggbis4KSwNCi5cXC1zbGlkaW5nLmguYWN0aXZlOCA+ICo6bnRoLWNoaWxkKCBuKzkpLA0KLlxcLXNsaWRpbmcuaC5hY3RpdmU5ID4gKjpudGgtY2hpbGQobisxMCkgew0KICAtd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDEwMCUpOw0KICAtbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDEwMCUpOw0KICAtbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTAwJSk7DQogIHRyYW5zZm9ybTp0cmFuc2xhdGVYKDEwMCUpOw0KfQ0KDQouXFwtc2xpZGluZy52LmFjdGl2ZTEgPiAqOm50aC1jaGlsZCggICAxKSwNCi5cXC1zbGlkaW5nLnYuYWN0aXZlMiA+ICo6bnRoLWNoaWxkKCAgIDIpLA0KLlxcLXNsaWRpbmcudi5hY3RpdmUzID4gKjpudGgtY2hpbGQoICAgMyksDQouXFwtc2xpZGluZy52LmFjdGl2ZTQgPiAqOm50aC1jaGlsZCggICA0KSwNCi5cXC1zbGlkaW5nLnYuYWN0aXZlNSA+ICo6bnRoLWNoaWxkKCAgIDUpLA0KLlxcLXNsaWRpbmcudi5hY3RpdmU2ID4gKjpudGgtY2hpbGQoICAgNiksDQouXFwtc2xpZGluZy52LmFjdGl2ZTcgPiAqOm50aC1jaGlsZCggICA3KSwNCi5cXC1zbGlkaW5nLnYuYWN0aXZlOCA+ICo6bnRoLWNoaWxkKCAgIDgpLA0KLlxcLXNsaWRpbmcudi5hY3RpdmU5ID4gKjpudGgtY2hpbGQoICAgOSksDQouXFwtc2xpZGluZy52LmFjdGl2ZTEwPiAqOm50aC1jaGlsZCggIDEwKSwNCi5cXC1zbGlkaW5nLnYuYWN0aXZlMTE+ICo6bnRoLWNoaWxkKCAgMTEpLA0KLlxcLXNsaWRpbmcudi5hY3RpdmUxMj4gKjpudGgtY2hpbGQoICAxMiksDQouXFwtc2xpZGluZy52LmFjdGl2ZTEzPiAqOm50aC1jaGlsZCggIDEzKSwNCi5cXC1zbGlkaW5nLnYuYWN0aXZlMTQ+ICo6bnRoLWNoaWxkKCAgMTQpLA0KLlxcLXNsaWRpbmcudi5hY3RpdmUxNT4gKjpudGgtY2hpbGQoICAxNSksDQouXFwtc2xpZGluZy52LmFjdGl2ZTE2PiAqOm50aC1jaGlsZCggIDE2KSwNCi5cXC1zbGlkaW5nLnYuYWN0aXZlMTc+ICo6bnRoLWNoaWxkKCAgMTcpLA0KLlxcLXNsaWRpbmcudi5hY3RpdmUxOD4gKjpudGgtY2hpbGQoICAxOCksDQouXFwtc2xpZGluZy52LmFjdGl2ZTE5PiAqOm50aC1jaGlsZCggIDE5KSwNCi5cXC1zbGlkaW5nLnYuYWN0aXZlMjA+ICo6bnRoLWNoaWxkKCAgMjApDQp7DQogIC13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCUpOw0KICAtbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVZKDAlKTsNCiAgLW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKDAlKTsNCiAgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCUpOw0KfQ0KLlxcLXNsaWRpbmcudi5hY3RpdmUxID4gKjpudGgtY2hpbGQoIG4rMiksDQouXFwtc2xpZGluZy52LmFjdGl2ZTIgPiAqOm50aC1jaGlsZCggbiszKSwNCi5cXC1zbGlkaW5nLnYuYWN0aXZlMyA+ICo6bnRoLWNoaWxkKCBuKzQpLA0KLlxcLXNsaWRpbmcudi5hY3RpdmU0ID4gKjpudGgtY2hpbGQoIG4rNSksDQouXFwtc2xpZGluZy52LmFjdGl2ZTUgPiAqOm50aC1jaGlsZCggbis2KSwNCi5cXC1zbGlkaW5nLnYuYWN0aXZlNiA+ICo6bnRoLWNoaWxkKCBuKzcpLA0KLlxcLXNsaWRpbmcudi5hY3RpdmU3ID4gKjpudGgtY2hpbGQoIG4rOCksDQouXFwtc2xpZGluZy52LmFjdGl2ZTggPiAqOm50aC1jaGlsZCggbis5KSwNCi5cXC1zbGlkaW5nLnYuYWN0aXZlOSA+ICo6bnRoLWNoaWxkKG4rMTApLA0KLlxcLXNsaWRpbmcudi5hY3RpdmUxMD4gKjpudGgtY2hpbGQobisxMSksDQouXFwtc2xpZGluZy52LmFjdGl2ZTExPiAqOm50aC1jaGlsZChuKzEyKSwNCi5cXC1zbGlkaW5nLnYuYWN0aXZlMTI+ICo6bnRoLWNoaWxkKG4rMTMpLA0KLlxcLXNsaWRpbmcudi5hY3RpdmUxMz4gKjpudGgtY2hpbGQobisxNCksDQouXFwtc2xpZGluZy52LmFjdGl2ZTE0PiAqOm50aC1jaGlsZChuKzE1KSwNCi5cXC1zbGlkaW5nLnYuYWN0aXZlMTU+ICo6bnRoLWNoaWxkKG4rMTYpLA0KLlxcLXNsaWRpbmcudi5hY3RpdmUxNj4gKjpudGgtY2hpbGQobisxNyksDQouXFwtc2xpZGluZy52LmFjdGl2ZTE3PiAqOm50aC1jaGlsZChuKzE4KSwNCi5cXC1zbGlkaW5nLnYuYWN0aXZlMTg+ICo6bnRoLWNoaWxkKG4rMTkpLA0KLlxcLXNsaWRpbmcudi5hY3RpdmUxOT4gKjpudGgtY2hpbGQobisyMCksDQouXFwtc2xpZGluZy52LmFjdGl2ZTIwPiAqOm50aC1jaGlsZChuKzIxKQ0Kew0KICAtd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpOw0KICAtbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpOw0KICAtbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTAwJSk7DQogIHRyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpOw0KfQ0KDQovKiBGaWxscw0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCi5cXC1maWxsLWRhcmsgICAgICAgIHsgYmFja2dyb3VuZC1jb2xvcjojNDA0MDQwOyB9DQouXFwtZmlsbC1ncmF5LA0KLlxcLWZpbGwtZ3JleSAgICAgICAgeyBiYWNrZ3JvdW5kOiNlZWU7IH0NCi5cXC1maWxsLWdyZXktZGFyaywNCi5cXC1maWxsLWdyYXktZGFyayAgIHsgYmFja2dyb3VuZDojNDA0MDQwOyB9DQouXFwtZmlsbC13aGl0ZSAgICAgICB7IGJhY2tncm91bmQ6I2ZmZjsgfQ0KLlxcLWZpbGwtbGlnaHQgICAgICAgeyBiYWNrZ3JvdW5kOiNmOGY4Zjg7IH0NCi8qIGRlcHJlY2F0ZWQsIHVzZSBmaWxsLWN5YW4gKi8NCi5cXC1maWxsLWJsdWUtbGlnaHQgIHsgYmFja2dyb3VuZDojNTJhMWQ4OyB9DQouXFwtZmlsbC1jeWFuICAgICAgICB7IGJhY2tncm91bmQ6IzNiYjJkMDsgfQ0KLlxcLWZpbGwtbWlkbmlnaHQgICAgeyBiYWNrZ3JvdW5kOiMxNDI3MzY7IH0NCg0KLlxcLWZpbGwtYmx1ZSAgICAgICAgeyBiYWNrZ3JvdW5kOiMzODg3YmU7IH0NCi5cXC1maWxsLWRlbmltICAgICAgIHsgYmFja2dyb3VuZDojNTA2NjdmOyB9DQouXFwtZmlsbC1uYXZ5ICAgICAgICB7IGJhY2tncm91bmQ6IzI4MzUzZDsgfQ0KLlxcLWZpbGwtbmF2eS1kYXJrICAgeyBiYWNrZ3JvdW5kOiMyMjJCMzA7IH0NCi5cXC1maWxsLXB1cnBsZSAgICAgIHsgYmFja2dyb3VuZDojOGE4YWNiOyB9DQouXFwtZmlsbC1ncmVlbiAgICAgICB7IGJhY2tncm91bmQ6IzU2Yjg4MTsgfQ0KLlxcLWZpbGwteWVsbG93ICAgICAgeyBiYWNrZ3JvdW5kOiNmMWYwNzU7IH0NCi5cXC1maWxsLW9yYW5nZSAgICAgIHsgYmFja2dyb3VuZDojZjk4ODZjOyB9DQoNCi5cXC1maWxsLWRhcmtibHVlICAgIHsgYmFja2dyb3VuZC1jb2xvcjojMjIzYjUzOyB9DQouXFwtZmlsbC1yZWQgICAgICAgICB7IGJhY2tncm91bmQtY29sb3I6I2U1NWU1ZTsgfQ0KLlxcLWZpbGwtdGVhbCAgICAgICAgeyBiYWNrZ3JvdW5kLWNvbG9yOiM0MWFmYTU7IH0NCi5cXC1maWxsLXBpbmsgICAgICAgIHsgYmFja2dyb3VuZC1jb2xvcjojZWQ2NDk4OyB9DQouXFwtZmlsbC1tdXN0YXJkICAgICB7IGJhY2tncm91bmQtY29sb3I6I2ZiYjAzYjsgfQ0KDQouXFwtZmlsbC1kYXJrZW4wIHsgYmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuMDUpOyB9DQouXFwtZmlsbC1kYXJrZW4xIHsgYmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuMjUpOyB9DQouXFwtZmlsbC1kYXJrZW4yIHsgYmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuNTApOyB9DQouXFwtZmlsbC1kYXJrZW4zIHsgYmFja2dyb3VuZDpyZ2JhKDAsMCwwLDAuNzUpOyB9DQoNCi5cXC1maWxsLWxpZ2h0ZW4wIHsgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LDAuMTApOyB9DQouXFwtZmlsbC1saWdodGVuMSB7IGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwwLjI1KTsgfQ0KLlxcLWZpbGwtbGlnaHRlbjIgeyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsMC41MCk7IH0NCi5cXC1maWxsLWxpZ2h0ZW4zIHsgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LDAuNzUpOyB9]]></data>
	</file>
	<file>
	  <filename>/css/bs/lib/mt-grid.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiZ3JpZC11dGlscy5jc3MiOw0KQGltcG9ydCAiZ3JpZC5jc3MiOw0KQGltcG9ydCAic20tZ3JpZC5jc3MiOw0KQGltcG9ydCAibWQtZ3JpZC5jc3MiOw0KQGltcG9ydCAibGctZ3JpZC5jc3MiOw0KDQpAY3VzdG9tLW1lZGlhIC0tYnJlYWtwb2ludC1zbSAobWluLXdpZHRoOiA0MGVtKTsNCkBjdXN0b20tbWVkaWEgLS1icmVha3BvaW50LW1kIChtaW4td2lkdGg6IDUyZW0pOw0KQGN1c3RvbS1tZWRpYSAtLWJyZWFrcG9pbnQtbGcgKG1pbi13aWR0aDogNjRlbSk7]]></data>
	</file>
	<file>
	  <filename>/css/bs/lib/sm-grid.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QG1lZGlhICgtLWJyZWFrcG9pbnQtc20pIHsKCiAgLlxcLXNtLWNvbCB7CiAgICBmbG9hdDogbGVmdDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgfQoKICAuXFwtc20tY29sLXJpZ2h0IHsKICAgIGZsb2F0OiByaWdodDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgfQoKICAuXFwtc20tY29sLTEgewogICAgd2lkdGg6IGNhbGMoMS8xMiAqIDEwMCUpOwogIH0KCiAgLlxcLXNtLWNvbC0yIHsKICAgIHdpZHRoOiBjYWxjKDIvMTIgKiAxMDAlKTsKICB9CgogIC5cXC1zbS1jb2wtMyB7CiAgICB3aWR0aDogY2FsYygzLzEyICogMTAwJSk7CiAgfQoKICAuXFwtc20tY29sLTQgewogICAgd2lkdGg6IGNhbGMoNC8xMiAqIDEwMCUpOwogIH0KCiAgLlxcLXNtLWNvbC01IHsKICAgIHdpZHRoOiBjYWxjKDUvMTIgKiAxMDAlKTsKICB9CgogIC5cXC1zbS1jb2wtNiB7CiAgICB3aWR0aDogY2FsYyg2LzEyICogMTAwJSk7CiAgfQoKICAuXFwtc20tY29sLTcgewogICAgd2lkdGg6IGNhbGMoNy8xMiAqIDEwMCUpOwogIH0KCiAgLlxcLXNtLWNvbC04IHsKICAgIHdpZHRoOiBjYWxjKDgvMTIgKiAxMDAlKTsKICB9CgogIC5cXC1zbS1jb2wtOSB7CiAgICB3aWR0aDogY2FsYyg5LzEyICogMTAwJSk7CiAgfQoKICAuXFwtc20tY29sLTEwIHsKICAgIHdpZHRoOiBjYWxjKDEwLzEyICogMTAwJSk7CiAgfQoKICAuXFwtc20tY29sLTExIHsKICAgIHdpZHRoOiBjYWxjKDExLzEyICogMTAwJSk7CiAgfQoKICAuXFwtc20tY29sLTEyIHsKICAgIHdpZHRoOiAxMDAlOwogIH0KCn0KCg==]]></data>
	</file>
	<file>
	  <filename>/css/fk.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogZmluZGVycyBrZWVwZXJzICovDQoNCi5cXC1may13YXJuaW5nLA0KLlxcLWZrLWVycm9yLA0KLlxcLWZrLWluZm9ybWF0aW9uLA0KLlxcLWZrLW1lc3NhZ2UsDQouXFwtZmstc3VjY2VzcywNCi5cXC1may1wYWdld2FybmluZywNCi5cXC1may1ncmVlbiwNCi5cXC1may1yZWQsDQouXFwtZmsteWVsbG93DQp7DQogIGJvcmRlci1yYWRpdXM6IDRweA0KfQ0KDQoNCi5cXC1may1vcmFuZ2UNCnsNCiAgY29sb3I6ICNFNkMyNkUNCn0NCg0KLlxcLWZrLXJlZCwNCi5cXC1may10ZXh0LXJlZCwNCmEuXFwtZmstdGV4dC1yZWQsDQp0YWJsZS5cXC1may1wYWdldGFibGUgYS5cXC1may10ZXh0LXJlZA0Kew0KICBjb2xvcjogI0FFNDMyRQ0KfQ0KDQouXFwtZmstYmx1ZQ0Kew0KICBjb2xvcjogIzA1OERDNw0KfQ0KDQouXFwtZmstbWVzc2FnZSwNCi5cXC1may1wYWdld2FybmluZywNCi5cXC1may1wYWdlbWNvbnRhaW5lciwNCi5cXC1may1wYWdlZXJyb3Jjb250YWluZXIsDQouXFwtZmstcGFnZWVycm9yaW5zdGFsbGRpciwNCi5cXC1may1ncmVlbiwNCi5cXC1may1yZWQsDQouXFwtZmsteWVsbG93LA0KLlxcLWZrLXdhcm5pbmcsDQouXFwtZmstaW5mb3JtYXRpb24NCnsNCiAgZGlzcGxheTogaW5saW5lLWJsb2NrOw0KICB3aWR0aDogYXV0bzsNCiAgZm9udC1zaXplOiAxNHB4Ow0KICBwYWRkaW5nOiAxMHB4IDEwcHggMTBweCA0MHB4Ow0KICBtYXJnaW46IDEwcHggMA0KfQ0KDQouXFwtZmstcGFnZXdhcm5pbmcuXFwtZmstaGlkZGVuDQp7DQogIGRpc3BsYXk6IG5vbmUNCn0NCg0KLlxcLWZrLWRpYWxvZyAuXFwtZmstZ3JlZW4sDQouXFwtZmstZGlhbG9nIC5cXC1may1yZWQsDQouXFwtZmstZGlhbG9nIC5cXC1may15ZWxsb3csDQouXFwtZmstZGlhbG9nIC5cXC1may1vcmFuZ2UNCnsNCiAgZGlzcGxheTogYmxvY2sNCn0NCg0KLlxcLWZrLWdyZWVuLA0KLlxcLWZrLXJlZCwNCi5cXC1may15ZWxsb3csDQouXFwtZmstb3JhbmdlDQp7DQogIHBhZGRpbmc6IDEwcHg7DQp9DQoNCi5cXC1may15ZWxsb3cNCnsNCiAgYmFja2dyb3VuZDogI0ZBRjZENDsNCiAgY29sb3I6ICNFNkMyNkU7DQogIGJvcmRlcjogMXB4IHNvbGlkICNFNkMyNkUNCn0NCg0KLlxcLWZrLWVycm9yLA0KLlxcLWZrLXBhZ2VlcnJvcmNvbnRhaW5lciwNCi5cXC1may1yZWQNCnsNCiAgYmFja2dyb3VuZDogI0YyRDRDRTsNCiAgY29sb3I6ICNBRTQzMkU7DQogIGJvcmRlcjogMXB4IHNvbGlkICNBRTQzMkUNCn0NCg0KLlxcLWZrLWdyZWVuDQp7DQogIGJhY2tncm91bmQ6ICNEOUU2QzM7DQogIGNvbG9yOiAjNzdBQjEzOw0KICBib3JkZXI6IDFweCBzb2xpZCAjNzdBQjEzDQp9DQoNCi5cXC1may1tZXNzYWdlOmhvdmVyDQp7DQogIGN1cnNvcjogaGVscA0KfQ0KDQouXFwtZmstd2FybmluZyBwLA0KLlxcLWZrLXBhZ2V3YXJuaW5nIHAsDQouXFwtZmstbWVzc2FnZSBwDQp7DQogIGNvbG9yOiAjMjMyMzIzOw0KICBtYXJnaW46IDA7DQogIGZvbnQtc2l6ZTogMTRweA0KfQ0KDQouXFwtZmstd2FybmluZyBoMywNCi5cXC1may1wYWdld2FybmluZyBoMw0Kew0KICBtYXJnaW46IDJweCAwOw0KICBmb250LXNpemU6IDE0cHg7DQogIGNvbG9yOiAjRTZDMjZFDQp9]]></data>
	</file>
	<file>
	  <filename>/css/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/css/mams.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGltcG9ydCAiLi9icy9icy5jc3MiOw0KQGltcG9ydCAiZiZrLmNzcyI7]]></data>
	</file>
	<file>
	  <filename>/docs</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/docs/COPYING</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQogICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMiwgSnVuZSAxOTkxCgogQ29weXJpZ2h0IChDKSAxOTg5LCAxOTkxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcwogb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlYW1ibGUKCiAgVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgpmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgaXQuICBCeSBjb250cmFzdCwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwpMaWNlbnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBmcmVlCnNvZnR3YXJlLS10byBtYWtlIHN1cmUgdGhlIHNvZnR3YXJlIGlzIGZyZWUgZm9yIGFsbCBpdHMgdXNlcnMuICBUaGlzCkdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBtb3N0IG9mIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24ncyBzb2Z0d2FyZSBhbmQgdG8gYW55IG90aGVyIHByb2dyYW0gd2hvc2UgYXV0aG9ycyBjb21taXQgdG8KdXNpbmcgaXQuICAoU29tZSBvdGhlciBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gc29mdHdhcmUgaXMgY292ZXJlZCBieQp0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGluc3RlYWQuKSAgWW91IGNhbiBhcHBseSBpdCB0bwp5b3VyIHByb2dyYW1zLCB0b28uCgogIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKcHJpY2UuICBPdXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZXMgYXJlIGRlc2lnbmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdQpoYXZlIHRoZSBmcmVlZG9tIHRvIGRpc3RyaWJ1dGUgY29waWVzIG9mIGZyZWUgc29mdHdhcmUgKGFuZCBjaGFyZ2UgZm9yCnRoaXMgc2VydmljZSBpZiB5b3Ugd2lzaCksIHRoYXQgeW91IHJlY2VpdmUgc291cmNlIGNvZGUgb3IgY2FuIGdldCBpdAppZiB5b3Ugd2FudCBpdCwgdGhhdCB5b3UgY2FuIGNoYW5nZSB0aGUgc29mdHdhcmUgb3IgdXNlIHBpZWNlcyBvZiBpdAppbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGtub3cgeW91IGNhbiBkbyB0aGVzZSB0aGluZ3MuCgogIFRvIHByb3RlY3QgeW91ciByaWdodHMsIHdlIG5lZWQgdG8gbWFrZSByZXN0cmljdGlvbnMgdGhhdCBmb3JiaWQKYW55b25lIHRvIGRlbnkgeW91IHRoZXNlIHJpZ2h0cyBvciB0byBhc2sgeW91IHRvIHN1cnJlbmRlciB0aGUgcmlnaHRzLgpUaGVzZSByZXN0cmljdGlvbnMgdHJhbnNsYXRlIHRvIGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBmb3IgeW91IGlmIHlvdQpkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgc29mdHdhcmUsIG9yIGlmIHlvdSBtb2RpZnkgaXQuCgogIEZvciBleGFtcGxlLCBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2Ygc3VjaCBhIHByb2dyYW0sIHdoZXRoZXIKZ3JhdGlzIG9yIGZvciBhIGZlZSwgeW91IG11c3QgZ2l2ZSB0aGUgcmVjaXBpZW50cyBhbGwgdGhlIHJpZ2h0cyB0aGF0CnlvdSBoYXZlLiAgWW91IG11c3QgbWFrZSBzdXJlIHRoYXQgdGhleSwgdG9vLCByZWNlaXZlIG9yIGNhbiBnZXQgdGhlCnNvdXJjZSBjb2RlLiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIKcmlnaHRzLgoKICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggdHdvIHN0ZXBzOiAoMSkgY29weXJpZ2h0IHRoZSBzb2Z0d2FyZSwgYW5kCigyKSBvZmZlciB5b3UgdGhpcyBsaWNlbnNlIHdoaWNoIGdpdmVzIHlvdSBsZWdhbCBwZXJtaXNzaW9uIHRvIGNvcHksCmRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGUgc29mdHdhcmUuCgogIEFsc28sIGZvciBlYWNoIGF1dGhvcidzIHByb3RlY3Rpb24gYW5kIG91cnMsIHdlIHdhbnQgdG8gbWFrZSBjZXJ0YWluCnRoYXQgZXZlcnlvbmUgdW5kZXJzdGFuZHMgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBmcmVlCnNvZnR3YXJlLiAgSWYgdGhlIHNvZnR3YXJlIGlzIG1vZGlmaWVkIGJ5IHNvbWVvbmUgZWxzZSBhbmQgcGFzc2VkIG9uLCB3ZQp3YW50IGl0cyByZWNpcGllbnRzIHRvIGtub3cgdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdpbmFsLCBzbwp0aGF0IGFueSBwcm9ibGVtcyBpbnRyb2R1Y2VkIGJ5IG90aGVycyB3aWxsIG5vdCByZWZsZWN0IG9uIHRoZSBvcmlnaW5hbAphdXRob3JzJyByZXB1dGF0aW9ucy4KCiAgRmluYWxseSwgYW55IGZyZWUgcHJvZ3JhbSBpcyB0aHJlYXRlbmVkIGNvbnN0YW50bHkgYnkgc29mdHdhcmUKcGF0ZW50cy4gIFdlIHdpc2ggdG8gYXZvaWQgdGhlIGRhbmdlciB0aGF0IHJlZGlzdHJpYnV0b3JzIG9mIGEgZnJlZQpwcm9ncmFtIHdpbGwgaW5kaXZpZHVhbGx5IG9idGFpbiBwYXRlbnQgbGljZW5zZXMsIGluIGVmZmVjdCBtYWtpbmcgdGhlCnByb2dyYW0gcHJvcHJpZXRhcnkuICBUbyBwcmV2ZW50IHRoaXMsIHdlIGhhdmUgbWFkZSBpdCBjbGVhciB0aGF0IGFueQpwYXRlbnQgbXVzdCBiZSBsaWNlbnNlZCBmb3IgZXZlcnlvbmUncyBmcmVlIHVzZSBvciBub3QgbGljZW5zZWQgYXQgYWxsLgoKICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZAptb2RpZmljYXRpb24gZm9sbG93LgoKICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQogICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgQ09QWUlORywgRElTVFJJQlVUSU9OIEFORCBNT0RJRklDQVRJT04KCiAgMC4gVGhpcyBMaWNlbnNlIGFwcGxpZXMgdG8gYW55IHByb2dyYW0gb3Igb3RoZXIgd29yayB3aGljaCBjb250YWlucwphIG5vdGljZSBwbGFjZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXIgc2F5aW5nIGl0IG1heSBiZSBkaXN0cmlidXRlZAp1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhlICJQcm9ncmFtIiwgYmVsb3csCnJlZmVycyB0byBhbnkgc3VjaCBwcm9ncmFtIG9yIHdvcmssIGFuZCBhICJ3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtIgptZWFucyBlaXRoZXIgdGhlIFByb2dyYW0gb3IgYW55IGRlcml2YXRpdmUgd29yayB1bmRlciBjb3B5cmlnaHQgbGF3Ogp0aGF0IGlzIHRvIHNheSwgYSB3b3JrIGNvbnRhaW5pbmcgdGhlIFByb2dyYW0gb3IgYSBwb3J0aW9uIG9mIGl0LAplaXRoZXIgdmVyYmF0aW0gb3Igd2l0aCBtb2RpZmljYXRpb25zIGFuZC9vciB0cmFuc2xhdGVkIGludG8gYW5vdGhlcgpsYW5ndWFnZS4gIChIZXJlaW5hZnRlciwgdHJhbnNsYXRpb24gaXMgaW5jbHVkZWQgd2l0aG91dCBsaW1pdGF0aW9uIGluCnRoZSB0ZXJtICJtb2RpZmljYXRpb24iLikgIEVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLgoKQWN0aXZpdGllcyBvdGhlciB0aGFuIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQgbW9kaWZpY2F0aW9uIGFyZSBub3QKY292ZXJlZCBieSB0aGlzIExpY2Vuc2U7IHRoZXkgYXJlIG91dHNpZGUgaXRzIHNjb3BlLiAgVGhlIGFjdCBvZgpydW5uaW5nIHRoZSBQcm9ncmFtIGlzIG5vdCByZXN0cmljdGVkLCBhbmQgdGhlIG91dHB1dCBmcm9tIHRoZSBQcm9ncmFtCmlzIGNvdmVyZWQgb25seSBpZiBpdHMgY29udGVudHMgY29uc3RpdHV0ZSBhIHdvcmsgYmFzZWQgb24gdGhlClByb2dyYW0gKGluZGVwZW5kZW50IG9mIGhhdmluZyBiZWVuIG1hZGUgYnkgcnVubmluZyB0aGUgUHJvZ3JhbSkuCldoZXRoZXIgdGhhdCBpcyB0cnVlIGRlcGVuZHMgb24gd2hhdCB0aGUgUHJvZ3JhbSBkb2VzLgoKICAxLiBZb3UgbWF5IGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzIG9mIHRoZSBQcm9ncmFtJ3MKc291cmNlIGNvZGUgYXMgeW91IHJlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQgeW91CmNvbnNwaWN1b3VzbHkgYW5kIGFwcHJvcHJpYXRlbHkgcHVibGlzaCBvbiBlYWNoIGNvcHkgYW4gYXBwcm9wcmlhdGUKY29weXJpZ2h0IG5vdGljZSBhbmQgZGlzY2xhaW1lciBvZiB3YXJyYW50eTsga2VlcCBpbnRhY3QgYWxsIHRoZQpub3RpY2VzIHRoYXQgcmVmZXIgdG8gdGhpcyBMaWNlbnNlIGFuZCB0byB0aGUgYWJzZW5jZSBvZiBhbnkgd2FycmFudHk7CmFuZCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBQcm9ncmFtIGEgY29weSBvZiB0aGlzIExpY2Vuc2UKYWxvbmcgd2l0aCB0aGUgUHJvZ3JhbS4KCllvdSBtYXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksIGFuZAp5b3UgbWF5IGF0IHlvdXIgb3B0aW9uIG9mZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEgZmVlLgoKICAyLiBZb3UgbWF5IG1vZGlmeSB5b3VyIGNvcHkgb3IgY29waWVzIG9mIHRoZSBQcm9ncmFtIG9yIGFueSBwb3J0aW9uCm9mIGl0LCB0aHVzIGZvcm1pbmcgYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtLCBhbmQgY29weSBhbmQKZGlzdHJpYnV0ZSBzdWNoIG1vZGlmaWNhdGlvbnMgb3Igd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiAxCmFib3ZlLCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNvbmRpdGlvbnM6CgogICAgYSkgWW91IG11c3QgY2F1c2UgdGhlIG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVudCBub3RpY2VzCiAgICBzdGF0aW5nIHRoYXQgeW91IGNoYW5nZWQgdGhlIGZpbGVzIGFuZCB0aGUgZGF0ZSBvZiBhbnkgY2hhbmdlLgoKICAgIGIpIFlvdSBtdXN0IGNhdXNlIGFueSB3b3JrIHRoYXQgeW91IGRpc3RyaWJ1dGUgb3IgcHVibGlzaCwgdGhhdCBpbgogICAgd2hvbGUgb3IgaW4gcGFydCBjb250YWlucyBvciBpcyBkZXJpdmVkIGZyb20gdGhlIFByb2dyYW0gb3IgYW55CiAgICBwYXJ0IHRoZXJlb2YsIHRvIGJlIGxpY2Vuc2VkIGFzIGEgd2hvbGUgYXQgbm8gY2hhcmdlIHRvIGFsbCB0aGlyZAogICAgcGFydGllcyB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLgoKICAgIGMpIElmIHRoZSBtb2RpZmllZCBwcm9ncmFtIG5vcm1hbGx5IHJlYWRzIGNvbW1hbmRzIGludGVyYWN0aXZlbHkKICAgIHdoZW4gcnVuLCB5b3UgbXVzdCBjYXVzZSBpdCwgd2hlbiBzdGFydGVkIHJ1bm5pbmcgZm9yIHN1Y2gKICAgIGludGVyYWN0aXZlIHVzZSBpbiB0aGUgbW9zdCBvcmRpbmFyeSB3YXksIHRvIHByaW50IG9yIGRpc3BsYXkgYW4KICAgIGFubm91bmNlbWVudCBpbmNsdWRpbmcgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSBhbmQgYQogICAgbm90aWNlIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgKG9yIGVsc2UsIHNheWluZyB0aGF0IHlvdSBwcm92aWRlCiAgICBhIHdhcnJhbnR5KSBhbmQgdGhhdCB1c2VycyBtYXkgcmVkaXN0cmlidXRlIHRoZSBwcm9ncmFtIHVuZGVyCiAgICB0aGVzZSBjb25kaXRpb25zLCBhbmQgdGVsbGluZyB0aGUgdXNlciBob3cgdG8gdmlldyBhIGNvcHkgb2YgdGhpcwogICAgTGljZW5zZS4gIChFeGNlcHRpb246IGlmIHRoZSBQcm9ncmFtIGl0c2VsZiBpcyBpbnRlcmFjdGl2ZSBidXQKICAgIGRvZXMgbm90IG5vcm1hbGx5IHByaW50IHN1Y2ggYW4gYW5ub3VuY2VtZW50LCB5b3VyIHdvcmsgYmFzZWQgb24KICAgIHRoZSBQcm9ncmFtIGlzIG5vdCByZXF1aXJlZCB0byBwcmludCBhbiBhbm5vdW5jZW1lbnQuKQoKVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hvbGUuICBJZgppZGVudGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBQcm9ncmFtLAphbmQgY2FuIGJlIHJlYXNvbmFibHkgY29uc2lkZXJlZCBpbmRlcGVuZGVudCBhbmQgc2VwYXJhdGUgd29ya3MgaW4KdGhlbXNlbHZlcywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQpzZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuICBCdXQgd2hlbiB5b3UKZGlzdHJpYnV0ZSB0aGUgc2FtZSBzZWN0aW9ucyBhcyBwYXJ0IG9mIGEgd2hvbGUgd2hpY2ggaXMgYSB3b3JrIGJhc2VkCm9uIHRoZSBQcm9ncmFtLCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgp0aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZQplbnRpcmUgd2hvbGUsIGFuZCB0aHVzIHRvIGVhY2ggYW5kIGV2ZXJ5IHBhcnQgcmVnYXJkbGVzcyBvZiB3aG8gd3JvdGUgaXQuCgpUaHVzLCBpdCBpcyBub3QgdGhlIGludGVudCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3QKeW91ciByaWdodHMgdG8gd29yayB3cml0dGVuIGVudGlyZWx5IGJ5IHlvdTsgcmF0aGVyLCB0aGUgaW50ZW50IGlzIHRvCmV4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgpjb2xsZWN0aXZlIHdvcmtzIGJhc2VkIG9uIHRoZSBQcm9ncmFtLgoKSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgUHJvZ3JhbQp3aXRoIHRoZSBQcm9ncmFtIChvciB3aXRoIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSkgb24gYSB2b2x1bWUgb2YKYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0gZG9lcyBub3QgYnJpbmcgdGhlIG90aGVyIHdvcmsgdW5kZXIKdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KCiAgMy4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhIHdvcmsgYmFzZWQgb24gaXQsCnVuZGVyIFNlY3Rpb24gMikgaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHVuZGVyIHRoZSB0ZXJtcyBvZgpTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gZG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6CgogICAgYSkgQWNjb21wYW55IGl0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZQogICAgc291cmNlIGNvZGUsIHdoaWNoIG11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zCiAgICAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlOyBvciwKCiAgICBiKSBBY2NvbXBhbnkgaXQgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdCBsZWFzdCB0aHJlZQogICAgeWVhcnMsIHRvIGdpdmUgYW55IHRoaXJkIHBhcnR5LCBmb3IgYSBjaGFyZ2Ugbm8gbW9yZSB0aGFuIHlvdXIKICAgIGNvc3Qgb2YgcGh5c2ljYWxseSBwZXJmb3JtaW5nIHNvdXJjZSBkaXN0cmlidXRpb24sIGEgY29tcGxldGUKICAgIG1hY2hpbmUtcmVhZGFibGUgY29weSBvZiB0aGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZSwgdG8gYmUKICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtCiAgICBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCgogICAgYykgQWNjb21wYW55IGl0IHdpdGggdGhlIGluZm9ybWF0aW9uIHlvdSByZWNlaXZlZCBhcyB0byB0aGUgb2ZmZXIKICAgIHRvIGRpc3RyaWJ1dGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZS4gIChUaGlzIGFsdGVybmF0aXZlIGlzCiAgICBhbGxvd2VkIG9ubHkgZm9yIG5vbmNvbW1lcmNpYWwgZGlzdHJpYnV0aW9uIGFuZCBvbmx5IGlmIHlvdQogICAgcmVjZWl2ZWQgdGhlIHByb2dyYW0gaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHdpdGggc3VjaAogICAgYW4gb2ZmZXIsIGluIGFjY29yZCB3aXRoIFN1YnNlY3Rpb24gYiBhYm92ZS4pCgpUaGUgc291cmNlIGNvZGUgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yCm1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGFuIGV4ZWN1dGFibGUgd29yaywgY29tcGxldGUgc291cmNlCmNvZGUgbWVhbnMgYWxsIHRoZSBzb3VyY2UgY29kZSBmb3IgYWxsIG1vZHVsZXMgaXQgY29udGFpbnMsIHBsdXMgYW55CmFzc29jaWF0ZWQgaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0bwpjb250cm9sIGNvbXBpbGF0aW9uIGFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGV4ZWN1dGFibGUuICBIb3dldmVyLCBhcyBhCnNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgc291cmNlIGNvZGUgZGlzdHJpYnV0ZWQgbmVlZCBub3QgaW5jbHVkZQphbnl0aGluZyB0aGF0IGlzIG5vcm1hbGx5IGRpc3RyaWJ1dGVkIChpbiBlaXRoZXIgc291cmNlIG9yIGJpbmFyeQpmb3JtKSB3aXRoIHRoZSBtYWpvciBjb21wb25lbnRzIChjb21waWxlciwga2VybmVsLCBhbmQgc28gb24pIG9mIHRoZQpvcGVyYXRpbmcgc3lzdGVtIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxlIHJ1bnMsIHVubGVzcyB0aGF0IGNvbXBvbmVudAppdHNlbGYgYWNjb21wYW5pZXMgdGhlIGV4ZWN1dGFibGUuCgpJZiBkaXN0cmlidXRpb24gb2YgZXhlY3V0YWJsZSBvciBvYmplY3QgY29kZSBpcyBtYWRlIGJ5IG9mZmVyaW5nCmFjY2VzcyB0byBjb3B5IGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCB0aGVuIG9mZmVyaW5nIGVxdWl2YWxlbnQKYWNjZXNzIHRvIGNvcHkgdGhlIHNvdXJjZSBjb2RlIGZyb20gdGhlIHNhbWUgcGxhY2UgY291bnRzIGFzCmRpc3RyaWJ1dGlvbiBvZiB0aGUgc291cmNlIGNvZGUsIGV2ZW4gdGhvdWdoIHRoaXJkIHBhcnRpZXMgYXJlIG5vdApjb21wZWxsZWQgdG8gY29weSB0aGUgc291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBjb2RlLgoKICA0LiBZb3UgbWF5IG5vdCBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2UsIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0KZXhjZXB0IGFzIGV4cHJlc3NseSBwcm92aWRlZCB1bmRlciB0aGlzIExpY2Vuc2UuICBBbnkgYXR0ZW1wdApvdGhlcndpc2UgdG8gY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gaXMKdm9pZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91ciByaWdodHMgdW5kZXIgdGhpcyBMaWNlbnNlLgpIb3dldmVyLCBwYXJ0aWVzIHdobyBoYXZlIHJlY2VpdmVkIGNvcGllcywgb3IgcmlnaHRzLCBmcm9tIHlvdSB1bmRlcgp0aGlzIExpY2Vuc2Ugd2lsbCBub3QgaGF2ZSB0aGVpciBsaWNlbnNlcyB0ZXJtaW5hdGVkIHNvIGxvbmcgYXMgc3VjaApwYXJ0aWVzIHJlbWFpbiBpbiBmdWxsIGNvbXBsaWFuY2UuCgogIDUuIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vuc2UsIHNpbmNlIHlvdSBoYXZlIG5vdApzaWduZWQgaXQuICBIb3dldmVyLCBub3RoaW5nIGVsc2UgZ3JhbnRzIHlvdSBwZXJtaXNzaW9uIHRvIG1vZGlmeSBvcgpkaXN0cmlidXRlIHRoZSBQcm9ncmFtIG9yIGl0cyBkZXJpdmF0aXZlIHdvcmtzLiAgVGhlc2UgYWN0aW9ucyBhcmUKcHJvaGliaXRlZCBieSBsYXcgaWYgeW91IGRvIG5vdCBhY2NlcHQgdGhpcyBMaWNlbnNlLiAgVGhlcmVmb3JlLCBieQptb2RpZnlpbmcgb3IgZGlzdHJpYnV0aW5nIHRoZSBQcm9ncmFtIChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKUHJvZ3JhbSksIHlvdSBpbmRpY2F0ZSB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhpcyBMaWNlbnNlIHRvIGRvIHNvLCBhbmQKYWxsIGl0cyB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW5nIG9yIG1vZGlmeWluZwp0aGUgUHJvZ3JhbSBvciB3b3JrcyBiYXNlZCBvbiBpdC4KCiAgNi4gRWFjaCB0aW1lIHlvdSByZWRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQpQcm9ncmFtKSwgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5IHJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZQpvcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlIG9yIG1vZGlmeSB0aGUgUHJvZ3JhbSBzdWJqZWN0IHRvCnRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgWW91IG1heSBub3QgaW1wb3NlIGFueSBmdXJ0aGVyCnJlc3RyaWN0aW9ucyBvbiB0aGUgcmVjaXBpZW50cycgZXhlcmNpc2Ugb2YgdGhlIHJpZ2h0cyBncmFudGVkIGhlcmVpbi4KWW91IGFyZSBub3QgcmVzcG9uc2libGUgZm9yIGVuZm9yY2luZyBjb21wbGlhbmNlIGJ5IHRoaXJkIHBhcnRpZXMgdG8KdGhpcyBMaWNlbnNlLgoKICA3LiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50CmluZnJpbmdlbWVudCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQgdG8gcGF0ZW50IGlzc3VlcyksCmNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3IKb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdApleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdApkaXN0cmlidXRlIHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCkxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UKbWF5IG5vdCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiBhIHBhdGVudApsaWNlbnNlIHdvdWxkIG5vdCBwZXJtaXQgcm95YWx0eS1mcmVlIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtIGJ5CmFsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwgdGhlbgp0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCBpdCBhbmQgdGhpcyBMaWNlbnNlIHdvdWxkIGJlIHRvCnJlZnJhaW4gZW50aXJlbHkgZnJvbSBkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0uCgpJZiBhbnkgcG9ydGlvbiBvZiB0aGlzIHNlY3Rpb24gaXMgaGVsZCBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIKYW55IHBhcnRpY3VsYXIgY2lyY3Vtc3RhbmNlLCB0aGUgYmFsYW5jZSBvZiB0aGUgc2VjdGlvbiBpcyBpbnRlbmRlZCB0bwphcHBseSBhbmQgdGhlIHNlY3Rpb24gYXMgYSB3aG9sZSBpcyBpbnRlbmRlZCB0byBhcHBseSBpbiBvdGhlcgpjaXJjdW1zdGFuY2VzLgoKSXQgaXMgbm90IHRoZSBwdXJwb3NlIG9mIHRoaXMgc2VjdGlvbiB0byBpbmR1Y2UgeW91IHRvIGluZnJpbmdlIGFueQpwYXRlbnRzIG9yIG90aGVyIHByb3BlcnR5IHJpZ2h0IGNsYWltcyBvciB0byBjb250ZXN0IHZhbGlkaXR5IG9mIGFueQpzdWNoIGNsYWltczsgdGhpcyBzZWN0aW9uIGhhcyB0aGUgc29sZSBwdXJwb3NlIG9mIHByb3RlY3RpbmcgdGhlCmludGVncml0eSBvZiB0aGUgZnJlZSBzb2Z0d2FyZSBkaXN0cmlidXRpb24gc3lzdGVtLCB3aGljaCBpcwppbXBsZW1lbnRlZCBieSBwdWJsaWMgbGljZW5zZSBwcmFjdGljZXMuICBNYW55IHBlb3BsZSBoYXZlIG1hZGUKZ2VuZXJvdXMgY29udHJpYnV0aW9ucyB0byB0aGUgd2lkZSByYW5nZSBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZAp0aHJvdWdoIHRoYXQgc3lzdGVtIGluIHJlbGlhbmNlIG9uIGNvbnNpc3RlbnQgYXBwbGljYXRpb24gb2YgdGhhdApzeXN0ZW07IGl0IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRlIGlmIGhlIG9yIHNoZSBpcyB3aWxsaW5nCnRvIGRpc3RyaWJ1dGUgc29mdHdhcmUgdGhyb3VnaCBhbnkgb3RoZXIgc3lzdGVtIGFuZCBhIGxpY2Vuc2VlIGNhbm5vdAppbXBvc2UgdGhhdCBjaG9pY2UuCgpUaGlzIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8gbWFrZSB0aG9yb3VnaGx5IGNsZWFyIHdoYXQgaXMgYmVsaWV2ZWQgdG8KYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBvZiB0aGlzIExpY2Vuc2UuCgogIDguIElmIHRoZSBkaXN0cmlidXRpb24gYW5kL29yIHVzZSBvZiB0aGUgUHJvZ3JhbSBpcyByZXN0cmljdGVkIGluCmNlcnRhaW4gY291bnRyaWVzIGVpdGhlciBieSBwYXRlbnRzIG9yIGJ5IGNvcHlyaWdodGVkIGludGVyZmFjZXMsIHRoZQpvcmlnaW5hbCBjb3B5cmlnaHQgaG9sZGVyIHdobyBwbGFjZXMgdGhlIFByb2dyYW0gdW5kZXIgdGhpcyBMaWNlbnNlCm1heSBhZGQgYW4gZXhwbGljaXQgZ2VvZ3JhcGhpY2FsIGRpc3RyaWJ1dGlvbiBsaW1pdGF0aW9uIGV4Y2x1ZGluZwp0aG9zZSBjb3VudHJpZXMsIHNvIHRoYXQgZGlzdHJpYnV0aW9uIGlzIHBlcm1pdHRlZCBvbmx5IGluIG9yIGFtb25nCmNvdW50cmllcyBub3QgdGh1cyBleGNsdWRlZC4gIEluIHN1Y2ggY2FzZSwgdGhpcyBMaWNlbnNlIGluY29ycG9yYXRlcwp0aGUgbGltaXRhdGlvbiBhcyBpZiB3cml0dGVuIGluIHRoZSBib2R5IG9mIHRoaXMgTGljZW5zZS4KCiAgOS4gVGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBtYXkgcHVibGlzaCByZXZpc2VkIGFuZC9vciBuZXcgdmVyc2lvbnMKb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsCmJlIHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sIGJ1dCBtYXkgZGlmZmVyIGluIGRldGFpbCB0bwphZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KCkVhY2ggdmVyc2lvbiBpcyBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiAgSWYgdGhlIFByb2dyYW0Kc3BlY2lmaWVzIGEgdmVyc2lvbiBudW1iZXIgb2YgdGhpcyBMaWNlbnNlIHdoaWNoIGFwcGxpZXMgdG8gaXQgYW5kICJhbnkKbGF0ZXIgdmVyc2lvbiIsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucwplaXRoZXIgb2YgdGhhdCB2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgSWYgdGhlIFByb2dyYW0gZG9lcyBub3Qgc3BlY2lmeSBhIHZlcnNpb24gbnVtYmVyIG9mCnRoaXMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbi4KCiAgMTAuIElmIHlvdSB3aXNoIHRvIGluY29ycG9yYXRlIHBhcnRzIG9mIHRoZSBQcm9ncmFtIGludG8gb3RoZXIgZnJlZQpwcm9ncmFtcyB3aG9zZSBkaXN0cmlidXRpb24gY29uZGl0aW9ucyBhcmUgZGlmZmVyZW50LCB3cml0ZSB0byB0aGUgYXV0aG9yCnRvIGFzayBmb3IgcGVybWlzc2lvbi4gIEZvciBzb2Z0d2FyZSB3aGljaCBpcyBjb3B5cmlnaHRlZCBieSB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMKbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLiAgT3VyIGRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMKb2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMgb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBmcmVlIHNvZnR3YXJlIGFuZApvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcgYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTyBXQVJSQU5UWQoKICAxMS4gQkVDQVVTRSBUSEUgUFJPR1JBTSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8gV0FSUkFOVFkKRk9SIFRIRSBQUk9HUkFNLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4gIEVYQ0VQVCBXSEVOCk9USEVSV0lTRSBTVEFURUQgSU4gV1JJVElORyBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EL09SIE9USEVSIFBBUlRJRVMKUFJPVklERSBUSEUgUFJPR1JBTSAiQVMgSVMiIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTRUQKT1IgSU1QTElFRCwgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUwpUTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFIFBST0dSQU0gSVMgV0lUSCBZT1UuICBTSE9VTEQgVEhFClBST0dSQU0gUFJPVkUgREVGRUNUSVZFLCBZT1UgQVNTVU1FIFRIRSBDT1NUIE9GIEFMTCBORUNFU1NBUlkgU0VSVklDSU5HLApSRVBBSVIgT1IgQ09SUkVDVElPTi4KCiAgMTIuIElOIE5PIEVWRU5UIFVOTEVTUyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1JFRUQgVE8gSU4gV1JJVElORwpXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1BWSBNT0RJRlkgQU5EL09SClJFRElTVFJJQlVURSBUSEUgUFJPR1JBTSBBUyBQRVJNSVRURUQgQUJPVkUsIEJFIExJQUJMRSBUTyBZT1UgRk9SIERBTUFHRVMsCklOQ0xVRElORyBBTlkgR0VORVJBTCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORwpPVVQgT0YgVEhFIFVTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRIRSBQUk9HUkFNIChJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEClRPIExPU1MgT0YgREFUQSBPUiBEQVRBIEJFSU5HIFJFTkRFUkVEIElOQUNDVVJBVEUgT1IgTE9TU0VTIFNVU1RBSU5FRCBCWQpZT1UgT1IgVEhJUkQgUEFSVElFUyBPUiBBIEZBSUxVUkUgT0YgVEhFIFBST0dSQU0gVE8gT1BFUkFURSBXSVRIIEFOWSBPVEhFUgpQUk9HUkFNUyksIEVWRU4gSUYgU1VDSCBIT0xERVIgT1IgT1RIRVIgUEFSVFkgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUKUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLgoKICAgICAgICAgICAgICAgICAgICAgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05TCgogICAgICAgICAgICBIb3cgdG8gQXBwbHkgVGhlc2UgVGVybXMgdG8gWW91ciBOZXcgUHJvZ3JhbXMKCiAgSWYgeW91IGRldmVsb3AgYSBuZXcgcHJvZ3JhbSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdApwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgdGhlIGJlc3Qgd2F5IHRvIGFjaGlldmUgdGhpcyBpcyB0byBtYWtlIGl0CmZyZWUgc29mdHdhcmUgd2hpY2ggZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlIHVuZGVyIHRoZXNlIHRlcm1zLgoKICBUbyBkbyBzbywgYXR0YWNoIHRoZSBmb2xsb3dpbmcgbm90aWNlcyB0byB0aGUgcHJvZ3JhbS4gIEl0IGlzIHNhZmVzdAp0byBhdHRhY2ggdGhlbSB0byB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgZmlsZSB0byBtb3N0IGVmZmVjdGl2ZWx5CmNvbnZleSB0aGUgZXhjbHVzaW9uIG9mIHdhcnJhbnR5OyBhbmQgZWFjaCBmaWxlIHNob3VsZCBoYXZlIGF0IGxlYXN0CnRoZSAiY29weXJpZ2h0IiBsaW5lIGFuZCBhIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGZ1bGwgbm90aWNlIGlzIGZvdW5kLgoKICAgIDxvbmUgbGluZSB0byBnaXZlIHRoZSBwcm9ncmFtJ3MgbmFtZSBhbmQgYSBicmllZiBpZGVhIG9mIHdoYXQgaXQgZG9lcy4+CiAgICBDb3B5cmlnaHQgKEMpIDx5ZWFyPiAgPG5hbWUgb2YgYXV0aG9yPgoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwogICAgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKICAgIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCgpBbHNvIGFkZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY29udGFjdCB5b3UgYnkgZWxlY3Ryb25pYyBhbmQgcGFwZXIgbWFpbC4KCklmIHRoZSBwcm9ncmFtIGlzIGludGVyYWN0aXZlLCBtYWtlIGl0IG91dHB1dCBhIHNob3J0IG5vdGljZSBsaWtlIHRoaXMKd2hlbiBpdCBzdGFydHMgaW4gYW4gaW50ZXJhY3RpdmUgbW9kZToKCiAgICBHbm9tb3Zpc2lvbiB2ZXJzaW9uIDY5LCBDb3B5cmlnaHQgKEMpIHllYXIgbmFtZSBvZiBhdXRob3IKICAgIEdub21vdmlzaW9uIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWTsgZm9yIGRldGFpbHMgdHlwZSBgc2hvdyB3Jy4KICAgIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZSwgYW5kIHlvdSBhcmUgd2VsY29tZSB0byByZWRpc3RyaWJ1dGUgaXQKICAgIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9uczsgdHlwZSBgc2hvdyBjJyBmb3IgZGV0YWlscy4KClRoZSBoeXBvdGhldGljYWwgY29tbWFuZHMgYHNob3cgdycgYW5kIGBzaG93IGMnIHNob3VsZCBzaG93IHRoZSBhcHByb3ByaWF0ZQpwYXJ0cyBvZiB0aGUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIE9mIGNvdXJzZSwgdGhlIGNvbW1hbmRzIHlvdSB1c2UgbWF5CmJlIGNhbGxlZCBzb21ldGhpbmcgb3RoZXIgdGhhbiBgc2hvdyB3JyBhbmQgYHNob3cgYyc7IHRoZXkgY291bGQgZXZlbiBiZQptb3VzZS1jbGlja3Mgb3IgbWVudSBpdGVtcy0td2hhdGV2ZXIgc3VpdHMgeW91ciBwcm9ncmFtLgoKWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHlvdXIKc2Nob29sLCBpZiBhbnksIHRvIHNpZ24gYSAiY29weXJpZ2h0IGRpc2NsYWltZXIiIGZvciB0aGUgcHJvZ3JhbSwgaWYKbmVjZXNzYXJ5LiAgSGVyZSBpcyBhIHNhbXBsZTsgYWx0ZXIgdGhlIG5hbWVzOgoKICBZb3lvZHluZSwgSW5jLiwgaGVyZWJ5IGRpc2NsYWltcyBhbGwgY29weXJpZ2h0IGludGVyZXN0IGluIHRoZSBwcm9ncmFtCiAgYEdub21vdmlzaW9uJyAod2hpY2ggbWFrZXMgcGFzc2VzIGF0IGNvbXBpbGVycykgd3JpdHRlbiBieSBKYW1lcyBIYWNrZXIuCgogIDxzaWduYXR1cmUgb2YgVHkgQ29vbj4sIDEgQXByaWwgMTk4OQogIFR5IENvb24sIFByZXNpZGVudCBvZiBWaWNlCgpUaGlzIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGluY29ycG9yYXRpbmcgeW91ciBwcm9ncmFtIGludG8KcHJvcHJpZXRhcnkgcHJvZ3JhbXMuICBJZiB5b3VyIHByb2dyYW0gaXMgYSBzdWJyb3V0aW5lIGxpYnJhcnksIHlvdSBtYXkKY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGggdGhlCmxpYnJhcnkuICBJZiB0aGlzIGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLgo=]]></data>
	</file>
	<file>
	  <filename>/event.Core.ContentPostRender.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KcmV0dXJuOwoKLy8gMC4gIENoZWNrIGNtcyB2ZXJzaW9uCmdsb2JhbCAkQ01TX1ZFUlNJT047CmlmKCB2ZXJzaW9uX2NvbXBhcmUoJENNU19WRVJTSU9OLCcyLjAtYmV0YTEnKSA8IDAgKSB7CiAgLy8gbm90IENNUyAyLjAsIGRvbid0IGdvIGFueSBmdXJ0aGVyLgogIHJldHVybjsKfQoKLy8gMS4gIEdldCB0aGUgY29udGVudF9pZAokY29udGVudF9pZCA9IGNtc191dGlsczo6Z2V0X2N1cnJlbnRfcGFnZWlkKCk7CmlmKCAkY29udGVudF9pZCA8PSAwICkgcmV0dXJuOwoKLy8gMi4gIEdldCB0aGUgY29udGVudCBvYmplY3QKaWYoIGNsYXNzX2V4aXN0cygnQ01TQ29udGVudCcpKQokY29udGVudF9vYmogPSBDbXNDb250ZW50T3BlcmF0aW9uczo6bG9hZF9jb250ZW50X2Zyb21faWQoJGNvbnRlbnRfaWQpOwppZiggIWlzX29iamVjdCgkY29udGVudF9vYmopICkKICB7CiAgICByZXR1cm47CiAgfQoKLy8gMy4gIEdldCB0aGUgcHJvcGVydGllcy4KJGNvbnRlbnRfb2JqLT5sb2FkX3Byb3BlcnRpZXMoKTsKJG1hbXNfZ3JvdXBzID0gJGNvbnRlbnRfb2JqLT5nZXRfcHJvcGVydHlfdmFsdWUoJ21hbXNfZ3JvdXBzJyk7CiRtYW1zX3JlZGlyZWN0ID0gJGNvbnRlbnRfb2JqLT5nZXRfcHJvcGVydHlfdmFsdWUoJ21hbXNfcmVkaXJlY3QnKTsKCi8vIGlmIHRoZSBncm91cHMgbGlzdCBpcyBlbXB0eSwgcmV0dXJuLgppZiggJG1hbXNfZ3JvdXBzID09ICcnICkgcmV0dXJuOwoKLy8gY2hlY2sgdGhpcyB1c2VycyBtZW1iZXIgZ3JvdXBzCiRwYXNzZWQgPSBmYWxzZTsKJHVpZCA9ICR0aGlzLT5Mb2dnZWRJbklkKCk7CmlmKCAkdWlkICkKICB7CiAgICAvLyBnZXQgdGhlIG1lbWJlciBncm91cHMuCiAgICAkdDEgPSAkdGhpcy0+R2V0TWVtYmVyR3JvdXBzKCR1aWQpOwogICAgaWYoIGlzX2FycmF5KCAkdDEgKSApCiAgICAgIHsKCS8vIHVzZXIgaXMgYSBtZW1iZXIgb2YgYXQgbGVhc3Qgb25lIGdyb3VwCgkkbWVtYmVyZ3JvdXBzID0gYXJyYXkoKTsKCWZvcmVhY2goICR0MSBhcyAkcm93ICkKCSAgewoJICAgICRtZW1iZXJncm91cHNbXSA9ICRyb3dbJ2dyb3VwaWQnXTsKCSAgfQoKCS8vIHRlc3QgbWVtYmVyc2hpcC4KCSR0MSA9IGV4cGxvZGUoJywnLCRtYW1zX2dyb3Vwcyk7CglpZiggaW5fYXJyYXkoJHQxLCctMScpICkKCSAgewoJICAgIC8vIGFueSBncm91cCB3aWxsIGRvLgoJICAgICRwYXNzZWQgPSB0cnVlOwoJICB9CgllbHNlCgkgIHsKCSAgICAkdG1wID0gYXJyYXlfaW50ZXJzZWN0KCRtZW1iZXJncm91cHMsJHQyKTsKCSAgICBpZiggaXNfYXJyYXkoJHRtcCkgJiYgY291bnQoJHRtcCkgPiAwICkKCSAgICAgIHsKCQkkcGFzc2VkID0gdHJ1ZTsKCSAgICAgIH0KCSAgfQogICAgICB9CiAgfQoKaWYoICEkcGFzc2VkICkKICB7CiAgICBpZiggJG1hbXNfcmVkaXJlY3QgIT0gLTEgKQogICAgICB7CglyZWRpcmVjdF90b19hbGlhcygkbWFtc19yZWRpcmVjdCk7CiAgICAgIH0KICB9CiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/function.admin_admintab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCd1c2VycycpICkgcmV0dXJuOwovLyBhIGZvcm0gZm9yIHBlcmZvcm1pbmcgdmFyaW91cyBhZG1pbiB0YXNrcwovLyBsaWtlIHJlc2V0dGluZyBleHBpcnkgZGF0ZXMsIGV0YywgZXRjLgoKJHNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCAkaWQsICdkb19hZG1pbnRhc2tzJywgJHJldHVybmlkLCAncG9zdCcsICdtdWx0aXBhcnQvZm9ybS1kYXRhJykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2hpZGRlbicsICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsJ2FjdGl2ZV90YWInLCdhZG1pbicpKTsKJHNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCiRzbWFydHktPmFzc2lnbignbGVnZW5kX3VzZXJoaXN0b3J5bWFpbnRlbmFuY2UnLCR0aGlzLT5MYW5nKCd0aXRsZV91c2VyaGlzdG9yeW1haW50ZW5hbmNlJykpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9leHBvcnR1c2VyaGlzdG9yeScsJHRoaXMtPkxhbmcoJ3Byb21wdF9leHBvcnR1c2VyaGlzdG9yeScpKTsKJGV4cG9ydGxpc3QgPSBhcnJheSgpOwokZXhwb3J0bGlzdFskdGhpcy0+TGFuZygnZGF0ZV9hbGxyZWNvcmRzJyldID0gLTE7CiRleHBvcnRsaXN0WyR0aGlzLT5MYW5nKCdkYXRlX29uZWhvdXJvbGQnKV0gPSAnMWgnOwokZXhwb3J0bGlzdFskdGhpcy0+TGFuZygnZGF0ZV9zaXhob3Vyb2xkJyldID0gJzZoJzsKJGV4cG9ydGxpc3RbJHRoaXMtPkxhbmcoJ2RhdGVfdHdlbHZlaG91cm9sZCcpXSA9ICcxMmgnOwokZXhwb3J0bGlzdFskdGhpcy0+TGFuZygnZGF0ZV9vbmVkYXlvbGQnKV0gPSAnMWgnOwokZXhwb3J0bGlzdFskdGhpcy0+TGFuZygnZGF0ZV9vbmV3ZWVrb2xkJyldID0gJzF3JzsKJGV4cG9ydGxpc3RbJHRoaXMtPkxhbmcoJ2RhdGVfdHdvd2Vla3NvbGQnKV0gPSAnMncnOwokZXhwb3J0bGlzdFskdGhpcy0+TGFuZygnZGF0ZV9vbmVtb250aG9sZCcpXSA9ICcxbSc7CiRleHBvcnRsaXN0WyR0aGlzLT5MYW5nKCdkYXRlX3RocmVlbW9udGhzb2xkJyldID0gJzNtJzsKJGV4cG9ydGxpc3RbJHRoaXMtPkxhbmcoJ2RhdGVfc2l4bW9udGhzb2xkJyldID0gJzZtJzsKJGV4cG9ydGxpc3RbJHRoaXMtPkxhbmcoJ2RhdGVfb25leWVhcm9sZCcpXSA9ICcxeSc7CiRzbWFydHktPmFzc2lnbignaW5wdXRfZXhwb3J0dXNlcmhpc3RvcnknLCR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnaW5wdXRfZXhwb3J0dXNlcmhpc3RvcnknLCRleHBvcnRsaXN0KSk7CiRzbWFydHktPmFzc2lnbignYnV0dG9uX2V4cG9ydHVzZXJoaXN0b3J5JywkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdidXR0b25fZXhwb3J0dXNlcmhpc3RvcnknLCR0aGlzLT5MYW5nKCdleHBvcnQnKSkpOwoKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfY2xlYXJ1c2VyaGlzdG9yeScsJHRoaXMtPkxhbmcoJ3Byb21wdF9jbGVhcnVzZXJoaXN0b3J5JykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2NsZWFydXNlcmhpc3RvcnknLCR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnaW5wdXRfY2xlYXJ1c2VyaGlzdG9yeScsJGV4cG9ydGxpc3QpKTsKJHNtYXJ0eS0+YXNzaWduKCdidXR0b25fY2xlYXJ1c2VyaGlzdG9yeScsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnYnV0dG9uX2NsZWFydXNlcmhpc3RvcnknLCR0aGlzLT5MYW5nKCdjbGVhcicpKSk7CgovLyBQcm9jZXNzIHRoZSB0ZW1wbGF0ZQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWludGFza3MudHBsJyk7CgovLyBFT0YKPz4=]]></data>
	</file>
	<file>
	  <filename>/function.admin_authtab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIHJldHVybjsKaWYoICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpICkgcmV0dXJuOwoKJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLCR0aGlzLT5YVENyZWF0ZUZvcm1TdGFydCgkaWQsJ2FkbWluX3NldF9hdXRoJykpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKJHNtYXJ0eS0+YXNzaWduKCdzdXBwb3J0X2xvc3R1bicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3N1cHBvcnRfbG9zdHVuJywxKSk7CiRzbWFydHktPmFzc2lnbignc3VwcG9ydF9sb3N0cHcnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzdXBwb3J0X2xvc3RwdycsMSkpOwoKJHNtYXJ0eS0+YXNzaWduKCdyZXF1aXJlX29uZWdyb3VwJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgncmVxdWlyZV9vbmVncm91cCcpKTsKJGdyb3VwczEgPSAkdGhpcy0+R2V0R3JvdXBMaXN0KCk7CiRncm91cHMgPSBhcnJheV9tZXJnZShbIk5vbmUiID0+IC0xXSwgJGdyb3VwczEgKTsKJHNtYXJ0eS0+YXNzaWduKCdncm91cGxpc3QnLGFycmF5X2ZsaXAoJGdyb3VwcykpOwokc21hcnR5LT5hc3NpZ24oJ2RlZmF1bHRfZ3JvdXAnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZWZhdWx0X2dyb3VwJykpOwokc21hcnR5LT5hc3NpZ24oJ3B3ZmxkbGVuJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFzc3dvcmRmbGRsZW5ndGgnKSk7CiRzbWFydHktPmFzc2lnbignbWlucHdsZW4nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtaW5fcGFzc3dvcmRsZW5ndGgnKSk7CiRzbWFydHktPmFzc2lnbignbWF4cHdsZW4nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXhfcGFzc3dvcmRsZW5ndGgnKSk7CiRzbWFydHktPmFzc2lnbignZW5oYW5jZWRwdycsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2VuaGFuY2VkX3Bhc3N3b3JkJykpOwokc21hcnR5LT5hc3NpZ24oJ3B3cmVxdWlyZWRjaGFycycsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Bhc3N3b3JkX3JlcXVpcmVkY2hhcnMnKSk7Cgokc21hcnR5LT5hc3NpZ24oJ3VuZmxkbGVuJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlcm5hbWVmbGRsZW5ndGgnKSk7CiRzbWFydHktPmFzc2lnbignbWludW5sZW4nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtaW5fdXNlcm5hbWVsZW5ndGgnKSk7CiRzbWFydHktPmFzc2lnbignbWF4dW5sZW4nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXhfdXNlcm5hbWVsZW5ndGgnKSk7CiRzbWFydHktPmFzc2lnbignY29va2llX2tlZXBhbGl2ZScsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Nvb2tpZV9rZWVwYWxpdmUnLDApKTsKJHNtYXJ0eS0+YXNzaWduKCd1c2VybmFtZV9pc19lbWFpbCcsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZXJuYW1lX2lzX2VtYWlsJykpOwokc3RyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Nvb2tpZW5hbWUnKTsKaWYoICEkc3RyICkgJHN0ciA9ICcnOwokc21hcnR5LT5hc3NpZ24oJ3hjb29raWVuYW1lJywkc3RyKTsKJHNtYXJ0eS0+YXNzaWduKCdhbGxvd19jaGFuZ2V1c2VybmFtZScsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2FsbG93X2NoYW5nZXVzZXJuYW1lJykpOwokc21hcnR5LT5hc3NpZ24oJ2FsbG93X2R1cGxpY2F0ZV9lbWFpbHMnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhbGxvd19kdXBsaWNhdGVfZW1haWxzJykpOwokc21hcnR5LT5hc3NpZ24oJ2FsbG93X2R1cGxpY2F0ZV9yZW1pbmRlcnMnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhbGxvd19kdXBsaWNhdGVfcmVtaW5kZXJzJykpOwoKJHNtYXJ0eS0+YXNzaWduKCdzaWduaW5fYnV0dG9uJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2lnbmluX2J1dHRvbicsJHRoaXMtPkxhbmcoJ2xvZ2luJykpKTsKJHNtYXJ0eS0+YXNzaWduKCdyZXF1aXJlZF9maWVsZF9tYXJrZXInLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdyZXF1aXJlZF9maWVsZF9tYXJrZXInLCcqJykpOwokc21hcnR5LT5hc3NpZ24oJ3JlcXVpcmVkX2ZpZWxkX2NvbG9yJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgncmVxdWlyZWRfZmllbGRfY29sb3InLCdibHVlJykpOwokc21hcnR5LT5hc3NpZ24oJ2hpZGRlbl9maWVsZF9tYXJrZXInLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdoaWRkZW5fZmllbGRfbWFya2VyJywnISEnKSk7CiRzbWFydHktPmFzc2lnbignaGlkZGVuX2ZpZWxkX2NvbG9yJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaGlkZGVuX2ZpZWxkX2NvbG9yJywnZ3JlZW4nKSk7Cgokc21hcnR5LT5hc3NpZ24oJ3NlY3VyZV9maWVsZF9tYXJrZXInLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzZWN1cmVfZmllbGRfbWFya2VyJywnXl4nKSk7CiRzbWFydHktPmFzc2lnbignc2VjdXJlX2ZpZWxkX2NvbG9yJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2VjdXJlX2ZpZWxkX2NvbG9yJywneWVsbG93JykpOwoKJHNtYXJ0eS0+YXNzaWduKCdwYWdlaWRmb3Jnb3RwYXNzd2QnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwYWdlaWRmb3Jnb3RwYXNzd2QnKSk7CiRzbWFydHktPmFzc2lnbigncGFnZWlkX2NoYW5nZXNldHRpbmdzJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFnZWlkX2NoYW5nZXNldHRpbmdzJykpOwokc21hcnR5LT5hc3NpZ24oJ3BhZ2VpZF9sb2dpbicsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BhZ2VpZF9sb2dpbicpKTsKJHNtYXJ0eS0+YXNzaWduKCdwYWdlaWRfbG9nb3V0JywkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFnZWlkX2xvZ291dCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdwYWdlaWRfb252ZXJpZnknLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwYWdlaWRfb252ZXJpZnknKSk7CiRzbWFydHktPmFzc2lnbigncGFnZWlkX2FmdGVydmVyaWZ5JywkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFnZWlkX2FmdGVydmVyaWZ5JykpOwokc21hcnR5LT5hc3NpZ24oJ3BhZ2VpZF9hZnRlcmNoYW5nZXNldHRpbmdzJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGFnZWlkX2FmdGVyY2hhbmdlc2V0dGluZ3MnKSk7CiRzbWFydHktPmFzc2lnbignbG9naW5fYWZ0ZXJfdmVyaWZ5JywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbG9naW5fYWZ0ZXJfdmVyaWZ5JykgKTsKCi8vIEdldCB0aGUgbnVtYmVyIG9mIHVzZXJzIGluc3RhbGxlZCBpbiBGRVUuCiRxdWVyeSA9ICdTRUxFQ1QgY291bnQoaWQpIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX3VzZXJzJzsKJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKJG51c2VycyA9ICRkYi0+R2V0T25lKCRxdWVyeSk7CiRzbWFydHktPmFzc2lnbigndG90YWxfdXNlcl9jb3VudCcsJG51c2Vycyk7CmlmKCAhJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZV91c2Vyc2FsdCcpICkgJHNtYXJ0eS0+YXNzaWduKCdwd3NhbHQnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwd3NhbHQnKSk7CgokY2dlY29tID0geHRfdXRpbHM6OmdldF9tb2R1bGUoJ0NHRWNvbW1lcmNlQmFzZScpOwokbWFtcyA9IHh0X3V0aWxzOjpnZXRfbW9kdWxlKCdNQU1TUmVnaXN0cmF0aW9uJyk7CmlmKCAkY2dlY29tICYmICRtYW1zICYmICRtYW1zLT5HZXRQcmVmZXJlbmNlKCdhbGxvd3BhaWRyZWdpc3RyYXRpb24nKSApCiAgewogICAgJG9wdHMgPSBhcnJheSgpOwogICAgJG9wdHNbJ25vbmUnXSA9ICR0aGlzLT5MYW5nKCdub25lJyk7CiAgICAkb3B0c1snZGVsZXRlJ10gPSAkdGhpcy0+TGFuZygnZGVsZXRlX3VzZXInKTsKICAgICRvcHRzWydkaXNhYmxlJ10gPSAkdGhpcy0+TGFuZygnZGlzYWJsZV91c2VyMicpOwogICAgJG9wdHNbJ2V4cGlyZSddID0gJHRoaXMtPkxhbmcoJ2V4cGlyZV91c2VyJyk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2Vjb21tZXJjZV9hY3Rpb25zJywkb3B0cyk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2Vjb21tX29yZGVyY2FuY2VsbGVkJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZWNvbW1fb3JkZXJjYW5jZWxsZWQnLCdub25lJykpOwogICAgJHNtYXJ0eS0+YXNzaWduKCdlY29tbV9vcmRlcmRlbGV0ZWQnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdlY29tbV9vcmRlcmRlbGV0ZWQnLCdub25lJykpOwogICAgJHNtYXJ0eS0+YXNzaWduKCdlY29tbV9wYWlkcmVnaXN0cmF0aW9uJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZWNvbW1fcGFpZHJlZ2lzdHJhdGlvbicsMCkpOwogIH0KCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5fYXV0aHRhYi50cGwnKTsKIwojIEVPRgojCg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_clearuserhistory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKLy8gR2V0IHRoZSBzdGFydCBkYXRlCiRkYXRlID0gJy0xJzsKc3dpdGNoKCAkcGFyYW1zWydpbnB1dF9jbGVhcnVzZXJoaXN0b3J5J10gKSB7CmNhc2UgJzFoJzoKICAgICRkYXRlID0gc3RydG90aW1lKCcxIGhvdXIgYWdvJyk7CiAgICBicmVhazsKY2FzZSAnNmgnOgogICAgJGRhdGUgPSBzdHJ0b3RpbWUoJzYgaG91cnMgYWdvJyk7CiAgICBicmVhazsKY2FzZSAnMTJoJzoKICAgICRkYXRlID0gc3RydG90aW1lKCcxMiBob3VycyBhZ28nKTsKICAgIGJyZWFrOwpjYXNlICcxZCc6CiAgICAkZGF0ZSA9IHN0cnRvdGltZSgnMSBkYXkgYWdvJyk7CiAgICBicmVhazsKY2FzZSAnMXcnOgogICAgJGRhdGUgPSBzdHJ0b3RpbWUoJzEgd2VlayBhZ28nKTsKICAgIGJyZWFrOwpjYXNlICcydyc6CiAgICAkZGF0ZSA9IHN0cnRvdGltZSgnMiB3ZWVrcyBhZ28nKTsKICAgIGJyZWFrOwpjYXNlICcxbSc6CiAgICAkZGF0ZSA9IHN0cnRvdGltZSgnMSBtb250aCBhZ28nKTsKICAgIGJyZWFrOwpjYXNlICczbSc6CiAgICAkZGF0ZSA9IHN0cnRvdGltZSgnMyBtb250aHMgYWdvJyk7CiAgICBicmVhazsKY2FzZSAnNm0nOgogICAgJGRhdGUgPSBzdHJ0b3RpbWUoJzYgbW9udGhzIGFnbycpOwogICAgYnJlYWs7CmNhc2UgJzF5JzoKICAgICRkYXRlID0gc3RydG90aW1lKCcxIHllYXIgYWdvJyk7CiAgICBicmVhazsKfQoKJGRiID0gXHh0X3V0aWxzOjpnZXRfZGIoKTsKdHJ5IHsKICAgICRkYi0+QmVnaW5UcmFucygpOwogICAgJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfbWFtc19oaXN0b3J5IjsKICAgICRwYXJtcyA9IGFycmF5KCk7CiAgICBpZiggJGRhdGUgIT0gLTEgKSAgewogICAgICAgICRxdWVyeSAuPSAiIFdIRVJFIHJlZmRhdGUgPCA/IjsKICAgICAgICAkcGFybXNbXSA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCgkZGF0ZSksIiciKTsKICAgIH0KCiAgICAkZGItPkV4ZWN1dGUoICRxdWVyeSwgJHBhcm1zICk7CiAgICAkZGItPkNvbW1pdFRyYW5zKCk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigkaWQsJ2FkbWluJyk7Cn0KY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAkZGItPlJvbGxiYWNrVHJhbnMoKTsKICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ1Byb2JsZW0gY2xlYXJpbmcgdXNlciBoaXN0b3J5Jyk7CiAgICBkZWJ1Z190b19sb2coX19NRVRIT0RfXyk7CiAgICBkZWJ1Z190b19sb2coJGUtPkdldE1lc3NhZ2UoKSk7Cn0KLy8gRU9GCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_exportuserhistory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKLy8gR2V0IHRoZSBzdGFydCBkYXRlCiRkYXRlID0gJy0xJzsKc3dpdGNoKCAkcGFyYW1zWydpbnB1dF9leHBvcnR1c2VyaGlzdG9yeSddICkKICB7CiAgY2FzZSAnMWgnOgogICAgJGRhdGUgPSBzdHJ0b3RpbWUoJzEgaG91ciBhZ28nKTsKICAgIGJyZWFrOwogIGNhc2UgJzZoJzoKICAgICRkYXRlID0gc3RydG90aW1lKCc2IGhvdXJzIGFnbycpOwogICAgYnJlYWs7CiAgY2FzZSAnMTJoJzoKICAgICRkYXRlID0gc3RydG90aW1lKCcxMiBob3VycyBhZ28nKTsKICAgIGJyZWFrOwogIGNhc2UgJzFkJzoKICAgICRkYXRlID0gc3RydG90aW1lKCcxIGRheSBhZ28nKTsKICAgIGJyZWFrOwogIGNhc2UgJzF3JzoKICAgICRkYXRlID0gc3RydG90aW1lKCcxIHdlZWsgYWdvJyk7CiAgICBicmVhazsKICBjYXNlICcydyc6CiAgICAkZGF0ZSA9IHN0cnRvdGltZSgnMiB3ZWVrcyBhZ28nKTsKICAgIGJyZWFrOwogIGNhc2UgJzFtJzoKICAgICRkYXRlID0gc3RydG90aW1lKCcxIG1vbnRoIGFnbycpOwogICAgYnJlYWs7CiAgY2FzZSAnM20nOgogICAgJGRhdGUgPSBzdHJ0b3RpbWUoJzMgbW9udGhzIGFnbycpOwogICAgYnJlYWs7CiAgY2FzZSAnNm0nOgogICAgJGRhdGUgPSBzdHJ0b3RpbWUoJzYgbW9udGhzIGFnbycpOwogICAgYnJlYWs7CiAgY2FzZSAnMXknOgogICAgJGRhdGUgPSBzdHJ0b3RpbWUoJzEgeWVhciBhZ28nKTsKICAgIGJyZWFrOwogIH0KCiR1c2VyaW5mbyA9IGFycmF5KCk7CgovLyB3ZSB3YW50IHRvIGV4cG9ydCBhIGNzdiBmaWxlIGRvIHdlCmhlYWRlcignQ29udGVudC1EZXNjcmlwdGlvbjogRmlsZSBUcmFuc2ZlcicpOwpoZWFkZXIoJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vZm9yY2UtZG93bmxvYWQnKTsKaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT11c2VyaGlzdG9yeS5jc3YnKTsKd2hpbGUoQG9iX2VuZF9jbGVhbigpKTsKCiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKJGRvbmUgPSAwOwokc3RhcnQgPSAwOwokbnVtID0gMjsgLy8gdG9kbywgc2hvdWxkIGJlIGEgcHJlZmVyZW5jZQokcWJhc2UgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX21hbXNfaGlzdG9yeSAiOwokcGFybXMgPSBhcnJheSgpOwppZiggJGRhdGUgIT0gLTEgKQogIHsKICAgICRxYmFzZSAuPSAnIFdIRVJFIHJlZmRhdGUgPCA/JzsKICAgICRwYXJtc1tdID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKCRkYXRlKSwiJyIpOwogIH0KCndoaWxlKCAkZG9uZSA9PSAwICkKICB7CiAgICAkcXVlcnkgPSAkcWJhc2UgLiAiIExJTUlUICRzdGFydCwkbnVtIjsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHF1ZXJ5LCAkcGFybXMgKTsKICAgIGlmKCAhJGRicmVzdWx0IHx8ICgkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPT0gMCkgKQogICAgICB7CgkkZG9uZSA9IDE7CglicmVhazsKICAgICAgfQoKICAgICRvdXRwdXQgPSAnJzsKICAgIHdoaWxlKCAkZGJyZXN1bHQgJiYgISRkYnJlc3VsdC0+RU9GICkKICAgICAgewoJJGZpZWxkcyA9ICRkYnJlc3VsdC0+ZmllbGRzOwoJCgkkdWlkID0gJGZpZWxkc1sndXNlcmlkJ107CglpZiggJHVpZCA+IDAgKQoJICB7CgkgICAgaWYoICFpc3NldCggJHVzZXJpbmZvWyR1aWRdICkgKQoJICAgICAgewoJCSRyZXMgPSAkdGhpcy0+R2V0VXNlckluZm8oJHVpZCk7CgkJJHVzZXJpbmZvWyR1aWRdID0gJHJlc1sxXTsKCSAgICAgIH0KCSAgICAkdXNlcm5hbWUgPSAkdXNlcmluZm9bJHVpZF1bJ3VzZXJuYW1lJ107CgkgICAgJGZpZWxkc1tdID0gJHVzZXJpbmZvWyR1aWRdWyd1c2VybmFtZSddOwoJICB9CgllbHNlCgkgIHsKCSAgICAkZmllbGRzW10gPSAndW5rbm93bic7CgkgIH0KCgkkb3V0cHV0IC49IGltcGxvZGUoJywnLCRmaWVsZHMpLiJcbiI7CgoJLy8gY2hlYXQsIGNvbnZlcnQgdXNlcmlkIHRvIHVzZXJuYW1lCgkkZGJyZXN1bHQtPk1vdmVOZXh0KCk7CiAgICAgIH0KICAgIGVjaG8gJG91dHB1dDsKICAgICRzdGFydCArPSAkbnVtOwogIH0KZXhpdCgpOwoKCi8vIEVPRgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_groupstab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KaWYoISR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdncm91cHMnKSl7cmV0dXJuO30KCiRncm91cHMgICA9ICR0aGlzLT5HZXRHcm91cExpc3RGdWxsKFRSVUUpOwoKJHJvd2NsYXNzID0gJ3JvdzEnOwoKJHRwbCAgICAgICAgID0gJHRoaXMtPkNyZWF0ZVNtYXJ0eVRlbXBsYXRlKCdncm91cGxpc3QudHBsJyk7CiR0aGVtZU9iamVjdCA9IGNtc191dGlsczo6Z2V0X3RoZW1lX29iamVjdCgpOwokcHJvcGRlZm5zICAgPSAkdGhpcy0+R2V0UHJvcGVydHlEZWZucygpOwokbmRlZnMgICAgICAgPSAoaXNfYXJyYXkoJHByb3BkZWZucykgJiYgY291bnQoJHByb3BkZWZucykpID8gY291bnQoJHByb3BkZWZucykgOiAwOwokcm93YXJyYXkgICAgPSBbXTsKCiR0cGwtPmFzc2lnbignZ3JvdXBzZm91bmQnLCAkdGhpcy0+TGFuZygnZ3JvdXBzZm91bmQnKSk7CiR0cGwtPmFzc2lnbignbnByb3BzJywgJG5kZWZzKTsKJHRwbC0+YXNzaWduKCdpZHRleHQnLCAkdGhpcy0+TGFuZygnaWQnKSk7CiR0cGwtPmFzc2lnbignbmFtZXRleHQnLCAkdGhpcy0+TGFuZygnbmFtZScpKTsKJHRwbC0+YXNzaWduKCdkZXNjdGV4dCcsICR0aGlzLT5MYW5nKCdkZXNjcmlwdGlvbicpKTsKCmZvcmVhY2goJGdyb3VwcyBhcyAkb25lZ3JvdXApCnsKICBpZigkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnbGlzdGdyb3VwcycpKQogIHsKICAgICRvbmVyb3cgICAgICAgICA9IG5ldyBzdGRDbGFzcygpOwogICAgJG9uZXJvdy0+aWQgICAgID0gJG9uZWdyb3VwWydpZCddOwogICAgJG9uZXJvdy0+bmFtZSAgID0gJHRoaXMtPkNyZWF0ZUxpbmsoCiAgICAgICRpZCwgJ2FkZGdyb3VwJywgJHJldHVybmlkLCAkb25lZ3JvdXBbJ2dyb3VwbmFtZSddLCBhcnJheSgnZ3JvdXBfaWQnID0+ICRvbmVncm91cFsnaWQnXSkKICAgICk7CiAgICAkb25lcm93LT5kZXNjICAgPSAkb25lZ3JvdXBbJ2dyb3VwZGVzYyddOwogICAgJG9uZXJvdy0+bnVzZXJzID0gJyc7CiAgICAKICAgIGlmKGlzc2V0KCRvbmVncm91cFsnY291bnQnXSkpIHsgJG9uZXJvdy0+bnVzZXJzID0gJG9uZWdyb3VwWydjb3VudCddOyB9CiAgICAKICAgICRvbmVyb3ctPnJvd2NsYXNzID0gJHJvd2NsYXNzOwogICAgCiAgICAvL2lmKCR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdlZGl0Z3JvdXBzJykgJiYgJG5kZWZzKQogICAgaWYoJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ2VkaXRncm91cHMnKSkKICAgIHsKICAgICAgJG9uZXJvdy0+ZWRpdGxpbmsgICA9CiAgICAgICAgJHRoaXMtPkNyZWF0ZUxpbmsoCiAgICAgICAgICAkaWQsICdhZGRncm91cCcsICRyZXR1cm5pZCwKICAgICAgICAgICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCAkdGhpcy0+TGFuZygnZWRpdCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksCiAgICAgICAgICBbJ2dyb3VwX2lkJyA9PiAkb25lZ3JvdXBbJ2lkJ11dCiAgICAgICAgKTsKICAgICAgJG9uZXJvdy0+ZXhwb3J0bGluayA9CiAgICAgICAgJHRoaXMtPkNyZWF0ZUxpbmsoCiAgICAgICAgICAkaWQsICdhZG1pbl9leHBvcnRncm91cCcsICRyZXR1cm5pZCwKICAgICAgICAgICc8aW1nIHNyYz0iJyAuICR0aGlzLT5HZXRNb2R1bGVVUkxQYXRoKCkgLiAnL2ljb25zL3htbF9yc3MuZ2lmIiBhbHQ9InhtbCIvPicsCiAgICAgICAgICBhcnJheSgKICAgICAgICAgICAgJ2dyb3VwX2lkJyAgICAgICA9PiAkb25lZ3JvdXBbJ2lkJ10sCiAgICAgICAgICAgICdkaXNhYmxlX2J1ZmZlcicgPT4gMSwKICAgICAgICAgICAgJ2Rpc2FibGVfdGhlbWUnICA9PiAxCiAgICAgICAgICApLAogICAgICAgICAgJycsIEZBTFNFLCBGQUxTRSwgJ2NsYXNzPSJzeXN0ZW1pY29uIiB0aXRsZT0iJyAuICR0aGlzLT5MYW5nKCd0aXRsZV9yc3NleHBvcnQnKSAuICciJwogICAgICAgICk7CiAgICB9CiAgICBpZigkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygncmVtb3ZlZ3JvdXBzJykgJiYgMCA9PSAkb25lcm93LT5udXNlcnMpCiAgICB7CiAgICAgICRvbmVyb3ctPmRlbGV0ZWxpbmsgPQogICAgICAgICR0aGlzLT5DcmVhdGVMaW5rKAogICAgICAgICAgJGlkLCAnZG9fZGVsZXRlZ3JvdXAnLCAkcmV0dXJuaWQsCiAgICAgICAgICAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCAkdGhpcy0+TGFuZygnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwKICAgICAgICAgIFsnZ3JvdXBfaWQnID0+ICRvbmVncm91cFsnaWQnXV0sCiAgICAgICAgICAkdGhpcy0+TGFuZygnYXJleW91c3VyZV9kZWxldGVncm91cCcpCiAgICAgICAgKTsKICAgIH0KICAgIAogICAgJHJvd2FycmF5W10gPSAkb25lcm93OwogICAgJHJvd2NsYXNzID09ICdyb3cxJyA/ICRyb3djbGFzcyA9ICdyb3cyJyA6ICRyb3djbGFzcyA9ICdyb3cxJzsKICB9Cn0KICAKJHRwbC0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKJHRwbC0+YXNzaWduKCdpdGVtcycsICRyb3dhcnJheSk7CiR0cGwtPmFzc2lnbignZ3JvdXBzZm91bmQnLCAkdGhpcy0+TGFuZygnZ3JvdXBzZm91bmQnKSk7CgoKaWYoJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ2FkZGdyb3VwJykpCnsKICAkdHBsLT5hc3NpZ24oJ3Byb3Bjb3VudCcsIGNvdW50KCRwcm9wZGVmbnMpKTsKICAvL2lmKGlzX2FycmF5KCRwcm9wZGVmbnMpICYmIGNvdW50KCRwcm9wZGVmbnMpID4gMCkKICBpZihpc19hcnJheSgkcHJvcGRlZm5zKSkKICB7CiAgICAkdHBsLT5hc3NpZ24oCiAgICAgICdhZGRncm91cGxpbmsnLAogICAgICAkdGhpcy0+Q3JlYXRlTGluaygKICAgICAgICAkaWQsICdhZGRncm91cCcsICRyZXR1cm5pZCwKICAgICAgICAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnLCAkdGhpcy0+TGFuZygnYWRkZ3JvdXAnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpCiAgICAgICkgLiAnICcgLgogICAgICAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZGRncm91cCcsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2FkZGdyb3VwJykpCiAgICApOwogIH0KICAKICAkdHBsLT5hc3NpZ24oCiAgICAnaW1wb3J0bGluaycsCiAgICAkdGhpcy0+Q3JlYXRlTGluaygKICAgICAgJGlkLCAnYWRtaW5faW1wb3J0Z3JvdXAnLCAkcmV0dXJuaWQsCiAgICAgICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vaW1wb3J0LmdpZicsICR0aGlzLT5MYW5nKCdpbXBvcnRncm91cCcpLCAnJywgJycsICdzeXN0ZW1pY29uJykKICAgICkgLiAnICcgLgogICAgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5faW1wb3J0Z3JvdXAnLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCdpbXBvcnRncm91cCcpKQogICk7Cn0KCiR0cGwtPmRpc3BsYXkoKTsKCi8vIEVPRgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_prefstab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKJG1vZHMgICAgID0gXE1vZHVsZU9wZXJhdGlvbnM6OmdldF9pbnN0YW5jZSgpLT5HZXRJbnN0YWxsZWRNb2R1bGVzKCk7CiRoYXZlX2ZldSA9IGluX2FycmF5KCdGcm9udEVuZFVzZXJzJywgJG1vZHMpOwokc21hcnR5LT5hc3NpZ24oJ2hhdmVfZmV1JywgJGhhdmVfZmV1KTsKCi8vIGZpbGwgb3V0IHRoZSB0ZW1wbGF0ZQokc21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCggJGlkLCAnZG9fc2V0cHJlZnMnKSk7CgokbW9udGhzID0gYXJyYXkoKTsKZm9yKCAkaSA9IDUyMDsgJGkgPiAwOyAkaS0tICkgewogICAgJG1vbnRoc1skaV0gPSAkaTsKfQoKJHNtYXJ0eS0+YXNzaWduKCdhdXRvX2NyZWF0ZV91bmtub3duJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYXV0b19jcmVhdGVfdW5rbm93bicsMCkpOwoKJGF1dGhfbW9kdWxlcyA9IG1vZHVsZV9oZWxwZXI6OmdldF9tb2R1bGVzX3dpdGhfbWV0aG9kKCdHZXRNQU1TQXV0aENvbnN1bWVyJyk7CmlmKCAhaXNfYXJyYXkoJGF1dGhfbW9kdWxlcykgKSAkYXV0aF9tb2R1bGVzID0gW107CiRhdXRoX21vZHVsZXMgPSB4dF9hcnJheTo6aGFzaF9wcmVwZW5kKCRhdXRoX21vZHVsZXMsJ19fQlVJTFRJTl9fJywkdGhpcy0+TGFuZygnYXV0aF9idWlsdGluJykpOwokc21hcnR5LT5hc3NpZ24oJ2F1dGhfbW9kdWxlcycsJGF1dGhfbW9kdWxlcyk7CiRzbWFydHktPmFzc2lnbignYXV0aF9tb2R1bGUnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhdXRoX21vZHVsZScsJ19fQlVJTFRJTl9fJykpOwoKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9yYW5kb211c2VybmFtZScsCgkJXE1BTVNcUlJVdGlsczo6bXlDcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ2lucHV0X3JhbmRvbXVzZXJuYW1lJywgMSwKCQkJCQkgICAgICAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZV9yYW5kb211c2VybmFtZScsMCkpKTsKCiRzbWFydHktPmFzc2lnbignaW5wdXRfZXhwaXJlYWdlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ2lucHV0X2V4cGlyZWFnZScsJG1vbnRocywtMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2V4cGlyZWFnZV9tb250aHMnLDUyMCkpKTsKCiRzbWFydHktPmFzc2lnbigncHJvbXB0X3Nlc3Npb250aW1lb3V0JywgJHRoaXMtPkxhbmcoJ3Byb21wdF9zZXNzaW9udGltZW91dCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9zZXNzaW9udGltZW91dCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdpbnB1dF9zZXNzaW9udGltZW91dCcsCgkJCQkgICAgICAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZXJfc2Vzc2lvbl9leHBpcmVzJyksIDYsIDYgKSk7CgoKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfbWFtc19zcGVjaWZpY19wZXJtaXNzaW9ucycsCgkJJHRoaXMtPkxhbmcoJ3Byb21wdF9tYW1zX3NwZWNpZmljX3Blcm1pc3Npb25zJykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X21hbXNfc3BlY2lmaWNfcGVybWlzc2lvbnMnLAoJCVxNQU1TXFJSVXRpbHM6Om15Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdpbnB1dF9tYW1zX3NwZWNpZmljX3Blcm1pc3Npb25zJywgMSwKCQkJCQkgICAgICAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21hbXNfc3BlY2lmaWNfcGVybWlzc2lvbnMnKSkpOwokc21hcnR5LT5hc3NpZ24oJ2luZm9fbWFtc19zcGVjaWZpY19wZXJtaXNzaW9ucycsICR0aGlzLT5MYW5nKCdpbmZvX21hbXNfc3BlY2lmaWNfcGVybWlzc2lvbnMnKSk7CgoKCiRzbWFydHktPmFzc2lnbignc3VibWl0JywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQgKCRpZCwgJ3N1Ym1pdCcsCgkJCQkJICAkdGhpcy0+TGFuZygnc3VibWl0JyksJycsJycsCgkJCQkJICAkdGhpcy0+TGFuZygnY29uZmlybV9zdWJtaXRwcmVmcycpKSk7CiRzbWFydHktPmFzc2lnbiAoJ2NhbmNlbCcsCgkJICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCAoJGlkLCAnY2FuY2VsJywKCQkJCQkgICAkdGhpcy0+TGFuZygnY2FuY2VsJykpKTsKCiRzbWFydHktPmFzc2lnbigncHJvbXB0X2FsbG93X3JlcGVhdGVkX2xvZ2lucycsCgkJJHRoaXMtPkxhbmcoJ3Byb21wdF9hbGxvd19yZXBlYXRlZF9sb2dpbnMnKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfYWxsb3dfcmVwZWF0ZWRfbG9naW5zJywKCQlcTUFNU1xSUlV0aWxzOjpteUNyZWF0ZUlucHV0Q2hlY2tib3goICRpZCwgJ2lucHV0X2FsbG93X3JlcGVhdGVkX2xvZ2lucycsIDEsCgkJCQkJCSR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhbGxvd19yZXBlYXRlZF9sb2dpbnMnKSkpOwoKCiRzbWFydHktPmFzc2lnbigncHJvbXB0X2ltYWdlX2Rlc3RpbmF0aW9uX3BhdGgnLCR0aGlzLT5MYW5nKCdwcm9tcHRfaW1hZ2VfZGVzdGluYXRpb25fcGF0aCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9pbWFnZV9kZXN0aW5hdGlvbl9wYXRoJywKCQkJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdpbnB1dF9pbWFnZV9kZXN0aW5hdGlvbl9wYXRoJywKCQkJCQkJCQkJICAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ltYWdlX2Rlc3RpbmF0aW9uX3BhdGgnKSw4MCkpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9hbGxvd2VkX2ltYWdlX2V4dGVuc2lvbnMnLAkkdGhpcy0+TGFuZygncHJvbXB0X2FsbG93ZWRfaW1hZ2VfZXh0ZW5zaW9ucycpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9hbGxvd2VkX2ltYWdlX2V4dGVuc2lvbnMnLAoJCQkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2lucHV0X2FsbG93ZWRfaW1hZ2VfZXh0ZW5zaW9ucycsCgkJCQkJCSAgICAgICAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYWxsb3dlZF9pbWFnZV9leHRlbnNpb25zJyksODAsODApKTsKCiRzbWFydHktPmFzc2lnbignaW5mb19zdGFyJywkdGhpcy0+TGFuZygnaW5mb19zdGFyJykpOwokbnVtID0gJHRoaXMtPkNvdW50VGVtcENvZGVSZWNvcmRzKCk7CmlmKCAkbnVtICkKICAgIHsKICAgICAgJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfbnVtcmVzZXRyZWNvcmRzJywKCQkgICAgICAkdGhpcy0+TGFuZygncHJvbXB0X251bXJlc2V0cmVjb3JkJykpOwogICAgICAkc21hcnR5LT5hc3NpZ24oJ2RhdGFfbnVtcmVzZXRyZWNvcmRzJywgJG51bSk7IC8vdG9kbwogICAgICAkc21hcnR5LT5hc3NpZ24oJ2lucHV0X3JlbW92ZWFsbCcsCgkJICAgICAgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnaW5wdXRfcmVtb3ZlYWxsJywKCQkJCQkgICAgICAgJHRoaXMtPkxhbmcoJ3JlbW92ZWFsbCcpLAoJCQkJCSAgICAgICAnb25jbGljaz0icmV0dXJuIGNvbmZpcm0oXCcnLiR0aGlzLT5MYW5nKCdhcmV5b3VzdXJlJykuJ1wnKSInKSk7CiAgICAgICRzbWFydHktPmFzc2lnbignaW5wdXRfcmVtb3ZlMXdlZWsnLAoJCSAgICAgICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2lucHV0X3JlbW92ZTF3ZWVrJywKCQkJCQkgICAgICAgJHRoaXMtPkxhbmcoJ3JlbW92ZTF3ZWVrJyksCgkJCQkJICAgICAgICdvbmNsaWNrPSJyZXR1cm4gY29uZmlybShcJycuJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmUnKS4nXCcpIicpKTsKCiAgICAgICRzbWFydHktPmFzc2lnbignaW5wdXRfcmVtb3ZlMW1vbnRoJywKCQkgICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdpbnB1dF9yZW1vdmUxbW9udGgnLAoJCQkJCSAgICAgICAkdGhpcy0+TGFuZygncmVtb3ZlMW1vbnRoJyksCgkJCQkJICAgICAgICdvbmNsaWNrPSJyZXR1cm4gY29uZmlybShcJycuJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmUnKS4nXCcpIicpKTsKICAgIH0KCiRzbWFydHktPmFzc2lnbignZm9yY2Vsb2dvdXRfdGltZXMnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmb3JjZWxvZ291dF90aW1lcycpKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3JjZWxvZ291dF9zZXNzaW9uYWdlJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZm9yY2Vsb2dvdXRfc2Vzc2lvbmFnZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdleHBpcmV1c2Vyc19pbnRlcnZhbCcsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2V4cGlyZXVzZXJzX2ludGVydmFsJykpOwoKJHRtcCA9IGV4cGxvZGUoJywnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwYWdldHlwZV9ncm91cHMnLCcnKSk7CiRzbWFydHktPmFzc2lnbigncGFnZXR5cGVfZ3JvdXBzJywkdG1wKTsKJGdyb3VwczEgPSAkdGhpcy0+R2V0R3JvdXBMaXN0KCk7CiRzbWFydHktPmFzc2lnbignYWxsX2dyb3VwcycsYXJyYXlfZmxpcCgkZ3JvdXBzMSkpOwokc21hcnR5LT5hc3NpZ24oJ2NsZWFyaGlzdG9yeV9hZ2UnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY2xlYXJoaXN0b3J5X2FnZScpKTsKCiRzbWFydHktPmFzc2lnbignZW5kZm9ybScsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5wcmVmcy50cGwnKTsKCi8vIEVPRgo=]]></data>
	</file>
	<file>
	  <filename>/function.admin_propertiestab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKaWYoIWRlZmluZWQoJ0NNU19WRVJTSU9OJykpIHsgZXhpdDsgfQppZighJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ3Byb3BlcnRpZXMnKSkgeyByZXR1cm47IH0KCiR0cGwgICAgICAgICA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgncHJvcGVydGllc2Zvcm0udHBsJyk7CiRtZXNzYWdlICAgICA9ICRwYXJhbXNbJ21lc3NhZ2UnXSA/PyAnJzsKJHRoZW1lT2JqZWN0ID0gY21zX3V0aWxzOjpnZXRfdGhlbWVfb2JqZWN0KCk7CiRyb3dhcnJheSAgICA9IFtdOwokcm93Y2xhc3MgICAgPSAncm93MSc7CiRrZXlzICAgICAgICA9IGFycmF5X2tleXMoJHRoaXMtPkdldEZpZWxkVHlwZXMoKSk7CiRkZWZucyAgICAgICA9ICR0aGlzLT5HZXRQcm9wZXJ0eURlZm5zKCk7CgppZihpc19hcnJheSgkZGVmbnMpKQp7CiAgZm9yZWFjaCgkZGVmbnMgYXMgJGRlZm4pCiAgewogICAgJGNhbl9kZWxldGUgPSBUUlVFOwogICAgJHByb3Bncm91cHMgPSAkdGhpcy0+R2V0UHJvcGVydHlHcm91cFJlbGF0aW9ucygkZGVmblsnbmFtZSddKTsKICAgIAogICAgaWYoY291bnQoJHByb3Bncm91cHMpKQogICAgewogICAgICBmb3JlYWNoKCRwcm9wZ3JvdXBzIGFzICRyZWMpCiAgICAgIHsKICAgICAgICBpZigkcmVjWydyZXF1aXJlZCddID4gMSkKICAgICAgICB7CiAgICAgICAgICAkY2FuX2RlbGV0ZSA9IEZBTFNFOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICAKICAgICRvbmVyb3cgPSBuZXcgU3RkQ2xhc3MoKTsKICAgIAogICAgaWYoJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJ2VkaXRwcm9wJykgJiYgIWlzc2V0KCRkZWZuWydleHRyYSddWydtb2R1bGUnXSkpCiAgICB7CiAgICAgICRvbmVyb3ctPm5hbWUgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZGRwcm9wJywgJHJldHVybmlkLCAkZGVmblsnbmFtZSddLCBbJ3Byb3BuYW1lJyA9PiAkZGVmblsnbmFtZSddXSk7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICRvbmVyb3ctPm5hbWUgPSAkZGVmblsnbmFtZSddOwogICAgICBpZihpc3NldCgkZGVmblsnZXh0cmEnXVsnbW9kdWxlJ10pKQogICAgICB7CiAgICAgICAgJG9uZXJvdy0+bmFtZSAuPSAnJm5ic3A7PGVtIHRpdGxlPSInIC4gJHRoaXMtPkxhbmcoJ3RpdGxlX3Byb3Btb2R1bGUnKSAuICciPignIC4gJGRlZm5bJ2V4dHJhJ11bJ21vZHVsZSddIC4KICAgICAgICAgICAgICAgICAgICAgICAgICcpPC9lbT4nOwogICAgICB9CiAgICB9CiAgICAKICAgICRvbmVyb3ctPmVuY3J5cHQgICAgICA9ICRkZWZuWydlbmNyeXB0J107CiAgICAkb25lcm93LT5wcm9tcHQgICAgICAgPSAkZGVmblsncHJvbXB0J107CiAgICAkb25lcm93LT50eXBlICAgICAgICAgPSAkdGhpcy0+TGFuZygka2V5c1skZGVmblsndHlwZSddXSk7CiAgICAkb25lcm93LT5sZW5ndGggICAgICAgPSAkZGVmblsnbGVuZ3RoJ107CiAgICAkb25lcm93LT5mb3JjZV91bmlxdWUgPSAkZGVmblsnZm9yY2VfdW5pcXVlJ107CiAgICAkb25lcm93LT5yb3djbGFzcyAgICAgPSAkcm93Y2xhc3M7CiAgICAkaXNfbW9kdWxlcHJvcCAgICAgICAgPSAwOwogICAgCiAgICBpZigKICAgICAgaXNzZXQoJGRlZm5bJ2V4dHJhJ10pCiAgICAgICYmIGlzc2V0KCRkZWZuWydleHRyYSddWydtb2R1bGUnXSkKICAgICAgJiYgJycgIT0gJGRlZm5bJ2V4dHJhJ11bJ21vZHVsZSddCiAgICApCiAgICB7CiAgICAgICR0bXAgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJGRlZm5bJ2V4dHJhJ11bJ21vZHVsZSddKTsKICAgICAgCiAgICAgIGlmKGlzX29iamVjdCgkdG1wKSkgeyAkaXNfbW9kdWxlcHJvcCA9IDE7IH0KICAgIH0KICAgIAogICAgaWYoICFpc3NldCgkZGVmblsnZXh0cmEnXVsnbW9kdWxlJ10pICYmICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdlZGl0cHJvcCcpICkKICAgIHsKICAgICAgJG9uZXJvdy0+ZWRpdGxpbmsgPQogICAgICAgICR0aGlzLT5DcmVhdGVMaW5rKAogICAgICAgICAgJGlkLCAnYWRkcHJvcCcsICRyZXR1cm5pZCwKICAgICAgICAgICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCAkdGhpcy0+TGFuZygnZWRpdCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksCiAgICAgICAgICBbJ3Byb3BuYW1lJyA9PiAkZGVmblsnbmFtZSddXQogICAgICAgICk7CiAgICAgIAogICAgICBpZigkY2FuX2RlbGV0ZSAmJiAhJGlzX21vZHVsZXByb3ApCiAgICAgIHsKICAgICAgICAkb25lcm93LT5kZWxldGVfdXJsID0gJHRoaXMtPmNyZWF0ZV91cmwoCiAgICAgICAgICAkaWQsICdhZG1pbl9kZWxldGVwcm9wJywgJHJldHVybmlkLAogICAgICAgICAgWydwcm9wbmFtZScgPT4gJGRlZm5bJ25hbWUnXSwgJ3Byb3B0eXBlJyA9PiAkZGVmblsndHlwZSddXQogICAgICAgICk7CiAgICAgIH0KICAgIH0KICAgIAogICAgJHJvd2FycmF5W10gPSAkb25lcm93OwogICAgCiAgICAoJ3JvdzEnID09ICRyb3djbGFzcyA/ICRyb3djbGFzcyA9ICdyb3cyJyA6ICRyb3djbGFzcyA9ICdyb3cxJyk7CiAgfQp9CgokdHBsLT5hc3NpZ24oJ3RpdGxlJywgJHRoaXMtPkxhbmcoJ3Byb3BlcnRpZXMnKSk7CiR0cGwtPmFzc2lnbignbWVzc2FnZScsICRtZXNzYWdlKTsKJHRwbC0+YXNzaWduKCduYW1ldGV4dCcsICR0aGlzLT5MYW5nKCduYW1lJykpOwokdHBsLT5hc3NpZ24oJ2xlbmd0aHRleHQnLCAkdGhpcy0+TGFuZygnbGVuZ3RoJykpOwokdHBsLT5hc3NpZ24oJ3Byb21wdHRleHQnLCAkdGhpcy0+TGFuZygncHJvbXB0JykpOwokdHBsLT5hc3NpZ24oJ3R5cGV0ZXh0JywgJHRoaXMtPkxhbmcoJ3Byb21wdF90eXBlJykpOwokdHBsLT5hc3NpZ24oJ3Byb3BzJywgJHJvd2FycmF5KTsKJHRwbC0+YXNzaWduKCdwcm9wY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKJHRwbC0+YXNzaWduKCdwcm9wc2ZvdW5kJywgJHRoaXMtPkxhbmcoJ3Byb3BzZm91bmQnKSk7CgppZigkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnYWRkcHJvcCcpKQp7CiAgLy8gdG9kbywgYWRkIGEgcGVybWlzc2lvbiBjaGVjayBhcm91bmQgdGhpcwogIC8vIG1heWJlIGNyZWF0ZSBhbiAiZWRpdCBmcm9udGVuZHVzZXIgcHJvcGVydGllcyIgcGVybWlzc2lvbgogICR0cGwtPmFzc2lnbignYWRkX3VybCcsICR0aGlzLT5jcmVhdGVfdXJsKCRpZCwgJ2FkZHByb3AnLCAkcmV0dXJuaWQpKTsKfQoKJHRwbC0+ZGlzcGxheSgpOwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/function.admin_userstab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KaWYoICEkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygndXNlcnMnKSApIHJldHVybjsKCi8vIHRoaXMgdGFiIGhhcyBtZXJlbHkgb25lIG1vZm8gbGlzdCBvZiB1c2VzIGFuZCB0aGUgYWJpbGl0eSB0byBlZGl0IHRoZW0sCi8vIHNlZSBkZXRhaWxzIGFib3V0IHRoZW0sIGFuZCB0aGVuIGRlbGV0ZSB0aGVtCgovLwovLyBpbml0aWFsaXphdGlvbgovLwokdGhpcy0+U2V0Q3VycmVudFRhYigndXNlcnMnKTsKJGFkbWludGhlbWUgPSBjbXNfdXRpbHM6OmdldF90aGVtZV9vYmplY3QoKTsKJHRwbCA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgndXNlcmxpc3QudHBsJyk7CmlmKCAkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnbGlzdHVzZXJzJykgKQp7CiAgICAkZmlsdGVyID0gJGJhcmVfZmlsdGVyID0gYXJyYXkoJ2dyb3VwJz0+JycsJ3JlZ2V4Jz0+JycsJ2xvZ2dlZGlub25seSc9PjAsJ2xpbWl0Jz0+NTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZpZXdwcm9wcyc9PltdLCdwcm9wc2VsJz0+JycsJ3Byb3B2YWwnPT4nJywnc29ydGJ5Jz0+J3VzZXJuYW1lIGFzYycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc2FibGVkc3RhdHVzJz0+JycpOwogICAgJHRtcCA9IGNtc191c2VycHJlZnM6OmdldCgnbWFtc19maWx0ZXInKTsKICAgIGlmKCAkdG1wICkgJGZpbHRlciA9IHVuc2VyaWFsaXplKCR0bXApOwoKICAgIC8vIGJ1bGsgYWN0aW9uIHN0dWZmCiAgaWYoaXNzZXQoJHBhcmFtc1snZG9idWxrJ10pKQogIHsKICAgIGlmKGlzc2V0KCRwYXJhbXNbJ3NlbGVjdGVkJ10pICYmIGlzX2FycmF5KCRwYXJhbXNbJ3NlbGVjdGVkJ10pKQogICAgewogICAgICAkc2VsID0gYmFzZTY0X2VuY29kZShzZXJpYWxpemUoJHBhcmFtc1snc2VsZWN0ZWQnXSkpOwogICAgICAkdGhpcy0+bXlSZWRpcmVjdCgKICAgICAgICAkaWQsICdhZG1pbl9idWxrYWN0aW9ucycsICRyZXR1cm5pZCwKICAgICAgICBbJ2pvYicgPT4gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsICdidWxrX2FjdGlvbicsICdkZWxldGUnKSwgJ3VpZHMnID0+ICRzZWxdCiAgICAgICk7CiAgICB9CiAgfQoKICAgIC8vIGZpbHRlcmluZyBzdHVmZgogIGlmKGlzc2V0KCRwYXJhbXNbJ2ZpbHRlcl9yZXNldCddKSkKICB7CiAgICBjbXNfdXNlcnByZWZzOjpyZW1vdmUoJ21hbXNfZmlsdGVyJyk7CiAgICAkdGhpcy0+c2Vzc2lvbl9jbGVhcignY3VyX3BhZ2UnKTsKICAgICRmaWx0ZXIgPSAkYmFyZV9maWx0ZXI7CiAgfQogIGVsc2UgaWYoaXNzZXQoJHBhcmFtc1snZmlsdGVyJ10pKQogIHsKICAgICRmaWx0ZXJbJ2dyb3VwJ10gICAgICAgID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAnZmlsdGVyX2dyb3VwJyk7CiAgICAkZmlsdGVyWydyZWdleCddICAgICAgICA9IHRyaW0oZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAnZmlsdGVyX3JlZ2V4JykpOwogICAgJGZpbHRlclsnbG9nZ2VkaW5vbmx5J10gPSAoaW50KWdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcmFtcywgJ2ZpbHRlcl9sb2dnZWRpbm9ubHknKTsKICAgICRmaWx0ZXJbJ2xpbWl0J10gICAgICAgID0gKGludClnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsICdmaWx0ZXJfbGltaXQnKTsKICAgICRmaWx0ZXJbJ3NvcnRieSddICAgICAgID0gdHJpbShnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsICdmaWx0ZXJfc29ydGJ5JykpOwogICAgJGZpbHRlclsndmlld3Byb3BzJ10gICAgPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsICdmaWx0ZXJfdmlld3Byb3BzJyk7CiAgICAkZmlsdGVyWydwcm9wc2VsJ10gICAgICA9IHRyaW0oZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAnZmlsdGVyX3Byb3BlcnR5c2VsJykpOwogICAgaWYoJGZpbHRlclsncHJvcHNlbCddID09ICdub25lJykgeyAkZmlsdGVyWydwcm9wc2VsJ10gPSAnJzsgfQogICAgCiAgICAkZmlsdGVyWydwcm9wdmFsJ10gICAgICAgID0gdHJpbShnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsICdmaWx0ZXJfcHJvcGVydHknKSk7CiAgICAkZmlsdGVyWydkaXNhYmxlZHN0YXR1cyddID0gXHh0X3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsICdmaWx0ZXJfZGlzYWJsZWQnKTsKICAgICR0aGlzLT5zZXNzaW9uX2NsZWFyKCdjdXJfcGFnZScpOwogICAgY21zX3VzZXJwcmVmczo6c2V0KCdtYW1zX2ZpbHRlcicsIHNlcmlhbGl6ZSgkZmlsdGVyKSk7CiAgfQoKICAgICR0cGwtPmFzc2lnbignZmlsdGVyJywkZmlsdGVyKTsKICAgICRmaWx0ZXJhcHBsaWVkID0gKCRmaWx0ZXIgIT0gJGJhcmVfZmlsdGVyKTsKICAgICR0cGwtPmFzc2lnbignZmlsdGVyX2FwcGxpZWQnLCRmaWx0ZXJhcHBsaWVkKTsKCiAgICAvLyBnZXQgYSBncm91cCBsaXN0IGZvciB0aGUgZmlsdGVyCiAgICAvLyBpdCBzaG91bGQgYmUgcmVhZHkgdG8gZ28gcmlnaHQgaW50byB0aGUgZHJvcGRvd24gKGNvb2wgZWgpCiAgICAkZ3JvdXBzID0gbnVsbDsKICAgICRncm91cHMxID0gJHRoaXMtPkdldEdyb3VwTGlzdCgpOwogICAgaWYoaXNfYXJyYXkoJGdyb3VwczEpICYmIGNvdW50KCRncm91cHMxKSkKICAgIHsKICAgICAgJGdyb3VwcyA9IGFycmF5X21lcmdlKFskdGhpcy0+TGFuZygnYW55JykgPT4gLTFdLCAkZ3JvdXBzMSk7CiAgICAgICR0cGwtPmFzc2lnbignZ3JvdXBzJywgYXJyYXlfZmxpcCgkZ3JvdXBzKSk7CiAgICB9CiAgCiAgLy8gYSBwdWxsZG93biBsaXN0IGZvciBsaW1pdHMKICAgICRsaW1pdHMgPSBhcnJheSggJzEwJyA9PiAxMCwKICAgICAgICAgICAgICAgICAgICAgJzI1JyA9PiAyNSwKICAgICAgICAgICAgICAgICAgICAgJzUwJyA9PiA1MCwKICAgICAgICAgICAgICAgICAgICAgJzEwMCcgPT4gMTAwLAogICAgICAgICAgICAgICAgICAgICAnMjUwJyA9PiAyNTAsCiAgICAgICAgICAgICAgICAgICAgICc1MDAnID0+IDUwMCApOwogICAgJHRwbC0+YXNzaWduKCdsaW1pdHMnLCRsaW1pdHMpOwoKICAgIC8vIGEgcHVsbGRvd24gbGlzdCBmb3IgcHJvcGVydHkgZGVmaW5pdGlvbnMKICAgICRkZWZuczEgPSAkdGhpcy0+R2V0UHJvcGVydHlEZWZucygpOwogICAgJGRlZm5zID0gYXJyYXkoKTsKICAgICRkZWZuc1snTm9uZSddID0gJ25vbmUnOwogICAgJGFsbGRlZm5zID0gYXJyYXkoKTsKICBpZihpc19hcnJheSgkZGVmbnMxKSkKICB7CiAgICBmb3JlYWNoKCRkZWZuczEgYXMgJGRlZikKICAgIHsKICAgICAgaWYoJGRlZlsncHJvbXB0J10gPT0gJycgfHwgJGRlZlsnbmFtZSddID09ICcnKSB7IGNvbnRpbnVlOyB9CiAgICAgIGlmKCRkZWZbJ2VuY3J5cHQnXSkgeyBjb250aW51ZTsgfSAvLyB5b3UgY2FuJ3QgdmlldyBlbmNyeXB0ZWQgcHJvcGVydGllcyBpbiB0aGlzIGxpc3QuCiAgICAgIAogICAgICAkZGVmbnNbJGRlZlsncHJvbXB0J11dICA9ICRkZWZbJ25hbWUnXTsKICAgICAgJGFsbGRlZm5zWyRkZWZbJ25hbWUnXV0gPSAkZGVmWydwcm9tcHQnXTsKICAgIH0KICB9CiAgICAKICAkdHBsLT5hc3NpZ24oJ2RlZm5saXN0JyxhcnJheV9mbGlwKCRkZWZucykpOwoKICAvLyBhIHB1bGxkb3duIGxpc3QgZm9yIHNvcnRpbmcKICAkc29ydHMgPSBbCiAgICAgICAgICAgICAgJHRoaXMtPkxhbmcoJ3NvcnRieV91c2VybmFtZV9hc2MnKSAgPT4gJ3VzZXJuYW1lIGFzYycsCiAgICAgICAgICAgICAgJHRoaXMtPkxhbmcoJ3NvcnRieV91c2VybmFtZV9kZXNjJykgPT4gJ3VzZXJuYW1lIGRlc2MnLAogICAgICAgICAgICAgICR0aGlzLT5MYW5nKCdzb3J0YnlfY3JlYXRlX2FzYycpICAgID0+ICdjcmVhdGVkYXRlIGFzYycsCiAgICAgICAgICAgICAgJHRoaXMtPkxhbmcoJ3NvcnRieV9jcmVhdGVfZGVzYycpICAgPT4gJ2NyZWF0ZWRhdGUgZGVzYycsCiAgICAgICAgICAgICAgJHRoaXMtPkxhbmcoJ3NvcnRieV9leHBpcmVzX2FzYycpICAgPT4gJ2V4cGlyZXMgYXNjJywKICAgICAgICAgICAgICAkdGhpcy0+TGFuZygnc29ydGJ5X2V4cGlyZXNfZGVzYycpICA9PiAnZXhwaXJlcyBkZXNjJwogICAgICAgICAgICBdOwogIAogICR0cGwtPmFzc2lnbignc29ydGxpc3QnLGFycmF5X2ZsaXAoJHNvcnRzKSk7CgogIC8vIG5vdyBzZXR1cCB0aGUgdGVtcGxhdGUgZmllbGRzCiAgJHRwbC0+YXNzaWduKCAncHJvbXB0X3NvcnQnLCAkdGhpcy0+TGFuZygnc29ydCcpKTsKICAkdHBsLT5hc3NpZ24oICdzdGFydGZvcm0nLCAkdGhpcy0+WFRDcmVhdGVGb3JtU3RhcnQoICRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ3h0X2FjdGl2ZXRhYic9Pid1c2VycycpKSk7CiAgJHRwbC0+YXNzaWduKCAncGVybV9yZW1vdmV1c2VycycsICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdyZW1vdmV1c2VycycpPzE6MCk7CiAgJHRwbC0+YXNzaWduKCAndXNlcnNmb3VuZCcsICR0aGlzLT5MYW5nKCd1c2Vyc2ZvdW5kJykpOwogICR0cGwtPmFzc2lnbiggJ2FsbGRlZm5zJywkYWxsZGVmbnMpOwogICR0cGwtPmFzc2lnbiggJ3ZpZXdwcm9wcycsJGZpbHRlclsndmlld3Byb3BzJ10pOwogICR0cGwtPmFzc2lnbiggJ2VuZGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCAoKSk7CgogIC8vIG5vdyBnZXQgb3VyIHVzZXJzCiAgJHVzZXJzID0gbnVsbDsKICAkY3VycGFnZSA9ICR0aGlzLT5zZXNzaW9uX2dldCgnY3VyX3BhZ2UnLDEpOwogICRubWF0Y2hlcyA9IDA7CiAgCiAgaWYoaXNzZXQoJHBhcmFtc1sncGFnZSddKSkKICB7CiAgICAkY3VycGFnZSA9IChpbnQpJHBhcmFtc1sncGFnZSddOwogICAgJHRoaXMtPnNlc3Npb25fcHV0KCdjdXJfcGFnZScsICRjdXJwYWdlKTsKICB9CiAgCiAgJG9mZnNldCA9ICgkY3VycGFnZSAtIDEpICogJGZpbHRlclsnbGltaXQnXTsKICB0cnkKICB7CiAgICAkdXNlcnMgPSBtYW1zX3V0aWxzOjpnZXRfdXNlcnNfZnJvbV9maWx0ZXIoICRmaWx0ZXIsICRvZmZzZXQsICRubWF0Y2hlcyApOwogIH0KICBjYXRjaCggRXhjZXB0aW9uICRlICkKICB7CiAgICAgICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSAoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsICRlLT5HZXRNZXNzYWdlKCkgKTsKICB9CiAgCiAgaWYoIWlzX2FycmF5KCR1c2VycykpCiAgewogICAgLy8gYW4gZXJyb3Igb2NjdXJyZWQKICAgICR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJGRiLT5FcnJvck1zZygpKTsKICB9CgogICAgLy8gY2FsY3VsYXRlIHBhZ2VzIGFuZCBwYWdlIGxpbmtzLgogICAgJG51bXVzZXJzID0gJG5tYXRjaGVzOwogICAgJG5wYWdlcyA9IChpbnQpKCRubWF0Y2hlcyAvICRmaWx0ZXJbJ2xpbWl0J10pOwogICAgaWYoICRubWF0Y2hlcyAlICRmaWx0ZXJbJ2xpbWl0J10gIT0gMCApICRucGFnZXMrKzsKICAgICRjdXJwYWdlID0gbWF4KDAsbWluKCRjdXJwYWdlLCRucGFnZXMpKTsKCiAgICAkbmF2ID0gYXJyYXkoKTsKICAgICRuYXZbJ25wYWdlcyddID0gJG5wYWdlczsKICAgICRuYXZbJ2N1cnBhZ2UnXSA9ICRjdXJwYWdlOwogICAgaWYoICRjdXJwYWdlID4gMSApIHsKICAgICAgICAkbmF2WydmaXJzdHBhZ2VfdXJsJ10gPSAkdGhpcy0+Y3JlYXRlX3VybCgkaWQsJ2RlZmF1bHRhZG1pbicsJycsIGFycmF5KCd4dF9hY3RpdmV0YWInPT4ndXNlcnMnLCdwYWdlJz0+MSkpOwogICAgICAgICRuYXZbJ3ByZXZwYWdlX3VybCddID0gJHRoaXMtPmNyZWF0ZV91cmwoJGlkLCdkZWZhdWx0YWRtaW4nLCcnLCBhcnJheSgneHRfYWN0aXZldGFiJz0+J3VzZXJzJywncGFnZSc9PiRjdXJwYWdlLTEpKTsKICAgIH0KICAgIGlmKCAkY3VycGFnZSA8ICRucGFnZXMgKSB7CiAgICAgICAgJG5hdlsnbmV4dHBhZ2VfdXJsJ10gPSAkdGhpcy0+Y3JlYXRlX3VybCgkaWQsJ2RlZmF1bHRhZG1pbicsJycsIGFycmF5KCd4dF9hY3RpdmV0YWInPT4ndXNlcnMnLCdwYWdlJz0+JGN1cnBhZ2UrMSkpOwogICAgICAgICRuYXZbJ2xhc3RwYWdlX3VybCddID0gJHRoaXMtPmNyZWF0ZV91cmwoJGlkLCdkZWZhdWx0YWRtaW4nLCcnLCBhcnJheSgneHRfYWN0aXZldGFiJz0+J3VzZXJzJywncGFnZSc9PiRucGFnZXMpKTsKICAgIH0KICAgICR0cGwtPmFzc2lnbignbmF2aWdhdGlvbicsJG5hdik7CgogICAgLy8gZ2V0IHRoZSB0b3RhbCBudW1iZXIgb2YgdXNlcnMKCiAgICAvLyBnZXQgdGhlIHNlbGVjdGVkIHByb3BlcnRpZXMuCiAgICBpZiggaXNfYXJyYXkoJGZpbHRlclsndmlld3Byb3BzJ10pICYmIGNvdW50KCRmaWx0ZXJbJ3ZpZXdwcm9wcyddKSApIHsKICAgICAgICBpZiggaXNfYXJyYXkoJHVzZXJzKSAmJiBjb3VudCgkdXNlcnMpICkgewogICAgICAgICAgICAkdWlkcyA9IGFycmF5KCk7CiAgICAgICAgICAgIGZvcmVhY2goICR1c2VycyBhcyAkcm93ICkgewogICAgICAgICAgICAgICAgJHVpZHNbXSA9ICRyb3dbJ2lkJ107CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRxdWVyeSA9ICJTRUxFQ1QgQS5pZCwiOwogICAgICAgICAgICAkZmxkcyA9IGFycmF5KCk7CiAgICAgICAgICAgICRjb25kcyA9IGFycmF5KCk7CiAgICAgICAgICAgICRjb3VudF92aWV3X3Byb3BzID0gY291bnQoJGZpbHRlclsndmlld3Byb3BzJ10pOwogICAgICAgICAgICBmb3IoICRpID0gMDsgJGkgPCAkY291bnRfdmlld19wcm9wczsgJGkrKyApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRwcm9wID0gJGZpbHRlclsndmlld3Byb3BzJ11bJGldOwogICAgICAgICAgICAgICAgJG5tID0gJ2onLiRpOwogICAgICAgICAgICAgICAgJGZsZHNbXSAgPSAiJG5tLmRhdGEgYXMgJHByb3AiOwogICAgICAgICAgICAgICAgJGNvbmRzW10gPSBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9tYW1zX3Byb3BlcnRpZXMgQVMgJG5tIE9OIEEuaWQgPSAkbm0udXNlcmlkIEFORCAoJG5tLnRpdGxlID0gJyRwcm9wJykiOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRxdWVyeSAuPSBpbXBsb2RlKCcsJywkZmxkcykuJyBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfbWFtc191c2VycyBBJzsKICAgICAgICAgICAgJHF1ZXJ5IC49ICcgTEVGVCBKT0lOICcuaW1wbG9kZSgnIExFRlQgSk9JTiAnLCRjb25kcyk7CiAgICAgICAgICAgICRxdWVyeSAuPSAnIFdIRVJFIEEuaWQgSU4gKCcuaW1wbG9kZSgnLCcsJHVpZHMpLicpJzsKICAgICAgICAgICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgnU0VUIHNxbF9iaWdfc2VsZWN0cyA9IDEnKTsKICAgICAgICAgICAgJHRtcCA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5KTsKICAgICAgICAgICAgJGV4dHJhcHJvcHMgPSB4dF9hcnJheTo6dG9faGFzaCgkdG1wLCdpZCcpOwogICAgICAgIH0KICAgIH0KCiAgICAvLyBidWlsZCB0aGUgdXNlciBsaXN0LgogICAgJHJvd2FycmF5ID0gYXJyYXkoKTsKICAgICR0cGwtPmFzc2lnbignbnVtdXNlcnMnLCAkbnVtdXNlcnMgKTsKICAgICRjb25zdW1lciA9IG1hbXNfdXRpbHM6OmdldF9hdXRoX2NvbnN1bWVyKCk7CiAgICBpZiggJHRoaXMtPkdldFByZWZlcmVuY2UoJ3VzZXJuYW1lX2lzX2VtYWlsJykgJiYgZ2V0X2NsYXNzKCRjb25zdW1lcikgPT0gJ21hbXNfc3RkX2NvbnN1bWVyJyApIHsKICAgICAgICAkdHBsLT5hc3NpZ24oJ3VzZXJuYW1ldGV4dCcsICR0aGlzLT5MYW5nKCdwcm9tcHRfZW1haWwnKSk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkdHBsLT5hc3NpZ24oJ3VzZXJuYW1ldGV4dCcsICR0aGlzLT5MYW5nKCd1c2VybmFtZScpKTsKICAgIH0KICAgICR0cGwtPmFzc2lnbignZW1haWx0ZXh0JywgJHRoaXMtPkxhbmcoJ2VtYWlsJykpOwogICAgJHRwbC0+YXNzaWduKCdzdGF0dXN0ZXh0JywgJHRoaXMtPkxhbmcoJ3N0YXR1cycpKTsKICAgICR0cGwtPmFzc2lnbignY3JlYXRlZHRleHQnLCAkdGhpcy0+TGFuZygnY3JlYXRlZCcpKTsKICAgICR0cGwtPmFzc2lnbignZXhwaXJlc3RleHQnLCAkdGhpcy0+TGFuZygnZXhwaXJlcycpKTsKICAgIGlmKCBpc19hcnJheSgkdXNlcnMpICkgewogICAgICAgIGZvcmVhY2goICR1c2VycyBhcyAkcm93ICkgewogICAgICAgICAgICAkb25lcm93ID0gbmV3IFN0ZENsYXNzKCk7CiAgICAgICAgICAgICRvbmVyb3ctPmlkID0gJHJvd1snaWQnXTsKICAgICAgICAgICAgJG9uZXJvdy0+ZGlzYWJsZWQgPSAoYm9vbCkgJHJvd1snZGlzYWJsZWQnXTsKICAgICAgICAgICAgJG9uZXJvdy0+bXVzdF92YWxpZGF0ZSA9IChib29sKSAoaXNzZXQoJHJvd1snbXVzdF92YWxpZGF0ZSddKSkgPyAkcm93WydtdXN0X3ZhbGlkYXRlJ10gOiBmYWxzZTsKICAgICAgICAgICAgJG9uZXJvdy0+Y3JlYXRlZCAgPSAkcm93WydjcmVhdGVkYXRlJ107CiAgICAgICAgICAgICRvbmVyb3ctPnVzZXJuYW1lID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5fZWRpdHVzZXInLCAkcmV0dXJuaWQsICRyb3dbJ3VzZXJuYW1lJ10sIGFycmF5KCd1c2VyX2lkJyA9PiAkcm93WydpZCddKSk7CiAgICAgICAgICAgICRvbmVyb3ctPmV4cGlyZXMgID0gJHJvd1snZXhwaXJlcyddOwogICAgICAgICAgICAkb25lcm93LT51bnNhZmVwYXNzd29yZCA9IHN0cmxlbigkcm93WydwYXNzd29yZCddKSA9PSAzMjsKCiAgICAgICAgICAgIGlmKCAkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnbGlzdHVzZXJzJykgKSB7CiAgICAgICAgICAgICAgICAkb25lcm93LT5oaXN0b3J5bGluayA9CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkNyZWF0ZUxpbmsgKCRpZCwgJ3VzZXJoaXN0b3J5JywgJHJldHVybmlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vaW5mby5naWYnLCR0aGlzLT5MYW5nKCdoaXN0b3J5JyksJycsJycsJ3N5c3RlbWljb24nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkoJ3VzZXJfaWQnPT4kcm93WydpZCddKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmKCAkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnZWRpdHVzZXJzJykgKSB7CiAgICAgICAgICAgICAgICAkb25lcm93LT5lZGl0bGluayA9CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkNyZWF0ZUxpbmsgKCRpZCwgJ2FkbWluX2VkaXR1c2VyJywgJHJldHVybmlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCAkdGhpcy0+TGFuZyAoJ2VkaXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSAoJ3VzZXJfaWQnID0+ICRyb3dbJ2lkJ10gKSk7CiAgICAgICAgICAgICAgICBpZiggJHJvd1snbG9nZ2VkaW4nXSApIHsKICAgICAgICAgICAgICAgICAgICAkb25lcm93LT5sb2dvdXRsaW5rID0KICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkNyZWF0ZUxpbmsgKCRpZCwnYWRtaW5fbG9nb3V0JywkcmV0dXJuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vYmFjay5naWYnLCAkdGhpcy0+TGFuZygncHJvbXB0X2xvZ291dCcpLCcnLCcnLCdzeXN0ZW1pY29uJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgndXNlcl9pZCc9PiRyb3dbJ2lkJ10pKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYoICR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdyZW1vdmV1c2VycycpICkgewogICAgICAgICAgICAgICAgJG9uZXJvdy0+ZGVsZXRlbGluayA9CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPkNyZWF0ZUxpbmsgKCRpZCwnZG9fZGVsZXRldXNlcicsJHJldHVybmlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsJHRoaXMtPkxhbmcgKCdkZWxldGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSAoJ3VzZXJfaWQnID0+ICRyb3dbJ2lkJ10pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+TGFuZyAoJ2FyZXlvdXN1cmVfZGVsZXRlJywkcm93Wyd1c2VybmFtZSddKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmKCBpc19hcnJheSgkZmlsdGVyWyd2aWV3cHJvcHMnXSkgJiYgY291bnQoJGZpbHRlclsndmlld3Byb3BzJ10pICkgewogICAgICAgICAgICAgICAgJG9uZXJvdy0+ZXh0cmEgPSBbXTsKICAgICAgICAgICAgICAgIGZvcmVhY2goICRmaWx0ZXJbJ3ZpZXdwcm9wcyddIGFzICRvbmUgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYoIGlzc2V0KCRleHRyYXByb3BzWyRvbmVyb3ctPmlkXVskb25lXSkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRvYiA9IG5ldyBcU3RkQ2xhc3M7CiAgICAgICAgICAgICAgICAgICAgICAgICRvYi0+dmFsID0gJGV4dHJhcHJvcHNbJG9uZXJvdy0+aWRdWyRvbmVdOwogICAgICAgICAgICAgICAgICAgICAgICAkb2ItPmRlZm4gPSAkZGVmbnMxWyRvbmVdOwogICAgICAgICAgICAgICAgICAgICAgICAkb25lcm93LT5leHRyYVskb25lXSA9ICRvYjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRyb3dhcnJheVtdID0gJG9uZXJvdzsKICAgICAgICB9CiAgICB9CgogICAgJHRwbC0+YXNzaWduKCdpdGVtY291bnQnLGNvdW50KCRyb3dhcnJheSkpOwogICAgJHRwbC0+YXNzaWduKCdpdGVtcycsJHJvd2FycmF5KTsKICAgICRidWxrX2FjdGlvbnMgPSBbXTsKICAgIGlmKCAkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygnZWRpdHVzZXJzJykgKQogICAgewogICAgICAgICRidWxrX2FjdGlvbnNbJ2Rpc2FibGUnXSA9ICR0aGlzLT5MYW5nKCdidWxrX2Rpc2FibGUnKTsKICAgICAgICAkYnVsa19hY3Rpb25zWydlbmFibGUnXSA9ICR0aGlzLT5MYW5nKCdidWxrX2VuYWJsZScpOwogICAgICAgICRidWxrX2FjdGlvbnNbJ2ZvcmNlY2hwdyddID0gJHRoaXMtPkxhbmcoJ2J1bGtfZm9yY2VjaHB3Jyk7CiAgICAgICAgJGJ1bGtfYWN0aW9uc1snZm9yY2VjaHNldHRpbmdzJ10gPSAkdGhpcy0+TGFuZygnYnVsa19mb3JjZWNoc2V0dGluZ3MnKTsKICAgICAgICAkYnVsa19hY3Rpb25zWydzZXRwYXNzd29yZCddID0gJHRoaXMtPkxhbmcoJ2J1bGtfc2V0cGFzc3dvcmQnKTsKICAgICAgICAkYnVsa19hY3Rpb25zWydzZXRleHBpcnknXSA9ICR0aGlzLT5MYW5nKCdidWxrX3NldGV4cGlyeScpOwogICAgfQoKICAgIGlmKCAkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygncmVtb3ZldXNlcnMnKSApIHsKICAgICAgICAkYnVsa19hY3Rpb25zWydkZWxldGUnXSA9ICR0aGlzLT5MYW5nKCdidWxrX2RlbGV0ZScpOwogICAgfQogICAgCiAgICBpZiggY291bnQoJGJ1bGtfYWN0aW9ucykgKSAkdHBsLT5hc3NpZ24oJ2J1bGtfYWN0aW9ucycsJGJ1bGtfYWN0aW9ucyk7Cn0gLy8gbGlzdHVzZXJzIHBlcm1pc3Npb24KCmlmKCR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCdhZGR1c2VyJykpCnsKLy8gIGlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdyZXF1aXJlX29uZWdyb3VwJykgPT0gMCB8fCBjb3VudCgkZ3JvdXBzMSkgPiAwKQovLyAgewovLyAgICAkdHBsLT5hc3NpZ24oJ2FkZF91cmwnLCAkdGhpcy0+Y3JlYXRlX3VybCgkaWQsICdhZG1pbl9lZGl0dXNlcicsICRyZXR1cm5pZCkpOwovLyAgfQogIAogICR0cGwtPmFzc2lnbignYWRkX3VybCcsICR0aGlzLT5jcmVhdGVfdXJsKCRpZCwgJ2FkbWluX2VkaXR1c2VyJywgJHJldHVybmlkKSk7Cn0KCmlmKCAkdGhpcy0+X0hhc1N1ZmZpY2llbnRQZXJtaXNzaW9ucygndXNlcnMnKSApIHsKICAgIGlmKCAhZW1wdHkoJGdyb3VwcykgKSAkdHBsLT5hc3NpZ24oJ2ltcG9ydF91cmwnLCR0aGlzLT5jcmVhdGVfdXJsKCRpZCwnYWRtaW5faW1wb3J0X3VzZXJzJywkcmV0dXJuaWQpKTsKICAgIGlmKCAhZW1wdHkoJHJvd2FycmF5KSApICR0cGwtPmFzc2lnbignZXhwb3J0X3VybCcsJHRoaXMtPmNyZWF0ZV91cmwoJGlkLCdhZG1pbl9leHBvcnRfdXNlcnMnLCRyZXR1cm5pZCkpOwp9CgokdHBsLT5kaXNwbGF5KCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/icons</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/icons/edit.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAOZ/ANfq//r+/ur0/+Xy/9/1/9rs/9bu/nehxf/+/fX///H4/+32/+j0/+P3/+bz/+Hw/3+ny3mgxV2XzViTyXqhxVuXzePx//z9/3eew3CYv/j7//r9//3+///+/9zu//f7//j8/3GZv/T6//b6/9/u/93u/+3+//b7/+Dv/1qTyVeY0HGYv/r8/8jf84etz26Xv1eTyfP4/+v1/uX1+FuY0NHq+q/L5IWhwVCKwG6fyun5/+n6/8DL2dzj6VaRyVqAp+T4//z+//T5//L5+9zt/6Kyxc/b5ODy/+Dn63ifxD9nkUdoj+P//1KKv9/v/52ww/D6/3KawfP6/1ORylGSzGOc0N/w/9fi64ykvJWmvPT9//f+/+Xx/////uH0/42ryf7+//7//1qQw0N1pkx5pYuetleNwFiVzePt8luWz+v7/9PZ41qX0J650MPM29ni6vH3++Lv/97u//b4+VJwllZzlVWTytjr/+Lx/16Bp+31/4Sdt+b4/3adw////////yH5BAEAAH8ALAAAAAAQABAAAAfjgH95BxQUGIeHfRERBz9/fyt+fgiSlX5dkhCPIX5rWZVgF35FPH6af0lIdWWSHEEgfk9LRi6PUQg9c5IXGx8fcG9DOY8ZlWEXLBonIgpQCRPEfh0dQRvKIgsDFiYp0R28GiNSC1x4cWrQf8UcGyAfMTLaKHI66ZwX4QoCDhZOJQVAYDx64YeDED0M5Hko4KGBj0dmAqCRsc+ClYUAWhiw80jMFTpYEjx4UOKOly9KbKR51MSPmz1aSJAgAuDIjTYmpjzC4WfLDBM7+DQgQKCGASZUHpGpwlSC0woVztBgo2LMn0AAOw==]]></data>
	</file>
	<file>
	  <filename>/icons/users.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAPYAAAxdeA1deA1eeA5hfA9ifRBifhBjfhBlgRJohBJsiBJsiRNuixJykRNzkhRykBV0kxR1lBZ1lBR5mRV8nRh7nBh8nBh8nRh9nRh/oBWAoheBoxmDpRqDpRiFpxqEphmFqBmGqRqGqBmHqhuHqhqIqxuIqxuKrRyLrxyMrx2QtR6QtB6Stx2bsx6dtR+TuB+TuR6ZuyGbwiGcwyGcxCKhyiOiyyOjyySjzCSkziWq1CWr1Saq1Caq1Se12iiw3Cix3Sm53im14iq45Su/5Su/5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEUALAAAAAAQABAAAAeCgEWCg0UtLISIgzBAREQ9iYg7QkFBQjaQgzs+mz6XmEU4O6I7M59FMjc2NzgppikyMbEfphsvtikQnxocKCgnJxuQFx8lIR4bGxzEHxKDDRgVFBQV1NHTGA2CDhAP3d7eEBAOggoL5ufo54IHCO3u7+0HgwQEBfb3+IkC+/wCAISBAAA7]]></data>
	</file>
	<file>
	  <filename>/icons/xml_rss.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhJAAOAOYAAP/////9+f/9+v/68f/58P/45P/24//z3v7x2/7v2v7pvP7os/7muf7nqP7ktf7lr/7jo/7iq/7jmf7frv7gnv7cq/7fiv7cmf7YlP3be/3eZP3bYP3Vm/3aX/7Uj/3VfP3WWv3Qiv3Rgv3VWf3UWP3SXPzQY/3Mhf3PUPzLU/zKW/3FafzHRvzDU/zESv3DXfzAYvzAPPy8S/68N/64Mvy2Qvy4M/6xKfywOvywKfypMfuoJvypH/yjKfukHPuhFfucE/uaE/uZC/+WBf+VBPuVCf2TAvuRAPuSAf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHAEkALAAAAAAkAA4AAAf/gDdEREOFhoeIiYqHgjMbGpCRkpOUlZAdNIMkIJydnp+goZ+DKKWlDQWlGQUlpQUSphasKLKmtqWDLLq6KQALLAIGuwAAuwICJiwQxbvNLIMx0dIPAAoALtLEHzEqxCoxFADS49GDNufoNsQR6QABAzYMxC02FwDp+IM5+/w5BwAi+gHAAOAFAAcAZOQg2K/hIB4QI64AQABARB4AalQMUCMjDw8WL14c9KOkSQAIfACYcBIHDAAhcADA8SPETBw4dpgsOUiIT58VAAARwgGADp9GhQAQoiPpCWLEEvz0OQiJVas9glztUQSr1a5IenztQTbrVauDiBxZy7at27dwDd0SMZK2rt27ePPODQQAOw==]]></data>
	</file>
	<file>
	  <filename>/includes</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/includes/function.html_entity_decode_php4.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCm5hbWVzcGFjZSBtYW1zOw0KLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rDQovLyBGaWxlIG5hbWUgICA6IGh0bWxfZW50aXR5X2RlY29kZV9waHA0LnBocA0KLy8gQmVnaW4gICAgICAgOiAyMDA2LTA2LTIyDQovLyBMYXN0IFVwZGF0ZSA6IDIwMDYtMDYtMjINCi8vIEF1dGhvciAgICAgIDogTmljb2xhIEFzdW5pDQovLyBWZXJzaW9uICAgICA6IDEuMC4wMDANCi8vIExpY2Vuc2UgICAgIDogR05VIExHUEwgKGh0dHA6Ly93d3cuZ251Lm9yZy9jb3B5bGVmdC9sZXNzZXIuaHRtbCkNCi8vDQovLyBEZXNjcmlwdGlvbiA6IFRoaXMgaXMgYSBQSFA0IGZ1bmN0aW9uIHRoYXQgcmVkZWZpbmUgdGhlDQovLyAgICAgICAgICAgICAgIHN0YW5kYXJkIGh0bWxfZW50aXR5X2RlY29kZSBmdW5jdGlvbiB0byBzdXBwb3J0DQovLyAgICAgICAgICAgICAgIFVURi04IGVuY29kaW5nLg0KLy8NCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kw0KDQovKioNCiAqIFRDUERGIENsYXNzLg0KICogQHBhY2thZ2UgY29tLnRlY25pY2sudGNwZGYNCiAqLw0KDQoNCi8qKg0KICogUmV0dXJucyB0aGUgVVRGLTggc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gdW5pY29kZSB2YWx1ZS4NCiAqDQogKiBAaWdub3JlDQogKiBAcGFyYW0gJG51bSB1bmljb2RlIHZhbHVlIHRvIGNvbnZlcnQuDQogKiBAcmV0dXJuIHN0cmluZyBjb252ZXJ0ZWQNCiAqLw0KZnVuY3Rpb24gX19jb2RlX3RvX3V0ZjgoJG51bSkgew0KICBpZiAoJG51bSA8PSAweDdGKSB7DQogICAgJG9yZCA9ICRvcmRbMV07DQogICAgaWYgKHByZWdfbWF0Y2goJy9eeChbMC05YS1mXSspJC9pJywgJG9yZCwgJG1hdGNoKSkNCiAgICB7DQogICAgICAkb3JkID0gaGV4ZGVjKCRtYXRjaFsxXSk7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAkb3JkID0gaW50dmFsKCRvcmQpOw0KICAgIH0NCiAgICANCiAgICAkbm9fYnl0ZXMgPSAwOw0KICAgICRieXRlID0gYXJyYXkoKTsNCiAgICANCiAgICBpZiAoJG9yZCA8IDEyOCkNCiAgICB7DQogICAgICByZXR1cm4gY2hyKCRvcmQpOw0KICAgIH0NCiAgICBlbHNlaWYgKCRvcmQgPCAyMDQ4KQ0KICAgIHsNCiAgICAgICRub19ieXRlcyA9IDI7DQogICAgfQ0KICAgIGVsc2VpZiAoJG9yZCA8IDY1NTM2KQ0KICAgIHsNCiAgICAgICRub19ieXRlcyA9IDM7DQogICAgfQ0KICAgIGVsc2VpZiAoJG9yZCA8IDExMTQxMTIpDQogICAgew0KICAgICAgJG5vX2J5dGVzID0gNDsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgIHJldHVybjsNCiAgICB9DQogICAgDQogICAgc3dpdGNoKCRub19ieXRlcykNCiAgICB7DQogICAgICBjYXNlIDI6DQogICAgICB7DQogICAgICAgICRwcmVmaXggPSBhcnJheSgzMSwgMTkyKTsNCiAgICAgICAgYnJlYWs7DQogICAgICB9DQogICAgICBjYXNlIDM6DQogICAgICB7DQogICAgICAgICRwcmVmaXggPSBhcnJheSgxNSwgMjI0KTsNCiAgICAgICAgYnJlYWs7DQogICAgICB9DQogICAgICBjYXNlIDQ6DQogICAgICB7DQogICAgICAgICRwcmVmaXggPSBhcnJheSg3LCAyNDApOw0KICAgICAgfQ0KICAgIH0NCiAgICANCiAgICBmb3IgKCRpID0gMDsgJGkgPCAkbm9fYnl0ZXM7ICRpKyspDQogICAgew0KICAgICAgJGJ5dGVbJG5vX2J5dGVzIC0gJGkgLSAxXSA9ICgoJG9yZCAmICg2MyAqIHBvdygyLCA2ICogJGkpKSkgLyBwb3coMiwgNiAqICRpKSkgJiA2MyB8IDEyODsNCiAgICB9DQogICAgDQogICAgJGJ5dGVbMF0gPSAoJGJ5dGVbMF0gJiAkcHJlZml4WzBdKSB8ICRwcmVmaXhbMV07DQogICAgDQogICAgJHJldCA9ICcnOw0KICAgIGZvciAoJGkgPSAwOyAkaSA8ICRub19ieXRlczsgJGkrKykNCiAgICB7DQogICAgICAkcmV0IC49IGNocigkYnl0ZVskaV0pOw0KICAgIH0NCiAgICANCiAgICByZXR1cm4gJHJldDsNCiAgfQ0KfQ0KDQovKioNCiAqIFJldmVyc2UgZnVuY3Rpb24gZm9yIGh0bWxlbnRpdGllcy4NCiAqIENvbnZlcnQgZW50aXRpZXMgaW4gVVRGLTguDQogKg0KICogQHBhcmFtICR0ZXh0X3RvX2NvbnZlcnQgVGV4dCB0byBjb252ZXJ0Lg0KICogQHJldHVybiBzdHJpbmcgY29udmVydGVkDQogKi8NCi8vZnVuY3Rpb24gaHRtbF9lbnRpdHlfZGVjb2RlX3BocDQoJHRleHRfdG9fY29udmVydCkgew0KZnVuY3Rpb24gY21zX2h0bWxfZW50aXR5X2RlY29kZSgkdGV4dF90b19jb252ZXJ0KSB7DQogICRodG1sZW50aXRpZXNfdGFibGUgPSBhcnJheSAoDQogICAgIiZBYWN1dGU7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTI5KS4iIiwNCiAgICAiJmFhY3V0ZTsiID0+ICIiLmNocigxOTUpLmNocigxNjEpLiIiLA0KICAgICImQWNpcmM7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTMwKS4iIiwNCiAgICAiJmFjaXJjOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE2MikuIiIsDQogICAgIiZhY3V0ZTsiID0+ICIiLmNocigxOTQpLmNocigxODApLiIiLA0KICAgICImQUVsaWc7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTM0KS4iIiwNCiAgICAiJmFlbGlnOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE2NikuIiIsDQogICAgIiZBZ3JhdmU7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTI4KS4iIiwNCiAgICAiJmFncmF2ZTsiID0+ICIiLmNocigxOTUpLmNocigxNjApLiIiLA0KICAgICImYWxlZnN5bTsiID0+ICIiLmNocigyMjYpLmNocigxMzIpLmNocigxODEpLiIiLA0KICAgICImQWxwaGE7IiA9PiAiIi5jaHIoMjA2KS5jaHIoMTQ1KS4iIiwNCiAgICAiJmFscGhhOyIgPT4gIiIuY2hyKDIwNikuY2hyKDE3NykuIiIsDQogICAgIiZhbXA7IiA9PiAiIi5jaHIoMzgpLiIiLA0KICAgICImYW5kOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzNikuY2hyKDE2NykuIiIsDQogICAgIiZhbmc7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM2KS5jaHIoMTYwKS4iIiwNCiAgICAiJkFyaW5nOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDEzMykuIiIsDQogICAgIiZhcmluZzsiID0+ICIiLmNocigxOTUpLmNocigxNjUpLiIiLA0KICAgICImYXN5bXA7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM3KS5jaHIoMTM2KS4iIiwNCiAgICAiJkF0aWxkZTsiID0+ICIiLmNocigxOTUpLmNocigxMzEpLiIiLA0KICAgICImYXRpbGRlOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE2MykuIiIsDQogICAgIiZBdW1sOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDEzMikuIiIsDQogICAgIiZhdW1sOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE2NCkuIiIsDQogICAgIiZiZHF1bzsiID0+ICIiLmNocigyMjYpLmNocigxMjgpLmNocigxNTgpLiIiLA0KICAgICImQmV0YTsiID0+ICIiLmNocigyMDYpLmNocigxNDYpLiIiLA0KICAgICImYmV0YTsiID0+ICIiLmNocigyMDYpLmNocigxNzgpLiIiLA0KICAgICImYnJ2YmFyOyIgPT4gIiIuY2hyKDE5NCkuY2hyKDE2NikuIiIsDQogICAgIiZidWxsOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEyOCkuY2hyKDE2MikuIiIsDQogICAgIiZjYXA7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM2KS5jaHIoMTY5KS4iIiwNCiAgICAiJkNjZWRpbDsiID0+ICIiLmNocigxOTUpLmNocigxMzUpLiIiLA0KICAgICImY2NlZGlsOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE2NykuIiIsDQogICAgIiZjZWRpbDsiID0+ICIiLmNocigxOTQpLmNocigxODQpLiIiLA0KICAgICImY2VudDsiID0+ICIiLmNocigxOTQpLmNocigxNjIpLiIiLA0KICAgICImQ2hpOyIgPT4gIiIuY2hyKDIwNikuY2hyKDE2NykuIiIsDQogICAgIiZjaGk7IiA9PiAiIi5jaHIoMjA3KS5jaHIoMTM1KS4iIiwNCiAgICAiJmNpcmM7IiA9PiAiIi5jaHIoMjAzKS5jaHIoMTM0KS4iIiwNCiAgICAiJmNsdWJzOyIgPT4gIiIuY2hyKDIyNikuY2hyKDE1MykuY2hyKDE2MykuIiIsDQogICAgIiZjb25nOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzNykuY2hyKDEzMykuIiIsDQogICAgIiZjb3B5OyIgPT4gIiIuY2hyKDE5NCkuY2hyKDE2OSkuIiIsDQogICAgIiZjcmFycjsiID0+ICIiLmNocigyMjYpLmNocigxMzQpLmNocigxODEpLiIiLA0KICAgICImY3VwOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzNikuY2hyKDE3MCkuIiIsDQogICAgIiZjdXJyZW47IiA9PiAiIi5jaHIoMTk0KS5jaHIoMTY0KS4iIiwNCiAgICAiJmRhZ2dlcjsiID0+ICIiLmNocigyMjYpLmNocigxMjgpLmNocigxNjApLiIiLA0KICAgICImRGFnZ2VyOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEyOCkuY2hyKDE2MSkuIiIsDQogICAgIiZkYXJyOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzNCkuY2hyKDE0NykuIiIsDQogICAgIiZkQXJyOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzNSkuY2hyKDE0NykuIiIsDQogICAgIiZkZWc7IiA9PiAiIi5jaHIoMTk0KS5jaHIoMTc2KS4iIiwNCiAgICAiJkRlbHRhOyIgPT4gIiIuY2hyKDIwNikuY2hyKDE0OCkuIiIsDQogICAgIiZkZWx0YTsiID0+ICIiLmNocigyMDYpLmNocigxODApLiIiLA0KICAgICImZGlhbXM7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTUzKS5jaHIoMTY2KS4iIiwNCiAgICAiJmRpdmlkZTsiID0+ICIiLmNocigxOTUpLmNocigxODMpLiIiLA0KICAgICImRWFjdXRlOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDEzNykuIiIsDQogICAgIiZlYWN1dGU7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTY5KS4iIiwNCiAgICAiJkVjaXJjOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDEzOCkuIiIsDQogICAgIiZlY2lyYzsiID0+ICIiLmNocigxOTUpLmNocigxNzApLiIiLA0KICAgICImRWdyYXZlOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDEzNikuIiIsDQogICAgIiZlZ3JhdmU7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTY4KS4iIiwNCiAgICAiJmVtcHR5OyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzNikuY2hyKDEzMykuIiIsDQogICAgIiZlbXNwOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEyOCkuY2hyKDEzMSkuIiIsDQogICAgIiZlbnNwOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEyOCkuY2hyKDEzMCkuIiIsDQogICAgIiZFcHNpbG9uOyIgPT4gIiIuY2hyKDIwNikuY2hyKDE0OSkuIiIsDQogICAgIiZlcHNpbG9uOyIgPT4gIiIuY2hyKDIwNikuY2hyKDE4MSkuIiIsDQogICAgIiZlcXVpdjsiID0+ICIiLmNocigyMjYpLmNocigxMzcpLmNocigxNjEpLiIiLA0KICAgICImRXRhOyIgPT4gIiIuY2hyKDIwNikuY2hyKDE1MSkuIiIsDQogICAgIiZldGE7IiA9PiAiIi5jaHIoMjA2KS5jaHIoMTgzKS4iIiwNCiAgICAiJkVUSDsiID0+ICIiLmNocigxOTUpLmNocigxNDQpLiIiLA0KICAgICImZXRoOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE3NikuIiIsDQogICAgIiZFdW1sOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDEzOSkuIiIsDQogICAgIiZldW1sOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE3MSkuIiIsDQogICAgIiZldXJvOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzMCkuY2hyKDE3MikuIiIsDQogICAgIiZleGlzdDsiID0+ICIiLmNocigyMjYpLmNocigxMzYpLmNocigxMzEpLiIiLA0KICAgICImZm5vZjsiID0+ICIiLmNocigxOTgpLmNocigxNDYpLiIiLA0KICAgICImZm9yYWxsOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzNikuY2hyKDEyOCkuIiIsDQogICAgIiZmcmFjMTI7IiA9PiAiIi5jaHIoMTk0KS5jaHIoMTg5KS4iIiwNCiAgICAiJmZyYWMxNDsiID0+ICIiLmNocigxOTQpLmNocigxODgpLiIiLA0KICAgICImZnJhYzM0OyIgPT4gIiIuY2hyKDE5NCkuY2hyKDE5MCkuIiIsDQogICAgIiZmcmFzbDsiID0+ICIiLmNocigyMjYpLmNocigxMjkpLmNocigxMzIpLiIiLA0KICAgICImR2FtbWE7IiA9PiAiIi5jaHIoMjA2KS5jaHIoMTQ3KS4iIiwNCiAgICAiJmdhbW1hOyIgPT4gIiIuY2hyKDIwNikuY2hyKDE3OSkuIiIsDQogICAgIiZnZTsiID0+ICIiLmNocigyMjYpLmNocigxMzcpLmNocigxNjUpLiIiLA0KICAgICImaGFycjsiID0+ICIiLmNocigyMjYpLmNocigxMzQpLmNocigxNDgpLiIiLA0KICAgICImaEFycjsiID0+ICIiLmNocigyMjYpLmNocigxMzUpLmNocigxNDgpLiIiLA0KICAgICImaGVhcnRzOyIgPT4gIiIuY2hyKDIyNikuY2hyKDE1MykuY2hyKDE2NSkuIiIsDQogICAgIiZoZWxsaXA7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTI4KS5jaHIoMTY2KS4iIiwNCiAgICAiJklhY3V0ZTsiID0+ICIiLmNocigxOTUpLmNocigxNDEpLiIiLA0KICAgICImaWFjdXRlOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE3MykuIiIsDQogICAgIiZJY2lyYzsiID0+ICIiLmNocigxOTUpLmNocigxNDIpLiIiLA0KICAgICImaWNpcmM7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTc0KS4iIiwNCiAgICAiJmlleGNsOyIgPT4gIiIuY2hyKDE5NCkuY2hyKDE2MSkuIiIsDQogICAgIiZJZ3JhdmU7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTQwKS4iIiwNCiAgICAiJmlncmF2ZTsiID0+ICIiLmNocigxOTUpLmNocigxNzIpLiIiLA0KICAgICImaW1hZ2U7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTMyKS5jaHIoMTQ1KS4iIiwNCiAgICAiJmluZmluOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzNikuY2hyKDE1OCkuIiIsDQogICAgIiZpbnQ7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM2KS5jaHIoMTcxKS4iIiwNCiAgICAiJklvdGE7IiA9PiAiIi5jaHIoMjA2KS5jaHIoMTUzKS4iIiwNCiAgICAiJmlvdGE7IiA9PiAiIi5jaHIoMjA2KS5jaHIoMTg1KS4iIiwNCiAgICAiJmlxdWVzdDsiID0+ICIiLmNocigxOTQpLmNocigxOTEpLiIiLA0KICAgICImaXNpbjsiID0+ICIiLmNocigyMjYpLmNocigxMzYpLmNocigxMzYpLiIiLA0KICAgICImSXVtbDsiID0+ICIiLmNocigxOTUpLmNocigxNDMpLiIiLA0KICAgICImaXVtbDsiID0+ICIiLmNocigxOTUpLmNocigxNzUpLiIiLA0KICAgICImS2FwcGE7IiA9PiAiIi5jaHIoMjA2KS5jaHIoMTU0KS4iIiwNCiAgICAiJmthcHBhOyIgPT4gIiIuY2hyKDIwNikuY2hyKDE4NikuIiIsDQogICAgIiZMYW1iZGE7IiA9PiAiIi5jaHIoMjA2KS5jaHIoMTU1KS4iIiwNCiAgICAiJmxhbWJkYTsiID0+ICIiLmNocigyMDYpLmNocigxODcpLiIiLA0KICAgICImbGFuZzsiID0+ICIiLmNocigyMjYpLmNocigxNDApLmNocigxNjkpLiIiLA0KICAgICImbGFxdW87IiA9PiAiIi5jaHIoMTk0KS5jaHIoMTcxKS4iIiwNCiAgICAiJmxhcnI7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM0KS5jaHIoMTQ0KS4iIiwNCiAgICAiJmxBcnI7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM1KS5jaHIoMTQ0KS4iIiwNCiAgICAiJmxjZWlsOyIgPT4gIiIuY2hyKDIyNikuY2hyKDE0MCkuY2hyKDEzNikuIiIsDQogICAgIiZsZHF1bzsiID0+ICIiLmNocigyMjYpLmNocigxMjgpLmNocigxNTYpLiIiLA0KICAgICImbGU7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM3KS5jaHIoMTY0KS4iIiwNCiAgICAiJmxmbG9vcjsiID0+ICIiLmNocigyMjYpLmNocigxNDApLmNocigxMzgpLiIiLA0KICAgICImbG93YXN0OyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzNikuY2hyKDE1MSkuIiIsDQogICAgIiZsb3o7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTUxKS5jaHIoMTM4KS4iIiwNCiAgICAiJmxybTsiID0+ICIiLmNocigyMjYpLmNocigxMjgpLmNocigxNDIpLiIiLA0KICAgICImbHNhcXVvOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEyOCkuY2hyKDE4NSkuIiIsDQogICAgIiZsc3F1bzsiID0+ICIiLmNocigyMjYpLmNocigxMjgpLmNocigxNTIpLiIiLA0KICAgICImbWFjcjsiID0+ICIiLmNocigxOTQpLmNocigxNzUpLiIiLA0KICAgICImbWRhc2g7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTI4KS5jaHIoMTQ4KS4iIiwNCiAgICAiJm1pY3JvOyIgPT4gIiIuY2hyKDE5NCkuY2hyKDE4MSkuIiIsDQogICAgIiZtaWRkb3Q7IiA9PiAiIi5jaHIoMTk0KS5jaHIoMTgzKS4iIiwNCiAgICAiJm1pbnVzOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzNikuY2hyKDE0NikuIiIsDQogICAgIiZNdTsiID0+ICIiLmNocigyMDYpLmNocigxNTYpLiIiLA0KICAgICImbXU7IiA9PiAiIi5jaHIoMjA2KS5jaHIoMTg4KS4iIiwNCiAgICAiJm5hYmxhOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzNikuY2hyKDEzNSkuIiIsDQogICAgLy8iJm5ic3A7IiA9PiAiIi5jaHIoMTk0KS5jaHIoMTYwKS4iIiwgLy8gZG9uJ3QgYWN0dWFsbHkga25vdyB3aHkgKEpvIE1vcmcpDQogICAgIiZuYnNwOyIgPT4gIiIuY2hyKDMyKS4iIiwNCiAgICAiJm5kYXNoOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEyOCkuY2hyKDE0NykuIiIsDQogICAgIiZuZTsiID0+ICIiLmNocigyMjYpLmNocigxMzcpLmNocigxNjApLiIiLA0KICAgICImbmk7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM2KS5jaHIoMTM5KS4iIiwNCiAgICAiJm5vdDsiID0+ICIiLmNocigxOTQpLmNocigxNzIpLiIiLA0KICAgICImbm90aW47IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM2KS5jaHIoMTM3KS4iIiwNCiAgICAiJm5zdWI7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM4KS5jaHIoMTMyKS4iIiwNCiAgICAiJk50aWxkZTsiID0+ICIiLmNocigxOTUpLmNocigxNDUpLiIiLA0KICAgICImbnRpbGRlOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE3NykuIiIsDQogICAgIiZOdTsiID0+ICIiLmNocigyMDYpLmNocigxNTcpLiIiLA0KICAgICImbnU7IiA9PiAiIi5jaHIoMjA2KS5jaHIoMTg5KS4iIiwNCiAgICAiJk9hY3V0ZTsiID0+ICIiLmNocigxOTUpLmNocigxNDcpLiIiLA0KICAgICImb2FjdXRlOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE3OSkuIiIsDQogICAgIiZPY2lyYzsiID0+ICIiLmNocigxOTUpLmNocigxNDgpLiIiLA0KICAgICImb2NpcmM7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTgwKS4iIiwNCiAgICAiJk9FbGlnOyIgPT4gIiIuY2hyKDE5NykuY2hyKDE0NikuIiIsDQogICAgIiZvZWxpZzsiID0+ICIiLmNocigxOTcpLmNocigxNDcpLiIiLA0KICAgICImT2dyYXZlOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE0NikuIiIsDQogICAgIiZvZ3JhdmU7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTc4KS4iIiwNCiAgICAiJm9saW5lOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEyOCkuY2hyKDE5MCkuIiIsDQogICAgIiZPbWVnYTsiID0+ICIiLmNocigyMDYpLmNocigxNjkpLiIiLA0KICAgICImb21lZ2E7IiA9PiAiIi5jaHIoMjA3KS5jaHIoMTM3KS4iIiwNCiAgICAiJk9taWNyb247IiA9PiAiIi5jaHIoMjA2KS5jaHIoMTU5KS4iIiwNCiAgICAiJm9taWNyb247IiA9PiAiIi5jaHIoMjA2KS5jaHIoMTkxKS4iIiwNCiAgICAiJm9wbHVzOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzOCkuY2hyKDE0OSkuIiIsDQogICAgIiZvcjsiID0+ICIiLmNocigyMjYpLmNocigxMzYpLmNocigxNjgpLiIiLA0KICAgICImb3JkZjsiID0+ICIiLmNocigxOTQpLmNocigxNzApLiIiLA0KICAgICImb3JkbTsiID0+ICIiLmNocigxOTQpLmNocigxODYpLiIiLA0KICAgICImT3NsYXNoOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE1MikuIiIsDQogICAgIiZvc2xhc2g7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTg0KS4iIiwNCiAgICAiJk90aWxkZTsiID0+ICIiLmNocigxOTUpLmNocigxNDkpLiIiLA0KICAgICImb3RpbGRlOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE4MSkuIiIsDQogICAgIiZvdGltZXM7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM4KS5jaHIoMTUxKS4iIiwNCiAgICAiJk91bWw7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTUwKS4iIiwNCiAgICAiJm91bWw7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTgyKS4iIiwNCiAgICAiJnBhcmE7IiA9PiAiIi5jaHIoMTk0KS5jaHIoMTgyKS4iIiwNCiAgICAiJnBhcnQ7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM2KS5jaHIoMTMwKS4iIiwNCiAgICAiJnBlcm1pbDsiID0+ICIiLmNocigyMjYpLmNocigxMjgpLmNocigxNzYpLiIiLA0KICAgICImcGVycDsiID0+ICIiLmNocigyMjYpLmNocigxMzgpLmNocigxNjUpLiIiLA0KICAgICImUGhpOyIgPT4gIiIuY2hyKDIwNikuY2hyKDE2NikuIiIsDQogICAgIiZwaGk7IiA9PiAiIi5jaHIoMjA3KS5jaHIoMTM0KS4iIiwNCiAgICAiJlBpOyIgPT4gIiIuY2hyKDIwNikuY2hyKDE2MCkuIiIsDQogICAgIiZwaTsiID0+ICIiLmNocigyMDcpLmNocigxMjgpLiIiLA0KICAgICImcGl2OyIgPT4gIiIuY2hyKDIwNykuY2hyKDE1MCkuIiIsDQogICAgIiZwbHVzbW47IiA9PiAiIi5jaHIoMTk0KS5jaHIoMTc3KS4iIiwNCiAgICAiJnBvdW5kOyIgPT4gIiIuY2hyKDE5NCkuY2hyKDE2MykuIiIsDQogICAgIiZwcmltZTsiID0+ICIiLmNocigyMjYpLmNocigxMjgpLmNocigxNzgpLiIiLA0KICAgICImUHJpbWU7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTI4KS5jaHIoMTc5KS4iIiwNCiAgICAiJnByb2Q7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM2KS5jaHIoMTQzKS4iIiwNCiAgICAiJnByb3A7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM2KS5jaHIoMTU3KS4iIiwNCiAgICAiJlBzaTsiID0+ICIiLmNocigyMDYpLmNocigxNjgpLiIiLA0KICAgICImcHNpOyIgPT4gIiIuY2hyKDIwNykuY2hyKDEzNikuIiIsDQogICAgIiZyYWRpYzsiID0+ICIiLmNocigyMjYpLmNocigxMzYpLmNocigxNTQpLiIiLA0KICAgICImcmFuZzsiID0+ICIiLmNocigyMjYpLmNocigxNDApLmNocigxNzApLiIiLA0KICAgICImcmFxdW87IiA9PiAiIi5jaHIoMTk0KS5jaHIoMTg3KS4iIiwNCiAgICAiJnJhcnI7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM0KS5jaHIoMTQ2KS4iIiwNCiAgICAiJnJBcnI7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM1KS5jaHIoMTQ2KS4iIiwNCiAgICAiJnJjZWlsOyIgPT4gIiIuY2hyKDIyNikuY2hyKDE0MCkuY2hyKDEzNykuIiIsDQogICAgIiZyZHF1bzsiID0+ICIiLmNocigyMjYpLmNocigxMjgpLmNocigxNTcpLiIiLA0KICAgICImcmVhbDsiID0+ICIiLmNocigyMjYpLmNocigxMzIpLmNocigxNTYpLiIiLA0KICAgICImcmVnOyIgPT4gIiIuY2hyKDE5NCkuY2hyKDE3NCkuIiIsDQogICAgIiZyZmxvb3I7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTQwKS5jaHIoMTM5KS4iIiwNCiAgICAiJlJobzsiID0+ICIiLmNocigyMDYpLmNocigxNjEpLiIiLA0KICAgICImcmhvOyIgPT4gIiIuY2hyKDIwNykuY2hyKDEyOSkuIiIsDQogICAgIiZybG07IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTI4KS5jaHIoMTQzKS4iIiwNCiAgICAiJnJzYXF1bzsiID0+ICIiLmNocigyMjYpLmNocigxMjgpLmNocigxODYpLiIiLA0KICAgICImcnNxdW87IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTI4KS5jaHIoMTUzKS4iIiwNCiAgICAiJnNicXVvOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEyOCkuY2hyKDE1NCkuIiIsDQogICAgIiZTY2Fyb247IiA9PiAiIi5jaHIoMTk3KS5jaHIoMTYwKS4iIiwNCiAgICAiJnNjYXJvbjsiID0+ICIiLmNocigxOTcpLmNocigxNjEpLiIiLA0KICAgICImc2RvdDsiID0+ICIiLmNocigyMjYpLmNocigxMzkpLmNocigxMzMpLiIiLA0KICAgICImc2VjdDsiID0+ICIiLmNocigxOTQpLmNocigxNjcpLiIiLA0KICAgICImc2h5OyIgPT4gIiIuY2hyKDE5NCkuY2hyKDE3MykuIiIsDQogICAgIiZTaWdtYTsiID0+ICIiLmNocigyMDYpLmNocigxNjMpLiIiLA0KICAgICImc2lnbWE7IiA9PiAiIi5jaHIoMjA3KS5jaHIoMTMxKS4iIiwNCiAgICAiJnNpZ21hZjsiID0+ICIiLmNocigyMDcpLmNocigxMzApLiIiLA0KICAgICImc2ltOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzNikuY2hyKDE4OCkuIiIsDQogICAgIiZzcGFkZXM7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTUzKS5jaHIoMTYwKS4iIiwNCiAgICAiJnN1YjsiID0+ICIiLmNocigyMjYpLmNocigxMzgpLmNocigxMzApLiIiLA0KICAgICImc3ViZTsiID0+ICIiLmNocigyMjYpLmNocigxMzgpLmNocigxMzQpLiIiLA0KICAgICImc3VtOyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzNikuY2hyKDE0NSkuIiIsDQogICAgIiZzdXAxOyIgPT4gIiIuY2hyKDE5NCkuY2hyKDE4NSkuIiIsDQogICAgIiZzdXAyOyIgPT4gIiIuY2hyKDE5NCkuY2hyKDE3OCkuIiIsDQogICAgIiZzdXAzOyIgPT4gIiIuY2hyKDE5NCkuY2hyKDE3OSkuIiIsDQogICAgIiZzdXA7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM4KS5jaHIoMTMxKS4iIiwNCiAgICAiJnN1cGU7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM4KS5jaHIoMTM1KS4iIiwNCiAgICAiJnN6bGlnOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE1OSkuIiIsDQogICAgIiZUYXU7IiA9PiAiIi5jaHIoMjA2KS5jaHIoMTY0KS4iIiwNCiAgICAiJnRhdTsiID0+ICIiLmNocigyMDcpLmNocigxMzIpLiIiLA0KICAgICImdGhlcmU0OyIgPT4gIiIuY2hyKDIyNikuY2hyKDEzNikuY2hyKDE4MCkuIiIsDQogICAgIiZUaGV0YTsiID0+ICIiLmNocigyMDYpLmNocigxNTIpLiIiLA0KICAgICImdGhldGE7IiA9PiAiIi5jaHIoMjA2KS5jaHIoMTg0KS4iIiwNCiAgICAiJnRoZXRhc3ltOyIgPT4gIiIuY2hyKDIwNykuY2hyKDE0NSkuIiIsDQogICAgIiZ0aGluc3A7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTI4KS5jaHIoMTM3KS4iIiwNCiAgICAiJlRIT1JOOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE1OCkuIiIsDQogICAgIiZ0aG9ybjsiID0+ICIiLmNocigxOTUpLmNocigxOTApLiIiLA0KICAgICImdGlsZGU7IiA9PiAiIi5jaHIoMjAzKS5jaHIoMTU2KS4iIiwNCiAgICAiJnRpbWVzOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE1MSkuIiIsDQogICAgIiZ0cmFkZTsiID0+ICIiLmNocigyMjYpLmNocigxMzIpLmNocigxNjIpLiIiLA0KICAgICImVWFjdXRlOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE1NCkuIiIsDQogICAgIiZ1YWN1dGU7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTg2KS4iIiwNCiAgICAiJnVhcnI7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM0KS5jaHIoMTQ1KS4iIiwNCiAgICAiJnVBcnI7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTM1KS5jaHIoMTQ1KS4iIiwNCiAgICAiJlVjaXJjOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE1NSkuIiIsDQogICAgIiZ1Y2lyYzsiID0+ICIiLmNocigxOTUpLmNocigxODcpLiIiLA0KICAgICImVWdyYXZlOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE1MykuIiIsDQogICAgIiZ1Z3JhdmU7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTg1KS4iIiwNCiAgICAiJnVtbDsiID0+ICIiLmNocigxOTQpLmNocigxNjgpLiIiLA0KICAgICImdXBzaWg7IiA9PiAiIi5jaHIoMjA3KS5jaHIoMTQ2KS4iIiwNCiAgICAiJlVwc2lsb247IiA9PiAiIi5jaHIoMjA2KS5jaHIoMTY1KS4iIiwNCiAgICAiJnVwc2lsb247IiA9PiAiIi5jaHIoMjA3KS5jaHIoMTMzKS4iIiwNCiAgICAiJlV1bWw7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTU2KS4iIiwNCiAgICAiJnV1bWw7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTg4KS4iIiwNCiAgICAiJndlaWVycDsiID0+ICIiLmNocigyMjYpLmNocigxMzIpLmNocigxNTIpLiIiLA0KICAgICImWGk7IiA9PiAiIi5jaHIoMjA2KS5jaHIoMTU4KS4iIiwNCiAgICAiJnhpOyIgPT4gIiIuY2hyKDIwNikuY2hyKDE5MCkuIiIsDQogICAgIiZZYWN1dGU7IiA9PiAiIi5jaHIoMTk1KS5jaHIoMTU3KS4iIiwNCiAgICAiJnlhY3V0ZTsiID0+ICIiLmNocigxOTUpLmNocigxODkpLiIiLA0KICAgICImeWVuOyIgPT4gIiIuY2hyKDE5NCkuY2hyKDE2NSkuIiIsDQogICAgIiZ5dW1sOyIgPT4gIiIuY2hyKDE5NSkuY2hyKDE5MSkuIiIsDQogICAgIiZZdW1sOyIgPT4gIiIuY2hyKDE5NykuY2hyKDE4NCkuIiIsDQogICAgIiZaZXRhOyIgPT4gIiIuY2hyKDIwNikuY2hyKDE1MCkuIiIsDQogICAgIiZ6ZXRhOyIgPT4gIiIuY2hyKDIwNikuY2hyKDE4MikuIiIsDQogICAgIiZ6d2o7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTI4KS5jaHIoMTQxKS4iIiwNCiAgICAiJnp3bmo7IiA9PiAiIi5jaHIoMjI2KS5jaHIoMTI4KS5jaHIoMTQwKS4iIiwNCiAgICAiJnF1b3Q7IiA9PiAnIicsDQogICAgIiZndDsiID0+ICI+IiwNCiAgICAiJmx0OyIgPT4gIjwiDQogICk7DQogIA0KICAkcmV0dXJuX3RleHQgPSBodG1sX2VudGl0eV9kZWNvZGUoJHRleHRfdG9fY29udmVydCwgKEVOVF9RVU9URVMgfCBFTlRfSFRNTDUpLCAnVVRGLTgnKTsNCiAgDQogICMganVzdCB0byBiZSBvbiB0aGUgc2FmZSBzaWRlIGlmIGh0bWxfZW50aXR5X2RlY29kZSBzdGlsbCBtaXNzZWQgc29tZXRoaW5nDQogICMgYW5kIGFsc28gY29udmVydHMgJm5ic3A7IHRvIGNocigzMikgd2hpY2ggc2VlbXMgY29ycmVjdCAoSm8gTW9yZykNCiAgJHJldHVybl90ZXh0ID0gc3RydHIoJHJldHVybl90ZXh0LCAkaHRtbGVudGl0aWVzX3RhYmxlKTsNCiAgDQogIC8vIGNvbnZlcnQgaGV4LCBhbmQgbnVtZXJpYyBlbnRpdGllcyB0byB0aGVpciBjaGFyYWN0ZXIgdmFsdWVzLg0KICAkcmV0dXJuX3RleHQgPSBwcmVnX3JlcGxhY2VfY2FsbGJhY2soJ34mI3goWzAtOWEtZl0rKTt+aScsIGZ1bmN0aW9uKCBhcnJheSAkbWF0Y2hlcyApIHsNCiAgICByZXR1cm4gX19jb2RlX3RvX3V0ZjgoICRtYXRjaGVzWzFdICk7DQogIH0sICRyZXR1cm5fdGV4dCApOw0KICAkcmV0dXJuX3RleHQgPSBwcmVnX3JlcGxhY2VfY2FsbGJhY2soJ34mIyhbMC05XSspO34nLCBmdW5jdGlvbiggYXJyYXkgJG1hdGNoZXMgKSB7DQogICAgcmV0dXJuIF9fY29kZV90b191dGY4KCAkbWF0Y2hlc1sxXSApOw0KICB9LCAkcmV0dXJuX3RleHQgKTsNCiAgDQogIHJldHVybiAkcmV0dXJuX3RleHQ7DQp9DQoNCi8vIEVPRg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/includes/inc.extra_classes.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qKg0KICogc29tZSBjbGFzc2VzIHRoYXQgYXJlIHNtYWxsIGhlbHBlcnMNCiAqIGdvIGhlcmUNCiAqLw0KbmFtZXNwYWNlIE1BTVM7DQpjbGFzcyBEZXByZWNhdGVkTWV0aG9kRXhjZXB0aW9uIGV4dGVuZHMgXEV4Y2VwdGlvbg0Kew0KICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJG1ldGhvZCkNCiAgew0KICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoIlRoZSBtZXRob2QgJyRtZXRob2QnIGlzIGRlcHJlY2F0ZWQgYW5kIG5vIGxvbmdlciBleGlzdHMuIiwgXEVfVVNFUl9ERVBSRUNBVEVEKTsNCiAgfQ0KfQ0KY2xhc3MgTWV0aG9kTm9Gb3VuZEV4Y2VwdGlvbiBleHRlbmRzIFxFeGNlcHRpb24NCnsNCiAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRuYW1lLCAkY2xhc3NfbmFtZSkNCiAgew0KICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoIm1ldGhvZCAkbmFtZSBub3QgZm91bmQgaW4gICRjbGFzc19uYW1lIG9iamVjdCIsIFxFX1VTRVJfREVQUkVDQVRFRCk7DQogIH0NCn0NCj8+]]></data>
	</file>
	<file>
	  <filename>/js</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/js/js.cookie.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIEphdmFTY3JpcHQgQ29va2llIHYyLjIuMQogKiBodHRwczovL2dpdGh1Yi5jb20vanMtY29va2llL2pzLWNvb2tpZQogKgogKiBDb3B5cmlnaHQgMjAwNiwgMjAxNSBLbGF1cyBIYXJ0bCAmIEZhZ25lciBCcmFjawogKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UKICovCjsoZnVuY3Rpb24gKGZhY3RvcnkpIHsKCXZhciByZWdpc3RlcmVkSW5Nb2R1bGVMb2FkZXI7CglpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7CgkJZGVmaW5lKGZhY3RvcnkpOwoJCXJlZ2lzdGVyZWRJbk1vZHVsZUxvYWRlciA9IHRydWU7Cgl9CglpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKSB7CgkJbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7CgkJcmVnaXN0ZXJlZEluTW9kdWxlTG9hZGVyID0gdHJ1ZTsKCX0KCWlmICghcmVnaXN0ZXJlZEluTW9kdWxlTG9hZGVyKSB7CgkJdmFyIE9sZENvb2tpZXMgPSB3aW5kb3cuQ29va2llczsKCQl2YXIgYXBpID0gd2luZG93LkNvb2tpZXMgPSBmYWN0b3J5KCk7CgkJYXBpLm5vQ29uZmxpY3QgPSBmdW5jdGlvbiAoKSB7CgkJCXdpbmRvdy5Db29raWVzID0gT2xkQ29va2llczsKCQkJcmV0dXJuIGFwaTsKCQl9OwoJfQp9KGZ1bmN0aW9uICgpIHsKCWZ1bmN0aW9uIGV4dGVuZCAoKSB7CgkJdmFyIGkgPSAwOwoJCXZhciByZXN1bHQgPSB7fTsKCQlmb3IgKDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgewoJCQl2YXIgYXR0cmlidXRlcyA9IGFyZ3VtZW50c1sgaSBdOwoJCQlmb3IgKHZhciBrZXkgaW4gYXR0cmlidXRlcykgewoJCQkJcmVzdWx0W2tleV0gPSBhdHRyaWJ1dGVzW2tleV07CgkJCX0KCQl9CgkJcmV0dXJuIHJlc3VsdDsKCX0KCglmdW5jdGlvbiBkZWNvZGUgKHMpIHsKCQlyZXR1cm4gcy5yZXBsYWNlKC8oJVswLTlBLVpdezJ9KSsvZywgZGVjb2RlVVJJQ29tcG9uZW50KTsKCX0KCglmdW5jdGlvbiBpbml0IChjb252ZXJ0ZXIpIHsKCQlmdW5jdGlvbiBhcGkoKSB7fQoKCQlmdW5jdGlvbiBzZXQgKGtleSwgdmFsdWUsIGF0dHJpYnV0ZXMpIHsKCQkJaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHsKCQkJCXJldHVybjsKCQkJfQoKCQkJYXR0cmlidXRlcyA9IGV4dGVuZCh7CgkJCQlwYXRoOiAnLycKCQkJfSwgYXBpLmRlZmF1bHRzLCBhdHRyaWJ1dGVzKTsKCgkJCWlmICh0eXBlb2YgYXR0cmlidXRlcy5leHBpcmVzID09PSAnbnVtYmVyJykgewoJCQkJYXR0cmlidXRlcy5leHBpcmVzID0gbmV3IERhdGUobmV3IERhdGUoKSAqIDEgKyBhdHRyaWJ1dGVzLmV4cGlyZXMgKiA4NjRlKzUpOwoJCQl9CgoJCQkvLyBXZSdyZSB1c2luZyAiZXhwaXJlcyIgYmVjYXVzZSAibWF4LWFnZSIgaXMgbm90IHN1cHBvcnRlZCBieSBJRQoJCQlhdHRyaWJ1dGVzLmV4cGlyZXMgPSBhdHRyaWJ1dGVzLmV4cGlyZXMgPyBhdHRyaWJ1dGVzLmV4cGlyZXMudG9VVENTdHJpbmcoKSA6ICcnOwoKCQkJdHJ5IHsKCQkJCXZhciByZXN1bHQgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7CgkJCQlpZiAoL15bXHtcW10vLnRlc3QocmVzdWx0KSkgewoJCQkJCXZhbHVlID0gcmVzdWx0OwoJCQkJfQoJCQl9IGNhdGNoIChlKSB7fQoKCQkJdmFsdWUgPSBjb252ZXJ0ZXIud3JpdGUgPwoJCQkJY29udmVydGVyLndyaXRlKHZhbHVlLCBrZXkpIDoKCQkJCWVuY29kZVVSSUNvbXBvbmVudChTdHJpbmcodmFsdWUpKQoJCQkJCS5yZXBsYWNlKC8lKDIzfDI0fDI2fDJCfDNBfDNDfDNFfDNEfDJGfDNGfDQwfDVCfDVEfDVFfDYwfDdCfDdEfDdDKS9nLCBkZWNvZGVVUklDb21wb25lbnQpOwoKCQkJa2V5ID0gZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhrZXkpKQoJCQkJLnJlcGxhY2UoLyUoMjN8MjR8MjZ8MkJ8NUV8NjB8N0MpL2csIGRlY29kZVVSSUNvbXBvbmVudCkKCQkJCS5yZXBsYWNlKC9bXChcKV0vZywgZXNjYXBlKTsKCgkJCXZhciBzdHJpbmdpZmllZEF0dHJpYnV0ZXMgPSAnJzsKCQkJZm9yICh2YXIgYXR0cmlidXRlTmFtZSBpbiBhdHRyaWJ1dGVzKSB7CgkJCQlpZiAoIWF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0pIHsKCQkJCQljb250aW51ZTsKCQkJCX0KCQkJCXN0cmluZ2lmaWVkQXR0cmlidXRlcyArPSAnOyAnICsgYXR0cmlidXRlTmFtZTsKCQkJCWlmIChhdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdID09PSB0cnVlKSB7CgkJCQkJY29udGludWU7CgkJCQl9CgoJCQkJLy8gQ29uc2lkZXJzIFJGQyA2MjY1IHNlY3Rpb24gNS4yOgoJCQkJLy8gLi4uCgkJCQkvLyAzLiAgSWYgdGhlIHJlbWFpbmluZyB1bnBhcnNlZC1hdHRyaWJ1dGVzIGNvbnRhaW5zIGEgJXgzQiAoIjsiKQoJCQkJLy8gICAgIGNoYXJhY3RlcjoKCQkJCS8vIENvbnN1bWUgdGhlIGNoYXJhY3RlcnMgb2YgdGhlIHVucGFyc2VkLWF0dHJpYnV0ZXMgdXAgdG8sCgkJCQkvLyBub3QgaW5jbHVkaW5nLCB0aGUgZmlyc3QgJXgzQiAoIjsiKSBjaGFyYWN0ZXIuCgkJCQkvLyAuLi4KCQkJCXN0cmluZ2lmaWVkQXR0cmlidXRlcyArPSAnPScgKyBhdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdLnNwbGl0KCc7JylbMF07CgkJCX0KCgkJCXJldHVybiAoZG9jdW1lbnQuY29va2llID0ga2V5ICsgJz0nICsgdmFsdWUgKyBzdHJpbmdpZmllZEF0dHJpYnV0ZXMpOwoJCX0KCgkJZnVuY3Rpb24gZ2V0IChrZXksIGpzb24pIHsKCQkJaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHsKCQkJCXJldHVybjsKCQkJfQoKCQkJdmFyIGphciA9IHt9OwoJCQkvLyBUbyBwcmV2ZW50IHRoZSBmb3IgbG9vcCBpbiB0aGUgZmlyc3QgcGxhY2UgYXNzaWduIGFuIGVtcHR5IGFycmF5CgkJCS8vIGluIGNhc2UgdGhlcmUgYXJlIG5vIGNvb2tpZXMgYXQgYWxsLgoJCQl2YXIgY29va2llcyA9IGRvY3VtZW50LmNvb2tpZSA/IGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOyAnKSA6IFtdOwoJCQl2YXIgaSA9IDA7CgoJCQlmb3IgKDsgaSA8IGNvb2tpZXMubGVuZ3RoOyBpKyspIHsKCQkJCXZhciBwYXJ0cyA9IGNvb2tpZXNbaV0uc3BsaXQoJz0nKTsKCQkJCXZhciBjb29raWUgPSBwYXJ0cy5zbGljZSgxKS5qb2luKCc9Jyk7CgoJCQkJaWYgKCFqc29uICYmIGNvb2tpZS5jaGFyQXQoMCkgPT09ICciJykgewoJCQkJCWNvb2tpZSA9IGNvb2tpZS5zbGljZSgxLCAtMSk7CgkJCQl9CgoJCQkJdHJ5IHsKCQkJCQl2YXIgbmFtZSA9IGRlY29kZShwYXJ0c1swXSk7CgkJCQkJY29va2llID0gKGNvbnZlcnRlci5yZWFkIHx8IGNvbnZlcnRlcikoY29va2llLCBuYW1lKSB8fAoJCQkJCQlkZWNvZGUoY29va2llKTsKCgkJCQkJaWYgKGpzb24pIHsKCQkJCQkJdHJ5IHsKCQkJCQkJCWNvb2tpZSA9IEpTT04ucGFyc2UoY29va2llKTsKCQkJCQkJfSBjYXRjaCAoZSkge30KCQkJCQl9CgoJCQkJCWphcltuYW1lXSA9IGNvb2tpZTsKCgkJCQkJaWYgKGtleSA9PT0gbmFtZSkgewoJCQkJCQlicmVhazsKCQkJCQl9CgkJCQl9IGNhdGNoIChlKSB7fQoJCQl9CgoJCQlyZXR1cm4ga2V5ID8gamFyW2tleV0gOiBqYXI7CgkJfQoKCQlhcGkuc2V0ID0gc2V0OwoJCWFwaS5nZXQgPSBmdW5jdGlvbiAoa2V5KSB7CgkJCXJldHVybiBnZXQoa2V5LCBmYWxzZSAvKiByZWFkIGFzIHJhdyAqLyk7CgkJfTsKCQlhcGkuZ2V0SlNPTiA9IGZ1bmN0aW9uIChrZXkpIHsKCQkJcmV0dXJuIGdldChrZXksIHRydWUgLyogcmVhZCBhcyBqc29uICovKTsKCQl9OwoJCWFwaS5yZW1vdmUgPSBmdW5jdGlvbiAoa2V5LCBhdHRyaWJ1dGVzKSB7CgkJCXNldChrZXksICcnLCBleHRlbmQoYXR0cmlidXRlcywgewoJCQkJZXhwaXJlczogLTEKCQkJfSkpOwoJCX07CgoJCWFwaS5kZWZhdWx0cyA9IHt9OwoKCQlhcGkud2l0aENvbnZlcnRlciA9IGluaXQ7CgoJCXJldHVybiBhcGk7Cgl9CgoJcmV0dXJuIGluaXQoZnVuY3Rpb24gKCkge30pOwp9KSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/lang</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2luZm9fdW5zYWZlcGFzc3dvcmQnXSA9ICdUaGlzIHVzZXJzIHBhc3N3b3JkIGlzIHVzaW5nIGFuIG9sZCBoYXNoaW5nIG1lY2hhbmlzbS4gIFRoZSB1c2VyIHNob3VsZCBjaGFuZ2UgdGhlIHBhc3N3b3JkJzsKJGxhbmdbJ3Vuc2FmZSddID0gJ1Vuc2FmZSc7CiRsYW5nWydtc2dfYW5vbmltaXplZCddID0gJ1VzZXIgYW5vbnltaXplZCc7CiRsYW5nWydhbm9uaW1pemUnXSA9ICdBbm9ueW1pemUgdGhpcyBVc2VyJzsKJGxhbmdbJ2NvbmZpcm1fYW5vbmltaXplJ10gPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGFub255bWl6ZSB0aGlzIHVzZXI/ICBUaGUgYWNjb3VudCB3aWxsIGJlIGRpc2FibGVkLCBwYXNzd29yZCBjaGFuZ2VkLCB1c2VybmFtZSBhbmQgYWxsIHBlcnNvbmFsIGluZm9ybWF0aW9uIGVyYXNlZCc7CiRsYW5nWydwcm9tcHRfY2xlYXJoaXN0b3J5X2FnZSddID0gJ0NsZWFyIGhpc3RvcnkgZW50cmllcyBvbGRlciB0aGFuIE4gZGF5cyc7CiRsYW5nWydpbmZvX2NsZWFyaGlzdG9yeV9hZ2UnXSA9ICdFbnRlciBhIG5vbiB6ZXJvIHZhbHVlIHRvIHJlZ3VsYXJseSByZW1vdmUgYWxsIHVzZXIgaGlzdG9yeSBlbnRyaWVzIHRoYXQgYXJlIG9sZGVyIHRoYW4gdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgZGF5cyc7CiRsYW5nWydwcm9tcHRfbG9naW5fYWZ0ZXJfdmVyaWZ5J10gPSAnQXV0b21hdGljYWxseSBsb2ctaW4gYWZ0ZXIgdXNlciB2ZXJpZmljYXRpb24nOwokbGFuZ1snaW5mb19sb2dpbl9hZnRlcl92ZXJpZnknXSA9ICdJZiBlbmFibGVkLCBhbiBhdXRoZW50aWNhdGVkIHVzZXIgd2hvIHZlcmlmaWVzIHRoZWlyIGlkZW50aXR5IHN1Y2Nlc3NmdWxseSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgbG9nZ2VkIGluLic7CiRsYW5nWydxdWlja2ZpbmRfaWRuYW1lJ10gPSAnVXNlciBJRC9OYW1lJzsKJGxhbmdbJ3F1aWNrZmluZF9waCddID0gJ1VzZXIgSUQgb3IgTmFtZSc7CiRsYW5nWydmaW5kJ10gPSAnRWRpdCBVc2VyJzsKJGxhbmdbJ3F1aWNrZmluZF91c2VyJ10gPSAnUXVpY2sgRmluZC4uLic7CiRsYW5nWyd1c2Vyc21hdGNoaW5nJ10gPSAnVXNlcnMgbWF0Y2hpbmcgeW91ciBjcml0ZXJpYSc7CiRsYW5nWydwcm9tcHRfZGlzYWJsZWRzdGF0dXMnXSA9ICdEaXNhYmxlZCBTdGF0dXMnOwokbGFuZ1snZGlzYWJsZWQnXSA9ICdEaXNhYmxlZCc7CiRsYW5nWydlbmFibGVkJ10gPSAnRW5hYmxlZCc7CiRsYW5nWydwcm9wcmVnZXgnXSA9ICdQcm9wZXJ0eSBWYWx1ZSc7CiRsYW5nWydpbmZvX3Byb3ByZWdleCddID0gJ0VudGVyIGEgdmFsdWUgc3RyaW5nLCBzdWJzdHJpbmcsIG9yIGEgcmVndWxhciBleHByZXNzaW9uLiAgRm9yIGNoZWNrYm94IGZpZWxkcyBlbnRlciBhIHZhbHVlIG9mIDAgb3IgMS4gIFRvIGZpbHRlciBvbiBBTlkgdmFsdWUgZm9yIGEgcHJvcGVydHkgdXNlIHRoZSBzdHJpbmcgLiogKGRvdCBhc3RlcmlzaykuJzsKJGxhbmdbJ2luZm9fZXhwaXJlZCddID0gJ1RoaXMgYWNjb3VudCBpcyBleHBpcmVkLCBwcmV2ZW50aW5nIGxvZ2luLic7CiRsYW5nWydkaXNhYmxlX3VzZXIyJ10gPSAnRGlzYWJsZSB1c2VyJzsKJGxhbmdbJ2Vycm9yX3VzZXJkZWxldGUnXSA9ICdXZSBjb3VsZCBub3QgZGVsZXRlIHRoaXMgdXNlciBhY2NvdW50LiAgUGVyaGFwcyBvdGhlciBtb2R1bGVzIGhhdmUgZGF0YSB0aGF0IGlzIGNvbm5lY3RlZCB0byB0aGlzIHVzZXI/JzsKJGxhbmdbJ3dhcm5fc3Ryb25ncGFzc3dvcmQnXSA9ICdOb3RlLCBieSBkZWZhdWx0LCBzdHJvbmcgcGFzc3dvcmRzIGFyZSBhIHJlcXVpcmVtZW50LCB0aG91Z2ggdGhlIHNldHRpbmdzIGZvciBwYXNzd29yZHMgY2FuIGJlIGNvbnRyb2xsZWQgZnJvbSB3aXRoaW4gdGhlIGFkbWluIHBhbmVsIGZvciB0aGlzIG1vZHVsZSc7CiRsYW5nWydjb2RlJ10gPSAnQ29kZSc7CiRsYW5nWyd2ZXJpZnknXSA9ICdWZXJpZnknOwokbGFuZ1snaW5mb192ZXJpZnlfaWRlbnRpdHknXSA9ICdZb3Ugc2hvdWxkIGhhdmUgYWxyZWFkeSByZWNlaXZlZCBhbiBlbWFpbCB3aXRoIGEgY29kZSB0byB2ZXJpZnkgdGhhdCB5b3Ugb3duIHRoZSBlbWFpbCBhZGRyZXNzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGFjY291bnQuICBQbGVhc2UgZW50ZXIgdGhlIHZlcmlmaWNhdGlvbiBjb2RlIGhlcmUuIDxlbT4oaXQgbWF5IGV2ZW4gYXV0b21hdGljYWxseSBiZSBwcm92aWRlZCkuPC9lbT4nOwokbGFuZ1snaW5mb192ZXJpZnlfaWRlbnRpdHkyJ10gPSAnWW91IHNob3VsZCBoYXZlIGFscmVhZHkgcmVjZWl2ZWQgYW4gZW1haWwgd2l0aCBhIGNvZGUgdG8gdmVyaWZ5IHRoYXQgeW91IG93biB0aGUgZW1haWwgYWRkcmVzcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBhY2NvdW50LiAgUGxlYXNlIGVudGVyIHRoZSB2ZXJpZmljYXRpb24gY29kZSBoZXJlLiA8ZW0+KGl0IG1heSBldmVuIGF1dG9tYXRpY2FsbHkgYmUgcHJvdmlkZWQpLjwvZW0+JzsKJGxhbmdbJ3RpdGxlX2ZvcmdvdHB3ZW1haWwnXSA9ICdZb3UgaGF2ZSBtaXNwbGFjZWQgeW91ciBjcmVkcyc7CiRsYW5nWydtc2dfdmVyaWZpY2F0aW9uX2NvbXBsZXRlJ10gPSAnWW91IGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgdmVyaWZpZWQuICBUaGFuayB5b3UuPGJyLz5Zb3UgbWF5IG5lZWQgdG8gcmUtZW50ZXIgeW91ciBsb2dpbiBjcmVkZW50aWFscyB0byBhY2Nlc3Mgb3VyIHByb3RlY3RlZCBhcmVhcy4nOwokbGFuZ1snYWNjb3VudF92ZXJpZmljYXRpb24nXSA9ICdBY2NvdW50IFZlcmlmaWNhdGlvbic7CiRsYW5nWydwcm9tcHRfdmVyaWZ5X3BhZ2UnXSA9ICdQYWdlIElEL0FsaWFzIHRvIEhhbmRsZSB0aGUgVmVyaWZpY2F0aW9uIFByb2Nlc3MgKic7CiRsYW5nWydpbmZvX3ZlcmlmeWVtYWlsX3NlbnQnXSA9ICdWZXJpZmljYXRpb24gaW5zdHJ1Y3Rpb25zIGhhdmUgYmVlbiBzZW50JzsKJGxhbmdbJ2Vycm9yX3ZhbGlkYXRlX2luc3VmZmljaWVudGluZm8nXSA9ICdUaGlzIHVzZXIgbXVzdCByZXZhbGlkYXRlIGhpbXNlbGYsIGJ1dCB0aGVyZSBpcyBub3QgZW5vdWdoIHVzZXIgaW5mb3JtYXRpb24gYXZhaWxhYmxlIHRvIG1ha2UgdGhhdCBwb3NzaWJsZS4nOwokbGFuZ1snaW5mb19tdXN0X3ZhbGlkYXRlJ10gPSAnVGhpcyB1c2VyIG11c3QgdmFsaWRhdGUgdGhlbXNlbHZlcyBiZWZvcmUgbG9nZ2luZyBpbic7CiRsYW5nWydtYW1zX3Byb3RlY3RlZF9sb2dvdXRsaW5rJ10gPSAnTUFNUyBMb2dvdXQgTGluayc7CiRsYW5nWydoZHJfYnVsa19zZXRwYXNzd29yZCddID0gJ0J1bGsgQWRqdXN0IFVzZXIgUGFzc3dvcmRzJzsKJGxhbmdbJ2luZm9fYnVsa19zZXRwYXNzd29yZCddID0gJ1RoaXMgZm9ybSBhbGxvd3MgZXhwbGljaXRseSBzZXR0aW5nIHRoZSBwYXNzd29yZCBmb3Igc2VsZWN0ZWQgdXNlcnMuICBUaGUgdXNlcnMgYXJlIG5vdCBzZW50IGFuIGVtYWlsIGluZGljYXRpbmcgdGhhdCB0aGVpciBwYXNzd29yZCBoYXMgY2hhbmdlZC4gIFRoZSBwYXNzd29yZCBzcGVjaWZpZWQgbXVzdCBjb25maXJtIHRvIHRoZSBwYXNzd29yZCBydWxlcyBpbiB0aGUgbW9kdWxlIHNldHRpbmdzLic7CiRsYW5nWydoZHJfYnVsa19zZXRleHBpcnknXSA9ICdCdWxrIEFkanVzdCBVc2VyIEV4cGlyeSc7CiRsYW5nWydpbmZvX2J1bGtfc2V0ZXhwaXJ5J10gPSAnVGhpcyBmb3JtIGFsbG93cyBhZGp1c3RpbmcgdGhlIGV4cGlyeSBkYXRlIGZvciB0aGUgc2VsZWN0ZWQgdXNlcnMuICBFeHBpcmVkIHVzZXJzIGNhbm5vdCBsb2dpbiB0byB0aGUgdGhlIHdlYnNpdGUuICBJdCBpcyBwb3NzaWJsZSB0byBzZXQgYW4gZXhwaXJ5IGRhdGUgdG8gdGhlIHBhc3QnOwokbGFuZ1snYnVsa19kZWxldGUnXSA9ICdEZWxldGUnOwokbGFuZ1snYnVsa19kaXNhYmxlJ10gPSAnRGlzYWJsZSc7CiRsYW5nWydidWxrX2VuYWJsZSddID0gJ0VuYWJsZSc7CiRsYW5nWydidWxrX2ZvcmNlY2hwdyddID0gJ0ZvcmNlIHBhc3N3b3JkIGNoYW5nZSc7CiRsYW5nWydidWxrX2ZvcmNlY2hzZXR0aW5ncyddID0gJ0ZvcmNlIGNoYW5nZSBzZXR0aW5ncyc7CiRsYW5nWydidWxrX3NldHBhc3N3b3JkJ10gPSAnU2V0IGEgbmV3IHBhc3N3b3JkJzsKJGxhbmdbJ2J1bGtfc2V0ZXhwaXJ5J10gPSAnU2V0IGV4cGlyeSBkYXRlJzsKJGxhbmdbJ3dpdGhfc2VsZWN0ZWQnXSA9ICdXaXRoIHNlbGVjdGVkJzsKJGxhbmdbJ2J1bGtfc2VsZWN0b25lJ10gPSAnUGxlYXNlIHNlbGVjdCBvbmUgb3IgbW9yZSB1c2Vycyc7CiRsYW5nWydlcnJvcl9taXNzaW5ndXNlcnBhc3N3b3JkJ10gPSAnUGxlYXNlIGVudGVyIGEgcGFzc3dvcmQnOwokbGFuZ1sndHBsdHlwZV9jaHNldHRpbmdzX2Zvcm0nXSA9ICdDaGFuZ2UgU2V0dGluZ3MgRm9ybSc7CiRsYW5nWyd0cGx0eXBlX2ZvcmdvdF9wYXNzd29yZF9mb3JtJ10gPSAnRm9yZ290IFBhc3N3b3JkIEZvcm0nOwokbGFuZ1sndHBsdHlwZV9mb3Jnb3RfcGFzc3dvcmRfZW1haWwnXSA9ICdGb3Jnb3QgUGFzc3dvcmQgRW1haWwnOwokbGFuZ1sndHBsdHlwZV92ZXJpZnlfZW1haWwnXSA9ICdWZXJpZmljYXRpb24gRW1haWwnOwokbGFuZ1sndHBsdHlwZV9mb3Jnb3RfcGFzc3dvcmRfdmVyaWZ5J10gPSAnRm9yZ290dGVuIFBhc3N3b3JkIFZlcmlmeSBGb3JtJzsKJGxhbmdbJ3RwbHR5cGVfZm9yY2VfbmV3X3Bhc3N3b3JkJ10gPSAnRm9yY2UgTmV3IFBhc3N3b3JkJzsKJGxhbmdbJ3RwbHR5cGVfbG9zdF91c2VybmFtZV9mb3JtJ10gPSAnTG9zdCBVc2VybmFtZSBGb3JtJzsKJGxhbmdbJ3RwbHR5cGVfbG9zdF91c2VybmFtZV9jb25maXJtJ10gPSAnTG9zdCBVc2VybmFtZSBDb25maXJtIEZvcm0nOwokbGFuZ1sndHBsdHlwZV92ZXJpZnlfZm9ybSddID0gJ0FjY291bnQgVmVyaWZpY2F0aW9uIEZvcm0nOwokbGFuZ1sndHBsdHlwZV92aWV3X3VzZXInXSA9ICdWaWV3IFVzZXInOwokbGFuZ1sndHBsdHlwZV9yZXNldF9zZXNzaW9uJ10gPSAnUmVzZXQgU2Vzc2lvbic7CiRsYW5nWydtc2dfdXNlcmFkZGVkJ10gPSAnTmV3IHVzZXIgYWRkZWQgc3VjY2Vzc2Z1bGx5JzsKJGxhbmdbJ21zZ191c2VybW9kaWZpZWQnXSA9ICdVc2VyIGRldGFpbHMgaGF2ZSBiZWVuIHVwZGF0ZWQnOwokbGFuZ1snZXJyb3JfZmxkdmFsbGVuZ3RoJ10gPSAnVGhlIHZhbHVlIHNwZWNpZmllZCBmb3IgJXMgdG9vIGxvbmcnOwokbGFuZ1sndGl0bGVfYWRtaW5uYXZfc2V0dGluZ3MnXSA9ICdTZXR0aW5ncyAtIE1BTVMnOwokbGFuZ1snZGVzY19hZG1pbm5hdl9zZXR0aW5ncyddID0gJ1NldHRpbmdzIGZvciB0aGUgTWVtYmVycyBBcmVhIE1hZGUgU2ltcGxlIG1vZHVsZSc7CiRsYW5nWyd0cGx0eXBlX01BTVMnXSA9ICdNZW1iZXJzIEFyZWEgTWFkZSBTaW1wbGUnOwokbGFuZ1sndHBsdHlwZV9sb2dpbl9mb3JtJ10gPSAnTG9naW4gRm9ybSc7CiRsYW5nWyd0cGx0eXBlX2xvZ291dF9mb3JtJ10gPSAnTG9nb3V0IEZvcm0nOwokbGFuZ1sncHJvbXB0X2ZvciddID0gJ0Zvcic7CiRsYW5nWydwcm9tcHRfZm9yY2VfY2hzZXR0aW5ncyddID0gJ0ZvcmNlIHRoZSB1c2VyIHRvIGNoYW5nZSBzZXR0aW5ncyBvbiB0aGUgbmV4dCBsb2dpbic7CiRsYW5nWydwcm9tcHRfZm9yY2VfcmV2YWxpZGF0ZSddID0gJ1RoaXMgdXNlciBtdXN0IHZhbGlkYXRlIHRoZW1lc2VsdmVzIGFmdGVyIHRoZSBuZXh0IGxvZ2luJzsKJGxhbmdbJ01BTVNcXFByb3RlY3RlZFNlY3Rpb25IZWFkJ10gPSAnTUFNUyBQcm90ZWN0ZWQgU2VjdGlvbkhlYWRlcic7CiRsYW5nWydNQU1TX1Byb3RlY3RlZFNlY3Rpb25IZWFkJ10gPSAnTUFNUyBQcm90ZWN0ZWQgU2VjdGlvbkhlYWRlcic7CiRsYW5nWydtYW1zX3Byb3RlY3RlZF9zZWN0aW9uaGVhZCddID0gJ01BTVMgUHJvdGVjdGVkIFNlY3Rpb25IZWFkZXInOwokbGFuZ1snZXJyb3JfbG9zdHVuX2JhZHBhc3N3b3JkJ10gPSAnU29ycnkuLi4gYnV0IHRoZSBwYXNzd29yZCB5b3UgcHJvdmlkZWQgaXMgaW5jb3JyZWN0Lic7CiRsYW5nWydlcnJvcl9sb3N0dW5fdXNlcm5vdGZvdW5kJ10gPSAnU29ycnkuLi4gZ2l2ZW4gdGhlIGluZm9ybWF0aW9uIHlvdSBwcm92aWRlZC4uLiB3ZSBjb3VsZCBub3QgZmluZCB5b3VyIHVzZXIgYWNjb3VudCc7CiRsYW5nWydlcnJvcl9sb3N0dW5fbm9kYXRhJ10gPSAnWW91IGRpZCBub3QgZW50ZXIgc3VmZmljaWVudCBkYXRhIGludG8gdGhlIGxvc3QgdXNlcm5hbWUgZm9ybSBmb3IgdXMgdG8gYmUgYWJsZSB0byBmaW5kIHlvdXIgYWNjb3VudCBpbiBvdXIgZGF0YWJhc2UuJzsKJGxhbmdbJ2luZm9fbG9zdHVuX3RleHRmaWVsZCddID0gJ0lmIHlvdSBjYW4gcmVjYWxsIGEgcG9ydGlvbiBvZiB0aGUgdGV4dCBmb3IgdGhpcyBmaWVsZCBwbGVhc2UgZW50ZXIgaXQgaGVyZSAobWluaW11bSBvZiA0IGNoYXJhY3RlcnMgbm90IGluY2x1ZGluZyB3aGl0ZXNwYWNlKSc7CiRsYW5nWydpbmZvX2xvc3R1bl90ZXh0YXJlYSddID0gJ0lmIHlvdSBjYW4gcmVjYWxsIHNvbWUgb2YgdGhlIHRleHQgeW91IG1heSBoYXZlIGVudGVyZWQgaW4gdGhpcyBmaWVsZCwgcGxlYXNlIGVudGVyIGEgcG9ydGlvbiBvZiBpdCBoZXJlLiAgVGhpcyB3aWxsIGNyZWF0ZSBhIHN1YnN0cmluZyBzZWFyY2guICBZb3UgbXVzdCBlbnRlciBhdCBsZWFzdCA0IGNoYXJhY3RlcnMuJzsKJGxhbmdbJ2luZm9fbG9zdHVuX2VtYWlsJ10gPSAnSWYgdGhlcmUgYXJlIG11bHRpcGxlIGVtYWlsIGFkZHJlc3NlcyBhc3NvY2lhdGVkIHdpdGggeW91ciBhY2NvdW50LCB0cnkgdG8gZW50ZXIgYXQgbGVhc3Qgb25lIG9mIHRoZW0gaGVyZS4gIFRoaXMgY2FuIGFpZGUgaW4gdW5pcXVlbHkgaWRlbnRpZnlpbmcgeW91JzsKJGxhbmdbJ2luZm9fbG9zdHVzZXJuYW1lJ10gPSAnPHA+U28uLi4geW91IHNlZW0gdG8gaGF2ZSBmb3Jnb3R0ZW4gb3IgbG9zdCB0aGUgdXNlcm5hbWUgb3IgZW1haWwgYWRkcmVzcyB5b3UgdXNlZCB0byBsb2dpbiB0byB0aGlzIGFjY291bnQgd2l0aC4gIERvblwndCBGcmV0LCB3ZSBjYW4gaGVscC48L3A+PHA+RW50ZXIgYXMgbXVjaCBpbmZvcm1hdGlvbiBhcyBwb3NzaWJsZSBpbnRvIHRoaXMgZm9ybSwgYW5kIHdlIHdpbGwgc2VlIGlmIHdlIGNhbiB1bmlxdWVseSBpZGVudGlmeSB5b3UgYW5kIGZpbmQgeW91IHlvdXIgbG9naW4gbmFtZS48L3A+JzsKJGxhbmdbJ2Vycm9yX3NlY3VyaXR5J10gPSAnSW52YWxpZCBmb3JtIHN1Ym1pc3Npb24gKHNvbWUgc2VjdXJpdHkgZGF0YSBpcyBtaXNzaW5nIG9yIGludmFsaWQpLic7CiRsYW5nWydlcnJvcl9kZWxldGVwcm9wJ10gPSAnQW4gZXJyb3Igb2NjdXJyZWQgZGVsZXRpbmcgdGhlIHByb3BlcnR5JzsKJGxhbmdbJ2Vycm9yX2FjdGlvbl9ub3Rjb25maXJtZWQnXSA9ICdPb3BzLiAgSXQgbG9va3MgbGlrZSB5b3UgZmFpbGVkIHRvIGNvbmZpcm0gYW4gaW1wb3J0YW50IGFjdGlvbi4nOwokbGFuZ1snbXNnX2NvbmZpcm1fZGVsZXRlcHJvcCddID0gJ1lvdSBtdXN0IHNlbGVjdCAmcXVvdDtZZXMmcXVvdDsgaW4gdGhlIGNvbmZpcm1hdGlvbiBib3ggdG8gY29uZmlybSB0aGF0IHlvdSB3aXNoIHRvIGRlbGV0ZSB0aGlzIHByb3BlcnR5Lic7CiRsYW5nWydwcm9tcHRfY29uZmlybV9kZWxldGVwcm9wJ10gPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIHByb3BlcnR5Pyc7CiRsYW5nWyd3YXJuX2RlbGV0ZXByb3AnXSA9ICc8c3Ryb25nPlVzZSBDYXV0aW9uPC9zdHJvbmc+IERlbGV0aW5nIGEgcHJvcGVydHkgd2lsbCBkZWxldGUgYW55IGRhdGEgYXNzb2NpYXRlZCB3aXRoIGFueSB1c2VycyBmb3IgdGhpcyBwcm9wZXJ0eS4gIEl0IHdpbGwgYWxzbyByZW1vdmUgdGhpcyBwcm9wZXJ0eSBmcm9tIGFsbCBncm91cCByZWxhdGlvbnMuJzsKJGxhbmdbJ2hkcl9kZWxldGVwcm9wJ10gPSAnRGVsZXRlIFByb3BlcnR5JzsKJGxhbmdbJ21zZ19jYW5jZWxsZWQnXSA9ICdPcGVyYXRpb24gY2FuY2VsbGVkJzsKJGxhbmdbJ2Vycm9yX2RlbGV0ZV9wcm9wZGVmbiddID0gJ1NvcnJ5LCBidXQgdGhpcyBwcm9wZXJ0eSBjYW5ub3QgYmUgZGVsZXRlZC4gIEFzIGl0IGlzIGFzc29jaWF0ZWQgYXMgcmVxdWlyZWQsIG9yIGhpZGRlbiB3aXRoIG9uZSBvciBtb3JlIHVzZXIgZ3JvdXBzLiAgT25seSBvcHRpb25hbC9vZmYgcHJvcGVydGllcyBjYW4gYmUgZGVsZXRlZC4nOwokbGFuZ1sndGl0bGVfYWRkX3VzZXInXSA9ICdDcmVhdGUgYSBuZXcgdXNlciBhY2NvdW50JzsKJGxhbmdbJ2luZm9fcGFzc3dvcmRfcmVzZXQnXSA9ICdZb3VyIHBhc3N3b3JkIGhhcyBzdWNjZXNzZnVsbHkgYmVlbiByZXNldC4gIFBsZWFzZSBsb2dpbiB0byBjb250aW51ZS4nOwokbGFuZ1snZXJyb3JfcGFzc3dvcmRub3RjaGFuZ2VkJ10gPSAnUGxlYXNlIGVuc3VyZSB5b3UgY2hhbmdlIHlvdXIgcGFzc3dvcmQgdG8gYSBuZXcgdmFsdWUsIGFuZCB2ZXJpZnkgdGhhdCBpdCBpcyBjb3JyZWN0Lic7CiRsYW5nWydtc2dfZm9yY2VfbmV3cHcnXSA9ICdXZWxjb21lIHRvIHRoZSBzeXN0ZW0uICBGb3Igc2VjdXJpdHkgcHVycG9zZXMsIHBsZWFzZSBzcGVjaWZ5IGEgbmV3IHBhc3N3b3JkLic7CiRsYW5nWydsYmxfdGVtcGxhdGUnXSA9ICdUZW1wbGF0ZSc7CiRsYW5nWydpbmZvX2ZvcmNlX25ld3B3X3RlbXBsYXRlJ10gPSAnVGhpcyB0ZW1wbGF0ZSBpcyB1c2VkIHRvIGRpc3BsYXkgdGhlIGZvcm0gdG8gZm9yY2UgdGhlIHVzZXIgdG8gY2hhbmdlIGhpcyBwYXNzd29yZC4nOwokbGFuZ1snZm9yY2VfbmV3cHdfdGVtcGxhdGUnXSA9ICdGb3JjZSBOZXcgUGFzc3dvcmQgVGVtcGxhdGUnOwokbGFuZ1sncHJvbXB0X2ZvcmNlX25ld3B3J10gPSAnRm9yY2UgdGhpcyB1c2VyIHRvIHJlc2V0IGhpcyBwYXNzd29yZCBhdCB0aGUgbmV4dCBsb2dpbic7CiRsYW5nWydwcm9tcHRfZGlzYWJsZWQnXSA9ICdJcyB0aGlzIGFjY291bnQgZGlzYWJsZWQ/JzsKJGxhbmdbJ21zZ191c2VyX3N0YXRlX2NoYW5nZWQnXSA9ICdVc2VyIHN0YXRlIGNoYW5nZWQnOwokbGFuZ1snaW5mb19kaXNhYmxlZCddID0gJ1RoaXMgdXNlciBhY2NvdW50IGlzIGRpc2FibGVkLCBwcmV2ZW50aW5nIGxvZ2luJzsKJGxhbmdbJ2VuYWJsZV91c2VyJ10gPSAnRW5hYmxlIHRoaXMgdXNlciBhY2NvdW50JzsKJGxhbmdbJ2Rpc2FibGVfdXNlciddID0gJ0Rpc2FibGUgdGhpcyB1c2VyIGFjY291bnQgYW5kIGVuc3VyZSB0aGF0IHRoZSB1c2VyIGlzIGxvZ2dlZCBvdXQnOwokbGFuZ1snZXJyb3JfYWNjb3VudGRpc2FibGVkJ10gPSAnV2UgYXJlIHNvcnJ5LCBidXQgdGhpcyBhY2NvdW50IGFwcGVhcnMgdG8gaGF2ZSBiZWVuIGRpc2FibGVkLiAgUGxlYXNlIGNvbnRhY3Qgc2l0ZSBhZG1pbmlzdHJhdG9ycyB0byByZXNvbHZlIHRoaXMgaXNzdWUnOwokbGFuZ1sndGl0bGVfZm9yZ290cHcnXSA9ICdGb3Jnb3R0ZW4gUGFzc3dvcmQnOwokbGFuZ1sndmVyaWZ5X2lkZW50aXR5J10gPSAnVmVyaWZ5IHlvdXIgaWRlbnRpdHknOwokbGFuZ1snNDAzZXJyb3InXSA9ICdHZW5lcmF0ZSBhIDQwMyBFcnJvcic7CiRsYW5nWydwcm9tcHRfZW5oYW5jZWRwdyddID0gJ1JlcXVpcmUgYSBzdHJvbmcgcGFzc3dvcmQnOwokbGFuZ1snaW5mb19lbmhhbmNlZHB3J10gPSAnSWYgZW5hYmxlZCwgcGFzc3dvcmRzIHdpbGwgcmVxdWlyZSBhdCBsZWFzdCBvbmUgdXBwZXJjYXNlIGFscGhhYmV0aWMgY2hhcmFjdGVyIGFuZCBvbmUgZGlnaXQuJzsKJGxhbmdbJ3Byb21wdF9wd3JlcXVpcmVkY2hhcnMnXSA9ICdSZXF1aXJlIG9uZSBvZiB0aGVzZSBjaGFyYWN0ZXJzIGluIHRoZSBwYXNzd29yZCc7CiRsYW5nWydpbmZvX3B3cmVxdWlyZWRjaGFycyddID0gJ0lmIG5vbiBlbXB0eSwgYW5kIHN0cm9uZyBwYXNzd29yZHMgYXJlIGVuYWJsZWQsIGF0IGxlYXN0IG9uZSBvZiB0aGUgc3BlY2lmaWVkIGNoYXJhY3RlcnMgd2lsbCBiZSByZXF1aXJlZCBpbiB0aGUgcGFzc3dvcmQgaW4gYWRkaXRpb24gdG8gdGhlIHN0cm9uZyBwYXNzd29yZCByZXF1aXJlbWVudHMuJzsKJGxhbmdbJ2Vycm9yX2NhbnRzZXRwcm9wZXJ0eXR5cGUnXSA9ICdDYW5ub3Qgc2V0IHByb3BlcnR5IG9mIHRoaXMgdHlwZSc7CiRsYW5nWydpbmZvX2ltcG9ydF9mb3JtYXQnXSA9ICc8cD5Gb3IgaW5mb3JtYXRpb24gb24gdGhlIGltcG9ydCBmb3JtYXQgeW91IHNob3VsZCBjcmVhdGUgYSBzYW1wbGUgdXNlciAob3IgdHdvKSBpbiB0aGUgZGVzaXJlZCBncm91cHMgYW5kIGV4cG9ydCB0aGF0IGluZm9ybWF0aW9uLiAgVGhlIHJlc3VsdGluZyBmaWxlIGNhbiB0aGVuIGJlIHVzZWQgYXMgYSB0ZW1wbGF0ZSBmb3IgZnVydGhlciBpbXBvcnRzPC9wPjxici8+CiA8cD5BZGRpdGlvbmFsbHksIGEgdHh0cGFzc3dvcmQgY29sdW1uIGNhbiBiZSBhZGRlZCB0byB0aGUgaW1wb3J0IGZpbGUgdG8gZGVmaW5lIChpbiBwbGFpbiB0ZXh0KSB0aGUgcGFzc3dvcmQgZm9yIHVzZXJzLiAgSWYgdGhlIHR4dHBhc3N3b3JkIGNvbHVtbiBpcyBlbXB0eSBmb3IgYW4gZXhpc3RpbmcgdXNlciBoaXMgcGFzc3dvcmQgaXMgbm90IHRvdWNoZWQuICBJZiB0aGlzIGNvbHVtbiBpcyBlbXB0eSBmb3IgYSBuZXcgdXNlciwgb3Igbm90IHByb3ZpZGVkIGF0IGFsbCB0aGUgaGFyZGNvZGVkIHBhc3N3b3JkICZxdW90O2NoYW5nZW1lJnF1b3Q7IGlzIHVzZWQuJzsKJGxhbmdbJ2ltcG9ydF9kZWxldGVkdXNlciddID0gJ0RlbGV0ZWQgdXNlciAlcyc7CiRsYW5nWydlcnJvcl9leHBvcnRfbm91c2VycyddID0gJ05vIHVzZXJzIGZvdW5kIHRvIGV4cG9ydCc7CiRsYW5nWydwcm9tcHRfZXhwb3J0X3VzZXJzJ10gPSAnRXhwb3J0IFVzZXJzJzsKJGxhbmdbJ3RpdGxlX2V4cG9ydF91c2VycyddID0gJ0V4cG9ydCBVc2VycyB0byBhbiBBU0NJSSBmaWxlJzsKJGxhbmdbJ2luZm9fZW5jcnlwdCddID0gJ0VuY3J5cHRlZCBwcm9wZXJ0aWVzIGNhbm5vdCBiZSBleHBvcnRlZCB0byBBU0NJSSBvciB2aWV3ZWQgYnkgYW4gYWRtaW5pc3RyYXRvci4gIFRoZXkgY2FuIG9ubHkgYmUgZWRpdGVkIGJ5IHRoZSBhdXRob3JpemVkIHVzZXInOwokbGFuZ1snZXJyb3JfaW1wb3J0Z3JvdXBuYW1lJ10gPSAnSW52YWxpZCwgb3IgZW1wdHkgZ3JvdXAgbmFtZSBzcGVjaWZpZWQnOwokbGFuZ1snZXJyb3JfaW1wb3J0X2NvbHVtbmNvdW50J10gPSAnSW5jb3JyZWN0IGNvbHVtbiBjb3VudCc7CiRsYW5nWydwcm9tcHRfZGVsaW1pdGVyJ10gPSAnRGVsaW1pdGVyJzsKJGxhbmdbJ2Vycm9yX2NyZWF0ZXRtcGZpbGUnXSA9ICdQcm9ibGVtIGNyZWF0aW5nIHRlbXBvcmFyeSBmaWxlJzsKJGxhbmdbJ3Byb21wdF9kZWxldGVfdXNlcnMnXSA9ICdEZWxldGUgZXh0cmEgdXNlcnMnOwokbGFuZ1snaW5mb19pbXBvcnRfZGVsZXRlX3VzZXJzJ10gPSAnSWYgZW5hYmxlZCwgYW5kIG9ubHkgPHN0cm9uZz5vbmUgdXNlciBncm91cDwvc3Ryb25nPiBpcyBtZW50aW9uZWQgaW4gdGhlIGltcG9ydCBmaWxlLCB1c2VycyB0aGF0IGFyZSBtZW1iZXJzIG9mIHRoYXQgdXNlciBncm91cCBidXQgbm90IG1lbnRpb25lZCBpbiB0aGUgaW1wb3J0IGZpbGUsIHdpbGwgYmUgZGVsZXRlZC4gIENhdXRpb24gc2hvdWxkIGJlIHVzZWQgaGVyZSwgYXMgbm8gY2hlY2tzIGFyZSBkb25lIHRvIHNlZSBpZiB0aGUgZGVsZXRlZCB1c2VycyBhcmUgbWVtYmVycyBvZiBhbnkgb3RoZXIgZ3JvdXBzLic7CiRsYW5nWyd0aXRsZV9pbXBvcnRfdXNlcnMnXSA9ICdJbXBvcnQgdXNlcnMgZnJvbSBhIENTViB0eXBlIGZpbGUnOwokbGFuZ1snZnJvbnRlbmRfYWNjZXNzJ10gPSAnVmlld2Vycyc7CiRsYW5nWydlcnJvcl9sb3N0dW5fbm9jb250cm9scyddID0gJ0Nhbm5vdCBkaXNwbGF5IGxvc3R1c2VybmFtZSBmb3JtLi4uIG5vIHN1aXRhYmxlIGZpZWxkcyBmb3VuZCB0byBkaXNwbGF5JzsKJGxhbmdbJ2luZm9fZmlsdGVyX3NvcnRieSddID0gJzxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gQ29sdW1uIHNvcnRpbmcgd2lsbCBwcm92aWRlIGFkZGl0aW9uYWwgc29ydGluZyBvbiBtYXRjaGVkIGVsZW1lbnRzJzsKJGxhbmdbJ2FueSddID0gJ0FueSc7CiRsYW5nWydzb3J0YnlfdXNlcm5hbWVfYXNjJ10gPSAnVXNlcm5hbWUgKGFzY2VuZGluZyknOwokbGFuZ1snc29ydGJ5X3VzZXJuYW1lX2Rlc2MnXSA9ICdVc2VybmFtZSAoZGVzY2VuZGluZyknOwokbGFuZ1snc29ydGJ5X2NyZWF0ZV9hc2MnXSA9ICdDcmVhdGUgRGF0ZSAoYXNjZW5kaW5nKSc7CiRsYW5nWydzb3J0YnlfY3JlYXRlX2Rlc2MnXSA9ICdDcmVhdGUgRGF0ZSAoZGVzY2VuZGluZyknOwokbGFuZ1snc29ydGJ5X2V4cGlyZXNfYXNjJ10gPSAnRXhwaXJ5IERhdGUgKGFzY2VuZGluZyknOwokbGFuZ1snc29ydGJ5X2V4cGlyZXNfZGVzYyddID0gJ0V4cGlyeSBEYXRlIChkZXNjZW5kaW5nKSc7CiRsYW5nWydpbXBvcnRfZnJvbV9mZXUnXSA9ICdJbXBvcnQgRnJvbSBGcm9udCBFbmQgVXNlcnMnOwokbGFuZ1snaW5mb19pbXBvcnRfZnJvbV9mZXUnXSA9ICdGcm9udCBFbmQgVXNlcnMgbW9kdWxlIGhhcyBiZWVuIGRldGVjdGVkLiBUaGlzIG1lYW5zIHRoYXQgeW91IGNhbiB0cnkgdG8gaW1wb3J0IGRhdGEgZnJvbSBpdC4gQWxsIGRhdGEgZXhjZXB0IGZvciB0ZW1wbGF0ZXMgYW5kIGJhY2tlbmQgcGVybWlzc2lvbnMgd2lsbCBiZSBjb3BpZWQuIEluIGNhc2Ugb2YgZXJyb3IgTUFNUyB3aWxsIHRyeSB0byByZXN0b3JlIGl0cyBwcmV2aW91cyBkYiB0YWJsZXMuJzsKJGxhbmdbJ2NvbmZpcm1faW1wb3J0X2Zyb21fZmV1J10gPSAnQXJlIHlvdSBzdXJlPyBUaGlzIGFjdGlvbiBtYXkgZGVsZXRlIGN1cnJlbnQgTUFNUyBEQiByZWNvcmRzISc7CiRsYW5nWydpbXBvcnQnXSA9ICdJbXBvcnQnOwoKJGxhbmdbJ2luZm9fZW5jcnlwdGVkJ10gPSAnRW5jcnlwdGVkIHByb3BlcnRpZXMgY2FuIG9ubHkgYmUgc2VlbiBhbmQgZWRpdGVkIGJ5IHRoZSB1c2VyLiAgTm90IGV2ZW4gdGhlIHNpdGUgYWRtaW5pc3RyYXRvciBjYW4gc2VlIG9yIG1hbmFnZSB0aGlzIGRhdGEuJzsKJGxhbmdbJ2VuY3J5cHRlZCddID0gJ0VuY3J5cHRlZCc7CiRsYW5nWydpbmZvX2Nvb2tpZW5hbWUnXSA9ICdJZiBzZXQsIHRoZSAmcXVvdDtyZW1lbWJlciBtZSZxdW90OyBmdW5jdGlvbmFsaXR5IHdpbGwgYmUgZW5hYmxlZC4gIFRoaXMgaXMgc2ltaWxhciB0byB0aGUgY29va2llIGtlZXBhbGl2ZSBmdW5jdGlvbmFsaXR5LCBidXQgbGFzdHMgdXAgdG8gc2l4dHkgZGF5cy4gIFRvIGludmFsaWRhdGUgYWxsIGV4aXN0aW5nIHJlbWVtYmVybWUgY29va2llcywgY2hhbmdlIHRoaXMgY29va2llIG5hbWUuICBUbyBkaXNhYmxlIHRoaXMgZnVuY3Rpb25hbGl0eSwgeW91IHNob3VsZCBjbGVhciB0aGUgY29va2llbmFtZSwgYW5kIHBvc3NpYmx5IGNoYW5nZSB5b3VyIGxvZ2luIHRlbXBsYXRlLic7CiRsYW5nWydtc2dfdXNlcm5hbWVfcmVhZG9ubHknXSA9ICdUaGUgYXV0aGVudGljYXRpb24gY29uc3VtZXIgZG9lcyBub3QgcGVybWl0IGNoYW5naW5nIHRoZSB1c2VybmFtZSBmb3IgdGhpcyBhY2NvdW50JzsKJGxhbmdbJ21zZ19wYXNzd29yZF9yZWFkb25seSddID0gJ1RoZSBhdXRoZW50aWNhdGlvbiBjb25zdW1lciBkb2VzIG5vdCBwZXJtaXQgY2hhbmdpbmcgdGhlIHBhc3N3b3JkIGZvciB0aGlzIGFjY291bnQnOwokbGFuZ1sncHJvbXB0X25vcm1hbGxvZ2luJ10gPSAnU2lnbiBJbic7CiRsYW5nWydtb3ZlX3VwJ10gPSAnTW92ZSBVcCc7CiRsYW5nWydtb3ZlX2Rvd24nXSA9ICdNb3ZlIERvd24nOwokbGFuZ1sndGl0bGVfcHJvcG1vZHVsZSddID0gJ1RoaXMgcHJvcGVydHkgaXMgY3JlYXRlZCBieSBhIG1vZHVsZSwgYW5kIGNhbm5vdCBiZSBlZGl0ZWQnOwokbGFuZ1snbm90X2F2YWlsYWJsZSddID0gJ05vdCBBdmFpbGFibGUnOwokbGFuZ1sncHJvbXB0X2RmbHRfY2hlY2tlZCddID0gJ0J5IGRlZmF1bHQsIHRoaXMgZmllbGQgc2hvdWxkIGJlIGNoZWNrZWQnOwokbGFuZ1snb3BlcmF0aW9uX2NvbXBsZXRlZCddID0gJ09wZXJhdGlvbiBDb21wbGV0ZWQnOwokbGFuZ1snbWVtYmVycyddID0gJ01lbWJlcnMnOwokbGFuZ1sndmlld19maWx0ZXInXSA9ICdWaWV3IEZpbHRlcic7CiRsYW5nWydkYXRhJ10gPSAnRGF0YSc7CiRsYW5nWydhcHBsaWVkJ10gPSAnQXBwbGllZCc7CiRsYW5nWydmaXJzdHBhZ2UnXSA9ICcmbHQ7Jmx0Oyc7CiRsYW5nWydwcmV2cGFnZSddID0gJyZsdDsnOwokbGFuZ1snbmV4dHBhZ2UnXSA9ICcmZ3Q7JzsKJGxhbmdbJ2xhc3RwYWdlJ10gPSAnJmd0OyZndDsnOwokbGFuZ1sncGFnZSddID0gJ1BhZ2UnOwokbGFuZ1sncHJvbXB0X2FsbG93X2NoYW5nZXVzZXJuYW1lJ10gPSAnQWxsb3cgQ2hhbmdpbmcgVXNlcm5hbWUnOwokbGFuZ1snaW5mb19hbGxvd19jaGFuZ2V1c2VybmFtZSddID0gJ0lmIGVuYWJsZWQgdXNlcnMgd2lsbCBiZSBwZXJtaXR0ZWQgdG8gY2hhbmdlIHRoZWlyIHVzZXJuYW1lIGFsb25nIHdpdGggb3RoZXIgc2V0dGluZ3MnOwokbGFuZ1sndGVtcGxhdGVfc2F2ZWQnXSA9ICdUZW1wbGF0ZSBzYXZlZCc7CiRsYW5nWyd0ZW1wbGF0ZV9yZXNldGRlZmF1bHRzJ10gPSAnVGVtcGxhdGUgcmVzZXQgdG8gZGVmYXVsdHMnOwokbGFuZ1snbGJsX3NldHRpbmdzJ10gPSAnU2V0dGluZ3MnOwokbGFuZ1snbGJsX3RlbXBsYXRlcyddID0gJ1RlbXBsYXRlcyc7CiRsYW5nWydlbmFibGVfY2FwdGNoYSddID0gJ0VuYWJsZSBjYXB0Y2hhIG9uIHRoZSBsb2dpbiBmb3JtJzsKJGxhbmdbJ2luZm9fZW5hYmxlX2NhcHRjaGEnXSA9ICdJZiB0aGUgdXNlciBpcyBub3QgbG9nZ2VkIGluLCBhbmQgdGhlIG1vZHVsZSBwcmVmZXJlbmNlIHN0YXRlcyB0byBkaXNwbGF5IHRoZSBsb2dpbiBmb3JtLCB0aGlzIG9wdGlvbiBjb250cm9scyB3aGV0aGVyIGEgY2FwdGNoYSB3aWxsIGJlIGRpc3BsYXllZCBvbiB0aGUgbG9naW4gc2NyZWVuLiAgSWYgY2FwdGNoYSBpcyBhdmFpbGFibGUnOwokbGFuZ1sncGFnZXR5cGVfdW5hdXRob3JpemVkJ10gPSAnWW91IGFyZSBub3QgYXV0aG9yaXplZCB0byB2aWV3IHRoaXMgY29udGVudCc7CiRsYW5nWydpbmZvX2NvbnRlbnRwYWdlX2dyb3VwbGlzdCddID0gJ1NwZWNpZnkgYSBsaXN0IG9mIE1BTVMgZ3JvdXBzIHRoYXQgbWF5IGhhdmUgYWNjZXNzIHRvIHRoaXMgcGFnZS4gIFNlbGVjdGluZyBubyBncm91cHMgd2lsbCBhbGxvdyBhbnkgdXNlciBsb2dnZWQgaW4gdG8gTUFNUyB0byB2aWV3IHRoZSBwYWdlJzsKJGxhbmdbJ3BhZ2V0eXBlX3NldHRpbmdzJ10gPSAnUHJvdGVjdGVkIFBhZ2UgU2V0dGluZ3MnOwokbGFuZ1sncGFnZXR5cGVfZ3JvdXBzJ10gPSAnQWxsb3dlZCBHcm91cHMnOwokbGFuZ1snaW5mb19wYWdldHlwZV9ncm91cHMnXSA9ICdTZWxlY3QgdGhlIGdyb3VwcyB0aGF0IGFyZSAoYnkgZGVmYXVsdCkgYWxsb3dlZCB0byB2aWV3IHByb3RlY3RlZCBwYWdlcy4gIEFuIGVkaXRvciB3aXRoIHRoZSAmcXVvdDtNYW5hZ2UgQWxsIENvbnRlbnQmcXVvdDsgcGVybWlzc2lvbiBjYW4gb3ZlcnJpZGUgdGhpcyBmb3IgZWFjaCBwYWdlJzsKJGxhbmdbJ3BhZ2V0eXBlX2FjdGlvbiddID0gJ0FjdGlvbiBmb3IgaW5zdWZmaWNpZW50IGFjY2Vzcyc7CiRsYW5nWydpbmZvX3BhZ2V0eXBlX2FjdGlvbiddID0gJ1NwZWNpZnkgdGhlIGJlaGF2aW9yIGZvciBwZW9wbGUgYWNjZXNzaW5nIHRoaXMgcGFnZSB3aXRob3V0IHN1ZmZpY2llbnQgcGVybWlzc2lvbi4gIFlvdSBjYW4gZWl0aGVyIHJlZGlyZWN0IHRvIGEgc3BlY2lmaWVkIHBhZ2UsIG9yIGRpc3BsYXkgdGhlIGxvZ2luIGZvcm0nOwokbGFuZ1snc2hvd2xvZ2luZm9ybSddID0gJ1Nob3cgdGhlIExvZ2luIEZvcm0nOwokbGFuZ1sncmVkaXJlY3QnXSA9ICdSZWRpcmVjdCB0byBhIFBhZ2UnOwokbGFuZ1sncGFnZXR5cGVfcmVkaXJlY3R0byddID0gJ1JlZGlyZWN0IFRvJzsKJGxhbmdbJ2luZm9fcGFnZXR5cGVfcmVkaXJlY3R0byddID0gJ1NwZWNpZnkgdGhlIHBhZ2UgdG8gcmVkaXJlY3QgdG8uICBJZiB5b3Ugc2VsZWN0IG5vbmUsIGFuZCB0aGUgYWN0aW9uIGlzIHNldCB0byAmcXVvdDtyZWRpcmVjdCZxdW90OyB0aGUgdXNlciB3aWxsIGJlIHByZXNlbnRlZCB3aXRoIGEgbWVzc2FnZSBpbmRpY2F0aW5nIHRoYXQgdGhleSBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIHBhZ2UnOwokbGFuZ1sncGVybWlzc2lvbnMnXSA9ICdQZXJtaXNzaW9ucyc7CiRsYW5nWydNQU1TXFxQcm90ZWN0ZWRQYWdlJ10gPSAnTUFNUyBQcm90ZWN0ZWQgQ29udGVudCc7CiRsYW5nWydtYW1zX3Byb3RlY3RlZF9wYWdlJ10gPSAnTUFNUyBQcm90ZWN0ZWQgQ29udGVudCc7CiRsYW5nWydwcm9tcHRfdmlld3Byb3BzJ10gPSAnU2VsZWN0IEFkZGl0aW9uYWwgUHJvcGVydGllcyB0byBWaWV3JzsKJGxhbmdbJ3ZpZXcnXSA9ICdWaWV3JzsKJGxhbmdbJ2luZm9faWdub3JlX3VzZXJpZCddID0gJ0lmIGNoZWNrZWQgdGhlIGltcG9ydCByb3V0aW5lIHdpbGwgYXR0ZW1wdCB0byBhZGQgdXNlcnMgaW5kZXBlbmRlbnQgb2YgdGhlIHVzZXJpZCBjb2x1bW4uICBJZiBhIHVzZXIgd2l0aCB0aGUgbmFtZSBzcGVjaWZpZWQgaW4gdGhlIGltcG9ydCBmaWxlIGFscmVhZHkgZXhpc3RzLCBhbiBlcnJvciB3aWxsIGJlIGdlbmVyYXRlZCc7CiRsYW5nWydpZ25vcmVfdXNlcmlkJ10gPSAnSWdub3JlIFVzZXJJRCBDb2x1bW4gb24gSW1wb3J0JzsKJGxhbmdbJ2V4cG9ydF9wYXNzaGFzaCddID0gJ0V4cG9ydCB0aGUgcGFzc3dvcmQgaGFzaCB0byB0aGUgZmlsZSc7CiRsYW5nWydpbmZvX2V4cG9ydF9wYXNzaGFzaCddID0gJ1RoZSBwYXNzd29yZCBoYXNoIGlzIG9ubHkgdXNlZnVsIGlmIHRoZSBwYXNzd29yZCBzYWx0IG9uIHRoZSBpbXBvcnQgaG9zdCBpcyBpZGVudGljYWwgdG8gdGhhdCBvZiB0aGUgZXhwb3J0IGhvc3QnOwokbGFuZ1snZXJyb3JfYWRqdXN0c2FsdCddID0gJ1RoZSBwYXNzd29yZCBzYWx0IGNhbm5vdCBiZSBhZGp1c3RlZCc7CiRsYW5nWydwcm9tcHRfcHdzYWx0J10gPSAnUGFzc3dvcmQgU2FsdCc7CiRsYW5nWydpbmZvX3B3c2FsdCddID0gJ01lbWJlcnMgQXJlYSBNYWRlIFNpbXBsZSBzYWx0cyBhbGwgcGFzc3dvcmRzIHdpdGggdGhpcyBrZXkgd2hpY2ggaXMgY3JlYXRlZCB1cG9uIGluc3RhbGwuICBPbmNlIHVzZXJzIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgZGF0YWJhc2UgdGhlIHNhbHQgY2Fubm90IGJlIGNoYW5nZWQuIFRoZSBzYWx0IG1heSBiZSBlbXB0eSBmb3Igb2xkZXIgaW5zdGFsbHMuJzsKJGxhbmdbJ2FkdmFuY2VkX3NldHRpbmdzJ10gPSAnQWR2YW5jZWQgU2V0dGluZ3MnOwokbGFuZ1snaW5mb19zZXNzaW9udGltZW91dCddID0gJ1NwZWNpZnkgdGhlIG51bWJlciBvZiBzZWNvbmRzIGJlZm9yZSBhbiBpbmFjdGl2ZSB1c2VyIGlzIGF1dG9tYXRpY2FsbHkgbG9nZ2VkIG91dCBvZiB0aGUgd2Vic2l0ZSc7CiRsYW5nWydwcm9tcHRfZXhwaXJldXNlcnNfaW50ZXJ2YWwnXSA9ICdVc2VyIEV4cGlyeSBJbnRlcnZhbCc7CiRsYW5nWydpbmZvX2V4cGlyZXVzZXJzX2ludGVydmFsJ10gPSAnU3BlY2lmeSBhIHZhbHVlIChpbiBzZWNvbmRzKSB0aGF0IGluZGljYXRlcyBob3cgb2Z0ZW4gdGhlIHN5c3RlbSBzaG91bGQgZm9yY2UgdXNlcnMgd2hvXCdzIHNlc3Npb24gaGFzIGV4cGlyZWQgdG8gYmUgbG9nZ2VkIG91dC4gIFRoaXMgaXMgYW4gb3B0aW1pemF0aW9uIHRvIHNhdmUgZGF0YWJhc2UgcXVlcmllcy4gIElmIGxlZnQgZW1wdHkgb3Igc2V0IHRvIDAgZXhwaXJ5IHdpbGwgYmUgcGVyZm9ybWVkIG9uIGV2ZXJ5IHJlcXVlc3QuJzsKJGxhbmdbJ21zZ19zZXR0aW5nc2NoYW5nZWQnXSA9ICdZb3VyIHNldHRpbmdzIHdlcmUgc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQnOwokbGFuZ1snZm9yY2VkbG9nb3V0dGFza19kZXNjJ10gPSAnRm9yY2UgdXNlcnMgdG8gbG9nb3V0IGF0IHJlZ3VsYXIgaW50ZXJ2YWxzJzsKJGxhbmdbJ3Byb21wdF9mb3JjZWxvZ291dF90aW1lcyddID0gJ1RpbWVzIGZvciBmb3JjZWQgbG9nb3V0JzsKJGxhbmdbJ2luZm9fZm9yY2Vsb2dvdXRfdGltZXMnXSA9ICdTcGVjaWZ5IGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgdGltZXMgbGlrZSBISDpNTSxISDpNTSB3aGVyZSB1c2VycyB3aWxsIGJlIGZvcmNpYmx5IGxvZ2dlZCBvdXQuIE5vdGUsIHRoaXMgdXNlcyB0aGUgcHN1ZWRvY3JvbiBtZWNoYW5pc20gc28geW91IG11c3QgYmUgc3VyZSB0aGF0IHRoZSB0aW1lcyBlbnRlcmVkIGhlcmUgd2lsbCBjb2luY2lkZSByZWFzb25hYmx5IHdpdGggeW91ciAmcXVvdDtwc2V1ZG9jcm9uIGdyYW51bGFyaXR5JnF1b3Q7IGFuZCB0aGF0IHN1ZmZpY2llbnQgcmVxdWVzdHMgd2lsbCBvY2N1ciB0byB5b3VyIHdlYnNpdGUgdG8gZW5zdXJlIHRoYXQgcHNldWRvY3JvbiBpcyBleGVjdXRlZC4nOwokbGFuZ1sncHJvbXB0X2ZvcmNlbG9nb3V0X3Nlc3Npb25hZ2UnXSA9ICdFeGNsdWRlIHVzZXJzIHRoYXQgaGF2ZSBiZWVuIGFjdGl2ZSBpbiA8ZW0+KG1pbnV0ZXMpPC9lbT4nOwokbGFuZ1snaW5mb19mb3JjZWxvZ291dF9zZXNzaW9uYWdlJ10gPSAnSWYgc3BlY2lmaWVkLCBhbnkgdXNlcnMgdGhhdCBoYXZlIGJlZW4gYWN0aXZlIGluIHRoaXMgbnVtYmVyIG9mIG1pbnV0ZXMgd2lsbCBub3QgYmUgZm9yY2libHkgbG9nZ2VkIG91dCc7CiRsYW5nWydhcmV5b3VzdXJlX2RlbGV0ZSddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhlIHVzZXIgJXMnOwokbGFuZ1snZXJyb3JfaW52YWxpZGZpbGVleHRlbnNpb24nXSA9ICdUaGUgdXBsb2FkZWQgZmlsZSBkb2VzIG5vdCBtYXRjaCB0aGUgbGlzdCBvZiBhbGxvd2VkIGZpbGUgdHlwZXMnOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ0FsbCBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgTWVtYmVycyBBcmVhIE1hZGUgU2ltcGxlIG1vZHVsZSBoYXMgYmVlbiBkZWxldGVkJzsKJGxhbmdbJ2luZm9fZWNvbW1fcGFpZHJlZ2lzdHJhdGlvbiddID0gJ0lmIGVuYWJsZWQsIHRoaXMgbW9kdWxlIHdpbGwgbGlzdGVuIHRvIGV2ZW50cyBmcm9tIHRoZSBFY29tbWVyY2Ugc3VpdGUuICBUaGUgZm9sbG93aW5nIHNldHRpbmdzIG9ubHkgaGF2ZSBlZmZlY3QgaWYgdGhpcyBzZXR0aW5nIGlzIGVuYWJsZWQuJzsKJGxhbmdbJ3Byb21wdF9lY29tbV9wYWlkcmVnaXN0cmF0aW9uJ10gPSAnTGlzdGVuIHRvIE9yZGVyIEV2ZW50cyc7CiRsYW5nWydpbmZvX3BhaWRyZWdfc2V0dGluZ3MnXSA9ICdUaGUgZm9sbG93aW5nIHNldHRpbmdzIG9ubHkgYXBwbHkgaWYgdXNpbmcgc2VsZiByZWdpc3RyYXRpb24gYW5kIGFsbG93aW5nIGZvciBwYWlkIHJlZ2lzdHJhdGlvbic7CiRsYW5nWydub25lJ10gPSAnTm9uZSc7CiRsYW5nWydkZWxldGVfdXNlciddID0gJ0RlbGV0ZSBVc2VyJzsKJGxhbmdbJ2V4cGlyZV91c2VyJ10gPSAnRXhwaXJlIFVzZXInOwokbGFuZ1sncHJvbXB0X2FjdGlvbl9vcmRlcmNhbmNlbGxlZCddID0gJ0FjdGlvbiB0byBwZXJmb3JtIHdoZW4gYSBzdWJzY3JpcHRpb24gb3JkZXIgaXMgY2FuY2VsbGVkJzsKJGxhbmdbJ3Byb21wdF9hY3Rpb25fb3JkZXJkZWxldGVkJ10gPSAnQWN0aW9uIHRvIHBlcmZvcm0gd2hlbiBhIHN1YnNjcmlwdGlvbiBvcmRlciBpcyBkZWxldGVkJzsKJGxhbmdbJ2Vjb21tZXJjZV9zZXR0aW5ncyddID0gJ0Vjb21tZXJjZSBTZXR0aW5ncyc7CiRsYW5nWydzZWN1cmVmaWVsZG1hcmtlciddID0gJ1NlY3VyZSBGaWVsZCBNYXJrZXInOwokbGFuZ1snc2VjdXJlZmllbGRjb2xvciddID0gJ1NlY3VyZSBGaWVsZCBDb2xvcic7CiRsYW5nWydwcm9tcHRfZW5jcnlwdCddID0gJ1N0b3JlIHRoaXMgZGF0YSBlbmNyeXB0ZWQgaW4gdGhlIGRhdGFiYXNlJzsKJGxhbmdbJ2Vycm9yX25vdHN1cHBvcnRlZCddID0gJ1RoZSBjaG9zZW4gb3B0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZ2l2ZW4geW91ciBjdXJyZW50IGNvbmZpZ3VyYXRpb24nOwokbGFuZ1snYXVkaXRfdXNlcl9jcmVhdGVkJ10gPSAnVXNlciBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQnOwokbGFuZ1snaW5mb19hdXRvX2NyZWF0ZV91bmtub3duJ10gPSAnSWYgYSB1c2VyIGlzIGF1dGhlbnRpY2F0ZWQgYnkgYW4gZXh0ZXJuYWwgYXV0aGVudGljYXRpb24gbW9kdWxlIGJ1dCBpcyBub3Qga25vd24gaW4gdGhlIE1lbWJlcnMgQXJlYSBNYWRlIFNpbXBsZSBtb2R1bGUgc2hvdWxkIGFuIE1BTVMgYWNjb3VudCBiZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHk/JzsKJGxhbmdbJ3Byb21wdF9hdXRvX2NyZWF0ZV91bmtub3duJ10gPSAnQXV0b21hdGljYWxseSBDcmVhdGUgVW5rbm93biBVc2Vycyc7CiRsYW5nWydkaXNwbGF5X3NldHRpbmdzJ10gPSAnRGlzcGxheSBTZXR0aW5ncyc7CiRsYW5nWydpbmZvX3N0ZF9hdXRoX3NldHRpbmdzJ10gPSAnVGhlIGZvbGxvd2luZyBzZXR0aW5ncyBhcmUgb25seSBhcHBsaWNhYmxlIGlmIHVzaW5nIHRoZSAmcXVvdDtCdWlsdGluIEF1dGhlbnRpY2F0aW9uJnF1b3Q7Lic7CiRsYW5nWydpbmZvX3N1cHBvcnRfbG9zdHVuJ10gPSAnU2VsZWN0aW5nIE5vIHdpbGwgZGlzYWJsZSB0aGUgYWJpbGl0eSBmb3IgYSB1c2VyIHRvIHJlcXVlc3QgbG9zdCBsb2dpbiBpbmZvcm1hdGlvbiwgaXJyZXNwZWN0aXZlIG9mIG90aGVyIHNldHRpbmdzJzsKJGxhbmdbJ2luZm9fc3VwcG9ydF9sb3N0cHcnXSA9ICdTZWxlY3RpbmcgTm8gd2lsbCBkaXNhYmxlIHRoZSBhYmlsaXR5IGZvciBhIHVzZXIgdG8gYSBwYXNzd29yZCByZXNldCwgaXJyZXNwZWN0aXZlIG9mIG90aGVyIHNldHRpbmdzJzsKJGxhbmdbJ3Byb21wdF9zdXBwb3J0X2xvc3R1biddID0gJ0FsbG93IHVzZXJzIHRvIHJlcXVlc3QgdGhlaXIgdXNlcm5hbWUnOwokbGFuZ1sncHJvbXB0X3N1cHBvcnRfbG9zdHB3J10gPSAnQWxsb3cgdXNlcnMgdG8gcmVxdWVzdCBhIHBhc3N3b3JkIGNoYW5nZSc7CiRsYW5nWydhdXRoX3NldHRpbmdzJ10gPSAnQXV0aGVudGljYXRpb24gU2V0dGluZ3MnOwokbGFuZ1snYXV0aGVudGljYXRpb24nXSA9ICdCdWlsdGluIEF1dGhlbnRpY2F0aW9uJzsKJGxhbmdbJ2F1dGhfYnVpbHRpbiddID0gJ01BTVMgU3RhbmRhcmQgQXV0aGVudGljYXRpb24nOwokbGFuZ1snYXV0aF9tb2R1bGUnXSA9ICdBdXRoZW50aWNhdGlvbiBNb2R1bGUvTWV0aG9kJzsKJGxhbmdbJ2luZm9fYXV0aF9tb2R1bGUnXSA9ICdUaGUgTWVtYmVycyBBcmVhIE1hZGUgU2ltcGxlIG1vZHVsZSBzdXBwb3J0cyB1c2luZyBhbHRlcm5hdGUgYXV0aGVudGljYXRpb24gbWV0aG9kcywgd2l0aCB2YXJ5aW5nIGNhcGFiaWxpdGllcy4gIFNvbWUgZnVuY3Rpb25hbGl0eSB3aWxsIG5vdCBmdW5jdGlvbiBvciBiZSBkaXNhYmxlZCB3aGVuIG5vdCB1c2luZyB0aGUgYnVpbHQgaW4gYXV0aGVudGljYXRpb24gbWV0aG9kJzsKJGxhbmdbJ2Vycm9yX3VzZXJfbm9udW5pcXVlX2ZpZWxkX3ZhbHVlJ10gPSAnVGhlIHZhbHVlIHNwZWNpZmllZCBmb3IgJXMgaXMgYWxyZWFkeSBpbiB1c2UgYnkgYW5vdGhlciB1c2VyJzsKJGxhbmdbJ3VuaXF1ZSddID0gJ1VuaXF1ZSc7CiRsYW5nWydlcnJvcl9ub251bmlxdWVfZmllbGRfdmFsdWUnXSA9ICdUaGUgdmFsdWUgc3BlY2lmaWVkIGZvciAlcyAoJXMpIGlzIG5vdCB1bmlxdWUnOwokbGFuZ1sncHJvbXB0X2ZvcmNlX3VuaXF1ZSddID0gJ0ZvcmNlIHZhbHVlcyBvZiB0aGlzIHByb3BlcnR5IHRvIGJlIHVuaXF1ZSBhY3Jvc3MgYWxsIHVzZXIgYWNjb3VudHMnOwokbGFuZ1snaGVscF9yZXR1cm50byddID0gJ1VzZWQgd2l0aHQgaGUgbG9naW4gYW5kIGxvZ291dCBmb3JtcywgdGhpcyBwYXJhbWV0ZXIgaW5kaWNhdGVzIGEgcGFnZSBpZCBvciBhbGlhcyB0aGF0IHRoZSB1c2VyIHNob3VsZCBiZSByZXR1cm5lZCB0byBhZnRlciB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlLiAgVGhpcyB3aWxsIG92ZXJyaWRlIHRoZSByZXR1cm5sYXN0IGFuZCB0aGUgcmVkaXJlY3Rpb24gcHJlZmVyZW5jZXMuJzsKJGxhbmdbJ2hlbHBfaW5saW5lJ10gPSAnVXNlZCB3aXRoIHRoZSBsb2dpbiBmb3Jtcy9hY3Rpb24sIHRoaXMgcGFyYW1ldGVyIGluZGljYXRlcyB0aGF0IHRoZSByZXN1bHQgb2YgdGhlIGZvcm0gc2hvdWxkIHJlcGxhY2UgaXRzIG93biB0YWcgb24gdGhlIHNhbWUgcGFnZS4uLiAgdGhpcyB3aWxsIGhhdmUgbm8gZWZmZWN0IGlmIHJldHVybnRvLCByZXR1cm5sYXN0LCBvciBzb21lIHJlZGlyZWN0aW9uIHByZWZlcmVuY2VzIGFyZSBzZXQgcmVzdWx0aW5nIGluIGEgcmVkaXJlY3Rpb24gdG8gYSBkaWZmZXJlbnQgcGFnZS4nOwokbGFuZ1sndGl0bGVfcmVzZXRfc2Vzc2lvbiddID0gJ0xvZ2luIFNlc3Npb24gVGltZW91dCBXYXJuaW5nJzsKJGxhbmdbJ21zZ19yZXNldF9zZXNzaW9uJ10gPSAnWW91ciBsb2dpbiBzZXNzaW9uIGlzIGFib3V0IHRvIGV4cGlyZSwgcGxlYXNlIGNsaWNrICImcXVvdDtPayZxdW90OyB0byBjb25maXJtIHlvdXIgYWN0aXZpdHkgb24gdGhpcyB3ZWJzaXRlLic7CiRsYW5nWydvayddID0gJ09rJzsKJGxhbmdbJ3Jlc2V0c2Vzc2lvbl90ZW1wbGF0ZSddID0gJ1Jlc2V0IFNlc3Npb24gVGVtcGxhdGUnOwokbGFuZ1snaW5mb19uYW1lJ10gPSAnVGhpcyBpcyB0aGUgZmllbGQgbmFtZSwgdG8gYmUgdXNlZCBmb3IgYWRkcmVzc2luZyBpbiBzbWFydHkuICBJdCBtdXN0IGNvbnNpc3Qgb2Ygb25seSBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBhbmQgdW5kZXJzY29yZXMuJzsKJGxhbmdbJ3Zpc2l0b3JzX3RhYiddID0gJ1Zpc2l0b3JzJzsKJGxhbmdbJ21hbXNfZ3JvdXBzX3Byb21wdCddID0gJ1NlbGVjdCBvbmUgb3IgbW9yZSBNQU1TIGdyb3VwcyB0aGF0IGFyZSBhbGxvd2VkIHRvIHZpZXcgdGhpcyBwYWdlJzsKJGxhbmdbJ2Vycm9yX211c3RzZWxlY3RfZ3JvdXAnXSA9ICdBIGdyb3VwIG11c3QgYmUgc2VsZWN0ZWQnOwokbGFuZ1snc2VsZWN0b25lJ10gPSAnU2VsZWN0IE9uZSc7CiRsYW5nWydzdGFydF95ZWFyJ10gPSAnU3RhcnQgWWVhcic7CiRsYW5nWydlbmRfeWVhciddID0gJ0VuZCBZZWFyJzsKJGxhbmdbJ2RhdGUnXSA9ICdEYXRlJzsKJGxhbmdbJ3Byb21wdF90aHVtYm5haWxfc2l6ZSddID0gJ1RodW1ibmFpbCBTaXplJzsKJGxhbmdbJ09uVXBkYXRlR3JvdXAnXSA9ICdPbiBVc2VyIEdyb3VwIE1vZGlmaWVkJzsKJGxhbmdbJ2Vycm9yX3Rvb21hbnlzZWxlY3RlZCddID0gJ1RvbyBtYW55IHVzZXJzIGFyZSBzZWxlY3RlZCBmb3IgYnVsayBvcGVyYXRpb25zLi4uLiBQbGVhc2UgdHJpbSBpdCB0byAyNTAgb3IgbGVzcyc7CiRsYW5nWydjb25maXJtX2RlbGV0ZV9zZWxlY3RlZCddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhlIHNlbGVjdGVkIHVzZXJzPyc7CiRsYW5nWydkZWxldGVfc2VsZWN0ZWQnXSA9ICdEZWxldGUgU2VsZWN0ZWQnOwokbGFuZ1sncHJvbXB0X3JhbmRvbXVzZXJuYW1lJ10gPSAnR2VuZXJhdGUgcmFuZG9tIHVzZXJuYW1lIHdoZW4gYWRkaW5nIG5ldyB1c2Vycyc7CiRsYW5nWydtb250aHMnXSA9ICdtb250aHMnOwokbGFuZ1sncHJvbXB0X2V4cGlyZWFnZSddID0gJ0RlZmF1bHQgdXNlciBleHBpcnkgcGVyaW9kJzsKJGxhbmdbJ25vdGlmaWNhdGlvbl9zZXR0aW5ncyddID0gJ05vdGlmaWNhdGlvbiBTZXR0aW5ncyc7CiRsYW5nWydwcm9wZXJ0eV9zZXR0aW5ncyddID0gJ1Byb3BlcnR5IFNldHRpbmdzJzsKJGxhbmdbJ3JlZGlyZWN0aW9uX3NldHRpbmdzJ10gPSAnUmVkaXJlY3Rpb24gU2V0dGluZ3MnOwokbGFuZ1snZ2VuZXJhbF9zZXR0aW5ncyddID0gJ0dlbmVyYWwgU2V0dGluZ3MnOwokbGFuZ1snc2Vzc2lvbl9zZXR0aW5ncyddID0gJ1Nlc3Npb24gYW5kIENvb2tpZSBTZXR0aW5ncyc7CiRsYW5nWydmaWVsZF9zZXR0aW5ncyddID0gJ0ZpZWxkIFNldHRpbmdzJzsKJGxhbmdbJ3Byb3BfdGV4dGFyZWFfd3lzaXd5ZyddID0gJ0FsbG93IHVzZSBvZiB3eXNpd3lnIG9uIHRoaXMgdGV4dCBhcmVhJzsKJGxhbmdbJ2VkaXRpbmdfdXNlciddID0gJ0VkaXRpbmcgVXNlcic7CiRsYW5nWydub2lubGluZSddID0gJ0RvIG5vdCBpbmxpbmUgZm9ybXMnOwokbGFuZ1snaW5mb19sb3N0dW4nXSA9ICdDbGljayBoZXJlIGlmIHlvdSBjYW5ub3QgcmVtZW1iZXIgeW91ciBsb2dpbiBkZXRhaWxzJzsKJGxhbmdbJ2luZm9fZm9yZ290cHcnXSA9ICdDbGljayBoZXJlIGlmIHlvdSBjYW5ub3QgcmVtZW1iZXIgeW91ciBwYXNzd29yZCc7CiRsYW5nWydpbmZvX2xvZ291dCddID0gJ0NsaWNrIGhlcmUgdG8gc2lnbiBvdXQnOwokbGFuZ1snaW5mb19jaGFuZ2VzZXR0aW5ncyddID0gJ0NsaWNrIGhlcmUgdG8gYWRqdXN0IHlvdXIgcGFzc3dvcmQgb3Igb3RoZXIgaW5mb3JtYXRpb24nOwokbGFuZ1sndmlld3VzZXJfdGVtcGxhdGUnXSA9ICdWaWV3IFVzZXIgVGVtcGxhdGUnOwokbGFuZ1snZXZlbnQnXSA9ICdFdmVudCc7CiRsYW5nWydtYW1zX2V2ZW50X25vdGlmaWNhdGlvbiddID0gJ01BTVMgRXZlbnQgTm90aWZpY2F0aW9uJzsKJGxhbmdbJ3Byb21wdF9ub3RpZmljYXRpb25fYWRkcmVzcyddID0gJ05vdGlmaWNhdGlvbiBFbWFpbCBBZGRyZXNzJzsKJGxhbmdbJ3Byb21wdF9ub3RpZmljYXRpb25fdGVtcGxhdGUnXSA9ICdOb3RpZmljYXRpb24gRW1haWwgVGVtcGxhdGUnOwokbGFuZ1sncHJvbXB0X25vdGlmaWNhdGlvbl9zdWJqZWN0J10gPSAnTm90aWZpY2F0aW9uIEVtYWlsIFN1YmplY3QnOwokbGFuZ1sncHJvbXB0X25vdGlmaWNhdGlvbnMnXSA9ICdFbWFpbCBOb3RpZmljYXRpb25zJzsKJGxhbmdbJ09uTG9naW4nXSA9ICdPbiBMb2dpbic7CiRsYW5nWydPbkxvZ291dCddID0gJ09uIExvZ291dCc7CiRsYW5nWydPbkV4cGlyZVVzZXInXSA9ICdPbiBTZXNzaW9uIEV4cGlyeSc7CiRsYW5nWydPbkNyZWF0ZVVzZXInXSA9ICdPbiBOZXcgVXNlciBDcmVhdGVkJzsKJGxhbmdbJ09uRGVsZXRlVXNlciddID0gJ09uIFVzZXIgRGVsZXRlZCc7CiRsYW5nWydPblVwZGF0ZVVzZXInXSA9ICdPbiBVc2VyIFNldHRpbmdzIENoYW5nZWQnOwokbGFuZ1snT25DcmVhdGVHcm91cCddID0gJ09uIFVzZXIgR3JvdXAgQ3JlYXRlZCc7CiRsYW5nWydPbkRlbGV0ZUdyb3VwJ10gPSAnT24gVXNlciBHcm91cCBEZWxldGVkJzsKCiRsYW5nWydsb3N0dW5jb25maXJtX3ByZW1zZyddID0gJ1dvb3QhIFdlIGZvdW5kIHlvdSEuIEdpdmVuIHRoZSBkZXRhaWxzIHlvdSBlbnRlcmVkLCB3ZSB3ZXJlIGFibGUgdG8gZmluZCB5b3VyIChhbmQgb25seSB5b3VycykgbG9naW4gbmFtZS4nOwokbGFuZ1sneW91cl91c2VybmFtZV9pcyddID0gJ1lvdXIgdXNlcm5hbWUgaXMnOwokbGFuZ1snbG9zdHVuY29uZmlybV9wb3N0bXNnJ10gPSAnV2UgcmVjb21tZW5kIHlvdSByZWNvcmQgdGhpcyBpbmZvcm1hdGlvbiBpbiBhIHNlY3VyZSwgYnV0IHJldHJpZXZhYmxlIGxvY2F0aW9uLic7CiRsYW5nWydwcm9tcHRfYWZ0ZXJfY2hhbmdlX3NldHRpbmdzJ10gPSAnUGFnZUlEL0FsaWFzIHRvIGp1bXAgdG8gYWZ0ZXIgY2hhbmdlIHNldHRpbmdzJzsKJGxhbmdbJ3Byb21wdF9hZnRlcl92ZXJpZnlfY29kZSddID0gJ1BhZ2VJRC9BbGlhcyB0byBqdW1wIHRvIGFmdGVyIGNvZGUgdmVyaWZpY2F0aW9uIConOwokbGFuZ1snbG9zdHVuX2RldGFpbHNfdGVtcGxhdGUnXSA9ICdMb3N0IFVzZXJuYW1lIERldGFpbHMgVGVtcGxhdGUnOwokbGFuZ1snbG9zdHVuX2NvbmZpcm1fdGVtcGxhdGUnXSA9ICdMb3N0IFVzZXJuYW1lIENvbmZpcm0gVGVtcGxhdGUnOwokbGFuZ1snZXJyb3Jfbm9udW5pcXVlbWF0Y2gnXSA9ICdFcnJvcjogTW9yZSB0aGFuIG9uZSB1c2VyIGFjY291bnQgbWF0Y2hlZCB0aGUgcHJvcGVydGllcyBzcGVjaWZpZWQnOwokbGFuZ1snZXJyb3JfY2FudGZpbmR1c2VyJ10gPSAnRXJyb3I6IENvdWxkIG5vdCBmaW5kIGEgbWF0Y2hpbmcgdXNlcic7CiRsYW5nWydlcnJvcl9ncm91cG5vdGZvdW5kJ10gPSAnRXJyb3I6IENvdWxkIG5vdCBmaW5kIGEgZ3JvdXAgYnkgdGhhdCBuYW1lJzsKJGxhbmdbJ3JlYWRvbmx5J10gPSAnUmVhZCBPbmx5JzsKJGxhbmdbJ3Byb21wdF91c2VybWFuaXB1bGF0b3InXSA9ICdVc2VyIE1hbmlwdWxhdG9yIENsYXNzJzsKJGxhbmdbJ2FkbWluX2xvZ291dCddID0gJ0xvZ2dlZCBvdXQgYnkgYWRtaW5pc3RyYXRvcic7CiRsYW5nWydwcm9tcHRfbG9nZ2VkaW5vbmx5J10gPSAnU2hvdyBPbmx5IExvZ2dlZCBJbiBVc2Vycyc7CiRsYW5nWydwcm9tcHRfbG9nb3V0J10gPSAnTG9nb3V0IHRoaXMgdXNlcic7CiRsYW5nWyd1c2VyX3Byb3BlcnRpZXMnXSA9ICdVc2VyIFByb3BlcnRpZXMnOwokbGFuZ1sndXNlcmhpc3RvcnknXSA9ICdVc2VyIEhpc3RvcnknOwokbGFuZ1snZXhwb3J0J10gPSAnRXhwb3J0JzsKJGxhbmdbJ2NsZWFyJ10gPSAnQ2xlYXInOwokbGFuZ1sncHJvbXB0X2V4cG9ydHVzZXJoaXN0b3J5J10gPSAnRXhwb3J0IFVzZXIgSGlzdG9yeSBUbyBBU0NJSSB0aGF0IGlzIGF0IGxlYXN0JzsKJGxhbmdbJ3Byb21wdF9jbGVhcnVzZXJoaXN0b3J5J10gPSAnQ2xlYXIgVXNlciBIaXN0b3J5IHJlY29yZHMgdGhhdCBpcyBhdCBsZWFzdCc7CiRsYW5nWyd0aXRsZV9sb3N0dXNlcm5hbWUnXSA9ICdGb3Jnb3QgWW91ciBMb2dpbiBEZXRhaWxzPyc7CiRsYW5nWyd0aXRsZV9yc3NleHBvcnQnXSA9ICdFeHBvcnQgZ3JvdXAgZGVmaW5pdGlvbiAoYW5kIHByb3BlcnRpZXMpIHRvIFhNTCc7CiRsYW5nWyd0aXRsZV91c2VyaGlzdG9yeW1haW50ZW5hbmNlJ10gPSAnVXNlciBIaXN0b3J5IE1haW50ZW5hbmNlJzsKJGxhbmdbJ3llcyddID0gJ1llcyc7CiRsYW5nWydubyddID0gJ05vJzsKJGxhbmdbJ3Byb21wdF9vZiddID0gJ09mJzsKJGxhbmdbJ2RhdGVfYWxscmVjb3JkcyddID0gJyoqIE5vIExpbWl0ICoqJzsKJGxhbmdbJ2RhdGVfb25laG91cm9sZCddID0gJ09uZSBIb3VyIE9sZCc7CiRsYW5nWydkYXRlX3NpeGhvdXJvbGQnXSA9ICdTaXggSG91cnMgT2xkJzsKJGxhbmdbJ2RhdGVfdHdlbHZlaG91cm9sZCddID0gJ1R3ZWx2ZSBIb3VycyBPbGQnOwokbGFuZ1snZGF0ZV9vbmVkYXlvbGQnXSA9ICdPbmUgRGF5IE9sZCc7CiRsYW5nWydkYXRlX29uZXdlZWtvbGQnXSA9ICdPbmUgV2VlayBPbGQnOwokbGFuZ1snZGF0ZV90d293ZWVrc29sZCddID0gJ1R3byB3ZWVrcyBPbGQnOwokbGFuZ1snZGF0ZV9vbmVtb250aG9sZCddID0gJ09uZSBNb250aCBPbGQnOwokbGFuZ1snZGF0ZV90aHJlZW1vbnRoc29sZCddID0gJ1RocmVlIE1vbnRocyBPbGQnOwokbGFuZ1snZGF0ZV9zaXhtb250aHNvbGQnXSA9ICdTaXggTW9udGhzIE9sZCc7CiRsYW5nWydkYXRlX29uZXllYXJvbGQnXSA9ICdPbmUgWWVhciBPbGQnOwokbGFuZ1sndGl0bGVfZ3JvdXBzb3J0J10gPSAnR3JvdXBpbmcgYW5kIFNvcnRpbmcnOwokbGFuZ1sncHJvbXB0X3JlY29yZHNmb3VuZCddID0gJ1JlY29yZHMgbWF0Y2hpbmcgdGhlIGNyaXRlcmlhJzsKJGxhbmdbJ3NvcnRvcmRlcl91c2VybmFtZV9kZXNjJ10gPSAnRGVzY2VuZGluZyBVc2VybmFtZSc7CiRsYW5nWydzb3J0b3JkZXJfdXNlcm5hbWVfYXNjJ10gPSAnQXNjZW5kaW5nIFVzZXJuYW1lJzsKJGxhbmdbJ3NvcnRvcmRlcl9kYXRlX2Rlc2MnXSA9ICdEZXNjZW5kaW5nIERhdGUnOwokbGFuZ1snc29ydG9yZGVyX2RhdGVfYXNjJ10gPSAnQXNjZW5kaW5nIERhdGUnOwokbGFuZ1snc29ydG9yZGVyX2FjdGlvbl9kZXNjJ10gPSAnRGVzY2VuZGluZyBFdmVudCBUeXBlJzsKJGxhbmdbJ3NvcnRvcmRlcl9hY3Rpb25fYXNjJ10gPSAnQXNjZW5kaW5nIEV2ZW50IFR5cGUnOwokbGFuZ1snc29ydG9yZGVyX2lwYWRkcmVzc19kZXNjJ10gPSAnRGVzY2VuZGluZyBJcCBBZGRyZXNzJzsKJGxhbmdbJ3NvcnRvcmRlcl9pcGFkZHJlc3NfYXNjJ10gPSAnQXNjZW5kaW5nIElwIEFkZHJlc3MnOwokbGFuZ1snaW5mb19ub2hpc3RvcnlkZXRlY3RlZCddID0gJ05vIEhpc3RvcnkgRGV0ZWN0ZWQnOwokbGFuZ1sncmVzZXQnXSA9ICdSZXNldCc7CiRsYW5nWydwcm9tcHRfZ3JvdXBfaXAnXSA9ICdHcm91cCBCeSBJUCBBZGRyZXNzJzsKJGxhbmdbJ3Byb21wdF9maWx0ZXJfZXZlbnR0eXBlJ10gPSAnRXZlbnQgVHlwZSBGaWx0ZXInOwokbGFuZ1sncHJvbXB0X2ZpbHRlcl9kYXRlJ10gPSAnRGlzcGxheSBvbmx5IGV2ZW50cyB0aGF0IGFyZSBsZXNzIHRoYW46JzsKJGxhbmdbJ3Byb21wdF9wYWdlbGltaXQnXSA9ICdQYWdlIExpbWl0JzsKJGxhbmdbJ2ZvciddID0gJ2Zvcic7CiRsYW5nWyd0aXRsZV91c2VyaGlzdG9yeSddID0gJ1VzZXIgSGlzdG9yeSBSZXBvcnQnOwokbGFuZ1sndW5rbm93biddID0gJ1Vua25vd24nOwokbGFuZ1sncHJvbXB0X2lwYWRkcmVzcyddID0gJ0lQIEFkZHJlc3MnOwokbGFuZ1sncHJvbXB0X2V2ZW50dHlwZSddID0gJ0V2ZW50IFR5cGUnOwokbGFuZ1sncHJvbXB0X2RhdGUnXSA9ICdEYXRlJzsKJGxhbmdbJ3Byb21wdF9yZXR1cm4nXSA9ICdSZXR1cm4nOwokbGFuZ1snaW1wb3J0X2NvbXBsZXRlX21zZyddID0gJ0ltcG9ydCBPcGVyYXRpb24gQ29tcGxldGUnOwokbGFuZ1sncHJvbXB0X2xpbmVzcHJvY2Vzc2VkJ10gPSAnTGluZXMgUHJvY2Vzc2VkJzsKJGxhbmdbJ3Byb21wdF9lcnJvcnMnXSA9ICdFcnJvcnMgRW5jb3VudGVyZWQnOwokbGFuZ1sncHJvbXB0X3JlY29yZHNhZGRlZCddID0gJ1JlY29yZHMgQWRkZWQnOwokbGFuZ1snZXJyb3Jfbm9ncm91cHByb3ByZWxucyddID0gJ0NvdWxkIG5vdCBmaW5kIHByb3BlcnRpZXMgZm9yIGdyb3VwICVzJzsKJGxhbmdbJ2Vycm9yX25vcmVzcG9uc2Vmcm9tc2VydmVyJ10gPSAnQ291bGQgbm90IGdldCBhIHJlc3BvbnNlIGZyb20gdGhlIFNNVFAgc2VydmVyJzsKJGxhbmdbJ2Vycm9yX2ltcG9ydGZpbGVub3Rmb3VuZCddID0gJ0ZpbGUgc3BlY2lmaWVkICglcykgY291bGQgbm90IGJlIGZvdW5kJzsKJGxhbmdbJ2Vycm9yX2ltcG9ydGZpZWxkdmFsdWUnXSA9ICdJbnZhbGlkIHZhbHVlIGZvciBjb2x1bW4gJXMnOwokbGFuZ1snZXJyb3JfaW1wb3J0ZmllbGRsZW5ndGgnXSA9ICdGaWVsZCAlcyBleGNlZWRzIG1heGltdW0gbGVuZ3RoJzsKJGxhbmdbJ2Vycm9yX2ltcG9ydGluc2VydHVzZXInXSA9ICdQcm9ibGVtIGNyZWF0aW5nIHVzZXI6ICVzJzsKJGxhbmdbJ2Vycm9yX2ltcG9ydHVwZGF0ZXVzZXInXSA9ICdQcm9ibGVtIHVwZGF0aW5nIHVzZXI6ICVzJzsKJGxhbmdbJ2Vycm9yX2ltcG9ydHVzZXJzJ10gPSAnSW1wb3J0IEVycm9yIChsaW5lICVzKTogJXMnOwokbGFuZ1snZXJyb3JfcHJvcGVydHlkZWZucyddID0gJ0NvdWxkIG5vdCBnZXQgdGhlIHByb3BlcnR5IGRlZmluaXRpb25zIChpbnRlcm5hbCBlcnJvciknOwokbGFuZ1snZXJyb3JfcHJvYmxlbXNldHRpbmdpbmZvJ10gPSAnUHJvYmxlbSBzZXR0aW5nIHVzZXIgaW5mbyc7CiRsYW5nWydlcnJvcl9pbXBvcnRyZXF1aXJlZGZpZWxkJ10gPSAnQ291bGQgbm90IGZpbmQgYSBjb2x1bW4gdG8gbWF0Y2ggdGhlIHJlcXVpcmVkIGZpZWxkICVzJzsKJGxhbmdbJ2Vycm9yX25vZ3JvdXBwcm9wZXJ0aWVzJ10gPSAnQ291bGQgbm90IGZpbmQgcHJvcGVydGllcyBmb3IgdGhlIHNwZWNpZmllZCBncm91cCc7CiRsYW5nWydlcnJvcl9pbXBvcnRmaWxlZm9ybWF0J10gPSAnVGhlIGZpbGUgc3BlY2lmaWVkIGZvciBpbXBvcnQgaXMgbm90IGluIHRoZSBjb3JyZWN0IGZvcm1hdCc7CiRsYW5nWydlcnJvcl9jb3VsZG5vdG9wZW5maWxlJ10gPSAnQ291bGQgbm90IG9wZW4gZmlsZSc7CiRsYW5nWydpbmZvX2ltcG9ydHVzZXJzZmlsZWZvcm1hdDInXSA9ICcKPGg1PkZpbGUgRm9ybWF0IEluZm9ybWF0aW9uPC9oNT4KPHA+VGhlIGlucHV0IGZpbGUgbXVzdCBiZSBpbiBBU0NJSSBmb3JtYXQgdXNpbmcgY29tbWEgPGVtPihub3JtYWxseSk8L2VtPiBzZXBhcmF0ZWQgdmFsdWVzLiAgRWFjaCBsaW5lIGluIHRoaXMgaW5wdXQgZmlsZSAod2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBoZWFkZXIgbGluZSwgZGlzY3Vzc2VkIGJlbG93KSByZXByZXNlbnRzIG9uZSB1c2VyIHJlY29yZC4gIFRoZSBvcmRlciBvZiB0aGUgZmllbGRzIGluIGVhY2ggbGluZSBtdXN0IGJlIGlkZW50aWNhbC4gIFRoaXMgaW1wb3J0IHJvdXRpbmUgYWNjZXB0cyBNQUMgYW5kIHVuaXggbGluZSBlbmRpbmdzLiAgQ29sdW1uIHZhbHVlcyBjYW4gYmUgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlcyBpZiB0aGUgZGVsaW1pdGVyIG1heSBiZSBjb250YWluZWQgd2l0aGluIHRoZSBjb2x1bW4gdmFsdWUuPC9wPgo8aDU+SGVhZGVyIGxpbmU8L2g1Pgo8dWw+CjxsaT5UaGUgZmlyc3QgbGluZSBvZiB0aGUgZmlsZSBtdXN0IGJlZ2luIHdpdGggdHdvIHBvdW5kIChcIykgY2hhcmFjdGVycywgYW5kIG5hbWVzIGVhY2ggb2YgdGhlIGZpZWxkcyBpbiB0aGUgZmlsZS4gIFRoZSBuYW1lcyBvZiB0aGVzZSBmaWVsZHMgaXMgc2lnbmlmaWNhbnQuICBUaGVyZSBhcmUgc29tZSByZXF1aXJlZCBmaWVsZCBuYW1lcyAoc2VlIGJlbG93KSwgYW5kIG90aGVyIGZpZWxkIG5hbWVzIG11c3QgbWF0Y2ggdGhlIHByb3BlcnR5IG5hbWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ3JvdXAgdXNlcnMgYXJlIGdvaW5nIHRvIGJlIGFkZGVkIGludG8uPC9saT4KPGxpPlRoZSBpbXBvcnQgcHJvY2VzcyB3aWxsIGZhaWwgaWYgdGhlIGZpZWxkcyBpbiB0aGUgaW5wdXQgZmlsZSBkb2VzIG5vdCBtYXRjaCBhbGwgb2YgdGhlIHJlcXVpcmVkIHByb3BlcnRpZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBncm91cCB0aGF0IHVzZXJzIGFyZSBiZWluZyBhZGRlZCBpbnRvPC9saT4KPGxpPlRoZSBpbnB1dCBmaWxlIG1heSBjb250YWluIGZpZWxkcyByZXByZXNlbnRpbmcgc29tZSBvZiB0aGUgb3B0aW9uYWwgcHJvcGVydGllcyBpbiB0aGUgc3BlY2lmaWVkIGdyb3VwLjwvbGk+CjxsaT5UaGUgaW1wb3J0IHByb2Nlc3Mgd2lsbCBpZ25vcmUgYW55IGZpZWxkcyBpbiB0aGUgaW5wdXQgZmlsZSB0aGF0IGFyZSBlaXRoZXIgbm90IGtub3duLCBvciBtYXAgdG8gcHJvcGVydGllcyB0aGF0IGFyZSA8ZW0+b2ZmPC9lbT4gaW4gdGhlIHNwZWNpZmllZCB1c2VyIGdyb3Vwcy48L2xpPgo8L3VsPjxici8+CjxoNj48c3Ryb25nPkNvbHVtbmFyIERhdGE8L3N0cm9uZz48L2g2Pgo8dWw+CjxsaT5UaGUgPHN0cm9uZz51c2VybmFtZTwvc3Ryb25nPiBGaWVsZCAtIFRoZSBkZXNpcmVkIHVzZXJuYW1lLgogICAgPHA+VGhpcyBmaWVsZCBtdXN0IGV4aXN0IGluIHRoZSBoZWFkZXJsaW5lLCBhbmQgaW4gZWFjaCBhbmQgZXZlcnkgbGluZSBvZiB0aGUgaW5wdXQgZmlsZS4gSWYgYSB1c2VyIHdpdGggdGhlIHNwZWNpZmllZCB1c2VybmFtZSBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgZGF0YWJhc2UgaGlzIGluZm9ybWF0aW9uIHdpbGwgYmUgb3ZlcndyaXR0ZW4uPC9wPjwvbGk+CjxsaT5UaGUgPHN0cm9uZz50eHRwYXNzd29yZDwvc3Ryb25nPiBGaWVsZCAtIDxlbT4ob3B0aW9uYWwpPC9lbT4uICBUaGUgcGFzc3dvcmQgdG8gc2V0IGZvciB0aGUgdXNlciBpbiBwbGFpbiB0ZXh0LiAgSWYgdGhlIHBhc3N3b3JkIGZpZWxkIGlzIGVtcHR5IHdoZW4gY3JlYXRpbmcgbmV3IHVzZXJzIHRoZSBwYXNzd29yZCAmcXVvdDtjaGFuZ2VtZSZxdW90OyBpcyBoYXJkY29kZWQuICBJZiB0aGUgcGFzc3dvcmQgZmllbGQgaXMgZW1wdHkgd2hlbiB1cGRhdGluZyBhIHVzZXIgaGlzIHBhc3N3b3JkIHdpbGwgbm90IGJlIGFkanVzdGVkLjwvbGk+CjxsaT5UaGUgPHN0cm9uZz5leHBpcmVzPC9zdHJvbmc+IEZpZWxkIC0gPGVtPihvcHRpb25hbCk8L2VtPi4gIFRoZSBkZXNpcmVkIGV4cGlyeSBkYXRlIGZvciB0aGUgdXNlci4gIElmIHRoaXMgZmllbGQgaXMgc3BlY2lmaWVkIGFuZCBjYW4gYmUgdmFsaWRhdGVkIGFzIGEgdmFsaWQgZGF0ZSB0aGVuIHRoZSBleHBpcnkgZGF0ZSB3aWxsIGJlIHVzZWQgd2hlbiBjcmVhdGluZyBhIG5ldyB1c2VyLCBvdGhlcndpc2UgYSBkZWZhdWx0IHZhbHVlIG9mIDEwIGZyb20gdGhlIGNyZWF0ZSBkYXRlIHdpbGwgYmUgdXNlZC4gIElmIHRoaXMgZmllbGQgaXMgZW1wdHkgd2hlbiB1cGRhdGluZyBhIHVzZXIgdGhlbiBoaXMgZXhwaXJ5IHdpbGwgbm90IGJlIGFkanVzdGVkLjwvbGk+CjxsaT5UaGUgPHN0cm9uZz5ncm91cG5hbWU8L3N0cm9uZz4gRmllbGQgLSBBIDogc2VwYXJhdGVkIGxpc3Qgb2YgdGhlIGdyb3VwIG5hbWVzIHRoYXQgeW91IHdhbnQgdG8gaGF2ZSB0aGUgdXNlciBiZSBhIG1lbWJlciBvZi4gSWYgYWxsIHJlcXVpcmVkIGZpZWxkcyBhcmUgbm90IGZpbGxlZCBpbiB0aGUgaW5zZXJ0L3VwZGF0ZSBvZiB0aGUgcmVjb3JkIHdpbGwgZmFpbC48L2xpPgo8bGk+RHJvcGRvd24vUmFkaW8gRmllbGRzCiAgPHA+VGhlIHZhbHVlIG9mIGRyb3Bkb3duIHByb3BlcnRpZXMgaW4gYW4gaW1wb3J0IGZpbGUgaXMgcmVwcmVzZW50ZWQgYXMgdGhlIHN0cmluZyB0aGF0IGlzIHNob3duIGluIHRoZSBkcm9wZG93biBjb250cm9sIGluIHRoZSBNZW1iZXJzIEFyZWEgTWFkZSBTaW1wbGUgbW9kdWxlLjwvcD4KPC9saT4KPGxpPk11bHRpc2VsZWN0IEZpZWxkcwogIDxwPk11bHRpc2VsZWN0IGZpZWxkcyBhcmUgY29udGFpbmVkIHdpdGhpbiB0aGUgQVNDSUkgZmlsZSBhcyBhIDogc2VwYXJhdGVkIGxpc3Qgb2Ygc3RyaW5ncywgd2hlcmUgZWFjaCBzdHJpbmcgcmVwcmVzZW50cyB0aGUgdGV4dCBzaG93biBpbiB0aGUgbXVsdGlzZWxlY3QgbGlzdDwvcD4KPC9saT4KPGxpPkVtYWlsIEZpZWxkcwogIDxwPk11c3QgYmUgYSB2YWxpZCBlbWFpbCBhZGRyZXNzIHRoYXQgY2FuIGJlIHZhbGlkYXRlZCBieSBQSFBzIGJ1aWx0aW4gZnVuY3Rpb25hbGl0eS48L3A+CjwvbGk+CjxsaT5EYXRlIEZpZWxkcwogIDxwPk11c3QgYmUgaW4gYSBmb3JtYXQgdGhhdCBjYW4gYmUgY29udmVydGVkIHRvIGEgdW5peCB0aW1lc3RhbXAgYnkgdGhlIHN0cnRvdGltZSgpIG1ldGhvZC48L3A+CjwvbGk+CjxsaT5JbWFnZSBGaWVsZHMKICAgIDxwPkltYWdlIGFyZSBmaWVsZHMgd2hvXCdzIGNvbHVtbiBuYW1lIG1hdGNoZXMgYSBwcm9wZXJ0eSBvZiB0eXBlIEltYWdlLiAgSWYgdGhpcyBmaWVsZCBpcyBub3QgZW1wdHkgdGhlbiB0aGUgZmlsZW5hbWUgc3BlY2lmaWVkIGluIHRoZXNlIGNvbHVtbnMgbXVzdCBleGlzdCBpbiBpbWFnZSBkZXN0aW5hdGlvbiBwYXRoIGFzIHNwZWNpZmllZCBpbiB0aGUgTUFNUyBwcmVmZXJlbmNlcy4uICBJZiB0aGUgaW1hZ2UgZG9lcyBub3QgZXhpc3QsIGFuZCB0aGUgZmllbGQgaXMgcmVxdWlyZWQsIHRoZW4gdGhlIHJlY29yZCB3aWxsIGZhaWwuPC9wPjwvbGk+CjwvdWw+CjxoNT5Ob3RlczwvaDU+CjxwPlRoZSBpbXBvcnQgcHJvY2VzcyBpcyBhIG1lbW9yeSBhbmQgZGF0YWJhc2UgaW50ZW5zaXZlIHJvdXRpbmUuICBJdCBpcyBzdWJqZWN0IHRvIHRoZSBsaW1pdGF0aW9ucyBpbXBvc2VkIGJ5IHRoZSBob3N0IHByb3ZpZGVyLCBzdWNoIGFzIG1lbW9yeSBsaW1pdGF0aW9ucywgcHJvY2Vzc2luZyB0aW1lLCBmaWxlIHNpemUgdXBsb2FkLCBhbmQgc2FmZSBtb2RlIHJlc3RyaWN0aW9ucy4gIEFueSBvbmUgb2YgdGhlc2UgbGltaXRhdGlvbnMgbWF5IGNhdXNlIHRoZSBpbXBvcnQgdG8gZmFpbC4gVGhlcmVmb3JlIGl0IGlzIGFkdmlzYWJsZSB0byBlbnN1cmUgdGhhdCBpbXBvcnQgZmlsZXMgYXJlIHNtYWxsZXIgaW4gc2l6ZSwgYW5kIHNpbXBsZXIgaW4gbmF0dXJlLjwvcD4KPHA+VGhvdWdoIGV2ZXJ5IGVmZm9ydCBoYXMgYmVlbiBtYWRlIHRvIGVuc3VyZSB0aGF0IGRhdGFiYXNlIGNvcnJ1cHRpb24gd2lsbCBub3Qgb2NjdXIsIGl0IGlzIGFkdmlzYWJsZSB0byBwZXJmb3JtIGEgZGF0YWJhc2UgYmFja3VwIGJlZm9yZSBkb2luZyBhIHVzZXIgaW1wb3J0LjwvcD4KPHA+VGhlIEV4cG9ydCBkYXRhIGlzIHRoZSBzYW1lIGZvcm1hdCBhcyBuZWVkZWQgZm9yIGltcG9ydC4gIEhvd2V2ZXIgaXQgbWF5IHByb3ZpZGUgZXh0cmEgZmllbGRzIHRoYXQgYXJlIG5vdCByZXF1aXJlZCBmb3IgaW1wb3J0LjwvcD4KPGg1PkV4YW1wbGU8L2g1Pgo8cHJlPgojI3VzZXJuYW1lLGZpcnN0X25hbWUsbGFzdF9uYW1lLGVtYWlsLGNpdHksc3RhdGUsY291bnRyeSx6aXAKdXNlcjEsdGVzdCx1c2VyLHVzZXIxQHNvbWVkb21haW4uY29tLHNvbWV3aGVyZSxUWCxVUywxMjM0NQo8L3ByZT4KJzsKJGxhbmdbJ3Byb21wdF9pbXBvcnRkZXN0Z3JvdXAnXSA9ICdJbXBvcnQgVXNlcnMgSW50byBUaGlzIEdyb3VwJzsKJGxhbmdbJ3Byb21wdF9pbXBvcnRmaWxlbmFtZSddID0gJ0lucHV0IENTViBGaWxlJzsKJGxhbmdbJ3Byb21wdF9pbXBvcnR4bWxmaWxlJ10gPSAnSW5wdXQgWE1MIEZpbGUnOwokbGFuZ1sncHJvbXB0X2V4cG9ydHVzZXJzJ10gPSAnRXhwb3J0IFVzZXJzJzsKJGxhbmdbJ3Byb21wdF9pbXBvcnR1c2VycyddID0gJ0ltcG9ydCBVc2Vycyc7CiRsYW5nWydwcm9tcHRfY2xlYXInXSA9ICdDbGVhcic7CiRsYW5nWydwcm9tcHRfaW1hZ2VfZGVzdGluYXRpb25fcGF0aCddID0gJ0ltYWdlIERlc3RpbmF0aW9uIFBhdGgnOwokbGFuZ1snZXJyb3JfbWlzc2luZ191cGxvYWQnXSA9ICdBIHByb2JsZW0gb2NjdXJyZWQgd2l0aCBhIG1pc3NpbmcgKGJ1dCByZXF1aXJlZCkgdXBsb2FkJzsKJGxhbmdbJ2Vycm9yX2JhZF94bWwnXSA9ICdDb3VsZCBub3QgcGFyc2UgdGhlIHByb3ZpZGVkIFhNTCBmaWxlJzsKJGxhbmdbJ2Vycm9yX25vdGVtcHR5Z3JvdXAnXSA9ICdDYW5ub3QgZGVsZXRlIGEgZ3JvdXAgdGhhdCBzdGlsbCBoYXMgdXNlcnMnOwokbGFuZ1snZXJyb3Jfbm9yZXBlYXRlZGxvZ2lucyddID0gJ1RoaXMgdXNlciBpcyBhbHJlYWR5IGxvZ2dlZCBpbic7CiRsYW5nWydlcnJvcl9jYXB0Y2hhbWlzbWF0Y2gnXSA9ICdTb3JyeSwgYnV0IGNhcHRjaGEgdmVyaWZpY2F0aW9uIGZhaWxlZC4gIFBsZWFzZSB0cnkgYWdhaW4uJzsKJGxhbmdbJ3Byb21wdF9hbGxvd19yZXBlYXRlZF9sb2dpbnMnXSA9ICdBbGxvdyB1c2VycyB0byBsb2dpbiBtb3JlIHRoYW4gb25jZSc7CiRsYW5nWydwcm9tcHRfYWxsb3dlZF9pbWFnZV9leHRlbnNpb25zJ10gPSAnSW1hZ2UgRmlsZSBFeHRlbnNpb25zIHRoYXQgVXNlcnMgYWxsb3dlZCB0byB1cGxvYWQnOwokbGFuZ1snZXZlbnRfaGVscF9PblJlZnJlc2hVc2VyJ10gPSAnCjxoMz5PblJlZnJlc2hVc2VyPC9oMz4KPHA+QW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gdGhlIHVzZXIgc2Vzc2lvbiBpcyByZWZyZXNoZWQuPC9wPgo8aDQ+UGFyYW1ldGVyczo8L2g0Pgo8dWw+CiAgPGxpPjxlbT5pZDwvZW0+IC0gVGhlIFVzZXIgaWQ8L2xpPgo8L3VsPgonOwokbGFuZ1snZXZlbnRfaGVscF9PbkRlbGV0ZVVzZXInXSA9ICcKPGgzPk9uRGVsZXRlVXNlcjxoMz4KPHA+QW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSB1c2VyIGlzIGRlbGV0ZWQ8L3A+CjxoND5QYXJhbWV0ZXJzPC9oND4KPHVsPgo8bGk+PGVtPnVzZXJuYW1lPC9lbT4gLSBUaGUgdXNlciBuYW1lPC9saT4KPGxpPjxlbT5pZDwvZW0+IC0gVGhlIHVzZXIgaWQ8L2xpPgo8L3VsPgonOwokbGFuZ1snZXZlbnRfaGVscF9PbkNyZWF0ZVVzZXInXSA9ICcKPGgzPk9uQ3JlYXRlVXNlcjxoMz4KPHA+QW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSB1c2VyIGlzIGNyZWF0ZWQ8L3A+CjxoND5QYXJhbWV0ZXJzPC9oND4KPHVsPgo8bGk+PGVtPm5hbWU8L2VtPiAtIFRoZSB1c2VyIG5hbWU8L2xpPgo8bGk+PGVtPmlkPC9lbT4gLSBUaGUgdXNlciBpZDwvbGk+CjwvdWw+Cic7CiRsYW5nWydldmVudF9oZWxwX09uVXBkYXRlVXNlciddID0gJwo8aDM+T25VcGRhdGVVc2VyPGgzPgo8cD5BbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIHVzZXIgaXMgdXBkYXRlZCAoZWl0aGVyIGJ5IHVzZXIgdGhlbXNlbGYgb3IgYWRtaW4pPC9wPgo8aDQ+UGFyYW1ldGVyczwvaDQ+Cjx1bD4KPGxpPjxlbT5uYW1lPC9lbT4gLSBUaGUgdXNlciBuYW1lPC9saT4KPGxpPjxlbT5pZDwvZW0+IC0gVGhlIHVzZXIgaWQ8L2xpPgo8L3VsPgonOwokbGFuZ1snZXZlbnRfaGVscF9PbkNyZWF0ZUdyb3VwJ10gPSAnCjxoMz5PbkNyZWF0ZUdyb3VwPGgzPgo8cD5BbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIGdyb3VwIGlzIGNyZWF0ZWQ8L3A+CjxoND5QYXJhbWV0ZXJzPC9oND4KPHVsPgo8bGk+PGVtPm5hbWU8L2VtPiAtIFRoZSBncm91cCBuYW1lPC9saT4KPGxpPjxlbT5kZXNjcmlwdGlvbjwvZW0+IC0gVGhlIGdyb3VwIGRlc2NyaXB0aW9uPC9saT4KPGxpPjxlbT5pZDwvZW0+IC0gVGhlIGdyb3VwIGlkPC9saT4KPC91bD4KJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25EZWxldGVHcm91cCddID0gJwo8aDM+T25EZWxldGVHcm91cDxoMz4KPHA+QW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSBncm91cCBpcyBkZWxldGVkPC9wPgo8aDQ+UGFyYW1ldGVyczwvaDQ+Cjx1bD4KPGxpPjxlbT5uYW1lPC9lbT4gLSBUaGUgZ3JvdXAgbmFtZTwvbGk+CjxsaT48ZW0+aWQ8L2VtPiAtIFRoZSBncm91cCBpZDwvbGk+CjwvdWw+Cic7CiRsYW5nWydldmVudF9oZWxwX0FmdGVyTG9naW5BdXRoJ10gPSAnCjxoMz5PbkxvZ2luPGgzPgo8cD5BbiBldmVudCBzZW50IHdoZW4gYSB1c2VyIGxvZ3MgaW48LCBhZnRlciBhdXRoZW50aWNhdGlvbiwgYnV0IGJlZm9yZSBzZXNzaW9uIGluZm9ybWF0aW9uIGlzIGNyZWF0ZWQsIGFuZCB0aGUgc3lzdGVtIHJlY29nbml6ZXMgaGltIGFzIGxvZ2dlZCBpbi4KVGhpcyBldmVudCBjYW4gYmUgdXNlZCBieSB0aGlyZCBwYXJ0eSBtb2R1bGVzIHRvIGFpZGUgaW4gc2VjdXJpdHkgZm9yIE1BTVMuPC9wPgo8aDQ+UGFyYW1ldGVyczwvaDQ+Cjx1bD4KPGxpPjxlbT5pZDwvZW0+IC0gVGhlIGlkIG9mIHRoZSBsb2dnZWQgaW4gdXNlcjwvbGk+CjxsaT48ZW0+dXNlcm5hbWU8L2VtPiAtIFRoZSBuYW1lIG9mIHRoZSBsb2dnZWQgaW4gdXNlcjwvbGk+CjxsaT48ZW0+aXA8L2VtPiAtIFRoZSBpcCBhZGRyZXNzIG9mIHRoZSBjbGllbnQ8L2xpPgo8bGk+PGVtPmFsbG93PC9lbT4gLSBib29sZWFuIHJlZmVyZW5jZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHVzZXIgc2hvdWxkIGJlIGFsbG93ZWQgdG8gbG9naW4uICBNb2R1bGVzIGNhbiBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhbGxvdyBsb2dpbi48L2xpPgo8bGk+PGVtPm1zZzwvZW0+IC0gc3RyaW5nIG1lc3NhZ2UgdG8gaW5kaWNhdGUgdGhlIG5hdHVyZSBvZiB0aGUgcHJvYmxlbSBpZiBhIG1vZHVsZSBoYXMgc2V0IGFsbG93IHRvIGZhbHNlLjwvbGk+CjwvdWw+Cic7CiRsYW5nWydldmVudF9oZWxwX0JlZm9yZUxvZ2luJ10gPSAnCjxoMz5PbkxvZ2luPGgzPgo8cD5BbiBldmVudCBzZW50IHdoZW4gYSB1c2VyIGxvZ3MgaW48LCBhZnRlciBsb2dpbiBmb3JtIHN1Ym1pc3Npb24sIGJ1dCBiZWZvcmUgdGhleSBhcmUgYXV0aGVudGljYXRlZC4uLgpUaGlzIGV2ZW50IGNhbiBiZSB1c2VkIGJ5IHRoaXJkIHBhcnR5IG1vZHVsZXMgdG8gYWlkZSBpbiBzZWN1cml0eSBmb3IgTUFNUy48L3A+CjxoND5QYXJhbWV0ZXJzPC9oND4KPHVsPgo8bGk+PGVtPmlkPC9lbT4gLSBUaGUgaWQgb2YgdGhlIGxvZ2dlZCBpbiB1c2VyPC9saT4KPGxpPjxlbT51c2VybmFtZTwvZW0+IC0gVGhlIG5hbWUgb2YgdGhlIGxvZ2dlZCBpbiB1c2VyPC9saT4KPGxpPjxlbT5pcDwvZW0+IC0gVGhlIGlwIGFkZHJlc3Mgb2YgdGhlIGNsaWVudDwvbGk+CjxsaT48ZW0+YWxsb3c8L2VtPiAtIGJvb2xlYW4gcmVmZXJlbmNlIGluZGljYXRpbmcgd2hldGhlciB0aGUgdXNlciBzaG91bGQgYmUgYWxsb3dlZCB0byBsb2dpbi4gIE1vZHVsZXMgY2FuIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FsbG93IGxvZ2luLjwvbGk+CjxsaT48ZW0+bXNnPC9lbT4gLSBzdHJpbmcgbWVzc2FnZSB0byBpbmRpY2F0ZSB0aGUgbmF0dXJlIG9mIHRoZSBwcm9ibGVtIGlmIGEgbW9kdWxlIGhhcyBzZXQgYWxsb3cgdG8gZmFsc2UuPC9saT4KPC91bD4KJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25Mb2dpbiddID0gJwo8aDM+T25Mb2dpbjxoMz4KPHA+QW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSB1c2VyIGxvZ3MgaW48L3A+CjxoND5QYXJhbWV0ZXJzPC9oND4KPHVsPgo8bGk+PGVtPmlkPC9lbT4gLSBUaGUgaWQgb2YgdGhlIGxvZ2dlZCBpbiB1c2VyPC9saT4KPGxpPjxlbT51c2VybmFtZTwvZW0+IC0gVGhlIG5hbWUgb2YgdGhlIGxvZ2dlZCBpbiB1c2VyPC9saT4KPGxpPjxlbT5pcDwvZW0+IC0gVGhlIGlwIGFkZHJlc3Mgb2YgdGhlIGNsaWVudDwvbGk+CjwvdWw+Cic7CiRsYW5nWydldmVudF9oZWxwX09uTG9naW5GYWlsZWQnXSA9ICcKPGgzPk9uTG9naW5GYWlsZWQ8aDM+CjxwPkFuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIGEgdXNlciBsb2dpbiBmYWlsczwvcD4KPGg0PlBhcmFtZXRlcnM8L2g0Pgo8dWw+CjxsaT48ZW0+dXNlcm5hbWU8L2VtPiAtIFRoZSBuYW1lIG9mIHRoZSBsb2dnZWQgaW4gdXNlcjwvbGk+CjxsaT48ZW0+bXNnPC9lbT4gLSBBIG1lc3NhZ2UgaW5kaWNhdGluZyB3aHkgdGhlIGxvZ2luIGZhaWxlZC4vbGk+CjwvdWw+Cic7CiRsYW5nWydldmVudF9oZWxwX09uTG9nb3V0J10gPSAnCjxwPkFuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIGEgdXNlciBsb2dzIG91dDwvcD4KPGg0PlBhcmFtZXRlcnM8L2g0Pgo8dWw+CjxsaT48ZW0+aWQ8L2VtPiAtIFRoZSB1c2VyIGlkPC9saT4KPC91bD4KJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25FeHBpcmVVc2VyJ10gPSAnCjxwPkFuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIGEgdXNlciBzZXNzaW9uIGV4cGlyZXM8L3A+CjxoND5QYXJhbWV0ZXJzPC9oND4KPHVsPgo8bGk+PGVtPnVzZXJuYW1lPC9lbT4gLSBUaGUgbmFtZSBvZiB0aGUgZXhwaXJlZCB1c2VyPC9saT4KPGxpPjxlbT5pZDwvZW0+IC0gVGhlIHVzZXIgaWQgb2YgdGhlIGV4cGlyZWQgdXNlcjwvbGk+CjwvdWw+Cic7CiRsYW5nWydldmVudF9pbmZvX0FmdGVyTG9naW5BdXRoJ10gPSAnQW4gZXZlbnQgZ2VuZXJhdGVkIGFmdGVyIGF1dGhlbnRpY2F0aW9uLCBidXQgYmVmb3JlIGFjdHVhbGx5IGxvZ2dpbmcgdGhlIHVzZXIgaW4uJzsKJGxhbmdbJ2V2ZW50X2luZm9fQmVmb3JlTG9naW4nXSA9ICdBbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIHVzZXIgbG9ncyBpbiB0byB0aGUgc3lzdGVtLCBhZnRlciBoZSBpcyBoYXMgc3VibWl0dGVkIHRoZSBsb2dpbiBmb3JtLCBidXQgYmVmb3JlIGFueSBhdXRoZW50aWNhdGlvbiBpcyB0ZXN0ZWQuJzsKJGxhbmdbJ2V2ZW50X2luZm9fT25Mb2dpbiddID0gJ0FuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIGEgdXNlciBsb2dzIGluIHRvIHRoZSBzeXN0ZW0nOwokbGFuZ1snZXZlbnRfaW5mb19PbkxvZ2luRmFpbGVkJ10gPSAnQW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSB1c2VyIGZhaWxzIHRvIGxvZyBpbiB0byB0aGUgc3lzdGVtJzsKJGxhbmdbJ2V2ZW50X2luZm9fT25Mb2dvdXQnXSA9ICdBbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIHVzZXIgbG9ncyBvdXQgb2YgdGhlIHN5c3RlbSc7CiRsYW5nWydldmVudF9pbmZvX09uRXhwaXJlVXNlciddID0gJ0FuIGV2ZW50IGdlbmVyYXRlZCB3aGVuIGEgdXNlciBzZXNzaW9uIGlzIGV4cGlyZWQnOwokbGFuZ1snZXZlbnRfaW5mb19PbkNyZWF0ZVVzZXInXSA9ICdBbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIG5ldyB1c2VyIGlzIGNyZWF0ZWQnOwokbGFuZ1snZXZlbnRfaW5mb19PblJlZnJlc2hVc2VyJ10gPSAnQW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gdGhlIHVzZXIgc2Vzc2lvbiBpcyByZWZyZXNoZWQnOwokbGFuZ1snZXZlbnRfaW5mb19PblVwZGF0ZVVzZXInXSA9ICdBbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIHVzZXIgaW5mbyBpcyB1cGRhdGVkJzsKJGxhbmdbJ2V2ZW50X2luZm9fT25EZWxldGVVc2VyJ10gPSAnQW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gYSB1c2VyIGFjY291bnQgaXMgZGVsZXRlZCc7CiRsYW5nWydldmVudF9pbmZvX09uQ3JlYXRlR3JvdXAnXSA9ICdBbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIHVzZXIgZ3JvdXAgaXMgY3JlYXRlZCc7CiRsYW5nWydldmVudF9pbmZvX09uVXBkYXRlR3JvdXAnXSA9ICdBbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIHVzZXIgZ3JvdXAgaXMgdXBkYXRlZCc7CiRsYW5nWydldmVudF9pbmZvX09uRGVsZXRlR3JvdXAnXSA9ICdBbiBldmVudCBnZW5lcmF0ZWQgd2hlbiBhIHVzZXIgZ3JvdXAgaXMgZGVsZXRlZCc7CiRsYW5nWydiYWNrZW5kX2dyb3VwJ10gPSAnQmFja2VuZCBHcm91cCc7CiRsYW5nWydpbmZvX3N0YXInXSA9ICcqIFRoZSBmb2xsb3dpbmcgZmllbGRzIGFyZSBmdWxsIHNtYXJ0eSB0ZW1wbGF0ZXMuPGJyLz5BbG9uZyB3aXRoIG90aGVyIHByZS1leGlzdGluZyBzbWFydHkgdmFyaWFibGVzIGFuZCBwbHVnaW5zLCB0aGUgeyR1c2VybmFtZX0gYW5kIHskZ3JvdXB9IHZhcmlhYmxlcyBhcmUgYXZhaWxhYmllLiAgPGVtPihUaGUgeyRncm91cH0gdmFyaWFibGUgbWF0Y2hlcyB0aGUgZmlyc3QgZ3JvdXAgdG8gd2hpY2ggdGhlIHVzZXIgYmVsb25ncy4pPC9lbT4uJzsKJGxhbmdbJ2luZm9fYWRtaW5fcGFzc3dvcmQnXSA9ICdFZGl0IHRoaXMgZmllbGQgdG8gcmVzZXQgdGhlIHVzZXJzIHBhc3N3b3JkJzsKJGxhbmdbJ2luZm9fYWRtaW5fcmVwZWF0cGFzc3dvcmQnXSA9ICdFZGl0IHRoaXMgZmllbGQgdG8gcmVzZXQgdGhlIHVzZXJzIHBhc3N3b3JkJzsKJGxhbmdbJ2Vycm9yX3VzZXJuYW1lX2V4aXN0cyddID0gJ0EgdXNlciB3aXRoIHRoYXQgdXNlcm5hbWUgYWxyZWFkeSBleGlzdHMnOwokbGFuZ1snbm9jc3ZyZXN1bHRzJ10gPSAnTm8gcmVzdWx0cyByZXR1cm5lZCBmcm9tIGNzdiBleHBvcnQnOwokbGFuZ1sncHJvbXB0X3VuZmxkbGVuJ10gPSAnTGVuZ3RoIG9mIHVzZXJuYW1lIGZpZWxkJzsKJGxhbmdbJ3Byb21wdF9wd2ZsZGxlbiddID0gJ0xlbmd0aCBvZiBwYXNzd29yZCBmaWVsZCc7CiRsYW5nWydlcnJvcl9pbnZhbGlkcGFzc3dvcmRsZW5ndGhzJ10gPSAnTWluL01heCBwYXNzd29yZCBsZW5ndGhzIGFyZSBpbnZhbGlkJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWR1c2VybmFtZWxlbmd0aHMnXSA9ICdNaW4vTWF4IHVzZXJuYW1lIGxlbmd0aHMgYXJlIGludmFsaWQnOwokbGFuZ1snZXJyb3JfaW52YWxpZGVtYWlsYWRkcmVzcyddID0gJ0ludmFsaWQgRW1haWwgYWRkcmVzcyc7CiRsYW5nWydlcnJvcl9ub2VtYWlsYWRkcmVzcyddID0gJ1dlIGNvdWxkIG5vdCBmaW5kIGFuIGVtYWlsIGFkZHJlc3MgZm9yIHRoaXMgYWNjb3VudCc7CiRsYW5nWydlcnJvcl9wcm9ibGVtc2VldHRpbmdpbmZvJ10gPSAnUHJvYmxlbSBzZXR0aW5nIHVzZXIgaW5mbyc7CiRsYW5nWydlcnJvcl9zZXR0aW5ncHJvcGVydHknXSA9ICdQcm9ibGVtIHNldHRpbmcgcHJvcGVydHknOwokbGFuZ1sndXNlcl9hZGRlZCddID0gJ1VzZXIgQWRkZWQgJXMgPSAlcyc7CiRsYW5nWyd1c2VyX2RlbGV0ZWQnXSA9ICdVc2VyIERlbGV0ZWQgdWlkPSVzJzsKJGxhbmdbJ3Byb3BlcnR5ZmlsdGVyJ10gPSAnUHJvcGVydHknOwokbGFuZ1sndmFsdWVyZWdleCddID0gJ1ZhbHVlIChyZWd1bGFyIGV4cHJlc3Npb24pJzsKJGxhbmdbJ3dhcm5pbmdfZWZmZWN0c2ZpZWxkbGVuZ3RoJ10gPSAnV2FybmluZzogVGhlc2UgZmllbGRzIGFmZmVjdCB0aGUgc2l6ZSBvZiBpbnB1dCBmaWVsZHMgZm9yIGZvcm1zLiAgRGVjcmVhc2luZyB0aGlzIG51bWJlciBvbiBhbiBleGlzdGluZyBzaXRlIG1heSBub3QgYmUgYWR2aXNhYmxlJzsKJGxhbmdbJ2NvbmZpcm1fc3VibWl0cHJlZnMnXSA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gYWRqdXN0IHRoZSBtb2R1bGUgcHJlZmVyZW5jZXM/JzsKJGxhbmdbJ2Vycm9yX2VtYWlsYWxyZWFkeXVzZWQnXSA9ICdFbWFpbCBhZGRyZXNzIGFscmVhZHkgdXNlZCc7CiRsYW5nWydwcm9tcHRfdXNlY29va2llc3RvcmVtZW1iZXInXSA9ICdVc2UgY29va2llcyB0byByZW1lbWJlciBsb2dpbiBkZXRhaWxzJzsKJGxhbmdbJ3Byb21wdF9jb29raWVuYW1lJ10gPSAnVGhlIG5hbWUgb2YgdGhlICZxdW90O1JlbWVtYmVyIE1lJnF1b3Q7IGNvb2tpZSc7CiRsYW5nWydwcm9tcHRfYWxsb3dfZHVwbGljYXRlX2VtYWlscyddID0gJ0FsbG93IGR1cGxpY2F0ZSBlbWFpbHMnOwokbGFuZ1sncHJvbXB0X3VzZXJuYW1lX2lzX2VtYWlsJ10gPSAnRW1haWwgYWRkcmVzcyBpcyB1c2VybmFtZSc7CiRsYW5nWydpbmZvX2Nvb2tpZV9rZWVwYWxpdmUnXSA9ICdJZiBlbmFibGVkLCBhIGNvb2tpZSB3aWxsIGJlIHNldCB3aXRoIGFuIGV4cGlyeSB0aW1lIG9mIDI0IGhvdXJzIHRvIGtlZXAgc2Vzc2lvbnMgYWxpdmUuICBUaGlzIGlzIGRpZmZlcmVudCB0aGFuIHRoZSByZW1lbWJlcm1lIGZ1bmN0aW9uYWxpdHksIGFuZCBjYW4gYmUgdXNlZCB0byBleHRlbmQgYSB1c2VycyBsb2dpbiB0byB0aGUgc3lzdGVtIGlmIHNlc3Npb24gZGF0YSBpcyBjbGVhcmVkIHRvbyBmcmVxdWVudGx5Lic7CiRsYW5nWydpbmZvX2FsbG93X2R1cGxpY2F0ZV9lbWFpbHMnXSA9ICcoQWxsb3cgbXVsdGlwbGUgdXNlcnMgd2l0aCB0aGUgc2FtZSBlbWFpbCBhZGRyZXNzKSc7CiRsYW5nWydpbmZvX3VzZXJuYW1lX2lzX2VtYWlsJ10gPSAnKHVzZXJcJ3MgZW1haWwgYWRkcmVzcyBpcyB0aGVpciB1c2VybmFtZSAtLSBkb25cJ3Qgc2V0IHRoaXMgd2l0aCAiYWxsb3cgZHVwbGljYXRlIGVtYWlsIGFkZHJlc3NlcyIhKSc7CiRsYW5nWydwcm9tcHRfYWxsb3dfZHVwbGljYXRlX3JlbWluZGVycyddID0gJ0FsbG93IGR1cGxpY2F0ZSAiZm9yZ290IHBhc3N3b3JkIiByZW1pbmRlcnM/JzsKJGxhbmdbJ2luZm9fYWxsb3dfZHVwbGljYXRlX3JlbWluZGVycyddID0gJyhBbGxvdyBhIHVzZXJzIHRvIHJlcXVlc3QgYSBwYXNzd29yZCByZXNldCwgZXZlbiBpZiB0aGV5IGhhdmVuXCd0IGFjdGVkIG9uIGEgcHJldmlvdXMgb25lKSc7CiRsYW5nWydwcm9tcHRfbWFtc19zcGVjaWZpY19wZXJtaXNzaW9ucyddID0gJ1VzZSBGcm9udC1lbmQgVXNlciBzcGVjaWZpYyBwZXJtaXNzaW9ucz8nOwokbGFuZ1snaW5mb19tYW1zX3NwZWNpZmljX3Blcm1pc3Npb25zJ10gPSAnKE5vcm1hbGx5LCBNQU1TU2VycyBwZXJtaXNzaW9ucyBhcmUgdGhlIHNhbWUgYXMgdGhlIGVxdWl2YWxlbnQgQWRtaW4gQXJlYSBwZXJtaXNzaW9ucyBsaWtlIEFkZCBVc2VyLCBBZGQgR3JvdXAsIGV0Yy4gSWYgeW91IHNlbGVjdCB0aGlzIG9wdGlvbiwgdGhlcmUgd2lsbCBiZSBzZXBhcmF0ZSBwZXJtaXNzaW9ucyBmb3IgTUFNU3NlcnMuKSc7CiRsYW5nWydlcnJvcl9taXNzaW5ndXBsb2FkJ10gPSAnQ291bGQgbm90IGZpbmQgdGhlIHVwbG9hZGVkIGZpbGUgKGludGVybmFsIGVycm9yKSc7CiRsYW5nWydlcnJvcl9wcm9ibGVtX3VwbG9hZCddID0gJ1RoZXJlIHdhcyBhIHByb2JsZW0gd2l0aCB5b3VyIHVwbG9hZGVkIGZpbGUuICBQbGVhc2UgdHJ5IGFnYWluJzsKJGxhbmdbJ2Vycm9yX21pc3Npbmd1c2VybmFtZSddID0gJ1lvdSBkaWQgbm90IGVudGVyIGEgdXNlcm5hbWUnOwokbGFuZ1snZXJyb3JfbWlzc2luZ2VtYWlsJ10gPSAnWW91IGRpZCBub3QgZW50ZXIgeW91ciBlbWFpbCc7CiRsYW5nWydlcnJvcl9taXNzaW5ncGFzc3dvcmQnXSA9ICdZb3UgZGlkIG5vdCBlbnRlciBhIHBhc3N3b3JkJzsKJGxhbmdbJ21hbXN1c2VyX2xvZ291dCddID0gJ01BTVMgVXNlciBMb2dvdXQnOwokbGFuZ1snbWFtc3VzZXJfbG9nZ2VkaW4nXSA9ICdNQU1TIFVzZXIgTG9naW4nOwokbGFuZ1snZWRpdHByb3BfaW5mb21zZyddID0gJzxmb250IGNvbG9yPSJyZWQiPjxiPlVTRSBDQVVUSU9OPC9iPiB3aGVuIGNoYW5naW5nIGV4aXN0aW5nIHByb3BlcnRpZXMgdGhhdCBhcmUgYXNzaWduZWQgdG8gZ3JvdXBzLCB5b3UgbWF5IHBvdGVudGlhbGx5IGNhdXNlIGRhbWFnZSBhbmQgYnJlYWsgYW4gZXhpc3Rpbmcgc2l0ZSA8aT4oZXNwZWNpYWxseSBpZiB5b3UgcmVkdWNlIGZpZWxkIGxlbmd0aHMsIGV0Yyk8L2k+PC9mb250Pic7CiRsYW5nWydpbmZvX3NtdHB2YWxpZGF0ZSddID0gJ1RoaXMgZnVuY3Rpb24gZG9lcyBub3Qgd29yayBvbiB3aW5kb3dzJzsKJGxhbmdbJ21zZ19kb250Y3JlYXRldXNlcm5hbWUnXSA9ICdEbyBub3QgY3JlYXRlIGEgcHJvcGVydHkgZm9yIHVzZXJuYW1lLCBvciBwYXNzd29yZCBhcyB0aGVzZSBwcm9wZXJ0aWVzIGFyZSBidWlsdGluIHRvIHRoZSBNZW1iZXJzIEFyZWEgTWFkZSBTaW1wbGUgbW9kdWxlJzsKJGxhbmdbJ3Byb21wdF9leHBvcnRjc3YnXSA9ICdFeHBvcnQgVXNlcnMgdG8gQ1NWJzsKJGxhbmdbJ2V4cG9ydGNzdiddID0gJ0V4cG9ydCc7CiRsYW5nWydpbXBvcnRjc3YnXSA9ICdJbXBvcnQnOwokbGFuZ1snYWRtaW4nXSA9ICdBZG1pbic7CiRsYW5nWydlZGl0cHJvcCddID0gJ0VkaXQgUHJvcGVydHk6IDxlbT4lczwvZW0+JzsKJGxhbmdbJ21heGxlbmd0aCddID0gJ01heGltdW0gTGVuZ3RoJzsKJGxhbmdbJ2NyZWF0ZWQnXSA9ICdDcmVhdGVkJzsKJGxhbmdbJ3NvcnRieSddID0gJ1NvcnQgQnknOwokbGFuZ1snc29ydCddID0gJ1NvcnRpbmcnOwokbGFuZ1sndXNlcnNpbmdyb3VwJ10gPSAnVXNlcnMgaW4gdGhlIHNlbGVjdGVkIGdyb3VwKHMpJzsKJGxhbmdbJ3VzZXJsaW1pdCddID0gJ0xpbWl0IHJlc3VsdHMgdG8nOwokbGFuZ1snZXJyb3Jfbm9lbWFpbGZpZWxkJ10gPSAnQ291bGQgbm90IGZpbmQgYW4gZW1haWwgZmllbGQgZm9yIHRoaXMgdXNlci4gIFlvdSBtYXkgbmVlZCB0byBjb250YWN0IHRoZSBzeXN0ZW0gYWRtaW5pc3RyYXRvcic7CiRsYW5nWydwcm9tcHRfZm9yZ290cHdfcGFnZSddID0gJ1BhZ2VJRC9BbGlhcyBmb3IgRm9yZ290IFBhc3N3b3JkIGZvcm0nOwokbGFuZ1sncHJvbXB0X2NoYW5nZXNldHRpbmdzX3BhZ2UnXSA9ICdQYWdlSUQvQWxpYXMgZm9yIENoYW5nZSBTZXR0aW5ncyBmb3JtJzsKJGxhbmdbJ3Byb21wdF9sb2dpbl9wYWdlJ10gPSAnUGFnZUlEL0FsaWFzIHRvIGp1bXAgdG8gYWZ0ZXIgbG9naW4gKic7CiRsYW5nWydwcm9tcHRfbG9nb3V0X3BhZ2UnXSA9ICdQYWdlSUQvQWxpYXMgdG8ganVtcCB0byBhZnRlciBsb2dvdXQgKic7CiRsYW5nWydzb3J0b3JkZXInXSA9ICdTb3J0IG9yZGVyJzsKJGxhbmdbJ3Byb21wdF9udW1yZXNldHJlY29yZCddID0gJ0EgbnVtYmVyIG9mIHVzZXJzIGFyZSBpbiB0aGUgbWlkZGxlIG9mIHJlc2V0dGluZyBsb3N0IHBhc3N3b3Jkcy4gIEN1cnJlbnRseSB0aGlzIGNvdW50IGlzIGF0Oic7CiRsYW5nWydyZW1vdmUxd2VlayddID0gJ1JlbW92ZSBhbGwgZW50cmllcyBtb3JlIHRoYW4gYSB3ZWVrIG9sZCc7CiRsYW5nWydyZW1vdmUxbW9udGgnXSA9ICdSZW1vdmUgYWxsIGVudHJpZXMgbW9yZSB0aGFuIGEgbW9udGggb2xkJzsKJGxhbmdbJ3JlbW92ZWFsbCddID0gJ1JlbW92ZSBhbGwgZW50cmllcyc7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnQXJlIHlvdSBzdXJlPyc7CiRsYW5nWydlcnJvcl9pbnZhbGlkY29kZSddID0gJ0FuIGludmFsaWQgY29kZSBoYXMgYmVlbiBlbnRlcmVkLCBwbGVhc2UgdHJ5IGFnYWluJzsKJGxhbmdbJ2Vycm9yX3RlbXBjb2Rlbm90Zm91bmQnXSA9ICdTb3JyeSwgSXQgYXBwZWFycyB0aGF0IHRoZSB0ZW1wb3JhcnkgY29kZSB5b3UgcmVjZWl2ZWQgZm9yIHJlc2V0dGluZyB5b3VyIHBhc3N3b3JkIGlzIG5vdyBpbnZhbGlkICh0ZW1wb3JhcnkgY29kZXMgY2FuIG9ubHkgYmUgdXNlZCBvbmNlKS4gIFBsZWFzZSB0cnkgYWdhaW4uJzsKJGxhbmdbJ2ZvcmdvdHBhc3N3b3JkX3ZlcmlmeXRlbXBsYXRlJ10gPSAnVGVtcGxhdGUgdXNlZCB0byBkaXNwbGF5IHZlcmlmaWNhdGlvbiBmb3JtJzsKJGxhbmdbJ2ZvcmdvdHBhc3N3b3JkX2VtYWlsdGVtcGxhdGUnXSA9ICdUZW1wbGF0ZSB1c2VkIGZvciBmb3Jnb3R0ZW4gcGFzc3dvcmQgZW1haWwnOwokbGFuZ1snZXJyb3JfcmVzZXRhbHJlYWR5c2VudCddID0gJ0VpdGhlciB5b3Vyc2VsZiBvciBzb21lb25lIGVsc2UgaGFzIGFscmVhZHkgdHJpZ2dlcmVkIGEgcGFzc3dvcmQgcmVzZXQgb3BlcmF0aW9uIGZvciB0aGlzIGFjY291bnQuICBDaGVjayB5b3VyIGVtYWlsLCB5b3UgbWF5IGhhdmUgZnVydGhlciBpbnN0cnVjdGlvbnMgb24gaG93IHRvIHJlc2V0IHlvdXIgcGFzc3dvcmQgaW4geW91ciBpbmJveCc7CiRsYW5nWydlcnJvcl9kYmVycm9yJ10gPSAnRGF0YWJhc2UgZXJyb3InOwokbGFuZ1snbWVzc2FnZV9mb3Jnb3Rwd2VtYWlsJ10gPSAnWW91IGFyZSByZWNlaXZpbmcgdGhpcyBtZXNzYWdlIGJlY2F1c2Ugc29tZWJvZHkgdG9sZCBvdXIgc2l0ZSB0aGF0IHlvdSBoYWQgbG9zdCB5b3VyIHBhc3N3b3JkLiAgSWYgdGhpcyBpcyB0aGUgY2FzZSwgcmVhZCB0aGUgaW5zdHJ1Y3Rpb25zIGJlbG93LiAgSWYgeW91IGRvblwndCBoYXZlIGEgY2x1ZSB3aGF0IHRoaXMgaXMsIHRoZW4geW91IGFyZSBzYWZlIHRvIGRlbGV0ZSB0aGlzIG1lc3NhZ2UsIGFuZCB3ZSB0aGFuayB5b3UgZm9yIHlvdXIgdGltZS4nOwokbGFuZ1sncHJvbXB0X2NvZGUnXSA9ICdDb2RlJzsKJGxhbmdbJ21lc3NhZ2VfY29kZSddID0gJ1RoZSBmb2xsb3dpbmcgY29kZSBoYXMgYmVlbiByYW5kb21seSBnZW5lcmF0ZWQgaW4gb3JkZXIgdG8gdmVyaWZ5IHRoZSB1c2VyIGFjY291bnQuICB3aGVuIHlvdSBjbGljayBvbiB0aGUgbGluayBiZWxvdyB5b3Ugd2lsbCBiZSBwcmVzZW50ZWQgd2l0aCBhIGZpZWxkIHRvIGVudGVyIHRoaXMgY29kZS4gIE5vcm1hbGx5IHRoZSBmaWVsZCBpcyBwcmUtY29tcGxldGVkIGZvciB5b3UsIGJ1dCBpbmNhc2UgaXQgaXNuXCd0IHRoZSBjb2RlIGlzOic7CiRsYW5nWydwcm9tcHRfbGluayddID0gJ0NsaWNraW5nIG9uIHRoZSBmb2xsb3dpbmcgbGluayB3aWxsIHRha2UgeW91IHRvIHRoZSB3ZWJzaXRlIHdoZXJlIHlvdSBjYW4gZW50ZXIgdGhlIGFib3ZlIGNvZGUsIGFuZCByZXNldCB5b3VyIHBhc3N3b3JkOic7CiRsYW5nWydsb3N0cGFzc3dvcmRfZW1haWxzdWJqZWN0J10gPSAnTG9zdCBQYXNzd29yZCc7CiRsYW5nWydlcnJvcl9ub21haWxlcm1vZHVsZSddID0gJ0NvdWxkIG5vdCBmaW5kIHRoZSBDTVNNYWlsZXIgbW9kdWxlJzsKJGxhbmdbJ2luZm9fZm9yZ290cHdtZXNzYWdlc2VudCddID0gJ0FuIGVtYWlsIGhhcyBiZWVuIHNlbnQgdG8gJXMgd2l0aCBpbnN0cnVjdGlvbnMgYXMgdG8gaG93IHRvIHJlc2V0IHlvdXIgcGFzc3dvcmQuICBUaGFuayB5b3UnOwokbGFuZ1snbG9zdHB3X21lc3NhZ2UnXSA9ICdTbyB5b3UgZm9yZ290IG9yIGxvc3QgeW91ciBwYXNzd29yZC4gV2VsbCwgZW50ZXIgdGhlIHJlcXVpcmVkIGluZm9ybWF0aW9uIGludG8gdGhpcyBmb3JtLCBhbmQgaWYgd2UgY2FuIGZpbmQgeW91IHdlIHdpbGwgc2VuZCB5b3UgYW4gZW1haWwgd2l0aCBpbnN0cnVjdGlvbnMgb24gaG93IHRvIHJlc2V0IGl0Lic7CiRsYW5nWydmb3Jnb3RwYXNzd29yZF90ZW1wbGF0ZSddID0gJ0ZvcmdvdCBQYXNzd29yZCBUZW1wbGF0ZXMnOwokbGFuZ1snbG9zdHVzZXJuYW1lX3RlbXBsYXRlJ10gPSAnTG9zdCBVc2VybmFtZSBUZW1wbGF0ZSc7CiRsYW5nWydlcnJvcl9wcm9wbm90Zm91bmQnXSA9ICdQcm9wZXJ0eSAlcyBub3QgZm91bmQnOwokbGFuZ1sncHJvcHNmb3VuZCddID0gJ1Byb3BlcnRpZXMgZm91bmQnOwokbGFuZ1snYWRkcHJvcCddID0gJ0FkZCBQcm9wZXJ0eSc7CiRsYW5nWydlcnJvcl9yZXF1aXJlZGZpZWxkJ10gPSAnQSByZXF1aXJlZCBmaWVsZCAoJXMpIHdhcyBlbXB0eSc7CiRsYW5nWydpbmZvX2VtcHR5cGFzc3dvcmRmaWVsZCddID0gJ0VudGVyIGEgbmV3IHBhc3N3b3JkIGhlcmUgdG8gY2hhbmdlIHlvdXIgcGFzc3dvcmQnOwokbGFuZ1snZXJyb3Jfbm90bG9nZ2VkaW4nXSA9ICdZb3UgZG8gbm90IGFwcGVhciB0byBiZSBsb2dnZWQgaW4nOwokbGFuZ1sndXNlcl9zZXR0aW5ncyddID0gJ1NldHRpbmdzJzsKJGxhbmdbJ3VzZXJfcmVnaXN0cmF0aW9uJ10gPSAnUmVnaXN0cmF0aW9uJzsKJGxhbmdbJ2Vycm9yX2FjY291bnRleHBpcmVkJ10gPSAnVGhpcyBhY2NvdW50IGhhcyBleHBpcmVkJzsKJGxhbmdbJ2Vycm9yX2ltcHJvcGVyZW1haWxmb3JtYXQnXSA9ICdJbXByb3BlciBlbWFpbCBhZGRyZXNzIGZvcm1hdHRpbmcnOwokbGFuZ1snZXJyb3JfaW52YWxpZGV4cGlyeWRhdGUnXSA9ICdJbnZhbGlkIGV4cGlyeSBkYXRlLiAgVGhpcyBtYXkgYmUgc3lzdGVtIHJlbGF0ZWQuICBUcnkgc2V0dGluZyBhbiBlYXJsaWVyIHllYXIuJzsKJGxhbmdbJ2Vycm9yX3Byb2JsZW1zZXR0aW5ncHJvcGVydHknXSA9ICdFcnJvciBzZXR0aW5nIHByb3BlcnR5ICVzIGZvciB1c2VyICRzJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRncm91cGlkJ10gPSAnSW52YWxpZCBncm91cCBpZCAlcyc7CiRsYW5nWydzb3J0b3JkZXInXSA9ICdTb3J0IG9yZGVyJzsKJGxhbmdbJ2hpZGRlbmZpZWxkbWFya2VyJ10gPSAnSGlkZGVuIGZpZWxkIG1hcmtlcic7CiRsYW5nWydoaWRkZW5maWVsZGNvbG9yJ10gPSAnSGlkZGVuIGZpZWxkIGNvbG9yJzsKJGxhbmdbJ2hpZGRlbiddID0gJ0hpZGRlbic7CiRsYW5nWydlcnJvcl9kdXBsaWNhdGVuYW1lJ10gPSAnQSBwcm9wZXJ0eSB3aXRoIHRoYXQgbmFtZSBpcyBhbHJlYWR5IGRlZmluZWQnOwokbGFuZ1snZXJyb3Jfbm9wcm9wZXJ0aWVzJ10gPSAnTm8gcHJvcGVydGllcyBkZWZpbmVkJzsKJGxhbmdbJ2Vycm9yX25vcmVsYXRpb25zJ10gPSAnTm8gcHJvcGVydGllcyB3ZXJlIHNlbGVjdGVkIGZvciB0aGlzIGdyb3VwLiAgQSBncm91cCBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIHByb3BlcnR5IHNlbGVjdGVkIChSZXF1aXJlZCxPcHRpb25hbCwgb3IgSGlkZGVuKSc7CiRsYW5nWydub2dyb3VwcyddID0gJ05vIEdyb3VwcyBhcmUgZGVmaW5lZCc7CiRsYW5nWydncm91cHNmb3VuZCddID0gJ0dyb3VwcyBmb3VuZCc7CiRsYW5nWydlcnJvcl9vbmVncm91cHJlcXVpcmVkJ10gPSAnTWVtYmVyc2hpcCBpbiBhdCBsZWFzdCBvbmUgZ3JvdXAgaXMgcmVxdWlyZWQnOwokbGFuZ1sncHJvbXB0X3JlcXVpcmVvbmVncm91cCddID0gJ1JlcXVpcmUgbWVtYmVyc2hpcCBpbiBhdGxlYXN0IG9uZSBncm91cCc7CiRsYW5nWydiYWNrJ10gPSAnQmFjayc7CiRsYW5nWydlcnJvcl9taXNzaW5nX3JlcXVpcmVkX3BhcmFtJ10gPSAnJXMgaXMgYSByZXF1aXJlZCBmaWVsZCc7CiRsYW5nWydyZXF1aXJlZGZpZWxkbWFya2VyJ10gPSAnTWFyayByZXF1aXJlZCBmaWVsZHMgd2l0aCc7CiRsYW5nWydyZXF1aXJlZGZpZWxkY29sb3InXSA9ICdIaWxpdGUgcmVxdWlyZWQgZmllbGRzIGluJzsKJGxhbmdbJ25leHQnXSA9ICdOZXh0JzsKJGxhbmdbJ2Vycm9yX2dyb3VwZXhpc3RzJ10gPSAnQSBHcm91cCB3aXRoIHRoYXQgbmFtZSBhbHJlYWR5IGV4aXN0cyc7CiRsYW5nWydyZXF1aXJlZCddID0gJ1JlcXVpcmVkJzsKJGxhbmdbJ29wdGlvbmFsJ10gPSAnT3B0aW9uYWwnOwokbGFuZ1snb2ZmJ10gPSAnT2ZmJzsKJGxhbmdbJ3NpemUnXSA9ICdTaXplJzsKJGxhbmdbJ3NpemVjb21tZW50J10gPSAnPGJyLz4oTWF4aW11bSBzaXplIG9mIGFueSBvbmUgZGltZW5zaW9uIG9mIHRoZSBpbWFnZSBpbiBwaXhlbHMpJzsKJGxhbmdbJ2xlbmd0aCddID0gJ0xlbmd0aCc7CiRsYW5nWydsZW5ndGhjb21tZW50J10gPSAnPGJyPihjaGFycyBpbiB0aGUgdGV4dCBpbnB1dCknOwokbGFuZ1snc2Vsb3B0aW9ucyddID0gJ0Ryb3Bkb3duIG9wdGlvbnMsIHNlcGFyYXRlZCBieSBsaW5lIGJyZWFrcy4gIFZhbHVlcyBjYW4gYmUgc2VwYXJhdGVkIGZyb20gdGV4dCB3aXRoIGEgPSBjaGFyYWN0ZXIuIGkuZTogRmVtYWxlPWYnOwokbGFuZ1sncmFkaW9vcHRpb25zJ10gPSAnUmFkaW9idXR0b24gbGFiZWxzLCBzZXBhcmF0ZWQgYnkgbGluZSBicmVha3MuIFZhbHVlcyBjYW4gYmUgc2VwYXJhdGVkIGZyb20gdGV4dCB3aXRoIGEgPSBjaGFyYWN0ZXIuIGkuZTogRmVtYWxlPWYnOwokbGFuZ1sneWVzJ10gPSAnWWVzJzsKJGxhbmdbJ3Byb21wdCddID0gJ1Byb21wdCc7CiRsYW5nWydwcm9tcHRfdHlwZSddID0gJ1R5cGUnOwokbGFuZ1sndHlwZSddID0gJ1R5cGUnOwokbGFuZ1sncmVxdWlyZWQnXSA9ICdSZXF1aXJlZCc7CiRsYW5nWydmaWVsZHN0YXR1cyddID0gJ0ZpZWxkIFN0YXR1cyc7CiRsYW5nWyd1c2VkaW5sb3N0dW4nXSA9ICdBc2sgaW4gTG9zdDxici8+VXNlcm5hbWUnOwokbGFuZ1sndGV4dCddID0gJ1RleHQnOwokbGFuZ1snY2hlY2tib3gnXSA9ICdDaGVja2JveCc7CiRsYW5nWydtdWx0aXNlbGVjdCddID0gJ011bHRpIFNlbGVjdCBMaXN0JzsKJGxhbmdbJ3JhZGlvYnV0dG9ucyddID0gJ1JhZGlvIEJ1dHRvbnMnOwokbGFuZ1snaW1hZ2UnXSA9ICdJbWFnZSc7CiRsYW5nWydlbWFpbCddID0gJ0VtYWlsJzsKJGxhbmdbJ3RleHRhcmVhJ10gPSAnVGV4dGFyZWEnOwokbGFuZ1snZHJvcGRvd24nXSA9ICdEcm9wZG93bic7CiRsYW5nWydtc2dfY3VycmVudGx5bG9nZ2VkaW5hcyddID0gJ1dlbGNvbWUnOwokbGFuZ1snbG9nb3V0J10gPSAnU2lnbiBvdXQnOwokbGFuZ1sncHJvbXB0X25ld2dyb3VwbmFtZSddID0gJ1VzZSB0aGlzIGdyb3VwIG5hbWUnOwokbGFuZ1sncHJvbXB0X2NoYW5nZXNldHRpbmdzJ10gPSAnQ2hhbmdlIE15IFNldHRpbmdzJzsKJGxhbmdbJ2Vycm9yX2xvZ2luZmFpbGVkJ10gPSAnTG9naW4gZmFpbGVkLiAgVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0IHlvdSBlbnRlcmVkIGFuIGludmFsaWQgdXNlcm5hbWUgb3IgcGFzc3dvcmQuICBCdXQgeW91ciBhY2NvdW50IG1heSBoYXZlIGFsc28gZXhwaXJlZCBvciBiZWVuIGRpc2FibGVkIGJ5IGFuIGFkbWluaXN0cmF0b3IuICBQbGVhc2UgZG91YmxlIGNoZWNrIHlvdXIgbG9naW4gY3JlZGVudGlhbHMsIGFuZCBpZiB0aGV5IGFyZSBjb3JyZWN0IHlvdSBtYXkgbmVlZCB0byBjb250YWN0IHRoZSBzaXRlIGFkbWluaXN0cmF0b3IuJzsKJGxhbmdbJ2xvZ2luJ10gPSAnU2lnbiBpbic7CiRsYW5nWydwcm9tcHRfc2lnbmluX2J1dHRvbiddID0gJ1NpZ24gaW4gYnV0dG9uIGxhYmVsJzsKJGxhbmdbJ3Byb21wdF91c2VybmFtZSddID0gJ1VzZXJuYW1lJzsKJGxhbmdbJ3Byb21wdF9lbWFpbCddID0gJ0VtYWlsIEFkZHJlc3MnOwokbGFuZ1sncHJvbXB0X3Bhc3N3b3JkJ10gPSAnUGFzc3dvcmQnOwokbGFuZ1sncHJvbXB0X3JlbWVtYmVybWUnXSA9ICdSZW1lbWJlciBtZSBvbiB0aGlzIGNvbXB1dGVyJzsKJGxhbmdbJ3JlZ2lzdGVyJ10gPSAnUmVnaXN0ZXInOwokbGFuZ1snZm9yZ290cHcnXSA9ICdGb3Jnb3QgWW91ciBQYXNzd29yZD8nOwokbGFuZ1snbG9zdHVzZXJuYW1lJ10gPSAnRm9yZ290IFlvdXIgTG9naW4gRGV0YWlscz8nOwokbGFuZ1snZGVmYXVsdHMnXSA9ICdEZWZhdWx0cyc7CiRsYW5nWyd0ZW1wbGF0ZSddID0gJ1RlbXBsYXRlJzsKJGxhbmdbJ2Vycm9yX3VzZXJuYW1ldGFrZW4nXSA9ICdUaGF0IHVzZXJuYW1lICglcykgaXMgYWxyZWFkeSBpbiB1c2UnOwokbGFuZ1sncHJvbXB0X3NtdHB2YWxpZGF0ZSddID0gJ1VzZSBTTVRQIHRvIHZhbGlkYXRlIGVtYWlsIGFkZHJlc3Nlcz8nOwokbGFuZ1sncHJvbXB0X21pbnB3bGVuJ10gPSAnTWluaW11bSBQYXNzd29yZCBMZW5ndGgnOwokbGFuZ1sncHJvbXB0X21heHB3bGVuJ10gPSAnTWF4aW11bSBQYXNzd29yZCBMZW5ndGgnOwokbGFuZ1sncHJvbXB0X21pbnVubGVuJ10gPSAnTWluaW11bSBVc2VybmFtZSBMZW5ndGgnOwokbGFuZ1sncHJvbXB0X21heHVubGVuJ10gPSAnTWF4aW11bSBVc2VybmFtZSBMZW5ndGgnOwokbGFuZ1sncHJvbXB0X3Nlc3Npb250aW1lb3V0J10gPSAnU2Vzc2lvbiBUaW1lb3V0IChzZWNvbmRzKSc7CiRsYW5nWydwcm9tcHRfY29va2lla2VlcGFsaXZlJ10gPSAnVXNlIGNvb2tpZXMgdG8ga2VlcCBsb2dpbnMgYWxpdmUnOwokbGFuZ1sncHJvbXB0X2FsbG93ZW1haWxyZWcnXSA9ICdBbGxvdyBFbWFpbCBSZWdpc3RyYXRpb24nOwokbGFuZ1sncHJvbXB0X2RmbHRncm91cCddID0gJ0RlZmF1bHQgR3JvdXAgZm9yIG5ldyB1c2Vycyc7CiRsYW5nWydjaGFuZ2VzZXR0aW5nc190ZW1wbGF0ZSddID0gJ0NoYW5nZSBTZXR0aW5ncyBUZW1wbGF0ZSc7CiRsYW5nWydlcnJvcl9wYXNzd29yZG1pc21hdGNoJ10gPSAnUGFzc3dvcmRzIERvIG5vdCBtYXRjaCc7CiRsYW5nWydlcnJvcl9pbnZhbGlkdXNlcm5hbWUnXSA9ICdJbnZhbGlkIFVzZXJuYW1lJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRwYXNzd29yZCddID0gJ0ludmFsaWQgUGFzc3dvcmQuICBZb3VyIHBhc3N3b3JkIG1heSBiZSB0b28gc2hvcnQsIHRvbyBsb25nLCBvciBub3Qgc3Ryb25nIGVub3VnaCBmb3IgdGhpcyBzeXN0ZW0uICBTZWUgdGhlIHdlYnNpdGVzIHBhc3N3b3JkIHBvbGljeSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nOwokbGFuZ1snZXJyb3JfdXNlcm5vdGZvdW5kJ10gPSAnU29ycnksIHNvbWV0aGluZyBoYXMgZ29uZSB3cm9uZy4gIFdlIGNvdWxkIG5vdCBmaW5kIGFueSBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCB1c2VyJzsKJGxhbmdbJ2VkaXR1c2VyJ10gPSAnRWRpdCBVc2VyJzsKJGxhbmdbJ3ZhbGlkJ10gPSAnVmFsaWQnOwokbGFuZ1sndXNlcm5hbWUnXSA9ICdVc2VybmFtZSc7CiRsYW5nWydzdGF0dXMnXSA9ICdTdGF0dXMnOwokbGFuZ1snZXJyb3JfbWVtYmVyZ3JvdXBzJ10gPSAnVGhpcyB1c2VyIGlzIG5vdCBhIG1lbWJlciBvZiBhbnkgZ3JvdXBzJzsKJGxhbmdbJ2Vycm9yX3Byb3BlcnRpZXMnXSA9ICdObyBQcm9wZXJ0aWVzJzsKJGxhbmdbJ2Vycm9yX2R1cF9wcm9wZXJ0aWVzJ10gPSAnQXR0ZW1wdCB0byBpbXBvcnQgZHVwbGljYXRlIHByb3BlcnRpZXMnOwokbGFuZ1sndmFsdWUnXSA9ICdWYWx1ZSc7CiRsYW5nWydncm91cHMnXSA9ICdHcm91cHMnOwokbGFuZ1sncHJvcGVydGllcyddID0gJ1Byb3BlcnRpZXMnOwokbGFuZ1sncHJvcG5hbWUnXSA9ICdQcm9wZXJ0eSBOYW1lJzsKJGxhbmdbJ3Byb3B2YWx1ZSddID0gJ1Byb3BlcnR5IFZhbHVlJzsKJGxhbmdbJ2FkZCddID0gJ0FkZCc7CiRsYW5nWydoaXN0b3J5J10gPSAnSGlzdG9yeSc7CiRsYW5nWydlZGl0J10gPSAnRWRpdCc7CiRsYW5nWydleHBpcmVzJ10gPSAnRXhwaXJlcyc7CiRsYW5nWydzcGVjaWZ5X2RhdGUnXSA9ICdTcGVjaWZ5IERhdGUnOwokbGFuZ1snMTJocnMnXSA9ICcxMiBIb3Vycyc7CiRsYW5nWycyNGhycyddID0gJzI0IEhvdXJzJzsKJGxhbmdbJzQ4aHJzJ10gPSAnNDggSG91cnMnOwokbGFuZ1snMXdlZWsnXSA9ICcxIFdlZWsnOwokbGFuZ1snMndlZWtzJ10gPSAnMiBXZWVrcyc7CiRsYW5nWycxbW9udGgnXSA9ICcxIE1vbnRoJzsKJGxhbmdbJzNtb250aHMnXSA9ICczIE1vbnRocyc7CiRsYW5nWyc2bW9udGhzJ10gPSAnNiBNb250aHMnOwokbGFuZ1snMXllYXInXSA9ICcxIFllYXInOwokbGFuZ1snbmV2ZXInXSA9ICdOZXZlcic7CiRsYW5nWydwb3N0aW5zdGFsbG1lc3NhZ2UnXSA9ICdNb2R1bGUgaW5zdGFsbGVkIHN1Y2Vzc2Z1bGx5Ljxici8+QmUgc3VyZSB0byBzZXQgdGhlICJNb2RpZnkgTUFNUyBQcm9wZXJ0aWVzIHBlcm1pc3Npb24uICBBZGRpdGlvbmFsbHksIHdlIHJlY29tbWVuZCB0aGF0IHlvdSBpbnN0YWxsIHRoZSBDYXB0Y2hhIG1vZHVsZS4gIElmIGluc3RhbGxlZCwgdmFsaWRhdGlvbiBvZiBhIGNhcHRjaGEgaW1hZ2Ugd2lsbCBiZSByZXF1aXJlZCBpbiBhZGRpdGlvbiB0byB0aGUgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIHRvIGxvZ2luLiAgVGhpcyBpcyBpbnRlbmRlZCB0byBwcmV2ZW50IGJydXRlIGZvcmNlIGF0dGFja3MuICA8c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFRoZSBub2NhcHRjaGEgcGFyYW1ldGVyIGNhbiBiZSB1c2VkIHRvIGRpc2FibGUgdGhpcyBmdW5jdGlvbmFsaXR5IGV2ZW4gaWYgdGhlIENhcHRjaGEgbW9kdWxlIGlzIGluc3RhbGxlZC4iJzsKJGxhbmdbJ2VtYWlsJ10gPSAnRW1haWwgQWRkcmVzcyc7CiRsYW5nWydwYXNzd29yZCddID0gJ1Bhc3N3b3JkJzsKJGxhbmdbJ3JlcGVhdHBhc3N3b3JkJ10gPSAnQWdhaW4nOwokbGFuZ1snZXJyb3JfZ3JvdXBuYW1lX2V4aXN0cyddID0gJ0dyb3VwIGJ5IHRoYXQgbmFtZSBhbHJlYWR5IGV4aXN0cyc7CiRsYW5nWydlZGl0Z3JvdXAnXSA9ICdFZGl0IEdyb3VwJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ1N1Ym1pdCc7CiRsYW5nWydjYW5jZWwnXSA9ICdDYW5jZWwnOwokbGFuZ1snZGVsZXRlJ10gPSAnRGVsZXRlJzsKJGxhbmdbJ2NvbmZpcm1fZWRpdGdyb3VwJ10gPSAnQXJlIHlvdSBzdXJlIHRoaXMgaXMgdGhlIHByb3BlciBzZXR0aW5ncyBmb3IgdGhpcyBncm91cD9cblR1cm5pbmcgYSBwcm9wZXJ0eSBvZmYgd2lsbCBub3QgZGVsZXRlIGFueSBlbnRyaWVzIGluIHRoZSBwcm9wZXJ0aWVzIHRhYmxlIGZvciB0aGlzIGdyb3VwL3VzZXIuICBUaGV5IHdpbGwgbWVyZWx5IGJlIHVuYXZhaWxhYmxlLic7CiRsYW5nWydhcmV5b3VzdXJlX2RlbGV0ZWdyb3VwJ10gPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIGdyb3VwPyc7CiRsYW5nWydjb25maXJtX2RlbGV0ZV9wcm9wJ10gPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNvbXBsZXRlbHkgZGVsZXRlIHRoaXMgcHJvcGVydHk/XG5Eb2luZyBzbyB3aWxsIGFsc28gZXJhc2UgYW55IHVzZXIgZW50cmllcyBmb3IgdGhpcyBwcm9wZXJ0eS4nOwokbGFuZ1snZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJ10gPSAnSW5zdWZmaWNpZW50IFBhcmFtZXRlcnMnOwokbGFuZ1snaWQnXSA9ICdJZCc7CiRsYW5nWyd1c2VybmFtZSddID0gJ1VzZXJuYW1lJzsKJGxhbmdbJ25hbWUnXSA9ICdOYW1lJzsKJGxhbmdbJ2Vycm9yX2NhbnRhZGRwcm9wJ10gPSAnUHJvYmxlbSBhZGRpbmcgcHJvcGVydHknOwokbGFuZ1snZXJyb3JfY2FudGFkZGdyb3VwcmVsbiddID0gJ1Byb2JsZW0gYWRkaW5nIGdyb3VwIHJlbGF0aW9uJzsKJGxhbmdbJ2Vycm9yX2NhbnRhZGRncm91cCddID0gJ1Byb2JsZW0gYWRkaW5nIGdyb3VwJzsKJGxhbmdbJ2Vycm9yX2NhbnRhc3NpZ251c2VyJ10gPSAnUHJvYmxlbSBhZGRpbmcgYSB1c2VyIHRvIGEgZ3JvdXAnOwokbGFuZ1snZXJyb3JfY291bGRub3RkZWxldGVwcm9wZXJ0eSddID0gJ1Byb2JsZW0gZGVsZXRpbmcgYSBwcm9wZXJ0eSc7CiRsYW5nWydlcnJvcl9jb3VsZG5vdGZpbmRlbWFpbCddID0gJ0NvdWxkIG5vdCBmaW5kIGFuIGVtYWlsIGFkZHJlc3MnOwokbGFuZ1snZXJyb3JfZGVzdGluYXRpb25ub3R3cml0YWJsZSddID0gJ05vIHdyaXRlIHBlcm1pc3Npb24gdG8gZGVzdGluYXRpb24gZGlyZWN0b3J5JzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRwYXJhbXMnXSA9ICdJbnZhbGlkIFBhcmFtZXRlcnMnOwokbGFuZ1snZXJyb3Jfbm9ncm91cHMnXSA9ICdDb3VsZCBub3QgZmluZCBhbnkgZ3JvdXBzJzsKJGxhbmdbJ2FwcGx5ZmlsdGVyJ10gPSAnQXBwbHknOwokbGFuZ1snZmlsdGVyJ10gPSAnRmlsdGVyJzsKJGxhbmdbJ3VzZXJmaWx0ZXInXSA9ICdVc2VybmFtZSBSZWd1bGFyIEV4cHJlc3Npb24nOwokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdEZXNjcmlwdGlvbic7CiRsYW5nWyduYW1lJ10gPSAnTmFtZSc7CiRsYW5nWydncm91cG5hbWUnXSA9ICdHcm91cCBOYW1lJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0FjY2VzcyBEZW5pZWQnOwokbGFuZ1snZXJyb3InXSA9ICdFcnJvcic7CiRsYW5nWydhZGRncm91cCddID0gJ0FkZCBHcm91cCc7CiRsYW5nWydpbXBvcnRncm91cCddID0gJ0ltcG9ydCBHcm91cCc7CiRsYW5nWydhZGR1c2VyJ10gPSAnQWRkIFVzZXInOwokbGFuZ1snZ3JvdXBzZm91bmQnXSA9ICdHcm91cHMgRm91bmQnOwokbGFuZ1sndXNlcnNmb3VuZCddID0gJ1VzZXJzIGZvdW5kIHRoYXQgbWF0Y2ggdGhlIGNyaXRlcmlhJzsKJGxhbmdbJ2dyb3VwJ10gPSAnR3JvdXAnOwokbGFuZ1snc2VsZWN0Z3JvdXAnXSA9ICdTZWxlY3QgR3JvdXAnOwokbGFuZ1sncmVnaXN0cmF0aW9uX3RlbXBsYXRlJ10gPSAnUmVnaXN0cmF0aW9uIFRlbXBsYXRlJzsKJGxhbmdbJ2xvZ291dF90ZW1wbGF0ZSddID0gJ0xvZ291dCBUZW1wbGF0ZSc7CiRsYW5nWydsb2dpbl90ZW1wbGF0ZSddID0gJ0xvZ2luIFRlbXBsYXRlJzsKJGxhbmdbJ3ByZWZlcmVuY2VzJ10gPSAnUHJlZmVyZW5jZXMnOwokbGFuZ1snZ3JvdXBzJ10gPSAnR3JvdXBzJzsKJGxhbmdbJ3VzZXJzJ10gPSAiVXNlcnMiOwokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnTWVtYmVycyBBcmVhIChNQU1TKSc7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ01lbWJlcnMgQXJlYSBNYWRlIFNpbXBsZTogYWxsb3cgdXNlcnMgdG8gbG9nIGluIHRvIHRoZSBmcm9udGVuZCBvZiB5b3VyIHNpdGUnOwokbGFuZ1snZGVmYXVsdGZyb250cGFnZSddID0gIkRlZmF1bHQgZnJvbnQgcGFnZSI7CiRsYW5nWydsYXN0YWNjZXNzZWRwYWdlJ10gPSAnTGFzdCBhY2Nlc3NlZCBwYWdlJzsKJGxhbmdbJ290aGVycGFnZSddID0gJ090aGVyIHBhZ2U6ICc7CiRsYW5nWydjYXB0Y2hhX3RpdGxlJ10gPSAnUGxlYXNlIHZlcmlmeSB5b3UgYXJlIG5vdCBhIGJvdC4nOwoKIyBMSVNFIGN1c3RvbSBmaWVsZHMKJGxhbmdbJ2ZpZWxkZGVmX01BTVNTaW5nbGVTZWxlY3QnXSA9ICdNQU1TIFVzZXJzIFNpbmdsZSBTZWxlY3QnOwokbGFuZ1snZmllbGRkZWZfTUFNU011bHRpU2VsZWN0J10gPSAnTUFNUyBVc2VycyBNdWx0aSBTZWxlY3QnOwokbGFuZ1snZmllbGRkZWZfTUFNU0dyb3Vwc1NpbmdsZVNlbGVjdCddID0gJ01BTVMgR3JvdXBzIFNpbmdsZSBTZWxlY3QnOwokbGFuZ1snZmllbGRkZWZfTUFNU0dyb3Vwc011bHRpU2VsZWN0J10gPSAnTUFNUyBHcm91cHMgTXVsdGkgU2VsZWN0JzsKJGxhbmdbJ2ZpZWxkZGVmX21hbXNfb3B0aW9ucyddID0gJ01BTVMgR3JvdXBzJzsKJGxhbmdbJ2ZpZWxkZGVmX21hbXNfbXVsdGlzZWxlY3RfaGVscCddID0gJ1BsZWFzZSBzZWxlY3Qgb25lIG9yIG1vcmUgb2YgdGhlIGF2YWlsYWJsZSBNQU1TIEdyb3Vwcyc7CiRsYW5nWydmaWVsZGRlZl9tYW1zX2ZpZWxkc19oZWxwJ10gPSAnUGxlYXNlIHNlbGVjdCB0aGUgY3VzdG9tIGZpZWxkIGZyb20gTUFNUyBmcm9tIHdoaWNoIHRvIGRyYXcgdGhlIHZhbHVlcyB0aGF0IHdpbGwgYmUgc2hvd24gb24gdGhlIHNlbGVjdCBmaWVsZC48YnI+Tm90ZSB0aGF0IHRoZSBzZWxlY3RlZCBmaWVsZCBzaG91bGQgaGF2ZSB1bmlxdWUgdmFsdWVzIGFjcm9zcyBhbGwgRkVVIHVzZXJzIGVudHJpZXMuJzsKJGxhbmdbJ2ZpZWxkZGVmX21hbXNfZmllbGRzJ10gPSAnU2VsZWN0IDFzdCBNQU1TIEZpZWxkJzsKJGxhbmdbJ2ZpZWxkZGVmX21hbXNfZmllbGRzMiddID0gJ1NlbGVjdCAybmQgTUFNUyBGaWVsZCc7CiRsYW5nWydmaWVsZGRlZl91c2VycyddID0gJ1VzZXJzJzsKJGxhbmdbJ2ZpZWxkZGVmX3VzZV91c2VybmFtZSddID0gJ1VzZSBVc2VybmFtZSBGaWVsZCc7CiRsYW5nWydmaWVsZGRlZl91c2VfdWlkJ10gPSAnUHJlcGVuZCBVc2VyIElEJzsKJGxhbmdbJ2ZpZWxkZGVmX3VzZV91aWRfaGVscCddID0gJ1ByZXBlbmQgdXNlciBpZCB0byB0aGUgb3B0aW9ucyBpbiBbbl0gZm9ybWF0Lic7CiRsYW5nWydmaWVsZGRlZl91c2VfdXNlcm5hbWVfaGVscCddID0gJ0lmIHlvdSBjaGVjayB0aGlzIG9wdGlvbiwgdGhlIGN1c3RvbSBmaWVsZHMgYmVsb3cgd2lsbCBub3QgYmUgdXNlZC4nOwokbGFuZ1snZmllbGRkZWZfc2VwYXJhdG9yX2NociddID0gJ1NlcGFyYXRvciBDaGFyYWN0ZXInOwokbGFuZ1snZmllbGRkZWZfc2VwYXJhdG9yX2Nocl9oZWxwJ10gPSAnQ2hhcmFjdGVyIHVzZWQgdG8gc2VwYXJhdGUgZmllbGQgMSBhbmQgZmllbGQgMiBvbiB0aGUgb3B0aW9ucyB0ZXh0LiBEZWZhdWx0IGlzIGEgc3BhY2UgY2hhcmFjdGVyLic7Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lang/ext</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/pt_PT.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZpbmQnXSA9ICdFZGl0YXIgVXRpbGl6YWRvcic7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lib</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.ajax_handler.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCm5hbWVzcGFjZSBNQU1TOw0KDQoNCmZpbmFsIGNsYXNzIGFqYXhfaGFuZGxlcg0Kew0KICANCiAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gYXBpKCkNCiAgew0KICAgIHN0YXRpYyAgJGFwaTsNCiAgICANCiAgICBpZighaXNzZXQoJGFwaSkpDQogICAgew0KICAgICAgJGFwaSA9IGFwaTo6Z2V0SW5zdGFuY2UoKTsNCiAgICB9DQogICAgDQogICAgcmV0dXJuICRhcGk7DQogIH0NCg0KICAvKioNCiAgICogYmFja2VuZCBmdW5jdGlvbnMNCiAgICovDQogIA0KICAvKioNCiAgICogZnJvbnRlbmQgZnVuY3Rpb25zDQogICAqLw0KICANCiAgLyoqDQogICAqIEByZXR1cm4gYm9vbA0KICAgKi8NCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmZV9pc19sb2dnZWRfaW4oKQ0KICB7DQogICAgcmV0dXJuIChib29sKXNlbGY6OmFwaSgpLT5Mb2dnZWRJbigpOw0KICB9DQogIA0KICANCn0NCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/class.api.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qKg0KICogTUFNUyBBUEkNCiAqDQogKiBBIGNsYXNzIHRvIGV4cG9zZSB0aGUgTUFNUyBBUEkgbWV0aG9kcyBhdmFpbGFibGUNCiAqIHRvIGFsbCBvdGhlciBtb2R1bGVzLg0KICoNCiAqIEBzaW5jZSAxLjENCiAqIEBhdXRob3IgRmVybmFuZG8gTW9yZ2FkbyAgYWthIEpvIE1vcmcNCiAqDQogKiBAcGFja2FnZSBNQU1TDQogKi8NCg0KbmFtZXNwYWNlIE1BTVM7DQoNCmNsYXNzIGFwaQ0Kew0KICAvKioNCiAgICogdGhlIGVycm9yIG1vZGVzIHdpbGwgYmUgdXNlZCBvbmx5IG9uIG1ldGhvZHMgdGhhdCBjYW4gdGhyb3cgZXhjZXB0aW9ucw0KICAgKiBUaGF0IHdvbid0IGJlIHRoZSBjYXNlIGZvciBhbGwgbWV0aG9kcw0KICAgKi8NCiAgLyoqDQogICAqIEBjb25zdCBpbnQgTk9ORSB0aGUgYXBpIHdvbid0IHRocm93IGV4Y2VwdGlvbnMNCiAgICovDQogIHB1YmxpYyBjb25zdCBFUlJPUl9NT0RFX05PTkUgPSAwOw0KICAvKioNCiAgICogQGNvbnN0IGludCBFWENFUFRJT04gdGhlIGFwaSB3aWxsIHRocm93IGV4Y2VwdGlvbnMNCiAgICovDQogIHB1YmxpYyBjb25zdCBFUlJPUl9NT0RFX0VYQ0VQVElPTiA9IDE7DQogIHN0YXRpYyBwcml2YXRlICRfZXJyb3JfbW9kZSA9IHNlbGY6OkVSUk9SX01PREVfRVhDRVBUSU9OOw0KICANCiAgcHJpdmF0ZSBzdGF0aWMgYXJyYXkgJF9lcnJvcl9tb2RlcyA9IFsNCiAgICBzZWxmOjpFUlJPUl9NT0RFX05PTkUsDQogICAgc2VsZjo6RVJST1JfTU9ERV9FWENFUFRJT04NCiAgXTsNCiAgDQogIHVzZSBcQ01TTVNFeHRcY29yZVxUU2luZ2xldG9uOw0KICANCiAgLyoqDQogICAqIFRoZSBlcnJvciBtb2RlcyB3aWxsIGJlIHVzZWQgb25seSBvbiBtZXRob2RzDQogICAqIHRoYXQgY2FuIHRocm93IGV4Y2VwdGlvbnMuDQogICAqIFRoYXQgd29uJ3QgYmUgdGhlIGNhc2UgZm9yIGFsbCBtZXRob2RzDQogICAqDQogICAqIEBwYXJhbSAkbW9kZQ0KICAgKg0KICAgKiBAcmV0dXJuIFxNQU1TXGFwaQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIFNldEVycm9yTW9kZSgkbW9kZSkNCiAgew0KICAgIGlmKCAhXGluX2FycmF5KCRtb2RlLCBzZWxmOjokX2Vycm9yX21vZGVzKSApDQogICAgew0KICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQgZXJyb3IgbW9kZScpOw0KICAgIH0NCiAgICANCiAgICBzZWxmOjokX2Vycm9yX21vZGUgPSAkbW9kZTsNCiAgICANCiAgICByZXR1cm4gJHRoaXM7DQogIH0NCiAgDQogIC8qKg0KICAgKiBAcmV0dXJuIGludA0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEdldEVycm9yTW9kZSgpDQogIHsNCiAgICByZXR1cm4gc2VsZjo6JF9lcnJvcl9tb2RlOw0KICB9DQogIA0KICAvKioNCiAgICogQHJldHVybiBcQ21zTW9kdWxlIE1BTVMNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBHZXRNYW1zKCkNCiAgew0KICAgIHJldHVybiB1dGlsczo6Z2V0X21vZCgpOw0KICB9DQogIA0KICAvKioNCiAgICogUmV0cmlldmVzIHRoZSBVc2VyIE1hbmlwdWxhdG9yIGZyb20gTUFNUy4NCiAgICoNCiAgICogR2l2ZW4gdGhlIHdheSBNQU1TIHdvcmtzLCB0aGUgTWFuaXB1bGF0b3IgY2FuIGJlIGV4dGVuZGVkDQogICAqIGJ5IGV4dGVybmFsIG1vZHVsZXMuDQogICAqIFRoaXMgcmV0dXJucyB0aGUgTUFNUyBNYW5pcHVsYXRvciBjdXJyZW50bHkgaW4gdXNlLg0KICAgKg0KICAgKiBAcmV0dXJuIFxNQU1TTWFuaXB1bGF0b3INCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBHZXRNYW5pcHVsYXRvcigpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkdldE1hbXMoKS0+R2V0TWFuaXB1bGF0b3IoKTsNCiAgfQ0KICANCiAgDQogIC8qKg0KICAgKiBmcm9tIHRoZSBhYnN0cmFjdCBjbGFzcw0KICAgKi8NCiAgDQogIA0KICAvKioNCiAgICogZW5kIG9mIGZyb20gdGhlIGFic3RyYWN0IGNsYXNzDQogICAqLw0KICANCiAgLyoqDQogICAqIGZyb20gdXNlcnMgbWFuaXB1bGF0b3INCiAgICovDQogIA0KICANCiAgLyoqDQogICAqIEBwYXJhbSAkdWlkDQogICAqDQogICAqIEByZXR1cm4gZmFsc2V8c3RyaW5nDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0RW5jcnlwdGlvbktleSgkdWlkID0gLTEpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkdldEVuY3J5cHRpb25LZXkoJHVpZCk7DQogIH0NCiAgDQogIC8qKg0KICAgKiBAcGFyYW0gJHVpZA0KICAgKiBAcGFyYW0gJGRhdGENCiAgICoNCiAgICogQHJldHVybiBzdHJpbmcNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBEZWNyeXB0VXNlckRhdGEoJHVpZCwgJGRhdGEpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkRlY3J5cHRVc2VyRGF0YSgkdWlkLCAkZGF0YSk7DQogIH0NCiAgDQogIA0KICAvKioNCiAgICogQHJldHVybiBtaXhlZA0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIENvdW50VGVtcENvZGVSZWNvcmRzKCkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+Q291bnRUZW1wQ29kZVJlY29yZHMoKTsNCiAgfQ0KICANCiAgLyoqDQogICAqIEBwYXJhbSAgICAgICRleHBpcnljb2RlDQogICAqIEBwYXJhbSBudWxsICRyZXR1cm4gcGFzcyBhIHZhcmlhYmxlIHRvIGdldCB0aGUgcmV0dXJuIGZyb20gdGhlIG1hbmlwdWxhdG9yDQogICAqICAgICAgICAgICAgICAgICAgICAgbm90ZTogb25seSB3b3JrcyBpZiBub3QgdGhyb3dpbmcgZXhjZXB0aW9ucw0KICAgKg0KICAgKiBAcmV0dXJuIFxNQU1TXGFwaQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEV4cGlyZVRlbXBDb2RlcygkZXhwaXJ5Y29kZSwgJiRyZXR1cm4gPSBudWxsKQ0KICB7DQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5FeHBpcmVUZW1wQ29kZXMoJGV4cGlyeWNvZGUpOw0KICAgIA0KICAgIGlmKCEkcmVzdWx0ICYmIHNlbGY6OkVSUk9SX01PREVfRVhDRVBUSU9OID09PSBzZWxmOjokX2Vycm9yX21vZGUpDQogICAgew0KICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDb3VsZCBub3QgZXhwaXJlIHRlbXAgY29kZXMnKTsNCiAgICB9DQogICAgDQogICAgJHJldHVybiA9ICRyZXN1bHQ7DQogICAgDQogICAgcmV0dXJuICR0aGlzOw0KICB9DQogIA0KICAvKio3DQogICAqIEBwYXJhbSAgICAgICR1aWQNCiAgICogQHBhcmFtIG51bGwgJHJldHVybiBwYXNzIGEgdmFyaWFibGUgdG8gZ2V0IHRoZSByZXR1cm4gZnJvbSB0aGUgbWFuaXB1bGF0b3INCiAgICogICAgICAgICAgICAgICAgICAgICBub3RlOiBvbmx5IHdvcmtzIGlmIG5vdCB0aHJvd2luZyBleGNlcHRpb25zDQogICAqDQogICAqIEByZXR1cm4gXE1BTVNcYXBpDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gUmVtb3ZlVXNlclRlbXBDb2RlKCR1aWQsICYkcmV0dXJuID0gbnVsbCkNCiAgew0KICAgICRyZXN1bHQgPSAgJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPlJlbW92ZVVzZXJUZW1wQ29kZSgkdWlkKTsNCiAgICANCiAgICBpZighJHJlc3VsdCAmJiBzZWxmOjpFUlJPUl9NT0RFX0VYQ0VQVElPTiA9PT0gc2VsZjo6JF9lcnJvcl9tb2RlKQ0KICAgIHsNCiAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignQ291bGQgbm90IHJlbW92ZSB0ZW1wIGNvZGVzJyk7DQogICAgfQ0KICAgIA0KICAgICRyZXR1cm4gPSAkcmVzdWx0Ow0KICAgIA0KICAgIHJldHVybiAkdGhpczsNCiAgfQ0KICANCiAgLyoqDQogICAqIEBwYXJhbSAkdWlkDQogICAqDQogICAqIEByZXR1cm4gaW50DQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlclRlbXBDb2RlKCR1aWQpDQogIHsNCiAgICByZXR1cm4gKGludCkkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+R2V0VXNlclRlbXBDb2RlKCR1aWQpOw0KICB9DQogIA0KICANCiAgLyoqDQogICAqIEBwYXJhbSAkdWlkDQogICAqIEBwYXJhbSAkY29kZQ0KICAgKg0KICAgKiBAcmV0dXJuIFxNQU1TXGFwaQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIFNldFVzZXJUZW1wQ29kZSgkdWlkLCAkY29kZSwgJiRyZXR1cm4gPSBudWxsKQ0KICB7DQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5TZXRVc2VyVGVtcENvZGUoJHVpZCwgJGNvZGUpOw0KICAgIA0KICAgIGlmKCEkcmVzdWx0ICYmIHNlbGY6OkVSUk9SX01PREVfRVhDRVBUSU9OID09PSBzZWxmOjokX2Vycm9yX21vZGUpDQogICAgew0KICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDb3VsZCBub3Qgc2V0IHRlbXAgY29kZScpOw0KICAgIH0NCiAgICANCiAgICAkcmV0dXJuID0gJHJlc3VsdDsNCiAgICANCiAgICByZXR1cm4gJHRoaXM7DQogIH0NCiAgDQogIC8qKg0KICAgKiBAcGFyYW0gJG5hbWUNCiAgICogQHBhcmFtICRuZXduYW1lDQogICAqIEBwYXJhbSAkcHJvbXB0DQogICAqIEBwYXJhbSAkbGVuZ3RoDQogICAqIEBwYXJhbSAkdHlwZQ0KICAgKiBAcGFyYW0gJG1heGxlbmd0aA0KICAgKiBAcGFyYW0gJGF0dHJpYnMNCiAgICogQHBhcmFtICRmb3JjZV91bmlxdWUNCiAgICogQHBhcmFtICRlbmNyeXB0DQogICAqDQogICAqIEByZXR1cm4gXE1BTVNcYXBpDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gU2V0UHJvcGVydHlEZWZuKA0KICAgICRuYW1lLA0KICAgICRuZXduYW1lLA0KICAgICRwcm9tcHQsDQogICAgJGxlbmd0aCwNCiAgICAkdHlwZSwNCiAgICAkbWF4bGVuZ3RoID0gMCwNCiAgICAkYXR0cmlicyA9ICcnLA0KICAgICRmb3JjZV91bmlxdWUgPSAwLA0KICAgICRlbmNyeXB0ID0gMA0KICApDQogIHsNCiAgICAkcmVzdWx0ID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPlNldFByb3BlcnR5RGVmbigkbmFtZSwgJG5ld25hbWUsICRwcm9tcHQsICRsZW5ndGgsICR0eXBlLCAkbWF4bGVuZ3RoLCAkYXR0cmlicywgJGZvcmNlX3VuaXF1ZSwgJGVuY3J5cHQsICRyZXR1cm4gPSBudWxsKTsNCiAgICANCiAgICBpZighJHJlc3VsdCAmJiBzZWxmOjpFUlJPUl9NT0RFX0VYQ0VQVElPTiA9PT0gc2VsZjo6JF9lcnJvcl9tb2RlKQ0KICAgIHsNCiAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignQ291bGQgbm90IHNldCBwcm9wZXJ0eSBkZWZpbml0aW9uJyk7DQogICAgfQ0KICAgIA0KICAgICRyZXR1cm4gPSAkcmVzdWx0Ow0KICAgIA0KICAgIHJldHVybiAkdGhpczsNCiAgfQ0KICANCiAgLyoqDQogICAqIEBwYXJhbSAkbmFtZQ0KICAgKg0KICAgKiBAcmV0dXJuIFxNQU1TXGFwaQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIERlbGV0ZVByb3BlcnR5RGVmbigkbmFtZSwgJiRyZXR1cm4gPSBudWxsKQ0KICB7DQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5EZWxldGVQcm9wZXJ0eURlZm4oJG5hbWUpOw0KICAgIA0KICAgIGlmKCEkcmVzdWx0ICYmIHNlbGY6OkVSUk9SX01PREVfRVhDRVBUSU9OID09PSBzZWxmOjokX2Vycm9yX21vZGUpDQogICAgew0KICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDb3VsZCBub3QgZGVsZXRlIHByb3BlcnR5ICcgLiAkbmFtZSk7DQogICAgfQ0KICAgIA0KICAgICRyZXR1cm4gPSAkcmVzdWx0Ow0KICAgIA0KICAgIHJldHVybiAkdGhpczsNCiAgfQ0KICANCiAgLyoqDQogICAqIEBwYXJhbSAkdGl0bGUNCiAgICoNCiAgICogQHJldHVybiBhcnJheQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEdldFByb3BlcnR5R3JvdXBSZWxhdGlvbnMoJHRpdGxlKQ0KICB7DQogICAgJHJlc3VsdCA9ICAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+R2V0UHJvcGVydHlHcm91cFJlbGF0aW9ucygkdGl0bGUpOw0KICAgIA0KICAgIGlmKCEkcmVzdWx0WzBdICYmIHNlbGY6OkVSUk9SX01PREVfRVhDRVBUSU9OID09PSBzZWxmOjokX2Vycm9yX21vZGUpDQogICAgew0KICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRyZXN1bHRbMV0pOw0KICAgIH0NCiAgICANCiAgICBpZihzZWxmOjpFUlJPUl9NT0RFX05PTkUgPT09IHNlbGY6OiRfZXJyb3JfbW9kZSkNCiAgICB7DQogICAgICByZXR1cm4gJHJlc3VsdDsNCiAgICB9DQogICAgDQogICAgcmV0dXJuICRyZXN1bHRbMV07DQogIH0NCiAgDQogIA0KICAvKioNCiAgICogUmV0dXJuIHRoZSB1bml4IHRpbWVzdGFtcCBvZiB0aGUgdXNlcidzIGV4cGlyeSBkYXRlDQogICAqIG9yIGZhbHNlOw0KICAgKg0KICAgKiBAcGFyYW0gJHVpZA0KICAgKg0KICAgKiBAcmV0dXJuIGZhbHNlfGludA0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEdldEV4cGlyeURhdGUoJHVpZCkNCiAgew0KICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+R2V0RXhwaXJ5RGF0ZSgkdWlkKTsNCiAgICANCiAgICBpZighJHJlc3VsdCAmJiBzZWxmOjpFUlJPUl9NT0RFX0VYQ0VQVElPTiA9PT0gc2VsZjo6JF9lcnJvcl9tb2RlKQ0KICAgIHsNCiAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignQ291bGQgbm90IGdldCBleHBpcnkgZGF0ZScpOw0KICAgIH0NCiAgICANCiAgICByZXR1cm4gJHJlc3VsdDsNCiAgfQ0KICANCiAgLyoqDQogICAqIEBwYXJhbSAkdWlkDQogICAqDQogICAqIEByZXR1cm4gYm9vbA0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIENhblVzZXJMb2dpbigkdWlkKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5DYW5Vc2VyTG9naW4oJHVpZCk7DQogIH0NCiAgDQogIC8qKg0KICAgKiBAcGFyYW0gJHVpZA0KICAgKg0KICAgKiBAcmV0dXJuIGJvb2wNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBJc0FjY291bnRFeHBpcmVkKCR1aWQpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPklzQWNjb3VudEV4cGlyZWQoJHVpZCk7DQogIH0NCiAgDQogIC8qKg0KICAgKiBAcGFyYW0gJHVpZA0KICAgKg0KICAgKiBAcmV0dXJuIGFycmF5DQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlclByb3BlcnR5UmVsYXRpb25zKCR1aWQpDQogIHsNCiAgICByZXR1cm4gKGFycmF5KSR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5HZXRVc2VyUHJvcGVydHlSZWxhdGlvbnMoJHVpZCk7DQogIH0NCiAgDQogIA0KICAvKioNCiAgICogQHBhcmFtICRncnBpZA0KICAgKg0KICAgKiBAcmV0dXJuIGFycmF5DQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0R3JvdXBQcm9wZXJ0eVJlbGF0aW9ucygkZ3JwaWQpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkdldEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoJGdycGlkKTsNCiAgfQ0KICANCiAgLyoqDQogICAqIEBwYXJhbSAgICAgICRncnBpZA0KICAgKiBAcGFyYW0gICAgICAkcHJvcG5hbWUNCiAgICogQHBhcmFtICAgICAgJHNvcnRrZXkNCiAgICogQHBhcmFtICAgICAgJGxvc3R1bg0KICAgKiBAcGFyYW0gICAgICAkdmFsDQogICAqIEBwYXJhbSBudWxsICRyZXR1cm4NCiAgICoNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBBZGRHcm91cFByb3BlcnR5UmVsYXRpb24oJGdycGlkLCAkcHJvcG5hbWUsICRzb3J0a2V5LCAkbG9zdHVuLCAkdmFsLCAmJHJldHVybiA9IG51bGwpDQogIHsNCiAgICAkcmVzdWx0ID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkFkZEdyb3VwUHJvcGVydHlSZWxhdGlvbigkZ3JwaWQsICRwcm9wbmFtZSwgJHNvcnRrZXksICRsb3N0dW4sICR2YWwpOw0KICAgIA0KICAgIGlmKCEkcmVzdWx0WzBdICYmIHNlbGY6OkVSUk9SX01PREVfRVhDRVBUSU9OID09PSBzZWxmOjokX2Vycm9yX21vZGUpDQogICAgew0KICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRyZXN1bHRbMV0pOw0KICAgIH0NCiAgICANCiAgICAkcmV0dXJuID0gJHJlc3VsdDsNCiAgICANCiAgICByZXR1cm4gJHRoaXM7DQogIH0NCiAgDQogIC8qKg0KICAgKiBAcGFyYW0gJGdycGlkDQogICAqDQogICAqIEByZXR1cm4gXE1BTVNcYXBpDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gRGVsZXRlQWxsR3JvdXBQcm9wZXJ0eVJlbGF0aW9ucygkZ3JwaWQsICYkcmV0dXJuID0gbnVsbCkNCiAgew0KICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+RGVsZXRlQWxsR3JvdXBQcm9wZXJ0eVJlbGF0aW9ucygkZ3JwaWQpOw0KICAgIA0KICAgIGlmKCEkcmVzdWx0WzBdICYmIHNlbGY6OkVSUk9SX01PREVfRVhDRVBUSU9OID09PSBzZWxmOjokX2Vycm9yX21vZGUpDQogICAgeyB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHJlc3VsdFsxXSk7IH0NCiAgICANCiAgICAkcmV0dXJuID0gJHJlc3VsdDsNCiAgICANCiAgICByZXR1cm4gJHRoaXM7DQogIH0NCiAgDQogIC8qKg0KICAgKiBAcGFyYW0gJGdycGlkDQogICAqIEBwYXJhbSAkcHJvcG5hbWUNCiAgICoNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVHcm91cFByb3BlcnR5UmVsYXRpb24oJGdycGlkLCAkcHJvcG5hbWUsICYkcmV0dXJuID0gbnVsbCkNCiAgew0KICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+RGVsZXRlR3JvdXBQcm9wZXJ0eVJlbGF0aW9uKCRncnBpZCwgJHByb3BuYW1lKTsNCiAgICANCiAgICBpZighJHJlc3VsdFswXSAmJiBzZWxmOjpFUlJPUl9NT0RFX0VYQ0VQVElPTiA9PT0gc2VsZjo6JF9lcnJvcl9tb2RlKQ0KICAgIHsgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRyZXN1bHRbMV0pOyB9DQogICAgDQogICAgJHJldHVybiA9ICRyZXN1bHQ7DQogICAgDQogICAgcmV0dXJuICR0aGlzOw0KICB9DQogIA0KICANCiAgLyoqDQogICAqIEFkZCBhIHNpbmdsZSBwcm9wZXJ0eSBkZWZpbml0aW9uDQogICAqDQogICAqIEBwYXJhbSAkbmFtZQ0KICAgKiAgICAgICAgICAgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eQ0KICAgKiBAcGFyYW0gJHByb21wdA0KICAgKiAgICAgICAgICAgICAgICAgIFRoZSBwcm9tcHQgdG8gZGlzcGxheSB0byB0aGUgdXNlcg0KICAgKiAgICAgICAgICAgICAgICAgIG5vdGUsIHRoaXMgd2lsbCBiZSBMYW5naWZpZWQNCiAgICogQHBhcmFtICR0eXBlDQogICAqICAgICAgICAgICAgICAgICAgVGhlIHR5cGUgb2YgdGhlIHByb3BlcnR5DQogICAqICAgICAgICAgICAgICAgICAgMCA9IHRleHQsIDEgPSBjaGVja2JveCwgMiA9IGVtYWlsDQogICAqIEBwYXJhbSAkbGVuZ3RoDQogICAqIEBwYXJhbSAkbWF4bGVuZ3RoDQogICAqIEBwYXJhbSAkYXR0cmlicw0KICAgKiBAcGFyYW0gJGZvcmNlX3VuaXF1ZQ0KICAgKiBAcGFyYW0gJGVuY3J5cHQNCiAgICoNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBBZGRQcm9wZXJ0eURlZm4oDQogICAgJG5hbWUsICRwcm9tcHQsICR0eXBlLCAkbGVuZ3RoLCAkbWF4bGVuZ3RoID0gMCwgJGF0dHJpYnMgPSAnJywgJGZvcmNlX3VuaXF1ZSA9IDAsICRlbmNyeXB0ID0gMCwgJiRyZXN1bHQgPSBudWxsDQogICkNCiAgew0KICAgICRyZXN1bHQ9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5BZGRQcm9wZXJ0eURlZm4oJG5hbWUsICRwcm9tcHQsICR0eXBlLCAkbGVuZ3RoLCAkbWF4bGVuZ3RoLCAkYXR0cmlicywgJGZvcmNlX3VuaXF1ZSwgJGVuY3J5cHQpOw0KICAgIA0KICAgIGlmKCEkcmVzdWx0WzBdICYmIHNlbGY6OkVSUk9SX01PREVfRVhDRVBUSU9OID09PSBzZWxmOjokX2Vycm9yX21vZGUpIHsgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRyZXN1bHRbMV0pOyB9DQogICAgDQogICAgJHJldHVybiA9ICRyZXN1bHQ7DQogICAgDQogICAgcmV0dXJuICR0aGlzOw0KICB9DQogIA0KICAvKioNCiAgICogQHBhcmFtICRuYW1lDQogICAqIEBwYXJhbSAkZXh0cmENCiAgICoNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBTZXRQcm9wZXJ0eURlZm5FeHRyYSgkbmFtZSwgJGV4dHJhKQ0KICB7DQogICAgJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPlNldFByb3BlcnR5RGVmbkV4dHJhKCRuYW1lLCAkZXh0cmEpOw0KICAgIA0KICAgIHJldHVybiAkdGhpczsNCiAgfQ0KICANCiAgLyoqDQogICAqIEFkZCBhIHNpbmdsZSBwcm9wZXJ0eSBkZWZpbml0aW9uDQogICAqDQogICAqIEBwYXJhbSAkbmFtZQ0KICAgKiBAcGFyYW0gJG9wdGlvbnMNCiAgICoNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBBZGRTZWxlY3RPcHRpb25zKCRuYW1lLCAkb3B0aW9ucywgJiRyZXN1bHQgPSBudWxsKQ0KICB7DQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5BZGRTZWxlY3RPcHRpb25zKCRuYW1lLCAkb3B0aW9ucyk7DQogICAgDQogICAgaWYoISRyZXN1bHRbMF0gJiYgc2VsZjo6RVJST1JfTU9ERV9FWENFUFRJT04gPT09IHNlbGY6OiRfZXJyb3JfbW9kZSkNCiAgICB7IHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignQ291bGQgbm90IGV4cGlyZSB0ZW1wIGNvZGVzJyk7fQ0KICAgIA0KICAgICRyZXR1cm4gPSAkcmVzdWx0Ow0KICAgIA0KICAgIHJldHVybiAkdGhpczsNCiAgfQ0KICANCiAgLyoqDQogICAqIEByZXR1cm4gXE1BTVNcYXBpDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gRGVsZXRlUHJvcGVydHlEZWZucygmJHJlc3VsdCA9IG51bGwpDQogIHsNCiAgICAkcmVzdWx0ID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkRlbGV0ZVByb3BlcnR5RGVmbnMoKTsNCiAgICANCiAgICBpZighJHJlc3VsdFswXSAmJiBzZWxmOjpFUlJPUl9NT0RFX0VYQ0VQVElPTiA9PT0gc2VsZjo6JF9lcnJvcl9tb2RlKQ0KICAgIHsgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRyZXN1bHRbMV0pOyB9DQogICAgDQogICAgJHJldHVybiA9ICRyZXN1bHQ7DQogICAgDQogICAgcmV0dXJuICR0aGlzOw0KICB9DQogIA0KICAvKioNCiAgICogQHBhcmFtICRuYW1lDQogICAqDQogICAqIEByZXR1cm4gXE1BTVNcYXBpDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gRGVsZXRlU2VsZWN0T3B0aW9ucygkbmFtZSwgJiRyZXN1bHQgPSBudWxsKQ0KICB7DQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5EZWxldGVTZWxlY3RPcHRpb25zKCRuYW1lKTsNCiAgICANCiAgICBpZighJHJlc3VsdFswXSAmJiBzZWxmOjpFUlJPUl9NT0RFX0VYQ0VQVElPTiA9PT0gc2VsZjo6JF9lcnJvcl9tb2RlKQ0KICAgIHsgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRyZXN1bHRbMV0pOyB9DQogICAgDQogICAgJHJldHVybiA9ICRyZXN1bHQ7DQogICAgDQogICAgcmV0dXJuICR0aGlzOw0KICB9DQogIA0KICAvKioNCiAgICogQHBhcmFtICRwcmVmaXgNCiAgICoNCiAgICogQHJldHVybiBzdHJpbmcNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBHZW5lcmF0ZVJhbmRvbVVzZXJuYW1lKCRwcmVmaXggPSAndXNlcicsICYkcmVzdWx0ID0gbnVsbCkNCiAgew0KICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+R2VuZXJhdGVSYW5kb21Vc2VybmFtZSgkcHJlZml4KTsNCiAgICANCiAgICBpZighJHJlc3VsdCAmJiBzZWxmOjpFUlJPUl9NT0RFX0VYQ0VQVElPTiA9PT0gc2VsZjo6JF9lcnJvcl9tb2RlKQ0KICAgIHsNCiAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignQ291bGQgbm90IGdlbmVyYXRlIHJhbmRvbSB1c2VybmFtZScpOw0KICAgIH0NCiAgICANCiAgICAkcmV0dXJuID0gJHJlc3VsdDsNCiAgICANCiAgICByZXR1cm4gJHJlc3VsdDsNCiAgfQ0KICANCiAgLyoqDQogICAqIEByZXR1cm4gXE1BTVNcYXBpDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gQ2xlYXJQcm9wZXJ0eUNhY2hlKCkNCiAgew0KICAgICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5DbGVhclByb3BlcnR5Q2FjaGUoKTsNCiAgICANCiAgICByZXR1cm4gJHRoaXM7DQogIH0NCiAgDQogIC8qKg0KICAgKiBAcGFyYW0gJG5hbWUNCiAgICoNCiAgICogQHJldHVybiBhcnJheQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEdldFByb3BlcnR5RGVmbigkbmFtZSwgJiRyZXN1bHQgPSBudWxsKQ0KICB7DQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5HZXRQcm9wZXJ0eURlZm4oJG5hbWUpOw0KICAgIA0KICAgIGlmKCEkcmVzdWx0ICYmIHNlbGY6OkVSUk9SX01PREVfRVhDRVBUSU9OID09PSBzZWxmOjokX2Vycm9yX21vZGUpDQogICAgew0KICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDb3VsZCBub3QgZ2V0IHByb3BlcnR5IGRlZmluaXRpb24nKTsNCiAgICB9DQogICAgDQogICAgJHJldHVybiA9ICRyZXN1bHQ7DQogICAgDQogICAgcmV0dXJuICRyZXN1bHQ7DQogIH0NCiAgDQogIHB1YmxpYyBmdW5jdGlvbiBHZXRQcm9wZXJ0eURlZm5zKCYkcmVzdWx0ID0gbnVsbCkNCiAgew0KICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+R2V0UHJvcGVydHlEZWZucygpOw0KICAgIA0KICAgIGlmKCEkcmVzdWx0ICYmIHNlbGY6OkVSUk9SX01PREVfRVhDRVBUSU9OID09PSBzZWxmOjokX2Vycm9yX21vZGUpDQogICAgew0KICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDb3VsZCBub3QgZ2V0IHByb3BlcnR5IGRlZmluaXRpb25zJyk7DQogICAgfQ0KICAgIA0KICAgICRyZXR1cm4gPSAkcmVzdWx0Ow0KICAgIA0KICAgIHJldHVybiAkcmVzdWx0Ow0KICB9DQogIA0KICAvKioNCiAgICogUmV0dXJucyBzZWxlY3Qgb3B0aW9ucyBhcyBvbmUgc2ltcGxlIG9yIDIgZGltZW5zaW9uYWwgYXJyYXkNCiAgICoNCiAgICogQHBhcmFtIFN0cmluZyAkY29udHJvbG5hbWUgLSBuYW1lIG9mIHRoZSBkcm9wZG93biBhcyBpbiB0aGUgcHJvcGRlZm4gdGFibGUNCiAgICogQHBhcmFtIGludCAgICAkZGltICAgICAgICAgLSBkaW1lbnNpb24gb2YgdGhlIGFycmF5DQogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICRkaW0gPT0gMSwgcmV0dXJucyBhIDEgZGltZW5zaW9uYWwgYXJyYXkgdGV4dD0+bmFtZQ0KICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAkZGltID09IDIsIHJldHVybnMgYSAyIGRpbWVuc2lvbmFsIGFycmF5LCBlYWNoIGl0ZW0gYmVpbmcgYW4NCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkgd2l0aCBwcm9wZXJ0aWVzICdvcHRpb25fbmFtZScsICdvcHRpb25fdGV4dCcsICdjb250cm9sX25hbWUnLg0KICAgKg0KICAgKiBAcmV0dXJuIGFycmF5fGJvb2wNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBHZXRTZWxlY3RPcHRpb25zKCRjb250cm9sbmFtZSwgJGRpbSA9IDEsICYkcmVzdWx0ID0gbnVsbCkNCiAgew0KICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+R2V0U2VsZWN0T3B0aW9ucygkY29udHJvbG5hbWUsICRkaW0pOw0KICAgIA0KICAgIGlmKCEkcmVzdWx0ICYmIHNlbGY6OkVSUk9SX01PREVfRVhDRVBUSU9OID09PSBzZWxmOjokX2Vycm9yX21vZGUpDQogICAgew0KICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDb3VsZCBub3QgZ2V0IHNlbGVjdCBvcHRpb25zJyk7DQogICAgfQ0KICAgIA0KICAgICRyZXR1cm4gPSAkcmVzdWx0Ow0KICAgIA0KICAgIHJldHVybiAkcmVzdWx0Ow0KICB9DQogIA0KICAvKioNCiAgICogTG9nIHRoZSB1c2VyIGludG8gdGhlIHNpdGUuDQogICAqIFRoaXMgY2hlY2tzIHRoZSB1c2VyIHBhc3N3b3JkLCBhbmQgcHJlZmVyZW5jZXMgYWJvdXQgZHVwbGljYXRlIGxvZ2lucyBhbmQgb3RoZXIgdGhpbmdzIHRoZW4gbWFya3MgdGhlIHVzZXINCiAgICogYXMgbG9nZ2VkIGluIHdpdGggdGhlIGFwcHJvcHJpYXRlIGRhdGFiYXNlIGNoYW5nZS4gIEl0IGRvZXMgbm90IHNlbmQgZXZlbnRzLg0KICAgKg0KICAgKiBAcGFyYW0gc3RyaW5nICR1c2VybmFtZQ0KICAgKiBAcGFyYW0gc3RyaW5nICRwYXNzd29yZCAgICAgVGhlIHBsYWludGV4dCBwYXNzd29yZA0KICAgKiBAcGFyYW0gc3RyaW5nICRncm91cHMgICAgICAgQSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBncm91cCBuYW1lcyB0aGF0IHRoZSB1c2VyIG11c3QgYmUgYSBtZW1iZXIgb2YuDQogICAqIEBwYXJhbSBzdHJpbmcgJGlnbm9yZWQNCiAgICogQHBhcmFtIGJvb2wgICAkZm9yY2VfbG9nb3V0IE9wdGlvbmFsbHkgZm9yY2UgdGhlIHVzZXIgdG8gbG9nb3V0IGJlZm9yZSBsb2dnaW5nIGhpbSBpbiBhZ2Fpbi4NCiAgICoNCiAgICogQHJldHVybiBpbnQNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBMb2dpbigkdXNlcm5hbWUsICRwYXNzd29yZCwgJGdyb3VwcyA9ICcnLCAkaWdub3JlZCA9IEZBTFNFLCAkZm9yY2VfbG9nb3V0ID0gRkFMU0UsICYkcmVzdWx0ID0gbnVsbCkNCiAgew0KICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+TG9naW4oJHVzZXJuYW1lLCAkcGFzc3dvcmQsICRncm91cHMsICRpZ25vcmVkLCAkZm9yY2VfbG9nb3V0KTsNCiAgICANCiAgICBpZighJHJlc3VsdFswXSAmJiBzZWxmOjpFUlJPUl9NT0RFX0VYQ0VQVElPTiA9PT0gc2VsZjo6JF9lcnJvcl9tb2RlKQ0KICAgIHsgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRyZXN1bHRbMV0pOyB9DQogICAgDQogICAgJHJldHVybiA9ICRyZXN1bHQ7DQogICAgDQogICAgcmV0dXJuICRyZXN1bHRbMF07DQogIH0NCiAgDQogIC8qKg0KICAgKiB1c2VyaWQgYXBpIG1ldGhvZA0KICAgKg0KICAgKiBAcGFyYW0gJHVpZA0KICAgKiBAcGFyYW0gJGdpZA0KICAgKg0KICAgKiBAcmV0dXJuIFxNQU1TXGFwaQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEFzc2lnblVzZXJUb0dyb3VwKCR1aWQsICRnaWQpDQogIHsNCiAgICAkcmVzdWx0ID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkFzc2lnblVzZXJUb0dyb3VwKCR1aWQsICRnaWQpOw0KICAgIA0KICAgIGlmKCEkcmVzdWx0KSAgeyB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0NvdWxkIG5vdCBhc3NpZ24gdXNlciB0byBncm91cCcpOyB9DQogICAgDQogICAgcmV0dXJuICR0aGlzOw0KICB9DQogIA0KICAvKioNCiAgICogdXNlcmlkIGFwaSBtZXRob2QNCiAgICoNCiAgICogQHBhcmFtICRwYXNzd29yZA0KICAgKg0KICAgKiBAcmV0dXJuIGJvb2wNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBJc1ZhbGlkUGFzc3dvcmQoJHBhc3N3b3JkKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5Jc1ZhbGlkUGFzc3dvcmQoJHBhc3N3b3JkKTsNCiAgfQ0KICANCiAgLyoqDQogICAqIHVzZXJpZCBhcGkgbWV0aG9kDQogICAqDQogICAqIEBwYXJhbSAkaWQNCiAgICoNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVVc2VyRnVsbCgkaWQpDQogIHsNCiAgICAkcmVzdWx0ID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkRlbGV0ZVVzZXJGdWxsKCRpZCk7DQogICAgDQogICAgaWYoISRyZXN1bHRbMF0pIHsgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRyZXN1bHRbMV0pOyB9DQogICAgDQogICAgcmV0dXJuICR0aGlzOw0KICB9DQogIA0KICAvKioNCiAgICogdXNlcmlkIGFwaSBtZXRob2QNCiAgICogQHBhcmFtICRnaWQNCiAgICogQHJldHVybiBhcnJheQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwSW5mbygkZ2lkKQ0KICB7DQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5HZXRHcm91cEluZm8oJGdpZCk7DQogICAgDQogICAgaWYoISRyZXN1bHQpIHsgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDb3VsZCBub3QgZ2V0IGdyb3VwIGluZm8nKTsgfQ0KICAgIA0KICAgIHJldHVybiAkcmVzdWx0Ow0KICB9DQogIA0KICAvKioNCiAgICogLy8gdXNlcmlkIGFwaSBtZXRob2QNCiAgICoNCiAgICogQHBhcmFtICAgICAgJHVpZA0KICAgKiBAcGFyYW0gYm9vbCAkZGVlcA0KICAgKg0KICAgKiBAcmV0dXJuIGFycmF5DQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlckluZm8oJHVpZCwgJGRlZXAgPSBGQUxTRSkNCiAgew0KICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+R2V0VXNlckluZm8oJHVpZCwgJGRlZXApOw0KICAgIA0KICAgIGlmKCEkcmVzdWx0WzBdKSB7IHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkcmVzdWx0WzFdKTsgfQ0KICAgIA0KICAgIHJldHVybiAkcmVzdWx0WzBdOw0KICB9DQogIA0KICAvKioNCiAgICogLy8gdXNlcmlkIGFwaSBtZXRob2QNCiAgICogQHBhcmFtICR1c2VybmFtZQ0KICAgKg0KICAgKiBAcmV0dXJuIGFycmF5DQogICAqLw0KICANCiAgcHVibGljIGZ1bmN0aW9uIEdldFVzZXJJbmZvQnlOYW1lKCR1c2VybmFtZSkNCiAgew0KICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+R2V0VXNlckluZm9CeU5hbWUoJHVzZXJuYW1lKTsNCiAgICANCiAgICBpZighJHJlc3VsdFswXSkgeyB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHJlc3VsdFsxXSk7IH0NCiAgICANCiAgICByZXR1cm4gJHJlc3VsdFswXTsNCiAgfQ0KICANCiAgLyoqDQogICAqIEBwYXJhbSAgICAgICAgJHVpZA0KICAgKiBAcGFyYW0gc3RyaW5nICRhY3Rpb24NCiAgICogQHBhcmFtIGludCAgICAkY291bnQNCiAgICoNCiAgICogQHJldHVybiBhcnJheQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEdldFVzZXJIaXN0b3J5KCR1aWQsICRhY3Rpb24gPSAnJywgJGNvdW50ID0gLTEpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkdldFVzZXJIaXN0b3J5KCR1aWQsICRhY3Rpb24sICRjb3VudCk7DQogIH0NCiAgDQogIC8qKg0KICAgKiBAcGFyYW0gc3RyaW5nICRub3RfYWN0aXZlX3NpbmNlDQogICAqDQogICAqIEByZXR1cm4gYXJyYXkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBHZXRMb2dnZWRJblVzZXJzKCRub3RfYWN0aXZlX3NpbmNlID0gJycpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkdldExvZ2dlZEluVXNlcnMoJG5vdF9hY3RpdmVfc2luY2UpOw0KICB9DQogIA0KICAvKioNCiAgICogdXNlcmlkIGFwaSBtZXRob2QNCiAgICogcmV0dXJucyBhbiBhcnJheSBvciBmYWxzZQ0KICAgKg0KICAgKiBAcGFyYW0gJGdyb3VwaWQNCiAgICoNCiAgICogQHJldHVybiBib29sfGFycmF5DQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gQ291bnRVc2Vyc0luR3JvdXAoJGdyb3VwaWQpDQogIHsNCiAgICAkcmVzdWx0ID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkNvdW50VXNlcnNJbkdyb3VwKCRncm91cGlkKTsNCiAgICANCiAgICBpZighJHJlc3VsdCkgeyB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0NvdWxkIG5vdCBjb3VudCB1c2VycyBpbiBncm91cCcpOyB9DQogICAgDQogICAgcmV0dXJuICRyZXN1bHQ7DQogIH0NCiAgDQogIC8qKg0KICAgKiBAcGFyYW0gJGdpZA0KICAgKg0KICAgKiBAcmV0dXJuIGFycmF5DQogICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb258XENtc0V4Y2VwdGlvbg0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEdldEZ1bGxVc2Vyc0luR3JvdXAoJGdpZCkNCiAgew0KICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+R2V0RnVsbFVzZXJzSW5Hcm91cCgkZ2lkKTsNCiAgICANCiAgICBpZighJHJlc3VsdCkgeyB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0NvdWxkIG5vdCBnZXQgdXNlcnMgaW4gZ3JvdXAnKTsgfQ0KICAgIA0KICAgIHJldHVybiAkcmVzdWx0Ow0KICB9DQogIA0KICANCiAgLyoqDQogICAqIHVzZXJpZCBhcGkgbWV0aG9kDQogICAqIEBwYXJhbSAkZ2lkDQogICAqDQogICAqIEByZXR1cm4gYm9vbA0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEdyb3VwRXhpc3RzQnlJRCgkZ2lkKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5Hcm91cEV4aXN0c0J5SUQoJGdpZCk7DQogIH0NCiAgDQogIC8qKg0KICAgKiB1c2VyaWQgYXBpIG1ldGhvZA0KICAgKg0KICAgKiBAcGFyYW0gJG5hbWUNCiAgICoNCiAgICogQHJldHVybiBib29sDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gR3JvdXBFeGlzdHNCeU5hbWUoJG5hbWUpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkdyb3VwRXhpc3RzQnlOYW1lKCRuYW1lKTsNCiAgfQ0KICANCiAgLyoqDQogICAqIEByZXR1cm4gc3RyaW5nDQogICAqLw0KICBmdW5jdGlvbiBMb2dnZWRJbkVtYWlsKCkNCiAgew0KICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+TG9nZ2VkSW5FbWFpbCgpOw0KICAgIA0KICAgIGlmKCEkcmVzdWx0KSB7IHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignQ291bGQgbm90IGdldCBsb2dnZWQgaW4gZW1haWwnKTsgfQ0KICAgIA0KICAgIHJldHVybiAkcmVzdWx0Ow0KICB9DQogIA0KICAvKioNCiAgICogQHBhcmFtICR1aWQNCiAgICoNCiAgICogQHJldHVybiBib29sfHN0cmluZw0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEdldEVtYWlsKCR1aWQpDQogIHsNCiAgICAkcmVzdWx0ID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkdldEVtYWlsKCR1aWQpOw0KICAgIA0KICAgIGlmKCEkcmVzdWx0KSB7IHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignQ291bGQgbm90IGdldCBlbWFpbCBmcm9tICcgLiAkdWlkKTsgfQ0KICAgIA0KICAgIHJldHVybiAkcmVzdWx0Ow0KICB9DQogIA0KICANCiAgLyoqDQogICAqIEByZXR1cm4gc3RyaW5nDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlcm5hbWVQcm9tcHQoKQ0KICB7DQogICAgJGNvbnN1bWVyID0gdXRpbHM6OmdldF9hdXRoX2NvbnN1bWVyKCk7DQogICAgDQogICAgaWYoIVxpc19vYmplY3QoJGNvbnN1bWVyKSApDQogICAgew0KICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDb3VsZCBub3QgZ2V0IGFuIGF1dGhlbnRpY2F0aW9uIGNvbnN1bWVyIG9iamVjdCcpOw0KICAgIH0NCiAgICANCiAgICByZXR1cm4gJGNvbnN1bWVyLT5nZXRfdXNlcm5hbWVfcHJvbXB0KCk7DQogIH0NCiAgDQogIA0KICAvKioNCiAgICogQHBhcmFtICAgICAgJHVzZXJuYW1lDQogICAqIEBwYXJhbSBib29sICRjaGVja19lbWFpbA0KICAgKiBAcGFyYW0gaW50ICAkdWlkDQogICAqDQogICAqIEByZXR1cm4gYm9vbA0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIElzVmFsaWRVc2VybmFtZSgkdXNlcm5hbWUsICRjaGVja19lbWFpbCA9IFRSVUUsICR1aWQgPSAtMSkNCiAgew0KICAgICRjb25zdW1lciA9IHV0aWxzOjpnZXRfYXV0aF9jb25zdW1lcigpOw0KICAgIA0KICAgIGlmKCFcaXNfb2JqZWN0KCRjb25zdW1lcikgKQ0KICAgIHsNCiAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignQ291bGQgbm90IGdldCBhbiBhdXRoZW50aWNhdGlvbiBjb25zdW1lciBvYmplY3QnKTsNCiAgICB9DQogICAgDQogICAgcmV0dXJuICRjb25zdW1lci0+dmFsaWRhdGVfdXNlcm5hbWUoJHVzZXJuYW1lLCAkY2hlY2tfZW1haWwsICR1aWQpOw0KICB9DQogIA0KICAvKioNCiAgICogdXNlcmlkIGFwaSBtZXRob2QNCiAgICoNCiAgICogQHBhcmFtICR1aWQNCiAgICogQHBhcmFtICRnaWQNCiAgICoNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBSZW1vdmVVc2VyRnJvbUdyb3VwKCR1aWQsICRnaWQpDQogIHsNCiAgICAkcmVzdWx0ID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPlJlbW92ZVVzZXJGcm9tR3JvdXAoJHVpZCwgJGdpZCk7DQogICAgDQogICAgaWYoISRyZXN1bHRbMF0pIHsgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uICgkcmVzdWx0WzFdKTsgfQ0KICAgIA0KICAgIHJldHVybiAkdGhpczsNCiAgfQ0KICANCiAgLyoqDQogICAqIHVzZXJpZCBhcGkgbWV0aG9kDQogICAqDQogICAqIEBwYXJhbSAgICAgICRpZA0KICAgKiBAcGFyYW0gICAgICAkbmFtZQ0KICAgKiBAcGFyYW0gbnVsbCAkZGVzYw0KICAgKg0KICAgKiBAcmV0dXJuIFxNQU1TXGFwaQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIFNldEdyb3VwKCRpZCwgJG5hbWUsICRkZXNjID0gTlVMTCkNCiAgew0KICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+U2V0R3JvdXAoJGlkLCAkbmFtZSwgJGRlc2MpOw0KICAgIA0KICAgIGlmKCEkcmVzdWx0WzBdKSB7IHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkcmVzdWx0WzFdKTsgfQ0KICAgIA0KICAgIHJldHVybiAkdGhpczsNCiAgfQ0KICANCiAgLyoqDQogICAqIEBwYXJhbSAkdWlkDQogICAqIEBwYXJhbSAkcGxhaW5fcGFzc3dvcmQNCiAgICoNCiAgICogQHJldHVybiBzdHJpbmcNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBFbmNyeXB0UGFzc3dvcmQoJHVpZCwgJHBsYWluX3Bhc3N3b3JkKQ0KICB7DQogICAgdHJ5DQogICAgew0KICAgICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5FbmNyeXB0UGFzc3dvcmQoJHVpZCwgJHBsYWluX3Bhc3N3b3JkKTsNCiAgICAgIA0KICAgICAgaWYoISRyZXN1bHQpIHsgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDb3VsZCBub3QgZW5jcnlwdCBwYXNzd29yZCcpOyB9DQogICAgfQ0KICAgIGNhdGNoKFxFeGNlcHRpb24gJGUpDQogICAgew0KICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRlLT5nZXRNZXNzYWdlKCkpOw0KICAgIH0NCiAgICANCiAgICByZXR1cm4gJHJlc3VsdDsNCiAgfQ0KICANCiAgLyoqDQogICAqIEBwYXJhbSAkdWlkDQogICAqIEBwYXJhbSAkcGFzc3dvcmQNCiAgICoNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBTZXRVc2VyUGFzc3dvcmQoJHVpZCwgJHBhc3N3b3JkKQ0KICB7DQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5TZXRVc2VyUGFzc3dvcmQoJHVpZCwgJHBhc3N3b3JkKTsNCiAgICANCiAgICBpZighJHJlc3VsdFswXSkgeyB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHJlc3VsdFsxXSk7IH0NCiAgICANCiAgICByZXR1cm4gJHRoaXM7DQogIH0NCiAgDQogIC8qKg0KICAgKiBAcGFyYW0gICAgICAkdWlkDQogICAqIEBwYXJhbSBib29sICRmbGFnDQogICAqDQogICAqIEByZXR1cm4gXE1BTVNcYXBpDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gU2V0VXNlckRpc2FibGVkKCR1aWQsICRmbGFnID0gVFJVRSkNCiAgew0KICAgIHRyeQ0KICAgIHsNCiAgICAgICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5TZXRVc2VyRGlzYWJsZWQoJHVpZCwgJGZsYWcpOw0KICAgIH0NCiAgICBjYXRjaChcRXhjZXB0aW9uICRlKQ0KICAgIHsNCiAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkZS0+Z2V0TWVzc2FnZSgpKTsNCiAgICB9DQogICAgDQogICAgcmV0dXJuICR0aGlzOw0KICB9DQogIA0KICAvKioNCiAgICogQHBhcmFtICAgICAgJHVpZA0KICAgKiBAcGFyYW0gYm9vbCAkZmxhZw0KICAgKg0KICAgKiBAcmV0dXJuIFxNQU1TXGFwaQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEZvcmNlUGFzc3dvcmRDaGFuZ2UoJHVpZCwgJGZsYWcgPSBUUlVFKQ0KICB7DQogICAgdHJ5DQogICAgew0KICAgICAgJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkZvcmNlUGFzc3dvcmRDaGFuZ2UoJHVpZCwgJGZsYWcpOw0KICAgIH0NCiAgICBjYXRjaChcRXhjZXB0aW9uICRlKQ0KICAgIHsNCiAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkZS0+Z2V0TWVzc2FnZSgpKTsNCiAgICB9DQogICAgDQogICAgcmV0dXJuICR0aGlzOw0KICB9DQogIA0KICAvKioNCiAgICogQHBhcmFtICAgICAgJHVpZA0KICAgKiBAcGFyYW0gYm9vbCAkZmxhZw0KICAgKg0KICAgKiBAcmV0dXJuIFxNQU1TXGFwaQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEZvcmNlQ2hhbmdlU2V0dGluZ3MoJHVpZCwgJGZsYWcgPSBUUlVFKQ0KICB7DQogICAgdHJ5DQogICAgew0KICAgICAgJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkZvcmNlQ2hhbmdlU2V0dGluZ3MoJHVpZCwgJGZsYWcpOw0KICAgIH0NCiAgICBjYXRjaChcRXhjZXB0aW9uICRlKQ0KICAgIHsNCiAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkZS0+Z2V0TWVzc2FnZSgpKTsNCiAgICB9DQogICAgDQogICAgcmV0dXJuICR0aGlzOw0KICB9DQogIA0KICAvKioNCiAgICogQHBhcmFtICAgICAgJHVpZA0KICAgKiBAcGFyYW0gYm9vbCAkZmxhZw0KICAgKg0KICAgKiBAcmV0dXJuIFxNQU1TXGFwaQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEZvcmNlVmVyaWZ5KCR1aWQsICRmbGFnID0gVFJVRSkNCiAgew0KICAgIHRyeQ0KICAgIHsNCiAgICAgICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5Gb3JjZVZlcmlmeSgkdWlkLCAkZmxhZyk7DQogICAgfQ0KICAgIGNhdGNoKFxFeGNlcHRpb24gJGUpDQogICAgew0KICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRlLT5nZXRNZXNzYWdlKCkpOw0KICAgIH0NCiAgICANCiAgICByZXR1cm4gJHRoaXM7DQogIH0NCiAgDQogIA0KICAvKioNCiAgICogdXNlcmlkIGFwaSBtZXRob2QNCiAgICoNCiAgICogQHBhcmFtICAgICAgJHVpZA0KICAgKiBAcGFyYW0gICAgICAkdXNlcm5hbWUNCiAgICogQHBhcmFtICAgICAgJHBhc3N3b3JkDQogICAqIEBwYXJhbSBib29sICRleHBpcmVzDQogICAqDQogICAqIEByZXR1cm4gXE1BTVNcYXBpDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gU2V0VXNlcigkdWlkLCAkdXNlcm5hbWUsICRwYXNzd29yZCwgJGV4cGlyZXMgPSBGQUxTRSkNCiAgew0KICAgIA0KICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+U2V0VXNlcigkdWlkLCAkdXNlcm5hbWUsICRwYXNzd29yZCwgJGV4cGlyZXMpOw0KICAgIA0KICAgIGlmKCEkcmVzdWx0WzBdKSB7IHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkcmVzdWx0WzFdKTsgfQ0KICAgIA0KICAgIHJldHVybiAkdGhpczsNCiAgfQ0KICANCiAgLyoqDQogICAqIFNldCB0aGUgdXNlciBncm91cCBtZW1iZXJzaGlwcw0KICAgKiBkb2VzIG5vdCBhbHRlciBhbnkgdXNlciBwcm9wZXJ0aWVzLg0KICAgKiBkb2VzIG5vdCB2YWxpZGF0ZSBncm91cCBpZHMsIGJ1dCBkb2VzIHZhbGlkYXRlIHVpZA0KICAgKg0KICAgKiBAcGFyYW0gaW50IHVzZXJpZA0KICAgKiBAcGFyYW0gYXJyYXkgYXJyYXkgb2YgaW50ZWdlciBncm91cCBpZHMNCiAgICoNCiAgICogQHJldHVybiBcTUFNU1xhcGkgKHN0YXR1cyxtc2cpDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gU2V0VXNlckdyb3VwcygkdWlkLCAkZ3JwaWRzKQ0KICB7DQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5TZXRVc2VyR3JvdXBzKCR1aWQsICRncnBpZHMpOw0KICAgIA0KICAgIGlmKCEkcmVzdWx0WzBdKSB7IHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkcmVzdWx0WzFdKTsgfQ0KICAgIA0KICAgIHJldHVybiAkdGhpczsNCiAgfQ0KICANCiAgLyoqDQogICAqIEBwYXJhbSAkdWlkDQogICAqIEBwYXJhbSAkZ2lkDQogICAqDQogICAqIEByZXR1cm4gXE1BTVNcYXBpDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gQWRkVXNlclRvR3JvdXAoJHVpZCwgJGdpZCkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+QXNzaWduVXNlclRvR3JvdXAoJHVpZCwgJGdpZCk7DQogIH0NCiAgDQogIC8qKg0KICAgKiB1c2VyaWQgYXBpIG1ldGhvZA0KICAgKg0KICAgKiBAcGFyYW0gJHVpZA0KICAgKiBAcGFyYW0gJHByb3BzDQogICAqDQogICAqIEByZXR1cm4gXE1BTVNcYXBpDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gU2V0VXNlclByb3BlcnRpZXMoJHVpZCwgJHByb3BzKQ0KICB7DQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5TZXRVc2VyUHJvcGVydGllcygkdWlkLCAkcHJvcHMpOw0KICAgIA0KICAgICMgdG9kbzogcmV2aXNpdCBpZiBuZWVkZWQgLSBub3Qgc3VyZSBpZiBqc29uX2VuY29kZSBpcyB0aGUgYmVzdCBvcHRpb24gaGVyZSAoSk0pDQogICAgaWYoISRyZXN1bHQpIHsgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDb3VsZCBub3Qgc2V0IHVzZXIgJy4gJHVpZCAuJyBwcm9wZXJ0aWVzICcgLiBcanNvbl9lbmNvZGUoJHByb3BzKSk7IH0NCiAgICANCiAgICByZXR1cm4gJHRoaXM7DQogIH0NCiAgDQogIC8qKg0KICAgKiB1c2VyaWQgYXBpIG1ldGhvZA0KICAgKiBAcGFyYW0gJHVpZA0KICAgKg0KICAgKiBAcmV0dXJuIGJvb2wNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBVc2VyRXhpc3RzQnlJRCgkdWlkKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5Vc2VyRXhpc3RzQnlJRCgkdWlkKTsNCiAgfQ0KICANCg0KICAvKioNCiAgICogdXNlcmlkIGFwaSBtZXRob2QNCiAgICoNCiAgICogQHBhcmFtICR1aWQNCiAgICoNCiAgICogQHJldHVybiBhcnJheQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEdldFVzZXJQcm9wZXJ0aWVzKCR1aWQpDQogIHsNCiAgICAkcmVzdWx0ID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkdldFVzZXJQcm9wZXJ0aWVzKCR1aWQpOw0KICAgIA0KICAgIGlmKCEkcmVzdWx0KSB7IHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignIENvdWxkIG5vdCBnZXQgdXNlciAnLiAkdWlkIC4nIHByb3BlcnRpZXMnKTsgfQ0KICAgIA0KICAgIHJldHVybiAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+R2V0VXNlclByb3BlcnRpZXMoJHVpZCk7DQogIH0NCiAgDQogIA0KICAvKioNCiAgICogdXNlcmlkIGFwaSBtZXRob2QNCiAgICogcmV0dXJucyBhbiBhcnJheSBvZiByZWNvcmRzIG9yIGZhbHNlDQogICAqDQogICAqIEBwYXJhbSAkdXNlcmlkDQogICAqDQogICAqIEByZXR1cm4gYXJyYXkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBHZXRNZW1iZXJHcm91cHNBcnJheSgkdXNlcmlkKQ0KICB7DQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5HZXRNZW1iZXJHcm91cHNBcnJheSgkdXNlcmlkKTsNCiAgICANCiAgICBpZighJHJlc3VsdCkgeyB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJyBDb3VsZCBub3QgZ2V0IHVzZXIgJy4gJHVzZXJpZCAuJyBncm91cHMnKTsgfQ0KICAgIA0KICAgIHJldHVybiAkcmVzdWx0Ow0KICB9DQogIA0KICAvLw0KICAvLyBlbmQgb2YgcmMgZnVuY3Rpb25zDQogIC8vDQogIA0KICAvKioNCiAgICogdXNlcmlkIGFwaSBtZXRob2QNCiAgICoNCiAgICogQHBhcmFtICAgICAgJHRpdGxlDQogICAqIEBwYXJhbSBib29sICRkZWZhdWx0dmFsdWUNCiAgICoNCiAgICogQHJldHVybiBtaXhlZA0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEdldFVzZXJQcm9wZXJ0eSgkdGl0bGUsICRkZWZhdWx0dmFsdWUgPSBGQUxTRSkNCiAgew0KICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+R2V0VXNlclByb3BlcnR5KCR0aXRsZSwgJGRlZmF1bHR2YWx1ZSk7DQogICAgDQogICAgaWYoISRyZXN1bHQpIHsgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCcgQ291bGQgbm90IGdldCBwcm9wZXJ0eSAnLiAkdGl0bGUgLiAnIGZvciBjdXJyZW50IHVzZXInKTsgfQ0KICAgIA0KICAgIHJldHVybiAkcmVzdWx0Ow0KICB9DQogIA0KICANCiAgLyoqDQogICAqIHVzZXJpZCBhcGkgbWV0aG9kDQogICAqDQogICAqIEBwYXJhbSAgICAgICR0aXRsZQ0KICAgKiBAcGFyYW0gICAgICAkdXNlcmlkDQogICAqIEBwYXJhbSBib29sICRkZWZhdWx0dmFsdWUNCiAgICoNCiAgICogQHJldHVybiBib29sfG1peGVkDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlclByb3BlcnR5RnVsbCgkdGl0bGUsICR1c2VyaWQsICRkZWZhdWx0dmFsdWUgPSBGQUxTRSkNCiAgew0KICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+R2V0VXNlclByb3BlcnR5RnVsbCgkdGl0bGUsICR1c2VyaWQsICRkZWZhdWx0dmFsdWUpOw0KICAgIA0KICAgIGlmKCEkcmVzdWx0KSB7IHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignIENvdWxkIG5vdCBnZXQgcHJvcGVydHkgJy4gJHRpdGxlIC4gJyBmb3IgdXNlciAnLiAkdXNlcmlkKTsgfQ0KICAgIA0KICAgIHJldHVybiAkcmVzdWx0Ow0KICB9DQogIA0KICAvKioNCiAgICogdXNlcmlkIGFwaSBtZXRob2QNCiAgICoNCiAgICogQHBhcmFtICR1aWQNCiAgICogQHBhcmFtICR0aXRsZQ0KICAgKiBAcGFyYW0gJGRhdGENCiAgICoNCiAgICogQHJldHVybiBib29sDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gSXNVc2VyUHJvcGVydHlWYWx1ZVVuaXF1ZSgkdWlkLCAkdGl0bGUsICRkYXRhKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5Jc1VzZXJQcm9wZXJ0eVZhbHVlVW5pcXVlKCR1aWQsICR0aXRsZSwgJGRhdGEpOw0KICB9DQogIA0KICANCiAgLyoqDQogICAqIHVzZXJpZCBhcGkgbWV0aG9kDQogICAqDQogICAqIEBwYXJhbSAkdGl0bGUNCiAgICogQHBhcmFtICRkYXRhDQogICAqDQogICAqIEByZXR1cm4gXE1BTVNcYXBpDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gU2V0VXNlclByb3BlcnR5KCR0aXRsZSwgJGRhdGEpDQogIHsNCiAgICANCiAgICAkcmVzdWx0ID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPlNldFVzZXJQcm9wZXJ0eSgkdGl0bGUsICRkYXRhKTsNCiAgICANCiAgICBpZighJHJlc3VsdCkgeyB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJyBDb3VsZCBub3Qgc2V0IHByb3BlcnR5ICcuICR0aXRsZSAuICcgZm9yIGN1cnJlbnQgdXNlcicpOyB9DQoNCiAgICByZXR1cm4gJHRoaXM7DQogIH0NCiAgDQogIA0KICAvKioNCiAgICogdXNlcmlkIGFwaSBtZXRob2QNCiAgICoNCiAgICogQHBhcmFtICR0aXRsZQ0KICAgKiBAcGFyYW0gJGRhdGENCiAgICogQHBhcmFtICR1c2VyaWQNCiAgICoNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBTZXRVc2VyUHJvcGVydHlGdWxsKCR0aXRsZSwgJGRhdGEsICR1c2VyaWQpDQogIHsNCiAgICAkcmVzdWx0ID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPlNldFVzZXJQcm9wZXJ0eUZ1bGwoJHRpdGxlLCAkZGF0YSwgJHVzZXJpZCk7DQogICAgDQogICAgaWYoISRyZXN1bHQpIHsgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCcgQ291bGQgbm90IHNldCBwcm9wZXJ0eSAnLiAkdGl0bGUgLiAnIGZvciB1c2VyICcuICR1c2VyaWQpOyB9DQogICAgDQogICAgcmV0dXJuICR0aGlzOw0KICB9DQogIA0KICANCiAgLyoqDQogICAqIGRlbGV0ZSBhbGwgb2NjdXJyZW5jZXMgb2YgdGhlIHVzZXJwcm9wZXJ0eSBieSBuYW1lDQogICAqDQogICAqIEBwYXJhbSAkdGl0bGUNCiAgICoNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVVc2VyUHJvcGVydHlCeU5hbWUoJHRpdGxlKQ0KICB7DQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5EZWxldGVVc2VyUHJvcGVydHlCeU5hbWUoJHRpdGxlKTsNCiAgICANCiAgICBpZighJHJlc3VsdCkgeyB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJyBDb3VsZCBub3QgZGVsZXRlIHByb3BlcnR5ICcuICR0aXRsZSAuICcgZm9yIGN1cnJlbnQgdXNlcicpOyB9DQogICAgDQogICAgcmV0dXJuICR0aGlzOw0KICB9DQogIA0KICANCiAgLyoqDQogICAqIHVzZXJpZCBhcGkgbWV0aG9kDQogICAqDQogICAqIEBwYXJhbSAgICAgICR0aXRsZQ0KICAgKiBAcGFyYW0gYm9vbCAkYWxsDQogICAqDQogICAqIEByZXR1cm4gXE1BTVNcYXBpDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gRGVsZXRlVXNlclByb3BlcnR5KCR0aXRsZSwgJGFsbCA9IEZBTFNFKQ0KICB7DQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5EZWxldGVVc2VyUHJvcGVydHkoJHRpdGxlLCAkYWxsKTsNCiAgICANCiAgICBpZighJHJlc3VsdCkgeyB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJyBDb3VsZCBub3QgZGVsZXRlIHByb3BlcnR5ICcuICR0aXRsZSAuICcgZm9yIGN1cnJlbnQgdXNlcicpOyB9DQogICAgDQogICAgcmV0dXJuICR0aGlzOw0KICB9DQogIA0KICAvKioNCiAgICogdXNlcmlkIGFwaSBtZXRob2QNCiAgICoNCiAgICogQHBhcmFtICAgICAgJHRpdGxlDQogICAqIEBwYXJhbSAgICAgICR1c2VyaWQNCiAgICogQHBhcmFtIGJvb2wgJGFsbA0KICAgKg0KICAgKiBAcmV0dXJuIFxNQU1TXGFwaQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIERlbGV0ZVVzZXJQcm9wZXJ0eUZ1bGwoJHRpdGxlLCAkdXNlcmlkLCAkYWxsID0gRkFMU0UpDQogIHsNCiAgICAkcmVzdWx0ID0gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkRlbGV0ZVVzZXJQcm9wZXJ0eUZ1bGwoJHRpdGxlLCAkdXNlcmlkLCAkYWxsKTsNCiAgICANCiAgICBpZighJHJlc3VsdCkgeyB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0NvdWxkIG5vdCBkZWxldGUgcHJvcGVydHkgJy4gJHRpdGxlIC4gJyBmb3IgdXNlciAnLiAkdXNlcmlkKTsgfQ0KICAgIA0KICAgIHJldHVybiAkdGhpczsNCiAgfQ0KICANCiAgLyoqDQogICAqIHVzZXJpZCBhcGkgbWV0aG9kDQogICAqDQogICAqIEByZXR1cm4gXE1BTVNcYXBpDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gRGVsZXRlQWxsVXNlclByb3BlcnRpZXMoKQ0KICB7DQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5EZWxldGVBbGxVc2VyUHJvcGVydGllcygpOw0KICAgIA0KICAgIGlmKCEkcmVzdWx0KSB7IHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignQ291bGQgbm90IGRlbGV0ZSBhbGwgdXNlciBwcm9wZXJ0aWVzJyk7IH0NCiAgICANCiAgICByZXR1cm4gJHRoaXM7DQogIH0NCiAgDQogIC8qKg0KICAgKiB1c2VyaWQgYXBpIG1ldGhvZA0KICAgKg0KICAgKiBAcGFyYW0gJHVzZXJpZA0KICAgKg0KICAgKiBAcmV0dXJuIFxNQU1TXGFwaQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIERlbGV0ZUFsbFVzZXJQcm9wZXJ0aWVzRnVsbCgkdXNlcmlkKQ0KICB7DQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5EZWxldGVBbGxVc2VyUHJvcGVydGllc0Z1bGwoJHVzZXJpZCk7DQogICAgDQogICAgaWYoISRyZXN1bHQpIHsgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDb3VsZCBub3QgZGVsZXRlIGFsbCB1c2VyIHByb3BlcnRpZXMnKTsgfQ0KICAgIA0KICAgIHJldHVybiAkdGhpczsNCiAgfQ0KICANCiAgLyoqDQogICAqIFRPRE86IHJldmlzaXQgLSB0aGUgbWFuaXB1bGF0b3IgQ2hlY2tQYXNzd29yZCBpcyB3YXkgdG9vIGNvbnZvbHV0ZWQgYW5kIHNob3VsZCBiZSBzaW1wbGlmaWVkIChKTSkNCiAgICoNCiAgICogQHBhcmFtICAgICAgICAkdXNlcm5hbWUNCiAgICogQHBhcmFtICAgICAgICAkcGFzc3dvcmQNCiAgICogQHBhcmFtIHN0cmluZyAkZ3JvdXBzDQogICAqDQogICAqIEByZXR1cm4gaW50fG1peGVkDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gQ2hlY2tQYXNzd29yZCgkdXNlcm5hbWUsICRwYXNzd29yZCwgJGdyb3VwcyA9ICcnKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5DaGVja1Bhc3N3b3JkKCR1c2VybmFtZSwgJHBhc3N3b3JkLCAkZ3JvdXBzKTsNCiAgfQ0KICANCiAgLyoqDQogICAqIHVzZXJpZCBhcGkgbWV0aG9kDQogICAqDQogICAqIEByZXR1cm4gc3RyaW5nDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gTG9nZ2VkSW5OYW1lKCkNCiAgew0KICAgIHJldHVybiAoc3RyaW5nKSR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5Mb2dnZWRJbk5hbWUoKTsNCiAgfQ0KICANCiAgLyoqDQogICAqIEBwYXJhbSAkdWlkDQogICAqIEBwYXJhbSAkbWVzc2FnZQ0KICAgKg0KICAgKiBAcmV0dXJuIFxNQU1TXGFwaQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIExvZ291dCgkdWlkID0gJycsICRtZXNzYWdlID0gJ2xvZ291dCcpDQogIHsNCiAgICAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+TG9nb3V0KCR1aWQsICRtZXNzYWdlKTsNCiAgICANCiAgICByZXR1cm4gJHRoaXM7DQogIH0NCiAgDQogIC8qKg0KICAgKiB0aGlzIGRlbGV0ZXMgdGhlIGVudHJ5IGZyb20gdGhlIGxvZ2dlZGluIHRhYmxlLCBhbmQgYWRkcyBhIGhpc3RvcnkgZW50cnkuDQogICAqIGl0IGFsc28gc2V0cyBzb21lIGNhY2hlIGRhdGEgdXNlZCB0byBmb3JjZSBsb2dvdXQgdGhlIHVzZXINCiAgICogZGVzaWduZWQgdG8gcHJvZ3JhbW1hdGljYWxseSBsb2cgb3V0IGEgdXNlciBmcm9tIHRoZSBhZG1pbiBwYW5lbC4NCiAgICogc28gdGhhdCB0aGUgbmV4dCB0aW1lIGEgdXNlciBkb2VzIGFueXRoaW5nIG9uIHRoaXMgc2l0ZSwgYW5kIGFzIGxvbmcgYXMgY2FjaGUgaXMgbm90IGNsZWFyZWQNCiAgICogdGhlIG5leHQgdGltZSBoZSBkb2VzIGEgcmVxdWVzdCBvbiB0aGUgd2Vic2l0ZSwgaGlzIGNvb2tpZXMgYW5kIHNlc3Npb24gZGF0YSB3aWxsIGJlIGNsZWFyZWQNCiAgICogYW5vdGhlciBvcHRpb24gaGVyZSB3b3VsZCBiZSB0byB1c2UgYSBmbGFnIGluIHRoZSBkYXRhYmFzZSB0aGF0IGluZGljYXRlcyB0aGUgdXNlciBzaG91bGQgYmUgbG9nZ2VkIG91dC4NCiAgICoNCiAgICogQHBhcmFtICR1aWQNCiAgICogQHBhcmFtICRldmVudG1zZw0KICAgKg0KICAgKiBAcmV0dXJuIFxNQU1TXGFwaQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIExvZ291dFVzZXIoJHVpZCwgJGV2ZW50bXNnID0gJ2xvZ291dCcpDQogIHsNCiAgICAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+TG9nb3V0VXNlcigkdWlkLCAkZXZlbnRtc2cpOw0KICAgIA0KICAgIHJldHVybiAkdGhpczsNCiAgfQ0KICANCiAgLy8gdXNlcmlkIGFwaSBtZXRob2QNCiAgDQogIC8qKg0KICAgKiBAcmV0dXJuIFxNQU1TXGFwaQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEV4cGlyZVVzZXJzKCkNCiAgew0KICAgICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5FeHBpcmVVc2VycygpOw0KICAgIA0KICAgIHJldHVybiAkdGhpczsNCiAgfQ0KICANCiAgLy8gdXNlcmlkIGFwaSBtZXRob2QNCiAgDQogIC8qKg0KICAgKiBAcmV0dXJuIGludHxGQUxTRQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIExvZ2dlZEluSWQoKQ0KICB7DQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5Mb2dnZWRJbklkKCk7DQogICAgDQogICAgaWYoISRyZXN1bHQpIHsgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCd1c2VyIG5vdCBsb2dnZWQgaW4nKTsgfQ0KICAgIA0KICAgIHJldHVybiAkcmVzdWx0Ow0KICB9DQogIA0KICAvLyB1c2VyaWQgYXBpIG1ldGhvZA0KICANCiAgLyoqDQogICAqIFRlc3RzIHdoZXRoZXIgdGhlIGN1cnJlbnQgdXNlciBpcyBsb2dnZWQgaW4gb3Igbm90DQogICAqDQogICAqIEByZXR1cm4gYm9vbA0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIExvZ2dlZEluKCkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+TG9nZ2VkSW4oKTsNCiAgfQ0KICANCiAgLyoqDQogICAqIERldGVybWluZSBpZiB0aGUgdXNlciBpZCBpcyBhIG1lbWJlciBvZiB0aGUgZ3JvdXAocykgc3BlY2lmaWVkLg0KICAgKg0KICAgKiBAcGFyYW0gaW50ZWdlciAkdXNlcmlkICB1c2VyaWQNCiAgICogQHBhcmFtIG1peGVkICAgJGdyb3VwaWQgaW50ZWdlciAocG9zaXRpdmUpIGdyb3VwIGlkLCBvciBhbiBhcnJheSBvZiBwb3NpdGl2ZSBpbnRlZ2VyIGdyb3VwIGlkcy4NCiAgICoNCiAgICogQHJldHVybiBib29sZWFuDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gTWVtYmVyT2ZHcm91cCgkdXNlcmlkLCAkZ3JvdXBpZCkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+TWVtYmVyT2ZHcm91cCgkdXNlcmlkLCAkZ3JvdXBpZCk7DQogIH0NCiAgDQogIC8qKg0KICAgKiB1c2VyaWQgYXBpIG1ldGhvZA0KICAgKg0KICAgKiBAcGFyYW0gJHVzZXJpZA0KICAgKg0KICAgKiBAcmV0dXJuIHN0cmluZw0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEdldFVzZXJOYW1lKCR1c2VyaWQpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkdldFVzZXJOYW1lKCR1c2VyaWQpOw0KICB9DQogIA0KICANCiAgLyoqDQogICAqIHVzZXJpZCBhcGkgbWV0aG9kDQogICAqDQogICAqIGV2ZW4gdGhvdWdoIHByZXZpb3VzIG1ldGhvZHMgcmV0dXJuIC0xIGlmIHVzZXIgZG9lc24ndCBleGlzdA0KICAgKiB0aGUgc3lzdGVtIHdpbGwgbmV2ZXIgYWxsb3cgZm9yIHRoZSBleGlzdGVuY2Ugb2YgYSB1c2VyIDAsDQogICAqIHNvIHdlIHJldHVybiB6ZXJvIGFzIGEgdXNlciBub3QgZm91bmQgcmVzdWx0DQogICAqDQogICAqIEBwYXJhbSAkdXNlcm5hbWUNCiAgICoNCiAgICogQHJldHVybiBpbnQNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBHZXRVc2VySUQoJHVzZXJuYW1lKQ0KICB7DQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5HZXRVc2VySUQoJHVzZXJuYW1lKTsNCiAgICANCiAgICByZXR1cm4gXG1heCgkcmVzdWx0LCAwKTsNCiAgfQ0KICANCiAgLyoqDQogICAqIEFkZHMgYSBuZXcgZ3JvdXAgd2l0aCB0aGUgc3VwcGxpZWQgbmFtZSBhbmQgZGVzY3JpcHRpb24NCiAgICoNCiAgICogQHBhcmFtICRuYW1lDQogICAqICAgICAgICAgICAgICBUaGUgbmV3IGdyb3VwIG5hbWUNCiAgICogQHBhcmFtICRkZXNjcmlwdGlvbg0KICAgKiAgICAgICAgICAgICAgICAgICAgICB0aGUgZ3JvdXAgZGVzY3JpcHRpb24NCiAgICoNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBBZGRHcm91cCgkbmFtZSwgJGRlc2NyaXB0aW9uKQ0KICB7DQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5BZGRHcm91cCgkbmFtZSwgJGRlc2NyaXB0aW9uKTsNCiAgICANCiAgICBpZighJHJlc3VsdFswXSkgeyB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHJlc3VsdFsxXSk7IH0NCiAgICANCiAgICByZXR1cm4gJHRoaXM7DQogIH0NCiAgDQogIC8qKg0KICAgKiBBZGQgdGhlIHNwZWNpZmllZCB1c2VyIHRvIHRoZSBkYXRhYmFzZQ0KICAgKg0KICAgKiBAcGFyYW0gJG5hbWUNCiAgICogICAgICAgICAgICAgICAgICBUaGUgZGVzaXJlZCB1c2VybmFtZQ0KICAgKiBAcGFyYW0gJHBhc3N3b3JkDQogICAqICAgICAgICAgICAgICAgICAgVGhlIGRlc2lyZWQgcGFzc3dvcmQgKHVuZW5jcnlwdGVkKQ0KICAgKiBAcGFyYW0gJGV4cGlyZXMNCiAgICogICAgICAgICAgICAgICAgICBUaGUgZXhwaXJ5IGRhdGUNCiAgICogQHBhcmFtIGJvb2wgJG5vbnN0ZA0KICAgKiBAcGFyYW0gbnVsbCAkY3JlYXRlZGF0ZQ0KICAgKiBAcGFyYW0gbnVsbCAkcmV0dXJuIGlmIHdlIGhhdmUgYSB2YWxpZCByZXR1cm4gdmFsdWUgKGluIHRoaXMgY2FzZSBpdCdzIGEgdXNlcmlkKSwgYSB2YXJpYWJsZSBjYW4gYmUgcGFzc2VkIGhlcmUNCiAgICoNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBBZGRVc2VyKCRuYW1lLCAkcGFzc3dvcmQsICRleHBpcmVzLCAkbm9uc3RkID0gRkFMU0UsICRjcmVhdGVkYXRlID0gTlVMTCAsICYkcmV0dXJuID0gTlVMTCkNCiAgew0KICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+QWRkVXNlcigkbmFtZSwgJHBhc3N3b3JkLCAkZXhwaXJlcywgJG5vbnN0ZCwgJGNyZWF0ZWRhdGUpOw0KICAgIA0KICAgIGlmKCEkcmVzdWx0WzBdKSB7IHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkcmVzdWx0WzFdKTsgfQ0KICAgIA0KICAgICRyZXR1cm4gPSAkcmVzdWx0WzBdOw0KICAgIA0KICAgIHJldHVybiAkdGhpczsNCiAgfQ0KICANCiAgLyoqDQogICAqIHVzZXJpZCBhcGkgbWV0aG9kDQogICAqDQogICAqIEBwYXJhbSAkZ2lkDQogICAqDQogICAqIEByZXR1cm4gc3RyaW5nDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0R3JvdXBOYW1lKCRnaWQpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkdldEdyb3VwTmFtZSgkZ2lkKTsNCiAgfQ0KICANCiAgDQogIC8qKg0KICAgKiB1c2VyaWQgYXBpIG1ldGhvZA0KICAgKg0KICAgKiBAcGFyYW0gJGdpZA0KICAgKg0KICAgKiBAcmV0dXJuIHN0cmluZw0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwRGVzYygkZ2lkKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5HZXRHcm91cERlc2MoJGdpZCk7DQogIH0NCiAgDQogIC8qKg0KICAgKiB1c2VyaWQgYXBpIG1ldGhvZA0KICAgKg0KICAgKiBAcGFyYW0gJGlkDQogICAqDQogICAqIEByZXR1cm4gXE1BTVNcYXBpDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gRGVsZXRlR3JvdXBGdWxsKCRpZCkNCiAgew0KICAgICRyZXN1bHQgPSAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+RGVsZXRlR3JvdXBGdWxsKCRpZCk7DQogICAgDQogICAgaWYoISRyZXN1bHRbMF0pIHsgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRyZXN1bHRbMV0pOyB9DQogICAgDQogICAgcmV0dXJuICR0aGlzOw0KICB9DQogIA0KICAvKioNCiAgICogdXNlcmlkIGFwaSBtZXRob2QNCiAgICoNCiAgICogQHJldHVybiBhcnJheQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwTGlzdCgpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPkdldEdyb3VwTGlzdCgpOw0KICB9DQogIA0KICAvLyB1c2VyaWQgYXBpIG1ldGhvZA0KICAvKioNCiAgICogdXNlcmlkIGFwaSBtZXRob2QNCiAgICoNCiAgICogQHBhcmFtIGJvb2wgJHdpdGhfY291bnQNCiAgICoNCiAgICogQHJldHVybiBhcnJheQ0KICAgKi8NCiAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwTGlzdEZ1bGwoJHdpdGhfY291bnQgPSBGQUxTRSkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+R2V0R3JvdXBMaXN0RnVsbCgkd2l0aF9jb3VudCk7DQogIH0NCiAgDQogIC8qKg0KICAgKiBvbGQgdXNlcmlkIGFwaSBtZXRob2QNCiAgICoNCiAgICogZXZlbiB0aG91Z2ggcHJldmlvdXMgbWV0aG9kcyByZXR1cm4gLTEgaWYgdGhlIGdyb3VwIGRvZXNuJ3QgZXhpc3QNCiAgICogdGhlIHN5c3RlbSB3aWxsIG5ldmVyIGFsbG93IGZvciB0aGUgZXhpc3RlbmNlIG9mIGEgZ3JvdXAgMCwNCiAgICogc28gd2UgcmV0dXJuIHplcm8gYXMgYSBncm91cCBub3QgZm91bmQgcmVzdWx0DQogICAqDQogICAqIEBwYXJhbSAkZ3JvdXBuYW1lDQogICAqDQogICAqIEByZXR1cm4gaW50DQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gR2V0R3JvdXBJRCgkZ3JvdXBuYW1lKQ0KICB7DQogICAgJHJlc3VsdCA9ICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5HZXRHcm91cElEKCRncm91cG5hbWUpOw0KICAgIA0KICAgIHJldHVybiBcbWF4KCRyZXN1bHQsIDApOw0KICB9DQogIA0KICAvKioNCiAgICogUmV0dXJuIGEgbGlzdCBvZiBncm91cHMgdGhhdCB0aGUgdXNlciBpcyBhIG1lbWJlciBvZg0KICAgKg0KICAgKiBAcGFyYW0gaW50ZWdlciAkdXNlcmlkIFRoZSB1c2VyIGlkZW50aWZpZXINCiAgICoNCiAgICogQHJldHVybiBzdHJpbmcgQSBjb21tYSBkZWxpbWl0ZWQgc3RyaW5nIGNvbnRhaW5pbmcgbWVtYmVyIGdyb3VwIG5hbWVzLiAgb3IgJ25vbmUnDQogICAqLw0KICBmdW5jdGlvbiBHZXRNZW1iZXJHcm91cHMoJHVzZXJpZCkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+R2V0TWFuaXB1bGF0b3IoKS0+R2V0TWVtYmVyR3JvdXBzKCR1c2VyaWQpOw0KICB9DQogIA0KICAvKioNCiAgICogb2xkIHVzZXJpZCBhcGkgbWV0aG9kDQogICAqDQogICAqIEBwYXJhbSAkaWQNCiAgICoNCiAgICogQHJldHVybiBcTUFNU1xhcGkNCiAgICovDQogIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVVc2VyKCRpZCkNCiAgew0KICAgICR0aGlzLT5HZXRNYW5pcHVsYXRvcigpLT5EZWxldGVVc2VyKCRpZCk7DQogICAgDQogICAgcmV0dXJuICR0aGlzOw0KICB9DQogIA0KICAvKioNCiAgICogQHBhcmFtIGludCAkdWlkDQogICAqDQogICAqIEByZXR1cm4gXE1BTVNcYXBpDQogICAqLw0KICBwdWJsaWMgZnVuY3Rpb24gU2V0UGVybWFuZW50Q29va2llKGludCAkdWlkKQ0KICB7DQogICAgJHRoaXMtPkdldE1hbmlwdWxhdG9yKCktPlNldFBlcm1hbmVudENvb2tpZSgkdWlkKTsNCiAgICANCiAgICByZXR1cm4gJHRoaXM7DQogIH0NCiAgDQogIC8qKg0KICAgKiBlbmQgb2YgYXBpIG1ldGhvZHMgZnJvbSB1c2VycyBtYW5pcHVsYXRvcg0KICAgKi8NCn0NCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/class.ClearUserHistoryTask.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVM7CgpjbGFzcyBDbGVhclVzZXJIaXN0b3J5VGFzayBpbXBsZW1lbnRzIFxDbXNSZWd1bGFyVGFzawp7CiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X25hbWUoKQogICAgewogICAgICAgIHJldHVybiBnZXRfY2xhc3MoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2Rlc2NyaXB0aW9uKCkge30KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdCggJHRpbWUgPSAnJykKICAgIHsKICAgICAgICBpZiggISR0aW1lICkgJHRpbWUgPSB0aW1lKCk7CiAgICAgICAgJG1vZCA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoIE1PRF9NQU1TICk7CiAgICAgICAgJHRtcCA9IChpbnQpICRtb2QtPkdldFByZWZlcmVuY2UoJ2NsZWFyaGlzdG9yeV9hZ2UnKTsKICAgICAgICBpZiggJHRtcCA8IDEgKSByZXR1cm47CiAgICAgICAgJGxhc3RydW4gPSAoaW50KSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdjbGVhcmhpc3RvcnlfbGFzdHJ1bicsMCk7CiAgICAgICAgaWYoICRsYXN0cnVuID4gdGltZSgpIC0gMjQgKiAzNjAwICkgcmV0dXJuOwoKICAgICAgICByZXR1cm4gVFJVRTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZXhlY3V0ZSggJHRpbWUgPSAnJyApCiAgICB7CiAgICAgICAgaWYoICEkdGltZSApICR0aW1lID0gdGltZSgpOwogICAgICAgICRtb2QgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCBNT0RfTUFNUyApOwogICAgICAgICRtYXhfYWdlX2RheXMgPSAoaW50KSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdjbGVhcmhpc3RvcnlfYWdlJyk7CiAgICAgICAgLy8gZGVsZXRlIGV2ZXJ5dGhpbmcgZnJvbSB0aGUgaGlzdG9yeSB0aGF0IGlzIG9sZGVyIHRoYW4gJG1heF9hZ2VfZGF5cwoKICAgICAgICAkb2xkZXJfdGhhbiA9IHRpbWUoKSAtICRtYXhfYWdlX2RheXMgKiAyNCAqIDM2MDA7CiAgICAgICAgXENNU01TXEhvb2tNYW5hZ2VyOjpkb19ob29rKCAnTUFNUzo6Q2xlYXJVc2VySGlzdG9yeScsICRvbGRlcl90aGFuICk7CiAgICAgICAgJHNxbCA9ICdERUxFVEUgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX21hbXNfaGlzdG9yeSBXSEVSRSByZWZkYXRlIDwgPyc7CiAgICAgICAgJGRiID0gJG1vZC0+R2V0RGIoKTsKICAgICAgICAkZGItPkV4ZWN1dGUoICRzcWwsICRkYi0+RGJUaW1lU3RhbXAoICRvbGRlcl90aGFuICkgKTsKCiAgICAgICAgYXVkaXQoJycsJ01BTVMnLCdSZW1vdmVkIGhpc3RvcnkgZW50cmllcyBvbGRlciB0aGFuICcuc3RyZnRpbWUoICcleCAlWCcsICRvbGRlcl90aGFuICkpOwogICAgICAgIHJldHVybiBUUlVFOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBvbl9zdWNjZXNzKCR0aW1lID0gJycpCiAgICB7CiAgICAgICAgaWYoICEkdGltZSApICR0aW1lID0gdGltZSgpOwogICAgICAgICRtYW1zID0gXGNtc191dGlsczo6Z2V0X21vZHVsZSggTU9EX01BTVMgKTsKICAgICAgICAkbWFtcy0+U2V0UHJlZmVyZW5jZSgnY2xlYXJoaXN0b3J5X2xhc3RydW4nLCR0aW1lKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gb25fZmFpbHVyZSgkdGltZSA9ICcnKQogICAgewogICAgICAgIGlmKCAhJHRpbWUgKSAkdGltZSA9IHRpbWUoKTsKICAgIH0KCn0gLy8gY2xhc3MK]]></data>
	</file>
	<file>
	  <filename>/lib/class.email_verify_assistant.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVM7CgpjbGFzcyBlbWFpbF92ZXJpZnlfYXNzaXN0YW50IGV4dGVuZHMgdmVyaWZpY2F0aW9uX2Fzc2lzdGFudAp7CiAgICBwcml2YXRlICRfdGVtcGxhdGU7CiAgICBwcml2YXRlICRfc3ViamVjdDsKICAgIHByaXZhdGUgJF90aXRsZTsKICAgIHByaXZhdGUgJF9tc2c7CiAgICBwcml2YXRlICRfY29kZV9wcm9tcHQ7CiAgICBwcml2YXRlICRfbGlua19wcm9tcHQ7CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRfZGVmYXVsdF90ZW1wbGF0ZSgpCiAgICB7CiAgICAgICAgJHR5cGVuYW1lID0gJ01BTVM6OmZvcmdvdCBwYXNzd29yZCBlbWFpbCc7CiAgICAgICAgJHRwbCA9IFxDbXNMYXlvdXRUZW1wbGF0ZTo6bG9hZF9kZmx0X2J5X3R5cGUoJHR5cGVuYW1lKTsKICAgICAgICBpZiggISR0cGwgKSB7CiAgICAgICAgICAgIGF1ZGl0KCcnLCdNQU1TJywnTm8gZGVmYXVsdCB0ZW1wbGF0ZSBvZiB0eXBlICcuJHR5cGVuYW1lLicgZm91bmQnKTsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdObyBkZWZhdWx0IHRlbXBsYXRlIG9mIHR5cGUgJy4kdHlwZW5hbWUpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHRwbC0+Z2V0X25hbWUoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoIFxNQU1TICRtYW1zICkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRtYW1zKTsKCiAgICAgICAgJHRoaXMtPl90ZW1wbGF0ZSA9ICR0aGlzLT5nZXRfZGVmYXVsdF90ZW1wbGF0ZSgpOwogICAgICAgICR0aGlzLT5fc3ViamVjdCA9ICdQbGVhc2UgdmVyaWZ5IHlvdXIgYWNjb3VudCBmb3Ige3NpdGVuYW1lfSc7CiAgICAgICAgJHRoaXMtPl90aXRsZSA9ICdQbGVhc2UgdmVyaWZ5IHlvdXIgYWNjb3VudCc7CiAgICAgICAgJHRoaXMtPl9tc2cgPSAnPHA+Rm9yIHNlY3VyaXR5IHB1cnBvc2VzIHdlIG5lZWQgdG8gdmFsaWRhdGUgeW91ciBpZGVudGl0eS4gIFRoaXMgaXMgZG9uZSBieSB2ZXJpZnlpbmcgdGhhdCB5b3UgcmVjZWl2ZWQgdGhpcyBlbWFpbCBjb3JyZWN0bHksIGFuZCBjYW4gZm9sbG93IHRoZXNlIGluc3RydWN0aW9ucy48L3A+CjxwPkJlbG93LCBXZSBoYXZlIHByb3ZpZGVkIGEgdW5pcXVlIHNlY3VyaXR5IGNvZGUgdG8gdXNlIHRvIHZhbGlkYXRlIHlvdXIgY3JlZGVudGlhbHMuIFBsZWFzZSBjbGljayBvbiB0aGUgbGluayBwcm92aWRlZCBhbmQgZW50ZXIgdGhlIHNlY3VyaXR5IGNvZGUuIDxlbT5JdCBtYXkgYWxyZWFkeSBiZSBmaWxsZWQgaW4gb24gdGhlIGZvcm08L2VtPi4gIFRoaXMgd2lsbCBjb21wbGV0ZSB0aGUgb3BlcmF0aW9uIGFuZCBhbGxvdyB5b3UgdG8gbG9naW4gdG8gdGhlIHNlcnZpY2UuPC9wPic7CiAgICAgICAgJHRoaXMtPl9jb2RlX3Byb21wdCA9ICdZb3VyIHNlY3VyaXR5IGNvZGUgaXM6JzsKICAgICAgICAkdGhpcy0+X2xpbmtfcHJvbXB0ID0gJ1BsZWFzZSBjbGljayBvbiB0aGlzIGxpbmsnOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBTZXRUZW1wbGF0ZSgkc3RyKQogICAgewogICAgICAgIGlmKCAkc3RyICkgJHRoaXMtPl90ZW1wbGF0ZSA9ICRzdHI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIFNldFRpdGxlKCRzdHIpCiAgICB7CiAgICAgICAgaWYoICRzdHIgKSAkdGhpcy0+X3RpdGxlID0gJHN0cjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gU2V0U3ViamVjdCgkc3RyKQogICAgewogICAgICAgIGlmKCAkc3RyICkgJHRoaXMtPl9zdWJqZWN0ID0gJHN0cjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gU2V0TWVzc2FnZSgkc3RyKQogICAgewogICAgICAgIGlmKCAkc3RyICkgJHRoaXMtPl9tc2cgPSAkc3RyOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBTZXRDb2RlUHJvbXB0KCRzdHIpCiAgICB7CiAgICAgICAgaWYoICRzdHIgKSAkdGhpcy0+X2NvZGVfcHJvbXB0ID0gJHN0cjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gU2V0TGlua1Byb21wdCgkc3RyKQogICAgewogICAgICAgIGlmKCAkc3RyICkgJHRoaXMtPl9saW5rX3Byb21wdCA9ICRzdHI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNlbmQoICR1aWQsICRjb2RlICkKICAgIHsKICAgICAgICAkdWlkID0gKGludCkgJHVpZDsKICAgICAgICAkY29kZSA9IHRyaW0oJGNvZGUpOwogICAgICAgICRkZXN0cGFnZSA9ICR0aGlzLT5nZXRfZGVzdHBhZ2UoKTsKICAgICAgICBpZiggJHVpZCA8IDEgfHwgZW1wdHkoJGNvZGUpICkgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0JhZCBkYXRhIHBhc3NlZCB0byAnLl9fTUVUSE9EX18pOwogICAgICAgICRlbWFpbCA9ICR0aGlzLT5tYW1zLT5HZXRFbWFpbCgkdWlkKTsKICAgICAgICBpZiggISRlbWFpbCApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0F0dGVtcHQgdG8gY3JlYXRlIGEgJy5fX0NMQVNTX18uJyBmb3IgYSB1c2VyIHdpdGhvdXQgYSB2YWxpZCBlbWFpbCBhZGRyZXNzJyk7CgogICAgICAgIC8vIGNvZGUgd2lsbCBiZSBzZW50IGluIHRoZSBVUkwKICAgICAgICAkdXJsID0gJHRoaXMtPmdldF92ZXJpZnlfZm9ybV91cmwoICR1aWQsICRjb2RlICk7CgogICAgICAgICR0cGwgPSAkdGhpcy0+bWFtcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJHRoaXMtPl90ZW1wbGF0ZSk7CiAgICAgICAgJHRwbC0+YXNzaWduKCd0aXRsZScsJHRoaXMtPl90aXRsZSk7CiAgICAgICAgJHRwbC0+YXNzaWduKCdtZXNzYWdlX2ZvcmdvdHB3bWFpbCcsJHRoaXMtPl9tc2cpOwogICAgICAgICR0cGwtPmFzc2lnbignbWVzc2FnZV9mb3Jnb3Rwd2VtYWlsJywkdGhpcy0+X21zZyk7CiAgICAgICAgJHRwbC0+YXNzaWduKCdtZXNzYWdlJywkdGhpcy0+X21zZyk7CiAgICAgICAgJHRwbC0+YXNzaWduKCdwcm9tcHRfY29kZScsJHRoaXMtPl9jb2RlX3Byb21wdCk7CiAgICAgICAgJHRwbC0+YXNzaWduKCdwcm9tcHRfbGluaycsJHRoaXMtPl9saW5rX3Byb21wdCk7CiAgICAgICAgJHRwbC0+YXNzaWduKCdkZXN0cGFnZScsJGRlc3RwYWdlKTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ2RhdGFfY29kZScsJGNvZGUpOwogICAgICAgICR0cGwtPmFzc2lnbignc3ViamVjdCcsJHRoaXMtPl9zdWJqZWN0KTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ2RhdGFfdXJsJywkdXJsKTsKICAgICAgICAkYm9keSA9ICR0cGwtPmZldGNoKCk7CgogICAgICAgIC8vIGR1cGxpY2F0ZWQgY29kZS4uLiBJIGtub3csIEkga25vdy4uLiBzaGFkZGFwCiAgICAgICAgJHNtYXJ0eSA9ICR0aGlzLT5tYW1zLT5jbXMtPkdldFNtYXJ0eSgpOwogICAgICAgICR0cGwgPSAkc21hcnR5LT5DcmVhdGVUZW1wbGF0ZSgnc3RyaW5nOicuJHRoaXMtPl9zdWJqZWN0KTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ3RpdGxlJywkdGhpcy0+X3RpdGxlKTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ21lc3NhZ2VfZm9yZ290cHdtYWlsJywkdGhpcy0+X21zZyk7CiAgICAgICAgJHRwbC0+YXNzaWduKCdtZXNzYWdlX2ZvcmdvdHB3ZW1haWwnLCR0aGlzLT5fbXNnKTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ21lc3NhZ2UnLCR0aGlzLT5fbXNnKTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ3Byb21wdF9jb2RlJywkdGhpcy0+X2NvZGVfcHJvbXB0KTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ3Byb21wdF9saW5rJywkdGhpcy0+X2xpbmtfcHJvbXB0KTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ2Rlc3RwYWdlJywkZGVzdHBhZ2UpOwogICAgICAgICR0cGwtPmFzc2lnbignZGF0YV9jb2RlJywkY29kZSk7CiAgICAgICAgJHRwbC0+YXNzaWduKCdzdWJqZWN0JywkdGhpcy0+X3N1YmplY3QpOwogICAgICAgICR0cGwtPmFzc2lnbignZGF0YV91cmwnLCR1cmwpOwogICAgICAgICRzdWJqZWN0ID0gJHRwbC0+ZmV0Y2goKTsKCiAgICAgICAgJG1haWxlciA9IG5ldyBcY21zX21haWxlcigpOwogICAgICAgICRtYWlsZXItPkFkZEFkZHJlc3MoJGVtYWlsKTsKICAgICAgICAkbWFpbGVyLT5TZXRCb2R5KCRib2R5KTsKICAgICAgICAkbWFpbGVyLT5TZXRTdWJqZWN0KCRzdWJqZWN0KTsKICAgICAgICAkbWFpbGVyLT5Jc0hUTUwoVFJVRSk7CiAgICAgICAgJG1haWxlci0+U2V0UHJpb3JpdHkoMSk7CiAgICAgICAgJG1haWxlci0+U2VuZCgpOwoKICAgICAgICBhdWRpdCgkdWlkLCR0aGlzLT5tYW1zLT5HZXROYW1lKCksJ1ZlcmlmaWNhdGlvbiBlbWFpbCBzZW50Jyk7CiAgICAgICAgJHRoaXMtPm1hbXMtPmFkZF9oaXN0b3J5KCR1aWQsJ2luaXRfdmVyaWZ5Jyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/class.feu_importer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbg0KIyAgQW4gYWRkLW9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdXNlZnVsIGZ1bmN0aW9ucw0KIyAgYW5kIGNvbW1vbmx5IHVzZWQgZ3VpIGNhcGFiaWxpdGllcyB0byBvdGhlciBtb2R1bGVzLg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQSBmb3JrIG9mOg0KIw0KIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwNCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykNCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojDQojIENNU01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA2IC0gMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbg0KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpDQojIFZpc2l0IHRoZSBDTVNNUyBIb21lcGFnZSBhdDogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCm5hbWVzcGFjZSBNQU1TOw0KDQoNCmNsYXNzIERiRXhjZXB0aW9uIGV4dGVuZHMgXEV4Y2VwdGlvbiB7fQ0KY2xhc3MgRGJEcm9wRXhjZXB0aW9uIGV4dGVuZHMgXEV4Y2VwdGlvbiB7fQ0KY2xhc3MgRGJSb2xsQmFja0V4Y2VwdGlvbiBleHRlbmRzIFxFeGNlcHRpb24ge30NCg0KY2xhc3MgZmV1X2ltcG9ydGVyDQp7DQogIHByaXZhdGUgc3RhdGljICRfaW5pdGlhbGl6ZWQgICA9IEZBTFNFOw0KICBwcml2YXRlIHN0YXRpYyAkX2ZldSAgICAgICAgICAgPSBGQUxTRTsNCiAgcHJpdmF0ZSBzdGF0aWMgJF9mZXVfaW5zdGFsbGVkID0gRkFMU0U7DQogIHByaXZhdGUgc3RhdGljICRfbW9kICAgICAgICAgICA9IEZBTFNFOw0KICBwcml2YXRlIHN0YXRpYyAkX2RiICAgICAgICAgICAgPSBGQUxTRTsNCiAgDQogIHByaXZhdGUgc3RhdGljICRfdGFibGVzICAgICAgICA9IFsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXJzJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dyb3VwcycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsb2dnZWRpbicsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiZWxvbmdzJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Ryb3Bkb3ducycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdncm91cHByb3BtYXAnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZGVmbicsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZW1wY29kZScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoaXN0b3J5Jw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsNCiAgDQogIHByaXZhdGUgc3RhdGljICRfaW5kZXhlc190YWJsZXMgPSBbDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnYmVsb25ncycsICdpZHhfYmVsb25ncyddLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ3VzZXJzJywgJ2lkeF91c2VybmFtZSddLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ3VzZXJzJywgJ2lkeF9leHBpcmVzJ10sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnaGlzdG9yeScsICdpZHhfcmVmZGF0ZSddLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ3Byb3BlcnRpZXMnLCAnaWR4X3Byb3B1c2VydGl0bGUnXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydwcm9wZXJ0aWVzJywgJ2lkeF9wcm9wdGl0bGUnXQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICBwcml2YXRlIHN0YXRpYyAkX2luZGV4ZXMgPSBbDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZHhfYmVsb25ncycgICAgICAgPT4gWydncm91cGlkJ10sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZHhfdXNlcm5hbWUnICAgICAgPT4gWyd1c2VybmFtZSddLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWR4X2V4cGlyZXMnICAgICAgID0+IFsnZXhwaXJlcyddLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWR4X3JlZmRhdGUnICAgICAgID0+IFsndXNlcmlkJywgJ3JlZmRhdGUnLCAnYWN0aW9uJ10sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZHhfcHJvcHVzZXJ0aXRsZScgPT4gWyd1c2VyaWQnLCAndGl0bGUnXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lkeF9wcm9wdGl0bGUnICAgICA9PiBbJ3RpdGxlJ10NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07DQogIA0KICBwcml2YXRlIHN0YXRpYyAkX3ByZWZzICAgICAgICAgPSBbDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWN1cmVfZmllbGRfY29sb3InLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VjdXJlX2ZpZWxkX21hcmtlcicsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsb2dpbl9hZnRlcl92ZXJpZnknLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2lnbmluX2J1dHRvbicsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbGxvd19kdXBsaWNhdGVfcmVtaW5kZXJzJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N1cHBvcnRfbG9zdHB3JywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3N3b3JkX3JlcXVpcmVkY2hhcnMnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWxsb3dfY2hhbmdldXNlcm5hbWUnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3VwcG9ydF9sb3N0dW4nLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlX3VzZXJzYWx0JywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4cGlyZWFnZV9tb250aHMnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm90aWZpY2F0aW9uX3N1YmplY3QnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWxsb3dlZF9pbWFnZV9leHRlbnNpb25zJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltYWdlX2Rlc3RpbmF0aW9uX3BhdGgnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWxsb3dfcmVwZWF0ZWRfbG9naW5zJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3N3b3JkZmxkbGVuZ3RoJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXJuYW1lZmxkbGVuZ3RoJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXJuYW1lX2lzX2VtYWlsJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FsbG93X2R1cGxpY2F0ZV9lbWFpbHMnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFnZWlkX2FmdGVydmVyaWZ5JywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhZ2VpZF9sb2dvdXQnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFnZWlkX2xvZ2luJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhZ2VpZF9jaGFuZ2VzZXR0aW5ncycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoaWRkZW5fZmllbGRfY29sb3InLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFnZWlkX2ZvcmdvdHBhc3N3ZCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoaWRkZW5fZmllbGRfbWFya2VyJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVkX2ZpZWxkX2NvbG9yJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVfb25lZ3JvdXAnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVmYXVsdF9ncm91cCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlZF9maWVsZF9tYXJrZXInLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29va2llbmFtZScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb29raWVfa2VlcGFsaXZlJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXJfc2Vzc2lvbl9leHBpcmVzJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21heF91c2VybmFtZWxlbmd0aCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaW5fdXNlcm5hbWVsZW5ndGgnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHdyZXF1aXJlZGNoYXJzJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuaGFuY2VkX3Bhc3N3b3JkJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pbl9wYXNzd29yZGxlbmd0aCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXhfcGFzc3dvcmRsZW5ndGgnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFnZWlkZm9yZ290cGFzc3dkJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhZ2VpZF9vbnZlcmlmeScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYWdlaWRfYWZ0ZXJjaGFuZ2VzZXR0aW5ncycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhdXRvX2NyZWF0ZV91bmtub3duJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dGhfbW9kdWxlJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsZWFyaGlzdG9yeV9hZ2UnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlX3JhbmRvbXVzZXJuYW1lJywNCiAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFtc19zcGVjaWZpY19wZXJtaXNzaW9ucycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JjZWxvZ291dF90aW1lcycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JjZWxvZ291dF9zZXNzaW9uYWdlJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4cGlyZXVzZXJzX2ludGVydmFsJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B3c2FsdCcNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07DQogIA0KICANCiAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gX2luaXRpYWxpemUoKQ0KICB7DQogICAgaWYoIXNlbGY6OiRfaW5pdGlhbGl6ZWQpDQogICAgew0KICAgICAgc2VsZjo6JF9mZXUgICAgICAgICAgID0gXGNtc191dGlsczo6Z2V0X21vZHVsZSgnRnJvbnRFbmRVc2VycycpOw0KICAgICAgc2VsZjo6JF9tb2QgICAgICAgICAgID0gXGNtc191dGlsczo6Z2V0X21vZHVsZSgnTUFNUycpOw0KICAgICAgc2VsZjo6JF9kYiAgICAgICAgICAgID0gXGNtc191dGlsczo6Z2V0X2RiKCk7DQogICAgICAkbW9kcyAgICAgICAgICAgICAgICAgPSBcTW9kdWxlT3BlcmF0aW9uczo6Z2V0X2luc3RhbmNlKCktPkdldEluc3RhbGxlZE1vZHVsZXMoKTsNCiAgICAgIHNlbGY6OiRfZmV1X2luc3RhbGxlZCA9IGluX2FycmF5KCdGcm9udEVuZFVzZXJzJywgJG1vZHMpOw0KICAgICAgc2VsZjo6JF9pbml0aWFsaXplZCAgID0gVFJVRTsNCiAgICB9DQogIH0NCiAgDQogIHN0YXRpYyBwcml2YXRlIGZ1bmN0aW9uIF9pc19mZXVfYWN0aXZlKCkNCiAgew0KICAgIHJldHVybiBcTW9kdWxlT3BlcmF0aW9uczo6Z2V0X2luc3RhbmNlKCktPklzTW9kdWxlQWN0aXZlKCdGcm9udEVuZFVzZXJzJyk7DQogIH0NCiAgDQogIHN0YXRpYyBwcml2YXRlIGZ1bmN0aW9uIF9pc19mZXVfaW5zdGFsbGVkKCkNCiAgew0KICAgIHNlbGY6Ol9pbml0aWFsaXplKCk7DQogICAgcmV0dXJuIHNlbGY6OiRfZmV1X2luc3RhbGxlZDsNCiAgfQ0KICANCiAgc3RhdGljIHByaXZhdGUgZnVuY3Rpb24gX2hhdmVfZmV1KCkNCiAgew0KICAgIHJldHVybiAoc2VsZjo6X2lzX2ZldV9pbnN0YWxsZWQoKSAmJiBzZWxmOjpfaXNfZmV1X2FjdGl2ZSgpICYmIGlzX29iamVjdChzZWxmOjokX2ZldSkgKTsNCiAgfQ0KICANCiAgLyoqDQogICAqIGJhY2tzIHVwIE1BTVMgdGFibGVzDQogICAqIEB0aHJvd3MgXE1BTVNcRGJFeGNlcHRpb24NCiAgICovDQogIHN0YXRpYyBwcml2YXRlIGZ1bmN0aW9uIF9Db3B5TWFtc1RhYmxlczJia3VwKCkNCiAgew0KICAgICRwcmVmaXhfZiA9IFxjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfJzsNCiAgICAkcHJlZml4X3QgPSBcY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX190bXBfXyc7DQogIA0KICAgIGZvcmVhY2goc2VsZjo6JF90YWJsZXMgYXMgJG9uZSkNCiAgICB7DQogICAgICAkZiA9ICRwcmVmaXhfZiAuICRvbmU7DQogICAgICAkdCA9ICRwcmVmaXhfdCAuICRvbmU7DQogICAgDQogICAgICBcYXVkaXQoODAwODUsICdmZXUybWFtcycsICdwcm9jZXNzaW5nIHRhYmxlICcgLiAkdCk7DQogICAgICANCiAgICAgICRxID0gJ0RST1AgVEFCTEUgSUYgRVhJU1RTICcgLiAkdDsNCiAgICAgICRyID0gc2VsZjo6JF9kYi0+RXhlY3V0ZSgkcSk7DQogICAgDQogICAgICBpZighJHIpIHRocm93IG5ldyBEYkV4Y2VwdGlvbigNCiAgICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpIC4gJyAtICcgLiBzZWxmOjokX2RiLT5FcnJvck1zZygpICwNCiAgICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpICk7DQogIA0KICAgICAgXGF1ZGl0KDgwMDg1LCAnZmV1Mm1hbXMnLCAnY3JlYXRpbmcgdGFibGUgJyAuICR0KTsNCiAgDQogICAgICAkcSA9ICdDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyAnIC4gJHQgLiAnIExJS0UgJyAuICRmOw0KICAgICAgJHIgPSBzZWxmOjokX2RiLT5FeGVjdXRlKCRxKTsNCiAgDQogICAgICBpZighJHIpIHRocm93IG5ldyBEYkV4Y2VwdGlvbigNCiAgICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpIC4gJyAtICcgLiBzZWxmOjokX2RiLT5FcnJvck1zZygpICwNCiAgICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpICk7DQogICAgICANCiAgICAgIFxhdWRpdCg4MDA4NSwgJ2ZldTJtYW1zJywgJ2NyZWF0ZWQgLCBjb3B5aW5nLi4uJyk7DQogICAgICANCiAgICAgICRxID0gJ0lOU0VSVCAnIC4gJHQgLiAnIFNFTEVDVCAqIEZST00gJyAuICRmOw0KICAgICAgJHIgPSBzZWxmOjokX2RiLT5FeGVjdXRlKCRxKTsNCiAgDQogICAgICBpZighJHIpIHRocm93IG5ldyBEYkV4Y2VwdGlvbigNCiAgICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpIC4gJyAtICcgLiBzZWxmOjokX2RiLT5FcnJvck1zZygpICwNCiAgICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpICk7DQogIA0KICAgICAgXGF1ZGl0KDgwMDg1LCAnZmV1Mm1hbXMnLCAnY29weWVkIScpOw0KICAgIH0NCiAgfQ0KICANCiAgLyoqDQogICAqIGNvcGllcyB0YWJsZXMgZnJvbSBGRVUgMiBNQU1TDQogICAqIEB0aHJvd3MgXE1BTVNcRGJFeGNlcHRpb24NCiAgICovDQogIHN0YXRpYyBwcml2YXRlIGZ1bmN0aW9uIF9Db3B5RmV1VGFibGVzMk1hbXMoKQ0KICB7DQogICAgJHByZWZpeF9mID0gXGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfZmV1c2Vyc18nOw0KICAgICRwcmVmaXhfdCA9IFxjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfJzsNCiAgDQogICAgJHEgPSAnU0VUIGZvcmVpZ25fa2V5X2NoZWNrcyA9IDAnOw0KICAgICRyID0gc2VsZjo6JF9kYi0+RXhlY3V0ZSgkcSk7DQogIA0KICAgIGlmKCEkcikgdGhyb3cgbmV3IERiRXhjZXB0aW9uKA0KICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpIC4gJyAtICcgLiBzZWxmOjokX2RiLT5FcnJvck1zZygpICwNCiAgICAgIHNlbGY6OiRfZGItPkVycm9yTm8oKSApOw0KICAgIA0KICAgIGZvcmVhY2goc2VsZjo6JF90YWJsZXMgYXMgJG9uZSkNCiAgICB7DQogICAgICAkZiA9ICRwcmVmaXhfZiAuICRvbmU7DQogICAgICAkdCA9ICRwcmVmaXhfdCAuICRvbmU7DQogICAgICANCiAgICAgICRxID0gJ0RST1AgVEFCTEUgSUYgRVhJU1RTICcgLiAkdDsNCiAgICAgICRyID0gc2VsZjo6JF9kYi0+RXhlY3V0ZSgkcSk7DQogICAgICANCiAgICAgIGlmKCEkcikgdGhyb3cgbmV3IERiRXhjZXB0aW9uKA0KICAgICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgLiAnIC0gJyAuIHNlbGY6OiRfZGItPkVycm9yTXNnKCkgLA0KICAgICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgKTsNCiAgDQogICAgICAkcSA9ICdDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyAnIC4gJHQgLiAnIExJS0UgJyAuICRmOw0KICAgICAgJHIgPSBzZWxmOjokX2RiLT5FeGVjdXRlKCRxKTsNCiAgDQogICAgICBpZighJHIpIHRocm93IG5ldyBEYkV4Y2VwdGlvbigNCiAgICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpIC4gJyAtICcgLiBzZWxmOjokX2RiLT5FcnJvck1zZygpICwNCiAgICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpICk7DQogIA0KICAgICAgJHEgPSAnSU5TRVJUICcgLiAkdCAuICcgU0VMRUNUICogRlJPTSAnIC4gJGY7DQogICAgICAkciA9IHNlbGY6OiRfZGItPkV4ZWN1dGUoJHEpOw0KICANCiAgICAgIGlmKCEkcikgdGhyb3cgbmV3IERiRXhjZXB0aW9uKA0KICAgICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgLiAnIC0gJyAuIHNlbGY6OiRfZGItPkVycm9yTXNnKCkgLA0KICAgICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgKTsNCiAgICB9DQogICAgJHEgPSAnU0VUIGZvcmVpZ25fa2V5X2NoZWNrcyA9IDEnOw0KICAgICRyID0gc2VsZjo6JF9kYi0+RXhlY3V0ZSgkcSk7DQogIA0KICAgIGlmKCEkcikgdGhyb3cgbmV3IERiRXhjZXB0aW9uKA0KICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpIC4gJyAtICcgLiBzZWxmOjokX2RiLT5FcnJvck1zZygpICwNCiAgICAgIHNlbGY6OiRfZGItPkVycm9yTm8oKSApOw0KICAgIA0KICB9DQogIA0KICAvKioNCiAgICogUm9sbHMgYmFjayBpLmUuIGdldHMgb3JpZ2luYWwgdGFibGVzIGZyb20gYmFja3VwDQogICAqIEB0aHJvd3MgXE1BTVNcRGJSb2xsQmFja0V4Y2VwdGlvbg0KICAgKi8NCiAgc3RhdGljIHByaXZhdGUgZnVuY3Rpb24gX1JvbGxCYWNrKCkNCiAgew0KICAgICRwcmVmaXhfZiA9IFxjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfX3RtcF9fJzsNCiAgICAkcHJlZml4X3QgPSBcY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zXyc7DQogIA0KICAgICRxID0gJ1NFVCBmb3JlaWduX2tleV9jaGVja3MgPSAwJzsNCiAgICAkciA9IHNlbGY6OiRfZGItPkV4ZWN1dGUoJHEpOw0KICANCiAgICBpZighJHIpIHRocm93IG5ldyBEYlJvbGxCYWNrRXhjZXB0aW9uKA0KICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpIC4gJyAtICcgLiBzZWxmOjokX2RiLT5FcnJvck1zZygpICwNCiAgICAgIHNlbGY6OiRfZGItPkVycm9yTm8oKSApOw0KICAgIA0KICAgIGZvcmVhY2goc2VsZjo6JF90YWJsZXMgYXMgJG9uZSkNCiAgICB7ICAgICAgJGYgPSAkcHJlZml4X2YgLiAkb25lOw0KICAgICAgDQogICAgICAkdCA9ICRwcmVmaXhfdCAuICRvbmU7DQogICAgICANCiAgICAgICRxID0gJ0RST1AgVEFCTEUgSUYgRVhJU1RTICcgLiAkdDsNCiAgICAgICRyID0gc2VsZjo6JF9kYi0+RXhlY3V0ZSgkcSk7DQogICAgICANCiAgICAgIGlmKCEkcikgdGhyb3cgbmV3IERiUm9sbEJhY2tFeGNlcHRpb24oDQogICAgICAgIHNlbGY6OiRfZGItPkVycm9yTm8oKSAuICcgLSAnIC4gc2VsZjo6JF9kYi0+RXJyb3JNc2coKSAsDQogICAgICAgIHNlbGY6OiRfZGItPkVycm9yTm8oKSApOw0KICANCiAgICAgICRxID0gJ0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTICcgLiAkdCAuICcgTElLRSAnIC4gJGY7DQogICAgICAkciA9IHNlbGY6OiRfZGItPkV4ZWN1dGUoJHEpOw0KICANCiAgICAgIGlmKCEkcikgdGhyb3cgbmV3IERiUm9sbEJhY2tFeGNlcHRpb24oDQogICAgICAgIHNlbGY6OiRfZGItPkVycm9yTm8oKSAuICcgLSAnIC4gc2VsZjo6JF9kYi0+RXJyb3JNc2coKSAsDQogICAgICAgIHNlbGY6OiRfZGItPkVycm9yTm8oKSApOw0KICANCiAgICAgICRxID0gJ0lOU0VSVCAnIC4gJHQgLiAnIFNFTEVDVCAqIEZST00gJyAuICRmOw0KICAgICAgJHIgPSBzZWxmOjokX2RiLT5FeGVjdXRlKCRxKTsNCiAgDQogICAgICBpZighJHIpIHRocm93IG5ldyBEYlJvbGxCYWNrRXhjZXB0aW9uKA0KICAgICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgLiAnIC0gJyAuIHNlbGY6OiRfZGItPkVycm9yTXNnKCkgLA0KICAgICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgKTsNCiAgICB9DQogIA0KICAgICRxID0gJ1NFVCBmb3JlaWduX2tleV9jaGVja3MgPSAxJzsNCiAgICAkciA9IHNlbGY6OiRfZGItPkV4ZWN1dGUoJHEpOw0KICANCiAgICBpZighJHIpIHRocm93IG5ldyBEYlJvbGxCYWNrRXhjZXB0aW9uKA0KICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpIC4gJyAtICcgLiBzZWxmOjokX2RiLT5FcnJvck1zZygpICwNCiAgICAgIHNlbGY6OiRfZGItPkVycm9yTm8oKSApOw0KICB9DQogIA0KICAvKioNCiAgICogZHJvcHMgdGVtcG9yYXJ5IGJhY2t1cCB0YWJsZXMNCiAgICogQHRocm93cyBcTUFNU1xEYkRyb3BFeGNlcHRpb24NCiAgICovDQogIHN0YXRpYyBwcml2YXRlIGZ1bmN0aW9uIF9Ecm9wVGVtcHMoKQ0KICB7DQogICAgJHByZWZpeCA9IFxjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfX3RtcF9fJzsNCiAgICANCiAgICAjIHRyeSByZXZlcnNpbmcgdGhlIG9yZGVyIHRvIHByZXZlbnQgZm9yZWlnbiBrZXkgY29uc3RyYWludHMgZmFpbHMNCiAgICAjICR0YWJsZXMgPSBhcnJheV9yZXZlcnNlKHNlbGY6OiRfdGFibGVzKTsNCiAgICANCiAgICAkcSA9ICdTRVQgZm9yZWlnbl9rZXlfY2hlY2tzID0gMCc7DQogICAgJHIgPSBzZWxmOjokX2RiLT5FeGVjdXRlKCRxKTsNCiAgDQogICAgaWYoISRyKSB0aHJvdyBuZXcgRGJEcm9wRXhjZXB0aW9uKA0KICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpIC4gJyAtICcgLiBzZWxmOjokX2RiLT5FcnJvck1zZygpICwNCiAgICAgIHNlbGY6OiRfZGItPkVycm9yTm8oKSApOw0KICAgIA0KICAgIGZvcmVhY2goc2VsZjo6JF90YWJsZXMgYXMgJG9uZSkNCiAgICB7DQogICAgICAkdCA9ICRwcmVmaXggLiAkb25lOw0KICANCiAgICAgIFxhdWRpdCg4MDA4NSwgJ2ZldTJtYW1zJywgJ2Ryb3BwaW5nIHRhYmxlICcgLiAkdCk7DQogICAgICANCiAgICAgICRxID0gJ0RST1AgVEFCTEUgSUYgRVhJU1RTICcgLiAkdDsNCiAgICAgICRyID0gc2VsZjo6JF9kYi0+RXhlY3V0ZSgkcSk7DQogICAgICANCiAgICAgIGlmKCEkcikgdGhyb3cgbmV3IERiRHJvcEV4Y2VwdGlvbigNCiAgICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpIC4gJyAtICcgLiBzZWxmOjokX2RiLT5FcnJvck1zZygpICwNCiAgICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpICk7DQogIA0KICAgICAgXGF1ZGl0KDgwMDg1LCAnZmV1Mm1hbXMnLCAnZHJvcHBlZCEnKTsNCiAgICB9DQogIA0KICAgICRxID0gJ1NFVCBmb3JlaWduX2tleV9jaGVja3MgPSAxJzsNCiAgICAkciA9IHNlbGY6OiRfZGItPkV4ZWN1dGUoJHEpOw0KICANCiAgICBpZighJHIpIHRocm93IG5ldyBEYkRyb3BFeGNlcHRpb24oDQogICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgLiAnIC0gJyAuIHNlbGY6OiRfZGItPkVycm9yTXNnKCkgLA0KICAgICAgc2VsZjo6JF9kYi0+RXJyb3JObygpICk7DQogIH0NCiAgDQogIC8qKg0KICAgKiBAdGhyb3dzIFxNQU1TXERiRXhjZXB0aW9uDQogICAqLw0KICBzdGF0aWMgcHJpdmF0ZSBmdW5jdGlvbiBfUmVuYW1lSW5kZXhlcygpDQogIHsNCiAgICAkcHJlZml4ID0gXGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc18nOw0KICAgIA0KICAgIGZvcmVhY2goc2VsZjo6JF9pbmRleGVzX3RhYmxlcyBhcyAkb25lKQ0KICAgIHsNCiAgICAgIGxpc3QoJHRhYmxlLCAkaW5kZXhfbmFtZSkgPSAkb25lOw0KICAgICAgJHRhYmxlbmFtZSA9ICRwcmVmaXggLiAkdGFibGU7DQogICAgICAkZHJvcCAgICAgID0gJ2Ntc19mZXVfJyAuICRpbmRleF9uYW1lOw0KICAgICAgJGFkZCAgICAgICA9ICdjbXNfbWFtc18nIC4gJGluZGV4X25hbWU7DQogICAgICAkZmllbGRzICAgID0gaW1wbG9kZSgnLCcsIHNlbGY6OiRfaW5kZXhlc1skaW5kZXhfbmFtZV0pOw0KICAgICAgDQogICAgICAkcSA9ICdBTFRFUiBUQUJMRSAnIC4gJHRhYmxlbmFtZQ0KICAgICAgICAgICAuICcgRFJPUCBJTkRFWCAnIC4gJGRyb3ANCiAgICAgICAgICAgLiAnLCBBREQgSU5ERVggJyAuICRhZGQgLiAnICgnIC4gJGZpZWxkcyAuICcpIFVTSU5HIEJUUkVFJzsNCiAgDQogICAgICAkciA9IHNlbGY6OiRfZGItPkV4ZWN1dGUoJHEpOw0KICANCiAgICAgIGlmKCEkcikgdGhyb3cgbmV3IERiRXhjZXB0aW9uKA0KICAgICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgLiAnIC0gJyAuIHNlbGY6OiRfZGItPkVycm9yTXNnKCkgLA0KICAgICAgICBzZWxmOjokX2RiLT5FcnJvck5vKCkgKTsNCiAgICB9DQogICAgDQogIH0NCiAgDQoNCiAgc3RhdGljIHByaXZhdGUgZnVuY3Rpb24gX0NvcHlQcmVmZXJlbmNlcygpDQogIHsNCiAgICBmb3JlYWNoKHNlbGY6OiRfcHJlZnMgYXMgJG9uZSkNCiAgICB7DQogICAgICBzZWxmOjokX21vZC0+U2V0UHJlZmVyZW5jZSggJG9uZSwgc2VsZjo6JF9mZXUtPkdldFByZWZlcmVuY2UoJG9uZSkgKTsNCiAgICB9DQogICAgDQogICAgIyBvbmx5IGV4Y2VwdGlvbiBmb3VuZCBpcyB0aGlzIG9uZQ0KICANCiAgICBzZWxmOjokX21vZC0+U2V0UHJlZmVyZW5jZSggJ21hbXNfc3BlY2lmaWNfcGVybWlzc2lvbnMnLCBzZWxmOjokX2ZldS0+R2V0UHJlZmVyZW5jZSgnZmV1X3NwZWNpZmljX3Blcm1pc3Npb25zJykgKTsNCiAgfQ0KICANCiAgLyoqDQogICAqIHB1YmxpYyBtZXRob2RzDQogICAqLw0KICANCiAgc3RhdGljIGZ1bmN0aW9uIHJ1bigpDQogIHsNCiAgICBzZWxmOjpfaW5pdGlhbGl6ZSgpOw0KICAgICRjb2RlID0gMDsNCiAgICAkbXNnID0gJ09LJzsNCiAgICAkZXJyID0gWyRjb2RlLCAkbXNnXTsNCiAgICAkZmFpbCA9IEZBTFNFOw0KICAgIA0KICAgIGlmKCAhc2VsZjo6X2lzX2ZldV9pbnN0YWxsZWQoKSApDQogICAgew0KICAgICAgJGNvZGUgPSAxOw0KICAgICAgJG1zZyA9ICdub19mZXVfaW5zdGFsbCc7DQogICAgICAkZXJyID0gWyRjb2RlLCAkbXNnXTsNCiAgICAgIHJldHVybiBbRkFMU0UsICRlcnJdOw0KICAgIH0NCiAgICANCiAgICANCiAgICAjIGJhY2t1cCBNQU1TIHRhYmxlcw0KICAgIHRyeQ0KICAgIHsNCiAgICAgIFxhdWRpdCg4ODAwODUsICdmZXUybWFtcycsICdTdGFydCBtYWtpbmcgYmFja3VwcycpOw0KICAgICAgc2VsZjo6X0NvcHlNYW1zVGFibGVzMmJrdXAoKTsNCiAgICB9DQogICAgY2F0Y2goIERiRXhjZXB0aW9uICRlKQ0KICAgIHsNCiAgICAgICRjb2RlID0gJGUtPmdldENvZGUoKTsNCiAgICAgICRtc2cgPSAkZS0+Z2V0TWVzc2FnZSgpOw0KICAgICAgDQogICAgICB0cnkNCiAgICAgIHsNCiAgICAgICAgIyBzb21ldGhpbmcgd2VudCB3cm9uZyByZW1vdmUgdGhlIGJhY2t1cHMgYW55d2F5DQogICAgICAgIFxhdWRpdCg4ODAwODUsICdmZXUybWFtcycsICdTb21ldGhpbmcgd2VudCB3cm9uZyBjcmVhdGluZyBiYWNrdXBzIG9mIE1BTVMgdGFibGVzLi4uIGdvaW5nIHRvIGRyb3AgdGVtcCB0YWJsZXMhJyk7DQogICAgICAgIHNlbGY6Ol9Ecm9wVGVtcHMoKTsNCiAgICAgICAgXGF1ZGl0KDg4MDA4NSwgJ2ZldTJtYW1zJywgJ0JhY2t1cCB0YWJsZXMgZHJvcHBlZCBzdWNjZXNzZnVsbHkhJyk7DQogICAgICB9DQogICAgICBjYXRjaCggRGJEcm9wRXhjZXB0aW9uICRlKQ0KICAgICAgew0KICAgICAgICAkY29kZSA9ICRlLT5nZXRDb2RlKCk7DQogICAgICAgICRtc2cgPSAkZS0+Z2V0TWVzc2FnZSgpOw0KICAgICAgICBcYXVkaXQoODgwMDg1LCAnZmV1Mm1hbXMnLCAnRXJyb3IgZHJvcHBpbmcgTUFNUyB0ZW1wIHRhYmxlcy4uLicpOw0KICAgICAgfQ0KICAgICAgZmluYWxseQ0KICAgICAgew0KICAgICAgICBcYXVkaXQoODgwMDg1LCAnZmV1Mm1hbXMnLCAnQ29weWluZyB0YWJsZXMgZnJvbSBGRVUgZmFpbGVkISBJbXBvcnQgYWJvcnRlZCBhbmQgc29tZSBjbGVhbmluZyB1cCB3YXMgYXR0ZW1wdGVkLicpOw0KICAgICAgICAjIHdoZXRoZXIgYmFja3VwIGZhaWxlZCBvciBib3RoIGJhY2t1cCBhbmQgZHJvcCB0ZW1wcw0KICAgICAgICAjIHdlIHJldHVybiB0aGUgZXJyb3IgY29kZSAtLSB0aGVyZSBpcyBvbmx5IHNvIG11Y2ggd2UgY2FuIGRvDQogICAgICAgICRlcnIgPSBbJGNvZGUsICRtc2ddOw0KICAgICAgICByZXR1cm4gW0ZBTFNFLCAkZXJyXTsNCiAgICAgIH0NCiAgICB9DQogICAgDQogICAgIyBjb3B5IEZFVSAyIE1BTVMNCiAgICB0cnkNCiAgICB7DQogICAgICBcYXVkaXQoODgwMDg1LCAnZmV1Mm1hbXMnLCAnU3RhcnQgY29weWluZyB0YWJsZXMgZnJvbSBGRVUnKTsNCiAgICAgIHNlbGY6Ol9Db3B5RmV1VGFibGVzMk1hbXMoKTsNCiAgICB9DQogICAgY2F0Y2goIERiRXhjZXB0aW9uICRlKQ0KICAgIHsNCiAgICAgICRjb2RlID0gJGUtPmdldENvZGUoKTsNCiAgICAgICRtc2cgPSAkZS0+Z2V0TWVzc2FnZSgpOw0KICAgICAgDQogICAgICB0cnkNCiAgICAgIHsNCiAgICAgICAgIyBzb21ldGhpbmcgd2VudCB3cm9uZw0KICAgICAgICBcYXVkaXQoODgwMDg1LCAnZmV1Mm1hbXMnLCAnU29tZXRoaW5nIHdlbnQgd3JvbmcgY29weWluZyB0YWJsZXMgZnJvbSBGRVUuLi4gZ29pbmcgdG8gcm9sbGJhY2shJyk7DQogICAgICAgICMgcm9sbCBiYWNrDQogICAgICAgIHNlbGY6Ol9Sb2xsQmFjaygpOw0KICAgICAgICAjIHJlbW92ZSB0aGUgYmFja3VwcyBhbnl3YXkNCiAgICAgICAgXGF1ZGl0KDg4MDA4NSwgJ2ZldTJtYW1zJywgJ1JvbGxlZCBiYWNrLi4uIHJlbW92aW5nIHRlbXAgYmFja3VwIHRhYmxlcycpOw0KICAgICAgICBzZWxmOjpfRHJvcFRlbXBzKCk7DQogICAgICAgIFxhdWRpdCg4ODAwODUsICdmZXUybWFtcycsICdCYWNrdXAgdGFibGVzIGRyb3BwZWQgc3VjY2Vzc2Z1bGx5IScpOw0KICAgICAgfQ0KICAgICAgY2F0Y2goIERiUm9sbEJhY2tFeGNlcHRpb24gJGUpDQogICAgICB7DQogICAgICAgICRjb2RlID0gJGUtPmdldENvZGUoKTsNCiAgICAgICAgJG1zZyA9ICRlLT5nZXRNZXNzYWdlKCk7DQogICAgICAgIFxhdWRpdCg4ODAwODUsICdmZXUybWFtcycsICdFcnJvciByb2xsaW5nIGJhY2suLi4nKTsNCiAgICAgIH0NCiAgICAgIGNhdGNoKCBEYkRyb3BFeGNlcHRpb24gJGUpDQogICAgICB7DQogICAgICAgICRjb2RlID0gJGUtPmdldENvZGUoKTsNCiAgICAgICAgJG1zZyA9ICRlLT5nZXRNZXNzYWdlKCk7DQogICAgICAgIFxhdWRpdCg4ODAwODUsICdmZXUybWFtcycsICdFcnJvciBkcm9wcGluZyBNQU1TIHRlbXAgdGFibGVzLi4uJyk7DQogICAgICB9DQogICAgICBmaW5hbGx5DQogICAgICB7DQogICAgICAgICMgd2hldGhlciBiYWNrdXAgZmFpbGVkIG9yIGJvdGggYmFja3VwIGFuZCBkcm9wIHRlbXBzDQogICAgICAgICMgd2UgcmV0dXJuIHRoZSBlcnJvciBjb2RlIC0tIHRoZXJlIGlzIG9ubHkgc28gbXVjaCB3ZSBjYW4gZG8NCiAgICAgICAgXGF1ZGl0KDg4MDA4NSwgJ2ZldTJtYW1zJywgJ0NvcHlpbmcgdGFibGVzIGZyb20gRkVVIGZhaWxlZCEgSW1wb3J0IGFib3J0ZWQgYW5kIHNvbWUgY2xlYW5pbmcgdXAgd2FzIGF0dGVtcHRlZC4nKTsNCiAgICAgICAgJGVyciA9IFskY29kZSwgJG1zZ107DQogICAgICAgIHJldHVybiBbRkFMU0UsICRlcnJdOw0KICAgICAgfQ0KICAgIH0NCiAgICANCiAgICB0cnkNCiAgICB7DQogICAgICBzZWxmOjpfRHJvcFRlbXBzKCk7DQogICAgICBcYXVkaXQoODgwMDg1LCAnZmV1Mm1hbXMnLCAnQmFja3VwIHRhYmxlcyBkcm9wcGVkIHN1Y2Nlc3NmdWxseSEnKTsNCiAgICB9DQogICAgY2F0Y2goIERiRHJvcEV4Y2VwdGlvbiAkZSkNCiAgICB7DQogICAgICAkY29kZSA9ICRlLT5nZXRDb2RlKCk7DQogICAgICAkbXNnID0gJGUtPmdldE1lc3NhZ2UoKTsNCiAgICAgICRmYWlsID0gVFJVRTsNCiAgICAgIFxhdWRpdCg4ODAwODUsICdmZXUybWFtcycsICdFcnJvciBkcm9wcGluZyBNQU1TIHRlbXAgdGFibGVzLi4uJyk7DQogICAgfQ0KICAgIGZpbmFsbHkNCiAgICB7DQogICAgICBpZigkZmFpbCkNCiAgICAgIHsNCiAgICAgICAgIyB3aGV0aGVyIGJhY2t1cCBmYWlsZWQgb3IgYm90aCBiYWNrdXAgYW5kIGRyb3AgdGVtcHMNCiAgICAgICAgIyB3ZSByZXR1cm4gdGhlIGVycm9yIGNvZGUgLS0gdGhlcmUgaXMgb25seSBzbyBtdWNoIHdlIGNhbiBkbw0KICAgICAgICBcYXVkaXQoODgwMDg1LCAnZmV1Mm1hbXMnLCAnQ29weWluZyB0YWJsZXMgZnJvbSBGRVUgc2VlbXMgdG8gaGF2ZSB3b3JrZWQhQnV0IGFwcGFyZW50bHkgdGhlcmUgYXJlIHNvbWUgbGVmdG92ZXIgdGVtcCB0YWJsZXMuJyk7DQogICAgICAgICRlcnIgPSBbJGNvZGUsICRtc2ddOw0KICAgICAgICByZXR1cm4gW0ZBTFNFLCAkZXJyXTsNCiAgICAgIH0NCiAgICB9DQogICAgDQogICAgdHJ5DQogICAgew0KICAgICAgc2VsZjo6X1JlbmFtZUluZGV4ZXMoKTsNCiAgICB9DQogICAgY2F0Y2goRGJFeGNlcHRpb24gJGUpDQogICAgew0KICAgICAgJGNvZGUgPSAkZS0+Z2V0Q29kZSgpOw0KICAgICAgJG1zZyA9ICRlLT5nZXRNZXNzYWdlKCk7DQogICAgICAkZXJyID0gWyRjb2RlLCAkbXNnXTsNCiAgICAgIC8vcmV0dXJuIFtGQUxTRSwgJGVycl07IGl0IGRvZXNuJ3Qgd2FycmFudCBhIHJvbGxiYWNrDQogICAgfQ0KICAgIA0KICAgIC8vICAgIHRyeQ0KICAgIC8vICAgIHsNCiAgICAvLyAgICAgIHNlbGY6Ol9Db3B5VGVtcGxhdGVzKCk7DQogICAgLy8gICAgfQ0KICAgIC8vICAgIGNhdGNoKFxFeGNlcHRpb24gJGUpDQogICAgLy8gICAgew0KICAgIC8vICAgICAgJGVyciA9IFskZS0+Z2V0Q29kZSgpLCAkZS0+Z2V0TWVzc2FnZSgpXTsNCiAgICAvLyAgICAgIHJldHVybiBbRkFMU0UsICRlcnJdOw0KICAgIC8vICAgIH0NCiAgICANCiAgICB0cnkNCiAgICB7DQogICAgICBzZWxmOjpfQ29weVByZWZlcmVuY2VzKCk7DQogICAgfQ0KICAgIGNhdGNoKFxFeGNlcHRpb24gJGUpDQogICAgew0KICAgICAgJGNvZGUgPSAkZS0+Z2V0Q29kZSgpOw0KICAgICAgJG1zZyA9ICRlLT5nZXRNZXNzYWdlKCk7DQogICAgICAkZXJyID0gWyRjb2RlLCAkbXNnXTsNCiAgICAgIHJldHVybiBbRkFMU0UsICRlcnJdOw0KICAgIH0NCiAgICANCiAgICByZXR1cm4gW1RSVUUsICRlcnJdOw0KICB9DQogIA0KICANCn0NCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/class.MAMSForcedLogoutTask.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKY2xhc3MgTUFNU0ZvcmNlZExvZ291dFRhc2sgaW1wbGVtZW50cyBDbXNSZWd1bGFyVGFzawp7CiAgcHVibGljIGZ1bmN0aW9uIGdldF9uYW1lKCkgIHsgcmV0dXJuIF9fQ0xBU1NfXzsgfQogIAogIAogIHB1YmxpYyBmdW5jdGlvbiBnZXRfZGVzY3JpcHRpb24oKQogIHsKICAgIHJldHVybiBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01BTVMnKS0+TGFuZygnZm9yY2VkbG9nb3V0dGFza19kZXNjJyk7CiAgfQogIAogIAogIHB1YmxpYyBmdW5jdGlvbiB0ZXN0KCR0aW1lID0gMCkKICB7CiAgICBpZighJHRpbWUpIHsgJHRpbWUgPSB0aW1lKCk7IH0KICAgIAogICAgJG1vZCAgICAgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01BTVMnKTsKICAgICRsYXN0cnVuID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnZm9yY2Vsb2dvdXRfbGFzdHJ1bicpOwogICAgCiAgICAkdGltZXMgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdmb3JjZWxvZ291dF90aW1lcycpOyAvLyBsaWtlOiAxODozMCwyMDozMCwwODowMCwgZXRjLgogICAgCiAgICBpZignJyA9PSAkdGltZXMpIHsgcmV0dXJuIEZBTFNFOyB9CiAgICAKICAgICR0bXAgICA9IFtdOwogICAgJHRpbWVzID0gZXhwbG9kZSgnLCcsICR0aW1lcyk7CiAgICAKICAgIGZvcmVhY2goJHRpbWVzIGFzICRpa2V5ID0+ICRpVmFsdWUpCiAgICB7CiAgICAgICR0X2ggPSAnJzsKICAgICAgJHRfbSA9ICcnOwogICAgICAKICAgICAgLy9pZihzdGFydHN3aXRoKCR0aW1lc1skaV0sICcqJykpCiAgICAgIGlmKHN0YXJ0c3dpdGgoJGlWYWx1ZSwgJyonKSkKICAgICAgewogICAgICAgIFskanVuaywgJG1pbnV0ZXNdID0gZXhwbG9kZSgnLycsICRpVmFsdWUsIDIpOwogICAgICAgICRtaW51dGVzID0gKGludCkkbWludXRlczsKICAgICAgICAkbWludXRlcyA9IG1heCgkbWludXRlcywgMSk7ICAgLy8gbWluaW11bSAyIG1pbnV0ZXMKICAgICAgICAkbWludXRlcyA9IG1pbigkbWludXRlcywgMTgwKTsgLy8gbWF4aW11bSAxODAgbWludXRlcy4KICAgICAgICAKICAgICAgICBmb3IoJGkgPSAwOyAkaSA8IDYwICogMjQ7ICRpICs9ICRtaW51dGVzKQogICAgICAgIHsKICAgICAgICAgICR0X2ggICA9IChpbnQpKCRpIC8gNjApOwogICAgICAgICAgJHRfbSAgID0gKGludCkoJGkgJSA2MCk7CiAgICAgICAgICAkdG1wW10gPSBta3RpbWUoKGludCkkdF9oLCAoaW50KSR0X20sIDAsIChpbnQpZGF0ZSgnbScsICR0aW1lKSwgKGludClkYXRlKCdkJywgJHRpbWUpLCAoaW50KWRhdGUoJ1knLCAkdGltZSkpOwogICAgICAgIH0KICAgICAgfQogICAgICBlbHNlCiAgICAgIHsKICAgICAgICBbJHRfaCwgJHRfbV0gPSBleHBsb2RlKCc6JywgdHJpbSgkaVZhbHVlKSwgMik7CiAgICAgIH0KICAgIH0KICAgIAogICAgcnNvcnQoJHRtcCk7CiAgICAKICAgICRmaSA9ICcnOwogICAgJGZ0ID0gJyc7CiAgICAvLyBmaW5kIHRoZSBjbG9zZXN0IGVudHJ5LgogICAgCiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgZm9yZWFjaCgkdG1wIGFzICRpID0+ICRpVmFsdWUpCiAgICB7CiAgICAgIGlmKCR0aW1lID4gJGlWYWx1ZSkgeyBicmVhazsgfSAvLyBub3RoaW5nIHRvIGRvLi4KICAgICAgCiAgICAgIAogICAgICAkZHQgPSAkaVZhbHVlIC0gJHRpbWU7CiAgICAgIGlmKCcnID09ICRmdCB8fCAkZHQgPCAoJGZ0IC0gJHRpbWUpKQogICAgICB7CiAgICAgICAgJGZpID0gJGk7CiAgICAgICAgJGZ0ID0gJGlWYWx1ZTsKICAgICAgfQogICAgICAKICAgIH0KICAgIGlmKCcnICE9ICRmdCAmJiAnJyAhPSAkZmkgJiYgKCR0aW1lIC0gJGZ0KSA8IDYwKQogICAgewogICAgICAvLyB3ZSBmb3VuZCBzb21ldGhpbmcgdGhhdCBjYW4gZXhlY3V0ZS4KICAgICAgJF9TRVNTSU9OW2dldF9jbGFzcygpIC4gJ19ydW50aW1lJ10gPSAkdG1wWyRpXTsKICAgICAgCiAgICAgIHJldHVybiBUUlVFOwogICAgfQogICAgCiAgICByZXR1cm4gRkFMU0U7CiAgfQogIAogIAogIHB1YmxpYyBmdW5jdGlvbiBleGVjdXRlKCR0aW1lID0gMCkKICB7CiAgICBpZighJHRpbWUpIHsgJHRpbWUgPSB0aW1lKCk7IH0KICAgIAogICAgJGluZGV4ID0gX19DTEFTU19fIC4gJ19ydW50aW1lJzsKICAgIAogICAgaWYoIWlzc2V0KCRfU0VTU0lPTlskaW5kZXhdKSkgeyByZXR1cm4gRkFMU0U7IH0KICAgIAogICAgJHRoZV90aW1lID0gJF9TRVNTSU9OWyRpbmRleF07CiAgICB1bnNldCgkX1NFU1NJT05bJGluZGV4XSk7CiAgICAKICAgIC8vIG5vdyBmaW5kIGFsbCB0aGUgdWlkJ3MgdGhhdCBhcmUgbG9nZ2VkIGluIGJ1dCBub3QgYWN0aXZlIHNpbmNlICR0aGVfdGltZQogICAgJG1hbXMgICAgICAgID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNQU1TJyk7CiAgICAkZm9yZ2l2ZW5lc3MgPSAoaW50KSRtYW1zLT5HZXRQcmVmZXJlbmNlKCdmb3JjZWxvZ291dF9zZXNzaW9uYWdlJyk7CiAgICAkZm9yZ2l2ZW5lc3MgPSBtYXgoMCwgJGZvcmdpdmVuZXNzKSAqIDYwOwogICAgJHRoZV90aW1lICAgIC09ICRmb3JnaXZlbmVzczsKICAgICR1aWRzICAgICAgICA9ICRtYW1zLT5HZXRMb2dnZWRJblVzZXJzKCR0aGVfdGltZSk7CiAgICAKICAgIGlmKCFpc19hcnJheSgkdWlkcykgfHwgMCA9PSBjb3VudCgkdWlkcykpCiAgICB7CiAgICAgIHJldHVybiBUUlVFOyAvLyBub3RoaW5nIHRvIGRvLgogICAgfQogICAgCiAgICBmb3JlYWNoKCR1aWRzIGFzICRpID0+ICRpVmFsdWUpCiAgICB7CiAgICAgICRtYW1zLT5Mb2dvdXQoJHVpZHNbJGldLCAnZm9yY2VkIGxvZ291dCcpOwogICAgfQogICAgCiAgICAkbWFtcy0+QXVkaXQoCiAgICAgICcnLCAkbWFtcy0+R2V0TmFtZSgpLCAnRm9yY2VkIGxvZ291dCBvZiAnIC4gY291bnQoJHVpZHMpIC4gJyB1c2VycyBhdCAnIC4gc3RyZnRpbWUoJyVIOiVNJywgJHRoZV90aW1lKQogICAgKTsKICAgIAogICAgcmV0dXJuIFRSVUU7CiAgfQogIAogIAogIHB1YmxpYyBmdW5jdGlvbiBvbl9zdWNjZXNzKCR0aW1lID0gMCkKICB7CiAgICBpZighJHRpbWUpIHsgJHRpbWUgPSB0aW1lKCk7IH0KICAgIAogICAgJG1hbXMgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01BTVMnKTsKICAgICRtYW1zLT5TZXRQcmVmZXJlbmNlKCdmb3JjZWxvZ291dF9sYXN0cnVuJywgJHRpbWUpOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gb25fZmFpbHVyZSgkdGltZSA9IDApCiAgewogICAgaWYoISR0aW1lKSB7ICR0aW1lID0gdGltZSgpOyB9CiAgfQogIAp9IC8vIGVuZCBvZiBjbGFzcwoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.MAMSManipulator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDggYnkgUm9iZXJ0IENhbXBiZWxsCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgbWFuYWdlbWVudCBvZiBmcm9udGVuZAojICB1c2VycywgYW5kIHRoZWlyIGxvZ2luIHByb2Nlc3Mgd2l0aGluIGEgQ01TIE1hZGUgU2ltcGxlIHBvd2VyZWQKIyAgd2Vic2l0ZS4KIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0cyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbgojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmNsYXNzIE1BTVNNYW5pcHVsYXRvciBleHRlbmRzIE1BTVNVc2VyTWFuaXB1bGF0b3IKewogIHByaXZhdGUgJF9jYWNoZWRfcHJvcGRlZm5zOwogIHByaXZhdGUgJF9ncm91cGluZm9fY2FjaGU7CiAgcHJpdmF0ZSAkX211bHRpc2VsZWN0X29wdGlvbnM7CiAgcHJpdmF0ZSAkX3VzZXJpZGJ5bmFtZTsKICBwcml2YXRlICRfZ3JvdXBwcm9wbWFwOwogIC8qKgogICAqIEB2YXIgfG51bGwKICAgKi8KICBwcml2YXRlICRfY2FjaGVkX3Byb3BkZWZuOwogIAogIHByb3RlY3RlZCBmdW5jdGlvbiBrZWVwYWxpdmVfY29va2llKCkKICB7CiAgICByZXR1cm4gJ2thJyAuIHNoYTEoX19GSUxFX18pOwogIH0KICAKICAvKioKICAgKiBAaW50ZXJuYWwKICAgKi8KICBwcm90ZWN0ZWQgZnVuY3Rpb24gZW5jb2RlX3VzZXJkYXRhKGFycmF5ICRkYXRhKQogIHsKICAgICRzdHIgPSBqc29uX2VuY29kZSgkZGF0YSk7CiAgICAkc3RyIC49ICc6OicgLiBzaGExKCRzdHIgLiBfX0ZJTEVfXyk7CiAgICAKICAgIHJldHVybiBiYXNlNjRfZW5jb2RlKCRzdHIpOwogIH0KICAKICBwcml2YXRlIGZ1bmN0aW9uIGRlY29kZV91c2VyZGF0YShzdHJpbmcgJHN0cikKICB7CiAgICAkZW5jb2RlZCA9IGJhc2U2NF9kZWNvZGUoJHN0cik7CiAgICAKICAgIGlmKCEkZW5jb2RlZCkgeyByZXR1cm4gW107IH0KICAgIAogICAgWyRqc29uLCAkc2lnXSA9IGV4cGxvZGUoJzo6JywgJGVuY29kZWQsIDIpOwogICAgCiAgICBpZighJGpzb24gfHwgISRzaWcpIHsgcmV0dXJuIFtdOyB9CiAgICAKICAgIGlmKHNoYTEoJGpzb24gLiBfX0ZJTEVfXykgIT09ICRzaWcpIHsgcmV0dXJuIFtdOyB9CiAgICAKICAgIHJldHVybiBqc29uX2RlY29kZSgkanNvbiwgVFJVRSk7IC8vIFRPRE8gaGFyZGVuIGVycm9yIGhhbmRsaW5nCiAgfQogIAogIHByaXZhdGUgZnVuY3Rpb24gZ2V0X2JhZF9zYWx0KCkKICB7CiAgICAvLyB0aGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSB1c2VkIGZvciBzaXRlcyB0aGF0IGhhdmUgYmVlbiB1cGdyYWRlZCBmb3JldmVyCiAgICAvLyBhbmQgaXRzIHVzZSBpcyB2ZXJ5IGJhZCBmb3Igc2VjdXJpdHksIGFzIGl0IGltcGxpZXMgYSBzaGFyZWQgc2FsdCBvbiB1c2VyIHBhc3N3b3Jkcy4KICAgICRtb2QgID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgJHNhbHQgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdwd3NhbHQnLCAnJyk7CiAgICAKICAgIGlmKCEkc2FsdCkKICAgIHsKICAgICAgYXVkaXQoJycsICdNQU1TJywgJ0lNUE9SVEFOVCBXZSBhcmUgdXNpbmcgYmFkIHBhc3N3b3JkIGhhc2hpbmcuLi4gYW5kIGV2ZW4gd29yc2UgdGhlIHNhbHQgaXMgZW1wdHknKTsKICAgIH0KICAgIAogICAgcmV0dXJuICRzYWx0OwogIH0KICAKICBwcml2YXRlIGZ1bmN0aW9uIGdldF9leHBpcmV1c2Vyc19sYXN0cnVuKCkKICB7CiAgICByZXR1cm4gY21zX2NhY2hlX2hhbmRsZXI6OmdldF9pbnN0YW5jZSgpLT5nZXQoJ2V4cGlyZV9sYXN0cnVuJywgX19DTEFTU19fKTsKICB9CiAgCiAgcHJpdmF0ZSBmdW5jdGlvbiB0b3VjaF9leHBpcmV1c2Vyc19sYXN0cnVuKCkKICB7CiAgICBjbXNfY2FjaGVfaGFuZGxlcjo6Z2V0X2luc3RhbmNlKCktPnNldCgnZXhwaXJlX2xhc3RydW4nLCB0aW1lKCksIF9fQ0xBU1NfXyk7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBhZGRfaGlzdG9yeSgkdWlkLCAkbWVzc2FnZSkKICB7CiAgICBpZigkdWlkIDw9IDAgfHwgIWlzX3N0cmluZygkbWVzc2FnZSkgfHwgJG1lc3NhZ2UgPT0gJycpCiAgICB7CiAgICAgIHJldHVybiBGQUxTRTsKICAgIH0KICAgIAogICAgJGRiICAgID0gJHRoaXMtPkdldERiKCk7CiAgICAkbm93ICAgPSAkZGItPkRCVGltZVN0YW1wKHRpbWUoKSk7CiAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJyAuIENNU19EQl9QUkVGSVggLgogICAgICAgICAgICAgIm1vZHVsZV9tYW1zX2hpc3RvcnkgKHVzZXJpZCxzZXNzaW9uaWQsYWN0aW9uLHJlZmRhdGUsaXBhZGRyZXNzKSBWQUxVRVMgKD8sPyw/LCRub3csPykiOwogICAgJGlwICAgID0geHRfdXRpbHM6OmdldF9yZWFsX2lwKCk7CiAgICAkZGJyICAgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBbJHVpZCwgc2Vzc2lvbl9pZCgpLCBzdWJzdHIoJG1lc3NhZ2UsIDAsIDI1NSksICRpcF0pOwogICAgCiAgICByZXR1cm4gVFJVRTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIEdldEVuY3J5cHRpb25LZXkoJHVpZCA9IC0xKQogIHsKICAgIGdsb2JhbCAkQ01TX0FETUlOX1BBR0U7CiAgICAkZ0NtcyA9IENtc0FwcDo6Z2V0X2luc3RhbmNlKCk7CiAgICAKICAgIGlmKCRDTVNfQURNSU5fUEFHRSkKICAgIHsKICAgICAgLy8gYW4gYWRtaW5pc3RyYXRvciBjYW4gc2VlIGVuY3J5cHRlZCBkYXRhLgogICAgICAkcmVzID0gJHRoaXMtPkdldFVzZXJJbmZvKCR1aWQpOwogICAgICAKICAgICAgaWYoIWlzX2FycmF5KCRyZXMpIHx8ICRyZXNbMF0gPT09IEZBTFNFKSB7IHJldHVybiBGQUxTRTsgfQogICAgICAKICAgICAgJGtleSA9IG1kNSgkZ0Ntcy0+Y29uZmlnWydyb290X3VybCddIC4gJHVpZCAuICRyZXNbMV1bJ2NyZWF0ZWRhdGUnXSAuICR0aGlzLT5nZXRfYmFkX3NhbHQoKSk7CiAgICAgIAogICAgICByZXR1cm4gJGtleTsKICAgIH0KICAKICAgIC8vIGZyb250ZW5kIHJlcXVlc3QuLi4gdXNlIGxvZ2dlZCBpbiBpZC4KICAgICR0dWlkID0gJHRoaXMtPkxvZ2dlZEluSWQoKTsKICAKICAgIGlmKCR0dWlkIDwgMSkgeyByZXR1cm4gRkFMU0U7IH0KICAKICAgICRyZXMgPSAkdGhpcy0+R2V0VXNlckluZm8oJHR1aWQpOwogIAogICAgaWYoIWlzX2FycmF5KCRyZXMpIHx8ICRyZXNbMF0gPT09IEZBTFNFKSB7IHJldHVybiBGQUxTRTsgfQogIAogICAgJGtleSA9IG1kNSgkZ0Ntcy0+Y29uZmlnWydyb290X3VybCddIC4gJHR1aWQgLiAkcmVzWzFdWydjcmVhdGVkYXRlJ10gLiAkdGhpcy0+Z2V0X2JhZF9zYWx0KCkpOwogIAogICAgcmV0dXJuICRrZXk7CiAgICAKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIERlY3J5cHRVc2VyRGF0YSgkdWlkLCAkZGF0YSkKICB7CiAgICAkdWlkID0gKGludCkkdWlkOwogICAgCiAgICBpZigkdWlkIDwgMSkgeyByZXR1cm4gJyc7IH0KICAgIAogICAgJGtleSA9ICR0aGlzLT5HZXRFbmNyeXB0aW9uS2V5KCR1aWQpOwogIAogICAgcmV0dXJuIHRyaW0oIHh0X2VuY3J5cHQ6OmRlY3J5cHQoICRrZXksIGJhc2U2NF9kZWNvZGUoJGRhdGEpICkgKTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIENvdW50VGVtcENvZGVSZWNvcmRzKCkKICB7CiAgICAkZGIgICAgICAgPSAkdGhpcy0+R2V0RGIoKTsKICAgICRxICAgICAgICA9ICdTRUxFQ1QgQ09VTlQoKikgQVMgY291bnQgRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc190ZW1wY29kZSc7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHEpOwogICAgCiAgICBpZighJGRicmVzdWx0KSB7IHJldHVybiAwOyB9CiAgICAKICAgICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CiAgCiAgICAvKiogQHZhciBhcnJheSAkcm93ICovCiAgICByZXR1cm4gJHJvd1snY291bnQnXTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIEV4cGlyZVRlbXBDb2RlcygkZXhwaXJ5Y29kZSkKICB7CiAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKICAgIAogICAgdHJ5CiAgICB7CiAgICAgICRkYi0+QmVnaW5UcmFucygpOwogICAgICAkZXhwaXJlcyA9IHN0cnRvdGltZSgkZXhwaXJ5Y29kZSk7CiAgICAgICRxICAgICAgID0gJ0RFTEVURSBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX3RlbXBjb2RlIFdIRVJFIGNyZWF0ZWQgPiA/JzsKICAgICAgJGRiLT5FeGVjdXRlKCRxLCBbJGV4cGlyZXNdKTsKICAgICAgJGRiLT5Db21taXRUcmFucygpOwogICAgICAKICAgICAgcmV0dXJuIFRSVUU7CiAgICB9CiAgICBjYXRjaChcRXhjZXB0aW9uICRlKQogICAgewogICAgICAkZGItPlJvbGxiYWNrVHJhbnMoKTsKICAgICAgJG1vZCA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgICAgYXVkaXQoJycsICRtb2QtPkdldE5hbWUoKSwgJ0NvdWxkIG5vdCBleHBpcmUgdGVtcCBjb2RlcyAnKTsKICAgICAgXHh0X3V0aWxzOjpsb2dfZXhjZXB0aW9uKCRlKTsKICAgICAgCiAgICAgIHJldHVybiBGQUxTRTsKICAgIH0KICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIFJlbW92ZVVzZXJUZW1wQ29kZSgkdWlkKQogIHsKICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwogICAgCiAgICB0cnkKICAgIHsKICAgICAgJHVpZCA9IChpbnQpJHVpZDsKICAgICAgCiAgICAgIGlmKCR1aWQgPCAxKSB7IHJldHVybiBGQUxTRTsgfQogICAgICAKICAgICAgJGRiLT5CZWdpblRyYW5zKCk7CiAgICAgICRxID0gJ0RFTEVURSBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX3RlbXBjb2RlIFdIRVJFIHVzZXJpZCA9ID8nOwogICAgICAkZGItPkV4ZWN1dGUoJHEsIFskdWlkXSk7CiAgICAgICRkYi0+Q29tbWl0VHJhbnMoKTsKICAgICAgCiAgICAgIHJldHVybiBUUlVFOwogICAgfQogICAgY2F0Y2goXEV4Y2VwdGlvbiAkZSkKICAgIHsKICAgICAgJGRiLT5Sb2xsYmFja1RyYW5zKCk7CiAgICAgICRtb2QgPSAkdGhpcy0+R2V0TW9kdWxlKCk7CiAgICAgIGF1ZGl0KCR1aWQsICRtb2QtPkdldE5hbWUoKSwgJ0NvdWxkIG5vdCByZW1vdmUgdGVtcCBjb2RlJyk7CiAgICAgIFx4dF91dGlsczo6bG9nX2V4Y2VwdGlvbigkZSk7CiAgICAgIAogICAgICByZXR1cm4gRkFMU0U7CiAgICB9CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBHZXRVc2VyVGVtcENvZGUoJHVpZCkKICB7CiAgICBpZighJHVpZCkgeyByZXR1cm4gRkFMU0U7IH0KICAgIAogICAgJGRiICAgICAgID0gJHRoaXMtPkdldERiKCk7CiAgICAkcSAgICAgICAgPSAnU0VMRUNUICogRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc190ZW1wY29kZSBXSEVSRSB1c2VyaWQgPSA/IE9SREVSIEJZIGNyZWF0ZWQgREVTQyc7CiAgICAkZGJyZXN1bHQgPSAkZGItPkdldFJvdygkcSwgWyR1aWRdKTsKICAgIAogICAgaWYoaXNfYXJyYXkoJGRicmVzdWx0KSAmJiBjb3VudCgkZGJyZXN1bHQpKSB7IHJldHVybiAkZGJyZXN1bHRbJ2NvZGUnXTsgfQogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gU2V0VXNlclRlbXBDb2RlKCR1aWQsICRjb2RlKQogIHsKICAgICR1aWQgID0gKGludCkkdWlkOwogICAgJGNvZGUgPSB0cmltKCRjb2RlKTsKICAgIAogICAgaWYoJHVpZCA8IDEgfHwgISRjb2RlKSB7IHJldHVybiBGQUxTRTsgfQogICAgCiAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKICAgIAogICAgdHJ5CiAgICB7CiAgICAgICRkYi0+QmVnaW5UcmFucygpOwogICAgICAkcSA9ICdERUxFVEUgRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc190ZW1wY29kZSBXSEVSRSB1c2VyaWQgPSA/JzsKICAgICAgJGRiLT5FeGVjdXRlKCRxLCBbJHVpZF0pOwogICAgICAKICAgICAgJHEgPSAnSU5TRVJUIElOVE8gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfdGVtcGNvZGUgVkFMVUVTKD8sPyxOT1coKSknOwogICAgICAkZGItPkV4ZWN1dGUoJHEsIFskdWlkLCAkY29kZV0pOwogICAgICAkZGItPkNvbW1pdFRyYW5zKCk7CiAgICAgIAogICAgICByZXR1cm4gVFJVRTsKICAgIH0KICAgIGNhdGNoKFxFeGNlcHRpb24gJGUpCiAgICB7CiAgICAgICRkYi0+Um9sbGJhY2tUcmFucygpOwogICAgICAkbW9kID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgICBhdWRpdCgkdWlkLCAkbW9kLT5HZXROYW1lKCksICdDb3VsZCBub3Qgc2V0IHRlbXAgY29kZScpOwogICAgICBceHRfdXRpbHM6OmxvZ19leGNlcHRpb24oJGUpOwogICAgICAKICAgICAgcmV0dXJuIEZBTFNFOwogICAgfQogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gU2V0UHJvcGVydHlEZWZuKAogICAgJG5hbWUsICRuZXduYW1lLCAkcHJvbXB0LCAkbGVuZ3RoLCAkdHlwZSwgJG1heGxlbmd0aCA9IDAsICRhdHRyaWJzID0gJycsICRmb3JjZV91bmlxdWUgPSAwLCAkZW5jcnlwdCA9IDAKICApCiAgewogICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAKICAgIGlmKDAgPT09ICRtYXhsZW5ndGgpIHsgJG1heGxlbmd0aCA9ICRsZW5ndGg7IH0KICAgIAogICAgJHEgICAgICAgID0gJ1VQREFURSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc19wcm9wZGVmbgogICAgICAgICAgICAgIFNFVCBuYW1lID0gPywgcHJvbXB0ID0gPywgdHlwZSA9ID8sIGxlbmd0aCA9ID8sIG1heGxlbmd0aCA9ID8sIGF0dHJpYnMgPSA/LCBmb3JjZV91bmlxdWUgPSA/LCBlbmNyeXB0ID0gPwogICAgICAgICAgICAgIFdIRVJFIG5hbWUgPSA/JzsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgKICAgICAgJHEsIFskbmV3bmFtZSwgJHByb21wdCwgJHR5cGUsICRsZW5ndGgsICRtYXhsZW5ndGgsICRhdHRyaWJzLCAkZm9yY2VfdW5pcXVlLCAkZW5jcnlwdCwgJG5hbWVdCiAgICApOwogICAgCiAgICBpZighJGRicmVzdWx0KSB7IHJldHVybiBGQUxTRTsgfQogICAgCiAgICByZXR1cm4gVFJVRTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIERlbGV0ZVByb3BlcnR5RGVmbigkbmFtZSkKICB7CiAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKICAgIAogICAgdHJ5CiAgICB7CiAgICAgICRkYi0+QmVnaW5UcmFucygpOwogICAgICAkdGhpcy0+RGVsZXRlU2VsZWN0T3B0aW9ucygkbmFtZSk7CiAgICAgIAogICAgICAkcSA9ICdERUxFVEUgRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc19wcm9wZXJ0aWVzIFdIRVJFIHRpdGxlID0gPyc7CiAgICAgICRkYi0+RXhlY3V0ZSgkcSwgWyRuYW1lXSk7CiAgICAgIAogICAgICAkcXVlcnkgPSAnU0VMRUNUIGdyb3VwX2lkLHNvcnRfa2V5IEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfZ3JvdXBwcm9wbWFwIFdIRVJFIG5hbWUgPSA/JzsKICAgICAgCiAgICAgICRkYnIgICA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5LCBbJG5hbWVdKTsKICAgICAgCiAgICAgIGlmKGlzX2FycmF5KCRkYnIpICYmIGNvdW50KCRkYnIpKQogICAgICB7CiAgICAgICAgJHEgPSAnVVBEQVRFICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX2dyb3VwcHJvcG1hcAogICAgICAgICAgICAgICAgICAgICAgICAgIFNFVCBzb3J0X2tleSA9IHNvcnRfa2V5IC0gMQogICAgICAgICAgICAgICAgICAgICAgICAgIFdIRVJFIGdyb3VwX2lkID0gPyBBTkQgc29ydF9rZXkgPiA/JzsKICAgICAgICAKICAgICAgICBmb3JlYWNoKCRkYnIgYXMgJHJvdykKICAgICAgICB7CiAgICAgICAgICAkZGItPkV4ZWN1dGUoJHEsIFskcm93Wydncm91cF9pZCddLCAkcm93Wydzb3J0X2tleSddXSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIAogICAgICAkcSA9ICdERUxFVEUgRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc19ncm91cHByb3BtYXAgV0hFUkUgbmFtZSA9ID8nOwogICAgICAkZGItPkV4ZWN1dGUoJHEsIFskbmFtZV0pOwogICAgICAKICAgICAgJHEgPSAnREVMRVRFIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfcHJvcGRlZm4gV0hFUkUgbmFtZT0/JzsKICAgICAgJGRiLT5FeGVjdXRlKCRxLCBbJG5hbWVdKTsKICAgICAgCiAgICAgICRkYi0+Q29tbWl0VHJhbnMoKTsKICAgICAgCiAgICAgIHJldHVybiBUUlVFOwogICAgfQogICAgY2F0Y2goXEV4Y2VwdGlvbiAkZSkKICAgIHsKICAgICAgJGRiLT5Sb2xsYmFja1RyYW5zKCk7CiAgICAgICRtb2QgPSAkdGhpcy0+R2V0TW9kdWxlKCk7CiAgICAgIGF1ZGl0KCcnLCAkbW9kLT5HZXROYW1lKCksICdDb3VsZCBub3QgZGVsZXRlIHByb3BlcnR5ICcgLiAkbmFtZSk7CiAgICAgIFx4dF91dGlsczo6bG9nX2V4Y2VwdGlvbigkZSk7CiAgICAgIAogICAgICByZXR1cm4gRkFMU0U7CiAgICB9CiAgICAKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIEdldFByb3BlcnR5R3JvdXBSZWxhdGlvbnMoJHRpdGxlKQogIHsKICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwogICAgCiAgICAkcSAgICAgICAgPSAnU0VMRUNUICogRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc19ncm91cHByb3BtYXAgV0hFUkUgbmFtZSA9ID8gT1JERVIgQlkgc29ydF9rZXkgREVTQyc7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHEsIFskdGl0bGVdKTsKICAgIAogICAgaWYoISRkYnJlc3VsdCkgeyByZXR1cm4gW0ZBTFNFLCAkZGItPkVycm9yTXNnKCldOyB9CiAgICAKICAgICRyZXN1bHQgPSBbXTsKICAgIAogICAgd2hpbGUoICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkgKSB7ICRyZXN1bHRbXSA9ICRyb3c7IH0KICAgIAogICAgcmV0dXJuICRyZXN1bHQ7CiAgfQogIAogIAogIC8qKgogICAqIFJldHVybiB0aGUgdW5peCB0aW1lc3RhbXAgb2YgdGhlIHVzZXIncyBleHBpcnkgZGF0ZQogICAqIG9yIGZhbHNlOwogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBHZXRFeHBpcnlEYXRlKCR1aWQpCiAgewogICAgaWYoISR1aWQpIHsgcmV0dXJuIEZBTFNFOyB9CiAgICAKICAgICRyZXMgPSBtYW1zX3VzZXJfY2FjaGU6OmdldF91c2VyKCR1aWQpOwogICAgCiAgICBpZihpc19hcnJheSgkcmVzKSAmJiAnJyAhPT0gJHJlc1snZXhwaXJlcyddKQogICAgewogICAgICByZXR1cm4gJHRoaXMtPkdldERiKCktPlVuaXhUaW1lU3RhbXAoJHJlc1snZXhwaXJlcyddKTsKICAgIH0KICAgIAogICAgcmV0dXJuIEZBTFNFOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gQ2FuVXNlckxvZ2luKCR1aWQpCiAgewogICAgJHVpZCA9IChpbnQpJHVpZDsKICAgIAogICAgaWYoJHVpZCA8IDEpIHsgcmV0dXJuIEZBTFNFOyB9CiAgICAKICAgICRyZXMgPSBtYW1zX3VzZXJfY2FjaGU6OmdldF91c2VyKCR1aWQpOwogICAgCiAgICBpZiggIWlzX2FycmF5KCRyZXMpICkgeyByZXR1cm4gRkFMU0U7IH0KICAgIAogICAgaWYoJHJlc1snZGlzYWJsZWQnXSkgeyByZXR1cm4gRkFMU0U7IH0KCiAgICBpZighJHJlc1sncGFzc3dvcmQnXSl7IHJldHVybiBGQUxTRTsgfQogICAgCiAgICAkZXhwaXJlcyA9IHN0cnRvdGltZSgkcmVzWydleHBpcmVzJ10pOwogICAgCiAgICByZXR1cm4gdGltZSgpIDwgJGV4cGlyZXM7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBJc0FjY291bnRFeHBpcmVkKCR1aWQpCiAgewogICAgaWYoISR1aWQpIHsgcmV0dXJuIFRSVUU7IH0gLy8gZHVubm8gYWJvdXQgdGhpcwogICAgCiAgICAkZXhwaXJ5ID0gJHRoaXMtPkdldEV4cGlyeURhdGUoJHVpZCk7CiAgICAKICAgIGlmKCEkZXhwaXJ5KSB7IHJldHVybiBUUlVFOyB9CiAgICAKICAgIGlmKCRleHBpcnkgPCB0aW1lKCkpIHsgcmV0dXJuIFRSVUU7IH0KICAgIAogICAgcmV0dXJuIEZBTFNFOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlclByb3BlcnR5UmVsYXRpb25zKCR1aWQpCiAgewogICAgJHVwcm9wcyA9IFtdOwogICAgJGdyb3VwcyA9ICR0aGlzLT5HZXRNZW1iZXJHcm91cHNBcnJheSgkdWlkKTsKICAgIAogICAgaWYoIWlzX2FycmF5KCRncm91cHMpIHx8IDAgPT09IGNvdW50KCRncm91cHMpKSB7IHJldHVybiAkdXByb3BzOyB9CiAgICAKICAgIGZvcigkYSA9IDAsICRhTWF4ID0gY291bnQoJGdyb3Vwcyk7ICRhIDwgJGFNYXg7ICRhKyspCiAgICB7CiAgICAgICRnaWQgICAgPSAkZ3JvdXBzWyRhXVsnZ3JvdXBpZCddOwogICAgICAkcmVsbnMgID0gJHRoaXMtPkdldEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoJGdpZCk7CiAgICAgICR1cHJvcHMgPSBcTUFNU1xSUlV0aWxzOjphcnJheV9tZXJnZV9ieV9uYW1lX3JlcXVpcmVkKCR1cHJvcHMsICRyZWxucyk7CiAgICAgIHVzb3J0KCR1cHJvcHMsIFsneHRfYXJyYXknLCAnY29tcGFyZV9lbGVtZW50c19ieV9zb3J0b3JkZXJfa2V5J10pOwogICAgfQogICAgCiAgICByZXR1cm4gJHVwcm9wczsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoJGdycGlkKQogIHsKICAgIGlmKCFpc19hcnJheSgkdGhpcy0+X2dyb3VwcHJvcG1hcCkpCiAgICB7CiAgICAgICRkYiAgICAgICAgICAgICAgICAgID0gJHRoaXMtPkdldERiKCk7CiAgICAgICRxICAgICAgICAgICAgICAgICAgID0gJ1NFTEVDVCAqIEZST00gJyAuIENNU19EQl9QUkVGSVggLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb2R1bGVfbWFtc19ncm91cHByb3BtYXAgT1JERVIgQlkgZ3JvdXBfaWQsc29ydF9rZXkgREVTQyc7CiAgICAgICR0aGlzLT5fZ3JvdXBwcm9wbWFwID0gJGRiLT5HZXRBcnJheSgkcSk7CiAgICAgIAogICAgICBpZighJHRoaXMtPl9ncm91cHByb3BtYXApCiAgICAgIHsKICAgICAgICByZXR1cm4gW0ZBTFNFLCAkZGItPkVycm9yTXNnKCldOwogICAgICB9CiAgICB9CiAgICAKICAgICRyZXMgPSBbXTsKICAgIGZvcigkaSA9IDAsICRpTWF4ID0gY291bnQoJHRoaXMtPl9ncm91cHByb3BtYXApOyAkaSA8ICRpTWF4OyAkaSsrKQogICAgewogICAgICAkcm93ID0gJHRoaXMtPl9ncm91cHByb3BtYXBbJGldOwogICAgICAKICAgICAgaWYoJHJvd1snZ3JvdXBfaWQnXSA8ICRncnBpZCkgeyBjb250aW51ZTsgfQogICAgICAKICAgICAgaWYoJHJvd1snZ3JvdXBfaWQnXSA+ICRncnBpZCkgeyBicmVhazsgfQogICAgICAKICAgICAgJHJlc1tdID0gJHJvdzsKICAgIH0KICAgIAogICAgaWYoIWNvdW50KCRyZXMpKQogICAgewogICAgICByZXR1cm4gW0ZBTFNFLCAnbm90Zm91bmQnXTsKICAgIH0KICAgIAogICAgcmV0dXJuICRyZXM7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBBZGRHcm91cFByb3BlcnR5UmVsYXRpb24oJGdycGlkLCAkcHJvcG5hbWUsICRzb3J0a2V5LCAkbG9zdHVuLCAkdmFsKQogIHsKICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwogICAgCiAgICAkcSAgICAgICAgPSAnSU5TRVJUIElOVE8gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfZ3JvdXBwcm9wbWFwIFZBTFVFUyg/LD8sPyw/LD8pJzsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcSwgWyRwcm9wbmFtZSwgJGdycGlkLCAkc29ydGtleSwgJHZhbCwgJGxvc3R1bl0pOwogICAgCiAgICBpZighJGRicmVzdWx0KQogICAgewogICAgICByZXR1cm4gW0ZBTFNFLCAkZGItPkVycm9yTXNnKCldOwogICAgfQogICAgCiAgICByZXR1cm4gW1RSVUUsICcnXTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIERlbGV0ZUFsbEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoJGdycGlkKQogIHsKICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwogICAgCiAgICB0cnkKICAgIHsKICAgICAgJGRiLT5CZWdpblRyYW5zKCk7CiAgICAgICRxID0gJ0RFTEVURSBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX2dyb3VwcHJvcG1hcCBXSEVSRSBncm91cF9pZCA9ID8nOwogICAgICAkZGItPkV4ZWN1dGUoJHEsIFskZ3JwaWRdKTsKICAgICAgJGRiLT5Db21taXRUcmFucygpOwogICAgICAKICAgICAgcmV0dXJuIFtUUlVFLCAnJ107CiAgICB9CiAgICBjYXRjaChcRXhjZXB0aW9uICRlKQogICAgewogICAgICAkZGItPlJvbGxiYWNrVHJhbnMoKTsKICAgICAgJG1vZCA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgICAgYXVkaXQoJycsICRtb2QtPkdldE5hbWUoKSwgJ0NvdWxkIG5vdCBkZWxldGUgYWxsIGdyb3VwIHByb3BlcnR5IHJlbGF0aW9ucycpOwogICAgICBceHRfdXRpbHM6OmxvZ19leGNlcHRpb24oJGUpOwogICAgICAKICAgICAgcmV0dXJuIFtGQUxTRSwgJGUtPmdldE1lc3NhZ2UoKV07CiAgICB9CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVHcm91cFByb3BlcnR5UmVsYXRpb24oJGdycGlkLCAkcHJvcG5hbWUpCiAgewogICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAKICAgIHRyeQogICAgewogICAgICAkZGItPkJlZ2luVHJhbnMoKTsKICAgICAgJHEgPSAnREVMRVRFIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfZ3JvdXBwcm9wbWFwIFdIRVJFIG5hbWUgPSA/IEFORCBncm91cF9pZCA9ID8nOwogICAgICAkZGItPkV4ZWN1dGUoJHEsIFskcHJvcG5hbWUsICRncnBpZF0pOwogICAgICAkZGItPkNvbW1pdFRyYW5zKCk7CiAgICAgIAogICAgICByZXR1cm4gW1RSVUVdOwogICAgfQogICAgY2F0Y2goXEV4Y2VwdGlvbiAkZSkKICAgIHsKICAgICAgJGRiLT5Sb2xsYmFja1RyYW5zKCk7CiAgICAgICRtb2QgPSAkdGhpcy0+R2V0TW9kdWxlKCk7CiAgICAgIGF1ZGl0KCcnLCAkbW9kLT5HZXROYW1lKCksICdDb3VsZCBub3QgZGVsZXRlIGdyb3VwIHByb3BlcnR5IHJlbGF0aW9uJyk7CiAgICAgIFx4dF91dGlsczo6bG9nX2V4Y2VwdGlvbigkZSk7CiAgICAgIAogICAgICByZXR1cm4gW0ZBTFNFLCAkZS0+Z2V0TWVzc2FnZSgpXTsKICAgIH0KICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIEFkZFByb3BlcnR5RGVmbigKICAgICRuYW1lLCAkcHJvbXB0LCAkdHlwZSwgJGxlbmd0aCwgJG1heGxlbmd0aCA9IDAsICRhdHRyaWJzID0gJycsICRmb3JjZV91bmlxdWUgPSAwLCAkZW5jcnlwdCA9IDAKICApCiAgewogICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAKICAgIGlmKDAgPT09ICRtYXhsZW5ndGgpCiAgICB7CiAgICAgICRtYXhsZW5ndGggPSAkbGVuZ3RoOwogICAgfQogICAgCiAgICAkcCAgICAgICAgPSBbJG5hbWUsICRwcm9tcHQsICR0eXBlLCAkbGVuZ3RoLCAkbWF4bGVuZ3RoLCAkYXR0cmlicywgJGZvcmNlX3VuaXF1ZSwgJGVuY3J5cHRdOwogICAgJHEgICAgICAgID0gJ0lOU0VSVCBJTlRPICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX3Byb3BkZWZuCiAgICAgICAgICAobmFtZSxwcm9tcHQsdHlwZSxsZW5ndGgsbWF4bGVuZ3RoLGF0dHJpYnMsZm9yY2VfdW5pcXVlLGVuY3J5cHQpCiAgICAgICAgICBWQUxVRVMgKD8sPyw/LD8sPyw/LD8sPyknOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxLCAkcCk7CiAgICAKICAgIGlmKEZBTFNFID09PSAkZGJyZXN1bHQpCiAgICB7CiAgICAgIHJldHVybiBbRkFMU0UsICRkYi0+c3FsIC4gJzxici8+JyAuICRkYi0+RXJyb3JNc2coKV07CiAgICB9CiAgICAKICAgICRkYi0+SW5zZXJ0X0lEKCk7CiAgICAKICAgICR0aGlzLT5fY2FjaGVkX3Byb3BkZWZuID0gTlVMTDsKICAgIAogICAgcmV0dXJuIFtUUlVFLCAnJ107CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBTZXRQcm9wZXJ0eURlZm5FeHRyYSgkbmFtZSwgJGV4dHJhKQogIHsKICAgIGlmKGlzX2FycmF5KCRleHRyYSkpCiAgICB7CiAgICAgICRleHRyYSA9IHNlcmlhbGl6ZSgkZXh0cmEpOwogICAgfQogICAgCiAgICAkZGIgICAgPSAkdGhpcy0+R2V0RGIoKTsKICAgICRxdWVyeSA9ICdVUERBVEUgJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfcHJvcGRlZm4gU0VUIGV4dHJhID0gPyBXSEVSRSBuYW1lID0gPyc7CiAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBbJGV4dHJhLCAkbmFtZV0pOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gQWRkU2VsZWN0T3B0aW9ucygkbmFtZSwgJG9wdGlvbnMpCiAgewogICAgJGRiID0gJHRoaXMtPkdldERiKCk7CgogICAgdHJ5CiAgICB7CiAgICAgICRvcmRlcl9pZCAgICA9IDA7CiAgICAgICRzcWwgICAgICAgICA9ICdJTlNFUlQgSU5UTyAnIC4gQ01TX0RCX1BSRUZJWCAuCiAgICAgICAgICAgICAgICAgICAgICdtb2R1bGVfbWFtc19kcm9wZG93bnMgKG9yZGVyX2lkLCBvcHRpb25fbmFtZSwgb3B0aW9uX3RleHQsIGNvbnRyb2xfbmFtZSkgVkFMVUVTICg/LD8sPyw/KSc7CiAgICAgICRkYi0+QmVnaW5UcmFucygpOwogICAgICAKICAgICAgZm9yZWFjaCgkb3B0aW9ucyBhcyAkb3B0dGV4dCkKICAgICAgewogICAgICAgIC8vIGlmIG5vIGFjdHVhbCB0ZXh0IGluIHRoZSBsaW5lLCBtYWtlIHN1cmUgaXQgZXF1YWxzICcnLAogICAgICAgIC8vIGluIG9yZGVyIG5vdCB0byBhZGQgaXQgdG8gdGhlIGRiCiAgICAgICAgJG9wdHRleHQgPSB0cmltKCRvcHR0ZXh0KTsKICAgICAgICAKICAgICAgICBpZignJyA9PT0gJG9wdHRleHQgfHwgJ19fJyA9PT0gJG9wdHRleHQpIHsgY29udGludWU7IH0KICAgICAgICAKICAgICAgICAkb3B0bmFtZSA9IHRyaW0oJG9wdHRleHQpOwogICAgICAgIAogICAgICAgIGlmKCBGQUxTRSAhPT0gc3RycG9zKCRvcHR0ZXh0LCAnPScpICkKICAgICAgICB7CiAgICAgICAgICAkdG1wICAgICA9IGV4cGxvZGUoJz0nLCAkb3B0dGV4dCwgMik7CiAgICAgICAgICAkb3B0bmFtZSA9IHRyaW0oJHRtcFsxXSk7CiAgICAgICAgICAkb3B0dGV4dCA9IHRyaW0oJHRtcFswXSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgICRvcmRlcl9pZCsrOwogICAgICAgICRyZXMgPSAkZGItPkV4ZWN1dGUoJHNxbCwgWyRvcmRlcl9pZCwgJG9wdG5hbWUsICRvcHR0ZXh0LCAkbmFtZV0pOwogICAgICAgIAogICAgICAgIGlmKCEkcmVzKQogICAgICAgIHsKICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbiggJ1NRTCBFUlJPUjogJyAuICRkYi0+RXJyb3JNc2coKSApOwogICAgICAgIH0KICAgICAgfQogICAgICAKICAgICAgJGRiLT5Db21taXRUcmFucygpOwogICAgICAkdGhpcy0+X211bHRpc2VsZWN0X29wdGlvbnMgPSBOVUxMOwogICAgICAKICAgICAgcmV0dXJuIFtUUlVFXTsKICAgIH0KICAgIGNhdGNoKFxFeGNlcHRpb24gJGUpCiAgICB7CiAgICAgICRkYi0+Um9sbGJhY2tUcmFucygpOwogICAgICAkbW9kID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgICBhdWRpdCgnJywgJG1vZC0+R2V0TmFtZSgpLCAnQ291bGQgbm90IGV4cGlyZSB0ZW1wIGNvZGVzICcpOwogICAgICBceHRfdXRpbHM6OmxvZ19leGNlcHRpb24oJGUpOwogICAgICAKICAgICAgcmV0dXJuIFtGQUxTRV07CiAgICB9CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVQcm9wZXJ0eURlZm5zKCkKICB7CiAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKICAgIHRyeQogICAgewogICAgICAkZGVmbnMgPSAkdGhpcy0+R2V0UHJvcGVydHlEZWZucygpOwogICAgICBmb3JlYWNoKCRkZWZucyBhcyAkbmFtZSA9PiAkcmVjKQogICAgICB7CiAgICAgICAgJHRoaXMtPkRlbGV0ZVByb3BlcnR5RGVmbigkbmFtZSk7CiAgICAgIH0KICAgICAgJHRoaXMtPl9jYWNoZWRfcHJvcGRlZm4gPSBOVUxMOwogICAgICAkZGItPkNvbW1pdFRyYW5zKCk7CiAgICAgIAogICAgICByZXR1cm4gW1RSVUVdOwogICAgfQogICAgY2F0Y2goXEV4Y2VwdGlvbiAkZSkKICAgIHsKICAgICAgJGRiLT5Sb2xsYmFja1RyYW5zKCk7CiAgICAgICRtb2QgPSAkdGhpcy0+R2V0TW9kdWxlKCk7CiAgICAgIGF1ZGl0KCcnLCAkbW9kLT5HZXROYW1lKCksICdDb3VsZCBub3QgZGVsZXRlIGFsbCBwcm9wZXJ0eSBkZWZpbml0aW9ucycpOwogICAgICBceHRfdXRpbHM6OmxvZ19leGNlcHRpb24oJGUpOwogICAgICAKICAgICAgcmV0dXJuIFtGQUxTRSwgJGUtPkdldE1lc3NhZ2UoKV07CiAgICB9CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVTZWxlY3RPcHRpb25zKCRuYW1lKQogIHsKICAgICRkYiAgICAgICA9ICR0aGlzLT5HZXREYigpOwogICAgJHEgICAgICAgID0gJ0RFTEVURSBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX2Ryb3Bkb3ducyBXSEVSRSBjb250cm9sX25hbWUgPSA/JzsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcSwgWyRuYW1lXSk7CiAgICAKICAgIGlmKEZBTFNFID09PSAkZGJyZXN1bHQpCiAgICB7CiAgICAgIHJldHVybiBbRkFMU0UsICRkYi0+RXJyb3JNc2coKV07CiAgICB9CiAgICAKICAgICR0aGlzLT5fbXVsdGlzZWxlY3Rfb3B0aW9ucyA9IE5VTEw7CiAgICAKICAgIHJldHVybiBbVFJVRSwgJyddOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gR2VuZXJhdGVSYW5kb21Vc2VybmFtZSgkcHJlZml4ID0gJ3VzZXInKQogIHsKICAgIG10X3NyYW5kKCB0aW1lKCkgKTsKICAgICRkYiAgPSAkdGhpcy0+R2V0RGIoKTsKICAgICRtb2QgPSAkdGhpcy0+R2V0TW9kdWxlKCk7CiAgCiAgICB0cnkKICAgIHsKICAgICAgJG51bSA9IHJhbmRvbV9pbnQoMTAwLCA5OTk5OSk7CiAgICB9CiAgICBjYXRjaChFeGNlcHRpb24gJGUpCiAgICB7CiAgICAgICRudW0gPSByYW5kKDEwMCwgOTk5OTkpOwogICAgfQogICAgCiAgICAkY291bnQgID0gMDsKICAgICRzdWZmaXggPSAnJzsKICAgIAogICAgaWYoJG1vZC0+R2V0UHJlZmVyZW5jZSgndXNlcm5hbWVfaXNfZW1haWwnKSkKICAgIHsKICAgICAgJHN1ZmZpeCA9ICdAc2FtcGxlLmNvbSc7CiAgICB9CiAgICAKICAgIHdoaWxlKCRjb3VudCA8IDEwMCkKICAgIHsKICAgICAgLy8gdG9kbywgMTAwIHNob3VsZCBiZSBjb25maWd1cmFibGU/CiAgICAgICRxICAgPSAnU0VMRUNUIGlkIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfdXNlcnMgV0hFUkUgdXNlcm5hbWUgPSA/JzsKICAgICAgJHRtcCA9ICRkYi0+R2V0T25lKCRxLCBbJHByZWZpeCAuICRudW0gLiAkc3VmZml4XSk7CiAgICAgIAogICAgICBpZighJHRtcCkKICAgICAgewogICAgICAgIHJldHVybiAkcHJlZml4IC4gJG51bSAuICRzdWZmaXg7CiAgICAgIH0KICAKICAgICAgdHJ5CiAgICAgIHsKICAgICAgICAkbnVtID0gcmFuZG9tX2ludCgxMDAsIDk5OTk5KTsKICAgICAgfQogICAgICBjYXRjaChFeGNlcHRpb24gJGUpCiAgICAgIHsKICAgICAgICAkbnVtID0gcmFuZCgxMDAsIDk5OTk5KTsKICAgICAgfQogICAgICAKICAgICAgKyskY291bnQ7CiAgICB9CiAgICAKICAgIHJldHVybiBGQUxTRTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIENsZWFyUHJvcGVydHlDYWNoZSgpCiAgewogICAgJHRoaXMtPl9jYWNoZWRfcHJvcGRlZm5zID0gTlVMTDsKICB9CiAgCiAgcHJvdGVjdGVkIGZ1bmN0aW9uIF9jYWNoZV9wcm9wZXJ0eWRlZm5zKCkKICB7CiAgICBpZiggIWlzX2FycmF5KCR0aGlzLT5fY2FjaGVkX3Byb3BkZWZucykgKQogICAgewogICAgICAkZGIgICAgICAgICAgICAgICAgICAgICAgPSAkdGhpcy0+R2V0RGIoKTsKICAgICAgJHRoaXMtPl9jYWNoZWRfcHJvcGRlZm5zID0gW107CiAgICAgIAogICAgICAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc19wcm9wZGVmbic7CiAgICAgICRkYXRhICA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5KTsKICAgICAgCiAgICAgIGlmKCEkZGF0YSkgeyByZXR1cm47IH0KICAgICAgCiAgICAgIGZvcigkaSA9IDAsICRpTWF4ID0gY291bnQoJGRhdGEpOyAkaSA8ICRpTWF4OyAkaSsrKQogICAgICB7CiAgICAgICAgaWYoIWVtcHR5KCRkYXRhWyRpXVsnZXh0cmEnXSkgJiYgTlVMTCAhPT0gJGRhdGFbJGldWydleHRyYSddKQogICAgICAgIHsKICAgICAgICAgICRkYXRhWyRpXVsnZXh0cmEnXSA9IEB1bnNlcmlhbGl6ZSgkZGF0YVskaV1bJ2V4dHJhJ10pOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZighZW1wdHkoJGRhdGFbJGldWydhdHRyaWJzJ10pKQogICAgICAgIHsKICAgICAgICAgICRkYXRhWyRpXVsnZXh0cmEnXSA9IEB1bnNlcmlhbGl6ZSgkZGF0YVskaV1bJ2F0dHJpYnMnXSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgICR0aGlzLT5fY2FjaGVkX3Byb3BkZWZuc1skZGF0YVskaV1bJ25hbWUnXV0gPSAkZGF0YVskaV07CiAgICAgIH0KICAgIH0KICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIEdldFByb3BlcnR5RGVmbigkbmFtZSkKICB7CiAgICAkdGhpcy0+X2NhY2hlX3Byb3BlcnR5ZGVmbnMoKTsKICAgIAogICAgaWYoICFpc19hcnJheSgkdGhpcy0+X2NhY2hlZF9wcm9wZGVmbnMpICkgeyByZXR1cm4gRkFMU0U7IH0KICAKICAgIHJldHVybiAkdGhpcy0+X2NhY2hlZF9wcm9wZGVmbnNbJG5hbWVdID8/IEZBTFNFOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gR2V0UHJvcGVydHlEZWZucygpCiAgewogICAgJHRoaXMtPl9jYWNoZV9wcm9wZXJ0eWRlZm5zKCk7CiAgICAKICAgIGlmKCAhaXNfYXJyYXkoJHRoaXMtPl9jYWNoZWRfcHJvcGRlZm5zKSApIHsgcmV0dXJuIEZBTFNFOyB9CiAgICAKICAgIHJldHVybiAkdGhpcy0+X2NhY2hlZF9wcm9wZGVmbnM7CiAgfQogIAogIC8qKgogICAqIFJldHVybnMgc2VsZWN0IG9wdGlvbnMgYXMgb25lIHNpbXBsZSBvciAyIGRpbWVuc2lvbmFsIGFycmF5CiAgICoKICAgKiBAcGFyYW0gU3RyaW5nICRjb250cm9sbmFtZSAtIG5hbWUgb2YgdGhlIGRyb3Bkb3duIGFzIGluIHRoZSBwcm9wZGVmbiB0YWJsZQogICAqIEBwYXJhbSBpbnQgICAgJGRpbSAgICAgICAgIC0gZGltZW5zaW9uIG9mIHRoZSBhcnJheQogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICRkaW0gPT0gMSwgcmV0dXJucyBhIDEgZGltZW5zaW9uYWwgYXJyYXkgdGV4dD0+bmFtZQogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICRkaW0gPT0gMiwgcmV0dXJucyBhIDIgZGltZW5zaW9uYWwgYXJyYXksIGVhY2ggaXRlbSBiZWluZyBhbgogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5IHdpdGggcHJvcGVydGllcyAnb3B0aW9uX25hbWUnLCAnb3B0aW9uX3RleHQnLCAnY29udHJvbF9uYW1lJy4KICAgKgogICAqIEByZXR1cm4gYXJyYXl8Ym9vbAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBHZXRTZWxlY3RPcHRpb25zKCRjb250cm9sbmFtZSwgJGRpbSA9IDEpCiAgewogICAgaWYoISR0aGlzLT5fbXVsdGlzZWxlY3Rfb3B0aW9ucykKICAgIHsKICAgICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAgIAogICAgICAkcSAgID0gJ1NFTEVDVCAqIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfZHJvcGRvd25zIE9SREVSIEJZIG9yZGVyX2lkJzsKICAgICAgJGRiciA9ICRkYi0+R2V0QXJyYXkoJHEpOwogICAgICAKICAgICAgaWYoaXNfYXJyYXkoJGRicikpCiAgICAgIHsKICAgICAgICAkdGhpcy0+X211bHRpc2VsZWN0X29wdGlvbnMgPSAkZGJyOwogICAgICB9CiAgICB9CiAgICAKICAgIGlmKCFjb3VudCgkdGhpcy0+X211bHRpc2VsZWN0X29wdGlvbnMpKSB7IHJldHVybiBGQUxTRTsgfQogICAgCiAgICAkcmV0ID0gW107CiAgICAKICAgIC8vZm9yKCRpID0gMCwgJGlNYXggPSBjb3VudCgkdGhpcy0+X211bHRpc2VsZWN0X29wdGlvbnMpOyAkaSA8ICRpTWF4OyAkaSsrKQogICAgZm9yZWFjaCgkdGhpcy0+X211bHRpc2VsZWN0X29wdGlvbnMgYXMgJGlWYWx1ZSkKICAgIHsKICAgICAgLy8kcm93ID0gJHRoaXMtPl9tdWx0aXNlbGVjdF9vcHRpb25zWyRpXTsKICAgICAgJHJvdyA9ICRpVmFsdWU7CiAgICAgIAogICAgICBpZigkcm93Wydjb250cm9sX25hbWUnXSA9PT0gJGNvbnRyb2xuYW1lKQogICAgICB7CiAgICAgICAgaWYoMiA9PT0gJGRpbSkKICAgICAgICB7CiAgICAgICAgICAkcmV0W10gPSAkcm93OwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgJHJldFt0cmltKCRyb3dbJ29wdGlvbl90ZXh0J10pXSA9IHRyaW0oJHJvd1snb3B0aW9uX25hbWUnXSk7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgCiAgICBpZiggIWNvdW50KCRyZXQpICkgeyByZXR1cm4gRkFMU0U7IH0KICAgIAogICAgcmV0dXJuICRyZXQ7CiAgfQogIAogIC8qKgogICAqIExvZyB0aGUgdXNlciBpbnRvIHRoZSBzaXRlLgogICAqIFRoaXMgY2hlY2tzIHRoZSB1c2VyIHBhc3N3b3JkLCBhbmQgcHJlZmVyZW5jZXMgYWJvdXQgZHVwbGljYXRlIGxvZ2lucyBhbmQgb3RoZXIgdGhpbmdzIHRoZW4gbWFya3MgdGhlIHVzZXIKICAgKiBhcyBsb2dnZWQgaW4gd2l0aCB0aGUgYXBwcm9wcmlhdGUgZGF0YWJhc2UgY2hhbmdlLiAgSXQgZG9lcyBub3Qgc2VuZCBldmVudHMuCiAgICoKICAgKiBAcGFyYW0gc3RyaW5nICR1c2VybmFtZQogICAqIEBwYXJhbSBzdHJpbmcgJHBhc3N3b3JkICAgICBUaGUgcGxhaW50ZXh0IHBhc3N3b3JkCiAgICogQHBhcmFtIHN0cmluZyAkZ3JvdXBzICAgICAgIEEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgZ3JvdXAgbmFtZXMgdGhhdCB0aGUgdXNlciBtdXN0IGJlIGEgbWVtYmVyIG9mLgogICAqIEBwYXJhbSBzdHJpbmcgJGlnbm9yZWQKICAgKiBAcGFyYW0gYm9vbCAgICRmb3JjZV9sb2dvdXQgT3B0aW9uYWxseSBmb3JjZSB0aGUgdXNlciB0byBsb2dvdXQgYmVmb3JlIGxvZ2dpbmcgaGltIGluIGFnYWluLgogICAqCiAgICogQHJldHVybiBhcnJheXxpbnRbXXx2b2lkW10KICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gTG9naW4oJHVzZXJuYW1lLCAkcGFzc3dvcmQsICRncm91cHMgPSAnJywgJGlnbm9yZWQgPSBGQUxTRSwgJGZvcmNlX2xvZ291dCA9IEZBTFNFKQogIHsKICAgIAogICAgJGRiICAgPSAkdGhpcy0+R2V0RGIoKTsKICAgICRtb2QgID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgCiAgICBpZighJHRoaXMtPkNoZWNrUGFzc3dvcmQoJHVzZXJuYW1lLCAkcGFzc3dvcmQsICRncm91cHMpKQogICAgewogICAgICAkdWlkID0gJHRoaXMtPkdldFVzZXJJRCgkdXNlcm5hbWUpOwogICAgICAKICAgICAgaWYoISR1aWQpIHsgJHVpZCA9IC0xOyB9CiAgICAgIAogICAgICAkdGhpcy0+YWRkX2hpc3RvcnkoJHVpZCwgJ2ZhaWwnKTsKICAgICAgCiAgICAgIHJldHVybiBbRkFMU0UsICRtb2QtPkxhbmcoJ2Vycm9yX2xvZ2luZmFpbGVkJyldOwogICAgfQogICAgCiAgICAkdWlkID0gJHRoaXMtPkdldFVzZXJJRCgkdXNlcm5hbWUpOwogICAgCiAgICBpZighJHVpZCkKICAgIHsKICAgICAgcmV0dXJuIFtGQUxTRSwgJG1vZC0+TGFuZygnZXJyb3JfdXNlcm5vdGZvdW5kJyldOwogICAgfQogICAgCiAgICBpZigkZm9yY2VfbG9nb3V0KQogICAgewogICAgICAkdGhpcy0+TG9nb3V0VXNlcigkdWlkKTsKICAgIH0KICAgIAogICAgaWYoISR0aGlzLT5DYW5Vc2VyTG9naW4oJHVpZCkpCiAgICB7CiAgICAgIHJldHVybiBbRkFMU0UsICRtb2QtPkxhbmcoJ2Vycm9yX2FjY291bnRleHBpcmVkJyldOwogICAgfQogICAgCiAgICBpZigwID09PSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdhbGxvd19yZXBlYXRlZF9sb2dpbnMnKSkKICAgIHsKICAgICAgLy8gbWFrZSBzdXJlIHRoaXMgdXNlciBpc24ndCBhbHJlYWR5IGxvZ2dlZCBpbgogICAgICAkcSAgICAgICAgPSAnU0VMRUNUICogRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc19sb2dnZWRpbiBXSEVSRSBVU0VSSUQgPSA/JzsKICAgICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxLCBbJHVpZF0pOwogICAgICAKICAgICAgaWYoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSkKICAgICAgewogICAgICAgIHJldHVybiBbRkFMU0UsICRtb2QtPkxhbmcoJ2Vycm9yX25vcmVwZWF0ZWRsb2dpbnMnKV07CiAgICAgIH0KICAgIH0KICAgIAogICAgLy8gYWN0dWFsbHkgZG9lcyB0aGUgbG9nZ2luZyBpbi4KICAgICR0aGlzLT5fc2V0X3NhdmVkX2xvZ2luZGV0YWlscyhbJ3VpZCcgPT4gJHVpZCwgJ3RpbWUnID0+IHRpbWUoKV0sIFRSVUUpOwogICAgCiAgICAvLyBhbmQgYWRkIGhpc3RvcnkgaW5mbwogICAgYXVkaXQoJHVpZCwgJG1vZC0+R2V0TmFtZSgpLCAiJHVzZXJuYW1lIGxvZ2dlZCBpbiIpOwogICAgJHRoaXMtPmFkZF9oaXN0b3J5KCR1aWQsICdsb2dpbicpOwogICAgCiAgICAvLyBzZW5kIHRoZSBldmVudC4KICAgICRpcCA9IFx4dF91dGlsczo6Z2V0X3JlYWxfaXAoKTsKICAgIFxDTVNNU1xIb29rbWFuYWdlcjo6ZG9faG9vaygnTUFNUzo6T25Mb2dpbicsIFsnaWQnID0+ICR1aWQsICd1c2VybmFtZScgPT4gJHVzZXJuYW1lLCAnaXAnID0+ICRpcF0pOwogICAgCiAgICByZXR1cm4gWyR1aWRdOwogIH0KICAKICAvKioKICAgKiB1c2VyaWQgYXBpIG1ldGhvZAogICAqCiAgICogQHBhcmFtICR1aWQKICAgKiBAcGFyYW0gJGdpZAogICAqCiAgICogQHJldHVybiBib29sCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEFzc2lnblVzZXJUb0dyb3VwKCR1aWQsICRnaWQpCiAgewogICAgJHVpZCA9IChpbnQpJHVpZDsKICAgICRnaWQgPSAoaW50KSRnaWQ7CiAgICAKICAgIGlmKCR1aWQgPCAxIHx8ICRnaWQgPCAxKSB7IHJldHVybiBGQUxTRTsgfQogICAgCiAgICAvLyB2YWxpZGF0ZSB0aGUgdXNlciBpZAogICAgaWYoISR0aGlzLT5Vc2VyRXhpc3RzQnlJRCgkdWlkKSkgeyByZXR1cm4gRkFMU0U7IH0KICAgIAogICAgLy8gdmFsaWRhdGUgdGhlIGdyb3VwIGlkCiAgICBpZighJHRoaXMtPkdyb3VwRXhpc3RzQnlJRCgkZ2lkKSkgeyByZXR1cm4gRkFMU0U7IH0KICAgIAogICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAvLyBtYWtlIHN1cmUgaXQgYWxyZWFkeSBkb2Vzbid0IGV4aXN0CiAgICAkcSAgID0gJ1NFTEVDVCAqIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfYmVsb25ncyBXSEVSRSB1c2VyaWQgPSA/IEFORCBncm91cGlkID0gPyc7CiAgICAkdG1wID0gJGRiLT5HZXRSb3coJHEsIFskdWlkLCAkZ2lkXSk7CiAgICAKICAgIGlmKCR0bXApIHsgcmV0dXJuIFRSVUU7IH0KICAgIAogICAgLy8gYWRkIHRoZSByZWNvcmQgdG8gdGhlIHRhYmxlIHRvIG1ha2UgdGhpcwogICAgLy8gdXNlciBhIG1lbWJlciBvZiB0aGlzIGdyb3VwCiAgICAkcSAgICAgICAgPSAnSU5TRVJUIElOVE8gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfYmVsb25ncyAodXNlcmlkLCBncm91cGlkKSBWQUxVRVMgKD8sPyknOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxLCBbJHVpZCwgJGdpZF0pOwogICAgCiAgICByZXR1cm4gKEZBTFNFICE9PSAkZGJyZXN1bHQpOwogIH0KICAKICAvKioKICAgKiB1c2VyaWQgYXBpIG1ldGhvZAogICAqCiAgICogQHBhcmFtICRwYXNzd29yZAogICAqCiAgICogQHJldHVybiBib29sCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIElzVmFsaWRQYXNzd29yZCgkcGFzc3dvcmQpCiAgewogICAgLy8gYSBwYXNzd29yZCBpcyB2YWxpZCwgaWYgaXQncyBsZW5ndGggaXMKICAgIC8vIHdpdGhpbiBjZXJ0YWluIHJhbmdlcwogICAgJG1vZHVsZSAgICAgICAgPSAkdGhpcy0+R2V0TW9kdWxlKCk7CiAgICAkbWlubGVuICAgICAgICA9ICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ21pbl9wYXNzd29yZGxlbmd0aCcsIDYpOwogICAgJG1heGxlbiAgICAgICAgPSAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdtYXhfcGFzc3dvcmRsZW5ndGgnLCAyMCk7CiAgICAkZW5oYW5jZWRwdyAgICA9IChpbnQpJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgnZW5oYW5jZWRfcGFzc3dvcmQnLCAwKTsKICAgICRyZXF1aXJlZGNoYXJzID0gJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgncGFzc3dvcmRfcmVxdWlyZWRjaGFycycpOwogICAgJGxlbiAgICAgICAgICAgPSBzdHJsZW4oJHBhc3N3b3JkKTsKICAgIAogICAgaWYoJGxlbiA8ICRtaW5sZW4gfHwgJGxlbiA+ICRtYXhsZW4pIHsgcmV0dXJuIEZBTFNFOyB9CiAgICAKICAgIGlmKCRlbmhhbmNlZHB3KQogICAgewogICAgICBpZighcHJlZ19tYXRjaCgnI1tBLVpdIycsICRwYXNzd29yZCkpIHsgcmV0dXJuIEZBTFNFOyB9CiAgICAgIAogICAgICBpZighcHJlZ19tYXRjaCgnI1swLTldIycsICRwYXNzd29yZCkpIHsgcmV0dXJuIEZBTFNFOyB9CiAgICAgIAogICAgICAvLyAgJHRtcCA9IHN0cnBicmsoJHBhc3N3b3JkLCAnIWYnKTsgPz8/PyBKTSBUT0RPIHdoeSB3YXMgdGhpcyBoZXJlIGF0IGFsbAogICAgICAKICAgICAgaWYoJHJlcXVpcmVkY2hhcnMgJiYgRkFMU0UgPT09IHN0cnBicmsoJHBhc3N3b3JkLCAkcmVxdWlyZWRjaGFycykpICB7IHJldHVybiBGQUxTRTsgfQogICAgfQogICAgCiAgICByZXR1cm4gVFJVRTsKICB9CiAgCiAgLyoqCiAgICogdXNlcmlkIGFwaSBtZXRob2QKICAgKgogICAqIEBwYXJhbSAkaWQKICAgKgogICAqIEByZXR1cm4gYXJyYXl8Ym9vbAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVVc2VyRnVsbCgkaWQpCiAgewogICAgJGRiICAgICAgID0gJHRoaXMtPmdldERiKCk7CiAgICAkaW5fdHJhbnMgPSBOVUxMOwogICAgCiAgICB0cnkKICAgIHsKICAgICAgJGlkID0gKGludCkkaWQ7CiAgICAgIAogICAgICBpZigkaWQgPCAxKQogICAgICB7CiAgICAgICAgcmV0dXJuIFtGQUxTRSwgJ0ludmFsaWQgVUlEJ107CiAgICAgIH0KICAgICAgCiAgICAgICRyZXMgPSAkdGhpcy0+R2V0VXNlckluZm8oJGlkKTsKICAgICAgCiAgICAgIGlmKCFpc19hcnJheSgkcmVzKSB8fCBGQUxTRSA9PT0gJHJlc1swXSkKICAgICAgewogICAgICAgIHJldHVybiBbRkFMU0UsICdJbnZhbGlkIFVJRCddOwogICAgICB9CiAgICAgIAogICAgICAkdXNlcm5hbWUgPSAkcmVzWzFdWyd1c2VybmFtZSddOwogICAgICAKICAgICAgLy8gc2VuZCB0aGUgZXZlbnQuLi4gYmVmb3JlIHdlIGFjdHVhbGx5IGRlbGV0ZSBzdHVmZi4KICAgICAgJHBhcm1zICAgICAgICAgICAgID0gW107CiAgICAgICRwYXJtc1snaWQnXSAgICAgICA9ICRpZDsKICAgICAgJHBhcm1zWyd1c2VybmFtZSddID0gJHVzZXJuYW1lOwogICAgICBDTVNNU1xIb29rTWFuYWdlcjo6ZG9faG9vaygnTUFNUzo6T25EZWxldGVVc2VyJywgJHBhcm1zKTsKICAgICAgCiAgICAgIC8vIGxvZyB0aGUgdXNlciBvdXQKICAgICAgJHRoaXMtPkxvZ291dFVzZXIoJGlkKTsKICAgICAgCiAgICAgICRkYi0+QmVnaW5UcmFucygpOwogICAgICAkaW5fdHJhbnMgPSBUUlVFOwogICAgICAKICAgICAgLy8gZGVsZXRlIHVzZXIgcHJvcGVydGllcwogICAgICAkdGhpcy0+RGVsZXRlQWxsVXNlclByb3BlcnRpZXNGdWxsKCRpZCk7CiAgICAgIAogICAgICAvLyBkZWxldGUgdXNlciBmcm9tIGdyb3VwcwogICAgICAkcmV0ID0gJHRoaXMtPlJlbW92ZVVzZXJGcm9tR3JvdXAoJGlkLCAnJyk7CiAgICAgIAogICAgICBpZihGQUxTRSA9PT0gJHJldFswXSkKICAgICAgewogICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignUHJvYmxlbSByZW1vdmluZyB1c2VyIGZyb20gZ3JvdXAnKTsKICAgICAgfQogICAgICAKICAgICAgLy8gZGVsZXRlIHRoZSB1c2VyIGhpc3RvcnkKICAgICAgJHEgICAgICAgID0gJ0RFTEVURSBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX2hpc3RvcnkgV0hFUkUgdXNlcmlkID0gPyc7CiAgICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcSwgWyRpZF0pOwogICAgICAKICAgICAgLy8gZGVsZXRlIHVzZXIgcmVjb3JkCiAgICAgICRxICAgICAgICA9ICdERUxFVEUgRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc191c2VycyBXSEVSRSBpZCA9ID8nOwogICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHEsIFskaWRdKTsKICAgICAgCiAgICAgIC8vIGFuZCBkZWxldGUgYW55dGhpbmcgZnJvbSB0aGUgdGVtcGNvZGVzIHRhYmxlIHRvbwogICAgICAkcSAgICAgICAgPSAnREVMRVRFIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfdGVtcGNvZGUgV0hFUkUgdXNlcmlkID0gPyc7CiAgICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcSwgWyRpZF0pOwogICAgICAKICAgICAgJHRoaXMtPl91c2VyaWRieW5hbWUgPSBbXTsKICAgICAgbWFtc191c2VyX2NhY2hlOjpkZWxfdXNlcigkaWQpOwogICAgICAkZGItPkNvbW1pdFRyYW5zKCk7CiAgICAgIAogICAgICAkcGFybXMgICAgICAgICAgICAgPSBbXTsKICAgICAgJHBhcm1zWydpZCddICAgICAgID0gJGlkOwogICAgICAkcGFybXNbJ3VzZXJuYW1lJ10gPSAkdXNlcm5hbWU7CiAgICAgIENNU01TXEhvb2tNYW5hZ2VyOjpkb19ob29rKCdNQU1TOjpBZnRlckRlbGV0ZVVzZXInLCAkcGFybXMpOwogICAgICAKICAgICAgcmV0dXJuIFtUUlVFLCAnJ107CiAgICB9CiAgICBjYXRjaChcRXhjZXB0aW9uICRlKQogICAgewogICAgICBpZigkaW5fdHJhbnMpCiAgICAgIHsKICAgICAgICAkZGItPlJvbGxiYWNrVHJhbnMoKTsKICAgICAgfQogICAgICAKICAgICAgJG1vZCA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgICAgYXVkaXQoJGlkLCAkbW9kLT5HZXROYW1lKCksICdQcm9ibGVtIGRlbGV0aW5nIHVzZXI6ICcgLiAkZS0+R2V0TWVzc2FnZSgpKTsKICAgICAgXHh0X3V0aWxzOjpsb2dfZXhjZXB0aW9uKCRlKTsKICAgICAgCiAgICAgIHJldHVybiBbRkFMU0UsICRlLT5nZXRNZXNzYWdlKCldOwogICAgfQogIH0KICAKICAvKioKICAgKiBAcGFyYW0gYm9vbCAkd2l0aF9jb3VudAogICAqLwogIHByaXZhdGUgZnVuY3Rpb24gX2dldF9ncm91cGluZm8oJHdpdGhfY291bnQgPSBGQUxTRSkKICB7CiAgICBpZighaXNfYXJyYXkoJHRoaXMtPl9ncm91cGluZm9fY2FjaGUpKQogICAgewogICAgICAkYXV0aF9jb25zdW1lciA9IG1hbXNfdXRpbHM6OmdldF9hdXRoX2NvbnN1bWVyKCk7CiAgICAgIAogICAgICBpZigkYXV0aF9jb25zdW1lci0+aGFzX2NhcGFiaWxpdHkoJGF1dGhfY29uc3VtZXI6OkNBUEFCSUxJVFlfTElTVEdST1VQUykpCiAgICAgIHsKICAgICAgICAkdG1wICAgICAgICAgICAgICAgICAgICA9ICRhdXRoX2NvbnN1bWVyLT5nZXRfZ3JvdXBfbGlzdChUUlVFKTsKICAgICAgICAkdGhpcy0+X2dyb3VwaW5mb19jYWNoZSA9IFtdOwogICAgICAgIAogICAgICAgIGlmKCAhY291bnQoJHRtcCkgKSB7IHJldHVybjsgfQogICAgICAgIAogICAgICAgICRvdXQgPSBbXTsKICAgICAgICBmb3JlYWNoKCR0bXAgYXMgJGdpZCA9PiAkcmVjKQogICAgICAgIHsKICAgICAgICAgICR0bXAyID0gWydpZCcgPT4gJGdpZCwgJ2dyb3VwZGVzYycgPT4gJyddOwogICAgICAgICAgCiAgICAgICAgICBpZihpc19zdHJpbmcoJHJlYykgJiYgIWlzX2FycmF5KCRyZWMpKQogICAgICAgICAgewogICAgICAgICAgICAkdG1wMlsnZ3JvdXBuYW1lJ10gPSAkcmVjOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZihpc3NldCgkcmVjWyduYW1lJ10pKQogICAgICAgICAgewogICAgICAgICAgICAkdG1wMlsnZ3JvdXBuYW1lJ10gPSAkcmVjWyduYW1lJ107CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmKGlzc2V0KCRyZWNbJ2dyb3VwbmFtZSddKSkKICAgICAgICAgIHsKICAgICAgICAgICAgJHRtcDJbJ2dyb3VwbmFtZSddID0gJHJlY1snZ3JvdXBuYW1lJ107CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlCiAgICAgICAgICB7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgCiAgICAgICAgICBpZihpc19hcnJheSgkcmVjKSkKICAgICAgICAgIHsKICAgICAgICAgICAgaWYoaXNzZXQoJHJlY1snZGVzYyddKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICR0bXAyWydncm91cGRlc2MnXSA9ICRyZWNbJ2Rlc2MnXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKGlzc2V0KCRyZWNbJ2Rlc2NyaXB0aW9uJ10pKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgJHRtcDJbJ2dyb3VwZGVzYyddID0gJHJlY1snZGVzY3JpcHRpb24nXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKGlzc2V0KCRyZWNbJ2dyb3VwZGVzYyddKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICR0bXAyWydncm91cGRlc2MnXSA9ICRyZWNbJ2dyb3VwZGVzYyddOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBpZihpc3NldCgkcmVjWydjb3VudCddKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICR0bXAyWydjb3VudCddID0gJHJlY1snY291bnQnXTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgCiAgICAgICAgICAkb3V0WyRnaWRdID0gJHRtcDI7CiAgICAgICAgfQogICAgICAgICR0aGlzLT5fZ3JvdXBpbmZvX2NhY2hlID0gJG91dDsKICAgICAgICAKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgCiAgICAgIC8vIHRoZSBjb25zdW1lciBkb2VzIG5vdCBwcm92aWRlIGdyb3VwIGluZm8uLi4uIHNvIHdlIGdvdHRhIGxpc3QgZW0uCiAgICAgICRkYiAgICA9ICR0aGlzLT5HZXREYigpOwogICAgICAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc19ncm91cHMnOwogICAgICBpZigkd2l0aF9jb3VudCkKICAgICAgewogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgZy4qLGNvdW50KGIudXNlcmlkKSBBUyBjb3VudCBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX2dyb3VwcyBnCiAgICAgICAgICAgICAgICAgIExFRlQgSk9JTiAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc19iZWxvbmdzIGIKICAgICAgICAgICAgICAgICAgT04gZy5pZCA9IGIuZ3JvdXBpZCBHUk9VUCBCWSBnLmlkLCBnLmdyb3VwbmFtZSwgZy5ncm91cGRlc2MnOwogICAgICB9CiAgICAgICRkYnIgPSAkZGItPkdldEFycmF5KCRxdWVyeSk7CiAgICAgIAogICAgICBpZihpc19hcnJheSgkZGJyKSkKICAgICAgewogICAgICAgICR0aGlzLT5fZ3JvdXBpbmZvX2NhY2hlID0geHRfYXJyYXk6OnRvX2hhc2goJGRiciwgJ2lkJyk7CiAgICAgIH0KICAgIH0KICB9CiAgCiAgLyoqCiAgICogdXNlcmlkIGFwaSBtZXRob2QKICAgKiBAcGFyYW0gJGdpZAogICAqIHJldHVybnMgYW4gYXJyYXkgPz8/CiAgICogQHJldHVybiBib29sfG1peGVkCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwSW5mbygkZ2lkKQogIHsKICAgICR0aGlzLT5fZ2V0X2dyb3VwaW5mbygpOwogICAgCiAgICBpZihpc19hcnJheSgkdGhpcy0+X2dyb3VwaW5mb19jYWNoZSkgJiYgaXNzZXQoJHRoaXMtPl9ncm91cGluZm9fY2FjaGVbJGdpZF0pKQogICAgewogICAgICByZXR1cm4gJHRoaXMtPl9ncm91cGluZm9fY2FjaGVbJGdpZF07CiAgICB9CiAgfQogIAogIC8qKgogICAqIFJldHVybiBhbiBhcnJheSBvZiB1c2VyIGluZm9ybWF0aW9uCiAgICoKICAgKiBAcGFyYW0gYXJyYXkgQW4gYXJyYXkgb2YgaW50ZWdlciB1c2VyIGlkcwogICAqIEBwYXJhbSBib29sZWFuIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRvIHJldHVybiBwcm9wZXJ0eSBpbmZvcm1hdGlvbgogICAqCiAgICogQHJldHVybiBhcnJheSBvZiB1c2VyIGluZm8uICBvciBudWxsLgogICAqIEB0aHJvd3MgXENtc0V4Y2VwdGlvbgogICAqIEBkZXByZWNhdGVkCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEdldEJ1bGtVc2VySW5mbygkdWlkcywgJGRlZXAgPSBUUlVFKQogIHsKICAgIG1hbXNfdXNlcl9jYWNoZTo6bG9hZF91c2VycygkdWlkcywgJGRlZXApOwogICAgCiAgICAkb3V0ID0gW107CiAgICAKICAgIGZvcmVhY2goJHVpZHMgYXMgJG9uZSkKICAgIHsKICAgICAgJG9uZSA9IChpbnQpJG9uZTsKICAgICAgCiAgICAgIGlmKCRvbmUgPCAxKSB7IGNvbnRpbnVlOyB9CiAgICAgIAogICAgICAkdCA9IG1hbXNfdXNlcl9jYWNoZTo6Z2V0X3VzZXJfbm9sb2FkKCRvbmUpOwogICAgICAKICAgICAgaWYoaXNfYXJyYXkoJHQpKSB7ICRvdXRbXSA9ICR0OyB9CiAgICB9CiAgICAKICAgIHJldHVybiAkb3V0OwogIH0KICAKICAKICAvKioKICAgKiAvLyB1c2VyaWQgYXBpIG1ldGhvZAogICAqIC8vcmV0dXJucyBhbiBhcnJheQogICAqIC8vIHNlY29uZCBlbGVtZW50IG9mIGFycmF5IG1heSBiZSBhbiBhcnJheSA/Pz8KICAgKgogICAqIEBwYXJhbSAgICAgICR1aWQKICAgKiBAcGFyYW0gYm9vbCAkZGVlcAogICAqCiAgICogQHJldHVybiBhcnJheQogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBHZXRVc2VySW5mbygkdWlkLCAkZGVlcCA9IEZBTFNFKQogIHsKICAgIGlmKCEkdWlkKSB7IHJldHVybiBbRkFMU0UsICdDb3VsZCBub3QgZmluZCB1c2VyICcgLiAkdWlkIF07IH0KICAgIAogICAgJHJvdyA9IG1hbXNfdXNlcl9jYWNoZTo6Z2V0X3VzZXIoJHVpZCwgJGRlZXApOwogICAgCiAgICBpZighaXNfYXJyYXkoJHJvdykpIHsgcmV0dXJuIFtGQUxTRSwgJ0NvdWxkIG5vdCBmaW5kIHVzZXIgaW5mbyBmb3IgdXNlcicgLiAkdWlkIF07IH0KICAgIAogICAgcmV0dXJuIFtUUlVFLCAkcm93XTsKICB9CiAgLyoqCiAgICogLy8gdXNlcmlkIGFwaSBtZXRob2QKICAgKiAvLyByZXR1cm5zIGFuIGFycmF5CiAgICogLy8gc2Vjb25kIGVsZW1lbnQgb2YgYXJyYXkgbWF5IGJlIGFuIGFycmF5CiAgICogQHBhcmFtICR1c2VybmFtZQogICAqCiAgICogQHJldHVybiBhcnJheQogICAqLwoKICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlckluZm9CeU5hbWUoJHVzZXJuYW1lKQogIHsKICAgIGlmKCEkdXNlcm5hbWUpIHsgcmV0dXJuIFtGQUxTRSwgJ0ludmFsaWQgdXNlcm5hbWUgJyAuICR1c2VybmFtZV07IH0KICAgIAogICAgJHVpZCA9ICR0aGlzLT5HZXRVc2VySUQoJHVzZXJuYW1lKTsKICAgIAogICAgcmV0dXJuICR0aGlzLT5HZXRVc2VySW5mbygkdWlkKTsKICB9CiAgCiAgLyoqCiAgICogQHBhcmFtICAgICAgJHByb3BuYW1lCiAgICogQHBhcmFtIG51bGwgJHByb3B2YWx1ZQogICAqIEBub3RlIGNhbm5vdCB3b3JrIG9uIGVuY3J5cHRlZCBwcm9wZXJ0aWVzLgogICAqCiAgICogQHJldHVybiBhcnJheQogICAqLwogIHByb3RlY3RlZCBmdW5jdGlvbiBHZXRVc2VySW5mb0J5UHJvcGVydHkoJHByb3BuYW1lLCAkcHJvcHZhbHVlID0gTlVMTCkKICB7CiAgICAkbW9kdWxlID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgCiAgICAvKiogQHZhciBhcnJheSAkZGVmbnMgKi8KICAgICRkZWZucyA9ICR0aGlzLT5HZXRQcm9wZXJ0eURlZm5zKCk7CiAgICAKICAgIGlmKCFpc19hcnJheSgkZGVmbnMpKQogICAgewogICAgICByZXR1cm4gW0ZBTFNFLCAkbW9kdWxlLT5MYW5nKCdlcnJvcl9kYmVycm9yJyldOwogICAgfQogICAgCiAgICBpZighaXNzZXQoJGRlZm5zWyRwcm9wbmFtZV0pKQogICAgewogICAgICByZXR1cm4gW0ZBTFNFLCAkbW9kdWxlLT5MYW5nKCdlcnJvcl9kYmVycm9yJyldOwogICAgfQogICAgCiAgICBpZigkZGVmbnNbJHByb3BuYW1lXVsnZW5jcnlwdCddKQogICAgewogICAgICByZXR1cm4gW0ZBTFNFLCAkbW9kdWxlLT5MYW5nKCdlcnJvcl9kYmVycm9yJyldOwogICAgfQogICAgCiAgICAkZGIgICAgPSAkdGhpcy0+R2V0RGIoKTsKICAgICRwYXJtcyA9IFskcHJvcG5hbWVdOwogICAgJHF1ZXJ5ID0gJ1NFTEVDVCB1c2VyaWQgRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc19wcm9wZXJ0aWVzIHVwIFdIRVJFIHVwLnRpdGxlID0gPyc7CiAgICAKICAgIGlmKE5VTEwgIT09ICRwcm9wdmFsdWUpCiAgICB7CiAgICAgICRxdWVyeSAgIC49ICcgQU5EIGRhdGEgPSA/JzsKICAgICAgJHBhcm1zW10gPSAkcHJvcHZhbHVlOwogICAgfQogICAgCiAgICAkdWlkID0gJGRiLT5HZXRPbmUoJHF1ZXJ5LCAkcGFybXMpOwogICAgCiAgICBpZighJHVpZCkKICAgIHsKICAgICAgcmV0dXJuIFtGQUxTRSwgJG1vZHVsZS0+TGFuZygnZXJyb3JfdXNlcm5vdGZvdW5kJyldOwogICAgfQogICAgCiAgICByZXR1cm4gJHRoaXMtPkdldFVzZXJJbmZvKCR1aWQpOwogIH0KICAKICAvKioKICAgKiBAcGFyYW0gICAgICAgICR1aWQKICAgKiBAcGFyYW0gc3RyaW5nICRhY3Rpb24KICAgKiBAcGFyYW0gaW50ICAgICRjb3VudAogICAqCiAgICogQHJldHVybiBhcnJheQogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBHZXRVc2VySGlzdG9yeSgkdWlkLCAkYWN0aW9uID0gJycsICRjb3VudCA9IC0xKQogIHsKICAgICRkYiAgICA9ICR0aGlzLT5HZXREYigpOwogICAgJHBhcm1zID0gWyR1aWRdOwogICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfaGlzdG9yeSBXSEVSRSB1c2VyaWQgPSA/JzsKICAgIAogICAgaWYoIWVtcHR5KCRhY3Rpb24pKQogICAgewogICAgICAkcXVlcnkgICAuPSAnIEFORCBhY3Rpb24gPSA/JzsKICAgICAgJHBhcm1zW10gPSAkYWN0aW9uOwogICAgfQogICAgJHF1ZXJ5IC49ICcgT1JERVIgQlkgcmVmZGF0ZSBERVNDJzsKICAgIAogICAgJHJlc3VsdHMgPSBbXTsKICAgIAogICAgaWYoJGNvdW50IDw9IDApCiAgICB7CiAgICAgICRyZXN1bHRzID0gJGRiLT5HZXRBcnJheSgkcXVlcnksICRwYXJtcyk7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICRkYnIgPSAkZGItPlNlbGVjdExpbWl0KCRxdWVyeSwgKGludCkkY291bnQpOwogICAgICAKICAgICAgd2hpbGUoJGRiciAmJiAoJHJvdyA9ICRkYnItPkZldGNoUm93KCkpKQogICAgICB7CiAgICAgICAgJHJlc3VsdHNbXSA9ICRyb3c7CiAgICAgIH0KICAgICAgCiAgICAgIGlmKDEgPT09IGNvdW50KCRyZXN1bHRzKSkKICAgICAgewogICAgICAgICR0bXAgICAgID0gJHJlc3VsdHNbMF07CiAgICAgICAgJHJlc3VsdHMgPSAkdG1wOwogICAgICB9CiAgICB9CiAgICAKICAgIHJldHVybiAkcmVzdWx0czsKICB9CiAgCiAgLyoqCiAgICogQHBhcmFtIHN0cmluZyAkbm90X2FjdGl2ZV9zaW5jZQogICAqCiAgICogQHJldHVybiBhcnJheQogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBHZXRMb2dnZWRJblVzZXJzKCRub3RfYWN0aXZlX3NpbmNlID0gJycpCiAgewogICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAKICAgICRxICAgICAgPSAnU0VMRUNUIHVzZXJpZCBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX2xvZ2dlZGluJzsKICAgICRxcGFybXMgPSBbXTsKICAgIAogICAgaWYoJG5vdF9hY3RpdmVfc2luY2UpCiAgICB7CiAgICAgICRxICAgICAgICAuPSAnIFdIRVJFIGxhc3R1c2VkIDwgPyc7CiAgICAgICRxcGFybXNbXSA9ICRub3RfYWN0aXZlX3NpbmNlOwogICAgfQogIAogICAgcmV0dXJuICRkYi0+R2V0Q29sKCRxLCAkcXBhcm1zKTsKICB9CiAgCiAgLyoqCiAgICogdXNlcmlkIGFwaSBtZXRob2QKICAgKiByZXR1cm5zIGFuIGludCBvciBmYWxzZQogICAqCiAgICogQHBhcmFtICRncm91cGlkCiAgICoKICAgKiBAcmV0dXJuIGJvb2x8aW50CiAgICovCiAgcHVibGljIGZ1bmN0aW9uIENvdW50VXNlcnNJbkdyb3VwKCRncm91cGlkKQogIHsKICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwogICAgCiAgICAkcGFybXMgPSBbXTsKICAgIAogICAgaWYoJGdyb3VwaWQgPT0gJycgfHwgJGdyb3VwaWQgPCAwKQogICAgewogICAgICAkcSA9ICdTRUxFQ1QgY291bnQoaWQpIGFzIG51bSBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX3VzZXJzIFdIRVJFIGNvYWxlc2NlKGRpc2FibGVkLDApID0gMCc7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICRxICAgICAgID0gJ1NFTEVDVCBjb3VudChpZCkgYXMgbnVtIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfdXNlcnMsJyAuCiAgICAgICAgICAgICAgICAgQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc19iZWxvbmdzIFdIRVJFIGlkPXVzZXJpZCBBTkQgZ3JvdXBpZCA9ID8gQU5EIGNvYWxlc2NlKGRpc2FibGVkLDApID0gMCc7CiAgICAgICRwYXJtc1tdID0gJGdyb3VwaWQ7CiAgICB9CiAgICAKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcSwgJHBhcm1zKTsKICAgIAogICAgaWYoISRkYnJlc3VsdCkgeyByZXR1cm4gRkFMU0U7IH0KICAKICAgIC8qKiBAdmFyIGFycmF5ICRyb3cgKi8KICAgICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CiAgICAKICAgIHJldHVybiAkcm93WydudW0nXTsKICB9CiAgCiAgLyoqCiAgICogVE9ETyBSZXBsYWNlIHRoaXMgY29kZSB3aXRoIGEgdXNlciBxdWVyeQogICAqCiAgICogQHBhcmFtICRnaWQKICAgKgogICAqIEByZXR1cm4gYXJyYXl8Ym9vbAogICAqIEB0aHJvd3MgXENtc0V4Y2VwdGlvbgogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBHZXRGdWxsVXNlcnNJbkdyb3VwKCRnaWQpCiAgewogICAgJGRiICAgID0gJHRoaXMtPkdldERiKCk7CiAgICAkcXVlcnkgPSAnU0VMRUNUIHVzZXJpZCBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX2JlbG9uZ3MgV0hFUkUgZ3JvdXBpZCA9ID8nOwogICAgJHRtcCAgID0gJGRiLT5HZXRDb2woJHF1ZXJ5LCBbJGdpZF0pOwogICAgCiAgICBpZighJHRtcCkgeyByZXR1cm4gRkFMU0U7IH0KICAgIAogICAgbWFtc191c2VyX2NhY2hlOjpsb2FkX3VzZXJzKCR0bXAsIFRSVUUpOwogICAgJG91dCA9IFtdOwogICAgCiAgICBmb3JlYWNoKCR0bXAgYXMgJG9uZSkKICAgIHsKICAgICAgJG9uZSA9IChpbnQpJG9uZTsKICAgICAgCiAgICAgIGlmKCRvbmUgPCAxKSB7IGNvbnRpbnVlOyB9CiAgICAgIAogICAgICAkcmVjID0gbWFtc191c2VyX2NhY2hlOjpnZXRfdXNlcl9ub2xvYWQoJG9uZSwgVFJVRSk7CiAgICAgIAogICAgICBpZihpc19hcnJheSgkcmVjKSAmJiBpc3NldCgkcmVjWydmcHJvcHMnXSkpCiAgICAgIHsKICAgICAgICAkdG1wMiA9IFtdOwogICAgICAgIAogICAgICAgIGZvcmVhY2goJHJlY1snZnByb3BzJ10gYXMgJG9uZV9wcm9wKQogICAgICAgIHsKICAgICAgICAgICR0bXAyWyRvbmVfcHJvcFsndGl0bGUnXV0gPSAkb25lX3Byb3BbJ2RhdGEnXTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJHJlY1sncHJvcHMnXSA9ICR0bXAyOwogICAgICB9CiAgICAgIAogICAgICAkb3V0W10gPSAkcmVjOwogICAgfQogICAgCiAgICBpZiggY291bnQoJG91dCkgKSB7IHJldHVybiAkb3V0OyB9CiAgICAKICAgIHJldHVybiBGQUxTRTsKICB9CiAgCgogIC8qKgogICAqIHVzZXJpZCBhcGkgbWV0aG9kCiAgICogQHBhcmFtICRnaWQKICAgKgogICAqIEByZXR1cm4gYm9vbAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBHcm91cEV4aXN0c0J5SUQoJGdpZCkKICB7CiAgICAkZGF0YSA9ICR0aGlzLT5HZXRHcm91cEluZm8oJGdpZCk7CiAgICAKICAgIHJldHVybiAoRkFMU0UgIT09ICRkYXRhKTsKICB9CgogIC8qKgogICAqIHVzZXJpZCBhcGkgbWV0aG9kCiAgICoKICAgKiBAcGFyYW0gJG5hbWUKICAgKgogICAqIEByZXR1cm4gYm9vbAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBHcm91cEV4aXN0c0J5TmFtZSgkbmFtZSkKICB7CiAgICAkZ2lkID0gJHRoaXMtPkdldEdyb3VwSUQoJG5hbWUpOwogICAgCiAgICByZXR1cm4gKEZBTFNFICE9PSAkZ2lkKTsKICB9CiAgCiAgLyoqCiAgICogQHJldHVybiBib29sfHN0cmluZwogICAqLwogIGZ1bmN0aW9uIExvZ2dlZEluRW1haWwoKQogIHsKICAgICR1c2VyaWQgPSAkdGhpcy0+TG9nZ2VkSW5JZCgpOwogICAgCiAgICByZXR1cm4gJHRoaXMtPkdldEVtYWlsKCR1c2VyaWQpOwogIH0KICAKICAvKioKICAgKiBAcGFyYW0gJHVpZAogICAqCiAgICogQHJldHVybiBib29sfHN0cmluZwogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBHZXRFbWFpbCgkdWlkKQogIHsKICAgICRtb2R1bGUgPSAkdGhpcy0+R2V0TW9kdWxlKCk7CiAgICAkZGIgICAgID0gJHRoaXMtPkdldERiKCk7CiAgICAKICAgIGlmKCRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ3VzZXJuYW1lX2lzX2VtYWlsJykpCiAgICB7CiAgICAgICR0bXAgPSBtYW1zX3VzZXJfY2FjaGU6OmdldF91c2VyKCR1aWQpOwogICAgICAKICAgICAgaWYoICFpc19hcnJheSgkdG1wKSApIHsgcmV0dXJuIEZBTFNFOyB9CiAgICAgIAogICAgICAkcmVzdWx0ID0gJHRtcFsndXNlcm5hbWUnXTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgLy8gZ2V0IHRoZSB1c2VycyBmaXJzdCBlbWFpbCBhZGRyZXNzLgogICAgICAkcSAgICAgID0gJ1NFTEVDVCBkYXRhIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfcHJvcGRlZm4sJyAuCiAgICAgICAgICAgICAgICBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX3Byb3BlcnRpZXMgV0hFUkUgbmFtZT10aXRsZSBBTkQgdHlwZT0yIEFORCB1c2VyaWQgPSA/JzsKICAgICAgJHJlc3VsdCA9ICRkYi0+R2V0T25lKCRxLCBbJHVpZF0pOwogICAgfQogICAgCiAgICByZXR1cm4gJHJlc3VsdDsKICB9CiAgCiAgCiAgLyoqCiAgICogQHBhcmFtICAgICAgJGVtYWlsCiAgICogQHBhcmFtIGludCAgJHVpZAogICAqIEBwYXJhbSBib29sICRjaGVja19leGlzdGluZwogICAqIEBkZXByZWNhdGVkIHVzZSBcTUFNU1x1dGlsczo6aXNfdmFsaWRfZW1haWxfYWRkcmVzcwogICAqIEBzZWUgICAgICAgXE1BTVNcdXRpbHM6OmlzX3ZhbGlkX2VtYWlsX2FkZHJlc3MKICAgKgogICAqIEByZXR1cm4gYXJyYXkKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gSXNWYWxpZEVtYWlsQWRkcmVzcygkZW1haWwsICR1aWQgPSAtMSwgJGNoZWNrX2V4aXN0aW5nID0gRkFMU0UpCiAgewogICAgcmV0dXJuIE1BTVNcdXRpbHM6OmlzX3ZhbGlkX2VtYWlsX2FkZHJlc3MoJGVtYWlsLCAkdWlkLCAkY2hlY2tfZXhpc3RpbmcpOwogIH0KICAKICAvKioKICAgKiBAcmV0dXJuIHN0cmluZwogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBHZXRVc2VybmFtZVByb21wdCgpCiAgewogICAgJGNvbnN1bWVyID0gTUFNU1x1dGlsczo6Z2V0X2F1dGhfY29uc3VtZXIoKTsKICAgIAogICAgcmV0dXJuICRjb25zdW1lci0+Z2V0X3VzZXJuYW1lX3Byb21wdCgpOwogIH0KICAKICAKICAvKioKICAgKiB0b2RvOiBtb3ZlIHRoaXMgdG8gdXRpbHMuCiAgICogQHBhcmFtICAgICAgJHVzZXJuYW1lCiAgICogQHBhcmFtIGJvb2wgJGNoZWNrX2VtYWlsCiAgICogQHBhcmFtIGludCAgJHVpZAogICAqCiAgICogQHJldHVybiBib29sCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIElzVmFsaWRVc2VybmFtZSgkdXNlcm5hbWUsICRjaGVja19lbWFpbCA9IFRSVUUsICR1aWQgPSAtMSkKICB7CiAgICAkY29uc3VtZXIgPSBNQU1TXHV0aWxzOjpnZXRfYXV0aF9jb25zdW1lcigpOwogICAgCiAgICByZXR1cm4gJGNvbnN1bWVyLT52YWxpZGF0ZV91c2VybmFtZSgkdXNlcm5hbWUsICRjaGVja19lbWFpbCwgJHVpZCk7CiAgfQogIAogIC8qKgogICAqIHVzZXJpZCBhcGkgbWV0aG9kCiAgICoKICAgKiBAcGFyYW0gJHVpZAogICAqIEBwYXJhbSAkZ2lkCiAgICoKICAgKiBAcmV0dXJuIGFycmF5fGJvb2xbXQogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBSZW1vdmVVc2VyRnJvbUdyb3VwKCR1aWQsICRnaWQpCiAgewogICAgJHVpZCA9IChpbnQpJHVpZDsKICAgICRnaWQgPSAoaW50KSRnaWQ7CiAgICAkZGIgID0gXGNtc191dGlsczo6Z2V0X2RiKCk7CiAgICAKICAgIHRyeQogICAgewogICAgICBpZigkdWlkIDwgMSkgeyByZXR1cm4gW0ZBTFNFLCAnSW52YWxpZCBVSUQnXTsgfQogICAgICAKICAgICAgJGRiLT5CZWdpblRyYW5zKCk7CiAgICAgICRwYXJtcyA9IFskdWlkXTsKICAgICAgJHEgICAgID0gJ0RFTEVURSBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX2JlbG9uZ3MgV0hFUkUgdXNlcmlkID0gPyc7CiAgICAgIAogICAgICBpZigkZ2lkID4gMCkKICAgICAgewogICAgICAgICRxICAgICAgIC49ICcgQU5EIGdyb3VwaWQgPSA/JzsKICAgICAgICAkcGFybXNbXSA9ICRnaWQ7CiAgICAgIH0KICAgICAgJGRiLT5FeGVjdXRlKCRxLCAkcGFybXMpOwogICAgICAkZGItPkNvbW1pdFRyYW5zKCk7CiAgICAgIAogICAgICByZXR1cm4gW1RSVUUsICdVc2VyIHJlbW92ZWQgZnJvbSBncm91cCddOwogICAgfQogICAgY2F0Y2goXEV4Y2VwdGlvbiAkZSkKICAgIHsKICAgICAgJGRiLT5Sb2xsYmFja1RyYW5zKCk7CiAgICAgICRtb2QgPSAkdGhpcy0+R2V0TW9kdWxlKCk7CiAgICAgIGF1ZGl0KCR1aWQsICRtb2QtPkdldE5hbWUoKSwgJ0NvdWxkIG5vdCByZW1vdmUgdXNlciBmcm9tIGdyb3VwICcgLiAkZ2lkKTsKICAgICAgXHh0X3V0aWxzOjpsb2dfZXhjZXB0aW9uKCRlKTsKICAgICAgCiAgICAgIHJldHVybiBbRkFMU0UsICRlLT5nZXRNZXNzYWdlKCldOwogICAgfQogIH0KICAKICAvKioKICAgKiB1c2VyaWQgYXBpIG1ldGhvZAogICAqCiAgICogQHBhcmFtICAgICAgJGlkCiAgICogQHBhcmFtICAgICAgJG5hbWUKICAgKiBAcGFyYW0gbnVsbCAkZGVzYwogICAqCiAgICogQHJldHVybiBhcnJheQogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBTZXRHcm91cCgkaWQsICRuYW1lLCAkZGVzYyA9IE5VTEwpCiAgewogICAgJGlkICAgPSAoaW50KSRpZDsKICAgICRuYW1lID0gdHJpbSgkbmFtZSk7CiAgICAkZGVzYyA9IHRyaW0oJGRlc2MpOwogICAgJG1vZCA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgICR0aGlzLT5fZ3JvdXBpbmZvX2NhY2hlID0gTlVMTDsKICAgIAogICAgaWYoJGlkIDwgMSB8fCAhJG5hbWUpCiAgICB7CiAgICAgIHJldHVybiBbRkFMU0UsICRtb2QtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpXTsKICAgIH0KICAKICAgICRkYiAgPSAkdGhpcy0+R2V0RGIoKTsKICAgICRlaWQgPSAkdGhpcy0+R2V0R3JvdXBJRCgkbmFtZSk7CiAgICAKICAgIGlmKEZBTFNFICE9PSAkZWlkICYmICRpZCAhPT0gJGVpZCkKICAgIHsKICAgICAgcmV0dXJuIFtGQUxTRSwgJG1vZC0+TGFuZygnZXJyb3JfZ3JvdXBuYW1lX2V4aXN0cycpXTsKICAgIH0KICAgIAogICAgJHEgICAgICAgID0gJ1VQREFURSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc19ncm91cHMgU0VUIGdyb3VwbmFtZSA9ID8sIGdyb3VwZGVzYyA9ID8gV0hFUkUgaWQgPSA/JzsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcSwgWyRuYW1lLCAkZGVzYywgJGlkXSk7CiAgICAKICAgIGlmKCEkZGJyZXN1bHQpCiAgICB7CiAgICAgIHJldHVybiBbRkFMU0UsICRkYi0+RXJyb3JNc2coKV07CiAgICB9CiAgICAKICAgICR0aGlzLT5fZ3JvdXBpbmZvX2NhY2hlID0gTlVMTDsKICAgIAogICAgcmV0dXJuIFtUUlVFLCAnJ107CiAgfQogIAogIC8qKgogICAqIEBwYXJhbSAkdWlkCiAgICogQHBhcmFtICRwbGFpbl9wYXNzd29yZAogICAqCiAgICogQHJldHVybiBmYWxzZXxzdHJpbmd8bnVsbAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBFbmNyeXB0UGFzc3dvcmQoJHVpZCwgJHBsYWluX3Bhc3N3b3JkKQogIHsKICAgIC8qIHNob3VsZCBiZSBwcm90ZWN0ZWQgKi8KICAgICR1c2VfdXNlcnNhbHQgPSAkdGhpcy0+dXNlX3VzZXJzYWx0KCk7CiAgICAKICAgIGlmKCEkdXNlX3VzZXJzYWx0KQogICAgewogICAgICAvLyB0aGlzIGlzIHJlYWxseSwgcmVhbGx5IGJhZC4uIGJ1dCBrZXB0IGZvciBvbGQgaW5zdGFsbHMuCiAgICAgIGF1ZGl0KCcnLCAnTUFNUycsICdVc2VyIGlzIHVzaW5nIHVuc2FmZSBwYXNzd29yZCBlbmNyeXB0aW9uJyk7CiAgICAgIAogICAgICByZXR1cm4gbWQ1KCAkcGxhaW5fcGFzc3dvcmQgLiAkdGhpcy0+Z2V0X2JhZF9zYWx0KCkgKTsKICAgIH0KICAKICAgIGlmKDEgPT09ICR1c2VfdXNlcnNhbHQpCiAgICB7CiAgICAgICRkYiAgID0gJHRoaXMtPkdldERiKCk7CiAgICAgICRzYWx0ID0gJGRiLT5HZXRPbmUoJ1NFTEVDVCBzYWx0IEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfdXNlcnMgV0hFUkUgaWQgPSA/JywgWyR1aWRdKTsKICAgICAgCiAgICAgIGlmKCEkc2FsdCkKICAgICAgewogICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oCiAgICAgICAgICAnVXNpbmcgdXNlciBzYWx0ZWQgcGFzc3dvcmRzLCBidXQgbm8gc2FsdCBzZXQgZm9yIHRoaXMgdXNlciAob3IgdGhlIHVzZXIgY291bGQgbm90IGJlIGZvdW5kKScKICAgICAgICApOwogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gc2hhMSgkcGxhaW5fcGFzc3dvcmQgLiAkc2FsdCk7CiAgICB9CiAgCiAgICAvLyB1c2VfdXNlcnNhbHQgPT0gMgogICAgcmV0dXJuIHBhc3N3b3JkX2hhc2goJHBsYWluX3Bhc3N3b3JkLCBQQVNTV09SRF9CQ1JZUFQpOwogIH0KICAKICAvKioKICAgKiBAcGFyYW0gJHVpZAogICAqIEBwYXJhbSAkcGFzc3dvcmQKICAgKgogICAqIEByZXR1cm4gYXJyYXkKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gU2V0VXNlclBhc3N3b3JkKCR1aWQsICRwYXNzd29yZCkKICB7CiAgICAkdWlkICAgICAgPSAoaW50KSR1aWQ7CiAgICAkcGFzc3dvcmQgPSB0cmltKChzdHJpbmcpJHBhc3N3b3JkKTsKICAgICRtb2QgICAgICA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgIAogICAgaWYoJHVpZCA8IDEgfHwgISRwYXNzd29yZCkKICAgIHsKICAgICAgcmV0dXJuIFtGQUxTRSwgJG1vZC0+TGFuZygnZXJyb3JfaW52YWxpZHBhcmFtcycpXTsKICAgIH0KICAgIAogICAgaWYoISR1aWQpCiAgICB7CiAgICAgIHJldHVybiBbRkFMU0UsICRtb2QtPkxhbmcoJ2Vycm9yX2ludmFsaWRwYXJhbXMnKV07CiAgICB9CiAgICAKICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwogICAgCiAgICAvLyBnb2luZyBmb3J3YXJkLCB3ZSB1c2Ugbm8gc2FsdCBjb2x1bW4uCiAgICAkcHcgICAgICAgPSAkdGhpcy0+RW5jcnlwdFBhc3N3b3JkKCR1aWQsICRwYXNzd29yZCk7CiAgICAkcSAgICAgICAgPSAnVVBEQVRFICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX3VzZXJzIFNFVCBzYWx0ID0gTlVMTCwgcGFzc3dvcmQgPSA/IFdIRVJFIGlkID0gPyc7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHEsIFskcHcsICR1aWRdKTsKICAgIAogICAgaWYoISRkYnJlc3VsdCkKICAgIHsKICAgICAgcmV0dXJuIFtGQUxTRSwgJGRiLT5FcnJvck1zZygpXTsKICAgIH0KICAgIAogICAgbWFtc191c2VyX2NhY2hlOjpkZWxfdXNlcigkdWlkKTsKICAgIAogICAgcmV0dXJuIFtUUlVFLCAnJ107CiAgfQogIAogIC8qKgogICAqIEBwYXJhbSAgICAgICR1aWQKICAgKiBAcGFyYW0gYm9vbCAkZmxhZwogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBTZXRVc2VyRGlzYWJsZWQoJHVpZCwgJGZsYWcgPSBUUlVFKQogIHsKICAgICR1aWQgID0gKGludCkkdWlkOwogICAgJGZsYWcgPSAoYm9vbCkkZmxhZzsKICAgIAogICAgaWYoJHVpZCA8IDEpCiAgICB7CiAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0ludmFsaWQgdWlkIHBhc3NlZCB0byAnIC4gX19NRVRIT0RfXyk7CiAgICB9CiAgICAKICAgICRkYiAgICA9ICR0aGlzLT5HZXREYigpOwogICAgJHF1ZXJ5ID0gJ1VQREFURSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc191c2VycyBTRVQgZGlzYWJsZWQgPSA/IFdIRVJFIGlkID0gPyc7CiAgICAkZGJyICAgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBbJGZsYWcsICR1aWRdKTsKICAgIAogICAgaWYoISRkYnIpCiAgICB7CiAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ3Byb2JsZW0gc2V0dGluZyB1aWQgJyAuICR1aWQgLiAnIHRvIGRpc2FibGVkJyk7CiAgICB9CiAgICAKICAgIGlmKCRmbGFnKQogICAgewogICAgICAkdGhpcy0+TG9nb3V0VXNlcigkdWlkLCAndXNlciBkaXNhYmxlZCcpOwogICAgfQogICAgZWxzZQogICAgewogICAgICAkdGhpcy0+YWRkX2hpc3RvcnkoJHVpZCwgJ3VzZXIgZW5hYmxlZCcpOwogICAgfQogIH0KICAKICAvKioKICAgKiBAcGFyYW0gICAgICAkdWlkCiAgICogQHBhcmFtIGJvb2wgJGZsYWcKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gRm9yY2VQYXNzd29yZENoYW5nZSgkdWlkLCAkZmxhZyA9IFRSVUUpCiAgewogICAgJHVpZCAgPSAoaW50KSR1aWQ7CiAgICAkZmxhZyA9IChib29sKSRmbGFnOwogICAgCiAgICBpZigkdWlkIDwgMSkKICAgIHsKICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignSW52YWxpZCB1aWQgcGFzc2VkIHRvICcgLiBfX01FVEhPRF9fKTsKICAgIH0KICAgIAogICAgJGRiICAgID0gJHRoaXMtPkdldERiKCk7CiAgICAkcXVlcnkgPSAnVVBEQVRFICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX3VzZXJzIFNFVCBmb3JjZV9uZXdwdyA9ID8gV0hFUkUgaWQgPSA/JzsKICAgICRkYnIgICA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIFskZmxhZywgJHVpZF0pOwogICAgCiAgICBpZighJGRicikKICAgIHsKICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigncHJvYmxlbSBzZXR0aW5nIGZvcmNlX25ld3B3IGZsYWcgZm9yIHVzZXIgJyAuICR1aWQpOwogICAgfQogICAgCiAgICBpZigkZmxhZykKICAgIHsKICAgICAgJHRoaXMtPmFkZF9oaXN0b3J5KCR1aWQsICdmb3JjZXB3cmVzZXQnKTsKICAgIH0KICB9CiAgCiAgLyoqCiAgICogQHBhcmFtICAgICAgJHVpZAogICAqIEBwYXJhbSBib29sICRmbGFnCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEZvcmNlQ2hhbmdlU2V0dGluZ3MoJHVpZCwgJGZsYWcgPSBUUlVFKQogIHsKICAgICR1aWQgID0gKGludCkkdWlkOwogICAgJGZsYWcgPSAoYm9vbCkkZmxhZzsKICAgIAogICAgaWYoJHVpZCA8IDEpCiAgICB7CiAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0ludmFsaWQgdWlkIHBhc3NlZCB0byAnIC4gX19NRVRIT0RfXyk7CiAgICB9CiAgICAKICAgICRkYiAgICA9ICR0aGlzLT5HZXREYigpOwogICAgJHF1ZXJ5ID0gJ1VQREFURSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc191c2VycyBTRVQgZm9yY2VfY2hzZXR0aW5ncyA9ID8gV0hFUkUgaWQgPSA/JzsKICAgICRkYnIgICA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIFskZmxhZywgJHVpZF0pOwogICAgCiAgICBpZighJGRicikKICAgIHsKICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigncHJvYmxlbSBzZXR0aW5nIGZvcmNlX2Noc2V0dGluZ3MgZmxhZyBmb3IgdXNlciAnIC4gJHVpZCk7CiAgICB9CiAgICAKICAgIGlmKCRmbGFnKQogICAgewogICAgICAkdGhpcy0+YWRkX2hpc3RvcnkoJHVpZCwgJ2ZvcmNlY2hzZXR0aW5ncycpOwogICAgfQogIH0KICAKICAvKioKICAgKiBAcGFyYW0gICAgICAkdWlkCiAgICogQHBhcmFtIGJvb2wgJGZsYWcKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gRm9yY2VWZXJpZnkoJHVpZCwgJGZsYWcgPSBUUlVFKQogIHsKICAgICR1aWQgID0gKGludCkkdWlkOwogICAgJGZsYWcgPSAoYm9vbCkkZmxhZzsKICAgIAogICAgaWYoJHVpZCA8IDEpCiAgICB7CiAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0ludmFsaWQgdWlkIHBhc3NlZCB0byAnIC4gX19NRVRIT0RfXyk7CiAgICB9CiAgICAKICAgICRkYiAgICA9ICR0aGlzLT5HZXREYigpOwogICAgJHF1ZXJ5ID0gJ1VQREFURSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc191c2VycyBTRVQgbXVzdF92YWxpZGF0ZSA9ID8gV0hFUkUgaWQgPSA/JzsKICAgICRkYnIgICA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIFskZmxhZywgJHVpZF0pOwogICAgLy9pZiggISRkYnIgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdwcm9ibGVtIHNldHRpbmcgZm9yY2UgdmVyaWZ5IGZsYWcgZm9yIHVzZXIgJy4kdWlkKTsgVE9ETyByZXZpc2l0IHRoaXMgbGluZQogICAgCiAgICBpZigkZmxhZykKICAgIHsKICAgICAgJHRoaXMtPmFkZF9oaXN0b3J5KCR1aWQsICdpbml0X3ZlcmlmeScpOwogICAgfQogIH0KICAKCiAgLyoqCiAgICogdXNlcmlkIGFwaSBtZXRob2QKICAgKgogICAqIEBwYXJhbSAgICAgICR1aWQKICAgKiBAcGFyYW0gICAgICAkdXNlcm5hbWUKICAgKiBAcGFyYW0gICAgICAkcGFzc3dvcmQKICAgKiBAcGFyYW0gYm9vbCAkZXhwaXJlcwogICAqCiAgICogQHJldHVybiBhcnJheQogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBTZXRVc2VyKCR1aWQsICR1c2VybmFtZSwgJHBhc3N3b3JkLCAkZXhwaXJlcyA9IEZBTFNFKQogIHsKICAgIGlmKCEkdWlkKSB7IHJldHVybiBbRkFMU0UsICcnXTsgfQogICAgJGRiICAgICA9ICR0aGlzLT5HZXREYigpOwogICAgJG1vZHVsZSA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgIAogICAgLy8gbWFrZSBzdXJlIHRoYXQgdGhpcyB1c2VyIGV4aXN0cwogICAgJHJldCA9ICR0aGlzLT5HZXRVc2VySW5mbygkdWlkKTsKICAgIAogICAgaWYoJHJldFswXSA9PSBGQUxTRSkKICAgIHsKICAgICAgcmV0dXJuIFtGQUxTRSwgJG1vZHVsZS0+TGFuZygnZXJyb3JfdXNlcm5vdGZvdW5kJyldOwogICAgfQogICAgCiAgICAvLyBtYWtlIHN1cmUgdGhhdCB0aGlzIHVzZXJuYW1lIGlzIG5vdCB0YWtlbiBieSBzb21lIG90aGVyIGlkCiAgICAkbnVpZCA9ICR0aGlzLT5HZXRVc2VySUQoJHVzZXJuYW1lKTsKICAgIAogICAgaWYoRkFMU0UgIT09ICRudWlkICYmICRudWlkICE9PSAkdWlkKQogICAgewogICAgICByZXR1cm4gW0ZBTFNFLCAkbW9kdWxlLT5MYW5nKCdlcnJvcl91c2VybmFtZXRha2VuJywgJHVpZCldOwogICAgfQogICAgCiAgICAkZGJyZXN1bHQgPSAnJzsKICAgICRwYXJtcyAgICA9IFtdOwogICAgJHEgICAgICAgID0gJ1VQREFURSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc191c2VycyBTRVQgdXNlcm5hbWUgPSA/JzsKICAgICRwYXJtc1tdICA9ICR1c2VybmFtZTsKICAgIAogICAgaWYoRkFMU0UgIT09ICRleHBpcmVzKQogICAgewogICAgICAkcSAgICAgICAuPSAnLCBleHBpcmVzID0gPyc7CiAgICAgICRwYXJtc1tdID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKCRleHBpcmVzKSwgIiciKTsKICAgIH0KICAgIAogICAgJHEgICAgICAgIC49ICcgV0hFUkUgaWQgPSA/JzsKICAgICRwYXJtc1tdICA9ICR1aWQ7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHEsICRwYXJtcyk7CiAgICAKICAgIGlmKEZBTFNFID09PSAkZGJyZXN1bHQpCiAgICB7CiAgICAgIHJldHVybiBbRkFMU0UsICRkYi0+RXJyb3JNc2coKV07CiAgICB9CiAgICAKICAgIGlmKCRwYXNzd29yZCkKICAgIHsKICAgICAgJHJlcyA9ICR0aGlzLT5TZXRVc2VyUGFzc3dvcmQoJHVpZCwgJHBhc3N3b3JkKTsKICAgICAgCiAgICAgIGlmKCEkcmVzWzBdKQogICAgICB7CiAgICAgICAgcmV0dXJuICRyZXM7CiAgICAgIH0KICAgIH0KICAgIAogICAgJHRoaXMtPl91c2VyaWRieW5hbWUgPSBbXTsKICAgIG1hbXNfdXNlcl9jYWNoZTo6ZGVsX3VzZXIoJHVpZCk7CiAgICAKICAgIC8vIENoYW5nZWQgdG8gcGFzcyAkdWlkIGJhY2sgc28gaXQgbWF0Y2hlcyBBZGRVc2VyKCkKICAgIHJldHVybiBbVFJVRSwgJHVpZF07CiAgfQogIAogIC8qKgogICAqIFNldCB0aGUgdXNlciBncm91cCBtZW1iZXJzaGlwcwogICAqIGRvZXMgbm90IGFsdGVyIGFueSB1c2VyIHByb3BlcnRpZXMuCiAgICogZG9lcyBub3QgdmFsaWRhdGUgZ3JvdXAgaWRzLCBidXQgZG9lcyB2YWxpZGF0ZSB1aWQKICAgKgogICAqIEBwYXJhbSBpbnQgdXNlcmlkCiAgICogQHBhcmFtIGFycmF5IGFycmF5IG9mIGludGVnZXIgZ3JvdXAgaWRzCiAgICoKICAgKiBAcmV0dXJuIGFycmF5IChzdGF0dXMsbXNnKQogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBTZXRVc2VyR3JvdXBzKCR1aWQsICRncnBpZHMpCiAgewogICAgaWYoISR1aWQpIHsgIHJldHVybiBbRkFMU0UsICcnXTsgfQogICAgCiAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKICAgIAogICAgLy8gZmlyc3QgbWFrZSBzdXJlIHRoaXMgdXNlciBleGlzdHMKICAgICRyZXQgPSAkdGhpcy0+R2V0VXNlckluZm8oJHVpZCk7CiAgICAKICAgIGlmKEZBTFNFID09PSAkcmV0WzBdKQogICAgewogICAgICByZXR1cm4gW0ZBTFNFLCAnVXNlciBkb2VzIG5vdCBleGlzdCddOwogICAgfQogICAgCiAgICAvLyB0aGVuIHJlbW92ZSBhbGwgaGlzIGN1cnJlbnQgYXNzaWdubWVudHMKICAgICRxICAgICAgICA9ICdERUxFVEUgRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc19iZWxvbmdzIFdIRVJFIHVzZXJpZCA9ID8nOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxLCBbJHVpZF0pOwogICAgCiAgICBpZighJGRicmVzdWx0KQogICAgewogICAgICByZXR1cm4gW0ZBTFNFLCAkZGItPkVycm9yTXNnKCldOwogICAgfQogICAgCiAgICBpZihpc19hcnJheSgkZ3JwaWRzKSAmJiBjb3VudCgkZ3JwaWRzKSkKICAgIHsKICAgICAgLy8gYW5kIGFkZCBhbGwgb2YgdGhlbSBpbgogICAgICAkcSA9ICdJTlNFUlQgSU5UTyAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc19iZWxvbmdzIFZBTFVFUyAoPyw/KSc7CiAgICAgIGZvcmVhY2goJGdycGlkcyBhcyAkZ3JwaWQpCiAgICAgIHsKICAgICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHEsIFskdWlkLCAkZ3JwaWRdKTsKICAgICAgICAKICAgICAgICBpZighJGRicmVzdWx0KQogICAgICAgIHsKICAgICAgICAgIHJldHVybiBbRkFMU0UsICRkYi0+RXJyb3JNc2coKV07CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICAKICAgIHJldHVybiBbVFJVRSwgJyddOwogIH0KICAKICAvKioKICAgKiBAcGFyYW0gJHVpZAogICAqIEBwYXJhbSAkZ2lkCiAgICoKICAgKiBAcmV0dXJuIGJvb2wKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gQWRkVXNlclRvR3JvdXAoJHVpZCwgJGdpZCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkFzc2lnblVzZXJUb0dyb3VwKCR1aWQsICRnaWQpOwogIH0KICAKICAvKioKICAgKiB1c2VyaWQgYXBpIG1ldGhvZAogICAqCiAgICogQHBhcmFtICR1aWQKICAgKiBAcGFyYW0gJHByb3BzCiAgICoKICAgKiBAcmV0dXJuIGJvb2wKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gU2V0VXNlclByb3BlcnRpZXMoJHVpZCwgJHByb3BzKQogIHsKICAgIGlmKCEkdWlkKSB7IHJldHVybiBGQUxTRTsgfQogICAgCiAgICAvLyBEZWxldGUgYWxsIHRoZSB1c2VyIHByb3BlcnRpZXMKICAgIC8vIGFuZCBzZXQgbmV3IG9uZXMKICAgICR0aGlzLT5EZWxldGVVc2VyUHJvcGVydHlGdWxsKCcnLCAkdWlkLCBUUlVFKTsKICAgIG1hbXNfdXNlcl9jYWNoZTo6ZGVsX3VzZXIoJHVpZCk7CiAgICAKICAgIGlmKCBpc19hcnJheSgkcHJvcHMpICYmIGNvdW50KCRwcm9wcykgKQogICAgewogICAgICBpZih4dF9hcnJheTo6aXNfaGFzaCgkcHJvcHMpKQogICAgICB7CiAgICAgICAgZm9yZWFjaCgkcHJvcHMgYXMgJGtleSA9PiAkdmFsKQogICAgICAgIHsKICAgICAgICAgIGlmKCBGQUxTRSA9PT0gKCAkciA9ICR0aGlzLT5TZXRVc2VyUHJvcGVydHlGdWxsKCRrZXksICR2YWwsICR1aWQpICkgKQogICAgICAgICAgewogICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIGVsc2UKICAgICAgewogICAgICAgIGZvcmVhY2goJHByb3BzIGFzICRwcm9wKQogICAgICAgIHsKICAgICAgICAgIFska2V5LCAkdmFsXSA9IGV4cGxvZGUoJz0nLCAkcHJvcCwgMik7CiAgICAgICAgICAKICAgICAgICAgIGlmKCBGQUxTRSA9PT0gKCAkciA9ICR0aGlzLT5TZXRVc2VyUHJvcGVydHlGdWxsKCRrZXksICR2YWwsICR1aWQpICkgKQogICAgICAgICAgewogICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICAKICAgIHJldHVybiBUUlVFOwogIH0KICAKICAvKioKICAgKiB1c2VyaWQgYXBpIG1ldGhvZAogICAqIEBwYXJhbSAkdWlkCiAgICoKICAgKiBAcmV0dXJuIGJvb2wKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gVXNlckV4aXN0c0J5SUQoJHVpZCkKICB7CiAgICBpZighJHVpZCkgeyByZXR1cm4gRkFMU0U7IH0KICAgIAogICAgJGRhdGEgPSAkdGhpcy0+R2V0VXNlckluZm8oJHVpZCk7CiAgICAKICAgIHJldHVybiAoRkFMU0UgIT09ICRkYXRhWzBdKTsKICB9CiAgCiAgLy8KICAvLyByZXR1cm5zIGFuIGFycmF5IG9yIGZhbHNlCiAgLyoqCiAgICogdXNlcmlkIGFwaSBtZXRob2QKICAgKgogICAqIEBwYXJhbSAkdWlkCiAgICoKICAgKiBAcmV0dXJuIGFycmF5fGJvb2wKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlclByb3BlcnRpZXMoJHVpZCkKICB7CiAgICBpZighJHVpZCkgeyByZXR1cm4gRkFMU0U7IH0KICAgIAogICAgJHVpbmZvID0gbWFtc191c2VyX2NhY2hlOjpnZXRfdXNlcigkdWlkLCBUUlVFKTsKICAgIAogICAgaWYoIWlzX2FycmF5KCR1aW5mbykgfHwgIWlzc2V0KCR1aW5mb1snZnByb3BzJ10pKSB7IHJldHVybiBGQUxTRTsgfQogICAgCiAgICByZXR1cm4gJHVpbmZvWydmcHJvcHMnXTsKICB9CiAgCgogIC8qKgogICAqIHVzZXJpZCBhcGkgbWV0aG9kCiAgICogcmV0dXJucyBhbiBhcnJheSBvZiByZWNvcmRzIG9yIGZhbHNlCiAgICoKICAgKiBAcGFyYW0gJHVzZXJpZAogICAqCiAgICogQHJldHVybiBhcnJheXxib29sCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEdldE1lbWJlckdyb3Vwc0FycmF5KCR1c2VyaWQpCiAgewogICAgJGF1dGhfY29uc3VtZXIgPSBtYW1zX3V0aWxzOjpnZXRfYXV0aF9jb25zdW1lcigpOwogICAgCiAgICBpZigkYXV0aF9jb25zdW1lci0+aGFzX2NhcGFiaWxpdHkoJGF1dGhfY29uc3VtZXI6OkNBUEFCSUxJVFlfR1JPVVBNRU1CRVJTSElQKSkKICAgIHsKICAgICAgJG91dCA9ICRhdXRoX2NvbnN1bWVyLT5nZXRfZ3JvdXBfbWVtYmVyc2hpcCgkdXNlcmlkKTsKICAgICAgCiAgICAgIGlmKCFpc19hcnJheSgkb3V0KSB8fCAwID09PSBjb3VudCgkb3V0KSkgeyByZXR1cm4gRkFMU0U7IH0KICAgICAgCiAgICAgICRyZXMgPSBbXTsKICAgICAgCiAgICAgIGZvcmVhY2goJG91dCBhcyAkb25lKQogICAgICB7CiAgICAgICAgJHJlc1tdID0gWyd1c2VyaWQnID0+ICR1c2VyaWQsICdncm91cGlkJyA9PiAkb25lXTsKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuICRyZXM7CiAgICB9CiAgICAKICAgIC8vIHNob3VsZG4ndCBiZSB1c2VkIGFueW1vcmUuLi4gYnV0IGp1c3QgaW4gY2FzZS4KICAgIC8vJGRiICAgICAgID0gJHRoaXMtPkdldERiKCk7CiAgICAkcSAgICAgICAgPSAnU0VMRUNUICogRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc19iZWxvbmdzIFdIRVJFIHVzZXJpZD0/JzsKICAgICRkYnJlc3VsdCA9ICR0aGlzLT5HZXREYigpLT5FeGVjdXRlKCRxLCBbJHVzZXJpZF0pOwogICAgCiAgICBpZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpKQogICAgewogICAgICAkcmVzdWx0ID0gW107CiAgICAgIAogICAgICB3aGlsZSgkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSB7ICRyZXN1bHRbXSA9ICRyb3c7IH0KICAgICAgCiAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQogIAogICAgcmV0dXJuIEZBTFNFOwogIH0KICAKICAvLwogIC8vIGVuZCBvZiByYyBmdW5jdGlvbnMKICAvLwogIAogIC8qKgogICAqIHVzZXJpZCBhcGkgbWV0aG9kCiAgICoKICAgKiBAcGFyYW0gICAgICAkdGl0bGUKICAgKiBAcGFyYW0gYm9vbCAkZGVmYXVsdHZhbHVlCiAgICoKICAgKiBAcmV0dXJuIGJvb2x8bWl4ZWQKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlclByb3BlcnR5KCR0aXRsZSwgJGRlZmF1bHR2YWx1ZSA9IEZBTFNFKQogIHsKICAgICR1c2VyaWQgPSAkdGhpcy0+TG9nZ2VkSW5JZCgpOwogICAgCiAgICBpZihGQUxTRSA9PT0gJHVzZXJpZCkgeyByZXR1cm4gRkFMU0U7IH0KICAgIAogICAgcmV0dXJuICR0aGlzLT5HZXRVc2VyUHJvcGVydHlGdWxsKCR0aXRsZSwgJHVzZXJpZCwgJGRlZmF1bHR2YWx1ZSk7CiAgfQogIAogIAogIC8qKgogICAqIHVzZXJpZCBhcGkgbWV0aG9kCiAgICoKICAgKiBAcGFyYW0gICAgICAkdGl0bGUKICAgKiBAcGFyYW0gICAgICAkdXNlcmlkCiAgICogQHBhcmFtIGJvb2wgJGRlZmF1bHR2YWx1ZQogICAqCiAgICogQHJldHVybiBib29sfG1peGVkCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEdldFVzZXJQcm9wZXJ0eUZ1bGwoJHRpdGxlLCAkdXNlcmlkLCAkZGVmYXVsdHZhbHVlID0gRkFMU0UpCiAgewogICAgaWYoRkFMU0UgPT09ICR1c2VyaWQpIHsgcmV0dXJuIEZBTFNFOyB9CiAgICAKICAgICR1aW5mbyA9IG1hbXNfdXNlcl9jYWNoZTo6Z2V0X3VzZXIoJHVzZXJpZCwgVFJVRSk7CiAgICAKICAgICRkZWZuID0gJHRoaXMtPkdldFByb3BlcnR5RGVmbigkdGl0bGUpOwogICAgCiAgICBpZighJGRlZm4pIHsgcmV0dXJuIEZBTFNFOyB9CiAgICAKICAgIGlmKGlzc2V0KCR1aW5mb1snZnByb3BzJ10pKQogICAgewogICAgICBmb3JlYWNoKCR1aW5mb1snZnByb3BzJ10gYXMgJG9uZXByb3ApCiAgICAgIHsKICAgICAgICBpZigkb25lcHJvcFsndGl0bGUnXSA9PT0gJHRpdGxlKQogICAgICAgIHsKICAgICAgICAgIHJldHVybiAkb25lcHJvcFsnZGF0YSddOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgCiAgICByZXR1cm4gJGRlZmF1bHR2YWx1ZTsKICB9CiAgCiAgLyoqCiAgICogdXNlcmlkIGFwaSBtZXRob2QKICAgKgogICAqIEBwYXJhbSAkdWlkCiAgICogQHBhcmFtICR0aXRsZQogICAqIEBwYXJhbSAkZGF0YQogICAqCiAgICogQHJldHVybiBib29sCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIElzVXNlclByb3BlcnR5VmFsdWVVbmlxdWUoJHVpZCwgJHRpdGxlLCAkZGF0YSkKICB7CiAgICAkZGIgID0gJHRoaXMtPkdldERiKCk7CiAgCiAgICBpZigkdWlkID4gMCkKICAgIHsKICAgICAgJHEgICA9ICdTRUxFQ1QgaWQgRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc19wcm9wZXJ0aWVzCiAgICAgICAgICAgIFdIRVJFIHRpdGxlID0gPyBBTkQgdXNlcmlkICE9ID8gQU5EIGRhdGEgPSA/JzsKICAgICAgJGRiciA9ICRkYi0+R2V0T25lKCRxLCBbJHRpdGxlLCAkdWlkLCAkZGF0YV0pOwogICAgfQogICAgZWxzZQogICAgewogICAgICAkcSAgID0gJ1NFTEVDVCBpZCBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX3Byb3BlcnRpZXMKICAgICAgICAgICAgV0hFUkUgdGl0bGUgPSA/IEFORCBkYXRhID0gPyc7CiAgICAgICRkYnIgPSAkZGItPkdldE9uZSgkcSwgWyR0aXRsZSwgJGRhdGFdKTsKICAgIH0KICAgIAogICAgaWYoJGRicikgeyByZXR1cm4gRkFMU0U7IH0KICAgIAogICAgcmV0dXJuIFRSVUU7CiAgfQogIAogIAogIC8qKgogICAqIHVzZXJpZCBhcGkgbWV0aG9kCiAgICoKICAgKiBAcGFyYW0gJHRpdGxlCiAgICogQHBhcmFtICRkYXRhCiAgICoKICAgKiBAcmV0dXJuIGJvb2wKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gU2V0VXNlclByb3BlcnR5KCR0aXRsZSwgJGRhdGEpCiAgewogICAgJHVzZXJpZCA9ICR0aGlzLT5Mb2dnZWRJbklkKCk7CiAgICAKICAgIGlmKEZBTFNFID09PSAkdXNlcmlkKSB7IHJldHVybiBGQUxTRTsgfQogICAgCiAgICByZXR1cm4gJHRoaXMtPlNldFVzZXJQcm9wZXJ0eUZ1bGwoJHRpdGxlLCAkZGF0YSwgJHVzZXJpZCk7CiAgfQogIAogIAogIC8qKgogICAqIHVzZXJpZCBhcGkgbWV0aG9kCiAgICoKICAgKiBAcGFyYW0gJHRpdGxlCiAgICogQHBhcmFtICRkYXRhCiAgICogQHBhcmFtICR1c2VyaWQKICAgKgogICAqIEByZXR1cm4gYm9vbAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBTZXRVc2VyUHJvcGVydHlGdWxsKCR0aXRsZSwgJGRhdGEsICR1c2VyaWQpCiAgewogICAgaWYoRkFMU0UgPT09ICR1c2VyaWQpeyByZXR1cm4gRkFMU0U7IH0KCiAgICAkZGVmbiA9ICR0aGlzLT5HZXRQcm9wZXJ0eURlZm4oJHRpdGxlKTsKICAgIAogICAgaWYoISRkZWZuKXsgcmV0dXJuIEZBTFNFOyB9CiAgICAKICAgIGlmKCRkZWZuWydlbmNyeXB0J10pCiAgICB7CiAgICAgIC8vIGdvdHRhIGVuY3J5cHQuCiAgICAgICRrZXkgID0gJHRoaXMtPkdldEVuY3J5cHRpb25LZXkoJHVzZXJpZCk7CiAgICAgICRkYXRhID0gYmFzZTY0X2VuY29kZSh4dF9lbmNyeXB0OjplbmNyeXB0KCRrZXksICRkYXRhKSk7CiAgICB9CiAgICAKICAgIGlmKCRkZWZuWydmb3JjZV91bmlxdWUnXSAmJiAhJHRoaXMtPklzVXNlclByb3BlcnR5VmFsdWVVbmlxdWUoJHVzZXJpZCwgJHRpdGxlLCAkZGF0YSkpCiAgICB7CiAgICAgIHJldHVybiBGQUxTRTsKICAgIH0KICAgIAogICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAkcSAgPSAnU0VMRUNUICogRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc19wcm9wZXJ0aWVzIFdIRVJFIHRpdGxlPT8gQU5EIHVzZXJpZD0/JzsKICAgICRwICA9IFskdGl0bGUsICR1c2VyaWRdOwogICAgJHIgID0gJGRiLT5FeGVjdXRlKCRxLCAkcCk7CiAgICAKICAgIGlmKCEkciB8fCAoMCA9PT0gJHItPk51bVJvd3MoKSkpCiAgICB7CiAgICAgICRxID0gJ0lOU0VSVCBJTlRPICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX3Byb3BlcnRpZXMgKHVzZXJpZCx0aXRsZSxkYXRhKSBWQUxVRVMgKD8sPyw/KSc7CiAgICAgICRwID0gWyR1c2VyaWQsICR0aXRsZSwgJGRhdGFdOwogICAgICAkciA9ICRkYi0+RXhlY3V0ZSgkcSwgJHApOwogICAgfQogICAgZWxzZQogICAgewogICAgICAvKiogQHZhciBhcnJheSAkcm93ICovCiAgICAgICRyb3cgPSAkci0+RmV0Y2hSb3coKTsKICAgICAgJHEgICA9ICdVUERBVEUgJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfcHJvcGVydGllcyBTRVQgZGF0YT0/IFdIRVJFIGlkPT8nOwogICAgICAkcCAgID0gWyRkYXRhLCAoaW50KSRyb3dbJ2lkJ11dOwogICAgICAkciAgID0gJGRiLT5FeGVjdXRlKCRxLCAkcCk7CiAgICB9CiAgICAKICAgIG1hbXNfdXNlcl9jYWNoZTo6ZGVsX3VzZXIoJHVzZXJpZCk7CiAgICAKICAgIHJldHVybiAoRkFMU0UgIT09ICRyKTsKICB9CiAgCiAgCiAgLyoqCiAgICogZGVsZXRlIGFsbCBvY2N1cnJlbmNlcyBvZiB0aGUgdXNlcnByb3BlcnR5IGJ5IG5hbWUKICAgKgogICAqIEBwYXJhbSAkdGl0bGUKICAgKgogICAqIEByZXR1cm4gYm9vbAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVVc2VyUHJvcGVydHlCeU5hbWUoJHRpdGxlKQogIHsKICAgICRkYiAgICAgPSAkdGhpcy0+R2V0REIoKTsKICAgICRxICAgICAgPSAnREVMRVRFIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfcHJvcGVydGllcyBXSEVSRSB0aXRsZT0/JzsKICAgICRwICAgICAgPSBbJHRpdGxlXTsKICAgICRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHEsICRwKTsKICAgIAogICAgbWFtc191c2VyX2NhY2hlOjpjbGVhcl9hbGwoKTsKICAgIAogICAgcmV0dXJuIChGQUxTRSAhPT0gJHJlc3VsdCk7CiAgfQoKICAKICAvKioKICAgKiB1c2VyaWQgYXBpIG1ldGhvZAogICAqCiAgICogQHBhcmFtICAgICAgJHRpdGxlCiAgICogQHBhcmFtIGJvb2wgJGFsbAogICAqCiAgICogQHJldHVybiBib29sCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIERlbGV0ZVVzZXJQcm9wZXJ0eSgkdGl0bGUsICRhbGwgPSBGQUxTRSkKICB7CiAgICAkdXNlcmlkID0gJHRoaXMtPkxvZ2dlZEluSWQoKTsKICAgIAogICAgaWYoRkFMU0UgPT09ICR1c2VyaWQpIHsgcmV0dXJuIEZBTFNFOyB9CiAgICAKICAgIHJldHVybiAkdGhpcy0+RGVsZXRlVXNlclByb3BlcnR5RnVsbCgkdGl0bGUsICR1c2VyaWQsICRhbGwpOwogIH0KICAKICAvKioKICAgKiB1c2VyaWQgYXBpIG1ldGhvZAogICAqCiAgICogQHBhcmFtICAgICAgJHRpdGxlCiAgICogQHBhcmFtICAgICAgJHVzZXJpZAogICAqIEBwYXJhbSBib29sICRhbGwKICAgKgogICAqIEByZXR1cm4gYm9vbAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVVc2VyUHJvcGVydHlGdWxsKCR0aXRsZSwgJHVzZXJpZCwgJGFsbCA9IEZBTFNFKQogIHsKICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwogICAgJHEgID0gJ0RFTEVURSBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX3Byb3BlcnRpZXMgV0hFUkUgdXNlcmlkPT8nOwogICAgaWYoISRhbGwpCiAgICB7CiAgICAgICRxIC49ICcgQU5EIHRpdGxlPT8nOwogICAgfQogIAogICAgaWYoJGFsbCkKICAgIHsKICAgICAgJHAgPSBbJHVzZXJpZF07CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICRwID0gWyR1c2VyaWQsICR0aXRsZV07CiAgICB9CiAgICAKICAgICRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHEsICRwKTsKICAgIAogICAgbWFtc191c2VyX2NhY2hlOjpkZWxfdXNlcigkdXNlcmlkKTsKICAgIAogICAgcmV0dXJuIChGQUxTRSAhPT0gJHJlc3VsdCk7CiAgfQogIAogIC8qKgogICAqIHVzZXJpZCBhcGkgbWV0aG9kCiAgICoKICAgKiBAcmV0dXJuIGJvb2wKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gRGVsZXRlQWxsVXNlclByb3BlcnRpZXMoKQogIHsKICAgIHJldHVybiAkdGhpcy0+RGVsZXRlVXNlclByb3BlcnR5KCcnLCBUUlVFKTsKICB9CgogIC8qKgogICAqIHVzZXJpZCBhcGkgbWV0aG9kCiAgICoKICAgKiBAcGFyYW0gJHVzZXJpZAogICAqCiAgICogQHJldHVybiBib29sCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIERlbGV0ZUFsbFVzZXJQcm9wZXJ0aWVzRnVsbCgkdXNlcmlkKQogIHsKICAgIHJldHVybiAkdGhpcy0+RGVsZXRlVXNlclByb3BlcnR5RnVsbCgnJywgJHVzZXJpZCwgVFJVRSk7CiAgfQogIAogIC8qKgogICAqIEByZXR1cm4gaW50CiAgICovCiAgcHJvdGVjdGVkIGZ1bmN0aW9uIHVzZV91c2Vyc2FsdCgpCiAgewogICAgJG1vZCA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgIAogICAgcmV0dXJuIChpbnQpJG1vZC0+R2V0UHJlZmVyZW5jZSgndXNlX3VzZXJzYWx0JywgMik7CiAgfQogIAogIC8qKgogICAqIEBwYXJhbSAgICAgICAgJHVzZXJuYW1lCiAgICogQHBhcmFtICAgICAgICAkcGFzc3dvcmQKICAgKiBAcGFyYW0gc3RyaW5nICRncm91cHMKICAgKgogICAqIEByZXR1cm4gaW50fG1peGVkCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIENoZWNrUGFzc3dvcmQoJHVzZXJuYW1lLCAkcGFzc3dvcmQsICRncm91cHMgPSAnJykKICB7CiAgICAkdG1wID0gJHRoaXMtPkdldFVzZXJJbmZvQnlOYW1lKCR1c2VybmFtZSk7CiAgICAKICAgIGlmKCFpc19hcnJheSgkdG1wKSB8fCAhaXNzZXQoJHRtcFswXSkgfHwgISR0bXBbMF0gfHwgIWlzX2FycmF5KCR0bXBbMV0pKQogICAgewogICAgICByZXR1cm4gRkFMU0U7CiAgICB9CiAgICAKICAgICR1aW5mbyA9ICR0bXBbMV07CiAgICAKICAgIGlmKCFpc3NldCgkdWluZm9bJ2lkJ10pICYmICFpc3NldCgkdWluZm9bJ3Bhc3N3b3JkJ10pKQogICAgewogICAgICByZXR1cm4gRkFMU0U7CiAgICB9CiAgICAKICAgIGlmKCRncm91cHMpCiAgICB7CiAgICAgICRnaW5mbyA9ICR0aGlzLT5HZXRNZW1iZXJHcm91cHNBcnJheSgoaW50KSR1aW5mb1snaWQnXSk7CiAgICAgIAogICAgICBpZighJGdpbmZvKSB7IHJldHVybiBGQUxTRTsgfSAvLyB1c2VyIG5vdCBhIG1lbWJlciBvZiBhbnkgZ3JvdXBzCiAgICAgIAogICAgICAkbWVtYmVyX2dpZHMgPSBhcnJheV9tYXAoCiAgICAgICAgc3RhdGljIGZ1bmN0aW9uKCRyb3cpIHsKICAgICAgICAgIHJldHVybiAoaW50KSRyb3dbJ2dyb3VwaWQnXTsKICAgICAgICB9LCAkZ2luZm8KICAgICAgKTsKICAgICAgCiAgICAgIHVuc2V0KCRnaW5mbyk7CiAgICAgICRncm91cHMgPSBleHBsb2RlKCcsJywgJGdyb3Vwcyk7CiAgICAgIAogICAgICAvLyBjb252ZXJ0IHRoZXNlIGdyb3VwIG5hbWVzIHRvIGdpZHMuCiAgICAgICRnaWRzICAgICAgPSBbXTsKICAgICAgJGFsbGdyb3VwcyA9ICR0aGlzLT5HZXRHcm91cExpc3QoKTsKICAgICAgCiAgICAgIGlmKCEkYWxsZ3JvdXBzKSB7IHJldHVybiAwOyB9IC8vIG5vIGdyb3VwcyBkZWZpbmVkCiAgICAgIAogICAgICAkYWxsZ3JvdXBzID0gYXJyYXlfZmxpcCgkYWxsZ3JvdXBzKTsKICAgICAgCiAgICAgIGZvcmVhY2goJGdyb3VwcyBhcyAkb25lKQogICAgICB7CiAgICAgICAgJG9uZSA9IHRyaW0oJG9uZSk7CiAgICAgICAgCiAgICAgICAgaWYoISRvbmUpIHsgY29udGludWU7IH0KICAgICAgICAKICAgICAgICAkZ2lkID0gYXJyYXlfc2VhcmNoKCRvbmUsICRhbGxncm91cHMpOyAvLyBUT0RPIHNlZSBpZiAzcmQgcGFyYW1ldGVyIGNhbi9zaG91bGQgYmUgdXNlZCBKTQogICAgICAgIAogICAgICAgIGlmKEZBTFNFID09PSAkZ2lkKSB7IGNvbnRpbnVlOyB9IC8vIGdyb3VwIGRvZXMgbm90IGV4aXN0CiAgICAgICAgCiAgICAgICAgJGdpZHNbXSA9ICRnaWQ7CiAgICAgIH0KICAgICAgCiAgICAgIHVuc2V0KCRhbGxncm91cHMsICRncm91cHMpOwogICAgICAkZ2lkcyA9IGFycmF5X3VuaXF1ZSgkZ2lkcyk7CiAgICAgIAogICAgICBpZihlbXB0eSgkZ2lkcykpIHsgcmV0dXJuIDA7IH0gLy8gbm8gZ3JvdXBzIHNwZWNpZmllZCBhY3R1YWxseSBleGlzdC4KICAgICAgCiAgICAgICR0bXAgPSBhcnJheV9pbnRlcnNlY3QoJGdpZHMsICRtZW1iZXJfZ2lkcyk7CiAgICAgIAogICAgICBpZihlbXB0eSgkdG1wKSkgeyByZXR1cm4gMDsgfQogICAgfQogICAgCiAgICAvLyBub3cgdmVyaWZ5IHRoZSBoYXNoCiAgICBpZigzMiA9PT0gc3RybGVuKCR1aW5mb1sncGFzc3dvcmQnXSkpCiAgICB7CiAgICAgIC8vIHRoaXMgaXMgdGhlIG9sZCwgbm90IHJlYWxseSBnb29kIGhhc2hpbmcuCiAgICAgIC8vIGtlcHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgogICAgICBpZighZW1wdHkoJHVpbmZvWydzYWx0J10pKQogICAgICB7CiAgICAgICAgJHRtcGIgPSBtZDUodHJpbSgkcGFzc3dvcmQpIC4gJHVpbmZvWydzYWx0J10pOwogICAgICAgIAogICAgICAgIGF1ZGl0KCR1aW5mb1snaWQnXSwgJ01BTVMnLCAnVXNlciBoYXMgYSBzYWx0LCBidXQgYW4gbWQ1IGVuY29kZWQgcGFzc3dvcmQnKTsKICAgICAgICAKICAgICAgICBpZigkdWluZm9bJ3Bhc3N3b3JkJ10gPT09ICR0bXBiKSB7IHJldHVybiAkdWluZm9bJ2lkJ107IH0KICAgICAgfQogICAgICAKICAgICAgJHRtcGEgPSBtZDUodHJpbSgkcGFzc3dvcmQpIC4gJHRoaXMtPmdldF9iYWRfc2FsdCgpKTsKICAgICAgCiAgICAgIGlmKCR1aW5mb1sncGFzc3dvcmQnXSA9PT0gJHRtcGEpIHsgcmV0dXJuICR1aW5mb1snaWQnXTsgfQogICAgfQogICAgZWxzZSBpZigkdWluZm9bJ3NhbHQnXSkKICAgIHsKICAgICAgLy8gdXNlciBoYXMgYSBzYWx0Li4uIHNvIGl0IGlzIHVzaW5nIG9sZCBzaGExIGhhc2hpbmcKICAgICAgJHRtcCA9IHNoYTEoJHBhc3N3b3JkIC4gJHVpbmZvWydzYWx0J10pOwogICAgICAKICAgICAgaWYoJHVpbmZvWydwYXNzd29yZCddID09PSAkdG1wKSB7IHJldHVybiAkdWluZm9bJ2lkJ107IH0KICAgIH0KICAgIAogICAgLy8gdXNlcnNhbHQgPT0gMiwgbmV3IHBhc3N3b3JkIGhhc2hlcy4KICAgIHJldHVybiBwYXNzd29yZF92ZXJpZnkoJHBhc3N3b3JkLCAkdWluZm9bJ3Bhc3N3b3JkJ10pID8gJHVpbmZvWydpZCddIDogMDsKICB9CiAgCiAgLyoqCiAgICogdXNlcmlkIGFwaSBtZXRob2QKICAgKgogICAqIEByZXR1cm4gc3RyaW5nCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIExvZ2dlZEluTmFtZSgpCiAgewogICAgJHVzZXJpZCA9ICR0aGlzLT5Mb2dnZWRJbklkKCk7CiAgICAKICAgIGlmKCR1c2VyaWQpIHsgcmV0dXJuICR0aGlzLT5HZXRVc2VyTmFtZSgkdXNlcmlkKTsgfQogIAogICAgcmV0dXJuICcnOwogIH0KICAKCiAgLyoqCiAgICogdXNlcmlkIGFwaSBtZXRob2QKICAgKiB0aGlzIGlzIGZvciBmcm9udGVuZCBjb2RlCiAgICogQHBhcmFtICR1aWQKICAgKiBAcGFyYW0gJG1lc3NhZ2UKICAgKgogICAqIEByZXR1cm4gdm9pZAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBMb2dvdXQoJHVpZCA9ICcnLCAkbWVzc2FnZSA9ICdsb2dvdXQnKQogIHsKICAgIGlmKCR1aWQgIT0gJycpCiAgICB7CiAgICAgICR0aGlzLT5Mb2dvdXRVc2VyKCR1aWQsICRtZXNzYWdlKTsKICAgICAgcmV0dXJuOwogICAgfQogICAgCiAgICAkdWlkID0gKGludCkkdGhpcy0+TG9nZ2VkSW5JZCgpOwogICAgaWYoJHVpZCA8IDEpIHsgcmV0dXJuOyB9CiAgICAKICAgIC8vIGxvZ291dCB0aGUgY3VycmVudCB1c2VyIChjbGVhcnMgc2Vzc2lvbiBhbmQgY29va2llcykuCiAgICAkdGhpcy0+X2NsZWFyX2xvZ2luZGV0YWlscygkdWlkKTsKICAgIAogICAgLy8gYW5kIGFkZCBoaXN0b3J5IGluZm8KICAgICR0aGlzLT5hZGRfaGlzdG9yeSgkdWlkLCAkbWVzc2FnZSk7CiAgICAKICAgIC8vIHNlbmQgdGhlIGV2ZW50LgogICAgJG1vZHVsZSA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgIFxDTVNNU1xIb29rTWFuYWdlcjo6ZG9faG9vaygnTUFNUzo6T25Mb2dvdXQnLCBbJ2lkJyA9PiAkdWlkXSk7CiAgfQogIAogIAogIC8qKgogICAqIHRoaXMgZGVsZXRlcyB0aGUgZW50cnkgZnJvbSB0aGUgbG9nZ2VkaW4gdGFibGUsIGFuZCBhZGRzIGEgaGlzdG9yeSBlbnRyeS4KICAgKiBpdCBhbHNvIHNldHMgc29tZSBjYWNoZSBkYXRhIHVzZWQgdG8gZm9yY2UgbG9nb3V0IHRoZSB1c2VyCiAgICogZGVzaWduZWQgdG8gcHJvZ3JhbW1hdGljYWxseSBsb2cgb3V0IGEgdXNlciBmcm9tIHRoZSBhZG1pbiBwYW5lbCBvZiB0aGUgbW9kdWxlLgogICAqIHNvIHRoYXQgdGhlIG5leHQgdGltZSBhIHVzZXIgZG9lcyBhbnl0aGluZyBvbiB0aGlzIHNpdGUsIGFuZCBhcyBsb25nIGFzIGNhY2hlIGlzIG5vdCBjbGVhcmVkCiAgICogdGhlIG5leHQgdGltZSBoZSBkb2VzIGEgcmVxdWVzdCBvbiB0aGUgd2Vic2l0ZSwgaGlzIGNvb2tpZXMgYW5kIHNlc3Npb24gZGF0YSB3aWxsIGJlIGNsZWFyZWQKICAgKiBhbm90aGVyIG9wdGlvbiBoZXJlIHdvdWxkIGJlIHRvIHVzZSBhIGZsYWcgaW4gdGhlIGRhdGFiYXNlIHRoYXQgaW5kaWNhdGVzIHRoZSB1c2VyIHNob3VsZCBiZSBsb2dnZWQgb3V0LgogICAqCiAgICogQHBhcmFtICR1aWQKICAgKiBAcGFyYW0gJGV2ZW50bXNnCiAgICoKICAgKiBAcmV0dXJuIHZvaWQKICAgKi8KICAvLyB1c2VyaWQgYXBpIG1ldGhvZAogIHB1YmxpYyBmdW5jdGlvbiBMb2dvdXRVc2VyKCR1aWQsICRldmVudG1zZyA9ICdsb2dvdXQnKQogIHsKIAogICAgY21zX2NhY2hlX2hhbmRsZXI6OmdldF9pbnN0YW5jZSgpLT5zZXQoJ21hbXNfbG9nb3V0XycgLiAkdWlkLCAxLCBfX0NMQVNTX18pOwogICAgCiAgICBpZighJHVpZCkgeyByZXR1cm47IH0KICAgIAogICAgJGRiICAgICA9ICR0aGlzLT5HZXREYigpOwogICAgJHEgICAgICA9ICJERUxFVEUgRlJPTSAiIC4gQ01TX0RCX1BSRUZJWCAuICJtb2R1bGVfbWFtc19sb2dnZWRpbiBXSEVSRSB1c2VyaWQ9PyI7CiAgICAkcCAgICAgID0gWyR1aWRdOwogICAgJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcSwgJHApOwogICAgCiAgICAkdGhpcy0+YWRkX2hpc3RvcnkoJHVpZCwgJGV2ZW50bXNnKTsKICB9CiAgCiAgLyoqCiAgICogQHJldHVybiB2b2lkCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEV4cGlyZVVzZXJzKCkKICB7CiAgICBzdGF0aWMgJF9oYXNydW47CiAgICAKICAgIGlmKCRfaGFzcnVuKSB7IHJldHVybjsgfQogICAgCiAgICAkX2hhc3J1biA9IFRSVUU7CiAgICAKICAgIC8vIGV4cGlyZXMgdXNlcnMgd2hvIGhhdmUgbm90IGJlZW4gJ3RvdWNoZWQnIHdpdGhpbiB0aGUgbGFzdCBOIHNlY29uZHMuCiAgICAkbW9kdWxlICAgICAgICAgID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgJGV4cGlyZV9pbnRlcnZhbCA9IChpbnQpJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgnZXhwaXJldXNlcnNfaW50ZXJ2YWwnLCAxODApOwogICAgJGV4cGlyZV9sYXN0cnVuICA9ICR0aGlzLT5nZXRfZXhwaXJldXNlcnNfbGFzdHJ1bigpOwogICAgCiAgICBpZih0aW1lKCkgLSAkZXhwaXJlX2xhc3RydW4gPj0gJGV4cGlyZV9pbnRlcnZhbCkKICAgIHsKICAgICAgJGV4cGlyeXRpbWUgPSAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCd1c2VyX3Nlc3Npb25fZXhwaXJlcycpOwogICAgICAkZGIgICAgICAgICA9ICR0aGlzLT5HZXREYigpOwogICAgICAKICAgICAgLy8gdG9kbzogYmVnaW4gdHJhbnNhY3Rpb24KICAgICAgJHEgICAgICAgID0gIlNFTEVDVCAqIEZST00gIiAuIENNU19EQl9QUkVGSVggLiAibW9kdWxlX21hbXNfbG9nZ2VkaW4gV0hFUkUgbGFzdHVzZWQgPCA/IjsKICAgICAgJHAgICAgICAgID0gW3RpbWUoKSAtICRleHBpcnl0aW1lXTsKICAgICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxLCAkcCk7CiAgICAgIAogICAgICB3aGlsZSgkZGJyZXN1bHQgJiYgKCRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpKQogICAgICB7CiAgICAgICAgJHRoaXMtPmFkZF9oaXN0b3J5KCRyb3dbJ3VzZXJpZCddLCAnZXhwaXJlJyk7CiAgICAgICAgJGtleSA9ICR0aGlzLT5rZWVwYWxpdmVfY29va2llKCk7CiAgICAgICAgCiAgICAgICAgaWYoaXNzZXQoJF9TRVNTSU9OWyRrZXldKSAmJiAnJyAhPSAkX1NFU1NJT05bJGtleV0pCiAgICAgICAgewogICAgICAgICAgLy8gdGhpcyBsb2dzIHRoZSBjdXJyZW50IHVzZXIgb3V0LgogICAgICAgICAgJGRhdGEgPSAkdGhpcy0+ZGVjb2RlX3VzZXJkYXRhKCRfU0VTU0lPTlska2V5XSk7CiAgICAgICAgICAKICAgICAgICAgIGlmKGlzc2V0KCRkYXRhWyd1aWQnXSkgJiYgJGRhdGFbJ3VpZCddID09ICRyb3dbJ3VzZXJpZCddKQogICAgICAgICAgewogICAgICAgICAgICAkdGhpcy0+X2NsZWFyX2xvZ2luZGV0YWlscygkcm93Wyd1c2VyaWQnXSwgVFJVRSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgICR0aGlzLT5Ob3RpZnlFeHBpcmVkVXNlcigkcm93Wyd1c2VyaWQnXSk7CiAgICAgIH0KICAgICAgCiAgICAgICRxICAgICAgPSAiREVMRVRFIEZST00gIiAuIENNU19EQl9QUkVGSVggLiAibW9kdWxlX21hbXNfbG9nZ2VkaW4gV0hFUkUgbGFzdHVzZWQ8PyI7CiAgICAgICRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHEsICRwKTsKICAgICAgCiAgICAgIC8vIHRvZG86IGNvbW1pdCB0cmFuc2FjdGlvbgogICAgICAKICAgICAgJHRoaXMtPnRvdWNoX2V4cGlyZXVzZXJzX2xhc3RydW4oKTsKICAgIH0KICB9CiAgCiAgLy8gdXNlcmlkIGFwaSBtZXRob2QKICAKICAvKioKICAgKiBAcmV0dXJuIGZhbHNlfGludHxtaXhlZAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBMb2dnZWRJbklkKCkKICB7CiAgICAvLyBpZiB0aGUgdXNlciBpcyBhdXRoZW50aWNhdGVkIHVzaW5nIHRoZSBhdXRoIG1vZHVsZQogICAgJG1vZHVsZSAgICAgICAgPSAkdGhpcy0+R2V0TW9kdWxlKCk7CiAgICAkYXV0aF9jb25zdW1lciA9IG1hbXNfdXRpbHM6OmdldF9hdXRoX2NvbnN1bWVyKCk7CiAgICAKICAgIGlmKCEkYXV0aF9jb25zdW1lci0+aGFzX2NhcGFiaWxpdHkoJGF1dGhfY29uc3VtZXI6OkNBUEFCSUxJVFlfTE9HSU4pKQogICAgewogICAgICAvLyBpdCdzIHRoZSBidWlsdC1pbiBzdHVmZi4KICAgICAgcmV0dXJuICR0aGlzLT5fc3RkX0xvZ2dlZEluSWQoKTsKICAgIH0KICAgIAogICAgLy8gZWl0aGVyIHRoZSBjb25zdW1lciBkb2Vzbid0IHByb3ZpZGUgYWJzb2x1dGUgbG9naW4gKENBUEFCSUxJVFlfTE9HSU4pCiAgICAvLyBPUiB0aGUgdXNlciBpcyBub3QgYXV0aGVudGljYXRlZCB2aWEgdGhlIG9sZCBzdHVmZi4KICAgIGlmKCRhdXRoX2NvbnN1bWVyLT5pc19hdXRoZW50aWNhdGVkKCkpCiAgICB7CiAgICAgIC8vIGF1dGhlbnRpY2F0ZWQgdmlhIHNvbWUgZXh0ZXJuYWwgbWVjaGFuaXNtLi4uIHN0aWxsIG5lZWQgdG8gdGllIHRoaXMgdG8gYW4KICAgICAgLy8gaW50ZXJuYWwgdXNlciByZWNvcmQgZm9yIHByb3BlcnRpZXMgYW5kIGdyb3VwcyBhbmQgY3J1ZnQuCiAgICAgIAogICAgICAvLyBzZWFyY2ggZm9yIGEgdXNlcmlkIGJhc2VkIG9uIGEgcHJvcGVydHkKICAgICAgJHByb3AgPSAkYXV0aF9jb25zdW1lci0+Z2V0X2Nvbm5lY3RpbmdfcHJvcGVydHlfbmFtZSgpOwogICAgICAkdmFsICA9ICRhdXRoX2NvbnN1bWVyLT5nZXRfdW5pcXVlX2lkZW50aWZpZXIoKTsKICAgICAgCiAgICAgIGlmKCEkdmFsKSB7IHJldHVybiBGQUxTRTsgfQogICAgICAKICAgICAgJHVpbmZvICAgPSAnJzsKICAgICAgJHVzZXByb3AgPSBGQUxTRTsKICAgICAgCiAgICAgIGlmKCcnID09ICRwcm9wIHx8IG1hbXNfYXV0aF9jb25zdW1lcjo6UFJPUEVSVFlfVVNFUk5BTUUgPT0gJHByb3ApCiAgICAgIHsKICAgICAgICAvLyBnZXQgdXNlciBieSBuYW1lCiAgICAgICAgJHVpbmZvID0gJHRoaXMtPkdldFVzZXJJbmZvQnlOYW1lKCRhdXRoX2NvbnN1bWVyLT5nZXRfdXNlcm5hbWUoJHZhbCkpOwogICAgICB9CiAgICAgIGVsc2UgaWYoJHByb3AgPT0gbWFtc19hdXRoX2NvbnN1bWVyOjpQUk9QRVJUWV9VSUQpCiAgICAgIHsKICAgICAgICAvLyBzZWUgaWYgdGhlIHVpZCBleGlzdHMuCiAgICAgICAgJHVpbmZvID0gJHRoaXMtPkdldFVzZXJJbmZvKCR2YWwpOwogICAgICB9CiAgICAgIGVsc2UKICAgICAgewogICAgICAgIC8vIGl0J3MgYSBwcm9wZXJ0eSBvZiBzb21lIHR5cGUuCiAgICAgICAgJHVpbmZvICAgPSAkdGhpcy0+R2V0VXNlckluZm9CeVByb3BlcnR5KCRwcm9wLCAkdmFsKTsKICAgICAgICAkdXNlcHJvcCA9IFRSVUU7CiAgICAgIH0KICAgICAgCiAgICAgICMgICAgICAgICAgICAgICAgICAgICAgfHwgPC0gYXQgdGhpcyBwb2ludCAkdWluZm8gaXMgYW4gYXJyYXkgKEpNKQogICAgICAvL2lmKCFpc19hcnJheSgkdWluZm8pIHx8IChpc19hcnJheSgkdWluZm8pICYmIEZBTFNFID09ICR1aW5mb1swXSkgKSAjIyBtYXliZSB0aGUgbmV4dCBsaW5lIHdvcmtzIGJldHRlcj8KICAgICAgaWYoIWlzX2FycmF5KCR1aW5mbykgfHwgISR1aW5mb1swXSkKICAgICAgewogICAgICAgIC8vIHVzZXIgYXV0aGVudGljYXRlZCBidXQgbm90IGZvdW5kLCBkbyB3ZSBuZWVkIHRvIGNyZWF0ZSBvbmU/CiAgICAgICAgaWYoJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgnYXV0b19jcmVhdGVfdW5rbm93bicpKQogICAgICAgIHsKICAgICAgICAgIC8vIHdlJ3JlIGdvaW5nIHRvIGNyZWF0ZSBhIG5ldyB1c2VyLgogICAgICAgICAgJHVzZXJuYW1lID0gJyc7CiAgICAgICAgICAKICAgICAgICAgIGlmKCRhdXRoX2NvbnN1bWVyLT5oYXNfY2FwYWJpbGl0eSgkYXV0aF9jb25zdW1lcjo6Q0FQQUJJTElUWV9VU0VSTkFNRSkpCiAgICAgICAgICB7CiAgICAgICAgICAgICR1c2VybmFtZSA9ICRhdXRoX2NvbnN1bWVyLT5nZXRfdXNlcm5hbWUoKTsKICAgICAgICAgIH0KICAgICAgICAgIAogICAgICAgICAgaWYoISR1c2VybmFtZSkKICAgICAgICAgIHsKICAgICAgICAgICAgJHVzZXJuYW1lID0gJHZhbDsKICAgICAgICAgICAgaWYoCiAgICAgICAgICAgICAgJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgndXNlX3JhbmRvbXVzZXJuYW1lJykgJiYKICAgICAgICAgICAgICAkcHJvcCAhPSBtYW1zX2F1dGhfY29uc3VtZXI6OlBST1BFUlRZX1VTRVJOQU1FICYmCiAgICAgICAgICAgICAgJHByb3AgIT0gbWFtc19hdXRoX2NvbnN1bWVyOjpQUk9QRVJUWV9VSUQgJiYKICAgICAgICAgICAgICAnJyAhPSAkcHJvcAogICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAkdXNlcm5hbWUgPSAkbW9kdWxlLT5HZW5lcmF0ZVJhbmRvbVVzZXJuYW1lKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIAogICAgICAgICAgJHRtcCAgICAgPSAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdleHBpcmVhZ2VfbW9udGhzJywgNTIwKTsKICAgICAgICAgICRleHBpcmVzID0gc3RydG90aW1lKHNwcmludGYoJyslZCBtb250aHMnLCAkdG1wKSk7CiAgICAgICAgICAKICAgICAgICAgICRyZXQgPSAkdGhpcy0+QWRkVXNlcigKICAgICAgICAgICAgJHVzZXJuYW1lLAogICAgICAgICAgICBtYW1zX3V0aWxzOjpnZW5lcmF0ZV9yYW5kb21fcHJpbnRhYmxlX3N0cmluZygpLAogICAgICAgICAgICAkZXhwaXJlcywgVFJVRSwgVFJVRQogICAgICAgICAgKTsKICAgICAgICAgIAogICAgICAgICAgaWYoISRyZXRbMF0pCiAgICAgICAgICB7CiAgICAgICAgICAgICRtb2R1bGUtPkF1ZGl0KCcnLCAkbW9kdWxlLT5HZXROYW1lKCksICRyZXRbMV0pOwogICAgICAgICAgICAKICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgICAgfQogICAgICAgICAgCiAgICAgICAgICAkdWlkID0gJHJldFsxXTsKICAgICAgICAgIAogICAgICAgICAgLy8gc2V0IGhpcyBncm91cHMuCiAgICAgICAgICAkZGZsdF9ncm91cHMgPSAkdGhpcy0+R2V0RGZsdEdyb3VwcygpOwogICAgICAgICAgCiAgICAgICAgICBpZihpc19hcnJheSgkZGZsdF9ncm91cHMpICYmIGNvdW50KCRkZmx0X2dyb3VwcykpCiAgICAgICAgICB7CiAgICAgICAgICAgICMgd2FzICRyZXMgYnV0IHNtZWxsZWQgbGlrZSBhbiBlcnJvcgogICAgICAgICAgICAkcmV0ID0gJHRoaXMtPlNldFVzZXJHcm91cHMoJHVpZCwgJGRmbHRfZ3JvdXBzKTsKICAgICAgICAgIH0KICAgICAgICAgIAogICAgICAgICAgLy8gbm93IHNldCBhIHByb3BlcnR5LgogICAgICAgICAgaWYoJHVzZXByb3ApCiAgICAgICAgICB7CiAgICAgICAgICAgICRyZXQgPSAkdGhpcy0+U2V0VXNlclByb3BlcnR5RnVsbCgkcHJvcCwgJHZhbCwgJHVpZCk7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZighJHJldCkKICAgICAgICAgICAgewogICAgICAgICAgICAgIC8vIHNob3VsZCByZW1vdmUgdGhlIHVzZXIuLi4KICAgICAgICAgICAgICAkbW9kdWxlLT5BdWRpdCgnJywgJG1vZHVsZS0+R2V0TmFtZSgpLCAkbW9kdWxlLT5MYW5nKCdlcnJvcl9wcm9ibGVtc2V0dGluZ2luZm8nKSk7CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICAKICAgICAgICAgICRtb2R1bGUtPkF1ZGl0KCR1aWQsICRtb2R1bGUtPkdldE5hbWUoKSwgJG1vZHVsZS0+TGFuZygnYXVkaXRfdXNlcl9jcmVhdGVkJykpOwogICAgICAgICAgCiAgICAgICAgICByZXR1cm4gJHVpZDsKICAgICAgICB9CiAgICAgIH0KICAgICAgZWxzZQogICAgICB7CiAgICAgICAgcmV0dXJuICR1aW5mb1sxXVsnaWQnXTsKICAgICAgfQogICAgfQogICAgCiAgICByZXR1cm4gRkFMU0U7CiAgfQogIAogIC8qKgogICAqIE5PVCBGT1IgRVhURVJOQUwgVVNFCiAgICoKICAgKiBAaW50ZXJuYWwKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gX3N0ZF9Mb2dnZWRJbklkKCkKICB7CiAgICAkc2Vzc2lvbmlkID0gc2Vzc2lvbl9pZCgpOwogICAgaWYoISRzZXNzaW9uaWQpCiAgICB7CiAgICAgIHJldHVybiBGQUxTRTsKICAgIH0KICAgIAogICAgLy8gaWYgd2UgYXJlIGV4cGlyZWQgdGhpcyB3aWxsIGxvZyB1cyBvdXQuIGNhbGxzIF9jbGVhcl9sb2dpbmRldGFpbHMKICAgICR0aGlzLT5FeHBpcmVVc2VycygpOwogICAgCiAgICAvLyBnZXQgdGhlIGxvZ2luIGRldGFpbHMgZnJvbSBzZXNzaW9uLCBjb29raWVzIG9yIGZyb20gdGhlIGRhdGFiYXNlCiAgICAkZGF0YSA9ICR0aGlzLT5fZ2V0X3NhdmVkX2xvZ2luZGV0YWlscygpOwogICAgaWYoISRkYXRhIHx8ICFpc3NldCgkZGF0YVsndWlkJ10pKQogICAgewogICAgICByZXR1cm4gRkFMU0U7CiAgICB9CiAgICAkdWlkID0gKGludCkkZGF0YVsndWlkJ107CiAgICAKICAgIC8vIGlmIHdlIGFyZSBmb3JjZSBsb2dnZWQgb3V0CiAgICBpZihjbXNfY2FjaGVfaGFuZGxlcjo6Z2V0X2luc3RhbmNlKCktPmV4aXN0cygnbWFtc19sb2dvdXRfJyAuICR1aWQsIF9fQ0xBU1NfXykpCiAgICB7CiAgICAgIGNtc19jYWNoZV9oYW5kbGVyOjpnZXRfaW5zdGFuY2UoKS0+ZXJhc2UoJ21hbXNfbG9nb3V0XycgLiAkdWlkLCBfX0NMQVNTX18pOwogICAgICAvLyBjbGVhcnMgY29va2llcyBhbmQgc2Vzc2lvbiBkYXRhCiAgICAgICR0aGlzLT5fY2xlYXJfbG9naW5kZXRhaWxzKCR1aWQpOwogICAgICAKICAgICAgcmV0dXJuIEZBTFNFOwogICAgfQogICAgCiAgICAvLyBhY3R1YWxseSBkb2VzIHRoZSBsb2dnaW5nIGluIHRvIHRoZSBkYXRhYmFzZSwgYW5kIHNldHMgY29va2llcyBhbmQgc2Vzc2lvbiBkYXRhLgogICAgJHRoaXMtPl9zZXRfc2F2ZWRfbG9naW5kZXRhaWxzKCRkYXRhKTsKICAgIAogICAgcmV0dXJuICR1aWQ7CiAgfQogIAogIC8vIHVzZXJpZCBhcGkgbWV0aG9kCiAgcHVibGljIGZ1bmN0aW9uIExvZ2dlZEluKCkKICB7CiAgICBpZighJHRoaXMtPkxvZ2dlZEluSWQoKSkKICAgIHsKICAgICAgcmV0dXJuIEZBTFNFOwogICAgfQogICAgCiAgICByZXR1cm4gVFJVRTsKICB9CiAgCiAgLyoqCiAgICogRGV0ZXJtaW5lIGlmIHRoZSB1c2VyIGlkIGlzIGEgbWVtYmVyIG9mIHRoZSBncm91cChzKSBzcGVjaWZpZWQuCiAgICoKICAgKiBAcGFyYW0gaW50ZWdlciB1c2VyaWQKICAgKiBAcGFyYW0gbWl4ZWQgaW50ZWdlciAocG9zaXRpdmUpIGdyb3VwIGlkLCBvciBhbiBhcnJheSBvZiBwb3NpdGl2ZSBpbnRlZ2VyIGdyb3VwIGlkcy4KICAgKgogICAqIEByZXR1cm4gYm9vbGVhbgogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBNZW1iZXJPZkdyb3VwKCR1c2VyaWQsICRncm91cGlkKQogIHsKICAgIGlmKCR1c2VyaWQgPCAxKSB7IHJldHVybiBGQUxTRTsgfQogICAgCiAgICAvLyBjbGVhbnVwIHRoZSBpbnB1dCBncm91cGlkIGxpc3QuCiAgICBpZighaXNfYXJyYXkoJGdyb3VwaWQpKQogICAgewogICAgICAkZ3JvdXBpZCA9IFsoaW50KSRncm91cGlkXTsKICAgIH0KICAgIAogICAgJGdyb3VwaWQgPSBhcnJheV92YWx1ZXMoJGdyb3VwaWQpOwogICAgCiAgICBmb3JlYWNoKCRncm91cGlkIGFzICRpID0+ICRpVmFsdWUpCiAgICB7CiAgICAgIGlmKCRpVmFsdWUgPCAxKSB7IHVuc2V0KCRncm91cGlkWyRpXSk7IH0KICAgIH0KICAgIAogICAgaWYoIWlzX2FycmF5KCRncm91cGlkKSB8fCAwID09PSBjb3VudCgkZ3JvdXBpZCkpIHsgcmV0dXJuIEZBTFNFOyB9CiAgICAKICAgICR0bXAgPSAkdGhpcy0+R2V0TWVtYmVyR3JvdXBzQXJyYXkoJHVzZXJpZCk7CiAgICAKICAgIGlmKCFpc19hcnJheSgkdG1wKSB8fCAwID09PSBjb3VudCgkdG1wKSkgeyByZXR1cm4gRkFMU0U7IH0KICAgIAogICAgJG1lbWJlcnNoaXAgPSB4dF9hcnJheTo6ZXh0cmFjdF9maWVsZCgkdG1wLCAnZ3JvdXBpZCcpOwogICAgJHRtcCAgICAgICAgPSBhcnJheV9pbnRlcnNlY3QoJG1lbWJlcnNoaXAsICRncm91cGlkKTsKICAgIAogICAgaWYoY291bnQoJHRtcCkpIHsgcmV0dXJuIFRSVUU7IH0KICAgIAogICAgcmV0dXJuIEZBTFNFOwogIH0KICAKICAvKioKICAgKiB1c2VyaWQgYXBpIG1ldGhvZAogICAqCiAgICogQHBhcmFtICR1c2VyaWQKICAgKgogICAqIEByZXR1cm4gc3RyaW5nCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEdldFVzZXJOYW1lKCR1c2VyaWQpCiAgewogICAgJHJvdyA9IG1hbXNfdXNlcl9jYWNoZTo6Z2V0X3VzZXIoJHVzZXJpZCk7CiAgICAKICAgIGlmKCEkcm93KSB7IHJldHVybiAnJzsgfQogICAgCiAgICByZXR1cm4gJHJvd1sndXNlcm5hbWUnXTsKICB9CiAgCiAgCiAgLyoqCiAgICogdXNlcmlkIGFwaSBtZXRob2QKICAgKgogICAqIEBwYXJhbSAkdXNlcm5hbWUKICAgKgogICAqIEByZXR1cm4gaW50CiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEdldFVzZXJJRCgkdXNlcm5hbWUpCiAgewogICAgaWYoICFpc19hcnJheSgkdGhpcy0+X3VzZXJpZGJ5bmFtZSkgKQogICAgewogICAgICAkdGhpcy0+X3VzZXJpZGJ5bmFtZSA9IFtdOwogICAgfQogICAgCiAgICBpZighaXNzZXQoJHRoaXMtPl91c2VyaWRieW5hbWVbJHVzZXJuYW1lXSkpCiAgICB7CiAgICAgICRkYiAgPSAkdGhpcy0+R2V0RGIoKTsKICAgICAgJHEgICA9ICdTRUxFQ1QgaWQgRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc191c2VycyBXSEVSRSB1c2VybmFtZSA9ID8nOwogICAgICAkdWlkID0gKGludCkkZGItPkdldE9uZSgkcSwgWyR1c2VybmFtZV0pOwogICAgICAKICAgICAgaWYoJHVpZCA8IDEpIHsgcmV0dXJuIC0xOyB9CiAgICAgIAogICAgICAkdGhpcy0+X3VzZXJpZGJ5bmFtZVskdXNlcm5hbWVdID0gJHVpZDsKICAgICAgCiAgICAgIHJldHVybiAkdWlkOwogICAgfQogICAgCiAgICByZXR1cm4gKGludCkkdGhpcy0+X3VzZXJpZGJ5bmFtZVskdXNlcm5hbWVdOwogIH0KICAKICAvKioKICAgKiB1c2VyaWQgYXBpIG1ldGhvZAogICAqCiAgICogQHBhcmFtICRuYW1lCiAgICogQHBhcmFtICRkZXNjcmlwdGlvbgogICAqCiAgICogQHJldHVybiBhcnJheQogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBBZGRHcm91cCgkbmFtZSwgJGRlc2NyaXB0aW9uKQogIHsKICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwogICAgCiAgICAvLyBzZWUgaWYgaXQgZXhpc3RzIGFscmVhZHkgb3Igbm90IChieSBuYW1lKQogICAgJHEgICAgICAgID0gIlNFTEVDVCAqIEZST00gIiAuIENNU19EQl9QUkVGSVggLiAibW9kdWxlX21hbXNfZ3JvdXBzIFdIRVJFIGdyb3VwbmFtZSA9ID8iOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxLCBbJG5hbWVdKTsKICAgIGlmKCEkZGJyZXN1bHQpCiAgICB7CiAgICAgIHJldHVybiBbRkFMU0UsICRkYi0+RXJyb3JNc2coKV07CiAgICB9CiAgICAKICAgICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CiAgICAKICAgIGlmKCRyb3cpCiAgICB7CiAgICAgICRtb2R1bGUgPSAkdGhpcy0+R2V0TW9kdWxlKCk7CiAgICAgIAogICAgICByZXR1cm4gW0ZBTFNFLCAkbW9kdWxlLT5MYW5nKCdlcnJvcl9ncm91cG5hbWVfZXhpc3RzJyldOwogICAgfQogICAgCiAgICAkcSAgICAgICAgPSAiSU5TRVJUIElOVE8gIiAuIENNU19EQl9QUkVGSVggLiAibW9kdWxlX21hbXNfZ3JvdXBzIChncm91cG5hbWUsZ3JvdXBkZXNjKSBWQUxVRVMgKD8sPykiOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxLCBbJG5hbWUsICRkZXNjcmlwdGlvbl0pOwogICAgCiAgICBpZighJGRicmVzdWx0KQogICAgewogICAgICByZXR1cm4gW0ZBTFNFLCAkZGItPkVycm9yTXNnKCldOwogICAgfQogICAgCiAgICAkZ3JwaWQgPSAkZGItPkluc2VydF9JRCgpOwogICAgdW5zZXQoJHRoaXMtPl9ncm91cGluZm9fY2FjaGUpOwogICAgCiAgICByZXR1cm4gW1RSVUUsICRncnBpZF07CiAgfQogIAogIC8qKgogICAqIHVzZXJpZCBhcGkgbWV0aG9kCiAgICoKICAgKiBAcGFyYW0gICAgICAkbmFtZQogICAqIEBwYXJhbSAgICAgICRwYXNzd29yZAogICAqIEBwYXJhbSAgICAgICRleHBpcmVzCiAgICogQHBhcmFtIGJvb2wgJG5vbnN0ZAogICAqIEBwYXJhbSBudWxsICRjcmVhdGVkYXRlCiAgICoKICAgKiBAcmV0dXJuIGFycmF5CiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEFkZFVzZXIoJG5hbWUsICRwYXNzd29yZCwgJGV4cGlyZXMsICRub25zdGQgPSBGQUxTRSwgJGNyZWF0ZWRhdGUgPSBOVUxMKQogIHsKICAgICRkYiA9ICR0aGlzLT5HZXREYigpOwogICAgCiAgICAvLyBzZWUgaWYgaXQgZXhpc3RzIGFscmVhZHkgb3Igbm90IChieSBuYW1lKQogICAgJHVpZCA9ICR0aGlzLT5HZXRVc2VySUQoJG5hbWUpOwogICAgCiAgICBpZigkdWlkID4gMCkKICAgIHsKICAgICAgJG1vZHVsZSA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgICAgCiAgICAgIHJldHVybiBbRkFMU0UsICRtb2R1bGUtPkxhbmcoJ2Vycm9yX3VzZXJuYW1lX2V4aXN0cycpXTsKICAgIH0KICAgIAogICAgLy8gZ2VuZXJhdGUgdGhlIHNhbHQuCiAgICAkc2FsdCA9IE5VTEw7CiAgICAKICAgIGlmKDEgPT09ICR0aGlzLT51c2VfdXNlcnNhbHQoKSkKICAgIHsKICAgICAgJHNhbHQgPSBzaGExKHRpbWUoKSAuICRuYW1lIC4gcmFuZCgpIC4gJGV4cGlyZXMgLiBfX0ZJTEVfXyk7CiAgICB9CiAgICAKICAgIC8vIGluc2VydCB0aGUgcmVjb3JkCiAgICAkY3JlYXRlZGF0ZSA9IChpbnQpJGNyZWF0ZWRhdGU7CiAgICAKICAgIGlmKCRjcmVhdGVkYXRlIDwgMSkgeyAkY3JlYXRlZGF0ZSA9IHRpbWUoKTsgfQogICAgCiAgICAkcSAgICAgICAgPSAnSU5TRVJUIElOVE8gJyAuIENNU19EQl9QUkVGSVggLgogICAgICAgICAgICAgICAgJ21vZHVsZV9tYW1zX3VzZXJzICh1c2VybmFtZSxwYXNzd29yZCxjcmVhdGVkYXRlLGV4cGlyZXMsbm9uc3RkLHNhbHQpIFZBTFVFUyAoPyw/LD8sPyw/LD8pJzsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSwgJyAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaW0oJGRiLT5EYlRpbWVTdGFtcCgkY3JlYXRlZGF0ZSksICInIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpbSgkZGItPkRiVGltZVN0YW1wKCRleHBpcmVzKSwgIiciKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYm9vbCkkbm9uc3RkLCAkc2FsdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgCiAgICBpZighJGRicmVzdWx0KQogICAgewogICAgICByZXR1cm4gW0ZBTFNFLCAkZGItPkVycm9yTXNnKCldOwogICAgfQogICAgCiAgICAkdWlkID0gJGRiLT5JbnNlcnRfSUQoKTsKICAgIAogICAgLy8gc2V0IHRoZSBwYXNzd29yZAogICAgJHJlcyA9ICR0aGlzLT5TZXRVc2VyUGFzc3dvcmQoJHVpZCwgJHBhc3N3b3JkKTsKICAgIAogICAgaWYoISRyZXNbMF0pIHsgcmV0dXJuICRyZXM7IH0KICAgIAogICAgJHRoaXMtPl91c2VyaWRieW5hbWUgPSBbXTsKICAgIAogICAgcmV0dXJuIFtUUlVFLCAkdWlkXTsKICB9CiAgCiAgLyoqCiAgICogdXNlcmlkIGFwaSBtZXRob2QKICAgKgogICAqIEBwYXJhbSAkZ2lkCiAgICoKICAgKiBAcmV0dXJuIHN0cmluZwogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBHZXRHcm91cE5hbWUoJGdpZCkKICB7CiAgICAkdGhpcy0+X2dldF9ncm91cGluZm8oKTsKICAgIAogICAgaWYoaXNfYXJyYXkoJHRoaXMtPl9ncm91cGluZm9fY2FjaGUpICYmIGlzc2V0KCR0aGlzLT5fZ3JvdXBpbmZvX2NhY2hlWyRnaWRdKSkKICAgIHsKICAgICAgcmV0dXJuIChzdHJpbmcpJHRoaXMtPl9ncm91cGluZm9fY2FjaGVbJGdpZF1bJ2dyb3VwbmFtZSddOwogICAgfQogICAgCiAgICByZXR1cm4gJyc7CiAgfQogIAogIAogIC8qKgogICAqIHVzZXJpZCBhcGkgbWV0aG9kCiAgICoKICAgKiBAcGFyYW0gJGdpZAogICAqCiAgICogQHJldHVybiBzdHJpbmcKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gR2V0R3JvdXBEZXNjKCRnaWQpCiAgewogICAgJHRoaXMtPl9nZXRfZ3JvdXBpbmZvKCk7CiAgICAKICAgIGlmKGlzX2FycmF5KCR0aGlzLT5fZ3JvdXBpbmZvX2NhY2hlKSAmJiBpc3NldCgkdGhpcy0+X2dyb3VwaW5mb19jYWNoZVskZ2lkXSkpCiAgICB7CiAgICAgIHJldHVybiAoc3RyaW5nKSAkdGhpcy0+X2dyb3VwaW5mb19jYWNoZVskZ2lkXVsnZ3JvdXBkZXNjJ107CiAgICB9CiAgICAKICAgIHJldHVybiAnJzsKICB9CgogIC8qKgogICAqIHVzZXJpZCBhcGkgbWV0aG9kCiAgICoKICAgKiBAcGFyYW0gJGlkCiAgICoKICAgKiBAcmV0dXJuIGFycmF5CiAgICovCiAgcHVibGljIGZ1bmN0aW9uIERlbGV0ZUdyb3VwRnVsbCgkaWQpCiAgewogICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICB0cnkKICAgIHsKICAgICAgJGRiLT5CZWdpblRyYW5zKCk7CiAgICAgIAogICAgICAvLyBkZWxldGUgYWxsIHByb3BlcnR5IHJlbGF0aW9ucyBmcm9tIHRoaXMgZ3JvdXAKICAgICAgJHEgPSAnREVMRVRFIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfZ3JvdXBwcm9wbWFwIFdIRVJFIGdyb3VwX2lkID0gPyc7CiAgICAgICRkYi0+RXhlY3V0ZSgkcSwgWyRpZF0pOwogICAgICAKICAgICAgLy8gZGVsZXRlIGFsbCBpbmRpY2F0aW9uIHRoYXQgYW55Ym9keSBpcyBhIG1lbWJlcgogICAgICAvLyBvZiB0aGlzIGdyb3VwCiAgICAgICRxID0gJ0RFTEVURSBGUk9NICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX2JlbG9uZ3MgV0hFUkUgZ3JvdXBpZCA9ID8nOwogICAgICAkZGItPkV4ZWN1dGUoJHEsIFskaWRdKTsKICAgICAgCiAgICAgIC8vIGFuZCB0aGVuIGRlbGV0ZSB0aGUgZ3JvdXAKICAgICAgJHEgPSAnREVMRVRFIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfZ3JvdXBzIFdIRVJFIGlkID0gPyc7CiAgICAgICRkYi0+RXhlY3V0ZSgkcSwgWyRpZF0pOwogICAgICAKICAgICAgJGRiLT5Db21taXRUcmFucygpOwogICAgICAkdGhpcy0+X2dyb3VwaW5mb19jYWNoZSA9IE5VTEw7CiAgICAgIAogICAgICByZXR1cm4gW1RSVUUsICcnXTsKICAgIH0KICAgIGNhdGNoKFxFeGNlcHRpb24gJGUpCiAgICB7CiAgICAgICRkYi0+Um9sbGJhY2tUcmFucygpOwogICAgICAkbW9kID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgICBhdWRpdCgkaWQsICRtb2QtPkdldE5hbWUoKSwgJ1Byb2JsZW0gRGVsZXRpbmcgR3JvdXA6ICcgLiAkZS0+Z2V0TWVzc2FnZSgpKTsKICAgICAgXHh0X3V0aWxzOjpsb2dfZXhjZXB0aW9uKCRlKTsKICAgICAgCiAgICAgIHJldHVybiBbRkFMU0UsICRlLT5nZXRNZXNzYWdlKCldOwogICAgfQogIH0KCiAgLyoqCiAgICogdXNlcmlkIGFwaSBtZXRob2QKICAgKgogICAqIEByZXR1cm4gYXJyYXkKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gR2V0R3JvdXBMaXN0KCkKICB7CiAgICAkdGhpcy0+X2dldF9ncm91cGluZm8oKTsKICAgICRyZXN1bHQgPSBbXTsKICAgIAogICAgaWYoaXNfYXJyYXkoJHRoaXMtPl9ncm91cGluZm9fY2FjaGUpKQogICAgewogICAgICBmb3JlYWNoKCR0aGlzLT5fZ3JvdXBpbmZvX2NhY2hlIGFzICRnaWQgPT4gJGluZm8pCiAgICAgIHsKICAgICAgICAkcmVzdWx0WyRpbmZvWydncm91cG5hbWUnXV0gPSAoaW50KSRnaWQ7CiAgICAgIH0KICAgIH0KICAgIAogICAgcmV0dXJuICRyZXN1bHQ7CiAgfQogIAogIC8vIHVzZXJpZCBhcGkgbWV0aG9kCiAgLyoqCiAgICogdXNlcmlkIGFwaSBtZXRob2QKICAgKgogICAqIEBwYXJhbSBib29sICR3aXRoX2NvdW50CiAgICoKICAgKiBAcmV0dXJuIGFycmF5CiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwTGlzdEZ1bGwoJHdpdGhfY291bnQgPSBGQUxTRSkKICB7CiAgICAkdGhpcy0+X2dldF9ncm91cGluZm8oJHdpdGhfY291bnQpOwogICAgJHJlc3VsdCA9IFtdOwogICAgCiAgICBpZihpc19hcnJheSgkdGhpcy0+X2dyb3VwaW5mb19jYWNoZSkpCiAgICB7CiAgICAgICRyZXN1bHQgPSAkdGhpcy0+X2dyb3VwaW5mb19jYWNoZTsKICAgIH0KICAgIAogICAgcmV0dXJuICRyZXN1bHQ7CiAgfQogIAogIC8qKgogICAqIG9sZCB1c2VyaWQgYXBpIG1ldGhvZAogICAqCiAgICogQHBhcmFtICRncm91cG5hbWUKICAgKgogICAqIEByZXR1cm4gaW50CiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwSUQoJGdyb3VwbmFtZSkKICB7CiAgICAkdGhpcy0+X2dldF9ncm91cGluZm8oKTsKICAgIAogICAgaWYoaXNfYXJyYXkoJHRoaXMtPl9ncm91cGluZm9fY2FjaGUpKQogICAgewogICAgICBmb3JlYWNoKCR0aGlzLT5fZ3JvdXBpbmZvX2NhY2hlIGFzICRnaWQgPT4gJGluZm8pCiAgICAgIHsKICAgICAgICBpZigkaW5mb1snZ3JvdXBuYW1lJ10gPT09ICRncm91cG5hbWUpIHsgcmV0dXJuIChpbnQpJGdpZDsgfQogICAgICB9CiAgICB9CiAgICAKICAgIHJldHVybiAtMTsKICB9CiAgCiAgLyoqCiAgICogUmV0dXJuIGEgbGlzdCBvZiBncm91cHMgdGhhdCB0aGUgdXNlciBpcyBhIG1lbWJlciBvZgogICAqCiAgICogQHBhcmFtIGludGVnZXIgVGhlIHVzZXIgaWRlbnRpZmllcgogICAqCiAgICogQHJldHVybiBzdHJpbmcgQSBjb21tYSBkZWxpbWl0ZWQgc3RyaW5nIGNvbnRhaW5pbmcgbWVtYmVyIGdyb3VwIG5hbWVzLiAgb3IgJ25vbmUnCiAgICovCiAgZnVuY3Rpb24gR2V0TWVtYmVyR3JvdXBzKCR1c2VyaWQpCiAgewogICAgJGF1dGhfY29uc3VtZXIgPSBtYW1zX3V0aWxzOjpnZXRfYXV0aF9jb25zdW1lcigpOwogICAgCiAgICBpZighJGF1dGhfY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRhdXRoX2NvbnN1bWVyOjpDQVBBQklMSVRZX0dST1VQTUVNQkVSU0hJUCkpCiAgICB7CiAgICAgIHJldHVybiAnbm9uZSc7CiAgICB9CiAgICAKICAgICRvdXQgPSAkYXV0aF9jb25zdW1lci0+Z2V0X2dyb3VwX21lbWJlcnNoaXAoJHVzZXJpZCk7CiAgICAKICAgIGlmKCFpc19hcnJheSgkb3V0KSB8fCAwID09PSBjb3VudCgkb3V0KSkgeyByZXR1cm4gJ25vbmUnOyB9CiAgICAKICAgICRpbmZvID0gJHRoaXMtPl9nZXRfZ3JvdXBpbmZvKCk7CiAgICAkdG1wICA9IFtdOwogICAgCiAgICBmb3JlYWNoKCRvdXQgYXMgJG9uZSkKICAgIHsKICAgICAgaWYoaXNzZXQoJGluZm9bJG9uZV0pKQogICAgICB7CiAgICAgICAgJHRtcFtdID0gJGluZm9bJG9uZV1bJ2dyb3VwbmFtZSddOwogICAgICB9CiAgICB9CiAgICAKICAgIC8vIHRoaXMgbWF5IGJlIGFscmVhZHkgZmFsc2UgYXQgdGhpcyBwb2ludCBzbyB0aGUgZm9sbG93aW5nIGxpbmUgbWF5IG5vdCBiZSBuZWVkZWQgKEpNKQogICAgLy8gaWYoMCA9PT0gY291bnQoJG91dCkpIHsgcmV0dXJuICdub25lJzsgfQogICAgCiAgICByZXR1cm4gaW1wbG9kZSgnLCcsICR0bXApOwogIH0KICAKICAvKioKICAgKiBvbGQgdXNlcmlkIGFwaSBtZXRob2QKICAgKgogICAqIEBwYXJhbSAkaWQKICAgKgogICAqIEByZXR1cm4gYm9vbAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVVc2VyKCRpZCkKICB7CiAgICAvKiogQHZhciBhcnJheSAkcmVzICovCiAgICAkcmVzID0gJHRoaXMtPkRlbGV0ZVVzZXJGdWxsKCRpZCk7CiAgICBpZigkcmVzWzBdKSB7IHJldHVybiBUUlVFOyB9CiAgICAKICAgIHJldHVybiBGQUxTRTsKICB9CiAgCiAgLyoqCiAgICogQGlnbm9yZQogICAqIEByZXR1cm4gYXJyYXl8aW50W118bWl4ZWR8dm9pZAogICAqLwogIHByb3RlY3RlZCBmdW5jdGlvbiBHZXREZmx0R3JvdXBzKCkKICB7CiAgICAkY29uc3VtZXIgPSBtYW1zX3V0aWxzOjpnZXRfYXV0aF9jb25zdW1lcigpOwogICAgCiAgICBpZigkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRjb25zdW1lcjo6Q0FQQUJJTElUWV9ERUZBVUxUR1JPVVBTKSkKICAgIHsKICAgICAgcmV0dXJuICRjb25zdW1lci0+Z2V0X2RlZmF1bHRfZ3JvdXBzKCk7CiAgICB9CiAgICAKICAgICRtYW1zICAgICAgID0gJHRoaXMtPkdldE1vZHVsZSgpOwogICAgJGRmbHRfZ3JvdXAgPSAkbWFtcy0+R2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9ncm91cCcpOwogICAgCiAgICByZXR1cm4gWyhpbnQpJGRmbHRfZ3JvdXBdOwogIH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICogQHBhcmFtIGludCAkdWlkCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIFNldFBlcm1hbmVudENvb2tpZShpbnQgJHVpZCkKICB7CiAgICAkbWFtcyA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgICRuYW1lID0gJG1hbXMtPkdldFByZWZlcmVuY2UoJ2Nvb2tpZW5hbWUnKTsKICAgIAogICAgaWYoISRuYW1lKSB7IHJldHVybjsgfQogICAgCiAgICAkZGF0YSA9IFsndWlkJyA9PiAkdWlkLCAndGltZScgPT4gdGltZSgpXTsKICAgICRkYXRhID0gJHRoaXMtPmVuY29kZV91c2VyZGF0YSgkZGF0YSk7CiAgICBcY21zX2Nvb2tpZXM6OnNldCgkbmFtZSwgJGRhdGEsIHRpbWUoKSArIDYwICogMjQgKiAzNjAwKTsKICB9CiAgCiAgLyoqCiAgICogQHJldHVybiBhcnJheQogICAqLwogIHByaXZhdGUgZnVuY3Rpb24gX2dldF9zYXZlZF9sb2dpbmRldGFpbHMoKQogIHsKICAgICRrZXkgICAgICAgPSAkdGhpcy0+a2VlcGFsaXZlX2Nvb2tpZSgpOwogICAgJHNlc3Npb25pZCA9IHNlc3Npb25faWQoKTsKICAgIAogICAgaWYoISRzZXNzaW9uaWQpIHsgcmV0dXJuIFtdOyB9CiAgICAKICAgICRkYXRhICAgPSBbXTsKICAgICRtb2R1bGUgPSAkdGhpcy0+R2V0TW9kdWxlKCk7CiAgICAKICAgIGlmKCFlbXB0eSgkX1NFU1NJT05bJGtleV0pKQogICAgewogICAgICAkZGF0YSA9IChhcnJheSkkdGhpcy0+ZGVjb2RlX3VzZXJkYXRhKCRfU0VTU0lPTlska2V5XSk7CiAgICB9CiAgCiAgICAvLyBzZWUgaWYgd2UgY2FuIGdldCB0aGUgZGF0YSBmcm9tIGEgc2Vzc2lvbiBjb29raWUKICAgIGlmKCEkZGF0YSAmJiAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdjb29raWVfa2VlcGFsaXZlJywgMCkgJiYgIWVtcHR5KFxjbXNfY29va2llczo6ZXhpc3RzKCRrZXkpKSkKICAgIHsKICAgICAgJGRhdGEgPSAoYXJyYXkpJHRoaXMtPmRlY29kZV91c2VyZGF0YShcY21zX2Nvb2tpZXM6OmdldCgka2V5KSk7CiAgICB9CiAgICAKICAgIGlmKCEkZGF0YSkKICAgIHsKICAgICAgLy8gc2VlIGlmIHdlIGNhbiBnZXQgdGhlIGRhdGEgZnJvbSBhIHBlcm1hbmVudCBjb29raWUuCiAgICAgIGlmKCcnICE9PSAoJGNuID0gJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgnY29va2llbmFtZScpKSkKICAgICAgewogICAgICAgIC8vIHRoaXMgaXMgcmVtZW1iZXIgbWUgZnVuY3Rpb25hbGl0eS4gYXMgb3Bwb3NlZCB0byBhIHNlc3Npb24gY29va2llLgogICAgICAgICR0bXAgPSBcY21zX2Nvb2tpZXM6OmdldCgkY24pOwogICAgICAgIAogICAgICAgIGlmKCR0bXApCiAgICAgICAgewogICAgICAgICAgJGRhdGEgPSAoYXJyYXkpJHRoaXMtPmRlY29kZV91c2VyZGF0YSgkdG1wKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIAogICAgaWYoJGRhdGEpIHsgcmV0dXJuICRkYXRhOyB9CiAgICAKICAgIC8vIHJlYWQgbG9nZ2VkIGluIGRhdGEgZnJvbSBkYXRhYmFzZSBmb3IgdGhpcyBzZXNzaW9uLgogICAgJGRiICAgPSAkdGhpcy0+R2V0RGIoKTsKICAgICRzcWwgID0gJ1NFTEVDVCB1c2VyaWQgQVMgdWlkLGxhc3R1c2VkIEFTIHRpbWUgRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdtb2R1bGVfbWFtc19sb2dnZWRpbiBXSEVSRSBzZXNzaW9uaWQgPSA/JzsKICAgICRkYXRhID0gJGRiLT5HZXRSb3coJHNxbCwgWyRzZXNzaW9uaWRdKTsKICAgIAogICAgaWYoaXNfYXJyYXkoJGRhdGEpICYmIGNvdW50KCRkYXRhKSkgeyByZXR1cm4gJGRhdGE7IH0KICAgIAogICAgcmV0dXJuIFtdOwogIH0KICAKICAvKioKICAgKiBAcGFyYW0gYXJyYXkgJGRhdGEKICAgKiBAcGFyYW0gYm9vbCAgJGZvcmNlCiAgICoKICAgKiBAcmV0dXJuIHZvaWQKICAgKi8KICBwcml2YXRlIGZ1bmN0aW9uIF9zZXRfc2F2ZWRfbG9naW5kZXRhaWxzKGFycmF5ICRkYXRhLCBib29sICRmb3JjZSA9IEZBTFNFKQogIHsKICAgIGlmKCFpc3NldCgkZGF0YVsndWlkJ10pIHx8ICFpc3NldCgkZGF0YVsndGltZSddKSkKICAgIHsKICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignSW52YWxpZCBkYXRhIHBhc3NlZCB0byAnIC4gX19NRVRIT0RfXyk7CiAgICB9CiAgICAKICAgIGlmKCFpc3NldCgkZGF0YVsnc2Vzc2lvbmlkJ10pKQogICAgewogICAgICAkZGF0YVsnc2Vzc2lvbmlkJ10gPSBzZXNzaW9uX2lkKCk7CiAgICB9CiAgICAKICAgIC8vJHVpZCAgPSAoaW50KSRkYXRhWyd1aWQnXTsKICAgICR0aW1lID0gKGludCkkZGF0YVsndGltZSddOwogICAgCiAgICBzdGF0aWMgJF9kb25lID0gRkFMU0U7CiAgICAKICAgIGlmKCRfZG9uZSkgeyByZXR1cm47IH0KICAKICAgICRfZG9uZSAgICAgICAgICA9IFRSVUU7CiAgICAka2V5ICAgICAgICAgICAgPSAkdGhpcy0+a2VlcGFsaXZlX2Nvb2tpZSgpOwogICAgJGVuY29kZWQgICAgICAgID0gJHRoaXMtPmVuY29kZV91c2VyZGF0YSgkZGF0YSk7CiAgICAkX1NFU1NJT05bJGtleV0gPSAkZW5jb2RlZDsKICAgIAogICAgJG1vZHVsZSA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgIAogICAgaWYoJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgnY29va2llX2tlZXBhbGl2ZScsIDApKQogICAgewogICAgICAvLyB0aGlzLCBpZiBlbmFibGVkIHdpbGwgZXNzZW50aWFsbHkga2VlcCB0aGUgdXNlciBsb2dnZWQgaW4sIElGIGhlIGNvbWVzIGluIG9uY2UgZXZlcnksIHNheSwgMjRocnMKICAgICAgXGNtc19jb29raWVzOjpzZXQoJGtleSwgJGVuY29kZWQsIHRpbWUoKSArIDI0ICogMzYwMCk7IC8vIGV4cGlyeSB0byAyNCBob3Vycy4KICAgIH0KICAgIAogICAgLy8gbm90ZTogd2UgbmV2ZXIgdG91Y2ggdGhlIHBlcm1hY29va2llLgogICAgCiAgICAvLyBoZXJlLCB3ZSB0b3VjaCB0aGUgdXNlciBsb2dpbiBkYXRhLi4uIGJ1dCBpbmZyZXF1ZW50bHkuICAgbXVzdCBiZSBtb3JlIGZyZXF1ZW50IHRoYW4gdGhlIGV4cGlyZXVzZXJzIGludGVydmFsIHRob3VnaC4KICAgIGlmKGlzc2V0KCRfU0VTU0lPTltfX01FVEhPRF9fXSkpCiAgICB7CiAgICAgICR0aW1lID0gbWF4KCRfU0VTU0lPTltfX01FVEhPRF9fXSwgJHRpbWUpOwogICAgfQogICAgCiAgICAkZXhwaXJlX2ludGVydmFsID0gKGludCkkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdleHBpcmV1c2Vyc19pbnRlcnZhbCcsIDE4MCkgLSAxOwogICAgCiAgICBpZigkZm9yY2UgfHwgJHRpbWUgPCB0aW1lKCkgLSBtYXgoMCwgJGV4cGlyZV9pbnRlcnZhbCkpCiAgICB7CiAgICAgIC8vIHRvdWNoIHRoZSBsb2dnZWRpbiB0YWJsZS4KICAgICAgJGRiICAgID0gJHRoaXMtPkdldERiKCk7CiAgICAgICRxdWVyeSA9ICdVUERBVEUgJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfbG9nZ2VkaW4gU0VUIGxhc3R1c2VkID0gPyBXSEVSRSB1c2VyaWQgPSA/IEFORCBzZXNzaW9uaWQgPSA/JzsKICAgICAgJGRiciAgID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgWyRkYXRhWyd0aW1lJ10sICRkYXRhWyd1aWQnXSwgJGRhdGFbJ3Nlc3Npb25pZCddXSk7CiAgICAgIAogICAgICBpZiggISRkYnIgfHwgMCA9PT0gJGRiLT5BZmZlY3RlZF9Sb3dzKCkgKQogICAgICB7CiAgICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcgLiBDTVNfREJfUFJFRklYIC4gJ21vZHVsZV9tYW1zX2xvZ2dlZGluIChzZXNzaW9uaWQsbGFzdHVzZWQsdXNlcmlkKSBWQUxVRVMgKD8sPyw/KSc7CiAgICAgICAgJGRiciAgID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgWyRkYXRhWydzZXNzaW9uaWQnXSwgJGRhdGFbJ3RpbWUnXSwgJGRhdGFbJ3VpZCddXSk7CiAgICAgIH0KICAgICAgCiAgICAgICRfU0VTU0lPTltfX01FVEhPRF9fXSA9IHRpbWUoKTsKICAgIH0KICAgIAogICAgcmV0dXJuOwogIH0KICAKICAvKioKICAgKiBAcGFyYW0gICAgICAkdWlkCiAgICogQHBhcmFtIGJvb2wgJHNlc3Npb25fb25seQogICAqLwogIHByaXZhdGUgZnVuY3Rpb24gX2NsZWFyX2xvZ2luZGV0YWlscygkdWlkLCAkc2Vzc2lvbl9vbmx5ID0gRkFMU0UpCiAgewogICAgLy8gd2UgbnVrZSBzb21lIGNvb2tpZXMsIGFuZCBudWtlIHNvbWUgc2Vzc2lvbiB2YXJpYWJsZXMuCiAgICAvLyBhbmQgZGVsZXRlIHRoZSBsb2dnZWRpbiBlbnRyeSBmcm9tIHRoZSBkYXRhYmFzZQogICAgJGtleSAgICAgICA9ICR0aGlzLT5rZWVwYWxpdmVfY29va2llKCk7CiAgICAkc2Vzc2lvbmlkID0gc2Vzc2lvbl9pZCgpOwogICAgCiAgICBpZighJHNlc3Npb25pZCkgeyByZXR1cm47IH0KICAgIAogICAgZm9yZWFjaCgkX1NFU1NJT04gYXMgJGsgPT4gJHYpCiAgICB7CiAgICAgIGlmKHN0YXJ0c3dpdGgoJGssICRrZXkpKSB7IHVuc2V0KCRfU0VTU0lPTlska10pOyB9CiAgICB9CiAgICAKICAgIGlmKFRSVUUgPT09IChib29sKSRzZXNzaW9uX29ubHkpIHsgcmV0dXJuOyB9CiAgICAKICAgIFxjbXNfY29va2llczo6ZXJhc2UoJGtleSk7CiAgICAkbWFtcyA9ICR0aGlzLT5HZXRNb2R1bGUoKTsKICAgIAogICAgaWYoJycgIT09ICgkY24gPSAkbWFtcy0+R2V0UHJlZmVyZW5jZSgnY29va2llbmFtZScpKSkKICAgIHsKICAgICAgXGNtc19jb29raWVzOjplcmFzZSgkY24pOwogICAgfQogICAgCiAgICAkcXVlcnkgPSAnREVMRVRFIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfbG9nZ2VkaW4gV0hFUkUgdXNlcmlkID0gPyc7CiAgICAkZGIgICAgPSAkdGhpcy0+R2V0RGIoKTsKICAgICRkYi0+RXhlY3V0ZSgkcXVlcnksIFskdWlkXSk7CiAgfQogIAp9IC8vIGNsYXNzCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.MAMSUserManipulator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKYWJzdHJhY3QgY2xhc3MgTUFNU1VzZXJNYW5pcHVsYXRvcgp7CiAgICBwcml2YXRlICRtb2Q7CiAgICBwcml2YXRlICRfZXhwaXJlX25vdGlmaWVyX2NhbGxiYWNrOwoKICAgIC8vCiAgICAvLyBJbnRlcm5hbHMKICAgIC8vCgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCBcTUFNUyAkdGhlX21vZHVsZSApCiAgICB7CiAgICAgICAgJHRoaXMtPm1vZCA9ICR0aGVfbW9kdWxlOwogICAgfQoKCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gR2V0RGIoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bW9kLT5HZXREYigpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBHZXRNb2R1bGUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bW9kOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBTZXRFeHBpcmVOb3RpZmllcigkY2FsbGJhY2spCiAgICB7CiAgICAgICAgaWYoIGlzX2NhbGxhYmxlKCRjYWxsYmFjaykgKSAkdGhpcy0+X2V4cGlyZV9ub3RpZmllcl9jYWxsYmFjayA9ICRjYWxsYmFjazsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gTm90aWZ5RXhwaXJlZFVzZXIoJHBhcmFtcyA9IGFycmF5KCkpCiAgICB7CiAgICAgICAgaWYoICFpc19hcnJheSgkcGFyYW1zKSAmJiAoaXNfc3RyaW5nKCRwYXJhbXMpIHx8IGlzX2ludCgkcGFyYW1zKSkgJiYgJycgIT09ICRwYXJhbXMpCiAgICAgICAgewogICAgICAgICAgJHBhcmFtcyA9IFskcGFyYW1zXTsKICAgICAgICB9CiAgICAgICAgCiAgICAgIGlmKCAkdGhpcy0+X2V4cGlyZV9ub3RpZmllcl9jYWxsYmFjayApCiAgICAgIHsKICAgICAgICBjYWxsX3VzZXJfZnVuY19hcnJheSgkdGhpcy0+X2V4cGlyZV9ub3RpZmllcl9jYWxsYmFjaywgJHBhcmFtcyk7CiAgICAgIH0KICAgIH0KCiAgICAvLwogICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgLy8KCiAgICBwdWJsaWMgZnVuY3Rpb24gQWRkR3JvdXBQcm9wZXJ0eVJlbGF0aW9uKCAkZ3JwaWQsICRwcm9wbmFtZSwgJHNvcnRrZXksICRsb3N0dW4sICR2YWwgKQogICAgewogICAgICAgIHJldHVybiBbRkFMU0UsICdGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQnXTsKICAgIH0KCiAgICAvLyEgQWRkIGEgc2luZ2xlIHByb3BlcnR5IGRlZmluaXRpb24KICAgIC8vISBccGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkKICAgIC8vISBccGFyYW0gcHJvbXB0IFRoZSBwcm9tcHQgdG8gZGlzcGxheSB0byB0aGUgdXNlcgogICAgLy8hICAgICAgIG5vdGUsIHRoaXMgd2lsbCBiZSBMYW5naWZpZWQKICAgIC8vISBccGFyYW0gdHlwZSAgVGhlIHR5cGUgb2YgdGhlIHByb3BlcnR5CiAgICAvLyEgICAgICAgMCA9IHRleHQsIDEgPSBjaGVja2JveCwgMiA9IGVtYWlsCiAgICAvLyEgXHBhcmFtIHJlcXVpcmVkIHdldGhlciBvciBub3QgdGhlIHByb3BlcnR5IGlzIHJlcXVpcmVkCiAgICAvLyEgXHJldHVybiBBbiBhcnJheSwgdGhlIGZpcnN0IGVsZW1lbnQgaXMgYSBib29sZWFuIHdoaWNoIGluZGljYXRlcyBzdWNjZXNzIG9yIGZhaWx1cmUsIHRoZQogICAgLy8hICAgIHNlY29uZCBlbGVtZW50IChvcHRpb25hbCkgY29udGFpbnMgYW4gZXJyb3IgbWVzc2FnZSBpbiB0aGUgZXZlbnQgb2YgYW4gZXJyb3IuCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBBZGRQcm9wZXJ0eURlZm4oICRuYW1lLCAkcHJvbXB0LCAkdHlwZSwgJGxlbmd0aCApCiAgICB7CiAgICAgICAgcmV0dXJuIFtGQUxTRSwgJ05vdCBJbXBsZW1lbnRlZCddOwogICAgfQoKICAgIC8vISBBZGQgYSBuZXcgZ3JvdXAKICAgIC8vIQogICAgLy8hIEFkZHMgYSBuZXcgZ3JvdXAgd2l0aCB0aGUgc3VwcGxpZWQgbmFtZSBhbmQgZGVzY3JpcHRpb24KICAgIC8vIQogICAgLy8hIFxwYXJhbSBuYW1lIFRoZSBuZXcgZ3JvdXAgbmFtZQogICAgLy8hIFxwYXJhbSBkZXNjcmlwdGlvbiB0aGUgZ3JvdXAgZGVzY3JpcHRpb24KICAgIC8vISBccmV0dXJuIGFuIGFycmF5LCB0aGUgZmlyc3QgZWxlbWVudCBpcyBhIGRlc2NyaXB0aW9uIGRlc2NyaWJpbmcgdGhlIHJldHVybiBzdGF0dXMKICAgIC8vISAgICAodHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBlcnJvcikuICBUaGUgc2Vjb25kIGVsZW1lbnQgKG9wdGlvbmFsKSBpcyBhbiBlcnJvciBzdHJpbmcgaW4gdGhlCiAgICAvLyEgICAgZXZlbnQgb2YgYW4gZXJyb3IuCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBBZGRHcm91cCggJG5hbWUsICRkZXNjcmlwdGlvbiApCiAgICB7CiAgICAgICAgcmV0dXJuIFtGQUxTRSwgJ0Z1bmN0aW9uIG5vdCBkZWZpbmVkJ107CiAgICB9CgogICAgLy8hIEFkZCBhIG5ldyB1c2VyCiAgICAvLyEKICAgIC8vISBBZGQgdGhlIHNwZWNpZmllZCB1c2VyIHRvIHRoZSBkYXRhYmFzZQogICAgLy8hCiAgICAvLyEgXHBhcmFtIG5hbWUgVGhlIGRlc2lyZWQgdXNlcm5hbWUKICAgIC8vISBccGFyYW0gcGFzc3dvcmQgVGhlIGRlc2lyZWQgcGFzc3dvcmQgKHVuZW5jcnlwdGVkKQogICAgLy8hIFxwYXJhbSBleHBpcmVzIFRoZSBleHBpcnkgZGF0ZQogICAgLy8hIFxyZXR1cm4gYW4gYXJyYXksIHRoZSBmaXJzdCBlbGVtZW50IGlzIGEgZGVzY3JpcHRpb24gZGVzY3JpYmluZyB0aGUgcmV0dXJuIHN0YXR1cwogICAgLy8hICAgICh0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGVycm9yKS4gIFRoZSBzZWNvbmQgZWxlbWVudCAob3B0aW9uYWwpIGlzIGFuIGVycm9yIHN0cmluZyBpbiB0aGUKICAgIC8vISAgICBldmVudCBvZiBhbiBlcnJvciwgb3IgdGhlIHVzZXJpZCBvdGhlcndpc2UKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIEFkZFVzZXIoICRuYW1lLCAkcGFzc3dvcmQsICRleHBpcmVzICkKICAgIHsKICAgICAgICByZXR1cm4gW0ZBTFNFLCAnRnVuY3Rpb24gbm90IGRlZmluZWQnXTsKICAgIH0KCiAgICAvLyEgQ2hlY2sgaWYgdGhlIHNwZWNpZmllZCB1c2VyIGhhcyB0aGUgc3BlY2lmaWVkIHBlcm1pc3Npb24KICAgIC8vISBBc3NpZ24gdGhlIHVzZXIgc3BlY2lmaWVkIChieSBpZCkgdG8gdGhlIGdyb3VwIHNwZWNpZmllZCAoYnkgaWQpCiAgICAvLyEKICAgIC8vIVxwYXJhbSAgdWlkICBUaGUgdXNlcmlkIGZvciB0aGUgbmV3IGFzc29jaWF0aW9uCiAgICAvLyFccGFyYW0gIGdpZCAgVGhlIGdyb3VwIGlkIGZvciB0aGUgbmV3IGFzc29jaWF0aW9uCiAgICAvLyFccmV0dXJuIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb3RoZXJ3aXNlCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBBc3NpZ25Vc2VyVG9Hcm91cCggJHVpZCwgJGdpZCApCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBDaGVjayBpZiB0aGUgZ3JvdXAgc3BlY2lmaWVkIGhhcyB0aGUgcmVxdWlyZWQgcGVybWlzc2lvbgogICAgcHVibGljIGZ1bmN0aW9uIENoZWNrR3JvdXBQZXJtaXNzaW9uKCAkZ2lkLCAkcGVybSApCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBDaGVjayBpZiB0aGUgdXNlciBoYXMgdGhlIHNwZWNpZmllZCBwZXJtaXNzaW9uCiAgICBwdWJsaWMgZnVuY3Rpb24gQ2hlY2tVc2VyUGVybWlzc2lvbiggJHBlcm0gKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gQ2hlY2tVc2VyUGVybWlzc2lvbkJ5VWlkKCAkdWlkLCAkcGVybSApCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBDb3VudFRlbXBDb2RlUmVjb3JkcygpCiAgICB7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgoKICAgIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVBbGxHcm91cFByb3BlcnR5UmVsYXRpb25zKCAkZ3JwaWQgKQogICAgewogICAgICAgIHJldHVybiBbRkFMU0UsICdGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQnXTsKICAgIH0KCiAgICAvLyEgRGVsZXRlIGFsbCBvZiB0aGUgY3VycmVudCB1c2VycyBwcm9wZXJ0aWVzCiAgICAvLyEKICAgIC8vISBccmV0dXJuIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb3RoZXJ3aXNlCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVBbGxVc2VyUHJvcGVydGllcygpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBEZWxldGUgQWxsIHByb3BlcnRpZXMgZm9yIGEgc3BlY2lmaWVkIHVzZXIgaWQKICAgIC8vIQogICAgLy8hIFxwYXJhbSB1c2VyaWQKICAgIC8vISBccmV0dXJuIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb3RoZXJ3aXNlCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVBbGxVc2VyUHJvcGVydGllc0Z1bGwoJHVzZXJpZCkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIERlbGV0ZSB0aGUgc3BlY2lmaWVkIGdyb3VwCiAgICAvLyEKICAgIC8vISBEZWxldGUgdGhlIGdyb3VwIHJlY29yZCBmb3IgdGhlIG1hdGNoaW5kIGlkCiAgICAvLyEKICAgIC8vISBccmV0dXJuIGFuIGFycmF5LCB0aGUgZmlyc3QgZWxlbWVudCBpcyBhIGRlc2NyaXB0aW9uIGRlc2NyaWJpbmcgdGhlIHJldHVybiBzdGF0dXMKICAgIC8vISAgICAodHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBlcnJvcikuICBUaGUgc2Vjb25kIGVsZW1lbnQgKG9wdGlvbmFsKSBpcyBhbiBlcnJvciBzdHJpbmcgaW4gdGhlCiAgICAvLyEgICAgZXZlbnQgb2YgYW4gZXJyb3IuCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVHcm91cEZ1bGwoICRpZCApCiAgICB7CiAgICAgICAgcmV0dXJuIFtGQUxTRSwgJ0Z1bmN0aW9uIG5vdCBkZWZpbmVkJ107CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIERlbGV0ZUdyb3VwUHJvcGVydHlSZWxhdGlvbiggJGdycGlkLCAkcHJvcG5hbWUgKQogICAgewogICAgICAgIHJldHVybiBbRkFMU0UsICdGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQnXTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gRGVsZXRlUHJvcGVydHlEZWZuKCAkbmFtZSApCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBEZWxldGUgYWxsIHByb3BlcnR5IGRlZmluaXRpb25zICh1c2Ugd2l0aCBjYXV0aW9uKQogICAgcHVibGljIGZ1bmN0aW9uIERlbGV0ZVByb3BlcnR5RGVmbnMoKQogICAgewogICAgICAgIHJldHVybiBbRkFMU0UsICdOb3QgSW1wbGVtZW50ZWQnXTsKICAgIH0KCiAgICAvLyEgRGVsZXRlIHRoZSB1c2VyIHdpdGggdGhlIHNwZWNpZmllZCBpZAogICAgLy8hIFxub3RlIFRoaXMgaXMgYSBkZXByZWNhdGVkIGZ1bmN0aW9uIGFzIGl0IHJlbGllcyBvbiB0aGUgdXNlcmlkIGJlaW5nIHNldCBpbiB0aGUgX0dFVAogICAgLy8hIHZhcmlhYmxlLgogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gRGVsZXRlVXNlcigkaWQpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBDb21wbGV0ZWx5IGRlbGV0ZSBhbGwgcmVmZXJlbmNlcyB0byB0aGUgc3VwcGxpZWQgdXNlciBpZAogICAgLy8hCiAgICAvLyFUaGlzIG1ldGhvZCBjb21wbGV0ZWx5IGRlbGV0ZXMgYW55dGhpbmcgZnJvbSB0aGUgZGF0YWJhc2UgcmVsYXRlZCB0byB0aGUgc3BlY2lmaWVkIHVzZXIgaWQuCiAgICAvLyFzcGVjaWZpY2FsbHksIGdyb3VwIGFzc29jaWF0aW9ucywgcHJvcGVydGllcywgYW5kIHRoZSB1c2VyIHJlY29yZCBpdHNlbGYuCiAgICAvLyEKICAgIC8vIVxwYXJhbSB1aWQgdGhlIHVzZXJpZCB0byBkZWxldGUgYWxsIHJlZmVyZW5jZXMgdG8KICAgIC8vIVxyZXR1cm4gYXJyYXksIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBhcnJheSBpcyBhIGJvb2xlYW4gaW5kaWNhdGluZyBzdWNjZXNzIG9yIGZhaWx1cmUuCiAgICAvLyEgICBpZiB0aGUgZmlyc3QgZWxlbWVudCBpcyBmYWxzZSwgdGhlbiB0aGUgc2Vjb25kIGVsZW1lbnQgd2lsbCBjb250YWluIGFuIGVycm9yIG1lc3NhZ2UuCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVVc2VyRnVsbCggJHVpZCApCiAgICB7CiAgICAgICAgcmV0dXJuIFtGQUxTRSwgJ05vIGZ1bmN0aW9uIGRlZmluZWQnXTsKICAgIH0KCgogICAgLy8hIERlbGV0ZSBhIHByb3BlcnR5IGZvciB0aGUgY3VycmVudCB1c2VyCiAgICAvLyEKICAgIC8vISBSZW1vdmUgYSBwcm9wZXJ0eSBmcm9tIHRoZSBkYXRhYmFzZSBmb3IgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlcgogICAgLy8hCiAgICAvLyEgXHBhcmFtIHRpdGxlIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byBkZWxldGUKICAgIC8vISBccGFyYW0gYWxsICAgT3B0aW9uYWxseSBkZWxldGUgYWxsIHByb3BlcnRpZXMgZm9yIHRoaXMgdXNlcgogICAgLy8hIFxyZXR1cm5zIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb3Rod2VyaXNlbgogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gRGVsZXRlVXNlclByb3BlcnR5KCR0aXRsZSwkYWxsPWZhbHNlKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyEgRGVsZXRlIGEgcHJvcGVydHkgZm9yIGEgc3BlY2lmaWVkIHVzZXIKICAgIC8vIQogICAgLy8hXHBhcmFtIHRpdGxlIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byBkZWxldGUKICAgIC8vIVxwYXJhbSB1c2VyaWQgVGhlIGlkIHRvIGRlbGV0ZSB0aGUgcHJvcGVydHkgZm9yCiAgICAvLyFccGFyYW0gYWxsIChvcHRpb25hbCkgRGVsZXRlIGFsbCBwcm9wZXJ0aWVzIGZvciB0aGUgc3BlY2lmaWVkIHVzZXJpZC4KICAgIC8vIVxyZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvdGhlcndpc2UuCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBEZWxldGVVc2VyUHJvcGVydHlGdWxsKCR0aXRsZSwkdXNlcmlkLCRhbGw9ZmFsc2UpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qIGV4cGlyeWNvZGUgaXMgYSBzdHJ0b3RpbWUgc3RyaW5nICovCiAgICBwdWJsaWMgZnVuY3Rpb24gRXhwaXJlVGVtcENvZGVzKCRleHBpcnljb2RlKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyEgRXhwaXJlIGFueSBhbmQgYWxsIHVzZXJzIHRoYXQgaGF2ZSBiZWVuIGF3YXkgZm9yIHRvbyBsb25nCiAgICBwdWJsaWMgZnVuY3Rpb24gRXhwaXJlVXNlcnMoKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyEgR2V0IHRoZSBlbWFpbCBhZGRyZXNzIG9mIHRoZSB1c2VyIHdpdGggdGhlIHNwZWNpZmllZCBpZAogICAgLy8hCiAgICAvLyFccmV0dXJuIEVtYWlsIGFkZHJlc3MsIG9yIGZhbHNlCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRFbWFpbCgkdXNlcmlkKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyEgR2VuZXJhdGUgYSByYW5kb20gKGJ1dCBub3QgdXNlZCkgdXNlcm5hbWUKICAgIC8vIQogICAgLy8hXCByZXR1cm4gdXNlcm5hbWUsIG9yIGZhbHNlCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBHZW5lcmF0ZVJhbmRvbVVzZXJuYW1lKCAkcHJlZml4ID0gJ3VzZXInICkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIEdldCB0aGUgZ3JvdXBpZCBnaXZlbiBhIGdyb3VwIG5hbWUKICAgIC8vIQogICAgLy8hIFxyZXR1cm4gZ3JvdXBpZCBvciBmYWxzZQogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0R3JvdXBJRCgkZ3JvdXBuYW1lKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyEgR2V0IGluZm9ybWF0aW9uIGFib3V0IHRoZSBncm91cAogICAgLy8hCiAgICAvLyEgVGhpcyBtZXRob2QgcmV0dXJucyBhbiBhc3NvY2lhdGlvbiB3aXRoIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNwZWNpZmllZAogICAgLy8hIGdyb3VwIGlkCiAgICAvLyEgICAgaWQgPT4gVGhlIHJlcXVlc3RlZCBncm91cCBpZAogICAgLy8hICAgIGdyb3VwbmFtZSA9PiBUaGUgbmFtZSBvZiB0aGUgZ3JvdXAKICAgIC8vISAgICBncm91cGRlc2MgPT4gVGhlIGdyb3VwIGRlc2NyaXB0aW9uCiAgICAvLyEKICAgIC8vISBccGFyYW0gZ2lkIFRoZSBncm91cCBpZAogICAgLy8hIFxwYXJhbSBhc3NvY2lhdGl2ZSBhcnJheSwgb3IgYXJyYXkgd2l0aCBmaXJzdCBlbGVtZW50IG9mIGZhbHNlLCBzZWNvbmQgZWxlbWVudCBjb250YWlucyBlcnJvciBtZXNzYWdlCiAgICAvLyEgXHJldHVybiBhbiBhc3NvY2lhdGl2ZSBhcnJheSB3aXRoIGdyb3VwIGluZm8sIG9yIGZhbHNlCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRHcm91cEluZm8oICRnaWQgKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyEgR2V0IGEgbGlzdCBvZiBhbGwgb2YgdGhlIGdyb3VwcywgYW5kIHRoZWlyIGlkJ3MKICAgIC8vIQogICAgLy8hIFxyZXR1cm4gYW4gYXNzb2NpYXRpdmUgYXJyYXkgY29udGFpbmluZyBncm91cCBuYW1lcyBhcyBrZXlzLCBhbmQgaWQncyBhcyB2YWx1ZXMKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwTGlzdCgpCiAgICB7CiAgICAgICAgcmV0dXJuIFtdOwogICAgfQoKICAgIC8vISBHZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbXBsZXRlIGxpc3Qgb2YgZ3JvdXBzCiAgICAvLyEKICAgIC8vISBUaGlzIG1ldGhvZCByZXR1cm5zIGFuIGFycmF5IG9mIGdyb3VwaW5mbyBhc3NvY2lhdGlvbnMsIHJlcHJlc2VudGluZyBhbGwgb2YgdGhlCiAgICAvLyEgZ3JvdXBzIGluIHRoZSB0YWJsZS4KICAgIC8vIQogICAgLy8hIFxyZXR1cm5zIGFuIGFycmF5IG9mIGdyb3VwaW5mbyBhc3NvY2lhdGlvbnMKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwTGlzdEZ1bGwoKQogICAgewogICAgICAgIHJldHVybiBbXTsKICAgIH0KCiAgICAvLyEgR2V0IHRoZSBncm91cCBuYW1lIGdpdmVuIGEgZ3JvdXAgaWQKICAgIC8vIQogICAgLy8hIFxyZXR1cm4gZ3JvdXAgbmFtZSwgb3IgZmFsc2UKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwTmFtZSgkZ3JvdXBpZCkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIEdldCB0aGUgZ3JvdXAgZGVzY3JpcHRpb24gZ2l2ZW4gYSBncm91cCBpZAogICAgLy8hCiAgICAvLyEgXHJldHVybiBncm91cCBkZXNjcmlwdGlvbiwgb3IgZmFsc2UKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwRGVzYygkZ3JvdXBpZCkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEdldEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoICRncnBpZCApCiAgICB7CiAgICAgICAgcmV0dXJuIFtGQUxTRSwgJ0Z1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZCddOwogICAgfQoKICAgIC8vISBHZXQgYSBsaXN0IG9mIHRoZSBncm91cHMgdGhhdCB0aGUgc3BlY2lmaWVkIHVzZXIgYmVsb25ncyB0bwogICAgLy8hCiAgICAvLyEgUmV0dXJuIGEgc3RyaW5nIG9mIGNvbW1hIGRlbGltaXRlZCBncm91cCBuYW1lcywgY29ycmVzcG9uZGluZyB0byB0aGUKICAgIC8vISBncm91cHMgdGhhdCB0aGUgdXNlciBpcyBhIG1lbWJlciBvZgogICAgLy8hCiAgICAvLyEgXHJldHVybiBhIGNvbW1hIGRlbGltaXRlZCBsaXN0IG9mIGdyb3VwIG5hbWVzLCBvciAibm9uZSIKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIEdldE1lbWJlckdyb3VwcygkdXNlcmlkKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyEgUmV0dXJuIGEgY29tcGxldGUgbGlzdCBvZiB0aGUgZ3JvdXBzIHRoYXQgdGhpcyB1c2VyIGJlbG9uZ3MgdG8KICAgIC8vIQogICAgLy8hIFJldHVybnMgYW4gYXJyYXkgb2YgZ3JvdXBpbmZvIHJlY29yZHMgY29ycmVzcG9uZGluZyB0byB0aGUgZ3JvdXBzIHRoYXQKICAgIC8vISB0aGlzIHVzZXIgaXMgYXNzb2NpYXRlZCB3aXRoLgogICAgLy8hCiAgICAvLyEgXHBhcmFtIHVzZXJpZCBUaGUgdXNlcmlkIHRvIHRlc3QKICAgIC8vISBccmV0dXJuIGZhbHNlIG9uIGVycm9yLCBvdGhlcndpc2UsIGFuIGFycmF5IG9mIGdyb3VwaW5mbyByZWNvcmRzLgogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0TWVtYmVyR3JvdXBzQXJyYXkoJHVzZXJpZCkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIEdldCBhIHNpbmdsZSBwcm9wZXJ0eSBkZWZpbml0aW9uIGJ5IG5hbWUKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRQcm9wZXJ0eURlZm4oICRuYW1lICkKICAgIHsKICAgICAgICByZXR1cm4gRkFMU0U7CiAgICB9CgogICAgLy8hIEdldCBhbiBhcnJheSBvZiBwcm9wZXJ0eSBkZWZpbml0aW9ucwogICAgcHVibGljIGZ1bmN0aW9uIEdldFByb3BlcnR5RGVmbnMoKQogICAgewogICAgICAgIHJldHVybiBbRkFMU0UsICdOb3QgSW1wbGVtZW50ZWQnXTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0UHJvcGVydHlHcm91cFJlbGF0aW9ucyggJHRpdGxlICkKICAgIHsKICAgICAgICByZXR1cm4gW0ZBTFNFLCAnRnVuY3Rpb24gbm90IGltcGxlbWVudGVkJ107CiAgICB9CgogICAgLy8hIEdldCB0aGUgdXNlcmlkIG9mIHRoZSB1c2VyIHdpdGggdGhlIG1hdGNoaW5nIG5hbWUKICAgIC8vIQogICAgLy8hIFxyZXR1cm4gVXNlcklELCBvciBmYWxzZQogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlcklEKCR1c2VybmFtZSkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIEdldCBpbmZvcm1hdGlvbiBhYm91dCBhIHVzZXIKICAgIC8vIQogICAgLy8hIFRoaXMgbWV0aG9kIHJldHVybnMgYW4gYXNzb2NpYXRpb24gd2l0aCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzcGVjaWZpZWQKICAgIC8vISB1c2VyIGlkCiAgICAvLyEgICBpZCA9IHRoZSByZXF1ZXN0ZWQgdXNlciBpZAogICAgLy8hICAgdXNlcm5hbWUgPSB0aGUgdXNlcnMgbmFtZQogICAgLy8hICAgcGFzc3dvcmQgPSB0aGUgKGVuY3J5cHRlZCkgdXNlciBwYXNzd29yZAogICAgLy8hICAgZW1haWwgICAgPSB0aGUgdXNlcnMgZW1haWwgYWRkcmVzcwogICAgLy8hICAgZXhwaXJlcyAgPSB0aGUgdXNlcnMgZXhwaXJ5IGRhdGUKICAgIC8vISAgIHN0YXR1cyAgID0gdGhlIHVzZXJzIHN0YXR1cwogICAgLy8hCiAgICAvLyEgXHBhcmFtIHVpZCBUaGUgdXNlcmlkIHRvIGlucXVpcmUgYWJvdXQKICAgIC8vISBccmV0dXJuIGFuIGFycmF5LCB0aGUgZmlyc3QgZWxlbWVudCBjb250YWlucyByZXR1cm4gc3RhdHVzICh0cnVlL2ZhbHNlKSwgdGhlIHNlY29uZCBlbGVtZW50CiAgICAvLyEgICAgaXMgZWl0aGVyIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGRldGFpbHMgYWJvdmUsIG9yIGFuIGVycm9yIG1lc3NhZ2UuCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRVc2VySW5mbyggJHVpZCApCiAgICB7CiAgICAgICAgcmV0dXJuIFtGQUxTRSwgJ0Z1bmN0aW9uIG5vdCBkZWZpbmVkJ107CiAgICB9CgogICAgLy8hIFJldHVybiB0aGUgdXNlcm5hbWUgdGhhdCBtYWNoZXMgdGhlIHNwZWNpZmllZCB1c2VyIGlkCiAgICAvLyEKICAgIC8vIVxyZXR1cm4gVGhlIG1hdGNoaW5nIHVzZXJuYW1lLCBvciBmYWxzZQogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlck5hbWUoJHVzZXJpZCkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIEdldCBhIHNpbmdsZSBwcm9wZXJ0eSBmb3IgdGhlIGN1cnJlbnQgdXNlcgogICAgLy8hCiAgICAvLyEgR2V0IGEgc2luZ2xlIHByb3BlcnR5IGZvciB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyLgogICAgLy8hCiAgICAvLyEgXHBhcmFtIHRpdGxlIFRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgdG8gcmV0dXJuCiAgICAvLyEgXHBhcmFtIGRlZmF1bHR2YWx1ZSBBIHZhbHVlIHRvIHJldHVybiBpZiB0aGUgcHJvcGVydHkgZG9lcyBub3QgZXhpc3QgZm9yIHRoYXQgdXNlcgogICAgLy8hIFxyZXR1cm4gVGhlIHByb3BlcnR5IHZhbHVlLCBvciBmYWxzZS4KICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIEdldFVzZXJQcm9wZXJ0eSgkdGl0bGUsJGRlZmF1bHR2YWx1ZT1mYWxzZSkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIEdldCBwcm9wZXJ0eSBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCB1c2VyIGlkCiAgICAvLyEKICAgIC8vISBccGFyYW0gdGl0bGUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHdlIGFyZSBzZWFyY2hpbmcgZm9yCiAgICAvLyEgXHBhcmFtIHVzZXJpZCBUaGUgdXNlcmlkIGZvciB3aG8ncyBwcm9wZXJ0eSB3ZSBhcmUgc2VhcmNoaW5nCiAgICAvLyEgXHBhcmFtIGRlZmF1bHR2YWx1ZSBUaGUgdmFsdWUgdG8gcmV0dXJuIGlmIHRoaXMgcHJvcGVydHkgZG9lcyBub3QgZXhpc3QgZm9yIHRoaXMgdXNlcgogICAgLy8hIFxyZXR1cm4gVGhlIHByb3BlcnR5IHZhbHVlLCBvciBmYWxzZS4KICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIEdldFVzZXJQcm9wZXJ0eUZ1bGwoJHRpdGxlLCR1c2VyaWQsICRkZWZhdWx0dmFsdWU9ZmFsc2UpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBHZXQgYSBsaXN0IG9mIGFsbCBvZiB0aGUgdXNlcnMgdGhhdCBiZWxvbmcgdG8gdGhlIHNwZWNpZmllZCBncm91cAogICAgLy8hIGluY2x1ZGluZyBhbGwgb2YgdGhlaXIgcHJvcGVydGllcwogICAgLy8hCiAgICAvLyEgVGhpcyBtZXRob2QgcmV0dXJucyBhbiBhc3NvY2lhdGl2ZSBhcnJheSAod2l0aCB1c2VyaWQgYXMgdGhlIGtleSkKICAgIC8vIQogICAgLy8hIFxwYXJhbSBncm91cGlkIHRoZSBkZXNpcmVkIGdyb3VwIGlkCiAgICAvLyEgXHJldHVybiBhbiBhcnJheSBvZiB1c2VyIGluZm9ybWF0aW9uIChzZWUgR2V0VXNlckluZm8pLCBvciBmYWxzZQogICAgLy8hIFxzYSBHZXRVc2VySW5mbwogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0RnVsbFVzZXJzSW5Hcm91cCgkZ3JvdXBpZCkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIFJldHVybiBhbiBhcnJheSBvZiB0aGUgdXNlcidzIHByb3BlcnRpZXMKICAgIC8vIQogICAgLy8hIFJldHVybnMgYSBjb21wbGV0ZSBsaXN0IG9mIHRoZSB1c2VycyBwcm9wZXJ0aWVzCiAgICAvLyEKICAgIC8vISBccGFyYW0gdWlkIFRoZSB1aWQgdG8gdGVzdAogICAgLy8hIFxyZXR1cm4gZmFsc2Ugb24gZXJyb3IsIG90aGVyd2lzZSBhbiBhcnJheSBvZiBhc3NvY2lhdGlvbnMsIGVhY2ggYXNzb2NpYXRpb24KICAgIC8vISAgIGhhcyB0aGUgZm9sbG93aW5nIGtleXM6CiAgICAvLyEgICAgICBpZCAgICAgPSBUaGUgcHJvcGVydHkgaWQKICAgIC8vISAgICAgIHVzZXJpZCA9IFRoZSBtYXRjaGluZyB1c2VyIGlkCiAgICAvLyEgICAgICB0aXRsZSAgPSBUaGUgcHJvcGVydHkgdGl0bGUKICAgIC8vISAgICAgIGRhdGEgICA9IFRoZSBwcm9wZXJ0eSBkYXRhCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRVc2VyUHJvcGVydGllcygkdWlkKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0VXNlclRlbXBDb2RlKCAkdWlkICkKICAgIHsKICAgICAgICByZXR1cm4gW0ZBTFNFLCAnRnVuY3Rpb24gbm90IGltcGxlbWVudGVkJ107CiAgICB9CgogICAgLy8hIEEgZnVuY3Rpb24gdGhhdCB0ZXN0cyB3ZXRoZXIgYSBncm91cCB3aXRoIHRoZSBzcGVmaWZpZWQgaWQgZXhpc3RzCiAgICAvLyEKICAgIC8vISBccGFyYW0gZ2lkIFRoZSBkZXNpcmVkIGdyb3VwIGlkCiAgICAvLyEgXHJldHVybiBib29sZWFuCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBHcm91cEV4aXN0c0J5SUQoICRnaWQgKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyEgQSBwdWJsaWMgZnVuY3Rpb24gdGhhdCB0ZXN0cyB3ZXRoZXIgYSBncm91cCB3aXRoIHRoZSBuYW1lIGV4aXN0cwogICAgLy8hCiAgICAvLyEgXHBhcmFtIGdpZCBUaGUgZGVzaXJlZCBncm91cCBuYW1lCiAgICAvLyEgXHJldHVybiBib29sZWFuCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBHcm91cEV4aXN0c0J5TmFtZSggJG5hbWUgKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0RXhwaXJ5RGF0ZSggJHVpZCApCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBJc0FjY291bnRFeHBpcmVkKCAkdWlkICkKICAgIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvLyEgVGVzdCB3ZXRoZXIgdGhlIHNwZWNpZmllZCBlbWFpbCBhZGRyZXNzIHBhc3NlcyB0aGUgcnVsZXMuCiAgICAvLyEKICAgIC8vISBUaGlzIG1ldGhvZCB3aWxsIHRlc3QgaWYgdGhlIGVtYWlsIGFkZHJlc3Mgc3VwcGxpZWQgbWF0Y2hlcyB0aGUKICAgIC8vISBzZXQgcnVsZXMuICBPcHRpb25hbGx5LCB0aGUgZW1haWwgYWRkcmVzcyBjYW4gYmUgdmFsaWRhdGVkIHZpYQogICAgLy8hIHNtdHAuCiAgICAvLyEKICAgIC8vISBccGFyYW0gIGVtYWlsIFRoZSBhZGRyZXNzIHRvIHRlc3QKICAgIC8vISBccmV0dXJuIGFuIGFycmF5LCB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgYXJyYXkgaW5kaWN1YXRlcyBzdWNjZXNzIG9yIGZhaWx1cmUKICAgIC8vISAgICB0aGUgc2Vjb25kIGVsZW1lbnQgaXMgdGhlIGVycm9yIG1lc3NhZ2UsIGlmIGFuIGVycm9yIG9jY3VycmVkCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBJc1ZhbGlkRW1haWxBZGRyZXNzKCAkZW1haWwgKQogICAgewogICAgICAgIHJldHVybiBbRkFMU0UsICdGdW5jdGlvbiBub3QgZGVmaW5lZCddOwogICAgfQoKICAgIC8vISBDaGVjayB0aGUgdmFsaWRpdHkgb2YgdGhlIHN1cHBsaWVkIHBhc3N3b3JkCiAgICAvLyEKICAgIC8vIVxwYXJhbSAgcGFzc3dvcmQgVGhlIHBhc3N3b3JkIHRvIHRlc3QuCiAgICAvLyFccmV0dXJuIHRydWUgaWYgdGhlIHBhc3N3b3JkIGlzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIElzVmFsaWRQYXNzd29yZCggJHBhc3N3b3JkICkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIENoZWNrIHdldGhlciB0aGUgdXNlcm5hbWUgc3VwcGxpZWQgcGFzc2VzIHRoZSBydWxlcwogICAgLy8hCiAgICAvLyFccGFyYW0gdXNlcm5hbWUgVGhlIHVzZXJuYW1lIHRvIGJlIHRlc3RlZAogICAgLy8hXHJldHVybiBib29sZWFuIHRydWUvZmFsc2UKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIElzVmFsaWRVc2VybmFtZSggJHVzZXJuYW1lICkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIFRlc3RzIHdoZXRoZXIgdGhlIGN1cnJlbnQgdXNlciBpcyBsb2dnZWQgaW4gb3Igbm90LgogICAgcHVibGljIGZ1bmN0aW9uIExvZ2dlZEluKCkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPkxvZ2dlZEluSWQoKT09PSBGQUxTRSkgeyByZXR1cm4gRkFMU0U7IH0KICAgICAgICBlbHNlIHsgcmV0dXJuIFRSVUU7IH0KICAgIH0KCiAgICAvLyEgUmV0dXJuIHRoZSBlbWFpbCBhZGRyZXNzIG9mIHRoZSBjdXJyZW50IHVzZXIKICAgIC8vIQogICAgLy8hIFxyZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgZW1haWwgYWRkcmVzcyBvZiB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyCiAgICAvLyEgICBpZiBub29uZSBpcyBsb2dnZWQgaW4sIHRoZW4gYW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBMb2dnZWRJbkVtYWlsKCkKICAgIHsKICAgICAgICByZXR1cm4gJyc7CiAgICB9CgogICAgLy8hIFJldHVybiB0aGUgdXNlcmlkIG9mIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIKICAgIHB1YmxpYyBmdW5jdGlvbiBMb2dnZWRJbklkKCkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIFJldHVybiB0aGUgdXNlcm5hbWUgb2YgdGhlIGN1cnJlbnQgdXNlcgogICAgLy8hCiAgICAvLyEgXHJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB1c2VybmFtZSBvZiB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyCiAgICAvLyEgICBpZiBub29uZSBpcyBsb2dnZWQgaW4sIHRoZW4gYW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBMb2dnZWRJbk5hbWUoKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gTG9naW4oICR1c2VybmFtZSwgJHBhc3N3b3JkLCAkZ3JvdXBzID0gJycsICRtZDVwdyA9IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAkZm9yY2VfbG9nb3V0ID0gZmFsc2UpCiAgICB7CiAgICAgICAgcmV0dXJuIFtGQUxTRSwgJ0Z1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZCddOwogICAgfQoKCiAgICAvLyEgTG9nb3V0IHRoZSBjdXJyZW50IHVzZXIKICAgIHB1YmxpYyBmdW5jdGlvbiBMb2dvdXQoKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyEgVGVzdCB3ZXRoZXIgYW4gYXNzb2NpYXRpb24gZXhpc3RzIGJldHdlZW4gdGhlIHNwZWNpZmllZCB1c2VyIGFuZCBncm91cAogICAgLy8hCiAgICAvLyEgXHBhcmFtIHVzZXJpZCBUaGUgdXNlcmlkIHRvIHRlc3QKICAgIC8vISBccGFyYW0gZ3JvdXBpZCBUaGUgZ3JvdXBpZCB0byB0ZXN0CiAgICAvLyEgXHJldHVybiB0cnVlIGlmIGFuIGFzc29jaWF0aW9uIGV4aXN0cywgZmFsc2Ugb3RoZXJ3aXNlCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBNZW1iZXJPZkdyb3VwKCR1c2VyaWQsJGdyb3VwaWQpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBSZW1vdmUgdGhlIHNwZWNpZmllZCB1c2VyIGZyb20gdGhlIHNwZWNpZmllZCBncm91cAogICAgLy8hCiAgICAvLyFUaGlzIG1ldGhvZCByZXZva2VzIHRoZSBtZW1iZXJzaGlwIG9mIHVzZXIgJHVpZCBmcm9tIGdyb3VwICRnaWQKICAgIC8vIQogICAgLy8hXHBhcmFtIHVpZAogICAgLy8hXHBhcmFtIGdpZAogICAgLy8hXHJldHVybiBhcnJheSwgdGhlIGZpcnN0IGVsZW1lbnQgY29udGFpbnMgZXhpdCBzdGF0dXMgKGJvb2xlYW4pLCB0aGUgc2Vjb25kIGVsZW1lbnQKICAgIC8vISAgIChvcHRpb25hbCkgcmV0dXJucyBhbiBlcnJvciBtZXNzYWdlLCBpZiBhbiBlcnJvciBvY2N1cnJlZC4KICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIFJlbW92ZVVzZXJGcm9tR3JvdXAoICR1aWQsICRnaWQgKQogICAgewogICAgICAgIHJldHVybiBbRkFMU0UsICdGdW5jdGlvbiBub3QgZGVmaW5lZCddOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBSZW1vdmVVc2VyVGVtcENvZGUoICR1aWQgKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyEgQSBtZXRob2QgdG8gbW9kaWZ5IGFuIGV4aXN0aW5nIGdyb3VwCiAgICAvLyEKICAgIC8vIVxwYXJhbSBnaWQgQW4gZXhpc3RpbmcgZ3JvdXAgaWQKICAgIC8vIVxwYXJhbSBuYW1lIFRoZSBuZXcgZ3JvdXAgbmFtZQogICAgLy8hXHBhcmFtIGRlc2MgVGhlIG5ldyBncm91cCBkZXNjcmlwdGlvbgogICAgLy8hXHJldHVybiBBbiBhcnJheSwgdGhlIGZpcnN0IGVsZW1lbnQgaXMgYSBib29sZWFuIHdoaWNoIGluZGljYXRlcyBzdWNjZXNzIG9yIGZhaWx1cmUsIHRoZQogICAgLy8hICBzZWNvbmQgZWxlbWVudCAob3B0aW9uYWwpIGNvbnRhaW5zIGFuIGVycm9yIG1lc3NhZ2UgaW4gdGhlIGV2ZW50IG9mIGFuIGVycm9yLgogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gU2V0R3JvdXAoICRnaWQsICRuYW1lLCAkZGVzYyApCiAgICB7CiAgICAgICAgcmV0dXJuIFtGQUxTRSwgJ0Z1bmN0aW9uIG5vdCBkZWZpbmVkJ107CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIFNldFByb3BlcnR5RGVmbiggJG5hbWUsICRuZXduYW1lLCAkcHJvbXB0LCAkbGVuZ3RoLCAkdHlwZSApCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vISBNb2RpZnkgYW4gZXhpc3RpbmcgZ3JvdXAKICAgIC8vIQogICAgLy8hIFxwYXJhbSB1aWQgVGhlIGlkIG9mIHRoZSBleGlzdGluZyB1c2VyCiAgICAvLyEgXHBhcmFtIHVzZXJuYW1lIFRoZSBuZXcgdXNlciBuYW1lCiAgICAvLyEgXHBhcmFtIGVtYWlsIFRoZSBuZXcgZW1haWwgYWRkcmVzcwogICAgLy8hIFxwYXJhbSBwYXNzd29yZCBUaGUgbmV3ICh1bmVuY3J5cHRlZCkgcGFzc3dvcmQKICAgIC8vISBccGFyYW0gZXhwaXJlcyBUaGUgbmV3IGV4cGlyeSBkYXRlCiAgICAvLyEgXHBhcmFtIHN0YXR1cyB0aGUgbmV3IHN0YXR1cwogICAgLy8hIFxyZXR1cm4gQW4gYXJyYXksIHRoZSBmaXJzdCBlbGVtZW50IGlzIGEgYm9vbGVhbiB3aGljaCBpbmRpY2F0ZXMgc3VjY2VzcyBvciBmYWlsdXJlLCB0aGUKICAgIC8vISAgICBzZWNvbmQgZWxlbWVudCAob3B0aW9uYWwpIGNvbnRhaW5zIGFuIGVycm9yIG1lc3NhZ2UgaW4gdGhlIGV2ZW50IG9mIGFuIGVycm9yLgogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gU2V0VXNlciggJHVpZCwgJHVzZXJuYW1lLCAkcGFzc3dvcmQsICRleHBpcmVzID0gZmFsc2UgKQogICAgewogICAgICAgIHJldHVybiBbRkFMU0UsICdGdW5jdGlvbiBub3QgZGVmaW5lZCddOwogICAgfQoKICAgIC8vISBTZXQgdGhlIHVzZXIncyBncm91cCBtZW1iZXJzaGlwcyBhYnNvbHV0ZWx5CiAgICAvLyEKICAgIC8vIVRoaXMgbWV0aG9kIHJlbW92ZXMgYWxsIHByZXZpb3VzIGdyb3VwIGFzc29jaWF0aW9ucywgYW5kIHNldHMgbmV3IG9uZXMKICAgIC8vIXRvIG1hdGNoIHRob3NlIGluIHRoZSBncnBpZHMgYXJyYXkuCiAgICAvLyEKICAgIC8vIVxwYXJhbSB1aWQgVGhlIHVzZXIgaWQgdG8gZWRpdAogICAgLy8hXHBhcmFtIGdycGlkcyBBbiBhcnJheSBvZiB1c2VyIGlkcyB0byBhc3NvY2lhdGUgd2l0aAogICAgLy8hXHJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvdGhlcndpc2UKICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIFNldFVzZXJHcm91cHMoICR1aWQsICRncnBpZHMgKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gU2V0VXNlclBhc3N3b3JkKCAkdWlkLCAkcGFzc3dvcmQgKQogICAgewogICAgICAgIHJldHVybiBbRkFMU0UsICdGdW5jdGlvbiBub3QgZGVmaW5lZCddOwogICAgfQoKICAgIC8vISBTZXQgdGhlIHVzZXIncyBwcm9wZXJ0aWVzIGFic29sdXRlbHkuCiAgICAvLyEKICAgIC8vISBUaGlzIG1ldGhvZCBkZWxldGVzIGFueSBleGlzdGluZyB1c2VyIHByb3BlcnRpZXMgYW5kIHNldHMgdGhlbSBhY2NvcmRpbmcgdG8gdGhlIHByb3BlcnRpZXMKICAgIC8vISBzdXBwbGllZC4KICAgIC8vIQogICAgLy8hIFxwYXJhbSB1aWQgVGhlIHVzZXIgaWQgdG8gYmUgZWRpdGVkCiAgICAvLyEgXHBhcmFtIHByb3BzIEFuIGFycmF5IG9mIEtleT1WYWx1ZSBzdHJpbmdzIGNvbnNpc3Rpbmcgb2YgdGhlIHVzZXIgcHJvcGVydGllcy4KICAgIC8vISBccmV0dXJuIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb3RoZXJ3aXNlCiAgICAvLyEKICAgIHB1YmxpYyBmdW5jdGlvbiBTZXRVc2VyUHJvcGVydGllcyggJHVpZCwgJHByb3BzICkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8hIFNldCBhIHByb3BlcnR5IGZvciB0aGUgY3VycmVudCB1c2VyCiAgICAvLyEKICAgIC8vISBTZXRzIGEgcHJvcGVydHkgZm9yIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIKICAgIC8vIQogICAgLy8hIFxwYXJhbSB0aXRsZSBUaGUgcHJvcGVydHkgbmFtZQogICAgLy8hIFxwYXJhbSBkYXRhICBUaGUgcHJvcGVydHkgdmFsdWUKICAgIC8vISBccmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG90aGVyd2lzZQogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gU2V0VXNlclByb3BlcnR5KCR0aXRsZSwkZGF0YSkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgoKICAgIC8vISBTZXQgYSBwcm9wZXJ0eSBmb3IgdGhlIHByb3ZpZGVkIHVzZXJpZAogICAgLy8hCiAgICAvLyEgU2V0cyBhIHByb3BlcnR5IGV4Y2x1c2l2ZWx5IGZvciBhIGNlcnRhaW4gdXNlcgogICAgLy8hCiAgICAvLyEgXHBhcmFtIHRpdGxlIFRoZSBwcm9wZXJ0eSBuYW1lCiAgICAvLyEgXHBhcmFtIGRhdGEgIFRoZSBwcm9wZXJ0eSB2YWx1ZQogICAgLy8hIFxwYXJhbSB1c2VyaWQgVGhlIGRlc2lyZWQgdXNlciBpZAogICAgLy8hCiAgICBwdWJsaWMgZnVuY3Rpb24gU2V0VXNlclByb3BlcnR5RnVsbCgkdGl0bGUsJGRhdGEsJHVzZXJpZCkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIFNldFVzZXJUZW1wQ29kZSggJHVpZCwgJGNvZGUgKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyEgVGVzdCBpZiB0aGUgdXNlciBpZCBpcyBhbHJlYWR5IHRha2VuCiAgICAvLyEKICAgIC8vISBUZXN0cyBpZiBhIHVzZXIgYnkgdGhhdCBpZCBhbHJlYWR5IGV4aXN0cwogICAgLy8hCiAgICAvLyEgXHBhcmFtIHVpZCBUaGUgdXNlcmlkIHRvIHRlc3QKICAgIC8vISBccmV0dXJuIGJvb2xlYW4KICAgIC8vIQogICAgcHVibGljIGZ1bmN0aW9uIFVzZXJFeGlzdHNCeUlEKCAkdWlkICkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8KICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIC8vCgp9IC8vIGNsYXNzCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.mams_content_attribute_helper.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKY2xhc3MgbWFtc19jb250ZW50X2F0dHJpYnV0ZV9oZWxwZXIgZXh0ZW5kcyBDbXNDb250ZW50QXR0cmlidXRlSGVscGVyQmFzZQp7CiAgcHJpdmF0ZSBzdGF0aWMgJF9pbnN0YW5jZTsKCgogIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQogIHsKICAgIC8vIG5vdGhpbmcgaGVyZS4KICB9CgoKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9pbnN0YW5jZSgpCiAgewogICAgaWYgKCFzZWxmOjokX2luc3RhbmNlKQogICAgICB7CiAgICAgICAgc2VsZjo6JF9pbnN0YW5jZSA9IG5ldyBtYW1zX2NvbnRlbnRfYXR0cmlidXRlX2hlbHBlcigpOwogICAgICB9CiAgICAKICAgIHJldHVybiBzZWxmOjokX2luc3RhbmNlOwogIH0KCgogIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uICZnZXRfbWFtcygpCiAgewogICAgJGdDbXMgPSBjbXNtcygpOwogICAgcmV0dXJuICRnQ21zLT5tb2R1bGVzWydNQU1TJ11bJ29iamVjdCddOwogIH0KCgogIHB1YmxpYyBmdW5jdGlvbiBnZXRfYXR0cmlidXRlX3RhYnMoKQogIHsKICAgICRtYW1zID0gc2VsZjo6Z2V0X21hbXMoKTsKICAgICRkYXRhID0gYXJyYXkoKTsKICAgICRkYXRhWyd2aXNpdG9ycyddID0gYXJyYXkoJ3Byb21wdCc9PiRtYW1zLT5MYW5nKCd2aXNpdG9yc190YWInKSwncGVybWlzc2lvbic9PicnKTsKICAgIHJldHVybiAkZGF0YTsKICB9CgoKICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2F0dHJpYnV0ZV9pbnB1dCgkYXR0ciwkY29udGVudF9vYmosJGFkZGluZykKICB7CiAgICAkZ0NtcyA9IGNtc21zKCk7CiAgICAkbWFtcyA9IHNlbGY6OmdldF9tYW1zKCk7CgogICAgc3dpdGNoKCAkYXR0ci0+Z2V0X25hbWUoKSApCiAgICB7CiAgICBjYXNlICdtYW1zX2dyb3Vwcyc6CiAgICAgICR0bXAgPSBhcnJheSgkbWFtcy0+TGFuZygnYW55X2xvZ2dlZF9pbl91c2VyJyk9PictMScpOwogICAgICAkdDIgPSAkbWFtcy0+R2V0R3JvdXBMaXN0KCk7CiAgICAgIGZvcmVhY2goICR0MiBhcyAkayA9PiAkdiApCgl7CgkgICR0bXBbJGtdID0gJHY7Cgl9CiAgICAgIGlmKCBpc19hcnJheSgkdG1wKSApCgl7CgkgICRzZWwgPSBhcnJheSgpOwoJICAkc2VsX3N0ciA9ICRjb250ZW50X29iai0+Z2V0X3Byb3BlcnR5X3ZhbHVlKCdtYW1zX2dyb3VwcycpOwoJICBpZiggJHNlbF9zdHIgKQoJICAgIHsKCSAgICAgICRzZWwgPSBleHBsb2RlKCcsJywkc2VsX3N0cik7CgkgICAgfQoJICAkcHJvbXB0ID0gJG1hbXMtPkxhbmcoJ21hbXNfZ3JvdXBzX3Byb21wdCcpOwoJICAkZmllbGQgPSAkbWFtcy0+Q3JlYXRlSW5wdXRTZWxlY3RMaXN0KCcnLCdtYW1zX2dyb3Vwc1tdJywkdG1wLCRzZWwsCgkJCQkJICAgICAgIG1pbihjb3VudCgkdG1wKSw1KSk7CgkgIHJldHVybiBhcnJheSgkcHJvbXB0Lic6JywkZmllbGQpOwoJfQogICAgICBicmVhazsKCiAgICBjYXNlICdtYW1zX3JlZGlyZWN0JzoKICAgICAgLy8gZ2V0IGEgbGlzdCBvZiBwYWdlcwogICAgICAkdmFsID0gJGNvbnRlbnRfb2JqLT5nZXRfcHJvcGVydHlfdmFsdWUoJ21hbXNfcmVkaXJlY3QnLC0xKTsKICAgICAgJHByb21wdCA9ICRtYW1zLT5MYW5nKCdtYW1zX3JlZGlyZWN0X3Byb21wdCcpOwogICAgICAkZmllbGQgPSBDbXNDb250ZW50T3BlcmF0aW9uczo6Q3JlYXRlSGllcmFyY2h5RHJvcGRvd24oJHZhbCwnJywnbWFtc19yZWRpcmVjdCcpOwogICAgICByZXR1cm4gYXJyYXkoJHByb21wdC4nOicsJGZpZWxkKTsKICAgICAgYnJlYWs7CiAgICB9CiAgICAKICB9CgoKICBmdW5jdGlvbiBnZXRfYXR0cmlidXRlc19mcm9tX2Zvcm1kYXRhKCRjb250ZW50X29iaiwkcGFyYW1zKQogIHsKICAgICRwcm9wcyA9IGFycmF5KCdtYW1zX2dyb3VwcycsJ21hbXNfcmVkaXJlY3QnKTsKICAgIGZvcmVhY2goICRwcm9wcyBhcyAkb25lICkKICAgICAgewoJc3dpdGNoKCAkb25lICkKCSAgewoJICBjYXNlICdtYW1zX2dyb3Vwcyc6CgkgICAgaWYoIGlzc2V0KCRwYXJhbXNbJG9uZV0pICkKCSAgICAgIHsKCQkkc3RyID0gaW1wbG9kZSgnLCcsJHBhcmFtc1skb25lXSk7CgkJJGNvbnRlbnRfb2JqLT5zZXRfcHJvcGVydHlfdmFsdWUoJG9uZSwkc3RyKTsKCSAgICAgIH0KCSAgICBlbHNlCgkgICAgICB7CgkJJGNvbnRlbnRfb2JqLT5zZXRfcHJvcGVydHlfdmFsdWUoJG9uZSwnJyk7CgkgICAgICB9CgkgICAgYnJlYWs7CgkgICAgCgkgIGRlZmF1bHQ6CgkgICAgaWYoIGlzc2V0KCRwYXJhbXNbJG9uZV0pICkKCSAgICAgIHsKCQkkY29udGVudF9vYmotPnNldF9wcm9wZXJ0eV92YWx1ZSgkb25lLCRwYXJhbXNbJG9uZV0pOwoJICAgICAgfQoJICB9CiAgICAgIH0KICB9CiAgCgp9IC8vIGVuZCBvZiBjbGFzcwojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/class.mams_protected_logoutlink.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKLy8gOTklIG9mIHRoaXMgY2xhc3MgKGFsbCBvZiBpdD8pIGNvdWxkIGJlIGluIGEgdHJhaXQsIGFzIGl0IGlzIGluaXRpYWxseSBqdXN0IGNvcGllZCBmcm9tIHRoZSBGRVUgcHJvdGVjdGVkIHBhZ2UgY2xhc3MuCmNsYXNzIG1hbXNfcHJvdGVjdGVkX2xvZ291dGxpbmsgZXh0ZW5kcyBDb250ZW50QmFzZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gSXNDb3B5YWJsZSgpIHsgcmV0dXJuIFRSVUU7IH0KICAgIHB1YmxpYyBmdW5jdGlvbiBJc1ZpZXdhYmxlKCkgeyByZXR1cm4gRkFMU0U7IH0KCXB1YmxpYyBmdW5jdGlvbiBIYXNTZWFyY2hhYmxlQ29udGVudCgpIHsgcmV0dXJuIEZBTFNFOyB9CgogICAgZnVuY3Rpb24gU2V0UHJvcGVydGllcygpCiAgICB7CgkJcGFyZW50OjpTZXRQcm9wZXJ0aWVzKCk7CgkJJHRoaXMtPlJlbW92ZVByb3BlcnR5KCdzZWN1cmUnLDApOwoJCSR0aGlzLT5SZW1vdmVQcm9wZXJ0eSgnY2FjaGFibGUnLGZhbHNlKTsKCQkkdGhpcy0+UmVtb3ZlUHJvcGVydHkoJ3Nob3dpbm1lbnUnLHRydWUpOwoJCSR0aGlzLT5SZW1vdmVQcm9wZXJ0eSgncGFnZV91cmwnLCcnKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9pc0F1dGhvcml6ZWQoKQogICAgewogICAgICAgIC8vIGRvIHdlIGhhdmUgYWNjZXNzIHRvIGl0PwogICAgICAgICRtYW1zID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKTsKICAgICAgICBpZiggJG1hbXMgKSB7CiAgICAgICAgICAgICR1aWQgPSAkbWFtcy0+TG9nZ2VkSW5JZCgpOwogICAgICAgICAgICBpZiggJHVpZCApIHJldHVybiBUUlVFOwogICAgICAgIH0KICAgICAgICByZXR1cm4gRkFMU0U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEZyaWVuZGx5TmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfTUFNUyktPkxhbmcoZ2V0X2NsYXNzKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRNb2RpZmllZERhdGUoKQogICAgewogICAgICAgIC8vIG9uIGZyb250ZW5kIHJlcXVlc3RzIHRoaXMgd2lsbCBmb3JjZSB0aGUgdGVtcGxhdGUgdG8gYmUgcmVjb21waWxlZAogICAgICAgIC8vIGFuZCB0aGVyZWZvcmUgZXZhbHVhdGlvbiB0byBiZSBkb25lIGZvciBlYWNoIHJlcXVlc3QuCiAgICAgICAgaWYoIGNtc21zKCktPmlzX2Zyb250ZW5kX3JlcXVlc3QoKSApIHJldHVybiB0aW1lKCk7CiAgICAgICAgcmV0dXJuIHBhcmVudDo6R2V0TW9kaWZpZWREYXRlKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIElzUGVybWl0dGVkKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPl9pc0F1dGhvcml6ZWQoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gU2hvd0luTWVudSgpCiAgICB7CiAgICAgICAgJHJlcyA9IHBhcmVudDo6U2hvd0luTWVudSgpOwogICAgICAgIGlmKCAhJHJlcyApIHJldHVybiAkcmVzOwogICAgICAgICRyZXMgPSAkdGhpcy0+X2lzQXV0aG9yaXplZCgpOwogICAgICAgIHJldHVybiAkcmVzOwogICAgfQoKICAgIGZ1bmN0aW9uIEdldFVSTCgkcmV3cml0ZSA9IHRydWUpCiAgICB7CiAgICAgICAgJG1hbXMgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX01BTVMpOwogICAgICAgICRwYWdlX2lkID0gQ29udGVudE9wZXJhdGlvbnM6OmdldF9pbnN0YW5jZSgpLT5HZXREZWZhdWx0Q29udGVudCgpOwogICAgICAgIHJldHVybiAkbWFtcy0+Y3JlYXRlX3VybCgnY250bnQwMScsJ2xvZ291dCcsJHBhZ2VfaWQpOwogICAgfQoKfSAvLyBlbmQgb2YgY2xhc3MK]]></data>
	</file>
	<file>
	  <filename>/lib/class.mams_protected_page.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQpuYW1lc3BhY2UgTUFNUzsKdXNlIENvbnRlbnQ7CnVzZSBjbXNfdXRpbHM7CgphYnN0cmFjdCBjbGFzcyBiYXNlX3Byb3RlY3RlZF9wYWdlIGV4dGVuZHMgQ29udGVudAp7CiAgICBwcm90ZWN0ZWQgJF9kYXRhOwogICAgY29uc3QgTUFNU19QUk9QTkFNRSA9ICdfX21hbXNfZGF0YV9fJzsKICAgIGNvbnN0IFRBQl9NQU1TID0gJ2NjX21hbXMnOwoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBfZ2V0RGF0YSgpCiAgICB7CiAgICAgICAgaWYoICFpc19hcnJheSgkdGhpcy0+X2RhdGEpICkgewogICAgICAgICAgICAkdG1wID0gJHRoaXMtPkdldFByb3BlcnR5VmFsdWUoc2VsZjo6TUFNU19QUk9QTkFNRSk7CiAgICAgICAgICAgICR0aGlzLT5fZGF0YSA9IGFycmF5KCk7CiAgICAgICAgICAgIGlmKCAkdG1wICkgJHRoaXMtPl9kYXRhID0gdW5zZXJpYWxpemUoJHRtcCk7CiAgICAgICAgfQogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBfc2V0RGF0YSgpCiAgICB7CiAgICAgICAgaWYoIGlzX2FycmF5KCR0aGlzLT5fZGF0YSkgJiYgY291bnQoJHRoaXMtPl9kYXRhKSApIHsKICAgICAgICAgICAgJHRoaXMtPlNldFByb3BlcnR5VmFsdWUoc2VsZjo6TUFNU19QUk9QTkFNRSxzZXJpYWxpemUoJHRoaXMtPl9kYXRhKSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkdGhpcy0+U2V0UHJvcGVydHlWYWx1ZShzZWxmOjpNQU1TX1BST1BOQU1FLCcnKTsKICAgICAgICB9CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIF9pc0F1dGhvcml6ZWQoKQogICAgewogICAgICAgIC8vIGRvIHdlIGhhdmUgYWNjZXNzIHRvIGl0PwogICAgICAgICR0aGlzLT5fZ2V0RGF0YSgpOwoKICAgICAgICAkbWFtcyA9IGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfTUFNUyk7CiAgICAgICAgaWYoICRtYW1zICkgewogICAgICAgICAgICAkdWlkID0gJG1hbXMtPkxvZ2dlZEluSWQoKTsKICAgICAgICAgICAgaWYoICR1aWQgKSB7CiAgICAgICAgICAgICAgICBpZiggIWlzc2V0KCR0aGlzLT5fZGF0YVsnZ3JvdXBzJ10pIHx8IGNvdW50KCR0aGlzLT5fZGF0YVsnZ3JvdXBzJ10pID09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gbm8gbWVtYmVyIGdyb3VwcyBzZWxlY3RlZCwgYnV0IHN0aWxsIGxvZ2dlZCBpbiwgd2UgY2FuIGRpc3BsYXkgdGhpcy4KICAgICAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIC8vIGdldCBtZW1iZXIgZ3JvdXBzIGFuZCBkbyBhIGNyb3NzIHJlZmVyZW5jZS4KICAgICAgICAgICAgICAgICAgICAkZ3JvdXBzID0gJG1hbXMtPkdldE1lbWJlckdyb3Vwc0FycmF5KCR1aWQpOwogICAgICAgICAgICAgICAgICAgIGlmKCAhaXNfYXJyYXkoJGdyb3VwcykgfHwgY291bnQoJGdyb3VwcykgPT0gMCApIHJldHVybiBGQUxTRTsKICAgICAgICAgICAgICAgICAgICAkbWVtYmVyZ3JvdXBzID0gXHh0X2FycmF5OjpleHRyYWN0X2ZpZWxkKCRncm91cHMsJ2dyb3VwaWQnKTsKICAgICAgICAgICAgICAgICAgICBmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkdGhpcy0+X2RhdGFbJ2dyb3VwcyddKTsgJGkrKyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoIGluX2FycmF5KCR0aGlzLT5fZGF0YVsnZ3JvdXBzJ11bJGldLCRtZW1iZXJncm91cHMpICkgcmV0dXJuIFRSVUU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBGQUxTRTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gVHlwZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdtYW1zX3Byb3RlY3RlZF9wYWdlJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gRnJpZW5kbHlOYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKS0+TGFuZyhnZXRfY2xhc3MoJHRoaXMpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0TW9kaWZpZWREYXRlKCkKICAgIHsKICAgICAgICAvLyBvbiBmcm9udGVuZCByZXF1ZXN0cyB0aGlzIHdpbGwgZm9yY2UgdGhlIHRlbXBsYXRlIHRvIGJlIHJlY29tcGlsZWQKICAgICAgICAvLyBhbmQgdGhlcmVmb3JlIGV2YWx1YXRpb24gdG8gYmUgZG9uZSBmb3IgZWFjaCByZXF1ZXN0LgogICAgICAgIGlmKCBjbXNtcygpLT5pc19mcm9udGVuZF9yZXF1ZXN0KCkgKSByZXR1cm4gdGltZSgpOwogICAgICAgIHJldHVybiBwYXJlbnQ6OkdldE1vZGlmaWVkRGF0ZSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBTZXRQcm9wZXJ0aWVzKCkKICAgIHsKICAgICAgICBwYXJlbnQ6OlNldFByb3BlcnRpZXMoKTsKICAgICAgICAkdGhpcy0+UmVtb3ZlUHJvcGVydHkoJ2NhY2hhYmxlJyxmYWxzZSk7CiAgICAgICAgaWYoIHZlcnNpb25fY29tcGFyZShDTVNfVkVSU0lPTiwnMS45OCcpIDwgMCApIHsKICAgICAgICAgICAgJHRoaXMtPkFkZENvbnRlbnRQcm9wZXJ0eSgnX19tYW1zX2dyb3Vwc19fJywxKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5BZGRQcm9wZXJ0eSgnX19tYW1zX2dyb3Vwc19fJywxLHNlbGY6OlRBQl9NQU1TKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIElzUGVybWl0dGVkKCkKICAgIHsKICAgICAgICAkciA9ICR0aGlzLT5faXNBdXRob3JpemVkKCk7CiAgICAgICAgaWYoICEkciApIHsKICAgICAgICAgICAgJG1hbXMgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX01BTVMpOwogICAgICAgICAgICBpZiggXENtc0FwcDo6Z2V0X2luc3RhbmNlKCktPmlzX2Zyb250ZW5kX3JlcXVlc3QoKSAmJiAkbWFtcyApICRtYW1zLT5TZXRQb3N0TG9naW5VcmwoXHh0X3VybDo6Y3VycmVudF91cmwoKSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkcjsKICAgIH0KCiAgICAvLyBDTVNNUyAxLjExLnggYW5kIHByZXZpb3VzIG9ubHkKICAgIHB1YmxpYyBmdW5jdGlvbiBUYWJOYW1lcygpCiAgICB7CiAgICAgICAgJHJlcyA9IHBhcmVudDo6VGFiTmFtZXMoKTsKICAgICAgICBpZiggY2hlY2tfcGVybWlzc2lvbihnZXRfdXNlcmlkKCksJ01hbmFnZSBBbGwgQ29udGVudCcpICkgewogICAgICAgICAgICAkcmVzW10gPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX01BTVMpLT5MYW5nKCdmcm9udGVuZF9hY2Nlc3MnKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRyZXM7CiAgICB9CgogICAgLy8gQ01TTVMgMS4xMS54IGFuZCBwcmV2aW91cyBvbmx5CiAgICBwdWJsaWMgZnVuY3Rpb24gRWRpdEFzQXJyYXkoJGFkZGluZyA9IGZhbHNlLCAkdGFiID0gMCwgJHNob3dhZG1pbiA9IGZhbHNlKQogICAgewogICAgICAgICRuYW1lcyA9ICR0aGlzLT5UYWJOYW1lcygpOwogICAgICAgICRzdHIgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX01BTVMpLT5MYW5nKCdmcm9udGVuZF9hY2Nlc3MnKTsKICAgICAgICBpZiggIWlzc2V0KCRuYW1lc1skdGFiXSkgfHwgJG5hbWVzWyR0YWJdICE9ICRzdHIgKSByZXR1cm4gcGFyZW50OjpFZGl0QXNBcnJheSgkYWRkaW5nLCR0YWIsJHNob3dhZG1pbik7CgogICAgICAgICRyZXQgPSBhcnJheSgpOwogICAgICAgIC8vIHRoZSBwZXJtaXNzaW9ucyB0YWIuCiAgICAgICAgJG1hbXMgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01BTVMnKTsKICAgICAgICAkZ3JvdXBsaXN0ID0gYXJyYXlfZmxpcCgkbWFtcy0+R2V0R3JvdXBMaXN0KCkpOwoKICAgICAgICAkdGhpcy0+X2dldERhdGEoKTsKICAgICAgICBpZiggIWlzc2V0KCR0aGlzLT5fZGF0YVsnZ3JvdXBzJ10pICkgewogICAgICAgICAgICAkdG1wID0gZXhwbG9kZSgnLCcsJG1hbXMtPkdldFByZWZlcmVuY2UoJ3BhZ2V0eXBlX2dyb3VwcycpKTsKICAgICAgICAgICAgaWYoIGlzX2FycmF5KCR0bXApICYmIGNvdW50KCR0bXApICkgJHRoaXMtPl9kYXRhWydncm91cHMnXSA9ICR0bXA7CiAgICAgICAgfQogICAgICAgICRzaXplID0gbWluKGNvdW50KCRncm91cGxpc3QpLDEwKTsKICAgICAgICAkdG1wID0gYXJyYXkoJG1hbXMtPkxhbmcoJ2dyb3VwcycpLic6Jyk7CiAgICAgICAgJG9wdCA9ICc8c2VsZWN0IG5hbWU9Il9fbWFtc19ncm91cHNfX1tdIiBtdWx0aXBsZT0ibXVsdGlwbGUiIHNpemU9IicuJHNpemUuJyI+JzsKICAgICAgICBmb3JlYWNoKCAkZ3JvdXBsaXN0IGFzICRnaWQgPT4gJGduYW1lICkgewogICAgICAgICAgICAkc2VsZWN0ZWQgPSAnJzsKICAgICAgICAgICAgaWYoIGlzc2V0KCR0aGlzLT5fZGF0YVsnZ3JvdXBzJ10pICYmIGluX2FycmF5KCRnaWQsJHRoaXMtPl9kYXRhWydncm91cHMnXSkgKSAkc2VsZWN0ZWQ9J3NlbGVjdGVkPSJzZWxlY3RlZCIgJzsKICAgICAgICAgICAgJG9wdCAuPSAnPG9wdGlvbiAnLiRzZWxlY3RlZC4ndmFsdWU9IicuJGdpZC4nIj4nLiRnbmFtZS4nPC9vcHRpb24+JzsKICAgICAgICB9CiAgICAgICAgJG9wdCAuPSAnPC9zZWxlY3Q+PGJyLz4nLiRtYW1zLT5MYW5nKCdpbmZvX2NvbnRlbnRwYWdlX2dyb3VwbGlzdCcpOwogICAgICAgICR0bXBbXSA9ICRvcHQ7CiAgICAgICAgJHJldFtdID0gJHRtcDsKCiAgICAgICAgcmV0dXJuICRyZXQ7CiAgICB9CgogICAgLy8gQ01TTVMgMi4wCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0VGFiTmFtZXMoKQogICAgewogICAgICAgICRvdXQgPSBwYXJlbnQ6OkdldFRhYk5hbWVzKCk7CiAgICAgICAgaWYoICFjaGVja19wZXJtaXNzaW9uKGdldF91c2VyaWQoKSwnTWFuYWdlIEFsbCBDb250ZW50JykgKSB7CiAgICAgICAgICAgIGlmKCBpc3NldCgkb3V0W3NlbGY6OlRBQl9NQU1TXSkgKSB1bnNldCgkb3V0W3NlbGY6OlRBQl9NQU1TXSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBpZiggaXNzZXQoJG91dFtzZWxmOjpUQUJfTUFNU10pICkgewogICAgICAgICAgICAgICAgJG1hbXMgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNQU1TJyk7CiAgICAgICAgICAgICAgICAkb3V0W3NlbGY6OlRBQl9NQU1TXSA9ICctLXZpZXdlcnMtLSc7CiAgICAgICAgICAgICAgICBpZiggJG1hbXMgKSAkb3V0W3NlbGY6OlRBQl9NQU1TXSA9ICRtYW1zLT5MYW5nKCdmcm9udGVuZF9hY2Nlc3MnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gU2hvd0luTWVudSgpCiAgICB7CiAgICAgICAgJHJlcyA9IHBhcmVudDo6U2hvd0luTWVudSgpOwogICAgICAgIGlmKCAhJHJlcyApIHJldHVybiAkcmVzOwogICAgICAgIHJldHVybiAkdGhpcy0+X2lzQXV0aG9yaXplZCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBTYXZlKCkKICAgIHsKICAgICAgICAkdGhpcy0+X3NldERhdGEoKTsKICAgICAgICByZXR1cm4gcGFyZW50OjpTYXZlKCk7CiAgICB9CgogICAgLy8gcG9zc2libGUgZm9yIDEuMTEueCwgcmVxdWlyZWQgZm9yIENNU01TIDIuMAogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIF9kaXNwbGF5X3NpbmdsZV9lbGVtZW50KCRvbmUsJGFkZGluZykKICAgIHsKICAgICAgICAkbWFtcyA9IGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfTUFNUyk7CiAgICAgICAgaWYoICEkbWFtcyApIHJldHVybjsKCiAgICAgICAgc3dpdGNoKCAkb25lICkgewogICAgICAgIGNhc2UgJ19fbWFtc19ncm91cHNfXyc6CiAgICAgICAgICAgICRyZXQgPSBhcnJheSgpOwogICAgICAgICAgICAvLyB0aGUgcGVybWlzc2lvbnMgdGFiLgogICAgICAgICAgICAkZ3JvdXBsaXN0ID0gYXJyYXlfZmxpcCgkbWFtcy0+R2V0R3JvdXBMaXN0KCkpOwoKICAgICAgICAgICAgJHRoaXMtPl9nZXREYXRhKCk7CiAgICAgICAgICAgIGlmKCAhaXNzZXQoJHRoaXMtPl9kYXRhWydncm91cHMnXSkgKSB7CiAgICAgICAgICAgICAgICAkdG1wID0gZXhwbG9kZSgnLCcsJG1hbXMtPkdldFByZWZlcmVuY2UoJ3BhZ2V0eXBlX2dyb3VwcycpKTsKICAgICAgICAgICAgICAgIGlmKCBpc19hcnJheSgkdG1wKSAmJiBjb3VudCgkdG1wKSApICR0aGlzLT5fZGF0YVsnZ3JvdXBzJ10gPSAkdG1wOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRzaXplID0gbWluKGNvdW50KCRncm91cGxpc3QpLDEwKTsKICAgICAgICAgICAgJHRtcCA9IGFycmF5KCRtYW1zLT5MYW5nKCdncm91cHMnKS4nOicpOwogICAgICAgICAgICAkb3B0ID0gJzxzZWxlY3QgbmFtZT0iX19tYW1zX2dyb3Vwc19fW10iIG11bHRpcGxlPSJtdWx0aXBsZSIgc2l6ZT0iJy4kc2l6ZS4nIj4nOwogICAgICAgICAgICBmb3JlYWNoKCAkZ3JvdXBsaXN0IGFzICRnaWQgPT4gJGduYW1lICkgewogICAgICAgICAgICAgICAgJHNlbGVjdGVkID0gJyc7CiAgICAgICAgICAgICAgICBpZiggaXNzZXQoJHRoaXMtPl9kYXRhWydncm91cHMnXSkgJiYgaW5fYXJyYXkoJGdpZCwkdGhpcy0+X2RhdGFbJ2dyb3VwcyddKSApICRzZWxlY3RlZD0nc2VsZWN0ZWQ9InNlbGVjdGVkIiAnOwogICAgICAgICAgICAgICAgJG9wdCAuPSAnPG9wdGlvbiAnLiRzZWxlY3RlZC4ndmFsdWU9IicuJGdpZC4nIj4nLiRnbmFtZS4nPC9vcHRpb24+JzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkb3B0IC49ICc8L3NlbGVjdD48YnIvPicuJG1hbXMtPkxhbmcoJ2luZm9fY29udGVudHBhZ2VfZ3JvdXBsaXN0Jyk7CiAgICAgICAgICAgICR0bXBbXSA9ICRvcHQ7CiAgICAgICAgICAgIHJldHVybiAkdG1wOwoKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICByZXR1cm4gcGFyZW50OjpkaXNwbGF5X3NpbmdsZV9lbGVtZW50KCRvbmUsJGFkZGluZyk7CiAgICAgICAgfQogICAgfQoKfSAvLyBlbmQgb2YgY2xhc3MKCiAgICBjbGFzcyBQcm90ZWN0ZWRQYWdlIGV4dGVuZHMgYmFzZV9wcm90ZWN0ZWRfcGFnZSB7CiAgICAgICAgcHVibGljIGZ1bmN0aW9uIEZpbGxQYXJhbXMoJHBhcmFtcywkZWRpdGluZyA9IGZhbHNlKQogICAgICAgIHsKICAgICAgICAgICAgJHRoaXMtPl9nZXREYXRhKCk7CiAgICAgICAgICAgIGlmKCBpc3NldCgkcGFyYW1zWydfX21hbXNfZ3JvdXBzX18nXSkgKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGFbJ2dyb3VwcyddID0gJHBhcmFtc1snX19tYW1zX2dyb3Vwc19fJ107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiggaXNzZXQoJHRoaXMtPl9kYXRhWydncm91cHMnXSkgKSB7CiAgICAgICAgICAgICAgICB1bnNldCgkdGhpcy0+X2RhdGFbJ2dyb3VwcyddKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBwYXJlbnQ6OkZpbGxQYXJhbXMoJHBhcmFtcywkZWRpdGluZyk7CiAgICAgICAgICAgICR0aGlzLT5TZXRDYWNoYWJsZShmYWxzZSk7CiAgICAgICAgfQoKICAgICAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZGlzcGxheV9zaW5nbGVfZWxlbWVudCgkb25lLCAkYWRkaW5nKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIHBhcmVudDo6X2Rpc3BsYXlfc2luZ2xlX2VsZW1lbnQoJG9uZSwkYWRkaW5nKTsKICAgICAgICB9CiAgICB9IC8vIGNsYXNzCg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.mams_protected_sectionhead.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQpuYW1lc3BhY2UgTUFNUzsKdXNlIFNlY3Rpb25IZWFkZXI7CnVzZSBjbXNfdXRpbHM7CgovLyA5OSUgb2YgdGhpcyBjbGFzcyAoYWxsIG9mIGl0PykgY291bGQgYmUgaW4gYSB0cmFpdCwgYXMgaXQgaXMgaW5pdGlhbGx5IGp1c3QgY29waWVkIGZyb20gdGhlIEZFVSAoTUFNUykgcHJvdGVjdGVkIHBhZ2UgY2xhc3MuCmFic3RyYWN0IGNsYXNzIEJhc2VQcm90ZWN0ZWRTZWN0aW9uSGVhZCBleHRlbmRzIFNlY3Rpb25IZWFkZXIKewogICAgcHJvdGVjdGVkICRfZGF0YTsKICAgIGNvbnN0IE1BTVNfUFJPUE5BTUUgPSAnX19tYW1zX2RhdGFfXyc7IC8vIG9vcHM6IHR5cG8sIGNhbid0IGNoYW5nZSBpdCBub3cgdGhvdWdoLgogICAgY29uc3QgVEFCX01BTVMgPSAnY2NfbWFtcyc7CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIF9nZXREYXRhKCkKICAgIHsKICAgICAgICBpZiggIWlzX2FycmF5KCR0aGlzLT5fZGF0YSkgKSB7CiAgICAgICAgICAgICR0bXAgPSAkdGhpcy0+R2V0UHJvcGVydHlWYWx1ZShzZWxmOjpNQU1TX1BST1BOQU1FKTsKICAgICAgICAgICAgJHRoaXMtPl9kYXRhID0gYXJyYXkoKTsKICAgICAgICAgICAgaWYoICR0bXAgKSAkdGhpcy0+X2RhdGEgPSB1bnNlcmlhbGl6ZSgkdG1wKTsKICAgICAgICB9CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIF9zZXREYXRhKCkKICAgIHsKICAgICAgICBpZiggaXNfYXJyYXkoJHRoaXMtPl9kYXRhKSAmJiBjb3VudCgkdGhpcy0+X2RhdGEpICkgewogICAgICAgICAgICAkdGhpcy0+U2V0UHJvcGVydHlWYWx1ZShzZWxmOjpNQU1TX1BST1BOQU1FLHNlcmlhbGl6ZSgkdGhpcy0+X2RhdGEpKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5TZXRQcm9wZXJ0eVZhbHVlKHNlbGY6Ok1BTVNfUFJPUE5BTUUsJycpOwogICAgICAgIH0KICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX2lzQXV0aG9yaXplZCgpCiAgICB7CiAgICAgICAgLy8gZG8gd2UgaGF2ZSBhY2Nlc3MgdG8gaXQ/CiAgICAgICAgJHRoaXMtPl9nZXREYXRhKCk7CgogICAgICAgICRtYW1zID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKTsKICAgICAgICBpZiggJG1hbXMgKSB7CiAgICAgICAgICAgICR1aWQgPSAkbWFtcy0+TG9nZ2VkSW5JZCgpOwogICAgICAgICAgICBpZiggJHVpZCApIHsKICAgICAgICAgICAgICAgIGlmKCAhaXNzZXQoJHRoaXMtPl9kYXRhWydncm91cHMnXSkgfHwgY291bnQoJHRoaXMtPl9kYXRhWydncm91cHMnXSkgPT0gMCApIHsKICAgICAgICAgICAgICAgICAgICAvLyBubyBtZW1iZXIgZ3JvdXBzIHNlbGVjdGVkLCBidXQgc3RpbGwgbG9nZ2VkIGluLCB3ZSBjYW4gZGlzcGxheSB0aGlzLgogICAgICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gZ2V0IG1lbWJlciBncm91cHMgYW5kIGRvIGEgY3Jvc3MgcmVmZXJlbmNlLgogICAgICAgICAgICAgICAgICAgICRncm91cHMgPSAkbWFtcy0+R2V0TWVtYmVyR3JvdXBzQXJyYXkoJHVpZCk7CiAgICAgICAgICAgICAgICAgICAgaWYoICFpc19hcnJheSgkZ3JvdXBzKSB8fCBjb3VudCgkZ3JvdXBzKSA9PSAwICkgcmV0dXJuIEZBTFNFOwogICAgICAgICAgICAgICAgICAgICRtZW1iZXJncm91cHMgPSBceHRfYXJyYXk6OmV4dHJhY3RfZmllbGQoJGdyb3VwcywnZ3JvdXBpZCcpOwogICAgICAgICAgICAgICAgICAgIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCR0aGlzLT5fZGF0YVsnZ3JvdXBzJ10pOyAkaSsrICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiggaW5fYXJyYXkoJHRoaXMtPl9kYXRhWydncm91cHMnXVskaV0sJG1lbWJlcmdyb3VwcykgKSByZXR1cm4gVFJVRTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBUeXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gJ21hbXNfcHJvdGVjdGVkX3NlY19oZWFkJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gRnJpZW5kbHlOYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKS0+TGFuZyhnZXRfY2xhc3MoJHRoaXMpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0TW9kaWZpZWREYXRlKCkKICAgIHsKICAgICAgICAvLyBvbiBmcm9udGVuZCByZXF1ZXN0cyB0aGlzIHdpbGwgZm9yY2UgdGhlIHRlbXBsYXRlIHRvIGJlIHJlY29tcGlsZWQKICAgICAgICAvLyBhbmQgdGhlcmVmb3JlIGV2YWx1YXRpb24gdG8gYmUgZG9uZSBmb3IgZWFjaCByZXF1ZXN0LgogICAgICAgIGlmKCBjbXNtcygpLT5pc19mcm9udGVuZF9yZXF1ZXN0KCkgKSByZXR1cm4gdGltZSgpOwogICAgICAgIHJldHVybiBwYXJlbnQ6OkdldE1vZGlmaWVkRGF0ZSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBTZXRQcm9wZXJ0aWVzKCkKICAgIHsKICAgICAgICBwYXJlbnQ6OlNldFByb3BlcnRpZXMoKTsKICAgICAgICAkdGhpcy0+UmVtb3ZlUHJvcGVydHkoJ2NhY2hhYmxlJyxmYWxzZSk7CiAgICAgICAgaWYoIHZlcnNpb25fY29tcGFyZShDTVNfVkVSU0lPTiwnMS45OCcpIDwgMCApIHsKICAgICAgICAgICAgJHRoaXMtPkFkZENvbnRlbnRQcm9wZXJ0eSgnX19tYW1zX2dyb3Vwc19fJywxKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5BZGRQcm9wZXJ0eSgnX19tYW1zX2dyb3Vwc19fJywxLHNlbGY6OlRBQl9NQU1TKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIElzUGVybWl0dGVkKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPl9pc0F1dGhvcml6ZWQoKTsKICAgIH0KCiAgICAvLyBDTVNNUyAxLjExLnggYW5kIHByZXZpb3VzIG9ubHkKICAgIHB1YmxpYyBmdW5jdGlvbiBUYWJOYW1lcygpCiAgICB7CiAgICAgICAgJHJlcyA9IHBhcmVudDo6VGFiTmFtZXMoKTsKICAgICAgICBpZiggY2hlY2tfcGVybWlzc2lvbihnZXRfdXNlcmlkKCksJ01hbmFnZSBBbGwgQ29udGVudCcpICkgewogICAgICAgICAgICAkcmVzW10gPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX01BTVMpLT5MYW5nKCdmcm9udGVuZF9hY2Nlc3MnKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRyZXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEVkaXRBc0FycmF5KCRhZGRpbmcgPSBmYWxzZSwgJHRhYiA9IDAsICRzaG93YWRtaW4gPSBmYWxzZSkKICAgIHsKICAgICAgICAkbmFtZXMgPSAkdGhpcy0+VGFiTmFtZXMoKTsKICAgICAgICAkc3RyID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKS0+TGFuZygnZnJvbnRlbmRfYWNjZXNzJyk7CiAgICAgICAgaWYoICFpc3NldCgkbmFtZXNbJHRhYl0pIHx8ICRuYW1lc1skdGFiXSAhPSAkc3RyICkgcmV0dXJuIHBhcmVudDo6RWRpdEFzQXJyYXkoJGFkZGluZywkdGFiLCRzaG93YWRtaW4pOwoKICAgICAgICAkcmV0ID0gYXJyYXkoKTsKICAgICAgICAvLyB0aGUgcGVybWlzc2lvbnMgdGFiLgogICAgICAgICRtYW1zID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNQU1TJyk7CiAgICAgICAgJGdyb3VwbGlzdCA9IGFycmF5X2ZsaXAoJG1hbXMtPkdldEdyb3VwTGlzdCgpKTsKCiAgICAgICAgJHRoaXMtPl9nZXREYXRhKCk7CiAgICAgICAgaWYoICFpc3NldCgkdGhpcy0+X2RhdGFbJ2dyb3VwcyddKSApIHsKICAgICAgICAgICAgJHRtcCA9IGV4cGxvZGUoJywnLCRtYW1zLT5HZXRQcmVmZXJlbmNlKCdwYWdldHlwZV9ncm91cHMnKSk7CiAgICAgICAgICAgIGlmKCBpc19hcnJheSgkdG1wKSAmJiBjb3VudCgkdG1wKSApICR0aGlzLT5fZGF0YVsnZ3JvdXBzJ10gPSAkdG1wOwogICAgICAgIH0KICAgICAgICAkc2l6ZSA9IG1pbihjb3VudCgkZ3JvdXBsaXN0KSwxMCk7CiAgICAgICAgJHRtcCA9IGFycmF5KCRtYW1zLT5MYW5nKCdncm91cHMnKS4nOicpOwogICAgICAgICRvcHQgPSAnPHNlbGVjdCBuYW1lPSJfX21hbXNfZ3JvdXBzX19bXSIgbXVsdGlwbGU9Im11bHRpcGxlIiBzaXplPSInLiRzaXplLiciPic7CiAgICAgICAgZm9yZWFjaCggJGdyb3VwbGlzdCBhcyAkZ2lkID0+ICRnbmFtZSApIHsKICAgICAgICAgICAgJHNlbGVjdGVkID0gJyc7CiAgICAgICAgICAgIGlmKCBpc3NldCgkdGhpcy0+X2RhdGFbJ2dyb3VwcyddKSAmJiBpbl9hcnJheSgkZ2lkLCR0aGlzLT5fZGF0YVsnZ3JvdXBzJ10pICkgJHNlbGVjdGVkPSdzZWxlY3RlZD0ic2VsZWN0ZWQiICc7CiAgICAgICAgICAgICRvcHQgLj0gJzxvcHRpb24gJy4kc2VsZWN0ZWQuJ3ZhbHVlPSInLiRnaWQuJyI+Jy4kZ25hbWUuJzwvb3B0aW9uPic7CiAgICAgICAgfQogICAgICAgICRvcHQgLj0gJzwvc2VsZWN0Pjxici8+Jy4kbWFtcy0+TGFuZygnaW5mb19jb250ZW50cGFnZV9ncm91cGxpc3QnKTsKICAgICAgICAkdG1wW10gPSAkb3B0OwogICAgICAgICRyZXRbXSA9ICR0bXA7CgogICAgICAgIHJldHVybiAkcmV0OwogICAgfQoKICAgIC8vIENNU01TIDIuMAogICAgcHVibGljIGZ1bmN0aW9uIEdldFRhYk5hbWVzKCkKICAgIHsKICAgICAgICAkb3V0ID0gcGFyZW50OjpHZXRUYWJOYW1lcygpOwogICAgICAgIGlmKCAhY2hlY2tfcGVybWlzc2lvbihnZXRfdXNlcmlkKCksJ01hbmFnZSBBbGwgQ29udGVudCcpICkgewogICAgICAgICAgICBpZiggaXNzZXQoJG91dFtzZWxmOjpUQUJfTUFNU10pICkgdW5zZXQoJG91dFtzZWxmOjpUQUJfTUFNU10pOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgaWYoIGlzc2V0KCRvdXRbc2VsZjo6VEFCX01BTVNdKSApICRvdXRbc2VsZjo6VEFCX01BTVNdID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKS0+TGFuZygnZnJvbnRlbmRfYWNjZXNzJyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBTaG93SW5NZW51KCkKICAgIHsKICAgICAgICAkcmVzID0gcGFyZW50OjpTaG93SW5NZW51KCk7CiAgICAgICAgaWYoICEkcmVzICkgcmV0dXJuICRyZXM7CiAgICAgICAgcmV0dXJuICR0aGlzLT5faXNBdXRob3JpemVkKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIFNhdmUoKQogICAgewogICAgICAgICR0aGlzLT5fc2V0RGF0YSgpOwogICAgICAgIHJldHVybiBwYXJlbnQ6OlNhdmUoKTsKICAgIH0KCiAgICAvLyBwb3NzaWJsZSBmb3IgMS4xMS54LCByZXF1aXJlZCBmb3IgQ01TTVMgMi4wCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX2Rpc3BsYXlfc2luZ2xlX2VsZW1lbnQoJG9uZSwkYWRkaW5nKQogICAgewogICAgICAgICRtYW1zID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKTsKICAgICAgICBpZiggISRtYW1zICkgcmV0dXJuOwoKICAgICAgICBzd2l0Y2goICRvbmUgKSB7CiAgICAgICAgY2FzZSAnX19tYW1zX2dyb3Vwc19fJzoKICAgICAgICAgICAgaWYoIHZlcnNpb25fY29tcGFyZShDTVNfVkVSU0lPTiwnMS45OCcpIDwgMCApIHJldHVybjsKCiAgICAgICAgICAgICRyZXQgPSBhcnJheSgpOwogICAgICAgICAgICAvLyB0aGUgcGVybWlzc2lvbnMgdGFiLgogICAgICAgICAgICAkZ3JvdXBsaXN0ID0gYXJyYXlfZmxpcCgkbWFtcy0+R2V0R3JvdXBMaXN0KCkpOwoKICAgICAgICAgICAgJHRoaXMtPl9nZXREYXRhKCk7CiAgICAgICAgICAgIGlmKCAhaXNzZXQoJHRoaXMtPl9kYXRhWydncm91cHMnXSkgKSB7CiAgICAgICAgICAgICAgICAkdG1wID0gZXhwbG9kZSgnLCcsJG1hbXMtPkdldFByZWZlcmVuY2UoJ3BhZ2V0eXBlX2dyb3VwcycpKTsKICAgICAgICAgICAgICAgIGlmKCBpc19hcnJheSgkdG1wKSAmJiBjb3VudCgkdG1wKSApICR0aGlzLT5fZGF0YVsnZ3JvdXBzJ10gPSAkdG1wOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRzaXplID0gbWluKGNvdW50KCRncm91cGxpc3QpLDEwKTsKICAgICAgICAgICAgJHRtcCA9IGFycmF5KCRtYW1zLT5MYW5nKCdncm91cHMnKS4nOicpOwogICAgICAgICAgICAkb3B0ID0gJzxzZWxlY3QgbmFtZT0iX19tYW1zX2dyb3Vwc19fW10iIG11bHRpcGxlPSJtdWx0aXBsZSIgc2l6ZT0iJy4kc2l6ZS4nIj4nOwogICAgICAgICAgICBmb3JlYWNoKCAkZ3JvdXBsaXN0IGFzICRnaWQgPT4gJGduYW1lICkgewogICAgICAgICAgICAgICAgJHNlbGVjdGVkID0gJyc7CiAgICAgICAgICAgICAgICBpZiggaXNzZXQoJHRoaXMtPl9kYXRhWydncm91cHMnXSkgJiYgaW5fYXJyYXkoJGdpZCwkdGhpcy0+X2RhdGFbJ2dyb3VwcyddKSApICRzZWxlY3RlZD0nc2VsZWN0ZWQ9InNlbGVjdGVkIiAnOwogICAgICAgICAgICAgICAgJG9wdCAuPSAnPG9wdGlvbiAnLiRzZWxlY3RlZC4ndmFsdWU9IicuJGdpZC4nIj4nLiRnbmFtZS4nPC9vcHRpb24+JzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkb3B0IC49ICc8L3NlbGVjdD48YnIvPicuJG1hbXMtPkxhbmcoJ2luZm9fY29udGVudHBhZ2VfZ3JvdXBsaXN0Jyk7CiAgICAgICAgICAgICR0bXBbXSA9ICRvcHQ7CiAgICAgICAgICAgIHJldHVybiAkdG1wOwoKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICByZXR1cm4gcGFyZW50OjpkaXNwbGF5X3NpbmdsZV9lbGVtZW50KCRvbmUsJGFkZGluZyk7CiAgICAgICAgfQogICAgfQoKfSAvLyBlbmQgb2YgY2xhc3MKCi8vaWYoIHZlcnNpb25fY29tcGFyZShDTVNfVkVSU0lPTiwnMi4yLjkwMCcpIDwgMSkgewogICAgY2xhc3MgUHJvdGVjdGVkU2VjdGlvbkhlYWQgZXh0ZW5kcyBCYXNlUHJvdGVjdGVkU2VjdGlvbkhlYWQgewogICAgICAgIHB1YmxpYyBmdW5jdGlvbiBGaWxsUGFyYW1zKCRwYXJhbXMsJGVkaXRpbmcgPSBmYWxzZSkKICAgICAgICB7CiAgICAgICAgICAgICR0aGlzLT5fZ2V0RGF0YSgpOwogICAgICAgICAgICBpZiggaXNzZXQoJHBhcmFtc1snX19tYW1zX2dyb3Vwc19fJ10pICkgewogICAgICAgICAgICAgICAgJHRoaXMtPl9kYXRhWydncm91cHMnXSA9ICRwYXJhbXNbJ19fbWFtc19ncm91cHNfXyddOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYoIGlzc2V0KCR0aGlzLT5fZGF0YVsnZ3JvdXBzJ10pICkgewogICAgICAgICAgICAgICAgdW5zZXQoJHRoaXMtPl9kYXRhWydncm91cHMnXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcGFyZW50OjpGaWxsUGFyYW1zKCRwYXJhbXMsJGVkaXRpbmcpOwogICAgICAgICAgICAkdGhpcy0+U2V0Q2FjaGFibGUoZmFsc2UpOwogICAgICAgIH0KCiAgICAgICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGRpc3BsYXlfc2luZ2xlX2VsZW1lbnQoJG9uZSwgJGFkZGluZykKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBwYXJlbnQ6Ol9kaXNwbGF5X3NpbmdsZV9lbGVtZW50KCRvbmUsJGFkZGluZyk7CiAgICAgICAgfQogICAgfSAvLyBjbGFzcwovL30gZWxzZSB7Ci8vICAgIGNsYXNzIFByb3RlY3RlZFNlY3Rpb25IZWFkIGV4dGVuZHMgQmFzZVByb3RlY3RlZFNlY3Rpb25IZWFkIHsKLy8gICAgICAgIHB1YmxpYyBmdW5jdGlvbiBGaWxsUGFyYW1zKGFycmF5ICRwYXJhbXMsYm9vbCAkZWRpdGluZyA9IG51bGwpCi8vICAgICAgICB7Ci8vICAgICAgICAgICAgJHRoaXMtPl9nZXREYXRhKCk7Ci8vICAgICAgICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ19fbWFtc19ncm91cHNfXyddKSApIHsKLy8gICAgICAgICAgICAgICAgJHRoaXMtPl9kYXRhWydncm91cHMnXSA9ICRwYXJhbXNbJ19fbWFtc19ncm91cHNfXyddOwovLyAgICAgICAgICAgIH0KLy8gICAgICAgICAgICBlbHNlIGlmKCBpc3NldCgkdGhpcy0+X2RhdGFbJ2dyb3VwcyddKSApIHsKLy8gICAgICAgICAgICAgICAgdW5zZXQoJHRoaXMtPl9kYXRhWydncm91cHMnXSk7Ci8vICAgICAgICAgICAgfQovLyAgICAgICAgICAgIHBhcmVudDo6RmlsbFBhcmFtcygkcGFyYW1zLCRlZGl0aW5nKTsKLy8gICAgICAgICAgICAkdGhpcy0+U2V0Q2FjaGFibGUoZmFsc2UpOwovLyAgICAgICAgfQovLwovLyAgICAgICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGRpc3BsYXlfc2luZ2xlX2VsZW1lbnQoc3RyaW5nICRvbmUsIGJvb2wgJGFkZGluZykKLy8gICAgICAgIHsKLy8gICAgICAgICAgICByZXR1cm4gcGFyZW50OjpfZGlzcGxheV9zaW5nbGVfZWxlbWVudCgkb25lLCRhZGRpbmcpOwovLyAgICAgICAgfQovLyAgICB9IC8vIGNsYXNzCi8vfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.mams_pure_consumer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKY2xhc3MgbWFtc19wdXJlX2NvbnN1bWVyIGltcGxlbWVudHMgbWFtc19hdXRoX2NvbnN1bWVyCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBpc19hdXRoZW50aWNhdGVkKCkgewogICAgICAgIHJldHVybiBGQUxTRTsKICAgIH0KCiAgICBmaW5hbCBwdWJsaWMgZnVuY3Rpb24gaGFzX2NhcGFiaWxpdHkoJGZsYWcpCiAgICB7CiAgICAgICAgaWYoICFpc19hcnJheSgkZmxhZykgKSAkZmxhZyA9IGFycmF5KCRmbGFnKTsKICAgICAgICBmb3JlYWNoKCAkZmxhZyBhcyAkb25lICkgewogICAgICAgICAgICBpZiggaW5fYXJyYXkoJG9uZSwkdGhpcy0+Z2V0X2NhcGFiaWxpdGllcygpKSApIHJldHVybiBUUlVFOwogICAgICAgIH0KICAgICAgICByZXR1cm4gRkFMU0U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9jYXBhYmlsaXRpZXMoKQogICAgewogICAgICAgIHJldHVybiBhcnJheSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfbG9naW5fZGlzcGxheSgkaWQsJHJldHVybmlkLCRwYXJhbXMpCiAgICB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfbG9nb3V0X2Rpc3BsYXkoJGlkLCRyZXR1cm5pZCwkcGFyYW1zKQogICAgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2NoYW5nZXNldHRpbmdzX2Rpc3BsYXkoJGlkLCRyZXR1cm5pZCwkcGFyYW1zKQogICAgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3VzZXJfaW5mbygpCiAgICB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfY29ubmVjdGluZ19wcm9wZXJ0eV9uYW1lKCkKICAgIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF91bmlxdWVfaWRlbnRpZmllcigpCiAgICB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfZ3JvdXBfbGlzdCgkd2l0aF9jb3VudCA9IEZBTFNFKQogICAgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2dyb3VwX21lbWJlcnNoaXAoJHVzZXJpZCkKICAgIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9kZWZhdWx0X2dyb3VwcygpCiAgICB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfdXNlcm5hbWUoJHVpZCA9IG51bGwpCiAgICB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfdXNlcm5hbWVfcHJvbXB0KCkKICAgIHsKICAgICAgICAkbWFtcyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnTUFNUycpOwogICAgICAgIHJldHVybiAkbWFtcy0+TGFuZygncHJvbXB0X3VzZXJuYW1lJyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHZhbGlkYXRlX3VzZXJuYW1lKCR1c2VybmFtZSwkY2hlY2tfZW1haWxfYWRkciA9IEZBTFNFLCR1aWQgPSAtMSkKICAgIHsKICAgICAgICByZXR1cm4gVFJVRTsKICAgIH0KfSAvLyBlbmQgb2YgY2xhc3MKCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.mams_smarty.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKZmluYWwgY2xhc3MgbWFtc19zbWFydHkKewogICAgcHJpdmF0ZSBzdGF0aWMgJF9tb2R1bGU7CiAgICBwcml2YXRlIHN0YXRpYyAkX3Byb3BlcnRpZXM7CiAgICBwcml2YXRlIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkge30KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBfZ2V0X21vZHVsZSgpCiAgICB7CiAgICAgICAgaWYoICFzZWxmOjokX21vZHVsZSApIHNlbGY6OiRfbW9kdWxlID0gXGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfTUFNUyk7CiAgICAgICAgcmV0dXJuIHNlbGY6OiRfbW9kdWxlOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2N1cnJlbnRfdXNlcmlkKCkKICAgIHsKICAgICAgICAkdWlkID0gc2VsZjo6X2dldF9tb2R1bGUoKS0+TG9nZ2VkSW5JZCgpOwogICAgICAgIHJldHVybiAkdWlkOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2N1cnJlbnRfdXNlcm5hbWUoKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpfZ2V0X21vZHVsZSgpLT5Mb2dnZWRJbk5hbWUoKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF91c2VyaWQoJHVzZXJuYW1lKQogICAgewogICAgICAgICR1c2VybmFtZSA9IHRyaW0oJHVzZXJuYW1lKTsKICAgICAgICBpZiggJHVzZXJuYW1lICkgcmV0dXJuIChpbnQpc2VsZjo6X2dldF9tb2R1bGUoKS0+R2V0VXNlcklEKCR1c2VybmFtZSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfdXNlcm5hbWUoJHVpZCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYoICR1aWQgPCAxICkgJHVpZCA9IHNlbGY6Ol9nZXRfbW9kdWxlKCktPkxvZ2dlZEluSWQoKTsKICAgICAgICBpZiggJHVpZCA8IDEgKSByZXR1cm47CiAgICAgICAgJHVpbmZvID0gc2VsZjo6X2dldF9tb2R1bGUoKS0+R2V0VXNlckluZm8oJHVpZCk7CiAgICAgICAgaWYoICFpc19hcnJheSgkdWluZm8pIHx8IGNvdW50KCR1aW5mbykgPT0gMCB8fCAkdWluZm9bMF0gPT0gRkFMU0UgKSByZXR1cm47CiAgICAgICAgcmV0dXJuICR1aW5mb1sxXVsndXNlcm5hbWUnXTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9lbWFpbCgkdWlkID0gbnVsbCkKICAgIHsKICAgICAgICBpZiggJHVpZCA8IDEgKSAkdWlkID0gc2VsZjo6X2dldF9tb2R1bGUoKS0+TG9nZ2VkSW5JZCgpOwogICAgICAgIGlmKCAkdWlkIDwgMSApIHJldHVybjsKICAgICAgICAkbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKTsKICAgICAgICBpZiggJG1vZC0+R2V0UHJlZmVyZW5jZSgndXNlcm5hbWVfaXNfZW1haWwnKSApIHJldHVybiBzZWxmOjpnZXRfdXNlcm5hbWUoJHVpZCk7CiAgICAgICAgJHRtcCA9ICRtb2QtPkdldEVtYWlsKCR1aWQpOwogICAgICAgIHJldHVybiAkdG1wOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X3VzZXJpbmZvKCR1aWQgPSBudWxsKQogICAgewogICAgICAgIGlmKCAkdWlkIDwgMSApICR1aWQgPSBzZWxmOjpfZ2V0X21vZHVsZSgpLT5Mb2dnZWRJbklkKCk7CiAgICAgICAgaWYoICR1aWQgPCAxICkgcmV0dXJuOwogICAgICAgICR1aWQgPSAoaW50KSR1aWQ7CiAgICAgICAgaWYoICR1aWQgPiAwICkgewogICAgICAgICAgICBpZiggaXNfb2JqZWN0KHNlbGY6Ol9nZXRfbW9kdWxlKCkpICkgewogICAgICAgICAgICAgICAgJHVpbmZvID0gc2VsZjo6X2dldF9tb2R1bGUoKS0+R2V0VXNlckluZm8oJHVpZCxUUlVFKTsKICAgICAgICAgICAgICAgIGlmKCAhaXNfYXJyYXkoJHVpbmZvKSB8fCBjb3VudCgkdWluZm8pID09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYoICR1aW5mb1swXSA9PSBGQUxTRSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBpc3NldCgkdWluZm9bMV1bJ2Zwcm9wcyddKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0bXAgPSBhcnJheSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCggJHVpbmZvWzFdWydmcHJvcHMnXSBhcyAkb25lcHJvcCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdG1wWyRvbmVwcm9wWyd0aXRsZSddXSA9ICRvbmVwcm9wWydkYXRhJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zZXQoJHVpbmZvWzFdWydmcHJvcHMnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdWluZm9bMV1bJ3Byb3BzJ10gPSAkdG1wOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkdWluZm9bMV07CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfdXNlcnNfYnlfZ3JvdXBuYW1lKCRncm91cG5hbWUsJGZvcl9saXN0ID0gRkFMU0UpCiAgICB7CiAgICAgICAgaWYoICFlbXB0eSgkZ3JvdXBuYW1lKSApIHsKICAgICAgICAgICAgaWYoIGlzX29iamVjdChzZWxmOjpfZ2V0X21vZHVsZSgpKSApIHsKCiAgICAgICAgICAgICAgICAkZ2lkID0gc2VsZjo6X2dldF9tb2R1bGUoKS0+R2V0R3JvdXBJRCgkZ3JvdXBuYW1lKTsKICAgICAgICAgICAgICAgIGlmKCAkZ2lkICkgewogICAgICAgICAgICAgICAgICAgICRxdWVyeSA9IG5ldyBcbWFtc191c2VyX3F1ZXJ5KCk7CiAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5LT5hZGRfYW5kX29wdCggXG1hbXNfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX0dST1VQSUQsICRnaWQgKTsKICAgICAgICAgICAgICAgICAgICAkcnMgPSAkcXVlcnktPmV4ZWN1dGUoKTsKCiAgICAgICAgICAgICAgICAgICAgJHVzZXJzID0gW107CiAgICAgICAgICAgICAgICAgICAgd2hpbGUoICEkcnMtPkVPRiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG9uZXVzZXIgPSAkcnMtPmZpZWxkczsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoICRmb3JfbGlzdCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1c2Vyc1skb25ldXNlclsnaWQnXV0gPSAkb25ldXNlclsndXNlcm5hbWUnXTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1c2Vyc1tdID0gYXJyYXkoJ2lkJz0+JG9uZXVzZXJbJ2lkJ10sJ3VzZXJuYW1lJz0+JG9uZXVzZXJbJ3VzZXJuYW1lJ10pOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICRycy0+TW92ZU5leHQoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR1c2VyczsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9ncm91cF9tZW1iZXJsaXN0KCRnaWQpCiAgICB7CiAgICAgICAgJHF1ZXJ5ID0gbmV3IFxtYW1zX3VzZXJfcXVlcnkoKTsKICAgICAgICAkcXVlcnktPmFkZF9hbmRfb3B0KCBcbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfR1JPVVBJRCwgJGdpZCApOwogICAgICAgICRycyA9ICRxdWVyeS0+ZXhlY3V0ZSgpOwoKICAgICAgICAkdXNlcnMgPSBbXTsKICAgICAgICB3aGlsZSggISRycy0+RU9GICkgewogICAgICAgICAgICAkb25ldXNlciA9ICRycy0+ZmllbGRzOwogICAgICAgICAgICAkdXNlcnNbJG9uZXVzZXJbJ2lkJ11dID0gJG9uZXVzZXJbJ3VzZXJuYW1lJ107CiAgICAgICAgICAgICRycy0+TW92ZU5leHQoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICR1c2VyczsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF91c2VyX2V4cGlyeSgkdWlkID0gbnVsbCkKICAgIHsKICAgICAgICBpZiggJHVpZCA8IDEgKSAkdWlkID0gc2VsZjo6X2dldF9tb2R1bGUoKS0+TG9nZ2VkSW5JZCgpOwogICAgICAgIGlmKCAkdWlkIDwgMSApIHJldHVybjsKCiAgICAgICAgJHJlcyA9IG51bGw7CiAgICAgICAgJHJlcyA9IHNlbGY6Ol9nZXRfbW9kdWxlKCktPkdldEV4cGlyeURhdGUoJHVpZCk7CiAgICAgICAgcmV0dXJuICRyZXM7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB1c2VyX2V4cGlyZWQoJHVpZCkKICAgIHsKICAgICAgICBpZiggZW1wdHkoJHVpZCkgKSByZXR1cm47CiAgICAgICAgaWYoICFpc19vYmplY3Qoc2VsZjo6X2dldF9tb2R1bGUoKSkgKSByZXR1cm47CgogICAgICAgICRyZXMgPSBzZWxmOjpfZ2V0X21vZHVsZSgpLT5Jc0FjY291bnRFeHBpcmVkKCR1aWQpOwogICAgICAgIHJldHVybiAkcmVzOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X3VzZXJfcHJvcGVydGllcygkdWlkID0gbnVsbCkKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBpZiggJHVpZCA8IDEgKSAkdWlkID0gc2VsZjo6X2dldF9tb2R1bGUoKS0+TG9nZ2VkSW5JZCgpOwogICAgICAgICAgICBpZiggJHVpZCA8IDEgKSB0aHJvdyBuZXcgRXhjZXB0aW9uKCdhJyk7CgogICAgICAgICAgICAkcmVzID0gc2VsZjo6X2dldF9tb2R1bGUoKS0+R2V0VXNlclByb3BlcnRpZXMoJHVpZCk7CiAgICAgICAgICAgIGlmKCAhJHJlcyApIHRocm93IG5ldyBFeGNlcHRpb24oJ2QnKTsKCiAgICAgICAgICAgICRyZXMyID0gYXJyYXkoKTsKICAgICAgICAgICAgZm9yZWFjaCggJHJlcyBhcyAkb25lICkgewogICAgICAgICAgICAgICAgJHJlczJbJG9uZVsndGl0bGUnXV0gPSAkb25lWydkYXRhJ107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICRyZXMyOwogICAgICAgIH0KICAgICAgICBjYXRjaCggRXhjZXB0aW9uICRlICkgewogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF91c2VyX3Byb3BlcnR5KCRwcm9wZXJ0eSwkdWlkID0gbnVsbCkKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICAkcHJvcGVydHkgPSB0cmltKCRwcm9wZXJ0eSk7CiAgICAgICAgICAgIGlmKCAhJHByb3BlcnR5ICkgdGhyb3cgbmV3IFxFeGNlcHRpb24oJzAnKTsKICAgICAgICAgICAgaWYoICR1aWQgPCAxICkgJHVpZCA9IHNlbGY6Ol9nZXRfbW9kdWxlKCktPkxvZ2dlZEluSWQoKTsKICAgICAgICAgICAgaWYoICR1aWQgPCAxICkgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ2EnKTsKCiAgICAgICAgICAgICR0bXAgPSBzZWxmOjpnZXRfdXNlcl9wcm9wZXJ0aWVzKCR1aWQpOwogICAgICAgICAgICBpZiggaXNzZXQoJHRtcFskcHJvcGVydHldKSApIHJldHVybiAkdG1wWyRwcm9wZXJ0eV07CiAgICAgICAgfQogICAgICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9kcm9wZG93bl90ZXh0KCRwcm9wbmFtZSwkcHJvcHZhbHVlKQogICAgewogICAgICAgICRyZXMgPSBudWxsOwoKICAgICAgICB0cnkgewogICAgICAgICAgICBpZiggIWlzX29iamVjdChzZWxmOjpfZ2V0X21vZHVsZSgpKSApIHRocm93IG5ldyBFeGNlcHRpb24oJ2EnKTsKICAgICAgICAgICAgaWYoIHNlbGY6OiRfcHJvcGVydGllcyA9PSBudWxsICkgewogICAgICAgICAgICAgICAgc2VsZjo6JF9wcm9wZXJ0aWVzID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICR0bXAgPSBzZWxmOjpfZ2V0X21vZHVsZSgpLT5HZXRQcm9wZXJ0eURlZm5zKCk7CiAgICAgICAgICAgICAgICBmb3JlYWNoKCAkdG1wIGFzICRvbmUgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYoICRvbmVbJ3R5cGUnXSA9PSA0IHx8ICRvbmVbJ3R5cGUnXSA9PSA1ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkdG1wMiA9IHNlbGY6Ol9nZXRfbW9kdWxlKCktPkdldFNlbGVjdE9wdGlvbnMoJG9uZVsnbmFtZSddKTsKICAgICAgICAgICAgICAgICAgICAgICAgJG9uZVsnb3B0aW9ucyddID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCggJHRtcDIgYXMgJGsgPT4gJHYgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb25lWydvcHRpb25zJ11bJHZdID0gJGs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgc2VsZjo6JF9wcm9wZXJ0aWVzWyRvbmVbJ25hbWUnXV0gPSAkb25lOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiggIWlzc2V0KHNlbGY6OiRfcHJvcGVydGllc1skcHJvcG5hbWVdKSApIHRocm93IG5ldyBFeGNlcHRpb24oJ2InKTsKCiAgICAgICAgICAgIGlmKCAoc2VsZjo6JF9wcm9wZXJ0aWVzWyRwcm9wbmFtZV1bJ3R5cGUnXSAhPSA0ICYmIHNlbGY6OiRfcHJvcGVydGllc1skcHJvcG5hbWVdWyd0eXBlJ10gIT0gNSkgfHwKICAgICAgICAgICAgICAgICFpc3NldChzZWxmOjokX3Byb3BlcnRpZXNbJHByb3BuYW1lXVsnb3B0aW9ucyddKSApIHRocm93IG5ldyBFeGNlcHRpb24oJ2MnKTsKCiAgICAgICAgICAgIGlmKCAhaXNzZXQoc2VsZjo6JF9wcm9wZXJ0aWVzWyRwcm9wbmFtZV1bJ29wdGlvbnMnXVskcHJvcHZhbHVlXSkgKSB0aHJvdyBuZXcgRXhjZXB0aW9uKCdkJyk7CgogICAgICAgICAgICAkcmVzID0gc2VsZjo6JF9wcm9wZXJ0aWVzWyRwcm9wbmFtZV1bJ29wdGlvbnMnXVskcHJvcHZhbHVlXTsKICAgICAgICB9CiAgICAgICAgY2F0Y2goIEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRyZXM7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfbXVsdGlzZWxlY3RfdGV4dCgkcHJvcG5hbWUsJHByb3B2YWx1ZSkKICAgIHsKICAgICAgICAkdmFsdWVzID0gZXhwbG9kZSgnLCcsJHByb3B2YWx1ZSk7CiAgICAgICAgJHJlcyA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCggJHZhbHVlcyBhcyAkb25lICkgewogICAgICAgICAgICAkcmVzW10gPSBzZWxmOjpnZXRfZHJvcGRvd25fdGV4dCgkcHJvcG5hbWUsJG9uZSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkcmVzOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2dyb3VwX2xpc3QoKQogICAgewogICAgICAgICRsaXN0ID0gYXJyYXlfZmxpcChzZWxmOjpfZ2V0X21vZHVsZSgpLT5HZXRHcm91cExpc3QoKSk7CiAgICAgICAgcmV0dXJuICRsaXN0OwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X3VzZXJfZ3JvdXBzKCR1aWQ9bnVsbCkKICAgIHsKICAgICAgICBpZiggJHVpZCA8IDEgKSAkdWlkID0gc2VsZjo6X2dldF9tb2R1bGUoKS0+TG9nZ2VkSW5JZCgpOwogICAgICAgIGlmKCAkdWlkIDwgMSApIHJldHVybjsKCiAgICAgICAgJGdyb3VwcyA9IHNlbGY6Ol9nZXRfbW9kdWxlKCktPkdldE1lbWJlckdyb3Vwc0FycmF5KCAkdWlkICk7CiAgICAgICAgJGducyA9IGFycmF5KCk7CiAgICAgICAgJGdpZHMgPSBhcnJheSgpOwogICAgICAgIGlmKCAkZ3JvdXBzICE9PSBmYWxzZSApIHsKICAgICAgICAgICAgZm9yZWFjaCggJGdyb3VwcyBhcyAkZ2lkICkgewogICAgICAgICAgICAgICAgJGdpZHNbXSA9ICRnaWRbJ2dyb3VwaWQnXTsKICAgICAgICAgICAgICAgICRnbnNbJGdpZFsnZ3JvdXBpZCddXSA9IHNlbGY6Ol9nZXRfbW9kdWxlKCktPkdldEdyb3VwTmFtZSgkZ2lkWydncm91cGlkJ10pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkZ25zOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNfdXNlcl9tZW1iZXJvZigkZ3JvdXBzLCR1aWQ9bnVsbCkKICAgIHsKICAgICAgICBpZiggJHVpZCA8IDEgKSAkdWlkID0gc2VsZjo6X2dldF9tb2R1bGUoKS0+TG9nZ2VkSW5JZCgpOwogICAgICAgIGlmKCAkdWlkIDwgMSApIHJldHVybjsKCiAgICAgICAgaWYoICFpc19hcnJheSgkZ3JvdXBzKSApICRncm91cHMgPSBleHBsb2RlKCcsJywkZ3JvdXBzKTsKICAgICAgICAkdG1wID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoKCAkZ3JvdXBzIGFzICRncnAgKSB7CiAgICAgICAgICAgICRncnAgPSB0cmltKCRncnApOwogICAgICAgICAgICBpZiggISRncnAgKSBjb250aW51ZTsKICAgICAgICAgICAgJHRtcFtdID0gJGdycDsKICAgICAgICB9CiAgICAgICAgaWYoICFjb3VudCgkdG1wKSApIHJldHVybjsKCiAgICAgICAgJGdyb3VwcyA9IHNlbGY6OmdldF91c2VyX2dyb3VwcygkdWlkKTsKICAgICAgICBmb3JlYWNoKCAkdG1wIGFzICRvbmUgKSB7CiAgICAgICAgICAgIGlmKCBpbl9hcnJheSgkb25lLCRncm91cHMpICkgcmV0dXJuIFRSVUU7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcHJlbG9hZF91c2VycygkdWlkX2xpc3QsJGRlZXAgPSBGQUxTRSkKICAgIHsKICAgICAgICBtYW1zX3VzZXJfY2FjaGU6OmxvYWRfdXNlcnMoJHVpZF9saXN0LCRkZWVwKTsKICAgIH0KfQoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.mams_smarty_plugins.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKZmluYWwgY2xhc3MgbWFtc19zbWFydHlfcGx1Z2lucwp7CiAgICBwcml2YXRlIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkge30KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1hbXNfdXNlcl9vcHRpb25zKCRwYXJhbXMsICR0ZW1wbGF0ZSkKICAgIHsKICAgICAgICAkc2VsZWN0ZWQgPSB4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdzZWxlY3RlZCcpOwogICAgICAgICRub3RkaXNhYmxlZCA9IHh0X3BhcmFtOjpnZXRfYm9vbCgkcGFyYW1zLCdub3RkaXNhYmxlZCcpOwogICAgICAgICRub3RleHBpcmVkID0geHRfcGFyYW06OmdldF9ib29sKCRwYXJhbXMsJ25vdGV4cGlyZWQnKTsKICAgICAgICAkZ3JvdXAgPSB4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCdncm91cCcpOwogICAgICAgICR1c2VfdXNlcmlkcyA9IHh0X3BhcmFtOjpnZXRfYm9vbCgkcGFyYW1zLCd1c2VfdXNlcmlkcycpOwoKICAgICAgICAvLyBnZXQgYSBsaXN0IG9mIGFsbCBvZiB0aGUgdXNlcnMgbWF0Y2hpbmcgdGhlIGNyaXRlcmlhCiAgICAgICAgJHF1ZXJ5ID0gbmV3IG1hbXNfdXNlcl9xdWVyeTsKICAgICAgICBpZiggJGdyb3VwICkgJHF1ZXJ5LT5hZGRfYW5kX29wdCggbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfR1JPVVAsICRncm91cCApOwogICAgICAgIGlmKCAkbm90ZXhwaXJlZCApICRxdWVyeS0+YWRkX2FuZF9vcHQoIG1hbXNfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX05PVEVYUElSRUQgKTsKICAgICAgICBpZiggJG5vdGRpc2FibGVkICkgJHF1ZXJ5LT5hZGRfYW5kX29wdCggbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfTk9URElTQUJMRUQgKTsKICAgICAgICAkcnMgPSAkcXVlcnktPmV4ZWN1dGUoKTsKICAgICAgICBpZiggISRycyB8fCAhJHJzLT5nZXRfZm91bmRfcm93cygpICkgcmV0dXJuOwoKICAgICAgICAkb3V0ID0gbnVsbDsKICAgICAgICAkc2VsZm10ID0gJzxvcHRpb24gdmFsdWU9IiVzIiBzZWxlY3RlZD4lczwvb3B0aW9uPicuIlxuIjsKICAgICAgICAkZmZtdCA9ICc8b3B0aW9uIHZhbHVlPSIlcyI+JXM8L29wdGlvbj4nLiJcbiI7CiAgICAgICAgd2hpbGUoICRycyAmJiAhJHJzLT5FT0YoKSApIHsKICAgICAgICAgICAgJHJlYyA9ICRycy0+ZmllbGRzOwogICAgICAgICAgICAkdmFsID0gJHJlY1sndXNlcm5hbWUnXTsKICAgICAgICAgICAgaWYoICR1c2VfdXNlcmlkcyApICR2YWwgPSAkcmVjWydpZCddOwogICAgICAgICAgICAkdXNlcm5hbWUgPSAkcmVjWyd1c2VybmFtZSddOwogICAgICAgICAgICBpZiggJHNlbGVjdGVkICE9ICR2YWwgKSB7CiAgICAgICAgICAgICAgICAkb3V0IC49IHNwcmludGYoJGZmbXQsJHZhbCwkdXNlcm5hbWUpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJG91dCAuPSBzcHJpbnRmKCRzZWxmbXQsJHZhbCwkdXNlcm5hbWUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRycy0+TW92ZU5leHQoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYW1zX3Byb3RlY3QoJHBhcmFtcywkY29udGVudCwmJHNtYXJ0eSwkcmVwZWF0KQogICAgewogICAgICAgIGlmKCAhJGNvbnRlbnQgKSByZXR1cm47CgogICAgICAgICRtYW1zID0gXGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfTUFNUyk7CiAgICAgICAgaWYoICEkbWFtcyApIHJldHVybjsKICAgICAgICBpZiggISgkdWlkID0gJG1hbXMtPkxvZ2dlZEluSWQoKSkgKSByZXR1cm47CgogICAgICAgICRncm91cHMgPSBudWxsOwogICAgICAgIGlmKCBpc3NldCgkcGFyYW1zWydncm91cCddKSApIHsKICAgICAgICAgICAgJGdyb3VwcyA9IGV4cGxvZGUoJywnLCRwYXJhbXNbJ2dyb3VwJ10pOwogICAgICAgICAgICBmb3JlYWNoKCAkZ3JvdXBzIGFzICYkZ3JwICkgewogICAgICAgICAgICAgICAgJGdycCA9IHRyaW0oJGdycCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiggaXNzZXQoJHBhcmFtc1snZ3JvdXBzJ10pICkgewogICAgICAgICAgICAkZ3JvdXBzID0gZXhwbG9kZSgnLCcsJHBhcmFtc1snZ3JvdXBzJ10pOwogICAgICAgICAgICBmb3JlYWNoKCAkZ3JvdXBzIGFzICYkZ3JwICkgewogICAgICAgICAgICAgICAgJGdycCA9IHRyaW0oJGdycCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmKCAhaXNfYXJyYXkoJGdyb3VwcykgfHwgY291bnQoJGdyb3VwcykgPT0gMCApIHsKICAgICAgICAgICAgLy8gZW1wdHkgZ3JvdXBzIGFycmF5IHNwZWNpZmllZC4KICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgLy8gY29udmVydCBncm91cCBuYW1lcyB0byBpZHMKICAgICAgICAkZ3JvdXBsaXN0ID0gJG1hbXMtPkdldEdyb3VwTGlzdCgpOwogICAgICAgICRnaWRzID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoKCRncm91cHMgYXMgJG5hbWUpIHsKICAgICAgICAgICAgaWYoIChpbnQpJG5hbWUgPiAwICkgewogICAgICAgICAgICAgICAgJGdpZHNbXSA9IChpbnQpJG5hbWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiggaXNzZXQoJGdyb3VwbGlzdFskbmFtZV0pICkgewogICAgICAgICAgICAgICAgJGdpZHNbXSA9ICRncm91cGxpc3RbJG5hbWVdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmKCAhY291bnQoJGdpZHMpICkgcmV0dXJuOwoKICAgICAgICAkbWVtYmVyZ3JvdXBzID0gJG1hbXMtPkdldE1lbWJlckdyb3Vwc0FycmF5KCR1aWQpOwogICAgICAgIGlmKCAhaXNfYXJyYXkoJG1lbWJlcmdyb3VwcykgfHwgY291bnQoJGdyb3VwcykgPT0gMCApIHsKICAgICAgICAgICAgLy8gZ3JvdXBzIHNwZWNpZmllZCwgYnV0IHVzZXIgaXMgbm90IGEgbWVtYmVyIG9mIGFueSBncm91cHMuCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIC8vIEZJTkFMIHRlc3QsIGlmIHRoZSB1c2VyIGlzIGEgbWVtYmVyIG9mIGFueSBvZiB0aGVzZSBncm91cHMsIG91dHB1dCB0aGUgY29udGVudC4KICAgICAgICBmb3IoJGkgPSAwLCAkaU1heCA9IGNvdW50KCRtZW1iZXJncm91cHMpOyAkaSA8ICRpTWF4OyAkaSsrICkgewogICAgICAgICAgICAkZ2lkID0gJG1lbWJlcmdyb3Vwc1skaV1bJ2dyb3VwaWQnXTsKICAgICAgICAgICAgaWYoIGluX2FycmF5KCRnaWQsJGdpZHMpICkgcmV0dXJuICRjb250ZW50OwogICAgICAgIH0KCiAgICAgICAgLy8gdXNlciBpcyBub3QgYSBtZW1iZXIgb2YgYW55IG9mIHRoZSBzcGVjaWZpZWQgZ3JvdXBzLgogICAgfQp9IC8vIGVuZCBvZiBjbGFzcwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.mams_std_consumer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKY2xhc3MgbWFtc19zdGRfY29uc3VtZXIgZXh0ZW5kcyBtYW1zX3B1cmVfY29uc3VtZXIKewogICAgcHVibGljIGZ1bmN0aW9uIGlzX2F1dGhlbnRpY2F0ZWQoKQogICAgewogICAgICAgICRyZXMgPSAkdGhpcy0+Z2V0X3VuaXF1ZV9pZGVudGlmaWVyKCk7CiAgICAgICAgaWYoICRyZXMgKSByZXR1cm4gVFJVRTsKICAgICAgICByZXR1cm4gRkFMU0U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9jYXBhYmlsaXRpZXMoKQogICAgewogICAgICAgICRyZXMgPSBhcnJheSgpOwogICAgICAgICRyZXNbXSA9IHNlbGY6OkNBUEFCSUxJVFlfVVNFU1REQ0hBTkdFU0VUVElOR1M7CiAgICAgICAgJHJlc1tdID0gc2VsZjo6Q0FQQUJJTElUWV9DSEFOR0VQQVNTV0Q7CiAgICAgICAgJHJlc1tdID0gc2VsZjo6Q0FQQUJJTElUWV9MSVNUR1JPVVBTOwogICAgICAgICRyZXNbXSA9IHNlbGY6OkNBUEFCSUxJVFlfRURJVEdST1VQUzsKICAgICAgICAkcmVzW10gPSBzZWxmOjpDQVBBQklMSVRZX0VESVRHUk9VUFBST1BTOwogICAgICAgICRyZXNbXSA9IHNlbGY6OkNBUEFCSUxJVFlfTElTVFBST1BTOwogICAgICAgICRyZXNbXSA9IHNlbGY6OkNBUEFCSUxJVFlfRURJVFBST1BTOwogICAgICAgICRyZXNbXSA9IHNlbGY6OkNBUEFCSUxJVFlfTElTVEdST1VQUzsKICAgICAgICAkcmVzW10gPSBzZWxmOjpDQVBBQklMSVRZX0dST1VQTUVNQkVSU0hJUDsKICAgICAgICAkcmVzW10gPSBzZWxmOjpDQVBBQklMSVRZX0RFRkFVTFRHUk9VUFM7CiAgICAgICAgJHJlc1tdID0gc2VsZjo6Q0FQQUJJTElUWV9VU0VSTkFNRTsKICAgICAgICAkbW9kID0geHRfdXRpbHM6OmdldF9tb2R1bGUoTU9EX01BTVMpOwogICAgICAgIGlmKCAkbW9kLT5HZXRQcmVmZXJlbmNlKCdhbGxvd19jaGFuZ2V1c2VybmFtZScpICkgJHJlc1tdID0gc2VsZjo6Q0FQQUJJTElUWV9DSEFOR0VVU0VSTkFNRTsKCiAgICAgICAgcmV0dXJuICRyZXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9sb2dpbl9kaXNwbGF5KCRpZCwkcmV0dXJuaWQsJHBhcmFtcykKICAgIHsKICAgICAgICAvLyB0b2RvCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfbG9nb3V0X2Rpc3BsYXkoJGlkLCRyZXR1cm5pZCwkcGFyYW1zKQogICAgewogICAgICAgIC8vIHRvZG8KICAgICAgICByZXR1cm47CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9jaGFuZ2VzZXR0aW5nc19kaXNwbGF5KCRpZCwkcmV0dXJuaWQsJHBhcmFtcykKICAgIHsKICAgICAgICAvLyB0b2RvCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfdXNlcl9pbmZvKCkKICAgIHsKICAgICAgICAvLyB0b2RvCiAgICAgICAgc3RhY2tfdHJhY2UoKTsKICAgICAgICBkaWUoJ25vdCBpbXBsZW1lbnRlZCcpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfdW5pcXVlX2lkZW50aWZpZXIoKQogICAgewogICAgICAgICRtb2R1bGUgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX01BTVMpOwogICAgICAgICRtYW5pcCA9ICRtb2R1bGUtPkdldE1hbmlwdWxhdG9yKCk7CiAgICAgICAgcmV0dXJuICRtYW5pcC0+X3N0ZF9Mb2dnZWRpbklkKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9ncm91cF9saXN0KCR3aXRoX2NvdW50ID0gRkFMU0UpCiAgICB7CiAgICAgICAgLy8gdGhpcyBtZXRob2QgZG9lc24ndCBleGFjdGx5IGxpc3RlbiB0byB0aGUgZG9jcy4KICAgICAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfbWFtc19ncm91cHMnOwogICAgICAgIGlmKCAkd2l0aF9jb3VudCApIHsKICAgICAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBnLiosY291bnQoYi51c2VyaWQpIEFTIGNvdW50IEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX2dyb3VwcyBnCiAgICAgICAgICAgICAgICBMRUZUIEpPSU4gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX2JlbG9uZ3MgYgogICAgICAgICAgICAgICAgT04gZy5pZCA9IGIuZ3JvdXBpZAogICAgICAgICAgICAgICAgR1JPVVAgQlkgZy5pZCc7CiAgICAgICAgfQogICAgICAgICRkYnIgPSAkZGItPkdldEFycmF5KCRxdWVyeSk7CiAgICAgICAgaWYoIGlzX2FycmF5KCRkYnIpICYmIGNvdW50KCRkYnIpICkgewogICAgICAgICAgICAkdG1wID0gYXJyYXkoKTsKICAgICAgICAgICAgZm9yZWFjaCggJGRiciBhcyAkb25lICkgewogICAgICAgICAgICAgICAgJHRtcFskb25lWydpZCddXSA9ICRvbmU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICR0bXA7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkZGJyOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfZ3JvdXBfbWVtYmVyc2hpcCgkdXNlcmlkKQogICAgewogICAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICAgICAgJHEgPSAiU0VMRUNUIGdyb3VwaWQgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX21hbXNfYmVsb25ncyBXSEVSRSB1c2VyaWQ9PyI7CiAgICAgICAgJGRiciA9ICRkYi0+R2V0Q29sKCRxLGFycmF5KCR1c2VyaWQpKTsKICAgICAgICByZXR1cm4gJGRicjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2RlZmF1bHRfZ3JvdXBzKCkKICAgIHsKICAgICAgICAkbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKTsKICAgICAgICAkdG1wID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9ncm91cCcpOwogICAgICAgIGlmKCAoaW50KSR0bXAgPiAwICkgcmV0dXJuIGFycmF5KCR0bXApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfdXNlcm5hbWUoJGlkZW50aWZpZXIgPSBudWxsKQogICAgewogICAgICAgIGlmKCAhJGlkZW50aWZpZXIgKSAkaWRlbnRpZmllciA9ICR0aGlzLT5nZXRfdW5pcXVlX2lkZW50aWZpZXIoKTsKICAgICAgICAkcm93ID0gbWFtc191c2VyX2NhY2hlOjpnZXRfdXNlcigkaWRlbnRpZmllcik7CiAgICAgICAgaWYoICEkcm93ICkgcmV0dXJuIEZBTFNFOwogICAgICAgIHJldHVybiAkcm93Wyd1c2VybmFtZSddOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfdXNlcm5hbWVfcHJvbXB0KCkKICAgIHsKICAgICAgICAkbWFtcyA9IGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfTUFNUyk7CiAgICAgICAgaWYoICRtYW1zLT5HZXRQcmVmZXJlbmNlKCd1c2VybmFtZV9pc19lbWFpbCcpICkgcmV0dXJuICRtYW1zLT5MYW5nKCdwcm9tcHRfZW1haWwnKTsKICAgICAgICByZXR1cm4gJG1hbXMtPkxhbmcoJ3Byb21wdF91c2VybmFtZScpOwogICAgfQoKCiAgICBwdWJsaWMgZnVuY3Rpb24gdmFsaWRhdGVfdXNlcm5hbWUoJHVzZXJuYW1lLCRjaGVja19lbWFpbF9hZGRyID0gRkFMU0UsJHVpZCA9IC0xKQogICAgewogICAgICAgIC8vIGEgdXNlcm5hbWUgaXMgdmFsaWQsIGlmIGl0J3MgbGVuZ3RoIGlzCiAgICAgICAgLy8gd2l0aGluIGNlcnRhaW4gcmFuZ2VzLCBhbmQgaXQgY29udGFpbnMKICAgICAgICAvLyBvbmx5IGFscGhhbnVtZXJpY3MKICAgICAgICAkbW9kdWxlID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKTsKICAgICAgICAkbWlubGVuID0gJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgnbWluX3VzZXJuYW1lbGVuZ3RoJywgNCApOwogICAgICAgICRtYXhsZW4gPSAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdtYXhfdXNlcm5hbWVsZW5ndGgnLCAyMCApOwogICAgICAgIGlmKCBzdHJsZW4oICR1c2VybmFtZSApIDwgJG1pbmxlbiB8fCBzdHJsZW4oICR1c2VybmFtZSApID4gJG1heGxlbiApIHJldHVybiBmYWxzZTsKICAgICAgICBpZiAoJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgndXNlcm5hbWVfaXNfZW1haWwnKSkgewogICAgICAgICAgICAkdGVzdCA9ICRtb2R1bGUtPklzVmFsaWRFbWFpbEFkZHJlc3MoJHVzZXJuYW1lLCR1aWQsJGNoZWNrX2VtYWlsX2FkZHIpOwogICAgICAgICAgICBpZiAoJHRlc3RbMF0gPT09IGZhbHNlKSByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoICFwcmVnX21hdGNoKCAnL15bYS16QS1aMC05XF9cLVxzXC5cQFwrXSokLycsICR1c2VybmFtZSApICkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0cnVlOwogICAgfQp9IC8vIGVuZCBvZiBjbGFzcwoKIyBFT0YKIwo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.mams_user_cache.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKLyoqCiAqIHRoaXMgaXMgYW4gaW50ZXJuYWwgY2xhc3MgLi4uZG8gbm8gdXNlCiAqLwoKZmluYWwgY2xhc3MgbWFtc191c2VyX2NhY2hlCnsKICBwcml2YXRlIHN0YXRpYyAkX3VzZXJzID0gYXJyYXkoKTsKICBwcml2YXRlIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkge30KCiAgLyoqCiAgICogR2V0IHVzZXIgaW5mb3JtYXRpb24gZm9yIGEgdWlkCiAgICogd2lsbCByZXR1cm4gZGVlcCBpbmZvcm1hdGlvbiBpZiBhbHJlYWR5IGxvYWRlZAogICAqIHdpbGwgbm90IGxvYWQgYW55IGluZm8KICAgKiovCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfdXNlcl9ub2xvYWQoJHVpZCkKICB7CiAgICAkdWlkID0gKGludCkkdWlkOwogICAgaWYoICR1aWQgPD0gMCApIHJldHVybjsKICAgIGlmKCAhaXNzZXQoc2VsZjo6JF91c2Vyc1skdWlkXSkgKSByZXR1cm47CgogICAgcmV0dXJuIHNlbGY6OiRfdXNlcnNbJHVpZF07CiAgfQoKICAvKioKICAgKiBHZXQgdXNlciBpbmZvcm1hdGlvbiBmb3IgYSB1aWQKICAgKiB3aWxsIHJldHVybiBkZWVwIGluZm8gaWYgaXQgaXMgYWxyZWFkeSBsb2FkZWQsIGV2ZW4gaWYgJGRlZXAgPSBGQUxTRQogICAqIHdpbGwgbG9hZCB0aGUgdXNlciBpZiBub3QgaW4gbWVtb3J5CiAgICoqLwogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X3VzZXIoJHVpZCwkZGVlcCA9IEZBTFNFKQogIHsKICAgICR1aWQgPSAoaW50KSR1aWQ7CiAgICBpZiggJHVpZCA8PSAwICkgcmV0dXJuOwogICAgaWYoICFpc3NldChzZWxmOjokX3VzZXJzWyR1aWRdKSB8fCAoJGRlZXAgJiYgIWlzc2V0KHNlbGY6OiRfdXNlcnNbJHVpZF1bJ2Zwcm9wcyddKSkgKSB7CiAgICAgICAgc2VsZjo6bG9hZF91c2VycyggWyAkdWlkIF0sJGRlZXApOwogICAgfQogICAgcmV0dXJuIHNlbGY6OmdldF91c2VyX25vbG9hZCgkdWlkKTsKICB9CgogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2V0X3VzZXIoJHVpbmZvKQogIHsKICAgIGlmKCAhaXNfYXJyYXkoJHVpbmZvKSApIHJldHVybiBGQUxTRTsKICAgIGlmKCAhaXNzZXQoJHVpbmZvWydpZCddKSApIHJldHVybiBGQUxTRTsKICAgICR1aWQgPSAoaW50KSR1aW5mb1snaWQnXTsKICAgIGlmKCAkdWlkIDw9IDAgKSByZXR1cm4gRkFMU0U7CiAgICBpZiggIWlzc2V0KCR1aW5mb1sndXNlcm5hbWUnXSkgKSByZXR1cm4gRkFMU0U7CgogICAgc2VsZjo6JF91c2Vyc1skdWlkXSA9ICR1aW5mbzsKICAgIHJldHVybiBUUlVFOwogIH0KCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzZXRfbmV3X3VzZXIoJHVpbmZvKQogIHsKICAgIGlmKCAhaXNfYXJyYXkoJHVpbmZvKSApIHJldHVybiBGQUxTRTsKICAgIGlmKCAhaXNzZXQoJHVpbmZvWydpZCddKSApIHJldHVybiBGQUxTRTsKICAgICR1aWQgPSAoaW50KSR1aW5mb1snaWQnXTsKICAgIGlmKCAkdWlkIDw9IDAgKSByZXR1cm4gRkFMU0U7CiAgICBpZiggIWlzc2V0KCR1aW5mb1sndXNlcm5hbWUnXSkgKSByZXR1cm4gRkFMU0U7CiAgICBpZiggaXNzZXQoc2VsZjo6JF91c2Vyc1skdWlkXSkgKSByZXR1cm4gRkFMU0U7CgogICAgc2VsZjo6JF91c2Vyc1skdWluZm9bJ2lkJ11dID0gJHVpbmZvOwogICAgcmV0dXJuIFRSVUU7CiAgfQoKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRlbF91c2VyKCR1aWQpCiAgewogICAgJHVpZCA9IChpbnQpJHVpZDsKICAgIGlmKCAkdWlkIDw9IDAgKSByZXR1cm4gRkFMU0U7CiAgICBpZiggIWlzc2V0KHNlbGY6OiRfdXNlcnNbJHVpZF0pICkgcmV0dXJuIEZBTFNFOwoKICAgIHVuc2V0KHNlbGY6OiRfdXNlcnNbJHVpZF0pOwogICAgcmV0dXJuIFRSVUU7CiAgfQoKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNsZWFyX2FsbCgpCiAgewogICAgc2VsZjo6JF91c2VycyA9IGFycmF5KCk7CiAgfQoKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGxvYWRfdXNlcnMoJHVpZF9saXN0LCRkZWVwID0gRkFMU0UpCiAgewogICAgICBpZiggIWlzX2FycmF5KCR1aWRfbGlzdCkgfHwgY291bnQoJHVpZF9saXN0KSA9PSAwICkgcmV0dXJuOwoKICAgICAgJG5lZWQgPSBhcnJheSgpOwogICAgICAkbmVlZF9wcm9wcyA9IGFycmF5KCk7CiAgICAgIGZvcmVhY2goICR1aWRfbGlzdCBhcyAkb25lICkgewogICAgICAgICAgJG9uZSA9IChpbnQpJG9uZTsKICAgICAgICAgIGlmKCAkb25lIDw9IDAgKSBjb250aW51ZTsKCiAgICAgICAgICBpZiggIWlzc2V0KHNlbGY6OiRfdXNlcnNbJG9uZV0pICkgJG5lZWRbXSA9ICRvbmU7CiAgICAgICAgICBpZiggIWlzc2V0KHNlbGY6OiRfdXNlcnNbJG9uZV1bJ2Zwcm9wcyddKSApICRuZWVkX3Byb3BzW10gPSAkb25lOwogICAgICB9CgogICAgICAkbmVlZCA9IGFycmF5X3VuaXF1ZSgkbmVlZCk7CiAgICAgICRuZWVkX3Byb3BzID0gYXJyYXlfdW5pcXVlKCRuZWVkX3Byb3BzKTsKICAgICAgYXNvcnQoJG5lZWQpOwogICAgICBhc29ydCgkbmVlZF9wcm9wcyk7CgogICAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgICBpZiggY291bnQoJG5lZWQpICkgewogICAgICAgICAgLy8gZ2V0IHRoZSB1c2VyIGluZm8KICAgICAgICAgICR1cXVlcnkgPSAnU0VMRUNUIHUuKixjb3VudChsaS51c2VyaWQpIEFTIGxvZ2dlZGluIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX3VzZXJzIHUKICAgICAgICAgICAgICAgICBMRUZUIEpPSU4gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX2xvZ2dlZGluIGxpIE9OIHUuaWQgPSBsaS51c2VyaWQKICAgICAgICAgICAgICAgICBXSEVSRSB1LmlkIElOICgnOwogICAgICAgICAgJHVxdWVyeSAuPSBpbXBsb2RlKCcsJywkbmVlZCkuJykgR1JPVVAgQlkgdS5pZCBPUkRFUiBCWSB1LmlkJzsKICAgICAgICAgICR1aW5mbyA9ICRkYi0+R2V0QXJyYXkoJHVxdWVyeSk7CiAgICAgICAgICBmb3JlYWNoKCR1aW5mbyBhcyAkcmVjKSB7CiAgICAgICAgICAgICAgc2VsZjo6JF91c2Vyc1skcmVjWydpZCddXSA9ICRyZWM7CiAgICAgICAgICB9CiAgICAgIH0KCiAgICBpZiggJGRlZXAgJiYgY291bnQoJG5lZWRfcHJvcHMpICkgewogICAgICAgICRtb2QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01BTVMnKTsKICAgICAgICAkZGVmbnMgPSAkbW9kLT5HZXRQcm9wZXJ0eURlZm5zKCk7CgogICAgICAgICRwcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX21hbXNfcHJvcGVydGllcyBXSEVSRSB1c2VyaWQgSU4gKCc7CiAgICAgICAgJHBxdWVyeSAuPSBpbXBsb2RlKCcsJywkbmVlZF9wcm9wcykuJykgT1JERVIgQlkgdXNlcmlkLHRpdGxlJzsKICAgICAgICAkcGluZm8gPSAkZGItPkdldEFycmF5KCRwcXVlcnkpOwoKICAgICAgICAkcHJldl91aWQgPSBudWxsOwogICAgICAgICRmcHJvcHMgPSBudWxsOwogICAgICAgIGZvcmVhY2goJHBpbmZvIGFzICRyZWMpIHsKICAgICAgICAgICAgaWYoICFlbXB0eSgkZnByb3BzKSAmJiAkcmVjWyd1c2VyaWQnXSAhPSAkcHJldl91aWQgJiYgJHByZXZfdWlkICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICR0dWlkID0gJGZwcm9wc1swXVsndXNlcmlkJ107CiAgICAgICAgICAgICAgICBpZiggIWlzc2V0KHNlbGY6OiRfdXNlcnNbJHR1aWRdKSApIHRocm93IG5ldyBDbXNFeGNlcHRpb24oJ0xvYWRlZCBwcm9wZXJ0aWVzIGZvciB1c2VyLCBidXQgbm8gdXNlciBsb2FkZWQnKTsKICAgICAgICAgICAgICAgIHNlbGY6OiRfdXNlcnNbJHR1aWRdWydmcHJvcHMnXSA9ICRmcHJvcHM7CiAgICAgICAgICAgICAgICAkZnByb3BzID0gYXJyYXkoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiggJGRlZm5zWyRyZWNbJ3RpdGxlJ11dWydlbmNyeXB0J10gKSB7CiAgICAgICAgICAgICAgICAkcmVjWydkYXRhJ10gPSAkbW9kLT5EZWNyeXB0VXNlckRhdGEoJHJlY1sndXNlcmlkJ10sJHJlY1snZGF0YSddKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkZnByb3BzW10gPSAkcmVjOwogICAgICAgICAgICAkcHJldl91aWQgPSAkcmVjWyd1c2VyaWQnXTsKICAgICAgICB9CiAgICAgICAgaWYoICFlbXB0eSgkZnByb3BzKSApIHsKICAgICAgICAgICAgJHR1aWQgPSAkZnByb3BzWzBdWyd1c2VyaWQnXTsKICAgICAgICAgICAgaWYoICFpc3NldChzZWxmOjokX3VzZXJzWyR0dWlkXSkgKSB0aHJvdyBuZXcgQ21zRXhjZXB0aW9uKCdMb2FkZWQgcHJvcGVydGllcyBmb3IgdXNlciwgYnV0IG5vIHVzZXIgbG9hZGVkJyk7CiAgICAgICAgICAgIHNlbGY6OiRfdXNlcnNbJHR1aWRdWydmcHJvcHMnXSA9ICRmcHJvcHM7CiAgICAgICAgfQogICAgfQogIH0KCn0gLy8gZW5kIG9mIGNsYXNzCgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.mams_user_query.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKY2xhc3MgbWFtc191c2VyX3F1ZXJ5X29wdAp7CiAgY29uc3QgTUFUQ0hfVVNFUklEICAgICAgICAgPSAnKnVzZXJpZConOwogIGNvbnN0IE1BVENIX1VTRVJOQU1FICAgICAgID0gJyp1c2VybmFtZSonOwogIGNvbnN0IE1BVENIX1VTRVJOQU1FX1JFICAgID0gJyp1c2VybmFtZS1yZSonOwogIGNvbnN0IE1BVENIX1BBU1NXT1JEICAgICAgID0gJypwYXNzd29yZConOwogIGNvbnN0IE1BVENIX0VYUElSRVNfTFQgICAgID0gJypleHBpcmVzLWx0Kic7CiAgY29uc3QgTUFUQ0hfTk9URVhQSVJFRCAgICAgPSAnKm5vdGV4cGlyZWQqJzsKICBjb25zdCBNQVRDSF9OT1RESVNBQkxFRCAgICA9ICcqbm90ZGlzYWJsZWQqJzsKICBjb25zdCBNQVRDSF9ESVNBQkxFRCAgICAgICA9ICcqZGlzYWJsZWQqJzsKICBjb25zdCBNQVRDSF9NVVNUVkFMSURBVEUgICA9ICcqbXVzdF92YWxpZGF0ZSonOwogIGNvbnN0IE1BVENIX0dST1VQICAgICAgICAgID0gJypncm91cConOwogIGNvbnN0IE1BVENIX0dST1VQSUQgICAgICAgID0gJypnaWQqJzsKICBjb25zdCBNQVRDSF9QUk9QRVJUWSAgICAgICA9ICcqcHJvcGVydHkqJzsKICBjb25zdCBNQVRDSF9QUk9QRVJUWV9SRSAgICA9ICcqcHJvcGVydHktcmUqJzsKICBjb25zdCBNQVRDSF9VU0VSTElTVCAgICAgICA9ICcqdXNlcmxpc3QqJzsKICBjb25zdCBNQVRDSF9VU0VSTkFNRUxJU1QgICA9ICcqdXNlcm5hbWVsaXN0Kic7CiAgY29uc3QgTUFUQ0hfTE9HR0VESU4gICAgICAgPSAnKmxvZ2dlZGluKic7CiAgY29uc3QgTUFUQ0hfQ1JFQVRFRF9HRSAgICAgPSAnKmNyZWF0ZWRfZ2UqJzsKICBjb25zdCBNQVRDSF9DUkVBVEVEX0xUICAgICA9ICcqY3JlYXRlZF9sdConOwogIGNvbnN0IE1BVENIX05PVEhBU1BST1BFUlRZID0gJypub3RoYXNwcm9wZXJ0eSonOwoKICAgIHByaXZhdGUgJF90eXBlOwogICAgcHJpdmF0ZSAkX2V4cHI7CiAgICBwcml2YXRlICRfb3B0OwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkdHlwZSwkZXhwciA9IG51bGwsJG9wdCA9IG51bGwpCiAgICB7CiAgICAgICAgc3dpdGNoKCR0eXBlKSB7CiAgICAgICAgY2FzZSBzZWxmOjpNQVRDSF9VU0VSSUQ6CiAgICAgICAgY2FzZSBzZWxmOjpNQVRDSF9VU0VSTkFNRToKICAgICAgICBjYXNlIHNlbGY6Ok1BVENIX1VTRVJOQU1FX1JFOgogICAgICAgIGNhc2Ugc2VsZjo6TUFUQ0hfUEFTU1dPUkQ6CiAgICAgICAgY2FzZSBzZWxmOjpNQVRDSF9FWFBJUkVTX0xUOgogICAgICAgIGNhc2Ugc2VsZjo6TUFUQ0hfQ1JFQVRFRF9HRToKICAgICAgICBjYXNlIHNlbGY6Ok1BVENIX0NSRUFURURfTFQ6CiAgICAgICAgY2FzZSBzZWxmOjpNQVRDSF9HUk9VUDoKICAgICAgICBjYXNlIHNlbGY6Ok1BVENIX0dST1VQSUQ6CiAgICAgICAgY2FzZSBzZWxmOjpNQVRDSF9VU0VSTElTVDoKICAgICAgICBjYXNlIHNlbGY6Ok1BVENIX1VTRVJOQU1FTElTVDoKICAgICAgICBjYXNlIHNlbGY6Ok1BVENIX05PVEhBU1BST1BFUlRZOgogICAgICAgICAgICBpZiggZW1wdHkoJGV4cHIpICkgdGhyb3cgbmV3IEV4Y2VwdGlvbignaW52YWxpZCB2YWx1ZSBmb3IgZXhwcicpOwogICAgICAgICAgICAkdGhpcy0+X3R5cGUgPSAkdHlwZTsKICAgICAgICAgICAgJHRoaXMtPl9leHByID0gJGV4cHI7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIHNlbGY6Ok1BVENIX01VU1RWQUxJREFURTsKICAgICAgICAgICAgLy8gYWxsb3dzIGFuIG9wdGlvbmFsIGV4cHJlc3Npb24gKGVpdGhlciAwIG9yIDEpCiAgICAgICAgICAgICR0aGlzLT5fdHlwZSA9ICR0eXBlOwogICAgICAgICAgICBpZiggIWVtcHR5KCRleHByKSApICR0aGlzLT5fZXhwciA9IChpbnQpICRleHByOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSBzZWxmOjpNQVRDSF9MT0dHRURJTjoKICAgICAgICBjYXNlIHNlbGY6Ok1BVENIX05PVEVYUElSRUQ6CiAgICAgICAgY2FzZSBzZWxmOjpNQVRDSF9OT1RESVNBQkxFRDoKICAgICAgICBjYXNlIHNlbGY6Ok1BVENIX0RJU0FCTEVEOgogICAgICAgICAgICAkdGhpcy0+X3R5cGUgPSAkdHlwZTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2Ugc2VsZjo6TUFUQ0hfUFJPUEVSVFlfUkU6CiAgICAgICAgICAgIGlmKCBlbXB0eSgkZXhwcikgKSB0aHJvdyBuZXcgRXhjZXB0aW9uKCdpbnZhbGlkIHZhbHVlIGZvciBleHByJyk7CiAgICAgICAgICAgIGlmKCBlbXB0eSgkb3B0KSApIHRocm93IG5ldyBFeGNlcHRpb24oJ2ludmFsaWQgb3B0IHZhbHVlJyk7CiAgICAgICAgICAgICR0aGlzLT5fdHlwZSA9ICR0eXBlOwogICAgICAgICAgICAkdGhpcy0+X2V4cHIgPSAkZXhwcjsKICAgICAgICAgICAgJHRoaXMtPl9vcHQgPSAkb3B0OwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSBzZWxmOjpNQVRDSF9QUk9QRVJUWToKICAgICAgICAgICAgaWYoIGVtcHR5KCRleHByKSApIHRocm93IG5ldyBFeGNlcHRpb24oJ2ludmFsaWQgdmFsdWUgZm9yIGV4cHInKTsKICAgICAgICAgICAgJHRoaXMtPl90eXBlID0gJHR5cGU7CiAgICAgICAgICAgICR0aGlzLT5fZXhwciA9ICRleHByOwogICAgICAgICAgICAkdGhpcy0+X29wdCA9ICRvcHQ7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdpbnZhbGlkIG1hdGNoIG9wdGlvbicpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3R5cGUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+X3R5cGU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9leHByKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPl9leHByOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfb3B0KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPl9vcHQ7CiAgICB9Cn0gLy8gY2xhc3MKCgpjbGFzcyBtYW1zX3VzZXJfcXVlcnkKewogIGNvbnN0IFJFU1VMVF9UWVBFX0lEICAgICAgICAgPSAnKmlkKic7CiAgY29uc3QgUkVTVUxUX1RZUEVfQ09VTlQgICAgICA9ICcqY291bnQqJzsKICBjb25zdCBSRVNVTFRfVFlQRV9MSVNUICAgICAgID0gJypsaXN0Kic7CiAgY29uc3QgUkVTVUxUX1RZUEVfRlVMTCAgICAgICA9ICcqZnVsbConOwogIGNvbnN0IFJFU1VMVF9TT1JUT1JERVJfQVNDICAgPSAnKmFzYyonOwogIGNvbnN0IFJFU1VMVF9TT1JUT1JERVJfREVTQyAgPSAnKmRlc2MqJzsKICBjb25zdCBSRVNVTFRfU09SVEJZX1VTRVJOQU1FID0gJyp1c2VybmFtZSonOwogIGNvbnN0IFJFU1VMVF9TT1JUQllfQ1JFQVRFRCAgPSAnKmNyZWF0ZWRhdGUqJzsKICBjb25zdCBSRVNVTFRfU09SVEJZX0VYUElSRVMgID0gJypleHBpcmVzKic7CgogICAgcHJpdmF0ZSAkX2FuZF9vcHRzICAgPSBhcnJheSgpOwogICAgcHJpdmF0ZSAkX2dyb3VwcyA9ICcnOwogICAgcHJpdmF0ZSAkX3BhZ2VsaW1pdCA9IDEwMDAwMDsKICAgIHByaXZhdGUgJF9vZmZzZXQgPSAwOwogICAgcHJpdmF0ZSAkX3Jlc3VsdF90eXBlID0gc2VsZjo6UkVTVUxUX1RZUEVfSUQ7CiAgICBwcml2YXRlICRfc29ydGJ5ID0gc2VsZjo6UkVTVUxUX1NPUlRCWV9VU0VSTkFNRTsKICAgIHByaXZhdGUgJF9zb3J0b3JkZXIgPSBzZWxmOjpSRVNVTFRfU09SVE9SREVSX0FTQzsKICAgIHByaXZhdGUgJF9kZWVwID0gRkFMU0U7CiAgICBwcml2YXRlICRfd2VicmVhZHkgPSBGQUxTRTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQogICAgewogICAgICAgIC8vIG5vdGhpbmcgaGVyZS4KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X3BhZ2VsaW1pdCgkcGFnZWxpbWl0KQogICAgewogICAgICAgICRwYWdlbGltaXQgPSAoaW50KSRwYWdlbGltaXQ7CiAgICAgICAgJHBhZ2VsaW1pdCA9IG1heCgxLCRwYWdlbGltaXQpOwogICAgICAgICR0aGlzLT5fcGFnZWxpbWl0ID0gJHBhZ2VsaW1pdDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3BhZ2VsaW1pdCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fcGFnZWxpbWl0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfb2Zmc2V0KCRuKQogICAgewogICAgICAgICR0aGlzLT5fb2Zmc2V0ID0gbWF4KDAsKGludCkkbik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9vZmZzZXQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+X29mZnNldDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X2RlZXAoJGZsYWcgPSBUUlVFKQogICAgewogICAgICAgICR0aGlzLT5fZGVlcCA9IChib29sKSRmbGFnOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfZGVlcCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fZGVlcDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0X3dlYnJlYWR5KCRmbGFnID0gVFJVRSkKICAgIHsKICAgICAgICAkdGhpcy0+X3dlYnJlYWR5ID0gKGJvb2wpJGZsYWc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF93ZWJyZWFkeSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fd2VicmVhZHk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldF9yZXN1bHRfdHlwZSgkdHlwZSkKICAgIHsKICAgICAgICAvLyBjdXJyZW50bHkgbm90IHVzZWQgaW4gdGhlIHJlc3VsdHNldCwgbWF5IHJlbW92ZQogICAgICAgIHN3aXRjaCggJHR5cGUgKSB7CiAgICAgICAgY2FzZSBzZWxmOjpSRVNVTFRfVFlQRV9JRDoKICAgICAgICBjYXNlIHNlbGY6OlJFU1VMVF9UWVBFX0NPVU5UOgogICAgICAgIGNhc2Ugc2VsZjo6UkVTVUxUX1RZUEVfTElTVDoKICAgICAgICBjYXNlIHNlbGY6OlJFU1VMVF9UWVBFX0ZVTEw6CiAgICAgICAgICAgICR0aGlzLT5fcmVzdWx0X3R5cGUgPSAkdHlwZTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBDbXNFeGNlcHRpb24oJ0ludmFsaWQgcmVzdWx0IHR5cGUgJy4kdHlwZSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfcmVzdWx0X3R5cGUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+X3Jlc3VsdF90eXBlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfc29ydGJ5KCR2YWwpCiAgICB7CiAgICAgICAgc3dpdGNoKCAkdmFsICkgewogICAgICAgIGNhc2Ugc2VsZjo6UkVTVUxUX1NPUlRCWV9VU0VSTkFNRToKICAgICAgICBjYXNlIHNlbGY6OlJFU1VMVF9TT1JUQllfQ1JFQVRFRDoKICAgICAgICBjYXNlIHNlbGY6OlJFU1VMVF9TT1JUQllfRVhQSVJFUzoKICAgICAgICAgICAgJHRoaXMtPl9zb3J0YnkgPSAkdmFsOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IENtc0V4Y2VwdGlvbignSW52YWxpZCBzb3J0YnkgdmFsdWU6ICcuJHZhbCk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfc29ydGJ5KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPl9zb3J0Ynk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldF9zb3J0b3JkZXIoJHZhbCkKICAgIHsKICAgICAgICBzd2l0Y2goICR2YWwgKSB7CiAgICAgICAgY2FzZSBzZWxmOjpSRVNVTFRfU09SVE9SREVSX0FTQzoKICAgICAgICBjYXNlIHNlbGY6OlJFU1VMVF9TT1JUT1JERVJfREVTQzoKICAgICAgICAgICAgJHRoaXMtPl9zb3J0b3JkZXIgPSAkdmFsOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IENtc0V4Y2VwdGlvbignSW52YWxpZCBzb3J0b3JkZXIgdmFsdWU6ICcuJHZhbCk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfc29ydG9yZGVyKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPl9zb3J0b3JkZXI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFkZF9hbmRfb3B0KCR0eXBlLCR2YWx1ZSA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPl9hbmRfb3B0c1tdID0gbmV3IG1hbXNfdXNlcl9xdWVyeV9vcHQoJHR5cGUsJHZhbHVlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkX2FuZF9vcHRfb2JqKG1hbXNfdXNlcl9xdWVyeV9vcHQmICRvcHQpCiAgICB7CiAgICAgICAgJHRoaXMtPl9hbmRfb3B0c1tdID0gJG9wdDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY291bnRfb3B0cygpCiAgICB7CiAgICAgICAgcmV0dXJuIGNvdW50KCR0aGlzLT5fYW5kX29wdHMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfb3B0cygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fYW5kX29wdHM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uICZleGVjdXRlKCkKICAgIHsKICAgICAgICAkcnMgPSBuZXcgbWFtc191c2VyX3F1ZXJ5X3Jlc3VsdHNldCgkdGhpcyk7CiAgICAgICAgcmV0dXJuICRyczsKICAgIH0KCn0gLy8gZW5kIG9mIGNsYXNzCg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.mams_user_query_resultset.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKZmluYWwgY2xhc3MgbWFtc191c2VyX3F1ZXJ5X3Jlc3VsdHNldAp7CiAgICBwcml2YXRlICRfcXVlcnk7CiAgICBwcml2YXRlICRfZXhlY3V0ZWQ7CiAgICBwcml2YXRlICRfcnM7CiAgICBwcml2YXRlICRfZm91bmRfcm93czsKICAgIHByaXZhdGUgJF9ncm91cHM7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KG1hbXNfdXNlcl9xdWVyeSAmJHF1ZXJ5KQogICAgewogICAgICAgICR0aGlzLT5fcXVlcnkgPSAkcXVlcnk7CiAgICAgICAgJHRoaXMtPl9leGVjdXRlKCRxdWVyeSk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBfZ2V0X2dyb3VwcygpCiAgICB7CiAgICAgICAgaWYoICFpc19hcnJheSgkdGhpcy0+X2dyb3VwcykgKSB7CiAgICAgICAgICAgICRtYW1zID0geHRfdXRpbHM6OmdldF9tb2R1bGUoJ01BTVMnKTsKICAgICAgICAgICAgJHRtcCA9ICRtYW1zLT5HZXRHcm91cExpc3RGdWxsKCk7CiAgICAgICAgICAgIGlmKCBpc19hcnJheSgkdG1wKSAmJiBjb3VudCgkdG1wKSApICR0aGlzLT5fZ3JvdXBzID0geHRfYXJyYXk6OnRvX2hhc2goJHRtcCwnZ3JvdXBuYW1lJyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkdGhpcy0+X2dyb3VwczsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9leGVjdXRlKCkKICAgIHsKICAgICAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgICAgICR3aGVyZSAgPSBhcnJheSgpOwogICAgICAgICRxcGFybXMgPSBhcnJheSgpOwogICAgICAgICRqb2lucyAgPSBhcnJheSgpOwogICAgICAgICRqY291bnQgPSAwOwogICAgICAgICRoYXZpbmcgPSBudWxsOwoKICAgICAgICAkcXJlYyA9ICdTRUxFQ1QgU1FMX0NBTENfRk9VTkRfUk9XUyB1LiosY291bnQobGkudXNlcmlkKSBBUyBsb2dnZWRpbiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfbWFtc191c2VycyB1JzsKICAgICAgICAkam9pbnNbXSA9ICdMRUZUIEpPSU4gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tYW1zX2xvZ2dlZGluIGxpIE9OIHUuaWQgPSBsaS51c2VyaWQnOwoKICAgICAgICBmb3JlYWNoKCAkdGhpcy0+X3F1ZXJ5LT5nZXRfb3B0cygpIGFzICRvcHQgKSB7CiAgICAgICAgICAgIHN3aXRjaCggJG9wdC0+Z2V0X3R5cGUoKSApIHsKICAgICAgICAgICAgY2FzZSBtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9VU0VSSUQ6CiAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICd1LmlkID0gPyc7CiAgICAgICAgICAgICAgICAkcXBhcm1zW10gPSAoaW50KSAkb3B0LT5nZXRfZXhwcigpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIG1hbXNfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX1VTRVJOQU1FOgogICAgICAgICAgICAgICAgJHdoZXJlW10gID0gJ3UudXNlcm5hbWUgTElLRSA/JzsKICAgICAgICAgICAgICAgICRleHByID0gc3RyX3JlcGxhY2UoJyonLCclJywkb3B0LT5nZXRfZXhwcigpKTsKICAgICAgICAgICAgICAgICRleHByID0gc3RyX3JlcGxhY2UoJyUlJywnJScsJGV4cHIpOwogICAgICAgICAgICAgICAgJHFwYXJtc1tdID0gJGV4cHI7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfVVNFUk5BTUVfUkU6CiAgICAgICAgICAgICAgICAkd2hlcmVbXSAgPSAndS51c2VybmFtZSBSRUdFWFAgJy4kZGItPnFzdHIoJG9wdC0+Z2V0X2V4cHIoKSk7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfUEFTU1dPUkQ6CiAgICAgICAgICAgICAgICAkd2hlcmVbXSAgPSAndS5wYXNzd29yZCA9ID8nOwogICAgICAgICAgICAgICAgJHFwYXJtc1tdID0gJG9wdC0+Z2V0X2V4cHIoKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9OT1RFWFBJUkVEOgogICAgICAgICAgICAgICAgJHRtcCA9ICRkYi0+RGJUaW1lU3RhbXAodGltZSgpIC0gMzApOwogICAgICAgICAgICAgICAgJHdoZXJlW10gPSAidS5leHBpcmVzID4geyR0bXB9IjsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9OT1RESVNBQkxFRDoKICAgICAgICAgICAgICAgICR3aGVyZVtdID0gInUuZGlzYWJsZWQgPSAwIjsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9ESVNBQkxFRDoKICAgICAgICAgICAgICAgICR3aGVyZVtdID0gInUuZGlzYWJsZWQgPSAxIjsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9NVVNUVkFMSURBVEU6CiAgICAgICAgICAgICAgICAkZXhwciA9IChpbnQpICRvcHQtPmdldF9leHByKCk7CiAgICAgICAgICAgICAgICBpZiggZW1wdHkoJGV4cHIpICkgewogICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gInUubXVzdF92YWxpZGF0ZSA9IDEiOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICJ1Lm11c3RfdmFsaWRhdGUgPSB7JGV4cHJ9IjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9FWFBJUkVTX0xUOgogICAgICAgICAgICAgICAgJHRtcCA9ICRkYi0+RGJUaW1lU3RhbXAoJG9wdC0+Z2V0X2V4cHIoKSk7CiAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICJ1LmV4cGlyZXMgPCB7JHRtcH0iOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIG1hbXNfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX0NSRUFURURfR0U6CiAgICAgICAgICAgICAgICAkdG1wID0gJGRiLT5EYlRpbWVTdGFtcCgkb3B0LT5nZXRfZXhwcigpKTsKICAgICAgICAgICAgICAgICR3aGVyZVtdID0gInUuY3JlYXRlZGF0ZSA+PSB7JHRtcH0iOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIG1hbXNfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX0NSRUFURURfTFQ6CiAgICAgICAgICAgICAgICAkdG1wID0gJGRiLT5EYlRpbWVTdGFtcCgkb3B0LT5nZXRfZXhwcigpKTsKICAgICAgICAgICAgICAgICR3aGVyZVtdID0gInUuY3JlYXRlZGF0ZSA8IHskdG1wfSI7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfR1JPVVA6CiAgICAgICAgICAgICAgICAkdG1wID0gJHRoaXMtPl9nZXRfZ3JvdXBzKCk7CiAgICAgICAgICAgICAgICBpZiggIWlzc2V0KCR0bXBbJG9wdC0+Z2V0X2V4cHIoKV0pICkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ2ludmFsaWQgdmFsdWUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRqb2luc1tdID0gJ0xFRlQgSk9JTiAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX21hbXNfYmVsb25ncyBibCBPTiB1LmlkID0gYmwudXNlcmlkJzsKICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJ2JsLmdyb3VwaWQgPSA/JzsKICAgICAgICAgICAgICAgICRxcGFybXNbXSA9ICR0bXBbJG9wdC0+Z2V0X2V4cHIoKV1bJ2lkJ107CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfTE9HR0VESU46CiAgICAgICAgICAgICAgICAkaGF2aW5nID0gJ2NvdW50KGxpLnVzZXJpZCkgPiAwJzsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9HUk9VUElEOgogICAgICAgICAgICAgICAgJGV4cHIgPSAkb3B0LT5nZXRfZXhwcigpOwogICAgICAgICAgICAgICAgaWYoIGlzX2FycmF5KCRleHByKSApIHsKICAgICAgICAgICAgICAgICAgICAkdG1wID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoKCAkZXhwciBhcyAkb25lICkgewogICAgICAgICAgICAgICAgICAgICAgICAkb25lID0gKGludCkkb25lOwogICAgICAgICAgICAgICAgICAgICAgICBpZiggJG9uZSA8IDEgKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoICFpbl9hcnJheSgkb25lLCR0bXApICkgJHRtcFtdID0gJG9uZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYoIGNvdW50KCR0bXApID09IDAgKSB0aHJvdyBuZXcgRXhjZXB0aW9uKCdObyB2YWxpZCBncm91cCBpZHMgc3BlY2lmaWVkJyk7CiAgICAgICAgICAgICAgICAgICAgJGpvaW5zW10gPSAnTEVGVCBKT0lOICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfbWFtc19iZWxvbmdzIGJsIE9OIHUuaWQgPSBibC51c2VyaWQnOwogICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJ2JsLmdyb3VwaWQgSU4gKCcuaW1wbG9kZSgnLCcsJHRtcCkuJyknOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJGpvaW5zW10gPSAnTEVGVCBKT0lOICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfbWFtc19iZWxvbmdzIGJsIE9OIHUuaWQgPSBibC51c2VyaWQnOwogICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJ2JsLmdyb3VwaWQgPSA/JzsKICAgICAgICAgICAgICAgICAgICAkcXBhcm1zW10gPSAkZXhwcjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9VU0VSTkFNRUxJU1Q6CiAgICAgICAgICAgICAgICAkdG1wID0gJG9wdC0+Z2V0X2V4cHIoKTsKICAgICAgICAgICAgICAgIGlmKCAhaXNfYXJyYXkoJHRtcCkgKSAkdG1wID0gZXhwbG9kZSgnLCcsJHRtcCk7CiAgICAgICAgICAgICAgICAkdG1wMiA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICBmb3JlYWNoKCAkdG1wIGFzICRvbmUgKSB7CiAgICAgICAgICAgICAgICAgICAgJHRtcDJbXSA9ICInIi50cmltKCRvbmUpLiInIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICR0bXAyID0gYXJyYXlfdW5pcXVlKCR0bXAyKTsKICAgICAgICAgICAgICAgICR3aGVyZVtdID0gJ3UudXNlcm5hbWUgSU4gKCcuaW1wbG9kZSgnLCcsJHRtcDIpLicpJzsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9VU0VSTElTVDoKICAgICAgICAgICAgICAgICR0bXAgPSAkb3B0LT5nZXRfZXhwcigpOwogICAgICAgICAgICAgICAgaWYoICFpc19hcnJheSgkdG1wKSApICR0bXAgPSBleHBsb2RlKCcsJywkdG1wKTsKICAgICAgICAgICAgICAgICR0bXAyID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgIGZvcmVhY2goICR0bXAgYXMgJG9uZSApIHsKICAgICAgICAgICAgICAgICAgICBpZiggKGludCkkb25lIDwgMSApIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICR0bXAyW10gPSAoaW50KSRvbmU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkdG1wMiA9IGFycmF5X3VuaXF1ZSgkdG1wMik7CiAgICAgICAgICAgICAgICAkd2hlcmVbXSA9ICd1LmlkIElOICgnLmltcGxvZGUoJywnLCR0bXAyKS4nKSc7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfUFJPUEVSVFk6CiAgICAgICAgICAgICAgICAkbWFtcyA9IHh0X3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKTsKICAgICAgICAgICAgICAgICRkZWZucyA9ICRtYW1zLT5HZXRQcm9wZXJ0eURlZm5zKCk7CiAgICAgICAgICAgICAgICBpZiggIWluX2FycmF5KCRvcHQtPmdldF9leHByKCksYXJyYXlfa2V5cygkZGVmbnMpKSApIHRocm93IG5ldyBFeGNlcHRpb24oJ2ludmFsaWQgdmFsdWUnKTsKICAgICAgICAgICAgICAgICRqY291bnQrKzsKICAgICAgICAgICAgICAgICRqb2luc1tdID0gJ0xFRlQgSk9JTiAnLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX21hbXNfcHJvcGVydGllcyBwcnskamNvdW50fQogICAgICAgICAgICAgICAgICAgIE9OIHByeyRqY291bnR9LnVzZXJpZCA9IHUuaWQiOwogICAgICAgICAgICAgICAgJHdoZXJlW10gPSAicHJ7JGpjb3VudH0udGl0bGUgPSAnIi4kb3B0LT5nZXRfZXhwcigpLiInIjsKICAgICAgICAgICAgICAgIGlmKCAkb3B0LT5nZXRfb3B0KCkgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYoIHN0cnN0cigkb3B0LT5nZXRfb3B0KCksJyonKSA9PT0gRkFMU0UgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZVtdID0gInByeyRqY291bnR9LmRhdGEgPSAnIi4kb3B0LT5nZXRfb3B0KCkuIiciOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHdoZXJlW10gPSAicHJ7JGpjb3VudH0uZGF0YSBMSUtFICciLnN0cl9yZXBsYWNlKCcqJywnJScsJG9wdC0+Z2V0X29wdCgpKS4iJyI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIG1hbXNfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX05PVEhBU1BST1BFUlRZOgogICAgICAgICAgICAgICAgLy8gdGVzdCBpZiB0aGUgdXNlciBET0VTIE5PVCBoYXZlIGEgc3BlY2lmaWMgcHJvcGVydHkKICAgICAgICAgICAgICAgICR3aGVyZVtdID0gInUuaWQgTk9UIElOIChTRUxFQ1QgdXNlcmlkIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9tYW1zX3Byb3BlcnRpZXMgV0hFUkUgdGl0bGUgPSAneyRvcHQtPmdldF9leHByKCl9JykiOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIG1hbXNfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX1BST1BFUlRZX1JFOgogICAgICAgICAgICAgICAgJG1hbXMgPSB4dF91dGlsczo6Z2V0X21vZHVsZSgnTUFNUycpOwogICAgICAgICAgICAgICAgJGRlZm5zID0gJG1hbXMtPkdldFByb3BlcnR5RGVmbnMoKTsKICAgICAgICAgICAgICAgIGlmKCAhaW5fYXJyYXkoJG9wdC0+Z2V0X2V4cHIoKSxhcnJheV9rZXlzKCRkZWZucykpICkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ2ludmFsaWQgdmFsdWUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRqY291bnQrKzsKICAgICAgICAgICAgICAgICRqb2luc1tdID0gJ0xFRlQgSk9JTiAnLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX21hbXNfcHJvcGVydGllcyBwcnskamNvdW50fQogICAgICAgICAgICAgICAgICAgICAgT04gcHJ7JGpjb3VudH0udXNlcmlkID0gdS5pZAogICAgICAgICAgICAgICAgICAgICBBTkQgcHJ7JGpjb3VudH0udGl0bGUgPSAnIi4kb3B0LT5nZXRfZXhwcigpLiInIjsKICAgICAgICAgICAgICAgICR3aGVyZVtdID0gInByeyRqY291bnR9LmRhdGEgUkVHRVhQICIuJGRiLT5xc3RyKCRvcHQtPmdldF9vcHQoKSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gYXNzZW1ibHkKICAgICAgICBpZiggY291bnQoJGpvaW5zKSApICRxcmVjIC49ICcgJy5pbXBsb2RlKCcgJywkam9pbnMpOwogICAgICAgIGlmKCBjb3VudCgkd2hlcmUpICkgJHFyZWMgLj0gIlxuV0hFUkUgIi5pbXBsb2RlKCcgQU5EICcsJHdoZXJlKTsKCiAgICAgICAgJG9yZGVyYnkgPSAndXNlcm5hbWUnOwogICAgICAgIHN3aXRjaCggJHRoaXMtPl9xdWVyeS0+Z2V0X3NvcnRieSgpICkgewogICAgICAgIGNhc2UgbWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVEJZX1VTRVJOQU1FOgogICAgICAgICAgICAkb3JkZXJieSA9ICd1c2VybmFtZSc7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgbWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVEJZX0NSRUFURUQ6CiAgICAgICAgICAgICRvcmRlcmJ5ID0gJ2NyZWF0ZWRhdGUnOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIG1hbXNfdXNlcl9xdWVyeTo6UkVTVUxUX1NPUlRCWV9FWFBJUkVTOgogICAgICAgICAgICAkb3JkZXJieSA9ICdleHBpcmVzJzsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBzd2l0Y2goICR0aGlzLT5fcXVlcnktPmdldF9zb3J0b3JkZXIoKSApIHsKICAgICAgICBjYXNlIG1hbXNfdXNlcl9xdWVyeTo6UkVTVUxUX1NPUlRPUkRFUl9BU0M6CiAgICAgICAgICAgICRvcmRlcmJ5IC49ICcgQVNDJzsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBtYW1zX3VzZXJfcXVlcnk6OlJFU1VMVF9TT1JUT1JERVJfREVTQzoKICAgICAgICAgICAgJG9yZGVyYnkgLj0gJyBERVNDJzsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICAkcXJlYyAuPSAnIEdST1VQIEJZIHUuaWQnOwogICAgICAgIGlmKCAkaGF2aW5nICkgJHFyZWMgLj0gJyBIQVZJTkcgJy4kaGF2aW5nOwogICAgICAgICRxcmVjIC49ICcgT1JERVIgQlkgJy4kb3JkZXJieTsKCiAgICAgICAgJHRoaXMtPl9ycyA9ICRkYi0+U2VsZWN0TGltaXQoJHFyZWMsJHRoaXMtPl9xdWVyeS0+Z2V0X3BhZ2VsaW1pdCgpLCR0aGlzLT5fcXVlcnktPmdldF9vZmZzZXQoKSwkcXBhcm1zKTsKICAgICAgICBpZiggISR0aGlzLT5fcnMgKSB0aHJvdyBuZXcgRXhjZXB0aW9uKCdJTlRFUk5BTCBFUlJPUjogUXVlcnkgZmFpbGVkIC0gJy4kZGItPnNxbC4nIC0tICcuJGRiLT5FcnJvck1zZygpKTsKICAgICAgICAkdGhpcy0+X2ZvdW5kX3Jvd3MgPSAkZGItPkdldE9uZSgnU0VMRUNUIEZPVU5EX1JPV1MoKScpOwoKICAgICAgICAvLyB0aGlzIHByZWxvYWRzIHRoZSB1c2VyIGluZm8uCiAgICAgICAgaWYoICR0aGlzLT5fcXVlcnktPmdldF9yZXN1bHRfdHlwZSgpICE9IG1hbXNfdXNlcl9xdWVyeTo6UkVTVUxUX1RZUEVfQ09VTlQgKSB7CiAgICAgICAgICAgICR1aWRzID0gYXJyYXkoKTsKICAgICAgICAgICAgd2hpbGUoICEkdGhpcy0+X3JzLT5FT0YgKSB7CiAgICAgICAgICAgICAgICBtYW1zX3VzZXJfY2FjaGU6OnNldF9uZXdfdXNlcigkdGhpcy0+X3JzLT5maWVsZHMpOwogICAgICAgICAgICAgICAgJHVpZHNbXSA9ICR0aGlzLT5fcnMtPmZpZWxkc1snaWQnXTsKICAgICAgICAgICAgICAgICR0aGlzLT5fcnMtPk1vdmVOZXh0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPl9ycy0+TW92ZUZpcnN0KCk7CgogICAgICAgICAgICBpZiggY291bnQoJHVpZHMpICYmICR0aGlzLT5fcXVlcnktPmdldF9kZWVwKCkgKSB7CiAgICAgICAgICAgICAgICAvLyB1c2VycyBhcmUgYWxyZWFkeSBsb2FkZWQgKHNoYWxsb3cpLi4uIHRoaXMgd2lsbCBnZXQgcHJvcGVydHkgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICBtYW1zX3VzZXJfY2FjaGU6OmxvYWRfdXNlcnMoJHVpZHMsVFJVRSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0aGlzLT5fZXhlY3V0ZWQgPSBUUlVFOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBSZWNvcmRDb3VudCgpCiAgICB7CiAgICAgICAgaWYoICR0aGlzLT5fcnMgKSByZXR1cm4gJHRoaXMtPl9ycy0+UmVjb3JkQ291bnQoKTsKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gTW92ZU5leHQoKQogICAgewogICAgICAgIGlmKCAkdGhpcy0+X3F1ZXJ5LT5nZXRfcmVzdWx0X3R5cGUoKSA9PSBtYW1zX3VzZXJfcXVlcnk6OlJFU1VMVF9UWVBFX0NPVU5UICkgewogICAgICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDYW5ub3QgaXRlcmF0ZSB0aHJvdWdoIHJlc3VsdHMgb2YgYSBDT1VOVCBxdWVyeScpOwogICAgICAgIH0KICAgICAgICBpZiggJHRoaXMtPl9ycyApIHJldHVybiAkdGhpcy0+X3JzLT5Nb3ZlTmV4dCgpOwogICAgICAgIHJldHVybiBGQUxTRTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gTW92ZUZpcnN0KCkKICAgIHsKICAgICAgICBpZiggJHRoaXMtPl9xdWVyeS0+Z2V0X3Jlc3VsdF90eXBlKCkgPT0gbWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfVFlQRV9DT1VOVCApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignQ2Fubm90IGl0ZXJhdGUgdGhyb3VnaCByZXN1bHRzIG9mIGEgQ09VTlQgcXVlcnknKTsKICAgICAgICB9CiAgICAgICAgaWYoICR0aGlzLT5fcnMgKSByZXR1cm4gJHRoaXMtPl9ycy0+TW92ZUZpcnN0KCk7CiAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBFT0YoKQogICAgewogICAgICAgIGlmKCAkdGhpcy0+X3F1ZXJ5LT5nZXRfcmVzdWx0X3R5cGUoKSA9PSBtYW1zX3VzZXJfcXVlcnk6OlJFU1VMVF9UWVBFX0NPVU5UICkgewogICAgICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDYW5ub3QgaXRlcmF0ZSB0aHJvdWdoIHJlc3VsdHMgb2YgYSBDT1VOVCBxdWVyeScpOwogICAgICAgIH0KICAgICAgICBpZiggJHRoaXMtPl9ycyApIHJldHVybiAkdGhpcy0+X3JzLT5FT0YoKTsKICAgICAgICByZXR1cm4gVFJVRTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gQ2xvc2UoKQogICAgewogICAgICAgIGlmKCAkdGhpcy0+X3JzICkgcmV0dXJuICR0aGlzLT5fcnMtPkNsb3NlKCk7CiAgICAgICAgcmV0dXJuIFRSVUU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fZ2V0KCRrZXkpCiAgICB7CiAgICAgICAgaWYoICRrZXkgPT0gJ0VPRicgJiYgJHRoaXMtPl9ycyApIHJldHVybiAkdGhpcy0+X3JzLT5FT0Y7CgogICAgICAgIGlmKCAka2V5ID09ICdmaWVsZHMnICYmICR0aGlzLT5fcnMgKSB7CiAgICAgICAgICAgICRyZWMgPSBtYW1zX3VzZXJfY2FjaGU6OmdldF91c2VyKCR0aGlzLT5fcnMtPmZpZWxkc1snaWQnXSk7CiAgICAgICAgICAgIGlmKCAhJHJlYyApIHJldHVybjsKICAgICAgICAgICAgaWYoICR0aGlzLT5fcXVlcnktPmdldF93ZWJyZWFkeSgpICkgewogICAgICAgICAgICAgICAgJG1hbXMgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX01BTVMpOwogICAgICAgICAgICAgICAgaWYoICRtYW1zLT5HZXRQcmVmZXJlbmNlKCd1c2VybmFtZV9pc19lbWFpbCcpICkgewogICAgICAgICAgICAgICAgICAgICRyZWNbJ2VtYWlsJ10gPSAkcmVjWyd1c2VybmFtZSddOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdW5zZXQoJHJlY1sncGFzc3dvcmQnXSwkcmVjWydzYWx0J10pOwogICAgICAgICAgICAgICAgJGRlZm5zID0gJG1hbXMtPkdldFByb3BlcnR5RGVmbnMoKTsKICAgICAgICAgICAgICAgIGlmKCBpc3NldCgkcmVjWydmcHJvcHMnXSkgKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCggJHJlY1snZnByb3BzJ10gYXMgJiRvbmUgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAhJG1hbXMtPkdldFByZWZlcmVuY2UoJ3VzZXJuYW1lX2lzX2VtYWlsJykgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggJGRlZm5zWyRvbmVbJ3RpdGxlJ11dWyd0eXBlJ10gPT0gTUFNUzo6RklFTERUWVBFX0VNQUlMICYmICFpc3NldCgkcmVjWydlbWFpbCddKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVjWydlbWFpbCddID0gJG9uZVsnZGF0YSddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAkZGVmbnNbJG9uZVsndGl0bGUnXV1bJ3R5cGUnXSA9PSBNQU1TOjpGSUVMRFRZUEVfSU1BR0UgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXQgdGhlIGZ1bGwgdXJsLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbmZpZyA9IFxjbXNfY29uZmlnOjpnZXRfaW5zdGFuY2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvbmVbJ3VybCddID0gJGNvbmZpZ1sndXBsb2Fkc191cmwnXS4nL21hbXMvJy4kb25lWydkYXRhJ107CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoICFpc3NldCgkcmVjWydlbWFpbCddKSAmJiBpc3NldCgkcmVjWyd1c2VybmFtZSddKSAmJiAhZW1wdHkoJHJlY1sndXNlcm5hbWUnXSkgJiYgaXNfZW1haWwoJHJlY1sndXNlcm5hbWUnXSkgKSAkcmVjWydlbWFpbCddID0gJHJlY1sndXNlcm5hbWUnXTsKICAgICAgICAgICAgcmV0dXJuICRyZWM7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfZm91bmRfcm93cygpCiAgICB7CiAgICAgICAgaWYoICEkdGhpcy0+X3JzICkgcmV0dXJuOwogICAgICAgIHJldHVybiAkdGhpcy0+X2ZvdW5kX3Jvd3M7CiAgICB9Cgp9IC8vIGNsYXNzCgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.mams_utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKCi8qKgogKiBAZGVwcmVjYXRlZAogKi8KZmluYWwgY2xhc3MgbWFtc191dGlscwp7CiAgICBwcml2YXRlIHN0YXRpYyAkX21vZDsKICAgIHByaXZhdGUgc3RhdGljICRfdXNlcmZpbGVzOwoKICAgIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7fQogIAogIC8qKgogICAqIEBwYXJhbSAkbWV0aG9kCiAgICogQHBhcmFtICRhcmdzCiAgICoKICAgKiBAcmV0dXJuIG1peGVkfHZvaWQKICAgKiBAdGhyb3dzIFxNQU1TXERlcHJlY2F0ZWRNZXRob2RFeGNlcHRpb24KICAgKi8KICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIF9fY2FsbFN0YXRpYygkbWV0aG9kLCAkYXJncykKICB7CiAgICBpZihtZXRob2RfZXhpc3RzKFxNQU1TXHV0aWxzOjpjbGFzcywgJG1ldGhvZCkpCiAgICB7CiAgICAgIHJldHVybiBmb3J3YXJkX3N0YXRpY19jYWxsX2FycmF5KFtcTUFNU1x1dGlsczo6Y2xhc3MsICRtZXRob2RdLCAkYXJncyk7CiAgICB9CiAgICAvLyBUcmlnZ2VyIGEgY3VzdG9tIGV4Y2VwdGlvbiBmb3IgZGVwcmVjYXRlZCBtZXRob2RzCiAgICB0aHJvdyBuZXcgXE1BTVNcRGVwcmVjYXRlZE1ldGhvZEV4Y2VwdGlvbigkbWV0aG9kKTsKICB9CiAgCiAgCiAgLyoqCiAgICogV2Uga2VlcCB0aGlzIHVudGlsIHdlIGNhbiBnZXQgcmlkIG9mIGl0LgogICAqIF9fY2FsbFN0YXRpYyBkb2Vzbid0IHN1cHBvcnQgcGFzc2luZyBhcmd1bWVudHMgYnkgcmVmZXJlbmNlCiAgICogdGhpcyB3aWxsIGJlIHJlbW92ZWQgYXMgc29vbiBhcyBwb3NzaWJsZQogICAqCiAgICogQHBhcmFtICRmaWx0ZXIKICAgKiBAcGFyYW0gJG9mZnNldAogICAqIEBwYXJhbSAkdG90YWxfbWF0Y2hlcwogICAqIEBkZXByZWNhdGVkCiAgICogQHNlZSBcTUFNU1x1dGlsczo6Z2V0X3VzZXJzX2Zyb21fZmlsdGVyCiAgICoKICAgKiBAcmV0dXJuIGFycmF5CiAgICogQHRocm93cyBcQ21zRXhjZXB0aW9uCiAgICovCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfdXNlcnNfZnJvbV9maWx0ZXIoJGZpbHRlciwgJG9mZnNldCwgJiR0b3RhbF9tYXRjaGVzKQogIHsKICAgICRsaW1pdCAgICAgICAgICA9ICRmaWx0ZXJbJ2xpbWl0J107CiAgICAkZ3JvdXBpZCAgICAgICAgPSAkZmlsdGVyWydncm91cCddOwogICAgJHVzZXJyZWdleCAgICAgID0gJGZpbHRlclsncmVnZXgnXTsKICAgICRwcm9wZXJ0eSAgICAgICA9ICRmaWx0ZXJbJ3Byb3BzZWwnXTsKICAgICRwcm9wcmVnZXggICAgICA9ICRmaWx0ZXJbJ3Byb3B2YWwnXTsKICAgICRsb2dnZWRpbm9ubHkgICA9ICRmaWx0ZXJbJ2xvZ2dlZGlub25seSddOwogICAgJHNvcnQgICAgICAgICAgID0gJGZpbHRlclsnc29ydGJ5J107CiAgICAkZGlzYWJsZWRzdGF0dXMgPSAkZmlsdGVyWydkaXNhYmxlZHN0YXR1cyddID8/IE5VTEw7CiAgICAKICAgIC8vIHRvZG86IHRoaXMgc2hvdWxkIGdvIGludG8gdGhlIGNvbnN1bWVyLgogICAgJHF1ZXJ5ID0gbmV3IFxtYW1zX3VzZXJfcXVlcnkoKTsKICAgICRxdWVyeS0+c2V0X3Jlc3VsdF90eXBlKFxtYW1zX3VzZXJfcXVlcnk6OlJFU1VMVF9UWVBFX0ZVTEwpOwogICAgCiAgICBpZigoaW50KSRsaW1pdCA+IDApIHsgJHF1ZXJ5LT5zZXRfcGFnZWxpbWl0KCRsaW1pdCk7IH0KICAgIAogICAgaWYoKGludCkkb2Zmc2V0ID4gMCkgeyAkcXVlcnktPnNldF9vZmZzZXQoJG9mZnNldCk7IH0KICAgIAogICAgaWYoJGdyb3VwaWQgPiAwKQogICAgewogICAgICAkcXVlcnktPmFkZF9hbmRfb3B0KFxtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9HUk9VUElELCAkZ3JvdXBpZCk7CiAgICB9CiAgICAKICAgIGlmKCR1c2VycmVnZXgpCiAgICB7CiAgICAgICRxdWVyeS0+YWRkX2FuZF9vcHQoXG1hbXNfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX1VTRVJOQU1FX1JFLCAkdXNlcnJlZ2V4KTsKICAgIH0KICAgIAogICAgaWYoJHByb3BlcnR5KQogICAgewogICAgICAkZGVmbiA9IHNlbGY6OmdldF9tb2QoKS0+R2V0UHJvcGVydHlEZWZuKCRwcm9wZXJ0eSk7CiAgICAgICRvYmogID0gTlVMTDsKICAgICAgCiAgICAgICMgY2hhbmdlZCByZWNlbnRseSBrZWVwIGFuIGV5ZSBvbiB0aGlzCiAgICAgIGlmKCgkZGVmblsndHlwZSddID09IFxNQU1TOjpGSUVMRFRZUEVfQ0hFQ0tCT1gpICYmICcwJyA9PT0gXHRyaW0oJHByb3ByZWdleCkpCiAgICAgIHsKICAgICAgICAvLyBuZWVkIHRvIHRlc3QgaWYgdGhlIHByb3BlcnR5IGlzIE5PVCBzZXQKICAgICAgICAkb2JqID0gbmV3IFxtYW1zX3VzZXJfcXVlcnlfb3B0KFxtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9OT1RIQVNQUk9QRVJUWSwgJHByb3BlcnR5KTsKICAgICAgfQogICAgICAKICAgICAgaWYoISRvYmogJiYgJHByb3ByZWdleCkKICAgICAgewogICAgICAgICRvYmogPSBuZXcgXG1hbXNfdXNlcl9xdWVyeV9vcHQoXG1hbXNfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX1BST1BFUlRZX1JFLCAkcHJvcGVydHksICRwcm9wcmVnZXgpOwogICAgICB9CiAgICAgIAogICAgICBpZigkb2JqKSB7ICRxdWVyeS0+YWRkX2FuZF9vcHRfb2JqKCRvYmopOyB9CiAgICB9CiAgICAKICAgIGlmKCRsb2dnZWRpbm9ubHkpCiAgICB7CiAgICAgICRxdWVyeS0+YWRkX2FuZF9vcHQoXG1hbXNfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX0xPR0dFRElOLCAxKTsKICAgIH0KICAgIAogICAgc3dpdGNoKCRkaXNhYmxlZHN0YXR1cykKICAgIHsKICAgICAgY2FzZSAnZW4nOgogICAgICAgICRxdWVyeS0+YWRkX2FuZF9vcHQoXG1hbXNfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX05PVERJU0FCTEVEKTsKICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ2Rpcyc6CiAgICAgICAgJHF1ZXJ5LT5hZGRfYW5kX29wdChcbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfRElTQUJMRUQpOwogICAgICBicmVhazsKICAgIH0KICAgIAogICAgc3dpdGNoKCRzb3J0KQogICAgewogICAgICBjYXNlICd1c2VybmFtZSc6CiAgICAgIGNhc2UgJ3VzZXJuYW1lIGFzYyc6CiAgICAgICAgJHF1ZXJ5LT5zZXRfc29ydGJ5KFxtYW1zX3VzZXJfcXVlcnk6OlJFU1VMVF9TT1JUQllfVVNFUk5BTUUpOwogICAgICAgICRxdWVyeS0+c2V0X3NvcnRvcmRlcihcbWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVE9SREVSX0FTQyk7CiAgICAgIGJyZWFrOwogICAgICBjYXNlICd1c2VybmFtZSBkZXNjJzoKICAgICAgICAkcXVlcnktPnNldF9zb3J0YnkoXG1hbXNfdXNlcl9xdWVyeTo6UkVTVUxUX1NPUlRCWV9VU0VSTkFNRSk7CiAgICAgICAgJHF1ZXJ5LT5zZXRfc29ydG9yZGVyKFxtYW1zX3VzZXJfcXVlcnk6OlJFU1VMVF9TT1JUT1JERVJfREVTQyk7CiAgICAgIGJyZWFrOwogICAgICBjYXNlICdjcmVhdGVkYXRlJzoKICAgICAgY2FzZSAnY3JlYXRlZGF0ZSBhc2MnOgogICAgICAgICRxdWVyeS0+c2V0X3NvcnRieShcbWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVEJZX0NSRUFURUQpOwogICAgICAgICRxdWVyeS0+c2V0X3NvcnRvcmRlcihcbWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVE9SREVSX0FTQyk7CiAgICAgIGJyZWFrOwogICAgICBjYXNlICdjcmVhdGVkYXRlIGRlc2MnOgogICAgICAgICRxdWVyeS0+c2V0X3NvcnRieShcbWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVEJZX0NSRUFURUQpOwogICAgICAgICRxdWVyeS0+c2V0X3NvcnRvcmRlcihcbWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVE9SREVSX0RFU0MpOwogICAgICBicmVhazsKICAgICAgY2FzZSAnZXhwaXJlcyc6CiAgICAgIGNhc2UgJ2V4cGlyZXMgYXNjJzoKICAgICAgICAkcXVlcnktPnNldF9zb3J0YnkoXG1hbXNfdXNlcl9xdWVyeTo6UkVTVUxUX1NPUlRCWV9FWFBJUkVTKTsKICAgICAgICAkcXVlcnktPnNldF9zb3J0b3JkZXIoXG1hbXNfdXNlcl9xdWVyeTo6UkVTVUxUX1NPUlRPUkRFUl9BU0MpOwogICAgICBicmVhazsKICAgICAgY2FzZSAnZXhwaXJlcyBkZXNjJzoKICAgICAgICAkcXVlcnktPnNldF9zb3J0YnkoXG1hbXNfdXNlcl9xdWVyeTo6UkVTVUxUX1NPUlRCWV9FWFBJUkVTKTsKICAgICAgICAkcXVlcnktPnNldF9zb3J0b3JkZXIoXG1hbXNfdXNlcl9xdWVyeTo6UkVTVUxUX1NPUlRPUkRFUl9ERVNDKTsKICAgICAgYnJlYWs7CiAgICB9CiAgICAKICAgICRycyAgICAgICAgICAgID0gJHF1ZXJ5LT5leGVjdXRlKCk7CiAgICAkdG90YWxfbWF0Y2hlcyA9ICRycy0+Z2V0X2ZvdW5kX3Jvd3MoKTsKICAgICRkYXRhICAgICAgICAgID0gW107CiAgICB3aGlsZSghJHJzLT5FT0YpCiAgICB7CiAgICAgICRkYXRhW10gPSAkcnMtPmZpZWxkczsKICAgICAgJHJzLT5Nb3ZlTmV4dCgpOwogICAgfQogICAgCiAgICByZXR1cm4gJGRhdGE7CiAgfQogIAogIAogICAgLyoqKgogICAgICogdGVtcG9yYXJ5IGZ1bmN0aW9ucwogICAgICovCiAgCiAgCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHhodG1sIGVxdWl2YWxlbnQgb2YgYSB0ZXh0YXJlYS4JQWxzbyB0YWtlcyBXWVNJV1lHIHByZWZlcmVuY2UgaW50byBjb25zaWRlcmF0aW9uIGlmIGl0J3MgY2FsbGVkIGZyb20gdGhlIGFkbWluIHNpZGUuCiAgICAgKgogICAgICogQHBhcmFtIGJvb2wgICAkZW5hYmxld3lzaXd5ZyBTaG91bGQgd2UgdHJ5IHRvIGNyZWF0ZSBhIFdZU0lXWUcgZm9yIHRoaXMgdGV4dGFyZWE/CiAgICAgKiBAcGFyYW0gc3RyaW5nICRpZCBUaGUgaWQgZ2l2ZW4gdG8gdGhlIG1vZHVsZSBvbiBleGVjdXRpb24KICAgICAqIEBwYXJhbSBzdHJpbmcgJHRleHQgVGhlIHRleHQgdG8gZGlzcGxheSBpbiB0aGUgdGV4dGFyZWEncyBjb250ZW50CiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lIFRoZSBodG1sIG5hbWUgb2YgdGhlIHRleHRhcmVhCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjbGFzc25hbWUgVGhlIENTUyBjbGFzcyB0byBhc3NvY2lhdGUgdGhpcyB0ZXh0YXJlYSB0bwogICAgICogQHBhcmFtIHN0cmluZyAkaHRtbGlkIFRoZSBodG1sIGlkIHRvIGdpdmUgdG8gdGhpcyB0ZXh0YXJlYQogICAgICogQHBhcmFtIHN0cmluZyAkZW5jb2RpbmcgVGhlIGVuY29kaW5nIHRvIHVzZSBmb3IgdGhlIGNvbnRlbnQKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0eWxlc2hlZXQgVGhlIHRleHQgb2YgdGhlIHN0eWxlc2hlZXQgYXNzb2NpYXRlZCB0byB0aGlzIGNvbnRlbnQuCSBPbmx5IHVzZWQgZm9yIGNlcnRhaW4gV1lTSVdZR3MKICAgICAqIEBwYXJhbSBzdHJpbmcgJGNvbHMgVGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHdpZGUgKGNvbHVtbnMpIHRoZSByZXN1bHRpbmcgdGV4dGFyZWEgc2hvdWxkIGJlCiAgICAgKiBAcGFyYW0gc3RyaW5nICRyb3dzIFRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBoaWdoIChyb3dzKSB0aGUgcmVzdWx0aW5nIHRleHRhcmVhIHNob3VsZCBiZQogICAgICogQHBhcmFtIHN0cmluZyAkZm9yY2V3eXNpd3lnIFRoZSB3eXNpd3lnLXN5c3RlbSB0byBiZSBmb3JjZWQgZXZlbiBpZiB0aGUgdXNlciBoYXMgY2hvc2VuIGFub3RoZXIgb25lCiAgICAgKiBAcGFyYW0gc3RyaW5nICR3YW50ZWRzeW50YXggVGhlIGxhbmd1YWdlIHRoZSBjb250ZW50IHNob3VsZCBiZSBzeW50YXhoaWdodGxpZ2h0ZWQgYXMKICAgICAqIEBwYXJhbSBzdHJpbmcgJGFkZHRleHQgQW55IGFkZGl0aW9uYWwgdGV4dCB0byBpbmNsdWRlIHdpdGggdGhlIHRleHRhcmVhIGZpZWxkLgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqCiAgICAgKiBAc2VlIENtc0Zvcm1VdGlsczo6Y3JlYXRlX3RleHRhcmVhCiAgICAgKi8KICAgIHN0YXRpYyBmdW5jdGlvbiBDcmVhdGVUZXh0QXJlYSgkZW5hYmxld3lzaXd5ZywgJGlkLCAkdGV4dCwgJG5hbWUsICRjbGFzc25hbWU9JycsICRodG1saWQ9JycsICRlbmNvZGluZz0nJywgJHN0eWxlc2hlZXQ9JycsICRjb2xzPScnLCAkcm93cz0nJywkZm9yY2V3eXNpd3lnPScnLCR3YW50ZWRzeW50YXg9JycsJGFkZHRleHQ9JycpCiAgICB7CiAgICAgICRwYXJtcyA9IGFycmF5KCk7CiAgICAgICRwYXJtc1snZW5hYmxld3lzaXd5ZyddID0gJGVuYWJsZXd5c2l3eWc7CiAgICAgICRwYXJtc1snbmFtZSddID0gJGlkLiRuYW1lOwogICAgICBpZiggJGNsYXNzbmFtZSApICRwYXJtc1snY2xhc3MnXSA9ICRjbGFzc25hbWU7CiAgICAgIGlmKCAkaHRtbGlkICkgJHBhcm1zWydpZCddID0gJGh0bWxpZDsKICAgICAgaWYoICRlbmNvZGluZyApICRwYXJtc1snZW5jb2RpbmcnXSA9ICRlbmNvZGluZzsKICAgICAgaWYoICRzdHlsZXNoZWV0ICkgJHBhcm1zWydzdHlsZXNoZWV0J10gPSAkc3R5bGVzaGVldDsKICAgICAgaWYoICRjb2xzICkgJHBhcm1zWydjb2xzJ10gPSAkY29sczsKICAgICAgaWYoICRyb3dzICkgJHBhcm1zWydyb3dzJ10gPSAkcm93czsKICAgICAgaWYoICR0ZXh0ICkgJHBhcm1zWyd0ZXh0J10gPSAkdGV4dDsKICAgICAgaWYoICRmb3JjZXd5c2l3eWcgKSAkcGFybXNbJ2ZvcmNlbW9kdWxlJ10gPSAkZm9yY2V3eXNpd3lnOwogICAgICBpZiggJHdhbnRlZHN5bnRheCApICRwYXJtc1snd2FudGVkc3ludGF4J10gPSAkd2FudGVkc3ludGF4OwogICAgICBpZiggJGFkZHRleHQgKSAkcGFybXNbJ2FkZHRleHQnXSA9ICRhZGR0ZXh0OwogIAogICAgICB0cnkgewogICAgICAgIHJldHVybiBzZWxmOjpjcmVhdGVfdGV4dGFyZWEoJHBhcm1zKTsKICAgICAgfQogICAgICBjYXRjaCggQ21zRXhjZXB0aW9uICRlICkgewogICAgICAgIHJldHVybiAnJzsKICAgICAgfQogICAgfQogIAogICAgLyoqCiAgICAgKiBBIG1ldGhvZCB0byBjcmVhdGUgYSB0ZXh0IGFyZWEgY29udHJvbC4KICAgICAqIHBhcmFtZXRlcnM6CiAgICAgKiAgIG5hbWUgICAgICAgICAgPSAocmVxdWlyZWQgc3RyaW5nKSBuYW1lIGF0dHJpYnV0ZSBmb3IgdGhlIHRleHQgYXJlYSBlbGVtZW50LgogICAgICogICBpZCAgICAgICAgICAgID0gKG9wdGlvbmFsIHN0cmluZykgaWQgYXR0cmlidXRlIGZvciB0aGUgdGV4dCBhcmVhIGVsZW1lbnQuICBJZiBub3Qgc3BlY2lmaWVkLCBuYW1lIGlzIHVzZWQuCiAgICAgKiAgIGNsYXNzL2NsYXNzbmFtZSA9IChvcHRpb25hbCBzdHJpbmcpIGNsYXNzIGF0dHJpYnV0ZSBmb3IgdGhlIHRleHQgYXJlYSBlbGVtZW50LiAgU29tZSB2YWx1ZXMgd2lsbCBiZSBhZGRlZCB0byB0aGlzIHN0cmluZy4KICAgICAqICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgaXMgY21zX3RleHRhcmVhCiAgICAgKiAgIGZvcmNlbW9kdWxlICAgPSAob3B0aW9uYWwgc3RyaW5nKSB1c2VkIHRvIHNwZWNpZnkgdGhlIG1vZHVsZSB0byBlbmFibGUuICBJZiBzcGVjaWZpZWQsIHRoZSBtb2R1bGUgbmFtZSB3aWxsIGJlIGFkZGVkIHRvIHRoZQogICAgICogICAgICAgICAgICAgICAgICAgY2xhc3MgYXR0cmlidXRlLgogICAgICogICBlbmFibGV3eXNpd3lnID0gKG9wdGlvbmFsIGJvb2xhbikgdXNlZCB0byBzcGVjaWZ5IHdldGhlciBhIHd5c2l3eWcgdGV4dGFyZWEgaXMgcmVxdWlyZWQuICBzZXRzIHRoZSBsYW5ndWFnZSB0byBodG1sLgogICAgICogICB3YW50ZWRzeW50YXggID0gKG9wdGlvbmFsIHN0cmluZykgdXNlZCB0byBzcGVjaWZ5IHRoZSBsYW5ndWFnZSAoaHRtbCxjc3MscGhwLHNtYXJ0eSkgdG8gdXNlLiAgSWYgbm9uIGVtcHR5IGluZGljYXRlcyB0aGF0IGEKICAgICAqICAgICAgICAgICAgICAgICAgIHN5bnRheCBoaWxpZ2h0ZXIgbW9kdWxlIGlzIHJlcXVlc3RlZC4KICAgICAqICAgY29scy93aWR0aCAgICA9IChvcHRpb25hbCBpbnRlZ2VyKSBjb2x1bW5zIG9mIHRoZSB0ZXh0IGFyZWEgKGNzcyBvciB0aGUgc3ludGF4L3d5c2l3eWcgbW9kdWxlIG1heSBvdmVycmlkZSB0aGlzKQogICAgICogICByb3dzL2hlaWdodCAgID0gKG9wdGlvbmFsIGludGVnZXIpIHJvd3Mgb2YgdGhlIHRleHQgYXJlYSAoY3NzIG9yIHRoZSBzeW50YXgvd3lzaXd5ZyBtb2R1bGUgbWF5IG92ZXJyaWRlIHRoaXMpCiAgICAgKiAgIG1heGxlbmd0aCAgICAgPSAob3B0aW9uYWwgaW50ZWdlcikgbWF4bGVuZ3RoIGF0dHJpYnV0ZSBvZiB0aGUgdGV4dCBhcmVhIChzeW50YXgvd3lzaXd5ZyBtb2R1bGUgbWF5IGlnbm9yZSB0aGlzKQogICAgICogICByZXF1aXJlZCAgICAgID0gKG9wdGlvbmFsIGJvb2xlYW4pIGluZGljYXRlcyBhIHJlcXVpcmVkIGZpZWxkLgogICAgICogICBwbGFjZWhvbGRlciAgID0gKG9wdGlvbmFsIHN0cmluZykgcGxhY2Vob2xkZXIgYXR0cmlidXRlIG9mIHRoZSB0ZXh0IGFyZWEgKHN5bnRheC93eXNpd3lnIG1vZHVsZSBtYXkgaWdub3JlIHRoaXMpCiAgICAgKiAgIHZhbHVlL3RleHQgICAgPSAob3B0aW9uYWwgc3RyaW5nKSBkZWZhdWx0IHRleHQgZm9yIHRoZSB0ZXh0IGFyZWEsIHdpbGwgdW5kZXJnbyBlbnRpdHkgY29udmVyc2lvbi4KICAgICAqICAgZW5jb2RpbmcgICAgICA9IChvcHRpb25hbCBzdHJpbmcpIGRlZmF1bHQgdXRmLTggZW5jb2RpbmcgZm9yIGVudGl0eSBjb252ZXJzaW9uLgogICAgICogICBhZGR0ZXh0ICAgICAgID0gKG9wdGlvbmFsIHN0cmluZykgYWRkaXRpb25hbCB0ZXh0IHRvIGFkZCB0byB0aGUgdGV4dGFyZWEgdGFnLgogICAgICogICBjc3NuYW1lICAgICAgID0gKG9wdGlvbmFsIHN0cmluZykgUGFzcyB0aGlzIHN0eWxlc2hlZXQgbmFtZSB0byB0aGUgV1lTSVdZRyBhcmVhIGlmIGFueS4KICAgICAqCiAgICAgKiBub3RlOiBpZiB3YW50ZWRzeW50YXggaXMgZW1wdHksIEFORCBlbmFibGV3eXNpd3lnIGlzIGZhbHNlLCB0aGVuIGp1c3QgYSBwbGFpbiB0ZXh0IGFyZWEgaXMgY3JlZWF0ZWQuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRwYXJtcyBBbiBhc3NvY2lhdGl2ZSBhcnJheSB3aXRoIHBhcmFtZXRlcnMuCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZV90ZXh0YXJlYSgkcGFybXMpCiAgICB7CiAgICAgIC8vIHRvZG86IHJld3JpdGUgbWUgd2l0aCB2YXIgYXJncy4uLiB0byBhY2NlcHQgYSBudW1lcmljIGFycmF5IG9mIGFyZ3VtZW50cywgb3IgYSBoYXNoLgogICAgICAkaGF2ZWl0ID0gRkFMU0U7CiAgICAgICRyZXN1bHQgPSAnJzsKICAgICAgJHVpZCA9IGdldF91c2VyaWQoZmFsc2UpOwogICAgICAkYXR0cmlicyA9IGFycmF5KCk7CiAgICAgICRtb2R1bGUgPSBudWxsOwogICAgICAkYXR0cmlic1snbmFtZSddID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFybXMsJ25hbWUnKTsKICAgICAgaWYoICEkYXR0cmlic1snbmFtZSddICkgdGhyb3cgbmV3IENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCcibmFtZSIgaXMgYSByZXF1aXJlZCBwYXJhbWV0ZXIiJyk7CiAgICAgICRhdHRyaWJzWydpZCddID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFybXMsJ2lkJywkYXR0cmlic1snbmFtZSddKTsKICAgICAgJGF0dHJpYnNbJ2NsYXNzJ10gPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJtcywnY2xhc3MnLCdjbXNfdGV4dGFyZWEnKTsKICAgICAgJGF0dHJpYnNbJ2NsYXNzJ10gPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJtcywnY2xhc3NuYW1lJywkYXR0cmlic1snY2xhc3MnXSk7IC8vIGNsYXNzbmFtZSBwYXJhbSBjYW4gb3ZlcnJpZGUgY2xhc3MuCiAgCiAgICAgICRmb3JjZW1vZHVsZSA9IGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcm1zLCdmb3JjZW1vZHVsZScpOwogICAgICAkZW5hYmxld3lzaXd5ZyA9IGNtc190b19ib29sKGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcm1zLCdlbmFibGV3eXNpd3lnJyxmYWxzZSkpOyAvLyBpZiB0cnVlLCB3ZSB3YW50IGEgd3lzaXd5ZyBhcmVhCiAgICAgICR3YW50ZWRzeW50YXggPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJtcywnd2FudGVkc3ludGF4Jyk7IC8vIGlmIG5vdCBudWxsLCBhbmQgbm8gd3lzaXd5ZyBmb3VuZCwgdXNlIGEgc3ludGF4IGFyZWEuCiAgICAgICR3YW50ZWRzeW50YXggPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJtcywndHlwZScsJHdhbnRlZHN5bnRheCk7CiAgICAgICRhdHRyaWJzWydjbGFzcyddIC49ICcgJy4kYXR0cmlic1snbmFtZSddOyAvLyBtYWtlIHN1cmUgdGhlIG5hbWUgaXMgb25lIG9mIHRoZSBjbGFzc2VzLgogICAgICBmb3JlYWNoKCAkcGFybXMgYXMgJGtleSA9PiAkdmFsICkgewogICAgICAgIGlmKCBzdGFydHN3aXRoKCAka2V5LCAnZGF0YS0nKSApICRhdHRyaWJzWyRrZXldID0gJHZhbDsKICAgICAgfQogIAogICAgICBpZiggJGVuYWJsZXd5c2l3eWcgKSB7CiAgICAgICAgLy8gd2Ugd2FudCBhIHd5c2l3eWcKICAgICAgICAkYXBwZW5kY2xhc3MgPSAnY21zbXNfd3lzaXd5Zyc7CiAgICAgICAgJG1vZHVsZSA9IE1vZHVsZU9wZXJhdGlvbnM6OmdldF9pbnN0YW5jZSgpLT5HZXRXWVNJV1lHTW9kdWxlKCRmb3JjZW1vZHVsZSk7CiAgICAgICAgaWYoICRtb2R1bGUgJiYgJG1vZHVsZS0+SGFzQ2FwYWJpbGl0eShDbXNDb3JlQ2FwYWJpbGl0aWVzOjpXWVNJV1lHX01PRFVMRSkgKSB7CiAgICAgICAgICAkYXBwZW5kY2xhc3MgPSAkbW9kdWxlLT5HZXROYW1lKCk7CiAgICAgICAgICAkYXR0cmlic1snZGF0YS1jbXMtbGFuZyddID0gJ2h0bWwnOwogICAgICAgICAgJGNzc19uYW1lID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFybXMsJ2Nzc25hbWUnLHNlbGY6Ok5PTkUpOwogICAgICAgICAgc2VsZjo6X2FkZF93eXNpd3lnKCRtb2R1bGUtPkdldE5hbWUoKSwkYXR0cmlic1snaWQnXSwkY3NzX25hbWUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAvLyBqdXN0IGluY2FzZSBmb3JjZWQgbW9kdWxlIGlzIG5vdCBhIHd5c2l3eWcgbW9kdWxlLgogICAgICAgICAgJG1vZHVsZSA9IG51bGw7CiAgICAgICAgfQogICAgICAgICRhdHRyaWJzWydjbGFzcyddIC49ICcgJy4kYXBwZW5kY2xhc3M7CiAgICAgIH0KICAKICAgICAgaWYoICEkbW9kdWxlICYmICR3YW50ZWRzeW50YXggKSB7CiAgICAgICAgJGF0dHJpYnNbJ2RhdGEtY21zLWxhbmcnXSA9IHRyaW0oJHdhbnRlZHN5bnRheCk7CiAgICAgICAgJG1vZHVsZSA9IE1vZHVsZU9wZXJhdGlvbnM6OmdldF9pbnN0YW5jZSgpLT5HZXRTeW50YXhIaWdobGlnaHRlcigkZm9yY2Vtb2R1bGUpOwogICAgICAgIGlmKCAkbW9kdWxlICYmICRtb2R1bGUtPkhhc0NhcGFiaWxpdHkoQ21zQ29yZUNhcGFiaWxpdGllczo6U1lOVEFYX01PRFVMRSkgKSB7CiAgICAgICAgICAkYXR0cmlic1snY2xhc3MnXSAuPSAnICcuJG1vZHVsZS0+R2V0TmFtZSgpOwogICAgICAgICAgc2VsZjo6X2FkZF9zeW50YXgoJG1vZHVsZS0+R2V0TmFtZSgpKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgLy8gd2FudGVkIGEgc3ludGF4IG1vZHVsZSwgYnV0IGNvdWxkbid0IGZpbmQgb25lLi4uCiAgICAgICAgICAkbW9kdWxlID0gbnVsbDsKICAgICAgICB9CiAgICAgIH0KICAKICAgICAgJHJlcXVpcmVkID0gY21zX3RvX2Jvb2woZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFybXMsJ3JlcXVpcmVkJywnZmFsc2UnKSk7CiAgICAgIGlmKCAkcmVxdWlyZWQgKSAkYXR0cmlic1sncmVxdWlyZWQnXSA9ICdyZXF1aXJlZCc7CiAgICAgICRhdHRyaWJzWydjb2xzJ10gPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJtcywnY29scycpOwogICAgICAkYXR0cmlic1snY29scyddID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFybXMsJ3dpZHRoJywkYXR0cmlic1snY29scyddKTsKICAgICAgaWYoICRhdHRyaWJzWydjb2xzJ10gPD0gMCB8fCAkYXR0cmlic1snY29scyddID09ICcnKSAkYXR0cmlic1snY29scyddID0gMjA7CiAgICAgICRhdHRyaWJzWydyb3dzJ10gPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJtcywncm93cycpOwogICAgICAkYXR0cmlic1sncm93cyddID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFybXMsJ2hlaWdodCcsJGF0dHJpYnNbJ3Jvd3MnXSk7CiAgICAgIGlmKCAkYXR0cmlic1sncm93cyddIDw9IDAgfHwgJGF0dHJpYnNbJ2NvbHMnXSA9PSAnJyApICRhdHRyaWJzWydyb3dzJ10gPSA1OwogICAgICAkYXR0cmlic1snbWF4bGVuZ3RoJ10gPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJtcywnbWF4bGVuZ3RoJyk7CiAgICAgIGlmKCAkYXR0cmlic1snbWF4bGVuZ3RoJ10gPD0gMCApICRhdHRyaWJzWydtYXhsZW5ndGgnXSA9ICcnOwogICAgICAkYXR0cmlic1sncGxhY2Vob2xkZXInXSA9IGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcm1zLCdwbGFjZWhvbGRlcicpOwogIAogICAgICAkYWRkdGV4dCA9IGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcm1zLCdhZGR0ZXh0Jyk7CiAgICAgICR0ZXh0ID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFybXMsJ3ZhbHVlJyk7CiAgICAgICR0ZXh0ID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFybXMsJ3RleHQnLCR0ZXh0KTsKICAKICAgICAgJHJlc3VsdCA9ICc8dGV4dGFyZWEnOwogICAgICBmb3JlYWNoKCAkYXR0cmlicyBhcyAka2V5ID0+ICR2YWwgKSB7CiAgICAgICAgaWYoICR2YWwgIT0gJycgJiYgJGtleSAhPSAnJyApIHsKICAgICAgICAgICRrZXkgPSB0cmltKCRrZXkpOwogICAgICAgICAgJHZhbCA9IHRyaW0oJHZhbCk7CiAgICAgICAgICAkcmVzdWx0IC49ICIgeyRrZXl9PVwieyR2YWx9XCIiOwogICAgICAgIH0KICAgICAgfQogICAgICBpZiggIWVtcHR5KCAkYWRkdGV4dCApICkgJHJlc3VsdCAuPSAnICcuJGFkZHRleHQ7CiAgICAgIC8vJHJlc3VsdCAuPSAnPicuY21zX2h0bWxlbnRpdGllcygkdGV4dCxFTlRfTk9RVU9URVMsQ21zTmxzT3BlcmF0aW9uczo6Z2V0X2VuY29kaW5nKCkpLic8L3RleHRhcmVhPic7CiAgICAgICRyZXN1bHQgLj0gJz4nLiAkdGV4dCAuJzwvdGV4dGFyZWE+JzsKICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CiAgCn0gLy8gY2xhc3MKCiMKIyBFT0YKIwo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.property_editor_defn.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVM7CgpjbGFzcyBwcm9wZXJ0eV9lZGl0b3JfZGVmbgp7CiAgICBwcml2YXRlICRfcHJvcGRlZm47CiAgICBwcml2YXRlICRfcmVsYXRpb247CiAgICBwcml2YXRlICRfdXNlcjsKICAgIHByaXZhdGUgJF9hdHRyaWJzOwogICAgcHJpdmF0ZSAkX3JlcV9jb2xvcjsKICAgIHByaXZhdGUgJF9yZXFfbWFya2VyOwogICAgcHJpdmF0ZSAkX2hpZGRlbl9jb2xvcjsKICAgIHByaXZhdGUgJF9oaWRkZW5fbWFya2VyOwogICAgcHJpdmF0ZSAkX2Vycm9yOyAvLyBhbiBlcnJvciBrZXkKICAgIHByaXZhdGUgJF90bXAxOyAvLyBzb21lIHRlbXBvcmFyeSBzdG9yYWdlIGRhdGEuCiAgICBwcml2YXRlICRfdG1wMjsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHByb3BkZWZuLCRyZWxhdGlvbix1c2VyX2VkaXRfYXNzaXN0YW50ICYkdXNlcikKICAgIHsKICAgICAgICBpZiggIWlzc2V0KCRwcm9wZGVmblsnbmFtZSddKSB8fCAhJHByb3BkZWZuWyduYW1lJ10gfHwgIWlzc2V0KCRwcm9wZGVmblsndHlwZSddKSApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignSW52YWxpZCBwcm9wZXJ0eSBkZWYgcGFzc2VkIHRvICcuX19NRVRIT0RfXyk7CiAgICAgICAgfQogICAgICAgIGlmKCAhaXNzZXQoJHJlbGF0aW9uWyduYW1lJ10pIHx8ICEkcmVsYXRpb25bJ25hbWUnXSB8fCAhaXNzZXQoJHJlbGF0aW9uWydncm91cF9pZCddKSB8fCAhJHJlbGF0aW9uWydncm91cF9pZCddICkgewogICAgICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdJbnZhbGlkIHByb3BlcnR5IHJlbGF0aW9uIHBhc3NlZCB0byAnLl9fTUVUSE9EX18pOwogICAgICAgIH0KICAgICAgICBpZiggJHByb3BkZWZuWyduYW1lJ10gIT0gJHJlbGF0aW9uWyduYW1lJ10gKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdNaXNtYXRjaGVkIHByb3BlcnR5IGFuZCByZWxhdGlvbiBwYXNzZWQgdG8gJy5fX01FVEhPRF9fKTsKCiAgICAgICAgJHRoaXMtPl9wcm9wZGVmbiA9ICRwcm9wZGVmbjsKICAgICAgICAkdGhpcy0+X3JlbGF0aW9uID0gJHJlbGF0aW9uOwogICAgICAgICR0aGlzLT5fdXNlciA9JiAkdXNlcjsKICAgICAgICBpZiggaXNzZXQoJHRoaXMtPl9wcm9wZGVmblsnYXR0cmlicyddKSAmJiAkdGhpcy0+X3Byb3BkZWZuWydhdHRyaWJzJ10gKSAkdGhpcy0+X2F0dHJpYnMgPSB1bnNlcmlhbGl6ZSgkdGhpcy0+X3Byb3BkZWZuWydhdHRyaWJzJ10pOwoKICAgICAgICAkdGhpcy0+X3JlcV9jb2xvciA9IFxtYW1zX3V0aWxzOjpnZXRfbW9kKCktPkdldFByZWZlcmVuY2UoJ3JlcXVpcmVkX2ZpZWxkX2NvbG9yJywnYmx1ZScpOwogICAgICAgICR0aGlzLT5faGlkZGVuX2NvbG9yID0gXG1hbXNfdXRpbHM6OmdldF9tb2QoKS0+R2V0UHJlZmVyZW5jZSgnaGlkZGVuX2ZpZWxkX2NvbG9yJywnZ3JlZW4nKTsKICAgICAgICAkdGhpcy0+X3JlcV9tYXJrZXIgPSBcbWFtc191dGlsczo6Z2V0X21vZCgpLT5HZXRQcmVmZXJlbmNlKCdyZXF1aXJlZF9maWVsZF9tYXJrZXInLCcqJyk7CiAgICAgICAgJHRoaXMtPl9oaWRkZW5fbWFya2VyID0gXG1hbXNfdXRpbHM6OmdldF9tb2QoKS0+R2V0UHJlZmVyZW5jZSgnaGlkZGVuX2ZpZWxkX21hcmtlcicsJyEhJyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fZ2V0KCRrZXkpCiAgICB7CiAgICAgICAgJG1vZCA9IFxtYW1zX3V0aWxzOjpnZXRfbW9kKCk7CgogICAgICAgIHN3aXRjaCggJGtleSApIHsKICAgICAgICBjYXNlICduYW1lJzoKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5fcHJvcGRlZm5bJ25hbWUnXTsKCiAgICAgICAgY2FzZSAncmVxdWlyZWQnOgogICAgICAgICAgICAkdiA9ICgkdGhpcy0+X3JlbGF0aW9uWydyZXF1aXJlZCddID09IDIpP3RydWU6ZmFsc2U7CiAgICAgICAgICAgIHJldHVybiAkdjsKCiAgICAgICAgY2FzZSAncHJvbXB0JzoKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5fcHJvcGRlZm5bJ3Byb21wdCddOwoKICAgICAgICBjYXNlICd0eXBlJzoKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5fcHJvcGRlZm5bJ3R5cGUnXTsKCiAgICAgICAgY2FzZSAnY29sb3InOgogICAgICAgICAgICBpZiggJHRoaXMtPnJlcXVpcmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5fcmVxX2NvbG9yOwogICAgICAgICAgICB9IGVsc2UgaWYoICR0aGlzLT5fcmVsYXRpb25bJ3JlcXVpcmVkJ10gPT0gMyApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+X2hpZGRlbl9jb2xvcjsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm47CgogICAgICAgIGNhc2UgJ2xlbmd0aCc6CiAgICAgICAgY2FzZSAnc2l6ZSc6CiAgICAgICAgICAgIGlmKCAkdGhpcy0+dHlwZSA9PSAwIHx8ICR0aGlzLT50eXBlID09IDIgKSByZXR1cm4gKGludCkgJHRoaXMtPl9wcm9wZGVmblsnbGVuZ3RoJ107CiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgY2FzZSAnaW1hZ2VfcGF0aCc6CiAgICAgICAgICAgICR2YWwgPSAkdGhpcy0+dmFsdWU7CiAgICAgICAgICAgIGlmKCAkdGhpcy0+dHlwZSAhPSA2IHx8ICEkdmFsICkgcmV0dXJuOwogICAgICAgICAgICByZXR1cm4gJG1vZC0+Z2V0X3VwbG9hZF9kaXJuYW1lKCkuJy8nLiR2YWw7CgogICAgICAgIGNhc2UgJ2ltYWdlX3VybCc6CiAgICAgICAgICAgICR2YWwgPSAkdGhpcy0+dmFsdWU7CiAgICAgICAgICAgIGlmKCAkdGhpcy0+dHlwZSAhPSA2IHx8ICEkdmFsICkgcmV0dXJuOwogICAgICAgICAgICByZXR1cm4gJG1vZC0+Z2V0X3VwbG9hZF9kaXJ1cmwoKS4nLycuJHZhbDsKCiAgICAgICAgY2FzZSAnbWF4bGVuZ3RoJzoKICAgICAgICBjYXNlICdtYXhsZW5uJzoKICAgICAgICAgICAgaWYoICR0aGlzLT50eXBlID09IDAgfHwgJHRoaXMtPnR5cGUgPT0gMiApIHJldHVybiAoaW50KSAkdGhpcy0+X3Byb3BkZWZuWydtYXhsZW5ndGgnXTsKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICBjYXNlICd3eXNpd3lnJzoKICAgICAgICAgICAgaWYoICR0aGlzLT50eXBlID09IDMgKSB7CiAgICAgICAgICAgICAgICBpZiggaXNzZXQoJHRoaXMtPl9hdHRyaWJzWyd3eXNpd3lnJ10pICkgcmV0dXJuICR0aGlzLT5fYXR0cmlic1snd3lzaXd5ZyddOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgY2FzZSAnbWFya2VyJzoKICAgICAgICAgICAgaWYoICR0aGlzLT5yZXF1aXJlZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+X3JlcV9tYXJrZXI7CiAgICAgICAgICAgIH0gZWxzZSBpZiggJHRoaXMtPl9yZWxhdGlvblsncmVxdWlyZWQnXSA9PSAzICkgewogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5faGlkZGVuX21hcmtlcjsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm47CgogICAgICAgIGNhc2UgJ29wdGlvbnMnOgogICAgICAgICAgICBzd2l0Y2goICR0aGlzLT50eXBlICkgewogICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICAgICAgJG9wdHMgPSBcbWFtc191dGlsczo6Z2V0X21vZCgpLT5HZXRTZWxlY3RPcHRpb25zKCR0aGlzLT5fcHJvcGRlZm5bJ25hbWUnXSk7CiAgICAgICAgICAgICAgICBpZiggIWNvdW50KCRvcHRzKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignTm8gc2VsZWN0IG9wdGlvbnMgZm9yIGEgZHJvcGRvd24vYXJyYXkgcHJvcGVydHknKTsKICAgICAgICAgICAgICAgIHJldHVybiBhcnJheV9mbGlwKCRvcHRzKTsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIC8vIG5vIGFycmF5IHRvIHJldHVybi4KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm47CgogICAgICAgIGNhc2UgJ2RmbHQnOgogICAgICAgIGNhc2UgJ2RlZmF1bHQnOgogICAgICAgICAgICBzd2l0Y2goICR0aGlzLT50eXBlICkgewogICAgICAgICAgICBjYXNlIDA6IC8vIHRleHQKICAgICAgICAgICAgY2FzZSAyOiAvLyBlbWFpbAogICAgICAgICAgICBjYXNlIDM6IC8vIHRleHRhcmVhCiAgICAgICAgICAgIGNhc2UgNDogLy8gZHJvcGRvd24KICAgICAgICAgICAgY2FzZSA1OiAvLyBtdWx0aXNlbGVjdAogICAgICAgICAgICBjYXNlIDY6IC8vIGltYWdlCiAgICAgICAgICAgIGNhc2UgNzogLy8gcmFkaW8gYnV0dG9uIGdyb3VwCiAgICAgICAgICAgIGNhc2UgODogLy8gZGF0ZQogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDE6IC8vIGNoZWNrYm94CiAgICAgICAgICAgICAgICBpZiggaXNzZXQoJHRoaXMtPl9hdHRyaWJzWydjaGVja2VkJ10pICkgcmV0dXJuICR0aGlzLT5fYXR0cmlic1snY2hlY2tlZCddOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICBjYXNlICdzdGFydHllYXInOgogICAgICAgIGNhc2UgJ2VuZHllYXInOgogICAgICAgICAgICBpZiggJHRoaXMtPnR5cGUgPT0gOCApIHsKICAgICAgICAgICAgICAgIGlmKCBpc3NldCgkdGhpcy0+X3Byb3BkZWZuWydleHRyYSddWyRrZXldKSApIHJldHVybiAkdGhpcy0+X3Byb3BkZWZuWydleHRyYSddWyRrZXldOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgY2FzZSAndmFsJzoKICAgICAgICBjYXNlICd2YWx1ZSc6CiAgICAgICAgICAgICR2YWwgPSAkdGhpcy0+X3VzZXItPmdldF9wcm9wZXJ0eSgkdGhpcy0+bmFtZSk7CiAgICAgICAgICAgIHN3aXRjaCggJHRoaXMtPnR5cGUgKSB7CiAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgIGlmKCAhaXNfYXJyYXkoJHZhbCkgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYoIHN0cnBvcygkdmFsLCcsJykgIT09IEZBTFNFICkgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHZhbCA9IGV4cGxvZGUoJywnLCR2YWwpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmKCBzdHJwb3MoJHZhbCwnOicpICE9PSBGQUxTRSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHZhbCA9IGV4cGxvZGUoJzonLCR2YWwpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR2YWwgPSBbICR2YWwgXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICR2YWw7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfdmFsdWUoJHZhbCkKICAgIHsKICAgICAgICAkbW9kID0gXG1hbXNfdXRpbHM6OmdldF9tb2QoKTsKCiAgICAgICAgLy8gJHZhbCBjYW4gYmUgbWl4ZWQKICAgICAgICBzd2l0Y2goICR0aGlzLT50eXBlICkgewogICAgICAgIGNhc2UgMDogLy8gdGV4dCBmaWVsZAogICAgICAgICAgICAkdmFsID0gKHN0cmluZykgJHZhbDsKICAgICAgICAgICAgJGwgPSBzdHJsZW4oJHZhbCk7CiAgICAgICAgICAgIGlmKCAkbCA+ICR0aGlzLT5tYXhsZW5ndGggKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKCRtb2QtPkxhbmcoJ2Vycm9yX2ZsZHZhbGxlbmd0aCcsJHRoaXMtPm5hbWUpKTsKICAgICAgICAgICAgJHRoaXMtPl91c2VyLT5zZXRfcHJvcGVydHkoJHRoaXMtPm5hbWUsJHZhbCk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDE6IC8vIGNoZWNrYm94CiAgICAgICAgICAgICR0aGlzLT5fdXNlci0+c2V0X3Byb3BlcnR5KCR0aGlzLT5uYW1lLChpbnQpICR2YWwpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAyOiAvLyBlbWFpbAogICAgICAgICAgICAkdmFsID0gKHN0cmluZykgJHZhbDsKICAgICAgICAgICAgJHRoaXMtPl91c2VyLT5zZXRfcHJvcGVydHkoJHRoaXMtPm5hbWUsJHZhbCk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDM6IC8vIHRleHRhcmVhCiAgICAgICAgICAgICR2YWwgPSAoc3RyaW5nKSAkdmFsOwogICAgICAgICAgICAkdGhpcy0+X3VzZXItPnNldF9wcm9wZXJ0eSgkdGhpcy0+bmFtZSwkdmFsKTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgNDogLy8gZHJvcGRvd24KICAgICAgICAgICAgJHZhbCA9IChzdHJpbmcpICR2YWw7CiAgICAgICAgICAgICR0aGlzLT5fdXNlci0+c2V0X3Byb3BlcnR5KCR0aGlzLT5uYW1lLCR2YWwpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA1OiAvLyBtdWx0aXNlbGVjdAogICAgICAgICAgICBpZiggaXNfYXJyYXkoJHZhbCkgKSAkdmFsID0gaW1wbG9kZSgnLCcsJHZhbCk7CiAgICAgICAgICAgICR0aGlzLT5fdXNlci0+c2V0X3Byb3BlcnR5KCR0aGlzLT5uYW1lLCR2YWwpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA2OiAvLyBpbWFnZQogICAgICAgICAgICAvLyB3ZSBjaGVjayBpZiBhbnl0aGluZyBpcyB1cGxvYWRlZC4KICAgICAgICAgICAgaWYoIGlzc2V0KCRfRklMRVMpICYmIGlzc2V0KCRfRklMRVNbJHZhbF0pICYmICRfRklMRVNbJHZhbF1bJ25hbWUnXSApIHsKICAgICAgICAgICAgICAgICR0aGlzLT5fdG1wMSA9ICR2YWw7IC8vIHRoZSBrZXkKICAgICAgICAgICAgICAgICR0aGlzLT5fdG1wMiA9ICR0aGlzLT5fdXNlci0+Z2V0X3Byb3BlcnR5KCR0aGlzLT5uYW1lKTsgLy8gY3VycmVudCB2YWx1ZS4KICAgICAgICAgICAgICAgICRuZXd2YWwgPSAkbW9kLT5nZXRfdXBsb2FkX2ZpbGVuYW1lKCR0aGlzLT5uYW1lLCRfRklMRVNbJHZhbF1bJ25hbWUnXSk7CiAgICAgICAgICAgICAgICAkdGhpcy0+X3VzZXItPnNldF9wcm9wZXJ0eSgkdGhpcy0+bmFtZSwkbmV3dmFsKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA3OiAvLyByYWRpbyBidXR0b24gZ3JvdXAKICAgICAgICAgICAgJHZhbCA9IChzdHJpbmcpICR2YWw7CiAgICAgICAgICAgICR0aGlzLT5fdXNlci0+c2V0X3Byb3BlcnR5KCR0aGlzLT5uYW1lLCR2YWwpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA4OiAvLyBkYXRlCiAgICAgICAgICAgICR2YWwgPSAoaW50KSAkdmFsOwogICAgICAgICAgICAkdGhpcy0+X3VzZXItPnNldF9wcm9wZXJ0eSgkdGhpcy0+bmFtZSwkdmFsKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2YWxpZGF0ZSgpCiAgICB7CiAgICAgICAgJG5hbWUgPSAkdGhpcy0+bmFtZTsKICAgICAgICAkdmFsID0gJHRoaXMtPl91c2VyLT5nZXRfcHJvcGVydHkoJG5hbWUpOwogICAgICAgICRtb2QgPSBcbWFtc191dGlsczo6Z2V0X21vZCgpOwoKICAgICAgICBpZiggJHRoaXMtPl9lcnJvciApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJG1vZC0+TGFuZygkdGhpcy0+X2Vycm9yKSk7CiAgICAgICAgc3dpdGNoKCAkdGhpcy0+dHlwZSApIHsKICAgICAgICBjYXNlIDA6IC8vIHRleHQKICAgICAgICAgICAgaWYoICEkdmFsICYmICR0aGlzLT5yZXF1aXJlZCApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkbW9kLT5MYW5nKCdlcnJvcl9taXNzaW5nX3JlcXVpcmVkX3BhcmFtJywkbmFtZSkpOwogICAgICAgICAgICBpZiggJHZhbCApIHsKICAgICAgICAgICAgICAgICRsID0gc3RybGVuKCR2YWwpOwogICAgICAgICAgICAgICAgaWYoICRsID4gJHRoaXMtPm1heGxlbmd0aCApIHRocm93IG5ldyBcQ21zSW52YWxpZERhdGFFeGNlcHRpb24oJG1vZC0+TGFuZygnZXJyb3JfZmxkdmFsbGVuZ3RoJywkbmFtZSkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDI6IC8vIGVtYWlsCiAgICAgICAgICAgIGlmKCAhJHZhbCAmJiAkdGhpcy0+cmVxdWlyZWQgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJG1vZC0+TGFuZygnZXJyb3JfbWlzc2luZ19yZXF1aXJlZF9wYXJhbScsJG5hbWUpKTsKICAgICAgICAgICAgaWYoICR2YWwgKSB7CiAgICAgICAgICAgICAgICAkbCA9IHN0cmxlbigkdmFsKTsKICAgICAgICAgICAgICAgIGlmKCAkbCA+ICR0aGlzLT5tYXhsZW5ndGggKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKFxtYW1zX3V0aWxzOjpnZXRfbW9kKCktPkxhbmcoJ2Vycm9yX2ZsZHZhbGxlbmd0aCcsJG5hbWUpKTsKICAgICAgICAgICAgICAgIGlmKCAhaXNfZW1haWwoJHZhbCkgKSB0aHJvdyBuZXcgXENtc0ludmFsaWREYXRhRXhjZXB0aW9uKFxtYW1zX3V0aWxzOjpnZXRfbW9kKCktPkxhbmcoJ2Vycm9yX2ludmFsaWRlbWFpbGFkZHJlc3MnKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMTogLy8gY2hlY2tib3gKICAgICAgICAgICAgaWYoICR2YWwgPT09ICcnICYmICR0aGlzLT5yZXF1aXJlZCApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkbW9kLT5MYW5nKCdlcnJvcl9taXNzaW5nX3JlcXVpcmVkX3BhcmFtJywkbmFtZSkpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAzOiAvLyB0ZXh0YXJlYQogICAgICAgICAgICBpZiggJHZhbCA9PT0gJycgJiYgJHRoaXMtPnJlcXVpcmVkICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRtb2QtPkxhbmcoJ2Vycm9yX21pc3NpbmdfcmVxdWlyZWRfcGFyYW0nLCRuYW1lKSk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDQ6IC8vIGRyb3Bkb3duCiAgICAgICAgICAgIGlmKCAkdmFsID09PSAnJyAmJiAkdGhpcy0+cmVxdWlyZWQgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJG1vZC0+TGFuZygnZXJyb3JfbWlzc2luZ19yZXF1aXJlZF9wYXJhbScsJG5hbWUpKTsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgNTogLy8gbXVsdGlzZWxlY3QKICAgICAgICAgICAgaWYoICR2YWwgPT09ICcnICYmICR0aGlzLT5yZXF1aXJlZCApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkbW9kLT5MYW5nKCdlcnJvcl9taXNzaW5nX3JlcXVpcmVkX3BhcmFtJywkbmFtZSkpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA2OiAvLyBpbWFnZQogICAgICAgICAgICBpZiggJHRoaXMtPl90bXAxICkgewogICAgICAgICAgICAgICAgJHJldCA9IFxtYW1zX3V0aWxzOjpjaGVja1VwbG9hZCgkdGhpcy0+X3RtcDEpOwogICAgICAgICAgICAgICAgaWYoICEkcmV0WzBdICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRyZXRbMV0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDc6IC8vIHJhZGlvIGJ1dHRvbiBncm91cAogICAgICAgICAgICBpZiggJHZhbCA9PT0gJycgJiYgJHRoaXMtPnJlcXVpcmVkICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRtb2QtPkxhbmcoJ2Vycm9yX21pc3NpbmdfcmVxdWlyZWRfcGFyYW0nLCRuYW1lKSk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDg6IC8vIGRhdGUKICAgICAgICAgICAgaWYoICR2YWwgPCAxICYmICR0aGlzLT5yZXF1aXJlZCApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkbW9kLT5MYW5nKCdlcnJvcl9taXNzaW5nX3JlcXVpcmVkX3BhcmFtJywkbmFtZSkpOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNsZWFyX3ZhbHVlKCkKICAgIHsKICAgICAgICBzd2l0Y2goICR0aGlzLT50eXBlICkgewogICAgICAgIGNhc2UgNjogLy8gaW1hZ2UKICAgICAgICAgICAgJG1vZCA9IFxtYW1zX3V0aWxzOjpnZXRfbW9kKCk7CiAgICAgICAgICAgIGlmKCAkdGhpcy0+dmFsdWUgKSB7CiAgICAgICAgICAgICAgICAvLyB3ZSBoYXZlIGFuIGV4aXN0aW5nIGlhbWdlCiAgICAgICAgICAgICAgICAkcGF0aCA9ICRtb2QtPmdldF91cGxvYWRfZGlybmFtZSgpLicvJy4kdGhpcy0+dmFsdWU7CiAgICAgICAgICAgICAgICBpZiggaXNfZmlsZSggJHBhdGggKSApIEB1bmxpbmsoJHBhdGgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICAkdGhpcy0+X3VzZXItPnNldF9wcm9wZXJ0eSgkdGhpcy0+bmFtZSxudWxsKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcG9zdHByb2Nlc3MoJHVzZXIpCiAgICB7CiAgICAgICAgc3dpdGNoKCAkdGhpcy0+dHlwZSApIHsKICAgICAgICBjYXNlIDY6IC8vIGltYWdlCiAgICAgICAgICAgICRtb2QgPSBcbWFtc191dGlsczo6Z2V0X21vZCgpOwogICAgICAgICAgICBpZiggISR0aGlzLT5fdG1wMSApIHJldHVybjsKICAgICAgICAgICAgaWYoICR0aGlzLT5fdG1wMiApIHsKICAgICAgICAgICAgICAgIC8vIHdlIGhhdmUgYW4gZXhpc3RpbmcgZmlsZSB0byBnZXQgcmlkIG9mLgogICAgICAgICAgICAgICAgJHBhdGggPSAkbW9kLT5nZXRfdXBsb2FkX2Rpcm5hbWUoKS4nLycuJHRoaXMtPl90bXAyOwogICAgICAgICAgICAgICAgaWYoIGlzX2ZpbGUoICRwYXRoICkgKSBAdW5saW5rKCRwYXRoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBub3cgd2UgZ290dGEgbW92ZSB0aGUgdXBsb2FkIGZyb20gdGVtcG9yYXJ5IGxvY2F0aW9uIHRvIHBlcm1hbmVudCBsb2NhdGlvbgogICAgICAgICAgICAkcmVzID0gJG1vZC0+TWFuYWdlSW1hZ2VVcGxvYWQoJHRoaXMtPl90bXAxLCAkdGhpcy0+bmFtZSk7CiAgICAgICAgfQogICAgfQp9]]></data>
	</file>
	<file>
	  <filename>/lib/class.Random.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbg0KIyAgQW4gYWRkLW9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdXNlZnVsIGZ1bmN0aW9ucw0KIyAgYW5kIGNvbW1vbmx5IHVzZWQgZ3VpIGNhcGFiaWxpdGllcyB0byBvdGhlciBtb2R1bGVzLg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQSBmb3JrIG9mOg0KIw0KIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwNCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykNCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojDQojIENNU01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA2IC0gMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbg0KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpDQojIFZpc2l0IHRoZSBDTVNNUyBIb21lcGFnZSBhdDogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCi8qKg0KICogR2VuZXJhdGUgcmFuZG9tIGNoYXJhY3RlcnMuDQogKg0KICogQGF1dGhvciAgICBMYXVyZW50aXUgVGFuYXNlIDxleHBlcnRwaHBAeWFob28uY29tPg0KICogQHZlcnNpb24gICAxLjENCiAqLw0KDQpjbGFzcyBSYW5kb20NCnsNCgkvKioNCgkgKiBTZXQgZGVmYXVsdCBjaGFyYWN0ZXJzLg0KICAgICAqDQogICAgICogQHZhciAgICAgIHN0cmluZw0KICAgICAqIEBhY2Nlc3MgICBwcml2YXRlDQogICAgICovDQoNCgl2YXIgJF92Y3JzOw0KDQoJLyoqDQoJICogSWYgaGF2ZSBudW1iZXINCiAgICAgKg0KICAgICAqIEB2YXIgICAgICBib29sDQogICAgICogQGFjY2VzcyAgIHByaXZhdGUNCiAgICAgKi8NCg0KCXZhciAkX3ZudW07DQoNCgkvKioNCgkgKiBJZiBkb2Vzbid0IGhhdmUgbnVtYmVyDQogICAgICoNCiAgICAgKiBAdmFyICAgICAgYm9vbA0KICAgICAqIEBhY2Nlc3MgICBwcml2YXRlDQogICAgICovDQoNCgl2YXIgJF92bm90Ow0KDQoJLyoqDQoJICogQ29uc3RydWN0b3INCgkgKg0KCSAqIFNldCBkZWZhdWx0IHZhbHVlcw0KCSAqDQoJICogQHBhcmFtICBzdHJpbmcgICRjcnMgICBDaGFyYWN0ZXJzIG91dHB1dA0KCSAqIEBwYXJhbSAgYm9vbCAgICAkbnVtICAgV2l0aCBudW1iZXINCgkgKiBAcGFyYW0gIGJvb2wgICAgJG5vdCAgIFdpdGggbm90IG51bWJlcg0KCSAqLw0KDQoJZnVuY3Rpb24gUmFuZG9tKCRjcnMgPSBmYWxzZSwgJG51bSA9IGZhbHNlLCAkbm90ID0gZmFsc2Upew0KCQkkdGhpcy0+X3ZudW0gPSAkbnVtOw0KCQkkdGhpcy0+X3Zub3QgPSAkbm90Ow0KCQlpZighJGNycyl7DQoJCQkkdGhpcy0+X3ZjcnMgPSAiMDEyMzQ1Njc4OSIuDQoJCQkJImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Ii4NCgkJCQkiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiOw0KCQl9ZWxzZXsNCgkJCSR0aGlzLT5fdmNycyA9ICRjcnM7DQoJCQlpZigoJG51bSB8fCAkbm90KSAmJiAhJHRoaXMtPl9yZWMoJGNycywgJG51bSwgJG5vdCkpew0KCQkJCWlmKCRudW0gJiYgJG5vdCkgJGVyciA9ICJudW1iZXIgb3Igbm90IG51bWJlciI7DQoJCQkJZWxzZWlmKCRudW0pICRlcnIgPSAibnVtYmVyIjsNCgkJCQllbHNlaWYoJG5vdCkgJGVyciA9ICJub3QgbnVtYmVyIjsNCgkJCQllbHNlICRlcnIgPSAiY29tcGFyYXRpb24iOw0KCQkJCXRyaWdnZXJfZXJyb3IoIkNsYXNzIFJhbmRvbSAtIFN0cmluZyBpbnB1dCBbICIuJGNycy4iIF0gZG9lc24ndCBoYXZlICIuJGVyciwgRV9VU0VSX0VSUk9SKTsNCgkJCX0NCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIENvbXBhcmUgaW5wdXQgc3RyaW5nDQoJICoNCgkgKiBAYWNjZXNzICBwcml2YXRlDQoJICogQHBhcmFtICAgc3RyaW5nICAgJHN0ciAgICAgIENoYXJhY3RlcnMgaW5wdXQNCgkgKiBAcGFyYW0gICBib29sICAgICAkbnVtYmVyICAgSGF2ZSBudW1iZXINCgkgKiBAcGFyYW0gICBib29sICAgICAkbm90bnVtICAgSGF2ZSBub3QgbnVtYmVyDQoJICogQHJldHVybiAgYm9vbCAgICAgSWYgaGF2ZSBudW1iZXIgb3IvYW5kIG5vdCBudW1iZXINCgkgKi8NCg0KCWZ1bmN0aW9uIF9yZWMoJHN0ciwgJG51bWJlciA9IHRydWUsICRub3RudW0gPSB0cnVlKXsNCgkJJGNudCA9IHN0cmxlbigkc3RyKTsNCgkJJHNldDEgPSAkc2V0MiA9IGZhbHNlOw0KCQlpZigkbnVtYmVyIHx8ICRub3RudW0pew0KCQkJZm9yKCRpPTA7JGk8JGNudDskaSsrKXsNCgkJCQlpZigkc3RyeyRpfSA9PT0gc3RydmFsKGludHZhbCgkc3RyeyRpfSkpKSAkc2V0MSA9IHRydWU7DQoJCQkJZWxzZSAkc2V0MiA9IHRydWU7DQoJCQkJaWYoJHNldDEgJiYgJHNldDIpIGJyZWFrOw0KCQkJfQ0KCQkJaWYoJG51bWJlciAmJiAkbm90bnVtKSByZXR1cm4gKCRzZXQxICYmICRzZXQyKTsNCgkJCWVsc2VpZigkbnVtYmVyKSByZXR1cm4gJHNldDE7DQoJCQllbHNlaWYoJG5vdG51bSkgcmV0dXJuICRzZXQyOw0KCQkJZWxzZSByZXR1cm4gdHJ1ZTsNCgkJfWVsc2UgcmV0dXJuIHRydWU7DQoJfQ0KDQoJLyoqDQoJICogR2VuZXJhdGUgcmFuZG9tIGNoYXJhY3RlcnMNCgkgKg0KCSAqIEBhY2Nlc3MgIHB1YmxpYw0KCSAqIEBwYXJhbSAgIGludCAgICAgICRsZW4gICBMZW5ndGggb2YgdGhlIHN0cmluZyB5b3Ugd2FudCBnZW5lcmF0ZWQNCgkgKiBAcmV0dXJuICBzdHJpbmcgICBSYW5kb20gY2hhcmFjdGVycw0KCSAqLw0KDQoJZnVuY3Rpb24gZ2V0KCRsZW4pew0KCQlpZighKGlzX2ludCgkbGVuKSAmJiAkbGVuID4gMCkpIHJldHVybiAkdGhpcy0+X3ZjcnM7DQoJCSRyZXQgPSAiIjsNCgkJJGNudCA9IHN0cmxlbigkdGhpcy0+X3ZjcnMpLTE7DQoJCWZvcigkaT0wOyRpPCRsZW47JGkrKykgJHJldCAuPSAkdGhpcy0+X3ZjcnN7cmFuZCgwLCAkY250KX07DQoJCWlmKCR0aGlzLT5fdm51bSB8fCAkdGhpcy0+X3Zub3QpIHJldHVybiAkdGhpcy0+X3JlYygkcmV0LCAkdGhpcy0+X3ZudW0sICR0aGlzLT5fdm5vdCkgPyAkcmV0IDogUmFuZG9tOjpnZXQoJGxlbik7DQoJCWVsc2UgcmV0dXJuICRyZXQ7DQoJfQ0KDQp9DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.RRUtils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVM7CgpjbGFzcyBSUlV0aWxzCnsKICBzdGF0aWMgcHVibGljIGZ1bmN0aW9uIGFycmF5X21lcmdlX2J5X25hbWVfcmVxdWlyZWQoJGFycjEsICRhcnIyKQogIHsKICAgICR4eHJlc3VsdCA9IGFycmF5KCk7CiAgICAvLyBhZGQgaXRlbXMgY29tbW9uIHRvIGFycjEgYW5kIGFycjIKICAgIC8vIGJ1dCBmYXZvciByZXF1aXJlZCBpdGVtcwogICAgaWYoIWlzX2FycmF5KCRhcnIxKSB8fCAhaXNfYXJyYXkoJGFycjIpKXtyZXR1cm47fQogICAgCiAgICBmb3JlYWNoKCRhcnIxIGFzICRhMSkKICAgIHsKICAgICAgZm9yZWFjaCgkYXJyMiBhcyAkYTIpCiAgICAgIHsKICAgICAgICBpZiggIWlzc2V0KCRhMVsnbmFtZSddKSB8fCAhaXNzZXQoJGEyWyduYW1lJ10pICl7Y29udGludWU7fQogICAgICAgIAogICAgICAgIGlmKCRhMVsnbmFtZSddID09ICRhMlsnbmFtZSddKQogICAgICAgIHsKICAgICAgICAgIGlmKCRhMVsncmVxdWlyZWQnXSA9PSAyKQogICAgICAgICAgewogICAgICAgICAgICAkeHhyZXN1bHRbXSA9ICRhMTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlCiAgICAgICAgICB7CiAgICAgICAgICAgICR4eHJlc3VsdFtdID0gJGEyOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIAogICAgLy8gYWRkIGl0ZW1zIGluIGFycjEgbm90IGluIHJlc3VsdAogICAgZm9yZWFjaCgkYXJyMSBhcyAkYTEpCiAgICB7CiAgICAgIGlmKCAhaXNzZXQoJGExWyduYW1lJ10pICl7Y29udGludWU7fQogICAgICAKICAgICAgJGZvdW5kID0gRkFMU0U7CiAgICAgIGZvcmVhY2goJHh4cmVzdWx0IGFzICRyZXMpCiAgICAgIHsKICAgICAgICBpZigkYTFbJ25hbWUnXSA9PSAkcmVzWyduYW1lJ10pCiAgICAgICAgewogICAgICAgICAgJGZvdW5kID0gVFJVRTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQogICAgICAKICAgICAgaWYoISRmb3VuZCkKICAgICAgewogICAgICAgICR4eHJlc3VsdFtdID0gJGExOwogICAgICB9CiAgICB9CiAgICAKICAgIC8vIGFkZCBpdGVtcyBpbiBhcnIyIG5vdCBpbiByZXN1bHQKICAgIGZvcmVhY2goJGFycjIgYXMgJGEyKQogICAgewogICAgICBpZiggIWlzc2V0KCRhMlsnbmFtZSddKSApe2NvbnRpbnVlO30KICAgICAgJGZvdW5kID0gRkFMU0U7CiAgICAgIGZvcmVhY2goJHh4cmVzdWx0IGFzICRyZXMpCiAgICAgIHsKICAgICAgICBpZigkYTJbJ25hbWUnXSA9PSAkcmVzWyduYW1lJ10pCiAgICAgICAgewogICAgICAgICAgJGZvdW5kID0gVFJVRTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQogICAgICBpZighJGZvdW5kKQogICAgICB7CiAgICAgICAgJHh4cmVzdWx0W10gPSAkYTI7CiAgICAgIH0KICAgIH0KICAgIAogICAgcmV0dXJuICR4eHJlc3VsdDsKICB9CiAgCiAgZnVuY3Rpb24gY29tcGFyZV9lbGVtZW50c19ieV9zb3J0b3JkZXJfa2V5KCRlMSwgJGUyKQogIHsKICAgIGlmKCRlMVsnc29ydF9rZXknXSA8ICRlMlsnc29ydF9rZXknXSkKICAgIHsKICAgICAgcmV0dXJuIC0xOwogICAgfQogICAgZWxzZSBpZigkZTFbJ3NvcnRfa2V5J10gPiAkZTJbJ3NvcnRfa2V5J10pCiAgICB7CiAgICAgIHJldHVybiAxOwogICAgfQogICAgCiAgICByZXR1cm4gMDsKICB9CiAgCiAgc3RhdGljIHB1YmxpYyBmdW5jdGlvbiBpbXBsb2RlX3dpdGhfa2V5KCRhc3NvYywgJGluZ2x1ZSA9ICc9JywgJG91dGdsdWUgPSAnJicpCiAgewogICAgJHJldHVybiA9IE5VTEw7CiAgICBmb3JlYWNoKCRhc3NvYyBhcyAkdGsgPT4gJHR2KQogICAgewogICAgICAkcmV0dXJuIC49ICRvdXRnbHVlIC4gJHRrIC4gJGluZ2x1ZSAuICR0djsKICAgIH0KICAgIAogICAgcmV0dXJuIHN1YnN0cigkcmV0dXJuLCBzdHJsZW4oJG91dGdsdWUpKTsKICB9CiAgCiAgc3RhdGljIHB1YmxpYyBmdW5jdGlvbiBteUNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAkbmFtZSwgJHZhbHVlID0gJycsICRzZWxlY3RlZHZhbHVlID0gJycsICRhZGR0dGV4dCA9ICcnKQogIHsKICAgICR0ZXh0ID0gJzxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iJyAuICRpZCAuICRuYW1lIC4gJyIgdmFsdWU9IicgLiAkdmFsdWUgLiAnIic7CiAgICAkYXJyICA9IGV4cGxvZGUoIiwiLCAkc2VsZWN0ZWR2YWx1ZSk7CiAgICBmb3JlYWNoKCRhcnIgYXMgJGEpCiAgICB7CiAgICAgIGlmKCRhID09ICR2YWx1ZSkKICAgICAgewogICAgICAgICR0ZXh0IC49ICcgJyAuICdjaGVja2VkPSJjaGVja2VkIic7CiAgICAgIH0KICAgIH0KICAgIGlmKCRhZGR0dGV4dCAhPSAnJykKICAgIHsKICAgICAgJHRleHQgLj0gJyAnIC4gJGFkZHR0ZXh0OwogICAgfQogICAgJHRleHQgLj0gIiAvPlxuIjsKICAgIAogICAgcmV0dXJuICR0ZXh0OwogIH0KICAKfSAvLyBFbmQgb2YgY2xhc3M=]]></data>
	</file>
	<file>
	  <filename>/lib/class.upgrade_utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiNCRUdJTl9MSUNFTlNFDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbg0KIyAgQW4gYWRkLW9uIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHRvIHByb3ZpZGUgdXNlZnVsIGZ1bmN0aW9ucw0KIyAgYW5kIGNvbW1vbmx5IHVzZWQgZ3VpIGNhcGFiaWxpdGllcyB0byBvdGhlciBtb2R1bGVzLg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQSBmb3JrIG9mOg0KIw0KIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwNCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykNCiMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojDQojIENNU01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA2IC0gMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbg0KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpDQojIFZpc2l0IHRoZSBDTVNNUyBIb21lcGFnZSBhdDogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkDQojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQ0KIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TDQojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbg0KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KI0VORF9MSUNFTlNFDQoNCm5hbWVzcGFjZSBNQU1TOw0KDQoNCmNsYXNzIHVwZ3JhZGVfdXRpbHMNCnsNCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjb250ZW50X3R5cGVfcmVwYWlyKCkNCiAgew0KICAgICRxdWVyeSAgICAgID0gJ1NFTEVDVCAqIEZST00gJw0KICAgICAgICAgICAgICAgICAgLiBjbXNfZGJfcHJlZml4KCkNCiAgICAgICAgICAgICAgICAgIC4gJ2NvbnRlbnQnOw0KICAgICRhbGxfY29udGVudCA9IFxjbXNfdXRpbHM6OmdldF9kYigpLT5FeGVjdXRlKCRxdWVyeSk7DQogICAgDQogICAgd2hpbGUoJGNvbnRlbnRfcGllY2UgPSAkYWxsX2NvbnRlbnQtPkZldGNoUm93KCkpDQogICAgew0KICAgICAgaWYoICRjb250ZW50X3BpZWNlWyd0eXBlJ10gPT09ICdtYW1zX3Byb3RlY3RlZF9zZWN0aW9uaGVhJykNCiAgICAgIHsNCiAgICAgICAgJHF1ZXJ5ICAgPSAnVVBEQVRFICcNCiAgICAgICAgICAgICAgICAgICAuIGNtc19kYl9wcmVmaXgoKQ0KICAgICAgICAgICAgICAgICAgIC4gJ2NvbnRlbnQgU0VUIHR5cGU9Im1hbXNfcHJvdGVjdGVkX3NlY19oZWFkIiBXSEVSRSBjb250ZW50X2lkPT8nOw0KICAgICAgICAkcGFyYW1zICA9IFskY29udGVudF9waWVjZVsnY29udGVudF9pZCddXTsNCiAgICAgICAgJGRiciA9IFxjbXNfdXRpbHM6OmdldF9kYigpLT5FeGVjdXRlKCRxdWVyeSwgJHBhcmFtcyk7DQogICAgICB9DQogICAgfQ0KICB9DQp9DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.user.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVM7CgpjbGFzcyB1c2VyIGltcGxlbWVudHMgXEFycmF5QWNjZXNzCnsKICBwcml2YXRlICRfZGF0YSA9IFsKICAgICdpZCcgICAgICAgICAgICAgICA9PiBOVUxMLAogICAgJ3VzZXJuYW1lJyAgICAgICAgID0+IE5VTEwsCiAgICAnY3JlYXRlZGF0ZScgICAgICAgPT4gTlVMTCwKICAgICdleHBpcmVzJyAgICAgICAgICA9PiBOVUxMLAogICAgJ25vbnN0ZCcgICAgICAgICAgID0+IEZBTFNFLAogICAgJ2Rpc2FibGVkJyAgICAgICAgID0+IEZBTFNFLAogICAgJ2ZvcmNlX25ld3B3JyAgICAgID0+IEZBTFNFLAogICAgJ2ZvcmNlX2Noc2V0dGluZ3MnID0+IEZBTFNFLAogICAgJ211c3RfdmFsaWRhdGUnICAgID0+IEZBTFNFLAogICAgJ2xvZ2dlZGluJyAgICAgICAgID0+IE5VTEwKICBdOwogICAgcHJpdmF0ZSAkX25ld19wYXNzd29yZDsKICAgIHByaXZhdGUgJF9wcm9wczsKICAgIHByaXZhdGUgJF9ncm91cHM7IC8vIGxhenkgbG9hZGVkLgogICAgcHJpdmF0ZSAkX2RpcnR5OwogIAogICNbXFJldHVyblR5cGVXaWxsQ2hhbmdlXQogICAgcHVibGljIGZ1bmN0aW9uIE9mZnNldEdldCgka2V5KQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+X19nZXQoJGtleSk7CiAgICB9CiAgCiAgI1tcUmV0dXJuVHlwZVdpbGxDaGFuZ2VdCiAgICBwdWJsaWMgZnVuY3Rpb24gT2Zmc2V0U2V0KCRrZXksJHZhbCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPl9fc2V0KCRrZXksJHZhbCk7CiAgICB9CiAgI1tcUmV0dXJuVHlwZVdpbGxDaGFuZ2VdCiAgICBwdWJsaWMgZnVuY3Rpb24gT2Zmc2V0VW5zZXQoJGtleSkgeyAvKiBkbyBub3RoaW5nICovIH0KICAKICAjW1xSZXR1cm5UeXBlV2lsbENoYW5nZV0KICAgIHB1YmxpYyBmdW5jdGlvbiBPZmZzZXRFeGlzdHMoJGtleSkgewogICAgICAgIHJldHVybiBpc3NldCgkdGhpcy0+X2RhdGFbJGtleV0pOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2dldCgka2V5KQogICAgewogICAgICAgIHN3aXRjaCggJGtleSApIHsKICAgICAgICBjYXNlICdpZCc6CiAgICAgICAgICAgIHJldHVybiAoaW50KSAkdGhpcy0+X2RhdGFbJGtleV07CgogICAgICAgIGNhc2UgJ3VzZXJuYW1lJzoKICAgICAgICAgICAgcmV0dXJuIFx0cmltKChzdHJpbmcpJHRoaXMtPl9kYXRhWyRrZXldKTsKCiAgICAgICAgY2FzZSAnY3JlYXRlZGF0ZV90cyc6CiAgICAgICAgICAgIGlmKCAhJHRoaXMtPl9kYXRhWydjcmVhdGVkYXRlJ10gKSByZXR1cm4gMDsKICAgICAgICAgICAgJGRiID0gXENtc0FwcDo6Z2V0X2luc3RhbmNlKCktPkdldERiKCk7CiAgICAgICAgICAgIHJldHVybiAkZGItPlVuaXhUaW1lU3RhbXAoJHRoaXMtPl9kYXRhWydjcmVhdGVkYXRlJ10pOwoKICAgICAgICBjYXNlICdjcmVhdGVkYXRlX3N0cic6IC8vIGRiIGRhdGUKICAgICAgICAgICAgcmV0dXJuIHRyaW0oKHN0cmluZykkdGhpcy0+X2RhdGFbJ2NyZWF0ZWRhdGUnXSk7CgogICAgICAgIGNhc2UgJ2V4cGlyZXNfdHMnOgogICAgICAgICAgICBpZiggISR0aGlzLT5fZGF0YVsnZXhwaXJlcyddICkgcmV0dXJuIDA7CiAgICAgICAgICAgICRkYiA9IFxDbXNBcHA6OmdldF9pbnN0YW5jZSgpLT5HZXREYigpOwogICAgICAgICAgICByZXR1cm4gJGRiLT5Vbml4VGltZVN0YW1wKCR0aGlzLT5fZGF0YVsnZXhwaXJlcyddKTsKCiAgICAgICAgY2FzZSAnZXhwaXJlc19zdHInOiAvLyBkYiBkYXRlCiAgICAgICAgICAgIHJldHVybiB0cmltKChzdHJpbmcpJHRoaXMtPl9kYXRhWydleHBpcmVzJ10pOwoKICAgICAgICBjYXNlICdub25zdGQnOgogICAgICAgIGNhc2UgJ2Rpc2FibGVkJzoKICAgICAgICBjYXNlICdmb3JjZV9uZXdwdyc6CiAgICAgICAgY2FzZSAnZm9yY2VfY2hzZXR0aW5ncyc6CiAgICAgICAgY2FzZSAnbXVzdF92YWxpZGF0ZSc6CiAgICAgICAgY2FzZSAnbG9nZ2VkaW4nOgogICAgICAgICAgICByZXR1cm4gKGJvb2wpICR0aGlzLT5fZGF0YVska2V5XTsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigiJGtleSBpcyBub3QgYSBnZXR0YWJsZSBtZW1iZXIgb2YgIi5fX0NMQVNTX18pOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNfZXhwaXJlZCgpCiAgICB7CiAgICAgICAgcmV0dXJuICgkdGhpcy0+ZXhwaXJlc190cyA8IHRpbWUoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9wcm9wZXJ0eSgka2V5KQogICAgewogICAgICAgICRrZXkgPSB0cmltKCRrZXkpOwogICAgICAgIGlmKCAhJGtleSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0ludmFsaWQga2V5IHBhc3NlZCB0byAnLl9fTUVUSE9EX18pOwogICAgICAgIGlmKCBpc3NldCgkdGhpcy0+X3Byb3BzWyRrZXldKSApIHJldHVybiAkdGhpcy0+X3Byb3BzWyRrZXldOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfcHJvcGVydGllcygpCiAgICB7CiAgICAgIGlmKCAhaXNfYXJyYXkoJHRoaXMtPl9wcm9wcykgKSAkdGhpcy0+X3Byb3BzID0gW107CiAgICAgIAogICAgICByZXR1cm4gJHRoaXMtPl9wcm9wczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2dyb3VwcygpCiAgICB7CiAgICAgICAgaWYoICEkdGhpcy0+X2dyb3VwcyApIHsKICAgICAgICAgICAgaWYoICEkdGhpcy0+aWQgKSByZXR1cm47CiAgICAgICAgICAgICRtb2QgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKTsKICAgICAgICAgICAgJHRtcCA9ICRtb2QtPkdldE1lbWJlckdyb3Vwc0FycmF5KCR0aGlzLT5pZCk7CiAgICAgICAgICAgIGlmKCAkdG1wICYmIGNvdW50KCR0bXApICkgewogICAgICAgICAgICAgICAgJG91dCA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICBmb3JlYWNoKCAkdG1wIGFzICRvbmUgKSAkb3V0W10gPSAoaW50KSAkb25lWydncm91cGlkJ107CiAgICAgICAgICAgICAgICAkdGhpcy0+X2dyb3VwcyA9ICRvdXQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICR0aGlzLT5fZ3JvdXBzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBtZW1iZXJvZigkZ2lkKQogICAgewogICAgICAgICRnaWQgPSAoaW50KSAkZ2lkOwogICAgICAgIGlmKCAkZ2lkIDwgMSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0ludmFsaWQgZ2lkIHBhc3NlZCB0byAnLl9fTUVUSE9EX18pOwogICAgICAgICRncm91cHMgPSAkdGhpcy0+Z2V0X2dyb3VwcygpOwogICAgICAgIHJldHVybiBpbl9hcnJhKCRnaWQsJGdyb3Vwcyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsb2FkKCR1c2VyX2lkKQogICAgewogICAgICAgICR1c2VyX2lkID0gKGludCkgJHVzZXJfaWQ7CiAgICAgICAgaWYoICR1c2VyX2lkIDwgMSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0ludmFsaWQgdXNlcl9pZCBwYXNzZWQgdG8gJy5fX01FVEhPRF9fKTsKCiAgICAgICAgJHJvdyA9IFxtYW1zX3VzZXJfY2FjaGU6OmdldF91c2VyKCR1c2VyX2lkLFRSVUUpOwogICAgICAgICRvYmogPSBuZXcgc2VsZigpOwoKICAgICAgICAka2V5cyA9IGFycmF5X2tleXMoJG9iai0+X2RhdGEpOwogICAgICAgIGZvcmVhY2goICRrZXlzIGFzICRrZXkgKSB7CiAgICAgICAgICAgIHN3aXRjaCggJGtleSApIHsKICAgICAgICAgICAgY2FzZSAnaWQnOgogICAgICAgICAgICAgICAgJG9iai0+X2RhdGFbJGtleV0gPSAoaW50KSAkcm93WyRrZXldOwogICAgICAgICAgICBjYXNlICd1c2VybmFtZSc6CiAgICAgICAgICAgIGNhc2UgJ2NyZWF0ZWRhdGUnOgogICAgICAgICAgICBjYXNlICdleHBpcmVzJzoKICAgICAgICAgICAgICAgICRvYmotPl9kYXRhWyRrZXldID0gdHJpbSgkcm93WyRrZXldKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAnbm9uc3RkJzoKICAgICAgICAgICAgY2FzZSAnZGlzYWJsZWQnOgogICAgICAgICAgICBjYXNlICdmb3JjZV9uZXdwdyc6CiAgICAgICAgICAgIGNhc2UgJ2ZvcmNlX2Noc2V0dGluZ3MnOgogICAgICAgICAgICBjYXNlICdtdXN0X3ZhbGlkYXRlJzoKICAgICAgICAgICAgY2FzZSAnbG9nZ2VkaW4nOgogICAgICAgICAgICAgICAgJG9iai0+X2RhdGFbJGtleV0gPSBmYWxzZTsKICAgICAgICAgICAgICAgIGlmKCBpc3NldCgkcm93WyRrZXldKSApICRvYmotPl9kYXRhWyRrZXldID0gKGJvb2wpICRyb3dbJGtleV07CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gbm90ZTogZW5jcnlwdGVkIHByb3BlcnRpZXMgYXJlIGFscmVhZHkgZGVjcnlwdGVkIGhlcmUuCiAgICAgIGlmKGlzc2V0KCRyb3dbJ2Zwcm9wcyddKSAmJiBjb3VudCgkcm93WydmcHJvcHMnXSkpCiAgICAgIHsKICAgICAgICAkb2JqLT5fcHJvcHMgPSBbXTsKICAgICAgICBmb3JlYWNoKCRyb3dbJ2Zwcm9wcyddIGFzICRwcm9wKQogICAgICAgIHsKICAgICAgICAgICRvYmotPl9wcm9wc1skcHJvcFsndGl0bGUnXV0gPSAkcHJvcFsnZGF0YSddOwogICAgICAgIH0KICAgICAgfQogICAgICBlbHNlCiAgICAgIHsKICAgICAgICBpZiggZW1wdHkoJG9iai0+X3Byb3BzKSApICRvYmotPl9wcm9wcyA9IFtdOwogICAgICB9CgogICAgICAgIHJldHVybiAkb2JqOwogICAgfQp9]]></data>
	</file>
	<file>
	  <filename>/lib/class.user_edit_assistant.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVM7CgovLyB0aGlzIGNsYXNzIGFpZHMgaW4gYWRkaW5nIG9yIGVkaXRpbmcgYSB1c2VyCi8vIGl0IGVuY2Fwc3VsYXRlcyB0aGUgcmVhZCBvbmx5IHVzZXIgb2JqZWN0LgovLyBhbmQgcHJvdmlkZXMgZWRpdGluZyBhbmQgc2F2aW5nIGZ1bmN0aW9uYWxpdHkuCmNsYXNzIHVzZXJfZWRpdF9hc3Npc3RhbnQKewogIHByaXZhdGUgJF91c2VyOwogIHByaXZhdGUgJF9uZXdfdWlkOwogIHByaXZhdGUgJF9uZXdfdXNlcm5hbWU7CiAgcHJpdmF0ZSAkX25ld19wYXNzd29yZDsKICBwcml2YXRlICRfcmVwZWF0X3Bhc3N3b3JkOwogIHByaXZhdGUgJF9kcmFmdF9ncm91cHM7CiAgcHJpdmF0ZSAkX2RyYWZ0X3Byb3BzOwogIHByaXZhdGUgJF9leHBpcmVzOwogIHByaXZhdGUgJF9jcmVhdGVkYXRlOwogIHByaXZhdGUgJF9pc19kaXNhYmxlZDsKICBwcml2YXRlICRfZm9yY2VfcGFzc3dvcmRfY2hhbmdlOwogIHByaXZhdGUgJF9mb3JjZV9jaGFuZ2Vfc2V0dGluZ3M7CiAgcHJpdmF0ZSAkX211c3RfdmFsaWRhdGU7CiAgCiAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCR1c2VyX2lkKQogIHsKICAgICRtb2QgICAgID0gXG1hbXNfdXRpbHM6OmdldF9tb2QoKTsKICAgICR1c2VyX2lkID0gKGludCkkdXNlcl9pZDsKICAgIAogICAgaWYoJHVzZXJfaWQgPCAxKQogICAgewogICAgICAvLyBhIGJyYW5kIG5ldyB1c2VyLi4uIHNldCBzb21lIGRlZmFsdCB2YWx1ZXMuCiAgICAgICR1c2VyID0gbmV3IHVzZXI7CiAgICAgIAogICAgICBpZigkbW9kLT5HZXRQcmVmZXJlbmNlKCd1c2VfcmFuZG9tdXNlcm5hbWUnKSkKICAgICAgewogICAgICAgICR0aGlzLT5uZXdfdXNlcm5hbWUgPSAkbW9kLT5HZW5lcmF0ZVJhbmRvbVVzZXJuYW1lKCk7CiAgICAgIH0KICAgICAgCiAgICAgICRkZmx0X2dyb3VwID0gKGludCkkbW9kLT5HZXRQcmVmZXJlbmNlKCdkZWZhdWx0X2dyb3VwJyk7CiAgICAgICRvbmVfZ3JvdXAgID0gKGJvb2wpJG1vZC0+R2V0UHJlZmVyZW5jZSgncmVxdWlyZV9vbmVncm91cCcpOwogICAgICAkZ3JvdXBzICAgICA9ICRtb2QtPkdldEdyb3VwTGlzdCgpOwogICAgICAKICAgICAgJGdyb3VwcyA9IFxhcnJheV9mbGlwKCRncm91cHMpOyAvLyBpdCdzIGJhY2t3YXJkcyBmb3IgaGlzdG9yaWNhbCByZWFzb25zLgogICAgICAKICAgICAgaWYoJGRmbHRfZ3JvdXApCiAgICAgIHsKICAgICAgICBpZihpc3NldCgkZ3JvdXBzWyRkZmx0X2dyb3VwXSkpCiAgICAgICAgewogICAgICAgICAgJHRoaXMtPl9kcmFmdF9ncm91cHNbXSA9ICRkZmx0X2dyb3VwOwogICAgICAgIH0KICAgICAgfQogICAgICBlbHNlIGlmKCRvbmVfZ3JvdXApCiAgICAgIHsKICAgICAgICAka2V5cyAgICAgICAgICAgICAgICAgID0gYXJyYXlfa2V5cygkZ3JvdXBzKTsKICAgICAgICAkdGhpcy0+X2RyYWZ0X2dyb3Vwc1tdID0gJGtleXNbMF07CiAgICAgIH0KICAgICAgCiAgICAgICR0bXAgICAgICAgICAgICA9IChpbnQpJG1vZC0+R2V0UHJlZmVyZW5jZSgnZXhwaXJlYWdlX21vbnRocycsIDUyMCk7CiAgICAgICR0aGlzLT5fZXhwaXJlcyA9IHN0cnRvdGltZSgiK3skdG1wfSBtb250aHMgMDA6MDAiKTsKICAgICAgCiAgICAgIGlmKCEkdGhpcy0+X2V4cGlyZXMgfHwgJHRtcCA9PSAwKQogICAgICB7CiAgICAgICAgJHRoaXMtPl9leHBpcmVzID0gUEhQX0lOVF9NQVg7CiAgICAgIH0KICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgJHVzZXIgICAgICAgICAgICAgICAgPSB1c2VyOjpsb2FkKCR1c2VyX2lkKTsKICAgICAgJHRoaXMtPl9kcmFmdF9ncm91cHMgPSAkdXNlci0+Z2V0X2dyb3VwcygpOwogICAgICAkdGhpcy0+X2NyZWF0ZWRhdGUgICA9ICR1c2VyLT5jcmVhdGVkYXRlX3RzOwogICAgICAkdGhpcy0+X2V4cGlyZXMgICAgICA9ICR1c2VyLT5leHBpcmVzX3RzOwogICAgfQogICAgJHRoaXMtPl9kcmFmdF9wcm9wcyA9ICR1c2VyLT5nZXRfcHJvcGVydGllcygpOwogICAgJHRoaXMtPl91c2VyICAgICAgICA9ICR1c2VyOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gX19nZXQoJGtleSkKICB7CiAgICBzd2l0Y2goJGtleSkKICAgIHsKICAgICAgY2FzZSAnaWQnOgogICAgICAgIGlmKGlzX251bGwoJHRoaXMtPl9uZXdfdWlkKSkKICAgICAgICB7CiAgICAgICAgICByZXR1cm4gJHRoaXMtPl91c2VyLT5pZDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgcmV0dXJuICR0aGlzLT5fbmV3X3VpZDsKICAgICAgCiAgICAgIGNhc2UgJ25ld191c2VybmFtZSc6CiAgICAgICAgaWYoISR0aGlzLT5fbmV3X3VzZXJuYW1lKQogICAgICAgIHsKICAgICAgICAgIHJldHVybiAkdGhpcy0+X3VzZXItPnVzZXJuYW1lOwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gJHRoaXMtPl9uZXdfdXNlcm5hbWU7CiAgICAgIAogICAgICBjYXNlICduZXdfcGFzc3dvcmQnOgogICAgICAgIHJldHVybiAkdGhpcy0+X25ld19wYXNzd29yZDsKICAgICAgCiAgICAgIGNhc2UgJ3JlcGVhdF9wYXNzd29yZCc6CiAgICAgICAgcmV0dXJuICR0aGlzLT5fcmVwZWF0X3Bhc3N3b3JkOwogICAgICAKICAgICAgY2FzZSAnY3JlYXRlZGF0ZSc6CiAgICAgICAgcmV0dXJuICR0aGlzLT5fY3JlYXRlZGF0ZTsKICAgICAgCiAgICAgIGNhc2UgJ2V4cGlyZXMnOgogICAgICAgIHJldHVybiAkdGhpcy0+X2V4cGlyZXM7CiAgICAgIAogICAgICBjYXNlICdmb3JjZV9wYXNzd29yZF9jaGFuZ2UnOgogICAgICAgIGlmKGlzX251bGwoJHRoaXMtPl9mb3JjZV9wYXNzd29yZF9jaGFuZ2UpKQogICAgICAgIHsKICAgICAgICAgIHJldHVybiAkdGhpcy0+X3VzZXItPmZvcmNlX25ld3B3OwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gJHRoaXMtPl9mb3JjZV9wYXNzd29yZF9jaGFuZ2U7CiAgICAgIAogICAgICBjYXNlICdmb3JjZV9jaGFuZ2Vfc2V0dGluZ3MnOgogICAgICAgIGlmKGlzX251bGwoJHRoaXMtPl9mb3JjZV9jaGFuZ2Vfc2V0dGluZ3MpKQogICAgICAgIHsKICAgICAgICAgIHJldHVybiAkdGhpcy0+X3VzZXItPmZvcmNlX2Noc2V0dGluZ3M7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiAkdGhpcy0+X2ZvcmNlX2NoYW5nZV9zZXR0aW5nczsKICAgICAgCiAgICAgIGNhc2UgJ211c3RfdmFsaWRhdGUnOgogICAgICAgIGlmKGlzX251bGwoJHRoaXMtPl9tdXN0X3ZhbGlkYXRlKSkKICAgICAgICB7CiAgICAgICAgICByZXR1cm4gJHRoaXMtPl91c2VyLT5tdXN0X3ZhbGlkYXRlOwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gJHRoaXMtPl9tdXN0X3ZhbGlkYXRlOwogICAgICAKICAgICAgY2FzZSAnaXNfZGlzYWJsZWQnOgogICAgICAgIGlmKGlzX251bGwoJHRoaXMtPl9pc19kaXNhYmxlZCkpCiAgICAgICAgewogICAgICAgICAgcmV0dXJuICR0aGlzLT5fdXNlci0+ZGlzYWJsZWQ7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiAkdGhpcy0+X2lzX2Rpc2FibGVkOwogICAgICAKICAgICAgY2FzZSAndmVyaWZ5Y29kZSc6CiAgICAgICAgLy8gZ2V0dGFibGUgb25seQogICAgICAgIGlmKCR0aGlzLT5pZCA+IDEpCiAgICAgICAgewogICAgICAgICAgcmV0dXJuICRtYW1zLT5HZXRVc2VyVGVtcENvZGUoJHRoaXMtPmlkKTsKICAgICAgICB9CiAgICAgIGJyZWFrOwogICAgICAKICAgICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gJHRoaXMtPl91c2VyLT5fX2dldCgka2V5KTsKICAgIH0KICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIF9fc2V0KCRrZXksICR2YWwpCiAgewogICAgc3dpdGNoKCRrZXkpCiAgICB7CiAgICAgIGNhc2UgJ25ld191c2VybmFtZSc6CiAgICAgICAgJHRoaXMtPl9uZXdfdXNlcm5hbWUgPSB0cmltKCR2YWwpOwogICAgICBicmVhazsKICAgICAgCiAgICAgIGNhc2UgJ25ld19wYXNzd29yZCc6CiAgICAgICAgJHRoaXMtPl9uZXdfcGFzc3dvcmQgPSAkdmFsOwogICAgICBicmVhazsKICAgICAgCiAgICAgIGNhc2UgJ3JlcGVhdF9wYXNzd29yZCc6CiAgICAgICAgJHRoaXMtPl9yZXBlYXRfcGFzc3dvcmQgPSAkdmFsOwogICAgICBicmVhazsKICAgICAgCiAgICAgIGNhc2UgJ2NyZWF0ZWRhdGUnOgogICAgICAgICR0aGlzLT5fY3JlYXRlZGF0ZSA9IChpbnQpJHZhbDsKICAgICAgYnJlYWs7CiAgICAgIAogICAgICBjYXNlICdleHBpcmVzJzoKICAgICAgICAkdGhpcy0+X2V4cGlyZXMgPSAoaW50KSR2YWw7CiAgICAgIGJyZWFrOwogICAgICAKICAgICAgY2FzZSAnaXNfZGlzYWJsZWQnOgogICAgICAgICR0aGlzLT5faXNfZGlzYWJsZWQgPSAoYm9vbCkkdmFsOwogICAgICBicmVhazsKICAgICAgCiAgICAgIGNhc2UgJ2ZvcmNlX3Bhc3N3b3JkX2NoYW5nZSc6CiAgICAgICAgJHRoaXMtPl9mb3JjZV9wYXNzd29yZF9jaGFuZ2UgPSAoYm9vbCkkdmFsOwogICAgICBicmVhazsKICAgICAgCiAgICAgIGNhc2UgJ2ZvcmNlX2NoYW5nZV9zZXR0aW5ncyc6CiAgICAgICAgJHRoaXMtPl9mb3JjZV9jaGFuZ2Vfc2V0dGluZ3MgPSAoYm9vbCkkdmFsOwogICAgICBicmVhazsKICAgICAgCiAgICAgIGNhc2UgJ211c3RfdmFsaWRhdGUnOgogICAgICAgICR0aGlzLT5fbXVzdF92YWxpZGF0ZSA9IChib29sKSR2YWw7CiAgICAgIGJyZWFrOwogICAgICAKICAgICAgZGVmYXVsdDoKICAgICAgICAkdGhpcy0+X3VzZXItPl9fc2V0KCRrZXksICR2YWwpOwogICAgICBicmVhazsKICAgIH0KICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIHZhbGlkYXRlKCkKICB7CiAgICAkbW9kID0gXG1hbXNfdXRpbHM6OmdldF9tb2QoKTsKICAgIGlmKCR0aGlzLT5fdXNlci0+aWQgPCAxKQogICAgewogICAgICAvLyBuZXcgdXNlcgogICAgICAvLyBtdXN0IGhhdmUgYSB1c2VybmFtZSwgYW5kIGl0IG11c3QgYmUgdmFsaWQKICAgICAgaWYoISRtb2QtPklzVmFsaWRVc2VybmFtZSgkdGhpcy0+bmV3X3VzZXJuYW1lKSkKICAgICAgewogICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkbW9kLT5MYW5nKCdlcnJvcl9pbnZhbGlkdXNlcm5hbWUnKSk7CiAgICAgIH0KICAgICAgJHRfdWlkID0gJG1vZC0+R2V0VXNlcklEKCR0aGlzLT5uZXdfdXNlcm5hbWUpOwogICAgICAKICAgICAgaWYoJHRfdWlkID4gMCkKICAgICAgewogICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkbW9kLT5MYW5nKCdlcnJvcl91c2VybmFtZV9leGlzdHMnKSk7CiAgICAgIH0KICAgICAgCiAgICAgIC8vIG11c3QgaGF2ZSBhIHBhc3N3b3JkLCBhbmQgaXQgbXVzdCBiZSB2YWxpZAogICAgICBpZighJHRoaXMtPm5ld19wYXNzd29yZCkKICAgICAgewogICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkbW9kLT5MYW5nKCdlcnJvcl9pbnZhbGlkcGFzc3dvcmQnKSk7CiAgICAgIH0KICAgICAgCiAgICAgIGlmKCEkbW9kLT5pc1ZhbGlkUGFzc3dvcmQoJHRoaXMtPm5ld19wYXNzd29yZCkpCiAgICAgIHsKICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJG1vZC0+TGFuZygnZXJyb3JfaW52YWxpZHBhc3N3b3JkJykpOwogICAgICB9CiAgICAgIAogICAgICAvLyByZXBlYXQgcGFzc3dvcmQgbXVzdCBiZSB2YWxpZC4KICAgICAgaWYoJHRoaXMtPm5ld19wYXNzd29yZCAhPSAkdGhpcy0+cmVwZWF0X3Bhc3N3b3JkKQogICAgICB7CiAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCRtb2QtPkxhbmcoJ2Vycm9yX3Bhc3N3b3JkbWlzbWF0Y2gnKSk7CiAgICAgIH0KICAgICAgCiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgIC8vIGVkaXRpbmcgYSB1c2VyLgogICAgICAvLyBpZiB3ZSBoYXZlIGEgdXNlcm5hbWUsIGl0IG11c3QgYmUgdmFsaWQgKGNoYW5naW5nIHVzZXJuYW1lKQogICAgICBpZigkdGhpcy0+X25ld191c2VybmFtZSAmJiAhJG1vZC0+SXNWYWxpZFVzZXJuYW1lKCR0aGlzLT5fbmV3X3VzZXJuYW1lLCBGQUxTRSkpCiAgICAgIHsKICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJG1vZC0+TGFuZygnZXJyb3JfaW52YWxpZHVzZXJuYW1lJykpOwogICAgICB9CiAgICAgICR0X3VpZCA9ICRtb2QtPkdldFVzZXJJRCgkdGhpcy0+bmV3X3VzZXJuYW1lKTsKICAgICAgaWYoJHRfdWlkID4gMCAmJiAkdF91aWQgIT0gJHRoaXMtPl91c2VyLT5pZCkKICAgICAgewogICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkbW9kLT5MYW5nKCdlcnJvcl91c2VybmFtZV9leGlzdHMnKSk7CiAgICAgIH0KICAgICAgCiAgICAgIC8vIGlmIHdlIGhhdmUgYSBwYXNzd29yZCwgaXQgbXVzdCBiZSB2YWxpZCwgYW5kIHJlcGVhdCBtdXN0IG1hdGNoCiAgICAgIGlmKCR0aGlzLT5uZXdfcGFzc3dvcmQpCiAgICAgIHsKICAgICAgICBpZighJG1vZC0+aXNWYWxpZFBhc3N3b3JkKCR0aGlzLT5uZXdfcGFzc3dvcmQpKQogICAgICAgIHsKICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkbW9kLT5MYW5nKCdlcnJvcl9pbnZhbGlkcGFzc3dvcmQnKSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIHJlcGVhdCBwYXNzd29yZCBtdXN0IGJlIHZhbGlkLgogICAgICAgIGlmKCR0aGlzLT5uZXdfcGFzc3dvcmQgIT0gJHRoaXMtPnJlcGVhdF9wYXNzd29yZCkKICAgICAgICB7CiAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJG1vZC0+TGFuZygnZXJyb3JfcGFzc3dvcmRtaXNtYXRjaCcpKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIAogICAgLy8gbmVlZCBhIHZhbGlkIGV4cGlyeSBkYXRlIHdoZW4gYWRkaW5nL2VkaXRpbmcgYSB1c2VyLgogICAgaWYoISR0aGlzLT5leHBpcmVzKQogICAgewogICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJG1vZC0+TGFuZygnZXJyb3JfaW52YWxpZGV4cGlyeWRhdGUnKSk7CiAgICB9CiAgICAKICAgIC8vIGlmIHJlcXVpcmUgbWVtYmVyc2hpcCBpbiBvbmUgZ3J1b3AsIG1ha2Ugc3VyZSB3ZSBoYXZlIG9uZS4KLy8gICAgaWYoJG1vZC0+R2V0UHJlZmVyZW5jZSgncmVxdWlyZV9vbmVncm91cCcpICYmIGNvdW50KCR0aGlzLT5fZHJhZnRfZ3JvdXBzKSA8IDEpCi8vICAgIHsKLy8gICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVleGNlcHRpb24oJG1vZC0+TGFuZygnZXJyb3Jfb25lZ3JvdXByZXF1aXJlZCcpKTsKLy8gICAgfQogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gc2V0X2dyb3VwcygkZ3JvdXBzID0gTlVMTCkKICB7CiAgICBpZihpc19udWxsKCRncm91cHMpKQogICAgewogICAgICAkdGhpcy0+X2RyYWZ0X2dyb3VwcyA9IFtdOwogICAgICAKICAgICAgcmV0dXJuOwogICAgfQogICAgaWYoIWlzX2FycmF5KCRncm91cHMpIHx8ICFjb3VudCgkZ3JvdXBzKSkKICAgIHsKICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignSW52YWxpZCBncm91cCBhcnJheSBwYXNzZWQgdG8gJyAuIF9fTUVUSE9EX18pOwogICAgfQogICAgJHRtcCA9IFtdOwogICAgZm9yZWFjaCgkZ3JvdXBzIGFzICRvbmUpCiAgICB7CiAgICAgICRvbmUgPSAoaW50KSRvbmU7CiAgICAgIGlmKCRvbmUgPCAxKQogICAgICB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgaWYoIWluX2FycmF5KCRvbmUsICR0bXApKQogICAgICB7CiAgICAgICAgJHRtcFtdID0gJG9uZTsKICAgICAgfQogICAgfQogICAgJHRtcCAgICAgICAgICAgICAgICAgPSBhcnJheV91bmlxdWUoJHRtcCk7CiAgICAkdGhpcy0+X2RyYWZ0X2dyb3VwcyA9ICR0bXA7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBtZW1iZXJvZigkZ2lkKQogIHsKICAgICRnaWQgPSAoaW50KSRnaWQ7CiAgICBpZigkZ2lkIDwgMSkKICAgIHsKICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignSW52YWxpZCBnaWQgcGFzc2VkIHRvICcgLiBfX01FVEhPRF9fKTsKICAgIH0KICAgIAogICAgcmV0dXJuIChpc19hcnJheSgkdGhpcy0+X2RyYWZ0X2dyb3VwcykgJiYgaW5fYXJyYXkoJGdpZCwgJHRoaXMtPl9kcmFmdF9ncm91cHMpKTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIGdldF9ncm91cHMoKQogIHsKICAgIHJldHVybiAkdGhpcy0+X2RyYWZ0X2dyb3VwczsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIHNldF9wcm9wZXJ0eSgkbmFtZSwgJHZhbCkKICB7CiAgICAkbmFtZSA9IHRyaW0oJG5hbWUpOwogICAgaWYoISRuYW1lKQogICAgewogICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdJbnZhbGlkIG5hbWUgcGFzc2VkIHRvICcgLiBfX01FVEhPRF9fKTsKICAgIH0KICAgICR0aGlzLT5fZHJhZnRfcHJvcHNbJG5hbWVdID0gKHN0cmluZykkdmFsOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3Byb3BlcnR5KCRuYW1lKQogIHsKICAgICRuYW1lID0gdHJpbSgkbmFtZSk7CiAgICBpZighJG5hbWUpCiAgICB7CiAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0ludmFsaWQgbmFtZSBwYXNzZWQgdG8gJyAuIF9fTUVUSE9EX18pOwogICAgfQogICAgaWYoaXNzZXQoJHRoaXMtPl9kcmFmdF9wcm9wc1skbmFtZV0pKQogICAgewogICAgICByZXR1cm4gJHRoaXMtPl9kcmFmdF9wcm9wc1skbmFtZV07CiAgICB9CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBlcmFzZV9wcm9wZXJ0eSgkbmFtZSkKICB7CiAgICAkbmFtZSA9IHRyaW0oJG5hbWUpOwogICAgaWYoISRuYW1lKQogICAgewogICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdJbnZhbGlkIG5hbWUgcGFzc2VkIHRvICcgLiBfX01FVEhPRF9fKTsKICAgIH0KICAgIGlmKGlzc2V0KCR0aGlzLT5fZHJhZnRfcHJvcHNbJG5hbWVdKSkKICAgIHsKICAgICAgdW5zZXQoJHRoaXMtPl9kcmFmdF9wcm9wc1skbmFtZV0pOwogICAgfQogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gY2FuX3ZhbGlkYXRlKCkKICB7CiAgICAvLyB0ZXN0IGlmIHRoZXJlIGlzIGVub3VnaCBpbmZvcm1hdGlvbiBmb3IgdGhpcyB1c2VyIHRvIGJlIGFibGUgdG8gcmUtdmFsaWRhdGUgaGltc2VsZgogICAgaWYoJHRoaXMtPmlkIDwgMSkKICAgIHsKICAgICAgcmV0dXJuIEZBTFNFOwogICAgfQogICAgCiAgICAkbWFtcyA9IFxtYW1zX3V0aWxzOjpnZXRfbW9kKCk7CiAgICBpZigkbWFtcy0+R2V0UHJlZmVyZW5jZSgndXNlcm5hbWVfaXNfZW1haWwnKSkKICAgIHsKICAgICAgcmV0dXJuIFRSVUU7CiAgICB9CiAgICAKICAgICRwcm9wcyA9IFxtYW1zX3V0aWxzOjpnZXRfcHJvcGVydGllc19mb3JfZ3JvdXBzKCR0aGlzLT5nZXRfZ3JvdXBzKCkpOwogICAgaWYoIWNvdW50KCRwcm9wcykpCiAgICB7CiAgICAgIHJldHVybiBGQUxTRTsKICAgIH0KICAgICRhbGxkZWZucyA9ICRtYW1zLT5HZXRQcm9wZXJ0eURlZm5zKCk7CiAgICAkZm5kICAgICAgPSBOVUxMOwogICAgZm9yZWFjaCgkcHJvcHMgYXMgJHByb3ApCiAgICB7CiAgICAgICRwcm9wX25hbWUgPSAkcHJvcFsnbmFtZSddOwogICAgICBpZihpc3NldCgkYWxsZGVmbnNbJHByb3BfbmFtZV0pICYmICRhbGxkZWZuc1skcHJvcF9uYW1lXVsndHlwZSddID09IDIpCiAgICAgIHsKICAgICAgICAkdmFsID0gJHRoaXMtPmdldF9wcm9wZXJ0eSgkcHJvcF9uYW1lKTsKICAgICAgICBpZigkdmFsKQogICAgICAgIHsKICAgICAgICAgIHJldHVybiBUUlVFOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgCiAgICByZXR1cm4gRkFMU0U7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBzdG9yZSgpCiAgewogICAgJGtleSAgICAgICAgICAgID0gXG1kNShfX0ZJTEVfXyk7CiAgICAkX1NFU1NJT05bJGtleV0gPSBcc2VyaWFsaXplKCR0aGlzKTsKICB9CiAgCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZXRyaWV2ZSgpCiAgewogICAgJGtleSA9IFxtZDUoX19GSUxFX18pOwogICAgCiAgICBpZighaXNzZXQoJF9TRVNTSU9OWyRrZXldKSkKICAgIHsKICAgICAgcmV0dXJuIE5VTEw7CiAgICB9CiAgICAkb2JqID0gXHVuc2VyaWFsaXplKCRfU0VTU0lPTlska2V5XSk7CiAgICB1bnNldCgkX1NFU1NJT05bJGtleV0pOwogICAgCiAgICByZXR1cm4gJG9iajsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIHNhdmUoKQogIHsKICAgICR1aWQgPSAkdGhpcy0+aWQ7CiAgICAkbW9kID0gXG1hbXNfdXRpbHM6OmdldF9tb2QoKTsKICAgIAogICAgaWYoJHVpZCA8IDEpCiAgICB7CiAgICAgIC8vIGFkZGluZyBhIG5ldyB1c2VyCiAgICAgICRyZXQgPSAkbW9kLT5BZGRVc2VyKCR0aGlzLT5uZXdfdXNlcm5hbWUsICR0aGlzLT5uZXdfcGFzc3dvcmQsICR0aGlzLT5leHBpcmVzLCBGQUxTRSwgJHRoaXMtPmNyZWF0ZWRhdGUpOwogICAgICAKICAgICAgaWYoIWlzX2FycmF5KCRyZXQpIHx8ICRyZXRbMF0gPT0gRkFMU0UpCiAgICAgIHsKICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHJldFsxXSk7CiAgICAgIH0KICAgICAgCiAgICAgICR1aWQgPSAkdGhpcy0+X25ld191aWQgPSAoaW50KSRyZXRbMV07CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgIC8vIHVwZGF0aW5nIGFuIGV4aXN0aW5nIHVzZXIKICAgICAgJHJlcyA9ICRtb2QtPlNldFVzZXIoJHVpZCwgJHRoaXMtPm5ld191c2VybmFtZSwgJHRoaXMtPm5ld19wYXNzd29yZCwgJHRoaXMtPmV4cGlyZXMpOwogICAgICAKICAgICAgaWYoIWlzX2FycmF5KCRyZXMpIHx8ICRyZXNbMF0gPT0gRkFMU0UpCiAgICAgIHsKICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0Vycm9yIHNldHRpbmcgdXNlciAnIC4gJHJlc1sxXSk7CiAgICAgIH0KICAgIH0KICAgIAogICAgJG1vZC0+U2V0VXNlckRpc2FibGVkKCR1aWQsICR0aGlzLT5pc19kaXNhYmxlZCk7CiAgICAkbW9kLT5Gb3JjZVBhc3N3b3JkQ2hhbmdlKCR1aWQsICR0aGlzLT5mb3JjZV9wYXNzd29yZF9jaGFuZ2UpOwogICAgJG1vZC0+Rm9yY2VDaGFuZ2VTZXR0aW5ncygkdWlkLCAkdGhpcy0+Zm9yY2VfY2hhbmdlX3NldHRpbmdzKTsKICAgICRtb2QtPkZvcmNlVmVyaWZ5KCR1aWQsICR0aGlzLT5tdXN0X3ZhbGlkYXRlKTsKICAgIAogICAgLy8gZG8gdGhpcywganVzdCBpIG4gY2FzZS4KICAgICRtb2QtPlJlbW92ZVVzZXJUZW1wQ29kZSgkdWlkKTsKICAgIAogICAgLy8gYWRkIHRoZSB1c2VyIHRvIGhpcyBncm91cHMKICAgICRyZXQgPSAkbW9kLT5TZXRVc2VyR3JvdXBzKCR1aWQsICR0aGlzLT5fZHJhZnRfZ3JvdXBzKTsKICAgIGlmKCFpc19hcnJheSgkcmV0KSB8fCAkcmV0WzBdID09IEZBTFNFKQogICAgewogICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJG1vZC0+TGFuZygnZXJyb3JfY2FudGFzc2lnbnVzZXInKSk7CiAgICB9CiAgICAKICAgIC8vIGFuZCB0aGVuIGFkZCBoaXMgcHJvcGVydGllcy4KICAgIC8vJG1vZC0+RGVsZXRlVXNlclByb3BlcnR5RnVsbCggJycsICR1aWQsIFRSVUUgKTsgLy8gREVMRVRFIEFMTCBQUk9QRVJUSUVTCiAgICBpZihjb3VudCgkdGhpcy0+X2RyYWZ0X3Byb3BzKSkKICAgIHsKICAgICAgZm9yZWFjaCgkdGhpcy0+X2RyYWZ0X3Byb3BzIGFzICRwcm9wX25hbWUgPT4gJHZhbCkKICAgICAgewogICAgICAgICRyZXQgPSAkbW9kLT5TZXRVc2VyUHJvcGVydHlGdWxsKCRwcm9wX25hbWUsICR2YWwsICR1aWQpOwogICAgICAgIGlmKCEkcmV0KQogICAgICAgIHsKICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignRXJyb3IgU2V0dGluZyBwcm9wZXJ0eSAnIC4gJHByb3BfbmFtZSAuICcgdG8gJyAuICR2YWwgLiAnIGZvciB1c2VyICcgLiAkdWlkKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/class.utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQpuYW1lc3BhY2UgTUFNUzsKdXNlIENtc0V4Y2VwdGlvbjsKdXNlIHh0X3V0aWxzOwoKZmluYWwgY2xhc3MgdXRpbHMKewogICAgcHJpdmF0ZSBzdGF0aWMgJF9tb2Q7CiAgICBwcml2YXRlIHN0YXRpYyAkX3VzZXJmaWxlczsKCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkge30KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9tb2QoKQogICAgewogICAgICAgIGlmKCAhc2VsZjo6JF9tb2QgKQogICAgICAgIHsKICAgICAgICAgIHNlbGY6OiRfbW9kID0gXGNtc191dGlsczo6Z2V0X21vZHVsZShcTU9EX01BTVMpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gc2VsZjo6JF9tb2Q7CiAgICB9CiAgCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZW5lcmF0ZV9yYW5kb21fcHJpbnRhYmxlX3N0cmluZygpCiAgewogICAgJGNvZGUgPSBcc3RydG91cHBlcihcc3Vic3RyKFxtZDUoX19GSUxFX18gLiBcc2Vzc2lvbl9pZCgpIC4gXHJhbmQoKSAuIFxtaWNyb3RpbWUoVFJVRSkpLCAwLCAyNSkpOwogICAgCiAgICByZXR1cm4gJGNvZGU7CiAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdXNpbmdfc3RkX2NvbnN1bWVyKCkKICAgIHsKICAgICAgICAkbWFtcyA9IHNlbGY6OmdldF9tb2QoKTsKICAgICAgICAkbmFtZSA9ICRtYW1zLT5HZXRQcmVmZXJlbmNlKCdhdXRoX21vZHVsZScsJycpOwogICAgICAgIGlmKCcnID09ICRuYW1lIHx8ICdfX0JVSUxUSU5fXycgPT0gJG5hbWUpIHsgcmV0dXJuIFRSVUU7IH0KICAgICAgICAKICAgICAgICByZXR1cm4gRkFMU0U7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiAmZ2V0X3N0ZF9jb25zdW1lcigpCiAgICB7CiAgICAgICAgJG9iaiA9IG5ldyBcbWFtc19zdGRfY29uc3VtZXIoKTsKICAgICAgICByZXR1cm4gJG9iajsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9hdXRoX2NvbnN1bWVyKCkKICAgIHsKICAgICAgICAkbWFtcyA9IHNlbGY6OmdldF9tb2QoKTsKICAgICAgICAkbmFtZSA9ICRtYW1zLT5HZXRQcmVmZXJlbmNlKCdhdXRoX21vZHVsZScsJycpOwogICAgICAgIAogICAgICAgIGlmKCcnID09ICRuYW1lIHx8ICdfX0JVSUxUSU5fXycgPT0gJG5hbWUpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gc2VsZjo6Z2V0X3N0ZF9jb25zdW1lcigpOwogICAgICAgIH0KCiAgICAgICAgJG1vZHVsZSA9IHh0X3V0aWxzOjpnZXRfbW9kdWxlKCRuYW1lKTsKICAgICAgICAkcmVzID0gbnVsbDsKICAgICAgICBpZiggXGlzX29iamVjdCgkbW9kdWxlKSApCiAgICAgICAgewogICAgICAgICAgICAkb2JqID0gJG1vZHVsZS0+R2V0TUFNU0F1dGhDb25zdW1lcigpOwogICAgICAgICAgICAKICAgICAgICAgICAgcmV0dXJuICRvYmo7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6Z2V0X3N0ZF9jb25zdW1lcigpOwogICAgfQogIAogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X3VzZXJsaXN0KCRub25lID0gTlVMTCkKICB7CiAgICBzdGF0aWMgJGxpc3Q7CiAgICBpZighXGlzX2FycmF5KCRsaXN0KSkKICAgIHsKICAgICAgJGxpc3QgPSBbXTsKICAgICAgCiAgICAgIC8vIG5vdyBhZGQgaW4gbWFtcyB1c2VycwogICAgICAkbWFtcyA9IHNlbGY6OmdldF9tb2QoKTsKICAgICAgaWYoXGlzX29iamVjdCgkbWFtcykpCiAgICAgIHsKICAgICAgICAkcXVlcnkgPSBuZXcgXG1hbXNfdXNlcl9xdWVyeTsKICAgICAgICAKICAgICAgICAkcXVlcnktPmFkZF9hbmRfb3B0KFxtYW1zX3VzZXJfcXVlcnlfT1BUOjpNQVRDSF9OT1RFWFBJUkVEKTsKICAgICAgICAkcXVlcnktPmFkZF9hbmRfb3B0KFxtYW1zX3VzZXJfcXVlcnlfT1BUOjpNQVRDSF9OT1RESVNBQkxFRCk7CiAgICAgICAgJHF1ZXJ5LT5zZXRfc29ydGJ5KFxtYW1zX3VzZXJfcXVlcnk6OlJFU1VMVF9TT1JUQllfVVNFUk5BTUUpOwogICAgICAgICRxdWVyeS0+c2V0X3NvcnRvcmRlcihcbWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVE9SREVSX0FTQyk7CiAgICAgICAgCiAgICAgICAgJHJzID0gJHF1ZXJ5LT5leGVjdXRlKCk7CiAgICAgICAgCiAgICAgICAgaWYoJHJzLT5nZXRfZm91bmRfcm93cygpID4gMCAmJiAkbm9uZSkKICAgICAgICB7CiAgICAgICAgICAkbGlzdFsnJ10gPSAkbWFtcy0+TGFuZygnbm9uZScpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICB3aGlsZSghJHJzLT5FT0YoKSkKICAgICAgICB7CiAgICAgICAgICAkbGlzdFskcnMtPmZpZWxkc1snaWQnXV0gPSAkcnMtPmZpZWxkc1sndXNlcm5hbWUnXTsKICAgICAgICAgICRycy0+TW92ZU5leHQoKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIAogICAgcmV0dXJuICRsaXN0OwogIH0KICAKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF90ZW1wbGF0ZSgkcGFyYW1zLCAka2V5LCAkdHlwZW5hbWUpCiAgewogICAgaWYoJGtleSkKICAgIHsKICAgICAgJHRwbCA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCAka2V5KTsKICAgICAgaWYoJHRwbCkgeyByZXR1cm4gJHRwbDsgfQogICAgfQogICAgCiAgICAkdHBsID0gXENtc0xheW91dFRlbXBsYXRlOjpsb2FkX2RmbHRfYnlfdHlwZSgkdHlwZW5hbWUpOwogICAgCiAgICBpZigkdHBsKSB7IHJldHVybiAkdHBsLT5nZXRfbmFtZSgpOyB9CiAgICAKICAgIGF1ZGl0KCcnLCAnTUFNUycsICdObyBkZWZhdWx0IHRlbXBsYXRlIG9mIHR5cGUgJyAuICR0eXBlbmFtZSAuICcgZm91bmQnKTsKICAgIAogICAgcmV0dXJuICcnOwogIH0KICAKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNoZWNrVXBsb2FkKCRrZXkpCiAgewogICAgJG1vZCA9IHNlbGY6OmdldF9tb2QoKTsKICAgIAogICAgaWYoIWlzc2V0KCRfRklMRVNbJGtleV0pIHx8ICFpc3NldCgkX0ZJTEVTKSkKICAgIHsKICAgICAgcmV0dXJuIFtGQUxTRSwgJG1vZC0+TGFuZygnZXJyb3JfbWlzc2luZ191cGxvYWQnKV07CiAgICB9CiAgICAKICAgICRmaWxlID0gJF9GSUxFU1ska2V5XTsKICAgIAogICAgaWYoIWlzc2V0KCRmaWxlWyduYW1lJ10sICRmaWxlWydzaXplJ10pIHx8IDAgPT09ICRmaWxlWydzaXplJ10pCiAgICB7CiAgICAgIHJldHVybiBbRkFMU0UsICRtb2QtPkxhbmcoJ2Vycm9yX3Byb2JsZW1fdXBsb2FkJyldOwogICAgfQogICAgCiAgICBpZighaXNzZXQgKCRmaWxlWyd0eXBlJ10pKSB7ICRmaWxlWyd0eXBlJ10gPSAnJzsgfQogICAgCiAgIC8vIGlmKCFpc3NldCAoJGZpbGVbJ3NpemUnXSkpIHsgJGZpbGVbJ3NpemUnXSA9ICcnOyB9ICMgcmVkdW5kYW50PwogICAgCiAgICBpZighaXNzZXQgKCRmaWxlWyd0bXBfbmFtZSddKSkKICAgIHsKICAgICAgcmV0dXJuIFtGQUxTRSwgJG1vZC0+TGFuZygnZXJyb3JfcHJvYmxlbV91cGxvYWQnKV07CiAgICB9CiAgICAKICAgICMgcmVjZW50bHkgY2hhbmdlZDoga2VlcCBhbiBleWUgb24gdGhlIG5leHQgdHdvIGxpbmVzIChKTSkKICAgICRhbGxvd2VkQ2hhcnMgPSAnYS16QS1aMC05LiQlXCdgXC1Ae31+ISMoKSZfXis9Kic7CiAgICAkZmlsZVsnbmFtZSddID0gXHByZWdfcmVwbGFjZSgnL1teJyAuICRhbGxvd2VkQ2hhcnMgLiAnXS8nLCAnXycsIFxzdHJfcmVwbGFjZShbJyAnLCAnJTIwJ10sICdfJywgJGZpbGVbJ25hbWUnXSkpOwoKICAgIC8vIGNoZWNrIHRoZSBmaWxlbmFtZQogICAgaWYoISRtb2QtPmlzX2FsbG93ZWRfdXBsb2FkKCRmaWxlWyduYW1lJ10pKQogICAgewogICAgICByZXR1cm4gW0ZBTFNFLCAkbW9kLT5MYW5nKCdlcnJvcl9pbnZhbGlkZmlsZWV4dGVuc2lvbicpXTsKICAgIH0KICAgIAogICAgcmV0dXJuIFtUUlVFXTsKICB9CiAgCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfcHJvcGVydGllc19mb3JfZ3JvdXBzKCRncm91cGxpc3QpCiAgewogICAgJG91dCA9IFtdOwogICAgZm9yZWFjaCgkZ3JvdXBsaXN0IGFzICRnaWQpCiAgICB7CiAgICAgICRnaWQgPSAoaW50KSRnaWQ7CiAgICAgIGlmKCRnaWQgPCAxKSB7IGNvbnRpbnVlOyB9CiAgICAgIAogICAgICAkcmVsYXRpb25zID0gXG1hbXNfdXRpbHM6OmdldF9tb2QoKS0+R2V0R3JvdXBQcm9wZXJ0eVJlbGF0aW9ucygkZ2lkKTsKICAgICAgJG91dCAgICAgICA9IFxNQU1TXFJSVXRpbHM6OmFycmF5X21lcmdlX2J5X25hbWVfcmVxdWlyZWQoJG91dCwgJHJlbGF0aW9ucyk7CiAgICB9CiAgICAKICAgIFx1YXNvcnQoJG91dCwgWyd4dF9hcnJheScsICdjb21wYXJlX2VsZW1lbnRzX2J5X3NvcnRvcmRlcl9rZXknXSk7CiAgICAKICAgIHJldHVybiAkb3V0OwogIH0KICAKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF91c2Vyc19mcm9tX2ZpbHRlcigkZmlsdGVyLCAkb2Zmc2V0LCAmJHRvdGFsX21hdGNoZXMpCiAgewogICAgJGxpbWl0ICAgICAgICAgID0gJGZpbHRlclsnbGltaXQnXTsKICAgICRncm91cGlkICAgICAgICA9ICRmaWx0ZXJbJ2dyb3VwJ107CiAgICAkdXNlcnJlZ2V4ICAgICAgPSAkZmlsdGVyWydyZWdleCddOwogICAgJHByb3BlcnR5ICAgICAgID0gJGZpbHRlclsncHJvcHNlbCddOwogICAgJHByb3ByZWdleCAgICAgID0gJGZpbHRlclsncHJvcHZhbCddOwogICAgJGxvZ2dlZGlub25seSAgID0gJGZpbHRlclsnbG9nZ2VkaW5vbmx5J107CiAgICAkc29ydCAgICAgICAgICAgPSAkZmlsdGVyWydzb3J0YnknXTsKICAgICRkaXNhYmxlZHN0YXR1cyA9ICRmaWx0ZXJbJ2Rpc2FibGVkc3RhdHVzJ10gPz8gTlVMTDsKICAgIAogICAgLy8gdG9kbzogdGhpcyBzaG91bGQgZ28gaW50byB0aGUgY29uc3VtZXIuCiAgICAkcXVlcnkgPSBuZXcgXG1hbXNfdXNlcl9xdWVyeSgpOwogICAgJHF1ZXJ5LT5zZXRfcmVzdWx0X3R5cGUoXG1hbXNfdXNlcl9xdWVyeTo6UkVTVUxUX1RZUEVfRlVMTCk7CiAgICAKICAgIGlmKChpbnQpJGxpbWl0ID4gMCkgeyAkcXVlcnktPnNldF9wYWdlbGltaXQoJGxpbWl0KTsgfQogICAgCiAgICBpZigoaW50KSRvZmZzZXQgPiAwKSB7ICRxdWVyeS0+c2V0X29mZnNldCgkb2Zmc2V0KTsgfQogICAgCiAgICBpZigkZ3JvdXBpZCA+IDApCiAgICB7CiAgICAgICRxdWVyeS0+YWRkX2FuZF9vcHQoXG1hbXNfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX0dST1VQSUQsICRncm91cGlkKTsKICAgIH0KICAgIAogICAgaWYoJHVzZXJyZWdleCkKICAgIHsKICAgICAgJHF1ZXJ5LT5hZGRfYW5kX29wdChcbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfVVNFUk5BTUVfUkUsICR1c2VycmVnZXgpOwogICAgfQogICAgCiAgICBpZigkcHJvcGVydHkpCiAgICB7CiAgICAgICRkZWZuID0gc2VsZjo6Z2V0X21vZCgpLT5HZXRQcm9wZXJ0eURlZm4oJHByb3BlcnR5KTsKICAgICAgJG9iaiAgPSBOVUxMOwogICAgICAKICAgICAgIyBjaGFuZ2VkIHJlY2VudGx5IGtlZXAgYW4gZXllIG9uIHRoaXMKICAgICAgaWYoKCRkZWZuWyd0eXBlJ10gPT0gXE1BTVM6OkZJRUxEVFlQRV9DSEVDS0JPWCkgJiYgJzAnID09PSBcdHJpbSgkcHJvcHJlZ2V4KSkKICAgICAgewogICAgICAgIC8vIG5lZWQgdG8gdGVzdCBpZiB0aGUgcHJvcGVydHkgaXMgTk9UIHNldAogICAgICAgICRvYmogPSBuZXcgXG1hbXNfdXNlcl9xdWVyeV9vcHQoXG1hbXNfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX05PVEhBU1BST1BFUlRZLCAkcHJvcGVydHkpOwogICAgICB9CiAgICAgIAogICAgICBpZighJG9iaiAmJiAkcHJvcHJlZ2V4KQogICAgICB7CiAgICAgICAgJG9iaiA9IG5ldyBcbWFtc191c2VyX3F1ZXJ5X29wdChcbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfUFJPUEVSVFlfUkUsICRwcm9wZXJ0eSwgJHByb3ByZWdleCk7CiAgICAgIH0KICAgICAgCiAgICAgIGlmKCRvYmopIHsgJHF1ZXJ5LT5hZGRfYW5kX29wdF9vYmooJG9iaik7IH0KICAgIH0KICAgIAogICAgaWYoJGxvZ2dlZGlub25seSkKICAgIHsKICAgICAgJHF1ZXJ5LT5hZGRfYW5kX29wdChcbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfTE9HR0VESU4sIDEpOwogICAgfQogICAgCiAgICBzd2l0Y2goJGRpc2FibGVkc3RhdHVzKQogICAgewogICAgICBjYXNlICdlbic6CiAgICAgICAgJHF1ZXJ5LT5hZGRfYW5kX29wdChcbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfTk9URElTQUJMRUQpOwogICAgICBicmVhazsKICAgICAgY2FzZSAnZGlzJzoKICAgICAgICAkcXVlcnktPmFkZF9hbmRfb3B0KFxtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9ESVNBQkxFRCk7CiAgICAgIGJyZWFrOwogICAgfQogICAgCiAgICBzd2l0Y2goJHNvcnQpCiAgICB7CiAgICAgIGNhc2UgJ3VzZXJuYW1lJzoKICAgICAgY2FzZSAndXNlcm5hbWUgYXNjJzoKICAgICAgICAkcXVlcnktPnNldF9zb3J0YnkoXG1hbXNfdXNlcl9xdWVyeTo6UkVTVUxUX1NPUlRCWV9VU0VSTkFNRSk7CiAgICAgICAgJHF1ZXJ5LT5zZXRfc29ydG9yZGVyKFxtYW1zX3VzZXJfcXVlcnk6OlJFU1VMVF9TT1JUT1JERVJfQVNDKTsKICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ3VzZXJuYW1lIGRlc2MnOgogICAgICAgICRxdWVyeS0+c2V0X3NvcnRieShcbWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVEJZX1VTRVJOQU1FKTsKICAgICAgICAkcXVlcnktPnNldF9zb3J0b3JkZXIoXG1hbXNfdXNlcl9xdWVyeTo6UkVTVUxUX1NPUlRPUkRFUl9ERVNDKTsKICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ2NyZWF0ZWRhdGUnOgogICAgICBjYXNlICdjcmVhdGVkYXRlIGFzYyc6CiAgICAgICAgJHF1ZXJ5LT5zZXRfc29ydGJ5KFxtYW1zX3VzZXJfcXVlcnk6OlJFU1VMVF9TT1JUQllfQ1JFQVRFRCk7CiAgICAgICAgJHF1ZXJ5LT5zZXRfc29ydG9yZGVyKFxtYW1zX3VzZXJfcXVlcnk6OlJFU1VMVF9TT1JUT1JERVJfQVNDKTsKICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ2NyZWF0ZWRhdGUgZGVzYyc6CiAgICAgICAgJHF1ZXJ5LT5zZXRfc29ydGJ5KFxtYW1zX3VzZXJfcXVlcnk6OlJFU1VMVF9TT1JUQllfQ1JFQVRFRCk7CiAgICAgICAgJHF1ZXJ5LT5zZXRfc29ydG9yZGVyKFxtYW1zX3VzZXJfcXVlcnk6OlJFU1VMVF9TT1JUT1JERVJfREVTQyk7CiAgICAgIGJyZWFrOwogICAgICBjYXNlICdleHBpcmVzJzoKICAgICAgY2FzZSAnZXhwaXJlcyBhc2MnOgogICAgICAgICRxdWVyeS0+c2V0X3NvcnRieShcbWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVEJZX0VYUElSRVMpOwogICAgICAgICRxdWVyeS0+c2V0X3NvcnRvcmRlcihcbWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVE9SREVSX0FTQyk7CiAgICAgIGJyZWFrOwogICAgICBjYXNlICdleHBpcmVzIGRlc2MnOgogICAgICAgICRxdWVyeS0+c2V0X3NvcnRieShcbWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVEJZX0VYUElSRVMpOwogICAgICAgICRxdWVyeS0+c2V0X3NvcnRvcmRlcihcbWFtc191c2VyX3F1ZXJ5OjpSRVNVTFRfU09SVE9SREVSX0RFU0MpOwogICAgICBicmVhazsKICAgIH0KICAgIAogICAgJHJzICAgICAgICAgICAgPSAkcXVlcnktPmV4ZWN1dGUoKTsKICAgICR0b3RhbF9tYXRjaGVzID0gJHJzLT5nZXRfZm91bmRfcm93cygpOwogICAgJGRhdGEgICAgICAgICAgPSBbXTsKICAgIHdoaWxlKCEkcnMtPkVPRikKICAgIHsKICAgICAgJGRhdGFbXSA9ICRycy0+ZmllbGRzOwogICAgICAkcnMtPk1vdmVOZXh0KCk7CiAgICB9CiAgICAKICAgIHJldHVybiAkZGF0YTsKICB9CiAgCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZXNvbHZlX3ByZWZ0cGxfdG9fcGFnZSgkcHJlZm5hbWUsICR1aWQsICRkZmx0ID0gTlVMTCkKICB7CiAgICAkcHJlZm5hbWUgPSBcdHJpbSgkcHJlZm5hbWUpOwogICAgJHVpZCAgICAgID0gKGludCkkdWlkOwogICAgCiAgICBpZighJHByZWZuYW1lIHx8ICR1aWQgPCAxKSB7IHJldHVybiAkZGZsdDsgfQogICAgCiAgICAvLyBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uIG1heWJlLgogICAgJG1hbXMgPSBzZWxmOjpnZXRfbW9kKCk7CiAgICAkcmVzICA9ICRtYW1zLT5HZXRVc2VySW5mbygkdWlkKTsKICAgIAogICAgaWYoIVxpc19hcnJheSgkcmVzKSB8fCBGQUxTRSA9PSAkcmVzWzBdKSB7IHJldHVybiAkZGZsdDsgfQogICAgCiAgICAkdWluZm8gICA9ICRyZXNbMV07CiAgICAkdHBsZGF0YSA9ICRtYW1zLT5HZXRQcmVmZXJlbmNlKCRwcmVmbmFtZSk7CiAgICAKICAgIGlmKCEkdHBsZGF0YSkgeyByZXR1cm4gJGRmbHQ7IH0KICAgIAogICAgJHNtYXJ0eSAgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKICAgICR0bXBfdHBsID0gJHNtYXJ0eS0+Q3JlYXRlVGVtcGxhdGUoJ3N0cmluZzonIC4gJHRwbGRhdGEpOwogICAgCiAgICAkdG1wX3RwbC0+YXNzaWduKCd1c2VybmFtZScsICR1aW5mb1sndXNlcm5hbWUnXSk7CiAgICAkdG1wX3RwbC0+YXNzaWduKCd1aWQnLCAkdWlkKTsKICAgIAogICAgJGdyb3VwcyAgICA9ICRtYW1zLT5HZXRNZW1iZXJHcm91cHNBcnJheSgkdWlkKTsKICAgICRncm91cG5hbWUgPSBOVUxMOwogICAgCiAgICBpZihcY291bnQoJGdyb3VwcykpCiAgICB7CiAgICAgICRncm91cG5hbWUgPSAkbWFtcy0+R2V0R3JvdXBOYW1lKCRncm91cHNbMF1bJ2dyb3VwaWQnXSk7CiAgICB9CiAgICAKICAgICR0bXBfdHBsLT5hc3NpZ24oJ2dyb3VwbmFtZScsICRncm91cG5hbWUpOwogICAgJHBhZ2UgPSAkdG1wX3RwbC0+ZmV0Y2goKTsKICAgICRkZXN0ID0gJG1hbXMtPnJlc29sdmVfYWxpYXNfb3JfaWQoJHBhZ2UpOwogICAgCiAgICBpZigkZGVzdCkgeyByZXR1cm4gJGRlc3Q7IH0KICAgIAogICAgcmV0dXJuICRkZmx0OwogIH0KICAKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNhdmVfdGVtcF9sb2dpbmRhdGEoJHVzZXJuYW1lLCAkcGFzc3dvcmQsICRvbmx5Z3JvdXBzKQogIHsKICAgICRvYmogICAgICAgICAgICAgPSBuZXcgXFN0ZENsYXNzOwogICAgJG9iai0+dXNlcm5hbWUgICA9ICR1c2VybmFtZTsKICAgICRvYmotPnBhc3N3b3JkICAgPSAkcGFzc3dvcmQ7IC8vIHBsYWluIHRleHQKICAgICRvYmotPm9ubHlncm91cHMgPSAkb25seWdyb3VwczsKICAgICRrZXkgICAgICAgICAgICAgPSBcbWQ1KF9fQ0xBU1NfXyAuIF9fRklMRV9fKTsKICAgICRkYXRhICAgICAgICAgICAgPSBceHRfZW5jcnlwdDo6ZW5jcnlwdCgka2V5LCBcc2VyaWFsaXplKCRvYmopKTsKICAgICRtYW1zICAgICAgICAgICAgPSBzZWxmOjpnZXRfbW9kKCk7CiAgICAkbWFtcy0+c2Vzc2lvbl9wdXQoJGtleSwgJGRhdGEpOwogIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJldHJpZXZlX3RlbXBfbG9naW5kYXRhKCkKICAgIHsKICAgICAgICAka2V5ID0gXG1kNShfX0NMQVNTX18gLiBfX0ZJTEVfXyk7CiAgICAgICAgJG1hbXMgPSBzZWxmOjpnZXRfbW9kKCk7CiAgICAgICAgJGRhdGEgPSAkbWFtcy0+c2Vzc2lvbl9nZXQoICRrZXkgKTsKICAgICAgICAKICAgICAgICBpZiggISRkYXRhICkgeyByZXR1cm4gW107IH0KICAgICAgICAKICAgICAgICAkbWFtcy0+c2Vzc2lvbl9jbGVhciggJGtleSApOwogICAgICAgICRkYXRhID0gXHVuc2VyaWFsaXplKFx4dF9lbmNyeXB0OjpkZWNyeXB0KCRrZXksICRkYXRhICkgKTsKICAgICAgICAKICAgICAgICByZXR1cm4gJGRhdGE7CiAgICB9CiAgICAKICAvKioKICAgKiBBIGhvb2sgdGhhdCBpcyB0cmlnZ2VyZWQgd2hlbiBhIHVzZXIgaXMgZGVsZXRlZC4KICAgKgogICAqIFRoaXMgaG9vayBjaGVja3MgaWYgdGhlcmUgYXJlIGZpbGVzIHRvIGRlbGV0ZSBmb3IgdGhpcyB1c2VyIGFuZCB0aGF0IHRoZXkgY2FuIGJlIGRlbGV0ZWQuCiAgICogSWYgdGhlcmUgaXMgYW4gZXJyb3IsIGl0IHRocm93cyBhIFJ1bnRpbWVFeGNlcHRpb24uCiAgICoKICAgKiBAcGFyYW0gYXJyYXkgJHBhcmFtcyBUaGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gdGhlIGhvb2suCiAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiBJZiB0aGVyZSBpcyBhbiBpbnN1ZmZpY2llbnQgcGVybWlzc2lvbiB0byByZW1vdmUgYSB1c2VyIGZpbGUgb3IgdGh1bWJuYWlsLgogICAqIEByZXR1cm4gYXJyYXkgVGhlIG1vZGlmaWVkIHBhcmFtZXRlcnMuCiAgICovCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBob29rX29uZGVsZXRldXNlcigkcGFyYW1zKQogIHsKICAgIHNlbGY6OiRfdXNlcmZpbGVzID0gTlVMTDsKICAgICR1aWQgICAgICAgICAgICAgID0gKGludCkkcGFyYW1zWydpZCddOwogICAgCiAgICBpZigkdWlkIDwgMSkgeyByZXR1cm4gJHBhcmFtczsgfQogICAgCiAgICAkZmlsZXMgPSBzZWxmOjpnZXRfbW9kKCktPkdldFVzZXJGaWxlc0Z1bGwoJHVpZCwgVFJVRSk7CiAgICAKICAgIGlmKCEkZmlsZXMpIHsgcmV0dXJuICRwYXJhbXM7IH0KICAgIAogICAgJHBhdGggPSBzZWxmOjpnZXRfbW9kKCktPmdldF91cGxvYWRfZGlybmFtZSgpOwogICAgCiAgICBmb3JlYWNoKCRmaWxlcyBhcyAkZmlsZSkKICAgIHsKICAgICAgJGZuID0gIiRwYXRoLyRmaWxlIjsKICAgICAgJHRuID0gIiRwYXRoL3RodW1iX3skZmlsZX0iOwogICAgICAKICAgICAgaWYoXGlzX2ZpbGUoJGZuKSAmJiAhXGlzX3dyaXRhYmxlKCRmbikpCiAgICAgIHsKICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIkluc3VmZmljaWVudCBwZXJtaXNzaW9uIHRvIHJlbW92ZSB1c2VyIGZpbGUgJGZpbGUiKTsKICAgICAgfQogICAgICAKICAgICAgaWYoXGlzX2ZpbGUoJHRuKSAmJiAhXGlzX3dyaXRhYmxlKCR0bikpCiAgICAgIHsKICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIkluc3VmZmljaWVudCBwZXJtaXNzaW9uIHRvIHJlbW92ZSB1c2VyIHRodW1ibmFpbCBmb3IgJGZpbGUiKTsKICAgICAgfQogICAgfQogICAgCiAgICBzZWxmOjokX3VzZXJmaWxlcyA9ICRmaWxlczsKICAgIAogICAgcmV0dXJuICRwYXJhbXM7CiAgfQogIAogIC8qKgogICAqIEEgaG9vayB0aGF0IGlzIHRyaWdnZXJlZCB3aGVuIGEgdXNlciBpcyBkZWxldGVkLgogICAqCiAgICogVGhpcyBob29rIGNoZWNrcyBpZiB0aGVyZSBhcmUgZmlsZXMgdG8gZGVsZXRlIGZvciB0aGlzIHVzZXIgYW5kIHRoYXQgdGhleSBjYW4gYmUgZGVsZXRlZC4KICAgKgogICAqIEBwYXJhbSBhcnJheSAkcGFyYW1zIFRoZSBwYXJhbWV0ZXJzIHBhc3NlZCB0byB0aGUgaG9vay4KICAgKiBAcmV0dXJuIGFycmF5IFRoZSBtb2RpZmllZCBwYXJhbWV0ZXJzLgogICAqLwogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaG9va19hZnRlcmRlbGV0ZXVzZXIoJHBhcmFtcykKICB7CiAgICAkdWlkID0gKGludCkkcGFyYW1zWydpZCddOwogICAgCiAgICBpZigkdWlkIDwgMSkgeyByZXR1cm4gJHBhcmFtczsgfQogICAgaWYoIXNlbGY6OiRfdXNlcmZpbGVzKSB7IHJldHVybiAkcGFyYW1zOyB9CiAgICAKICAgICRmaWxlcyA9IHNlbGY6OiRfdXNlcmZpbGVzOwogICAgJHBhdGggID0gc2VsZjo6Z2V0X21vZCgpLT5nZXRfdXBsb2FkX2Rpcm5hbWUoKTsKICAgIAogICAgZm9yZWFjaCgkZmlsZXMgYXMgJGZpbGUpCiAgICB7CiAgICAgICRmbiA9ICIkcGF0aC8kZmlsZSI7CiAgICAgICR0biA9ICIkcGF0aC90aHVtYl97JGZpbGV9IjsKICAgICAgCiAgICAgIGlmKFxpc19maWxlKCRmbikpIHsgQFx1bmxpbmsoJGZuKTsgfQogICAgICAKICAgICAgaWYoXGlzX2ZpbGUoJHRuKSkgeyBAXHVubGluaygkdG4pOyB9CiAgICB9CiAgICAKICAgIHNlbGY6OiRfdXNlcmZpbGVzID0gTlVMTDsKICAgIAogICAgcmV0dXJuICRwYXJhbXM7CiAgfQogIAogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9nKCRtZXNzYWdlID0gJycpCiAgewogICAgJG1lc3NhZ2UgPSBlbXB0eSgkbWVzc2FnZSkgPyAnW2VtcHR5IG1lc3NhZ2VdJyA6ICRtZXNzYWdlOwogICAgJHJvb3QgPSBcZGlybmFtZShfX0ZJTEVfXywgNCk7CiAgICAkcGF0aCA9ICRyb290OwogICAgJGZpbGVfbmFtZSA9ICdNQU1TLmxvZyc7CiAgICAkZm4gPSBjbXNfam9pbl9wYXRoKCRwYXRoLCAkZmlsZV9uYW1lKTsKICAgIAogICAgJGRhdGV0aW1lID0gXGRhdGUoJ1ktbS1kIEg6aTpzJyk7CiAgICAkdGV4dCAgICAgPSAkZGF0ZXRpbWUgLiAnIDo6ICc7CiAgICAkdGV4dCAgICAgLj0gJG1lc3NhZ2UgLiBQSFBfRU9MOwogICAgJHRtcF9tYXggID0gXGluaV9zZXQoJ2xvZ19lcnJvcnNfbWF4X2xlbicsIDIwNDgpOwogICAgXGVycm9yX2xvZygkdGV4dCwgMywgJGZuKTsKICAgIC8vIHJlc2V0IHRvIHRoZSBvbGQgdmFsdWU7CiAgICBcaW5pX3NldCgnbG9nX2Vycm9yc19tYXhfbGVuJywgJHRtcF9tYXgpOwogIH0KICAKICAvKioKICAgKgogICAqIEBwYXJhbSAgICAgICRlbWFpbAogICAqIEBwYXJhbSBpbnQgICR1aWQKICAgKiBAcGFyYW0gYm9vbCAkY2hlY2tfZXhpc3RpbmcKICAgKgogICAqIEByZXR1cm4gYXJyYXkKICAgKi8KICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzX3ZhbGlkX2VtYWlsX2FkZHJlc3MoJGVtYWlsLCAkdWlkID0gLTEsICRjaGVja19leGlzdGluZyA9IEZBTFNFKQogIHsKICAgICRtb2R1bGUgPSBzZWxmOjpnZXRfbW9kKCk7CiAgICAkcmVzdWx0ID0gW107CiAgICAKICAgIGlmKCFpc19lbWFpbCgkZW1haWwpKQogICAgewogICAgICAkcmVzdWx0WzBdID0gRkFMU0U7CiAgICAgICRyZXN1bHRbMV0gPSAkbW9kdWxlLT5MYW5nKCdlcnJvcl9pbXByb3BlcmVtYWlsZm9ybWF0Jyk7CiAgICAgIAogICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KICAgIAogICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgIAogICAgaWYoJGNoZWNrX2V4aXN0aW5nKQogICAgewogICAgICBpZigkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCd1c2VybmFtZV9pc19lbWFpbCcpKQogICAgICB7CiAgICAgICAgJHEgICAgPSAnU0VMRUNUIHVzZXJuYW1lIEZST00gJyAuIENNU19EQl9QUkVGSVggLiAnbW9kdWxlX21hbXNfdXNlcnMgV0hFUkUgdXNlcm5hbWUgPSA/JzsKICAgICAgICAkcGFybSA9IFskZW1haWxdOwogICAgICAgIAogICAgICAgIGlmKCR1aWQgPiAtMSkKICAgICAgICB7CiAgICAgICAgICAkcSAgICAgIC49ICcgQU5EIGlkICE9ID8nOwogICAgICAgICAgJHBhcm1bXSA9ICR1aWQ7CiAgICAgICAgfQogICAgICAgIAogICAgICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcSwgJHBhcm0pOwogICAgICAgIAogICAgICAgIGlmKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkpCiAgICAgICAgewogICAgICAgICAgJHJlc3VsdFswXSA9IEZBTFNFOwogICAgICAgICAgJHJlc3VsdFsxXSA9ICRtb2R1bGUtPkxhbmcoJ2Vycm9yX2VtYWlsYWxyZWFkeXVzZWQnKTsKICAgICAgICAgIAogICAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICAgICAgfQogICAgICB9CiAgICAgIGVsc2UgaWYoISRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2FsbG93X2R1cGxpY2F0ZV9lbWFpbHMnKSkKICAgICAgewogICAgICAgICRxICAgICA9ICJTRUxFQ1QgZGF0YSBGUk9NICIgLiBDTVNfREJfUFJFRklYIC4gIm1vZHVsZV9tYW1zX3Byb3BkZWZuLCIgLgogICAgICAgICAgICAgICAgIENNU19EQl9QUkVGSVggLiAibW9kdWxlX21hbXNfcHJvcGVydGllcyBXSEVSRSBuYW1lPXRpdGxlIEFORCB0eXBlPTIgQU5EIGRhdGEgTElLRSA/IjsKICAgICAgICAkcGFybXMgPSBbJGVtYWlsXTsKICAgICAgICAKICAgICAgICBpZigkdWlkID4gLTEpCiAgICAgICAgewogICAgICAgICAgJHEgICAgICAgLj0gJyBBTkQgdXNlcmlkICE9ID8nOwogICAgICAgICAgJHBhcm1zW10gPSAkdWlkOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHEsIFskZW1haWxdKTsKICAgICAgICAKICAgICAgICBpZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpKQogICAgICAgIHsKICAgICAgICAgICRyZXN1bHRbMF0gPSBGQUxTRTsKICAgICAgICAgICRyZXN1bHRbMV0gPSAkbW9kdWxlLT5MYW5nKCdlcnJvcl9lbWFpbGFscmVhZHl1c2VkJyk7CiAgICAgICAgICAKICAgICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgCiAgICAkcmVzdWx0WzBdID0gVFJVRTsKICAgIAogICAgcmV0dXJuICRyZXN1bHQ7CiAgfQogIAogIC8qKgogICAqIENvbnZlcnQgYSBzdHJpbmcgb2YgcGFyYW1ldGVycyBpbnRvIGFuIGFzc29jaWF0aXZlIGFycmF5LgogICAqIFVzZWQgbWFpbmx5IHRvIGNvbnZlcnQgYSBwcmV0dHkgdXJsCiAgICogd2l0aCBhIGZvcm1hdCBvZiAvcGFyYW0xL3ZhbHVlMS9wYXJhbTIvdmFsdWUyLyguLi4pCiAgICogaW50byBhbiBhcnJheSBvZiBwYXJhbWV0ZXJzLgogICAqIFRoZSAkcGFyYW1zIGFycmF5IHNob3VsZCBjb250YWluIHRoZSBrZXkgJ3BybXMnCiAgICogd2l0aCB0aGUgdmFsdWUgYmVpbmcgdGhlIHN0cmluZyB0byBjb252ZXJ0LgogICAqIFRoZSBrZXkgJ3BybXMnIHdpbGwgdGhlbiBiZSB1bnNldCBiZWZvcmUgdGhlICRwYXJhbXMgYXJlIHJldHVybmVkCiAgICoKICAgKiBAcGFyYW0gYXJyYXl8bnVsbCAkcGFyYW1zIC0gVGhlIGFycmF5IG9mIGV4aXN0aW5nIHBhcmFtZXRlcnMuCiAgICogQHBhcmFtIGJvb2x8bnVsbCAkb3ZlcnJpZGUgLSBGbGFnIGluZGljYXRpbmcgd2hldGhlciB0byBvdmVycmlkZSBleGlzdGluZyBwYXJhbWV0ZXJzLgogICAqCiAgICogQHJldHVybiBhcnJheSAtIFRoZSB1cGRhdGVkIGFycmF5IG9mIHBhcmFtZXRlcnMuCiAgICovCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwcm1zX3RvX3BhcmFtcygkcGFyYW1zID0gTlVMTCwgJG92ZXJyaWRlID0gTlVMTCkKICB7CiAgICAkcHJtcyAgICAgPSAkcGFyYW1zWydwcm1zJ10gPz8gW107CiAgICAkcGFyYW1zICAgPSBlbXB0eSgkcGFyYW1zKSA/IFtdIDogJHBhcmFtczsKICAgICRvdmVycmlkZSA9ICRvdmVycmlkZSA/PyBGQUxTRTsKICAgICRwYWlycyAgICA9IFxleHBsb2RlKCcvJywgJHBybXMpOwogICAgCiAgICB1bnNldCgkcGFyYW1zWydwcm1zJ10pOwogICAgCiAgICBmb3IgKCRpID0gMCwgJGlNYXggPSBcY291bnQoJHBhaXJzKTsgJGkgPCAkaU1heDsgJGkgKz0gMikKICAgIHsKICAgICAgJGtleSA9ICRwYWlyc1skaV07CiAgICAgICR2YWx1ZSA9ICRwYWlyc1skaSArIDFdID8/IE5VTEw7CiAgICAgIAogICAgICBpZighJG92ZXJyaWRlICYmIGlzc2V0KCRwYXJhbXNbJGtleV0pKSB7IGNvbnRpbnVlOyB9CiAgICAgIAogICAgICAkcGFyYW1zWyRrZXldID0gJHZhbHVlOwogICAgfQogICAgCiAgICByZXR1cm4gJHBhcmFtczsKICB9CiAgCiAgCiAgCiAgLyoqKgogICAqIHRlbXBvcmFyeSBmdW5jdGlvbnMKICAgKi8KICAKfSAvLyBjbGFzcwoKIwojIEVPRgojCg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.verification_assistant.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVM7CnVzZSBcbWFtc191dGlsczsKCmFic3RyYWN0IGNsYXNzIHZlcmlmaWNhdGlvbl9hc3Npc3RhbnQKewogICAgcHJvdGVjdGVkICRtYW1zOwogICAgcHJpdmF0ZSAkX2Rlc3RwYWdlOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggXE1BTVMgJG1vZCApCiAgICB7CiAgICAgICAgJHRoaXMtPm1hbXMgPSAkbW9kOwogICAgfQogICAgCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdlbmVyYXRlX2Rlc3RwYWdlKCR1aWQpCiAgICB7CiAgICAgICAgJGRmbHQgPSBcQ29udGVudE9wZXJhdGlvbnM6OmdldF9pbnN0YW5jZSgpLT5HZXREZWZhdWx0Q29udGVudCgpOwogICAgICAgICRwYWdlID0gbWFtc191dGlsczo6cmVzb2x2ZV9wcmVmdHBsX3RvX3BhZ2UoJ3BhZ2VpZF9vbnZlcmlmeScsJHVpZCk7CiAgICAgICAgaWYoICEkcGFnZSApICRwYWdlID0gJGRmbHQ7CiAgICAgICAgcmV0dXJuICRwYWdlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfZGVzdHBhZ2UoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+X2Rlc3RwYWdlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfZGVzdHBhZ2UoJHN0cikKICAgIHsKICAgICAgICBpZiggJHN0ciApIHsKICAgICAgICAgICAgJHRoaXMtPl9kZXN0cGFnZSA9ICR0aGlzLT5tYW1zLT5yZXNvbHZlX2FsaWFzX29yX2lkKCRzdHIsJHRoaXMtPl9kZXN0cGFnZSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRfZm9yY2VfdmVyaWZ5KCAkdWlkLCAkZmxhZyA9IHRydWUgKQogICAgewogICAgICAgICR1aWQgPSAoaW50KSAkdWlkOwogICAgICAgIGlmKCAkdWlkIDwgMSApIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCAnSW52YWxpZCB1aWQgcGFzc2VkIHRvICcuX19NRVRIT0RfXyk7CiAgICAgICAgCiAgICAgICAgaWYoICRmbGFnICkgewogICAgICAgICAgICAkY29kZSA9IG1hbXNfdXRpbHM6OmdlbmVyYXRlX3JhbmRvbV9wcmludGFibGVfc3RyaW5nKCk7CiAgICAgICAgICAgICR0aGlzLT5tYW1zLT5TZXRVc2VyVGVtcENvZGUoICR1aWQsICRjb2RlICk7CiAgICAgICAgICAgICR0aGlzLT5tYW1zLT5Gb3JjZVZlcmlmeSggJHVpZCwgVFJVRSApOwogICAgICAgICAgICByZXR1cm4gJGNvZGU7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkdGhpcy0+bWFtcy0+UmVtb3ZlVXNlclRlbXBDb2RlKCAkdWlkICk7CiAgICAgICAgICAgICR0aGlzLT5tYW1zLT5Gb3JjZVZlcmlmeSggJHVpZCwgRkFMU0UgKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfdmVyaWZ5X2Zvcm1fdXJsKCR1aWQsICRjb2RlID0gbnVsbCApCiAgICB7CiAgICAgICAgJHVpZCA9IChpbnQpICR1aWQ7CiAgICAgICAgaWYoICR1aWQgPCAxICkgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oICdJbnZhbGlkIHVpZCBwYXNzZWQgdG8gJy5fX01FVEhPRF9fKTsKICAgICAgICAkY29kZSA9IHRyaW0oJGNvZGUpOwogICAgICAgIGlmKCAhJGNvZGUgKSAkY29kZSA9ICd4eHh4JzsKICAgICAgICAKICAgICAgICAkZGVzdHBhZ2UgPSAkdGhpcy0+X2Rlc3RwYWdlOwogICAgICAgIGlmKCAhJGRlc3RwYWdlICkgJGRlc3RwYWdlID0gJHRoaXMtPmdlbmVyYXRlX2Rlc3RwYWdlKCR1aWQpOwogICAgICAgICR1cmwgPSAkdGhpcy0+bWFtcy0+Y3JlYXRlX3VybCgnY250bnQwMScsJ3ZlcmlmeW9ubHknLCRkZXN0cGFnZSxbICd1aWQnPT4kdWlkLCAnY29kZSc9PiRjb2RlIF0gKTsKICAgICAgICAkdXJsID0gc3RyX3JlcGxhY2UoICdhbXA7JywgJycsICR1cmwgKTsKICAgICAgICByZXR1cm4gJHVybDsKICAgIH0KCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gc2VuZCggJHVpZCwgJGNvZGUgKTsKICAgIAp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/Commands</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/Commands/class.GroupEditCommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVNcQ29tbWFuZHM7CnVzZSBDTVNNU1xDTElcQXBwOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxDb21tYW5kOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxPcHRpb247CnVzZSBDTVNNU1xDTElcR2V0T3B0RXh0XEdldE9wdDsKdXNlIEdldE9wdFxPcGVyYW5kOwp1c2UgbWFtc191c2VyX3F1ZXJ5Owp1c2UgbWFtc191c2VyX3F1ZXJ5X29wdDsKCmNsYXNzIEdyb3VwRWRpdENvbW1hbmQgZXh0ZW5kcyBDb21tYW5kCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggQXBwICRhcHAgKQogICAgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoICRhcHAsICdtYW1zLWdyb3VwLWVkaXQnICk7CiAgICAgICAgJHRoaXMtPmFkZE9wZXJhbmQoIG5ldyBPcGVyYW5kKCAnZ3JvdXAnLCBPcGVyYW5kOjpSRVFVSVJFRCApICk7CiAgICAgICAgJHRoaXMtPmFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUobnVsbCwncmVuYW1lJywgR2V0T3B0OjpSRVFVSVJFRF9BUkdVTUVOVCktPnNldERlc2NyaXB0aW9uKCdBZGp1c3QgdGhlIGdyb3VwIG5hbWUnKSk7CiAgICAgICAgJHRoaXMtPmFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUobnVsbCwnZGVzY3JpcHRpb24nLCBHZXRPcHQ6OlJFUVVJUkVEX0FSR1VNRU5UKS0+c2V0RGVzY3JpcHRpb24oJ0FkanVzdCB0aGUgZ3JvdXAgZGVzY3JpcHRpb24nKSk7CiAgICAgICAgLy8gbWFtcy1ncm91cC1lZGl0IHVzZXJzIG5ld2Rlc2MgLS1yZW5hbWUgZm9vYmFyIC0tZGVzY3JpcHRpb24gc3R1ZmYKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2hvcnREZXNjcmlwdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuICdFZGl0IGFuIEZFVSBHcm91cCBkZWZpbml0aW9uJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TG9uZ0Rlc2NyaXB0aW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0VkaXQgYW4gRkVVIEdyb3VwIGRlZmluaXRpb24nOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBoYW5kbGUoKQogICAgewogICAgICAgICRncm91cCA9IHRyaW0oJHRoaXMtPmdldE9wZXJhbmQoJ2dyb3VwJyktPnZhbHVlKCkpOwogICAgICAgICRuZXduYW1lID0gdHJpbSgkdGhpcy0+Z2V0T3B0aW9uKCdyZW5hbWUnKS0+dmFsdWUoKSk7CiAgICAgICAgJG5ld2Rlc2MgPSB0cmltKCR0aGlzLT5nZXRPcHRpb24oJ2Rlc2NyaXB0aW9uJyktPnZhbHVlKCkpOwoKICAgICAgICAkZ2lkID0gJG1hbXMtPkdldEdyb3VwSUQoICRncm91cCApOwogICAgICAgIGlmKCAkZ2lkIDwgMSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiR3JvdXAgJGdyb3VwIG5vdCBmb3VuZCIpOwogICAgICAgICRkZXNjID0gJG1hbXMtPkdldEdyb3VwRGVzYyggJGdpZCApOwoKICAgICAgICBpZiggISRuZXduYW1lIHx8ICEkbmV3ZGVzYyApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignUGxlYXNlIHNwZWNpZnkgYXQgbGVhc3Qgb25lIG9mIHRoZSByZW5hbWUgb3IgZGVzY3JpcHRpb24gb3B0aW9ucycpOwogICAgICAgIGlmKCAkbmV3bmFtZSApIHsKICAgICAgICAgICAgLy8gdmFsaWRhdGUgdGhlIGdyb3VwIG5hbWUKICAgICAgICAgICAgaWYoICFwcmVnX21hdGNoKCcjW2EtejAtOV1bX1wtYS16MC05XSojaScsICRuZXduYW1lKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiSW52YWxpZCBncm91cCBuYW1lICRuZXduYW1lIik7CiAgICAgICAgICAgIC8vIHZhbGlkYXRlIHRoYXQgdGhpcyBuZXcgbmFtZSBpcyBub3QgdXNlZAogICAgICAgICAgICAkbmV3X2dpZCA9ICRtYW1zLT5HZXRHcm91cElEKCAkbmV3bmFtZSApOwogICAgICAgICAgICBpZiggJG5ld19naWQgPiAwICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCJHcm91cCBuYW1lICRuZXduYW1lIGFscmVhZHkgZXhpc3RzIik7CiAgICAgICAgfQoKICAgICAgICAvLyBnZXQgdGhlIGdyb3VwIGluZm8KICAgICAgICBpZiggJG5ld25hbWUgKSAkZ3JvdXAgPSAkbmV3bmFtZTsKICAgICAgICBpZiggJG5ld2Rlc2MgKSAkZGVzYyAgPSAkbmV3ZGVzYzsKCiAgICAgICAgJG1hbXMtPlNldEdyb3VwKCAkZ2lkLCAkZ3JvdXAsICRkZXNjICk7CiAgICB9Cn0gLy8gZW5kIG9mIGNsYXNzLgo=]]></data>
	</file>
	<file>
	  <filename>/lib/Commands/class.GroupListCommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVNcQ29tbWFuZHM7CnVzZSBDTVNNU1xDTElcQXBwOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxDb21tYW5kOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxPcHRpb247CnVzZSBDTVNNU1xDTElcR2V0T3B0RXh0XEdldE9wdDsKdXNlIEdldE9wdFxPcGVyYW5kOwp1c2UgbWFtc191c2VyX3F1ZXJ5Owp1c2UgbWFtc191c2VyX3F1ZXJ5X29wdDsKCmNsYXNzIEdyb3VwTGlzdENvbW1hbmQgZXh0ZW5kcyBDb21tYW5kCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggQXBwICRhcHAgKQogICAgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoICRhcHAsICdtYW1zLWdyb3VwLWxpc3QnICk7CiAgICAgICAgJHRoaXMtPmFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUoJ2onLCdqc29uJyktPnNldERlc2NyaXB0aW9uKCdvdXRwdXQgZGF0YSBpbiBKU09OIGZvcm1hdCcpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2hvcnREZXNjcmlwdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuICdMaXN0IEZFVSBncm91cHMnOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMb25nRGVzY3JpcHRpb24oKQogICAgewogICAgICAgIHJldHVybiAnVGhpcyBjb21tYW5kIHdpbGwgcmV0dXJuIGEgbGlzdCBvZiBGRVUgZ3JvdXBzLic7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGhhbmRsZSgpCiAgICB7CiAgICAgICAgJGpzb24gPSAkdGhpcy0+Z2V0T3B0aW9uKCdqc29uJyktPnZhbHVlKCk7CgogICAgICAgICRtYW1zID0gXGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfTUFNUyk7CiAgICAgICAgJGxpc3QgPSAkbWFtcy0+R2V0R3JvdXBMaXN0RnVsbCgpOwogICAgICAgIGlmKCBlbXB0eSgkbGlzdCkpIHJldHVybjsKCiAgICAgICAgJHRtcCA9IG51bGw7CiAgICAgICAgZm9yZWFjaCggJGxpc3QgYXMgJHJvdyApIHsKICAgICAgICAgICAgJHJvd1snaWQnXSA9IChpbnQpICRyb3dbJ2lkJ107CiAgICAgICAgICAgICRyb3dbJ2NvdW50J10gPSAoaW50KSAkcm93Wydjb3VudCddOwogICAgICAgICAgICAkdG1wW10gPSAkcm93OwogICAgICAgIH0KICAgICAgICAkbGlzdCA9ICR0bXA7CgogICAgICAgIGlmKCAkanNvbiApIHsKICAgICAgICAgICAgZWNobyBqc29uX2VuY29kZSggJGxpc3QsIEpTT05fUFJFVFRZX1BSSU5UICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRmbXQgPSAiJS00cyAlLTQwcyAlLTRzICUtc1xuIjsKICAgICAgICBwcmludGYoJGZtdCwnaWQnLCduYW1lJywnY291bnQnLCdkZXNjcmlwdGlvbicpOwogICAgICAgIHByaW50ZigkZm10LCctLScsJy0tLS0nLCctLS0tJywnLS0tLScpOwogICAgICAgIGZvcmVhY2goICRsaXN0IGFzICRyZWMgKSB7CiAgICAgICAgICAgIHByaW50ZigkZm10LCRyZWNbJ2lkJ10sJHJlY1snZ3JvdXBuYW1lJ10sJHJlY1snY291bnQnXSwkcmVjWydncm91cGRlc2MnXSk7CiAgICAgICAgfQogICAgfQp9IC8vIGVuZCBvZiBjbGFzcy4K]]></data>
	</file>
	<file>
	  <filename>/lib/Commands/class.GroupListPropsCommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVNcQ29tbWFuZHM7CnVzZSBDTVNNU1xDTElcQXBwOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxDb21tYW5kOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxPcHRpb247CnVzZSBDTVNNU1xDTElcR2V0T3B0RXh0XEdldE9wdDsKdXNlIEdldE9wdFxPcGVyYW5kOwp1c2UgbWFtc191c2VyX3F1ZXJ5Owp1c2UgbWFtc191c2VyX3F1ZXJ5X29wdDsKCmNsYXNzIEdyb3VwTGlzdFByb3BzQ29tbWFuZCBleHRlbmRzIENvbW1hbmQKewogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCBBcHAgJGFwcCApCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCggJGFwcCwgJ21hbXMtZ3JvdXAtbGlzdC1wcm9wcycgKTsKICAgICAgICAkdGhpcy0+YWRkT3BlcmFuZCggbmV3IE9wZXJhbmQoICdncm91cCcsIE9wZXJhbmQ6OlJFUVVJUkVEICkgKTsKICAgICAgICAkdGhpcy0+YWRkT3B0aW9uKCBPcHRpb246OkNyZWF0ZSgncicsJ3JhdycpLT5zZXREZXNjcmlwdGlvbignb3V0cHV0IHJhdyBkYXRhIHdpdGhvdXQgY2xlYW5pbmcnKSk7CiAgICAgICAgJHRoaXMtPmFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUoJ2onLCdqc29uJyktPnNldERlc2NyaXB0aW9uKCdvdXRwdXQgZGF0YSBpbiBKU09OIGZvcm1hdCcpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2hvcnREZXNjcmlwdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuICdMaXN0IEZFVSBncm91cCBwcm9wZXJ0aWVzJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TG9uZ0Rlc2NyaXB0aW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gJ1RoaXMgY29tbWFuZCB3aWxsIGRpc3BsYXkgYSBsaXN0IG9mIHRoZSBwcm9wZXJ0eSBhc3NvY2lhdGlvbnMgZm9yIGEgZ3JvdXAnOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBoYW5kbGUoKQogICAgewogICAgICAgICRtYW1zID0gXGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfTUFNUyk7CiAgICAgICAgJGdyb3VwID0gJHRoaXMtPmdldE9wZXJhbmQoJ2dyb3VwJyktPnZhbHVlKCk7CiAgICAgICAgJGpzb24gPSAkdGhpcy0+Z2V0T3B0aW9uKCdqc29uJyktPnZhbHVlKCk7CiAgICAgICAgJHJhdyA9ICR0aGlzLT5nZXRPcHRpb24oJ3JhdycpLT52YWx1ZSgpOwoKICAgICAgICAkZ2lkID0gJG1hbXMtPkdldEdyb3VwSUQoJGdyb3VwKTsKICAgICAgICBpZiggJGdpZCA8IDEgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIkdyb3VwICRncm91cCBub3QgZm91bmQiKTsKCiAgICAgICAgJHJlbG5zID0gJG1hbXMtPkdldEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoJGdpZCk7CiAgICAgICAgaWYoIGVtcHR5KCRyZWxucykgKSByZXR1cm47CgogICAgICAgICRnZXRfcmVxdWlyZWQgPSBmdW5jdGlvbihhcnJheSAkcmVjKSB7CiAgICAgICAgICAgICRhcnIgPSBbIDA9PidvZmYnLCAxPT4nb3B0aW9uYWwnLCAyPT4ncmVxdWlyZWQnLCAzPT4naGlkZGVuJywgND0+J3JlYWRvbmx5JyBdOwogICAgICAgICAgICAkdiA9IChpbnQpICRyZWNbJ3JlcXVpcmVkJ107CiAgICAgICAgICAgIGlmKCBpc3NldCgkYXJyWyR2XSkgKSByZXR1cm4gJGFyclskdl07CiAgICAgICAgICAgIHJldHVybiAnKnVua25vd24qJzsKICAgICAgICB9OwoKICAgICAgICAkZ2V0X2xvc3R1biA9IGZ1bmN0aW9uKGFycmF5ICRyZWMpIHsKICAgICAgICAgICAgJHYgPSAoaW50KSAkcmVjWydsb3N0dW5mbGFnJ107CiAgICAgICAgICAgIGlmKCAkdiA9PSAxICkgcmV0dXJuICd5ZXMnOwogICAgICAgICAgICByZXR1cm4gJ25vJzsKICAgICAgICB9OwoKICAgICAgICB1c29ydCgkcmVsbnMsZnVuY3Rpb24oJGEsJGIpewogICAgICAgICAgICAgICAgaWYoICRhWydzb3J0X2tleSddICE9ICRiWydzb3J0X2tleSddICkgcmV0dXJuICRhWydzb3J0X2tleSddIC0gJGJbJ3NvcnRfa2V5J107CiAgICAgICAgICAgICAgICByZXR1cm4gc3RyY21wKCRhWyduYW1lJ10sJGJbJ25hbWUnXSk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICBpZiggJGpzb24gKSB7CiAgICAgICAgICAgIGFycmF5X3dhbGsoJHJlbG5zLGZ1bmN0aW9uKCYkaXRlbSkgdXNlICgkcmF3LCRnZXRfcmVxdWlyZWQsJGdldF9sb3N0dW4pewogICAgICAgICAgICAgICAgICAgICRpdGVtWydncm91cF9pZCddID0gKGludCkgJGl0ZW1bJ2dyb3VwX2lkJ107CiAgICAgICAgICAgICAgICAgICAgJGl0ZW1bJ3NvcnRfa2V5J10gPSAoaW50KSAkaXRlbVsnc29ydF9rZXknXTsKICAgICAgICAgICAgICAgICAgICBpZiggISRyYXcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRpdGVtWydyZXF1aXJlZCddID0gJGdldF9yZXF1aXJlZCgkaXRlbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRpdGVtWydsb3N0dW5mbGFnJ10gPSAkZ2V0X2xvc3R1bigkaXRlbSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoJHJlbG5zLCBKU09OX1BSRVRUWV9QUklOVCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRmbXQgPSAiJS0yMHMgJS04cyAlLTNzXG4iOwogICAgICAgIHByaW50ZigkZm10LCduYW1lJywncmVxdWlyZWQnLCdsdW4nKTsKICAgICAgICBwcmludGYoJGZtdCwnLS0tLScsJy0tLScsJy0tLScpOwogICAgICAgIGZvcmVhY2goICRyZWxucyBhcyAkcmVjICkgewogICAgICAgICAgICAvLyBvdXRwdXQgdGhlIHByb3BlcnR5IG5hbWUsIHJlcXVpcmVkLCBhbmQgbG9zdHVuZmxhZwogICAgICAgICAgICBwcmludGYoJGZtdCwgJHJlY1snbmFtZSddLCAkZ2V0X3JlcXVpcmVkKCRyZWMpLCAkZ2V0X2xvc3R1bigkcmVjKSk7CiAgICAgICAgfQogICAgfQp9IC8vIGVuZCBvZiBjbGFzcy4K]]></data>
	</file>
	<file>
	  <filename>/lib/Commands/class.GroupViewCommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVNcQ29tbWFuZHM7CnVzZSBDTVNNU1xDTElcQXBwOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxDb21tYW5kOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxPcHRpb247CnVzZSBDTVNNU1xDTElcR2V0T3B0RXh0XEdldE9wdDsKdXNlIEdldE9wdFxPcGVyYW5kOwp1c2UgbWFtc191c2VyX3F1ZXJ5Owp1c2UgbWFtc191c2VyX3F1ZXJ5X29wdDsKdXNlIGNtc191dGlsczsKCmNsYXNzIEdyb3VwVmlld0NvbW1hbmQgZXh0ZW5kcyBDb21tYW5kCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggQXBwICRhcHAgKQogICAgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoICRhcHAsICdtYW1zLWdyb3VwLXZpZXcnICk7CiAgICAgICAgJHRoaXMtPmFkZE9wZXJhbmQoIG5ldyBPcGVyYW5kKCAnZ3JvdXAnLCBPcGVyYW5kOjpSRVFVSVJFRCApICk7CiAgICAgICAgJHRoaXMtPmFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUoJ2onLCdqc29uJyktPnNldERlc2NyaXB0aW9uKCdBZGp1c3QgdGhlIGdyb3VwIG5hbWUnKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNob3J0RGVzY3JpcHRpb24oKQogICAgewogICAgICAgIHJldHVybiAnRWRpdCBhbiBGRVUgR3JvdXAgZGVmaW5pdGlvbic7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldExvbmdEZXNjcmlwdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuICdFZGl0IGFuIEZFVSBHcm91cCBkZWZpbml0aW9uJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFuZGxlKCkKICAgIHsKICAgICAgICAkZ3JvdXAgPSB0cmltKCR0aGlzLT5nZXRPcGVyYW5kKCdncm91cCcpLT52YWx1ZSgpKTsKICAgICAgICAkanNvbiA9ICR0aGlzLT5HZXRPcHRpb24oJ2pzb24nKS0+dmFsdWUoKTsKICAgICAgICAkcmVxdWlyZWRfdmFscyA9IFsgMD0+J29mZicsIDE9PidvcHRpb25hbCcsIDI9PidyZXF1aXJlZCcsIDM9PidoaWRkZW4nLCA0PT4ncmVhZG9ubHknIF07CiAgICAgICAgJG1hbXMgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX01BTVMpOwogICAgICAgICRnaWQgPSAkbWFtcy0+R2V0R3JvdXBJRCggJGdyb3VwICk7CiAgICAgICAgaWYoICRnaWQgPCAxICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCJHcm91cCAkZ3JvdXAgbm90IGZvdW5kIik7CiAgICAgICAgJGdpbmZvID0gJG1hbXMtPkdldEdyb3VwSW5mbyggJGdpZCApOwogICAgICAgICRnaW5mb1snZGVzY3JpcHRpb24nXSA9ICRnaW5mb1snZ3JvdXBkZXNjJ107CiAgICAgICAgJGdpbmZvWyduYW1lJ10gPSAkZ2luZm9bJ2dyb3VwbmFtZSddOwogICAgICAgICRnaW5mb1snY291bnQnXSA9IChpbnQpICRnaW5mb1snY291bnQnXTsKICAgICAgICB1bnNldCgkZ2luZm9bJ2dyb3VwZGVzYyddLCAkZ2luZm9bJ2dyb3VwbmFtZSddKTsKCiAgICAgICAgJHJlbG5zID0gJG1hbXMtPkdldEdyb3VwUHJvcGVydHlSZWxhdGlvbnMoICRnaWQgKTsKICAgICAgICBpZiggIWVtcHR5KCRyZWxucykgKSB7CiAgICAgICAgICAgIGFycmF5X3dhbGsoJHJlbG5zLGZ1bmN0aW9uKCYkaXRlbSkgdXNlICgkcmVxdWlyZWRfdmFscykgewogICAgICAgICAgICAgICAgICAgICRpdGVtWydsb3N0dW5mbGFnJ10gPSAoaW50KSAkaXRlbVsnbG9zdHVuZmxhZyddOwogICAgICAgICAgICAgICAgICAgICRpdGVtWydncm91cF9pZCddID0gKGludCkgJGl0ZW1bJ2dyb3VwX2lkJ107CiAgICAgICAgICAgICAgICAgICAgJGl0ZW1bJ3NvcnRfa2V5J10gPSAoaW50KSAkaXRlbVsnc29ydF9rZXknXTsKICAgICAgICAgICAgICAgICAgICAkaXRlbVsncmVxdWlyZWQnXSA9ICRyZXF1aXJlZF92YWxzWyRpdGVtWydyZXF1aXJlZCddXTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB1c29ydCgkcmVsbnMsZnVuY3Rpb24oJGEsJGIpewogICAgICAgICAgICAgICAgICAgIGlmKCAkYVsnc29ydF9rZXknXSAhPSAkYlsnc29ydF9rZXknXSApIHJldHVybiAkYVsnc29ydF9rZXknXSAtICRiWydzb3J0X2tleSddOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBzdHJjbXAoJGFbJ25hbWUnXSwkYlsnbmFtZSddKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICRnaW5mb1sncHJvcGVydGllcyddID0gJHJlbG5zOwogICAgICAgIH0KCiAgICAgICAgaWYoICRqc29uICkgewogICAgICAgICAgICBlY2hvIGpzb25fZW5jb2RlKCRnaW5mbyxKU09OX1BSRVRUWV9QUklOVCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGVjaG8gIklEOiB7JGdpbmZvWydpZCddfVxuIjsKICAgICAgICBlY2hvICJOQU1FOiB7JGdpbmZvWyduYW1lJ119XG4iOwogICAgICAgIGVjaG8gIkRFU0NSSVBUSU9OOiB7JGdpbmZvWydkZXNjcmlwdGlvbiddfVxuIjsKICAgICAgICBlY2hvICJNRU1CRVJTOiB7JGdpbmZvWydjb3VudCddfVxuIjsKICAgICAgICBpZiggJGdpbmZvWydwcm9wZXJ0aWVzJyBdICkgewogICAgICAgICAgICAkZm10ID0gIlBST1BFUlRZOiBuYW1lPSVzIHN0YXR1cz0lcyBsb3N0dW49JWRcbiI7CiAgICAgICAgICAgIGZvcmVhY2goICRnaW5mb1sncHJvcGVydGllcyddIGFzICRyb3cgKSB7CiAgICAgICAgICAgICAgICBwcmludGYoJGZtdCwgJHJvd1snbmFtZSddLCAkcm93WydyZXF1aXJlZCddLCAkcm93Wydsb3N0dW5mbGFnJ10pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9IC8vIGVuZCBvZiBjbGFzcy4K]]></data>
	</file>
	<file>
	  <filename>/lib/Commands/class.PropEditCommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVNcQ29tbWFuZHM7CnVzZSBDTVNNU1xDTElcQXBwOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxDb21tYW5kOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxPcHRpb247CnVzZSBDTVNNU1xDTElcR2V0T3B0RXh0XEdldE9wdDsKdXNlIEdldE9wdFxPcGVyYW5kOwp1c2UgbWFtc191c2VyX3F1ZXJ5Owp1c2UgbWFtc191c2VyX3F1ZXJ5X29wdDsKdXNlIGNtc191dGlsczsKCmNsYXNzIFByb3BFZGl0Q29tbWFuZCBleHRlbmRzIENvbW1hbmQKewogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCBBcHAgJGFwcCApCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCggJGFwcCwgJ21hbXMtcHJvcC1lZGl0JyApOwogICAgICAgICR0aGlzLT5hZGRPcGVyYW5kKCBuZXcgT3BlcmFuZCggJ3Byb3AnLCBPcGVyYW5kOjpSRVFVSVJFRCApICk7CiAgICAgICAgJHRoaXMtPmFkZE9wZXJhbmQoIG5ldyBPcGVyYW5kKCAnZmlsZW5hbWUnLCBPcGVyYW5kOjpPUFRJT05BTCApICk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNob3J0RGVzY3JpcHRpb24oKQogICAgewogICAgICAgIHJldHVybiAnRWRpdCBhbiBGRVUgUHJvcGVydHkgZGVmaW5pdGlvbic7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldExvbmdEZXNjcmlwdGlvbigpCiAgICB7CiAgICAgICAgJG91dCA9IDw8PEVPVApFZGl0IGFuIEZFVSBQcm9wZXJ0eSBkZWZpbml0aW9uIGdpdmVuIEpTT04gaW5wdXQuICBJZiBhIGZpbGVuYW1lIGlzIG5vdCBwcm92aWRlZCwgdGhlbiBzdGRpbiBpcyBhc3VtZWQuCgpOb3RlLiBpdCBpcyBwb3NzaWJsZSB0byBicmVhayBhbiBleGlzdGluZyBzaXRlIHdpdGggdGhpcyBjb21tYW5kLiAgVXNlIGNhdXRpb24uCkVPVDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFuZGxlKCkKICAgIHsKICAgICAgICAkcHJvcCA9IHRyaW0oJHRoaXMtPmdldE9wZXJhbmQoJ3Byb3AnKS0+dmFsdWUoKSk7CiAgICAgICAgJGZpbGVuYW1lID0gdHJpbSgkdGhpcy0+Z2V0T3BlcmFuZCgnZmlsZW5hbWUnKS0+dmFsdWUoKSk7CiAgICAgICAgaWYoICEkZmlsZW5hbWUgfHwgJGZpbGVuYW1lID09ICctLScgKSAkZmlsZW5hbWUgPSAncGhwOi8vc3RkaW4nOwogICAgICAgICR0ZXh0ID0gdHJpbShmaWxlX2dldF9jb250ZW50cygkZmlsZW5hbWUpKTsKICAgICAgICAkbWFtcyA9IGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfTUFNUyk7CgogICAgICAgICRkZWZuID0gJG1hbXMtPkdldFByb3BlcnR5RGVmbigkcHJvcCk7CiAgICAgICAgaWYoICEkZGVmbiApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiUHJvcGVydHkgJHByb3Agbm90IGZvdW5kIik7CgogICAgICAgICRqc29uID0ganNvbl9kZWNvZGUoJHRleHQsVFJVRSk7CiAgICAgICAgaWYoICFpc19hcnJheSgkanNvbikgfHwgZW1wdHkoJGpzb24pICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDYW5ub3QgZGVjb2RlIGpzb24gaW5wdXQnKTsKCiAgICAgICAgJHByb3BfcmVjID0gbnVsbDsKICAgICAgICBpZiggIWlzc2V0KCRqc29uWyRwcm9wXSkgfHwgIWlzX2FycmF5KCRqc29uWyRwcm9wXSkgKSB7CiAgICAgICAgICAgIGlmKCBpc3NldCgkanNvblsnbmFtZSddKSB8fCBpc3NldCgkanNvblsndHlwZSddKSB8fCBpc3NldCgkanNvblsncHJvbXB0J10pICkgewogICAgICAgICAgICAgICAgJHByb3BfcmVjID0gJGpzb247CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0ludmFsaWQgSlNPTiBkYXRhJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcHJvcF9yZWMgPSAkanNvblskcHJvcF07CiAgICAgICAgfQoKICAgICAgICAvLyBub3cgbWVyZ2UgdGhlIGRlZm4gaW5mbyB3aXRoIHRoZSBwcm9wX3JlYwogICAgICAgICRwcm9wX3JlYyA9IGFycmF5X21lcmdlKCRkZWZuLCRwcm9wX3JlYyk7CiAgICAgICAgJHJlcyA9ICRtYW1zLT5TZXRQcm9wZXJ0eURlZm4oICRwcm9wLCAkcHJvcF9yZWNbJ25hbWUnXSwgJHByb3BfcmVjWydwcm9tcHQnXSwgJHByb3BfcmVjWydsZW5ndGgnXSwgJHByb3BfcmVjWyd0eXBlJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHByb3BfcmVjWydtYXhsZW5ndGgnXSwgJHByb3BfcmVjWydhdHRyaWJzJ10sICRwcm9wX3JlY1snZm9yY2VfdW5pcXVlJ10sICRwcm9wX3JlY1snZW5jcnlwdCddICk7CiAgICAgICAgaWYoICEkcmVzICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdQcm9wZXJ0eSB1cGRhdGUgZmFpbGVkJyk7CiAgICB9Cn0gLy8gZW5kIG9mIGNsYXNzLgo=]]></data>
	</file>
	<file>
	  <filename>/lib/Commands/class.PropListCommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVNcQ29tbWFuZHM7CnVzZSBDTVNNU1xDTElcQXBwOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxDb21tYW5kOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxPcHRpb247CnVzZSBDTVNNU1xDTElcR2V0T3B0RXh0XEdldE9wdDsKdXNlIEdldE9wdFxPcGVyYW5kOwp1c2UgbWFtc191c2VyX3F1ZXJ5Owp1c2UgbWFtc191c2VyX3F1ZXJ5X29wdDsKCmNsYXNzIFByb3BMaXN0Q29tbWFuZCBleHRlbmRzIENvbW1hbmQKewogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCBBcHAgJGFwcCApCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCggJGFwcCwgJ21hbXMtcHJvcHMtbGlzdCcgKTsKICAgICAgICAkdGhpcy0+YWRkT3B0aW9uKCBPcHRpb246OkNyZWF0ZSgncicsJ3JhdycpLT5zZXREZXNjcmlwdGlvbignb3V0cHV0IHJhdyBkYXRhIHdpdGhvdXQgY2xlYW5pbmcnKSk7CiAgICAgICAgJHRoaXMtPmFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUoJ2onLCdqc29uJyktPnNldERlc2NyaXB0aW9uKCdvdXRwdXQgZGF0YSBpbiBKU09OIGZvcm1hdCcpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2hvcnREZXNjcmlwdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuICdMaXN0IGtub3duIEZFVSBwcm9wZXJ0aWVzJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TG9uZ0Rlc2NyaXB0aW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gJ1RoaXMgY29tbWFuZCB3aWxsIGRpc3BsYXkgYSBsaXN0IG9mIGFsbCBvZiB0aGUgcHJvcGVydGllcyBrbm93biBieSBGRVUnOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBoYW5kbGUoKQogICAgewogICAgICAgICRtYW1zID0gXGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfTUFNUyk7CiAgICAgICAgJGRlZm5zID0gJG1hbXMtPkdldFByb3BlcnR5RGVmbnMoKTsKICAgICAgICAkcmF3ID0gJHRoaXMtPmdldE9wdGlvbigncmF3JyktPnZhbHVlKCk7CiAgICAgICAgJGpzb24gPSAkdGhpcy0+Z2V0T3B0aW9uKCdqc29uJyktPnZhbHVlKCk7CiAgICAgICAgJHR5cGVzID0gJG1hbXMtPkdldEZpZWxkVHlwZXMoKTsKCiAgICAgICAgaWYoICEkcmF3ICkgewogICAgICAgICAgICBhcnJheV93YWxrKCRkZWZucyxmdW5jdGlvbigmJGl0ZW0pIHVzZSAoJG1hbXMsJHR5cGVzKSB7CiAgICAgICAgICAgICAgICAgICAgdW5zZXQoJGl0ZW1bJ2F0dHJpYnMnXSk7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoKCAoaW50KSAkaXRlbVsndHlwZSddICkgewogICAgICAgICAgICAgICAgICAgIGNhc2UgJG1hbXM6OkZJRUxEVFlQRV9URVhUOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJG1hbXM6OkZJRUxEVFlQRV9URVhUQVJFQToKICAgICAgICAgICAgICAgICAgICAgICAgJGl0ZW1bJ2xlbmd0aCddID0gKGludCkgJGl0ZW1bJ2xlbmd0aCddOwogICAgICAgICAgICAgICAgICAgICAgICAkaXRlbVsnbWF4bGVuZ3RoJ10gPSAoaW50KSAkaXRlbVsnbWF4bGVuZ3RoJ107CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2V0KCRpdGVtWydsZW5ndGgnXSwkaXRlbVsnbWF4bGVuZ3RoJ10pOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYoICFpc19hcnJheSgkaXRlbVsnZXh0cmEnXSkgfHwgZW1wdHkoJGl0ZW1bJ2V4dHJhJ10pICkgdW5zZXQoJGl0ZW1bJ2V4dHJhJ10pOwogICAgICAgICAgICAgICAgICAgICRpdGVtWydmb3JjZV91bmlxdWUnXSA9IChpbnQpICRpdGVtWydmb3JjZV91bmlxdWUnXTsKICAgICAgICAgICAgICAgICAgICAkaXRlbVsnZW5jcnlwdCddID0gKGludCkgJGl0ZW1bJ2VuY3J5cHQnXTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgaWYoICRqc29uICkgewogICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoJGRlZm5zLCBKU09OX1BSRVRUWV9QUklOVCk7CiAgICAgICAgICAgZXhpdDsKICAgICAgICB9CgogICAgICAgICRmbXQgPSAiJS0yMHMgJS0zMHMgJS0xMHMgJS00cyAlLTRzICUtM3MgJS0zc1xuIjsKICAgICAgICBwcmludGYoJGZtdCwibmFtZSIsInByb21wdCIsInR5cGUiLCJsZW4iLCJtbGVuIiwiZW5jIiwidW5pIik7CiAgICAgICAgcHJpbnRmKCRmbXQsIi0tLS0iLCItLS0tLSIsIi0tLS0iLCItLS0iLCItLS0tIiwiLS0tIiwiLS0tIik7CiAgICAgICAgZm9yZWFjaCggJGRlZm5zIGFzICRvbmUgKSB7CiAgICAgICAgICAgIHByaW50ZigkZm10LCAkb25lWyduYW1lJ10sICRvbmVbJ3Byb21wdCddLCAkb25lWyd0eXBlJ10sCiAgICAgICAgICAgICAgICAgICAoaXNzZXQoJG9uZVsnbGVuZ3RoJ10pKSA/ICRvbmVbJ2xlbmd0aCddIDogJycsCiAgICAgICAgICAgICAgICAgICAoaXNzZXQoJG9uZVsnbWF4bGVuZ3RoJ10pKSA/ICRvbmVbJ21heGxlbmd0aCddIDogJycsCiAgICAgICAgICAgICAgICAgICAkb25lWydlbmNyeXB0J10sCiAgICAgICAgICAgICAgICAgICAkb25lWydmb3JjZV91bmlxdWUnXSk7CiAgICAgICAgfQogICAgfQp9IC8vIGVuZCBvZiBjbGFzcy4K]]></data>
	</file>
	<file>
	  <filename>/lib/Commands/class.UserAddCommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVNcQ29tbWFuZHM7CnVzZSBDTVNNU1xDTElcQXBwOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxDb21tYW5kOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxPcHRpb247CnVzZSBDTVNNU1xDTElcR2V0T3B0RXh0XEdldE9wdDsKdXNlIEdldE9wdFxPcGVyYW5kOwp1c2UgbWFtc191c2VyX3F1ZXJ5Owp1c2UgbWFtc191c2VyX3F1ZXJ5X29wdDsKCmNsYXNzIFVzZXJBZGRDb21tYW5kIGV4dGVuZHMgQ29tbWFuZAp7CiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoIEFwcCAkYXBwICkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCAkYXBwLCAnbWFtcy11c2VyLWFkZCcgKTsKICAgICAgICAkdGhpcy0+YWRkT3BlcmFuZCggbmV3IE9wZXJhbmQoICd1c2VybmFtZScsIE9wZXJhbmQ6OlJFUVVJUkVEICkgKTsKICAgICAgICAkdGhpcy0+YWRkT3BlcmFuZCggbmV3IE9wZXJhbmQoICdwYXNzd29yZCcsIE9wZXJhbmQ6OlJFUVVJUkVEICkgKTsKICAgICAgICAkdGhpcy0+YWRkT3BlcmFuZCggbmV3IE9wZXJhbmQoICdncm91cCcsIE9wZXJhbmQ6Ok1VTFRJUExFICkgKTsKICAgICAgICAkdGhpcy0+YWRkT3B0aW9uKCBPcHRpb246OkNyZWF0ZSgncCcsJ3Byb3AnLCBHZXRPcHQ6Ok1VTFRJUExFX0FSR1VNRU5UKS0+c2V0RGVzY3JpcHRpb24oJ0EgdXNlciBwcm9wZXJ0eSBpbiB0aGUgZm9ybSBvZiBuYW1lPXZhbHVlJykgKTsKICAgICAgICAkdGhpcy0+YWRkT3B0aW9uKCBPcHRpb246OkNyZWF0ZSgnZicsJ2ZvcmNlJyktPnNldERlc2NyaXB0aW9uKCdJZ25vcmUgZW1haWwgYWRkcmVzcyBjaGVja3MsIGFuZCBhbGxvdyBzcGVjaWZ5aW5nIHVua25vd24gcHJvcGVydGllcycpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2hvcnREZXNjcmlwdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuICdBZGQgYSBuZXcgRkVVIFVzZXIgYWNjb3VudCc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldExvbmdEZXNjcmlwdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuICdBZGQgYSBuZXcgRkVVIHVzZXIgdG8gb25lIG9yIG1vcmUgZ3JvdXBzJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFuZGxlKCkKICAgIHsKICAgICAgICAkdXNlcm5hbWUgPSB0cmltKCR0aGlzLT5nZXRPcGVyYW5kKCd1c2VybmFtZScpLT52YWx1ZSgpKTsKICAgICAgICAkcGFzc3dvcmQgPSB0cmltKCR0aGlzLT5nZXRPcGVyYW5kKCdwYXNzd29yZCcpLT52YWx1ZSgpKTsKICAgICAgICAkZ3JvdXBzID0gJHRoaXMtPmdldE9wZXJhbmQoJ2dyb3VwJyktPnZhbHVlKCk7CiAgICAgICAgJHByb3BzID0gJHRoaXMtPmdldE9wdGlvbigncHJvcCcpLT52YWx1ZSgpOwogICAgICAgICRmb3JjZSA9ICR0aGlzLT5nZXRPcHRpb24oJ2ZvcmNlJyktPnZhbHVlKCk7CiAgICAgICAgaWYoIGVtcHR5KCRncm91cHMpICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdQbGVhc2Ugc3BlY2lmeSBvbmUgb3IgbW9yZSBncm91cCBuYW1lcycpOwoKICAgICAgICAvLyBub3cgdmFsaWRhdGUgdGhlIGdyb3VwcwogICAgICAgICRtYW1zID0gXGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfTUFNUyk7CiAgICAgICAgJGRlZm5zID0gJG1hbXMtPkdldFByb3BlcnR5RGVmbnMoKTsKICAgICAgICAkYWxsZ3JvdXBzID0gJG1hbXMtPkdldEdyb3VwTGlzdCgpOwoKICAgICAgICAvLyB2YWxpZGF0ZSB0aGF0IHRoZSB1c2VybmFtZSBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0CiAgICAgICAgJHRlc3RfdWlkID0gJG1hbXMtPkdldFVzZXJJRCgkdXNlcm5hbWUpOwogICAgICAgIGlmKCAkdGVzdF91aWQgPiAwICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdUaGUgdXNlcm5hbWUgJy4kdXNlcm5hbWUuJyBhbHJlYWR5IGV4aXN0cycpOwogICAgICAgIGlmKCAhJGZvcmNlICYmICRtYW1zLT5HZXRQcmVmZXJlbmNlKCd1c2VybmFtZV9pc19lbWFpbCcpICYmICFpc19lbWFpbCgkdXNlcm5hbWUpICkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHVzZXJuYW1lLicgaXMgbm90IGEgdmFsaWQgZW1haWwgYWRkcmVzcycpOwogICAgICAgIH0KCiAgICAgICAgLy8gdmFsaWRhdGUgdGhlIHNwZWNpZmllZCBncm91cCBuYW1lcy4KICAgICAgICAkZ3JvdXBuYW1lcyA9IGFycmF5X2tleXMoJGFsbGdyb3Vwcyk7CiAgICAgICAgJGVycl9ncm91cHMgPSBhcnJheV9kaWZmKCRncm91cHMsICRncm91cG5hbWVzKTsKICAgICAgICBpZiggIWVtcHR5KCRlcnJfZ3JvdXBzKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignT25lIG9yIG1vcmUgZ3JvdXBzIHNwZWNpZmllZCBkb2VzIG5vdCBleGlzdCcpOwoKICAgICAgICAvLyBnZXQgYWxsIG9mIHRoZSBwcm9wZXJ0aWVzIGZvciBlYWNoIG9mIHRoZXNlIGdyb3VwcwogICAgICAgICRhbGxwcm9wcyA9IFtdOwogICAgICAgIGZvcmVhY2goICRncm91cHMgYXMgJGdyb3VwICkgewogICAgICAgICAgICAkZ2lkID0gJGFsbGdyb3Vwc1skZ3JvdXBdOwogICAgICAgICAgICAkcmVsbnMgPSAkbWFtcy0+R2V0R3JvdXBQcm9wZXJ0eVJlbGF0aW9ucygkZ2lkKTsKICAgICAgICAgICAgJGFsbHByb3BzID0gXE1BTVNcUlJVdGlsczo6YXJyYXlfbWVyZ2VfYnlfbmFtZV9yZXF1aXJlZCgkYWxscHJvcHMsJHJlbG5zKTsKICAgICAgICAgICAgdXNvcnQoJGFsbHByb3BzLCBhcnJheSgneHRfYXJyYXknLCdjb21wYXJlX2VsZW1lbnRzX2J5X3NvcnRvcmRlcl9rZXknKSk7CiAgICAgICAgfQoKICAgICAgICAvLyBnZXQgYSBsaXN0IG9mIHRoZSBwcm9wZXJ0aWVzIHRoYXQgYXJlIGFsbG93ZWQKICAgICAgICAvLyAgIChub3Qgb2YgdHlwZSBkYXRhKQogICAgICAgICRhbGxvd2VkX3Byb3BzID0gYXJyYXlfZmlsdGVyKCRhbGxwcm9wcywgZnVuY3Rpb24oJGl0ZW0pIHVzZSAoJGRlZm5zLCAkbWFtcyl7CiAgICAgICAgICAgICAgICAkbmFtZSA9ICRpdGVtWyduYW1lJ107CiAgICAgICAgICAgICAgICBpZiggIWlzc2V0KCRkZWZuc1skbmFtZV0pICkgcmV0dXJuOwogICAgICAgICAgICAgICAgaWYoICRkZWZuc1skbmFtZV1bJ3R5cGUnXSA9PSAkbWFtczo6RklFTERUWVBFX0RBVEEgKSByZXR1cm47CiAgICAgICAgICAgICAgICBpZiggJGRlZm5zWyRuYW1lXVsndHlwZSddID09ICRtYW1zOjpGSUVMRFRZUEVfSU1BR0UgKSByZXR1cm47CiAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsKICAgICAgICAgICAgfSk7CiAgICAgICAgJGFsbG93ZWRfcHJvcHMgPSBhcnJheV9tYXAoZnVuY3Rpb24oJGl0ZW0pewogICAgICAgICAgICAgICAgcmV0dXJuICRpdGVtWyduYW1lJ107CiAgICAgICAgICAgIH0sICRhbGxvd2VkX3Byb3BzKTsKCiAgICAgICAgLy8gbm93IGdldCBhbGwgb2Ygb3VyIHJlcXVpcmVkIHByb3BlcnRpZXMKICAgICAgICAkcmVxdWlyZWQgPSBhcnJheV9maWx0ZXIoJGFsbHByb3BzLGZ1bmN0aW9uKCRpdGVtKXsKICAgICAgICAgICAgICAgIHJldHVybiAkaXRlbVsncmVxdWlyZWQnXSA9PSAyOwogICAgICAgICAgICB9KTsKICAgICAgICAkcmVxdWlyZWQgPSBhcnJheV9tYXAoZnVuY3Rpb24oJGl0ZW0pewogICAgICAgICAgICAgICAgcmV0dXJuICRpdGVtWyduYW1lJ107CiAgICAgICAgICAgIH0sICRyZXF1aXJlZCk7CgogICAgICAgIC8vIG5vdyBwYXJzZSBvdXIgcHJvcGVydHkgb3B0aW9ucwogICAgICAgICRnYXRoZXJfcHJvcHMgPSBmdW5jdGlvbigkcHJvcHMpIHsKICAgICAgICAgICAgJG91dCA9IFtdOwogICAgICAgICAgICBpZiggaXNfYXJyYXkoJHByb3BzKSApIHsKICAgICAgICAgICAgICAgIGZvcmVhY2goICRwcm9wcyBhcyAkcHJvcF9vcHQgKSB7CiAgICAgICAgICAgICAgICAgICAgbGlzdCgkcHJvcF9uYW1lLCR2YWx1ZSkgPSBleHBsb2RlKCc9JywkcHJvcF9vcHQsMik7CiAgICAgICAgICAgICAgICAgICAgJHByb3BfbmFtZSA9IHRyaW0oJHByb3BfbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gdHJpbSgkdmFsdWUpOwogICAgICAgICAgICAgICAgICAgIGlmKCAkcHJvcF9uYW1lICkgewogICAgICAgICAgICAgICAgICAgICAgICAkb3V0WyRwcm9wX25hbWVdID0gJHZhbHVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gJG91dDsKICAgICAgICB9OwoKICAgICAgICAvLyBub3csIHNlZSBpZiB3ZSBoYXZlIGFueSBvZiB0aGVzZSBwcm9wcwogICAgICAgICR2YWxpZF9wcm9wcyA9ICRnYXRoZXJfcHJvcHMoJHByb3BzKTsKICAgICAgICAkcHJvcF9rZXlzID0gYXJyYXlfa2V5cygkdmFsaWRfcHJvcHMpOwoKICAgICAgICAvLyBpZiB3ZSBoYXZlIHJlcXVpcmVkIHByb3BlcnRpZXMsIG1ha2Ugc3VyZSB0aGV5IHdlcmUgYWxsIHNwZWNpZmllZC4KICAgICAgICBpZiggIWVtcHR5KCRyZXF1aXJlZCkpIHsKICAgICAgICAgICAgaWYoICFlbXB0eShhcnJheV9kaWZmKCRyZXF1aXJlZCwkcHJvcF9rZXlzKSkgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIlRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBhcmUgcmVxdWlyZWQgYWNjb3JkaW5nIHRvIHRoZSBncm91cHMgc3BlY2lmaWVkOiAiLmltcGxvZGUoJywnLCRyZXF1aXJlZCkpOwogICAgICAgIH0KCiAgICAgICAgLy8gbWFrZSBzdXJlIGFsbCBvZiBvdXIgcHJvcGVydGllcyBhcmUga25vd24uCiAgICAgICAgJG5vdF9hbGxvd2VkID0gYXJyYXlfZGlmZigkcHJvcF9rZXlzLCRhbGxvd2VkX3Byb3BzKTsKICAgICAgICBpZiggIWVtcHR5KCRub3RfYWxsb3dlZCkgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1RoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBkbyBub3QgZXhpc3Q6ICcuaW1wbG9kZSgkbm90X2FsbG93ZWQpKTsKCiAgICAgICAgLy8gYWRkIHRoZSB1c2VyCiAgICAgICAgJHRtcCA9IChpbnQpICRtYW1zLT5HZXRQcmVmZXJlbmNlKCdleHBpcmVhZ2VfbW9udGhzJyw1MjApOwogICAgICAgICRleHBpcmVzID0gc3RydG90aW1lKCIreyR0bXB9IG1vbnRocyAwMDowMCIpOwogICAgICAgIGlmKCAhJGV4cGlyZXMgKSAkZXhwaXJlcyA9IFBIUF9JTlRfTUFYOwoKICAgICAgICAkcmVzID0gJG1hbXMtPkFkZFVzZXIoICR1c2VybmFtZSwgJHBhc3N3b3JkLCAkZXhwaXJlcyApOwogICAgICAgIGlmKCAhaXNfYXJyYXkoJHJlcykgfHwgIWlzc2V0KCRyZXNbMF0pIHx8ICEkcmVzWzBdICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDb3VsZCBub3QgY3JlYXRlIHVzZXI6ICcuJHJlc1sxXSk7OwogICAgICAgICR1aWQgPSAkcmVzWzFdOwoKICAgICAgICAvLyBhZGQgaGltIHRvIGhpcyBncm91cHMKICAgICAgICBmb3JlYWNoKCAkZ3JvdXBzIGFzICRncm91cCApIHsKICAgICAgICAgICAgJGdpZCA9ICRhbGxncm91cHNbJGdyb3VwXTsKICAgICAgICAgICAgJHJlcyA9ICRtYW1zLT5BZGRVc2VyVG9Hcm91cCggJHVpZCwgJGdpZCApOwogICAgICAgICAgICBpZiggISRyZXMgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1Byb2JsZW0gYWRkaW5nIHVzZXIgdG8gZ3JvdXAuLi4gY3JlYXRpb24gaW5jb21wbGV0ZScpOwogICAgICAgIH0KCiAgICAgICAgLy8gc2V0IHByb3BlcnRpZXMKICAgICAgICBpZiggJHZhbGlkX3Byb3BzICkgewogICAgICAgICAgICBmb3JlYWNoKCAkdmFsaWRfcHJvcHMgYXMgJHByb3BfbmFtZSA9PiAkdmFsdWUgKSB7CiAgICAgICAgICAgICAgICAkcmVzID0gJG1hbXMtPlNldFVzZXJQcm9wZXJ0eUZ1bGwoJHByb3BfbmFtZSwkdmFsdWUsJHVpZCk7CiAgICAgICAgICAgICAgICBpZiggISRyZXMgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1Byb2JsZW0gc2V0dGluZyB1c2VyIHByb3BlcnRpZXMuLi4gY3JlYXRpb24gaW5jb21wbGV0ZScpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBhbmQgZG9uZS4KICAgIH0KCn0gLy8gZW5kIG9mIGNsYXNzLgo=]]></data>
	</file>
	<file>
	  <filename>/lib/Commands/class.UserDeleteCommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVNcQ29tbWFuZHM7CnVzZSBDTVNNU1xDTElcQXBwOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxDb21tYW5kOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxPcHRpb247CnVzZSBDTVNNU1xDTElcR2V0T3B0RXh0XEdldE9wdDsKdXNlIEdldE9wdFxPcGVyYW5kOwp1c2UgbWFtc191c2VyX3F1ZXJ5Owp1c2UgbWFtc191c2VyX3F1ZXJ5X29wdDsKCmNsYXNzIFVzZXJEZWxldGVDb21tYW5kIGV4dGVuZHMgQ29tbWFuZAp7CiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoIEFwcCAkYXBwICkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCAkYXBwLCAnbWFtcy11c2VyLWRlbCcgKTsKICAgICAgICAkdGhpcy0+YWRkT3BlcmFuZCggbmV3IE9wZXJhbmQoICd1c2VybmFtZScsIE9wZXJhbmQ6OlJFUVVJUkVEICkgKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2hvcnREZXNjcmlwdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuICdMaXN0IEZFVSB1c2Vycyc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldExvbmdEZXNjcmlwdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuICdUaGlzIGNvbW1hbmQgd2lsbCByZXR1cm4gYSBsaXN0IG9mIEZFVSB1c2VycyBmaWx0ZXJlZCBieSB2YXJpb3VzIGNyaXRlcmlhJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFuZGxlKCkKICAgIHsKICAgICAgICAkdXNlcm5hbWUgPSB0cmltKCR0aGlzLT5nZXRPcGVyYW5kKCd1c2VybmFtZScpLT52YWx1ZSgpKTsKICAgICAgICAkbWFtcyA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX01BTVMpOwogICAgICAgICR1aWQgPSAkbWFtcy0+R2V0VXNlcklEKCR1c2VybmFtZSk7CiAgICAgICAgaWYoICR1aWQgPCAxICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCJVc2VyICR1c2VybmFtZSBub3QgZm91bmQiKTsKCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJHJlcyA9ICRtYW1zLT5EZWxldGVVc2VyRnVsbCgkdWlkKTsKICAgICAgICAgICAgaWYoICFpc19hcnJheSgkcmVzKSB8fCAhaXNzZXQoJHJlc1swXSkgfHwgISRyZXNbMF0gKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHJlc1sxXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY2F0Y2goIFxFeGNlcHRpb24gJGUgKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignVXNlciBkZWxldGUgZmFpbGVkOiAnLiRlLT5HZXRNZXNzYWdlKCkpOwogICAgICAgIH0KICAgIH0KfSAvLyBlbmQgb2YgY2xhc3MuCg==]]></data>
	</file>
	<file>
	  <filename>/lib/Commands/class.UserEditCommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVNcQ29tbWFuZHM7CnVzZSBDTVNNU1xDTElcQXBwOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxDb21tYW5kOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxPcHRpb247CnVzZSBDTVNNU1xDTElcR2V0T3B0RXh0XEdldE9wdDsKdXNlIEdldE9wdFxPcGVyYW5kOwp1c2UgbWFtc191c2VyX3F1ZXJ5Owp1c2UgbWFtc191c2VyX3F1ZXJ5X29wdDsKCmNsYXNzIFVzZXJFZGl0Q29tbWFuZCBleHRlbmRzIENvbW1hbmQKewogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCBBcHAgJGFwcCApCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCggJGFwcCwgJ21hbXMtdXNlci1lZGl0JyApOwogICAgICAgICR0aGlzLT5hZGRPcGVyYW5kKCBuZXcgT3BlcmFuZCggJ3VzZXJuYW1lJywgT3BlcmFuZDo6UkVRVUlSRUQgKSApOwogICAgICAgICR0aGlzLT5hZGRPcHRpb24oIE9wdGlvbjo6Q3JlYXRlKG51bGwsJ3VzZXJuYW1lJywgR2V0T3B0OjpSRVFVSVJFRF9BUkdVTUVOVCktPnNldERlc2NyaXB0aW9uKCdBZGp1c3QgdGhlIHVzZXJzIHVzZXJuYW1lJykgKTsKICAgICAgICAkdGhpcy0+YWRkT3B0aW9uKCBPcHRpb246OkNyZWF0ZShudWxsLCdwYXNzd29yZCcsIEdldE9wdDo6UkVRVUlSRURfQVJHVU1FTlQpLT5zZXREZXNjcmlwdGlvbignQWRqdXN0IHRoZSB1c2VycyBwYXNzd29yZCcpICk7CiAgICAgICAgJHRoaXMtPmFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUobnVsbCwnZXhwaXJlcycsIEdldE9wdDo6UkVRVUlSRURfQVJHVU1FTlQpLT5zZXREZXNjcmlwdGlvbignQWRqdXN0IHRoZSB1c2VycyBleHBpcnkgZGF0ZScpICk7CiAgICAgICAgJHRoaXMtPmFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUobnVsbCwnZm9yY2UtY2hhbmdlcHcnLCBHZXRPcHQ6Ok9QVElPTkFMX0FSR1VNRU5UKS0+c2V0RGVzY3JpcHRpb24oJ0ZvcmNlIHRoZSB1c2VyIHRvIGNoYW5nZSBoaXMgcGFzc3dvcmQgb24gdGhlIG5leHQgbG9naW4nKSApOwogICAgICAgICR0aGlzLT5hZGRPcHRpb24oIE9wdGlvbjo6Q3JlYXRlKG51bGwsJ2Rpc2FibGVkJywgR2V0T3B0OjpPUFRJT05BTF9BUkdVTUVOVCktPnNldERlc2NyaXB0aW9uKCdUb2dnbGUgdXNlcnMgZGlzYWJsZWQgc3RhdGUnKSApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaG9ydERlc2NyaXB0aW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0VkaXQgRkVVIHVzZXIgaW5mbyc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldExvbmdEZXNjcmlwdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuICdUaGlzIGNvbW1hbmQgYWxsb3dzIHNpbXBsZSBtb2RpZmljYXRpb24gb2YgdXNlciBzZXR0aW5ncy4gIFRoZSB1c2VyIGlzIE5PVCBub3RpZmllZCBvZiBhbnkgY2hhbmdlcyB0byBoaXMgYWNjb3VudCc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGhhbmRsZSgpCiAgICB7CiAgICAgICAgJHVzZXJuYW1lID0gdHJpbSgkdGhpcy0+Z2V0T3BlcmFuZCgndXNlcm5hbWUnKS0+dmFsdWUoKSk7CiAgICAgICAgJG5ld191c2VybmFtZSA9IHRyaW0oJHRoaXMtPmdldE9wdGlvbigndXNlcm5hbWUnKSk7CiAgICAgICAgJG5ld19wYXNzd29yZCA9IHRyaW0oJHRoaXMtPmdldE9wdGlvbigncGFzc3dvcmQnKSk7CiAgICAgICAgJG5ld19leHBpcmVzID0gdHJpbSgkdGhpcy0+Z2V0T3B0aW9uKCdleHBpcmVzJykpOwogICAgICAgICRkaXNhYmxlZCA9IHRyaW0oJHRoaXMtPmdldE9wdGlvbignZGlzYWJsZWQnKS0+dmFsdWUoKSk7CiAgICAgICAgJGZvcmNlX2NoYW5nZXB3ID0gdHJpbSgkdGhpcy0+Z2V0T3B0aW9uKCdmb3JjZS1jaGFuZ2VwdycpLT52YWx1ZSgpKTsKCiAgICAgICAgJG1hbXMgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKTsKICAgICAgICAkdWlkID0gJG1hbXMtPkdldFVzZXJJRCgkdXNlcm5hbWUpOwogICAgICAgIGlmKCAkdWlkIDwgMSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignVXNlciBub3QgZm91bmQnKTsKCiAgICAgICAgaWYoICEkbmV3X3VzZXJuYW1lICYmICEkbmV3X3Bhc3N3b3JkICYmICEkbmV3X2V4cGlyZXMgJiYgIXN0cmxlbigkZGlzYWJsZWQpICYmICFzdHJsZW4oJGZvcmNlX2NoYW5nZXB3KSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1BsZWFzZSBzcGVjaWZ5IGF0IGxlYXN0IG9uZSBvcHRpb24nKTsKICAgICAgICB9CgogICAgICAgIGlmKCAhZW1wdHkoJG5ld191c2VybmFtZSkgKSB7CiAgICAgICAgICAgIC8vIGNoZWNrIHRoYXQgdGhpcyB1c2VybmFtZSBkb2Vzbid0IGFscmVhZHkgZXhpc3QuCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJG5ld191c2VybmFtZSA9ICR1c2VybmFtZTsKICAgICAgICB9CgogICAgICAgIGlmKCAhZW1wdHkoJG5ld19leHBpcmVzKSApIHsKICAgICAgICAgICAgJG5ld19leHBpcmVzID0gc3RydG90aW1lKCRuZXdfZXhwaXJlcyk7CiAgICAgICAgICAgIGlmKCAhJG5ld19leHBpcmVzICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDb3VsZCBub3QgZGV0ZXJtaW5lIGEgdGltZSBmcm9tIHRoZSBleHBpcmVzIHN0cmluZyBzcGVjaWZpZWQnKTsKICAgICAgICB9CgogICAgICAgIGlmKCAhZW1wdHkoJG5ld191c2VybmFtZSkgfHwgIWVtcHR5KCRuZXdfcGFzc3dvcmQpIHx8ICRuZXdfZXhwaXJlcyA+IDAgKSB7CiAgICAgICAgICAgICRtYW1zLT5TZXRVc2VyKCAkdWlkLCAkbmV3X3VzZXJuYW1lLCAkbmV3X3Bhc3N3b3JkLCAkbmV3X2V4cGlyZXMgKTsKICAgICAgICB9CiAgICAgICAgaWYoIHN0cmxlbigkZGlzYWJsZWQpICkgJG1hbXMtPlNldFVzZXJEaXNhYmxlZCggJHVpZCwgJGRpc2FibGVkICk7CiAgICAgICAgaWYoIHN0cmxlbigkZm9yY2VfY2hhbmdlcHcpICkgewogICAgICAgICAgICAkbWFtcy0+Rm9yY2VQYXNzd29yZENoYW5nZSgkdWlkLCAkZm9yY2VfY2hhbmdlcHcpOwogICAgICAgIH0KICAgIH0KfSAvLyBlbmQgb2YgY2xhc3MuCg==]]></data>
	</file>
	<file>
	  <filename>/lib/Commands/class.UserListCommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVNcQ29tbWFuZHM7CnVzZSBDTVNNU1xDTElcQXBwOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxDb21tYW5kOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxPcHRpb247CnVzZSBDTVNNU1xDTElcR2V0T3B0RXh0XEdldE9wdDsKdXNlIEdldE9wdFxPcGVyYW5kOwp1c2UgbWFtc191c2VyX3F1ZXJ5Owp1c2UgbWFtc191c2VyX3F1ZXJ5X29wdDsKCmNsYXNzIFVzZXJMaXN0Q29tbWFuZCBleHRlbmRzIENvbW1hbmQKewogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCBBcHAgJGFwcCApCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCggJGFwcCwgJ21hbXMtdXNlci1saXN0JyApOwogICAgICAgICR0aGlzLT5hZGRPcGVyYW5kKCBuZXcgT3BlcmFuZCggJ3BhdHRlcm4nLCBPcGVyYW5kOjpPUFRJT05BTCApICk7CiAgICAgICAgJHRoaXMtPmFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUoJ2cnLCdncm91cCcpLT5zZXREZXNjcmlwdGlvbignRmlsdGVyIGJ5IG1lbWJlcnMgb2YgdGhlIG5hbWVkIGdyb3VwJykgKTsKICAgICAgICAkdGhpcy0+YWRkT3B0aW9uKCBPcHRpb246OkNyZWF0ZSgnbCcsJ2xpbWl0JyktPnNldERlc2NyaXB0aW9uKCdQYWdlIGxpbWl0IChkZWZhdWx0IDUwMCknKSApOwogICAgICAgICR0aGlzLT5hZGRPcHRpb24oIE9wdGlvbjo6Q3JlYXRlKCdvJywnb2Zmc2V0JyktPnNldERlc2NyaXB0aW9uKCdTdGFydCBpbmRleCAoZGVmYXVsdCAwKScpICk7CiAgICAgICAgJHRoaXMtPmFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUoJ2onLCdqc29uJyktPnNldERlc2NyaXB0aW9uKCdPdXRwdXQgZGF0YSBpbiBKU09OIGZvcm1hdCcpICk7CiAgICAgICAgJHRoaXMtPkFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUobnVsbCwnbG9nZ2VkaW4nKS0+c2V0RGVzY3JpcHRpb24oJ0Rpc3BsYXkgb25seSBsb2dnZWRpbiB1c2VycycpICk7CiAgICAgICAgJHRoaXMtPkFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUobnVsbCwnZXhwaXJlZCcpLT5zZXREZXNjcmlwdGlvbignRGlzcGxheSBvbmx5IGxvZ2dlZGluIHVzZXJzJykgKTsKICAgICAgICAkdGhpcy0+QWRkT3B0aW9uKCBPcHRpb246OkNyZWF0ZShudWxsLCdkaXNhYmxlZCcpLT5zZXREZXNjcmlwdGlvbignRGlzcGxheSBvbmx5IGRpc2FibGVkIHVzZXJzJykgKTsKICAgICAgICAkdGhpcy0+QWRkT3B0aW9uKCBPcHRpb246OkNyZWF0ZShudWxsLCdjcmVhdGVkLWJlZm9yZScpLT5zZXREZXNjcmlwdGlvbignRmlsdGVyIG9uIHVzZXJzIGNyZWF0ZWQgYmVmb3JlIHRoZSBzcGVjaWZpZWQgZGF0ZScpICk7CiAgICAgICAgJHRoaXMtPkFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUobnVsbCwnY3JlYXRlZC1hZnRlcicpLT5zZXREZXNjcmlwdGlvbignRmlsdGVyIG9uIHVzZXJzIGNyZWF0ZWQgYWZ0ZXIgdGhlIHNwZWNpZmllZCBkYXRlJykgKTsKICAgICAgICAkaGVscCA9IDw8PEVPVApTb3J0aW5nIG9mIHRoZSBvdXRwdXQuICAgUG9zc2libGUgdmFsdWVzIGFyZTogQ1JFQVRFRF9ERVNDKiwgQ1JFQVRFRF9BU0MsIFVTRVJOQU1FX0FTQywgVVNFUk5BTUVfREVTQywgRVhQSVJFU19BU0MsIEVYUElSRVNfREVTQwpFT1Q7CiAgICAgICAgJHRoaXMtPkFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUobnVsbCwnc29ydGJ5JyktPnNldERlc2NyaXB0aW9uKCRoZWxwKS0+c2V0RGVmYXVsdFZhbHVlKCdDUkVBVEVEX0RFU0MnKSApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaG9ydERlc2NyaXB0aW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0xpc3QgRkVVIHVzZXJzJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TG9uZ0Rlc2NyaXB0aW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gJ1RoaXMgY29tbWFuZCB3aWxsIHJldHVybiBhIGxpc3Qgb2YgRkVVIHVzZXJzIGZpbHRlcmVkIGJ5IHZhcmlvdXMgY3JpdGVyaWEnOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBub3JtYWxfb3V0cHV0KCBhcnJheSAkcm93ICkKICAgIHsKICAgICAgICAkZm10ID0gIiUtOGQgJS00MHNcbiI7CiAgICAgICAgcHJpbnRmKCRmbXQsJHJvd1snaWQnXSwkcm93Wyd1c2VybmFtZSddKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFuZGxlKCkKICAgIHsKICAgICAgICAkcGF0dGVybiA9IHRyaW0oJHRoaXMtPmdldE9wZXJhbmQoJ3BhdHRlcm4nKS0+dmFsdWUoKSk7CiAgICAgICAgJGdyb3VwID0gJHRoaXMtPmdldE9wdGlvbignZ3JvdXAnKS0+dmFsdWUoKTsKICAgICAgICAkbGltaXQgPSAoaW50KSAkdGhpcy0+R2V0T3B0aW9uKCdsaW1pdCcpLT52YWx1ZSgpOwogICAgICAgIGlmKCAkbGltaXQgPCAxICkgJGxpbWl0ID0gNTAwOwogICAgICAgICRsaW1pdCA9IG1pbigxMDAwMDAsNTAwKTsKICAgICAgICAkb2Zmc2V0ID0gKGludCkgJHRoaXMtPkdldE9wdGlvbignb2Zmc2V0JyktPnZhbHVlKCk7CiAgICAgICAgJG9mZnNldCA9IG1heCgkb2Zmc2V0LDApOwogICAgICAgICRsb2dnZWRpbiA9IChpbnQpICR0aGlzLT5HZXRPcHRpb24oJ2xvZ2dlZGluJyktPnZhbHVlKCk7CiAgICAgICAgJGRpc2FibGVkID0gKGludCkgJHRoaXMtPkdldE9wdGlvbignZGlzYWJsZWQnKS0+dmFsdWUoKTsKICAgICAgICAkZXhwaXJlZCA9IChpbnQpICR0aGlzLT5HZXRPcHRpb24oJ2V4cGlyZWQnKS0+dmFsdWUoKTsKICAgICAgICAkY3JlYXRlZF9iZWZvcmUgPSB0cmltKCR0aGlzLT5HZXRPcHRpb24oJ2NyZWF0ZWQtYmVmb3JlJykpOwogICAgICAgICRjcmVhdGVkX2FmdGVyID0gdHJpbSgkdGhpcy0+R2V0T3B0aW9uKCdjcmVhdGVkLWFmdGVyJykpOwogICAgICAgICRqc29uID0gJHRoaXMtPkdldE9wdGlvbignanNvbicpLT52YWx1ZSgpOwoKICAgICAgICAkcXVlcnkgPSBuZXcgbWFtc191c2VyX3F1ZXJ5OwogICAgICAgICRxdWVyeS0+c2V0X3BhZ2VsaW1pdCgkbGltaXQpOwogICAgICAgICRxdWVyeS0+c2V0X29mZnNldCgkb2Zmc2V0KTsKICAgICAgICBpZiggJHBhdHRlcm4gKSAkcXVlcnktPmFkZF9hbmRfb3B0KCBtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9VU0VSTkFNRSwgJHBhdHRlcm4gKTsKICAgICAgICBpZiggIWlzX251bGwoJGdyb3VwKSApICRxdWVyeS0+YWRkX2FuZF9vcHQoIG1hbXNfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX0dST1VQLCAkZ3JvdXAgKTsKICAgICAgICBpZiggJGxvZ2dlZGluICE9PSAwICkgJHF1ZXJ5LT5hZGRfYW5kX29wdCggbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfTE9HR0VESU4gKTsKICAgICAgICBpZiggJGV4cGlyZWQgIT09IDAgKSAkcXVlcnktPmFkZF9hbmRfb3B0KCBtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9FWFBJUkVTX0xULCB0aW1lKCkgKTsKICAgICAgICBpZiggJGRpc2FibGVkICE9PSAwICkgJHF1ZXJ5LT5hZGRfYW5kX29wdCggbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfRElTQUJMRUQgKTsKICAgICAgICBpZiggJGNyZWF0ZWRfYmVmb3JlICkgewogICAgICAgICAgICAkdHMgPSBzdHJ0b3RpbWUoJGNyZWF0ZWRfYmVmb3JlKTsKICAgICAgICAgICAgaWYoICEkdHMgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCJDb3VsZCBub3QgY29udmVydCAkdHMgdG8gYSB2YWxpZCB0aW1lIHZhbHVlLi4uIHNlZSBzdHJ0b3RpbWUiKTsKICAgICAgICAgICAgJHF1ZXJ5LT5hZGRfYW5kX29wdCggbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfQ1JFQVRFRF9MVCwgJHRzICk7CiAgICAgICAgfQogICAgICAgIGlmKCAkY3JlYXRlZF9hZnRlciApIHsKICAgICAgICAgICAgJHRzID0gc3RydG90aW1lKCRjcmVhdGVkX2FmdGVyKTsKICAgICAgICAgICAgaWYoICEkdHMgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCJDb3VsZCBub3QgY29udmVydCAkdHMgdG8gYSB2YWxpZCB0aW1lIHZhbHVlLi4uIHNlZSBzdHJ0b3RpbWUiKTsKICAgICAgICAgICAgJHF1ZXJ5LT5hZGRfYW5kX29wdCggbWFtc191c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfQ1JFQVRFRF9HRSwgJHRzICk7CiAgICAgICAgfQoKICAgICAgICAkc29ydGJ5ID0gJHRoaXMtPkdldE9wdGlvbignc29ydGJ5JyktPnZhbHVlKCk7CiAgICAgICAgaWYoICEkc29ydGJ5ICkgJHNvcnRieSA9ICdDUkVBVEVEX0RFU0MnOwogICAgICAgIHN3aXRjaCggc3RydG91cHBlcigkc29ydGJ5KSApIHsKICAgICAgICBjYXNlICdDUkVBVEVEX0FTQyc6CiAgICAgICAgICAgICRxdWVyeS0+c2V0X3NvcnRieSggJHF1ZXJ5OjpSRVNVTFRfU09SVEJZX0NSRUFURUQgKTsKICAgICAgICAgICAgJHF1ZXJ5LT5zZXRfc29ydG9yZGVyKCAkcXVlcnk6OlJFU1VMVF9TT1JUT1JERVJfQVNDICk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ0NSRUFURURfREVTQyc6CiAgICAgICAgICAgICRxdWVyeS0+c2V0X3NvcnRieSggJHF1ZXJ5OjpSRVNVTFRfU09SVEJZX0NSRUFURUQgKTsKICAgICAgICAgICAgJHF1ZXJ5LT5zZXRfc29ydG9yZGVyKCAkcXVlcnk6OlJFU1VMVF9TT1JUT1JERVJfREVTQyApOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdVU0VSTkFNRV9BU0MnOgogICAgICAgICAgICAkcXVlcnktPnNldF9zb3J0YnkoICRxdWVyeTo6UkVTVUxUX1NPUlRCWV9VU0VSTkFNRSApOwogICAgICAgICAgICAkcXVlcnktPnNldF9zb3J0b3JkZXIoICRxdWVyeTo6UkVTVUxUX1NPUlRPUkRFUl9BU0MgKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnVVNFUk5BTUVfREVTQyc6CiAgICAgICAgICAgICRxdWVyeS0+c2V0X3NvcnRieSggJHF1ZXJ5OjpSRVNVTFRfU09SVEJZX1VTRVJOQU1FICk7CiAgICAgICAgICAgICRxdWVyeS0+c2V0X3NvcnRvcmRlciggJHF1ZXJ5OjpSRVNVTFRfU09SVE9SREVSX0RFU0MgKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnRVhQSVJFU19BU0MnOgogICAgICAgICAgICAkcXVlcnktPnNldF9zb3J0YnkoICRxdWVyeTo6UkVTVUxUX1NPUlRCWV9FWFBJUkVTICk7CiAgICAgICAgICAgICRxdWVyeS0+c2V0X3NvcnRvcmRlciggJHF1ZXJ5OjpSRVNVTFRfU09SVE9SREVSX0FTQyApOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdFWFBJUkVTX0RFU0MnOgogICAgICAgICAgICAkcXVlcnktPnNldF9zb3J0YnkoICRxdWVyeTo6UkVTVUxUX1NPUlRCWV9FWFBJUkVTICk7CiAgICAgICAgICAgICRxdWVyeS0+c2V0X3NvcnRvcmRlciggJHF1ZXJ5OjpSRVNVTFRfU09SVE9SREVSX0RFU0MgKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oIiRzb3J0YnkgaXMgbm90IGEgdmFsaWQgc29ydCBvcHRpb24iKTsKICAgICAgICB9CgogICAgICAgICRmaXhfcm93ID0gZnVuY3Rpb24oJHJvdykgewogICAgICAgICAgICAkcm93WydpZCddID0gKGludCkgJHJvd1snaWQnXTsKICAgICAgICAgICAgJHJvd1snbm9uc3RkJ10gPSAoaW50KSAkcm93Wydub25zdGQnXTsKICAgICAgICAgICAgJHJvd1snZGlzYWJsZWQnXSA9IChpbnQpICRyb3dbJ2Rpc2FibGVkJ107CiAgICAgICAgICAgICRyb3dbJ2ZvcmNlX25ld3B3J10gPSAoaW50KSAkcm93Wydmb3JjZV9uZXdwdyddOwogICAgICAgICAgICAkcm93Wydmb3JjZV9jaHNldHRpbmdzJ10gPSAoaW50KSAkcm93Wydmb3JjZV9jaHNldHRpbmdzJ107CiAgICAgICAgICAgICRyb3dbJ211c3RfdmFsaWRhdGUnXSA9IChpbnQpICRyb3dbJ211c3RfdmFsaWRhdGUnXTsKICAgICAgICAgICAgJHJvd1snbG9nZ2VkaW4nXSA9IChpbnQpICRyb3dbJ2xvZ2dlZGluJ107CiAgICAgICAgICAgIHVuc2V0KCRyb3dbJ3NhbHQnXSk7CiAgICAgICAgICAgIHJldHVybiAkcm93OwogICAgICAgIH07CgogICAgICAgICRycyA9ICRxdWVyeS0+ZXhlY3V0ZSgpOwogICAgICAgIGlmKCAkanNvbiApIHsKICAgICAgICAgICAgJG91dCA9IG51bGw7CiAgICAgICAgICAgIHdoaWxlKCAhJHJzLT5FT0YoKSApIHsKICAgICAgICAgICAgICAgICRyb3cgPSAkcnMtPmZpZWxkczsKICAgICAgICAgICAgICAgICRvdXRbXSA9ICRmaXhfcm93KCRyb3cpOwogICAgICAgICAgICAgICAgJHJzLT5Nb3ZlTmV4dCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVjaG8ganNvbl9lbmNvZGUoJG91dCxKU09OX1BSRVRUWV9QUklOVCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHdoaWxlKCAhJHJzLT5FT0YoKSApIHsKCiAgICAgICAgICAgICR0aGlzLT5ub3JtYWxfb3V0cHV0KCAkcnMtPmZpZWxkcyApOwogICAgICAgICAgICAkcnMtPk1vdmVOZXh0KCk7CiAgICAgICAgfQogICAgICAgIGV4aXQoKTsKICAgIH0KfSAvLyBlbmQgb2YgY2xhc3MuCg==]]></data>
	</file>
	<file>
	  <filename>/lib/Commands/class.UserPropEditCommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVNcQ29tbWFuZHM7CnVzZSBDTVNNU1xDTElcQXBwOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxDb21tYW5kOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxPcHRpb247CnVzZSBDTVNNU1xDTElcR2V0T3B0RXh0XEdldE9wdDsKdXNlIEdldE9wdFxPcGVyYW5kOwp1c2UgbWFtc191c2VyX3F1ZXJ5Owp1c2UgbWFtc191c2VyX3F1ZXJ5X29wdDsKCmNsYXNzIFVzZXJQcm9wRWRpdENvbW1hbmQgZXh0ZW5kcyBDb21tYW5kCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggQXBwICRhcHAgKQogICAgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoICRhcHAsICdtYW1zLXVzZXItcHJvcGVkaXQnICk7CiAgICAgICAgJHRoaXMtPmFkZE9wZXJhbmQoIG5ldyBPcGVyYW5kKCAndXNlcm5hbWUnLCBPcGVyYW5kOjpSRVFVSVJFRCApICk7CiAgICAgICAgJHRoaXMtPmFkZE9wZXJhbmQoIG5ldyBPcGVyYW5kKCAncHJvcGVydHknLCBPcGVyYW5kOjpSRVFVSVJFRCApICk7CiAgICAgICAgJHRoaXMtPmFkZE9wZXJhbmQoIG5ldyBPcGVyYW5kKCAncHJvcGVydHl2YWx1ZScsIE9wZXJhbmQ6Ok9QVElPTkFMICkgKTsKICAgICAgICAkdGhpcy0+YWRkT3B0aW9uKCBPcHRpb246OkNyZWF0ZSgnZicsJ2ZvcmNlJyktPnNldERlc2NyaXB0aW9uKCdJZ25vcmUgcHJvcGRlZm4gdHlwZSwgYW5kIHNldCB0aGUgdmFsdWUgYW55d2F5cycpICk7CiAgICAgICAgJHRoaXMtPmFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUobnVsbCwnZGVsZXRlJyktPnNldERlc2NyaXB0aW9uKCdEZWxldGUgdGhlIHByb3BlcnR5IHZhbHVlIGFuZCwgaWYgYW4gaW1hZ2UgcHJvcGVydHkgYW55IGFzc29jaWF0ZWQgaW1hZ2UnKSApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaG9ydERlc2NyaXB0aW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0VkaXQgRkVVIHVzZXIgcHJvcGVydGllcyc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldExvbmdEZXNjcmlwdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuICdUaGlzIGNvbW1hbmQgYWxsb3dzIHNpbXBsZSBtb2RpZmljYXRpb24gb2YgdXNlciBwcm9wZXJ0aWVzLiAgVGhlIHVzZXIgaXMgTk9UIG5vdGlmaWVkIG9mIGFueSBjaGFuZ2VzIHRvIGhpcyBhY2NvdW50JzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFuZGxlKCkKICAgIHsKICAgICAgICAkdXNlcm5hbWUgPSB0cmltKCR0aGlzLT5nZXRPcGVyYW5kKCd1c2VybmFtZScpLT52YWx1ZSgpKTsKICAgICAgICAkcHJvcGVydHkgPSB0cmltKCR0aGlzLT5nZXRPcGVyYW5kKCdwcm9wZXJ0eScpLT52YWx1ZSgpKTsKICAgICAgICAkcHJvcHZhbHVlID0gdHJpbSgkdGhpcy0+Z2V0T3BlcmFuZCgncHJvcGVydHl2YWx1ZScpLT52YWx1ZSgpKTsKICAgICAgICAkZm9yY2UgPSB0cmltKCR0aGlzLT5nZXRPcHRpb24oJ2ZvcmNlJykpOwogICAgICAgICRkZWxldGUgPSB0cmltKCR0aGlzLT5nZXRPcHRpb24oJ2RlbGV0ZScpKTsKCiAgICAgICAgJG1hbXMgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKTsKICAgICAgICAkdWlkID0gJG1hbXMtPkdldFVzZXJJRCgkdXNlcm5hbWUpOwogICAgICAgIGlmKCAkdWlkIDwgMSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiVXNlciAkdXNlcm5hbWUgbm90IGZvdW5kIik7CgogICAgICAgICRkZWZucyA9ICRtYW1zLT5HZXRQcm9wZXJ0eURlZm5zKCk7CiAgICAgICAgaWYoIGVtcHR5KCRkZWZucykgfHwgIWlzc2V0KCRkZWZuc1skcHJvcGVydHldKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignUHJvcGVydHkgJy4kcHJvcGVydHkuJyBub3QgZm91bmQnKTsKCiAgICAgICAgJGRlZm4gPSAkZGVmbnNbJHByb3BlcnR5XTsKICAgICAgICBpZiggISRmb3JjZSAmJiAoJGRlZm5bJ3R5cGUnXSA9PSAkbWFtczo6RklFTERUWVBFX0RBVEEgfHwgJGRlZm5bJ3R5cGUnXSA9PSAkbWFtczo6RklFTERUWVBFX0lNQUdFKSApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCJTb3JyeSwgcHJvcGVydGllcyBvZiB0aGlzIHR5cGUgY2Fubm90IGJlIG1hbmlwdWxhdGVkLiIpOwogICAgICAgIH0KCiAgICAgICAgaWYoICRkZWxldGUgKSB7CiAgICAgICAgICAgIGlmKCAkZGVmblsndHlwZSddID09ICRtYW1zOjpGSUVMRFRZUEVfSU1BR0UgKSB7CiAgICAgICAgICAgICAgICAvLyBnb3R0YSBnZXQgdGhlIGN1cnJlbnQgdmFsdWUgZm9yIHRoaXMgcHJvcGVydHkgaWYgdGhlcmUgaXMgb25lCiAgICAgICAgICAgICAgICAkdmFsID0gJG1hbXMtPkdldFVzZXJQcm9wZXJ0eUZ1bGwoJHByb3BlcnR5LCR1aWQpOwogICAgICAgICAgICAgICAgaWYoICR2YWwgKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gc2hvdWxkIGRlbGV0ZSBpbWFnZSBmaWxlcyBoZXJlLgogICAgICAgICAgICAgICAgICAgICRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKICAgICAgICAgICAgICAgICAgICAkZm4gPSAkY29uZmlnWyd1cGxvYWRzX3BhdGgnXS4iL19tYW1zLyR2YWwiOwogICAgICAgICAgICAgICAgICAgIGlmKCBpc19maWxlKCRmbikgKSB1bmxpbmsoJGZuKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkbWFtcy0+RGVsZXRlVXNlclByb3BlcnR5RnVsbCgkcHJvcGVydHksJHVpZCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAvLyBub3cgd2UgY2FuIHNldCB0aGUgcHJvcGVydHkgdmFsdWUuCiAgICAgICAgICAgICRtYW1zLT5TZXRVc2VyUHJvcGVydHlGdWxsKCRwcm9wZXJ0eSwkcHJvcHZhbHVlLCR1aWQpOwogICAgICAgIH0KICAgIH0KfSAvLyBlbmQgb2YgY2xhc3MuCg==]]></data>
	</file>
	<file>
	  <filename>/lib/Commands/class.UserViewCommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKbmFtZXNwYWNlIE1BTVNcQ29tbWFuZHM7CnVzZSBDTVNNU1xDTElcQXBwOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxDb21tYW5kOwp1c2UgQ01TTVNcQ0xJXEdldE9wdEV4dFxPcHRpb247CnVzZSBDTVNNU1xDTElcR2V0T3B0RXh0XEdldE9wdDsKdXNlIEdldE9wdFxPcGVyYW5kOwp1c2UgbWFtc191c2VyX3F1ZXJ5Owp1c2UgbWFtc191c2VyX3F1ZXJ5X29wdDsKCmNsYXNzIFVzZXJWaWV3Q29tbWFuZCBleHRlbmRzIENvbW1hbmQKewogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCBBcHAgJGFwcCApCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCggJGFwcCwgJ21hbXMtdXNlci12aWV3JyApOwogICAgICAgICR0aGlzLT5hZGRPcGVyYW5kKCBuZXcgT3BlcmFuZCggJ3VzZXJuYW1lJywgT3BlcmFuZDo6UkVRVUlSRUQgKSApOwogICAgICAgIC8vJHRoaXMtPmFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUoJ2YnLCdmb3JtYXQnLCBHZXRPcHQ6OlJFUVVJUkVEX0FSR1VNRU5UICktPnNldERlc2NyaXB0aW9uKCdTcGVjaWZ5IG91dHB1dCBmb3JtYXQuICBWYWx1ZXMgYXJlIGpzb24sdGV4dCcpICk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNob3J0RGVzY3JpcHRpb24oKQogICAgewogICAgICAgIHJldHVybiAnTGlzdCBGRVUgdXNlcnMnOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMb25nRGVzY3JpcHRpb24oKQogICAgewogICAgICAgIHJldHVybiAnVGhpcyBjb21tYW5kIHdpbGwgcmV0dXJuIGEgbGlzdCBvZiBGRVUgdXNlcnMgZmlsdGVyZWQgYnkgdmFyaW91cyBjcml0ZXJpYSc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGhhbmRsZSgpCiAgICB7CiAgICAgICAgJHVzZXJuYW1lID0gdHJpbSgkdGhpcy0+Z2V0T3BlcmFuZCgndXNlcm5hbWUnKS0+dmFsdWUoKSk7CiAgICAgICAgJHF1ZXJ5ID0gbmV3IG1hbXNfdXNlcl9xdWVyeTsKICAgICAgICAkcXVlcnktPnNldF93ZWJyZWFkeSgpOwogICAgICAgICRxdWVyeS0+c2V0X2RlZXAoKTsKICAgICAgICAkcXVlcnktPmFkZF9hbmRfb3B0KCBtYW1zX3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9VU0VSTkFNRSwgJHVzZXJuYW1lICk7CiAgICAgICAgJHJzID0gJHF1ZXJ5LT5leGVjdXRlKCk7CiAgICAgICAgJGRhdGEgPSAkcnMtPmZpZWxkczsKICAgICAgICBpZiggISRkYXRhICkgcmV0dXJuOwoKICAgICAgICAkdWlkID0gKGludCkgJGRhdGFbJ2lkJ107CiAgICAgICAgJG1hbXMgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9NQU1TKTsKICAgICAgICAkYWxsZ3JvdXBzID0gJG1hbXMtPkdldEdyb3VwTGlzdCgpOwogICAgICAgIGlmKCAkYWxsZ3JvdXBzICkgewogICAgICAgICAgICAkYWxsZ3JvdXBzID0gYXJyYXlfZmxpcCgkYWxsZ3JvdXBzKTsKICAgICAgICAgICAgJHVncm91cHMgPSAkbWFtcy0+R2V0TWVtYmVyR3JvdXBzQXJyYXkoJHVpZCk7CiAgICAgICAgICAgIGZvcmVhY2goICR1Z3JvdXBzIGFzICRncnAgKSB7CiAgICAgICAgICAgICAgICAkZ2lkID0gKGludCkgJGdycFsnZ3JvdXBpZCddOwogICAgICAgICAgICAgICAgJGRhdGFbJ2dyb3VwcyddW10gPSAkYWxsZ3JvdXBzWyRnaWRdOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB1bnNldCgkZGF0YVsnc2FsdCddKTsKICAgICAgICBpZiggaXNzZXQoJGRhdGFbJ2Zwcm9wcyddKSApIHsKICAgICAgICAgICAgZm9yZWFjaCggJGRhdGFbJ2Zwcm9wcyddIGFzICRvbmUgKSB7CiAgICAgICAgICAgICAgICAkZGF0YVsncHJvcHMnXVskb25lWyd0aXRsZSddXSA9ICRvbmVbJ2RhdGEnXTsKICAgICAgICAgICAgfQogICAgICAgICAgICB1bnNldCgkZGF0YVsnZnByb3BzJ10pOwogICAgICAgIH0KICAgICAgICAkc3RyID0ganNvbl9lbmNvZGUoJGRhdGEsSlNPTl9QUkVUVFlfUFJJTlQpOwogICAgICAgIGVjaG8gJHN0ci4iXG4iOwogICAgfQp9IC8vIGVuZCBvZiBjbGFzcy4K]]></data>
	</file>
	<file>
	  <filename>/lib/interface.mams_auth_consumer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKaW50ZXJmYWNlIG1hbXNfYXV0aF9jb25zdW1lcgp7CiAgY29uc3QgQ0FQQUJJTElUWV9BTFRMT0dJTiAgICAgICAgICAgICA9ICdDQVBBQklMSVRZX0FMVExPR0lOJzsKICBjb25zdCBDQVBBQklMSVRZX0xPR0lOICAgICAgICAgICAgICAgID0gJ0NBUEFCSUxJVFlfTE9HSU4nOwogIGNvbnN0IENBUEFCSUxJVFlfTE9HT1VUICAgICAgICAgICAgICAgPSAnQ0FQQUJJTElUWV9MT0dPVVQnOwogIGNvbnN0IENBUEFCSUxJVFlfQ0hBTkdFU0VUVElOR1MgICAgICAgPSAnQ0FQQUJJTElUWV9DSEFOR0VTRVRUSU5HUyc7CiAgY29uc3QgQ0FQQUJJTElUWV9MT1NUVVNFUk5BTUUgICAgICAgICA9ICdDQVBBQklMSVRZX0xPU1RVU0VSTkFNRSc7CiAgY29uc3QgQ0FQQUJJTElUWV9GT1JHT1RQQVNTV0QgICAgICAgICA9ICdDQVBBQklMSVRZX0ZPUkdPVFBBU1NXRCc7CiAgY29uc3QgQ0FQQUJJTElUWV9VU0VTVERDSEFOR0VTRVRUSU5HUyA9ICdDQVBBQklMSVRZX1VTRVNURENIQU5HRVNFVFRJTkdTJzsKICBjb25zdCBDQVBBQklMSVRZX1VTRVNUREdST1VQUyAgICAgICAgID0gJ0NBUEFCSUxJVFlfVVNFU1RER1JPVVBTJzsKICBjb25zdCBDQVBBQklMSVRZX0NIQU5HRVBBU1NXRCAgICAgICAgID0gJ0NBUEFCSUxJVFlfQ0hBTkdFUEFTU1dEJzsKICBjb25zdCBDQVBBQklMSVRZX0NIQU5HRVVTRVJOQU1FICAgICAgID0gJ0NBUEFCSUxJVFlfQ0hBTkdFVVNFUk5BTUUnOwogIGNvbnN0IENBUEFCSUxJVFlfTElTVFBST1BTICAgICAgICAgICAgPSAnQ0FQQUJJTElUWV9MSVNUUFJPUFMnOwogIGNvbnN0IENBUEFCSUxJVFlfRURJVFBST1BTICAgICAgICAgICAgPSAnQ0FQQUJJTElUWV9FRElUUFJPUFMnOwogIGNvbnN0IENBUEFCSUxJVFlfTElTVEdST1VQUyAgICAgICAgICAgPSAnQ0FQQUJJTElUWV9MSVNUR1JPVVBTJzsKICBjb25zdCBDQVBBQklMSVRZX0VESVRHUk9VUFMgICAgICAgICAgID0gJ0NBUEFCSUxJVFlfRURJVEdST1VQUyc7CiAgY29uc3QgQ0FQQUJJTElUWV9FRElUR1JPVVBQUk9QUyAgICAgICA9ICdDQVBBQklMSVRZX0VESVRHUk9VUFBST1BTJzsKICBjb25zdCBDQVBBQklMSVRZX0dST1VQTUVNQkVSU0hJUCAgICAgID0gJ0NBUEFCSUxJVFlfR1JPVVBNRU1CRVJTSElQJzsKICBjb25zdCBDQVBBQklMSVRZX0RFRkFVTFRHUk9VUFMgICAgICAgID0gJ0NBUEFCSUxJVFlfREVGQVVMVEdST1VQUyc7CiAgY29uc3QgQ0FQQUJJTElUWV9VU0VSTkFNRSAgICAgICAgICAgICA9ICdDQVBBQklMSVRZX1VTRVJOQU1FJzsgLy8gcmV0cmlldmUgcmVhZGFibGUgdXNlcm5hbWUgZ2l2ZW4gYSB1bmlxdWUgaWRlbnRpZmllci4KICAKICBjb25zdCBQUk9QRVJUWV9VU0VSTkFNRSA9ICdfX1VTRVJOQU1FX18nOwogIGNvbnN0IFBST1BFUlRZX1VJRCAgICAgID0gJ19fVUlEX18nOwogIAogIC8qKgogICAqIFJldHVybiBhIGZsYWcgaWYgdGhlIHVzZXIgaXMgYXV0aGVudGljYXRlZC4KICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gaXNfYXV0aGVudGljYXRlZCgpOwogIAogIC8qKgogICAqIFJldHVybiBhbiBhcnJheSB3aXRoIHRoaXMgYXV0aGVudGljYXRpb24gbWV0aG9kcyBjYXBhYmlsaXRpZXMKICAgKgogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBnZXRfY2FwYWJpbGl0aWVzKCk7CiAgCiAgLyoqCiAgICogVGVzdCBpZiB0aGUgY29uc3VtZXIgaGFzIHRoZSBjYXBhYmlsaXR5CiAgICoKICAgKiBBY2NlcHRzIGEgc2luZ2xlIGNhcGFiaWxpdHkgaWRlbnRpZmllciwgb3IgbGlzdCBvZiBhcmd1bWVudCBjYXBhYmlsaXRpZXMuCiAgICogcmV0dXJucyBUUlVFIGlmIGFueSBvZiB0aGUgcGFzc2VkIGluIHByb3BlcnRpZXMgbWF0Y2guCiAgICogcmV0dXJucyBGQUxTRSBvdGhlcndpc2UuCiAgICoKICAgKiBAcGFyYW0gbWl4ZWQgJGZsYWcgRWl0aGVyIGEgc2luZ2xlIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmcgY2FwYWJpbGl0aWVzLgogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBoYXNfY2FwYWJpbGl0eSgkZmxhZyk7CiAgCiAgLyoqCiAgICogQSBmdW5jdGlvbiB0byBkaXNwbGF5IGxvZ2luIGluZm9ybWF0aW8KICAgKiAob3IgYSBsaW5rIHRvIGEgbG9naW4gcGFnZSkKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2xvZ2luX2Rpc3BsYXkoJGlkLCAkcmV0dXJuaWQsICRwYXJhbXMpOwogIAogIC8qKgogICAqIEEgZnVuY3Rpb24gdG8gZGlzcGxheSBsb2dpbiBpbmZvcm1hdGlvbgogICAqIChvciBhIGxpbmsgdG8gYSBsb2dpbiBwYWdlKQogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBnZXRfbG9nb3V0X2Rpc3BsYXkoJGlkLCAkcmV0dXJuaWQsICRwYXJhbXMpOwogIAogIC8qKgogICAqIEEgZnVuY3Rpb24gdG8gZGlzcGxheSB0aGUgY2hhbmdlIHNldHRpbmdzIHBhZ2UKICAgKgogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBnZXRfY2hhbmdlc2V0dGluZ3NfZGlzcGxheSgkaWQsICRyZXR1cm5pZCwgJHBhcmFtcyk7CiAgCiAgCiAgLyoqCiAgICogR2V0IHRoZSB1c2VyIGluZm9ybWF0aW9uIGZyb20gdGhlIGV4dGVybmFsIGF1dGhlbnRpY2F0aW9uIHN5c3RlbQogICAqIGZvciB1c2UgYnkgRkVVCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIGdldF91c2VyX2luZm8oKTsKICAKICAKICAvKioKICAgKiBHZXQgdGhlIG5hbWUgb2YgYW4gRkVVIHByb3BlcnR5IHRoYXQgaXMgdXNlZCB0byB1bmlxdWVseSBpZGVudGlmeQogICAqIGEgdXNlcgogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBnZXRfY29ubmVjdGluZ19wcm9wZXJ0eV9uYW1lKCk7CiAgCiAgCiAgLyoqCiAgICogR2V0IGFuIGlkZW50aWZpZXIgdGhhdCB1bmlxdWVseSBpZGVudGlmaWVzIGEgdXNlciBpbiB0aGlzIGVudmlyb25tZW50CiAgICovCiAgcHVibGljIGZ1bmN0aW9uIGdldF91bmlxdWVfaWRlbnRpZmllcigpOwogIAogIC8qKgogICAqIEdldCBhIGxpc3Qgb2YgYWxsIGdyb3VwcwogICAqCiAgICogQHJldHVybiBBc3NvY2lhdGl2ZSBhcnJheSBvZiBncm91cG5hbWVzIGFuZCBncm91cGlkJ3MuCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIGdldF9ncm91cF9saXN0KCR3aXRoX2NvdW50ID0gRkFMU0UpOwogIAogIC8qKgogICAqIEdldCB0aGUgbGlzdCBvZiBncm91cCAoaWRzKSB0aGF0IGEgdXNlciBpcyBhIG1lbWJlciBvZi4KICAgKgogICAqIEBwYXJhbSBpbnRlZ2VyIFRoZSB1c2VyIGlkLiAgTWF5IGJlIG5lZ2F0aXZlIHRvIGluZGljYXRlIHRoYXQgdGhlIHVzZXIgYWNjb3VudCBpcyByZXByZXNlbnRpbmcgYSBuZXcgdXNlci4KICAgKgogICAqIEByZXR1cm4gbWl4ZWQgYXJyYXkgb2YgaW50ZWdlcnMsIG9yIG51bGwKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2dyb3VwX21lbWJlcnNoaXAoJHVzZXJpZCk7CiAgCiAgLyoqCiAgICogR2V0IHRoZSBsaXN0IG9mIGdyb3VwIChpZHMpIHRoYXQgYnkgZGVmYXVsdCwgYSBuZXcgdXNlciBzaG91bGQgYmVsb25nIHRvLgogICAqCiAgICogQHJldHVybiBtaXhlZCBhcnJheSBvZiBpbnRlZ2Vycywgb3IgbnVsbC4KICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2RlZmF1bHRfZ3JvdXBzKCk7CiAgCiAgLyoqCiAgICogR2V0IHRoZSB1c2VybmFtZSBwcm9tcHQKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3VzZXJuYW1lX3Byb21wdCgpOwogIAogIC8qKgogICAqIFZhbGlkYXRlIHVzZXJuYW1lLgogICAqCiAgICogQHBhcmFtIHN0cmluZyB0aGUgcHJvcG9zZWQgdXNlZXJuYW1lCiAgICogQHBhcmFtIGJvb2xlYW4gaW5kaWNhdGVzIHdldGhlciB0aGUgdXNlcm5hbWUgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYW4gZW1haWwgYWRkcmVzcywgYW5kIHZhbGlkYXRlZAogICAqIEBwYXJhbSBpbnRlZ2VyIFRoZSB1c2VyIGlkIChpZiBpdHMgYW4gZXhpc3RpbmcgdXNlcikuLi4gdG8gdXNlIGZvciBjaGVja2luZyBmb3IgZHVwbGljYXRlIGFkZHJlc3NlcwogICAqCiAgICogQHJldHVybiBib29sZWFuCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIHZhbGlkYXRlX3VzZXJuYW1lKCR1c2VybmFtZSwgJGNoZWNrX2VtYWlsX2FkZHIgPSBGQUxTRSwgJHVpZCA9IC0xKTsKfQoKPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/internal_plugins</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/internal_plugins/function.mams_check_logged_in_status.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyoqDQogKiBBIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIHRoZSB1c2VyIGxvZ2dlZCBpbiBzdGF0dXMgaW4gTUFNUy4NCiAqDQogKiBAcGFyYW0gYXJyYXkgJHBhcmFtcyBBbiBhcnJheSBvZiBwYXJhbWV0ZXJzLg0KICogQHBhcmFtIG9iamVjdCAkc21hcnR5IEFuIGluc3RhbmNlIG9mIHRoZSBTbWFydHkgdGVtcGxhdGUgZW5naW5lLg0KICogQHJldHVybiBzdHJpbmcgVGhlIGZ1bmN0aW9uIGNvbW1lbnQuDQogKi8NCmZ1bmN0aW9uIHNtYXJ0eV9mdW5jdGlvbl9tYW1zX2NoZWNrX2xvZ2dlZF9pbl9zdGF0dXMoJHBhcmFtcywgJHNtYXJ0eSkNCnsNCiAgLyoqDQogICAqIHNob3dzdG9wcGVyDQogICAqLw0KICAjIGlmLCBmb3Igc29tZSBvZGQgcmVhc29uLCB3ZSBkb24ndCBoYXZlIE1BTVMsIGRvbid0IGRvIGFueXRoaW5nDQogICRtb2QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01BTVMnKTsNCiAgDQogIGlmKCEkbW9kKSB7IHJldHVybiAnJzsgfQ0KICANCiAgLyoqDQogICAqIHBhcmFtZXRlcnMgZGVmYXVsdHMNCiAgICovDQoNCiAgJHVzZV90b2FzdCAgICAgICAgICAgICAgPSAxOw0KICAkdXNlX2N1c3RvbV9odG1sICAgICAgICA9IDA7DQogICR1c2VfY3VzdG9tX2NzcyAgICAgICAgID0gMDsNCiAgJHRvYXN0X2lkICAgICAgICAgICAgICAgPSAnc2Vzc2lvbl9zdGF0dXNfdG9hc3QnOw0KICAkdG9hc3RfY2xhc3MgICAgICAgICAgICA9ICdzZXNzaW9uX3N0YXR1c190b2FzdCc7DQogICRub3RpZmljYXRpb25faWQgICAgICAgID0gJ3Nlc3Npb25fc3RhdHVzX2V4cGlyZWRfYWxlcnQnOw0KICAkbm90aWZpY2F0aW9uX2NsYXNzICAgICA9ICdzZXNzaW9uX3N0YXR1c19hbGVydCc7DQogICRhbGVydF9tZXNzYWdlX2lkICAgICAgID0gJ2FsZXJ0X21lc3NhZ2UnOw0KICAkZW5kX3Nlc3Npb25fbWVzc2FnZSAgICA9ICdZb3VyIHNlc3Npb24gaGFzIGV4cGlyZWQuIFBsZWFzZSBsb2dpbiB0byBjb250aW51ZS4nOw0KICAkY3VzdG9tX2NhbGxiYWNrICAgICAgICA9ICcnOw0KICANCiAgJHRvYXN0X2Nzc19kZWZhdWx0ID0gIg0KPHN0eWxlPg0KICAuJHRvYXN0X2NsYXNzIHsNCiAgICBwb3NpdGlvbjogZml4ZWQ7DQogICAgYm90dG9tOiAyMHB4Ow0KICAgIHJpZ2h0OiAyMHB4Ow0KICAgIGJhY2tncm91bmQtY29sb3I6ICMzMzM7DQogICAgY29sb3I6ICNmZmY7DQogICAgcGFkZGluZzogMTBweCAyMHB4Ow0KICAgIGJvcmRlci1yYWRpdXM6IDVweDsNCiAgICBkaXNwbGF5OiBub25lOw0KICB9DQo8L3N0eWxlPg0KICAiOw0KICANCiAgJHRvYXN0X2h0bWxfZGVmYXVsdCA9ICINCjxkaXYgaWQ9JyR0b2FzdF9pZCcgY2xhc3M9JyR0b2FzdF9jbGFzcyc+PC9kaXY+DQoiOw0KICANCiAgJG5vdGlmaWNhdGlvbl9jc3NfZGVmYXVsdCA9ICINCjxzdHlsZT4NCiAgLiRub3RpZmljYXRpb25fY2xhc3Mgew0KICAgIGJhY2tncm91bmQtY29sb3I6ICNmNDQzMzY7IC8qIFJlZCBjb2xvciBmb3IgZXJyb3IgKi8NCiAgICBib3JkZXI6IDFweCBzb2xpZCAjYzAzNjI3OyAvKiBCb3JkZXIgc3R5bGUgKi8NCiAgICBib3JkZXItcmFkaXVzOiA1cHg7IC8qIFJvdW5kZWQgY29ybmVycyAqLw0KICAgIHBhZGRpbmc6IDEwcHg7IC8qIFBhZGRpbmcgaW5zaWRlIHRoZSBib3ggKi8NCiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IC8qIENlbnRlciB0aGUgdGV4dCBob3Jpem9udGFsbHkgKi8NCiAgICBib3gtc2hhZG93OiAwcHggMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMyk7IC8qIEJveCBzaGFkb3cgZm9yIGEgc3VidGxlIGVsZXZhdGlvbiBlZmZlY3QgKi8NCiAgICBjb2xvcjogd2hpdGU7DQogICAgbWFyZ2luLXRvcDogNXB4Ow0KICAgIHotaW5kZXg6IDk5OTk7IC8qIEVuc3VyZSBpdCdzIG9uIHRvcCBvZiBvdGhlciBjb250ZW50ICovDQp9DQoNCi5jbG9zZS1idXR0b24gew0KICAgIGNvbG9yOiAjYzAzNjI3Ow0KICAgIGZsb2F0OiBsZWZ0OyAvKiBBbGlnbiB0byB0aGUgbGVmdCAqLw0KICAgIGN1cnNvcjogcG9pbnRlcjsgLyogQ2hhbmdlIGN1cnNvciB0byBwb2ludGVyIG9uIGhvdmVyICovDQogICAgbWFyZ2luLXJpZ2h0OiA1cHg7IC8qIEFkZCBzb21lIHNwYWNpbmcgdG8gdGhlIHJpZ2h0IG9mIHRoZSBidXR0b24gKi8NCn0NCg0KLyogU3R5bGUgZm9yIGhvdmVyIHN0YXRlICovDQouY2xvc2UtYnV0dG9uOmhvdmVyIHsNCiAgICBjb2xvcjogZ3JleTsgLyogQ2hhbmdlIHRleHQgY29sb3Igb24gaG92ZXIgKG9wdGlvbmFsKSAqLw0KfQ0KPC9zdHlsZT4NCiI7DQogIA0KICAkbm90aWZpY2F0aW9uX2h0bWxfZGVmYXVsdCA9ICINCjxkaXYgaWQ9JyRub3RpZmljYXRpb25faWQnIGNsYXNzPSckbm90aWZpY2F0aW9uX2NsYXNzJyBzdHlsZT0nZGlzcGxheTogbm9uZTsnPg0KIDxzcGFuIGlkPSdkaXNtaXNzLWJ1dHRvbicgY2xhc3M9J2Nsb3NlLWJ1dHRvbicgb25jbGljaz0nZGlzbWlzc0FsZXJ0KCknPsOXPC9zcGFuPg0KICA8c3BhbiBpZD0nYWxlcnRfbWVzc2FnZSc+PC9zcGFuPg0KPC9kaXY+DQoiOw0KICANCiAgLyoqDQogICAqIGluaXRpYWxpemUgYSBmZXcgdmFyaWFibGVzDQogICAqLw0KICAjIGdldCB0aGUgc2Vzc2lvbiBjaGVjayBpbnRlcnZhbA0KICAkc2Vzc2lvbl9jaGVja19pbnRlcnZhbCA9IChzdHJpbmcpKCRwYXJhbXNbJ3Nlc3Npb25fY2hlY2tfaW50ZXJ2YWwnXSA/PyAxKSAqIDEwMDA7DQogICMgZ2V0IHRoZSB0b2FzdCBkaXNwbGF5IGludGVydmFsDQogICR0b2FzdF9kaXNwbGF5X2ludGVydmFsID0gKHN0cmluZykoJHBhcmFtc1snJHRvYXN0X2Rpc3BsYXlfaW50ZXJ2YWwnXSA/PyAxMCkgKiAxMDAwOw0KICANCiAgLyoqDQogICAqIGdyYWIgdGhlIHBhcmFtZXRlcnMNCiAgICovDQogICR1c2VfdG9hc3QgICAgICAgICAgID0gJHBhcmFtc1sndXNlX3RvYXN0J10gPz8gJHVzZV90b2FzdDsNCiAgJHVzZV9jdXN0b21faHRtbCAgICAgPSAkcGFyYW1zWyd1c2VfY3VzdG9tX2h0bWwnXSA/PyAkdXNlX2N1c3RvbV9odG1sOw0KICAkdXNlX2N1c3RvbV9jc3MgICAgICA9ICRwYXJhbXNbJ3VzZV9jdXN0b21fY3NzJ10gPz8gJHVzZV9jdXN0b21fY3NzOw0KICAkdG9hc3RfaWQgICAgICAgICAgICA9ICRwYXJhbXNbJ3RvYXN0X2lkJ10gPz8gJHRvYXN0X2lkOw0KICAkdG9hc3RfY2xhc3MgICAgICAgICA9ICRwYXJhbXNbJ3RvYXN0X2NsYXNzJ10gPz8gJHRvYXN0X2NsYXNzOw0KICAkbm90aWZpY2F0aW9uX2lkICAgICA9ICRwYXJhbXNbJ25vdGlmaWNhdGlvbl9pZCddID8/ICRub3RpZmljYXRpb25faWQ7DQogICRub3RpZmljYXRpb25fY2xhc3MgID0gJHBhcmFtc1snbm90aWZpY2F0aW9uX2NsYXNzJ10gPz8gJG5vdGlmaWNhdGlvbl9jbGFzczsNCiAgJGFsZXJ0X21lc3NhZ2VfaWQgICAgPSAkcGFyYW1zWydhbGVydF9tZXNzYWdlX2lkJ10gPz8gJGFsZXJ0X21lc3NhZ2VfaWQ7DQogICR0b2FzdF9jc3MgICAgICAgICAgID0gJHBhcmFtc1sndG9hc3RfY3NzJ10gPz8gJHRvYXN0X2Nzc19kZWZhdWx0Ow0KICAkdG9hc3RfaHRtbCAgICAgICAgICA9ICRwYXJhbXNbJ3RvYXN0X2h0bWwnXSA/PyAkdG9hc3RfaHRtbF9kZWZhdWx0Ow0KICAkbm90aWZpY2F0aW9uX2NzcyAgICA9ICRwYXJhbXNbJ25vdGlmaWNhdGlvbl9jc3MnXSA/PyAkbm90aWZpY2F0aW9uX2Nzc19kZWZhdWx0Ow0KICAkbm90aWZpY2F0aW9uX2h0bWwgICA9ICRwYXJhbXNbJ25vdGlmaWNhdGlvbl9odG1sJ10gPz8gJG5vdGlmaWNhdGlvbl9odG1sX2RlZmF1bHQ7DQogICRjb3VudGRvd25fY3NzICAgICAgID0gJHBhcmFtc1snY291bnRkb3duX2NzcyddID8/ICRjb3VudGRvd25fY3NzX2RlZmF1bHQ7DQogICRjb3VudGRvd25faHRtbCAgICAgID0gJHBhcmFtc1snY291bnRkb3duX2h0bWwnXSA/PyAkY291bnRkb3duX2h0bWxfZGVmYXVsdDsNCiAgJGVuZF9zZXNzaW9uX21lc3NhZ2UgPSAkcGFyYW1zWydlbmRfc2Vzc2lvbl9tZXNzYWdlJ10gPz8gJGVuZF9zZXNzaW9uX21lc3NhZ2U7DQogICRjdXN0b21fY2FsbGJhY2sgICAgID0gJHBhcmFtc1snY3VzdG9tX2NhbGxiYWNrJ10gPz8gJGN1c3RvbV9jYWxsYmFjazsNCiAgDQogICMgbm9uIHBhcmFtZXRlcnMNCiAgJGNvbmZpZyAgICAgICAgICAgICA9ICRtb2QtPkdldEV4dGVuZGVkQ29uZmlnKCk7DQogICRhamF4X3VybCAgICAgICAgICAgPSBzdHJfcmVwbGFjZSgnY2FjaGUnLCAnJywgJGNvbmZpZ1sncHVibGljX2NhY2hlX3VybCddKSAuICdjbXNtc2V4dC9zZXNzaW9uX3N0YXR1c18nIC4NCiAgICAgICAgICAgICAgICAgICAgICAgIFxnZXRteXBpZCgpIC4gJ18nIC4gc2Vzc2lvbl9pZCgpIC4gJy5kYXQnOw0KICANCiAgJGh0bWwgICAgICAgICAgICAgICA9ICR1c2VfY3VzdG9tX2NzcyA/ICcnIDogJHRvYXN0X2NzcyAuICRjb3VudGRvd25fY3NzIC4gJG5vdGlmaWNhdGlvbl9jc3M7DQogIA0KICAkc2NyaXB0X2h0bWwgPSAiDQo8c2NyaXB0Pg0KdmFyIHNlc3Npb25EdXJhdGlvbiA9ICRkdXJhdGlvbjsNCnZhciByZW1haW5pbmdUaW1lID0gMDsNCnZhciB1c2VUb2FzdCA9ICR1c2VfdG9hc3Q7DQp2YXIgYWpheFVybCA9ICckYWpheF91cmwnOw0KdmFyIGNvdW50ZXJTcGFuSWQgPSAnJGNvdW50ZXJfc3Bhbl9pZCc7DQp2YXIgbm90aWZpY2F0aW9uSWQgPSAnJG5vdGlmaWNhdGlvbl9pZCc7DQp2YXIgdG9hc3RJZCA9ICckdG9hc3RfaWQnOw0KdmFyIHNlc3Npb25fY2hlY2tfaW50ZXJ2YWwgPSAkc2Vzc2lvbl9jaGVja19pbnRlcnZhbDsNCnZhciB0b2FzdF9kaXNwbGF5X2ludGVydmFsID0gJHRvYXN0X2Rpc3BsYXlfaW50ZXJ2YWw7DQp2YXIgZW5kX3Nlc3Npb25fbWVzc2FnZSA9ICckZW5kX3Nlc3Npb25fbWVzc2FnZSc7DQp2YXIgY3VzdG9tQ2FsbGJhY2sgPSAnJGN1c3RvbV9jYWxsYmFjayc7DQoNCmZ1bmN0aW9uIGdldFNlc3Npb25TdGFydFRpbWUoY2FsbGJhY2spDQp7DQogIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsNCiAgLy8gQXBwZW5kIHRoZSBjYWNoZS1idXN0ZXIgdG8gdGhlIFVSTA0KICB2YXIgdXJsV2l0aENhY2hlQnVzdGVyID0gYWpheFVybCArIChhamF4VXJsLmluZGV4T2YoJz8nKSA9PT0gLTEgPyAnPycgOiAnJicpICsgJ2NhY2hlPScgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKTsNCiAgDQogIHhoci5vcGVuKCdHRVQnLCB1cmxXaXRoQ2FjaGVCdXN0ZXIsIHRydWUpOw0KICB4aHIucmVzcG9uc2VUeXBlID0gJ3RleHQnOw0KDQogIHhoci5vbmxvYWQgPSBmdW5jdGlvbigpDQogIHsNCiAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMjAwKQ0KICAgIHsNCiAgICAgIHZhciBzZXNzaW9uU3RhcnRUaW1lID0gcGFyc2VJbnQoeGhyLnJlc3BvbnNlVGV4dCwgMTApOw0KICAgICAgY2FsbGJhY2soc2Vzc2lvblN0YXJ0VGltZSk7DQogICAgfQ0KICB9Ow0KDQogIHhoci5zZW5kKCk7DQp9DQoNCmZ1bmN0aW9uIGdldExvZ2dlZEluU3RhdHVzKCkNCnsNCiAgLy8gRGVmaW5lIHRoZSBVUkwgZm9yIHRoZSBBSkFYIHJlcXVlc3QNCiAgdmFyIHVybCA9ICd5b3VyX3BocF9zY3JpcHQucGhwJzsNCiAgDQogIC8vIENyZWF0ZSBhIG5ldyBYTUxIdHRwUmVxdWVzdCBvYmplY3QNCiAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOw0KICANCiAgLy8gUHJlcGFyZSB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIHJlcXVlc3QNCiAgdmFyIHBhcmFtcyA9IHsNCiAgICBmbmM6ICd5b3VyX2Z1bmN0aW9uX25hbWUnLA0KICAgIGNhY2hlOiBuZXcgRGF0ZSgpLmdldFRpbWUoKTsNCiAgICAvLyBBZGQgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIGhlcmUgaWYgbmVlZGVkDQogIH07DQogIA0KICAvLyBFbmNvZGUgdGhlIHBhcmFtZXRlcnMgYXMgYSBxdWVyeSBzdHJpbmcNCiAgdmFyIHF1ZXJ5U3RyaW5nID0gT2JqZWN0LmtleXMocGFyYW1zKS5tYXAoZnVuY3Rpb24oa2V5KSB7DQogICAgcmV0dXJuIGtleSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudChwYXJhbXNba2V5XSk7DQogIH0pLmpvaW4oJyYnKTsNCiAgDQogIC8vIE9wZW4gYSBHRVQgcmVxdWVzdCB0byB0aGUgVVJMIHdpdGggdGhlIHBhcmFtZXRlcnMNCiAgeGhyLm9wZW4oJ0dFVCcsIHVybCArICc/JyArIHF1ZXJ5U3RyaW5nLCB0cnVlKTsNCiAgDQogIC8vIFNldCB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gaGFuZGxlIHRoZSByZXNwb25zZQ0KICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7DQogICAgaWYgKHhoci5yZWFkeVN0YXRlID09PSA0KSB7DQogICAgICBpZiAoeGhyLnN0YXR1cyA9PT0gMjAwKSB7DQogICAgICAgIC8vIFBhcnNlIHRoZSBKU09OIHJlc3BvbnNlDQogICAgICAgIHZhciByZXNwb25zZSA9IEpTT04ucGFyc2UoeGhyLnJlc3BvbnNlVGV4dCk7DQogIA0KICAgICAgICAvLyBBY2Nlc3MgdGhlIHByb3BlcnRpZXMgaW4gdGhlIEpTT04gcmVzcG9uc2UNCiAgICAgICAgdmFyIG1zZyA9IHJlc3BvbnNlLm1zZzsNCiAgICAgICAgdmFyIGVycm9yID0gcmVzcG9uc2UuZXJyb3I7DQogICAgICAgIHZhciBjb250ZW50ID0gcmVzcG9uc2UuY29udGVudDsNCiAgICAgICAgdmFyIHR5cGUgPSByZXNwb25zZS50eXBlOw0KICAgICAgICB2YXIgcGFyYW1zID0gcmVzcG9uc2UucGFyYW1zOw0KICANCiAgICAgICAgLy8gRG8gc29tZXRoaW5nIHdpdGggdGhlIGRhdGENCiAgICAgICAgY29uc29sZS5sb2coJ01lc3NhZ2U6JywgbXNnKTsNCiAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIENvZGU6JywgZXJyb3IpOw0KICAgICAgICBjb25zb2xlLmxvZygnQ29udGVudDonLCBjb250ZW50KTsNCiAgICAgICAgY29uc29sZS5sb2coJ1R5cGU6JywgdHlwZSk7DQogICAgICAgIGNvbnNvbGUubG9nKCdQYXJhbWV0ZXJzOicsIHBhcmFtcyk7DQogICAgICB9IGVsc2Ugew0KICAgICAgICAvLyBIYW5kbGUgdGhlIGVycm9yIChlLmcuLCBzaG93IGFuIGVycm9yIG1lc3NhZ2UpDQogICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yOicsIHhoci5zdGF0dXNUZXh0KTsNCiAgICAgIH0NCiAgICB9DQogIH07DQogIA0KICAvLyBTZW5kIHRoZSBBSkFYIHJlcXVlc3QNCiAgeGhyLnNlbmQoKTsNCn0NCg0KDQoNCmZ1bmN0aW9uIGNhbGN1bGF0ZVJlbWFpbmluZ1RpbWUoc2Vzc2lvblN0YXJ0VGltZSwgc2Vzc2lvbkR1cmF0aW9uKQ0Kew0KICB2YXIgY3VycmVudFRpbWUgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKTsgLy8gQ29udmVydCB0byBzZWNvbmRzDQogIHZhciBlbGFwc2VkVGltZSA9IGN1cnJlbnRUaW1lIC0gc2Vzc2lvblN0YXJ0VGltZTsNCiAgdmFyIHJlbWFpbmluZ1RpbWUgPSBzZXNzaW9uRHVyYXRpb24gLSBlbGFwc2VkVGltZTsNCiANCiAgcmV0dXJuIHJlbWFpbmluZ1RpbWUgPiAwID8gcmVtYWluaW5nVGltZSA6IDA7DQp9DQoNCmZ1bmN0aW9uIHVwZGF0ZVRpbWVyRGlzcGxheSh0aW1lTGVmdCkNCnsNCiAgdmFyIHRpbWVyRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNvdW50ZXJTcGFuSWQpOw0KICB0aW1lckVsZW1lbnQudGV4dENvbnRlbnQgPSB0aW1lTGVmdDsNCn0NCg0KZnVuY3Rpb24gZGlzcGxheVNlc3Npb25FeHBpcmVkQWxlcnQobWVzc2FnZSkNCnsNCiAgdmFyIHNlc3Npb25FeHBpcmVkQWxlcnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChub3RpZmljYXRpb25JZCk7DQogIHZhciBzZXNzaW9uRXhwaXJlZEFsZXJ0TWVzc2FnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCckYWxlcnRfbWVzc2FnZV9pZCcpOw0KICBzZXNzaW9uRXhwaXJlZEFsZXJ0TWVzc2FnZS50ZXh0Q29udGVudCA9IG1lc3NhZ2U7DQogIHNlc3Npb25FeHBpcmVkQWxlcnQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7DQp9DQoNCmZ1bmN0aW9uIGRpc21pc3NBbGVydCgpDQp7DQogIHZhciBhbGVydEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnJG5vdGlmaWNhdGlvbl9pZCcpOw0KICBhbGVydEVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCn0NCg0KZnVuY3Rpb24gZGlzcGxheVNlc3Npb25FeHBpcmVkVG9hc3QobWVzc2FnZSkNCnsNCiAgICB2YXIgdG9hc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0b2FzdElkKTsNCiAgICB0b2FzdC50ZXh0Q29udGVudCA9IG1lc3NhZ2U7DQogICAgdG9hc3Quc3R5bGUuZGlzcGxheSA9ICdibG9jayc7DQogIA0KICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKQ0KICAgIHsNCiAgICAgICAgdG9hc3Quc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCiAgICB9LCB0b2FzdF9kaXNwbGF5X2ludGVydmFsKTsgLy8gRGlzcGxheSBmb3IgJHRvYXN0X2Rpc3BsYXlfaW50ZXJ2YWwgc2Vjb25kcywgYWRqdXN0IGFzIG5lZWRlZA0KfQ0KDQpmdW5jdGlvbiBzdGFydENvdW50ZG93bihyZW1haW5pbmdUaW1lKQ0Kew0KICAgIHZhciBpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKQ0KICAgIHsNCiAgICAgICAgaWYgKHJlbWFpbmluZ1RpbWUgPiAwKQ0KICAgICAgICB7DQogICAgICAgICAgICB1cGRhdGVUaW1lckRpc3BsYXkocmVtYWluaW5nVGltZSk7DQogICAgICAgICAgICByZW1haW5pbmdUaW1lLS07DQogICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsSWQpOw0KICAgICAgICAgICAgdXBkYXRlVGltZXJEaXNwbGF5KDApOw0KICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBlbmRfc2Vzc2lvbl9tZXNzYWdlOw0KICANCiAgICAgICAgICAgIGlmICh1c2VUb2FzdCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgZGlzcGxheVNlc3Npb25FeHBpcmVkVG9hc3QobWVzc2FnZSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgIGRpc3BsYXlTZXNzaW9uRXhwaXJlZEFsZXJ0KG1lc3NhZ2UpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgDQogICAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvd1tjdXN0b21DYWxsYmFja10gPT09ICdmdW5jdGlvbicpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgIC8vIENhbGwgdGhlIGN1c3RvbSBjYWxsYmFjayBmdW5jdGlvbiBieSBpdHMgbmFtZQ0KICAgICAgICAgICAgICB3aW5kb3dbY3VzdG9tQ2FsbGJhY2tdKCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgfQ0KICAgIH0sIHNlc3Npb25fY2hlY2tfaW50ZXJ2YWwpOyAvLyBVcGRhdGUgZXZlcnkgJHNlc3Npb25fY2hlY2tfaW50ZXJ2YWwgbWlsbGlzZWNvbmRzDQp9DQoNCi8vIEdldCBzZXNzaW9uIHN0YXJ0IHRpbWUgYW5kIHN0YXJ0IHRoZSBjb3VudGRvd24NCmdldFNlc3Npb25TdGFydFRpbWUoZnVuY3Rpb24oc2Vzc2lvblN0YXJ0VGltZSkNCnsNCiAgcmVtYWluaW5nVGltZSA9IGNhbGN1bGF0ZVJlbWFpbmluZ1RpbWUoc2Vzc2lvblN0YXJ0VGltZSwgc2Vzc2lvbkR1cmF0aW9uKTsNCiAgdXBkYXRlVGltZXJEaXNwbGF5KHJlbWFpbmluZ1RpbWUpOw0KICBzdGFydENvdW50ZG93bihyZW1haW5pbmdUaW1lKTsNCn0pOw0KDQo8L3NjcmlwdD4NCiI7DQogIA0KICAkaHRtbCAuPSAgJHVzZV9jdXN0b21faHRtbCA/ICRzY3JpcHRfaHRtbCA6ICRjb3VudGRvd25faHRtbCAuICR0b2FzdF9odG1sIC4gJG5vdGlmaWNhdGlvbl9odG1sIC4gICRzY3JpcHRfaHRtbDsNCg0KICByZXR1cm4gJGh0bWw7DQp9DQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsMultiSelect</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsMultiSelect/admin.MAMSGroupsMultiSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRvcHRzID0gJGZpZWxkZGVmLT5HZXRPcHRpb25zKCl9IAp7JHNlbF9ncm91cHMgPSBleHBsb2RlKCcsJywgJGZpZWxkZGVmLT5HZXRPcHRpb25WYWx1ZSgnbWFtc19vcHRpb25zJykpfQp7JGdyb3Vwc19vcHRzID0gJGZpZWxkZGVmLT5HZXRNQU1TR3JvdXBzKCl9CiAKPGZpZWxkc2V0PgogIDxsZWdlbmQ+e2xhbmcoJ19vcHRpb25zJyl9PC9sZWdlbmQ+CgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRsaXNlLT5Nb2RMYW5nKCdmaWVsZGRlZl90eXBlJyl9OjwvcD4KICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgICAgPHNlbGVjdCBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbV9pbnB1dFt0eXBlXSIgc3R5bGU9Im1heC13aWR0aDogOTglOyI+CiAgICAgICAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JG9wdHMudHlwZXMgc2VsZWN0ZWQ9JGZpZWxkZGVmLT5HZXRPcHRpb25WYWx1ZSgndHlwZScsICdNdWx0aVNlbGVjdCcpfQogICAgICAgIDwvc2VsZWN0PgogICAgICA8L3A+CiAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+PGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPnskbGlzZS0+TW9kTGFuZygnZmllbGRkZWZfdHlwZV9oZWxwJyl9PC9kaXY+PC9wPgogIDwvZGl2PiAKICAKPC9maWVsZHNldD4=]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsMultiSelect/images</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsMultiSelect/images/switch.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAB40lEQVR4AWIgG4wCAKvkAPJXFAXwGRnLrqVlj5kva7bDZ+Nv27ZtG7kpY3zZC7Pe2T13Nq/5OxQKhasqlcrzX6FyudyRy+VArVZn/xtUKpU6isUi5PN50Ol03d/5sz0Wi73JZDLch55Op7lUKsUlk0kukUjgDAgtFAqAGhuNxuu/gu7ED41GA+r1Ou21Wg2q1SpUKhUolUpAhEA8HodwOAzBYBACgQBIJJLBN6S1tTWGBODiV1AKQ83wo9PpBIvFAlarFex2O9273W5wOBxvrl69uvgFkM/nnyIgzmAwpMh2q0KhKBJfdbCLRKK8QCBIkzdpnLETn95CmMfjQfir8+fPH/8aOIkOR40o9DfK9PS0yOfzocbPjhw5cuiLS6KFEB2NfkKTiTmPlUolS3KQ1Wg0rFarZYm2LBHGkmDgfActmZ+fl5hMpof79u3b/QVQLBZbSGRpWmSzWXgvGWw2G/oIXC4XNQ873qFPcUafMwyzh5Rd38u1McIQjJDvBIACvV4v+P1+GmWcEfoz12xaX19PIshsNlOgXq9/u7fA3HILGAS3gEEAxsBccwsYDLeAwQCir4LSMaEwZ0xMTKwAhtdfkKHAIJlOtWwXERERBYyE32BDqQn8/f3tcnNzg8k2YBQAAOLgc5CbVSwBAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsMultiSelect/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsMultiSelect/input.MAMSGroupsMultiSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyR0eXBlID0gJGZpZWxkZGVmLT5HZXRPcHRpb25WYWx1ZSgndHlwZScpfQp7JG9wdHMgPSAkZmllbGRkZWYtPkdldE1BTVNHcm91cHMoKX0KeyRzZWwgPSAkZmllbGRkZWYtPkdldFZhbHVlKCdhcnJheScpfQoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRmaWVsZGRlZi0+R2V0TmFtZSgpfXtpZiAkZmllbGRkZWYtPklzUmVxdWlyZWQoKX0qey9pZn06PC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+CgkJe2lmICRmaWVsZGRlZi0+R2V0RGVzYygpfSh7JGZpZWxkZGVmLT5HZXREZXNjKCl9KTxiciAvPnsvaWZ9CiAgICB7aWYgJHR5cGUgPT0gJ011bHRpU2VsZWN0J30KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbWZpZWxkW3skZmllbGRkZWYtPkdldElkKCl9XSIgdmFsdWU9IiIgLz4KICAgICAgICA8c2VsZWN0IG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tZmllbGRbeyRmaWVsZGRlZi0+R2V0SWQoKX1dW119IiBzaXplPSJ7JG9wdHN8Y291bnR9IiBtdWx0aXBsZT4gICAgICAgIAogICAgICAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRvcHRzIHNlbGVjdGVkPSRzZWx9CiAgICAgICAgPC9zZWxlY3Q+ICAKICAgIHsvaWZ9ICAgIAogICAge2lmICR0eXBlID09ICdSYWRpb0dyb3VwJ30KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieyRhY3Rpb25pZH1jdXN0b21maWVsZFt7JGZpZWxkZGVmLT5HZXRJZCgpfV0iIHZhbHVlPSIiIC8+CiAgICAgIHtodG1sX3JhZGlvcyBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbWZpZWxkW3skZmllbGRkZWYtPkdldElkKCl9XSIgb3B0aW9ucz0kb3B0cyBzZWxlY3RlZD0kc2VsIHNlcGFyYXRvcj0nPGJyIC8+J30KICAgIHsvaWZ9ICAgICAgCiAgICB7aWYgJHR5cGUgPT0gJ0NoZWNrYm94R3JvdXAnfQogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbWZpZWxkW3skZmllbGRkZWYtPkdldElkKCl9XSIgdmFsdWU9IiIgLz4KICAgICAge2h0bWxfY2hlY2tib3hlcyBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbWZpZWxkW3skZmllbGRkZWYtPkdldElkKCl9XSIgb3B0aW9ucz0kb3B0cyBzZWxlY3RlZD0kc2VsIHNlcGFyYXRvcj0nPGJyIC8+J30KICAgIHsvaWZ9ICAgIAogICAge2lmICR0eXBlID09ICdKUXVlcnlNdWx0aVNlbGVjdCd9CiAgICAgIDxkaXYgY2xhc3M9Im1zLWNvbnRhaW5lciI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieyRhY3Rpb25pZH1jdXN0b21maWVsZFt7JGZpZWxkZGVmLT5HZXRJZCgpfV0iIHZhbHVlPSIiIC8+CiAgICAgICAgPHNlbGVjdCBpZD0ieyRhY3Rpb25pZH1jdXN0b21maWVsZHskZmllbGRkZWYtPkdldElkKCl9IiBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbWZpZWxkW3skZmllbGRkZWYtPkdldElkKCl9XVtdfSIgc2l6ZT0ieyRvcHRzfGNvdW50fSIgbXVsdGlwbGU+ICAgICAgICAKICAgICAgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kb3B0cyBzZWxlY3RlZD0kc2VsfQogICAgICAgIDwvc2VsZWN0PgogICAgICA8L2Rpdj4gCiAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAgICAgICAgJCgnI3skYWN0aW9uaWR9Y3VzdG9tZmllbGR7JGZpZWxkZGVmLT5HZXRJZCgpfScpLm11bHRpU2VsZWN0KCk7CiAgICAgIDwvc2NyaXB0PgogICAgey9pZn0KCTwvcD4KPC9kaXY+]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsMultiSelect/jquery.multi-select.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm1zLWNvbnRhaW5lcnsNCiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCcuLi9NQU1TTXVsdGlTZWxlY3QvaW1hZ2VzL3N3aXRjaC5wbmcnKSBuby1yZXBlYXQgNTAlIDUwJTsNCiAgd2lkdGg6IDQ3MHB4Ow0KfQ0KDQoubXMtY29udGFpbmVyOmFmdGVyew0KICBjb250ZW50OiAiLiI7DQogIGRpc3BsYXk6IGJsb2NrOw0KICBoZWlnaHQ6IDA7DQogIGxpbmUtaGVpZ2h0OiAwOw0KICBmb250LXNpemU6IDA7DQogIGNsZWFyOiBib3RoOw0KICBtaW4taGVpZ2h0OiAwOw0KICB2aXNpYmlsaXR5OiBoaWRkZW47DQp9DQoNCi5tcy1jb250YWluZXIgLm1zLXNlbGVjdGFibGUsIC5tcy1jb250YWluZXIgLm1zLXNlbGVjdGlvbnsNCiAgYmFja2dyb3VuZDogI2ZmZjsNCiAgY29sb3I6ICM1NTU1NTU7DQogIGZsb2F0OiBsZWZ0Ow0KICB3aWR0aDogNDUlOw0KfQ0KLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0aW9uew0KICBmbG9hdDogcmlnaHQ7DQp9DQoNCi5tcy1jb250YWluZXIgLm1zLWxpc3R7DQogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOw0KICAtbW96LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KTsNCiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOw0KICAtd2Via2l0LXRyYW5zaXRpb246IGJvcmRlciBsaW5lYXIgMC4ycywgYm94LXNoYWRvdyBsaW5lYXIgMC4yczsNCiAgLW1vei10cmFuc2l0aW9uOiBib3JkZXIgbGluZWFyIDAuMnMsIGJveC1zaGFkb3cgbGluZWFyIDAuMnM7DQogIC1tcy10cmFuc2l0aW9uOiBib3JkZXIgbGluZWFyIDAuMnMsIGJveC1zaGFkb3cgbGluZWFyIDAuMnM7DQogIC1vLXRyYW5zaXRpb246IGJvcmRlciBsaW5lYXIgMC4ycywgYm94LXNoYWRvdyBsaW5lYXIgMC4yczsNCiAgdHJhbnNpdGlvbjogYm9yZGVyIGxpbmVhciAwLjJzLCBib3gtc2hhZG93IGxpbmVhciAwLjJzOw0KICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOw0KICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDNweDsNCiAgLW1vei1ib3JkZXItcmFkaXVzOiAzcHg7DQogIGJvcmRlci1yYWRpdXM6IDNweDsNCiAgcG9zaXRpb246IHJlbGF0aXZlOw0KICBoZWlnaHQ6IDIwMHB4Ow0KICBwYWRkaW5nOiAwOw0KICBvdmVyZmxvdy15OiBhdXRvOw0KfQ0KDQoubXMtY29udGFpbmVyIC5tcy1saXN0Lm1zLWZvY3Vzew0KICBib3JkZXItY29sb3I6IHJnYmEoODIsIDE2OCwgMjM2LCAwLjgpOw0KICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KSwgMCAwIDhweCByZ2JhKDgyLCAxNjgsIDIzNiwgMC42KTsNCiAgLW1vei1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSksIDAgMCA4cHggcmdiYSg4MiwgMTY4LCAyMzYsIDAuNik7DQogIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KSwgMCAwIDhweCByZ2JhKDgyLCAxNjgsIDIzNiwgMC42KTsNCiAgb3V0bGluZTogMDsNCiAgb3V0bGluZTogdGhpbiBkb3R0ZWQgXDk7DQp9DQoNCi5tcy1jb250YWluZXIgdWx7DQogIG1hcmdpbjogMDsNCiAgbGlzdC1zdHlsZS10eXBlOiBub25lOw0KICBwYWRkaW5nOiAwOw0KfQ0KDQoubXMtY29udGFpbmVyIC5tcy1vcHRncm91cC1jb250YWluZXJ7DQogIHdpZHRoOiAxMDAlOw0KfQ0KDQoubXMtY29udGFpbmVyIC5tcy1vcHRncm91cC1sYWJlbHsNCiAgbWFyZ2luOiAwOw0KICBwYWRkaW5nOiA1cHggMHB4IDBweCA1cHg7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgY29sb3I6ICM5OTk7DQp9DQoNCi5tcy1jb250YWluZXIgLm1zLXNlbGVjdGFibGUgbGkubXMtZWxlbS1zZWxlY3RhYmxlLA0KLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0aW9uIGxpLm1zLWVsZW0tc2VsZWN0aW9uew0KICBib3JkZXItYm90dG9tOiAxcHggI2VlZSBzb2xpZDsNCiAgcGFkZGluZzogMnB4IDEwcHg7DQogIGNvbG9yOiAjNTU1Ow0KICBmb250LXNpemU6IDE0cHg7DQp9DQoNCi5tcy1jb250YWluZXIgLm1zLXNlbGVjdGFibGUgbGkubXMtaG92ZXIsDQoubXMtY29udGFpbmVyIC5tcy1zZWxlY3Rpb24gbGkubXMtaG92ZXJ7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgY29sb3I6ICNmZmY7DQogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzA4YzsNCn0NCg0KLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0YWJsZSBsaS5kaXNhYmxlZCwNCi5tcy1jb250YWluZXIgLm1zLXNlbGVjdGlvbiBsaS5kaXNhYmxlZHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsNCiAgY29sb3I6ICNhYWE7DQogIGN1cnNvcjogdGV4dDsNCn0=]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsMultiSelect/jquery.multi-select.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKKiBNdWx0aVNlbGVjdCB2MC45LjEyCiogQ29weXJpZ2h0IChjKSAyMDEyIExvdWlzIEN1bnkKKgoqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlLiBJdCBjb21lcyB3aXRob3V0IGFueSB3YXJyYW50eSwgdG8KKiB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBhcHBsaWNhYmxlIGxhdy4gWW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKKiBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRG8gV2hhdCBUaGUgRnVjayBZb3UgV2FudAoqIFRvIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSBTYW0gSG9jZXZhci4gU2VlCiogaHR0cDovL3NhbS56b3kub3JnL3d0ZnBsL0NPUFlJTkcgZm9yIG1vcmUgZGV0YWlscy4KKi8KCiFmdW5jdGlvbiAoJCkgewoKICAidXNlIHN0cmljdCI7CgoKIC8qIE1VTFRJU0VMRUNUIENMQVNTIERFRklOSVRJT04KICAqID09PT09PT09PT09PT09PT09PT09PT0gKi8KCiAgdmFyIE11bHRpU2VsZWN0ID0gZnVuY3Rpb24gKGVsZW1lbnQsIG9wdGlvbnMpIHsKICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7CiAgICB0aGlzLiRlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIHRoaXMuJGNvbnRhaW5lciA9ICQoJzxkaXYvPicsIHsgJ2NsYXNzJzogIm1zLWNvbnRhaW5lciIgfSk7CiAgICB0aGlzLiRzZWxlY3RhYmxlQ29udGFpbmVyID0gJCgnPGRpdi8+JywgeyAnY2xhc3MnOiAnbXMtc2VsZWN0YWJsZScgfSk7CiAgICB0aGlzLiRzZWxlY3Rpb25Db250YWluZXIgPSAkKCc8ZGl2Lz4nLCB7ICdjbGFzcyc6ICdtcy1zZWxlY3Rpb24nIH0pOwogICAgdGhpcy4kc2VsZWN0YWJsZVVsID0gJCgnPHVsLz4nLCB7ICdjbGFzcyc6ICJtcy1saXN0IiwgJ3RhYmluZGV4JyA6ICctMScgfSk7CiAgICB0aGlzLiRzZWxlY3Rpb25VbCA9ICQoJzx1bC8+JywgeyAnY2xhc3MnOiAibXMtbGlzdCIsICd0YWJpbmRleCcgOiAnLTEnIH0pOwogICAgdGhpcy5zY3JvbGxUbyA9IDA7CiAgICB0aGlzLmVsZW1zU2VsZWN0b3IgPSAnbGk6dmlzaWJsZTpub3QoLm1zLW9wdGdyb3VwLWxhYmVsLC5tcy1vcHRncm91cC1jb250YWluZXIsLicrb3B0aW9ucy5kaXNhYmxlZENsYXNzKycpJzsKICB9OwoKICBNdWx0aVNlbGVjdC5wcm90b3R5cGUgPSB7CiAgICBjb25zdHJ1Y3RvcjogTXVsdGlTZWxlY3QsCgogICAgaW5pdDogZnVuY3Rpb24oKXsKICAgICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICAgICAgbXMgPSB0aGlzLiRlbGVtZW50OwoKICAgICAgaWYgKG1zLm5leHQoJy5tcy1jb250YWluZXInKS5sZW5ndGggPT09IDApewogICAgICAgIG1zLmNzcyh7IHBvc2l0aW9uOiAnYWJzb2x1dGUnLCBsZWZ0OiAnLTk5OTlweCcgfSk7CiAgICAgICAgbXMuYXR0cignaWQnLCBtcy5hdHRyKCdpZCcpID8gbXMuYXR0cignaWQnKSA6IE1hdGguY2VpbChNYXRoLnJhbmRvbSgpKjEwMDApKydtdWx0aXNlbGVjdCcpOwogICAgICAgIHRoaXMuJGNvbnRhaW5lci5hdHRyKCdpZCcsICdtcy0nK21zLmF0dHIoJ2lkJykpOwogICAgICAgIHRoaXMuJGNvbnRhaW5lci5hZGRDbGFzcyh0aGF0Lm9wdGlvbnMuY3NzQ2xhc3MpOwogICAgICAgIG1zLmZpbmQoJ29wdGlvbicpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgIHRoYXQuZ2VuZXJhdGVMaXNGcm9tT3B0aW9uKHRoaXMpOwogICAgICAgIH0pOwoKICAgICAgICB0aGlzLiRzZWxlY3Rpb25VbC5maW5kKCcubXMtb3B0Z3JvdXAtbGFiZWwnKS5oaWRlKCk7CgogICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0YWJsZUhlYWRlcil7CiAgICAgICAgICB0aGF0LiRzZWxlY3RhYmxlQ29udGFpbmVyLmFwcGVuZCh0aGF0Lm9wdGlvbnMuc2VsZWN0YWJsZUhlYWRlcik7CiAgICAgICAgfQogICAgICAgIHRoYXQuJHNlbGVjdGFibGVDb250YWluZXIuYXBwZW5kKHRoYXQuJHNlbGVjdGFibGVVbCk7CiAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5zZWxlY3RhYmxlRm9vdGVyKXsKICAgICAgICAgIHRoYXQuJHNlbGVjdGFibGVDb250YWluZXIuYXBwZW5kKHRoYXQub3B0aW9ucy5zZWxlY3RhYmxlRm9vdGVyKTsKICAgICAgICB9CgogICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0aW9uSGVhZGVyKXsKICAgICAgICAgIHRoYXQuJHNlbGVjdGlvbkNvbnRhaW5lci5hcHBlbmQodGhhdC5vcHRpb25zLnNlbGVjdGlvbkhlYWRlcik7CiAgICAgICAgfQogICAgICAgIHRoYXQuJHNlbGVjdGlvbkNvbnRhaW5lci5hcHBlbmQodGhhdC4kc2VsZWN0aW9uVWwpOwogICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0aW9uRm9vdGVyKXsKICAgICAgICAgIHRoYXQuJHNlbGVjdGlvbkNvbnRhaW5lci5hcHBlbmQodGhhdC5vcHRpb25zLnNlbGVjdGlvbkZvb3Rlcik7CiAgICAgICAgfQoKICAgICAgICB0aGF0LiRjb250YWluZXIuYXBwZW5kKHRoYXQuJHNlbGVjdGFibGVDb250YWluZXIpOwogICAgICAgIHRoYXQuJGNvbnRhaW5lci5hcHBlbmQodGhhdC4kc2VsZWN0aW9uQ29udGFpbmVyKTsKICAgICAgICBtcy5hZnRlcih0aGF0LiRjb250YWluZXIpOwoKICAgICAgICB0aGF0LmFjdGl2ZU1vdXNlKHRoYXQuJHNlbGVjdGFibGVVbCk7CiAgICAgICAgdGhhdC5hY3RpdmVLZXlib2FyZCh0aGF0LiRzZWxlY3RhYmxlVWwpOwoKICAgICAgICB2YXIgYWN0aW9uID0gdGhhdC5vcHRpb25zLmRibENsaWNrID8gJ2RibGNsaWNrJyA6ICdjbGljayc7CgogICAgICAgIHRoYXQuJHNlbGVjdGFibGVVbC5vbihhY3Rpb24sICcubXMtZWxlbS1zZWxlY3RhYmxlJywgZnVuY3Rpb24oKXsKICAgICAgICAgIHRoYXQuc2VsZWN0KCQodGhpcykuZGF0YSgnbXMtdmFsdWUnKSk7CiAgICAgICAgfSk7CiAgICAgICAgdGhhdC4kc2VsZWN0aW9uVWwub24oYWN0aW9uLCAnLm1zLWVsZW0tc2VsZWN0aW9uJywgZnVuY3Rpb24oKXsKICAgICAgICAgIHRoYXQuZGVzZWxlY3QoJCh0aGlzKS5kYXRhKCdtcy12YWx1ZScpKTsKICAgICAgICB9KTsKCiAgICAgICAgdGhhdC5hY3RpdmVNb3VzZSh0aGF0LiRzZWxlY3Rpb25VbCk7CiAgICAgICAgdGhhdC5hY3RpdmVLZXlib2FyZCh0aGF0LiRzZWxlY3Rpb25VbCk7CgogICAgICAgIG1zLm9uKCdmb2N1cycsIGZ1bmN0aW9uKCl7CiAgICAgICAgICB0aGF0LiRzZWxlY3RhYmxlVWwuZm9jdXMoKTsKICAgICAgICB9KTsKICAgICAgfQoKICAgICAgdmFyIHNlbGVjdGVkVmFsdWVzID0gbXMuZmluZCgnb3B0aW9uOnNlbGVjdGVkJykubWFwKGZ1bmN0aW9uKCl7IHJldHVybiAkKHRoaXMpLnZhbCgpOyB9KS5nZXQoKTsKICAgICAgdGhhdC5zZWxlY3Qoc2VsZWN0ZWRWYWx1ZXMsICdpbml0Jyk7CgogICAgICBpZiAodHlwZW9mIHRoYXQub3B0aW9ucy5hZnRlckluaXQgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICB0aGF0Lm9wdGlvbnMuYWZ0ZXJJbml0LmNhbGwodGhpcywgdGhpcy4kY29udGFpbmVyKTsKICAgICAgfQogICAgfSwKCiAgICAnZ2VuZXJhdGVMaXNGcm9tT3B0aW9uJyA6IGZ1bmN0aW9uKG9wdGlvbiwgaW5kZXgsICRjb250YWluZXIpewogICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICBtcyA9IHRoYXQuJGVsZW1lbnQsCiAgICAgICAgICBhdHRyaWJ1dGVzID0gIiIsCiAgICAgICAgICAkb3B0aW9uID0gJChvcHRpb24pOwoKICAgICAgZm9yICh2YXIgY3B0ID0gMDsgY3B0IDwgb3B0aW9uLmF0dHJpYnV0ZXMubGVuZ3RoOyBjcHQrKyl7CiAgICAgICAgdmFyIGF0dHIgPSBvcHRpb24uYXR0cmlidXRlc1tjcHRdOwoKICAgICAgICBpZihhdHRyLm5hbWUgIT09ICd2YWx1ZScgJiYgYXR0ci5uYW1lICE9PSAnZGlzYWJsZWQnKXsKICAgICAgICAgIGF0dHJpYnV0ZXMgKz0gYXR0ci5uYW1lKyc9IicrYXR0ci52YWx1ZSsnIiAnOwogICAgICAgIH0KICAgICAgfQogICAgICB2YXIgc2VsZWN0YWJsZUxpID0gJCgnPGxpICcrYXR0cmlidXRlcysnPjxzcGFuPicrdGhhdC5lc2NhcGVIVE1MKCRvcHRpb24udGV4dCgpKSsnPC9zcGFuPjwvbGk+JyksCiAgICAgICAgICBzZWxlY3RlZExpID0gc2VsZWN0YWJsZUxpLmNsb25lKCksCiAgICAgICAgICB2YWx1ZSA9ICRvcHRpb24udmFsKCksCiAgICAgICAgICBlbGVtZW50SWQgPSB0aGF0LnNhbml0aXplKHZhbHVlKTsKCiAgICAgIHNlbGVjdGFibGVMaQogICAgICAgIC5kYXRhKCdtcy12YWx1ZScsIHZhbHVlKQogICAgICAgIC5hZGRDbGFzcygnbXMtZWxlbS1zZWxlY3RhYmxlJykKICAgICAgICAuYXR0cignaWQnLCBlbGVtZW50SWQrJy1zZWxlY3RhYmxlJyk7CgogICAgICBzZWxlY3RlZExpCiAgICAgICAgLmRhdGEoJ21zLXZhbHVlJywgdmFsdWUpCiAgICAgICAgLmFkZENsYXNzKCdtcy1lbGVtLXNlbGVjdGlvbicpCiAgICAgICAgLmF0dHIoJ2lkJywgZWxlbWVudElkKyctc2VsZWN0aW9uJykKICAgICAgICAuaGlkZSgpOwoKICAgICAgaWYgKCRvcHRpb24ucHJvcCgnZGlzYWJsZWQnKSB8fCBtcy5wcm9wKCdkaXNhYmxlZCcpKXsKICAgICAgICBzZWxlY3RlZExpLmFkZENsYXNzKHRoYXQub3B0aW9ucy5kaXNhYmxlZENsYXNzKTsKICAgICAgICBzZWxlY3RhYmxlTGkuYWRkQ2xhc3ModGhhdC5vcHRpb25zLmRpc2FibGVkQ2xhc3MpOwogICAgICB9CgogICAgICB2YXIgJG9wdGdyb3VwID0gJG9wdGlvbi5wYXJlbnQoJ29wdGdyb3VwJyk7CgogICAgICBpZiAoJG9wdGdyb3VwLmxlbmd0aCA+IDApewogICAgICAgIHZhciBvcHRncm91cExhYmVsID0gJG9wdGdyb3VwLmF0dHIoJ2xhYmVsJyksCiAgICAgICAgICAgIG9wdGdyb3VwSWQgPSB0aGF0LnNhbml0aXplKG9wdGdyb3VwTGFiZWwpLAogICAgICAgICAgICAkc2VsZWN0YWJsZU9wdGdyb3VwID0gdGhhdC4kc2VsZWN0YWJsZVVsLmZpbmQoJyNvcHRncm91cC1zZWxlY3RhYmxlLScrb3B0Z3JvdXBJZCksCiAgICAgICAgICAgICRzZWxlY3Rpb25PcHRncm91cCA9IHRoYXQuJHNlbGVjdGlvblVsLmZpbmQoJyNvcHRncm91cC1zZWxlY3Rpb24tJytvcHRncm91cElkKTsKCiAgICAgICAgaWYgKCRzZWxlY3RhYmxlT3B0Z3JvdXAubGVuZ3RoID09PSAwKXsKICAgICAgICAgIHZhciBvcHRncm91cENvbnRhaW5lclRwbCA9ICc8bGkgY2xhc3M9Im1zLW9wdGdyb3VwLWNvbnRhaW5lciI+PC9saT4nLAogICAgICAgICAgICAgIG9wdGdyb3VwVHBsID0gJzx1bCBjbGFzcz0ibXMtb3B0Z3JvdXAiPjxsaSBjbGFzcz0ibXMtb3B0Z3JvdXAtbGFiZWwiPjxzcGFuPicrb3B0Z3JvdXBMYWJlbCsnPC9zcGFuPjwvbGk+PC91bD4nOwoKICAgICAgICAgICRzZWxlY3RhYmxlT3B0Z3JvdXAgPSAkKG9wdGdyb3VwQ29udGFpbmVyVHBsKTsKICAgICAgICAgICRzZWxlY3Rpb25PcHRncm91cCA9ICQob3B0Z3JvdXBDb250YWluZXJUcGwpOwogICAgICAgICAgJHNlbGVjdGFibGVPcHRncm91cC5hdHRyKCdpZCcsICdvcHRncm91cC1zZWxlY3RhYmxlLScrb3B0Z3JvdXBJZCk7CiAgICAgICAgICAkc2VsZWN0aW9uT3B0Z3JvdXAuYXR0cignaWQnLCAnb3B0Z3JvdXAtc2VsZWN0aW9uLScrb3B0Z3JvdXBJZCk7CiAgICAgICAgICAkc2VsZWN0YWJsZU9wdGdyb3VwLmFwcGVuZCgkKG9wdGdyb3VwVHBsKSk7CiAgICAgICAgICAkc2VsZWN0aW9uT3B0Z3JvdXAuYXBwZW5kKCQob3B0Z3JvdXBUcGwpKTsKICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0YWJsZU9wdGdyb3VwKXsKICAgICAgICAgICAgJHNlbGVjdGFibGVPcHRncm91cC5maW5kKCcubXMtb3B0Z3JvdXAtbGFiZWwnKS5vbignY2xpY2snLCBmdW5jdGlvbigpewogICAgICAgICAgICAgIHZhciB2YWx1ZXMgPSAkb3B0Z3JvdXAuY2hpbGRyZW4oJzpub3QoOnNlbGVjdGVkLCA6ZGlzYWJsZWQpJykubWFwKGZ1bmN0aW9uKCl7IHJldHVybiAkKHRoaXMpLnZhbCgpO30pLmdldCgpOwogICAgICAgICAgICAgIHRoYXQuc2VsZWN0KHZhbHVlcyk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAkc2VsZWN0aW9uT3B0Z3JvdXAuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICB2YXIgdmFsdWVzID0gJG9wdGdyb3VwLmNoaWxkcmVuKCc6c2VsZWN0ZWQ6bm90KDpkaXNhYmxlZCknKS5tYXAoZnVuY3Rpb24oKXsgcmV0dXJuICQodGhpcykudmFsKCk7fSkuZ2V0KCk7CiAgICAgICAgICAgICAgdGhhdC5kZXNlbGVjdCh2YWx1ZXMpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICAgIHRoYXQuJHNlbGVjdGFibGVVbC5hcHBlbmQoJHNlbGVjdGFibGVPcHRncm91cCk7CiAgICAgICAgICB0aGF0LiRzZWxlY3Rpb25VbC5hcHBlbmQoJHNlbGVjdGlvbk9wdGdyb3VwKTsKICAgICAgICB9CiAgICAgICAgaW5kZXggPSBpbmRleCA9PT0gdW5kZWZpbmVkID8gJHNlbGVjdGFibGVPcHRncm91cC5maW5kKCd1bCcpLmNoaWxkcmVuKCkubGVuZ3RoIDogaW5kZXggKyAxOwogICAgICAgIHNlbGVjdGFibGVMaS5pbnNlcnRBdChpbmRleCwgJHNlbGVjdGFibGVPcHRncm91cC5jaGlsZHJlbigpKTsKICAgICAgICBzZWxlY3RlZExpLmluc2VydEF0KGluZGV4LCAkc2VsZWN0aW9uT3B0Z3JvdXAuY2hpbGRyZW4oKSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaW5kZXggPSBpbmRleCA9PT0gdW5kZWZpbmVkID8gdGhhdC4kc2VsZWN0YWJsZVVsLmNoaWxkcmVuKCkubGVuZ3RoIDogaW5kZXg7CgogICAgICAgIHNlbGVjdGFibGVMaS5pbnNlcnRBdChpbmRleCwgdGhhdC4kc2VsZWN0YWJsZVVsKTsKICAgICAgICBzZWxlY3RlZExpLmluc2VydEF0KGluZGV4LCB0aGF0LiRzZWxlY3Rpb25VbCk7CiAgICAgIH0KICAgIH0sCgogICAgJ2FkZE9wdGlvbicgOiBmdW5jdGlvbihvcHRpb25zKXsKICAgICAgdmFyIHRoYXQgPSB0aGlzOwoKICAgICAgaWYgKG9wdGlvbnMudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBvcHRpb25zLnZhbHVlICE9PSBudWxsKXsKICAgICAgICBvcHRpb25zID0gW29wdGlvbnNdOwogICAgICB9IAogICAgICAkLmVhY2gob3B0aW9ucywgZnVuY3Rpb24oaW5kZXgsIG9wdGlvbil7CiAgICAgICAgaWYgKG9wdGlvbi52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbi52YWx1ZSAhPT0gbnVsbCAmJgogICAgICAgICAgICB0aGF0LiRlbGVtZW50LmZpbmQoIm9wdGlvblt2YWx1ZT0nIitvcHRpb24udmFsdWUrIiddIikubGVuZ3RoID09PSAwKXsKICAgICAgICAgIHZhciAkb3B0aW9uID0gJCgnPG9wdGlvbiB2YWx1ZT0iJytvcHRpb24udmFsdWUrJyI+JytvcHRpb24udGV4dCsnPC9vcHRpb24+JyksCiAgICAgICAgICAgICAgaW5kZXggPSBwYXJzZUludCgodHlwZW9mIG9wdGlvbi5pbmRleCA9PT0gJ3VuZGVmaW5lZCcgPyB0aGF0LiRlbGVtZW50LmNoaWxkcmVuKCkubGVuZ3RoIDogb3B0aW9uLmluZGV4KSksCiAgICAgICAgICAgICAgJGNvbnRhaW5lciA9IG9wdGlvbi5uZXN0ZWQgPT09IHVuZGVmaW5lZCA/IHRoYXQuJGVsZW1lbnQgOiAkKCJvcHRncm91cFtsYWJlbD0nIitvcHRpb24ubmVzdGVkKyInXSIpOwoKICAgICAgICAgICRvcHRpb24uaW5zZXJ0QXQoaW5kZXgsICRjb250YWluZXIpOwogICAgICAgICAgdGhhdC5nZW5lcmF0ZUxpc0Zyb21PcHRpb24oJG9wdGlvbi5nZXQoMCksIGluZGV4LCBvcHRpb24ubmVzdGVkKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKCiAgICAnZXNjYXBlSFRNTCcgOiBmdW5jdGlvbih0ZXh0KXsKICAgICAgcmV0dXJuICQoIjxkaXY+IikudGV4dCh0ZXh0KS5odG1sKCk7CiAgICB9LAoKICAgICdhY3RpdmVLZXlib2FyZCcgOiBmdW5jdGlvbigkbGlzdCl7CiAgICAgIHZhciB0aGF0ID0gdGhpczsKCiAgICAgICRsaXN0Lm9uKCdmb2N1cycsIGZ1bmN0aW9uKCl7CiAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnbXMtZm9jdXMnKTsKICAgICAgfSkKICAgICAgLm9uKCdibHVyJywgZnVuY3Rpb24oKXsKICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdtcy1mb2N1cycpOwogICAgICB9KQogICAgICAub24oJ2tleWRvd24nLCBmdW5jdGlvbihlKXsKICAgICAgICBzd2l0Y2ggKGUud2hpY2gpIHsKICAgICAgICAgIGNhc2UgNDA6CiAgICAgICAgICBjYXNlIDM4OgogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgIHRoYXQubW92ZUhpZ2hsaWdodCgkKHRoaXMpLCAoZS53aGljaCA9PT0gMzgpID8gLTEgOiAxKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgY2FzZSAzNzoKICAgICAgICAgIGNhc2UgMzk6CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgdGhhdC5zd2l0Y2hMaXN0KCRsaXN0KTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICBpZih0aGF0LiRlbGVtZW50LmlzKCdbdGFiaW5kZXhdJykpewogICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICB2YXIgdGFiaW5kZXggPSBwYXJzZUludCh0aGF0LiRlbGVtZW50LmF0dHIoJ3RhYmluZGV4JyksIDEwKTsKICAgICAgICAgICAgICB0YWJpbmRleCA9IChlLnNoaWZ0S2V5KSA/IHRhYmluZGV4LTEgOiB0YWJpbmRleCsxOwogICAgICAgICAgICAgICQoJ1t0YWJpbmRleD0iJysodGFiaW5kZXgpKyciXScpLmZvY3VzKCk7CiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICBpZihlLnNoaWZ0S2V5KXsKICAgICAgICAgICAgICAgIHRoYXQuJGVsZW1lbnQudHJpZ2dlcignZm9jdXMnKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYoJC5pbkFycmF5KGUud2hpY2gsIHRoYXQub3B0aW9ucy5rZXlTZWxlY3QpID4gLTEpewogICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgIHRoYXQuc2VsZWN0SGlnaGxpZ2h0ZWQoJGxpc3QpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9LAoKICAgICdtb3ZlSGlnaGxpZ2h0JzogZnVuY3Rpb24oJGxpc3QsIGRpcmVjdGlvbil7CiAgICAgIHZhciAkZWxlbXMgPSAkbGlzdC5maW5kKHRoaXMuZWxlbXNTZWxlY3RvciksCiAgICAgICAgICAkY3VyckVsZW0gPSAkZWxlbXMuZmlsdGVyKCcubXMtaG92ZXInKSwKICAgICAgICAgICRuZXh0RWxlbSA9IG51bGwsCiAgICAgICAgICBlbGVtSGVpZ2h0ID0gJGVsZW1zLmZpcnN0KCkub3V0ZXJIZWlnaHQoKSwKICAgICAgICAgIGNvbnRhaW5lckhlaWdodCA9ICRsaXN0LmhlaWdodCgpLAogICAgICAgICAgY29udGFpbmVyU2VsZWN0b3IgPSAnIycrdGhpcy4kY29udGFpbmVyLnByb3AoJ2lkJyk7CgogICAgICAkZWxlbXMucmVtb3ZlQ2xhc3MoJ21zLWhvdmVyJyk7CiAgICAgIGlmIChkaXJlY3Rpb24gPT09IDEpeyAvLyBET1dOCgogICAgICAgICRuZXh0RWxlbSA9ICRjdXJyRWxlbS5uZXh0QWxsKHRoaXMuZWxlbXNTZWxlY3RvcikuZmlyc3QoKTsKICAgICAgICBpZiAoJG5leHRFbGVtLmxlbmd0aCA9PT0gMCl7CiAgICAgICAgICB2YXIgJG9wdGdyb3VwVWwgPSAkY3VyckVsZW0ucGFyZW50KCk7CgogICAgICAgICAgaWYgKCRvcHRncm91cFVsLmhhc0NsYXNzKCdtcy1vcHRncm91cCcpKXsKICAgICAgICAgICAgdmFyICRvcHRncm91cExpID0gJG9wdGdyb3VwVWwucGFyZW50KCksCiAgICAgICAgICAgICAgICAkbmV4dE9wdGdyb3VwTGkgPSAkb3B0Z3JvdXBMaS5uZXh0KCc6dmlzaWJsZScpOwoKICAgICAgICAgICAgaWYgKCRuZXh0T3B0Z3JvdXBMaS5sZW5ndGggPiAwKXsKICAgICAgICAgICAgICAkbmV4dEVsZW0gPSAkbmV4dE9wdGdyb3VwTGkuZmluZCh0aGlzLmVsZW1zU2VsZWN0b3IpLmZpcnN0KCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgJG5leHRFbGVtID0gJGVsZW1zLmZpcnN0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRuZXh0RWxlbSA9ICRlbGVtcy5maXJzdCgpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09IC0xKXsgLy8gVVAKCiAgICAgICAgJG5leHRFbGVtID0gJGN1cnJFbGVtLnByZXZBbGwodGhpcy5lbGVtc1NlbGVjdG9yKS5maXJzdCgpOwogICAgICAgIGlmICgkbmV4dEVsZW0ubGVuZ3RoID09PSAwKXsKICAgICAgICAgIHZhciAkb3B0Z3JvdXBVbCA9ICRjdXJyRWxlbS5wYXJlbnQoKTsKCiAgICAgICAgICBpZiAoJG9wdGdyb3VwVWwuaGFzQ2xhc3MoJ21zLW9wdGdyb3VwJykpewogICAgICAgICAgICB2YXIgJG9wdGdyb3VwTGkgPSAkb3B0Z3JvdXBVbC5wYXJlbnQoKSwKICAgICAgICAgICAgICAgICRwcmV2T3B0Z3JvdXBMaSA9ICRvcHRncm91cExpLnByZXYoJzp2aXNpYmxlJyk7CgogICAgICAgICAgICBpZiAoJHByZXZPcHRncm91cExpLmxlbmd0aCA+IDApewogICAgICAgICAgICAgICRuZXh0RWxlbSA9ICRwcmV2T3B0Z3JvdXBMaS5maW5kKHRoaXMuZWxlbXNTZWxlY3RvcikubGFzdCgpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICRuZXh0RWxlbSA9ICRlbGVtcy5sYXN0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRuZXh0RWxlbSA9ICRlbGVtcy5sYXN0KCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmICgkbmV4dEVsZW0ubGVuZ3RoID4gMCl7CiAgICAgICAgJG5leHRFbGVtLmFkZENsYXNzKCdtcy1ob3ZlcicpOwogICAgICAgIHZhciBzY3JvbGxUbyA9ICRsaXN0LnNjcm9sbFRvcCgpICsgJG5leHRFbGVtLnBvc2l0aW9uKCkudG9wIC0gCiAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVySGVpZ2h0IC8gMiArIGVsZW1IZWlnaHQgLyAyOwoKICAgICAgICAkbGlzdC5zY3JvbGxUb3Aoc2Nyb2xsVG8pOwogICAgICB9CiAgICB9LAoKICAgICdzZWxlY3RIaWdobGlnaHRlZCcgOiBmdW5jdGlvbigkbGlzdCl7CiAgICAgIHZhciAkZWxlbXMgPSAkbGlzdC5maW5kKHRoaXMuZWxlbXNTZWxlY3RvciksCiAgICAgICAgICAkaGlnaGxpZ2h0ZWRFbGVtID0gJGVsZW1zLmZpbHRlcignLm1zLWhvdmVyJykuZmlyc3QoKTsKCiAgICAgIGlmICgkaGlnaGxpZ2h0ZWRFbGVtLmxlbmd0aCA+IDApewogICAgICAgIGlmICgkbGlzdC5wYXJlbnQoKS5oYXNDbGFzcygnbXMtc2VsZWN0YWJsZScpKXsKICAgICAgICAgIHRoaXMuc2VsZWN0KCRoaWdobGlnaHRlZEVsZW0uZGF0YSgnbXMtdmFsdWUnKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuZGVzZWxlY3QoJGhpZ2hsaWdodGVkRWxlbS5kYXRhKCdtcy12YWx1ZScpKTsKICAgICAgICB9CiAgICAgICAgJGVsZW1zLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICB9CiAgICB9LAoKICAgICdzd2l0Y2hMaXN0JyA6IGZ1bmN0aW9uKCRsaXN0KXsKICAgICAgJGxpc3QuYmx1cigpOwogICAgICB0aGlzLiRjb250YWluZXIuZmluZCh0aGlzLmVsZW1zU2VsZWN0b3IpLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICBpZiAoJGxpc3QucGFyZW50KCkuaGFzQ2xhc3MoJ21zLXNlbGVjdGFibGUnKSl7CiAgICAgICAgdGhpcy4kc2VsZWN0aW9uVWwuZm9jdXMoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZm9jdXMoKTsKICAgICAgfQogICAgfSwKCiAgICAnYWN0aXZlTW91c2UnIDogZnVuY3Rpb24oJGxpc3QpewogICAgICB2YXIgdGhhdCA9IHRoaXM7CgogICAgICB0aGlzLiRjb250YWluZXIub24oJ21vdXNlZW50ZXInLCB0aGF0LmVsZW1zU2VsZWN0b3IsIGZ1bmN0aW9uKCl7CiAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcubXMtY29udGFpbmVyJykuZmluZCh0aGF0LmVsZW1zU2VsZWN0b3IpLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ21zLWhvdmVyJyk7CiAgICAgIH0pOwoKICAgICAgdGhpcy4kY29udGFpbmVyLm9uKCdtb3VzZWxlYXZlJywgdGhhdC5lbGVtc1NlbGVjdG9yLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcubXMtY29udGFpbmVyJykuZmluZCh0aGF0LmVsZW1zU2VsZWN0b3IpLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICB9KTsKICAgIH0sCgogICAgJ3JlZnJlc2gnIDogZnVuY3Rpb24oKSB7CiAgICAgIHRoaXMuZGVzdHJveSgpOwogICAgICB0aGlzLiRlbGVtZW50Lm11bHRpU2VsZWN0KHRoaXMub3B0aW9ucyk7CiAgICB9LAoKICAgICdkZXN0cm95JyA6IGZ1bmN0aW9uKCl7CiAgICAgICQoIiNtcy0iK3RoaXMuJGVsZW1lbnQuYXR0cigiaWQiKSkucmVtb3ZlKCk7CiAgICAgIHRoaXMuJGVsZW1lbnQub2ZmKCdmb2N1cycpOwogICAgICB0aGlzLiRlbGVtZW50LmNzcygncG9zaXRpb24nLCAnJykuY3NzKCdsZWZ0JywgJycpOwogICAgICB0aGlzLiRlbGVtZW50LnJlbW92ZURhdGEoJ211bHRpc2VsZWN0Jyk7CiAgICB9LAoKICAgICdzZWxlY3QnIDogZnVuY3Rpb24odmFsdWUsIG1ldGhvZCl7CiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKXsgdmFsdWUgPSBbdmFsdWVdOyB9CgogICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICBtcyA9IHRoaXMuJGVsZW1lbnQsCiAgICAgICAgICBtc0lkcyA9ICQubWFwKHZhbHVlLCBmdW5jdGlvbih2YWwpeyByZXR1cm4odGhhdC5zYW5pdGl6ZSh2YWwpKTsgfSksCiAgICAgICAgICBzZWxlY3RhYmxlcyA9IHRoaXMuJHNlbGVjdGFibGVVbC5maW5kKCcjJyArIG1zSWRzLmpvaW4oJy1zZWxlY3RhYmxlLCAjJykrJy1zZWxlY3RhYmxlJykuZmlsdGVyKCc6bm90KC4nK3RoYXQub3B0aW9ucy5kaXNhYmxlZENsYXNzKycpJyksCiAgICAgICAgICBzZWxlY3Rpb25zID0gdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnIycgKyBtc0lkcy5qb2luKCctc2VsZWN0aW9uLCAjJykgKyAnLXNlbGVjdGlvbicpLmZpbHRlcignOm5vdCguJyt0aGF0Lm9wdGlvbnMuZGlzYWJsZWRDbGFzcysnKScpLAogICAgICAgICAgb3B0aW9ucyA9IG1zLmZpbmQoJ29wdGlvbjpub3QoOmRpc2FibGVkKScpLmZpbHRlcihmdW5jdGlvbigpeyByZXR1cm4oJC5pbkFycmF5KHRoaXMudmFsdWUsIHZhbHVlKSA+IC0xKTsgfSk7CgogICAgICBpZiAobWV0aG9kID09PSAnaW5pdCcpewogICAgICAgIHNlbGVjdGFibGVzID0gdGhpcy4kc2VsZWN0YWJsZVVsLmZpbmQoJyMnICsgbXNJZHMuam9pbignLXNlbGVjdGFibGUsICMnKSsnLXNlbGVjdGFibGUnKSwKICAgICAgICBzZWxlY3Rpb25zID0gdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnIycgKyBtc0lkcy5qb2luKCctc2VsZWN0aW9uLCAjJykgKyAnLXNlbGVjdGlvbicpOwogICAgICB9CgogICAgICBpZiAoc2VsZWN0YWJsZXMubGVuZ3RoID4gMCl7CiAgICAgICAgc2VsZWN0YWJsZXMuYWRkQ2xhc3MoJ21zLXNlbGVjdGVkJykuaGlkZSgpOwogICAgICAgIHNlbGVjdGlvbnMuYWRkQ2xhc3MoJ21zLXNlbGVjdGVkJykuc2hvdygpOwoKICAgICAgICBvcHRpb25zLnByb3AoJ3NlbGVjdGVkJywgdHJ1ZSk7CgogICAgICAgIHRoYXQuJGNvbnRhaW5lci5maW5kKHRoYXQuZWxlbXNTZWxlY3RvcikucmVtb3ZlQ2xhc3MoJ21zLWhvdmVyJyk7CgogICAgICAgIHZhciBzZWxlY3RhYmxlT3B0Z3JvdXBzID0gdGhhdC4kc2VsZWN0YWJsZVVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgaWYgKHNlbGVjdGFibGVPcHRncm91cHMubGVuZ3RoID4gMCl7CiAgICAgICAgICBzZWxlY3RhYmxlT3B0Z3JvdXBzLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgdmFyIHNlbGVjdGFibGVzTGkgPSAkKHRoaXMpLmZpbmQoJy5tcy1lbGVtLXNlbGVjdGFibGUnKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGFibGVzTGkubGVuZ3RoID09PSBzZWxlY3RhYmxlc0xpLmZpbHRlcignLm1zLXNlbGVjdGVkJykubGVuZ3RoKXsKICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5tcy1vcHRncm91cC1sYWJlbCcpLmhpZGUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CgogICAgICAgICAgdmFyIHNlbGVjdGlvbk9wdGdyb3VwcyA9IHRoYXQuJHNlbGVjdGlvblVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgICBzZWxlY3Rpb25PcHRncm91cHMuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICB2YXIgc2VsZWN0aW9uc0xpID0gJCh0aGlzKS5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGlvbnNMaS5maWx0ZXIoJy5tcy1zZWxlY3RlZCcpLmxlbmd0aCA+IDApewogICAgICAgICAgICAgICQodGhpcykuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuc2hvdygpOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5rZWVwT3JkZXIgJiYgbWV0aG9kICE9PSAnaW5pdCcpewogICAgICAgICAgICB2YXIgc2VsZWN0aW9uTGlMYXN0ID0gdGhhdC4kc2VsZWN0aW9uVWwuZmluZCgnLm1zLXNlbGVjdGVkJyk7CiAgICAgICAgICAgIGlmKChzZWxlY3Rpb25MaUxhc3QubGVuZ3RoID4gMSkgJiYgKHNlbGVjdGlvbkxpTGFzdC5sYXN0KCkuZ2V0KDApICE9IHNlbGVjdGlvbnMuZ2V0KDApKSkgewogICAgICAgICAgICAgIHNlbGVjdGlvbnMuaW5zZXJ0QWZ0ZXIoc2VsZWN0aW9uTGlMYXN0Lmxhc3QoKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKG1ldGhvZCAhPT0gJ2luaXQnKXsKICAgICAgICAgIG1zLnRyaWdnZXIoJ2NoYW5nZScpOwogICAgICAgICAgaWYgKHR5cGVvZiB0aGF0Lm9wdGlvbnMuYWZ0ZXJTZWxlY3QgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgdGhhdC5vcHRpb25zLmFmdGVyU2VsZWN0LmNhbGwodGhpcywgdmFsdWUpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKCiAgICAnZGVzZWxlY3QnIDogZnVuY3Rpb24odmFsdWUpewogICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyl7IHZhbHVlID0gW3ZhbHVlXTsgfQoKICAgICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICAgICAgbXMgPSB0aGlzLiRlbGVtZW50LAogICAgICAgICAgbXNJZHMgPSAkLm1hcCh2YWx1ZSwgZnVuY3Rpb24odmFsKXsgcmV0dXJuKHRoYXQuc2FuaXRpemUodmFsKSk7IH0pLAogICAgICAgICAgc2VsZWN0YWJsZXMgPSB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnIycgKyBtc0lkcy5qb2luKCctc2VsZWN0YWJsZSwgIycpKyctc2VsZWN0YWJsZScpLAogICAgICAgICAgc2VsZWN0aW9ucyA9IHRoaXMuJHNlbGVjdGlvblVsLmZpbmQoJyMnICsgbXNJZHMuam9pbignLXNlbGVjdGlvbiwgIycpKyctc2VsZWN0aW9uJykuZmlsdGVyKCcubXMtc2VsZWN0ZWQnKS5maWx0ZXIoJzpub3QoLicrdGhhdC5vcHRpb25zLmRpc2FibGVkQ2xhc3MrJyknKSwKICAgICAgICAgIG9wdGlvbnMgPSBtcy5maW5kKCdvcHRpb24nKS5maWx0ZXIoZnVuY3Rpb24oKXsgcmV0dXJuKCQuaW5BcnJheSh0aGlzLnZhbHVlLCB2YWx1ZSkgPiAtMSk7IH0pOwoKICAgICAgaWYgKHNlbGVjdGlvbnMubGVuZ3RoID4gMCl7CiAgICAgICAgc2VsZWN0YWJsZXMucmVtb3ZlQ2xhc3MoJ21zLXNlbGVjdGVkJykuc2hvdygpOwogICAgICAgIHNlbGVjdGlvbnMucmVtb3ZlQ2xhc3MoJ21zLXNlbGVjdGVkJykuaGlkZSgpOwogICAgICAgIG9wdGlvbnMucHJvcCgnc2VsZWN0ZWQnLCBmYWxzZSk7CgogICAgICAgIHRoYXQuJGNvbnRhaW5lci5maW5kKHRoYXQuZWxlbXNTZWxlY3RvcikucmVtb3ZlQ2xhc3MoJ21zLWhvdmVyJyk7CgogICAgICAgIHZhciBzZWxlY3RhYmxlT3B0Z3JvdXBzID0gdGhhdC4kc2VsZWN0YWJsZVVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgaWYgKHNlbGVjdGFibGVPcHRncm91cHMubGVuZ3RoID4gMCl7CiAgICAgICAgICBzZWxlY3RhYmxlT3B0Z3JvdXBzLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgdmFyIHNlbGVjdGFibGVzTGkgPSAkKHRoaXMpLmZpbmQoJy5tcy1lbGVtLXNlbGVjdGFibGUnKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGFibGVzTGkuZmlsdGVyKCc6bm90KC5tcy1zZWxlY3RlZCknKS5sZW5ndGggPiAwKXsKICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5tcy1vcHRncm91cC1sYWJlbCcpLnNob3coKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CgogICAgICAgICAgdmFyIHNlbGVjdGlvbk9wdGdyb3VwcyA9IHRoYXQuJHNlbGVjdGlvblVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgICBzZWxlY3Rpb25PcHRncm91cHMuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICB2YXIgc2VsZWN0aW9uc0xpID0gJCh0aGlzKS5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGlvbnNMaS5maWx0ZXIoJy5tcy1zZWxlY3RlZCcpLmxlbmd0aCA9PT0gMCl7CiAgICAgICAgICAgICAgJCh0aGlzKS5maW5kKCcubXMtb3B0Z3JvdXAtbGFiZWwnKS5oaWRlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICBtcy50cmlnZ2VyKCdjaGFuZ2UnKTsKICAgICAgICBpZiAodHlwZW9mIHRoYXQub3B0aW9ucy5hZnRlckRlc2VsZWN0ID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICB0aGF0Lm9wdGlvbnMuYWZ0ZXJEZXNlbGVjdC5jYWxsKHRoaXMsIHZhbHVlKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCgogICAgJ3NlbGVjdF9hbGwnIDogZnVuY3Rpb24oKXsKICAgICAgdmFyIG1zID0gdGhpcy4kZWxlbWVudCwKICAgICAgICAgIHZhbHVlcyA9IG1zLnZhbCgpOwoKICAgICAgbXMuZmluZCgnb3B0aW9uOm5vdCgiOmRpc2FibGVkIiknKS5wcm9wKCdzZWxlY3RlZCcsIHRydWUpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLWVsZW0tc2VsZWN0YWJsZScpLmZpbHRlcignOm5vdCguJyt0aGlzLm9wdGlvbnMuZGlzYWJsZWRDbGFzcysnKScpLmFkZENsYXNzKCdtcy1zZWxlY3RlZCcpLmhpZGUoKTsKICAgICAgdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuc2hvdygpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuaGlkZSgpOwogICAgICB0aGlzLiRzZWxlY3Rpb25VbC5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKS5maWx0ZXIoJzpub3QoLicrdGhpcy5vcHRpb25zLmRpc2FibGVkQ2xhc3MrJyknKS5hZGRDbGFzcygnbXMtc2VsZWN0ZWQnKS5zaG93KCk7CiAgICAgIHRoaXMuJHNlbGVjdGlvblVsLmZvY3VzKCk7CiAgICAgIG1zLnRyaWdnZXIoJ2NoYW5nZScpOwogICAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5hZnRlclNlbGVjdCA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIHZhciBzZWxlY3RlZFZhbHVlcyA9ICQuZ3JlcChtcy52YWwoKSwgZnVuY3Rpb24oaXRlbSl7CiAgICAgICAgICByZXR1cm4gJC5pbkFycmF5KGl0ZW0sIHZhbHVlcykgPCAwOwogICAgICAgIH0pOwogICAgICAgIHRoaXMub3B0aW9ucy5hZnRlclNlbGVjdC5jYWxsKHRoaXMsIHNlbGVjdGVkVmFsdWVzKTsKICAgICAgfQogICAgfSwKCiAgICAnZGVzZWxlY3RfYWxsJyA6IGZ1bmN0aW9uKCl7CiAgICAgIHZhciBtcyA9IHRoaXMuJGVsZW1lbnQsCiAgICAgICAgICB2YWx1ZXMgPSBtcy52YWwoKTsKCiAgICAgIG1zLmZpbmQoJ29wdGlvbicpLnByb3AoJ3NlbGVjdGVkJywgZmFsc2UpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLWVsZW0tc2VsZWN0YWJsZScpLnJlbW92ZUNsYXNzKCdtcy1zZWxlY3RlZCcpLnNob3coKTsKICAgICAgdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuaGlkZSgpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuc2hvdygpOwogICAgICB0aGlzLiRzZWxlY3Rpb25VbC5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKS5yZW1vdmVDbGFzcygnbXMtc2VsZWN0ZWQnKS5oaWRlKCk7CiAgICAgIHRoaXMuJHNlbGVjdGFibGVVbC5mb2N1cygpOwogICAgICBtcy50cmlnZ2VyKCdjaGFuZ2UnKTsKICAgICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMuYWZ0ZXJEZXNlbGVjdCA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIHRoaXMub3B0aW9ucy5hZnRlckRlc2VsZWN0LmNhbGwodGhpcywgdmFsdWVzKTsKICAgICAgfQogICAgfSwKCiAgICBzYW5pdGl6ZTogZnVuY3Rpb24odmFsdWUpewogICAgICB2YXIgaGFzaCA9IDAsIGksIGNoYXJhY3RlcjsKICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PSAwKSByZXR1cm4gaGFzaDsKICAgICAgdmFyIGxzID0gMDsKICAgICAgZm9yIChpID0gMCwgbHMgPSB2YWx1ZS5sZW5ndGg7IGkgPCBsczsgaSsrKSB7CiAgICAgICAgY2hhcmFjdGVyICA9IHZhbHVlLmNoYXJDb2RlQXQoaSk7CiAgICAgICAgaGFzaCAgPSAoKGhhc2g8PDUpLWhhc2gpK2NoYXJhY3RlcjsKICAgICAgICBoYXNoIHw9IDA7IC8vIENvbnZlcnQgdG8gMzJiaXQgaW50ZWdlcgogICAgICB9CiAgICAgIHJldHVybiBoYXNoOwogICAgfQogIH07CgogIC8qIE1VTFRJU0VMRUNUIFBMVUdJTiBERUZJTklUSU9OCiAgICogPT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiAgJC5mbi5tdWx0aVNlbGVjdCA9IGZ1bmN0aW9uICgpIHsKICAgIHZhciBvcHRpb24gPSBhcmd1bWVudHNbMF0sCiAgICAgICAgYXJncyA9IGFyZ3VtZW50czsKCiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgdmFyICR0aGlzID0gJCh0aGlzKSwKICAgICAgICAgIGRhdGEgPSAkdGhpcy5kYXRhKCdtdWx0aXNlbGVjdCcpLAogICAgICAgICAgb3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCAkLmZuLm11bHRpU2VsZWN0LmRlZmF1bHRzLCAkdGhpcy5kYXRhKCksIHR5cGVvZiBvcHRpb24gPT09ICdvYmplY3QnICYmIG9wdGlvbik7CgogICAgICBpZiAoIWRhdGEpeyAkdGhpcy5kYXRhKCdtdWx0aXNlbGVjdCcsIChkYXRhID0gbmV3IE11bHRpU2VsZWN0KHRoaXMsIG9wdGlvbnMpKSk7IH0KCiAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnc3RyaW5nJyl7CiAgICAgICAgZGF0YVtvcHRpb25dKGFyZ3NbMV0pOwogICAgICB9IGVsc2UgewogICAgICAgIGRhdGEuaW5pdCgpOwogICAgICB9CiAgICB9KTsKICB9OwoKICAkLmZuLm11bHRpU2VsZWN0LmRlZmF1bHRzID0gewogICAga2V5U2VsZWN0OiBbMzJdLAogICAgc2VsZWN0YWJsZU9wdGdyb3VwOiBmYWxzZSwKICAgIGRpc2FibGVkQ2xhc3MgOiAnZGlzYWJsZWQnLAogICAgZGJsQ2xpY2sgOiBmYWxzZSwKICAgIGtlZXBPcmRlcjogZmFsc2UsCiAgICBjc3NDbGFzczogJycKICB9OwoKICAkLmZuLm11bHRpU2VsZWN0LkNvbnN0cnVjdG9yID0gTXVsdGlTZWxlY3Q7CgogICQuZm4uaW5zZXJ0QXQgPSBmdW5jdGlvbihpbmRleCwgJHBhcmVudCkgewogICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgaWYgKGluZGV4ID09PSAwKSB7CiAgICAgICAgJHBhcmVudC5wcmVwZW5kKHRoaXMpOwogICAgICB9IGVsc2UgewogICAgICAgICRwYXJlbnQuY2hpbGRyZW4oKS5lcShpbmRleCAtIDEpLmFmdGVyKHRoaXMpOwogICAgICB9CiAgICB9KTsKfTsKCn0od2luZG93LmpRdWVyeSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsMultiSelect/lisefd.MAMSGroupsMultiSelect.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBMSVNFIC0gTGlzdCBJdCBTcGVjaWFsIEVkaXRpb24KIyBWZXJzaW9uIDEuMgojIEEgZm9yayBvZiBMaXN0STIKIyBtYWludGFpbmVkIGJ5IEZlcm5hbmRvIE1vcmdhZG8gQUtBIEpvIE1vcmcKIyBzaW5jZSAyMDE1CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBPcmlnaW5hbCBBdXRob3I6IEJlbiBNYWxlbiwgPGJlbkBjb25jZXB0ZmFjdG9yeS5jb20uYXU+CiMgQ28tTWFpbnRhaW5lcjogU2ltb24gUmFkZm9yZCwgPHNpbW9uQGNvbmNlcHRmYWN0b3J5LmNvbS5hdT4KIyBXZWI6IHd3dy5jb25jZXB0ZmFjdG9yeS5jb20uYXUKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgTWFpbnRhaW5lciBzaW5jZSAyMDExIHVwIHRvIDIwMTQ6IEpvbmF0aGFuIFNjaG1pZCwgPGhpQGpvbmF0aGFuc2NobWlkLmRlPgojIFdlYjogd3d3LmpvbmF0aGFuc2NobWlkLmRlCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFNvbWUgd2Fja29zIHN0YXJ0ZWQgZGVzdHJveWluZyBzdHVmZiBzaW5jZSAyMDEyIGFuZCBzdG9wcGVkIGF0IDIwMTQ6CiMKIyBUYXBpbyBMw7Z5dHR5LCA8dGFwc2FAb3JhbmdlLW1lZGlhLmZpPgojIFdlYjogd3d3Lm9yYW5nZS1tZWRpYS5maQojCiMgR29yYW4gSWxpYywgPHVuaXF1M2VAZ21haWwuY29tPgojIFdlYjogd3d3LmljaC1tYWNoLWRhcy5hdAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBMSVNFIGlzIGEgQ01TIE1hZGUgU2ltcGxlIG1vZHVsZSB0aGF0IGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gY3JlYXRlCiMgbXVsdGlwbGUgbGlzdHMgdGhyb3VnaG91dCBhIHNpdGUuIEl0IGNhbiBiZSBkdXBsaWNhdGVkIGFuZCBnaXZlbiBmcmllbmRseQojIG5hbWVzIGZvciBlYXNpZXIgY2xpZW50IG1haW50ZW5hbmNlLgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIExJU0UKIyBMSVNFIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgTElTRSBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBFTkRfTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpjbGFzcyBsaXNlZmRfTUFNU0dyb3Vwc011bHRpU2VsZWN0IGV4dGVuZHMgTElTRUZpZWxkZGVmQmFzZQp7CiAgcHJpdmF0ZSAkX29wdHMgPSBhcnJheSgpOwogIAogIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgmJGRiX2luZm8sICRjYWxsZXJfb2JqID0gTlVMTCkKICB7CiAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRkYl9pbmZvLCAkY2FsbGVyX29iaik7CiAgICAKICAgICR0aGlzLT5TZXRGcmllbmRseVR5cGUoICR0aGlzLT5Nb2RMYW5nKCdmaWVsZGRlZl8nIC4gJHRoaXMtPkdldFR5cGUoKSApICk7CiAgICBcY21zX3V0aWxzOjpnZXRfc21hcnR5KCktPmFzc2lnbignbGlzZScsIFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0xJU0UnKSk7CiAgfQogICAgCiAgc3RhdGljIHB1YmxpYyBmdW5jdGlvbiBHZXRNb2R1bGVEZXBzKCkKICB7CiAgICAKICAgIHJldHVybiBhcnJheSgKICAgICAgICAgICAgICAgICAgJ01BTVMnID0+ICcxLjAuYicKICAgICAgICAgICAgICAgICk7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBHZXRIZWFkZXJIVE1MKCkKICB7CiAgICAkdG1wbCA9ICcnOwogICAgaWYoICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgndHlwZScsICdNdWx0aVNlbGVjdCcpID09ICdNdWx0aVNlbGVjdCcgKQogICAgewogICAgICAgICR0bXBsID0gPDw8RU9UCjxsaW5rIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIGhyZWY9InskdGhpcy0+R2V0VVJMUGF0aCgpfS9qcXVlcnkubXVsdGktc2VsZWN0LmNzcyIgLz4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ieyR0aGlzLT5HZXRVUkxQYXRoKCl9L2pxdWVyeS5tdWx0aS1zZWxlY3QuanMiPjwvc2NyaXB0PgpFT1Q7CiAgICB9CiAgICByZXR1cm4gJHRtcGw7CiAgfQogICAgCiAgLy8gZ2V0IGF2YWlsYWJsZSBncm91cHMgZnJvbSBNQU1TIG1vZHVsZQogIHB1YmxpYyBmdW5jdGlvbiBHZXRNQU1TR3JvdXBzKCkKICB7ICAgCiAgICAkbWFtcyA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01BTVMnKTsKICAgIAogICAgaWYoaXNfb2JqZWN0KCRtYW1zKSkKICAgIHsKICAgICAgJGdyb3VwcyA9ICRtYW1zLT5HZXRHcm91cExpc3RGdWxsKCk7CiAgICAgICAKICAgICAgaWYoJGdyb3VwcykKICAgICAgewogICAgICAgICRvcHRpb25zID0gYXJyYXkoKTsKICAgICAgICAKICAgICAgICBmb3JlYWNoKCRncm91cHMgYXMgJG9wdGlvbikgCiAgICAgICAgewogICAgICAgICAgJG9wdGlvbnNbJG9wdGlvblsnaWQnXV0gPSAkb3B0aW9uWydncm91cG5hbWUnXTsKICAgICAgICB9CiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAkb3B0aW9uczsKICAgIH0KICB9CiAgCiAgICAgCiAgcHVibGljIGZ1bmN0aW9uIEdldE9wdGlvbnMoKSAKICB7CiAgICAkbGlzZSA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0xJU0UnKTsKICAgIAogICAgJHRoaXMtPl9vcHRzWyd0eXBlJ10gPSAkdGhpcy0+R2V0T3B0aW9uVmFsdWUoJ3R5cGUnLCAnTXVsdGlTZWxlY3QnKTsKICAgICR0aGlzLT5fb3B0c1sndHlwZXMnXSA9IGFycmF5KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTXVsdGlTZWxlY3QnICAgICAgICAgPT4gJGxpc2UtPk1vZExhbmcoJ2ZpZWxkZGVmX011bHRpU2VsZWN0JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDaGVja2JveEdyb3VwJyAgICAgICA9PiAkbGlzZS0+TW9kTGFuZygnZmllbGRkZWZfQ2hlY2tib3hHcm91cCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSlF1ZXJ5TXVsdGlTZWxlY3QnICAgPT4gJGxpc2UtPk1vZExhbmcoJ2ZpZWxkZGVmX0pRdWVyeU11bHRpU2VsZWN0JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICByZXR1cm4gJHRoaXMtPl9vcHRzOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gUmVuZGVyRm9yQWRtaW5MaXN0aW5nKCRpZCwgJHJldHVybmlkKQogIHsKICAgICRncm91cHMgPSAoYXJyYXkpJHRoaXMtPkdldFZhbHVlKCk7CiAgICAkc21hcnR5ID0gY21zbXMoKS0+R2V0U21hcnR5KCk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2dyb3VwcycsICRncm91cHMpOwogICAgcmV0dXJuIHBhcmVudDo6UmVuZGVyRm9yQWRtaW5MaXN0aW5nKCRpZCwgJHJldHVybmlkKTsKICB9Cn0vLyBlbmQgb2YgY2xhc3MKPz4=]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsMultiSelect/list.MAMSGroupsMultiSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmaWVsZGRlZi0+TW9kTGFuZygnZmllbGRkZWZfZ3JvdXBzJyl9OiB7JGdyb3Vwc3xjb3VudH0=]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsMultiSelect/output.MAMSGroupsMultiSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmaWVsZGRlZi5uYW1lfTogeyRmaWVsZGRlZi52YWx1ZX0=]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsSingleSelect</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsSingleSelect/admin.MAMSGroupsSingleSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRvcHRzID0gJGZpZWxkZGVmLT5HZXRPcHRpb25zKCl9Cnskc2VsX2dyb3VwcyA9IGV4cGxvZGUoJywnLCAkbWFtc19vcHRpb25zKX0KeyRzZWxfZ3JvdXBzID0gJGZpZWxkZGVmLT5HZXRPcHRpb25WYWx1ZSgnbWFtc19vcHRpb25zJyl9CnskZ3JvdXBzX29wdHMgPSAkZmllbGRkZWYtPkdldE1BTVNHcm91cHMoKX0KCjxmaWVsZHNldD4KICA8bGVnZW5kPntsYW5nKCdvcHRpb25zJyl9PC9sZWdlbmQ+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGxpc2UtPk1vZExhbmcoJ2ZpZWxkZGVmX3R5cGUnKX06PC9wPgogICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgICA8c2VsZWN0IG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tX2lucHV0W3R5cGVdIiBzdHlsZT0ibWF4LXdpZHRoOiA5OCU7Ij4KICAgICAgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kb3B0cy50eXBlcyBzZWxlY3RlZD0kZmllbGRkZWYtPkdldE9wdGlvblZhbHVlKCd0eXBlJywgJ0Ryb3Bkb3duJyl9CiAgICAgICAgPC9zZWxlY3Q+CiAgICAgIDwvcD4KICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij48ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRsaXNlLT5Nb2RMYW5nKCdmaWVsZGRlZl90eXBlX2hlbHAnKX08L2Rpdj48L3A+CiAgPC9kaXY+CjwvZmllbGRzZXQ+]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsSingleSelect/images</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsSingleSelect/images/switch.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAB40lEQVR4AWIgG4wCAKvkAPJXFAXwGRnLrqVlj5kva7bDZ+Nv27ZtG7kpY3zZC7Pe2T13Nq/5OxQKhasqlcrzX6FyudyRy+VArVZn/xtUKpU6isUi5PN50Ol03d/5sz0Wi73JZDLch55Op7lUKsUlk0kukUjgDAgtFAqAGhuNxuu/gu7ED41GA+r1Ou21Wg2q1SpUKhUolUpAhEA8HodwOAzBYBACgQBIJJLBN6S1tTWGBODiV1AKQ83wo9PpBIvFAlarFex2O9273W5wOBxvrl69uvgFkM/nnyIgzmAwpMh2q0KhKBJfdbCLRKK8QCBIkzdpnLETn95CmMfjQfir8+fPH/8aOIkOR40o9DfK9PS0yOfzocbPjhw5cuiLS6KFEB2NfkKTiTmPlUolS3KQ1Wg0rFarZYm2LBHGkmDgfActmZ+fl5hMpof79u3b/QVQLBZbSGRpWmSzWXgvGWw2G/oIXC4XNQ873qFPcUafMwyzh5Rd38u1McIQjJDvBIACvV4v+P1+GmWcEfoz12xaX19PIshsNlOgXq9/u7fA3HILGAS3gEEAxsBccwsYDLeAwQCir4LSMaEwZ0xMTKwAhtdfkKHAIJlOtWwXERERBYyE32BDqQn8/f3tcnNzg8k2YBQAAOLgc5CbVSwBAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsSingleSelect/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsSingleSelect/input.MAMSGroupsSingleSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyR0eXBlID0gJGZpZWxkZGVmLT5HZXRPcHRpb25WYWx1ZSgndHlwZScpfQp7JG9wdHMgPSAkZmllbGRkZWYtPkdldE1BTVNHcm91cHMoKX0KCnskc2VsID0gJGZpZWxkZGVmLT5HZXRWYWx1ZSgpfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGZpZWxkZGVmLT5HZXROYW1lKCl9e2lmICRmaWVsZGRlZi0+SXNSZXF1aXJlZCgpfSp7L2lmfTo8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij4KCQl7aWYgJGZpZWxkZGVmLT5HZXREZXNjKCl9KHskZmllbGRkZWYtPkdldERlc2MoKX0pPGJyIC8+ey9pZn0KICAgIHtpZiAkdHlwZSA9PSAnRHJvcGRvd24nfSAgICAgICAgCiAgICAgIHtodG1sX29wdGlvbnMgbmFtZT0ieyRhY3Rpb25pZH1jdXN0b21maWVsZFt7JGZpZWxkZGVmLT5HZXRJZCgpfV0iIG9wdGlvbnM9JG9wdHMgc2VsZWN0ZWQ9JHNlbH0KICAgIHsvaWZ9ICAgIAogICAge2lmICR0eXBlID09ICdSYWRpb0dyb3VwJ30KICAgICAge2h0bWxfcmFkaW9zIG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tZmllbGRbeyRmaWVsZGRlZi0+R2V0SWQoKX1dIiBvcHRpb25zPSRvcHRzIHNlbGVjdGVkPSRzZWwgc2VwYXJhdG9yPSc8YnIgLz4nfQogICAgey9pZn0gICAgICAgICAgCiAgICB7aWYgJHR5cGUgPT0gJ0pRdWVyeU11bHRpU2VsZWN0J30KICAgICAgPGRpdiBjbGFzcz0ibXMtY29udGFpbmVyIj4KICAgICAgICA8c2VsZWN0IGlkPSJ7JGFjdGlvbmlkfWN1c3RvbWZpZWxkeyRmaWVsZGRlZi0+R2V0SWQoKX0iIG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tZmllbGRbeyRmaWVsZGRlZi0+R2V0SWQoKX1dW119IiBzaXplPSJ7JG9wdHN8Y291bnR9IiBtdWx0aXBsZT4gCiAgICAgICAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JG9wdHMgc2VsZWN0ZWQ9JHNlbH0KICAgICAgICA8L3NlbGVjdD4KICAgICAgPC9kaXY+IAogICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgICAgIC8vIGRpcnR5IGhhY2sgdG8gYXZvaWQgcmVjdXJzaW9uLi4uCiAgICAgICAgICAgIHdpbmRvdy5tc19kZXMgPSB0cnVlOwogICAgICAgICAgICAkKCcjeyRhY3Rpb25pZH1jdXN0b21maWVsZHskZmllbGRkZWYtPkdldElkKCl9JykubXVsdGlTZWxlY3QoewogICAgICAgICAgICAgICAgIGFmdGVyU2VsZWN0OiBmdW5jdGlvbih2YWx1ZXMpewogICAgICAgICAgICAgICAgICAgaWYod2luZG93Lm1zX2Rlcyl7CiAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjeyRhY3Rpb25pZH1jdXN0b21maWVsZHskZmllbGRkZWYtPkdldElkKCl9JykubXVsdGlTZWxlY3QoJ2Rlc2VsZWN0X2FsbCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Lm1zX2RlcyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgJCgnI3skYWN0aW9uaWR9Y3VzdG9tZmllbGR7JGZpZWxkZGVmLT5HZXRJZCgpfScpLm11bHRpU2VsZWN0KCdzZWxlY3QnLCB2YWx1ZXMpOwogICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubXNfZGVzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gICAgCiAgICAgICAgICAgIH0pOwogICAgICA8L3NjcmlwdD4KICAgIHsvaWZ9Cgk8L3A+CjwvZGl2Pg==]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsSingleSelect/jquery.multi-select.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm1zLWNvbnRhaW5lcnsNCiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCcuLi9GRVVNdWx0aVNlbGVjdC9pbWFnZXMvc3dpdGNoLnBuZycpIG5vLXJlcGVhdCA1MCUgNTAlOw0KICB3aWR0aDogNDcwcHg7DQp9DQoNCi5tcy1jb250YWluZXI6YWZ0ZXJ7DQogIGNvbnRlbnQ6ICIuIjsNCiAgZGlzcGxheTogYmxvY2s7DQogIGhlaWdodDogMDsNCiAgbGluZS1oZWlnaHQ6IDA7DQogIGZvbnQtc2l6ZTogMDsNCiAgY2xlYXI6IGJvdGg7DQogIG1pbi1oZWlnaHQ6IDA7DQogIHZpc2liaWxpdHk6IGhpZGRlbjsNCn0NCg0KLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0YWJsZSwgLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0aW9uew0KICBiYWNrZ3JvdW5kOiAjZmZmOw0KICBjb2xvcjogIzU1NTU1NTsNCiAgZmxvYXQ6IGxlZnQ7DQogIHdpZHRoOiA0NSU7DQp9DQoubXMtY29udGFpbmVyIC5tcy1zZWxlY3Rpb257DQogIGZsb2F0OiByaWdodDsNCn0NCg0KLm1zLWNvbnRhaW5lciAubXMtbGlzdHsNCiAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSk7DQogIC1tb3otYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOw0KICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSk7DQogIC13ZWJraXQtdHJhbnNpdGlvbjogYm9yZGVyIGxpbmVhciAwLjJzLCBib3gtc2hhZG93IGxpbmVhciAwLjJzOw0KICAtbW96LXRyYW5zaXRpb246IGJvcmRlciBsaW5lYXIgMC4ycywgYm94LXNoYWRvdyBsaW5lYXIgMC4yczsNCiAgLW1zLXRyYW5zaXRpb246IGJvcmRlciBsaW5lYXIgMC4ycywgYm94LXNoYWRvdyBsaW5lYXIgMC4yczsNCiAgLW8tdHJhbnNpdGlvbjogYm9yZGVyIGxpbmVhciAwLjJzLCBib3gtc2hhZG93IGxpbmVhciAwLjJzOw0KICB0cmFuc2l0aW9uOiBib3JkZXIgbGluZWFyIDAuMnMsIGJveC1zaGFkb3cgbGluZWFyIDAuMnM7DQogIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7DQogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4Ow0KICAtbW96LWJvcmRlci1yYWRpdXM6IDNweDsNCiAgYm9yZGVyLXJhZGl1czogM3B4Ow0KICBwb3NpdGlvbjogcmVsYXRpdmU7DQogIGhlaWdodDogMjAwcHg7DQogIHBhZGRpbmc6IDA7DQogIG92ZXJmbG93LXk6IGF1dG87DQp9DQoNCi5tcy1jb250YWluZXIgLm1zLWxpc3QubXMtZm9jdXN7DQogIGJvcmRlci1jb2xvcjogcmdiYSg4MiwgMTY4LCAyMzYsIDAuOCk7DQogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpLCAwIDAgOHB4IHJnYmEoODIsIDE2OCwgMjM2LCAwLjYpOw0KICAtbW96LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KSwgMCAwIDhweCByZ2JhKDgyLCAxNjgsIDIzNiwgMC42KTsNCiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpLCAwIDAgOHB4IHJnYmEoODIsIDE2OCwgMjM2LCAwLjYpOw0KICBvdXRsaW5lOiAwOw0KICBvdXRsaW5lOiB0aGluIGRvdHRlZCBcOTsNCn0NCg0KLm1zLWNvbnRhaW5lciB1bHsNCiAgbWFyZ2luOiAwOw0KICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7DQogIHBhZGRpbmc6IDA7DQp9DQoNCi5tcy1jb250YWluZXIgLm1zLW9wdGdyb3VwLWNvbnRhaW5lcnsNCiAgd2lkdGg6IDEwMCU7DQp9DQoNCi5tcy1jb250YWluZXIgLm1zLW9wdGdyb3VwLWxhYmVsew0KICBtYXJnaW46IDA7DQogIHBhZGRpbmc6IDVweCAwcHggMHB4IDVweDsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICBjb2xvcjogIzk5OTsNCn0NCg0KLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0YWJsZSBsaS5tcy1lbGVtLXNlbGVjdGFibGUsDQoubXMtY29udGFpbmVyIC5tcy1zZWxlY3Rpb24gbGkubXMtZWxlbS1zZWxlY3Rpb257DQogIGJvcmRlci1ib3R0b206IDFweCAjZWVlIHNvbGlkOw0KICBwYWRkaW5nOiAycHggMTBweDsNCiAgY29sb3I6ICM1NTU7DQogIGZvbnQtc2l6ZTogMTRweDsNCn0NCg0KLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0YWJsZSBsaS5tcy1ob3ZlciwNCi5tcy1jb250YWluZXIgLm1zLXNlbGVjdGlvbiBsaS5tcy1ob3ZlcnsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICBjb2xvcjogI2ZmZjsNCiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDhjOw0KfQ0KDQoubXMtY29udGFpbmVyIC5tcy1zZWxlY3RhYmxlIGxpLmRpc2FibGVkLA0KLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0aW9uIGxpLmRpc2FibGVkew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOw0KICBjb2xvcjogI2FhYTsNCiAgY3Vyc29yOiB0ZXh0Ow0KfQ==]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsSingleSelect/jquery.multi-select.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKKiBNdWx0aVNlbGVjdCB2MC45LjEyCiogQ29weXJpZ2h0IChjKSAyMDEyIExvdWlzIEN1bnkKKgoqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlLiBJdCBjb21lcyB3aXRob3V0IGFueSB3YXJyYW50eSwgdG8KKiB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBhcHBsaWNhYmxlIGxhdy4gWW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKKiBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRG8gV2hhdCBUaGUgRnVjayBZb3UgV2FudAoqIFRvIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSBTYW0gSG9jZXZhci4gU2VlCiogaHR0cDovL3NhbS56b3kub3JnL3d0ZnBsL0NPUFlJTkcgZm9yIG1vcmUgZGV0YWlscy4KKi8KCiFmdW5jdGlvbiAoJCkgewoKICAidXNlIHN0cmljdCI7CgoKIC8qIE1VTFRJU0VMRUNUIENMQVNTIERFRklOSVRJT04KICAqID09PT09PT09PT09PT09PT09PT09PT0gKi8KCiAgdmFyIE11bHRpU2VsZWN0ID0gZnVuY3Rpb24gKGVsZW1lbnQsIG9wdGlvbnMpIHsKICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7CiAgICB0aGlzLiRlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIHRoaXMuJGNvbnRhaW5lciA9ICQoJzxkaXYvPicsIHsgJ2NsYXNzJzogIm1zLWNvbnRhaW5lciIgfSk7CiAgICB0aGlzLiRzZWxlY3RhYmxlQ29udGFpbmVyID0gJCgnPGRpdi8+JywgeyAnY2xhc3MnOiAnbXMtc2VsZWN0YWJsZScgfSk7CiAgICB0aGlzLiRzZWxlY3Rpb25Db250YWluZXIgPSAkKCc8ZGl2Lz4nLCB7ICdjbGFzcyc6ICdtcy1zZWxlY3Rpb24nIH0pOwogICAgdGhpcy4kc2VsZWN0YWJsZVVsID0gJCgnPHVsLz4nLCB7ICdjbGFzcyc6ICJtcy1saXN0IiwgJ3RhYmluZGV4JyA6ICctMScgfSk7CiAgICB0aGlzLiRzZWxlY3Rpb25VbCA9ICQoJzx1bC8+JywgeyAnY2xhc3MnOiAibXMtbGlzdCIsICd0YWJpbmRleCcgOiAnLTEnIH0pOwogICAgdGhpcy5zY3JvbGxUbyA9IDA7CiAgICB0aGlzLmVsZW1zU2VsZWN0b3IgPSAnbGk6dmlzaWJsZTpub3QoLm1zLW9wdGdyb3VwLWxhYmVsLC5tcy1vcHRncm91cC1jb250YWluZXIsLicrb3B0aW9ucy5kaXNhYmxlZENsYXNzKycpJzsKICB9OwoKICBNdWx0aVNlbGVjdC5wcm90b3R5cGUgPSB7CiAgICBjb25zdHJ1Y3RvcjogTXVsdGlTZWxlY3QsCgogICAgaW5pdDogZnVuY3Rpb24oKXsKICAgICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICAgICAgbXMgPSB0aGlzLiRlbGVtZW50OwoKICAgICAgaWYgKG1zLm5leHQoJy5tcy1jb250YWluZXInKS5sZW5ndGggPT09IDApewogICAgICAgIG1zLmNzcyh7IHBvc2l0aW9uOiAnYWJzb2x1dGUnLCBsZWZ0OiAnLTk5OTlweCcgfSk7CiAgICAgICAgbXMuYXR0cignaWQnLCBtcy5hdHRyKCdpZCcpID8gbXMuYXR0cignaWQnKSA6IE1hdGguY2VpbChNYXRoLnJhbmRvbSgpKjEwMDApKydtdWx0aXNlbGVjdCcpOwogICAgICAgIHRoaXMuJGNvbnRhaW5lci5hdHRyKCdpZCcsICdtcy0nK21zLmF0dHIoJ2lkJykpOwogICAgICAgIHRoaXMuJGNvbnRhaW5lci5hZGRDbGFzcyh0aGF0Lm9wdGlvbnMuY3NzQ2xhc3MpOwogICAgICAgIG1zLmZpbmQoJ29wdGlvbicpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgIHRoYXQuZ2VuZXJhdGVMaXNGcm9tT3B0aW9uKHRoaXMpOwogICAgICAgIH0pOwoKICAgICAgICB0aGlzLiRzZWxlY3Rpb25VbC5maW5kKCcubXMtb3B0Z3JvdXAtbGFiZWwnKS5oaWRlKCk7CgogICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0YWJsZUhlYWRlcil7CiAgICAgICAgICB0aGF0LiRzZWxlY3RhYmxlQ29udGFpbmVyLmFwcGVuZCh0aGF0Lm9wdGlvbnMuc2VsZWN0YWJsZUhlYWRlcik7CiAgICAgICAgfQogICAgICAgIHRoYXQuJHNlbGVjdGFibGVDb250YWluZXIuYXBwZW5kKHRoYXQuJHNlbGVjdGFibGVVbCk7CiAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5zZWxlY3RhYmxlRm9vdGVyKXsKICAgICAgICAgIHRoYXQuJHNlbGVjdGFibGVDb250YWluZXIuYXBwZW5kKHRoYXQub3B0aW9ucy5zZWxlY3RhYmxlRm9vdGVyKTsKICAgICAgICB9CgogICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0aW9uSGVhZGVyKXsKICAgICAgICAgIHRoYXQuJHNlbGVjdGlvbkNvbnRhaW5lci5hcHBlbmQodGhhdC5vcHRpb25zLnNlbGVjdGlvbkhlYWRlcik7CiAgICAgICAgfQogICAgICAgIHRoYXQuJHNlbGVjdGlvbkNvbnRhaW5lci5hcHBlbmQodGhhdC4kc2VsZWN0aW9uVWwpOwogICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0aW9uRm9vdGVyKXsKICAgICAgICAgIHRoYXQuJHNlbGVjdGlvbkNvbnRhaW5lci5hcHBlbmQodGhhdC5vcHRpb25zLnNlbGVjdGlvbkZvb3Rlcik7CiAgICAgICAgfQoKICAgICAgICB0aGF0LiRjb250YWluZXIuYXBwZW5kKHRoYXQuJHNlbGVjdGFibGVDb250YWluZXIpOwogICAgICAgIHRoYXQuJGNvbnRhaW5lci5hcHBlbmQodGhhdC4kc2VsZWN0aW9uQ29udGFpbmVyKTsKICAgICAgICBtcy5hZnRlcih0aGF0LiRjb250YWluZXIpOwoKICAgICAgICB0aGF0LmFjdGl2ZU1vdXNlKHRoYXQuJHNlbGVjdGFibGVVbCk7CiAgICAgICAgdGhhdC5hY3RpdmVLZXlib2FyZCh0aGF0LiRzZWxlY3RhYmxlVWwpOwoKICAgICAgICB2YXIgYWN0aW9uID0gdGhhdC5vcHRpb25zLmRibENsaWNrID8gJ2RibGNsaWNrJyA6ICdjbGljayc7CgogICAgICAgIHRoYXQuJHNlbGVjdGFibGVVbC5vbihhY3Rpb24sICcubXMtZWxlbS1zZWxlY3RhYmxlJywgZnVuY3Rpb24oKXsKICAgICAgICAgIHRoYXQuc2VsZWN0KCQodGhpcykuZGF0YSgnbXMtdmFsdWUnKSk7CiAgICAgICAgfSk7CiAgICAgICAgdGhhdC4kc2VsZWN0aW9uVWwub24oYWN0aW9uLCAnLm1zLWVsZW0tc2VsZWN0aW9uJywgZnVuY3Rpb24oKXsKICAgICAgICAgIHRoYXQuZGVzZWxlY3QoJCh0aGlzKS5kYXRhKCdtcy12YWx1ZScpKTsKICAgICAgICB9KTsKCiAgICAgICAgdGhhdC5hY3RpdmVNb3VzZSh0aGF0LiRzZWxlY3Rpb25VbCk7CiAgICAgICAgdGhhdC5hY3RpdmVLZXlib2FyZCh0aGF0LiRzZWxlY3Rpb25VbCk7CgogICAgICAgIG1zLm9uKCdmb2N1cycsIGZ1bmN0aW9uKCl7CiAgICAgICAgICB0aGF0LiRzZWxlY3RhYmxlVWwuZm9jdXMoKTsKICAgICAgICB9KTsKICAgICAgfQoKICAgICAgdmFyIHNlbGVjdGVkVmFsdWVzID0gbXMuZmluZCgnb3B0aW9uOnNlbGVjdGVkJykubWFwKGZ1bmN0aW9uKCl7IHJldHVybiAkKHRoaXMpLnZhbCgpOyB9KS5nZXQoKTsKICAgICAgdGhhdC5zZWxlY3Qoc2VsZWN0ZWRWYWx1ZXMsICdpbml0Jyk7CgogICAgICBpZiAodHlwZW9mIHRoYXQub3B0aW9ucy5hZnRlckluaXQgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICB0aGF0Lm9wdGlvbnMuYWZ0ZXJJbml0LmNhbGwodGhpcywgdGhpcy4kY29udGFpbmVyKTsKICAgICAgfQogICAgfSwKCiAgICAnZ2VuZXJhdGVMaXNGcm9tT3B0aW9uJyA6IGZ1bmN0aW9uKG9wdGlvbiwgaW5kZXgsICRjb250YWluZXIpewogICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICBtcyA9IHRoYXQuJGVsZW1lbnQsCiAgICAgICAgICBhdHRyaWJ1dGVzID0gIiIsCiAgICAgICAgICAkb3B0aW9uID0gJChvcHRpb24pOwoKICAgICAgZm9yICh2YXIgY3B0ID0gMDsgY3B0IDwgb3B0aW9uLmF0dHJpYnV0ZXMubGVuZ3RoOyBjcHQrKyl7CiAgICAgICAgdmFyIGF0dHIgPSBvcHRpb24uYXR0cmlidXRlc1tjcHRdOwoKICAgICAgICBpZihhdHRyLm5hbWUgIT09ICd2YWx1ZScgJiYgYXR0ci5uYW1lICE9PSAnZGlzYWJsZWQnKXsKICAgICAgICAgIGF0dHJpYnV0ZXMgKz0gYXR0ci5uYW1lKyc9IicrYXR0ci52YWx1ZSsnIiAnOwogICAgICAgIH0KICAgICAgfQogICAgICB2YXIgc2VsZWN0YWJsZUxpID0gJCgnPGxpICcrYXR0cmlidXRlcysnPjxzcGFuPicrdGhhdC5lc2NhcGVIVE1MKCRvcHRpb24udGV4dCgpKSsnPC9zcGFuPjwvbGk+JyksCiAgICAgICAgICBzZWxlY3RlZExpID0gc2VsZWN0YWJsZUxpLmNsb25lKCksCiAgICAgICAgICB2YWx1ZSA9ICRvcHRpb24udmFsKCksCiAgICAgICAgICBlbGVtZW50SWQgPSB0aGF0LnNhbml0aXplKHZhbHVlKTsKCiAgICAgIHNlbGVjdGFibGVMaQogICAgICAgIC5kYXRhKCdtcy12YWx1ZScsIHZhbHVlKQogICAgICAgIC5hZGRDbGFzcygnbXMtZWxlbS1zZWxlY3RhYmxlJykKICAgICAgICAuYXR0cignaWQnLCBlbGVtZW50SWQrJy1zZWxlY3RhYmxlJyk7CgogICAgICBzZWxlY3RlZExpCiAgICAgICAgLmRhdGEoJ21zLXZhbHVlJywgdmFsdWUpCiAgICAgICAgLmFkZENsYXNzKCdtcy1lbGVtLXNlbGVjdGlvbicpCiAgICAgICAgLmF0dHIoJ2lkJywgZWxlbWVudElkKyctc2VsZWN0aW9uJykKICAgICAgICAuaGlkZSgpOwoKICAgICAgaWYgKCRvcHRpb24ucHJvcCgnZGlzYWJsZWQnKSB8fCBtcy5wcm9wKCdkaXNhYmxlZCcpKXsKICAgICAgICBzZWxlY3RlZExpLmFkZENsYXNzKHRoYXQub3B0aW9ucy5kaXNhYmxlZENsYXNzKTsKICAgICAgICBzZWxlY3RhYmxlTGkuYWRkQ2xhc3ModGhhdC5vcHRpb25zLmRpc2FibGVkQ2xhc3MpOwogICAgICB9CgogICAgICB2YXIgJG9wdGdyb3VwID0gJG9wdGlvbi5wYXJlbnQoJ29wdGdyb3VwJyk7CgogICAgICBpZiAoJG9wdGdyb3VwLmxlbmd0aCA+IDApewogICAgICAgIHZhciBvcHRncm91cExhYmVsID0gJG9wdGdyb3VwLmF0dHIoJ2xhYmVsJyksCiAgICAgICAgICAgIG9wdGdyb3VwSWQgPSB0aGF0LnNhbml0aXplKG9wdGdyb3VwTGFiZWwpLAogICAgICAgICAgICAkc2VsZWN0YWJsZU9wdGdyb3VwID0gdGhhdC4kc2VsZWN0YWJsZVVsLmZpbmQoJyNvcHRncm91cC1zZWxlY3RhYmxlLScrb3B0Z3JvdXBJZCksCiAgICAgICAgICAgICRzZWxlY3Rpb25PcHRncm91cCA9IHRoYXQuJHNlbGVjdGlvblVsLmZpbmQoJyNvcHRncm91cC1zZWxlY3Rpb24tJytvcHRncm91cElkKTsKCiAgICAgICAgaWYgKCRzZWxlY3RhYmxlT3B0Z3JvdXAubGVuZ3RoID09PSAwKXsKICAgICAgICAgIHZhciBvcHRncm91cENvbnRhaW5lclRwbCA9ICc8bGkgY2xhc3M9Im1zLW9wdGdyb3VwLWNvbnRhaW5lciI+PC9saT4nLAogICAgICAgICAgICAgIG9wdGdyb3VwVHBsID0gJzx1bCBjbGFzcz0ibXMtb3B0Z3JvdXAiPjxsaSBjbGFzcz0ibXMtb3B0Z3JvdXAtbGFiZWwiPjxzcGFuPicrb3B0Z3JvdXBMYWJlbCsnPC9zcGFuPjwvbGk+PC91bD4nOwoKICAgICAgICAgICRzZWxlY3RhYmxlT3B0Z3JvdXAgPSAkKG9wdGdyb3VwQ29udGFpbmVyVHBsKTsKICAgICAgICAgICRzZWxlY3Rpb25PcHRncm91cCA9ICQob3B0Z3JvdXBDb250YWluZXJUcGwpOwogICAgICAgICAgJHNlbGVjdGFibGVPcHRncm91cC5hdHRyKCdpZCcsICdvcHRncm91cC1zZWxlY3RhYmxlLScrb3B0Z3JvdXBJZCk7CiAgICAgICAgICAkc2VsZWN0aW9uT3B0Z3JvdXAuYXR0cignaWQnLCAnb3B0Z3JvdXAtc2VsZWN0aW9uLScrb3B0Z3JvdXBJZCk7CiAgICAgICAgICAkc2VsZWN0YWJsZU9wdGdyb3VwLmFwcGVuZCgkKG9wdGdyb3VwVHBsKSk7CiAgICAgICAgICAkc2VsZWN0aW9uT3B0Z3JvdXAuYXBwZW5kKCQob3B0Z3JvdXBUcGwpKTsKICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0YWJsZU9wdGdyb3VwKXsKICAgICAgICAgICAgJHNlbGVjdGFibGVPcHRncm91cC5maW5kKCcubXMtb3B0Z3JvdXAtbGFiZWwnKS5vbignY2xpY2snLCBmdW5jdGlvbigpewogICAgICAgICAgICAgIHZhciB2YWx1ZXMgPSAkb3B0Z3JvdXAuY2hpbGRyZW4oJzpub3QoOnNlbGVjdGVkLCA6ZGlzYWJsZWQpJykubWFwKGZ1bmN0aW9uKCl7IHJldHVybiAkKHRoaXMpLnZhbCgpO30pLmdldCgpOwogICAgICAgICAgICAgIHRoYXQuc2VsZWN0KHZhbHVlcyk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAkc2VsZWN0aW9uT3B0Z3JvdXAuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICB2YXIgdmFsdWVzID0gJG9wdGdyb3VwLmNoaWxkcmVuKCc6c2VsZWN0ZWQ6bm90KDpkaXNhYmxlZCknKS5tYXAoZnVuY3Rpb24oKXsgcmV0dXJuICQodGhpcykudmFsKCk7fSkuZ2V0KCk7CiAgICAgICAgICAgICAgdGhhdC5kZXNlbGVjdCh2YWx1ZXMpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICAgIHRoYXQuJHNlbGVjdGFibGVVbC5hcHBlbmQoJHNlbGVjdGFibGVPcHRncm91cCk7CiAgICAgICAgICB0aGF0LiRzZWxlY3Rpb25VbC5hcHBlbmQoJHNlbGVjdGlvbk9wdGdyb3VwKTsKICAgICAgICB9CiAgICAgICAgaW5kZXggPSBpbmRleCA9PT0gdW5kZWZpbmVkID8gJHNlbGVjdGFibGVPcHRncm91cC5maW5kKCd1bCcpLmNoaWxkcmVuKCkubGVuZ3RoIDogaW5kZXggKyAxOwogICAgICAgIHNlbGVjdGFibGVMaS5pbnNlcnRBdChpbmRleCwgJHNlbGVjdGFibGVPcHRncm91cC5jaGlsZHJlbigpKTsKICAgICAgICBzZWxlY3RlZExpLmluc2VydEF0KGluZGV4LCAkc2VsZWN0aW9uT3B0Z3JvdXAuY2hpbGRyZW4oKSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaW5kZXggPSBpbmRleCA9PT0gdW5kZWZpbmVkID8gdGhhdC4kc2VsZWN0YWJsZVVsLmNoaWxkcmVuKCkubGVuZ3RoIDogaW5kZXg7CgogICAgICAgIHNlbGVjdGFibGVMaS5pbnNlcnRBdChpbmRleCwgdGhhdC4kc2VsZWN0YWJsZVVsKTsKICAgICAgICBzZWxlY3RlZExpLmluc2VydEF0KGluZGV4LCB0aGF0LiRzZWxlY3Rpb25VbCk7CiAgICAgIH0KICAgIH0sCgogICAgJ2FkZE9wdGlvbicgOiBmdW5jdGlvbihvcHRpb25zKXsKICAgICAgdmFyIHRoYXQgPSB0aGlzOwoKICAgICAgaWYgKG9wdGlvbnMudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBvcHRpb25zLnZhbHVlICE9PSBudWxsKXsKICAgICAgICBvcHRpb25zID0gW29wdGlvbnNdOwogICAgICB9IAogICAgICAkLmVhY2gob3B0aW9ucywgZnVuY3Rpb24oaW5kZXgsIG9wdGlvbil7CiAgICAgICAgaWYgKG9wdGlvbi52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbi52YWx1ZSAhPT0gbnVsbCAmJgogICAgICAgICAgICB0aGF0LiRlbGVtZW50LmZpbmQoIm9wdGlvblt2YWx1ZT0nIitvcHRpb24udmFsdWUrIiddIikubGVuZ3RoID09PSAwKXsKICAgICAgICAgIHZhciAkb3B0aW9uID0gJCgnPG9wdGlvbiB2YWx1ZT0iJytvcHRpb24udmFsdWUrJyI+JytvcHRpb24udGV4dCsnPC9vcHRpb24+JyksCiAgICAgICAgICAgICAgaW5kZXggPSBwYXJzZUludCgodHlwZW9mIG9wdGlvbi5pbmRleCA9PT0gJ3VuZGVmaW5lZCcgPyB0aGF0LiRlbGVtZW50LmNoaWxkcmVuKCkubGVuZ3RoIDogb3B0aW9uLmluZGV4KSksCiAgICAgICAgICAgICAgJGNvbnRhaW5lciA9IG9wdGlvbi5uZXN0ZWQgPT09IHVuZGVmaW5lZCA/IHRoYXQuJGVsZW1lbnQgOiAkKCJvcHRncm91cFtsYWJlbD0nIitvcHRpb24ubmVzdGVkKyInXSIpOwoKICAgICAgICAgICRvcHRpb24uaW5zZXJ0QXQoaW5kZXgsICRjb250YWluZXIpOwogICAgICAgICAgdGhhdC5nZW5lcmF0ZUxpc0Zyb21PcHRpb24oJG9wdGlvbi5nZXQoMCksIGluZGV4LCBvcHRpb24ubmVzdGVkKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKCiAgICAnZXNjYXBlSFRNTCcgOiBmdW5jdGlvbih0ZXh0KXsKICAgICAgcmV0dXJuICQoIjxkaXY+IikudGV4dCh0ZXh0KS5odG1sKCk7CiAgICB9LAoKICAgICdhY3RpdmVLZXlib2FyZCcgOiBmdW5jdGlvbigkbGlzdCl7CiAgICAgIHZhciB0aGF0ID0gdGhpczsKCiAgICAgICRsaXN0Lm9uKCdmb2N1cycsIGZ1bmN0aW9uKCl7CiAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnbXMtZm9jdXMnKTsKICAgICAgfSkKICAgICAgLm9uKCdibHVyJywgZnVuY3Rpb24oKXsKICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdtcy1mb2N1cycpOwogICAgICB9KQogICAgICAub24oJ2tleWRvd24nLCBmdW5jdGlvbihlKXsKICAgICAgICBzd2l0Y2ggKGUud2hpY2gpIHsKICAgICAgICAgIGNhc2UgNDA6CiAgICAgICAgICBjYXNlIDM4OgogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgIHRoYXQubW92ZUhpZ2hsaWdodCgkKHRoaXMpLCAoZS53aGljaCA9PT0gMzgpID8gLTEgOiAxKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgY2FzZSAzNzoKICAgICAgICAgIGNhc2UgMzk6CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgdGhhdC5zd2l0Y2hMaXN0KCRsaXN0KTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICBpZih0aGF0LiRlbGVtZW50LmlzKCdbdGFiaW5kZXhdJykpewogICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICB2YXIgdGFiaW5kZXggPSBwYXJzZUludCh0aGF0LiRlbGVtZW50LmF0dHIoJ3RhYmluZGV4JyksIDEwKTsKICAgICAgICAgICAgICB0YWJpbmRleCA9IChlLnNoaWZ0S2V5KSA/IHRhYmluZGV4LTEgOiB0YWJpbmRleCsxOwogICAgICAgICAgICAgICQoJ1t0YWJpbmRleD0iJysodGFiaW5kZXgpKyciXScpLmZvY3VzKCk7CiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICBpZihlLnNoaWZ0S2V5KXsKICAgICAgICAgICAgICAgIHRoYXQuJGVsZW1lbnQudHJpZ2dlcignZm9jdXMnKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYoJC5pbkFycmF5KGUud2hpY2gsIHRoYXQub3B0aW9ucy5rZXlTZWxlY3QpID4gLTEpewogICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgIHRoYXQuc2VsZWN0SGlnaGxpZ2h0ZWQoJGxpc3QpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9LAoKICAgICdtb3ZlSGlnaGxpZ2h0JzogZnVuY3Rpb24oJGxpc3QsIGRpcmVjdGlvbil7CiAgICAgIHZhciAkZWxlbXMgPSAkbGlzdC5maW5kKHRoaXMuZWxlbXNTZWxlY3RvciksCiAgICAgICAgICAkY3VyckVsZW0gPSAkZWxlbXMuZmlsdGVyKCcubXMtaG92ZXInKSwKICAgICAgICAgICRuZXh0RWxlbSA9IG51bGwsCiAgICAgICAgICBlbGVtSGVpZ2h0ID0gJGVsZW1zLmZpcnN0KCkub3V0ZXJIZWlnaHQoKSwKICAgICAgICAgIGNvbnRhaW5lckhlaWdodCA9ICRsaXN0LmhlaWdodCgpLAogICAgICAgICAgY29udGFpbmVyU2VsZWN0b3IgPSAnIycrdGhpcy4kY29udGFpbmVyLnByb3AoJ2lkJyk7CgogICAgICAkZWxlbXMucmVtb3ZlQ2xhc3MoJ21zLWhvdmVyJyk7CiAgICAgIGlmIChkaXJlY3Rpb24gPT09IDEpeyAvLyBET1dOCgogICAgICAgICRuZXh0RWxlbSA9ICRjdXJyRWxlbS5uZXh0QWxsKHRoaXMuZWxlbXNTZWxlY3RvcikuZmlyc3QoKTsKICAgICAgICBpZiAoJG5leHRFbGVtLmxlbmd0aCA9PT0gMCl7CiAgICAgICAgICB2YXIgJG9wdGdyb3VwVWwgPSAkY3VyckVsZW0ucGFyZW50KCk7CgogICAgICAgICAgaWYgKCRvcHRncm91cFVsLmhhc0NsYXNzKCdtcy1vcHRncm91cCcpKXsKICAgICAgICAgICAgdmFyICRvcHRncm91cExpID0gJG9wdGdyb3VwVWwucGFyZW50KCksCiAgICAgICAgICAgICAgICAkbmV4dE9wdGdyb3VwTGkgPSAkb3B0Z3JvdXBMaS5uZXh0KCc6dmlzaWJsZScpOwoKICAgICAgICAgICAgaWYgKCRuZXh0T3B0Z3JvdXBMaS5sZW5ndGggPiAwKXsKICAgICAgICAgICAgICAkbmV4dEVsZW0gPSAkbmV4dE9wdGdyb3VwTGkuZmluZCh0aGlzLmVsZW1zU2VsZWN0b3IpLmZpcnN0KCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgJG5leHRFbGVtID0gJGVsZW1zLmZpcnN0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRuZXh0RWxlbSA9ICRlbGVtcy5maXJzdCgpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09IC0xKXsgLy8gVVAKCiAgICAgICAgJG5leHRFbGVtID0gJGN1cnJFbGVtLnByZXZBbGwodGhpcy5lbGVtc1NlbGVjdG9yKS5maXJzdCgpOwogICAgICAgIGlmICgkbmV4dEVsZW0ubGVuZ3RoID09PSAwKXsKICAgICAgICAgIHZhciAkb3B0Z3JvdXBVbCA9ICRjdXJyRWxlbS5wYXJlbnQoKTsKCiAgICAgICAgICBpZiAoJG9wdGdyb3VwVWwuaGFzQ2xhc3MoJ21zLW9wdGdyb3VwJykpewogICAgICAgICAgICB2YXIgJG9wdGdyb3VwTGkgPSAkb3B0Z3JvdXBVbC5wYXJlbnQoKSwKICAgICAgICAgICAgICAgICRwcmV2T3B0Z3JvdXBMaSA9ICRvcHRncm91cExpLnByZXYoJzp2aXNpYmxlJyk7CgogICAgICAgICAgICBpZiAoJHByZXZPcHRncm91cExpLmxlbmd0aCA+IDApewogICAgICAgICAgICAgICRuZXh0RWxlbSA9ICRwcmV2T3B0Z3JvdXBMaS5maW5kKHRoaXMuZWxlbXNTZWxlY3RvcikubGFzdCgpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICRuZXh0RWxlbSA9ICRlbGVtcy5sYXN0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRuZXh0RWxlbSA9ICRlbGVtcy5sYXN0KCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmICgkbmV4dEVsZW0ubGVuZ3RoID4gMCl7CiAgICAgICAgJG5leHRFbGVtLmFkZENsYXNzKCdtcy1ob3ZlcicpOwogICAgICAgIHZhciBzY3JvbGxUbyA9ICRsaXN0LnNjcm9sbFRvcCgpICsgJG5leHRFbGVtLnBvc2l0aW9uKCkudG9wIC0gCiAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVySGVpZ2h0IC8gMiArIGVsZW1IZWlnaHQgLyAyOwoKICAgICAgICAkbGlzdC5zY3JvbGxUb3Aoc2Nyb2xsVG8pOwogICAgICB9CiAgICB9LAoKICAgICdzZWxlY3RIaWdobGlnaHRlZCcgOiBmdW5jdGlvbigkbGlzdCl7CiAgICAgIHZhciAkZWxlbXMgPSAkbGlzdC5maW5kKHRoaXMuZWxlbXNTZWxlY3RvciksCiAgICAgICAgICAkaGlnaGxpZ2h0ZWRFbGVtID0gJGVsZW1zLmZpbHRlcignLm1zLWhvdmVyJykuZmlyc3QoKTsKCiAgICAgIGlmICgkaGlnaGxpZ2h0ZWRFbGVtLmxlbmd0aCA+IDApewogICAgICAgIGlmICgkbGlzdC5wYXJlbnQoKS5oYXNDbGFzcygnbXMtc2VsZWN0YWJsZScpKXsKICAgICAgICAgIHRoaXMuc2VsZWN0KCRoaWdobGlnaHRlZEVsZW0uZGF0YSgnbXMtdmFsdWUnKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuZGVzZWxlY3QoJGhpZ2hsaWdodGVkRWxlbS5kYXRhKCdtcy12YWx1ZScpKTsKICAgICAgICB9CiAgICAgICAgJGVsZW1zLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICB9CiAgICB9LAoKICAgICdzd2l0Y2hMaXN0JyA6IGZ1bmN0aW9uKCRsaXN0KXsKICAgICAgJGxpc3QuYmx1cigpOwogICAgICB0aGlzLiRjb250YWluZXIuZmluZCh0aGlzLmVsZW1zU2VsZWN0b3IpLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICBpZiAoJGxpc3QucGFyZW50KCkuaGFzQ2xhc3MoJ21zLXNlbGVjdGFibGUnKSl7CiAgICAgICAgdGhpcy4kc2VsZWN0aW9uVWwuZm9jdXMoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZm9jdXMoKTsKICAgICAgfQogICAgfSwKCiAgICAnYWN0aXZlTW91c2UnIDogZnVuY3Rpb24oJGxpc3QpewogICAgICB2YXIgdGhhdCA9IHRoaXM7CgogICAgICB0aGlzLiRjb250YWluZXIub24oJ21vdXNlZW50ZXInLCB0aGF0LmVsZW1zU2VsZWN0b3IsIGZ1bmN0aW9uKCl7CiAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcubXMtY29udGFpbmVyJykuZmluZCh0aGF0LmVsZW1zU2VsZWN0b3IpLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ21zLWhvdmVyJyk7CiAgICAgIH0pOwoKICAgICAgdGhpcy4kY29udGFpbmVyLm9uKCdtb3VzZWxlYXZlJywgdGhhdC5lbGVtc1NlbGVjdG9yLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcubXMtY29udGFpbmVyJykuZmluZCh0aGF0LmVsZW1zU2VsZWN0b3IpLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICB9KTsKICAgIH0sCgogICAgJ3JlZnJlc2gnIDogZnVuY3Rpb24oKSB7CiAgICAgIHRoaXMuZGVzdHJveSgpOwogICAgICB0aGlzLiRlbGVtZW50Lm11bHRpU2VsZWN0KHRoaXMub3B0aW9ucyk7CiAgICB9LAoKICAgICdkZXN0cm95JyA6IGZ1bmN0aW9uKCl7CiAgICAgICQoIiNtcy0iK3RoaXMuJGVsZW1lbnQuYXR0cigiaWQiKSkucmVtb3ZlKCk7CiAgICAgIHRoaXMuJGVsZW1lbnQub2ZmKCdmb2N1cycpOwogICAgICB0aGlzLiRlbGVtZW50LmNzcygncG9zaXRpb24nLCAnJykuY3NzKCdsZWZ0JywgJycpOwogICAgICB0aGlzLiRlbGVtZW50LnJlbW92ZURhdGEoJ211bHRpc2VsZWN0Jyk7CiAgICB9LAoKICAgICdzZWxlY3QnIDogZnVuY3Rpb24odmFsdWUsIG1ldGhvZCl7CiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKXsgdmFsdWUgPSBbdmFsdWVdOyB9CgogICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICBtcyA9IHRoaXMuJGVsZW1lbnQsCiAgICAgICAgICBtc0lkcyA9ICQubWFwKHZhbHVlLCBmdW5jdGlvbih2YWwpeyByZXR1cm4odGhhdC5zYW5pdGl6ZSh2YWwpKTsgfSksCiAgICAgICAgICBzZWxlY3RhYmxlcyA9IHRoaXMuJHNlbGVjdGFibGVVbC5maW5kKCcjJyArIG1zSWRzLmpvaW4oJy1zZWxlY3RhYmxlLCAjJykrJy1zZWxlY3RhYmxlJykuZmlsdGVyKCc6bm90KC4nK3RoYXQub3B0aW9ucy5kaXNhYmxlZENsYXNzKycpJyksCiAgICAgICAgICBzZWxlY3Rpb25zID0gdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnIycgKyBtc0lkcy5qb2luKCctc2VsZWN0aW9uLCAjJykgKyAnLXNlbGVjdGlvbicpLmZpbHRlcignOm5vdCguJyt0aGF0Lm9wdGlvbnMuZGlzYWJsZWRDbGFzcysnKScpLAogICAgICAgICAgb3B0aW9ucyA9IG1zLmZpbmQoJ29wdGlvbjpub3QoOmRpc2FibGVkKScpLmZpbHRlcihmdW5jdGlvbigpeyByZXR1cm4oJC5pbkFycmF5KHRoaXMudmFsdWUsIHZhbHVlKSA+IC0xKTsgfSk7CgogICAgICBpZiAobWV0aG9kID09PSAnaW5pdCcpewogICAgICAgIHNlbGVjdGFibGVzID0gdGhpcy4kc2VsZWN0YWJsZVVsLmZpbmQoJyMnICsgbXNJZHMuam9pbignLXNlbGVjdGFibGUsICMnKSsnLXNlbGVjdGFibGUnKSwKICAgICAgICBzZWxlY3Rpb25zID0gdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnIycgKyBtc0lkcy5qb2luKCctc2VsZWN0aW9uLCAjJykgKyAnLXNlbGVjdGlvbicpOwogICAgICB9CgogICAgICBpZiAoc2VsZWN0YWJsZXMubGVuZ3RoID4gMCl7CiAgICAgICAgc2VsZWN0YWJsZXMuYWRkQ2xhc3MoJ21zLXNlbGVjdGVkJykuaGlkZSgpOwogICAgICAgIHNlbGVjdGlvbnMuYWRkQ2xhc3MoJ21zLXNlbGVjdGVkJykuc2hvdygpOwoKICAgICAgICBvcHRpb25zLnByb3AoJ3NlbGVjdGVkJywgdHJ1ZSk7CgogICAgICAgIHRoYXQuJGNvbnRhaW5lci5maW5kKHRoYXQuZWxlbXNTZWxlY3RvcikucmVtb3ZlQ2xhc3MoJ21zLWhvdmVyJyk7CgogICAgICAgIHZhciBzZWxlY3RhYmxlT3B0Z3JvdXBzID0gdGhhdC4kc2VsZWN0YWJsZVVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgaWYgKHNlbGVjdGFibGVPcHRncm91cHMubGVuZ3RoID4gMCl7CiAgICAgICAgICBzZWxlY3RhYmxlT3B0Z3JvdXBzLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgdmFyIHNlbGVjdGFibGVzTGkgPSAkKHRoaXMpLmZpbmQoJy5tcy1lbGVtLXNlbGVjdGFibGUnKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGFibGVzTGkubGVuZ3RoID09PSBzZWxlY3RhYmxlc0xpLmZpbHRlcignLm1zLXNlbGVjdGVkJykubGVuZ3RoKXsKICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5tcy1vcHRncm91cC1sYWJlbCcpLmhpZGUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CgogICAgICAgICAgdmFyIHNlbGVjdGlvbk9wdGdyb3VwcyA9IHRoYXQuJHNlbGVjdGlvblVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgICBzZWxlY3Rpb25PcHRncm91cHMuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICB2YXIgc2VsZWN0aW9uc0xpID0gJCh0aGlzKS5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGlvbnNMaS5maWx0ZXIoJy5tcy1zZWxlY3RlZCcpLmxlbmd0aCA+IDApewogICAgICAgICAgICAgICQodGhpcykuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuc2hvdygpOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5rZWVwT3JkZXIgJiYgbWV0aG9kICE9PSAnaW5pdCcpewogICAgICAgICAgICB2YXIgc2VsZWN0aW9uTGlMYXN0ID0gdGhhdC4kc2VsZWN0aW9uVWwuZmluZCgnLm1zLXNlbGVjdGVkJyk7CiAgICAgICAgICAgIGlmKChzZWxlY3Rpb25MaUxhc3QubGVuZ3RoID4gMSkgJiYgKHNlbGVjdGlvbkxpTGFzdC5sYXN0KCkuZ2V0KDApICE9IHNlbGVjdGlvbnMuZ2V0KDApKSkgewogICAgICAgICAgICAgIHNlbGVjdGlvbnMuaW5zZXJ0QWZ0ZXIoc2VsZWN0aW9uTGlMYXN0Lmxhc3QoKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKG1ldGhvZCAhPT0gJ2luaXQnKXsKICAgICAgICAgIG1zLnRyaWdnZXIoJ2NoYW5nZScpOwogICAgICAgICAgaWYgKHR5cGVvZiB0aGF0Lm9wdGlvbnMuYWZ0ZXJTZWxlY3QgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgdGhhdC5vcHRpb25zLmFmdGVyU2VsZWN0LmNhbGwodGhpcywgdmFsdWUpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKCiAgICAnZGVzZWxlY3QnIDogZnVuY3Rpb24odmFsdWUpewogICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyl7IHZhbHVlID0gW3ZhbHVlXTsgfQoKICAgICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICAgICAgbXMgPSB0aGlzLiRlbGVtZW50LAogICAgICAgICAgbXNJZHMgPSAkLm1hcCh2YWx1ZSwgZnVuY3Rpb24odmFsKXsgcmV0dXJuKHRoYXQuc2FuaXRpemUodmFsKSk7IH0pLAogICAgICAgICAgc2VsZWN0YWJsZXMgPSB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnIycgKyBtc0lkcy5qb2luKCctc2VsZWN0YWJsZSwgIycpKyctc2VsZWN0YWJsZScpLAogICAgICAgICAgc2VsZWN0aW9ucyA9IHRoaXMuJHNlbGVjdGlvblVsLmZpbmQoJyMnICsgbXNJZHMuam9pbignLXNlbGVjdGlvbiwgIycpKyctc2VsZWN0aW9uJykuZmlsdGVyKCcubXMtc2VsZWN0ZWQnKS5maWx0ZXIoJzpub3QoLicrdGhhdC5vcHRpb25zLmRpc2FibGVkQ2xhc3MrJyknKSwKICAgICAgICAgIG9wdGlvbnMgPSBtcy5maW5kKCdvcHRpb24nKS5maWx0ZXIoZnVuY3Rpb24oKXsgcmV0dXJuKCQuaW5BcnJheSh0aGlzLnZhbHVlLCB2YWx1ZSkgPiAtMSk7IH0pOwoKICAgICAgaWYgKHNlbGVjdGlvbnMubGVuZ3RoID4gMCl7CiAgICAgICAgc2VsZWN0YWJsZXMucmVtb3ZlQ2xhc3MoJ21zLXNlbGVjdGVkJykuc2hvdygpOwogICAgICAgIHNlbGVjdGlvbnMucmVtb3ZlQ2xhc3MoJ21zLXNlbGVjdGVkJykuaGlkZSgpOwogICAgICAgIG9wdGlvbnMucHJvcCgnc2VsZWN0ZWQnLCBmYWxzZSk7CgogICAgICAgIHRoYXQuJGNvbnRhaW5lci5maW5kKHRoYXQuZWxlbXNTZWxlY3RvcikucmVtb3ZlQ2xhc3MoJ21zLWhvdmVyJyk7CgogICAgICAgIHZhciBzZWxlY3RhYmxlT3B0Z3JvdXBzID0gdGhhdC4kc2VsZWN0YWJsZVVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgaWYgKHNlbGVjdGFibGVPcHRncm91cHMubGVuZ3RoID4gMCl7CiAgICAgICAgICBzZWxlY3RhYmxlT3B0Z3JvdXBzLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgdmFyIHNlbGVjdGFibGVzTGkgPSAkKHRoaXMpLmZpbmQoJy5tcy1lbGVtLXNlbGVjdGFibGUnKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGFibGVzTGkuZmlsdGVyKCc6bm90KC5tcy1zZWxlY3RlZCknKS5sZW5ndGggPiAwKXsKICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5tcy1vcHRncm91cC1sYWJlbCcpLnNob3coKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CgogICAgICAgICAgdmFyIHNlbGVjdGlvbk9wdGdyb3VwcyA9IHRoYXQuJHNlbGVjdGlvblVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgICBzZWxlY3Rpb25PcHRncm91cHMuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICB2YXIgc2VsZWN0aW9uc0xpID0gJCh0aGlzKS5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGlvbnNMaS5maWx0ZXIoJy5tcy1zZWxlY3RlZCcpLmxlbmd0aCA9PT0gMCl7CiAgICAgICAgICAgICAgJCh0aGlzKS5maW5kKCcubXMtb3B0Z3JvdXAtbGFiZWwnKS5oaWRlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICBtcy50cmlnZ2VyKCdjaGFuZ2UnKTsKICAgICAgICBpZiAodHlwZW9mIHRoYXQub3B0aW9ucy5hZnRlckRlc2VsZWN0ID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICB0aGF0Lm9wdGlvbnMuYWZ0ZXJEZXNlbGVjdC5jYWxsKHRoaXMsIHZhbHVlKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCgogICAgJ3NlbGVjdF9hbGwnIDogZnVuY3Rpb24oKXsKICAgICAgdmFyIG1zID0gdGhpcy4kZWxlbWVudCwKICAgICAgICAgIHZhbHVlcyA9IG1zLnZhbCgpOwoKICAgICAgbXMuZmluZCgnb3B0aW9uOm5vdCgiOmRpc2FibGVkIiknKS5wcm9wKCdzZWxlY3RlZCcsIHRydWUpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLWVsZW0tc2VsZWN0YWJsZScpLmZpbHRlcignOm5vdCguJyt0aGlzLm9wdGlvbnMuZGlzYWJsZWRDbGFzcysnKScpLmFkZENsYXNzKCdtcy1zZWxlY3RlZCcpLmhpZGUoKTsKICAgICAgdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuc2hvdygpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuaGlkZSgpOwogICAgICB0aGlzLiRzZWxlY3Rpb25VbC5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKS5maWx0ZXIoJzpub3QoLicrdGhpcy5vcHRpb25zLmRpc2FibGVkQ2xhc3MrJyknKS5hZGRDbGFzcygnbXMtc2VsZWN0ZWQnKS5zaG93KCk7CiAgICAgIHRoaXMuJHNlbGVjdGlvblVsLmZvY3VzKCk7CiAgICAgIG1zLnRyaWdnZXIoJ2NoYW5nZScpOwogICAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5hZnRlclNlbGVjdCA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIHZhciBzZWxlY3RlZFZhbHVlcyA9ICQuZ3JlcChtcy52YWwoKSwgZnVuY3Rpb24oaXRlbSl7CiAgICAgICAgICByZXR1cm4gJC5pbkFycmF5KGl0ZW0sIHZhbHVlcykgPCAwOwogICAgICAgIH0pOwogICAgICAgIHRoaXMub3B0aW9ucy5hZnRlclNlbGVjdC5jYWxsKHRoaXMsIHNlbGVjdGVkVmFsdWVzKTsKICAgICAgfQogICAgfSwKCiAgICAnZGVzZWxlY3RfYWxsJyA6IGZ1bmN0aW9uKCl7CiAgICAgIHZhciBtcyA9IHRoaXMuJGVsZW1lbnQsCiAgICAgICAgICB2YWx1ZXMgPSBtcy52YWwoKTsKCiAgICAgIG1zLmZpbmQoJ29wdGlvbicpLnByb3AoJ3NlbGVjdGVkJywgZmFsc2UpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLWVsZW0tc2VsZWN0YWJsZScpLnJlbW92ZUNsYXNzKCdtcy1zZWxlY3RlZCcpLnNob3coKTsKICAgICAgdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuaGlkZSgpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuc2hvdygpOwogICAgICB0aGlzLiRzZWxlY3Rpb25VbC5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKS5yZW1vdmVDbGFzcygnbXMtc2VsZWN0ZWQnKS5oaWRlKCk7CiAgICAgIHRoaXMuJHNlbGVjdGFibGVVbC5mb2N1cygpOwogICAgICBtcy50cmlnZ2VyKCdjaGFuZ2UnKTsKICAgICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMuYWZ0ZXJEZXNlbGVjdCA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIHRoaXMub3B0aW9ucy5hZnRlckRlc2VsZWN0LmNhbGwodGhpcywgdmFsdWVzKTsKICAgICAgfQogICAgfSwKCiAgICBzYW5pdGl6ZTogZnVuY3Rpb24odmFsdWUpewogICAgICB2YXIgaGFzaCA9IDAsIGksIGNoYXJhY3RlcjsKICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PSAwKSByZXR1cm4gaGFzaDsKICAgICAgdmFyIGxzID0gMDsKICAgICAgZm9yIChpID0gMCwgbHMgPSB2YWx1ZS5sZW5ndGg7IGkgPCBsczsgaSsrKSB7CiAgICAgICAgY2hhcmFjdGVyICA9IHZhbHVlLmNoYXJDb2RlQXQoaSk7CiAgICAgICAgaGFzaCAgPSAoKGhhc2g8PDUpLWhhc2gpK2NoYXJhY3RlcjsKICAgICAgICBoYXNoIHw9IDA7IC8vIENvbnZlcnQgdG8gMzJiaXQgaW50ZWdlcgogICAgICB9CiAgICAgIHJldHVybiBoYXNoOwogICAgfQogIH07CgogIC8qIE1VTFRJU0VMRUNUIFBMVUdJTiBERUZJTklUSU9OCiAgICogPT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiAgJC5mbi5tdWx0aVNlbGVjdCA9IGZ1bmN0aW9uICgpIHsKICAgIHZhciBvcHRpb24gPSBhcmd1bWVudHNbMF0sCiAgICAgICAgYXJncyA9IGFyZ3VtZW50czsKCiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgdmFyICR0aGlzID0gJCh0aGlzKSwKICAgICAgICAgIGRhdGEgPSAkdGhpcy5kYXRhKCdtdWx0aXNlbGVjdCcpLAogICAgICAgICAgb3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCAkLmZuLm11bHRpU2VsZWN0LmRlZmF1bHRzLCAkdGhpcy5kYXRhKCksIHR5cGVvZiBvcHRpb24gPT09ICdvYmplY3QnICYmIG9wdGlvbik7CgogICAgICBpZiAoIWRhdGEpeyAkdGhpcy5kYXRhKCdtdWx0aXNlbGVjdCcsIChkYXRhID0gbmV3IE11bHRpU2VsZWN0KHRoaXMsIG9wdGlvbnMpKSk7IH0KCiAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnc3RyaW5nJyl7CiAgICAgICAgZGF0YVtvcHRpb25dKGFyZ3NbMV0pOwogICAgICB9IGVsc2UgewogICAgICAgIGRhdGEuaW5pdCgpOwogICAgICB9CiAgICB9KTsKICB9OwoKICAkLmZuLm11bHRpU2VsZWN0LmRlZmF1bHRzID0gewogICAga2V5U2VsZWN0OiBbMzJdLAogICAgc2VsZWN0YWJsZU9wdGdyb3VwOiBmYWxzZSwKICAgIGRpc2FibGVkQ2xhc3MgOiAnZGlzYWJsZWQnLAogICAgZGJsQ2xpY2sgOiBmYWxzZSwKICAgIGtlZXBPcmRlcjogZmFsc2UsCiAgICBjc3NDbGFzczogJycKICB9OwoKICAkLmZuLm11bHRpU2VsZWN0LkNvbnN0cnVjdG9yID0gTXVsdGlTZWxlY3Q7CgogICQuZm4uaW5zZXJ0QXQgPSBmdW5jdGlvbihpbmRleCwgJHBhcmVudCkgewogICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgaWYgKGluZGV4ID09PSAwKSB7CiAgICAgICAgJHBhcmVudC5wcmVwZW5kKHRoaXMpOwogICAgICB9IGVsc2UgewogICAgICAgICRwYXJlbnQuY2hpbGRyZW4oKS5lcShpbmRleCAtIDEpLmFmdGVyKHRoaXMpOwogICAgICB9CiAgICB9KTsKfTsKCn0od2luZG93LmpRdWVyeSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsSingleSelect/lisefd.MAMSGroupsSingleSelect.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBMSVNFIC0gTGlzdCBJdCBTcGVjaWFsIEVkaXRpb24KIyBWZXJzaW9uIDEuMgojIEEgZm9yayBvZiBMaXN0STIKIyBtYWludGFpbmVkIGJ5IEZlcm5hbmRvIE1vcmdhZG8gQUtBIEpvIE1vcmcKIyBzaW5jZSAyMDE1CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBPcmlnaW5hbCBBdXRob3I6IEJlbiBNYWxlbiwgPGJlbkBjb25jZXB0ZmFjdG9yeS5jb20uYXU+CiMgQ28tTWFpbnRhaW5lcjogU2ltb24gUmFkZm9yZCwgPHNpbW9uQGNvbmNlcHRmYWN0b3J5LmNvbS5hdT4KIyBXZWI6IHd3dy5jb25jZXB0ZmFjdG9yeS5jb20uYXUKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgTWFpbnRhaW5lciBzaW5jZSAyMDExIHVwIHRvIDIwMTQ6IEpvbmF0aGFuIFNjaG1pZCwgPGhpQGpvbmF0aGFuc2NobWlkLmRlPgojIFdlYjogd3d3LmpvbmF0aGFuc2NobWlkLmRlCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFNvbWUgd2Fja29zIHN0YXJ0ZWQgZGVzdHJveWluZyBzdHVmZiBzaW5jZSAyMDEyIGFuZCBzdG9wcGVkIGF0IDIwMTQ6CiMKIyBUYXBpbyBMw7Z5dHR5LCA8dGFwc2FAb3JhbmdlLW1lZGlhLmZpPgojIFdlYjogd3d3Lm9yYW5nZS1tZWRpYS5maQojCiMgR29yYW4gSWxpYywgPHVuaXF1M2VAZ21haWwuY29tPgojIFdlYjogd3d3LmljaC1tYWNoLWRhcy5hdAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBMSVNFIGlzIGEgQ01TIE1hZGUgU2ltcGxlIG1vZHVsZSB0aGF0IGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gY3JlYXRlCiMgbXVsdGlwbGUgbGlzdHMgdGhyb3VnaG91dCBhIHNpdGUuIEl0IGNhbiBiZSBkdXBsaWNhdGVkIGFuZCBnaXZlbiBmcmllbmRseQojIG5hbWVzIGZvciBlYXNpZXIgY2xpZW50IG1haW50ZW5hbmNlLgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIExJU0UKIyBMSVNFIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgTElTRSBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBFTkRfTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpjbGFzcyBsaXNlZmRfTUFNU0dyb3Vwc1NpbmdsZVNlbGVjdCBleHRlbmRzIExJU0VGaWVsZGRlZkJhc2UKewogIHByaXZhdGUgJF9vcHRzID0gW107CiAgCiAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCYkZGJfaW5mbywgJGNhbGxlcl9vYmogPSBOVUxMKQogIHsKICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJGRiX2luZm8sICRjYWxsZXJfb2JqKTsKICAgICR0aGlzLT5TZXRGcmllbmRseVR5cGUoICR0aGlzLT5Nb2RMYW5nKCAnZmllbGRkZWZfJyAuICR0aGlzLT5HZXRUeXBlKCkgKSApOwogICAgXGNtc191dGlsczo6Z2V0X3NtYXJ0eSgpLT5hc3NpZ24oJ2xpc2UnLCBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdMSVNFJykpOwogIH0KICAKICBzdGF0aWMgcHVibGljIGZ1bmN0aW9uIEdldE1vZHVsZURlcHMoKSAKICB7IAogICAgcmV0dXJuIFsKICAgICAgICAgICAgICAgICAgJ01BTVMnID0+ICcxLjAuYicKICAgIF07CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBHZXRIZWFkZXJIVE1MKCkKICB7CiAgICAkdG1wbCA9ICcnOwogICAgaWYoICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgndHlwZScsICdEcm9wZG93bicpID09ICdNdWx0aVNlbGVjdCcgKQogICAgewogICAgICAgICR0bXBsID0gPDw8RU9UCjxsaW5rIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIGhyZWY9InskdGhpcy0+R2V0VVJMUGF0aCgpfS9qcXVlcnkubXVsdGktc2VsZWN0LmNzcyIgLz4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ieyR0aGlzLT5HZXRVUkxQYXRoKCl9L2pxdWVyeS5tdWx0aS1zZWxlY3QuanMiPjwvc2NyaXB0PgpFT1Q7CiAgICB9CiAgICByZXR1cm4gJHRtcGw7CiAgfQogIAogIC8vIGdldCBhdmFpbGFibGUgZ3JvdXBzIGZyb20gTUFNUyBtb2R1bGUKICBwdWJsaWMgZnVuY3Rpb24gR2V0TUFNU0dyb3VwcygpCiAgewogICAgJG1hbXMgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNQU1TJyk7CiAgICAKICAgIGlmKGlzX29iamVjdCgkbWFtcykpCiAgICB7CiAgICAgICRncm91cHMgPSAkbWFtcy0+R2V0R3JvdXBMaXN0RnVsbCgpOwogICAgICAKICAgICAgaWYoJGdyb3VwcykgCiAgICAgIHsKICAgICAgICAkb3B0aW9ucyA9IGFycmF5KCk7CiAgICAgICAgCiAgICAgICAgZm9yZWFjaCgkZ3JvdXBzIGFzICRvcHRpb24pIAogICAgICAgIHsKICAgICAgICAgICRvcHRpb25zWyRvcHRpb25bJ2lkJ11dID0gJG9wdGlvblsnZ3JvdXBuYW1lJ107CiAgICAgICAgfQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gJG9wdGlvbnM7CiAgICB9CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBHZXRNQU1TUHJvcGVydGllcygpCiAgewogICAgJG1hbXMgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdNQU1TJyk7CiAgICAkbWFtc19wcm9wcyA9ICRtYW1zLT5HZXRQcm9wZXJ0eURlZm5zKCk7CiAgICAKICAgIC8vIHJlbW92ZSBzZWxmcmVnIHByb3AKICAgIGlmKCBpc3NldCgkbWFtc19wcm9wc1snX19NQU1TUkVHJ10pICkgdW5zZXQoJG1hbXNfcHJvcHNbJ19fTUFNU1JFRyddKTsKICAgIAogICAgJG1hbXNfb3B0aW9ucyA9IGFycmF5KCk7CiAgICAkbWFtc19vcHRpb25zYiA9IGFycmF5KCk7CiAgICBmb3JlYWNoKCRtYW1zX3Byb3BzIGFzICRvbmUpJG1hbXNfb3B0aW9uc1sgJG9uZVsnbmFtZSddIF0gPSAkb25lWydwcm9tcHQnXTsKICAgIGFzb3J0KCRtYW1zX29wdGlvbnMpOwogICAgJG1hbXNfb3B0aW9uc2JbLTFdID0gbGFuZygnbm9uZScpOwogICAgJG1hbXNfb3B0aW9uc2JbMF0gPSAkbWFtcy0+TGFuZygncHJvbXB0X3VzZXJuYW1lJyk7CiAgICAkbWFtc19vcHRpb25zID0gYXJyYXlfbWVyZ2UoJG1hbXNfb3B0aW9uc2IsICRtYW1zX29wdGlvbnMpOwogICAgCiAgICByZXR1cm4gJG1hbXNfb3B0aW9uczsKICB9IAogICAgIAogIHB1YmxpYyBmdW5jdGlvbiBHZXRPcHRpb25zKCkgCiAgewogICAgJGxpc2UgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdMSVNFJyk7CiAgCiAgICAkdGhpcy0+X29wdHNbJ3R5cGUnXSA9ICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgndHlwZScsICdNdWx0aVNlbGVjdCcpOwogICAgJHRoaXMtPl9vcHRzWyd0eXBlcyddID0gYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdEcm9wZG93bicgICAgICAgICAgPT4gJGxpc2UtPk1vZExhbmcoJ2ZpZWxkZGVmX0Ryb3Bkb3duJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdSYWRpb0dyb3VwJyAgICAgICAgPT4gJGxpc2UtPk1vZExhbmcoJ2ZpZWxkZGVmX1JhZGlvR3JvdXAnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0pRdWVyeU11bHRpU2VsZWN0JyA9PiAkbGlzZS0+TW9kTGFuZygnZmllbGRkZWZfSlF1ZXJ5TXVsdGlTZWxlY3QnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIAogICAgcmV0dXJuICR0aGlzLT5fb3B0czsKICB9CiAgCiAgLy8gZ2V0IGxpc3Qgb2YgdXNlcnMgZnJvbSBNQU1TIG1vZHVsZSBiYXNlZCBvbiBzZWxlY3RlZCBncm91cAogIHB1YmxpYyBmdW5jdGlvbiBHZXRNQU1TVXNlckxpc3QoKQogIHsgICAgCiAgICAkbWFtcyA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01BTVMnKTsKICAgIAogICAgaWYoaXNfb2JqZWN0KCRtYW1zKSkKICAgIHsKICAgICAgLy8gR2V0VXNlcnNJbkdyb3VwKCkgaXMgZGVwcmVjYXRlZCBidXQgR2V0RnVsbFVzZXJzSW5Hcm91cCgpIHNlZW1zIHRvIGhhdmUgYSBidWcsIAogICAgICAvLyBjaGFuZ2UgdGhpcyBhZnRlciBNQU1TIEJSICM4NzUzIGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvYnVnL3ZpZXcvODc1MyBpcyBjb25maXJtZWQgYW5kIGZpeGVkCiAgICAgICRncm91cHMgICAgICAgPSBleHBsb2RlKCcsJywgJHRoaXMtPkdldE9wdGlvblZhbHVlKCdtYW1zX29wdGlvbnMnKSk7CiAgICAgICRtYW1zX3Byb3AgICAgPSAkdGhpcy0+R2V0T3B0aW9uVmFsdWUoJ21hbXNfZmllbGQnKTsKICAgICAgJG1hbXNfcHJvcDIgICA9ICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgnbWFtc19maWVsZDInKTsKICAgICAgJHVzZV91c2VybmFtZSA9ICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgndXNlX3VzZXJuYW1lJyk7CiAgICAgICR1c2VfdWlkICAgICAgPSAkdGhpcy0+R2V0T3B0aW9uVmFsdWUoJ3VzZV91aWQnKTsKICAgICAgJHNlcGFyYXRvciAgICA9ICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgnc2VwYXJhdG9yJyk7CiAgICAgICR1c2VycyAgICAgICAgPSBhcnJheSgpOwogICAgICAKICAgICAgZm9yZWFjaCgkZ3JvdXBzIGFzICRncm91cCkKICAgICAgewogICAgICAgICR0bXB1c2VycyA9ICRtYW1zLT5HZXRGdWxsVXNlcnNJbkdyb3VwKCRncm91cCk7CiAgICAgICAgCiAgICAgICAgZm9yZWFjaCgkdG1wdXNlcnMgYXMgJG9uZSkKICAgICAgICB7CiAgICAgICAgICBpZiggYXJyYXlfa2V5X2V4aXN0cygkb25lWydpZCddLCAkdXNlcnMpICkgY29udGludWU7CiAgICAgICAgICAKICAgICAgICAgICR1aWQgPSAoYm9vbCkkdXNlX3VpZCA/ICdbJyAuICRvbmVbJ2lkJ10gLiAnXSAnIDogJyc7IAogICAgICAgICAgCiAgICAgICAgICAjbm93IGxldHMgYnVpbGQgdGhlIHNlbGVjdCAgICAgICAgICAKICAgICAgICAgIGlmKCR1c2VfdXNlcm5hbWUpCiAgICAgICAgICB7CiAgICAgICAgICAgICR1c2Vyc1skb25lWydpZCddXSA9ICR1aWQgLiAkb25lWyd1c2VybmFtZSddOwogICAgICAgICAgfQogICAgICAgICAgZWxzZQogICAgICAgICAgewogICAgICAgICAgICBpZiggJG1hbXNfcHJvcCA9PSBOVUxMIHx8IChpc19udW1lcmljKCRtYW1zX3Byb3ApICYmICRtYW1zX3Byb3AgPT0gLTEpICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICR1c2Vyc1skb25lWydpZCddXSA9ICR1aWQgLiAkb25lWyd1c2VybmFtZSddOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICR1c2Vyc1skb25lWydpZCddXSA9ICR1aWQ7CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgaWYoaXNfbnVtZXJpYygkbWFtc19wcm9wKSAmJiAkbWFtc19wcm9wID09IDApCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHVzZXJzWyRvbmVbJ2lkJ11dIC49ICRvbmVbJ3VzZXJuYW1lJ107CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkdXNlcnNbJG9uZVsnaWQnXV0gLj0gJG1hbXMtPkdldFVzZXJQcm9wZXJ0eUZ1bGwoJG1hbXNfcHJvcCwgJG9uZVsnaWQnXSk7CiAgICAgICAgICAgICAgfQogICAgIAogICAgICAgICAgICAgIGlmKCBpc19udW1lcmljKCRtYW1zX3Byb3AyKSAmJiAkbWFtc19wcm9wMiA9PSAwICYmICEoaXNfaW50KCRtYW1zX3Byb3ApICYmICRtYW1zX3Byb3AgPCAxKSApCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHVzZXJzWyRvbmVbJ2lkJ11dIC49ICRzZXBhcmF0b3IgLiAkb25lWyd1c2VybmFtZSddOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlaWYoICEoaXNfaW50KCRtYW1zX3Byb3AyKSAmJiAkbWFtc19wcm9wMiA9PSAtMSkgKQogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICR1c2Vyc1skb25lWydpZCddXSAuPSAkc2VwYXJhdG9yIC4gJG1hbXMtPkdldFVzZXJQcm9wZXJ0eUZ1bGwoJG1hbXNfcHJvcDIsICRvbmVbJ2lkJ10pOwogICAgICAgICAgICAgIH0gCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgIH0KICAgICAgCiAgICAgIGFzb3J0KCR1c2Vycyk7CiAgICAgIAogICAgICByZXR1cm4gJHVzZXJzOwogICAgfQogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gUmVuZGVyRm9yQWRtaW5MaXN0aW5nKCRpZCwgJHJldHVybmlkKQogIHsKICAgICR1c2VyID0gJyc7CiAgICAkbWFtcyA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01BTVMnKTsKICAgIAogICAgaWYoaXNfb2JqZWN0KCRtYW1zKSkKICAgIHsKICAgICAgJHZhbHVlID0gJHRoaXMtPkdldFZhbHVlKCk7CiAgICAgICR1c2VyID0gJG1hbXMtPkdldFVzZXJOYW1lKCR2YWx1ZVswXSk7CiAgICB9CiAgICAKICAgICRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKICAgICRzbWFydHktPmFzc2lnbigndXNlcicsICR1c2VyKTsKICAgIHJldHVybiBwYXJlbnQ6OlJlbmRlckZvckFkbWluTGlzdGluZygkaWQsICRyZXR1cm5pZCk7CiAgfQogIAp9Ly8gZW5kIG9mIGNsYXNzCj8+]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsSingleSelect/list.MAMSGroupsSingleSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyR1c2VyfQ==]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSGroupsSingleSelect/output.MAMSGroupsSingleSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmaWVsZGRlZi5uYW1lfTogeyRmaWVsZGRlZi52YWx1ZX0=]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSMultiSelect</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSMultiSelect/admin.MAMSMultiSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRvcHRzID0gJGZpZWxkZGVmLT5HZXRPcHRpb25zKCl9IAp7JHNlbF9ncm91cHMgPSBleHBsb2RlKCcsJywgJGZpZWxkZGVmLT5HZXRPcHRpb25WYWx1ZSgnbWFtc19vcHRpb25zJykpfQp7JGdyb3Vwc19vcHRzID0gJGZpZWxkZGVmLT5HZXRNQU1TR3JvdXBzKCl9CnskZGVmcyA9ICRmaWVsZGRlZi0+R2V0TUFNU1Byb3BlcnRpZXMoKX0KeyRzZWxfZGVmID0gJGZpZWxkZGVmLT5HZXRPcHRpb25WYWx1ZSgnbWFtc19maWVsZCcpfQp7JHNlbF9kZWYyID0gJGZpZWxkZGVmLT5HZXRPcHRpb25WYWx1ZSgnbWFtc19maWVsZDInKX0KIAo8ZmllbGRzZXQ+CiAgPGxlZ2VuZD57bGFuZygnb3B0aW9ucycpfTwvbGVnZW5kPgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskZmllbGRkZWYtPk1vZExhbmcoJ2ZpZWxkZGVmX21hbXNfb3B0aW9ucycpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgICA8c2VsZWN0IG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tX2lucHV0W21hbXNfb3B0aW9uc11bXX0iIHNpemU9InskZ3JvdXBzX29wdHN8Y291bnR9IiBtdWx0aXBsZT4KICAgICAgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kZ3JvdXBzX29wdHMgc2VsZWN0ZWQ9JHNlbF9ncm91cHN9CiAgICAgICAgPC9zZWxlY3Q+ICAKICAgIDwvcD4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+PGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPnskZmllbGRkZWYtPk1vZExhbmcoJ2ZpZWxkZGVmX21hbXNfbXVsdGlzZWxlY3RfaGVscCcpfTwvZGl2PjwvcD4KICA8L2Rpdj4KICA8aHI+IAogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskZmllbGRkZWYtPk1vZExhbmcoJ2ZpZWxkZGVmX3VzZV91aWQnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbV9pbnB1dFt1c2VfdWlkXSIgdmFsdWU9IjAiIC8+CiAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tX2lucHV0W3VzZV91aWRdIiB2YWx1ZT0iMSJ7aWYgJGZpZWxkZGVmLT5HZXRPcHRpb25WYWx1ZSgndXNlX3VpZCcpfWNoZWNrZWQ9ImNoZWNrZWQiey9pZn0gLz4KICA8L3A+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij48ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRmaWVsZGRlZi0+TW9kTGFuZygnZmllbGRkZWZfdXNlX3VpZF9oZWxwJyl9PC9kaXY+PC9wPgogIDwvZGl2PgogIDxocj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGZpZWxkZGVmLT5Nb2RMYW5nKCdmaWVsZGRlZl91c2VfdXNlcm5hbWUnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbV9pbnB1dFt1c2VfdXNlcm5hbWVdIiB2YWx1ZT0iMCIgLz4KICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ieyRhY3Rpb25pZH1jdXN0b21faW5wdXRbdXNlX3VzZXJuYW1lXSIgdmFsdWU9IjEie2lmICRmaWVsZGRlZi0+R2V0T3B0aW9uVmFsdWUoJ3VzZV91c2VybmFtZScpfWNoZWNrZWQ9ImNoZWNrZWQiey9pZn0gLz4KICA8L3A+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij48ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRmaWVsZGRlZi0+TW9kTGFuZygnZmllbGRkZWZfdXNlX3VzZXJuYW1lX2hlbHAnKX08L2Rpdj48L3A+CiAgPC9kaXY+CiAgPGhyPiAKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGZpZWxkZGVmLT5Nb2RMYW5nKCdmaWVsZGRlZl9tYW1zX2ZpZWxkcycpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAge2h0bWxfb3B0aW9ucyBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbV9pbnB1dFttYW1zX2ZpZWxkXX0iIG9wdGlvbnM9JGRlZnMgc2VsZWN0ZWQ9JHNlbF9kZWZ9CiAgICA8L3A+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPjxkaXYgY2xhc3M9ImluZm9ybWF0aW9uIj57JGZpZWxkZGVmLT5Nb2RMYW5nKCdmaWVsZGRlZl9tYW1zX2ZpZWxkc19oZWxwJyl9PC9kaXY+PC9wPgogIDwvZGl2PgogIDxocj4gCiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRmaWVsZGRlZi0+TW9kTGFuZygnZmllbGRkZWZfbWFtc19maWVsZHMyJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICB7aHRtbF9vcHRpb25zIG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tX2lucHV0W21hbXNfZmllbGQyXX0iIG9wdGlvbnM9JGRlZnMgc2VsZWN0ZWQ9JHNlbF9kZWYyfQogICAgPC9wPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij48ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRmaWVsZGRlZi0+TW9kTGFuZygnZmllbGRkZWZfbWFtc19maWVsZHNfaGVscCcpfTwvZGl2PjwvcD4KICA8L2Rpdj4KICA8aHI+IAogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRmaWVsZGRlZi0+TW9kTGFuZygnZmllbGRkZWZfc2VwYXJhdG9yX2NocicpfTo8L3A+CgkgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1jdXN0b21faW5wdXRbc2VwYXJhdG9yXSIgdmFsdWU9InskZmllbGRkZWYtPkdldE9wdGlvblZhbHVlKCdzZXBhcmF0b3InLCAnICcpfSIgLz4KCSAgPC9wPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij48ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRmaWVsZGRlZi0+TW9kTGFuZygnZmllbGRkZWZfc2VwYXJhdG9yX2Nocl9oZWxwJyl9PC9kaXY+PC9wPgogIDwvZGl2PgogIDxocj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbGlzZS0+TW9kTGFuZygnZmllbGRkZWZfdHlwZScpfTo8L3A+CiAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICAgIDxzZWxlY3QgbmFtZT0ieyRhY3Rpb25pZH1jdXN0b21faW5wdXRbdHlwZV0iIHN0eWxlPSJtYXgtd2lkdGg6IDk4JTsiPgogICAgICAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRvcHRzLnR5cGVzIHNlbGVjdGVkPSRmaWVsZGRlZi0+R2V0T3B0aW9uVmFsdWUoJ3R5cGUnLCAnTXVsdGlTZWxlY3QnKX0KICAgICAgICA8L3NlbGVjdD4KICAgICAgPC9wPgogICAgICA8cCBjbGFzcz0icGFnZXRleHQiPjxkaXYgY2xhc3M9ImluZm9ybWF0aW9uIj57JGxpc2UtPk1vZExhbmcoJ2ZpZWxkZGVmX3R5cGVfaGVscCcpfTwvZGl2PjwvcD4KICA8L2Rpdj4gCiAgCjwvZmllbGRzZXQ+]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSMultiSelect/images</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSMultiSelect/images/switch.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAB40lEQVR4AWIgG4wCAKvkAPJXFAXwGRnLrqVlj5kva7bDZ+Nv27ZtG7kpY3zZC7Pe2T13Nq/5OxQKhasqlcrzX6FyudyRy+VArVZn/xtUKpU6isUi5PN50Ol03d/5sz0Wi73JZDLch55Op7lUKsUlk0kukUjgDAgtFAqAGhuNxuu/gu7ED41GA+r1Ou21Wg2q1SpUKhUolUpAhEA8HodwOAzBYBACgQBIJJLBN6S1tTWGBODiV1AKQ83wo9PpBIvFAlarFex2O9273W5wOBxvrl69uvgFkM/nnyIgzmAwpMh2q0KhKBJfdbCLRKK8QCBIkzdpnLETn95CmMfjQfir8+fPH/8aOIkOR40o9DfK9PS0yOfzocbPjhw5cuiLS6KFEB2NfkKTiTmPlUolS3KQ1Wg0rFarZYm2LBHGkmDgfActmZ+fl5hMpof79u3b/QVQLBZbSGRpWmSzWXgvGWw2G/oIXC4XNQ873qFPcUafMwyzh5Rd38u1McIQjJDvBIACvV4v+P1+GmWcEfoz12xaX19PIshsNlOgXq9/u7fA3HILGAS3gEEAxsBccwsYDLeAwQCir4LSMaEwZ0xMTKwAhtdfkKHAIJlOtWwXERERBYyE32BDqQn8/f3tcnNzg8k2YBQAAOLgc5CbVSwBAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSMultiSelect/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSMultiSelect/input.MAMSMultiSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyR0eXBlID0gJGZpZWxkZGVmLT5HZXRPcHRpb25WYWx1ZSgndHlwZScpfQp7JG9wdHMgPSAkZmllbGRkZWYtPkdldE1BTVNVc2VyTGlzdCgpfQp7JHNlbCA9ICRmaWVsZGRlZi0+R2V0VmFsdWUoJ2FycmF5Jyl9Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGZpZWxkZGVmLT5HZXROYW1lKCl9e2lmICRmaWVsZGRlZi0+SXNSZXF1aXJlZCgpfSp7L2lmfTo8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij4KCQl7aWYgJGZpZWxkZGVmLT5HZXREZXNjKCl9KHskZmllbGRkZWYtPkdldERlc2MoKX0pPGJyIC8+ey9pZn0KICAgIHtpZiAkdHlwZSA9PSAnTXVsdGlTZWxlY3QnfQogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tZmllbGRbeyRmaWVsZGRlZi0+R2V0SWQoKX1dIiB2YWx1ZT0iIiAvPgogICAgICAgIDxzZWxlY3QgbmFtZT0ieyRhY3Rpb25pZH1jdXN0b21maWVsZFt7JGZpZWxkZGVmLT5HZXRJZCgpfV1bXX0iIHNpemU9Inskb3B0c3xjb3VudH0iIG11bHRpcGxlPiAgICAgICAgCiAgICAgICAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JG9wdHMgc2VsZWN0ZWQ9JHNlbH0KICAgICAgICA8L3NlbGVjdD4gIAogICAgey9pZn0gICAgCiAgICB7aWYgJHR5cGUgPT0gJ1JhZGlvR3JvdXAnfQogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbWZpZWxkW3skZmllbGRkZWYtPkdldElkKCl9XSIgdmFsdWU9IiIgLz4KICAgICAge2h0bWxfcmFkaW9zIG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tZmllbGRbeyRmaWVsZGRlZi0+R2V0SWQoKX1dIiBvcHRpb25zPSRvcHRzIHNlbGVjdGVkPSRzZWwgc2VwYXJhdG9yPSc8YnIgLz4nfQogICAgey9pZn0gICAgICAKICAgIHtpZiAkdHlwZSA9PSAnQ2hlY2tib3hHcm91cCd9CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tZmllbGRbeyRmaWVsZGRlZi0+R2V0SWQoKX1dIiB2YWx1ZT0iIiAvPgogICAgICB7aHRtbF9jaGVja2JveGVzIG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tZmllbGRbeyRmaWVsZGRlZi0+R2V0SWQoKX1dIiBvcHRpb25zPSRvcHRzIHNlbGVjdGVkPSRzZWwgc2VwYXJhdG9yPSc8YnIgLz4nfQogICAgey9pZn0gICAgCiAgICB7aWYgJHR5cGUgPT0gJ0pRdWVyeU11bHRpU2VsZWN0J30KICAgICAgPGRpdiBjbGFzcz0ibXMtY29udGFpbmVyIj4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbWZpZWxkW3skZmllbGRkZWYtPkdldElkKCl9XSIgdmFsdWU9IiIgLz4KICAgICAgICA8c2VsZWN0IGlkPSJ7JGFjdGlvbmlkfWN1c3RvbWZpZWxkeyRmaWVsZGRlZi0+R2V0SWQoKX0iIG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tZmllbGRbeyRmaWVsZGRlZi0+R2V0SWQoKX1dW119IiBzaXplPSJ7JG9wdHN8Y291bnR9IiBtdWx0aXBsZT4gICAgICAgIAogICAgICAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRvcHRzIHNlbGVjdGVkPSRzZWx9CiAgICAgICAgPC9zZWxlY3Q+CiAgICAgIDwvZGl2PiAKICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgICAgICAkKCcjeyRhY3Rpb25pZH1jdXN0b21maWVsZHskZmllbGRkZWYtPkdldElkKCl9JykubXVsdGlTZWxlY3QoKTsKICAgICAgPC9zY3JpcHQ+CiAgICB7L2lmfQoJPC9wPgo8L2Rpdj4=]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSMultiSelect/jquery.multi-select.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm1zLWNvbnRhaW5lcnsNCiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCcuLi9NQU1TTXVsdGlTZWxlY3QvaW1hZ2VzL3N3aXRjaC5wbmcnKSBuby1yZXBlYXQgNTAlIDUwJTsNCiAgd2lkdGg6IDQ3MHB4Ow0KfQ0KDQoubXMtY29udGFpbmVyOmFmdGVyew0KICBjb250ZW50OiAiLiI7DQogIGRpc3BsYXk6IGJsb2NrOw0KICBoZWlnaHQ6IDA7DQogIGxpbmUtaGVpZ2h0OiAwOw0KICBmb250LXNpemU6IDA7DQogIGNsZWFyOiBib3RoOw0KICBtaW4taGVpZ2h0OiAwOw0KICB2aXNpYmlsaXR5OiBoaWRkZW47DQp9DQoNCi5tcy1jb250YWluZXIgLm1zLXNlbGVjdGFibGUsIC5tcy1jb250YWluZXIgLm1zLXNlbGVjdGlvbnsNCiAgYmFja2dyb3VuZDogI2ZmZjsNCiAgY29sb3I6ICM1NTU1NTU7DQogIGZsb2F0OiBsZWZ0Ow0KICB3aWR0aDogNDUlOw0KfQ0KLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0aW9uew0KICBmbG9hdDogcmlnaHQ7DQp9DQoNCi5tcy1jb250YWluZXIgLm1zLWxpc3R7DQogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOw0KICAtbW96LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KTsNCiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOw0KICAtd2Via2l0LXRyYW5zaXRpb246IGJvcmRlciBsaW5lYXIgMC4ycywgYm94LXNoYWRvdyBsaW5lYXIgMC4yczsNCiAgLW1vei10cmFuc2l0aW9uOiBib3JkZXIgbGluZWFyIDAuMnMsIGJveC1zaGFkb3cgbGluZWFyIDAuMnM7DQogIC1tcy10cmFuc2l0aW9uOiBib3JkZXIgbGluZWFyIDAuMnMsIGJveC1zaGFkb3cgbGluZWFyIDAuMnM7DQogIC1vLXRyYW5zaXRpb246IGJvcmRlciBsaW5lYXIgMC4ycywgYm94LXNoYWRvdyBsaW5lYXIgMC4yczsNCiAgdHJhbnNpdGlvbjogYm9yZGVyIGxpbmVhciAwLjJzLCBib3gtc2hhZG93IGxpbmVhciAwLjJzOw0KICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOw0KICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDNweDsNCiAgLW1vei1ib3JkZXItcmFkaXVzOiAzcHg7DQogIGJvcmRlci1yYWRpdXM6IDNweDsNCiAgcG9zaXRpb246IHJlbGF0aXZlOw0KICBoZWlnaHQ6IDIwMHB4Ow0KICBwYWRkaW5nOiAwOw0KICBvdmVyZmxvdy15OiBhdXRvOw0KfQ0KDQoubXMtY29udGFpbmVyIC5tcy1saXN0Lm1zLWZvY3Vzew0KICBib3JkZXItY29sb3I6IHJnYmEoODIsIDE2OCwgMjM2LCAwLjgpOw0KICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KSwgMCAwIDhweCByZ2JhKDgyLCAxNjgsIDIzNiwgMC42KTsNCiAgLW1vei1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSksIDAgMCA4cHggcmdiYSg4MiwgMTY4LCAyMzYsIDAuNik7DQogIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KSwgMCAwIDhweCByZ2JhKDgyLCAxNjgsIDIzNiwgMC42KTsNCiAgb3V0bGluZTogMDsNCiAgb3V0bGluZTogdGhpbiBkb3R0ZWQgXDk7DQp9DQoNCi5tcy1jb250YWluZXIgdWx7DQogIG1hcmdpbjogMDsNCiAgbGlzdC1zdHlsZS10eXBlOiBub25lOw0KICBwYWRkaW5nOiAwOw0KfQ0KDQoubXMtY29udGFpbmVyIC5tcy1vcHRncm91cC1jb250YWluZXJ7DQogIHdpZHRoOiAxMDAlOw0KfQ0KDQoubXMtY29udGFpbmVyIC5tcy1vcHRncm91cC1sYWJlbHsNCiAgbWFyZ2luOiAwOw0KICBwYWRkaW5nOiA1cHggMHB4IDBweCA1cHg7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgY29sb3I6ICM5OTk7DQp9DQoNCi5tcy1jb250YWluZXIgLm1zLXNlbGVjdGFibGUgbGkubXMtZWxlbS1zZWxlY3RhYmxlLA0KLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0aW9uIGxpLm1zLWVsZW0tc2VsZWN0aW9uew0KICBib3JkZXItYm90dG9tOiAxcHggI2VlZSBzb2xpZDsNCiAgcGFkZGluZzogMnB4IDEwcHg7DQogIGNvbG9yOiAjNTU1Ow0KICBmb250LXNpemU6IDE0cHg7DQp9DQoNCi5tcy1jb250YWluZXIgLm1zLXNlbGVjdGFibGUgbGkubXMtaG92ZXIsDQoubXMtY29udGFpbmVyIC5tcy1zZWxlY3Rpb24gbGkubXMtaG92ZXJ7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgY29sb3I6ICNmZmY7DQogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzA4YzsNCn0NCg0KLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0YWJsZSBsaS5kaXNhYmxlZCwNCi5tcy1jb250YWluZXIgLm1zLXNlbGVjdGlvbiBsaS5kaXNhYmxlZHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsNCiAgY29sb3I6ICNhYWE7DQogIGN1cnNvcjogdGV4dDsNCn0=]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSMultiSelect/jquery.multi-select.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKKiBNdWx0aVNlbGVjdCB2MC45LjEyCiogQ29weXJpZ2h0IChjKSAyMDEyIExvdWlzIEN1bnkKKgoqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlLiBJdCBjb21lcyB3aXRob3V0IGFueSB3YXJyYW50eSwgdG8KKiB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBhcHBsaWNhYmxlIGxhdy4gWW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKKiBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRG8gV2hhdCBUaGUgRnVjayBZb3UgV2FudAoqIFRvIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSBTYW0gSG9jZXZhci4gU2VlCiogaHR0cDovL3NhbS56b3kub3JnL3d0ZnBsL0NPUFlJTkcgZm9yIG1vcmUgZGV0YWlscy4KKi8KCiFmdW5jdGlvbiAoJCkgewoKICAidXNlIHN0cmljdCI7CgoKIC8qIE1VTFRJU0VMRUNUIENMQVNTIERFRklOSVRJT04KICAqID09PT09PT09PT09PT09PT09PT09PT0gKi8KCiAgdmFyIE11bHRpU2VsZWN0ID0gZnVuY3Rpb24gKGVsZW1lbnQsIG9wdGlvbnMpIHsKICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7CiAgICB0aGlzLiRlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIHRoaXMuJGNvbnRhaW5lciA9ICQoJzxkaXYvPicsIHsgJ2NsYXNzJzogIm1zLWNvbnRhaW5lciIgfSk7CiAgICB0aGlzLiRzZWxlY3RhYmxlQ29udGFpbmVyID0gJCgnPGRpdi8+JywgeyAnY2xhc3MnOiAnbXMtc2VsZWN0YWJsZScgfSk7CiAgICB0aGlzLiRzZWxlY3Rpb25Db250YWluZXIgPSAkKCc8ZGl2Lz4nLCB7ICdjbGFzcyc6ICdtcy1zZWxlY3Rpb24nIH0pOwogICAgdGhpcy4kc2VsZWN0YWJsZVVsID0gJCgnPHVsLz4nLCB7ICdjbGFzcyc6ICJtcy1saXN0IiwgJ3RhYmluZGV4JyA6ICctMScgfSk7CiAgICB0aGlzLiRzZWxlY3Rpb25VbCA9ICQoJzx1bC8+JywgeyAnY2xhc3MnOiAibXMtbGlzdCIsICd0YWJpbmRleCcgOiAnLTEnIH0pOwogICAgdGhpcy5zY3JvbGxUbyA9IDA7CiAgICB0aGlzLmVsZW1zU2VsZWN0b3IgPSAnbGk6dmlzaWJsZTpub3QoLm1zLW9wdGdyb3VwLWxhYmVsLC5tcy1vcHRncm91cC1jb250YWluZXIsLicrb3B0aW9ucy5kaXNhYmxlZENsYXNzKycpJzsKICB9OwoKICBNdWx0aVNlbGVjdC5wcm90b3R5cGUgPSB7CiAgICBjb25zdHJ1Y3RvcjogTXVsdGlTZWxlY3QsCgogICAgaW5pdDogZnVuY3Rpb24oKXsKICAgICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICAgICAgbXMgPSB0aGlzLiRlbGVtZW50OwoKICAgICAgaWYgKG1zLm5leHQoJy5tcy1jb250YWluZXInKS5sZW5ndGggPT09IDApewogICAgICAgIG1zLmNzcyh7IHBvc2l0aW9uOiAnYWJzb2x1dGUnLCBsZWZ0OiAnLTk5OTlweCcgfSk7CiAgICAgICAgbXMuYXR0cignaWQnLCBtcy5hdHRyKCdpZCcpID8gbXMuYXR0cignaWQnKSA6IE1hdGguY2VpbChNYXRoLnJhbmRvbSgpKjEwMDApKydtdWx0aXNlbGVjdCcpOwogICAgICAgIHRoaXMuJGNvbnRhaW5lci5hdHRyKCdpZCcsICdtcy0nK21zLmF0dHIoJ2lkJykpOwogICAgICAgIHRoaXMuJGNvbnRhaW5lci5hZGRDbGFzcyh0aGF0Lm9wdGlvbnMuY3NzQ2xhc3MpOwogICAgICAgIG1zLmZpbmQoJ29wdGlvbicpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgIHRoYXQuZ2VuZXJhdGVMaXNGcm9tT3B0aW9uKHRoaXMpOwogICAgICAgIH0pOwoKICAgICAgICB0aGlzLiRzZWxlY3Rpb25VbC5maW5kKCcubXMtb3B0Z3JvdXAtbGFiZWwnKS5oaWRlKCk7CgogICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0YWJsZUhlYWRlcil7CiAgICAgICAgICB0aGF0LiRzZWxlY3RhYmxlQ29udGFpbmVyLmFwcGVuZCh0aGF0Lm9wdGlvbnMuc2VsZWN0YWJsZUhlYWRlcik7CiAgICAgICAgfQogICAgICAgIHRoYXQuJHNlbGVjdGFibGVDb250YWluZXIuYXBwZW5kKHRoYXQuJHNlbGVjdGFibGVVbCk7CiAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5zZWxlY3RhYmxlRm9vdGVyKXsKICAgICAgICAgIHRoYXQuJHNlbGVjdGFibGVDb250YWluZXIuYXBwZW5kKHRoYXQub3B0aW9ucy5zZWxlY3RhYmxlRm9vdGVyKTsKICAgICAgICB9CgogICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0aW9uSGVhZGVyKXsKICAgICAgICAgIHRoYXQuJHNlbGVjdGlvbkNvbnRhaW5lci5hcHBlbmQodGhhdC5vcHRpb25zLnNlbGVjdGlvbkhlYWRlcik7CiAgICAgICAgfQogICAgICAgIHRoYXQuJHNlbGVjdGlvbkNvbnRhaW5lci5hcHBlbmQodGhhdC4kc2VsZWN0aW9uVWwpOwogICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0aW9uRm9vdGVyKXsKICAgICAgICAgIHRoYXQuJHNlbGVjdGlvbkNvbnRhaW5lci5hcHBlbmQodGhhdC5vcHRpb25zLnNlbGVjdGlvbkZvb3Rlcik7CiAgICAgICAgfQoKICAgICAgICB0aGF0LiRjb250YWluZXIuYXBwZW5kKHRoYXQuJHNlbGVjdGFibGVDb250YWluZXIpOwogICAgICAgIHRoYXQuJGNvbnRhaW5lci5hcHBlbmQodGhhdC4kc2VsZWN0aW9uQ29udGFpbmVyKTsKICAgICAgICBtcy5hZnRlcih0aGF0LiRjb250YWluZXIpOwoKICAgICAgICB0aGF0LmFjdGl2ZU1vdXNlKHRoYXQuJHNlbGVjdGFibGVVbCk7CiAgICAgICAgdGhhdC5hY3RpdmVLZXlib2FyZCh0aGF0LiRzZWxlY3RhYmxlVWwpOwoKICAgICAgICB2YXIgYWN0aW9uID0gdGhhdC5vcHRpb25zLmRibENsaWNrID8gJ2RibGNsaWNrJyA6ICdjbGljayc7CgogICAgICAgIHRoYXQuJHNlbGVjdGFibGVVbC5vbihhY3Rpb24sICcubXMtZWxlbS1zZWxlY3RhYmxlJywgZnVuY3Rpb24oKXsKICAgICAgICAgIHRoYXQuc2VsZWN0KCQodGhpcykuZGF0YSgnbXMtdmFsdWUnKSk7CiAgICAgICAgfSk7CiAgICAgICAgdGhhdC4kc2VsZWN0aW9uVWwub24oYWN0aW9uLCAnLm1zLWVsZW0tc2VsZWN0aW9uJywgZnVuY3Rpb24oKXsKICAgICAgICAgIHRoYXQuZGVzZWxlY3QoJCh0aGlzKS5kYXRhKCdtcy12YWx1ZScpKTsKICAgICAgICB9KTsKCiAgICAgICAgdGhhdC5hY3RpdmVNb3VzZSh0aGF0LiRzZWxlY3Rpb25VbCk7CiAgICAgICAgdGhhdC5hY3RpdmVLZXlib2FyZCh0aGF0LiRzZWxlY3Rpb25VbCk7CgogICAgICAgIG1zLm9uKCdmb2N1cycsIGZ1bmN0aW9uKCl7CiAgICAgICAgICB0aGF0LiRzZWxlY3RhYmxlVWwuZm9jdXMoKTsKICAgICAgICB9KTsKICAgICAgfQoKICAgICAgdmFyIHNlbGVjdGVkVmFsdWVzID0gbXMuZmluZCgnb3B0aW9uOnNlbGVjdGVkJykubWFwKGZ1bmN0aW9uKCl7IHJldHVybiAkKHRoaXMpLnZhbCgpOyB9KS5nZXQoKTsKICAgICAgdGhhdC5zZWxlY3Qoc2VsZWN0ZWRWYWx1ZXMsICdpbml0Jyk7CgogICAgICBpZiAodHlwZW9mIHRoYXQub3B0aW9ucy5hZnRlckluaXQgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICB0aGF0Lm9wdGlvbnMuYWZ0ZXJJbml0LmNhbGwodGhpcywgdGhpcy4kY29udGFpbmVyKTsKICAgICAgfQogICAgfSwKCiAgICAnZ2VuZXJhdGVMaXNGcm9tT3B0aW9uJyA6IGZ1bmN0aW9uKG9wdGlvbiwgaW5kZXgsICRjb250YWluZXIpewogICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICBtcyA9IHRoYXQuJGVsZW1lbnQsCiAgICAgICAgICBhdHRyaWJ1dGVzID0gIiIsCiAgICAgICAgICAkb3B0aW9uID0gJChvcHRpb24pOwoKICAgICAgZm9yICh2YXIgY3B0ID0gMDsgY3B0IDwgb3B0aW9uLmF0dHJpYnV0ZXMubGVuZ3RoOyBjcHQrKyl7CiAgICAgICAgdmFyIGF0dHIgPSBvcHRpb24uYXR0cmlidXRlc1tjcHRdOwoKICAgICAgICBpZihhdHRyLm5hbWUgIT09ICd2YWx1ZScgJiYgYXR0ci5uYW1lICE9PSAnZGlzYWJsZWQnKXsKICAgICAgICAgIGF0dHJpYnV0ZXMgKz0gYXR0ci5uYW1lKyc9IicrYXR0ci52YWx1ZSsnIiAnOwogICAgICAgIH0KICAgICAgfQogICAgICB2YXIgc2VsZWN0YWJsZUxpID0gJCgnPGxpICcrYXR0cmlidXRlcysnPjxzcGFuPicrdGhhdC5lc2NhcGVIVE1MKCRvcHRpb24udGV4dCgpKSsnPC9zcGFuPjwvbGk+JyksCiAgICAgICAgICBzZWxlY3RlZExpID0gc2VsZWN0YWJsZUxpLmNsb25lKCksCiAgICAgICAgICB2YWx1ZSA9ICRvcHRpb24udmFsKCksCiAgICAgICAgICBlbGVtZW50SWQgPSB0aGF0LnNhbml0aXplKHZhbHVlKTsKCiAgICAgIHNlbGVjdGFibGVMaQogICAgICAgIC5kYXRhKCdtcy12YWx1ZScsIHZhbHVlKQogICAgICAgIC5hZGRDbGFzcygnbXMtZWxlbS1zZWxlY3RhYmxlJykKICAgICAgICAuYXR0cignaWQnLCBlbGVtZW50SWQrJy1zZWxlY3RhYmxlJyk7CgogICAgICBzZWxlY3RlZExpCiAgICAgICAgLmRhdGEoJ21zLXZhbHVlJywgdmFsdWUpCiAgICAgICAgLmFkZENsYXNzKCdtcy1lbGVtLXNlbGVjdGlvbicpCiAgICAgICAgLmF0dHIoJ2lkJywgZWxlbWVudElkKyctc2VsZWN0aW9uJykKICAgICAgICAuaGlkZSgpOwoKICAgICAgaWYgKCRvcHRpb24ucHJvcCgnZGlzYWJsZWQnKSB8fCBtcy5wcm9wKCdkaXNhYmxlZCcpKXsKICAgICAgICBzZWxlY3RlZExpLmFkZENsYXNzKHRoYXQub3B0aW9ucy5kaXNhYmxlZENsYXNzKTsKICAgICAgICBzZWxlY3RhYmxlTGkuYWRkQ2xhc3ModGhhdC5vcHRpb25zLmRpc2FibGVkQ2xhc3MpOwogICAgICB9CgogICAgICB2YXIgJG9wdGdyb3VwID0gJG9wdGlvbi5wYXJlbnQoJ29wdGdyb3VwJyk7CgogICAgICBpZiAoJG9wdGdyb3VwLmxlbmd0aCA+IDApewogICAgICAgIHZhciBvcHRncm91cExhYmVsID0gJG9wdGdyb3VwLmF0dHIoJ2xhYmVsJyksCiAgICAgICAgICAgIG9wdGdyb3VwSWQgPSB0aGF0LnNhbml0aXplKG9wdGdyb3VwTGFiZWwpLAogICAgICAgICAgICAkc2VsZWN0YWJsZU9wdGdyb3VwID0gdGhhdC4kc2VsZWN0YWJsZVVsLmZpbmQoJyNvcHRncm91cC1zZWxlY3RhYmxlLScrb3B0Z3JvdXBJZCksCiAgICAgICAgICAgICRzZWxlY3Rpb25PcHRncm91cCA9IHRoYXQuJHNlbGVjdGlvblVsLmZpbmQoJyNvcHRncm91cC1zZWxlY3Rpb24tJytvcHRncm91cElkKTsKCiAgICAgICAgaWYgKCRzZWxlY3RhYmxlT3B0Z3JvdXAubGVuZ3RoID09PSAwKXsKICAgICAgICAgIHZhciBvcHRncm91cENvbnRhaW5lclRwbCA9ICc8bGkgY2xhc3M9Im1zLW9wdGdyb3VwLWNvbnRhaW5lciI+PC9saT4nLAogICAgICAgICAgICAgIG9wdGdyb3VwVHBsID0gJzx1bCBjbGFzcz0ibXMtb3B0Z3JvdXAiPjxsaSBjbGFzcz0ibXMtb3B0Z3JvdXAtbGFiZWwiPjxzcGFuPicrb3B0Z3JvdXBMYWJlbCsnPC9zcGFuPjwvbGk+PC91bD4nOwoKICAgICAgICAgICRzZWxlY3RhYmxlT3B0Z3JvdXAgPSAkKG9wdGdyb3VwQ29udGFpbmVyVHBsKTsKICAgICAgICAgICRzZWxlY3Rpb25PcHRncm91cCA9ICQob3B0Z3JvdXBDb250YWluZXJUcGwpOwogICAgICAgICAgJHNlbGVjdGFibGVPcHRncm91cC5hdHRyKCdpZCcsICdvcHRncm91cC1zZWxlY3RhYmxlLScrb3B0Z3JvdXBJZCk7CiAgICAgICAgICAkc2VsZWN0aW9uT3B0Z3JvdXAuYXR0cignaWQnLCAnb3B0Z3JvdXAtc2VsZWN0aW9uLScrb3B0Z3JvdXBJZCk7CiAgICAgICAgICAkc2VsZWN0YWJsZU9wdGdyb3VwLmFwcGVuZCgkKG9wdGdyb3VwVHBsKSk7CiAgICAgICAgICAkc2VsZWN0aW9uT3B0Z3JvdXAuYXBwZW5kKCQob3B0Z3JvdXBUcGwpKTsKICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0YWJsZU9wdGdyb3VwKXsKICAgICAgICAgICAgJHNlbGVjdGFibGVPcHRncm91cC5maW5kKCcubXMtb3B0Z3JvdXAtbGFiZWwnKS5vbignY2xpY2snLCBmdW5jdGlvbigpewogICAgICAgICAgICAgIHZhciB2YWx1ZXMgPSAkb3B0Z3JvdXAuY2hpbGRyZW4oJzpub3QoOnNlbGVjdGVkLCA6ZGlzYWJsZWQpJykubWFwKGZ1bmN0aW9uKCl7IHJldHVybiAkKHRoaXMpLnZhbCgpO30pLmdldCgpOwogICAgICAgICAgICAgIHRoYXQuc2VsZWN0KHZhbHVlcyk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAkc2VsZWN0aW9uT3B0Z3JvdXAuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICB2YXIgdmFsdWVzID0gJG9wdGdyb3VwLmNoaWxkcmVuKCc6c2VsZWN0ZWQ6bm90KDpkaXNhYmxlZCknKS5tYXAoZnVuY3Rpb24oKXsgcmV0dXJuICQodGhpcykudmFsKCk7fSkuZ2V0KCk7CiAgICAgICAgICAgICAgdGhhdC5kZXNlbGVjdCh2YWx1ZXMpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICAgIHRoYXQuJHNlbGVjdGFibGVVbC5hcHBlbmQoJHNlbGVjdGFibGVPcHRncm91cCk7CiAgICAgICAgICB0aGF0LiRzZWxlY3Rpb25VbC5hcHBlbmQoJHNlbGVjdGlvbk9wdGdyb3VwKTsKICAgICAgICB9CiAgICAgICAgaW5kZXggPSBpbmRleCA9PT0gdW5kZWZpbmVkID8gJHNlbGVjdGFibGVPcHRncm91cC5maW5kKCd1bCcpLmNoaWxkcmVuKCkubGVuZ3RoIDogaW5kZXggKyAxOwogICAgICAgIHNlbGVjdGFibGVMaS5pbnNlcnRBdChpbmRleCwgJHNlbGVjdGFibGVPcHRncm91cC5jaGlsZHJlbigpKTsKICAgICAgICBzZWxlY3RlZExpLmluc2VydEF0KGluZGV4LCAkc2VsZWN0aW9uT3B0Z3JvdXAuY2hpbGRyZW4oKSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaW5kZXggPSBpbmRleCA9PT0gdW5kZWZpbmVkID8gdGhhdC4kc2VsZWN0YWJsZVVsLmNoaWxkcmVuKCkubGVuZ3RoIDogaW5kZXg7CgogICAgICAgIHNlbGVjdGFibGVMaS5pbnNlcnRBdChpbmRleCwgdGhhdC4kc2VsZWN0YWJsZVVsKTsKICAgICAgICBzZWxlY3RlZExpLmluc2VydEF0KGluZGV4LCB0aGF0LiRzZWxlY3Rpb25VbCk7CiAgICAgIH0KICAgIH0sCgogICAgJ2FkZE9wdGlvbicgOiBmdW5jdGlvbihvcHRpb25zKXsKICAgICAgdmFyIHRoYXQgPSB0aGlzOwoKICAgICAgaWYgKG9wdGlvbnMudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBvcHRpb25zLnZhbHVlICE9PSBudWxsKXsKICAgICAgICBvcHRpb25zID0gW29wdGlvbnNdOwogICAgICB9IAogICAgICAkLmVhY2gob3B0aW9ucywgZnVuY3Rpb24oaW5kZXgsIG9wdGlvbil7CiAgICAgICAgaWYgKG9wdGlvbi52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbi52YWx1ZSAhPT0gbnVsbCAmJgogICAgICAgICAgICB0aGF0LiRlbGVtZW50LmZpbmQoIm9wdGlvblt2YWx1ZT0nIitvcHRpb24udmFsdWUrIiddIikubGVuZ3RoID09PSAwKXsKICAgICAgICAgIHZhciAkb3B0aW9uID0gJCgnPG9wdGlvbiB2YWx1ZT0iJytvcHRpb24udmFsdWUrJyI+JytvcHRpb24udGV4dCsnPC9vcHRpb24+JyksCiAgICAgICAgICAgICAgaW5kZXggPSBwYXJzZUludCgodHlwZW9mIG9wdGlvbi5pbmRleCA9PT0gJ3VuZGVmaW5lZCcgPyB0aGF0LiRlbGVtZW50LmNoaWxkcmVuKCkubGVuZ3RoIDogb3B0aW9uLmluZGV4KSksCiAgICAgICAgICAgICAgJGNvbnRhaW5lciA9IG9wdGlvbi5uZXN0ZWQgPT09IHVuZGVmaW5lZCA/IHRoYXQuJGVsZW1lbnQgOiAkKCJvcHRncm91cFtsYWJlbD0nIitvcHRpb24ubmVzdGVkKyInXSIpOwoKICAgICAgICAgICRvcHRpb24uaW5zZXJ0QXQoaW5kZXgsICRjb250YWluZXIpOwogICAgICAgICAgdGhhdC5nZW5lcmF0ZUxpc0Zyb21PcHRpb24oJG9wdGlvbi5nZXQoMCksIGluZGV4LCBvcHRpb24ubmVzdGVkKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKCiAgICAnZXNjYXBlSFRNTCcgOiBmdW5jdGlvbih0ZXh0KXsKICAgICAgcmV0dXJuICQoIjxkaXY+IikudGV4dCh0ZXh0KS5odG1sKCk7CiAgICB9LAoKICAgICdhY3RpdmVLZXlib2FyZCcgOiBmdW5jdGlvbigkbGlzdCl7CiAgICAgIHZhciB0aGF0ID0gdGhpczsKCiAgICAgICRsaXN0Lm9uKCdmb2N1cycsIGZ1bmN0aW9uKCl7CiAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnbXMtZm9jdXMnKTsKICAgICAgfSkKICAgICAgLm9uKCdibHVyJywgZnVuY3Rpb24oKXsKICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdtcy1mb2N1cycpOwogICAgICB9KQogICAgICAub24oJ2tleWRvd24nLCBmdW5jdGlvbihlKXsKICAgICAgICBzd2l0Y2ggKGUud2hpY2gpIHsKICAgICAgICAgIGNhc2UgNDA6CiAgICAgICAgICBjYXNlIDM4OgogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgIHRoYXQubW92ZUhpZ2hsaWdodCgkKHRoaXMpLCAoZS53aGljaCA9PT0gMzgpID8gLTEgOiAxKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgY2FzZSAzNzoKICAgICAgICAgIGNhc2UgMzk6CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgdGhhdC5zd2l0Y2hMaXN0KCRsaXN0KTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICBpZih0aGF0LiRlbGVtZW50LmlzKCdbdGFiaW5kZXhdJykpewogICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICB2YXIgdGFiaW5kZXggPSBwYXJzZUludCh0aGF0LiRlbGVtZW50LmF0dHIoJ3RhYmluZGV4JyksIDEwKTsKICAgICAgICAgICAgICB0YWJpbmRleCA9IChlLnNoaWZ0S2V5KSA/IHRhYmluZGV4LTEgOiB0YWJpbmRleCsxOwogICAgICAgICAgICAgICQoJ1t0YWJpbmRleD0iJysodGFiaW5kZXgpKyciXScpLmZvY3VzKCk7CiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICBpZihlLnNoaWZ0S2V5KXsKICAgICAgICAgICAgICAgIHRoYXQuJGVsZW1lbnQudHJpZ2dlcignZm9jdXMnKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYoJC5pbkFycmF5KGUud2hpY2gsIHRoYXQub3B0aW9ucy5rZXlTZWxlY3QpID4gLTEpewogICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgIHRoYXQuc2VsZWN0SGlnaGxpZ2h0ZWQoJGxpc3QpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9LAoKICAgICdtb3ZlSGlnaGxpZ2h0JzogZnVuY3Rpb24oJGxpc3QsIGRpcmVjdGlvbil7CiAgICAgIHZhciAkZWxlbXMgPSAkbGlzdC5maW5kKHRoaXMuZWxlbXNTZWxlY3RvciksCiAgICAgICAgICAkY3VyckVsZW0gPSAkZWxlbXMuZmlsdGVyKCcubXMtaG92ZXInKSwKICAgICAgICAgICRuZXh0RWxlbSA9IG51bGwsCiAgICAgICAgICBlbGVtSGVpZ2h0ID0gJGVsZW1zLmZpcnN0KCkub3V0ZXJIZWlnaHQoKSwKICAgICAgICAgIGNvbnRhaW5lckhlaWdodCA9ICRsaXN0LmhlaWdodCgpLAogICAgICAgICAgY29udGFpbmVyU2VsZWN0b3IgPSAnIycrdGhpcy4kY29udGFpbmVyLnByb3AoJ2lkJyk7CgogICAgICAkZWxlbXMucmVtb3ZlQ2xhc3MoJ21zLWhvdmVyJyk7CiAgICAgIGlmIChkaXJlY3Rpb24gPT09IDEpeyAvLyBET1dOCgogICAgICAgICRuZXh0RWxlbSA9ICRjdXJyRWxlbS5uZXh0QWxsKHRoaXMuZWxlbXNTZWxlY3RvcikuZmlyc3QoKTsKICAgICAgICBpZiAoJG5leHRFbGVtLmxlbmd0aCA9PT0gMCl7CiAgICAgICAgICB2YXIgJG9wdGdyb3VwVWwgPSAkY3VyckVsZW0ucGFyZW50KCk7CgogICAgICAgICAgaWYgKCRvcHRncm91cFVsLmhhc0NsYXNzKCdtcy1vcHRncm91cCcpKXsKICAgICAgICAgICAgdmFyICRvcHRncm91cExpID0gJG9wdGdyb3VwVWwucGFyZW50KCksCiAgICAgICAgICAgICAgICAkbmV4dE9wdGdyb3VwTGkgPSAkb3B0Z3JvdXBMaS5uZXh0KCc6dmlzaWJsZScpOwoKICAgICAgICAgICAgaWYgKCRuZXh0T3B0Z3JvdXBMaS5sZW5ndGggPiAwKXsKICAgICAgICAgICAgICAkbmV4dEVsZW0gPSAkbmV4dE9wdGdyb3VwTGkuZmluZCh0aGlzLmVsZW1zU2VsZWN0b3IpLmZpcnN0KCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgJG5leHRFbGVtID0gJGVsZW1zLmZpcnN0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRuZXh0RWxlbSA9ICRlbGVtcy5maXJzdCgpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09IC0xKXsgLy8gVVAKCiAgICAgICAgJG5leHRFbGVtID0gJGN1cnJFbGVtLnByZXZBbGwodGhpcy5lbGVtc1NlbGVjdG9yKS5maXJzdCgpOwogICAgICAgIGlmICgkbmV4dEVsZW0ubGVuZ3RoID09PSAwKXsKICAgICAgICAgIHZhciAkb3B0Z3JvdXBVbCA9ICRjdXJyRWxlbS5wYXJlbnQoKTsKCiAgICAgICAgICBpZiAoJG9wdGdyb3VwVWwuaGFzQ2xhc3MoJ21zLW9wdGdyb3VwJykpewogICAgICAgICAgICB2YXIgJG9wdGdyb3VwTGkgPSAkb3B0Z3JvdXBVbC5wYXJlbnQoKSwKICAgICAgICAgICAgICAgICRwcmV2T3B0Z3JvdXBMaSA9ICRvcHRncm91cExpLnByZXYoJzp2aXNpYmxlJyk7CgogICAgICAgICAgICBpZiAoJHByZXZPcHRncm91cExpLmxlbmd0aCA+IDApewogICAgICAgICAgICAgICRuZXh0RWxlbSA9ICRwcmV2T3B0Z3JvdXBMaS5maW5kKHRoaXMuZWxlbXNTZWxlY3RvcikubGFzdCgpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICRuZXh0RWxlbSA9ICRlbGVtcy5sYXN0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRuZXh0RWxlbSA9ICRlbGVtcy5sYXN0KCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmICgkbmV4dEVsZW0ubGVuZ3RoID4gMCl7CiAgICAgICAgJG5leHRFbGVtLmFkZENsYXNzKCdtcy1ob3ZlcicpOwogICAgICAgIHZhciBzY3JvbGxUbyA9ICRsaXN0LnNjcm9sbFRvcCgpICsgJG5leHRFbGVtLnBvc2l0aW9uKCkudG9wIC0gCiAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVySGVpZ2h0IC8gMiArIGVsZW1IZWlnaHQgLyAyOwoKICAgICAgICAkbGlzdC5zY3JvbGxUb3Aoc2Nyb2xsVG8pOwogICAgICB9CiAgICB9LAoKICAgICdzZWxlY3RIaWdobGlnaHRlZCcgOiBmdW5jdGlvbigkbGlzdCl7CiAgICAgIHZhciAkZWxlbXMgPSAkbGlzdC5maW5kKHRoaXMuZWxlbXNTZWxlY3RvciksCiAgICAgICAgICAkaGlnaGxpZ2h0ZWRFbGVtID0gJGVsZW1zLmZpbHRlcignLm1zLWhvdmVyJykuZmlyc3QoKTsKCiAgICAgIGlmICgkaGlnaGxpZ2h0ZWRFbGVtLmxlbmd0aCA+IDApewogICAgICAgIGlmICgkbGlzdC5wYXJlbnQoKS5oYXNDbGFzcygnbXMtc2VsZWN0YWJsZScpKXsKICAgICAgICAgIHRoaXMuc2VsZWN0KCRoaWdobGlnaHRlZEVsZW0uZGF0YSgnbXMtdmFsdWUnKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuZGVzZWxlY3QoJGhpZ2hsaWdodGVkRWxlbS5kYXRhKCdtcy12YWx1ZScpKTsKICAgICAgICB9CiAgICAgICAgJGVsZW1zLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICB9CiAgICB9LAoKICAgICdzd2l0Y2hMaXN0JyA6IGZ1bmN0aW9uKCRsaXN0KXsKICAgICAgJGxpc3QuYmx1cigpOwogICAgICB0aGlzLiRjb250YWluZXIuZmluZCh0aGlzLmVsZW1zU2VsZWN0b3IpLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICBpZiAoJGxpc3QucGFyZW50KCkuaGFzQ2xhc3MoJ21zLXNlbGVjdGFibGUnKSl7CiAgICAgICAgdGhpcy4kc2VsZWN0aW9uVWwuZm9jdXMoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZm9jdXMoKTsKICAgICAgfQogICAgfSwKCiAgICAnYWN0aXZlTW91c2UnIDogZnVuY3Rpb24oJGxpc3QpewogICAgICB2YXIgdGhhdCA9IHRoaXM7CgogICAgICB0aGlzLiRjb250YWluZXIub24oJ21vdXNlZW50ZXInLCB0aGF0LmVsZW1zU2VsZWN0b3IsIGZ1bmN0aW9uKCl7CiAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcubXMtY29udGFpbmVyJykuZmluZCh0aGF0LmVsZW1zU2VsZWN0b3IpLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ21zLWhvdmVyJyk7CiAgICAgIH0pOwoKICAgICAgdGhpcy4kY29udGFpbmVyLm9uKCdtb3VzZWxlYXZlJywgdGhhdC5lbGVtc1NlbGVjdG9yLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcubXMtY29udGFpbmVyJykuZmluZCh0aGF0LmVsZW1zU2VsZWN0b3IpLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICB9KTsKICAgIH0sCgogICAgJ3JlZnJlc2gnIDogZnVuY3Rpb24oKSB7CiAgICAgIHRoaXMuZGVzdHJveSgpOwogICAgICB0aGlzLiRlbGVtZW50Lm11bHRpU2VsZWN0KHRoaXMub3B0aW9ucyk7CiAgICB9LAoKICAgICdkZXN0cm95JyA6IGZ1bmN0aW9uKCl7CiAgICAgICQoIiNtcy0iK3RoaXMuJGVsZW1lbnQuYXR0cigiaWQiKSkucmVtb3ZlKCk7CiAgICAgIHRoaXMuJGVsZW1lbnQub2ZmKCdmb2N1cycpOwogICAgICB0aGlzLiRlbGVtZW50LmNzcygncG9zaXRpb24nLCAnJykuY3NzKCdsZWZ0JywgJycpOwogICAgICB0aGlzLiRlbGVtZW50LnJlbW92ZURhdGEoJ211bHRpc2VsZWN0Jyk7CiAgICB9LAoKICAgICdzZWxlY3QnIDogZnVuY3Rpb24odmFsdWUsIG1ldGhvZCl7CiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKXsgdmFsdWUgPSBbdmFsdWVdOyB9CgogICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICBtcyA9IHRoaXMuJGVsZW1lbnQsCiAgICAgICAgICBtc0lkcyA9ICQubWFwKHZhbHVlLCBmdW5jdGlvbih2YWwpeyByZXR1cm4odGhhdC5zYW5pdGl6ZSh2YWwpKTsgfSksCiAgICAgICAgICBzZWxlY3RhYmxlcyA9IHRoaXMuJHNlbGVjdGFibGVVbC5maW5kKCcjJyArIG1zSWRzLmpvaW4oJy1zZWxlY3RhYmxlLCAjJykrJy1zZWxlY3RhYmxlJykuZmlsdGVyKCc6bm90KC4nK3RoYXQub3B0aW9ucy5kaXNhYmxlZENsYXNzKycpJyksCiAgICAgICAgICBzZWxlY3Rpb25zID0gdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnIycgKyBtc0lkcy5qb2luKCctc2VsZWN0aW9uLCAjJykgKyAnLXNlbGVjdGlvbicpLmZpbHRlcignOm5vdCguJyt0aGF0Lm9wdGlvbnMuZGlzYWJsZWRDbGFzcysnKScpLAogICAgICAgICAgb3B0aW9ucyA9IG1zLmZpbmQoJ29wdGlvbjpub3QoOmRpc2FibGVkKScpLmZpbHRlcihmdW5jdGlvbigpeyByZXR1cm4oJC5pbkFycmF5KHRoaXMudmFsdWUsIHZhbHVlKSA+IC0xKTsgfSk7CgogICAgICBpZiAobWV0aG9kID09PSAnaW5pdCcpewogICAgICAgIHNlbGVjdGFibGVzID0gdGhpcy4kc2VsZWN0YWJsZVVsLmZpbmQoJyMnICsgbXNJZHMuam9pbignLXNlbGVjdGFibGUsICMnKSsnLXNlbGVjdGFibGUnKSwKICAgICAgICBzZWxlY3Rpb25zID0gdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnIycgKyBtc0lkcy5qb2luKCctc2VsZWN0aW9uLCAjJykgKyAnLXNlbGVjdGlvbicpOwogICAgICB9CgogICAgICBpZiAoc2VsZWN0YWJsZXMubGVuZ3RoID4gMCl7CiAgICAgICAgc2VsZWN0YWJsZXMuYWRkQ2xhc3MoJ21zLXNlbGVjdGVkJykuaGlkZSgpOwogICAgICAgIHNlbGVjdGlvbnMuYWRkQ2xhc3MoJ21zLXNlbGVjdGVkJykuc2hvdygpOwoKICAgICAgICBvcHRpb25zLnByb3AoJ3NlbGVjdGVkJywgdHJ1ZSk7CgogICAgICAgIHRoYXQuJGNvbnRhaW5lci5maW5kKHRoYXQuZWxlbXNTZWxlY3RvcikucmVtb3ZlQ2xhc3MoJ21zLWhvdmVyJyk7CgogICAgICAgIHZhciBzZWxlY3RhYmxlT3B0Z3JvdXBzID0gdGhhdC4kc2VsZWN0YWJsZVVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgaWYgKHNlbGVjdGFibGVPcHRncm91cHMubGVuZ3RoID4gMCl7CiAgICAgICAgICBzZWxlY3RhYmxlT3B0Z3JvdXBzLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgdmFyIHNlbGVjdGFibGVzTGkgPSAkKHRoaXMpLmZpbmQoJy5tcy1lbGVtLXNlbGVjdGFibGUnKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGFibGVzTGkubGVuZ3RoID09PSBzZWxlY3RhYmxlc0xpLmZpbHRlcignLm1zLXNlbGVjdGVkJykubGVuZ3RoKXsKICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5tcy1vcHRncm91cC1sYWJlbCcpLmhpZGUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CgogICAgICAgICAgdmFyIHNlbGVjdGlvbk9wdGdyb3VwcyA9IHRoYXQuJHNlbGVjdGlvblVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgICBzZWxlY3Rpb25PcHRncm91cHMuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICB2YXIgc2VsZWN0aW9uc0xpID0gJCh0aGlzKS5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGlvbnNMaS5maWx0ZXIoJy5tcy1zZWxlY3RlZCcpLmxlbmd0aCA+IDApewogICAgICAgICAgICAgICQodGhpcykuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuc2hvdygpOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5rZWVwT3JkZXIgJiYgbWV0aG9kICE9PSAnaW5pdCcpewogICAgICAgICAgICB2YXIgc2VsZWN0aW9uTGlMYXN0ID0gdGhhdC4kc2VsZWN0aW9uVWwuZmluZCgnLm1zLXNlbGVjdGVkJyk7CiAgICAgICAgICAgIGlmKChzZWxlY3Rpb25MaUxhc3QubGVuZ3RoID4gMSkgJiYgKHNlbGVjdGlvbkxpTGFzdC5sYXN0KCkuZ2V0KDApICE9IHNlbGVjdGlvbnMuZ2V0KDApKSkgewogICAgICAgICAgICAgIHNlbGVjdGlvbnMuaW5zZXJ0QWZ0ZXIoc2VsZWN0aW9uTGlMYXN0Lmxhc3QoKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKG1ldGhvZCAhPT0gJ2luaXQnKXsKICAgICAgICAgIG1zLnRyaWdnZXIoJ2NoYW5nZScpOwogICAgICAgICAgaWYgKHR5cGVvZiB0aGF0Lm9wdGlvbnMuYWZ0ZXJTZWxlY3QgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgdGhhdC5vcHRpb25zLmFmdGVyU2VsZWN0LmNhbGwodGhpcywgdmFsdWUpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKCiAgICAnZGVzZWxlY3QnIDogZnVuY3Rpb24odmFsdWUpewogICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyl7IHZhbHVlID0gW3ZhbHVlXTsgfQoKICAgICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICAgICAgbXMgPSB0aGlzLiRlbGVtZW50LAogICAgICAgICAgbXNJZHMgPSAkLm1hcCh2YWx1ZSwgZnVuY3Rpb24odmFsKXsgcmV0dXJuKHRoYXQuc2FuaXRpemUodmFsKSk7IH0pLAogICAgICAgICAgc2VsZWN0YWJsZXMgPSB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnIycgKyBtc0lkcy5qb2luKCctc2VsZWN0YWJsZSwgIycpKyctc2VsZWN0YWJsZScpLAogICAgICAgICAgc2VsZWN0aW9ucyA9IHRoaXMuJHNlbGVjdGlvblVsLmZpbmQoJyMnICsgbXNJZHMuam9pbignLXNlbGVjdGlvbiwgIycpKyctc2VsZWN0aW9uJykuZmlsdGVyKCcubXMtc2VsZWN0ZWQnKS5maWx0ZXIoJzpub3QoLicrdGhhdC5vcHRpb25zLmRpc2FibGVkQ2xhc3MrJyknKSwKICAgICAgICAgIG9wdGlvbnMgPSBtcy5maW5kKCdvcHRpb24nKS5maWx0ZXIoZnVuY3Rpb24oKXsgcmV0dXJuKCQuaW5BcnJheSh0aGlzLnZhbHVlLCB2YWx1ZSkgPiAtMSk7IH0pOwoKICAgICAgaWYgKHNlbGVjdGlvbnMubGVuZ3RoID4gMCl7CiAgICAgICAgc2VsZWN0YWJsZXMucmVtb3ZlQ2xhc3MoJ21zLXNlbGVjdGVkJykuc2hvdygpOwogICAgICAgIHNlbGVjdGlvbnMucmVtb3ZlQ2xhc3MoJ21zLXNlbGVjdGVkJykuaGlkZSgpOwogICAgICAgIG9wdGlvbnMucHJvcCgnc2VsZWN0ZWQnLCBmYWxzZSk7CgogICAgICAgIHRoYXQuJGNvbnRhaW5lci5maW5kKHRoYXQuZWxlbXNTZWxlY3RvcikucmVtb3ZlQ2xhc3MoJ21zLWhvdmVyJyk7CgogICAgICAgIHZhciBzZWxlY3RhYmxlT3B0Z3JvdXBzID0gdGhhdC4kc2VsZWN0YWJsZVVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgaWYgKHNlbGVjdGFibGVPcHRncm91cHMubGVuZ3RoID4gMCl7CiAgICAgICAgICBzZWxlY3RhYmxlT3B0Z3JvdXBzLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgdmFyIHNlbGVjdGFibGVzTGkgPSAkKHRoaXMpLmZpbmQoJy5tcy1lbGVtLXNlbGVjdGFibGUnKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGFibGVzTGkuZmlsdGVyKCc6bm90KC5tcy1zZWxlY3RlZCknKS5sZW5ndGggPiAwKXsKICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5tcy1vcHRncm91cC1sYWJlbCcpLnNob3coKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CgogICAgICAgICAgdmFyIHNlbGVjdGlvbk9wdGdyb3VwcyA9IHRoYXQuJHNlbGVjdGlvblVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgICBzZWxlY3Rpb25PcHRncm91cHMuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICB2YXIgc2VsZWN0aW9uc0xpID0gJCh0aGlzKS5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGlvbnNMaS5maWx0ZXIoJy5tcy1zZWxlY3RlZCcpLmxlbmd0aCA9PT0gMCl7CiAgICAgICAgICAgICAgJCh0aGlzKS5maW5kKCcubXMtb3B0Z3JvdXAtbGFiZWwnKS5oaWRlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICBtcy50cmlnZ2VyKCdjaGFuZ2UnKTsKICAgICAgICBpZiAodHlwZW9mIHRoYXQub3B0aW9ucy5hZnRlckRlc2VsZWN0ID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICB0aGF0Lm9wdGlvbnMuYWZ0ZXJEZXNlbGVjdC5jYWxsKHRoaXMsIHZhbHVlKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCgogICAgJ3NlbGVjdF9hbGwnIDogZnVuY3Rpb24oKXsKICAgICAgdmFyIG1zID0gdGhpcy4kZWxlbWVudCwKICAgICAgICAgIHZhbHVlcyA9IG1zLnZhbCgpOwoKICAgICAgbXMuZmluZCgnb3B0aW9uOm5vdCgiOmRpc2FibGVkIiknKS5wcm9wKCdzZWxlY3RlZCcsIHRydWUpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLWVsZW0tc2VsZWN0YWJsZScpLmZpbHRlcignOm5vdCguJyt0aGlzLm9wdGlvbnMuZGlzYWJsZWRDbGFzcysnKScpLmFkZENsYXNzKCdtcy1zZWxlY3RlZCcpLmhpZGUoKTsKICAgICAgdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuc2hvdygpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuaGlkZSgpOwogICAgICB0aGlzLiRzZWxlY3Rpb25VbC5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKS5maWx0ZXIoJzpub3QoLicrdGhpcy5vcHRpb25zLmRpc2FibGVkQ2xhc3MrJyknKS5hZGRDbGFzcygnbXMtc2VsZWN0ZWQnKS5zaG93KCk7CiAgICAgIHRoaXMuJHNlbGVjdGlvblVsLmZvY3VzKCk7CiAgICAgIG1zLnRyaWdnZXIoJ2NoYW5nZScpOwogICAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5hZnRlclNlbGVjdCA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIHZhciBzZWxlY3RlZFZhbHVlcyA9ICQuZ3JlcChtcy52YWwoKSwgZnVuY3Rpb24oaXRlbSl7CiAgICAgICAgICByZXR1cm4gJC5pbkFycmF5KGl0ZW0sIHZhbHVlcykgPCAwOwogICAgICAgIH0pOwogICAgICAgIHRoaXMub3B0aW9ucy5hZnRlclNlbGVjdC5jYWxsKHRoaXMsIHNlbGVjdGVkVmFsdWVzKTsKICAgICAgfQogICAgfSwKCiAgICAnZGVzZWxlY3RfYWxsJyA6IGZ1bmN0aW9uKCl7CiAgICAgIHZhciBtcyA9IHRoaXMuJGVsZW1lbnQsCiAgICAgICAgICB2YWx1ZXMgPSBtcy52YWwoKTsKCiAgICAgIG1zLmZpbmQoJ29wdGlvbicpLnByb3AoJ3NlbGVjdGVkJywgZmFsc2UpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLWVsZW0tc2VsZWN0YWJsZScpLnJlbW92ZUNsYXNzKCdtcy1zZWxlY3RlZCcpLnNob3coKTsKICAgICAgdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuaGlkZSgpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuc2hvdygpOwogICAgICB0aGlzLiRzZWxlY3Rpb25VbC5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKS5yZW1vdmVDbGFzcygnbXMtc2VsZWN0ZWQnKS5oaWRlKCk7CiAgICAgIHRoaXMuJHNlbGVjdGFibGVVbC5mb2N1cygpOwogICAgICBtcy50cmlnZ2VyKCdjaGFuZ2UnKTsKICAgICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMuYWZ0ZXJEZXNlbGVjdCA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIHRoaXMub3B0aW9ucy5hZnRlckRlc2VsZWN0LmNhbGwodGhpcywgdmFsdWVzKTsKICAgICAgfQogICAgfSwKCiAgICBzYW5pdGl6ZTogZnVuY3Rpb24odmFsdWUpewogICAgICB2YXIgaGFzaCA9IDAsIGksIGNoYXJhY3RlcjsKICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PSAwKSByZXR1cm4gaGFzaDsKICAgICAgdmFyIGxzID0gMDsKICAgICAgZm9yIChpID0gMCwgbHMgPSB2YWx1ZS5sZW5ndGg7IGkgPCBsczsgaSsrKSB7CiAgICAgICAgY2hhcmFjdGVyICA9IHZhbHVlLmNoYXJDb2RlQXQoaSk7CiAgICAgICAgaGFzaCAgPSAoKGhhc2g8PDUpLWhhc2gpK2NoYXJhY3RlcjsKICAgICAgICBoYXNoIHw9IDA7IC8vIENvbnZlcnQgdG8gMzJiaXQgaW50ZWdlcgogICAgICB9CiAgICAgIHJldHVybiBoYXNoOwogICAgfQogIH07CgogIC8qIE1VTFRJU0VMRUNUIFBMVUdJTiBERUZJTklUSU9OCiAgICogPT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiAgJC5mbi5tdWx0aVNlbGVjdCA9IGZ1bmN0aW9uICgpIHsKICAgIHZhciBvcHRpb24gPSBhcmd1bWVudHNbMF0sCiAgICAgICAgYXJncyA9IGFyZ3VtZW50czsKCiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgdmFyICR0aGlzID0gJCh0aGlzKSwKICAgICAgICAgIGRhdGEgPSAkdGhpcy5kYXRhKCdtdWx0aXNlbGVjdCcpLAogICAgICAgICAgb3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCAkLmZuLm11bHRpU2VsZWN0LmRlZmF1bHRzLCAkdGhpcy5kYXRhKCksIHR5cGVvZiBvcHRpb24gPT09ICdvYmplY3QnICYmIG9wdGlvbik7CgogICAgICBpZiAoIWRhdGEpeyAkdGhpcy5kYXRhKCdtdWx0aXNlbGVjdCcsIChkYXRhID0gbmV3IE11bHRpU2VsZWN0KHRoaXMsIG9wdGlvbnMpKSk7IH0KCiAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnc3RyaW5nJyl7CiAgICAgICAgZGF0YVtvcHRpb25dKGFyZ3NbMV0pOwogICAgICB9IGVsc2UgewogICAgICAgIGRhdGEuaW5pdCgpOwogICAgICB9CiAgICB9KTsKICB9OwoKICAkLmZuLm11bHRpU2VsZWN0LmRlZmF1bHRzID0gewogICAga2V5U2VsZWN0OiBbMzJdLAogICAgc2VsZWN0YWJsZU9wdGdyb3VwOiBmYWxzZSwKICAgIGRpc2FibGVkQ2xhc3MgOiAnZGlzYWJsZWQnLAogICAgZGJsQ2xpY2sgOiBmYWxzZSwKICAgIGtlZXBPcmRlcjogZmFsc2UsCiAgICBjc3NDbGFzczogJycKICB9OwoKICAkLmZuLm11bHRpU2VsZWN0LkNvbnN0cnVjdG9yID0gTXVsdGlTZWxlY3Q7CgogICQuZm4uaW5zZXJ0QXQgPSBmdW5jdGlvbihpbmRleCwgJHBhcmVudCkgewogICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgaWYgKGluZGV4ID09PSAwKSB7CiAgICAgICAgJHBhcmVudC5wcmVwZW5kKHRoaXMpOwogICAgICB9IGVsc2UgewogICAgICAgICRwYXJlbnQuY2hpbGRyZW4oKS5lcShpbmRleCAtIDEpLmFmdGVyKHRoaXMpOwogICAgICB9CiAgICB9KTsKfTsKCn0od2luZG93LmpRdWVyeSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSMultiSelect/lisefd.MAMSMultiSelect.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBMSVNFIC0gTGlzdCBJdCBTcGVjaWFsIEVkaXRpb24KIyBWZXJzaW9uIDEuMgojIEEgZm9yayBvZiBMaXN0STIKIyBtYWludGFpbmVkIGJ5IEZlcm5hbmRvIE1vcmdhZG8gQUtBIEpvIE1vcmcKIyBzaW5jZSAyMDE1CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBPcmlnaW5hbCBBdXRob3I6IEJlbiBNYWxlbiwgPGJlbkBjb25jZXB0ZmFjdG9yeS5jb20uYXU+CiMgQ28tTWFpbnRhaW5lcjogU2ltb24gUmFkZm9yZCwgPHNpbW9uQGNvbmNlcHRmYWN0b3J5LmNvbS5hdT4KIyBXZWI6IHd3dy5jb25jZXB0ZmFjdG9yeS5jb20uYXUKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgTWFpbnRhaW5lciBzaW5jZSAyMDExIHVwIHRvIDIwMTQ6IEpvbmF0aGFuIFNjaG1pZCwgPGhpQGpvbmF0aGFuc2NobWlkLmRlPgojIFdlYjogd3d3LmpvbmF0aGFuc2NobWlkLmRlCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFNvbWUgd2Fja29zIHN0YXJ0ZWQgZGVzdHJveWluZyBzdHVmZiBzaW5jZSAyMDEyIGFuZCBzdG9wcGVkIGF0IDIwMTQ6CiMKIyBUYXBpbyBMw7Z5dHR5LCA8dGFwc2FAb3JhbmdlLW1lZGlhLmZpPgojIFdlYjogd3d3Lm9yYW5nZS1tZWRpYS5maQojCiMgR29yYW4gSWxpYywgPHVuaXF1M2VAZ21haWwuY29tPgojIFdlYjogd3d3LmljaC1tYWNoLWRhcy5hdAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBMSVNFIGlzIGEgQ01TIE1hZGUgU2ltcGxlIG1vZHVsZSB0aGF0IGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gY3JlYXRlCiMgbXVsdGlwbGUgbGlzdHMgdGhyb3VnaG91dCBhIHNpdGUuIEl0IGNhbiBiZSBkdXBsaWNhdGVkIGFuZCBnaXZlbiBmcmllbmRseQojIG5hbWVzIGZvciBlYXNpZXIgY2xpZW50IG1haW50ZW5hbmNlLgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIExJU0UKIyBMSVNFIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgTElTRSBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBFTkRfTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpjbGFzcyBsaXNlZmRfTUFNU011bHRpU2VsZWN0IGV4dGVuZHMgTElTRUZpZWxkZGVmQmFzZQp7CiAgcHJpdmF0ZSAkX29wdHMgPSBbXTsKICAKICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJiRkYl9pbmZvLCAkY2FsbGVyX29iaiA9IE5VTEwpCiAgewogICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkZGJfaW5mbywgJGNhbGxlcl9vYmopOwogICAgCiAgICAkdGhpcy0+U2V0RnJpZW5kbHlUeXBlKCAkdGhpcy0+TW9kTGFuZygnZmllbGRkZWZfJyAuICR0aGlzLT5HZXRUeXBlKCkgKSApOwogICAgXGNtc191dGlsczo6Z2V0X3NtYXJ0eSgpLT5hc3NpZ24oJ2xpc2UnLCBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdMSVNFJykpOwogIH0KICAgIAogIHN0YXRpYyBwdWJsaWMgZnVuY3Rpb24gR2V0TW9kdWxlRGVwcygpCiAgewogICAgCiAgICByZXR1cm4gWwogICAgICAgICAgICAgICAgICAnTUFNUycgPT4gJzEuMC5iJwogICAgXTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIEdldEhlYWRlckhUTUwoKQogIHsKICAgICR0bXBsID0gJyc7CiAgICBpZiggJHRoaXMtPkdldE9wdGlvblZhbHVlKCd0eXBlJywgJ011bHRpU2VsZWN0JykgPT0gJ011bHRpU2VsZWN0JyApCiAgICB7CiAgICAgICAgJHRtcGwgPSA8PDxFT1QKPGxpbmsgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ieyR0aGlzLT5HZXRVUkxQYXRoKCl9L2pxdWVyeS5tdWx0aS1zZWxlY3QuY3NzIiAvPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ7JHRoaXMtPkdldFVSTFBhdGgoKX0vanF1ZXJ5Lm11bHRpLXNlbGVjdC5qcyI+PC9zY3JpcHQ+CkVPVDsKICAgIH0KICAgIHJldHVybiAkdG1wbDsKICB9CiAgICAKICAvLyBnZXQgYXZhaWxhYmxlIGdyb3VwcyBmcm9tIE1BTVMgbW9kdWxlCiAgcHVibGljIGZ1bmN0aW9uIEdldE1BTVNHcm91cHMoKQogIHsgICAKICAgICRtYW1zID0gXGNtc191dGlsczo6Z2V0X21vZHVsZSgnTUFNUycpOwogICAgCiAgICBpZihpc19vYmplY3QoJG1hbXMpKQogICAgewogICAgICAkZ3JvdXBzID0gJG1hbXMtPkdldEdyb3VwTGlzdEZ1bGwoKTsKICAgICAgIAogICAgICBpZigkZ3JvdXBzKQogICAgICB7CiAgICAgICAgJG9wdGlvbnMgPSBhcnJheSgpOwogICAgICAgIAogICAgICAgIGZvcmVhY2goJGdyb3VwcyBhcyAkb3B0aW9uKSAKICAgICAgICB7CiAgICAgICAgICAkb3B0aW9uc1skb3B0aW9uWydpZCddXSA9ICRvcHRpb25bJ2dyb3VwbmFtZSddOwogICAgICAgIH0KICAgICAgfQogICAgICAKICAgICAgcmV0dXJuICRvcHRpb25zOwogICAgfQogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gR2V0TUFNU1Byb3BlcnRpZXMoKQogIHsKICAgICRtYW1zID0gXGNtc191dGlsczo6Z2V0X21vZHVsZSgnTUFNUycpOwogICAgJG1hbXNfcHJvcHMgPSAkbWFtcy0+R2V0UHJvcGVydHlEZWZucygpOwogICAgCiAgICAvLyByZW1vdmUgc2VsZnJlZyBwcm9wCiAgICBpZiggaXNzZXQoJG1hbXNfcHJvcHNbJ19fTUFNU1JFRyddKSApIHVuc2V0KCRtYW1zX3Byb3BzWydfX01BTVNSRUcnXSk7CiAgICAKICAgICRtYW1zX29wdGlvbnMgPSBhcnJheSgpOwogICAgJG1hbXNfb3B0aW9uc2IgPSBhcnJheSgpOwogICAgZm9yZWFjaCgkbWFtc19wcm9wcyBhcyAkb25lKSRtYW1zX29wdGlvbnNbICRvbmVbJ25hbWUnXSBdID0gJG9uZVsncHJvbXB0J107CiAgICBhc29ydCgkbWFtc19vcHRpb25zKTsKICAgICRtYW1zX29wdGlvbnNiWy0xXSA9IGxhbmcoJ25vbmUnKTsKICAgICRtYW1zX29wdGlvbnNiWzBdID0gJG1hbXMtPkxhbmcoJ3Byb21wdF91c2VybmFtZScpOwogICAgJG1hbXNfb3B0aW9ucyA9IGFycmF5X21lcmdlKCRtYW1zX29wdGlvbnNiLCAkbWFtc19vcHRpb25zKTsKICAgIAogICAgcmV0dXJuICRtYW1zX29wdGlvbnM7CiAgfSAKICAgICAKICBwdWJsaWMgZnVuY3Rpb24gR2V0T3B0aW9ucygpIAogIHsKICAgICRsaXNlID0gXGNtc191dGlsczo6Z2V0X21vZHVsZSgnTElTRScpOwogICAgCiAgICAkdGhpcy0+X29wdHNbJ3R5cGUnXSA9ICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgndHlwZScsICdNdWx0aVNlbGVjdCcpOwogICAgJHRoaXMtPl9vcHRzWyd0eXBlcyddID0gYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdNdWx0aVNlbGVjdCcgICAgICAgICA9PiAkbGlzZS0+TW9kTGFuZygnZmllbGRkZWZfTXVsdGlTZWxlY3QnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NoZWNrYm94R3JvdXAnICAgICAgID0+ICRsaXNlLT5Nb2RMYW5nKCdmaWVsZGRlZl9DaGVja2JveEdyb3VwJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdKUXVlcnlNdWx0aVNlbGVjdCcgICA9PiAkbGlzZS0+TW9kTGFuZygnZmllbGRkZWZfSlF1ZXJ5TXVsdGlTZWxlY3QnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIHJldHVybiAkdGhpcy0+X29wdHM7CiAgfQogICAgCiAgLy8gZ2V0IGxpc3Qgb2YgdXNlcnMgZnJvbSBNQU1TIG1vZHVsZSBiYXNlZCBvbiBzZWxlY3RlZCBncm91cAogIHB1YmxpYyBmdW5jdGlvbiBHZXRNQU1TVXNlckxpc3QoKQogIHsgICAgCiAgICAkbWFtcyA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01BTVMnKTsKICAgIAogICAgaWYoaXNfb2JqZWN0KCRtYW1zKSkKICAgIHsgICAgCiAgICAgIC8vIEdldFVzZXJzSW5Hcm91cCgpIGlzIGRlcHJlY2F0ZWQgYnV0IEdldEZ1bGxVc2Vyc0luR3JvdXAoKSBzZWVtcyB0byBoYXZlIGEgYnVnLCAKICAgICAgLy8gY2hhbmdlIHRoaXMgYWZ0ZXIgTUFNUyBCUiAjODc1MyBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL2J1Zy92aWV3Lzg3NTMgaXMgY29uZmlybWVkIGFuZCBmaXhlZAogICAgICAkZ3JvdXBzID0gIGV4cGxvZGUoJywnLCAkdGhpcy0+R2V0T3B0aW9uVmFsdWUoJ21hbXNfb3B0aW9ucycpICk7CiAgICAgICRtYW1zX3Byb3AgPSAkdGhpcy0+R2V0T3B0aW9uVmFsdWUoJ21hbXNfZmllbGQnKTsKICAgICAgJG1hbXNfcHJvcDIgPSAkdGhpcy0+R2V0T3B0aW9uVmFsdWUoJ21hbXNfZmllbGQyJyk7CiAgICAgICR1c2VfdXNlcm5hbWUgPSAkdGhpcy0+R2V0T3B0aW9uVmFsdWUoJ3VzZV91c2VybmFtZScpOwogICAgICAkdXNlX3VpZCA9ICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgndXNlX3VpZCcpOwogICAgICAkc2VwYXJhdG9yID0gJHRoaXMtPkdldE9wdGlvblZhbHVlKCdzZXBhcmF0b3InKTsKICAgICAgJHVzZXJzID0gYXJyYXkoKTsKICAgICAgCiAgICAgIGZvcmVhY2goJGdyb3VwcyBhcyAkZ3JvdXApCiAgICAgIHsKICAgICAgICAkdG1wdXNlcnMgPSAkbWFtcy0+R2V0RnVsbFVzZXJzSW5Hcm91cCgkZ3JvdXApOwogICAgICAgIGZvcmVhY2goJHRtcHVzZXJzIGFzICRvbmUpCiAgICAgICAgewogICAgICAgICAgaWYoIGFycmF5X2tleV9leGlzdHMoJG9uZVsnaWQnXSwgJHVzZXJzKSApIGNvbnRpbnVlOwogICAgICAgICAgCiAgICAgICAgICAkdWlkID0gKGJvb2wpJHVzZV91aWQgPyAnWycgLiAkb25lWydpZCddIC4gJ10gJyA6ICcnOyAKICAgICAgICAgICNub3cgbGV0cyBidWlsZCB0aGUgbXVsdGlzZWxlY3QKICAgICAgICAgIGlmKCR1c2VfdXNlcm5hbWUpCiAgICAgICAgICB7CiAgICAgICAgICAgICR1c2Vyc1skb25lWydpZCddXSA9ICR1aWQgLiAkb25lWyd1c2VybmFtZSddOwogICAgICAgICAgfQogICAgICAgICAgZWxzZQogICAgICAgICAgewogICAgICAgICAgICBpZiggJG1hbXNfcHJvcCA9PSBOVUxMIHx8IChpc19udW1lcmljKCRtYW1zX3Byb3ApICYmICRtYW1zX3Byb3AgPT0gLTEpICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICR1c2Vyc1skb25lWydpZCddXSA9ICR1aWQgLiAkb25lWyd1c2VybmFtZSddOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICR1c2Vyc1skb25lWydpZCddXSA9ICR1aWQ7CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgaWYoaXNfbnVtZXJpYygkbWFtc19wcm9wKSAmJiAkbWFtc19wcm9wID09IDApCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHVzZXJzWyRvbmVbJ2lkJ11dIC49ICRvbmVbJ3VzZXJuYW1lJ107CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkdXNlcnNbJG9uZVsnaWQnXV0gLj0gJG1hbXMtPkdldFVzZXJQcm9wZXJ0eUZ1bGwoJG1hbXNfcHJvcCwgJG9uZVsnaWQnXSk7CiAgICAgICAgICAgICAgfQogICAgIAogICAgICAgICAgICAgIGlmKCBpc19udW1lcmljKCRtYW1zX3Byb3AyKSAmJiAkbWFtc19wcm9wMiA9PSAwICYmICEoaXNfaW50KCRtYW1zX3Byb3ApICYmICRtYW1zX3Byb3AgPCAxKSApCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHVzZXJzWyRvbmVbJ2lkJ11dIC49ICRzZXBhcmF0b3IgLiAkb25lWyd1c2VybmFtZSddOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlaWYoICEoaXNfaW50KCRtYW1zX3Byb3AyKSAmJiAkbWFtc19wcm9wMiA9PSAtMSkgKQogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICR1c2Vyc1skb25lWydpZCddXSAuPSAkc2VwYXJhdG9yIC4gJG1hbXMtPkdldFVzZXJQcm9wZXJ0eUZ1bGwoJG1hbXNfcHJvcDIsICRvbmVbJ2lkJ10pOwogICAgICAgICAgICAgIH0gCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgIH0KICAgICAgCiAgICAgIGFzb3J0KCR1c2Vycyk7CiAgICAgIAogICAgICByZXR1cm4gJHVzZXJzOwogICAgfQogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gUmVuZGVyRm9yQWRtaW5MaXN0aW5nKCRpZCwgJHJldHVybmlkKQogIHsKICAgICR1c2VycyA9IChhcnJheSkkdGhpcy0+R2V0VmFsdWUoKTsKICAgICRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKICAgICRzbWFydHktPmFzc2lnbigndXNlcnMnLCAkdXNlcnMpOwogICAgcmV0dXJuIHBhcmVudDo6UmVuZGVyRm9yQWRtaW5MaXN0aW5nKCRpZCwgJHJldHVybmlkKTsKICB9Cn0vLyBlbmQgb2YgY2xhc3MKPz4=]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSMultiSelect/list.MAMSMultiSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmaWVsZGRlZi0+TW9kTGFuZygnZmllbGRkZWZfdXNlcnMnKX06IHskdXNlcnN8Y291bnR9]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSMultiSelect/output.MAMSMultiSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmaWVsZGRlZi5uYW1lfTogeyRmaWVsZGRlZi52YWx1ZX0=]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSSingleSelect</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSSingleSelect/admin.MAMSSingleSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRvcHRzID0gJGZpZWxkZGVmLT5HZXRPcHRpb25zKCl9Cnskc2VsX2dyb3VwcyA9IGV4cGxvZGUoJywnLCAkbWFtc19vcHRpb25zKX0KeyRzZWxfZ3JvdXBzID0gJGZpZWxkZGVmLT5HZXRPcHRpb25WYWx1ZSgnbWFtc19vcHRpb25zJyl9CnskZ3JvdXBzX29wdHMgPSAkZmllbGRkZWYtPkdldE1BTVNHcm91cHMoKX0KeyRkZWZzID0gJGZpZWxkZGVmLT5HZXRNQU1TUHJvcGVydGllcygpfQp7JHNlbF9kZWYgPSAkZmllbGRkZWYtPkdldE9wdGlvblZhbHVlKCdtYW1zX2ZpZWxkJyl9Cnskc2VsX2RlZjIgPSAkZmllbGRkZWYtPkdldE9wdGlvblZhbHVlKCdtYW1zX2ZpZWxkMicpfQoKPGZpZWxkc2V0PgogIDxsZWdlbmQ+e2xhbmcoJ29wdGlvbnMnKX08L2xlZ2VuZD4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGZpZWxkZGVmLT5Nb2RMYW5nKCdmaWVsZGRlZl9tYW1zX29wdGlvbnMnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgICAgPHNlbGVjdCBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbV9pbnB1dFttYW1zX29wdGlvbnNdW119IiBzaXplPSJ7JGdyb3Vwc19vcHRzfGNvdW50fSIgbXVsdGlwbGU+CiAgICAgICAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JGdyb3Vwc19vcHRzIHNlbGVjdGVkPSRzZWxfZ3JvdXBzfQogICAgICAgIDwvc2VsZWN0PiAgCiAgICA8L3A+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPjxkaXYgY2xhc3M9ImluZm9ybWF0aW9uIj57JGZpZWxkZGVmLT5Nb2RMYW5nKCdmaWVsZGRlZl9tYW1zX211bHRpc2VsZWN0X2hlbHAnKX08L2Rpdj48L3A+CiAgPC9kaXY+CiAgPGhyPiAKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGZpZWxkZGVmLT5Nb2RMYW5nKCdmaWVsZGRlZl91c2VfdWlkJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieyRhY3Rpb25pZH1jdXN0b21faW5wdXRbdXNlX3VpZF0iIHZhbHVlPSIwIiAvPgogICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbV9pbnB1dFt1c2VfdWlkXSIgdmFsdWU9IjEie2lmICRmaWVsZGRlZi0+R2V0T3B0aW9uVmFsdWUoJ3VzZV91aWQnKX1jaGVja2VkPSJjaGVja2VkInsvaWZ9IC8+CiAgPC9wPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+PGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPnskZmllbGRkZWYtPk1vZExhbmcoJ2ZpZWxkZGVmX3VzZV91aWRfaGVscCcpfTwvZGl2PjwvcD4KICA8L2Rpdj4KICA8aHI+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRmaWVsZGRlZi0+TW9kTGFuZygnZmllbGRkZWZfdXNlX3VzZXJuYW1lJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieyRhY3Rpb25pZH1jdXN0b21faW5wdXRbdXNlX3VzZXJuYW1lXSIgdmFsdWU9IjAiIC8+CiAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tX2lucHV0W3VzZV91c2VybmFtZV0iIHZhbHVlPSIxIntpZiAkZmllbGRkZWYtPkdldE9wdGlvblZhbHVlKCd1c2VfdXNlcm5hbWUnKX1jaGVja2VkPSJjaGVja2VkInsvaWZ9IC8+CiAgPC9wPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+PGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPnskZmllbGRkZWYtPk1vZExhbmcoJ2ZpZWxkZGVmX3VzZV91c2VybmFtZV9oZWxwJyl9PC9kaXY+PC9wPgogIDwvZGl2PgogIDxocj4gCiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRmaWVsZGRlZi0+TW9kTGFuZygnZmllbGRkZWZfbWFtc19maWVsZHMnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIHtodG1sX29wdGlvbnMgbmFtZT0ieyRhY3Rpb25pZH1jdXN0b21faW5wdXRbbWFtc19maWVsZF19IiBvcHRpb25zPSRkZWZzIHNlbGVjdGVkPSRzZWxfZGVmfQogICAgPC9wPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij48ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRmaWVsZGRlZi0+TW9kTGFuZygnZmllbGRkZWZfbWFtc19maWVsZHNfaGVscCcpfTwvZGl2PjwvcD4KICA8L2Rpdj4KICA8aHI+IAogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskZmllbGRkZWYtPk1vZExhbmcoJ2ZpZWxkZGVmX21hbXNfZmllbGRzMicpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAge2h0bWxfb3B0aW9ucyBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbV9pbnB1dFttYW1zX2ZpZWxkMl19IiBvcHRpb25zPSRkZWZzIHNlbGVjdGVkPSRzZWxfZGVmMn0KICAgIDwvcD4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+PGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPnskZmllbGRkZWYtPk1vZExhbmcoJ2ZpZWxkZGVmX21hbXNfZmllbGRzX2hlbHAnKX08L2Rpdj48L3A+CiAgPC9kaXY+CiAgPGhyPiAKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJICA8cCBjbGFzcz0icGFnZXRleHQiPnskZmllbGRkZWYtPk1vZExhbmcoJ2ZpZWxkZGVmX3NlcGFyYXRvcl9jaHInKX06PC9wPgoJICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tX2lucHV0W3NlcGFyYXRvcl0iIHZhbHVlPSJ7JGZpZWxkZGVmLT5HZXRPcHRpb25WYWx1ZSgnc2VwYXJhdG9yJywgJyAnKX0iIC8+CgkgIDwvcD4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+PGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPnskZmllbGRkZWYtPk1vZExhbmcoJ2ZpZWxkZGVmX3NlcGFyYXRvcl9jaHJfaGVscCcpfTwvZGl2PjwvcD4KICA8L2Rpdj4KICA8aHI+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGxpc2UtPk1vZExhbmcoJ2ZpZWxkZGVmX3R5cGUnKX06PC9wPgogICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgICA8c2VsZWN0IG5hbWU9InskYWN0aW9uaWR9Y3VzdG9tX2lucHV0W3R5cGVdIiBzdHlsZT0ibWF4LXdpZHRoOiA5OCU7Ij4KICAgICAgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kb3B0cy50eXBlcyBzZWxlY3RlZD0kZmllbGRkZWYtPkdldE9wdGlvblZhbHVlKCd0eXBlJywgJ0Ryb3Bkb3duJyl9CiAgICAgICAgPC9zZWxlY3Q+CiAgICAgIDwvcD4KICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij48ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRsaXNlLT5Nb2RMYW5nKCdmaWVsZGRlZl90eXBlX2hlbHAnKX08L2Rpdj48L3A+CiAgPC9kaXY+IAogIAo8L2ZpZWxkc2V0Pg==]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSSingleSelect/images</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSSingleSelect/images/switch.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAB40lEQVR4AWIgG4wCAKvkAPJXFAXwGRnLrqVlj5kva7bDZ+Nv27ZtG7kpY3zZC7Pe2T13Nq/5OxQKhasqlcrzX6FyudyRy+VArVZn/xtUKpU6isUi5PN50Ol03d/5sz0Wi73JZDLch55Op7lUKsUlk0kukUjgDAgtFAqAGhuNxuu/gu7ED41GA+r1Ou21Wg2q1SpUKhUolUpAhEA8HodwOAzBYBACgQBIJJLBN6S1tTWGBODiV1AKQ83wo9PpBIvFAlarFex2O9273W5wOBxvrl69uvgFkM/nnyIgzmAwpMh2q0KhKBJfdbCLRKK8QCBIkzdpnLETn95CmMfjQfir8+fPH/8aOIkOR40o9DfK9PS0yOfzocbPjhw5cuiLS6KFEB2NfkKTiTmPlUolS3KQ1Wg0rFarZYm2LBHGkmDgfActmZ+fl5hMpof79u3b/QVQLBZbSGRpWmSzWXgvGWw2G/oIXC4XNQ873qFPcUafMwyzh5Rd38u1McIQjJDvBIACvV4v+P1+GmWcEfoz12xaX19PIshsNlOgXq9/u7fA3HILGAS3gEEAxsBccwsYDLeAwQCir4LSMaEwZ0xMTKwAhtdfkKHAIJlOtWwXERERBYyE32BDqQn8/f3tcnNzg8k2YBQAAOLgc5CbVSwBAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSSingleSelect/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSSingleSelect/input.MAMSSingleSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyR0eXBlID0gJGZpZWxkZGVmLT5HZXRPcHRpb25WYWx1ZSgndHlwZScpfQp7JG9wdHMgPSAkZmllbGRkZWYtPkdldE1BTVNVc2VyTGlzdCgpfQoKeyRzZWwgPSAkZmllbGRkZWYtPkdldFZhbHVlKCl9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPnskZmllbGRkZWYtPkdldE5hbWUoKX17aWYgJGZpZWxkZGVmLT5Jc1JlcXVpcmVkKCl9KnsvaWZ9OjwvcD4KCTxwIGNsYXNzPSJwYWdlaW5wdXQiPgoJCXtpZiAkZmllbGRkZWYtPkdldERlc2MoKX0oeyRmaWVsZGRlZi0+R2V0RGVzYygpfSk8YnIgLz57L2lmfQogICAge2lmICR0eXBlID09ICdEcm9wZG93bid9ICAgICAgICAKICAgICAge2h0bWxfb3B0aW9ucyBuYW1lPSJ7JGFjdGlvbmlkfWN1c3RvbWZpZWxkW3skZmllbGRkZWYtPkdldElkKCl9XSIgb3B0aW9ucz0kb3B0cyBzZWxlY3RlZD0kc2VsfQogICAgey9pZn0gICAgCiAgICB7aWYgJHR5cGUgPT0gJ1JhZGlvR3JvdXAnfQogICAgICB7aHRtbF9yYWRpb3MgbmFtZT0ieyRhY3Rpb25pZH1jdXN0b21maWVsZFt7JGZpZWxkZGVmLT5HZXRJZCgpfV0iIG9wdGlvbnM9JG9wdHMgc2VsZWN0ZWQ9JHNlbCBzZXBhcmF0b3I9JzxiciAvPid9CiAgICB7L2lmfSAgICAgICAgICAKICAgIHtpZiAkdHlwZSA9PSAnSlF1ZXJ5TXVsdGlTZWxlY3QnfQogICAgICA8ZGl2IGNsYXNzPSJtcy1jb250YWluZXIiPgogICAgICAgIDxzZWxlY3QgaWQ9InskYWN0aW9uaWR9Y3VzdG9tZmllbGR7JGZpZWxkZGVmLT5HZXRJZCgpfSIgbmFtZT0ieyRhY3Rpb25pZH1jdXN0b21maWVsZFt7JGZpZWxkZGVmLT5HZXRJZCgpfV1bXX0iIHNpemU9Inskb3B0c3xjb3VudH0iIG11bHRpcGxlPiAKICAgICAgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kb3B0cyBzZWxlY3RlZD0kc2VsfQogICAgICAgIDwvc2VsZWN0PgogICAgICA8L2Rpdj4gCiAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAgICAgICAgLy8gZGlydHkgaGFjayB0byBhdm9pZCByZWN1cnNpb24uLi4KICAgICAgICAgICAgd2luZG93Lm1zX2RlcyA9IHRydWU7CiAgICAgICAgICAgICQoJyN7JGFjdGlvbmlkfWN1c3RvbWZpZWxkeyRmaWVsZGRlZi0+R2V0SWQoKX0nKS5tdWx0aVNlbGVjdCh7CiAgICAgICAgICAgICAgICAgYWZ0ZXJTZWxlY3Q6IGZ1bmN0aW9uKHZhbHVlcyl7CiAgICAgICAgICAgICAgICAgICBpZih3aW5kb3cubXNfZGVzKXsKICAgICAgICAgICAgICAgICAgICAgICAgICQoJyN7JGFjdGlvbmlkfWN1c3RvbWZpZWxkeyRmaWVsZGRlZi0+R2V0SWQoKX0nKS5tdWx0aVNlbGVjdCgnZGVzZWxlY3RfYWxsJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubXNfZGVzID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjeyRhY3Rpb25pZH1jdXN0b21maWVsZHskZmllbGRkZWYtPkdldElkKCl9JykubXVsdGlTZWxlY3QoJ3NlbGVjdCcsIHZhbHVlcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5tc19kZXMgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSAgICAKICAgICAgICAgICAgfSk7CiAgICAgIDwvc2NyaXB0PgogICAgey9pZn0KCTwvcD4KPC9kaXY+]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSSingleSelect/jquery.multi-select.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm1zLWNvbnRhaW5lcnsNCiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCcuLi9GRVVNdWx0aVNlbGVjdC9pbWFnZXMvc3dpdGNoLnBuZycpIG5vLXJlcGVhdCA1MCUgNTAlOw0KICB3aWR0aDogNDcwcHg7DQp9DQoNCi5tcy1jb250YWluZXI6YWZ0ZXJ7DQogIGNvbnRlbnQ6ICIuIjsNCiAgZGlzcGxheTogYmxvY2s7DQogIGhlaWdodDogMDsNCiAgbGluZS1oZWlnaHQ6IDA7DQogIGZvbnQtc2l6ZTogMDsNCiAgY2xlYXI6IGJvdGg7DQogIG1pbi1oZWlnaHQ6IDA7DQogIHZpc2liaWxpdHk6IGhpZGRlbjsNCn0NCg0KLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0YWJsZSwgLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0aW9uew0KICBiYWNrZ3JvdW5kOiAjZmZmOw0KICBjb2xvcjogIzU1NTU1NTsNCiAgZmxvYXQ6IGxlZnQ7DQogIHdpZHRoOiA0NSU7DQp9DQoubXMtY29udGFpbmVyIC5tcy1zZWxlY3Rpb257DQogIGZsb2F0OiByaWdodDsNCn0NCg0KLm1zLWNvbnRhaW5lciAubXMtbGlzdHsNCiAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSk7DQogIC1tb3otYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpOw0KICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSk7DQogIC13ZWJraXQtdHJhbnNpdGlvbjogYm9yZGVyIGxpbmVhciAwLjJzLCBib3gtc2hhZG93IGxpbmVhciAwLjJzOw0KICAtbW96LXRyYW5zaXRpb246IGJvcmRlciBsaW5lYXIgMC4ycywgYm94LXNoYWRvdyBsaW5lYXIgMC4yczsNCiAgLW1zLXRyYW5zaXRpb246IGJvcmRlciBsaW5lYXIgMC4ycywgYm94LXNoYWRvdyBsaW5lYXIgMC4yczsNCiAgLW8tdHJhbnNpdGlvbjogYm9yZGVyIGxpbmVhciAwLjJzLCBib3gtc2hhZG93IGxpbmVhciAwLjJzOw0KICB0cmFuc2l0aW9uOiBib3JkZXIgbGluZWFyIDAuMnMsIGJveC1zaGFkb3cgbGluZWFyIDAuMnM7DQogIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7DQogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4Ow0KICAtbW96LWJvcmRlci1yYWRpdXM6IDNweDsNCiAgYm9yZGVyLXJhZGl1czogM3B4Ow0KICBwb3NpdGlvbjogcmVsYXRpdmU7DQogIGhlaWdodDogMjAwcHg7DQogIHBhZGRpbmc6IDA7DQogIG92ZXJmbG93LXk6IGF1dG87DQp9DQoNCi5tcy1jb250YWluZXIgLm1zLWxpc3QubXMtZm9jdXN7DQogIGJvcmRlci1jb2xvcjogcmdiYSg4MiwgMTY4LCAyMzYsIDAuOCk7DQogIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpLCAwIDAgOHB4IHJnYmEoODIsIDE2OCwgMjM2LCAwLjYpOw0KICAtbW96LWJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDc1KSwgMCAwIDhweCByZ2JhKDgyLCAxNjgsIDIzNiwgMC42KTsNCiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNzUpLCAwIDAgOHB4IHJnYmEoODIsIDE2OCwgMjM2LCAwLjYpOw0KICBvdXRsaW5lOiAwOw0KICBvdXRsaW5lOiB0aGluIGRvdHRlZCBcOTsNCn0NCg0KLm1zLWNvbnRhaW5lciB1bHsNCiAgbWFyZ2luOiAwOw0KICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7DQogIHBhZGRpbmc6IDA7DQp9DQoNCi5tcy1jb250YWluZXIgLm1zLW9wdGdyb3VwLWNvbnRhaW5lcnsNCiAgd2lkdGg6IDEwMCU7DQp9DQoNCi5tcy1jb250YWluZXIgLm1zLW9wdGdyb3VwLWxhYmVsew0KICBtYXJnaW46IDA7DQogIHBhZGRpbmc6IDVweCAwcHggMHB4IDVweDsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICBjb2xvcjogIzk5OTsNCn0NCg0KLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0YWJsZSBsaS5tcy1lbGVtLXNlbGVjdGFibGUsDQoubXMtY29udGFpbmVyIC5tcy1zZWxlY3Rpb24gbGkubXMtZWxlbS1zZWxlY3Rpb257DQogIGJvcmRlci1ib3R0b206IDFweCAjZWVlIHNvbGlkOw0KICBwYWRkaW5nOiAycHggMTBweDsNCiAgY29sb3I6ICM1NTU7DQogIGZvbnQtc2l6ZTogMTRweDsNCn0NCg0KLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0YWJsZSBsaS5tcy1ob3ZlciwNCi5tcy1jb250YWluZXIgLm1zLXNlbGVjdGlvbiBsaS5tcy1ob3ZlcnsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICBjb2xvcjogI2ZmZjsNCiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDhjOw0KfQ0KDQoubXMtY29udGFpbmVyIC5tcy1zZWxlY3RhYmxlIGxpLmRpc2FibGVkLA0KLm1zLWNvbnRhaW5lciAubXMtc2VsZWN0aW9uIGxpLmRpc2FibGVkew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOw0KICBjb2xvcjogI2FhYTsNCiAgY3Vyc29yOiB0ZXh0Ow0KfQ==]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSSingleSelect/jquery.multi-select.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKKiBNdWx0aVNlbGVjdCB2MC45LjEyCiogQ29weXJpZ2h0IChjKSAyMDEyIExvdWlzIEN1bnkKKgoqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlLiBJdCBjb21lcyB3aXRob3V0IGFueSB3YXJyYW50eSwgdG8KKiB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBhcHBsaWNhYmxlIGxhdy4gWW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKKiBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRG8gV2hhdCBUaGUgRnVjayBZb3UgV2FudAoqIFRvIFB1YmxpYyBMaWNlbnNlLCBWZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSBTYW0gSG9jZXZhci4gU2VlCiogaHR0cDovL3NhbS56b3kub3JnL3d0ZnBsL0NPUFlJTkcgZm9yIG1vcmUgZGV0YWlscy4KKi8KCiFmdW5jdGlvbiAoJCkgewoKICAidXNlIHN0cmljdCI7CgoKIC8qIE1VTFRJU0VMRUNUIENMQVNTIERFRklOSVRJT04KICAqID09PT09PT09PT09PT09PT09PT09PT0gKi8KCiAgdmFyIE11bHRpU2VsZWN0ID0gZnVuY3Rpb24gKGVsZW1lbnQsIG9wdGlvbnMpIHsKICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7CiAgICB0aGlzLiRlbGVtZW50ID0gJChlbGVtZW50KTsKICAgIHRoaXMuJGNvbnRhaW5lciA9ICQoJzxkaXYvPicsIHsgJ2NsYXNzJzogIm1zLWNvbnRhaW5lciIgfSk7CiAgICB0aGlzLiRzZWxlY3RhYmxlQ29udGFpbmVyID0gJCgnPGRpdi8+JywgeyAnY2xhc3MnOiAnbXMtc2VsZWN0YWJsZScgfSk7CiAgICB0aGlzLiRzZWxlY3Rpb25Db250YWluZXIgPSAkKCc8ZGl2Lz4nLCB7ICdjbGFzcyc6ICdtcy1zZWxlY3Rpb24nIH0pOwogICAgdGhpcy4kc2VsZWN0YWJsZVVsID0gJCgnPHVsLz4nLCB7ICdjbGFzcyc6ICJtcy1saXN0IiwgJ3RhYmluZGV4JyA6ICctMScgfSk7CiAgICB0aGlzLiRzZWxlY3Rpb25VbCA9ICQoJzx1bC8+JywgeyAnY2xhc3MnOiAibXMtbGlzdCIsICd0YWJpbmRleCcgOiAnLTEnIH0pOwogICAgdGhpcy5zY3JvbGxUbyA9IDA7CiAgICB0aGlzLmVsZW1zU2VsZWN0b3IgPSAnbGk6dmlzaWJsZTpub3QoLm1zLW9wdGdyb3VwLWxhYmVsLC5tcy1vcHRncm91cC1jb250YWluZXIsLicrb3B0aW9ucy5kaXNhYmxlZENsYXNzKycpJzsKICB9OwoKICBNdWx0aVNlbGVjdC5wcm90b3R5cGUgPSB7CiAgICBjb25zdHJ1Y3RvcjogTXVsdGlTZWxlY3QsCgogICAgaW5pdDogZnVuY3Rpb24oKXsKICAgICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICAgICAgbXMgPSB0aGlzLiRlbGVtZW50OwoKICAgICAgaWYgKG1zLm5leHQoJy5tcy1jb250YWluZXInKS5sZW5ndGggPT09IDApewogICAgICAgIG1zLmNzcyh7IHBvc2l0aW9uOiAnYWJzb2x1dGUnLCBsZWZ0OiAnLTk5OTlweCcgfSk7CiAgICAgICAgbXMuYXR0cignaWQnLCBtcy5hdHRyKCdpZCcpID8gbXMuYXR0cignaWQnKSA6IE1hdGguY2VpbChNYXRoLnJhbmRvbSgpKjEwMDApKydtdWx0aXNlbGVjdCcpOwogICAgICAgIHRoaXMuJGNvbnRhaW5lci5hdHRyKCdpZCcsICdtcy0nK21zLmF0dHIoJ2lkJykpOwogICAgICAgIHRoaXMuJGNvbnRhaW5lci5hZGRDbGFzcyh0aGF0Lm9wdGlvbnMuY3NzQ2xhc3MpOwogICAgICAgIG1zLmZpbmQoJ29wdGlvbicpLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgIHRoYXQuZ2VuZXJhdGVMaXNGcm9tT3B0aW9uKHRoaXMpOwogICAgICAgIH0pOwoKICAgICAgICB0aGlzLiRzZWxlY3Rpb25VbC5maW5kKCcubXMtb3B0Z3JvdXAtbGFiZWwnKS5oaWRlKCk7CgogICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0YWJsZUhlYWRlcil7CiAgICAgICAgICB0aGF0LiRzZWxlY3RhYmxlQ29udGFpbmVyLmFwcGVuZCh0aGF0Lm9wdGlvbnMuc2VsZWN0YWJsZUhlYWRlcik7CiAgICAgICAgfQogICAgICAgIHRoYXQuJHNlbGVjdGFibGVDb250YWluZXIuYXBwZW5kKHRoYXQuJHNlbGVjdGFibGVVbCk7CiAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5zZWxlY3RhYmxlRm9vdGVyKXsKICAgICAgICAgIHRoYXQuJHNlbGVjdGFibGVDb250YWluZXIuYXBwZW5kKHRoYXQub3B0aW9ucy5zZWxlY3RhYmxlRm9vdGVyKTsKICAgICAgICB9CgogICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0aW9uSGVhZGVyKXsKICAgICAgICAgIHRoYXQuJHNlbGVjdGlvbkNvbnRhaW5lci5hcHBlbmQodGhhdC5vcHRpb25zLnNlbGVjdGlvbkhlYWRlcik7CiAgICAgICAgfQogICAgICAgIHRoYXQuJHNlbGVjdGlvbkNvbnRhaW5lci5hcHBlbmQodGhhdC4kc2VsZWN0aW9uVWwpOwogICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0aW9uRm9vdGVyKXsKICAgICAgICAgIHRoYXQuJHNlbGVjdGlvbkNvbnRhaW5lci5hcHBlbmQodGhhdC5vcHRpb25zLnNlbGVjdGlvbkZvb3Rlcik7CiAgICAgICAgfQoKICAgICAgICB0aGF0LiRjb250YWluZXIuYXBwZW5kKHRoYXQuJHNlbGVjdGFibGVDb250YWluZXIpOwogICAgICAgIHRoYXQuJGNvbnRhaW5lci5hcHBlbmQodGhhdC4kc2VsZWN0aW9uQ29udGFpbmVyKTsKICAgICAgICBtcy5hZnRlcih0aGF0LiRjb250YWluZXIpOwoKICAgICAgICB0aGF0LmFjdGl2ZU1vdXNlKHRoYXQuJHNlbGVjdGFibGVVbCk7CiAgICAgICAgdGhhdC5hY3RpdmVLZXlib2FyZCh0aGF0LiRzZWxlY3RhYmxlVWwpOwoKICAgICAgICB2YXIgYWN0aW9uID0gdGhhdC5vcHRpb25zLmRibENsaWNrID8gJ2RibGNsaWNrJyA6ICdjbGljayc7CgogICAgICAgIHRoYXQuJHNlbGVjdGFibGVVbC5vbihhY3Rpb24sICcubXMtZWxlbS1zZWxlY3RhYmxlJywgZnVuY3Rpb24oKXsKICAgICAgICAgIHRoYXQuc2VsZWN0KCQodGhpcykuZGF0YSgnbXMtdmFsdWUnKSk7CiAgICAgICAgfSk7CiAgICAgICAgdGhhdC4kc2VsZWN0aW9uVWwub24oYWN0aW9uLCAnLm1zLWVsZW0tc2VsZWN0aW9uJywgZnVuY3Rpb24oKXsKICAgICAgICAgIHRoYXQuZGVzZWxlY3QoJCh0aGlzKS5kYXRhKCdtcy12YWx1ZScpKTsKICAgICAgICB9KTsKCiAgICAgICAgdGhhdC5hY3RpdmVNb3VzZSh0aGF0LiRzZWxlY3Rpb25VbCk7CiAgICAgICAgdGhhdC5hY3RpdmVLZXlib2FyZCh0aGF0LiRzZWxlY3Rpb25VbCk7CgogICAgICAgIG1zLm9uKCdmb2N1cycsIGZ1bmN0aW9uKCl7CiAgICAgICAgICB0aGF0LiRzZWxlY3RhYmxlVWwuZm9jdXMoKTsKICAgICAgICB9KTsKICAgICAgfQoKICAgICAgdmFyIHNlbGVjdGVkVmFsdWVzID0gbXMuZmluZCgnb3B0aW9uOnNlbGVjdGVkJykubWFwKGZ1bmN0aW9uKCl7IHJldHVybiAkKHRoaXMpLnZhbCgpOyB9KS5nZXQoKTsKICAgICAgdGhhdC5zZWxlY3Qoc2VsZWN0ZWRWYWx1ZXMsICdpbml0Jyk7CgogICAgICBpZiAodHlwZW9mIHRoYXQub3B0aW9ucy5hZnRlckluaXQgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICB0aGF0Lm9wdGlvbnMuYWZ0ZXJJbml0LmNhbGwodGhpcywgdGhpcy4kY29udGFpbmVyKTsKICAgICAgfQogICAgfSwKCiAgICAnZ2VuZXJhdGVMaXNGcm9tT3B0aW9uJyA6IGZ1bmN0aW9uKG9wdGlvbiwgaW5kZXgsICRjb250YWluZXIpewogICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICBtcyA9IHRoYXQuJGVsZW1lbnQsCiAgICAgICAgICBhdHRyaWJ1dGVzID0gIiIsCiAgICAgICAgICAkb3B0aW9uID0gJChvcHRpb24pOwoKICAgICAgZm9yICh2YXIgY3B0ID0gMDsgY3B0IDwgb3B0aW9uLmF0dHJpYnV0ZXMubGVuZ3RoOyBjcHQrKyl7CiAgICAgICAgdmFyIGF0dHIgPSBvcHRpb24uYXR0cmlidXRlc1tjcHRdOwoKICAgICAgICBpZihhdHRyLm5hbWUgIT09ICd2YWx1ZScgJiYgYXR0ci5uYW1lICE9PSAnZGlzYWJsZWQnKXsKICAgICAgICAgIGF0dHJpYnV0ZXMgKz0gYXR0ci5uYW1lKyc9IicrYXR0ci52YWx1ZSsnIiAnOwogICAgICAgIH0KICAgICAgfQogICAgICB2YXIgc2VsZWN0YWJsZUxpID0gJCgnPGxpICcrYXR0cmlidXRlcysnPjxzcGFuPicrdGhhdC5lc2NhcGVIVE1MKCRvcHRpb24udGV4dCgpKSsnPC9zcGFuPjwvbGk+JyksCiAgICAgICAgICBzZWxlY3RlZExpID0gc2VsZWN0YWJsZUxpLmNsb25lKCksCiAgICAgICAgICB2YWx1ZSA9ICRvcHRpb24udmFsKCksCiAgICAgICAgICBlbGVtZW50SWQgPSB0aGF0LnNhbml0aXplKHZhbHVlKTsKCiAgICAgIHNlbGVjdGFibGVMaQogICAgICAgIC5kYXRhKCdtcy12YWx1ZScsIHZhbHVlKQogICAgICAgIC5hZGRDbGFzcygnbXMtZWxlbS1zZWxlY3RhYmxlJykKICAgICAgICAuYXR0cignaWQnLCBlbGVtZW50SWQrJy1zZWxlY3RhYmxlJyk7CgogICAgICBzZWxlY3RlZExpCiAgICAgICAgLmRhdGEoJ21zLXZhbHVlJywgdmFsdWUpCiAgICAgICAgLmFkZENsYXNzKCdtcy1lbGVtLXNlbGVjdGlvbicpCiAgICAgICAgLmF0dHIoJ2lkJywgZWxlbWVudElkKyctc2VsZWN0aW9uJykKICAgICAgICAuaGlkZSgpOwoKICAgICAgaWYgKCRvcHRpb24ucHJvcCgnZGlzYWJsZWQnKSB8fCBtcy5wcm9wKCdkaXNhYmxlZCcpKXsKICAgICAgICBzZWxlY3RlZExpLmFkZENsYXNzKHRoYXQub3B0aW9ucy5kaXNhYmxlZENsYXNzKTsKICAgICAgICBzZWxlY3RhYmxlTGkuYWRkQ2xhc3ModGhhdC5vcHRpb25zLmRpc2FibGVkQ2xhc3MpOwogICAgICB9CgogICAgICB2YXIgJG9wdGdyb3VwID0gJG9wdGlvbi5wYXJlbnQoJ29wdGdyb3VwJyk7CgogICAgICBpZiAoJG9wdGdyb3VwLmxlbmd0aCA+IDApewogICAgICAgIHZhciBvcHRncm91cExhYmVsID0gJG9wdGdyb3VwLmF0dHIoJ2xhYmVsJyksCiAgICAgICAgICAgIG9wdGdyb3VwSWQgPSB0aGF0LnNhbml0aXplKG9wdGdyb3VwTGFiZWwpLAogICAgICAgICAgICAkc2VsZWN0YWJsZU9wdGdyb3VwID0gdGhhdC4kc2VsZWN0YWJsZVVsLmZpbmQoJyNvcHRncm91cC1zZWxlY3RhYmxlLScrb3B0Z3JvdXBJZCksCiAgICAgICAgICAgICRzZWxlY3Rpb25PcHRncm91cCA9IHRoYXQuJHNlbGVjdGlvblVsLmZpbmQoJyNvcHRncm91cC1zZWxlY3Rpb24tJytvcHRncm91cElkKTsKCiAgICAgICAgaWYgKCRzZWxlY3RhYmxlT3B0Z3JvdXAubGVuZ3RoID09PSAwKXsKICAgICAgICAgIHZhciBvcHRncm91cENvbnRhaW5lclRwbCA9ICc8bGkgY2xhc3M9Im1zLW9wdGdyb3VwLWNvbnRhaW5lciI+PC9saT4nLAogICAgICAgICAgICAgIG9wdGdyb3VwVHBsID0gJzx1bCBjbGFzcz0ibXMtb3B0Z3JvdXAiPjxsaSBjbGFzcz0ibXMtb3B0Z3JvdXAtbGFiZWwiPjxzcGFuPicrb3B0Z3JvdXBMYWJlbCsnPC9zcGFuPjwvbGk+PC91bD4nOwoKICAgICAgICAgICRzZWxlY3RhYmxlT3B0Z3JvdXAgPSAkKG9wdGdyb3VwQ29udGFpbmVyVHBsKTsKICAgICAgICAgICRzZWxlY3Rpb25PcHRncm91cCA9ICQob3B0Z3JvdXBDb250YWluZXJUcGwpOwogICAgICAgICAgJHNlbGVjdGFibGVPcHRncm91cC5hdHRyKCdpZCcsICdvcHRncm91cC1zZWxlY3RhYmxlLScrb3B0Z3JvdXBJZCk7CiAgICAgICAgICAkc2VsZWN0aW9uT3B0Z3JvdXAuYXR0cignaWQnLCAnb3B0Z3JvdXAtc2VsZWN0aW9uLScrb3B0Z3JvdXBJZCk7CiAgICAgICAgICAkc2VsZWN0YWJsZU9wdGdyb3VwLmFwcGVuZCgkKG9wdGdyb3VwVHBsKSk7CiAgICAgICAgICAkc2VsZWN0aW9uT3B0Z3JvdXAuYXBwZW5kKCQob3B0Z3JvdXBUcGwpKTsKICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuc2VsZWN0YWJsZU9wdGdyb3VwKXsKICAgICAgICAgICAgJHNlbGVjdGFibGVPcHRncm91cC5maW5kKCcubXMtb3B0Z3JvdXAtbGFiZWwnKS5vbignY2xpY2snLCBmdW5jdGlvbigpewogICAgICAgICAgICAgIHZhciB2YWx1ZXMgPSAkb3B0Z3JvdXAuY2hpbGRyZW4oJzpub3QoOnNlbGVjdGVkLCA6ZGlzYWJsZWQpJykubWFwKGZ1bmN0aW9uKCl7IHJldHVybiAkKHRoaXMpLnZhbCgpO30pLmdldCgpOwogICAgICAgICAgICAgIHRoYXQuc2VsZWN0KHZhbHVlcyk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAkc2VsZWN0aW9uT3B0Z3JvdXAuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgICAgICAgICAgICB2YXIgdmFsdWVzID0gJG9wdGdyb3VwLmNoaWxkcmVuKCc6c2VsZWN0ZWQ6bm90KDpkaXNhYmxlZCknKS5tYXAoZnVuY3Rpb24oKXsgcmV0dXJuICQodGhpcykudmFsKCk7fSkuZ2V0KCk7CiAgICAgICAgICAgICAgdGhhdC5kZXNlbGVjdCh2YWx1ZXMpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICAgIHRoYXQuJHNlbGVjdGFibGVVbC5hcHBlbmQoJHNlbGVjdGFibGVPcHRncm91cCk7CiAgICAgICAgICB0aGF0LiRzZWxlY3Rpb25VbC5hcHBlbmQoJHNlbGVjdGlvbk9wdGdyb3VwKTsKICAgICAgICB9CiAgICAgICAgaW5kZXggPSBpbmRleCA9PT0gdW5kZWZpbmVkID8gJHNlbGVjdGFibGVPcHRncm91cC5maW5kKCd1bCcpLmNoaWxkcmVuKCkubGVuZ3RoIDogaW5kZXggKyAxOwogICAgICAgIHNlbGVjdGFibGVMaS5pbnNlcnRBdChpbmRleCwgJHNlbGVjdGFibGVPcHRncm91cC5jaGlsZHJlbigpKTsKICAgICAgICBzZWxlY3RlZExpLmluc2VydEF0KGluZGV4LCAkc2VsZWN0aW9uT3B0Z3JvdXAuY2hpbGRyZW4oKSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaW5kZXggPSBpbmRleCA9PT0gdW5kZWZpbmVkID8gdGhhdC4kc2VsZWN0YWJsZVVsLmNoaWxkcmVuKCkubGVuZ3RoIDogaW5kZXg7CgogICAgICAgIHNlbGVjdGFibGVMaS5pbnNlcnRBdChpbmRleCwgdGhhdC4kc2VsZWN0YWJsZVVsKTsKICAgICAgICBzZWxlY3RlZExpLmluc2VydEF0KGluZGV4LCB0aGF0LiRzZWxlY3Rpb25VbCk7CiAgICAgIH0KICAgIH0sCgogICAgJ2FkZE9wdGlvbicgOiBmdW5jdGlvbihvcHRpb25zKXsKICAgICAgdmFyIHRoYXQgPSB0aGlzOwoKICAgICAgaWYgKG9wdGlvbnMudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBvcHRpb25zLnZhbHVlICE9PSBudWxsKXsKICAgICAgICBvcHRpb25zID0gW29wdGlvbnNdOwogICAgICB9IAogICAgICAkLmVhY2gob3B0aW9ucywgZnVuY3Rpb24oaW5kZXgsIG9wdGlvbil7CiAgICAgICAgaWYgKG9wdGlvbi52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbi52YWx1ZSAhPT0gbnVsbCAmJgogICAgICAgICAgICB0aGF0LiRlbGVtZW50LmZpbmQoIm9wdGlvblt2YWx1ZT0nIitvcHRpb24udmFsdWUrIiddIikubGVuZ3RoID09PSAwKXsKICAgICAgICAgIHZhciAkb3B0aW9uID0gJCgnPG9wdGlvbiB2YWx1ZT0iJytvcHRpb24udmFsdWUrJyI+JytvcHRpb24udGV4dCsnPC9vcHRpb24+JyksCiAgICAgICAgICAgICAgaW5kZXggPSBwYXJzZUludCgodHlwZW9mIG9wdGlvbi5pbmRleCA9PT0gJ3VuZGVmaW5lZCcgPyB0aGF0LiRlbGVtZW50LmNoaWxkcmVuKCkubGVuZ3RoIDogb3B0aW9uLmluZGV4KSksCiAgICAgICAgICAgICAgJGNvbnRhaW5lciA9IG9wdGlvbi5uZXN0ZWQgPT09IHVuZGVmaW5lZCA/IHRoYXQuJGVsZW1lbnQgOiAkKCJvcHRncm91cFtsYWJlbD0nIitvcHRpb24ubmVzdGVkKyInXSIpOwoKICAgICAgICAgICRvcHRpb24uaW5zZXJ0QXQoaW5kZXgsICRjb250YWluZXIpOwogICAgICAgICAgdGhhdC5nZW5lcmF0ZUxpc0Zyb21PcHRpb24oJG9wdGlvbi5nZXQoMCksIGluZGV4LCBvcHRpb24ubmVzdGVkKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKCiAgICAnZXNjYXBlSFRNTCcgOiBmdW5jdGlvbih0ZXh0KXsKICAgICAgcmV0dXJuICQoIjxkaXY+IikudGV4dCh0ZXh0KS5odG1sKCk7CiAgICB9LAoKICAgICdhY3RpdmVLZXlib2FyZCcgOiBmdW5jdGlvbigkbGlzdCl7CiAgICAgIHZhciB0aGF0ID0gdGhpczsKCiAgICAgICRsaXN0Lm9uKCdmb2N1cycsIGZ1bmN0aW9uKCl7CiAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnbXMtZm9jdXMnKTsKICAgICAgfSkKICAgICAgLm9uKCdibHVyJywgZnVuY3Rpb24oKXsKICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdtcy1mb2N1cycpOwogICAgICB9KQogICAgICAub24oJ2tleWRvd24nLCBmdW5jdGlvbihlKXsKICAgICAgICBzd2l0Y2ggKGUud2hpY2gpIHsKICAgICAgICAgIGNhc2UgNDA6CiAgICAgICAgICBjYXNlIDM4OgogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgIHRoYXQubW92ZUhpZ2hsaWdodCgkKHRoaXMpLCAoZS53aGljaCA9PT0gMzgpID8gLTEgOiAxKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgY2FzZSAzNzoKICAgICAgICAgIGNhc2UgMzk6CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgdGhhdC5zd2l0Y2hMaXN0KCRsaXN0KTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICBpZih0aGF0LiRlbGVtZW50LmlzKCdbdGFiaW5kZXhdJykpewogICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICB2YXIgdGFiaW5kZXggPSBwYXJzZUludCh0aGF0LiRlbGVtZW50LmF0dHIoJ3RhYmluZGV4JyksIDEwKTsKICAgICAgICAgICAgICB0YWJpbmRleCA9IChlLnNoaWZ0S2V5KSA/IHRhYmluZGV4LTEgOiB0YWJpbmRleCsxOwogICAgICAgICAgICAgICQoJ1t0YWJpbmRleD0iJysodGFiaW5kZXgpKyciXScpLmZvY3VzKCk7CiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICBpZihlLnNoaWZ0S2V5KXsKICAgICAgICAgICAgICAgIHRoYXQuJGVsZW1lbnQudHJpZ2dlcignZm9jdXMnKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYoJC5pbkFycmF5KGUud2hpY2gsIHRoYXQub3B0aW9ucy5rZXlTZWxlY3QpID4gLTEpewogICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgIHRoYXQuc2VsZWN0SGlnaGxpZ2h0ZWQoJGxpc3QpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9LAoKICAgICdtb3ZlSGlnaGxpZ2h0JzogZnVuY3Rpb24oJGxpc3QsIGRpcmVjdGlvbil7CiAgICAgIHZhciAkZWxlbXMgPSAkbGlzdC5maW5kKHRoaXMuZWxlbXNTZWxlY3RvciksCiAgICAgICAgICAkY3VyckVsZW0gPSAkZWxlbXMuZmlsdGVyKCcubXMtaG92ZXInKSwKICAgICAgICAgICRuZXh0RWxlbSA9IG51bGwsCiAgICAgICAgICBlbGVtSGVpZ2h0ID0gJGVsZW1zLmZpcnN0KCkub3V0ZXJIZWlnaHQoKSwKICAgICAgICAgIGNvbnRhaW5lckhlaWdodCA9ICRsaXN0LmhlaWdodCgpLAogICAgICAgICAgY29udGFpbmVyU2VsZWN0b3IgPSAnIycrdGhpcy4kY29udGFpbmVyLnByb3AoJ2lkJyk7CgogICAgICAkZWxlbXMucmVtb3ZlQ2xhc3MoJ21zLWhvdmVyJyk7CiAgICAgIGlmIChkaXJlY3Rpb24gPT09IDEpeyAvLyBET1dOCgogICAgICAgICRuZXh0RWxlbSA9ICRjdXJyRWxlbS5uZXh0QWxsKHRoaXMuZWxlbXNTZWxlY3RvcikuZmlyc3QoKTsKICAgICAgICBpZiAoJG5leHRFbGVtLmxlbmd0aCA9PT0gMCl7CiAgICAgICAgICB2YXIgJG9wdGdyb3VwVWwgPSAkY3VyckVsZW0ucGFyZW50KCk7CgogICAgICAgICAgaWYgKCRvcHRncm91cFVsLmhhc0NsYXNzKCdtcy1vcHRncm91cCcpKXsKICAgICAgICAgICAgdmFyICRvcHRncm91cExpID0gJG9wdGdyb3VwVWwucGFyZW50KCksCiAgICAgICAgICAgICAgICAkbmV4dE9wdGdyb3VwTGkgPSAkb3B0Z3JvdXBMaS5uZXh0KCc6dmlzaWJsZScpOwoKICAgICAgICAgICAgaWYgKCRuZXh0T3B0Z3JvdXBMaS5sZW5ndGggPiAwKXsKICAgICAgICAgICAgICAkbmV4dEVsZW0gPSAkbmV4dE9wdGdyb3VwTGkuZmluZCh0aGlzLmVsZW1zU2VsZWN0b3IpLmZpcnN0KCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgJG5leHRFbGVtID0gJGVsZW1zLmZpcnN0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRuZXh0RWxlbSA9ICRlbGVtcy5maXJzdCgpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09IC0xKXsgLy8gVVAKCiAgICAgICAgJG5leHRFbGVtID0gJGN1cnJFbGVtLnByZXZBbGwodGhpcy5lbGVtc1NlbGVjdG9yKS5maXJzdCgpOwogICAgICAgIGlmICgkbmV4dEVsZW0ubGVuZ3RoID09PSAwKXsKICAgICAgICAgIHZhciAkb3B0Z3JvdXBVbCA9ICRjdXJyRWxlbS5wYXJlbnQoKTsKCiAgICAgICAgICBpZiAoJG9wdGdyb3VwVWwuaGFzQ2xhc3MoJ21zLW9wdGdyb3VwJykpewogICAgICAgICAgICB2YXIgJG9wdGdyb3VwTGkgPSAkb3B0Z3JvdXBVbC5wYXJlbnQoKSwKICAgICAgICAgICAgICAgICRwcmV2T3B0Z3JvdXBMaSA9ICRvcHRncm91cExpLnByZXYoJzp2aXNpYmxlJyk7CgogICAgICAgICAgICBpZiAoJHByZXZPcHRncm91cExpLmxlbmd0aCA+IDApewogICAgICAgICAgICAgICRuZXh0RWxlbSA9ICRwcmV2T3B0Z3JvdXBMaS5maW5kKHRoaXMuZWxlbXNTZWxlY3RvcikubGFzdCgpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICRuZXh0RWxlbSA9ICRlbGVtcy5sYXN0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRuZXh0RWxlbSA9ICRlbGVtcy5sYXN0KCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmICgkbmV4dEVsZW0ubGVuZ3RoID4gMCl7CiAgICAgICAgJG5leHRFbGVtLmFkZENsYXNzKCdtcy1ob3ZlcicpOwogICAgICAgIHZhciBzY3JvbGxUbyA9ICRsaXN0LnNjcm9sbFRvcCgpICsgJG5leHRFbGVtLnBvc2l0aW9uKCkudG9wIC0gCiAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVySGVpZ2h0IC8gMiArIGVsZW1IZWlnaHQgLyAyOwoKICAgICAgICAkbGlzdC5zY3JvbGxUb3Aoc2Nyb2xsVG8pOwogICAgICB9CiAgICB9LAoKICAgICdzZWxlY3RIaWdobGlnaHRlZCcgOiBmdW5jdGlvbigkbGlzdCl7CiAgICAgIHZhciAkZWxlbXMgPSAkbGlzdC5maW5kKHRoaXMuZWxlbXNTZWxlY3RvciksCiAgICAgICAgICAkaGlnaGxpZ2h0ZWRFbGVtID0gJGVsZW1zLmZpbHRlcignLm1zLWhvdmVyJykuZmlyc3QoKTsKCiAgICAgIGlmICgkaGlnaGxpZ2h0ZWRFbGVtLmxlbmd0aCA+IDApewogICAgICAgIGlmICgkbGlzdC5wYXJlbnQoKS5oYXNDbGFzcygnbXMtc2VsZWN0YWJsZScpKXsKICAgICAgICAgIHRoaXMuc2VsZWN0KCRoaWdobGlnaHRlZEVsZW0uZGF0YSgnbXMtdmFsdWUnKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuZGVzZWxlY3QoJGhpZ2hsaWdodGVkRWxlbS5kYXRhKCdtcy12YWx1ZScpKTsKICAgICAgICB9CiAgICAgICAgJGVsZW1zLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICB9CiAgICB9LAoKICAgICdzd2l0Y2hMaXN0JyA6IGZ1bmN0aW9uKCRsaXN0KXsKICAgICAgJGxpc3QuYmx1cigpOwogICAgICB0aGlzLiRjb250YWluZXIuZmluZCh0aGlzLmVsZW1zU2VsZWN0b3IpLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICBpZiAoJGxpc3QucGFyZW50KCkuaGFzQ2xhc3MoJ21zLXNlbGVjdGFibGUnKSl7CiAgICAgICAgdGhpcy4kc2VsZWN0aW9uVWwuZm9jdXMoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZm9jdXMoKTsKICAgICAgfQogICAgfSwKCiAgICAnYWN0aXZlTW91c2UnIDogZnVuY3Rpb24oJGxpc3QpewogICAgICB2YXIgdGhhdCA9IHRoaXM7CgogICAgICB0aGlzLiRjb250YWluZXIub24oJ21vdXNlZW50ZXInLCB0aGF0LmVsZW1zU2VsZWN0b3IsIGZ1bmN0aW9uKCl7CiAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcubXMtY29udGFpbmVyJykuZmluZCh0aGF0LmVsZW1zU2VsZWN0b3IpLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ21zLWhvdmVyJyk7CiAgICAgIH0pOwoKICAgICAgdGhpcy4kY29udGFpbmVyLm9uKCdtb3VzZWxlYXZlJywgdGhhdC5lbGVtc1NlbGVjdG9yLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcubXMtY29udGFpbmVyJykuZmluZCh0aGF0LmVsZW1zU2VsZWN0b3IpLnJlbW92ZUNsYXNzKCdtcy1ob3ZlcicpOwogICAgICB9KTsKICAgIH0sCgogICAgJ3JlZnJlc2gnIDogZnVuY3Rpb24oKSB7CiAgICAgIHRoaXMuZGVzdHJveSgpOwogICAgICB0aGlzLiRlbGVtZW50Lm11bHRpU2VsZWN0KHRoaXMub3B0aW9ucyk7CiAgICB9LAoKICAgICdkZXN0cm95JyA6IGZ1bmN0aW9uKCl7CiAgICAgICQoIiNtcy0iK3RoaXMuJGVsZW1lbnQuYXR0cigiaWQiKSkucmVtb3ZlKCk7CiAgICAgIHRoaXMuJGVsZW1lbnQub2ZmKCdmb2N1cycpOwogICAgICB0aGlzLiRlbGVtZW50LmNzcygncG9zaXRpb24nLCAnJykuY3NzKCdsZWZ0JywgJycpOwogICAgICB0aGlzLiRlbGVtZW50LnJlbW92ZURhdGEoJ211bHRpc2VsZWN0Jyk7CiAgICB9LAoKICAgICdzZWxlY3QnIDogZnVuY3Rpb24odmFsdWUsIG1ldGhvZCl7CiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKXsgdmFsdWUgPSBbdmFsdWVdOyB9CgogICAgICB2YXIgdGhhdCA9IHRoaXMsCiAgICAgICAgICBtcyA9IHRoaXMuJGVsZW1lbnQsCiAgICAgICAgICBtc0lkcyA9ICQubWFwKHZhbHVlLCBmdW5jdGlvbih2YWwpeyByZXR1cm4odGhhdC5zYW5pdGl6ZSh2YWwpKTsgfSksCiAgICAgICAgICBzZWxlY3RhYmxlcyA9IHRoaXMuJHNlbGVjdGFibGVVbC5maW5kKCcjJyArIG1zSWRzLmpvaW4oJy1zZWxlY3RhYmxlLCAjJykrJy1zZWxlY3RhYmxlJykuZmlsdGVyKCc6bm90KC4nK3RoYXQub3B0aW9ucy5kaXNhYmxlZENsYXNzKycpJyksCiAgICAgICAgICBzZWxlY3Rpb25zID0gdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnIycgKyBtc0lkcy5qb2luKCctc2VsZWN0aW9uLCAjJykgKyAnLXNlbGVjdGlvbicpLmZpbHRlcignOm5vdCguJyt0aGF0Lm9wdGlvbnMuZGlzYWJsZWRDbGFzcysnKScpLAogICAgICAgICAgb3B0aW9ucyA9IG1zLmZpbmQoJ29wdGlvbjpub3QoOmRpc2FibGVkKScpLmZpbHRlcihmdW5jdGlvbigpeyByZXR1cm4oJC5pbkFycmF5KHRoaXMudmFsdWUsIHZhbHVlKSA+IC0xKTsgfSk7CgogICAgICBpZiAobWV0aG9kID09PSAnaW5pdCcpewogICAgICAgIHNlbGVjdGFibGVzID0gdGhpcy4kc2VsZWN0YWJsZVVsLmZpbmQoJyMnICsgbXNJZHMuam9pbignLXNlbGVjdGFibGUsICMnKSsnLXNlbGVjdGFibGUnKSwKICAgICAgICBzZWxlY3Rpb25zID0gdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnIycgKyBtc0lkcy5qb2luKCctc2VsZWN0aW9uLCAjJykgKyAnLXNlbGVjdGlvbicpOwogICAgICB9CgogICAgICBpZiAoc2VsZWN0YWJsZXMubGVuZ3RoID4gMCl7CiAgICAgICAgc2VsZWN0YWJsZXMuYWRkQ2xhc3MoJ21zLXNlbGVjdGVkJykuaGlkZSgpOwogICAgICAgIHNlbGVjdGlvbnMuYWRkQ2xhc3MoJ21zLXNlbGVjdGVkJykuc2hvdygpOwoKICAgICAgICBvcHRpb25zLnByb3AoJ3NlbGVjdGVkJywgdHJ1ZSk7CgogICAgICAgIHRoYXQuJGNvbnRhaW5lci5maW5kKHRoYXQuZWxlbXNTZWxlY3RvcikucmVtb3ZlQ2xhc3MoJ21zLWhvdmVyJyk7CgogICAgICAgIHZhciBzZWxlY3RhYmxlT3B0Z3JvdXBzID0gdGhhdC4kc2VsZWN0YWJsZVVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgaWYgKHNlbGVjdGFibGVPcHRncm91cHMubGVuZ3RoID4gMCl7CiAgICAgICAgICBzZWxlY3RhYmxlT3B0Z3JvdXBzLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgdmFyIHNlbGVjdGFibGVzTGkgPSAkKHRoaXMpLmZpbmQoJy5tcy1lbGVtLXNlbGVjdGFibGUnKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGFibGVzTGkubGVuZ3RoID09PSBzZWxlY3RhYmxlc0xpLmZpbHRlcignLm1zLXNlbGVjdGVkJykubGVuZ3RoKXsKICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5tcy1vcHRncm91cC1sYWJlbCcpLmhpZGUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CgogICAgICAgICAgdmFyIHNlbGVjdGlvbk9wdGdyb3VwcyA9IHRoYXQuJHNlbGVjdGlvblVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgICBzZWxlY3Rpb25PcHRncm91cHMuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICB2YXIgc2VsZWN0aW9uc0xpID0gJCh0aGlzKS5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGlvbnNMaS5maWx0ZXIoJy5tcy1zZWxlY3RlZCcpLmxlbmd0aCA+IDApewogICAgICAgICAgICAgICQodGhpcykuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuc2hvdygpOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5rZWVwT3JkZXIgJiYgbWV0aG9kICE9PSAnaW5pdCcpewogICAgICAgICAgICB2YXIgc2VsZWN0aW9uTGlMYXN0ID0gdGhhdC4kc2VsZWN0aW9uVWwuZmluZCgnLm1zLXNlbGVjdGVkJyk7CiAgICAgICAgICAgIGlmKChzZWxlY3Rpb25MaUxhc3QubGVuZ3RoID4gMSkgJiYgKHNlbGVjdGlvbkxpTGFzdC5sYXN0KCkuZ2V0KDApICE9IHNlbGVjdGlvbnMuZ2V0KDApKSkgewogICAgICAgICAgICAgIHNlbGVjdGlvbnMuaW5zZXJ0QWZ0ZXIoc2VsZWN0aW9uTGlMYXN0Lmxhc3QoKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKG1ldGhvZCAhPT0gJ2luaXQnKXsKICAgICAgICAgIG1zLnRyaWdnZXIoJ2NoYW5nZScpOwogICAgICAgICAgaWYgKHR5cGVvZiB0aGF0Lm9wdGlvbnMuYWZ0ZXJTZWxlY3QgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgdGhhdC5vcHRpb25zLmFmdGVyU2VsZWN0LmNhbGwodGhpcywgdmFsdWUpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKCiAgICAnZGVzZWxlY3QnIDogZnVuY3Rpb24odmFsdWUpewogICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyl7IHZhbHVlID0gW3ZhbHVlXTsgfQoKICAgICAgdmFyIHRoYXQgPSB0aGlzLAogICAgICAgICAgbXMgPSB0aGlzLiRlbGVtZW50LAogICAgICAgICAgbXNJZHMgPSAkLm1hcCh2YWx1ZSwgZnVuY3Rpb24odmFsKXsgcmV0dXJuKHRoYXQuc2FuaXRpemUodmFsKSk7IH0pLAogICAgICAgICAgc2VsZWN0YWJsZXMgPSB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnIycgKyBtc0lkcy5qb2luKCctc2VsZWN0YWJsZSwgIycpKyctc2VsZWN0YWJsZScpLAogICAgICAgICAgc2VsZWN0aW9ucyA9IHRoaXMuJHNlbGVjdGlvblVsLmZpbmQoJyMnICsgbXNJZHMuam9pbignLXNlbGVjdGlvbiwgIycpKyctc2VsZWN0aW9uJykuZmlsdGVyKCcubXMtc2VsZWN0ZWQnKS5maWx0ZXIoJzpub3QoLicrdGhhdC5vcHRpb25zLmRpc2FibGVkQ2xhc3MrJyknKSwKICAgICAgICAgIG9wdGlvbnMgPSBtcy5maW5kKCdvcHRpb24nKS5maWx0ZXIoZnVuY3Rpb24oKXsgcmV0dXJuKCQuaW5BcnJheSh0aGlzLnZhbHVlLCB2YWx1ZSkgPiAtMSk7IH0pOwoKICAgICAgaWYgKHNlbGVjdGlvbnMubGVuZ3RoID4gMCl7CiAgICAgICAgc2VsZWN0YWJsZXMucmVtb3ZlQ2xhc3MoJ21zLXNlbGVjdGVkJykuc2hvdygpOwogICAgICAgIHNlbGVjdGlvbnMucmVtb3ZlQ2xhc3MoJ21zLXNlbGVjdGVkJykuaGlkZSgpOwogICAgICAgIG9wdGlvbnMucHJvcCgnc2VsZWN0ZWQnLCBmYWxzZSk7CgogICAgICAgIHRoYXQuJGNvbnRhaW5lci5maW5kKHRoYXQuZWxlbXNTZWxlY3RvcikucmVtb3ZlQ2xhc3MoJ21zLWhvdmVyJyk7CgogICAgICAgIHZhciBzZWxlY3RhYmxlT3B0Z3JvdXBzID0gdGhhdC4kc2VsZWN0YWJsZVVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgaWYgKHNlbGVjdGFibGVPcHRncm91cHMubGVuZ3RoID4gMCl7CiAgICAgICAgICBzZWxlY3RhYmxlT3B0Z3JvdXBzLmVhY2goZnVuY3Rpb24oKXsKICAgICAgICAgICAgdmFyIHNlbGVjdGFibGVzTGkgPSAkKHRoaXMpLmZpbmQoJy5tcy1lbGVtLXNlbGVjdGFibGUnKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGFibGVzTGkuZmlsdGVyKCc6bm90KC5tcy1zZWxlY3RlZCknKS5sZW5ndGggPiAwKXsKICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5tcy1vcHRncm91cC1sYWJlbCcpLnNob3coKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CgogICAgICAgICAgdmFyIHNlbGVjdGlvbk9wdGdyb3VwcyA9IHRoYXQuJHNlbGVjdGlvblVsLmNoaWxkcmVuKCcubXMtb3B0Z3JvdXAtY29udGFpbmVyJyk7CiAgICAgICAgICBzZWxlY3Rpb25PcHRncm91cHMuZWFjaChmdW5jdGlvbigpewogICAgICAgICAgICB2YXIgc2VsZWN0aW9uc0xpID0gJCh0aGlzKS5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKTsKICAgICAgICAgICAgaWYgKHNlbGVjdGlvbnNMaS5maWx0ZXIoJy5tcy1zZWxlY3RlZCcpLmxlbmd0aCA9PT0gMCl7CiAgICAgICAgICAgICAgJCh0aGlzKS5maW5kKCcubXMtb3B0Z3JvdXAtbGFiZWwnKS5oaWRlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICBtcy50cmlnZ2VyKCdjaGFuZ2UnKTsKICAgICAgICBpZiAodHlwZW9mIHRoYXQub3B0aW9ucy5hZnRlckRlc2VsZWN0ID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICB0aGF0Lm9wdGlvbnMuYWZ0ZXJEZXNlbGVjdC5jYWxsKHRoaXMsIHZhbHVlKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCgogICAgJ3NlbGVjdF9hbGwnIDogZnVuY3Rpb24oKXsKICAgICAgdmFyIG1zID0gdGhpcy4kZWxlbWVudCwKICAgICAgICAgIHZhbHVlcyA9IG1zLnZhbCgpOwoKICAgICAgbXMuZmluZCgnb3B0aW9uOm5vdCgiOmRpc2FibGVkIiknKS5wcm9wKCdzZWxlY3RlZCcsIHRydWUpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLWVsZW0tc2VsZWN0YWJsZScpLmZpbHRlcignOm5vdCguJyt0aGlzLm9wdGlvbnMuZGlzYWJsZWRDbGFzcysnKScpLmFkZENsYXNzKCdtcy1zZWxlY3RlZCcpLmhpZGUoKTsKICAgICAgdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuc2hvdygpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuaGlkZSgpOwogICAgICB0aGlzLiRzZWxlY3Rpb25VbC5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKS5maWx0ZXIoJzpub3QoLicrdGhpcy5vcHRpb25zLmRpc2FibGVkQ2xhc3MrJyknKS5hZGRDbGFzcygnbXMtc2VsZWN0ZWQnKS5zaG93KCk7CiAgICAgIHRoaXMuJHNlbGVjdGlvblVsLmZvY3VzKCk7CiAgICAgIG1zLnRyaWdnZXIoJ2NoYW5nZScpOwogICAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5hZnRlclNlbGVjdCA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIHZhciBzZWxlY3RlZFZhbHVlcyA9ICQuZ3JlcChtcy52YWwoKSwgZnVuY3Rpb24oaXRlbSl7CiAgICAgICAgICByZXR1cm4gJC5pbkFycmF5KGl0ZW0sIHZhbHVlcykgPCAwOwogICAgICAgIH0pOwogICAgICAgIHRoaXMub3B0aW9ucy5hZnRlclNlbGVjdC5jYWxsKHRoaXMsIHNlbGVjdGVkVmFsdWVzKTsKICAgICAgfQogICAgfSwKCiAgICAnZGVzZWxlY3RfYWxsJyA6IGZ1bmN0aW9uKCl7CiAgICAgIHZhciBtcyA9IHRoaXMuJGVsZW1lbnQsCiAgICAgICAgICB2YWx1ZXMgPSBtcy52YWwoKTsKCiAgICAgIG1zLmZpbmQoJ29wdGlvbicpLnByb3AoJ3NlbGVjdGVkJywgZmFsc2UpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLWVsZW0tc2VsZWN0YWJsZScpLnJlbW92ZUNsYXNzKCdtcy1zZWxlY3RlZCcpLnNob3coKTsKICAgICAgdGhpcy4kc2VsZWN0aW9uVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuaGlkZSgpOwogICAgICB0aGlzLiRzZWxlY3RhYmxlVWwuZmluZCgnLm1zLW9wdGdyb3VwLWxhYmVsJykuc2hvdygpOwogICAgICB0aGlzLiRzZWxlY3Rpb25VbC5maW5kKCcubXMtZWxlbS1zZWxlY3Rpb24nKS5yZW1vdmVDbGFzcygnbXMtc2VsZWN0ZWQnKS5oaWRlKCk7CiAgICAgIHRoaXMuJHNlbGVjdGFibGVVbC5mb2N1cygpOwogICAgICBtcy50cmlnZ2VyKCdjaGFuZ2UnKTsKICAgICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMuYWZ0ZXJEZXNlbGVjdCA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIHRoaXMub3B0aW9ucy5hZnRlckRlc2VsZWN0LmNhbGwodGhpcywgdmFsdWVzKTsKICAgICAgfQogICAgfSwKCiAgICBzYW5pdGl6ZTogZnVuY3Rpb24odmFsdWUpewogICAgICB2YXIgaGFzaCA9IDAsIGksIGNoYXJhY3RlcjsKICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PSAwKSByZXR1cm4gaGFzaDsKICAgICAgdmFyIGxzID0gMDsKICAgICAgZm9yIChpID0gMCwgbHMgPSB2YWx1ZS5sZW5ndGg7IGkgPCBsczsgaSsrKSB7CiAgICAgICAgY2hhcmFjdGVyICA9IHZhbHVlLmNoYXJDb2RlQXQoaSk7CiAgICAgICAgaGFzaCAgPSAoKGhhc2g8PDUpLWhhc2gpK2NoYXJhY3RlcjsKICAgICAgICBoYXNoIHw9IDA7IC8vIENvbnZlcnQgdG8gMzJiaXQgaW50ZWdlcgogICAgICB9CiAgICAgIHJldHVybiBoYXNoOwogICAgfQogIH07CgogIC8qIE1VTFRJU0VMRUNUIFBMVUdJTiBERUZJTklUSU9OCiAgICogPT09PT09PT09PT09PT09PT09PT09PT0gKi8KCiAgJC5mbi5tdWx0aVNlbGVjdCA9IGZ1bmN0aW9uICgpIHsKICAgIHZhciBvcHRpb24gPSBhcmd1bWVudHNbMF0sCiAgICAgICAgYXJncyA9IGFyZ3VtZW50czsKCiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgdmFyICR0aGlzID0gJCh0aGlzKSwKICAgICAgICAgIGRhdGEgPSAkdGhpcy5kYXRhKCdtdWx0aXNlbGVjdCcpLAogICAgICAgICAgb3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCAkLmZuLm11bHRpU2VsZWN0LmRlZmF1bHRzLCAkdGhpcy5kYXRhKCksIHR5cGVvZiBvcHRpb24gPT09ICdvYmplY3QnICYmIG9wdGlvbik7CgogICAgICBpZiAoIWRhdGEpeyAkdGhpcy5kYXRhKCdtdWx0aXNlbGVjdCcsIChkYXRhID0gbmV3IE11bHRpU2VsZWN0KHRoaXMsIG9wdGlvbnMpKSk7IH0KCiAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnc3RyaW5nJyl7CiAgICAgICAgZGF0YVtvcHRpb25dKGFyZ3NbMV0pOwogICAgICB9IGVsc2UgewogICAgICAgIGRhdGEuaW5pdCgpOwogICAgICB9CiAgICB9KTsKICB9OwoKICAkLmZuLm11bHRpU2VsZWN0LmRlZmF1bHRzID0gewogICAga2V5U2VsZWN0OiBbMzJdLAogICAgc2VsZWN0YWJsZU9wdGdyb3VwOiBmYWxzZSwKICAgIGRpc2FibGVkQ2xhc3MgOiAnZGlzYWJsZWQnLAogICAgZGJsQ2xpY2sgOiBmYWxzZSwKICAgIGtlZXBPcmRlcjogZmFsc2UsCiAgICBjc3NDbGFzczogJycKICB9OwoKICAkLmZuLm11bHRpU2VsZWN0LkNvbnN0cnVjdG9yID0gTXVsdGlTZWxlY3Q7CgogICQuZm4uaW5zZXJ0QXQgPSBmdW5jdGlvbihpbmRleCwgJHBhcmVudCkgewogICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgaWYgKGluZGV4ID09PSAwKSB7CiAgICAgICAgJHBhcmVudC5wcmVwZW5kKHRoaXMpOwogICAgICB9IGVsc2UgewogICAgICAgICRwYXJlbnQuY2hpbGRyZW4oKS5lcShpbmRleCAtIDEpLmFmdGVyKHRoaXMpOwogICAgICB9CiAgICB9KTsKfTsKCn0od2luZG93LmpRdWVyeSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSSingleSelect/lisefd.MAMSSingleSelect.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBMSVNFIC0gTGlzdCBJdCBTcGVjaWFsIEVkaXRpb24KIyBWZXJzaW9uIDEuMgojIEEgZm9yayBvZiBMaXN0STIKIyBtYWludGFpbmVkIGJ5IEZlcm5hbmRvIE1vcmdhZG8gQUtBIEpvIE1vcmcKIyBzaW5jZSAyMDE1CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBPcmlnaW5hbCBBdXRob3I6IEJlbiBNYWxlbiwgPGJlbkBjb25jZXB0ZmFjdG9yeS5jb20uYXU+CiMgQ28tTWFpbnRhaW5lcjogU2ltb24gUmFkZm9yZCwgPHNpbW9uQGNvbmNlcHRmYWN0b3J5LmNvbS5hdT4KIyBXZWI6IHd3dy5jb25jZXB0ZmFjdG9yeS5jb20uYXUKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgTWFpbnRhaW5lciBzaW5jZSAyMDExIHVwIHRvIDIwMTQ6IEpvbmF0aGFuIFNjaG1pZCwgPGhpQGpvbmF0aGFuc2NobWlkLmRlPgojIFdlYjogd3d3LmpvbmF0aGFuc2NobWlkLmRlCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFNvbWUgd2Fja29zIHN0YXJ0ZWQgZGVzdHJveWluZyBzdHVmZiBzaW5jZSAyMDEyIGFuZCBzdG9wcGVkIGF0IDIwMTQ6CiMKIyBUYXBpbyBMw7Z5dHR5LCA8dGFwc2FAb3JhbmdlLW1lZGlhLmZpPgojIFdlYjogd3d3Lm9yYW5nZS1tZWRpYS5maQojCiMgR29yYW4gSWxpYywgPHVuaXF1M2VAZ21haWwuY29tPgojIFdlYjogd3d3LmljaC1tYWNoLWRhcy5hdAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBMSVNFIGlzIGEgQ01TIE1hZGUgU2ltcGxlIG1vZHVsZSB0aGF0IGVuYWJsZXMgdGhlIHdlYiBkZXZlbG9wZXIgdG8gY3JlYXRlCiMgbXVsdGlwbGUgbGlzdHMgdGhyb3VnaG91dCBhIHNpdGUuIEl0IGNhbiBiZSBkdXBsaWNhdGVkIGFuZCBnaXZlbiBmcmllbmRseQojIG5hbWVzIGZvciBlYXNpZXIgY2xpZW50IG1haW50ZW5hbmNlLgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIExJU0UKIyBMSVNFIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgTElTRSBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBFTkRfTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpjbGFzcyBsaXNlZmRfTUFNU1NpbmdsZVNlbGVjdCBleHRlbmRzIExJU0VGaWVsZGRlZkJhc2UKewogIHByaXZhdGUgJF9vcHRzID0gW107CiAgCiAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCYkZGJfaW5mbywgJGNhbGxlcl9vYmogPSBOVUxMKQogIHsKICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJGRiX2luZm8sICRjYWxsZXJfb2JqKTsKICAgICR0aGlzLT5TZXRGcmllbmRseVR5cGUoICR0aGlzLT5Nb2RMYW5nKCAnZmllbGRkZWZfJyAuICR0aGlzLT5HZXRUeXBlKCkgKSApOwogICAgXGNtc191dGlsczo6Z2V0X3NtYXJ0eSgpLT5hc3NpZ24oJ2xpc2UnLCBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdMSVNFJykpOwogIH0KICAKICBzdGF0aWMgcHVibGljIGZ1bmN0aW9uIEdldE1vZHVsZURlcHMoKSAKICB7IAogICAgcmV0dXJuIGFycmF5KAogICAgICAgICAgICAgICAgICAnTUFNUycgPT4gJzEuMC5iJwogICAgICAgICAgICAgICAgKTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIEdldEhlYWRlckhUTUwoKQogIHsKICAgICR0bXBsID0gJyc7CiAgICBpZiggJHRoaXMtPkdldE9wdGlvblZhbHVlKCd0eXBlJywgJ0Ryb3Bkb3duJykgPT0gJ011bHRpU2VsZWN0JyApCiAgICB7CiAgICAgICAgJHRtcGwgPSA8PDxFT1QKPGxpbmsgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ieyR0aGlzLT5HZXRVUkxQYXRoKCl9L2pxdWVyeS5tdWx0aS1zZWxlY3QuY3NzIiAvPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ7JHRoaXMtPkdldFVSTFBhdGgoKX0vanF1ZXJ5Lm11bHRpLXNlbGVjdC5qcyI+PC9zY3JpcHQ+CkVPVDsKICAgIH0KICAgIHJldHVybiAkdG1wbDsKICB9CiAgCiAgLy8gZ2V0IGF2YWlsYWJsZSBncm91cHMgZnJvbSBNQU1TIG1vZHVsZQogIHB1YmxpYyBmdW5jdGlvbiBHZXRNQU1TR3JvdXBzKCkKICB7CiAgICAkbWFtcyA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01BTVMnKTsKICAgIAogICAgaWYoaXNfb2JqZWN0KCRtYW1zKSkKICAgIHsKICAgICAgJGdyb3VwcyA9ICRtYW1zLT5HZXRHcm91cExpc3RGdWxsKCk7CiAgICAgIAogICAgICBpZigkZ3JvdXBzKSAKICAgICAgewogICAgICAgICRvcHRpb25zID0gYXJyYXkoKTsKICAgICAgICAKICAgICAgICBmb3JlYWNoKCRncm91cHMgYXMgJG9wdGlvbikgCiAgICAgICAgewogICAgICAgICAgJG9wdGlvbnNbJG9wdGlvblsnaWQnXV0gPSAkb3B0aW9uWydncm91cG5hbWUnXTsKICAgICAgICB9CiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAkb3B0aW9uczsKICAgIH0KICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIEdldE1BTVNQcm9wZXJ0aWVzKCkKICB7CiAgICAkbWFtcyA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01BTVMnKTsKICAgICRtYW1zX3Byb3BzID0gJG1hbXMtPkdldFByb3BlcnR5RGVmbnMoKTsKICAgIAogICAgLy8gcmVtb3ZlIHNlbGZyZWcgcHJvcAogICAgaWYoIGlzc2V0KCRtYW1zX3Byb3BzWydfX01BTVNSRUcnXSkgKSB1bnNldCgkbWFtc19wcm9wc1snX19NQU1TUkVHJ10pOwogICAgCiAgICAkbWFtc19vcHRpb25zID0gYXJyYXkoKTsKICAgICRtYW1zX29wdGlvbnNiID0gYXJyYXkoKTsKICAgIGZvcmVhY2goJG1hbXNfcHJvcHMgYXMgJG9uZSkkbWFtc19vcHRpb25zWyAkb25lWyduYW1lJ10gXSA9ICRvbmVbJ3Byb21wdCddOwogICAgYXNvcnQoJG1hbXNfb3B0aW9ucyk7CiAgICAkbWFtc19vcHRpb25zYlstMV0gPSBsYW5nKCdub25lJyk7CiAgICAkbWFtc19vcHRpb25zYlswXSA9ICRtYW1zLT5MYW5nKCdwcm9tcHRfdXNlcm5hbWUnKTsKICAgICRtYW1zX29wdGlvbnMgPSBhcnJheV9tZXJnZSgkbWFtc19vcHRpb25zYiwgJG1hbXNfb3B0aW9ucyk7CiAgICAKICAgIHJldHVybiAkbWFtc19vcHRpb25zOwogIH0gCiAgICAgCiAgcHVibGljIGZ1bmN0aW9uIEdldE9wdGlvbnMoKSAKICB7CiAgICAkbGlzZSA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0xJU0UnKTsKICAKICAgICR0aGlzLT5fb3B0c1sndHlwZSddID0gJHRoaXMtPkdldE9wdGlvblZhbHVlKCd0eXBlJywgJ011bHRpU2VsZWN0Jyk7CiAgICAkdGhpcy0+X29wdHNbJ3R5cGVzJ10gPSBhcnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Ryb3Bkb3duJyAgICAgICAgICA9PiAkbGlzZS0+TW9kTGFuZygnZmllbGRkZWZfRHJvcGRvd24nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1JhZGlvR3JvdXAnICAgICAgICA9PiAkbGlzZS0+TW9kTGFuZygnZmllbGRkZWZfUmFkaW9Hcm91cCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSlF1ZXJ5TXVsdGlTZWxlY3QnID0+ICRsaXNlLT5Nb2RMYW5nKCdmaWVsZGRlZl9KUXVlcnlNdWx0aVNlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgCiAgICByZXR1cm4gJHRoaXMtPl9vcHRzOwogIH0KICAKICAvLyBnZXQgbGlzdCBvZiB1c2VycyBmcm9tIE1BTVMgbW9kdWxlIGJhc2VkIG9uIHNlbGVjdGVkIGdyb3VwCiAgcHVibGljIGZ1bmN0aW9uIEdldE1BTVNVc2VyTGlzdCgpCiAgeyAgICAKICAgICRtYW1zID0gXGNtc191dGlsczo6Z2V0X21vZHVsZSgnTUFNUycpOwogICAgCiAgICBpZihpc19vYmplY3QoJG1hbXMpKQogICAgewogICAgICAvLyBHZXRVc2Vyc0luR3JvdXAoKSBpcyBkZXByZWNhdGVkIGJ1dCBHZXRGdWxsVXNlcnNJbkdyb3VwKCkgc2VlbXMgdG8gaGF2ZSBhIGJ1ZywgCiAgICAgIC8vIGNoYW5nZSB0aGlzIGFmdGVyIE1BTVMgQlIgIzg3NTMgaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9idWcvdmlldy84NzUzIGlzIGNvbmZpcm1lZCBhbmQgZml4ZWQKICAgICAgJGdyb3VwcyAgICAgICA9IGV4cGxvZGUoJywnLCAkdGhpcy0+R2V0T3B0aW9uVmFsdWUoJ21hbXNfb3B0aW9ucycpKTsKICAgICAgJG1hbXNfcHJvcCAgICA9ICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgnbWFtc19maWVsZCcpOwogICAgICAkbWFtc19wcm9wMiAgID0gJHRoaXMtPkdldE9wdGlvblZhbHVlKCdtYW1zX2ZpZWxkMicpOwogICAgICAkdXNlX3VzZXJuYW1lID0gJHRoaXMtPkdldE9wdGlvblZhbHVlKCd1c2VfdXNlcm5hbWUnKTsKICAgICAgJHVzZV91aWQgICAgICA9ICR0aGlzLT5HZXRPcHRpb25WYWx1ZSgndXNlX3VpZCcpOwogICAgICAkc2VwYXJhdG9yICAgID0gJHRoaXMtPkdldE9wdGlvblZhbHVlKCdzZXBhcmF0b3InKTsKICAgICAgJHVzZXJzICAgICAgICA9IGFycmF5KCk7CiAgICAgIAogICAgICBmb3JlYWNoKCRncm91cHMgYXMgJGdyb3VwKQogICAgICB7CiAgICAgICAgJHRtcHVzZXJzID0gJG1hbXMtPkdldEZ1bGxVc2Vyc0luR3JvdXAoJGdyb3VwKTsKICAgICAgICAKICAgICAgICBmb3JlYWNoKCR0bXB1c2VycyBhcyAkb25lKQogICAgICAgIHsKICAgICAgICAgIGlmKCBhcnJheV9rZXlfZXhpc3RzKCRvbmVbJ2lkJ10sICR1c2VycykgKSBjb250aW51ZTsKICAgICAgICAgIAogICAgICAgICAgJHVpZCA9IChib29sKSR1c2VfdWlkID8gJ1snIC4gJG9uZVsnaWQnXSAuICddICcgOiAnJzsgCiAgICAgICAgICAKICAgICAgICAgICNub3cgbGV0cyBidWlsZCB0aGUgc2VsZWN0ICAgICAgICAgIAogICAgICAgICAgaWYoJHVzZV91c2VybmFtZSkKICAgICAgICAgIHsKICAgICAgICAgICAgJHVzZXJzWyRvbmVbJ2lkJ11dID0gJHVpZCAuICRvbmVbJ3VzZXJuYW1lJ107CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlCiAgICAgICAgICB7CiAgICAgICAgICAgIGlmKCAkbWFtc19wcm9wID09IE5VTEwgfHwgKGlzX251bWVyaWMoJG1hbXNfcHJvcCkgJiYgJG1hbXNfcHJvcCA9PSAtMSkgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgJHVzZXJzWyRvbmVbJ2lkJ11dID0gJHVpZCAuICRvbmVbJ3VzZXJuYW1lJ107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgJHVzZXJzWyRvbmVbJ2lkJ11dID0gJHVpZDsKICAgICAgICAgICAgICAKICAgICAgICAgICAgICBpZihpc19udW1lcmljKCRtYW1zX3Byb3ApICYmICRtYW1zX3Byb3AgPT0gMCkKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkdXNlcnNbJG9uZVsnaWQnXV0gLj0gJG9uZVsndXNlcm5hbWUnXTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICR1c2Vyc1skb25lWydpZCddXSAuPSAkbWFtcy0+R2V0VXNlclByb3BlcnR5RnVsbCgkbWFtc19wcm9wLCAkb25lWydpZCddKTsKICAgICAgICAgICAgICB9CiAgICAgCiAgICAgICAgICAgICAgaWYoIGlzX251bWVyaWMoJG1hbXNfcHJvcDIpICYmICRtYW1zX3Byb3AyID09IDAgJiYgIShpc19pbnQoJG1hbXNfcHJvcCkgJiYgJG1hbXNfcHJvcCA8IDEpICkKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkdXNlcnNbJG9uZVsnaWQnXV0gLj0gJHNlcGFyYXRvciAuICRvbmVbJ3VzZXJuYW1lJ107CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2VpZiggIShpc19pbnQoJG1hbXNfcHJvcDIpICYmICRtYW1zX3Byb3AyID09IC0xKSApCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHVzZXJzWyRvbmVbJ2lkJ11dIC49ICRzZXBhcmF0b3IgLiAkbWFtcy0+R2V0VXNlclByb3BlcnR5RnVsbCgkbWFtc19wcm9wMiwgJG9uZVsnaWQnXSk7CiAgICAgICAgICAgICAgfSAKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgfQogICAgICAKICAgICAgYXNvcnQoJHVzZXJzKTsKICAgICAgCiAgICAgIHJldHVybiAkdXNlcnM7CiAgICB9CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBSZW5kZXJGb3JBZG1pbkxpc3RpbmcoJGlkLCAkcmV0dXJuaWQpCiAgewogICAgJHVzZXIgPSAnJzsKICAgICRtYW1zID0gXGNtc191dGlsczo6Z2V0X21vZHVsZSgnTUFNUycpOwogICAgCiAgICBpZihpc19vYmplY3QoJG1hbXMpKQogICAgewogICAgICAkdmFsdWUgPSAkdGhpcy0+R2V0VmFsdWUoKTsKICAgICAgJHVzZXIgPSAkbWFtcy0+R2V0VXNlck5hbWUoJHZhbHVlWzBdKTsKICAgIH0KICAgIAogICAgJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOwogICAgJHNtYXJ0eS0+YXNzaWduKCd1c2VyJywgJHVzZXIpOwogICAgcmV0dXJuIHBhcmVudDo6UmVuZGVyRm9yQWRtaW5MaXN0aW5nKCRpZCwgJHJldHVybmlkKTsKICB9CiAgCn0vLyBlbmQgb2YgY2xhc3MKPz4=]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSSingleSelect/list.MAMSSingleSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyR1c2VyfQ==]]></data>
	</file>
	<file>
	  <filename>/lise_fielddefs/MAMSSingleSelect/output.MAMSSingleSelect.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmaWVsZGRlZi5uYW1lfTogeyRmaWVsZGRlZi52YWx1ZX0=]]></data>
	</file>
	<file>
	  <filename>/MAMS.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQp1c2UgXE1BTVNcdmVyaWZpY2F0aW9uX2Fzc2lzdGFudDsKdXNlIFxNQU1TXGVtYWlsX3ZlcmlmeV9hc3Npc3RhbnQ7CnVzZSBcQ01TTVNcSG9va01hbmFnZXI7CgovKioKICogVGhpcyBmaWxlIGRlZmluZXMgdGhlIE1BTVMgbW9kdWxlIGNsYXNzLgogKgogKiBAcGFja2FnZSBNQU1TCiAqLwoKLyoqCiAqIFRoZSBNQU1TIG1vZHVsZSwgYmVzaWRlcyBiZWluZyBhIG1vZHVsZSB0byBwcm92aWRlIGF1dGhlbnRpY2F0aW9uIHNlcnZpY2VzIHRvIHRoZSBmcm9udGVuZCBvZiBhIENNU01TCiAqIHdlYnNpdGUgYWxzbyBoYXMgYSBjb21wbGV0ZSBhbmQgZmxleGlibGUgQVBJLgogKgogKiBAcGFja2FnZSBNQU1TCiAqLwpmaW5hbCBjbGFzcyBNQU1TIGV4dGVuZHMgXENNU01TRXh0XFhUTW9kdWxlCnsKICAvKioKICAgKiBDb25zdGFudCB0byBpZGVudGlmeSBhIHRleHQgcHJvcGVydHkuCiAgICovCiAgY29uc3QgRklFTERUWVBFX1RFWFQgPSAwOwogIAogIC8qKgogICAqIENvbnN0YW50IHRvIGlkZW50aWZ5IGEgY2hlY2tib3ggcHJvcGVydHkuCiAgICovCiAgY29uc3QgRklFTERUWVBFX0NIRUNLQk9YID0gMTsKICAKICAvKioKICAgKiBDb25zdGFudCB0byBpZGVudGlmeSBhbiBlbWFpbCBwcm9wZXJ0eS4KICAgKi8KICBjb25zdCBGSUVMRFRZUEVfRU1BSUwgPSAyOwogIAogIC8qKgogICAqIENvbnN0YW50IHRvIGlkZW50aWZ5IGEgdGV4dGFyZWEgcHJvcGVydHkuCiAgICovCiAgY29uc3QgRklFTERUWVBFX1RFWFRBUkVBID0gMzsKICAKICAvKioKICAgKiBDb25zdGFudCB0byBpZGVudGlmeSBhIGRyb3Bkb3duIHByb3BlcnR5LgogICAqLwogIGNvbnN0IEZJRUxEVFlQRV9EUk9QRE9XTiA9IDQ7CiAgCiAgLyoqCiAgICogQ29uc3RhbnQgdG8gaWRlbnRpZnkgYSBtdWx0aXNlbGVjdCBwcm9wZXJ0eS4KICAgKi8KICBjb25zdCBGSUVMRFRZUEVfTVVMVElTRUxFQ1QgPSA1OwogIAogIC8qKgogICAqIENvbnN0YW50IHRvIGlkZW50aWZ5IGFuIGltYWdlIHByb3BlcnR5LgogICAqLwogIGNvbnN0IEZJRUxEVFlQRV9JTUFHRSA9IDY7CiAgCiAgLyoqCiAgICogQ29uc3RhbnQgdG8gaWRlbnRpZnkgYSByYWRpbyBidXR0b24gZ3JvdXAgcHJvcGVydHkuCiAgICovCiAgY29uc3QgRklFTERUWVBFX1JBRElPQlVUTlMgPSA3OwogIAogIC8qKgogICAqIENvbnN0YW50IHRvIGlkZW50aWZ5IGEgZGF0ZSBwcm9wZXJ0eS4KICAgKi8KICBjb25zdCBGSUVMRFRZUEVfREFURSA9IDg7CiAgCiAgLyoqCiAgICogQ29uc3RhbnQgdG8gaWRlbnRpZnkgYSBkYXRhIHByb3BlcnR5LgogICAqLwogIGNvbnN0IEZJRUxEVFlQRV9EQVRBID0gOTsKICAKICAvKioKICAgKiBIb3cgbWFueSBzZWNvbmRzIG9mIGluYWN0aXZpdHkgYmVmb3JlIGEgdXNlciBpcyBhdXRvbWF0aWNhbGx5IGxvZ2dlZCBvdXQuCiAgICoKICAgKiBAaWdub3JlCiAgICovCiAgcHJvdGVjdGVkICRleHBpcnl0aW1lOwogIAogIC8qKgogICAqIFNldCB0aGlzIHRvIHRydWUgaWYgdXNlciBzaG91bGQgYmUgcmVkaXJlY3RlZCB0byBkZWZhdWx0IHBhZ2UgYWZ0ZXIgbG9nZ2luZyBpbi9vdXQuCiAgICoKICAgKiBAaWdub3JlCiAgICovCiAgcHJvdGVjdGVkICRsb2dpbnRhcmdldDsKICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgcHJvdGVjdGVkICRvdGhlcmludGFyZ2V0OwogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBwcm90ZWN0ZWQgJGxvZ291dHRhcmdldDsKICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgcHJvdGVjdGVkICRvdGhlcm91dHRhcmdldDsKICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgcHJvdGVjdGVkICRhbGxvd3VzZXJhZG1pbjsKICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgcHJvdGVjdGVkICRlbmFibGVlbWFpbHB3OwogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBwcm90ZWN0ZWQgJGxhbmcgPSAnJzsKICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgcHJpdmF0ZSAkdXNlcm1hbmlwID0gRkFMU0U7CiAgCiAgLyoqCiAgICogQGlnbm9yZQogICAqLwogIHByaXZhdGUgJHZlcmlmaWNhdGlvbl9hc3Npc3RhbnQgPSBOVUxMOwogIAogIC8qKgogICAqIEBpZ25vcmUgLSB3b3JrIGFyb3VuZCBjb25zdHJ1Y3RvciBjYWxsZWQgdHdpY2UgaXNzdWUKICAgKi8KICBwcml2YXRlIHN0YXRpYyAkX2luaXRpYWxpemVkOwogIAogIC8qKgogICAqIENvbnN0cnVjdG9yCiAgICoKICAgKiBAaWdub3JlCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICB7CiAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCk7CgogICAgaWYoc2VsZjo6JF9pbml0aWFsaXplZCkgeyByZXR1cm47IH0KICAgIHNlbGY6OiRfaW5pdGlhbGl6ZWQgPSBUUlVFOwogIH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgcHJpdmF0ZSBmdW5jdGlvbiBfbG9hZCgpCiAgewogICAgJHRlc3QgPSAkdGhpcy0+dXNlcm1hbmlwOwogICAgCiAgICBpZighJHRoaXMtPnVzZXJtYW5pcCkKICAgIHsKICAgICAgLyoqCiAgICAgICAqIGNoZWNrIGEgcHJlZmVyZW5jZSB0byBzZWUKICAgICAgICogd2hpY2ggdXNlciBtYW5pcHVsYXRvciBjbGFzcyB3ZSBzaG91bGQgdXNlLgogICAgICAgKi8KICAgICAgJHRoaXMtPnVzZXJtYW5pcCA9IG5ldyBNQU1TTWFuaXB1bGF0b3IoJHRoaXMpOwogICAgICAKICAgICAgJHRlc3QgPSAkdGhpcy0+dXNlcm1hbmlwOwogICAgICAKICAgICAgaWYoIWlzX29iamVjdCgkdGhpcy0+dXNlcm1hbmlwKSkKICAgICAgewogICAgICAgIGRpZSgnRXJyb3IgaW5zdGFudGlhdGluZyBtYW5pcHVsYXRvciBvYmplY3QnKTsKICAgICAgfQoKICAgICAgJHRoaXMtPnVzZXJtYW5pcC0+U2V0RXhwaXJlTm90aWZpZXIoWyR0aGlzLCAnTm90aWZ5RXhwaXJlZFVzZXInXSk7CiAgICB9CiAgfQogIAogIC8qKgogICAqIEByZXR1cm4gc3RyaW5nCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIEdldE1pbmltdW1QaHBWZXJzaW9uKCkgeyByZXR1cm4gJzcuNC4wJzsgfQogIAogIGZpbmFsIHB1YmxpYyBmdW5jdGlvbiBHZXRGaWVsZFR5cGVzKCkgOiBhcnJheQogIHsKICAgIHJldHVybiBbCiAgICAgICd0ZXh0JyAgICAgICAgID0+IHNlbGY6OkZJRUxEVFlQRV9URVhULAogICAgICAnY2hlY2tib3gnICAgICA9PiBzZWxmOjpGSUVMRFRZUEVfQ0hFQ0tCT1gsCiAgICAgICdlbWFpbCcgICAgICAgID0+IHNlbGY6OkZJRUxEVFlQRV9FTUFJTCwKICAgICAgJ3RleHRhcmVhJyAgICAgPT4gc2VsZjo6RklFTERUWVBFX1RFWFRBUkVBLAogICAgICAnZHJvcGRvd24nICAgICA9PiBzZWxmOjpGSUVMRFRZUEVfRFJPUERPV04sCiAgICAgICdtdWx0aXNlbGVjdCcgID0+IHNlbGY6OkZJRUxEVFlQRV9NVUxUSVNFTEVDVCwKICAgICAgJ2ltYWdlJyAgICAgICAgPT4gc2VsZjo6RklFTERUWVBFX0lNQUdFLAogICAgICAncmFkaW9idXR0b25zJyA9PiBzZWxmOjpGSUVMRFRZUEVfUkFESU9CVVROUywKICAgICAgJ2RhdGUnICAgICAgICAgPT4gc2VsZjo6RklFTERUWVBFX0RBVEUsCiAgICAgICdkYXRhJyAgICAgICAgID0+IHNlbGY6OkZJRUxEVFlQRV9EQVRBCiAgICBdOwogICAgCiAgfQogIAogIC8qKgogICAqIEdldCB0aGUgVXNlciBNYW5pcHVsYXRvciBPYmplY3QKICAgKiBOT1QgRk9SIEVYVEVSTkFMIFVTRQogICAqCiAgICogQHJldHVybiBvYmplY3QKICAgKiBAaW50ZXJuYWwKICAgKi8KICBmaW5hbCBwdWJsaWMgZnVuY3Rpb24gR2V0TWFuaXB1bGF0b3IoKQogIHsKICAgICR0aGlzLT5fbG9hZCgpOwogICAgCiAgICByZXR1cm4gJHRoaXMtPnVzZXJtYW5pcDsKICB9CiAgCiAgLyoqCiAgICogQGlnbm9yZQogICAqLwogIGZ1bmN0aW9uIEdldFZlcnNpb24oKXsgcmV0dXJuICcxLjEuMCc7IH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgZnVuY3Rpb24gSGFzQ29udGVudFR5cGUoKXsgcmV0dXJuIFRSVUU7IH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgZnVuY3Rpb24gSXNQbHVnaW5Nb2R1bGUoKXsgcmV0dXJuIFRSVUU7IH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgZnVuY3Rpb24gQWxsb3dBdXRvSW5zdGFsbCgpeyByZXR1cm4gRkFMU0U7IH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgZnVuY3Rpb24gQWxsb3dBdXRvVXBncmFkZSgpeyByZXR1cm4gRkFMU0U7IH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgZnVuY3Rpb24gTGF6eUxvYWRBZG1pbigpeyByZXR1cm4gRkFMU0U7IH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKXsgcmV0dXJuICcyLjIuOSc7IH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpeyByZXR1cm4gJHRoaXMtPkxhbmcoJ21vZGRlc2NyaXB0aW9uJyk7IH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgZnVuY3Rpb24gR2V0QWRtaW5TZWN0aW9uKCl7IHJldHVybiAndXNlcnNncm91cHMnOyB9CiAgCiAgLyoqCiAgICogQGlnbm9yZQogICAqLwogICMgdG9kbzogdXBkYXRlIHRoZSBDTVNNU0V4dCB2ZXJzaW9uIHRvIDEuNC40IGFzIHNvb24gYXMgaXQgbGVhdmVzIGJldGEKICBmdW5jdGlvbiBHZXREZXBlbmRlbmNpZXMoKXsgcmV0dXJuIFsnQ01TTVNFeHQnID0+ICcxLjQuMycsICdTbWFydHlFeHQnID0+ICcxLjAnXTsgfQogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBmdW5jdGlvbiBHZXRFdmVudERlc2NyaXB0aW9uKCRldmVudG5hbWUpeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2V2ZW50X2luZm9fJyAuICRldmVudG5hbWUpOyB9CiAgCiAgLyoqCiAgICogQGlnbm9yZQogICAqLwogIGZ1bmN0aW9uIEdldEV2ZW50SGVscCgkZXZlbnRuYW1lKXsgcmV0dXJuICR0aGlzLT5MYW5nKCdldmVudF9oZWxwXycgLiAkZXZlbnRuYW1lKTsgfQogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBmdW5jdGlvbiBHZXRGcmllbmRseU5hbWUoKXsgcmV0dXJuICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKTsgfQogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBmdW5jdGlvbiBIYXNBZG1pbigpeyByZXR1cm4gVFJVRTsgfQogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBmdW5jdGlvbiBJbnN0YWxsUG9zdE1lc3NhZ2UoKXsgcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0aW5zdGFsbG1lc3NhZ2UnKTsgfQogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBmdW5jdGlvbiBHZXRBdXRob3IoKXsgcmV0dXJuICdKbyBNb3JnJzsgfQogIAogIC8qKgogICAqIEBpZ25vcmUKICAgKi8KICBmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpeyByZXR1cm4gJ2pvbW9yZ0BjbXNtYWRlc2ltcGxlLm9yZyc7IH0KICAKICBmdW5jdGlvbiBHZXRIZWxwKCkKICB7CiAgICAkbW9kcyAgICAgPSBcTW9kdWxlT3BlcmF0aW9uczo6Z2V0X2luc3RhbmNlKCktPkdldEluc3RhbGxlZE1vZHVsZXMoKTsKICAgICRoYXZlX2ZldSA9IGluX2FycmF5KCdGcm9udEVuZFVzZXJzJywgJG1vZHMpOwogICAgXGNtc191dGlsczo6Z2V0X3NtYXJ0eSgpLT5hc3NpZ24oJ2hhdmVfZmV1JywgJGhhdmVfZmV1KTsKICAgIAogICAgcmV0dXJuIHBhcmVudDo6R2V0SGVscCgpOwogIH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICogQGRlcHJlY2F0ZWQKICAgKi8KICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGFuZ2lmeUtleXMoJGFycikgOiBhcnJheQogIHsKICAgIGlmKCAhaXNfYXJyYXkoJGFycikgKSAkYXJyID0gWyRhcnJdOwogICAgJG91dCA9IFtdOwogICAgZm9yZWFjaCgkYXJyIGFzICRrID0+ICR2KQogICAgewogICAgICAkayAgICAgICA9ICR0aGlzLT5MYW5nKCRrKTsKICAgICAgJG91dFska10gPSAkdjsKICAgIH0KICAgIAogICAgcmV0dXJuICRvdXQ7CiAgfQogIAogIGZ1bmN0aW9uIFNldFBhcmFtZXRlcnMoKQogIHsKICAgICRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKICAgIGlmKCEkc21hcnR5KXtyZXR1cm47fQogICAgCiAgICAkc21hcnR5LT5yZWdpc3RlckNsYXNzKCdtYW1zX3NtYXJ0eScsICdtYW1zX3NtYXJ0eScpOwogICAgJHNtYXJ0eS0+cmVnaXN0ZXJQbHVnaW4oJ2Jsb2NrJywgJ21hbXNfcHJvdGVjdCcsICdcXG1hbXNfc21hcnR5X3BsdWdpbnM6Om1hbXNfcHJvdGVjdCcpOwogICAgJHNtYXJ0eS0+cmVnaXN0ZXJQbHVnaW4oJ2Z1bmN0aW9uJywgJ21hbXNfdXNlcl9vcHRpb25zJywgJ1xcbWFtc19zbWFydHlfcGx1Z2luczo6bWFtc191c2VyX29wdGlvbnMnKTsKICAgICR0aGlzLT5BZGRJbWFnZURpcignaWNvbnMnKTsKICAgIAogICAgJGNvbnRlbnRvcHMgPSBDb250ZW50T3BlcmF0aW9uczo6Z2V0X2luc3RhbmNlKCk7CiAgICAKICAgICRvYmogICAgICAgICAgICAgICA9IG5ldyBDbXNDb250ZW50VHlwZVBsYWNlaG9sZGVyKCk7CiAgICAkb2JqLT5jbGFzcyAgICAgICAgPSAnTUFNU1xQcm90ZWN0ZWRQYWdlJzsKICAgICRvYmotPnR5cGUgICAgICAgICA9ICdtYW1zX3Byb3RlY3RlZF9wYWdlJzsgIC8vIG11c3QgYmUgbG93ZXJjYXNlLCBhbmQgc2hvcnQsIHRoaXMgaXMgd2hhdCBpcyBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlLgogICAgJG9iai0+ZmlsZW5hbWUgICAgID0gX19ESVJfXyAuICcvbGliL2NsYXNzLm1hbXNfcHJvdGVjdGVkX3BhZ2UucGhwJzsKICAgICRvYmotPmxvYWRlZCAgICAgICA9IEZBTFNFOwogICAgJG9iai0+ZnJpZW5kbHluYW1lID0gJHRoaXMtPkxhbmcoJ21hbXNfcHJvdGVjdGVkX3BhZ2UnKTsKICAgICRjb250ZW50b3BzLT5yZWdpc3Rlcl9jb250ZW50X3R5cGUoJG9iaik7CiAgICAKICAgICRvYmogICAgICAgICAgICAgICA9IG5ldyBDbXNDb250ZW50VHlwZVBsYWNlaG9sZGVyKCk7CiAgICAkb2JqLT5jbGFzcyAgICAgICAgPSAnTUFNU1xQcm90ZWN0ZWRTZWN0aW9uSGVhZCc7CiAgICAkb2JqLT50eXBlICAgICAgICAgPSAnbWFtc19wcm90ZWN0ZWRfc2VjX2hlYWQnOwogICAgJG9iai0+ZmlsZW5hbWUgICAgID0gX19ESVJfXyAuICcvbGliL2NsYXNzLm1hbXNfcHJvdGVjdGVkX3NlY3Rpb25oZWFkLnBocCc7CiAgICAkb2JqLT5sb2FkZWQgICAgICAgPSBGQUxTRTsKICAgICRvYmotPmZyaWVuZGx5bmFtZSA9ICR0aGlzLT5MYW5nKCdtYW1zX3Byb3RlY3RlZF9zZWN0aW9uaGVhZCcpOwogICAgJGNvbnRlbnRvcHMtPnJlZ2lzdGVyX2NvbnRlbnRfdHlwZSgkb2JqKTsKICAgIAogICAgJG9iaiAgICAgICAgICAgICAgID0gbmV3IENtc0NvbnRlbnRUeXBlUGxhY2Vob2xkZXIoKTsKICAgICRvYmotPmNsYXNzICAgICAgICA9ICdtYW1zX3Byb3RlY3RlZF9sb2dvdXRsaW5rJzsKICAgICRvYmotPnR5cGUgICAgICAgICA9IHN0cnRvbG93ZXIoJG9iai0+Y2xhc3MpOwogICAgJG9iai0+ZmlsZW5hbWUgICAgID0gX19ESVJfXyAuICcvbGliL2NsYXNzLm1hbXNfcHJvdGVjdGVkX2xvZ291dGxpbmsucGhwJzsKICAgICRvYmotPmxvYWRlZCAgICAgICA9IEZBTFNFOwogICAgJG9iai0+ZnJpZW5kbHluYW1lID0gJHRoaXMtPkxhbmcoJ21hbXNfcHJvdGVjdGVkX2xvZ291dGxpbmsnKTsKICAgICRjb250ZW50b3BzLT5yZWdpc3Rlcl9jb250ZW50X3R5cGUoJG9iaik7CiAgICAKICAgIEhvb2tNYW5hZ2VyOjphZGRfaG9vaygnTUFNUzo6T25EZWxldGVVc2VyJywgJ21hbXNfdXRpbHM6Omhvb2tfb25kZWxldGV1c2VyJyk7CiAgICBIb29rTWFuYWdlcjo6YWRkX2hvb2soJ01BTVM6OkFmdGVyRGVsZXRlVXNlcicsICdtYW1zX3V0aWxzOjpob29rX2FmdGVyZGVsZXRldXNlcicpOwogIH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgZnVuY3Rpb24gSW5pdGlhbGl6ZUZyb250ZW5kKCkKICB7CiAgICBwYXJlbnQ6OkluaXRpYWxpemVGcm9udGVuZCgpOwogICAgJHRoaXMtPlJlc3RyaWN0VW5rbm93blBhcmFtcygpOwogICAgJHRoaXMtPlJlZ2lzdGVyTW9kdWxlUGx1Z2luKCk7CiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnY29kZScsIENMRUFOX1NUUklORyk7CiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZm9ybScsIENMRUFOX1NUUklORyk7IC8vIGRlcHJlY2F0ZWQKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdyZXR1cm50bycsIENMRUFOX1NUUklORyk7CiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnb25seV9ncm91cHMnLCBDTEVBTl9TVFJJTkcpOwogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ25vY2FwdGNoYScsIENMRUFOX0lOVCk7CiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnaW5wdXRfdXNlcm5hbWUnLCBDTEVBTl9TVFJJTkcpOyAvLyBkZXByZWNhdGVkCiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnaW5wdXRfcGFzc3dvcmQnLCBDTEVBTl9TVFJJTkcpOyAvLyBkZXByZWNhdGVkCiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnaW5wdXRfcmVwZWF0cGFzc3dvcmQnLCBDTEVBTl9TVFJJTkcpOyAvLyBkZXByZWNhdGVkCiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZXJyb3InLCBDTEVBTl9JTlQpOyAvLyBkZXByZWNhdGVkCiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnbWVzc2FnZScsIENMRUFOX1NUUklORyk7IC8vIGRlcHJlY2F0ZWQKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdsb3N0dW5fZ3JvdXAnLCBDTEVBTl9TVFJJTkcpOwogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2lucHV0X2NhcHRjaGEnLCBDTEVBTl9TVFJJTkcpOyAvLyBkZXByZWNhdGVkCiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnc3VibWl0JywgQ0xFQU5fU1RSSU5HKTsgLy8gZGVwcmVjYXRlZAogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2NhbmNlbCcsIENMRUFOX1NUUklORyk7IC8vIGRlcHJlY2F0ZWQKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdpbnB1dF9jb2RlJywgQ0xFQU5fU1RSSU5HKTsgLy8gZGVwcmVjYXRlZAogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3VpZCcsIENMRUFOX0lOVCk7CiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnY2hlY2tvbmx5JywgQ0xFQU5fSU5UKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdpbmxpbmUnLCBDTEVBTl9JTlQpOwogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2xvZ291dHRlbXBsYXRlJywgQ0xFQU5fU1RSSU5HKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdsb2dpbnRlbXBsYXRlJywgQ0xFQU5fU1RSSU5HKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdjaGFuZ2VzZXR0aW5nc3RlbXBsYXRlJywgQ0xFQU5fU1RSSU5HKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdmb3Jnb3Rwd3RlbXBsYXRlJywgQ0xFQU5fU1RSSU5HKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdmb3Jnb3Rwd2VtYWlsdGVtcGxhdGUnLCBDTEVBTl9TVFJJTkcpOwogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2xvc3R1bnRlbXBsYXRlJywgQ0xFQU5fU1RSSU5HKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdsb3N0dW5jb25maXJtdGVtcGxhdGUnLCBDTEVBTl9TVFJJTkcpOwogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2ZvcmNlbmV3cHd0ZW1wbGF0ZScsIENMRUFOX1NUUklORyk7CiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgndmlld3VzZXJ0ZW1wbGF0ZScsIENMRUFOX1NUUklORyk7CiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnYWZ0ZXJ2ZXJpZnl0ZW1wbGF0ZScsIENMRUFOX1NUUklORyk7CiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgncmVzZXRzZXNzaW9udGVtcGxhdGUnLCBDTEVBTl9TVFJJTkcpOwogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3ZlcmlmeWZvcm10ZW1wbGF0ZScsIENMRUFOX1NUUklORyk7CiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZShDTEVBTl9SRUdFWFAgLiAnL21hbXNfLiovJywgQ0xFQU5fU1RSSU5HKTsKICAgIAogICAgJHRoaXMtPlJlZ2lzdGVyUm91dGUoCiAgICAgICcvbWFtc1wvdmVyaWZ5Y29kZVwvKD9QPHJldHVybmlkPlswLTldKylcLyg/UDx1aWQ+WzAtOV0rKVwvKD9QPGNvZGU+Lio/KSQvJywgYXJyYXkoJ2FjdGlvbicgPT4gJ3ZlcmlmeWNvZGUnKQogICAgKTsKICAgICR0aGlzLT5SZWdpc3RlclJvdXRlKAogICAgICAnL21hbXNcL3ZlcmlmeVwvKD9QPHJldHVybmlkPlswLTldKylcLyg/UDx1aWQ+WzAtOV0rKVwvKD9QPGNvZGU+Lio/KSQvJywgYXJyYXkoJ2FjdGlvbicgPT4gJ3ZlcmlmeW9ubHknKQogICAgKTsKICAgICR0aGlzLT5SZWdpc3RlclJvdXRlKAogICAgICAnL21hbXNcL3Jlc2V0XC8oP1A8dWlkPlswLTldKykkLycsCiAgICAgIGFycmF5KCdhY3Rpb24nID0+ICdyZXNldF9zZXNzaW9uJywgJ3Nob3d0ZW1wbGF0ZScgPT4gJ2ZhbHNlJywgJ2NoZWNrb25seScgPT4gJzEnKQogICAgKTsKICAgICR0aGlzLT5SZWdpc3RlclJvdXRlKCcvbWFtc1wvZWRpdFwvKD9QPHJldHVybmlkPlswLTldKykkLycsIGFycmF5KCdhY3Rpb24nID0+ICdjaGFuZ2VzZXR0aW5ncycpKTsKICAgICR0aGlzLT5SZWdpc3RlclJvdXRlKCcvbWFtc1wvbG9nb3V0XC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvJywgYXJyYXkoJ2FjdGlvbicgPT4gJ2xvZ291dCcpKTsKICAgICR0aGlzLT5SZWdpc3RlclJvdXRlKCcvbWFtc1wvZm9yZ290XC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvJywgYXJyYXkoJ2FjdGlvbicgPT4gJ2ZvcmdvdHB3JykpOwogICAgJHRoaXMtPlJlZ2lzdGVyUm91dGUoJy9tYW1zXC9sb3N0dXNlcm5hbWVcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8nLCBhcnJheSgnYWN0aW9uJyA9PiAnbG9zdHVzZXJuYW1lJykpOwogICAgJHRoaXMtPlJlZ2lzdGVyUm91dGUoJy9tYW1zXC9hamF4XC8oP1A8cHJtcz4uKykkLycsIGFycmF5KCdhY3Rpb24nID0+ICdhamF4JykpOwogIH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgZnVuY3Rpb24gZ2V0X3Rhc2tzKCkKICB7CiAgICAkb3V0ID0gTlVMTDsKICAgIAogICAgLy8gY2xlYXIgaGlzdG9yeSB0YXNrCiAgICAkdG1wID0gKGludCkkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY2xlYXJoaXN0b3J5X2FnZScpOwogICAgCiAgICBpZigkdG1wID4gMCkKICAgIHsKICAgICAgJG9iaiAgID0gbmV3IFxNQU1TXENsZWFyVXNlckhpc3RvcnlUYXNrKCk7CiAgICAgICRvdXRbXSA9ICRvYmo7CiAgICB9CiAgICAKICAgIC8vIGZvcmNlIGxvZ291dCBhdCBzcGVjaWZpYyBzZXJ2ZXIgdGltZXMKICAgICR0bXAgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZm9yY2Vsb2dvdXRfdGltZXMnKTsKICAgIGlmKCR0bXAgIT0gJycpCiAgICB7CiAgICAgICRvYmogICA9IG5ldyBNQU1TRm9yY2VkTG9nb3V0VGFzaygkdGhpcyk7CiAgICAgICRvdXRbXSA9ICRvYmo7CiAgICB9CiAgICAKICAgIHJldHVybiAkb3V0OwogIH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIGdldF9wcmV0dHlfdXJsKCRpZCwgJGFjdGlvbiwgJHJldHVybmlkID0gJycsICRwYXJhbXMgPSBbXSwgJGlubGluZSA9IEZBTFNFKQogIHsKICAgIGlmKCRhY3Rpb24gPT0gJ2RlZmF1bHQnKQogICAgewogICAgICAkZm9ybSA9IFx4dF9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCAnZm9ybScpOwogICAgICBzd2l0Y2goJGZvcm0pCiAgICAgIHsKICAgICAgICBjYXNlICdmb3Jnb3Rwdyc6CiAgICAgICAgICAkYWN0aW9uID0gJ2ZvcmdvdHB3JzsKICAgICAgICBicmVhazsKICAgICAgICAKICAgICAgICBjYXNlICdsb2dpbic6CiAgICAgICAgICAkYWN0aW9uID0gJ2xvZ2luJzsKICAgICAgICBicmVhazsKICAgICAgICAKICAgICAgICBjYXNlICdsb3N0dXNlcm5hbWUnOgogICAgICAgICAgJGFjdGlvbiA9ICdsb3N0dXNlcm5hbWUnOwogICAgICAgIGJyZWFrOwogICAgICAgIAogICAgICAgIGNhc2UgJ2NoYW5nZXNldHRpbmdzJzoKICAgICAgICAgIHJldHVybiAibWFtcy9lZGl0LyRyZXR1cm5pZCI7CiAgICAgIH0KICAgIH0KICAgIAogICAgaWYoJGFjdGlvbiA9PSAndmVyaWZ5b25seScpCiAgICB7CiAgICAgICR1aWQgID0gXHh0X3BhcmFtOjpnZXRfaW50KCRwYXJhbXMsICd1aWQnKTsKICAgICAgJGNvZGUgPSBceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywgJ2NvZGUnKTsKICAgICAgCiAgICAgIGlmKCR1aWQgPCAxIHx8ICEkY29kZSl7cmV0dXJuO30KICAgICAgCiAgICAgIHJldHVybiAibWFtcy92ZXJpZnkvJHJldHVybmlkLyR1aWQvJGNvZGUiOwogICAgfQogICAgCiAgICBpZigkYWN0aW9uID09ICdmb3Jnb3RwdycpCiAgICB7CiAgICAgIHJldHVybiAibWFtcy9mb3Jnb3QvJHJldHVybmlkIjsKICAgIH0KICAgIGVsc2UgaWYoJGFjdGlvbiA9PSAnbG9zdHVzZXJuYW1lJykKICAgIHsKICAgICAgcmV0dXJuICJtYW1zL2xvc3R1c2VybmFtZS8kcmV0dXJuaWQiOwogICAgfQogICAgZWxzZSBpZigkYWN0aW9uID09ICdsb2dvdXQnKQogICAgewogICAgICAkcmV0dXJudG8gPSBceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywgJ3JldHVybnRvJyk7CiAgICAgIAogICAgICBpZigkcmV0dXJudG8pe3JldHVybjt9CiAgICAgIAogICAgICByZXR1cm4gIm1hbXMvbG9nb3V0LyRyZXR1cm5pZCI7CiAgICB9CiAgICBlbHNlIGlmKCRhY3Rpb24gPT0gJ2NoYW5nZXNldHRpbmdzJykKICAgIHsKICAgICAgcmV0dXJuICJtYW1zL2VkaXQvJHJldHVybmlkIjsKICAgIH0KICAgIAogIH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgcHJvdGVjdGVkIGZ1bmN0aW9uIF9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJHBlcm0gPSAnJykKICB7CiAgICBpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWFtc19zcGVjaWZpY19wZXJtaXNzaW9ucycsICcwJykgPT0gJzEnKQogICAgewogICAgICAkcHVzZXJzICA9ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01BTVMgTW9kaWZ5IFVzZXJzJyk7CiAgICAgICRwZ3JvdXBzID0gJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTUFNUyBNb2RpZnkgR3JvdXBzJyk7CiAgICAgICRwcHJvcCAgID0gJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTUFNUyBNb2RpZnkgRnJvbnRlbmRVc2VyTWFuYWdlclByb3BzJyk7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICRwdXNlcnMgID0gJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFVzZXJzJyk7CiAgICAgICRwZ3JvdXBzID0gJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIEdyb3VwcycpOwogICAgICAkcHByb3AgICA9ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBGcm9udGVuZFVzZXJNYW5hZ2VyUHJvcHMnKTsKICAgIH0KICAgIAogICAgJGNvbnN1bWVyID0gbWFtc191dGlsczo6Z2V0X2F1dGhfY29uc3VtZXIoKTsKCiAgICBzd2l0Y2goJHBlcm0pCiAgICB7CiAgICAgIGNhc2UgJyc6ICAvLyBhbnkgcGVybWlzc2lvbiBmb3Igd29ya2luZyB3aXRoIGdyb3VwcyBhbmQgdXNlcnMKICAgICAgICAkcmV0ID0gKCRwdXNlcnMgfHwgJHBncm91cHMgfHwgJHBwcm9wKTsKICAgICAgYnJlYWs7CiAgICAgIAogICAgICBjYXNlICdsaXN0dXNlcnMnOgogICAgICBjYXNlICd1c2Vycyc6CiAgICAgIGNhc2UgJ2FkZHVzZXInOgogICAgICBjYXNlICdlZGl0dXNlcnMnOgogICAgICBjYXNlICdyZW1vdmV1c2Vycyc6CiAgICAgICAgJHJldCA9ICRwdXNlcnM7CiAgICAgIGJyZWFrOwogICAgICAKICAgICAgY2FzZSAncHJvcGVydGllcyc6CiAgICAgICAgJHJldCA9ICRwcHJvcCAmJiAkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRjb25zdW1lcjo6Q0FQQUJJTElUWV9MSVNUUFJPUFMpOwogICAgICBicmVhazsKICAgICAgCiAgICAgIGNhc2UgJ2FkZHByb3AnOgogICAgICBjYXNlICdlZGl0cHJvcCc6CiAgICAgIGNhc2UgJ2RlbGV0ZXByb3AnOgogICAgICAgICRyZXQgPSAkcHByb3AgJiYgJGNvbnN1bWVyLT5oYXNfY2FwYWJpbGl0eSgkY29uc3VtZXI6OkNBUEFCSUxJVFlfRURJVFBST1BTKTsKICAgICAgYnJlYWs7CiAgICAgIAogICAgICBjYXNlICdncm91cHMnOgogICAgICBjYXNlICdsaXN0Z3JvdXBzJzoKICAgICAgICAkcmV0ID0gKCRwZ3JvdXBzICYmCiAgICAgICAgICAgICAgICAkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRjb25zdW1lcjo6Q0FQQUJJTElUWV9VU0VTVERHUk9VUFMpKSB8fAogICAgICAgICAgICAgICAkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRjb25zdW1lcjo6Q0FQQUJJTElUWV9MSVNUR1JPVVBTKTsKICAgICAgYnJlYWs7CiAgICAgIAogICAgICBjYXNlICdzdHJpY3RfZWRpdGdyb3Vwcyc6CiAgICAgIGNhc2UgJ3JlbW92ZWdyb3Vwcyc6CiAgICAgIGNhc2UgJ2FkZGdyb3VwJzoKICAgICAgICAkcmV0ID0gJHBncm91cHMgJiYgKCRjb25zdW1lci0+aGFzX2NhcGFiaWxpdHkoJGNvbnN1bWVyOjpDQVBBQklMSVRZX1VTRVNUREdST1VQUykgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb25zdW1lci0+aGFzX2NhcGFiaWxpdHkoJGNvbnN1bWVyOjpDQVBBQklMSVRZX0VESVRHUk9VUFMpKTsKICAgICAgYnJlYWs7CiAgICAgIAogICAgICBjYXNlICdlZGl0Z3JvdXBzJzoKICAgICAgICAkcmV0ID0gJHBncm91cHMgJiYgKCRjb25zdW1lci0+aGFzX2NhcGFiaWxpdHkoJGNvbnN1bWVyOjpDQVBBQklMSVRZX1VTRVNUREdST1VQUykgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb25zdW1lci0+aGFzX2NhcGFiaWxpdHkoJGNvbnN1bWVyOjpDQVBBQklMSVRZX0VESVRHUk9VUFMpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29uc3VtZXItPmhhc19jYXBhYmlsaXR5KCRjb25zdW1lcjo6Q0FQQUJJTElUWV9FRElUR1JPVVBQUk9QUykpOwogICAgICBicmVhazsKICAgICAgCiAgICAgIGNhc2UgJ3VzZXJzbmdyb3Vwcyc6CiAgICAgICAgJHJldCA9ICgkcHVzZXJzIHx8ICRwZ3JvdXBzKTsKICAgICAgYnJlYWs7CiAgICAgIAogICAgICBjYXNlICdzaXRlcHJlZnMnOgogICAgICAgICRyZXQgPSAkcHByb3A7CiAgICAgIGJyZWFrOwogICAgICAKICAgICAgZGVmYXVsdDoKICAgICAgICAkcmV0ID0gMDsKICAgICAgYnJlYWs7CiAgICB9CiAgICAKICAgIHJldHVybiAkcmV0OwogIH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPl9IYXNTdWZmaWNpZW50UGVybWlzc2lvbnMoJycpOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gR2V0QWRtaW5NZW51SXRlbXMoKQogIHsKICAgICRvdXQgPSBbXTsKICAgIGlmKCR0aGlzLT5fSGFzU3VmZmljaWVudFBlcm1pc3Npb25zKCcnKSkKICAgIHsKICAgICAgJG91dFtdID0gXENtc0FkbWluTWVudUl0ZW06OmZyb21fbW9kdWxlKCR0aGlzKTsKICAgIH0KICAgIAogICAgaWYoJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSkKICAgIHsKICAgICAgJG9iaiAgICAgICAgICAgICAgPSBuZXcgQ21zQWRtaW5NZW51SXRlbSgpOwogICAgICAkb2JqLT5tb2R1bGUgICAgICA9ICR0aGlzLT5HZXROYW1lKCk7CiAgICAgICRvYmotPnNlY3Rpb24gICAgID0gJ3NpdGVhZG1pbic7CiAgICAgICRvYmotPnRpdGxlICAgICAgID0gJHRoaXMtPkxhbmcoJ3RpdGxlX2FkbWlubmF2X3NldHRpbmdzJyk7CiAgICAgICRvYmotPmRlc2NyaXB0aW9uID0gJHRoaXMtPkxhbmcoJ2Rlc2NfYWRtaW5uYXZfc2V0dGluZ3MnKTsKICAgICAgJG9iai0+YWN0aW9uICAgICAgPSAnYWRtaW5fc2V0dGluZ3MnOwogICAgICAkb2JqLT51cmwgICAgICAgICA9ICR0aGlzLT5jcmVhdGVfdXJsKCdtMV8nLCAkb2JqLT5hY3Rpb24pOwogICAgICAkb3V0W10gICAgICAgICAgICA9ICRvYmo7CiAgICB9CiAgICAKICAgIHJldHVybiAkb3V0OwogIH0KICAKICAvKioKICAgKiBAaWdub3JlCiAgICovCiAgcHJvdGVjdGVkIGZ1bmN0aW9uIF9EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJiRwYXJhbXMsICRyZXR1cm5pZCwgJG1lc3NhZ2UgPSAnJykKICB7CiAgICBlY2hvICR0aGlzLT5EaXNwbGF5RXJyb3JNZXNzYWdlKCRtZXNzYWdlKTsKICB9CiAgCiAgLyoqCiAgICogQGlnbm9yZQogICAqLwogIGZ1bmN0aW9uIERvQWN0aW9uKCRhY3Rpb24sICRpZCwgJHBhcmFtcywgJHJldHVybmlkID0gLTEpCiAgewogICAgaWYoaXNzZXQoJHBhcmFtc1snbWFtc19lbmMnXSkpCiAgICB7CiAgICAgIC8vIHJlc3RvcmUgcGFyYW1ldGVycyBzYXZlZCBpbiB0aGUgc2Vzc2lvbiBvbiByZWRpcmVjdC4KICAgICAgJHNpZyA9ICRwYXJhbXNbJ21hbXNfZW5jJ107CiAgICAgIHVuc2V0KCRwYXJhbXNbJ21hbXNfZW5jJ10pOwogICAgICBpZihpc3NldCgkX1NFU1NJT05bJHNpZ10pKQogICAgICB7CiAgICAgICAgJHRtcCA9ICRfU0VTU0lPTlskc2lnXTsKICAgICAgICB1bnNldCgkX1NFU1NJT05bJHNpZ10pOwogICAgICAgICRwYXJhbXMgPSBhcnJheV9tZXJnZSgkdG1wLCAkcGFyYW1zKTsKICAgICAgfQogICAgfQogICAgCiAgICBpZignZGVmYXVsdCcgPT09ICRhY3Rpb24pCiAgICB7CiAgICAgICRmb3JtID0gJ2xvZ2luJzsKICAgICAgaWYoJHRoaXMtPkxvZ2dlZEluSWQoKSkKICAgICAgewogICAgICAgICRmb3JtID0gJ2xvZ291dCc7CiAgICAgIH0KICAgICAgJGZvcm0gPSBceHRfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywgJ2Zvcm0nLCAkZm9ybSk7CiAgICAgIHN3aXRjaCgkZm9ybSkKICAgICAgewogICAgICAgIGNhc2UgJ2xvZ2luJzoKICAgICAgICBjYXNlICdmb3Jnb3Rwdyc6CiAgICAgICAgY2FzZSAnc2lsZW50JzoKICAgICAgICBjYXNlICdjaGFuZ2VzZXR0aW5ncyc6CiAgICAgICAgY2FzZSAnbG9zdHVzZXJuYW1lJzoKICAgICAgICAgICRhY3Rpb24gPSAkZm9ybTsKICAgICAgICBicmVhazsKICAgICAgICAKICAgICAgICBjYXNlICdsb2dvdXQnOgogICAgICAgICAgJGFjdGlvbiA9ICdsb2dvdXRmb3JtJzsKICAgICAgICBicmVhazsKICAgICAgICAKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigiJGZvcm0gaXMgYW4gaW52YWxpZCB2YWx1ZSBmb3IgdGhlIGZvcm0gcGFyYW1ldGVyIik7CiAgICAgIH0KICAgIH0KICAgIAogICAgc3dpdGNoKCRhY3Rpb24pCiAgICB7CiAgICAgIGNhc2UgJ2NoYW5nZXNldHRpbmdzX3VybCc6CiAgICAgIGJyZWFrOwogICAgICAKICAgICAgZGVmYXVsdDoKICAgICAgICBwYXJlbnQ6OkRvQWN0aW9uKCRhY3Rpb24sICRpZCwgJHBhcmFtcywgJHJldHVybmlkKTsKICAgICAgYnJlYWs7CiAgICB9CiAgfQogIAogIC8qKgogICAqIEBpbnRlcm5hbAogICAqIEBkZXByZWNhdGVkCiAgICovCiAgZnVuY3Rpb24gbXlSZWRpcmVjdCgkaWQsICRhY3Rpb24sICRyZXR1cm5pZCwgJHBhcmFtcyA9IFtdLCAkaWdub3JlX3JldHVybnRvID0gRkFMU0UpCiAgewogICAgLy8gZmluZCBhbnkgcGFyYW1ldGVyIHZhbHVlcyB0aGF0IGFyZSBhcnJheXMKICAgIC8vIGF1dG9tYXRpY2FsbHkgc3RvcmUgdGhpcyBkYXRhIGluIHRoZSBzZXNzaW9uCiAgICB1bnNldCgkcGFyYW1zWydhY3Rpb24nXSwgJHBhcmFtc1sncmV0dXJuaWQnXSk7CiAgICAKICAgICRzaWcgICAgICAgICAgICA9IG1kNShfX01FVEhPRF9fIC4gdGltZSgpIC4gc2VyaWFsaXplKCRwYXJhbXMpKTsKICAgICRfU0VTU0lPTlskc2lnXSA9ICRwYXJhbXM7CiAgICAkcGFyYW1zICAgICAgICAgPSBbJ21hbXNfZW5jJyA9PiAkc2lnXTsKICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsICRhY3Rpb24sICRyZXR1cm5pZCwgJHBhcmFtcyk7CiAgfQogIAogIC8qKgogICAqIEBpbnRlcm5hbAogICAqLwovLyAgcHVibGljIGZ1bmN0aW9uIEdldEhlYWRlckhUTUwoKQovLyAgewovLyAgICAkdHh0ICA9IHBhcmVudDo6R2V0SGVhZGVySFRNTCgpOwovLyAgICAkdG1wbCA9IDw8PEVPVAovL3tKUXVlcnlUb29scyBhY3Rpb249J3JlcXVpcmUnIGxpYj0ndGFibGVzb3J0ZXIsSlF1ZXJ5VG9vbHMnfQovL3tKUXVlcnlUb29scyBhY3Rpb249J3BsYWNlbWFya2VyJ30KLy9FT1Q7Ci8vCi8vICAgICRvYmogPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0pRdWVyeVRvb2xzJywgJzEuMicpOwovLyAgICBpZihpc19vYmplY3QoJG9iaikpCi8vICAgIHsKLy8gICAgICAkc21hcnR5ID0gY21zbXMoKS0+R2V0U21hcnR5KCk7Ci8vICAgICAgJHR4dCAgICAuPSAkc21hcnR5LT5mZXRjaCgnc3RyaW5nOicgLiAkdG1wbCk7Ci8vICAgIH0KLy8KLy8gICAgcmV0dXJuICR0eHQ7Ci8vICB9CiAgCiAgLyoqCiAgICogc2VuZCBhbiBldmVudCB0aGF0IHRoaXMgdXNlciBhY2NvdW50IGhhcyBiZWVuIGV4cGlyZWQKICAgKgogICAqIEBpbnRlcm5hbAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBOb3RpZnlFeHBpcmVkVXNlcigkdXNlcmlkKQogIHsKICAgICR1c2VyID0gJHRoaXMtPkdldFVzZXJJbmZvKCR1c2VyaWQpOwogICAgCiAgICBpZihGQUxTRSA9PSAkdXNlclswXSkgeyByZXR1cm47IH0gLy8gdGhpcyBzaG91bGQgYmUgYW4gZXJyb3IKICAgIAogICAgJHBhcm1zICAgICAgICAgICAgID0gYXJyYXkoKTsKICAgICRwYXJtc1snaWQnXSAgICAgICA9ICR1c2VyaWQ7CiAgICAkcGFybXNbJ3VzZXJuYW1lJ10gPSAkdXNlclsxXVsndXNlcm5hbWUnXTsKICAgIEhvb2tNYW5hZ2VyOjpkb19ob29rKCdNQU1TOjpPbkV4cGlyZVVzZXInLCAkcGFybXMpOwogIH0KICAKICAvKioKICAgKiBAaW50ZXJuYWwKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gaXNfYWxsb3dlZF91cGxvYWQoJHNyY2ZpbGUpCiAgewogICAgJGFsbG93ZWRfZXh0ZW5zaW9ucyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhbGxvd2VkX2ltYWdlX2V4dGVuc2lvbnMnLCAnLmdpZiwucG5nLC5qcGcnKTsKICAgICR0bXAgICAgICAgICAgICAgICAgPSBleHBsb2RlKCcsJywgc3RydG9sb3dlcigkYWxsb3dlZF9leHRlbnNpb25zKSk7CiAgICAkc3JjZmlsZSAgICAgICAgICAgID0gc3RydG9sb3dlcigkc3JjZmlsZSk7CiAgICAKICAgIGZvcmVhY2goJHRtcCBhcyAkZXh0KQogICAgewogICAgICBpZihlbmRzd2l0aCgkc3JjZmlsZSwgJGV4dCkpIHsgcmV0dXJuIFRSVUU7IH0KICAgIH0KICAgIAogICAgcmV0dXJuIEZBTFNFOwogIH0KICAKICAvKioKICAgKiBAaW50ZXJuYWwKICAgKiBAdG9kbzogbW92ZSBtZSBvdXQgb2YgaGVyZQogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBnZXRfdXBsb2FkX2RpcnVybCgpCiAgewogICAgJGNvbmZpZyA9IFxjbXNfY29uZmlnOjpnZXRfaW5zdGFuY2UoKTsKICAgICRkbiAgICAgPSBjbXNfam9pbl9wYXRoKCRjb25maWdbJ3VwbG9hZHNfdXJsJ10sICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdpbWFnZV9kZXN0aW5hdGlvbl9wYXRoJywgJ21hbXMnKSk7CiAgICAkZG4gICAgID0gc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCAkZG4pOwogICAgCiAgICByZXR1cm4gJGRuOwogIH0KICAKICAvKioKICAgKiBAaW50ZXJuYWwKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3VwbG9hZF9kaXJuYW1lKCkKICB7CiAgICAkY29uZmlnID0gXGNtc19jb25maWc6OmdldF9pbnN0YW5jZSgpOwogICAgJGRuICAgICA9IGNtc19qb2luX3BhdGgoJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ10sICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdpbWFnZV9kZXN0aW5hdGlvbl9wYXRoJywgJ21hbXMnKSk7CiAgICAKICAgIHJldHVybiAkZG47CiAgfQogIAogIC8qKgogICAqIEBpbnRlcm5hbAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBnZXRfdXBsb2FkX2ZpbGVuYW1lKCRmbGRuYW1lLCAkc3JjZmlsZSkKICB7CiAgICAvLyBnZXQgdGhlIGZpbGVuYW1lIG9ubHksIG5vdCB0aGUgZGlyZWN0b3J5CiAgICAvLyBub3RlOiB0aGlzIG11c3QgYmUgcmVwcm9kdWNpYmxlIGdpdmVuIHRoZSBzYW1lIHNyY2ZpbGUgYW5kIGZpbGVuYW1lIGZvciB0aGUgc2FtZSByZXF1ZXN0LgogICAgJGV4dCAgPSBzdHJyY2hyKCRzcmNmaWxlLCAnLicpOwogICAgJHRpbWUgPSBceHRfcGFyYW06OmdldF9pbnQoJF9TRVJWRVIsICdSRVFVRVNUX1RJTUUnKTsKICAgIAogICAgcmV0dXJuIHNoYTEoX19GSUxFX18gLiBzZXNzaW9uX2lkKCkgLiAkZmxkbmFtZSAuICRzcmNmaWxlIC4gJHRpbWUpIC4gJGV4dDsKICB9CiAgCiAgLyoqCiAgICogQGludGVybmFsCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIE1hbmFnZUltYWdlVXBsb2FkKCRrZXksICRmbGRuYW1lKQogIHsKICAgICRyZXMgPSBcbWFtc191dGlsczo6Y2hlY2tVcGxvYWQoJGtleSk7CiAgICAKICAgIGlmKCEkcmVzWzBdKSB7IHJldHVybiAkcmVzOyB9CiAgICAKICAgICRmaWxlID0gJF9GSUxFU1ska2V5XTsKICAgIC8vIHNldCB0aGUgZGVzdGluYXRpb24gbmFtZQogICAgJGRlc3REaXIgID0gJHRoaXMtPmdldF91cGxvYWRfZGlybmFtZSgpOwogICAgJGRlc3RuYW1lID0gJHRoaXMtPmdldF91cGxvYWRfZmlsZW5hbWUoJGZsZG5hbWUsICRmaWxlWyduYW1lJ10pOwogICAgCiAgICAvLyBDcmVhdGUgdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSBpZiBuZWNlc3NhcnkKICAgIGlmKCFta2RpcigkZGVzdERpciwgMDc3NywgVFJVRSkgJiYgIWlzX2RpcigkZGVzdERpcikpCiAgICB7CiAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbihzcHJpbnRmKCdEaXJlY3RvcnkgIiVzIiB3YXMgbm90IGNyZWF0ZWQnLCAkZGVzdERpcikpOwogICAgfQogICAgCiAgICBAdG91Y2goJGRlc3REaXIgLiAnL2luZGV4Lmh0bWwnKTsKICAgIAogICAgaWYoIWlzX3dyaXRhYmxlKCRkZXN0RGlyKSkKICAgIHsKICAgICAgcmV0dXJuIFtGQUxTRSwgJHRoaXMtPkxhbmcoJ2Vycm9yX2Rlc3RpbmF0aW9ubm90d3JpdGFibGUnKV07CiAgICB9CiAgICAKICAgIEBjbXNfbW92ZV91cGxvYWRlZF9maWxlKCRmaWxlWyd0bXBfbmFtZSddLCBjbXNfam9pbl9wYXRoKCRkZXN0RGlyLCAkZGVzdG5hbWUpKTsKICAgIAogICAgcmV0dXJuIFtUUlVFLCAkZGVzdG5hbWVdOwogIH0KICAKICAvKioKICAgKiBAaW50ZXJuYWwKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gU2V0UG9zdExvZ2luVVJMKCR1cmwpCiAgewogICAgaWYoJHVybCkKICAgIHsKICAgICAgJHRoaXMtPnNlc3Npb25fcHV0KCdwb3N0bG9naW5fdXJsJywgJHVybCk7CiAgICB9CiAgfQogIAogIC8qKgogICAqIEBpbnRlcm5hbAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBHZXRQb3N0TG9naW5VUkwoKQogIHsKICAgICRvdXQgPSAkdGhpcy0+c2Vzc2lvbl9nZXQoJ3Bvc3Rsb2dpbl91cmwnKTsKICAgICR0aGlzLT5zZXNzaW9uX2NsZWFyKCdwb3N0bG9naW5fdXJsJyk7CiAgICAKICAgIHJldHVybiAkb3V0OwogIH0KICAKICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAvLyAgQVBJIEZVTkNUSU9OUyAvLwogIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIAogIC8qKgogICAqIEB0aHJvd3MgXE1BTVNcTWV0aG9kTm9Gb3VuZEV4Y2VwdGlvbgogICAqIEBkZXByZWNhdGVkIHVzZSBcTUFNU1xhcGkgaW5zdGVhZAogICAqIEBpZ25vcmUKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gX19jYWxsKCRuYW1lLCAkYXJncykKICB7CiAgICAkdGhpcy0+X2xvYWQoKTsKICAgIAogICAgaWYoICFtZXRob2RfZXhpc3RzKCAkdGhpcy0+dXNlcm1hbmlwLCAkbmFtZSApICkKICAgIHsKICAgICAgdGhyb3cgbmV3IFxNQU1TXE1ldGhvZE5vRm91bmRFeGNlcHRpb24oJG5hbWUsIGdldF9jbGFzcygkdGhpcy0+dXNlcm1hbmlwKSk7CiAgICB9CgogICAgcmV0dXJuIGNhbGxfdXNlcl9mdW5jX2FycmF5KFskdGhpcy0+dXNlcm1hbmlwLCAkbmFtZV0sICRhcmdzKTsKICB9CiAgCiAgLyoqCiAgICogR2V0IHRoZSBmaWxlbmFtZXMgb2YgYWxsIGZpbGVzIGFzc29jaWF0ZWQgd2l0aCBpbWFnZSBwcm9wZXJ0aWVzIGZvciB0aGUgc3BlY2lmaWVkIHVzZXIuCiAgICogRG9lcyBub3QgY2hlY2sgaWYgdGhlIGZpbGVzIGV4aXN0LCBoYXZlIHRodW1ibmFpbHMsIG9yIGZvciBwZXJtaXNzaW9ucy4KICAgKgogICAqIEBwYXJhbSBpbnQgJHVpZCBUaGUgdXNlcmlkCiAgICoKICAgKiBAcmV0dXJuIGFycmF5CiAgICovCiAgZnVuY3Rpb24gR2V0VXNlckZpbGVzRnVsbCgkdXNlcmlkKQogIHsKICAgICR1c2VyaWQgPSAoaW50KSR1c2VyaWQ7CiAgICBpZigkdXNlcmlkIDwgMSkgeyByZXR1cm4gW107IH0KICAgIAogICAgJGRlZm5zICAgID0gJHRoaXMtPkdldFByb3BlcnR5RGVmbnMoKTsKICAgICRwcm9wdmFscyA9ICR0aGlzLT5HZXRVc2VyUHJvcGVydGllcygkdXNlcmlkKTsKICAgIAogICAgaWYoISRwcm9wdmFscykgeyByZXR1cm4gW107IH0KICAgIAogICAgJHByb3B2YWxzID0gXHh0X2FycmF5Ojp0b19oYXNoKCRwcm9wdmFscywgJ3RpdGxlJyk7CiAgICAkb3V0ICAgICAgPSAgW107CiAgICAKICAgIGZvcmVhY2goJGRlZm5zIGFzICRuYW1lID0+ICRkZWZuKQogICAgewogICAgICBpZigkZGVmblsndHlwZSddICE9IHNlbGY6OkZJRUxEVFlQRV9JTUFHRSkgeyBjb250aW51ZTsgfQogICAgICAKICAgICAgaWYoIWlzc2V0KCRwcm9wdmFsc1skbmFtZV0pKSB7IGNvbnRpbnVlOyB9CiAgICAgIAogICAgICBpZighJHByb3B2YWxzWyRuYW1lXVsnZGF0YSddKSB7IGNvbnRpbnVlOyB9CiAgICAgIAogICAgICAkb3V0WyRuYW1lXSA9ICRwcm9wdmFsc1skbmFtZV1bJ2RhdGEnXTsKICAgIH0KICAgIAogICAgcmV0dXJuICRvdXQ7CiAgfQogIAogIAogIC8qKgogICAqIEBpbnRlcm5hbAogICAqIEBpZ25vcmUKICAgKi8KICBmdW5jdGlvbiBIYXNDYXBhYmlsaXR5KCRjYXBhYmlsaXR5LCAkcGFyYW1zID0gW10pCiAgewogICAgJGNhcGFiaWxpdGllcyA9IFsKICAgICAgICdjb250ZW50X3R5cGVzJywKICAgICAgICdjb250ZW50X2F0dHJpYnV0ZXMnLAogICAgICAgJ3Rhc2tzJywKICAgICAgICdjbGljb21tYW5kcyddOwogICAgCiAgICByZXR1cm4gaW5fYXJyYXkoJGNhcGFiaWxpdHksICRjYXBhYmlsaXRpZXMpOwogIH0KICAKICAvKioKICAgKiBAaW50ZXJuYWwKICAgKiBAaWdub3JlCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIGdldF9jbGlfY29tbWFuZHMoJGFwcCkKICB7CiAgICAkb3V0ICAgPSBOVUxMOwogICAgJG91dFtdID0gbmV3IE1BTVNcQ29tbWFuZHNcR3JvdXBFZGl0Q29tbWFuZCgkYXBwKTsKICAgICRvdXRbXSA9IG5ldyBNQU1TXENvbW1hbmRzXEdyb3VwTGlzdENvbW1hbmQoJGFwcCk7CiAgICAkb3V0W10gPSBuZXcgTUFNU1xDb21tYW5kc1xHcm91cExpc3RQcm9wc0NvbW1hbmQoJGFwcCk7CiAgICAkb3V0W10gPSBuZXcgTUFNU1xDb21tYW5kc1xHcm91cFZpZXdDb21tYW5kKCRhcHApOwogICAgJG91dFtdID0gbmV3IE1BTVNcQ29tbWFuZHNcUHJvcEVkaXRDb21tYW5kKCRhcHApOwogICAgJG91dFtdID0gbmV3IE1BTVNcQ29tbWFuZHNcUHJvcExpc3RDb21tYW5kKCRhcHApOwogICAgJG91dFtdID0gbmV3IE1BTVNcQ29tbWFuZHNcVXNlckFkZENvbW1hbmQoJGFwcCk7CiAgICAkb3V0W10gPSBuZXcgTUFNU1xDb21tYW5kc1xVc2VyRGVsZXRlQ29tbWFuZCgkYXBwKTsKICAgICRvdXRbXSA9IG5ldyBNQU1TXENvbW1hbmRzXFVzZXJFZGl0Q29tbWFuZCgkYXBwKTsKICAgICRvdXRbXSA9IG5ldyBNQU1TXENvbW1hbmRzXFVzZXJQcm9wRWRpdENvbW1hbmQoJGFwcCk7CiAgICAkb3V0W10gPSBuZXcgTUFNU1xDb21tYW5kc1xVc2VyTGlzdENvbW1hbmQoJGFwcCk7CiAgICAkb3V0W10gPSBuZXcgTUFNU1xDb21tYW5kc1xVc2VyVmlld0NvbW1hbmQoJGFwcCk7CiAgICAKICAgIHJldHVybiAkb3V0OwogIH0KICAKICAvKioKICAgKiBAaW50ZXJuYWwKICAgKiBAaWdub3JlCiAgICovCi8vICBmdW5jdGlvbiBnZXRfY29udGVudF9hdHRyaWJ1dGVzKCRjb250ZW50X3R5cGUpCi8vICB7Ci8vICAgICR0bXAgID0gW107Ci8vICAgICRhdHRyID0gbmV3IENtc0NvbnRlbnRUeXBlUHJvZmlsZUF0dHJpYnV0ZSgnbWFtc19ncm91cHMnLCAndmlzaXRvcnMnKTsKLy8gICAgJGF0dHItPnNldF9oZWxwZXIobWFtc19jb250ZW50X2F0dHJpYnV0ZV9oZWxwZXI6OmdldF9pbnN0YW5jZSgpKTsKLy8gICAgJHRtcFtdID0gJGF0dHI7Ci8vCi8vICAgIHJldHVybiAkdG1wOwovLyAgfQogIAogIC8qKgogICAqIEBpbnRlcm5hbAogICAqIEBpZ25vcmUKICAgKi8KICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhZ2VfdHlwZV9sYW5nX2NhbGxiYWNrKCRzdHIpCiAgewogICAgJG1vZCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnTUFNUycpOwogICAgJHN0ciA9IHN0cl9yZXBsYWNlKCcgJywgJ18nLCAkc3RyKTsKICAgIAogICAgaWYoJ2ZvcmdvdF9wYXNzd29yZF9lbWFpbCcgPT0gJHN0cikgeyAkc3RyID0gJ3ZlcmlmeV9lbWFpbCc7IH0KICAgIAogICAgJHN0ciA9ICd0cGx0eXBlXycgLiAkc3RyOwogICAgCiAgICBpZihpc19vYmplY3QoJG1vZCkpIHsgcmV0dXJuICRtb2QtPkxhbmcoJHN0cik7IH0KICAgIAogICAgcmV0dXJuICcnOwogIH0KICAKICAvKioKICAgKiBAaW50ZXJuYWwKICAgKiBAaWdub3JlCiAgICovCiAgc3RhdGljIHB1YmxpYyBmdW5jdGlvbiByZXNldF9wYWdlX3R5cGVfZGVmYXVsdHMoQ21zTGF5b3V0VGVtcGxhdGVUeXBlICR0eXBlKQogIHsKICAgIGlmKCdNQU1TJyAhPT0gJHR5cGUtPmdldF9vcmlnaW5hdG9yKCkpCiAgICB7CiAgICAgIHRocm93IG5ldyBDbXNMb2dpY0V4Y2VwdGlvbignQ2Fubm90IHJlc2V0IGNvbnRlbnRzIGZvciB0aGlzIHRlbXBsYXRlIHR5cGUnKTsKICAgIH0KICAgIAogICAgc3dpdGNoKCR0eXBlLT5nZXRfbmFtZSgpKQogICAgewogICAgICBjYXNlICdsb2dpbiBmb3JtJzoKICAgICAgICAkZm4gPSAnb3JpZ19sb2dpbmZvcm0udHBsJzsKICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ2xvZ291dCBmb3JtJzoKICAgICAgICAkZm4gPSAnb3JpZ19sb2dvdXRmb3JtLnRwbCc7CiAgICAgIGJyZWFrOwogICAgICBjYXNlICdjaHNldHRpbmdzIGZvcm0nOgogICAgICAgICRmbiA9ICdvcmlnX2NoYW5nZXNldHRpbmdzLnRwbCc7CiAgICAgIGJyZWFrOwogICAgICBjYXNlICdmb3Jnb3QgcGFzc3dvcmQgZm9ybSc6CiAgICAgICAgJGZuID0gJ29yaWdfZm9yZ290cGFzc3dvcmQxLnRwbCc7CiAgICAgIGJyZWFrOwogICAgICBjYXNlICdmb3Jnb3QgcGFzc3dvcmQgZW1haWwnOgogICAgICAgICRmbiA9ICdvcmlnX2ZvcmdvdHBhc3N3b3JkMi50cGwnOwogICAgICBicmVhazsKICAgICAgY2FzZSAnZm9yZ290IHBhc3N3b3JkIHZlcmlmeSc6CiAgICAgICAgJGZuID0gJ29yaWdfZm9yZ290cGFzc3dvcmQzLnRwbCc7CiAgICAgIGJyZWFrOwogICAgICBjYXNlICdmb3JjZSBuZXcgcGFzc3dvcmQnOgogICAgICAgICRmbiA9ICdvcmlnX2ZvcmNlX25ld3B3X2Zvcm0udHBsJzsKICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ2xvc3QgdXNlcm5hbWUgZm9ybSc6CiAgICAgICAgJGZuID0gJ29yaWdfbG9zdHVuZm9ybV90ZW1wbGF0ZS50cGwnOwogICAgICBicmVhazsKICAgICAgY2FzZSAnbG9zdCB1c2VybmFtZSBjb25maXJtJzoKICAgICAgICAkZm4gPSAnb3JpZ19sb3N0dW5mb3JtX2NvbmZpcm1fdGVtcGxhdGUudHBsJzsKICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ3ZpZXcgdXNlcic6CiAgICAgICAgJGZuID0gJ29yaWdfdmlld3VzZXJfdGVtcGxhdGUudHBsJzsKICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ3Jlc2V0IHNlc3Npb24nOgogICAgICAgICRmbiA9ICdvcmlnX3Jlc2V0c2Vzc2lvbl90ZW1wbGF0ZS50cGwnOwogICAgICBicmVhazsKICAgICAgY2FzZSAndmVyaWZ5X2Zvcm0nOgogICAgICBjYXNlICd2ZXJpZnkgZm9ybSc6CiAgICAgICAgJGZuID0gJ29yaWdfdmVyaWZ5Zm9ybS50cGwnOwogICAgICBicmVhazsKICAgICAgZGVmYXVsdDoKICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKAogICAgICAgICAgJHR5cGUtPmdldF9uYW1lKCkgLiAnIGlzIG5vdCBhIGtub3duIHR5cGUgZm9yIHRoZSAnIC4gJHR5cGUtPmdldF9vcmlnaW5hdG9yKCkgLiAnIG9yaWdpbmF0b3InCiAgICAgICAgKTsKICAgIH0KICAgIAogICAgJGZuID0gY21zX2pvaW5fcGF0aChfX0RJUl9fLCAndGVtcGxhdGVzJywgJGZuKTsKICAgIAogICAgaWYoaXNfZmlsZSgkZm4pKSB7IHJldHVybiBAZmlsZV9nZXRfY29udGVudHMoJGZuKTsgfQogICAgCiAgICByZXR1cm4gJyc7CiAgfQogIAogIC8qKgogICAqIEV4cG9zZXMgdGhlIE1BTVMgQVBJIHRvIG90aGVyIG1vZHVsZXMKICAgKgogICAqIEByZXR1cm4gTUFNU1xhcGkKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2FwaSgpIDogXE1BTVNcYXBpCiAgewogICAgcmV0dXJuIFxNQU1TXGFwaTo6Z2V0SW5zdGFuY2UoKTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIHNldF92ZXJpZmljYXRpb25fYXNzaXN0YW50KHZlcmlmaWNhdGlvbl9hc3Npc3RhbnQgJG9iaikKICB7CiAgICBpZigkdGhpcy0+dmVyaWZpY2F0aW9uX2Fzc2lzdGFudCkKICAgIHsKICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignQSB2ZXJpZmljYXRpb24gYXNzaXN0YW50IG9iamVjdCBhbHJlYWR5IGV4aXN0cycpOwogICAgfQogICAgJHRoaXMtPnZlcmlmaWNhdGlvbl9hc3Npc3RhbnQgPSAkb2JqOwogIH0KICAKICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0X3ZlcmlmaWNhdGlvbl9hc3Npc3RhbnQoKQogIHsKICAgIGlmKCEkdGhpcy0+dmVyaWZpY2F0aW9uX2Fzc2lzdGFudCkKICAgIHsKICAgICAgJHRoaXMtPnZlcmlmaWNhdGlvbl9hc3Npc3RhbnQgPSBuZXcgZW1haWxfdmVyaWZ5X2Fzc2lzdGFudCgkdGhpcyk7CiAgICB9CiAgICAKICAgIHJldHVybiAkdGhpcy0+dmVyaWZpY2F0aW9uX2Fzc2lzdGFudDsKICB9CiAgCn0gLy8gY2xhc3MKCi8vIEVPRgo=]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBhbGxvdyBtYW5hZ2VtZW50IG9mIGZyb250ZW5kCiMgIHVzZXJzLCBhbmQgdGhlaXIgbG9naW4gcHJvY2VzcyB3aXRoaW4gYSBDTVMgTWFkZSBTaW1wbGUgcG93ZXJlZAojICB3ZWJzaXRlLgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBWaXNpdCB0aGUgQ01TTVMgSG9tZXBhZ2UgYXQ6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIHsgZXhpdDsgfQoKIyBDTVNNU0V4dCBtYXkgbm90IGJlIHVwZGF0ZWQgeWV0LiBXZSBsZXQgaXQgZmFpbCBpZiB0aGUgbWV0aG9kIGlzIG5vdCBhdmFpbGFibGUuCmlmIChtZXRob2RfZXhpc3RzKCR0aGlzLCAnSXNQaHBWZXJzaW9uU3VwcG9ydGVkJykgJiYgISR0aGlzLT5Jc1BocFZlcnNpb25TdXBwb3J0ZWQoKSkKewogICMgb3RoZXJ3aXNlLCByZXR1cm4gYW4gZXJyb3IKICByZXR1cm4gJ01pbmltdW0gUEhQIHZlcnNpb24gb2YgJyAuICR0aGlzLT5HZXRNaW5pbWFsUGhwVmVyc2lvbigpIC4gJyByZXF1aXJlZCc7Cn0KCiMgdG9kbzogY2hhbmdlIGFsbCB0aGUgc2VxdWVuY2VzIHRvIGF1dG8taW5jcmVtZW50CgokbG9nX2V4Y2VwdGlvbiA9IHN0YXRpYyBmdW5jdGlvbihcRXhjZXB0aW9uICRlKQp7CiAgJG91dCA9ICctLSBFWENFUFRJT04gRFVNUCAtLScgLiAiXG4iOwogICRvdXQgLj0gJ1RZUEU6ICcgLiBnZXRfY2xhc3MoJGUpIC4gIlxuIjsKICAkb3V0IC49ICdNRVNTQUdFOiAnIC4gJGUtPmdldE1lc3NhZ2UoKSAuICJcbiI7CiAgJG91dCAuPSAnRklMRTogJyAuICRlLT5nZXRGaWxlKCkgLiAnOicgLiAkZS0+R2V0TGluZSgpIC4gIlxuIjsKICAkb3V0IC49ICJUUkFDRTpcbiI7CiAgJG91dCAuPSAkZS0+Z2V0VHJhY2VBc1N0cmluZygpOwogIGRlYnVnX3RvX2xvZygkb3V0LCAnLS0gJyAuIF9fTUVUSE9EX18gLiAnIC0tJyk7Cn07CgokZGIgICA9ICR0aGlzLT5HZXREYigpOwokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7CgokdGFib3B0YXJyYXkgPSBbJ215c3FsJyA9PiAnRU5HSU5FPUlubm9EQiddOwoKLy9Vc2VyIGxpc3QKJGZsZHMgICAgID0gJwogICAgICAgICBpZCBJIEtFWSBBVVRPIE5PVE5VTEwsCiAgICAgICAgIHVzZXJuYW1lIEMoMTI4KSBOT1ROVUxMLAogICAgICAgICBwYXNzd29yZCBDKDEyOCkgTk9UTlVMTCwKICAgICAgICAgY3JlYXRlZGF0ZSAnIC4gQ01TX0FET0RCX0RUIC4gJywKICAgICAgICAgZXhwaXJlcyAgICAnIC4gQ01TX0FET0RCX0RUIC4gJywKICAgICAgICAgbm9uc3RkICAgSTEsCiAgICAgICAgIGRpc2FibGVkIEkxLAogICAgICAgICBzYWx0ICAgICBDKDY0KSwKICAgICAgICAgZm9yY2VfbmV3cHcgSTEsCiAgICAgICAgIGZvcmNlX2Noc2V0dGluZ3MgSTEsCiAgICAgICAgIG11c3RfdmFsaWRhdGUgSTEKICAgICAgICAnOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX3VzZXJzJywgJGZsZHMsICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCi8vR3JvdXAgbGlzdAokZmxkcyAgICAgPSAnCgkgICAgIGlkIEkgS0VZIEFVVE8gTk9UTlVMTCwKCSAgICAgZ3JvdXBuYW1lIEMoMzIpIE5PVE5VTEwsCgkgICAgIGdyb3VwZGVzYyBDKDEyOCkKCSAgICAnOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX2dyb3VwcycsICRmbGRzLCAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgovLyBsb2dnZWRpbgokZmxkcyAgICAgPSAnCgkgICAgIHNlc3Npb25pZCBDKDI1NSkgTk9UTlVMTCwKCSAgICAgbGFzdHVzZWQgSSwKCSAgICAgdXNlcmlkIEkgTk9UTlVMTAoJICAgICc7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfbG9nZ2VkaW4nLCAkZmxkcywgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy9Db25uZWN0aW9ucyBiZXR3ZWVuIHVzZXJzIGFuZCBncm91cHMKJGZsZHMgICAgID0gJwoJICAgICB1c2VyaWQgSSBLRVkgTk9UTlVMTCwKCSAgICAgZ3JvdXBpZCBJIEtFWSBOT1ROVUxMCgkgICAgJzsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc19iZWxvbmdzJywgJGZsZHMsICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCi8vcHJvcGVydHkgZGVmaW5pdGlvbgokZmxkcyAgICAgPSAnCiAgICAgICAgIG5hbWUgICAgICBDKDQwKSBLRVkgTk9UTlVMTCwKICAgICAgICAgcHJvbXB0ICAgIEMoMjU1KSBOT1ROVUxMLAogICAgICAgICB0eXBlICAgICAgQygyMCkgTk9UTlVMTCwKICAgICAgICAgbGVuZ3RoICAgIEksCiAgICAgICAgIG1heGxlbmd0aCBJLAogICAgICAgICBhdHRyaWJzICAgQygyNTUpLAogICAgICAgICBmb3JjZV91bmlxdWUgSTEsCiAgICAgICAgIGVuY3J5cHQgICBJMSwKICAgICAgICAgZXh0cmEgICAgIFgKICAgICAgICAnOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTcWwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX3Byb3BkZWZuJywgJGZsZHMsICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCi8vZHJvcGRvd24gc2VsZWN0IG9wdGlvbnMKJGZsZHMgICAgID0gJwogICAgICAgICBvcmRlcl9pZAkJSSBOT1ROVUxMLAogICAgICAgICBvcHRpb25fbmFtZQlDKDQwKSBOT1ROVUxMLAogICAgICAgICBvcHRpb25fdGV4dAlDKDI1NSkgTk9UTlVMTCwKICAgICAgICAgY29udHJvbF9uYW1lCUMoNDApIE5PVE5VTEw7CiAgICAgICAgJzsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU3FsKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc19kcm9wZG93bnMnLCAkZmxkcywgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy8gZ3JvdXAgcHJvcGVydHkgbWFwCi8vIHVzZWQgdG8gYXNzb2NpYXRlIGEgcHJvcGVydHkgdG8gYSBncm91cAokZmxkcyAgICAgPSAnCiAgICAgICAgIG5hbWUgICAgQyg0MCkgS0VZIE5PVE5VTEwsCiAgICAgICAgIGdyb3VwX2lkIEkgS0VZIE5PVE5VTEwsCiAgICAgICAgIHNvcnRfa2V5IEkgTk9UTlVMTCwKICAgICAgICAgcmVxdWlyZWQgSSBOT1ROVUxMLAogICAgICAgICBsb3N0dW5mbGFnIEkKICAgICAgICAnOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTcWwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX2dyb3VwcHJvcG1hcCcsICRmbGRzLCAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgovL3VzZXIgcHJvcGVydGllcwokZmxkcyAgICAgPSAnCgkgICAgIGlkIEkgS0VZIEFVVE8gTk9UTlVMTCwKCSAgICAgdXNlcmlkIEkgTk9UTlVMTCwKCSAgICAgdGl0bGUgQygxMDApIE5PVE5VTEwsCgkgICAgIGRhdGEgWDIKCSAgICAnOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX3Byb3BlcnRpZXMnLCAkZmxkcywgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy8gZm9yZ290dGVuIHBhc3N3b3JkIHN0dWZmCiRmbGRzICAgICA9ICcKCSAgICAgdXNlcmlkIEkgS0VZLAogICAgICAgICBjb2RlIEMoMjUpIE5PVE5VTEwsCiAgICAgICAgIGNyZWF0ZWQgJyAuIENNU19BRE9EQl9EVDsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc190ZW1wY29kZScsICRmbGRzLCAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgovLyBsb2dpbiBoaXN0b3J5IHN0dWZmCiRmbGRzICAgICA9ICcKICAgICAgICAgdXNlcmlkIEkgTk9UTlVMTCwKCSAgICAgc2Vzc2lvbmlkIEMoMzIpIE5PVE5VTEwsCiAgICAgICAgIGFjdGlvbiBDKDI1NSkgTk9UTlVMTCwKICAgICAgICAgcmVmZGF0ZSAnIC4gQ01TX0FET0RCX0RUIC4gJywKICAgICAgICAgaXBhZGRyZXNzIEMoNjQpJzsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc19oaXN0b3J5JywgJGZsZHMsICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCi8vIGluZGV4ZXMKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZUluZGV4U1FMKAogIGNtc19kYl9wcmVmaXgoKSAuICdtYW1zX2lkeF9iZWxvbmdzJywgY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX2JlbG9uZ3MnLCAnZ3JvdXBpZCcKKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlSW5kZXhTUUwoCiAgY21zX2RiX3ByZWZpeCgpIC4gJ21hbXNfaWR4X3VzZXJuYW1lJywgY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX3VzZXJzJywgJ3VzZXJuYW1lJwopOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVJbmRleFNRTCgKICBjbXNfZGJfcHJlZml4KCkgLiAnbWFtc19pZHhfZXhwaXJlcycsIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc191c2VycycsICdleHBpcmVzJwopOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVJbmRleFNRTCgKICBjbXNfZGJfcHJlZml4KCkgLiAnbWFtc19pZHhfcmVmZGF0ZScsIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc19oaXN0b3J5JywgJ3VzZXJpZCxyZWZkYXRlLGFjdGlvbicKKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlSW5kZXhTUUwoCiAgY21zX2RiX3ByZWZpeCgpIC4gJ21hbXNfaWR4X3Byb3B1c2VydGl0bGUnLCBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfcHJvcGVydGllcycsICd1c2VyaWQsdGl0bGUnCik7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZUluZGV4U1FMKAogIGNtc19kYl9wcmVmaXgoKSAuICdtYW1zX2lkeF9wcm9wdGl0bGUnLCBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfcHJvcGVydGllcycsICd0aXRsZScKKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy8gc2V0dXAgZm9yZWlnbiBrZXkgcmVsYXRpb25zaGlwcwokc3FsID0gJ0FMVEVSIFRBQkxFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfYmVsb25ncyBBREQgRk9SRUlHTiBLRVkgKHVzZXJpZCkgUkVGRVJFTkNFUyAnIC4KICAgICAgIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc191c2VycyAoaWQpJzsKJGRiLT5FeGVjdXRlKCRzcWwpOwokc3FsID0gJ0FMVEVSIFRBQkxFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfbG9nZ2VkaW4gQUREIEZPUkVJR04gS0VZICh1c2VyaWQpIFJFRkVSRU5DRVMgJyAuCiAgICAgICBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfdXNlcnMgKGlkKSc7CiRkYi0+RXhlY3V0ZSgkc3FsKTsKJHNxbCA9ICdBTFRFUiBUQUJMRSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX2JlbG9uZ3MgQUREIEZPUkVJR04gS0VZIChncm91cGlkKSBSRUZFUkVOQ0VTICcgLgogICAgICAgY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX2dyb3VwcyAoaWQpJzsKJGRiLT5FeGVjdXRlKCRzcWwpOwokc3FsID0gJ0FMVEVSIFRBQkxFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfZHJvcGRvd25zIEFERCBGT1JFSUdOIEtFWSAoY29udHJvbF9uYW1lKSBSRUZFUkVOQ0VTICcgLgogICAgICAgY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX3Byb3BkZWZuIChuYW1lKSc7CiRkYi0+RXhlY3V0ZSgkc3FsKTsKJHNxbCA9ICdBTFRFUiBUQUJMRSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX2dyb3VwcHJvcG1hcCBBREQgRk9SRUlHTiBLRVkgKGdyb3VwX2lkKSBSRUZFUkVOQ0VTICcgLgogICAgICAgY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX2dyb3VwcyAoaWQpJzsKJGRiLT5FeGVjdXRlKCRzcWwpOwokc3FsID0gJ0FMVEVSIFRBQkxFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfZ3JvdXBwcm9wbWFwIEFERCBGT1JFSUdOIEtFWSAobmFtZSkgUkVGRVJFTkNFUyAnIC4KICAgICAgIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc19wcm9wZGVmbiAobmFtZSknOwokZGItPkV4ZWN1dGUoJHNxbCk7CiRzcWwgPSAnQUxURVIgVEFCTEUgJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc19wcm9wZXJ0aWVzIEFERCBGT1JFSUdOIEtFWSAodXNlcmlkKSBSRUZFUkVOQ0VTICcgLgogICAgICAgY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX3VzZXJzIChpZCknOwokZGItPkV4ZWN1dGUoJHNxbCk7CiRzcWwgPSAnQUxURVIgVEFCTEUgJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWFtc19wcm9wZXJ0aWVzIEFERCBGT1JFSUdOIEtFWSAodGl0bGUpIFJFRkVSRU5DRVMgJyAuCiAgICAgICBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfcHJvcGRlZm4gKG5hbWUpJzsKJGRiLT5FeGVjdXRlKCRzcWwpOwokc3FsID0gJ0FMVEVSIFRBQkxFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfdGVtcGNvZGUgQUREIEZPUkVJR04gS0VZICh1c2VyaWQpIFJFRkVSRU5DRVMgJyAuCiAgICAgICBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfdXNlcnMgKGlkKSc7CiRkYi0+RXhlY3V0ZSgkc3FsKTsKJHNxbCA9ICdBTFRFUiBUQUJMRSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tYW1zX2hpc3RvcnkgQUREIEZPUkVJR04gS0VZICh1c2VyaWQpIFJFRkVSRU5DRVMgJyAuCiAgICAgICBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21hbXNfdXNlcnMgKGlkKSc7CiRkYi0+RXhlY3V0ZSgkc3FsKTsKCiR1aWQgICAgICAgICAgICAgICAgICAgICA9IG1heCgxLCBnZXRfdXNlcmlkKEZBTFNFKSk7CiRyZXNldHNlc3Npb25fdHBsX3R5cGUgICA9IE5VTEw7CiR2aWV3dXNlcl90cGxfdHlwZSAgICAgICA9IE5VTEw7CiRsb3N0dW5jb25maXJtX3RwbF90eXBlICA9IE5VTEw7CiRsb3N0dW5mb3JtX3RwbF90eXBlICAgICA9IE5VTEw7CiRmb3JjZW5ld3B3X3RwbF90eXBlICAgICA9IE5VTEw7CiRmb3Jnb3Rwd3ZlcmlmeV90cGxfdHlwZSA9IE5VTEw7CiRmb3Jnb3Rwd2Zvcm1fdHBsX3R5cGUgICA9IE5VTEw7CiRjaHNldHRpbmdzX3RwbF90eXBlICAgICA9IE5VTEw7CiRsb2dvdXRfdHBsX3R5cGUgICAgICAgICA9IE5VTEw7CiRsb2dpbl90cGxfdHlwZSAgICAgICAgICA9IE5VTEw7CiRtb2QgICAgICAgICAgICAgICAgICAgICA9ICR0aGlzOwoKJGNyZWF0ZV9kZmx0X3RlbXBsYXRlID0gc3RhdGljIGZ1bmN0aW9uKCRuZXdfdHlwZSkgdXNlICgmJG1vZCwgJiRfZml4X25hbWUsICR1aWQpCnsKICB0cnkKICB7CiAgICAkcHJvdG90eXBlID0gJ01BTVMgJyAuICRuZXdfdHlwZS0+Z2V0X25hbWUoKTsKICAgICR0cGwgICAgICAgPSBuZXcgQ21zTGF5b3V0VGVtcGxhdGU7CiAgICAkdHBsLT5zZXRfbmFtZSgkdHBsOjpnZW5lcmF0ZV91bmlxdWVfbmFtZSgkcHJvdG90eXBlKSk7CiAgICAkdHBsLT5zZXRfb3duZXIoJHVpZCk7CiAgICAkdHBsLT5zZXRfdHlwZSgkbmV3X3R5cGUpOwogICAgJHRwbC0+c2V0X2NvbnRlbnQoJG5ld190eXBlLT5nZXRfZGZsdF9jb250ZW50cygpKTsKICAgICR0cGwtPnNldF90eXBlX2RmbHQoVFJVRSk7IC8vIE1BTVMgb25seSBoYWQgb25lIHRlbXBsYXRlIG9mIGVhY2ggdHlwZS4KICAgICR0cGwtPnNhdmUoKTsKICB9CiAgY2F0Y2goXENtc0ludmFsaWREYXRhRXhjZXB0aW9uICRlKQogIHsKICAgICRsb2dfZXhjZXB0aW9uKCRlKTsKICAgIGF1ZGl0KCcnLCAkbW9kLT5HZXROYW1lKCksICdVcGdyYWRlIFByb2JsZW0gJyAuICRlLT5HZXRNZXNzYWdlKCkpOwogIH0KfTsKCnRyeQp7CiAgJGxvZ2luX3RwbF90eXBlID0gbmV3IFxDbXNMYXlvdXRUZW1wbGF0ZVR5cGUoKTsKICAkbG9naW5fdHBsX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOwogICRsb2dpbl90cGxfdHlwZS0+c2V0X25hbWUoJ2xvZ2luIGZvcm0nKTsKICAkbG9naW5fdHBsX3R5cGUtPnNldF9kZmx0X2ZsYWcoVFJVRSk7CiAgJGxvZ2luX3RwbF90eXBlLT5zZXRfbGFuZ19jYWxsYmFjaygnTUFNUzo6cGFnZV90eXBlX2xhbmdfY2FsbGJhY2snKTsKICAkbG9naW5fdHBsX3R5cGUtPnNldF9jb250ZW50X2NhbGxiYWNrKCdNQU1TOjpyZXNldF9wYWdlX3R5cGVfZGVmYXVsdHMnKTsKICAkbG9naW5fdHBsX3R5cGUtPnJlc2V0X2NvbnRlbnRfdG9fZmFjdG9yeSgpOwogICRsb2dpbl90cGxfdHlwZS0+c2F2ZSgpOwogIAogICRsb2dvdXRfdHBsX3R5cGUgPSBuZXcgXENtc0xheW91dFRlbXBsYXRlVHlwZSgpOwogICRsb2dvdXRfdHBsX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOwogICRsb2dvdXRfdHBsX3R5cGUtPnNldF9uYW1lKCdsb2dvdXQgZm9ybScpOwogICRsb2dvdXRfdHBsX3R5cGUtPnNldF9kZmx0X2ZsYWcoVFJVRSk7CiAgJGxvZ291dF90cGxfdHlwZS0+c2V0X2xhbmdfY2FsbGJhY2soJ01BTVM6OnBhZ2VfdHlwZV9sYW5nX2NhbGxiYWNrJyk7CiAgJGxvZ291dF90cGxfdHlwZS0+c2V0X2NvbnRlbnRfY2FsbGJhY2soJ01BTVM6OnJlc2V0X3BhZ2VfdHlwZV9kZWZhdWx0cycpOwogICRsb2dvdXRfdHBsX3R5cGUtPnJlc2V0X2NvbnRlbnRfdG9fZmFjdG9yeSgpOwogICRsb2dvdXRfdHBsX3R5cGUtPnNhdmUoKTsKICAKICAkY2hzZXR0aW5nc190cGxfdHlwZSA9IG5ldyBcQ21zTGF5b3V0VGVtcGxhdGVUeXBlKCk7CiAgJGNoc2V0dGluZ3NfdHBsX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOwogICRjaHNldHRpbmdzX3RwbF90eXBlLT5zZXRfbmFtZSgnY2hzZXR0aW5ncyBmb3JtJyk7CiAgJGNoc2V0dGluZ3NfdHBsX3R5cGUtPnNldF9kZmx0X2ZsYWcoVFJVRSk7CiAgJGNoc2V0dGluZ3NfdHBsX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdNQU1TOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICRjaHNldHRpbmdzX3RwbF90eXBlLT5zZXRfY29udGVudF9jYWxsYmFjaygnTUFNUzo6cmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzJyk7CiAgJGNoc2V0dGluZ3NfdHBsX3R5cGUtPnJlc2V0X2NvbnRlbnRfdG9fZmFjdG9yeSgpOwogICRjaHNldHRpbmdzX3RwbF90eXBlLT5zYXZlKCk7CiAgCiAgJGZvcmdvdHB3Zm9ybV90cGxfdHlwZSA9IG5ldyBcQ21zTGF5b3V0VGVtcGxhdGVUeXBlKCk7CiAgJGZvcmdvdHB3Zm9ybV90cGxfdHlwZS0+c2V0X29yaWdpbmF0b3IoJHRoaXMtPkdldE5hbWUoKSk7CiAgJGZvcmdvdHB3Zm9ybV90cGxfdHlwZS0+c2V0X25hbWUoJ2ZvcmdvdCBwYXNzd29yZCBmb3JtJyk7CiAgJGZvcmdvdHB3Zm9ybV90cGxfdHlwZS0+c2V0X2RmbHRfZmxhZyhUUlVFKTsKICAkZm9yZ290cHdmb3JtX3RwbF90eXBlLT5zZXRfbGFuZ19jYWxsYmFjaygnTUFNUzo6cGFnZV90eXBlX2xhbmdfY2FsbGJhY2snKTsKICAkZm9yZ290cHdmb3JtX3RwbF90eXBlLT5zZXRfY29udGVudF9jYWxsYmFjaygnTUFNUzo6cmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzJyk7CiAgJGZvcmdvdHB3Zm9ybV90cGxfdHlwZS0+cmVzZXRfY29udGVudF90b19mYWN0b3J5KCk7CiAgJGZvcmdvdHB3Zm9ybV90cGxfdHlwZS0+c2F2ZSgpOwogIAogICRmb3Jnb3Rwd2VtYWlsX3RwbF90eXBlID0gbmV3IFxDbXNMYXlvdXRUZW1wbGF0ZVR5cGUoKTsKICAkZm9yZ290cHdlbWFpbF90cGxfdHlwZS0+c2V0X29yaWdpbmF0b3IoJHRoaXMtPkdldE5hbWUoKSk7CiAgJGZvcmdvdHB3ZW1haWxfdHBsX3R5cGUtPnNldF9uYW1lKCdmb3Jnb3QgcGFzc3dvcmQgZW1haWwnKTsKICAkZm9yZ290cHdlbWFpbF90cGxfdHlwZS0+c2V0X2RmbHRfZmxhZyhUUlVFKTsKICAkZm9yZ290cHdlbWFpbF90cGxfdHlwZS0+c2V0X2xhbmdfY2FsbGJhY2soJ01BTVM6OnBhZ2VfdHlwZV9sYW5nX2NhbGxiYWNrJyk7CiAgJGZvcmdvdHB3ZW1haWxfdHBsX3R5cGUtPnNldF9jb250ZW50X2NhbGxiYWNrKCdNQU1TOjpyZXNldF9wYWdlX3R5cGVfZGVmYXVsdHMnKTsKICAkZm9yZ290cHdlbWFpbF90cGxfdHlwZS0+cmVzZXRfY29udGVudF90b19mYWN0b3J5KCk7CiAgJGZvcmdvdHB3ZW1haWxfdHBsX3R5cGUtPnNhdmUoKTsKICAKICAkZm9yZ290cHd2ZXJpZnlfdHBsX3R5cGUgPSBuZXcgXENtc0xheW91dFRlbXBsYXRlVHlwZSgpOwogICRmb3Jnb3Rwd3ZlcmlmeV90cGxfdHlwZS0+c2V0X29yaWdpbmF0b3IoJHRoaXMtPkdldE5hbWUoKSk7CiAgJGZvcmdvdHB3dmVyaWZ5X3RwbF90eXBlLT5zZXRfbmFtZSgnZm9yZ290IHBhc3N3b3JkIHZlcmlmeScpOwogICRmb3Jnb3Rwd3ZlcmlmeV90cGxfdHlwZS0+c2V0X2RmbHRfZmxhZyhUUlVFKTsKICAkZm9yZ290cHd2ZXJpZnlfdHBsX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdNQU1TOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICRmb3Jnb3Rwd3ZlcmlmeV90cGxfdHlwZS0+c2V0X2NvbnRlbnRfY2FsbGJhY2soJ01BTVM6OnJlc2V0X3BhZ2VfdHlwZV9kZWZhdWx0cycpOwogICRmb3Jnb3Rwd3ZlcmlmeV90cGxfdHlwZS0+cmVzZXRfY29udGVudF90b19mYWN0b3J5KCk7CiAgJGZvcmdvdHB3dmVyaWZ5X3RwbF90eXBlLT5zYXZlKCk7CiAgCiAgJGZvcmNlbmV3cHdfdHBsX3R5cGUgPSBuZXcgXENtc0xheW91dFRlbXBsYXRlVHlwZSgpOwogICRmb3JjZW5ld3B3X3RwbF90eXBlLT5zZXRfb3JpZ2luYXRvcigkdGhpcy0+R2V0TmFtZSgpKTsKICAkZm9yY2VuZXdwd190cGxfdHlwZS0+c2V0X25hbWUoJ2ZvcmNlIG5ldyBwYXNzd29yZCcpOwogICRmb3JjZW5ld3B3X3RwbF90eXBlLT5zZXRfZGZsdF9mbGFnKFRSVUUpOwogICRmb3JjZW5ld3B3X3RwbF90eXBlLT5zZXRfbGFuZ19jYWxsYmFjaygnTUFNUzo6cGFnZV90eXBlX2xhbmdfY2FsbGJhY2snKTsKICAkZm9yY2VuZXdwd190cGxfdHlwZS0+c2V0X2NvbnRlbnRfY2FsbGJhY2soJ01BTVM6OnJlc2V0X3BhZ2VfdHlwZV9kZWZhdWx0cycpOwogICRmb3JjZW5ld3B3X3RwbF90eXBlLT5yZXNldF9jb250ZW50X3RvX2ZhY3RvcnkoKTsKICAkZm9yY2VuZXdwd190cGxfdHlwZS0+c2F2ZSgpOwogIAogICRsb3N0dW5mb3JtX3RwbF90eXBlID0gbmV3IFxDbXNMYXlvdXRUZW1wbGF0ZVR5cGUoKTsKICAkbG9zdHVuZm9ybV90cGxfdHlwZS0+c2V0X29yaWdpbmF0b3IoJHRoaXMtPkdldE5hbWUoKSk7CiAgJGxvc3R1bmZvcm1fdHBsX3R5cGUtPnNldF9uYW1lKCdsb3N0IHVzZXJuYW1lIGZvcm0nKTsKICAkbG9zdHVuZm9ybV90cGxfdHlwZS0+c2V0X2RmbHRfZmxhZyhUUlVFKTsKICAkbG9zdHVuZm9ybV90cGxfdHlwZS0+c2V0X2xhbmdfY2FsbGJhY2soJ01BTVM6OnBhZ2VfdHlwZV9sYW5nX2NhbGxiYWNrJyk7CiAgJGxvc3R1bmZvcm1fdHBsX3R5cGUtPnNldF9jb250ZW50X2NhbGxiYWNrKCdNQU1TOjpyZXNldF9wYWdlX3R5cGVfZGVmYXVsdHMnKTsKICAkbG9zdHVuZm9ybV90cGxfdHlwZS0+cmVzZXRfY29udGVudF90b19mYWN0b3J5KCk7CiAgJGxvc3R1bmZvcm1fdHBsX3R5cGUtPnNhdmUoKTsKICAKICAkbG9zdHVuY29uZmlybV90cGxfdHlwZSA9IG5ldyBcQ21zTGF5b3V0VGVtcGxhdGVUeXBlKCk7CiAgJGxvc3R1bmNvbmZpcm1fdHBsX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOwogICRsb3N0dW5jb25maXJtX3RwbF90eXBlLT5zZXRfbmFtZSgnbG9zdCB1c2VybmFtZSBjb25maXJtJyk7CiAgJGxvc3R1bmNvbmZpcm1fdHBsX3R5cGUtPnNldF9kZmx0X2ZsYWcoVFJVRSk7CiAgJGxvc3R1bmNvbmZpcm1fdHBsX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdNQU1TOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICRsb3N0dW5jb25maXJtX3RwbF90eXBlLT5zZXRfY29udGVudF9jYWxsYmFjaygnTUFNUzo6cmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzJyk7CiAgJGxvc3R1bmNvbmZpcm1fdHBsX3R5cGUtPnJlc2V0X2NvbnRlbnRfdG9fZmFjdG9yeSgpOwogICRsb3N0dW5jb25maXJtX3RwbF90eXBlLT5zYXZlKCk7CiAgCiAgJHZpZXd1c2VyX3RwbF90eXBlID0gbmV3IFxDbXNMYXlvdXRUZW1wbGF0ZVR5cGUoKTsKICAkdmlld3VzZXJfdHBsX3R5cGUtPnNldF9vcmlnaW5hdG9yKCR0aGlzLT5HZXROYW1lKCkpOwogICR2aWV3dXNlcl90cGxfdHlwZS0+c2V0X25hbWUoJ3ZpZXcgdXNlcicpOwogICR2aWV3dXNlcl90cGxfdHlwZS0+c2V0X2RmbHRfZmxhZyhUUlVFKTsKICAkdmlld3VzZXJfdHBsX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdNQU1TOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICR2aWV3dXNlcl90cGxfdHlwZS0+c2V0X2NvbnRlbnRfY2FsbGJhY2soJ01BTVM6OnJlc2V0X3BhZ2VfdHlwZV9kZWZhdWx0cycpOwogICR2aWV3dXNlcl90cGxfdHlwZS0+cmVzZXRfY29udGVudF90b19mYWN0b3J5KCk7CiAgJHZpZXd1c2VyX3RwbF90eXBlLT5zYXZlKCk7CiAgCiAgJHJlc2V0c2Vzc2lvbl90cGxfdHlwZSA9IG5ldyBcQ21zTGF5b3V0VGVtcGxhdGVUeXBlKCk7CiAgJHJlc2V0c2Vzc2lvbl90cGxfdHlwZS0+c2V0X29yaWdpbmF0b3IoJHRoaXMtPkdldE5hbWUoKSk7CiAgJHJlc2V0c2Vzc2lvbl90cGxfdHlwZS0+c2V0X25hbWUoJ3Jlc2V0IHNlc3Npb24nKTsKICAkcmVzZXRzZXNzaW9uX3RwbF90eXBlLT5zZXRfZGZsdF9mbGFnKFRSVUUpOwogICRyZXNldHNlc3Npb25fdHBsX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdNQU1TOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICRyZXNldHNlc3Npb25fdHBsX3R5cGUtPnNldF9jb250ZW50X2NhbGxiYWNrKCdNQU1TOjpyZXNldF9wYWdlX3R5cGVfZGVmYXVsdHMnKTsKICAkcmVzZXRzZXNzaW9uX3RwbF90eXBlLT5yZXNldF9jb250ZW50X3RvX2ZhY3RvcnkoKTsKICAkcmVzZXRzZXNzaW9uX3RwbF90eXBlLT5zYXZlKCk7CiAgCiAgJHZlcmlmeWZvcm1fdHBsX3R5cGUgPSBuZXcgXENtc0xheW91dFRlbXBsYXRlVHlwZSgpOwogICR2ZXJpZnlmb3JtX3RwbF90eXBlLT5zZXRfb3JpZ2luYXRvcigkdGhpcy0+R2V0TmFtZSgpKTsKICAkdmVyaWZ5Zm9ybV90cGxfdHlwZS0+c2V0X25hbWUoJ3ZlcmlmeV9mb3JtJyk7CiAgJHZlcmlmeWZvcm1fdHBsX3R5cGUtPnNldF9kZmx0X2ZsYWcoVFJVRSk7CiAgJHZlcmlmeWZvcm1fdHBsX3R5cGUtPnNldF9sYW5nX2NhbGxiYWNrKCdNQU1TOjpwYWdlX3R5cGVfbGFuZ19jYWxsYmFjaycpOwogICR2ZXJpZnlmb3JtX3RwbF90eXBlLT5zZXRfY29udGVudF9jYWxsYmFjaygnTUFNUzo6cmVzZXRfcGFnZV90eXBlX2RlZmF1bHRzJyk7CiAgJHZlcmlmeWZvcm1fdHBsX3R5cGUtPnJlc2V0X2NvbnRlbnRfdG9fZmFjdG9yeSgpOwogICR2ZXJpZnlmb3JtX3RwbF90eXBlLT5zYXZlKCk7Cn0KY2F0Y2goXENtc1NRTEVycm9yRXhjZXB0aW9uICRlKQp7CiAgJGxvZ19leGNlcHRpb24oJGUpOwogIGF1ZGl0KCcnLCAkdGhpcy0+R2V0TmFtZSgpLCAnVXBncmFkZSBFcnJvcjogJyAuICRlLT5HZXRNZXNzYWdlKCkpOwp9CmNhdGNoKFxFeGNlcHRpb24gJGUpCnsKICAkbG9nX2V4Y2VwdGlvbigkZSk7CiAgYXVkaXQoJycsICR0aGlzLT5HZXROYW1lKCksICdVcGdyYWRlIEVycm9yOiAnIC4gJGUtPkdldE1lc3NhZ2UoKSk7CiAgCiAgcmV0dXJuICdFUlJPUjogJyAuICRlLT5HZXRNZXNzYWdlKCk7Cn0KCi8vIG5vdyBjcmVhdGUgdGhlIHRlbXBsYXRlcyB0aGVtc2VsdmVzLgokY3JlYXRlX2RmbHRfdGVtcGxhdGUoJGxvZ2luX3RwbF90eXBlKTsKJGNyZWF0ZV9kZmx0X3RlbXBsYXRlKCRsb2dvdXRfdHBsX3R5cGUpOwokY3JlYXRlX2RmbHRfdGVtcGxhdGUoJGNoc2V0dGluZ3NfdHBsX3R5cGUpOwokY3JlYXRlX2RmbHRfdGVtcGxhdGUoJGZvcmdvdHB3Zm9ybV90cGxfdHlwZSk7CiRjcmVhdGVfZGZsdF90ZW1wbGF0ZSgkZm9yZ290cHdlbWFpbF90cGxfdHlwZSk7CiRjcmVhdGVfZGZsdF90ZW1wbGF0ZSgkZm9yZ290cHd2ZXJpZnlfdHBsX3R5cGUpOwokY3JlYXRlX2RmbHRfdGVtcGxhdGUoJGZvcmNlbmV3cHdfdHBsX3R5cGUpOwokY3JlYXRlX2RmbHRfdGVtcGxhdGUoJGxvc3R1bmZvcm1fdHBsX3R5cGUpOwokY3JlYXRlX2RmbHRfdGVtcGxhdGUoJGxvc3R1bmNvbmZpcm1fdHBsX3R5cGUpOwokY3JlYXRlX2RmbHRfdGVtcGxhdGUoJHZpZXd1c2VyX3RwbF90eXBlKTsKJGNyZWF0ZV9kZmx0X3RlbXBsYXRlKCRyZXNldHNlc3Npb25fdHBsX3R5cGUpOwokY3JlYXRlX2RmbHRfdGVtcGxhdGUoJHZlcmlmeWZvcm1fdHBsX3R5cGUpOwoKLy8gcHJlZmVyZW5jZXMKJHRoaXMtPlNldFByZWZlcmVuY2UoJ21pbl9wYXNzd29yZGxlbmd0aCcsIDYpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWF4X3Bhc3N3b3JkbGVuZ3RoJywgMjApOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZW5oYW5jZWRfcGFzc3dvcmQnLCAxKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3B3cmVxdWlyZWRjaGFycycsICd+QCMkJV4mKj0rXy0oKS4sIScpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWluX3VzZXJuYW1lbGVuZ3RoJywgNCk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXhfdXNlcm5hbWVsZW5ndGgnLCA0MCk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1c2VyX3Nlc3Npb25fZXhwaXJlcycsIDE4MDApOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnY29va2llX2tlZXBhbGl2ZScsIDApOwoKJGNvbmZpZyA9ICR0aGlzLT5HZXRFeHRlbmRlZENvbmZpZygpOwokc3RyICAgID0gJ3gnIC4gc3Vic3RyKHN0cl9zaHVmZmxlKG1kNSh0aW1lKCkgLiAkY29uZmlnWydyb290X3VybCddIC4gX19GSUxFX18pKSwgMCwgOCk7CgokdGhpcy0+U2V0UHJlZmVyZW5jZSgnY29va2llbmFtZScsICRzdHIpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9ncm91cCcsIC0xKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3JlcXVpcmVkX2ZpZWxkX21hcmtlcicsICcqJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdyZXF1aXJlZF9maWVsZF9jb2xvcicsICdibHVlJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdyZXF1aXJlX29uZWdyb3VwJywgMSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdoaWRkZW5fZmllbGRfbWFya2VyJywgJyEnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2hpZGRlbl9maWVsZF9jb2xvcicsICdncmVlbicpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgncGFnZWlkX2ZvcmdvdHBhc3N3ZCcsICcnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3BhZ2VpZF9jaGFuZ2VzZXR0aW5ncycsICcnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3BhZ2VpZF9sb2dpbicsICcnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3BhZ2VpZF9sb2dvdXQnLCAnJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwYWdlaWRfYWZ0ZXJ2ZXJpZnknLCAnJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhbGxvd19kdXBsaWNhdGVfZW1haWxzJywgMCk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1c2VybmFtZV9pc19lbWFpbCcsIDEpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgncGFzc3dvcmRmbGRsZW5ndGgnLCAyMCk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd1c2VybmFtZWZsZGxlbmd0aCcsIDQwKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2FsbG93X3JlcGVhdGVkX2xvZ2lucycsIDEpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnaW1hZ2VfZGVzdGluYXRpb25fcGF0aCcsICdfbWFtcycpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnYWxsb3dlZF9pbWFnZV9leHRlbnNpb25zJywgJy5naWYsLnBuZywuanBnJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdub3RpZmljYXRpb25fc3ViamVjdCcsICR0aGlzLT5MYW5nKCdtYW1zX2V2ZW50X25vdGlmaWNhdGlvbicpKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2V4cGlyZWFnZV9tb250aHMnLCA1MjApOwoKIyBJZiB0aGVyZSBpcyBhIExJU0UgaW5zdGFsbGF0aW9uIHNjYW4gZmllbGRzIHRvIGFkZCBvdXJzCiRsaXNlID0gXGNtc191dGlsczo6Z2V0X21vZHVsZSgnTElTRScpOwoKaWYoIGlzX29iamVjdCgkbGlzZSkgKQp7CiAgTElTRUZpZWxkZGVmT3BlcmF0aW9uczo6U2Nhbk1vZHVsZXMoKTsKfQoKLy8gdXNlcnNhbHQgPSAwL3Vuc2V0IDogbWQ1ICBoYXNoIHdpdGggZml4ZWQgc2FsdCBmb3IgYWxsIHVzZXJzCi8vIHVzZXJzYWx0ID0gMSA6IHNoYTEgaGFzaCB3aXRoIHVzZXIgc3BlY2lmaWMgc2FsdAovLyB1c2Vyc2FsdCA9IDMgOiB1c2UgcGhwJ3MgcGFzc3dvcmRfZW5jcnlwdCwgYW5kIHBhc3N3b3JkX3ZlcmlmeSB3aXRoIGJjcnlwdAokdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlX3VzZXJzYWx0JywgMik7CgovLyBFdmVudHMKJHRoaXMtPkNyZWF0ZUV2ZW50KCdBZnRlckxvZ2luQXV0aCcpOwokdGhpcy0+Q3JlYXRlRXZlbnQoJ0JlZm9yZUxvZ2luJyk7CiR0aGlzLT5DcmVhdGVFdmVudCgnT25Mb2dpbicpOwokdGhpcy0+Q3JlYXRlRXZlbnQoJ09uTG9naW5GYWlsZWQnKTsKJHRoaXMtPkNyZWF0ZUV2ZW50KCdPbkxvZ291dCcpOwokdGhpcy0+Q3JlYXRlRXZlbnQoJ09uRXhwaXJlVXNlcicpOwokdGhpcy0+Q3JlYXRlRXZlbnQoJ09uQ3JlYXRlVXNlcicpOwokdGhpcy0+Q3JlYXRlRXZlbnQoJ09uRGVsZXRlVXNlcicpOwokdGhpcy0+Q3JlYXRlRXZlbnQoJ09uVXBkYXRlVXNlcicpOwokdGhpcy0+Q3JlYXRlRXZlbnQoJ09uQ3JlYXRlR3JvdXAnKTsKJHRoaXMtPkNyZWF0ZUV2ZW50KCdPblVwZGF0ZUdyb3VwJyk7CiR0aGlzLT5DcmVhdGVFdmVudCgnT25EZWxldGVHcm91cCcpOwokdGhpcy0+Q3JlYXRlRXZlbnQoJ09uUmVmcmVzaFVzZXInKTsKCi8vIHBlcm1pc3Npb25zCiR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdNb2RpZnkgTUFNUycsICdNb2RpZnkgTUFNUyBQcm9wZXJ0aWVzJyk7]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQoKaWYoICFkZWZpbmVkKCdDTVNfVkVSU0lPTicpICkgeyBleGl0OyB9CgokZGIgPSAkdGhpcy0+R2V0RGIoKTsKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7CiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX21hbXNfbG9nZ2VkaW4iICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfbWFtc19iZWxvbmdzIiApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX21hbXNfcHJvcGVydGllcyIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9tYW1zX2Ryb3Bkb3ducyIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9tYW1zX2dyb3VwcHJvcG1hcCIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9tYW1zX3RlbXBjb2RlIiApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX21hbXNfaGlzdG9yeSIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfbWFtc19wcm9wZGVmbiIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9tYW1zX2dyb3VwcyIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9tYW1zX3VzZXJzIiApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgovLyB0ZW1wbGF0ZXMKJHRoaXMtPkRlbGV0ZVRlbXBsYXRlKCk7CgovLyBwcmVmZXJlbmNlcwokdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgpOwoKLy8gcGVybWlzc2lvbnMKJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ01vZGlmeSBNQU1TVXNlclByb3BzJyk7CgovLyBNQU1TLXNwZWNpZmljIHBlcm1pc3Npb25zIC4uLiBtYXkgb3IgbWF5IG5vdCBleGlzdAokdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignTUFNUyBNb2RpZnkgVXNlcnMnKTsKJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ01BTVMgTW9kaWZ5IEdyb3VwcycpOwokdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignTUFNUyBNb2RpZnkgTUFNU1Byb3BzJyk7CgovLyBFdmVudHMKJHRoaXMtPlJlbW92ZUV2ZW50KCAnQWZ0ZXJMb2dpbkF1dGgnICk7CiR0aGlzLT5SZW1vdmVFdmVudCggJ0JlZm9yZUxvZ2luJyApOwokdGhpcy0+UmVtb3ZlRXZlbnQoICdPbkxvZ2luJyApOwokdGhpcy0+UmVtb3ZlRXZlbnQoICdPbkxvZ2luJyApOwokdGhpcy0+UmVtb3ZlRXZlbnQoICdPbkxvZ2luRmFpbGVkJyApOwokdGhpcy0+UmVtb3ZlRXZlbnQoICdPbkxvZ291dCcgKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCAnT25FeHBpcmVVc2VyJyApOwokdGhpcy0+UmVtb3ZlRXZlbnQoICdPbkNyZWF0ZVVzZXInICk7CiR0aGlzLT5SZW1vdmVFdmVudCggJ09uRGVsZXRlVXNlcicgKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCAnT25DcmVhdGVHcm91cCcgKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCAnT25EZWxldGVHcm91cCcgKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCAnT25VcGRhdGVVc2VyJyApOwoKJHRoaXMtPlJlbW92ZUV2ZW50SGFuZGxlcignQ29yZScsJ0NvbnRlbnRQb3N0UmVuZGVyJyk7CiR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoJ0NHRWNvbW1lcmNlQmFzZScsJ09yZGVyVXBkYXRlZCcpOwokdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCdDR0Vjb21tZXJjZUJhc2UnLCdPcmRlckRlbGV0ZWQnKTs=]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1BTVMgKGMpIDIwMjAtMjAyMSBieSBDTVMgTWFkZSBTaW1wbGUgRm91bmRhdGlvbgojICBBbiBhZGQtb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB1c2VmdWwgZnVuY3Rpb25zCiMgIGFuZCBjb21tb25seSB1c2VkIGd1aSBjYXBhYmlsaXRpZXMgdG8gb3RoZXIgbW9kdWxlcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBIGZvcmsgb2Y6CiMKIyBNb2R1bGU6IEZyb250RW5kVXNlcnMgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNiAtIDIwMjEgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24KIyBDTVNNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVmlzaXQgdGhlIENNU01TIEhvbWVwYWdlIGF0OiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSB7IGV4aXQ7IH0KCiMgQ01TTVNFeHQgbWF5IG5vdCBiZSB1cGRhdGVkIHlldC4gV2UgbGV0IGl0IGZhaWwgaWYgdGhlIG1ldGhvZCBpcyBub3QgYXZhaWxhYmxlLgppZiAobWV0aG9kX2V4aXN0cygkdGhpcywgJ0lzUGhwVmVyc2lvblN1cHBvcnRlZCcpICYmICEkdGhpcy0+SXNQaHBWZXJzaW9uU3VwcG9ydGVkKCkpCnsKICAjIG90aGVyd2lzZSwgcmV0dXJuIGFuIGVycm9yCiAgcmV0dXJuICdNaW5pbXVtIFBIUCB2ZXJzaW9uIG9mICcgLiAkdGhpcy0+R2V0TWluaW1hbFBocFZlcnNpb24oKSAuICcgcmVxdWlyZWQnOwp9CgokZGIgPSAkdGhpcy0+R2V0RGIoKTsKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwokdWlkID0gZ2V0X3VzZXJpZCgpOwokbW9kID0gJHRoaXM7CgppZigkb2xkdmVyc2lvbiA8ICcxLjAuYi41JykKewogIFxNQU1TXHVwZ3JhZGVfdXRpbHM6OmNvbnRlbnRfdHlwZV9yZXBhaXIoKTsKICAkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignTW9kaWZ5IE1BTVNVc2VyUHJvcHMnLCAnTW9kaWZ5IE1BTVMgUHJvcGVydGllcycpOwogICR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdNb2RpZnkgRnJvbnRFbmRVc2VyUHJvcHMnKTsKfQoKaWYoJG9sZHZlcnNpb24gPCAnMS4wLmIuNicpCnsKICBcTUFNU1x1cGdyYWRlX3V0aWxzOjpjb250ZW50X3R5cGVfcmVwYWlyKCk7Cn0KCiMgYWx3YXlzCgojIElmIHRoZXJlIGlzIGEgTElTRSBpbnN0YWxsYXRpb24gc2NhbiBmaWVsZHMgdG8gYWRkIG91cnMKJGxpc2UgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdMSVNFJyk7CgppZiggaXNfb2JqZWN0KCRsaXNlKSApCnsKICBMSVNFRmllbGRkZWZPcGVyYXRpb25zOjpTY2FuTW9kdWxlcygpOwp9]]></data>
	</file>
	<file>
	  <filename>/templates</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/addgroup.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGV9OjwvaDM+Cgp7aWYgaXNzZXQoJG1lc3NhZ2UpIH0KICB7aWYgaXNzZXQoJGVycm9yKSB9CiAgICA8cD48Zm9udCBjb2xvcj0icmVkIj57JG1lc3NhZ2V9PC9mb250PjwvcD4KICB7ZWxzZX0KICAgIDxwPnskbWVzc2FnZX08L3A+CiAgey9pZn0Key9pZn0KCnskc3RhcnRmb3JtfQp7aWYgaXNzZXQoJGhpZGRlbil9CjxkaXY+eyRoaWRkZW59PC9kaXY+CnsvaWZ9Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfZ3JvdXBuYW1lfTogKjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2dyb3VwbmFtZX08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfZ3JvdXBkZXNjfTogKjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2dyb3VwZGVzY308L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0id2FybmluZyI+CiAgKiA9IHskbW9kLT5MYW5nKCdyZXF1aXJlZCcpfQo8L2Rpdj4KCntpZiAkcHJvcGNvdW50ID4gMH0KPGJyLz4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgIDx0aD57JG5hbWV0ZXh0fTwvdGg+CiAgICAgIDx0aD57JHByb21wdHRleHR9PC90aD4KICAgICAgPHRoPnskdHlwZXRleHR9PC90aD4KICAgICAgPHRoPnskbW9kLT5MYW5nKCdlbmNyeXB0ZWQnKX08L3RoPgogICAgICA8dGg+eyRmaWVsZHN0YXR1c3RleHR9PC90aD4KICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+PC90aD4KICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+PC90aD4KICAgIDwvdHI+CiAgPC90aGVhZD4KICA8dGJvZHk+CiAge2ZvcmVhY2ggJHByb3BzIGFzICRwcm9wZX0KICAgIHtjeWNsZSB2YWx1ZXM9InJvdzEscm93MiIgYXNzaWduPSdyb3djbGFzcyd9CiAgICA8dHIgY2xhc3M9Inskcm93Y2xhc3N9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3skcm93Y2xhc3N9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3skcm93Y2xhc3N9JzsiPgogICAgICA8dGQ+eyRwcm9wZS0+aGlkZGVufXskcHJvcGUtPm5hbWV9PC90ZD4KICAgICAgPHRkPnskcHJvcGUtPnByb21wdH08L3RkPgogICAgICA8dGQ+eyRwcm9wZS0+dHlwZX08L3RkPgogICAgICA8dGQ+e2lmICRwcm9wZS0+ZW5jcnlwdGVkfTxzcGFuIGluZm89InskbW9kLT5MYW5nKCdpbmZvX2VuY3J5cHRlZCcpfSIgc3R5bGU9ImNvbG9yOiByZWQ7IGZvbnQtd2VpZ2h0OiBib2xkOyI+eyRtb2QtPkxhbmcoJ3llcycpfTwvc3Bhbj57L2lmfTwvdGQ+CiAgICAgIDx0ZD57JHByb3BlLT5yZXF1aXJlZH08L3RkPgogICAgICA8dGQ+CiAgICAgICAge2lmIGlzc2V0KCRwcm9wZS0+bW92ZXVwX2lkeCl9CiAgICAgICAgICA8YnV0dG9uIG5hbWU9InskYWN0aW9uaWR9bW92ZXVwIiB0aXRsZT0ieyRtb2QtPkxhbmcoJ21vdmVfdXAnKX0iIHZhbHVlPSJ7JHByb3BlLT5tb3ZldXBfaWR4fSI+eyRpbWdfdXB9PC9idXR0b24+CiAgICAgICAgey9pZn0KICAgICAgPC90ZD4KICAgICAgPHRkPgogICAgICAgIHtpZiBpc3NldCgkcHJvcGUtPm1vdmVkb3duX2lkeCl9CiAgICAgICAgICA8YnV0dG9uIG5hbWU9InskYWN0aW9uaWR9bW92ZWRvd24iIHRpdGxlPSJ7JG1vZC0+TGFuZygnbW92ZV9kb3duJyl9IiB2YWx1ZT0ieyRwcm9wZS0+bW92ZWRvd25faWR4fSI+eyRpbWdfZG93bn08L2J1dHRvbj4KICAgICAgICB7L2lmfQogICAgICA8L3RkPgogICAgPC90cj4KICB7L2ZvcmVhY2h9CiAgPC90Ym9keT4KPC90YWJsZT4KPC9kaXY+CnsvaWZ9Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fXskY2FuY2VsfTwvcD4KPC9kaXY+CnskZW5kZm9ybX0K]]></data>
	</file>
	<file>
	  <filename>/templates/addprop.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGV9PC9oMz4Ke2lmIGlzc2V0KCRtZXNzYWdlKSB9CiAge2lmIGlzc2V0KCRlcnJvcikgfQogICAgPHA+PGZvbnQgY29sb3I9InJlZCI+eyRtZXNzYWdlfTwvZm9udD48L3A+CiAge2Vsc2V9CiAgICA8cD57JG1lc3NhZ2V9PC9wPgogIHsvaWZ9CnsvaWZ9Cnskc3RhcnRmb3JtfQo8ZGl2Pnskb3JpZ190eXBlfTwvZGl2PgogIDxkaXYgY2xhc3M9ImNfZnVsbCI+CiAgICA8cCBjbGFzcz0iZ3JpZF80Ij57JHByb21wdF9uYW1lfTo8L3A+CiAgICA8cCBjbGFzcz0iZ3JpZF84Ij57JGlucHV0X25hbWV9PC9wPgogICAgPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogICAgPHAgY2xhc3M9ImdyaWRfNCI+eyRwcm9tcHRfcHJvbXB0fTo8L3A+CiAgICA8cCBjbGFzcz0iZ3JpZF84Ij57JGlucHV0X3Byb21wdH08L3A+CiAgICA8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2PgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImNfZnVsbCI+CiAgICA8cCBjbGFzcz0iZ3JpZF80Ij57JHByb21wdF90eXBlfTo8L3A+CiAgICA8cCBjbGFzcz0iZ3JpZF84Ij57JGlucHV0X3R5cGV9PC9wPgogICAgPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KICA8L2Rpdj4KCiAge2lmIGlzc2V0KCRmaWVsZHMpfQogIHtmb3JlYWNoIGZyb209JGZpZWxkcyBpdGVtPSdvbmVmbGQnfQogIDxkaXYgY2xhc3M9ImNfZnVsbCI+CiAgICA8cCBjbGFzcz0iZ3JpZF80Ij57JG9uZWZsZFswXX06PC9wPgogICAgPHAgY2xhc3M9ImdyaWRfOCI+eyRvbmVmbGRbMV19PC9wPgogICAgPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KICA8L2Rpdj4KICB7L2ZvcmVhY2h9CiAgey9pZn0Ke2lmIGlzc2V0KCRpbnB1dF9mb3JjZV91bmlxdWUpICYmICRkZWZuLnR5cGUgIT0gNn0KICA8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogICAgPHAgY2xhc3M9ImdyaWRfNCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9mb3JjZV91bmlxdWUnKX06PC9wPgogICAgPHAgY2xhc3M9ImdyaWRfOCI+eyRpbnB1dF9mb3JjZV91bmlxdWV9PC9wPgogICAgPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KICA8L2Rpdj4Key9pZn0Ke2lmICRkZWZuLnR5cGUgIT0gMiAmJiAkZGVmbi50eXBlICE9IDZ9CiAgPGRpdiBjbGFzcz0iY19mdWxsIj4KICAgIDxwIGNsYXNzPSJncmlkXzQiPnskbW9kLT5MYW5nKCdwcm9tcHRfZW5jcnlwdCcpfTo8L3A+CiAgICA8ZGl2IGNsYXNzPSJncmlkXzgiPnskaW5wdXRfZW5jcnlwdH08cD57JG1vZC0+TGFuZygnaW5mb19lbmNyeXB0Jyl9PC9wPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KICA8L2Rpdj4Key9pZn0KICA8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogICAgPHAgY2xhc3M9ImdyaWRfOCI+eyRoaWRkZW58ZGVmYXVsdDonJ317JHN1Ym1pdH17JGNhbmNlbH08L3A+CiAgICA8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2PgogIDwvZGl2Pgp7JGVuZGZvcm19Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/adminprefs.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgokKGRvY3VtZW50KQogIC5yZWFkeShmdW5jdGlvbigpCiAgewoKICAkKCcjZmV1X2ltcG9ydF9mb3JtJykuc3VibWl0KCBmdW5jdGlvbihldil7CiAgICBldi5wcmV2ZW50RGVmYXVsdCgpOwogICAgY21zX2NvbmZpcm0oJ3skbW9kLT5MYW5nKCdjb25maXJtX2ltcG9ydF9mcm9tX2ZldScpfGVzY2FwZTonamF2YXNjcmlwdCd9JykuZG9uZShmdW5jdGlvbigpewogICAgICBldi5jdXJyZW50VGFyZ2V0LnN1Ym1pdCgpOwogICAgfSkKICB9KTsKCn0pOwo8L3NjcmlwdD4KCntpZiBpc3NldCgkbWVzc2FnZSkgfTxwPnskbWVzc2FnZX08L3A+ey9pZn0KeyRzdGFydGZvcm19Cgo8ZmllbGRzZXQ+CiAgPGxlZ2VuZD57JG1vZC0+TGFuZygnZ2VuZXJhbF9zZXR0aW5ncycpfTo8L2xlZ2VuZD4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnYXV0aF9tb2R1bGUnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIDxzZWxlY3QgbmFtZT0ieyRhY3Rpb25pZH1hdXRoX21vZHVsZSI+CiAgICAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRhdXRoX21vZHVsZXMgc2VsZWN0ZWQ9JGF1dGhfbW9kdWxlfQogICAgICA8L3NlbGVjdD4KICAgICAgPGJyLz57JG1vZC0+TGFuZygnaW5mb19hdXRoX21vZHVsZScpfQogICAgPC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfYXV0b19jcmVhdGVfdW5rbm93bicpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAge3h0X3llc25vX29wdGlvbnMgcHJlZml4PSRhY3Rpb25pZCBuYW1lPSdhdXRvX2NyZWF0ZV91bmtub3duJyBzZWxlY3RlZD0kYXV0b19jcmVhdGVfdW5rbm93bn0KICAgICAgPGJyLz4KICAgICAgeyRtb2QtPkxhbmcoJ2luZm9fYXV0b19jcmVhdGVfdW5rbm93bicpfQogICAgPC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2FsbG93X3JlcGVhdGVkX2xvZ2luc306PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9hbGxvd19yZXBlYXRlZF9sb2dpbnN9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfZXhwaXJlYWdlJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfZXhwaXJlYWdlfSZuYnNwOyh7JG1vZC0+TGFuZygnbW9udGhzJyl9KTwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X3JhbmRvbXVzZXJuYW1lJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfcmFuZG9tdXNlcm5hbWV9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2NsZWFyaGlzdG9yeV9hZ2UnKX06PC9wPgogICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1jbGVhcmhpc3RvcnlfYWdlIiB2YWx1ZT0ieyRjbGVhcmhpc3RvcnlfYWdlfSIgc2l6ZT0iMyIgbWF4bGVuZ3RoPSIzIi8+CgkgPGJyLz57JG1vZC0+TGFuZygnaW5mb19jbGVhcmhpc3RvcnlfYWdlJyl9CiAgICAgPC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X21hbXNfc3BlY2lmaWNfcGVybWlzc2lvbnN9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfbWFtc19zcGVjaWZpY19wZXJtaXNzaW9uc308YnIvPnskaW5mb19tYW1zX3NwZWNpZmljX3Blcm1pc3Npb25zfTwvcD4KICA8L2Rpdj4KPC9maWVsZHNldD4KCjxmaWVsZHNldD4KICA8bGVnZW5kPnskbW9kLT5MYW5nKCdzZXNzaW9uX3NldHRpbmdzJyl9OjwvbGVnZW5kPgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3Nlc3Npb250aW1lb3V0fTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3Nlc3Npb250aW1lb3V0fQogICAgICA8YnIvPnskbW9kLT5MYW5nKCdpbmZvX3Nlc3Npb250aW1lb3V0Jyl9CiAgICA8L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9leHBpcmV1c2Vyc19pbnRlcnZhbCcpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9ZXhwaXJldXNlcnNfaW50ZXJ2YWwiIHZhbHVlPSJ7JGV4cGlyZXVzZXJzX2ludGVydmFsfSIgc2l6ZT0iNCIgbWF4bGVuZ3RoPSI0Ii8+CiAgICAgIDxici8+eyRtb2QtPkxhbmcoJ2luZm9fZXhwaXJldXNlcnNfaW50ZXJ2YWwnKX0KICAgIDwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2ZvcmNlbG9nb3V0X3RpbWVzJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1mb3JjZWxvZ291dF90aW1lcyIgc2l6ZT0iNDAiIG1heGxlbmd0aD0iMjU1IiB2YWx1ZT0ieyRmb3JjZWxvZ291dF90aW1lc30iLz4KICAgICAgPGJyLz57JG1vZC0+TGFuZygnaW5mb19mb3JjZWxvZ291dF90aW1lcycpfQogICAgPC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfZm9yY2Vsb2dvdXRfc2Vzc2lvbmFnZScpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9Zm9yY2Vsb2dvdXRfc2Vzc2lvbmFnZSIgc2l6ZT0iNSIgbWF4bGVuZ3RoPSI1IiB2YWx1ZT0ieyRmb3JjZWxvZ291dF9zZXNzaW9uYWdlfSIvPgogICAgICA8YnIvPnskbW9kLT5MYW5nKCdpbmZvX2ZvcmNlbG9nb3V0X3Nlc3Npb25hZ2UnKX0KICAgIDwvcD4KICA8L2Rpdj4KPC9maWVsZHNldD4KCjxmaWVsZHNldD4KICA8bGVnZW5kPnskbW9kLT5MYW5nKCdwcm9wZXJ0eV9zZXR0aW5ncycpfTo8L2xlZ2VuZD4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9pbWFnZV9kZXN0aW5hdGlvbl9wYXRofTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2ltYWdlX2Rlc3RpbmF0aW9uX3BhdGh9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2FsbG93ZWRfaW1hZ2VfZXh0ZW5zaW9uc306PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9hbGxvd2VkX2ltYWdlX2V4dGVuc2lvbnN9PC9wPgogIDwvZGl2Pgo8L2ZpZWxkc2V0PgoKPGZpZWxkc2V0PgogIDxsZWdlbmQ+eyRtb2QtPkxhbmcoJ3BhZ2V0eXBlX3NldHRpbmdzJyl9OjwvbGVnZW5kPgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwYWdldHlwZV9ncm91cHMnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIDxzZWxlY3QgbmFtZT0ieyRhY3Rpb25pZH1wYWdldHlwZV9ncm91cHNbXSIgbXVsdGlwbGU9Im11bHRpcGxlIiBzaXplPSI1Ij4KICAgICAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JGFsbF9ncm91cHMgc2VsZWN0ZWQ9JHBhZ2V0eXBlX2dyb3Vwc30KICAgICAgPC9zZWxlY3Q+CiAgICAgIDxici8+CiAgICAgIHskbW9kLT5MYW5nKCdpbmZvX3BhZ2V0eXBlX2dyb3VwcycpfQogICAgPC9wPgogIDwvZGl2Pgo8L2ZpZWxkc2V0PgoKe2lmIGlzc2V0KCRkYXRhX251bXJlc2V0cmVjb3Jkcyl9CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxociB3aWR0aD0iNTAlIiBhbGlnbj0ibGVmdCIvPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X251bXJlc2V0cmVjb3Jkc308L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGRhdGFfbnVtcmVzZXRyZWNvcmRzfTwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9yZW1vdmUxd2Vla317JGlucHV0X3JlbW92ZTFtb250aH17JGlucHV0X3JlbW92ZWFsbH08L3A+CiAgPC9kaXY+CnsvaWZ9Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaGlkZGVufGRlZmF1bHQ6Jyd9eyRzdWJtaXR9eyRjYW5jZWx9PC9wPgo8L2Rpdj4KeyRlbmRmb3JtfQoKe2lmICRoYXZlX2ZldX0KICB7Zm9ybV9zdGFydCBhY3Rpb249YWRtaW5faW1wb3J0X2Zyb21fZmV1IGlkPSdmZXVfaW1wb3J0X2Zvcm0nfQogIDxmaWVsZHNldD4KICAgIDxsZWdlbmQ+eyRtb2QtPkxhbmcoJ2ltcG9ydF9mcm9tX2ZldScpfTo8L2xlZ2VuZD4KICAgIDxkaXYgc3R5bGU9IndpZHRoOiA5NSU7Ij4KICAgICAgPGRpdiBjbGFzcz0id2FybmluZyIgc3R5bGU9IndpZHRoOiA5OSU7Ij48cD48c3Ryb25nIHN0eWxlPSJjb2xvcjogcmVkOyI+V2FybmluZzo8L3N0cm9uZz48L3A+CiAgICAgICAgPHA+eyRtb2QtPkxhbmcoJ2luZm9faW1wb3J0X2Zyb21fZmV1Jyl9PC9wPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieyRhY3Rpb25pZH1kb19pbXBvcnQiIHZhbHVlPSJkb19pbXBvcnQiLz4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9c3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2ltcG9ydCcpfSIvPgogIDwvZmllbGRzZXQ+CiAge2Zvcm1fZW5kfQp7L2lmfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/admintasks.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCRtZXNzYWdlKSB9PGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPnskbWVzc2FnZX08L2Rpdj57L2lmfQoKeyogQSBmb3JtIChzaW1wbGUgYnV0dG9uKSBmb3IgZXhwb3J0aW5nIHVzZXJzIHRvIGNzdiAqfQp7JHN0YXJ0Zm9ybX17JGlucHV0X2hpZGRlbn0KCjxmaWVsZHNldD4KPGxlZ2VuZD57JGxlZ2VuZF91c2VyaGlzdG9yeW1haW50ZW5hbmNlfTwvbGVnZW5kPgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfZXhwb3J0dXNlcmhpc3Rvcnl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2V4cG9ydHVzZXJoaXN0b3J5fSZuYnNwO3skYnV0dG9uX2V4cG9ydHVzZXJoaXN0b3J5fTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9jbGVhcnVzZXJoaXN0b3J5fTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9jbGVhcnVzZXJoaXN0b3J5fSZuYnNwO3skYnV0dG9uX2NsZWFydXNlcmhpc3Rvcnl9PC9wPgo8L2Rpdj4KPC9maWVsZHNldD4KeyRlbmRmb3JtfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/admin_authtab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmb3Jtc3RhcnR9CjxkaXYgY2xhc3M9ImluZm9ybWF0aW9uIj57JG1vZC0+TGFuZygnaW5mb19zdGRfYXV0aF9zZXR0aW5ncycpfTwvZGl2Pgo8ZmllbGRzZXQ+CiAgPGxlZ2VuZD57JG1vZC0+TGFuZygnYXV0aF9zZXR0aW5ncycpfTwvbGVnZW5kPgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfcmVxdWlyZW9uZWdyb3VwJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICB7eHRfeWVzbm9fb3B0aW9ucyBwcmVmaXg9JGFjdGlvbmlkIG5hbWU9cmVxdWlyZV9vbmVncm91cCBzZWxlY3RlZD0kcmVxdWlyZV9vbmVncm91cH0KICAgIDwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2RmbHRncm91cCcpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPHNlbGVjdCBuYW1lPSJ7JGFjdGlvbmlkfWRlZmF1bHRfZ3JvdXAiPgogICAgICAgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kZ3JvdXBsaXN0IHNlbGVjdGVkPSRkZWZhdWx0X2dyb3VwfQogICAgICA8L3NlbGVjdD4KICAgIDwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X3N1cHBvcnRfbG9zdHVuJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICB7eHRfeWVzbm9fb3B0aW9ucyBwcmVmaXg9JGFjdGlvbmlkIG5hbWU9c3VwcG9ydF9sb3N0dW4gc2VsZWN0ZWQ9JHN1cHBvcnRfbG9zdHVufQogICAgICA8YnIvPgogICAgICB7JG1vZC0+TGFuZygnaW5mb19zdXBwb3J0X2xvc3R1bicpfQogICAgPC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfYWxsb3dfY2hhbmdldXNlcm5hbWUnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIHt4dF95ZXNub19vcHRpb25zIHByZWZpeD0kYWN0aW9uaWQgbmFtZT1hbGxvd19jaGFuZ2V1c2VybmFtZSBzZWxlY3RlZD0kYWxsb3dfY2hhbmdldXNlcm5hbWV9CiAgICAgIDxici8+CiAgICAgIHskbW9kLT5MYW5nKCdpbmZvX2FsbG93X2NoYW5nZXVzZXJuYW1lJyl9CiAgICA8L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9zdXBwb3J0X2xvc3RwdycpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAge3h0X3llc25vX29wdGlvbnMgcHJlZml4PSRhY3Rpb25pZCBuYW1lPXN1cHBvcnRfbG9zdHB3IHNlbGVjdGVkPSRzdXBwb3J0X2xvc3Rwd30KICAgICAgPGJyLz4KICAgICAgeyRtb2QtPkxhbmcoJ2luZm9fc3VwcG9ydF9sb3N0cHcnKX0KICAgIDwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X3B3ZmxkbGVuJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1wd2ZsZGxlbiIgdmFsdWU9InskcHdmbGRsZW59IiBzaXplPSIyIiBtYXhsZW5ndGg9IjIiLz4KICAgIDwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X21pbnB3bGVuJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1taW5wd2xlbiIgdmFsdWU9InskbWlucHdsZW59IiBzaXplPSIyIiBtYXhsZW5ndGg9IjIiLz4KICAgICAgPGJyLz4KICAgICAgeyRtb2QtPkxhbmcoJ3dhcm5pbmdfZWZmZWN0c2ZpZWxkbGVuZ3RoJyl9CiAgICA8L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9tYXhwd2xlbicpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9bWF4cHdsZW4iIHZhbHVlPSJ7JG1heHB3bGVufSIgc2l6ZT0iMiIgbWF4bGVuZ3RoPSIyIi8+CiAgICAgIDxici8+CiAgICAgIHskbW9kLT5MYW5nKCd3YXJuaW5nX2VmZmVjdHNmaWVsZGxlbmd0aCcpfQogICAgPC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2VuaGFuY2VkcHcnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIHt4dF95ZXNub19vcHRpb25zIHByZWZpeD0kYWN0aW9uaWQgbmFtZT1lbmhhbmNlZHB3IHNlbGVjdGVkPSRlbmhhbmNlZHB3fQogICAgICA8YnIvPgogICAgICB7JG1vZC0+TGFuZygnaW5mb19lbmhhbmNlZHB3Jyl9CiAgICA8L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9wd3JlcXVpcmVkY2hhcnMnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfXB3cmVxdWlyZWRjaGFycyIgdmFsdWU9InskcHdyZXF1aXJlZGNoYXJzfSIgbWF4bGVuZ3RoPSI0MCIvPgogICAgICA8YnIvPgogICAgICB7JG1vZC0+TGFuZygnaW5mb19wd3JlcXVpcmVkY2hhcnMnKX0KICAgIDwvcD4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF91bmZsZGxlbicpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9dW5mbGRsZW4iIHZhbHVlPSJ7JHVuZmxkbGVufSIgc2l6ZT0iMiIgbWF4bGVuZ3RoPSIyIi8+CiAgICA8L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9taW51bmxlbicpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9bWludW5sZW4iIHZhbHVlPSJ7JG1pbnVubGVufSIgc2l6ZT0iMiIgbWF4bGVuZ3RoPSIyIi8+CiAgICAgIDxici8+CiAgICAgIHskbW9kLT5MYW5nKCd3YXJuaW5nX2VmZmVjdHNmaWVsZGxlbmd0aCcpfQogICAgPC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfbWF4dW5sZW4nKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfW1heHVubGVuIiB2YWx1ZT0ieyRtYXh1bmxlbn0iIHNpemU9IjIiIG1heGxlbmd0aD0iMiIvPgogICAgICA8YnIvPgogICAgICB7JG1vZC0+TGFuZygnd2FybmluZ19lZmZlY3RzZmllbGRsZW5ndGgnKX0KICAgIDwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2Nvb2tpZW5hbWUnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfWNvb2tpZW5hbWUiIHZhbHVlPSJ7JHhjb29raWVuYW1lfGRlZmF1bHQ6Jyd9IiBzaXplPSI1MCIgbWF4bGVuZ3RoPSI1MCIvPgogICAgICA8YnIvPgogICAgICB7JG1vZC0+TGFuZygnaW5mb19jb29raWVuYW1lJyl9CiAgICA8L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9jb29raWVrZWVwYWxpdmUnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIHt4dF95ZXNub19vcHRpb25zIHByZWZpeD0kYWN0aW9uaWQgbmFtZT1jb29raWVfa2VlcGFsaXZlIHNlbGVjdGVkPSRjb29raWVfa2VlcGFsaXZlfQogICAgICA8YnIvPgogICAgICB7JG1vZC0+TGFuZygnaW5mb19jb29raWVfa2VlcGFsaXZlJyl9CiAgICA8L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF91c2VybmFtZV9pc19lbWFpbCcpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAge3h0X3llc25vX29wdGlvbnMgcHJlZml4PSRhY3Rpb25pZCBuYW1lPXVzZXJuYW1lX2lzX2VtYWlsIHNlbGVjdGVkPSR1c2VybmFtZV9pc19lbWFpbH0KICAgICAgPGJyLz4KICAgICAgeyRtb2QtPkxhbmcoJ2luZm9fdXNlcm5hbWVfaXNfZW1haWwnKX0KICAgIDwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2FsbG93X2R1cGxpY2F0ZV9lbWFpbHMnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIHt4dF95ZXNub19vcHRpb25zIHByZWZpeD0kYWN0aW9uaWQgbmFtZT1hbGxvd19kdXBsaWNhdGVfZW1haWxzIHNlbGVjdGVkPSRhbGxvd19kdXBsaWNhdGVfZW1haWxzfQogICAgICA8YnIvPgogICAgICB7JG1vZC0+TGFuZygnaW5mb19hbGxvd19kdXBsaWNhdGVfZW1haWxzJyl9CiAgICA8L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9hbGxvd19kdXBsaWNhdGVfcmVtaW5kZXJzJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICB7eHRfeWVzbm9fb3B0aW9ucyBwcmVmaXg9JGFjdGlvbmlkIG5hbWU9YWxsb3dfZHVwbGljYXRlX3JlbWluZGVycyBzZWxlY3RlZD0kYWxsb3dfZHVwbGljYXRlX3JlbWluZGVyc30KICAgICAgPGJyLz4KICAgICAgeyRtb2QtPkxhbmcoJ2luZm9fYWxsb3dfZHVwbGljYXRlX3JlbWluZGVycycpfQogICAgPC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfbG9naW5fYWZ0ZXJfdmVyaWZ5Jyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICB7eHRfeWVzbm9fb3B0aW9ucyBwcmVmaXg9JGFjdGlvbmlkIG5hbWU9bG9naW5fYWZ0ZXJfdmVyaWZ5IHNlbGVjdGVkPSRsb2dpbl9hZnRlcl92ZXJpZnl9CiAgICAgIDxici8+CiAgICAgIHskbW9kLT5MYW5nKCdpbmZvX2xvZ2luX2FmdGVyX3ZlcmlmeScpfQogICAgPC9wPgogIDwvZGl2Pgo8L2ZpZWxkc2V0PgoKPGZpZWxkc2V0Pgo8bGVnZW5kPnskbW9kLT5MYW5nKCdkaXNwbGF5X3NldHRpbmdzJyl9PC9sZWdlbmQ+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9zaWduaW5fYnV0dG9uJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1zaWduaW5fYnV0dG9uIiB2YWx1ZT0ieyRzaWduaW5fYnV0dG9ufSIgc2l6ZT0iMTUiIG1heGxlbmd0aD0iMTUiLz4KICAgIDwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncmVxdWlyZWRmaWVsZG1hcmtlcicpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9cmVxdWlyZWRfZmllbGRfbWFya2VyIiB2YWx1ZT0ieyRyZXF1aXJlZF9maWVsZF9tYXJrZXJ9IiBzaXplPSIyIiBtYXhsZW5ndGg9IjIiLz4KICAgIDwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncmVxdWlyZWRmaWVsZGNvbG9yJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1yZXF1aXJlZF9maWVsZF9jb2xvciIgdmFsdWU9InskcmVxdWlyZWRfZmllbGRfY29sb3J9IiBzaXplPSIxMCIgbWF4bGVuZ3RoPSIxMCIvPgogICAgPC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdzZWN1cmVmaWVsZG1hcmtlcicpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9c2VjdXJlX2ZpZWxkX21hcmtlciIgdmFsdWU9Inskc2VjdXJlX2ZpZWxkX21hcmtlcn0iIHNpemU9IjIiIG1heGxlbmd0aD0iMiIvPgogICAgPC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdzZWN1cmVmaWVsZGNvbG9yJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1zZWN1cmVfZmllbGRfY29sb3IiIHZhbHVlPSJ7JHNlY3VyZV9maWVsZF9jb2xvcn0iIHNpemU9IjEwIiBtYXhsZW5ndGg9IjEwIi8+CiAgICA8L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2hpZGRlbmZpZWxkbWFya2VyJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1oaWRkZW5fZmllbGRfbWFya2VyIiB2YWx1ZT0ieyRoaWRkZW5fZmllbGRfbWFya2VyfSIgc2l6ZT0iMiIgbWF4bGVuZ3RoPSIyIi8+CiAgICA8L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2hpZGRlbmZpZWxkY29sb3InKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfWhpZGRlbl9maWVsZF9jb2xvciIgdmFsdWU9InskaGlkZGVuX2ZpZWxkX2NvbG9yfSIgc2l6ZT0iMTAiIG1heGxlbmd0aD0iMTAiLz4KICAgIDwvcD4KICA8L2Rpdj4KPC9maWVsZHNldD4KCntpZiBpc3NldCgkZWNvbW1fb3JkZXJjYW5jZWxsZWQpfQo8ZmllbGRzZXQ+CiAgPGxlZ2VuZD57JG1vZC0+TGFuZygnZWNvbW1lcmNlX3NldHRpbmdzJyl9OjwvbGVnZW5kPgogIDxwIGNsYXNzPSJwYWdlb3ZlcmZsb3ciPnskbW9kLT5MYW5nKCdpbmZvX3BhaWRyZWdfc2V0dGluZ3MnKX08L3A+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9lY29tbV9wYWlkcmVnaXN0cmF0aW9uJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICA8c2VsZWN0IG5hbWU9InskYWN0aW9uaWR9ZWNvbW1fcGFpZHJlZ2lzdHJhdGlvbiI+CiAgICAgIHt4dF95ZXNub19vcHRpb25zIHNlbGVjdGVkPSRlY29tbV9wYWlkcmVnaXN0cmF0aW9ufQogICAgICA8L3NlbGVjdD4KICAgICAgPGJyLz4KICAgICAgeyRtb2QtPkxhbmcoJ2luZm9fZWNvbW1fcGFpZHJlZ2lzdHJhdGlvbicpfQogICAgPC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2FjdGlvbl9vcmRlcmNhbmNlbGxlZCcpfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgPHNlbGVjdCBuYW1lPSJ7JGFjdGlvbmlkfWVjb21tX29yZGVyY2FuY2VsbGVkIj4KICAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRlY29tbWVyY2VfYWN0aW9ucyBzZWxlY3RlZD0kZWNvbW1fb3JkZXJjYW5jZWxsZWR9CiAgICAgIDwvc2VsZWN0PgogICAgPC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2FjdGlvbl9vcmRlcmRlbGV0ZWQnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIDxzZWxlY3QgbmFtZT0ieyRhY3Rpb25pZH1lY29tbV9vcmRlcmRlbGV0ZWQiPgogICAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JGVjb21tZXJjZV9hY3Rpb25zIHNlbGVjdGVkPSRlY29tbV9vcmRlcmRlbGV0ZWR9CiAgICAgIDwvc2VsZWN0PgogICAgPC9wPgogIDwvZGl2Pgo8L2ZpZWxkc2V0Pgp7L2lmfQoKPGZpZWxkc2V0Pgo8bGVnZW5kPnskbW9kLT5MYW5nKCdyZWRpcmVjdGlvbl9zZXR0aW5ncycpfTo8L2xlZ2VuZD4KPGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPnskbW9kLT5MYW5nKCdpbmZvX3N0YXInKX08L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfZm9yZ290cHdfcGFnZScpfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1wYWdlaWRmb3Jnb3RwYXNzd2QiIHZhbHVlPSJ7JHBhZ2VpZGZvcmdvdHBhc3N3ZH0iIHNpemU9IjgwIiBtYXhsZW5ndGg9IjI1NSIvPgogIDwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2NoYW5nZXNldHRpbmdzX3BhZ2UnKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9cGFnZWlkX2NoYW5nZXNldHRpbmdzIiB2YWx1ZT0ieyRwYWdlaWRfY2hhbmdlc2V0dGluZ3N9IiBzaXplPSI4MCIgbWF4bGVuZ3RoPSIyNTUiLz4KICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9sb2dpbl9wYWdlJyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfXBhZ2VpZF9sb2dpbiIgdmFsdWU9InskcGFnZWlkX2xvZ2lufSIgc2l6ZT0iODAiIG1heGxlbmd0aD0iMjU1Ii8+CiAgPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfbG9nb3V0X3BhZ2UnKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9cGFnZWlkX2xvZ291dCIgdmFsdWU9InskcGFnZWlkX2xvZ291dH0iIHNpemU9IjgwIiBtYXhsZW5ndGg9IjI1NSIvPgogIDwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X3ZlcmlmeV9wYWdlJyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfXBhZ2VpZF9vbnZlcmlmeSIgdmFsdWU9InskcGFnZWlkX29udmVyaWZ5fSIgc2l6ZT0iODAiIG1heGxlbmd0aD0iMjU1Ii8+CiAgPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfYWZ0ZXJfdmVyaWZ5X2NvZGUnKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9cGFnZWlkX2FmdGVydmVyaWZ5IiB2YWx1ZT0ieyRwYWdlaWRfYWZ0ZXJ2ZXJpZnl9IiBzaXplPSI4MCIgbWF4bGVuZ3RoPSIyNTUiLz4KICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9hZnRlcl9jaGFuZ2Vfc2V0dGluZ3MnKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9cGFnZWlkX2FmdGVyY2hhbmdlc2V0dGluZ3MiIHZhbHVlPSJ7JHBhZ2VpZF9hZnRlcmNoYW5nZXNldHRpbmdzfSIgc2l6ZT0iODAiIG1heGxlbmd0aD0iMjU1Ii8+CiAgPC9wPgo8L2Rpdj4KPC9maWVsZHNldD4KCntpZiBpc3NldCgkcHdzYWx0KX0KPGZpZWxkc2V0PgogIDxsZWdlbmQ+eyRtb2QtPkxhbmcoJ2FkdmFuY2VkX3NldHRpbmdzJyl9PC9sZWdlbmQ+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9wd3NhbHQnKX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfXB3c2FsdCIgdmFsdWU9InskcHdzYWx0fSIgc2l6ZT0iNSIgbWF4bGVuZ3RoPSI1IiB7aWYgJHRvdGFsX3VzZXJfY291bnQgZ3QgMH1yZWFkb25seT0icmVhZG9ubHkiey9pZn0vPgogICAgICA8YnIvPnskbW9kLT5MYW5nKCdpbmZvX3B3c2FsdCcpfQogICAgPC9wPgogIDwvZGl2Pgo8L2ZpZWxkc2V0Pgp7L2lmfQoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1zdWJtaXQiIHZhbHVlPSJ7JG1vZC0+TGFuZygnc3VibWl0Jyl9Ii8+CiAgPC9wPgo8L2Rpdj4KCnskZm9ybWVuZH0=]]></data>
	</file>
	<file>
	  <filename>/templates/admin_bulk_setexpiry.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbW9kLT5MYW5nKCdoZHJfYnVsa19zZXRleHBpcnknKX08L2gzPgo8ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRtb2QtPkxhbmcoJ2luZm9fYnVsa19zZXRleHBpcnknKX08L2Rpdj4KCntmb3JtX3N0YXJ0IGpvYj0kam9iIHVpZHM9JHVpZHN9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnZXhwaXJlcycpfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICB7aHRtbF9zZWxlY3RfZGF0ZSBwcmVmaXg9InskYWN0aW9uaWR8Y2F0OidleHBpcmVzJ30iIHN0YXJ0X3llYXI9Ii0xMCIgZW5kX3llYXI9IjIwMzgiIHRpbWU9IntzdHJ0b3RpbWUoJys1IHllYXJzJyl9In0KICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfXN1Ym1pdCIgdmFsdWU9InskbW9kLT5MYW5nKCdzdWJtaXQnKX0iLz4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9Y2FuY2VsIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2NhbmNlbCcpfSIgZm9ybW5vdmFsaWRhdGUvPgogIDwvcD4KPC9kaXY+Cntmb3JtX2VuZH0=]]></data>
	</file>
	<file>
	  <filename>/templates/admin_bulk_setpasswd.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbW9kLT5MYW5nKCdoZHJfYnVsa19zZXRwYXNzd29yZCcpfTwvaDM+CjxkaXYgY2xhc3M9ImluZm9ybWF0aW9uIj57JG1vZC0+TGFuZygnaW5mb19idWxrX3NldHBhc3N3b3JkJyl9PC9kaXY+Cgp7Zm9ybV9zdGFydCBqb2I9JGpvYiB1aWRzPSR1aWRzfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Bhc3N3b3JkJyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9InskYWN0aW9uaWR9cGFzc3dvcmQiLz48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3JlcGVhdHBhc3N3b3JkJyl9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9InskYWN0aW9uaWR9cmVwZWF0cGFzc3dvcmQiLz48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfXN1Ym1pdCIgdmFsdWU9InskbW9kLT5MYW5nKCdzdWJtaXQnKX0iLz4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9Y2FuY2VsIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2NhbmNlbCcpfSIgZm9ybW5vdmFsaWRhdGUvPgogIDwvcD4KPC9kaXY+Cntmb3JtX2VuZH0=]]></data>
	</file>
	<file>
	  <filename>/templates/admin_deleteprop.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbW9kLT5MYW5nKCdoZHJfZGVsZXRlcHJvcCcpfTo8L2gzPgo8ZGl2IGNsYXNzPSJ3YXJuaW5nIj57JG1vZC0+TGFuZygnd2Fybl9kZWxldGVwcm9wJyl9PC9kaXY+Cgo8ZmllbGRzZXQ+CiAgPGxlZ2VuZD57JGRlZm4ucHJvbXB0fSA8ZW0+KHskZGVmbi5uYW1lfSk8L2VtPjwvbGVnZW5kPgogIDxwPlR5cGU6IHskZmllbGR0eXBlc1skZGVmbi50eXBlXX08L3A+CjwvZmllbGRzZXQ+Cgp7JGZvcm1zdGFydH0KICA8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfY29uZmlybV9kZWxldGVwcm9wJyl9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICAgPHNlbGVjdCBpZD0ibWFtc19jb25maXJtIiBuYW1lPSJ7JGFjdGlvbmlkfW1hbXNfY29uZmlybSI+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIwIj57JG1vZC0+TGFuZygnbm8nKX08L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEiPnskbW9kLT5MYW5nKCd5ZXMnKX08L29wdGlvbj4KICAgICAgIDwvc2VsZWN0PgogICAgPC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBpZD0ibWFtc19zdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9c3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfSIvPgogICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfWNhbmNlbCIgdmFsdWU9InskbW9kLT5MYW5nKCdjYW5jZWwnKX0iLz4KICAgIDwvcD4KICA8L2Rpdj4KCnskZm9ybWVuZH0K]]></data>
	</file>
	<file>
	  <filename>/templates/admin_edituser.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdD4KJChmdW5jdGlvbigpewogICAkKCcjYW5vbmltaXplJykuYnV0dG9uKCkuY2xpY2soIGZ1bmN0aW9uKCBldiApIHsKICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICB2YXIgdXJsID0gJCh0aGlzKS5kYXRhKCdocmVmJyk7CiAgICAgICBjbXNfY29uZmlybSggJ3skbW9kLT5MYW5nKCdjb25maXJtX2Fub25pbWl6ZScpfScgKS5kb25lKCBmdW5jdGlvbigpIHsKICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDsKICAgICAgIH0pCiAgIH0pOwp9KQo8L3NjcmlwdD4KCntpZiAkdXNlci0+aWR9CjxoMz57JG1vZC0+TGFuZygnZWRpdHVzZXInKX08L2gzPgp7ZWxzZX0KPGgzPnskbW9kLT5MYW5nKCdhZGR1c2VyJyl9PC9oMz4Key9pZn0KCnsqIHBhc3N3b3JkIGlzIHJlYWRvbmx5IGZvciBub24gc3RhbmRhcmQgYWNjb3VudHMsIGJ1dCByZXF1aXJlZCBmb3IgbmV3LCBzdGFuZGFyZCBhY2NvdW50cyAqfQp7JHB3cmVhZG9ubHk9Jyd9CntpZiAkdXNlci0+bm9uc3RkfXskcHdyZWFkb25seT0ncmVhZG9ubHknfXsvaWZ9CnskcHdyZXF1aXJlZD0nJ30Ke2lmICEkcHdyZWFkb25seSAmJiAkdXNlci0+aWQgPCAxfXskcHdyZXF1aXJlZD0ncmVxdWlyZWQnfXsvaWZ9Cgp7Zm9ybV9zdGFydCB1c2VyX2lkPSR1c2VyLT5pZH0KPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9c3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ25leHQnKX0iLz4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9Y2FuY2VsIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2NhbmNlbCcpfSIgZm9ybW5vdmFsaWRhdGUvPgogICAge2lmICR1c2VyLT5pZCA+IDB9CiAgICA8YnV0dG9uIGlkPSJhbm9uaW1pemUiIGRhdGEtaHJlZj0ie2Ntc19hY3Rpb25fdXJsIGFjdGlvbj1hZG1pbl9hbm9uaW1pemVfdXNlciB1aWQ9JHVzZXItPmlkfSI+eyRtb2QtPkxhbmcoJ2Fub25pbWl6ZScpfTwvYnV0dG9uPgogICAgey9pZn0KPC9kaXY+Cjxici8+Cgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICA8bGFiZWwgY2xhc3M9ImdyaWRfNCB0ZXh0LXJpZ2h0Ij4qeyRwcm9tcHRfdXNlcm5hbWV9OjwvbGFiZWw+CiAgIDxwIGNsYXNzPSJncmlkXzgiPgogICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfXVzZXJuYW1lIiB2YWx1ZT0ieyR1c2VyLT5uZXdfdXNlcm5hbWV9IiBzaXplPSJ7JHVuZmxkbGVufSIgbWF4bGVuZ3RoPSJ7JG1heF91bmZsZGxlbn0iIGF1dG9jb21wbGV0ZT0ib2ZmIiByZXF1aXJlZC8+CiAgIDwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgIDxsYWJlbCBjbGFzcz0iZ3JpZF80IHRleHQtcmlnaHQiPntpZiAkcHdyZXF1aXJlZH0qey9pZn17JG1vZC0+TGFuZygncGFzc3dvcmQnKX06PC9sYWJlbD4KICAgPHAgY2xhc3M9ImdyaWRfOCI+CiAgICAgPGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJ7JGFjdGlvbmlkfXBhc3N3b3JkIiB2YWx1ZT0ieyR1c2VyLT5uZXdfcGFzc3dvcmR9IiBzaXplPSJ7JHB3ZmxkbGVufSIgbWF4bGVuZ3RoPSJ7JG1heF9wd2ZsZGxlbn0iIHskcHdyZWFkb25seX17JHB3cmVxdWlyZWR9IGF1dG9jb21wbGV0ZT0ibmV3LXBhc3N3b3JkIi8+CiAgICAge2lmICR1c2VyLT5pZCA+IDB9eyRtb2QtPkxhbmcoJ2luZm9fYWRtaW5fcGFzc3dvcmQnKX17L2lmfQogICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICA8bGFiZWwgY2xhc3M9ImdyaWRfNCB0ZXh0LXJpZ2h0Ij57aWYgJHB3cmVxdWlyZWR9KnsvaWZ9eyRtb2QtPkxhbmcoJ3JlcGVhdHBhc3N3b3JkJyl9OjwvbGFiZWw+CiAgIDxwIGNsYXNzPSJncmlkXzgiPgogICAgIDxpbnB1dCB0eXBlPSJwYXNzd29yZCIgbmFtZT0ieyRhY3Rpb25pZH1yZXBlYXRwYXNzd29yZCIgdmFsdWU9InskdXNlci0+cmVwZWF0X3Bhc3N3b3JkfSIgc2l6ZT0ieyRwd2ZsZGxlbn0iIG1heGxlbmd0aD0ieyRtYXhfcHdmbGRsZW59IiB7JHB3cmVhZG9ubHl9eyRwd3JlcXVpcmVkfS8+CiAgICAge2lmICR1c2VyLT5pZCA+IDB9eyRtb2QtPkxhbmcoJ2luZm9fYWRtaW5fcmVwZWF0cGFzc3dvcmQnKX17L2lmfQogICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICA8bGFiZWwgY2xhc3M9ImdyaWRfNCB0ZXh0LXJpZ2h0Ij48c3BhbiBzdHlsZT0iY29sb3I6IHJlZDsiPiEhPC9zcGFuPiZuYnNwOyB7JG1vZC0+TGFuZygncHJvbXB0X2Rpc2FibGVkJyl9OjwvbGFiZWw+CiAgIDxwIGNsYXNzPSJncmlkXzgiPgogICAgIHt4dF95ZXNub19vcHRpb25zIHByZWZpeD0kYWN0aW9uaWQgbmFtZT1kaXNhYmxlZCBzZWxlY3RlZD0oaW50KSR1c2VyLT5pc19kaXNhYmxlZH0KICAgPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgPGxhYmVsIGNsYXNzPSJncmlkXzQgdGV4dC1yaWdodCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9mb3JjZV9jaHNldHRpbmdzJyl9OjwvbGFiZWw+CiAgIDxwIGNsYXNzPSJncmlkXzgiPgogICAgIHt4dF95ZXNub19vcHRpb25zIHByZWZpeD0kYWN0aW9uaWQgbmFtZT1mb3JjZV9jaHNldHRpbmdzIHNlbGVjdGVkPShpbnQpJHVzZXItPmZvcmNlX2NoYW5nZV9zZXR0aW5nc30KICAgPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgPGxhYmVsIGNsYXNzPSJncmlkXzQgdGV4dC1yaWdodCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9mb3JjZV9uZXdwdycpfTo8L2xhYmVsPgogICA8cCBjbGFzcz0iZ3JpZF84Ij4KICAgICB7eHRfeWVzbm9fb3B0aW9ucyBwcmVmaXg9JGFjdGlvbmlkIG5hbWU9Zm9yY2VfbmV3cHcgc2VsZWN0ZWQ9KGludCkkdXNlci0+Zm9yY2VfcGFzc3dvcmRfY2hhbmdlfQogICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICA8bGFiZWwgY2xhc3M9ImdyaWRfNCB0ZXh0LXJpZ2h0Ij48c3BhbiBzdHlsZT0iY29sb3I6IG9yYW5nZTsiPioqPC9zcGFuPiZuYnNwOyB7JG1vZC0+TGFuZygncHJvbXB0X2ZvcmNlX3JldmFsaWRhdGUnKX06PC9sYWJlbD4KICAgPHAgY2xhc3M9ImdyaWRfOCI+CiAgICAge3h0X3llc25vX29wdGlvbnMgcHJlZml4PSRhY3Rpb25pZCBuYW1lPW11c3RfdmFsaWRhdGUgc2VsZWN0ZWQ9KGludCkkdXNlci0+bXVzdF92YWxpZGF0ZX0KICAgICB7JGNvZGU9JG1vZC0+R2V0VXNlclRlbXBDb2RlKCR1c2VyLT5pZCl9CiAgICAge2lmICRjb2RlfTxzcGFuIHN0eWxlPSJjb2xvcjogb3JhbmdlOyI+eyRtb2QtPkxhbmcoJ2luZm9fdmVyaWZ5ZW1haWxfc2VudCcpfXsvaWZ9CiAgIDwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgIDxsYWJlbCBjbGFzcz0iZ3JpZF80IHRleHQtcmlnaHQiPnskbW9kLT5MYW5nKCdleHBpcmVzJyl9OjwvbGFiZWw+CiAgIDxwIGNsYXNzPSJncmlkXzgiPgogICAgIHskeT1kYXRlKCdZJywkdXNlci0+ZXhwaXJlcyl9CiAgICAge2h0bWxfc2VsZWN0X2RhdGUgcHJlZml4PSJ7JGFjdGlvbmlkfWV4cGlyZXMiIHRpbWU9InskdXNlci0+ZXhwaXJlc30iIHN0YXJ0X3llYXI9MjAwMCBlbmRfeWVhcj0yMTAwfQogICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJ3YXJuaW5nIj57JG1vZC0+TGFuZygnd2Fybl9zdHJvbmdwYXNzd29yZCcpfTwvZGl2PgoKe2lmICRncm91cHN9Cjx0YWJsZSBjbGFzcz0icGFnZXRhYmxlIj4KICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgIDx0aD57JG1vZC0+TGFuZygnaWQnKX08L3RoPgogICAgICA8dGg+eyRtb2QtPkxhbmcoJ25hbWUnKX08L3RoPgogICAgICA8dGg+eyRtb2QtPkxhbmcoJ2Rlc2NyaXB0aW9uJyl9PC90aD4KICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+PC90aD4KICAgIDwvdHI+CiAgPC90aGVhZD4KICA8dGJvZHk+CiAge2ZvcmVhY2ggJGdyb3VwcyBhcyAkZ3JvdXB9CiAgICB7JGNoZWNrZWQ9MH0KICAgIHtpZiAkdXNlci0+aWQgPiAwICYmICR1c2VyLT5tZW1iZXJvZigkZ3JvdXAuaWQpfQogICAgICB7JGNoZWNrZWQ9MX0KICAgIHtlbHNlaWYgJHVzZXItPmlkIDwgMSAmJiAkZGVmYXVsdF9ncm91cCA9PSAkZ3JvdXAuaWR9CiAgICAgIHskY2hlY2tlZD0xfQogICAgey9pZn0KICAgIDx0ciBjbGFzcz0ie2N5Y2xlIHZhbHVlcz0ncm93MSxyb3cyJ30iPgogICAgICAgPHRkPnskZ3JvdXAuaWR9PC90ZD4KICAgICAgIDx0ZD57JGdyb3VwLmdyb3VwbmFtZX08L3RkPgogICAgICAgPHRkPnskZ3JvdXAuZ3JvdXBkZXNjfTwvdGQ+CiAgICAgICA8dGQ+CiAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InskYWN0aW9uaWR9bWVtYmVyb2ZbXSIgdmFsdWU9InskZ3JvdXAuaWR9IiB7aWYgJGNoZWNrZWR9Y2hlY2tlZHsvaWZ9Lz4KICAgICAgIDwvdGQ+CiAgICA8L3RyPgogIHsvZm9yZWFjaH0KICA8L3Rib2R5Pgo8L3RhYmxlPgp7L2lmfQp7Zm9ybV9lbmR9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/admin_edituser2.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICR1c2VyLT5pZCA+IDAgfQo8aDM+eyRtb2QtPkxhbmcoJ2VkaXR1c2VyJyl9IHskdXNlci0+dXNlcm5hbWV9IC8geyR1c2VyLT5pZH08L2gzPgp7ZWxzZX0KPGgzPnskbW9kLT5MYW5nKCdhZGR1c2VyJyl9PC9oMz4Key9pZn0KCntmb3JtX3N0YXJ0fQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1iYWNrIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2JhY2snKX0iIGZvcm1ub3ZhbGlkYXRlLz4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9c3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfSIvPgogICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1jYW5jZWwiIHZhbHVlPSJ7JG1vZC0+TGFuZygnY2FuY2VsJyl9IiBmb3Jtbm92YWxpZGF0ZS8+CiAgPC9wPgo8L2Rpdj4KCntmb3JlYWNoICRmaWVsZHMgYXMgJGZpZWxkfQogIHskZmxkaWQ9ImZsZF97JGZpZWxkLT5uYW1lfSJ9CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93IiBpZD0iY29udF97JGZpZWxkLT5uYW1lfSI+CiAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij48bGFiZWwge2lmICRmaWVsZC0+Y29sb3J9c3R5bGU9ImNvbG9yOiB7JGZpZWxkLT5jb2xvcn0iey9pZn0+eyRmaWVsZC0+bWFya2VyfXskZmllbGQtPnByb21wdH06PC9sYWJlbD48L3A+CiAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICAge2lmICRmaWVsZC0+dHlwZSA9PSAwfQogICAgICAgIHsqIHRleHQgZmllbGQgKn0KCTxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ieyRmbGRpZH0iIG5hbWU9InskYWN0aW9uaWR9cHJvcF97JGZpZWxkLT5uYW1lfSIgdmFsdWU9InskZmllbGQtPnZhbHVlfSIgc2l6ZT0ieyRmaWVsZC0+c2l6ZX0iIG1heGxlbj0ieyRmaWVsZC0+bWF4bGVufSIge2lmICRmaWVsZC0+cmVxdWlyZWR9cmVxdWlyZWR7L2lmfS8+CiAgICAge2Vsc2VpZiAkZmllbGQtPnR5cGUgPT0gMX0KICAgICAgICB7KiBjaGVja2JveCAqfQoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieyRhY3Rpb25pZH1wcm9wX3skZmllbGQtPm5hbWV9IiB2YWx1ZT0iMCIvPgoJPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0ieyRmbGRpZH0iIG5hbWU9InskYWN0aW9uaWR9cHJvcF97JGZpZWxkLT5uYW1lfSIgdmFsdWU9IjEiIHtpZiAkZmllbGQtPnZhbHVlfWNoZWNrZWR7L2lmfS8+CiAgICAge2Vsc2VpZiAkZmllbGQtPnR5cGUgPT0gMn0KICAgICAgICB7KiBlbWFpbCAqfQoJPGlucHV0IHR5cGU9ImVtYWlsIiBpZD0ieyRmbGRpZH0iIG5hbWU9InskYWN0aW9uaWR9cHJvcF97JGZpZWxkLT5uYW1lfSIgdmFsdWU9InskZmllbGQtPnZhbHVlfSIgc2l6ZT0ieyRmaWVsZC0+c2l6ZX0iIG1heGxlbj0ieyRmaWVsZC0+bWF4bGVufSIge2lmICRmaWVsZC0+cmVxdWlyZWR9cmVxdWlyZWR7L2lmfS8+CiAgICAge2Vsc2VpZiAkZmllbGQtPnR5cGUgPT0gM30KICAgICAgICB7KiB0ZXh0YXJlYSAqfQogICAgICAgIHt4dF90ZXh0YXJlYSBpZD0kZmxkaWQgbmFtZT0ieyRhY3Rpb25pZH1wcm9wX3skZmllbGQtPm5hbWV9IiB2YWx1ZT0kZmllbGQtPnZhbHVlIHd5c2l3eWc9JGZpZWxkLT53eXNpd3lnfQogICAgIHtlbHNlaWYgJGZpZWxkLT50eXBlID09IDR9CiAgICAgICAgeyogZHJvcGRvd24gKn0KCTxzZWxlY3QgaWQ9InskZmxkaWR9IiBuYW1lPSJ7JGFjdGlvbmlkfXByb3BfeyRmaWVsZC0+bmFtZX0iIHtpZiAkZmllbGQtPnJlcXVpcmVkfXJlcXVpcmVkey9pZn0+CgkgIHtodG1sX29wdGlvbnMgb3B0aW9ucz0kZmllbGQtPm9wdGlvbnMgc2VsZWN0ZWQ9JGZpZWxkLT52YWx1ZX0KCTwvc2VsZWN0PgogICAgIHtlbHNlaWYgJGZpZWxkLT50eXBlID09IDV9CiAgICAgICAgeyogbXVsdGlzZWxlY3QgKn0KCXskdG1wPWNvdW50KCRmaWVsZC0+b3B0aW9ucyl9e2lmICR0bXAgPiA4fXskdG1wPTh9ey9pZn0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InskYWN0aW9uaWR9cHJvcF97JGZpZWxkLT5uYW1lfSIgdmFsdWU9IiIvPgoJPHNlbGVjdCBpZD0ieyRmbGRpZH0iIG5hbWU9InskYWN0aW9uaWR9cHJvcF97JGZpZWxkLT5uYW1lfVtdIiBzaXplPSJ7JHRtcH0iIG11bHRpcGxlPgoJICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JGZpZWxkLT5vcHRpb25zIHNlbGVjdGVkPSRmaWVsZC0+dmFsdWV9PGJyLz4KCTwvc2VsZWN0PgogICAgIHtlbHNlaWYgJGZpZWxkLT50eXBlID09IDZ9CiAgICAgICAgeyogaW1hZ2UgKn0KCXskdG1wPSRmaWVsZC0+aW1hZ2VfdXJsfQoJe2lmICR0bXB9CgkgICA8aW1nIHNyYz0ieyR0bXB9IiB3aWR0aD0iMTAwIiBhbHQ9InskZmllbGQtPnZhbHVlfSIvPgogICAgICAgICAgIDxsYWJlbD4KCSAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfXByb3BkZWxfeyRmaWVsZC0+bmFtZX0iIHZhbHVlPSIxIi8+CgkgICAgIHskbW9kLT5MYW5nKCdwcm9tcHRfY2xlYXInKX0KCSAgIDwvbGFiZWw+CgkgICA8YnIvPgoJey9pZn0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InskYWN0aW9uaWR9cHJvcF97JGZpZWxkLT5uYW1lfSIgdmFsdWU9IioqRklMRSoqIi8+Cgk8aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0ieyRhY3Rpb25pZH1wcm9wX3skZmllbGQtPm5hbWV9Ii8+CiAgICAge2Vsc2VpZiAkZmllbGQtPnR5cGUgPT0gN30KICAgICAgICB7KiByYWRpb2J1dHRvbnMgKn0KCXtmb3JlYWNoICRmaWVsZC0+b3B0aW9ucyBhcyAka2V5ID0+ICR2YWx9Cgk8bGFiZWw+PGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJ7JGFjdGlvbmlkfXByb3BfeyRmaWVsZC0+bmFtZX0iIHZhbHVlPSJ7JGtleX0iIHtpZiAka2V5ID09ICRmaWVsZC0+dmFsdWV9Y2hlY2tlZHsvaWZ9Lz4geyR2YWx9PC9sYWJlbD4KCXsvZm9yZWFjaH0KICAgICB7ZWxzZWlmICRmaWVsZC0+dHlwZSA9PSA4fQogICAgICAgIHsqIGRhdGUgKn0KCXskdG1wPSJ7JGFjdGlvbmlkfXByb3BfeyRmaWVsZC0+bmFtZX0ifQoJeyRzeT0kZmllbGQtPnN0YXJ0eWVhcnxkZWZhdWx0OjE5MDB9Cgl7JGV5PSRmaWVsZC0+ZW5keWVhcnxkZWZhdWx0OjIwNTB9Cgl7aHRtbF9zZWxlY3RfZGF0ZSBwcmVmaXg9JHRtcCB0aW1lPSRmaWVsZC0+dmFsdWUgc3RhcnRfeWVhcj0kc3kgZW5kX3llYXI9JGV5fQogICAgIHsvaWZ9CiAgICAgPC9wPnsqIC5wYWdlaW5wdXQgKn0KICA8L2Rpdj4Key9mb3JlYWNofQoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9YmFjayIgdmFsdWU9InskbW9kLT5MYW5nKCdiYWNrJyl9IiBmb3Jtbm92YWxpZGF0ZS8+CiAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfXN1Ym1pdCIgdmFsdWU9InskbW9kLT5MYW5nKCdzdWJtaXQnKX0iLz4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9Y2FuY2VsIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2NhbmNlbCcpfSIgZm9ybW5vdmFsaWRhdGUvPgogIDwvcD4KPC9kaXY+Cntmb3JtX2VuZH0=]]></data>
	</file>
	<file>
	  <filename>/templates/admin_import_users.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbW9kLT5MYW5nKCdwcm9tcHRfaW1wb3J0dXNlcnMnKX08L2gzPgoKPGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPnskbW9kLT5MYW5nKCdpbmZvX2ltcG9ydF9mb3JtYXQnKX08L2Rpdj4KCnt4dF9oZWxwaGFuZGxlcn0KeyRmb3Jtc3RhcnR9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvbXB0X2RlbGV0ZV91c2VycycpfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8c2VsZWN0IG5hbWU9InskYWN0aW9uaWR9ZGVsZXRlX3VzZXJzIj4KICAgICAge3h0X3llc25vX29wdGlvbnMgc2VsZWN0ZWQ9JG9wdGlvbnMuZGVsZXRlX3VzZXJzfQogICAgPC9zZWxlY3Q+CiAgICA8YnIvPnskbW9kLT5MYW5nKCdpbmZvX2ltcG9ydF9kZWxldGVfdXNlcnMnKX0KICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9kZWxpbWl0ZXInKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9ZGVsaW1pdGVyIiB2YWx1ZT0ieyRvcHRpb25zLmRlbGltaXRlcn0iIHNpemU9IjMiIG1heGxlbmd0aD0iMSIvPgogIDwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9pbXBvcnRmaWxlbmFtZScpfTombmJzcDt7eHRfaGVscHRhZyBrZXk9J2ltcG9ydF9mb3JtYXQnfTwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIDxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJ7JGFjdGlvbmlkfWZpbGUiLz4KICA8L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9c3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfSIvPgogICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1jYW5jZWwiIHZhbHVlPSJ7JG1vZC0+TGFuZygnY2FuY2VsJyl9Ii8+CiAgPC9wPgo8L2Rpdj4KeyRmb3JtZW5kfQoKPGRpdiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgp7eHRfaGVscGNvbnRlbnQga2V5PSdpbXBvcnRfZm9ybWF0JyB0ZXh0PSRtb2QtPkxhbmcoJ2luZm9faW1wb3J0dXNlcnNmaWxlZm9ybWF0MicpfQo8L2Rpdj4=]]></data>
	</file>
	<file>
	  <filename>/templates/admin_import_users2.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbW9kLT5MYW5nKCdwcm9tcHRfaW1wb3J0dXNlcnMnKX08L2gzPgoKe2Ntc19qcXVlcnl9Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CnZhciBwcm9ncmVzc19tYXggPSAxMDA7CmZ1bmN0aW9uIGltcG9ydF9wcm9ncmVzc19tYXgodmFsKSB7CiAgcHJvZ3Jlc3NfbWF4ID0gcGFyc2VJbnQodmFsKTsKICBpZiggcHJvZ3Jlc3NfbWF4IDwgMSApIHByb2dyZXNzX21heCA9IDE7CiAgcHJvZ3Jlc3NfdmFsID0gMDsKICAkKCcjcHJvZ3Jlc3MnKS53aWR0aCgwKTsKfQpmdW5jdGlvbiBpbXBvcnRfcHJvZ3Jlc3Nfc2V0KG4pIHsKICBuID0gcGFyc2VJbnQobik7CiAgaWYoIG4gPCAxICkgbiA9IDE7CiAgdmFyIHYgPSBNYXRoLnJvdW5kKG4gLyBwcm9ncmVzc19tYXggKiAxMDAuMCk7CiAgJCgnI3Byb2dyZXNzJykud2lkdGgodisnJScpLmh0bWwodisnJScpOwp9CmZ1bmN0aW9uIGltcG9ydF9zdGF0dXMobXNnKSB7CiAgJCgnI3N0YXR1c19hcmVhJykuYXBwZW5kKCc8cD4nK21zZysnPC9wPicpOwp9CmZ1bmN0aW9uIGltcG9ydF93YXJuaW5nKG1zZykgewogICQoJyNzdGF0dXNfYXJlYScpLmFwcGVuZCgnPHAgY2xhc3M9ImltcG9ydF93YXJuaW5nIj4nK21zZysnPC9wPicpOwp9CmZ1bmN0aW9uIGltcG9ydF9lcnJvcihtc2cpIHsKICAkKCcjc3RhdHVzX2FyZWEnKS5hcHBlbmQoJzxwIGNsYXNzPSJpbXBvcnRfZXJyb3IiPicrbXNnKyc8L3A+Jyk7Cn0KZnVuY3Rpb24gaW1wb3J0X2ZpbmlzaCgpIHsKICBhbGVydCgnYWxsIGRvbmUnKTsKICAkKCcjZmluaXNoX2FyZWEnKS5zaG93KCdzbG93Jyk7Cn0KPC9zY3JpcHQ+Cgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgojbWV0ZXIgewogIG1hcmdpbi1sZWZ0OiBhdXRvOwogIG1hcmdpbi1yaWdodDogYXV0bzsKICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGNvbG9yOiBncmF5OwogIGhlaWdodDogMmVtOwogIG1hcmdpbi1ib3R0b206IDJlbTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KI3Byb2dyZXNzIHsKICBkaXNwbGF5OiBibG9jazsKICBvdmVyZmxvdzogaGlkZGVuOwogIGhlaWdodDogMTAwJTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAgY3lhbjsKICB2ZXJ0aWNhbC1hbGlnbjogY2VudGVyOwogIGxpbmUtaGVpZ2h0OiAyZW07Cn0KI3N0YXR1c19hcmVhID4gcCB7CiAgZm9udC1zaXplOiAxMXB4OwogIGxpbmUtaGVpZ2h0OiAxLjFlbTsKfQojc3RhdHVzX2FyZWEgPiBwLmltcG9ydF93YXJuaW5nIHsKICBiYWNrZ3JvdW5kOiAjZmFmNmQ0OwogIGJvcmRlcjogMXB4IHNvbGlkICNlNmMyNmU7Cn0KI3N0YXR1c19hcmVhID4gcC5pbXBvcnRfZXJyb3IgewogIGJhY2tncm91bmQ6ICNmMmQ0Y2U7CiAgYm9yZGVyOiAxcHggc29saWQgI2FlNDMyZTsKfQojZmluaXNoX2FyZWEgewogIG1hcmdpbi10b3A6IDFlbTsKICBtYXJnaW4tYm90dG9tOiAxZW07Cn0KPC9zdHlsZT4KCjxkaXYgaWQ9Im1ldGVyIj4KICA8c3BhbiBpZD0icHJvZ3Jlc3MiPjwvc3Bhbj4KPC9kaXY+Cgo8ZGl2IGlkPSJzdGF0dXNfYXJlYSI+PC9kaXY+Cgo8ZGl2IGlkPSJmaW5pc2hfYXJlYSIgY2xhc3M9InBhZ2VvdmVyZmxvdyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KICA8ZGl2IGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGEgaHJlZj0ieyRyZXR1cm5fdXJsfSI+eyRtb2QtPkxhbmcoJ3Byb21wdF9yZXR1cm4nKX08L2E+CiAgPC9kaXY+CjwvZGl2Pgo8aWZyYW1lIGlkPSJpbXBvcnRfaWZyYW1lIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiIHNyYz0ieyRpZnJhbWVfc3JjfSI+PC9pZnJhbWU+]]></data>
	</file>
	<file>
	  <filename>/templates/changelog.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHN0eWxlPg0KICBzZWN0aW9uI2NoYW5nZWxvZyBzcGFuDQogIHsNCiAgICBNb25vJywgJ0x1Y2lkYSBDb25zb2xlJywgJ0x1Y2lkYSBTYW5zIFR5cGV3cml0ZXInLCAnQ291cmllciBOZXcnLCBtb25vc3BhY2U7DQogICAgdGV4dC1hbGlnbjogbGVmdDsNCiAgICBjb2xvcjogIzIzMjMyMzsNCiAgICBoZWlnaHQ6IGF1dG87DQogICAgYm9yZGVyLXJhZGl1czogMC4zMTVlbTsNCiAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOw0KICAgIHBhZGRpbmc6IDAuM2VtOw0KICAgIGZvbnQtc2l6ZTogMC45ZW07DQogIH0NCjwvc3R5bGU+DQo8c2VjdGlvbiBpZD0iY2hhbmdlbG9nIj4NCiAgPGgzPjxzcGFuPlZlcnNpb24gMS4xLjA8L3NwYW4+IDxzbWFsbD4yMDI0LTAyLTEyPC9zbWFsbD48L2gzPg0KDQogIDx1bD4NCiAgICA8bGk+PHNwYW4+Zml4ZWQ8L3NwYW4+IGJhY2tlbmQgdGFicyBhY3RpdmUgc3RhdGU7PC9saT4NCiAgICA8bGk+PHNwYW4+Zml4ZWQ8L3NwYW4+IGJhY2tlbmQgbGF5b3V0OzwvbGk+DQogICAgPGxpPjxzcGFuPmNoYW5nZWQ8L3NwYW4+IGZpbmFsbHkgR3JvdXBzIGFuZCBQcm9wZXJ0aWVzIGFyZSBub3QgcmVxdWlyZWQgdG8gYmUgc2V0IGZvciB1c2VycyB0byBiZSBjcmVhdGVkOzwvbGk+DQogICAgPGxpPjxzcGFuPmNoYW5nZWQ8L3NwYW4+IGEgbmV3IEFQSSBoYXMgYmVlbiBzdGFydGVkIHRvIGJlIGltcGxlbWVudGVkIHRvIGJlIG1vcmUgY29uc2lzdGVudCBhbmQgZWZmaWNpZW50OzwvbGk+DQogICAgPGxpPjxzcGFuPmRlcHJlY2F0ZWQ8L3NwYW4+IHRoZSBvbGQgQVBJIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmU7PC9saT4NCiAgICA8bGk+PHNwYW4+Zml4ZWQ8L3NwYW4+IGNvbXBhdGliaWxpdHkgd2l0aCBQSFAgOCsgKHRoZXJlIG1heSBzdGlsbCBiZSBhIGZldyBub3RpY2VzIG9yIHdhcm5pbmdzKTs8L2xpPg0KICA8L3VsPg0KDQogIDxoMz48c3Bhbj5WZXJzaW9uIDEuMDwvc3Bhbj4gPHNtYWxsPjIwMjEtMDItMjM8L3NtYWxsPjwvaDM+DQoNCiAgPHA+SW5pdGlhbCBwdWJsaWMgcmVsZWFzZTwvcD4NCjwvc2VjdGlvbj4NCg==]]></data>
	</file>
	<file>
	  <filename>/templates/edituserprops.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyR0aXRsZX0Ke2lmIGlzc2V0KCRtZXNzYWdlKSB9CiAge2lmIGlzc2V0KCRlcnJvcikgfQogICAgPHA+PGZvbnQgY29sb3I9InJlZCI+eyRtZXNzYWdlfTwvZm9udD48L3A+CiAge2Vsc2V9CiAgICA8cD57JG1lc3NhZ2V9PC9wPgogIHsvaWZ9CnsvaWZ9Cnskc3RhcnRmb3JtfQogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3Byb3BuYW1lfTwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfcHJvcG5hbWV9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3Byb3B2YWx1ZX08L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3Byb3B2YWx1ZX08L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaGlkZGVucGFyYW1zfXskc3VibWl0fTwvcD4KICA8L2Rpdj4KeyRlbmRmb3JtfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/error.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGVfZXJyb3J9PC9oMz4Ke2lmIGlzc2V0KCRtZXNzYWdlKX08cD57JG1lc3NhZ2V9PC9wPnsvaWZ9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/forgotpw_templateform.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19CjxwPnskcHJvbXB0X3RlbXBsYXRlMX08L3A+CnskaW5wdXRfdGVtcGxhdGUxfQo8YnIvPgo8cD57JHByb21wdF90ZW1wbGF0ZTJ9PC9wPgp7JGlucHV0X3RlbXBsYXRlMn0KPGJyLz4Ke2lmIGlzc2V0KCRwcm9tcHRfdGVtcGxhdGUzKX0KPHA+eyRwcm9tcHRfdGVtcGxhdGUzfTwvcD4KeyRpbnB1dF90ZW1wbGF0ZTN9Cjxici8+CnsvaWZ9Cnskc3VibWl0fXskZGVmYXVsdHN9CnskZW5kZm9ybX0K]]></data>
	</file>
	<file>
	  <filename>/templates/grouplist.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Cnsqe2lmICRucHJvcHMgPT0gMCAmJiAwfSAqfXsqIFdJTEwgSEFWRSBUTyBVU0UgQSBQUkVGRVJFTkNFIEZPUiBUSElTICp9CnsqICA8ZGl2IGNsYXNzPSJyZWQgY2VudGVyIj57JG1vZC0+TGFuZygnZXJyb3Jfbm9wcm9wZXJ0aWVzJyl9PC9kaXY+Kn0Keyp7ZWxzZX0qfQoKeyogIHtpZiAhaXNzZXQoJGl0ZW1jb3VudCkgfHwgJGl0ZW1jb3VudCA9PSAwfSp9CnsqICAgIDxkaXYgY2xhc3M9ImluZm9ybWF0aW9uIj4wJm5ic3A7eyRncm91cHNmb3VuZH08L2Rpdj4qfQp7KiAgey9pZn0qfQogIDxkaXYgY2xhc3M9ImNfZnVsbCI+CiAgICA8ZGl2IGNsYXNzPSJncmlkXzgiIHN0eWxlPSJtYXJnaW4tbGVmdDogMDsiPgogICAgICB7KmlmICRwcm9wY291bnQgPiAwfXskYWRkZ3JvdXBsaW5rfGRlZmF1bHQ6Jyd9Jm5ic3A7ey9pZip9CgkJCXskYWRkZ3JvdXBsaW5rfGRlZmF1bHQ6Jyd9CiAgICAgIHtpZiBpc3NldCgkaXRlbWNvdW50KSAmJiAkaXRlbWNvdW50ID4gMCAmJiBpc3NldCgkZXhwb3J0bGluayl9eyRleHBvcnRsaW5rfSZuYnNwO3svaWZ9CiAgICAgIHskaW1wb3J0bGlua3xkZWZhdWx0OicnfQogICAgPC9kaXY+CiAgICB7aWYgaXNzZXQoJGl0ZW1jb3VudCkgJiYgJGl0ZW1jb3VudCA+IDB9CiAgICAgIDxkaXYgY2xhc3M9ImdyaWRfNCB0ZXh0LXJpZ2h0Ij4KCSAgICAgIHskaXRlbWNvdW50fSZuYnNwO3skZ3JvdXBzZm91bmR9PC9kaXY+CiAgICB7L2lmfQogICAgPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KICA8L2Rpdj4KCiAge2lmIGlzc2V0KCRpdGVtcyl9CiAgICA8dGFibGUgY2xhc3M9InBhZ2V0YWJsZSI+Cgk8dGhlYWQ+CgkJPHRyPgoJCQk8dGggd2lkdGg9IjUlIj57JGlkdGV4dH08L3RoPgoJCQk8dGg+eyRuYW1ldGV4dH08L3RoPgoJCQk8dGg+eyRkZXNjdGV4dH08L3RoPgoJCQk8dGg+eyRtb2QtPkxhbmcoJ21lbWJlcnMnKX08L3RoPgoJCQk8dGggY2xhc3M9InBhZ2VpY29uIHtsaXRlcmFsfXtzb3J0ZXI6IGZhbHNlfXsvbGl0ZXJhbH0iPiZuYnNwOzwvdGg+CgkJCTx0aCBjbGFzcz0icGFnZWljb24ge2xpdGVyYWx9e3NvcnRlcjogZmFsc2V9ey9saXRlcmFsfSI+Jm5ic3A7PC90aD4KCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiB7bGl0ZXJhbH17c29ydGVyOiBmYWxzZX17L2xpdGVyYWx9Ij4mbmJzcDs8L3RoPgoJCTwvdHI+Cgk8L3RoZWFkPgoJPHRib2R5PgoJCXtmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CiAgICAgIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9Ij4KCQkJPHRkPnskZW50cnktPmlkfTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5uYW1lfTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5kZXNjfTwvdGQ+CiAgICAgIDx0ZD57JGVudHJ5LT5udXNlcnN8ZGVmYXVsdDokbW9kLT5MYW5nKCdub3RfYXZhaWxhYmxlJyl9PC90ZD4KCQkJPHRkPnskZW50cnktPmV4cG9ydGxpbmt8ZGVmYXVsdDonJ308L3RkPgoJCQk8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt8ZGVmYXVsdDonJ308L3RkPgoJCQk8dGQ+eyRlbnRyeS0+ZGVsZXRlbGlua3xkZWZhdWx0OicnfTwvdGQ+CgkJPC90cj4KCQl7Zm9yZWFjaGVsc2V9CgkJPHRyPgoJCQk8dGQgY29sc3Bhbj0iNyI+CgkJCQk8ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+MCZuYnNwO3skZ3JvdXBzZm91bmR9PC9kaXY+CgkJCTwvdGQ+CgkJPC90cj4KICAgIHsvZm9yZWFjaH0KCTwvdGJvZHk+CiAgPC90YWJsZT4KICB7L2lmfQp7KnsvaWZ9Kn0K]]></data>
	</file>
	<file>
	  <filename>/templates/group_xml.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgbWFtc19ncm91cCBbCiAgPCFFTEVNRU5UIG1hbXNfZ3JvdXAgKGdycF9uYW1lLGdycF9kZXNjcmlwdGlvbixwcm9wZXJ0eSopPgogIDwhRUxFTUVOVCBncnBfbmFtZSAoI1BDREFUQSk+CiAgPCFFTEVNRU5UIGdycF9kZXNjcmlwdGlvbiAoI1BDREFUQSk+CiAgPCFFTEVNRU5UIHByb3BlcnR5IChwcm9wX25hbWUscHJvcF9wcm9tcHQscHJvcF90eXBlLHByb3Bfb3B0aW9uPyxwcm9wX2xlbmd0aD8scHJvcF9tYXhsZW5ndGg/LHByb3Bfc29ydG9yZGVyLHByb3Bfc3RhdHVzLHByb3BfbG9zdHVuZmxhZyk+CiAgPCFFTEVNRU5UIHByb3BfbmFtZSAoI1BDREFUQSk+CiAgPCFFTEVNRU5UIHByb3BfcHJvbXB0ICgjUENEQVRBKT4KICA8IUVMRU1FTlQgcHJvcF90eXBlICgjUENEQVRBKT4KICA8IUVMRU1FTlQgcHJvcF9vcHRpb24gKG9wX25hbWUsb3BfdGV4dCk+CiAgPCFFTEVNRU5UIHByb3BfbGVuZ3RoICgjUENEQVRBKT4KICA8IUVMRU1FTlQgcHJvcF9tYXhsZW5ndGggKCNQQ0RBVEEpPgogIDwhRUxFTUVOVCBwcm9wX3NvcnRvcmRlciAoI1BDREFUQSk+CiAgPCFFTEVNRU5UIHByb3Bfc3RhdHVzICgjUENEQVRBKT4KICA8IUVMRU1FTlQgcHJvcF9sb3N0dW5mbGFnICgjUENEQVRBKT4KICA8IUVMRU1FTlQgb3BfbmFtZSAoI1BDREFUQSk+CiAgPCFFTEVNRU5UIG9wX3RleHQgKCNQQ0RBVEEpPgpdPgo8bWFtc19ncm91cD4KICA8Z3JwX25hbWU+eyRncm91cF9uYW1lfTwvZ3JwX25hbWU+CiAgPGdycF9kZXNjcmlwdGlvbj57JGdyb3VwX2Rlc2NyaXB0aW9ufTwvZ3JwX2Rlc2NyaXB0aW9uPgp7Zm9yZWFjaCBmcm9tPSRwcm9wZXJ0aWVzIGl0ZW09J3Byb3AnfQogIDxwcm9wZXJ0eT4KICAgIDxwcm9wX25hbWU+eyRwcm9wLT5uYW1lfTwvcHJvcF9uYW1lPgogICAgPHByb3BfcHJvbXB0PjwhW0NEQVRBW3skcHJvcC0+cHJvbXB0fV1dPjwvcHJvcF9wcm9tcHQ+CiAgICA8cHJvcF90eXBlPnskcHJvcC0+dHlwZX08L3Byb3BfdHlwZT4KICAgIHtpZiBpc3NldCgkcHJvcC0+b3B0aW9ucyl9e2ZvcmVhY2ggZnJvbT0kcHJvcC0+b3B0aW9ucyBpdGVtPSdvcHRpb24nfQogICAgPHByb3Bfb3B0aW9uPgogICAgICA8b3BfbmFtZT48IVtDREFUQVt7JG9wdGlvbi0+bmFtZX1dXT48L29wX25hbWU+CiAgICAgIDxvcF90ZXh0PjwhW0NEQVRBW3skb3B0aW9uLT50ZXh0fV1dPjwvb3BfdGV4dD4KICAgIDwvcHJvcF9vcHRpb24+CiAgICB7L2ZvcmVhY2h9ey9pZn0KICAgIHtpZiBpc3NldCgkcHJvcC0+bGVuZ3RoKX0KICAgIDxwcm9wX2xlbmd0aD57JHByb3AtPmxlbmd0aH08L3Byb3BfbGVuZ3RoPgogICAgey9pZn0KICAgIHtpZiBpc3NldCgkcHJvcC0+bWF4bGVuZ3RoKX0KICAgIDxwcm9wX21heGxlbmd0aD57JHByb3AtPm1heGxlbmd0aH08L3Byb3BfbWF4bGVuZ3RoPgogICAgey9pZn0KICAgIDxwcm9wX3NvcnRvcmRlcj57JHByb3AtPnNvcnRvcmRlcn08L3Byb3Bfc29ydG9yZGVyPgogICAgPHByb3Bfc3RhdHVzPnskcHJvcC0+c3RhdHVzfTwvcHJvcF9zdGF0dXM+CiAgICA8cHJvcF9sb3N0dW5mbGFnPnskcHJvcC0+bG9zdHVuZmxhZ308L3Byb3BfbG9zdHVuZmxhZz4KICA8L3Byb3BlcnR5Pgp7L2ZvcmVhY2h9CjwvbWFtc19ncm91cD4=]]></data>
	</file>
	<file>
	  <filename>/templates/help.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJ7JG1vZC0+R2V0TW9kdWxlVVJMUGF0aCgpfS9jc3MvbWFtcy5jc3MiIC8+DQo8c2NyaXB0IHNyYz0ieyRtb2QtPkdldE1vZHVsZVVSTFBhdGgoKX0vanMvanMuY29va2llLmpzIj48L3NjcmlwdD4NCjxzY3JpcHQ+DQpqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7DQogIHZhciBhY3RpdmVfdGFiID0gQ29va2llcy5nZXQoJ21hbXNfYWN0aXZlJyk7DQoNCiAgaWYodHlwZW9mIGFjdGl2ZV90YWIgPT09ICJ1bmRlZmluZWQiKQ0KICB7DQogICAgX3NldF9hY3RpdmVfdGFiKCdnZW5lcmFsJyk7DQogIH0NCiAgZWxzZQ0KICB7DQogICAgX3NldF9hY3RpdmVfdGFiKGFjdGl2ZV90YWIpOw0KICB9DQoNCiAgJCgnI3BhZ2VfdGFicyA+IGRpdicpDQogICAgLmVhY2goZnVuY3Rpb24oKQ0KICAgIHsNCiAgICAgICQodGhpcykuY2xpY2soZnVuY3Rpb24oKQ0KICAgICAgew0KICAgICAgICBDb29raWVzLnNldCgnbWFtc19hY3RpdmUnLCB0aGlzLmlkKTsNCiAgICAgIH0pOw0KICAgIH0pOw0KfSk7DQoNCg0KZnVuY3Rpb24gX3NldF9hY3RpdmVfdGFiKHRhYl9uYW1lKQ0Kew0KICAkKCcjcGFnZV90YWJzID4gZGl2JykNCiAgICAuZWFjaChmdW5jdGlvbigpDQogICAgew0KICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7DQogICAgfSk7DQoNCiAgJCgnI3BhZ2VfY29udGVudCA+IGRpdicpDQogICAgLmVhY2goZnVuY3Rpb24oKQ0KICAgIHsNCiAgICAgICQodGhpcykuaGlkZSgpOw0KICAgIH0pOw0KDQogICQoJyMnICsgdGFiX25hbWUpLmFkZENsYXNzKCdhY3RpdmUnKTsNCiAgJCgnIycgKyB0YWJfbmFtZSArICdfYycpLnNob3coKTsNCiAgQ29va2llcy5zZXQoJ21hbXNfYWN0aXZlJywgdGFiX25hbWUpOw0KDQp9DQo8L3NjcmlwdD4NCg0KPGRpdiBjbGFzcz0iY2xlYXIiPjwvZGl2Pg0KDQo8ZGl2IGlkPSJwYWdlX3RhYnMiPg0KDQogIDxkaXYgIGlkPSJnZW5lcmFsIj4NCiAgICBHZW5lcmFsDQogIDwvZGl2Pg0KICA8ZGl2IGlkPSJ1c2luZyI+DQogICAgSG93IERvIEkgVXNlIEl0DQogIDwvZGl2Pg0KICA8ZGl2IGlkPSJwYXJhbWV0ZXJzIj4NCiAgICBQYXJhbWV0ZXJzDQogIDwvZGl2Pg0KICA8ZGl2IGlkPSJzbWFydHkiPg0KICAgIFNtYXJ0eSBQbHVnaW5zDQogIDwvZGl2Pg0KICA8ZGl2IGlkPSJob29rcyI+DQogICAgSG9va3MNCiAgPC9kaXY+DQogIHtpZiAkaGF2ZV9mZXV9DQogICAgPGRpdiBpZD0ibWlncmF0ZV9mcm9tX2ZldSI+DQogICAgIE1pZ3JhdGluZyBGcm9tIEZFVQ0KICAgIDwvZGl2Pg0KICB7L2lmfQ0KICA8ZGl2IGlkPSJhYm91dCI+DQogICAgQWJvdXQNCiAgPC9kaXY+DQoNCjwvZGl2Pg0KDQo8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2Pg0KPGRpdiBpZD0icGFnZV9jb250ZW50Ij4NCg0KICA8ZGl2IGlkPSJnZW5lcmFsX2MiPg0KICAgIHtpbmNsdWRlIGZpbGU9J21vZHVsZV9maWxlX3RwbDpNQU1TO2hlbHBfZ2VuZXJhbF90YWIudHBsJ30NCiAgPC9kaXY+DQogIDxkaXYgaWQ9InVzaW5nX2MiPg0KICAgIHtpbmNsdWRlIGZpbGU9J21vZHVsZV9maWxlX3RwbDpNQU1TO2hlbHBfdXNpbmdfdGFiLnRwbCd9DQogIDwvZGl2Pg0KICA8ZGl2IGlkPSJwYXJhbWV0ZXJzX2MiPg0KICAgIHtpbmNsdWRlIGZpbGU9J21vZHVsZV9maWxlX3RwbDpNQU1TO2hlbHBfcGFyYW1ldGVyc190YWIudHBsJ30NCiAgPC9kaXY+DQogIDxkaXYgaWQ9InNtYXJ0eV9jIj4NCiAgICB7aW5jbHVkZSBmaWxlPSdtb2R1bGVfZmlsZV90cGw6TUFNUztoZWxwX3NtYXJ0eV90YWIudHBsJ30NCiAgPC9kaXY+DQogIDxkaXYgaWQ9Imhvb2tzX2MiPg0KICAgIHtpbmNsdWRlIGZpbGU9J21vZHVsZV9maWxlX3RwbDpNQU1TO2hlbHBfaG9va3NfdGFiLnRwbCd9DQogIDwvZGl2Pg0KICB7aWYgJGhhdmVfZmV1fQ0KICAgIDxkaXYgaWQ9Im1pZ3JhdGVfZnJvbV9mZXVfYyI+DQogICAgICB7aW5jbHVkZSBmaWxlPSdtb2R1bGVfZmlsZV90cGw6TUFNUztoZWxwX2ZldV90YWIudHBsJ30NCiAgICA8L2Rpdj4NCiAgey9pZn0NCiAgPGRpdiBpZD0iYWJvdXRfYyI+DQogICAge2luY2x1ZGUgZmlsZT0nbW9kdWxlX2ZpbGVfdHBsOk1BTVM7aGVscF9hYm91dF90YWIudHBsJ30NCiAgPC9kaXY+DQoNCiAgPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4NCjwvZGl2Pg==]]></data>
	</file>
	<file>
	  <filename>/templates/help_about_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPkFib3V0IHRoaXMgbW9kdWxlPC9oMz4NCg0KICA8cD5UaGlzIG1vZHVsZSBpcyBhIGZvcmsgb2YgPHN0cm9uZz5Gcm9udEVuZFVzZXJzPC9zdHJvbmc+IGRldmVsb3BlZCBieSA8c3Ryb25nPlJvYmVydCBDYW1wYmVsbCAmbHQ7Y2FsZ3V5MTAwMCZndDs8L3N0cm9uZz4uPGJyIC8+DQogICAgICBUaGlzIGlzIGEgMXN0IGdlbmVyYXRpb24gZm9yayBvZiB0aGUgbW9kdWxlLiBDb25zaWRlciB0aGlzIGFzIGFub3RoZXIgZmxhdm91ciBvZiB0aGUgb3JpZ2luYWwgbW9kdWxlLjxiciAvPg0KDQogIElmIHlvdSBmaW5kIGFueSBidWdzIHBsZWFzZSBmZWVsIGZyZWUgdG8gc3VibWl0IGEgYnVnIHJlcG9ydCA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL2J1Zy9saXN0LzE0NjUiIHRhcmdldD0iX2JsYW5rIj5oZXJlPC9hPiBvciBmb3IgYW55IGdvb2QgaWRlYXMgY29uc2lkZXIgc3VibWl0aW5nIGEgZmVhdHVyZSByZXF1ZXN0IDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvZmVhdHVyZV9yZXF1ZXN0L2xpc3QvMTQ2NSIgdGFyZ2V0PSJfYmxhbmsiPmhlcmU8L2E+LjwvcD4NCiAgPHA+UGxlYXNlIGtlZXAgaW4gbWluZCB0aGF0IGRldmVsb3BlcnMgZG8gaGF2ZSB0aGVpciBkYWlseSBqb2JzIHdoaWNoIG1lYW5zIHRoYXQgZmVhdHVyZSByZXF1ZXN0cyBhcmUgY29uc2lkZXJlZCBhbmQgZG9uZSBhcyB0aW1lIGFsbG93cy4gSWYgeW91IG5lZWQgYSBmZWF0dXJlIHJlYWxseSBiYWRseSBjb25zaWRlciBjb250YWN0aW5nIG9uZSBvZiB0aGUgZGV2ZWxvcGVycyBmb3IgYSBzcG9uc29yZWQgZGV2ZWxvcG1lbnQuDQogIDwvcD4NCg0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+VGhlIG1vZHVsZSBhdXRob3IgLyBtYWludGFpbmVycyBvciBwcm9qZWN0IG1hbmFnZXJzIGFyZSBpbiBubyB3YXkgb2JsaWdhdGVkIHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhpcyBjb2RlIGluIGFueSBmYXNoaW9uLiAgSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+DQo8dWw+DQo8bGk+QSBidWcgdHJhY2tpbmcgYW5kIGZlYXR1cmUgcmVxdWVzdCBzeXN0ZW0gaGFzIGJlZW4gY3JlYXRlZCBmb3IgdGhpcyBtb2R1bGUgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9tYW1zIj5oZXJlPC9hPi4gUGxlYXNlIGJlIHZlcmJvc2UgYW5kIGRlc2NyaXB0aXZlIHdoZW4gc3VibWl0dGluZyBidWcgcmVwb3J0cyBhbmQgZmVhdHVyZSByZXF1ZXN0cywgYW5kIGZvciBidWcgcmVwb3J0cyBlbnN1cmUgdGhhdCB5b3UgaGF2ZSBwcm92aWRlZCBzdWZmaWNpZW50IGluZm9ybWF0aW9uIHRvIHJlbGlhYmx5IHJlcHJvZHVjZSB0aGUgaXNzdWUuPC9saT4NCjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uICBXaGVuIGRlc2NyaWJpbmcgYW4gaXNzdWUgcGxlYXNlIG1ha2UgYW4gZWZmb3J0IHRvIHByb3ZpZGUgYWxsIHJlbGV2YW50IGluZm9ybWF0aW9uLCBhIHRob3JvdWdoIGRlc2NyaXB0aW9uIG9mIHlvdXIgaXNzdWUsIGFuZCBzdGVwcyB0byByZXByb2R1Y2UgaXQgb3IgeW91ciBkaXNjdXNzaW9uIG1heSBiZSBpZ25vcmVkLjwvbGk+DQo8L3VsPg0KDQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCntpZiAkc21hcnR5Lm5vd3xkYXRlX2Zvcm1hdDoiJVkiID09ICcyMDIwJ317JGNyID0gJzIwMjAnfXtlbHNlfXskY3IgPSAiMjAyMCAtIHskc21hcnR5Lm5vd3xkYXRlX2Zvcm1hdDonJVknfSJ9ey9pZn0NCjxwPkNvcHlyaWdodCAmY29weTsgeyRjcn0sIENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uIDxhIGhyZWY9Im1haWx0bzppbmZvQGNtc21hZGVzaW1wbGUub3JnIj4mbHQ7aW5mb0BjbXNtYWRlc2ltcGxlLm9yZyZndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDgtMjAxOSwgUm9iZXJ0IENhbXBiZWxsICZsdDtjYWxndXkxMDAwJmd0Oy4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPGhyPg0KPHA+PHN0cm9uZz5Gcm9udEVuZFVzZXJzPC9zdHJvbmc+IGlzIGZyZWUgc29mdHdhcmU7PGJyIC8+IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSA8c3Ryb25nPkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlPC9zdHJvbmc+IGFzIHB1Ymxpc2hlZCBieSB0aGUgPHN0cm9uZz5GcmVlIFNvZnR3YXJlIEZvdW5kYXRpb248L3N0cm9uZz47PGJyIC8+IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uPC9wPg0KPHA+PHN0cm9uZz5Gcm9udEVuZFVzZXJzPC9zdHJvbmc+IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCA8c3Ryb25nPldJVEhPVVQgQU5ZIFdBUlJBTlRZPC9zdHJvbmc+OzxiciAvPiB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgPHN0cm9uZz5NRVJDSEFOVEFCSUxJVFk8L3N0cm9uZz4gb3IgPHN0cm9uZz5GSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRTwvc3Ryb25nPi48L3A+DQo8cD5TZWUgdGhlR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy48L3A+DQogPHA+WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgPHN0cm9uZz5HTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZTwvc3Ryb25nPiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTs8YnIgLz4gaWYgbm90LCB3cml0ZSB0byB0aGUgPHN0cm9uZz5GcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBPC9zdHJvbmc+IG9yIDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPnJlYWQgaXQgb25saW5lPC9hPi48L3A+DQo8cD48c3Ryb25nPllvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgPHN0cm9uZz5Gcm9udEVuZFVzZXJzPC9zdHJvbmc+Ljwvc3Ryb25nPjwvcD4NCjxocj4NCjxoND5DdXJyZW50IE1haW50YWluZXJzPC9oND4NCjx1bD4NCiAgPGxpIGNsYXNzPSJwX2JvdHRvbV8xNSI+PHN0cm9uZz5GZXJuYW5kbyBNb3JnYWRvIChKbyBNb3JnKTwvc3Ryb25nPjwvbGk+DQo8L3VsPg0KDQo8aDQ+UGFzdCBNYWludGFpbmVyczwvaDQ+DQo8dWw+DQogIDxsaT48c3Ryb25nPlJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMCk8L3N0cm9uZz4gPGJyIC8+d3d3LmNhbGd1eTEwMDAuY29tPC9saT4NCjwvdWw+DQoNCjxoND5Lbm93biBDb250cmlidXRvcnM8L2g0Pg0KPHVsPg0KICA8bGk+PHN0cm9uZz5Sb2JlcnQgQ2FtcGJlbGwgKGNhbGd1eTEwMDApPC9zdHJvbmc+PGJyIC8+d3d3LmNhbGd1eTEwMDAuY29tPC9saT4NCjwvdWw+DQoNCnsqDQpUT0RPOiBuZWVkIGFuIHVwZGF0ZWQgbGlzdCBvZiBzcG9uc29ycyA6fCAoSk0pDQo8aDQ+S25vd24gU3BvbnNvcnM8L2g0Pg0KPHVsPg0KICA8bGk+PHN0cm9uZz5NYXR0IEhvcm5zYnkgKERJR0kzKTwvc3Ryb25nPjxiciAvPnd3dy5tYXR0aG9ybnNieS5jYTwvbGk+DQogIDxsaT48c3Ryb25nPkdyZWdvcnkgUHJvc3NlciAoZ2VlcGVycyk8L3N0cm9uZz48YnIgLz53d3cuc3RpY2t5d2lja2V0ZGVzaWducy5jb208L2xpPg0KPC91bD4NCip9]]></data>
	</file>
	<file>
	  <filename>/templates/help_feu_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPk1pZ3JhdGluZyBGcm9tIEZyb250IEVuZCBVc2VzIE1vZHVsZTwvaDM+DQoNCg0KPHA+SWYgeW91IGFyZSBzZWVpbmcgdGhpcyB0YWIgaXMgYmVjYXVzZSB5b3UgaGF2ZSB0aGUgPGI+TW9kdWxlIEZyb250IEVuZCBVc2VycyAoRkVVKTwvYj4gaW5zdGFsbGVkIGluIHdoaWNoIGNhc2UgeW91J2xsIGJlIGFibGUgdG8gaW1wb3J0IHNldHRpbmdzLCBhbmQgdXNlcnMnIGRhdGEgZnJvbSA8Yj5GRVU8L2I+LjwvcD4NCjxkaXYgY2xhc3M9Indhcm5pbmciPg0KICA8cD48Yj5Ob3RlOjwvYj4gdGhlIG1pZ3JhdGlvbiBmcm9tIDxiPkZFVTwvYj4gaGFzIG9ubHkgYmVlbiB0ZXN0ZWQgd2l0aCA8Yj5GRVU8L2I+IGJyYW5jaCA8Yj4yLng8L2I+LCBzcGVjaWZpY2FsbHkgPGI+Mi4xNC4zLjQ8L2I+LiBUaGVyZSBpcyBubyB3YXJyYW50eSB0aGF0IGl0IHdpbGwgd29yayB3aXRoIGFueSBvdGhlciB2ZXJzaW9uIG9mIDxiPkZFVTwvYj4uPC9wPg0KPC9kaXY+DQo8cD5UaGlzIHNob3VsZCBiZSBhIG9uZSB0aW1lIG9wZXJhdGlvbiByaWdodCBhZnRlciA8Yj5NQU1TPC9iPiBpbnN0YWxsYXRpb24hIERvaW5nIHRoaXMgd2lsbCBkZWxldGUgYWxsIGRhdGEgZnJvbSBNQU1TLiBUaGVyZSBpcyBhIHJvbGxiYWNrIGZlYXR1cmUgdGhhdCB0cmllcyB0byBnbyBiYWNrIHRvIHdoYXRldmVyIHdhcyBwcmV2aW91c2x5IGluIDxiPk1BTVM8L2I+IGluIGNhc2Ugc29tZXRoaW5nIGZhaWxzLCBidXQgdGhlcmUgaXMgbm8gd2F5IHRvIGVuc3VyZSB0aGUgc3VjY2VzcyBvZiB0aGUgb3BlcmF0aW9uLjwvcD4NCjxwPg0KICA8Yj5NQU1TPC9iPiB3aWxsIGltcG9ydCBhbGwgdXNlcnMgdGFibGVzLCBpbmNsdWRpbmcgZ3JvdXBzIGFuZCBwcm9wZXJ0aWVzLiBBZGRpdGlvbmFsbHkgYWxsIG1vZHVsZSBzZXR0aW5ncyBmcm9tIDxiPkZFVTwvYj4gIHdpbGwgYmUgaW1wb3J0ZWQgdG8gPGI+TUFNUzwvYj4uDQo8L3A+DQo8ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+DQogIDxwPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gPGI+TUFNUzwvYj4gbWlncmF0aW9uIDxiPndvbid0IGRlbGV0ZSBub3IgbW9kaWZ5PC9iPiBhbnkgZGF0YSBmcm9tIDxiPkZFVTwvYj4uPC9wPg0KPC9kaXY+DQoNCjxwPg0KICBBZnRlciBhIHN1Y2Nlc3NmdWwgZGF0YSBpbXBvcnQgZnJvbSA8Yj5GRVU8L2I+LCB0aGVyZSB3aWxsIHN0aWxsIGJlIGEgZmV3IHN0ZXBzIG5lZWRlZCB0byB0YWtlIHRvIGNvbXBsZXRlIHRoZSBtaWdyYXRpb246DQo8L3A+DQo8dWw+DQogIDxsaT4NCiAgICA8Yj50ZW1wbGF0ZXM8L2I+IHdvbid0IGJlIGNvcGllZCBmb3IgeW91LCB5b3UnbGwgaGF2ZSB0byBjb3B5IHRoZW0geW91cnNlbGY7DQogIDwvbGk+DQogIDxsaT4NCiAgICBhZnRlciBjb3B5aW5nIHRoZSA8Yj50ZW1wbGF0ZXM8L2I+IHlvdSdsbCBoYXZlIHRvIGFkanVzdCB0aGVtIHRvIGJlIHVzZWQgd2l0aCA8Yj5NQU1TPC9iPjoNCiAgICA8dWw+DQogICAgICA8bGk+eW91J2xsIGhhdmUgdG8gc2VhcmNoIGFuZCByZXBsYWNlIG9jY3VycmVuY2VzIG9mIDxiPkZFVTwvYj4sIDxiPmZldTwvYj4sIDxiPmNnZTwvYj4sIDxiPkZyb250RW5kVXNlcnM8L2I+IGFuZCA8Yj5mcm9udGVuZHVzZXJzPC9iPiB3aXRoIHRoZXJlIGNvdW50ZXJwYXJ0cyAobG9vayBhdCA8Yj5NQU1TPC9iPiBkZWZhdWx0IHRlbXBsYXRlcyBmb3IgcmVmZXJlbmNlKTs8L2xpPg0KICAgICAgPGxpPjxiPmNnZTwvYj4gYW5kIG90aGVyIDxiPkNHRXh0ZW5zaW9uczwvYj4gdGFncyBvciA8Yj5TbWFydHk8L2I+IHBsdWdpbnMgc2hvdWxkIGJlIHJlcGxhY2VkIGJ5IHRoZWlyIDxiPkNNU01TRXh0PC9iPiBjb3VudGVycGFydHM6IGFzIGFuIGV4YW1wbGUgcmVwbGFjZSBhbGwgb2NjdXJyZW5jZXMgb2YgPGI+JiMxMjM7Y2dlX2NzcmZ9PC9iPiB3aXRoIDxiPiYjMTIzO3h0X2NzcmZ9PC9iPjs8L2xpPg0KICAgIDwvdWw+DQogIDwvbGk+DQogICAgPGxpPg0KICAgIDxiPmltYWdlIGFuZCBvdGhlciBmaWxlczwvYj4gd2lsbCBiZSBrZXB0IGluIHRoZSBmb2xkZXJzIHNldCBpbiA8Yj5GRVU8L2I+LCBzZXR0aW5ncyB3aGljaCBzaG91bGQgaGF2ZSBiZWVuIGNvcGllZCB0byA8Yj5NQU1TPC9iPiBieSB0aGUgaW1wb3J0IHRvb2w7DQogIDwvbGk+DQo8L3VsPg0KDQo8ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+DQogIDxwPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gb3RoZXIgdGhhbiB0aGUgY2FzZSBvZiBhIG1pZ3JhdGlvbiwgYm90aCBtb2R1bGVzIHNob3VsZCBiZSBhYmxlIHRvIGNvZXhpc3Qgc2lkZSBieSBzaWRlIHdpdGhvdXQgaXNzdWVzIGFzIGxvbmcgYXMgdGhleSBkb24ndCBzaGFyZSBmaWxlcycgZm9sZGVycy48L3A+DQo8L2Rpdj4=]]></data>
	</file>
	<file>
	  <filename>/templates/help_general_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQogIDxwPlRoaXMgbW9kdWxlIGFsbG93cyBtYW5hZ2VtZW50IGFuZCBhZG1pbmlzdHJhdGlvbiBvZiBmcm9udCBlbmQgdXNlcnMgPGk+KHVzZXJzIHdobyBoYXZlIG5vIGFkbWluIGFjY2Vzc2VzKTwvaT4uICBJdCBhbGxvd3MgY3JlYXRpb24gb2YgdXNlciBncm91cHMsIGFuZCB1c2VyIGFjY291bnRzIGFuZCBhbGxvd3MgdXNlcnMgdG8gbG9naW4gYW5kIGxvZ291dC48L3A+DQogIDxoND5GZWF0dXJlczo8L2g0Pg0KICA8dWw+DQogICAgPGxpPlVzZXJzIGNhbiBiZSBtZW1iZXJzIG9mIG11bHRpcGxlIGdyb3Vwcy48L2xpPg0KICAgIDxsaT5Vc2VyIGFjY291bnQgZXhwaXJhdGlvbi4gIFlvdSBjYW4gY3JlYXRlIHRlbXBvcmFyeSB1c2VyczwvbGk+DQogICAgPGxpPkdyb3VwIFByb3BlcnRpZXMuICBZb3UgY2FuIGFzayBmb3IgZGlmZmVyZW50IGluZm9ybWF0aW9uIGZyb20gbWVtYmVycyBvZiBkaWZmZXJlbnQgZ3JvdXBzLjwvbGk+DQogICAgPGxpPkxvdHMgb2YgZmllbGQgdHlwZXMuPC9saT4NCiAgICA8bGk+UHJvdmlkZXMgYSBjb250ZW50IHR5cGUgdG8gbWFrZSBwcm90ZWN0aW5nIGNvbnRlbnQgc2ltcGxlLCBpZiBub3QgdHJpdmlhbC48L2xpPg0KICAgIDxsaT5DYXBhYmxlIG9mIGhhbmRsaW5nIHRob3VzYW5kcyBvZiB1c2VyczwvbGk+DQogICAgPGxpPkV4dGVuc2l2ZSBmbGV4aWJpbGl0eSBmb3IgaGFuZGxpbmcgcmVkaXJlY3Rpb24gYWZ0ZXIgbG9naW4sIGFuZCBzZW5kcyBldmVudHMgdG8gZXh0ZW5kIHRoZSB3b3JrZmxvdyBwcm9jZXNzLjwvbGk+DQogICAgPGxpPkZvcmdvdHRlbiBwYXNzd29yZCwgYW5kIGZvcmdvdCB1c2VybmFtZSBmdW5jdGlvbmFsaXR5Li4uIGFsbG93cyB1c2VycyB0byBzZXQgYSBuZXcgcGFzc3dvcmQsIGFuZC9vciB0byByZWNvdmVyIHRoZWlyIHVzZXJuYW1lIGlmIHRoZXkgY29tcGxldGVseSBmb3Jnb3QgbG9naW4gZGV0YWlscy48L2xpPg0KICAgIDxsaT5FeHRlbmRhYmxlIHRvIGRpZmZlcmVudCBhdXRoZW50aWNhdGlvbiB0eXBlcyAoTERBUCwgRmFjZWJvb2ssIGV0YykuPC9saT4NCiAgICA8bGk+UHJvdmlkZXMgZXh0ZW5zaXZlIGltcG9ydCBhbmQgZXhwb3J0IGNhcGFiaWxpdGllcy48L2xpPg0KICAgIDxsaT5IYXMgYW4gZXh0ZW5zaXZlIEFQSSBmb3IgYWRkaW5nIGZ1bmN0aW9uYWxpdHkgaW50byB2YXJpb3VzIG90aGVyIENNU01TIGFkZG9uIG1vZHVsZXMuPC9saT4NCiAgICA8bGk+VGhlIGFiaWxpdHkgdG8gZW5jcnlwdCBzZW5zaXRpdmUgdXNlciBkYXRhLjwvbGk+DQogICAgPGxpPlN0cm9uZyBlbmNyeXB0aW9uIGFuZCBzZWN1cml0eS48L2xpPg0KICAgIDxsaT5FeHRlbnNpdmUgYWRtaW5pc3RyYXRpdmUgY2FwYWJpbGl0aWVzLjwvbGk+DQogICAgPGxpPkFkZGl0aW9uYWwgPGI+TElTRTwvYj4gY3VzdG9tIGZpZWxkcyBpZiB5b3UgaGF2ZSBpdCBpbnN0YWxsZWQuPC9saT4NCiAgPC91bD4NCg0KDQo8ZGl2IGNsYXNzPSJ3YXJuaW5nIj4NCjxoMz5Qcml2YWN5IFdhcm5pbmc6PC9oMz4NCjxwPkFkbWluaXN0cmF0b3JzIGFyZSByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIHNhZmV0eSBhbmQgc2VjdXJpdHkgb2YgYW55IHBlcnNvbmFsIGluZm9ybWF0aW9uIGNvbGxlY3RlZC48L3A+DQoNCjxwPlRoaXMgbW9kdWxlIGRvZXMgbG9nIHRoZSBJUCBhZGRyZXNzIG9mIHVzZXJzLiBUaGlzIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggRG8tTm90LVRyYWNrIHBvbGljaWVzLCBhbmQgbWF5IGJyZWFrIHNvbWUgbGF3cy4gIDxzdHJvbmc+VXNlIEF0IFlvdXIgT3duIFJpc2suPC9zdHJvbmc+PC9wPg0KPHA+QWRkaXRpb25hbGx5LCB0aGUgYWRtaW5pc3RyYXRvciBoYXMgdGhlIGFiaWxpdHkgdG8gY29uZmlndXJlIHRoZSBtb2R1bGUgc28gdGhhdCBjb29raWVzIGFyZSB1c2VkLiAgSG93ZXZlciBubyBwZXJzb25hbCBpbmZvcm1hdGlvbiBpcyBzdG9yZWQgaW4gdGhlIGNvb2tpZXMgKGlmIGVuYWJsZWQpLiAgT25seSBhIHN5c3RlbSBhc3NpZ25lZCB1bmlxdWUgdXNlciBpZGVudGlmaWVyLCBhbmQgYSBzZXNzaW9uIGlkZW50aWZpZXIuPC9wPg0KDQo8cD5UaGlzIG1vZHVsZSBwcm92aWRlcyBzb21lIGFzc2lzdGFuY2UgaW4gbWFuYWdpbmcgdXNlciBwcml2YWN5LiAgVGhlcmUgaXMgZnVuY3Rpb25hbGl0eSB0byBhbm9ueW1pemUgYSB1c2VycyBhY2NvdW50LCBhbmQgZnVuY3Rpb25hbGl0eSB0aGF0IHdpbGwgYXV0b21hdGljYWxseSBjbGVhciBvbGQgZGF0YSBmcm9tIHVzZXIgaGlzdG9yeSBsb2dzLjwvcD4NCg0KPHA+VGhpcyBtb2R1bGUgZG9lcyBOT1QgcHJvdmlkZSB0aGUgYWJpbGl0eSBmb3IgdXNlcnMgdG8gcmVtb3ZlIHRoZWlyIGFjY291bnRzLiAgVGhpcyBpcyBiZWNhdXNlIG90aGVyIGZ1bmN0aW9uYWxpdHkgKHN1Y2ggYXMgRS1jb21tZXJjZSkgbWF5IHJlcXVpcmUgdGhlIHVzZXIgaW5mb3JtYXRpb24gZm9yIHJlZmVyZW50aWFsIGludGVncml0eS4gIEhvd2V2ZXIsIHRoZXJlIGlzIGFuIGFkbWluIG9wdGlvbiB0byBhbGxvdyBhbm9ueW1pemluZyBhIHVzZXIuPC9wPg0KPC9kaXY+DQoNCjxoMz5FbmNyeXB0ZWQgRGF0YTo8L2gzPg0KPHA+VGhlIEVuY3J5cHRlZCBmaWVsZCBmdW5jdGlvbmFsaXR5IGlzIGludGVuZGVkIHRvIHN0b3JlIChpbiBhIHNlY3VyZSB3YXkpIHBlcnNvbmFsIGFuZCBwcml2YXRlIGRhdGEgdGhhdCBldmVuIHRoZSBzaXRlIGFkbWluaXN0cmF0b3Igc2hvdWxkIG5vdCBoYXZlIGFjY2VzcyB0by4gIGkuZTogaXRlbXMgc3VjaCBhcyBDcmVkaXQgQ2FyZCBpbmZvcm1hdGlvbi4gIFRoZSBvbmx5IHBlcnNvbiB0aGF0IHNob3VsZCBiZSBhYmxlIHRvIHZpZXcgYW5kIGVkaXQgdGhpcyBkYXRhIGlzIHRoZSB1c2VyIGhpbXNlbGYuICAgVGhpcyBkYXRhIHNob3VsZCBub3QgYmUgZXhwb3J0ZWQgdG8gcGxhaW4gdGV4dCBlaXRoZXIuICBUaGUgZGF0YSBjb3VsZCBob3dldmVyIGJlIHJlYWQgYW5kIHVzZWQgYnkgb3RoZXIgbW9kdWxlcy48L3A+DQo8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+ICBUaGVyZSBtYXkgYmUgc21hYSBuZWVkIGZvciBhbiBhZGRpdGlvbmFsIG1vZHVsZSB0byBkaXNwbGF5IHRoZSB1bmVuY3J5cHRlZCBmb3JtIG9mIGVuY3J5cHRlZCB1c2VyIGluZm9ybWF0aW9uLCBob3dldmVyIHRoZSBNQU1TIG1vZHVsZSBkb2VzIG5vdCBuZWVkIGl0LjwvcD4NCg0KPGgzPlRpcHM8L2gzPg0KPHVsPg0KICA8bGk+RHluYW1pYyBOYXZpZ2F0aW9uczoNCiAgICA8cD5JbiBtb3N0IGNpcmN1bXN0YW5jZXMgeW91IGNhbm5vdCBhbGxvdyBicm93c2VyIGNhY2hpbmcgb24gYW55IHBhZ2UgdGhhdCBoYXMgYSBkeW5hbWljIG5hdmlnYXRpb24uLi4gdGhlIHR3byBzaG91bGQgbm90IGJlIG1peGVkLjwvcD4NCiAgPC9saT4NCiAgPGxpPlJlZGlyZWN0IFByZWZlcmVuY2VzIGFuZCAmbGJyYWNlOyR1c2VybmFtZX06DQogICAgPHA+SWYgdXNpbmcgdGhlIDxjb2RlPiZsYnJhY2U7JHVzZXJuYW1lfTwvY29kZT4gc21hcnR5IHZhcmlhYmxlIGluIGFueSBvZiB0aGUgcmVkaXJlY3QgcHJlZmVyZW5jZXMgaW4gdGhlIE1BTVMgbW9kdWxlJ3MgJnF1b3Q7YnVpbHRpbiBhdXRoZW50aWNhdGlvbiZxdW90OyB0YWIgYmUgc3VyZSB0byB0dXJuIE9GRiB0aGUgJnF1b3Q7RW1haWwgaXMgVXNlcm5hbWUmcXVvdDsgcHJlZmVyZW5jZS48L3A+DQogIDwvbGk+DQo8L3VsPg0KDQo8ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+DQogIDxwPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gaWYgeW91IGhhdmUgPGI+RnJvbnQgRW5kIFVzZXJzIChGRVUpPC9iPiBpbnN0YWxsZWQgeW91J2xsIHNlZSBhIG5ldyB0YWIgaGVyZSByZWdhcmRpbmcgdGhlIG1pZ3JhdGlvbiBzdGVwcyBmcm9tIDxiPkZFVTwvYj4gdG8gPGI+TUFNUzwvYj4gc2hvdWxkIHlvdSByZXF1aXJlIGl0LjwvcD4NCjwvZGl2Pg==]]></data>
	</file>
	<file>
	  <filename>/templates/help_hooks_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPkhvb2tzPC9oMz4NCjxwPlRoaXMgbW9kdWxlIHVzZXMgSG9va3MgdG8gdGllIGluIGV4dGVybmFsIGZ1bmN0aW9uYWxpdHkuICBUaGUgZm9sbG93aW5nIGhvb2tzIGFyZSBhdmFpbGFibGU6PC9wPg0KPHVsPg0KICAgIDxsaT48Y29kZT5NQU1TOjpCZWZvcmVDaGFuZ2VTZXR0aW5nczwvY29kZT4NCiAgICAgICAgPHA+U2VudCBhZnRlciB0aGUgY2hhbmdlIHNldHRpbmdzIGZvcm0gaGFzIGJlZW4gc3VibWl0dGVkLCBidXQgYmVmb3JlIGFueSB2YWxpZGF0aW9uIG9jY3Vycy48L3A+DQoJPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPg0KCTx1bD4NCgkgICA8bGk+PGNvZGU+dWlkPC9jb2RlPiA6IGludCAtIFRoZSB1c2VyIGlkPC9saT4NCgk8L3VsPg0KICAgIDwvbGk+DQogICAgPGxpPjxjb2RlPk1BTVM6OkNoYW5nZVNldHRpbmdzQWZ0ZXJWYWxpZGF0ZTwvY29kZT4NCiAgICAgICAgPHA+U2VudCBhZnRlciBhbGwgdmFsaWRhdGlvbiBpcyBkb25lIGluIHRoZSBjaGFuZ2Ugc2V0dGluZ3MgZm9ybSwgYnV0IGJlZm9yZSBhbnl0aGluZyBpcyBzYXZlZCB0byB0aGUgZGF0YWJhc2UuPC9wPg0KCTxwPlBhcmFtZXRlcnMgKGFzIGFuIGFzc29jaWF0aXZlIGFycmF5KTwvcD4NCgk8dWw+DQoJICAgPGxpPjxjb2RlPnVpZDwvY29kZT4gOiBpbnQgLSBUaGUgdXNlciBpZDwvbGk+DQoJPC91bD4NCiAgICA8L2xpPg0KICAgIDxsaT48Y29kZT5NQU1TOjpPbkNyZWF0ZVVzZXI8L2NvZGU+DQogICAgICAgIDxwPlNlbnQgYWZ0ZXIgYSB1c2VyIGlzIGNyZWF0ZWQgaW4gdGhlIGRhdGFiYXNlLjwvcD4NCiAgICAgICAgPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPg0KCTx1bD4NCgkgICA8bGk+PGNvZGU+aWQ8L2NvZGU+IDogaW50IC0gVGhlIHVzZXIgaWQ8L2xpPg0KCSAgIDxsaT48Y29kZT5uYW1lPC9jb2RlPiA6IHN0cmluZyAtIFRoZSB1c2VybmFtZTwvbGk+DQoJPC91bD4NCiAgICA8L2xpPg0KICAgIDxsaT48Y29kZT5NQU1TOjpPblVwZGF0ZVVzZXI8L2NvZGU+DQogICAgICAgIDxwPlNlbnQgYWZ0ZXIgYSB1c2VyIGluZm9ybWF0aW9uIGlzIGVkaXRlZCBpbiB0aGUgZGF0YWJhc2UuPC9wPg0KICAgICAgICA8cD5QYXJhbWV0ZXJzIChhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L3A+DQoJPHVsPg0KCSAgIDxsaT48Y29kZT5pZDwvY29kZT4gOiBpbnQgLSBUaGUgdXNlciBpZDwvbGk+DQoJICAgPGxpPjxjb2RlPm5hbWU8L2NvZGU+IDogc3RyaW5nIC0gVGhlIHVzZXJuYW1lPC9saT4NCgk8L3VsPg0KICAgIDwvbGk+DQogICAgPGxpPjxjb2RlPk1BTVM6Ok9uRGVsZXRlVXNlcjwvY29kZT4NCiAgICAgICAgPHA+U2VudCBiZWZvcmUgYSB1c2VyIGlzIHJlbW92ZWQgZnJvbSAgdGhlIGRhdGFiYXNlLjwvcD4NCiAgICAgICAgPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPg0KCTx1bD4NCgkgICA8bGk+PGNvZGU+aWQ8L2NvZGU+IDogaW50IC0gVGhlIHVzZXIgaWQ8L2xpPg0KCSAgIDxsaT48Y29kZT51c2VybmFtZTwvY29kZT4gOiBzdHJpbmcgLSBUaGUgdXNlcm5hbWU8L2xpPg0KCTwvdWw+DQogICAgPC9saT4NCiAgICA8bGk+PGNvZGU+TUFNUzo6T25DcmVhdGVHcm91cDwvY29kZT4NCiAgICAgICAgPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPg0KCTx1bD4NCgkgICA8bGk+PGNvZGU+aWQ8L2NvZGU+IDogaW50IC0gVGhlIGdyb3VwIGlkPC9saT4NCgkgICA8bGk+PGNvZGU+bmFtZTwvY29kZT4gOiBzdHJpbmcgLSBUaGUgZ3JvdXAgbmFtZTwvbGk+DQoJICAgPGxpPjxjb2RlPmRlc2NyaXB0aW9uPC9jb2RlPiA6IHN0cmluZyAtIFRoZSBncm91cCBkZXNjcmlwdGlvbjwvbGk+DQoJPC91bD4NCiAgICA8L2xpPg0KICAgIDxsaT48Y29kZT5NQU1TOjpPblVwZGF0ZUdyb3VwPC9jb2RlPg0KICAgICAgICA8cD5QYXJhbWV0ZXJzIChhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L3A+DQoJPHVsPg0KCSAgIDxsaT48Y29kZT5pZDwvY29kZT4gOiBpbnQgLSBUaGUgZ3JvdXAgaWQ8L2xpPg0KCSAgIDxsaT48Y29kZT5uYW1lPC9jb2RlPiA6IHN0cmluZyAtIFRoZSBncm91cCBuYW1lPC9saT4NCgkgICA8bGk+PGNvZGU+ZGVzY3JpcHRpb248L2NvZGU+IDogc3RyaW5nIC0gVGhlIGdyb3VwIGRlc2NyaXB0aW9uPC9saT4NCgk8L3VsPg0KICAgIDwvbGk+DQogICAgPGxpPjxjb2RlPk1BTVM6Ok9uRGVsZXRlR3JvdXA8L2NvZGU+DQogICAgICAgIDxwPlBhcmFtZXRlcnMgKGFzIGFuIGFzc29jaWF0aXZlIGFycmF5KTwvcD4NCgk8dWw+DQoJICAgPGxpPjxjb2RlPmlkPC9jb2RlPiA6IGludCAtIFRoZSBncm91cCBpZDwvbGk+DQoJICAgPGxpPjxjb2RlPm5hbWU8L2NvZGU+IDogc3RyaW5nIC0gVGhlIGdyb3VwIG5hbWU8L2xpPg0KCTwvdWw+DQogICAgPC9saT4NCiAgICA8bGk+PGNvZGU+TUFNUzo6QmVmb3JlTG9naW48L2NvZGU+DQogICAgICAgIDxwPlNlbnQgYmVmb3JlIGEgdXNlciBpcyBhdXRoZW50aWNhdGVkIG9yIGxvZ2dlZCBpbi4gSGFuZGxlcnMgY2FuIHRocm93IHRoZSA8Y29kZT5NQU1TTG9naW5GYWlsZWRFeGNlcHRpb248L2NvZGU+IHRvIGdlbmVyYXRlIGFuIGVycm9yLjwvcD4NCiAgICAgICAgPHA+UGFyYW1ldGVycyAoYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkpPC9wPg0KCTx1bD4NCgkgICA8bGk+PGNvZGU+dXNlcm5hbWU8L2NvZGU+IDogc3RyaW5nIC0gVGhlIHByb3ZpZGVkIHVzZXJuYW1lLjwvbGk+DQoJICAgPGxpPjxjb2RlPmdyb3VwczwvY29kZT4gOiBzdHJpbmcgLSBBIGxpc3Qgb2Ygb25seWdyb3VwcyAoc2VlIHRoZSBvbmx5Z3JvdXBzIHBhcmFtKTwvbGk+DQoJICAgPGxpPjxjb2RlPmlwPC9jb2RlPiA6IHN0cmluZyAtIFRoZSBJUCBhZGRyZXNzIGRldGVjdGVkLjwvbGk+DQoJPC91bD4NCiAgICA8L2xpPg0KDQogICAgPGxpPjxjb2RlPk1BTVM6OkFmdGVyTG9naW5BdXRoPC9jb2RlPg0KICAgICAgICA8cD5TZW50IGFmdGVyIGEgdXNlciBpcyBhdXRoZW50aWNhdGVkLCBidXQgYmVmb3JlIGFjdHVhbGx5IGJlaW5nIGxvZ2dlZCBpbi4gIFRoaXMgaG9vayBpcyB1c2VmdWwgdG8gYWxsb3cgb3RoZXIgbW9kdWxlcyB0byBkbyBhZGRpdGlvbmFsIHNlY3VyaXR5IGNoZWNrcy4gIEhhbmRsZXJzIGNhbiB0aHJvdyBhIDxjb2RlPk1BTVNMb2dpbkZhaWxlZEV4Y2VwdGlvbjwvY29kZT4gdG8gZ2VuZXJhdGUgYW4gZXJyb3IuPC9wPg0KICAgICAgICA8cD5QYXJhbWV0ZXJzIChhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L3A+DQoJPHVsPg0KCSAgIDxsaT48Y29kZT5pZDwvY29kZT4gOiBpbnQgLSBUaGUgaWQgZGV0ZWN0ZWQgZm9yIHRoaXMgdXNlcm5hbWUuPC9saT4NCgkgICA8bGk+PGNvZGU+dXNlcm5hbWU8L2NvZGU+IDogc3RyaW5nIC0gVGhlIHByb3ZpZGVkIHVzZXJuYW1lLjwvbGk+DQoJICAgPGxpPjxjb2RlPmdyb3VwczwvY29kZT4gOiBzdHJpbmcgLSBBIGxpc3Qgb2Ygb25seWdyb3VwcyAoc2VlIHRoZSBvbmx5Z3JvdXBzIHBhcmFtKTwvbGk+DQoJICAgPGxpPjxjb2RlPmlwPC9jb2RlPiA6IHN0cmluZyAtIFRoZSBJUCBhZGRyZXNzIGRldGVjdGVkLjwvbGk+DQoJPC91bD4NCiAgICA8L2xpPg0KDQogICAgPGxpPjxjb2RlPk1BTVM6Ok9uTG9naW5GYWlsZWQ8L2NvZGU+DQogICAgICAgIDxwPlNlbnQgd2hlbiBhIGxvZ2luIGF0dGVtcHQgaGFzIGZhaWxlZCBmb3Igc29tZSByZWFzb24uPC9wPg0KICAgICAgICA8cD5QYXJhbWV0ZXJzIChhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L3A+DQoJPHVsPg0KCSAgIDxsaT48Y29kZT51c2VybmFtZTwvY29kZT4gOiBzdHJpbmcgLSBUaGUgcHJvdmlkZWQgdXNlcm5hbWUuPC9saT4NCgkgICA8bGk+PGNvZGU+bXNnPC9jb2RlPiA6IHN0cmluZyAtIFRoZSBlcnJvciBtZXNzYWdlIGFzc29jaWF0ZWQgd2l0aHQgaGUgZmFpbGVkIGxvZ2luIGF0dGVtcHQuPC9saT4NCgk8L3VsPg0KICAgIDwvbGk+DQoNCiAgICA8bGk+PGNvZGU+TUFNUzo6T25FeHBpcmVVc2VyPC9jb2RlPg0KICAgICAgICA8cD5TZW50IHdoZW4gYSB1c2VyIHNlc3Npb24gaXMgZXhwaXJlZCwgYW5kIHRoZSB1c2VyIGlzIGxvZ2dlZCBvdXQuPC9wPg0KICAgICAgICA8cD5QYXJhbWV0ZXJzIChhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L3A+DQoJPHVsPg0KCSAgIDxsaT48Y29kZT5pZDwvY29kZT4gOiBpbnQgLSBUaGUgZXhwaXJlZCB1c2VyaWQuPC9saT4NCgkgICA8bGk+PGNvZGU+dXNlcm5hbWU8L2NvZGU+IDogc3RyaW5nIC0gVGhlIGV4cGlyZWQgdXNlcm5hbWUuPC9saT4NCgk8L3VsPg0KICAgIDwvbGk+DQoNCiAgICA8bGk+PGNvZGU+TUFNUzo6QmVmb3JlQW5vbmltaXplVXNlcjwvY29kZT4NCiAgICAgICAgPHA+U2VudCBpbW1lZGlhdGVseSBiZWZvcmUgYSB1c2VyIGlzIGFub25pbWl6ZWQuPC9wPg0KCTxwPlBhcmFtZXRlcnM6PC9wPg0KCTx1bD4NCgkgICAgPGxpPjxjb2RlPiR1aWQ8L2NvZGU+IDogaW50IC0gVGhlIHVzZXJpZCB0byBleHBpcmUuPC9saT4NCgk8L3VsPg0KICAgIDwvbGk+DQoNCiAgICA8bGk+PGNvZGU+TUFNUzo6QWZ0ZXJBbm9uaW1pemVVc2VyPC9jb2RlPg0KICAgICAgICA8cD5TZW50IGltbWVkaWF0ZWx5IGFmdGVyIGEgdXNlciBpcyBhbm9uaW1pemVkLjwvcD4NCgk8cD5QYXJhbWV0ZXJzOjwvcD4NCgk8dWw+DQoJICAgIDxsaT48Y29kZT4kdWlkPC9jb2RlPiA6IGludCAtIFRoZSB1c2VyaWQgdG8gZXhwaXJlLjwvbGk+DQoJPC91bD4NCiAgICA8L2xpPg0KDQogICAgPGxpPjxjb2RlPk1BTVM6OkFmZXJWZXJpZnk8L2NvZGU+DQogICAgICAgIDxwPlNlbnQgaW1tZWRpYXRlbHkgYWZ0ZXIgYSB1c2VyIGFjY291bnQgaXMgdmVyaWZpZWQuPC9wPg0KICAgICAgICA8cD5QYXJhbWV0ZXJzIChhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L3A+DQoJPHVsPg0KCSAgICA8bGk+PGNvZGU+dWlkPC9jb2RlPiA6IGludCAtIFRoZSB1c2VyaWQgdG8gZXhwaXJlLjwvbGk+DQoJPC91bD4NCiAgICA8L2xpPg0KDQogICAgPGxpPjxjb2RlPk1BTVM6OkNsZWFyVXNlckhpc3Rvcnk8L2NvZGU+DQogICAgICAgIDxwPlNlbnQgaW1tZWRpYXRlbHkgYmVmb3JlIHVzZXIgaGlzdG9yeSBpcyBjbGVhcmVkIGZyb20gdGhlIGRhdGFiYXNlLjwvbGk+DQogICAgICAgIDxwPlBhcmFtZXRlcnM6PC9wPg0KCTx1bD4NCgkgICAgPGxpPjxjb2RlPiRvbGRlcl90aGFuPC9jb2RlPiA6IGludCAtIEEgdW5peCB0aW1lc3RhbXAgY29udGFpbmluZyB0aGUgbWF4aW11bSB0aW1lIG9mIHJlY29yZHMgdG8ga2VlcC48L2xpPg0KCTwvdWw+DQogIDwvbGk+DQoNCiAgPGxpPjxjb2RlPk1BTVM6Ok9uTG9naW48L2NvZGU+DQogICAgICAgIDxwPlNlbnQgYWZ0ZXIgYSBzdWNjZXNzZnVsIGxvZ2luIG9wZXJhdGlvbi48L3A+DQogICAgICAgIDxwPlBhcmFtZXRlcnMgKGFzIGFuIGFzc29jaWF0aXZlIGFycmF5KTwvcD4NCgk8dWw+DQoJICAgPGxpPjxjb2RlPmlkPC9jb2RlPiA6IGludCAtIFRoZSB1c2VyaWQuPC9saT4NCgkgICA8bGk+PGNvZGU+dXNlcm5hbWU8L2NvZGU+IDogc3RyaW5nIC0gVGhlIHVzZXJuYW1lLjwvbGk+DQoJICAgPGxpPjxjb2RlPmlwPC9jb2RlPiA6IHN0cmluZyAtIFRoZSBJUCBhZGRyZXNzIGRldGVjdGVkLjwvbGk+DQoJPC91bD4NCiAgICA8L2xpPg0KDQogICAgPGxpPjxjb2RlPk1BTVM6Ok9uTG9nb3V0PC9jb2RlPg0KICAgICAgICA8cD5TZW50IGFmdGVyIGEgdXNlciBoYXMgYmVlbiBsb2dnZWQgb3V0IG9mIHRoZSBzeXN0ZW0uPC9wPg0KICAgICAgICA8cD5QYXJhbWV0ZXJzIChhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSk8L3A+DQoJPHVsPg0KCSAgIDxsaT48Y29kZT5pZDwvY29kZT4gOiBpbnQgLSBUaGUgdXNlcmlkLjwvbGk+DQoJPC91bD4NCiAgICA8L2xpPg0KPC91bD4=]]></data>
	</file>
	<file>
	  <filename>/templates/help_parameters_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPlBhcmFtZXRlcnM8L2gzPg0KPHVsPg0KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiBhY3Rpb24gPSA8L2I+ImRlZmF1bHQiDQogICAgPHA+QWN0aW9uczo8L3A+DQogICAgPHVsPg0KICAgICAgPGxpPjxiPjxlbT5kZWZhdWx0PC9lbT48L2I+IC0gVGhlIGRlZmF1bHQgYWN0aW9uLiAgSWYgdGhlIHVzZXIgaXMgbG9nZ2VkIGluLCB0aGUgbG9nb3V0Zm9ybSBhY3Rpb24gd2lsbCBiZSBkaXNwbGF5ZWQuICBJZiB0aGUgdXNlciBpcyBub3QgbG9nZ2VkIGluIHRoZSBsb2dpbiBhY3Rpb24gd2lsbCBiZSBjYWxsZWQuDQogICAgICA8bGk+PGI+PGVtPmxvZ2luPC9lbT48L2I+IC0gRGlzcGxheSB0aGUgbG9naW4gZm9ybS48L2xpPg0KICAgICAgPGxpPjxiPjxlbT5sb2dvdXRmb3JtPC9lbT48L2I+IC0gRGlzcGxheSBvdXRwdXQgYWJvdXQgeW91ciBjdXJyZW50IHVzZXJuYW1lLCBhbmQgYWN0aW9ucyB0byBjaGFuZ2UgeW91ciBzZXR0aW5ncywgb3IgbG9nb3V0LiAgSWYgdGhlIHVzZXIgaXMgbm90IGxvZ2dlZCBpbiwgdGhpcyBhY3Rpb24gZG9lcyBub3RoaW5nLjwvbGk+DQogICAgICA8bGk+PGI+PGVtPmNoYW5nZXNldHRpbmdzPC9lbT48L2I+IC0gRGlzcGxheSB0aGUgY2hhbmdlIHNldHRpbmdzIGZvcm0gZm9yIGxvZ2dlZCBpbiB1c2Vycy4gIElmIHRoZSB1c2VyIGlzIG5vdCBsb2dnZWQgaW4sIHRoaXMgYWN0aW9uIGRvZXMgbm90aGluZy48L2xpPg0KICAgICAgPGxpPjxiPjxlbT5mb3Jnb3RwdzwvZW0+PC9iPiAtIERpc3BsYXkgdGhlIGZvcmdvdCBwYXNzd29yZCBmb3JtLjwvbGk+DQogICAgICB7KiA8bGk+PGI+PGVtPnNpbGVudCAoZGVwcmVjYXRlZCk8L2VtPiAtIENyZWF0ZXMgYW5kIGFzc2lnbnMgc29tZSBzbWFydHkgdmFyaWFibGVzIGNvbnRhaW5pbmcgaW5mbyBhYm91dCB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyLjwvbGk+ICp9DQogICAgICA8bGk+PGI+PGVtPmxvc3R1c2VybmFtZTwvZW0+PC9iPiAtIERpc3BsYXkgdGhlIGxvc3R1c2VybmFtZSBmb3JtIChpZiB0aGUgc3lzdGVtIGlzIHByb3Blcmx5IHNldHVwIHRvIGhhbmRsZSBsb3N0IHVzZXJuYW1lIHJlcXVlc3RzLCBhbmQgdGhlIHVzZXIgaXMgbm90IGN1cnJlbnRseSBsb2dnZWQgaW4uPC9saT4NCiAgICAgIDxsaT48Yj48ZW0+cmVzZXRfc2Vzc2lvbjwvZW0+PC9iPiAtIFByb3ZpZGUgYSBqYXZhc2NyaXB0IGNvbnRyb2xsZWQgdGVtcGxhdGUgdG8gYWxsb3cgdGhlIG1hbnVhbCwgb3IgYXV0b21hdGljIHBpbmdpbmcgb2YgdGhlIHVzZXIgc2Vzc2lvbi4gIFRoaXMgdGVtcGxhdGUgY2FuIGJlIHVzZWQgdG8gcmVtaW5kIHRoZSB1c2VyIHRoYXQgaGlzIGxvZ2luIHNlc3Npb24gaXMgYWJvdXQgdG8gZXhwaXJlLCBhbmQgdG8gdHJpZ2dlciBpdHMgcmVzZXQuICBOb3JtYWxseSB0aGlzIG1ldGhvZCBpcyBub3QgcmVxdWlyZWQgYXMgYW55IHBhZ2UgdGhhdCBkaXNwbGF5cyB0aGUgRnJvbnRFbmRVc2VyIGNvbnRyb2xzIHdvdWxkIGhhbmRsZSB0aGlzLCBqdXN0IHJlcXVpcmluZyB0aGUgdXNlciB0byB2aWV3IGEgcGFnZSBvbiBhIHJlZ3VsYXIgYmFzaXMuICBIb3dldmVyLCBpZiB0aGVyZSBhcmUgcGFnZXMgd2l0aCBhbG90IG9mIGNvbnRlbnQgcmVxdWlyaW5nIGV4dGVuc2l2ZSByZWFkaW5nLCB0aGlzIG1heSBiZSBhIHVzZWZ1bCBzb2x1dGlvbi48L2xpPg0KICAgICAgPGxpPjxiPjxlbT52aWV3dXNlcjwvZW0+PC9iPiAtIERpc3BsYXkgYSByZXBvcnQgZm9yIGEgc2luZ2xlIHVzZXIsIHJlcXVpcmVzIHVzZSBvZiB0aGUgdWlkIHBhcmFtZXRlci48L2xpPg0KICAgIDwvdWw+DQogIDwvbGk+DQp7Kg0KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiBmb3JtID0gPC9iPiJuYW1lIg0KICA8cD5Gb3Jtczo8L3A+DQogIDxkaXYgY2xhc3MgPSA8L2I+Indhcm5pbmciPk5vdGU6IFRoZSBmb3JtIHBhcmFtZXRlciBpcyBkZXByZWNhdGVkLiAgUGxlYXNlIHVzIHRoZSBzdGFuZGFyZCBhY3Rpb24gcGFyYW1ldGVyIGZvciBhY2Nlc3NpbmcgZGlmZmVyZW50IE1BTVMgZm9ybXMgZGlyZWN0bHkuPC9kaXY+DQogIDx1bD4NCiAgIDxsaT48Yj48ZW0+bG9naW48L2VtPiAtIERpc3BsYXkgdGhlIGxvZ2luIGZvcm0gPGVtPihzZWUgYWN0aW9uID0gPC9iPmxvZ2luKTwvZW0+PC9saT4NCiAgIDxsaT48Yj48ZW0+bG9nb3V0PC9lbT4gLSBEaXNwbGF5IHRoZSBsb2dvdXQgZm9ybSA8ZW0+KHNlZSBhY3Rpb24gPSA8L2I+bG9nb3V0Zm9ybSk8L2VtPjwvbGk+DQogICA8bGk+PGI+PGVtPmNoYW5nZXNldHRpbmdzPC9lbT4gLSBEaXNwbGF5IHRoZSBjaGFuZ2Ugc2V0dGluZ3MgZm9ybSA8ZW0+KHNlZSBhY3Rpb24gPSA8L2I+Y2hhbmdlc2V0dGluZ3MpPC9lbT48L2xpPg0KICAgPGxpPjxiPjxlbT5mb3Jnb3RwdzwvZW0+IC0gRGlzcGxheSB0aGUgZm9yZ290IHBhc3N3b3JkIGZvcm0gPGVtPihzZWUgYWN0aW9uID0gPC9iPmZvcmdvdHB3KTwvZW0+PC9saT4NCiAgIDxsaT48Yj48ZW0+bG9zdHVzZXJuYW1lPC9lbT4gLSBEaXNwbGF5IHRoZSBsb3N0IHVzZXJuYW1lIGZvcm0uIDxlbT4oc2VlIGFjdGlvbiA9IDwvYj5sb3N0dXNlcm5hbWUpPC9lbT48L2xpPg0KICA8bGk+PGI+PGVtPnNpbGVudDwvZW0+ICA9IDwvYj4gIDxlbT4oc2VlIGFjdGlvbiA9IDwvYj5zaWxlbnQpPC9lbT4gRGlzcGxheSBub3RoaW5nLCBidXQgZXhwb3J0IHByb3BlcnRpZXMgYW5kIG90aGVyIHNtYXJ0eSB2YXJpYWJsZXMgZm9yIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIuICBJZiBubyB1c2VyIGlzIGxvZ2dlZCBpbiwgdGhlbiBubyB2YXJpYWJsZXMgYXJlIGV4cG9ydGVkLjwvbGk+DQogIDwvdWw+DQogIDwvbGk+DQogICp9DQoNCiAgPGxpPjxiPjxlbT4ob3B0aW9uYWwpPC9lbT4gcmV0dXJudG8gPSA8L2I+InBhZ2UiDQogICAgPHA+VXNlZCB3aXRoIHRoZSBsb2dpbiwgbG9nb3V0LCBhbmQgY2hhbmdlc2V0dGluZ3MgZm9ybXMsIHRoaXMgcGFyYW1ldGVyIGNvbnRhaW5zIHRoZSBwYWdlIGlkIG9yIGFsaWFzIG9mIGEgcGFnZSB0byByZWRpcmVjdCB0bywgd2hlbiB0aGUgZm9ybSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgY29tcGxldGVkPC9wPg0KICAgIDxwPk5vdGU6IFRoYXQgb24gbG9naW4gdGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiB1bmRlciBzb21lIGNpcmN1bXN0YW5jZXMuPC9wPg0KICA8L0xJPg0KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiBvbmx5X2dyb3VwcyA9IDwvYj4iZ3JvdXAxLCBncm91cDIsIGdyb3VwMyINCiAgICAgPHA+VXNlZCB3aXRoIHRoZSBsb2dpbiBmb3Jtcy4gIEJhc2ljYWxseSBvbmx5IGFsbG93cyB1c2VycyB0byBsb2dpbiBpZiB0aGV5IGJlbG9uZyB0byB0aGF0IHBhcnRpY3VsYXIgZ3JvdXAocykuPC9wPg0KICA8L2xpPg0KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiBsb3N0dW5fZ3JvdXAgPSA8L2I+Imdyb3VwIg0KICAgICA8cD5Vc2VkIHdpdGggdGhlIGxvc3R1c2VybmFtZSBmb3JtLCB0aGlzIGZlYXR1cmUgc3BlY2lmaWVzIHRoZSBmcm9udGVuZCB1c2VyIGdyb3VwIHRvIGFzc3VtZSB0aHQgdXNlcnMgYXJlIG1lbWJlcnMgb2YuPC9wPg0KICA8L2xpPg0KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiBub2NhcHRjaGEgPSA8L2I+IjEiDQogICAgPHA+VXNlZCB3aXRoIHRoZSBsb2dpbiBhbmQgdmVyaWZ5IGZvcm1zLCBUaGlzIHdpbGwgZGlzYWJsZSBjYXB0Y2hhIG9uIHRoZSBmb3JtLiBCeSBkZWZhdWx0LCBpZiB0aGUgQ2FwdGNoYSBtb2R1bGUgaXMgaW5zdGFsbGVkLCB2YWxpZGF0aW9uIG9mIGEgY2FwdGNoYSBpbWFnZSB3aWxsIGJlIHJlcXVpcmVkIGZvciBsb2dpbi4gIFRoaXMgaXMgYSBzZWN1cml0eSBtZWFzdXJlIGludGVudGVkIHRvIHByZXZlbnQgYnJ1dGUgZm9yY2UgYXR0YWNrcy48L3A+DQogIDwvbGk+DQogIDxsaT48Yj48ZW0+KG9wdGlvbmFsKTwvZW0+IHVpZCA9IDwvYj5udWxsDQogICAgPHA+VXNlZCB3aXRoIHRoZSB2aWV3dXNlciBhY3Rpb24uICBUaGlzIHBhcmFtZXRlciBpcyByZXF1aXJlZCB0byBzcGVjaWZ5IHdoaWNoIHVzZXIgdG8gdmlldyB0aGUgZGV0YWlscyBvZi48L3A+DQogIDwvbGk+DQogIDxsaT48Yj48ZW0+KG9wdGlvbmFsKTwvZW0+IGlubGluZSA9IDwvYj50cnVlDQogICAgPHA+VXNlZCB3aXRoIHRoZSBsb2dpbiBhY3Rpb24sIHRoaXMgcGFyYW1ldGVyIGluZGljYXRlcyB0aGF0IHRoZSByZXN1bHQgb2YgdGhlIGZvcm0gc3VibWlzc2lvbiBzaG91bGQgcmVwbGFjZSB0aGUgb3JpZ2luYWwgaW5wdXQgdGFnLjwvcD4NCiAgPC9saT4NCiAgPGxpPjxiPjxlbT4ob3B0aW9uYWwpPC9lbT4gbG9naW50ZW1wbGF0ZSA9IDwvYj5zdHJpbmcNCiAgICA8cD5UaGlzIHBhcmFtZXRlciBhbGxvd3Mgb3ZlcnJpZGluZyB0aGUgZGVmYXVsdCBsb2dpbiBmb3JtIHRlbXBsYXRlIHdpdGggdGhlIG5hbWUgb2YgYSBkaWZmZXJlbnQgb25lLjwvcD4NCiAgPC9saT4NCiAgPGxpPjxiPjxlbT4ob3B0aW9uYWwpPC9lbT4gbG9nb3V0dGVtcGxhdGUgPSA8L2I+c3RyaW5nDQogICAgPHA+VGhpcyBwYXJhbWV0ZXIgYWxsb3dzIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHQgbG9nb3V0IHRlbXBsYXRlIHdpdGggdGhlIG5hbWUgb2YgYSBkaWZmZXJlbnQgb25lLjwvcD4NCiAgPC9saT4NCiAgPGxpPjxiPjxlbT4ob3B0aW9uYWwpPC9lbT4gY2hhbmdlc2V0dGluZ3N0ZW1wbGF0ZSA9IDwvYj5zdHJpbmcNCiAgICA8cD5UaGlzIHBhcmFtZXRlciBhbGxvd3Mgb3ZlcnJpZGluZyB0aGUgZGVmYXVsdCBjaGFuZ2VzZXR0aW5ncyBmb3JtIHRlbXBsYXRlIHdpdGggdGhlIG5hbWUgb2YgYSBkaWZmZXJlbnQgb25lLjwvcD4NCiAgPC9saT4NCiAgPGxpPjxiPjxlbT4ob3B0aW9uYWwpPC9lbT4gZm9yZ290cHd0ZW1wbGF0ZSA9IDwvYj5zdHJpbmcNCiAgICA8cD5UaGlzIHBhcmFtZXRlciBhbGxvd3Mgb3ZlcnJpZGluZyB0aGUgZGVmYXVsdCBmb3Jnb3QgcGFzc3dvcmQgZm9ybSB0ZW1wbGF0ZSB3aXRoIHRoZSBuYW1lIG9mIGEgZGlmZmVyZW50IG9uZS48L3A+DQogIDwvbGk+DQogIDxsaT48Yj48ZW0+KG9wdGlvbmFsKTwvZW0+IGxvc3R1bnRlbXBsYXRlID0gPC9iPnN0cmluZw0KICAgIDxwPlRoaXMgcGFyYW1ldGVyIGFsbG93cyBvdmVycmlkaW5nIHRoZSBsb3N0IHVzZXJuYW1lIGZvcm0gdGVtcGxhdGUgd2l0aCB0aGUgbmFtZSBvZiBhIGRpZmZlcmVudCBvbmUuPC9wPg0KICA8L2xpPg0KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiB2aWV3dXNlcnRlbXBsYXRlID0gPC9iPnN0cmluZw0KICAgIDxwPlRoaXMgcGFyYW1ldGVyIGFsbG93cyBvdmVycmlkaW5nIHRoZSBkZWZhdWx0IHZpZXd1c2VyIHRlbXBsYXRlIHdpdGggdGhlIG5hbWUgb2YgYSBkaWZmZXJlbnQgb25lLjwvcD4NCiAgPC9saT4NCiAgPGxpPjxiPjxlbT4ob3B0aW9uYWwpPC9lbT4gYWZ0ZXJ2ZXJpZnl0ZW1wbGF0ZSA9IDwvYj5zdHJpbmcNCiAgICA8cD5UaGlzIHBhcmFtZXRlciBhbGxvd3Mgb3ZlcnJpZGluZyB0aGUgZGVmYXVsdCBhZnRlciB2ZXJpZmljYXRpb24gdGVtcGxhdGUgd2l0aCB0aGUgbmFtZSBvZiBhIGRpZmZlcmVudCBvbmUuPC9wPg0KICA8L2xpPg0KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiByZXNldHNlc3Npb250ZW1wbGF0ZSA9IDwvYj5zdHJpbmcNCiAgICA8cD5UaGlzIHBhcmFtZXRlciBhbGxvd3Mgb3ZlcnJpZGluZyB0aGUgZGVmYXVsdCByZXNldCBzZXNzaW9uIGZvcm0gdGVtcGxhdGUgd2l0aCB0aGUgbmFtZSBvZiBhIGRpZmZlcmVudCBvbmUuPC9wPg0KICA8L2xpPg0KICA8bGk+PGI+PGVtPihvcHRpb25hbCk8L2VtPiB2ZXJpZnlmb3JtdGVtcGxhdGUgPSA8L2I+c3RyaW5nDQogICAgPHA+VGhpcyBwYXJhbWV0ZXIgYWxsb3dzIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHQgdmVyaWZpY2F0aW9uIGZvcm0gdGVtcGxhdGUgd2l0aCB0aGUgbmFtZSBvZiBhIGRpZmZlcmVudCBvbmUuPC9wPg0KICA8L2xpPg0KPC91bD4NCjxwPjxzdHJvbmc+VGlwOjwvc3Ryb25nPiBZb3UgY2FuIHVzZSB0aGUgJiMxMjM7eHRfbW9kdWxlX2hpbnR9IHBsdWdpbiBmcm9tIENNU0V4dCwgb3IgdGhlICYjMTIzO2Ntc19tb2R1bGVfaGludH0gcGx1Z2luIGluIENNU01TIDIuMCB0byBzZXQgdGhlc2UgcGFyYW1ldGVycyBvbiBhIGdsb2JhbCwgcGVyLXBhZ2UtdGVtcGxhdGUsIG9yIHBlci1wYWdlIGJhc2lzIHdpdGhvdXQgaGF2aW5nIHRvIGFkanVzdCBldmVyeSBjYWxsLCBhbmQgd2hpbGUgc3RpbGwgbWFpbnRhaW5pbmcgcHJldHR5IFVSTCdzLjwvcD4NCg0KPGgzPlVzaW5nIERpZmZlcmVudCBUZW1wbGF0ZXMuPC9oMz4NCjxwPkl0IGlzIHBvc3NpYmxlIHRvIHNwZWNpZnkgZGlmZmVyZW50IHRlbXBsYXRlcyBmb3IgbWFueSBvZiB0aGUgTUFNUyBtb2R1bGUgdGVtcGxhdGVzLiAgSXQgaXMgYWxzbyBmbGV4aWJsZS4gIFlvdSBjYW4gdXNlIGdsb2JhbCBjb250ZW50IGJsb2Nrcywgb3IgZmlsZSBiYXNlZCB0ZW1wbGF0ZXMgb3INCiBhbnkgb3RoZXIgc21hcnR5IHJlc291cmNlIGFzIGEgdGVtcGxhdGUuPC9wPg0KPHVsPg0KICA8bGk+VGVtcGxhdGUgbmFtZXMgZW5kaW5nIHdpdGggLnRwbA0KICAgIDxwPklmIHRoZSBzcGVjaWZpZWQgdGVtcGxhdGUgbmFtZSBpcyBub3QgYSBzbWFydHkgcmVzb3VyY2UsIGJ1dCBlbmRzIHdpdGggdGhlIGV4dGVuc2lvbiA8Y29kZT4udHBsPC9jb2RlPiwgdGhlbiBNQU1TIChhY3R1YWxseSBDTVNFeHQpIHdpbGwgYXNzdW1lIHRoYXQgeW91IHdhbnQgYSBmaWxlIHRlbXBsYXRlIGZyb20gdGhlIG1vZHVsZSBkaXJlY3RvcnksIG9yIGZyb20gdGhlIG1vZHVsZV9jdXN0b20gZGlyZWN0b3J5IDxlbT4oc2VlIDxhIGhyZWY9Imh0dHA6Ly9kb2NzLmNtc21hZGVzaW1wbGUub3JnIj5odHRwOi8vZG9jcy5jbXNtYWRlc2ltcGxlLm9yZzwvYT4gZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIG1vZHVsZV9jdXN0b20gc3R1ZmYpPC9lbT4uDQogIDwvbGk+DQogIDxsaT5nbG9iYWxjb250ZW50OmdjYl9uYW1lDQogICAgPHA+U3BlY2lmeWluZyBhIHRlbXBsYXRlIGluIHRoaXMgc3ludGF4IGFsbG93cyB5b3UgdG8gdXNlIGEgZ2xvYmFsIGNvbnRlbnQgYmxvY2sgYXMgYXMgcmVwbGFjZW1lbnQgdGVtcGxhdGUuPC9wPg0KICA8L2xpPg0KICA8bGk+dGVtcGxhdGU6Z2NiX25hbWUNCiAgICA8cD5TcGVjaWZ5aW5nIGEgdGVtcGxhdGUgaW4gdGhpcyBzeW50YXggYWxsb3dzIHlvdSB0byB1c2UgYSBwYWdlIHRlbXBsYXRlIGFzIGFzIHJlcGxhY2VtZW50IHRlbXBsYXRlLjwvcD4NCiAgPC9saT4NCiAgPGxpPmNtc190ZW1wbGF0ZTpuYW1lDQogICAgPHA+U3BlY2lmeWluZyBhIHRlbXBsYXRlIGluIHRoaXMgc3ludGF4IGFsbG93cyB5b3UgdG8gdXNlIGEgdGVtcGxhdGUgZnJvbSB3aXRoaW4gRGVzaWduIE1hbmFnZXIgYXMgYXMgcmVwbGFjZW1lbnQgdGVtcGxhdGUuPC9wPg0KICA8L2xpPg0KICA8bGk+ZmlsZTpmaWxlbmFtZS50cGwNCiAgICA8cD5Vc2luZyB0aGlzIHN5bnRheCBhbGxvd3MgeW91IHRvIHVzZSBhIGZpbGUgYmFzZWQgdGVtcGxhdGUgZnJvbSB3aXRoaW4gdGhlIHNtYXJ0eSB0ZW1wbGF0ZXMgZGlyIDxlbT4odXN1YWxseSB0bXAvdGVtcGxhdGVzKTwvZW0+Lg0KICA8L2xpPg0KPC91bD4NCjxwPlRoZXNlIG1ldGhvZHMgY2FuIGJlIHVzZWQgd2l0aCB0aGUgbG9naW50ZW1wbGF0ZSwgbG9nb3V0dGVtcGxhdGUsIGNoYW5nZXNldHRpbmdzdGVtcGxhdGUsIGFuZCBmb3Jnb3Rwd3RlbXBsYXRlIHBhcmFtZXRlcnMuPC9wPg0KPHA+Tm90ZTogVGhlc2UgcGFyYW1ldGVycyBtYXkgbm90IGJlIHBhc3NlZCB0byB0aGUgdmFyaW91cyBmb3JtcyBmcm9tIHRoZSBwcmltYXJ5ICYjMTIzO01BTVN9IGNhbGwuICBJbnN0ZWFkLCB5b3Ugc2hvdWxkIHVzZSB0aGUgJiMxMjM7eHRfbW9kdWxlX2hpbnR9IHRhZyBvbiB0aGUgcGFnZSB3aGVyZSB0aGUgdmFyaW91cyBmb3JtcyBvciB2aWV3cyB3aWxsIGJlIGRpc3BsYXllZC4gaS5lOg0KPHByZT48Y29kZT4mIzEyMzt4dF9tb2R1bGVfaGludCBtb2R1bGUgPSBNQU1TIGNoYW5nZXNldHRpbmdzdGVtcGxhdGUgPSAnZ2xvYmFsX2NvbnRlbnQ6bXljaGFuZ2VzZXR0aW5ncyd9PC9jb2RlPjwvcHJlPg0KICAuPC9wPg==]]></data>
	</file>
	<file>
	  <filename>/templates/help_smarty_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPlNtYXJ0eSBQbHVnaW5zOjwvaDM+DQo8aDQ+JiMxMjM7bWFtc191c2VyX29wdGlvbnN9PC9oND4NCjxwPlRoaXMgZnVuY3Rpb24gcGx1Z2luIHByb3ZpZGVzIGEgY29udmVuaWVudCBtZXRob2QgdG8gZ2VuZXJhdGUgb3B0aW9ucyBmb3IgYSBzZWxlY3QgZWxlbWVudCB3aXRoIHVzZXJzIGZyb20gdGhlIE1BTVMgbW9kdWxlLiAgVGhpcyBpcyB1c2VmdWwgaW4gYWRtaW4gaW50ZXJmYWNlcy48L3A+DQo8aDU+VXNhZ2U6PC9oNT4NCjxwcmU+PGNvZGU+JiMxMjM7bWFtc191c2VyX29wdGlvbnMgW2dyb3VwPXN0cmluZ10gW25vdGRpc2FibGVkPWJvb2xdIFtub3RleHBpcmVkPWJvb2xdIFt1c2VfdXNlcmlkcz1ib29sXSBbc2VsZWN0ZWQgPSBtaXhlZF19PC9jb2RlPjwvcHJlPg0KPGg1PlBhcmFtZXRlcnM6PC9oNT4NCjx1bD4NCiAgICA8bGk+PGNvZGU+Z3JvdXA9c3RyaW5nPC9jb2RlPiAtIERpc3BsYXkgb25seSB1c2VycyB0aGF0IGFyZSBtZW1iZXJzIG9mIHRoZSBuYW1lZCBncm91cC48L2xpPg0KICAgIDxsaT48Y29kZT5ub3RleHBpcmVkPWJvb2w8L2NvZGU+IC0gRGlzcGxheSBvbmx5IHVzZXJzIHRoYXQgYXJlIG5vdCBleHBpcmVkLjwvbGk+DQogICAgPGxpPjxjb2RlPm5vdGRpc2FibGVkPWJvb2w8L2NvZGU+IC0gRGlzcGxheSBvbmx5IHVzZXJzIHRoYXQgYXJlciBub3QgZGlzYWJsZWQuPC9saT4NCiAgICA8bGk+PGNvZGU+dXNlX3VzZXJpZHM9Ym9vbDwvY29kZT4gLSAoZGVmYXVsdCBmYWxzZSkgVGhlIHZhbHVlcyBmb3IgZWFjaCBvcHRpb24gd2lsbCBiZSB0aGUgdXNlcmlkLCBub3QgdGhlIHVzZXJuYW1lLjwvbGk+DQogICAgPGxpPjxjb2RlPnNlbGVjdGVkID0gbWl4ZWQ8L2NvZGU+IC0gVGhlIHZhbHVlIG9mIHRoZSBvcHRpb24gdG8gc2VsZWN0LiAgSWYgdXNlX3VzZXJpZHMgaXMgZW5hYmxlZCwgdGhpcyBzaG91bGQgYmUgYW4gaW50ZWdlciB1aWQuICBPdGhlcndpc2UgdGhpcyBzaG91bGQgYmUgYSB1c2VybmFtZSBzdHJpbmcuPC9saT4NCjwvdWw+DQoNCjxocj4NCg0KPGg0PiYjMTIzO21hbXNfcHJvdGVjdH08L2g0Pg0KPHA+VGhlIDxzdHJvbmc+bWFtc19wcm90ZWN0PC9zdHJvbmc+IGJsb2NrIHBsdWdpbiBwcm92aWRlcyBhIGNvbnZlbmllbnQgbWV0aG9kIHRvIGhpZGUgc29tZSBjb250ZW50IGZyb20gdXNlcnMgb24gd2hhdCBpcyBub3JtYWxseSBhIHB1YmxpYyBwYWdlLjwvcD4NCg0KPGRpdiBjbGFzcz0id2FybmluZyI+PHA+PHN0cm9uZyBzdHlsZT0iY29sb3I6IHJlZDsiPldhcm5pbmc6PC9zdHJvbmc+PC9wPg0KICA8cD4gVGhpcyBwbHVnaW4gY2Fubm90IGJlIGNvbnNpZGVyZWQgMTAwJSBzZWN1cmUsIGFuZCBzaG91bGQgbm90IGF0IGFueSB0aW1lIGJlIHVzZWQgaW4gdGhlIHBhZ2UgdGVtcGxhdGUgdG8gcHJvdGVjdCB0aGUgZGVmYXVsdCAmIzEyMztjb250ZW50fSB0YWcuICBUaGVyZSBhcmUgd2F5cyB0byBhY2Nlc3MgdGhlIGRlZmF1bHQgY29udGVudCBwcm9wZXJ0eSBvZiBhIHBhZ2UsIG9yIHRvIGNhbGwgYSBtb2R1bGUgYWN0aW9uIHdpdGhvdXQgcHJvY2Vzc2luZyB0aGUgcGFnZSB0ZW1wbGF0ZS4gIElmIHlvdSBuZWVkIHRvIHByb3RlY3QgdGhlIGNvbnRlbnQgYW5kIGVuc3VyZSB0aGF0IG5vIHVuYXV0aG9yaXplZCB1c2VycyBhY2Nlc3MgdGhlIHBhZ2UsIHVzZSB0aGUgcHJvdGVjdGVkIHBhZ2UgY29udGVudCB0eXBlIHByb3ZpZGVkIGJ5IHRoaXMgbW9kdWxlLjwvcD4NCjwvZGl2Pg0KPGg1PlVzYWdlOjwvaDU+DQo8cHJlPjxjb2RlPiYjMTIzO21hbXNfcHJvdGVjdCBncm91cHM9Imdyb3VwMSxncm91cDIsZ3JvcDMifQ0KICAmbHQ7cCZndDtTbWFydHkgY29udGVudCB0aGF0IHNob3VsZCBvbmx5IGJlIHZpc2libGUgdG8gbWVtYmVycyBvZiB0aG9zZSBncm91cHMuJmx0Oy9wJmd0Ow0KJiMxMjM7L21hbXNfcHJvdGVjdH08L2NvZGU+PC9wcmU+DQo8ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+DQogIDxwPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gVGhlIHVzZXIgbXVzdCBiZSBhIG1lbWJlciBvZiBhdCBsZWFzdCBvbmUgb2YgdGhlIHNwZWNpZmllZCBncm91cHMuICBUaGUgZ3JvdXAgbmFtZXMgYXJlIGNhc2Ugc2Vuc2l0aXZlLjwvcD4NCjwvZGl2Pg0KPGhyPg0KDQo8aDQ+VGhlIG1hbXNfc21hcnR5IGNsYXNzPC9oND4NCjxwPlRoZSA8c3Ryb25nPm1hbXNfc21hcnR5PC9zdHJvbmc+IGNsYXNzIHByb3ZpZGVzIHNvbWUgZnVuY3Rpb25zIHRvIGludGVyYWN0IHdpdGggdGhlIGRhdGFiYXNlIGFuZCBwdWxsIGFuZCB0ZXN0IGZvciB1c2VyIGluZm9ybWF0aW9uLjwvcD4NCjxwPlNvbWUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgTUFNUyBtb2R1bGUgZGF0YWJhc2UgaXMgcG9zc2libGUgd2l0aCBzbWFydHkgYW5kIHRoZSBtYW1zX3NtYXJ0eSBjbGFzcy48L3A+DQoNCjxoNT5GdW5jdGlvbnM6PC9oNT4NCjx1bD4NCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfY3VycmVudF91c2VyaWQoKX08L2NvZGU+PC9zdHJvbmc+DQo8cD5UaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGludGVnZXIgdXNlciBpZCBpZiB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyIChpZiBhbnkpLjwvcD4NCjxwPkV4YW1wbGU6PC9wPg0KPHByZT48Y29kZT4mIzEyMzskdWlkID0gbWFtc19zbWFydHk6OmdldF9jdXJyZW50X3VzZXJpZCgpfTwvY29kZT48L3ByZT4NCjwvbGk+DQoNCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfY3VycmVudF91c2VybmFtZSgpfTwvY29kZT48L3N0cm9uZz4NCjxwPlRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgdXNlciBuYW1lIGlmIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIgKGlmIGFueSkuPC9wPg0KPHA+RXhhbXBsZTo8L3A+DQo8cHJlPjxjb2RlPiYjMTIzOyR1c2VybmFtZSA9IG1hbXNfc21hcnR5OjpnZXRfY3VycmVudF91c2VybmFtZSgpfTwvY29kZT48L3ByZT4NCjwvbGk+DQoNCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfdXNlcmlkKCR1c2VybmFtZSl9PC9jb2RlPjwvc3Ryb25nPg0KPHA+VGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byByZXR1cm4gdGhlIGludGVnZXIgdXNlciBpZCBnaXZlbiBhIHVzZXJuYW1lLjwvcD4NCjxwPkV4YW1wbGU6PC9wPg0KPHByZT48Y29kZT4mIzEyMzskdWlkID0gbWFtc19zbWFydHk6OmdldF91c2VyaWQoJHVzZXJuYW1lKX08L2NvZGU+PC9wcmU+DQo8L2xpPg0KDQo8bGk+PHN0cm9uZz48Y29kZT4mIzEyMzttYW1zX3NtYXJ0eTo6Z2V0X3VzZXJuYW1lKFskdWlkXSl9PC9jb2RlPjwvc3Ryb25nPg0KPHA+VGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byByZXR1cm4gdGhlIHN0cmluZyB1c2VybmFtZSBnaXZlbiBhbiBpbnRlZ2VyIHVpZC4gIElmIG5vIHVpZCBpcyBzcGVjaWZpZWQsIHRoZSBjdXJyZW50IGxvZ2dlZCBpbiB1aWQgaXMgYXNzdW1lZC48L3A+DQo8cD5FeGFtcGxlOjwvcD4NCjxwcmU+PGNvZGU+JiMxMjM7bWFtc19zbWFydHk6OmdldF91c2VybmFtZSgkdGhlX3VpZCl9PC9jb2RlPjwvcHJlPg0KPC9saT4NCg0KPGxpPjxzdHJvbmc+PGNvZGU+JiMxMjM7bWFtc19zbWFydHk6OmdldF9lbWFpbChbJHVpZF0pfTwvY29kZT48L3N0cm9uZz4NCjxwPlRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gcmV0dXJuIGFuIGVtYWlsIGFkZGVyZXNzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gaW50ZWdlciB1aWQuICBJZiBubyB1aWQgaXMgc3BlY2lmaWVkLCB0aGUgY3VycmVudCBsb2dnZWQgaW4gdWlkIGlzIGFzc3VtZWQuPC9wPg0KPHA+RXhhbXBsZTo8L3A+DQo8cHJlPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfZW1haWwoJHRoZV91aWQpfTwvY29kZT48L3ByZT4NCjwvbGk+DQoNCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfdXNlcmluZm8oWyR1aWRdKX08L2NvZGU+PC9zdHJvbmc+DQo8cD5UaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIHJldHVybiB0aGUgdXNlciBpbmZvcm1hdGlvbiBmb3IgYSBzaW5nbGUgdXNlci4gIElmIG5vIHVpZCBpcyBzcGVjaWZpZWQsIHRoZSBjdXJyZW50IGxvZ2dlZCBpbiB1aWQgaXMgYXNzdW1lZC48L3A+DQo8cD5FeGFtcGxlOjwvcD4NCjxwcmU+PGNvZGU+JiMxMjM7JHVpbmZvID0gbWFtc19zbWFydHk6OmdldF91c2VyaW5mbygkc29tZXRoaW5nLnVzZXJpZCl9PGJyIC8+JiMxMjM7JHVpbmZvfEBwcmludF9yfTwvY29kZT48L3ByZT4NCjwvbGk+DQoNCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfdXNlcnNfYnlfZ3JvdXBuYW1lKCRncm91cG5hbWVbLCRmb3JfbGlzdF0pfTwvY29kZT48L3N0cm9uZz4NCjxwPlRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gZXh0cmFjdCBhbiBhcnJheSBvZiB1c2VybmFtZXMgYW5kIHVzZXJpZHMgZm9yIGFsbCB1c2VycyB0aGF0IGJlbG9uZyB0byB0aGUgc3BlY2lmaWVkIGdyb3VwLjwvcD4NCjxwPlRoZSBncm91cG5hbWUgcGFyYW1ldGVyIG11c3QgYmUgYSBzaW5nbGUgc3RyaW5nIGdyb3VwbmFtZS48L3A+DQo8cD5UaGUgZm9yX2xpc3QgcGFyYW1ldGVyIGlzIGEgYm9vbGVhbiB0aGF0IGluZGljYXRlcyB0aGF0IHRoZSBvdXRwdXQgc2hvdWxkIGJlIHN1aXRhYmxlIGZvciB1c2UgaW4gYSBzZWxlY3QgbGlzdC48L3A+DQo8cD5FeGFtcGxlOjwvcD4NCjxwcmU+PGNvZGU+JiMxMjM7JG15bWVtYmVycyA9IG1hbXNfc21hcnR5OjpnZXRfdXNlcnNfYnlfZ3JvdXBuYW1lKCdtZW1iZXJzJyl9PGJyIC8+JiMxMjM7JG15bWVtYmVyc3xAcHJpbnRfcn08L2NvZGU+PC9wcmU+DQo8L2xpPg0KDQo8bGk+PHN0cm9uZz48Y29kZT4mIzEyMzttYW1zX3NtYXJ0eTo6Z2V0X2dyb3VwX21lbWJlcmxpc3QoJGdpZCl9PC9jb2RlPjwvc3Ryb25nPg0KICA8cD5UaGlzIGZ1bmN0aW9uIHJldHVybnMgYW4gYXJyYXkgb2YgdWlkIGFuZCB1c2VybmFtZXMgZm9yIGFsbCB1c2VycyB0aGF0IGFyZSBtZW1iZXJzIG9mIHRoZSBzcGVjaWZpZWQgZ3JvdXAgKGJ5IGdyb3VwIGlkKS48L3A+DQogIDxwPkV4YW1wbGU6PC9wPg0KICA8cHJlPjxjb2RlPiYjMTIzO2h0bWxfb3B0aW9ucyBvcHRpb25zID0gbWFtc19zbWFydHk6OmdldF9ncm91cF9tZW1iZXJsaXN0KCRnaWQpIHNlbGVjdGVkPSR1aWR9PC9jb2RlPjwvcHJlPg0KPC9saT4NCg0KPGxpPjxzdHJvbmc+PGNvZGU+JiMxMjM7bWFtc19zbWFydHk6OmdldF91c2VyX2V4cGlyeShbJHVpZF0pfTwvY29kZT48L3N0cm9uZz4NCjxwPlRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgdW5peCB0aW1lc3RhbXAgdGhhdCB0aGUgc3BlY2lmaWVkIHVpZCBhY2NvdW50IGV4cGlyZXMuICBUaGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gZmFsc2UgaWYgdGhlIHVpZCBjYW5ub3QgYmUgZm91bmQgb3Igc29tZSBvdGhlciBlcnJvciBvY2N1cnJlZC48L3A+DQo8cD5FeGFtcGxlOjwvcD4NCjxwcmU+PGNvZGU+JiMxMjM7JGV4cGlyeSA9IG1hbXNfc21hcnR5OjpnZXRfdXNlcl9leHBpcnkoMjUpfTxiciAvPiYjMTIzOyRleHBpcnl8Y21zX2RhdGVfZm9ybWF0fTwvY29kZT48L3ByZT4NCjwvbGk+DQoNCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5Ojp1c2VyX2V4cGlyZWQoJHVpZCl9PC9jb2RlPjwvc3Ryb25nPg0KPHA+VGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdldGhlciB0aGUgc3BlY2lmaWVkIHVzZXIgYWNjb3VudCBoYXMgZXhwaXJlZC4gIFRoZSBtZXRob2Qgd2lsbCBhbHNvIHJldHVybiBmYWxzZSBpZiB0aGUgdWlkIGNhbm5vdCBiZSBmb3VuZCBvciBzb21lIG90aGVyIGVycm9yIG9jY3VycmVkLjwvcD4NCjxwPkV4YW1wbGU6PC9wPg0KPHByZT48Y29kZT4mIzEyMzskZXhwaXJlZCA9IG1hbXNfc21hcnR5Ojp1c2VyX2V4cGlyZWQoMjUpfTxiciAvPiYjMTIzO2lmICRleHBpcmVkfVVJRCAyNSBjYW4gbm8gbG9uZ2VyIGxvZ2luIHRvIHRoZSBzeXN0ZW0mIzEyMzsvaWZ9PC9jb2RlPjwvcHJlPg0KPC9saT4NCg0KPGxpPjxzdHJvbmc+PGNvZGU+JiMxMjM7bWFtc19zbWFydHk6OmdldF91c2VyX3Byb3BlcnRpZXMoJHVpZCl9PC9jb2RlPjwvc3Ryb25nPg0KPHA+VGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBleHRyYWN0IGEgbGlzdCBvZiBwcm9wZXJ0aWVzIGZvciB0aGUgc3BlY2lmaWVkIHVzZXIuICBJZiB0aGUgdWlkIGlzIG5vdCBzcGVjaWZpZWQgdGhlIGN1cnJlbnQgbG9nZ2VkIGluIHVpZCBpcyB1c2VkLjwvcD4NCjxwPkV4YW1wbGU6PC9wPg0KPHByZT48Y29kZT4mIzEyMzskdXNlcnByb3BzID0gbWFtc19zbWFydHk6OmdldF91c2VyX3Byb3BlcnRpZXMoNSl9PGJyIC8+JiMxMjM7JHVzZXJwcm9wc3xAcHJpbnRfcn08L2NvZGU+PC9wcmU+DQo8L2xpPg0KDQo8bGk+PHN0cm9uZz48Y29kZT4mIzEyMzttYW1zX3NtYXJ0eTo6Z2V0X3VzZXJfcHJvcGVydHkoJHByb3BlcnR5LFskdWlkXSl9PC9jb2RlPjwvc3Ryb25nPg0KICA8cD5UaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHZhbHVlIG9mIGEgc2luZ2xlIHByb3BlcnR5IGZvciB0aGUgc3BlY2lmaWVkIHVpZC4gIElmIHRoZSB1aWQgcGFyYW1ldGVyIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBjdXJyZW50IGxvZ2dlZCBpbiB1aWQgaXMgdXNlZC48L3A+DQogIDxwPkV4YW1wbGU6PC9wPg0KICA8cHJlPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfdXNlcl9wcm9wZXJ0eSgnZnVsbG5hbWUnLDUpfTwvY29kZT48L3ByZT4NCjwvbGk+DQoNCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfZHJvcGRvd25fdGV4dCgkcHJvcG5hbWUsJHByb3B2YWx1ZSl9PC9jb2RlPjwvc3Ryb25nPg0KICA8cD5UaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHRleHQgc3BlY2lmaWVkIGZvciBhIHBhcnRpY3VsYXIgb3B0aW9uIHZhbHVlIGZvciBhIHNwZWNpZmllZCBkcm9wZG93biBwcm9wZXJ0eS48L3A+DQogIDxwPkV4YW1wbGU6PC9wPg0KICA8cHJlPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpnZXRfZHJvcGRvd25fdGV4dCgnYWdlX3JhbmdlJywkb25lcHJvcHZhbHVlKX08L2NvZGU+PC9wcmU+DQo8L2xpPg0KDQo8bGk+PHN0cm9uZz48Y29kZT4mIzEyMzttYW1zX3NtYXJ0eTo6Z2V0X211bHRpc2VsZWN0X3RleHQoJHByb3BuYW1lLCRwcm9wdmFsdWUpfTwvY29kZT48L3N0cm9uZz4NCiAgPHA+VGhpcyBmdW5jdGlvbiByZXR1cm5zIGFuIGFycmF5IG9mIG9wdGlvbiB0ZXh0cyBjb3JyZXNwb25kaW5nIHRvIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2Ygb3B0aW9uIHZhbHVlcy48L3A+DQogIDxwPkV4YW1wbGU6PC9wPg0KICA8cHJlPjxjb2RlPiYjMTIzOyRmYXZvcml0ZV9mb29kcyA9IG1hbXNfc21hcnR5OjpnZXRfbXVsdGlzZWxlY3RfdGV4dCgnZmF2b3JpdGVfZm9vZHMnLCRvbmVwcm9wdmFsdWUpfTxiciAvPiYjMTIzOyRmYXZvcml0ZV9mb29kc3xAcHJpbnRfcn08L2NvZGU+PC9wcmU+DQo8L2xpPg0KDQo8bGk+PHN0cm9uZz48Y29kZT4mIzEyMzttYW1zX3NtYXJ0eTo6Z2V0X2dyb3VwX2xpc3QoKX08L2NvZGU+PC9zdHJvbmc+DQogIDxwPlRoaXMgZnVuY3Rpb24gcmV0dXJucyBhbiBhcnJheSBvZiBNQU1TIGdyb3VwcyB0aGF0IGlzIHN1aXRhYmxlIGZvciB1c2UgaW4gYSBkcm9wZG93bi48L3A+DQogIDxwPkV4YW1wbGU6PC9wPg0KPHByZT48Y29kZT4mbHQ7c2VsZWN0IGlkPSJncm91cCImZ3Q7JiMxMjM7aHRtbF9vcHRpb25zIG9wdGlvbnMgPSBtYW1zX3NtYXJ0eTo6Z2V0X2dyb3VwX2xpc3QoKX0mbHQ7L3NlbGVjdCZndDs8L2NvZGU+PC9wcmU+DQo8L2xpPg0KDQo8bGk+PHN0cm9uZz48Y29kZT4mIzEyMzttYW1zX3NtYXJ0eTo6Z2V0X3VzZXJfZ3JvdXBzKFskdWlkXSl9PC9jb2RlPjwvc3Ryb25nPg0KICA8cD5UaGlzIGZ1bmN0aW9uIHJldHVybnMgYW4gYXJyYXkgb2YgTUFNUyBncm91cHMgdGhhdCB0aGlzIHVzZXIgYmVsb25ncyB0byAoaWYgYW55KS4gIFRoZSBvdXRwdXQgaXMgYW4gYXJyYXkgc3VpdGFibGUgZm9yIHVzZSBpbiBhIHNlbGVjdCBsaXN0ICh0aGUga2V5IGlzIHRoZSBncm91cGlkLCB2YWx1ZSBpcyB0aGUgZ3JvdXAgbmFtZSkuPC9wPg0KICA8cD5FeGFtcGxlOjwvcD4NCjxwcmU+PGNvZGU+JiMxMjM7JG15Z3JvdXBzID0gbWFtc19zbWFydHk6OmdldF91c2VyX2dyb3VwcygpfQ0KJiMxMjM7JG15Z3JvdXBzfEBwcmludF9yfTwvY29kZT48L3ByZT4NCjwvbGk+DQoNCjxsaT48c3Ryb25nPjxjb2RlPiYjMTIzO21hbXNfc21hcnR5OjpwcmVsb2FkX3VzZXJzKCR1aWRfbGlzdFssJGRlZXAgPSBmYWxzZV0pfTwvY29kZT48L3N0cm9uZz4NCiAgPHA+VGhpcyBmdW5jdGlvbiB3aWxsIHByZWxvYWQgaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgdXNlcnMuICBJdCBkb2VzIG5vdCByZXR1cm4gYW55IG91dHB1dC48L3A+DQogIDxwPkV4YW1wbGU6PC9wPg0KPHByZT48Y29kZT4mIzEyMzskbGlzdCA9IFsgNSwgMTAsIDExLCAxMywgMTggXX0NCiYjMTIzO21hbXNfc21hcnR5OjpwcmVsb2FkX3VzZXJzKCRsaXN0KX08L2NvZGU+PC9wcmU+DQo8L2xpPg0KDQo8bGk+PHN0cm9uZz48Y29kZT4mIzEyMzttYW1zX3NtYXJ0eTo6aXNfdXNlcl9tZW1iZXJvZigkZ3JvdXBzWywkdWlkXSl9PC9jb2RlPjwvc3Ryb25nPg0KICA8cD5UaGlzIGZ1bmN0aW9uIHJldHVybnMgYSBib29sZWFuIGlmIHRoZSB1c2VyIGlzIGEgbWVtYmVyIG9mIG9uZSB0aGUgc3BlY2lmaWVkIGdyb3Vwcy48L3A+DQogIDxwPlRoZSBncm91cHMgcGFyYW1ldGVyIGNhbiBiZSBhIGNvbW1hIGRlbGltaXRlZCBzdHJpbmcgb2YgZ3JvdXAgbmFtZXMsIG9yIGFuIGFycmF5IG9mIGdyb3VwIG5hbWVzLjwvcD4NCiAgPHA+SWYgdGhlIHVpZCBwYXJhbWV0ZXIgaXMgbm90IHNwZWNpZmllZCwgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlcmlkIGlzIHVzZWQuPC9wPg0KICA8cD5FeGFtcGxlOjwvcD4NCjxwcmU+PGNvZGU+JiMxMjM7aWYgbWFtc19zbWFydHk6OmlzX3VzZXJfbWVtYmVyb2YoJ1N0YWZmLE1hbmFnZXJzJyl9SGVsbG8gQ3VzdG9tZXImIzEyMzsvaWZ9PC9jb2RlPjwvcHJlPg0KPC91bD4=]]></data>
	</file>
	<file>
	  <filename>/templates/help_using_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPkhvdyBkbyBJIHVzZSBpdDo8L2gzPg0KPHA+QWZ0ZXIgaW5zdGFsbGF0aW9uIHlvdSBjYW4gdGhlIGFjY2VzcyBhZG1pbiBwYW5lbCB0byB0aGUgTUFNUyBtb2R1bGUgdW5kZXIgdGhlICZxdW90O1VzZXJzICZhbXA7IEdyb3VwcyZxdW90OyBtZW51LjwvcD4NCjxwPllvdSBuZWVkIHRvIGRlZmluZSBhdCBsZWFzdCBvbmUgcHJvcGVydHkuICBQcm9wZXJ0aWVzIGFyZSBlc3NlbnRpYWxseSBmaWVsZCBkZWZpbml0aW9ucywgaGVyZSB5b3Ugc3BlY2lmeSB0aGUgdHlwZSBvZiBpbmZvcm1hdGlvbiB5b3Ugd2FudCB0byBnYXRoZXIsIGFuZCBsaW1pdHMuIGkuZTogIE5hbWUsIEFnZSwgQ2l0eSwgU3RhdGUsIENvdW50cnksIGV0Yy48L3A+DQo8cD48Yj5Ob3RlOjwvYj4gWW91IGRvIG5vdCBuZWVkIHRvIGRlZmluZSBwcm9wZXJ0aWVzIGZvciB1c2VybmFtZSAob3IgZW1haWwgYWRkcmVzcykgYW5kIHBhc3N3b3JkLCB0aGVzZSB3aWxsIGJlIHByb3ZpZGVkIGZvciB5b3UuICBUaG91Z2ggeW91IGNhbiBwcm92aWRlIHByb3BlcnRpZXMgZm9yIGFkZGl0aW9uYWwgZW1haWwgYWRkcmVzc2VzLjwvcD4NCjxwPjxiPk5vdGU6PC9iPiBOZXcgaW5zdGFsbGF0aW9ucyBvZiB0aGUgTUFNUyBtb2R1bGUgc3BlY2lmeSB0aGF0IHRoZSB1c2VycyBlbWFpbCBhZGRyZXNzIGlzIHRoZWlyIHVzZXJuYW1lICh0aGlzIG9wdGlvbiBjYW4gYmUgY2hhbmdlZCBpbiB0aGUgbW9kdWxlcyBhZG1pbiBwYW5lbCkuICBTbyBpZiB1c2luZyB0aGlzIG9wdGlvbiB5b3Ugd2lsbCBub3QgbmVlZCB0byBjcmVhdGUgYW4gZW1haWwgYWRkcmVzcyBwcm9wZXJ0eS48L3A+DQo8cD5OZXh0IHlvdSBtdXN0IGNyZWF0ZSBvbmUgb3IgbW9yZSB1c2VyIGdyb3Vwcy4gIFdoZW4geW91IGNyZWF0ZSBhIGdyb3VwLCB5b3UgYXJlIGFza2VkIGZvciBhIGdyb3VwIG5hbWUsIGEgZGVzY3JpcHRpb24gYW5kIHRvIGFzc29jaWF0ZSBvbmUgb3IgbW9yZSBwcm9wZXJ0aWVzIHdpdGggdGhhdCBncm91cCwgc3BlY2lmeSB0aGUgcHJvcGVydGllcyBzb3J0IG9yZGVyLCBhbmQgd2hldGhlciBpdCBpcyBhbiBvcHRpb25hbCwgcmVxdWlyZWQsIG9yIGhpZGRlbiBmaWVsZC4gIEF0IGxlYXN0IG9uZSBwcm9wZXJ0eSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCBhIGdyb3VwLjwvcD4NCjxwPjxiPk5vdGU6PC9iPiBCZWZvcmUgcHJvY2VlZGluZywgeW91IHNob3VsZCBlbnN1cmUgdGhhdCB0aGUgcHJlZmVyZW5jZXMgYXJlIHNldCBjb3JyZWN0bHkuICBUYWtlIHNvbWUgdGltZSBoZXJlLCB0aGVyZSBhcmUgbnVtZXJvdXMgb3B0aW9ucy48L3A+DQo8cD5UaGlyZGx5IHlvdSBzaG91bGQgY3JlYXRlIHNvbWUgdXNlcnMuICBBZGRpbmcgdXNlcnMgaXMgYSB0d28gc3RlcCBwcm9jZXNzLiAgV2hlbiBjcmVhdGluZyBhIHVzZXIgeW91IGFyZSBhc2tlZCBmb3IgdGhlIHVzZXJuYW1lL2VtYWlsIGFuZCBwYXNzd29yZCwgYW5kIGFuIGV4cGlyeSBkYXRlIGZvciB0aGF0IHVzZXIuICBZb3UgdGhlbiBtdXN0IHNlbGVjdCB0aGUgZ3JvdXBzIHRoYXQgdGhhdCB1c2VyIGlzIGEgbWVtYmVyIG9mLCBhbmQgY2xpY2sgJnF1b3Q7TmV4dCZxdW90OzwvcD4NCjxwPjxlbT5Ob3RlOiA8L2VtPlRoaXMgaXMgYSBsYWJvdXIgaW50ZW5zaXZlIGFuZCBib3JpbmcgcHJvY2VzcywgaXQgaXMgZWFzaWVyIHRvIGxldCB1c2VycyByZWdpc3RlciB0aGVtc2VsdmVzIDxlbT4oU2VlIHRoZSBTZWxmUmVnaXN0cmF0aW9uIE1vZHVsZSk8L2VtPiwgYW5kIHRoZW4geW91IGNhbiBlZGl0IHRoZWlyIGdyb3VwIGluZm9ybWF0aW9uLiAgYnV0IGZvciB0ZXN0aW5nIHB1cnBvc2VzLCBwbGVhc2UgY3JlYXRlIGF0IGxlYXN0IG9uZSB1c2VyPC9wPg0KPHA+TGFzdGx5LCBhZnRlciB0aGUgc3lzdGVtIGhhcyBkZXRlcm1pbmVkIGFsbCBvZiB0aGUgaW5mb3JtYXRpb24gZmllbGRzIHRvIGJlIHByZXNlbnRlZCBmb3IgdGhhdCB1c2VyLCB5b3UgYXJlIHByZXNlbnRlZCB3aXRoIGEgZm9ybSBhc2tpbmcgZm9yIGFsbCBvZiB0aGUgcmVxdWlyZWQgdXNlciBpbmZvcm1hdGlvbi4gIENvbXBsZXRlIHRoaXMgZm9ybSB0byBjb21wbGV0ZSB0aGUgdXNlciBhZGRpdGlvbjwvcD4NCjxwPllvdSBhcmUgbm93IHJlYWR5IHRvIGFkZCB0aGUgZnJvbnQgZW5kIGZ1bmN0aW9uYWxpdHkgdG8geW91ciBzaXRlLiAgVGhpcyBpcyBhcyBzaW1wbGUgYXMgYWRkaW5nIHRoZSAmIzEyMztNQU1TfSB0YWcgdG8geW91ciBwYWdlIG9yIHRlbXBsYXRlLiAgWW91IG11c3QgZW5zdXJlIHRoYXQgdGhpcyBwYWdlIGlzIHNldCB0byAmcXVvdDtub3QgY2FjaGUmcXVvdDsgd2hlbiBlZGl0aW5nIHRoZSBjb250ZW50IHBhZ2Uocykgd2hlcmUgdGhlIGxvZ2luIGZvcm0gaXMgZGlzcGxheWVkLiAgSWYgeW91IGNhbGwgdGhlICYjMTIzO01BTVN9IHRhZyBmcm9tIHdpdGhpbiBhIHBhZ2UgdGVtcGxhdGUsIHlvdSBtdXN0IGRpc2FibGUgY2FjaGluZyBvbiBhbGwgcGFnZXMgdGhhdCB1c2UgdGhhdCB0ZW1wbGF0ZS48L3A+DQo8cD5BZGRpbmcgcHJvdGVjdGVkIGNvbnRlbnQgdG8geW91ciBDTVNNUyBzaXRlIGlzIGFzIHNpbXBsZSBhcyBjcmVhdGluZyBuZXcgcGFnZXMgb2YgdHlwZSAmcXVvdDtQcm90ZWN0ZWQgQ29udGVudCZxdW90OyBhbmQgc2VsZWN0aW5nIHdoaWNoIHVzZXIgZ3JvdXBzIChvciBhbGwpIHRoYXQgYXJlIGFsbG93ZWQgdG8gdmlldyB0aGUgcGFnZS48L3A+DQo8cD48ZW0+T3B0aW9uYWxseTwvZW0+IENyZWF0ZSBhbm90aGVyIG5ldyBjb250ZW50IHBhZ2Ugb2YgdHlwZSAnRXJyb3IgSGFuZGxlcicgYW5kIHNldCB0aGUgZXJyb3IgaGFuZGxlciB0byA0MDMgZXJyb3IuICBJbiB0aGUgY29udGVudCBhcmVhIG9mIHRoYXQgcGFnZSwgeW91IHNob3VsZCBjYWxsICYjMTIzO01BTVN9IHRvIGRpc3BsYXkgYSBsb2dpbiBmb3JtIG9uIHRoZSA0MDMgZXJyb3IgcGFnZS48L3A+DQoNCjxoMz5TdHJvbmcgUGFzc3dvcmRzOjwvaDM+DQo8cD5UaGlzIG1vZHVsZSwgd2hlbiBmcmVzaGx5IGluc3RhbGxlZCAobm90IGFuIHVwZ3JhZGUpIGVuYWJsZXMgc3Ryb25nIHBhc3N3b3Jkcy4gIEF0IGEgbWluaW11bSBvbmUgdXBwZXIgY2FzZSBjaGFyYWN0ZXIgYW5kIG9uZSBkaWdpdCBhcmUgcmVxdWlyZWQgdG8gYmUgaW4gZXZlcnkgcGFzc3dvcmQuICBUaGUgc2l0ZSBhZG1pbmlzdHJhdG9yIGNhbiBhbHNvIHNwZWNpZnkgb3RoZXIgb3B0aW9uYWwgY2hhcmFjdGVycywgb25lIG9mIHdoaWNoIG11c3QgYmUgcHJlc2VudCBpbiBhbGwgcGFzc3dvcmRzLjwvcD4=]]></data>
	</file>
	<file>
	  <filename>/templates/importgroup.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfZmlsZW5hbWV9PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9maWxlbmFtZX08L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfbmV3bmFtZX08L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X25ld25hbWV9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdH0mbmJzcDt7JGNhbmNlbH08L3A+CiAgPC9kaXY+CnskZW5kZm9ybX0K]]></data>
	</file>
	<file>
	  <filename>/templates/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/templates/orig_changesettings.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBjaGFuZ2Ugc2V0dGluZ3MgdGVtcGxhdGUgLS0+CjxkaXYgaWQ9Im1hbXNfY2hhbmdlc2V0dGluZ3Nmb3JtIj4KPGg0PnskbW9kLT5MYW5nKCd1c2VyX3NldHRpbmdzJyl9PC9oND4KCntpZiBpc3NldCgkbWVzc2FnZSkgJiYgJG1lc3NhZ2UgIT0gJyd9CiAge2lmIGlzc2V0KCRlcnJvcikgJiYgJGVycm9yICE9ICcnfQogICAgPHAgY2xhc3M9ImFsZXJ0IGFsZXJ0LWVycm9yIj57JG1lc3NhZ2V9PC9wPgogIHtlbHNlfQogICAgPHAgY2xhc3M9ImFsZXJ0IGFsZXJ0LWluZm8iPnskbWVzc2FnZX08L3A+CiAgey9pZn0Key9pZn0KCnskc3RhcnRmb3JtfXt4dF9mb3JtX2NzcmZ9CiAge2lmICRjb250cm9sY291bnQgPiAwfQogIHtmb3JlYWNoICRjb250cm9scyBhcyAka2V5PT4kZmllbGR9CiAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICA8bGFiZWwgZm9yPSJ7JGZpZWxkLT5pbnB1dF9pZH0iIGNsYXNzPSJjb2wtc20tMyB0ZXh0LXJpZ2h0IiBzdHlsZT0iY29sb3I6IHskZmllbGQtPmNvbG9yfGRlZmF1bHQ6J2luaGVyaXQnfSI+eyRmaWVsZC0+bWFya2VyfGRlZmF1bHQ6Jyd9IHskZmllbGQtPnByb21wdH06PC9sYWJlbD4KICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTkiPgogICAgICAgIHskZmllbGQtPmhpZGRlbnxkZWZhdWx0OicnfQogICAgICAgIHtpZiBpc3NldCgkZmllbGQtPmhpZGRlbil9eyRmaWVsZC0+aGlkZGVufXsvaWZ9CgoJeyogYnVpbGQgdGhlIGZpZWxkIGl0c2VsZiAqfQoJe2lmICRmaWVsZC0+dHlwZSA9PSAnMCd9IHsqIHRleHQgKn0KCSAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJ7JGZpZWxkLT5pbnB1dF9pZH0iIGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InskZmllbGQtPmlucHV0X25hbWV9IiBzaXplPSJ7JGZpZWxkLT5sZW5ndGh9IiBtYXhsZW5ndGg9InskZmllbGQtPm1heGxlbmd0aH0iIHZhbHVlPSJ7JGZpZWxkLT52YWx1ZX0iIHtpZiAkZmllbGQtPnJlYWRvbmx5fXJlYWRvbmx5ey9pZn0vPgoJe2Vsc2VpZiAkZmllbGQtPnR5cGUgPT0gJ3Bhc3N3b3JkJ30geyogdGV4dCAqfQoJICA8aW5wdXQgdHlwZT0icGFzc3dvcmQiIGlkPSJ7JGZpZWxkLT5pbnB1dF9pZH0iIGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InskZmllbGQtPmlucHV0X25hbWV9IiBzaXplPSJ7JGZpZWxkLT5sZW5ndGh9IiBtYXhsZW5ndGg9InskZmllbGQtPm1heGxlbmd0aH0iIHZhbHVlPSJ7JGZpZWxkLT52YWx1ZX0iIHtpZiAkZmllbGQtPnJlYWRvbmx5fXJlYWRvbmx5ey9pZn0vPgoJe2Vsc2VpZiAkZmllbGQtPnR5cGUgPT0gMn0geyogZW1haWwgKn0KCSAgPGlucHV0IHR5cGU9ImVtYWlsIiBpZD0ieyRmaWVsZC0+aW5wdXRfaWR9IiBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJ7JGZpZWxkLT5pbnB1dF9uYW1lfSIgc2l6ZT0ieyRmaWVsZC0+bGVuZ3RofSIgbWF4bGVuZ3RoPSJ7JGZpZWxkLT5tYXhsZW5ndGh9IiB2YWx1ZT0ieyRmaWVsZC0+dmFsdWV9IiB7aWYgJGZpZWxkLT5yZWFkb25seX1yZWFkb25seXsvaWZ9Lz4KCXtlbHNlaWYgJGZpZWxkLT50eXBlID09IDN9IHsqIHRleHRhcmVhICp9CiAgICAgICAgICB7eHRfdGV4dGFyZWEgaWQ9JGZpZWxkLT5pbnB1dF9pZCB3eXNpd3lnPSRmaWVsZC0+d3lzaXd5ZyBuYW1lPSRmaWVsZC0+aW5wdXRfbmFtZSBjb250ZW50PSRmaWVsZC0+dmFsdWUgY2xhc3M9ImZvcm0tY29udHJvbCJ9Cgl7ZWxzZWlmICRmaWVsZC0+dHlwZSA9PSAxfSB7KiBjaGVja2JveCAqfQoJICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JGZpZWxkLT5pbnB1dF9uYW1lfSIgdmFsdWU9IjAiLz4KCSAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0ieyRmaWVsZC0+aW5wdXRfaWR9IiBjbGFzcz0iY2hlY2tib3giIG5hbWU9InskZmllbGQtPmlucHV0X25hbWV9IiB2YWx1ZT0iMSIge2lmICRmaWVsZC0+dmFsdWV9Y2hlY2tlZHsvaWZ9Lz4KCXtlbHNlaWYgJGZpZWxkLT50eXBlID09IDR9IHsqIGRyb3Bkb3duICp9CgkgICA8c2VsZWN0IGlkPSJ7JGZpZWxkLT5pbnB1dF9pZH0iIGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InskZmllbGQtPmlucHV0X25hbWV9IiB7aWYgJGZpZWxkLT5yZWFkb25seX1yZWFkb25seXsvaWZ9PgoJICAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRmaWVsZC0+b3B0aW9ucyBzZWxlY3RlZD0kZmllbGQtPnZhbHVlfQoJICAgPC9zZWxlY3Q+Cgl7ZWxzZWlmICRmaWVsZC0+dHlwZSA9PSA1fSB7KiBtdWx0aXNlbGVjdCAqfQoJICAgPHNlbGVjdCBpZD0ieyRmaWVsZC0+aW5wdXRfaWR9IiBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJ7JGZpZWxkLT5pbnB1dF9uYW1lfVtdIiB7aWYgJGZpZWxkLT5yZWFkb25seX1yZWFkb25seXsvaWZ9IG11bHRpcGxlPgoJICAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRmaWVsZC0+b3B0aW9ucyBzZWxlY3RlZD0kZmllbGQtPnNlbGVjdGVkfQoJICAgPC9zZWxlY3Q+Cgl7ZWxzZWlmICRmaWVsZC0+dHlwZSA9PSA3fSB7KiByYWRpbyBncm91cCAqfQoJICAge2ZvcmVhY2ggJGZpZWxkLT5vcHRpb25zIGFzICRrZXkgPT4gJHZhbH0KCSAgICAgIDxsYWJlbD48aW5wdXQgdHlwZT0icmFkaW8iIGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InskZmllbGQtPmlucHV0X25hbWV9IiB2YWx1ZT0ieyRrZXl9IiB7aWYgJGtleT09JGZpZWxkLT52YWx1ZX1jaGVja2VkPSJjaGVja2VkInsvaWZ9PiB7JHZhbH08L2xhYmVsPgoJICAgey9mb3JlYWNofQoJe2Vsc2VpZiAkZmllbGQtPnR5cGUgPT0gNn0geyogaW1hZ2UgKn0KCSAgIHtpZiBpc3NldCgkZmllbGQtPmltYWdlX3VybCkgJiYgJGZpZWxkLT5pbWFnZV91cmx9PGltZyBzcmM9InskZmllbGQtPmltYWdlX3VybH0iIGFsdD0ieyRmaWVsZC0+aW1hZ2VfdXJsfSIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiLz57L2lmfQoJICAge2lmIGlzc2V0KCRmaWVsZC0+cHJvbXB0MikgJiYgJGZpZWxkLT5wcm9tcHQyfTxsYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJjaGVja2JveCIgbmFtZT0ieyRmaWVsZC0+aW5wdXRfbmFtZTJ9IiB2YWx1ZT0iY2xlYXIiLz4geyRmaWVsZC0+cHJvbXB0Mn08L2xhYmVsPnsvaWZ9CgkgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JGZpZWxkLT5pbnB1dF9uYW1lfSIgdmFsdWU9InskZmllbGQtPnZhbHVlfSIvPgogCSAgIDxpbnB1dCB0eXBlPSJmaWxlIiBpZD0ieyRmaWVsZC0+aW5wdXRfaWR9IiBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJ7JGZpZWxkLT5pbnB1dF9uYW1lfSIge2lmICRmaWVsZC0+cmVhZG9ubHl9cmVhZG9ubHl7L2lmfS8+Cgl7ZWxzZWlmICRmaWVsZC0+dHlwZSA9PSA4fSB7KiBkYXRlICp9CgkgICB7JHN5PSRmaWVsZC0+c3RhcnR5ZWFyfGRlZmF1bHQ6Jy01J30KCSAgIHskZXk9JGZpZWxkLT5zdGFydHllYXJ8ZGVmYXVsdDonKzEwJ30KCSAgIHtodG1sX3NlbGVjdF9kYXRlIHByZWZpeD0kZmllbGQtPmlucHV0X25hbWUgc3RhcnRfeWVhcj0kc3kgZW5kX3llYXI9JGV5IHRpbWU9JGZpZWxkLT52YWx1ZX0KCXsvaWZ9CiAgICAgICAgeyRmaWVsZC0+YWRkdGV4dHxkZWZhdWx0OicnfQogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIHsvZm9yZWFjaH0KICB7L2lmfQoKICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgPGRpdiBjbGFzcz0iY29sLXNtLTMiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iY29sLXNtLTkiPgogICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biBidG5fYWN0aXZlIiBuYW1lPSJ7JGFjdGlvbmlkfXN1Ym1pdCI+eyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfTwvYnV0dG9uPgogICAgPC9kaXY+CiAgPC9kaXY+CnskaGlkZGVufGRlZmF1bHQ6Jyd9eyRlbmRmb3JtfQo8L2Rpdj4KPCEtLSBjaGFuZ2Ugc2V0dGluZ3MgdGVtcGxhdGUgLS0+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/orig_force_newpw_form.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogc3lzdGVtIGRlZmF1bHQgZm9yY2UgbmV3IHBhc3N3b3JkIGZvcm0gdGVtcGxhdGUgKn0KPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtaW5mbyI+eyRtb2QtPkxhbmcoJ21zZ19mb3JjZV9uZXdwdycpfTwvZGl2PgoKe2lmIGlzc2V0KCRlcnJvcil9CjxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LWRhbmdlciI+eyRlcnJvcn08L2Rpdj4Key9pZn0KCnskZm9ybXN0YXJ0fQo8ZGl2IGNsYXNzPSJyb3ciPgogIDxkaXYgY2xhc3M9ImNvbC14cy0zIHRleHQtcmlnaHQiPiogeyRtb2QtPkxhbmcoJ3Bhc3N3b3JkJyl9OjwvZGl2PgogIDxkaXYgY2xhc3M9ImNvbC14cy05Ij4KICAgIDxpbnB1dCB0eXBlPSJwYXNzd29yZCIgbmFtZT0ieyRhY3Rpb25pZH1tYW1zX3Bhc3N3b3JkIiB2YWx1ZT0iIiByZXF1aXJlZC8+CiAgPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJyb3ciPgogIDxkaXYgY2xhc3M9ImNvbC14cy0zIHRleHQtcmlnaHQiPiogeyRtb2QtPkxhbmcoJ3JlcGVhdHBhc3N3b3JkJyl9OjwvZGl2PgogIDxkaXYgY2xhc3M9ImNvbC14cy05Ij4KICAgIDxpbnB1dCB0eXBlPSJwYXNzd29yZCIgbmFtZT0ieyRhY3Rpb25pZH1tYW1zX3JlcGVhdHBhc3N3b3JkIiB2YWx1ZT0iIiByZXF1aXJlZC8+CiAgPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJyb3ciPgogIDxkaXYgY2xhc3M9ImNvbC14cy0zIj4mbmJzcDs8L2Rpdj4KICA8ZGl2IGNsYXNzPSJjb2wteHMtOSI+CiAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfW1hbXNfc3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfSIvPgogIDwvZGl2Pgo8L2Rpdj4KeyRmb3JtZW5kfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/orig_forgotpassword1.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogZm9yZ290IHBhc3N3b3JkIHRlbXBsYXRlICp9CjxoND57JG1vZC0+TGFuZygndGl0bGVfZm9yZ290cHcnKX08L2g0Pgp7aWYgIWVtcHR5KCRtZXNzYWdlKSB9CiAge2lmICFlbXB0eSgkZXJyb3IpIH0KICAgIDxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LWRhbmdlciI+eyRtZXNzYWdlfTwvZGl2PgogIHtlbHNlfQogICAgPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtaW5mbyI+eyRtZXNzYWdlfTwvZGl2PgogIHsvaWZ9CntlbHNlfQogIDxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LWluZm8iPnskbW9kLT5MYW5nKCdsb3N0cHdfbWVzc2FnZScpfTwvZGl2Pgp7L2lmfQoKe2lmICFpc3NldCgkZm9yZ290cHdkb25lKX0KICB7aWYgaXNzZXQoJHN0YXJ0Zm9ybSl9CiAgICB7JHN0YXJ0Zm9ybX17eHRfZm9ybV9jc3JmfQogICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTIgdGV4dC1yaWdodCI+CiAgICAgICAge2lmICR1c2VybmFtZV9pc19lbWFpbH0KICAgICAgICAgIHskbW9kLT5MYW5nKCdwcm9tcHRfZW1haWwnKX06CiAgICAgICAge2Vsc2V9CiAgICAgICAgICB7JG1vZC0+TGFuZygncHJvbXB0X3VzZXJuYW1lJyl9OgogICAgICAgIHsvaWZ9CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tMTAiPgogICAgICAgIDxpbnB1dCBuYW1lPSJ7JGFjdGlvbmlkfW1hbXNfdXNlcm5hbWUiIHR5cGU9IntpZiAkdXNlcm5hbWVfaXNfZW1haWx9ZW1haWx7ZWxzZX10ZXh0ey9pZn0iIHNpemU9InskdW5mbGRsZW59IiBtYXhsZW5ndGg9InskbWF4X3VuZmxkbGVufSIgdmFsdWU9InskdXNlcm5hbWV9IiByZXF1aXJlZC8+ICoKICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIHtpZiBpc3NldCgkY2FwdGNoYSl9CiAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tMiB0ZXh0LXJpZ2h0Ij57JGNhcHRjaGFfdGl0bGV9OjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjb2wtc20tMTAiPnskY2FwdGNoYX0KICAgICAgICB7aWYgaXNzZXQoJGlucHV0X2NhcHRjaGEpfTxkaXYgY2xhc3M9InJvdyI+eyRpbnB1dF9jYXB0Y2hhfTwvcD57L2lmfQogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgey9pZn0KICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS0xMCBjb2wtc20tb2Zmc2V0LTIiPgogICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9bWFtc19zdWJtaXQiIHZhbHVlPSJ7JG1vZC0+TGFuZygnc3VibWl0Jyl9Ii8+CiAgICAgICAgPGlucHV0IGlkPSJtYW1zX2NhbmNlbCIgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfW1hbXNfY2FuY2VsIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2NhbmNlbCcpfSIgZm9ybW5vdmFsaWRhdGUvPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgeyRlbmRmb3JtfQogIHsvaWZ9CnsvaWZ9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/orig_forgotpassword2.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogdmVyaWZ5IGVtYWlsIHRlbXBsYXRlIC0tIGZvcm1lcmx5IGZvZ290IHBhc3N3b3JkIGVtYWlsIHRlbXBsYXRlICp9CjxoMz57JHRpdGxlfTwvaDM+CjxkaXY+eyRtZXNzYWdlfTwvZGl2Pgo8aDQ+eyRwcm9tcHRfY29kZX06IHskZGF0YV9jb2RlfTwvaDQ+CjxwPnskcHJvbXB0X2xpbmt9OiA8YSBocmVmPSJ7JGRhdGFfdXJsfSI+eyRkYXRhX3VybH08L2E+PC9wPgp7L3N0cmlwfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/orig_forgotpassword3.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogZm9yZ290IHBhc3N3b3JkIHZlcmlmaWNhdGlvbiB0ZW1wbGF0ZSAqfQo8aDQ+eyRtb2QtPkxhbmcoJ3ZlcmlmeV9pZGVudGl0eScpfTwvaDQ+CntpZiAhZW1wdHkoJG1lc3NhZ2UpfQogIHtpZiAhZW1wdHkoJGVycm9yKSB9CiAgICA8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1kYW5nZXIiPnskbWVzc2FnZX08L2Rpdj4KICB7ZWxzZX0KICAgIDxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LWluZm8iPnskbWVzc2FnZX08L2Rpdj4KICB7L2lmfQp7L2lmfQoKe2lmIGlzc2V0KCRzdGFydGZvcm0pfQogIHskc3RhcnRmb3JtfXt4dF9mb3JtX2NzcmZ9CiAgPGRpdiBjbGFzcz0icm93Ij4KICAgIDxkaXYgY2xhc3M9ImNvbC1zbS0zIHRleHQtcmlnaHQiPnskbW9kLT5MYW5nKCdwcm9tcHRfdXNlcm5hbWUnKX06PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJjb2wtc20tOSI+CiAgICAgIDxpbnB1dCB0eXBlPSJ7aWYgJHVzZXJuYW1lX2lzX2VtYWlsfWVtYWlse2Vsc2V9dGV4dHsvaWZ9IiBuYW1lPSJ7JGFjdGlvbmlkfW1hbXNfdXNlcm5hbWUiIHNpemU9InskdW5mbGRsZW59IiBtYXhsZW5ndGg9InskbWF4X3VuZmxkbGVufSIgdmFsdWU9InskdXNlcm5hbWV9IiBkaXNhYmxlZD0iZGlzYWJsZWQiLz4KICAgIDwvZGl2PgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InJvdyI+CiAgICA8ZGl2IGNsYXNzPSJjb2wtc20tMyB0ZXh0LXJpZ2h0Ij57JG1vZC0+TGFuZygncHJvbXB0X2NvZGUnKX06PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJjb2wtc20tOSI+CiAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfW1hbXNfY29kZSIgdmFsdWU9InskY29kZX0iIHNpemU9IjQwIiBtYXhsZW5ndGg9IjQwIiByZXF1aXJlZCAvPiAqCiAgICA8L2Rpdj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgPGRpdiBjbGFzcz0iY29sLXNtLTMgdGV4dC1yaWdodCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9wYXNzd29yZCcpfTo8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImNvbC1zbS05Ij4KICAgICAgPGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJ7JGFjdGlvbmlkfW1hbXNfcGFzc3dvcmQxIiB2YWx1ZT0ieyRwYXNzd29yZDF9IiBzaXplPSJ7JHB3ZmxkbGVufSIgbWF4bGVuZ3RoPSJ7JG1heF9wd2ZsZGxlbn0iIHJlcXVpcmVkLz4gKgogICAgPC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icm93Ij4KICAgIDxkaXYgY2xhc3M9ImNvbC1zbS0zIHRleHQtcmlnaHQiPnskbW9kLT5MYW5nKCdyZXBlYXRwYXNzd29yZCcpfTo8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImNvbC1zbS05Ij4KICAgICAgPGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJ7JGFjdGlvbmlkfW1hbXNfcGFzc3dvcmQyIiB2YWx1ZT0ieyRwYXNzd29yZDJ9IiBzaXplPSJ7JHB3ZmxkbGVufSIgbWF4bGVuZ3RoPSJ7JG1heF9wd2ZsZGxlbn0iIHJlcXVpcmVkLz4gKgogICAgPC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icm93Ij4KICAgIDxkaXYgY2xhc3M9ImNvbC1zbS0zIHRleHQtcmlnaHQiPiZuYnNwOzwvZGl2PgogICAgPGRpdiBjbGFzcz0iY29sLXNtLTkiPgogICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfW1hbXNfc3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfSIvPgogICAgPC9kaXY+CiAgPC9kaXY+CnskZW5kZm9ybX0Key9pZn0K]]></data>
	</file>
	<file>
	  <filename>/templates/orig_loginform.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogbG9naW4gZm9ybSB0ZW1wbGF0ZSAqfQp7KiB0aGlzIGlzIGEgc2FtcGxlIHRlbXBsYXRlLCBmZWVsIGZyZWUgdG8gY3VzdG9taXplIGl0ICp9CntpZiBpc3NldCgkYWx0X2xvZ2luZm9ybSl9CiAgPGRpdiBjbGFzcz0icm93IiBpZD0iYWx0bG9naW4iPnskYWx0X2xvZ2luZm9ybX08L2Rpdj48YnIvPgp7L2lmfQoKPGZpZWxkc2V0IGlkPSJsb2dpbmZvcm0iPgogIDxsZWdlbmQ+eyRNQU1TLT5MYW5nKCdwcm9tcHRfbm9ybWFsbG9naW4nKX06PC9sZWdlbmQ+CiAgeyRzdGFydGZvcm19e3h0X2Zvcm1fY3NyZn0KCiAgeyoKICAgKiBhIHNpbXBsZSBob25leXBvdCBjYXB0Y2hhLi4uLmlmIHRoaXMgZmllbGQgaGFzIGEgdmFsdWUgYWZ0ZXIgc3VibWl0IGFuIGVycm9yIHdpbGwgYmUgdGhyb3duCiAgICogZGVsZXRpbmcgdGhpcyBmaWVsZCB3aWxsIHNpbXBseSBkaXNhYmxlIHRoZSBob25leXBvdC4KICAgKiBpdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGUgZmllbGQgYmUgaGlkZGVuIHdpdGggQ1NTIHJhdGhlciB0aGFuIHVzaW5nIGEgaGlkZGVuIGlucHV0IGZpZWxkLgogICAqfQogIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfW1hbXNfX2RhdGEiIHZhbHVlPSIiIHN0eWxlPSJkaXNwbGF5OiBub25lOyIvPgoKICB7aWYgJGVycm9yfTxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LWRhbmdlciI+eyRlcnJvcn08L2Rpdj57L2lmfQoKICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgPHAgY2xhc3M9ImNvbC1tZC00IHRleHQtcmlnaHQiPjxsYWJlbCBmb3I9Im1hbXNfdXNlcm5hbWUiPip7JHByb21wdF91c2VybmFtZX06PC9sYWJlbD48L3A+CiAgICA8cCBjbGFzcz0iY29sLW1kLTgiPgogICAgICA8aW5wdXQgdHlwZT0ie2lmICR1c2VybmFtZV9pc19lbWFpbH1lbWFpbHtlbHNlfXRleHR7L2lmfSIgaWQ9Im1hbXNfdXNlcm5hbWUiIG5hbWU9InskZmxkbmFtZV91c2VybmFtZX0iIHZhbHVlPSJ7JHVzZXJuYW1lfSIgc2l6ZT0ieyR1c2VybmFtZV9zaXplfSIgbWF4bGVuZ3RoPSJ7JHVzZXJuYW1lX21heGxlbmd0aH0iIHtpZiAhJHVzZXJuYW1lX2lzX2VtYWlsfWF1dG9jb3JyZWN0PSJvZmYiIGF1dG9jYXBpdGFsaXplPSJvZmYiey9pZn0gcmVxdWlyZWQvPgogICAgPC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgPHAgY2xhc3M9ImNvbC1tZC00IHRleHQtcmlnaHQiPjxsYWJlbCBmb3I9Im1hbXNfcGFzc3dvcmQiPip7JHByb21wdF9wYXNzd29yZH06PC9sYWJlbD48L3A+CiAgICA8cCBjbGFzcz0iY29sLW1kLTgiPgogICAgICA8aW5wdXQgdHlwZT0icGFzc3dvcmQiIGlkPSJtYW1zX3Bhc3N3b3JkIiBuYW1lPSJ7JGZsZG5hbWVfcGFzc3dvcmR9IiB2YWx1ZT0ieyRwYXNzd29yZH0iIHNpemU9InskcGFzc3dvcmRfc2l6ZX0iIG1heGxlbmd0aD0ieyRwYXNzd29yZF9tYXhsZW5ndGh9IiByZXF1aXJlZC8+CiAgICA8L3A+CiAgPC9kaXY+CgogIHtpZiBpc3NldCgkY2FwdGNoYSl9CiAgPGRpdiBjbGFzcz0icm93Ij4KICAgIDxwIGNsYXNzPSJjb2wtbWQtNCB0ZXh0LXJpZ2h0Ij57JGNhcHRjaGFfdGl0bGV9PC9wPgogICAgPGRpdiBjbGFzcz0iY29sLW1kLTgiPnskY2FwdGNoYX0KICAgICAge2lmICRuZWVkX2NhcHRjaGFfaW5wdXR9CiAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9bWFtc19pbnB1dF9jYXB0Y2hhIiBzaXplPSIxMCIvPgogICAgICA8L2Rpdj4KICAgICAgey9pZn0KICAgIDwvZGl2PgogIDwvZGl2PgogIHsvaWZ9CgogIHtpZiBpc3NldCgkcHJvbXB0X3JlbWVtYmVybWUpfQogIDxkaXYgY2xhc3M9InJvdyI+CiAgICA8cCBjbGFzcz0iY29sLW1kLTQiPjwvcD4KICAgIDxwIGNsYXNzPSJjb2wtbWQtOCI+CiAgICAgIDxsYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InskYWN0aW9uaWR9bWFtc19yZW1lbWJlcm1lIiB2YWx1ZT0iMSIge2lmICRyZW1lbWJlcm1lPT0xfWNoZWNrZWR7L2lmfS8+IHskcHJvbXB0X3JlbWVtYmVybWV9PC9sYWJlbD4KICAgIDwvcD4KICA8L2Rpdj4KICB7L2lmfQoKICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgPHAgY2xhc3M9ImNvbC1tZC00Ij48L3A+CiAgICA8cCBjbGFzcz0iY29sLW1kLTgiPgogICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWFjdGl2ZSIgbmFtZT0ieyRhY3Rpb25pZH1tYW1zX3N1Ym1pdCI+eyRNQU1TLT5MYW5nKCdsb2dpbicpfTwvYnV0dG9uPgogICAgPC9wPgogIDwvZGl2PgoKICB7aWYgaXNzZXQoJHVybF9sb3N0dW4pIHx8IGlzc2V0KCR1cmxfZm9yZ290KX0KICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgPHAgY2xhc3M9ImNvbC1tZC00Ij48L3A+CiAgICA8cCBjbGFzcz0iY29sLXNtLTgiPgogICAgICB7aWYgaXNzZXQoJHVybF9mb3Jnb3QpfQogICAgICAgIDxhIGhyZWY9InskdXJsX2ZvcmdvdH0iIHRpdGxlPSJ7JE1BTVMtPkxhbmcoJ2luZm9fZm9yZ290cHcnKX0iPnskTUFNUy0+TGFuZygnZm9yZ290cHcnKX08L2E+CiAgICAgIHsvaWZ9CiAgICAgIHtpZiBpc3NldCgkdXJsX2xvc3R1bil9CiAgICAgICAgfCA8YSBocmVmPSJ7JHVybF9sb3N0dW59IiB0aXRsZT0ieyRNQU1TLT5MYW5nKCdpbmZvX2xvc3R1bicpfSI+eyRNQU1TLT5MYW5nKCdsb3N0dXNlcm5hbWUnKX08L2E+CiAgICAgIHsvaWZ9CiAgICA8L3A+CiAgPC9kaXY+CiAgey9pZn0KICB7JGVuZGZvcm19CjwvZmllbGRzZXQ+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/orig_logoutform.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogbG9nb3V0IGZvcm0gdGVtcGxhdGUgKn0Ke2lmIGlzc2V0KCRhbHRfbG9nb3V0Zm9ybSl9eyRhbHRfbG9nb3V0Zm9ybX17L2lmfQp7aWYgaXNzZXQoJG1lc3NhZ2UpfTxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LWluZm8iPnskbWVzc2FnZX08L2Rpdj57L2lmfQo8cD57JHByb21wdF9sb2dnZWRpbn0mbmJzcDt7JHVzZXJuYW1lfTwvcD4KPHA+PGEgaHJlZj0ieyR1cmxfY2hhbmdlc2V0dGluZ3N9IiB0aXRsZT0ieyRtb2QtPkxhbmcoJ2luZm9fY2hhbmdlc2V0dGluZ3MnKX0iPnskbW9kLT5MYW5nKCdwcm9tcHRfY2hhbmdlc2V0dGluZ3MnKX08L2E+PC9wPgp7aWYgaXNzZXQoJHVybF9sb2dvdXQpfQo8cD48YSBocmVmPSJ7JHVybF9sb2dvdXR9IiB0aXRsZT0ieyRtb2QtPkxhbmcoJ2luZm9fbG9nb3V0Jyl9Ij57JG1vZC0+TGFuZygnbG9nb3V0Jyl9PC9hPjwvcD4Key9pZn0K]]></data>
	</file>
	<file>
	  <filename>/templates/orig_lostunform_confirm_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogbG9zdCB1c2VybmFtZSBjb25maXJtIHRlbXBsYXRlIGZvcm0gKn0KPGgzPnskcHJlbXNnfTwvaDM+CjxwPnskcHJvbXB0X3lvdXJ1c2VybmFtZWlzfTogPHN0cm9uZz57JHVzZXJuYW1lfTwvc3Ryb25nPi48L3A+CjxwPnskcG9zdG1zZ308L3A+]]></data>
	</file>
	<file>
	  <filename>/templates/orig_lostunform_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogbG9zdCB1c2VybmFtZSBjb25maXJtIHRlbXBsYXRlIGZvcm0gKn0KPGg0PnskbW9kLT5MYW5nKCd0aXRsZV9sb3N0dXNlcm5hbWUnKX08L2g0Pgo8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1pbmZvIj57JG1vZC0+TGFuZygnaW5mb19sb3N0dXNlcm5hbWUnKX08L2Rpdj4Ke2lmIGlzc2V0KCRtZXNzYWdlKX08ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1kYW5nZXIiPnskbWVzc2FnZX08L2Rpdj57L2lmfQp7aWYgY291bnQoJGNvbnRyb2xzKX0KICB7JHN0YXJ0Zm9ybX0KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InskYWN0aW9uaWR9bWFtc19fZGF0YSIgdmFsdWU9IiIvPnsqIHNpbXBsZSBob25leXBvdCBjYXB0Y2hhICp9CiAgICB7Zm9yZWFjaCBmcm9tPSRjb250cm9scyBpdGVtPSdlbnRyeSd9CiAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTQgdGV4dC1yaWdodCI+eyRlbnRyeS0+cHJvbXB0fTwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTgiPgoJICAgIHtpZiAkZW50cnktPnR5cGUgPT0gJ19wYXNzd29yZCd9CgkgICAgICA8aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9InskZW50cnktPmZsZG5hbWV9IiB2YWx1ZT0ieyRlbnRyeS0+dmFsfSIgc2l6ZT0ieyRlbnRyeS0+bGVuZ3RofSIgbWF4bGVuZ3RoPSJ7JGVudHJ5LT5tYXhsZW5ndGh9Ii8+CgkgICAgICA8YnIvPnskbW9kLT5MYW5nKCdpbmZvX2xvc3R1bl9wd2ZpZWxkJyl9CgkgICAge2Vsc2UgaWYgJGVudHJ5LT50eXBlID09IDB9CgkgICAgICB7KiB0ZXh0ICp9CgkgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRlbnRyeS0+ZmxkbmFtZX0iIHZhbHVlPSJ7JGVudHJ5LT52YWx9IiBzaXplPSJ7JGVudHJ5LT5sZW5ndGh9IiBtYXhsZW5ndGg9InskZW50cnktPm1heGxlbmd0aH0iLz4KCSAgICAgIDxici8+eyRtb2QtPkxhbmcoJ2luZm9fbG9zdHVuX3RleHRmaWVsZCcpfQoJICAgIHtlbHNlaWYgJGVudHJ5LT50eXBlID09IDF9CgkgICAgICB7KiBjaGVja2JveCAqfQoJICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGVudHJ5LT5mbGRuYW1lfSIgdmFsdWU9IjEiIHtpZiAkZW50cnktPnZhbH1jaGVja2Vkey9pZn0vPgoJICAgIHtlbHNlaWYgJGVudHJ5LT50eXBlID09IDJ9CgkgICAgICB7KiBlbWFpbCAqfQoJICAgICAgPGlucHV0IHR5cGU9ImVtYWlsIiBuYW1lPSJ7JGVudHJ5LT5mbGRuYW1lfSIgdmFsdWU9InskZW50cnktPnZhbH0iIHNpemU9InskZW50cnktPmxlbmd0aH0iIG1heGxlbmd0aD0ieyRlbnRyeS0+bWF4bGVuZ3RofSIvPgoJICAgIHtlbHNlaWYgJGVudHJ5LT50eXBlID09IDN9CgkgICAgICB7KiB0ZXh0YXJlYSAqfQoJICAgICAgPHRleHRhcmVhIG5hbWU9InskZW50cnktPmZsZG5hbWV9IiByb3dzPSIzIiBjb2xzPSI1MCI+eyRlbnRyeS0+dmFsfTwvdGV4dGFyZWE+CgkgICAgICA8YnIvPnskbW9kLT5MYW5nKCdpbmZvX2xvc3R1bl90ZXh0YXJlYScpfQoJICAgIHtlbHNlaWYgJGVudHJ5LT50eXBlID09IDR9CgkgICAgICB7KiBkcm9wZG93biAqfQoJICAgICAgPHNlbGVjdCBuYW1lPSJ7JGVudHJ5LT5mbGRuYW1lfSI+CgkgICAgICAgIDxvcHRpb24gdmFsdWU9IiI+eyRtb2QtPkxhbmcoJ2Rvbm90a25vdycpfTwvb3B0aW9uPgoJCXtodG1sX29wdGlvbnMgb3B0aW9ucz0kZW50cnktPm9wdGlvbnMgc2VsZWN0ZWQ9JGVudHJ5LT52YWx9CgkgICAgICA8L3NlbGVjdD4KCSAgICB7ZWxzZWlmICRlbnRyeS0+dHlwZSA9PSA1fQoJICAgICAgeyogbXVsdGlzZWxlY3QgKn0KCSAgICAgIDxzZWxlY3QgbmFtZT0ieyRlbnRyeS0+ZmxkbmFtZX1bXSIgbXVsdGlwbGUgc2l6ZT0ieyRlbnRyeS0+bGVuZ3RofSI+CgkJe2h0bWxfb3B0aW9ucyBvcHRpb25zPSRlbnRyeS0+b3B0aW9ucyBzZWxlY3RlZD0kZW50cnktPnZhbH0KCSAgICAgIDwvc2VsZWN0PgoJICAgIHtlbHNlaWYgJGVudHJ5LT50eXBlID09IDd9CgkgICAgICB7KiByYWRpb2J0bnMgKn0KCSAgICAgIHtmb3JlYWNoICRlbnRyeS0+b3B0aW9ucyBhcyAka2V5ID0+ICR2YWx9CgkgICAgICAgIDxsYWJlbD48aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InskZW50cnktPmZsZG5hbWV9IiB2YWx1ZT0ieyRrZXl9IiB7aWYgJGtleSA9PSAkZW50cnktPnZhbH1jaGVja2Vkey9pZn0vPiB7JHZhbH08L2xhYmVsPgoJICAgICAgICB7aWYgISR2YWxAbGFzdH08YnIvPnsvaWZ9CgkgICAgICB7L2ZvcmVhY2h9CgkgICAge2Vsc2VpZiAkZW50cnktPnR5cGUgPT0gOH0KCSAgICAgIHsqIGRhdGUgKn0KCSAgICAgIHtodG1sX3NlbGVjdF9kYXRlIHByZWZpeD0kZW50cnktPmZsZG5hbWUgc3RhcnRfeWVhcj0kZW50cnktPnN0YXJ0X3llYXIgZW5kX3llYXI9JGVudHJ5LT5lbmRfeWVhciB0aW1lPSRlbnRyeS0+dmFsIGFsbF9lbXB0eT0nLS0nfQoJICAgIHsvaWZ9CgkgIDwvZGl2PgogICAgICAgPC9kaXY+CiAgICB7L2ZvcmVhY2h9CiAgICB7aWYgaXNzZXQoJGNhcHRjaGEpfQogICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgIDxwIGNsYXNzPSJjb2wtc20tNCB0ZXh0LXJpZ2h0Ij57JGNhcHRjaGFfdGl0bGV9PC9wPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS04Ij57JGNhcHRjaGF9CiAgICAgICAgICB7aWYgJG5lZWRfY2FwdGNoYV9pbnB1dH0KICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyBjb2wtc20tMTIiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1tYW1zX2lucHV0X2NhcHRjaGEiIHNpemU9IjEwIi8+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIHsvaWZ9Cgk8L2Rpdj4KICAgICAgPC9kaXY+CiAgICB7L2lmfQogICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgPGRpdiBjbGFzcz0iY29sLXNtLTQgdGV4dC1yaWdodCI+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNvbC1zbS04Ij4KICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfW1hbXNfc3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfSIvPgogICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9bWFtc19jYW5jZWwiIHZhbHVlPSJ7JG1vZC0+TGFuZygnY2FuY2VsJyl9Ii8+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgeyRlbmRmb3JtfQp7L2lmfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/orig_notification_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogdGhpcyB0ZW1wbGF0ZSBkZWZpbmVzIGhvdyBub3RpZmljYXRpb24gZW1haWxzIHdpbGwgYmUgc2VudCAqfQp7KiB0aGUgc2FtZSB0ZW1wbGF0ZSBpcyB1c2VkIGZvciBhbGwgbm90aWZpY2F0aW9uIGV2ZW50cyBzbyB5b3UgbWF5IG5lZWQgCiAgIHRvIHRocm93IGluIHNvbWUgbG9naWMgaGVyZSB0byBkaXNwbGF5IGFsbCBvZiB0aGUgaW5mb3JtYXRpb24geW91IHdhbnQKICAgaW4gZWFjaCBlbWFpbC4gKn0KeyogYWxsIHNtYXJ0eSB2YXJpYWJsZXMgY2FuIGJlIHVzZWQgaW4gdGhpcyB0ZW1wbGF0ZSwgaW5jbHVkaW5nIGZ1bmN0aW9ucwogICBmcm9tIGN1c3RvbWNvbnRlbnQgZm9yIGZyb250ZW5kIGdlbmVyYXRlZCBldmVudHMgKn0KeyogSSBlbmNvdXJhZ2UgeW91IHRvIHVzZSB0aGUge2dldF90ZW1wbGF0ZV92YXJzfSBzbWFydHkgcGx1Z2luIGFuZCB0aGUKICAgcHJpbnRfciBzbWFydHkgbW9kaWZpZXIgdG8gc2VlIHdoYXQgdmFyaWFibGVzIGFyZSBhdmFpbGFibGUgKn0KCntnZXRfdGVtcGxhdGVfdmFyc30=]]></data>
	</file>
	<file>
	  <filename>/templates/orig_resetsession_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogcmVzZXQgc2Vzc2lvbiB0ZW1wbGF0ZSAqfQp7KiBOT1RFOiB0aGlzIHRlbXBsYXRlIHJlcXVpcmVzIGpxdWVyeSBiZSBhdmFpbGFibGUgaW4gYW55IHBhZ2UgdGhhdCBpdCBpcyB1c2VkIG9uICp9Cgo8cD48YSBocmVmPSJqYXZhc2NyaXB0OjsiIG5hbWU9Im1hbXNfbWFudWFsX3Jlc2V0Ij5DbGljayBIZXJlIFRvIENvbmZpcm0gTG9naW4gU3RhdHVzPC9hPjwvcD57KiBzYWZlIHRvIHJlbW92ZSB0aGlzICp9Cgp7KiBzdHlsZSBpbmZvcm1hdGlvbiBmb3IgdGhlIG1vZGFsIHdpbmRvdyBhbmQgdGhlIG1hc2suLi4gdGhlc2UgY2FuIGJlIHJlbW92ZWQgYW5kIHBsYWNlZCBpbiBhIENNU01TIHN0eWxlc2hlZXQgKn0Ke2xpdGVyYWx9CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cm1hbXNfbW9kYWwgewogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYm9yZGVyOiAxcHggc29saWQgIzAwZjsKICBwYWRkaW5nOiAycHg7CiAgbWFyZ2luOiAgMnB4Owp9CiNtYW1zX21hc2sgewogIGJhY2tncm91bmQtY29sb3I6ICMwMDA7Cn0KI21hbXNfbW9kYWwgLnRpdGxlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBmOwogIGNvbG9yOiAgI2ZmZjsKICBwYWRkaW5nOiAwcHg7Cn0KPC9zdHlsZT4Key9saXRlcmFsfQoKe2NhcHR1cmUgYXNzaWduPSdtYW1zX3RoZWZvcm0nfXtzdHJpcH0KeyogdGhlIHJlc2V0LXNlc3Npb24gZm9ybSwgYSBzaW1wbGUgZm9ybSB0byBkaXNwbGF5IGEgbWVzc2FnZSB3aXRoIGEgdGl0bGUgdG8gdGhlIHVzZXIgd2l0aCB0d28gb3B0aW9ucy4uLiBva2F5LCBhbmQgY2FuY2VsLi4uIHRoZSBuYW1lIG9mIHRoZXNlIGJ1dHRvbnMgaXMgaW1wb3J0YW50LCBhcyB3ZWxsIHRoZSBzdHJpcCB0YWcgaXMgaW1wb3J0YW50ICp9Cjxmb3JtIGFjdGlvbj0iamF2YXNjcmlwdDo7Ij4KPHAgY2xhc3M9InRpdGxlIj57JG1vZC0+TGFuZygndGl0bGVfcmVzZXRfc2Vzc2lvbicpfTwvcD4KPHAgY2xhc3M9InJvdyI+eyRtb2QtPkxhbmcoJ21zZ19yZXNldF9zZXNzaW9uJyl9PC9wPgo8cCBjbGFzcz0icm93Ij4KICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJtYW1zX29rIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ29rJyl9Ii8+CiAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ibWFtc19jYW5jZWwiIHZhbHVlPSJ7JG1vZC0+TGFuZygnY2FuY2VsJyl9Ii8+CjwvcD4KPC9mb3JtPgp7L3N0cmlwfXsvY2FwdHVyZX0KCntsaXRlcmFsfQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci8vPCFbQ0RBVEFbCi8vIHRoZSB0aW1lciBpbnRlcnZhbCAoaG93IG9mdGVuIHlvdSB3YW50IHRvIGRpc3BsYXkgdGhlIGRpYWxvZyB0byB5b3VyIHVzZXJzCnZhciB0aW1lcl9pbnRlcnZhbCA9IHsvbGl0ZXJhbH17JHNlc3Npb25fdGltZW91dH17bGl0ZXJhbH0gLSAzMDsKCi8vIGEgZnVuY3Rpb24gdG8gaGlkZSB0aGUgbW9kYWwgZGlhbG9nIC0tIHlvdSBjYW4gbW9kaWZ5IHRoaXMgZnVuY3Rpb24KZnVuY3Rpb24gbWFtc19jbG9zZV9tb2RhbCgpCnsKICAgalF1ZXJ5KCcjbWFtc19tb2RhbCcpLmZhZGVPdXQoMjAwMCk7CiAgIGpRdWVyeSgnI21hbXNfbWFzaycpLmZhZGVPdXQoMTAwMCk7Cn0KCi8vIGEgZnVuY3Rpb24gdG8gZGlzcGxheSB0aGUgbW9kYWwgZGlhbG9nLi4uIHlvdSBjYW4gbW9kaWZ5IHRoaXMgZnVuY3Rpb24KZnVuY3Rpb24gbWFtc19vcGVuX21vZGFsKCkKewogIHZhciBtYXNrSGVpZ2h0ID0galF1ZXJ5KGRvY3VtZW50KS5oZWlnaHQoKTsKICB2YXIgbWFza1dpZHRoID0galF1ZXJ5KGRvY3VtZW50KS53aWR0aCgpOwoKICAvLyBzZXQgdGhlIG1hc2sgc2l6ZSB0byBmaWxsIHVwIHRoZSB3aG9sZSBzY3JlZW4KICBqUXVlcnkoJyNtYW1zX21hc2snKS5jc3Moeyd3aWR0aCc6bWFza1dpZHRoLCdoZWlnaHQnOm1hc2tIZWlnaHR9KTsKCiAgLy8gdHJhbnNpdGlvbiBlZmZlY3QKICBqUXVlcnkoJyNtYW1zX21hc2snKS5mYWRlSW4oMTAwMCk7CiAgalF1ZXJ5KCcjbWFtc19tYXNrJykuZmFkZVRvKCJzbG93IiwwLjgpOwoKICAvLyBnZXQgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgcG9wdXAKICB2YXIgd2luSGVpZ2h0ID0galF1ZXJ5KHdpbmRvdykuaGVpZ2h0KCk7CiAgdmFyIHdpbldpZHRoID0galF1ZXJ5KHdpbmRvdykud2lkdGgoKTsKCiAgdmFyIHBvcHVwSGVpZ2h0ID0galF1ZXJ5KCcjbWFtc19tb2RhbCcpLmhlaWdodCgpOwogIHZhciBwb3B1cFdpZHRoICA9IGpRdWVyeSgnI21hbXNfbW9kYWwnKS53aWR0aCgpOwoKICB2YXIgdG9wID0gd2luSGVpZ2h0LzIgLSBwb3B1cEhlaWdodC8yOwogIHZhciBsZWZ0ID0gd2luV2lkdGgvMiAtIHBvcHVwV2lkdGgvMjsKICAvLyBzZXQgdGhlIHBvcHVwIHdpbmRvdyB0byBjZW50ZXIKICBqUXVlcnkoJyNtYW1zX21vZGFsJykuY3NzKHsndG9wJzp0b3AsJ2xlZnQnOmxlZnR9KTsKCiAgLy8gdHJhbnNpdGlvbiBlZmZlY3QKICBqUXVlcnkoJyNtYW1zX21vZGFsJykuZmFkZUluKDIwMDApOwp9CgpmdW5jdGlvbiBtYW1zX3VzZXJfY2FuY2VsbGVkKCkKewogIC8vIGEgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBtYXkgYmUgY3VzdG9taXplZCB0byBhbGxvdyBkaXNwbGF5aW5nIGEgbWVzc2FnZSB0byB0aGUgdXNlcgogIC8vIHRvIGluZGljYXRlIHRoYXQgdGhleSBtYXkgYmUgbG9nZ2VkIG91dCBhdCBhbnkgdGltZS4KICBhbGVydCgnWW91IGhhdmUgY2hvc2VuIHRvIGRpc3JlZ2FyZCB0aGUgc2Vzc2lvbiB3YXJuaW5nLCB5b3UgbWF5IGNvbnRpbnVlIHRvIGJyb3dzZSB0aGlzIHNpdGUgaG93ZXZlciBzb21lIGZ1bmN0aW9uYWxpdHkgbWF5IGJlIHVuYXZhaWxhYmxlIHRvIHlvdSB1bnRpbCB5b3UgbG9naW4gYWdhaW4nKTsKfQoKLy8gKgovLyAqIGRvIG5vdCBtb2RpZnkgYmVsb3cgaGVyZSB1bmxlc3MgeW91IGFyZSBhbiBleHBlcmllbmNlZCBqcXVlcnkgcHJvZ3JhbW1lciAqCi8vICoKCmlmKCB0aW1lcl9pbnRlcnZhbCA8PSAwICkKICB7CiAgICAgdGltZXJfaW50ZXJ2YWwgPSAwOwogIH0KdmFyIGRpYWxvZ2NvbnRlbnRzID0gJ3svbGl0ZXJhbH17JG1hbXNfdGhlZm9ybX17bGl0ZXJhbH0nOwoKCi8vIHdlIGhhdmUgalF1ZXJ5CmpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICAvLyBjcmVhdGUgYSBuZXcgaWQgZm9yIG91ciBzdHVmZgogIGpRdWVyeSgnYm9keScpLmFwcGVuZCgnPGRpdiBpZD0ibWFtc19ib2R5Ij48L2Rpdj4nKTsKICAKICAvLyBjcmVhdGUgdGhlIG1hc2sgYW5kIGFwcGVuZCBpdCB0byB0aGUgZG9tCiAgalF1ZXJ5KCcjbWFtc19ib2R5JykuYXBwZW5kKCc8ZGl2IGlkPSJtYW1zX21hc2siPjwvZGl2PicpOwoKICAvLyBjcmVhdGUgdGhlIG1vZGFsIGRpYWxvZyBhbmQgYXBwZW5kIGl0IHRvIHRoZSBET00KICBqUXVlcnkoJyNtYW1zX2JvZHknKS5hcHBlbmQoJzxkaXYgaWQ9Im1hbXNfbW9kYWwiPicrZGlhbG9nY29udGVudHMrJzwvZGl2PicpOwogIAogIC8vIGFuZCBhIGp1bmsgZGl2CiAgalF1ZXJ5KCcjbWFtc19ib2R5JykuYXBwZW5kKCc8ZGl2IGlkPSJtYW1zX2p1bmsiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+PC9kaXY+Jyk7CgogIC8vIGhhbmRsZSBjbGljayBldmVudHMKICBqUXVlcnkoJyNtYW1zX21vZGFsIGlucHV0W25hbWU9bWFtc19va10nKS5jbGljayhmdW5jdGlvbihlKXsKICAgIGUucHJldmVudERlZmF1bHQoKTsKCiAgICAvLyBkbyB0aGUgYWpheCByZXF1ZXN0CiAgICB2YXIgdXJsID0gJ3svbGl0ZXJhbH17JHJlc2V0X3VybH17bGl0ZXJhbH0nOwogICAgdmFyIHVybCA9IHVybC5yZXBsYWNlKC9hbXA7L2csJycpOwogICAgalF1ZXJ5KCcjbWFtc19qdW5rJykubG9hZCh1cmwpOwoKICAgIC8vIGFuZCBkb25lLgogICAgI21hbXNfY2xvc2VfbW9kYWwoKTsKICAgfSk7CiAgalF1ZXJ5KCcjbWFtc19tb2RhbCBpbnB1dFtuYW1lPW1hbXNfY2FuY2VsXScpLmNsaWNrKGZ1bmN0aW9uKGUpewogICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgI21hbXNfY2xvc2VfbW9kYWwoKTsKICAgICNtYW1zX3VzZXJfY2FuY2VsbGVkKCk7CiAgfSk7CiAgalF1ZXJ5KCdhW25hbWU9bWFtc19tYW51YWxfcmVzZXRdJykuY2xpY2soZnVuY3Rpb24oZSl7CiAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICBtYW1zX29wZW5fbW9kYWwoKTsKICB9KTsKCiAgLy8gY3JlYXRlIG91ciB0aW1lcgogIGlmKCB0aW1lcl9pbnRlcnZhbCA+IDAgKQogICAgIHsKICAgICAgICBzZXRUaW1lb3V0KG1hbXNfb3Blbl9tb2RhbCx0aW1lcl9pbnRlcnZhbCAqIDEwMDApOwogICAgIH0KCn0pOwovL11dPgo8L3NjcmlwdD4Key9saXRlcmFsfQoKeyogcmVxdWlyZWQgY3NzICp9CntsaXRlcmFsfQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgojbWFtc19tb2RhbCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHotaW5kZXg6IDk5OTk7CiAgZGlzcGxheTogbm9uZTsKfQojbWFtc19tYXNrIHsKICB0b3A6IDA7CiAgbGVmdDogMDsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgei1pbmRleDogOTAwMDsKICBkaXNwbGF5OiBub25lOwp9Cjwvc3R5bGU+CnsvbGl0ZXJhbH0=]]></data>
	</file>
	<file>
	  <filename>/templates/orig_verifyform.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogb3JpZ2luYWwgdmVyaWZpY2F0aW9uIGZvcm0gKn0KPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtaW5mbyI+eyRtb2QtPkxhbmcoJ2luZm9fdmVyaWZ5X2lkZW50aXR5MicpfTwvZGl2Pgp7Zm9ybV9zdGFydCB1aWQ9JHVpZH17eHRfZm9ybV9jc3JmfQogIDxkaXYgY2xhc3M9InJvdyI+CiAgICA8bGFiZWw+eyRtb2QtPkxhbmcoJ2NvZGUnKX06IDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybV9jb250cm9sIiBuYW1lPSJ7JGFjdGlvbmlkfWNvZGUiIHZhbHVlPSJ7JGNvZGV9IiByZXF1aXJlZC8+PC9sYWJlbD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9bWFtc19zdWJtaXQiIGNsYXNzPSJidG4gYnRuX2FjdGl2ZSI+eyRtb2QtPkxhbmcoJ3ZlcmlmeScpfTwvYnV0dG9uPgogIDwvZGl2Pgo8L2Rpdj4Ke2Zvcm1fZW5kfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/orig_viewuser_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogdmlldyB1c2VyIHRlbXBsYXRlICp9CjxwPnskbW9kLT5MYW5nKCdpZCcpfTombmJzcDt7JHVzZXJpbmZvLmlkfTwvcD4KPHA+eyRtb2QtPkxhbmcoJ3VzZXJuYW1lJyl9OiZuYnNwO3skdXNlcmluZm8udXNlcm5hbWV9PC9wPgo8cD57JG1vZC0+TGFuZygnZW1haWwnKX06Jm5ic3A7PGEgaHJlZj0ibWFpbHRvOnskZW1haWxfYWRkcmVzc30iPnskZW1haWxfYWRkcmVzc308L3A+CjxwPnskbW9kLT5MYW5nKCdleHBpcmVzJyl9OiZuYnNwO3skdXNlcmluZm8uZXhwaXJlc308L3A+Cntmb3JlYWNoIGZyb209JHVzZXJfcHJvcGVydGllcyBpdGVtPSdlbnRyeSd9CntpZiAkZW50cnkudHlwZSAhPSAwfQo8cD57JGVudHJ5LnByb21wdH06Jm5ic3A7eyRlbnRyeS5kYXRhfTwvcD4Key9pZn0Key9mb3JlYWNofQo=]]></data>
	</file>
	<file>
	  <filename>/templates/propertiesform.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCRtZXNzYWdlKSB9CiAge2lmIGlzc2V0KCRlcnJvcikgfQogICAgPHAgY2xhc3M9InJlZCI+eyRlcnJvcn08L2ZvbnQ+PC9wPgogIHtlbHNlfQogICAgPHA+eyRtZXNzYWdlfTwvcD4KICB7L2lmfQp7L2lmfQoKPGRpdiBjbGFzcz0iY19mdWxsIj4KICA8cCBjbGFzcz0iZ3JpZF84IiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDA7Ij4KICAgIHtpZiBpc3NldCgkYWRkX3VybCl9CiAgICAgIDxhIGhyZWY9InskYWRkX3VybH0iIHRpdGxlPSJ7JG1vZC0+TGFuZygnYWRkcHJvcCcpfSI+e3h0aW1hZ2UgaW1hZ2U9J2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJ30geyRtb2QtPkxhbmcoJ2FkZHByb3AnKX08L2E+CiAgICB7L2lmfQogIDwvcD4KICA8cCBjbGFzcz0iZ3JpZF80IHRleHQtcmlnaHQiPnskcHJvcGNvdW50fSZuYnNwO3skcHJvcHNmb3VuZH08L3A+CiAgPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KPC9kaXY+Cgp7aWYgJHByb3Bjb3VudCA+IDB9Cjx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+Cgk8dGhlYWQ+CgkJPHRyPgoJCQk8dGg+eyRuYW1ldGV4dH08L3RoPgoJCQk8dGg+eyRwcm9tcHR0ZXh0fTwvdGg+CgkJCTx0aD57JHR5cGV0ZXh0fTwvdGg+CgkJCTx0aD57JGxlbmd0aHRleHR9PC90aD4KCQkJPHRoPnskbW9kLT5MYW5nKCd1bmlxdWUnKX08L3RoPgoJCQk8dGg+eyRtb2QtPkxhbmcoJ2VuY3J5cHRlZCcpfTwvdGg+CgkJCTx0aCBjbGFzcz0icGFnZWljb24ge2xpdGVyYWx9e3NvcnRlcjogZmFsc2V9ey9saXRlcmFsfSI+Jm5ic3A7PC90aD4KCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiB7bGl0ZXJhbH17c29ydGVyOiBmYWxzZX17L2xpdGVyYWx9Ij4mbmJzcDs8L3RoPgoJCTwvdHI+Cgk8L3RoZWFkPgoJPHRib2R5PgoJCXtmb3JlYWNoIGZyb209JHByb3BzIGl0ZW09cHJvcGV9CgkJCQk8dHIgY2xhc3M9InskcHJvcGUtPnJvd2NsYXNzfSI+CgkJCQkJPHRkPnskcHJvcGUtPm5hbWV9PC90ZD4KCQkJCQk8dGQ+eyRwcm9wZS0+cHJvbXB0fTwvdGQ+CgkJCQkJPHRkPnskcHJvcGUtPnR5cGV9PC90ZD4KCQkJCQk8dGQ+eyRwcm9wZS0+bGVuZ3RofTwvdGQ+CgkJCQkJPHRkPntpZiAkcHJvcGUtPmZvcmNlX3VuaXF1ZX17JG1vZC0+TGFuZygneWVzJyl9e2Vsc2V9eyRtb2QtPkxhbmcoJ25vJyl9ey9pZn08L3RkPgoJCQkJCTx0ZD57aWYgJHByb3BlLT5lbmNyeXB0fXskbW9kLT5MYW5nKCd5ZXMnKX17L2lmfTwvdGQ+CgkJCQkJPHRkPnskcHJvcGUtPmVkaXRsaW5rfGRlZmF1bHQ6Jyd9PC90ZD4KCQkJCQk8dGQ+CgkJCQkJCXtpZiBpc3NldCgkcHJvcGUtPmRlbGV0ZV91cmwpfQoJCQkJCQkJPGEgaHJlZj0ieyRwcm9wZS0+ZGVsZXRlX3VybH0iPnt4dGltYWdlIGltYWdlPSdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicgYWx0PSRtb2QtPkxhbmcoJ2RlbGV0ZScpfTwvYT4KCQkJCQkJey9pZn0KCQkJCQk8L3RkPgoJCQkJPC90cj4KCQl7L2ZvcmVhY2h9Cgk8L3Rib2R5Pgo8L3RhYmxlPgp7L2lmfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/protectedcontent.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e3N0cmlwfQp7aWYgJG1hbXNfYXV0aG9yaXplZCA9PSAwfQogICAge2lmICRhY3Rpb24gPT0gJ3JlZGlyZWN0J30gCiAgICAgIHtpZiAkbWFtc19wYWdlID09IC0xfQogICAgICAgIHskbW9kLT5MYW5nKCdwYWdldHlwZV91bmF1dGhvcml6ZWQnKX0KICAgICAge2Vsc2V9CiAgICAgICAge3JlZGlyZWN0X3BhZ2UgcGFnZT0kbWFtc19wYWdlfQogICAgICB7L2lmfQogICAge2Vsc2VpZiAkc2hvd193aGF0ID09ICdjb250ZW50X2VuJ30KICAgICAge2lmICRkb2NhcHRjaGEgPT0gMX0KICAgICAgICB7TUFNUyBmb3JtPWxvZ2lufQogICAgICB7ZWxzZX0KICAgICAgICB7TUFNUyBmb3JtPWxvZ2luIG5vY2FwdGNoYT0xfQogICAgICB7L2lmfQogICAgey9pZn0Ke2Vsc2V9CiAgIHskb3V0cHV0fGRlZmF1bHQ6Jyd9CnsvaWZ9Cnsvc3RyaXB9]]></data>
	</file>
	<file>
	  <filename>/templates/resetsession_templateform.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF90ZW1wbGF0ZTF9OjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3RlbXBsYXRlMX08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fSZuYnNwO3skZGVmYXVsdHN9PC9wPgo8L2Rpdj4KeyRlbmRmb3JtfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/templateform.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19CjxwPnskcHJvbXB0X3RlbXBsYXRlfTwvcD4KeyRpbnB1dF90ZW1wbGF0ZX0KPGJyLz4KeyRzdWJtaXR9eyRkZWZhdWx0c30KeyRlbmRmb3JtfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/userhistory.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCRtZXNzYWdlKX0KICB7aWYgaXNzZXQoJGVycm9yKX0KICAgIDxmb250IGNvbG9yPSJyZWQiPjxoND57JG1lc3NhZ2V9PC9oND48L2ZvbnQ+CiAge2Vsc2V9CiAgICA8ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRtZXNzYWdlfTwvZGl2PgogIHsvaWZ9CnsvaWZ9Cgp7aWYgIWlzc2V0KCRtdWx0aXVzZXIpfQogIDxoND57JHRpdGxlX3VzZXJoaXN0b3J5fSZuYnNwO3skZm9yfSZuYnNwO3skdXNlcl91c2VybmFtZX08L2g0Pgp7L2lmfQp7JGZvcm1zdGFydH0KPGRpdiBjbGFzcz0iY19mdWxsIj4KPGZpZWxkc2V0IGNsYXNzPSJncmlkXzYiPgo8bGVnZW5kPnskdGl0bGVfbGVnZW5kX2ZpbHRlcn06PC9sZWdlbmQ+CiAgPGRpdiBjbGFzcz0iY19mdWxsIj4KICAgICA8cCBjbGFzcz0iZ3JpZF8zIj57JHByb21wdF9maWx0ZXJfZXZlbnR0eXBlfTo8L3A+CiAgICAgPHAgY2xhc3M9ImdyaWRfOSI+eyRpbnB1dF9maWx0ZXJfZXZlbnR0eXBlfTwvcD4KICAgICA8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2PgogIDwvZGl2PgogIHtpZiBpc3NldCgkbXVsdGl1c2VyKX0KICA8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogICAgIDxwIGNsYXNzPSJncmlkXzMiPnskcHJvbXB0X3VzZXJuYW1lX3JlZ2V4fTo8L3A+CiAgICAgPHAgY2xhc3M9ImdyaWRfOSI+eyRpbnB1dF91c2VybmFtZV9yZWdleH08L3A+CiAgICAgPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KICA8L2Rpdj4KICB7L2lmfQogIDxkaXYgY2xhc3M9ImNfZnVsbCI+CiAgICAgPHAgY2xhc3M9ImdyaWRfMyI+eyRwcm9tcHRfZmlsdGVyX2RhdGV9OjwvcD4KICAgICA8cCBjbGFzcz0iZ3JpZF85Ij57JGlucHV0X2ZpbHRlcl9kYXRlfTwvcD4KICAgICA8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2PgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImNfZnVsbCI+CiAgICAgPHAgY2xhc3M9ImdyaWRfMyI+eyRwcm9tcHRfcGFnZWxpbWl0fTo8L3A+CiAgICAgPHAgY2xhc3M9ImdyaWRfOSI+eyRpbnB1dF9wYWdlbGltaXR9PC9wPgogICAgIDxkaXYgY2xhc3M9ImNsZWFyYiI+PC9kaXY+CiAgPC9kaXY+CjwvZmllbGRzZXQ+Cgo8ZmllbGRzZXQgY2xhc3M9ImdyaWRfNiI+CjxsZWdlbmQ+eyR0aXRsZV9sZWdlbmRfZ3JvdXBzb3J0fTo8L2xlZ2VuZD4KICA8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogICAgIDxwIGNsYXNzPSJncmlkXzMiPnskcHJvbXB0X2dyb3VwX2lwfTo8L3A+CiAgICAgPHAgY2xhc3M9ImdyaWRfOSI+eyRpbnB1dF9ncm91cF9pcH08L3A+CiAgICAgPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogICAgIDxwIGNsYXNzPSJncmlkXzMiPnskcHJvbXB0X3NvcnRvcmRlcn06PC9wPgogICAgIDxwIGNsYXNzPSJncmlkXzkiPnskaW5wdXRfc29ydG9yZGVyfTwvcD4KICAgICA8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2PgogIDwvZGl2Pgo8L2ZpZWxkc2V0Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iY19mdWxsIj4KICAgPHAgY2xhc3M9ImdyaWRfOSI+eyRzdWJtaXR9Jm5ic3A7eyRyZXNldH08L3A+CiAgIDxkaXYgY2xhc3M9ImNsZWFyYiI+PC9kaXY+CjwvZGl2Pgp7JGZvcm1lbmR9Cjxici8+Cgo8ZGl2IGNsYXNzPSJjX2Z1bGwiPgogIDxkaXYgY2xhc3M9ImdyaWRfNiIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwOyI+CiAgICB7JHJlY29yZGNvdW50fSZuYnNwO3skcHJvbXB0X3JlY29yZHNmb3VuZH0KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJncmlkXzYgdGV4dC1yaWdodCI+CiAgICB7aWYgJGl0ZW1jb3VudCA+IDB9CiAgICAgIHtpZiAkcGFnZWNvdW50ID4gMX0KICAgICAgICB7aWYgJHBhZ2VudW1iZXIgPiAxfXskZmlyc3RwYWdlfSZuYnNwO3skcHJldnBhZ2V9Jm5ic3A7ey9pZn0KICAgICAgICB7JHBhZ2VudW1iZXJ9Jm5ic3A7eyRvZnRleHR9Jm5ic3A7eyRwYWdlY291bnR9CiAgICAgICAge2lmICRwYWdlbnVtYmVyIDwgJHBhZ2Vjb3VudH0KICAgICAgICAgICAmbmJzcDt7JG5leHRwYWdlfSZuYnNwO3skbGFzdHBhZ2V9CiAgICAgICAgey9pZn0KICAgICAgey9pZn0KICAgIHsvaWZ9CiA8L2Rpdj4KPC9kaXY+Cgo8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogIDx0aGVhZD4KICAgIDx0cj4KICAgICAgICB7aWYgaXNzZXQoJG11bHRpdXNlcil9Cgk8dGg+eyRwcm9tcHRfdXNlcm5hbWV9PC90aD4KICAgICAgICB7L2lmfQoJPHRoPnskcHJvbXB0X2lwYWRkcmVzc308L3RoPgoJPHRoPnskcHJvbXB0X2FjdGlvbn08L3RoPgoJPHRoPnskcHJvbXB0X3JlZmRhdGV9PC90aD4KICAgIDwvdHI+CiAgPC90aGVhZD4KICA8dGJvZHk+CiAge2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICAgIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9Ij4KICAgICAgICB7aWYgaXNzZXQoJG11bHRpdXNlcil9CiAgICAgICAgPHRkPnskZW50cnktPnVzZXJuYW1lfTwvdGQ+CiAgICAgICAgey9pZn0KCTx0ZD57JGVudHJ5LT5pcGFkZHJlc3N9PC90ZD4KCTx0ZD57JGVudHJ5LT5hY3Rpb259PC90ZD4KCTx0ZD57JGVudHJ5LT5yZWZkYXRlfGRhdGVfZm9ybWF0OiIlYiAlZSwgJVkgLSAlWCJ9PC90ZD4KICA8L3RyPgogIHsvZm9yZWFjaH0KICA8L3Rib2R5Pgo8L3RhYmxlPgo=]]></data>
	</file>
	<file>
	  <filename>/templates/userlist.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHN0eWxlPgojcXVpY2tmaW5kX2RsZyB7CiAgd2lkdGg6IDUwMHB4OwogIGhlaWdodDogMTBlbTsKfQoudW5zYWZlcGFzc3dvcmQgewogIGNvbG9yOiByZWQ7Cn0KLnVzZXJfZGlzYWJsZWQ6YmVmb3JlIHsKICBjb250ZW50OiAiISEgIjsKICBjb2xvcjogcmVkOwp9Ci51c2VyX211c3R2YWxpZGF0ZTpiZWZvcmUgewogIGNvbnRlbnQ6ICIqKiAiOwogIGNvbG9yOiBtYWdlbnRhOwp9Ci51c2VyX2V4cGlyZWQ6YmVmb3JlIHsKICBjb250ZW50OiAiLS0gIjsKICBjb2xvcjogb3JhbmdlOwp9Cjwvc3R5bGU+CnsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqfQo8c2NyaXB0PgokKGZ1bmN0aW9uKCl7CiAgJCgnI21hbXNfZmlsdGVyYm94JykuY2xpY2soZnVuY3Rpb24oKXsKICAgIGlmKCB0aGlzLmNoZWNrZWQgKSB7CiAgICAgICQoJyNtYW1zX2ZpbHRlcmZvcm0nKS5zaG93KCk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgJCgnI21hbXNfZmlsdGVyZm9ybScpLmhpZGUoKTsKICAgIH0KICB9KTsKCiAgJCgnI2RvYnVsaycpLmNsaWNrKGZ1bmN0aW9uKGV2KXsKICAgIHZhciBsZW4gPSAkKCdpbnB1dC5idWxrc2VsZWN0OmNoZWNrZWQnKS5sZW5ndGg7CiAgICBpZiggbGVuID09IDAgKSB7CiAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7CiAgICAgIGNtc19hbGVydCgneyRtb2QtPkxhbmcoJ2J1bGtfc2VsZWN0b25lJ3xjbXNfZXNjYXBlKX0nKTsKICAgIH0KICB9KQoKICAkKCcjcXVpY2tmaW5kX2Zvcm0nKS5zdWJtaXQoZnVuY3Rpb24oZXYpewogICAgZXYucHJldmVudERlZmF1bHQoKTsKICAgIHZhciBpZCA9ICQoJyNxdWlja2ZpbmRfZGxnJykuZGF0YSgnc2VsX2lkJyk7CiAgICB2YXIgdXJsID0gJ3tjbXNfYWN0aW9uX3VybCBhY3Rpb249YWRtaW5fZWRpdHVzZXIgdXNlcl9pZD14eHh4IGZvcmpzPTF9JzsKICAgIHVybCA9IHVybC5yZXBsYWNlKCd4eHh4JyxpZCk7CiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDsKICB9KQogICQoJyNxdWlja2ZpbmRfZmxkJykuYXV0b2NvbXBsZXRlKHsKICAgIG1pbkxlbmd0aDogMiwKICAgIGFwcGVuZFRvOiAnI3F1aWNrZmluZF9kbGcnLAogICAgc291cmNlOiBmdW5jdGlvbiggcmVxdWVzdCwgcmVzcG9uc2UgKSB7CiAgICAgICQuYWpheCh7CiAgICAgICAgdXJsOiAne2Ntc19hY3Rpb25fdXJsIGFjdGlvbj1hZG1pbl9hamF4X3F1aWNrZmluZCBmb3Jqcz0xfScsCiAgICAgICAgZGF0YTogewogICAgICAgICAgdGVybTogcmVxdWVzdC50ZXJtLAogICAgICAgIH0sCiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oIGRhdGEgKSB7CiAgICAgICAgICByZXNwb25zZSggZGF0YSApOwogICAgICAgIH0KICAgICAgfSkKICAgIH0sCiAgICBzZWxlY3Q6IGZ1bmN0aW9uKCBldmVudCwgdWkgKSB7CiAgICAgICQoJyNxdWlja2ZpbmRfZmxkJykudmFsKCB1aS5pdGVtLmxhYmVsICk7CiAgICAgICQoJyNxdWlja2ZpbmRfZGxnJykuZGF0YSgnc2VsX2lkJywgdWkuaXRlbS52YWx1ZSk7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICB9KTsKICAkKCcjcXVpY2tmaW5kJykuY2xpY2soZnVuY3Rpb24oKXsKICAgICQoJyNxdWlja2ZpbmRfZGxnJykuZGlhbG9nKHsKICAgICAgd2lkdGg6ICc1MDAnLAogICAgICBoZWlnaHQ6ICcxNTAnLAogICAgICBtb2RhbDogdHJ1ZSwKICAgIH0pOwogIH0pCn0pOwoKZnVuY3Rpb24gc2VsZWN0X2FsbCgpCnsKICBjYiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCd7JGFjdGlvbmlkfXNlbGVjdGVkW10nKTsKICBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWxlY3RhbGwnKTsKICBzdCA9IGVsLmNoZWNrZWQ7CiAgZm9yKCBpID0gMDsgaSA8IGNiLmxlbmd0aDsgaSsrICkgewogICAgaWYoIGNiW2ldLnR5cGUgPT0gImNoZWNrYm94IiApICBjYltpXS5jaGVja2VkPXN0OwogIH0KfQoKZnVuY3Rpb24gY29uZmlybV9kZWxldGUoKQp7CiAgdmFyIGNiID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ3skYWN0aW9uaWR9c2VsZWN0ZWRbXScpOwogIHZhciBjb3VudCA9IDA7CiAgZm9yKCBpID0gMDsgaSA8IGNiLmxlbmd0aDsgaSsrICkgewogICAgaWYoIGNiW2ldLmNoZWNrZWQgKSBjb3VudCsrOwogIH0KCiAgaWYoIGNvdW50ID4gMjUwICkgewogICAgYWxlcnQoJ3skbW9kLT5MYW5nKCdlcnJvcl90b29tYW55c2VsZWN0ZWQnKX0nfGNtc19lc2NhcGUpOwogICAgcmV0dXJuIGZhbHNlOwogIH0KICByZXR1cm4gY29uZmlybSgneyRtb2QtPkxhbmcoJ2NvbmZpcm1fZGVsZXRlX3NlbGVjdGVkJyl9Jyk7Cn0KPC9zY3JpcHQ+CnsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqfQoKPGRpdiBpZD0icXVpY2tmaW5kX2RsZyIgdGl0bGU9InskbW9kLT5MYW5nKCdxdWlja2ZpbmRfdXNlcicpfSIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KICAge2Zvcm1fc3RhcnQgaWQ9cXVpY2tmaW5kX2Zvcm19CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgIDxsYWJlbCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdxdWlja2ZpbmRfaWRuYW1lJyl9PC9sYWJlbD4KICAgICAgIDxpbnB1dCBjbGFzcz0icGFnZWlucHV0IiBpZD0icXVpY2tmaW5kX2ZsZCIgcGxhY2Vob2xkZXI9InskbW9kLT5MYW5nKCdxdWlja2ZpbmRfcGgnKX0iIHNpemU9IjYwIi8+CiAgIDwvZGl2PgogICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICAgPGlucHV0IGNsYXNzPSJwYWdlaW5wdXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9InskbW9kLT5MYW5nKCdmaW5kJyl9Ii8+CiAgIDwvZGl2PgogICAge2Zvcm1fZW5kfQo8L2Rpdj4KCnskc3RhcnRmb3JtfQo8ZmllbGRzZXQgaWQ9Im1hbXNfZmlsdGVyZm9ybSIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KICAgIDxsZWdlbmQ+eyRtb2QtPkxhbmcoJ2ZpbHRlcicpfTo8L2xlZ2VuZD4KICAgIDxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZF82Ij4KICAgICAgICAgICB7aWYgaXNzZXQoJGdyb3Vwcyl9CiAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImdyaWRfNCI+eyRtb2QtPkxhbmcoJ2dyb3VwJyl9OjwvcD4KICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJncmlkXzgiPgogICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9ImdyaWRfMTIiIG5hbWU9InskYWN0aW9uaWR9ZmlsdGVyX2dyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRncm91cHMgc2VsZWN0ZWQ9JGZpbHRlci5ncm91cH0KICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgey9pZn0KICAgICAgICAgIDxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgICAgICAgICAgICAgIDxwIGNsYXNzPSJncmlkXzQiPnskbW9kLT5MYW5nKCd1c2VyZmlsdGVyJyl9OjwvcD4KICAgICAgICAgICAgICAgPHAgY2xhc3M9ImdyaWRfOCI+CiAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9ImdyaWRfMTIiIHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9ZmlsdGVyX3JlZ2V4IiB2YWx1ZT0ieyRmaWx0ZXIucmVnZXh9Ii8+CiAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICA8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICAgICAgICAgICAgICA8cCBjbGFzcz0iZ3JpZF80Ij57JG1vZC0+TGFuZygncHJvcGVydHlmaWx0ZXInKX06PC9wPgogICAgICAgICAgICAgICA8cCBjbGFzcz0iZ3JpZF84Ij4KICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9ImdyaWRfMTIiIG5hbWU9InskYWN0aW9uaWR9ZmlsdGVyX3Byb3BlcnR5c2VsIj57aHRtbF9vcHRpb25zIG9wdGlvbnM9JGRlZm5saXN0IHNlbGVjdGVkPSRmaWx0ZXIucHJvcHNlbH08L3NlbGVjdD4KICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgIDwvZGl2PgogICAgICAgICAgIDxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgICAgICAgICAgICAgIDxwIGNsYXNzPSJncmlkXzQiPnskbW9kLT5MYW5nKCdwcm9wcmVnZXgnKX06PC9wPgogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJncmlkXzgiPgogICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJncmlkXzEyIiB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfWZpbHRlcl9wcm9wZXJ0eSIgdmFsdWU9InskZmlsdGVyLnByb3B2YWx9IiBzaXplPSIzMCIvPgoJCSAgIDxwIGNsYXNzPSJncmlkXzEyIj57JG1vZC0+TGFuZygnaW5mb19wcm9wcmVnZXgnKX08L3A+CiAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgIDwvZGl2PgogICAgICAgICAgIDxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgICAgICAgICAgICAgIDxwIGNsYXNzPSJncmlkXzQiPnskbW9kLT5MYW5nKCdwcm9tcHRfbG9nZ2VkaW5vbmx5Jyl9OjwvcD4KICAgICAgICAgICAgICAgPHAgY2xhc3M9ImdyaWRfOCI+CiAgICAgICAgICAgICAgICAgICB7eHRfeWVzbm9fb3B0aW9ucyBwcmVmaXg9JGFjdGlvbmlkIG5hbWU9J2ZpbHRlcl9sb2dnZWRpbm9ubHknIHNlbGVjdGVkPSRmaWx0ZXIubG9nZ2VkaW5vbmx5fQogICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgICAgICAgICAgICAgPHAgY2xhc3M9ImdyaWRfNCI+eyRtb2QtPkxhbmcoJ3Byb21wdF9kaXNhYmxlZHN0YXR1cycpfTo8L3A+CiAgICAgICAgICAgICAgIDxwIGNsYXNzPSJncmlkXzgiPgoJICAgICAgICAgICB7JG9wdHM9WycnPT4kbW9kLT5MYW5nKCdhbnknKSwgJ2Rpcyc9PiRtb2QtPkxhbmcoJ2Rpc2FibGVkJyksICdlbic9PiRtb2QtPkxhbmcoJ2VuYWJsZWQnKV0gfQogICAgICAgICAgICAgICAgIDxzZWxlY3QgbmFtZT0ieyRhY3Rpb25pZH1maWx0ZXJfZGlzYWJsZWQiPgoJCSAgICAgICB7aHRtbF9vcHRpb25zIG9wdGlvbnM9JG9wdHMgc2VsZWN0ZWQ9JGZpbHRlci5kaXNhYmxlZHN0YXR1c30KCQkgICA8L3NlbGVjdD4KICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgIDwvZGl2PgogICAgICAgPC9kaXY+CgogICA8ZGl2IGNsYXNzPSJncmlkXzYiPgogICAgICAgPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgICAgICAgICA8cCBjbGFzcz0iZ3JpZF8zIj57JG1vZC0+TGFuZygncHJvbXB0X3ZpZXdwcm9wcycpfTo8L3A+CiAgICAgICAgICAgPHNlbGVjdCBjbGFzcz0iZ3JpZF85IiBuYW1lPSJ7JGFjdGlvbmlkfWZpbHRlcl92aWV3cHJvcHNbXSIgbXVsdGlwbGU9Im11bHRpcGxlIiBzaXplPSI1Ij4KICAgICAgICAgICAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRhbGxkZWZucyBzZWxlY3RlZD0kdmlld3Byb3BzfQogICAgICAgICAgIDwvc2VsZWN0PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgICAgICAgICAgIDxwIGNsYXNzPSJncmlkXzMiPnskbW9kLT5MYW5nKCdzb3J0YnknKX06PC9wPgogICAgICAgICAgICA8c2VsZWN0IGNsYXNzPSJncmlkXzkiIG5hbWU9InskYWN0aW9uaWR9ZmlsdGVyX3NvcnRieSI+e2h0bWxfb3B0aW9ucyBvcHRpb25zPSRzb3J0bGlzdCBzZWxlY3RlZD0kZmlsdGVyLnNvcnRieX08L3NlbGVjdD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICAgICAgICAgICA8cCBjbGFzcz0iZ3JpZF8zIj57JG1vZC0+TGFuZygndXNlcmxpbWl0Jyl9OjwvcD4KICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz0iZ3JpZF85IiBuYW1lPSJ7JGFjdGlvbmlkfWZpbHRlcl9saW1pdCI+e2h0bWxfb3B0aW9ucyBvcHRpb25zPSRsaW1pdHMgc2VsZWN0ZWQ9JGZpbHRlci5saW1pdH08L3NlbGVjdD4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iY19mdWxsIGNmIGdyaWRfMTIiPgogICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1maWx0ZXIiIHZhbHVlPSJ7JG1vZC0+TGFuZygnYXBwbHlmaWx0ZXInKX0iLz4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9ZmlsdGVyX3Jlc2V0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3Jlc2V0Jyl9Ii8+CjwvZGl2Pgo8L2ZpZWxkc2V0PnsqICNtYW1zX2ZpbHRlcmZvcm0gKn0KCjxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgPGRpdiBjbGFzcz0iZ3JpZF8xMCI+CiAgICA8aW5wdXQgaWQ9Im1hbXNfZmlsdGVyYm94IiB0eXBlPSJjaGVja2JveCIgdmFsdWU9IjEiLz48bGFiZWwgZm9yPSJtYW1zX2ZpbHRlcmJveCI+eyRtb2QtPkxhbmcoJ3ZpZXdfZmlsdGVyJyl9IHtpZiAkZmlsdGVyX2FwcGxpZWR9PHNwYW4gc3R5bGU9ImNvbG9yOiBncmVlbjsiPih7JG1vZC0+TGFuZygnYXBwbGllZCcpfSl7L2lmfTwvc3Bhbj48L2xhYmVsPiZuYnNwOwogICAgPHNwYW4gdGl0bGU9InskbW9kLT5MYW5nKCd1c2Vyc21hdGNoaW5nJyl9Ij57eHRpbWFnZSBpbWFnZT0ndXNlcnMuZ2lmJyBhbHQ9IiJ9ID0geyRudW11c2Vyc308L3NwYW4+Jm5ic3A7CiAgICAgIHtpZiBpc3NldCgkYWRkX3VybCl9PGEgaHJlZj0ieyRhZGRfdXJsfSIgdGl0bGU9InskbW9kLT5MYW5nKCd0aXRsZV9hZGRfdXNlcicpfSI+e3h0aW1hZ2UgaW1hZ2U9J2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJ30geyRtb2QtPkxhbmcoJ2FkZHVzZXInKX08L2E+ey9pZn0KICAgICAge2lmIGlzc2V0KCRpbXBvcnRfdXJsKX08YSBocmVmPSJ7JGltcG9ydF91cmx9IiB0aXRsZT0ieyRtb2QtPkxhbmcoJ3RpdGxlX2ltcG9ydF91c2VycycpfSI+e3h0aW1hZ2UgaW1hZ2U9J2ljb25zL3N5c3RlbS9pbXBvcnQuZ2lmJ30geyRtb2QtPkxhbmcoJ3Byb21wdF9pbXBvcnR1c2VycycpfTwvYT57L2lmfQogICAgICB7aWYgaXNzZXQoJGV4cG9ydF91cmwpfTxhIGhyZWY9InskZXhwb3J0X3VybH0iIHRpdGxlPSJ7JG1vZC0+TGFuZygndGl0bGVfZXhwb3J0X3VzZXJzJyl9Ij57eHRpbWFnZSBpbWFnZT0naWNvbnMvc3lzdGVtL2V4cG9ydC5naWYnfSB7JG1vZC0+TGFuZygncHJvbXB0X2V4cG9ydHVzZXJzJyl9PC9hPnsvaWZ9CiAgICA8YSBpZD0icXVpY2tmaW5kIj57YWRtaW5faWNvbiBpY29uPSd2aWV3LmdpZid9IHskbW9kLT5MYW5nKCdxdWlja2ZpbmRfdXNlcicpfTwvYT4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJncmlkXzIgdGV4dC1yaWdodCI+CiAge2lmICRpdGVtY291bnQgPiAwfQogICAgICB7aWYgaXNzZXQoJG5hdmlnYXRpb24uZmlyc3RwYWdlX3VybCl9CiAgICAgICAgPGEgaHJlZj0ieyRuYXZpZ2F0aW9uLmZpcnN0cGFnZV91cmx9Ij57JG1vZC0+TGFuZygnZmlyc3RwYWdlJyl9PC9hPiZuYnNwOwogICAgICA8YSBocmVmPSJ7JG5hdmlnYXRpb24ucHJldnBhZ2VfdXJsfSI+eyRtb2QtPkxhbmcoJ3ByZXZwYWdlJyl9PC9hPiZuYnNwOwogICAgICB7L2lmfQogICAgeyRtb2QtPkxhbmcoJ3BhZ2UnKX0geyRuYXZpZ2F0aW9uLmN1cnBhZ2V9IHskbW9kLT5MYW5nKCdwcm9tcHRfb2YnKX0geyRuYXZpZ2F0aW9uLm5wYWdlc30KICAgIHtpZiBpc3NldCgkbmF2aWdhdGlvbi5sYXN0cGFnZV91cmwpfQogICAgJm5ic3A7PGEgaHJlZj0ieyRuYXZpZ2F0aW9uLm5leHRwYWdlX3VybH0iPnskbW9kLT5MYW5nKCduZXh0cGFnZScpfTwvYT4KICAgICAgJm5ic3A7PGEgaHJlZj0ieyRuYXZpZ2F0aW9uLmxhc3RwYWdlX3VybH0iPnskbW9kLT5MYW5nKCdsYXN0cGFnZScpfTwvYT4KICB7L2lmfQogIHsvaWZ9CiAgPC9kaXY+CjwvZGl2Pgp7KntpZiAhaXNzZXQoJGdyb3Vwcyl9Kn0KeyogIDxkaXYgY2xhc3M9InJlZCBjZW50ZXIiPnskbW9kLT5MYW5nKCdub2dyb3VwcycpfTwvZGl2Pip9CntpZiAkaXRlbWNvdW50ID4gMH0KICA8dGFibGUgY2xhc3M9InBhZ2V0YWJsZSI+Cgk8dGhlYWQ+CgkJPHRyPgoJCQk8dGg+eyR1c2VybmFtZXRleHR9PC90aD4KCQkJPHRoPnskY3JlYXRlZHRleHR9PC90aD4KCQkJPHRoPnskZXhwaXJlc3RleHR9PC90aD4KICAgICAgICB7aWYgaXNzZXQoJHZpZXdwcm9wcykgJiYgaXNfYXJyYXkoJHZpZXdwcm9wcyl9CiAgICAgICAgICAgIHtmb3JlYWNoIGZyb209JHZpZXdwcm9wcyBpdGVtPSdvbmUnfQogICAgICAgICAgICAgIDx0aD57JGFsbGRlZm5zLiRvbmV9PC90aD4KICAgICAgICAgICAgey9mb3JlYWNofQogICAgICAgIHsvaWZ9CiAgICAgIDx0aCBjbGFzcz0icGFnZWljb24ge2xpdGVyYWx9e3NvcnRlcjogZmFsc2V9ey9saXRlcmFsfSI+Jm5ic3A7PC90aD4KCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiB7bGl0ZXJhbH17c29ydGVyOiBmYWxzZX17L2xpdGVyYWx9Ij4mbmJzcDs8L3RoPgoJCQk8dGggY2xhc3M9InBhZ2VpY29uIHtsaXRlcmFsfXtzb3J0ZXI6IGZhbHNlfXsvbGl0ZXJhbH0iPiZuYnNwOzwvdGg+CgkJCTx0aCBjbGFzcz0icGFnZWljb24ge2xpdGVyYWx9e3NvcnRlcjogZmFsc2V9ey9saXRlcmFsfSI+Jm5ic3A7PC90aD4KCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiB7bGl0ZXJhbH17c29ydGVyOiBmYWxzZX17L2xpdGVyYWx9Ij4mbmJzcDs8L3RoPgoJCQk8dGggY2xhc3M9InBhZ2VpY29uIHtsaXRlcmFsfXtzb3J0ZXI6IGZhbHNlfXsvbGl0ZXJhbH0iPjxpbnB1dCBpZD0ic2VsZWN0YWxsIiB0eXBlPSJjaGVja2JveCIgbmFtZT0ianVuayIgb25jbGljaz0ic2VsZWN0X2FsbCgpOyIvPjwvdGg+CgkJPC90cj4KCTwvdGhlYWQ+Cgk8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CiAgPHRyIGNsYXNzPSJ7Y3ljbGUgdmFsdWVzPSdyb3cxLHJvdzInfSI+CgkJCTx0ZD4KCQkJICB7aWYgJGVudHJ5LT51bnNhZmVwYXNzd29yZH08c3BhbiBjbGFzcz0idW5zYWZlcGFzc3dvcmQiIHRpdGxlPSJ7JG1vZC0+TGFuZygnaW5mb191bnNhZmVwYXNzd29yZCcpfSI+eyRtb2QtPkxhbmcoJ3Vuc2FmZScpfTwvc3Bhbj57L2lmfQogICAgICAgICAge2lmICRlbnRyeS0+ZGlzYWJsZWR9CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ1c2VyX2Rpc2FibGVkIiB0aXRsZT0ieyRtb2QtPkxhbmcoJ2luZm9fZGlzYWJsZWQnKX0iPnskZW50cnktPnVzZXJuYW1lfTwvc3Bhbj4KCQkJICB7ZWxzZSBpZiAkZW50cnktPm11c3RfdmFsaWRhdGV9CgkJCSAgICAgPHNwYW4gY2xhc3M9InVzZXJfbXVzdHZhbGlkYXRlIiB0aXRsZT0ieyRtb2QtPkxhbmcoJ2luZm9fbXVzdF92YWxpZGF0ZScpfSI+eyRlbnRyeS0+dXNlcm5hbWV9PC9zcGFuPgoJCQkgIHtlbHNlaWYgc3RydG90aW1lKCRlbnRyeS0+ZXhwaXJlcykgPCAkc21hcnR5Lm5vd30KCQkJICAgICA8c3BhbiBjbGFzcz0idXNlcl9leHBpcmVkIiB0aXRsZT0ieyRtb2QtPkxhbmcoJ2luZm9fZXhwaXJlZCcpfSI+eyRlbnRyeS0+dXNlcm5hbWV9PC9zcGFuPgogICAgICAgICAge2Vsc2V9CiAgICAgICAgICAgICAgeyRlbnRyeS0+dXNlcm5hbWV9CiAgICAgICAgICB7L2lmfQoJCQk8L3RkPgoJCQk8dGQ+eyRlbnRyeS0+Y3JlYXRlZHxkYXRlX2Zvcm1hdDonJXgnfTwvdGQ+CgkJCTx0ZD4KCQkJICB7aWYgc3RydG90aW1lKCRlbnRyeS0+ZXhwaXJlcykgPCAkc21hcnR5Lm5vd30KICAgICAgICAgIDxzcGFuIHN0eWxlPSJjb2xvcjogb3JhbmdlOyIgdGl0bGU9InskbW9kLT5MYW5nKCdpbmZvX2V4cGlyZWQnKX0iPnskZW50cnktPmV4cGlyZXN8ZGF0ZV9mb3JtYXQ6JyV4J308L3NwYW4+CiAgICAgICAge2Vsc2V9CiAgICAgICAgICAgIHskZW50cnktPmV4cGlyZXN8ZGF0ZV9mb3JtYXQ6JyV4J30KICAgICAgICB7L2lmfQoJCQk8L3RkPgogICAgICB7aWYgaXNzZXQoJHZpZXdwcm9wcykgJiYgaXNzZXQoJGVudHJ5LT5leHRyYSl9CiAgICAgICAgICB7Zm9yZWFjaCBmcm9tPSR2aWV3cHJvcHMgaXRlbT0nb25lJ30KICAgICAgICAgICAgPHRkPgoJCQkJICAgIHtpZiAhZW1wdHkoJGVudHJ5LT5leHRyYVskb25lXSl9CiAgICAgICAgICAgICAgICB7aWYgJGVudHJ5LT5leHRyYVskb25lXS0+ZGVmbi50eXBlID09IDh9CiAgICAgICAgICAgICAgICAgICAgeyRlbnRyeS0+ZXh0cmFbJG9uZV0tPnZhbHxkYXRlX2Zvcm1hdDonJXgnfQogICAgICAgICAgICAgICAge2Vsc2V9CiAgICAgICAgICAgICAgICAgICAgeyRlbnRyeS0+ZXh0cmFbJG9uZV0tPnZhbH0KICAgICAgICAgICAgICAgIHsvaWZ9CiAgICAgICAgICAgIHsvaWZ9CgkJCQk8L3RkPgogICAgICAgICAgey9mb3JlYWNofQogICAgICB7L2lmfQogICAgPHRkPgoJCQkgIHtpZiAkZW50cnktPmRpc2FibGVkfQogICAgICAgICAgPGEgaHJlZj0ie21vZF9hY3Rpb25fdXJsIGFjdGlvbj1hZG1pbl9lbmFibGVfdXNlciB1aWQ9JGVudHJ5LT5pZCBzdGF0ZT0xfSI+e3h0aW1hZ2UgaW1hZ2U9J2ljb25zL3N5c3RlbS9mYWxzZS5naWYnIGFsdD0kbW9kLT5MYW5nKCdlbmFibGVfdXNlcicpfTwvYT4KCQkJICB7ZWxzZX0KCQkJICAgIDxhIGhyZWY9Inttb2RfYWN0aW9uX3VybCBhY3Rpb249YWRtaW5fZW5hYmxlX3VzZXIgdWlkPSRlbnRyeS0+aWQgc3RhdGU9MH0iPnt4dGltYWdlIGltYWdlPSdpY29ucy9zeXN0ZW0vdHJ1ZS5naWYnIGFsdD0kbW9kLT5MYW5nKCdkaXNhYmxlX3VzZXInKX08L2E+CiAgICAgICAgey9pZn0KCQkJPC90ZD4KCQkJPHRkPntpZiBpc3NldCgkZW50cnktPmxvZ291dGxpbmspfXskZW50cnktPmxvZ291dGxpbmt9ey9pZn08L3RkPgoJCQk8dGQ+eyRlbnRyeS0+aGlzdG9yeWxpbmt8ZGVmYXVsdDonJ308L3RkPgoJCQk8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt8ZGVmYXVsdDonJ308L3RkPgoJCQk8dGQ+e2lmIGlzc2V0KCRlbnRyeS0+ZGVsZXRlbGluayl9eyRlbnRyeS0+ZGVsZXRlbGlua317L2lmfTwvdGQ+CgkJCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJidWxrc2VsZWN0IiBuYW1lPSJ7JGFjdGlvbmlkfXNlbGVjdGVkW10iIHZhbHVlPSJ7JGVudHJ5LT5pZH0iLz48L3RkPgoJCTwvdHI+CnsvZm9yZWFjaH0KCTwvdGJvZHk+CjwvdGFibGU+CnsvaWZ9Cgp7JGVuZGZvcm19Cgp7aWYgJGl0ZW1jb3VudCA+IDB9CiAgPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgIDxkaXYgY2xhc3M9ImdyaWRfMTAiPgogICAgICAmbmJzcDsKICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iZ3JpZF8yIHRleHQtcmlnaHQiPgogICAgICAgICAge2lmIGlzc2V0KCRuYXZpZ2F0aW9uLmZpcnN0cGFnZV91cmwpfQogICAgICAgICAgICA8YSBocmVmPSJ7JG5hdmlnYXRpb24uZmlyc3RwYWdlX3VybH0iPnskbW9kLT5MYW5nKCdmaXJzdHBhZ2UnKX08L2E+Jm5ic3A7CiAgICAgICAgICAgIDxhIGhyZWY9InskbmF2aWdhdGlvbi5wcmV2cGFnZV91cmx9Ij57JG1vZC0+TGFuZygncHJldnBhZ2UnKX08L2E+Jm5ic3A7CiAgICAgICAgICB7L2lmfQogICAgICAgIHskbW9kLT5MYW5nKCdwYWdlJyl9IHskbmF2aWdhdGlvbi5jdXJwYWdlfSB7JG1vZC0+TGFuZygncHJvbXB0X29mJyl9IHskbmF2aWdhdGlvbi5ucGFnZXN9CiAgICAgICAge2lmIGlzc2V0KCRuYXZpZ2F0aW9uLmxhc3RwYWdlX3VybCl9CiAgICAgICAgICAmbmJzcDs8YSBocmVmPSJ7JG5hdmlnYXRpb24ubmV4dHBhZ2VfdXJsfSI+eyRtb2QtPkxhbmcoJ25leHRwYWdlJyl9PC9hPgogICAgICAgICAgICAmbmJzcDs8YSBocmVmPSJ7JG5hdmlnYXRpb24ubGFzdHBhZ2VfdXJsfSI+eyRtb2QtPkxhbmcoJ2xhc3RwYWdlJyl9PC9hPgogICAgICAgIHsvaWZ9CiAgICA8L2Rpdj4KICA8L2Rpdj4KICB7aWYgIWVtcHR5KCRidWxrX2FjdGlvbnMpfQogICAgPGhyPgogICAgPGRpdiBjbGFzcz0idGV4dC1yaWdodCI+CiAgICAgIDxsYWJlbD57JG1vZC0+TGFuZygnd2l0aF9zZWxlY3RlZCcpfToKICAgICAgICAgPHNlbGVjdCBuYW1lPSJ7JGFjdGlvbmlkfWJ1bGtfYWN0aW9uIj4KICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iIj57JG1vZC0+TGFuZygnbm9uZScpfTwvb3B0aW9uPgogICAgICAgICAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPSRidWxrX2FjdGlvbnN9CiAgICAgICAgIDwvc2VsZWN0PgogICAgICA8L2xhYmVsPgogICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBpZD0iZG9idWxrIiBuYW1lPSJ7JGFjdGlvbmlkfWRvYnVsayIgdmFsdWU9InskbW9kLT5MYW5nKCdzdWJtaXQnKX0iLz4KICAgIDwvZGl2PgogIHsvaWZ9CnsvaWZ9CgoK]]></data>
	</file>
</module>
