Coder Social home page Coder Social logo

metro-saaj's Introduction

⚠️ This project is now part of the EE4J initiative. This repository has been archived as all activities are now happening in the corresponding Eclipse repository.

Licensing and Governance

SAAJ is licensed under a dual license - CDDL 1.1 and GPL 2.0 with Class-path Exception. That means you can choose which one of the two suits your needs better and use it under those terms.

We use GlassFish Governance Policy, which means we can only accept contributions under the terms of OCA.

More Info

Follow @gfmetro (TBD) on Twitter to get SAAJ and wider Metro (WSIT, JAX-WS, JAXB, ...) related updates. See the Metro website at http://metro.java.net to access Metro documentation and release information.

If you run into any issues or have questions, ask at our user forum: [email protected], or file an issue at one of the issue trackers

metro-saaj's People

Contributors

alekseiefimov avatar avalez avatar bravehorsie avatar desagar avatar glassfishrobot avatar hohowu avatar lukasj avatar m0mus avatar marschall avatar mirank avatar oraboliu avatar paulsandoz avatar pranjal10 avatar shihchang avatar tomas-kraus avatar vbkumarjayanti avatar zhengjl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

metro-saaj's Issues

MessageFactory.createMessage(...) doesn't do any SOAP-related validation

The Javadoc for:

MessageFactory.createMessage(MimeHeaders headers,java.io.InputStream in)

says it will throw SOAPException "if the message is invalid". It would be
logical to assume that if the string read from the stream was a well-formed XML
document, but that didn't fulfill the "MUST"s from the SOAP 1.1 specification,
or simply violated elements of the SOAP 1.1 schema, that I would get a
SOAPException stating that.

Using the SAAJ 1.1.1 release incorporated into WebLogic 8.1, I tried several
variations of well-formed but invalid documents, including:

1. Setting the namespace associated with the prefix on the "Envelope" element to
be not the standard SOAP 1.1 namespace.

2. Making the root element of the envelope not named "Envelope".

3. Having a missing Body element.

4. Reversing the order of "Header" and "Body".

This method happily created a SOAPMessage from that input, without throwing an
exception.

I then decompiled the relevant classes in WebLogic (using SAAJ 1.1.1), verifying
that it was not doing this validation. I then did the same in the SAAJ in JWSDP
1.3, and saw very similar code. I didn't run explicit tests using JWSDP 1.3,
but based on my comparisons, I doubt it will work any differently (in that respect).

Environment

Operating System: All
Platform: All

Affected Versions

[current]

java.lang.ClassCastException: com.sun.xml.internal.messaging.saaj.soap.ver1_1.Message1_1Impl cannot be cast to com.sun.xml.messaging.saaj.soap.MessageImpl

This problem does not seem to go away for me. My setup:
Java applet using web services client to talk to a remote service. Uses SAAJ 1.3
doanloaded from https://saaj.dev.java.net/

When I use JRE from Java 6, I get the above class cast exception.

When I revert to JRE 5, It changes to an inability to find
com.sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl.

Interestingly, all these issues are supposed to be long resolved.

Environment

Operating System: Windows XP
Platform: All

Affected Versions

[current]

setting Content-Length during writeTo requires buffering the inputstream

1. SAAJ tries to set the Content-Length Mime Header correctly for SOAPPart and
this requires that SAAJ buffer the SOAP Part. This prevents SAAJ from handling
large SOAP Part's (or large SOAP Body).

While tests in SAAJ QE would fail if this case is not handled, this bug has
been created to provide a way that would allow SAAJ users who do not care about
the Content-Length header setting features to be able to handle large SOAP Payloads.

Environment

Operating System: All
Platform: All

Affected Versions

[1.3]

Problem in saveChanges() method in com.sun.xml.messaging.saaj.soap.MessageImpl.java

Example SOAP message:
Content-Type: application/soap+_xml; action=exampleAction
soap:envelope
soap:header/
soap:body/
</soap:envelope>

There is a dedicated get/set pair of methods for using the action parameter on
the content.

String action = “exampleAction�
message.setAction(action);
log.info("Verify set action: " + message.getAction());

I can verify that the action was set correctly. After trying repeatedly to set
the parameter with no success, I eventually gave up and pulled out WireShark to
look at the actual message on the wire. Sure enough the action parameter was
missing.

So I start digging deeper, and download the source libraries. From the source of
(com.sun.xml.messaging.saaj.soap) MessageImpl.java

public void setAction(String action) {
ContentType ct = ContentType();
ct.setParameter("action", action);
headers.setHeader("Content-Type", ct.toString());
needsSave();
}

It runs around in circles a bit, but it seems to work, and can be retrieved by
the getter. After more digging, I looked inside where the message is serialized,
in the saveChanges() method, and sure enough I found my problem.

headers.setHeader(
"Content-Type",
getExpectedContentType() +
(isFastInfoset ? "" : "; charset=" + charset)
);

protected String getExpectedContentType()
{
return isFastInfoset ? "application/soap+fastinfoset" :
"application/soap+xml";
}

Thus the changes made by calling setAction, are overwritten when the message is
serialized.

Environment

Operating System: All
Platform: All

Affected Versions

[1.3]

OutOfMemory error occurs when sending large attachments

We use SAAJ for processing SOAP requests containing MTOMized data. When
receiving files of size +50MB we get the following exception. This problem is
fixed by increasing the heap size. However the heap size would always have an
upper limit on production systems and can not be increased beyond that limit.
Is there a fix for this?

java.lang.OutOfMemoryError: Java heap space
at com.sun.xml.messaging.saaj.util.ByteOutputStream.ensureCapacity
(ByteOutputStream.java:102)
at com.sun.xml.messaging.saaj.util.ByteOutputStream.write
(ByteOutputStream.java:109)
at
com.sun.xml.messaging.saaj.packaging.mime.internet.BMMimeMultipart.find
(BMMimeMultipart.java:562)
at
com.sun.xml.messaging.saaj.packaging.mime.internet.BMMimeMultipart.readBody
(BMMimeMultipart.java:338)
at
com.sun.xml.messaging.saaj.packaging.mime.internet.BMMimeMultipart.getNextPart
(BMMimeMultipart.java:274)
at
com.sun.xml.messaging.saaj.packaging.mime.internet.BMMimeMultipart.parse
(BMMimeMultipart.java:296)
at
com.sun.xml.messaging.saaj.packaging.mime.internet.BMMimeMultipart.parse
(BMMimeMultipart.java:212)
at
com.sun.xml.messaging.saaj.packaging.mime.internet.MimeMultipart.getCount
(MimeMultipart.java:186)
at com.sun.xml.messaging.saaj.soap.MessageImpl.initializeAllAttachments
(MessageImpl.java:1257)
at com.sun.xml.messaging.saaj.soap.MessageImpl.getAttachments
(MessageImpl.java:759)
at mytest.MTOMHandler.getSOAPAttachments(MTOMHandler.java:199)

Environment

Operating System: All
Platform: All

Affected Versions

[current]

ParserPool is not performant

The com.sun.xml.messaging.saaj.util.ParserPool does not perform well under heavy
concurrent use. This class should be refactored to use the facilities provided
by java.util.concurrent.

Environment

Operating System: All
Platform: All

Affected Versions

[1.3.1]

Error while receive response message

I was invoking soap using saaj. The request goes trough webMethods platform.
After movind to webMethods 7.1 I've got error:

ERROR: 'NAMESPACE_ERR: An attempt is made to create or change an object in a
way which is incorrect with regard to namespaces.'
2008-07-07 13:22:04 com.sun.xml.messaging.saaj.soap.EnvelopeFactory createEnvelope
SEVERE: SAAJ0511: Unable to create envelope from given source

I know that it is case by duplicate namespaces. I wrote some workaround solution
for that (the duplicates previously was only in SOAP-ENV:Header) but after
installing new fixes on the webMethods 7.1 platform it stop working again. I
will try wrote again some workaround solution, but it will be very good if you
will fix it at your code.

Example response:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Header
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"></SOAP-ENV:Header><SOAP-ENV:Body
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<T2api:Response xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:T2api="urn:/T2api/Proto/Soap" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<T2api:rc xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:T2api="urn:/T2api/Proto/Soap" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">200</T2api:rc>
<T2api:data xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:T2api="urn:/T2api/Proto/Soap" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<T2api:item xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:T2api="urn:/T2api/Proto/Soap" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<T2api:key xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:T2api="urn:/T2api/Proto/Soap" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">SID</T2api:key>
<T2api:valueString xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:T2api="urn:/T2api/Proto/Soap" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">5MHEEC13M3U9B1</T2api:valueString>
</T2api:item>
</T2api:data>
</T2api:Response>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

This response is valid against schema, so it shouldn't generate errors at saaj also.

Regards,
Lukasz Konkol

Environment

Operating System: All
Platform: All

Affected Versions

[current]

Wrong UTF-16 processing

The situation in question is very special. Please see code below:

public void testReadUtf16() throws SOAPException, IOException {
String xml =
"" +
"<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope
">SOAP-ENV:Header/SOAP-ENV:Body<p:content SOAP-ENV:encodingStyle="http://
example.com/encoding" xmlns="some-uri"/></SOAP-ENV:Body></SOAP-ENV:Envelope>";
MessageFactory mFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
SOAPMessage msg = mFactory.createMessage();
SOAPPart soapPart = msg.getSOAPPart();
soapPart.setContent(new StreamSource(new ByteArrayInputStream(xml.getBytes("utf-16"))));
// Try to access envelope
soapPart.getEnvelope();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
msg.writeTo(baos);
byte[] bs = baos.toByteArray();
String string = baos.toString("utf-16");
System.out.println(string);
System.out.println();
for (int i = 2; i < bs.length; i +=2)

{ System.out.printf("Character: %c %d - %d \n", string.charAt(i / 2 - 1), bs[i], bs[i + 1]); }

assertEquals((byte) 0xFE, bs[0]);
assertEquals((byte) 0xFF, bs[1]);
assertEquals((byte) 0x00, bs[2]);
assertTrue((byte) 0xFE != bs[80]);
assertTrue((byte) 0xFF != bs[81]);
}

The current SAAJ SI doesn't pass this test case. One critical point here is that if you comment out
"soapPart.getEnvelope();", then it passes. There are mainly two issues:

1. XMLDeclarationParser.parse method
Specifically,

if (utf16)

{ xmlDecl = new String(decl.getBytes(), "utf-16"); }

else

{ xmlDecl = decl; }

If utf16 is true, then xmlDec is set by decl. The problem is the set xmlDecl has a strange character
caused by BOM of decl getBytes(). Therefore,

if (utf16) { xmlDecl = new String(decl.getBytes(), "utf-16"); xmlDecl = xmlDecl.substring(xmlDecl.indexOf("<")); } else { xmlDecl = decl; }

solves the problem.

2. SOAPPartImp1_2(and 1_1)Impl.createEnvelopeFromSource()

envelop's character encoding is not set when XML declaration is set. First modify lookForXmlDecl to
return XMLDeclarationParser:

protected XMLDeclarationParser lookForXmlDecl() throws SOAPException {
...
return ev;
...
}

And createEnvelopeFromSource uses it:

protected Envelope createEnvelopeFromSource() throws SOAPException {
XMLDeclarationParser parser = lookForXmlDecl();
Source tmp = source;
source = null;
EnvelopeImpl envelope = (EnvelopeImpl)EnvelopeFactory.createEnvelope(tmp, this);
if (!envelope.getNamespaceURI().equals(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE))

{ log.severe("SAAJ0415.ver1_2.msg.invalid.soap1.2"); throw new SOAPException("InputStream does not represent a valid SOAP 1.2 Message"); }

if (!omitXmlDecl)

{ envelope.setOmitXmlDecl("no"); envelope.setXmlDecl(parser.getXmlDeclaration()); envelope.setCharsetEncoding(parser.getEncoding()); }

return envelope;

}

3. EnvelopeImp.output(OutputStream out)

When xmlDecl is not null, it is output by Writer, but the Writer is not reused. The aftermath is very
critical because BOM is rewriten between XML declaration and SOAP envelope. This problem can be
solved by the following change:

StreamResult result = new StreamResult(out);
if (xmlDecl != null)

{ OutputStreamWriter writer = new OutputStreamWriter(out, charset); writer.write(xmlDecl); writer.flush(); result = new StreamResult(writer); }

In conclusion, aforementioned solutions make the test case pass perfectly. I'm ready to submit patches
as well.

Environment

Operating System: All
Platform: All

Affected Versions

[current]

java.lang.NoSuchMethodError: com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl.getContentType(Ljavax/xml/soap/MimeHeaders;)Ljava/lang/String;

I get the following exception from a Web Service implemented in Sun App Server
9.0 b 48. The exact same Web Service (same ear file) works fine on exact same
build of Sun Appserver 9.0 (b48)on Windows XP, but not on Solaris 9.0.

Caused by: java.lang.NoSuchMethodError:
com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl.getContentType
(Ljavax/xml/soap/MimeHeaders;)Ljava/lang/String; at
com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl.createMessage
(SOAPMessageFactory1_1Impl.java:58) at
com.sun.xml.ws.util.SOAPUtil.createMessage(SOAPUtil.java:150) at
com.sun.xml.ws.util.SOAPConnectionUtil.getSOAPMessage
(SOAPConnectionUtil.java:76) at
com.sun.xml.ws.protocol.soap.server.SOAPMessageDispatcher.getSOAPMessage
(SOAPMessageDispatcher.java:227) at
com.sun.xml.ws.protocol.soap.server.SOAPMessageDispatcher.receive
(SOAPMessageDispatcher.java:101) at com.sun.xml.ws.server.Tie.handle
(Tie.java:88) at com.sun.enterprise.webservice.JAXWSServlet.doPost
(JAXWSServlet.java:191) ... 26 more

Environment

Operating System: Solaris
Platform: Sun

Affected Versions

[current]

Broken encoding for StringDataContentHandler

In the methods
public Object getContent(DataSource ds)
and
public void writeTo(Object obj, String mimeType, OutputStream os)

of com/sun/xml/messaging/saaj/soap/StringDataContentHandler.java

Streams and Readers/Writer are converted to each other without considering the
used encoding.

The whole MIME handling code is quite similar to the code used in javamail, but
there the encoding is taken into account.

You can compare this to the file
src/java/com/sun/mail/handlers/text_plain.java
in the javamail-repository.

Environment

Operating System: All
Platform: All

Affected Versions

[current]

DOM of SOAPFault contains reason and faultCode in wrong order

When creating a new SOAPFault and setting reason and faultCode, the
DOM-structure of the fault contains the reason and faultCode elements in the
wrong order:


SOAPFault fault = SOAPFactory.newInstance().createFault("reason", new
QName(SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE, "Client"));
// (returned fault is of class com.sun.xml.messaging.saaj.soap.ver1_1.Fault1_1Impl)
// serialize the fault:
Transformer transformer = TransformerFactory.newInstance().newTransformer();
ByteArrayOutputStream output = new ByteArrayOutputStream();
transformer.transform(new DOMSource(fault), new StreamResult(output));
System.out.println(output.toString());

Output:

xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">reasonSOAP-ENV:Client</SOAP-ENV:Fault>

This is against the SOAP1.1 schema:
<xs:complexType name="Fault" final="extension">
xs:sequence
<xs:element name="faultcode" type="xs:QName"/>
<xs:element name="faultstring" type="xs:string"/>
<xs:element name="faultactor" type="xs:anyURI" minOccurs="0"/>
<xs:element name="detail" type="tns:detail" minOccurs="0"/>
</xs:sequence>
</xs:complexType>

Environment

Operating System: All
Platform: All

Affected Versions

[current]

Ref Impl does not work with IBM JDK

The 1.3 reference implementation of SAAJ does not work with the IBM JDK.
Looking at the source code, you see things like:

factory = new com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl();

import com.sun.org.apache.xerces.internal.dom.DocumentImpl;

extends com.sun.org.apache.xerces.internal.dom.TextImpl

etc....

The com.sun.org.apache stuff does not exist in the IBM JDK. Thus, the
reference SAAJ impl is not "write once, run anywhere".

Environment

Operating System: Linux
Platform: All

Affected Versions

[current]

OutOfMemoryError sending large files

It would be nice to be able to transfer large files as attachments,
but currently it requires to much memory,
since com.sun.xml.messaging.saaj.soap.MessageImpl.writeTo(OutputStream)
first reads DataHandler content into a byte array (MessageImpl.saveChanges)
and only then writes the array into the output stream.

Environment

Operating System: All
Platform: All

Affected Versions

[current]

Mime unit test passing on unix fails on windows

[junit] CAUSE:

[junit] java.lang.Exception: transport padding after a Mime Boundary should
end in a CRLF, found CR only
[junit] at com.sun.xml.messaging.saaj.packaging.mime.internet.BMMimeMult
part.skipLWSPAndCRLF(BMMimeMultipart.java:592)
[junit] at com.sun.xml.messaging.saaj.packaging.mime.internet.BMMimeMult
part.find(BMMimeMultipart.java:421)
[junit] at com.sun.xml.messaging.saaj.packaging.mime.internet.BMMimeMult
part.skipPreamble(BMMimeMultipart.java:348)
[junit] at com.sun.xml.messaging.saaj.packaging.mime.internet.BMMimeMult
part.getNextPart(BMMimeMultipart.java:237)
[junit] at com.sun.xml.messaging.saaj.soap.MessageImpl.init(MessageImpl.
ava:436)
[junit] at com.sun.xml.messaging.saaj.soap.MessageImpl.(MessageImp
.java:278)
[junit] at com.sun.xml.messaging.saaj.soap.ver1_1.Message1_1Impl.(
essage1_1Impl.java:68)
[junit] at com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1I
pl.createMessage(SOAPMessageFactory1_1Impl.java:62)
[junit] at mime.StartParameterTest.testSampleMessageOne(StartParameterTe
t.java:167)

Environment

Operating System: Windows XP
Platform: All

Affected Versions

[current]

Attachment stream not closed for response message attachment

I have a Provider that sends an outbound attachment as a part of the SOAPMessage
like this:

MyAttachment attachment = getAttachment();
AttachmentPart soapAttachment = aMessage.createAttachmentPart();
soapAttachment.setDataHandler(new DataHandler(new MyDataSource(attachment)));

MyAttachment is backed by a temp file that needs to be cleaned up after the stream is read, but
it appears that the close() method on the InputStream in never called. I traced it to
com.sun.xml.messaging.saaj.soap.AttachmentPartImpl.getRawContentBytes() where the stream is read,
but after its read its never closed.

Is this a defect, or is there a way to close my stream after the message is sent?

Environment

Operating System: All
Platform: All

Affected Versions

[1.3]

FAM : java.lang.NoSuchMethodError: javax/xml/soap/MessageFactory.newInstance(Ljava/lang/String;)

when we run FAM web app on IBM websphere, we are facing following issue, which
need to be fixed.
Need your attention and help to resolve this.

Thanks,
Mrudul

Here is the error I got from WebSphere's log file. It's generated by running
SAML2 artifact profile with lastest webserivces-*.jars.

[9/10/07 13:57:57:164 PDT] 0000003b ServletWrappe E SRVE0068E: Uncaught
exception thrown in one of the
service methods of the servlet: Consumer. Exception thrown :
javax.servlet.ServletException:
javax/xml/soap/MessageFactory.newInstance(Ljava/lang/String;)Ljavax/xml/soap/MessageFactory;
at
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:660)
at
com.ibm._jsp._spAssertionConsumer._jspService(_spAssertionConsumer.java:319)
at com.ibm.ws.jsp.runtime.HttpJspBase.service(HttpJspBase.java:85)

---- Begin backtrace for Nested Throwables
java.lang.NoSuchMethodError:
javax/xml/soap/MessageFactory.newInstance(Ljava/lang/String;)Ljavax/xml/soap/MessageFactory;
at
com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection.(HttpSOAPConnection.java:103)
at
com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnectionFactory.createConnection(HttpSOAPConnectionFactory.java:75)

Environment

Operating System: All
Platform: All

Affected Versions

[current]

Attachments > 10M are not downloaded

We have upgraded our application to Java 1.5 recently and SAAJ attachments >
10MB are not being downloaded now.

We are using SAAJ 1.3.
Earlier application with 1.4.2 and SAAJ 1.1 was working fine.
Here is the below error :

java.lang.OutOfMemoryError: Java heap space
at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:95)
at
com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection.readFully(HttpSOAPConnection.java:614)
at
com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection.post(HttpSOAPConnection.java:360)
at
com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection$PriviledgedPost.run(HttpSOAPConnection.java:150)
at java.security.AccessController.doPrivileged(Native Method)
at
com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnection.call(HttpSOAPConnection.java:121)
at com.sun.sunit.webservice.soap.SOAPClient.invokeService(SOAPClient.java:94)
at com.sun.sunit.webservice.soap.SOAPClient.invokeService(SOAPClient.java:69)
at
com.sun.sunit.bugtraq.client.command.ClientConnection.invokeService(ClientConnection.java:54)
at
com.sun.sunit.bugtraq.client.command.CrGetAttachmentCommand.afterExecute(CrGetAttachmentCommand.java:160)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.sun.sunit.util.MethodUtil.invokeMethod(MethodUtil.java:74)
at com.sun.sunit.util.MethodUtil.invokeMethod(MethodUtil.java:38)
at
com.sun.sunit.bugtraq.client.command.ClientConnection.invokeService(ClientConnection.java:108)
at
com.sun.sunit.bugtraq.client.command.ClientConnection.run(ClientConnection.java:44)
at java.lang.Thread.run(Thread.java:595)

Here is our code Piece. Attachments are sent in 10MB blocks to client.

Client Code :
InputStream input = (InputStream)
((AttachmentPart)msg.getAttachments().next()).getContent();
OutputStream ostream = new BufferedOutputStream(
new FileOutputStream(this.outFile, (block++ > 0)));

int bytes = 0;
byte[] data = new byte[1024];
while ( (bytes = input.read(data, 0, 1024)) != -1 )

{ ostream.write( data, 0, bytes ); }

ostream.flush();
ostream.close();
input.close();
..
if (block < blockCount)

{ ssheader.addCustomElement("AttachmentBlock", Integer.toString(block)); ClientConnection conn = new ClientConnection(svcMessage, this, "afterExecute"); conn.setServerURL(config.getServiceURI()); conn.invokeService(); }

Webservice Code:
if ( !attachFile.exists() )
throw new FileNotFoundException("File not found " + attachFile.toString());

totalBlocks = FileUtil.calculateBlocks(this.maxAttachmentSize,
attachFile.length());

message.addToBody( "AttachmentName", attachFile.getName());
message.addToBody( "AttachmentBlock", requestedBlock + "");
message.addToBody( "AttachmentBlockCount", totalBlocks + "");
message.addToBody( "AttachmentCount", "1");

if ( totalBlocks > 1 )

{ logger.fine("Sending block " + (requestedBlock + 1) + " of " + totalBlocks); logger.fine("AttachmentResponse.addAttachment1111111 "); tempFile = File.createTempFile("bt2-attach", input.getRecordType().getType(), this.tempDir); FileUtil.copyBlock(requestedBlock, this.maxAttachmentSize, attachFile, tempFile); message.newAttachment( tempFile ); logger.fine("AttachmentResponse.addAttachment 22222 "); }

Thanks,
Naveen.

Environment

Operating System: Solaris
Platform: Sun

Affected Versions

[1.3]

Remove dependency on internal SUN classes

The dependency of SAAJ RI on internal SUN JDK classes (especially the SUN-Xerces
fork under com.sun.org.apache.xerces.internal) should be removed. Instead, SAAJ
RI should only use documented interfaces (eg. Document interface instead of
DocumentImpl from internal JAX-P implementation).

This hinders portability of SAAJ RI to other JDKs, especially IBM WebSphere
platform.

Since SAAJ RI is an integral part of JAX-WS / Metro, and there is no easy way to
replace SAAJ, this is a real problem for anybody trying to adopt Metro into a
non-SUN server.

Environment

Operating System: All
Platform: All

Affected Versions

[current]

GifDataContentHandler throws NPE for GIF images

DataHnalder dh = new DataHandler(null, "image/gif);
InputStream is = dh.getInputStream(); // throws NPE

Exception in thread "DataHandler.getInputStream" java.lang.NullPointerException
at
com.sun.xml.messaging.saaj.soap.GifDataContentHandler.writeTo(GifDataContentHandler.java:113)
at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:883)
at javax.activation.DataHandler$1.run(DataHandler.java:265)
at java.lang.Thread.run(Thread.java:595)

The offending code is in GifDataContentHandler:

public void writeTo(Object obj, String type, OutputStream os)
throws IOException {
if (!(obj instanceof Image))
throw new IOException(""" + getDF().getMimeType() +
"" DataContentHandler requires Image object, " +
"was given object of type " + obj.getClass().toString());

obj.getClass().toString() is the cause of NPE.

There should be null check for obj:

diff -r1.1.1.1 GifDataContentHandler.java
112c112
< if (!(obj instanceof Image))

if (obj != null && !(obj instanceof Image))

Environment

Operating System: All
Platform: All

Affected Versions

[current]

gives incorrect Fault code from SOAP fault

Attaching the testcase. Gives worng QName for the fault code.
In the attached soap message, if the fault code is cahnged to S:VersionMismatch
instead of ns2;VersionMismatch, it works fine.

Environment

Operating System: All
Platform: All

Affected Versions

[current]

SAAJ with SOAP 1.2

The SAAJ API should work with SOAP version 1.2 specification

Environment

Operating System: All
Platform: All

Affected Versions

[current]

Non compliant SOAPFault.createFault(String, String) implementation

When I try to create a SOAPFault using the constructor on SOAPFactory:

soapFactory.createFault(reasonText, null);

it throws exception as:

java.lang.IllegalArgumentException: faultCode argument for createFault was
passed NULL
com.sun.xml.messaging.saaj.soap.ver1_2.SOAPFactory1_2Impl.createFault(SOAPFactory1_2Impl.java:56)

This is not as per the javadoc. the implementation could easily interpret the
null fault code with the whatever default SOAP spec defines. Here is what the
javadoc of the API say:

/**
*Creates a new SOAPFault object initialized with the given
reasonText

  • and faultCode
    *@param reasonText the ReasonText/FaultString for the fault
    *@param faultCode the FaultCode for the fault
    *@return a SOAPFault object
    *@throws SOAPException if there is a SOAP error
    *@SInCE SAAJ 1.3
    */
    public abstract SOAPFault createFault(String reasonText, QName faultCode)
    throws SOAPException;

Its a clear violation of the SAAJ API. I would think createFault(null, null)
should not be throwing exception as the API is silent about it and user can
always set some value using setter methods.

There is workaround to use the SOAPFactory.createFault(). since it is API
compliance issue, it needs to be fixed.

Environment

Operating System: All
Platform: All

Affected Versions

[current]

NPE in SOAPPart1_1Impl.createEnvelopeFromSource

NPE thrown in line 112 of SOAPPart1_1Impl.java:
envelope.setXmlDecl(parser.getXmlDeclaration());
in case the parser object is null and SOAPPartImpl.omitXmlDecl is false.

Scenario:
1. Create SOAPMessage
MessageFactory.createMessage(MimeHeaders, InputStream);
The SOAPPartImpl.source is set to a StreamSource implementation
2. Get envelope
SOAPPartImpl.getEnvelope()
SOAPPart1_1Impl.createEnvelopeFromSource()
SOAPPartImpl.lookForXmlDecl()
The SOAPPartImpl.omitXmlDecl is set to false.
3. Replace content with non StreamSource object (e.g. DOMSource)
SOAPPartImpl.setContent(DOMSource)
4. Get envelope
SOAPPartImpl.getEnvelope()
SOAPPart1_1Impl.createEnvelopeFromSource()
SOAPPartImpl.lookForXmlDecl() returns null because source is not a
StreamSrouce implementation
NPE is thrown in line 112

Environment

Operating System: All
Platform: All

Affected Versions

[1.3]

FINE logs without isLoggable checks

There are some FINE logs in SAAJ RI without isLoggable checks.

Ex : AttachmentPartImpl.java : Line 220

log.log(
Level.FINE,
"SAAJ0580.soap.set.Content-Type",
new String[]

{ dataHandler.getContentType()}

);

Environment

Operating System: Windows XP
Platform: All

Affected Versions

[current]

Attachment disappeared during serialization

We would like to send some files as attachments of SOAPMessage to a servlet. It seems like the
attachment disappears during transport/serialization.

Here is a code fragment to demonstrate this issue:
MessageFactory messagefactory =
MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
SOAPMessage message = messagefactory.createMessage();
SOAPPart soappart = message.getSOAPPart();
SOAPEnvelope soapenvelope = soappart.getEnvelope();
System.out.println("SOAPMessage created.");

File attachmentfile = new File("./test/The Java EE5 Tutorial.pdf");
DataHandler datahandler = new DataHandler(new FileDataSource(attachmentfile));
AttachmentPart attachmentpart = message.createAttachmentPart(datahandler);
attachmentpart.setContentId(attachmentfile.getName());
message.addAttachmentPart(attachmentpart);
System.out.println("\t Attachment added: "+attachmentpart.getContentId());
message.saveChanges();
System.out.println("Count of attachments: "+message.countAttachments());

File soapfile = new File("./test/ClientRequest.xml");
FileOutputStream fos = new FileOutputStream(soapfile);
message.writeTo(fos);
fos.flush();
fos.close();
System.out.println("SOAPMessage saved to: "soapfile", "+message);

FileInputStream fis = new FileInputStream(soapfile);
messagefactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
SOAPMessage soapmessage = messagefactory.createMessage(null,fis);
System.out.println("SOAPMessage loaded from: "soapfile", "+soapmessage);
System.out.println("\tcount of attachments: "+soapmessage.countAttachments());
if ( soapmessage.countAttachments() == 0 )
throw new Exception("Missing attachment");

We use SAAJ 1.3.
Are there any workaround for this issue?

Environment

Operating System: All
Platform: All

Affected Versions

[1.3]

SAAJ 1.3 using java5.0 method -> java.lang.NoSuchMethodError: java.util.Collections.emptyList()Ljava/util/List;

For the release notes of SAAJ 1.3, JDK 1.4 + JAXP 1.3 is supported.
But when running a simple example on the following environment :
windows XP, JDK 1.4.2_13 endorsed to JAXP 1.3
I get the this error :
java.lang.NoSuchMethodError: java.util.Collections.emptyList()Ljava/util/List;
at
com.sun.xml.messaging.saaj.soap.MessageImpl.(MessageImpl.java:755)
at
com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl.createMessage(SOAPMessageFactory1_1Impl.java:47)

Which looks like SAAJ 1.3 is using java5.0 method, Collections.emptyList().

Environment

Operating System: All
Platform: All

Affected Versions

[current]

Issue in XMLDataContentHandler

Issue Report by Arjen Poutsma

As a workaround, I did the following:

CommandMap.setDefaultCommandMap(new MailcapCommandMap());

which resets the command map to the default, thus removing the custom SAAJ
content handlers. This solved the issue for me.

Still, the issue described below needs to be fixed, IMO.

Arjen

On 4 jul 2008, at 14:06, Arjen Poutsma wrote:

Hi,

I think there's a bug in the
com.sun.xml.messaging.saaj.soap.XmlDataContentHandler, specifically the writeTo
method. Here are the reproducible steps:

1. Create a SOAPMessage
2. Add an AttachmentPart (registers the SAAJ content handlers)
3. Using the Java Activation CommandMap, request a DataContentHandler for
text/xml. This should give you the XmlDataContentHandler.
4. call writeTo() on said content handler, with the parameter mimeType set to
"text/xml; charset=UTF-8" (or any other character set)
5. Get a java.io.IOException: Invalid content type "text/xml; charset=UTF-8"
for XmlDCH

This seems due to the mime type check done in the content handler, which
checks for equality with "text/xml" or "application/xml". Elsewhere in the
code, a - more robust - startsWith() comparison is done.

Let me know if you need any more information.

Environment

Operating System: All
Platform: All

Affected Versions

[current]

Poor performance with an 800k message

Comment too long. Imported partially

I'm experiencing very poopr perfomance when loading an 800k xml message with a
big content in an xml tag.
the time taken for getting the soap body is about 2 minutes on my pc.
Here is the simple code
package it.cup2000.testws;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPMessage;
import javax.xml.transform.stream.StreamSource;

public class TestSAAJMessage {

/**

  • @param args
    */
    public static void main(String[] args) throws Exception { long start=System.currentTimeMillis(); MessageFactory messageFactory=MessageFactory.newInstance("SOAP 1.1 Protocol"); SOAPMessage message=messageFactory.createMessage(); message.getSOAPPart().setContent( new StreamSource(new FileInputStream("C:/java/projects/testWSNuovo/classpath.extra/test.xml"))); message.getSOAPBody(); long end=System.currentTimeMillis(); System.out.println("ela=" + (end-start)); }

}
and here is the message

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:hl7-org:v2xml"
xsi:schemaLocation="urn:hl7-org:v2xml.\v231\xsd\MDM_T02.xsd">SOAP-ENV:Body<MDM_T02>

<MSH.1>|</MSH.1>
<MSH.2>^~</MSH.2>
<MSH.3>
<HD.2>SOLE sw v x.y</HD.2>
</MSH.3>
<MSH.6>
<HD.1>Codice Distretto</HD.1>
<HD.2>distretto di Casalecchio</HD.2>
</MSH.6>
<MSH.9>
<MSG.1>MDM</MSG.1>
<MSG.2>T02</MSG.2>
<MSG.3>MDM_T02</MSG.3>
</MSH.9>
<MSH.10>456733</MSH.10>
<MSH.11>
<PT.1>P</PT.1>
<PT.2/>
</MSH.11>
<MSH.12>
<VID.1>2.3.1</VID.1>
</MSH.12>


<EVN.2>
<TS.1>200402251135</TS.1>
</EVN.2>


<PID.3>
<CX.1/>
</PID.3>
<PID.5>
<XPN.1>
<FN.1/>
</XPN.1>
</PID.5>


<PV1.2>A</PV1.2>
<PV1.7>
<XCN.1>PPRPLN60A01H501Q</XCN.1>
<XCN.2>
<FN.1>Paolino</FN.1>
</XCN.2>
<XCN.3>Paperino</XCN.3>
<XCN.7>1</XCN.7>
<XCN.9>
<HD.1>MinFin</HD.1>
<HD.2>Ministero Finanze</HD.2>
</XCN.9>
<XCN.13>CF</XCN.13>
<XCN.14>
<HD.1>2</HD.1>
<HD.2>distretto di Casalecchio</HD.2>
<HD.3>Codice Distretto</HD.3>
</XCN.14>
</PV1.7>
<PV1.7>
<XCN.1>54321</XCN.1>
<XCN.2>
<FN.1>Paolino</FN.1>
</XCN.2>
<XCN.3>Paperino</XCN.3>
<XCN.9>
<HD.1>080104</HD.1>
<HD.2>AUSL Bologna citta</HD.2>
<HD.3>Azienda medico</HD.3>
</XCN.9>
<XCN.13>CODMAT</XCN.13>
</PV1.7>


<TXA.1>1</TXA.1>
<TXA.2>CED</TXA.2>
<TXA.3>multipart</TXA.3>
<TXA.12>
<EI.1>PPRPLN60A01H501Q200512</EI.1>
</TXA.12>
<TXA.17>LA</TXA.17>
<TXA.22>
<PPN.15>
<TS.1>200512</TS.1>
</PPN.15>
</TXA.22>


<OBX.2>ED</OBX.2>
<OBX.3>
<CE.1>PPRPLN60A01H501Q200512</CE.1>
</OBX.3>
<OBX.4/>
<OBX.5>
<ED.2>multipart</ED.2>
</OBX.5>
<OBX.5>
<ED.3>related</ED.3>
</OBX.5>
<OBX.5>
<ED.4>A</ED.4>
</OBX.5>
<OBX.5>
<ED.5>MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=----------------314159265358979323846

------------------314159265358979323846
Content-Disposition: form-data; name="document"; filename="document"
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: base64

JVBERI0XLJQKJELJZ9MKNCBWIG9IBGO8PC9GBWX0ZXIGL0ZSYXRLRGVJB2RLCI9MZW5NDGGGMZU2
NGO+PGPZDHJLYW0KEJYTXF2ZGJKWFFEV4G2MBRHSBN32PMWVTOMHLYW9QKB2SRMPXCYPQVYRWXGE
8UV3CIS2UKN/HDJ5ILHH6OQCK90JND26WJ69E88HPGPZYPN5BP/J/IWBZBM+GGY/DM744PCL2JBZ
PB/YTDKHXWD5NPJVZ6NFBUE5SQT6+FY8FJ2NMXRHEFPM+Q54X6XW9PFB/WBLF5CBCQZ4MTCMYJZ7
9NMMZ0CFJ+PZVRLPW2JB/NI2KV9PBM6NO4ZWTWB29DOX52ETXXI+XI5V8ZBKZTR07/L2BNI5LNHV
J4VL0TT5W9V4OV3POWZFRV/OP2GKDZJENV2ZQI5IBZWJGBGBZYUYCCTZRQGRLB9S24PPZ7+DXSYP
OORDQZXXKFBFFPJX2YJR9FMJJISJVFOY470RHVOSCJ82HHWLCJD34+V49NFCK2KY0LLZYPHMOMTS
BPWK52ZMOK+OJ+7W3IZR+NO8G8/3OBMF0CXWR0EXGTPVSVZS6H22OLROG2JOJXCUOFX9CTMELKCN
IBVRZNWOIOMFU04XTBVBKDCW9LIMKCOZJLSQOC+ZKBWCCT3ZIOM9C7VCH0PFUJJNXFRLB5MBJOXY
6X252NYVS00+B27VV49RL4PRXFQCM/GSW7KW5ZW6YFGMI0M7F/PL2WYQXNRKL7LWDW2QORRG0FWY
0NJUOUHQ2YEUPLFEOI4BZYRJOHZTWILRKDKBC8GKLO0KJ2D3O5T2FXORM620VWHHBPEQNV/YPC2X
TO6Z2ZZXKGZK25B2KE0OBQSJFFBKZ6ZOKKWKSHGCCB0LMOO9E/DEBEGIGEVXOEXVYRREJJVXIQKB
S5E/2K+FTUUQSDUKSWYHPKFS5+PLT2MLJORD8VBY8TE0GIXMK3H0MCRH9XY2/YZT/J4ZNZSOM8K0
9R3R2E2DZGVZMSTYWYIUR4VLOPHWXWIW2MDJEDLP7HI5NT8KBS9UOWOEF6ZOOZN9VDOFYKBFLOM0
NQS5BGDXHQUIE+BLPQGNXEZPOOVPUDX8FSLVEVRTJH2PN5VKREK7XJDFHUL5N200YOMIGMEPIJ4O
PDB2GOGBOTBJLBMUPXUHOZPTLBRE6BBRL5UX50434CPS6TBVYDOFZ3OLBQQNJOJI600EZIZJOPXK
IPLJMRJXQ92Q2PVHU75+XR3EB9YB7X6IGK/QK2GDYRGVLGGVB46IQSTBYGUKV+SKNDYDBBO65IGN
FBTFVE4T0KJDD2V8UHRBRJSKPHYZ2NRPKHJ50DJJJIYDL0ZTQE4NYM+RY40BFITFBSYMSEKCVCVO
QJG2MWM2UD28OYQRLI3FYTZVMGJWBL4VM+JQHPCXNU+OGPDYSWOGYOEYBSBIJHFOQHSUI7NTBR9+
XD9VVO+BB99W32IVKLEZZUZQMIZVKBNEQTRXBCOZGJPTTZKCFX0QRN9I6JHHNFIWKBBTYDXTDBX2
2R53PTDRD/X8BBN6PML8U8FUKWEW0+JZUSSGXLUVQJP7IEWHYNBPEZJ8S3P93TZTTTZ0JFNX/PN2
UPLUZW+BVZYPB52ETB/FR3X2WWNFR5TLXXXMZ77FZJKWSV6JJFMLGY4MIDK5XT5WXYWNFWUR6V9S
DM+RWULYUXJDBXBBJGJGMYUURHUIJEPS3IZXRTHXWQWUDTVN/EQF5R+NYWPBCG4FYXU2L0VR86VT
JUU6BUP27CXJFKLTRJPRZ9HZIHNVSOK2KECQSEMU432LV5POXZ075S2ZYWDFUMX/5RNB/B9S375+
FBLFLEIULTD7IWM74EPTUVVLDN7X8W93D7XRMNVGYSUUV/TZFXVTTDDRKMEKSQXBRDKUX2IQLWCG
IFZ9B82BRZU0VEGZXPUVL26QV7L5UWM2QB3L5JXJCI2K82BT7VPCGWJLIF2VC8TY03RXLQO9GSIE
CX3ZKON9CXDJTO0IREZTXDN45IOZ+NM4CHF7OWNQIPBNI2BP+DRP2Q4KUUK09ZZUTP+BCEC7FYDN
UBBIHYBH/T2F68ZUIFWDSIFCWLX7H9GSLB8KB7JG2PNPRJ+MRQFV9NNSOX/OIB5XKN+YXYEJ7ZBP
FBEQTM4433/PRKE/TQ/BRJZ+BDE2KPOHDDYP2WEP59B6OUTEZM7NO/KKKB2389V348VICJSRV2BO
ZGZZH2JQOZKWTBIKIK4+VE2L4VGU+6VIDVQFRGMLPCBCKHIKV324XSZM9X6YWCS/3O3NYSVHMLGT
ZEJMYSXF24UL6ET626ZBE4TU00M3YLG82STCQYHVKRLTTL6DPZQEDN5L8BQ2Q+PJS2NS2GVYXFPU
NF+OLYD3O4802JOCJCQT4XO+URLP/KYR5KDHF0J+0G5XQDNBD+WNVZ5BUYMR2GYPK2QBP0FL3I+O
IIYWLZH/R/ILTY7KJ2BZZHNQO3+SDJHFRYNCDHNT2JWK3N22OJJWWF2TWW+2OMKLQKB0OMG8RC2Q
ELR2BDXT782YN+7S8LIBBN/50DRDU4PJ7M46JJLTOHUKPHSYQLOUNPZMSD0TQRV+SBO2KSKN+2VS
0QE7PI2QOP3TLG7DTCE0VJVM5RS5P06BEXJPCJOKNMSZMNSVWGELZEK2UR6EFJGTJ78NF/VJ5/F/
KIVGCH/SP5KFRVQR/I9FUTLCO8PBXDIEMZWF2QYVQ2KI+WSYJBE45M2QUUQCLVXYPUMNUP/++YKK
KVUTB7QBGPXTBJPOJFGZSLK8BSKJ0YZSJME2GVLPBP4W+/4+QWOXLNRZ2SNYMBFP6FZWYDH02VXM
WH8LGNYC264ZUTEOJWRGO8Q45VPKL+NKWT2U2HCF2GI0/BDS2JYCNKJW3TSUOI8KW+VRMGHW8P3L
XLR87W2BIUF+KMGZ3V5KFPSLQBIVBBKOIFE8FXXTCEBILF6QSBXEJUL8NWZBIPX+KEGFIOKP4DSQ
BBKP9IDEKKBUTWVFTQOQSKU/JFIBONGQ+NOUGEQQ/SGRCRZMK/IBD4BEKV0HKQOQXVPBFZOBJFLP
D4LU4HWHXNCDBCRSWZCFSBRPBXD7BBKP4G6PRDLQEBJBB5BBBYBEKKGUTWV3EWBSQEBUJ0TXVHC3
BYCRCU72SBRPBXD7BBKP4G6PRPFUCLCHIJEK7VZIFE8FD3SBEQNGBO9E8VRWTWCGKQRU9KGUTWV3
EWBSQEBUJ0TXVHC3BYCRCU72SBRPBXD7BBKP4G6PRDLQYXG3BYCBCGBJVJBONGRU9GBKUSHDHONI
QEBUD0BIFDZTKSIECU72BCRSWD0EIEKP4G4PQCIV3O2RKJ4K7VYBJFLB3R6J4QNGBG9BIHXC7ZEO
NGRU9GBKUSHDHONIQEBUD0BIFDZTKSIECU72BCRSWD0EIXKGWNG3BYCBCGBJVJBONGRU9GBKUSHD
HONIQEBUD0BIFDZTKSIECU72BCRSWD0EIEKP4G4PQCIV3O07IUZXV2RX333VBJZD/F32OMBGMCE5
ZW+TNX/VFGZM+TGTJN04D53OW5/YJWR2H4SEECTXNIUNGSTQENE6E+BZ6/0TKKX4NNF5SLS9VP9B
6BTXDD/6WBC/KF3WBFUXUB2WDNHDFFMIVGHGYQMXSZSJXBVFMV3RUROED4SCU9J2TFBZBFCYBDYX
TP0D/OBSCT5I4HDJLFYLVU6JTSYKZ+RQFO2PE3JBD+4PPNLLB9L3FNIRJ2XHTUM5ZCN3ZYIIMNB3
DZNETYNH5BGBOTQSRPLX8ETRFLYMZ/G9VMWFYPMIXNHN+YHUTMF5CMKJZOXRQ9F0H4DJBRXLSE6H
UQB2UDT7G5TQHJGKTQEGR0OE25JLVLTFNW92ZB+IE/S9X22Z7TIOOYK7XYIBQRWVHCYGVOKUM8FC
OUBQXG6LQB2ETEZIBBFJMFMKZO2GSHLV4SNT25FNZBDNOOYN87VX+3Z5BTDM5LI+ILXQW7XPEDVB
FH3DDOROB5UXLRK4JFBHRRCWIQQX/H4E95BT8OKMILFL5KSWQD+6WKVZOJPYISWUBCWJ5GIMOUJI
NKKODMEK5LQQ6GY923XMFXFXOXSYRQKMYIKZW8J0+BXP94FGQH5VUMESMBSCIL5NHNGKJU5PZUDB
MU5P43NEBZL77PV+BCUOQU4R6RFDNO57GKWEMNLPCMFLGB02NONYOGQIB/BVQKXGX2BKTBNLNPOI
RY/LXXT+3R4WOYOPPUQTJS03O5DOGUGDBBZQZBSYMBXBBJNJWXQTWLVEVXR08LD+TNKLSQ4EK2MR
TI/UDIZK3B+RL6SN2UFSKHZEPZBZ7U0KFNX2JNPMMGZVNW8SQOECR4BSFGWU420RZ62VLHOLPJTX
5K7R57DDSNR53TW/RO73++T4P7DKMDWN7TFCBB26Y3E7B3DDBKDC2XSHRP/B6BTBFZBH4BJ9CWUX
VMCUUDRZ7JBOVPIBE469BC927YRT5HP7B729XVWOMHL8/KL6OGZRJTXF/UHKW232MR4WXTUWEJEU
WEBPX2LBDNGYYEKLVRSTMGWR4LTB2RQDWOMRIB2BHLRN6P82LC8FLJUCMJS+FBG6HFKFZERFTR+Q
2T2D7I70PFKPHNFBQTL2EGFWM+PO9RMDKDFIWHYDPR2FVY+V6VYBOWDC98SJJVER6XWHETJFIS9P
LRPZZR5+3TWO62W9P5P9OJ3U58RC6/UTEW7W3WVYZNFKWB7WYUOHYSNBMBBNXNJKQZYQS942MSUU
ZBILTCD/JMNHW64MSF0+X98/O75RHNLBSKBDRBUDXZQHKFLTWZXCBVVDJM3X/BZ0MPCNJH3B0XF3
SHBTWH3KHWIZJ3SVNP3UG/UNS3ETJZ64EONS/W8NHNSDCGPLBMRZDHJLYW0KZW5KB2JQCJYGMCBV
YMOKPDWVRMLSDGVYIC9EQ2REZWNVZGUKL2R5CGUGL2HPYMPLY3QKL0XLBMD0BCBYMDB5MWOVQML0
C2BLCKNVBXBVBMVUDCB4CI9IZWLNBHQGMTQXCI9DB2XVCLNWYWNLIC9EZXZPY2VSR0IKL05HBWUG
L0LTMQOVU3VIDHLWZSBVSW2HZ2UKL2DPZHROIDY2NWO+PGPZDHJLYW0K/9J//GBIV0FORZIC/+BB
EEPGSUYBBQEBBHYBDGBB/9SBQWBQCWWODBOQDG0OEHEQEXGOGHGWFHGXIYUDKDOZPTW5MZG3QEHC
TKBEV0U3OFBTUVDFYMDOZZ5NCXLWZHHCZWDJ/9SBQWEREHIYFRGVGHOVY0I4QMNJY2NJY2NJY2NJ
Y2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJ/8BBEQGBJQKBBWEHBBIRBQMR
BF/EBB8BBBEFBQEBBQEBBBBBBBBBBBBBBGMEBQYHCBKKC//EBLUQBBIBBWMCBBMFBQQEBBBBFQEC
BWBEEQUSITFBBHNRYQCICRQYGZGHCCNCSCEVUTHWJDNICOIJCHYXGBKBJSYNKCKQNDU2NZG5OKNE
RUZHSELKU2RVVLDYWVPJZGVMZ2HPBNN0DXZ3EHL6G4SFHOEIIYQSK5SVLPEYMZQIO6SLPQEOQBQY
S7S2TRE4UBRCW8TFXSFIYCRS09TV2TFY2DRH4UPK5EBN6ONQ8FLZ9PX29/J5+V/EBB8BBBMBBQEB
BQEBBQEBBBBBBBBBBGMEBQYHCBKKC//EBLURBBIBBGQEBWQHBQQEBBECDWBBBGMRBBUHMQYSQVEH
YXETIJKBCBRCKBGXWQKJM2LWFWJY0QOWJDTHJFEXGBKBJICOKSO2NJC4OTPDREVGR0HJSLNUVVZX
WFLBY2RLZMDOBWPZDHV2D3H5EOKDHIWGH4IJIPKTLJWWL5IZMQKJPKWMP6IPQRKZTLW2T7I5USLD
XMXGX8JJYTLT2NXW29JZ2ULJ5OXM5+JP6VLZ9PX29/J5+V/BBBWDBQBCEQMRBD8B2NS2BVYPEK20
CHYTYHY9MD47NP5/TFDRWVOUM3CWPTLKUK+JOX0FVTVUDDB3UVPLFNVTZJY/TN64HPRXSYFLIDKX
CWBIX2NFKUPRVIVCCPQBLUC54C2XU73UZORSFO2UK5TB5ZZ0/WDRGUMOPSCO3KVQNKCLYOH2I72D
NEDI5J2IF9YIE4K9UOH967ZN2XD4BBHOPWPPOTLK5NQLJYLZHM+MLI/HEBQPJHBKCTGSMTNOSPBT
FQXUPNIGB83EBQEW6KZ4JOI5E2BEWQLL2ZT2I/EHUXPDMY379W3BPVBE+P0RP8HTETFP9OMHG42G
TPXVJPBH83TV2CTL7DDJPB5FTNW2WFXB2TOH8RLBO9MPLHY5/L65QQKPJQXDWCOYIL2Z0N7JLFZT
SQJVLVCUXGCNFYVHFUTQV3NF5L42BW5ULG+NFEPSU0LSE5YVSMVSZV2BB4T9MNLTV3TKUVGM9+TJ
2GTWF4XV76/T5MVFMCSBJ7QUEURX6CFNQ5S9OL0CU5KQORY3KK2NWOOBKKBCIGBOOBKKBCIGBOOB
KKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIG
BOOBKKBCIGBOOBKKBMYBX9NGUJBYXIDG4BCKGH0JRSBBBIOQEHFTGCZXSRGPGBBXQQX2QWWNLVUP
2JZUQUCTJ2WKNT7IK6HWBCQSRT0YUKSB5EOKPFY5U9SO+VRFT7FZRL9IZWOMKN0FRBBQ9PQYB7M5
3LYYMMECLZX5UXQJ2YQFJ2L2FWBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFF
BBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBCVRFTRUM
UK9O0OH+XYYRYVEOC/JMUORKMPJYUYULNSLZHL6BBB2NIBNUWL8JC28LSOW5XGFL9K6DS7TTWDJJ
NFJSSFMFBTUXZHM6BB6ZHQSJXPL8NB3+Y2QX7YRP6KSKO+8FBSUPFPPLJQNSJVGHW2KKY3YYKPLI
9C9VXRU7CBRBWT4HBC0CBQT7GVNQHKLDZHDU5RK7NKEKDLVZNUB5IHKMIKBXSUTTWMYWP882S+FB
G4SDNYXKLGKFEEPVRGDN34PQHJVWWP05KS2XNIRS7JUBBF7YB3HJYMCZBX0/KQXHXR7U2U3URMMX
LSKQP6TKJT+FN026VN0HKLJ2+BODVXL2DTRB+I2KMBXYN5LMW+QRZJBRSOPNRLNBYM3HL7NR3QLB
2MFUQJIJBCEZY4/WSHWXBQSNXOB8YIIJBERZJBPUFRRJS502SE2P2KWTJZ2NLL9ONWZBBOV+Q5X+
XVWX4XH2KGKF7EZBHI2CQ5OEC/H0OBL7RNBBJT9QMTJEORU3CIGBOOBKKBCIGBOOBKKBCIGBOOBK
KBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGB
OOBKKBCIGBOOBXP/E+MW3JHMJTG4LOUVH+FBTBKRJOLKJYMJDKSOHFRGPGTBRLTQXM2KUTQ2MX05
WLXL+8IZSUZOKSWD7B30BMTPBIMCEHB9CKFOLLY9RQRFY5FUNV8BULBTORLDSBQTGBDJJ9HUOM6Z
Z6MWW3C+YOYUCYOPWH2IQXL2E6SVPK6MHRVMOUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQ
BUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFF
BHL6XPOQ3OURCWZHYVL2PVX5FRX9CNJ2RQKYHGSLJSWPQLGUM+PY+M6TQSHIFRMD/WB2UYTJVZ5G
7DH5FTFDOWJUHTG44PPRSJKKDWOQLCLUJMFD+K6PZ6RJNDMRGQQX37VMPY/25RO7HGKT5Y0BBZIV
DEHIOPRLGNMKJCUYOMJZCB2MGNBCWNLLBWVI5R0DW9BTWMJQRTGQ/LBT/CCC4RDDXBKZNWSXZS5D
XLBZW6ZO8WO2RTYMEHH/BNBPWZ4JT5KJUZ2URFJTC5/IIZK0OJ+2JPRFT/VI/GTROZWXKGTCQLTJ
E56N6/0RO8KW00USRTRQFLIYXFHB4IX+TEOV2W5XFT/MD9XL2WK6RF4JB6KF9ZVYTJVB3R2GOV
FDFSMM2Y6Q0JSCEXOZORPJJLSZIX2SSJBG9DJG2HEGNM2GXUJ3VMPGY4CFW25S9EPX/OIUZOBB2C
CJOPGS2RS6NDPPP08VS+YZLWPZISVWTP29YRZI8+RXI2JUDYPOTX+FEOYDRPOEOSDVSWXVUVQBHR
QBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBF
FBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBCLZBYSMJJ4MKHVFCEJ8KMPJP7CUK9MRTLESGRNQO
EGJGBKPLNNBKCOIK4M2FC/X4XTXJHHSGVUOEGBK9PEKQOUHLLDVBB0OC3UDUSXMEKHJJNJD26QRG
KFHSUHOSWJJBSMMWIGBOOBKBZKILMIVQMKK4BFBGPL4O0UOTYJXF/BVDITCX2C22CMVBZCQL94DC
PQDWCBSZOYMYV4TLYORXEV6FZ3L288RLIMMGIT2ZUP8BWLGLF89N/WC/ZPOTBOZE8RBOZLJBRBLP
WVY5+ZNO205646FWQF8BWLGLF89N/WC/ZPYQXJUEQ8I2UW7LV7C/FY7B4DPJO0GQF260KGSWVXFN
ZXYN56KGQVI5HWMQKXBZKVBDTZ7L2SRYO2KC4RBWY+GFZ8OU2E9VPPHIXJGBLNYEM9KCPQLSXYQR
I7MFHRFLJP8L8SJGCNTRNTOQEO34IQV/BBLGLF8BPZ/+/ZQHWGTYHIIK2YBZ27T725S3GLZPHZGF
COGZUTTQ2NDXSLPC7GBPO4FSOHWEBBQXEW42OSTYKVDQTDPJD3UYXG9B2J+GFZ8FINS3FBZJEH95
KOP0OLVJF2YTRWG+VMVHIKSBYRUROWYGU5BP9BGYDZOV9CSNPK8UEBMO6OGYR9FSM2WV6DFSIKKY
RI3RXXGF6VN7WPNY3MFBW5UU06ZBVXNPS7O208XWQYYNPIGFEQLJRV2XOPGCVI0BOTB2YWX/BNIL
LKZZBWVOMNPZ+NEPKO4TMOK7LK0QQQYTSHCRQWY+WGTVE02O2VLSS5GCMKMKMSPGMDJOCKNYHNJ2
ZDDRTHNBZ3CSSY4MBZSPGELQF8JRPX/PZ/8BV2BH2OIYEJPODH4L0YWVI0MCS5CJ5D2NX769GSLF
Z7L9IZB6ZYBBQRBBXQUNBEK5LONSL+32GEY2RLLVTPYMYNLFX2VP8BMUWKOW25BJ5/YKRNXLZDCV
BR5EFOZ//CUBV/Z2F/V2BUWOQ2WOMVTZ2DGMLSCD+RQI2YSDKYI24SDKXJ9WS7E+JS5ZGE8HUKNP
PU4HNWP54RBFPZ5FJJXQZGRU07+RBQRD/IYG8VBWJNOKKI/VBDJ/BBRUTLY3VYFNTPVKTPKDVQO2
TGRGTSIIV4TDKT2M3UUWFHCGC4KZZBBSBHPWQLJRV2XOBGRYIV8T6STG3DD3MBF4VP29XDDQRNBI
SKBDGU0O2IZ0RMK0JUYMV/HKNK/57P8B9+ZQPFGLE485/WDV2BJ28O5H2QMB7USBF3YKQJJJOBBW
PL4P0UOTBJXF/BVDIRNUJDCUPVJT3L9HQDPQKK2SWCR2XGCPWNMUTWS7S8JTZNYTSY2GKT2OBRZX
TZD9RHL5UHBMMIT4MLMDY425LMCBVKN4Q0TX2ISRH/ECHH+NKDSMNXVK0BEJNO0VLE+I822LWROH
X2H2HBQ9ZRVJBXGTZ5SKPX2U4GFEM5XSV0G6SVFSVOY7LISUTYOCKILIFYVX0/URBUO3E2CSQHBY
PFNYSDHUBULHQPVB2CWTZPCVTQEDOM5NNSNQTTRHBW2FCQTTORGG0CY5UXQHTI83J2HXL5BYWEDC
VSJYBNBPP4U62UYRY3SE3BFG+DPWRNBX3O5LFL6J52ZCVUKDGIM7DFGTWR/WLGLF89N/BO/ZPTQR
HURUQXP/EKNIBS5HVFMFLEBFUZWXRCCZ7DP2Y2PHOGK2PVX4GMYKL3IBBIM/KRNPJ0X3/GUL8ST3
FVO00LSSR8BSVVRNK2JCUNGVZMPZM4TBOR8OXNZHRMCQSXEJYKXPBHCN6DB63XLLNDOLW0BIBGEJ
QBTZSPN+ZZNFV2MJZ+N3JKV42KUPYPHUGVTT832HZCN77Y87F9RHT86WGB2KWXXNPY8WMLKMMBWV
2BRJKSTZMVQ/DK02XOLVJCEL8EBJ2IBIBPYDVMZ9HM0IQHG3R/OCZ4JUJ59ZUFMZSRUVRT0B7Y+V
WUG8FXE8TPCRSMWJIZDHPBOCJ9B+DFNV2O8XTGSCRDLWK/JE4NWS3TWXWFLLEDOXZ3+N9BOEEBIE
PWY4Y2JILDB27CDOBJN+2CLTH/Z79G/MDP4NLMH0SZOCQSQREDQPPP8BH+NCBDJJFKKKTFZFOVI6
G0SQ3ZO+KXTFOEMTVONNKENF9IEJKQBN5SDPZRZIC4ULVVMIKKNWW4YHLE/2QSQ3DFYPU8T0LV5B
MHSZ5BUFV2XIWM455P4DNYPHG+V7M7MSEWSBEJKS5J2TKY5/PITJYKQIS2NBKPKTFLY6YITZQCSZ
XHFNLOLYKBJBBJB6KBJP6VM/HDIKIBG7HNBJF6NFBIC/TF80K7PWTED/BFH4VR6FPVTDEVE2F+SS
LBJYLXOD0BOC8FSUBMOSTBRO46SHPLTO2+JKBK2SNJCRR3H2CMN+QSPUD0RS+0+FF7SP/FP/8KIU
MM+FUKLPC0UFE5P4GWBFC5+YQFGOXKBGBGNP9BOBKND/BLKIN99N8/5T28/N2OP0XVS5PBE9TYUS
P+097BXRC2ZEKBCBTNYVMQ/LNH+2J2XN9BS+IEBS/ECF/GDTKIC47KCMPY/NWENK2TKZGY5HKOYZ
SEKB0Q6IWJBJUCEUG9JYT+X86Z4BP7J4JNZHH52EH+HIX+MPZRWES35I3QE9N+SLHHKGO40KWKZB
8BTHKNOEFQLXCMLBZBBIROE3UG+QY+6P7XPWIQSK0LLH7FSB2F8KBKYFXULGESMP3S+GPC/WQ2GF
8JBE/WX/BNCQVHLURRHYQHMYGCL+3/E8OUGJHJLHBDJ5FOBPBQP2ROBNW9PS9UYLTKIBHYUGWQFX
3/GQPWU02+O6VKNROUUPJ+DLQRBI4SXJKQU8B/WKHB/MPYRRB0OU8EB4Z3PO4CKWDT9DUDQ2SZ/M
BIIZYTNDG9F/BK9BULJPGS3UB6DEJBSGCXIPBJ7YGRZ9K54QMK4PRNJBQKNCWJVUDTLKTVBVLK3Y
XQWY49BZXNXTZ9ST7/U2Z8JHIPXJ5X9BITK+TOM2KU7RXMZSFDL79T0IJMOZI/3B/UDP0XXK+JIN
M8R3KRQWBCNB9KBP8QVV82OIQZ5QMWBVHQN9O+GRXJGZCQ27Q+F4HTODUXHN/KWB7/EK/WDQBTUU
ZP+Q2LMCX5MI8GWX3FVFXTIHJYPLT0PWK8W6FBWDRBTBQJEZOQSO68VPKNRURYRDDMTR/WBE2NL0
MWNHZZM2JMPIR92OC4BZWT4QME+2S20YE9CN3+83TP0HP42C0LTSUPPUIO0RR62GEHNBS9FUNOLJ
2YEQCE5HKN8R/MVO+M/+QON/BF2X+RPR/HNDIY/WJR7FLSBOP9LQG8+ZEFG79X+BQBO2BWT4TJ/S
RPKBWRJONUPM69UTQ+S0EXFQZFJBPJ8WHB2R/KCBP/FI/WDQQTXPLJFB3B6BRLUBVFBC3F8BIJ9B
JBSXDLTEKL3ZVR6BPKCBH+YIWXGS3LH8B52Y3BJ4RNPG7GGRWHB7HHKFKSKUCFBXBNKTONJXLHUD
RXE695X/BBLKX2JB5OY9+7PT75QQ/WBJEK+FX7L7UB4BFLN5FKEZSOZY85Z26E9L4IWUWT0ZZ8OU
U30ZG5/PULL9OUQYJYE2XSZF8PYBZHLMDUCFSO2BLLC9+LB0MVHIBZIOKHMJSFUEU3JPTTU03S5U
PBKUVY8TPBLFXPESBWWKEHXG9WP4UCBFOB2LXQDMS7VVMHIKBGHKK7N8ELBKKNUBFQ2UY2KSNLOU
7LRLEZ2GXVRFXPHN5YC7IQEOZMQXIL/KBRL6R/8BOZQZQUYWT6KSGOU7J32DXXNJD6TBBCJYT5EP
9PJJP5Y/WT2LW/PKVUIJBO/GCZCSFFP+FVGKNOTZCIRQVJORZTUP0TXYLBFMMMJQMD3DDPYJ/SOF
FETZEIXJJUS5RCBDTXWML7JJ5NPLSM49MB2JBP9U0G6T5WZPBCW56SUDG/0//XSECP8BJZUF+UG/
LWSZC0OS2HLMNB+RD4SNE82G20YE5OQW/WB48DP0H86I0B20NXDPP0HOYQ7QT3I5U/IP52LF7ZM8
7EN/VUFZSBVI/WD5BJF9DFQBWX/YL9R/BMC/9CNB/WDL35G6/JV0NC6/49JV9XV5VW/H6XSO/TH9
QBDNB5E5C3RNOPPU2XFTJZBE2+X2KEFY3BBXW2LCRXWJEZWYBB5TDNT2ROB0PUDXUGTL2EVSXMDO
CC0MBYLWBIIWQE9BGXBB2VRBSZW9VFEZDSIBGPMVXQO6HLYYIIYCKSSSSIVFJWSKEGHBZB3BNJTV
EGOQSSQD9CCVO0OWUDHQPXGRRRMT+H9MNUDPJBJETK4YGE/QGTFFVECIOVVGBBMBCIMIXD0DVXEV
KSVGBUKUNQ0SW2GQSXEP7WCBLOCR72BTLSCYGENTGI4X2HC+PPKEU+ZDNIBS6BPN6IBFWFTQEPLX
UQDQCJSQFY2FP2KWWM7JBXYDHGUXYCUCKEBM6GSTVVJ0U/DLJOSIMJQGVHGGJIIQHBOWM22WJ4RV
RIDKESSBFYE05QJJ3ZYSPXK02TJRQBBO2WCZRBQIY87WG3FNTBT3KCU90T0GBHQYPJFOOBKOBZQD
6ZY/BUG87DBSN2MB9+NRJ86MT5U2ROXLFYMY3I0XXLQXE0UMUXZ5GV9RKFU+V2NZOIHBXXUILKYY
WESPB+8UM/Z/BJVZSUBXLHDNFJQVGCD2OVY4JFGJX3W3YSW3BJGFCHETR+ZPD3922/7/BH/26CIW
BLZDXXHSK5C+9+43XJ5I8NMTUVMSLFXBCJBIHWS7TFD2TQOGRZRUS6YNH93BIJBYPSNOCNO3KVOM
QLSY7CEFRXLK+FT7QGOOYKQSM0BS/WB0N+VBVIYZ+06Q0IJLWHEPP0P+P4UR96K22CHVUHHSCUK0
USYBBYHOIH5ZPTNK/GOH5V2/IFQNH+5VQBOQBBDHKUQESZS/RYMLDWNJ9V0MJQNQJ0ZW2NCSJP78
HFH8TBRGVT0EFNV2F9Q2SEIIGYEDWNX7DB7D/PEPUPCSWTZKSHB7HYJD20JHI7IJMPQK4JNCTOH/
BCNT79ZF/QQ2QNOUBDZOQSUPRS+PBP8Q6J4NMS5+SNIYBJ2BOQF0FDVDBRZWTS073MTBDICUCW9H
U0PKKBFQIJUJCLUUHZVGYGSS+UBXH8U3ZN2JIP8BT9B645BOBK9HVUF7HPHK2TOBTDWSDBNKTTST
IOWUFJ5JC+4ZXG2KEIRGW0+BFRCB5YSWQPU2Y6HPUVJNXNDN2ZZ2HCPDN2ZQ+I9QKTQLWFZIE5RS
/WBBBT+UP2QJZQB/B6EBBCZXYJQSQWXJYO/PPTK5UFUROE3OU/D7C+FZ5NP2EWWUFKGUYKNSW5H6
Z/SP3/5H8FUF+I6UX7KU+JCL9YKFSRT2Y0K0XUJJBYYT7PGXHYZGCV8BUVOEGF8BKWB7/EK/9BFE
VY2HEUFY2HH2G+BVUXV2T/2BPFG//HNBF9DD/KQX8BTF7T/XC2NPLSHQ7BWQ4RLZGY+GCIUNSW2O
82OXUBKDZJQ5JJXHC5459QKJFUQO46ZK+SMDXNVXVYRQPUL2BRSBGFDQMEJKDD7FPW54NUUVPDDV
CR/DKKVSENB4QU2LJS3MK5JTUT9YRBEHBE/0CKELCL2YKG7UGIJ4IP3HK+JHNFT54UINJIV9UGYJ
QRE9OMVCUX3KHFU5QL3QZWV+RXS/9+L/BNCPNIRWSPECF8VLRSUF6LCZH5BFNSLTJ+YPRST7M6IP
U7GSBTLDW+XJOS4GPR6VYKLJWPGBNGBMSOH3Y/HUDN8SP2RSRJS5UU5TWNGFLGL6NBVXWUXJP4TH
HKGUKBNWGCZBXVV9YR2KXOSV6I+INBTTQL5ZQWHUJEJ/BDBT2/CUJ0K/HV8BTKEFEJKFK8BJBU+W
9KMMLCO4KUOQNVCO5YNHM2SLMBCBGIYOUBD77EFZRO4RDQYZULJ+ZK6MGU+D0I6D6MLGDIM9ZOJG
I4PYEVQZFJS2CS226MSUPLJHY5YP5N8Q2ZZ7DXDK2NCRGRGM43BMHHODMQVUEUX2NFYQPOMNUCT5
FRBEIRSKYNM8QMJ+C887HMTHXF/YNVL9I/8B0M2IKLFPDZFJKDS7JFFCPZB7BX4ULDTYF7YNP+WK
6BHVLGBBTLDRBCMNC4GPR6VVBQM5JM9OSHUKPOXYOKGSEL45BFLRI6SGI/HXHP4KFRVI/WD+R3G/
3K/LWS2XN5MF7X5U8IDXBZYBRQJU7X5YBGMPB6BKCJ8EO/8BRVC8GSLFP25I5WINUY+GBPXXLVSV
BCLE3TUYLNTSVTVM2GYG8YVXJ5XHC5BHPTRQYBSLZHQF9B5TGGK646JKDD2/WRL33G9TNZL944X6
BM74IUVVPDEDYNSRKOPQ9X+DWPDD3BR6FBJJCRIW3ZVNBI+Y20KS9PFYOPTJ7XMB6GJLCQTWS4IM
JKIJBIVGCCVYHHI2065FZ/BBIO3BS3VT9C9/PRU5ZTJFBUVXKNON3ODDBY6FBMKSX2ZZEOVPNZWF
ZRYRWCIVHN6UBBVOHKXXIYBDVJIRBOBEOQOC53NBWT/KVV6REHT9NNULUM0Y4B6ZJWP52NGQ5KT7
GCK7KPPSCRPNIB/BUYKUXWWKRWPXYBTYCZGK6FWRX7DSP7IMZDQBUEXJXN9BVOO3BT9CBVBUQCM9
0CPFRMPRXBM+2YUC5KUXKN2X0R0GK4ELKLZTIDRITHCCZQBE27PIWK5SBI2CBC+ITSMUTKTY8QZL
UQ8BENV+NDROD++O6XFCSBCTLWX0JHEIJUCPNM+OZHCU6NGMOKZWNQCZ4G2+9XUPBE2LMMCLBFL6
SE5JRY8K6TPQUE0DYD0KOPNXJCDNR+VOFRUPBOGIWVOGDU0VEVN95H4R2I408RQWRBHKBZNXYB7V
N+G9EVJDRS2UPDNHLKBT2U4ZRKO2UT0CLGQCSE5TE9ZU/OB3IHUJNN0XPYCEYZBFJGDPPF8BSUOT
NE2G2UVLB5KLXPZI7ZBH9KMTULGBSFKYIRKM0K9JVBY5+ZWM2YFLEXGXC+UBXFWEKDSW7WSWRZII
3ZR7BBJ272DBO4NWNMRWLBQX2OP3N9N6FNDBN/LGYX2JOB/OSNW94GM2S6KT7IKNWCB2BMEDQODN
PRVYQWMOMK6RJUUO50NFBM4UYWJJ4MILQOJJDKEHFBMRQZMCXWFYU5BOBBNT/DKHH04RR0VRBTS9
ZQKZSMMGRZK49KXJQJGVZCGGJCXMV77W2Z395JCYYZQ8MMHWGOBJ09QR/WDCHBF/BM9RR/VPF/IB
TW8W7ILHYN3UY+DETJPB03FL5IOD2RU659MFPVNT7KPT7NLBFNZEZGUCNK5/RWIGK7/I2JSUXDDR
FPUPD9NQF2LL2LILBGTEWGCDD0PNBLRK8JIKY6SU2T38QXG5OUEM2UORPKLBXUZDN8PWEM3X2IFP
XFBVHMEEDPFGCR97BPE2KLTKWCSDBKNMLGMOX5UKNKMYOC6MCFDDMDOFJ5K/LCXZC7HUZJHP0QT/
WH2N/WDPB6/76X/4MODCLM3HYPQYEY8MWVLDX3MUTWXJOQGZCFYQXZ6JBWEOY3SBYMWXDKMRT5OT
2QO0YXTYQOHJG2H+PBRBBMO+0ID68LIPWWRMJ8H2KVL552X+7KD+LKDGMNCU8PGCUY3BB3HTYFHG
JECB9FFS2QLZWRUKKRIXTR8N2N/M0X3WYTYXJIWX9SKJS/CLHBSRJIZJYPYFCJB+QRJ0IUXMC7WS
HK5Z2DQ7XUBXLM4KMJQBBBRTWDN0RURSMEM33NO02FTRQZD3OVRD6GT8ZJO5LKNMZBBI6HKGNNRR
C6X/BE+XZV7URT+7T9M9PEO9KR387KEWJE/NCN2GWH2K2NVCB7SQQV6G+OQGX0I3SLGW0IEUXYKL
IXGERJJJ2QNBOXMU6SCUYNK0E30KSI3EVVMXNZCD0Z6BETLQULQBREKDW8IHG3DYQP5G0VZRK5BE
YJYCNQFNP0U2MCWMKIXBFTCPG7BX7E2GMBBBPDSYLCUVLFIXIJJ/YKFIR3H7NCYL2HBJYQ6JBNBZ
7GPIOV6GJ0QM3H+2BTF09PRGWRJ5INCMG+NTPYBUQBK7KZOXK7SVWNPHY2KDTEWKRJBLHNRMQN54
ETLU++2F5OZSG5IYDKD+QEBJU2KKIOVKMOQL6D7NRLB62KK+KKM82MQQBRG7TKZ4Q5EWDVFQGG5J
DOEEEOPQD2PQC28XQLHVDZDPG6YL5FXOF9MJP54RX07TBXTYJHBR4Z95ICS32NRCJGDUJONH4WFM
XKZLJRLB52NNQD5RKHUGBJBX07VPKKKRM2NBTVMBESBTRNHIOZHBVGE4RO0ZQRFS52LT5PZVGGV2
BU/PSCE2PDHSPQULLSUV+EO0/WD57XX/BH0V/WBTR/WH2N/89RR/BL6X/WCJRL6TBX+QQ7S3JLEK
B3MEQCSMJBVHNNYCVHCWDY0CS8YJ+6CCB9MIRNSJPC0QUI2NY7P/H+W09XJHG0KO6PICKFTTTR3R
LB92CK9LEUSRBCBSMCHPPR7KPLYGQEVHLLD3BQXSBHUYXJGECHSFUELYBEDRIVLZ5WVPKFZXROLG
BUXVBEBJUB+NBZB6ZEUTO8FVVOXYZFU2DNOTTNQQBIZYIZCCFBG3J8KFS2ZLSU6MEVR7FQ+SOB+2
E3NBKN3HUH2FUYNBTBEWNS45ZXHOQWBCN34CUSPPU4SPRLLMZZ0ZTYNLT2HTY5VM3EUQST+BQTUL
GHUBRRBFCEYG5XQCPSNYLL5RQMUTK6FL+WLB+Y/7PM05H37WSW3D2HHSQN/CHBF/BM9RR/VPF/IB
ZDCL3MNHOPDSUBDOFRPZSMGSZJKHRT7B8E2BVP8B4Q7T/WDNTDF99L/8TQ6EWKGEGG0LDGPB+NG5
866/76X/BOJROBUNTUNJSNRJTVBQUX0IWKVPTBWYGFOD2T29CDKTTWX3ELWZKHJCYZT3FUORV7DS
LTIRPLCYRLWZYWV2TWPLKZTLB5BCN26VQXVVFD28KEY7O3GCKMNOMVZEWOXHFXXU5+LWDBJCB5LL
5IGC+XTWT7E//WRPBOCHQBFBXILTPQBQNFUR6NNXPG2CS5MKNY0UROFL2ZX9DMT+ZTIRK2JT4BIN
BGZ6N3NEKSG2Z2CVJP4IEYNWT+JJBX4YJ2C6NZDP5MJ/BHWVYD7+2X9G0IHSLDO42LU5Y7KYZ6CE
LEBSU+YDXHYQYDUBFP0G62O0ORXIGCXYX/CCDP4EVV0XW2FPLX9PKM86UBHFLWF/+VQ6SC+YIY+U
MO6FVN5M2B6ZHV7V7ECEO3CDQFUVH2NHCCG5WSB4BZFORHSXN680TPKCK2EPUOKPJSOIDFKRKDQY
SMEHORWPB4Y06C7E6RI207LRMYOP8/ZNVKMPNNL2KUZTN9DXLJSBNO5FDOWWYNORVBX0YZ08SBSB
RLUPYSFZNNXTDY3CLKPPDFYIQKCO5PO7EJPZNVI26SXWBQ3YTBSUYR/BOM/8/WBB/WB9INWBLZXM
OIGUOPHPRVBJNQQKXOMQQ0G7JJZFWOUVSXUIXPNHL7UFWRFUMNSWPJ7FC3TQT0LYZXIC/WDLPDZ6
9KC9ZBLWLU0QCZXLUJ5I/WBIJMQUEPCGUYFUVT2LQTMNYOTYR/KGPQE0XPP7EM2ZBB8BSYOJSNBG
Y4LH2/MVNRDBMM7ECXDVJCPBPPG0YFEQNYKNOTT2BST2CQC2QWMERRS3CSOVVWBBFDKO7ILOMDZM
RNW05ZHB63Z7YBVC60LJS2YRNGXWSGUR62SWDCZXXZ6BJYFWPTRQVNENTTRMORV7OPP5UC8B2VQL
2KOBLVQTTTR28TSZOQRR2ZJGCKT7MG6J8Y3LSVM4YPYM07Q9H8YVY9R0SSCMBSSUERRKSXWBTBE4
HUO/MT5VKTONYNIZRDXSPMV7DRLM6T7RB2XMKSK4BY4YBLBBBIOQEHFF2EWCYBSBIUEKGBCKMQD6
3PIPSB9HZ7HI/MUPSUD2TOPGHXMUXSXZRISKRZEPRLOQBYLU3N0BYTJ54GTHN5VXPTUH8Y0D9YBO
RE5GUKL28QSQDTJU5GBLRYD2EWXFZBBX+ZCSPEHOMSCDNPR2KRXRGYSMGJORRDXSHMR2HUUXHRQB
UUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBY03IBWHVZBN5NYTSBTB2G/NMTG9U4RG0K
UZS7IXK46NSBWBQRD/IXJWJJNROYUM+K4RY9S3LTJD5H2O2/DZ2B4RX2O+TTRGS5DS23GKD94NOK
UKQLFY7EWRQUHK2XZFV4XUFTBNXBEYSEQGIYD25RRZIGIMPYBBU7D7UQVVZTUGHQURDPC5GBXNN9
PPK20FKB8BIDXH27V2NHER39LFCXZCYDOD2PQJ86KDXNBR7ENWCW0IZTV39TB2FXUBO8E2TYVKMZ
W7OTJPCCTTRNWJ2B2MIP5CIHDPNOPCE2EBVNPLFWWDPYDVR69FMQ69RQ6QQISFMTYDIUNBB9TVFQ
VEG2O4+ZTXLHKQSPU8NJQKHVTPLCOBCSK699D7ERQBPFPPTI9ZIPBBWQG43E9BXNW3JG4+0L9PGI
8KNNYCGB/PMLVRCKKJW62D05JI65PESIYSWCBDXB2RMR4YJN2TNOWGZJDU+BHRJ+LVUQQFI62B2D
JO57MK3TWUZHBIVDXB2QHPEVWMQTNDCSISKNWDGCJ2WBPZSKO9YPVYQSJ3NWIRNQRK8T/WDIBUVO
V/OQQJ/CZOR/BB5EJIDN07S5NMTXLT7CU0SLIQMK4GBVW2HP8MWKTOIVKB4ZBMIPJCFK7EQP09HB
U5TWUKHIC+UYT89R5CO/DBP622CVXHLBPCHSRSGFJ7DGBMLPKRNQDPZTONSS8/IKZVPM/WCLSU6G
9LGQP5VRBH/YOWNF9CJ/BOZVEFH+BMOXCBVUHBV/BJHBY/69Z/J66CTOBV2OQLVL2/YOF8R/8HBR
F+VJ/WBMSTM8UUTLSW4F7SBLSEVTSI7SK/62FF2LN/2SCHDHLP8FJRB5LYZMZVDW/WDRZP4IU2BD
KGUGG8GIPO6XRGHURXFK/VFRMBO2GUVFWPLCQPKOUEB2BWEKUOK2K+5DZJUKFCV6NPWKPYYVNBWW
QFOHUBSD2XJ+VVDCVJBBWS9ZPLHCG8VPCDOPZ4QGLCENYHQNOP7VYTQDLIVIP7S2FRCXE5LDZBKK
ONT/BD2QBWDDTNTHULOJBE5HG9GIG3OOCCULTTHFQJUYULD7VUR3V82OEDJZ3X5MBR49QW//BF2H
4WZRO6EYCNBNCLXHN3UZ/N+LK95XL5ECZDSMVJFQXFERNNHBBDGTUUPPMX2RET/T8QZ4N/5BX/66
T/IVX/L003RKGPW/22RZWQP7Q2HBJ7B2HH9PYNXFDN2BJSXFJXNBHYNB68DP04/CIPX373/BVN/V
W+9/WKUTNJQOR2+KJIYQKEZOV6KEN+FUVQR6PPSCQJWYGK4XLKBP5NMMOQUM2XGEZZLKWVQQ6DPM
UM6PM2S6IWKXPLLISRE3+E9YEQW3L+JR2EZJE2SIZBDUBFBH62NUI4XSXCYQWLGMORVODTPD/HQV
ILXHXNHL/UT3FZXGZ/KFTF8BXW3/BKCTB35PRFQB83NOD8N+G3V0GRB7BPUT5MKGSXHYKCF0/OP/
C9W7WCLLN/RRNZGR7Z4/QPWQYV8BEX76ERF77M73X3G3RW52HRQBUUBFFBBRQBUUBFFBBRQBUUBF
FBBRQBUUBFFBBRQBUUBC/P4UTP9RB5MZIN33TFJQEP57CTBURJDRSJBV2KHXWWHQG5FZRPJJRUYR
OKKKR7NPBX4UMTR+OE6MJKRMHUR5JJHTQOK3TWSBQWNYWXBBXWVB0IQYUUWDI+PNOG4WCX2OTT/C
D+9YEN2RXB8UGZKEW/XRTGGRRYWY/DLNMB6YXRRPOCDWW2OVNUT3OIM8J6ITYUIEBXZ4K3GDHUOT
DJPDKNO0+K2DBIG5B2JOTSPUNBTS+HZDHQXFOMYEROX2VW2EVQES9MGLJMYVJCBVJ69FETRW2PEM
LWSHNI86YGSBCHQOG/U0OUMQL+HWJX0KMFVNFE7X+RX8UBHPQTR3FRHPUXBUJXKZYMFMBQ+G/D22
BXY3L4OJ8SHYM4EKKYYCEXODJUPZDBHJOLBUK/ITY3DY08BNP72+4K2QYMEXFCPBEE797KLCBI4Q
FMCMDKEW/WBBKTJZKMJ5MVQLOBBO2EFHGBER+7ZDHHTJFCOPBSN2RM6T7PNRG78EMOLXVPC9I62D
2LRHT3NNDC2T2JGIJL28DVTFZUJEHYTLUWN85PNI2RLDOUF42UQBCLLSXKIPTUUXTUVOBBWV4N/5
BF29F/8BQHUT+FMDX+HL0ZS0/WBN6BPP2TNJE5ESJWY7Z2IRS0/RRLTPMLTO2V2XBSWJ46/0QIUO
QZM6DCCTIZIIVUPFWQWV9YSBKFOQTU4RYWLW7NPNW6WF7KBD2J//BFIS27XFQYN8T2UT0WRQBBXX
BO0CFDJJKJ3WDUMOF8JLP3/XI/8BS2VB225R9CRW080LD/8BI7WX/XUF5PXQVPDD+PVS3L6/5HP+
I/8BKLBL/WBFH/SYUNIUWSZBFTLCBPBHSLC9H0Z+P8QZL9Q3KZVHZTT5EV2DRL2P7WT2NOSRUKBR
8JHTHPTU+H32ZPODR26Q95BFUWKNQ+MFW4/CHOBLQUHMXUU/EWTTP6UTWK+VTCXRDWLQKJPZSP5B
9VMRLXTYNT8T6HHCFWQBMNHXZXRJSKKP9WMP2ELUVTSPVDDG0IWK8WJRQ0BBLJCNK++RIT2/SO+8
OYRZBGN4SXHBJPZJH4YXRGCJZRQ4U2DNH5CEG7HLJRBFYRUJGXH6EVB2K4S20+EBQGBUOM9Z2FBR
KUS/KBXKVZJ+RZCUDQEBZI4IMPDGH03BD+VTXY+X2UIBOVSJI45CP7PX/WDX+DY2SVRI5LWV+YT/
BBLDT/P3IC8UUSDONKRN/B/IP8X+NQ+GLHLXW5NCSFDJD2PVWOKTP3R+PPF2KPEPU0UB0KUT3BWS
EN2TT7PI2CET2Z9BDP8L3P3IT/TOKHF/2CHK7UX+UF8B0KS2ZPRBWN+ZLF2EOUS0/WBYZCMLLXLH
NKCR3MW0MEGOMY/MD8629SS5B23WOG7KTWDBI8FUJB46J2/STOQ6KVM6IRBU4P2DZEGJU7DXPZ2K
MOT3MCIM5DSCDG7ZPPU9N/YOT/8B9CF/KLZQ6SM76/OZXTSSBVBX6EUOPH3WRMOXP92COBOI2/Z+
MFSN+EPUH0S5LC4RJNZJ7BVOJ7S+XTCIE7U5E2/UKWKNQ7YXGO2TRDILPID0RDBCEBZ0/WBKWKW9
07XHFC38MCK3N7THGCR2GEVHOP2QU52TB0M06ISBWL7NXUV2NOHRQBUUBFFBBRQBUUBFFBBRQBUU
BFFBBRQBUUBFFBBRQBUUBNLOHCFL3KZC55NOOC42XRMZVZSY9QDYKDQCDXQUJKHGVTPWCHODS0BN
CWP/FMNW3BICYYKPWXQDH4C82TQTX3MCTQUHJCZVH3ROFSM20JGNWJUBSMVVFEVPPS/KMRYYJLLT
+H6MREMBNB6PBZBCKFTHKBGQBFVI5CORRRC+QNS2O20UESXLH5JHVUZZVPUGL69Z6NIYOT6SGZ2S
DGR7YODSKLYJDBKNYGPTQ6FYGZS4GSUERWHRCDTUDHZSZWWCHBZG0BCWKR0KXCJKW9VOBBV0HUUB
FVNTS/7Q0+W28ZY/MX82M4WQEN4UPK6BJNHMI49ZLJ0LUIO2JJ2UVUUBKBF0H/FVWBPS7+3UKLM2
BWENC5JKYDCFWSLTKN8RHGHNNE//BF95NBPNK6ZC6H527ZKC+XT6YX3Z7VB2HRNXRQXM8Z3EVT43
YXNOFXQNTV8BFCP0U2B/W5PDBZ9P2W2VFO2/ZWRS253FJNIKUNL8/WBFUPO2+SHXY9UC9E+FEHW/
O43SV263INT0WW92GO9GVWTPEJ2DBMT375HRUX9I6N/0HZV+/F8B9LUUNK7BLYIVCTK2PWUW7/SZ
E3FHMZ9PTH3KBM7+QFXJPSRPF/E7BUPZT52BI49UNN45+V52TP63UW6V3E/VP7JRRNTNJ+X6RC3K
U/7U45BHB365ZN2Z272UO3BFYUUOZP9JSROTDL+Z6TC33NBVPGNM3G3P3ZZ0OLG7XKEOCZT7F6BJ
J4XILUMJGQWPCVQ0BTH0QKSH7SZOS25FKYKFJMHXVJSE4XMPFE40ERDNC6BDVZYOCUQJKT+FMGGT
XUQVQT/JDKPYIGNI5/CS3SD7X07GLW7VB/U9JS2KXF9P0LMRIIOBBQUCYIPT8KJM02ZTGGNO/BIW
MPJUBMHH2FW4XB9DWVO7B7QWULBBUM2H2ZZN5JLM+MZJ9VPIQB8POUITPY3UB0M9N8RQPTGFUCPD
PRK/QH0LXST2VJZGISCCOGMYSNQQJ2FUDZ0OBPFEBN5MKT7LKC5I9UO9VYQ5R5O8PPOHNDLJR/TO
NRTRDDJCRYHXGG+ORMGI6PEVLWBZIIUGDJKGFXNRKM27XDMZZOTVMI7MS6BOUNLCFBPZZLM6P/LW
Q9POKMH0ZYTBUNR87PNRHPL29ONOC+2CPPJL5JJRUULFZ3LF9ZXX9PJBTD5XHXUD2IRLH0B4NFM0
5LZ/BFSM4YEX244XN2PYP8ZUODLMLZX6WNWZTKTLSK3T7SBHC46+9VTZ0TNVTBC0NLSRBLFBNFNX
VHLKLTTHYF2FXSFEKFZHVQGFGNX9CU+RLWWUUDCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBK
KBCIGDMBVW/ETEIBELMOIMIVUJ+ZQMCYRPT0RKNBXBV2MKVNWCR9TMTE0C8SNWB5MMUXGMMQSTJN
2/NXRTXTLBYRQ5RNUQGHVSR2OPWCY2YUBCOQCWYPHZQ7VTLYWB4KTBU2BUOD3I5/Z62VTXMWCSMN
TLQVZ6ZFFODJGZCLTCYCRPNZ9OU7E5NVJBYEZNBBUND9PWU80C0LSDIHHN4K5YR/BHCNOKWOQBK7
NNHYNTD+HYVIPS7ULVJPHE8KURBLDRNGEX9K2PB+NXFRFPPCI0YLWFRUCQM8KFJRCELVCNTKQ3OQ
+MRC4MBG6IRPI0UQWUZ285Z/BJ9KZVC2HCS6RFCBGWGLJZYMB8YWPZOLB+2FOD9VY7UUZS/D95B4
GN48YMIOZ7GFMBOEMFJXRUG5NW6HVVPUBI20OHUOMNTZOKCO0IFQW7EJRWH4B0S70Y4MLUJE2SU0
IHZNNR/N2PSG3NS7BOM5VIYXQ29TTNVNONT4PPLERCBV89U2ZVHRSLNS0N+0UV7WJCKCGYZZQ4NZ
UGLTBQQFQ3KK2NWOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBO
OBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBKKUPWCN2TRJCIS7YWH9+N0Q3SUK9IYZ
URPDCPDQVNCXT20NWJZJ2UF55Q2QPJ7BGBKROQ2UPWD5K8DTCJI6FEB/N7IRDCKPK6CMLJXIVJTT
SBECQTXUSSF3S3T6+LWQFJPYIZJJTJ7FW+2OZ0/B9RNEZBOMEK/GKLTRMG7HWB3KWSNUHFJSTFL2
EQKXLLVQLCXEVRC0S8IXXR2ZJUVLQNPFHJBZRJT6GZBH4GJMV7DQC4QXLFUTVUXURNR02B3CG4H8
HV6FX2PUSW45TUBX6LOKBEK4B72WTNRS723S2UEKZPVBUOSTSDMK0N2LDUSBM7SFVRKKNBBQCZV7
W/VMTZLKCHDY6IJMSDGCKMOVDLMIMUFFBGNQXIO2027NTJHK7QBSUBWM9UTWPBZPDW0U8F3JFDDP
VWCBILJXXQYHVUPOK6ETZOVBJD6DHC2PBJI5IBKK4/KNNUMW0ORJWG2JQTJHMTIZZF2U8BSY4XGK
CIPQPBFXD2CKKYWRG8RBVPPMUDQJG5KYG7WE30NRUK4XBRNVM4QCKBDNM2XZQTMBGKJVYB0YRMPQ
PO6LI7PMKYRRXBE22RLB4PTI5UBHJHZFJSNNRV2RUQKCUYBVTUI0QBJZKDW7BQEX6E9WRWDBQ2IN
QELIGYB9QDQPJY5RQBC3ELRL22/UTPTO5LSESSZ7SCPOBJ2OM2OTOVSTJBTE6X6RBVFE3PEQMBS/
B4J7Y69BLSBUK+TEUYD3LVNG4YPBI/PQPK9UORMM2HRB5SUR66S9XT45QHSRG7FCKCQ/YE/5/STW
ILBBTCEM20+HFCXEVRB887HI0GWJRNN8ZW4FCWKRJ6LGD+VRUQQGHFBUQBTB50FPCLDWSVWISQYK
GBBRG2NWID2C2TURHRTGY+V6NEBCIPSDUS3MBT2VJXJGON2NXZ9QHS7FLM8BYWWGRGNKJOMVNZTN
32RJ7RQULLZETRCJD20DXGCEKXCN3XFTVBD2C2TURHRTGYMJ6RFXUOTQXNSSUBKSRBGGTKDVW3UU
5OSUZKJOU43KFQXLYTNBS3DGLY23EL2NU3ZXNJOYUV9J2SLVYHLHR0CNTIFHP7VFPRLZK6FCSNHM
QUVRQUUBFYGH65CBLQU9TNHEQRQWBQHPBB9FES5SBKL3MBLRXLFLQB9FBGWUYVIKTUOQQTQJ6IWT
G2262G2VPHII326BKVBFMOG4PPTVNQNSU9RSY3CBHKEBCKRNOFWSIVJST5NNTRTK43W9ZQVBLLO0
LUJFZLJGSF62BPWQRBRBVNCJOQTTIFGEME32RVZXNYMZQJT5C9RVGGUUBRXEHITPZFBJRCWB9HWT
4C2IFVHCEEKBEVTXSB5ZN2PTWCPNTUE5JKBVSME5T0VOBGDFEGO7ZVFTHUGVWIZ49VXHOC8DK3QZ
HDLBFCYP0URT9ZB03W2HP+PI7FWZQUDIBCYYMCNPPBRBKQSRTG33WBBX6GINT5FYVKL7OLJCXTH8
OPPD49X9OMP2LVG3GBFXNMTYNTHYKW6VP2CBHM+OBFEX6LLHLDK8JUSCFJ35PUV3ULQY2+MW0U5Z
IKYDE3T+HSSKEWPO5ZYBMLN3OZ8V6XES6ILMGKSBN2B+QBIPHBBRU8J2FXZWEHUVKGV9YXNQBJQF
T/62OMJKQ2OFOSRT9BPFTLC3LHEBZWK8T8SI8K8DCD8F2RL8JBFER6IBMSKSKJUIJCY3Z7F2/CLK
ENVTFOENXTOYRBJ8MXPRP2/7QXXZDII9VOC5656ZRBCOB3KDNSL7S3KBU8SZWSQVNBIPU49CMVK6
L4FXSBMSF7QZWZDGG3BGZZ6+2EOC0LLSE6XNNS7GNEWY3LPLBUSFKUQSOORP0PQ20HPX88YVJGZ2
7QB+DDHESL2CVK82PSB9FBGOUJEKPZJGBZJNBHBR2762NQL4C/IHKX2OEB/3YCK3FCL082IZW8Z/
FQEHPX5H65RJPFFFVC86JDTT73M2+2HXFPYOBUDY95WOXGSFWBQE92JU7FRLC4MXSBZN3EXRYM8C
Y9KOEORPVYPB2VDSE3P5FVVTCNS9KSVKIN2CXKXCJPWMNHRK2VLV9B0SECTUJVNHL+8OWCEOZGYP
6VUQK73WYSXORO92SREMV62EWGRXR28GMOXWME0HDYE+M2TK2NWTNV4ZQBIR8MYYQ4K+2OLTORNS
DTKTOTUUNBZGL4N2M4SPYRSZO2V23MWGTGNBB/I2H642QRDBDQGB5LRVXNTKCFHRVNJTPBIVEC5O
SWYOMCBG2HWC6B6RYGNN7TJCRT68/HWR/BMP6TQMMD7DXXMLKBTHBBGEEWIIQ5YNGZ6GLSC4WLFT
Q7CUL2R/BJHG3/66RFZFXW+FEPPIFHXQBHJB/KH2/WD22/OBG2LURVTTD0O2KVLL4HU+UHOFHQKZ
NJXLJRSZ2JOM5NERUU9Y22I4745HTPDIMBVIP2784/WRS2JWBLNES7Y0CRPMRU+UHSCJN3FJVJ2D
YY2QLPX33KEVTBLNPFRKXBTJYIZKCLY+C/X06VB8I/2J5SEYR/Z+XVL+797D+F8BEOJZUR/WWRDR
2V62IB0+IIYXUZB6CPZLVJBXDJ6YWFZRY8PBK+P6BJZGPNRIJECZ6HP62CJTU+WRPSLUU+WB3E8S
W0T2O00CCLNBDBR2YB2ZEHB2B2MBTBY0VKZITIFBP4G9BVSXJUTEXNBSHVUPK6OOU2NK0PDOZRGT
T8TGBTC/JXPXOO6XO9ZE2ZEQ3SMFMRCCPP0BFOPKUFEI9B2PZJBUXOXFEUR3VJLBGZM2RYIWI2G5
6EOROU9Y222KIUPV3UU3ZROVUQR6EV8BWOQVJQTTSJOPWQKT5XOJR8RBXDW2TYT2UVLC4QUQVB4W
PHUE9UFFL6G8ELYSDZMEK/D+/TOFF2OQSK+ZLBQDWC5CYW2HO+GV7UFKTPG2/LD7OPL/PZ+DUR6T
XBZQG6NV4QVWTEPXCPWXG037RQTUNUQQBD7F242Q4K8LRFWSIP9WVIBCM5WETVNK2DW9TUBD2JNT
G4WVGFBB2Z/9BM6K3JJDQLVQSKLHQIFW7QT7FBTCQXM2+NEYQNOGCGB7CL2BDEES8Q3SMMSUXIJL
KGKG8DVT2NCLOULPJU6K6D0Y34Z2WXU7SQXGDNEQCWGNWPQ/OBTB9/YBLZ/RMB0UUBNC2JNZO8Z7
GX4J/WCQFCF9DF6CRXITWH0U3JSBDZ5C4J5CGD/2QYY5BVYIZ5KF0YS2/WCINOHHVLIQNFKR8RBS
PXBB6VQ6L4HEOJW92BQPNURHQ3IXH3VRG8VEBKOPQW5NGTOKBLVYQ6U3IKEB3UZZM20JBSG2JKEU
KUBRHRML2/2W7HTRUBBS5B3HHPYMQXTXDFUB9S4BV/HIHW3Q93C3K9JEUSKKYJVXJSCECCGS/WBJ
SF2U7ZJGCJIT/WBCFSPOXK2SPUTG5EZLDQGS65CTTP8QQQXCHTGZ9BNBYEPPWP4B2BBUYZY7ODZ4
CBXBXUB9VXINTNJYTEZLPVZUBCTNC0NSUXYWE2YWZ5B5B9T0H62YLTQOVXUE96HETUMQ6KKBJHOB
24FOROSKOXHXNNSUYDVCKJQ2ORSXNDPEGU+HBBTTWRQV3QMDYBUXZCHXB8OGM59BU0PNCQ9SKM5J
WITNF9S94G/5BD3/BLLC/ODXLB+FR+EBTSISZU4BXWVRVTDP38I6RBQXXZKC6ZRL2YNLCT5CHMSQ
QUT/BPQHP+NSLRMS39KRBPHOF3TSQBKJTWEN4VKQTT7ZBVQV3MNOEUVPPV2NENC9QMLGBNWPT8EM
FLWBBF6/Q3NXFO+YOM/DUBD6DPU2BQTKKO7MJQ2JRIO7L/R9BK2PTRYG5X58CTHCBJCMEN+ETQEB
VU3V2T/2BIMUBUH6HCFPODFMNVG8Q20DXM29CHUBJCCU4D6YWFZQZZEKOWTIZDIFOX820CGHVJQD
PSXT5UPFVHC2Z9YSBE9W0LNCZEGYWCBNPK9QV20KSD7HZGCZNPDCHBBXYXV22RBOGLGEMHBX2WE9
XIQBSTGDQTRGSKROITJNXIURLV7G/MEK2M3UGYRGJI9RMR2EZKSUHWMPQ6MU62/T7S8+YYYKODHI
FYFPUB0WCJIOJNSBS6EWQRM2L0KGQBXB6UE+0FYZ9EQZOPWRNNDW3TSLXB26N+NGPWPKBCUUFUI5
UHUS9VIBC2B4UG2OVPYSFQVBPER2UQO5TYWZPVK4WRQ5PS5EOOPFTUOPFQGUSWLX5SHOPPB24WCZ
9M9M05SUDXYNGNR9S6ZKILMICGZJPYVTSNWSTRKEO2M3SGYQVI49EBHJJPPQDNFNRE7LCSQQXPLK
WVEGWY9HVBT9TTNSDM2L3LPVBGGJ86HJJ2BZIPKL3ZCOQIWRK8S3F2TRZIDHPF3B/J2/TNRN2I2Z
2XBDZZEL6FQDXZLCW22SEC2FL3SPOCRZGU3RZ30TWBICFNCORBHGKDIX9CFRXIOYHYYZ56JKNYZE
XXI2CC82Y3MR75EHKXOUR7DK9K0VFF5FF6ZY3EBYRS7GBHG8CUKSCJD2CMNCSE7/BMYLXFBUDM0U
6BJJFUQNJTWCP62GTR4DDY9T2EMRYB5YBYCFX5CFRRKMEZ8W3GHM+FYJ9DJCEJRGMEKKSS89/MQT
XX/RRP8B3W/PVS+GZCLBM/UZ4QSS22WZVGU5NQ49NYNOP5VW8R6VFQYQG3IKWOINCZJUEG/Q0PY5
EBPCMPLL5ODYTXDLKLDSOIZLBTBQTJUCDP5DH52N6QNPWWIBYJDEBHPHZ8ZFJ6F2QKLRU++HNUTD
330PR643XXHJBB2B3YQSHCKHTUU9P5V2V/GUD2JXUX7EPIDWY9YW3GTI5OGYQW5JPBBXU/IQE22L
6XB2N0BFTJ2BWSHLNUPLYOWUUDTKTTCXR/8BYKVJ9IV/BEB2Q2H/BJFDTF8BRO3/BLNVT3FOOFXP
0/YNPUO2K8FQFRNZFGX+NFR6HQBHW9LBW5YXKMMJBY9YCJ86D+WB9DTM5BI80YVODOEXUXUZNLFM
SILGCHI4OFRXQ+CF+PC4/WCUV9BUUBC6SZUOX2ISBWP3Y6DYVDOHCIQNOOCCKD+TCH4G2TTNRIVR
B2DLNDLPGULX74PPBTB8425WBYMPG3I0O2IXDR4Y06E70RY5CDOPYOP4EMQGPLPOGGGNIVMB/FO+
EP6D+DC87BPEYOBFBW9LYV8BIJ/J30V/BK9X/IVPENQBYWUO0N9K2F2/KB/ZN8JP8R/8GFRF+UH/
BLKLBPIENN8N2RKCQJIW9HTI/MRR/N6IB3N6IJT9UENHWSGZDXDW8IDBB5UZWSD9M2GXJTJPMHBZ
ZNQYNB5WO65/LNROSLB/B8TOPJSTFT+JFI/5EMB/BK+P8K6DWQBNBTYB2LE/99GTBXXL0NBHXR0M
LWWXGR3XJGXEL7R6NCMVN2D2MV2MXVGMLUD/BKTBTL29Z+VY6WXNTQYK3LHM22NNWN/Y/F8BBP8B
9MRC27/KCXN/BFZNDFP+F9520V4H3NMEHDDTDKTZYRIOZMD9W2BEYX7KU/XNINSS7TU7DJPIO5DU
HKNPGCFJWPOPU+VDDD2ILS5FUHNC2632HSYBEJGEPYM4I4XB7FJTDW064H8N6CZOF3O/ZB3XECJP
8QJP2NM22FKXTOBS7F5GTPXIS0KGTLVKKE52XYC8Z6ZZ6VITVBZEIRR+2ZJREJMFBZ2PYJ6YQP2I
ZIR7DSP2IZJFPBQS+GNN/CRUYKZIYRLFBQF7FPS+GI/O2W/IZJFB659MSKMH2FVKQV+VEB/QZ7G2
SUUZONXKNT3Q4BQZGE4PB9Q6FWZBBCJ3EUNS3EIJCMZCYPFJINRJG67LUIW5LFCVEILD7RRBMKIZ
FBGB9CEH+LCZPGUR2MJY2JHKEDYWJ2JIJYD/XQ6KUSD/I0RY5KNN5DVDP/IN2N/RIP5PVVWP/QRZ
6P/WPPBW+ZFL4OFP9TZ8QF8BIDU/9YUB0Z/KT9R/66F/BBNXU+P5M0RFXPK/2LWG/WDIO6H9JF8B
0BUEEQP7JV8B6N/0GPHVH0IHVD0ZR8P2Z3EKBVBGMUYIVHQRUOP0QTW9RKGL2U9VCI+/EXXB6NBG
PBPWCJCNLJ+ZEJEZ5ZVS/WB2J4YT5DFQF2RIPYGJB9SEF6FRSEHXLJ0JV3GYJFJUGJQPVC04PRL+
YOJRL+ZQT/7OBTZ3UPNKV2J2KM4XJ7386ZQWLBYSYS5BKX3T54BTBVU/TRYOMKF4X0YJ37VTV6MY
KLBXU9WFNQBB6MNYEHLWW2E3CCJTJOXD0XPH49B23RZI2RXLWBBHQKIQUFZBTPKEEUYDK8PW+L3B
3CSVIXBVQ2PLH9TWXRCCGRIDKMQCBI5XU/DKDXRIYXDITWS7LTZG9+C22CKERUX7QJBQBCOVTMDG
MOSKZH2/RE2PY5VOMUKY2527GRN62F0UWTTBFLBNI+3JLEYYTTVO03ICBSVRZG6TPYBNZNBYMU5D
KWGCEVT8P6MMLPJJ5PLKLWM7CBBUONEBKN0K6IMBNYSFHU2TVVT/MOFN8WR9G3XR6U5WURX6DQU2
O2+HRYXRNC8UGYJQVYEXRL0JQINKUJJO5XKZHTG7HB/YKJQTKPDHYPQULLSBN2BX3DRJBY52SLTO
OTUDG0SHSTIYSNI8NBLDGB6UOCCLLSKVNOBN2NSIRNQQKE3GUVC3EMCQG5BDQ2PZPNJ6MTSBSX6I
KBKKBQIKMBVGBBUMLHZZSMWW0GEQ9WBMEN8BHFPROTJFQZQZ+Y9P/WCFC2/78R/HT2SLNOLIB0GM
BZKOYXGZ64FLKJ2F7OHZEPIJMXLGNPLXT2BRJHPIQSEK6FFJ5IWCICHIOWCFSHXI90DPXLUIES0T
PZVLLT4NKXGHZBSME9E9PBXJU3FVFKV6EYGBH50+VDH8KEW6BCKEMXZRJIH/HZCIOV7PSVJEP2SD
YGDWQXJGFXHRQ4P7OHCLD2H8LRBYWIGSCN4LXHGUED6CMHT7JO2JB0GKJNBPJGBNRJIK4XE6E4RE
6LNRZQXTXMOBNJEPVWGRVNXKBTVMQW2MWNRJ5KFREJ/3GVI/GPZ7W3UQOUIIPQVTZEDY/OPUYPWS
SQCUUVLQWS2GLHWGSCN4LXHGQEDHTIMTZWRWRC2TC0SCQHJBUFQU+VDH8KEXIIOXF5QRRGBT2BCY
9MELQ2+N2DRKZBE2JICJBKRJIJLQOEW07BBTHZPI0I2SCU2CSIXK562JBBWWYLBEGOJSCKIOXP5U
LFLZBORWYHSWXZXMOBNZEPVXGQBQXBRP0T70S4QWOQDUCUOMW7TCLTJJ3BLUSUC8ZJMJWRD2VXKG
OF7PSVKEX2SDYWD23YXJPRJ2PUKE6G4RBU0OLSRWYIJBBGQIMKGJB2J0HPTP7BC5ULPDHKOOQHUM
B+DHKUWCKEW2SYTZKRJBBF2JGEVOWQO9VTPUJRRVEYMRWJIWUI4X6YO5UHLHSQ22HBWHY29VHGX4
YQUM0JP9LHV2WKC7XHSRGZHOBXJHSJU4LSW4WVQIDBLBHYSCMPYXTZ64QSKKOCMRWXPGG6KGWB+F
NRS2Q2GK2RHDZ20EHKHT4Y3YYLIGBP4IKFLBCFZXBQIBOD+WBS+UBXLHSHJHBW6C2T7BD9NGII3F
E2IFZ9CVJJGKQFJEV0YYKSMG00KLYBIKRJBFB+Y9P/58LX/VYV8BHUY28CQEQKMBXCJYWOC/LSUY
RZEQEVSICLS7CGXZYROFXBYCEHH09KTSOZSRBFSMEECGMOPBICYRIRJFSPSRCKUSX2CKUDKEIOD7
ELSTWVRPIJJRBGRX0Z0BNLKJB2HKNBK2HY2TUK5NSCJZT2KCBMFXPIBO2GKMKNVDG7DBZEBJ/EU+
VDH8KEW250+ZU2DXFTFIW/IZEFZQS3TOLVNLVCKS9SEUDNLLV72EORT5RBKTV0SBRJZOLTCSUC7W
GZ+DNPPCPXT3QSVNBWQ6XW0MBYDDHUBDD39ETLBB29SGFVBFFU6+WGXP5UKKWYEORWYHYRPLGUKR
XRUCRDINRRZ2QQTCLTCSTNLIEBU/UUNJG4P6TCX2TVFC0MCESRNNCIOBPZ2YKIBW3GRKHGIJVVVK
IBB/XFHKUWCSEWQWTVBBVS8EUW773LOFZ+VRT6ZY3EVMTWKLUERFBK/X2POEWRWE6CWRNBFHYO0I
8PY0WPGNGXBX6YPKFRB2277PBFFU6+WGXP5U7IFKT7DE0+ZJZMS0GUUCGIJHIPUU3+Y9P/58LX/V
YV8BHS5I9HEZH2R//9KKZW5KC3RYZWFTCMVUZG9IBGO3IDBGB2JQCJW8L2R5CGUGL0ZVBNQKL0JH
C2VGB250IC9IZWX2ZXRPY2EKL2N2YNR5CGUGL2R5CGUXCI9OYW2LIC9GMQOVRW5JB2RPBMCGL2DP
BKFUC2LFBMNVZGLUZWO+PGPLBMRVYMOKOCBWIG9IBGO8PC9UEXBLIC9GB250CI9CYXNLRM9UDCBV
SGVSDMV0BWNHLUJVBGQKL2N2YNR5CGUGL2R5CGUXCI9OYW2LIC9GMWOVRW5JB2RPBMCGL2DPBKFU
C2LFBMNVZGLUZWO+PGPLBMRVYMOKNSBWIG9IBGO8PC9QCM9JU2V0IFSVUERGIC9JBWFNZUMGL2RL
EHRDCI9YT2JQZWN0IDW8L0LTMSB2IDBGUGO+PGOVRM9UDCB8PC9GMSB3IDBGUGOVRJMGOCBWIFIK
PJ4KPJ4KZW5KB2JQCJMGMCBVYMOKPDWVVHLWZSBVUGFNZQOVQ29UDGVUDHMGNCBWIFIKL2BHCMVU
DCBXIDBGUGOVUMVZB3VYY2VZIDUGMCBSCI9NZWRPYUJVECBBMCBWIDU5NSB4NDJDCJ4+CMVUZG9I
BGOXMSBWIG9IBGO8PC9GBWX0ZXIGL0ZSYXRLRGVJB2RLCI9MZW5NDGGGMTC0MBO+PGPZDHJLYW0K
EJZNWCTY2ZYU3FSRUKVBGUN4EKB3EEVJTEBSJSL36K4XJQ2KPBNBRBXKKB/VBSIJKCJKYKWW9SYE
CDZHWBKPQMPMBJBMESEIR83HK+Z+PVZHCECKILBFOISSTQOCFDJYRKJWFGSZNC/R39DVOSNKIV02
UQFSWDLRNM9SZM6QMJETWNTVB7RHPMXNBZMWD8GYUZP2GZWDZUKWHN33LZQ8SYU0MJB0OUFUDNBB
PUQRBLMHYONGDZLBBSB/RM07D5FUEDRHWRGRLBJUII5UC0EYFP53SV68FFT0CH6FUUDI+XXX/GEV
FKUYI42OQ8GEISJYK5JG+MBCZWKXCIYC2/B4K2LEWNNCKTCXUNHJLMU3O6XUQRRPYH+XPBJIIM0D
F0TV4HPQVHIEXYOQULYVEQDCLEKYDXFBFFN6NQRGJNKURYBDKS24QU2LPBYPUNRZUO9+X9JBLD6W
YTQ9FKLIPBFOLJBSW2H/G7/D9D24/EQLPM3VF3TBSCGBEHTTIBBHHNBRRIRBLBKPV39CDV2YSS2N
YCUSMOGYJOWFFBZ3CHJEFN6R6NPL8JNGYCIKKPVQYXJBKTGTTZWIQQ5N6RZQI8R0VT7IFR3SND29
7TOJOKKCBPVQBXPINX7FKBT7BURF6+UYRZBFGSL454MSCLM+HYIJ27N72D0+PQR4FXX6FBJ/3BCZ
2RYCYECK0YHWOKCDW6SDG6PRWJFF6R5HPIOPXMU7LGGBCBRXPIFT5H23NR+89OSSBVH69BIPPK87
2XGXFDK+CC0Q4EO7LNFBEHETYJ6TYBVY/3Q/QJ02COJC3U0NPBBLSS8IQWK7OTRITHH9WD29E2Q+
9G2IBKBHXSYE5L3KCUJNHBP4WK5WH65KDIMIHBJ6SHXZ33/O82YCX4M+LBIL7I6ROPDYOGNSBNNC
SXZFFY/R5B46SUHUM82N75ILJCULEBVO2DIRSKFETG2UUMCTUOQHJWR0JYEDGLUF6YZOJPEKNEKE
DZZJWLGHHZPZMDWFYVFHLLKLJ25YZGPEKBD3GTKGLDP2L6WUICOBLXNTN2LQQ2PTBFU5S5SQSOTN
WUUUCSSMWRONKXD3LUITBMVTK/NET+BLSFGW9WZINXBFGYDWRDLJ3FS9JLDQ4RCQUINTOBU4UUO0
BQUV2RSBSDSJP2GQB020PXYJ4DKSB6PURC2SBCOWDIJBGIGDUKIFCKRCGWCKHBEK0+79MBCYDOBB
LNWDDEW8CBOIEUBTTYJXWFXBQGFD22QOOBHQCJP7TF3QDBIL3GBORWKLTHOKQQCNXOQQE002MBXY
B+P3MDMZU+BBVHGBGBBOE3D7EZXKRDHUWTWCTSNLQ2ERILWIL3GLBXIMV0SFWUSE4LXWGWVZMZNF
YWBVSXX6SFTXJXBIMMI2NIEU+FBWGUECCBGCE8RGDIO9XEWM9U+HKPKMV2OYZFVSDRFTCGV5VRHH
Z2JBQHHKO+YLXHWKCRWOFPKDXLUPE/SS5JCUZBRQIKI5D+O/PSYITH7QTZD0WFBJEYBKPBRQBOBJ
TJWPB7UZ+4CGTC5BQKI8CKRPSB4BVYEKG6R0YZKYIJ52FMCPUXL355OTXPCIPBQ/MFEZMZXHGFUJ
NFRHY0GEWDNLN8OUP6YTLWBCNPZNC8EOT/NUYJEJ2GJO0/3EHJHMMT8OBB6HIJY7PTB+0T5B+FQK
MP7Z8JBZ7KBBPCGF83JE2YYBD/K0YOZZPD6VSOOVYYRN67ZKHVOWY8RMYWF2DKXR9C0E2THYOPU/
DRSJYBVBSSRKWSSBBZYSS23VTETS+SMKXRBB2BZZIROECFLEE00GEVPKZT4OULCJTSCFPOPUNC5M
4WWISBEMKSV/INDF42PPXHW74ERKKDR8ZJNMPKQ6/EZHEJL+VPL2DJ+QB/XSDLVBSBHWF2DHJ4N9
8BBXSMOISBPEDMW82LFSKQBBB2XP8DXETNXNHHKR3FIVYVMVSGMCFJFWBZXG8TRHL0V2EYVNBTCE
XB3RVEVBZY3HOLUQ5JRQKXWVNW5+QGHI204MYGICUIZM4WEUV02OJDCDGJMFZG7HSBQTE8CGEOYZ
ZWWKJ65DOZ878VMP4TS9G7SN/BI2UNB6ELT6BLSZYOUZWMQCGCMUK9RVS4SLM/MBQBBRZ3NDBW+L
ICVKRMIESJBYK2VW/LCEHXB2BG6NV2SNBBV96RVZNBN4OEDG5KF/EMSKQGBX5XMXCU5O28U2V3TC
EEPH8XM9+L274SIZ+22B4N0L8EFVLPBLEEMXDJYISU0SMT3VXBN3J+HLIN3ID6+DJODEWRWR24VV
TU7DIPVGFXOH5YCQ8GP4LQ02L/VBW7D/BC4GEBBKCMVUZHN0CMVHBQPLBMRVYMOKMTMGMCBVYMOK
PDWVVHLWZSBVRM9UDBOVQMFZZUZVBNQGL0HLBHZLDGLJYQOVU3VIDHLWZSBVVHLWZTEKL05HBWUG
L0YXCI9FBMNVZGLUZYBVV2LUQW5ZBUVUY29KBW5NCJ4+CMVUZG9IBGOXNCBWIG9IBGO8PC9UEXBL
IC9GB250CI9CYXNLRM9UDCBVSGVSDMV0BWNHLUJVBGQKL2N2YNR5CGUGL2R5CGUXCI9OYW2LIC9G
MWOVRW5JB2RPBMCGL2DPBKFUC2LFBMNVZGLUZWO+PGPLBMRVYMOKMTIGMCBVYMOKPDWVUHJVY2NL
DCBBL2BERIBVSW2HZ2VDIC9UZXH0XQOVRM9UDCB8PC9GMSBXMYBWIFIKL0YZIDE0IDBGUGO+PGO+
PGPLBMRVYMOKMTBGMCBVYMOKPDWVVHLWZSBVUGFNZQOVQ29UDGVUDHMGMTEGMCBSCI9QYXJLBNQG
MSBWIFIKL2JLC292CMNLCYBXMIBWIFIKL02LZGLHQM94IFSWIDBGODQYIDU5NV0KPJ4KZW5KB2JQ
CJE3IDBGB2JQCJW8L0ZPBHRLCIBVRMXHDGVEZWNVZGUKL0XLBMD0BCBXNJG0CJ4+CNN0CMVHBQP4
NOVZS3PBNHC++2FWFRCZHVB+9BZRLMWED5EK3BK6PTI24NOMTLPZ8SG/VGS+REGWJEESSV0FPBIB
7C6+/FYBCLYDJKYKIBTHOPP0GGMCKCBY3QUNJGGGBGTKSBQE4EGBFVQPWR+NRXQE52N0U3BGLYBT
P2EBJ7E9K/LUNME2F37W/WZZ9CKQOMZUBZTECT9IO0KCEUPJIZLF8NMURYVNFBSG5F7BXLSVB5KT
EBXY+NEZRKKF4Z+D6N2NJWMG2EDBEVESEFQHLNQDR7H8+HUXXJX+XFRYBU/739NYEFHWCEXNUOXF
Q2NXMKGIMNYIJLIE2XKCZRPPWSSY2X+UOM0TU28QNXJP3JPL2DKKLQSIQQR82YVPGRHM3CFVUBG4
Q/2OWQXUNTDLEO0B4COPW5NVBZVF0QSVJCLKKB9BBIIDUFESZWHUUYERY9/VTCEIURFD5EES2HWP
BU4TBY4W0H2SP8NFV3+ZSXVQTNDIOURKN62OBEGGBEKBECCBECBBIBSRRFDP5NETSQSO2PEGDIKB
IZEGYSUQYH8TH0FQ4Q2L7H6XDX5JFJ6D3MSBSQQPRJUBOEWC7JRU+9BGYSY23UX6VEW23X8E0QM5
OOJ0EQGBPWRIJ2ZIIW025ELPBTKGM2KDLNYCQQUE2DBZKJHN2M3SBU9VPLW+3T/DXH8EGOWBDTGW
OQOZSGOXOI5H0QZ22VVWLSXQEKB8G6XCCB5LIRCQQQFLC9IS3J7OW5FHGWRSLJ7UBYHXDGNNBINM
XUCNBHGIXL/BEU2EETCC2JMZVB/+5+SVGRBBEHFKJT8PBZEPISMEPC2I34JJ4ULMDF/2FVK45EQF
TJD9LB7KVEIB4K3VQRHZRLB7R2UCCHDBOERN8NF9/XHOTBR4SSZRILCBD2WZFY0LHIDJNONBSNHE
PK6XM/LEBTVLMRSXYQWSLTB82WDNUEJ7EO2J7HC7I+0OTYN9BM+5WGXPOYJTZBGU/KZBNVESILSQ
HPXO3UI42CMCHRN0KIYFSEG5J6G2M5GLBGZMFCLPFJKILBY7H0OPBM8KNBC2RCKVDJU284P0HFWF
L+WRQEHDSTZMYDGP2WL2SXRKQYCUHCDBDQFBBG+CRUNIDUF3WW6VU74CGILCB3QKOQ6DUHT0GKEZ
GFOBBTE/33JRHZR+BDKZRYU44BCRDDBQJJSTSO8BDDUF04QBB/RVU0BRQPNYBRQEJSVRF6ZXWVR/
4GLEGDM5H/4KMSZZXGMBRNGTNB8YCWY8XMFWNRFZCHRSK5TLRS2Q0EY0KBOQ0FGBJOI0GI4DRHSM
D4ZXLFQYX2F4NMWYVERBW3NDQLCHHMWGRMB/KCLLPSFNYXYJVNN5XUSJGXTNWMPIOIG8TCFVLQDT
BG2RNCBXDKGBOFBGQVVNE2HRE2BJBVVFTRYWKNPQPYBNOEUM0CCWSBVK6JLYDSZM6O56XGGL5B+P
IFIXGU40BP5CWMXFISEY0NFNE4ORLG6SG2LVXFRWOCNMEODUIQSBL8O2WSHBLN4RWQ8GIFGQSTJD
DGPSI8GXO6LT7DOSYXZB7UQBTICJCBQG07E2PGJYVIC6JWQ2SYETEKLSN4OTOOKT8LBN4QVCWRXH
SD67GOIBLHLT95ZNYRSHNT/QFOCWJXCHTMHLBQH7MBOGHYJ/CLUB+TEPHXBVQKPNTWLTJDQ2GGU2
7BB8PREZDXEG+K55V2CHN8BOFEK7UQLVCQXMR2ZBOHFKLVKPLSCP5LK8SUMITO7CGROB6LZJUBPJ
+ICOBRGMRWPIYOLLIK4GOZHTIM4VE0NEP0FQPVVOZUD2DIKSKLGMHUMKYWENVBY7HUKOVPP5NBSN
SRSECKFN9VQVYQL2B/FM4D2WR4GHB+BBO02CJKB62MZO0WKRDMBOLMTCHLYJNY64790SGSZFIQU2
7UUR/QPIHIMUFOFSCHK2BU2WTVSRRVTXY8BM4BXHBEEO2NBT2TL0BYUERP8VWFLJBVTB85QPSLVY
HCBK9PJ68O5UVFVZWN0PLDJVRKJ2GJKBTKSH++XCUTS3N7COEFLDB9PEBXB9FB2I2SOQBQXIV5M6
HT/WZSVIVBOFQ6RKNFYKIMRX8EN9BOC8T52GVZLLPVZDD/NQEDIEFEVFGEZPJ40VD4UV9+Z2VVZX
RYZ7F33PY5U/FR/0TWJZVKUB8UPFBJX7CJXQGCLG2R7W4TP/TU/7N/67RDRK998MKBILCYYD4I7D
7TWQ33HMFEFXWI4I8SF9WTZQPW50L9H+BV/RJP8KCMVUZHN0CMVHBQPLBMRVYMOKMTYGMCBVYMOK
PDWVVHLWZSBVUGFNZQOVQ29UDGVUDHMGMTCGMCBSCI9QYXJLBNQGMSBWIFIKL2JLC292CMNLCYBX
MIBWIFIKL02LZGLHQM94IFSWIDBGODQYIDU5NV0KPJ4KZW5KB2JQCJIWIDBGB2JQCJW8L0ZPBHRL
CIBVRMXHDGVEZWNVZGUKL0XLBMD0BCB3NTKKPJ4KC3RYZWFTCNICLVZNC5SWEL37V+IYHQZOW2IM
7QZGBKOHG4NXDUN0QGRI8UXTTZBTIB++SWXGJSBJNJBQ+97B2X4WYGB3XYIIFBOUPQ9I9FG5IIGG
ITBUIQYUHTBUENGQJBQUWBMNSJX6FPPBUZCJ7QC0ZNOD0XS7CBPQH6BJXL+L/FB9SF0GYWRQMXS/
OMZJG7BBIR2HGBMFVZLZKE9SBFM/CJX04E7B2S/SHUQOHBFOU58FNSPG/WNL325DZB4ROSZDYKO5
KKXJIB2DOILT+NDRFPUXOSVZRNP2VP2XRJ92ZIKJRNYCXWDKMOX8BEYJGVQPOY3HJSL5LDRVSJHJ
IV88QJBKE6SWY/HWHM6Y2GZZ8N4KJ2LH8CBXBU6LJW4TQVDKC0C3ZYKHWFKSBF/DG/DJ0L6HQB4F
PQGWMG2CM4Z2GKBJNSM2NK9SGGBUEBU5QFDGPYHELYKDYTM8XD/PK8Z5PPCNYQYMTTZJS8GFK2QO
XECKGYERPDYJCKZOV6DNWF2GVBUTBZIFDLEK2CGBOCKLBSXGPCSEWBB5YX+Z2FBWYURZLLUQQD/W
OW2GPXF42OWEFPUIZYGISBBYIK052J3ILBRMTUF2Q75Z7NYUR59WM2UFV5UW23EXWJGK/CUUF/H3
V9LHXBTE9EOQTTBZ5ILV5MWV97RFMYE967G4TE5H+CWUIN/NNWLGIMJJQ/S3BELOD9UYKMU8R5QG
DGYUEIUY5JNHL4N6+MMT6448IQMKED2VL2964YW0WUXKBR6MGN5R2UD2QWW7VSBVK7DR+CVIVEQI
/8T2U3QCIRXG6JQCI9U+X67YSQ8MFENYXBDJQBJ5UZUP7MFTZOJC+/2QXRYNHEE66V3LTKSGGCTK
HFQKNFXOEJ2BQ3IQ254KUDHMNVHREGDBDEX92M3SNRTRH0RKCLSDMBHIBYG5C5ISY3VT/QNOCD2L
CNGBOB/HP/NJWDO/MGMN77ONFRHDHSBKB54DSJXRMXT+BCOPBIL2D92TFLSPW+BU/WNWDWLKCGPL
BMRZDHJLYW0KZW5KB2JQCJIYIDBGB2JQCJW8L2R5CGUGL0ZVBNQKL0JHC2VGB250IC9IZWX2ZXRP
Y2EKL2N2YNR5CGUGL2R5CGUXCI9OYW2LIC9GMQOVRW5JB2RPBMCGL2DPBKFUC2LFBMNVZGLUZWO+
PGPLBMRVYMOKMJMGMCBVYMOKPDWVVHLWZSBVRM9UDBOVQMFZZUZVBNQGL0HLBHZLDGLJYS2CB2XK
CI9TDWJ0EXBLIC9UEXBLMQOVTMFTZSBVRJMKL0VUY29KBW5NIC9XBW5BBNNPRW5JB2RPBMCKPJ4K
ZW5KB2JQCJIXIDBGB2JQCJW8L2BYB2NTZXQGWY9QREYGL0LTYWDLQYBVVGV4DF0KL0ZVBNQGPDWV
RJEGMJIGMCBSCI9GMYBYMYBWIFIKPJ4KPJ4KZW5KB2JQCJE5IDBGB2JQCJW8L2R5CGUGL2BHZ2UK
L0NVBNRLBNRZIDIWIDBGUGOVUGFYZW50IDEGMCBSCI9SZXNVDXJJZXMGMJEGMCBSCI9NZWRPYUJV
ECBBMCBWIDG0MIB2OTVDCJ4+CMVUZG9IBGOYNIBWIG9IBGO8PC9GBWX0ZXIGL0ZSYXRLRGVJB2RL
CI9MZW5NDGGGODI4CJ4+CNN0CMVHBQP4NL2WY3LBSBTD8XW9TKUG3BFFVZRBZJQLJBJYFK5MWTIK
I6RYYOBMFVN6XD2BDBZTTQUYBERLFC8599L9W4XU7OBBUEBKZYPWPB5HJDBCHOYEYBHITWBMQWOG
KCWPDOYUZ+TD2SQEJ3KWX5MJNXZNR+JFKIBRZJUVONKWDE8NW99PVLJGRZW9EGBZOBKWI3IWTL32
7NU3H3KEZ/EQSN0NBDWL2KBFKOCCJREIM6ZX0ZGTCP0XKF5SQ+S6CB3JISKYQRQ3VCRBHWNBPX8T
6/LLWZNGFNOO/7PQV/L57533LTOMEO5ZYOBUHOIBGELJ9JDE2CXTEL9OL7USLPI0UOWQNBBW9XK5
MMYSDBGKIYL/ESQLVFPXCPWTXZVPDLBEQBX2QKU6PHJGIP9O//BZEGVJ/IPCWPTDBOIYFI7BZBP5
FTRPPEV3UZPN2JQURV+CLG2VUKRKNSJWUSYCYRTIRISFR+9GT03HI0NW0ZIQBK4JWKNZB0C5GMRX
2B2YEB28VBFB22ZNP6YDOKR3MZ3SRBKVQY5ZBFVWBBCQVFGVQODCUN3E0EEFBV7DB76ECLGZVBV9
RGLBZL/BIYJK/B7CBW6BGRJB7H/DZLIZOXZWHNNNJYEBMQTB7/BIZUX+CBF9TQ2EQIRBGGRCKB+Q
QI3GBRIJSBR4MUFJ89DQV2FHQSCIOZTM02CPQZBSSKRT2VXD2BB2BB+SNSDLXR+BH4RBFZIG9IQC
ZO/UYLCRTDUGMN4MDKL2LN4X3NZ72E3TBJ37IZJBJ2N88BP5PQB9BOKMBMWVBJLRTYNY/MBLUNVK
IE6UY423BODJO8M8IB26XY7ZC2PMISWKNHCJTM3CMIESM6/RQHEJU67XWPORD324UFS94ZWGIXEC
S7GWYDNSTBIV47KTQX89TOBYPPR95H+GVRIWRU/CBQED+29IKX3OLRZOJ204UMK+UFIXCN89UTHU
UVIZBGFJD0KMV3HXQP3GL/MLV2CKVELBHPBMIQREFNMG2PG7BBDJ5WY27SWPHQ+789UDQXGB9SIK
FBKHWG5ODVTLVXRO8U+MIBDHEJRIS6KSFUVOUWP6D8EMXTCB/KF/Q7JPRXGH4F4DVVJEPGOKZW5K
C3RYZWFTCMVUZG9IBGOYOCBWIG9IBGO8PC9UEXBLIC9GB250CI9CYXNLRM9UDCBVSGVSDMV0BWNH
CI9TDWJ0EXBLIC9UEXBLMQOVTMFTZSBVRJEKL0VUY29KBW5NIC9XBW5BBNNPRW5JB2RPBMCKPJ4K
ZW5KB2JQCJI5IDBGB2JQCJW8L2R5CGUGL0ZVBNQKL0JHC2VGB250IC9IZWX2ZXRPY2ETQM9SZBOV
U3VIDHLWZSBVVHLWZTEKL05HBWUGL0YZCI9FBMNVZGLUZYBVV2LUQW5ZBUVUY29KBW5NCJ4+CMVU
ZG9IBGOYNYBWIG9IBGO8PC9QCM9JU2V0IFSVUERGIC9JBWFNZUMGL2RLEHRDCI9GB250IDW8L0YX
IDI4IDBGUGOVRJMGMJKGMCBSCJ4+CJ4+CMVUZG9IBGOYNSBWIG9IBGO8PC9UEXBLIC9QYWDLCI9D
B250ZW50CYBYNIBWIFIKL2BHCMVUDCBXIDBGUGOVUMVZB3VYY2VZIDI3IDBGUGOVTWVKBWFCB3GG
WZBGMCB4NDIGNTK2XQO+PGPLBMRVYMOKMZIGMCBVYMOKPDWVRMLSDGVYIC9GBGF0ZURLY29KZQOV
TGVUZ3ROIDK4OQO+PGPZDHJLYW0KEJZFV02Z4KGMVFMRFMXUGWJ2DX8D8DDEBKYMZW6Z2UNM40LR
NYES49RD/VPV2WYBB7OE0YYH3LL66BWKLUT7BDT9IBEISCD7PML+588RC2IBQXB8CUYYVBTKFHWZ
GVISTDNB9HR8FPDGIZHZRX+CCTEWTT5FQ3GZH5M0WYWLDDJIJ83JLFLTOIXBF22TM0DXS2HF83JW
WS/FVWSJL6J2LIBLNOCE3B3TDBO0B3KZ3XNOS97OOMVG6Z+C7LFSRB7Y0NKFETCIQHEDUTNKHBPD
62TE5PT/8GBNEDC8RW9/56/FJQ23NDFV2+GCIWCUOGJGPIFH2ZHBZ2SMP2+X248SR5JLEB2VOG2W
2XS5MMZJBZZGWZB8OPJFKFBCDV4MBF4CZU6UWTSW6KEOGBYCJBPZP3YEWNUCVTPBRQBTVEBYGGFN
JUVF53CXVIHO2GLYNE2JL8NSUYSHHU/MC9HSIE2BGZBMHK/J6+ZXQ200YKZ/XSR8FT6HWULFXEBI
HTDB4JGH30CPO3T/ZCQPH2GNKIBOVDOXHOPIMPDSGTVFMDZVDZ2MJBMJO5ULH6S6VK/IHFIQTPFX
+C+8B9K4ELPB2PYWVBEB0SN0SSF7W/HPUOSJJHLBCBYGJ2IBSX0D893PT8N+9233Y2C8CSL6DHEM
GTKXZBBHR/FY0K68F873+9S2KOOKZ7XBNPWCWCSLKE2BFYQEJZNFMWXDKBNETW3+BDP4BN3ODMND
WEBLSNMMOTXJGT/CQS+BVBKUHBHPBTHY24N0DBJ4GI99BHQQ6JEDI6YEBQPWVYM29N9NGEOC2WPD
Q5KDFE0YQKDCBWQNYL2FXFNCW2NBPNP4BMKIEMBIUCEFZ28KWLNRSLIKD+DHGCFOGSLJOL2V/GZE
Z7QCOU/V33BQMI6TGPHCXIPB527G/QXLT5QZC4OKR+BMVM2FMLPF2CUHBLRN6PZZ9UUJBYBLZ8ML
OTXRIBZKLQYDFGOURBUKFQITBSLIYSBS0P0JIQPLSTIOSYKPBCQPNWEKQM8QQZBSECLBMKG6KRHJ
Y7LLSNUQB568N2DSFIEKJXMBE5BBWNRFKNUSNHFQ5557RFKD4RNHXZ30HL3MM2QXMJ3W9NZV45KH
+C+9BIYGY3CBIT8H+NLVOTZKYP8/RHVGVYFO02CM6RSYVF+DS+VP/M8BL/ETRWHJWH7IDSXTDZ9Y
IUOCZQQ6VERSUMW5L+SLUUOTQGW0UR0SO/ULSSS/KNH5POP+SRHDJY0SUEGQOJ7Q5ULIELW+PP8S
V32JDWW/IDCKMZZXXBZ22DH67VBXYORYFTL+K6B2YHQQTV8C23UW6WOKZW5KC3RYZWFTCMVUZG9I
BGOZNCBWIG9IBGO8PC9UEXBLIC9GB250CI9CYXNLRM9UDCBVSGVSDMV0BWNHCI9TDWJ0EXBLIC9U
EXBLMQOVTMFTZSBVRJEKL0VUY29KBW5NIC9XBW5BBNNPRW5JB2RPBMCKPJ4KZW5KB2JQCJM2IDBG
B2JQCJW8L2R5CGUGL0ZVBNQKL0JHC2VGB250IC9IZWX2ZXRPY2ETQM9SZBOVU3VIDHLWZSBVVHLW
ZTEKL05HBWUGL0YZCI9FBMNVZGLUZYBVV2LUQW5ZBUVUY29KBW5NCJ4+CMVUZG9IBGOZMYBWIG9I
BGO8PC9QCM9JU2V0IFSVUERGIC9JBWFNZUMGL2RLEHRDCI9GB250IDW8L0YXIDM0IDBGUGOVRJMG
MZUGMCBSCJ4+CJ4+CMVUZG9IBGOZMSBWIG9IBGO8PC9UEXBLIC9QYWDLCI9DB250ZW50CYBZMIBW
IFIKL2BHCMVUDCBXIDBGUGOVUMVZB3VYY2VZIDMZIDBGUGOVTWVKBWFCB3GGWZBGMCB4NDIGNTK2
XQO+PGPLBMRVYMOKMZGGMCBVYMOKPDWVRMLSDGVYIC9GBGF0ZURLY29KZQOVTGVUZ3ROIDM2MTEK
PJ4KC3RYZWFTCNICRVXNC9S4ER37V+IWTK2MEN/GHRZKTMWVPMTZI9FTU9NZG2IRKVXZLKEWC8IV
N4YEGCBNKGXLCOHLSW/D7ZXQJBZINBUNNY7PGGYKGXRFT/Y/7K+YQTBGG8H22+CEDG6/CGWIYWXG
MKG44OPIBFC/J6NFBQDMGWB9PD0TX7MSK58OJD+M3+WFQNZK/ZL4/6D4TTTBIKT5QOUCUORGP5K6
HX2EJGCXKBW7XBT85WJSVP5C30XHIVEVJ8Z7ZFJPXWRRZMDFCYMFSRIIVH/NNXET83GJU5WSZKFT
6B8X4+N0WZSGEQB/4D+UHTMYLK7+JFXNOLBM+EBBRBKCD6GRHELWHBDBDJX4EVLBYVNRIOIWJRMH
GU8/ZQWHSGUJ4BNBCHQMEOCWZD6VWKMS209RTFJSUEVBCTGEFR7XZOYBDJYGIQBI8HG7GEFBUR6D
6JPMWB3EM0VBX42N4/K+JJUZIMHQKUGIVFOVWEWJ3SKOO2KESDMDNIGF8VFF+XHBJBKBHVMK7SWC
IBLVTUVEBDMRVZ/2QBGHYHKRLQHGGEG5XKC8ZW7R7JNNFEQQKRYSNBPWKG0000RW6CK7EVJFR0PN
VQ5F75EPKYEKHCW4HDP4FKYYHJBKDMISIFWWZTM8OJ9PPS5UNMYMP0UOBULQS9FJCVNR8BXDVQUS
OI2YBJKQBCR0ZKXRTUJWHTTLOCDCIHBFX7PB0XW7VOWZWLOQWHXSKTKC6/+MTBXOXNJ22JIPYKJ0
TVMLUOBSMOPIB6VURVKUVCQHFWEW3JUPBFBU0YX3GGQX8VXBC7KTZP0Y2+NFLBNMM++RPY/BVBWW
2RJJGBEWQRJNYRPBKRIG+BG4+FW5YHNNO3KOMFG06OMQ+BKG/X0YQQSK0VWC5YRLOKBYRBXDZBLT
7+PC8POMI2TRTVK+Y8SLLZVZOVSTFQRZM0PQR0CCYX5XXOJSMH+UDR+SCB+2IVXLPLTLBQURBDO+
TKCBCGW2HQLLV9BTDJGQ0XLVTSZH9LQGIVPHVWFKDHRK5QHFQYDSYKVV0NQ62Q6+RTFPNSWBSGPR
X2EFJXEP6XSLKNZXBOY0RHIGO6EJK0DVBKFETDML5W5Z6VQWLL8/L2/V2/BN9QIGCB3QCZZBVQQ6
T6CDS0RI00GU262DTTWE8GEC422ZKGMSGISSWQIW82BDGJ8U37BRDOLHXBW6JWVJGGWNIYIUNDB8
I0EGRB45BQFYSBLIYOJIZLFZBIBEBPMZTOZB9Q/IELHBWCXMXQKDWLHFQ2JNHHBOIHBEDWQNLNGH
B2DE9MKDGSBD2TKQB4CNZLSP/FQYUL8VH9C/FIX/KF4PO6KWIJCTYDQBJPQBHHIKQYPLCEQU00PQ
KVFJGP0H3JGHOCZHGBEJIYWGVRIN7BVNVZG6Y+CF6+UZJOMPHS0QI4BCDLJBTT/V2SJI2GSHDKKG
FMOF4EVL6+V6BV9KVSPRVUBPT02LUT0/RL+VH946BZJ8FL/X2FCDZKETPZZWNCPS5PT2VCGR9Q9K
WFQ46BIJK509B2MEM5DJJBMGF7HEVS2RQCVG4NW33Q07EHH0PJTZ6HQYLDJQUDDM2BVSUPE77FP+
+C/YJ0BUUWJQOGESHHE8DFJLDKEYIOBIHE2HIC9OSMVN7VTTIWBHCPJDL4ICEIBY0UXBUCQE7YPM
LTFE+IL9BTF/6+DE9F+2FXT52DQVLDLKQPRE4JCOV4QUDVVXNBSR+D3TBEJI5L7VQ2PGDNIT3S/B
YGEXNS9HV9NJNMRPU04VKZSLHE4IQ2HRFBEP0OBJOU58BW2HR2RUKFUZWLUIGZVJ3+WIXBDR2R7+
MEOEMOBCFMRDXBS4BUH/IDX2CEOYBR2CCLKFQIKK432ZKGBF7GUPXBUYYPDCDNJSSBCLCLCWBUZ2
2OYL0D43J4KBVWXN4BYGGSUEJBIGFDDPCNFOXFG0EU7YVYGI+BVL0EM3MPWTSCK5+OVWP6NZK38B
HCPOXUC/U7QZWBNCH2YL/LPV4MCN8OF5VTT7DOTSUJBJM47T/DDIYPPL+6TNYUXVEV0ZKQ2J2FEH
D/U6ZF52DSNYZNYZH83JDHK7V7KCLXBTM2N5FUEYMMKFGLGUCNC2Q5IOW4C6TTMOSBF7EBND50ZV
H2DDNTP7OB2LJTB7BVITWOBRL7/D3RRRHBUCLBBVB5BZ6BOORLXJEZW56MLRZDNZDHL272RO8GHP
46TD5KHB9ZKZFJHSBX04EGZUW2EZPBTYCDRI8GBRI0KBFHDTKHPWTRXCCH5D074DZYVX+ER29BKW
TXS7UWVXXC2H29FJFYEPYW9/FBXJH6GQW2X2XBF78BBHU4KJBBN8TVDE45VPQ+RK6/SYQQYJEWSV
RVFZSF+KDU0I+URS2RMI+VGHGZBHQW625KBQHY62EQ8TFDW6UFHOPSH2BKNJKUDFG7W+7RRGQBBM
2RC8/UJ5USVE7JSKLRDSTUUKMQVFMPO/RE4+7JQ5ZB/EEUTUEQ/3WPHHRRWBD24BUG+EIMTY779N
I2HHNRQ6MTZNISNV0D/++DJ+T7RZIG4S+KE0F4G/WV74PST8PRZ2RSF2WPNSMKUU2OCB9HFQS87X
KQCHDCL5ROD9LTJNFYLBTETH2WSXM2BCDRPUHBSGXZCSVSC/P27YM3WK0PB6JFGKX2R2MYY8U4W+
NMFI/GY6HZ2FYWPR3F3E3CS+LJ3B6UGCD2BSHYFDVXDV7Y+WL5FI5U2D6VLS97LLKTIBJHEF37U2
69FDUTCVNK9VNHSDHBV7CMNB4RO2DGUJMEPBJON6DONV2VSG9BDF/EXOFM34+TZ6ZTO5S/DSJM7D
W4YMD0VNMPVTCCHQ0ZE7EMU0BBZ2OQMXF/JGHBHXNBEQZXLJXVHBT6EISKDSHXKOIKW4KVI+DGEJ
VPPDBHWEFUCF3/QGIIFKF0IGGM4OBL6HQEBCLF6QQBVHXVHBB68RKECLPYRQQW9BBX7BIOBEKV0H
GQRCIQOC3/CHIIFKF0IGGT5JCFWECWEJVPPDBHWEFUCFV+9BQBIV/LYBY+VBHEORPQLIQSBGNGRG
IQOCR/YISKCCR/YYK44KVTOJIIEKVTPJRDGQ+GQPGBQQ+GQPSEKO4KS9BHKO4KS9XOQJGQ/2CEIG
GQ/2GCUOCR7BIYCBCR7BY6W4KVHQJ4BEKVHQJ7HIQOCRPQISQOCRPCBKO4KV9GHIOIKV9HGRBYOM
X+0REE8FBFFUMFYCFXY2R0BCFXY2X2HXVPDVHGEJVPDVHMPFUCFXEWQKUMFXE4WVRWVF7RGQQBVF
7TFWHBV8TUDBBHV8TCDYCVTW2R4BCVTW2R5JXVHBV3SEJFDBV3UMFUCFX+0RKEBFX+0XVHWVFLVH
QBIVFLXHWDLQOFHQJ4B4KGIIP4KX4QJGQZ0CEQJGQZ3GIQOCR/YISKCCR/YYK44KVTOJIIEKVTPJ
RDGQ+GQPGBQQ+GRFCSGQ/H2REVCDQ3YM908M8JXOQQENLB2GS3/H2GSZFNSRCR9M3MNW+GBYULM/
XHVMEM2ERBCRRNBW3729HJUQ/QOFUF92TNJSLO/V5Y46XBXUGZCZ9RFIHX7V6XI3BWSX2Z9ZGJHK
TZXCQEXKPDG2+R3LFR02IESHJOGUTK7MBO0GLEZBOQBPE0YBIUTYJZJX88HKQ5LU6/QKKEKYYZB3
P7XKYD+5P4ZJBG9E3/VJETGQHPQOX6QF2D9BICF43XYK2BEGY3U0IKYZ0FUQ6P+J2Q/K6JHFX832
OTZ4GJC+RGH2GZIL0SKQXP4UM+SPG70SS22ZOUS0KINUHGM2P9WJGWMD2EKUTCHLUSVIZNHV3PL6
R9WHPV7F++WW2E4XBRTZDGL2PLZU5JKBIUQD7CDCWOYOJS2KIFXIWHCBD4UJZBWJMDMCZLKQXJON
L83Z+SS6NSOT+E34SL2ETJXHTFTLHCWQ2TBPTWJL22DNSBVHL7FMIMW0OITM52YWNXKYL3G/G3VI
KWGOHYPW5BRECJRKYEMBGGZUBEJSLKB0UPXQXJBBYCM7XYGQ7KKVTFUVNB22U462B++WTM/2VDRU
HDI5LKNBKENNYPSZCFD2KRDPWEPKFQLIPHOIY3S0D2FBUPWP+HCH592W2KFY79+2BLLQPQM2NRNS
XMMGJDCUFSQ93L2X2++VBKOQGHL9/UKI5CSXMIS6THJC8YLWX9BMHD+XL5ZQVO7FSISP0VEEL5UC
I7UVYWJDXBVDBSEURO6QYRI2RZJVLR49PKY+RHERRMVH6JSH7CYE6RG9+7L8TNWIHVUKJZ+RUPHV
7YOUUNDTMU/TBRIV22YRQDJNBWRSGRY00UXBEZBUHC2YQGYEQUVQ+W0XBV2E288PY/T9NXZ+9BZN
HUCE2YMDE24QKW4QH2M5MDNLZ42TDGXDGEXZEBB/BUEB0T/LUMTYN43P0WJFFJ5GKQBLK0FLBEJC
DDCD+2H/QOG7T2L7/YV8X22FL5XJXR4FP2RPDG2O2LDPYFOPDB4NF9JJWDQDIQ6UJRLDZ2YEGI5J
I8NKSINHZWXLD/KURZPVYZDSG7VKBZKTPUHV6ZY2HBWQPRZEYNXZEKGBZ4BY2EPC+WMP7C3U9RPR
LPXOCBETKL3PMKN0ME4NCVZJGEYTRDFP2UGB+/IICB85IKB4VXYI2B/UGRFICOBFK892URV7G9XZ
RNBY6FI52UWLTMXFK/U427FOGBRP59EHUJMIPSS8FP2R+TKTMYNEYTTLOL/PZ+2VYIWBLBUE3I/M
JKIXEYTU5QEB/BPJXHOQ46Y2NMEGD2REHTPMUSBWWNSYURVBRVP2IIQW57HTZW4B6KQDSO2RS9DT
WXS3X2/4WP0R+KKG908NNYZPDHCXCEZ/BRXZP2OKCMVUZHN0CMVHBQPLBMRVYMOKNDBGMCBVYMOK
PDWVRMLSDGVYIC9EQ2REZWNVZGUKL2R5CGUGL2HPYMPLY3QKL0XLBMD0BCBYMDB5MWOVQML0C2BL
CKNVBXBVBMVUDCB4CI9IZWLNBHQGMTQXCI9DB2XVCLNWYWNLIC9EZXZPY2VSR0IKL05HBWUGL0LT
MQOVU3VIDHLWZSBVSW2HZ2UKL2DPZHROIDY2NWO+PGPZDHJLYW0K/9J//GBIV0FORZIC/+BBEEPG
SUYBBQEBBHYBDGBB/9SBQWBQCWWODBOQDG0OEHEQEXGOGHGWFHGXIYUDKDOZPTW5MZG3QEHCTKBE
V0U3OFBTUVDFYMDOZZ5NCXLWZHHCZWDJ/9SBQWEREHIYFRGVGHOVY0I4QMNJY2NJY2NJY2NJY2NJ
Y2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJ/8BBEQGBJQKBBWEHBBIRBQMRBF/E
BB8BBBEFBQEBBQEBBBBBBBBBBBBBBGMEBQYHCBKKC//EBLUQBBIBBWMCBBMFBQQEBBBBFQECBWBE
EQUSITFBBHNRYQCICRQYGZGHCCNCSCEVUTHWJDNICOIJCHYXGBKBJSYNKCKQNDU2NZG5OKNERUZH
SELKU2RVVLDYWVPJZGVMZ2HPBNN0DXZ3EHL6G4SFHOEIIYQSK5SVLPEYMZQIO6SLPQEOQBQYS7S2
TRE4UBRCW8TFXSFIYCRS09TV2TFY2DRH4UPK5EBN6ONQ8FLZ9PX29/J5+V/EBB8BBBMBBQEBBQEB
BQEBBBBBBBBBBGMEBQYHCBKKC//EBLURBBIBBGQEBWQHBQQEBBECDWBBBGMRBBUHMQYSQVEHYXET
IJKBCBRCKBGXWQKJM2LWFWJY0QOWJDTHJFEXGBKBJICOKSO2NJC4OTPDREVGR0HJSLNUVVZXWFLB
Y2RLZMDOBWPZDHV2D3H5EOKDHIWGH4IJIPKTLJWWL5IZMQKJPKWMP6IPQRKZTLW2T7I5USLDXMXG
X8JJYTLT2NXW29JZ2ULJ5OXM5+JP6VLZ9PX29/J5+V/BBBWDBQBCEQMRBD8B2NS2BVYPEK20CHYT
YHY9MD47NP5/TFDRWVOUM3CWPTLKUK+JOX0FVTVUDDB3UVPLFNVTZJY/TN64HPRXSYFLIDKXCWBI
X2NFKUPRVIVCCPQBLUC54C2XU73UZORSFO2UK5TB5ZZ0/WDRGUMOPSCO3KVQNKCLYOH2I72DNEDI
5J2IF9YIE4K9UOH967ZN2XD4BBHOPWPPOTLK5NQLJYLZHM+MLI/HEBQPJHBKCTGSMTNOSPBTFQXU
PNIGB83EBQEW6KZ4JOI5E2BEWQLL2ZT2I/EHUXPDMY379W3BPVBE+P0RP8HTETFP9OMHG42GTPXV
JPBH83TV2CTL7DDJPB5FTNW2WFXB2TOH8RLBO9MPLHY5/L65QQKPJQXDWCOYIL2Z0N7JLFZTSQJV
LVCUXGCNFYVHFUTQV3NF5L42BW5ULG+NFEPSU0LSE5YVSMVSZV2BB4T9MNLTV3TKUVGM9+TJ2GTW
F4XV76/T5MVFMCSBJ7QUEURX6CFNQ5S9OL0CU5KQORY3KK2NWOOBKKBCIGBOOBKKBCIGBOOBKKBC
IGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOB
KKBCIGBOOBKKBMYBX9NGUJBYXIDG4BCKGH0JRSBBBIOQEHFTGCZXSRGPGBBXQQX2QWWNLVUP2JZU
QUCTJ2WKNT7IK6HWBCQSRT0YUKSB5EOKPFY5U9SO+VRFT7FZRL9IZWOMKN0FRBBQ9PQYB7M53LYY
MMECLZX5UXQJ2YQFJ2L2FWBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQ
BUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBCVRFTRUMUK9O
0OH+XYYRYVEOC/JMUORKMPJYUYULNSLZHL6BBB2NIBNUWL8JC28LSOW5XGFL9K6DS7TTWDJJNFJS
SFMFBTUXZHM6BB6ZHQSJXPL8NB3+Y2QX7YRP6KSKO+8FBSUPFPPLJQNSJVGHW2KKY3YYKPLI9C9V
XRU7CBRBWT4HBC0CBQT7GVNQHKLDZHDU5RK7NKEKDLVZNUB5IHKMIKBXSUTTWMYWP882S+FBG4SD
NYXKLGKFEEPVRGDN34PQHJVWWP05KS2XNIRS7JUBBF7YB3HJYMCZBX0/KQXHXR7U2U3URMMXLSKQ
P6TKJT+FN026VN0HKLJ2+BODVXL2DTRB+I2KMBXYN5LMW+QRZJBRSOPNRLNBYM3HL7NR3QLB2MFU
QJIJBCEZY4/WSHWXBQSNXOB8YIIJBERZJBPUFRRJS502SE2P2KWTJZ2NLL9ONWZBBOV+Q5X+XVWX
4XH2KGKF7EZBHI2CQ5OEC/H0OBL7RNBBJT9QMTJEORU3CIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCI
GBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBK
KBCIGBOOBXP/E+MW3JHMJTG4LOUVH+FBTBKRJOLKJYMJDKSOHFRGPGTBRLTQXM2KUTQ2MX05WLXL
+8IZSUZOKSWD7B30BMTPBIMCEHB9CKFOLLY9RQRFY5FUNV8BULBTORLDSBQTGBDJJ9HUOM6ZZ6MW
W3C+YOYUCYOPWH2IQXL2E6SVPK6MHRVMOUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUB
FFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBHL6
XPOQ3OURCWZHYVL2PVX5FRX9CNJ2RQKYHGSLJSWPQLGUM+PY+M6TQSHIFRMD/WB2UYTJVZ5G7DH5
FTFDOWJUHTG44PPRSJKKDWOQLCLUJMFD+K6PZ6RJNDMRGQQX37VMPY/25RO7HGKT5Y0BBZIVDEHI
OPRLGNMKJCUYOMJZCB2MGNBCWNLLBWVI5R0DW9BTWMJQRTGQ/LBT/CCC4RDDXBKZNWSXZS5DXLBZ
W6ZO8WO2RTYMEHH/BNBPWZ4JT5KJUZ2URFJTC5/IIZK0OJ+2JPRFT/VI/GTROZWXKGTCQLTJ+E56
N6/0RO8KW00USRTRQFLIYXFHB4IX+TEOV2W5XFT/MD9XL2WK6RF4JB6KF9ZVYTJVB3R2GOV+FDFS
MM2Y6Q0JSCEXOZORPJJLSZIX2SSJBG9DJG2HEGNM2GXUJ3VMPGY4CFW25S9EPX/OIUZOBB2CCJOP
GS2RS6NDPPP08VS+YZLWPZISVWTP29YRZI8+RXI2JUDYPOTX+FEOYDRPOEOSDVSWXVUVQBHRQBUU
BFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBR
QBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBCLZBYSMJJ4MKHVFCEJ8KMPJP7CUK9MRTLESGRNQOEGJG
BKPLNNBKCOIK4M2FC/X4XTXJHHSGVUOEGBK9PEKQOUHLLDVBB0OC3UDUSXMEKHJJNJD26QRGKFHS
UHOSWJJBSMMWIGBOOBKBZKILMIVQMKK4BFBGPL4O0UOTYJXF/BVDITCX2C22CMVBZCQL94DCPQDW
CBSZOYMYV4TLYORXEV6FZ3L288RLIMMGIT2ZUP8BWLGLF89N/WC/ZPOTBOZE8RBOZLJBRBLPWVY5
+ZNO205646FWQF8BWLGLF89N/WC/ZPYQXJUEQ8I2UW7LV7C/FY7B4DPJO0GQF260KGSWVXFNZXYN
56KGQVI5HWMQKXBZKVBDTZ7L2SRYO2KC4RBWY+GFZ8OU2E9VPPHIXJGBLNYEM9KCPQLSXYQRI7MF
HRFLJP8L8SJGCNTRNTOQEO34IQV/BBLGLF8BPZ/+/ZQHWGTYHIIK2YBZ27T725S3GLZPHZGFCOGZ
UTTQ2NDXSLPC7GBPO4FSOHWEBBQXEW42OSTYKVDQTDPJD3UYXG9B2J+GFZ8FINS3FBZJEH95KOP0
OLVJF2YTRWG+VMVHIKSBYRUROWYGU5BP9BGYDZOV9CSNPK8UEBMO6OGYR9FSM2WV6DFSIKKYRI3R
XXGF6VN7WPNY3MFBW5UU06ZBVXNPS7O208XWQYYNPIGFEQLJRV2XOPGCVI0BOTB2YWX/BNILLKZZ
BWVOMNPZ+NEPKO4TMOK7LK0QQQYTSHCRQWY+WGTVE02O2VLSS5GCMKMKMSPGMDJOCKNYHNJ2ZDDR
THNBZ3CSSY4MBZSPGELQF8JRPX/PZ/8BV2BH2OIYEJPODH4L0YWVI0MCS5CJ5D2NX769GSLFZ7L9
IZB6ZYBBQRBBXQUNBEK5LONSL+32GEY2RLLVTPYMYNLFX2VP8BMUWKOW25BJ5/YKRNXLZDCVBR5E
FOZ//CUBV/Z2F/V2BUWOQ2WOMVTZ2DGMLSCD+RQI2YSDKYI24SDKXJ9WS7E+JS5ZGE8HUKNPPU4H
NWP54RBFPZ5FJJXQZGRU07+RBQRD/IYG8VBWJNOKKI/VBDJ/BBRUTLY3VYFNTPVKTPKDVQO2TGRG
TSIIV4TDKT2M3UUWFHCGC4KZZBBSBHPWQLJRV2XOBGRYIV8T6STG3DD3MBF4VP29XDDQRNBISKBD
GU0O2IZ0RMK0JUYMV/HKNK/57P8B9+ZQPFGLE485/WDV2BJ28O5H2QMB7USBF3YKQJJJOBBWPL4P
0UOTBJXF/BVDIRNUJDCUPVJT3L9HQDPQKK2SWCR2XGCPWNMUTWS7S8JTZNYTSY2GKT2OBRZXTZD9
RHL5UHBMMIT4MLMDY425LMCBVKN4Q0TX2ISRH/ECHH+NKDSMNXVK0BEJNO0VLE+I822LWROHX2H2
HBQ9ZRVJBXGTZ5SKPX2U4GFEM5XSV0G6SVFSVOY7LISUTYOCKILIFYVX0/URBUO3E2CSQHBYPFNY
SDHUBULHQPVB2CWTZPCVTQEDOM5NNSNQTTRHBW2FCQTTORGG0CY5UXQHTI83J2HXL5BYWEDCVSJY
BNBPP4U62UYRY3SE3BFG+DPWRNBX3O5LFL6J52ZCVUKDGIM7DFGTWR/WLGLF89N/BO/ZPTQRHURU
QXP/EKNIBS5HVFMFLEBFUZWXRCCZ7DP2Y2PHOGK2PVX4GMYKL3IBBIM/KRNPJ0X3/GUL8ST3FVO0
0LSSR8BSVVRNK2JCUNGVZMPZM4TBOR8OXNZHRMCQSXEJYKXPBHCN6DB63XLLNDOLW0BIBGEJQBTZ
SPN+ZZNFV2MJZ+N3JKV42KUPYPHUGVTT832HZCN77Y87F9RHT86WGB2KWXXNPY8WMLKMMBWV2BRJ
KSTZMVQ/DK02XOLVJCEL8EBJ2IBIBPYDVMZ9HM0IQHG3R/OCZ4JUJ59ZUFMZSRUVRT0B7Y+VWUG8
FXE8TPCRSMWJIZDHPBOCJ9B+DFNV2O8XTGSCRDLWK/JE4NWS3TWXWFLLEDOXZ3+N9BOEEBIEPWY4
Y2JILDB27CDOBJN+2CLTH/Z79G/MDP4NLMH0SZOCQSQREDQPPP8BH+NCBDJJFKKKTFZFOVI6G0SQ
3ZO+KXTFOEMTVONNKENF9IEJKQBN5SDPZRZIC4ULVVMIKKNWW4YHLE/2QSQ3DFYPU8T0LV5BMHSZ
5BUFV2XIWM455P4DNYPHG+V7M7MSEWSBEJKS5J2TKY5/PITJYKQIS2NBKPKTFLY6YITZQCSZXHFN
LOLYKBJBBJB6KBJP6VM/HDIKIBG7HNBJF6NFBIC/TF80K7PWTED/BFH4VR6FPVTDEVE2F+SSLBJY
LXOD0BOC8FSUBMOSTBRO46SHPLTO2+JKBK2SNJCRR3H2CMN+QSPUD0RS+0+FF7SP/FP/8KIUMM+F
UKLPC0UFE5P4GWBFC5+YQFGOXKBGBGNP9BOBKND/BLKIN99N8/5T28/N2OP0XVS5PBE9TYUSP+09
7BXRC2ZEKBCBTNYVMQ/LNH+2J2XN9BS+IEBS/ECF/GDTKIC47KCMPY/NWENK2TKZGY5HKOYZSEKB
0Q6IWJBJUCEUG9JYT+X86Z4BP7J4JNZHH52EH+HIX+MPZRWES35I3QE9N+SLHHKGO40KWKZB8BTH
KNOEFQLXCMLBZBBIROE3UG+QY+6P7XPWIQSK0LLH7FSB2F8KBKYFXULGESMP3S+GPC/WQ2GF8JBE
/WX/BNCQVHLURRHYQHMYGCL+3/E8OUGJHJLHBDJ5FOBPBQP2ROBNW9PS9UYLTKIBHYUGWQFX3/GQ
PWU02+O6VKNROUUPJ+DLQRBI4SXJKQU8B/WKHB/MPYRRB0OU8EB4Z3PO4CKWDT9DUDQ2SZ/MBIIZ
YTNDG9F/BK9BULJPGS3UB6DEJBSGCXIPBJ7YGRZ9K54QMK4PRNJBQKNCWJVUDTLKTVBVLK3YXQWY
49BZXNXTZ9ST7/U2Z8JHIPXJ5X9BITK+TOM2KU7RXMZSFDL79T0IJMOZI/3B/UDP0XXK+JINM8R3
KRQWBCNB9KBP8QVV82OIQZ5QMWBVHQN9O+GRXJGZCQ27Q+F4HTODUXHN/KWB7/EK/WDQBTUUZP+Q
2LMCX5MI8GWX3FVFXTIHJYPLT0PWK8W6FBWDRBTBQJEZOQSO68VPKNRURYRDDMTR/WBE2NL0MWNH
ZZM2JMPIR92OC4BZWT4QME+2S20YE9CN3+83TP0HP42C0LTSUPPUIO0RR62GEHNBS9FUNOLJ2YEQ
CE5HKN8R/MVO+M/+QON/BF2X+RPR/HNDIY/WJR7FLSBOP9LQG8+ZEFG79X+BQBO2BWT4TJ/SRPKB
WRJONUPM69UTQ+S0EXFQZFJBPJ8WHB2R/KCBP/FI/WDQQTXPLJFB3B6BRLUBVFBC3F8BIJ9BJBSX
DLTEKL3ZVR6BPKCBH+YIWXGS3LH8B52Y3BJ4RNPG7GGRWHB7HHKFKSKUCFBXBNKTONJXLHUDRXE6
95X/BBLKX2JB5OY9+7PT75QQ/WBJEK+FX7L7UB4BFLN5FKEZSOZY85Z26E9L4IWUWT0ZZ8OUU30Z
G5/PULL9OUQYJYE2XSZF8PYBZHLMDUCFSO2BLLC9+LB0MVHIBZIOKHMJSFUEU3JPTTU03S5UPBKU
VY8TPBLFXPESBWWKEHXG9WP4UCBFOB2LXQDMS7VVMHIKBGHKK7N8ELBKKNUBFQ2UY2KSNLOU7LRL
EZ2GXVRFXPHN5YC7IQEOZMQXIL/KBRL6R/8BOZQZQUYWT6KSGOU7J32DXXNJD6TBBCJYT5EP9PJJ
P5Y/WT2LW/PKVUIJBO/GCZCSFFP+FVGKNOTZCIRQVJORZTUP0TXYLBFMMMJQMD3DDPYJ/SOFFETZ
EIXJJUS5RCBDTXWML7JJ5NPLSM49MB2JBP9U0G6T5WZPBCW56SUDG/0//XSECP8BJZUF+UG/LWSZ
C0OS2HLMNB+RD4SNE82G20YE5OQW/WB48DP0H86I0B20NXDPP0HOYQ7QT3I5U/IP52LF7ZM87EN/
VUFZSBVI/WD5BJF9DFQBWX/YL9R/BMC/9CNB/WDL35G6/JV0NC6/49JV9XV5VW/H6XSO/TH9QBDN
B5E5C3RNOPPU2XFTJZBE2+X2KEFY3BBXW2LCRXWJEZWYBB5TDNT2ROB0PUDXUGTL2EVSXMDOCC0M
BYLWBIIWQE9BGXBB2VRBSZW9VFEZDSIBGPMVXQO6HLYYIIYCKSSSSIVFJWSKEGHBZB3BNJTVEGOQ
SSQD9CCVO0OWUDHQPXGRRRMT+H9MNUDPJBJETK4YGE/QGTFFVECIOVVGBBMBCIMIXD0DVXEVKSVG
BUKUNQ0SW2GQSXEP7WCBLOCR72BTLSCYGENTGI4X2HC+PPKEU+ZDNIBS6BPN6IBFWFTQEPLXUQDQ
CJSQFY2FP2KWWM7JBXYDHGUXYCUCKEBM6GSTVVJ0U/DLJOSIMJQGVHGGJIIQHBOWM22WJ4RVRIDK
ESSBFYE05QJJ3ZYSPXK02TJRQBBO2WCZRBQIY87WG3FNTBT3KCU90T0GBHQYPJFOOBKOBZQD6ZY/
BUG87DBSN2MB9+NRJ86MT5U2ROXLFYMY3I0XXLQXE0UMUXZ5GV9RKFU+V2NZOIHBXXUILKYYWESP
B+8UM/Z/BJVZSUBXLHDNFJQVGCD2OVY4JFGJX3W3YSW3BJGFCHETR+ZPD3922/7/BH/26CIWBLZD
XXHSK5C+9+43XJ5I8NMTUVMSLFXBCJBIHWS7TFD2TQOGRZRUS6YNH93BIJBYPSNOCNO3KVOMQLSY
7CEFRXLK+FT7QGOOYKQSM0BS/WB0N+VBVIYZ+06Q0IJLWHEPP0P+P4UR96K22CHVUHHSCUK0USYB
BYHOIH5ZPTNK/GOH5V2/IFQNH+5VQBOQBBDHKUQESZS/RYMLDWNJ9V0MJQNQJ0ZW2NCSJP78HFH8
TBRGVT0EFNV2F9Q2SEIIGYEDWNX7DB7D/PEPUPCSWTZKSHB7HYJD20JHI7IJMPQK4JNCTOH/BCNT
79ZF/QQ2QNOUBDZOQSUPRS+PBP8Q6J4NMS5+SNIYBJ2BOQF0FDVDBRZWTS073MTBDICUCW9HU0PK
KBFQIJUJCLUUHZVGYGSS+UBXH8U3ZN2JIP8BT9B645BOBK9HVUF7HPHK2TOBTDWSDBNKTTSTIOWU
FJ5JC+4ZXG2KEIRGW0+BFRCB5YSWQPU2Y6HPUVJNXNDN2ZZ2HCPDN2ZQ+I9QKTQLWFZIE5RS/WBB
BT+UP2QJZQB/B6EBBCZXYJQSQWXJYO/PPTK5UFUROE3OU/D7C+FZ5NP2EWWUFKGUYKNSW5H6Z/SP
3/5H8FUF+I6UX7KU+JCL9YKFSRT2Y0K0XUJJBYYT7PGXHYZGCV8BUVOEGF8BKWB7/EK/9BFEVY2H
EUFY2HH2G+BVUXV2T/2BPFG//HNBF9DD/KQX8BTF7T/XC2NPLSHQ7BWQ4RLZGY+GCIUNSW2O82OX
UBKDZJQ5JJXHC5459QKJFUQO46ZK+SMDXNVXVYRQPUL2BRSBGFDQMEJKDD7FPW54NUUVPDDVCR/D
KKVSENB4QU2LJS3MK5JTUT9YRBEHBE/0CKELCL2YKG7UGIJ4IP3HK+JHNFT54UINJIV9UGYJQRE9
OMVCUX3KHFU5QL3QZWV+RXS/9+L/BNCPNIRWSPECF8VLRSUF6LCZH5BFNSLTJ+YPRST7M6IPU7GS
BTLDW+XJOS4GPR6VYKLJWPGBNGBMSOH3Y/HUDN8SP2RSRJS5UU5TWNGFLGL6NBVXWUXJP4THHKGU
KBNWGCZBXVV9YR2KXOSV6I+INBTTQL5ZQWHUJEJ/BDBT2/CUJ0K/HV8BTKEFEJKFK8BJBU+W9KMM
LCO4KUOQNVCO5YNHM2SLMBCBGIYOUBD77EFZRO4RDQYZULJ+ZK6MGU+D0I6D6MLGDIM9ZOJGI4PY
EVQZFJS2CS226MSUPLJHY5YP5N8Q2ZZ7DXDK2NCRGRGM43BMHHODMQVUEUX2NFYQPOMNUCT5FRBE
IRSKYNM8QMJ+C887HMTHXF/YNVL9I/8B0M2IKLFPDZFJKDS7JFFCPZB7BX4ULDTYF7YNP+WK6BHV
LGBBTLDRBCMNC4GPR6VVBQM5JM9OSHUKPOXYOKGSEL45BFLRI6SGI/HXHP4KFRVI/WD+R3G/3K/L
WS2XN5MF7X5U8IDXBZYBRQJU7X5YBGMPB6BKCJ8EO/8BRVC8GSLFP25I5WINUY+GBPXXLVSVBCLE
3TUYLNTSVTVM2GYG8YVXJ5XHC5BHPTRQYBSLZHQF9B5TGGK646JKDD2/WRL33G9TNZL944X6BM74
IUVVPDEDYNSRKOPQ9X+DWPDD3BR6FBJJCRIW3ZVNBI+Y20KS9PFYOPTJ7XMB6GJLCQTWS4IMJKIJ
BIVGCCVYHHI2065FZ/BBIO3BS3VT9C9/PRU5ZTJFBUVXKNON3ODDBY6FBMKSX2ZZEOVPNZWFZRYR
WCIVHN6UBBVOHKXXIYBDVJIRBOBEOQOC53NBWT/KVV6REHT9NNULUM0Y4B6ZJWP52NGQ5KT7GCK7
KPPSCRPNIB/BUYKUXWWKRWPXYBTYCZGK6FWRX7DSP7IMZDQBUEXJXN9BVOO3BT9CBVBUQCM90CPF
RMPRXBM+2YUC5KUXKN2X0R0GK4ELKLZTIDRITHCCZQBE27PIWK5SBI2CBC+ITSMUTKTY8QZLUQ8B
ENV+NDROD++O6XFCSBCTLWX0JHEIJUCPNM+OZHCU6NGMOKZWNQCZ4G2+9XUPBE2LMMCLBFL6SE5J
RY8K6TPQUE0DYD0KOPNXJCDNR+VOFRUPBOGIWVOGDU0VEVN95H4R2I408RQWRBHKBZNXYB7VN+G9
EVJDRS2UPDNHLKBT2U4ZRKO2UT0CLGQCSE5TE9ZU/OB3IHUJNN0XPYCEYZBFJGDPPF8BSUOTNE2G
2UVLB5KLXPZI7ZBH9KMTULGBSFKYIRKM0K9JVBY5+ZWM2YFLEXGXC+UBXFWEKDSW7WSWRZII3ZR7
BBJ272DBO4NWNMRWLBQX2OP3N9N6FNDBN/LGYX2JOB/OSNW94GM2S6KT7IKNWCB2BMEDQODNPRVY
QWMOMK6RJUUO50NFBM4UYWJJ4MILQOJJDKEHFBMRQZMCXWFYU5BOBBNT/DKHH04RR0VRBTS9ZQKZ
SMMGRZK49KXJQJGVZCGGJCXMV77W2Z395JCYYZQ8MMHWGOBJ09QR/WDCHBF/BM9RR/VPF/IBTW8W
7ILHYN3UY+DETJPB03FL5IOD2RU659MFPVNT7KPT7NLBFNZEZGUCNK5/RWIGK7/I2JSUXDDRFPUP
D9NQF2LL2LILBGTEWGCDD0PNBLRK8JIKY6SU2T38QXG5OUEM2UORPKLBXUZDN8PWEM3X2IFPXFBV
HMEEDPFGCR97BPE2KLTKWCSDBKNMLGMOX5UKNKMYOC6MCFDDMDOFJ5K/LCXZC7HUZJHP0QT/WH2N
/WDPB6/76X/4MODCLM3HYPQYEY8MWVLDX3MUTWXJOQGZCFYQXZ6JBWEOY3SBYMWXDKMRT5OT2QO0
YXTYQOHJG2H+PBRBBMO+0ID68LIPWWRMJ8H2KVL552X+7KD+LKDGMNCU8PGCUY3BB3HTYFHGJECB
9FFS2QLZWRUKKRIXTR8N2N/M0X3WYTYXJIWX9SKJS/CLHBSRJIZJYPYFCJB+QRJ0IUXMC7WSHK5Z
2DQ7XUBXLM4KMJQBBBRTWDN0RURSMEM33NO02FTRQZD3OVRD6GT8ZJO5LKNMZBBI6HKGNNRRC6X/
BE+XZV7URT+7T9M9PEO9KR387KEWJE/NCN2GWH2K2NVCB7SQQV6G+OQGX0I3SLGW0IEUXYKLIXGE
RJJJ2QNBOXMU6SCUYNK0E30KSI3EVVMXNZCD0Z6BETLQULQBREKDW8IHG3DYQP5G0VZRK5BEYJYC
NQFNP0U2MCWMKIXBFTCPG7BX7E2GMBBBPDSYLCUVLFIXIJJ/YKFIR3H7NCYL2HBJYQ6JBNBZ7GPI
OV6GJ0QM3H+2BTF09PRGWRJ5INCMG+NTPYBUQBK7KZOXK7SVWNPHY2KDTEWKRJBLHNRMQN54ETLU
++2F5OZSG5IYDKD+QEBJU2KKIOVKMOQL6D7NRLB62KK+KKM82MQQBRG7TKZ4Q5EWDVFQGG5JDOEE
EOPQD2PQC28XQLHVDZDPG6YL5FXOF9MJP54RX07TBXTYJHBR4Z95ICS32NRCJGDUJONH4WFMXKZL
JRLB52NNQD5RKHUGBJBX07VPKKKRM2NBTVMBESBTRNHIOZHBVGE4RO0ZQRFS52LT5PZVGGV2BU/P
SCE2PDHSPQULLSUV+EO0/WD57XX/BH0V/WBTR/WH2N/89RR/BL6X/WCJRL6TBX+QQ7S3JLEKB3ME
QCSMJBVHNNYCVHCWDY0CS8YJ+6CCB9MIRNSJPC0QUI2NY7P/H+W09XJHG0KO6PICKFTTTR3RLB92
CK9LEUSRBCBSMCHPPR7KPLYGQEVHLLD3BQXSBHUYXJGECHSFUELYBEDRIVLZ5WVPKFZXROLGBUXV
BEBJUB+NBZB6ZEUTO8FVVOXYZFU2DNOTTNQQBIZYIZCCFBG3J8KFS2ZLSU6MEVR7FQ+SOB+2E3NB
KN3HUH2FUYNBTBEWNS45ZXHOQWBCN34CUSPPU4SPRLLMZZ0ZTYNLT2HTY5VM3EUQST+BQTULGHUB
RRBFCEYG5XQCPSNYLL5RQMUTK6FL+WLB+Y/7PM05H37WSW3D2HHSQN/CHBF/BM9RR/VPF/IBZDCL
3MNHOPDSUBDOFRPZSMGSZJKHRT7B8E2BVP8B4Q7T/WDNTDF99L/8TQ6EWKGEGG0LDGPB+NG5866/
76X/BOJROBUNTUNJSNRJTVBQUX0IWKVPTBWYGFOD2T29CDKTTWX3ELWZKHJCYZT3FUORV7DSLTIR
PLCYRLWZYWV2TWPLKZTLB5BCN26VQXVVFD28KEY7O3GCKMNOMVZEWOXHFXXU5+LWDBJCB5LL5IGC
+XTWT7E//WRPBOCHQBFBXILTPQBQNFUR6NNXPG2CS5MKNY0UROFL2ZX9DMT+ZTIRK2JT4BINBGZ6
N3NEKSG2Z2CVJP4IEYNWT+JJBX4YJ2C6NZDP5MJ/BHWVYD7+2X9G0IHSLDO42LU5Y7KYZ6CELEBS
U+YDXHYQYDUBFP0G62O0ORXIGCXYX/CCDP4EVV0XW2FPLX9PKM86UBHFLWF/+VQ6SC+YIY+UMO6F
VN5M2B6ZHV7V7ECEO3CDQFUVH2NHCCG5WSB4BZFORHSXN680TPKCK2EPUOKPJSOIDFKRKDQYSMEH
ORWPB4Y06C7E6RI207LRMYOP8/ZNVKMPNNL2KUZTN9DXLJSBNO5FDOWWYNORVBX0YZ08SBSBRLUP
YSFZNNXTDY3CLKPPDFYIQKCO5PO7EJPZNVI26SXWBQ3YTBSUYR/BOM/8/WBB/WB9INWBLZXMOIGU
OPHPRVBJNQQKXOMQQ0G7JJZFWOUVSXUIXPNHL7UFWRFUMNSWPJ7FC3TQT0LYZXIC/WDLPDZ69KC9
ZBLWLU0QCZXLUJ5I/WBIJMQUEPCGUYFUVT2LQTMNYOTYR/KGPQE0XPP7EM2ZBB8BSYOJSNBGY4LH
2/MVNRDBMM7ECXDVJCPBPPG0YFEQNYKNOTT2BST2CQC2QWMERRS3CSOVVWBBFDKO7ILOMDZMRNW0
5ZHB63Z7YBVC60LJS2YRNGXWSGUR62SWDCZXXZ6BJYFWPTRQVNENTTRMORV7OPP5UC8B2VQL2KOB
LVQTTTR28TSZOQRR2ZJGCKT7MG6J8Y3LSVM4YPYM07Q9H8YVY9R0SSCMBSSUERRKSXWBTBE4HUO/
MT5VKTONYNIZRDXSPMV7DRLM6T7RB2XMKSK4BY4YBLBBBIOQEHFF2EWCYBSBIUEKGBCKMQD63PIP
SB9HZ7HI/MUPSUD2TOPGHXMUXSXZRISKRZEPRLOQBYLU3N0BYTJ54GTHN5VXPTUH8Y0D9YBORE5G
UKL28QSQDTJU5GBLRYD2EWXFZBBX+ZCSPEHOMSCDNPR2KRXRGYSMGJORRDXSHMR2HUUXHRQBUUBF
FBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBY03IBWHVZBN5NYTSBTB2G/NMTG9U4RG0KUZS7
IXK46NSBWBQRD/IXJWJJNROYUM+K4RY9S3LTJD5H2O2/DZ2B4RX2O+TTRGS5DS23GKD94NOKUKQL
FY7EWRQUHK2XZFV4XUFTBNXBEYSEQGIYD25RRZIGIMPYBBU7D7UQVVZTUGHQURDPC5GBXNN9PPK2
0FKB8BIDXH27V2NHER39LFCXZCYDOD2PQJ86KDXNBR7ENWCW0IZTV39TB2FXUBO8E2TYVKMZW7OT
JPCCTTRNWJ2B2MIP5CIHDPNOPCE2EBVNPLFWWDPYDVR69FMQ69RQ6QQISFMTYDIUNBB9TVFQVEG2
O4+ZTXLHKQSPU8NJQKHVTPLCOBCSK699D7ERQBPFPPTI9ZIPBBWQG43E9BXNW3JG4+0L9PGI8KNN
YCGB/PMLVRCKKJW62D05JI65PESIYSWCBDXB2RMR4YJN2TNOWGZJDU+BHRJ+LVUQQFI62B2DJO57
MK3TWUZHBIVDXB2QHPEVWMQTNDCSISKNWDGCJ2WBPZSKO9YPVYQSJ3NWIRNQRK8T/WDIBUVOV/OQ
QJ/CZOR/BB5EJIDN07S5NMTXLT7CU0SLIQMK4GBVW2HP8MWKTOIVKB4ZBMIPJCFK7EQP09HBU5TW
UKHIC+UYT89R5CO/DBP622CVXHLBPCHSRSGFJ7DGBMLPKRNQDPZTONSS8/IKZVPM/WCLSU6G9LGQ
P5VRBH/YOWNF9CJ/BOZVEFH+BMOXCBVUHBV/BJHBY/69Z/J66CTOBV2OQLVL2/YOF8R/8HBRF+VJ
/WBMSTM8UUTLSW4F7SBLSEVTSI7SK/62FF2LN/2SCHDHLP8FJRB5LYZMZVDW/WDRZP4IU2BDKGUG
G8GIPO6XRGHURXFK/VFRMBO2GUVFWPLCQPKOUEB2BWEKUOK2K+5DZJUKFCV6NPWKPYYVNBWWQFOH
UBSD2XJ+VVDCVJBBWS9ZPLHCG8VPCDOPZ4QGLCENYHQNOP7VYTQDLIVIP7S2FRCXE5LDZBKKONT/
BD2QBWDDTNTHULOJBE5HG9GIG3OOCCULTTHFQJUYULD7VUR3V82OEDJZ3X5MBR49QW//BF2H4WZR
O6EYCNBNCLXHN3UZ/N+LK95XL5ECZDSMVJFQXFERNNHBBDGTUUPPMX2RET/T8QZ4N/5BX/66T/IV
X/L003RKGPW/22RZWQP7Q2HBJ7B2HH9PYNXFDN2BJSXFJXNBHYNB68DP04/CIPX373/BVN/VW+9/
WKUTNJQOR2+KJIYQKEZOV6KEN+FUVQR6PPSCQJWYGK4XLKBP5NMMOQUM2XGEZZLKWVQQ6DPMUM6P
M2S6IWKXPLLISRE3+E9YEQW3L+JR2EZJE2SIZBDUBFBH62NUI4XSXCYQWLGMORVODTPD/HQVILXH
XNHL/UT3FZXGZ/KFTF8BXW3/BKCTB35PRFQB83NOD8N+G3V0GRB7BPUT5MKGSXHYKCF0/OP/C9W7
WCLLN/RRNZGR7Z4/QPWQYV8BEX76ERF77M73X3G3RW52HRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBR
QBUUBFFBBRQBUUBC/P4UTP9RB5MZIN33TFJQEP57CTBURJDRSJBV2KHXWWHQG5FZRPJJRUYROKKK
R7NPBX4UMTR+OE6MJKRMHUR5JJHTQOK3TWSBQWNYWXBBXWVB0IQYUUWDI+PNOG4WCX2OTT/CD+9Y
EN2RXB8UGZKEW/XRTGGRRYWY/DLNMB6YXRRPOCDWW2OVNUT3OIM8J6ITYUIEBXZ4K3GDHUOTDJPD
KNO0+K2DBIG5B2JOTSPUNBTS+HZDHQXFOMYEROX2VW2EVQES9MGLJMYVJCBVJ69FETRW2PEMLWSH
NI86YGSBCHQOG/U0OUMQL+HWJX0KMFVNFE7X+RX8UBHPQTR3FRHPUXBUJXKZYMFMBQ+G/D22BXY3
L4OJ8SHYM4EKKYYCEXODJUPZDBHJOLBUK/ITY3DY08BNP72+4K2QYMEXFCPBEE797KLCBI4QFMCM
DKEW/WBBKTJZKMJ5MVQLOBBO2EFHGBER+7ZDHHTJFCOPBSN2RM6T7PNRG78EMOLXVPC9I62D2LRH
T3NNDC2T2JGIJL28DVTFZUJEHYTLUWN85PNI2RLDOUF42UQBCLLSXKIPTUUXTUVOBBWV4N/5BF29
F/8BQHUT+FMDX+HL0ZS0/WBN6BPP2TNJE5ESJWY7Z2IRS0/RRLTPMLTO2V2XBSWJ46/0QIUOQZM6
DCCTIZIIVUPFWQWV9YSBKFOQTU4RYWLW7NPNW6WF7KBD2J//BFIS27XFQYN8T2UT0WRQBBXXBO0C
FDJJKJ3WDUMOF8JLP3/XI/8BS2VB225R9CRW080LD/8BI7WX/XUF5PXQVPDD+PVS3L6/5HP+I/8B
KLBL/WBFH/SYUNIUWSZBFTLCBPBHSLC9H0Z+P8QZL9Q3KZVHZTT5EV2DRL2P7WT2NOSRUKBR8JHT
HPTU+H32ZPODR26Q95BFUWKNQ+MFW4/CHOBLQUHMXUU/EWTTP6UTWK+VTCXRDWLQKJPZSP5B9VMR
LXTYNT8T6HHCFWQBMNHXZXRJSKKP9WMP2ELUVTSPVDDG0IWK8WJRQ0BBLJCNK++RIT2/SO+8OYRZ
BGN4SXHBJPZJH4YXRGCJZRQ4U2DNH5CEG7HLJRBFYRUJGXH6EVB2K4S20+EBQGBUOM9Z2FBRKUS/
KBXKVZJ+RZCUDQEBZI4IMPDGH03BD+VTXY+X2UIBOVSJI45CP7PX/WDX+DY2SVRI5LWV+YT/BBLD
T/P3IC8UUSDONKRN/B/IP8X+NQ+GLHLXW5NCSFDJD2PVWOKTP3R+PPF2KPEPU0UB0KUT3BWSEN2T
T7PI2CET2Z9BDP8L3P3IT/TOKHF/2CHK7UX+UF8B0KS2ZPRBWN+ZLF2EOUS0/WBYZCMLLXLHNKCR
3MW0MEGOMY/MD8629SS5B23WOG7KTWDBI8FUJB46J2/STOQ6KVM6IRBU4P2DZEGJU7DXPZ2KMOT3
MCIM5DSCDG7ZPPU9N/YOT/8B9CF/KLZQ6SM76/OZXTSSBVBX6EUOPH3WRMOXP92COBOI2/Z+MFSN
+EPUH0S5LC4RJNZJ7BVOJ7S+XTCIE7U5E2/UKWKNQ7YXGO2TRDILPID0RDBCEBZ0/WBKWKW907XH
FC38MCK3N7THGCR2GEVHOP2QU52TB0M06ISBWL7NXUV2NOHRQBUUBFFBBRQBUUBFFBBRQBUUBFFB
BRQBUUBFFBBRQBUUBNLOHCFL3KZC55NOOC42XRMZVZSY9QDYKDQCDXQUJKHGVTPWCHODS0BNCWP/
FMNW3BICYYKPWXQDH4C82TQTX3MCTQUHJCZVH3ROFSM20JGNWJUBSMVVFEVPPS/KMRYYJLLT+H6M
REMBNB6PBZBCKFTHKBGQBFVI5CORRRC+QNS2O20UESXLH5JHVUZZVPUGL69Z6NIYOT6SGZ2SDGR7
YODSKLYJDBKNYGPTQ6FYGZS4GSUERWHRCDTUDHZSZWWCHBZG0BCWKR0KXCJKW9VOBBV0HUUBFVNT
S/7Q0+W28ZY/MX82M4WQEN4UPK6BJNHMI49ZLJ0LUIO2JJ2UVUUBKBF0H/FVWBPS7+3UKLM2BWEN
C5JKYDCFWSLTKN8RHGHNNE//BF95NBPNK6ZC6H527ZKC+XT6YX3Z7VB2HRNXRQXM8Z3EVT43YXNO
FXQNTV8BFCP0U2B/W5PDBZ9P2W2VFO2/ZWRS253FJNIKUNL8/WBFUPO2+SHXY9UC9E+FEHW/O43S
V263INT0WW92GO9GVWTPEJ2DBMT375HRUX9I6N/0HZV+/F8B9LUUNK7BLYIVCTK2PWUW7/SZE3FH
MZ9PTH3KBM7+QFXJPSRPF/E7BUPZT52BI49UNN45+V52TP63UW6V3E/VP7JRRNTNJ+X6RC3KU/7U
45BHB365ZN2Z272UO3BFYUUOZP9JSROTDL+Z6TC33NBVPGNM3G3P3ZZ0OLG7XKEOCZT7F6BJJ4XI
LUMJGQWPCVQ0BTH0QKSH7SZOS25FKYKFJMHXVJSE4XMPFE40ERDNC6BDVZYOCUQJKT+FMGGTXUQV
QT/JDKPYIGNI5/CS3SD7X07GLW7VB/U9JS2KXF9P0LMRIIOBBQUCYIPT8KJM02ZTGGNO/BIWMPJU
BMHH2FW4XB9DWVO7B7QWULBBUM2H2ZZN5JLM+MZJ9VPIQB8POUITPY3UB0M9N8RQPTGFUCPDPRK/
QH0LXST2VJZGISCCOGMYSNQQJ2FUDZ0OBPFEBN5MKT7LKC5I9UO9VYQ5R5O8PPOHNDLJR/TONRTR
DDJCRYHXGG+ORMGI6PEVLWBZIIUGDJKGFXNRKM27XDMZZOTVMI7MS6BOUNLCFBPZZLM6P/LWQ9PO
KMH0ZYTBUNR87PNRHPL29ONOC+2CPPJL5JJRUULFZ3LF9ZXX9PJBTD5XHXUD2IRLH0B4NFM05LZ/
BFSM4YEX244XN2PYP8ZUODLMLZX6WNWZTKTLSK3T7SBHC46+9VTZ0TNVTBC0NLSRBLFBNFNXVHLK
LTTHYF2FXSFEKFZHVQGFGNX9CU+RLWWUUDCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCI
GDMBVW/ETEIBELMOIMIVUJ+ZQMCYRPT0RKNBXBV2MKVNWCR9TMTE0C8SNWB5MMUXGMMQSTJN2/NX
RTXTLBYRQ5RNUQGHVSR2OPWCY2YUBCOQCWYPHZQ7VTLYWB4KTBU2BUOD3I5/Z62VTXMWCSMNTLQV
Z6ZFFODJGZCLTCYCRPNZ9OU7E5NVJBYEZNBBUND9PWU80C0LSDIHHN4K5YR/BHCNOKWOQBK7NNHY
NTD+HYVIPS7ULVJPHE8KURBLDRNGEX9K2PB+NXFRFPPCI0YLWFRUCQM8KFJRCELVCNTKQ3OQ+MRC
4MBG6IRPI0UQWUZ285Z/BJ9KZVC2HCS6RFCBGWGLJZYMB8YWPZOLB+2FOD9VY7UUZS/D95B4GN48
YMIOZ7GFMBOEMFJXRUG5NW6HVVPUBI20OHUOMNTZOKCO0IFQW7EJRWH4B0S70Y4MLUJE2SU0IHZN
NR/N2PSG3NS7BOM5VIYXQ29TTNVNONT4PPLERCBV89U2ZVHRSLNS0N+0UV7WJCKCGYZZQ4NZUGLT
BQQFQ3KK2NWOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKK
BCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBKKUPWCN2TRJCIS7YWH9+N0Q3SUK9IYZURPD
CPDQVNCXT20NWJZJ2UF55Q2QPJ7BGBKROQ2UPWD5K8DTCJI6FEB/N7IRDCKPK6CMLJXIVJTTSBEC
QTXUSSF3S3T6+LWQFJPYIZJJTJ7FW+2OZ0/B9RNEZBOMEK/GKLTRMG7HWB3KWSNUHFJSTFL2EQKX
LLVQLCXEVRC0S8IXXR2ZJUVLQNPFHJBZRJT6GZBH4GJMV7DQC4QXLFUTVUXURNR02B3CG4H8HV6F
X2PUSW45TUBX6LOKBEK4B72WTNRS723S2UEKZPVBUOSTSDMK0N2LDUSBM7SFVRKKNBBQCZV7W/VM
TZLKCHDY6IJMSDGCKMOVDLMIMUFFBGNQXIO2027NTJHK7QBSUBWM9UTWPBZPDW0U8F3JFDDPVWCB
ILJXXQYHVUPOK6ETZOVBJD6DHC2PBJI5IBKK4/KNNUMW0ORJWG2JQTJHMTIZZF2U8BSY4XGKCIPQ
PBFXD2CKKYWRG8RBVPPMUDQJG5KYG7WE30NRUK4XBRNVM4QCKBDNM2XZQTMBGKJVYB0YRMPQPO6L
I7PMKYRRXBE22RLB4PTI5UBHJHZFJSNNRV2RUQKCUYBVTUI0QBJZKDW7BQEX6E9WRWDBQ2INQELI
GYB9QDQPJY5RQBC3ELRL22/UTPTO5LSESSZ7SCPOBJ2OM2OTOVSTJBTE6X6RBVFE3PEQMBS/B4J7
Y69BLSBUK+TEUYD3LVNG4YPBI/PQPK9UORMM2HRB5SUR66S9XT45QHSRG7FCKCQ/YE/5/STWILBB
TCEM20+HFCXEVRB887HI0GWJRNN8ZW4FCWKRJ6LGD+VRUQQGHFBUQBTB50FPCLDWSVWISQYKGBBR
G2NWID2C2TURHRTGY+V6NEBCIPSDUS3MBT2VJXJGON2NXZ9QHS7FLM8BYWWGRGNKJOMVNZTN32RJ
7RQULLZETRCJD20DXGCEKXCN3XFTVBD2C2TURHRTGYMJ6RFXUOTQXNSSUBKSRBGGTKDVW3UU5OSU
ZKJOU43KFQXLYTNBS3DGLY23EL2NU3ZXNJOYUV9J2SLVYHLHR0CNTIFHP7VFPRLZK6FCSNHMQUVR
QUUBFYGH65CBLQU9TNHEQRQWBQHPBB9FES5SBKL3MBLRXLFLQB9FBGWUYVIKTUOQQTQJ6IWTG226
2G2VPHII326BKVBFMOG4PPTVNQNSU9RSY3CBHKEBCKRNOFWSIVJST5NNTRTK43W9ZQVBLLO0LUJF
ZLJGSF62BPWQRBRBVNCJOQTTIFGEME32RVZXNYMZQJT5C9RVGGUUBRXEHITPZFBJRCWB9HWT4C2I
FVHCEEKBEVTXSB5ZN2PTWCPNTUE5JKBVSME5T0VOBGDFEGO7ZVFTHUGVWIZ49VXHOC8DK3QZHDLB
FCYP0URT9ZB03W2HP+PI7FWZQUDIBCYYMCNPPBRBKQSRTG33WBBX6GINT5FYVKL7OLJCXTH8OPPD
49X9OMP2LVG3GBFXNMTYNTHYKW6VP2CBHM+OBFEX6LLHLDK8JUSCFJ35PUV3ULQY2+MW0U5ZIKYD
E3T+HSSKEWPO5ZYBMLN3OZ8V6XES6ILMGKSBN2B+QBIPHBBRU8J2FXZWEHUVKGV9YXNQBJQFT/62
OMJKQ2OFOSRT9BPFTLC3LHEBZWK8T8SI8K8DCD8F2RL8JBFER6IBMSKSKJUIJCY3Z7F2/CLKENVT
FOENXTOYRBJ8MXPRP2/7QXXZDII9VOC5656ZRBCOB3KDNSL7S3KBU8SZWSQVNBIPU49CMVK6L4FX
SBMSF7QZWZDGG3BGZZ6+2EOC0LLSE6XNNS7GNEWY3LPLBUSFKUQSOORP0PQ20HPX88YVJGZ27QB+
DDHESL2CVK82PSB9FBGOUJEKPZJGBZJNBHBR2762NQL4C/IHKX2OEB/3YCK3FCL082IZW8Z/FQEH
PX5H65RJPFFFVC86JDTT73M2+2HXFPYOBUDY95WOXGSFWBQE92JU7FRLC4MXSBZN3EXRYM8CY9KO
EORPVYPB2VDSE3P5FVVTCNS9KSVKIN2CXKXCJPWMNHRK2VLV9B0SECTUJVNHL+8OWCEOZGYP6VUQ
K73WYSXORO92SREMV62EWGRXR28GMOXWME0HDYE+M2TK2NWTNV4ZQBIR8MYYQ4K+2OLTORNSDTKT
OTUUNBZGL4N2M4SPYRSZO2V23MWGTGNBB/I2H642QRDBDQGB5LRVXNTKCFHRVNJTPBIVEC5OSWYO
MCBG2HWC6B6RYGNN7TJCRT68/HWR/BMP6TQMMD7DXXMLKBTHBBGEEWIIQ5YNGZ6GLSC4WLFTQ7CU
L2R/BJHG3/66RFZFXW+FEPPIFHXQBHJB/KH2/WD22/OBG2LURVTTD0O2KVLL4HU+UHOFHQKZNJXL
JRSZ2JOM5NERUU9Y22I4745HTPDIMBVIP2784/WRS2JWBLNES7Y0CRPMRU+UHSCJN3FJVJ2DYY2Q
LPX33KEVTBLNPFRKXBTJYIZKCLY+C/X06VB8I/2J5SEYR/Z+XVL+797D+F8BEOJZUR/WWRDR2V62
IB0+IIYXUZB6CPZLVJBXDJ6YWFZRY8PBK+P6BJZGPNRIJECZ6HP62CJTU+WRPSLUU+WB3E8SW0T2
O00CCLNBDBR2YB2ZEHB2B2MBTBY0VKZITIFBP4G9BVSXJUTEXNBSHVUPK6OOU2NK0PDOZRGTT8TG
BTC/JXPXOO6XO9ZE2ZEQ3SMFMRCCPP0BFOPKUFEI9B2PZJBUXOXFEUR3VJLBGZM2RYIWI2G56EOR
OU9Y222KIUPV3UU3ZROVUQR6EV8BWOQVJQTTSJOPWQKT5XOJR8RBXDW2TYT2UVLC4QUQVB4WPHUE
9UFFL6G8ELYSDZMEK/D+/TOFF2OQSK+ZLBQDWC5CYW2HO+GV7UFKTPG2/LD7OPL/PZ+DUR6TXBZQ
G6NV4QVWTEPXCPWXG037RQTUNUQQBD7F242Q4K8LRFWSIP9WVIBCM5WETVNK2DW9TUBD2JNTG4WV
GFBB2Z/9BM6K3JJDQLVQSKLHQIFW7QT7FBTCQXM2+NEYQNOGCGB7CL2BDEES8Q3SMMSUXIJLKGKG
8DVT2NCLOULPJU6K6D0Y34Z2WXU7SQXGDNEQCWGNWPQ/OBTB9/YBLZ/RMB0UUBNC2JNZO8Z7GX4J
/WCQFCF9DF6CRXITWH0U3JSBDZ5C4J5CGD/2QYY5BVYIZ5KF0YS2/WCINOHHVLIQNFKR8RBSPXBB
6VQ6L4HEOJW92BQPNURHQ3IXH3VRG8VEBKOPQW5NGTOKBLVYQ6U3IKEB3UZZM20JBSG2JKEUKUBR
HRML2/2W7HTRUBBS5B3HHPYMQXTXDFUB9S4BV/HIHW3Q93C3K9JEUSKKYJVXJSCECCGS/WBJSF2U
7ZJGCJIT/WBCFSPOXK2SPUTG5EZLDQGS65CTTP8QQQXCHTGZ9BNBYEPPWP4B2BBUYZY7ODZ4CBXB
XUB9VXINTNJYTEZLPVZUBCTNC0NSUXYWE2YWZ5B5B9T0H62YLTQOVXUE96HETUMQ6KKBJHOB24FO
ROSKOXHXNNSUYDVCKJQ2ORSXNDPEGU+HBBTTWRQV3QMDYBUXZCHXB8OGM59BU0PNCQ9SKM5JWITN
F9S94G/5BD3/BLLC/ODXLB+FR+EBTSISZU4BXWVRVTDP38I6RBQXXZKC6ZRL2YNLCT5CHMSQQUT/
BPQHP+NSLRMS39KRBPHOF3TSQBKJTWEN4VKQTT7ZBVQV3MNOEUVPPV2NENC9QMLGBNWPT8EMFLWB
BF6/Q3NXFO+YOM/DUBD6DPU2BQTKKO7MJQ2JRIO7L/R9BK2PTRYG5X58CTHCBJCMEN+ETQEBVU3V
2T/2BIMUBUH6HCFPODFMNVG8Q20DXM29CHUBJCCU4D6YWFZQZZEKOWTIZDIFOX820CGHVJQDPSXT
5UPFVHC2Z9YSBE9W0LNCZEGYWCBNPK9QV20KSD7HZGCZNPDCHBBXYXV22RBOGLGEMHBX2WE9XIQB
STGDQTRGSKROITJNXIURLV7G/MEK2M3UGYRGJI9RMR2EZKSUHWMPQ6MU62/T7S8+YYYKODHIFYFP
UB0WCJIOJNSBS6EWQRM2L0KGQBXB6UE+0FYZ9EQZOPWRNNDW3TSLXB26N+NGPWPKBCUUFUI5UHUS
9VIBC2B4UG2OVPYSFQVBPER2UQO5TYWZPVK4WRQ5PS5EOOPFTUOPFQGUSWLX5SHOPPB24WCZ9M9M
05SUDXYNGNR9S6ZKILMICGZJPYVTSNWSTRKEO2M3SGYQVI49EBHJJPPQDNFNRE7LCSQQXPLKWVEG
WY9HVBT9TTNSDM2L3LPVBGGJ86HJJ2BZIPKL3ZCOQIWRK8S3F2TRZIDHPF3B/J2/TNRN2I2Z2XBD
ZZEL6FQDXZLCW22SEC2FL3SPOCRZGU3RZ30TWBICFNCORBHGKDIX9CFRXIOYHYYZ56JKNYZEXXI2
CC82Y3MR75EHKXOUR7DK9K0VFF5FF6ZY3EBYRS7GBHG8CUKSCJD2CMNCSE7/BMYLXFBUDM0U6BJJ
FUQNJTWCP62GTR4DDY9T2EMRYB5YBYCFX5CFRRKMEZ8W3GHM+FYJ9DJCEJRGMEKKSS89/MQTXX/R
RP8B3W/PVS+GZCLBM/UZ4QSS22WZVGU5NQ49NYNOP5VW8R6VFQYQG3IKWOINCZJUEG/Q0PY5EBPC
MPLL5ODYTXDLKLDSOIZLBTBQTJUCDP5DH52N6QNPWWIBYJDEBHPHZ8ZFJ6F2QKLRU++HNUTD330P
R643XXHJBB2B3YQSHCKHTUU9P5V2V/GUD2JXUX7EPIDWY9YW3GTI5OGYQW5JPBBXU/IQE22L6XB2
N0BFTJ2BWSHLNUPLYOWUUDTKTTCXR/8BYKVJ9IV/BEB2Q2H/BJFDTF8BRO3/BLNVT3FOOFXP0/YN
PUO2K8FQFRNZFGX+NFR6HQBHW9LBW5YXKMMJBY9YCJ86D+WB9DTM5BI80YVODOEXUXUZNLFMSILG
CHI4OFRXQ+CF+PC4/WCUV9BUUBC6SZUOX2ISBWP3Y6DYVDOHCIQNOOCCKD+TCH4G2TTNRIVRB2DL
NDLPGULX74PPBTB8425WBYMPG3I0O2IXDR4Y06E70RY5CDOPYOP4EMQGPLPOGGGNIVMB/FO+EP6D
+DC87BPEYOBFBW9LYV8BIJ/J30V/BK9X/IVPENQBYWUO0N9K2F2/KB/ZN8JP8R/8GFRF+UH/BLKL
BPIENN8N2RKCQJIW9HTI/MRR/N6IB3N6IJT9UENHWSGZDXDW8IDBB5UZWSD9M2GXJTJPMHBZZNQY
NB5WO65/LNROSLB/B8TOPJSTFT+JFI/5EMB/BK+P8K6DWQBNBTYB2LE/99GTBXXL0NBHXR0MLWWX
GR3XJGXEL7R6NCMVN2D2MV2MXVGMLUD/BKTBTL29Z+VY6WXNTQYK3LHM22NNWN/Y/F8BBP8B9MRC
27/KCXN/BFZNDFP+F9520V4H3NMEHDDTDKTZYRIOZMD9W2BEYX7KU/XNINSS7TU7DJPIO5DUHKNP
GCFJWPOPU+VDDD2ILS5FUHNC2632HSYBEJGEPYM4I4XB7FJTDW064H8N6CZOF3O/ZB3XECJP8QJP
2NM22FKXTOBS7F5GTPXIS0KGTLVKKE52XYC8Z6ZZ6VITVBZEIRR+2ZJREJMFBZ2PYJ6YQP2IZIR7
DSP2IZJFPBQS+GNN/CRUYKZIYRLFBQF7FPS+GI/O2W/IZJFB659MSKMH2FVKQV+VEB/QZ7G2SUUZ
ONXKNT3Q4BQZGE4PB9Q6FWZBBCJ3EUNS3EIJCMZCYPFJINRJG67LUIW5LFCVEILD7RRBMKIZFBGB
9CEH+LCZPGUR2MJY2JHKEDYWJ2JIJYD/XQ6KUSD/I0RY5KNN5DVDP/IN2N/RIP5PVVWP/QRZ6P/W
PPBW+ZFL4OFP9TZ8QF8BIDU/9YUB0Z/KT9R/66F/BBNXU+P5M0RFXPK/2LWG/WDIO6H9JF8B0BUE
EQP7JV8B6N/0GPHVH0IHVD0ZR8P2Z3EKBVBGMUYIVHQRUOP0QTW9RKGL2U9VCI+/EXXB6NBGPBPW
CJCNLJ+ZEJEZ5ZVS/WB2J4YT5DFQF2RIPYGJB9SEF6FRSEHXLJ0JV3GYJFJUGJQPVC04PRL+YOJR
L+ZQT/7OBTZ3UPNKV2J2KM4XJ7386ZQWLBYSYS5BKX3T54BTBVU/TRYOMKF4X0YJ37VTV6MYKLBX
U9WFNQBB6MNYEHLWW2E3CCJTJOXD0XPH49B23RZI2RXLWBBHQKIQUFZBTPKEEUYDK8PW+L3B3CSV
IXBVQ2PLH9TWXRCCGRIDKMQCBI5XU/DKDXRIYXDITWS7LTZG9+C22CKERUX7QJBQBCOVTMDGMOSK
ZH2/RE2PY5VOMUKY2527GRN62F0UWTTBFLBNI+3JLEYYTTVO03ICBSVRZG6TPYBNZNBYMU5DKWGC
EVT8P6MMLPJJ5PLKLWM7CBBUONEBKN0K6IMBNYSFHU2TVVT/MOFN8WR9G3XR6U5WURX6DQU2O2+H
RYXRNC8UGYJQVYEXRL0JQINKUJJO5XKZHTG7HB/YKJQTKPDHYPQULLSBN2BX3DRJBY52SLTOOTUD
G0SHSTIYSNI8NBLDGB6UOCCLLSKVNOBN2NSIRNQQKE3GUVC3EMCQG5BDQ2PZPNJ6MTSBSX6IKBKK
BQIKMBVGBBUMLHZZSMWW0GEQ9WBMEN8BHFPROTJFQZQZ+Y9P/WCFC2/78R/HT2SLNOLIB0GMBZKO
YXGZ64FLKJ2F7OHZEPIJMXLGNPLXT2BRJHPIQSEK6FFJ5IWCICHIOWCFSHXI90DPXLUIES0TPZVL
LT4NKXGHZBSME9E9PBXJU3FVFKV6EYGBH50+VDH8KEW6BCKEMXZRJIH/HZCIOV7PSVJEP2SDYGDW
QXJGFXHRQ4P7OHCLD2H8LRBYWIGSCN4LXHGUED6CMHT7JO2JB0GKJNBPJGBNRJIK4XE6E4RE6LNR
ZQXTXMOBNJEPVWGRVNXKBTVMQW2MWNRJ5KFREJ/3GVI/GPZ7W3UQOUIIPQVTZEDY/OPUYPWSSQCU
UVLQWS2GLHWGSCN4LXHGQEDHTIMTZWRWRC2TC0SCQHJBUFQU+VDH8KEXIIOXF5QRRGBT2BCY9MEL
Q2+N2DRKZBE2JICJBKRJIJLQOEW07BBTHZPI0I2SCU2CSIXK562JBBWWYLBEGOJSCKIOXP5ULFLZ
BORWYHSWXZXMOBNZEPVXGQBQXBRP0T70S4QWOQDUCUOMW7TCLTJJ3BLUSUC8ZJMJWRD2VXKGOF7P
SVKEX2SDYWD23YXJPRJ2PUKE6G4RBU0OLSRWYIJBBGQIMKGJB2J0HPTP7BC5ULPDHKOOQHUMB+DH
KUWCKEW2SYTZKRJBBF2JGEVOWQO9VTPUJRRVEYMRWJIWUI4X6YO5UHLHSQ22HBWHY29VHGX4YQUM
0JP9LHV2WKC7XHSRGZHOBXJHSJU4LSW4WVQIDBLBHYSCMPYXTZ64QSKKOCMRWXPGG6KGWB+FNRS2
Q2GK2RHDZ20EHKHT4Y3YYLIGBP4IKFLBCFZXBQIBOD+WBS+UBXLHSHJHBW6C2T7BD9NGII3FE2IF
Z9CVJJGKQFJEV0YYKSMG00KLYBIKRJBFB+Y9P/58LX/VYV8BHUY28CQEQKMBXCJYWOC/LSUYRZEQ
EVSICLS7CGXZYROFXBYCEHH09KTSOZSRBFSMEECGMOPBICYRIRJFSPSRCKUSX2CKUDKEIOD7ELST
WVRPIJJRBGRX0Z0BNLKJB2HKNBK2HY2TUK5NSCJZT2KCBMFXPIBO2GKMKNVDG7DBZEBJ/EU+VDH8
KEW250+ZU2DXFTFIW/IZEFZQS3TOLVNLVCKS9SEUDNLLV72EORT5RBKTV0SBRJZOLTCSUC7WGZ+D
NPPCPXT3QSVNBWQ6XW0MBYDDHUBDD39ETLBB29SGFVBFFU6+WGXP5UKKWYEORWYHYRPLGUKRXRUC
RDINRRZ2QQTCLTCSTNLIEBU/UUNJG4P6TCX2TVFC0MCESRNNCIOBPZ2YKIBW3GRKHGIJVVVKIBB/
XFHKUWCSEWQWTVBBVS8EUW773LOFZ+VRT6ZY3EVMTWKLUERFBK/X2POEWRWE6CWRNBFHYO0I8PY0
WPGNGXBX6YPKFRB2277PBFFU6+WGXP5U7IFKT7DE0+ZJZMS0GUUCGIJHIPUU3+Y9P/58LX/VYV8B
HS5I9HEZH2R//9KKZW5KC3RYZWFTCMVUZG9IBGO0MSBWIG9IBGO8PC9UEXBLIC9GB250CI9CYXNL
RM9UDCBVSGVSDMV0BWNHCI9TDWJ0EXBLIC9UEXBLMQOVTMFTZSBVRJEKL0VUY29KBW5NIC9XBW5B
BNNPRW5JB2RPBMCKPJ4KZW5KB2JQCJQYIDBGB2JQCJW8L2R5CGUGL0ZVBNQKL0JHC2VGB250IC9I
ZWX2ZXRPY2ETQM9SZBOVU3VIDHLWZSBVVHLWZTEKL05HBWUGL0YZCI9FBMNVZGLUZYBVV2LUQW5Z
BUVUY29KBW5NCJ4+CMVUZG9IBGOZOSBWIG9IBGO8PC9QCM9JU2V0IFSVUERGIC9JBWFNZUMGL2RL
EHRDCI9YT2JQZWN0IDW8L0LTMSB0MCBWIFIKPJ4KL0ZVBNQGPDWVRJEGNDEGMCBSCI9GMYB0MIBW
IFIKPJ4KPJ4KZW5KB2JQCJM3IDBGB2JQCJW8L2R5CGUGL2BHZ2UKL0NVBNRLBNRZIDM4IDBGUGOV
UGFYZW50IDEGMCBSCI9SZXNVDXJJZXMGMZKGMCBSCI9NZWRPYUJVECBBMCBWIDU5NSB4NDJDCJ4+
CMVUZG9IBGO0NSBWIG9IBGO8PC9GBWX0ZXIGL0ZSYXRLRGVJB2RLCI9MZW5NDGGGOTY5CJ4+CNN0
CMVHBQP4NLVWS3PIRHC+8YVMSFLFMD3VYU2BLIGFKIO0ROPTOBBYDLFLUBKSD/VRT0DCBMDWLVCQ
XWBE/XV//ZXJMRH/BGJBGSMEBSZ/BBBMMBKEHJ7JBEIZBGBPY4YOJBL2HHQ78VCWJ+DJLSB/KBE3
FKWH8TJZJNEOZ5BRPI26/VH3D5OT7+IITH8CSVMCDITLPEUMWXR25IXENSDPNEEL0IYE3DUUJYQ8
B3MRTBCNW6+M8BLB9T+K+KN2KWS8DPGHPGBEUDXQQWZJJMM2+7C8LFTVZYFZUO3+P9VRUFTYCE45
Y+QS4XYYOBUHGMBGEHQ9JHE6CYZ8VFQ8TYVZZOVOFVTPNLXSBC4XO2MYKVK4KLKFR7JBPRUT8UEB
L8+0KWRJTBLBQ9OJOOOL7OEHWJ9G+RT8IQX2XBKPNYXWS/EITQDZMBFPKGMDXOCRHUFXFTB9PB6F
TJO69KVUJNRWP7/IDYVFRZVTGIUUBV9DVCTZBRYO5GQWBZRYHFEGH5I8DF4CTHXNITZHUJIQBK4J
WLVFOXYNI7CG2CWDNVFVLKIQMSWEF9BJELBJEGUT5FTBRULD/BZLWL3RTDENQTO0FENTYYXLCLO9
XKEE6NNJBTXQWS2QPB6RHMZOHDX6WSEQYKQFBW66UXVTU8FTJVDX0/B4WB/0UYW7IZVWOSIC2VB2
QBMMMRUHUGK5LID2D7ZBQ9LQS5YOHD2ZF29CC/MBZU7RVQER5OVX+4H9PK+7DIWK97E4SSCOSPVG
L/SMIKRTEM9JYQ7WX9CH2MODBK/5EK/OMWSMZWJFEXM5NGJWHJEH7BDTTE8LOSFM220T/JDVJBRY
B/ZWXBY6HG6PGOKTSNXQ3VT70/PLH2UD+QRUYXVOMDP+HH7EEGFU+ECELPSV5F5UXUBTIKBTNM9V
MGS2K+TKIXFNO0N2ERZ9TYXSZCUNTKNWBTJKMBGMNRNOBE4YBKBY7LI+4YRTFILX2E5QNGUQZYLM
2K38ZYOLITNM7HCBOHFG2PVGUF4JNWCIGGOSWDZDYQBELWT9VTIO2QSRX7D6OZXWO6GIMI8Z9CQQ
9EJD/PXXWVISIH+PB4S0SNJKPE+IEOXBTBF5G2SBSYNWBWCKPGEY/ORXYREBMV79IP3PEQZWUNN6
ZBKQNR6P6VV2V9GHHVRWB/RCBFRHP/V2YNOBM/26KW/B2DHVP7RFXMBQPNW5LB8FR53GOQXSMH5V
N5RGSCQKXRZIBY6BWTFD+UP28X5BBPHDQJDYHQTQBPCDXHUSSFBUDR6M3PNJGPBWPBXJ85UMRF/V
ZPHERQOKZW5KC3RYZWFTCMVUZG9IBGO0NYBWIG9IBGO8PC9UEXBLIC9GB250CI9CYXNLRM9UDCBV
SGVSDMV0BWNHCI9TDWJ0EXBLIC9UEXBLMQOVTMFTZSBVRJEKL0VUY29KBW5NIC9XBW5BBNNPRW5J
B2RPBMCKPJ4KZW5KB2JQCJQ4IDBGB2JQCJW8L2R5CGUGL0ZVBNQKL0JHC2VGB250IC9IZWX2ZXRP
Y2ETQM9SZBOVU3VIDHLWZSBVVHLWZTEKL05HBWUGL0YZCI9FBMNVZGLUZYBVV2LUQW5ZBUVUY29K
BW5NCJ4+CMVUZG9IBGO0NIBWIG9IBGO8PC9QCM9JU2V0IFSVUERGIC9JBWFNZUMGL2RLEHRDCI9G
B250IDW8L0YXIDQ3IDBGUGOVRJMGNDGGMCBSCJ4+CJ4+CMVUZG9IBGO0NCBWIG9IBGO8PC9UEXBL
IC9QYWDLCI9DB250ZW50CYB0NSBWIFIKL2BHCMVUDCBXIDBGUGOVUMVZB3VYY2VZIDQ2IDBGUGOV
TWVKBWFCB3GGWZBGMCB4NDIGNTK2XQO+PGPLBMRVYMOKNTEGMCBVYMOKPDWVRMLSDGVYIC9GBGF0
ZURLY29KZQOVTGVUZ3ROIDEXNDUKPJ4KC3RYZWFTCNIC3VDLC+JGEL77V+JOPIPHET6TMXBYVIIK
ISK5KMQBXVQHQGUSZPQWVZ49EKIDTHZVKVXHGMY0/XX3N/3SPLOZ30EBQGHQFB6HBQ0GCB5PWQ0E
7QKOIZBQQEPBLNVBTQ2+VY3IWZJN8Q/BIGMDORFXPEMTCFTK83CWHF3+QH+M8VKIRUJS6YLN46RF
ZONPENNR6BT3PVISZUIITH0BBNBXKBTWXQBYMKWQP2+XUZXWUP4JQH5UULETNWC+BBHNB8K0EDK0
DET77V/2SD59Q3UCX03/NO2F6U2NG/EWUSPPOQ6BGRHGVBUGQKBHMOMZQWFHQ5M+7UOYZ9PWBVRH
FTH0ZC7JO2LSVKVCVFN3IXKGWVDO8UDS2E+KLWSTLFZB98CJQYKRFLN08KOWEIXPUSBWIUBORBBJ
NK7JLMR9OMJKXL/05RRICRH/LKF38TWKQS6NCOSKXHSC/OI/XV4S2G20RXUYULR5+YILTGWWIIOF
GBEGPQ0OGEBQB59VFR2ZUGZIXCSGJJEUREKEI5RC+QBHY0BRCWG97FZBL0JQP3ZCIWGTGGJOOPSE
IXKUTEOV0BLG7BXEBHXC95O2X4B0GEGYHE4PK6GHHVQYTRS8VFPWZ8/7BWXGLDHQ7IORHPIHHXIO
9UWLD4+BTCFX583ZEVVLIDJMBBBC2RVUITJYQB2N0J722VXOS32YDCBZPCPCZJ2IREOSN4P4BTRD
L+5SV+4GKKLRP28ESDBMBREWEM4/DK/CCGLCVOKSXGWRSBLPOUZRZ/7L6KBGBJDGXD7FJ2N4ZXRI
CMLYE9G3YLO/RW+BB5V9BUGSNUB66NPX3BJXWMC+MWSV6/3HCO2QFLID+JWR6/3UUPO05K3GEBX7
SQZUEDUUH37EEGVEUSVXLBLF6T2XF+5NPNBDPXL6VVYWWBKRWJLSK2WZ5OPMP8YMTB9TICQXUGVS
RPHYYJG24CKNSQWPGNT3BIVDXOHBZVQWBZLZMCSZSMRVM7MU2HLG8C2WQS6VWK2SBZOWI9W5J4WB
SVVUDXSEC3JMQDORKJXPKOSKJ53EW2DXMNRLSKIXLRPW38ISKM6OUCWKXYGMBBEJOBOVB220TZCB
JW+03O4Z6NG2SJBLPEVGBFJQ0BWU8OBV4JZTR9CJF5CUXXKZFIGVC02JZUWVZVKMBDQFME4PCK4C
36CCSUN0CBIKQXTPHUHKSV45TKVILBRG/UIHRVHVUQB2FCQ49SGRKIHKXNDPXIRHM6PZIVHCUEYX
USFF2LUUFVF0V2RWHKLFW6BIHGRMRZIW0LXGWBRIRHJZ0CRP82KWL40SGHSKKF0PO+5FKTSVKJWL
D2W8WHHTYBIXVIVBT3X2YMJDKBCOQYZ+OBFBZU/OBLGGTKTGCK2BW4JOE6R/D4RQJ9DR9/4GMJWH
MX3D2GDVBJRUJ8240TFPL/36Z/QNFKD43XNO+9C3LRSFYBRHBSJXBGRR0MOFR9NBYWE74FUNQGMB
XHITBH6OSBZR4N2YEV9MJSOXGP/SF8VHP6G+63//BKSRBIIKCMVUZHN0CMVHBQPLBMRVYMOKNTBG
MCBVYMOKPDWVVHLWZSBVUGFNZQOVQ29UDGVUDHMGNTEGMCBSCI9QYXJLBNQGMSBWIFIKL2JLC292
CMNLCYB0NIBWIFIKL02LZGLHQM94IFSWIDBGODQYIDU5NV0KPJ4KZW5KB2JQCJU0IDBGB2JQCJW8
L0ZPBHRLCIBVRMXHDGVEZWNVZGUKL0XLBMD0BCB3MZGKPJ4KC3RYZWFTCNICLVZNJ9OWEL3ZK3ZC
HJLR8WCSTZUCUKTUGBBH7IGQH2ZJIQQCLBQ97K+VS3ZESBTRU+W4897Z84WN3BXZ/WUJILCSV3RO
/FJROYQSJGQZJX0KUWNSEBZVREOBYMISL8M3U8W+XONQFIBB06ELVBODOIMJIESH0CMWBT4HZBCX
DKY2T8OPF9B3CTMZ2H7C8+B9D2S+8OMD2IXKFB0TUCMXG+VZC3ISDX2OMX/3BJK7+XESF32ZYOWC
OVOHBDUNKMKQMTZZ0VSVF5VVUXOTG5ZZOHKP23/L5FPGW2WUYJ3HOTBYQM53WEHVEE2JO+X7CIFJ
5PJW4KGBRJDRHVEQ0R2CXON+PM4ZM+FP/YOFCCLKH43PICVN0ESI2KP7OOUQBMDWNK6NHN4VYT7H
20SCKQILBB/OZREDXUN64OKCTGY2I3U+CPV4EFBUZBEZLR26HONJM36CPLN2TYZI3IXYVR6BD36F
FMJ+32YBEZK4RYGJBSSBKRX0HJVDUPL4IU2CIEIKRJMBKZPIRTJYSIQWYB7HG62W6XZWWX/ESERL
IO+D0R6GZBJ72OCELNUYBUNUG0Z5XNYCDBSYOGFUZLQ/FRVVWLVF8NMXWRRX2DLYGXEJHFY+X+OK
ZN9+VM2UTERBG6K0BWBMVBRV66JO3RZNIYS3CXF3BWRDR3H2IM2XVGXCIUISZ980DTVBRKUYQOOW
UYIYF3OTKMFCPOV4TDTHT25RIZN5QLKXQNGQR2I2+IW0BNBJTND2GX5V2UDMQGUZVSIVB7DB+KWT
QUHV/TF2QJWZRGON6TSO2WJBZBDF2VBGINFQT2LSZM7+35OUD0GBC6JGU20SY2OL40QF7Q55UYLU
MPB2OFCPBPZ9462PBE5R/Y7CPVW23JU2ZEJREMY4VPE6J9LJNXJ+V6GDX8GU4QI438OPIPNGCRMV
HVB9RE4YB+CIQDES2Q7LU9+D4LTT3IP6I/4QV9+3R8OB/QPOKPIMCGPLBMRZDHJLYW0KZW5KB2JQ
CJU2IDBGB2JQCJW8L2R5CGUGL0ZVBNQKL0JHC2VGB250IC9IZWX2ZXRPY2EKL2N2YNR5CGUGL2R5
CGUXCI9OYW2LIC9GMQOVRW5JB2RPBMCGL2DPBKFUC2LFBMNVZGLUZWO+PGPLBMRVYMOKNTCGMCBV
YMOKPDWVVHLWZSBVRM9UDBOVQMFZZUZVBNQGL0HLBHZLDGLJYS2CB2XKCI9TDWJ0EXBLIC9UEXBL
MQOVTMFTZSBVRJMKL0VUY29KBW5NIC9XBW5BBNNPRW5JB2RPBMCKPJ4KZW5KB2JQCJU2IDBGB2JQ
CJW8L2BYB2NTZXQGWY9QREYGL0LTYWDLQYBVVGV4DF0KL0ZVBNQGPDWVRJEGNTYGMCBSCI9GMYB2
NYBWIFIKPJ4KPJ4KZW5KB2JQCJUZIDBGB2JQCJW8L2R5CGUGL2BHZ2UKL0NVBNRLBNRZIDU0IDBG
UGOVUGFYZW50IDEGMCBSCI9SZXNVDXJJZXMGNTUGMCBSCI9NZWRPYUJVECBBMCBWIDG0MIB2OTVD
CJ4+CMVUZG9IBGO2MCBWIG9IBGO8PC9GBWX0ZXIGL0ZSYXRLRGVJB2RLCI9MZW5NDGGGMTB4NQO+
PGPZDHJLYW0KEJYTME2Z4JGQHU/8CH2ZQQCO9B2JB07KW8YW2MWHMZ2KM55UQIZHFTG9ZK/FTJFY
JJHJKTSXUJDEFTRQQBW+YUBXT0BBKCPZTXERPP5GJDBCHGYFYQJIOQHMUSCMUUPS7QZJXSMF42V4
FY2S8BOZCGNX6DICR3EUTFBLEXCXBPX/J/XX6WK+DLMWUFEGZCKOBSZDWTT22RN3V/NKD2ESROLY
Z2JRXELYIFU2KMFRDERU7XQBXHM2/YLZH6WL3MFDJ39ICKYQXQ2VYH7CMD28/SJ3+DVPVNB5+LJ/
TZB/5B9/B72FOWOQSNEUDJYCEBDHYHOS3EDHMVMI22N88VSI+SIOPLBVTLPLKLWUJRMOZVZHLI2+
X8KCLVYCJ/6VRVJNWO8EY7TXRDF7PUUHZ4V7E09/GQZE6QULE7EBSK0PNDY7SO7WWV3SJF0SFETZ
DG2Z0T+NMK0QPBTCKWIVZCIRROFSC/JT9HL0U0S9OC4PJQSKGDOO0IH57SGHGZQOUUNSBG9VMXBZ
RUJOL5UTT5OUONVB83YXT03JOQICKZIBOMKQFNXOBDWFD3326EO/U8FVBQB4M2QL3DGBYLLQ7RNI
8T0U3Z5EF9FW+7J7BJCMI/OG27PHXFNJOMWYBFV29OZN8T3T9UXNY+BTZYGWHHPXRWDIOEBWFING
YDTWSXLFRZ822/3MDBOIYO4H82YP2FRLSSSBU9PVW6VC2XP8YOVHKU/3X50PWUB8OLP2RGBYTLKX
FZSY3GHB9OCCKWQVJUOBKB6STSMWDEJ2FP5THYNX3CQZDSBVWMHSVG9FZVUSO4H7BTBY3P0CUPJB
BKIOXCUNL0YY5DQF2JXKU8XIFQZYHDOFZ76M03MBDBCPEZNBSLJITP2W/TBT2U3BIE5PSUFEQFSW
DTYZPTSM8+LDPZZK2QCUV4K2UGRXP44XKOEKHGBO5WGQTNCCS8DGMHLBNDZ034GGDBYDGZI/INE9
OWWTGR6MXHCNV73JHBBDRYVQTI57R4UWSG2GLRUT986RSF6ID0TEPUEK/JKSYQFL7QJ7JHSDC2R7
NBSTBYOH7USD8+ULNW93TRDO5LX/DPWG3FDKVHSO5F2ZQDBISDJN3XMOV5BDVYC3CO3Y4XL2GCRL
LEBUCLMKO5VILFWLZVRIVVYYKTR7O8+XGCVHCQ9DYBHZWUPB2BVRV3HXCZM0QW6KOPDQ8ECOT8ZS
WHNJJEQ8BSLQVVWUWI6GTDN4FWXQJNKHYTYWT7DXDS3B6YRKWQTHXDRKZSE08N/2D+N07RU2KQI6
CXCOTBGDY/LOULQYHZMUK+OYOVOPBFLB3ZT3UCUF4X4+YDB7X+8V7ZRIW7OW0MGCFDRE/EXNU5BU
2KM6CF5LMXIQGG9NITHIK5HLY6N88NEBCSR9XVMTCM5OEZXXCUFLRDT6XMSRVBVRDG3G/+J/KQ6R
OS3XNF0/ZOU6MBOKZW5KC3RYZWFTCMVUZG9IBGO2MIBWIG9IBGO8PC9UEXBLIC9GB250CI9CYXNL
RM9UDCBVSGVSDMV0BWNHCI9TDWJ0EXBLIC9UEXBLMQOVTMFTZSBVRJEKL0VUY29KBW5NIC9XBW5B
BNNPRW5JB2RPBMCKPJ4KZW5KB2JQCJYZIDBGB2JQCJW8L2R5CGUGL0ZVBNQKL0JHC2VGB250IC9I
ZWX2ZXRPY2ETQM9SZBOVU3VIDHLWZSBVVHLWZTEKL05HBWUGL0YZCI9FBMNVZGLUZYBVV2LUQW5Z
BUVUY29KBW5NCJ4+CMVUZG9IBGO2MSBWIG9IBGO8PC9QCM9JU2V0IFSVUERGIC9JBWFNZUMGL2RL
EHRDCI9GB250IDW8L0YXIDYYIDBGUGOVRJMGNJMGMCBSCJ4+CJ4+CMVUZG9IBGO2OSBWIG9IBGO8
PC9UEXBLIC9QYWDLCI9DB250ZW50CYB2MCBWIFIKL2BHCMVUDCBXIDBGUGOVUMVZB3VYY2VZIDYX
IDBGUGOVTWVKBWFCB3GGWZBGMCB4NDIGNTK2XQO+PGPLBMRVYMOKNJYGMCBVYMOKPDWVRMLSDGVY
IC9GBGF0ZURLY29KZQOVTGVUZ3ROIDG4OQO+PGPZDHJLYW0KEJYVVKTZ2KGQVVMR5UHUMBZ7NPQJ
DBQRLUBYKDK43OOZVLXUXEBL2B7222+LLWYZERKOBJJU72V2+67ODT6TIBIUXY8EVJ9/92CGICE2
L6JHYN8GJMCJE8ZOSN6J4LV8U8MTCZRNKK+IL23EQJFJNJ2KCT/PPVF4FTF/9+VHYTBDJ0UYEWJU
RKLBH6BJKB0G59G7UXB5NMYSPJ6ENRTGZLK3LVIW5EL6XZJ2ETFMJGWF/XLFNZSX+B2HTV7QQE4J
IX2OE+3DMVY/VPXBCVVFWEM8L+VN2FRF8VX7JRIVIOBB0QQMCBTUHPJQ9UOHNJMNBGU/LCBXXYWD
ZPP4MQR2FII8MCTVF5QUIJWPIUZJSBGBJTTXXZ8HL2+G2ITNRBTB29STSIOL7OEHWB/G+TT8GVMW
XGHTLDDJS9LS/CUET87CMTEILQZY5GS2/CNIGMEB0QJMC8HZKB5VPZMDDJK+FJQQJKXVN7NSP7YC
SUC2YVTBBSSQSGXK8BN337UR6KUDK4E2WSB5FMLUIWQJTDDBGZ8GMV6T2I20MSXJN2J5JZIN2IMY
I+5EQ+RP+BTSQXYELK2RRESJBIHM3HBNO7PVEVO0WBYZTPRBKEQGT2OBRG2C0FLX23Q2/L78UDW+
KO0TRBI2OFFDICR5LSPZNNT2XK5W2ZK443SVEZ04VBGF6PXK8DYECCXJFJHRHQ6MG0O2BL+HIXYF
NNRPRNBX0JRTHFXD9PTHFZBTI9BGGDEDI62DHMG3IJ2EDO7HCXUBICMDPMOEJTLGDL230JY/BQTC
EQTTGF6LHUYLYOBGU7I8F0LWFVF2Z403W6ZQSCNQZOIOIWBTJ93OSIKCBB3U+NF3OXXKHU6YMK7Y
RZZXI3QSVRZ9QV66M2K5MEZH5HKRBFL+BUXPSLYLET0VU6PU7O7D/KXUVYY9MWIBU8LHXU6GDB8B
INVSYBBB9X6YB685CBQSN/ZWIZNMSOE4GEVZJOB3SMTFDVGJUQQSB4QSK7TJLO47UNGSVYQ8ZUOW
CRCXJCSUMTDVX/G0TWSXYYP9PQJHUW5SFEVF62WO4W67N/73YLQBGPOC3GK9FFPZ7VOEXVHOHQFU
HQCPENY3N+NPEWGUZM5XC5DWKB2KHWDNT2C70UUT8YGFPQPJFFQMRRXTYKO/DRBR/VLGOSBKL8NB
NTHSZSC6/B8RIX2PCGPLBMRZDHJLYW0KZW5KB2JQCJY4IDBGB2JQCJW8L2R5CGUGL0ZVBNQKL0JH
C2VGB250IC9IZWX2ZXRPY2EKL2N2YNR5CGUGL2R5CGUXCI9OYW2LIC9GMQOVRW5JB2RPBMCGL2DP
BKFUC2LFBMNVZGLUZWO+PGPLBMRVYMOKNJKGMCBVYMOKPDWVVHLWZSBVRM9UDBOVQMFZZUZVBNQG
L0HLBHZLDGLJYS2CB2XKCI9TDWJ0EXBLIC9UEXBLMQOVTMFTZSBVRJMKL0VUY29KBW5NIC9XBW5B
BNNPRW5JB2RPBMCKPJ4KZW5KB2JQCJY3IDBGB2JQCJW8L2BYB2NTZXQGWY9QREYGL0LTYWDLQYBV
VGV4DF0KL0ZVBNQGPDWVRJEGNJGGMCBSCI9GMYB2OSBWIFIKPJ4KPJ4KZW5KB2JQCJY2IDBGB2JQ
CJW8L2R5CGUGL2BHZ2UKL0NVBNRLBNRZIDY2IDBGUGOVUGFYZW50IDEGMCBSCI9SZXNVDXJJZXMG
NJCGMCBSCI9NZWRPYUJVECBBMCBWIDG0MIB2OTVDCJ4+CMVUZG9IBGO3MIBWIG9IBGO8PC9GBWX0
ZXIGL0ZSYXRLRGVJB2RLCI9MZW5NDGGGMZYWOBO+PGPZDHJLYW0KEJYTXETZ2ZGSVVTX8JZJRYWQ
B3BOW0XBSSMTWFZIYTRUDVBG2EPKVX5KZHKO+FXBOBBQPPLQZXKIX/RQ/X0NDDCOBWERKW+XNKEP
SZPV25PYY92JMQQJTZLDT+SEJOCFHDLEMJBYVBCUELJ6TP77S/4+OWXBBOIX09PQE5BM8GOL8R/J
V/IPNIOXVE/+L6Z+UXLGRNIS0TOJLLRXBBPO88/FDH4RWFQ0NFU/XBTV98X2ZSZVGFVXYRZXJJ9E
FMVVYRPB3EBHEOYO79/5ZUVXPQ2WL8XYPJ9FV7IYZMBV3JDIUVGH/3ETNJHP6USVWHUOBSUUJ9OO
KMY8OUYQJSEVWPLDJVL68TVJ2BOVXS2KMKIFL2/NBBGYBYPHTVOKFCZ45ZDT3LXCSZLZV2TNSKQ5
69VPBJR/PG3IZDXOLB2ETBHLI3YXJYJZPQXRI/BBHF42J7S+MS6NIZIMDTOKBGOPSCK8U7XBRBPE
WQJ5BTFHC2BCGYXQ5+X5DLBKOWILS0JBWQQSC6UCYOJSZICUFUPREULEUIJ6EIWYWJONGXJPHKLD
M5SR2CFVECVPCQWLSZTTRHDPWVT8V73BVJP83B7CRR82THQ7INEJJ/KWRJKGMBOOBJKK7DDO2VUX
N+EKF5TPLJNSY4EQLQ62DJ2SMB8VZWZUTSCJ04HLLQPCRKJHVLPDI2RTSB2MCYKE6FD4OR/NR/V2
ZZWBNTUV5MLKJDWC/DGLLXB2LRPTLKKBE2VOYLQUBPTSHEQ+KKVSKG2LIGMPCIPX3NLMU3CFLRKX
JIIRZQDBKJ205SS4NI6JHDB//NVZ+GW3QRE2RIIJ48BYCONCPO/3PIKDFFLVLDDY+TX/G6NMGBQ+
HGF/L6IEC50VLSXVRIHCZR2EQSYTBHFPYTIKC54V89LL8EK6N9DON90M5C7KSTZ2KBNUPTJO9LGF
Q2GWCYGBCIHZZCOOWGIKZPGYQYSV4VFYBVV9UVLLCQPR7BL/GUFN4CQKDQXLR6/B2BJDTKTU20QH
0DOCJE4DXWUQMDCRLSMUPQIKLBD2SZTJB7F5TN2+GIWMVBRIBROUBNXDDIDDHLS+HMCKDFUBGQ0D
WTMQHGGIGSPERPFRSTF7BFX90/RLBMV/2F8BJKENFWEVOBJNFO9PB5BIXKBDKMODXR3NZSGHCIX3
ZUGOSQISSBYJQP+THJV+WL/UNGMSW4GP7J8UJBKWNBYEGKGZKW3KCJTIIUCGFBTJBHKZHDK5KKVB
HNB9MKPJUNV+GCWRPY3LCJ6UMOZKPXWXWUZSCMJNBIBROMQOWQMJTK8BYBDPYM5REQNSPKZP7ZFV
M7VT+MH748F6BXMVMMKFIV+U0ZKBSHNBGXDX6EOZNBLLTBKUZGMYXNIID8WHJKKYYEBCSGHBKOZT
9TKM3KJD9DOP7FOJKVG7GY0QI4ZCHYZT5T/36RGK2WSHDKKGVMOF4EV2Y8V2SSYY3PGOR/NR9BM2
3J7UT39V728HBZK8VOX2YL2B89F0FUQ4VDJIJ9V3HKQ2PPBHBEGMI46SDO582/KYGVPSTD38Y+3+
DD2IXTYWL/VTFJUQWGDFQZMVT4G8WOZ9DWOGFYCUDB3FBE/WV2B/NMI0TGFUCMIKDC947/DR3Z4W
9EVBFUBFNQYML2HK5WDU9JTEZEIVJIMDIXJKMMHKU2/HWZDDZKDWEUOMN9JXTVNFPQ2RCXWG5UNF
FEDL8YRZKHVG8+4DLQS5JFI2I6I4DCLWGQO0862XTOF0PCGTPBSXLJ7TLHU2C2PBXSFKNM8OEWCB
C2SC9XCH4BYEPB9WTWBMYBR3QSZKWQHGKIZ3ZUHBFBMPHHRJX5/CWLNQWKKKGR4E9VU39KLM+YNG
75STWUD/OFGSLUHGCCHMV9SP+XPCTTOX2KSWKBW0EDF/8WC40Y0MFWUSSC7+CFJPBNBLX0BXMJO3
+C+VPUVXS3R4YBXBP5UHD3ZQV2HCRBPVSCGL7NKGEUTOYZDWWPSX/KMBVSVFI4ZMUJEKO3YJEEIL
UVVB02XBM/NNIL8U0DSTT4UBY+LYWDZMQ4FZNDHS9IEY5YPW3BBKQVJWIDQDW4EKODW87BUHHKI+
/CNJK86DM2NCZMJFEYBNIWUWEFPBP5TV9JDWSLGUOX9VP4VOYR+SVWIVPZGMNV7DNJ3NIQUPXVNJ
H2SMK7B5KLTUJCVOJBSKYIJBPE07ODOTDX5KJ9WCTZ68RER6KGYF3W5IM7OMJI45JX4O3+BL2FS8
UM0/W/QJGPFX2TFVIR++7NWJYGDYHD8+KLFDVMHJ2JX5QYCHBW+BJBC/TSDQBGFPVPTDKKB0UNTH
2VZSDHLSUBQTPX9X32JRE+G/UKZG+CEGO80BDLJYUNIOESNJSW4V5BY+TQYTDESS0SCTKYWPBZEK
GVD2XML8Z8M8XL3OZYWU+9UZJKKUH4EWUCGZO+PDIWNTEWRTHKXIW9INBYZF9MY60PRVOTIQFYQS
Y9X2YZG2SPCUT3GESBWPHCISD80MQT5U7CNJ2P7BB7KB0GYYIJIV3F98GFWD+DVV8WM+KN6PFVFN
L9M/OQ4L+KDRV6LEJX4J+/P9UJHHOOZRXEYX5UKK7VOKIDDJBFSSC7ZK3ZCM5DWICLUYLLDLW2C0
QD7UGO8X6MTTBDUZEZ2YM4Y0GD3T+XHTNUFJ0B2PXOC9NFZFR8FMBZQYJBHW/RXMTUZBTFTXI9OQ
JEHBJQOHG9SOFNMPVBWB4OXUHJSFPPE3ER7VHMUI+IFFWWWVVVM7EO0PZM9M+WKWROWNEOQCJUDL
JBKYDEKMPS75H/DSQOKFDFRBMSFJRWVNVPZZT2V2FNBUMC8+RQBXXNGBIURJ9V+HEMU0BPOMRG9E
FFJTPWLIOSMGNJPGIQOC3+SIIIHKEEIGGRDIQOD3JGHIODIEEQGGRDGQ+O0SBHKOJICEKGGRJGP+
I4GBBCRJIYEKWOQJGM+KEZBBZTWKUEE3QBLFOCIGGCP4SKCCSOKO4PS8BCRQGQ8JVBBWHBV8J4WB
BCR4DGDJXVHB9X0ISKCCBWSWVG5UOL7BIYCECGLIQWCSOCR4BO+BBCR4BO+X4QJGQZ0CEQJGQZ3G
IQOCR/YISKCCR/YYK44KVTOJIIEKVTPJRDGQ+GQPGBQQ+GQPSEKO4KS9BHKO4KS9XOQJGQ/2CEIG
GQ/2GCUOCR7BIYCBCR7BY6W4KVHQJ4BEKVHQJ7FYOMLW2R4B8VQQEE8FY8VRWVD7BCRQWVD7JBVH
BV/TEZBBBV/TMVYCFXY2R0BCFXY2X2HXVPDVHGEJVPDVHMPFUCFXEWQKUMFXE4WVRWVF7RGQQBVF
7TFWHBV8TUDBBHV8TCDYCVTW2R4BCVTW2R5JXVHBV3SEJFDBV3UMLQMVIQ/2CIINGOB4KHGRJGQ+
2IMGGQQ+2MOSOCR4BO+BBCR4BO+X4QJGQZ0CEQJGQZ3GIQOCR/YISKCCR/BDEKKB77GQN++XBSEW
PJNBM6KLTK4PO4ZW/R5RG8Z6MBWMVJH5P2NV4EKG5NII98WH2J2L7K+IONWZF0MYQSRDNJL/D3T2
VF8/2M93DIPR3TDUMPQF+T8CWXSSTWPWL64/WYCRYK88XEBMZKXVTEZN2GS6KMK4BN7MFHIBKL0E
UUBQ2QEBMKBULBRCLRBECEJNKZVEJE2NWOYXJJQSLFDNUZ//EHYCPDY4ZDSEMXBJUH7UG6FM4NS0
EOXJSQZG++YG7B623M2JYFYOKMF+UMCFVYOXZNQI8EF5D2/DB8FBTYOCXQZMBXRVCRYM0ONOPLHU
T6BBLIG5LUOITWFCLTC4YWOGIZUDGRZKPBOESQ2VI7VY7OM7ICFRE7FEKCBLIB0I242CNBS2LXMW
TMTNEXVGBIXZLMYWPZB6CWGIWIFFRGBOKZHPDMZZXELI8FVZ0/BLNP7DXEJ2ETKVL6EBCCBQ8MQI
WDRPPK5UBRVSHLYG7PKWKZGPROFE/NWM5KZC9HJVZ/BIOQXNOFBRUPYUSCYMTPPKBTDMLE2CIGWU
ROOT6GSYCFLK5XHFHB3UHBM6OVPNFJ+W9KO9ITW0J7/VPPOKWFBTWHNFDBPEZFYQNB5CISDOM4C4
RKD79TRWLXUHRHV30NN+R+WH9BVXHYGSWMBUTITB2MSYHBSGSIFOQ0NGJRRZWOJQITDY+VQFEMUX
L2RIDGXLUOIFUX9D2XR+W75WQVS6FIUTZE+WRSOFRMPFXHC6USQGDI6PJBXVWYT0RZLVLC7V7ZDF
TVTI2VVDDIND7TNE2BH99FV62/QRDFQPLHYUSMFWTSTSSMHNWDZTTSOOVOBKBMI5XYOQEMSVLXBX
QGTZJULT0XQHHQRR5UL2H7UUL9UN+/VDUVUOV3QNJSPTIORHDU7FK472FZBZ5WEN3EJYDQVYN4OB
+BSGD4JXKDCLW/FSFJ5G+OBZNFIBXVK5KK/DRHZ2/4M9QBBRB3DN0/B2C/L7S3TZ225VEXH4V78W
TD2HQ9PBTE50VH7FCZ2CKNP2D2FEHC+6Z9GIBV3GROBJVEBOYTJK3UQPEJXFQZDSN3BD90P27KHQ
SMDUDJ+RILIOYRG6BIJQZWDDZGP2RV2E2PBZ7VBRUSX2/RDF2ZVUZSYU9NIDTHT4X2PORCXQFDRH
YH/2NHJCHEUGNF8O0E5X290B4NC3BQUUBBQ2VCHMBD+4Q3T9FGV2BBBMX2T93MTRDGZYW3L0X2OX
QR5PWFX95/JXBWRIG92NPROZ/MR/MSOKYL03PURZR6GLPELQ6IKC8DFXRJNICDMBNSEGJYQRBMFZ
U8BWE+S63T3TNUN2IIPW263Z2/BBG0QQYORSORH9H8MX7KZBV5XCPZ58KB5PCVEC2P8FGUGH0WOK
ZW5KC3RYZWFTCMVUZG9IBGO3NCBWIG9IBGO8PC9GBWX0ZXIGL0RDVERLY29KZQOVVHLWZSBVWE9I
BMVJDBOVTGVUZ3ROIDIWMDKZCI9CBXRZUGVYQ29TCG9UZW50IDGKL0HLBWDODCBXNDEKL0NVBG9Y
U3BHY2UGL0RLDMLJZVJHQGOVTMFTZSBVSW0XCI9TDWJ0EXBLIC9JBWFNZQOVV2LKDGGGNJY3CJ4+
CNN0CMVHBQR/2P/+BBHXQU5HMGL/4BBQSKZJRGBBBQEBDGB2BBD/2WBDBBBLDB4MCHBODQ4SERBT
GCGBGBYWGDEJJR0OOJM9PDKZODDBSFXOQERXRTC4UG2RV29IZ2HNPK2XEXBKEFXLZ2P/2WBDBRES
EHGVGC8BGI9JQJHCY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJY2NJ
Y2NJY2P/WBBRCBCNBPSDBSEBBHEBBXEB/8QBHWBBBQUBBQEBBQEBBBBBBBBBBBECBWQFBGCICQOL
/8QBTRBBBGEDBWIEBWUFBBQBBBF9BQIDBBQRBRIHMUEGE2FHBYJXFDKBKBEII0KXWRVS0FBKM2JY
GGKKFHCYGROLJICOKSO0NTY3ODK6Q0RFRKDISUPTVFVWV2HZWMNKZWZNBGLQC3R2DND4EXQDHIWG
H4IJIPKTLJWWL5IZMQKJPKWMP6IPQRKZTLW2T7I5USLDXMXGX8JJYTLT2NXW29JZ2UHI4+TL5UFO
6ERX8VP09FB3+PN6/8QBHWEBBWEBBQEBBQEBBQBBBBBBBBECBWQFBGCICQOL/8QBTREBBGECBBQD
BBCFBBQBBQJ3BBECBXEEBSEXBHJBUQDHCRMIMOEIFEKROBHBCSMZUVBVYNLRCHYKNOEL8RCYGROM
JYGPKJU2NZG5OKNERUZHSELKU2RVVLDYWVPJZGVMZ2HPBNN0DXZ3EHL6GOOEHYBHIIMKKPOULZBX
MJMBOQOKPBBNQKMQSRO0TBB3ULM6WSPEXCBHYMNK0TPU2DBX2NNB4UPK5EBN6ONQ8VP09FB3+PN6
/9OBDBMBBBIRBXEBPWDY2LVTVG8QRBQIFK3KFJ2Z3JUC/N9MV2FZU5SBDZCLOUPST6M5FR9W2W52
2RE5U+V829NMPL9OFRGC+TDLIWWJ2RDZBEHFU0UPSLG8HUJYLBUW5ZNHZVDTVDRMIUWWJVSTLNVL
NPT/BOSB6BILJYJERVCCPWVI4FWLVV0250JKNUH/3KITGR246H3RTK3BF3GBSC49BMK5OURMDCUN
KXMCZ4WUL+F4BB8KDURY0ZIY2EHI9Q29BE6K0IBRZD5PB5BQRNGMILL7VP7BCUVBNPYJ8SG7GKOB
LFV3DDS+9T74/SS/WE260U/2GYGDJYZM9E+M9QHZE2XYJOXT22OLRL9M2BVZ/EDW06HYSSGJ2Y8S
DJN8VRMQQSKMRF2ZYJKKXVNQ3SKSVLNJBM+VUJRCZYCVI+F9S2C/ECXMXJUDDLQUD6CUSLJTSWWT
NJVIXWZNXVPRI30YEW2XDMQ5UYZ35OPYZNZ/HE/VR+3MB9+YKWCPTC565HHPX+DDLL2IXQJTKQQI
TJCORU3CIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKK
BCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBZJTF02C6NVJCGODHSKSBFQMTIEEB
G5B6EVMZXLEXEBKZTPDCPFBPZBEVW6NWNM5C4JOPXBQE3UIRQFZOJBJG3RHQPJVL6GQKXLLT2I76
+T9PT/OUX2JNB4YSFQVFPUR2MPHVSZNCVLIWWQKXPHM5EONVIP8NUVUVZOFFBBRQBUUBFFBBRQBU
UBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBB
RQBUUBFFBBRQBUUBFFBBRQBY+SW2TSB4R2JSIH5FLKTHV45Z+OB6ISQBKNK5HSU2KXMCVPTTRBEI
GE5BXYNZBYWYJDNGB+X0RP2ZTO3BOOM0ULJJ8WUFNRFMCZOFVRMEQYNEMXYCHF5JZDHTIUNOPKSJ
7WUFJQ9888UNB2KO8BFBBSTLFLIO+UJ2Z2/GU7SIGTRC3GDTZRXQPPUBWDCEOT3MCNTLGTUCP4P0
U9K2RRMKGSBKQDGXS23BXJB/ZZWZ4VSBIX02HCQUBR94Q9VGBOFFILCELVBCNTKQZBGEKTLUNRTO
XTHVEENKZXKHHT8QPEFDHU7W7E6UYZEUWQQNQ2SO34U3TBQ83QCQUNX5UH2VCVZ22TR4JBSZPFI3
KSXB5CVOMCTKIK2UU2RKBCEXUDHDCVRWYW5BMKMEJ7NJJ9BWFDEGQW3E5VZKIIMBSTKLS9R+TELL
NTWWTU/BRB2NNU0UX06DBNTS5X5DNH5E9ZFHEHUOYP/T5KCEJYJDK55Z+HSHQXTE2SELP2QB2N6I
TTCKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKB
CIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGBOOBKKBCIGDGN8T6BDCMEYO2DGUI5UF59Q2OPEMIWSN
GYMMQW6EVEBKZNPGVORGBBRS2DWBHTNCXEV7WJOXRK4QXZ3TVFQCB2KEIZX6EH0IOU4UXL2GQSXL
KW42/WBQTTOHET2JTBOBBMKN2FQ6BRNNQZZBDZ5IJJRXG49BHUIPCVUTQXU+TQBFFWBHRQBUUBFF
BBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBU
UBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBCVRGK6RC66TXBMFK+XY+/HL+VH2YEPWUORKEZKUMZCLC
UZSB6NL6BPOQWEIWUZ3/BHW5I0M/PMDSMFL9MV07BLSFODJG+LFKMOP3CHCUITSOZ8P6TQLNQSK2
0XEZBDHFU8W9J/XMUJUEBS3LJRTRMHUN6EIILGUY2YQMJRG4YPMJRBBCDOJY2WUHBUJMVQPD2TNB
BNBFOCR8TTP8IJZISMPFQTOFCXFOZKPETVPDRM7ZB7ZG3IX6EF8B2ULBPGM3MSO5NZSSUM0LN+IJ
OTSGN7YMLF+3+8J8B2S7PBCQC0KQVOP4TNQFR/SS7WPBTS6XFNGP8ULJD8CDGJH60SI/BDNF+3+Z
32CVZBTQSXINRQR/3O9I0M8HEVYY6/4V0VIYBVJQRQLJX5EJOIUKKKTJKHFZKYMEB0OODWF4Y0ZU
BG4NE8YKBLGIXDBMZ24/H86JRK5PRYJWK6KZLZGZQCM8+NTXWZ7JMXCNOKY/C2NX2HHOLZ5FCJYM
4NG85PH4USJJ2E+GSHJ2VJBG9RWPUFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQB
UUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBBRQBUUBFFBEKXNVJKYKN
IBQDUVWSPWQBKMNSJST2ZG0SSYBGDB56BKZQSMU02URYIIRIBYVZ/HJFPGMCDKBW6GSBCT096RCH
QEWV29TVSGLDR2RJCWSSGOOEN3XQQUCR+FK6E5JBMLPKYXBKBCIGBPRMQKWYHVBYSTGBUBY8VIJS
45NGLD/9PUOK0LHULXUIY9RMJBV3H0I+ONZXQXK7IXHXHOXKITD6/P9NCVBZYSSIYYBHPBNQ/WDC
UBV/Z2F/BL9MK60E7MTXEE7MUNQTOUNC/LN7OEJBTNRJP9BP/WDCUBV/Z2F/BL9MNKRGO4SRWJB5
BSTXSL9/LTRGM+M7SCP/XRSQBXZXF82NHI3NQSCPUJKDBBQRDVMPVOO2NUXZJFIJBRZHEBZJ6BVN
W67YT2888CJGOBBUDH4Z0PYMOUZHKPGLSX8ESWUMNYXYYMYI22S205B47FIKQ/8BCUBV/WB9N/79
MODBC3IEIGRXJRPXTPVBLLECVMKFOBUI6DNS22RWD2EYWKLSZO87GVI6HB5PQRF7DJWHK2IS92C2
0+MPDTLGD0HUN6BVNX+KDLD9PKKQF3MQ4/SIVWMXZHOVCD5WB8CISXRJG6UJDIZTKGN2OBJ3M6/2
YW0+TY55SYJQIDJH29KBZB/P29KIOPISJDFDCZ/PWFTY83LCX9VDM5TTRNU9C0+ZUJBTZFZBJI2K
GZ96QULFXZC6KYK8JRQHNRVJBF8B2KWURNKDBU4YENP40SKO7HOBGRSUTSPBDJNICJGPZJ7BZNV7
TU7W8TJLMBYYOYQXKKYWMMHYSDGC0NZKMOU2E2RPCJKXJGXVOW8Z6VB/WLGLF89N/WC/ZQHWGJJ4
MMH0FIXTJZUJSZYZKKPKPU2FVR2CWT/PUX2JKDPNJPQPFPTDC42OSTKUG2WV7FUYTLBUWVW2NIXG
0T9FW+NWCB5YQHBBKBNN/IQUDCVN0K9PHL5+HN/8JRPX/PZ/+/ZQ5Y6RZBGXW2NV2BYVIIP5GOJV
HJ2TIJXHJ2TEN2BZT76OZLKYTYFQO2K9TGC2BNNITOWLNKWONERMBTTTV5FQPF38JIBXVPYK2ISQ
J+8EOP8BGTS0VLE9H822LWROMR2+O7VMBSZOYIHXHN2RPWBE65YWFWYLIRLKBBICE9BQULFXZC5Q
CVIHXXPPJODCMPCXT/HWNB3EN2CS0EIYRT0ZTSJUJPREWRQM7IY/+EO0R/NS/WD37NB8UBUTJZN/
BO/ZQPBW7KFWQZRU6XOXDGQQMKK4BFY8VINS45NOLD/9PUOKUDSMNY6LWNPCV2GP2MOQTBZBYVVC
YI/B0Y62BZTLYO2MDHNJJBBPPU4FHPG3MP2SEXM6FQBBK3IBWZ2JJXKSXWBWQ3IRS2FBJJGH94IC
F40P2IW3FURRP6M07S8T76LZBWVZE6HHUFUDQR3OTWNPEC2NLKSNHVTGZ96BNFK/QBQXUVK+JLSS
IXRPI5WQKWJ9HVFT9STTSJD7VYYOCHKKU3JJ2G5PSUEO+9VYLC3M9Y+2BQM4ZK02W2C22GFPBV9Y
Q205GCDRZLM5EOE0JZCNUDEXKFJB52Y+YPIGCE8/HTRW5IVLDJ7DT8B52NBGCHHEJMV+XQPNXNY9
SR2CIZT0UZNZH/CUBV/Z2F8B79MLOPGG5FSRGN8QQEJTLKDUWZ8SQB+7NBFEJXNSONVJU+E4BTU9
XHIBXISXEJTOGZ8PGEMPTHF8B6XXJPCW+JTSWXKVWCY9VGETWMJSCZXOBNOBHNS5HW5C3MESWJCZ
ESNIRC8EDYFP2RRFESS0OIXDQEHUBSOOBPNKK37NK0W/YYPP43EORXJYQ6NKKDQB9O3ZFYFMKFVV
LZT/2SDPZPYZVURBFE09JZCBWSBZPZXZPGOSXPOB9D8OTTXGIW8LWSXWRUPUGEGGLH2+ZN2GBQIQ
EBDH+HXNIO4NN2M4WZMXG5VFPQDTJ69B6DWVCTY2LXFIXBOJL2E9S5YP0H50U2/BJXDOCWKT0TYR
+N7IDZLE3DFYWUSQOJHPF6F2QH4RUJ49ZJHJYMKUNVXTWM5OK37YKVOH9NV0B+Z0/IEWBHRJMGJB
JCSR2CK8/WCH42WEMKKUQSRMVKU5UJQDSXDFOJ4RFN856ZO8402R42/0GQKQOGFMX0/OVOILI6W9
WBKSQ3BBHGCST/WQXDD0VIM7XPQTXLUYDJNLTR+/VC

Correct link to SAAJ source code

Currently, the link to source code of SAAJ is specified in file named
sourceDrops.html (https://saaj.dev.java.net/servlets/ProjectDocumentList?
folderID=460), and this link is broken. Please correct it. I suspect that
actual uploading of source code will be needed.

The problem that I am actually investigating is inappropriate error reporting:

  • SOAPException "Unable to internalize message" is thrown in MessageImpl
    (MimeHeaders, InputStream) with some NPE. Looks like couple of null checks are
    missing.

Environment

Operating System: All
Platform: All

Affected Versions

[current]

getLocatName() return Null for body element attribute

Hi,
I use SAAJ library in jwsdp 1.3:

I create a SOAP connection and send a SOAP request message:
SOAPConnectionFactory scFactory = SOAPConnectionFactory
.newInstance();

HttpSOAPConnection con = (HttpSOAPConnection) scFactory
.createConnection();

SOAPMessage response = con.call(request, endpoint);

When I parse the SOAP response message, the localName of the attribute of the
BODY element (by calling getLocalName()) is NULL. I think this is a bug. It
should be "m". BUT, the localName of the attribute (by calling getLocalName()
also) of the HEADER element is correct. The only difference between the Header
and Body element is there is another attribute ("env:mustUnderstand") in the
Header element.

summary:
The localName of the attribute 'm' in Header element is not null, it is "m',
which is correct.
But the localName of the attribute 'm' in Body element is null, and this is not
correct.
The reason behind this is SAAJ creates an AttrNSImpl for the "m" attribute in
the header element, BUT it creates a AttrImpl for the 'm' attribute in the
body element. And the getLocalName() of the AttrImpl always return null.

But i don't know why SAAJ creates an AttrNSImpl object for the "m" attribute in
the header but creates an AttrImpl for the body element.

I can post my code to dump out the value of the attributes in the header/body
element if needec.

Here is my SOAP respsonse:

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
env:Header
<m:id xmlns:m="http://myschema.com" env:mustUnderstand="1">
unknown
</m:id>
</env:Header>
env:Body
<m:Rsp
xmlns:m="http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-0">

</m:SubmitRsp>
</env:Body>
</env:Envelope>

Environment

Operating System: All
Platform: All

Affected Versions

[current]

MessageImpl.writeTo - missing attachements

In some cases, attachements are not sent with the soap message.

Scenario:
1. Create SOAP message
MessageFactory.createMessage(MimeHeaders, InputStream)
The SOAP message does not contain attachements.
2. Modify SOAP header
SOAPHeader.addHeaderElement(...)
3. Save changes
MessageImpl.saveChanges()
Because there are no attachements, the
MessageImpl.optimizeAttachmentProcessing is set to false
4. Add attachement(s)
MessageImpl.addAttachementPart(AttachementPart)
5. Save changes
MessageImpl.saveChanges()
The MessageImpl.optimizeAttachmentProcessing is never re-set to true.
The MessageImpl.mmp (MimeMultipart) is initialized.
6. Write to stream
MessageImpl.writeTo(OutputStream)
Because the optimizeAttachmentProcessing flag is set to false, the
MessageImpl.messageBytes are sent to the stream, instead of
MessageImpl.mmp.writeTo(OutputStream) call.
The SOAP message sent to the stream does not contain attachements.

Environment

Operating System: All
Platform: All

Affected Versions

[1.3]

Dynamic soap parser always tries soap 1.1 for mtom messages

When using saaj as a client (SAOPConnection.call(...)), if the response is in
mtom format, soap 1.1 will always be used to parse the envelope, even though it
should be soap 1.2.

First, spec references:

http://www.w3.org/TR/soap12-mtom/
The initial mtom spec says to use mtom with soap 1.2. The start-info parameter
of the Content-Type header must be "application/soap+xml", corresponding to the
content type of a plain soap 1.2 message. Saaj parses this correctly and
realizes that the message is mtom formatted.

http://www.w3.org/Submission/soap11mtom10/
The spec for using mtom with soap 1.1 says that they the start-info parameter
must be "text/xml", corresponding to the content type of a plain soap 1.1
message. Saaj cannot parse this and throws an exception if it comes across this.

...

com.sun.xml.messaging.saaj.soap.MessageFactoryImpl.createMessage(MimeHeaders,
InputStream) is called to parse the input stream of a soap response (where
MessageFactoryImpl is in this case a super class for a
SOAPMessageFactoryDynamicImpl object). The createMessage method properly
figures out that the http body is in mtom format (the "stat" variable).
However, when it checks to see if this means that the soap payload is soap 1.1,
the answer is true and it proceeds to try to parse a soap 1.1 message, even
though, as shown above, the message must be soap 1.2.

The quick fix for this, I believe, is to change the value of
com.sun.xml.messaging.saaj.soap.MessageImpl.MIME_MULTIPART_XOP_FLAG from 14 to
10 (flip the 3rd bit to specify that soap 1.1 is not supported with mtom/xop).
A fuller fix would be to differentiate between soap 1.1 and 1.2 according to the
spec referenced above (introduce a new flag, properly recognize
start-info="text/xml" and choose the correct SOAPMessage implementation based on
it).

If there is interest, I could certainly work on this.

Environment

Operating System: All
Platform: All

Affected Versions

[current]

Management leaks PermGen and heap space when parsing XML documents.

The short version: Xerces has a class called SymbolTable, in which the SAX
parser stores every namespace prefix and local name ever encountered. Since
SAAJ tries to save a little time by using a pool of Xerces SAX parsers, then
given a variety of different XML messages, SAAJ will eventually exhaust memory
by filling up the heap with various XML strings. Since Xerces intern()s these
strings, they are stored in the (usually) much smaller permanent generation,
which may be exhausted long before the heap is. This problem is especially
prevalent when using an Axis2 generated client, which generates new namespace
prefixes with each message (axis2ns1:myElement, axis2ns2:myElement,
axis2ns3:myElement, etc...).

The long version:

Create a new instance of com.sun.ws.management.Management, and pass in your XML
message. This goes through several calls, until down in
Management(Message).init(), we end up calling msg.getSOAPHeader(), which causes
some message parsing to happen. This indirectly calls into
SOAPPart1_2Impl.createEnvelopeFromSource(), which calls into
EnvelopeFactory.createEnvelope().

EnvelopeFactory grabs an instance of SAXParser from the ParserPool, creates a
new RejectDoctypeSaxFilter, and then a new instance of SAXSource with the
RejectDoctypeSaxFilter attached to it. EnvelopeFactory then creates a
com.sun.xml.messaging.saaj.util.transform.EfficientStreamingTransformer, and
calls into it to do an identity transform to transform the SAXSource into a DOM
document.

The transformer will eventually call into
com.sun.xml.messaging.saaj.util.RejectDoctypeSaxFilter.parse() (inherited from
org.xml.sax.helpers.XMLFilterImpl). This is the same RejectDoctypeSaxFilter we
created way back up in EnvelopeFactory. This calls into
com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl to do the parsing, which
adds all the symbols to the Xerces SymbolTable associated with the SAXParser we
grabbed from the pool way back up in EnvelopeFactory.

Since the SymbolTable is never reset or cleared, over time as we parse new types
of messages (or even the same message, with different namespaces used), over
time the SymbolTable will fill up.

The easiest fix is to remove the ParserPool, and just create a new instance of
SAXParser every time we parse a message in EnvelopeFactory.

A somewhat more complicated fix would be to extend SymbolTable such that it
either relies entirely on the Java "intern()" mechanism and does not maintain
hard-links to the interned strings (the Xerces guys claim they build their table
for performance reasons, but it's hard to see their table out-performing
whatever native mechanism intern() uses). See
http://marc.info/?l=xerces-j-dev&m=111103024915201&w=2 for a discussion about
exactly this.

Another fix would be to extend SymbolTable and create a version which allows the
contents of the SymbolTable to be reset on demand, and then simply clear the
SymbolTable before each message is parsed, or perhaps each time a SAXParser is
taken from the ParserPool.

Environment

Operating System: All
Platform: All

Affected Versions

[1.3.1]

SOAPFactory.createFault(String,QName) creats SOAPFault with wrong infoset

To reproduce the issue, run this
SOAPFactory sf = SOAPFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
SOAPFault fault = sf.createFault("Incorrect SOAP Fault test", new
QName(com.sun.xml.ws.encoding.soap.SOAP12Constants.URI_ENVELOPE, "MustUnderstand"));
MessageFactory mf =
MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
SOAPMessage m = mf.createMessage();
m.getSOAPBody().addChildElement(fault);
m.writeTo(System.out);

This prints out
<env:Envelope
xmlns:env="http://www.w3.org/2003/05/soap-envelope">env:Header/env:Bodyenv:Faultenv:Reason<env:Text
xml:lang="en-US">Incorrect SOAP Fault
test</env:Text></env:Reason>env:Codeenv:Valueenv:MustUnderstand</env:Value></env:Code></env:Fault></env:Body></env:Envelope>

As you can see, the env:Reason is placed before env:Code which is incorrect
and causing interop problems with Microsoft and IBM.

Environment

Operating System: All
Platform: All

Affected Versions

[current]

I'm getting NullPointerException when calling SOAPMessage writeTo method

I'm getting NullPointerException when calling SOAPMessage writeTo method.

It only happens in a multi thread environment with lots of concurrent requests.
Is that method thread safe? Should I sinchronize my code before calling this
method?. I can't see any concurrency problems in the code though

Here is the exception trace.

java.lang.NullPointerException
at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java(Compiled Code))
at
com.sun.xml.messaging.saaj.soap.MessageImpl.writeTo(MessageImpl.java(Compiled Code))
at
com.isb.rigel.srvcimpl.messaging.SOAPMessageBuilderImpl.cloneMessage(SOAPMessageBuilderImpl.java(Compiled
Code))

And here is the method implementation

public SOAPMessage cloneMessage(SOAPMessage soapMessage) throws
SOAPMessageBuilderException {
getLogger().debugI18N(CLASS, "CLONNING_MESSAGE");
SOAPMessage soapMessageCloned;
try

{ soapMessageCloned = m_messageFactory.createMessage(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); soapMessage.writeTo(baos); ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); soapMessageCloned.getSOAPPart().setContent(new StreamSource(bais)); getLogger().debugI18N(CLASS, "CLONNED_MESSAGE"); }

catch (Exception e)

{ getLogger().errorI18N(e,CLASS,"ERROR_CLONNING_MESSAGE"); throw new SOAPMessageBuilderException(e,CLASS,"ERROR_CLONNING_MESSAGE"); }

return soapMessageCloned;
}

Environment

Operating System: All
Platform: All

Affected Versions

[current]

SOAPMessage.getSOAPHeader returns null when there is no SOAPHeader

As per API, it should throw SOAPException when there is no SOAPHeader.
But it returns null.

TestCase:
String simple_sm = "" +
"<S:Envelope
xmlns:S="http://schemas.xmlsoap.org/soap/envelope/\"><S:Header/><S:Body><DataType
xmlns="http://cptestservice.org/xsd\">foo
bar</S:Body></S:Envelope>";
MessageFactory messageFactory = MessageFactory.newInstance();
MimeHeaders headers = new MimeHeaders();
headers.addHeader("Content-Type", "text/xml");
SOAPMessage simple_soapMsg = messageFactory.createMessage(headers,
new ByteArrayInputStream(simple_sm.getBytes()));
SOAPHeader header = simple_soapMsg.getSOAPHeader();

Environment

Operating System: All
Platform: All

Affected Versions

[current]

No source code drops available

I am trying to package SAAJ for the Gentoo Linux distribution
(http://www.gentoo.org). We are a source-based distribution where all packages
are built from source code at installation time.

From looking at the license of the JWSDP, we are not allowed to redistribute the
content of the binary files, thus making it illegal for us to package the SAAJ
library.

Will the SAAJ sources be made available on these project pages, when, and if so,
under which license will they be made available?

Environment

Operating System: All
Platform: All

Affected Versions

[current]

BMMimeMultipart does not correctly handle CR LF

When parsing Multiparts using the Boyer-Moore algorithm, and the shift (the s
variable) is less than 2 - the code at line 501 expects that the 2 first
characters of the prevBuffer MUST BE '\n' or '\r\n'. But that not always the
case, since the implementation should allow a single '\n' as a line break.

In our case this results in a Exception, "Boundary characters encountered in
part Body without a preceeding CRLF"

Also, there is another potential problem using the shift and prevBuffer. Say the
shift (s) is only 1 AND the row preceeding the boundary ends with '\r\n' - then
the "new String(prevBuffer, 0, s)" will ONLY contain the '\n' - the '\r' have
then already been incorrectly written to the outputstream!

So there is danger in relying on the Boyer-Moore algorithm's buffers and
variables, they don't always go hand in hand with the desired boundary parsing.
(Not keeping enough historical data in all situations)

I guess the implementation would have to save more previous data (than just the
prevBuffer), and not writing it to the outputstream it's really sure the next
line is not a boundary.

Environment

Operating System: All
Platform: All

Affected Versions

[current]

SOAP faultcode QName processing is incorrect

When a fault contains a faultcode element without a prefix an exception is thrown:

"No NamespaceURI, SOAP requires faultcode content to be a QName"

As far as I can tell it is perfectly valid for a qualified name to have only a
local part:

"[7] QName ::= PrefixedName | UnprefixedName"
http://www.w3.org/TR/REC-xml-names/#ns-qualnames

the soap specification does say that elements must be namespace qualified:

http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383507 (last para)

but does not say this applies to the faultcode qualified name also.

This would seem to allow unprefixed QNames in the default namespace URI:

CustomCode

However, even if the specifications do not support this, it seems better to be
tolerant of non-compliant fault formats than to throw this error (which will
make the actual fault information harder to locate)

Environment

Operating System: All
Platform: All

Affected Versions

[current]

Problem with non utf-8 charset for a soap message with no xml declaration.

When soap requests are encoded using ISO-8859-1 (the http content-type header
reflects that) and there is no xml declaration it results in the following error:

ERROR: 'Invalid byte 2 of 3-byte UTF-8 sequence.'

I am using the Spring WS framework, which actually picks up on the charset
encoding and sets the SOAPPartImpl sourceCharsetEncoding appropriately.

However, as Spring WS holds the transformation Source in a JAXMStreamSource it
gets converted to a SAX InputSource before being wrapped in a SAXSource. The
InputSource is not advised of the correct charset encoding, so it gets lost -
resulting in the exception being thrown.

The JavaDoc for InputSource states that setEncoding should be used when the
application is aware of the encoding. In this case it is.

So, I propose that in EnvelopeFactory.createEnvelope(), after the InputSource
gets created, a line is added where the encoding is set to the SOAPPartImpl
sourceCharsetEncoding

btw. at present this is a showstopper for me - does anyone hava a workaround?

Environment

Operating System: All
Platform: All

Affected Versions

[current]

SAAJ SOAPConnection generates Content-Type header without start parameter when using attachments

We have some of our functionality exposed as webserivces. These serives are MTOM
enabled and sends/receives xop optimized data. We are using SAAJ library to
receive and send SOAP Message.

Upon invoking this service by client program written using JAX-WS, the client
fails to process the message sent by SAAJ's SOAPConnection.call(). Following is
the exception:

Caused by: org.jvnet.mimepull.MIMEParsingException: Missing start boundary
at org.jvnet.mimepull.MIMEParser.skipPreamble(MIMEParser.java:290)
at org.jvnet.mimepull.MIMEParser.access$200(MIMEParser.java:62)
at org.jvnet.mimepull.MIMEParser$MIMEEventIterator.next(MIMEParser.java:130)
at org.jvnet.mimepull.MIMEParser$MIMEEventIterator.next(MIMEParser.java:117)
at org.jvnet.mimepull.MIMEMessage.makeProgress(MIMEMessage.java:186)
at org.jvnet.mimepull.MIMEPart.getHeaders(MIMEPart.java:142)
at org.jvnet.mimepull.MIMEPart.getContentType(MIMEPart.java:134)
at
com.sun.xml.ws.encoding.MimeMultipartParser$PartAttachment.getContentType(MimeMultipartParser.java:167)
at com.sun.xml.ws.encoding.SOAPBindingCodec.decode(SOAPBindingCodec.java:340)
at com.sun.xml.ws.encoding.MimeCodec.decode(MimeCodec.java:181)
at com.sun.xml.ws.encoding.SOAPBindingCodec.decode(SOAPBindingCodec.java:279)

I noticed that the 'Content-Type' header of the outer package do not have the
'start' parameter. I tried setting the mime header of the SOAPMessage with start
parameter but this gets overwrittten when I do SOAPMessage.saveChanges().

Is there any workaround for setting the start parameter?

Environment

Operating System: Windows XP
Platform: All

Affected Versions

[1.3]

Is SAAJ 1.4-compatible?

If SAAJ is for Java 5.0 only it should be compiled with -target 1.5.
Otherwise you should not use java.util.Collections.emptyList(),
com.sun.org.apache.xerces.internal.dom.DocumentImpl etc.

Environment

Operating System: All
Platform: All

Affected Versions

[current]

Serialization of SOAPPart with Xerces DOMImplementationLS fails

Serializing a SOAPPart document with Xerces 2.9 DOMImplementationLS fails with a
NullPointerException in the xerces serializer. The problem is that
SOAPPart.getSchemaTypeInfo() seems to return null on some circumstances.

According to Xerces team, this is an error on SAAJ (see link to Xerces bug entry).

I use SAAJ from JAX-WS, which lists this info in its Manifest:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.5
Created-By: 1.5.0_09-b03 (Sun Microsystems Inc.)
Specification-Title: SOAP with Attachments API for Java
Specification-Version: 1.3
Implementation-Title: SAAJ Implementation
Implementation-Version: 1.3
Implementation-Vendor: Sun Microsystems Inc
Implementation-Vendor-Id: com.sun
Extension-Name: com.sun.xml.messaging.saaj
Class-Path: saaj-api.jar activation.jar

Environment

Operating System: All
Platform: All
URL: https://issues.apache.org/jira/browse/XALANJ-2396

Affected Versions

[current]

No NamespaceURI, SOAP requires faultcode content to be a QName

The Following peice of code :

SOAPFactory fac = SOAPFactory.newInstance();
SOAPFault f = fac.createFault("server error", new QName("Client"));

causes saaj to throw error :
No NamespaceURI, SOAP requires faultcode content to be a QName

But SOAP 1.1 allows the faultcode value to be unqualified.

Environment

Operating System: Windows XP
Platform: All

Affected Versions

[current]

SOAPFault marshalling bug!

I am marshalling the wsimport generated SOAP fault into the "detail"s of the
SOAPFault.

What goes wrong is that it inserts 2 nested detail elements instead of one.

[code]
public static SOAPFaultException createSoapFaultException(ServerExceptionType
srvEx) {
SOAPFault soapFault = null;

try

{ soapFault = SOAPFactory.newInstance().createFault(); soapFault.setFaultCode(new QName("urn:srv", "Exception", "srv")); soapFault.setFaultString(srvEx.getClass().toString()); Detail faultDetail = soapFault.addDetail(); marshaller.marshal(srvEx, faultDetail); return new SOAPFaultException(soapFault); }

catch (Exception ex)

{ ex.printStackTrace(); return null; }

}
[/code]

When the exception is thrown, the output is

[code]
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:Fault xmlns:ns2="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns3="http://www.w3.org/2003/05/soap-envelope">
srv:Exception
com.myurl.ServerExceptionType


<ns4:serverExceptionType xmlns:ns4="com.myurl" code="error
code"/>


</ns2:Fault>
</S:Body>
</S:Envelope>
[/code]

I also tried with soapFault.getDetail() instead of soapFault.addDetail() but
that throws a null pointer exception (which is normal).

Thanks in advance.

Environment

Operating System: All
Platform: All

Affected Versions

[current]

DOM L3 function lookupNamespacePrefix(URI) on a SAAJ Element does not work in all cases

DOM L3 function lookupNamespacePrefix(URI) on a SAAJ Element does not work in
all cases.

package javaapplication2;

import java.io.ByteArrayInputStream;
import javax.xml.namespace.QName;
import javax.xml.soap.*;

/**
*

  • @author sk112103
    */
    public class Main {

/** Creates a new instance of Main */
public Main() {
}

/**

  • @param args the command line arguments
    /
    public static void main(String[] args) throws Exception { // TODO code application logic here /
    String msg = "<S:Envelope xmlns:S='http://schemas.xmlsoap.org/soap/envelope/'><S:Body><ns2:Fault xmlns:ns2='http://schemas.xmlsoap.org/soap/envelope/' xmlns:ns3='http://www.w3.org/2003/05/soap-envelope'>ns3:VersionMismatchCouldn't create SOAP message. Expecting Envelope in namespace http://schemas.xmlsoap.org/soap/envelope/, but got http://wrongname.org </ns2:Fault></S:Body></S:Envelope>"; DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setNamespaceAware(true); DocumentBuilder builder = dbf.newDocumentBuilder(); Document doc = builder.parse(new StringBufferInputStream(msg)); Element elem = doc.getDocumentElement(); NodeList nl = elem.getElementsByTagName("faultcode"); Element e1 = (Element)nl.item(0); String faultCode = e1.getFirstChild().getNodeValue(); System.out.println("FaultCode=" + faultCode); int indexofColon = faultCode.indexOf(":"); String prefix = faultCode.substring(0,indexofColon); System.out.println("prefix=" + prefix); String nsURI = e1.lookupNamespaceURI(prefix); System.out.println("NS URI of prefix=" + nsURI + ":" + e1.getClass().getName()); MessageFactory messageFactory = MessageFactory.newInstance(); MimeHeaders headers = new MimeHeaders(); headers.addHeader("Content-Type", "text/xml"); SOAPMessage soapMsg = messageFactory.createMessage(headers,new ByteArrayInputStream(msg.getBytes())); soapMsg.writeTo(System.out); SOAPBody body = soapMsg.getSOAPPart().getEnvelope().getBody(); //SOAPElement fC = (SOAPElement)body.getFault().getFirstChild(); //System.out.println("NS URI of prefix=" + fC.lookupNamespaceURI("ns3") + fC.getClass().getName()); //QName got = body.getFault().getFaultCodeAsQName(); //System.out.println("QName="+got); SOAPFault fault = (SOAPFault)body.getFault(); System.out.println("NS URI of prefix=" + fault.lookupNamespaceURI("ns3") + fault.getClass().getName()); **/ String msg = "<S:Envelope xmlns:S='http://schemas.xmlsoap.org/soap/envelope/'><S:Body><ns2:Fault xmlns:ns2='http://schemas.xmlsoap.org/soap/envelope/' xmlns:ns3='http://www.w3.org/2003/05/soap-envelope'>ns3:VersionMismatchCouldn't create SOAP message. Expecting Envelope in namespace http://schemas.xmlsoap.org/soap/envelope/, but got http://wrongname.org </ns2:Fault></S:Body></S:Envelope>"; MessageFactory messageFactory = MessageFactory.newInstance(); MimeHeaders headers = new MimeHeaders(); headers.addHeader("Content-Type", "text/xml"); SOAPMessage soapMsg = messageFactory.createMessage(headers,new ByteArrayInputStream(msg.getBytes())); soapMsg.writeTo(System.out); SOAPBody body = soapMsg.getSOAPPart().getEnvelope().getBody(); SOAPFault fault = body.getFault(); QName got = body.getFault().getFaultCodeAsQName(); System.out.println("QName="+got); }

}

Environment

Operating System: Windows XP
Platform: All

Affected Versions

[current]

Incorrect soap fault representation - faultactor comes after detail

QName faultCode = new QName("http://schemas.xmlsoap.org/soap/envelope/",
"MustUnderstand");
String faultString = "test message" ;
SOAPFault fault = SOAPFactory.newInstance().createFault(faultString, faultCode);
Detail d = fault.addDetail();
d.addDetailEntry(new QName("", "entry1"));
fault.setFaultActor("http://example.org/actor");

produces an incorrect soap fault(faultactor comes after detail)

<SOAP-ENV:Fault xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
SOAP-ENV:MustUnderstand
test message



http://example.org/actor
</SOAP-ENV:Fault>

Environment

Operating System: All
Platform: All

Affected Versions

[current]

SAAJ rejects valid QName as fault code

Stack trace reported in the field with JDK6u11:

WARNING: Failed to establish connection to datacenter URI:
vcc+vi+https://10.233.208.151/sdk as root/******
java.io.IOException:
com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: No
NamespaceURI, SOAP requires faultcode con
tent to be a QName
at
net.java.dev.vcc.impl.vmware.esx.ViDatacenterConnection.connect(ViDatacenterConnection.java:30)
at
net.java.dev.vcc.api.DatacenterManager.getConnection(DatacenterManager.java:84)
at
net.java.dev.vcc.api.DatacenterManager.getConnection(DatacenterManager.java:48)
at
hudson.plugins.virtualization.VirtualDatacenter$MakeConnectionThread.run(VirtualDatacenter.java:290)
Caused by: javax.xml.ws.WebServiceException:
com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: No
NamespaceURI, SOA
P requires faultcode content to be a QName
at
com.sun.xml.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:190)
at
com.sun.xml.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:116)
at
com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:119)
at
com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:89)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:118)
at $Proxy41.createCollectorForTasks(Unknown Source)
at
net.java.dev.vcc.impl.vmware.esx.ViTaskCollector.(ViTaskCollector.java:32)
at
net.java.dev.vcc.impl.vmware.esx.ViDatacenter.(ViDatacenter.java:101)
at
net.java.dev.vcc.impl.vmware.esx.ViDatacenterConnection.connect(ViDatacenterConnection.java:28)
... 3 more
Caused by: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: No
NamespaceURI, SOAP requires faultcode content to be
a QName
at
com.sun.xml.internal.messaging.saaj.soap.impl.FaultImpl.setFaultCode(FaultImpl.java:103)
at
com.sun.xml.internal.messaging.saaj.soap.impl.FaultImpl.setFaultCode(FaultImpl.java:140)
at
com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPFactory1_1Impl.createFault(SOAPFactory1_1Impl.java:64)
at
com.sun.xml.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:179)
... 11 more

The relevant source code in question below:

public void setFaultCode(String faultCode, String prefix, String uri)
throws SOAPException {

if (prefix == null || prefix.equals("")) {
if (uri == null)

{ log.severe("SAAJ0140.impl.no.ns.URI"); throw new SOAPExceptionImpl("No NamespaceURI, SOAP requires faultcode content to be a QName"); }

prefix = getNamespacePrefix(uri);
if (prefix == null || prefix.equals(""))

{ prefix = "ns0"; }

}


I think SAAJ is wrong in rejecting the empty namespace URI — I don't see
anything in the spec that says such fault code is illegal. After all, NCName is
a valid QName.

Even if it is, the error message should include the fault code string so that
the user can at least see what the server has sent back. Plus JAX-WS should fix
up the broken fault code sent by the server.

Environment

Operating System: All
Platform: All

Affected Versions

[current]

Provide ability to parse SOAP1.1 or SOAP 1.2 messages

Email discussion of the issue :

I would like to be able to parse both SOAP 1.1 and 1.2. So if I use
DYNAMIC_SOAP_PROTOCOL I must use createMessage(MIMEHeaders, InputStream).
But I don't have MIMEHeaders or an InputStream, I only have the string,
pXml.

So is the only way to do this to get the uri of the namespace associated
with the Envelope and put an 'if'? IOW:

if (uri.equals('http://www.w3.org/2003/05/soap-envelope/')
factory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
else factory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);

This seems kind of kludgy. What happens when SOAP 1.3 comes out? I would
think that the existence of a DYNAMIC_SOAP_PROTOCOL constant would indicate
that it recognizes the document ... you know, dynamically?

Anything other than this kludgy 'if' that I can do?

Thanks,
Bob

V B Kumar Jayanti wrote:

If you need a message Factory that should work for both SOAP 1.1 and 1.2
envelopes then you need to do the following :

MessageFactory factory =
MessageFactory.newInstance(SOAPConstants.DYNAMIC_SOAP_PROTOCOL);

But NOTE that factory.createMessage() would then throw
UnsupporteOperationException.

User Code :

This is my code:

StringReader sr = new StringReader(pXml);
StreamSource ss = new StreamSource(sr);
MessageFactory mf = MessageFactory.newInstance();
SOAPMessage soapMessage = mf.createMessage();
SOAPPart soapPart = soapMessage.getSOAPPart();
soapPart.setContent(ss);
SOAPEnvelope env = soapPart.getEnvelope();

pXml is a String containing the uploaded SOAP document, whose Envelope
section has the SOAP 1.2 uri (http://www.w3.org/2003/05/soap-envelope/).
When I use the SOAP 1.1 uri (http://schemas.xmlsoap.org/soap/envelope/) it
works fine. It also used to work fine on Java 1.5.

Environment

Operating System: Windows XP
Platform: All

Affected Versions

[current]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.