send object as parameters into multipart-form - restsharp

I want to send and object ( application/xml ) into multipart-form.
This is the capture of request in java what goes right:
POST /OpenKM/services/rest/document/create HTTP/1.1
Accept: application/xml
Content-Type: multipart/form-data; boundary=Boundary_1_1316797734_1423153602196
Authorization: Basic b2ttQWRtaW46YWRtaW4=
MIME-Version: 1.0
User-Agent: Java/1.7.0_60
Host: localhost:8180
Connection: keep-alive
Transfer-Encoding: chunked
74
--Boundary_1_1316797734_1423153602196
**Content-Type: application/xml
Content-Disposition: form-data; name="doc"**
20c
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><document><path>/okm:root/myDoc.doc</path><permissions>0</permissions><subscribed>false</subscribed><checkedOut>false</checkedOut><convertibleToDxf>false</convertibleToDxf><convertibleToPdf>false</convertibleToPdf><convertibleToSwf>false</convertibleToSwf><description></description><locked>false</locked><signed>false</signed></document>
--Boundary_1_1316797734_1423153602196
Content-Type: application/octet-stream
Content-Disposition: form-data; name="content"
This is what I get from .net
POST /OpenKM/services/rest/document/create HTTP/1.1
Authorization: Basic b2ttQWRtaW46YWRtaW4=
Accept: application/xml
User-Agent: RestSharp/104.4.0.0
Host: localhost:8180
Content-Type: multipart/form-data; boundary=-----------------------------28947758029299
Content-Length: 24353
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
-------------------------------28947758029299
**Content-Disposition: form-data; name="doc"**
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><document>
<lastModified>01/01/0001 0:00:00</lastModified>
<locked>false</locked>
<checkedOut>false</checkedOut>
<signed>false</signed>
<convertibleToPdf>false</convertibleToPdf>
<convertibleToSwf>false</convertibleToSwf>
<convertibleToDxf>false</convertibleToDxf>
<created>01/01/0001 0:00:00</created>
<path>/okm:root/myDoc.doc</path>
<permissions>0</permissions>
<subscribed>false</subscribed>
</document>
-------------------------------28947758029299
Content-Disposition: form-data; name="content"; filename="myDoc.doc"
Content-Type: application/octet-stream
;
Seems the differences is I'm not indicating that the content is application/xml ( Content-Type: application/xml ? )
This is my code, any suggestion is wellcome
IRestRequest request = new RestRequest(uriHelper.DOCUMENT_CREATE, Method.POST);
request.RequestFormat = DataFormat.Xml;
Document testdoc = new Document();
testdoc.path = "/okm:root/myDoc.doc";
string doc = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" + request.XmlSerializer.Serialize (testdoc).Replace("<Document>", "<document>").Replace("</Document>", "</document>");
request.AddParameter("doc", doc);
byte[] bytes = beanHelper.ReadToEnd(fileStream);
String fileName = Path.GetFileName(docPath);
request.AddFile("content", bytes, fileName);
RestClient client = getClient(url, user, password);
IRestResponse<Document> response = client.Execute<Document>(request);

Related

Adding attachments to mule message

We are kind of stuck and do not know how to send attachments in mule message. We have some code in place that adds outbound attachments, but the values for Content-Disposition and Content-Type are autogenerated by mule and are not matching what is expected on the server. I have pasted the message that we are generating, the message that is expected (note the differences on content-types and content-dispositions).
The content-disposition has to be “inline” on payload and “attachment” on the part of data-file.xml, but instead mule generates Content-Disposition: form-data; name="payload" and Content-Disposition: form-data; name="data-file.xml"
This is the code snippet we are using to generate attachments:
ByteArrayDataSource ds = new org.mule.message.ds.ByteArrayDataSource((byte[])docInput.getDataSet(),ATTACHMENT_FILE_NAME,"application/pdf");
DataHandler dh = new javax.activation.DataHandler(ds);
msg.addOutboundAttachment(ATTACHMENT_FILE_NAME, dh);
Generated-Message-By_mule
POST /Operations/GenerateDocument HTTP/1.1
X-MULE_ENDPOINT: http://bxl-rs-d1-vm:42420/Operations/GenerateDocument
X-MULE_CORRELATION_SEQUENCE: -1
X-MULE_ENCODING: UTF-8
X-MULE_ROOT_MESSAGE_ID: be11dc40-a0af-11e4-89da-080027001cc8
Client-Authorization: YyoAjWLrpsySg7Euxf9zs3S/ujAPjFuRkT7di6/Dk9o=
Content-Type: multipart/mixed; boundary=" WeqbofBr94jK6QxpiWP36xMWse3bxwG21uQZed6”
Date: Tue, 20 Jan 2015 14:22:20 GMT
X-MULE_CORRELATION_GROUP_SIZE: -1
Accept: application/xml
X-MULE_SESSION: rO0ABXNyACNvcmcubXVsZS5zZXNzaW9uLkRlZmF1bHRNdWxlU2Vzc2lvbi7rdtEW7GGKAwAFWgAFdmFsaWRMAA1mbG93Q29uc3RydWN0dAAmTG9yZy9tdWxlL2FwaS9jb25zdHJ1Y3QvRmxvd0NvbnN0cnVjdDtMAAJpZHQAEkxqYXZhL2xhbmcvU3RyaW5nO0wACnByb3BlcnRpZXN0AA9MamF2YS91dGlsL01hcDtMAA9zZWN1cml0eUNvbnRleHR0ACdMb3JnL211bGUvYXBpL3NlY3VyaXR5L1NlY3VyaXR5Q29udGV4dDt4cAFwdAAkYmUxMjc4ODAtYTBhZi0xMWU0LTg5ZGEtMDgwMDI3MDAxY2M4c3IAJWphdmEudXRpbC5Db2xsZWN0aW9ucyRTeW5jaHJvbml6ZWRNYXAbc/kJS0s5ewMAAkwAAW1xAH4AA0wABW11dGV4dAASTGphdmEvbGFuZy9PYmplY3Q7eHBzcgAkb3JnLm11bGUudXRpbC5DYXNlSW5zZW5zaXRpdmVIYXNoTWFwndHZ72dFzgADAAB4cHcMP0AAAAAAABAAAAABdAAMT3BlcmF0aW9uVmFydAAQZ2VuZXJhdGVEb2N1bWVudHhxAH4ACXhweA==
User-Agent: Jakarta Commons-HttpClient/3.1
Host: bxl-rs-d1-vm:42420
Content-Length: 16645
--WeqbofBr94jK6QxpiWP36xMWse3bxwG21uQZed6
Content-Disposition: form-data; name="payload"
Content-Type: application/octet-stream; charset=ISO-8859-1
Content-Transfer-Encoding: binary
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><ns12:GenerateDocumentRequest xmlns:ns2="http://www.sodexo.com/CRM-Integration-Push" xmlns:ns3="http://www.sodexo.com/CRM-Integration-Update" xmlns:ns4="http://www.sodexo.com/CRM-Integration-PushFeedback" xmlns:ns5="http://www.sodexo.be/schemas/organization-api/1.0" xmlns:ns6="http://www.sodexo.be/schemas/organization-api/Phoenix-Organization-Update" xmlns:ns7="http://www.sodexo.com/CRM-Integration-UpdateFeedback" xmlns:ns8="http://www.sodexo.com/CRM-Address-Management" xmlns:ns9="http://net.sxpbelux.eurodb.services/eurodbServiceSchema-addressRequest" xmlns:ns10="http://net.sxpbelux.eurodb.services/eurodbServiceSchema-resultType" xmlns:ns11="http://www.sodexo.com/CRM-Document-Management" xmlns:ns12="http://schemas.datacontract.org/2004/07/Compro.Services.Contracts.DataContracts" xmlns:ns13="http://schemas.datacontract.org/2004/07/System" xmlns:ns14="http://net.sxpbelux.eurodb.services/eurodbServiceSchema-addressSearchRequest" xmlns:ns15="http://www.sodexo.com/CRM-Integration-Base" xmlns:ns16="http://www.sodexo.be/schemas/organization-api/Phoenix-OrganizationServices-Base" xmlns:ns17="http://www.sodexo.be/schemas/organization-api/Phoenix-Organization-UpdateFeedback" xmlns:ns18="http://net.sxpbelux.eurodb.services/eurodbServiceSchema-searchAddressResultType"><ns12:AttachmentFiles xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><ns12:BusinessContext>ServiceVoucher</ns12:BusinessContext><ns12:BusinessReference>Work_Voucher_Assigned</ns12:BusinessReference><ns12:CommunicationKey>CommunicationKey</ns12:CommunicationKey><ns12:DataFile>data-file.xml</ns12:DataFile><ns12:FileFormat>DOCX</ns12:FileFormat></ns12:GenerateDocumentRequest>
--WeqbofBr94jK6QxpiWP36xMWse3bxwG21uQZed6
Content-Disposition: form-data; name="data-file.xml"
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 8bit
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:DocumentData xmlns:ns2="http://www.sodexo.com/CRM-Integration-Template">
<Contacts>
<Contact>
<email>email#abc.com</email>
<firstName>firstName</firstName> ....
Message_expected_by_server
POST http://besvc-hq1000057:42420/Operations/GenerateDocumentWithAttachment/ HTTP/1.1
Date: Wed, 26 Nov 2014 13:31:24 GMT
Accept: application/xml
X-Compro-Username: ASI
Client-Authorization: S/rumqB+P0jfzY54eSeAGrKeMCfy7RYizno5A8D0ulI=
Content-Type: multipart/mixed; boundary="d1261136-19f2-463e-ac7e-e8925c807c7d"
Host: besvc-hq1000057:42420
Content-Length: 26128
Expect: 100-continue
Connection: Keep-Alive
--d1261136-19f2-463e-ac7e-e8925c807c7d
Content-Type: application/xml; charset=utf-8
Content-Disposition: inline
[... some xml data ...]
--d1261136-19f2-463e-ac7e-e8925c807c7d
Content-Type: application/xml; charset=utf-8
Content-Disposition: attachment; filename=order_created_badcom_data.xml
[... some xml content ...]
--d1261136-19f2-463e-ac7e-e8925c807c7d
Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document
Content-Disposition: attachment; filename=a.docx
[... some binary content ...]
--d1261136-19f2-463e-ac7e-e8925c807c7d
Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document
Content-Disposition: attachment; filename=a2.docx
[... some binary content ...]
--d1261136-19f2-463e-ac7e-e8925c807c7d--
If you have any ideas on how to get this to work, kindly let us know.
Thanks and regards,
Priya
Can you try setting the Content-Type on the message as follows:
<set-property propertyName="Content-Type" value="application/pdf" doc:name="Content-Type"/>
You can replace the 'application/pdf' with your desired value. The same applies to the other property you want to modify.
HTH
I finally figured out that this is mule's limitation - we do not have control over setting content-disposition value when adding attachments using message.addOutboundAttachment() method.
The workarounds for this is to have your own http transport connector implemented or implement your client using any rest client framework or http client libraries.
The following will work fine and will set attachment with the message :-
<set-attachment value="#[message.payload]" contentType="application/pdf" attachmentName="#[message.inboundProperties['originalFilename']]" doc:name="Attachment" />
Where you can replace #[message.inboundProperties['originalFilename']] directly with file name or can keep as same if you are using a file inbound endpoint

Corrupt Form data: premature ending

Could you please suggest me as to what is wrong with my POST request? Its giving me an error: Corrupt form data: premature ending
HTTP/1.1 500 Internal Server Error
Server: Apache-Coyote/1.1
Content-Type: text/xml;charset=UTF-8
Content-Length: 116
Date: Tue, 02 Dec 2014 17:02:47 GMT
Connection: close
<?xml version="1.0" encoding="UTF-8" ?>
<resp status="fail">
<err>Corrupt form data: premature ending</err>
</resp>
HTTP POST Request:
POST http://subdomain.domain.com/rest/api/setDataField HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36
Content-Type: multipart/form-data; boundary=----=_Part_2_5070931.1417531039501
Host: subdomain.domain.com
Content-Length: 22679
Expect: 100-continue
----=_Part_2_5070931.1417531039501
Content-Disposition: form-data; name=\file\; filename=\TestFile.pdf\
Content-Type: text/plain
<filedata> &sessionId=686ad734c88c4c429a53e73ad7047eff#1&objName=demoAttachment&id=39896&fieldName=file&fileName=Book1.xlsm&output=xml&value=UEsDBBQABgAIAAAAIQCsmTVRbwEAAD8EAAATAAgCW0NvbnRlbnRfVHlwZXNdLnhtbCCiBAIooAAC%0D%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACs%0D%0AU09PwjAUv5v4HZZezVrwYIxhcFA8Kgf8AF33YJWubfoKjm%2FvWwckGgQNXtZt7e%2Ff63ujSduYbAMB%0D%0AtbMFG%2FIBy8AqV2m7LNjb%2FDm%2FZxlGaStpnIWCbQHZZHx9NZpvPWBGaIsFq2P0D0KgqqGRyJ0HSzsL%0D%0AFxoZ6TMshZdqJZcgbgeDO6GcjWBjHjsONh49wUKuTcymLf3unZTasuyxP9dJFUx6b7SSkYyKja14%0D%0Ag7lbLLQCvinlLLh3UJGJo2QBDJ5h%2B2o539nlhEyKWGuPN5TpB4Vu52e7O9wr1TnoCrKZDPFFNhRK%0D%0AtEZ8uLAqnVvx0yS7zNAqMBxrgMgbqYKbWlkaoHpIbfcOTyglJIq0DH8h%2Ba0wfckrp9YN3SBHH0BW%0D%0AiawxvEuS3s%2F4iNQmINLzcguJ5owgxq0B%2FOe0PekpZSoTNaZHavgAf1ffN2GHzj0RQYgaDm147JIP%0D%0AijQtF8eFbhwrqI5oizT%2B408AAAD%2F%2FwMAUEsDBBQABgAIAAAAIQC1VTAj9AAAAEwCAAALAAgCX3Jl%0D%0AbHMvLnJlbHMgogQCKKAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAArJJNT8MwDIbvSPyHyPfV3ZAQQkt3QUi7IVR%2BgEncD7WNoyQb3b8nHBBU%0D%0AGoMDR3%2B9fvzK2908jerIIfbiNKyLEhQ7I7Z3rYaX%2BnF1ByomcpZGcazhxBF21fXV9plHSnkodr2P%0D%0AKqu4qKFLyd8jRtPxRLEQzy5XGgkTpRyGFj2ZgVrGTVneYviuAdVCU%2B2thrC3N6Dqk8%2Bbf9eWpukN%0D%0AP4g5TOzSmRXIc2Jn2a58yGwh9fkaVVNoOWmwYp5yOiJ5X2RswPNEm78T%2FXwtTpzIUiI0Evgyz0fH%0D%0AJaD1f1q0NPHLnXnENwnDq8jwyYKLH6jeAQAA%2F%2F8DAFBLAwQUAAYACAAAACEAgfQKKwQBAACnAgAA%0D%0AGgAIAXhsL19yZWxzL3dvcmtib29rLnhtbC5yZWxzIKIEASigAAEAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAArJLBTsMwDIbvSLxD5DtNOxBCaOkuCGk3hMoDZKnbhjVxFYdB357QSXSTxrjsEsm2%0D%0A8v%2Bf82e5%2BnK92GFgS15BkeUg0BuqrW8VvFXPNw8gOGpf6548KhiRYVVeXy1fsdcxXeLODiySimcF%0D%0AXYzDo5RsOnSaMxrQp0lDwemYytDKQZutblEu8vxehkMNKI80xbpWENb1LYhqHJLz%2F9rUNNbgE5kP%0D%0Ahz6esJAcxz4tICodWowK9nWWGEGetl9c0j6mZ8HZfSrldBbnGIpLMnxS2HKHGGeO3xbLaXIW5u4P%0D%0AGGdNIKYmZoac3EdxKoLdRr8EekdzADD3so31P1HIo%2B9VfgMAAP%2F%2FAwBQSwMEFAAGAAgAAAAhAO3N%0D%0AKzphAgAA1gQAAA8AAAB4bC93b3JrYm9vay54bWysVMlu2zAQvRfoPxC8y1osWZFgKfCioAaKIkid%0D%0A5OILLVEWYYpUSap2EOTfO5Ki1m0uKdoLZ7jMm%2BXNcH59rjn6TpVmUiTYnTgYUZHLgolDgu%2B3N9YV%0D%0ARtoQURAuBU3wE9X4Ov34YX6S6riX8ogAQOgEV8Y0sW3rvKI10RPZUAE3pVQ1MbBVB1s3ipJCV5Sa%0D%0Amtue48zsmjCBB4RYvQdDliXL6VrmbU2FGUAU5cRA%2BLpijR7R6vw9cDVRx7axclk3ALFnnJmnHhSj%0D%0AOo83ByEV2XNI%2B%2BwGIzKob6BrliupZWkmAGUPQb7J13Vs1x1STucl4%2FRhKDsiTfOF1J0XjhEn2mQF%0D%0AM7RI8Ay28kR%2FO1Bts2wZh1vX9z2gC8iig%2FlzuPDWYRbNrFk29S3fjRbWIgtuLC%2BaLaeLMAujMHzB%0D%0AdvqTvFt1Yb6tmH58ZRWjgpak5WYLdI6Bgstg6nlehwDlWXBDlSCGrqQwwMYrj%2F9a%2BR57VUngGd3R%0D%0Aby1TFNqrIyCdw0rymOz1LTEVahVP8Cre3Wso5I4pUqNjRcRubA%2B9u%2BCMvG2Iv2CN5F3SNmQ9RDbo%0D%0Af1YgnXcT8cDoSf%2BqcbdF50cmCnlKMBD2dKGf%2BuNHVpgqwZ7vOHA%2FnH2i7FCZBEfhNOh9X0D3MwQu%0D%0AeolE3ztfu7lyYVg7uenaAyMVM1DUpnB7hNEsJzzvmAfRPwy8wO1f0LP5rE06BwnFZQl%2Bdn1nETqR%0D%0AbznZNLD8q8izrvypZ638tZcFYbbOlsHL%2F50M4DgeP5cuyooos1UkP8KXdEfLJdEwKUNCECcQMUZt%0D%0Aj1bpDwAAAP%2F%2FAwBQSwMEFAAGAAgAAAAhAJbw16w0GwAAAE4AABEAAAB4bC92YmFQcm9qZWN0LmJp%0D%0AbuxcDXRUx3We93YlLYuEVyAwCDl%2BSILIgOTd1T9GtnZXK36FBOIvsWKxkhaQkbTKaoWFbWAFTmIn%0D%0ATopt6tC6AZzYKa3rHHB6WuzTH0GTlOQ4CbTOCXFzYnDchjQ%2BjTiH2qSnQf3u%2FLx9u1qBIIndnJPZ%0D%0Ac%2FXmzdy5c%2BfOnZk7d%2Bbp7PdzLzx%2FIv8iSwn3Mhu7NjaFZVrSNcQJeHAxpiNCcG1sbEwlI%2FqH8Hsk%0D%0AgV%2BD1xnovI%2FIfszAk%2Fo8C%2BAATAHkAaYCsgE5gGmA2wAuQC5gOsAGuAMwEzALcDtgNmAOIB8wF1AA%0D%0AuBNA%2BkJgID4PUAgoAhQD5sv8PyjRByOBdSyCX4wZLMj68IyyXeiByYdZLIMpTklHrheMlWWFWb%2F6%0D%0AvmYH0sgigbmR%2BZnvpmpMRnZgRlL1E910wVUk6lX1W3HWs%2B2smw2wTZBClO1gHVweOybNUT7TNaqf%0D%0Axgw9J1PQCaRiGnQI7fi1snWsBU%2FvLcjBhRnYqimTJbFRdhbN5zSH0%2Fgl%2BaUb%2F8TvjcY%2FNYfmiRuN%0D%0Af5ojaK6hecAApBv%2FC5D%2BUUAJ4C7AQgCpy2JAKYDmjrvxdAM88r0czwpAJaAKUA2oAdQClgDuASwF%0D%0A1AHuBdwHqAeQ7hG9AJ4NgCCgEbAMsBywArASsAqwGtAEWANoBrQA1gLWAVoB6wEbABsBmwCbAR8D%0D%0AfBxwP6AN8AnAA4B2wBZACNAB6AR0AcKArYBtgO2AbsCDANLIHkAvgPiN4NkP%2BCQgChgAxACDgJ0S%0D%0AZwhPGs0PAx4BPArYDdgD2AuIA4Zrsjxz4vbBfn3WNxz%2BWN%2FwKod%2FMBaL9O1zRO4LFATe9devaB15%0D%0AoLGqTjcyN5b5urpKjMz2faW21vW7%2BsNLRup6ByKByOkH%2FPeuXPxZR8fp%2FUvqluUGWiKDfbGpU2Ij%0D%0AL0ZGoqHoriV1vudsm%2F95WZjN%2FWZRWSBk%2B3L8F798Ypc%2B3142fH%2Fdt7ZmfSR%2B9959U%2Fa1MecF%2B9va%0D%0AyNRvOxtZJNo72BMygnfU5%2B%2B6MDRim2dv7vMFCldqnwp09LY%2Fr%2B18Mtz%2BQsbP7K2xXW8%2FNHa08J%2BW%0D%0AFs%2Fy5zyY%2F9bMjswfzzy6MdQzGD4yM8b2HG7vyGif2T6T1W3ov2%2FR%2BxcXOKrmL2o1ol8ZKMw5sejX%0D%0ADRntgYz2WfT7dO7yWWNfWXTnrMCit2Y2TH195in%2FN76QNL5%2Bd7NyPYaizu5fLWYRjbW6zNhBFStB%0D%0A7r0Yrhoz8sbG%2FDRwWVWhmnfyZVmsuMgVc5FK09jCRK4lFt1AWmAN9fJFPVUejSYKtOKrkIjb%2BGhQ%0D%0A6TpaQqP8FJkPqhyZDzIMkxmh0l2WdAvxXJpOZFhroaOR6SHDUzTdyHCOzA4Zcsn0kOEimSAqnUwQ%0D%0AGZ6iqUilG5Y4mSEyrKXpSeGTmaLwaWpS6Rb6Gk1bMpwjk0YGjyV92BJfS9ObDM9b4hpNeTKELPFz%0D%0AlrhHrqCEpnG7XGNPkdkmwylLPJdMORmUBocs%2BQ52N5%2BNfBa8E2YJjX0yTXmiozMn3yDYtuwHNY3Z%0D%0AtnSbi7DOVpg1JK9Rv7sx9AfKoleytJ%2FzuYG6UGe15iZOZytpwUd4R%2FbuNp0yt%2Bm0Rh3Rz6L4tYzz%0D%0A%2BJvJ5upH9FHEjuhX8feU7YpGM8Bh%2FnZFO4PePszzr2gHUEfYRmVP62fw990MO6MyVHqbTsP%2Bezrx%0D%0AtU2nFfKydhxxRV3UlsVrozKHOYUrmkOzmXVthmWi6irRMlg6%2BrQmbtNpZ%2FKudpLT2MYlcFX7AZkK%0D%0APLgwR1G76wEWheZ5tEcRQQoIL9QWGzt%2FN9kjIpCVJALxamPUQhujltvYg2Q6IVyQIyBZsiPAuZZB%0D%0AFIVkLyB2RL%2BEv0KyDrSQ3kiyUxCnfJKsE5Klsqf1k%2FhLLScsyk0n2aNIJ8lSvqhtBpcslTnMKZBk%0D%0Ap5p1bcaeTtVVouVwyabSF5I9ipYd0Q%2BZXKej1oKd4RGduP0vLc45eZqX6LEJvi5rLTz1sradP3%2FF%0D%0A5UHWpeI5maqQwXLsNQ9xqhvseew01793MzJNOVB9iZ4nKW3TaSl4PyPL1CCX5oKO9%2FE2ENVUTi5L%0D%0Afi9rilPqKeJKSI56%2B4p2VM81JSe4Ilob7DPB1Shiyb1Du%2BJDPP2kvtzC1SzQoPcrmuBK8Hq7mXqG%0D%0A80oL2GgGqbDCHtWnow1KwwXFD69F9ZYWzQaP9J7cojlm6vgWCezkFgmKH16Laiwtygfv9J7corlm%0D%0A6vgWCezkFgmKH16L3JYWFYB3ek9u0R1m6vgWCezkFgmKNMtdNadJBzvL5zzavaTOqrTTEiFhbNAI%0D%0AtTHSXxujPrcxkpONEW01o9J4o7k23cxLI9LGaOTZGI19G993Ahlb0C3sKcu6l2uxRaTxNo3pIaY7%0D%0AHDTpIOxNSZYm5wwNlC7K%2BZxW0MuWFdQQRacx7eOgZBLgb2ZzJx2JbqhPwVXvqelqhUqYyON3%2FrTj%0D%0Ac2B9u2j2DonDtsXO%2Bh01DMJKClSxNssGfx%2FQH4aJTYtjCeT%2BS4jn14CQS%2FBG1F57794XycVRhJfH%0D%0A8f43iGu8GqJJeGNj%2FQBseQ8UHfxVjmPV4dtPZe149b7YHIfokxFBjHbXSYGIvPy%2FF37xxRdeWhlf%0D%0AFbv8nTMLL1LFpADUB6Q6im9NIxWjN97U1GKpVQvGmrCpFwQEm%2BKvYP4tzjJjx1KkM5sZ4%2BSVKr%2Ff%0D%0A7vuHs%2F9TnWfZO5o70PQ7RrMElw%2FJMr9FpNmte0wzV196XMpYX3rSjI2YsTNm7KwZO2%2FGLpixS2Zs%0D%0A1IxdNWOCA6WSGnw0bvg83Pznxd8aeIpq4T0SKe6kWECmJnIVFj0r4E%2FazZUQth3tvbURaKUeJ7tI%0D%0A%2BLDp6YYcyBOoNFvphnqnzSb5trNzF%2BvHeaJti9DDhGYqXHqewag4jizy81A4ACDMfui%2FAz81zR0U%0D%0AWz%2FWvb%2BM29hqeEyVvFCZOGhl5y7h%2BbRHu169NRh1bku9qh1DDg3%2B%2BWLYoyIclEdBxmNLOV2asbk8%0D%0A5MzzJXj%2Fqb3GYz6ePyrzScspfAnji%2FIVfdpbHAfo%2B4VcFY%2BPm1OMmmQS8qLYHfASEp19RxfwekTp%0D%0AsbERlKP5UZ1NqXoUXVWO0g9Y%2BFB4N%2FuMo0NUmeOWeCqdS9fJs%2BJuB54DfUFpXnNNE7IjkdTbr40d%0D%0AQrqS%2BxRgGjL9DNKVvK3ps0HvvKwk24JPSWdlusKnV14b6qFwRubTrLwFGXfAO6r6j9qkFhziiwLp%0D%0ALgVVD6cxgZxLUFiiT%2FiA%2BiXhjErZUAED6zw9D8mnlUhLmrR0lZwHvX6J69Ub9fWyn0gGtBBRuxzI%0D%0AJ%2BuDglWuNUi%2FkCY9jnQlt1R5j6TgM9C%2FCnyyjihsR1zIuZ%2FLeTbmHGqL2oESP8fxflTip9I%2FJNNt%0D%0AVr0AfjwNPu1Yt09ApyUlnfgsAS9kv1FwIS74PMT5XI53aod5FgT8zUirl%2Fj1KfhDeCd6uexbwlgE%0D%0A%2FuN4J5uQQn8K%2FjG8E73bxVDAoYXQN7fEP5qCT8lETzn76P04ypKH0nKazc8KJAlpzIg3wk2XTmkH%0D%0AoJObleIDT1hfxFjc0e9QpZKfLuTa2XKUGv7hjI0ZTCvG8UYbjhC2yt9CLDnlOMaowoJVjiOBakAl%0D%0Aw55QoJXjWYQEb2pSLSVNl1gejuUBic5UvJrxSRWoIqWCChxEjEvaOp4N96Tq%2FM0qSG56OeQzThqe%0D%0ASSSVYyV%2FS%2FQWdQkprc6PsJUm3dzz2nc0VkY9bS7FLC681ES9cDgbZnWm2BANO2zFOASirmfDjkw7%0D%0AnC603FG8AIdG9ZZ04grpNh2ulO2kKsNE38GPepLpOzh9UjnwYKNlP26Jk4VOdKjeAxb6J2U8H%2FWO%0D%0AWNIv8LiRuYQdZZdkWeKBpmaiMxuH%2Bm4Zn46DYlJgSnfg8H%2BLiGfOAs52Gc9HnMwOaqMDpsBRiU80%0D%0Aj1noHLfQIZOH8PNQ9qyMU72XLHS4sKV8%2BLYCceLHRaNZ8lMi4pnEg9sSb5Fx4qdf4hM%2FQzJOdGgZ%0D%0AV3RoeSV%2BiIejlvhJC52zFjrnEVf9dYHSLfpAOqFpo0g96xJ7l2ftXAeYXXsVMtwUie4Y2B4Ox4ym%0D%0AcN%2Bg4Q9FDebV57MKXWNXqT%2FY65hU6%2FF8FVPrgqZdjYN9nbHuSB%2Fmhyrg%2BOtrqEbCgyrMxvOTmLZc%0D%0AeEbwJO141n6c53%2BC%2FbedFlN6Uu9Opn4jqX4nS1SfWnui%2Fq9Cyx1wZWYDZgBGmcEa9TdYj4a5TZ%2FH%0D%0AViK%2BXH%2FN%2FgZbrVPKfNag2zCilsp2EP9n07TXAEYJW6MTvaWgQ7Qa9DJWL8vZNQPxq5BTDmtUR4h9%0D%0AsegumP9rgEPSpvNDH8S3M9wuUWoZ1w7UZ7D1ei1bp1P9LXi%2FcT1TGT9qNIKWWqgel7UejkK1WOmP%0D%0AQv43pp9rtqM13BMWvS7aQh2q2iMb0i5w0reHRuSN67tNtie5NtUe3hBLLdb2GKBP%2BjYbT9J4l3xi%0D%0AoX31FeaLxaLdHYMxFjY2%2BtvXhHoRqTMK12%2FH%2FQvS%2F45IxLWjMMfpfNIfGtD0J92PuN1ur7ulxlNb%0D%0AylxumyOQxfL06Vqx211RtXs459FlPZGOUI921tXaH%2BrUnm4M9dgHwtldgWg4FHOEOnpm3tkSDXcd%0D%0ACHf2hFjmii52wrE%2BOpjjDw71R4CYV7A%2B3Nvfw0KxcEM42r3Tpk9%2F2j84EIv0dmc%2BbG%2BweZv7McDs%0D%0AfQa7u6e7szu2JceZ42zBZaUFhqt1sMPIeK7dH67fGomGAz3MX8ICob7OcI%2FhYwOGPxLpCYdY3105%0D%0ATsMwNsW7Y9sNX38%2FK9ZD2sKyQKS3F5ldGOQDJYXacLEc%2BGdp5DNnoW1uvEBvZvXRaCRqrHs8PDAY%0D%0A%2F9Ga8FC8IQuDSYsXQs0iPRqbJ2cBbbi08K6yBqjGtBh7xjYjc96yyPpIg%2BHWi4N9Xfr8nGlOnx4v%0D%0A31jd3B%2Fu00v2FzV09xqRjpEHWyL9G%2Fqt90%2FK%2BQRxc39w%2FwQnMuIOCXX5ZEpj2WQ%2FloitWObC%2BMX4%0D%0ATY6bZwAOPb43p6V3svV7gfszaUi347YG3UBqx9nQOtzqWIkbIAF%2Bk2NyvOD%2Bj2kfTrZ%2BP0h%2FV26k%0D%0Au3DDI3oLcldFYB7w%2B0fKypwMKfJI86MFPC%2BbBWiVpXs5AfKVUJfyoDPhMRhy1Ce109rWOyVuh3jS%0D%0A1ZJJB%2FI%2FaqNAfxNz8xtUDE8ifhHPStlJxNpr753DQfv1%2FY%2BT7YDx3LmQRJVRu6%2Fjb7xRsybvb5w9%0D%0ATpqqBz%2BoZwmXdet17pugL5YKkV7Pr0betVv3qwnHujCPlhNHN%2BFXM4Cv%2FGpEoR7v9BSGFfWV0GmK%0D%0AWaWa%2Bm4dO%2Bmkr3qdelfkT0RBSEvj5r3Y3711I5W5Xj7tMUSVyX5vWc2x4xOtqa3bw%2FXhmIcW00t%2B%0D%0Ae2hAj%2FHFdMTrrvG6S5lhd0wLYC0tEGupvlutpfO0b6i11NGj1lJXTK2lRpdaS3PZS2otdUTUWsp6%0D%0A5FqauVMvlmtpdjdfSyds5euhr9LIG5sCG3UKTNx37MrDQb1nx2xwje9plyV5cyswSzf%2BBlpXhL1g%0D%0AGTbMRTAKizDjLcEWXMz%2Fy7AK%2BHBDzoOUANaDJvya4U0WKU24Dxjg60SrTBGrR5tcRapBlUpSahCm%0D%0AeRnuFK7GrwgpdMt0EPf9emBi%2BvEcQEonGcX85qmBWvvx6%2BGpIayH3Ujv4%2Ff6EsJz4WJQG%2B4mpnq2%0D%0Ay38jWXjAZw14dFtkEUXt27AyhXDjkHjsBmdhcNMGeRDflD8A2MrvDjdz5wWlh4FhffPAV9EGWWyG%0D%0A3IKQRBmPB1FTOjpB%2BFCIBsmISpaBJwP0OnAHMowcuqe8GvV3cM5S7yr%2FXVpNIYfBrc9PRdAS4sIq%0D%0AnU3goA8%2Bkwh7iEukFbcsB8BbGLIqB34bf6N8khmVjyHWARrN4D6INvigCTHk90K%2BqqetQ6TE7Gcv%0D%0ANKgRvdPATyICaEkltKcRFEohITfAj5gf%2BUHkiHb6kCtOLipkuhcnGKIl1ZPu5wDnr5dr4Y01gOy4%0D%0AEHolDLmQBjTiR2MlyPuRtKYVqYnxcCMtupX%2BJ5%2BeDrfIdJgOedgUzwLMRjwfzwJAIT8hSNioYoa2%0D%0AzviJu%2BQTrcLjPdWJNSbRg6%2B9p2MTPtHd8ry0Lr6xsY%2FqE5fBvc8XJX3a6G5zESPZEGrCfCay3iTP%0D%0AIfkOx8YW4QqWFW9sjCwpCiQcdo%2FpSdc0ciJ80HYIX8w%2BpHo%2F6LaSwD8M%2Bd5MnW%2B%2Fc1tL5%2FnAis%2FV%0D%0AFIz%2B5ysvf4HKko6P5PXoS5%2F4WfPf7voJG33k1XyVTk%2By3OJcpRZrC1imVo87dxnZwSFsiOOLXMyW%0D%0AvdHve%2F9tF8uwb%2Bru81Sd2iOj5d6svTJaVTGEqM3eFOr8%2BisuZrejSNXLRTJW%2FTXEHPaWaORBeEA8%0D%0AzttdLDN7INaFffYzW1zMSRXIzH%2F4R8pr3rq1uzM8c9DFsrPhYVAOhh2P%2FtTFpoDVMZvG2oM7cUcc%0D%0ANsvsH1ERGE2wmS7lu1ieXfojdmCLL3b4MHJe%2BSGw7GKbf%2FkQsaOwdsx2samSKPb5cBeEyDf34sJE%0D%0AMt%2F0iz2%2FswBlObaNBSJ8Nz%2Fw%2BirQlhRoKx8LnxxysZwEH7R5f%2B4iVRrpEDv373lc7DaTDFwKnDo2%0D%0A9YP9TjjIMwkRF%2Frnz3Mx1zg0cce%2F9l8hcYY7%2Fe9HE7T4hX7OFafVcxdosQ4uhid%2Bgs4Cz7jc794J%0D%0AObIYPCgRuuD%2F7L%2B5WJbkPxAix0mfCw0QzdQYLu5zv9VjR0FAouHafk%2F4m%2F0J7lCxYEsSOHYiIT5L%0D%0AN%2By5BzrBVqDqHz4M7wNtTdZD9Saj4oZOm3WxDBTD20hTLn3iJspOwxIBnxUfoosQnwIPIl23o4Pv%0D%0A8WH8tJ9uIUhTMDlJ016BVw6GLzrCvVDXD0xh%2FXmZy21sn8663rHbceBewJRyP94Zy6CvXOr1vAcz%0D%0AdWed7szSo1qeIyNz%2BhR9Ol%2FODrJsfeVS3TmLadG4GCD36nNMgyROFkkOFo35%2BgPMtrBtGXxscTjZ%0D%0AKsqxLXDcYbcHmFOfpk2Hi41V7S7ylrmLYPsElrRh3MKgeWigrXXXQMwI95Z722xhLyybno6i5tVB%0D%0AmDSD8JxB7Qvgk97CtP1BjMCG7s7HgrAG46z7Dda5L3g4nnswrg0HmbehsabBXQFzptLf6Cv1uOMe%0D%0Af6m%2FIVgZD77h88UDFfEM7%2BPB%2BCG2LRrqNRq7wfVAGw2hiN5nz2zq7oxGYHxujRmt20OwObramhsb%0D%0AV8DY8FS2NbU2l7kbVq8u%2Boxrf5Phqa8scxvNHcOnjPjq7g5SVbYqyLTb9r2hsxn7bK%2FZ35uz7xif%0D%0AIPC9CbkgdyzLY7PjM9bHX4LBbmeb4l%2Fnn4VtGNEiI1r%2B96Z635xasHZkOk5A%2FZrHP7TtuAsfNPnh%0D%0ABFt8et6xe18s9DsW%2BbU5%2FkfjYjpZdnqus7W%2BKFy%2FmTxcb%2BYvz%2FKuyfr%2B3HvYy9%2BdW3BuzrfnsuIR%0D%0Ay4cIN9SXVIRnVi38qo0fLQm7RuP%2BKMJKqCOliaBh%2BCb%2FrP4%2F903XTt%2BA3rz%2F6yHU8y%2FS%2F2Wt33Nr%0D%0A9fMrYbRrFNviGxP5ClBel2jJXr%2BH%2BPdVN8NG3i20%2F89RgboZeWtexwSH5H%2BlniZxTrb9x4D711I9%0D%0AhhHfB9gPeAzwKcCnAZ8B0CHiE4DPAj4HeBLwecAXAH8EOAB4CvA04BnAQcAfA54FfBFwCPAngD8F%0D%0APAf4M8CXAIcBRwBHAc8DvgygU%2FwX8CQjFx4B8xvhv0D8LwEvAf4K8DLgazL%2F%2F7sl9fvAn5oN8BXh%0D%0AhhE5TdRDvhRSn%2FIS7B45dPdI9Amf9E0JgukPLpR0c%2BWT5iiXGcdZq2UF%2FZi%2F7%2Be9%2F%2FFC03M%2Frb56%0D%0A5ZkDODMm7xB5id6hxRIhsVfT2f7Phi3fpeks1%2FK9mOoFnT1P56AyXLTEaeY8Yanb5rRPaE5Q8cTt%0D%0AWrrLcU5NrpaWqKhH8pomi4VMH%2Fv43HPmfePxebI6s1ZZha4apGxkla5u7CUsZJWjPsiz2seKumJA%0D%0ArGKyhO2XdpE%2FIthqJPMIQVczNwyFlnXNy9b59njaAs1NTc1rEGlaEVjX3IoIOCCoLqNosLoMq7Sq%0D%0ATjn9kO0SNJ2aRa6qD8kfSF3rseSdsMSPjxOX4nwGvy2AXUwK57CmeCDOoxFlbsDaEEYG2RhiK9Em%0D%0AHrAwgpsDwdVlwc1BxbzqSL7fUeyHEn5MU5k0eUH%2BKUte4pI67gZMyL47RfCys3V19CItNGWgcftM%0D%0AWH%2FeMphoqb0qshSrpyxamhgtgpfLljyfRWNHJ2R19dmrpf9z%2F1zX3%2F87Ju6Gn6yTtej3TSRpbtf1%0D%0AkZWXJHYy7ZRlpww7i8YoBRXdoppy2cJioini44N5lkF1whKnU%2BrkoJTmzRSlUemp18xVeupNdyn2%0D%0AvSo%2F9bq6Sp%2FekDysUoe02mdKpvU8yW66Xaoqq76wNXFoBykJ5OTxbyaGUpot54OpxUhX%2Fw9hwHQw%0D%0AGfDhheH3HGTCfx1VX2dMs%2Bm99E2F9YNS1bIfpEhQfsSwd4GoWhXFJ2lmUEV1m%2BBnROQ00qkxwjSb%0D%0A7SBqy3SstXxDLIfD1FlAWAA%2Bd8H7OAheyWMs%2FOiKqj2FqktQTWVo7W3jGcq8EUOJdY1v6EDB5kgp%0D%0Ao9pvNkb%2FPDVGm5GoLkU0VqleR2qTkQ6pTTrZpJC1tl1%2BL713HHlLW6%2FTlo9MIF1L6eTKs64jCevH%0D%0A1VKRbdNS5NumlCSrQYNcKTjWpukXZ0o5pUDUP%2BJAphcKhMshUPbEP0axDpAAHPq9uDbgk0q2E4Oj%0D%0APaWsGv%2FJbdStX4ZbNXcjPx0aBCFrpXL9nmqAtfSVJsopXLK0UpvRys9VxCmKGBPpmpNciv43CZ3G%0D%0AiFKKOvWqldfxlNPxnCiRTFXaEDd1ayAxWhLfT9XLxNSn7IQ9D0tdVGWny4hFO9JafYSWwCGnkQhS%0D%0ABadYbTzr9%2FMuk0lz%2F%2B1Qq45wIj6QwlGiVZOPWW23CQ8c8O9JuG8z6RhA1LGioa7wEa870BD0e%2BGI%0D%0A8Vf4Sitq%2FcHSWl%2FAX%2BqtrvC5vf5yeGIbd%2BMwuSHSOdgb7ovVWWu9e8Fy3NPiwYIhKkzKw42vcF1h%0D%0AwgwFweXhnn5ygYaHYsSIG0kbw9EBeA9hFPTDm9TREy731hWW15Z7vV7UAYRA0zIkVJZXe%2F1V7srK%0D%0AWk9lrRWIzRZ%2FXWGVr6qmusJf7qtBmzggZ1mgrrC2sbahxlMTrClvrPLXNlYTVFQhM8d5%2F%2FIInFvB%0D%0AoVi4ryscNVb0bY18Isdpts9T90h5Tbm3oarCXRporHWXejyBxtKaYEV5qdvtcwdqPR63u9K3%2Bx5Y%0D%0At%2FdYpQLK%2FIInrqmFQdAqvTpv1WKDwOOpxt%2FKiprFxsdznEJ8dZVeJAE8XjfFqisWG4EcZdDfirqM%0D%0AK%2FN%2FAgAAAP%2F%2FAwBQSwMEFAAGAAgAAAAhAIuCbliTBgAAjhoAABMAAAB4bC90aGVtZS90aGVtZTEu%0D%0AeG1s7FnPixs3FL4X%2Bj8Mc3f8a2ZsL%2FEGe2xn2%2BwmIeuk5Ki1ZY%2BympEZybsxIVCSY6FQmpZeCr31%0D%0AUNoGEugl%2FWu2TWlTyL%2FQJ83YI63lbppuIC1ZwzKj%2BfT06b0335M0Fy%2FdjalzhFNOWNJ2qxcqroOT%0D%0AERuTZNp2bw4HpabrcIGSMaIswW13gbl7afv99y6iLRHhGDvQP%2BFbqO1GQsy2ymU%2BgmbEL7AZTuDZ%0D%0AhKUxEnCbTsvjFB2D3ZiWa5VKUI4RSVwnQTGYvTaZkBF2htKku7003qdwmwguG0Y03ZemsdFDYceH%0D%0AVYngCx7S1DlCtO3COGN2PMR3hetQxAU8aLsV9eeWty%2BW0VbeiYoNfbV%2BA%2FWX98s7jA9rasx0erAa%0D%0A1PN8L%2Bis7CsAFeu4fqMf9IOVPQVAoxHMNOOi2%2FS7rW7Pz7EaKLu02O41evWqgdfs19c4d3z5M%2FAK%0D%0AlNn31vCDQQheNPAKlOF9i08atdAz8AqU4YM1fKPS6XkNA69AESXJ4Rq64gf1cDnbFWTC6I4V3vK9%0D%0AQaOWGy9QkA2r7JJDTFgiNuVajO6wdAAACaRIkMQRixmeoBFkcYgoOUiJs0umESTeDCWMQ3OlVhlU%0D%0A6vBf%2Fjx1pTyCtjDSektewISvNUk%2BDh%2BlZCba7odg1dUgL599%2F%2FLZE%2Bfls8cnD56ePPjp5OHDkwc%2F%0D%0AZraMjjsomeodX3z72Z9ff%2Bz88eSbF4%2B%2BsOO5jv%2F1h09%2B%2BflzOxAmW3jh%2BZePf3v6%2BPlXn%2F7%2B3SML%0D%0AvJOiAx0%2BJDHmzlV87NxgMcxNecFkjg%2FSf9ZjGCFi9EAR2LaY7ovIAF5dIGrDdbHpvFspCIwNeHl%2B%0D%0Ax%2BC6H6VzQSwjX4liA7jHGO2y1OqAK3IszcPDeTK1D57OddwNhI5sY4coMULbn89AWYnNZBhhg%2BZ1%0D%0AihKBpjjBwpHP2CHGltndJsTw6x4ZpYyziXBuE6eLiNUlQ3JgJFLRaYfEEJeFjSCE2vDN3i2ny6ht%0D%0A1j18ZCLhhUDUQn6IqeHGy2guUGwzOUQx1R2%2Bi0RkI7m%2FSEc6rs8FRHqKKXP6Y8y5rc%2B1FOarBf0K%0D%0AiIs97Ht0EZvIVJBDm81dxJiO7LHDMELxzMqZJJGO%2FYAfQooi5zoTNvgeM98QeQ9xQMnGcN8i2Aj3%0D%0A2UJwE3RVp1QkiHwyTy2xvIyZ%2BT4u6ARhpTIg%2B4aaxyQ5U9pPibr%2FTtSzqnRa1Dspsb5aO6ekfBPu%0D%0APyjgPTRPrmN4Z9YL2Dv9fqff7v9evze9y%2Bev2oVQg4YXq3W1do83Lt0nhNJ9saB4l6vVO4fyNB5A%0D%0Ao9pWqL3lais3i%2BAy3ygYuGmKVB8nZeIjIqL9CM1giV9VG9Epz01PuTNjHFb%2BqlltifEp22r%2FMI%2F3%0D%0A2DjbsVarcneaiQdHomiv%2BKt22G2IDB00il3Yyrza107VbnlJQPb9JyS0wUwSdQuJxrIRovB3JNTM%0D%0AzoVFy8KiKc0vQ7WM4soVQG0VFVg%2FObDqaru%2Bl50EwKYKUTyWccoOBZbRlcE510hvcibVMwAWE8sM%0D%0AKCLdklw3Tk%2FOLku1V4i0QUJLN5OEloYRGuM8O%2FWjk%2FOMdasIqUFPumL5NhQ0Gs03EWspIqe0gSa6%0D%0AUtDEOW67Qd2H07ERmrXdCez84TKeQe5wue5FdArHZyORZi%2F86yjLLOWih3iUOVyJTqYGMRE4dSiJ%0D%0A266c%2FiobaKI0RHGr1kAQ3lpyLZCVt40cBN0MMp5M8EjoYddapKezW1D4TCusT1X31wfLnmwO4d6P%0D%0AxsfOAZ2nNxCkmN%2BoSgeOCYcDoGrmzTGBE82VkBX5d6ow5bKrHymqHMraEZ1FKK8ouphncCWiKzrq%0D%0AbuUD7S6fMzh03YUHU1lg%2F3XVPbtUS89polnUTENVZNW0i%2BmbK%2FIaq6KIGqwy6VbbBl5oXWupdZCo%0D%0A1ipxRtV9hYKgUSsGM6hJxusyLDU7bzWpneOCQPNEsMFvqxph9cTrVn7odzprZYFYritV4qtPH%2FrX%0D%0ACXZwB8SjB%2BfAcyq4CiV8e0gRLPqyk%2BRMNuAVuSvyNSJcOfOUtN17Fb%2FjhTU%2FLFWafr%2Fk1b1Kqel3%0D%0A6qWO79erfb9a6XVr96GwiCiu%2BtlnlwGcR9FF%2FvFFta99gImXR24XRiwuM%2FWBpayIqw8w1drmDzAO%0D%0AAdG5F9QGrXqrG5Ra9c6g5PW6zVIrDLqlXhA2eoNe6Ddbg%2Fuuc6TAXqceekG%2FWQqqYVjygoqk32yV%0D%0AGl6t1vEanWbf69zPlzEw80w%2Bcl%2BAexWv7b8AAAD%2F%2FwMAUEsDBBQABgAIAAAAIQDeI%2FLThQIAALEF%0D%0AAAANAAAAeGwvc3R5bGVzLnhtbKRUW2%2BbMBR%2Bn7T%2FYPmdGmjIkgiolgtSpW6a1E7aqwMmseoLsk2X%0D%0AbNp%2F7zGQhKrTNq0v%2BJzD8Xe%2Bc3N6c5ACPTFjuVYZjq5CjJgqdcXVLsNfH4pghpF1VFVUaMUyfGQW%0D%0A3%2BTv36XWHQW73zPmEEAom%2BG9c82CEFvumaT2SjdMwZ9aG0kdqGZHbGMYray%2FJAWJw3BKJOUK9wgL%0D%0AWf4LiKTmsW2CUsuGOr7lgrtjh4WRLBe3O6UN3QqgeogmtDxhd8oreMlLo62u3RXAEV3XvGSvWc7J%0D%0AnABSntZaOYtK3SoHtQJoH2HxqPR3Vfhf3th75an9gZ6oAEuESZ6WWmiDHFQGiHUWRSXrPVZU8K3h%0D%0A3q2mkotjb469oSvm4Cc5pOaNxPMYDguXuBBnVrEnAIY8heo4ZlQBChrkh2MD4RU0sofp%2FP7ivTP0%0D%0AGMXJ6ALpAubpVpsKBudSj5MpTwWrHRA1fLf3p9MNfLfaOahynlac7rSiwqfSg5wFSKdkQtz74fpW%0D%0Av8A%2B1Ei1spDutsowjKkvwkmERAaxx%2BsVjz9G67HfDIsO9Ut8QBzRfkH6HB75fmf4s98GAZMzQKBt%0D%0Ay4Xj6jeEAbM6XEoQ%2Bg44P9ldcc5RoBIVq2kr3MP5Z4Yv8idW8VbGZ68v%2FEm7DiLDF%2FnOdyqa%2Bhjs%0D%0A4O4sjBecqDU8wz83yw%2Fz9aaIg1m4nAWTa5YE82S5DpLJarleF%2FMwDle%2FRov2hjXrnoM8hcVaWAHL%0D%0AaIZkhxTvL7YMj5SefjejQHvMfR5Pw49JFAbFdRgFkymdBbPpdRIUSRSvp5PlJimSEffk%2F7hHIYmi%0D%0A%2Fi3z5JOF45IJrk69OnVobIUmgfqHJMipE%2BTy1ubPAAAA%2F%2F8DAFBLAwQUAAYACAAAACEAyuNFvHoB%0D%0AAACgAgAAGAAAAHhsL3dvcmtzaGVldHMvc2hlZXQxLnhtbIySy24rIQyG95X6Doh9h0nvjTKpKkXV%0D%0A6aJHVW97hvHMoAAegXPSvH0Nac4mm%2B5swJ%2F9%2B2dx%2F%2BWd%2BAcxWQyNnFW1FBAMdjYMjfx4fzy7lSKR%0D%0ADp12GKCRO0jyfnl6sthiXKcRgAQTQmrkSDTNlUpmBK9ThRMEvukxek2cxkGlKYLuSpF36ryur5XX%0D%0ANsg9YR5%2Fw8C%2BtwZWaDYeAu0hEZwmnj%2BNdkoHmje%2FwXkd15vpzKCfGNFaZ2lXoFJ4M38aAkbdOtb9%0D%0ANbvU5sAuyRHeWxMxYU8V49R%2B0GPNd%2BpOMWm5KHt4iYKXDX%2B15x5veZ0zqZaLzrK6bImI0DfyoRyW%0D%0Agk8L2%2FRTnGNBun0DB4agY%2F%2BkyL60iOt8%2BcRHdeapo9rH4gu376DXG0evuP0DdhiJIVesM8udd7sV%0D%0AJMN7Zkx1fpVJBbTSpDme9ADPOg42JOGgL69upIh7TF1xTDjl2htGtkiE%2FpCN%2FBOAHa%2BrCyl6RDok%0D%0Aedr%2Ff2v5DQAA%2F%2F8DAFBLAwQUAAYACAAAACEAod4L6kMBAABjAgAAEQAIAWRvY1Byb3BzL2NvcmUu%0D%0AeG1sIKIEASigAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjJJfS8MwFMXfBb9DyXubZutU%0D%0AQtuBykB0ILih%2BBaSu63Y%2FCGJdvv2pu1WK%2FPBx9xz8ss5l%2BTzvayjL7Cu0qpAJElRBIprUaltgdar%0D%0ARXyDIueZEqzWCgp0AIfm5eVFzg3l2sKz1Qasr8BFgaQc5aZAO%2B8NxdjxHUjmkuBQQdxoK5kPR7vF%0D%0AhvEPtgU8SdMrLMEzwTzDLTA2AxEdkYIPSPNp6w4gOIYaJCjvMEkI%2FvF6sNL9eaFTRk5Z%2BYMJnY5x%0D%0Ax2zBe3Fw7101GJumSZppFyPkJ%2Fht%2BfTSVY0r1e6KAypzwSm3wLy25YNlMnrcMZXj0bTdYM2cX4Zl%0D%0AbyoQt4ex8VwMxK5AjwURhUi0L3BSXqd396sFKicpyWJC4nS2IhlNrynJ3tu3f91vI%2FYDeUzwb2I2%0D%0Ao5PZiHgClDk%2B%2BxblNwAAAP%2F%2FAwBQSwMEFAAGAAgAAAAhAN5BFtmKAQAAEQMAABAACAFkb2NQcm9w%0D%0Acy9hcHAueG1sIKIEASigAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%0D%0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJJBb9swDIXvA%2FYf%0D%0ADN0bOd06DIGsYkg39LBiAZJ2Z02mY6GyJIiskezXj7bR1Gl72o3ke3j6REldHzpf9JDRxVCJ5aIU%0D%0ABQQbaxf2lbjf%2Fbj4KgokE2rjY4BKHAHFtf74QW1yTJDJARYcEbASLVFaSYm2hc7gguXAShNzZ4jb%0D%0AvJexaZyFm2ifOggkL8vyi4QDQaihvkinQDElrnr639A62oEPH3bHxMBafUvJO2uIb6nvnM0RY0PF%0D%0A94MFr%2BRcVEy3BfuUHR11qeS8VVtrPKw5WDfGIyj5MlC3YIalbYzLqFVPqx4sxVyg%2B8truxTFH4Mw%0D%0A4FSiN9mZQIw12KZmrH1Cyvp3zI%2FYAhAqyYZpOJZz77x2n%2FVyNHBxbhwCJhAWzhF3jjzgr2ZjMr1D%0D%0AvJwTjwwT74SzHfimM%2Bd845X5pFfZ69glE44snKqfLjzifdrFG0PwvM7zodq2JkPNL3Ba92mgbnmT%0D%0A2Q8h69aEPdTPnrfC8PgP0w%2FXy6tF%2Bankd53NlHz5y%2FofAAAA%2F%2F8DAFBLAQItABQABgAIAAAAIQCs%0D%0AmTVRbwEAAD8EAAATAAAAAAAAAAAAAAAAAAAAAABbQ29udGVudF9UeXBlc10ueG1sUEsBAi0AFAAG%0D%0AAAgAAAAhALVVMCP0AAAATAIAAAsAAAAAAAAAAAAAAAAAqAMAAF9yZWxzLy5yZWxzUEsBAi0AFAAG%0D%0AAAgAAAAhAIH0CisEAQAApwIAABoAAAAAAAAAAAAAAAAAzQYAAHhsL19yZWxzL3dvcmtib29rLnht%0D%0AbC5yZWxzUEsBAi0AFAAGAAgAAAAhAO3NKzphAgAA1gQAAA8AAAAAAAAAAAAAAAAAEQkAAHhsL3dv%0D%0Acmtib29rLnhtbFBLAQItABQABgAIAAAAIQCW8NesNBsAAABOAAARAAAAAAAAAAAAAAAAAJ8LAAB4%0D%0AbC92YmFQcm9qZWN0LmJpblBLAQItABQABgAIAAAAIQCLgm5YkwYAAI4aAAATAAAAAAAAAAAAAAAA%0D%0AAAInAAB4bC90aGVtZS90aGVtZTEueG1sUEsBAi0AFAAGAAgAAAAhAN4j8tOFAgAAsQUAAA0AAAAA%0D%0AAAAAAAAAAAAAxi0AAHhsL3N0eWxlcy54bWxQSwECLQAUAAYACAAAACEAyuNFvHoBAACgAgAAGAAA%0D%0AAAAAAAAAAAAAAAB2MAAAeGwvd29ya3NoZWV0cy9zaGVldDEueG1sUEsBAi0AFAAGAAgAAAAhAKHe%0D%0AC%2BpDAQAAYwIAABEAAAAAAAAAAAAAAAAAJjIAAGRvY1Byb3BzL2NvcmUueG1sUEsBAi0AFAAGAAgA%0D%0AAAAhAN5BFtmKAQAAEQMAABAAAAAAAAAAAAAAAAAAoDQAAGRvY1Byb3BzL2FwcC54bWxQSwUGAAAA%0D%0AAAoACgB9AgAAYDcAAAAA&contentType=text/plain
----=_Part_2_5070931.1417531039501
Managed to solve this problem by using the following request body header.
POST http://privatecloud.com/rest/api/setDataField HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: multipart/form-data; boundary="----=_Part_0_2215605.1417599940206"
MIME-Version: 1.0
Content-Length: 22311
Host: privatecloud.com
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
------=_Part_0_2215605.1417599940206
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: form-data; name="sessionId"
f2d1dab5b6f843feb71344e437a2df88#1
------=_Part_0_2215605.1417599940206
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: form-data; name="objName"
demoAttachment
------=_Part_0_2215605.1417599940206
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: form-data; name="fieldName"
file
------=_Part_0_2215605.1417599940206
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: form-data; name="contentType"
text/plain
------=_Part_0_2215605.1417599940206
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: form-data; name="fileName"
Book.xlsm
------=_Part_0_2215605.1417599940206
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: form-data; name="output"
xml
------=_Part_0_2215605.1417599940206
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: form-data; name="id"
20936
------=_Part_0_2215605.1417599940206
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: quoted-printable
Content-Disposition: form-data; name="value"
UEsDBBQABgAIAAAAIQCsmTVRbwEAAD8EAAATAAgCW0NvbnRlbnRfVHlwZXNdLnhtbCCiBAIooAA=
C AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
AAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
AAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
------=_Part_0_2215605.1417599940206--
- See more at: https://community.progress.com/community_groups/rollbase/f/25/p/14664/52650.aspx?Redirected=true#52650

Add Headers to a POST

I am trying to pass header when i post XML Data in VB.Net.
It needs to look like this :
POST /test1.asmx HTTP/1.1
Host: www.test1.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://test1.org/PostApplication_V5"
I am using the following :
Req.Headers.Add("POST /", "test1.asmx HTTP/1.1")
Req.Headers.Add("HOST", "www.test1.com")
Req.Headers.Add("Content-Type", "text/xml; charset=utf-8")
Req.Headers.Add("Content-Length", "length")
Req.Headers.Add("SOAPAction", """http://test1.org/PostApplication_V5""")
Its not working
<POST /test1.asmx HTTP/1.1>
<Host: www.test1.com>
<Content-Type: text/xml; charset=utf-8>
<Content-Length: length>
<SOAPAction: "http://test1.org/PostApplication_V5">
</POST /test1.asmx HTTP/1.1>
</Host: www.test1.com>
</Content-Type: text/xml; charset=utf-8>
</Content-Length: length>
</SOAPAction: "http://test1.org/PostApplication_V5">

Objective C Mime Parser for IMAP response

I want to Parse a NSDATA which contains IMAP response, For ex
Date: Tue, 18 Sep 2012 02:50:54 +0000 (GMT)
From: xx#xx.com
To: yy#yy.com
Message-ID: 7034025
Content-Type: multipart/mixed;
boundary="----=_Part_16_9157073.1347936657899"
Message-Source: IMAP
------=_Part_16_9157073.1347936657899
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-ID: text.txt
Content-Location: text.txt
X-Section-ID: Text-Section
Test Message
------=_Part_16_9157073.1347936657899
Content-Type: image/jpeg
Content-Transfer-Encoding: binary
Content-ID: attachment_1
Content-Location: image_1347936646.jpg
X-Section-ID: Thumbnail-Section
ˇÿˇ‡ ...........
------=_Part_16_9157073.1347936657899--
From this I want to extract both Parts(Text & Image). Can anybody suggest me an Objective-c mime parser.
Note: The image part is in Binary not encoded with base64.

So nginx is not interpreting folded headers correctly?

HTTP/1.1 header field values can be
folded onto multiple lines if the
continuation line begins with a space
or horizontal tab. All linear white
space, including folding, has the same
semantics as SP. A recipient MAY
replace any linear white space with a
single SP before interpreting the
field value or forwarding the message
downstream.(quoted from here)
Here's my server side script,which just dumps the cookie content:
var_dump($_COOKIE);exit;
Here comes my test,please pay attention to the cookie part:
GET /logtest.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.17) Gecko/20110420 AlexaToolbar/alxf-2.11 Firefox/3.6.17
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Cookie: A=t;
artDate=t
Cache-Control: max-age=0
HTTP/1.1 200 OK
Server: iis/8.0
Date: Mon, 23 May 2011 12:38:00 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=20
X-Powered-By: PHP/5.3.2
Set-Cookie: ZDEDebuggerPresent=php,phtml,php3; path=/
27
array(1) {
["A"]=>
string(1) "t"
}
0
GET /logtest.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.17) Gecko/20110420 AlexaToolbar/alxf-2.11 Firefox/3.6.17
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Cookie: A=t;
artDate=t
Cache-Control: max-age=0
HTTP/1.1 200 OK
Server: iis/8.0
Date: Mon, 23 May 2011 12:38:11 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=20
X-Powered-By: PHP/5.3.2
Set-Cookie: ZDEDebuggerPresent=php,phtml,php3; path=/
27
array(1) {
["A"]=>
string(1) "t"
}
0
GET /logtest.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.17) Gecko/20110420 AlexaToolbar/alxf-2.11 Firefox/3.6.17
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Cookie: A=t;artDate=t
Cache-Control: max-age=0
HTTP/1.1 200 OK
Server: iis/8.0
Date: Mon, 23 May 2011 12:38:55 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=20
X-Powered-By: PHP/5.3.2
Set-Cookie: ZDEDebuggerPresent=php,phtml,php3; path=/
47
array(2) {
["A"]=>
string(1) "t"
["artDate"]=>
string(1) "t"
}
0
It's a known issue that doesn't have a high priority.