Initial support for MacOS is now available
authorAndy Polyakov <appro@openssl.org>
Sun, 19 Dec 1999 16:17:45 +0000 (16:17 +0000)
committerAndy Polyakov <appro@openssl.org>
Sun, 19 Dec 1999 16:17:45 +0000 (16:17 +0000)
Submitted by: Roy Woods <roy@centricsystems.ca>
Reviewed by: Andy Polyakov

16 files changed:
CHANGES
INSTALL.MacOS [new file with mode: 0644]
MacOS/GetHTTPS.src/CPStringUtils.cpp [new file with mode: 0644]
MacOS/GetHTTPS.src/CPStringUtils.hpp [new file with mode: 0644]
MacOS/GetHTTPS.src/ErrorHandling.cpp [new file with mode: 0644]
MacOS/GetHTTPS.src/ErrorHandling.hpp [new file with mode: 0644]
MacOS/GetHTTPS.src/GetHTTPS.cpp [new file with mode: 0644]
MacOS/GetHTTPS.src/MacSocket.cpp [new file with mode: 0644]
MacOS/GetHTTPS.src/MacSocket.h [new file with mode: 0644]
MacOS/OpenSSL.mcp.hqx [new file with mode: 0644]
MacOS/TODO [new file with mode: 0644]
MacOS/_MWERKS_prefix.h [new file with mode: 0644]
MacOS/buildinf.h [new file with mode: 0644]
MacOS/mklinks.as.hqx [new file with mode: 0644]
MacOS/opensslconf.h [new file with mode: 0644]
crypto/perlasm/x86unix.pl

diff --git a/CHANGES b/CHANGES
index 14208b9..65c8178 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,10 @@
 
  Changes between 0.9.4 and 0.9.5  [xx XXX 1999]
 
+  *) Initial support for MacOS is now provided. Examine INSTALL.MacOS
+     for details.
+     [Andy Polyakov, Roy Woods <roy@centicsystems.ca>]
+
   *) Rebuild of the memory allocation routines used by OpenSSL code and
      possibly others as well.  The purpose is to make an interface that
      provide hooks so anyone can build a separate set of allocation and
diff --git a/INSTALL.MacOS b/INSTALL.MacOS
new file mode 100644 (file)
index 0000000..922fca4
--- /dev/null
@@ -0,0 +1,56 @@
+OpenSSL - Port To The Macintosh
+===============================
+
+Thanks to Roy Wood <roy@centricsystems.ca> initial support for MacOS (pre
+X) is now provided. "Initial" means that unlike other platforms where you
+get an SDK and a "swiss army" openssl application, on Macintosh you only
+get one sample application which fetches a page over HTTPS(*) and dumps it
+in a window. We don't even build the test applications so that we can't
+guarantee that all algorithms are operational.
+
+Required software:
+
+- StuffIt Expander     (or any program capable to "unbinhex");
+- DropStuff w/EE       (or MacGzip and SUNtar);
+- CodeWarrior Pro 5;
+
+Installation procedure:
+
+- fetch the source at ftp://ftp.openssl.org/ (well, you probably already
+  did, huh?)
+- unpack the .tar.gz file:
+       - if you have DropStuff w/EE installed then just drag it over
+         StuffIt Expander;
+       - otherwise process it first with MacGzip and then with SUNtar;
+- locate MacOS folder in OpenSSL source tree and open it;
+- unbinhex mklinks.as.hqx and OpenSSL.mcp.hqx in place;
+- double-click on mklinks.as;
+- open OpenSSL.mcp and compile 'GetHTTPS PPC' target;
+- that's it;
+
+(*)    URL is hardcoded into GetHTTPS Sources/GetHTTPS.cpp
+
+Finally some essential comments from our generous contributor:-)
+
+"I've gotten OpenSSL working on the Macintosh. It's probably a bit of a
+hack, but it works for what I'm doing. If you don't like the way I've done
+it, then feel free to change what I've done. I freely admit that I've done
+some less-than-ideal things in my port, and if you don't like the way I've
+done something, then feel free to change it-- I won't be offended!
+
+... I've tweaked "bss_sock.c" a little to call routines in a "MacSocket"
+library I wrote. My MacSocket library is a wrapper around OpenTransport,
+handling stuff like endpoint creation, reading, writing, etc. It is not
+designed as a high-performance package such as you'd use in a webserver,
+but is fine for lots of other applications. MacSocket also uses some other
+code libraries I've written to deal with string manipulations and error
+handling. Feel free to use these things in your own code, but give me
+credit and/or send me free stuff in appreciation! :-)
+
+...
+
+If you have any questions, feel free to email me as the following:
+
+roy@centricsystems.ca
+
+-Roy Wood"
diff --git a/MacOS/GetHTTPS.src/CPStringUtils.cpp b/MacOS/GetHTTPS.src/CPStringUtils.cpp
new file mode 100644 (file)
index 0000000..5f64afe
--- /dev/null
@@ -0,0 +1,2753 @@
+/* ====================================================================
+ * Copyright (c) 1998-1999 The OpenSSL Project.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
+ *
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
+ *    endorse or promote products derived from this software without
+ *    prior written permission. For written permission, please contact
+ *    openssl-core@openssl.org.
+ *
+ * 5. Products derived from this software may not be called "OpenSSL"
+ *    nor may "OpenSSL" appear in their names without prior written
+ *    permission of the OpenSSL Project.
+ *
+ * 6. Redistributions of any form whatsoever must retain the following
+ *    acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This product includes cryptographic software written by Eric Young
+ * (eay@cryptsoft.com).  This product includes software written by Tim
+ * Hudson (tjh@cryptsoft.com).
+ *
+ */
+ #include "CPStringUtils.hpp"
+#include "ErrorHandling.hpp"
+
+
+
+#define kNumberFormatString                    "\p########0.00#######;-########0.00#######"
+
+
+
+//     Useful utility functions which could be optimized a whole lot
+
+
+void CopyPStrToCStr(const unsigned char *thePStr,char *theCStr,const int maxCStrLength)
+{
+int            i,numPChars;
+
+
+       if (thePStr != nil && theCStr != nil && maxCStrLength > 0)
+       {
+               numPChars = thePStr[0];
+               
+               for (i = 0;;i++)
+               {
+                       if (i >= numPChars || i >= maxCStrLength - 1)
+                       {
+                               theCStr[i] = 0;
+                               
+                               break;
+                       }
+                       
+                       else
+                       {
+                               theCStr[i] = thePStr[i + 1];
+                       }
+               }
+       }
+}
+
+
+void CopyPStrToPStr(const unsigned char *theSrcPStr,unsigned char *theDstPStr,const int maxDstStrLength)
+{
+int            theMaxDstStrLength;
+
+       
+       theMaxDstStrLength = maxDstStrLength;
+       
+       
+       if (theDstPStr != nil && theSrcPStr != nil && theMaxDstStrLength > 0)
+       {
+               if (theMaxDstStrLength > 255)
+               {
+                       theMaxDstStrLength = 255;
+               }
+               
+               
+               if (theMaxDstStrLength - 1 < theSrcPStr[0])
+               {
+                       BlockMove(theSrcPStr + 1,theDstPStr + 1,theMaxDstStrLength - 1);
+                       
+                       theDstPStr[0] = theMaxDstStrLength - 1;
+               }
+               
+               else
+               {
+                       BlockMove(theSrcPStr,theDstPStr,theSrcPStr[0] + 1);
+               }
+       }
+}
+
+
+void CopyCStrToCStr(const char *theSrcCStr,char *theDstCStr,const int maxDstStrLength)
+{
+int            i;
+
+
+       if (theDstCStr != nil && theSrcCStr != nil && maxDstStrLength > 0)
+       {
+               for (i = 0;;i++)
+               {
+                       if (theSrcCStr[i] == 0 || i >= maxDstStrLength - 1)
+                       {
+                               theDstCStr[i] = 0;
+                               
+                               break;
+                       }
+                       
+                       else
+                       {
+                               theDstCStr[i] = theSrcCStr[i];
+                       }
+               }
+       }
+}
+
+
+
+void CopyCSubstrToCStr(const char *theSrcCStr,const int maxCharsToCopy,char *theDstCStr,const int maxDstStrLength)
+{
+int            i;
+
+
+       if (theDstCStr != nil && theSrcCStr != nil && maxDstStrLength > 0)
+       {
+               for (i = 0;;i++)
+               {
+                       if (theSrcCStr[i] == 0 || i >= maxDstStrLength - 1 || i >= maxCharsToCopy)
+                       {
+                               theDstCStr[i] = 0;
+                               
+                               break;
+                       }
+                       
+                       else
+                       {
+                               theDstCStr[i] = theSrcCStr[i];
+                       }
+               }
+       }
+}
+
+
+
+void CopyCSubstrToPStr(const char *theSrcCStr,const int maxCharsToCopy,unsigned char *theDstPStr,const int maxDstStrLength)
+{
+int            i;
+int            theMaxDstStrLength;
+
+       
+       theMaxDstStrLength = maxDstStrLength;
+
+       if (theDstPStr != nil && theSrcCStr != nil && theMaxDstStrLength > 0)
+       {
+               if (theMaxDstStrLength > 255)
+               {
+                       theMaxDstStrLength = 255;
+               }
+               
+               
+               for (i = 0;;i++)
+               {
+                       if (theSrcCStr[i] == 0 || i >= theMaxDstStrLength - 1 || i >= maxCharsToCopy)
+                       {
+                               theDstPStr[0] = i;
+                               
+                               break;
+                       }
+                       
+                       else
+                       {
+                               theDstPStr[i + 1] = theSrcCStr[i];
+                       }
+               }
+       }
+}
+
+
+
+void CopyCStrToPStr(const char *theSrcCStr,unsigned char *theDstPStr,const int maxDstStrLength)
+{
+int            i;
+int            theMaxDstStrLength;
+
+       
+       theMaxDstStrLength = maxDstStrLength;
+
+       if (theDstPStr != nil && theSrcCStr != nil && theMaxDstStrLength > 0)
+       {
+               if (theMaxDstStrLength > 255)
+               {
+                       theMaxDstStrLength = 255;
+               }
+               
+               
+               for (i = 0;;i++)
+               {
+                       if (i >= theMaxDstStrLength - 1 || theSrcCStr[i] == 0)
+                       {
+                               theDstPStr[0] = i;
+                               
+                               break;
+                       }
+                       
+                       else
+                       {
+                               theDstPStr[i + 1] = theSrcCStr[i];
+                       }
+               }
+       }
+}
+
+
+void ConcatPStrToCStr(const unsigned char *thePStr,char *theCStr,const int maxCStrLength)
+{
+int            i,numPChars,cStrLength;
+
+
+       if (thePStr != nil && theCStr != nil && maxCStrLength > 0)
+       {
+               for (cStrLength = 0;theCStr[cStrLength] != 0;cStrLength++)
+               {
+               
+               }
+               
+
+               numPChars = thePStr[0];
+               
+               
+               for (i = 0;;i++)
+               {
+                       if (i >= numPChars || cStrLength >= maxCStrLength - 1)
+                       {
+                               theCStr[cStrLength++] = 0;
+                               
+                               break;
+                       }
+                       
+                       else
+                       {
+                               theCStr[cStrLength++] = thePStr[i + 1];
+                       }
+               }
+       }
+}
+
+
+
+void ConcatPStrToPStr(const unsigned char *theSrcPStr,unsigned char *theDstPStr,const int maxDstStrLength)
+{
+int            theMaxDstStrLength;
+
+       
+       theMaxDstStrLength = maxDstStrLength;
+       
+       if (theSrcPStr != nil && theDstPStr != nil && theMaxDstStrLength > 0)
+       {
+               if (theMaxDstStrLength > 255)
+               {
+                       theMaxDstStrLength = 255;
+               }
+               
+               
+               if (theMaxDstStrLength - theDstPStr[0] - 1 < theSrcPStr[0])
+               {
+                       BlockMove(theSrcPStr + 1,theDstPStr + theDstPStr[0] + 1,theMaxDstStrLength - 1 - theDstPStr[0]);
+                       
+                       theDstPStr[0] = theMaxDstStrLength - 1;
+               }
+               
+               else
+               {
+                       BlockMove(theSrcPStr + 1,theDstPStr + theDstPStr[0] + 1,theSrcPStr[0]);
+                       
+                       theDstPStr[0] += theSrcPStr[0];
+               }
+       }
+}
+
+
+
+void ConcatCStrToPStr(const char *theSrcCStr,unsigned char *theDstPStr,const int maxDstStrLength)
+{
+int            i,thePStrLength;
+int            theMaxDstStrLength;
+
+       
+       theMaxDstStrLength = maxDstStrLength;
+
+       if (theSrcCStr != nil && theDstPStr != nil && theMaxDstStrLength > 0)
+       {
+               if (theMaxDstStrLength > 255)
+               {
+                       theMaxDstStrLength = 255;
+               }
+               
+               
+               thePStrLength = theDstPStr[0];
+               
+               for (i = 0;;i++)
+               {
+                       if (theSrcCStr[i] == 0 || thePStrLength >= theMaxDstStrLength - 1)
+                       {
+                               theDstPStr[0] = thePStrLength;
+                               
+                               break;
+                       }
+                       
+                       else
+                       {
+                               theDstPStr[thePStrLength + 1] = theSrcCStr[i];
+                               
+                               thePStrLength++;
+                       }
+               }
+       }
+}
+
+
+
+void ConcatCStrToCStr(const char *theSrcCStr,char *theDstCStr,const int maxCStrLength)
+{
+int            cStrLength;
+
+
+       if (theSrcCStr != nil && theDstCStr != nil && maxCStrLength > 0)
+       {
+               for (cStrLength = 0;theDstCStr[cStrLength] != 0;cStrLength++)
+               {
+               
+               }
+               
+
+               for (;;)
+               {
+                       if (*theSrcCStr == 0 || cStrLength >= maxCStrLength - 1)
+                       {
+                               theDstCStr[cStrLength++] = 0;
+                               
+                               break;
+                       }
+                       
+                       else
+                       {
+                               theDstCStr[cStrLength++] = *theSrcCStr++;
+                       }
+               }
+       }
+}
+
+
+
+void ConcatCharToCStr(const char theChar,char *theDstCStr,const int maxCStrLength)
+{
+int            cStrLength;
+
+
+       if (theDstCStr != nil && maxCStrLength > 0)
+       {
+               cStrLength = CStrLength(theDstCStr);
+               
+               if (cStrLength < maxCStrLength - 1)
+               {
+                       theDstCStr[cStrLength++] = theChar;
+                       theDstCStr[cStrLength++] = '\0';
+               }
+       }
+}
+
+
+
+void ConcatCharToPStr(const char theChar,unsigned char *theDstPStr,const int maxPStrLength)
+{
+int            pStrLength;
+
+
+       if (theDstPStr != nil && maxPStrLength > 0)
+       {
+               pStrLength = PStrLength(theDstPStr);
+               
+               if (pStrLength < maxPStrLength - 1 && pStrLength < 255)
+               {
+                       theDstPStr[pStrLength + 1] = theChar;
+                       theDstPStr[0] += 1;
+               }
+       }
+}
+
+
+
+
+int CompareCStrs(const char *theFirstCStr,const char *theSecondCStr,const Boolean ignoreCase)
+{
+int            returnValue;
+char   firstChar,secondChar;
+
+       
+       returnValue = 0;
+       
+       
+       if (theFirstCStr != nil && theSecondCStr != nil)
+       {
+               for (;;)
+               {
+                       firstChar = *theFirstCStr;
+                       secondChar = *theSecondCStr;
+                       
+                       if (ignoreCase == true)
+                       {
+                               if (firstChar >= 'A' && firstChar <= 'Z')
+                               {
+                                       firstChar = 'a' + (firstChar - 'A');
+                               }
+                               
+                               if (secondChar >= 'A' && secondChar <= 'Z')
+                               {
+                                       secondChar = 'a' + (secondChar - 'A');
+                               }
+                       }
+                       
+                       
+                       if (firstChar == 0 && secondChar != 0)
+                       {
+                               returnValue = -1;
+                               
+                               break;
+                       }
+                       
+                       else if (firstChar != 0 && secondChar == 0)
+                       {
+                               returnValue = 1;
+                               
+                               break;
+                       }
+                       
+                       else if (firstChar == 0 && secondChar == 0)
+                       {
+                               returnValue = 0;
+                               
+                               break;
+                       }
+                       
+                       else if (firstChar < secondChar)
+                       {
+                               returnValue = -1;
+                               
+                               break;
+                       }
+                       
+                       else if (firstChar > secondChar)
+                       {
+                               returnValue = 1;
+                               
+                               break;
+                       }
+                       
+                       theFirstCStr++;
+                       theSecondCStr++;
+               }
+       }
+       
+       
+       return(returnValue);
+}
+
+
+
+Boolean CStrsAreEqual(const char *theFirstCStr,const char *theSecondCStr,const Boolean ignoreCase)
+{
+       if (CompareCStrs(theFirstCStr,theSecondCStr,ignoreCase) == 0)
+       {
+               return true;
+       }
+       
+       else
+       {
+               return false;
+       }
+}
+
+
+Boolean PStrsAreEqual(const unsigned char *theFirstPStr,const unsigned char *theSecondPStr,const Boolean ignoreCase)
+{
+       if (ComparePStrs(theFirstPStr,theSecondPStr,ignoreCase) == 0)
+       {
+               return true;
+       }
+       
+       else
+       {
+               return false;
+       }
+}
+
+
+
+int ComparePStrs(const unsigned char *theFirstPStr,const unsigned char *theSecondPStr,const Boolean ignoreCase)
+{
+int            i,returnValue;
+char   firstChar,secondChar;
+
+       
+       returnValue = 0;
+       
+       
+       if (theFirstPStr != nil && theSecondPStr != nil)
+       {
+               for (i = 1;;i++)
+               {
+                       firstChar = theFirstPStr[i];
+                       secondChar = theSecondPStr[i];
+
+                       if (ignoreCase == true)
+                       {
+                               if (firstChar >= 'A' && firstChar <= 'Z')
+                               {
+                                       firstChar = 'a' + (firstChar - 'A');
+                               }
+                               
+                               if (secondChar >= 'A' && secondChar <= 'Z')
+                               {
+                                       secondChar = 'a' + (secondChar - 'A');
+                               }
+                       }
+
+
+                       if (theFirstPStr[0] < i && theSecondPStr[0] >= i)
+                       {
+                               returnValue = -1;
+                               
+                               break;
+                       }
+                       
+                       else if (theFirstPStr[0] >= i && theSecondPStr[0] < i)
+                       {
+                               returnValue = 1;
+                               
+                               break;
+                       }
+                       
+                       else if (theFirstPStr[0] < i && theSecondPStr[0] < i)
+                       {
+                               returnValue = 0;
+                               
+                               break;
+                       }
+                       
+                       else if (firstChar < secondChar)
+                       {
+                               returnValue = -1;
+                               
+                               break;
+                       }
+                       
+                       else if (firstChar > secondChar)
+                       {
+                               returnValue = 1;
+                               
+                               break;
+                       }
+               }
+       }
+       
+       
+       return(returnValue);
+}
+
+
+
+int CompareCStrToPStr(const char *theCStr,const unsigned char *thePStr,const Boolean ignoreCase)
+{
+int            returnValue;
+char   tempString[256];
+
+       
+       returnValue = 0;
+       
+       if (theCStr != nil && thePStr != nil)
+       {
+               CopyPStrToCStr(thePStr,tempString,sizeof(tempString));
+               
+               returnValue = CompareCStrs(theCStr,tempString,ignoreCase);
+       }
+       
+       
+       return(returnValue);
+}
+
+
+
+void ConcatLongIntToCStr(const long theNum,char *theCStr,const int maxCStrLength,const int numDigits)
+{
+Str255                 theStr255;
+
+
+       NumToString(theNum,theStr255);
+
+
+       if (numDigits > 0)
+       {
+       int     charsToInsert;
+       
+               
+               charsToInsert = numDigits - PStrLength(theStr255);
+               
+               if (charsToInsert > 0)
+               {
+               char    tempString[256];
+                       
+                       CopyCStrToCStr("",tempString,sizeof(tempString));
+                       
+                       for (;charsToInsert > 0;charsToInsert--)
+                       {
+                               ConcatCStrToCStr("0",tempString,sizeof(tempString));
+                       }
+                       
+                       ConcatPStrToCStr(theStr255,tempString,sizeof(tempString));
+                       
+                       CopyCStrToPStr(tempString,theStr255,sizeof(theStr255));
+               }
+       }
+
+
+       ConcatPStrToCStr(theStr255,theCStr,maxCStrLength);
+}
+
+
+
+
+void ConcatLongIntToPStr(const long theNum,unsigned char *thePStr,const int maxPStrLength,const int numDigits)
+{
+Str255                 theStr255;
+
+
+       NumToString(theNum,theStr255);
+
+
+       if (numDigits > 0)
+       {
+       int     charsToInsert;
+       
+               
+               charsToInsert = numDigits - PStrLength(theStr255);
+               
+               if (charsToInsert > 0)
+               {
+               char    tempString[256];
+                       
+                       CopyCStrToCStr("",tempString,sizeof(tempString));
+                       
+                       for (;charsToInsert > 0;charsToInsert--)
+                       {
+                               ConcatCStrToCStr("0",tempString,sizeof(tempString));
+                       }
+                       
+                       ConcatPStrToCStr(theStr255,tempString,sizeof(tempString));
+                       
+                       CopyCStrToPStr(tempString,theStr255,sizeof(theStr255));
+               }
+       }
+
+
+       ConcatPStrToPStr(theStr255,thePStr,maxPStrLength);
+}
+
+
+
+void CopyCStrAndConcatLongIntToCStr(const char *theSrcCStr,const long theNum,char *theDstCStr,const int maxDstStrLength)
+{
+       CopyCStrToCStr(theSrcCStr,theDstCStr,maxDstStrLength);
+       
+       ConcatLongIntToCStr(theNum,theDstCStr,maxDstStrLength);
+}
+
+
+
+void CopyLongIntToCStr(const long theNum,char *theCStr,const int maxCStrLength,const int numDigits)
+{
+Str255                 theStr255;
+
+
+       NumToString(theNum,theStr255);
+
+
+       if (numDigits > 0)
+       {
+       int     charsToInsert;
+       
+               
+               charsToInsert = numDigits - PStrLength(theStr255);
+               
+               if (charsToInsert > 0)
+               {
+               char    tempString[256];
+                       
+                       CopyCStrToCStr("",tempString,sizeof(tempString));
+                       
+                       for (;charsToInsert > 0;charsToInsert--)
+                       {
+                               ConcatCStrToCStr("0",tempString,sizeof(tempString));
+                       }
+                       
+                       ConcatPStrToCStr(theStr255,tempString,sizeof(tempString));
+                       
+                       CopyCStrToPStr(tempString,theStr255,sizeof(theStr255));
+               }
+       }
+
+
+       CopyPStrToCStr(theStr255,theCStr,maxCStrLength);
+}
+
+
+
+
+
+void CopyUnsignedLongIntToCStr(const unsigned long theNum,char *theCStr,const int maxCStrLength)
+{
+char                   tempString[256];
+int                            srcCharIndex,dstCharIndex;
+unsigned long  tempNum,quotient,remainder;
+
+       
+       if (theNum == 0)
+       {
+               CopyCStrToCStr("0",theCStr,maxCStrLength);
+       }
+       
+       else
+       {
+               srcCharIndex = 0;
+               
+               tempNum = theNum;
+               
+               for (;;)
+               {
+                       if (srcCharIndex >= sizeof(tempString) - 1 || tempNum == 0)
+                       {
+                               for (dstCharIndex = 0;;)
+                               {
+                                       if (dstCharIndex >= maxCStrLength - 1 || srcCharIndex <= 0)
+                                       {
+                                               theCStr[dstCharIndex] = 0;
+                                               
+                                               break;
+                                       }
+                                       
+                                       theCStr[dstCharIndex++] = tempString[--srcCharIndex];
+                               }
+                               
+                               break;
+                       }
+                       
+
+                       quotient = tempNum / 10;
+                       
+                       remainder = tempNum - (quotient * 10);
+                       
+                       tempString[srcCharIndex] = '0' + remainder;
+                       
+                       srcCharIndex++;
+                       
+                       tempNum = quotient;
+               }
+       }
+}
+
+
+
+
+void CopyLongIntToPStr(const long theNum,unsigned char *thePStr,const int maxPStrLength,const int numDigits)
+{
+char   tempString[256];
+
+
+       CopyLongIntToCStr(theNum,tempString,sizeof(tempString),numDigits);
+       
+       CopyCStrToPStr(tempString,thePStr,maxPStrLength);
+}
+
+
+
+OSErr CopyLongIntToNewHandle(const long inTheLongInt,Handle *theHandle)
+{
+OSErr          errCode = noErr;
+char           tempString[32];
+       
+       
+       CopyLongIntToCStr(inTheLongInt,tempString,sizeof(tempString));
+       
+       errCode = CopyCStrToNewHandle(tempString,theHandle);
+
+       return(errCode);
+}
+
+
+OSErr CopyLongIntToExistingHandle(const long inTheLongInt,Handle theHandle)
+{
+OSErr          errCode = noErr;
+char           tempString[32];
+       
+       
+       CopyLongIntToCStr(inTheLongInt,tempString,sizeof(tempString));
+       
+       errCode = CopyCStrToExistingHandle(tempString,theHandle);
+
+       return(errCode);
+}
+
+
+
+
+OSErr CopyCStrToExistingHandle(const char *theCString,Handle theHandle)
+{
+OSErr  errCode = noErr;
+long   stringLength;
+
+       
+       if (theCString == nil)
+       {
+               SetErrorMessageAndBail(("CopyCStrToExistingHandle: Bad parameter, theCString == nil"));
+       }
+
+       if (theHandle == nil)
+       {
+               SetErrorMessageAndBail(("CopyCStrToExistingHandle: Bad parameter, theHandle == nil"));
+       }
+
+       if (*theHandle == nil)
+       {
+               SetErrorMessageAndBail(("CopyCStrToExistingHandle: Bad parameter, *theHandle == nil"));
+       }
+
+
+
+       stringLength = CStrLength(theCString) + 1;
+       
+       SetHandleSize(theHandle,stringLength);
+       
+       if (GetHandleSize(theHandle) < stringLength)
+       {
+               SetErrorMessageAndLongIntAndBail("CopyCStrToExistingHandle: Can't set Handle size, MemError() = ",MemError());
+       }
+       
+       
+       ::BlockMove(theCString,*theHandle,stringLength);
+       
+
+EXITPOINT:
+       
+       return(errCode);
+}
+
+
+
+
+
+OSErr CopyCStrToNewHandle(const char *theCString,Handle *theHandle)
+{
+OSErr  errCode = noErr;
+long   stringLength;
+
+       
+       if (theCString == nil)
+       {
+               SetErrorMessageAndBail(("CopyCStrToNewHandle: Bad parameter, theCString == nil"));
+       }
+
+       if (theHandle == nil)
+       {
+               SetErrorMessageAndBail(("CopyCStrToNewHandle: Bad parameter, theHandle == nil"));
+       }
+
+
+
+       stringLength = CStrLength(theCString) + 1;
+       
+       *theHandle = NewHandle(stringLength);
+       
+       if (*theHandle == nil)
+       {
+               SetErrorMessageAndLongIntAndBail("CopyCStrToNewHandle: Can't allocate Handle, MemError() = ",MemError());
+       }
+       
+       
+       ::BlockMove(theCString,**theHandle,stringLength);
+       
+
+EXITPOINT:
+       
+       return(errCode);
+}
+
+
+
+OSErr CopyPStrToNewHandle(const unsigned char *thePString,Handle *theHandle)
+{
+OSErr  errCode = noErr;
+long   stringLength;
+
+       
+       if (thePString == nil)
+       {
+               SetErrorMessageAndBail(("CopyPStrToNewHandle: Bad parameter, thePString == nil"));
+       }
+
+       if (theHandle == nil)
+       {
+               SetErrorMessageAndBail(("CopyPStrToNewHandle: Bad parameter, theHandle == nil"));
+       }
+
+
+
+       stringLength = PStrLength(thePString) + 1;
+       
+       *theHandle = NewHandle(stringLength);
+       
+       if (*theHandle == nil)
+       {
+               SetErrorMessageAndLongIntAndBail("CopyPStrToNewHandle: Can't allocate Handle, MemError() = ",MemError());
+       }
+       
+       
+       if (stringLength > 1)
+       {
+               BlockMove(thePString + 1,**theHandle,stringLength - 1);
+       }
+       
+       (**theHandle)[stringLength - 1] = 0;
+       
+
+EXITPOINT:
+       
+       return(errCode);
+}
+
+
+OSErr AppendPStrToHandle(const unsigned char *thePString,Handle theHandle,long *currentLength)
+{
+OSErr          errCode = noErr;
+char           tempString[256];
+
+       
+       CopyPStrToCStr(thePString,tempString,sizeof(tempString));
+       
+       errCode = AppendCStrToHandle(tempString,theHandle,currentLength);
+       
+
+EXITPOINT:
+       
+       return(errCode);
+}
+
+
+
+OSErr AppendCStrToHandle(const char *theCString,Handle theHandle,long *currentLength,long *maxLength)
+{
+OSErr          errCode = noErr;
+long           handleMaxLength,handleCurrentLength,stringLength,byteCount;
+
+
+       if (theCString == nil)
+       {
+               SetErrorMessageAndBail(("AppendCStrToHandle: Bad parameter, theCString == nil"));
+       }
+
+       if (theHandle == nil)
+       {
+               SetErrorMessageAndBail(("AppendCStrToHandle: Bad parameter, theHandle == nil"));
+       }
+       
+       
+       if (maxLength != nil)
+       {
+               handleMaxLength = *maxLength;
+       }
+       
+       else
+       {
+               handleMaxLength = GetHandleSize(theHandle);
+       }
+       
+       
+       if (currentLength != nil && *currentLength >= 0)
+       {
+               handleCurrentLength = *currentLength;
+       }
+       
+       else
+       {
+               handleCurrentLength = CStrLength(*theHandle);
+       }
+       
+       
+       stringLength = CStrLength(theCString);
+       
+       byteCount = handleCurrentLength + stringLength + 1;
+       
+       if (byteCount > handleMaxLength)
+       {
+               SetHandleSize(theHandle,handleCurrentLength + stringLength + 1);
+               
+               if (maxLength != nil)
+               {
+                       *maxLength = GetHandleSize(theHandle);
+                       
+                       handleMaxLength = *maxLength;
+               }
+               
+               else
+               {
+                       handleMaxLength = GetHandleSize(theHandle);
+               }
+
+               if (byteCount > handleMaxLength)
+               {
+                       SetErrorMessageAndLongIntAndBail("AppendCStrToHandle: Can't increase Handle allocation, MemError() = ",MemError());
+               }
+       }
+       
+       
+       BlockMove(theCString,*theHandle + handleCurrentLength,stringLength + 1);
+       
+       
+       if (currentLength != nil)
+       {
+               *currentLength += stringLength;
+       }
+
+
+       errCode = noErr;
+       
+       
+EXITPOINT:
+
+       return(errCode);
+}
+
+
+
+OSErr AppendCharsToHandle(const char *theChars,const int numChars,Handle theHandle,long *currentLength,long *maxLength)
+{
+OSErr          errCode = noErr;
+long           handleMaxLength,handleCurrentLength,byteCount;
+
+
+       if (theChars == nil)
+       {
+               SetErrorMessageAndBail(("AppendCharsToHandle: Bad parameter, theChars == nil"));
+       }
+
+       if (theHandle == nil)
+       {
+               SetErrorMessageAndBail(("AppendCharsToHandle: Bad parameter, theHandle == nil"));
+       }
+       
+       
+       if (maxLength != nil)
+       {
+               handleMaxLength = *maxLength;
+       }
+       
+       else
+       {
+               handleMaxLength = GetHandleSize(theHandle);
+       }
+       
+       
+       if (currentLength != nil && *currentLength >= 0)
+       {
+               handleCurrentLength = *currentLength;
+       }
+       
+       else
+       {
+               handleCurrentLength = CStrLength(*theHandle);
+       }
+       
+       
+       byteCount = handleCurrentLength + numChars + 1;
+       
+       if (byteCount > handleMaxLength)
+       {
+               SetHandleSize(theHandle,handleCurrentLength + numChars + 1);
+               
+               if (maxLength != nil)
+               {
+                       *maxLength = GetHandleSize(theHandle);
+                       
+                       handleMaxLength = *maxLength;
+               }
+               
+               else
+               {
+                       handleMaxLength = GetHandleSize(theHandle);
+               }
+
+               if (byteCount > handleMaxLength)
+               {
+                       SetErrorMessageAndLongIntAndBail("AppendCharsToHandle: Can't increase Handle allocation, MemError() = ",MemError());
+               }
+       }
+       
+       
+       BlockMove(theChars,*theHandle + handleCurrentLength,numChars);
+       
+       (*theHandle)[handleCurrentLength + numChars] = '\0';
+       
+       if (currentLength != nil)
+       {
+               *currentLength += numChars;
+       }
+
+
+       errCode = noErr;
+       
+       
+EXITPOINT:
+
+       return(errCode);
+}
+
+
+
+OSErr AppendLongIntToHandle(const long inTheLongInt,Handle theHandle,long *currentLength)
+{
+OSErr          errCode = noErr;
+char           tempString[32];
+       
+       
+       CopyLongIntToCStr(inTheLongInt,tempString,sizeof(tempString));
+       
+       errCode = AppendCStrToHandle(tempString,theHandle,currentLength);
+
+       return(errCode);
+}
+
+
+
+
+long CStrLength(const char *theCString)
+{
+long   cStrLength = 0;
+
+       
+       if (theCString != nil)
+       {
+               for (cStrLength = 0;theCString[cStrLength] != 0;cStrLength++)
+               {
+               
+               }
+       }
+       
+       
+       return(cStrLength);
+}
+
+
+
+long PStrLength(const unsigned char *thePString)
+{
+long   pStrLength = 0;
+
+       
+       if (thePString != nil)
+       {
+               pStrLength = thePString[0];
+       }
+       
+       
+       return(pStrLength);
+}
+
+
+
+
+
+void ZeroMem(void *theMemPtr,const unsigned long numBytes)
+{
+unsigned char  *theBytePtr;
+unsigned long  *theLongPtr;
+unsigned long  numSingleBytes;
+unsigned long  theNumBytes;
+
+       
+       theNumBytes = numBytes;
+       
+       if (theMemPtr != nil && theNumBytes > 0)
+       {
+               theBytePtr = (unsigned char     *) theMemPtr;
+               
+               numSingleBytes = (unsigned long) theBytePtr & 0x0003;
+               
+               while (numSingleBytes > 0)
+               {
+                       *theBytePtr++ = 0;
+                       
+                       theNumBytes--;
+                       numSingleBytes--;
+               }
+               
+
+               theLongPtr = (unsigned long     *) theBytePtr;
+               
+               while (theNumBytes >= 4)
+               {
+                       *theLongPtr++ = 0;
+                       
+                       theNumBytes -= 4;
+               }
+               
+               
+               theBytePtr = (unsigned char     *) theLongPtr;
+               
+               while (theNumBytes > 0)
+               {
+                       *theBytePtr++ = 0;
+                       
+                       theNumBytes--;
+               }
+       }
+}
+
+
+
+
+char *FindCharInCStr(const char theChar,const char *theCString)
+{
+char   *theStringSearchPtr;
+
+       
+       theStringSearchPtr = (char      *) theCString;
+       
+       if (theStringSearchPtr != nil)
+       {
+               while (*theStringSearchPtr != '\0' && *theStringSearchPtr != theChar)
+               {
+                       theStringSearchPtr++;
+               }
+               
+               if (*theStringSearchPtr == '\0')
+               {
+                       theStringSearchPtr = nil;
+               }
+       }
+       
+       return(theStringSearchPtr);
+}
+
+
+
+long FindCharOffsetInCStr(const char theChar,const char *theCString,const Boolean inIgnoreCase)
+{
+long   theOffset = -1;
+
+
+       if (theCString != nil)
+       {
+               theOffset = 0;
+               
+
+               if (inIgnoreCase)
+               {
+               char    searchChar = theChar;
+               
+                       if (searchChar >= 'a' && searchChar <= 'z')
+                       {
+                               searchChar = searchChar - 'a' + 'A';
+                       }
+                       
+                       
+                       while (*theCString != 0)
+                       {
+                       char    currentChar = *theCString;
+                       
+                               if (currentChar >= 'a' && currentChar <= 'z')
+                               {
+                                       currentChar = currentChar - 'a' + 'A';
+                               }
+                       
+                               if (currentChar == searchChar)
+                               {
+                                       break;
+                               }
+                               
+                               theCString++;
+                               theOffset++;
+                       }
+               }
+               
+               else
+               {
+                       while (*theCString != 0 && *theCString != theChar)
+                       {
+                               theCString++;
+                               theOffset++;
+                       }
+               }
+               
+               if (*theCString == 0)
+               {
+                       theOffset = -1;
+               }
+       }
+       
+       return(theOffset);
+}
+
+
+long FindCStrOffsetInCStr(const char *theCSubstring,const char *theCString,const Boolean inIgnoreCase)
+{
+long   theOffset = -1;
+
+
+       if (theCSubstring != nil && theCString != nil)
+       {
+               for (theOffset = 0;;theOffset++)
+               {
+                       if (theCString[theOffset] == 0)
+                       {
+                               theOffset = -1;
+                               
+                               goto EXITPOINT;
+                       }
+                       
+                       
+                       for (const char *tempSubstringPtr = theCSubstring,*tempCStringPtr = theCString + theOffset;;tempSubstringPtr++,tempCStringPtr++)
+                       {
+                               if (*tempSubstringPtr == 0)
+                               {
+                                       goto EXITPOINT;
+                               }
+                               
+                               else if (*tempCStringPtr == 0)
+                               {
+                                       break;
+                               }
+                       
+                       char    searchChar = *tempSubstringPtr;
+                       char    currentChar = *tempCStringPtr;
+                       
+                               if (inIgnoreCase && searchChar >= 'a' && searchChar <= 'z')
+                               {
+                                       searchChar = searchChar - 'a' + 'A';
+                               }
+                               
+                               if (inIgnoreCase && currentChar >= 'a' && currentChar <= 'z')
+                               {
+                                       currentChar = currentChar - 'a' + 'A';
+                               }
+                               
+                               if (currentChar != searchChar)
+                               {
+                                       break;
+                               }
+                       }
+               }
+               
+               theOffset = -1;
+       }
+
+
+EXITPOINT:
+       
+       return(theOffset);
+}
+
+
+
+void InsertCStrIntoCStr(const char *theSrcCStr,const int theInsertionOffset,char *theDstCStr,const int maxDstStrLength)
+{
+int            currentLength;
+int            insertLength;
+int            numCharsToInsert;
+int            numCharsToShift;
+
+       
+       if (theDstCStr != nil && theSrcCStr != nil && maxDstStrLength > 0 && theInsertionOffset < maxDstStrLength - 1)
+       {
+               currentLength = CStrLength(theDstCStr);
+               
+               insertLength = CStrLength(theSrcCStr);
+               
+
+               if (theInsertionOffset + insertLength < maxDstStrLength - 1)
+               {
+                       numCharsToInsert = insertLength;
+               }
+               
+               else
+               {
+                       numCharsToInsert = maxDstStrLength - 1 - theInsertionOffset;
+               }
+               
+
+               if (numCharsToInsert + currentLength < maxDstStrLength - 1)
+               {
+                       numCharsToShift = currentLength - theInsertionOffset;
+               }
+               
+               else
+               {
+                       numCharsToShift = maxDstStrLength - 1 - theInsertionOffset - numCharsToInsert;
+               }
+
+               
+               if (numCharsToShift > 0)
+               {
+                       BlockMove(theDstCStr + theInsertionOffset,theDstCStr + theInsertionOffset + numCharsToInsert,numCharsToShift);
+               }
+               
+               if (numCharsToInsert > 0)
+               {
+                       BlockMove(theSrcCStr,theDstCStr + theInsertionOffset,numCharsToInsert);
+               }
+               
+               theDstCStr[theInsertionOffset + numCharsToInsert + numCharsToShift] = 0;
+       }
+}
+
+
+
+void InsertPStrIntoCStr(const unsigned char *theSrcPStr,const int theInsertionOffset,char *theDstCStr,const int maxDstStrLength)
+{
+int            currentLength;
+int            insertLength;
+int            numCharsToInsert;
+int            numCharsToShift;
+
+       
+       if (theDstCStr != nil && theSrcPStr != nil && maxDstStrLength > 0 && theInsertionOffset < maxDstStrLength - 1)
+       {
+               currentLength = CStrLength(theDstCStr);
+               
+               insertLength = PStrLength(theSrcPStr);
+               
+
+               if (theInsertionOffset + insertLength < maxDstStrLength - 1)
+               {
+                       numCharsToInsert = insertLength;
+               }
+               
+               else
+               {
+                       numCharsToInsert = maxDstStrLength - 1 - theInsertionOffset;
+               }
+               
+
+               if (numCharsToInsert + currentLength < maxDstStrLength - 1)
+               {
+                       numCharsToShift = currentLength - theInsertionOffset;
+               }
+               
+               else
+               {
+                       numCharsToShift = maxDstStrLength - 1 - theInsertionOffset - numCharsToInsert;
+               }
+
+               
+               if (numCharsToShift > 0)
+               {
+                       BlockMove(theDstCStr + theInsertionOffset,theDstCStr + theInsertionOffset + numCharsToInsert,numCharsToShift);
+               }
+               
+               if (numCharsToInsert > 0)
+               {
+                       BlockMove(theSrcPStr + 1,theDstCStr + theInsertionOffset,numCharsToInsert);
+               }
+               
+               theDstCStr[theInsertionOffset + numCharsToInsert + numCharsToShift] = 0;
+       }
+}
+
+
+
+OSErr InsertCStrIntoHandle(const char *theCString,Handle theHandle,const long inInsertOffset)
+{
+OSErr  errCode;
+int            currentLength;
+int            insertLength;
+
+       
+       SetErrorMessageAndBailIfNil(theCString,"InsertCStrIntoHandle: Bad parameter, theCString == nil");
+
+       SetErrorMessageAndBailIfNil(theHandle,"InsertCStrIntoHandle: Bad parameter, theHandle == nil");
+       
+       currentLength = CStrLength(*theHandle);
+       
+       if (currentLength + 1 > ::GetHandleSize(theHandle))
+       {
+               SetErrorMessageAndBail("InsertCStrIntoHandle: Handle has been overflowed");
+       }
+       
+       if (inInsertOffset > currentLength)
+       {
+               SetErrorMessageAndBail("InsertCStrIntoHandle: Insertion offset is greater than string length");
+       }
+       
+       insertLength = CStrLength(theCString);
+       
+       ::SetHandleSize(theHandle,currentLength + 1 + insertLength);
+       
+       if (::GetHandleSize(theHandle) < currentLength + 1 + insertLength)
+       {
+               SetErrorMessageAndLongIntAndBail("InsertCStrIntoHandle: Can't expand storage for Handle, MemError() = ",MemError());
+       }
+       
+       ::BlockMove(*theHandle + inInsertOffset,*theHandle + inInsertOffset + insertLength,currentLength - inInsertOffset + 1);
+       
+       ::BlockMove(theCString,*theHandle + inInsertOffset,insertLength);
+
+
+       errCode = noErr;
+       
+       
+EXITPOINT:
+
+       return(errCode);
+}
+
+
+
+
+void CopyCStrAndInsert1LongIntIntoCStr(const char *theSrcCStr,const long theNum,char *theDstCStr,const int maxDstStrLength)
+{
+       CopyCStrAndInsertCStrLongIntIntoCStr(theSrcCStr,nil,theNum,theDstCStr,maxDstStrLength);
+}
+
+
+void CopyCStrAndInsert2LongIntsIntoCStr(const char *theSrcCStr,const long long1,const long long2,char *theDstCStr,const int maxDstStrLength)
+{
+const long     theLongInts[] = { long1,long2 };
+
+       CopyCStrAndInsertCStrsLongIntsIntoCStr(theSrcCStr,nil,theLongInts,theDstCStr,maxDstStrLength);
+}
+
+
+void CopyCStrAndInsert3LongIntsIntoCStr(const char *theSrcCStr,const long long1,const long long2,const long long3,char *theDstCStr,const int maxDstStrLength)
+{
+const long     theLongInts[] = { long1,long2,long3 };
+
+       CopyCStrAndInsertCStrsLongIntsIntoCStr(theSrcCStr,nil,theLongInts,theDstCStr,maxDstStrLength);
+}
+
+
+void CopyCStrAndInsertCStrIntoCStr(const char *theSrcCStr,const char *theInsertCStr,char *theDstCStr,const int maxDstStrLength)
+{
+const char     *theCStrs[2] = { theInsertCStr,nil };
+
+       CopyCStrAndInsertCStrsLongIntsIntoCStr(theSrcCStr,theCStrs,nil,theDstCStr,maxDstStrLength);
+}
+
+
+
+void CopyCStrAndInsertCStrLongIntIntoCStr(const char *theSrcCStr,const char *theInsertCStr,const long theNum,char *theDstCStr,const int maxDstStrLength)
+{
+const char     *theCStrs[2] = { theInsertCStr,nil };
+const long     theLongInts[1] = { theNum };
+
+       CopyCStrAndInsertCStrsLongIntsIntoCStr(theSrcCStr,theCStrs,theLongInts,theDstCStr,maxDstStrLength);
+}
+
+
+
+void CopyCStrAndInsertCStrsLongIntsIntoCStr(const char *theSrcCStr,const char **theInsertCStrs,const long *theLongInts,char *theDstCStr,const int maxDstStrLength)
+{
+int                    dstCharIndex,srcCharIndex,theMaxDstStrLength;
+int                    theCStrIndex = 0;
+int                    theLongIntIndex = 0;
+
+       
+       theMaxDstStrLength = maxDstStrLength;
+       
+       if (theDstCStr != nil && theSrcCStr != nil && theMaxDstStrLength > 0)
+       {
+               dstCharIndex = 0;
+               
+               srcCharIndex = 0;
+               
+               
+               //      Allow room for NULL at end of string
+               
+               theMaxDstStrLength--;
+               
+               
+               for (;;)
+               {
+                       //      Hit end of buffer?
+                       
+                       if (dstCharIndex >= theMaxDstStrLength)
+                       {
+                               theDstCStr[dstCharIndex++] = 0;
+                               
+                               goto EXITPOINT;
+                       }
+                       
+                       //      End of source string?
+                       
+                       else if (theSrcCStr[srcCharIndex] == 0)
+                       {
+                               theDstCStr[dstCharIndex++] = 0;
+                               
+                               goto EXITPOINT;
+                       }
+                       
+                       //      Did we find a '%s'?
+                       
+                       else if (theInsertCStrs != nil && theInsertCStrs[theCStrIndex] != nil && theSrcCStr[srcCharIndex] == '%' && theSrcCStr[srcCharIndex + 1] == 's')
+                       {
+                               //      Skip over the '%s'
+                               
+                               srcCharIndex += 2;
+                               
+                               
+                               //      Terminate the dest string and then concat the string
+                               
+                               theDstCStr[dstCharIndex] = 0;
+                               
+                               ConcatCStrToCStr(theInsertCStrs[theCStrIndex],theDstCStr,theMaxDstStrLength);
+                               
+                               dstCharIndex = CStrLength(theDstCStr);
+                               
+                               theCStrIndex++;
+                       }
+                       
+                       //      Did we find a '%ld'?
+                       
+                       else if (theLongInts != nil && theSrcCStr[srcCharIndex] == '%' && theSrcCStr[srcCharIndex + 1] == 'l' && theSrcCStr[srcCharIndex + 2] == 'd')
+                       {
+                               //      Skip over the '%ld'
+                               
+                               srcCharIndex += 3;
+                               
+                               
+                               //      Terminate the dest string and then concat the number
+                               
+                               theDstCStr[dstCharIndex] = 0;
+                               
+                               ConcatLongIntToCStr(theLongInts[theLongIntIndex],theDstCStr,theMaxDstStrLength);
+                               
+                               theLongIntIndex++;
+                               
+                               dstCharIndex = CStrLength(theDstCStr);
+                       }
+                       
+                       else
+                       {
+                               theDstCStr[dstCharIndex++] = theSrcCStr[srcCharIndex++];
+                       }
+               }
+       }
+
+
+
+EXITPOINT:
+
+       return;
+}
+
+
+
+
+
+OSErr CopyCStrAndInsertCStrLongIntIntoHandle(const char *theSrcCStr,const char *theInsertCStr,const long theNum,Handle *theHandle)
+{
+OSErr  errCode;
+long   byteCount;
+
+       
+       if (theHandle != nil)
+       {
+               byteCount = CStrLength(theSrcCStr) + CStrLength(theInsertCStr) + 32;
+               
+               *theHandle = NewHandle(byteCount);
+               
+               if (*theHandle == nil)
+               {
+                       SetErrorMessageAndLongIntAndBail("CopyCStrAndInsertCStrLongIntIntoHandle: Can't allocate Handle, MemError() = ",MemError());
+               }
+               
+               
+               HLock(*theHandle);
+               
+               CopyCStrAndInsertCStrLongIntIntoCStr(theSrcCStr,theInsertCStr,theNum,**theHandle,byteCount);
+               
+               HUnlock(*theHandle);
+       }
+       
+       errCode = noErr;
+       
+       
+EXITPOINT:
+
+       return(errCode);
+}
+
+
+
+
+
+OSErr CopyIndexedWordToCStr(char *theSrcCStr,int whichWord,char *theDstCStr,int maxDstCStrLength)
+{
+OSErr          errCode;
+char           *srcCharPtr,*dstCharPtr;
+int                    wordCount;
+int                    byteCount;
+
+
+       if (theSrcCStr == nil)
+       {
+               SetErrorMessageAndBail(("CopyIndexedWordToCStr: Bad parameter, theSrcCStr == nil"));
+       }
+       
+       if (theDstCStr == nil)
+       {
+               SetErrorMessageAndBail(("CopyIndexedWordToCStr: Bad parameter, theDstCStr == nil"));
+       }
+       
+       if (whichWord < 0)
+       {
+               SetErrorMessageAndBail(("CopyIndexedWordToCStr: Bad parameter, whichWord < 0"));
+       }
+       
+       if (maxDstCStrLength <= 0)
+       {
+               SetErrorMessageAndBail(("CopyIndexedWordToCStr: Bad parameter, maxDstCStrLength <= 0"));
+       }
+
+       
+       *theDstCStr = '\0';
+       
+       srcCharPtr = theSrcCStr;
+
+       while (*srcCharPtr == ' ' || *srcCharPtr == '\t')
+       {
+               srcCharPtr++;
+       }
+       
+
+       for (wordCount = 0;wordCount < whichWord;wordCount++)
+       {
+               while (*srcCharPtr != ' ' && *srcCharPtr != '\t' && *srcCharPtr != '\r' && *srcCharPtr != '\n' && *srcCharPtr != '\0')
+               {
+                       srcCharPtr++;
+               }
+               
+               if (*srcCharPtr == '\r' || *srcCharPtr == '\n' || *srcCharPtr == '\0')
+               {
+                       errCode = noErr;
+                       
+                       goto EXITPOINT;
+               }
+
+               while (*srcCharPtr == ' ' || *srcCharPtr == '\t')
+               {
+                       srcCharPtr++;
+               }
+               
+               if (*srcCharPtr == '\r' || *srcCharPtr == '\n' || *srcCharPtr == '\0')
+               {
+                       errCode = noErr;
+                       
+                       goto EXITPOINT;
+               }
+       }
+
+
+       dstCharPtr = theDstCStr;
+       byteCount = 0;
+       
+       
+       for(;;)
+       {
+               if (byteCount >= maxDstCStrLength - 1 || *srcCharPtr == '\0' || *srcCharPtr == ' ' || *srcCharPtr == '\t' || *srcCharPtr == '\r' || *srcCharPtr == '\n')
+               {
+                       *dstCharPtr = '\0';
+                       break;
+               }
+               
+               *dstCharPtr++ = *srcCharPtr++;
+               
+               byteCount++;
+       }
+
+
+       errCode = noErr;
+
+
+EXITPOINT:
+
+       return(errCode);
+}
+
+
+
+
+
+OSErr CopyIndexedWordToNewHandle(char *theSrcCStr,int whichWord,Handle *outTheHandle)
+{
+OSErr          errCode;
+char           *srcCharPtr;
+int                    wordCount;
+int                    byteCount;
+
+
+       if (theSrcCStr == nil)
+       {
+               SetErrorMessageAndBail(("CopyIndexedWordToNewHandle: Bad parameter, theSrcCStr == nil"));
+       }
+       
+       if (outTheHandle == nil)
+       {
+               SetErrorMessageAndBail(("CopyIndexedWordToNewHandle: Bad parameter, outTheHandle == nil"));
+       }
+       
+       if (whichWord < 0)
+       {
+               SetErrorMessageAndBail(("CopyIndexedWordToNewHandle: Bad parameter, whichWord < 0"));
+       }
+
+       
+       *outTheHandle = nil;
+       
+
+       srcCharPtr = theSrcCStr;
+
+       while (*srcCharPtr == ' ' || *srcCharPtr == '\t')
+       {
+               srcCharPtr++;
+       }
+       
+
+       for (wordCount = 0;wordCount < whichWord;wordCount++)
+       {
+               while (*srcCharPtr != ' ' && *srcCharPtr != '\t' && *srcCharPtr != '\r' && *srcCharPtr != '\n' && *srcCharPtr != '\0')
+               {
+                       srcCharPtr++;
+               }
+               
+               if (*srcCharPtr == '\r' || *srcCharPtr == '\n' || *srcCharPtr == '\0')
+               {
+                       break;
+               }
+
+               while (*srcCharPtr == ' ' || *srcCharPtr == '\t')
+               {
+                       srcCharPtr++;
+               }
+               
+               if (*srcCharPtr == '\r' || *srcCharPtr == '\n' || *srcCharPtr == '\0')
+               {
+                       break;
+               }
+       }
+
+
+       for (byteCount = 0;;byteCount++)
+       {
+               if (srcCharPtr[byteCount] == ' ' || srcCharPtr[byteCount] == '\t' || srcCharPtr[byteCount] == '\r' || srcCharPtr[byteCount] == '\n' || srcCharPtr[byteCount] == '\0')
+               {
+                       break;
+               }
+       }
+
+       
+       *outTheHandle = NewHandle(byteCount + 1);
+       
+       if (*outTheHandle == nil)
+       {
+               SetErrorMessageAndLongIntAndBail("CopyIndexedWordToNewHandle: Can't allocate Handle, MemError() = ",MemError());
+       }
+       
+       
+       ::BlockMove(srcCharPtr,**outTheHandle,byteCount);
+       
+       (**outTheHandle)[byteCount] = '\0';
+
+       errCode = noErr;
+
+
+EXITPOINT:
+
+       return(errCode);
+}
+
+
+
+OSErr CopyIndexedLineToCStr(const char *theSrcCStr,int inWhichLine,int *lineEndIndex,Boolean *gotLastLine,char *theDstCStr,const int maxDstCStrLength)
+{
+OSErr          errCode;
+int                    theCurrentLine;
+int                    theCurrentLineOffset;
+int                    theEOSOffset;
+
+
+       if (theSrcCStr == nil)
+       {
+               SetErrorMessageAndBail(("CopyIndexedLineToCStr: Bad parameter, theSrcCStr == nil"));
+       }
+       
+       if (theDstCStr == nil)
+       {
+               SetErrorMessageAndBail(("CopyIndexedLineToCStr: Bad parameter, theDstCStr == nil"));
+       }
+       
+       if (inWhichLine < 0)
+       {
+               SetErrorMessageAndBail(("CopyIndexedLineToCStr: Bad parameter, inWhichLine < 0"));
+       }
+       
+       if (maxDstCStrLength <= 0)
+       {
+               SetErrorMessageAndBail(("CopyIndexedLineToCStr: Bad parameter, maxDstCStrLength <= 0"));
+       }
+       
+       
+       if (gotLastLine != nil)
+       {
+               *gotLastLine = false;
+       }
+
+       
+       *theDstCStr = 0;
+       
+       theCurrentLineOffset = 0;
+       
+       theCurrentLine = 0;
+       
+       
+       while (theCurrentLine < inWhichLine)
+       {
+               while (theSrcCStr[theCurrentLineOffset] != '\r' && theSrcCStr[theCurrentLineOffset] != 0)
+               {
+                       theCurrentLineOffset++;
+               }
+               
+               if (theSrcCStr[theCurrentLineOffset] == 0)
+               {
+                       break;
+               }
+               
+               theCurrentLineOffset++;
+               theCurrentLine++;
+       }
+               
+       if (theSrcCStr[theCurrentLineOffset] == 0)
+       {
+               SetErrorMessageAndLongIntAndBail("CopyIndexedLineToCStr: Too few lines in source text, can't get line ",inWhichLine);
+       }
+
+
+       theEOSOffset = FindCharOffsetInCStr('\r',theSrcCStr + theCurrentLineOffset);
+       
+       if (theEOSOffset >= 0)
+       {
+               CopyCSubstrToCStr(theSrcCStr + theCurrentLineOffset,theEOSOffset,theDstCStr,maxDstCStrLength);
+               
+               if (gotLastLine != nil)
+               {
+                       *gotLastLine = false;
+               }
+       
+               if (lineEndIndex != nil)
+               {
+                       *lineEndIndex = theEOSOffset;
+               }
+       }
+       
+       else
+       {
+               theEOSOffset = CStrLength(theSrcCStr + theCurrentLineOffset);
+
+               CopyCSubstrToCStr(theSrcCStr + theCurrentLineOffset,theEOSOffset,theDstCStr,maxDstCStrLength);
+               
+               if (gotLastLine != nil)
+               {
+                       *gotLastLine = true;
+               }
+       
+               if (lineEndIndex != nil)
+               {
+                       *lineEndIndex = theEOSOffset;
+               }
+       }
+       
+
+       errCode = noErr;
+
+
+EXITPOINT:
+
+       return(errCode);
+}
+
+
+
+OSErr CopyIndexedLineToNewHandle(const char *theSrcCStr,int inWhichLine,Handle *outNewHandle)
+{
+OSErr          errCode;
+int                    theCurrentLine;
+int                    theCurrentLineOffset;
+int                    byteCount;
+
+
+       SetErrorMessageAndBailIfNil(theSrcCStr,"CopyIndexedLineToNewHandle: Bad parameter, theSrcCStr == nil");
+       SetErrorMessageAndBailIfNil(outNewHandle,"CopyIndexedLineToNewHandle: Bad parameter, outNewHandle == nil");
+       
+       if (inWhichLine < 0)
+       {
+               SetErrorMessageAndBail(("CopyIndexedLineToNewHandle: Bad parameter, inWhichLine < 0"));
+       }
+       
+
+       theCurrentLineOffset = 0;
+       
+       theCurrentLine = 0;
+       
+       
+       while (theCurrentLine < inWhichLine)
+       {
+               while (theSrcCStr[theCurrentLineOffset] != '\r' && theSrcCStr[theCurrentLineOffset] != '\0')
+               {
+                       theCurrentLineOffset++;
+               }
+               
+               if (theSrcCStr[theCurrentLineOffset] == '\0')
+               {
+                       break;
+               }
+               
+               theCurrentLineOffset++;
+               theCurrentLine++;
+       }
+               
+       if (theSrcCStr[theCurrentLineOffset] == '\0')
+       {
+               SetErrorMessageAndLongIntAndBail("CopyIndexedLineToNewHandle: Too few lines in source text, can't get line #",inWhichLine);
+       }
+
+       
+       byteCount = 0;
+       
+       while (theSrcCStr[theCurrentLineOffset + byteCount] != '\r' && theSrcCStr[theCurrentLineOffset + byteCount] != '\0')
+       {
+               byteCount++;
+       }
+               
+       
+       *outNewHandle = NewHandle(byteCount + 1);
+       
+       if (*outNewHandle == nil)
+       {
+               SetErrorMessageAndLongIntAndBail("CopyIndexedLineToNewHandle: Can't allocate Handle, MemError() = ",MemError());
+       }
+       
+       ::BlockMove(theSrcCStr + theCurrentLineOffset,**outNewHandle,byteCount);
+       
+       (**outNewHandle)[byteCount] = '\0';
+
+       errCode = noErr;
+
+
+EXITPOINT:
+
+       return(errCode);
+}
+
+
+
+
+OSErr CountDigits(const char *inCStr,int *outNumIntegerDigits,int *outNumFractDigits)
+{
+OSErr  errCode = noErr;
+int            numIntDigits = 0;
+int            numFractDigits = 0;
+int    digitIndex = 0;
+
+       
+       SetErrorMessageAndBailIfNil(inCStr,"CountDigits: Bad parameter, theSrcCStr == nil");
+       SetErrorMessageAndBailIfNil(outNumIntegerDigits,"CountDigits: Bad parameter, outNumIntegerDigits == nil");
+       SetErrorMessageAndBailIfNil(outNumFractDigits,"CountDigits: Bad parameter, outNumFractDigits == nil");
+       
+       digitIndex = 0;
+       
+       while (inCStr[digitIndex] >= '0' && inCStr[digitIndex] <= '9')
+       {
+               digitIndex++;
+               numIntDigits++;
+       }
+       
+       if (inCStr[digitIndex] == '.')
+       {
+               digitIndex++;
+               
+               while (inCStr[digitIndex] >= '0' && inCStr[digitIndex] <= '9')
+               {
+                       digitIndex++;
+                       numFractDigits++;
+               }
+       }
+       
+       *outNumIntegerDigits = numIntDigits;
+       
+       *outNumFractDigits = numFractDigits;
+       
+       errCode = noErr;
+       
+EXITPOINT:
+
+       return(errCode);
+}
+
+
+
+OSErr ExtractIntFromCStr(const char *theSrcCStr,int *outInt,Boolean skipLeadingSpaces)
+{
+OSErr          errCode;
+int                    theCharIndex;
+
+
+       if (theSrcCStr == nil)
+       {
+               SetErrorMessageAndBail(("ExtractIntFromCStr: Bad parameter, theSrcCStr == nil"));
+       }
+       
+       if (outInt == nil)
+       {
+               SetErrorMessageAndBail(("ExtractIntFromCStr: Bad parameter, outInt == nil"));
+       }       
+
+       
+       *outInt = 0;
+       
+       theCharIndex = 0;
+       
+       if (skipLeadingSpaces == true)
+       {
+               while (theSrcCStr[theCharIndex] == ' ')
+               {
+                       theCharIndex++;
+               }
+       }
+       
+       if (theSrcCStr[theCharIndex] < '0' || theSrcCStr[theCharIndex] > '9')
+       {
+               SetErrorMessageAndBail(("ExtractIntFromCStr: Bad parameter, theSrcCStr contains a bogus numeric representation"));
+       }
+
+
+       while (theSrcCStr[theCharIndex] >= '0' && theSrcCStr[theCharIndex] <= '9')
+       {
+               *outInt = (*outInt * 10) + (theSrcCStr[theCharIndex] - '0');
+               
+               theCharIndex++;
+       }
+       
+
+       errCode = noErr;
+
+
+EXITPOINT:
+
+       return(errCode);
+}
+
+
+
+OSErr ExtractIntFromPStr(const unsigned char *theSrcPStr,int *outInt,Boolean skipLeadingSpaces)
+{
+OSErr          errCode;
+char           theCStr[256];
+
+
+       if (theSrcPStr == nil)
+       {
+               SetErrorMessageAndBail(("ExtractIntFromPStr: Bad parameter, theSrcPStr == nil"));
+       }
+       
+       if (outInt == nil)
+       {
+               SetErrorMessageAndBail(("ExtractIntFromPStr: Bad parameter, outInt == nil"));
+       }
+       
+       
+       CopyPStrToCStr(theSrcPStr,theCStr,sizeof(theCStr));
+       
+       
+       errCode = ExtractIntFromCStr(theCStr,outInt,skipLeadingSpaces);
+
+
+EXITPOINT:
+
+       return(errCode);
+}
+
+
+
+int CountOccurencesOfCharInCStr(const char inChar,const char *inSrcCStr)
+{
+int            theSrcCharIndex;
+int            numOccurrences = -1;
+
+
+       if (inSrcCStr != nil && inChar != '\0')
+       {
+               numOccurrences = 0;
+               
+               for (theSrcCharIndex = 0;inSrcCStr[theSrcCharIndex] != '\0';theSrcCharIndex++)
+               {
+                       if (inSrcCStr[theSrcCharIndex] == inChar)
+                       {
+                               numOccurrences++;
+                       }
+               }
+       }
+       
+       return(numOccurrences);
+}
+
+
+int CountWordsInCStr(const char *inSrcCStr)
+{
+int            numWords = -1;
+
+
+       if (inSrcCStr != nil)
+       {
+               numWords = 0;
+               
+               //      Skip lead spaces
+               
+               while (*inSrcCStr == ' ')
+               {
+                       inSrcCStr++;
+               }
+
+               while (*inSrcCStr != '\0')
+               {
+                       numWords++;
+
+                       while (*inSrcCStr != ' ' && *inSrcCStr != '\0')
+                       {
+                               inSrcCStr++;
+                       }
+                       
+                       while (*inSrcCStr == ' ')
+                       {
+                               inSrcCStr++;
+                       }
+               }
+       }
+       
+       return(numWords);
+}
+
+
+
+
+void ConvertCStrToUpperCase(char *theSrcCStr)
+{
+char           *theCharPtr;
+
+
+       if (theSrcCStr != nil)
+       {
+               theCharPtr = theSrcCStr;
+               
+               while (*theCharPtr != 0)
+               {
+                       if (*theCharPtr >= 'a' && *theCharPtr <= 'z')
+                       {
+                               *theCharPtr = *theCharPtr - 'a' + 'A';
+                       }
+                       
+                       theCharPtr++;
+               }
+       }
+}
+
+
+
+
+
+
+
+void ExtractCStrItemFromCStr(const char *inSrcCStr,const char inItemDelimiter,const int inItemNumber,Boolean *foundItem,char *outDstCharPtr,const int inDstCharPtrMaxLength,const Boolean inTreatMultipleDelimsAsSingleDelim)
+{
+int            theItem;
+int            theSrcCharIndex;
+int            theDstCharIndex;
+
+
+       if (foundItem != nil)
+       {
+               *foundItem = false;
+       }
+       
+       
+       if (outDstCharPtr != nil && inDstCharPtrMaxLength > 0 && inItemNumber >= 0 && inItemDelimiter != 0)
+       {
+               *outDstCharPtr = 0;
+               
+
+               theSrcCharIndex = 0;
+               
+               for (theItem = 0;theItem < inItemNumber;theItem++)
+               {
+                       while (inSrcCStr[theSrcCharIndex] != inItemDelimiter && inSrcCStr[theSrcCharIndex] != '\0')
+                       {
+                               theSrcCharIndex++;
+                       }
+                       
+                       if (inSrcCStr[theSrcCharIndex] == inItemDelimiter)
+                       {
+                               theSrcCharIndex++;
+                               
+                               if (inTreatMultipleDelimsAsSingleDelim)
+                               {
+                                       while (inSrcCStr[theSrcCharIndex] == inItemDelimiter)
+                                       {
+                                               theSrcCharIndex++;
+                                       }
+                               }
+                       }
+                       
+                       
+                       if (inSrcCStr[theSrcCharIndex] == '\0')
+                       {
+                               goto EXITPOINT;
+                       }
+               }
+               
+
+               if (foundItem != nil)
+               {
+                       *foundItem = true;
+               }
+               
+               
+               theDstCharIndex = 0;
+               
+               for (;;)
+               {
+                       if (inSrcCStr[theSrcCharIndex] == 0 || inSrcCStr[theSrcCharIndex] == inItemDelimiter || theDstCharIndex >= inDstCharPtrMaxLength - 1)
+                       {
+                               outDstCharPtr[theDstCharIndex] = 0;
+                               
+                               break;
+                       }
+                       
+                       outDstCharPtr[theDstCharIndex++] = inSrcCStr[theSrcCharIndex++];
+               }
+       }
+       
+       
+EXITPOINT:
+
+       return;
+}
+
+
+
+OSErr ExtractCStrItemFromCStrIntoNewHandle(const char *inSrcCStr,const char inItemDelimiter,const int inItemNumber,Boolean *foundItem,Handle *outNewHandle,const Boolean inTreatMultipleDelimsAsSingleDelim)
+{
+OSErr  errCode;
+int            theItem;
+int            theSrcCharIndex;
+int            theItemLength;
+
+
+       if (inSrcCStr == nil)
+       {
+               SetErrorMessage("ExtractCStrItemFromCStrIntoNewHandle: Bad parameter, inSrcCStr == nil");
+               errCode = kGenericError;
+               goto EXITPOINT;
+       }
+       
+       if (outNewHandle == nil)
+       {
+               SetErrorMessage("ExtractCStrItemFromCStrIntoNewHandle: Bad parameter, outNewHandle == nil");
+               errCode = kGenericError;
+               goto EXITPOINT;
+       }
+       
+       if (foundItem == nil)
+       {
+               SetErrorMessage("ExtractCStrItemFromCStrIntoNewHandle: Bad parameter, foundItem == nil");
+               errCode = kGenericError;
+               goto EXITPOINT;
+       }
+       
+       if (inItemNumber < 0)
+       {
+               SetErrorMessage("ExtractCStrItemFromCStrIntoNewHandle: Bad parameter, inItemNumber < 0");
+               errCode = kGenericError;
+               goto EXITPOINT;
+       }
+       
+       if (inItemDelimiter == 0)
+       {
+               SetErrorMessage("ExtractCStrItemFromCStrIntoNewHandle: Bad parameter, inItemDelimiter == 0");
+               errCode = kGenericError;
+               goto EXITPOINT;
+       }
+
+
+       *foundItem = false;
+       
+       theSrcCharIndex = 0;
+       
+       for (theItem = 0;theItem < inItemNumber;theItem++)
+       {
+               while (inSrcCStr[theSrcCharIndex] != inItemDelimiter && inSrcCStr[theSrcCharIndex] != '\0')
+               {
+                       theSrcCharIndex++;
+               }
+               
+               if (inSrcCStr[theSrcCharIndex] == inItemDelimiter)
+               {
+                       theSrcCharIndex++;
+                       
+                       if (inTreatMultipleDelimsAsSingleDelim)
+                       {
+                               while (inSrcCStr[theSrcCharIndex] == inItemDelimiter)
+                               {
+                                       theSrcCharIndex++;
+                               }
+                       }
+               }
+               
+               
+               if (inSrcCStr[theSrcCharIndex] == '\0')
+               {
+                       errCode = noErr;
+                       
+                       goto EXITPOINT;
+               }
+       }
+       
+
+       *foundItem = true;
+       
+       
+       for (theItemLength = 0;;theItemLength++)
+       {
+               if (inSrcCStr[theSrcCharIndex + theItemLength] == 0 || inSrcCStr[theSrcCharIndex + theItemLength] == inItemDelimiter)
+               {
+                       break;
+               }
+       }
+       
+
+       *outNewHandle = NewHandle(theItemLength + 1);
+       
+       if (*outNewHandle == nil)
+       {
+               SetErrorMessageAndLongIntAndBail("ExtractCStrItemFromCStrIntoNewHandle: Can't allocate Handle, MemError() = ",MemError());
+       }
+       
+       
+       BlockMove(inSrcCStr + theSrcCharIndex,**outNewHandle,theItemLength);
+       
+       (**outNewHandle)[theItemLength] = 0;
+       
+       errCode = noErr;
+       
+       
+EXITPOINT:
+
+       return(errCode);
+}
+
+
+
+
+
+
+OSErr ExtractFloatFromCStr(const char *inCString,extended80 *outFloat)
+{
+OSErr                          errCode;
+Str255                         theStr255;
+Handle                         theNumberPartsTableHandle = nil;
+long                           theNumberPartsOffset,theNumberPartsLength;
+FormatResultType       theFormatResultType;
+NumberParts                    theNumberPartsTable;
+NumFormatStringRec     theNumFormatStringRec;
+
+
+       if (inCString == nil)
+       {
+               SetErrorMessage("ExtractFloatFromCStr: Bad parameter, inCString == nil");
+               errCode = kGenericError;
+               goto EXITPOINT;
+       }
+
+       if (outFloat == nil)
+       {
+               SetErrorMessage("ExtractFloatFromCStr: Bad parameter, outFloat == nil");
+               errCode = kGenericError;
+               goto EXITPOINT;
+       }
+       
+       
+//     GetIntlResourceTable(smRoman,smNumberPartsTable,&theNumberPartsTableHandle,&theNumberPartsOffset,&theNumberPartsLength);
+
+       GetIntlResourceTable(GetScriptManagerVariable(smSysScript),smNumberPartsTable,&theNumberPartsTableHandle,&theNumberPartsOffset,&theNumberPartsLength);  
+       
+       if (theNumberPartsTableHandle == nil)
+       {
+               SetErrorMessage("ExtractFloatFromCStr: Can't get number parts table for converting string representations to/from numeric representations");
+               errCode = kGenericError;
+               goto EXITPOINT;
+       }
+       
+       if (theNumberPartsLength > sizeof(theNumberPartsTable))
+       {
+               SetErrorMessage("ExtractFloatFromCStr: Number parts table has bad length");
+               errCode = kGenericError;
+               goto EXITPOINT;
+       }
+       
+
+       BlockMove(*theNumberPartsTableHandle + theNumberPartsOffset,&theNumberPartsTable,theNumberPartsLength);
+       
+       
+       theFormatResultType = (FormatResultType) StringToFormatRec(kNumberFormatString,&theNumberPartsTable,&theNumFormatStringRec);
+       
+       if (theFormatResultType != fFormatOK)
+       {
+               SetErrorMessage("ExtractFloatFromCStr: StringToFormatRec() != fFormatOK");
+               errCode = kGenericError;
+               goto EXITPOINT;
+       }
+
+       
+       CopyCStrToPStr(inCString,theStr255,sizeof(theStr255));
+
+
+       theFormatResultType = (FormatResultType) StringToExtended(theStr255,&theNumFormatStringRec,&theNumberPartsTable,outFloat);
+       
+       if (theFormatResultType != fFormatOK && theFormatResultType != fBestGuess)
+       {
+               SetErrorMessageAndLongIntAndBail("ExtractFloatFromCStr: StringToExtended() = ",theFormatResultType);
+       }
+
+       
+       errCode = noErr;
+       
+
+EXITPOINT:
+       
+       return(errCode);
+}
+
+
+
+OSErr CopyFloatToCStr(const extended80 *theFloat,char *theCStr,const int maxCStrLength,const int inMaxNumIntDigits,const int inMaxNumFractDigits)
+{
+OSErr                          errCode;
+Str255                         theStr255;
+Handle                         theNumberPartsTableHandle = nil;
+long                           theNumberPartsOffset,theNumberPartsLength;
+FormatResultType       theFormatResultType;
+NumberParts                    theNumberPartsTable;
+NumFormatStringRec     theNumFormatStringRec;
+
+
+       if (theCStr == nil)
+       {
+               SetErrorMessage("CopyFloatToCStr: Bad parameter, theCStr == nil");
+               errCode = kGenericError;
+               goto EXITPOINT;
+       }
+
+       if (theFloat == nil)
+       {
+               SetErrorMessage("CopyFloatToCStr: Bad parameter, theFloat == nil");
+               errCode = kGenericError;
+               goto EXITPOINT;
+       }
+       
+
+//     GetIntlResourceTable(smRoman,smNumberPartsTable,&theNumberPartsTableHandle,&theNumberPartsOffset,&theNumberPartsLength);
+
+       GetIntlResourceTable(GetScriptManagerVariable(smSysScript),smNumberPartsTable,&theNumberPartsTableHandle,&theNumberPartsOffset,&theNumberPartsLength);  
+       
+       if (theNumberPartsTableHandle == nil)
+       {
+               SetErrorMessage("CopyFloatToCStr: Can't get number parts table for converting string representations to/from numeric representations");
+               errCode = kGenericError;
+               goto EXITPOINT;
+       }
+       
+       if (theNumberPartsLength > sizeof(theNumberPartsTable))
+       {
+               SetErrorMessage("CopyFloatToCStr: Number parts table has bad length");
+               errCode = kGenericError;
+               goto EXITPOINT;
+       }
+       
+       
+       BlockMove(*theNumberPartsTableHandle + theNumberPartsOffset,&theNumberPartsTable,theNumberPartsLength);
+       
+       
+       if (inMaxNumIntDigits >= 0 || inMaxNumFractDigits >= 0)
+       {
+       char    numberFormat[64];
+       int             numberFormatLength = 0;
+       
+               for (int i = 0;i < inMaxNumIntDigits && numberFormatLength < sizeof(numberFormat) - 1;i++)
+               {
+                       numberFormat[numberFormatLength++] = '0';
+               }
+               
+               if (inMaxNumFractDigits > 0 && numberFormatLength < sizeof(numberFormat) - 1)
+               {
+                       numberFormat[numberFormatLength++] = '.';
+                       
+                       for (int i = 0;i < inMaxNumFractDigits && numberFormatLength < sizeof(numberFormat) - 1;i++)
+                       {
+                               numberFormat[numberFormatLength++] = '0';
+                       }
+               }
+
+               
+               if (numberFormatLength < sizeof(numberFormat) - 1)
+               {
+                       numberFormat[numberFormatLength++] = ';';
+               }
+               
+               if (numberFormatLength < sizeof(numberFormat) - 1)
+               {
+                       numberFormat[numberFormatLength++] = '-';
+               }
+               
+
+               for (int i = 0;i < inMaxNumIntDigits && numberFormatLength < sizeof(numberFormat) - 1;i++)
+               {
+                       numberFormat[numberFormatLength++] = '0';
+               }
+               
+               if (inMaxNumFractDigits > 0 && numberFormatLength < sizeof(numberFormat) - 1)
+               {
+                       numberFormat[numberFormatLength++] = '.';
+                       
+                       for (int i = 0;i < inMaxNumFractDigits && numberFormatLength < sizeof(numberFormat) - 1;i++)
+                       {
+                               numberFormat[numberFormatLength++] = '0';
+                       }
+               }
+               
+               numberFormat[numberFormatLength] = '\0';
+
+
+       Str255  tempStr255;
+       
+               CopyCStrToPStr(numberFormat,tempStr255,sizeof(tempStr255));
+               
+               theFormatResultType = (FormatResultType) StringToFormatRec(tempStr255,&theNumberPartsTable,&theNumFormatStringRec);
+       }
+       
+       else
+       {
+               theFormatResultType = (FormatResultType) StringToFormatRec(kNumberFormatString,&theNumberPartsTable,&theNumFormatStringRec);
+       }
+       
+       if (theFormatResultType != fFormatOK)
+       {
+               SetErrorMessage("CopyFloatToCStr: StringToFormatRec() != fFormatOK");
+               errCode = kGenericError;
+               goto EXITPOINT;
+       }
+
+
+       theFormatResultType = (FormatResultType) ExtendedToString(theFloat,&theNumFormatStringRec,&theNumberPartsTable,theStr255);
+       
+       if (theFormatResultType != fFormatOK)
+       {
+               SetErrorMessage("CopyFloatToCStr: ExtendedToString() != fFormatOK");
+               errCode = kGenericError;
+               goto EXITPOINT;
+       }
+
+       
+       CopyPStrToCStr(theStr255,theCStr,maxCStrLength);
+       
+       errCode = noErr;
+       
+
+EXITPOINT:
+       
+       return(errCode);
+}
+
+
+
+
+
+void SkipWhiteSpace(char **ioSrcCharPtr,const Boolean inStopAtEOL)
+{
+       if (ioSrcCharPtr != nil && *ioSrcCharPtr != nil)
+       {
+               if (inStopAtEOL)
+               {
+                       while ((**ioSrcCharPtr == ' ' || **ioSrcCharPtr == '\t') && **ioSrcCharPtr != '\r' && **ioSrcCharPtr != '\n')
+                       {
+                               *ioSrcCharPtr++;
+                       }
+               }
+               
+               else
+               {
+                       while (**ioSrcCharPtr == ' ' || **ioSrcCharPtr == '\t')
+                       {
+                               *ioSrcCharPtr++;
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/MacOS/GetHTTPS.src/CPStringUtils.hpp b/MacOS/GetHTTPS.src/CPStringUtils.hpp
new file mode 100644 (file)
index 0000000..5045c41
--- /dev/null
@@ -0,0 +1,104 @@
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void CopyPStrToCStr(const unsigned char *thePStr,char *theCStr,const int maxCStrLength);
+void CopyPStrToPStr(const unsigned char *theSrcPStr,unsigned char *theDstPStr,const int maxDstStrLength);
+void CopyCStrToCStr(const char *theSrcCStr,char *theDstCStr,const int maxDstStrLength);
+void CopyCStrToPStr(const char *theSrcCStr,unsigned char *theDstPStr,const int maxDstStrLength);
+void ConcatPStrToCStr(const unsigned char *thePStr,char *theCStr,const int maxCStrLength);
+void ConcatPStrToPStr(const unsigned char *theSrcPStr,unsigned char *theDstPStr,const int maxDstStrLength);
+void ConcatCStrToPStr(const char *theSrcCStr,unsigned char *theDstPStr,const int maxDstStrLength);
+void ConcatCStrToCStr(const char *theSrcCStr,char *theDstCStr,const int maxCStrLength);
+
+void ConcatCharToCStr(const char theChar,char *theDstCStr,const int maxCStrLength);
+void ConcatCharToPStr(const char theChar,unsigned char *theDstPStr,const int maxPStrLength);
+
+int ComparePStrs(const unsigned char *theFirstPStr,const unsigned char *theSecondPStr,const Boolean ignoreCase = true);
+int CompareCStrs(const char *theFirstCStr,const char *theSecondCStr,const Boolean ignoreCase = true);
+int CompareCStrToPStr(const char *theCStr,const unsigned char *thePStr,const Boolean ignoreCase = true);
+
+Boolean CStrsAreEqual(const char *theFirstCStr,const char *theSecondCStr,const Boolean ignoreCase = true);
+Boolean PStrsAreEqual(const unsigned char *theFirstCStr,const unsigned char *theSecondCStr,const Boolean ignoreCase = true);
+
+void CopyLongIntToCStr(const long theNum,char *theCStr,const int maxCStrLength,const int numDigits = -1);
+void CopyUnsignedLongIntToCStr(const unsigned long theNum,char *theCStr,const int maxCStrLength);
+void ConcatLongIntToCStr(const long theNum,char *theCStr,const int maxCStrLength,const int numDigits = -1);
+void CopyCStrAndConcatLongIntToCStr(const char *theSrcCStr,const long theNum,char *theDstCStr,const int maxDstStrLength);
+
+void CopyLongIntToPStr(const long theNum,unsigned char *thePStr,const int maxPStrLength,const int numDigits = -1);
+void ConcatLongIntToPStr(const long theNum,unsigned char *thePStr,const int maxPStrLength,const int numDigits = -1);
+
+long CStrLength(const char *theCString);
+long PStrLength(const unsigned char *thePString);
+
+OSErr CopyCStrToExistingHandle(const char *theCString,Handle theHandle);
+OSErr CopyLongIntToExistingHandle(const long inTheLongInt,Handle theHandle);
+
+OSErr CopyCStrToNewHandle(const char *theCString,Handle *theHandle);
+OSErr CopyPStrToNewHandle(const unsigned char *thePString,Handle *theHandle);
+OSErr CopyLongIntToNewHandle(const long inTheLongInt,Handle *theHandle);
+
+OSErr AppendCStrToHandle(const char *theCString,Handle theHandle,long *currentLength = nil,long *maxLength = nil);
+OSErr AppendCharsToHandle(const char *theChars,const int numChars,Handle theHandle,long *currentLength = nil,long *maxLength = nil);
+OSErr AppendPStrToHandle(const unsigned char *thePString,Handle theHandle,long *currentLength = nil);
+OSErr AppendLongIntToHandle(const long inTheLongInt,Handle theHandle,long *currentLength = nil);
+
+void ZeroMem(void *theMemPtr,const unsigned long numBytes);
+
+char *FindCharInCStr(const char theChar,const char *theCString);
+long FindCharOffsetInCStr(const char theChar,const char *theCString,const Boolean inIgnoreCase = false);
+long FindCStrOffsetInCStr(const char *theCSubstring,const char *theCString,const Boolean inIgnoreCase = false);
+
+void CopyCSubstrToCStr(const char *theSrcCStr,const int maxCharsToCopy,char *theDstCStr,const int maxDstStrLength);
+void CopyCSubstrToPStr(const char *theSrcCStr,const int maxCharsToCopy,unsigned char *theDstPStr,const int maxDstStrLength);
+
+void InsertCStrIntoCStr(const char *theSrcCStr,const int theInsertionOffset,char *theDstCStr,const int maxDstStrLength);
+void InsertPStrIntoCStr(const unsigned char *theSrcPStr,const int theInsertionOffset,char *theDstCStr,const int maxDstStrLength);
+OSErr InsertCStrIntoHandle(const char *theCString,Handle theHandle,const long inInsertOffset);
+
+void CopyCStrAndInsertCStrIntoCStr(const char *theSrcCStr,const char *theInsertCStr,char *theDstCStr,const int maxDstStrLength);
+
+void CopyCStrAndInsertCStrsLongIntsIntoCStr(const char *theSrcCStr,const char **theInsertCStrs,const long *theLongInts,char *theDstCStr,const int maxDstStrLength);
+
+void CopyCStrAndInsert1LongIntIntoCStr(const char *theSrcCStr,const long theNum,char *theDstCStr,const int maxDstStrLength);
+void CopyCStrAndInsert2LongIntsIntoCStr(const char *theSrcCStr,const long long1,const long long2,char *theDstCStr,const int maxDstStrLength);
+void CopyCStrAndInsert3LongIntsIntoCStr(const char *theSrcCStr,const long long1,const long long2,const long long3,char *theDstCStr,const int maxDstStrLength);
+
+void CopyCStrAndInsertCStrLongIntIntoCStr(const char *theSrcCStr,const char *theInsertCStr,const long theNum,char *theDstCStr,const int maxDstStrLength);
+OSErr CopyCStrAndInsertCStrLongIntIntoHandle(const char *theSrcCStr,const char *theInsertCStr,const long theNum,Handle *theHandle);
+
+
+OSErr CopyIndexedWordToCStr(char *theSrcCStr,int whichWord,char *theDstCStr,int maxDstCStrLength);
+OSErr CopyIndexedWordToNewHandle(char *theSrcCStr,int whichWord,Handle *outTheHandle);
+
+OSErr CopyIndexedLineToCStr(const char *theSrcCStr,int inWhichLine,int *lineEndIndex,Boolean *gotLastLine,char *theDstCStr,const int maxDstCStrLength);
+OSErr CopyIndexedLineToNewHandle(const char *theSrcCStr,int inWhichLine,Handle *outNewHandle);
+
+OSErr ExtractIntFromCStr(const char *theSrcCStr,int *outInt,Boolean skipLeadingSpaces = true);
+OSErr ExtractIntFromPStr(const unsigned char *theSrcPStr,int *outInt,Boolean skipLeadingSpaces = true);
+
+
+void ConvertCStrToUpperCase(char *theSrcCStr);
+
+
+int CountOccurencesOfCharInCStr(const char inChar,const char *inSrcCStr);
+int CountWordsInCStr(const char *inSrcCStr);
+
+OSErr CountDigits(const char *inCStr,int *outNumIntegerDigits,int *outNumFractDigits);
+
+void ExtractCStrItemFromCStr(const char *inSrcCStr,const char inItemDelimiter,const int inItemNumber,Boolean *foundItem,char *outDstCharPtr,const int inDstCharPtrMaxLength,const Boolean inTreatMultipleDelimsAsSingleDelim = false);
+OSErr ExtractCStrItemFromCStrIntoNewHandle(const char *inSrcCStr,const char inItemDelimiter,const int inItemNumber,Boolean *foundItem,Handle *outNewHandle,const Boolean inTreatMultipleDelimsAsSingleDelim = false);
+
+
+OSErr ExtractFloatFromCStr(const char *inCString,extended80 *outFloat);
+OSErr CopyFloatToCStr(const extended80 *theFloat,char *theCStr,const int maxCStrLength,const int inMaxNumIntDigits = -1,const int inMaxNumFractDigits = -1);
+
+void SkipWhiteSpace(char **ioSrcCharPtr,const Boolean inStopAtEOL = false);
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/MacOS/GetHTTPS.src/ErrorHandling.cpp b/MacOS/GetHTTPS.src/ErrorHandling.cpp
new file mode 100644 (file)
index 0000000..07a32de
--- /dev/null
@@ -0,0 +1,170 @@
+/* ====================================================================
+ * Copyright (c) 1998-1999 The OpenSSL Project.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
+ *
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
+ *    endorse or promote products derived from this software without
+ *    prior written permission. For written permission, please contact
+ *    openssl-core@openssl.org.
+ *
+ * 5. Products derived from this software may not be called "OpenSSL"
+ *    nor may "OpenSSL" appear in their names without prior written
+ *    permission of the OpenSSL Project.
+ *
+ * 6. Redistributions of any form whatsoever must retain the following
+ *    acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This product includes cryptographic software written by Eric Young
+ * (eay@cryptsoft.com).  This product includes software written by Tim
+ * Hudson (tjh@cryptsoft.com).
+ *
+ */
+ #include "ErrorHandling.hpp"
+#include "CPStringUtils.hpp"
+
+#ifdef __EXCEPTIONS_ENABLED__
+       #include "CMyException.hpp"
+#endif
+
+
+static char                                    gErrorMessageBuffer[512];
+
+char                                           *gErrorMessage = gErrorMessageBuffer;
+int                                                    gErrorMessageMaxLength = sizeof(gErrorMessageBuffer);
+
+
+
+void SetErrorMessage(const char *theErrorMessage)
+{
+       if (theErrorMessage != nil)
+       {
+               CopyCStrToCStr(theErrorMessage,gErrorMessage,gErrorMessageMaxLength);
+       }
+}
+
+
+void SetErrorMessageAndAppendLongInt(const char *theErrorMessage,const long theLongInt)
+{
+       if (theErrorMessage != nil)
+       {
+               CopyCStrAndConcatLongIntToCStr(theErrorMessage,theLongInt,gErrorMessage,gErrorMessageMaxLength);
+       }
+}
+
+void SetErrorMessageAndCStrAndLongInt(const char *theErrorMessage,const char * theCStr,const long theLongInt)
+{
+       if (theErrorMessage != nil)
+       {
+               CopyCStrAndInsertCStrLongIntIntoCStr(theErrorMessage,theCStr,theLongInt,gErrorMessage,gErrorMessageMaxLength);
+       }
+
+}
+
+void SetErrorMessageAndCStr(const char *theErrorMessage,const char * theCStr)
+{
+       if (theErrorMessage != nil)
+       {
+               CopyCStrAndInsertCStrLongIntIntoCStr(theErrorMessage,theCStr,-1,gErrorMessage,gErrorMessageMaxLength);
+       }
+}
+
+
+void AppendCStrToErrorMessage(const char *theErrorMessage)
+{
+       if (theErrorMessage != nil)
+       {
+               ConcatCStrToCStr(theErrorMessage,gErrorMessage,gErrorMessageMaxLength);
+       }
+}
+
+
+void AppendLongIntToErrorMessage(const long theLongInt)
+{
+       ConcatLongIntToCStr(theLongInt,gErrorMessage,gErrorMessageMaxLength);
+}
+
+
+
+char *GetErrorMessage(void)
+{
+       return gErrorMessage;
+}
+
+
+OSErr GetErrorMessageInNewHandle(Handle *inoutHandle)
+{
+OSErr          errCode;
+
+
+       errCode = CopyCStrToNewHandle(gErrorMessage,inoutHandle);
+       
+       return(errCode);
+}
+
+
+OSErr GetErrorMessageInExistingHandle(Handle inoutHandle)
+{
+OSErr          errCode;
+
+
+       errCode = CopyCStrToExistingHandle(gErrorMessage,inoutHandle);
+       
+       return(errCode);
+}
+
+
+
+OSErr AppendErrorMessageToHandle(Handle inoutHandle)
+{
+OSErr          errCode;
+
+
+       errCode = AppendCStrToHandle(gErrorMessage,inoutHandle,nil);
+       
+       return(errCode);
+}
+
+
+#ifdef __EXCEPTIONS_ENABLED__
+
+void ThrowErrorMessageException(void)
+{
+       ThrowDescriptiveException(gErrorMessage);
+}
+
+#endif
\ No newline at end of file
diff --git a/MacOS/GetHTTPS.src/ErrorHandling.hpp b/MacOS/GetHTTPS.src/ErrorHandling.hpp
new file mode 100644 (file)
index 0000000..3036df7
--- /dev/null
@@ -0,0 +1,147 @@
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef kGenericError
+       #define kGenericError           -1
+#endif
+
+extern char    *gErrorMessage;
+
+
+void SetErrorMessage(const char *theErrorMessage);
+void SetErrorMessageAndAppendLongInt(const char *theErrorMessage,const long theLongInt);
+void SetErrorMessageAndCStrAndLongInt(const char *theErrorMessage,const char * theCStr,const long theLongInt);
+void SetErrorMessageAndCStr(const char *theErrorMessage,const char * theCStr);
+void AppendCStrToErrorMessage(const char *theErrorMessage);
+void AppendLongIntToErrorMessage(const long theLongInt);
+
+
+char *GetErrorMessage(void);
+OSErr GetErrorMessageInNewHandle(Handle *inoutHandle);
+OSErr GetErrorMessageInExistingHandle(Handle inoutHandle);
+OSErr AppendErrorMessageToHandle(Handle inoutHandle);
+
+
+#ifdef __EXCEPTIONS_ENABLED__
+       void ThrowErrorMessageException(void);
+#endif
+
+
+
+//     A bunch of evil macros that would be uneccessary if I were always using C++ !
+
+#define SetErrorMessageAndBailIfNil(theArg,theMessage)                                                         \
+{                                                                                                                                                                      \
+       if (theArg == nil)                                                                                                                              \
+       {                                                                                                                                                               \
+               SetErrorMessage(theMessage);                                                                                            \
+               errCode = kGenericError;                                                                                                        \
+               goto EXITPOINT;                                                                                                                         \
+       }                                                                                                                                                               \
+}
+
+
+#define SetErrorMessageAndBail(theMessage)                                                                                     \
+{                                                                                                                                                                      \
+               SetErrorMessage(theMessage);                                                                                            \
+               errCode = kGenericError;                                                                                                        \
+               goto EXITPOINT;                                                                                                                         \
+}
+
+
+#define SetErrorMessageAndLongIntAndBail(theMessage,theLongInt)                                                \
+{                                                                                                                                                                      \
+               SetErrorMessageAndAppendLongInt(theMessage,theLongInt);                                         \
+               errCode = kGenericError;                                                                                                        \
+               goto EXITPOINT;                                                                                                                         \
+}
+
+
+#define SetErrorMessageAndLongIntAndBailIfError(theErrCode,theMessage,theLongInt)      \
+{                                                                                                                                                                      \
+       if (theErrCode != noErr)                                                                                                                \
+       {                                                                                                                                                               \
+               SetErrorMessageAndAppendLongInt(theMessage,theLongInt);                                         \
+               errCode = theErrCode;                                                                                                           \
+               goto EXITPOINT;                                                                                                                         \
+       }                                                                                                                                                               \
+}
+
+
+#define SetErrorMessageCStrLongIntAndBailIfError(theErrCode,theMessage,theCStr,theLongInt)     \
+{                                                                                                                                                                      \
+       if (theErrCode != noErr)                                                                                                                \
+       {                                                                                                                                                               \
+               SetErrorMessageAndCStrAndLongInt(theMessage,theCStr,theLongInt);                        \
+               errCode = theErrCode;                                                                                                           \
+               goto EXITPOINT;                                                                                                                         \
+       }                                                                                                                                                               \
+}
+
+
+#define SetErrorMessageAndCStrAndBail(theMessage,theCStr)                                                      \
+{                                                                                                                                                                      \
+       SetErrorMessageAndCStr(theMessage,theCStr);                                                                             \
+       errCode = kGenericError;                                                                                                                \
+       goto EXITPOINT;                                                                                                                                 \
+}
+
+
+#define SetErrorMessageAndBailIfError(theErrCode,theMessage)                                           \
+{                                                                                                                                                                      \
+       if (theErrCode != noErr)                                                                                                                \
+       {                                                                                                                                                               \
+               SetErrorMessage(theMessage);                                                                                            \
+               errCode = theErrCode;                                                                                                           \
+               goto EXITPOINT;                                                                                                                         \
+       }                                                                                                                                                               \
+}
+
+
+#define SetErrorMessageAndLongIntAndBailIfNil(theArg,theMessage,theLongInt)                    \
+{                                                                                                                                                                      \
+       if (theArg == nil)                                                                                                                              \
+       {                                                                                                                                                               \
+               SetErrorMessageAndAppendLongInt(theMessage,theLongInt);                                         \
+               errCode = kGenericError;                                                                                                        \
+               goto EXITPOINT;                                                                                                                         \
+       }                                                                                                                                                               \
+}
+
+
+#define BailIfError(theErrCode)                                                                                                                \
+{                                                                                                                                                                      \
+       if ((theErrCode) != noErr)                                                                                                              \
+       {                                                                                                                                                               \
+               goto EXITPOINT;                                                                                                                         \
+       }                                                                                                                                                               \
+}
+
+
+#define SetErrCodeAndBail(theErrCode)                                                                                          \
+{                                                                                                                                                                      \
+       errCode = theErrCode;                                                                                                                   \
+                                                                                                                                                                       \
+       goto EXITPOINT;                                                                                                                                 \
+}
+
+
+#define SetErrorCodeAndMessageAndBail(theErrCode,theMessage)                                           \
+{                                                                                                                                                                      \
+       SetErrorMessage(theMessage);                                                                                                    \
+       errCode = theErrCode;                                                                                                                   \
+       goto EXITPOINT;                                                                                                                                 \
+}
+
+
+#define BailNow()                                                                                                                                      \
+{                                                                                                                                                                      \
+       errCode = kGenericError;                                                                                                                \
+       goto EXITPOINT;                                                                                                                                 \
+}
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/MacOS/GetHTTPS.src/GetHTTPS.cpp b/MacOS/GetHTTPS.src/GetHTTPS.cpp
new file mode 100644 (file)
index 0000000..8e02333
--- /dev/null
@@ -0,0 +1,206 @@
+/*
+ *     An demo illustrating how to retrieve a URI from a secure HTTP server.
+ *
+ *     Author:         Roy Wood
+ *     Date:           September 7, 1999
+ *     Comments:       This relies heavily on my MacSockets library.
+ *                             This project is also set up so that it expects the OpenSSL source folder (0.9.4 as I write this)
+ *                             to live in a folder called "OpenSSL-0.9.4" in this project's parent folder.  For example:
+ *
+ *                                     Macintosh HD:
+ *                                             Development:
+ *                                                     OpenSSL-0.9.4:
+ *                                                             (OpenSSL sources here)
+ *                                                     OpenSSL Example:
+ *                                                             (OpenSSL example junk here)
+ *
+ *
+ *                             Also-- before attempting to compile this, make sure the aliases in "OpenSSL-0.9.4:include:openssl" 
+ *                             are installed!  Use the AppleScript applet in the "openssl-0.9.4" folder to do this!
+ */
+
+
+//     Include some funky libs I've developed over time
+
+#include "CPStringUtils.hpp"
+#include "ErrorHandling.hpp"
+#include "MacSocket.h"
+
+
+//     We use the OpenSSL implementation of SSL....
+//     This was a lot of work to finally get going, though you wouldn't know it by the results!
+
+#include <openssl/ssl.h>
+#include <openssl/err.h>
+
+
+
+//     Let's try grabbing some data from here:
+
+#define kHTTPS_DNS             "www.apache-ssl.org"
+#define kHTTPS_Port            443
+#define kHTTPS_URI             "/"
+
+
+//     Forward-declare this
+
+OSErr MyMacSocket_IdleWaitCallback(void *inUserRefPtr);
+
+
+
+
+
+//     My idle-wait callback.  Doesn't do much, does it?  Silly cooperative multitasking.
+
+OSErr MyMacSocket_IdleWaitCallback(void *inUserRefPtr)
+{
+#pragma unused(inUserRefPtr)
+
+EventRecord            theEvent;
+
+       ::EventAvail(everyEvent,&theEvent);
+
+       return(noErr);
+}
+
+
+
+//     Finally!
+
+void main(void)
+{
+OSErr                          errCode;
+int                                    theSocket = -1;
+int                                    theTimeout = 30;
+
+SSL_CTX                                *ssl_ctx = nil;
+SSL                                    *ssl = nil;
+
+char                           tempString[256];
+
+       
+       printf("OpenSSL Demo by Roy Wood, roy@centricsystems.ca\n\n");
+       
+       BailIfError(errCode = MacSocket_Startup());
+
+
+
+       //      Create a socket-like object
+       
+       BailIfError(errCode = MacSocket_socket(&theSocket,false,theTimeout * 60,MyMacSocket_IdleWaitCallback,nil));
+
+       
+       //      Set up the connect string and try to connect
+       
+       CopyCStrAndInsertCStrLongIntIntoCStr("%s:%ld",kHTTPS_DNS,kHTTPS_Port,tempString,sizeof(tempString));
+       
+       printf("Connecting to %s....\n",tempString);
+
+       BailIfError(errCode = MacSocket_connect(theSocket,tempString));
+       
+       
+       //      Init SSL stuff
+       
+       SSL_load_error_strings();
+       
+       SSLeay_add_ssl_algorithms();
+       
+       
+       //      Pick the SSL method
+       
+//     ssl_ctx = SSL_CTX_new(SSLv2_client_method());
+       ssl_ctx = SSL_CTX_new(SSLv23_client_method());
+//     ssl_ctx = SSL_CTX_new(SSLv3_client_method());
+                       
+
+       //      Create an SSL thingey and try to negotiate the connection
+       
+       ssl = SSL_new(ssl_ctx);
+       
+       SSL_set_fd(ssl,theSocket);
+       
+       errCode = SSL_connect(ssl);
+       
+       if (errCode < 0)
+       {
+               SetErrorMessageAndLongIntAndBail("OpenSSL: Can't initiate SSL connection, SSL_connect() = ",errCode);
+       }
+       
+       //      Request the URI from the host
+       
+       CopyCStrToCStr("GET ",tempString,sizeof(tempString));
+       ConcatCStrToCStr(kHTTPS_URI,tempString,sizeof(tempString));
+       ConcatCStrToCStr(" HTTP/1.0\r\n\r\n",tempString,sizeof(tempString));
+
+       
+       errCode = SSL_write(ssl,tempString,CStrLength(tempString));
+       
+       if (errCode < 0)
+       {
+               SetErrorMessageAndLongIntAndBail("OpenSSL: Error writing data via ssl, SSL_write() = ",errCode);
+       }
+       
+
+       for (;;)
+       {
+       char    tempString[256];
+       int             bytesRead;
+               
+
+               //      Read some bytes and dump them to the console
+               
+               bytesRead = SSL_read(ssl,tempString,sizeof(tempString) - 1);
+               
+               if (bytesRead == 0 && MacSocket_RemoteEndIsClosing(theSocket))
+               {
+                       break;
+               }
+               
+               else if (bytesRead < 0)
+               {
+                       SetErrorMessageAndLongIntAndBail("OpenSSL: Error reading data via ssl, SSL_read() = ",bytesRead);
+               }
+               
+               
+               tempString[bytesRead] = '\0';
+               
+               printf(tempString);
+       }
+       
+       printf("\n\n\n");
+       
+       //      All done!
+       
+       errCode = noErr;
+       
+       
+EXITPOINT:
+
+       //      Clean up and go home
+       
+       if (theSocket >= 0)
+       {
+               MacSocket_close(theSocket);
+       }
+       
+       if (ssl != nil)
+       {
+               SSL_free(ssl);
+       }
+       
+       if (ssl_ctx != nil)
+       {
+               SSL_CTX_free(ssl_ctx);
+       }
+       
+       
+       if (errCode != noErr)
+       {
+               printf("An error occurred:\n");
+               
+               printf(GetErrorMessage());
+       }
+       
+       
+       MacSocket_Shutdown();
+}
diff --git a/MacOS/GetHTTPS.src/MacSocket.cpp b/MacOS/GetHTTPS.src/MacSocket.cpp
new file mode 100644 (file)
index 0000000..2726136
--- /dev/null
@@ -0,0 +1,1607 @@
+/*
+ *     A simple socket-like package.  
+ *     This could undoubtedly be improved, since it does polling and busy-waiting.  
+ *     At least it uses asynch I/O and implements timeouts!
+ *
+ *     Other funkiness includes the use of my own (possibly brain-damaged) error-handling infrastructure.
+ *
+ *     -Roy Wood (roy@centricsystems.ca)
+ *
+ */
+
+
+/* ====================================================================
+ * Copyright (c) 1998-1999 The OpenSSL Project.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
+ *
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
+ *    endorse or promote products derived from this software without
+ *    prior written permission. For written permission, please contact
+ *    openssl-core@openssl.org.
+ *
+ * 5. Products derived from this software may not be called "OpenSSL"
+ *    nor may "OpenSSL" appear in their names without prior written
+ *    permission of the OpenSSL Project.
+ *
+ * 6. Redistributions of any form whatsoever must retain the following
+ *    acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This product includes cryptographic software written by Eric Young
+ * (eay@cryptsoft.com).  This product includes software written by Tim
+ * Hudson (tjh@cryptsoft.com).
+ *
+ */
+
+
+
+
+#include "MacSocket.h"
+
+#include <Threads.h>
+
+#include <OpenTransport.h>
+#include <OpenTpTInternet.h>
+#include <OpenTptClient.h>
+
+
+
+#include "CPStringUtils.hpp"
+#include "ErrorHandling.hpp"
+
+
+//     #define MACSOCKET_DEBUG         1
+
+#ifdef MACSOCKET_DEBUG
+       #include <stdio.h>
+#endif
+
+
+
+extern int errno;
+
+
+#define kMaxNumSockets                 4
+
+
+struct SocketStruct
+{
+       Boolean                                         mIsInUse;
+
+       Boolean                                         mEndpointIsBound;
+
+       Boolean                                         mLocalEndIsConnected;
+       Boolean                                         mRemoteEndIsConnected;
+
+       Boolean                                         mReceivedTOpenComplete;
+       Boolean                                         mReceivedTBindComplete;
+       Boolean                                         mReceivedTConnect;
+       Boolean                                         mReceivedTListen;
+       Boolean                                         mReceivedTPassCon;
+       Boolean                                         mReceivedTDisconnect;
+       Boolean                                         mReceivedTOrdRel;
+       Boolean                                         mReceivedTDisconnectComplete;
+       
+       long                                            mTimeoutTicks;
+       long                                            mOperationStartTicks;
+       
+       MacSocket_IdleWaitCallback      mIdleWaitCallback;
+       void                                            *mUserRefPtr;
+       
+       OTEventCode                                     mExpectedCode;
+       OTResult                                        mAsyncOperationResult;
+       
+       EndpointRef                                     mEndPointRef;
+       TBind                                           *mBindRequestedAddrInfo;
+       TBind                                           *mAssignedAddrInfo;
+       TCall                                           *mRemoteAddrInfo;
+       
+       Boolean                                         mReadyToReadData;
+       Boolean                                         mReadyToWriteData;
+       
+       Ptr                                                     mReadBuffer;
+       Ptr                                                     mWriteBuffer;
+       
+       int                                                     mLastError;
+       char                                            mErrMessage[256];
+};
+
+typedef struct SocketStruct    SocketStruct;
+
+
+static SocketStruct                    sSockets[kMaxNumSockets];
+static Boolean                         sSocketsSetup = false;
+
+
+
+
+static OSErr MyBusyWait(SocketStruct *ioSocket,Boolean returnImmediatelyOnError,OTResult *outOTResult,Boolean *inAsyncOperationCompleteFlag);
+
+static pascal void OTNonYieldingNotifier(void *contextPtr,OTEventCode code,OTResult result,void *cookie);
+
+static Boolean SocketIndexIsValid(const int inSocketNum);
+
+static void InitSocket(SocketStruct *ioSocket);
+
+static void PrepareForAsyncOperation(SocketStruct *ioSocket,const OTEventCode inExpectedCode);
+
+static Boolean TimeoutElapsed(const SocketStruct *inSocket);
+
+static OSStatus NegotiateIPReuseAddrOption(EndpointRef inEndpoint,const Boolean inEnableReuseIP);
+
+
+
+void MacSocket_GetSocketErrorInfo(const int inSocketNum,int *outSocketErrCode,char *outSocketErrString,const int inSocketErrStringMaxLength)
+{
+       if (outSocketErrCode != nil)
+       {
+               *outSocketErrCode = -1;
+       }
+       
+       if (outSocketErrString != nil)
+       {
+               CopyCStrToCStr("",outSocketErrString,inSocketErrStringMaxLength);
+       }
+       
+       
+       if (SocketIndexIsValid(inSocketNum))
+       {
+       SocketStruct    *theSocketStruct = &(sSockets[inSocketNum]);
+       
+               
+               if (outSocketErrCode != nil)
+               {
+                       *outSocketErrCode = theSocketStruct->mLastError;
+               }
+
+               if (outSocketErrString != nil)
+               {
+                       CopyCStrToCStr(theSocketStruct->mErrMessage,outSocketErrString,inSocketErrStringMaxLength);
+               }
+       }
+}
+
+
+void MacSocket_SetUserRefPtr(const int inSocketNum,void *inNewRefPtr)
+{
+       if (SocketIndexIsValid(inSocketNum))
+       {
+       SocketStruct    *theSocketStruct = &(sSockets[inSocketNum]);
+
+               theSocketStruct->mUserRefPtr = inNewRefPtr;
+       }
+}
+
+
+
+void MacSocket_GetLocalIPAndPort(const int inSocketNum,char *outIPAndPort,const int inIPAndPortLength)
+{
+       if (outIPAndPort != nil && SocketIndexIsValid(inSocketNum))
+       {
+       char                    tempString[256];
+       SocketStruct    *theSocketStruct = &(sSockets[inSocketNum]);
+       
+               
+               CopyCStrToCStr("",tempString,sizeof(tempString));
+
+               if (theSocketStruct->mAssignedAddrInfo != nil)
+               {
+               InetAddress             *theInetAddress = (InetAddress *) theSocketStruct->mAssignedAddrInfo->addr.buf;
+               InetHost                theInetHost = theInetAddress->fHost;
+                       
+                       if (theInetHost == 0)
+                       {
+                       InetInterfaceInfo       theInetInterfaceInfo;
+                               
+                               if (::OTInetGetInterfaceInfo(&theInetInterfaceInfo,kDefaultInetInterface) == noErr)
+                               {
+                                       theInetHost = theInetInterfaceInfo.fAddress;
+                               }
+                       }
+               
+                       ::OTInetHostToString(theInetHost,tempString);
+                       
+                       ConcatCStrToCStr(":",tempString,sizeof(tempString));
+                       ConcatLongIntToCStr(theInetAddress->fPort,tempString,sizeof(tempString));
+               }
+               
+               CopyCStrToCStr(tempString,outIPAndPort,inIPAndPortLength);
+       }
+}
+
+
+
+void MacSocket_GetRemoteIPAndPort(const int inSocketNum,char *outIPAndPort,const int inIPAndPortLength)
+{
+       if (outIPAndPort != nil && SocketIndexIsValid(inSocketNum))
+       {
+       char                    tempString[256];
+       SocketStruct    *theSocketStruct = &(sSockets[inSocketNum]);
+       
+               
+               CopyCStrToCStr("",tempString,sizeof(tempString));
+
+               if (theSocketStruct->mRemoteAddrInfo != nil)
+               {
+               InetAddress             *theInetAddress = (InetAddress *) theSocketStruct->mRemoteAddrInfo->addr.buf;
+               InetHost                theInetHost = theInetAddress->fHost;
+                       
+                       if (theInetHost == 0)
+                       {
+                       InetInterfaceInfo       theInetInterfaceInfo;
+                               
+                               if (::OTInetGetInterfaceInfo(&theInetInterfaceInfo,kDefaultInetInterface) == noErr)
+                               {
+                                       theInetHost = theInetInterfaceInfo.fAddress;
+                               }
+                       }
+               
+                       ::OTInetHostToString(theInetHost,tempString);
+                       
+                       ConcatCStrToCStr(":",tempString,sizeof(tempString));
+                       ConcatLongIntToCStr(theInetAddress->fPort,tempString,sizeof(tempString));
+               }
+               
+               CopyCStrToCStr(tempString,outIPAndPort,inIPAndPortLength);
+       }
+}
+
+
+
+Boolean MacSocket_RemoteEndIsClosing(const int inSocketNum)
+{
+Boolean                theResult = false;
+
+       if (SocketIndexIsValid(inSocketNum))
+       {
+       SocketStruct    *theSocketStruct = &(sSockets[inSocketNum]);
+
+               theResult = theSocketStruct->mReceivedTOrdRel;
+       }
+
+       return(theResult);
+}
+
+
+
+Boolean MacSocket_ListenCompleted(const int inSocketNum)
+{
+Boolean                theResult = false;
+
+       if (SocketIndexIsValid(inSocketNum))
+       {
+       SocketStruct    *theSocketStruct = &(sSockets[inSocketNum]);
+
+               theResult = theSocketStruct->mReceivedTPassCon;
+       }
+
+       return(theResult);
+}
+
+
+
+Boolean MacSocket_RemoteEndIsOpen(const int inSocketNum)
+{
+       if (SocketIndexIsValid(inSocketNum))
+       {
+       SocketStruct    *theSocketStruct = &(sSockets[inSocketNum]);
+       
+               return(theSocketStruct->mRemoteEndIsConnected);
+       }
+       
+       else
+       {
+               return(false);
+       }
+}
+
+
+
+Boolean MacSocket_LocalEndIsOpen(const int inSocketNum)
+{
+       if (SocketIndexIsValid(inSocketNum))
+       {
+       SocketStruct    *theSocketStruct = &(sSockets[inSocketNum]);
+       
+               return(theSocketStruct->mLocalEndIsConnected);
+       }
+       
+       else
+       {
+               return(false);
+       }
+}
+
+
+
+static Boolean TimeoutElapsed(const SocketStruct *inSocket)
+{
+Boolean                timeIsUp = false;
+
+       if (inSocket != nil && inSocket->mTimeoutTicks > 0 && ::TickCount() > inSocket->mOperationStartTicks + inSocket->mTimeoutTicks)
+       {
+               timeIsUp = true;
+       }
+       
+       
+       return(timeIsUp);
+}
+
+
+
+static Boolean SocketIndexIsValid(const int inSocketNum)
+{
+       if (inSocketNum >= 0 && inSocketNum < kMaxNumSockets && sSockets[inSocketNum].mEndPointRef != kOTInvalidEndpointRef)
+       {
+               return(true);
+       }
+       
+       else
+       {
+               return(false);
+       }
+}
+
+
+
+static void InitSocket(SocketStruct *ioSocket)
+{
+       ioSocket->mIsInUse = false;
+       
+       ioSocket->mEndpointIsBound = false;
+       
+       ioSocket->mLocalEndIsConnected = false;
+       ioSocket->mRemoteEndIsConnected = false;
+       
+       ioSocket->mReceivedTOpenComplete = false;
+       ioSocket->mReceivedTBindComplete = false;
+       ioSocket->mReceivedTConnect = false;
+       ioSocket->mReceivedTListen = false;
+       ioSocket->mReceivedTPassCon = false;
+       ioSocket->mReceivedTDisconnect = false;
+       ioSocket->mReceivedTOrdRel = false;
+       ioSocket->mReceivedTDisconnectComplete = false;
+       
+       ioSocket->mTimeoutTicks = 30 * 60;
+       ioSocket->mOperationStartTicks = -1;
+       
+       ioSocket->mIdleWaitCallback = nil;
+       ioSocket->mUserRefPtr = nil;
+       
+       ioSocket->mExpectedCode = 0;
+       ioSocket->mAsyncOperationResult = noErr;
+       
+       ioSocket->mEndPointRef = kOTInvalidEndpointRef;
+       
+       ioSocket->mBindRequestedAddrInfo = nil;
+       ioSocket->mAssignedAddrInfo = nil;
+       ioSocket->mRemoteAddrInfo = nil;
+       
+       ioSocket->mReadyToReadData = false;
+       ioSocket->mReadyToWriteData = true;
+       
+       ioSocket->mReadBuffer = nil;
+       ioSocket->mWriteBuffer = nil;
+
+       ioSocket->mLastError = noErr;
+       CopyCStrToCStr("",ioSocket->mErrMessage,sizeof(ioSocket->mErrMessage));
+}
+
+
+
+static void PrepareForAsyncOperation(SocketStruct *ioSocket,const OTEventCode inExpectedCode)
+{
+       ioSocket->mOperationStartTicks = ::TickCount();
+       
+       ioSocket->mAsyncOperationResult = noErr;
+       
+       ioSocket->mExpectedCode = inExpectedCode;
+}
+
+
+//     The wait function....
+
+static OSErr MyBusyWait(SocketStruct *ioSocket,Boolean returnImmediatelyOnError,OTResult *outOTResult,Boolean *inAsyncOperationCompleteFlag)
+{
+OSErr          errCode = noErr;
+OTResult       theOTResult = noErr;
+
+       
+       SetErrorMessageAndBailIfNil(ioSocket,"MyBusyWait: Bad parameter, ioSocket = nil");
+       SetErrorMessageAndBailIfNil(inAsyncOperationCompleteFlag,"MyBusyWait: Bad parameter, inAsyncOperationCompleteFlag = nil");
+       
+       for (;;) 
+       {
+               if (*inAsyncOperationCompleteFlag)
+               {
+                       theOTResult = ioSocket->mAsyncOperationResult;
+                       
+                       break;
+               }
+               
+               if (ioSocket->mIdleWaitCallback != nil)
+               {
+                       theOTResult = (*(ioSocket->mIdleWaitCallback))(ioSocket->mUserRefPtr);
+                       
+                       if (theOTResult != noErr && returnImmediatelyOnError)
+                       {
+                               break;
+                       }
+               }
+               
+               if (TimeoutElapsed(ioSocket))
+               {
+                       theOTResult = kMacSocket_TimeoutErr;
+                       
+                       break;
+               }
+       }
+
+
+EXITPOINT:
+       
+       if (outOTResult != nil)
+       {
+               *outOTResult = theOTResult;
+       }
+       
+       return(errCode);
+}
+
+
+
+//     I used to do thread switching, but stopped.  It could easily be rolled back in though....
+
+static pascal void OTNonYieldingNotifier(void *contextPtr,OTEventCode code,OTResult result,void *cookie)
+{
+SocketStruct *theSocketStruct = (SocketStruct *) contextPtr;
+       
+       if (theSocketStruct != nil)
+       {
+               if (theSocketStruct->mExpectedCode != 0 && code == theSocketStruct->mExpectedCode)
+               {
+                       theSocketStruct->mAsyncOperationResult = result;
+                       
+                       theSocketStruct->mExpectedCode = 0;
+               }
+               
+               
+               switch (code) 
+               {
+                       case T_OPENCOMPLETE:
+                       {
+                               theSocketStruct->mReceivedTOpenComplete = true;
+                               
+                               theSocketStruct->mEndPointRef = (EndpointRef) cookie;
+                               
+                               break;
+                       }
+
+                       
+                       case T_BINDCOMPLETE:
+                       {
+                               theSocketStruct->mReceivedTBindComplete = true;
+                               
+                               break;
+                       }
+                       
+
+                       case T_CONNECT:
+                       {
+                               theSocketStruct->mReceivedTConnect = true;
+
+                               theSocketStruct->mLocalEndIsConnected = true;
+                               
+                               theSocketStruct->mRemoteEndIsConnected = true;
+
+                               break;
+                       }
+                       
+
+                       case T_LISTEN:
+                       {
+                               theSocketStruct->mReceivedTListen = true;
+                               
+                               break;
+                       }
+                       
+
+                       case T_PASSCON:
+                       {
+                               theSocketStruct->mReceivedTPassCon = true;
+                               
+                               theSocketStruct->mLocalEndIsConnected = true;
+                               
+                               theSocketStruct->mRemoteEndIsConnected = true;
+
+                               break;
+                       }
+
+
+                       case T_DATA:
+                       {
+                               theSocketStruct->mReadyToReadData = true;
+                               
+                               break;
+                       }
+                       
+                       case T_GODATA:
+                       {
+                               theSocketStruct->mReadyToWriteData = true;
+                               
+                               break;
+                       }
+                       
+                       case T_DISCONNECT:
+                       {
+                               theSocketStruct->mReceivedTDisconnect = true;
+                               
+                               theSocketStruct->mRemoteEndIsConnected = false;
+                               
+                               theSocketStruct->mLocalEndIsConnected = false;
+                               
+                               ::OTRcvDisconnect(theSocketStruct->mEndPointRef,nil);
+                               
+                               break;
+                       }
+
+                       case T_ORDREL:
+                       {
+                               theSocketStruct->mReceivedTOrdRel = true;
+                               
+                               //      We can still write data, so don't clear mRemoteEndIsConnected
+                               
+                               ::OTRcvOrderlyDisconnect(theSocketStruct->mEndPointRef);
+                               
+                               break;
+                       }
+                       
+                       case T_DISCONNECTCOMPLETE:
+                       {
+                               theSocketStruct->mReceivedTDisconnectComplete = true;
+                               
+                               theSocketStruct->mRemoteEndIsConnected = false;
+                               
+                               theSocketStruct->mLocalEndIsConnected = false;
+                               
+                               break;
+                       }
+               }
+       }
+/*
+T_LISTEN OTListen
+T_CONNECT OTRcvConnect
+T_DATA OTRcv, OTRcvUData
+T_DISCONNECT OTRcvDisconnect
+T_ORDREL OTRcvOrderlyDisconnect
+T_GODATA OTSnd, OTSndUData, OTLook
+T_PASSCON none
+
+T_EXDATA OTRcv
+T_GOEXDATA OTSnd, OTLook
+T_UDERR OTRcvUDErr
+*/
+}
+
+
+
+//     Initialize the main socket data structure
+
+OSErr MacSocket_Startup(void)
+{
+       if (!sSocketsSetup)
+       {
+               for (int i = 0;i < kMaxNumSockets;i++)
+               {
+                       InitSocket(&(sSockets[i]));
+               }
+
+               ::InitOpenTransport();
+               
+               sSocketsSetup = true;
+       }
+       
+       
+       return(noErr);
+}
+
+
+
+//     Cleanup before exiting
+
+OSErr MacSocket_Shutdown(void)
+{
+       if (sSocketsSetup)
+       {
+               for (int i = 0;i < kMaxNumSockets;i++)
+               {
+               SocketStruct *theSocketStruct = &(sSockets[i]);
+               
+                       if (theSocketStruct->mIsInUse)
+                       {
+                               if (theSocketStruct->mEndPointRef != kOTInvalidEndpointRef)
+                               {
+                               OTResult        theOTResult;
+                               
+                               
+                                       //      Since we're killing the endpoint, I don't bother to send the disconnect (sorry!)
+
+/*
+                                       if (theSocketStruct->mLocalEndIsConnected)
+                                       {
+                                               //      This is an abortive action, so we do a hard disconnect instead of an OTSndOrderlyDisconnect
+                                               
+                                               theOTResult = ::OTSndDisconnect(theSocketStruct->mEndPointRef, nil);
+                                               
+                                               //      Now we have to watch for T_DISCONNECTCOMPLETE event
+                                               
+                                               theSocketStruct->mLocalEndIsConnected = false;
+                                       }
+*/                                     
+                                       
+                                       theOTResult = ::OTCloseProvider(theSocketStruct->mEndPointRef);
+                                       
+                                       
+                                       theSocketStruct->mEndPointRef = kOTInvalidEndpointRef;
+                               }
+                               
+                               if (theSocketStruct->mBindRequestedAddrInfo != nil)
+                               {
+                                       ::OTFree((void *) theSocketStruct->mBindRequestedAddrInfo,T_BIND);
+                                       
+                                       theSocketStruct->mBindRequestedAddrInfo = nil;
+                               }
+                               
+                               if (theSocketStruct->mAssignedAddrInfo != nil)
+                               {
+                                       ::OTFree((void *) theSocketStruct->mAssignedAddrInfo,T_BIND);
+                                       
+                                       theSocketStruct->mAssignedAddrInfo = nil;
+                               }
+                               
+                               if (theSocketStruct->mRemoteAddrInfo != nil)
+                               {
+                                       ::OTFree((void *) theSocketStruct->mRemoteAddrInfo,T_CALL);
+                                       
+                                       theSocketStruct->mRemoteAddrInfo = nil;
+                               }
+                               
+                               
+                       }
+               }
+               
+               ::CloseOpenTransport();
+
+               sSocketsSetup = false;
+       }
+       
+       return(noErr);
+}
+
+
+
+
+
+
+//     Allocate a socket
+
+OSErr MacSocket_socket(int *outSocketNum,const Boolean inDoThreadSwitching,const long inTimeoutTicks,MacSocket_IdleWaitCallback inIdleWaitCallback,void *inUserRefPtr)
+{
+//     Gotta roll support back in for threads eventually.....
+
+#pragma unused(inDoThreadSwitching)
+
+
+OSErr  errCode = noErr;
+
+       
+       SetErrorMessageAndBailIfNil(outSocketNum,"MacSocket_socket: Bad parameter, outSocketNum == nil");
+       
+       *outSocketNum = -1;
+       
+       
+       //      Find an unused socket
+       
+       for (int i = 0;i < kMaxNumSockets;i++)
+       {
+               if (sSockets[i].mIsInUse == false)
+               {
+               OTResult                theOTResult;
+               SocketStruct    *theSocketStruct = &(sSockets[i]);
+               
+                       
+                       InitSocket(theSocketStruct);
+                       
+                       theSocketStruct->mIdleWaitCallback = inIdleWaitCallback;
+                       theSocketStruct->mUserRefPtr = inUserRefPtr;
+                       
+                       theSocketStruct->mTimeoutTicks = inTimeoutTicks;
+                       
+
+                       //      Set up OT endpoint
+                       
+                       PrepareForAsyncOperation(theSocketStruct,T_OPENCOMPLETE);
+                       
+                       theOTResult = ::OTAsyncOpenEndpoint(OTCreateConfiguration(kTCPName),0,nil,OTNonYieldingNotifier,(void *) theSocketStruct);
+                       
+                       SetErrorMessageAndLongIntAndBailIfError(theOTResult,"MacSocket_socket: Can't create OT endpoint, OTAsyncOpenEndpoint() = ",theOTResult);
+                       
+                       BailIfError(MyBusyWait(theSocketStruct,false,&theOTResult,&(theSocketStruct->mReceivedTOpenComplete)));
+                                                                                                                                                                               
+                       SetErrorMessageAndLongIntAndBailIfError(theOTResult,"MacSocket_socket: Can't create OT endpoint, OTAsyncOpenEndpoint() = ",theOTResult);
+                       
+                       
+                       *outSocketNum = i;
+                       
+                       errCode = noErr;
+                       
+                       theSocketStruct->mIsInUse = true;
+                       
+                       break;
+               }
+               
+               else if (i == kMaxNumSockets - 1)
+               {
+                       SetErrorMessageAndBail("MacSocket_socket: No sockets available");
+               }
+       }
+
+
+EXITPOINT:
+       
+       errno = errCode;
+       
+       return(errCode);
+}
+
+
+
+
+OSErr MacSocket_listen(const int inSocketNum,const int inPortNum)
+{
+OSErr                  errCode = noErr;
+SocketStruct   *theSocketStruct = nil;
+
+
+       if (!SocketIndexIsValid(inSocketNum))
+       {
+               SetErrorMessageAndBail("MacSocket_listen: Invalid socket number specified");
+       }
+
+
+       theSocketStruct = &(sSockets[inSocketNum]);
+
+
+OTResult               theOTResult;
+       
+       
+       if (theSocketStruct->mBindRequestedAddrInfo == nil)
+       {
+               theSocketStruct->mBindRequestedAddrInfo = (TBind *) ::OTAlloc(theSocketStruct->mEndPointRef,T_BIND,T_ADDR,&theOTResult);
+                                                                                                                                                                       
+               SetErrorMessageAndLongIntAndBailIfError(theOTResult,"MacSocket_listen: Can't allocate OT T_BIND structure, OTAlloc() = ",theOTResult);
+               SetErrorMessageAndBailIfNil(theSocketStruct->mBindRequestedAddrInfo,"MacSocket_listen: Can't allocate OT T_BIND structure, OTAlloc() returned nil");
+       }
+       
+       if (theSocketStruct->mAssignedAddrInfo == nil)
+       {
+               theSocketStruct->mAssignedAddrInfo = (TBind *) ::OTAlloc(theSocketStruct->mEndPointRef,T_BIND,T_ADDR,&theOTResult);
+                                                                                                                                                                       
+               SetErrorMessageAndLongIntAndBailIfError(theOTResult,"MacSocket_listen: Can't allocate OT T_BIND structure, OTAlloc() = ",theOTResult);
+               SetErrorMessageAndBailIfNil(theSocketStruct->mAssignedAddrInfo,"MacSocket_listen: Can't allocate OT T_BIND structure, OTAlloc() returned nil");
+       }
+       
+       if (theSocketStruct->mRemoteAddrInfo == nil)
+       {
+               theSocketStruct->mRemoteAddrInfo = (TCall *) ::OTAlloc(theSocketStruct->mEndPointRef,T_CALL,T_ADDR,&theOTResult);
+                                                                                                                                                                       
+               SetErrorMessageAndLongIntAndBailIfError(theOTResult,"MacSocket_listen: Can't allocate OT T_CALL structure, OTAlloc() = ",theOTResult);
+               SetErrorMessageAndBailIfNil(theSocketStruct->mRemoteAddrInfo,"MacSocket_listen: Can't allocate OT T_CALL structure, OTAlloc() returned nil");
+       }
+       
+
+       if (!theSocketStruct->mEndpointIsBound)
+       {
+       InetInterfaceInfo       theInetInterfaceInfo;
+               
+               theOTResult = ::OTInetGetInterfaceInfo(&theInetInterfaceInfo,kDefaultInetInterface);
+                                                                                                                                                                       
+               SetErrorMessageAndLongIntAndBailIfError(theOTResult,"MacSocket_listen: Can't determine OT interface info, OTInetGetInterfaceInfo() = ",theOTResult);
+
+
+       InetAddress     *theInetAddress = (InetAddress *) theSocketStruct->mBindRequestedAddrInfo->addr.buf;
+               
+//             theInetAddress->fAddressType = AF_INET;
+//             theInetAddress->fPort = inPortNum;
+//             theInetAddress->fHost = theInetInterfaceInfo.fAddress;
+               
+               ::OTInitInetAddress(theInetAddress,inPortNum,theInetInterfaceInfo.fAddress);
+
+               theSocketStruct->mBindRequestedAddrInfo->addr.len = sizeof(InetAddress);
+               
+               theSocketStruct->mBindRequestedAddrInfo->qlen = 1;
+               
+               
+               theOTResult = ::OTSetSynchronous(theSocketStruct->mEndPointRef);
+                                                                                                                                                                       
+               SetErrorMessageAndLongIntAndBailIfError(theOTResult,"MacSocket_listen: Can't set OT endpoint mode, OTSetSynchronous() = ",theOTResult);
+               
+               theOTResult = NegotiateIPReuseAddrOption(theSocketStruct->mEndPointRef,true);
+                                                                                                                                                                       
+               SetErrorMessageAndLongIntAndBailIfError(theOTResult,"MacSocket_listen: Can't set OT IP address reuse flag, NegotiateIPReuseAddrOption() = ",theOTResult);
+               
+               theOTResult = ::OTSetAsynchronous(theSocketStruct->mEndPointRef);
+                                                                                                                                                                       
+               SetErrorMessageAndLongIntAndBailIfError(theOTResult,"MacSocket_listen: Can't set OT endpoint mode, OTSetAsynchronous() = ",theOTResult);
+
+               
+               PrepareForAsyncOperation(theSocketStruct,T_BINDCOMPLETE);
+                               
+               theOTResult = ::OTBind(theSocketStruct->mEndPointRef,theSocketStruct->mBindRequestedAddrInfo,theSocketStruct->mAssignedAddrInfo);
+                                                                                                                                                                       
+               SetErrorMessageAndLongIntAndBailIfError(theOTResult,"MacSocket_listen: Can't bind OT endpoint, OTBind() = ",theOTResult);
+               
+               BailIfError(MyBusyWait(theSocketStruct,false,&theOTResult,&(theSocketStruct->mReceivedTBindComplete)));
+                                                                                                                                                                       
+               SetErrorMessageAndLongIntAndBailIfError(theOTResult,"MacSocket_listen: Can't bind OT endpoint, OTBind() = ",theOTResult);
+               
+               
+               theSocketStruct->mEndpointIsBound = true;
+       }
+
+
+       PrepareForAsyncOperation(theSocketStruct,T_LISTEN);
+
+       theOTResult = ::OTListen(theSocketStruct->mEndPointRef,theSocketStruct->mRemoteAddrInfo);
+       
+       if (theOTResult == noErr)
+       {
+               PrepareForAsyncOperation(theSocketStruct,T_PASSCON);
+               
+               theOTResult = ::OTAccept(theSocketStruct->mEndPointRef,theSocketStruct->mEndPointRef,theSocketStruct->mRemoteAddrInfo);
+               
+               SetErrorMessageAndLongIntAndBailIfError(theOTResult,"MacSocket_listen: Can't begin OT accept, OTAccept() = ",theOTResult);
+               
+               BailIfError(MyBusyWait(theSocketStruct,false,&theOTResult,&(theSocketStruct->mReceivedTPassCon)));
+                                                                                                                                                                       
+               SetErrorMessageAndLongIntAndBailIfError(theOTResult,"MacSocket_listen: Can't accept OT connection, OTAccept() = ",theOTResult);
+       }
+       
+       else if (theOTResult == kOTNoDataErr)
+       {
+               theOTResult = noErr;
+       }
+       
+       else
+       {
+               SetErrorMessageAndLongIntAndBail("MacSocket_listen: Can't begin OT listen, OTListen() = ",theOTResult);
+       }
+
+
+       errCode = noErr;
+
+
+EXITPOINT:
+       
+       if (theSocketStruct != nil)
+       {
+               theSocketStruct->mLastError = noErr;
+               
+               CopyCStrToCStr("",theSocketStruct->mErrMessage,sizeof(theSocketStruct->mErrMessage));
+
+               if (errCode != noErr)
+               {
+                       theSocketStruct->mLastError = errCode;
+                       
+                       CopyCStrToCStr(GetErrorMessage(),theSocketStruct->mErrMessage,sizeof(theSocketStruct->mErrMessage));
+               }
+       }
+       
+       errno = errCode;
+       
+       return(errCode);
+}
+
+
+
+
+OSErr MacSocket_connect(const int inSocketNum,char *inTargetAddressAndPort)
+{
+OSErr                  errCode = noErr;
+SocketStruct   *theSocketStruct = nil;
+
+
+       if (!SocketIndexIsValid(inSocketNum))
+       {
+               SetErrorMessageAndBail("MacSocket_connect: Invalid socket number specified");
+       }
+
+       theSocketStruct = &(sSockets[inSocketNum]);
+
+       if (theSocketStruct->mEndpointIsBound)
+       {
+               SetErrorMessageAndBail("MacSocket_connect: Socket previously bound");
+       }
+
+       
+OTResult               theOTResult;
+
+       theSocketStruct->mBindRequestedAddrInfo = (TBind *) ::OTAlloc(theSocketStruct->mEndPointRef,T_BIND,T_ADDR,&theOTResult);
+                                                                                                                                                               
+       SetErrorMessageAndLongIntAndBailIfError(theOTResult,"MacSocket_connect: Can't allocate OT T_BIND structure, OTAlloc() = ",theOTResult);
+       SetErrorMessageAndBailIfNil(theSocketStruct->mBindRequestedAddrInfo,"MacSocket_connect: Can't allocate OT T_BIND structure, OTAlloc() returned nil");
+       
+
+       theSocketStruct->mAssignedAddrInfo = (TBind *) ::OTAlloc(theSocketStruct->mEndPointRef,T_BIND,T_ADDR,&theOTResult);
+                                                                                                                                                               
+       SetErrorMessageAndLongIntAndBailIfError(theOTResult,"MacSocket_connect: Can't allocate OT T_BIND structure, OTAlloc() = ",theOTResult);
+       SetErrorMessageAndBailIfNil(theSocketStruct->mAssignedAddrInfo,"MacSocket_connect: Can't allocate OT T_BIND structure, OTAlloc() returned nil");
+
+
+       theSocketStruct->mRemoteAddrInfo = (TCall *) ::OTAlloc(theSocketStruct->mEndPointRef,T_CALL,T_ADDR,&theOTResult);
+                                                                                                                                                               
+       SetErrorMessageAndLongIntAndBailIfError(theOTResult,"MacSocket_connect: Can't allocate OT T_CALL structure, OTAlloc() = ",theOTResult);
+       SetErrorMessageAndBailIfNil(theSocketStruct->mRemoteAddrInfo,"MacSocket_connect: Can't allocate OT T_CALL structure, OTAlloc() returned nil");
+
+       
+       PrepareForAsyncOperation(theSocketStruct,T_BINDCOMPLETE);
+
+       theOTResult = ::OTBind(theSocketStruct->mEndPointRef,nil,theSocketStruct->mAssignedAddrInfo);
+                                                                                                                                                               
+       SetErrorMessageAndLongIntAndBailIfError(theOTResult,"MacSocket_connect: Can't bind OT endpoint, OTBind() = ",theOTResult);
+       
+       BailIfError(MyBusyWait(theSocketStruct,false,&theOTResult,&(theSocketStruct->mReceivedTBindComplete)));
+                                                                                                                                                               
+       SetErrorMessageAndLongIntAndBailIfError(theOTResult,"MacSocket_connect: Can't bind OT endpoint, OTBind() = ",theOTResult);
+       
+       theSocketStruct->mEndpointIsBound = true;
+       
+
+TCall          sndCall;
+DNSAddress     hostDNSAddress;
+       
+       //      Set up target address
+       
+       sndCall.addr.buf = (UInt8 *) &hostDNSAddress;
+       sndCall.addr.len = ::OTInitDNSAddress(&hostDNSAddress,inTargetAddressAndPort);
+       sndCall.opt.buf = nil;
+       sndCall.opt.len = 0;
+       sndCall.udata.buf = nil;
+       sndCall.udata.len = 0;
+       sndCall.sequence = 0;
+               
+       //      Connect!
+       
+       PrepareForAsyncOperation(theSocketStruct,T_CONNECT);
+
+       theOTResult = ::OTConnect(theSocketStruct->mEndPointRef,&sndCall,nil);
+       
+       if (theOTResult == kOTNoDataErr)
+       {
+               theOTResult = noErr;
+       }
+                                                                                               
+       SetErrorMessageAndLongIntAndBailIfError(theOTResult,"MacSocket_connect: Can't connect OT endpoint, OTConnect() = ",theOTResult);
+       
+       BailIfError(MyBusyWait(theSocketStruct,false,&theOTResult,&(theSocketStruct->mReceivedTConnect)));
+       
+       if (theOTResult == kMacSocket_TimeoutErr)
+       {
+               SetErrorMessageAndBail("MacSocket_connect: Can't connect OT endpoint, OTConnect() = kMacSocket_TimeoutErr");
+       }
+       
+       else
+       {
+               SetErrorMessageAndLongIntAndBailIfError(theOTResult,"MacSocket_connect: Can't connect OT endpoint, OTConnect() = ",theOTResult);
+       }
+
+       theOTResult = ::OTRcvConnect(theSocketStruct->mEndPointRef,nil);
+                                                                                               
+       SetErrorMessageAndLongIntAndBailIfError(theOTResult,"MacSocket_connect: Can't complete connect on OT endpoint, OTRcvConnect() = ",theOTResult);
+
+
+       errCode = noErr;
+
+
+#ifdef MACSOCKET_DEBUG
+       printf("MacSocket_connect: connect completed\n");
+#endif
+
+EXITPOINT:
+       
+       if (theSocketStruct != nil)
+       {
+               theSocketStruct->mLastError = noErr;
+               
+               CopyCStrToCStr("",theSocketStruct->mErrMessage,sizeof(theSocketStruct->mErrMessage));
+
+               if (errCode != noErr)
+               {
+                       theSocketStruct->mLastError = errCode;
+                       
+                       CopyCStrToCStr(GetErrorMessage(),theSocketStruct->mErrMessage,sizeof(theSocketStruct->mErrMessage));
+               }
+       }
+       
+       errno = errCode;
+       
+       return(errCode);
+}
+
+
+
+
+//     Close a connection
+
+OSErr MacSocket_close(const int inSocketNum)
+{
+OSErr                  errCode = noErr;
+SocketStruct   *theSocketStruct = nil;
+
+
+       if (!SocketIndexIsValid(inSocketNum))
+       {
+               SetErrorMessageAndBail("MacSocket_close: Invalid socket number specified");
+       }
+
+
+       theSocketStruct = &(sSockets[inSocketNum]);
+       
+       if (theSocketStruct->mEndPointRef != kOTInvalidEndpointRef)
+       {
+       OTResult                theOTResult = noErr;
+       
+               //      Try to play nice
+               
+               if (theSocketStruct->mReceivedTOrdRel)
+               {
+                       //      Already did an OTRcvOrderlyDisconnect() in the notifier
+               
+                       if (theSocketStruct->mLocalEndIsConnected)
+                       {
+                               theOTResult = ::OTSndOrderlyDisconnect(theSocketStruct->mEndPointRef);
+                               
+                               theSocketStruct->mLocalEndIsConnected = false;
+                       }
+               }
+               
+               else if (theSocketStruct->mLocalEndIsConnected)
+               {
+                       theOTResult = ::OTSndOrderlyDisconnect(theSocketStruct->mEndPointRef);
+                       
+                       theSocketStruct->mLocalEndIsConnected = false;
+                       
+                       //      Wait for other end to hang up too!
+                       
+//                     PrepareForAsyncOperation(theSocketStruct,T_ORDREL);
+//
+//                     errCode = MyBusyWait(theSocketStruct,false,&theOTResult,&(theSocketStruct->mReceivedTOrdRel));
+               }
+               
+               
+               if (theOTResult != noErr)
+               {
+                       ::OTCloseProvider(theSocketStruct->mEndPointRef);
+               }
+               
+               else
+               {
+                       theOTResult = ::OTCloseProvider(theSocketStruct->mEndPointRef);
+               }
+
+               theSocketStruct->mEndPointRef = kOTInvalidEndpointRef;
+               
+               errCode = theOTResult;
+       }
+
+
+       theSocketStruct->mIsInUse = false;
+
+       
+EXITPOINT:
+       
+       if (theSocketStruct != nil)
+       {
+               theSocketStruct->mLastError = noErr;
+               
+               CopyCStrToCStr("",theSocketStruct->mErrMessage,sizeof(theSocketStruct->mErrMessage));
+
+               if (errCode != noErr)
+               {
+                       theSocketStruct->mLastError = errCode;
+                       
+                       CopyCStrToCStr(GetErrorMessage(),theSocketStruct->mErrMessage,sizeof(theSocketStruct->mErrMessage));
+               }
+       }
+
+       errno = errCode;
+               
+       return(errCode);
+}
+
+
+
+
+//     Receive some bytes
+
+int MacSocket_recv(const int inSocketNum,void *outBuff,int outBuffLength,const Boolean inBlock)
+{
+OSErr                  errCode = noErr;
+int                            totalBytesRead = 0;
+SocketStruct   *theSocketStruct = nil;
+
+       
+       SetErrorMessageAndBailIfNil(outBuff,"MacSocket_recv: Bad parameter, outBuff = nil");
+       
+       if (outBuffLength <= 0)
+       {
+               SetErrorMessageAndBail("MacSocket_recv: Bad parameter, outBuffLength <= 0");
+       }
+       
+       if (!SocketIndexIsValid(inSocketNum))
+       {
+               SetErrorMessageAndBail("MacSocket_recv: Invalid socket number specified");
+       }
+
+       theSocketStruct = &(sSockets[inSocketNum]);
+
+       if (!theSocketStruct->mLocalEndIsConnected)
+       {
+               SetErrorMessageAndBail("MacSocket_recv: Socket not connected");
+       }
+
+       if (theSocketStruct->mReceivedTOrdRel)
+       {
+               totalBytesRead = 0;
+               
+               goto EXITPOINT;
+       }
+
+       
+       PrepareForAsyncOperation(theSocketStruct,0);
+       
+       for (;;)
+       {
+       int                     bytesRead;
+       OTResult        theOTResult;
+       
+       
+               theOTResult = ::OTRcv(theSocketStruct->mEndPointRef,(void *) ((unsigned long) outBuff + (unsigned long) totalBytesRead),outBuffLength - totalBytesRead,nil);
+               
+               if (theOTResult >= 0)
+               {
+                       bytesRead = theOTResult;
+                       
+#ifdef MACSOCKET_DEBUG
+       printf("MacSocket_recv: read %d bytes in part\n",bytesRead);
+#endif
+               }
+               
+               else if (theOTResult == kOTNoDataErr)
+               {
+                       bytesRead = 0;
+               }
+               
+               else
+               {
+                       SetErrorMessageAndLongIntAndBail("MacSocket_recv: Can't receive OT data, OTRcv() = ",theOTResult);
+               }
+               
+               
+               totalBytesRead += bytesRead;
+               
+               
+               if (totalBytesRead <= 0)
+               {
+                       if (theSocketStruct->mReceivedTOrdRel)
+                       {
+                               break;
+                       }
+                       
+                       //      This seems pretty stupid to me now.  Maybe I'll delete this blocking garbage.
+                       
+                       if (inBlock)
+                       {
+                               if (TimeoutElapsed(theSocketStruct))
+                               {
+                                       SetErrorCodeAndMessageAndBail(kMacSocket_TimeoutErr,"MacSocket_recv: Receive operation timed-out");
+                               }
+                               
+                               if (theSocketStruct->mIdleWaitCallback != nil)
+                               {
+                                       theOTResult = (*(theSocketStruct->mIdleWaitCallback))(theSocketStruct->mUserRefPtr);
+                                       
+                                       SetErrorMessageAndBailIfError(theOTResult,"MacSocket_recv: User cancelled operation");
+                               }
+                               
+                               continue;
+                       }
+               }
+               
+               
+               break;
+       }
+       
+       errCode = noErr;
+
+
+#ifdef MACSOCKET_DEBUG
+       printf("MacSocket_recv: read %d bytes in total\n",totalBytesRead);
+#endif
+       
+       
+EXITPOINT:
+       
+       if (theSocketStruct != nil)
+       {
+               theSocketStruct->mLastError = noErr;
+               
+               CopyCStrToCStr("",theSocketStruct->mErrMessage,sizeof(theSocketStruct->mErrMessage));
+
+               if (errCode != noErr)
+               {
+                       theSocketStruct->mLastError = errCode;
+                       
+                       CopyCStrToCStr(GetErrorMessage(),theSocketStruct->mErrMessage,sizeof(theSocketStruct->mErrMessage));
+               }
+       }
+
+       errno = errCode;
+       
+       return(totalBytesRead);
+}
+
+
+
+//     Send some bytes
+
+int MacSocket_send(const int inSocketNum,void *inBuff,int inBuffLength)
+{
+OSErr                  errCode = noErr;
+int                            bytesSent = 0;
+SocketStruct   *theSocketStruct = nil;
+
+
+       SetErrorMessageAndBailIfNil(inBuff,"MacSocket_send: Bad parameter, inBuff = nil");
+       
+       if (inBuffLength <= 0)
+       {
+               SetErrorMessageAndBail("MacSocket_send: Bad parameter, inBuffLength <= 0");
+       }
+
+       if (!SocketIndexIsValid(inSocketNum))
+       {
+               SetErrorMessageAndBail("MacSocket_send: Invalid socket number specified");
+       }
+       
+
+       theSocketStruct = &(sSockets[inSocketNum]);
+       
+       if (!theSocketStruct->mLocalEndIsConnected)
+       {
+               SetErrorMessageAndBail("MacSocket_send: Socket not connected");
+       }
+
+
+OTResult               theOTResult;
+       
+
+       PrepareForAsyncOperation(theSocketStruct,0);
+
+       while (bytesSent < inBuffLength)
+       {
+               if (theSocketStruct->mIdleWaitCallback != nil)
+               {
+                       theOTResult = (*(theSocketStruct->mIdleWaitCallback))(theSocketStruct->mUserRefPtr);
+                       
+                       SetErrorMessageAndBailIfError(theOTResult,"MacSocket_send: User cancelled");
+               }
+
+
+               theOTResult = ::OTSnd(theSocketStruct->mEndPointRef,(void *) ((unsigned long) inBuff + bytesSent),inBuffLength - bytesSent,0);
+               
+               if (theOTResult >= 0)
+               {
+                       bytesSent += theOTResult;
+                       
+                       theOTResult = noErr;
+                       
+                       //      Reset timer....
+                       
+                       PrepareForAsyncOperation(theSocketStruct,0);
+               }
+               
+               if (theOTResult == kOTFlowErr)
+               {
+                       if (TimeoutElapsed(theSocketStruct))
+                       {
+                               SetErrorCodeAndMessageAndBail(kMacSocket_TimeoutErr,"MacSocket_send: Send timed-out")
+                       }
+
+                       theOTResult = noErr;
+               }
+                                                                                                       
+               SetErrorMessageAndLongIntAndBailIfError(theOTResult,"MacSocket_send: Can't send OT data, OTSnd() = ",theOTResult);
+       }
+
+       
+       errCode = noErr;
+
+#ifdef MACSOCKET_DEBUG
+       printf("MacSocket_send: sent %d bytes\n",bytesSent);
+#endif
+       
+       
+EXITPOINT:
+       
+       if (theSocketStruct != nil)
+       {
+               theSocketStruct->mLastError = noErr;
+               
+               CopyCStrToCStr("",theSocketStruct->mErrMessage,sizeof(theSocketStruct->mErrMessage));
+
+               if (errCode != noErr)
+               {
+                       theSocketStruct->mLastError = errCode;
+                       
+                       CopyCStrToCStr(GetErrorMessage(),theSocketStruct->mErrMessage,sizeof(theSocketStruct->mErrMessage));
+               }
+       }
+       
+       if (errCode != noErr)
+       {
+               ::SysBeep(1);
+       }
+       
+       errno = errCode;
+       
+       return(bytesSent);
+}
+
+
+
+
+
+static OSStatus NegotiateIPReuseAddrOption(EndpointRef inEndpoint,const Boolean inEnableReuseIP)
+{
+OSStatus       errCode;
+UInt8          buf[kOTFourByteOptionSize];
+TOption*       theOTOption;
+TOptMgmt       theOTRequest;
+TOptMgmt       theOTResult;
+       
+
+       if (!OTIsSynchronous(inEndpoint))
+       {
+               SetErrorMessageAndBail("NegotiateIPReuseAddrOption: Open Transport endpoint is not synchronous");
+       }
+       
+       theOTRequest.opt.buf = buf;
+       theOTRequest.opt.len = sizeof(buf);
+       theOTRequest.flags = T_NEGOTIATE;
+
+       theOTResult.opt.buf = buf;
+       theOTResult.opt.maxlen = kOTFourByteOptionSize;
+
+
+       theOTOption = (TOption *) buf;
+       
+       theOTOption->level = INET_IP;
+       theOTOption->name = IP_REUSEADDR;
+       theOTOption->len = kOTFourByteOptionSize;
+       theOTOption->status = 0;
+       *((UInt32 *) (theOTOption->value)) = inEnableReuseIP;
+
+       errCode = ::OTOptionManagement(inEndpoint,&theOTRequest,&theOTResult);
+       
+       if (errCode == kOTNoError)
+       {
+               if (theOTOption->status != T_SUCCESS)
+               {
+                       errCode = theOTOption->status;
+               }
+               
+               else
+               {
+                       errCode = kOTNoError;
+               }
+       }
+                               
+
+EXITPOINT:
+       
+       errno = errCode;
+       
+       return(errCode);
+}
+
+
+
+
+
+//     Some rough notes....
+
+
+
+//     OTAckSends(ep);
+//     OTAckSends(ep) // enable AckSend option
+//     ......
+//     buf = OTAllocMem( nbytes); // Allocate nbytes of memory from OT
+//     OTSnd(ep, buf, nbytes, 0); // send a packet
+//     ......
+//     NotifyProc( .... void* theParam) // Notifier Proc
+//     case T_MEMORYRELEASED: // process event
+//     OTFreeMem( theParam); // free up memory
+//     break;
+
+
+
+/*
+struct InetInterfaceInfo
+{
+       InetHost                fAddress;
+       InetHost                fNetmask;
+       InetHost                fBroadcastAddr;
+       InetHost                fDefaultGatewayAddr;
+       InetHost                fDNSAddr;
+       UInt16                  fVersion;
+       UInt16                  fHWAddrLen;
+       UInt8*                  fHWAddr;
+       UInt32                  fIfMTU;
+       UInt8*                  fReservedPtrs[2];
+       InetDomainName  fDomainName;
+       UInt32                  fIPSecondaryCount;
+       UInt8                   fReserved[252];                 
+};
+typedef struct InetInterfaceInfo InetInterfaceInfo;
+
+
+
+((InetAddress *) addr.buf)->fHost
+
+struct TBind
+{
+       TNetbuf addr;
+       OTQLen  qlen;
+};
+
+typedef struct TBind   TBind;
+
+struct TNetbuf
+{
+       size_t  maxlen;
+       size_t  len;
+       UInt8*  buf;
+};
+
+typedef struct TNetbuf TNetbuf;
+
+       
+       struct InetAddress
+{
+               OTAddressType   fAddressType;   // always AF_INET
+               InetPort                fPort;                  // Port number 
+               InetHost                fHost;                  // Host address in net byte order
+               UInt8                   fUnused[8];             // Traditional unused bytes
+};
+typedef struct InetAddress InetAddress;
+*/
+
+
+
+/*
+static pascal void Notifier(void* context, OTEventCode event, OTResult result, void* cookie)
+{
+EPInfo* epi = (EPInfo*) context;
+
+       switch (event)
+       {
+               case T_LISTEN:
+               {
+                       DoListenAccept();
+                       return;
+               }
+               
+               case T_ACCEPTCOMPLETE:
+               {
+                       if (result != kOTNoError)
+                               DBAlert1("Notifier: T_ACCEPTCOMPLETE - result %d",result);
+                       return;
+               }
+               
+               case T_PASSCON:
+               {
+                       if (result != kOTNoError)
+                       {
+                               DBAlert1("Notifier: T_PASSCON result %d", result);
+                               return;
+                       }
+
+                       OTAtomicAdd32(1, &gCntrConnections);
+                       OTAtomicAdd32(1, &gCntrTotalConnections);
+                       OTAtomicAdd32(1, &gCntrIntervalConnects);
+                       
+                       if ( OTAtomicSetBit(&epi->stateFlags, kPassconBit) != 0 )
+                       {
+                               ReadData(epi);
+                       }
+                       
+                       return;
+               }
+               
+               case T_DATA:
+               {
+                       if ( OTAtomicSetBit(&epi->stateFlags, kPassconBit) != 0 )
+                       {
+                               ReadData(epi);
+                       }
+                       
+                       return;
+               }
+               
+               case T_GODATA:
+               {
+                       SendData(epi);
+                       return;
+               }
+               
+               case T_DISCONNECT:
+               {
+                       DoRcvDisconnect(epi);
+                       return;
+               }
+               
+               case T_DISCONNECTCOMPLETE:
+               {
+                       if (result != kOTNoError)
+                               DBAlert1("Notifier: T_DISCONNECT_COMPLETE result %d",result);
+                               
+                       return;
+               }
+               
+               case T_MEMORYRELEASED:
+               {
+                       OTAtomicAdd32(-1, &epi->outstandingSends);
+                       return;
+               }
+               
+               default:
+               {
+                       DBAlert1("Notifier: unknown event <%x>", event);
+                       return;
+               }
+       }
+}
+*/
\ No newline at end of file
diff --git a/MacOS/GetHTTPS.src/MacSocket.h b/MacOS/GetHTTPS.src/MacSocket.h
new file mode 100644 (file)
index 0000000..6e90a5b
--- /dev/null
@@ -0,0 +1,103 @@
+#pragma once
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+
+enum
+{
+       kMacSocket_TimeoutErr = -2
+};
+
+
+//     Since MacSocket does busy waiting, I do a callback while waiting
+
+typedef OSErr (*MacSocket_IdleWaitCallback)(void *);
+
+
+//     Call this before anything else!
+
+OSErr MacSocket_Startup(void);
+
+
+//     Call this to cleanup before quitting
+
+OSErr MacSocket_Shutdown(void);
+
+
+//     Call this to allocate a "socket" (reference number is returned in outSocketNum)
+//     Note that inDoThreadSwitching is pretty much irrelevant right now, since I ignore it
+//     The inTimeoutTicks parameter is applied during reads/writes of data
+//     The inIdleWaitCallback parameter specifies a callback which is called during busy-waiting periods
+//     The inUserRefPtr parameter is passed back to the idle-wait callback
+
+OSErr MacSocket_socket(int *outSocketNum,const Boolean inDoThreadSwitching,const long inTimeoutTicks,MacSocket_IdleWaitCallback inIdleWaitCallback,void *inUserRefPtr);
+
+
+//     Call this to connect to an IP/DNS address
+//     Note that inTargetAddressAndPort is in "IP:port" format-- e.g. 10.1.1.1:123
+
+OSErr MacSocket_connect(const int inSocketNum,char *inTargetAddressAndPort);
+
+
+//     Call this to listen on a port
+//     Since this a low-performance implementation, I allow a maximum of 1 (one!) incoming request when I listen
+
+OSErr MacSocket_listen(const int inSocketNum,const int inPortNum);
+
+
+//     Call this to close a socket
+
+OSErr MacSocket_close(const int inSocketNum);
+
+
+//     Call this to receive data on a socket
+//     Most parameters' purpose are obvious-- except maybe "inBlock" which controls whether I wait for data or return immediately
+
+int MacSocket_recv(const int inSocketNum,void *outBuff,int outBuffLength,const Boolean inBlock);
+
+
+//     Call this to send data on a socket
+
+int MacSocket_send(const int inSocketNum,void *inBuff,int inBuffLength);
+
+
+//     If zero bytes were read in a call to MacSocket_recv(), it may be that the remote end has done a half-close
+//     This function will let you check whether that's true or not
+
+Boolean MacSocket_RemoteEndIsClosing(const int inSocketNum);
+
+
+//     Call this to see if the listen has completed after a call to MacSocket_listen()
+
+Boolean MacSocket_ListenCompleted(const int inSocketNum);
+
+
+//     These really aren't very useful anymore
+
+Boolean MacSocket_LocalEndIsOpen(const int inSocketNum);
+Boolean MacSocket_RemoteEndIsOpen(const int inSocketNum);
+
+
+//     You may wish to change the userRefPtr for a socket callback-- use this to do it
+
+void MacSocket_SetUserRefPtr(const int inSocketNum,void *inNewRefPtr);
+
+
+//     Call these to get the socket's IP:port descriptor
+
+void MacSocket_GetLocalIPAndPort(const int inSocketNum,char *outIPAndPort,const int inIPAndPortLength);
+void MacSocket_GetRemoteIPAndPort(const int inSocketNum,char *outIPAndPort,const int inIPAndPortLength);
+
+
+//     Call this to get error info from a socket
+
+void MacSocket_GetSocketErrorInfo(const int inSocketNum,int *outSocketErrCode,char *outSocketErrString,const int inSocketErrStringMaxLength);
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/MacOS/OpenSSL.mcp.hqx b/MacOS/OpenSSL.mcp.hqx
new file mode 100644 (file)
index 0000000..dcbcf2e
--- /dev/null
@@ -0,0 +1,5103 @@
+(This file must be converted with BinHex 4.0)
+
+:#dp`C@j68d`ZE@0`!%e08(*$9dP&!!!!!l`!!!!!!299Bfp[E!!!!!-!!!%S!!1
+VN!!!!kbi!!!25!!!!+-"!J%!!!!!!!!!!!"$Ef4P9f&bFQP[FL"3FQpUC@0d!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$+J!
+!!d!!!'%r!!"N!!!!!bS!!!"I!!8!!!!!!'!!!3!!!!!!CJ!!!P`!!!*J!!!E2`!
+!(!!!!!*F!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$!!!!$!!!!!-!!!!-Y)+VS2r
+rhp-!!!!!!!!!!!!!!!!!!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!)!!!%!!!!!!J!!!3!!!!!#!!!"!!!!!!8!!(rr!!!!!(rr!!!!!(r
+r!!!!!(rr!!!!#!%!!3!!!!%"!3%"!!%"!!!!!!!"!3!!!3%!!3!!!3!"!!!!!!!
+!!!!!#!%!!3%!!3%!!!!"!!!0!!%!!!!!!""I69G&8NY6Ah"bC@CTH#jSD()J8&"
+$!!!!!!!!!!!!!!!"!!!!!3!!!!!"!!!!!!!!!!!!!!8"!3%!!!%"!!%!!!!!!3!
+!#8ePFQGP)%peG!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!$mr2cp"8&"-!!%"!!!%4%a(@'0VD@43FQpU9e033fT
+A8e"$!!!!!!!#!!%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!$!!!!!!!"!!!$!!!"!3%"!!%"!!%!!!'M!!!"Y3)!!!!#!!-r!!)!!!%!!!!
+!!J!"!3%"!!!"!!!!!!!"!!!$!!!""!!!!!!!!!!!!!)!!aF!!!!#!!%!(!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!!!!"3)"!!%"!!%"!3!!!3!!!!!!!!!#!!!
+!!J!#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#!!!
+!8J!!!IN#-`!!!!)!!3!F!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"`J!!!G8
+,!!!!#`!$AJ!!!!!!!!!!!!%!!!!"!!!!"J!!$dTKGQ&$E'&cFf9c,RTTF!!!!!!
+!!!!!!!!!!!!!!!"D59!J5N&@33!!!!3"!!!$!3!!!!!"!!!!"3%"!!%!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!&!!"rr`!!!!"rr`!!!!"rr`!!!!"rr`!!!!J"!3%!!!!"!3%
+"!3!"!3!!!!!!!3%!!!%"!!%!!!%%!3!!!!!!!!!!!!J"!!%"!!%"!!!!!3!!$3!
+"!!!!!!!3AdeA49*,8ep`FQ9QDAJZD'Kb)&"33`!!!!!!!!!!!!!!!3!!!!%!!!!
+!!3!!!!!!!!!!!!!#!!!!!3%!!!%"!!%!!cX!!!!!!!!"!!%!!!!!!!!!!!!#!!%
+"!3%!!!%!!!!!!!%!!!-!!!)!!3%"!3!!!3!!!!!!!3!!!`!!!J!"!3%"!!!"!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!!!!#3!!&deKBdp6)&4
+[EfaLEhJJ4%9#98FJ0MK,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!$mr2cp"8&"-!!!"J&M!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!2cmr2`!!!!!
+!!!!!!&8"N!!"#3*l!!!!!!!!!!!!!!!!!!!"J!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!(!3%!!3!!!3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!AepcG'&IAh0dBA*d!%C$6J!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!3!"!!!!!!!!!!!!!!!"!!)!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"J!!$dTKGQ&$E'&cFf9c,RTTF!!!!!!!!!!
+!!!!!!!!!!!"D59!J5N&@33!!!!B!!!p+BACK3faKFh0PFbjkDA!!!!!!!!!!!!!
+!!!!!!!!!@NP3)%T"9N%!!!!(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!%e658845@jdCA*ZCA3J4AK`E'pbCA)!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!5@9iF'a[FQ8ZCAKP!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!3
+"!!!$!3!!!!!%!!%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!!`!+!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!3!!!!%!!!9K,QpeG!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%!
+!!!!!"!!!!!!%!!!%!!!!!!3!93'3!!%*!RX!!!!!!!!!!!!!!!3"!!!$!3!!!!!
+"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%e658845@jdCA*ZCA3J4AK`E'pbCA)!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!5@9iF'a
+[FQ8ZCAKP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!3!!3!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!J!$!!S!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!!!!!3!!"@%ZEh9d!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!3!!!!!!%!!!!!!3!!!3!!!!!"!"9!C!!!3N#H`!
+!!!!!!!!!!!!!"!!"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#!!-!#J!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!%!!!!"!!!&B5j[GA3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
+!!!!!!!3!!!!!"!!!"!!!!!!%!&8"N!!"#3*l!!!!!!!!!!!!!!!(!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%e658845@jdCA*ZCA3J4AK`E'pbCA)
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!5@9
+iF'a[FQ8ZCAKP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!8!!(rr!!!!!(rr!!!!!(r
+r!!!!!(rr!!!!"3%"!!%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!3!"!!!!!3%"!3%!!3%
+!!!!!!!J"!!%"!!%"!!!!!3!!#3!!&deKBdp6)&4[EfaLEhJJ4%9#98FJ0MK,!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$mr2cp"8&"-!!!
+"J&M!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!2cmr2`!!!!!!!!!!!&8"N!!"#3*l!!!!!!!
+!!!!!!!!!!!!"J!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0!!%!!!!
+!!""I69G&8NY6Ah"bC@CTH#jSD()J8&"$!!!!!!!!!!!!!!!"!!!!!3!!!!!"!!!
+!!!!!!!!!!!8"!3%!!!%"!!%!!!!!"3)"!!%"!!%"!3!!!3!!!!!!!!!"!3%"!!%
+"!!%!!33!!!!!!!!!!!!!!!!$!!!!!M)!!!!#@!!!!!)c!!8"!3%!!!%"!!%!!!!
+!"`!$!!!!!!!!!3!!!!!!!!!!!!!"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)
+!!!T16dj"688Z49K&!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%!!!!!!"!!!!!!%!!!
+%!!!!!!3!93'3!!%*!RX!!!!!!!!!!!!!!!!"S!!!!E8-!!!!$!!$4RNK!)!!!!!
+"!!%!!!!!!!%!!!-!3Q&cD@-J9'p[E'*[H#"0G@adD6T$GA0dEfdJ5f9jGfpbC(-
+!3Q&cD@-J9'p[E'*[H#"0G@adD6T"Bf0PFh-J8'&dD(-!3Q&cD@-J9'p[E'*[H#"
+0G@adD6T8BA*RCA3J8f9dG'PZCh-!3Q&cD@-J9'p[E'*[H#"0G@adD6T'D@aP)%e
+KF("TEQGc!%*KFfPM)&4[EfaLEhJJ6A9XG'Nk3R9TE'3J4AKdFQ&c!%*KFfPM)&4
+[EfaLEhJJ6A9XG'Nk0MK,)%0[C'9(C@i!3Q&cD@-J9'p[E'*[H#"0G@adD6Sf1%X
+J4'PcBA0cC@eLE'9b!%*KFfPM)&4[EfaLEhJJ6A9XG'Nk0MK,)%aTEQYPFJ"#BA0
+TBb"8EfpXBQpi)%eeE(4T1MBi5b"3FQpUC@0d!%*KFfPM)&4[EfaLEhJJ6A9XG'N
+k3bp$+bXJ3fpYF'PXCA)!3Q&cD@-J9'p[E'*[H#"0G@adD6T$,d-V+b"ABA*ZD@j
+RF`"#BA0TBb"8EfpXBQpi)%eeE(4T1N0'66Bi5`"#BA0TBb"8EfpXBQpi)%eeE(4
+T1NP5)%p`G'PYDATPFJ"#BA0TBb"8EfpXBQpi)%eeE(4T1NTKGQ%J6h9dF(9d!%*
+KFfPM)&4[EfaLEhJJ6A9XG'Nk5Q&fB5"3FQpUC@0d!%*KFfPM)&4[EfaLEhJJ6A9
+XG'Nk5Q&fB5"@63"#BA0TBb"8EfpXBQpi)%eeE(4T1NeKBdp6)%ePFQGP)&"KEQ9
+X!%*KFfPM)&4[EfaLEhJJ6A9XG'Nk8'&cBf&X)%0[EA"TE'9b!%*KFfPM)&4[Efa
+LEhJJ6A9XG'Nk8'&cBf&X)&GKFQjTEQGc!%*KFfPM)&4[EfaLEhJJ6A9XG'Nk8&"
+$)%0[C'9(C@i!3Q&cD@-J9'p[E'*[H#"0G@adD6T38%-J4'PcBA0cC@eLE'9b!%*
+KFfPM)&4[EfaLEhJJ6A9XG'Nk8&"$)%aTEQYPFJ"#BA0TBb"8EfpXBQpi)%eeE(4
+T1P"33b"348B!3Q&cD@-J9'p[E'*[H#"0G@adD6T38%-J8(*[DQ9MG!"#BA0TBb"
+8EfpXBQpi)%eeE(4T1P"33d&cE5"3B@jPE!"#BA0TBb"8EfpXBQpi)%eeE(4T1P*
+PHL"$Efe`D@aPFJ"#BA0TBb"8EfpXBQpi)%eeE(4T1PGTEP*$)%0[EA"TE'9b!%*
+KFfPM)&4[EfaLEhJJ6A9XG'NkH$Jf)%0[C'9(C@i!3Q&cD@-J9'p[E'*[H#"0G@a
+dD6Ti1$BJ6'PZDf9b!%*KFfPM)&4[EfaLEhJJ6A9XG'NkH$Jf)&"bEfTPBh3!8(*
+[DQ9MG#"'D@aP)%aTFh3!3Q&cD@-J9'p[E'*[H#!f1'Xk3h9cG'pY)%YPHAG[FQ4
+c!%*KFfPM)&4[EfaLEhJJ0MKV1N&MBf9cFb"3BA4SF`"#BA0TBb"8EfpXBQpi)$B
+iDcT8BA*RCA3J8f9dG'PZCh-!3Q&cD@-J9'p[E'*[H#!f1'Xk4QPXC5"0BA"`D@j
+RF`"#BA0TBb"8EfpXBQpi)$BiDcT#G@PXC#"&H(4bBA-!3Q&cD@-J9'p[E'*[H#!
+f1'Xk0MK,)%0[C'9(C@i!3Q&cD@-J9'p[E'*[H#!f1'Xk0MK,)%4TFf&cFf9YBQa
+PFJ"#BA0TBb"8EfpXBQpi)$BiDcSf1%XJ6'PZDf9b!%*KFfPM)&4[EfaLEhJJ0MK
+V1MBi5b"3FQpUC@0d!%*KFfPM)&4[EfaLEhJJ0MKV1N-[3bXV)%0[EA"TE'9b!%*
+KFfPM)&4[EfaLEhJJ0MKV1N-[3bXV)&GKFQjTEQGc!%*KFfPM)&4[EfaLEhJJ0MK
+V1N0'66Bi5`"#BA0TBb"8EfpXBQpi)$BiDcT*8L"2F(4TE@PkCA)!3Q&cD@-J9'p
+[E'*[H#!f1'Xk5Q&fB5"2GA4`GA3!3Q&cD@-J9'p[E'*[H#!f1'Xk5Q&fB5"3FQp
+UC@0d!%*KFfPM)&4[EfaLEhJJ0MKV1NTKGQ%J9Nd!3Q&cD@-J9'p[E'*[H#!f1'X
+k6@&M6e-J6@9bCf8J8'&ZC@`!3Q&cD@-J9'p[E'*[H#!f1'Xk8'&cBf&X)%0[EA"
+TE'9b!%*KFfPM)&4[EfaLEhJJ0MKV1P"KFf0KE#"ABA*ZD@jRF`"#BA0TBb"8Efp
+XBQpi)$BiDcT38%-J3fpNC8GPEJ"#BA0TBb"8EfpXBQpi)$BiDcT38%-J4'PcBA0
+cC@eLE'9b!%*KFfPM)&4[EfaLEhJJ0MKV1P"33b"-D@jVCA)!3Q&cD@-J9'p[E'*
+[H#!f1'Xk8&"$)&"&4J"#BA0TBb"8EfpXBQpi)$BiDcT38%-J8(*[DQ9MG!"#BA0
+TBb"8EfpXBQpi)$BiDcT38%0"FfdJ8'&ZC@`!3Q&cD@-J9'p[E'*[H#!f1'Xk8Q9
+k)%0[EA"TE'9b!%*KFfPM)&4[EfaLEhJJ0MKV1PGTEP*$)%0[EA"TE'9b!%*KFfP
+M)&4[EfaLEhJJ0MKV1RJi0L"$Ef4P4f9Z!%*KFfPM)&4[EfaLEhJJ0MKV1RJi0L"
+-D@jVCA)!3Q&cD@-J9'p[E'*[H#!f1'XkH$Jf)&"bEfTPBh3!3Q&cBfNJ9'p[E'*
+[H#"38%-k3h9cG'pY)%YPHAG[FQ4c!%*KFf0T)&4[EfaLEhJJ8&"$1N&MBf9cFb"
+3BA4SF`"#BA0MD5"8EfpXBQpi)&"33cT8BA*RCA3J8f9dG'PZCh-!3Q&cBfNJ9'p
+[E'*[H#"38%-k4QPXC5"0BA"`D@jRF`"#BA0MD5"8EfpXBQpi)&"33cT#G@PXC#"
+&H(4bBA-!3Q&cBfNJ9'p[E'*[H#"38%-k0MK,)%0[C'9(C@i!3Q&cBfNJ9'p[E'*
+[H#"38%-k0MK,)%4TFf&cFf9YBQaPFJ"#BA0MD5"8EfpXBQpi)&"33cSf1%XJ6'P
+ZDf9b!%*KFf0T)&4[EfaLEhJJ8&"$1MBi5b"3FQpUC@0d!%*KFf0T)&4[EfaLEhJ
+J8&"$1N-[3bXV)%0[EA"TE'9b!%*KFf0T)&4[EfaLEhJJ8&"$1N-[3bXV)&GKFQj
+TEQGc!%*KFf0T)&4[EfaLEhJJ8&"$1N0'66Bi5`"#BA0MD5"8EfpXBQpi)&"33cT
+*8L"2F(4TE@PkCA)!3Q&cBfNJ9'p[E'*[H#"38%-k5Q&fB5"2GA4`GA3!3Q&cBfN
+J9'p[E'*[H#"38%-k5Q&fB5"3FQpUC@0d!%*KFf0T)&4[EfaLEhJJ8&"$1NTKGQ%
+J9Nd!3Q&cBfNJ9'p[E'*[H#"38%-k6@&M6e-J6@9bCf8J8'&ZC@`!3Q&cBfNJ9'p
+[E'*[H#"38%-k8'&cBf&X)%0[EA"TE'9b!%*KFf0T)&4[EfaLEhJJ8&"$1P"KFf0
+KE#"ABA*ZD@jRF`"#BA0MD5"8EfpXBQpi)&"33cT38%-J3fpNC8GPEJ"#BA0MD5"
+8EfpXBQpi)&"33cT38%-J4'PcBA0cC@eLE'9b!%*KFf0T)&4[EfaLEhJJ8&"$1P"
+33b"-D@jVCA)!3Q&cBfNJ9'p[E'*[H#"38%-k8&"$)&"&4J"#BA0MD5"8EfpXBQp
+i)&"33cT38%-J8(*[DQ9MG!"#BA0MD5"8EfpXBQpi)&"33cT38%0"FfdJ8'&ZC@`
+!3Q&cBfNJ9'p[E'*[H#"38%-k8Q9k)%0[EA"TE'9b!%*KFf0T)&4[EfaLEhJJ8&"
+$1PGTEP*$)%0[EA"TE'9b!%*KFf0T)&4[EfaLEhJJ8&"$1RJi0L"$Ef4P4f9Z!%*
+KFf0T)&4[EfaLEhJJ8&"$1RJi0L"-D@jVCA)!3Q&cBfNJ9'p[E'*[H#"38%-kH$J
+f)&"bEfTPBh3!3Q&cD@-J9'p[E'*[H#"38%-k3h9cG'pY)%YPHAG[FQ4c!%*KFfP
+M)&4[EfaLEhJJ8&"$1N&MBf9cFb"3BA4SF`"#BA0TBb"8EfpXBQpi)&"33cT8BA*
+RCA3J8f9dG'PZCh-!3Q&cD@-J9'p[E'*[H#"38%-k4QPXC5"0BA"`D@jRF`"#BA0
+TBb"8EfpXBQpi)&"33cT#G@PXC#"&H(4bBA-!3Q&cD@-J9'p[E'*[H#"38%-k0MK
+,)%0[C'9(C@i!3Q&cD@-J9'p[E'*[H#"38%-k0MK,)%4TFf&cFf9YBQaPFJ"#BA0
+TBb"8EfpXBQpi)&"33cSf1%XJ6'PZDf9b!%*KFfPM)&4[EfaLEhJJ8&"$1MBi5b"
+3FQpUC@0d!%*KFfPM)&4[EfaLEhJJ8&"$1N-[3bXV)%0[EA"TE'9b!%*KFfPM)&4
+[EfaLEhJJ8&"$1N-[3bXV)&GKFQjTEQGc!%*KFfPM)&4[EfaLEhJJ8&"$1N0'66B
+i5`"#BA0TBb"8EfpXBQpi)&"33cT*8L"2F(4TE@PkCA)!3Q&cD@-J9'p[E'*[H#"
+38%-k5Q&fB5"2GA4`GA3!3Q&cD@-J9'p[E'*[H#"38%-k5Q&fB5"3FQpUC@0d!%*
+KFfPM)&4[EfaLEhJJ8&"$1NTKGQ%J9Nd!3Q&cD@-J9'p[E'*[H#"38%-k6@&M6e-
+J6@9bCf8J8'&ZC@`!3Q&cD@-J9'p[E'*[H#"38%-k8'&cBf&X)%0[EA"TE'9b!%*
+KFfPM)&4[EfaLEhJJ8&"$1P"KFf0KE#"ABA*ZD@jRF`"#BA0TBb"8EfpXBQpi)&"
+33cT38%-J3fpNC8GPEJ"#BA0TBb"8EfpXBQpi)&"33cT38%-J4'PcBA0cC@eLE'9
+b!%*KFfPM)&4[EfaLEhJJ8&"$1P"33b"-D@jVCA)!3Q&cD@-J9'p[E'*[H#"38%-
+k8&"$)&"&4J"#BA0TBb"8EfpXBQpi)&"33cT38%-J8(*[DQ9MG!"#BA0TBb"8Efp
+XBQpi)&"33cT38%0"FfdJ8'&ZC@`!3Q&cD@-J9'p[E'*[H#"38%-k8Q9k)%0[EA"
+TE'9b!%*KFfPM)&4[EfaLEhJJ8&"$1PGTEP*$)%0[EA"TE'9b!%*KFfPM)&4[Efa
+LEhJJ8&"$1RJi0L"$Ef4P4f9Z!%*KFfPM)&4[EfaLEhJJ8&"$1RJi0L"-D@jVCA)
+!3Q&cD@-J9'p[E'*[H#"38%-kH$Jf)&"bEfTPBh3!3Q&cD@-J9'p[E'*[H#"'393
+k3h9cG'pY)%YPHAG[FQ4c!%*KFfPM)&4[EfaLEhJJ4N&81N&MBf9cFb"3BA4SF`"
+#BA0TBb"8EfpXBQpi)%C"9$T8BA*RCA3J8f9dG'PZCh-!3Q&cD@-J9'p[E'*[H#"
+'393k4QPXC5"0BA"`D@jRF`"#BA0TBb"8EfpXBQpi)%C"9$T#G@PXC#"&H(4bBA-
+!3Q&cD@-J9'p[E'*[H#"'393k0MK,)%0[C'9(C@i!3Q&cD@-J9'p[E'*[H#"'393
+k0MK,)%4TFf&cFf9YBQaPFJ"#BA0TBb"8EfpXBQpi)%C"9$Sf1%XJ6'PZDf9b!%*
+KFfPM)&4[EfaLEhJJ4N&81MBi5b"3FQpUC@0d!%*KFfPM)&4[EfaLEhJJ4N&81N-
+[3bXV)%0[EA"TE'9b!%*KFfPM)&4[EfaLEhJJ4N&81N-[3bXV)&GKFQjTEQGc!%*
+KFfPM)&4[EfaLEhJJ4N&81N0'66Bi5`"#BA0TBb"8EfpXBQpi)%C"9$T*8L"2F(4
+TE@PkCA)!3Q&cD@-J9'p[E'*[H#"'393k5Q&fB5"2GA4`GA3!3Q&cD@-J9'p[E'*
+[H#"'393k5Q&fB5"3FQpUC@0d!%*KFfPM)&4[EfaLEhJJ4N&81NTKGQ%J9Nd!3Q&
+cD@-J9'p[E'*[H#"'393k6@&M6e-J6@9bCf8J8'&ZC@`!3Q&cD@-J9'p[E'*[H#"
+'393k8'&cBf&X)%0[EA"TE'9b!%*KFfPM)&4[EfaLEhJJ4N&81P"KFf0KE#"ABA*
+ZD@jRF`"#BA0TBb"8EfpXBQpi)%C"9$T38%-J3fpNC8GPEJ"#BA0TBb"8EfpXBQp
+i)%C"9$T38%-J4'PcBA0cC@eLE'9b!%*KFfPM)&4[EfaLEhJJ4N&81P"33b"-D@j
+VCA)!3Q&cD@-J9'p[E'*[H#"'393k8&"$)&"&4J"#BA0TBb"8EfpXBQpi)%C"9$T
+38%-J8(*[DQ9MG!"#BA0TBb"8EfpXBQpi)%C"9$T38%0"FfdJ8'&ZC@`!3Q&cD@-
+J9'p[E'*[H#"'393k8Q9k)%0[EA"TE'9b!%*KFfPM)&4[EfaLEhJJ4N&81PGTEP*
+$)%0[EA"TE'9b!%*KFfPM)&4[EfaLEhJJ4N&81RJi0L"$Ef4P4f9Z!%*KFfPM)&4
+[EfaLEhJJ4N&81RJi0L"-D@jVCA)!3Q&cD@-J9'p[E'*[H#"'393kH$Jf)&"bEfT
+PBh3!3Q&cD@-J9'p[E'*[H#"%48*94b!f1'Xk3h9cG'pY)%YPHAG[FQ4c!%*KFfP
+M)&4[EfaLEhJJ4%9#98FJ0MKV1N&MBf9cFb"3BA4SF`"#BA0TBb"8EfpXBQpi)%4
+&3P9()$BiDcT8BA*RCA3J8f9dG'PZCh-!3Q&cD@-J9'p[E'*[H#"%48*94b!f1'X
+k4QPXC5"0BA"`D@jRF`"#BA0TBb"8EfpXBQpi)%4&3P9()$BiDcT#G@PXC#"&H(4
+bBA-!3Q&cD@-J9'p[E'*[H#"%48*94b!f1'Xk0MK,)%0[C'9(C@i!3Q&cD@-J9'p
+[E'*[H#"%48*94b!f1'Xk0MK,)%4TFf&cFf9YBQaPFJ"#BA0TBb"8EfpXBQpi)%4
+&3P9()$BiDcSf1%XJ6'PZDf9b!%*KFfPM)&4[EfaLEhJJ4%9#98FJ0MKV1MBi5b"
+3FQpUC@0d!%*KFfPM)&4[EfaLEhJJ4%9#98FJ0MKV1N-[3bXV)%0[EA"TE'9b!%*
+KFfPM)&4[EfaLEhJJ4%9#98FJ0MKV1N-[3bXV)&GKFQjTEQGc!%*KFfPM)&4[Efa
+LEhJJ4%9#98FJ0MKV1N0'66Bi5`"#BA0TBb"8EfpXBQpi)%4&3P9()$BiDcT*8L"
+2F(4TE@PkCA)!3Q&cD@-J9'p[E'*[H#"%48*94b!f1'Xk6@&M6e-J6@9bCf8J8'&
+ZC@`!3Q&cD@-J9'p[E'*[H#"%48*94b!f1'Xk8'&cBf&X)%0[EA"TE'9b!%*KFfP
+M)&4[EfaLEhJJ4%9#98FJ0MKV1P"KFf0KE#"ABA*ZD@jRF`"#BA0TBb"8EfpXBQp
+i)%4&3P9()$BiDcT38%-J3fpNC8GPEJ"#BA0TBb"8EfpXBQpi)%4&3P9()$BiDcT
+38%-J4'PcBA0cC@eLE'9b!%*KFfPM)&4[EfaLEhJJ4%9#98FJ0MKV1P"33b"-D@j
+VCA)!3Q&cD@-J9'p[E'*[H#"%48*94b!f1'Xk8&"$)&"&4J"#BA0TBb"8EfpXBQp
+i)%4&3P9()$BiDcT38%-J8(*[DQ9MG!"#BA0TBb"8EfpXBQpi)%4&3P9()$BiDcT
+38%0"FfdJ8'&ZC@`!3Q&cD@-J9'p[E'*[H#"%48*94b!f1'Xk8Q9k)%0[EA"TE'9
+b!%*KFfPM)&4[EfaLEhJJ4%9#98FJ8&"$1N0eFh4[E5",CAPhEh*NF`"#BA0TBb"
+8EfpXBQpi)%4&3P9()&"33cT"Bf0PFh-J8'&dD(-!3Q&cD@-J9'p[E'*[H#"%48*
+94b"38%-k9'&bCf9d)&0PG(4TEQGc!%*KFfPM)&4[EfaLEhJJ4%9#98FJ8&"$1NC
+TE'8J6@&`F'PZCh-!3Q&cD@-J9'p[E'*[H#"%48*94b"38%-k3R9TE'3J4AKdFQ&
+c!%*KFfPM)&4[EfaLEhJJ4%9#98FJ8&"$1MBi5b"$Ef4P4f9Z!%*KFfPM)&4[Efa
+LEhJJ4%9#98FJ8&"$1MBi5b"%DA0KFh0PE@*XCA)!3Q&cD@-J9'p[E'*[H#"%48*
+94b"38%-k0MK,)%aTEQYPFJ"#BA0TBb"8EfpXBQpi)%4&3P9()&"33cSf1%XJ8(*
+[DQ9MG!"#BA0TBb"8EfpXBQpi)%4&3P9()&"33cT$,d-V+b"$Efe`D@aPFJ"#BA0
+TBb"8EfpXBQpi)%4&3P9()&"33cT$,d-V+b"ABA*ZD@jRF`"#BA0TBb"8EfpXBQp
+i)%4&3P9()&"33cT$4Ndf1%X!3Q&cD@-J9'p[E'*[H#"%48*94b"38%-k59)J6h"
+dD@eTHQ9b!%*KFfPM)&4[EfaLEhJJ4%9#98FJ8&"$1NeKBdp6)%ePFQGP)&"KEQ9
+X!%*KFfPM)&4[EfaLEhJJ4%9#98FJ8&"$1P"KFf0KE#"$Efe`D@aPFJ"#BA0TBb"
+8EfpXBQpi)%4&3P9()&"33cT3BA0MB@`J9f&bEQPZCh-!3Q&cD@-J9'p[E'*[H#"
+%48*94b"38%-k8&"$)%0[C'9(C@i!3Q&cD@-J9'p[E'*[H#"%48*94b"38%-k8&"
+$)%4TFf&cFf9YBQaPFJ"#BA0TBb"8EfpXBQpi)%4&3P9()&"33cT38%-J6'PZDf9
+b!%*KFfPM)&4[EfaLEhJJ4%9#98FJ8&"$1P"33b"348B!3Q&cD@-J9'p[E'*[H#"
+%48*94b"38%-k8&"$)&"bEfTPBh3!3Q&cD@-J9'p[E'*[H#"%48*94b"38%-k8&"
+$3A0Y)&"KEQ9X!%*KFfPM)&4[EfaLEhJJ4%9#98FJ8&"$1P*PHL"$Efe`D@aPFJ"
+0B@028b"8EfpXBQpi)$Bi5cT$GA0dEfdJ5f9jGfpbC(-!6@&M6e-J9'p[E'*[H#!
+f1%Xk3@0MCA0c)&"KG'Kc!%eKBdp6)&4[EfaLEhJJ0MK,1P4KFQGPG#"6CA4dD@j
+RF`"0B@028b"8EfpXBQpi)$Bi5cT'D@aP)%eKF("TEQGc!%eKBdp6)&4[EfaLEhJ
+J0MK,1N*eD@aN)%9iG(*KF`"0B@028b"8EfpXBQpi)$Bi5cSf1%XJ3fpNC8GPEJ"
+0B@028b"8EfpXBQpi)$Bi5cSf1%XJ4'PcBA0cC@eLE'9b!%eKBdp6)&4[EfaLEhJ
+J0MK,1MBi5b"-D@jVCA)!6@&M6e-J9'p[E'*[H#!f1%Xk0MK,)&"bEfTPBh3!6@&
+M6e-J9'p[E'*[H#!f1%Xk3bp$+bXJ3fpYF'PXCA)!6@&M6e-J9'p[E'*[H#!f1%X
+k3bp$+bXJ9f&bEQPZCh-!6@&M6e-J9'p[E'*[H#!f1%Xk3dC00MK,!%eKBdp6)&4
+[EfaLEhJJ0MK,1NP5)%p`G'PYDATPFJ"0B@028b"8EfpXBQpi)$Bi5cT0B@028b"
+0CA*RC5"3B@jPE!"0B@028b"8EfpXBQpi)$Bi5cT3BA0MB@`J3fpYF'PXCA)!6@&
+M6e-J9'p[E'*[H#!f1%Xk8'&cBf&X)&GKFQjTEQGc!%eKBdp6)&4[EfaLEhJJ0MK
+,1P"33b"$Ef4P4f9Z!%eKBdp6)&4[EfaLEhJJ0MK,1P"33b"%DA0KFh0PE@*XCA)
+!6@&M6e-J9'p[E'*[H#!f1%Xk8&"$)%aTEQYPFJ"0B@028b"8EfpXBQpi)$Bi5cT
+38%-J8%9'!%eKBdp6)&4[EfaLEhJJ0MK,1P"33b"3FQpUC@0d!%eKBdp6)&4[Efa
+LEhJJ0MK,1P"33d&cE5"3B@jPE!"0B@028b"8EfpXBQpi)$Bi5cT5CASJ3fpYF'P
+XCA)!6@&M6e-J9'p[E'*[H#"%48*94b!f1%Xk3h9cG'pY)%YPHAG[FQ4c!%eKBdp
+6)&4[EfaLEhJJ4%9#98FJ0MK,1N&MBf9cFb"3BA4SF`"0B@028b"8EfpXBQpi)%4
+&3P9()$Bi5cT8BA*RCA3J8f9dG'PZCh-!6@&M6e-J9'p[E'*[H#"%48*94b!f1%X
+k4QPXC5"0BA"`D@jRF`"0B@028b"8EfpXBQpi)%4&3P9()$Bi5cT#G@PXC#"&H(4
+bBA-!6@&M6e-J9'p[E'*[H#"%48*94b!f1%Xk0MK,)%0[C'9(C@i!6@&M6e-J9'p
+[E'*[H#"%48*94b!f1%Xk0MK,)%4TFf&cFf9YBQaPFJ"0B@028b"8EfpXBQpi)%4
+&3P9()$Bi5cSf1%XJ6'PZDf9b!%eKBdp6)&4[EfaLEhJJ4%9#98FJ0MK,1MBi5b"
+3FQpUC@0d!%eKBdp6)&4[EfaLEhJJ4%9#98FJ0MK,1N-[3bXV)%0[EA"TE'9b!%e
+KBdp6)&4[EfaLEhJJ4%9#98FJ0MK,1N-[3bXV)&GKFQjTEQGc!%eKBdp6)&4[Efa
+LEhJJ4%9#98FJ0MK,1N0'66Bi5`"0B@028b"8EfpXBQpi)%4&3P9()$Bi5cT*8L"
+2F(4TE@PkCA)!6@&M6e-J9'p[E'*[H#"%48*94b!f1%Xk6@&M6e-J6@9bCf8J8'&
+ZC@`!6@&M6e-J9'p[E'*[H#"%48*94b!f1%Xk8'&cBf&X)%0[EA"TE'9b!%eKBdp
+6)&4[EfaLEhJJ4%9#98FJ0MK,1P"KFf0KE#"ABA*ZD@jRF`"0B@028b"8EfpXBQp
+i)%4&3P9()$Bi5cT38%-J3fpNC8GPEJ"0B@028b"8EfpXBQpi)%4&3P9()$Bi5cT
+38%-J4'PcBA0cC@eLE'9b!%eKBdp6)&4[EfaLEhJJ4%9#98FJ0MK,1P"33b"-D@j
+VCA)!6@&M6e-J9'p[E'*[H#"%48*94b!f1%Xk8&"$)&"&4J"0B@028b"8EfpXBQp
+i)%4&3P9()$Bi5cT38%-J8(*[DQ9MG!"0B@028b"8EfpXBQpi)%4&3P9()$Bi5cT
+38%0"FfdJ8'&ZC@`!6@&M6e-J9'p[E'*[H#"%48*94b!f1%Xk8Q9k)%0[EA"TE'9
+b!%eKBdp6)&4[EfaLEhJJ4%9#98FJ8&"$1N0eFh4[E5",CAPhEh*NF`"0B@028b"
+8EfpXBQpi)%4&3P9()&"33cT"Bf0PFh-J8'&dD(-!6@&M6e-J9'p[E'*[H#"%48*
+94b"38%-k9'&bCf9d)&0PG(4TEQGc!%eKBdp6)&4[EfaLEhJJ4%9#98FJ8&"$1NC
+TE'8J6@&`F'PZCh-!6@&M6e-J9'p[E'*[H#"%48*94b"38%-k3R9TE'3J4AKdFQ&
+c!%eKBdp6)&4[EfaLEhJJ4%9#98FJ8&"$1MBi5b"$Ef4P4f9Z!%eKBdp6)&4[Efa
+LEhJJ4%9#98FJ8&"$1MBi5b"%DA0KFh0PE@*XCA)!6@&M6e-J9'p[E'*[H#"%48*
+94b"38%-k0MK,)%aTEQYPFJ"0B@028b"8EfpXBQpi)%4&3P9()&"33cSf1%XJ8(*
+[DQ9MG!"0B@028b"8EfpXBQpi)%4&3P9()&"33cT$,d-V+b"$Efe`D@aPFJ"0B@0
+28b"8EfpXBQpi)%4&3P9()&"33cT$,d-V+b"ABA*ZD@jRF`"0B@028b"8EfpXBQp
+i)%4&3P9()&"33cT$4Ndf1%X!6@&M6e-J9'p[E'*[H#"%48*94b"38%-k59)J6h"
+dD@eTHQ9b!%eKBdp6)&4[EfaLEhJJ4%9#98FJ8&"$1NeKBdp6)%ePFQGP)&"KEQ9
+X!%eKBdp6)&4[EfaLEhJJ4%9#98FJ8&"$1P"KFf0KE#"$Efe`D@aPFJ"0B@028b"
+8EfpXBQpi)%4&3P9()&"33cT3BA0MB@`J9f&bEQPZCh-!6@&M6e-J9'p[E'*[H#"
+%48*94b"38%-k8&"$)%0[C'9(C@i!6@&M6e-J9'p[E'*[H#"%48*94b"38%-k8&"
+$)%4TFf&cFf9YBQaPFJ"0B@028b"8EfpXBQpi)%4&3P9()&"33cT38%-J6'PZDf9
+b!%eKBdp6)&4[EfaLEhJJ4%9#98FJ8&"$1P"33b"348B!6@&M6e-J9'p[E'*[H#"
+%48*94b"38%-k8&"$)&"bEfTPBh3!6@&M6e-J9'p[E'*[H#"%48*94b"38%-k8&"
+$3A0Y)&"KEQ9X!%eKBdp6)&4[EfaLEhJJ4%9#98FJ8&"$1P*PHL"$Efe`D@aPFJ"
+0B@028b"8EfpXBQpi)&"33cT$GA0dEfdJ5f9jGfpbC(-!6@&M6e-J9'p[E'*[H#"
+38%-k3@0MCA0c)&"KG'Kc!%eKBdp6)&4[EfaLEhJJ8&"$1P4KFQGPG#"6CA4dD@j
+RF`"0B@028b"8EfpXBQpi)&"33cT'D@aP)%eKF("TEQGc!%eKBdp6)&4[EfaLEhJ
+J8&"$1N*eD@aN)%9iG(*KF`"0B@028b"8EfpXBQpi)&"33cSf1%XJ3fpNC8GPEJ"
+0B@028b"8EfpXBQpi)&"33cSf1%XJ4'PcBA0cC@eLE'9b!%eKBdp6)&4[EfaLEhJ
+J8&"$1MBi5b"-D@jVCA)!6@&M6e-J9'p[E'*[H#"38%-k0MK,)&"bEfTPBh3!6@&
+M6e-J9'p[E'*[H#"38%-k3bp$+bXJ3fpYF'PXCA)!6@&M6e-J9'p[E'*[H#"38%-
+k3bp$+bXJ9f&bEQPZCh-!6@&M6e-J9'p[E'*[H#"38%-k3dC00MK,!%eKBdp6)&4
+[EfaLEhJJ8&"$1NP5)%p`G'PYDATPFJ"0B@028b"8EfpXBQpi)&"33cT0B@028b"
+0CA*RC5"3B@jPE!"0B@028b"8EfpXBQpi)&"33cT3BA0MB@`J3fpYF'PXCA)!6@&
+M6e-J9'p[E'*[H#"38%-k8'&cBf&X)&GKFQjTEQGc!%eKBdp6)&4[EfaLEhJJ8&"
+$1P"33b"$Ef4P4f9Z!%eKBdp6)&4[EfaLEhJJ8&"$1P"33b"%DA0KFh0PE@*XCA)
+!6@&M6e-J9'p[E'*[H#"38%-k8&"$)%aTEQYPFJ"0B@028b"8EfpXBQpi)&"33cT
+38%-J8%9'!%eKBdp6)&4[EfaLEhJJ8&"$1P"33b"3FQpUC@0d!%eKBdp6)&4[Efa
+LEhJJ8&"$1P"33d&cE5"3B@jPE!"0B@028b"8EfpXBQpi)&"33cT5CASJ3fpYF'P
+XCA)!6@&M6e-J9'p[E'*[H#"'393k3h9cG'pY)%YPHAG[FQ4c!%eKBdp6)&4[Efa
+LEhJJ4N&81N&MBf9cFb"3BA4SF`"0B@028b"8EfpXBQpi)%C"9$T8BA*RCA3J8f9
+dG'PZCh-!6@&M6e-J9'p[E'*[H#"'393k4QPXC5"0BA"`D@jRF`"0B@028b"8Efp
+XBQpi)%C"9$T#G@PXC#"&H(4bBA-!6@&M6e-J9'p[E'*[H#"'393k0MK,)%0[C'9
+(C@i!6@&M6e-J9'p[E'*[H#"'393k0MK,)%4TFf&cFf9YBQaPFJ"0B@028b"8Efp
+XBQpi)%C"9$Sf1%XJ6'PZDf9b!%eKBdp6)&4[EfaLEhJJ4N&81MBi5b"3FQpUC@0
+d!%eKBdp6)&4[EfaLEhJJ4N&81N-[3bXV)%0[EA"TE'9b!%eKBdp6)&4[EfaLEhJ
+J4N&81N-[3bXV)&GKFQjTEQGc!%eKBdp6)&4[EfaLEhJJ4N&81N0'66Bi5`"0B@0
+28b"8EfpXBQpi)%C"9$T*8L"2F(4TE@PkCA)!6@&M6e-J9'p[E'*[H#"'393k6@&
+M6e-J6@9bCf8J8'&ZC@`!6@&M6e-J9'p[E'*[H#"'393k8'&cBf&X)%0[EA"TE'9
+b!%eKBdp6)&4[EfaLEhJJ4N&81P"KFf0KE#"ABA*ZD@jRF`"0B@028b"8EfpXBQp
+i)%C"9$T38%-J3fpNC8GPEJ"0B@028b"8EfpXBQpi)%C"9$T38%-J4'PcBA0cC@e
+LE'9b!%eKBdp6)&4[EfaLEhJJ4N&81P"33b"-D@jVCA)!6@&M6e-J9'p[E'*[H#"
+'393k8&"$)&"&4J"0B@028b"8EfpXBQpi)%C"9$T38%-J8(*[DQ9MG!"0B@028b"
+8EfpXBQpi)%C"9$T38%0"FfdJ8'&ZC@`!6@&M6e-J9'p[E'*[H#"'393k8Q9k)%0
+[EA"TE'9b!%eKBdp6)&4[EfaLEhJJ4%9#98FJ0MK,1N*TFfpZ)&"KEQ9X!%eKBdp
+6)&4[EfaLEhJJ4%9#98FJ0MK,1NCXCAJJ8'&ZC@`!6@&M6e-J9'p[E'*[H#"%48*
+94b!f1%Xk5Q&fB5"2GA4`GA3!6@&M6e-J9'p[E'*[H#"%48*94b!f1%Xk5Q&fB5"
+3FQpUC@0d!%eKBdp6)&4[EfaLEhJJ4%9#98FJ0MK,1NTKGQ%J9Nd!6@&M6e-J9'p
+[E'*[H#"%48*94b!f1%Xk9fPZ8N-J3fpYF'PXCA)!6@&M6e-J9'p[E'*[H#"%48*
+94b!f1%XkH$Jf)%0[C'9(C@i!6@&M6e-J9'p[E'*[H#"%48*94b!f1%XkH$Jf)%a
+TEQYPFJ"0B@028b"8EfpXBQpi)%4&3P9()$Bi5cTi1$BJ8(*[DQ9MG!"0B@028b"
+8EfpXBQpi)%4&3P9()&"33cT#DA0[EL"3B@jPE!"0B@028b"8EfpXBQpi)%4&3P9
+()&"33cT'E'9i)&"KEQ9X!%eKBdp6)&4[EfaLEhJJ4%9#98FJ8&"$1NTKGQ%J6h9
+dF(9d!%eKBdp6)&4[EfaLEhJJ4%9#98FJ8&"$1NTKGQ%J8(*[DQ9MG!"0B@028b"
+8EfpXBQpi)%4&3P9()&"33cT+BACK)&C0!%eKBdp6)&4[EfaLEhJJ4%9#98FJ8&"
+$1PGTEP*$)%0[EA"TE'9b!%eKBdp6)&4[EfaLEhJJ4%9#98FJ8&"$1RJi0L"$Ef4
+P4f9Z!%eKBdp6)&4[EfaLEhJJ4%9#98FJ8&"$1RJi0L"-D@jVCA)!6@&M6e-J9'p
+[E'*[H#"%48*94b"38%-kH$Jf)&"bEfTPBh3!6@&M6e-J9'p[E'*[H#!f1%Xk3QP
+cEfiJ8'&ZC@`!6@&M6e-J9'p[E'*[H#!f1%Xk4QaPH#"3B@jPE!"0B@028b"8Efp
+XBQpi)$Bi5cT+BACK)%peG("eG!"0B@028b"8EfpXBQpi)$Bi5cT+BACK)&"bEfT
+PBh3!6@&M6e-J9'p[E'*[H#!f1%Xk5Q&fB5"@63"0B@028b"8EfpXBQpi)$Bi5cT
+AD@j53b"$Efe`D@aPFJ"0B@028b"8EfpXBQpi)$Bi5cTi1$BJ3fpNC8GPEJ"0B@0
+28b"8EfpXBQpi)$Bi5cTi1$BJ6'PZDf9b!%eKBdp6)&4[EfaLEhJJ0MK,1RJi0L"
+3FQpUC@0d!%eKBdp6)&4[EfaLEhJJ8&"$1N*TFfpZ)&"KEQ9X!%eKBdp6)&4[Efa
+LEhJJ8&"$1NCXCAJJ8'&ZC@`!6@&M6e-J9'p[E'*[H#"38%-k5Q&fB5"2GA4`GA3
+!6@&M6e-J9'p[E'*[H#"38%-k5Q&fB5"3FQpUC@0d!%eKBdp6)&4[EfaLEhJJ8&"
+$1NTKGQ%J9Nd!6@&M6e-J9'p[E'*[H#"38%-k9fPZ8N-J3fpYF'PXCA)!6@&M6e-
+J9'p[E'*[H#"38%-kH$Jf)%0[C'9(C@i!6@&M6e-J9'p[E'*[H#"38%-kH$Jf)%a
+TEQYPFJ"0B@028b"8EfpXBQpi)&"33cTi1$BJ8(*[DQ9MG!!f1%XJ4'9LG@FJ6@&
+M6e-J9'p[E'*[H$T$GA0dEfdJ5f9jGfpbC(-!0MK,)%4PBR9R)%eKBdp6)&4[Efa
+LEhJk3@0MCA0c)&"KG'Kc!$Bi5b"%C@*eCb"0B@028b"8EfpXBQpi1P4KFQGPG#"
+6CA4dD@jRF`!f1%XJ4'9LG@FJ6@&M6e-J9'p[E'*[H$T'D@aP)%eKF("TEQGc!$B
+i5b"%C@*eCb"0B@028b"8EfpXBQpi1N*eD@aN)%9iG(*KF`!f1%XJ4'9LG@FJ6@&
+M6e-J9'p[E'*[H$Sf1%XJ3fpNC8GPEJ!f1%XJ4'9LG@FJ6@&M6e-J9'p[E'*[H$S
+f1%XJ4'PcBA0cC@eLE'9b!$Bi5b"%C@*eCb"0B@028b"8EfpXBQpi1MBi5b"-D@j
+VCA)!0MK,)%4PBR9R)%eKBdp6)&4[EfaLEhJk0MK,)&"bEfTPBh3!0MK,)%4PBR9
+R)%eKBdp6)&4[EfaLEhJk3bp$+bXJ3fpYF'PXCA)!0MK,)%4PBR9R)%eKBdp6)&4
+[EfaLEhJk3bp$+bXJ9f&bEQPZCh-!0MK,)%4PBR9R)%eKBdp6)&4[EfaLEhJk3dC
+00MK,!$Bi5b"%C@*eCb"0B@028b"8EfpXBQpi1NP5)%p`G'PYDATPFJ!f1%XJ4'9
+LG@FJ6@&M6e-J9'p[E'*[H$T+BACK)%peG("eG!!f1%XJ4'9LG@FJ6@&M6e-J9'p
+[E'*[H$T+BACK)&"bEfTPBh3!0MK,)%4PBR9R)%eKBdp6)&4[EfaLEhJk5Q&fB5"
+@63!f1%XJ4'9LG@FJ6@&M6e-J9'p[E'*[H$T0B@028b"0CA*RC5"3B@jPE!!f1%X
+J4'9LG@FJ6@&M6e-J9'p[E'*[H$T3BA0MB@`J3fpYF'PXCA)!0MK,)%4PBR9R)%e
+KBdp6)&4[EfaLEhJk8'&cBf&X)&GKFQjTEQGc!$Bi5b"%C@*eCb"0B@028b"8Efp
+XBQpi1P"33b"$Ef4P4f9Z!$Bi5b"%C@*eCb"0B@028b"8EfpXBQpi1P"33b"%DA0
+KFh0PE@*XCA)!0MK,)%4PBR9R)%eKBdp6)&4[EfaLEhJk8&"$)%aTEQYPFJ!f1%X
+J4'9LG@FJ6@&M6e-J9'p[E'*[H$T38%-J8%9'!$Bi5b"%C@*eCb"0B@028b"8Efp
+XBQpi1P"33b"3FQpUC@0d!$Bi5b"%C@*eCb"0B@028b"8EfpXBQpi1P"33d&cE5"
+3B@jPE!!f1%XJ4'9LG@FJ6@&M6e-J9'p[E'*[H$T5CASJ3fpYF'PXCA)!0MK,)%4
+PBR9R)%eKBdp6)&4[EfaLEhJk9fPZ8N-J3fpYF'PXCA)!0MK,)%4PBR9R)%eKBdp
+6)&4[EfaLEhJkH$Jf)%0[C'9(C@i!0MK,)%4PBR9R)%eKBdp6)&4[EfaLEhJkH$J
+f)%aTEQYPFJ!f1%XJ4'9LG@FJ6@&M6e-J9'p[E'*[H$Ti1$BJ8(*[DQ9MG!"38%-
+J4'9LG@FJ6@&M6e-J9'p[E'*[H$T$GA0dEfdJ5f9jGfpbC(-!8&"$)%4PBR9R)%e
+KBdp6)&4[EfaLEhJk3@0MCA0c)&"KG'Kc!&"33b"%C@*eCb"0B@028b"8EfpXBQp
+i1P4KFQGPG#"6CA4dD@jRF`"38%-J4'9LG@FJ6@&M6e-J9'p[E'*[H$T'D@aP)%e
+KF("TEQGc!&"33b"%C@*eCb"0B@028b"8EfpXBQpi1N*eD@aN)%9iG(*KF`"38%-
+J4'9LG@FJ6@&M6e-J9'p[E'*[H$Sf1%XJ3fpNC8GPEJ"38%-J4'9LG@FJ6@&M6e-
+J9'p[E'*[H$Sf1%XJ4'PcBA0cC@eLE'9b!&"33b"%C@*eCb"0B@028b"8EfpXBQp
+i1MBi5b"-D@jVCA)!8&"$)%4PBR9R)%eKBdp6)&4[EfaLEhJk0MK,)&"bEfTPBh3
+!8&"$)%4PBR9R)%eKBdp6)&4[EfaLEhJk3bp$+bXJ3fpYF'PXCA)!8&"$)%4PBR9
+R)%eKBdp6)&4[EfaLEhJk3bp$+bXJ9f&bEQPZCh-!8&"$)%4PBR9R)%eKBdp6)&4
+[EfaLEhJk3dC00MK,!&"33b"%C@*eCb"0B@028b"8EfpXBQpi1NP5)%p`G'PYDAT
+PFJ"38%-J4'9LG@FJ6@&M6e-J9'p[E'*[H$T+BACK)%peG("eG!"38%-J4'9LG@F
+J6@&M6e-J9'p[E'*[H$T+BACK)&"bEfTPBh3!8&"$)%4PBR9R)%eKBdp6)&4[Efa
+LEhJk5Q&fB5"@63"38%-J4'9LG@FJ6@&M6e-J9'p[E'*[H$T0B@028b"0CA*RC5"
+3B@jPE!"38%-J4'9LG@FJ6@&M6e-J9'p[E'*[H$T3BA0MB@`J3fpYF'PXCA)!8&"
+$)%4PBR9R)%eKBdp6)&4[EfaLEhJk8'&cBf&X)&GKFQjTEQGc!&"33b"%C@*eCb"
+0B@028b"8EfpXBQpi1P"33b"$Ef4P4f9Z!&"33b"%C@*eCb"0B@028b"8EfpXBQp
+i1P"33b"%DA0KFh0PE@*XCA)!8&"$)%4PBR9R)%eKBdp6)&4[EfaLEhJk8&"$)%a
+TEQYPFJ"38%-J4'9LG@FJ6@&M6e-J9'p[E'*[H$T38%-J8%9'!&"33b"%C@*eCb"
+0B@028b"8EfpXBQpi1P"33b"3FQpUC@0d!&"33b"%C@*eCb"0B@028b"8EfpXBQp
+i1P"33d&cE5"3B@jPE!"38%-J4'9LG@FJ6@&M6e-J9'p[E'*[H$T5CASJ3fpYF'P
+XCA)!8&"$)%4PBR9R)%eKBdp6)&4[EfaLEhJk9fPZ8N-J3fpYF'PXCA)!8&"$)%4
+PBR9R)%eKBdp6)&4[EfaLEhJkH$Jf)%0[C'9(C@i!8&"$)%4PBR9R)%eKBdp6)&4
+[EfaLEhJkH$Jf)%aTEQYPFJ"38%-J4'9LG@FJ6@&M6e-J9'p[E'*[H$Ti1$BJ8(*
+[DQ9MG!!f1%XJ4QPZB@`J6@&M6e-J9'p[E'*[H$T$GA0dEfdJ5f9jGfpbC(-!0MK
+,)%CTEQ&X)%eKBdp6)&4[EfaLEhJk3@0MCA0c)&"KG'Kc!$Bi5b"'D@jKE#"0B@0
+28b"8EfpXBQpi1P4KFQGPG#"6CA4dD@jRF`!f1%XJ4QPZB@`J6@&M6e-J9'p[E'*
+[H$T'D@aP)%eKF("TEQGc!$Bi5b"'D@jKE#"0B@028b"8EfpXBQpi1N*eD@aN)%9
+iG(*KF`!f1%XJ4QPZB@`J6@&M6e-J9'p[E'*[H$Sf1%XJ3fpNC8GPEJ!f1%XJ4QP
+ZB@`J6@&M6e-J9'p[E'*[H$Sf1%XJ4'PcBA0cC@eLE'9b!$Bi5b"'D@jKE#"0B@0
+28b"8EfpXBQpi1MBi5b"-D@jVCA)!0MK,)%CTEQ&X)%eKBdp6)&4[EfaLEhJk0MK
+,)&"bEfTPBh3!0MK,)%CTEQ&X)%eKBdp6)&4[EfaLEhJk3bp$+bXJ3fpYF'PXCA)
+!0MK,)%CTEQ&X)%eKBdp6)&4[EfaLEhJk3bp$+bXJ9f&bEQPZCh-!0MK,)%CTEQ&
+X)%eKBdp6)&4[EfaLEhJk3dC00MK,!$Bi5b"'D@jKE#"0B@028b"8EfpXBQpi1NP
+5)%p`G'PYDATPFJ!f1%XJ4QPZB@`J6@&M6e-J9'p[E'*[H$T+BACK)%peG("eG!!
+f1%XJ4QPZB@`J6@&M6e-J9'p[E'*[H$T+BACK)&"bEfTPBh3!0MK,)%CTEQ&X)%e
+KBdp6)&4[EfaLEhJk5Q&fB5"@63!f1%XJ4QPZB@`J6@&M6e-J9'p[E'*[H$T0B@0
+28b"0CA*RC5"3B@jPE!!f1%XJ4QPZB@`J6@&M6e-J9'p[E'*[H$T3BA0MB@`J3fp
+YF'PXCA)!0MK,)%CTEQ&X)%eKBdp6)&4[EfaLEhJk8'&cBf&X)&GKFQjTEQGc!$B
+i5b"'D@jKE#"0B@028b"8EfpXBQpi1P"33b"$Ef4P4f9Z!$Bi5b"'D@jKE#"0B@0
+28b"8EfpXBQpi1P"33b"%DA0KFh0PE@*XCA)!0MK,)%CTEQ&X)%eKBdp6)&4[Efa
+LEhJk8&"$)%aTEQYPFJ!f1%XJ4QPZB@`J6@&M6e-J9'p[E'*[H$T38%-J8%9'!$B
+i5b"'D@jKE#"0B@028b"8EfpXBQpi1P"33b"3FQpUC@0d!$Bi5b"'D@jKE#"0B@0
+28b"8EfpXBQpi1P"33d&cE5"3B@jPE!!f1%XJ4QPZB@`J6@&M6e-J9'p[E'*[H$T
+5CASJ3fpYF'PXCA)!0MK,)%CTEQ&X)%eKBdp6)&4[EfaLEhJk9fPZ8N-J3fpYF'P
+XCA)!0MK,)%CTEQ&X)%eKBdp6)&4[EfaLEhJkH$Jf)%0[C'9(C@i!0MK,)%CTEQ&
+X)%eKBdp6)&4[EfaLEhJkH$Jf)%aTEQYPFJ!f1%XJ4QPZB@`J6@&M6e-J9'p[E'*
+[H$Ti1$BJ8(*[DQ9MG!"38%-J4QPZB@`J6@&M6e-J9'p[E'*[H$T$GA0dEfdJ5f9
+jGfpbC(-!8&"$)%CTEQ&X)%eKBdp6)&4[EfaLEhJk3@0MCA0c)&"KG'Kc!&"33b"
+'D@jKE#"0B@028b"8EfpXBQpi1P4KFQGPG#"6CA4dD@jRF`"38%-J4QPZB@`J6@&
+M6e-J9'p[E'*[H$T'D@aP)%eKF("TEQGc!&"33b"'D@jKE#"0B@028b"8EfpXBQp
+i1N*eD@aN)%9iG(*KF`"38%-J4QPZB@`J6@&M6e-J9'p[E'*[H$Sf1%XJ3fpNC8G
+PEJ"38%-J4QPZB@`J6@&M6e-J9'p[E'*[H$Sf1%XJ4'PcBA0cC@eLE'9b!&"33b"
+'D@jKE#"0B@028b"8EfpXBQpi1MBi5b"-D@jVCA)!8&"$)%CTEQ&X)%eKBdp6)&4
+[EfaLEhJk0MK,)&"bEfTPBh3!8&"$)%CTEQ&X)%eKBdp6)&4[EfaLEhJk3bp$+bX
+J3fpYF'PXCA)!8&"$)%CTEQ&X)%eKBdp6)&4[EfaLEhJk3bp$+bXJ9f&bEQPZCh-
+!8&"$)%CTEQ&X)%eKBdp6)&4[EfaLEhJk3dC00MK,!&"33b"'D@jKE#"0B@028b"
+8EfpXBQpi1NP5)%p`G'PYDATPFJ"38%-J4QPZB@`J6@&M6e-J9'p[E'*[H$T+BAC
+K)%peG("eG!"38%-J4QPZB@`J6@&M6e-J9'p[E'*[H$T+BACK)&"bEfTPBh3!8&"
+$)%CTEQ&X)%eKBdp6)&4[EfaLEhJk5Q&fB5"@63"38%-J4QPZB@`J6@&M6e-J9'p
+[E'*[H$T0B@028b"0CA*RC5"3B@jPE!"38%-J4QPZB@`J6@&M6e-J9'p[E'*[H$T
+3BA0MB@`J3fpYF'PXCA)!8&"$)%CTEQ&X)%eKBdp6)&4[EfaLEhJk8'&cBf&X)&G
+KFQjTEQGc!&"33b"'D@jKE#"0B@028b"8EfpXBQpi1P"33b"$Ef4P4f9Z!&"33b"
+'D@jKE#"0B@028b"8EfpXBQpi1P"33b"%DA0KFh0PE@*XCA)!8&"$)%CTEQ&X)%e
+KBdp6)&4[EfaLEhJk8&"$)%aTEQYPFJ"38%-J4QPZB@`J6@&M6e-J9'p[E'*[H$T
+38%-J8%9'!&"33b"'D@jKE#"0B@028b"8EfpXBQpi1P"33b"3FQpUC@0d!&"33b"
+'D@jKE#"0B@028b"8EfpXBQpi1P"33d&cE5"3B@jPE!"38%-J4QPZB@`J6@&M6e-
+J9'p[E'*[H$T5CASJ3fpYF'PXCA)!8&"$)%CTEQ&X)%eKBdp6)&4[EfaLEhJk9fP
+Z8N-J3fpYF'PXCA)!8&"$)%CTEQ&X)%eKBdp6)&4[EfaLEhJkH$Jf)%0[C'9(C@i
+!8&"$)%CTEQ&X)%eKBdp6)&4[EfaLEhJkH$Jf)%aTEQYPFJ"38%-J4QPZB@`J6@&
+M6e-J9'p[E'*[H$Ti1$BJ8(*[DQ9MG!"'393J6@&M6e-J9'p[E'*[H$T$GA0dEfd
+J5f9jGfpbC(-!4N&8)%eKBdp6)&4[EfaLEhJk3@0MCA0c)&"KG'Kc!%C"9#"0B@0
+28b"8EfpXBQpi1P4KFQGPG#"6CA4dD@jRF`"'393J6@&M6e-J9'p[E'*[H$T'D@a
+P)%eKF("TEQGc!%C"9#"0B@028b"8EfpXBQpi1N*eD@aN)%9iG(*KF`"'393J6@&
+M6e-J9'p[E'*[H$Sf1%XJ3fpNC8GPEJ"'393J6@&M6e-J9'p[E'*[H$Sf1%XJ4'P
+cBA0cC@eLE'9b!%C"9#"0B@028b"8EfpXBQpi1MBi5b"-D@jVCA)!4N&8)%eKBdp
+6)&4[EfaLEhJk0MK,)&"bEfTPBh3!4N&8)%eKBdp6)&4[EfaLEhJk3bp$+bXJ3fp
+YF'PXCA)!4N&8)%eKBdp6)&4[EfaLEhJk3bp$+bXJ9f&bEQPZCh-!4N&8)%eKBdp
+6)&4[EfaLEhJk3dC00MK,!%C"9#"0B@028b"8EfpXBQpi1NP5)%p`G'PYDATPFJ"
+'393J6@&M6e-J9'p[E'*[H$T+BACK)%peG("eG!"'393J6@&M6e-J9'p[E'*[H$T
++BACK)&"bEfTPBh3!4N&8)%eKBdp6)&4[EfaLEhJk5Q&fB5"@63"'393J6@&M6e-
+J9'p[E'*[H$T0B@028b"0CA*RC5"3B@jPE!"'393J6@&M6e-J9'p[E'*[H$T3BA0
+MB@`J3fpYF'PXCA)!4N&8)%eKBdp6)&4[EfaLEhJk8'&cBf&X)&GKFQjTEQGc!%C
+"9#"0B@028b"8EfpXBQpi1P"33b"$Ef4P4f9Z!%C"9#"0B@028b"8EfpXBQpi1P"
+33b"%DA0KFh0PE@*XCA)!4N&8)%eKBdp6)&4[EfaLEhJk8&"$)%aTEQYPFJ"'393
+J6@&M6e-J9'p[E'*[H$T38%-J8%9'!%C"9#"0B@028b"8EfpXBQpi1P"33b"3FQp
+UC@0d!%C"9#"0B@028b"8EfpXBQpi1P"33d&cE5"3B@jPE!"'393J6@&M6e-J9'p
+[E'*[H$T5CASJ3fpYF'PXCA)!4N&8)%eKBdp6)&4[EfaLEhJk9fPZ8N-J3fpYF'P
+XCA)!4N&8)%eKBdp6)&4[EfaLEhJkH$Jf)%0[C'9(C@i!4N&8)%eKBdp6)&4[Efa
+LEhJkH$Jf)%aTEQYPFJ"'393J6@&M6e-J9'p[E'*[H$Ti1$BJ8(*[DQ9MG!"38%-
+J4'9LG@FJ6@&M6e-J9'p[E'*[H$T+BACK)%aKEQGeB@GP!&"33b"'D@jKE#"0B@0
+28b"8EfpXBQpi1NTKGQ%J6'&ZCh9KCf8!8&"$)%4PBR9R)%eKBdp6)&4[EfaLEhJ
+k4'9LG@GRCA)J9'&bCf9d!&"33b"%C@*eCb"0B@028b"8EfpXBQpi1NC88#"3B@j
+PE!"38%-J4'9LG@FJ6@&M6e-J9'p[E'*[H$T+BACK4'pM)&"bEfTPBh3!8&"$)%4
+PBR9R)%eKBdp6)&4[EfaLEhJkH$Jf)%9iBf9`G'P[ER-J8'&ZC@`!8&"$)%CTEQ&
+X)%eKBdp6)&4[EfaLEhJk4'9LG@GRCA)J9'&bCf9d!&"33b"'D@jKE#"0B@028b"
+8EfpXBQpi1NC88#"3B@jPE!"38%-J4QPZB@`J6@&M6e-J9'p[E'*[H$T+BACK4'p
+M)&"bEfTPBh3!8&"$)%CTEQ&X)%eKBdp6)&4[EfaLEhJkH$Jf)%9iBf9`G'P[ER-
+J8'&ZC@`!8&"$)%4PBR9R)%eKBdp6)&4[EfaLEhJk0MK,)%GXEf*KE#"2F(4TE@P
+kCA)!8&"$)%4PBR9R)%eKBdp6)&4[EfaLEhJk8&"$)%GXEf*KE#"2F(4TE@PkCA)
+!8&"$)%CTEQ&X)%eKBdp6)&4[EfaLEhJk0MK,)%GXEf*KE#"2F(4TE@PkCA)!8&"
+$)%CTEQ&X)%eKBdp6)&4[EfaLEhJk8&"$)%GXEf*KE#"2F(4TE@PkCA)!8&"$)%4
+PBR9R)%eKBdp6)&4[EfaLEhJk5Q&fB5"$EfeYB@jN)%aTEQ8!8&"$)%4PBR9R)%e
+KBdp6)&4[EfaLEhJk5Q&fB5"0B@028b"6CA4dD@jRF`"38%-J4'9LG@FJ6@&M6e-
+J9'p[E'*[H$Ti1$BJ4fa[BQ&X)%p`G'PYDATPFJ"38%-J4QPZB@`J6@&M6e-J9'p
+[E'*[H$T+BACK)%0[E@eKEQ3J6'PZC3"38%-J4QPZB@`J6@&M6e-J9'p[E'*[H$T
++BACK)%eKBdp6)&0PG(4TEQGc!&"33b"'D@jKE#"0B@028b"8EfpXBQpi1RJi0L"
+(E'pLB@`J6h"dD@eTHQ9b!&"33b"%C@*eCb"0B@028b"8EfpXBQpi1N4PBR9RCf9
+b)&*eER4TE@8!8&"$)%4PBR9R)%eKBdp6)&4[EfaLEhJk3QPcEfiJ8'&ZC@`!8&"
+$)%4PBR9R)%eKBdp6)&4[EfaLEhJk4QaPH#"3B@jPE!"38%-J4QPZB@`J6@&M6e-
+J9'p[E'*[H$T%C@*eCfGPFL"5G@jdD@eP!&"33b"'D@jKE#"0B@028b"8EfpXBQp
+i1N*TFfpZ)&"KEQ9X!&"33b"'D@jKE#"0B@028b"8EfpXBQpi1NCXCAJJ8'&ZC@`
+!6h"PEP066$T$GA0dEfdJ5f9jGfpbC(-!6h"PEP066$T"Bf0PFh-J8'&dD(-!6h"
+PEP066$T8BA*RCA3J8f9dG'PZCh-!6h"PEP066$T'D@aP)%eKF("TEQGc!%p`C@j
+68d`k3R9TE'3J4AKdFQ&c!%p`C@j68d`k4'9LG@GRCA)J9'&bCf9d!%p`C@j68d`
+k4'9LG@GRCA)J8R9ZG'PYC3"2F'9Z8e0-1N*TFfpZ)&"KEQ9X!%p`C@j68d`k4Qa
+PH#"3B@jPE!"2F'9Z8e0-1MBi5b"$Ef4P4f9Z!%p`C@j68d`k0MK,)%4TFf&cFf9
+YBQaPFJ"2F'9Z8e0-1MBi5b"(E'pLB@`J6h"dD@eTHQ9b!%p`C@j68d`k0MK,)%a
+TEQYPFJ"2F'9Z8e0-1MBi5b"3FQpUC@0d!%p`C@j68d`k3bp$+bXJ3fpYF'PXCA)
+!6h"PEP066$T$,d-V+b"ABA*ZD@jRF`"2F'9Z8e0-1N0'66Bi5`"2F'9Z8e0-1Ne
+KBdp6)%ePFQGP)&"KEQ9X!%p`C@j68d`k8&"$)%0[C'9(C@i!6h"PEP066$T38%-
+J4'PcBA0cC@eLE'9b!%p`C@j68d`k8&"$)%GXEf*KE#"2F(4TE@PkCA)!6h"PEP0
+66$T38%-J6'PZDf9b!%p`C@j68d`k8&"$)&"&4J"2F'9Z8e0-1P"33b"3FQpUC@0
+d!%p`C@j68d`k8&"$3A0Y)&"KEQ9X!%p`C@j68d`k8Q9k)%0[EA"TE'9b!%p`C@j
+68d`k9fPZ8N-J3fpYF'PXCA)!6h"PEP066$Ti1$BJ3fpNC8GPEJ"2F'9Z8e0-1RJ
+i0L"&H'0PF(4TEfjc)&"KEQ9X!%p`C@j68d`kH$Jf)%GXEf*KE#"2F(4TE@PkCA)
+!6h"PEP066$Ti1$BJ6'PZDf9b!%p`C@j68d`kH$Jf)&"bEfTPBh3!6h"PEP066#"
+B4N011N0eFh4[E5",CAPhEh*NF`"2F'9Z8e0-)&K'3dik3@0MCA0c)&"KG'Kc!%p
+`C@j68d`J@%C$6MT8BA*RCA3J8f9dG'PZCh-!6h"PEP066#"B4N011NCTE'8J6@&
+`F'PZCh-!6h"PEP066#"B4N011N*eD@aN)%9iG(*KF`"2F'9Z8e0-)&K'3dik4'9
+LG@GRCA)J9'&bCf9d!%p`C@j68d`J@%C$6MT%C@*eCfGPFL"5G@jdD@eP!%p`C@j
+68d`J@%C$6MT#DA0[EL"3B@jPE!"2F'9Z8e0-)&K'3dik4QaPH#"3B@jPE!"2F'9
+Z8e0-)&K'3dik0MK,)%0[C'9(C@i!6h"PEP066#"B4N011MBi5b"%DA0KFh0PE@*
+XCA)!6h"PEP066#"B4N011MBi5b"(E'pLB@`J6h"dD@eTHQ9b!%p`C@j68d`J@%C
+$6MSf1%XJ6'PZDf9b!%p`C@j68d`J@%C$6MSf1%XJ8(*[DQ9MG!"2F'9Z8e0-)&K
+'3dik3bp$+bXJ3fpYF'PXCA)!6h"PEP066#"B4N011N-[3bXV)&GKFQjTEQGc!%p
+`C@j68d`J@%C$6MT$4Ndf1%X!6h"PEP066#"B4N011NeKBdp6)%ePFQGP)&"KEQ9
+X!%p`C@j68d`J@%C$6MT38%-J3fpNC8GPEJ"2F'9Z8e0-)&K'3dik8&"$)%4TFf&
+cFf9YBQaPFJ"2F'9Z8e0-)&K'3dik8&"$)%GXEf*KE#"2F(4TE@PkCA)!6h"PEP0
+66#"B4N011P"33b"-D@jVCA)!6h"PEP066#"B4N011P"33b"348B!6h"PEP066#"
+B4N011P"33b"3FQpUC@0d!%p`C@j68d`J@%C$6MT38%0"FfdJ8'&ZC@`!6h"PEP0
+66#"B4N011P*PHL"$Efe`D@aPFJ"2F'9Z8e0-)&K'3dik9fPZ8N-J3fpYF'PXCA)
+!6h"PEP066#"B4N011RJi0L"$Ef4P4f9Z!%p`C@j68d`J@%C$6MTi1$BJ4AKMCA"
+dD@pZFb"3B@jPE!"2F'9Z8e0-)&K'3dikH$Jf)%GXEf*KE#"2F(4TE@PkCA)!6h"
+PEP066#"B4N011RJi0L"-D@jVCA)!6h"PEP066#"B4N011RJi0L"3FQpUC@0d!%p
+`C@j68d`J6'PL1N0eFh4[E5",CAPhEh*NF`"2F'9Z8e0-)%aTBMT"Bf0PFh-J8'&
+dD(-!6h"PEP066#"-D@)k9'&bCf9d)&0PG(4TEQGc!%p`C@j68d`J6'PL1NCTE'8
+J6@&`F'PZCh-!6h"PEP066#"-D@)k3R9TE'3J4AKdFQ&c!%p`C@j68d`J6'PL1N4
+PBR9RCf9b)&4KFQGPG!"2F'9Z8e0-)%aTBMT%C@*eCfGPFL"5G@jdD@eP!%p`C@j
+68d`J6'PL1N*TFfpZ)&"KEQ9X!%p`C@j68d`J6'PL1NCXCAJJ8'&ZC@`!6h"PEP0
+66#"-D@)k0MK,)%0[C'9(C@i!6h"PEP066#"-D@)k0MK,)%4TFf&cFf9YBQaPFJ"
+2F'9Z8e0-)%aTBMSf1%XJ4fa[BQ&X)%p`G'PYDATPFJ"2F'9Z8e0-)%aTBMSf1%X
+J6'PZDf9b!%p`C@j68d`J6'PL1MBi5b"3FQpUC@0d!%p`C@j68d`J6'PL1N-[3bX
+V)%0[EA"TE'9b!%p`C@j68d`J6'PL1N-[3bXV)&GKFQjTEQGc!%p`C@j68d`J6'P
+L1N0'66Bi5`"2F'9Z8e0-)%aTBMT0B@028b"0CA*RC5"3B@jPE!"2F'9Z8e0-)%a
+TBMT38%-J3fpNC8GPEJ"2F'9Z8e0-)%aTBMT38%-J4'PcBA0cC@eLE'9b!%p`C@j
+68d`J6'PL1P"33b"(E'pLB@`J6h"dD@eTHQ9b!%p`C@j68d`J6'PL1P"33b"-D@j
+VCA)!6h"PEP066#"-D@)k8&"$)&"&4J"2F'9Z8e0-)%aTBMT38%-J8(*[DQ9MG!"
+2F'9Z8e0-)%aTBMT38%0"FfdJ8'&ZC@`!6h"PEP066#"-D@)k8Q9k)%0[EA"TE'9
+b!%p`C@j68d`J6'PL1PGTEP*$)%0[EA"TE'9b!%p`C@j68d`J6'PL1RJi0L"$Ef4
+P4f9Z!%p`C@j68d`J6'PL1RJi0L"&H'0PF(4TEfjc)&"KEQ9X!%p`C@j68d`J6'P
+L1RJi0L"(E'pLB@`J6h"dD@eTHQ9b!%p`C@j68d`J6'PL1RJi0L"-D@jVCA)!6h"
+PEP066#"-D@)kH$Jf)&"bEfTPBh3!,f4PGLpZG@aX1N0eFh4[E5",CAPhEh*NF`!
+[C'9f,fjeE'`k3@0MCA0c)&"KG'Kc!#pNCAB[ER9XE$T8BA*RCA3J8f9dG'PZCh-
+!,f4PGLpZG@aX1NCTE'8J6@&`F'PZCh-!,f4PGLpZG@aX1N*eD@aN)%9iG(*KF`!
+[C'9f,fjeE'`k4'9LG@GRCA)J9'&bCf9d!#pNCAB[ER9XE$T%C@*eCfGPFL"5G@j
+dD@eP!#pNCAB[ER9XE$T#DA0[EL"3B@jPE!![C'9f,fjeE'`k4QaPH#"3B@jPE!!
+[C'9f,fjeE'`k0MK,)%0[C'9(C@i!,f4PGLpZG@aX1MBi5b"%DA0KFh0PE@*XCA)
+!,f4PGLpZG@aX1MBi5b"(E'pLB@`J6h"dD@eTHQ9b!#pNCAB[ER9XE$Sf1%XJ6'P
+ZDf9b!#pNCAB[ER9XE$Sf1%XJ8(*[DQ9MG!![C'9f,fjeE'`k3bp$+bXJ3fpYF'P
+XCA)!,f4PGLpZG@aX1N-[3bXV)&GKFQjTEQGc!#pNCAB[ER9XE$T$4Ndf1%X!,f4
+PGLpZG@aX1NeKBdp6)%ePFQGP)&"KEQ9X!#pNCAB[ER9XE$T38%-J3fpNC8GPEJ!
+[C'9f,fjeE'`k8&"$)%4TFf&cFf9YBQaPFJ![C'9f,fjeE'`k8&"$)%GXEf*KE#"
+2F(4TE@PkCA)!,f4PGLpZG@aX1P"33b"-D@jVCA)!,f4PGLpZG@aX1P"33b"348B
+!,f4PGLpZG@aX1P"33b"3FQpUC@0d!#pNCAB[ER9XE$T38%0"FfdJ8'&ZC@`!,f4
+PGLpZG@aX1P*PHL"$Efe`D@aPFJ![C'9f,fjeE'`k9fPZ8N-J3fpYF'PXCA)!,f4
+PGLpZG@aX1RJi0L"$Ef4P4f9Z!#pNCAB[ER9XE$Ti1$BJ4AKMCA"dD@pZFb"3B@j
+PE!![C'9f,fjeE'`kH$Jf)%GXEf*KE#"2F(4TE@PkCA)!,f4PGLpZG@aX1RJi0L"
+-D@jVCA)!,f4PGLpZG@aX1RJi0L"3FQpUC@0d!&K'3diJ8h4eBMT$GA0dEfdJ5f9
+jGfpbC(-!@%C$6L"6G(9L1N&MBf9cFb"3BA4SF`"B4N01)&0dG@)k9'&bCf9d)&0
+PG(4TEQGc!&K'3diJ8h4eBMT'D@aP)%eKF("TEQGc!&K'3diJ8h4eBMT#G@PXC#"
+&H(4bBA-!@%C$6L"6G(9L1N4PBR9RCf9b)&4KFQGPG!"B4N01)&0dG@)k4'9LG@G
+RCA)J8R9ZG'PYC3"B4N01)&0dG@)k3QPcEfiJ8'&ZC@`!@%C$6L"6G(9L1NCXCAJ
+J8'&ZC@`!@%C$6L"6G(9L1MBi5b"$Ef4P4f9Z!&K'3diJ8h4eBMSf1%XJ4'PcBA0
+cC@eLE'9b!&K'3diJ8h4eBMSf1%XJ4fa[BQ&X)%p`G'PYDATPFJ"B4N01)&0dG@)
+k0MK,)%aTEQYPFJ"B4N01)&0dG@)k0MK,)&"bEfTPBh3!@%C$6L"6G(9L1N-[3bX
+V)%0[EA"TE'9b!&K'3diJ8h4eBMT$,d-V+b"ABA*ZD@jRF`"B4N01)&0dG@)k3dC
+00MK,!&K'3diJ8h4eBMT0B@028b"0CA*RC5"3B@jPE!"B4N01)&0dG@)k8&"$)%0
+[C'9(C@i!@%C$6L"6G(9L1P"33b"%DA0KFh0PE@*XCA)!@%C$6L"6G(9L1P"33b"
+(E'pLB@`J6h"dD@eTHQ9b!&K'3diJ8h4eBMT38%-J6'PZDf9b!&K'3diJ8h4eBMT
+38%-J8%9'!&K'3diJ8h4eBMT38%-J8(*[DQ9MG!"B4N01)&0dG@)k8&"$3A0Y)&"
+KEQ9X!&K'3diJ8h4eBMT5CASJ3fpYF'PXCA)!@%C$6L"6G(9L1PGTEP*$)%0[EA"
+TE'9b!&K'3diJ8h4eBMTi1$BJ3fpNC8GPEJ"B4N01)&0dG@)kH$Jf)%9iBf9`G'P
+[ER-J8'&ZC@`!@%C$6L"6G(9L1RJi0L"(E'pLB@`J6h"dD@eTHQ9b!&K'3diJ8h4
+eBMTi1$BJ6'PZDf9b!&K'3diJ8h4eBMTi1$BJ8(*[DQ9MG!"2F'9Z8e0-1P0[GA*
+MC5"8FQ9PF`"38%-k8fpeFQ0P)&4bC@9c!&"33cT$GA0dEfdJ5f9jGfpbC(-!8&"
+$1N&MBf9cFb"3BA4SF`"38%-k9'&bCf9d)&0PG(4TEQGc!&"33cT'D@aP)%eKF("
+TEQGc!&"33cT#G@PXC#"&H(4bBA-!8&"$1N4PBR9RCf9b)&*eER4TE@8!8&"$1N4
+PBR9RCf9b)&4KFQGPG!"38%-k0MK,)%0[C'9(C@i!8&"$1MBi5b"%DA0KFh0PE@*
+XCA)!8&"$1MBi5b"(E'pLB@`J6h"dD@eTHQ9b!&"33cSf1%XJ6'PZDf9b!&"33cS
+f1%XJ8(*[DQ9MG!"38%-k3bp$+bXJ3fpYF'PXCA)!8&"$1N-[3bXV)&GKFQjTEQG
+c!&"33cT$4Ndf1%X!8&"$1NeKBdp6)%ePFQGP)&"KEQ9X!&"33cT38%-J3fpNC8G
+PEJ"38%-k8&"$)%4TFf&cFf9YBQaPFJ"38%-k8&"$)%GXEf*KE#"2F(4TE@PkCA)
+!8&"$1P"33b"-D@jVCA)!8&"$1P"33b"348B!8&"$1P"33b"3FQpUC@0d!&"33cT
+38%0"FfdJ8'&ZC@`!8&"$1P*PHL"$Efe`D@aPFJ!f1%Xk8fpeFQ0P)&4bC@9c!$B
+i5cT$GA0dEfdJ5f9jGfpbC(-!0MK,1N&MBf9cFb"3BA4SF`!f1%Xk9'&bCf9d)&0
+PG(4TEQGc!$Bi5cT'D@aP)%eKF("TEQGc!$Bi5cT#G@PXC#"&H(4bBA-!0MK,1N4
+PBR9RCf9b)&*eER4TE@8!0MK,1N4PBR9RCf9b)&4KFQGPG!!f1%Xk0MK,)%0[C'9
+(C@i!0MK,1MBi5b"%DA0KFh0PE@*XCA)!0MK,1MBi5b"(E'pLB@`J6h"dD@eTHQ9
+b!$Bi5cSf1%XJ6'PZDf9b!$Bi5cSf1%XJ8(*[DQ9MG!!f1%Xk3bp$+bXJ3fpYF'P
+XCA)!0MK,1N-[3bXV)&GKFQjTEQGc!$Bi5cT$4Ndf1%X!0MK,1NeKBdp6)%ePFQG
+P)&"KEQ9X!$Bi5cT38%-J3fpNC8GPEJ!f1%Xk8&"$)%4TFf&cFf9YBQaPFJ!f1%X
+k8&"$)%GXEf*KE#"2F(4TE@PkCA)!0MK,1P"33b"-D@jVCA)!0MK,1P"33b"348B
+!0MK,1P"33b"3FQpUC@0d!$Bi5cT38%0"FfdJ8'&ZC@`!0MK,1P*PHL"$Efe`D@a
+PFJ"(CA4)9&438b"38%-k8fpeFQ0P)&4bC@9c!%GPG%K89&"6)&"33cT$GA0dEfd
+J5f9jGfpbC(-!4f9d5&488&-J8&"$1N&MBf9cFb"3BA4SF`"(CA4)9&438b"38%-
+k9'&bCf9d)&0PG(4TEQGc!%GPG%K89&"6)&"33cT'D@aP)%eKF("TEQGc!%GPG%K
+89&"6)&"33cT#G@PXC#"&H(4bBA-!4f9d5&488&-J8&"$1N4PBR9RCf9b)&*eER4
+TE@8!4f9d5&488&-J8&"$1N4PBR9RCf9b)&4KFQGPG!"(CA4)9&438b"38%-k0MK
+,)%0[C'9(C@i!4f9d5&488&-J8&"$1MBi5b"%DA0KFh0PE@*XCA)!4f9d5&488&-
+J8&"$1MBi5b"(E'pLB@`J6h"dD@eTHQ9b!%GPG%K89&"6)&"33cSf1%XJ6'PZDf9
+b!%GPG%K89&"6)&"33cSf1%XJ8(*[DQ9MG!"(CA4)9&438b"38%-k3bp$+bXJ3fp
+YF'PXCA)!4f9d5&488&-J8&"$1N-[3bXV)&GKFQjTEQGc!%GPG%K89&"6)&"33cT
+$4Ndf1%X!4f9d5&488&-J8&"$1NeKBdp6)%ePFQGP)&"KEQ9X!%GPG%K89&"6)&"
+33cT38%-J3fpNC8GPEJ"(CA4)9&438b"38%-k8&"$)%4TFf&cFf9YBQaPFJ"(CA4
+)9&438b"38%-k8&"$)%GXEf*KE#"2F(4TE@PkCA)!4f9d5&488&-J8&"$1P"33b"
+-D@jVCA)!4f9d5&488&-J8&"$1P"33b"348B!4f9d5&488&-J8&"$1P"33b"3FQp
+UC@0d!%GPG%K89&"6)&"33cT38%0"FfdJ8'&ZC@`!4f9d5&488&-J8&"$1P*PHL"
+$Efe`D@aPFJ"2F'9Z8e0-)&"33cT6Eh9bBf8J9(*PCA-!6h"PEP066#"38%-k3h9
+cG'pY)%YPHAG[FQ4c!%p`C@j68d`J8&"$1N&MBf9cFb"3BA4SF`"2F'9Z8e0-)&"
+33cT8BA*RCA3J8f9dG'PZCh-!6h"PEP066#"38%-k4QPXC5"0BA"`D@jRF`"2F'9
+Z8e0-)&"33cT#G@PXC#"&H(4bBA-!6h"PEP066#"38%-k4'9LG@GRCA)J8R9ZG'P
+YC3"2F'9Z8e0-)&"33cT%C@*eCfGPFL"8BA*RCA3!6h"PEP066#"38%-k0MK,)%0
+[C'9(C@i!6h"PEP066#"38%-k0MK,)%4TFf&cFf9YBQaPFJ"2F'9Z8e0-)&"33cS
+f1%XJ4fa[BQ&X)%p`G'PYDATPFJ"2F'9Z8e0-)&"33cSf1%XJ6'PZDf9b!%p`C@j
+68d`J8&"$1MBi5b"3FQpUC@0d!%p`C@j68d`J8&"$1N-[3bXV)%0[EA"TE'9b!%p
+`C@j68d`J8&"$1N-[3bXV)&GKFQjTEQGc!%p`C@j68d`J8&"$1N0'66Bi5`"2F'9
+Z8e0-)&"33cT0B@028b"0CA*RC5"3B@jPE!"2F'9Z8e0-)&"33cT38%-J3fpNC8G
+PEJ"2F'9Z8e0-)&"33cT38%-J4'PcBA0cC@eLE'9b!%p`C@j68d`J8&"$1P"33b"
+(E'pLB@`J6h"dD@eTHQ9b!%p`C@j68d`J8&"$1P"33b"-D@jVCA)!6h"PEP066#"
+38%-k8&"$)&"&4J"2F'9Z8e0-)&"33cT38%-J8(*[DQ9MG!"2F'9Z8e0-)&"33cT
+38%0"FfdJ8'&ZC@`!6h"PEP066#"38%-k8Q9k)%0[EA"TE'9b!%GPG%K89&"6)$B
+i5cT6Eh9bBf8J9(*PCA-!4f9d5&488&-J0MK,1N0eFh4[E5",CAPhEh*NF`"(CA4
+)9&438b!f1%Xk3@0MCA0c)&"KG'Kc!%GPG%K89&"6)$Bi5cT8BA*RCA3J8f9dG'P
+ZCh-!4f9d5&488&-J0MK,1NCTE'8J6@&`F'PZCh-!4f9d5&488&-J0MK,1N*eD@a
+N)%9iG(*KF`"(CA4)9&438b!f1%Xk4'9LG@GRCA)J8R9ZG'PYC3"(CA4)9&438b!
+f1%Xk4'9LG@GRCA)J9'&bCf9d!%GPG%K89&"6)$Bi5cSf1%XJ3fpNC8GPEJ"(CA4
+)9&438b!f1%Xk0MK,)%4TFf&cFf9YBQaPFJ"(CA4)9&438b!f1%Xk0MK,)%GXEf*
+KE#"2F(4TE@PkCA)!4f9d5&488&-J0MK,1MBi5b"-D@jVCA)!4f9d5&488&-J0MK
+,1MBi5b"3FQpUC@0d!%GPG%K89&"6)$Bi5cT$,d-V+b"$Efe`D@aPFJ"(CA4)9&4
+38b!f1%Xk3bp$+bXJ9f&bEQPZCh-!4f9d5&488&-J0MK,1N0'66Bi5`"(CA4)9&4
+38b!f1%Xk6@&M6e-J6@9bCf8J8'&ZC@`!4f9d5&488&-J0MK,1P"33b"$Ef4P4f9
+Z!%GPG%K89&"6)$Bi5cT38%-J4'PcBA0cC@eLE'9b!%GPG%K89&"6)$Bi5cT38%-
+J4fa[BQ&X)%p`G'PYDATPFJ"(CA4)9&438b!f1%Xk8&"$)%aTEQYPFJ"(CA4)9&4
+38b!f1%Xk8&"$)&"&4J"(CA4)9&438b!f1%Xk8&"$)&"bEfTPBh3!4f9d5&488&-
+J0MK,1P"33d&cE5"3B@jPE!"(CA4)9&438b!f1%Xk8Q9k)%0[EA"TE'9b!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!IF!!!)8!!!"q3!!!%!!!!(
+k!!!!3J!!!IX!!!(m!!!"r3!!!!)!!!!X!!!!,J!!!%`!!!",!!!!8!!!!K)!!!*
+B!!!#@`!!!K8!!!([!!!!63!!!%i!!!!e!!!!-3!!!$-!!!!j!!!!0J!!!#)!!!)
+c!!!#"`!!!'X!!!"U!!!!6`!!!%N!!!"+!!!!+3!!!!X!!!!V!!!!)`!!!#S!!!!
+8!!!!8`!!!%J!!!"&!!!#0!!!!M8!!!)f!!!!M`!!!*!!!!!!N3!!!*)!!!#6!!!
+!P!!!!*8!!!#@!!!!P`!!!*J!!!#C!!!!QJ!!!*X!!!#F!!!!R3!!!*i!!!)@!!!
+!R`!!!+!!!!#K!!!!SJ!!!+-!!!#N!!!#'J!!!+8!!!#Q!!!!T`!!!+J!!!#T!!!
+!UJ!!!!8!!!!-!!!!#J!!!#d!!!![!!!!)3!!!!!!!!!0!!!#!`!!!1!!!!$K!!!
+!iJ!!!L%!!!)J!!!!i`!!!13!!!%[!!!#'`!!!6!!!!$P!!!!jJ!!!6%!!!%b!!!
+!E!!!!'B!!!!m!!!!k!!!!1N!!!$U!!!!k`!!!1`!!!$Y!!!!lJ!!!1m!!!$`!!!
+!m3!!!2)!!!$c!!!!p!!!!28!!!$f!!!!p`!!!2J!!!$j!!!!qJ!!!L)!!!)M!!!
+#(3!!!Ki!!!)#!!!#*!!!!K`!!!)I!!!!j`!!!2X!!!$m!!!!9J!!!EF!!!'i!!!
+#*3!!!K%!!!)Q!!!!@!!!!&N!!!)h!!!""`!!!3J!!!%*!!!"#J!!!3X!!!(q!!!
+#1!!!!Hd!!!%#!!!""3!!!3B!!!)%!!!"j!!!!Gd!!!)j!!!#1J!!!Gi!!!"5!!!
+"h`!!!6-!!!$p!!!!rJ!!!2m!!!%!!!!"!`!!!3%!!!%%!!!!U`!!!+`!!!#Y!!!
+!VJ!!!+m!!!#`!!!!X3!!!,)!!!)+!!!!9`!!!3`!!!)l!!!#2!!!!5!!!!%K!!!
+")J!!!5-!!!%N!!!"0!!!!Md!!!)q!!!"*3!!!5B!!!%R!!!"+!!!!5N!!!)-!!!
+"+J!!!5X!!!%0!!!"$J!!!3m!!!)r!!!"03!!!4!!!!)R!!!",!!!!H8!!!*!!!!
+",3!!!5i!!!#c!!!"0J!!!6F!!!%i!!!"13!!!6S!!!%l!!!"i!!!!6`!!!%p!!!
+"2J!!!6m!!!&!!!!"33!!!8)!!!&$!!!"4!!!!88!!!&'!!!"4`!!!8J!!!&*!!!
+"5J!!!8X!!!&-!!!"63!!!8i!!!&2!!!"8!!!!9%!!!&5!!!"8`!!!93!!!&9!!!
+"9J!!!9F!!!&B!!!"@3!!!9S!!!"%!!!"%3!!!4)!!!"9!!!!!3!!!'F!!!!l!!!
+!@J!!!,3!!!#e!!!!YJ!!!$S!!!*"!!!#3J!!!N-!!!*A!!!#-3!!!JJ!!!"S!!!
+"E!!!!J%!!!)!!!!!Y`!!!,J!!!#j!!!!ZJ!!!,X!!!#m!!!![3!!!,i!!!!A!!!
+!@`!!!@d!!!&Z!!!"E`!!!A!!!!&a!!!"FJ!!!A-!!!!$!!!!$J!!!%B!!!(S!!!
+!4`!!!IJ!!!"4!!!!-!!!!$)!!!!d!!!!1!!!!$F!!!!F!!!"j`!!!"J!!!!r!!!
+!(3!!!#B!!!&d!!!"G3!!!AB!!!&h!!!"H!!!!AN!!!'@!!!"i3!!!!3!!!!q!!!
+!)!!!!"X!!!!p!!!!(`!!!"S!!!!H!!!!'3!!!#F!!!!S!!!!"J!!!!m!!!!(!!!
+!%!!!!9X!!!&F!!!"A3!!!9i!!!&I!!!"B!!!!@%!!!&L!!!"B`!!!@3!!!(r!!!
+"jJ!!!N3!!!#r!!!!`!!!!AS!!!&l!!!"I!!!!4-!!!%8!!!"&3!!!'N!!!(a!!!
+#-J!!!Hi!!!*&!!!"iJ!!!H-!!!(`!!!#@3!!!HN!!!(U!!!"m`!!!PS!!!(V!!!
+"p!!!!H`!!!&p!!!"K!!!!B8!!!''!!!"K`!!!BJ!!!'*!!!"LJ!!!BX!!!'-!!!
+"M3!!!Bi!!!'2!!!#+J!!!C!!!!!"N3!!!LJ!!!)T!!!!`3!!!-)!!!$$!!!!a!!
+!!-8!!!$'!!!!a`!!!-J!!!$*!!!!bJ!!!-X!!!$-!!!!c3!!!&`!!!"G!!!"&J!
+!!!N!!!!6!!!"IJ!!!Am!!!'!!!!"J3!!!B)!!!'$!!!"NJ!!!LX!!!'6!!!"P!!
+!!L`!!!)Y!!!#4J!!!NF!!!'9!!!#5!!!!K-!!!"H!!!!33!!!&m!!!"$!!!!C3!
+!!'!!!!"K!!!!BJ!!!"%!!!"M!!!"C3!!!@B!!!&R!!!"D!!!!@N!!!&U!!!"D`!
+!!4F!!!'A!!!"'!!!!CJ!!!'C!!!"QJ!!!CX!!!'F!!!"R3!!!Ci!!!'I!!!"S!!
+!!D%!!!'L!!!"S`!!!D3!!!%C!!!"'J!!!NN!!!!)!!!!C!!!!D8!!!'Q!!!"'`!
+!!NS!!!)Z!!!"T`!!!DJ!!!'T!!!"UJ!!!DX!!!)[!!!"V!!!!Dd!!!'Z!!!"V`!
+!!E!!!!"Y!!!!EJ!!!'m!!!"`!!!!F3!!!()!!!"c!!!!G!!!!(8!!!"f!!!!G`!
+!!(J!!!"j!!!!HJ!!!(X!!!"m!!!!I3!!!(i!!!*,!!!"(!!!!E%!!!'b!!!"X`!
+!!E3!!!!9!!!!&J!!!N`!!!)*!!!#63!!!Ni!!!"r!!!!J!!!!)%!!!##!!!!J`!
+!!)3!!!#&!!!!KJ!!!)F!!!#)!!!!L3!!!E8!!!%G!!!"(J!!!Nm!!!*3!!!#83!
+!!P)!!!*@!!!!LJ!!!)X!!!#-!!!!M3!!!)i!!!"8!!!"pJ!!!M!!!!!N!!!!*3!
+!!EB!!!)C!!!!cJ!!!-m!!!$3!!!#&`!!!0%!!!)B!!!"p3!!!FS!!!(,!!!"c!!
+!!Fd!!!(1!!!"c`!!!G!!!!(4!!!"dJ!!!G-!!!(8!!!"e3!!!K!!!!(@!!!"e`!
+!!GJ!!!(C!!!#$`!!!GS!!!(E!!!"h!!!!P-!!!*8!!!#93!!!EN!!!'k!!!#$3!
+!!EX!!!'m!!!"[3!!!Ei!!!'r!!!"`!!!!F%!!!(#!!!"``!!!F3!!!(&!!!#$J!
+!!FB!!!((!!!"b!!!!4m!!!)&!!!!%J!!!JB!!!$5!!!"b3!!!0-!!!$8!!!!e3!
+!!0B!!!$A!!!!f!!!!0N!!!$D!!!!f`!!!0`!!!$G!!!!hJ!!!0m!!!),!!!"mJ!
+!!!!!!!!!!!!!!!!!!!!!!!!#!!%!(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!"J!!!)+!!)!!!!!!&-!"3!!!!!!9!!-!!!!!!"9!!S!!!!!!&B!!J!!!!!!9`!
+&!!!!!!),!!)!!!!!!&J!"3!!!!!!@3!0!!!!!!"D!!8!!!!!!&m!"3!!!!!!B!!
+"!!!!!!"Q!!%!!!!!!'%!"`!!!!!!BJ!)!!!!!!"M!!8!!!!!!'3!!J!!!!!!C3!
+#!!!!!!(k!!J!!!!!!IX!!3!!!!!"r!!"!!!!!!(p!!J!!!!!!Ii!#3!!!!!"r`!
+%!!!!"3%"!!%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*!!!14f9d5&488&-J+$Bi5bP%48*
+94b!f1%X!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!2cm
+r2d&38%`!!!'!@-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!r2cmr!!!!!!!!!!!!93'3!!%
+*!RX!!!!!!!!!!!!!!!!!!!'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!8#!3!"!3!"!3%!!!%!!!!!!!!!!3%"!3!"!3!"!!%%!!!!!!!!!!!!!!%"!!%
+"!3!!!3!!!!!!!!!!!!!!!!!!!!!&!!!!!!%!!!!!"3!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%!!!!!!!!!!!!!!!!!!!
+!!!%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&pIFh4KFR3!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!3!#!!!!!J!#!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$!!!#-J)!!!%!!!!!!!!!!!!%!!%
+!!!*FY)+VR`!!6-X!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)c#`!!!3!!!!!
+!!!!!!!3!!3!!!M5dJUA+rrq!83!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!PJ
+-!!!"!!!!!!!!!!!!"!!"!!!#@E5#T8X!!%k+!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!S!!%eKBdp6)&"33b"-D@jVCA)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!%GPG%K89&"6)&"33`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!3!"1J!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%!!!!!!!!!!!!!!!3!!!p+BAC
+K3faKFh0PFbjUBA)!!!!!!!!!!!!!!!!!!!!!@NP3)%eA@P!!!!!!!!%!#!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"08dP&%8PZG'9bEQ9d)%9iF'a
+[FQ9b!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!%PPH("XEh*P,Q9iC3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!B[#R9+593!Np*!!!!
+!!!!!!3!"NpUJ!!!"!!!!1R8!!$Pe!C228!$BH,KDY!!!!"`"5J!,689193!#!'*
+8BA*R!!!!KP088L-!!J#58&"[BJ!!!,C5D@4-!!!!`Q&PG'8!!!$18e45)!!!!0T
+`FQ9Q!!!!jNCXB@F!!!$b9%e36!!!!2jfCA*c!!%"#N4bEh!!!!%L"'J!!!!!!!!
+!!!!!"'N!$3!!!&m!!!!!"'S!&`!!!+-!!!!!!)!!'`!!!2J!!!!!!5crr`!!!3S
+!!!!!!5i!+#!!!9%!!!!!!5d!03!!!BJ!!!!!!)!!3!!!!E)!!!!!!)!!5J!!#ki
+!!!!!!!!!9!!!!!i!!3!!!!!"!3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!"!!!!!!!"!!%!!J!!!!!!!!!!!!!!!!`!!3!#!!3!!!!'3!!!%J!
+"!!%k!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!3!!!2r
+rrrp!!!!!!!%!!6Sk!!"PER0cE#d`,MNZ0$S!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!"!!!!rrrrr`!!!!8!!3!"1MTTEQ0XG@4P1J!!15id1QPZBfaeC'8k!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!%!!!$rrrrr3!!!%!!"!!%k!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!3!!!2rrrrp!!!!4!!)!!6T0B@028b"6GA"`Eh*
+d1J!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!!!!rrrrrd!!!!B!!J!"1Ne66$S
+!Gf9bDh-J8h4KEQ4KFQ3J6'PLFQ&bH6T08d`J3cS!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%!!!$rrrrr3!!!$3!
+&!!!-4f9d5&488&-J8&"$!!!!!!!!!!!!!!!!!!!!!!!!!$mr2cp"8&"-!!!%!!!
+!"!!!!!"!!!"B`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!"2cmr2`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!!!*6@9bCf8J6h9d!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!2cmr2d&38%`!!3%!!!4%6%GBBfYTC&"bEfTA8e"$!!F"!3!"!!!"!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!"IAh0dB9pIFh4KFR3!4N01!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!3!!#8ePFQGP)%peG!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$m
+r2cp"8&"-!!%"!!!%4%a(@'0VD@43FQpU9e033k2`!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!3%"!3%"!3%"!3!!"!!!$dTKGQ&$E'&cFf9c,QTKFJ!
+!!!!!!!!!!!!!!!!!!!"D59!J69GD8!!!!!!!!3!)!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!%e658845@jdCA*ZCA3J4AK`E'pbCA)!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!5@9iF'a[FQ8ZCAK
+P!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"Lm+G8T*9!#8GP!!!!!!!!!"!!'8IV!!!!%
+!!!!kG3!!1A8"P(0J!0KiZ&X5!!!!(!&+!!Y048j9!!)!BP4KFQF!!!#'8e45)`!
+#!**38'pL!!!!YP*TC%`!!!$#B@9dC3!!!-j69&)J!!!!fR"bC@B!!!$Q4QaKC`!
+!!2*869"-!!!!rRCPFR-!!3%+4(*[F!!!!5)%D!!!!!!!!!!!!!!%D3!0!!!!A`!
+!!!!%DJ!A!!!!S`!!!!!!J!!E!!!!q!!!!!!",2rr!!!"#J!!!!!",J!S)!!"83!
+!!!!",3!e!!!"L!!!!!!!J!"!!!!"XJ!!!!!!J!"+!!!,VJ!!!!!!!!"8!!!!$J!
+"!!!!!!%"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%!!!!
+!!!%!!3!#!!!!!!!!!!!!!!!!!`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!3!
+!!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!!!!!!%!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"8"!!!!!!!!!!!#!3%"!3%!!3!
+!!!!!690*43!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!D(4dF$S[,fT
+KGQ%ZFh9Z,Q0[E5p`FQpNG@0dFbpUC'X[-5ia,f4[Bh-[BA"T,`!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!9!3!!!!!!!!!!!J%"!3%"!!%!!!!!!%e6588!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!'KdG(!k,bpUBACK,R0eELjMEfd[F(*[C(9MG(-[DQ4V,c%
+Z-5pNEf0c,f&`D5m!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!3!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%!!!!!!!!!!!P+3QpeEQ4"F(!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!2cmr2`!3!!!!#!!!rrrrrrrr9dP14'jeE'`!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!3%!!!%!!3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%
+!!!!!!!!!!!P+3QpeEQ4"F(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!2cmr2`!3!!!
+!#!!!rrrrrrrr9dP14'jeE'`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!3%!!!%!!!*e!!!#GJ!!!RF!!!*i!!!
+#H3!!!Qd!!!*c!!!#F!!!!RS!!!*l!!!#I!!!!Q`!!!*b!!!#F3!!!Qm!!!*d!!!
+#I3!!!Ri!!!*r!!!#J!!!!S%!!!+#!!!#J`!!!S3!!!+&!!!#EJ!!!SB!!!+(!!!
+#L!!!!SN!!!++!!!#L`!!!@%!!!&L!!!"B`!!!@3!!!&G!!!"B!!!!@8!!!&Q!!!
+"C`!!!9`!!!&I!!!"D!!!!@N!!!&U!!!"D`!!!@`!!!&Y!!!"EJ!!!@m!!!&`!!!
+"F3!!!A)!!!&c!!!"G!!!!A8!!!&H!!!"GJ!!!AF!!!&i!!!"H3!!!Cd!!!'H!!!
+"R`!!!D!!!!'C!!!"R!!!!D%!!!'L!!!"S`!!!CJ!!!'E!!!"T!!!!D8!!!'Q!!!
+"T`!!!DJ!!!'T!!!"UJ!!!DX!!!'X!!!"V3!!!Di!!!'[!!!"X!!!!E%!!!'D!!!
+"XJ!!!E-!!!'d!!!"Y3!!!Xi!!!,2!!!#d!!!!Y%!!!,5!!!#b!!!!XX!!!,6!!!
+#e!!!!Y8!!!,(!!!#c!!!!Xd!!!,+!!!#eJ!!!YF!!!,B!!!#f3!!!YS!!!,E!!!
+#h!!!!Yd!!!,H!!!#aJ!!!XN!!!"#!!!!3`!!!%3!!!"&!!!!2J!!!%%!!!"'!!!
+!4`!!!%J!!!!p!!!!3!!!!%N!!!"+!!!!5`!!!%`!!!"0!!!!6J!!!%m!!!"3!!!
+!83!!!&)!!!"6!!!!9!!!!&8!!!"@!!!!2`!!!&F!!!"B!!!!@3!!!&S!!!!N!!!
+!*3!!!#B!!!!R!!!!)!!!!#-!!!!S!!!!+3!!!#S!!!!I!!!!)J!!!#X!!!!X!!!
+!,3!!!#i!!!![!!!!-!!!!$%!!!!b!!!!-`!!!$3!!!!e!!!!0J!!!$F!!!!i!!!
+!)3!!!$N!!!!k!!!!1`!!!$`!!!#F!!!!R3!!!*i!!!#I!!!!Q!!!!*X!!!#J!!!
+!S3!!!+)!!!#A!!!!QJ!!!+-!!!#N!!!!T3!!!+B!!!#R!!!!U!!!!+N!!!#U!!!
+!U`!!!+`!!!#Y!!!!Q3!!!,-!!!#d!!!!Y3!!!,B!!!#[!!!!XJ!!!,F!!!#i!!!
+!Z3!!!+i!!!#a!!!!ZJ!!!,X!!!#m!!!![3!!!,i!!!#r!!!!`!!!!-%!!!$#!!!
+!``!!!-3!!!#`!!!!IJ!!!(m!!!#!!!!!J3!!!(S!!!"p!!!!JJ!!!)-!!!#%!!!
+!H3!!!(`!!!#&!!!!KJ!!!)F!!!#)!!!!L3!!!)S!!!#,!!!!M!!!!)d!!!#1!!!
+!M`!!!*!!!!!!N3!!!*)!!!"l!!!!N`!!!*3!!!#9!!!!PJ!!!!8!!!!'!!!!"`!
+!!!J!!!!"!!!!"!!!!!N!!!!+!!!!#`!!!!!!!!!$!!!!$!!!!!d!!!!1!!!!$`!
+!!"!!!!!4!!!!%J!!!"-!!!!8!!!!&3!!!"B!!!!A!!!!'!!!!"N!!!!#!!!!'J!
+!!"X!!!!F!!!!(3!!!'!!!!"K!!!!BJ!!!'-!!!"F!!!!A`!!!'3!!!"P!!!!CJ!
+!!&X!!!"H!!!!C`!!!'J!!!"T!!!!DJ!!!'X!!!"X!!!!E3!!!'i!!!"[!!!!F!!
+!!(%!!!"b!!!!F`!!!(3!!!"G!!!!G3!!!(B!!!"h!!!!H!!!!GN!!!(D!!!"f`!
+!!G`!!!(9!!!"f!!!!Gd!!!(H!!!"h`!!!G3!!!(A!!!"i!!!!H%!!!(L!!!"i`!
+!!H3!!!(P!!!"jJ!!!HF!!!(S!!!"k3!!!HS!!!(V!!!"l!!!!Hd!!!(@!!!"lJ!
+!!Hm!!!(`!!!"m3!!!aN!!!-D!!!$'`!!!a`!!!-G!!!$%`!!!aB!!!-H!!!$(`!
+!!b!!!!-5!!!$&`!!!aJ!!!-9!!!$)3!!!b)!!!-M!!!$*!!!!b8!!!-Q!!!$*`!
+!!bJ!!!-T!!!$%3!!!a3!!!,R!!!#k!!!!ZN!!!,U!!!#k`!!!Z%!!!,N!!!#l!!
+!!Zd!!!,Z!!!#i!!!!Z8!!!,Q!!!#i`!!!Zm!!!,`!!!#m3!!![)!!!,c!!!#p!!
+!![8!!!,f!!!#p`!!!Ym!!!,L!!!!bJ!!!-X!!!$-!!!!c3!!!-B!!!&+!!!!b3!
+!!-i!!!$2!!!!d!!!!-8!!!$)!!!"5`!!!0%!!!&-!!!"63!!!8i!!!$5!!!!d`!
+!!03!!!$9!!!!eJ!!!0F!!!$B!!!!f3!!!0S!!!$E!!!!a`!!!8m!!!&3!!!"83!
+!!9)!!!$K!!!!iJ!!!1-!!!$N!!!!h3!!!6J!!!$J!!!!j3!!!1B!!!$R!!!!h!!
+!!0m!!!%j!!!!k!!!!6S!!!%l!!!"2!!!!1N!!!$U!!!!k`!!!1`!!!$Y!!!!lJ!
+!!1m!!!$`!!!!m3!!!2)!!!$H!!!"23!!!6i!!!%r!!!"3!!!!2J!!!$j!!!!qJ!
+!!2X!!!$d!!!"33!!!2F!!!$m!!!!r3!!!2i!!!$c!!!!pJ!!!8)!!!$r!!!"3`!
+!!83!!!&&!!!"!!!!!3%!!!%#!!!"!`!!!33!!!%&!!!""J!!!3F!!!%)!!!"#3!
+!!28!!!&'!!!"4`!!!8J!!!&*!!!"*J!!!5F!!!%S!!!"+3!!!5)!!!%P!!!"+J!
+!!5X!!!%X!!!")3!!!53!!!%Y!!!",J!!!5m!!!%`!!!"-3!!!6)!!!%c!!!"0!!
+!!68!!!%f!!!"0`!!!5-!!!%2!!!"%!!!!4%!!!%5!!!"#`!!!9-!!!%1!!!"%`!
+!!43!!!%9!!!"#J!!!3d!!!&8!!!"&J!!!98!!!&@!!!"9`!!!4F!!!%B!!!"'3!
+!!4S!!!%E!!!"(!!!!4d!!!%H!!!"(`!!!5!!!!%-!!!"@!!!!9N!!!&D!!!"@`!
+!!P8!!!*@!!!#9`!!!PJ!!!*C!!!#63!!!P-!!!*3!!!#@J!!!PX!!!*F!!!#6!!
+!!P)!!!*4!!!#6`!!!P3!!!*G!!!#AJ!!!Pm!!!*J!!!#B3!!!Q)!!!*M!!!#C!!
+!!Q8!!!*1!!!#CJ!!!QF!!!*S!!!#D3!!!QS!!!*V!!!$!!!!!`%!!!-#!!!$!`!
+!!`3!!!,k!!!#r3!!!`8!!!-'!!!$"`!!![N!!!,q!!!#r`!!![`!!!-)!!!$#3!
+!!`S!!!-,!!!$$!!!!`d!!!-1!!!$$`!!!a!!!!,i!!!#q`!!!M8!!!)f!!!#0`!
+!!MJ!!!)j!!!#,3!!!M-!!!)`!!!#1J!!!MX!!!)m!!!#,!!!!M)!!!)a!!!#,`!
+!!M3!!!)p!!!#2J!!!Mm!!!*!!!!#33!!!N)!!!*$!!!#4!!!!N8!!!)Z!!!#4J!
+!!NF!!!*)!!!#53!!!NS!!!*,!!!#&3!!!KB!!!)A!!!#'!!!!KN!!!)0!!!#%`!
+!!K!!!!)D!!!#'`!!!K`!!!)-!!!#%J!!!K%!!!)2!!!#&!!!!Kd!!!)H!!!#(`!
+!!L!!!!)K!!!#)J!!!L-!!!)N!!!#*3!!!U`!!!)1!!!#*J!!!LF!!!)S!!!#+3!
+!!LS!!!)V!!!"I`!!!B!!!!(m!!!"J3!!!B)!!!&l!!!#"`!!!Ai!!!'$!!!"K!!
+!!B8!!!&k!!!#"J!!!I3!!!&p!!!##!!!!I8!!!''!!!#!!!!!I)!!!)"!!!"K`!
+!!BJ!!!'*!!!"pJ!!!BS!!!',!!!"M!!!!Bd!!!'1!!!"r3!!!Bm!!!'3!!!!!C%
+!!!'5!!!"N`!!!A`!!!'8!!!"P3!!!IF!!!)#!!!"PJ!!!CF!!!'l!!!"[!!!!Ii
+!!!'p!!!"[J!!!EF!!!)+!!!"ZJ!!!Em!!!(!!!!"`3!!!EB!!!)*!!!"q!!!!EN
+!!!),!!!"q3!!!F)!!!)$!!!"m`!!!J3!!!($!!!"a!!!!F8!!!(k!!!"aJ!!!FF
+!!!()!!!"b3!!!FS!!!(r!!!"b`!!!F`!!!(0!!!"cJ!!!Fm!!!'i!!!"d!!!!G%
+!!!(l!!!#"3!!!G)!!!(6!!!#Y3!!!VB!!!+h!!!#Z!!!!VN!!!+[!!!#XJ!!!VS
+!!!+l!!!#[!!!!Ui!!!+c!!!#Y!!!!V%!!!+p!!!#[J!!!Vm!!!,!!!!#`3!!!X)
+!!!,$!!!#a!!!!X8!!!+Y!!!#X!!!!"i!!!+9!!!#PJ!!!TF!!!+B!!!#Q3!!!Sd
+!!!+6!!!#N!!!!!+D!!!#Q`!!!T`!!!+-!!!#NJ!!!T%!!!+2!!!#P!!!!Td!!!+
+H!!!#R`!!!U!!!!+K!!!#SJ!!!U-!!!+N!!!#T3!!!Si!!!+Q!!!#T`!!!UJ!!!+
+T!!!#UJ!!!UX!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%!!6T)HA"PFN0
+KFQ3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#`MlJ!!!!!!!!!3!#`NI
+`!!)!!!!!!!!!!!!!!X)fJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!J!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&!!!!!!%!!!!!"3!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(!3%!!3!
+!!3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!AepcG'&IAh0dBA*d!%C$6J!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!J!
+!!!)!!J!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!8!!!G2F'9Z8e0-8e4PFh3!!!!!!!!!!!!!!!!!!!!!!!!!2cmr2d&38%`!!!3
+!!!!%!!!!!%!!!&M!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!%r2cmr!!!!!!!!!!J!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!!"!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!#!!-!#J!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%!!!!!!!!!!!!"!(*PC`!
+!!#3!!!!#!!!!!!!!!%8!!!!$D@aX4!!!!'N!!!!%!M@i)!!!!)X!!!!&"dGPG!!
+!!+`!!!!'G%e[G3!!!-`!!!!(G%4TB3!!!2%!!!!)C%4TB3!!!4!!!!!*4'PKE!!
+!!6!!!!!+D@&XE`!!!9-!!!!,Gd4TB3!!!AB!!!!-D@&XE`!!!C%!!!!0H(3053!
+!!E)!!!!1GQ9ZG!!!!G)!!!!2C@aPB`!!!I-!!!!3B@a[C`!!!Jm!!!!4B@a[C`!
+!!M8!!!!54'PKE!!!!PN!!!!65A4PE3!!!Rd!!!!8G'p`33!!!Td!!!!9C8&XC3!
+!!X)!!!!@Efj"E!!!!Z%!!!!AC%&XC3!!![d!!!!BE'9bG!!!!ad!!!!CH(3+43!
+!!ci!!!!DC!K(C3!!!em!!!!ECA4%53!!!i)!!!!F9'9iG!!!!k)!!!!GG!Y0E`!
+!!m%!!!!HC`j%C3!!!q%!!!!IGA*MC3!!!r-!!!!JGA*RC3!!""8!!!!K!!!"J!!
+!"$3!!!!LEQ4PC!!!"&B!!!!MDA0d!!!!"(B!!!!N!MAbX!!!"*8!!!!P!!!!!!!
+!",-!!!!Q!!!!!!!!"0B!!!!R!!!!!!!!"2-!!!!S!!!!!!!!"4%!!!!T!!!!)!!
+!"6)!!!!UAf0KF`!!"9-!!!!V!MAM-!!!"@`!!!!X!!EP`!!!"BX!!!!Y!(*PC`!
+!"DN!!!!Z!!!!!!!!"FJ!!!![D@aX4!!!"H)!!!!`!M@i)!!!"JB!!!!a"dGPG!!
+!"LJ!!!!bG%e[G3!!"NS!!!!cG%4TB3!!"QJ!!!!dC%4TB3!!"SX!!!!e4'PKE!!
+!"UJ!!!!fD@&XE`!!"X)!!!!hGd4TB3!!"Z!!!!!iD@&XE`!!"[m!!!!jH(3053!
+!"ai!!!!kGQ9ZG!!!"cm!!!!lC@aPB`!!"ed!!!!mB@a[C`!!"hS!!!!pB@a[C`!
+!"jJ!!!!q4'PKE!!!"lS!!!!r5A4PE3!!"pN!!!"!G'p`33!!"rX!!!""!!!"J!!
+!#"X!!!"#Efj"E!!!#$S!!!"$C%&XC3!!#&J!!!"%E'9bG!!!#(X!!!"&H(3+43!
+!#*J!!!"'C!K(C3!!#,B!!!"(CA4%53!!#0F!!!")9'9iG!!!#2J!!!"*G!Y0E`!
+!#4%!!!"+C`j%C3!!#6!!!!",GA*MC3!!#8i!!!"-GA*RC3!!#@d!!!"0!!!!N!!
+!!!Q(!!!!6J!!!!B!!!QV!!!!6`!!!!%!!!R0!!!!8!!!!!S!!!R[!!!!83!!!!-
+!!!S0!!!!8J!!!!i!!!S`!!!!8`!!!"%!!!T0!!!!9!!!!"3!!!TR!!!!93!!!"F
+!!!U&!!!!9J!!!!)!!!UN!!!!9`!!!"`!!!V$!!!!@!T(CA3!!!VN!!!!@3!!""!
+!!!X#!!!!@Q-J9'm!!!XI!!!!@fadD3!!!!Xp!!!!A'GYC@i!!!YI!!!!A3"-D@)
+!!!Yq!!!!AMBi5`!!!!ZJ!!!!Ah*d)$B!!![!!!!!B'pZ)%J!!![I!!!!B3!!!B!
+!!![p!!!!BP"KFf-!!!`J!!!!Bf9k!&!!!!`p!!!!C(3J0MJ!!!aE!!!!C3)KVqJ
+!!!am!!!!CJ)KVr!!!!bG!!!!C`)KVr!!!!bf!!!!D!)KVr!!!!c9!!!!D3)KX!!
+!!!cc!!!!DJ)KX0J!!!d5!!!!D`)KX-J!!!dX!!!!E!)KX-J!!!e3!!!!E3)KX-J
+!!!eb!!!!EJ)KX-J!!!f8!!!!E`)KX-J!!!fb!!!!F!)KX-J!!!h9!!!!F3)KX-J
+!!!hb!!!!FJ)KX-J!!!i-!!!!F`)KX-J!!!iU!!!!G!)KX0J!!!j*!!!!G3)KX0J
+!!!jS!!!!GJ)KX%J!!!k*!!!!G`)fIR!!!!kR!!!!H!!'CG`!!!l%!!!!H@0KE'`
+!!!lL!!!!HN,J3q!!!!m%!!!!HdMJ5H!!!!mM!!!!I%lJ6q!!!!p&!!!!I96J9H!
+!!!pP!!!!IPVJ@q!!!!q%!!!!If$JBH!!!!qL!!!!J'EJCq!!!!r&!!!!J3!!!B!
+!!!rL!!!!JQjNC@3!!"!!!!!!JfPcG!!!!"!K!!!!K&4KFQF!!""#!!!!K@0d)%3
+!!""E!!!!KP0PG(3!!""k!!!!Kb"6CA3!!"#B!!!!L'96B@B!!"#h!!!!L3!!!#!
+!!"$4!!!!LPpMBA-!!"$e!!!!L`)eic!!!"%A!!!!M!!'jF!!!"%j!!!!M3"bC@F
+!!"&A!!!!MJ!!!!!!!"&k!!!!MfPXE%3!!"'A!!!!N!!#0EJJ!!!4X3!!!*%(4f9
+d!!!4c`!!!**d6@pe!!!4lJ!!!*0d4'PK!!!5$3!!!*4N4'PK!!!5,J!!!*9%D@&
+X!!!56!!!!*CTB@a[!!!5D3!!!*Gh4'PK!!!5K`!!!*KTB@a[!!!5V`!!!*PiG!e
+*!!!5e!!!!*TfC@jd!!!5r!!!!*YPE'9M!!!6)J!!!*aKE'pR!!!64`!!!*eKE'p
+R!!!6D`!!!*j%D@&X!!!6P!!!!*p*G'9Y!!!6Y`!!!+"dEh""!!!6f`!!!+%!!!!
+!!!!8!J!!!+)!!!!!!!!8+3!!!+-!!!!!!!!85!!!!+3!!!!!!!!8E3!!!+8!!!!
+!!!!8P`!!!+B!!!!!!!!8[`!!!+F!!!!!!!!8j`!!!+J!!!!!!!!9#`!!!+N!!!!
+!!!!90!!!!+S!!!!!!!!99`!!!+X!!!!!!!!9G`!!!+`!!!!!!!!9Q`!!!+d!!!!
+!!!!9`!!!!+i!!!!!!!!9j3!!!+m!!!!!!!!@$3!!!,!!!!!!!!!@-J!!!,%!!!!
+!!!!@@J!!!,)!!!!!!!!@J!!!!,-!!!!!!!!@T3!!!,3!!!!!!!!@b3!!!,8!!!!
+!!!!@mJ!!!,B!!!!!!!!A&3!!!,F!!!!!!!!A13!!!,J!!!!!!!!AB!!!!,N!!!!
+!!!!AK`!!!,S!!!!!!!!ATJ!!!,X!!!!!!!!Ab`!!!,`!!!!!!!!Ap3!!!,d!!!!
+!!!!B(3!!!,i!!!!!!!!B43!!!,m!!!!!!!!BD3!!!-!!!!!!!!!BNJ!!!-%!!!!
+!!!!BY3!!!-)!!!!!!!!Be3!!!--!!!!!!!!Bq3!!!-3!!!!!!!!C(J!!!-8!!!!
+!!!!C3`!!!-B!!!!!!!!CC3!!!-F!!!!!!!!CK!!!!-J!!!!!!!!CTJ!!!-N!!!!
+!!!!CaJ!!!-S!!!!!!!!Cj3!!!-X!!!!!!!!D!`!!!-`!!!!!!!!D*J!!!-d!!!!
+!!!!D3`!!!-i!!!!!!!!DB3!!!-m!!!!!!!!DJJ!!!0!!!!!!!!!DS`!!!0%!!!!
+!!!!D[!!!!0)!!!!!!!!Df`!!!0-!!!!!!!!Dr`!!!03!!!!!!!!E)3!!!08!!!!
+!!!!E3`!!!0B!!!!!!!!EB3!!!0F!!!!!!!!EK!!!!0J!!!!!!!!ES3!!!0N!!!!
+!!!!EZ`!!!0S!!!!!!!!Ef3!!!0X!!!!!!!!Eq!!!!0`!!!!!!!!F&`!!!0d!!!!
+!!!!F2`!!!0i!!!!!!!!FC!!!!0m!!!!!!!!FM!!!!1!!!!!!!!!FXJ!!!1%!!!!
+!!!!Fe`!!!1)!!!!!!!!Fq`!!!1-!!!!!!!!G*!!!!13!!!!!!!!G4`!!!18!!!!
+!!!!GD`!!!1B!!!!!!!!GNJ!!!1F!!!!!!!!GZ3!!!1J!!!!!!!!Gf!!!!1N!!!!
+!!!!Gr3!!!1S!!!!!!!!H*`!!!1X!!!!!!!!H6`!!!1`!!!!!!!!HG`!!!1d!!!!
+!!!!HQ`!!!1i!!!!!!!!Ha!!!!1m!!!!!!!!Hj`!!!2!!!!!!!!!I"`!!!2%!!!!
+!!!!I+`!!!2)!!!!!!!!I8!!!!2-!!!!!!!!IG3!!!23!!!!!!!!IR3!!!28!!!!
+!!!!I`J!!!2B!!!!!!!!IkJ!!!2F!!!!!!!!J%!!!!2J!!!!!!!!J03!!!2N!!!!
+!!!!J@3!!!2S!!!!!!!!JJJ!!!2X!!!!!!!!JT3!!!2`!!!!!!!!Jb3!!!2d!!!!
+!!!!Jm!!!!2i!!!!!!!!K&`!!!2m!!!!!!!!K0J!!!3!!!!!!!!!K@`!!!3%!!!!
+!!!!KK3!!!3)!!!!!!!!KV3!!!3-!!!!!!!!Ke3!!!33!!!!!!!!Kq3!!!38!!!!
+!!!!L)J!!!3B!!!!!!!!L43!!!3F!!!!!!!!LC3!!!3J!!!!!!!!LL3!!!3N!!!!
+!!!!LVJ!!!3S!!!!!!!!Ld`!!!3X!!!!!!!!Lp3!!!3`!!!!!!!!M&!!!!3d!!!!
+!!!!M0J!!!3i!!!!!!!!M9J!!!3m!!!!!!!!MG3!!!4!!!!!!!!!MN`!!!4%!!!!
+!!!!MYJ!!!4)!!!!!!!!Md`!!!4-!!!!!!!!Mm3!!!43!!!!!!!!N%J!!!48!!!!
+!!!!N-`!!!4B!!!!!!!!N6!!!!4F!!!!!!!!ND`!!!4J!!!!!!!!NM`!!!4N!!!!
+!!!!NX3!!!4S!!!!!!!!Nd`!!!4X!!!!!!!!Nm3!!!4`!!!!!!!!P&!!!!4d!!!!
+!!!!P-3!!!4i!!!!!!!!P5`!!!4m!!!!!!!!PD3!!!5!!!!!!!!!PL!!!!5%!!!!
+!!!!PT`!!!5)!!!!!!!!Pb3!!!5-!!!!!!!!Pk!!!!53!!!!!!!!Q#J!!!58!!!!
+!!!!Q+J!!!5B!!!!!!!!Q53!!!5F!!!!!!!!QC`!!!5J!!!!!!!!QLJ!!!5N!!!!
+!!!!QT`!!!5S!!!!!!!!Qa3!!!5X!!!!!!!!QjJ!!!5`!!!!!!!!R"`!!!5d!!!!
+!!!!R)!!!!5i!!!!!!!!R2`!!!5m!!!!!!!!RB`!!!6!!!!!!!!!RK3!!!6%!!!!
+!!!!RT`!!!6)!!!!!!!!Ra3!!!6-!!!!!!!!Rk!!!!63!!!!!!!!S"3!!!68!!!!
+!!!!S(`!!!6B!!!!!!!!S23!!!6F!!!!!!!!SA!!!!6J!!!!!!!!SH`!!!6N!!!!
+!!!!SR`!!!6S!!!!!!!!S`J!!!6X!!!!!!!!SjJ!!!6`!!!!!!!!T#`!!!6d!!!!
+!!!!T+`!!!6i!!!!!!!!T8J!!!6m!!!!!!!!TGJ!!!8!!!!!!!!!TQ3!!!8%!!!!
+!!!!T[3!!!8)!!!!!!!!Ti3!!!8-!!!!!!!!U"!!!!83!!!!!!!!U+!!!!88!!!!
+!!!!U63!!!8B!!!!!!!!UE3!!!8F!!!!!!!!UP!!!!8J!!!!!!!!UZ!!!!8N!!!!
+!!!!Uf`!!!8S!!!!!!!!Ur`!!!8X!!!!!!!!V(3!!!8`!!!!!!!!V1J!!!8d!!!!
+!!!!V@!!!!8i!!!!!!!!VG`!!!8m!!!!!!!!VN3!!!9!!!!!!!!!VXJ!!!9%!!!!
+!!!!Vd!!!!9)!!!!!!!!Vl3!!!9-!!!!!!!!X#`!!!93!!!!!!!!X+3!!!98!!!!
+!!!!X4J!!!9B!!!!!!!!XC!!!!9F!!!!!!!!XJ`!!!9J!!!!!!!!XR3!!!9N!!!!
+!!!!X[J!!!9S!!!!!!!!Xh!!!!9X!!!!!!!!Xq3!!!9`!!!!!!!!Y&`!!!9d!!!!
+!!!!Y2`!!!9i!!!!!!!!YC!!!!9m!!!!!!!!YM!!!!@!!!!!!!!!YXJ!!!@%!!!!
+!!!!Ye`!!!@)!!!!!!!!Yq`!!!@-!!!!!!!!Z*!!!!@3!!!!!!!!Z4`!!!@8!!!!
+!!!!ZD`!!!@B!!!!!!!!ZNJ!!!@F!!!!!!!!ZZ3!!!@J!!!!!!!!Zf!!!!@N!!!!
+!!!!Zr3!!!@S!!!!!!!![)3!!!@X!!!!!!!![4J!!!@`!!!!!!!![CJ!!!@d!!!!
+!!!![N!!!!!&Z!!!!!!!!,lJ!!!&[!!!!!!!!,q!!!!&`!!!!!!!!-!3!!!&a!!!
+!!!!!-#d!!!&b!!!!!!!!-&!!!!&c!!!!!!!!-(!!!!&d!!!!!!!!-*3!!!&e!!!
+!!!!!-,N!!!&f!!!!!!!!-0i!!!&h!!!!!!!!-38!!!&i!!!!!!!!-5N!!!&j!!!
+!!!!!-8`!!!&k!!!!!!!!-A!!!!&l!!!!!!!!-CJ!!!&m!!!!!!!!-Ed!!!&p!!!
+!!!!!-H8!!!&q!!!!!!!!-JX!!!&r!!!!!!!!-M!!!!'!!!!!!!!!-P3!!!'"!!!
+!!!!!-Rd!!!'#!!!!!!!!-U!!!!'$!!!!!!!!-X3!!!'%!!!!!!!!-ZX!!!'&!!!
+!!!!!-a)!!!''!!!!!!!!-c%!!!'(!!!!!!!!-eB!!!')!!!!!!!!-hS!!!'*!!!
+!!!!!-jm!!!'+!!!!!!!!-lm!!!',!!!!!!!!-qN!!!'-!!!!!!!!0"%!!!'0!!!
+!!!!!0$N!!!'1!!!!!!!!0&d!!!'2!!!!!!!!0)B!!!'3!!!!!!!!!$5T!!!"N3!
+!!!!!!$6*!!!"NJ!!!!!!!$6Y!!!"N`!!!!!!!$85!!!"P!!!!!!!!$8h!!!"P3!
+!!!!!!$9H!!!"PJ!!!!!!!$@#!!!"P`!!!!!!!$@P!!!"Q!!!!!!!!$A*!!!"Q3!
+!!!!!!$Aa!!!"QJ!!!!!!!$B@!!!"Q`!!!!!!!$Bq!!!"R!!!!!!!!$CN!!!"R3!
+!!!!!!$D*!!!"RJ!!!!!!!$DY!!!"R`!!!!!!!$E@!!!"S!!!!!!!!$Ej!!!"S3!
+!!!!!!$FG!!!"SJ!!!!!!!$G%!!!"S`!!!!!!!$GV!!!"T!!!!!!!!$H+!!!"T3!
+!!!!!!$H[!!!"TJ!!!!!!!$I6!!!"T`!!!!!!!$Ii!!!"U!!!!!!!!$JB!!!"U3!
+!!!!!!$K#!!!"UJ!!!!!!!$KU!!!"U`!!!!!!!$L5!!!"V!!!!!!!!$Lf!!!"V3!
+!!!!!!$MI!!!"VJ!!!!!!!$N#!!!"V`!!!!!!!$NL!!!"X!!!!!!!!$P'!!!"X3!
+!!!!!!$PV!!!"XJ!!!!!!!$Q3!!!!!E-!!!!!!!!jY`!!!E3!!!!!!!!jf`!!!E8
+!!!!!!!!jrJ!!!EB!!!!!!!!k)J!!!EF!!!!!!!!k5J!!!EJ!!!!!!!!kE`!!!EN
+!!!!!!!!kP`!!!ES!!!!!!!!k[3!!!EX!!!!!!!!kiJ!!!E`!!!!!!!!l"J!!!Ed
+!!!!!!!!l,`!!!Ei!!!!!!!!l8J!!!Em!!!!!!!!lGJ!!!F!!!!!!!!!lR3!!!F%
+!!!!!!!!la!!!!F)!!!!!!!!li`!!!F-!!!!!!!!m#!!!!F3!!!!!!!!m,!!!!F8
+!!!!!!!!m83!!!FB!!!!!!!!mF3!!!FF!!!!!!!!mQ`!!!FJ!!!!!!!!m``!!!FN
+!!!!!!!!mk`!!!FS!!!!!!!!p$`!!!FX!!!!!!!!p1!!!!F`!!!!!!!!p@`!!!Fd
+!!!!!!!!pH`!!!Fi!!!!!!!!pR`!!!Fm!!!!!!!!pa!!!!G!!!!!!!!!pk3!!!G%
+!!!!!!!!q%!!!!G)!!!!!!!!q0!!!!G-!!!!!!!!q9`!!!G3!!!!!!!!qH`!!!G8
+!!!!!!!!qR3!!!GB!!!!!!!!q[!!!!GF!!!!!!!!qhJ!!!GJ!!!!!!!!qrJ!!!GN
+!!!!!!!!r(3!!!GS!!!!!!!!r1`!!!GX!!!!!!!!rAJ!!!G`!!!!!!!!rH`!!!Gd
+!!!!!!!!rQ3!!!Gi!!!!!!!!rZJ!!!Gm!!!!!!!!rf`!!!H!!!!!!!!!rp!!!!H%
+!!!!!!!"!%`!!!H)!!!!!!!"!-3!!!H-!!!!!!!"!8!!!!H3!!!!!!!"!DJ!!!H8
+!!!!!!!"!MJ!!!HB!!!!!!!"!X!!!!HF!!!!!!!"!dJ!!!HJ!!!!!!!"!m!!!!HN
+!!!!!!!""%`!!!HS!!!!!!!""-!!!!HX!!!!!!!""5J!!!H`!!!!!!!""D!!!!Hd
+!!!!!!!""K`!!!Hi!!!!!!!""TJ!!!Hm!!!!!!!""a`!!!I!!!!!!!!""j3!!!I%
+!!!!!!!"#!J!!!I)!!!!!!!"#)!!!!I-!!!!!!!"#4J!!!I3!!!!!!!"#E!!!!I8
+!!!!!!!"#P!!!!IB!!!!!!!"#YJ!!!IF!!!!!!!"#hJ!!!IJ!!!!!!!"$#`!!!IN
+!!!!!!!"$-`!!!IS!!!!!!!"$93!!!IX!!!!!!!"$I3!!!I`!!!!!!!"$UJ!!!Id
+!!!!!!!"$e`!!!Ii!!!!!!!"%"!!!!Im!!!!!!!"%-3!!!J!!!!!!!!"%AJ!!!J%
+!!!!!!!"%L!!!!J)!!!!!!!"%Y!!!!J-!!!!!!!"%i3!!!J3!!!!!!!"&#`!!!J8
+!!!!!!!"&0`!!!JB!!!!!!!"&C!!!!JF!!!!!!!"&M3!!!JJ!!!!!!!"&X3!!!JN
+!!!!!!!"&e!!!!JS!!!!!!!"&r3!!!JX!!!!!!!"')3!!!J`!!!!!!!"'4!!!!Jd
+!!!!!!!"'A!!!!Ji!!!!!!!"'F3!!!Jm!!!!!!!"'L3!!!K!!!!!!!!"'R`!!!K%
+!!!!!!!"'Y!!!!K)!!!!!!!"'c!!!!K-!!!!!!!"'j3!!!K3!!!!!!!"'q3!!!K8
+!!!!!!!"($!!!!KB!!!!!!!"()!!!!KF!!!!!!!"(13!!!KJ!!!!!!!"(9J!!!KN
+!!!!!!!"(D3!!!KS!!!!!!!"(I3!!!KX!!!!!!!"(P!!!!K`!!!!!!!"(U`!!!Kd
+!!!!!!!"(ZJ!!!Ki!!!!!!!"(e!!!!Km!!!!!!!"(k!!!!L!!!!!!!!")!3!!!L%
+!!!!!!!")(J!!!L)!!!!!!!")-3!!!L-!!!!!!!")33!!!L3!!!!!!!")93!!!L8
+!!!!!!!")DJ!!!LB!!!!!!!")I`!!!LF!!!!!!!")PJ!!!LJ!!!!!!!")UJ!!!LN
+!!!!!!!")a`!!!LS!!!!!!!")j!!!!LX!!!!!!!")p`!!!L`!!!!!!!"*#`!!!Ld
+!!!!!!!"*+!!!!Li!!!!!!!"*3J!!!Lm!!!!!!!"*A`!!!M!!!!!!!!"*HJ!!!M%
+!!!!!!!"*P!!!!M)!!!!!!!"*X3!!!M-!!!!!!!"*c`!!!M3!!!!!!!"*k!!!!M8
+!!!!!!!"+!!!!!MB!!!!!!!"+'3!!!MF!!!!!!!"+0`!!!MJ!!!!!!!"+@3!!!MN
+!!!!!!!"+F3!!!MS!!!!!!!"+LJ!!!MX!!!!!!!"+TJ!!!M`!!!!!!!"+`J!!!Md
+!!!!!!!"+eJ!!!Mi!!!!!!!"+p3!!!Mm!!!!!!!",$J!!!N!!!!!!!!",,!!!!N%
+!!!!!!!",6J!!!N)!!!!!!!",CJ!!!N-!!!!!!!",H`!!!N3!!!!!!!",P!!!!N8
+!!!!!!!",VJ!!!NB!!!!!!!",b!!!!NF!!!!!!!",j!!!!NJ!!!!!!!",r3!!!NN
+!!!!!!!"-(`!!!NS!!!!!!!"-33!!!NX!!!!!!!"-@3!!!N`!!!!!!!"-FJ!!!Nd
+!!!!!!!"-MJ!!!Ni!!!!!!!"-T`!!!Nm!!!!!!!"-``!!!P!!!!!!!!"-h3!!!P%
+!!!!!!!"-pJ!!!P)!!!!!!!"0%J!!!P-!!!!!!!"0,`!!!P3!!!!!!!"04`!!!P8
+!!!!!!!"0AJ!!!PB!!!!!!!"0GJ!!!PF!!!!!!!"0N`!!!PJ!!!!!!!"0Y!!!!PN
+!!!!!!!"0b`!!!PS!!!!!!!"0i`!!!PX!!!!!!!"0rJ!!!P`!!!!!!!"1'3!!!Pd
+!!!!!!!"1,!!!!Pi!!!!!!!"15J!!!Pm!!!!!!!"1BJ!!!Q!!!!!!!!"1I`!!!Q%
+!!!!!!!"1S!!!!Q)!!!!!!!"1Y`!!!Q-!!!!!!!"1b`!!!Q3!!!!!!!"1i`!!!Q8
+!!!!!!!"1r!!!!QB!!!!!!!"2&3!!!QF!!!!!!!"2-!!!!QJ!!!!!!!"25!!!!QN
+!!!!!!!"2D3!!!QS!!!!!!!"2LJ!!!QX!!!!!!!"2S3!!!Q`!!!!!!!"2Z3!!!Qd
+!!!!!!!"2d`!!!Qi!!!!!!!"2kJ!!!Qm!!!!!!!"3"!!!!R!!!!!!!!"3(!!!!R%
+!!!!!!!"3-`!!!R)!!!!!!!"363!!!R-!!!!!!!"3D!!!!R3!!!!!!!"3IJ!!!R8
+!!!!!!!"3N`!!!RB!!!!!!!"3U3!!!RF!!!!!!!"3a!!!!RJ!!!!!!!"3i`!!!RN
+!!!!!!!"3q!!!!RS!!!!!!!"4$J!!!RX!!!!!!!"4*`!!!R`!!!!!!!"43!!!!Rd
+!!!!!!!"483!!!Ri!!!!!!!"4E3!!!Rm!!!!!!!"4J`!!!S!!!!!!!!"4RJ!!!S%
+!!!!!!!"4[3!!!S)!!!!!!!"4dJ!!!S-!!!!!!!"4j!!!!S3!!!!!!!"4qJ!!!S8
+!!!!!!!"5%3!!!SB!!!!!!!"5+!!!!SF!!!!!!!"533!!!SJ!!!!!!!"59`!!!SN
+!!!!!!!"5GJ!!!SS!!!!!!!"5P3!!!SX!!!!!!!"5UJ!!!S`!!!!!!!"5`!!!!Sd
+!!!!!!!"5fJ!!!Si!!!!!!!"5m3!!!Sm!!!!!!!"6#`!!!T!!!!!!!!!!8b-!!!+
+4!!!!!!!!8cS!!!+5!!!!!!!!8e3!!!+6!!!!!!!!8fm!!!+8!!!!!!!!8i8!!!+
+9!!!!!!!!8jS!!!+@!!!!!!!!8l!!!!+A!!!!!!!!8mX!!!+B!!!!!!!!8qS!!!+
+C!!!!!!!!8rm!!!+D!!!!!!!!9"8!!!+E!!!!!!!!9#i!!!+F!!!!!!!!9%F!!!+
+G!!!!!!!!9&J!!!+H!!!!!!!!9(3!!!+I!!!!!!!!9)S!!!+J!!!!!!!!9+8!!!+
+K!!!!!!!!9-3!!!+L!!!!!!!!90N!!!+M!!!!!!!!91X!!!+N!!!!!!!!93%!!!+
+P!!!!!!!!94J!!!+Q!!!!!!!!95m!!!+R!!!!!!!!98J!!!+S!!!!!!!!99i!!!+
+T!!!!!!!!9Ad!!!+U!!!!!!!!9C`!!!+V!!!!!!!!9E%!!!+X!!!!!!!!9FF!!!+
+Y!!!!!!!!9G`!!!+Z!!!!!!!!9Hd!!!+[!!!!!!!!9J%!!!+`!!!!!!!!9K)!!!+
+a!!!!!!!!9LB!!!+b!!!!!!!!9MJ!!!+c!!!!!!!!9NN!!!+d!!!!!!!!9Pi!!!+
+e!!!!!!!!9R)!!!+f!!!!!!!!9S)!!!+h!!!!!!!!9TF!!!+i!!!!!!!!9V!!!!+
+j!!!!!!!!9Vm!!!+k!!!!!!!!9Xm!!!+l!!!!!!!!9Z)!!!+m!!!!!!!!9[8!!!+
+p!!!!!!!!9`!!!!+q!!!!!!!!9aB!!!+r!!!!!!!!9bB!!!,!!!!!!!!!9cX!!!,
+"!!!!!!!!9e3!!!,#!!!!!!!!9f-!!!,$!!!!!!!!9fm!!!,%!!!!!!!!9hm!!!,
+&!!!!!!!!9j!!!!!#aJ!!!!!!!&HK!!!#a`!!!!!!!&Hb!!!#b!!!!!!!!&I'!!!
+#b3!!!!!!!&IA!!!#bJ!!!!!!!&IV!!!#b`!!!!!!!&Ip!!!#c!!!!!!!!&J1!!!
+#c3!!!!!!!&JM!!!#cJ!!!!!!!&Jh!!!#c`!!!!!!!&K(!!!#d!!!!!!!!&KF!!!
+#d3!!!!!!!&Ke!!!#dJ!!!!!!!&L%!!!#d`!!!!!!!&L8!!!#e!!!!!!!!&LR!!!
+#e3!!!!!!!&Lk!!!#eJ!!!!!!!&M&!!!#e`!!!!!!!&ME!!!#f!!!!!!!!&MV!!!
+#f3!!!!!!!&N!!!!#fJ!!!!!!!&NC!!!#f`!!!!!!!&NS!!!#h!!!!!!!!&Nd!!!
+#h3!!!!!!!&P%!!!#hJ!!!!!!!&P9!!!#h`!!!!!!!&PQ!!!#i!!!!!!!!&Q!!!!
+#i3!!!!!!!&QG!!!#iJ!!!!!!!&Qh!!!#i`!!!!!!!&R8!!!#j!!!!!!!!&R[!!!
+#j3!!!!!!!&S*!!!#jJ!!!!!!!&SR!!!#j`!!!!!!!&T%!!!#k!!!!!!!!&TG!!!
+#k3!!!!!!!&Tl!!!#kJ!!!!!!!&UG!!!#k`!!!!!!!&Ue!!!#l!!!!!!!!&V1!!!
+#l3!!!!!!!&VU!!!#lJ!!!!!!!&X'!!!#l`!!!!!!!&XD!!!#m!!!!!!!!&Xj!!!
+#m3!!!!!!!&Y5!!!#mJ!!!!!!!&Y`!!!#m`!!!!!!!&Z5!!!#p!!!!!!!!&ZU!!!
+#p3!!!!!!!&Zr!!!#pJ!!!!!!!&[B!!!#p`!!!!!!!&[b!!!#q!!!!!!!!&`-!!!
+#q3!!!!!!!&`P!!!#qJ!!!!!!!&a"!!!#q`!!!!!!!&aD!!!#r!!!!!!!!&af!!!
+#r3!!!!!!!&b3!!!!![i!!!!!!!"FU3!!![m!!!!!!!"FaJ!!!`!!!!!!!!"FiJ!
+!!`%!!!!!!!"FqJ!!!`)!!!!!!!"G&`!!!`-!!!!!!!"G1!!!!`3!!!!!!!"G6`!
+!!`8!!!!!!!"GC`!!!`B!!!!!!!"GJJ!!!`F!!!!!!!"GR3!!!`J!!!!!!!"GX!!
+!!`N!!!!!!!"GcJ!!!`S!!!!!!!"GjJ!!!`X!!!!!!!"H!`!!!``!!!!!!!"H*!!
+!!`d!!!!!!!"H1`!!!`i!!!!!!!"H6`!!!`m!!!!!!!"HC`!!!a!!!!!!!!"HJ!!
+!!a%!!!!!!!"HQ3!!!a)!!!!!!!"HX`!!!a-!!!!!!!"Hd!!!!a3!!!!!!!"HkJ!
+!!a8!!!!!!!"I"`!!!aB!!!!!!!"I)J!!!aF!!!!!!!"I2!!!!aJ!!!!!!!"I@J!
+!!aN!!!!!!!"IG`!!!aS!!!!!!!"IN!!!!!-E!!!!!!!!Aki!!!-F!!!!!!!!Ap!
+!!!-G!!!!!!!!AqJ!!!-H!!!!!!!!B!%!!!-I!!!!!!!!B"d!!!-J!!!!!!!!B$N
+!!!-K!!!!!!!!B%d!!!-L!!!!!!!!B'`!!!-M!!!!!!!!B)8!!!-N!!!!!!!!B+-
+!!!-P!!!!!!!!B-8!!!-Q!!!!!!!!B0d!!!-R!!!!!!!!B2)!!!-S!!!!!!!!B3X
+!!!-T!!!!!!!!B58!!!-U!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%*KFfP
+M)&4[EfaLEhJJ6A9XG'N!4QPbFh3J8f9RE@9ZG!!kB5j[GA3!6'PL)%PYF'pbG#!
+f1%X!69"A)%PYF'pbG#!f1%X!3Q&XE'p[EL")C@a`!%eA)%-[3bXV)$Bi5`"09b"
+3BA0MB@`J0MK,!&*PHJ"348BJ5@e`Eh*d)$Bi5`"#BA0TBb"8EfpXBQpi)$BiD`!
+k9'p[E'*[H$BiDbj[GA3!3Q&cBfNJ9'p[E'*[H#"38%-!3Q&cD@-J9'p[E'*[H#"
+38%-!6'PL)%PYF'pbG#"38%-!69FJ3bp$+bXJ8&"$!%eA)&"KFf0KE#"38%-!8&"
+$3A0Y!&K$6dC')%PYF'pbG#"38%-!8%9')%PYF'pbG#"38%-!1P4[EfaLEhK38%-
+ZEh9d!&0TE'aj3Q&XE(-ZB`"6D@aXH8*KE'ac,R*cFQ-!5@jdCA*QB@0P6'PL!%e
+KG'K-D@)!690-)&*eER4TE@938%-Z6'PL!%e66#"$,P"33bj-D@)!690-)%-V+bj
+38%-Z6'PL!%eKBdp6,QaTBJ"0BA4S6'PL0MK,)%CK+$4T,cKN+5j-D@)!690-)&*
+eER4TE@8f1%XZ6'PL!%e66#"$,MBi5b"'B5JdD9miC#NZ6'PL!%e66#"$+bXZ0MK
+,)%CK+$4TAcKN+5j-D@)!3Q&cD@-J9'p[E'*[H#"'393!1NePFQGP)%peG!!k9'p
+[E'*[H%C"9#j[GA3!9'p[E'*[H$BiDbj[GA3!9'p[E'*[H&"33bj[GA3!6@&dD%a
+TBMBi5b"'B5JdD9miC#NZ6'PL!%e66#"658p9@#if1%XZ6'PL!%e66#"658p9@#j
+38%-Z6'PL!$T8EfpXBQpi0MKV!$T8EfpXBQpi8&"$!$T8EfpXBQpi4N&8!$T#BA0
+TBb"8EfpXBQpi)%4&3P9()$BiD`"#BA0TBb"8EfpXBQpi)%4&3P9()$BiD`!k3Q&
+cD@-J9'p[E'*[H#"%48*94b"38%-!3Q&cD@-J9'p[E'*[H#"%48*94b"38%-!6@&
+M6e-J9'p[E'*[H#!f1%X!1NeKBdp6)&4[EfaLEhJJ4%9#98FJ0MK,!%eKBdp6)&4
+[EfaLEhJJ4%9#98FJ0MK,!$T0B@028b"8EfpXBQpi)%4&3P9()&"33`"0B@028b"
+8EfpXBQpi)%4&3P9()&"33`!k6@&M6e-J9'p[E'*[H#!f1%X!1NeKBdp6)&4[Efa
+LEhJJ8&"$!%eKBdp6)&4[EfaLEhJJ8&"$!%eKBdp6)&4[EfaLEhJJ4N&8!$T0B@0
+28b"8EfpXBQpi)%C"9!"(B@eP3fpNC5"$EfjfCA*dCA)!4QaPH#"3FQ9`FQpMCA0
+cEh)!3QPcEfiJ8(*PF(*[Bf9cFfpb!%e66#"$,MBi5b!S-QNT,NaTBJ"08d`J3bX
+V,MBi5b!S-QNT,NaTBJ"0BA4S6'PL0MK,)#JbD5NZ6'PL!$Bi5b"%C@*eCb"0B@0
+28b"8EfpXBQpi!&"33b"%C@*eCb"0B@028b"8EfpXBQpi!$Bi5b"'D@jKE#"0B@0
+28b"8EfpXBQpi!&"33b"'D@jKE#"0B@028b"8EfpXBQpi!%C"9#"0B@028b"8Efp
+XBQpi!%&`F'aTBf&dD@pZ!%aTBR*KFQPPF`"0B@-J6'PLFQ&bD@9c!%&18dNJ6'P
+LFQ&bD@9c!$T6D@aXH8*KE'ac,Q-!1P0TE'aj3Q&XE(-ZFR0bB`!k3QPZ1Ne66#"
+$,P"33bj-D@)!1N*TEMT08d`J3bXV,P"33bj-D@)!1NeKBdp6)%0[E@e[EMT*ER4
+PFQCKBf9-D@)!1NeKBdp6)%0[E@e[EMT0BA4S6'PL!$T5G@jdD@eP1P*eER4TE@8
+J8&"$1Ne66#"5G@jdD@eP8&"$,NaTBJ!k3QPZ1Ne66#"658p9@#j38%-Z6'PL!%e
+KBdp6)&"33b"-D@jVCA)!3h9cG'pY)%YPHAG[FQ4c!%&MBf9cFb"3BA4SF`"8BA*
+RCA3J8f9dG'PZCh-!4QPXC5"0BA"`D@jRF`"#G@PXC#"&H(4bBA-!4'9LG@GRCA)
+J9'&bCf9d!%-[3bXV)%0[EA"TE'9b!%-[3bXV)&GKFQjTEQGc!%C88#"3B@jPE!"
+*8L"2F(4TE@PkCA)!8'&cBf&X)%0[EA"TE'9b!&"KFf0KE#"ABA*ZD@jRF`"38%-
+J3fpNC8GPEJ"38%-J4'PcBA0cC@eLE'9b!&"33b"-D@jVCA)!8&"$)&"&4J"38%-
+J8(*[DQ9MG!"38%0"FfdJ8'&ZC@`!8Q9k)%0[EA"TE'9b!&"33b"(E'pLB@`J6h"
+dD@eTHQ9b!%*TFfpZ)&"KEQ9X!%CXCAJJ8'&ZC@`!4f9d5&488&0B4N01,Q0`F!"
+2F'9Z8e0-!$T2F'9Z8e0-,NaTBLj38%-!1Qp`C@jcFf`Y-#ij,M-k6h"PEP066#"
+0B@-J6'PLFcT2F'9Z8e0-,NaTBLj38%-!BQP[Ah0cE#jM!(-b-epME'jd,Q-!Fc)
+cAfaTBLjM!(-b-epYCA4S,Q-!Fc)cAh"VG#jM!(-b-epcFRCb,Q-!Fc*IBfaZG#j
+M!(-bAf9ZBbjM!(-bAfaTBLjM!(-bAfePG'JZB`"c-Pp`Dh3ZB`"c-PpcFRCb,Q-
+!Fc0IBQpdD#jM!(-cAf0XER3ZB`"c-epPEQ-ZB`"c-epXD@)ZB`"c-epYCA4S,Q-
+!Fc0IF'Yd,Q-!Fc0IFh*fFLjM!(0cE&pKE'Gc,Q-!Fh0XAf&cEM%ZB`"cFfaIBf9
+bG#jM!(0cE&pMDA"S,Q-!Fh0XAf9bFLjM!(0cE&pPFR)b,Q-!Fh0XAfaTBLjM!(0
+cE&pbFf%ZB`"cFfaIFf9cFbjM!(0cE&pcG'&d,Q-!Fh0XAh4iG#jM!(3aAf0XER3
+ZB`"d-9pPEQ-ZB`"d-9pXD@)ZB`"d-9pYCA4S,Q-!G$&IFh*fFLjM!'&cEM&ICA*
+b,Q-!BA0Z-9pXD@)ZB`"KFfiaAh"KFLjM!'&cEPp`B@0V,Q-!B9pLDA4cG()ZB`"
+KAf*YF#jM!'&IBQp[E#jM!'&IBRPdCA-ZB`"KAf3bD9pQF#jM!'&IC'PRCA0d,Q-
+!B9pNGA!ZB`"KAf9ZG@dZB`"KAfGPER4Y,Q-!B9pSC()ZB`"KAfNbC&pQF#jM!'&
+ID@jd,Q-!B9pYCA4S,Q-!B9p[BQTPBh3ZB`"KAfpMG'9d,Q-!B9p`FQPZG#jM!'&
+IFf9d,Q-!B9pcD@GZ,Q-!B9pdD@eP,Q-!B9pdHA"P,Q-!B9peG'0dE5jM!'&IGA4
+Q1#jM!'&IGQ9bD@Cj,Q-!B9pfDA-ZB`"N-QPIC'K`,Q-!C$*TAf4cBA!ZB`"N-QP
+IF()ZB`"N-QPIF(8ZB`"N-QPIFPp`FLjM!'3bD9pbAh"e,Q-!C$*TAh0IF()ZB`"
+N-QPIFep`G5jM!'9fF&pKFfia,Q-!CPpPER9Y,Q-!CPpTER3ZB`"QAh0dFQPZCbj
+M!'NbC&pND(!ZB`"T-Q4IC(0KF#jM!'NbC&p`FLjM!'NbC&p`G5jM!'NbC&pbAh"
+b,Q-!D6*NAh*IF(8ZB`"T-Q4IFep`FLjM!'NbC&pcAh"e,Q-!ER0cCA%ZB`"ZAh"
+VCANZB`"`09p`BQ8ZB`"`09p`BQ9f-LjM!(!hAf4RFh3ZB`"`0epPEQ-ZB`"`0ep
+PEQ0IBbjM!(!hAf9fF#jM!(!hAfPIFbjM!(!hAfaTBLjM!(!hAh*PBfP`,Q-!F$G
+IFfPREQ3ZB`"`0epcD@GZD5jM!(!hAh0IC5jM!(!iAh"VCANZB`"dAf0bE#jM!(4
+IF'YPH5jM!(4IFQ9a,Q-!G&pi06!j,Q-!H&pKE'G[FLjM!(KIBA4dFQPL,Q-!H&p
+MD@jQ,Q-!H&pMFQ`ZB`"iAf9iG'9Z,Q-!H&pTEQC[,Q-!H&pZB@eP,Q-!H&p`Df9
+j,Q-!H&p`G@*VCANZB`"iAh*PF5jM!(KIFfPR,Q-!H&pcF'YT,Q-!H&pfB@`ZB`"
+iAhJe-$NZB`"LCPpMCQ)f0#jM!'*QAf9MBLjM!'*QAf9ZBbjM!'*QAfpQBMBd,Q-
+!BQCIFfYPH5jM!'*TEepPFR)ZB`"LD@pIE'PL,Q-!BR0cAh0[BfXZB`"LEPpKC'3
+ZB`"LEPpKFfdZB`"LEPpLE'PZC#jM!'*ZAf4TGLjM!'*ZAf9bFLjM!'*ZAf9iF#j
+M!'*ZAf9iF$)ZB`"LEPpRBf3ZB`"LEPpXD@)ZB`"LEPpYEfjd,Q-!BQjIEA"T,Q-
+!BQjIEA9X,Q-!BQjIF(*TE@8ZB`"LEPp`FQPZG#jM!'*ZAh*KEQ3ZB`"LEPpbC@0
+`,Q-!BQjIFfKTCR3ZB`"LEPpcFA)ZB`"LEPphEh*N,Q-!BR9QCQ9b,Q-!BR9QAf9
+bFLjM!'0IBfCL0M3ZB`"MAf9MBLjM!'0IC@jM,Q-!Bep[CQ)f0#jM!'0IFfYPH5j
+M!'0[EA"IE'PL,Q-!BepbE'8ZB`"MAhTXD@)ZB`"MEfjQ,Q-!BfpZCPpPFR)ZB`"
+MBQ0IBfYcE5jM!'0LBepPEQ-ZB`"MCQ)f0'9NC5jM!'0QBMBdC@jM,Q-!BfCLAf9
+ZBbjM!'4PFepPEQ-ZB`"PBf)cAf9ZBbjM!'9MBPpPEQ-ZB`"PC'9IBf*ME9pPEQ-
+ZB`"PEQ0IFQ9KC#jM!'CMFRP`G#jM!'CMFRP`G&pL,Q-!EfCL0M4PC'8ZB`"[CQ)
+f0'9ZBbjM!'pQBPpPEQ-ZB`"`Bf*MAf9ZBbjM!(&eC&pMDh0Y,Q-!FQ&ZC&pVCAN
+ZB`"bC@&N-R"hC#jM!(*PB@4IF(GN,Q-!FR"MAf9ZBbjM!(0PG&pVCANZB`"cG()
+bDf9j,Q-!Fh9`F#jM!(KMBQ0IC@jM,Q-!C'KIBfKPBfXZB`"ND&pPFR)ZB`"ND&p
+RC@iZB`"ND&pVCANZB`"ND&pXD@)ZB`"NFf&IBA0Z-5jM!'4cB9pPFR)ZB`"NFf&
+ICf9Z,Q-!C(0KAfYPH5jM!'4cB9pXD@)ZB`"NFf&IFfPRELjM!'4cB9pfFQBZB`"
+PFR)ZB`"PFR*IB@aX,Q-!CA*bAh"bELjM!'*TEepL0M3ZB`"LD@pIC@jM,Q-!BQP
+[AfeN,Q-!BQP[AfpV,Q-!BepKE'`ZB`"ND@GPFh3ZB`"PEQ0[C'8ZB`"PGR"IC@j
+M,Q-!CAC`Af9bFLjM!'9fF&pVCANZB`"PGR"IE'PL,Q-!CAC`Ah"LC5jM!'9fF&p
+`Df9j,Q-!C9pMBQ0I-f3ZB`"PAf0LBepLCLjM!'9IBf*MAf-ZB`"PAf0LBepN,Q-
+!C9pMBQ0ID5jM!'9IBf*MAh)b,Q-!C9pMBQ0IFM8ZB`"PAf0QBPmcC#jM!'9IBfC
+LAf*Q,Q-!C9pMCQ*IBbjM!'9IBfCLAf3ZB`"PAf0QBPpT,Q-!C9pMCQ*IFM)ZB`"
+PAf0QBPpb05jM!'9IC@0LAc0N,Q-!C9pPBf*IBQBZB`"PAf9MBPpM,Q-!C9pPBf*
+IC#jM!'9IC@0LAfNZB`"PAf9MBPpb-LjM!'9IC@0LAh)e,Q-!C9pZG@aX,Q-!C9p
+[CQ*I-f3ZB`"PAfpQBPpLCLjM!'9IEfCLAf-ZB`"PAfpQBPpN,Q-!C9p[CQ*ID5j
+M!'9IEfCLAh)b,Q-!C9p[CQ*IFM8ZB`"PAh*M0#jM!'9IH'0LBepN,Q-!E9pNFh-
+ZB`"YAf4cFc%ZB`"YAfeN-LjM!'eIE@3e,Q-!E9pYC'-b,Q-!E9pZG@aX,Q-!E9p
+bDA"PE@3ZB`"YAh0SB5jM!'eIFfKK-5jM!'jKE@9c,Q-!F&pNC@-ZB`"`Af9ZBbj
+M!("IE'PL,Q-!F&p[F'9Z,Q-!F&pcC@&X,Q-!F&pcD@GZ,Q-!F&pfCA*TCRNZB`"
+SE@&M,Q-!D9pMBQ-ZB`"TAf0QBMBd,Q-!D9pPBf)ZB`"TAfpQBMBd,Q-!D9pcDf9
+j,Q-!E'KKFfJZB`"XD&pcG'&dFbjM!'eN-PpNCh0d,Q-!E@3bAfpZC5jM!'eN09p
+NCh0d,Q-!E@3eAfpZC5jM!'eNBc*NCh0d,Q-!E@4M-Pp[EQ8ZB`"[BQTIC'&d,Q-
+!Ef*UAf9bFLjM!'pLDPpXD@)ZB`"[AfjKE@9c,Q-!F'9YAf&XE#jM!("PE9pPFR)
+ZB`"`C@eID@jQEbjM!("PE9pXD@)ZB`"`C@eIFf9KE#jM!("PE9pcD@GZ,Q-!F$%
+bAf&NC#jM!(!a-PpKG(4b,Q-!F$%bAf*KCh-ZB`"`-6*IBh*`G#jM!(!a-PpMFR3
+ZB`"`-6*IC'9MFLjM!(!a-PpTEQPd,Q-!F$%bAfYPH5jM!(!a-PpVDA0c,Q-!F$%
+bAfaTBLjM!(!a-PpYB@-ZB`"`-6*IEA9dE#jM!(!a-PpcBQ&R,Q-!F$%bAh9dE#j
+M!("V-6*PFR)ZB`"`DcGIC'pTG#jM!("V0epXD@)ZB`"`Df0c0f9bFLjM!'eNAh*
+KEQ3ZB`"bB@jNCQPXC5jM!(*KEQ4IE'PL,Q-!FQ-bBfCL0M3ZB`"bBc*[CQ)f0#j
+M!(*M-PpMBQ-ZB`"bBc*IC@0L,Q-!FQ-bAh0VCANZB`"bBc4IC@jM,Q-!FQ-dAh0
+VCANZB`"bBc9MCQ)f0#jM!(*M0@pQBMBd,Q-!FQ-eAf9MBLjM!(*M09pPEQ-ZB`"
+bBc9IFfYPH5jM!(*YC&pNCh0d,Q-!FQeNAfpZC5jM!(*cB9pPBANZB`"bFf&ICA*
+b,Q-!FR0KAfGPELjM!(*cB9pXD@)ZB`"bFf&IEQpZC5jM!(*cB9p[B@9`,Q-!FR0
+KAh"V-5jM!(*cB9pcB@pc,Q-!FR0KAh0TCfiZB`"bFf&IFh0X,Q-!FfKK-@4RFh3
+ZB`"cD'%aAfpZC5jM!(0SB9pNCh0d,Q-!FfKKAfpZC5jM!(0dB@0V,Q-!G(KdAf4
+L,Q-!BRPIC'Pb,Q-!BRPICQPXC5jM!(Je-$PZB@eP,Q-!H$8`1A*cCA3ZB`"i06!
+jG(P`C5jM!(Je-$PIBfe`,Q-!H$8`19pN-LjM!(Je-$PIC'9Q,Q-!H$8`19pPFR)
+ZB`"i06!jAf9iG#jM!(Je-$PIE(8ZB`"i06!jAfpLDLjM!(Je-$PIFM*i,Q-!H$8
+`19pbCA%ZB`"i06!jAh0PG#jM!(Je-$PIG(Kd,Q-!H$8`19pf-bjM!(Je-$PIGQC
+j,Q-!H&pKE'`ZB`"f-f9bFLjM!(BcAf&VCANZB`"f-epKE(3ZB`"f-epLBfpZFbj
+M!(BcAf*TG(0d,Q-!GM0IBfpZCLjM!(BcAf0`Efac,Q-!GM0IBh*XC#jM!(BcAf9
+ZG@dZB`"f-epPH(4VG5jM!(BcAfGPEQiZB`"f-epTB68ZB`"f-epTER3ZB`"f-ep
+XD@)ZB`"f-ep`Dh8ZB`"f-ep`FQiZB`"f-epcDf9j,Q-!GM0IFhKZCA3ZB`"f-ep
+eG'`ZB`"MF(4ICA*b,Q-!Bh*jF(4XD@)ZB`"MGQ9bFfP[ELjM!'9iAf4KG'%ZB`"
+YC@dZB`"2F'9Z8e0-,NaTBLj38%-!6h"PEP066#j`BfJ!3e"6G(*TEQG9G'PXFbj
+MF(!!4A*bEh*)B@jNE'PZCbjMF(!!6Q9h9fPdD%CbC@8ZBh!!6@&M8fpMDf9d,Q0
+`F!"-6h"PEP439%9ZC("[D@jd,Q0`F!"2F'9Z9("d5@jPG&"33bj[!%p`C@j8F(4
+*ER4PFQjPG%aTBJ"2F'9Z9(*KER0`Eh*d3A"`8&"$,Qm!6h"PEP4bB@jcF'pbG%a
+TBJ"$6AP&H'0PF(4TEfiZBh"`!%p`C@j68d`J@%C$6J!k5'pYC3"2F'9Z8e0-@%C
+$6Lj`BfJ!6h"PEP066#"-D@)!AdGPG'ePE9GTG'K'FQ9P,Q-!6h"PEP4`G&9dD@a
+c4AKdEP"33bj[!%p`C@j8FQ&ZFh"[FR4&H(4Z8&"$,Qm!98p`C@j8F(46GA"`Eh*
+d,Q0`F!"8D(*PB@4c6'PL!#pNCAB[ER9XE!"0B@028b!f1%XJ6'PZDf9b!$Bi5b"
+$Ef4P4f9Z!$Bi5b"%DA0KFh0PE@*XCA)!0MK,)%GXEf*KE#"2F(4TE@PkCA)!0MK
+,)%aTEQYPFJ!f1%XJ8(*[DQ9MG!"$4Ndf1%X!EQ9d,Q-!5(P`CA*B6'PL,RKMEfC
+Q!%KjF'9b3f&bC%0KE'aLB@0VFbjMF(!!BR0cAfCTE'8ZB`"LCPpLG@CQ,Q-!Bfp
+ZFfpXC5jcG(9LFbjM!&K$683J8h4eBLjMF(!!@%C$6L"6G(9L!$T2F'9Z8e0-)&4
+PFh3!4f9d5&488&-ZBh"`!&0[GA*MC5"8FQ9PF`"%C@*eCfGPFL"5G@jdD@eP!(K
+IH$8`1@%ZB`"NFf&IEh0cE#jM!(Je-$PcF'YT,Q-!H$8`19pdFR-ZB`"f-ep`GA*
+`,Q-!GM0ID@jQEbjM!'*IF(*TER3ZB`!k4f9d5&488&-!8&"$!$Bi5`!k4f9d5&4
+88&-Z0MK,!'&IE@*cG()ZB`"dAh0`DfNZB`"dAhJe-$PK,Q-!G&pLDA4cG#jM!'&
+IFh4bEQPN,Q-!BQP[Af0L,Q-!BR0cAfePE5jM!'*cFepMEfjZ,Q-!BR0cAfCN,Q-
+!BR0cAfjeE'`ZB`"LCPpZG@aX,Q-!BQCIEQ*TEbjM!'*cFepKBh"d,Q-!BR0cAf*
+TEbjM!'*cFepXEfFZB`"LAf4eEA!ZB`"LAh0[BfXZB`"PEQ0IGh*TG#jM!(!eAf0
+bF(3ZB`"`09pMFR"d-LjM!(!a-PpZF'&c,Q-!F'XhAf&dG()ZB`"`DcGIE@PYC5j
+M!("V0epcE@PYC5jM!(*cB9pMD'XZB`"bFf&IER9XE#jM!(4YC'PQCLjM!%GPG%K
+89&"6)&"33`"2F'9Z8e0-)&"33`!k6h"PEP066!"KF("c,Q-!BA"`Ah*KEQ3ZB`"
+KFfiaF'&bFbjM!'0K,Q-!BfP`D'9bFbjM!'0bE#jM!'0bE$*`0bjM!'4RFh3ZB`"
+ND#jM!'4cB5jM!'4cBA"KFQ&Y,Q-!C@jM,Q-!CA*bFh4b,Q-!Cf9ZC'JZB`"RC@j
+NFf%ZB`"RC@jbFf%ZB`"ZFf9a,Q-!Eh"PER0cE#jM!("VBh-a-LjM!("VBh-h,Q-
+!F'YMFcJZB`"bCA%ZB`"bFf%ZB`"cCA0cAfPN,Q-!FfeTE@8ZB`"cF'9PC#jM!(0
+`Df&M,Q-!FepMBLjM!(0IBfaTC@jd,Q-!FepcCA*fCA)ZB`"cAh0[BfYPG#jM!(C
+PFQPQH5jM!(CPFR0TEfiZB`"i06!j,Q-!FepdD@eP,Q-!4f9d5&488&-J0MK,!$T
+(CA4)9&438b!S0MK,+3"2F'9Z9("d5@jPG#j[!%p`C@j8FQ&ZFh"[FR3ZE`!k4f9
+d5&488&-J8&"$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!3)KX1!!!!!8!!!!!J!!!!!!!!!L!!!!!`)KSG!
+!!!!T!!!!"!)KS6!!!!!i!!!!"3!!+R3!!!"(!!!!"J!!!!!!!!"8!!!!"`)KSK!
+!!!"K!!!!#!!'jlJ!!!"[!!!!#3!!!!!!!!"c!!!!#J!!!!!!!!##!!!!#`)KSP!
+!!!#8!!!!$!!'imJ!!!#N!!!!$3!!!!!!!!#f!!!!$J!!!!!!!!$)!!!!$`)KSS!
+!!!$A!!!!%!!'lq!!!!$N!!!!%Arr"R!!!!$b!!!!%ZX!!!3!!!$j!!!!%`!!!ii
+!!!%+!!!!&!)KSG!!!!%C!!!!&3!!!!!!!!%T!!!!&J!!!!!!!!%f!!!!&`2Zb$`
+!!!&'!!!!'!)KSY!!!!&6!!!!'3!!!%J!!!&E!!!!'J!&!!!!!!&Z!!!!'`!!!!!
+!!!&m!!!!(!!!!!!!!!'-!!!!(3!'(8!!!!'@!!!!(J!!!!m!!!'[!!!!(`!"%4%
+!!!(#!!!!)#)L)L)!!!(D!!!!)3!!!B!!!!(d!!!!)J!H!3%!!!)'!!!!)`!!!!!
+!!!)4!!!!*!!!!#J!!!)K!!!!*3!"GfN!!!)`!!!!*ZX!!!B!!!)r!!!!*`!!!!!
+!!!*B!!!!+!!!TM!!!!*U!!!!+3!!!#!!!!*m!!!!+MJ`1$B!!!+)!!!!+`#fp#!
+!!!+8!!!!,2rrpdJ!!!+J!!!!,3!!!!)!!!+j!!!!,J!!!!8!!!,4!!!!,`5emP`
+!!!,U!!!!-!)ebX!!!!-#!!!!-3!!"2!!!!-8!!!!-J!!!!!!!!-Y!!!!-`!!!!!
+!!!0&!!!!0!!!!!!!!!0H!!!!03!!!!!!!!0f!!!!0J!!!!!!!!1*!!!!0`#fp%!
+!!!1F!!!!12rrpaJ!!!1Z!!!!13!!!#8!!!2!!!!!1J!!!#)!!!26!!!!1`!!!#N
+!!!2Q!!!!2!!!!#S!!!2i!!!!23!!!#d!!!3,!!!!2J!!!$!!!!3H!!!!2`!!!$-
+!!!3c!!!!3!!!!$B!!!4(!!!!33!!!!!!!!4I!!!!3J!!!!!!!!4h!!!!3`!!!!!
+!!!52!!!!4!!!!!!!!!5R!!!!43!!!!!!!!5j!!!!4J!!!!!!!!6&!!!!4`!!!!!
+!!!62!!!!5!!!!!!!!!6G!!!!53!!!!!!!!6X!!!!5J!!!!!!!!6k!!!!5`!!!!!
+!!!8,!!!!6!!!!!!!!!8H!!!!63!!!!!!!!8c!!!!6J!!!!!!!!91!!!!6`!!!!!
+!!!9N!!!!8!!!!!!!!!@-!!!!83!!!!!!!!@M!!!!8J!!!!!!!!@d!!!!8`!!!!!
+!!!A%!!!!9!!!!!!!!!A4!!!!93!!!!!!!!AK!!!!9J!!!!!!!!A[!!!!9`!!!!!
+!!!Am!!!!@!!!!!!!!!B-!!!!@3!!!!!!!!BE!!!!@J!!!!!!!!BU!!!!@`!!!!!
+!!!Bd!!!!A!!!!!!!!!C"!!!!A3!!!!!!!!C4!!!!AJ!!!!!!!!CK!!!!A`!!!!!
+!!!CY!!!!B!!!!!!!!!Cq!!!!B3!!!!!!!!D*!!!!BJ!!!!!!!!D4!!!!B`!!!!!
+!!!DG!!!!C!!!!!!!!!DU!!!!C3!!!!!!!!Dh!!!!CJ!!!!!!!!E-!!!!C`!!!!!
+!!!EB!!!!D!!!!!!!!!EM!!!!D3!!!!!!!!Ed!!!!DJ!!!!!!!!Em!!!!D`!!!!!
+!!!F0!!!!E!!!!!!!!!Fp!!!!E3!!!!!!!!G(!!!!EJ!!!!!!!!G5!!!!E`!!!!!
+!!!GF!!!!F!!!!!!!!!GR!!!!F3!!!!!!!!Ga!!!!FJ!!!!!!!!Gm!!!!F`!!!!!
+!!!H'!!!!G!!!!!!!!!H2!!!!G3!!!!!!!!HB!!!!GJ!!!!!!!!HL!!!!G`!!!!!
+!!!HV!!!!H!!!!!!!!!He!!!!H3!!!!!!!!Hr!!!!HJ!!!!!!!!I*!!!!H`!!!!!
+!!!I5!!!!I!!!!!!!!!IE!!!!I3!!!!!!!!IP!!!!IJ!!!!!!!!IZ!!!!I`!!!!!
+!!!Ii!!!!J!!!!!!!!!J$!!!!J3!!!!!!!!J1!!!!JJ!!!!!!!!JC!!!!J`!!!!!
+!!!JN!!!!K!!!!!!!!!JZ!!!!K3!!!!!!!!Jj!!!!KJ!!!!!!!!K$!!!!K`!!!!!
+!!!K0!!!!L!!!!!!!!!KB!!!!L3!!!!!!!!KM!!!!LJ!!!!!!!!KY!!!!L`!!!!!
+!!!Kh!!!!M!!!!!!!!!L!!!!!M3!!!!!!!!L*!!!!MJ!!!!!!!!L6!!!!M`!!!!!
+!!!LG!!!!N!!!!!!!!!!)U!!!!*%!!!!!!!!)X`!!!*)!!!!!!!!)[J!!!*-!!!!
+!!!!)b3!!!*3!!!!!!!!)e!!!!*8!!!!!!!!)h!!!!*B!!!!!!!!)j3!!!*F!!!!
+!!!!)l`!!!*J!!!!!!!!)qJ!!!*N!!!!!!!!*"3!!!*S!!!!!!!!*$3!!!*X!!!!
+!!!!*&J!!!*`!!!!!!!!*)!!!!*d!!!!!!!!*+!!!!*i!!!!!!!!*-`!!!*m!!!!
+!!!!*1`!!!+!!!!!!!!!*4!!!!+%!!!!!!!!*6`!!!+)!!!!!!!!*@3!!!+-!!!!
+!!!!*B`!!!+3!!!!!!!!*D`!!!+8!!!!!!!!*G!!!!+B!!!!!!!!*I3!!!+F!!!!
+!!!!*KJ!!!+J!!!!!!!!*N!!!!!#T!!!!!!!!#CN!!!#U!!!!!!!!#D3!!!#V!!!
+!!!!!#D`!!!#X!!!!!!!!#EB!!!#Y!!!!!!!!#F%!!!#Z!!!!!!!!#FS!!!#[!!!
+!!!!!#G-!!!#`!!!!!!!!#Gi!!!#a!!!!!!!!#HN!!!#b!!!!!!!!#I3!!!#c!!!
+!!!!!#Im!!!#d!!!!!!!!#JS!!!#e!!!!!!!!#K-!!!#f!!!!!!!!#KX!!!#h!!!
+!!!!!#LB!!!#i!!!!!!!!#M!!!!#j!!!!!!!!#MX!!!#k!!!!!!!!#N3!!!#l!!!
+!!!!!#Nd!!!#m!!!!!!!!#PJ!!!#p!!!!!!!!#Q-!!!#q!!!!!!!!#Qi!!!#r!!!
+!!!!!#RN!!!$!!!!!!!!!#S%!!!$"!!!!!!!!#SS!!!$#!!!!!!!!#T-!!!$$!!!
+!!!!!#Ti!!!$%!!!!!!!!#UJ!!!$&!!!!!!!!#V%!!!$'!!!!!!!!#V`!!!$(!!!
+!!!!!#X8!!!$)!!!!!!!!#Xi!!!$*!!!!!!!!#YF!!!$+!!!!!!!!#Z)!!!$,!!!
+!!!!!#Zd!!!$-!!!!!!!!#[J!!!$0!!!!!!!!#`%!!!$1!!!!!!!!#`X!!!$2!!!
+!!!!!#a-!!!$3!!!!!!!!#a`!!!$4!!!!!!!!#b3!!!$5!!!!!!!!#bd!!!$6!!!
+!!!!!#cF!!!$8!!!!!!!!#d)!!!$9!!!!!!!!#dX!!!$@!!!!!!!!#e-!!!$A!!!
+!!!!!#ed!!!$B!!!!!!!!#fB!!!$C!!!!!!!!#fm!!!$D!!!!!!!!#hJ!!!$E!!!
+!!!!!#i-!!!$F!!!!!!!!#iX!!!$G!!!!!!!!#j-!!!$H!!!!!!!!#j`!!!$I!!!
+!!!!!#k3!!!$J!!!!!!!!#kd!!!$K!!!!!!!!#lJ!!!$L!!!!!!!!#m%!!!$M!!!
+!!!!!#mS!!!$N!!!!!!!!#p8!!!$P!!!!!!!!#pm!!!$Q!!!!!!!!#qN!!!$R!!!
+!!!!!#r-!!!$S!!!!!!!!#ri!!!$T!!!!!!!!$!F!!!$U!!!!!!!!$"!!!!$V!!!
+!!!!!$"X!!!$X!!!!!!!!$#3!!!$Y!!!!!!!!$#d!!!$Z!!!!!!!!$$B!!!$[!!!
+!!!!!$%!!!!$`!!!!!!!!$%N!!!$a!!!!!!!!$&)!!!$b!!!!!!!!$&`!!!$c!!!
+!!!!!$'8!!!$d!!!!!!!!$'i!!!$e!!!!!!!!$(N!!!$f!!!!!!!!$)3!!!$h!!!
+!!!!!$)i!!!$i!!!!!!!!$*J!!!$j!!!!!!!!$+-!!!$k!!!!!!!!$+`!!!$l!!!
+!!!!!$,B!!!$m!!!!!!!!$,m!!!$p!!!!!!!!$-N!!!$q!!!!!!!!$0-!!!$r!!!
+!!!!!$0X!!!%!!!!!!!!!$1-!!!%"!!!!!!!!$1d!!!%#!!!!!!!!$2B!!!%$!!!
+!!!!!$3%!!!%%!!!!!!!!$3N!!!%&!!!!!!!!$4)!!!%'!!!!!!!!$4N!!!%(!!!
+!!!!!$53!!!%)!!!!!!!!$5m!!!%*!!!!!!!!$6N!!!%+!!!!!!!!$83!!!%,!!!
+!!!!!$8m!!!%-!!!!!!!!$9N!!!%0!!!!!!!!$@-!!!%1!!!!!!!!$@i!!!%2!!!
+!!!!!$AJ!!!%3!!!!!!!!$BF!!!%4!!!!!!!!$C)!!!%5!!!!!!!!$CX!!!%6!!!
+!!!!!$DB!!!%8!!!!!!!!$E%!!!%9!!!!!!!!$E`!!!%@!!!!!!!!$FB!!!%A!!!
+!!!!!$G%!!!%B!!!!!!!!$G`!!!%C!!!!!!!!$HF!!!%D!!!!!!!!$I)!!!%E!!!
+!!!!!$Id!!!%F!!!!!!!!$JF!!!%G!!!!!!!!$K%!!!%H!!!!!!!!$KX!!!%I!!!
+!!!!!$L)!!!%J!!!!!!!!$Ld!!!%K!!!!!!!!$MJ!!!%L!!!!!!!!$N%!!!%M!!!
+!!!!!$NS!!!%N!!!!!!!!$P-!!!%P!!!!!!!!$P`!!!%Q!!!!!!!!$QF!!!%R!!!
+!!!!!$R%!!!%S!!!!!!!!$RX!!!%T!!!!!!!!$S8!!!%U!!!!!!!!$Sm!!!%V!!!
+!!!!!$TS!!!%X!!!!!!!!$U3!!!%Y!!!!!!!!$US!!!%Z!!!!!!!!$V3!!!%[!!!
+!!!!!$Vi!!!%`!!!!!!!!$XJ!!!%a!!!!!!!!$Y)!!!%b!!!!!!!!$YX!!!%c!!!
+!!!!!$Z3!!!%d!!!!!!!!$Z`!!!%e!!!!!!!!$[8!!!%f!!!!!!!!$[i!!!%h!!!
+!!!!!$`J!!!%i!!!!!!!!$a)!!!%j!!!!!!!!$a`!!!%k!!!!!!!!$bB!!!%l!!!
+!!!!!$c!!!!%m!!!!!!!!$cX!!!%p!!!!!!!!$dB!!!%q!!!!!!!!$e%!!!%r!!!
+!!!!!$eX!!!&!!!!!!!!!$f8!!!&"!!!!!!!!$fm!!!&#!!!!!!!!$hS!!!&$!!!
+!!!!!$i8!!!&%!!!!!!!!$j!!!!!"43!!!!!!!!qE!!!"4J!!!!!!!!qP!!!"4`!
+!!!!!!!q[!!!"5!!!!!!!!!qj!!!"53!!!!!!!!r%!!!"5J!!!!!!!!r2!!!"5`!
+!!!!!!!rD!!!"6!!!!!!!!!rP!!!"63!!!!!!!!r[!!!"6J!!!!!!!!rj!!!"6`!
+!!!!!!"!$!!!"8!!!!!!!!"!1!!!"83!!!!!!!"!C!!!"8J!!!!!!!"!L!!!"8`!
+!!!!!!"!Y!!!"9!!!!!!!!"!i!!!"93!!!!!!!""#!!!"9J!!!!!!!""-!!!"9`!
+!!!!!!""@!!!"@!!!!!!!!""K!!!"@3!!!!!!!""X!!!"@J!!!!!!!""d!!!"@`!
+!!!!!!""r!!!"A!!!!!!!!"#(!!!"A3!!!!!!!"#3!!!!!9i!!!!!!!!3Q!!!!9m
+!!!!!!!!3S!!!!@!!!!!!!!!3U3!!!@%!!!!!!!!3XJ!!!@)!!!!!!!!3[3!!!@-
+!!!!!!!!3a3!!!@3!!!!!!!!3cJ!!!@8!!!!!!!!3eJ!!!@B!!!!!!!!3hJ!!!@F
+!!!!!!!!3jJ!!!@J!!!!!!!!3lJ!!!@N!!!!!!!!3p`!!!@S!!!!!!!!4!!!!!@X
+!!!!!!!!4#3!!!@`!!!!!!!!4&!!!!@d!!!!!!!!4'`!!!@i!!!!!!!!4)`!!!@m
+!!!!!!!!4,3!!!A!!!!!!!!!403!!!A%!!!!!!!!42`!!!A)!!!!!!!!45!!!!A-
+!!!!!!!!48!!!!A3!!!!!!!!4@`!!!A8!!!!!!!!4CJ!!!AB!!!!!!!!4F!!!!AF
+!!!!!!!!4H`!!!AJ!!!!!!!!4K3!!!AN!!!!!!!!4N!!!!!&k!!!!!!!!%CX!!!&
+l!!!!!!!!%D8!!!&m!!!!!!!!%Dm!!!&p!!!!!!!!%EN!!!&q!!!!!!!!%F-!!!&
+r!!!!!!!!%Fd!!!'!!!!!!!!!%GF!!!'"!!!!!!!!%H)!!!'#!!!!!!!!%H`!!!'
+$!!!!!!!!%IF!!!'%!!!!!!!!%J)!!!'&!!!!!!!!%J`!!!''!!!!!!!!%KF!!!'
+(!!!!!!!!%L)!!!')!!!!!!!!%Ld!!!'*!!!!!!!!%MF!!!'+!!!!!!!!%N)!!!'
+,!!!!!!!!%Nd!!!'-!!!!!!!!%PF!!!'0!!!!!!!!%Q)!!!'1!!!!!!!!%Q`!!!'
+2!!!!!!!!%RB!!!'3!!!!!!!!!"+"!!!"N3!!!!!!!"+-!!!"NJ!!!!!!!"+@!!!
+"N`!!!!!!!"+J!!!"P!!!!!!!!"+V!!!"P3!!!!!!!"+e!!!"PJ!!!!!!!",!!!!
+"P`!!!!!!!",+!!!"Q!!!!!!!!",9!!!"Q3!!!!!!!",J!!!"QJ!!!!!!!",V!!!
+"Q`!!!!!!!",f!!!"R!!!!!!!!"-!!!!"R3!!!!!!!"-+!!!"RJ!!!!!!!"-9!!!
+"R`!!!!!!!"-I!!!"S!!!!!!!!"-U!!!"S3!!!!!!!"-e!!!"SJ!!!!!!!"0!!!!
+"S`!!!!!!!"0+!!!"T!!!!!!!!"08!!!"T3!!!!!!!"0I!!!"TJ!!!!!!!"0U!!!
+"T`!!!!!!!"0d!!!"U!!!!!!!!"0q!!!"U3!!!!!!!"1)!!!"UJ!!!!!!!"15!!!
+"U`!!!!!!!"1F!!!"V!!!!!!!!"1R!!!"V3!!!!!!!"1b!!!"VJ!!!!!!!"1m!!!
+"V`!!!!!!!"2(!!!"X!!!!!!!!"25!!!"X3!!!!!!!"2F!!!"XJ!!!!!!!"2R!!!
+"X`!!!!!!!"2b!!!"Y!!!!!!!!"2p!!!"Y3!!!!!!!"3(!!!"YJ!!!!!!!"32!!!
+"Y`!!!!!!!"3B!!!"Z!!!!!!!!"3K!!!"Z3!!!!!!!"3V!!!"ZJ!!!!!!!"3f!!!
+"Z`!!!!!!!"4"!!!"[!!!!!!!!"4-!!!"[3!!!!!!!"4A!!!"[J!!!!!!!"4K!!!
+"[`!!!!!!!"4X!!!"`!!!!!!!!"4h!!!"`3!!!!!!!"5#!!!"`J!!!!!!!"5-!!!
+"``!!!!!!!"5A!!!"a!!!!!!!!"5L!!!"a3!!!!!!!"5Y!!!"aJ!!!!!!!"5i!!!
+"a`!!!!!!!"6$!!!"b!!!!!!!!"60!!!"b3!!!!!!!"6B!!!"bJ!!!!!!!"6J!!!
+"b`!!!!!!!"6S!!!"c!!!!!!!!"6b!!!"c3!!!!!!!"6l!!!"cJ!!!!!!!"8'!!!
+"c`!!!!!!!"84!!!"d!!!!!!!!"8E!!!"d3!!!!!!!"8Q!!!"dJ!!!!!!!"8`!!!
+"d`!!!!!!!"8k!!!"e!!!!!!!!"9&!!!"e3!!!!!!!"92!!!"eJ!!!!!!!"9B!!!
+"e`!!!!!!!"9K!!!"f!!!!!!!!"9U!!!"f3!!!!!!!"9c!!!"fJ!!!!!!!"9m!!!
+"f`!!!!!!!"@'!!!"h!!!!!!!!"@4!!!"h3!!!!!!!"@D!!!"hJ!!!!!!!"@N!!!
+"h`!!!!!!!"@[!!!"i!!!!!!!!"@k!!!"i3!!!!!!!"A%!!!"iJ!!!!!!!"A+!!!
+"i`!!!!!!!"AD!!!"j!!!!!!!!"AQ!!!"j3!!!!!!!"Ai!!!"jJ!!!!!!!"B+!!!
+"j`!!!!!!!"BC!!!"k!!!!!!!!"BR!!!"k3!!!!!!!"Bm!!!"kJ!!!!!!!"C0!!!
+"k`!!!!!!!"CJ!!!"l!!!!!!!!"Cf!!!"l3!!!!!!!"D(!!!"lJ!!!!!!!"DB!!!
+"l`!!!!!!!"DP!!!"m!!!!!!!!"DV!!!"m3!!!!!!!"Dl!!!"mJ!!!!!!!"E(!!!
+"m`!!!!!!!"EC!!!"p!!!!!!!!"E[!!!"p3!!!!!!!"F'!!!"pJ!!!!!!!"FD!!!
+"p`!!!!!!!"FP!!!"q!!!!!!!!"F[!!!"q3!!!!!!!"G!!!!"qJ!!!!!!!"G-!!!
+"q`!!!!!!!"GG!!!"r!!!!!!!!"Gb!!!"r3!!!!!!!"Gp!!!"rJ!!!!!!!"H*!!!
+"r`!!!!!!!"H3!!!!!J!!!!!!!!!APJ!!!J%!!!!!!!!ATJ!!!J)!!!!!!!!A[3!
+!!J-!!!!!!!!Ab!!!!J3!!!!!!!!AdJ!!!J8!!!!!!!!AiJ!!!JB!!!!!!!!Am!!
+!!JF!!!!!!!!AqJ!!!JJ!!!!!!!!B#!!!!JN!!!!!!!!B&3!!!JS!!!!!!!!B)J!
+!!JX!!!!!!!!B-`!!!J`!!!!!!!!B23!!!Jd!!!!!!!!B5!!!!Ji!!!!!!!!B8`!
+!!Jm!!!!!!!!BAJ!!!K!!!!!!!!!BD!!!!K%!!!!!!!!BFJ!!!K)!!!!!!!!BI!!
+!!K-!!!!!!!!BKJ!!!K3!!!!!!!!BLJ!!!K8!!!!!!!!BMJ!!!KB!!!!!!!!BR!!
+!!KF!!!!!!!!BTJ!!!KJ!!!!!!!!BV`!!!KN!!!!!!!!BZ3!!!KS!!!!!!!!B``!
+!!KX!!!!!!!!BcJ!!!K`!!!!!!!!Be`!!!Kd!!!!!!!!Bi3!!!Ki!!!!!!!!Bl!!
+!!Km!!!!!!!!Bp3!!!L!!!!!!!!!C!!!!!L%!!!!!!!!C#J!!!L)!!!!!!!!C&!!
+!!L-!!!!!!!!C(`!!!L3!!!!!!!!C+3!!!L8!!!!!!!!C-`!!!LB!!!!!!!!C2!!
+!!LF!!!!!!!!C43!!!LJ!!!!!!!!C8!!!!LN!!!!!!!!C@J!!!LS!!!!!!!!CC3!
+!!LX!!!!!!!!CF!!!!L`!!!!!!!!CH`!!!Ld!!!!!!!!CKJ!!!Li!!!!!!!!CNJ!
+!!Lm!!!!!!!!CR!!!!M!!!!!!!!!CT`!!!M%!!!!!!!!CX!!!!M)!!!!!!!!C[3!
+!!M-!!!!!!!!Cb3!!!M3!!!!!!!!CdJ!!!M8!!!!!!!!Cf3!!!MB!!!!!!!!Cj!!
+!!MF!!!!!!!!Cl`!!!MJ!!!!!!!!Cp!!!!MN!!!!!!!!CrJ!!!MS!!!!!!!!D"!!
+!!MX!!!!!!!!D$3!!!M`!!!!!!!!D&!!!!Md!!!!!!!!D'3!!!Mi!!!!!!!!D(`!
+!!Mm!!!!!!!!D+J!!!N!!!!!!!!!D-!!!!N%!!!!!!!!D13!!!N)!!!!!!!!D33!
+!!N-!!!!!!!!D5J!!!N3!!!!!!!!D8`!!!N8!!!!!!!!D@J!!!NB!!!!!!!!DC!!
+!!NF!!!!!!!!DE3!!!NJ!!!!!!!!DG3!!!NN!!!!!!!!DI3!!!NS!!!!!!!!DJ`!
+!!NX!!!!!!!!DL3!!!N`!!!!!!!!DN`!!!Nd!!!!!!!!DQ`!!!Ni!!!!!!!!DS`!
+!!Nm!!!!!!!!DU`!!!P!!!!!!!!!DXJ!!!P%!!!!!!!!D[3!!!P)!!!!!!!!Db!!
+!!P-!!!!!!!!Dd`!!!P3!!!!!!!!Dh!!!!P8!!!!!!!!DjJ!!!PB!!!!!!!!Dl3!
+!!PF!!!!!!!!DpJ!!!PJ!!!!!!!!E!`!!!PN!!!!!!!!E%`!!!PS!!!!!!!!E)3!
+!!PX!!!!!!!!E-3!!!P`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!3!!!!!!!!!!!!!!!!!!!!!!3!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!AepcG'&bG!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!"!!8!!!K(CA4)9&438e4PFh3!!!!!!!!!!!!!!!!!!!!!!!!
+!2cmr2d&38%`!!!3!!!!%!!!!!%!!!&M!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%r2cmr!!!!!!!!!Zi,!!,[#`!#m!X
+!![%,!!,b#`!#m`X!![3,!!,e#`!#pJX!![F,!!,i#`!#q3X!![S,!!,l#`!#r!X
+!![d,!!,q#`!#r`X!!`!,!!-"#`!$!JX!!`-,!!-%#`!$"3X!!`B,!!-(#`!$#!X
+!!`N,!!-+#`!$$!X!!`d,!!-A#`!$'!X!!aN,!!-D#`!$'`X!!a`,!!-G#`!$(JX
+!!am,!!-J#`!$)3X!!b),!!-M#`!$*!X!!b8,!!-R#`!$+!X!!bN,!!-U#`!$+`X
+!!bd,!!-[#`!$-3X!!c),!!-c#`!$0!X!!c8,!!-f#`!$0`X!!cJ,!!-j#`!$1JX
+!!cF,!!-i#`!$13X!!cS!#J!!6@&M6e-J8&"$)%aTEQYPFJ!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!6h"PEP066#"38%-!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!!%k!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#!&!!!3!"!!%!!3!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!8*d024%8R)#G%394"*b!R8%P$9#F!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!#%j[EQ8!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!0069"b!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%!!!!"849K
+8,Q`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"'E'9i)&"bCA"bEf0PFh0
+[FJ!!!!!!!!!!!!!!!!!!!)!!!!"849K8,RN!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!"#DA0[EL"3FQ9`FQpMCA0cEh)!!!!!!!!!!!!!!!!!!)!!!!"+BAC
+K)%aTEQYPFJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!@39"36!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!"J!!!!3A"`E!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"J!!!!3dq-D`!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!69FJ5Q&fB3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!3facF`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69FJ5Q&
+fB3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!5QTbCLjUFQB!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!3!!!!69G$4!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"J!!!!8P053`!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!"J!!!!9%9B9#jLD!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!3Q&XE'p
+[EL")C@a`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!9%9B9#jRB`!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!4f&YC80[C'8J3fpZGQ9bG'9b!!!!!!!!!!!!!!!
+!!!"!!!!!9%9B9#jSG'eX!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!9%9B9#jUBACK!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!69FJ5Q&fB3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!9%9B9#jX!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!4QaPH#"
+3FQ9`FQpMCA0cEh)!!!!!!!!!!!!!!!!!!!#!!!!!9%9B9#jYCJ!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!9%9B9#jb!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!8Q9k!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!9%9B9#jj!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!3QPcEfiJ8(*PF(*[Bf9cFfpb!!!!!!!!!!!!!!!
+!!!#!!!!!@NP3)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69FJ5Q&
+fB3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!!!!!@QP`4J!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!69FJ5Q&fB3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!C'pMG3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"J!!!!FR0bB`!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!"J!!!!!!!!!#jME'&cF`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69FJ5Q&
+fB3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#jUBA)!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!"!!!!!!!!!!#jkDA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69FJ5Q&
+fB3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!6@&M6e-J0MK,)%aTEQYPFJ!
+!!!!!!!!!!!!!!!!!!!!!)%&38%`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!B!!!!%&`F'`!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!B!!!!%e06%)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!%aTBL"*EA"[FR3J0MK,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%e36%B!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%aTBL"*EA"[FR3J0MK,!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!%eA3d3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!B!!!!%p#5L!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%e39b"*EA"[FR3J0MK,!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!&"-Ef)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!B!!!!&*68N-!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!B!!!!&4&@&3ZBQJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!%*KE'a[EfiJ5'9XF!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&4&@&3ZB`!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%eA)%-[3bXV)$Bi5`!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!&4&@&3ZBbXV!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!%eA)%-[3bXV)$Bi5`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&4&@&3ZBf-
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%eA)%-[3bXV)$Bi5`!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!&4&@&3ZBh!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!%eA)%-[3bXV)$Bi5`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&4&@&3ZBh"
+`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%eA)%-[3bXV)$Bi5`!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!&4&@&3ZCAK`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&4&@&3ZCf-
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%GKE@9$Ef4P)%0[ERCPFR4PFJ!
+!!!!!!!!!!!!!!!!!3!!!!&4&@&3ZD!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!%eA)%-[3bXV)$Bi5`!!!!!!!!!!!!!!!!!!!!!!!!!!%!!!!&4&@&3ZE!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%CXCAJJ8(*PF(*[Bf9cFfpb!!!
+!!!!!!!!!!!!!!!!!J!!!!&4&@&3ZF!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!%eA)&"KFf0KE#!f1%X!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&4&@&3ZF'&
+c!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%eA)&"KFf0KE#!f1%X!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!&4&@&3ZF'0S!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!%eA)%-[3bXV)$Bi5`!!!!!!!!!!!!!!!!!!!!!!!!!!J!!!!&4&@&3ZF'0
+S+bX!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%eA)%-[3bXV)$Bi5`!!!!!!!!!
+!!!!!!!!!!!!!!!!!J!!!!&4&@&3ZF("e!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!%eA)&"KFf0KE#!f1%X!!!!!!!!!!!!!!!!!!!!!!!!!J!!!!&4&@&3ZFJ!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&*PHJ!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!&4&@&3ZFf9R!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&4&@&3ZH3!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%*TFfpZ)&"bCA"bEf0PFh0[FJ!
+!!!!!!!!!!!!!!!!!J!!!!'4[Bh8!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!B!!!!(*cFQ-!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!B!!!!(0SE')!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!&"&4L"*EA"[FR3J0MK,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(0dG@)!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&"&4L"*EA"[FR3J0MK,!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!ZC'pM!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!8!!!!!!!!!!ZFR0
+bB`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!B!!!!%eKBdp6)%ePFQGP!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!T"8&"-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'!!!!""F("X!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'!
+!!!"58e*$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'!!!!"849K8,Q*S!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!"#B@aXEfpZ)%KPE(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!"849K8,QGM!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"(B@eP3fpNC5"
+$EfjfCA*dCA)!!!!!!!!!!!!!!!!!!%!!!!"849K8,Q`!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!"'E'9i)&"bCA"bEf0PFh0[FJ!!!!!!!!!!!!!!!!!!!)!
+!!!"849K8,R)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"5CAS!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"849K8,RN!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!"#DA0[EL"3FQ9`FQpMCA0cEh)!!!!!!!!!!!!!!!!!!)!
+!!!"bFh*M!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'!!!!"cD'aL!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!"0B@028b"38%-J6'PZDf9b!!!!!!!!!!!!!!!!!!!!!!!H39"36!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!"J!!!!3A"`E!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"J!!!!68e-3J!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!6'PL)%PYF'pbG#"38%-!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!69"-4J!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!6'PL)%PYF'pbG#"38%-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69G$4!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!"J!!!!8P053`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"J!!!!9%9B9#jLD!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!3Q&XE'p[EL")C@a`!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!9%9B9#jM!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!69FJ3bp$+bXJ8&"$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!9%9B9#jM+bX!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69FJ3bp$+bXJ8&"$!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!9%9B9#jMB`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!69FJ3bp$+bXJ8&"$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!9%9B9#jMF!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69FJ3bp$+bXJ8&"$!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!9%9B9#jMF(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!69FJ3bp$+bXJ8&"$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!9%9B9#jPH(!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!9%9B9#jRB`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!4f&YC80[C'8J3fpZGQ9bG'9b!!!!!!!!!!!!!!!!!!"!!!!!9%9B9#jS!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69FJ3bp$+bXJ8&"$!!!!!!!!!!!!!!!
+!!!!!!!!!!!!3!!!!9%9B9#jX!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!4QaPH#"3FQ9`FQpMCA0cEh)!!!!!!!!!!!!!!!!!!!#!!!!!9%9B9#j`!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69FJ8'&cBf&X)&"33`!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!9%9B9#j`BA-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!69FJ8'&cBf&X)&"33`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!9%9B9#j`BfJ!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69FJ3bp$+bXJ8&"$!!!!!!!!!!!!!!!
+!!!!!!!!!!!#!!!!!9%9B9#j`BfJV+`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!69FJ3bp$+bXJ8&"$!!!!!!!!!!!!!!!!!!!!!!!!!!#!!!!!9%9B9#j`F(8!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69FJ8'&cBf&X)&"33`!!!!!!!!!!!!!
+!!!!!!!!!!!#!!!!!9%9B9#jb!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!8Q9k!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!9%9B9#jc!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!8&"$3A0Y!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!9%9B9#jj!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!3QPcEfiJ8(*PF(*[Bf9cFfpb!!!!!!!!!!!!!!!!!!#!!!!!@%024J!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!@%024NBJ5@e`Eh*d)&"33`!!!!!!!!!
+!!!!!!!!!!!!!!!!!C'pMG3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"J!!!!FR0bB`!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!"J!!!!FfKXBJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!8%9')%PYF'pbG#"38%-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Fh4eBJ!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!8%9')%PYF'pbG#"38%-!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!#jNEf-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"3!!!!68-J6'PZDf9b!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%N0-99-!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!3!!!!%e
+06%)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%aTBL"*EA"[FR3J0MK
+,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%e36%B!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!%aTBL"*EA"[FR3J0MK,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%p
+#5L!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%e39b"*EA"[FR3J0MK
+,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&4&@&3ZB`!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!%eA)%-[3bXV)$Bi5`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&4
+&@&3ZBbXV!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%eA)%-[3bXV)$Bi5`!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&4&@&3ZBf-!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!%eA)%-[3bXV)$Bi5`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&4
+&@&3ZBfac!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%e$)%0XBA0c)%0[EA"
+TE'9b!!!!!!!!!!!!!!!!!!!!J!!!!&4&@&3ZBh!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!%eA)%-[3bXV)$Bi5`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&4
+&@&3ZBh"`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%eA)%-[3bXV)$Bi5`!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&4&@&3ZC'9Q!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&4
+&@&3ZC'pM!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!%!!!!&4&@&3ZD!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&4
+&@&3ZF!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%eA)&"KFf0KE#!f1%X
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&4&@&3ZF'&c!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!%eA)&"KFf0KE#!f1%X!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&4
+&@&3ZF'0S!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%eA)%-[3bXV)$Bi5`!
+!!!!!!!!!!!!!!!!!!!!!!!!!J!!!!&4&@&3ZF'0S+bX!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!%eA)%-[3bXV)$Bi5`!!!!!!!!!!!!!!!!!!!!!!!!!!J!!!!&4
+&@&3ZG(-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&GTEM-b)(Ji0L"-D@jVCA)!!!!!!!!!!!!
+!!!!!!!!!!"4849K8,Q-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"09b"
+$,d-V+b"i1$B!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"849K8,Q-V+`!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!"09b"$,d-V+b"i1$B!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!"849K8,Q0M!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"09b"
+$,d-V+b"i1$B!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"849K8,Q0`!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!"09b"$,d-V+b"i1$B!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!"849K8,Q0`F!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"09b"
+$,d-V+b"i1$B!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"849K8,Q4PCJ!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!"849K8,QGM!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"(B@e
+P3fpNC5"$EfjfCA*dCA)!!!!!!!!!!!!!!!!!!%!!!!"849K8,QJ!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!"09b"$,d-V+b"i1$B!!!!!!!!!!!!!!!!!!!!
+!!!!!!"!!!!"849K8,Q`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"'E'9
+i)&"bCA"bEf0PFh0[FJ!!!!!!!!!!!!!!!!!!!)!!!!"849K8,R!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!"09b"3BA0MB@`JH$Jf!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!"849K8,R"KF`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"09b"
+3BA0MB@`JH$Jf!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"849K8,R"MD!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!"09b"$,d-V+b"i1$B!!!!!!!!!!!!!!!!!!!!
+!!!!!!)!!!!"849K8,R"MD#XV!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"09b"
+$,d-V+b"i1$B!!!!!!!!!!!!!!!!!!!!!!!!!!)!!!!"849K8,R"`G3!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!"09b"3BA0MB@`JH$Jf!!!!!!!!!!!!!!!!!!!
+!!!!!!)!!!!"849K8,R*M!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"09b"
+AD@j53`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"849K8,R*PF`!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!"AD@j5CA-J5@e`Eh*d!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!"849K8,RN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"#DA0
+[EL"3FQ9`FQpMCA0cEh)!!!!!!!!!!!!!!!!!!)!!!!!!!!!!,Q4[B`!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!&!!!!!!!!!!,QaTBJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"-D@)
+J5@e`Eh*d)(Ji0J!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,QpLDJ!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!"2BQSJ5@e`Eh*d)(Ji0J!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!"09b"+BACK4'pM)%aTEQYPFJ!!!!!!!!!!!!!!!!!!!!!-3dq-D`!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69FJ5Q&fB84[B`!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!3facF`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!69FJ5Q&fB84[B`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!8P053`!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!8Q9k!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!"J!!!!9%9B9#jLD!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!3Q&XE'p[EL")C@a`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!9%9B9#j
+SG'eX!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!3!!!!9%9B9#jUBACK!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!69FJ5Q&fB84[B`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!9%9B9#j
+b!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!8Q9k!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!@NP3)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!69FJ5Q&fB84[B`!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!!!!!@QP`4J!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69FJ5Q&fB84[B`!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!FR0bB`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!8Q9k!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"J!!!!!!!!!#j
+ME'&cF`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69FJ5Q&fB84[B`!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#jkDA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!69FJ5Q&fB84[B`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!8!!!!
+!!3!!!!!&!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!3!!!!!!!!!!!!!!!!!!!!!!3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!AepcG'&bG!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+"!!)!8!!"!!%!!3!"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"3R3dp%45FJ*d4"9%%R)#G3580
+8*`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"849K
+8,QGM!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"(B@eP3fpNC5"$EfjfCA*
+dCA)!!!!!!!!!!!!!!!!!!%!!!!"849K8,QJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!"09b"$,d-V+b"i1$B!!!!!!!!!!!!!!!!!!!!!!!!!!"!!!!"849K
+8,Q`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"'E'9i)&"bCA"bEf0PFh0
+[FJ!!!!!!!!!!!!!!!!!!!)!!!!"849K8,R!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!"09b"3BA0MB@`JH$Jf!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"849K
+8,R"KF`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"09b"3BA0MB@`JH$Jf!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!"849K8,R"MD!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!"09b"$,d-V+b"i1$B!!!!!!!!!!!!!!!!!!!!!!!!!!)!!!!"849K
+8,R"MD#XV!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"09b"$,d-V+b"i1$B!!!!
+!!!!!!!!!!!!!!!!!!!!!!)!!!!"849K8,R"`G3!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!"09b"3BA0MB@`JH$Jf!!!!!!!!!!!!!!!!!!!!!!!!!)!!!!"849K
+8,R*M!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"09b"AD@j53`!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!"849K8,R*PF`!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!"AD@j5CA-J5@e`Eh*d!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"849K
+8,RN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"#DA0[EL"3FQ9`FQpMCA0
+cEh)!!!!!!!!!!!!!!!!!!)!!!!!!!!!!,Q4[B`!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&!!!!!!!!!
+!,QaTBJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"-D@)J5@e`Eh*d)(Ji0J!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,QpLDJ!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!"2BQSJ5@e`Eh*d)(Ji0J!!!!!!!!!!!!!!!!!!!!!!!!!!!!"09b"
++BACK4'pM)%aTEQYPFJ!!!!!!!!!!!!!!!!!!!!!-3dq-D`!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!69FJ5Q&fB84[B`!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!3facF`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69FJ5Q&
+fB84[B`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!8P053`!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!8Q9k!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!"J!!!!9%9B9#jLD!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!3Q&XE'p
+[EL")C@a`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!9%9B9#jSG'eX!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!3!!!!9%9B9#jUBACK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69FJ5Q&
+fB84[B`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!9%9B9#jb!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!8Q9k!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!@NP3)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69FJ5Q&
+fB84[B`!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!!!!!@QP`4J!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!69FJ5Q&fB84[B`!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!FR0bB`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!8Q9k!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"J!!!!!!!!!#jME'&cF`!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!69FJ5Q&fB84[B`!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!#jkDA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69FJ5Q&
+fB84[B`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!3!!!!)!!!!$!!!!!!!
+!!Ai!!!!*!!!!#J!!!!X!!!!-!!!!$3!!!!i!!!!2!!!!%!!!!"%!!!!5!!!!%`!
+!!"3!!!!9!!!!&J!!!"F!!!!B!!!!'3!!!"S!!!!E!!!!(!!!!"d!!!!H!!!!(`!
+!!#!!!!!K!!!!)J!!!#-!!!!N!!!!*3!!!#B!!!!R!!!!+!!!!#N!!!!U!!!!+`!
+!!#`!!!!Y!!!!,J!!!#m!!!!`!!!!-3!!!$)!!!!c!!!!0!!!!$8!!!!f!!!!0`!
+!!$J!!!!j!!!!1J!!!$X!!!!m!!!!23!!!$i!!!!r!!!!3!!!!%%!!!"#!!!!3`!
+!!%3!!!"&!!!!4J!!!%F!!!")!!!!53!!!%S!!!",!!!!6!!!!%d!!!"1!!!!6`!
+!!&!!!!"4!!!!8J!!!&-!!!"8!!!!93!!!&B!!!"A!!!!@!!!!&N!!!"D!!!!@`!
+!!&`!!!"G!!!!AJ!!!&m!!!"J!!!!B3!!!')!!!"M!!!!C!!!!'8!!!"Q!!!!C`!
+!!'J!!!"T!!!!DJ!!!'X!!!"X!!!!E3!!!'i!!!"[!!!!F!!!!(%!!!"b!!!!F`!
+!!(3!!!"e!!!!GJ!!!(F!!!"i!!!!H3!!!(S!!!"l!!!!I!!!!(d!!!"q!!!!I`!
+!!)!!!!#"!!!!JJ!!!)-!!!#%!!!!K3!!!)B!!!#(!!!!L!!!!)N!!!#+!!!!L`!
+!!)`!!!#0!!!!MJ!!!)m!!!#3!!!!!*%!!!#5!!!!N`!!!*3!!!#9!!!!PJ!!!*F
+!!!#B!!!!Q3!!!*S!!!#E!!!!R!!!!*d!!!#H!!!!R`!!!+!!!!#K!!!!SJ!!!+-
+!!!#N!!!!T3!!!+B!!!#R!!!!U!!!!+N!!!#U!!!!U`!!!+`!!!#Y!!!!VJ!!!+m
+!!!#`!!!!X3!!!,)!!!#c!!!!Y!!!!,8!!!#f!!!!Y`!!!,J!!!#j!!!!ZJ!!!,X
+!!!#m!!!![3!!!,i!!!#r!!!!`!!!!-%!!!$#!!!!``!!!-3!!!$&!!!!aJ!!!-F
+!!!$)!!!!b3!!!-S!!!$,!!!!c!!!!-d!!!$1!!!!c`!!!0!!!!$4!!!!dJ!!!0-
+!!!$8!!!!e3!!!0B!!!$A!!!!f!!!!0N!!!$D!!!!f`!!!0`!!!$G!!!!hJ!!!0m
+!!!$J!!!!i3!!!1)!!!$M!!!!j!!!!18!!!$Q!!!!j`!!!1J!!!$T!!!!kJ!!!1X
+!!!$X!!!!l3!!!1i!!!$[!!!!m!!!!2%!!!$b!!!!m`!!!23!!!$e!!!!pJ!!!2F
+!!!$i!!!!q3!!!2S!!!$l!!!!r!!!!2d!!!$q!!!!r`!!!3!!!!%"!!!"!J!!!3-
+!!!%%!!!""3!!!3B!!!%(!!!"#!!!!3N!!!%+!!!"#`!!!3`!!!%0!!!"$J!!!3m
+!!!%3!!!"%3!!!4)!!!%6!!!"&!!!!48!!!%@!!!"&`!!!4J!!!%C!!!"'J!!!4X
+!!!%F!!!"(3!!!4i!!!%I!!!")!!!!5%!!!%L!!!")`!!!53!!!%P!!!"*J!!!5F
+!!!%S!!!"+3!!!5S!!!%V!!!",!!!!5d!!!%Z!!!",`!!!6!!!!%a!!!"-J!!!6-
+!!!%d!!!"03!!!6B!!!%h!!!"1!!!!6N!!!%k!!!"1`!!!6`!!!%p!!!"2J!!!6m
+!!!&!!!!"33!!!8)!!!&$!!!"4!!!!88!!!&'!!!"4`!!!8J!!!&*!!!"5J!!!8X
+!!!&-!!!"63!!!8i!!!&2!!!"8!!!!9%!!!&5!!!"8`!!!93!!!&9!!!"9J!!!9F
+!!!&B!!!"@3!!!9S!!!&E!!!"A!!!!9d!!!&H!!!"A`!!!@!!!!&K!!!"BJ!!!@-
+!!!&N!!!"C3!!!@B!!!&R!!!"D!!!!@N!!!&U!!!"D`!!!@`!!!&Y!!!"EJ!!!@m
+!!!&`!!!"F3!!!A)!!!&c!!!"G!!!!A8!!!&f!!!"G`!!!AJ!!!&j!!!"HJ!!!AX
+!!!'H!!!"I!!!!Ad!!!!%!!!!"3!!!!F!!!!'!!!!#!!!!Bm!!!&r!!!"J!!!!B%
+!!!'#!!!"J`!!!B3!!!'&!!!"KJ!!!BF!!!')!!!"L3!!!BS!!!',!!!"M!!!!Bd
+!!!'1!!!"N!!!!!'4!!!"NJ!!!C-!!!'8!!!"P3!!!CB!!!'A!!!"Q!!!!CN!!!'
+D!!!"Q`!!!C`!!!'G!!!"R`!!!D!!!!'K!!!"SJ!!!D-!!!'N!!!"T3!!!DB!!!'
+R!!!"U!!!!DN!!!'U!!!"U`!!!D`!!!'Y!!!"VJ!!!Dm!!!'`!!!"X3!!!E)!!!'
+c!!!"Y!!!!E8!!!'f!!!"Y`!!!EJ!!!'j!!!"ZJ!!!EX!!!'m!!!"[3!!!Ei!!!'
+r!!!"`!!!!F%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#`!$63X!!di,!!0
+2#`!$8!X!!e%,!!05#`!$8`X!!e3,!!09#`!$9JX!!eF,!!0B#`!$@3X!!eS,!!0
+E#`!$A!X!!ed,!!0H#`!"Q3X!!CS,!!'B#`!"Q`X!!C`,!!'G#`!"RJX!!Cm,!!'
+J#`!"S3X!!D),!!'M#`!"T!X!!D8,!!'Q#`!"T`X!!DJ,!!'T#`!"UJX!!DX,!!'
+X#`!"V3X!!Di,!!'[#`!"X!X!!E%,!!'b#`!"X`X!!E3,!!'e#`!"YJX!!EF,!!'
+i#`!"Z3X!!ES,!!'l#`!"[!X!!Ed,!!'q#`!"[`X!!F!,!!("#`!"`JX!!F-,!!(
+%#`!"a3X!!FB,!!((#`!"b!X!!FN,!!(+#`!"b`X!!F`,!!(0#`!"cJX!!Fm,!!(
+3#`!"d3X!!G),!!(6#`!"e!X!!G8,!!(@#`!"e`X!!GJ,!!(C#`!"fJX!!GX,!!(
+F#`!"h3X!!Gi,!!(I#`!"i!X!!H%,!!(L#`!"i`X!!H3,!!(P#`!"jJX!!HF,!!(
+S#`!"k3X!!HS,!!(V#`!"l!X!!Hd,!!(Z#`!"l`X!!I!,!!(a#`!"mJX!!I-,!!(
+d#`!"p3X!!IB,!!(h#`!"q!X!!IN,!!(k#`!"q`X!!I`,!!(p#`!"rJX!!Im,!!)
+!#`!#!3X!!J),!!)$#`!#"!X!!J8,!!)'#`!#"`X!!JJ,!!)*#`!##JX!!JX,!!)
+-#`!#$3X!!Ji,!!)2#`!#%!X!!K%,!!)5#`!#%`X!!K3,!!)9#`!#&JX!!KF,!!)
+B#`!#'3X!!KS,!!)E#`!#(!X!!Kd,!!)H#`!#(`X!!L!,!!)K#`!#)JX!!L-,!!)
+N#`!#*3X!!LB,!!)R#`!#+!X!!LN,!!)U#`!#+`X!!L`,!!)Y#`!#,JX!!Lm,!!)
+`#`!#-3X!!M),!!)c#`!#0!X!!M8,!!)f#`!#0`X!!MJ,!!)j#`!#1JX!!MX,!!)
+m#`!#23X!!Mi,!!)r#`!#3!X!!N%,!!*##`!#3`X!!N3,!!*&#`!#4JX!!NF,!!*
+)#`!#53X!!NS,!!*,#`!#6!X!!Nd,!!*1#`!#6`X!!P!,!!*4#`!#8JX!!P-,!!*
+8#`!#93X!!PB,!!*A#`!#@!X!!PN,!!*D#`!#@`X!!P`,!!*G#`!#AJX!!Pm,!!*
+J#`!#B3X!!Q),!!*M#`!#C!X!!Q8,!!*Q#`!#C`X!!QJ,!!*T#`!#DJX!!QX,!!*
+X#`!#E3X!!Qi,!!*[#`!#F!X!!R%,!!*b#`!#F`X!!R3,!!*e#`!#GJX!!RF,!!*
+i#`!#H3X!!RS,!!*l#`!#I!X!!Rd,!!*q#`!#I`X!!S!,!!+"#`!#JJX!!S-,!!+
+%#`!#K3X!!SB,!!+(#`!#L!X!!SN,!!++#`!#L`X!!S`,!!+0#`!#MJX!!Sm,!!+
+3!!X!!T%,!!+5#`!#N`X!!T3,!!+9#`!#PJX!!TF,!!+B#`!#Q3X!!TS,!!+E#`!
+#R!X!!Td,!!+H#`!#R`X!!U!,!!+K#`!#SJX!!U-,!!+N#`!#T3X!!UB,!!+R#`!
+#U!X!!UN,!!+U#`!#U`X!!U`,!!+Y#`!#VJX!!Um,!!+`#`!#X3X!!V),!!+c#`!
+#Y!X!!V8,!!+f#`!#Y`X!!VJ,!!+j#`!#ZJX!!VX,!!+m#`!#[3X!!Vi,!!+r#`!
+#`!X!!X%,!!,##`!#``X!!X3,!!,&#`!#aJX!!XF,!!,)#`!#b3X!!XS,!!,,#`!
+#c!X!!Xd,!!,1#`!#c`X!!Y!,!!,4#`!#dJX!!Y-,!!,8#`!#e3X!!YB,!!,A#`!
+#f!X!!YN,!!,D#`!#f`X!!Y`,!!,G#`!#hJX!!Ym,!!,J#`!#i3X!!Z),!!,M#`!
+#j!X!!Z8,!!,Q#`!#j`X!!ZJ,!!,T#`!#kJX!!ZX,!!,X#`!#l3X!!Zi,!!,[#`!
+#m!X!![%,!!,b#`!#m`X!![3,!!,e#`!#pJX!![F,!!,i#`!#q3X!![S,!!,l#`!
+#r!X!![d,!!,q#`!#r`X!!`!,!!-"#`!$!JX!!`-,!!-%#`!$"3X!!`B,!!-(#`!
+$#!X!!`N,!!-+#`!$$!X!!`d,!!-A#`!$'!X!!aN,!!-D#`!$'`X!!a`,!!-G#`!
+$(JX!!am,!!-J#`!$)3X!!b),!!-M#`!$*!X!!b8,!!-R#`!$+!X!!bN,!!-U#`!
+$+`X!!bd,!!-[#`!$-3X!!c),!!-c#`!$0!X!!c8,!!-f#`!$0`X!!cJ,!!-j#`!
+$1JX!!c`,!!-p#`!$2JX!!cm,!!0!#`!$33X!!d),!!0$#`!$4!X!!d8,!!0'#`!
+$4`X!!dJ,!!0*#`!$5JX!!dX,!!0-#`!!"JX!!!S,!!-9#`!!#!X!!!N,!!!8#`!
+!&3X!!"d,!!!H#`!"PJ!!!CX!!!'G!!!"Q3!!!C`!!!'D!!!!!!!!!!%!!!!#!!!
+!!`!!!!3!!!!&!!!!"J!!!!F!!!!)!!!!#3!!!!S!!!!,!!!!$!!!!!d!!!!1!!!
+!$`!!!"!!!!!4!!!!%J!!!"-!!!!8!!!!&3!!!"B!!!!A!!!!'!!!!"N!!!!D!!!
+!'`!!!"`!!!!G!!!!(J!!!"m!!!!J!!!!)3!!!#)!!!!M!!!!*!!!!#8!!!!Q!!!
+!*`!!!#J!!!!T!!!!+J!!!#X!!!!X!!!!,3!!!#i!!!![!!!!-!!!!$%!!!!b!!!
+!-`!!!$3!!!!e!!!!0J!!!$F!!!!i!!!!13!!!$S!!!!l!!!!2!!!!$d!!!!q!!!
+!2`!!!%!!!!""!!!!3J!!!%-!!!"%!!!!43!!!%B!!!"(!!!!5!!!!%N!!!"+!!!
+!5`!!!%`!!!"0!!!!6J!!!%m!!!"3!!!!83!!!&)!!!"6!!!!9!!!!&8!!!"@!!!
+!9`!!!&J!!!"C!!!!@J!!!&X!!!"F!!!!A3!!!&i!!!"I!!!!B!!!!'%!!!"L!!!
+!B`!!!'3!!!"P!!!!CJ!!!'F!!!"S!!!!D3!!!'S!!!"V!!!!E!!!!'d!!!"Z!!!
+!E`!!!(!!!!"a!!!!FJ!!!(-!!!"d!!!!G3!!!(B!!!"h!!!!H!!!!(N!!!"k!!!
+!H`!!!(`!!!"p!!!!IJ!!!(m!!!#!!!!!J3!!!))!!!#$!!!!K!!!!)8!!!#'!!!
+!K`!!!)J!!!#*!!!!LJ!!!)X!!!#-!!!!M3!!!)i!!!#2!!!!N!!!!!#4!!!!NJ!
+!!*-!!!#8!!!!P3!!!*B!!!#A!!!!Q!!!!*N!!!#D!!!!Q`!!!*`!!!#G!!!!RJ!
+!!*m!!!#J!!!!S3!!!+)!!!#M!!!!T!!!!+8!!!#Q!!!!T`!!!+J!!!#T!!!!UJ!
+!!+X!!!#X!!!!V3!!!+i!!!#[!!!!X!!!!,%!!!#b!!!!X`!!!,3!!!#e!!!!YJ!
+!!,F!!!#i!!!!Z3!!!,S!!!#l!!!![!!!!,d!!!#q!!!![`!!!-!!!!$"!!!!`J!
+!!--!!!$%!!!!a3!!!-B!!!$(!!!!b!!!!-N!!!$+!!!!b`!!!-`!!!$0!!!!cJ!
+!!-m!!!$3!!!!d3!!!0)!!!$6!!!!e!!!!08!!!$@!!!!e`!!!0J!!!$C!!!!fJ!
+!!0X!!!$F!!!!h3!!!0i!!!$I!!!!i!!!!1%!!!$L!!!!i`!!!13!!!$P!!!!jJ!
+!!1F!!!$S!!!!k3!!!1S!!!$V!!!!l!!!!1d!!!$Z!!!!l`!!!2!!!!$a!!!!mJ!
+!!2-!!!$d!!!!p3!!!2B!!!$h!!!!q!!!!2N!!!$k!!!!q`!!!2`!!!$p!!!!rJ!
+!!2m!!!%!!!!"!3!!!3)!!!%$!!!""!!!!38!!!%'!!!""`!!!3J!!!%*!!!"#J!
+!!3X!!!%-!!!"$3!!!3i!!!%2!!!"%!!!!4%!!!%5!!!"%`!!!43!!!%9!!!"&J!
+!!4F!!!%B!!!"'3!!!4S!!!%E!!!"(!!!!4d!!!%H!!!"(`!!!5!!!!%K!!!")J!
+!!5-!!!%N!!!"*3!!!5B!!!%R!!!"+!!!!5N!!!%U!!!"+`!!!5`!!!%Y!!!",J!
+!!5m!!!%`!!!"-3!!!6)!!!%c!!!"0!!!!68!!!%f!!!"0`!!!6J!!!%j!!!"1J!
+!!6X!!!%m!!!"23!!!6i!!!%r!!!"3!!!!8%!!!&#!!!"3`!!!83!!!&&!!!"4J!
+!!8F!!!&)!!!"53!!!8S!!!&,!!!"6!!!!8d!!!&1!!!"6`!!!9!!!!&4!!!"8J!
+!!9-!!!&8!!!"93!!!9B!!!&A!!!"@!!!!9N!!!&D!!!"@`!!!9`!!!&G!!!"AJ!
+!!9m!!!&J!!!"B3!!!@)!!!&M!!!"C!!!!@8!!!&Q!!!"C`!!!@J!!!&T!!!"DJ!
+!!@X!!!&X!!!"E3!!!@i!!!&[!!!"F!!!!A%!!!&b!!!"P!!!!A-!!!&d!!!"P3!
+!!CB!!!'B!!!"K3!!!A8!!!'A!!!"GJ!!!AF!!!&i!!!"H3!!!AS!!!&l!!!"I!!
+!!Ad!!!&q!!!"I`!!!B!!!!'"!!!"JJ!!!B-!!!'%!!!"KJ!!!BF!!!')!!!"L3!
+!!BS!!!',!!!"M!!!!Bd!!!'1!!!"M`!!!C!!!!!"N3!!!C)!!!'6!!!"RJ!!!Cm
+!!!'@!!!"P`!!!CJ!!!'C!!!"QJ!!!CX!!!'F!!!"R3!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-!!-m$!!$23`!!ci
+-!!-r$!!"Q3`!!CS-!!'B$!!"Q``!!C`-!!'G$!!"RJ`!!Cm-!!'J$!!"S3`!!D)
+-!!'M$!!"T!`!!D8-!!'Q$!!"T``!!DJ-!!'T$!!"UJ`!!DX-!!'X$!!"V3`!!Di
+-!!'[$!!"X!`!!E%-!!'b$!!"X``!!E3-!!'e$!!"YJ`!!EF-!!'i$!!"Z3`!!ES
+-!!'l$!!"[!`!!Ed-!!'q$!!"[``!!F!-!!("$!!"`J`!!F--!!(%$!!"a3`!!FB
+-!!(($!!"b!`!!FN-!!(+$!!"b``!!F`-!!(0$!!"cJ`!!Fm-!!(3$!!"d3`!!G)
+-!!(6$!!"e!`!!G8-!!(@$!!"e``!!GJ-!!(C$!!"fJ`!!GX-!!(F$!!"h3`!!Gi
+-!!(I$!!"i!`!!H%-!!(L$!!"i``!!H3-!!(P$!!"jJ`!!HF-!!(S$!!"k3`!!HS
+-!!(V$!!"l!`!!Hd-!!(Z$!!"l``!!I!-!!(a$!!"mJ`!!I--!!(d$!!"p3`!!IB
+-!!(h$!!"q!`!!IN-!!(k$!!"q``!!I`-!!(p$!!"rJ`!!Im-!!)!$!!#!3`!!J)
+-!!)$$!!#"!`!!J8-!!)'$!!#"``!!JJ-!!)*$!!##J`!!JX-!!)-$!!#$3`!!Ji
+-!!)2$!!#%!`!!K%-!!)5$!!#%``!!K3-!!)9$!!#&J`!!KF-!!)B$!!#'3`!!KS
+-!!)E$!!#(!`!!Kd-!!)H$!!#(``!!L!-!!)K$!!#)J`!!L--!!)N$!!#*3`!!LB
+-!!)R$!!#+!`!!LN-!!)U$!!#+``!!L`-!!)Y$!!#,J`!!Lm-!!)`$!!#-3`!!M)
+-!!)c$!!#0!`!!M8-!!)f$!!#0``!!MJ-!!)j$!!#1J`!!MX-!!)m$!!#23`!!Mi
+-!!)r$!!#3!`!!N%-!!*#$!!#3``!!N3-!!*&$!!#4J`!!NF-!!*)$!!#53`!!NS
+-!!*,$!!#6!`!!Nd-!!*1$!!#6``!!P!-!!*4$!!#8J`!!P--!!*8$!!#93`!!PB
+-!!*A$!!#@!`!!PN-!!*D$!!#@``!!P`-!!*G$!!#AJ`!!Pm-!!*J$!!#B3`!!Q)
+-!!*M$!!#C!`!!Q8-!!*Q$!!#C``!!QJ-!!*T$!!#DJ`!!QX-!!*X$!!#E3`!!Qi
+-!!*[$!!#F!`!!R%-!!*b$!!#F``!!R3-!!*e$!!#GJ`!!RF-!!*i$!!#H3`!!RS
+-!!*l$!!#I!`!!Rd-!!*q$!!#I``!!S!-!!+"$!!#JJ`!!S--!!+%$!!#K3`!!SB
+-!!+($!!#L!`!!SN-!!++$!!#L``!!S`-!!+0$!!#MJ`!!Sm-!!+3!!`!!T%-!!+
+5$!!#N``!!T3-!!+9$!!#PJ`!!TF-!!+B$!!#Q3`!!TS-!!+E$!!#R!`!!Td-!!+
+H$!!#R``!!U!-!!+K$!!#SJ`!!U--!!+N$!!#T3`!!UB-!!+R$!!#U!`!!UN-!!+
+U$!!#U``!!U`-!!+Y$!!#VJ`!!Um-!!+`$!!#X3`!!V)-!!+c$!!#Y!`!!V8-!!+
+f$!!#Y``!!VJ-!!+j$!!#ZJ`!!VX-!!+m$!!#[3`!!Vi-!!+r$!!#`!`!!X%-!!,
+#$!!#```!!X3-!!,&$!!#aJ`!!XF-!!,)$!!#b3`!!XS-!!,,$!!#c!`!!Xd-!!,
+1$!!#c``!!Y!-!!,4$!!#dJ`!!Y--!!,8$!!#e3`!!YB-!!,A$!!#f!`!!YN-!!,
+D$!!#f``!!Y`-!!,G$!!#hJ`!!Ym-!!,J$!!#i3`!!Z)-!!,M$!!#j!`!!Z8-!!,
+Q$!!#j``!!ZJ-!!,T$!!#kJ`!!ZX-!!,X$!!#l3`!!Zi-!!,[$!!#m!`!![%-!!,
+b$!!#m``!![3-!!,e$!!#pJ`!![F-!!,i$!!#q3`!![S-!!,l$!!#r!`!![d-!!,
+q$!!#r``!!`!-!!-"$!!$!J`!!`--!!-%$!!$"3`!!`B-!!-($!!$#!`!!`N-!!-
++$!!$$!`!!`d-!!-A$!!$'!`!!aN-!!-D$!!$'``!!a`-!!-G$!!$(J`!!am-!!-
+J$!!$)3`!!b)-!!-M$!!$*!`!!b8-!!-R$!!$+!`!!bN-!!-U$!!$+``!!bd-!!-
+[$!!$-3`!!c)-!!-c$!!$0!`!!c8-!!-f$!!$0``!!cJ-!!-j$!!$1J`!!d!-!!0
+"$!!$3J`!!d--!!0%$!!$43`!!dB!!J"3!!%!!3!"!!%!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!&#G$6d4&*b!R4%&835FJ*e"*3e3R!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!"!!!!1P*26e3!!!!!!!!!!!!!!!!&4e*98!!!!!!
+!!!!f#%GPG%K89&"6!!!!"%C*6%8#!!-q4NP-43)!!cp'58a&!J!$28C*6%8#!!-
+m4e*98!!!!!!!!!!%%dp`C@j68d`J3A"`E'PMBA4TEfi!!!!M4NP-43X!!de'58a
+&#`!$@dC*6%8,!!-q4NP-43X!!e&'58a&#`!$3dC*6%8,!!0%4NP-43X!!dG'58a
+&#`!$58C*6%8,!!0)4NP-43X!!cp'58a&#`!$6dC*6%8,!!0#4NP-43X!!d&'58a
+&#`!$8NC*6%8,!!0&4NP-43X!!dC'58a&#`!$A8C*6%8,!!0,4NP-43X!!dT'58a
+&#`!$@8C*6%8,!!0B4NP-43X!!e9'58a&#`!$ANC*6%8,!!-m4NP-43X!!eG'58a
+&#`!$@NC*6%8,!!-p4NP-43X!!ea'58a&#`!$8dC*6%8,!!0!4NP-43X!!da'58a
+&#`!$6NC*6%8,!!034NP-43X!!eC'58a&#`!$9%G599!!!!!!!!!!#Jp2F'9Z8e0
+-)%aTBR*KFRN!!!!#4e*98!!!!!!!!!!Z"Q0bHA"dE`!!!#G'58a&!J!$#NC*6%8
+#!!-04NP-43)!!cT'58a&!J!$$%C*6%8#!!-*4e*98!!!!!!!!!!-"'&cEM%!!!"
+A4NP-43)!!Fa'58a&!J!"[dC*6%8#!!(64NP-43)!!FG'58a&!J!"d8C*6%8#!!(
++4NP-43)!!Fe'58a&!J!"cNC*6%8#!!(54NP-43)!!Fp'58a&!J!"a8C*6%8#!!(
+$4NP-43)!!FP'58a&!J!"`%C*6%8#!!('4NP-43)!!GC'58a&!J!"e%C*6%8#!!(
+34NP-43)!!F4'58a&!J!"e8C*6%8#!!-I4NP-43)!!Ij'58a&!J!##NC*6%8#!!)
+'4NP-43)!!JK'58a&!J!#"dC*6%8#!!(r4NP-43)!!J4'58a&!J!#!%C*6%8#!!)
+,4NP-43)!!aK'58a&!J!#!8C*6%8#!!)$4NP-43)!!JP'58a&!J!"kdC*6%8#!!(
+E4NP-43)!!HG'58a&!J!"h%C*6%8#!!(S4NP-43)!!Ge'58a&!J!"k8C*6%8#!!(
+H4NP-43)!!HT'58a&!J!"f8C*6%8#!!(P4NP-43)!!GT'58a&!J!"jNC*6%8#!!(
+m4NP-43)!!Ie'58a&!J!$)8C*6%8#!!(k4NP-43)!!IY'58a&!J!$)%C*6%8#!!-
+L4NP-43)!!I0'58a&!J!"pdC*6%8#!!(f4NP-43)!!I9'58a&!J!"m8C*6%8#!!(
+b4NP-43)!!Hp'58a&!J!"q%C*6%8#!!(`4NP-43)!!I4'58a&!J!"i8C*6%8#!!(
+L4NP-43)!!H0'58a&!J!"j%C*6%8#!!(A4NP-43)!!GK'58a&!J!"l%C*6%8#!!(
+J4NP-43)!!FK'58a&!J!#"8C*6%8#!!("4NP-43)!!J*'58a&!J!"[8C*6%8#!!'
+m4NP-43)!!EY'58a&!J!"bdC*6%8#!!(#4NP-43)!!b0'58a&!J!"hdC*6%8#!!'
+q4NP-43)!!He'58a&!J!"lNC*6%8#!!(j4e*98!!!!!!!!!!0!Q*Q!!!!"8C*6%8
+#!!)34NP-43)!!Je'58a&!J!#$NC*6%8#!!)-4NP-43)!!Jp(8P93!!!!!!!!!!i
+$BQP[!!!!$NC*6%8#!!)54NP-43)!!b4'58a&!J!#%8C*6%8#!!-P4NP-43)!!bP
+'58a&!J!$*dC*6%8#!!-S4NP-43)!!K0'58a&!J!$+NC*6%8#!!-A4NP-43)!!aj
+'58a&!J!$,dC*6%8#!!-V4NP-43)!!be(8P93!!!!!!!!!!m#BQi!!!!64NP-43)
+!!K4'58a&!J!#&dC*6%8#!!)C4NP-43)!!Ka'58a&!J!#(dC*6%8#!!)K4NP-43)
+!!L*'58a&!J!#*%C*6%8#!!)Q4NP-43)!!KC'58a&!J!#'dC*6%8#!!)J4NP-43)
+!!KK'58a&!J!#*8C*6%8#!!)94NP-43)!!L0'58a&!J!#(8C*6%8#!!)H4NP-43)
+!!KT(8P93!!!!!!!!!"!'BR9QCQ9b!!!!!NC*6%8#!!)R4NP-43)!!LK(8P93!!!
+!!!!!!"%%Bf&cG!!!!!9'58a&!J!#,8C*6%8#!!)U4NP-43)!!LY'58a&!J!#+8C
+*6%8#!!)X4e*98!!!!!!!!!!5"'0[EA!!!!!$4NP-43)!!Lj'58a&!J!#,dC*6%8
+#!!)`4e*98!!!!!!!!!!6"'0[EQB!!!!#4NP-43)!!M&'58a&!J!#-NG599!!!!!
+!!!!!&!0NCA-!!!!D4NP-43)!!M0'58a&!J!#0%C*6%8#!!)f4NP-43)!!MG'58a
+&!J!#18C*6%8#!!)k4NP-43)!!Ma'58a&!J!$-8C*6%8#!!)p4NP-43)!!N"'58a
+&!J!#38C*6%8#!!*#4NP-43)!!N0'58a&!J!#4%C*6%8#!!*'4NP-43)!!NG'58a
+&!J!#5%C*6%8#!!)i4NP-43)!!Mj'58a&!J!#48C*6%8#!!*,4NP-43)!!NP'58a
+&!J!#08C*6%8#!!)r4NP-43)!!NT'58a&!J!#1dG599!!!!!!!!!!&3*ND!!!!!9
+'58a&!J!#6NC*6%8#!!*24NP-43)!!P"'58a&!J!#6%C*6%8#!!*04e*98!!!!!!
+!!!!@!f4cB3!!!!K'58a&!J!#8dC*6%8#!!*84NP-43)!!P9'58a&!J!#88C*6%8
+#!!*A4NP-43)!!PC'58a&!J!#8NC*6%8#!!-C4e*98!!!!!!!!!!A!f9bFJ!!!!0
+'58a&!J!#@%C*6%8#!!*C4NP-43)!!PT(8P93!!!!!!!!!"J$CAC`!!!!2dC*6%8
+#!!*K4NP-43)!!Q"'58a&!J!#BNC*6%8#!!*N4NP-43)!!RP'58a&!J!#DdC*6%8
+#!!*b4NP-43)!!S&'58a&!J!#HNC*6%8#!!*X4NP-43)!!R0'58a&!J!#JNC*6%8
+#!!*f4NP-43)!!QK'58a&!J!#K8C*6%8#!!+3!%C*6%8#!!*[4NP-43)!!Rj'58a
+&!J!#KNC*6%8#!!*l4NP-43)!!Qe'58a&!J!#G%C*6%8#!!+$4NP-43)!!RG'58a
+&!J!#D8C*6%8#!!*`4NP-43)!!Rp'58a&!J!#H%C*6%8#!!*U4NP-43)!!R&'58a
+&!J!#J%C*6%8#!!*m4NP-43)!!Qj'58a&!J!#G8C*6%8#!!+%4NP-43)!!Sa'58a
+&!J!#L8C*6%8#!!++4NP-43)!!Sj'58a&!J!#MdC*6%8#!!+(4NP-43)!!SK'58a
+&!J!#LdC*6%8#!!+04NP-43)!!T4'58a&!J!#P8C*6%8#!!+@4NP-43)!!TG'58a
+&!J!#NdC*6%8#!!+54NP-43)!!T&'58a&!J!#A8C*6%8#!!*E4NP-43)!!Pa'58a
+&!J!#BdC*6%8#!!*p4NP-43)!!Pp'58a&!J!#C8C*6%8#!!*H4NP-43)!!QG'58a
+&!J!#CNC*6%8#!!-b4NP-43)!!c0(8P93!!!!!!!!!"N%D'eKB`!!!!&'58a&!J!
+#Q%G599!!!!!!!!!!'J4TC'9K!!!!"8C*6%8#!!+C4NP-43)!!TT'58a&!J!#R%C
+*6%8#!!+E4NP-43)!!Te(8P93!!!!!!!!!"X&E'KKFfJ!!!!#4NP-43)!!Tj'58a
+&!J!#RdG599!!!!!!!!!!(!0YC$)!!!!#4NP-43)!!U"'58a&!J!#S8G599!!!!!
+!!!!!(30YC$8!!!!#4NP-43)!!U*'58a&!J!#SdG599!!!!!!!!!!(J4YC'-b!!!
+!!NC*6%8#!!+N4NP-43)!!U9(8P93!!!!!!!!!"m(Ef*UC@0dF`!!!!4'58a&!J!
+#U8C*6%8#!!+Q4NP-43)!!UK'58a&!J!#TdG599!!!!!!!!!!)!0`C@d!!!!'4NP
+-43)!!Up'58a&!J!#VNC*6%8#!!+X4NP-43)!!Ue'58a&!J!#UNC*6%8#!!+V4e*
+98!!!!!!!!!!K"R"VBh-a-J!!!""'58a&!J!#X%C*6%8#!!+a4NP-43)!!V*'58a
+&!J!#XdC*6%8#!!+d4NP-43)!!V9'58a&!J!#YNC*6%8#!!+h4NP-43)!!VK'58a
+&!J!#Z8C*6%8#!!+k4NP-43)!!VY'58a&!J!#[%C*6%8#!!+p4NP-43)!!c4'58a
+&!J!#[NG599!!!!!!!!!!)J9`Df0c0`!!!!C'58a&!J!#`%C*6%8#!!,"4NP-43)
+!!Vp'58a&!J!$0dC*6%8#!!-e4NP-43)!!cC(8P93!!!!!!!!!#-%FQ&ZC!!!!!0
+'58a&!J!#`NC*6%8#!!,$4NP-43)!!X4(8P93!!!!!!!!!#3$FQ-b!!!!"8C*6%8
+#!!,)4NP-43)!!XP'58a&!J!#adC*6%8#!!,&4NP-43)!!XC(8P93!!!!!!!!!#8
+$FQ-d!!!!!NC*6%8#!!,,4NP-43)!!XT(8P93!!!!!!!!!#B$FQ-e!!!!"8C*6%8
+#!!,34NP-43)!!Xj'58a&!J!#cdC*6%8#!!,-4NP-43)!!Xe(8P93!!!!!!!!!#F
+'FQP`C@eN!!!!!NC*6%8#!!,44NP-43)!!Y*(8P93!!!!!!!!!#J$FR0K!!!!$%C
+*6%8#!!,64NP-43)!!Y9'58a&!J!#eNC*6%8#!!,E4NP-43)!!YT'58a&!J!#e%C
+*6%8#!!,C4NP-43)!!Ya'58a&!J!#edC*6%8#!!,B4NP-43)!!cK'58a&!J!$18G
+599!!!!!!!!!!+30cD'%!!!!%4NP-43)!!Yp'58a&!J!#h8C*6%8#!!,J4NP-43)
+!!Yj(8P93!!!!!!!!!#S&Fh4KBfX!!!!"4NP-43)!!Z&(8P93!!!!!!!!!#X'G(K
+dAf4L!!!!!8C*6%8#!!,L4e*98!!!!!!!!!!X"(Je-$N!!!!94NP-43)!!ZT'58a
+&!J!#k8C*6%8#!!,[4NP-43)!!ZK'58a&!J!#lNC*6%8#!!,`4NP-43)!!aT'58a
+&!J!#p%C*6%8#!!,a4NP-43)!!ZC'58a&!J!#kdC*6%8#!!,P4NP-43)!![0'58a
+&!J!#l%C*6%8#!!,R4NP-43)!!Ze'58a&!J!#p8C*6%8#!!,b4NP-43)!!aY'58a
+&!J!#idC*6%8#!!,N4e*98!!!!!!!!!!Y"RJe-$Pf-`!!!"9'58a&!J!#q8C*6%8
+#!!,k4NP-43)!![Y'58a&!J!#rdC*6%8#!!-"4NP-43)!!`0'58a&!J!$"8C*6%8
+#!!-)4NP-43)!![C'58a&!J!$!%C*6%8#!!,i4NP-43)!!`C'58a&!J!#pdC*6%8
+#!!-%4NP-43)!!`*'58a&!J!#rNC*6%8#!!-(4NP-43)!![a'58a&!J!#r8C*6%8
+#!!-F4NP-43)!!ae(8P93!!!!!!!!!!X$Fh0X!!!!)dC*6%8#!!'K4NP-43)!!D0
+'58a&!J!"RNC*6%8#!!'J4NP-43)!!Cp'58a&!J!"SNC*6%8#!!'S4NP-43)!!DT
+'58a&!J!"T8C*6%8#!!'R4NP-43)!!DC'58a&!J!"U8C*6%8#!!'N4NP-43)!!CY
+'58a&!J!"R8C*6%8#!!'C4NP-43)!!CT'58a&!J!"R%C*6%8#!!'j4NP-43)!!ET
+'58a&!J!"YNC*6%8#!!'i4NP-43)!!EG'58a&!J!"X8C*6%8#!!'`4NP-43)!!De
+'58a&!J!"XdC*6%8#!!'Z4NP-43)!!E4'58a&!J!"XNC*6%8#!!'X4NP-43)!!E9
+'58a&!J!"UdC*6%8#!!'B4NP-43)!!Dp(8P93!!!!!!!!!!%138j655"-D@*bBA*
+TCA-!!!!#4e*98!!!!!!!!!!h!e"33`!!!!*'58a&!J!!"NC*6%8#!!-94e*98!!
+!!!!!!!!i!cBiD`!!!!*'58a&$!!$3%C*6%8-!!0"4e*98!!!!!!!!!!#$8eKBb"
+-D@*bBA*TCA-!!!!#4e*98!!!!!!!!!!e!e"33`!!!!K'58a&!J!!#NC*6%8#!!!
+)4NP-43)!!!P'58a&!J!"PNC*6%8#!!!H4NP-43)!!"e'58a&!J!!&8C*6%8#!!!
+84e*98!!!!!!!!!!j!cBiD`!!!!9'58a&$!!$3NC*6%8-!!0$4NP-43`!!d4'58a
+&$!!$48C*6%8-!!0'H`#++E"[HfplEhY[HfplEhY[HfplEhY[HfplEhY[HfplEhY
+[H`!!!!%!!!!#!!!!!`!!!!!!!!&q!!!!#3!!!!S!!!!,!!!!$!!!!!d!!!!1!!!
+!$`!!!"!!!!!4!!!!%J!!!"-!!!!8!!!!&3!!!"B!!!!A!!!!'!!!!"N!!!!D!!!
+!'`!!!"`!!!!G!!!!(J!!!"m!!!!J!!!!)3!!!#)!!!!M!!!!*!!!!#8!!!!Q!!!
+!*`!!!#J!!!!T!!!!+J!!!#X!!!!X!!!!,3!!!#i!!!![!!!!-!!!!$%!!!!b!!!
+!-`!!!$3!!!!e!!!!0J!!!$F!!!!i!!!!13!!!$S!!!!l!!!!2!!!!$d!!!!q!!!
+!2`!!!%!!!!""!!!!3J!!!%-!!!"%!!!!43!!!%B!!!"(!!!!5!!!!%N!!!"+!!!
+!5`!!!%`!!!"0!!!!6J!!!%m!!!"3!!!!83!!!&)!!!"6!!!!9!!!!&8!!!"@!!!
+!9`!!!&J!!!"C!!!!@J!!!&X!!!"F!!!!A3!!!&i!!!"I!!!!B!!!!'%!!!"L!!!
+!B`!!!'3!!!"P!!!!CJ!!!'F!!!"S!!!!D3!!!'S!!!"V!!!!E!!!!'d!!!"Z!!!
+!E`!!!(!!!!"a!!!!FJ!!!(-!!!"d!!!!G3!!!(B!!!"h!!!!H!!!!(N!!!"k!!!
+!H`!!!(`!!!"p!!!!IJ!!!(m!!!#!!!!!J3!!!))!!!#$!!!!K!!!!)8!!!#'!!!
+!K`!!!)J!!!#*!!!!LJ!!!)X!!!#-!!!!M3!!!)i!!!#2!!!!N!!!!!#4!!!!NJ!
+!!*-!!!#8!!!!P3!!!*B!!!#A!!!!Q!!!!*N!!!#D!!!!Q`!!!*`!!!#G!!!!RJ!
+!!*m!!!#J!!!!S3!!!+)!!!#M!!!!T!!!!+8!!!#Q!!!!T`!!!+J!!!#T!!!!UJ!
+!!+X!!!#X!!!!V3!!!+i!!!#[!!!!X!!!!,%!!!#b!!!!X`!!!,3!!!#e!!!!YJ!
+!!,F!!!#i!!!!Z3!!!,S!!!#l!!!![!!!!,d!!!#q!!!![`!!!-!!!!$"!!!!`J!
+!!--!!!$%!!!!a3!!!-B!!!$(!!!!b!!!!-N!!!$+!!!!b`!!!-`!!!$0!!!!cJ!
+!!-m!!!$3!!!!d3!!!0)!!!$6!!!!e!!!!08!!!$@!!!!e`!!!0J!!!$C!!!!fJ!
+!!0X!!!$F!!!!h3!!!0i!!!$I!!!!i!!!!1%!!!$L!!!!i`!!!13!!!$P!!!!jJ!
+!!1F!!!$S!!!!k3!!!1S!!!$V!!!!l!!!!1d!!!$Z!!!!l`!!!2!!!!$a!!!!mJ!
+!!2-!!!$d!!!!p3!!!2B!!!$h!!!!q!!!!2N!!!$k!!!!q`!!!2`!!!$p!!!!rJ!
+!!2m!!!%!!!!"!3!!!3)!!!%$!!!""!!!!38!!!%'!!!""`!!!3J!!!%*!!!"#J!
+!!3X!!!%-!!!"$3!!!3i!!!%2!!!"%!!!!4%!!!%5!!!"%`!!!43!!!%9!!!"&J!
+!!4F!!!%B!!!"'3!!!4S!!!%E!!!"(!!!!4d!!!%H!!!"(`!!!5!!!!%K!!!")J!
+!!5-!!!%N!!!"*3!!!5B!!!%R!!!"+!!!!5N!!!%U!!!"+`!!!5`!!!%Y!!!",J!
+!!5m!!!%`!!!"-3!!!6)!!!%c!!!"0!!!!68!!!%f!!!"0`!!!6J!!!%j!!!"1J!
+!!6X!!!%m!!!"23!!!6i!!!%r!!!"3!!!!8%!!!&#!!!"3`!!!83!!!&&!!!"4J!
+!!8F!!!&)!!!"53!!!8S!!!&,!!!"6!!!!8d!!!&1!!!"6`!!!9!!!!&4!!!"8J!
+!!9-!!!&8!!!"93!!!9B!!!&A!!!"@!!!!9N!!!&D!!!"@`!!!9`!!!&G!!!"AJ!
+!!9m!!!&J!!!"B3!!!@)!!!&M!!!"C!!!!@8!!!&Q!!!"C`!!!@J!!!&T!!!"DJ!
+!!@X!!!&X!!!"E3!!!@i!!!&[!!!"F!!!!A%!!!&b!!!"F`!!!A3!!!&e!!!"GJ!
+!!AF!!!&i!!!"H3!!!AS!!!&l!!!"RJ!!!A`!!!&p!!!"R`!!!D!!!!'L!!!!"!!
+!!!8!!!!(!!!!"J!!!!J!!!'2!!!"I`!!!D%!!!'!!!!"J3!!!B)!!!'$!!!"K!!
+!!B8!!!''!!!"K`!!!BJ!!!'*!!!"LJ!!!BX!!!'-!!!"M3!!!Bi!!!'3!!!!!C%
+!!!'5!!!"N`!!!C3!!!'9!!!"PJ!!!CF!!!'B!!!"Q3!!!CS!!!'E!!!"R!!!!Cd
+!!!'L!!!"S`!!!D3!!!'P!!!"T`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#!!-m!J!$23)!!ci#!!-r!J!"Q3)!!CS
+#!!'B!J!"Q`)!!C`#!!'G!J!"RJ)!!Cm#!!'J!J!"S3)!!D)#!!'M!J!"T!)!!D8
+#!!'Q!J!"T`)!!DJ#!!'T!J!"UJ)!!DX#!!'X!J!"V3)!!Di#!!'[!J!"X!)!!E%
+#!!'b!J!"X`)!!E3#!!'e!J!"YJ)!!EF#!!'i!J!"Z3)!!ES#!!'l!J!"[!)!!Ed
+#!!'q!J!"[`)!!F!#!!("!J!"`J)!!F-#!!(%!J!"a3)!!FB#!!((!J!"b!)!!FN
+#!!(+!J!"b`)!!F`#!!(0!J!"cJ)!!Fm#!!(3!J!"d3)!!G)#!!(6!J!"e!)!!G8
+#!!(@!J!"e`)!!GJ#!!(C!J!"fJ)!!GX#!!(F!J!"h3)!!Gi#!!(I!J!"i!)!!H%
+#!!(L!J!"i`)!!H3#!!(P!J!"jJ)!!HF#!!(S!J!"k3)!!HS#!!(V!J!"l!)!!Hd
+#!!(Z!J!"l`)!!I!#!!(a!J!"mJ)!!I-#!!(d!J!"p3)!!IB#!!(h!J!"q!)!!IN
+#!!(k!J!"q`)!!I`#!!(p!J!"rJ)!!Im#!!)!!J!#!3)!!J)#!!)$!J!#"!)!!J8
+#!!)'!J!#"`)!!JJ#!!)*!J!##J)!!JX#!!)-!J!#$3)!!Ji#!!)2!J!#%!)!!K%
+#!!)5!J!#%`)!!K3#!!)9!J!#&J)!!KF#!!)B!J!#'3)!!KS#!!)E!J!#(!)!!Kd
+#!!)H!J!#(`)!!L!#!!)K!J!#)J)!!L-#!!)N!J!#*3)!!LB#!!)R!J!#+!)!!LN
+#!!)U!J!#+`)!!L`#!!)Y!J!#,J)!!Lm#!!)`!J!#-3)!!M)#!!)c!J!#0!)!!M8
+#!!)f!J!#0`)!!MJ#!!)j!J!#1J)!!MX#!!)m!J!#23)!!Mi#!!)r!J!#3!)!!N%
+#!!*#!J!#3`)!!N3#!!*&!J!#4J)!!NF#!!*)!J!#53)!!NS#!!*,!J!#6!)!!Nd
+#!!*1!J!#6`)!!P!#!!*4!J!#8J)!!P-#!!*8!J!#93)!!PB#!!*A!J!#@!)!!PN
+#!!*D!J!#@`)!!P`#!!*G!J!#AJ)!!Pm#!!*J!J!#B3)!!Q)#!!*M!J!#C!)!!Q8
+#!!*Q!J!#C`)!!QJ#!!*T!J!#DJ)!!QX#!!*X!J!#E3)!!Qi#!!*[!J!#F!)!!R%
+#!!*b!J!#F`)!!R3#!!*e!J!#GJ)!!RF#!!*i!J!#H3)!!RS#!!*l!J!#I!)!!Rd
+#!!*q!J!#I`)!!S!#!!+"!J!#JJ)!!S-#!!+%!J!#K3)!!SB#!!+(!J!#L!)!!SN
+#!!++!J!#L`)!!S`#!!+0!J!#MJ)!!Sm#!!+3!!)!!T%#!!+5!J!#N`)!!T3#!!+
+9!J!#PJ)!!TF#!!+B!J!#Q3)!!TS#!!+E!J!#R!)!!Td#!!+H!J!#R`)!!U!#!!+
+K!J!#SJ)!!U-#!!+N!J!#T3)!!UB#!!+R!J!#U!)!!UN#!!+U!J!#U`)!!U`#!!+
+Y!J!#VJ)!!Um#!!+`!J!#X3)!!V)#!!+c!J!#Y!)!!V8#!!+f!J!#Y`)!!VJ#!!+
+j!J!#ZJ)!!VX#!!+m!J!#[3)!!Vi#!!+r!J!#`!)!!X%#!!,#!J!#``)!!X3#!!,
+&!J!#aJ)!!XF#!!,)!J!#b3)!!XS#!!,,!J!#c!)!!Xd#!!,1!J!#c`)!!Y!#!!,
+4!J!#dJ)!!Y-#!!,8!J!#e3)!!YB#!!,A!J!#f!)!!YN#!!,D!J!#f`)!!Y`#!!,
+G!J!#hJ)!!Ym#!!,J!J!#i3)!!Z)#!!,M!J!#j!)!!Z8#!!,Q!J!#j`)!!ZJ#!!,
+T!J!#kJ)!!ZX#!!,X!J!#l3)!!Zi#!!,[!J!#m!)!![%#!!,b!J!#m`)!![3#!!,
+e!J!#pJ)!![F#!!,i!J!#q3)!![S#!!,l!J!#r!)!![d#!!,q!J!#r`)!!`!#!!-
+"!J!$!J)!!`-#!!-%!J!$"3)!!`B#!!-(!J!$#!)!!`N#!!-+!J!$$!)!!`d#!!-
+A!J!$'!)!!aN#!!-D!J!$'`)!!a`#!!-G!J!$(J)!!am#!!-J!J!$)3)!!b)#!!-
+M!J!$*!)!!b8#!!-R!J!$+!)!!bN#!!-U!J!$+`)!!bd#!!-[!J!$-3)!!c)#!!-
+c!J!$0!)!!c8#!!-f!J!$0`)!!cJ#!!-j!J!$1J)!!!B#!!!+!J!$&3)!!!J#!!!
+*!J!!&!)!!"8#!!!G!J!!(J)!!CB#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!
+!!!!!!!)!!NX!!!%J!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!*
+-!!!")3)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#63!!!5)#!3!
+!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!Ni!!!%M!J%!!!!!!!%!!3%
+!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!*2!!!"*!)"!!!!!!!"!!%"!!!!!!!!!!!
+!!!!!!3!!!!!!!!!!!J!#8!!!!58#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!
+!!!!!!!)!!P%!!!%Q!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!*
+5!!!"*`)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#8`!!!5J#!3!
+!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!P3!!!%T!J%!!!!!!!%!!3%
+!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!*9!!!"+J)"!!!!!!!"!!%"!!!!!!!!!!!
+!!!!!!3!!!!!!!!!!!J!#9J!!!5X#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!
+!!!!!!!)!!PF!!!%X!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!*
+B!!!",3)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#@3!!!5i#!3!
+!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!PS!!!%[!J%!!!!!!!%!!3%
+!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!*E!!!"-!)"!!!!!!!"!!%"!!!!!!!!!!!
+!!!!!!3!!!!!!!!!!!J!#A!!!!6%#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!
+!!!!!!!)!!Pd!!!%b!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!*
+H!!!"-`)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#A`!!!63#!3!
+!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!Q!!!!%e!J%!!!!!!!%!!3%
+!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!*K!!!"0J)"!!!!!!!"!!%"!!!!!!!!!!!
+!!!!!!3!!!!!!!!!!!J!#BJ!!!6F#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!
+!!!!!!!)!!Q-!!!%i!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!*
+N!!!"13)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#C3!!!6S#!3!
+!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!QB!!!%l!J%!!!!!!!%!!3%
+!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!*R!!!"2!)"!!!!!!!"!!%"!!!!!!!!!!!
+!!!!!!3!!!!!!!!!!!J!#D!!!!6d#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!
+!!!!!!!)!!QN!!!%q!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!*
+U!!!"2`)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#D`!!!8!#!3!
+!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!Q`!!!&"!J%!!!!!!!%!!3%
+!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!*Y!!!"3J)"!!!!!!!"!!%"!!!!!!!!!!!
+!!!!!!3!!!!!!!!!!!J!#EJ!!!8-#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!
+!!!!!!!)!!Qm!!!&%!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!*
+`!!!"43)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#F3!!!8B#!3!
+!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!R)!!!&(!J%!!!!!!!%!!3%
+!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!*c!!!"5!)"!!!!!!!"!!%"!!!!!!!!!!!
+!!!!!!3!!!!!!!!!!!J!#G!!!!8N#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!
+!!!!!!!)!!R8!!!&+!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!*
+f!!!"5`)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#G`!!!8`#!3!
+!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!RJ!!!&0!J%!!!!!!!%!!3%
+!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!*j!!!"6J)"!!!!!!!"!!%"!!!!!!!!!!!
+!!!!!!3!!!!!!!!!!!J!#HJ!!!8m#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!
+!!!!!!!)!!RX!!!&3!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!*
+m!!!"83)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#I3!!!9)#!3!
+!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!Ri!!!&6!J%!!!!!!!%!!3%
+!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!*r!!!"9!)"!!!!!!!"!!%"!!!!!!!!!!!
+!!!!!!3!!!!!!!!!!!J!#J!!!!98#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!
+!!!!!!!)!!S%!!!&@!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!+
+#!!!"9`)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#J`!!!9J#!3!
+!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!S3!!!&C!J%!!!!!!!%!!3%
+!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!+&!!!"@J)"!!!!!!!"!!%"!!!!!!!!!!!
+!!!!!!3!!!!!!!!!!!J!#KJ!!!9X#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!
+!!!!!!!)!!SF!!!&F!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!+
+)!!!"A3)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#L3!!!9i#!3!
+!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!SS!!!&I!J%!!!!!!!%!!3%
+!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!+,!!!"B!)"!!!!!!!"!!%"!!!!!!!!!!!
+!!!!!!3!!!!!!!!!!!J!#M!!!!@%#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!
+!!!!!!!)!!Sd!!!&L!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!+
+1!!!"B`)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#M`!!!@3#!3!
+!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!T!!!!!"C3)"!!!!!!!"!!%
+"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#N3!!!@B#!3!!!!!!!3!"!3!!!!!!!!!
+!!!!!!!%!!!!!!!!!!!)!!T)!!!&R!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!
+!!!!!!!!#!!+6!!!"D!)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!
+#P!!!!@N#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!T8!!!&U!J%
+!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!+@!!!"D`)"!!!!!!!"!!%
+"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#P`!!!@`#!3!!!!!!!3!"!3!!!!!!!!!
+!!!!!!!%!!!!!!!!!!!)!!TJ!!!&Y!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!
+!!!!!!!!#!!+C!!!"EJ)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!
+#QJ!!!@m#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!TX!!!&`!J%
+!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!+F!!!"F3)"!!!!!!!"!!%
+"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#R3!!!A)#!3!!!!!!!3!"!3!!!!!!!!!
+!!!!!!!%!!!!!!!!!!!)!!Ti!!!&c!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!
+!!!!!!!!#!!+I!!!"G!)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!
+#S!!!!A8#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!U%!!!&f!J%
+!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!+L!!!"G`)"!!!!!!!"!!%
+"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#S`!!!AJ#!3!!!!!!!3!"!3!!!!!!!!!
+!!!!!!!%!!!!!!!!!!!)!!U3!!!&j!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!
+!!!!!!!!#!!+P!!!"HJ)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!
+#TJ!!!AX#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!UF!!!&m!J%
+!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!+S!!!"I3)"!!!!!!!"!!%
+"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#U3!!!Ai#!3!!!!!!!3!"!3!!!!!!!!!
+!!!!!!!%!!!!!!!!!!!)!!US!!!&r!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!
+!!!!!!!!#!!+V!!!"J!)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!
+#V!!!!B%#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!Ud!!!'#!J%
+!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!+Z!!!"J`)"!!!!!!!"!!%
+"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#V`!!!B3#!3!!!!!!!3!"!3!!!!!!!!!
+!!!!!!!%!!!!!!!!!!!)!!V!!!!'&!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!
+!!!!!!!!#!!+a!!!"KJ)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!
+#XJ!!!BF#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!V-!!!')!J%
+!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!+d!!!"L3)"!!!!!!!"!!%
+"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#Y3!!!BS#!3!!!!!!!3!"!3!!!!!!!!!
+!!!!!!!%!!!!!!!!!!!)!!VB!!!',!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!
+!!!!!!!!#!!+h!!!"M!)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!
+#Z!!!!Bd#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!VN!!!'1!J%
+!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!+k!!!"M`)"!!!!!!!"!!%
+"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#Z`!!!C!!!J%!!!!!!!%!!3%!!!!!!!!
+!!!!!!!!"!!!!!!!!!!!#!!+m!!!"N3)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!
+!!!!!!!!!!J!#[3!!!C)#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)
+!!Vi!!!'6!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!+r!!!"P!)
+"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#`!!!!C8#!3!!!!!!!3!
+"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!X%!!!'@!J%!!!!!!!%!!3%!!!!!!!!
+!!!!!!!!"!!!!!!!!!!!#!!,#!!!"P`)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!
+!!!!!!!!!!J!#``!!!CJ#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)
+!!X3!!!'C!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!,&!!!"QJ)
+"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#aJ!!!CX#!3!!!!!!!3!
+"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!XF!!!'F!J%!!!!!!!%!!3%!!!!!!!!
+!!!!!!!!"!!!!!!!!!!!#!!,)!!!"R3)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!
+!!!!!!!!!!J!#b3!!!Ci#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)
+!!XS!!!'I!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!,,!!!"S!)
+"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#c!!!!D%#!3!!!!!!!3!
+"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!Xd!!!'L!J%!!!!!!!%!!3%!!!!!!!!
+!!!!!!!!"!!!!!!!!!!!#!!,1!!!"S`)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!
+!!!!!!!!!!J!#c`!!!D3#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)
+!!Y!!!!'P!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!,4!!!"TJ)
+"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#dJ!!!DF#!3!!!!!!!3!
+"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!Y-!!!'S!J%!!!!!!!%!!3%!!!!!!!!
+!!!!!!!!"!!!!!!!!!!!#!!,8!!!"U3)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!
+!!!!!!!!!!J!#e3!!!DS#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)
+!!YB!!!'V!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!,A!!!"V!)
+"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#f!!!!Dd#!3!!!!!!!3!
+"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!YN!!!'Z!J%!!!!!!!%!!3%!!!!!!!!
+!!!!!!!!"!!!!!!!!!!!#!!,D!!!"V`)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!
+!!!!!!!!!!J!#f`!!!E!#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)
+!!Y`!!!'a!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!,G!!!"XJ)
+"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#hJ!!!E-#!3!!!!!!!3!
+"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!Ym!!!'d!J%!!!!!!!%!!3%!!!!!!!!
+!!!!!!!!"!!!!!!!!!!!#!!,J!!!"Y3)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!
+!!!!!!!!!!J!#i3!!!EB#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)
+!!Z)!!!'h!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!,M!!!"Z!)
+"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#j!!!!EN#!3!!!!!!!3!
+"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!Z8!!!'k!J%!!!!!!!%!!3%!!!!!!!!
+!!!!!!!!"!!!!!!!!!!!#!!,Q!!!"Z`)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!
+!!!!!!!!!!J!#j`!!!E`#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)
+!!ZJ!!!'p!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!,T!!!"[J)
+"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#kJ!!!Em#!3!!!!!!!3!
+"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!ZX!!!(!!J%!!!!!!!%!!3%!!!!!!!!
+!!!!!!!!"!!!!!!!!!!!#!!,X!!!"`3)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!
+!!!!!!!!!!J!#l3!!!F)#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)
+!!Zi!!!($!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!,[!!!"a!)
+"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#m!!!!F8#!3!!!!!!!3!
+"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!![%!!!('!J%!!!!!!!%!!3%!!!!!!!!
+!!!!!!!!"!!!!!!!!!!!#!!,b!!!"a`)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!
+!!!!!!!!!!J!#m`!!!FJ#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)
+!![3!!!(*!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!,e!!!"bJ)
+"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#pJ!!!FX#!3!!!!!!!3!
+"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!![F!!!(-!J%!!!!!!!%!!3%!!!!!!!!
+!!!!!!!!"!!!!!!!!!!!#!!,i!!!"c3)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!
+!!!!!!!!!!J!#q3!!!Fi#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)
+!![S!!!(2!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!,l!!!"d!)
+"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!#r!!!!G%#!3!!!!!!!3!
+"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!![d!!!(5!J%!!!!!!!%!!3%!!!!!!!!
+!!!!!!!!"!!!!!!!!!!!#!!,q!!!"d`)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!
+!!!!!!!!!!J!#r`!!!G3#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)
+!!`!!!!(9!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!-"!!!"eJ)
+"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!$!J!!!GF#!3!!!!!!!3!
+"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!`-!!!(B!J%!!!!!!!%!!3%!!!!!!!!
+!!!!!!!!"!!!!!!!!!!!#!!-%!!!"f3)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!
+!!!!!!!!!!J!$"3!!!GS#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)
+!!`B!!!(E!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!-(!!!"h!)
+"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!$#!!!!Gd#!3!!!!!!!3!
+"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!`N!!!(H!J%!!!!!!!%!!3%!!!!!!!!
+!!!!!!!!"!!!!!!!!!!!#!!-+!!!"h`)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!
+!!!!!!!!!!J!$$!!!!H%#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)
+!!`d!!!(L!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!-9!!!!+3)
+"!!!!!!!"!!%$!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!$&`!!!J3#!3!!!!!!!3!
+"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!aJ!!!)-!J%!!!!!!!%!!3%!!!!!!!!
+!!!!!!!!"!!!!!!!!!!!#!!-C!!!#$3)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!
+!!!!!!!!!!J!$'J!!!Ji#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)
+!!aX!!!)2!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!-F!!!#%!)
+"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!$(3!!!K%#!3!!!!!!!3!
+"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!ai!!!)5!J%!!!!!!!%!!3%!!!!!!!!
+!!!!!!!!"!!!!!!!!!!!#!!-I!!!#&`)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!
+!!!!!!!!!!J!$)!!!!KJ#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)
+!!b%!!!)C!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!-L!!!#'J)
+"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!$)`!!!KX#!3!!!!!!!3!
+"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!b3!!!)F!J%!!!!!!!%!!3%!!!!!!!!
+!!!!!!!!"!!!!!!!!!!!#!!-P!!!#(3)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!
+!!!!!!!!!!J!$*`!!!Km#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)
+!!bJ!!!)$!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!-T!!!#)!)
+"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!$+J!!!L%#!3!!!!!!!3!
+"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!bX!!!)L!J%!!!!!!!%!!3%!!!!!!!!
+!!!!!!!!"!!!!!!!!!!!#!!-Y!!!#*!)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!
+!!!!!!!!!!J!$,`!!!LB#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)
+!!c%!!!)S!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!-b!!!#+3)
+"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!$-`!!!LS#!3!!!!!!!3!
+"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!c3!!!)V!J%!!!!!!!%!!3%!!!!!!!!
+!!!!!!!!"!!!!!!!!!!!#!!-e!!!#,!)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!
+!!!!!!!!!!J!$0J!!!Ld#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)
+!!cF!!!)Z!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!-i!!!#,`)
+"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!$13!!!M!#!3!!!!!!!3!
+"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!cS!!!(J!J%!!!!!!!%!!3%!!!!!!!!
+!!!!!!!!"!!!!!!!!!!!#!!-m!!!"j3)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!
+!!!!!!!!!!J!$23!!!HB#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)
+!!ci!!!)*!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!-r!!!"k!)
+"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!J!$1J!!!H!#!3!!!!!!!3!
+"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!cS!!!(J!J%!!!!!!!%!!3%!!!!!!!!
+!!!!!!!!"!!!!!!!!!!!#!!-k!!!"i!)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!
+!!!!!!!!!!J!$1J!!!H!#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)
+!!cX!!!)a!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!J!!"J)!!!S#!!-9!J!!#!)
+!!!N#!!!8!J!!&3)!!"d#!!!H!J!"PJ)!!CN#!!'D!J!"Q!)!!CX#!!'F!J!"R3)
+!!Ci#!!'I!J!"S!)!!D%#!!'L!J!"S`)!!D3#!!'P!J!"TJ)!!DF#!!'S!J!"U3)
+!!DS#!!'V!J!"V!)!!Dd#!!'Z!J!"V`)!!E!#!!'a!J!"XJ)!!E-#!!'d!J!"Y3)
+!!EB#!!'h!J!"Z!)!!EN#!!'k!J!"Z`)!!E`#!!'p!J!"[J)!!Em#!!(!!J!"`3)
+!!F)#!!($!J!"a!)!!F8#!!('!J!"a`)!!FJ#!!(*!J!"bJ)!!FX#!!(-!J!"c3)
+!!Fi#!!(2!J!"d!)!!G%#!!(5!J!"d`)!!G3#!!(9!J!"eJ)!!GF#!!(B!J!"f3)
+!!GS#!!(E!J!"h!)!!Gd#!!(H!J!"h`)!!H!#!!(K!J!"iJ)!!H-#!!(N!J!"j3)
+!!HB#!!(R!J!"k!)!!HN#!!(U!J!"k`)!!H`#!!(Y!J!"lJ)!!Hm#!!(`!J!"m3)
+!!I)#!!(c!J!"p!)!!I8#!!(f!J!"p`)!!IJ#!!(j!J!"qJ)!!IX#!!(m!J!"r3)
+!!Ii#!!(r!J!#!!)!!J%#!!)#!J!#!`)!!J3#!!)&!J!#"J)!!JF#!!))!J!##3)
+!!JS#!!),!J!#$!)!!Jd#!!)1!J!#$`)!!K!#!!)4!J!#%J)!!K-#!!)8!J!#&3)
+!!KB#!!)A!J!#'!)!!KN#!!)D!J!#'`)!!K`#!!)G!J!#(J)!!Km#!!)J!J!#)3)
+!!L)#!!)M!J!#*!)!!L8#!!)Q!J!#*`)!!LJ#!!)T!J!#+J)!!LX#!!)X!J!#,3)
+!!Li#!!)[!J!#-!)!!M%#!!)b!J!#-`)!!M3#!!)e!J!#0J)!!MF#!!)i!J!#13)
+!!MS#!!)l!J!#2!)!!Md#!!)q!J!#2`)!!N!#!!*"!J!#3J)!!N-#!!*%!J!#43)
+!!NB#!!*(!J!#5!)!!NN#!!*+!J!#5`)!!N`#!!*0!J!#6J)!!Nm#!!*3!J!#83)
+!!P)#!!*6!J!#9!)!!P8#!!*@!J!#9`)!!PJ#!!*C!J!#@J)!!PX#!!*F!J!#A3)
+!!Pi#!!*I!J!#B!)!!Q%#!!*L!J!#B`)!!Q3#!!*P!J!#CJ)!!QF#!!*S!J!#D3)
+!!QS#!!*V!J!#E!)!!Qd#!!*Z!J!#E`)!!R!#!!*a!J!#FJ)!!R-#!!*d!J!#G3)
+!!RB#!!*h!J!#H!)!!RN#!!*k!J!#H`)!!R`#!!*p!J!#IJ)!!Rm#!!+!!J!#J3)
+!!S)#!!+$!J!#K!)!!S8#!!+'!J!#K`)!!SJ#!!+*!J!#LJ)!!SX#!!+-!J!#M3)
+!!Si#!!+2!J!#N!!#!!+4!J!#NJ)!!T-#!!+8!J!#P3)!!TB#!!+A!J!#Q!)!!TN
+#!!+D!J!#Q`)!!T`#!!+G!J!#RJ)!!Tm#!!+J!J!#S3)!!U)#!!+M!J!#T!)!!U8
+#!!+Q!J!#T`)!!UJ#!!+T!J!#UJ)!!UX#!!+X!J!#V3)!!Ui#!!+[!J!#X!)!!V%
+#!!+b!J!#X`)!!V3#!!+e!J!#YJ)!!VF#!!+i!J!#Z3)!!VS#!!+l!J!#[!)!!Vd
+#!!+q!J!#[`)!!X!#!!,"!J!#`J)!!X-#!!,%!J!#a3)!!XB#!!,(!J!#b!)!!XN
+#!!,+!J!#b`)!!X`#!!,0!J!#cJ)!!Xm#!!,3!J!#d3)!!Y)#!!,6!J!#e!)!!Y8
+#!!,@!J!#e`)!!YJ#!!,C!J!#fJ)!!YX#!!,F!J!#h3)!!Yi#!!,I!J!#i!)!!Z%
+#!!,L!J!#i`)!!Z3#!!,P!J!#jJ)!!ZF#!!,S!J!#k3)!!ZS#!!,V!J!#l!)!!Zd
+#!!,Z!J!#l`)!![!#!!,a!J!#mJ)!![-#!!,d!J!#p3)!![B#!!,h!J!#q!)!![N
+#!!,k!J!#q`)!![`#!!,p!J!#rJ)!![m#!!-!!J!$!3)!!`)#!!-$!J!$"!)!!`8
+#!!-'!J!$"`)!!`J#!!-*!J!$#J)!!``#!!-0!J!$&`)!!aJ#!!-C!J!$'J)!!aX
+#!!-F!J!$(3)!!ai#!!-I!J!$)!)!!b%#!!-L!J!$)`)!!b3#!!-P!J!$*`)!!bJ
+#!!-T!J!$+J)!!bX#!!-Y!J!$,`)!!c%#!!-b!J!$-`)!!c3#!!-e!J!$0J)!!cF
+#!!-i!J!$13)!!cS#!!-m!J!$23)!!ci#!!-r!!`!!3!#!!3!!!!'3!!!%J!"!!%
+k!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!3!!!2rrrrp
+!!!!!!!%!!6Sk!!"PER0cE#d`,MNZ0$S!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+"!!!!rrrrr`!!!!8!!3!"1MTTEQ0XG@4P1J!!15id1QPZBfaeC'8k!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!%!!!$rrrrr3!!!%!!"!!%k!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!3!!!2rrrrp!!!!4!!)!!6T0B@028b"6GA"`Eh*d1J!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!!!!rrrrrd!!!!B!!J!"1Ne66$S!Gf9
+bDh-J8h4KEQ4KFQ3J6'PLFQ&bH6T08d`J3cS!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%!!!$rrrrr3!!!$3!+!!"
+0B@028b!f1%XJ6'PZDf9b!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
+(CA4)9&438b!f1%X!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!%!!6S!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!%!!6T)HA"PFN0KFQ3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+#`MlJ!!!!!!!!!3!#`NI`!!)!!!!!!!!!!!!!!X)fJ!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!%!!!!k8Np29!!!!!!!!!!!!!!!!!9(8P93!!!!!!!
+!!$B)4f9d5&488&-!!!!%4NP-43)!!cj'58a&!J!$2dC*6%8#!!-p4NP-43)!!ca
+(8P93!!!!!!!!!!366h"PEP066#""F("XD@0KG'P[EJ!!!#0'58a&#`!$68C*6%8
+,!!0E4NP-43X!!cj'58a&#`!$88C*6%8,!!0$4NP-43X!!d4'58a&#`!$4dC*6%8
+,!!0*4NP-43X!!dK'58a&#`!$2dC*6%8,!!024NP-43X!!d*'58a&#`!$38C*6%8
+,!!054NP-43X!!d9'58a&#`!$4NC*6%8,!!0G4NP-43X!!dY'58a&#`!$5NC*6%8
+,!!0C4NP-43X!!eK'58a&#`!$98C*6%8,!!0H4NP-43X!!ca'58a&#`!$9dC*6%8
+,!!0D4NP-43X!!ce'58a&#`!$A%C*6%8,!!064NP-43X!!d"'58a&#`!$6%C*6%8
+,!!014NP-43X!!e"'58a&#`!$9NC*6%8,!!084e*98!!!!!!!!!!+$dp`C@j68d`
+J6'PLFQ&bH3!!!!*(8P93!!!!!!!!!#i'Bh*jF(4[!!!!*dC*6%8#!!-+4NP-43)
+!!`e'58a&!J!$1NC*6%8#!!--4NP-43)!!`P(8P93!!!!!!!!!!`%BA0Z-3!!!&G
+'58a&!J!"c%C*6%8#!!'r4NP-43)!!G0'58a&!J!"adC*6%8#!!(44NP-43)!!FT
+'58a&!J!"c8C*6%8#!!(14NP-43)!!G*'58a&!J!"cdC*6%8#!!(&4NP-43)!!F0
+'58a&!J!"b8C*6%8#!!(!4NP-43)!!FC'58a&!J!"eNC*6%8#!!(84NP-43)!!G"
+'58a&!J!"a%C*6%8#!!(94NP-43)!!ap'58a&!J!"rNC*6%8#!!)+4NP-43)!!JC
+'58a&!J!##%C*6%8#!!)(4NP-43)!!Ip'58a&!J!#"%C*6%8#!!)!4NP-43)!!JY
+'58a&!J!$'%C*6%8#!!)"4NP-43)!!J0'58a&!J!##8C*6%8#!!(V4NP-43)!!GY
+'58a&!J!"jdC*6%8#!!(F4NP-43)!!HK'58a&!J!"h8C*6%8#!!(T4NP-43)!!Gj
+'58a&!J!"kNC*6%8#!!(C4NP-43)!!H9'58a&!J!"fNC*6%8#!!(Q4NP-43)!!Ia
+'58a&!J!"r8C*6%8#!!-K4NP-43)!!IT'58a&!J!"qdC*6%8#!!-J4NP-43)!!b*
+'58a&!J!"mdC*6%8#!!(h4NP-43)!!IC'58a&!J!"p8C*6%8#!!(a4NP-43)!!I*
+'58a&!J!"ldC*6%8#!!(i4NP-43)!!I"'58a&!J!"p%C*6%8#!!(K4NP-43)!!H*
+'58a&!J!"idC*6%8#!!(N4NP-43)!!GG'58a&!J!"f%C*6%8#!!(X4NP-43)!!H"
+'58a&!J!"b%C*6%8#!!)&4NP-43)!!F&'58a&!J!#!NC*6%8#!!'p4NP-43)!!Ea
+'58a&!J!"ZdC*6%8#!!(,4NP-43)!!F*'58a&!J!$)dC*6%8#!!(I4NP-43)!!Ej
+'58a&!J!"l8C*6%8#!!(Z4NP-43)!!IP(8P93!!!!!!!!!!d#BQB!!!!&4NP-43)
+!!K"'58a&!J!#$8C*6%8#!!)14NP-43)!!Ja'58a&!J!#$dG599!!!!!!!!!!$J0
+LD@m!!!!14NP-43)!!K*'58a&!J!$*%C*6%8#!!)44NP-43)!!b9'58a&!J!$+8C
+*6%8#!!-R4NP-43)!!bK'58a&!J!#%dC*6%8#!!-U4NP-43)!!aG'58a&!J!$(NC
+*6%8#!!-[4NP-43)!!bY'58a&!J!$,8G599!!!!!!!!!!$`*LEJ!!!"0'58a&!J!
+#&%C*6%8#!!)A4NP-43)!!KP'58a&!J!#(%C*6%8#!!)I4NP-43)!!L&'58a&!J!
+#)NC*6%8#!!)N4NP-43)!!LC'58a&!J!#&NC*6%8#!!)E4NP-43)!!L"'58a&!J!
+#'%C*6%8#!!)P4NP-43)!!K9'58a&!J!#)dC*6%8#!!)G4NP-43)!!Kj'58a&!J!
+#'NG599!!!!!!!!!!%!CLG@CQCA)!!!!#4NP-43)!!LG'58a&!J!#+%G599!!!!!
+!!!!!%34MBA0d!!!!"8C*6%8#!!)Y4NP-43)!!LT'58a&!J!#+dC*6%8#!!)T4NP
+-43)!!La(8P93!!!!!!!!!")%BfpYF!!!!!0'58a&!J!#,NC*6%8#!!)[4NP-43)
+!!M"(8P93!!!!!!!!!"-%BfpZCJ!!!!*'58a&!J!#-8C*6%8#!!)b4e*98!!!!!!
+!!!!8!f4PF`!!!"T'58a&!J!#-dC*6%8#!!)d4NP-43)!!MC'58a&!J!#0dC*6%8
+#!!)j4NP-43)!!MT'58a&!J!#2%C*6%8#!!-a4NP-43)!!Me'58a&!J!#3%C*6%8
+#!!*"4NP-43)!!N*'58a&!J!#3dC*6%8#!!*%4NP-43)!!NC'58a&!J!#4dC*6%8
+#!!*)4NP-43)!!MK'58a&!J!#2NC*6%8#!!*&4NP-43)!!NY'58a&!J!#58C*6%8
+#!!)e4NP-43)!!Mp'58a&!J!#5NC*6%8#!!)l4e*98!!!!!!!!!!9!Q4S!!!!"8C
+*6%8#!!*14NP-43)!!Np'58a&!J!#8%C*6%8#!!*-4NP-43)!!Ne(8P93!!!!!!!
+!!"B$C(0K!!!!#%C*6%8#!!*64NP-43)!!P4'58a&!J!#98C*6%8#!!*44NP-43)
+!!PG'58a&!J!#9NC*6%8#!!*54NP-43)!!aP(8P93!!!!!!!!!"F$CA*b!!!!!dC
+*6%8#!!*B4NP-43)!!PP'58a&!J!#@NG599!!!!!!!!!!'!0PGR!!!!!r4NP-43)
+!!Q&'58a&!J!#B%C*6%8#!!*L4NP-43)!!Q4'58a&!J!#H8C*6%8#!!*V4NP-43)
+!!R*'58a&!J!#J8C*6%8#!!*k4NP-43)!!Qa'58a&!J!#FdC*6%8#!!+#4NP-43)
+!!RC'58a&!J!#D%C*6%8#!!+&4NP-43)!!T!!4NP-43)!!Qp'58a&!J!#INC*6%8
+#!!+'4NP-43)!!RY'58a&!J!#E8C*6%8#!!*d4NP-43)!!S0'58a&!J!#GdC*6%8
+#!!*T4NP-43)!!R"'58a&!J!#IdC*6%8#!!*i4NP-43)!!QT'58a&!J!#F8C*6%8
+#!!+!4NP-43)!!Ra'58a&!J!#ENC*6%8#!!*e4NP-43)!!S4'58a&!J!#M%C*6%8
+#!!+*4NP-43)!!ST'58a&!J!#MNC*6%8#!!+24NP-43)!!SG'58a&!J!#L%C*6%8
+#!!+,4NP-43)!!Se'58a&!J!#P%C*6%8#!!+94NP-43)!!TC'58a&!J!#PdC*6%8
+#!!+64NP-43)!!T*'58a&!J!#N8C*6%8#!!*G4NP-43)!!PY'58a&!J!#A%C*6%8
+#!!*M4NP-43)!!Re'58a&!J!#AdC*6%8#!!*P4NP-43)!!Pj'58a&!J!#CdC*6%8
+#!!*Q4NP-43)!!c*'58a&!J!$-dG599!!!!!!!!!!'34SE@&M!!!!!8C*6%8#!!+
+B4e*98!!!!!!!!!!D"'PNC@%!!!!&4NP-43)!!TP'58a&!J!#QNC*6%8#!!+F4NP
+-43)!!TY'58a&!J!#R8G599!!!!!!!!!!'`9XD'&cD!!!!!*'58a&!J!#RNC*6%8
+#!!+I4e*98!!!!!!!!!!F!feN-J!!!!*'58a&!J!#S%C*6%8#!!+K4e*98!!!!!!
+!!!!G!feN03!!!!*'58a&!J!#SNC*6%8#!!+M4e*98!!!!!!!!!!H"'eNBc)!!!!
+#4NP-43)!!U4'58a&!J!#T8G599!!!!!!!!!!(`G[BQTPBh4c!!!!"%C*6%8#!!+
+T4NP-43)!!UC'58a&!J!#U%C*6%8#!!+R4e*98!!!!!!!!!!J!h"PE3!!!!C'58a
+&!J!#VdC*6%8#!!+Z4NP-43)!!Ua'58a&!J!#V8C*6%8#!!+U4NP-43)!!UY(8P9
+3!!!!!!!!!#%'F'YMFc%b!!!!%%C*6%8#!!+`4NP-43)!!V&'58a&!J!#XNC*6%8
+#!!+c4NP-43)!!V4'58a&!J!#Y8C*6%8#!!+f4NP-43)!!VG'58a&!J!#Z%C*6%8
+#!!+j4NP-43)!!VT'58a&!J!#ZdC*6%8#!!+m4NP-43)!!Ve'58a&!J!$0%C*6%8
+#!!+q4e*98!!!!!!!!!!L"A"VBh-h!!!!"NC*6%8#!!,!4NP-43)!!X&'58a&!J!
+#[dC*6%8#!!-h4NP-43)!!c9'58a&!J!$0NG599!!!!!!!!!!)`4bB@jN!!!!!dC
+*6%8#!!,#4NP-43)!!X0'58a&!J!#a%G599!!!!!!!!!!*!0bBc)!!!!&4NP-43)
+!!XK'58a&!J!#b8C*6%8#!!,(4NP-43)!!X9'58a&!J!#aNG599!!!!!!!!!!*30
+bBc3!!!!#4NP-43)!!XY'58a&!J!#bNG599!!!!!!!!!!*J0bBc8!!!!&4NP-43)
+!!Y"'58a&!J!#cNC*6%8#!!,24NP-43)!!Xa'58a&!J!#c8G599!!!!!!!!!!*`C
+bDA"PE@3!!!!#4NP-43)!!Y&'58a&!J!#dNG599!!!!!!!!!!+!0bFf%!!!!-4NP
+-43)!!Y0'58a&!J!#e8C*6%8#!!,@4NP-43)!!YY'58a&!J!#fNC*6%8#!!,84NP
+-43)!!YP'58a&!J!#h%C*6%8#!!,A4NP-43)!!YK'58a&!J!$1%C*6%8#!!-j4e*
+98!!!!!!!!!!T!h0SB3!!!!4'58a&!J!#hdC*6%8#!!,G4NP-43)!!Z"'58a&!J!
+#hNG599!!!!!!!!!!+J9cG'&MD`!!!!&'58a&!J!#i8G599!!!!!!!!!!+`CdH(4
+IC')!!!!"4NP-43)!!Z*(8P93!!!!!!!!!#`%H$8`13!!!"9'58a&!J!#kNC*6%8
+#!!,T4NP-43)!!Zp'58a&!J!#k%C*6%8#!!,Z4NP-43)!!["'58a&!J!$'NC*6%8
+#!!,d4NP-43)!![&'58a&!J!#jNC*6%8#!!,V4NP-43)!!Z9'58a&!J!#mdC*6%8
+#!!,X4NP-43)!!ZG'58a&!J!#l8C*6%8#!!,e4NP-43)!![*'58a&!J!$'dC*6%8
+#!!,M4NP-43)!!Z4(8P93!!!!!!!!!#d'H$8`1ABc!!!!&8C*6%8#!!,j4NP-43)
+!![T'58a&!J!#qdC*6%8#!!,r4NP-43)!!`&'58a&!J!$!dC*6%8#!!-&4NP-43)
+!!`K'58a&!J!#pNC*6%8#!!-!4NP-43)!![K'58a&!J!$"NC*6%8#!!,h4NP-43)
+!!`4'58a&!J!$!NC*6%8#!!,q4NP-43)!!`G'58a&!J!#r%C*6%8#!!,p4NP-43)
+!!aa'58a&!J!$(8G599!!!!!!!!!!#`0cFf`!!!!M4NP-43)!!D&'58a&!J!"SdC
+*6%8#!!'H4NP-43)!!D"'58a&!J!"RdC*6%8#!!'L4NP-43)!!DK'58a&!J!"UNC
+*6%8#!!'P4NP-43)!!DG'58a&!J!"TNC*6%8#!!'T4NP-43)!!D4'58a&!J!"QdC
+*6%8#!!'G4NP-43)!!CP'58a&!J!"QNC*6%8#!!'F4NP-43)!!EP'58a&!J!"ZNC
+*6%8#!!'f4NP-43)!!EK'58a&!J!"YdC*6%8#!!'a4NP-43)!!E"'58a&!J!"V8C
+*6%8#!!'c4NP-43)!!Dj'58a&!J!"Y%C*6%8#!!'b4NP-43)!!Da'58a&!J!"Y8C
+*6%8#!!'V4NP-43)!!CK'58a&!J!"VdG599!!!!!!!!!!!Je0B@-J6'PLFQ&bD@9
+c!!!!!NG599!!!!!!!!!!03038%-!!!!)4NP-43)!!!T'58a&!J!!#%C*6%8#!!!
+*4NP-43)!!CC'58a&!J!!(NC*6%8#!!!G4NP-43)!!"9'58a&!J!!&%G599!!!!!
+!!!!!13-f1'X!!!!&4NP-43`!!d*'58a&$!!$3dC*6%8-!!0%4NP-43`!!d9'58a
+&$!!$4NG599!!!!!!!!!!!3j"6P0*)%aTBR*KFQPPF`!!!!*(8P93!!!!!!!!!$F
+$8&"$!!!!!NC*6%8#!!!'4NP-43)!!a9(8P93!!!!!!!!!$J$0MKV!!!!!NC*6%8
+-!!0!4NP-43`!!d%!!0JHS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!X!!cN!!!)`!J%!!!!!!!%!!3%
+!!!!!!!!!!!!!!!!"!!!!!!!!!!!,!!-k!!!"i!)"!!!!!!!"!!%"!!!!!!!!!!!
+!!!!!!3!!!!!!!!!!#`!$1J!!!H!#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!
+!!!!!!!X!!cS!!!(J!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!,!!-
+k!!!"i!)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!#`!$1J!!!H!#!3!
+!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!!!!!!!!)!!cS!!!(J!J%!!!!!!!%!!3%
+!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!-k!!!"i!)"!!!!!!!"!!%"!!!!!!!!!!!
+!!!!!!3!!!!!!!!!!!J!$1J!!!H!#!3!!!!!!!3!"!3!!!!!!!!!!!!!!!!%!!!!
+!!!!!!!)!!cS!!!(J!J%!!!!!!!%!!3%!!!!!!!!!!!!!!!!"!!!!!!!!!!!#!!-
+l!!!#-3)"!!!!!!!"!!%"!!!!!!!!!!!!!!!!!3!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-!!%!!J!%!!!!"N!!!")!!3!
+"1J!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%!!!$rrrr
+r3!!!!!!"!!%k1J!!C@jcFf`Y-#ij,M3k!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!3!!!2rrrrm!!!!&!!%!!6SkD@jME(9NC6S!!$NZ0$TTEQ0XG@4P1J!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!"!!!!rrrrrd!!!"!!!3!"1J!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!%!!!$rrrrr3!!!%3!#!!%k6@&M6e-J8h9`F'pbG$S
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!3!!!2rrrrp!!!!'!!)!!6T08d`k!(G
+PFQYc)&0dB@jNBA*N)%aTBR*KFRNk690-)%-k!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!!!!rrrrrd!!!!d!!J!
+)6QpZC3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!de08()!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!3!!!!&4&@&3ZE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%C
+XCAJJ8(*PF(*[Bf9cFfpb!!!!!!!!!!!!!!!!!!!!J!!!!&4&@&3ZH3!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%*TFfpZ)&"bCA"bEf0PFh0[FJ!!!!!!!!!
+!!!!!!!!!J!!!!%TKGQ%J6'PZDf9b!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"C"8&"
+-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!'!!!!""F("X!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'!!!!"$6ia
+V!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"09b"+BACK!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!"$E(0c!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!"09b"+BACK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"+DR*
+Q,QTbCJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!"!!!!"09d0%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'!!!!"58e*
+$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!'!!!!"849K8,Q*S!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!"#B@aXEfpZ)%KPE(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"849K
+8,QGM!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"(B@eP3fpNC5"$EfjfCA*
+dCA)!!!!!!!!!!!!!!!!!!%!!!!"849K8,QKdE@`!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"849K
+8,QTKGQ%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"09b"+BACK!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!"849K8,Q`!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!"'E'9i)&"bCA"bEf0PFh0[FJ!!!!!!!!!!!!!!!!!!!)!!!!"849K
+8,QeQ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!"849K8,R)!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!"5CAS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"849K
+8,RN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"#DA0[EL"3FQ9`FQpMCA0
+cEh)!!!!!!!!!!!!!!!!!!)!!!!"D59!J!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!"09b"+BACK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%!!!!"DDA"
+'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"09b"+BACK!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!"NEf0e!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'!!!!"bFh*
+M!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!'!!!!!!!!!!,Q0XBA0c!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!"09b"+BACK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!,QTKFJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!%!!!!!!!!!!,RTTF!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!"09b"+BACK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"0B@0
+28b!f1%XJ6'PZDf9b!!!!!!!!!!!!!!!!!!!!!!!J39"36!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!"J!!!!3A"`E!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"J!!!!68e-3J!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!6'PL)%PYF'pbG#!f1%X!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!69"-4J!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!6'PL)%P
+YF'pbG#!f1%X!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69G$4!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!"J!!!!6d*+)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69"A)%P
+YF'pbG#!f1%X!!!!!!!!!!!!!!!!!!!!!!!!!!!!!8%a[BJ!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!"J!!!!8P053`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"J!!!!9%9B9#jLD!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!3Q&XE'p[EL")C@a`!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!9%9B9#jM!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69FJ3bp
+$+bXJ0MK,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!9%9B9#jM+bX!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!69FJ3bp$+bXJ0MK,!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!9%9B9#jMB`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69FJ3bp
+$+bXJ0MK,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!9%9B9#jMF!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!69FJ3bp$+bXJ0MK,!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!9%9B9#jMF(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69FJ3bp
+$+bXJ0MK,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!9%9B9#jPH(!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!9%9B9#jRB`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!4f&YC80
+[C'8J3fpZGQ9bG'9b!!!!!!!!!!!!!!!!!!"!!!!!9%9B9#jS!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!69FJ3bp$+bXJ0MK,!!!!!!!!!!!!!!!!!!!!!!!
+!!!!3!!!!9%9B9#jX!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!4QaPH#"
+3FQ9`FQpMCA0cEh)!!!!!!!!!!!!!!!!!!!#!!!!!9%9B9#j`!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!69FJ8'&cBf&X)$Bi5`!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!9%9B9#j`BA-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69FJ8'&
+cBf&X)$Bi5`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!9%9B9#j`BfJ!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!69FJ3bp$+bXJ0MK,!!!!!!!!!!!!!!!!!!!!!!!
+!!!#!!!!!9%9B9#j`BfJV+`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!69FJ3bp
+$+bXJ0MK,!!!!!!!!!!!!!!!!!!!!!!!!!!#!!!!!9%9B9#j`F(8!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!69FJ8'&cBf&X)$Bi5`!!!!!!!!!!!!!!!!!!!!!
+!!!#!!!!!9%9B9#jb!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!8Q9k!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!9%9B9#jcC@F!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!9%9B9#jj!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!3QPcEfi
+J8(*PF(*[Bf9cFfpb!!!!!!!!!!!!!!!!!!#!!!!!C'pMG3!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!"J!!!!FR0bB`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"J!!!!FfKXBJ!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!8%9')%PYF'pbG#!f1%X!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!Fh4eBJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!8%9')%P
+YF'pbG#!f1%X!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#jNEf-!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!"3!!!!!!!!!#jbFh*M!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"J!!!!6@&M6e-J6@9bCf8!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!#N&38%`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!B!!!!%&`F'`!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!B!!!!&*68N-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!B!!!!&4&@&3ZBQJ
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%*KE'a[EfiJ5'9XF!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!&4&@&3ZCf-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!%GKE@9$Ef4P)%0[ERCPFR4PFJ!!!!!!!!!!!!!!!!!!3!!!!&4&@&3ZE!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%CXCAJJ8(*PF(*[Bf9cFfpb!!!
+!!!!!!!!!!!!!!!!!J!!!!&4&@&3ZFJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!&*PHJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&4&@&3ZH3!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%*TFfpZ)&"bCA"bEf0PFh0[FJ!
+!!!!!!!!!!!!!!!!!J!!!!(*cFQ-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!B!!!!(0SE')!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!%eKBdp6)&"33b"-D@jVCA)!!!!!!!!!!!!!!!!!!!!
+!!"j"8&"-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'!!!!""F("X!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'!
+!!!"068a#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"-D@)J5@e`Eh*
+d)&"33`!!!!!!!!!!!!!!!!!!!!!!!!!!!!"08%a'!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!"-D@)J5@e`Eh*d)&"33`!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!"09d0%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'!!!!"58e*$!!!!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'!
+!!!"849K8,Q*S!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"#B@aXEfpZ)%K
+PE(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"849K8,Q-!!!!!!!!!!!!!!!!!!!!
+!!!!!!!!!!!!!!!!!!!"09b"$,d-V+b"38%-!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!!"84