[Libreoffice-commits] core.git: 7 commits - sw/source writerperfect/CppunitTest_writerperfect_draw.mk writerperfect/CppunitTest_writerperfect_impress.mk writerperfect/CppunitTest_writerperfect_writer.mk writerperfect/Module_writerperfect.mk writerperfect/qa writerperfect/StaticLibrary_writerperfect_importtestbase.mk

David Tardon dtardon at redhat.com
Sun Mar 30 10:08:56 PDT 2014


 sw/source/core/text/redlnitr.cxx                               |    2 
 writerperfect/CppunitTest_writerperfect_draw.mk                |   46 
 writerperfect/CppunitTest_writerperfect_impress.mk             |    6 
 writerperfect/CppunitTest_writerperfect_writer.mk              |   46 
 writerperfect/Module_writerperfect.mk                          |    8 
 writerperfect/StaticLibrary_writerperfect_importtestbase.mk    |   35 
 writerperfect/qa/unit/WpftDrawFilterTest.cxx                   |   48 
 writerperfect/qa/unit/WpftImportTestBase.cxx                   |  190 +
 writerperfect/qa/unit/WpftImportTestBase.hxx                   |   67 
 writerperfect/qa/unit/WpftImpressFilterTest.cxx                |   43 
 writerperfect/qa/unit/WpftWriterFilterTest.cxx                 |   47 
 writerperfect/qa/unit/data/libabw/pass/hello.abw               |   32 
 writerperfect/qa/unit/data/libabw/pass/hello.zabw              |binary
 writerperfect/qa/unit/data/libe-book/fail/TCR.tcr              |binary
 writerperfect/qa/unit/data/libe-book/pass/FictionBook2.fb2     |   26 
 writerperfect/qa/unit/data/libe-book/pass/FictionBook2.fb2.zip |binary
 writerperfect/qa/unit/data/libe-book/pass/PalmDOC.pdb          |binary
 writerperfect/qa/unit/data/libe-book/pass/Plucker.pdb          |binary
 writerperfect/qa/unit/data/libmwaw/fail/ClarisWorks_6.0.cwk    |binary
 writerperfect/qa/unit/data/libmwaw/fail/HanMac_2.0.4J.hqx      |  178 +
 writerperfect/qa/unit/data/libmwaw/pass/BeagleWorks_v1.hqx     |   49 
 writerperfect/qa/unit/data/libmwaw/pass/ClarisWorks_1.0        |binary
 writerperfect/qa/unit/data/libmwaw/pass/ClarisWorks_2.0        |binary
 writerperfect/qa/unit/data/libmwaw/pass/DOCMaker_4.hqx         | 1496 ++++++++++
 writerperfect/qa/unit/data/libmwaw/pass/FullWrite_1.0          |binary
 writerperfect/qa/unit/data/libmwaw/pass/FullWrite_2.0          |binary
 writerperfect/qa/unit/data/libmwaw/pass/GreatWorks_v2.hqx      |  180 +
 writerperfect/qa/unit/data/libmwaw/pass/HanMac_2.0.6K.hqx      |   94 
 writerperfect/qa/unit/data/libmwaw/pass/MacWrite_4.5           |binary
 writerperfect/qa/unit/data/libmwaw/pass/MacWrite_Pro1.0        |binary
 writerperfect/qa/unit/data/libmwaw/pass/MarinerWrite_1.6L.hqx  |  222 +
 writerperfect/qa/unit/data/libmwaw/pass/MarinerWrite_3.5.hqx   |binary
 writerperfect/qa/unit/data/libmwaw/pass/MicrosoftWord_1.0      |binary
 writerperfect/qa/unit/data/libmwaw/pass/MicrosoftWord_3.0      |binary
 writerperfect/qa/unit/data/libmwaw/pass/MicrosoftWord_5.0      |binary
 writerperfect/qa/unit/data/libmwaw/pass/MicrosoftWorks_1.0     |binary
 writerperfect/qa/unit/data/libmwaw/pass/MicrosoftWorks_2.0     |binary
 writerperfect/qa/unit/data/libmwaw/pass/MindWrite_2.1          |binary
 writerperfect/qa/unit/data/libmwaw/pass/More.hqx               |  123 
 writerperfect/qa/unit/data/libmwaw/pass/NisusWriter_4.0.hqx    |  206 +
 writerperfect/qa/unit/data/libmwaw/pass/WriteNow_2.0           |binary
 writerperfect/qa/unit/data/libmwaw/pass/WriteNow_4.0           |binary
 writerperfect/qa/unit/data/libmwaw/pass/WriterPlus             |binary
 writerperfect/qa/unit/data/libwpd/pass/WP1.wpd                 |binary
 writerperfect/qa/unit/data/libwpd/pass/WP3.wpd                 |binary
 writerperfect/qa/unit/data/libwpd/pass/WP4.wp                  |binary
 writerperfect/qa/unit/data/libwpd/pass/WP5.wp                  |binary
 writerperfect/qa/unit/data/libwpd/pass/WP6.wpd                 |binary
 writerperfect/qa/unit/data/libwpg/pass/WPG1.wpg                |binary
 writerperfect/qa/unit/wpftimpress.cxx                          |  129 
 50 files changed, 3142 insertions(+), 131 deletions(-)

New commits:
commit b05bf3e503b68f94235a8166601f07963415a904
Author: David Tardon <dtardon at redhat.com>
Date:   Sun Mar 30 17:41:06 2014 +0200

    close the opened document correctly
    
    Change-Id: I457d6a8f547e6b01b83db2d44e32fdcbe2fd718e

diff --git a/writerperfect/qa/unit/WpftImportTestBase.cxx b/writerperfect/qa/unit/WpftImportTestBase.cxx
index 53e41ab..773fa3b 100644
--- a/writerperfect/qa/unit/WpftImportTestBase.cxx
+++ b/writerperfect/qa/unit/WpftImportTestBase.cxx
@@ -15,10 +15,14 @@
 #include <com/sun/star/document/XImporter.hpp>
 #include <com/sun/star/document/XTypeDetection.hpp>
 #include <com/sun/star/frame/theDesktop.hpp>
+#include <com/sun/star/frame/XController.hpp>
+#include <com/sun/star/frame/XFrame.hpp>
+#include <com/sun/star/frame/XModel.hpp>
 #include <com/sun/star/io/XInputStream.hpp>
 #include <com/sun/star/lang/IllegalArgumentException.hpp>
 #include <com/sun/star/lang/XComponent.hpp>
 #include <com/sun/star/ucb/SimpleFileAccess.hpp>
+#include <com/sun/star/util/XCloseable.hpp>
 
 #include "WpftImportTestBase.hxx"
 
@@ -30,6 +34,7 @@ namespace io = com::sun::star::io;
 namespace lang = com::sun::star::lang;
 namespace ucb = com::sun::star::ucb;
 namespace uno = com::sun::star::uno;
+namespace util = com::sun::star::util;
 
 namespace writerperfect
 {
@@ -70,12 +75,14 @@ void WpftImportTestBase::tearDown()
 bool WpftImportTestBase::load(const OUString &, const OUString &rURL, const OUString &,
     unsigned int, unsigned int, unsigned int)
 {
+    // create an empty frame
     const uno::Reference<lang::XComponent> xDoc(
             m_xDesktop->loadComponentFromURL(m_aFactoryURL, "_blank", 0, uno::Sequence<beans::PropertyValue>()),
             uno::UNO_QUERY_THROW);
 
     bool result = false;
 
+    // try to import the document (and load it into the prepared frame)
     try
     {
         const uno::Reference<document::XImporter> xImporter(m_xFilter, uno::UNO_QUERY_THROW);
@@ -105,7 +112,39 @@ bool WpftImportTestBase::load(const OUString &, const OUString &rURL, const OUSt
         // ignore
     }
 
-    xDoc->dispose();
+    // close the opened document
+    uno::Reference<util::XCloseable> xCloseable(xDoc, uno::UNO_QUERY);
+
+    if (!xCloseable.is())
+    {
+        uno::Reference<frame::XController> xController(xDoc, uno::UNO_QUERY);
+
+        if (!xController.is())
+        {
+            const uno::Reference<frame::XModel> xModel(xDoc, uno::UNO_QUERY);
+            if (xModel.is())
+                xController = xModel->getCurrentController();
+        }
+
+        if (xController.is())
+        {
+            const uno::Reference<frame::XFrame> xFrame = xController->getFrame();
+            if (xFrame.is())
+                xCloseable.set(xFrame, uno::UNO_QUERY);
+        }
+    }
+
+    try
+    {
+        if (xCloseable.is())
+            xCloseable->close(true);
+        else
+            xDoc->dispose();
+    }
+    catch (const uno::Exception &)
+    {
+        // ignore
+    }
 
     return result;
 }
commit a4a723c0af8859c9c01cd32d5b2df84e6328024a
Author: David Tardon <dtardon at redhat.com>
Date:   Sun Mar 30 16:19:39 2014 +0200

    sync cxx file names with class names
    
    Change-Id: I97a6751520b90089caddd276a3a881908c47c67d

diff --git a/writerperfect/CppunitTest_writerperfect_draw.mk b/writerperfect/CppunitTest_writerperfect_draw.mk
index 70edb12..de02284 100644
--- a/writerperfect/CppunitTest_writerperfect_draw.mk
+++ b/writerperfect/CppunitTest_writerperfect_draw.mk
@@ -40,7 +40,7 @@ $(eval $(call gb_CppunitTest_use_rdb,writerperfect_draw,services))
 $(eval $(call gb_CppunitTest_use_configuration,writerperfect_draw))
 
 $(eval $(call gb_CppunitTest_add_exception_objects,writerperfect_draw,\
-	writerperfect/qa/unit/wpftdraw \
+	writerperfect/qa/unit/WpftDrawFilterTest \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/writerperfect/CppunitTest_writerperfect_impress.mk b/writerperfect/CppunitTest_writerperfect_impress.mk
index 57f9cee..bc361f7 100644
--- a/writerperfect/CppunitTest_writerperfect_impress.mk
+++ b/writerperfect/CppunitTest_writerperfect_impress.mk
@@ -40,7 +40,7 @@ $(eval $(call gb_CppunitTest_use_rdb,writerperfect_impress,services))
 $(eval $(call gb_CppunitTest_use_configuration,writerperfect_impress))
 
 $(eval $(call gb_CppunitTest_add_exception_objects,writerperfect_impress,\
-	writerperfect/qa/unit/wpftimpress \
+	writerperfect/qa/unit/WpftImpressFilterTest \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/writerperfect/CppunitTest_writerperfect_writer.mk b/writerperfect/CppunitTest_writerperfect_writer.mk
index b3bdaf5..8f2ca64 100644
--- a/writerperfect/CppunitTest_writerperfect_writer.mk
+++ b/writerperfect/CppunitTest_writerperfect_writer.mk
@@ -40,7 +40,7 @@ $(eval $(call gb_CppunitTest_use_rdb,writerperfect_writer,services))
 $(eval $(call gb_CppunitTest_use_configuration,writerperfect_writer))
 
 $(eval $(call gb_CppunitTest_add_exception_objects,writerperfect_writer,\
-	writerperfect/qa/unit/wpftwriter \
+	writerperfect/qa/unit/WpftWriterFilterTest \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/writerperfect/qa/unit/wpftdraw.cxx b/writerperfect/qa/unit/WpftDrawFilterTest.cxx
similarity index 100%
rename from writerperfect/qa/unit/wpftdraw.cxx
rename to writerperfect/qa/unit/WpftDrawFilterTest.cxx
diff --git a/writerperfect/qa/unit/wpftimpress.cxx b/writerperfect/qa/unit/WpftImpressFilterTest.cxx
similarity index 100%
rename from writerperfect/qa/unit/wpftimpress.cxx
rename to writerperfect/qa/unit/WpftImpressFilterTest.cxx
diff --git a/writerperfect/qa/unit/wpftwriter.cxx b/writerperfect/qa/unit/WpftWriterFilterTest.cxx
similarity index 100%
rename from writerperfect/qa/unit/wpftwriter.cxx
rename to writerperfect/qa/unit/WpftWriterFilterTest.cxx
commit 4af1bcf0bda75a0b9e8db8a2080e65d8f134b34a
Author: David Tardon <dtardon at redhat.com>
Date:   Sun Mar 30 16:16:46 2014 +0200

    reduce the amount of copypasta
    
    Change-Id: I19b75b29da91ba1057f7da786da18fb246d97598

diff --git a/writerperfect/CppunitTest_writerperfect_draw.mk b/writerperfect/CppunitTest_writerperfect_draw.mk
index d724a58..70edb12 100644
--- a/writerperfect/CppunitTest_writerperfect_draw.mk
+++ b/writerperfect/CppunitTest_writerperfect_draw.mk
@@ -29,6 +29,10 @@ $(eval $(call gb_CppunitTest_use_libraries,writerperfect_draw,\
 	$(gb_UWINAPI) \
 ))
 
+$(eval $(call gb_CppunitTest_use_static_libraries,writerperfect_draw,\
+	writerperfect_importtestbase \
+))
+
 $(eval $(call gb_CppunitTest_use_ure,writerperfect_draw))
 
 $(eval $(call gb_CppunitTest_use_rdb,writerperfect_draw,services))
diff --git a/writerperfect/CppunitTest_writerperfect_impress.mk b/writerperfect/CppunitTest_writerperfect_impress.mk
index 2505353..57f9cee 100644
--- a/writerperfect/CppunitTest_writerperfect_impress.mk
+++ b/writerperfect/CppunitTest_writerperfect_impress.mk
@@ -29,6 +29,10 @@ $(eval $(call gb_CppunitTest_use_libraries,writerperfect_impress,\
 	$(gb_UWINAPI) \
 ))
 
+$(eval $(call gb_CppunitTest_use_static_libraries,writerperfect_impress,\
+	writerperfect_importtestbase \
+))
+
 $(eval $(call gb_CppunitTest_use_ure,writerperfect_impress))
 
 $(eval $(call gb_CppunitTest_use_rdb,writerperfect_impress,services))
diff --git a/writerperfect/CppunitTest_writerperfect_writer.mk b/writerperfect/CppunitTest_writerperfect_writer.mk
index 143b41c..b3bdaf5 100644
--- a/writerperfect/CppunitTest_writerperfect_writer.mk
+++ b/writerperfect/CppunitTest_writerperfect_writer.mk
@@ -29,6 +29,10 @@ $(eval $(call gb_CppunitTest_use_libraries,writerperfect_writer,\
 	$(gb_UWINAPI) \
 ))
 
+$(eval $(call gb_CppunitTest_use_static_libraries,writerperfect_writer,\
+	writerperfect_importtestbase \
+))
+
 $(eval $(call gb_CppunitTest_use_ure,writerperfect_writer))
 
 $(eval $(call gb_CppunitTest_use_rdb,writerperfect_writer,services))
diff --git a/writerperfect/Module_writerperfect.mk b/writerperfect/Module_writerperfect.mk
index 2995e8c..423329d 100644
--- a/writerperfect/Module_writerperfect.mk
+++ b/writerperfect/Module_writerperfect.mk
@@ -34,6 +34,7 @@ $(eval $(call gb_Module_add_slowcheck_targets,writerperfect,\
 	CppunitTest_writerperfect_draw \
 	CppunitTest_writerperfect_impress \
 	CppunitTest_writerperfect_writer \
+	StaticLibrary_writerperfect_importtestbase \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/writerperfect/StaticLibrary_writerperfect_importtestbase.mk b/writerperfect/StaticLibrary_writerperfect_importtestbase.mk
new file mode 100644
index 0000000..172ca40c
--- /dev/null
+++ b/writerperfect/StaticLibrary_writerperfect_importtestbase.mk
@@ -0,0 +1,35 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_StaticLibrary_StaticLibrary,writerperfect_importtestbase))
+
+$(eval $(call gb_StaticLibrary_set_include,writerperfect_importtestbase,\
+    -I$(SRCDIR)/writerperfect/qa/unit \
+    $$(INCLUDE) \
+))
+
+$(eval $(call gb_StatiLibrary_use_externals,writerperfect_importtestbase,\
+	boost_headers \
+    cppunit \
+))
+
+$(eval $(call gb_StaticLibrary_use_sdk_api,writerperfect_importtestbase))
+
+$(eval $(call gb_StaticLibrary_use_libraries,writerperfect_importtestbase,\
+    cppu \
+    sal \
+    test \
+    unotest \
+))
+
+$(eval $(call gb_StaticLibrary_add_exception_objects,writerperfect_importtestbase,\
+    writerperfect/qa/unit/WpftImportTestBase \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/writerperfect/qa/unit/WpftImportTestBase.cxx b/writerperfect/qa/unit/WpftImportTestBase.cxx
new file mode 100644
index 0000000..53e41ab
--- /dev/null
+++ b/writerperfect/qa/unit/WpftImportTestBase.cxx
@@ -0,0 +1,151 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/container/NoSuchElementException.hpp>
+#include <com/sun/star/container/XNameAccess.hpp>
+#include <com/sun/star/document/XExtendedFilterDetection.hpp>
+#include <com/sun/star/document/XFilter.hpp>
+#include <com/sun/star/document/XImporter.hpp>
+#include <com/sun/star/document/XTypeDetection.hpp>
+#include <com/sun/star/frame/theDesktop.hpp>
+#include <com/sun/star/io/XInputStream.hpp>
+#include <com/sun/star/lang/IllegalArgumentException.hpp>
+#include <com/sun/star/lang/XComponent.hpp>
+#include <com/sun/star/ucb/SimpleFileAccess.hpp>
+
+#include "WpftImportTestBase.hxx"
+
+namespace beans = com::sun::star::beans;
+namespace container = com::sun::star::container;
+namespace document = com::sun::star::document;
+namespace frame = com::sun::star::frame;
+namespace io = com::sun::star::io;
+namespace lang = com::sun::star::lang;
+namespace ucb = com::sun::star::ucb;
+namespace uno = com::sun::star::uno;
+
+namespace writerperfect
+{
+namespace test
+{
+
+WpftImportTestBase::WpftImportTestBase(const rtl::OUString &rFactoryURL)
+    : ::test::FiltersTest()
+    , ::test::BootstrapFixture()
+    , m_aFactoryURL(rFactoryURL)
+    , m_xDesktop()
+    , m_xFileAccess()
+    , m_xFilter()
+    , m_xTypeMap()
+{
+}
+
+void WpftImportTestBase::setUp()
+{
+    ::test::BootstrapFixture::setUp();
+
+    m_xDesktop = frame::theDesktop::get(m_xContext);
+    m_xFileAccess = ucb::SimpleFileAccess::create(m_xContext);
+
+    const uno::Reference<document::XTypeDetection> xTypeDetection(
+            m_xFactory->createInstanceWithContext("com.sun.star.document.TypeDetection", m_xContext),
+            uno::UNO_QUERY_THROW);
+    m_xTypeMap.set(xTypeDetection, uno::UNO_QUERY_THROW);
+}
+
+void WpftImportTestBase::tearDown()
+{
+    m_xDesktop->terminate();
+
+    ::test::BootstrapFixture::tearDown();
+}
+
+bool WpftImportTestBase::load(const OUString &, const OUString &rURL, const OUString &,
+    unsigned int, unsigned int, unsigned int)
+{
+    const uno::Reference<lang::XComponent> xDoc(
+            m_xDesktop->loadComponentFromURL(m_aFactoryURL, "_blank", 0, uno::Sequence<beans::PropertyValue>()),
+            uno::UNO_QUERY_THROW);
+
+    bool result = false;
+
+    try
+    {
+        const uno::Reference<document::XImporter> xImporter(m_xFilter, uno::UNO_QUERY_THROW);
+
+        xImporter->setTargetDocument(xDoc);
+
+        uno::Sequence<beans::PropertyValue> aDescriptor(2);
+        aDescriptor[0].Name = "URL";
+        aDescriptor[0].Value <<= rURL;
+
+        const uno::Reference<io::XInputStream> xInputStream(m_xFileAccess->openFileRead(rURL), uno::UNO_QUERY_THROW);
+        aDescriptor[1].Name = "InputStream";
+        aDescriptor[1].Value <<= xInputStream;
+
+        const uno::Reference<document::XExtendedFilterDetection> xDetector(m_xFilter, uno::UNO_QUERY_THROW);
+
+        const rtl::OUString aTypeName(xDetector->detect(aDescriptor));
+        if (aTypeName.isEmpty())
+            throw lang::IllegalArgumentException();
+
+        impl_detectFilterName(aDescriptor, aTypeName);
+
+        result = m_xFilter->filter(aDescriptor);
+    }
+    catch (const uno::Exception &)
+    {
+        // ignore
+    }
+
+    xDoc->dispose();
+
+    return result;
+}
+
+void WpftImportTestBase::doTest(const rtl::OUString &rFilter, const rtl::OUString &rPath)
+{
+    m_xFilter.set(m_xFactory->createInstanceWithContext(rFilter, m_xContext), uno::UNO_QUERY_THROW);
+    testDir(OUString(), getURLFromSrc(rPath), OUString());
+}
+
+void WpftImportTestBase::impl_detectFilterName(uno::Sequence<beans::PropertyValue> &rDescriptor, const rtl::OUString &rTypeName)
+{
+    const sal_Int32 nDescriptorLen = rDescriptor.getLength();
+
+    for (sal_Int32 n = 0; nDescriptorLen != n; ++n)
+    {
+        if ("FilterName" == rDescriptor[n].Name)
+            return;
+    }
+
+    uno::Sequence<beans::PropertyValue> aTypes;
+    if (m_xTypeMap->getByName(rTypeName) >>= aTypes)
+    {
+        for (sal_Int32 n = 0; aTypes.getLength() != n; ++n)
+        {
+            rtl::OUString aFilterName;
+            if (("PreferredFilter" == aTypes[n].Name) && (aTypes[n].Value >>= aFilterName))
+            {
+                rDescriptor.realloc(nDescriptorLen + 1);
+                rDescriptor[nDescriptorLen].Name = "FilterName";
+                rDescriptor[nDescriptorLen].Value <<= aFilterName;
+                return;
+            }
+        }
+    }
+
+    throw container::NoSuchElementException();
+}
+
+}
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/writerperfect/qa/unit/WpftImportTestBase.hxx b/writerperfect/qa/unit/WpftImportTestBase.hxx
new file mode 100644
index 0000000..2024e8f
--- /dev/null
+++ b/writerperfect/qa/unit/WpftImportTestBase.hxx
@@ -0,0 +1,67 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef INCLUDED_WRITERPERFECT_QA_UNIT_WPFTIMPORTTESTBASE_HXX
+#define INCLUDED_WRITERPERFECT_QA_UNIT_WPFTIMPORTTESTBASE_HXX
+
+#include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/uno/Sequence.hxx>
+
+#include <rtl/ustring.hxx>
+
+#include <test/bootstrapfixture.hxx>
+
+#include <unotest/filters-test.hxx>
+
+namespace com { namespace sun { namespace star {
+    namespace beans { class PropertyValue; }
+    namespace container { class XNameAccess; }
+    namespace document { class XFilter; }
+    namespace frame { class XDesktop2; }
+    namespace ucb { class XSimpleFileAccess; }
+} } }
+
+namespace writerperfect
+{
+namespace test
+{
+
+class WpftImportTestBase
+    : public ::test::FiltersTest
+    , public ::test::BootstrapFixture
+{
+public:
+    explicit WpftImportTestBase(const rtl::OUString &rFactoryURL);
+
+    virtual void setUp() SAL_OVERRIDE;
+    virtual void tearDown() SAL_OVERRIDE;
+
+protected:
+    void doTest(const rtl::OUString &rFilter, const rtl::OUString &rPath);
+
+private:
+    virtual bool load(const OUString &, const OUString &rURL, const OUString &,
+        unsigned int, unsigned int, unsigned int) SAL_OVERRIDE;
+
+    void impl_detectFilterName(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> &rDescriptor, const rtl::OUString &rTypeName);
+
+private:
+    const rtl::OUString m_aFactoryURL;
+    com::sun::star::uno::Reference<com::sun::star::frame::XDesktop2> m_xDesktop;
+    com::sun::star::uno::Reference<com::sun::star::ucb::XSimpleFileAccess> m_xFileAccess;
+    com::sun::star::uno::Reference<com::sun::star::document::XFilter> m_xFilter;
+    com::sun::star::uno::Reference<com::sun::star::container::XNameAccess> m_xTypeMap;
+};
+
+}
+}
+
+#endif // INCLUDED_WRITERPERFECT_QA_UNIT_WPFTIMPORTTESTBASE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/writerperfect/qa/unit/wpftdraw.cxx b/writerperfect/qa/unit/wpftdraw.cxx
index b1711b6..5118ff7 100644
--- a/writerperfect/qa/unit/wpftdraw.cxx
+++ b/writerperfect/qa/unit/wpftdraw.cxx
@@ -7,70 +7,26 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  */
 
-#include <com/sun/star/beans/PropertyValue.hpp>
-#include <com/sun/star/document/XFilter.hpp>
-#include <com/sun/star/document/XImporter.hpp>
-#include <com/sun/star/frame/theDesktop.hpp>
-#include <com/sun/star/io/XInputStream.hpp>
-#include <com/sun/star/lang/XComponent.hpp>
-#include <com/sun/star/ucb/SimpleFileAccess.hpp>
-#include <com/sun/star/uno/Reference.hxx>
-#include <com/sun/star/uno/Sequence.hxx>
-
-#include <test/bootstrapfixture.hxx>
-
-#include <unotest/filters-test.hxx>
-
-namespace beans = com::sun::star::beans;
-namespace document = com::sun::star::document;
-namespace frame = com::sun::star::frame;
-namespace io = com::sun::star::io;
-namespace lang = com::sun::star::lang;
-namespace ucb = com::sun::star::ucb;
-namespace uno = com::sun::star::uno;
+#include "WpftImportTestBase.hxx"
 
 namespace
 {
 
-class WpftDrawFilterTest
-    : public test::FiltersTest
-    , public test::BootstrapFixture
+class WpftDrawFilterTest : public writerperfect::test::WpftImportTestBase
 {
 public:
-    virtual void setUp();
-    virtual void tearDown();
+    WpftDrawFilterTest();
 
     void test();
 
     CPPUNIT_TEST_SUITE(WpftDrawFilterTest);
     CPPUNIT_TEST(test);
     CPPUNIT_TEST_SUITE_END();
-
-private:
-    virtual bool load(const OUString &, const OUString &rURL, const OUString &,
-        unsigned int, unsigned int, unsigned int);
-
-    void doTest(const rtl::OUString &rFilter, const rtl::OUString &rPath);
-
-private:
-    uno::Reference<frame::XDesktop2> m_xDesktop;
-    uno::Reference<ucb::XSimpleFileAccess> m_xFileAccess;
-    uno::Reference<document::XFilter> m_xFilter;
 };
 
-void WpftDrawFilterTest::setUp()
+WpftDrawFilterTest::WpftDrawFilterTest()
+    : writerperfect::test::WpftImportTestBase("private:factory/sdraw")
 {
-    test::BootstrapFixture::setUp();
-
-    m_xDesktop = frame::theDesktop::get(m_xContext);
-    m_xFileAccess = ucb::SimpleFileAccess::create(m_xContext);
-}
-
-void WpftDrawFilterTest::tearDown()
-{
-    test::BootstrapFixture::tearDown();
-
-    m_xDesktop->terminate();
 }
 
 void WpftDrawFilterTest::test()
@@ -83,48 +39,6 @@ void WpftDrawFilterTest::test()
     doTest("com.sun.star.comp.Draw.WPGImportFilter", "/writerperfect/qa/unit/data/libwpg/");
 }
 
-bool WpftDrawFilterTest::load(const OUString &, const OUString &rURL, const OUString &,
-    unsigned int, unsigned int, unsigned int)
-{
-    const uno::Reference<lang::XComponent> xDoc(
-            m_xDesktop->loadComponentFromURL("private:factory/simpress", "_blank", 0, uno::Sequence<beans::PropertyValue>()),
-            uno::UNO_QUERY_THROW);
-
-    bool result = false;
-
-    try
-    {
-        const uno::Reference<document::XImporter> xImporter(m_xFilter, uno::UNO_QUERY_THROW);
-
-        xImporter->setTargetDocument(xDoc);
-
-        uno::Sequence<beans::PropertyValue> aDescriptor(2);
-        aDescriptor[0].Name = "URL";
-        aDescriptor[0].Value <<= rURL;
-
-        const uno::Reference<io::XInputStream> xInputStream(m_xFileAccess->openFileRead(rURL), uno::UNO_QUERY_THROW);
-        aDescriptor[1].Name = "InputStream";
-        aDescriptor[1].Value <<= xInputStream;
-
-        result = m_xFilter->filter(aDescriptor);
-    }
-    catch (const uno::Exception &)
-    {
-        xDoc->dispose();
-        throw;
-    }
-
-    xDoc->dispose();
-
-    return result;
-}
-
-void WpftDrawFilterTest::doTest(const rtl::OUString &rFilter, const rtl::OUString &rPath)
-{
-    m_xFilter.set(m_xFactory->createInstanceWithContext(rFilter, m_xContext), uno::UNO_QUERY_THROW);
-    testDir(OUString(), getURLFromSrc(rPath), OUString());
-}
-
 CPPUNIT_TEST_SUITE_REGISTRATION(WpftDrawFilterTest);
 
 }
diff --git a/writerperfect/qa/unit/wpftimpress.cxx b/writerperfect/qa/unit/wpftimpress.cxx
index 376b3a5..2f349fa 100644
--- a/writerperfect/qa/unit/wpftimpress.cxx
+++ b/writerperfect/qa/unit/wpftimpress.cxx
@@ -7,70 +7,26 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  */
 
-#include <com/sun/star/beans/PropertyValue.hpp>
-#include <com/sun/star/document/XFilter.hpp>
-#include <com/sun/star/document/XImporter.hpp>
-#include <com/sun/star/frame/theDesktop.hpp>
-#include <com/sun/star/io/XInputStream.hpp>
-#include <com/sun/star/lang/XComponent.hpp>
-#include <com/sun/star/ucb/SimpleFileAccess.hpp>
-#include <com/sun/star/uno/Reference.hxx>
-#include <com/sun/star/uno/Sequence.hxx>
-
-#include <test/bootstrapfixture.hxx>
-
-#include <unotest/filters-test.hxx>
-
-namespace beans = com::sun::star::beans;
-namespace document = com::sun::star::document;
-namespace frame = com::sun::star::frame;
-namespace io = com::sun::star::io;
-namespace lang = com::sun::star::lang;
-namespace ucb = com::sun::star::ucb;
-namespace uno = com::sun::star::uno;
+#include "WpftImportTestBase.hxx"
 
 namespace
 {
 
-class WpftImpressFilterTest
-    : public test::FiltersTest
-    , public test::BootstrapFixture
+class WpftImpressFilterTest : public writerperfect::test::WpftImportTestBase
 {
 public:
-    virtual void setUp() SAL_OVERRIDE;
-    virtual void tearDown() SAL_OVERRIDE;
+    WpftImpressFilterTest();
 
     void test();
 
     CPPUNIT_TEST_SUITE(WpftImpressFilterTest);
     CPPUNIT_TEST(test);
     CPPUNIT_TEST_SUITE_END();
-
-private:
-    virtual bool load(const OUString &, const OUString &rURL, const OUString &,
-        unsigned int, unsigned int, unsigned int) SAL_OVERRIDE;
-
-    void doTest(const rtl::OUString &rFilter, const rtl::OUString &rPath);
-
-private:
-    uno::Reference<frame::XDesktop2> m_xDesktop;
-    uno::Reference<ucb::XSimpleFileAccess> m_xFileAccess;
-    uno::Reference<document::XFilter> m_xFilter;
 };
 
-void WpftImpressFilterTest::setUp()
+WpftImpressFilterTest::WpftImpressFilterTest()
+    : writerperfect::test::WpftImportTestBase("private:factory/simpress")
 {
-    test::BootstrapFixture::setUp();
-
-    m_xDesktop = frame::theDesktop::get(m_xContext);
-    m_xFileAccess = ucb::SimpleFileAccess::create(m_xContext);
-}
-
-void WpftImpressFilterTest::tearDown()
-{
-    test::BootstrapFixture::tearDown();
-
-    m_xDesktop->terminate();
 }
 
 void WpftImpressFilterTest::test()
@@ -78,48 +34,6 @@ void WpftImpressFilterTest::test()
     doTest("org.libreoffice.comp.Impress.KeynoteImportFilter", "/writerperfect/qa/unit/data/libetonyek/");
 }
 
-bool WpftImpressFilterTest::load(const OUString &, const OUString &rURL, const OUString &,
-    unsigned int, unsigned int, unsigned int)
-{
-    const uno::Reference<lang::XComponent> xDoc(
-            m_xDesktop->loadComponentFromURL("private:factory/simpress", "_blank", 0, uno::Sequence<beans::PropertyValue>()),
-            uno::UNO_QUERY_THROW);
-
-    bool result = false;
-
-    try
-    {
-        const uno::Reference<document::XImporter> xImporter(m_xFilter, uno::UNO_QUERY_THROW);
-
-        xImporter->setTargetDocument(xDoc);
-
-        uno::Sequence<beans::PropertyValue> aDescriptor(2);
-        aDescriptor[0].Name = "URL";
-        aDescriptor[0].Value <<= rURL;
-
-        const uno::Reference<io::XInputStream> xInputStream(m_xFileAccess->openFileRead(rURL), uno::UNO_QUERY_THROW);
-        aDescriptor[1].Name = "InputStream";
-        aDescriptor[1].Value <<= xInputStream;
-
-        result = m_xFilter->filter(aDescriptor);
-    }
-    catch (const uno::Exception &)
-    {
-        xDoc->dispose();
-        throw;
-    }
-
-    xDoc->dispose();
-
-    return result;
-}
-
-void WpftImpressFilterTest::doTest(const rtl::OUString &rFilter, const rtl::OUString &rPath)
-{
-    m_xFilter.set(m_xFactory->createInstanceWithContext(rFilter, m_xContext), uno::UNO_QUERY_THROW);
-    testDir(OUString(), getURLFromSrc(rPath), OUString());
-}
-
 CPPUNIT_TEST_SUITE_REGISTRATION(WpftImpressFilterTest);
 
 }
diff --git a/writerperfect/qa/unit/wpftwriter.cxx b/writerperfect/qa/unit/wpftwriter.cxx
index e700dab..284c5f5 100644
--- a/writerperfect/qa/unit/wpftwriter.cxx
+++ b/writerperfect/qa/unit/wpftwriter.cxx
@@ -7,84 +7,26 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  */
 
-#include <com/sun/star/beans/PropertyValue.hpp>
-#include <com/sun/star/container/NoSuchElementException.hpp>
-#include <com/sun/star/container/XNameAccess.hpp>
-#include <com/sun/star/document/XExtendedFilterDetection.hpp>
-#include <com/sun/star/document/XFilter.hpp>
-#include <com/sun/star/document/XImporter.hpp>
-#include <com/sun/star/document/XTypeDetection.hpp>
-#include <com/sun/star/frame/theDesktop.hpp>
-#include <com/sun/star/io/XInputStream.hpp>
-#include <com/sun/star/lang/IllegalArgumentException.hpp>
-#include <com/sun/star/lang/XComponent.hpp>
-#include <com/sun/star/ucb/SimpleFileAccess.hpp>
-#include <com/sun/star/uno/Reference.hxx>
-#include <com/sun/star/uno/Sequence.hxx>
-
-#include <test/bootstrapfixture.hxx>
-
-#include <unotest/filters-test.hxx>
-
-namespace beans = com::sun::star::beans;
-namespace container = com::sun::star::container;
-namespace document = com::sun::star::document;
-namespace frame = com::sun::star::frame;
-namespace io = com::sun::star::io;
-namespace lang = com::sun::star::lang;
-namespace ucb = com::sun::star::ucb;
-namespace uno = com::sun::star::uno;
+#include "WpftImportTestBase.hxx"
 
 namespace
 {
 
-class WpftWriterFilterTest
-    : public test::FiltersTest
-    , public test::BootstrapFixture
+class WpftWriterFilterTest : public writerperfect::test::WpftImportTestBase
 {
 public:
-    virtual void setUp();
-    virtual void tearDown();
+    WpftWriterFilterTest();
 
     void test();
 
     CPPUNIT_TEST_SUITE(WpftWriterFilterTest);
     CPPUNIT_TEST(test);
     CPPUNIT_TEST_SUITE_END();
-
-private:
-    virtual bool load(const OUString &, const OUString &rURL, const OUString &,
-        unsigned int, unsigned int, unsigned int);
-
-    void doTest(const rtl::OUString &rFilter, const rtl::OUString &rPath);
-
-    void impl_detectFilterName(uno::Sequence<beans::PropertyValue> &rDescriptor, const rtl::OUString &rTypeName);
-
-private:
-    uno::Reference<frame::XDesktop2> m_xDesktop;
-    uno::Reference<ucb::XSimpleFileAccess> m_xFileAccess;
-    uno::Reference<document::XFilter> m_xFilter;
-    uno::Reference<container::XNameAccess> m_xTypeMap;
 };
 
-void WpftWriterFilterTest::setUp()
-{
-    test::BootstrapFixture::setUp();
-
-    m_xDesktop = frame::theDesktop::get(m_xContext);
-    m_xFileAccess = ucb::SimpleFileAccess::create(m_xContext);
-
-    const uno::Reference<document::XTypeDetection> xTypeDetection(
-            m_xFactory->createInstanceWithContext("com.sun.star.document.TypeDetection", m_xContext),
-            uno::UNO_QUERY_THROW);
-    m_xTypeMap.set(xTypeDetection, uno::UNO_QUERY_THROW);
-}
-
-void WpftWriterFilterTest::tearDown()
+WpftWriterFilterTest::WpftWriterFilterTest()
+    : writerperfect::test::WpftImportTestBase("private:factory/swriter")
 {
-    test::BootstrapFixture::tearDown();
-
-    m_xDesktop->terminate();
 }
 
 void WpftWriterFilterTest::test()
@@ -96,84 +38,6 @@ void WpftWriterFilterTest::test()
     doTest("com.sun.star.comp.Writer.WordPerfectImportFilter", "/writerperfect/qa/unit/data/libwpd/");
 }
 
-bool WpftWriterFilterTest::load(const OUString &, const OUString &rURL, const OUString &,
-    unsigned int, unsigned int, unsigned int)
-{
-    const uno::Reference<lang::XComponent> xDoc(
-            m_xDesktop->loadComponentFromURL("private:factory/swriter", "_blank", 0, uno::Sequence<beans::PropertyValue>()),
-            uno::UNO_QUERY_THROW);
-
-    bool result = false;
-
-    try
-    {
-        const uno::Reference<document::XImporter> xImporter(m_xFilter, uno::UNO_QUERY_THROW);
-
-        xImporter->setTargetDocument(xDoc);
-
-        uno::Sequence<beans::PropertyValue> aDescriptor(2);
-        aDescriptor[0].Name = "URL";
-        aDescriptor[0].Value <<= rURL;
-
-        const uno::Reference<io::XInputStream> xInputStream(m_xFileAccess->openFileRead(rURL), uno::UNO_QUERY_THROW);
-        aDescriptor[1].Name = "InputStream";
-        aDescriptor[1].Value <<= xInputStream;
-
-        const uno::Reference<document::XExtendedFilterDetection> xDetector(m_xFilter, uno::UNO_QUERY_THROW);
-
-        const rtl::OUString aTypeName(xDetector->detect(aDescriptor));
-        if (aTypeName.isEmpty())
-            throw lang::IllegalArgumentException();
-
-        impl_detectFilterName(aDescriptor, aTypeName);
-
-        result = m_xFilter->filter(aDescriptor);
-    }
-    catch (const uno::Exception &)
-    {
-        // ignore
-    }
-
-    xDoc->dispose();
-
-    return result;
-}
-
-void WpftWriterFilterTest::doTest(const rtl::OUString &rFilter, const rtl::OUString &rPath)
-{
-    m_xFilter.set(m_xFactory->createInstanceWithContext(rFilter, m_xContext), uno::UNO_QUERY_THROW);
-    testDir(OUString(), getURLFromSrc(rPath), OUString());
-}
-
-void WpftWriterFilterTest::impl_detectFilterName(uno::Sequence<beans::PropertyValue> &rDescriptor, const rtl::OUString &rTypeName)
-{
-    const sal_Int32 nDescriptorLen = rDescriptor.getLength();
-
-    for (sal_Int32 n = 0; nDescriptorLen != n; ++n)
-    {
-        if ("FilterName" == rDescriptor[n].Name)
-            return;
-    }
-
-    uno::Sequence<beans::PropertyValue> aTypes;
-    if (m_xTypeMap->getByName(rTypeName) >>= aTypes)
-    {
-        for (sal_Int32 n = 0; aTypes.getLength() != n; ++n)
-        {
-            rtl::OUString aFilterName;
-            if (("PreferredFilter" == aTypes[n].Name) && (aTypes[n].Value >>= aFilterName))
-            {
-                rDescriptor.realloc(nDescriptorLen + 1);
-                rDescriptor[nDescriptorLen].Name = "FilterName";
-                rDescriptor[nDescriptorLen].Value <<= aFilterName;
-                return;
-            }
-        }
-    }
-
-    throw container::NoSuchElementException();
-}
-
 CPPUNIT_TEST_SUITE_REGISTRATION(WpftWriterFilterTest);
 
 }
commit 7485d76164589652359f7da840b01c0f64bbe7c6
Author: David Tardon <dtardon at redhat.com>
Date:   Sun Mar 30 15:50:41 2014 +0200

    move the writerperfect import tests to slowcheck
    
    First, they really are slow (which is most likely a bug in the tests
    themselves); second, there is no need to run them for every small
    change.
    
    Change-Id: I6ffafb82e105ae1fe22846b23ac5b55a3c5fd755

diff --git a/writerperfect/Module_writerperfect.mk b/writerperfect/Module_writerperfect.mk
index e020bdc..2995e8c 100644
--- a/writerperfect/Module_writerperfect.mk
+++ b/writerperfect/Module_writerperfect.mk
@@ -27,9 +27,12 @@ $(eval $(call gb_Module_add_targets,writerperfect,\
 ))
 
 $(eval $(call gb_Module_add_check_targets,writerperfect,\
+	CppunitTest_writerperfect_stream \
+))
+
+$(eval $(call gb_Module_add_slowcheck_targets,writerperfect,\
 	CppunitTest_writerperfect_draw \
 	CppunitTest_writerperfect_impress \
-	CppunitTest_writerperfect_stream \
 	CppunitTest_writerperfect_writer \
 ))
 
commit 1bcf528ce74bc9caf32d906f51622c3c0f0083a9
Author: David Tardon <dtardon at redhat.com>
Date:   Sat Mar 29 16:27:42 2014 +0100

    add a smoketest for wpftdraw import library
    
    Change-Id: I8433345edb51974856b30acbdb29da29a4ba01b8

diff --git a/writerperfect/CppunitTest_writerperfect_draw.mk b/writerperfect/CppunitTest_writerperfect_draw.mk
new file mode 100644
index 0000000..d724a58
--- /dev/null
+++ b/writerperfect/CppunitTest_writerperfect_draw.mk
@@ -0,0 +1,42 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_CppunitTest_CppunitTest,writerperfect_draw))
+
+$(eval $(call gb_CppunitTest_use_externals,writerperfect_draw,\
+	boost_headers \
+))
+
+$(eval $(call gb_CppunitTest_use_api,writerperfect_draw,\
+	offapi \
+	udkapi \
+))
+
+$(eval $(call gb_CppunitTest_use_libraries,writerperfect_draw,\
+	comphelper \
+	cppu \
+	cppuhelper \
+	sal \
+	test \
+	ucbhelper \
+	unotest \
+	$(gb_UWINAPI) \
+))
+
+$(eval $(call gb_CppunitTest_use_ure,writerperfect_draw))
+
+$(eval $(call gb_CppunitTest_use_rdb,writerperfect_draw,services))
+
+$(eval $(call gb_CppunitTest_use_configuration,writerperfect_draw))
+
+$(eval $(call gb_CppunitTest_add_exception_objects,writerperfect_draw,\
+	writerperfect/qa/unit/wpftdraw \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/writerperfect/Module_writerperfect.mk b/writerperfect/Module_writerperfect.mk
index a0c877e..e020bdc 100644
--- a/writerperfect/Module_writerperfect.mk
+++ b/writerperfect/Module_writerperfect.mk
@@ -27,6 +27,7 @@ $(eval $(call gb_Module_add_targets,writerperfect,\
 ))
 
 $(eval $(call gb_Module_add_check_targets,writerperfect,\
+	CppunitTest_writerperfect_draw \
 	CppunitTest_writerperfect_impress \
 	CppunitTest_writerperfect_stream \
 	CppunitTest_writerperfect_writer \
diff --git a/writerperfect/qa/unit/data/libcdr-cmx/fail/.gitignore b/writerperfect/qa/unit/data/libcdr-cmx/fail/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/writerperfect/qa/unit/data/libcdr-cmx/indeterminate/.gitignore b/writerperfect/qa/unit/data/libcdr-cmx/indeterminate/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/writerperfect/qa/unit/data/libcdr-cmx/pass/.gitignore b/writerperfect/qa/unit/data/libcdr-cmx/pass/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/writerperfect/qa/unit/data/libcdr/fail/.gitignore b/writerperfect/qa/unit/data/libcdr/fail/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/writerperfect/qa/unit/data/libcdr/indeterminate/.gitignore b/writerperfect/qa/unit/data/libcdr/indeterminate/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/writerperfect/qa/unit/data/libcdr/pass/.gitignore b/writerperfect/qa/unit/data/libcdr/pass/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/writerperfect/qa/unit/data/libfreehand/fail/.gitignore b/writerperfect/qa/unit/data/libfreehand/fail/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/writerperfect/qa/unit/data/libfreehand/indeterminate/.gitignore b/writerperfect/qa/unit/data/libfreehand/indeterminate/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/writerperfect/qa/unit/data/libfreehand/pass/.gitignore b/writerperfect/qa/unit/data/libfreehand/pass/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/writerperfect/qa/unit/data/libmspub/fail/.gitignore b/writerperfect/qa/unit/data/libmspub/fail/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/writerperfect/qa/unit/data/libmspub/indeterminate/.gitignore b/writerperfect/qa/unit/data/libmspub/indeterminate/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/writerperfect/qa/unit/data/libmspub/pass/.gitignore b/writerperfect/qa/unit/data/libmspub/pass/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/writerperfect/qa/unit/data/libvisio/fail/.gitignore b/writerperfect/qa/unit/data/libvisio/fail/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/writerperfect/qa/unit/data/libvisio/indeterminate/.gitignore b/writerperfect/qa/unit/data/libvisio/indeterminate/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/writerperfect/qa/unit/data/libvisio/pass/.gitignore b/writerperfect/qa/unit/data/libvisio/pass/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/writerperfect/qa/unit/data/libwpg/fail/.gitignore b/writerperfect/qa/unit/data/libwpg/fail/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/writerperfect/qa/unit/data/libwpg/indeterminate/.gitignore b/writerperfect/qa/unit/data/libwpg/indeterminate/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/writerperfect/qa/unit/data/libwpg/pass/WPG1.wpg b/writerperfect/qa/unit/data/libwpg/pass/WPG1.wpg
new file mode 100644
index 0000000..2730896
Binary files /dev/null and b/writerperfect/qa/unit/data/libwpg/pass/WPG1.wpg differ
diff --git a/writerperfect/qa/unit/wpftdraw.cxx b/writerperfect/qa/unit/wpftdraw.cxx
new file mode 100644
index 0000000..b1711b6
--- /dev/null
+++ b/writerperfect/qa/unit/wpftdraw.cxx
@@ -0,0 +1,134 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/document/XFilter.hpp>
+#include <com/sun/star/document/XImporter.hpp>
+#include <com/sun/star/frame/theDesktop.hpp>
+#include <com/sun/star/io/XInputStream.hpp>
+#include <com/sun/star/lang/XComponent.hpp>
+#include <com/sun/star/ucb/SimpleFileAccess.hpp>
+#include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/uno/Sequence.hxx>
+
+#include <test/bootstrapfixture.hxx>
+
+#include <unotest/filters-test.hxx>
+
+namespace beans = com::sun::star::beans;
+namespace document = com::sun::star::document;
+namespace frame = com::sun::star::frame;
+namespace io = com::sun::star::io;
+namespace lang = com::sun::star::lang;
+namespace ucb = com::sun::star::ucb;
+namespace uno = com::sun::star::uno;
+
+namespace
+{
+
+class WpftDrawFilterTest
+    : public test::FiltersTest
+    , public test::BootstrapFixture
+{
+public:
+    virtual void setUp();
+    virtual void tearDown();
+
+    void test();
+
+    CPPUNIT_TEST_SUITE(WpftDrawFilterTest);
+    CPPUNIT_TEST(test);
+    CPPUNIT_TEST_SUITE_END();
+
+private:
+    virtual bool load(const OUString &, const OUString &rURL, const OUString &,
+        unsigned int, unsigned int, unsigned int);
+
+    void doTest(const rtl::OUString &rFilter, const rtl::OUString &rPath);
+
+private:
+    uno::Reference<frame::XDesktop2> m_xDesktop;
+    uno::Reference<ucb::XSimpleFileAccess> m_xFileAccess;
+    uno::Reference<document::XFilter> m_xFilter;
+};
+
+void WpftDrawFilterTest::setUp()
+{
+    test::BootstrapFixture::setUp();
+
+    m_xDesktop = frame::theDesktop::get(m_xContext);
+    m_xFileAccess = ucb::SimpleFileAccess::create(m_xContext);
+}
+
+void WpftDrawFilterTest::tearDown()
+{
+    test::BootstrapFixture::tearDown();
+
+    m_xDesktop->terminate();
+}
+
+void WpftDrawFilterTest::test()
+{
+    doTest("com.sun.star.comp.Draw.CDRImportFilter", "/writerperfect/qa/unit/data/libcdr/");
+    doTest("com.sun.star.comp.Draw.CMXImportFilter", "/writerperfect/qa/unit/data/libcdr-cmx/");
+    doTest("com.sun.star.comp.Draw.FreehandImportFilter", "/writerperfect/qa/unit/data/libfreehand/");
+    doTest("com.sun.star.comp.Draw.MSPUBImportFilter", "/writerperfect/qa/unit/data/libmspub/");
+    doTest("com.sun.star.comp.Draw.VisioImportFilter", "/writerperfect/qa/unit/data/libvisio/");
+    doTest("com.sun.star.comp.Draw.WPGImportFilter", "/writerperfect/qa/unit/data/libwpg/");
+}
+
+bool WpftDrawFilterTest::load(const OUString &, const OUString &rURL, const OUString &,
+    unsigned int, unsigned int, unsigned int)
+{
+    const uno::Reference<lang::XComponent> xDoc(
+            m_xDesktop->loadComponentFromURL("private:factory/simpress", "_blank", 0, uno::Sequence<beans::PropertyValue>()),
+            uno::UNO_QUERY_THROW);
+
+    bool result = false;
+
+    try
+    {
+        const uno::Reference<document::XImporter> xImporter(m_xFilter, uno::UNO_QUERY_THROW);
+
+        xImporter->setTargetDocument(xDoc);
+
+        uno::Sequence<beans::PropertyValue> aDescriptor(2);
+        aDescriptor[0].Name = "URL";
+        aDescriptor[0].Value <<= rURL;
+
+        const uno::Reference<io::XInputStream> xInputStream(m_xFileAccess->openFileRead(rURL), uno::UNO_QUERY_THROW);
+        aDescriptor[1].Name = "InputStream";
+        aDescriptor[1].Value <<= xInputStream;
+
+        result = m_xFilter->filter(aDescriptor);
+    }
+    catch (const uno::Exception &)
+    {
+        xDoc->dispose();
+        throw;
+    }
+
+    xDoc->dispose();
+
+    return result;
+}
+
+void WpftDrawFilterTest::doTest(const rtl::OUString &rFilter, const rtl::OUString &rPath)
+{
+    m_xFilter.set(m_xFactory->createInstanceWithContext(rFilter, m_xContext), uno::UNO_QUERY_THROW);
+    testDir(OUString(), getURLFromSrc(rPath), OUString());
+}
+
+CPPUNIT_TEST_SUITE_REGISTRATION(WpftDrawFilterTest);
+
+}
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit bc7e714ed6d8b42f0f95bad84b2d20259e12e4f7
Author: David Tardon <dtardon at redhat.com>
Date:   Sat Mar 29 16:17:44 2014 +0100

    add a smoketest for wpftwriter import library
    
    Change-Id: Id547964bb5e205ae8a42ad0b033bbcd1b9836408

diff --git a/writerperfect/CppunitTest_writerperfect_writer.mk b/writerperfect/CppunitTest_writerperfect_writer.mk
new file mode 100644
index 0000000..143b41c
--- /dev/null
+++ b/writerperfect/CppunitTest_writerperfect_writer.mk
@@ -0,0 +1,42 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_CppunitTest_CppunitTest,writerperfect_writer))
+
+$(eval $(call gb_CppunitTest_use_externals,writerperfect_writer,\
+	boost_headers \
+))
+
+$(eval $(call gb_CppunitTest_use_api,writerperfect_writer,\
+	offapi \
+	udkapi \
+))
+
+$(eval $(call gb_CppunitTest_use_libraries,writerperfect_writer,\
+	comphelper \
+	cppu \
+	cppuhelper \
+	sal \
+	test \
+	ucbhelper \
+	unotest \
+	$(gb_UWINAPI) \
+))
+
+$(eval $(call gb_CppunitTest_use_ure,writerperfect_writer))
+
+$(eval $(call gb_CppunitTest_use_rdb,writerperfect_writer,services))
+
+$(eval $(call gb_CppunitTest_use_configuration,writerperfect_writer))
+
+$(eval $(call gb_CppunitTest_add_exception_objects,writerperfect_writer,\
+	writerperfect/qa/unit/wpftwriter \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/writerperfect/Module_writerperfect.mk b/writerperfect/Module_writerperfect.mk
index 1bf4428..a0c877e 100644
--- a/writerperfect/Module_writerperfect.mk
+++ b/writerperfect/Module_writerperfect.mk
@@ -29,6 +29,7 @@ $(eval $(call gb_Module_add_targets,writerperfect,\
 $(eval $(call gb_Module_add_check_targets,writerperfect,\
 	CppunitTest_writerperfect_impress \
 	CppunitTest_writerperfect_stream \
+	CppunitTest_writerperfect_writer \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/writerperfect/qa/unit/data/libabw/fail/.gitignore b/writerperfect/qa/unit/data/libabw/fail/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/writerperfect/qa/unit/data/libabw/indeterminate/.gitignore b/writerperfect/qa/unit/data/libabw/indeterminate/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/writerperfect/qa/unit/data/libabw/pass/hello.abw b/writerperfect/qa/unit/data/libabw/pass/hello.abw
new file mode 100644
index 0000000..8103ce8
--- /dev/null
+++ b/writerperfect/qa/unit/data/libabw/pass/hello.abw
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE abiword PUBLIC "-//ABISOURCE//DTD AWML 1.0 Strict//EN" "http://www.abisource.com/awml.dtd">
+<abiword template="false" xmlns:ct="http://www.abisource.com/changetracking.dtd" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:math="http://www.w3.org/1998/Math/MathML" xid-max="2" xmlns:dc="http://purl.org/dc/elements/1.1/" styles="unlocked" fileformat="1.0" xmlns:svg="http://www.w3.org/2000/svg" xmlns:awml="http://www.abisource.com/awml.dtd" xmlns="http://www.abisource.com/awml.dtd" xmlns:xlink="http://www.w3.org/1999/xlink" version="0.99.2" xml:space="preserve" props="dom-dir:ltr; document-footnote-restart-section:0; document-endnote-type:numeric; document-endnote-place-enddoc:1; document-endnote-initial:1; lang:en-US; document-endnote-restart-section:0; document-footnote-restart-page:0; document-footnote-type:numeric; document-footnote-initial:1; document-endnote-place-endsection:0">
+<!-- ======================================================================== -->
+<!-- This file is an AbiWord document.                                        -->
+<!-- AbiWord is a free, Open Source word processor.                           -->
+<!-- More information about AbiWord is available at http://www.abisource.com/ -->
+<!-- You should not edit this file by hand.                                   -->
+<!-- ======================================================================== -->
+
+<metadata>
+<m key="abiword.date_last_changed">Sat Mar 29 15:05:47 2014
+</m>
+<m key="abiword.generator">AbiWord</m>
+<m key="dc.creator">David Tardon</m>
+<m key="dc.date">Sat Mar 29 15:05:47 2014
+</m>
+<m key="dc.format">application/x-abiword</m>
+</metadata>
+<rdf>
+</rdf>
+<history version="1" edit-time="50" last-saved="1396101947" uid="1c0ee030-b74b-11e3-87e4-f1c43e104756">
+<version id="1" started="1396101947" uid="3a377838-b74b-11e3-87e4-f1c43e104756" auto="0" top-xid="2"/>
+</history>
+<styles>
+<s type="P" name="Normal" followedby="Current Settings" props="font-family:Times New Roman; margin-top:0pt; color:000000; margin-left:0pt; text-position:normal; widows:2; font-style:normal; text-indent:0in; font-variant:normal; font-weight:normal; margin-right:0pt; font-size:12pt; text-decoration:none; margin-bottom:0pt; line-height:1.0; bgcolor:transparent; text-align:left; font-stretch:normal"/>
+</styles>
+<pagesize pagetype="Letter" orientation="portrait" width="8.500000" height="11.000000" units="in" page-scale="1.000000"/>
+<section xid="1" props="page-margin-footer:0.5in; page-margin-header:0.5in">
+<p style="Normal" xid="2"><c>hello world</c></p>
+</section>
+</abiword>
diff --git a/writerperfect/qa/unit/data/libabw/pass/hello.zabw b/writerperfect/qa/unit/data/libabw/pass/hello.zabw
new file mode 100644
index 0000000..c83395b
Binary files /dev/null and b/writerperfect/qa/unit/data/libabw/pass/hello.zabw differ
diff --git a/writerperfect/qa/unit/data/libe-book/fail/TCR.tcr b/writerperfect/qa/unit/data/libe-book/fail/TCR.tcr
new file mode 100644
index 0000000..448021c
Binary files /dev/null and b/writerperfect/qa/unit/data/libe-book/fail/TCR.tcr differ
diff --git a/writerperfect/qa/unit/data/libe-book/indeterminate/.gitignore b/writerperfect/qa/unit/data/libe-book/indeterminate/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/writerperfect/qa/unit/data/libe-book/pass/FictionBook2.fb2 b/writerperfect/qa/unit/data/libe-book/pass/FictionBook2.fb2
new file mode 100644
index 0000000..4348cb7
--- /dev/null
+++ b/writerperfect/qa/unit/data/libe-book/pass/FictionBook2.fb2
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0" xmlns:xlink="http://www.w3.org/1999/xlink">
+  <description>
+    <title-info>
+      <author>
+        <first-name>David</first-name>
+        <last-name>Tardon</last-name>
+      </author>
+      <book-title>Hello world</book-title>
+      <lang>en</lang>
+    </title-info>
+    <document-info>
+      <author>
+        <first-name>David</first-name>
+        <last-name>Tardon</last-name>
+      </author>
+      <date>2013-11-17</date>
+      <version>1.0</version>
+    </document-info>
+  </description>
+  <body>
+    <section>
+      <p>Hello world.</p>
+    </section>
+  </body>
+</FictionBook>
diff --git a/writerperfect/qa/unit/data/libe-book/pass/FictionBook2.fb2.zip b/writerperfect/qa/unit/data/libe-book/pass/FictionBook2.fb2.zip
new file mode 100644
index 0000000..8482404
Binary files /dev/null and b/writerperfect/qa/unit/data/libe-book/pass/FictionBook2.fb2.zip differ
diff --git a/writerperfect/qa/unit/data/libe-book/pass/PalmDOC.pdb b/writerperfect/qa/unit/data/libe-book/pass/PalmDOC.pdb
new file mode 100644
index 0000000..e64f514
Binary files /dev/null and b/writerperfect/qa/unit/data/libe-book/pass/PalmDOC.pdb differ
diff --git a/writerperfect/qa/unit/data/libe-book/pass/Plucker.pdb b/writerperfect/qa/unit/data/libe-book/pass/Plucker.pdb
new file mode 100644
index 0000000..ac69913
Binary files /dev/null and b/writerperfect/qa/unit/data/libe-book/pass/Plucker.pdb differ
diff --git a/writerperfect/qa/unit/data/libmwaw/fail/ClarisWorks_6.0.cwk b/writerperfect/qa/unit/data/libmwaw/fail/ClarisWorks_6.0.cwk
new file mode 100644
index 0000000..9162e3d
Binary files /dev/null and b/writerperfect/qa/unit/data/libmwaw/fail/ClarisWorks_6.0.cwk differ
diff --git a/writerperfect/qa/unit/data/libmwaw/fail/HanMac_2.0.4J.hqx b/writerperfect/qa/unit/data/libmwaw/fail/HanMac_2.0.4J.hqx
new file mode 100644
index 0000000..f86c2ef
--- /dev/null
+++ b/writerperfect/qa/unit/data/libmwaw/fail/HanMac_2.0.4J.hqx
@@ -0,0 +1,178 @@
+(This file must be converted with BinHex 4.0)
+:"R4PFh4SDJ"*9d4$5%eTG`%!!!"63J#3"&kS at 8aC8`%!N!X&G'PdE'8!G!B3!*!
+,6LKF!!!HU!+ZEh-J)!!!!!,LB!#3"34Kk!!!6Z3!!%lFhHiJ!*!%4,[X!!$rr`%
+!!(30[!!!r`#3"!%!!2rr!(dJ%J"e8p*Ia!"D!(96dJ#3"dJ!!!")!*!&!3!"!!J
+N5KKcG@*UC at 0d$3eXD at GZC5!b$A0eBQTPBh4QJ"9l8J"d!bi!!!QBr`#3"Iq3"!"
+1*j)!#J#3"8iT&!#3"XeH&l8!!!$lrrmJ%J"d$E`!!2m!!(3$5!!3q*`!!!!"!!$
+rr`"p)")!G925!!$rr`"p)")!G925!(3$fJCKGA4SEh)H!!)N$3#!!!"!J1D53)$
+JaJ"d$E`!!2rr#$%Z-#KbCABTI5!5!!-4[J"eCF`!G!3X!(dJ%J"d""S3FQ9YBA*
+V$3eXD at GZC5!b$ImJ!!!m[6JJ"!!$!!-4[J!!#+!!!)!fAm3!@J"e8p)!#8m)!*!
+&I+c-!%iR9!"d"!!!$4aZ!%iR9!!!!!%!!2rr!*!*G925!!F!G925!(3!G!#3"9"
+"2!"d""`!#b3Q!!XN*J'qRE`!G!"d"$!!#b4@!!XN9J"1*e5G[!"d!(3%3!!,4Pi
+!#dCH!%iR9!#3"8pBTJ"1*e4Ia!"D!'XR5J!)5,i!!&r%!&S!G3#3"9""2!"d"(S
+!#b3Q!!XN*J&3RE`!G!"d")i!#b4@!!XN9J"1*e5G[!"d!(3%RJ!,4Pi!#`#3*3)
+!N!B$'!*N!%EGZ`"'hEX!4Yfl!&8+&!"'hEX!4Yfl!KdL43,#pH`!!`!!!%J!5!#
+3"!-B!Q3!N!3$'!*ND`!&+!2m!!)!!!")!%J!N!3$'!*N!!%!!!"N!!!!!3!"!3%
+!!J!"*`m!!3!"!*!14P3!!!(M!aJ!!!!N!!%!N"V0KDLb!*!-c9iAf3!#b&!!N#!
+(E@&TE#"dE`#31!KYB at PXCQpbE3#30`aYB at PX)(0eBQTPBh3!N)!F@,%!"`!(!*!
+&!Y at V!!!!"!#3"!%"!3!!"J#3"+!!N!m%i!!!**3!!#JJ!!!jI!!!2iJ!!%Vk!*!
+'6PB!!%mb!!"2iJ!!8R)!!%q#!*!H8d)!!J#3""qd!!!!F!!5!!B!"!!!!!J!!3#
+3"8iQ6!"1*P!!6LCJ!%iQ4!"1+%J!6LK%!%iS2!"1+%!!6LC)!%iS0!"1+$!!6LJ
+X!%iS*!"1+#J!6LJi!%iQE!"1*QJ!6LJ8B'C+,`"5CJJ-E`!$!2aQ+%S[!&0R)NS
+[!!!"Z!$)!!!!!`!!!!`!N!F"!*!@)!#3&!%!N!S,#`X!N#3"!!%!!3!"!!%!N2m
+!N"Arr`#3#JG%C at CKG@ad!*!D!EJ"b!!!!!-!!!!-!*!(!3#3&L!!N"3"!*!+#`X
+,!*!N!3!"!!%!!3!"!*$r!*!9rrm!!3#3#!C)C@&NCA)!N"X"Z!,)!!!!!`!!!!`
+!N!F"!*!@)!#3&!%!N!S,#`X!N#3"!!%!!3!"!!%!N2m!N"Arr`!#!*!)"NC[Eh4
+PFJ#3'`'i!mS!!!!$!!!!$!#3"`%!N"BJ!*!8!3#3#JX,#`#3*!%!!3!"!!%!!3#
+3r`#3&Irr!!-!N!J&5 at jNCAJ!N"`"Z!6)!!!!!`!!!!`!N!F"!*!@)!#3&!%!N!S
+,#`X!N#3"!!%!!3!"!!%!N2m!N"Arr`!%!*!)!e423`#3(J'i"FJ!!!!$!!!!#3#
+3"`%!N"BJ!*!8!3#3#JX,#`#3*!%!!3!"!!%!!3#3r`#3&Irr!!8!N!J)4Qp[G'j
+[G'8!N"N"Z!E*!!!!!`!!!"J!N!F"!*!&!3#3%#!!N"3"!*!(!3!!#`X,!*!N!3!
+"!!%!!3!"!*$r!*!9rrm!"J#3#!K)C@&ND at jR-3#3'3'i"mN!!!!$!!!!%J#3"`%
+!N!8"!*!3)!#3&!%!N!F"!!!,#`X!N#3"!!%!!3!"!!%!N2m!N"Arr`!(!*!)#%K
+PB at 4TEQFb!*!C!EJ)b3!!!!-!!!!1!*!(!3#3"3%!N"!J!*!8!3#3"`%!!!X,#`#
+3*!%!!3!"!!%!!3#3r`#3&Irr!!J!N!J)5'9KC'PZCc-!N"N"Z!R*!!!!!`!!!!`
+!N!F"!*!&!3#3%#!!N"3"!*!(!3!!#`X,!*!N!3!"!!%!!3!"!*$r!*!9rrm!#3#
+3#!K)C@&ND at jR0!#3'3'i#XN!!!!$!!!!#J#3"`%!N!8"!*!3)!#3&!%!N!F"!!!
+,#`X!N#3"!!%!!3!"!!%!N2m!N"Arr`!+!*!)#%KPB at 4TEQFe!*!C!EJ,b3!!!!-
+!!!!*!*!(!3#3"3%!N"!J!*!8!3#3"`%!!!X,#`#3*!%!!3!"!!%!!3#3r`#3&Ir
+r!!X!N!J)5'9KC'PZCcB!N"N"Z!c*!!!!!`!!!!`!N!F"!*!@)!#3#"J!N!X"!*!
++#`X,!*!N!3!"!!%!!3!"!*$r!*!9rrm!$!#3#!C96'PcG$%!N"X"Z!h*!!!!!`!
+!!!`!N!F"!*!@)!#3#$!!N!X"!*!+#`X,!*!N!3!"!!%!!3!"!*$r!*!9rrm!$3#
+3#!C96'PcG$)!N"X"Z!l*!!!!!`!!!!`!N!F"!*!@)!#3#%J!N!X"!*!+#`X,!*!
+N!3!"!!%!!3!"!*$r!*!9rrm!$J#3#!C96'PcG$-!N"X"Z!r*!!!!!`!!!!`!N!F
+"!*!@)!#3#"J!N!X"!*!+#`X,!*!N!3!"!!%!!3!"!*$r!*!9rrm!$`#3#!C26'P
+cG$%!N"X"Z"$*!!!!!`!!!!`!N!F"!*!@)!#3#$!!N!X"!*!+#`X,!*!N!3!"!!%
+!!3!"!*$r!*!9rrm!%!#3#!C26'PcG$)!N"X"Z"(*!!!!!`!!!!`!N!F"!*!@)!#
+3#%J!N!X"!*!+#`X,!*!N!3!"!!%!!3!"!*$r!*!9rrm!%3#3#!C26'PcG$-!N"m
+$M!!!!,!!%J!#!!J!!!!%!!)!N!6rrJ!!!%iS(2rq8#!!6LJ3rrj3)!"1*S6rrP!
+J!%iS#2rq8#!!6L6Frrj3)!"1*T!!rrj3)!"1*4MrrP!J!%iNd2rq8#!!6L8Xrrj
+3)!"1*6$rrP!J!%iNp2rq8#!!6L6Nrrj3)!"1*1$rrP!J!%iNk2rq8#!!6L6Xrrj
+3)!"1*2$rrP!J!%iP$2rq*q`!6LHd!*!&!3#3"!3!N!JN!!-!!!!-!*!(!3#3'53
+!!`!!!!`!N!F"!*!&!3#3%b3!!`!!!!`!N!F"!*!&!J#3%b3!!`!!!!`!N!F"!*!
+%#!#3&#3!!`!!!!`!N!F"!*!&"!#3%b3!!`!!!!`!N!F"!*!&#!#3%b3!!`!!!!`
+!N!F"!*!&%!#3%b3!!`!!!!`!N!F"!*!&)!#3%b3!!`!!!!`!N!F"!*!&3!#3%b3
+!!`!!!!`!N!F"!*!&`!#3%b3!!`!!!!`!N!F"!*!%!3#3&#3!!`!!!!`!N!F"!*!
+%!J#3&#3!!`!!!!`!N!F"!*!%"!#3&#3!!`!!!!i!N!F"!*!C*!!$!!!!%!#3"`%
+!N"NN!!-!!!!5!*!(!3#3'53!!`!!!"J!N!F"!*!C*!!$!!!!#3#3"`%!N"F"!*!
+%%9`!!!#J!!`!!!!-!!!!!J!#!*!%rri!!!"1*2J!N!6rrJ!!!%iP!*!&rri!!!"
+1*33!N!6rrJ!!!%iP#!#3"2rq!!!!6L8N!*!%rri!!!"1*43!N!6rrJ!!!%iP%0@
+V!!$rrJ!!!%iL+!#3"2rq!!!!6L)B!*!%rri!!!"1)N$d5!!!rri!"3"1*U3!!!!
+$rri!!J"1+13!N!B"B#!!N"3"!*!+#`X,!*!N!3!"!!%!!3!"!*$r!*!6!@!J!!!
+!!J#3%!%!N!S,#`X!N#3"!!%!!3!"!!%!N2m!N"-"B#!!!!!"!*!3!3#3#JX,#`#
+3*!%!!3!"!!%!!3#3r`#3%`&J)!!!!!-!N"!"!*!+#`X,!*!N!3!"!!%!!3!"!*$
+r!*!6!@!J!*!8!B!!N!N,#`X!N#3"!!%!!3!"!!%!N2m!N"-"B#!!N"3#!*!+#`X
+,!*!N!3!"!!%!!3!"!*$r!*!6!@!J!*!8)Y at V!*!)!3X,!*!N!3!"!!%!!3!"!*$
+r!*!6!@!J!*!8!3#3#JX,#`#3*!%!!3!"!!%!!3#3&38!N!Xp)N8"!*!)A5*&!`!
+!,J#3"CmL43#3#G-L43#3#!%-)N8!N,i"B#!!N"3"!*!+#`X,!*!N!3!"!!%!!3!
+"!*!9"!#3#cdL43%!N!KG)N8#!*!)HL*&!`!!,J#3"CmL43#3bJ&J)!#3&!%!N!S
+,#`X!N#3"!!%!!3!"!!%!(&La!*!*1,&M!*!&"3#3#cdL43%!N!KG)N8$!!!Z!*!
+&Rb*&!*!*db*&!*!)!3`L43#3[J&J)!#3&!%!N!S,#`X!N#3"!!%!!3!"!!%!N2m
+!N"-"B#!!N"3"!*!+#`X,!*!N!3!"!!%!!3!"!*$r!*!5!`#3"!B-!!!!E!!0!!F
+!"!!-!!S!!3#3"8iL-!"1)L`!%!!!!%iNc!"1*0J!6L(3!%iN0!"1)M3!6L)m!%i
+KZ!"1*[3!6LId!%iQ[!"1+5J!6LM-!%iS"!!)!!!!"!!"!*!(%!!!!%J!!!")!*!
+(0!B!$!#3"NEGZ`"'hEX#(5*&!X,el!#3"!*m'$%"eN5+!!m!N!G1+!!!6L4X!!!
+!4))!N!B(!(i!!!%L!!!!p!!!!BS!!!!,!*!1!BS!!!"q!!!")J!!!23!N!G1++!
+!!3#3"85#!*!'#!#D!!!"I`!!!6!!!!)$!!!!$!#3"K!!N"a1+,`!!3#3"85#!*!
+'!`()!!!"@!!!!I-!!!'-!!!!$3#3"L!!N"a1*p!!!3#3"85#!*!'!`&$!!!"I`!
+!!B%!!!'F!!!!$J#3"P'!!*!E6LC`!!%!N!9%JJ#3"J-"BJ!!!8S!!!),!!!"I3!
+!!!m!N!C4J!#3'diP(!!"!*!&2*)!N!B%!4m!!!%L!!!"a2mb!D2r-J!3!!!!2Aq
+C!%prQ3!"!*!&!J"1,3!!6LB3!*!&6LB8!!!!0!)!#!!!!3!!!%EGZ`"'hEX",!!
+!!V$el!#3"!*U'$%!j5*&!!)!N!AC!%iSP!"1*'`!!!!d!J!%%!!"!!!"1!!!!%E
+GZ`)G)N8#N[AX!*!%!N`B-3$P)N8!!3#3"I8!6LLF!%iNE!!!!$3b!3!!!!%!"3%
+i!!!#S2AX!KdL43+`pH`!#J!!!!`!!!$P)N8!!3#3"diQI!"1*q`!!!!d)J%!`2r
+r!!B!4Yfl!V$el!)G)N8#`[AX!!-!!!!3!!!"eN5+!!%!N!G1+*J!6LMd!!!!0#)
+"!)!!!3!'!%EGZ`+`pH`#(5*&!X,el!!$!!!!%!!!!GC%LJ!"!*!(6LLB!%iSp!!
+!!$6#!*!%!3!!!6J!!!+5pH`#(5*&!U$el!!+!!!!!3!!!3#3"!J!!!!#!!!!NJ!
+!!%iRp!!!!F!!#3!!!$!!!!!"!!)!N!6rrJ#3+!%"!3!!!2rq!!!!!3!!!!%!!!!
+"!!!!!3!!!!%!!!!"!!!!!3!!!!%!!!!"!*!%!3%"!!!!rri!!!!"!!!!!3!!!!%
+!!!!"!!!!!3!!!!%!!!!"!!!!!3!!!!%!N!3"!3%!!!$rrJ!!!!%!!!!"!!!!!3!
+!!!%!!!!"!!!!!3!!!!%!!!!"!*!%3!!!!!%"!3!!!2rq!!!!!J!!!%*rQ3"8IjN
+!!J!!!!%!!!!"!!!!!3!!!!%!N!4!!!!!!3%"!!!"rri!!3#3"3)!N!F#!*!B!3%
+"!!!!rri!$!#3"3)!N#!"!3%!!!$rrLaB!!%!!!!"!!!!!3!!!!%!!!!"!!!!!3!
+!!!%!!!!"!*!%3!!!&!%"!3!!!2rq+SJ!!3!!!!%!!!!"!!!!!3!!!!%!!!!"!!!
+!!3!!!!%!N!4!!!!!!83"!*!'0!!#!!)!#!!%!!3!!3#3"3)!N!G1*J`!N!91*-!
+4(!!!"9C8-6!`)"`!!!#%!!!!-!!(!!%!"!!!!!J!!3#3"8iKZ!"1)M`!6L)d!%i
+N0!"1)G!!6L6B!%iNc!#3"c!!"3!$!!3!!!!)!!%!N!91+!3!6LDm!%iSc!"1*r3
+!6LEd!!!5,!!+!*!%!H!!"!#3"!'d!!!!-!!%!!3!"!!!!!J!!3#3"8iNE!"1*K!
+!6LIX!%iSp!#3#a4P)(4[!!!!*J!!!33!!!$B!!!!f!"1*h3!6LDJ!%iN9!"1*h`
+!6L4N!%iQ-!!$!!!!-!!$!!8!"!!!!!J!!3#3"8iNc!"1*[3!6LIdFJc$`b"5)B!
+B%$!$8N!J8V"36qm!!!!Q!!!!"!!!!!)!!!!#!%iRH!"1*V3!6L4J!%iQX!"1*&`
+!N!8"!!!!-!!"!!F!"!!!!!J!!3#3"8iKZ!!)!*!*5!!!!%J!N!8"!!%!!3#3"5B
+!!!!0!!!!$!!!!!`!6LJ-!%iT1!"1*qJ!6LIi!%iQP!#3"3%!!!!`!!%!"`!%!!!
+!#!!"!*!&6LDm!qX!"!2X!!8$l3!'!qi!"`2[!!J$m!!*!r%!#J!!!#B!!!!+!!!
+!#J!!!!S!6LM8!%iT!!"1*VJ!6LNN!%iRr!#3"3%!!!!`!!%!"`!%!!!!#!!"!*!
+&6LNS!*!%#J!!8h4TBfYTCA-!N!30!!#P)&0SGA3!"3#3"!D9!!!#%!!6!#d!#!!
+!!%!!!3#3$3-!!!!"!!!!!`!%!!)!!!!$!!S!!`!!!!-!%`!%!!!!!`!D!!8!!!!
+$!#!!"J!!!!-!+J!(!!!!!`![!!J!!!!$!$-!#3!!!!-!3!!+!!!!"!!!!!X!!!!
+%!!3!$!!!!!3!$`#3"38!!!!0!!!!"3!%!!i!!!!&!!J!$`!!!!8!$!!3!!!!"J#
+3%8J!6KA%!3!#J!4'##d3%b!L3%5!UN#4)1)@"!N)#4!')!&!!)!"!!1!"mB2lar
+r2rjrr2rqIrmrrKrm$rJ2m!IJ!F!!J!!!!%`!6KA%!3!#J!4'##d3%b!L3%5!UN#
+4)1)@"!N)#4!')!&!!)!"!!1!"mB2larr2rjrr2rqIrmrrKrm$rJ2m!IJ!F!!J%G
+S!*!%!3`!6KA%!),rN!3!8%M8rrfpq34&C'Pd"99ZC'mJ!&S!!!%Y!*!%!d0eG!"
+B!!!+3fp`H5"3E'&TEJ"$!!!,8'&cG'8J8'aKD at i!9J!!"80XC@&b!*!%#P0PE'9
+MG#""E'`!33!!#84eF'aTBf&dC3"%!!!",3#3"!4'D at jN!"X-!!p*ER0PFR3J9Q&
+bD@&LE'8!'`)!$%PZFf9bG#"#FQ9KD`!E!`!+3Qp[Db"8EfpXF`!E"!!",3#3"!e
+(Eb"dEb"3B at F!!!)3!!S!0J!)!!!!3!!"!*!0"J!"!*!&"`!#!*!&#!!$!*!&#3!
+%!*!&#J!&@!J!6J!,!!B!!!!"!!`!#&J)!%i!$3!(!%EGZ`!1!!N!!!LJ!!!$(!"
+1&F3!Jrq3"!"3506rN!3%4QpZG"K"FQPKE#"09#"$EfjNC at jcC@3J6'PRD(3!N!3
+,3ACKER3J4f&bC'8!N!383QpNEfjT)%e8)&9XG(*K)%*[E'3!N!3(3Qp[DfeKEJ#
+3"!G$D'PMB at G[!*!%"d0[GA*TCA)!N!3)4'9XF'KTB at i!N!3*4A0`H5"6B at jc!*!
+%$N9cF(NJ8f&ZFb"#EfaN!*!%$'9AEh*XC#"8D at GSG!#3"!p(BA*KE at pZC#"1BA*
+bEhF!N!3'4f9ZCACK!*!%'%GTE'`J8f&ZFb"$EfjNC at jcC@3J3QpXC!#3"!P)C at a
+fCA4TBf%!N!325'9XGQ9dD at 0K)%*XB at 0V!*!%&%KPE(CPG'PMB5"$Efe`FQ9cFf9
+N!*!%#%YXB at jR)%e8!*!%$8aeBQ&XD at iJ4h*KF'J!N!306(9MD at 4K)%*bD at GSG!#
+3"!G0B at 0SD@jP!*!%"Ne[EQ&ME`#3"!K09#"&H(4bB3#3""*1)%KPE(CPG'PMB5"
+1BA*bEhF!N!3)6Q&ND@&ZEQ8!!!%3!")!,J!%!!!!3!!"!*!,$J!!!!m!!!!A!!!
+!B3!!!(%!!!##!!!!L3!!!)m!!!#8!!!!RJ!!!+8!!!#Y!!!![`!!!-B!!!$C!!!
+!p!!!!29iG#"09!#3"!42ERPi!*!%"NpiCQpbC!#3"!K3B at aKG'PZE`#3"!j6Bh*
+TF(3J693J3QpXC!#3"!96GfPZC`#3"!C6H at eLEf`!N!3)9'9XCA4PH(3!N!3&9'P
+YCA-!N!3(9&4C4QpZG!#3"!eDBA"Q)%0SB at jMCA*j!*!%$9TKF'BJ4'PZCf*KG(-
+!N!3%@Q9KE!#3"!T#BA0dD at pZ)&4$%4`!!!T$D'PMB at F!!!!d!!%!!3!3!!3!!J!
+"!*!+!3-!N!91*V`#!"%!!ri!&`2r!"J%!!!C"!%!'J!!!4@!hDr[`!8`fp48p2#
+I#6K492V8e4eCH9Ndf"ThNE"8#J,Y9 at 38$68540`54&hA&PY(39e38&"9(#N"A8`
+$S$Y1$8!&'"!3X&#532b6`pma5")0J-2C4X8$Bc*h*G+ at A&8Gd#90eIB%PGB&KE%
+Af`9XJXm50YSc6JG35(4PV63!Y)8!"#8d!"("%P,a99B5"8R"j#-V&!m#&CGC80I
+PeK8m'A0i5a2EI*A,*$300$A at AY-FY2b5YT@8a4AFFXJ0*pH6JdhE9A88m(a382'
+0J892!A54(@fTCDl#'j0aQ5!,5c at P%3kf@&13!-3)#4PV9GANE-EDP9Y9%&9"C40
+0*(K0!9c5-,!IF64N-I$N@%j6%i,j&6)dr!!&!*!%!Bi!!!#3!!!"!!m!#!!!!"!
+!!3#3$J%Z!!!!*!!!&R!!!!"1,$!!6L`S!%iX*2rr!%iX2+T9UP at U9DT9!!!!2!!
+!&Q`!N!8"!*!&#!!)!*!*5!!!!%J!N!8"!!%!!3#3"8iX,!#3"!'U!!!!)!!!&QJ
+!!!!"!!!!!3!!rrm!!!#3!!!"!!m!#!!!!"!!!3#3$(rm+!S!J3%F!!8!N!QA$%P
+ZFf9bG#"8B@*XC3!S#J!!!%3!6KA%!*!r4!"1&F3!N!Y3!!8!#`!%!!!!%!!"!*!
+,!3!!!!)!!!!$!!!!"!#3#cJ!6KA%!*!BJ!!!*!!!!!D!qVB&CS!!"3#3"!'E!!!
+!N!!!!3!2!!J!!!!3!!%!N!N4!*!&J!"1&F3!#!!!!&"*P!"35A`!8%PN!&"*6!"
+3563!8%NF!&"*"!"351`!!!!m!%i9a!)!#!!!!3!!!%EGZ`"'hEX",!!!!X,el!#
+3"!*m'$%!j5*&!!)!N!AC!%iR6!"1*'`!!!!B!%i9a!#3"33!N!@3!!!#!!i!#!!
+!!"!!!3#3"`S!N!8"!*!(#!!"!*!(+!"1&F3!!IqG!*!I'!"1&F3!N!8#!!!!%!!
+"!*!('!"1&F3!N!8#!!!!%!!"!*!(+!"1&F3!!IqG!*!(8!!#!!i!"!!!!"!!!3#
+3#`d!!J!'!!3!!!!)!!%!N!91*'3!6L(B!*!(,!"1&F3!!`!!!!`!N!C999Ie!!!
+!'!!!!"1*B,N)$%,X6riHIqrKe@@Q3SkJ!!8!N!3"Q!!!!*!!!!%!$`!)!!!!%!!
+"!*!13fpZG(*[E#"3B at jPE(-!N!3,!!"'D at jN)%CTE'8!N!3+!!",CANJ3f&`F`#
+3"!S!!%j[G'8J8'&N!*!%&3!!8Q9MC at jd)%&`F'aTBf&dD at pZF`#3"")!!&*PBf9
+ZG#"%Ef0eE at 9ZG(-!N!33!!"5C3!!!*!!!!%!$`!)!!!!%!!"!*!(#`#3$!X,#`#
+3*!%!!3!"!!%!!3#33e!!!3!2!!3!!!!3!!%!N%F3J0e[kFe[J(2VJSkkMT*33!!
+)!*!&$!#3"3J!N!8-!*!&#!#3"3`!N!8)!*!&$!#3"3J!N!8-!*!&"`#3"!')!!!
+!5!!#!!B!"!!B!!J!!3#3"!)#!!3"!!!$!!!!"!"1*i3!6L)J!%iRL!"1*i!!6L4
+3!*!E-!!#!!!!%!!!!!)!!3#3#8iNU!#3#`%!6L5m!*!,-!!#!!!!%!!!!!)!!3#
+3"`)!6Ld!!J#3"!%!N!8$!%iNZ!#3#c!!!`!&!!3!!!!)!!%!N!P!rjN!JImb!*!
+A-!!$!!8!"!!!!!J!!3#3#9,rQ3#Prc)!N"GJ!!)!!!!S!!!!!3!#!*!%rri!!!!
+"!*!%!3!!!3#3"!%!!!%!N!3"!!!"!*!%!3!"!3!!rrlQNJ!"!*!%!3!!!3#3"!%
+!!!%!N!3"!!!"!*!%!3!P!3!!!!`!N!AF!!!!!3!#!*!&b!!#!!!!A!!!!!%!!3#
+3#3%B!!(@4)S!N!C!J1D53)$JaJ!!!!%!N!935GJ!!2P8!!(j9!"1ECB!G!+X!%i
+bF!"d$E`!G!*b!!#%@J"1!*!9!3!"!!%S!!$P)N8!$!#3"%#!jT*!J1$'!!!!!3#
+3"9"*f!!!q93!!IP8!%jYPJ"d!U`!6M*`!(30[!"d!R)!!)4D!%i!N!P1+5J!6LM
+-MJ#3"!d!N!93)!!!!3!!!%!!!3!!!"3!(!!"!!%!N!91*q`!#!!!!!B!!!!#!!!
+!N!!!!!!"!!!"!!!!%3#3$%iRp!"1*V`!$`#3"@!!!!"8!!%!!!"%!!!!!3!"!*!
+&!`!$"NGPEQ9fB38#'`!%8b)!N!D!6MD8rrX!!%PA!(3#&LLN!!&B#!"c3J!!6LL
+-!%i!!!BM$E`!N!D%@J!+!*!%!T!!!!!!'!#3$8iXl!"1)L3!N!FU!*!*!Irr!%i
+Nc!"1*pJ!6LM)!!i!!!!"!%iS!)"P!F`!$J#3"4!!N!8%!!!!#!!"!*!(*!#3"3)
+!&!!3!!%!N"S"kJ#3#8iNE!!!!0J!!!$B!%iR6!!!!%iRG!"1*U#!9iRN)!#3$`(
+ at 4)S!!3#3#JX,#`#3*!%!!3!"!!%!!3!F@,%!N!NiX at -!N!8&!*!,25*&!3#3#&d
+L43-!!#i!N!@I)N8!N!R6)N8!N!J"$#*&!*#p!`!!!!`!N!F"!*!A6L4X!!!!JJ!
+!!38!%Rrr!6m!2!!q!BJ"LArr!8!!1`"1*'`!!!$'!!!""!!*!BS!N!3"eN5+!$X
+"M!'0Irm!!!!3!*!&"!!!!!S!!3#3"3X!N!A3!!!!2!!"!!!!,!!!!!%!!3#3"8i
+QA!"%!!-"h3*h!BS!Y!'D!QB!A3*P!BX#G3'+!Q8"L`*e!!!I4!#3"i3!6LJJ!!"
+I3!!!!Qi!!!C8!#F!!!!"!!!!!3!!!#F!!!'+!Q8!6LGX#!%!+J#3"!%!!CX!N!S
+"03#3"8iT0!#3"8iT3!"1)GJ!*`!!!BS#C3#3#9d#C3"G!R8!!"mN!%iNX!!"!!)
+!6L5J!%iQh!"1*Z"DcJ!!:
diff --git a/writerperfect/qa/unit/data/libmwaw/indeterminate/.gitignore b/writerperfect/qa/unit/data/libmwaw/indeterminate/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/writerperfect/qa/unit/data/libmwaw/pass/BeagleWorks_v1.hqx b/writerperfect/qa/unit/data/libmwaw/pass/BeagleWorks_v1.hqx
new file mode 100644
index 0000000..ab059fe
--- /dev/null
+++ b/writerperfect/qa/unit/data/libmwaw/pass/BeagleWorks_v1.hqx
@@ -0,0 +1,49 @@
+(This file must be converted with BinHex 4.0)
+:#R4PFh4#C@&RE'8!3PGhF%*ADh-"!!!!#H-!!!&Lml4#9fYc3PGhF%*AGh!!N!8
+"!*!(!3#3"J%A!*!%"D`!#3!!!!N!N!`"!*!%&`!$!!m!!!")!%J!N!3#m!*!rr(
+rlJ-*!P*M!J8S!r`"!!!!!@J"D!#3"!k`#d!!!3%!!'3!!3!!!!%!!J!!!!%R$`!
+"!*!1%!#3#4!!rlArTJmY#jS!#!%!N!dC!3!!!4F!N!J"&`#31!C(C at jPGQ%(3Qp
+[DfeKEJG$D'PMB at G[!!!'P!!!!MJ!!3!!"S)!!!!'!!-D&!!!!"`!4J!"Ge"[F`!
+!!"*69&)J!!!!(J2Trrm!N!Lrp2rr!!!!$!#3"'Yc!!!""!"D'*J,3Q9KCfaP9fp
+bDh-!!!!8!&SBQ!Y#C@&RE'9AEh*VF`!!!"3!@KLB#d*PB at GXC9G[FQYc!!!!&!"
+D'*J,3Q9KCfaP9fpbDh-!!!!8!&SBQ!Y#C@&RE'9AEh*VF`!!!"3!@KLB#d*PB at G
+XC9G[FQYc!!!!&!"D'*J,3Q9KCfaP9fpbDh-!!!!8!&SBQ!Y#C@&RE'9AEh*VF`!
+!!"3!@KLB#d*PB at GXC9G[FQYc!!!!&%%JFfPYF'aP)%*PB at GXC9G[FQYc)'CTE'8
+J1L"NC at CKG@ad)'C[ER3J4f9ZCACK)$%bF(30!*!&!3#3"Q*[E'3!N!8"!*!')!#
+3"3)!N!CTG'&XD at -!N!8#!*!')!#3"33!N!CeEQ4PFQaTEQ8!N!8%!*!')!#3"!%
+!N!GcGA"PFR0MFQP`G!#3"!-!N!GcG@*cBh*TF(3!N!3'!*!(GA"`CA*MBA0P!*!
+%$!#3"da29d953d&643#3"!J)!*!'Eh9dE'PZC3#3"4J!N!CcD'&NEhF!N!83!*!
+')!d!N!IX!*!%FQ9N)(4PH(3J!*!'!CJ!N!4RFQ9PEL"dCAKd)!#3"J%3!*!%H at 9
+XE'ph)!#3"f3!N!30!*!*!3!!BQp[DfeKEL"QEfjd)!#3#3-!!'0SD at 0KCfmJ!!!
+!2!#3#'0SD at 0KCfmJ0$K`G#`J!!!!1J#3#'0SD at 0KCfmJ-6"`G!!!!!B!N!8#!!!
+0!!%6!!"N!*!1%`%!Bf9ZG'9b)'aTEQ80!!%6!!"L!*!1%`%!FQPRD(3JE'PZC3d
+!!4-!!'J!N!i6!3"QG at aX)'aTEQ80!!%6"3"K!*!1%`%!-68`*5"TER4PFQaTEQ8
+0!!%6#J"K!*!1%`%!-M!`*5"TER4PFQaTEQ80!!%6!!"K!*!1%`%!!!-!"!-!!!%
+6!!"K!*!1%`%!EQ9h)(0PBh4TEfiJGfPdD#"dGfmJBfpXG at eZF`d!!6%!!(%!N!d
+&!#!!!!%J!$i!!!-J!&J!!!)J!(%!!!3J!)`!!!8J-3%!GfPdD#"cEfeP)(4KBR-
+0!!%V!!"K!*!0"!!J!!!")!!q!!!$)!"B!!!#)!"a!!!%)#X"!("KCf8!!J!#!J!
+JC'&dC5!!!J!$!J!J+$B[-c![-6-T)(4TE at 8J!!)!"!)!)#JJ1$Sa15N0!!%V!!"
+K!*!0"!!J!!!")!!q!!!$)!"B!!!#)!"a!!!%)#X"!!d"!0`!hJ$J!1)!j!%!!#3
+!!!!f!!!!0J!f!!!!0J!"!#"CM`!"!%J!!3&`6UeJ%L"I)"#`VICBCKS[$$m&-!C
+53$m!-!D3!%3r!(!!(`"1ZZrD%`!!B3#3$K1klm5k4f0)F!!`"NU!CLT`!$!()'h
+fY0#!)J$5JG#"FJ!b-!J%5S&Q%#m-2`F`"j!!46m!6VV`I'!@,``r"h!!-!Gb!$)
+&N!#"8N!r!%kkm'49Mbm-2`Fr"A!"(`"1Z[e5,``r,ICB2bhf at Mm&2`3I,[rr6VV
+cR"eZrrN0!3d"$3%0!3$F!0i!i!$L!1i#!!!N!!!!0J!!!$B!0J!!!$B!!3!S!!%
+!!3&`!!%"R3!#!BiJA`'G!Chf@'BD,``r"6!'8N!r!$!'N!"%2`"`!"m!6VV[fK-
+!!'%!N!i6ZZr%ZNGM5(!!-!C+J'BUF!!`"b"YpV63J#)!dS(3JA)!-M!)"%U"CK!
+[$$m(-!H3!%8r!%kkm(aJ&Lm-2`G`!$!(FJ!b"C!!J9*!2`"1Z["N9Bm[$$m(2`9
+`!4m!6VVp8Lm-2bhf@$mYpPSr"6m%(blrrdkkmj`GE[rj$3%0!3d"G'KP)'C[Eh4
+PFJd"!!!"!!1`!!!%X!$N!!!&P!$Z!!!"`!!!!ki"$3!-!!!!)5!!!!!#!*!&!J#
+3"!%"I`&%!*!%!Dd",!!`!!!!)5!#!!!!J!!I!!!!J!!I!!%!L!(X!*!%!Dd",!!
+`!!!!)5!#!!!!J!!I!!!!J!!I!!%!L!(X!*!%!l$rN!3!A"Q8!!%!!`!3!&`CN!!
+!!3!3!!!#)!!!!L!!!3&)!#!!N!3"i!!"!UJ#G3!!,`%[#`&J!P8!(`!3!8J!9J%
+d!'8"03!"!!%$+!!!!S3!!2r`!*!%!aJ#C!!!!%J!!!")!%J!!!")!%J!!!")!!!
+!!3"F'Ca#3!"aFHS!FA(U!(&akJ#3"J1Z!!!$VJ&%!!!#(!!!%`!!B3#3$K1kl`!
+")!!q!!!$)!"B!!!#)!"a!!!%)#X"!!!%)$%"!!!&)!#39J%"!Im"N)J!A"QB!!%
+!E!!-!!!!)5!!2bJ!$NKZm[%!!!%!!!!"(!!!!"`!!!"'rrrrr-b3"1$Xc*!%rrr
+mcrrrc*!%i1c-c-c2rrm-+R4PFh4#C@&RE'8`!J)!!!"#9hG`3PGVF`#3#%*AGh"
+#9fYc!*!BcI at E+3#3"J&Lc*!'crrrc1$YhrrrlT!)rrrpi!lrN!i!$rrrc*!+rrr
+`rrrmc-c-hGhGh-c-c-rrN!61lZlZc-c-cZlZlXcrr`rqlGhGhZk3"0hGhHl[m!!
+!!$B!!3!"!'3!!3!"!b!L!!!"!"J!N!3)!%i!!J(F!RB!!!!-#d*PB at GXC9G[FQY
+c!!!"!!!!!4`!!!!F!!!!4J"F(6JD&!!!!"`!4J!"Ge"[F`!!!"*69&)J!!!!(J2
+Trrm!N!Lrp2rr!!!!$!#3"02[:
diff --git a/writerperfect/qa/unit/data/libmwaw/pass/ClarisWorks_1.0 b/writerperfect/qa/unit/data/libmwaw/pass/ClarisWorks_1.0
new file mode 100644
index 0000000..3d3118a
Binary files /dev/null and b/writerperfect/qa/unit/data/libmwaw/pass/ClarisWorks_1.0 differ
diff --git a/writerperfect/qa/unit/data/libmwaw/pass/ClarisWorks_2.0 b/writerperfect/qa/unit/data/libmwaw/pass/ClarisWorks_2.0
new file mode 100644
index 0000000..8526384
Binary files /dev/null and b/writerperfect/qa/unit/data/libmwaw/pass/ClarisWorks_2.0 differ
diff --git a/writerperfect/qa/unit/data/libmwaw/pass/DOCMaker_4.hqx b/writerperfect/qa/unit/data/libmwaw/pass/DOCMaker_4.hqx
new file mode 100644
index 0000000..e282534
--- /dev/null
+++ b/writerperfect/qa/unit/data/libmwaw/pass/DOCMaker_4.hqx
@@ -0,0 +1,1496 @@
+(This file must be converted with BinHex 4.0)
+:#(4PFh3ZC'dd!%&38%a%Dd"3)3#3"J%Ka9,!!*!%!3!!!4Y@!!%D9J!!"Qm!N#!
+)G'9cG#jNE63!!J!!!%&38%a%Dd"3)!#3#d&38%a%Dd"3)!#3&md63hd!N!8")F8
+!N)3 at mf!+!!"$4%9'!"i!!%MRi-K1ZJ$b3IVrkL!)S&91ZJ#3!%cI%`G1qJ%@3IV
+reY(m!!!@lb!)S&91G8MR"J"C6b"[!"!LE`!8,#m!'"kB(eJ!!4pB!!)I@!!$+KG
+d!'"%%KJ3!3*!!)"R$0)"%!&)J%M!e)"J+"k"(eJ!!4!"!N!!3'F--"IP51*!5-$
+8J'!1(eJ!!KpB!!-N&q at +iS,GX5J!8i9+K at ki@%p-h`"J6R9)ja!J*%!J,!!!*JU
+ at J'G!5S"Q(%)X!!3`2+LITdB[#$!mSCLM4V(I9X"%!"P!!!3[!bm+6VVr4#m!6VV
+r6Nr[!!`T5J!!5L`!"'F%F!'KQ%cI"!K1G8(kr[V4r!!!&ZSJ#+"9`Ba1G5"I)NM
+5f,#BE!*1dE#BE`*1d6)BX*KQ"0$36Y"85&(*rr41d8je51F3)&P2*'m!&LB[!""
+#Pc![!"3-3!!,BPc33$!l!!C1q`!#!"J!)J!b!$`!8J"5!&)!5J"5!&)!8J"5,`S
+[!dkk#cjJ-&P2,`S[!dkk%!)J(bk!B#![#Lm$6VS4LQ!@,`S[!cm[!#*1ZK'`B!J
+[#Lm$6VS6%#pA!"aB6dcI"!JJAdr[!!a1d&92)'m!"L*[!!S`+3!#X'J!!QBb)'m
+!"L*[!!S`+3!'X'J!"QBJ)'m!"L*[!!S`%E"3CK)JE`!')Qm!#M!T!!5`D!!%C`4
+`!'!#F!%I3!!"(fm!!3!19%mJAe"26Y")jai`6qrrcL4[!&3QE`"32#m!6L"51#J
+!&L"51LJ!&#"50LJ!%VC%E`SJ8M&%!")f"'!-YN9X##"5-88!%MB&,Va!!)!!3Um
+!"%*[!!J`!j!!46p!!!T)E`!+5'm!$Mmm)!kTkc!%8d!r3!!85'm!&%K[!"Jr2#!
+1UHX[I%!&lJ!!(N+[!#*#E`!Q5'm!&%K[!#)r2!!'UHY)E`!+5'm!)Mmm!!5TkdK
+A5'm!)Mmm!!#Tkbp[!"i!+#p[!#)!,$p[!#B!-&9298pC6dK[!$#S4#!I,`#SE$!
+I5-![!+KV-"mf!#m,F$V34Mm!3QG`5Y"'2`!r2!!1U+FN5c!U!!,33c9!!!)`+J!
+'d%-e3!!'6qm!-NcI$(JJAdr[!!T1d%MR(M"2lrqZ(#m!EN)[!"%[,`"b)&qJ+8S
+'C`!!eL"[!()N8&P25(J!6L!IS5)ZL#"I*8J!(#"U!"`J8$&U!")!4P92UC3`(b"
+U!"`J8$&!!%KC6kMB)&mLDJ!F)P%M5!!B at 8qSf#"I)QS!(#*4)dJ!1&P2U0JJAb*
+U!"`L850)!#KC6kMB)&mLDJ!F)P%M5!!F at 8qSf#"I)QS!(#*4)dJ!*&P2U0JJAb*
+U!"`L850)!#"C6kMB)&mLDJ!F)P%M5!!X at 8qSf#"I)QS!(#*4)dJ!-&P2U0JJAb*
+U!"`L850)!$3JDJ!F)&!JUJ!))@S!$!!%)'m!FL"3,bJ!(#"IS#P96b"[!(3J8#"
+S!"`[%#"[!(JJ8%KS!!K1Z[eU%"pA`%3!'J!JE`"b)&!LE`"b)P%LD3!F)P%`+3"
+'X'J!%PE!4!!B!#4[!()N8P#+0LS!"J4$!03%3`!39%0+"QB+5J9Q"NS%C`!$DNS
+%Cf*+"QCH5J9Q at Kpm!!%!%5m[!(*)E`"12`01Z[eF)'m!FL43*NT3LdK[!%Sr+`!
+#F!,38cm!U+JJDJ!F)&![+!!`U0dJDJ!F)&![+!!`5'm!6UMI)'S!(#"3- at S!%J"
+'B!!$"#"[!()J8#*[!()L85*T!"`L85+S!!JMD!!-!!3JE`"b)&!LE`"b)P%LD3!
+F)P%cD!!5!%C)E`"#,c`!!Irr,c`!%3!2U+G)E`!kF!l33cm!2c`!!A!Hd%-r!$m
+m!"'STdK[!#*`(G"$2`!r2!!"F#h33cm!2c`!%DLR5'm!%R!Xd%-r!$mm!!&`20"
+$2`!r2!!4U+G)9h!ld%-r!$mm!!%`!`C!!-3r!$mm!"'STb"[!()J8#"S!"`J8#&
+A!!JKE`!%!!a)E`!D-!-'3!$$2`!r2!!"-!-'3!$62`!r2!!4U+G)E`!U-!-'3!$
+52`!r2!!"-!-'3!$L2`!r2!!4U+F[,`"b5'm!6Mm$6VVm##"[!()J8#"S!"`N8#"
+[!()J8#"S!"`J8%KS!""`!Y"[!%`r!$mm!!%`,`"%98!r!$mm!"'STb"[!()J8#"
+S!"`J8#pS!"!!-LpS!"3!0L"[!()Q8#4,8)T)E`"#2bS!!Mm5U+K)E`!k2bS!!Mm
+5U+K)E`!L2bS!!Mm5U+K)E`!52bS!!Mm5U+K)E`!D2bS!!Mm5U+K)E`!U2bS!!Mm
+5U+K)E`"+2bS!!R!#d&)r!+LS)'m!FL"3)'J!(#"35'J!#$mU!!)r%ULS)'m!FL"
+3)'J!(#"35'J!%$mU!!)r%ULS5'm!-MmU!!)r%ULS)'X!(#"3,bJ!'+MG)'X!(#"
+3,bJ!1+MG)'X!(#"3,bJ!++MG)'X!(#"3,bJ!)+MG)'X!(#"3,bJ!(+MG)'X!(#"
+3,bJ!*+MG)'X!(#"3,bJ!,+MG)'X!(#"3,bJ!-+MG)'X!(#"3,bJ!0+MG,fX!#!!
+),fX!$!!-)'X!(#"3,bJ!'%K[!!bShb"V!"`J8#mS!$K)E`"'U0mJD`!F)&![+!!
+S5'm!2UMI)'X!(#"3,bJ!)%K[!#DShb"V!"`J8#mS!"a)E`!@U0mJD`!F)&![+!!
+N5'm!(UMI)'X!(#"3,bJ!,%K[!#kShb"V!"`J8#mS!$")E`"1U0mJD`!F)&![+!!
+d5'm!0UMI)'m!FL"3,bJ!(#"IS#S[,`"b)&qJ+Kp[!"%!GNr[!&*-h`ai)&p36dl
+36qrrm#"[!"3ZN!![D!!%!!3II!"M!!`II!"[!!dII!"Z!!iII!"`!!pC6bm[!"!
+r,`!JU"mJAbp)!!K+V`!)Ca![,`!)5'm!"+Mf,bm!#+QM6qm!%#"IA%p1d#m+6qr
+rm#"[!"JZN!![D!!%!!4C6kMB)&mN5#m+U(T)9kKl,eF!##p[!!3!$$mm%j!!5'm
+!#Nkkrh"`"Y"[!!Sr!$![!!jE3$m!U*-r2!!"U)Fr2!!*U)Sr2!!"U)P#CkL),bm
+!(+L%98m[,`!HU)``(h)'dQm!#Y*!A%%r33!+-#m!$&Y!8d"E3$p!!!K)E`!)2bm
+!$Mm[!!j`#G"[!")r!$![!"*D3$m!U+Fr2"125'm!#Nkkr[)[#UKj,`USf8r[!"!
+NAb"I8%p1d%MR%$"2lrl`*'m"+#"[!53ZN!![D!!%!!4C6kMB)&mQ5#m,U(T)9kK
+l2c`6L5"5)'J!(#"3)'J!1#"35'J!!NkkrT`r2"16)&)JD!!F)&!JD!!S)&")D!!
+#6VVqJMmm%iSJ8L"S!"`J8#"S!#!J8%KS!!*1Z[jS2c`6Lb"5)'J!(#"3)'J!(#"
+35'J!!NkkrNir2"1-)&)JD!!F)&!JD!!N)&")D!!#6VVq0$mm%idJ8L"S!"`J8#"
+S!#`J8%KS!!*1Z[iD)&)JD!!F)&!L8M!T!!k`D!!5E3!!VNS[!5"R3L"5)'J!(#"
+30LJ!4M"$)!K6J1'))&)JD!!F)&!JD!"!dF"$l`!))$`!!!%!SLj)E`!))&)JD!!
+F)&")D!!36VVq&L"5)'J!(#"3,fJ!%!%),fJ!&!%--#m"#PG!2d!"#M![!3T at 3$p
+!!3ir2"145'm"#NkkrBJJ8L"S!"`J8#pS!"!"##pS!"3"$$p[!3i"#M![!3T at 3$p
+!!3ir2"155'm"#Nkkr9K+,`%LCbir2"1))&)JD!!F)&")D!!)6VVp2Mmm%iiJ8L"
+S!"`J8#"S!$!J8%KS!!*1Z[dN,`ZSH5m,U0P2l`%360m-##"I6qm!$%l388mJE`!
+-,T!!,fJ!"!!%5&HSF%K[!!5SF#"[!"!JPb&[!!3!"&"2,Tp1G8MR(L!NE`!H1Lm
+!($`[!"Si,`!B0JCJ),T$CJ`[#Mm$(c`!!DP&B!J[#Mm$3LHT43a$IrpR"P*$YN4
+[h%cI"(JJAdr[!!T1d%MR($*2lrrJ1Lm!5KJ[!%3QE`"!*'m!2#"[!&![8!!B,fJ
+!"!!F5J4R"MBm!+9J!RB55&G)E`!F6VVr9#p[!!3!(#p[!!J!)%S%@%pR2NK[!!k
+SG$(&#kC+,`"'C`j)E`!5UNJ[,`!5U(0J$%K[!!UT%#m[!!USFcm&U)Fr,`")U)S
+[#cm55'm!(+P$,`Xr%Mm$U83[#cm52c`!!992,`ZT8$!I2`"1Z[m36Hm!'&P2,`X
+`&Y"[!&3r!$!Z!!,3E`"B2`!r%UJ,)"mQ!%S%Caa#H!ZQ3QHSKd*RU)S[,`!1U(-
+[#cm52bm!(+P%5S0@`%3!(d!!#8U$C`T96bm$U'X`(c5!(fm!#3"86qm!)%cI6$J
+JAdr[!"K1d%MR($"2lrlU+Lm",P92UC3`(cJ!)'m"-L"3)'J!(#"32bJ!5+QB*'m
+"-L458)Sf+J!'"%-!e!4$!""83e92,bm"0%*R3LG1Z[Bm%"pR8L"[!6)J8#"S!"`
+J8$pS!%B"&$"[!43J#&1!iBJJE`%b)&!JD!!F)&!JD!"!dF"$l`!8)$`!!!%!SLj
+)E`!8)'m"0L"3)'J!(#"35'J!%%kkqcS[,`%b)&qJ+5"[!6)N8#!&6VVcU!25!!!
+!&!!!!)%!"`!!!"3!,!!!!"8!HJ!!!"i"'J!!!"m#DJ!!!#!$"J!!!#%$9!!!!#)
+#X!!!!)%!UK!U!"&b!")!$%%!&'BQ-#S!%V"U!"4[($mm%ldJDJ!F)&!JD!!F)&"
+)D!!#6VVkB'!!!j3[,`%b)'S!(#"3)'J!(#"35'J!!N)R3LG1Z[YNB!!$G"!U!"&
+b!")!$%%!&@BQ-#S!%V"U!"CX($mm%liJDJ!F)&!JD!!N)&")D!!#6VVk$'!!!d!
+[,`%b)'S!(#"3)'J!*#"35'J!!N)R3LG1Z[X3B!!$)"!U!"&b!")!$%%!&@F1%#S
+!%A)!%J!-33!8CKi[,`%b)'S!(#"35'J!#"mm!!%I2!!"6VVkeQ!!!ZB[,`%b)'S
+!(#m3(c`!!8)R6VVk[Q!!!Xi3+J!4FJ!5!!a"!"jQ!!+q)'S!(#"35UJ!2'F!!V"
+)9kPb2fS!%J%8,bS!(#"IS#NJDJ!F)&!JD!!d)&![D!!#!!`[D!!'!""96dK[!!i
+`,`!)N!"[!"4C3$m!,c`!!`!#2c`!#5"U!"`J8"mS!%9#*b"U!"`J8#mS!$a)E`%
+U6VVmI"!IC`!!a$!U!"+`E`%8C`!!Z$9[!43!%L"[!6)J8#"S!"`J8$&[!43!4Lm
+[!6*)E`!)2`01Z[,%*NT3LdK[!!3r+`!#F!,38cm!U+JJDJ!F)&![+!!`U0dJDJ!
+F)&![+!!`5'm!#+MI,bm"-L"[!6BJ8#"S!"`J8%KS!!JI2!!"(c`!!8kkqE!`E`%
+8)!K6J1'))'m"-L"3)'J!(#"3)'J!30(!3qm!&#!m!!!"!+)Z5'm!&#"[!6BJ8#"
+S!"`J8%KS!""1Z[LQ,bS!(#"IS#TJ!!&i)'S!(#"35LJ!4'F!!@S3+J!4FJ!5!!a
+"!"pQ($mm%lXJDJ!F)&!JD!!i)&")D!!#6VVi$'!!!8![,`%b)'S!(#"3)'J!1#"
+35'J!!N)R3LG1Z[N3B!!")"!U!"&b!")!$%%!)QBF2c`6`#"U!"`J8#"S!#JJ8%K
+S!!*1Z[I#B!!!pLm[!6)JDJ!F)&!JD!!S)&")D!!#3LG#*dkkq-CJ!!$@%#S!%A)
+!%J!-33!JCLB`+J!5X'S!&'mF2c`6[#"U!"`J8#"S!#!J8%KS!!*1Z[GZB!!!SLm
+[!6)JDJ!F)&!JD!!J)&")D!!#3LG#*dkkq(*J!!##%#S!%A)!%J!-33!KCL3`+J!
+5X'S!&Q`D2c`6[b"U!"`J8#"S!#`J8%KS!!*1Z[FDB%i[,`%b)'S!(#"3)'J!,#"
+35'J!!N)R3LG1Z[JJB$"+K at BB,bm"-L"U!"`[%"mm!!%I2!!"6VVi"'!8,bm"-L"
+U!"`[%"mm!!&#*dkkpqi[,`%b)&qJ+Mm%UCK2l`%@60m-1#"I8%p1d#m+A8p96kQ
+8-"mqJ#"[!")J8#"S!"`J8$mS!%LTQ#m[!")JAk!T)'m!%L4398m[,`!3)'S!(#"
+3,bJ!-+MS%"pR(Lpm!!!!J3!#)'m!%L"3)'J!(#"3)@m!$J"+B!!"(&92,bm!%#"
+U!"`J8#mS!#LSk"!IC`T`)Lp!!!*J!!$m98m[,`!3)'S!(#"3,bJ!(+MS%"pR#R!
+8,d!!!Q!!!0a96bm[!"!JDJ!F)&![+!!NU1J3(fF+F"8[3!!#B!!![&92,bm!%#"
+U!"`J8#mS!$5Sk"!IC`T`(Lp!!!*J!!#F98m[,`!3)'S!(#"3,bJ!1+MS%"pR#(!
+I,d!!!Q"m98m[,`!3)'S!(#"3,bJ!)+MS%"pR#(!J,d!!!Q"H98m[,`!3)'S!(#"
+3,bJ!,+MS%"pR#(!K,d!!!Q"!98m[,`!3)'S!(#"35'J!#+LY%"pR*L"U!"`J8#"
+S!$!J8$![!"#`D!!%E!K`&#p!!!*J$(!9,d!!!Q!%3Um!!Lm[!")JAk!U2aHTQ#p
+[!!)!&Pa2*&mJAe"26Y"C6bm[!!`JAk!T)'m!$#k3!#m[!!LSh5"A)'J!(#"3,fJ
+!'!!),bm!$#"IS#TB6b"I8%p1d&92,bm!$$m[!!SI2!!"6VV[fK!I)&p2l`!+6Y"
+)jam`6qrraL4[!&SJE`"H,e!!-LpS!!3!0LC58)Xf+`!'"%-!e!4$!""83b"52LJ
+!&L"52#J!&$S[!$3J8MJS!!VB3ck'5&G)E`!%2c`J$URV,ha!"Hi!!!T#V`!13Qm
+!%M!(8d!r3!!85'm!&%K[!"Jr2#!1UHY)E`!+5'm!'$mm!!DTkc!&N!"%"%!!3&K
+!2d!!(NK[!"j)E`!L2c`J$URV5'm!&%K[!#)r2!!%UHY)9dK[!#)r2!!!UHX[E`!
+H!#J[E`!L!#`rE`!Q!$"96e92 at 8p)E`!`U%3J(bm!U'``(dM!,`#SDc!I1!!J8L"
+S!"`J8$&%!%BJ8M&%!")[#NK[!$Br!dkklDK)E`!b)&)r+!!+)&*`!Y"S!!Jr!+L
+S)&)JD!!F)&![+!!`U0dJ8L"S!"`J8#mS!$")E`!fU0p2l`!k60m-q#"I8%p1d%M
+R(L"2lrlN,bm"1#"IS#NJE`%i)&![+!!F)&qJ+992UC3`(c`!)'m"1#"3)'J!(#"
+32bJ!5+QB)'m"1#"3)'J!(#"3,fJ!5J!))'m"1#"3)'J!(#"30LJ!4L"[!6JJ8#"
+S!"`J8#"S!$!J8#pS!!)"&#pS!!B"'#"[!6JJ8#"S!"`J8#4S!$!JE`%i)&!JD!!
+F)&!ZU!!),fJ!$!!%5&F[22r1rq+SU5"[!6JJ8#"S!"`J8#pS!!J"$#pS!!`"%$!
+[!!U3!'m"&Y"[!3j53$p!!3i`,`%DN!"[!!Sb,`%5NN!r33%5 at 8m[#Lm[!"")E`%
+B5'm!%$mm!!&)H!!!U38J(bS!98m["DKV-"mi!#"[!6JN8!a%XH"[!!#@5'm"&$m
+%3QHSU%K[!43[,`%m6VVpK#"[!6JJ8#"S!"`J8,CS!%CR!!$!,bm"1#"[!6`J8#"
+S!"`J8%KS!!JI2!!"(c`!!8kkmc`JE`%i)&!JD!!F)&!f+!"'-%-J#&1!iBJJE`%
+i)&!JD!!F)&!JD!"!dF"$l`!-)$`!!!%!SLj)E`!-)'S!(#"35'J!%%kkmLTJ9#"
+U!"`J8#mS!$#Sh5"U!"`J8#mS!$")E`%BU0m`3b!)8i$KL#"[!6JJ8#"S!"`J8#"
+S!%$4`%2[!!`J2!!!!3#L,NK[!!`JDJ!F)&")D!!36VVae#"[!6JJ8#mS!"`JAk!
+U,bm"1#"IS#Sr"UQB6qm"(%cI"(JJAe"26Y!!N!`e")5!!!!!"63Z1#id+$3Z1#i
+d)+Na16Jf,6%j16JJ4h*PC at iJ6@peER4KD at iJ8fpQG(GKFQ8!!!!U")5!!!!!"63
+Z1#id(8423deKDf9b)&0dB at jN,8&XEfjP)%4[Bh9YC at jd!!!!RJ!4$d&LEh9d)%4
+23deKDf9bb34'D at aP#e"KCf8J8f9dGA$*#&"bD at jdb5p3$NpeG("eG#"8CAKdb5p
+2"dCTEQ6*,dB-4QPZC#""Cf&TELp(#e4bB at jcCQ9bb5p8"P&eDA3[834&C'Pd"&9
+ZC'm$3h9d"%0[F(N&8'&cG'8&3faPBA))3fpZG'9ZG(-59'&LE'8J6fBJ3fpZG'9
+ZG(2*!!!"Z`!F$90KGQ8J9%9B9#"8EmN29(*KER0QCA)JGfKPFQ8r#&4bB at jcCQ9
+b#&"bD at jdD@jR%P"bD at jdD@jR)%4[Bh9YC at jdb3T3FQpMCA0cD@jR&&"bEf0PFh0
+TEQFJ4'pMG at ePER6*(P0`EfpXD at jR)(4SC5"NEf0eE at 9ZG#"dEb"NDA0Vb3a5CA"
+KCfPZBA4TEQF%8'&RC6G%Eh9LE'8YBfaTBfXJB at iJDA4PE5"[FL"cC at aPBh3JB@i
+JDA4PE5"KEQ3JF(*PFh-JFQ9dGA*Z$%C[Eh4PFL"*EQC[b3K6C at aPBh4PC!*[CQY
+0C at e[FRNJDA-JGQ9bH5"XEhFZ)#"CEh8JFfK[G at aN)'PZBh*PBA0P)'ePE at pbH5"
+cDATP)'PZ)(4SC5"'D at jNCA)J+'0SEfpcC5$54f9d)%PZCQr6)(9ZC'9b)(4SC5"
+'D at aP)%ePER8T,JG$D'&`G'9b"5jdCAKd!D8%4QPZC!j3E'9KFf8JE'pMBA4P)!Y
+$E'pcC5"0EhCTC4C6D'ph)&4KBQaP)%pQ)%0[ER4PER4c&NKTC'8J9'&LE'8J6fB
+J3fpZG'9ZG(-"dJ(6!5i"1J%k!!!#+J)U!-X!*`$S!*J4!D!`13%!#J#3"!&@!J#
+B!"!!b`!J!1J!Q!$,!#F!k!#B!-X!*`$S!*J!!!i+!Iq!2!(Lr!2`!(lm!!i+!Ir
+!r`Iqr!2`!(lm!!i+!(MKjimq2!2!!"lm!!i+!(KK`iiH2!2!!"lm!!i+!(Kc`pi
+12JI!!"lm!!i+!(Kc`pi12JI!!"lm!!i+!(Kl`pi'2JI!!"lm!!i+!(Kl`pi'2JI
+!!"lm!"%2!(Kl`pi#2`r$i"jrM`r-!"%2!(Kl`pi#,`[(q"jr[mrH!"%2!(Kl`pi
+#,`[22"iHHH2c!"%2!(Kl`pi!,`[2("iFF12R!"%2!(Kl`pi!,j[2(KiBm22[!"%
+2!(Kl`pi!*j22(Ki`m222!"%2!(Kl`pi!*j2'(KiJm222!"%2!(Kl`pi!*j2!rKj
+Jm222!"%2!(Kl`pi!*r2$rKjJm22'!"%2!(Kl`pi!)q2(RKl`rr2!!"%2!(Kl`pi
+#)q22(Kl`rr2!!"%2!(Kl`pi#)q21(Krim!2!!"%2!(Kl`pi#)q2H(Kpim!2!!"%
+2!(Kl`pi#)F2H(Kpmm"2!!"%2!(Kl`pi#)F2H(Kimm"2!!"%2!(Kc`pi')F2H(Ki
+qm"2!!"%2!(Kc`pi')F2H(TiHm$2!!"%2!(KK`ii%))21(TiIF#2!!"%2!(MKjim
+-F)222ji2H12!!"%2!Ir!r`Iiq)rhlrqrrmr`!"%2!Iq!2!(`q)raahqrc`r`!2m
+!!!!&"%CTE'8!!!!&"&&eDA3!!!!V!!%!N!Mrrrrl!4323@*[GA3J4%p$6@&VCA,
+*!*!%!5d!N!K)!!-!N!E,e2rrrrX%4 at 4TG!49EQ4[!&S!!!%Y!*!%!d0eG!"B!!!
+%3fp`H3"$!!!&8'&cG'8!9J!!"80XC@&b!*!)&!!#!*!)rj!%"%CTE'8!N!3c!!3
+!N!Mrrrrl#%0[ER4PER4c&P0SEhFJ9'&LE'8J6fBJ3fpZG'9ZG(-!5`#3"3%!N!V
+rN!8!N![rN!8!N!JMN!!M$`J)$`#3"%H3"C!!N!-)#!K(4dF!!04NC'53!*!$#2m
+)#'4N4`!!e'4NN!#3!`m)r`J)C'4(!!$8C*'3"!m2r`m)C'4(!!$8NC!&$`rr$`q
+4C%F!!04NNC!&$`m2NC'44`!!e'4NNC!&rj'4N50(!!$8C'4NNT!%rj+5C'4(!!$
+8C*!%NT+5rj*NC'4(!!$8C*!&NT+5C*!%4`!!e'53"T*NN!9(!!$84j!0!!$8N!d
+!N!@!!*!%$rrr!*!&$rrr!*!%0c,-)!!$-c0hI-`c-!DlYhI2c,X`"VYhFXr-Zc!
+'YhGb,bbl-!ChGh)[)RX`"VGhGb)RGc!'ZhGhIhGc-!DlYhGrGlX`"VZlGhplZc!
+'ZlZhGlZl-!DlZlYlZlX`"M13"M!'CT!'!*!%3!"m!(`$b(k1I8jl6R2ZBrjapRM
+ZI&jqIRpqIrjrrRrm!(`!I!2iIrjrrRrqIrjrrRrqIrjrrRrqIrjrrRrqIr`!!!#
+!!!'!!!!#3!$rrrrmJ!!!")!!!!D"(()'J4*+"S+55JD#R()'K&"#"SI33JD%8%2
+'J!!!"S!!!!ErrrrqrrrrrUUUm(p&9F!c)UZB&K&@*!`)[rr'"&BB!`)VJ!-"&F!
+$!)T`!`"&Vr-!)NBI!"'-!!!)'!!!"$!!!!*J!!!"`!#3")!!N!RrrJ!"J!-!!cr
+jJ!Crr-!-rrjJ'Irr-$2rrjJRrrr),rrrl#rrrk`[rrmX,rrr,#rrrb`[rrmX,rr
+r,#rrrb`[rrmX,rrq,#rrr'`RrrM--rraR"RricJ-m!C`"Q!-i!-rqF!"J!1!!2r
+r!!!rrJ#3$)!!N!8$!!!!"i!!!!I!!!!-i!!!#f!!!"Y`!!!AX!!!0lJ!!#rB!!"
+Xh!!!@'`!!0KZ!!#iGJ!"Z(F!!AKl!!0iHi!#q(f!"[Kp`!AiIX!0q(lJ#rcrB"[
+rrh!Ar2q`0rKrZ#riIpJ[r2rF,rrrh$!!!$`rrrrm$rrrq!#3"i$rrrrqJ%!!!S"
+IrrU!ArrlRerrqi![J(ZI,`!lKLjlQi!Z!"Z!,J!EJ#lqfi!Z!"Z!&J!EJ"B!'i!
+ at rlZ!&J!EJ"B!'i!@[GZ$&J!EJCB!'i$fFcZ!MJ"lJ,i!qi#i$rZ2S2rlKMrrqi0
+rrrZ"IrrlJhrrqri!!!2rN!3Irrrr!!!!J2rrrrk!3!!#J&rrqS"IrrZIArrlJ#q
+!Hjm[!$Z',J!EJ#i!'i!Z!!Z!,!),J#`'#i!8#JZ!&"i,J"3L#i!8C`Z!&!!,J"3
+!#i-@!"Z"PJ!EJ2B!1i#1!(Z![J$lJ,J2qiqJrrZ'2rrlJhrrqi&rrrZ$IrrlrJ!
+!!rq3""rrrrm!!!%!N!FIi!!!(k!!!"rJ!!-33!!%S%!!#%#!(r#!q"!K%)Jh`K$
+S0iB3k$F'%1Jf"M$S0!CBk$J(@@Jd"c%S-J1L'$8"j"JfJ2JS0d!`5$HJ%+Jhd"&
+S0qJ5k$Id"HJhqJ[S0rdAk$IqVqJhrerS-!!!#$rrrrJrrrrJ!*!+(q!!!"rJ!!!
+Ii!!$(m!!"lr!!!rrJ"rrrrJIrrri2rrrq$rrrrJrrrri2rrrq$rrrrJrrrri2rr
+rq$rrrrJrrrri2rrrq$rrrrJrrrri2rrrq$rrrrJrrrri2rrrq$rrrrJrrrri2rr
+rq$rrrrJrrrri2rrri!#3"J3!N$6rN!J!N"MrN!B!r`#3'2q3#!#3%b-M!!!!$`L
+3"3m!N"-MN!#3!#-!$`L3"Jm!N")MN!#3"!m)N!B2!*!+4j!))j!!N!32#*!($dH
+3"!#3"NF!N!BMN!#3"!m)#!Mr#*!%$`!!!%F!N!A84`"NN!3MN!#3"!m)N!6r#*!
+%$f4N!%F!N!A84`"NC'3MN!#3")N2#*!%r`L3"!pNC!"(!*!&e%F!C'3MN!#3"BN
+2#*!%r`L3"!pNC!"(!*!&e%F!C#14N!D*$`J)#!rr#*!%$f4N!%F!N!A84`!MNC!
+(L3m)#!q4r`m)#!J2C'3!4`#3"G4()j'3#)N2$`J2NIm2#!J2N50N!%F!N!A84`!
+MNC!(L3m2#!J2$`J)#!q4N5-!4`#3"G4(!!!MNC!(L3m2#!m)#!J2NC!%)dF!N!A
+84`"N!#14N!H*$`m2#!J2NC!&)dF!N!A84`"NC!!MNC!(LBQ*r`q4N!8M!%F!N!A
+84`"NC'3!)j'3#)RrNC!&)`!!4`#3"G4(!'53"!!MNT!)rj+3"#-!C!"(!*!&e%F
+!C*!&!#15N!IrNT+5)`"NC!"(!*!&e%F!C*!'!#15N!ErNT)M!'4NC!"(!*!&e%F
+!C*!(!#15N!FM!'53"!"(!*!&e%F!C*!)!#15N!8M!'53"3"(!*!&e%F!C*!*!#1
+5NT)M!'53"J"(!*!&e%F!C*!+!#15)`"NN!F!4`#3"G4(!'53#`!M!'53#!"(!*!
+&e%F!N"K(!*!&e%H3'J#3"G53'3#3*`)!N"S2rrrrm!#3#`rrrr$`!*!,$rrrrr!
+!N!Nc!!,-c-)!N!N$Gc!Xc-c#!*!*0hGbc-c-)!#3"!-cN!4hGbc-c-`M-c!!!!-
+!!!!hGh,-cmc-)!!`!!"M#lZcGhFXc-r-c#Z`-!!!B`Zl0hGk,-c2c-`VX$!!!'-
+,XhGhHLc-cmc-+l!`!!"M#cGhGhSXc#r-c#Z`-!!!B`0hGhGk,-*r,-`VX$!!!'-
+hGhGhHL,#Ibc#Fl!`!!"M!hGhGhSLc#,-`RF`-!!!B`!hGhGhSL`Xc#GhFc!!!'-
+,!hGhGhSL,-*hGh-`!!"M#l!hGhGhUUmRGhF`-!!!B`Zl!hH3"+phGh-!-!!!B`Z
+lX$GhGhGrGhF`X$!!!'-,ZlX$GhGhIhGc#l!`!!"M#lZlX$GhGhph-,Z`-!!!B`Z
+lZlX$GhGhF`ZlX$!!!'-,ZlZlX$GhGc#lZl!`!!"M#lZ3"!0hF`ZlZl!`!!"M#lZ
+3",!h-,ZlZl!`!!"M#lZ3"3-,ZlZlX$!!!'-!N!``!!"M-j!--!!!CT!-B!#3&3G
+"8&"-!*!'&J"k!)S!f!(3!!%!N!R)!9J!!!!@!#B!(!$Z!9S!!3#3#B3"@!!!!"B
+!*3!1!2X"@J!"!*!*JJ&B!!!!'3!Z!!B!M`%j!!3!N!J"-J4'D at jN!!!#B!!r!#F
+!m!'R!!%!N!J,Z!#3"3B!QJ#GL0FJ8h4KEQ3J3 at a[EQ8J4'pMG at ePER3J3h*PBA4
+[FJdJN!PhFQPdG'9Z)'*j)%eKFQXJ9f&XE!dJN!fT-6Ni0L!Y)$%j16F0)%&XE#"
+5D at GSG(-J8Q9cCA*fC at 3J9fpbE'4hD at 4P$3dJN!C(FQ9PEL"0Eh9ZG'&TEL"6EfC
+dGf&bC3dJN!Bj0$!d)&CKE'aPH5"-B at jP$5#3"NKeER4cGQPXE'8X)%&-$5#3"M-
+e1$!c,6%c-MBJN!498d%#!*!&#`#L!%X"GiME4%p$6@&VCA)JDA-JB5"cD'&bCAG
+KFQ8JF'&MDf&RC5"QEh)JBh*PBA4TEQFJFh4KEQ3YB at a[EQ8JC'pMG at ePER4c)'C
+[FL"MEfe`GA4PFR-JFR9ZEQPZCb"eEQ4PFL"0B at 028kSZ)#"8D'8JC'pMG at ePER3
+JH at pe)'&bC5"bC@&ND at jR)(GKFb"MFQ9KG'9N)(GTG'JJ4%p$6@&VCA)Z)#"$Efj
+dB at 0d)%GbC at 9Z)%e[G at jdB@PZ)&0[CR4hBA*P)'C[FL"XD at 0PER0TEQFJD@jQEh*
+YBA4TEfiZ!J#3"8m!SJ#S!AZ)@N&26$SJ)%e69d&-6!eRFQ9PEQedEN"SFhBZG'P
+c,QjPG!eSG(4`1Lm[GhGh,QKcGLjdDA-ZEQ9d,hjRFQ9PEQedELm0GQpTBf8[4N&
+B)$)`05ii1$-Z-$-h-`#3"Ci!"J#X!&Q)#(Bd,MFZ-Q3e!!!!6!!#!*!&#3!+!"N
+"3)J#AM!!N!8J!!S!3!&!L!*H-3#3"88!6J"A!3D)(&"bCA0c)#J4)#"`CA*TEf3
+T)(4[)'0KEQ0PE#i!!!#b!!F!N!@[!28!``%`"!*25`#3"Dm!V3$$!1J%"N0KEQ0
+PE!#3"Dm!9`$$!+!%#9"bD at jd)%&XE%m!N!8H!!S!-J"Q"!T6C at aPBh3J3@aX!*!
+&03!*!+J"-!#3"ai!E!!b!5@)#90PE'9MG'9N1J%!N!8&!!S!&`%QL"P6C at aPBh3
+J3fKKF(4PFR-J9'mJ8(*TER6*l3#3"4N!#J!E!6#%!*!%[J!#!*!&#3!&!#N!*D!
+#!)!!N!93!$)!dJ&*!*!("J!X!%J"4SL3!&4SDA-JC'pMG at ePER3JGf&c)'0bC@&
+dC at 3JGA0TEQFJCQpZG(-JGfKTBfJJBA*P)'j[G#"KGQ&TE'&LE'8JEfiJG'KTFb"
+0B at 0TER4[FfJZ$8&XG'9bEQ&dC5"QEfjdFb"hD at aX)'*P)(9cC at 3JD@iJF'aKBf8
+JEfBJG'KP)'C[ER4c)'aTFh4PC#"SCA*P1J!!!))!"3#3"8%!#J"9!%X%"%CTEQ3
+!N!9"!&m!93#J"!4%EfjP!*!&#J!Y!"S"*a!!N!BM!!S!03"V"3T0BA4MD#"$BA0
+P!*!&)`"Z!$8""3868f9KFQ0S)%&XE#"$D'&`G'9bF`#3"JS!#J!E!#U)"8CTEQ3
+k!*!%+!!"!*!&@!%3!'`"5`3#6dX!N!8(!%S!5`&,L!KH-&iaAM*H-`!!!P`!"!#
+3"3B!'3!M!)V!!J#!!*!&+!!)!*S!RiMA)&0dB at jN)%&XEfjP)%4[Bh9YC at jd)%0
+bC@&dEh)0)*!*Gh*TG(4PEL"LH5"0BA*V)&GKE'`0)*!0U6%j1$BJ,5!a16Ni$5"
+"E'`J8QPRD(4c)&*PFf9bGQ9N)&G[FQaNGfPNC3d0)*!'4h*PC at iJ6@peER4KD at i
+J8fpQG(GKFQ80)*!'163`0#"@B at aXCANJ6'&ZC3dJN!C)G at jdFhCTE'aP,#""6!d
+JN!Bc06J`-bda-c)f)*!%990"!J#3"3X!SJ",!AH)fN423deKDf9b)'Pc)'%JFfp
+QG(GKFQ8JF'&MDf&RC5"QEh)JBh*PBA4TEQFJFh4KEQ3YB at a[EQ8JC'pMG at ePER4
+c)'C[FL"MEfe`GA4PFR-JFR9ZEQPZCb"eEQ4PFL"0B at 028kSZ)#"8D'8JC'pMG at e
+PER3JH at pe)'&bC5"bC@&ND at jR)(GKFb"MFQ9KG'9N)(GTG'JJ4%p$6@&VCA)Z)#"
+$EfjdB at 0d)%GbC at 9Z)%e[G at jdB@PZ)&0[CR4hBA*P)'C[FL"XD at 0PER0TEQFJD@j
+QEh*YBA4TEfiZ!*!&6`#L!+J"HiKD38p-1L!J690A38a-$@GbC at 9ZEA4Z3'KcGLj
+dDA-ZEQ9d$@KdG(!k,bphGhFZD(0f,R4TFbjZCA3[IQGbC at 9ZEA4Z,`efEfPMC5p
+'39JJ-M8f,MJi-bi`-cFc!*!&RJ!'!+`!@BJ'GM3Z1#id!!!!'2rr!Ed"(3(0!*!
+%!C!!!!!!%!#3"!&i!!!!'!"N!$)!I3"e!!%!!!!+!!%"i!#3"!&K!!!!(%4V3&!
+!!!!"4P*&4J#3"B"*3diM!*!&J!!!!!`!,J"!!+3"P3#"998!!!&N!@3!N!83!"!
+!%3,r$!$rN!3!N!N3!!!!%!#3"k!!JJ!H!!%!#J#3"4!!%!#BJ"!!N!83!"!!N!P
+)!!!!5!#3"3J!!3!)!*!&k@!d!*!'&0B!!!!%!!$rN!B!!Gf3"J!#Gj!'!!-LN!B
+!r`#3#a!!%!#3"4!!%!!!![(r"`$rp!!"![m)!Im!p3%"![m,![m!!IJ$!`%"![m
+2"Im!!3-#!2`#"!-"!3,r#`,r!!(i!`-"!3,r$`2r!!%$r!!'!J)$!3%#r`i%r`!
+"!`$l!J3$!3%#r`m$r`!"!r`!"J)#!`%"![m1"2m!!3-!q`)%!`%"![m2!rm!!32
+m!!B#!J-"!3,r#`,r!!(i!`-"!3,r#!(r!28"!3,r#!(r!28"!3,r"J$rm`)!r`,
+ar`#J!)-!r`!!!AS"HJ#3"4!!%!!4![m-!2q3"!#3#4!!!!!3!*!(S!##!"i!!3!
++!*!&%!!3!*L!%!#3"4!!%!#3#8J!!!")!*!&#!!"!!J!N!ATCD`!N!B9Y!!!!!3
+!!2q3"J!"hC!'!!*hN!B!!b+3"J$r!*!,%!!3!*!&%!!3!!!#mIm(!2rd!!%#r`J
+"r`$e!3%#ra!%r`!"!!2p!3%!!ri"!3,r%36r!!%!!ri"!J!$!ri"!3,r%!Ir!!%
+!!`%"!2i$rJ%"![m2"[m!!3!$!3$p!ri"!3,r$JAr!!%!!`$m!ri"!3,r$`Er!!%
+!!`%!r32q!3%#ra!(r`!"!!-"!3$q!ri"!3,r%36r!!%!!ri"!J!$!ri"!3,r%!6
+r!!%!!rd"!3!$rJ%"![m)!Im!p3%"![m)!Im!p3%"![m'!2rc!J$r![(r!!#J!)-
+!r`!!!@B"CJ#3"4!!%!!4![m-!2q3"!#3#4!!!!!3!*!(S!##!"i!!3!+!*!&%!!
+3!*L!%!#3"4!!%!#3#8J!!!")!*!&#!!"!!J!N!ATD"!!N!B at 5!!!!!3!!2q3"J!
+"hC!'!!*hN!B!!b+3"J$r!*!,%!!3!*!&%!!3!!!#mIm(!2rd!!%#r`J"r`$e!3%
+#r`d"r`$l!3%!!rd"!3,r$J(r!2`"!J!$!rd"!3,r$J(r!2d"!!$q!rd"!3,r$J(
+r!2i"!!$p!rd"!3,r$36r!!%"!2`$r3%"![m1!Im!rJ%!!2d$r3%"![m1!Im!r3%
+!!2i$r3%"![m1!Im!r!%#!!-$r3%"![m0!Im!q`%"!!2p!3%#r`J"r`$e!3%#r`J
+"r`$e!3%#r`B!rr-#!2m#mIm!S!#$!2m!!!&H!9i!N!83!"!!%3,r$!$rN!3!N!N
+3!!!!%!#3"k!!JJ!H!!%!#J#3"4!!%!#BJ"!!N!83!"!!N!P)!!!!5!#3"3J!!3!
+)!*!&k@(d!*!'&iF!!!!%!!$rN!B!!Gf3"J!#Gj!'!!-LN!B!r`#3#a!!%!#3"4!
+!%!!!![(r"`$rp!!"![m)!Im!p3%"![m-"Im!!3%!!rN"!3,r$3Er!!%"!!-$qJ%
+"![m0"2m!!3%!rJ2l!3%#r`d%r`!"!3$p!r`"!3,r$36r!!%"!2`$r3%"![m0"2m
+!!3%!r32m!3%#r`d%r`!"!3$q!rX"!3,r$3Er!!%"!!-$qJ%"![m-"Im!!3%!!rN
+"!3,r#!(r!28"!3,r#!(r!28"!3,r"J$rm`)!r`,ar`#J!)-!r`!!!Ai"IJ#3"4!
+!%!!4![m-!2q3"!#3#4!!!!!3!*!(S!##!"i!!3!+!*!&%!!3!*L!%!#3"4!!%!#
+3#8J!!!")!*!&#!!"!!J!N!ATCU3!N!BB2`!!!!3!!2q3"J!"hC!'!!*hN!B!!b+
+3"J$r!*!,%!!3!*!&%!!3!!!#mIm(!2rd!!%#r`J"r`$e!3%#ra!%r`!"!!2p!3%
+!!ri"!3,r%3Ar!!%!!`2q!3%!!ri"!3,r%32r!!%!rJ-$!3%!!ri"!3,r%!2r!!%
+!r3-#!3!$rJ%"![m2!rm!!3$m!`%!!ri"!3,r%!2r!!%!r3-#!3!$rJ%"![m4!rm
+!!3$q!`-"!3!$rJ%"![m4"Im!!3!$!ri"!3!$rJ%"![m3"2m!!3!$r3%"!!2q!3%
+#r`J"r`$e!3%#r`J"r`$e!3%#r`B!rr-#!2m#mIm!S!#$!2m!!!&Q!@B!N!81!"!
+!%3,r$!$rN!3!N!N3!!!!$J#3"k!!JJ!H!!%!#J#3"4!!%!#BJ"!!N!81!"!!N!P
+)!!!!5!#3"3J!!3!)!*!&k at B8!*!''1m!!!!&!!$rN!B!!AH3"J!#)T!'!!1UN!B
+!"1k3"J$r!*!,$J!3!*!&$J!3!!!'!!(c!!!#"`%"!23$!!)(!3%!p!-!!JF"!3$
+d!`!#%!%"!2i$"33#"!)%![d$!!)4#`%!!`-%!J)%!J3#![i$!!)4!`%!!`6q!J)
+%!J6q!J)$!`)2!J%!"2d#!J3#"2d#!3-#%3-"!!-%rJ)#"!)%rJ)#!`-#%3X"!!-
+$"!)#"!)%!J,q!`!#%!%"!2i$"33#"!)%![d$!!)(!3%!p!-!!JF"!3$d!`!#![%
+#!+!!J`$r!!!!e!$8!*!&"3!*!"%#r``!rj!%!*!*#3!!!!8!N!HJ!))!(J!"!!S
+!N!83!"!!Q)!+!*!&"3!*!*!*5!!!!%J!N!8)!!%!#!#3"HPN3!#3"KQY!!!!!`!
+!rj!'!!(GN!B!!L+3"J$r!*!,"3!*!*!&"3!*!!!%q!)!!!F!!IS#!3%b#3%"!I`
+#!J%""!Mq!Ii#rJ%!$!Mp!3!#r3%!r`!!S!#$!2m!!!$5!0)!!!!,!"!!$3!4![m
+-!2q3"!!,!*!($3!!!"!!N!HJ!))!(J!"!!S!N!83!"!!N!#!!J!!!!X!%!!0!!!
+!!3#3"8J!!!")!*!&#!!"!!J!N!ATD&J!N!BXE3!!!!3!!2q3"J!"hC!'!!*hN!B
+!!b+3"J$r!*!*#`!3!!d!!!!,!"!!$3!!rrm!!!'3'!)#rrm!S!#$!2m!!!$b!2)
+!N!83!!-!%3,r$!$rN!3!N!N$!!!!%!#3"k!!JJ!H!!%!#J#3"4!!%!#3!)!%!*!
+&%!!$!!!!!3#3"8J!!!")!*!&#!!"!!J!N!ATBEJ!N!BVB3!!!!3!!2q3"J!"hC!
+'!!*hN!B!!b+3"J$r!*!,%!!$!*!&%!!$!!$rrrm"r`!!rrm!!AAr!!%!r`!"l2m
+!!3Mr!!&Sr`!"92m!!36r!!%$r`!"8rm!!@Vr!!%Jr`!"8rm#!Qcrrrm(!+!!J`$
+r!!!!mJ$b!!!!$3!3!"!!%3,r$!$rN!3!$3#3"a!!!!!3!*!(S!##!"i!!3!+!*!
+&%!!3!*!!J!3!!!!0!"!!%!!!!!%!N!9)!!!!5!#3"3J!!3!)!*!&k at GN!*!'+J)
+!!!!%!!$rN!B!!Gf3"J!#Gj!'!!-LN!B!r`#3#3d!%!!3!!!!$3!3!"!!!2rrr`%
+!![rr!3,r9!%#r`!"![r8!3,rD3%#rfm"![p[!3,rE!%#r`!"![pT!3,rC3%#rf-
+"![m!!J,r8[rrrh3!S!#$!2m!!!&L!@)!N!83!"!!%3,r$!$rN!3!N!N3!!!!%!#
+3"k!!JJ!H!!%!#J#3"4!!%!#BJ"!!N!83!"!!N!P)!!!!5!#3"3J!!3!)!*!&k at J
+m!*!'T'J!!!!%!!$rN!B!!Gf3"J!#Gj!'!!-LN!B!r`#3#a!!%!#3"4!!%!!!![(
+r"J$rm`)!r`F"r`,d!3$r"`(r![3"!2m,!rm#!3(i!`)"!Im2"[m#!3%$!J$m!J-
+$!3(r#`2r!J%"q!-#!3(r$`6r!J%"!r`!"3)#!`%"r`i&r`)"!3-!q`)$!`%"r`m
+%r`)"!32m!!8#!J-"!Im1"Im#!3%$!2X#!`-"!Im2"2m#!3%$r!!&!J)$!3(r#`2
+r!J%"q!-#!3(r"`(r![3"!2m(!Im#p!%!r`,ar`!!S!#$!2m!!!&f!AB!N!83!"!
+!%3,r$!$rN!3!N!N3!!!!%!#3"k!!JJ!H!!%!#J#3"4!!%!#BJ"!!N!83!"!!N!P
+)!!!!5!#3"3J!!3!)!*!&k at CF!*!'PpF!!!!%!!$rN!B!!Gf3"J!#Gj!'!!-LN!B
+!r`#3#a!!%!#3"4!!%!!!![(r"J$rm`)!r`F"r`,d!3$r"`(r![3"!2m3"Im#!3%
+!!rd"!3!$rJ%!ra%&r`)"!3!$rJ%#!!-$rJ%!ra!)r`)"!3!$!3%!rJ2q!3$r$`I
+r!J%"!!-"!2d$rJ%!r`i'r`)"!3!$!2`$rJ%!r`m(r`)"!3!$!3$p!ri"!2m3#2m
+#!3%!!`%"!2i$rJ%!ra%&r`)"!3!$rJ%#!!-$rJ%!ra!&r`)"!3!$r3%"!!2q!3$
+r"`(r![3"!2m(!Im#p!%!r`,ar`#J!)-!r`!!!9`"A!#3"4!!%!!4![m-!2q3"!#
+3#4!!!!!3!*!(S!##!"i!!3!+!*!&%!!3!*L!%!#3"4!!%!#3#8J!!!")!*!&#!!
+"!!J!N!ATCM`!N!DP53!!!!3!!2q3"J!"hC!'!!*hN!B!!b+3"J$r!*!,%!!3!*!
+&%!!3!!!#mIm'!2rc!J$r"`(r![3"!2m(!Im#p!%!r``"r`,k!3%!!rd"!2m0!Im
+#q`%#!!-$r3%!r`d"r`,m!3!!rJ2p!3$r$3(r![d"!!$p!rd"!2m0!Im#rJ%!!2`
+$r3%!r`d"r`,p!3!!r32p!3$r$3(r![`"!!$q!rd"!2m0!Im#q`%#!!-$r3%!r``
+"r`,k!3%!!rd"!2m(!Im#p!%!r`F"r`,d!3$r![(r!!#J!)-!r`!!!9`"A!#3"4!
+!%!!4![m-!2q3"!#3#4!!!!!3!*!(S!##!"i!!3!+!*!&%!!3!*L!%!#3"4!!%!#
+3#8J!!!")!*!&#!!"!!J!N!ATBi!!N!DQ,!!!!!3!!2q3"J!"hC!'!!*hN!B!!b+
+3"J$r!*!,%!!3!*!&%!!3!!!#mIm'!2rc!J$r"`(r![3"!2m(!Im#p!%!r``"r`,
+q!3%!!rN"!2m0!Im#rJ%#!!-$qJ%!r`d"r`,q!3!!rJ2l!3$r$3(r![i"!!$p!r`
+"!2m0!Im#rJ%!!2`$r3%!r`d"r`,q!3!!r32m!3$r$3(r![i"!!$q!rX"!2m0!Im
+#rJ%#!!-$qJ%!r``"r`,q!3%!!rN"!2m(!Im#p!%!r`F"r`,d!3$r![(r!!#J!)-
+!r`!!!A`"I!#3"4!!%!!4![m-!2q3"!#3#4!!!!!3!*!(S!##!"i!!3!+!*!&%!!
+3!*L!%!#3"4!!%!#3#8J!!!")!*!&#!!"!!J!N!ATAY`!N!DQaJ!!!!3!!2q3"J!
+"hC!'!!*hN!B!!b+3"J$r!*!,%!!3!*!&%!!3!!!#mIm'!2rc!J$r"`(r![3"!2m
+(!Im#p!%!ra!&r`)"!3!$r3%"!!2q!3$r%3Er!J%"!!-$rJ%"!!2q!3$r%36r!J%
+"!2i$!`%"!!2q!3$r%!6r!J%"!2d$!J%!!ri"!2m2"2m#!3%!r!-"!!2q!3$r%!6
+r!J%"!2d$!J%!!ri"!2m4"2m#!3%!rJ-$!3%!!ri"!2m4"[m#!3%!!`2q!3%!!ri
+"!2m3"Im#!3%!!rd"!3!$rJ%!r`F"r`,d!3$r"`(r![3"!2m#mIm!!+!!J`$r!!!
+28!p3!*!&%!#*!"%#r``!rj!%!*!*L3!!!"!!N!FH!!%!#J#3"4!!L3#BJ*!!!13
+!b3$d!9N!N!P)!!!!5!#3"3J!!3!)!*!')4!!N!F)J!!!r`J!rj!'#!$rN!6-c!J
+!rj!%QCN)!2q3"'CQ#!$rN!3c-`J!rj!%!!!)!2rrc-crr`J!rrr-N!3)!2rrc-b
+CQ3J!rrr-c'CQ#!$rrmc--c-)!2rrc-`!!!J!rrqCQIrr#!$rrjQCc-`)!2rrQC!
+%#!$rrjQCCQB)!2rrQCNc-`J!rrqCQ3!!#!$rrfCQrrm)!2rrCQE-c!J!rrpQCTQ
+C#!$rrfD3"!J!rrpQCM-c#!$rrfCQ!!!)!2rr-c2rr`J!rrmc-mc-#!$rrc-cQCN
+)!2rr-c0QCJJ!rrmcN!3)!2rr-c-!!!J!rrm!!2rr#!$rr`!!c-`)!2rr!!#CQ3J
+!rrm!!'CQ#!$rr`!!-c-)!2rr!*!%#!$-c2q3"!J!c-crrmc-#!$-c2rrQCN)!-c
+-rrpQCJJ!c-crrc-c#!$-c2rr!!!)!-b3"2rr#!$-N!B)!-b3"*QC#!$-N!4QCJJ
+!c*!%-c-)!-b3"!!!#!$-c*QCrrm)!-c-QCR-c!J!c-bCN!3)!-c-QCPQCJJ!c-b
+CQ6-c#!$-c*QC!!!)!-c-CQErr`J!c-aQCXc-#!$-c'CQQCN)!-c-CT!%#!$-c'C
+Q-c-)!-c-CQB!!!J!c-`c-rrr#!$-c$-cc-`)!-c--c1CQ3J!c-`c-fCQ#!$-c$1
+3"!J!c-`c-`!!#!$-c!!!rrm)!-c-!!$-c!J!c-`!!*QC#!$-c!!!CQB)!-c-!!!
+c-`J!c-`!N!3)!*QCrj!%#!#CQIrrc-`)!*QCrrqCQ3J!QCRrrfCQ#!#CQIrr-c-
+)!*QCrrm!!!J!QCR-c2rr#!#CQFb3"!J!QCR-c*QC#!#CQFc-CQB)!*QCc-`c-`J
+!QCR-c!!!#!#CN!6rr`J!QC!%c-`)!*Q3"JJ!QC!%CQB)!*Q3"$-c#!#CN!3!!!J
+!QCPQC[rr#!#CQ at CQc-`)!*QCCQDCQ3J!QCPQN!3)!*QCCQBc-`J!QCPQCJ!!#!#
+CQ6-crrm)!*QC-c2-c!J!QCNc-jQC#!#CQ6-cCQB)!*QC-j!%#!#CQ6-c!!!)!*Q
+C!!$rr`J!QCN!!-c-#!#CQ3!!QCN)!*QC!!"QCJJ!QCN!!$-c#!#CQ3#3"!J!CQE
+rN!3)!'CQrrr-c!J!CQErrjQC#!"QC[rrCQB)!'CQrrmc-`J!CQErr`!!#!"QCXc
+-rrm)!'CQc*!%#!"QCXc-QCN)!'CQc-aQCJJ!CQE-c$-c#!"QCXc-!!!)!'CQQCR
+rr`J!CQDCQFc-#!"QCTQ3"!J!CQDCQ at CQ#!"QCTQC-c-)!'CQQCN!!!J!CT!%rrm
+)!'D3"-c-#!"QN!5CQ3J!CT!'#!"QN!3c-`J!CT!%!!!)!'CQ-c2rr`J!CQBc-mc
+-#!"QCM-cQCN)!'CQ-c0QCJJ!CQBcN!3)!'CQ-c-!!!J!CQB!!2rr#!"QCJ!!c-`
+)!'CQ!!#CQ3J!CQB!!'CQ#!"QCJ!!-c-)!'CQ!*!%#!!c-rq3"!J!-c2rrmc-#!!
+c-rrrQCN)!$-crrpQCJJ!-c2rrc-c#!!c-rrr!!!)!$-cc-crr`J!-c2-N!3)!$-
+cc-bCQ3J!-c2-c'CQ#!!c-mc--c-)!$-cc-`!!!J!-c1CQIrr#!!c-jQCc-`)!$-
+cQC!%#!!c-jQCCQB)!$-cQCNc-`J!-c1CQ3!!#!!c-fCQrrm)!$-cCQE-c!J!-c0
+QCTQC#!!c-fD3"!J!-c0QCM-c#!!c-fCQ!!!)!$13"2rr#!!cN!6-c!J!-j!%QCN
+)!$13"'CQ#!!cN!B)!$13"!!!#!!c-`!!rrm)!$-c!!$-c!J!-c-!!*QC#!!c-`!
+!CQB)!$-c!!!c-`J!-c-!N!3)!!!!rj!%#!!!!2rrc-`)!!!!rrqCQ3J!!!$rrfC
+Q#!!!!2rr-c-)!!!!rrm!!!J!!!$-c2rr#!!!!-b3"!J!!!$-c*QC#!!!!-c-CQB
+)!!!!c-`c-`J!!!$-c!!!#!!!!*QCrrm)!!!!QCR-c!J!!!#CN!3)!!!!QCPQCJJ
+!!!#CQ6-c#!!!!*QC!!!)!!!!CQErr`J!!!"QCXc-#!!!!'CQQCN)!!!!CT!%#!!
+!!'CQ-c-)!!!!CQB!!!J!!!!c-rrr#!!!!$-cc-`)!!!!-c1CQ3J!!!!c-fCQ#!!
+!!$13"!J!!!!c-`!!#!#3"Irr#!#3"Fc-#!#3"CQC#!#3"@CQ#!#3"6-c#!$ZlJ#
+3"!J!hGd!N!3)!,Zl!*!%#!#UUJ#3"!J!L)J!N!3)!(Gh!*!%#!"993#3"!J!4%3
+!N!3)!#)L!*!%#!!4%3#3"!J!!!$ZlJ!!#!!!!0hG!!!)!!!!ZlX!!!J!!!#UUJ!
+!#!!!!)L)!!!)!!!!GhF!!!J!!!"993!!#!!!!%4%!!!)!!!!)L)!!!J!!!!4%3!
+!#!#3"HlZ#!#3"GhG#!#3"EZl#!#3"DUU#!#3"BL)#!#3"AGh#!#3"999#!#3"84
+%#!#3"5)L#!#3"4%4#!$ZN!B)!0f3"JJ!Zj!'#!#UN!B)!)L3"JJ!Gj!'#!"9N!B
+)!%53"JJ!)T!'#!!4N!B)!*!)j!$*!23"8J#3"4!!L3!!"S(rq2rk!!X!ri%!q`!
+"q[rk!)err`!!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$
+i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$
+i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J)!2J!q!$i!2V
+rqJ#0Irm!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d
+!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d
+!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!#2d!r3$p!2hkrrS
+!MArr!!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$
+i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$
+i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!J!q!$i!2J!q[rk!)e
+rr`$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d
+!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d
+!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3!)r3$p!2d!rIVrqJ#0Irm
+!!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$
+i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$
+i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i#!$i!2J!q!$krrS!MArr!2d
+!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d
+!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d
+!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!!Mp!2d!r3$pq[rk!)err`!!q!$
+i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$
+i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$
+i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J)!2J!q!$i!2VrqJ#0Irm!r3$p!2d
+!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d
+!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d
+!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!#2d!r3$p!2hkrrS!MArr!!$i!2J!q!$
+i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$
+i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$
+i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!J!q!$i!2J!q[rk!)err`$p!2d!r3$p!2d
+!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d
+!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d
+!r3$p!2d!r3$p!2d!r3$p!2d!r3!)r3$p!2d!rIVrqJ#0Irm!!2J!q!$i!2J!q!$
+i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$
+i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$i!2J!q!$
+i!2J!q!$i!2J!q!$i!2J!q!$i#!$i!2J!q!$krrS!MArr!2d!r3$p!2d!r3$p!2d
+!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d
+!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d!r3$p!2d
+!r3$p!2d!r3$p!2d!r3$p!!Mp!2d!r3$pq[rk!!S!ri(kq[S!rrS!"S(rq2rk!!!
+!r`!!!B`"M!#3"4!!%!!4![m-!2rq!4N!5!!!!%J!N!F3!"!a!!(e!"i!!3!+!*!
+&%!!3!*Q!#!#3"4!!%!#3#8J!!!")!*!&"!!"!!3!N!3"'6AS!*!'6l-!!!!2!!$
+rN!B!!Hk3"J!#hC!'!!2-N!B!",Z3"J!&UT!'!!DCN!B!"iL3"J!)Gj!'!!PQN!B
+!#P at 3"J!,4*!'!!`cN!B!$5+3"J!1%C!'!!m!N!X3!"!!N!83!"!!3!!+!*!&%!!
+3![Rr"J$`q`!!M`B!m2XL!)m)!2$p)J,GdSm)!2$p)J,GdSm)!2$p)J,GdSm*"r!
+L)Y)LhG+2#3I`)Lh5)Yh5M`J"m#,ph3(5M`J"m#hph3(5M`J"m#,ph3%LM`N$m#)
+Yd[iL!)m*!r!L)Y,q)J#2"J$`qb)!M`B!q2Z)!)m#qIm!r`!!!B`"M!#3"4!!%!!
+4![m-!2rq!4N!5!!!!%J!N!F3!"!a!!(e!"i!!3!+!*!&%!!3!*Q!#!#3"4!!%!#
+3#8J!!!")!*!&"!!"!!3!N!3"'6 at -!*!'8-UV!!!2!!$rN!B!!Hk3"J!#hC!'!!2
+-N!B!",Z3"J!&UT!'!!DCN!B!"iL3"J!)Gj!'!!PQN!B!#P at 3"J!,4*!'!!`cN!B
+!$5+3"J!1%C!'!!m!N!X3!"!!N!83!"!!3!!+!*!&%!!3![Rr"J$iqiJ!M`B!q2X
+L!#m'!2Ml)J![#!$ir5)#,Gd[#!$ir5)#,Gd[#!$ir5)#,Gd[#3Ii)L)Y)LhG,`N
+(q#)Lh5)Yh5m)![JL,IhG!#m(!IJLr0d!,`N#q#)YrYd"dLm*!rJL)Yhq)J![#32
+i)L)YrL)!,`B!q2XL!#m#qIm!r`!!")i"!*!'!Jj5CA&eDA*PC#"6G at PdC64&GQ9
+ZG(-JG'KKG#"PGQ9bH5""45"KGf&bC5"KF("XD at 0KG'P[EL"YGA0d)(0eF("[FR3
+ZFQ9aC!!"!!%!N!J88h4KEQ3J3 at a[EQ8J4'pMG at ePER3cU6%j168J4h*PC at iJ6@p
+eER4KD at iJ8fpQG(GKFQ8X)%&XE#"5D at GSG(-J8Q9cCA*fC at 3Z!'4MB at 8!!3!"!!B
+'C'p'D at jN9QCTEQ3JFh4bD@jR)'PZ)'4[Bh9YC at jd,#"TCL"QEh9ZC#"YEhCP)'4
+[Bh9YC at jd)(4[)(4SBA3JE'pMBA4TEfiJB at jN)'KTE'PdC5"QEh9ZC#"dCAKdC'0
+KC at 4QEQ4#6dp-'RGKFb"cG(*TEQFJB at 0dG@&XE(NJCQpeEQ3r4J!!ER9XE!!p!!!
+!!`TQD at jN8h4bD@jR2 at CcG(*849K8&&4PH(3JFh4bD at jR)(4[)'CTEQ3Z)!!!#@e
+KG'0S3f&cC at eMFf9#6dp-&feKG'0S)'0KFf8J+&4bG at 8[4Q&XFf8T%!!)B at aX3fK
+KF(03B at aXBd*26d`JFf9KFQ0S)'&XE#"MD'&`G'9bFb!S9(*eC5p'B at acC5Np!!!
+0CfmJG'mJBfKKF(4PFM9%Ef0eE at 9ZG#"hD at aX)'G[)(4[)(4SC5"dEh!JEfBJG'K
+P)(0`C at 0TCQPPC#"MD'&`G'9b,Q4MB at 9RBfK`ER9XE!!p!!"XEfjR,94SC5"MD'&
+`G'9b)(4[)'G[)(4[,L"E-5iZER9YBQ9b)'pQ)'0SBA"dCA*cA3#3"!jREb"dEb"
+MEfjdC at jdFeC%DA0`E'&j)(4SC5"`BA*d)'pQ)(4SC5"NEf0eE at 9ZG#"bC at CPFR*
+PC#"dEb"LH5"dD'8JFh"PBfPQD at 9N)&4KBQaP)'pQ)%0[ER4PER4c)'PZC'9i,Q4
+MB at 9RBfjdER9XE!!p!!"XEfjR394SC5"dB@*XC5"[CL"MEfjdC at jdFb"TG'9Y)(4
+[)'4TFh"XBANZ)&Xa,LjZG at eLCA)JEfBJ9%p$)'9ZG(*TCA0G!*!%%QjeE@*PFL"
+[CL"MD'&`G'9bFcY5CA4eFQjc)(4SC5"ZG at eLCA)JEfBJBfKKF(4PFR-JD at iJG'K
+P)(0dB at jN)'&XEfjP)'4[Bh9YC at jd,Q9NBf&PEQ0SF'a[EQFA9'KP)'jeE@*PFL"
+[CL"MD'&`G'9bFbi!!'jeE'`!N!B5ER9YBQ9b)'pQ)'0[ER4PER4c0e*PG(9bER-
+JG'KP)'jeE@*PFL"[CL"PER4bD at 9c)'PZ)(4SC5"8B@*XC5"[CL"$EfjdC at jdFbj
+TC'0KC at jMER4XEfjR(e4SC5"ZG at eLCA)JEfBJBfpZG'9ZG(-JC at jdFQPPFbi!!'j
+eE'`!N!B)Ff0bEfaX9'mX8f0bEfaX)(4[)(4[F#"[CL"cF'9MD at CTC@3JF'&bB at G
+bBA"S)'jeE@*PFLjNBf&PFf0bE'jeE'`!23!!E'pZCaYcBh*[E'`JC'phEL"fB at a
+eC5"ED at jdC@GPFPd!N!d`!*!("!!!rj!'!!%!N!F#!*!(!`#3"`6rN!B!!!!8!*!
+A)b+T-6Ni0Lda16Ni)%GbC at 9Z)%e[G at jdB@PZ)&0[CR4hBA*P!!!!MJC(C at jPGQ%
+!N$S*!*!("!!%!*!&"3!*!*!,"J#3#`B!N!X'!*!,"J#3$"Dd!!!!!Ch1 at Bm[2%0
+24%9#CkQJ)"GR!!$b)%!J8#iB,"#TSh!!)%f4aQ!#%-#ac at hk3Hd!+%2eH!"J!K$
+!XFPYqPQ2,ca%394"3QHTS#"A)!KR!!#f,`dJ8%KS!!41ZJ#`8)p$q[qF+dQ,RL*
+06VS#'#*YLjj1ZJ)3UD01ZJ+ at 3Lf,Sc!mU*qR4Lm)-$bKQ+0'XGpR#KYm!!',Sh!
+"SCJ`2+R`TdBV5)ZD-$bTmDG'+dL,PM!mUI5R4LY)Lj)`2+R`3IS#D+C(-$bTm8(
+k!b5Q4c!mUI4"qJ!ZTNG1Z3!!")K1Z3!!"L4)HJ!L5LhrrfF#3QG#Cdkj!!!@"Pb
+23UG1Z3!!")T1ZJ1-UI3!N!4)ja``@8mQE`!FH!"J!!$N(TXI@`!"(eX!!KpE!!-
+NE`!JeGF@'dL$-!-#3!#!C`i#3`"r&0Y63dT$E2KJjM!$!N!!3'F1-!-#3!!r8N"
+)`0A!B0!`!`*!!#"R#J*$!"p53aSEB!i`!`*!!""R%!*$!!pkra6&8d0+3fciB+B
+`!`a!!!4LC0"!-$X!"Nll!!)!B!!+!"`!,!"#@)S8r2rr&2crra6E&0YJ!2pk@)S
+8r2rr&0X8fa6EB!$rDK6mrkN8r2r`9)S8fa6E8SS8ff!!re38r2qT&2crm&++&0X
+8fa6E8SS8ff!!rc`r2!!2UFP54!a%!!0Y!2mB)%YB6dcI$$K1G5m&@8mLE`!-(TN
+I at 3!"(eN!!KpC!!-U&h3!B%`5'4!"!N!!J'F-dJ%3!8L!5-$8J'!S(S%I at 3!"%!%
+#3!"!C```&q9)iN")`05!B!iI at 3!#(eN!!b3AjBVLJL"[!"!J,`!8dE!S!&1&5S9
+ZX#"*@%mU(dje,`SN55m0,`S[#%kkri![,BZH,`S[#%kkrh3[#Lm+,`K1Z[pU6qm
+!*#4I6R8[#L4*,`e%Pbm+,`K1Z[p5,bf,RN5A,`S[#%kkrd3[#N5A,`S[#%kkrcK
+2l`!N*&p1GE[k!#KQ!Nje51F!K#Tk!"`JEBZD5Qm!$'B%)'f,PLp)!!T-hb%!9%p
+1G3#3"%(krrSJM8je3rN!!!3B`2`!%#1)#2"1G6mm!!&1Z[qd9%p)jq$J9Dm!'#4
+[!"JJ,BZNC`SJ3$mU!!C1N!"8Me$i#PjCMbmm3dp%46mU!!DTS#!ACKBJ,BZ`CJ4
+`$kR*)%!r+J!'6T!!9)pJfNSi#l*R"#"!S'3J9k!T)&mJ8#!)S&8J3#m)-#S!"Nk
+krhiL50(S!!K1Z[lJ)&mL6G2S!!3`+!!#)JKJ$$0m6[N!!01T!!*3L9()rr*+,BZ
+MC`4`!D'B)#f,U'F+)%!r+J!'6T!!9)p-h`F(5MJ", at F#UIp1G6mm!!"1Z[lZ9%m
+[#L4[!!J-DNlj!!"QHJaU!!)!"QebNFJ`+J!'6VVr!PQ2,ca$6d4&2bS!"UQJ)"G
+Q"&L2B&)J3#"3)NM4k!!)6VVqGL"A)&!L6G2S!!3`+!!#)JKJ$$0mUI!!!*1T!!*
+3L9()rr)J9k!U)&qJ58SYLk0R"(!"SCJJ,BZXC`SJ3$mU!!C1N!"8Mb4I,Tp1G8j
+e6VS!+URd6R8UH!N%-$bTp#"YLj+Q4c!mUI!JEBZDTNF`2+Ra)'f,PUC(6R8[#Q!
+8+e+,Y$mmrrm[+J!))'S!"%k3!&a2*'f,Y#!+CZ3NAdje51F`!(3#6[XL!'!+6!%
+!!%cI!!a1G53!5%,%`5B"5%2'`04$5%*#3X$"d)*-h`!-6R9)jc!!G!*1qb)!B!T
+-33!!60m!$%je*!&#3NK#CK`f!%*!5%"R"S$"0!")3M!$J-%d!#!#60m!$%je0!"
+#3%K!5%)Q!A)2e),4J,#$C353!)05!P(*rr)J!NcI!!a1G8U!E!a%J%U"E""%J8l
+krj4+J at d%6[VrM%5"6VVrKN5!6R9)jc!!G!*1qb)!B!a-33!")!&-h`!-6R8N!8*
+#5%*Q($B!3N")3'F'J-%d!%K#-!1!`8*!5%"-h`!-6R8d!%*!5%")3LB"FJr8JY'
+!X)0P!T!!Je(*rr4-h`!-6R9+J@`#4)&+J'd%6[VrQ%5!6VVrNN5!6R8JAb*)dYL
+`@'`#6Y'`@'m#6Y%b',"BCJ63d%l39%K4bIrd6Y&1G9P2U53JAdjeKN42584-43!
+!!%r[rr!JE`!83pFLf#,B)YJLf#![!!,KQ!+!!!!!re1!Ca!%J!!!!2PR!Q"F6VV
+r`'"@F!(!V`!#5S"A`%3!'d#0UdSYMDYR&%kj!!!!q%SYMCTR0%kj!!!#!'!X at 8q
+T*#"IXHhmiQB)6VN!!!$`B"K+,BfDCa*C6kNN)&qalIM%CJC1Z3!!!IK2l`!3,Tp
+1GBG"8eG*9%0)!!"2lrrX98p#CdK[!!JJAc!IS$"53"k!%"mZV`!1,eF!'%r[!"4
+1GBY(6%p#38a06e9643!!6qrrp(!m,d!!"%SYMDYQ#&P2U53JAbk),fm!"!!),fm
+!#!!36qm!$%jeL%G&9&0-4893!!!!51F!1%r[rqiSE`!L at 8qT*#"I*%K+,BfVCJ!
+!l&92,`T1Z3!!!ZJ3(fB!!0`[#UKc at 8qSf#"I*%K+,BfNC`KC6kMB)&mQ5%K[!#D
+SF5m+,cb!!)!!,carrRrqU0j+,BfDC`aC6kNN)&qalIM%C`SJEIK`)&"+8'B15'f
+-&UK4,`S[$+MFB(*+,BfNCf"96bm[!#K)E`!'5'm!&%kj!!!#5"!ICdK+,BfJC`j
++VIKdC`J[,IKdUKaJ##"Yq(J[%+K45'm!!NK[!!j1Z3!!![![E`!'!!i[E`!+!")
+[#dK[!"+Shbm,,`bSh&K2B!a)EB`@U&%[#Lm-U0`[#UMC5Lf0T'F%,`ZSf8r[!"*
+-ha`!)&p36dl3M%&%5P969%098P028J!!!%r[rqiJE`!D,e!!##pS!!3!$#"[!"i
+ZN!![D!!%!!4#E`!32fm!%!!L6qm!%L"I6qm!$%l3LdK"6N4-48p"8&"-!!"2lrr
+Z)'m!'Lp3!!J[D!!%!!`JE`!H,T!!,fJ!"!!%3Qm!%$p[!"!!)Nr[!")JAdr[!!a
+1d)Y)38j%6%9%39"36!!!6qrrlL"[!"S[8!!),fJ!"!!-)'m!(Lk3!#pS!!3!"%*
+[!"!rE`!3!#*2l`!5)&p2l`!-6Y#,5%&14%a&8%&38%`!!%r[rqiJE`!D,e!!##p
+S!!3!$#"[!"iZN!![D!!%!!3EI!!"r1G#E`!32fm!%!!L6qm!%L"I6qm!$%l3LdK
+"6N4-49&"8&"-!!"96b"[!!C)D2rd-$`#"+J at -"mr!&52,Tp1GBK$E'9KEP9`-3!
+!!%T[!!KR'L"[!!3aE`!)rr)[,`!%6VVra#j[!!41qJ%8)&pF6dl3L%CKD at a&FR)
+b!!!!,`02lrq`)'m!A#p3!!3[D!!%!!JJE`"J,e!!$#pS!!3!%%+[!%a"l`!8d2`
+!+%MJ2cT96dK[!!i[,Ii8,bhq'%K[!&B`2!J5U"B`(cm!5'm!9NkkrhSJE`"-)&!
+ZN!"96bm[!!+SDc!I0J!-E3!"Nj!!E`!!J,CYNijRH%T$Eh5fEC13!'jZ)'hmiNK
+S!"#T+%SYMD9R##mYq)!r!kPM2`0#*dkj!!!#i%kj!!!#d%+R3UF[,ILBUG%[I$r
+mc-`!2#pmc*!%!%!rI-c0!%4)E`!m2c`!!LmYq*J[,IL%6VN!!!+B6VN!!!*B)'h
+miNKS!"#T+NK[!&41Z[k`3Qm!4Q!-6qrrV%([!"4-f&cm2fm!4J"N6qm!8#BI)&p
+2l`!-6Y#-5%&14%a&4d0"8&"-!!!!98mJE`!'5'Mrq$!m!J5S&M!I2`"8MbkI6R@
+)3faPB at j9F$-!!!"+E`!)CaSJE`!%- at m!#2r',bm!"%kkrm3ZE`!%6[S!ZL"IA%p
+1d)K'B at PX4A*b0!!!!%r[rlSJE`"1,e!!$LpS!!3!%L"[!&)ZN!![D!!%!!4#V`"
+#5Lf0QQG`-#hib0"YNj!!5-![3!!)5Um!%QGF3Hm!&Y$m!#K)i$mk98m[,IiF5'm
+!$NKi!!4)E`"--$`)*DJ at -"mr!%K[!%K1Z[pN3Hm!&Y$m!#K)i$mk98p)E`!3,bh

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list