summaryrefslogtreecommitdiff
path: root/lingucomponent
diff options
context:
space:
mode:
authorJens-Heiner Rechtien <hr@openoffice.org>2003-03-26 12:03:05 +0000
committerJens-Heiner Rechtien <hr@openoffice.org>2003-03-26 12:03:05 +0000
commit4507deb1ecfc4f48b263781b2f611a0c6af24cea (patch)
treee8a024fd3c048f6cbbb00862405295859b4f7a4f /lingucomponent
parent8ad6f1e3f71afb347e85304cd21830213b6863f7 (diff)
MWS_SRX644: migrate branch mws_srx644 -> HEAD
Diffstat (limited to 'lingucomponent')
-rw-r--r--lingucomponent/prj/build.lst10
-rw-r--r--lingucomponent/prj/d.lst30
-rw-r--r--lingucomponent/source/hyphenator/altlinuxhyph/hyphen/exports.dxp3
-rw-r--r--lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hprophelp.cxx365
-rw-r--r--lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hprophelp.hxx206
-rw-r--r--lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hreg.cxx119
-rw-r--r--lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphen.map8
-rw-r--r--lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.cxx792
-rw-r--r--lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.hxx250
-rw-r--r--lingucomponent/source/hyphenator/altlinuxhyph/hyphen/makefile.mk180
-rw-r--r--lingucomponent/source/hyphenator/altlinuxhyph/hyphtabs/hyph_en.dic11388
-rwxr-xr-xlingucomponent/source/hyphenator/altlinuxhyph/hyphtabs/substrings.pl102
-rw-r--r--lingucomponent/source/lingutil/makefile.mk105
-rw-r--r--lingucomponent/source/spellcheck/spell/exports.dxp3
-rw-r--r--lingucomponent/source/spellcheck/spell/makefile.mk185
-rw-r--r--lingucomponent/source/spellcheck/spell/spell.map8
-rw-r--r--lingucomponent/source/spellcheck/spell/spelldta.cxx244
-rw-r--r--lingucomponent/source/spellcheck/spell/spelldta.hxx143
-rw-r--r--lingucomponent/source/spellcheck/spell/sprophelp.cxx411
-rw-r--r--lingucomponent/source/spellcheck/spell/sprophelp.hxx214
-rw-r--r--lingucomponent/source/spellcheck/spell/sreg.cxx118
-rw-r--r--lingucomponent/source/spellcheck/spell/sspellimp.cxx735
-rw-r--r--lingucomponent/source/spellcheck/spell/sspellimp.hxx237
23 files changed, 15856 insertions, 0 deletions
diff --git a/lingucomponent/prj/build.lst b/lingucomponent/prj/build.lst
new file mode 100644
index 000000000000..e8033089525d
--- /dev/null
+++ b/lingucomponent/prj/build.lst
@@ -0,0 +1,10 @@
+lc lingucomponent : linguistic lingu NULL
+lc lingucomponent usr1 - all lc_mkout NULL
+lc lingucomponent\source\lingutil nmake - all lc_util NULL
+lc lingucomponent\source\thesaurus\parser nmake - all lc_parser lc_util NULL
+lc lingucomponent\source\thesaurus\libth nmake - all lc_libth lc_util NULL
+lc lingucomponent\source\spellcheck\myspell nmake - all lc_myspell lc_util NULL
+lc lingucomponent\source\spellcheck\spell nmake - all lc_libspell lc_myspell NULL
+lc lingucomponent\source\hyphenator\altlinuxhyph\libhnj nmake - all lc_libhnj lc_util NULL
+lc lingucomponent\source\hyphenator\altlinuxhyph\hyphen nmake - all lc_libhyphen lc_libhnj NULL
+lc lingucomponent\source\hyphenator\altlinuxhyph\hyphtabs nmake - all lc_hyphtabs lc_util NULL
diff --git a/lingucomponent/prj/d.lst b/lingucomponent/prj/d.lst
new file mode 100644
index 000000000000..01015dace878
--- /dev/null
+++ b/lingucomponent/prj/d.lst
@@ -0,0 +1,30 @@
+..\%__SRC%\bin\*.dat %_DEST%\bin%_EXT%\*.dat
+..\%__SRC%\bin\*.idx %_DEST%\bin%_EXT%\*.idx
+..\%__SRC%\bin\*.aff %_DEST%\bin%_EXT%\*.aff
+..\%__SRC%\bin\*.dic %_DEST%\bin%_EXT%\*.dic
+..\%__SRC%\bin\*.lst %_DEST%\bin%_EXT%\*.lst
+
+..\%__SRC%\bin\lth* %_DEST%\bin%_EXT%\lth*
+..\%__SRC%\lib\ilth* %_DEST%\lib%_EXT%\ilth*
+..\%__SRC%\lib\liblth.a %_DEST%\lib%_EXT%\liblth.a
+..\%__SRC%\lib\liblth*.dylib %_DEST%\lib%_EXT%\liblth*.dylib
+..\%__SRC%\lib\liblth*.so %_DEST%\lib%_EXT%\liblth*.so
+
+..\%__SRC%\bin\spell* %_DEST%\bin%_EXT%\spell*
+..\%__SRC%\lib\ilspell* %_DEST%\lib%_EXT%\ilspell*
+..\%__SRC%\lib\libspell.a %_DEST%\lib%_EXT%\libspell.a
+..\%__SRC%\lib\libspell*.dylib %_DEST%\lib%_EXT%\libspell*.dylib
+..\%__SRC%\lib\libspell*.so %_DEST%\lib%_EXT%\libspell*.so
+
+..\%__SRC%\bin\hyph* %_DEST%\bin%_EXT%\hyph*
+..\%__SRC%\lib\ihyph* %_DEST%\lib%_EXT%\ihyph*
+..\%__SRC%\lib\libhnj.* %_DEST%\lib%_EXT%\libhnj.*
+..\%__SRC%\lib\*.dylib %_DEST%\lib%_EXT%\*.dylib
+..\%__SRC%\lib\libhyphen*.so %_DEST%\lib%_EXT%\libhyphen*.so
+
+..\%__SRC%\bin\ulingu* %_DEST%\bin%_EXT%\ulingu*
+..\%__SRC%\lib\ilulingu* %_DEST%\lib%_EXT%\iulingu*
+..\%__SRC%\lib\libulingu.a %_DEST%\lib%_EXT%\libulingu.a
+..\%__SRC%\lib\*.dylib %_DEST%\lib%_EXT%\*.dylib
+..\%__SRC%\lib\libulingu*.so %_DEST%\lib%_EXT%\libulingu*.so
+
diff --git a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/exports.dxp b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/exports.dxp
new file mode 100644
index 000000000000..b0f85bf7bebf
--- /dev/null
+++ b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/exports.dxp
@@ -0,0 +1,3 @@
+component_getFactory
+component_getImplementationEnvironment
+component_writeInfo
diff --git a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hprophelp.cxx b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hprophelp.cxx
new file mode 100644
index 000000000000..09316e0a7d8b
--- /dev/null
+++ b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hprophelp.cxx
@@ -0,0 +1,365 @@
+/*************************************************************************
+ *
+ * $RCSfile: hprophelp.cxx,v $
+ *
+ * $Revision: 1.3 $
+ *
+ * last change: $Author: hr $ $Date: 2003-03-26 13:02:06 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#include <linguistic/misc.hxx>
+
+#include "hprophelp.hxx"
+#include <linguistic/lngprops.hxx>
+
+#ifndef _TOOLS_DEBUG_HXX //autogen wg. DBG_ASSERT
+#include <tools/debug.hxx>
+#endif
+
+#include <com/sun/star/linguistic2/LinguServiceEvent.hpp>
+#include <com/sun/star/linguistic2/LinguServiceEventFlags.hpp>
+#include <com/sun/star/linguistic2/XLinguServiceEventListener.hpp>
+
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+#ifndef _OSL_MUTEX_HXX_
+#include <osl/mutex.hxx>
+#endif
+
+//using namespace utl;
+using namespace osl;
+using namespace rtl;
+using namespace com::sun::star;
+using namespace com::sun::star::beans;
+using namespace com::sun::star::lang;
+using namespace com::sun::star::uno;
+using namespace com::sun::star::linguistic2;
+using namespace linguistic;
+
+
+#define A2OU(x) ::rtl::OUString::createFromAscii( x )
+
+///////////////////////////////////////////////////////////////////////////
+
+
+PropertyChgHelper::PropertyChgHelper(
+ const Reference< XInterface > & rxSource,
+ Reference< XPropertySet > &rxPropSet,
+ const char *pPropNames[], USHORT nPropCount ) :
+ xMyEvtObj (rxSource),
+ xPropSet (rxPropSet),
+ aPropNames (nPropCount),
+ aLngSvcEvtListeners (GetLinguMutex())
+{
+ OUString *pName = aPropNames.getArray();
+ for (INT32 i = 0; i < nPropCount; ++i)
+ {
+ pName[i] = A2OU( pPropNames[i] );
+ }
+}
+
+
+PropertyChgHelper::PropertyChgHelper( const PropertyChgHelper &rHelper ) :
+ aLngSvcEvtListeners (GetLinguMutex())
+{
+ xPropSet = rHelper.xPropSet;
+ aPropNames = rHelper.aPropNames;
+ AddAsPropListener();
+
+ xMyEvtObj = rHelper.xMyEvtObj;
+}
+
+
+PropertyChgHelper::~PropertyChgHelper()
+{
+}
+
+
+void PropertyChgHelper::AddAsPropListener()
+{
+ if (xPropSet.is())
+ {
+ INT32 nLen = aPropNames.getLength();
+ const OUString *pPropName = aPropNames.getConstArray();
+ for (INT32 i = 0; i < nLen; ++i)
+ {
+ if (pPropName[i].getLength())
+ xPropSet->addPropertyChangeListener( pPropName[i], this );
+ }
+ }
+}
+
+void PropertyChgHelper::RemoveAsPropListener()
+{
+ if (xPropSet.is())
+ {
+ INT32 nLen = aPropNames.getLength();
+ const OUString *pPropName = aPropNames.getConstArray();
+ for (INT32 i = 0; i < nLen; ++i)
+ {
+ if (pPropName[i].getLength())
+ xPropSet->removePropertyChangeListener( pPropName[i], this );
+ }
+ }
+}
+
+
+void PropertyChgHelper::LaunchEvent( const LinguServiceEvent &rEvt )
+{
+ cppu::OInterfaceIteratorHelper aIt( aLngSvcEvtListeners );
+ while (aIt.hasMoreElements())
+ {
+ Reference< XLinguServiceEventListener > xRef( aIt.next(), UNO_QUERY );
+ if (xRef.is())
+ xRef->processLinguServiceEvent( rEvt );
+ }
+}
+
+
+void SAL_CALL PropertyChgHelper::disposing( const EventObject& rSource )
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+ if (rSource.Source == xPropSet)
+ {
+ RemoveAsPropListener();
+ xPropSet = NULL;
+ aPropNames.realloc( 0 );
+ }
+}
+
+
+sal_Bool SAL_CALL
+ PropertyChgHelper::addLinguServiceEventListener(
+ const Reference< XLinguServiceEventListener >& rxListener )
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ BOOL bRes = FALSE;
+ if (rxListener.is())
+ {
+ INT32 nCount = aLngSvcEvtListeners.getLength();
+ bRes = aLngSvcEvtListeners.addInterface( rxListener ) != nCount;
+ }
+ return bRes;
+}
+
+
+sal_Bool SAL_CALL
+ PropertyChgHelper::removeLinguServiceEventListener(
+ const Reference< XLinguServiceEventListener >& rxListener )
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ BOOL bRes = FALSE;
+ if (rxListener.is())
+ {
+ INT32 nCount = aLngSvcEvtListeners.getLength();
+ bRes = aLngSvcEvtListeners.removeInterface( rxListener ) != nCount;
+ }
+ return bRes;
+}
+
+///////////////////////////////////////////////////////////////////////////
+
+static const char *aSP[] =
+{
+ UPN_IS_GERMAN_PRE_REFORM,
+ UPN_IS_IGNORE_CONTROL_CHARACTERS,
+ UPN_IS_USE_DICTIONARY_LIST,
+};
+
+
+PropertyHelper_Hyphen::PropertyHelper_Hyphen(
+ const Reference< XInterface > & rxSource,
+ Reference< XPropertySet > &rxPropSet ) :
+ PropertyChgHelper ( rxSource, rxPropSet, aSP, sizeof(aSP) / sizeof(aSP[0]) )
+{
+ SetDefault();
+ INT32 nLen = GetPropNames().getLength();
+ if (rxPropSet.is() && nLen)
+ {
+ const OUString *pPropName = GetPropNames().getConstArray();
+ for (INT32 i = 0; i < nLen; ++i)
+ {
+ BOOL *pbVal = NULL,
+ *pbResVal = NULL;
+
+ if (A2OU( UPN_IS_GERMAN_PRE_REFORM ) == pPropName[i])
+ {
+ pbVal = &bIsGermanPreReform;
+ pbResVal = &bResIsGermanPreReform;
+ }
+ else if (A2OU( UPN_IS_IGNORE_CONTROL_CHARACTERS ) == pPropName[i])
+ {
+ pbVal = &bIsIgnoreControlCharacters;
+ pbResVal = &bResIsIgnoreControlCharacters;
+ }
+ else if (A2OU( UPN_IS_USE_DICTIONARY_LIST ) == pPropName[i])
+ {
+ pbVal = &bIsUseDictionaryList;
+ pbResVal = &bResIsUseDictionaryList;
+ }
+ if (pbVal && pbResVal)
+ {
+ rxPropSet->getPropertyValue( pPropName[i] ) >>= *pbVal;
+ *pbResVal = *pbVal;
+ }
+ }
+ }
+}
+
+
+PropertyHelper_Hyphen::~PropertyHelper_Hyphen()
+{
+}
+
+
+void PropertyHelper_Hyphen::SetDefault()
+{
+ bResIsGermanPreReform = bIsGermanPreReform = FALSE;
+ bResIsIgnoreControlCharacters = bIsIgnoreControlCharacters = TRUE;
+ bResIsUseDictionaryList = bIsUseDictionaryList = TRUE;
+
+
+}
+
+
+void SAL_CALL
+ PropertyHelper_Hyphen::propertyChange( const PropertyChangeEvent& rEvt )
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ if (GetPropSet().is() && rEvt.Source == GetPropSet())
+ {
+ INT16 nLngSvcFlags = 0;
+ BOOL bSCWA = FALSE, // SPELL_CORRECT_WORDS_AGAIN ?
+ bSWWA = FALSE; // SPELL_WRONG_WORDS_AGAIN ?
+
+ BOOL *pbVal = NULL;
+ switch (rEvt.PropertyHandle)
+ {
+ case UPH_IS_IGNORE_CONTROL_CHARACTERS :
+ {
+ pbVal = &bIsIgnoreControlCharacters;
+ break;
+ }
+ case UPH_IS_GERMAN_PRE_REFORM :
+ {
+ pbVal = &bIsGermanPreReform;
+ bSCWA = bSWWA = TRUE;
+ break;
+ }
+ case UPH_IS_USE_DICTIONARY_LIST :
+ {
+ pbVal = &bIsUseDictionaryList;
+ bSCWA = bSWWA = TRUE;
+ break;
+ }
+ default:
+ DBG_ERROR( "unknown property" );
+ }
+ if (pbVal)
+ rEvt.NewValue >>= *pbVal;
+
+ if (bSCWA)
+ nLngSvcFlags |= LinguServiceEventFlags::SPELL_CORRECT_WORDS_AGAIN;
+ if (bSWWA)
+ nLngSvcFlags |= LinguServiceEventFlags::SPELL_WRONG_WORDS_AGAIN;
+ if (nLngSvcFlags)
+ {
+ LinguServiceEvent aEvt( GetEvtObj(), nLngSvcFlags );
+ LaunchEvent( aEvt );
+ }
+ }
+}
+
+
+void PropertyHelper_Hyphen::SetTmpPropVals( const PropertyValues &rPropVals )
+{
+ // set return value to default value unless there is an
+ // explicitly supplied temporary value
+ bResIsGermanPreReform = bIsGermanPreReform;
+ bResIsIgnoreControlCharacters = bIsIgnoreControlCharacters;
+ bResIsUseDictionaryList = bIsUseDictionaryList;
+
+ //
+ INT32 nLen = rPropVals.getLength();
+ if (nLen)
+ {
+ const PropertyValue *pVal = rPropVals.getConstArray();
+ for (INT32 i = 0; i < nLen; ++i)
+ {
+ BOOL *pbResVal = NULL;
+ switch (pVal[i].Handle)
+ {
+ case UPH_IS_GERMAN_PRE_REFORM : pbResVal = &bResIsGermanPreReform; break;
+ case UPH_IS_IGNORE_CONTROL_CHARACTERS : pbResVal = &bResIsIgnoreControlCharacters; break;
+ case UPH_IS_USE_DICTIONARY_LIST : pbResVal = &bResIsUseDictionaryList; break;
+ default:
+ DBG_ERROR( "unknown property" );
+ }
+ if (pbResVal)
+ pVal[i].Value >>= *pbResVal;
+ }
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////
diff --git a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hprophelp.hxx b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hprophelp.hxx
new file mode 100644
index 000000000000..f5f7593675e5
--- /dev/null
+++ b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hprophelp.hxx
@@ -0,0 +1,206 @@
+/*************************************************************************
+ *
+ * $RCSfile: hprophelp.hxx,v $
+ *
+ * $Revision: 1.3 $
+ *
+ * last change: $Author: hr $ $Date: 2003-03-26 13:02:06 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#ifndef _LINGU2_PROPHELP_HXX_
+#define _LINGU2_PROPHELP_HXX_
+
+#include <tools/solar.h>
+
+#include <uno/lbnames.h> // CPPU_CURRENT_LANGUAGE_BINDING_NAME macro, which specify the environment type
+#include <cppuhelper/implbase2.hxx> // helper for implementations
+
+#ifndef _CPPUHELPER_INTERFACECONTAINER_H_
+#include <cppuhelper/interfacecontainer.h>
+#endif
+
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYCHANGELISTENER_HPP_
+#include <com/sun/star/beans/XPropertyChangeListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_PROPERTYVALUES_HPP_
+#include <com/sun/star/beans/PropertyValues.hpp>
+#endif
+
+#include <com/sun/star/linguistic2/XLinguServiceEventBroadcaster.hpp>
+
+namespace com { namespace sun { namespace star { namespace beans {
+ class XPropertySet;
+}}}};
+
+namespace com { namespace sun { namespace star { namespace linguistic2 {
+ struct LinguServiceEvent;
+}}}};
+
+
+using namespace ::rtl;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::linguistic2;
+
+///////////////////////////////////////////////////////////////////////////
+// PropertyChgHelper
+// virtual base class for all XPropertyChangeListener members of the
+// various lingu services.
+// Only propertyChange needs to be implemented.
+
+class PropertyChgHelper :
+ public cppu::WeakImplHelper2
+ <
+ XPropertyChangeListener,
+ XLinguServiceEventBroadcaster
+ >
+{
+ Sequence< OUString > aPropNames;
+ Reference< XInterface > xMyEvtObj;
+ ::cppu::OInterfaceContainerHelper aLngSvcEvtListeners;
+ Reference< XPropertySet > xPropSet;
+
+ // disallow use of copy-constructor and assignment-operator
+ PropertyChgHelper( const PropertyChgHelper & );
+ PropertyChgHelper & operator = ( const PropertyChgHelper & );
+
+public:
+ PropertyChgHelper(
+ const Reference< XInterface > &rxSource,
+ Reference< XPropertySet > &rxPropSet,
+ const char *pPropNames[], USHORT nPropCount );
+ virtual ~PropertyChgHelper();
+
+ // XEventListener
+ virtual void SAL_CALL
+ disposing( const EventObject& rSource )
+ throw(RuntimeException);
+
+ // XPropertyChangeListener
+ virtual void SAL_CALL
+ propertyChange( const PropertyChangeEvent& rEvt )
+ throw(RuntimeException) = 0;
+
+ // XLinguServiceEventBroadcaster
+ virtual sal_Bool SAL_CALL
+ addLinguServiceEventListener(
+ const Reference< XLinguServiceEventListener >& rxListener )
+ throw(RuntimeException);
+ virtual sal_Bool SAL_CALL
+ removeLinguServiceEventListener(
+ const Reference< XLinguServiceEventListener >& rxListener )
+ throw(RuntimeException);
+
+ // non UNO functions
+ void AddAsPropListener();
+ void RemoveAsPropListener();
+ void LaunchEvent( const LinguServiceEvent& rEvt );
+
+ const Sequence< OUString > &
+ GetPropNames() const { return aPropNames; }
+ const Reference< XPropertySet > &
+ GetPropSet() const { return xPropSet; }
+ const Reference< XInterface > &
+ GetEvtObj() const { return xMyEvtObj; }
+
+};
+
+
+///////////////////////////////////////////////////////////////////////////
+
+
+class PropertyHelper_Hyphen :
+ public PropertyChgHelper
+{
+ // default values
+ BOOL bIsGermanPreReform;
+ BOOL bIsIgnoreControlCharacters;
+ BOOL bIsUseDictionaryList;
+
+ // return values, will be set to default value or current temporary value
+ BOOL bResIsGermanPreReform;
+ BOOL bResIsIgnoreControlCharacters;
+ BOOL bResIsUseDictionaryList;
+
+ // disallow use of copy-constructor and assignment-operator
+ PropertyHelper_Hyphen( const PropertyHelper_Hyphen & );
+ PropertyHelper_Hyphen & operator = ( const PropertyHelper_Hyphen & );
+
+ void SetDefault();
+
+public:
+ PropertyHelper_Hyphen(
+ const Reference< XInterface > &rxSource,
+ Reference< XPropertySet > &rxPropSet );
+ virtual ~PropertyHelper_Hyphen();
+
+ // XPropertyChangeListener
+ virtual void SAL_CALL
+ propertyChange( const PropertyChangeEvent& rEvt )
+ throw(RuntimeException);
+
+ void SetTmpPropVals( const PropertyValues &rPropVals );
+
+ BOOL IsGermanPreReform() const { return bResIsGermanPreReform; }
+ BOOL IsIgnoreControlCharacters() const { return bResIsIgnoreControlCharacters; }
+ BOOL IsUseDictionaryList() const { return bResIsUseDictionaryList; }
+};
+
+///////////////////////////////////////////////////////////////////////////
+
+#endif
+
diff --git a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hreg.cxx b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hreg.cxx
new file mode 100644
index 000000000000..bc19274b974e
--- /dev/null
+++ b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hreg.cxx
@@ -0,0 +1,119 @@
+/*************************************************************************
+ *
+ * $RCSfile: hreg.cxx,v $
+ *
+ * $Revision: 1.3 $
+ *
+ * last change: $Author: hr $ $Date: 2003-03-26 13:02:07 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+
+#include <cppuhelper/factory.hxx> // helper for factories
+#ifndef _RTL_STRING_HXX_
+#include <rtl/string.hxx>
+#endif
+
+#include <com/sun/star/registry/XRegistryKey.hpp>
+
+using namespace com::sun::star::lang;
+using namespace com::sun::star::registry;
+
+////////////////////////////////////////
+// declaration of external RegEntry-functions defined by the service objects
+//
+
+extern sal_Bool SAL_CALL Hyphenator_writeInfo(
+ void * /*pServiceManager*/, XRegistryKey * pRegistryKey );
+
+extern void * SAL_CALL Hyphenator_getFactory(
+ const sal_Char * pImplName,
+ XMultiServiceFactory * pServiceManager,
+ void * /*pRegistryKey*/ );
+
+////////////////////////////////////////
+// definition of the two functions that are used to provide the services
+//
+
+extern "C"
+{
+
+sal_Bool SAL_CALL component_writeInfo(
+ void * pServiceManager, XRegistryKey * pRegistryKey )
+{
+ return Hyphenator_writeInfo( pServiceManager, pRegistryKey );
+}
+
+void SAL_CALL component_getImplementationEnvironment(
+ const sal_Char ** ppEnvTypeName, uno_Environment ** ppEnv )
+{
+ *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
+}
+
+void * SAL_CALL component_getFactory(
+ const sal_Char * pImplName, void * pServiceManager, void * pRegistryKey )
+{
+ void * pRet = Hyphenator_getFactory(
+ pImplName,
+ reinterpret_cast< XMultiServiceFactory * >( pServiceManager ),
+ pRegistryKey );
+
+ return pRet;
+}
+
+}
+
+///////////////////////////////////////////////////////////////////////////
+
diff --git a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphen.map b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphen.map
new file mode 100644
index 000000000000..1cc0ac1898a8
--- /dev/null
+++ b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphen.map
@@ -0,0 +1,8 @@
+LTH_1_0 {
+ global:
+ component_getFactory;
+ component_getImplementationEnvironment;
+ component_writeInfo;
+ local:
+ *;
+};
diff --git a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.cxx b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.cxx
new file mode 100644
index 000000000000..d8cd6531f859
--- /dev/null
+++ b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.cxx
@@ -0,0 +1,792 @@
+/*************************************************************************
+ *
+ * $RCSfile: hyphenimp.cxx,v $
+ *
+ * $Revision: 1.7 $
+ *
+ * last change: $Author: hr $ $Date: 2003-03-26 13:02:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#ifndef _COM_SUN_STAR_UNO_REFERENCE_H_
+#include <com/sun/star/uno/Reference.h>
+#endif
+#ifndef _COM_SUN_STAR_LINGUISTIC2_XSEARCHABLEDICTIONARYLIST_HPP_
+#include <com/sun/star/linguistic2/XSearchableDictionaryList.hpp>
+#endif
+
+//#include <com/sun/star/linguistic2/SpellFailure.hpp>
+#include <cppuhelper/factory.hxx> // helper for factories
+#include <com/sun/star/registry/XRegistryKey.hpp>
+
+#ifndef INCLUDED_SVTOOLS_PATHOPTIONS_HXX
+#include <svtools/pathoptions.hxx>
+#endif
+#ifndef INCLUDED_SVTOOLS_USEROPTIONS_HXX
+#include <svtools/useroptions.hxx>
+#endif
+#ifndef _TOOLS_DEBUG_HXX //autogen wg. DBG_ASSERT
+#include <tools/debug.hxx>
+#endif
+#ifndef _UNOTOOLS_PROCESSFACTORY_HXX_
+#include <unotools/processfactory.hxx>
+#endif
+#ifndef _OSL_MUTEX_HXX_
+#include <osl/mutex.hxx>
+#endif
+
+#include <hyphen.h>
+
+#ifndef _HYPHENIMP_HXX
+#include <hyphenimp.hxx>
+#endif
+
+#include <linguistic/hyphdta.hxx>
+
+#ifndef _RTL_USTRING_HXX_
+#include <rtl/ustring.hxx>
+#endif
+
+#ifndef _RTL_USTRBUF_HXX_
+#include <rtl/ustrbuf.hxx>
+#endif
+
+#include <linguistic/lngprops.hxx>
+
+#ifndef INCLUDED_SVTOOLS_PATHOPTIONS_HXX
+#include <svtools/pathoptions.hxx>
+#endif
+#ifndef INCLUDED_SVTOOLS_USEROPTIONS_HXX
+#include <svtools/useroptions.hxx>
+#endif
+#include <osl/file.hxx>
+
+#include "dictmgr.hxx"
+#include "csutil.hxx"
+
+#include <stdio.h>
+#include <iostream>
+using namespace utl;
+using namespace osl;
+using namespace rtl;
+using namespace com::sun::star;
+using namespace com::sun::star::beans;
+using namespace com::sun::star::lang;
+using namespace com::sun::star::uno;
+using namespace com::sun::star::linguistic2;
+using namespace linguistic;
+
+
+///////////////////////////////////////////////////////////////////////////
+
+BOOL operator == ( const Locale &rL1, const Locale &rL2 )
+{
+ return rL1.Language == rL2.Language &&
+ rL1.Country == rL2.Country &&
+ rL1.Variant == rL2.Variant;
+}
+
+///////////////////////////////////////////////////////////////////////////
+
+
+
+
+
+Hyphenator::Hyphenator() :
+ aEvtListeners ( GetLinguMutex() )
+{
+ bDisposing = FALSE;
+ pPropHelper = NULL;
+ numdict = 0;
+
+}
+
+
+Hyphenator::~Hyphenator()
+{
+ if (pPropHelper)
+ pPropHelper->RemoveAsPropListener();
+ if (numdict) {
+ delete[] aDicts;
+ aDicts = NULL;
+ numdict = 0;
+ }
+}
+
+
+PropertyHelper_Hyphen & Hyphenator::GetPropHelper_Impl()
+{
+
+ if (!pPropHelper)
+ {
+ Reference< XPropertySet > xPropSet( GetLinguProperties(), UNO_QUERY );
+
+ pPropHelper = new PropertyHelper_Hyphen ((XHyphenator *) this, xPropSet );
+ xPropHelper = pPropHelper;
+ pPropHelper->AddAsPropListener(); //! after a reference is established
+ }
+ return *pPropHelper;
+
+}
+
+
+Sequence< Locale > SAL_CALL Hyphenator::getLocales()
+ throw(RuntimeException)
+{
+
+ MutexGuard aGuard( GetLinguMutex() );
+ SvtPathOptions aPathOpt;
+
+ if (!numdict)
+ {
+
+ // this routine should return the locales supported by the installed
+ // hyph dictionaries. So here we need to parse both the user edited
+ // dictionary list and the shared dictionary list
+ // to see what dictionaries the admin/user has installed
+
+ int numusr; // number of user dictionary entries
+ int numshr; // number of shared dictionary entries
+ dictentry * spdict; // shared dict entry pointer
+ dictentry * updict; // user dict entry pointer
+
+ // invoke a dictionary manager to get the user dictionary list
+ OUString usrlst = aPathOpt.GetUserDictionaryPath() + A2OU("/dictionary.lst");
+ OUString ulst;
+ osl::FileBase::getSystemPathFromFileURL(usrlst,ulst);
+ OString uTmp(OU2ENC(ulst,osl_getThreadTextEncoding()));
+ DictMgr* udMgr = new DictMgr(uTmp.getStr(),"HYPH");
+ numusr = 0;
+ if (udMgr)
+ numusr = udMgr->get_list(&updict);
+
+ // invoke a second dictionary manager to get the shared dictionary list
+ OUString shrlst = aPathOpt.GetLinguisticPath() + A2OU("/ooo/dictionary.lst");
+ OUString slst;
+ osl::FileBase::getSystemPathFromFileURL(shrlst,slst);
+ OString sTmp(OU2ENC(slst,osl_getThreadTextEncoding()));
+ DictMgr* sdMgr = new DictMgr(sTmp.getStr(),"HYPH");
+ numshr = 0;
+ if (sdMgr)
+ numshr = sdMgr->get_list(&spdict);
+
+
+ // we really should merge these and remove duplicates but since
+ // users can name their dictionaries anything they want it would
+ // be impossible to know if a real duplication exists unless we
+ // add some unique key to each hyphenation dictionary
+ // we can worry about that when and if issuezilla's flood in
+ numdict = numusr + numshr;
+
+ if (numdict) {
+ aDicts = new HDInfo[numdict];
+ aSuppLocales.realloc(numdict);
+ Locale * pLocale = aSuppLocales.getArray();
+ int numlocs = 0;
+ int newloc;
+ int i,j;
+ int k = 0;
+
+ // first add the user dictionaries
+ // keeping track of unique locales only
+ for (i = 0; i < numusr; i++) {
+ Locale nLoc( A2OU(updict->lang), A2OU(updict->region), OUString() );
+
+ newloc = 1;
+ for (j = 0; j < numlocs; j++) {
+ if (nLoc == pLocale[j]) newloc = 0;
+ }
+ if (newloc) {
+ pLocale[numlocs] = nLoc;
+ numlocs++;
+ }
+ aDicts[k].aPtr = NULL;
+ aDicts[k].aLoc = nLoc;
+ aDicts[k].aEnc = 0;
+ aDicts[k].aName = A2OU(updict->filename);
+ k++;
+ updict++;
+ }
+
+ // now add the shared dictionaries
+ // keeping track of unique locales only
+ for (i = 0; i < numshr; i++) {
+ Locale nLoc( A2OU(spdict->lang), A2OU(spdict->region), OUString() );
+
+ newloc = 1;
+ for (j = 0; j < numlocs; j++) {
+ if (nLoc == pLocale[j]) newloc = 0;
+ }
+ if (newloc) {
+ pLocale[numlocs] = nLoc;
+ numlocs++;
+ }
+ aDicts[k].aPtr = NULL;
+ aDicts[k].aLoc = nLoc;
+ aDicts[k].aEnc = 0;
+ aDicts[k].aName = A2OU(spdict->filename);
+ k++;
+ spdict++;
+ }
+
+ // reallocate the size to just cover the unique locales
+ aSuppLocales.realloc(numlocs);
+
+ } else {
+ // no dictionary.lst files found, just default to hyph_en.dic
+ numdict = 1;
+ aSuppLocales.realloc(1);
+ Locale *pLocale = aSuppLocales.getArray();
+ Locale nLoc( A2OU("en"), A2OU("US"), OUString() );
+ pLocale[0] = nLoc;
+ aDicts = new HDInfo[1];
+ aDicts[0].aPtr = NULL;
+ aDicts[0].aLoc = nLoc;
+ aDicts[0].aEnc = 0;
+ aDicts[0].aName = A2OU("hyph_en");
+ }
+
+ /* de-allocation of memory is handled inside the DictMgr */
+ updict = NULL;
+ if (udMgr) {
+ delete udMgr;
+ udMgr = NULL;
+ }
+ spdict = NULL;
+ if (sdMgr) {
+ delete sdMgr;
+ sdMgr = NULL;
+ }
+
+ }
+
+ return aSuppLocales;
+}
+
+
+
+sal_Bool SAL_CALL Hyphenator::hasLocale(const Locale& rLocale)
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ BOOL bRes = FALSE;
+ if (!aSuppLocales.getLength())
+ getLocales();
+
+ INT32 nLen = aSuppLocales.getLength();
+ for (INT32 i = 0; i < nLen; ++i)
+ {
+ const Locale *pLocale = aSuppLocales.getConstArray();
+ if (rLocale == pLocale[i])
+ {
+ bRes = TRUE;
+ break;
+ }
+ }
+ return bRes;
+}
+
+
+Reference< XHyphenatedWord > SAL_CALL
+Hyphenator::hyphenate( const ::rtl::OUString& aWord,
+ const ::com::sun::star::lang::Locale& aLocale,
+ sal_Int16 nMaxLeading,
+ const ::com::sun::star::beans::PropertyValues& aProperties )
+ throw (com::sun::star::uno::RuntimeException,
+ com::sun::star::lang::IllegalArgumentException)
+{
+ SvtPathOptions aPathOpt;
+
+ int nHyphenationPos = -1;
+ int wordlen;
+ char *hyphens;
+ char *lcword;
+ int k = 0;
+
+
+ HyphenDict *dict = NULL;
+ rtl_TextEncoding aEnc = 0;
+
+ Reference< XHyphenatedWord > xRes;
+
+ k = -1;
+ for (int j = 0; j < numdict; j++)
+ if (aLocale == aDicts[j].aLoc) k = j;
+
+
+ // if we have a hyphenation dictionary matching this locale
+ if (k != -1) {
+
+ // if this dictinary has not been loaded yet do that
+ if (!aDicts[k].aPtr) {
+
+ OUString DictFN = aDicts[k].aName + A2OU(".dic");
+ OUString userdictpath;
+ OUString dictpath;
+
+ osl::FileBase::getSystemPathFromFileURL(
+ aPathOpt.GetUserDictionaryPath() + A2OU("/"),
+ userdictpath);
+
+ osl::FileBase::getSystemPathFromFileURL(
+ aPathOpt.GetLinguisticPath() + A2OU("/ooo/"),
+ dictpath);
+
+ OString uTmp(OU2ENC(userdictpath + DictFN,osl_getThreadTextEncoding()));
+ OString sTmp(OU2ENC(dictpath + DictFN,osl_getThreadTextEncoding()));
+
+ if ( ( dict = hnj_hyphen_load ( uTmp.getStr() ) ) == NULL )
+ if ( ( dict = hnj_hyphen_load ( sTmp.getStr()) ) == NULL )
+ {
+ fprintf(stderr, "Couldn't find file %s and %s\n", OU2ENC(userdictpath + DictFN, osl_getThreadTextEncoding()), OU2ENC(userdictpath + DictFN, osl_getThreadTextEncoding() ));
+ return NULL;
+ }
+ aDicts[k].aPtr = dict;
+ aDicts[k].aEnc = rtl_getTextEncodingFromUnixCharset(dict->cset);
+ }
+
+ // other wise hyphenate the word with that dictionary
+ dict = aDicts[k].aPtr;
+ aEnc = aDicts[k].aEnc;
+
+ OString encWord(OU2ENC(aWord,aEnc));
+
+ wordlen = encWord.getLength();
+ lcword = new char[wordlen+1];
+ hyphens = new char[wordlen+5];
+ enmkallsmall(lcword,encWord.getStr(),dict->cset);
+
+ if (hnj_hyphen_hyphenate(dict, lcword, wordlen, hyphens))
+ {
+ //whoops something did not work
+ delete[] hyphens;
+ delete[] lcword;
+ return NULL;
+ }
+
+ OUStringBuffer hyphenatedWord;
+ INT32 Leading = GetPosInWordToCheck( aWord, nMaxLeading );
+
+ for (INT32 i = 0; i < encWord.getLength(); i++)
+ {
+ hyphenatedWord.append(aWord[i]);
+ if ((hyphens[i]&1) && (i < Leading))
+ {
+ nHyphenationPos = i;
+ hyphenatedWord.append(sal_Unicode('='));
+ }
+ }
+
+ if (nHyphenationPos == -1)
+ xRes = NULL;
+ else
+ {
+ xRes = new HyphenatedWord( aWord, LocaleToLanguage( aLocale ), nHyphenationPos,
+ aWord, nHyphenationPos );
+ }
+
+ delete[] hyphens;
+ delete[] lcword;
+ return xRes;
+
+ }
+ return NULL;
+}
+
+
+Reference < XHyphenatedWord > SAL_CALL
+ Hyphenator::queryAlternativeSpelling( const ::rtl::OUString& aWord,
+ const ::com::sun::star::lang::Locale& aLocale,
+ sal_Int16 nIndex,
+ const ::com::sun::star::beans::PropertyValues& aProperties )
+ throw(::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::uno::RuntimeException)
+{
+ /* alternative spelling isn't supported by tex dictionaries */
+ return NULL;
+}
+
+Reference< XPossibleHyphens > SAL_CALL
+ Hyphenator::createPossibleHyphens( const ::rtl::OUString& aWord,
+ const ::com::sun::star::lang::Locale& aLocale,
+ const ::com::sun::star::beans::PropertyValues& aProperties )
+ throw(::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::uno::RuntimeException)
+
+{
+
+ SvtPathOptions aPathOpt;
+ // CharClass chclass( rSMgr, aLocale );
+
+ int nHyphenationPos = -1;
+ int wordlen;
+ char *hyphens;
+ char *lcword;
+ int k;
+
+
+ HyphenDict *dict;
+ rtl_TextEncoding aEnc;
+
+ Reference< XPossibleHyphens > xRes;
+
+ k = -1;
+ for (int j = 0; j < numdict; j++)
+ if (aLocale == aDicts[j].aLoc) k = j;
+
+ dict = NULL;
+ aEnc = 0;
+
+ // if we have a hyphenationd citionary matching this locale
+ if (k != -1) {
+
+ // if this dictioanry has not been loaded yet do that
+ if (!aDicts[k].aPtr) {
+
+ OUString DictFN = aDicts[k].aName + A2OU(".dic");
+ OUString userdictpath;
+ OUString dictpath;
+ osl::FileBase::getSystemPathFromFileURL(
+ aPathOpt.GetUserDictionaryPath() + A2OU("/"),
+ userdictpath);
+
+ osl::FileBase::getSystemPathFromFileURL(
+ aPathOpt.GetLinguisticPath() + A2OU("/ooo/"),
+ dictpath);
+ OString uTmp(OU2ENC(userdictpath + DictFN,osl_getThreadTextEncoding()));
+ OString sTmp(OU2ENC(dictpath + DictFN,osl_getThreadTextEncoding()));
+
+
+ if ( ( dict = hnj_hyphen_load ( uTmp.getStr() ) ) == NULL )
+ if ( ( dict = hnj_hyphen_load ( sTmp.getStr()) ) == NULL )
+ {
+ fprintf(stderr, "Couldn't find file %s and %s\n", OU2ENC(userdictpath + DictFN, osl_getThreadTextEncoding()), OU2ENC(userdictpath + DictFN, osl_getThreadTextEncoding() ));
+ return NULL;
+ }
+ aDicts[k].aPtr = dict;
+ aDicts[k].aEnc = rtl_getTextEncodingFromUnixCharset(dict->cset);
+ }
+
+ // other wise hyphenate the word with that dictionary
+ dict = aDicts[k].aPtr;
+ aEnc = aDicts[k].aEnc;
+
+
+ OString encWord(OU2ENC(aWord, aEnc));
+
+ wordlen = encWord.getLength();
+ lcword = new char[wordlen+1];
+ hyphens = new char[wordlen+5];
+ enmkallsmall(lcword,encWord.getStr(),dict->cset);
+
+ if (hnj_hyphen_hyphenate(dict, lcword, wordlen, hyphens))
+ {
+ delete[] hyphens;
+ delete[] lcword;
+ return NULL;
+ }
+
+ INT16 nHyphCount = 0;
+
+ for (INT16 i = 0; i < encWord.getLength(); i++)
+ if (hyphens[i]&1)
+ nHyphCount++;
+
+ Sequence< INT16 > aHyphPos(nHyphCount);
+ INT16 *pPos = aHyphPos.getArray();
+ OUStringBuffer hyphenatedWordBuffer;
+ OUString hyphenatedWord;
+ nHyphCount = 0;
+
+ for (i = 0; i < encWord.getLength(); i++)
+ {
+ hyphenatedWordBuffer.append(aWord[i]);
+ if (hyphens[i]&1)
+ {
+ pPos[nHyphCount] = i;
+ hyphenatedWordBuffer.append(sal_Unicode('='));
+ nHyphCount++;
+ }
+ }
+
+ hyphenatedWord = hyphenatedWordBuffer.makeStringAndClear();
+
+ xRes = new PossibleHyphens( aWord, LocaleToLanguage( aLocale ),
+ hyphenatedWord, aHyphPos );
+
+ delete[] hyphens;
+ delete[] lcword;
+ return xRes;
+ }
+
+ return NULL;
+
+}
+
+
+
+Reference< XInterface > SAL_CALL Hyphenator_CreateInstance(
+ const Reference< XMultiServiceFactory > & rSMgr )
+ throw(Exception)
+{
+
+ Reference< XInterface > xService = (cppu::OWeakObject*) new Hyphenator;
+ return xService;
+}
+
+
+sal_Bool SAL_CALL
+ Hyphenator::addLinguServiceEventListener(
+ const Reference< XLinguServiceEventListener >& rxLstnr )
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ BOOL bRes = FALSE;
+ if (!bDisposing && rxLstnr.is())
+ {
+ bRes = GetPropHelper().addLinguServiceEventListener( rxLstnr );
+ }
+ return bRes;
+}
+
+
+sal_Bool SAL_CALL
+ Hyphenator::removeLinguServiceEventListener(
+ const Reference< XLinguServiceEventListener >& rxLstnr )
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ BOOL bRes = FALSE;
+ if (!bDisposing && rxLstnr.is())
+ {
+ DBG_ASSERT( xPropHelper.is(), "xPropHelper non existent" );
+ bRes = GetPropHelper().removeLinguServiceEventListener( rxLstnr );
+ }
+ return bRes;
+}
+
+
+OUString SAL_CALL
+ Hyphenator::getServiceDisplayName( const Locale& rLocale )
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+ return A2OU( "ALTLinux LibHnj Hyphenator" );
+}
+
+
+void SAL_CALL
+ Hyphenator::initialize( const Sequence< Any >& rArguments )
+ throw(Exception, RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ if (!pPropHelper)
+ {
+ INT32 nLen = rArguments.getLength();
+ if (2 == nLen)
+ {
+ Reference< XPropertySet > xPropSet;
+ rArguments.getConstArray()[0] >>= xPropSet;
+ //rArguments.getConstArray()[1] >>= xDicList;
+
+ //! Pointer allows for access of the non-UNO functions.
+ //! And the reference to the UNO-functions while increasing
+ //! the ref-count and will implicitly free the memory
+ //! when the object is not longer used.
+ pPropHelper = new PropertyHelper_Hyphen( (XHyphenator *) this, xPropSet );
+ xPropHelper = pPropHelper;
+ pPropHelper->AddAsPropListener(); //! after a reference is established
+ }
+ else
+ DBG_ERROR( "wrong number of arguments in sequence" );
+
+ }
+}
+
+
+void SAL_CALL
+ Hyphenator::dispose()
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ if (!bDisposing)
+ {
+ bDisposing = TRUE;
+ EventObject aEvtObj( (XHyphenator *) this );
+ aEvtListeners.disposeAndClear( aEvtObj );
+ }
+}
+
+
+void SAL_CALL
+ Hyphenator::addEventListener( const Reference< XEventListener >& rxListener )
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ if (!bDisposing && rxListener.is())
+ aEvtListeners.addInterface( rxListener );
+}
+
+
+void SAL_CALL
+ Hyphenator::removeEventListener( const Reference< XEventListener >& rxListener )
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ if (!bDisposing && rxListener.is())
+ aEvtListeners.removeInterface( rxListener );
+}
+
+
+///////////////////////////////////////////////////////////////////////////
+// Service specific part
+//
+
+OUString SAL_CALL Hyphenator::getImplementationName()
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ return getImplementationName_Static();
+}
+
+
+sal_Bool SAL_CALL Hyphenator::supportsService( const OUString& ServiceName )
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ Sequence< OUString > aSNL = getSupportedServiceNames();
+ const OUString * pArray = aSNL.getConstArray();
+ for( INT32 i = 0; i < aSNL.getLength(); i++ )
+ if( pArray[i] == ServiceName )
+ return TRUE;
+ return FALSE;
+}
+
+
+Sequence< OUString > SAL_CALL Hyphenator::getSupportedServiceNames()
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ return getSupportedServiceNames_Static();
+}
+
+
+Sequence< OUString > Hyphenator::getSupportedServiceNames_Static()
+ throw()
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ Sequence< OUString > aSNS( 1 ); // auch mehr als 1 Service moeglich
+ aSNS.getArray()[0] = A2OU( SN_HYPHENATOR );
+ return aSNS;
+}
+
+
+sal_Bool SAL_CALL Hyphenator_writeInfo(
+ void * /*pServiceManager*/, registry::XRegistryKey * pRegistryKey )
+{
+
+ try
+ {
+ String aImpl( '/' );
+ aImpl += Hyphenator::getImplementationName_Static().getStr();
+ aImpl.AppendAscii( "/UNO/SERVICES" );
+ Reference< registry::XRegistryKey > xNewKey =
+ pRegistryKey->createKey( aImpl );
+ Sequence< OUString > aServices =
+ Hyphenator::getSupportedServiceNames_Static();
+ for( INT32 i = 0; i < aServices.getLength(); i++ )
+ xNewKey->createKey( aServices.getConstArray()[i] );
+
+ return sal_True;
+ }
+ catch(Exception &)
+ {
+ return sal_False;
+ }
+}
+
+
+void * SAL_CALL Hyphenator_getFactory( const sal_Char * pImplName,
+ XMultiServiceFactory * pServiceManager, void * )
+{
+ void * pRet = 0;
+ if ( !Hyphenator::getImplementationName_Static().compareToAscii( pImplName ) )
+ {
+ Reference< XSingleServiceFactory > xFactory =
+ cppu::createOneInstanceFactory(
+ pServiceManager,
+ Hyphenator::getImplementationName_Static(),
+ Hyphenator_CreateInstance,
+ Hyphenator::getSupportedServiceNames_Static());
+ // acquire, because we return an interface pointer instead of a reference
+ xFactory->acquire();
+ pRet = xFactory.get();
+ }
+ return pRet;
+}
+
+
+///////////////////////////////////////////////////////////////////////////
diff --git a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.hxx b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.hxx
new file mode 100644
index 000000000000..028e96dba84e
--- /dev/null
+++ b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.hxx
@@ -0,0 +1,250 @@
+/*************************************************************************
+ *
+ * $RCSfile: hyphenimp.hxx,v $
+ *
+ * $Revision: 1.4 $
+ *
+ * last change: $Author: hr $ $Date: 2003-03-26 13:02:08 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#ifndef _LINGU2_HYPHENIMP_HXX_
+#define _LINGU2_HYPHENIMP_HXX_
+
+#include <uno/lbnames.h> // CPPU_CURRENT_LANGUAGE_BINDING_NAME macro, which specify the environment type
+#include <cppuhelper/implbase1.hxx> // helper for implementations
+#include <cppuhelper/implbase6.hxx> // helper for implementations
+
+#ifndef _COM_SUN_STAR_LANG_XCOMPONENT_HPP_
+#include <com/sun/star/lang/XComponent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XINITIALIZATION_HPP_
+#include <com/sun/star/lang/XInitialization.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XSERVICEDISPLAYNAME_HPP_
+#include <com/sun/star/lang/XServiceDisplayName.hpp>
+#endif
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/beans/PropertyValues.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/linguistic2/XHyphenator.hpp>
+#include <com/sun/star/linguistic2/XSearchableDictionaryList.hpp>
+#include <com/sun/star/linguistic2/XLinguServiceEventBroadcaster.hpp>
+
+#ifndef _TOOLS_TABLE_HXX
+#include <tools/table.hxx>
+#endif
+
+#include <linguistic/misc.hxx>
+#include "hprophelp.hxx"
+#include <stdio.h>
+using namespace ::rtl;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::linguistic2;
+
+
+#define A2OU(x) ::rtl::OUString::createFromAscii( x )
+
+#define OU2A(rtlOUString) ::rtl::OString((rtlOUString).getStr(), (rtlOUString).getLength(), RTL_TEXTENCODING_ASCII_US).getStr()
+
+#define OU2UTF8(rtlOUString) ::rtl::OString((rtlOUString).getStr(), (rtlOUString).getLength(), RTL_TEXTENCODING_UTF8).getStr()
+
+#define OU2ISO_1(rtlOUString) ::rtl::OString((rtlOUString).getStr(), (rtlOUString).getLength(), RTL_TEXTENCODING_ISO_8859_1).getStr()
+
+#define OU2ENC(rtlOUString, rtlEncoding) ::rtl::OString((rtlOUString).getStr(), (rtlOUString).getLength(), rtlEncoding).getStr()
+
+///////////////////////////////////////////////////////////////////////////
+
+
+struct HDInfo {
+ HyphenDict * aPtr;
+ OUString aName;
+ Locale aLoc;
+ rtl_TextEncoding aEnc;
+};
+
+
+
+class Hyphenator :
+ public cppu::WeakImplHelper6
+ <
+ XHyphenator,
+ XLinguServiceEventBroadcaster,
+ XInitialization,
+ XComponent,
+ XServiceInfo,
+ XServiceDisplayName
+ >
+{
+ Sequence< Locale > aSuppLocales;
+ HDInfo * aDicts;
+ sal_Int32 numdict;
+
+ ::cppu::OInterfaceContainerHelper aEvtListeners;
+ Reference< XPropertyChangeListener > xPropHelper;
+ Reference< XMultiServiceFactory > rSMgr;
+ PropertyHelper_Hyphen * pPropHelper;
+ BOOL bDisposing;
+
+ // disallow copy-constructor and assignment-operator for now
+ Hyphenator(const Hyphenator &);
+ Hyphenator & operator = (const Hyphenator &);
+
+ PropertyHelper_Hyphen & GetPropHelper_Impl();
+ PropertyHelper_Hyphen & GetPropHelper()
+ {
+ return pPropHelper ? *pPropHelper : GetPropHelper_Impl();
+ }
+
+public:
+ Hyphenator();
+
+ virtual ~Hyphenator();
+
+ // XSupportedLocales (for XHyphenator)
+ virtual Sequence< Locale > SAL_CALL getLocales()
+ throw(RuntimeException);
+ virtual sal_Bool SAL_CALL hasLocale( const Locale& rLocale )
+ throw(RuntimeException);
+
+ // XHyphenator
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XHyphenatedWord > SAL_CALL
+ hyphenate( const ::rtl::OUString& aWord,
+ const ::com::sun::star::lang::Locale& aLocale,
+ sal_Int16 nMaxLeading,
+ const ::com::sun::star::beans::PropertyValues& aProperties )
+ throw(::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::uno::RuntimeException);
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XHyphenatedWord > SAL_CALL
+ queryAlternativeSpelling( const ::rtl::OUString& aWord,
+ const ::com::sun::star::lang::Locale& aLocale,
+ sal_Int16 nIndex,
+ const ::com::sun::star::beans::PropertyValues& aProperties )
+ throw(::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::uno::RuntimeException);
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XPossibleHyphens > SAL_CALL
+ createPossibleHyphens( const ::rtl::OUString& aWord,
+ const ::com::sun::star::lang::Locale& aLocale,
+ const ::com::sun::star::beans::PropertyValues& aProperties )
+ throw(::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::uno::RuntimeException);
+
+ // XLinguServiceEventBroadcaster
+ virtual sal_Bool SAL_CALL
+ addLinguServiceEventListener(
+ const Reference< XLinguServiceEventListener >& rxLstnr )
+ throw(RuntimeException);
+ virtual sal_Bool SAL_CALL
+ removeLinguServiceEventListener(
+ const Reference< XLinguServiceEventListener >& rxLstnr )
+ throw(RuntimeException);
+
+ // XServiceDisplayName
+ virtual OUString SAL_CALL
+ getServiceDisplayName( const Locale& rLocale )
+ throw(RuntimeException);
+
+ // XInitialization
+ virtual void SAL_CALL
+ initialize( const Sequence< Any >& rArguments )
+ throw(Exception, RuntimeException);
+
+ // XComponent
+ virtual void SAL_CALL
+ dispose()
+ throw(RuntimeException);
+ virtual void SAL_CALL
+ addEventListener( const Reference< XEventListener >& rxListener )
+ throw(RuntimeException);
+ virtual void SAL_CALL
+ removeEventListener( const Reference< XEventListener >& rxListener )
+ throw(RuntimeException);
+
+ ////////////////////////////////////////////////////////////
+ // Service specific part
+ //
+
+ // XServiceInfo
+ virtual OUString SAL_CALL
+ getImplementationName()
+ throw(RuntimeException);
+ virtual sal_Bool SAL_CALL
+ supportsService( const OUString& rServiceName )
+ throw(RuntimeException);
+ virtual Sequence< OUString > SAL_CALL
+ getSupportedServiceNames()
+ throw(RuntimeException);
+
+
+ static inline OUString
+ getImplementationName_Static() throw();
+ static Sequence< OUString >
+ getSupportedServiceNames_Static() throw();
+};
+
+inline OUString Hyphenator::getImplementationName_Static() throw()
+{
+ return A2OU( "org.openoffice.lingu.LibHnjHyphenator" );
+}
+
+
+///////////////////////////////////////////////////////////////////////////
+
+#endif
+
diff --git a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/makefile.mk b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/makefile.mk
new file mode 100644
index 000000000000..a0c26652fc45
--- /dev/null
+++ b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/makefile.mk
@@ -0,0 +1,180 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.6 $
+#
+# last change: $Author: hr $ $Date: 2003-03-26 13:02:08 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 by Sun Microsystems, Inc.
+# 901 San Antonio Road, Palo Alto, CA 94303, USA
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License version 2.1, as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ = ..$/..$/..$/..
+
+PRJNAME = lingucomponent
+TARGET = hyphen
+ENABLE_EXCEPTIONS=TRUE
+USE_DEFFILE=TRUE
+
+.IF "$(GUI)"=="UNX"
+HNJLIB=-lhnj
+.ELSE
+HNJLIB=libhnj.lib
+.ENDIF
+
+.IF "$(ULINGULIB)"==""
+.IF "$(GUI)"=="UNX"
+ULINGULIB=-lulingu$(UPD)$(DLLPOSTFIX)
+.ENDIF # unx
+.IF "$(GUI)"=="WNT"
+ULINGULIB=$(LIBPRE) ulingu.lib
+.ENDIF # wnt
+.ENDIF
+
+
+
+#----- Settings ---------------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+
+UNOUCRDEP= $(SOLARBINDIR)$/types.rdb
+UNOUCRRDB= $(SOLARBINDIR)$/types.rdb
+
+UNOTYPES=\
+ com.sun.star.linguistic2.DictionaryEvent\
+ com.sun.star.linguistic2.DictionaryEventFlags\
+ com.sun.star.linguistic2.DictionaryListEvent\
+ com.sun.star.linguistic2.DictionaryListEventFlags\
+ com.sun.star.linguistic2.DictionaryType\
+ com.sun.star.linguistic2.LinguServiceEventFlags\
+ com.sun.star.linguistic2.SpellFailure\
+ com.sun.star.linguistic2.XDictionary\
+ com.sun.star.linguistic2.XDictionary1\
+ com.sun.star.linguistic2.XDictionaryEntry\
+ com.sun.star.linguistic2.XDictionaryEventListener\
+ com.sun.star.linguistic2.XDictionaryList\
+ com.sun.star.linguistic2.XDictionaryListEventListener\
+ com.sun.star.linguistic2.XHyphenatedWord\
+ com.sun.star.linguistic2.XHyphenator\
+ com.sun.star.linguistic2.XLinguServiceEventBroadcaster\
+ com.sun.star.linguistic2.XLinguServiceEventListener\
+ com.sun.star.linguistic2.XLinguServiceManager\
+ com.sun.star.linguistic2.XMeaning\
+ com.sun.star.linguistic2.XPossibleHyphens\
+ com.sun.star.linguistic2.XSearchableDictionaryList\
+ com.sun.star.linguistic2.XSpellAlternatives\
+ com.sun.star.linguistic2.XSpellChecker\
+ com.sun.star.linguistic2.XSupportedLocales\
+ com.sun.star.linguistic2.XThesaurus
+
+CXXFLAGS += -I..$/libhnj -I..$/..$/..$/lingutil
+CFLAGSCXX += -I..$/libhnj -I..$/..$/..$/lingutil
+CFLAGSCC += -I..$/libhnj -I..$/..$/..$/lingutil
+
+.IF "$(header)" == ""
+
+EXCEPTIONSFILES= \
+ $(SLO)$/hprophelp.obj\
+ $(SLO)$/hyphenimp.obj
+
+SLOFILES= \
+ $(SLO)$/hprophelp.obj\
+ $(SLO)$/hreg.obj\
+ $(SLO)$/hyphenimp.obj
+
+
+SHL1TARGET= $(TARGET)$(UPD)$(DLLPOSTFIX)
+
+SHL1STDLIBS= \
+ $(CPPULIB) \
+ $(CPPUHELPERLIB) \
+ $(UNOLIB) \
+ $(VOSLIB) \
+ $(TOOLSLIB) \
+ $(SVTOOLLIB) \
+ $(SVLLIB) \
+ $(VCLLIB) \
+ $(SFXLIB) \
+ $(SALLIB) \
+ $(UCBHELPERLIB) \
+ $(UNOTOOLSLIB) \
+ $(LNGLIB) \
+ $(HNJLIB) \
+ $(ULINGULIB)
+
+
+# build DLL
+SHL1LIBS= $(SLB)$/$(TARGET).lib
+SHL1IMPLIB= i$(TARGET)
+SHL1DEPN= $(SHL1LIBS)
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+.IF "$(OS)"!="MACOSX"
+SHL1VERSIONMAP= $(TARGET).map
+.ENDIF
+
+# build DEF file
+DEF1NAME =$(SHL1TARGET)
+#DEF1DEPN =$(MISC)$/$(SHL1TARGET).flt
+#DEFLIB1NAME =$(TARGET)
+#DEF1DES =Linguistic2 main DLL
+DEF1EXPORTFILE= exports.dxp
+
+.ENDIF
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/lingucomponent/source/hyphenator/altlinuxhyph/hyphtabs/hyph_en.dic b/lingucomponent/source/hyphenator/altlinuxhyph/hyphtabs/hyph_en.dic
new file mode 100644
index 000000000000..c2c5f8e2f7af
--- /dev/null
+++ b/lingucomponent/source/hyphenator/altlinuxhyph/hyphtabs/hyph_en.dic
@@ -0,0 +1,11388 @@
+ISO8859-1
+.ab4i
+.1ab
+.ab3ol
+.abo2
+.ace4
+.ace2t3
+.a2ch4
+.ac5t2iva
+.a2ct
+.ac2t1iv
+.ad4d1in
+.ad1d4
+.ad3di
+.ad3e
+.a2d3o
+.4a2e5d
+.aer3i
+.aer1
+.a2f3f
+.a2f3t
+.ag4a
+.4a2g5n2
+.a2ir3
+.2ai2
+.al5im
+.4al1k
+.al3le
+.all2
+.a1m5a2r
+.2a2m
+.ama5te
+.am1at
+.am2i
+.am3pe
+.am2p
+.am3ph
+.a2n1
+.an1a3b
+.an2a
+.an2a3s
+.a4nd2
+.an5da
+.an4el
+.a4n4en
+.an4gl2
+.a4ng
+.an4on.
+.an1o
+.a4n3s
+.an2t3a
+.an3t2i3
+.4ant4ic
+.an4t5o
+.a2n2y5
+.a3ph5or
+.2ap
+.a1pho
+.ap4i
+.ar5ab
+.a2r
+.ar5ap
+.ar4c2i2
+.ar1c2
+.ar5d
+.ar4e
+.ar1i4
+.ar4ise
+.ar4isi
+.ar5sen
+.a2r2s2
+.ar2se
+.ar4t5icl2
+.art2
+.ar1t4ic
+.as1
+.as4q
+.as5s1ib
+.a4ss2
+.at5a2r
+.2a2ta
+.ateli4
+.ate2l
+.at5omi4se
+.a2to
+.at2om
+.atom1i
+.at5om1iz
+.2a2t3r2
+.a2t3t4
+.au3b
+.2au2
+.au3g4u
+.aur4e5
+.au4r
+.aus5
+.authen5
+.au3th
+.authe2
+.2av4
+.av5era
+.aver1
+.bap5ti2s1m4
+.b2a4p1
+.ba2pt2
+.bap2t1is
+.barri5c4
+.ba2r
+.b2a4r1r4
+.bar3ri
+.bas4i
+.1bas
+.ba5sic
+.be3d2i
+.b2e
+.2b2ed
+.be3lo
+.1bel
+.be5r4a
+.ber1
+.be5s1m4
+.be1s2
+.bi4er1
+.b4ie2
+.blaz5o
+.2bl2
+.bl2a
+.b4l2az2
+.bo3lo
+.bo2
+.bo1s5o2m
+.bou4n4d
+.bo4u2
+.b2oun1
+.bov4
+.3bra5ch
+.br4
+.br2e2
+.burn5i
+.bu4r
+.bur2n2
+.ca3de
+.ca4gin
+.ca1g2i
+.cam5i
+.c2a2m
+.ca1m3o
+.ca2n1
+.can5t2a
+.ca5p2itu
+.1c2ap
+.cap1i
+.car4i
+.1ca2r
+.cas5u1al
+.3cas1u3
+.cas2ua2
+.ca4ti
+.c1at
+.cen5so
+.1cen2
+.ce4n2s
+.cen5ten1a
+.3cent
+.cen1te
+.cen4t5ri
+.cen1tr2
+.cer4i
+.cer1
+.2ch4
+.cit4a
+.1c2i2
+.cle1m5e4
+.cl2
+.c2le2
+.clima5to
+.cli1m
+.co5i4t
+.1c2o2
+.c2oi
+.co3pa
+.cop5ro
+.co1pr2
+.c4o3r1u
+.co3si
+.co5ter1
+.c2ot
+.coty3le5
+.5coty
+.cri5t2i1c2i2
+.cr2
+.crit1ic
+.cust2om5
+.1cus
+.c4ust2
+.cus1to4
+.3d2av5
+.dea5c2o2
+.dea2
+.de5lec
+.d2ele
+.del5eg
+.de3li
+.de3l2i5r
+.1d4e1m
+.de5nit
+.den1i
+.de3n1o
+.der2
+.de3ra
+.de5re4s
+.d4er2e
+.1de3ri
+.de5sc2r2ib
+.5de2sc2
+.descr2
+.de5ser1v2
+.deser1
+.de5signe
+.des4i
+.des2i4g
+.desi2gn2
+.de5s2ir
+.de5s1is2
+.de5sp2oi
+.des1p
+.des2po
+.determ5i
+.1de1t
+.deter2
+.de3ve
+.de4w
+.di4al.
+.1d2i1a2
+.dia3s
+.di4at
+.din4a
+.2d1in
+.di2o5c
+.3d2i1o2
+.1do2
+.do4e
+.domest5
+.d2om
+.dom2e
+.do2me2s
+.du4al.
+.1du
+.d2ua2
+.du1al
+.3d4u4c
+.d4y2s3
+.2d2y
+.eas4t5
+.ea2
+.ech1in5
+.ech3i
+.e2ch
+.e1c2o3
+.e2c3t
+.e1d5em
+.2ed
+.ede2
+.ed4it.
+.ed1it
+.ed4iti
+.eg4
+.ei3d4
+.e2i5r
+.e2l3ev3
+.2ele
+.el2i
+.elu5s4
+.e1lu
+.e2m3b
+.em5in
+.em1p4
+.em5p4y
+.en1
+.en5c
+.en4d2ed
+.2e4nd
+.ende2
+.e4n3s
+.ent2
+.en5ta
+.eo1s5
+.epi1
+.epi3d
+.er2a
+.er1
+.er5em5
+.2er2e
+.er4i4
+.er4o2
+.eros4
+.er2ot3
+.er4ri
+.e4r1r4
+.es1
+.esc1al5
+.e2sc2
+.es1ca
+.es3p
+.es3t2
+.eter2n5
+.eter2
+.eth3e2
+.e2th1
+.eu1
+.eu4r4
+.eval3
+.evol5ut
+.e1vo
+.evo2l
+.ew4
+.ex1
+.ex3a
+.eye3
+.fal4le
+.1f2a
+.fall2
+.far4i
+.5fa2r
+.fec5un2da
+.3fec
+.fecun1
+.fecu4nd
+.f2e4n4d
+.feo2ff5
+.feof2
+.fi2
+.fi5l2i1a2
+.1fi2l
+.fil5tr2
+.fi1n5e4ss
+.2fin
+.fin2e
+.fine4s
+.f1i4n3g
+.fi5n4it
+.f2in1i
+.fi2s4c5
+.3f2o3c
+.1fo
+.fran5ch
+.1fr2
+.fra2n
+.fu5g4a
+.3fu
+.g2a4m
+.ga1m5e2t
+.gam2e
+.gen4et
+.3gen
+.g4ene
+.ge5neti
+.gen5i1a2
+.gen1i
+.ge3ro
+.ger1
+.glor5i3o2
+.2gl2
+.3glo
+.glor1i
+.gnost4
+.2gn2
+.g2no
+.gno4s
+.go3no
+.3gos3
+.h1ab2
+.ha2
+.ha5bili
+.hab1il
+.hama5
+.h2a4m
+.han4de2
+.ha2n
+.ha4nd
+.hast5i
+.hast2
+.h4e4i
+.he2
+.hem5a
+.hi2
+.hi3b
+.ho2l
+.ho5rol
+.hov3
+.hy3lo
+.h2y
+.hy2l
+.ico3s
+.2i2c2o2
+.idi2
+.i2d
+.2ig3
+.i2g1n2
+.il4i
+.i2m5b
+.in1
+.2i4n3d
+.in3e2
+.2in2i
+.2in3o
+.in3t
+.inve2st5i
+.in3v2
+.inve2
+.invest2
+.i4r3r4
+.2ir
+.i2s4c2
+.is4li
+.i2s1l4
+.is4o
+.i1s2o5m
+.ka5ro
+.ka2r
+.ki4e2
+.kin3e
+.k1in
+.lab4o2
+.l2a
+.l1ab
+.la4m2e
+.l2a2m
+.lam5enta
+.la3men
+.lan5i
+.la2n
+.lash4e2
+.l4as
+.las2h
+.le4m
+.len5t2i
+.le2p
+.le1p5r2
+.les5son
+.3le4s4s
+.les2so
+.le5va2n
+.2lev
+.l3eva
+.libra2r5
+.lib1r4
+.lig3a
+.1l2ig
+.l2i3o2
+.li4o4n1s2
+.l2i4p
+.loc3a
+.1l2oc
+.lo4g2i1a2
+.1l2o1g
+.lo3g2i
+.lo2p
+.loph3
+.lous5i
+.lo4u2
+.lov5er1
+.lub3
+.ly1o3
+.2ly
+.mac5u
+.mal5ad5
+.mal2a
+.ma5l1in
+.mar5ti
+.1ma2r
+.mart2
+.m4a2th5
+.me5lo3d2i1o2
+.m2e
+.melo4di
+.ment4
+.1men
+.men5ta
+.me5r2i2d
+.mer1
+.me5r3in
+.met4er2
+.1me2t
+.met1e
+.mi4e2
+.mi3gr2
+.m2ig
+.min5ue
+.m2in2u
+.mir2k4
+.m2ir
+.mis1
+.mi5to
+.mi2t
+.mo3b2i
+.1mo
+.mo5le2c4
+.mon3a4
+.m4on
+.mor5ti
+.m2ort2
+.mu3n2i
+.mun1
+.mu3si
+.mus2i5c2o2
+.myth3
+.2my
+.3myt
+.n2a5k2
+.n1a
+.nar1i4
+.na2r
+.nast4
+.n2as
+.nas5ti
+.ne2c3t
+.ni4c
+.n1i
+.ni5tro
+.n2itr2
+.n2o4c
+.no2m3o
+.n2om
+.nos3t2
+.no5t1ic
+.n2ot
+.nuc2le5
+.n2u
+.5n4uc
+.nuc3l2
+.o2b2ed5
+.ob2e
+.o1b3e4l
+.o2b3l2
+.od4
+.o2e4d5
+.oe5so
+.o2f5t
+.2oi4
+.ol4d
+.om2e2
+.2om
+.om5el
+.on4ce
+.on1c
+.o2n4e
+.op2i
+.op2t5a
+.1o2p1t2
+.or1
+.or4at4
+.or1a
+.ora5tor1i
+.orat1or5
+.ora2to
+.or5che2
+.or4ch
+.or1c2
+.or3d
+.2or2e4
+.or3eo
+.or4i
+.orn1er4
+.or2n2
+.or2o
+.os1
+.osi4
+.4oth5
+.2ot
+.out1
+.o4u2
+.ov4
+.pal5i
+.para5di4s1
+.1pa2r
+.par2ad
+.par5af
+.par1a5t
+.p2a5ta
+.pa4t2io2
+.pe2c3t4
+.pecu3
+.3ped3e2
+.2p2ed
+.p2e4nd4
+.pen5de2
+.pe2p3t2
+.per3i5n
+.p4eri
+.per1
+.per3se5c
+.pe2r1s2
+.per2se
+.pe5titi
+.3pet
+.pe2ti
+.ph2
+.phe5n2o2m
+.phe4
+.phen1o
+.phon4i
+.1pho
+.ph2o4n
+.p2i2e2
+.pi3l3a
+.p2il
+.plast4
+.p2l2
+.1pl2a
+.pl4as
+.plic4
+.plica4
+.plos4
+.po3l2a
+.1po
+.po5lite
+.pol2it
+.po2p
+.p4op5l2
+.po5si1t2io2
+.3p4os
+.pos1it
+.pos5si
+.po4s1s2
+.pro5bat
+.1pr2
+.pr4oba
+.pu4r4r4
+.pu4r
+.put4te
+.pu2t1t4
+.ra5cem
+.ran5g2i
+.ra2n
+.ra4ng
+.re3c2a
+.r2e
+.r2ef5er2e
+.re2fe
+.re1f
+.refer1
+.re5ga2r
+.re1i4
+.re5lin
+.re1m
+.re5o
+.res5c2i2
+.re2sc2
+.re5sen
+.re5s2po
+.re5stat
+.rest2
+.r2e5s4t2or2e
+.rest1or
+.re5st4r2
+.re3t2a
+.re5u
+.re3w
+.rib5a
+.2r2ib
+.rin4
+.rit2
+.rol4l2a
+.roll2
+.r4os3a
+.sa2
+.sac5r2
+.sal4i
+.sa2l
+.sa5l1in
+.salt5er1
+.s4al4t
+.sal1te
+.sanc5
+.sa2n
+.s4ap5a
+.s3ap
+.sa3vo
+.s2av
+.sci3e2
+.sc2
+.s1c2i2
+.sea3s4
+.se2a2
+.se2ct4
+.sec5to
+.se3gr2
+.sen3t
+.se1q
+.ser4ie2
+.ser1
+.s2es1
+.sev5era
+.3sev
+.sever1
+.s2h2
+.si5g2no
+.s2i4g
+.si2gn2
+.s1is3
+.st4
+.sta2t4o
+.stra5to
+.str2
+.str4in2g5i
+.stri4ng
+.su5d4a
+.sulph5a2
+.1s2ul
+.sulph2
+.sul3t
+.tact4i
+.ta2ct
+.tac5t2ic
+.t2a4m
+.ta1ma2r5
+.tar5o
+.ta2r
+.te2ct4
+.tel5a
+.te2l
+.tell5e
+.1tell2
+.te4m
+.te5ra5t
+.ter1
+.ter4p
+.th4
+.tho4
+.thol4
+.ti2
+.til4
+.t2i5n1i
+.t1in
+.t3i2t4is
+.t1or1
+.tran4c
+.tr2
+.tra2n
+.tri5bal
+.t2r2ib
+.tri3d
+.trin4a
+.t4ri5sti
+.trist2
+.tro4ph
+.tr2op
+.tro1ph5o
+.tro4v
+.tula2r5
+.tu1l2a
+.tur1b4
+.tu4r
+.tur1i4
+.tu5te
+.1tut
+.tu3t2o
+.4ul4l2
+.ulti5mat
+.ultim4a
+.ul1tim
+.un5ce
+.un1
+.un5ch
+.u4n3d2
+.under5
+.unde2
+.un3e
+.u4n3g
+.u1ni3c
+.un2i
+.un2i3o2
+.u4n3k4
+.u4n5s4
+.un3t4
+.un5u4
+.2up1
+.up3l2
+.ur1a4
+.u4r
+.ur5e2th1
+.ur1e2t
+.ur2e
+.ur4o
+.va5l2ed
+.1v2ale
+.ve2
+.vec5
+.ve5lo
+.2vel
+.vent5il
+.vent2i
+.v5er4ie2
+.ver1
+.ver3n2
+.vic5to
+.vic2
+.5vi2ct2
+.vi2s
+.vis3i
+.vi5so
+.v2o1c
+.1vo
+.vo5lut
+.vo2l
+.wine5s
+.wi2
+.win2e
+.xy3l
+.za5r
+.z1a1
+a4a
+1ab
+2ab.
+2aba
+ab5ar2e
+aba2r
+ab4ay4
+2a2b1b2
+ab5ber1
+abb2e
+2ab2e4
+ab3erd
+aber1
+a5b3e4r1r4
+a3bet
+ab1ic
+a3b4ie2
+2abin
+4a1b2i2o2
+abi5on
+ab3it1a
+ab4itu
+ab3l2a
+a2bl2
+abli4
+4abolic
+abo2
+abol3i
+ab3om
+ab3ota
+ab2ot
+3about
+abo4u2
+ab1r4
+2abs.
+a4b1s2
+ab1ul
+abu4lo
+ab3use
+ab3usi
+2a2by
+ac2a
+ac5a2bl2
+ac1ab
+ac3al
+5ac1anth2
+aca2n
+ac5ard
+a1ca2r
+a5c1at
+ach5al
+a2ch
+acha2
+a5ch2in1i
+ach1in
+ach5i2s1m4
+achro4
+a3c2hr
+ach5u4r4
+2a1c2i2
+a4cic
+aci4e2r1s2
+aci3er1
+acie2
+ac2i3f4
+4acit
+ack5a
+ack1
+ac3li
+acl2
+4a4co.
+a1c2o2
+aco3d
+ac5on1r
+acon1
+4acos
+4aco4u2
+ac1r2
+ac3r2y2
+act5ate
+a2ct
+ac2ta
+act5ile
+ac2to
+act5o2r2y
+act1or
+ac2t5r2
+ac5uat
+ac2ua2
+a5d2ai2
+a3d2a3v
+4adee
+ad5en1i
+ad4ha2
+a4d1h
+ad3ica
+a5d2i1f
+4adil4
+adi4op
+a3d2i1o2
+ad2i4p
+adis4i
+adi4s1
+a3diti
+3adju
+ad1j
+5admi2t
+a2d1m
+a2do
+4adoe
+4ad2oi
+ad3ol
+a3d4os
+ad1ow
+ad1r2
+a3dr2a2m4
+4a2du
+ad3u1l2a
+ad3um
+4a2d2y
+ae5a2
+ae4cit
+ae1c2i2
+ae1c2o3
+4a2ed
+aed5i4s1
+ae5g
+ae3on
+ae5p
+aero2d2y5
+aer1
+aer2od
+ae4s
+ae5si
+aes3t2
+aet4a
+ae2th4
+aet4or.
+aet1or
+aev3a
+4af.
+4afe
+af5ta
+a2ft
+a4fu
+ag4ar1i
+aga2r
+4ageri
+ager1
+a5ghe2
+a2gh
+a5g2i1a2
+a1g2i
+agi4as
+4ag2ino
+4a2gl2
+agli4
+4a2g1n2
+ag3on1i
+agor4a
+ag5ot
+a2gr2
+ag3ri
+a3gru5
+2ah
+a1h2a2
+aha2r2
+aha5r1a
+a1he2
+a2h4n2
+a5h2oo
+2ai2
+4ai.
+a2i3a2
+a1ic
+aid4a
+ai2d
+aid5er1
+a2ig2
+ai5gu
+ai2l3er1
+ail3o
+aim5er1
+aim2e
+ain5de2r3s2
+a2i4nd
+ainde2
+ainder1
+a4i5nea2
+a3ing.
+ai4ng
+a2in3i
+a2in5o
+aint5er1
+ain1te
+air5a
+a2ir
+air5p
+ai2r3s2
+ais1i
+a5i2s1m4
+2a1j
+a4ju
+2ak
+akel4
+ak5u
+al5a2bl2
+al2a
+al1ab
+ala2ct4
+al4ac
+a1l4ae
+al5ais
+al2ai2
+ala3ma
+al2a2m
+al5ance
+ala2n
+al3at
+a5l2av
+al2c3at
+al1c2
+al3ch
+ald5ri
+aldr2
+2ale
+a3lec
+aleg4
+ale5ma
+al5end4e2
+al2e4nd
+a1leo
+a2let
+al3ib1r4
+ali4c2i2
+al5i4c5s4
+al1i2d
+al3i1f
+5a1l2ig
+al1in
+a5l2in1i
+al2in5o
+al5ipe
+al2ip
+al5ip2ot
+ali3po
+4alis.
+al1is
+4al2i1u2
+4alk
+alk5ie2
+al4l1ab
+all2
+al1l2a
+al4lag
+alli5a2n
+al1li
+all2i1a2
+al1l2ig4
+al4lis2h
+all1is
+a5loe
+al3o1gr2
+a1l2o1g
+a3l2om
+a3l2oo
+al1or
+al4orim
+alor1i
+alos4
+a4lo4u2
+al3ous
+a5low
+al5pen
+al3ph2
+al5tati
+al3tie2
+alu3b
+al5u4ed
+a4lue
+al3ues
+a5lumn2i1a2
+alu4m1n2
+alumn1i
+al1va
+al5ver1
+alv5u
+2a2ly4
+a5lyn1
+2a2m
+a5mad
+ama4g
+ama4n5d
+a1ma2n
+a5marin4e
+a1ma2r
+amar1i
+a3mas.
+am1at
+a5m4at1i2c
+am5a2tu
+am4bin
+a2m1b
+amb2i
+3ambu
+am5elo
+am2e
+a3men
+am2e4n4d
+am3era
+amer1
+am5erl
+am1i
+am1i2c
+am5ica
+am2i1c5r2
+3ami2d
+a3mili
+am2il
+am5i2ly
+amin2i4f
+am2in1i
+am5in1iz
+am4inos4
+am2ino
+a5m2is.
+a4mium.
+a3m2i1u2
+ami3um
+a3m4on
+a1mo
+amor5a
+am2ort3
+am5ose
+am2p
+am5p4er3i
+amper1
+amph2i5g
+amp3li
+amp2l2
+ampo5l
+am3po
+am3ul
+amyl5
+a2my
+a2n
+an2a
+a5nadi4
+an3ae
+an3age
+an2a5k2
+an3ali
+an3ar1c2
+ana2r
+a5nast2
+an2as
+an4con1
+an1c2o2
+an3d4at
+a4nd
+an2da
+and5au2
+and5eer1
+ande2
+an5de4l
+an5d2i1f
+and5ist2
+andi4s1
+an5dit
+an4don1i
+an1do
+an4ea2
+an5eer1
+an3ell2
+anel5li
+an3eu
+a2n3ga2n
+a4ng
+ang2a
+angov4
+an1go
+an4gu4r
+an1gu
+4an1h2
+an3ic
+an1i
+an2i3f
+an5i3fo
+4an2i2g
+an5ion
+an2io2
+anis5te2
+anist2
+4anity
+4an2i1u2
+an5no
+an1n4
+4an2ny2
+an1o
+an2oe
+an3o1ma
+an2om
+anor3
+an2os
+an5ot
+a4n2s
+an3s2c2
+an4s2c2o2
+ans3il
+an2si
+an4su4r
+an3su
+an2t2a
+ant5a2bl2
+an2t1ab
+an3t1al
+an5t2a2m
+an2te
+1anth2
+an4thi
+3an1t2h2r
+4ant1ic
+ant2i
+an4tie2
+an4t3i4ng
+ant1in
+an2t4iv
+an4to2n4e
+an1t2o
+an1t4r2
+an4tus
+an1tu
+an5tym
+an2ty
+an3ul
+an2u
+an3um.
+an5u4m1s
+a3nu4r
+a5nut
+a2n2y2
+an5y1a2
+a5ny1i
+2ao
+aol3i
+5aow
+2ap
+4ap.
+4apa
+a1pac
+ap3al
+ap5aro
+a1pa2r
+ape5li
+a5peu
+aph5em
+aphe4
+aph3i
+aph5ol
+a1pho
+a3phy2l3
+aph2y
+ap1i
+ap5icu
+ap3in
+ap4in4e
+a5p2ir
+a3pla2n
+ap2l2
+a1pl2a
+ap5li
+apo5str2
+a1po
+a3p4os
+apost2
+ap4o3th
+ap2ot
+a2pr2
+ap5ron
+4a2ps2
+apt5at
+a2pt2
+apu5la2r
+apu1l2a
+a5p4un1
+a4q
+a5q2ui2
+aqu4
+a2r
+4arabi
+ar1ab
+ar2a5bo2
+aract4i
+ara2ct
+ara2g
+ar3age
+ar4a2g2e4d
+ar5a1g2i
+ar3ago
+a3r2a1j
+ar3all2
+ar2a3m
+ara4n4g
+ara2n
+aran5te
+aran2t
+ar5apa
+ar2ap
+ar1at
+a3r2au2
+ar2a3v
+ar3ba
+ar1b
+arb5et
+ar2b2e
+ar4b2i2d
+arb2i
+ar4bl2
+arb3li
+ar4bul
+ar5chet1
+ar1c2
+ar2ch
+arche2
+ar1ch5o
+ar5din1a
+ar2d2in
+ar4do2ne
+ar1do
+ar3en
+ar2e
+ar2e4n5d
+ar5e2t2t4
+ar3e1v5
+ar5gh
+ar1g2
+ar3gu
+ar3h2
+ar1i
+ar5i2ff
+ar2i1f
+ar4ill2
+a5r4i5net
+arin4e
+ar5in1i
+a5rishi
+aris2h
+arm3er1
+arm2e
+ar5mi2t
+ar3nal
+ar2n2
+arn1a
+ar3nis
+arn1i
+ar3od
+ar5o2i4d3
+a4r2oi
+aro4mas
+ar2om
+aro1ma
+aro4n
+a5roti
+ar2ot
+a5ro4uc
+aro4u2
+a4r3o4x
+arp5e2r1s2
+arpe2
+arper1
+ar4pu
+2a4r1r4
+ar2rh2
+a2r2s2
+ar2s5a2l
+ar3so
+art5at
+art2
+ar2th
+arth4e2
+ar1t2h3r
+ar5t1iz
+2aru
+ar3um
+ar5un4
+a3ry1o2
+a2r2y
+a5ry2t
+ar5z
+as1a
+as4af
+asa2n2
+2asc2
+as5con1
+as2c2o2
+as5c2ot
+as2cr2
+as2e
+as3e2ct
+4a2s2ed
+ase2p4
+ash5ay
+as2h
+asha2
+ash5i4l
+as5i2ly
+a2s3in
+a5s2io4
+a3s1it
+a4s5iv
+ask5er1
+as2k2
+aske2
+aski4
+as4l2a
+a2sl4
+as4lo
+2aso
+as5o2ch
+as2oc
+a4s4o2n2ed
+as4o2ne
+as5or
+as3ph2
+a4ss2
+assa5g2i
+as1sa
+assa4g
+ass5i2bl2
+as4s1ib
+as4sil
+as3s2it5
+2asta
+ast2
+as4tat
+as4t2i3a2
+as3t1is
+as4tit
+4asto2
+as3tra
+astr2
+as4tri
+as1u
+as4un1
+as5u4r
+2a2ta
+4atabi
+a2t1ab
+a5tal1is
+at2a2m4
+at2a3p
+atar3a
+ata2r
+ata3s
+ata3t4
+at3e2au3
+atea2
+at3e2ch
+at5eer1
+a5tel.
+ate2l
+at2e5le
+at5enat
+aten1a
+at3ent
+4ater1
+at3era
+at5er1n3is
+ater2n2
+atern1i
+at5ern3iz
+4ate4ss
+a2t2es
+at5et
+4a2th
+ath3a4
+a3then
+athe2
+ath5er3in
+at4her1
+ath5ero
+ath5ete
+athet1
+ath3i
+ath3od
+a5th2o4n
+a1t2h5r
+4a3t2i2a2
+at1i2c
+at5icis
+at2i1c2i2
+ati5cit
+at5ic1iz
+a2t2i1f2
+a4t1i4l
+a4tim
+a2t3in
+4atin1a
+at5i4ng
+4at4is.
+a2t1is
+at1it
+atit3u
+atitud5i
+4a3t2i1u2
+at4ivi
+a2t1iv
+a5tiv1iz
+a2to
+5at5od
+4a1t2o1g
+2atol
+4aton
+a3t2oo
+a4to2ps2
+a5t4oria2n
+at1or
+ator1i
+ator2i1a2
+a4to2r2y
+atos4
+a5t2oz
+2a2tr2
+at3ra
+a4tr2e
+5at5re4s4s
+at1ri
+a3t2r2ic5u
+at3ron
+at5ro4u2
+at4tag
+a2t1t4
+atta4
+2a2tu
+at1ul
+atu4m
+at3ur1a
+atu4r
+at3ur1g2
+4a2ty
+2au2
+4au.
+au1b5i
+4a4uc
+au5cer1
+au1c3o2
+au4d5er1
+aud4e
+audic4
+aul3i
+aul4t
+aul5t4ed
+aul1te
+ault5er1
+ault5i
+au3ma
+aun2
+aun5ch4ie2
+aun2ch
+au4n3d
+aun4dr2e
+aundr2
+au5reo
+au4r
+aur2e
+aur4o
+au5ror
+4aus.
+aus5er1
+aus5p
+au4s4t4ed
+a4ust2
+auste2
+aut3a2r
+aut3er1
+au3th
+2av
+a2v4ab
+ava4g
+av3a4ge
+ava5l2a
+av5alr4
+av5ant
+ava2n
+av5a2r
+avas3
+av3e4nd
+av3er2n2
+aver1
+av3ig
+av4i1ol4
+a3v2i1o2
+av1is
+aw5er.
+awer1
+aw5e2r1s2
+aw1i2
+aw5n2ie2
+awn1i
+aw5y2
+a4x
+ax2i2d
+ax1i
+4ay
+ay5l2a
+ay3m
+ayn4
+a4y2s2
+ay5si
+ay5sta
+ays1t2
+ayth4
+2az2
+az3a2r
+az1a1
+aze4
+az5ee
+azy1g4
+azz4l
+azz2
+2ba.
+ba5b2ir4
+b1ab
+3back1
+baen4
+bag4a
+5b2ah
+b2a4i2
+bal3a
+balm5i
+balm2
+ba5lon
+bal5u
+bam4a
+b2a2m
+ban4a
+ba2n
+ba5na2n
+b4ane
+5ba4ng
+b4aniti
+ban1i
+b4a4n2s
+b2a4p1
+5bar1b
+ba2r
+bar4d
+bardi4
+bar4n2
+ba5r2om
+bar3o4n
+5ba2r2s2
+1bas
+bas4te2
+bast2
+b4a4th4
+3bat1i2c
+ba5t2io2
+b4at5on
+ba2to
+battle5
+ba2t1t4
+bat2tl
+2b1b2
+b4b2a2ta
+b3bli
+b2bl2
+b4bo2n4e
+bbo2
+b3bon
+b1c2
+bcord4
+b1c2o2
+2b1d
+bdeac5
+bdea2
+bde4b
+b1di4v2
+b2e
+4be.
+3bea2
+4beas
+be3c2a
+3becu
+2b2ed
+be3da
+bed5el
+bede2
+bed2i
+be4do
+be5dra
+bedr2
+be4du
+5bee
+3be1f
+be3go
+be5gr2
+be3gu
+1bel
+be3l2a
+2b2ele
+be3l1it
+bel4t
+be3m
+b2e4n4d
+ben2d5a
+bend5er1
+bende2
+b4e1ne
+be5n2i2g
+ben1i
+b4e5n2u
+4beo
+be3q
+2b2er2e
+ber1
+berg2a5m
+ber1g2
+berl4
+5be4r1r4
+be2r5s2
+b5er2t1in
+bert2
+be1s2
+2b4es.
+be3sl4
+be3tr2
+be3w
+2b1f
+b1f2a4
+4b1h
+b4ha2
+2bi.
+1b2i1a2
+bi4b1
+bi1cen5
+b4ice
+3b2i2d
+bid5i
+b4ie2
+bi4e2r1s2
+bi1er1
+b2i1f4
+bi4fid.
+bifi4d
+bi5ga
+b2ig
+bigu3
+b1il
+b2ile
+5biles
+3b2ill2
+4bim
+bi1me2t5
+bim2e
+5bin1a
+5b2i4n4d
+bind3e2
+bin5et
+b2in5i4
+1b2i2o2
+b4i1o3l
+bi2o5m
+bi3o4u2
+b2ip4
+b2i5q
+b2ir4
+bi3r2e4
+bi5rus
+b2is
+5bi2s1m4
+bis4o
+bi5s2ul5
+3bit2u1a2
+4bity
+bi5ve
+b1j
+4b5k4
+2bl2
+5bl4ac
+bl2a
+blag4
+b3la2n
+5blast2
+bl4as
+bl2a5tu
+blem5at
+3b2ler1
+5blesp
+4b3l2ik2
+blim3a
+bl2i3o2
+bl2i2q
+b3l1is
+4b2ly
+2b1m
+bment4
+bm2e
+b1men
+bmi4
+4b1n
+bo2
+4bo.
+3b2oa2
+bo5a2m
+5bob
+bod5i
+bo5h2
+2bo2i4d
+b2oi
+4boke
+bol4e
+4bo2l2ed
+bol3i
+bol4t
+3bon
+bon4c
+bo2n4e
+bon4ie2
+bon1i
+bon3i4f
+bon4sp
+bo4n1s2
+1b2oo
+b3orat
+bor1a
+bor3d
+bor5ee
+b2or2e
+bor5et
+3bor1i
+bor5ic
+bor5i3o2
+bor4n2
+bot3a2n
+b2ot
+5boti
+boun5t2i
+bo4u2
+b2oun1
+3bou4r
+bous4
+bow2
+bow3s4
+4boxy
+bo4x
+5b2oy
+br4
+3bra2ch
+4bral
+br2a2m4
+b2ra2n
+bra4n4d
+4b4re.
+br2e
+b4reas
+brea4
+4b2res
+brev5et
+bre1v
+b2ri2d
+5brie1f
+brie2
+bri4ng5
+bri4os
+br2i3o2
+b5rist2
+b4r2oa2
+bro4ma
+br2om
+bros4
+brum4
+4bry.
+b2r2y
+4b1s2
+b3sc2
+bscon4
+bs2c2o2
+bsen4
+bserv5a2n
+bser1
+bser1v2
+b5si
+b2sin4
+bso2
+bsol3e
+bs2ol
+bso3lu
+b4stac
+bst2
+bstu1pe5
+bs1tu
+bst2up
+2b1t
+b5t1let
+b2tl
+4bu.
+5bub
+buf5fer1
+buf2
+bu2ff
+buf1fe
+b4ul2i
+b4ulos
+bu1lo
+bun2
+bu4n4a4
+b5u5nat
+bunt4
+bur3e
+bu4r
+bur4ri
+bu4r1r4
+busi4e2
+bu4ss2
+bus5si
+3b4ust2
+bu5ta2r
+b3ute
+b5ut1in
+but2i
+3bu3t2io2
+bu2t4iv
+b5ut5o
+b1v
+4b3w
+2by
+4by.
+3by1i
+b4y2s4
+5byt
+2ca.
+c2ab5in
+c1ab
+c4ace
+ca1c2o3
+cad4r2
+5caf
+ca3go
+5c2ai2
+5c2ak
+c1al
+c4al2a
+ca5la1ma2n
+cala3ma
+cal2a2m
+cal5a2r
+3cal1c2
+ca5le1f
+c2ale
+cal2l5in
+call2
+cal1li
+cal4m2
+c2a3ly4
+ca3ma
+c2a2m
+cam4i
+ca5na2r
+ca2n
+can2a
+c2an4e
+c4an1o
+ca3n2oe
+can5ta2r
+can2t2a
+can5t4ed
+can2te
+c4an4t1ic
+cant2i
+can4t4r2
+5c2ao
+1c2ap
+ca5p2il
+cap1i
+ca2pt4
+cap3ti
+cap3u
+1ca2r
+ca3ra5c
+car5am2e
+car2a3m
+ca3ree
+car2e
+ca3r4i3c
+car1i
+car3i1f
+car5m
+car3n1i
+car2n2
+car3ol
+car5o4n
+car5oo4
+ca3ro4u2
+car4v2
+cas2e5
+cashi4
+cas2h
+3ca4s3s2
+cas5t2ig
+cast2
+3cas1u3
+c1at
+c4at.
+c2a2tc2
+c4at2om
+ca2to
+c2a3t2r2
+c4a4t1s
+c2a2t4u
+3c2au2
+caulk4i
+cav3i4l
+c2av
+3c4ay
+c1c4
+ccen1t5r2
+c1cen2
+c3cent
+cces4sa
+c5ce4ss
+c3ch
+cci3d4
+c1c2i2
+cc2ip4
+cc2le3
+ccl2
+4ce.
+4c4e1ab
+cea2
+cea2n3
+3ceas
+ce4c2i2
+2c2ed
+5ceda
+ce3da2r
+3cede2
+3cedi
+4ce1f
+ce5g
+3ce2iv
+cel3ai2
+cel2a
+cel5ib5
+5cell2
+cel5lin
+cel1li
+celo4
+ce5l2om
+4ce2ly
+2cem
+ce4me2t
+ce1m2e4
+3cemi
+ce4mo
+1cen2
+5cenc
+cen5c2i2
+cen5d2ed
+c2e4nd
+cende2
+cend5en
+cend5er1
+cen3i
+2cen1n4
+3cent
+cent4a
+cen5t4ed
+cen1te
+cen5ter.
+center1
+cen5te2r1s2
+cen5t2es
+1cep
+cept3a
+ce2pt2
+cep5t4ic
+3cera
+cer1
+cer4b2i
+cer1b
+3c2erd
+ce3rem
+c2er2e
+5cer2n2
+5ce4ss
+cest5o
+cest2
+ces5t4r2
+ce2t
+cew4
+2ch
+4ch.
+4ch1ab
+cha2
+3chae
+3ch2ai2
+cham5per1
+ch2a4m
+cham2p
+chan5g2i
+cha4n2g
+cha2n
+ch4a3pa
+ch2ap
+chec4
+che2
+4ch2ed
+3chee
+3chem
+che3o2l
+ch1er1
+ch4eri
+5cher3in
+ch4erl
+4ches
+3chete
+chet1
+ch5eu2
+che5va
+che4v4
+3chew
+ch5ex
+5c2hi.
+3ch2i1a2
+3ch2i2c2o2
+ch1ic
+ch3i2ly
+chi4l
+ch4in.
+ch1in
+ch3in1n4
+3ch2io2
+5ch2i2p
+ch2izz4
+ch1iz
+ch5k
+5chlor
+c4hl
+4c2h1m
+1cho
+ch2o3a2
+5ch2oc
+4ch2oi
+ch5o2i4d
+3chor
+4cho2r4ed
+ch2or2e
+chor5ol
+4choso
+3ch2ot
+4choti
+ch5ous
+ch2o4u2
+chow5
+3c2hr
+chu4r4
+3chut
+5chy1d4
+ch2y
+3chy2l
+3chy2m
+1c2i2
+4ci.
+4ciac
+c2i1a2
+ci2a4m
+ci3ca
+4ci4d1s2
+ci2d
+4cie.
+cie2
+ci3er1
+ci3es2t2
+c2i5et
+c2i3f
+cifi4
+4c2ig
+ci3ga
+c3iga2r5
+3cil
+cil5lin
+cill2
+cil1li
+2cim
+cim3a
+ci3m2e
+5ci1men
+4cin3ab
+cin1a
+4c2i4nd
+c4ine5a2
+cine5mat
+ci5ne4ss
+cine4s
+4cint
+c4i3ol
+c2io2
+ci5om
+ci4po
+c2ip
+cisi4
+c2it3r2
+ck1
+cka2r5
+cka5t
+c4ke
+ck5i1f
+ck4sc2
+c4k1s
+cl2
+cla5r2i1f
+cl2a
+cla2r
+clar1i
+3cl4as
+c2le2
+2c4le.
+c5lec
+clemat4
+c2lev3
+cli1m
+c3li4ng
+cl2i2q
+c1lo4q
+c4l4o1tr2
+cl2ot
+c4lue4
+cl2yp5
+c2ly
+5cl4y2s
+cn2
+c3n1i
+1c2o2
+4co.
+3c2oa2
+c4o5ba
+3c2oc
+co3c2i2
+co5cu
+co3dic
+co3d2i1f
+4co2d2y
+3coe
+co5et
+co3gr2
+c2o1g
+4c3o2i4d
+c2oi
+co3inc
+4col.
+col3a
+co3l2o1g
+co1lo
+5col1o4u2
+co5ly
+co5mas
+c2om
+co1ma
+co4m2e
+co3mo4
+com1p4
+con1
+con4ati4
+con1a
+con4ch
+con1c
+con3d5er1
+co4nd
+conde2
+con4ey
+co2ne
+con4ie2
+con1i
+co4n3s2
+c2on3t
+conta5d
+3c2oo
+coo2p4
+co3or
+cop4e
+co3ph
+c4o5p2l2
+co3po
+c1o2p4t2
+2cor1a
+cor5d2ed
+cord5er1
+4co2r4ed
+c2or2e
+co3rel
+3cor2n2
+4coro
+co5rol
+5c2ort2
+3cos.
+c4ost3a
+cost2
+cost5er1
+coste2
+co5ta
+c2ot
+3c4o3tr2
+5coty
+co4us5t2
+co4u2
+cov1
+co3va
+cow5a
+c2oz4
+co5z1i
+c1q
+cr2
+5craf
+craft5i
+cra2ft
+c4ra2n
+5cran1i
+cr4a5n2i1u2
+cras3t2
+cras2
+cra4te
+c2r2e
+4crea2n
+crea4
+cre3at
+cre4p3
+5creti
+cre4t2o
+cret5or
+cri3l
+cron4
+crost4
+4cro4u2
+5c4rus
+c2r2y2
+crym3
+cry1o3
+4c5s4
+csim5
+2ct
+c2ta
+c3tac
+ctac5u
+c5ta5g
+ct1a2n
+ct5ant
+c5tar2i1a2
+cta2r
+ctar1i
+c3ta2to
+c1te
+c4tea2
+c2t5ee
+c4tent
+cter4i1a2
+c1teri
+cter1
+c2t5es
+ct5et
+ct2ic
+c5tic2i1a2
+ct2i1c2i2
+c4ti4c5s4
+ctifi4e2
+c1t2i1f2
+c3tim
+ct4in.
+ct1in
+ct4in1a
+ct5i4ng
+c3t2in1i
+c5t2in5o
+c5t2io2
+c3t2is
+c3tit
+c4titu
+c4tity
+ct5ive
+c2t1iv
+ct4iv1i2t
+ct5o1lo
+c1t2om
+c3ton
+c5toris
+ct1or
+ctor1i
+c5tor1iz
+c1tr2
+c2tr2e
+ct2r2o5t
+c1tu
+c2tum
+c1ty
+cub3at
+cuba4
+c4uf2
+cu5ity
+c2ui2
+cu4l5ab
+cu1l2a
+c2ul2i
+cul2l5er1
+c4ull2
+cul2l5in
+cul1li
+1c2ult
+cu4mi
+5cu4n3a4
+cun1
+cun4e
+5cun2i
+5cuol
+cu5pa
+c2up
+cu3pi
+c3up2l2
+1cu4r
+cur4er1
+cur2e
+cur5ial
+cur1i
+cur2i1a2
+4cur4o
+1cus
+cus5a
+c3u2t1iv
+cut2i
+c3utr2
+5cuu4
+cu5v2
+2cy.
+cy4b2i
+c4y1b
+1cyc
+cyl3
+cy4m
+cy5no
+cyn1
+c4y2s4
+cys5to
+cys1t2
+cy4t
+cz2
+4da.
+d4ab1r4
+d1ab
+1d2ac
+da2ch4
+d5ache2
+3da2ct
+d1ag
+d4a4g2i
+d4ale
+d4al1g2
+dal5ler1
+dall2
+dam5a
+d2a2m
+3dam2e
+d3am1i
+da5mu
+3da4ng
+da2n
+d1an4t
+d3ap
+d3ard
+da2r
+5darm
+3d4as2
+d2ast5a
+dast2
+d1at
+da2t1iv4
+d2a2t4u
+dau2gh3
+d2au2
+daun5te
+daun2
+3d2av
+d3b
+d3c4
+d1d4
+d4d4er2e
+dder1
+d3di
+d3d2ler1
+d2dl4
+d3dli
+d3dy1i
+d2d2y
+2de.
+de1a2c3t
+dea2
+de5aw
+de4b2i
+de1b
+deb5it
+3dec
+de5cant
+dec2a
+deca2n
+de4cil
+de1c2i2
+de1cr2
+4de2ct
+ded3i
+d2ed
+def2or5e
+de1f
+de1fo
+de4fy.
+de3g
+de4gu
+de3io2
+5d4e3is
+de3lat
+del2a
+de1li4e2
+del5ler1
+dell2
+del5li
+de5lo
+1d4em
+4de4mie2
+4dem4is
+d4em4o4n
+de1mo
+de4mo4n1s2
+de3mor
+de4mos
+4de2my
+de1n2a
+d2e4n4d
+4d4ene
+d3en1h2
+den2i4e2
+den1i
+dens5a
+de4n2s
+dens5er1
+den5tit
+dent2i
+de3od
+deo3l
+deon2
+de3ont5
+de1p
+depen4
+deposi4
+de1po
+de3p4os
+de2p4u
+d3eq
+derac4
+der1
+de3r2ai2
+d4er2e
+4d4e2r4ed
+de5reg
+3der3er1
+1deri
+der3k4
+3derm
+der4mi
+der5min
+5derne
+der2n2
+3dero4
+der5os
+de2r3s2
+5d2eru
+4d4es.
+de3sa
+5de2sc2
+des4ca
+de5sc1al
+de3sec
+des4i
+de3s4i2d
+des5ig1n1a
+des2i4g
+desi2gn2
+des1p
+des5p4o2n
+des2po
+de3sq
+d3e4st.
+dest2
+de2s3ti
+1de1t
+de3t2es
+de5th1
+de2ti
+dev3i4l
+de3vis
+de3vi2t
+de4v2oi
+de1vo
+devol5u
+devo2l
+3dex
+2d5f
+dfol4
+d1fo
+d2g
+dg4a
+d1gel4
+d4gen
+d3gr2
+4d1h
+dh2ot4
+d4hu
+4di.
+1d2i1a2
+di2ad
+3dia2r
+di5at5om
+di3at
+dia2to
+4d1ib
+d1ic.
+dic5a2m
+d4i4ce
+d4i3ch
+d5icl2
+dic5ol
+d2i2c2o2
+1di2ct
+dic5tat
+dic2ta
+dic4te
+5dicul
+d2icu
+d5i1cu4r
+1di2d
+di4e2r1s2
+die2
+di1er1
+3di3ev
+d4i3fo
+d2i1f
+dig3al
+d2ig
+di3g2a2m
+dil4
+5dill2
+dilo4
+d4i3lu
+di5mer1
+dim2e
+di1me2t4
+di1m1i
+2d1in
+din4e
+d4in5g2i
+di4ng
+d4i5nos
+d2ino
+3d2i1o2
+di2o4c
+di4ol2a
+d4i1ol
+di2p5t2
+d2ip
+3dir2e
+d2ir
+di3r1i
+4d5iro
+di4s1
+d4i2s3c2
+d4is3en3
+3d2is2i1a2
+3d2i4s1s
+d4it4as
+dit1a
+d4iter1
+dithe4
+d2ith
+d3ito
+dit1or3
+2dity
+1d2i1u2
+1di1v2
+di4val
+d2iva
+di5vin2e
+di2v1in
+dix4i
+d2ix
+d1j
+2dl4
+d1l2a
+5dle1f
+5dlest2
+3dlew
+dlin4
+d1lo
+d5lu
+2d1m
+4d1n2
+1do
+4do.
+d4ob
+do4c3u
+d2oc
+do2g4a
+d2o1g
+do4j
+d4ol.
+dol3en
+do5l4ine
+dol5it
+do4lon
+do1lo
+d4o4ls
+5dom.
+d2om
+do1ma2n4
+do1ma
+domin5
+dom1i
+dom5ino
+dom5i2t
+do5mo
+don4at
+don1a
+4do2ny2
+3d2oo
+d2or
+4dor.
+d2or4m
+d2ort4
+d4os
+do5sim
+dossi4
+do4ss
+dot1a
+d2ot
+dot4t1in
+do2t1t4
+dot3ti
+2dous
+do4u2
+d4own
+3do4x
+d1p
+dr2
+d5rail
+dr2ai2
+d3ral
+3dr2a2m
+dra2n4
+d4ras2
+drast4
+3drel
+dr2e
+dres4
+dres2s5o
+dre4ss
+dri4e2
+d4r2i1f
+dr2i4g3
+d4r2om
+dro1pho4
+dr2op
+dru4n2k3
+drun1
+4d1s2
+d5sl4
+d2s3m4
+ds4mi
+d4sw2
+dt4
+dt5ho
+1du
+2du.
+du1at
+d2ua2
+3d4uc
+du4ch5
+duci5a2n
+du1c2i2
+duc2i1a2
+du4c2o2
+du5eli
+du5ell2
+du5en
+du5e2t2t4
+due4t
+du5in
+d2ui2
+dul3c2
+d3ule
+d4ul4l2
+dum4b2e
+du2m1b
+du4n4a4
+dun1
+d5un4c
+d2u2p
+du3p2l2
+5dur1o
+du4r
+d5use
+dust5er1
+d4ust2
+duste2
+du3u4
+d1v
+dver2
+dvert3
+dvoc5at
+d1vo
+dv2oc
+dvoc2a
+2d1w
+dwell3
+2d2y
+dy4ad.
+dy1a2
+d1y5a2r
+5dy4e
+5dyk
+dyl2
+dyll3
+5dymi
+3dyn1
+dys3p
+d4y2s
+d3zo
+ea2
+4e1ab
+e1a2ct
+eac4te
+ea5cu
+e5ad1d4
+ead3er1
+ead1i
+ead3li
+ea2dl4
+ea4g
+e2ak1
+eal3a
+ea2l3er1
+e2ale
+ea3l2o1g
+eam4bl2
+e2a2m
+ea2m1b
+eam3er1
+eam2e
+ean5i
+ea2n
+e2ap2
+eap5er1
+e3a4p1p2
+ear3a
+ea2r
+ear3er1
+ear2e
+ear4li
+e5a4r2r4
+ear4te
+eart2
+earth5i
+ear2th
+eas5er1
+eas2e
+ea4son1i
+e2aso
+e1a4s1s2
+eassem4
+eas4t2
+east5i
+eat5en1i
+e4at3er1
+eat5ie2
+e3a2t2i1f2
+eat1it4
+eat4it3u
+e3at1ri
+e2a2tr2
+e4a2tu
+e2au3
+eav5i
+e2av
+eavi4e2
+eav5o4u2
+ea1vo
+eaz5i
+e2az2
+e1b
+eba2r4
+e2b2b2
+eb2e4
+e4bel.
+e1bel
+e4be4ls
+e2ben
+eb5et
+eb2i
+e5b1il
+e4bin
+e4b2is
+e4bl2
+e4bos
+ebo2
+ebo1t3o
+eb2ot
+e2br4
+eb1ra
+e2b2t
+e4b4uc
+ebus5i
+ec2a
+ec3ade
+ecad5en
+ec2al5e
+ec1al
+e5c2a2m
+e4ca1po
+e1c2ap
+ec3at
+ec5a2th
+e1ce
+ecen2t5o
+e1cen2
+e3cent
+ech3i
+e2ch
+e4cib
+e1c2i2
+ec2i4f
+ecip5i
+ec2ip
+e1cl2
+ec3l2ip
+econ4s2c2
+e1c2o2
+econ1
+eco4n3s2
+econstit5
+econ3s2t2
+e2c3or1a
+e4c5oro
+ec3rat
+ecr2
+e4c5rea2n
+ec2r2e
+ecrea4
+e4crem
+ec1ro
+ect5ati
+e2ct
+ec2ta
+ec4ter1
+ec1te
+ect2i4c
+ec4tit
+ec4t5us
+ec1tu
+ec1ul
+e5c2ul2i
+2ed
+e5da4n2s
+eda2n
+e2d1at
+ede2
+2e4d2ed
+e5de1h2
+e4d2ele
+edes3t2
+ede3te
+e1de1t
+edeter5
+e3dev
+e5dew
+ed4g
+edi4a4ls
+e1d2i1a2
+ed5i4c1al
+ed5i4c5s4
+ediges4
+ed2ig
+edi1ge
+ed5i1gr2
+ed3im2e
+ed1it
+e1di2v2
+ediv5i2d
+ed3li
+e2dl4
+ed2or4
+e1do
+e4do4x
+ed1ro
+edr2
+edu5cer1
+e1du
+e3d4uc
+e2dul
+ed3u1lo
+e4d5u4r
+ee4ce
+eed3er1
+e2ed
+eede2
+ee4do
+ee2f
+ee5g
+ee1i
+ee2l1i
+ee2m
+eem5er1
+ee1m2e4
+eem3i
+eep1
+ee4pa
+eer4in4e
+eer1
+eer3in
+eesi4
+ee3to
+e1f
+efac2t5o
+e1f2a
+efa2ct2
+efal4
+ef5er3ee
+efer1
+ef2er2e
+ef5ini4te
+e2fin
+ef2in1i
+e4fite
+ef4l2
+efor5est2
+e1fo
+ef2or2e
+2e3fu
+e4fug
+efut5a
+e1gel3
+eg2i5a2
+e1g2i
+e4gib
+e3gl2a
+e2gl2
+eg3le
+eg4mi
+e2g1m4
+eg5n1ab
+e2gn2
+eg1n1a
+e5g4on
+e2gr2
+e5gu4r
+e1h2
+e5ho
+e2h5s
+eh2y2
+ehyd5r2
+ehy1d4
+ei2d4
+5ei1do
+4e2i1f
+e2ig2
+e5ignit
+ei2gn2
+eig1n1i
+e4in.
+e3inc
+e2ine
+e1i4ng
+e2in5i
+e4ins.
+ei4n1s2
+e2i4p4
+eir3o
+e2ir
+4eis
+eis3i
+eit5er1
+e2ith4
+e2iv
+eiv3er1
+e2iz
+e1j
+ejudic4
+eju1di
+ek3en
+ek5is4
+ek4l2
+e4l4ac
+el2a
+e5lad
+el5age
+el2a2m4
+el5anc
+ela2n
+elast3
+el4as
+e4la2t2es
+ela4te
+el5at3ive
+ela2t1iv
+elch5er1
+el1c2
+elch4e2
+el2ch
+eld3er1
+2ele
+elea5g
+elea2
+4e4l2ed
+el5en1i
+el3en3o
+ele3o
+ele5ph1
+e2l1er1
+e1les
+e5le4s4s
+e4leste2
+elest2
+el3et3o
+e1let
+el3ev3a
+e2lev
+ele3vi
+el5ex
+e4l3ica4
+e1lie2
+eli4e2r1s2
+eli1er1
+e3lim
+el3i4ng
+eli3on
+el2io2
+e4l1i4s
+el2i2t4t4
+el1it
+e3l4iv
+el4l1ab
+ell2
+el1l2a
+ell5iz
+el1li
+e3l2oa2
+e3l2oc
+elo5c2a
+eloc3u
+elo4di
+e2l2o1g
+elom5ate
+el2om
+elo1ma
+elo3mat
+el5op.
+el5o2ps2
+elp5in
+el3so
+e4ls
+el5tie2
+e1lu
+elu4m
+elus4
+elv4
+e5ly1i
+e2ly
+3elyt
+e2m3ago4
+em3an3a
+e1ma2n
+e1ma2r4
+emarc5a
+emar1c2
+em5at1iz
+em2at5ol
+ema2to
+em5b2i
+e2m1b
+e1m2e4
+e4mee
+e4mel
+e3me2m
+e4m3era
+emer1
+em5ero
+emet4e
+e1me2t
+em4icis
+em1ic
+emi1c2i2
+e4mie2
+e2m2ig
+emig5ra
+emi2gr2
+em3in1a
+em5i4ng
+e3m2i3o2
+em3i2s1m4
+e4mit1a
+emi2t
+e4m2i1u2
+em4mae
+e2m1m2
+4emnit
+e4m1n2
+emn1i
+emo3b2i
+e1mo
+emo2d4u
+emod1
+e2m2o1g
+e4m2oi
+em3o1lo
+em5o1m
+4em4on
+e3mon1i
+emon5ol
+emo4no
+e2mor
+em5oris
+emor1i
+em3o4r1r4
+e4mot1ic
+em2ot
+e5m2oz
+em1pa5r
+em1p
+em3pa
+empara5
+em5pes
+4emp4li.
+emp2l2
+em4pr2e
+em1pr2
+em3um
+e5mut
+en3a2c
+en1a
+e4nal
+en3a1m3o
+e1n2a2m
+en4an1n4
+ena2n
+e2n3a2r
+en3as.
+en2as
+ena5tur2e
+en2a2tu
+enatu4r
+3en1cep
+en4cile
+en1c2i2
+en3cil
+en2c1t4
+2e4nd
+en4d5al
+en2da
+en4de2dl4
+ende2
+en1d2ed
+end5rit
+endr2
+4ene
+e2n2e5d
+en3ee
+e5nelle
+enell2
+e5ne2p
+e2n1er1
+e5nereo
+en2er2e
+ener5v2
+en5esi
+e3ne4ss
+en1et
+en4e2t2t4
+e2n3eu
+e3n4ew
+en3g2i
+e4ng
+en3ic
+en1i
+en5i1er1
+en2ie2
+en3i1g3r2
+en2i2g
+en5in
+enit5u
+e4n3k
+en1o
+en3oi
+en2o2m
+en3oty
+en2ot
+enov3
+e4n2s
+ens5a2l
+en3sp
+en4s4u2m
+en3su
+en4sus
+ent3a2r
+en4te2r1s2
+en1te
+enter1
+en5t2i2a2
+ent2i
+en4ti3fy
+en1t2i1f2
+en2t2o
+en4tri
+en1tr2
+ent5rin
+ent5up
+en1tu
+en4tus
+4en2u
+en3u1a2
+en3uf2
+en3u4r
+en5ut
+5enwa
+en5w
+eo3b
+e4o2ch
+e2oc
+e4oda
+eof2
+eo2l
+eol5ar.
+eol2a
+eola2r
+eol5at
+eolo3g2i4
+eo1lo
+eo1l2o1g
+e5olu
+e2o3m
+eon4a
+e3ont
+e1o2p4t2
+e1or1
+eor4de
+e2or3e
+eor5o
+eo1s2
+eo4t2o
+e2ot
+e1pa
+ep4al
+ep5ar1c2
+e1pa2r
+epa4t
+epend5en
+ep2e4nd
+epende2
+ep5ert2
+eper1
+e4pete
+e3pet
+epe5ti1t2io2
+epe2ti
+e4p5ex
+eph1
+eph4i
+e2p2ig
+e5pl2a
+ep2l2
+ep3lic
+epol3a
+e1po
+epol3i
+epol2it5
+ep3re1h2
+e1pr2
+epr2e
+ep3res5e
+e4p5ri4m
+e4p5rob5
+ept3or
+e2pt2
+e1p4u
+e3pu4r5
+e4puta
+equin4
+equ4
+eq2ui2
+equ2i5no
+er1
+era4cie2
+er2a1c2i2
+era4do
+er2ad
+era4g
+era4l
+er3aph
+er2ap
+er3ap1i
+er3a2p4y
+4era4ti.
+4era4tim
+er5a2tu
+er3bat
+er1b
+er2ba
+er3b2e
+er2b5os
+erbo2
+2er1c2
+er3ch
+er3cl2
+2erd
+er2d5a2r
+er4di4e2
+2er2e
+er3eal
+erea4
+4e2r4ed
+er3e2gr2
+er5el.
+er5ell2
+er5e4ls
+e4re1m2e4
+er3en
+5er2e4nd
+er4en4e2
+ere5o2l
+e3re1q
+er3er1
+ere4s
+er5ese
+er3esi
+er5este2
+erest2
+er5e2sti
+eres5t4r2
+eret4
+er3et.
+er3e4t1s
+er3e2t2t4
+ere4v
+er3ex
+ergi3v
+er1g2
+er1g2i
+er3gl2
+er3ia.
+er2i1a2
+er4ia2n
+eri4ci2d
+eri1c2i2
+5er5ick1
+er2i2d
+er3ie2
+er3i2ff
+er2i1f
+er4i1me2t
+erim2e
+er3in
+eri4n1a
+eri4on
+er2i3o2
+er3io4u2
+er4i2s4c2
+er4i5sta
+erist2
+4eri2t
+e3r2i4v
+er5iz
+4er1j
+er2k4
+er3m2e
+er4m2oi
+er1mo
+5ernacl2
+er2n2
+er3na2c
+ern1a
+er5nal1is
+er1n3er1
+er1n3is
+ern1i
+ern3it
+4e4ro.
+er3o2i4d3
+e4r2oi
+er4o5is
+ero5st2
+erpent5in
+erpe2
+er3pent
+erpent2i
+erre5l2a
+e4r1r4
+erre2l
+err2e
+er4rep
+er5s2ine
+e2r1s2
+er2sin
+er5t4ed
+ert2
+er4ter1
+ert5er.
+ert5e2r1s2
+er4th2i
+er2t5iz
+2eru
+eru4b
+er2u5d
+eru4n2d5
+erun1
+er4vi4l
+er1v2
+5erw2au2
+er1w
+eryth3
+e2r2y
+ery2t
+2er2z
+4es.
+es5a4m
+es5a2n
+e2sc2
+es5ca2n
+es1ca
+es5che2
+es2ch2
+esci5e2
+es1c2i2
+escut5
+e2s1cu
+e3se2a2
+e3se2ct
+e5see
+e5seg5
+ese4l
+es5enc
+e3sh4a2
+es2h
+e1shi
+e5shu4
+esi4a2n
+es2i1a2
+es5ic.
+e5s2ick1
+es5id3en
+es4i2d
+esi4de
+esi5d2i1u2
+es5ies
+esie2
+es3im
+e2s3in
+e5sion
+e1s2io4
+e4s1it
+es4it.
+es4i4t1s
+e3sk1in
+es2k2
+e3s4mi
+e2s1m4
+e2s4od
+es3ol3a
+es2ol
+es3ol3u
+es3on1a
+es2o3p
+e1sor
+es3per3
+es5pir1a
+esp2ir
+es5pit
+es4p2l2
+es3plen5
+esple2
+es5p2ot
+es2po
+e5s2pr2
+es4s3a2n
+e4ss
+es1sa
+essa2r5
+ess5ee
+es4sil
+es2so
+es2t1a4b2
+est2
+est3a2n
+e5sta2r
+es5t2au2
+e2sti
+est5ifi
+es1t2i1f2
+est5igati
+est2ig
+estig1at
+e3st2oc
+es5t2oo
+est4r2
+es4tud4
+es1tu
+e1su
+e2s3ul
+es4u4r5
+et2a
+et3al.
+et5all1is
+etall2
+etal1li
+et3al5o4
+eta5m2e
+et2a2m
+et2a3p
+et3ar1i
+eta2r
+et5a2r2y
+et4as
+et3ate
+et3ati
+et5ay
+et3eer1
+etel1l5i
+ete2l
+e1tell2
+etend5er1
+et2e4nd
+etende2
+et5en1i
+eter2
+et3er3a
+et5er3i1a2
+e1teri
+e3tex4
+e2th1
+ethy2l3
+eth2y
+2e1t2i2a2
+e3t2ic1u
+et1ic
+e3t4i4g2i
+et2ig
+e5tim
+et3in
+eti4n1a
+e3t2ir
+et5i2t3iv
+e3t2i4u2
+et5o1lo
+e5tomet1e
+et2om
+etom2e
+eto1me2t
+e2ton
+et3on1a
+etor3i
+et1or
+etra5g
+etr2
+4e4tral
+etr2a5m
+et4ra2n
+et5re4s4s
+etr2e
+et1ri
+et4r2i1a2
+etrib5a
+et2r2ib
+e4trim
+et1ro
+e2t2t4
+et3ter1
+etud4
+et3ud4e
+e4tum
+et4we
+et1w
+e2t5z2
+eu3d2i3o5
+eue4
+euk5
+4eum
+e3ur1g2
+eu4r
+eur5i
+eus4
+eu5ten
+eu3ter1
+eut3i
+ev4abi
+e2v3ab
+e1v2al5e
+ev2a2p3
+ev3ast2
+ev3at
+ev5eli
+e2vel
+eve4n
+ev5erat
+ever1
+ev5er3en
+e4v4er2e4
+ever4er1
+e4veri
+e4ves
+e1v2i1a2
+e4vi1ab
+e2vic2
+evic1tu4
+e5vi2ct2
+evi2d3
+ev5ig
+ev4ile
+evi4l
+ev5is2h
+evi2s5in
+evis5o
+e4v2i1u2
+ev2oc3
+e1vo
+evol5e
+evo2l
+evol5ute
+evu4
+e1wa
+e4wag
+e5w4ay
+ew1er1
+e3wh2
+ew5ie2
+ewi2
+ew1in
+ew5is2h
+e3wit
+e1wr
+ex5i4c
+ex1i
+ex4on.
+ex1o
+exo4n
+1ex3p
+4ey.
+ey4as
+ey1a2
+eyl4
+e4y3s2
+ez5er.
+ezer1
+ez5e2r1s2
+ez5ie2
+ez1i
+1f2a
+2fa.
+fab4i
+f1ab
+fa3ce2t
+fa2ct2
+fa2c3u
+2f3ag
+fal2l5in
+fall2
+fal1li
+5falo
+fa5lon
+fals5ifie2
+fa4ls
+fals2i1f4
+4fan3a
+fa2n
+fan5tas1iz
+fan2t2a
+fantas3i
+fant3i
+5fa2r
+far3i
+5faw
+4f5b
+2f5d
+2fe.
+3feas
+fea2
+fe4a3tu
+fe2b5r4
+fe1b
+3fec
+2f2ed1
+5fei
+fe1li
+fem3i
+femin5
+fend5er1
+f2e4nd
+fende2
+f5en1i
+4f4e2r4ed
+fer1
+f2er2e
+fer3ee
+3fero
+fe5r2oc
+fer5om
+3fe4r1r4
+fer3v2
+2f4es.
+fes2s3o
+fe4ss
+fest3a
+fest2
+fe2st5i
+fe4t
+fet4al
+fet2a
+fet4in
+fet4o
+3feu
+fe5veri
+fever1
+2ff
+f1fe
+ffec4te
+f3fec
+ffe2ct
+f5fe4t
+f1fi
+f5f2i1a2
+f3fic
+f5fie2
+f1fi2l3
+f2f3is
+ff4le
+ffl2
+ff3lin4
+f3f2oc3
+f1fo
+ffon1i4
+ffo2n
+ff2or3e
+f3fr2
+ffran2ch5
+ffra2n
+4f5h
+fi5ance
+f2i1a2
+fia2n
+f4ib5u
+4fic.
+4fi4c1al
+3fi1c2i2
+4fi4c5s4
+fi5del
+fi2d
+fid3en
+fiel4
+fie2
+fi2er4c2
+fi1er1
+figh2t5
+f2ig
+fi2gh
+1fi2l
+2fin
+fin2a
+fi3na4l
+f2i4nd3
+fin2e
+f1i4ng
+5finin
+f2in1i
+fin4n1i
+f2in1n4
+fir2m1
+f2ir
+f3it1a
+f5it3ee
+fl2
+3fl2a
+fle2s
+f3lica
+flin4
+3flo
+flo5ric
+flor1i
+3flu
+flu1m4i
+1fo
+4fo.
+3f2oc
+fo2e
+foet3i4
+fo1et
+fo1l4i
+fo4li2e2
+fomen4t4
+f2om
+fom2e
+fo1men
+fo2n
+fon4de2
+fo4nd
+3f2oo
+fo5r2a2m4
+for1a
+for5ay
+for5b
+for4di
+fore3t
+f2or2e
+5f2orm
+for4m3a
+fortu5n4a4
+f2ort2
+for1tu
+for3tun1
+fo3v
+1fr2
+frag5a
+fran2t4
+fra2n
+fra2r4
+frat2ch4
+fra2tc2
+fre4s
+fr2e
+fros4t5i
+frost2
+fr4uc4
+2f3s
+fs4p
+2ft
+f1t4ed
+f4ter.
+fter1
+f2t5es
+ft2i4et
+ftie2
+ft4ine
+ft1in
+3fu
+4fu.
+f4u4c
+fuel5li
+fuell2
+fug4a
+fu4min
+fu1mi
+fu4n2g
+fun1
+4fu2r4ed
+fu4r
+fur2e
+fur3n2
+fu3sil5
+fus5o
+fu5til
+fut2i
+4ga.
+ga4cie2
+g2a1c2i2
+gadi4
+ga4d4os
+ga2do
+3gag
+3g2ai2
+3g2ale
+ga5len
+gal2i4a2
+gal5ler1
+gall2
+3galo
+gam4bl2
+g2a2m
+ga2m1b
+gan5at
+ga2n
+gan2a
+4ga2n2ed
+gang5er1
+ga4ng
+g5ant.
+gan4t4r2
+g5an4t1s
+g5ar1c2
+ga2r
+g4ar2e
+gar3ee
+gariz4a1
+gar1i
+gar1iz
+ga5r2ot
+gar5p
+5g2a4r1r4
+1ga4s
+gas5i
+g2as3o
+gas2ol5
+gas2s5in
+ga4ss2
+gast3r2
+gast2
+g1at
+g4at.
+ga2t5iv
+g4a2to.
+ga2to
+g4atos4
+g4a2t1t4
+g2a2t5u
+gaud5
+g2au2
+ga5z1a1
+g2az2
+g1b
+g5d4
+2ge.
+5geal
+gea2
+3gea2n
+2g2e4d
+3gedi
+5ge4d1n2
+4ge1f
+1gel
+4g2ele
+ge4li
+gel4in
+gel5li
+gell2
+ge4lu
+2ge2ly
+gem3i
+5ge1mo
+3gen
+gen4du
+g2e4nd
+gen5it
+gen1i
+gen3o
+gen5t2i
+ge4o
+geo3lo
+geo2l
+4g2er2e
+ger1
+3germ4
+2g4es.
+5ge4ss
+gest5at
+gest2
+3get
+get3a
+2g1f
+2g1g
+gg4a
+g2ge
+g5ge2dl4
+g2g2e4d
+g3ger1
+g5ger3er1
+g4g2er2e
+gg2i4a5
+g1g2i
+g3gli
+g2gl2
+g3glu3
+g5g2ly
+ggr2av3
+g1gr2
+g4g4ro
+2gh
+g5h2ai2
+gha2
+gh5en1i
+ghe2
+g3ho
+g4hos
+gh2t
+1g2i
+4gi.
+gi4all2
+g2i1a2
+gi4at
+3gib
+g2i5c2o2
+g2i4g
+gi5ga2n
+1g4in5g2i
+gi4ng
+3g2io2
+gi4or
+gi4ot
+5g2ip
+gi5pa
+g4i4s
+5gis.
+gi2t1
+5gitu
+giv5en.
+2gl2
+g3la2r
+gl2a
+5glass.
+gl4as
+gla4ss2
+glec4
+3g2ler1
+g4leto
+g1let
+g4letr2
+g4ley
+gli5on
+gl2io2
+g5l1is4
+3glo
+4g5lod
+gl2om3
+4glop
+3glu
+glu5te
+glu5t2i
+3gl2yp2
+g2ly
+2g1m4
+2gn2
+g1n1a
+g4n1ab
+g5nate
+5gn4a2th
+g5nati4
+gna5tu4r
+gn2a2tu
+gn5e2dl4
+g2n2ed
+gn5ee
+gn3er1
+g1n1i
+g4n2i1a2
+g2n3in
+gn4in.
+g4n2i2o2
+g2no
+5gnor1i
+gno4s
+2go.
+5g2oa2
+3g2oc
+5god
+3goe
+go4et
+go4ge
+g2o1g
+4go3gr2a2m
+go1gr2
+g5o2i4d
+g2oi
+g4o3is
+go2m2e
+g2om
+5gon1n4
+go5n2om
+3g2oo
+goph4
+4gor.
+5gor1g2
+4go2r1s2
+g4o2r2y
+3gos
+gos4t2
+2go4u2
+gour4i
+gou4r
+g1ous
+gov1
+g3p
+1gr2
+gr1ab4
+3gr2a2m
+4gram2e
+gr2a2p
+g4r2e
+gril4
+gri2m3a
+g4ro
+gr2o4g
+g5ron
+gr2op4
+3gru
+gru3en
+gr2u5i2
+gru2m4b
+2g1s
+gs4c2
+gs4t2
+g4sti
+gth5en1i
+gthe2
+g5to
+g4u2a2
+gu5ab
+5gua2n
+3guar2d
+gua2r
+g5uat
+2gue
+5gueu
+5guit4
+g2ui2
+gui5t1a
+gu2ma
+gu4mi
+3gun1
+g4uras5
+gu4r
+gur1a
+g4u2r4ed
+gur2e
+gur4n2
+gur4u
+4gu2r2y
+gust5a
+g4ust2
+2g1w
+2gy
+g4y2b
+5gym
+3gyn1
+gyn5o
+g5z2
+ha2
+4ha.
+h4ac
+hadi4e2
+had4in4e
+ha2d1in
+hae3o
+ha2g2e4d5
+ha3g2i3o2
+ha1g2i
+hag5u
+ha5ic
+h2ai2
+hais4
+hak4ine
+h2ak
+hak1in
+hal5ant
+hal2a
+hala2n
+h2a4m
+ha1m5a2n
+han4cro
+ha2n
+han1cr2
+ha4n2g
+h1an1i4
+h5an1iz
+han4t
+han2t3a
+ha4pe
+h2ap
+hap3l2
+har1a
+ha2r
+har5b
+har4d
+har5die2
+har2ge4
+har1g2
+ha5ri2s1m4
+har1i
+har3o
+har4t4ed
+hart2
+har4ti
+has4te2
+hast2
+ha2t5o
+haugh2t5
+h2au2
+hau2gh
+ha2vel4
+h2av
+hav5ersi
+haver1
+have2r1s2
+ha1v5o
+h1b
+h1c
+h1d
+hdeac5
+hdea2
+h1du4
+he2
+4he.
+h2ea2
+1head
+3hea2r
+hear2ch4
+hear1c2
+heas4t5
+heav5en
+he2av
+he2c3t4
+he5del
+h2ed
+hede2
+he3do
+heek4
+h4ei
+h4e3is
+he5lat
+hel2a
+h5elin
+he3l2io2
+he5l2i1u2
+hel4li
+hell2
+h3el3o
+hem1a
+he3men
+he1m2e4
+hemis4
+he5m4op
+he1mo
+hem4p
+hende5
+h2e4nd
+he3or1
+hep1
+h1er.
+her1
+her4as2
+her2b
+her2b3a
+herb3i
+here3a4
+h2er2e
+here3o
+h5er3e2t2t4
+heret4
+h5erh2
+her5ial
+her2i1a2
+h5erin4e
+her3in
+h1erl
+her5om
+h4eron
+h1e2r1s2
+h5erwa
+her1w
+hes3t4r2
+hest2
+het1
+h4et3a
+het3i
+het4t4ed
+he2t2t4
+heu2
+h4eum3
+heumat5
+heu1ma
+he4v4
+hev5i
+hex5o
+h1f
+h5h
+2hi.
+hi4a2r
+h2i1a2
+h1ic
+hi3c4a2n
+h4i4cin
+hi1c2i2
+h4icl2
+h5ie.
+hie2
+h1i1er1
+h4i4e2r1s2
+h1ies
+h3ifi4
+h2i1f
+h3i3fy
+hig4o
+h2ig
+hi5ka
+h2ik2
+hi4l
+hi5ma4
+hi5mer1
+him2e
+himos4
+hi2mo
+h1in
+h2i4n4d
+h2in2e
+hi5n2ie2
+h2in1i
+h5in1iz
+hi5nop
+h2ino
+h2i4n1s2
+hio5lo
+h2io2
+h4i1ol
+h4i1or
+h2i2p
+hip3l2
+h4ir
+hi4r4r4
+hir3r5i
+hit4a
+h2iv5a
+4hl
+h3l2a
+h1le
+h3let
+h1l2i
+hl2i4a2
+2h1m
+h4man3ic4
+h1ma2n
+hman1i
+h5mica
+hm1ic
+2h1n2
+hno1cen5
+hn2oc
+hn4o3ce2
+4ho.
+ho3a2n
+h2oa2
+ho4c2o2
+h2oc
+ho3don
+ho2do
+ho5du
+ho5ep5
+hol3a2r
+hol2a
+hold1
+hol4is.
+hol1is4
+ho5l4y2s
+ho2ly
+ho4mag
+h2om
+ho1ma
+hom5in
+hom1i
+h2o4n
+hon5em
+ho2ne
+ho5neu
+hon3ey
+hon2g3i
+ho4ng
+ho5n2io2
+hon1i
+hon1o
+1hood
+h2oo
+hoo5r
+h4ope
+ho2p5r2
+h4op4te
+h1o2p1t2
+hor5et
+h2or2e
+h4or2n2
+horn5i
+ho5r2o1g
+hort5h
+h2ort2
+hosi4
+ho4ton
+h2ot
+ho1t2o
+h2o4u2
+3h2ouse3
+4h1p
+2hr
+hras5eo
+hras2
+hr2as2e
+hr2e4
+hre5ma
+hr5er1
+hres4
+hri4
+hril2l5in
+hrill2
+hril1li
+hrim4
+h5rit
+h3r2od
+hrom4i
+hr2om
+h2r2y4
+h3rym3
+2h1s
+hsi4
+h4s2k2
+ht5ag
+ht5ee
+ht3en.
+ht5e2n1er1
+h4t4ene
+ht3en1i
+ht3e4n2s
+ht5e2o
+h2t5es
+ht4f2oo
+h2t3f
+ht1fo
+h1th
+ht4ine
+ht1in
+hu4g
+hu4mat
+hu1ma
+hu5mer1
+hum2e
+hu4min
+hu1mi
+hun4c
+hun1
+hu4n2k4
+hun4t
+hur3i
+hu4r
+hu3s2i1a2
+huz4
+h1w
+h4wart2
+hwa2r
+h2y
+hy2l
+hyl5en
+hyle2
+hy2m
+hyn4
+hy3o2
+hyol5i
+hy1pe
+h2yp
+hy3ph
+hyr4
+hys3te2
+h4y2s
+hys1t2
+hy4t
+2i1a2
+ia4bl2
+i1ab
+iab5ol1is4
+iabo2
+iabol3i
+iab5ol1iz
+i2a2ch
+ia1c3o2
+i2ac2r2
+ia5cri
+ia5d4em
+i5ae
+iaf4
+i2ag4
+i4a3g1n2
+i5a4g5o
+ia3gr2
+i3ah
+i5ai2
+iale2ct4
+i2ale
+ia3lec
+i3al1it
+ial5li
+iall2
+4ial1n4
+i2a3lo
+i2a5ly4
+i5a2m1b
+i2a2m
+ia3m2e
+ian2ch5
+ia2n
+i3ant
+i5ape
+i2ap
+ia3ph
+i2ard
+ia2r
+4iarit
+iar1i
+i3at
+ia5the2
+i4a2th
+i5at2om
+ia2to
+i2a2t4u
+iat3ur4a
+iatu4r
+i3au2
+i2av4
+ib3era
+ib2e
+iber1
+ib1i
+i1b2i2o4
+ibios4
+ib5li
+i2bl2
+4ibo2
+i4bon
+ibor4
+i4bose
+i5bo4u2
+ib1ri
+ibr4
+4ibu
+ib3uta
+ic3ac
+ic5a2do
+i4c1al
+ic1a2n
+2i1ca2r
+iccu4
+ic1c4
+4ice
+i5ceo
+4i2ch
+ich4i
+ich5i4ng
+ich1in
+ich5ol
+i1cho
+4icin
+i1c2i2
+i5c2io2
+2ick1
+ic4lo
+icl2
+2i2c2o2
+i3c2o3c
+ic5ol3a
+icon3o
+icon1
+i5cop
+icoty3le5
+i5coty
+ic2ot
+2i1cr2
+i4cri
+i4cru
+i4c2r2y2
+ic4te2dl4
+i2ct
+ic1te
+ict4ed
+ic4ter1
+ict5ic
+2icu
+icu4lu
+ic3um
+i5cun4
+i5cut
+2i1cy
+i2d
+id1a
+i5d4ay
+i1d4e4m
+id3enc
+id3era
+ider1
+i3derm5
+i3d2icu
+id3i1f
+i5d2ig
+i5dil4
+i3dim
+id4ine4s
+i2d1in
+idin4e
+idios4
+i3d2i1o2
+id2ir4
+id1i4s4
+id4ist2
+2i4d1it
+i1di4v2
+id3li
+i2dl4
+id3ol
+i1do
+idol3a
+4idom1i
+id2om
+id3ow
+4idr2
+id5ri
+id3ul
+i1du
+ie2
+4iec
+2ieg2
+ie3ga
+ie5i
+i5ell2
+4iem
+2i1en
+i2e4n2d
+i1er1
+i3ere4s
+i2er2e
+i2eri
+ier3i4n
+4ier2n2
+ier2o
+i4ert2
+i3e2sc2
+ies3e4l
+i1es2t2
+i3e4st.
+2i1et
+i4et.
+ie2t3ie2
+4ieu
+i5eut3i
+iev3a
+iev3er1
+ie1v3o
+2i1f
+i2fe
+if4f2a
+i2ff
+iff5ler1
+iff4le
+iffl2
+i4f3ic.
+i4fic3ac
+i4f5i4c5s4
+ifi4d
+i2fi4n
+4i2fl2
+i3fo
+i3f2oc5
+if5tee
+i2ft
+i3fy
+2ig
+i3gad
+ig3a4nd
+iga2n
+3iga2r
+i1ge
+i3ger1
+ight5er.
+i2gh
+igh2t
+ighter1
+ight5e2r1s2
+4i1g2i
+ign5iz
+i2gn2
+ig1n1i
+ign2o5m
+ig2no
+i3gon
+ig1or
+ig3ot
+i5gret
+i1gr2
+ig4r2e
+i4g5ro
+i5gu5it4
+ig2ui2
+ig1u4r
+2i1h
+ih2y4
+2ii
+i5in
+i1ja4
+4iju
+2ik2
+ik5a2n
+ike4b
+i2l3a
+ila4g
+ila5te2l
+ila4te
+i5l4ater1
+il4a4x
+il5dr2
+il4du
+i3len
+ilesi4
+il3f
+il3ia.
+il2i1a2
+il3ia2r
+ili4arl
+i3li1c2i2
+i5l2i1en
+ilie2
+ili4er1
+il4i4fe
+il2i1f
+il4ific
+il1in
+il5i2ne.
+il4ine
+4ili3o4u2
+il2io2
+il5i4p1p2
+il2ip
+il5i1q
+il4ite
+il1it
+ilit5u
+il4mo
+ilm2
+i5lon
+il3o4u2
+ilth4
+il2tr2
+4ilu
+il5ul
+i5lum
+il5ur2e
+ilu4r
+il3v
+4ilym2
+i2ly
+ima4c
+im2ag
+im3a4ge
+im1al
+i2m5a2m
+i5m2as
+i4mat4ed
+i4ma2t3in
+im2a2t5u
+im1i
+i3m2ie2
+im4ine
+im5ino
+im5me2s
+i2m1m2
+imm2e
+i2mo
+i5m2o1g
+i3m4on
+im5oo
+i3mos.
+impar5a
+im1p
+im3pa
+im1pa2r
+impar2ad5
+im5p2ie2
+im2pi
+imp2o2t5
+im3po
+im5pr2
+im3pu4
+im1ul
+im5um
+in3ab
+in1a
+4inace
+ina2c
+in4a2do
+in5a2gl2
+in3a2ir
+in2ai2
+ina4l
+4inal1it
+i1n5a2m
+in3a2n
+in3ap
+in4a2r2s2
+ina2r
+i3nas.
+in2as
+4in2a2ta
+inat1or5
+ina2to
+in3au2
+in4aw
+2inc
+inc4t2u1a2
+in2c1t
+inc1tu
+2i4nd
+in5da2r
+in2da
+inde5p
+inde2
+inde4s5
+in1de3t
+indeterm5
+indeter2
+in5dro
+indr2
+4inea2
+4i2n2ed
+in5ee
+in5eg3a
+4in5eo
+ine4s
+in3esi
+ine5te
+4ineu
+inev5
+infilt5
+in3f
+in1fi2l
+infol4
+in1fo4
+4in3fu
+4ing2a
+i4ng
+in5gal
+4inge
+ing5ha2
+in2gh4
+4in2g2i
+4ingle
+in2gl2
+4ingli
+4in1go
+4in1gu
+in2g3um
+2in1i
+in5ia.
+in2i1a2
+4inic
+in4i1c2i2
+in3ion
+in2io2
+in4itud
+4i4n2k
+ink4ine
+ink1in
+4i4n1l2
+2in1n4
+2ino
+4i4no.
+in3oi
+i5nole
+4inos
+i3n4os.
+in5ose
+in3osi
+4in1q
+i4n1s2
+in4s2ch5
+ins2c2
+inse2
+inse2ct5
+in5sec
+insec5u
+in3si
+5ins2k2
+insolv5
+ins2ol
+in4tee
+in1te
+int5e4ss
+in2t2es
+in3til
+int2i
+int5res
+in1tr2
+intr2e
+intu5m
+in1tu
+2in2u
+in5ul
+in5um
+in3un1
+in3u4r
+invol5u
+in3v2
+in1vo
+invo2l
+2io2
+io3a2ct4
+i2oa2
+i1od
+iod3i4
+io2d5o
+ioe4
+io3gr2
+i2o1g
+4i1ol
+io3ma
+i2om
+i4oman1i
+io1ma2n
+io3mo
+i5ope
+io3ph
+i5o1po
+io2p4s2
+i1or
+ior2a4m4
+ior1a
+4i2or2e
+4iorit
+ior1i
+5ior1iz
+4iorl
+ior4n2
+io3sc2
+i3ose
+i3osi
+i4oso
+i4o5sta
+iost2
+i3ot
+iot4a
+i4o5th
+iot5ic
+i4o5tr2
+i4oty
+i4our.
+io4u2
+iou4r
+i4ou2r2s2
+i5o4x
+2ip
+ip3al
+ip2ap4
+ipar3o
+i1pa2r
+ipart5ite
+ipart2
+ip1at
+i3p2e4nd
+i1ph2e4
+iphen3
+i5pheri
+ipher1
+iphi4
+i4phu
+ip3i2d
+i5p2il
+ip3in
+ip4in4e
+ip2ir4
+ip5is
+ip1i4t
+ip4iti
+ip3lin
+ip2l2
+ip3lo
+i3po
+i4p2o1g
+i4poli
+i4p2om
+ip4o2n3
+i4pow
+ip2p2l2
+i4p1p2
+ip3pli
+ip4r2e
+i1pr2
+ip5tor1i
+i2pt2
+ipt1or
+ip1ul
+i5put
+i2p4y4
+2iq
+i3q2ua2
+iqu4
+2ir
+ir1a
+ir4abi
+ir1ab
+ira4c
+ir4ae.
+ir4ag
+ir4al1in
+ir4al1li
+irall2
+i5r2a3so
+iras2
+irassi4
+ira4ss2
+ir4ay4
+ird3i
+ire3a4
+ir2e
+ir3ec
+ir5ee
+irel4
+ire5li
+ires4
+ir5e4ss
+ir1i
+ir2i4d
+ir4im
+ir4is.
+5ir1iz
+irl5i4ng
+ir5o2ch
+ir2oc
+ir5ol
+ir3om
+ir4q
+i2r2s2
+ir5ta
+irt2
+ir5tee
+irwo4m2e
+ir1w
+ir1wo
+ir3w2om
+i4sa
+is5ad
+is3age
+isa4g
+is1a2l
+is3a4m
+is1a2n
+is3a2r
+is5av
+4i4s3b
+i2s3c2
+is5chi
+is2ch2
+isci5c
+is1c2i2
+4i1sec
+ise5cr2
+is3ell2
+4is3en
+is2er1
+is5er2e
+i2s3et
+4iseu
+is3ha2r
+is2h
+isha2
+ish5ee
+ishe2
+4ish3io2
+ish3op
+is5hor
+2is2i1a2
+is5ic
+is3ie2
+4isim
+is3inc
+i2sin
+4is1is2
+is4ke2
+is2k2
+i2s1l4
+islun4
+2isma
+i2s1m4
+is1on
+is5on1er1
+is4o2ne
+is2o5p
+is1p
+i3s2ph2
+5is1pr2
+2i4s1s
+iss5ad
+is1sa
+is4sa2l
+is5sa2n
+is4s4iv
+is1s4o
+4ista
+ist2
+is4tal
+ist5enc
+iste2
+ist5ent
+is5ter3er1
+i4s2t2er2e4
+ister1
+4is1th
+is4t3ic
+4i4s2tl
+i4s1to
+4is4t2om
+is1tr2
+3is2t4r2y
+4is4ty
+i5s2ul
+is3u4r
+2is2y
+it1a
+i2t5ab
+ita4c
+4i1t2ai2
+it3a2m
+it4an2a
+ita2n
+it4as
+it3at
+i3te2ct
+it3ee
+it3enc
+it3ent
+it3era
+iter1
+2ith
+itha5l
+itha4
+ith5i
+i5thol
+i1t2h3r
+ith2y5
+2i1t2i2a2
+it2i4c2o2
+it1ic
+it5ic1u
+it1ie2
+it3ig
+4i1tim
+it4in.
+it1in
+i4t4i4n1s2
+4itio.
+i1t2io2
+4itio2ne
+i5t2i4q
+4i5tit
+i2t3iv
+it4li
+i2tl
+it5lo
+4i2to.
+it5ol
+2iton
+it1o4u2
+2itr2
+it5re4s4s
+itr2e
+i4tric
+2i2t1t4
+it4tit
+it3ti
+itu4a4ls
+it2u1a2
+itu1al
+it5ua2r
+4itue
+it1ul
+it1u4r
+it3us
+2i1u2
+i3um
+iur5e
+iu4r
+2iva
+iv5anc
+iva2n
+iv1at
+i4v2ed
+iv5el.
+i2vel
+iv5el3i4ng
+iv5e4ls
+i4ver.
+iver1
+iv3eri
+i4vers.
+ive2r1s2
+iver5sa2l
+ives4
+iv3et
+i4vie2
+iv3i1f
+i5vil1it
+ivi4l
+ivil3i
+5ivi4st.
+i2v5ist2
+5ivi2s4t3s
+iv1i2t
+i2vo
+iv2oc3
+i5v2or2e
+2i1w
+2ix
+ix3o
+i5ye
+1iz
+4iz2ah
+iz1a1
+iz3i2
+2izo
+iz5oi
+2izz2
+1ja
+2ja.
+3jac
+ja2c5o2
+jac3u
+jag5u
+jal4
+ja5lo
+ja5pa2n
+j2ap
+j4apa
+jel5l2a
+jell2
+jeo2
+jeop3
+4jes
+jeu4
+jew3
+2ji
+3j2ig
+jil4
+jill5
+5jis.
+3jo2
+4jo.
+jo1c5o2
+j2oc
+joc5u
+jol4e
+4jr
+4js
+ju1di
+j2ui4
+ju5l
+ju3n2i
+jun1
+ju2s1cu4
+j2usc2
+jut3a
+ju1v2
+k4abi
+k1ab
+k2a5bu
+ka2ch4
+k3a4g
+kais5
+k2ai2
+ka4l
+ka5lim
+kal4is
+k4a2n
+k2a3o
+k2ap4
+kar4i
+ka2r
+1kas.
+kau4r4
+k2au2
+k2av4
+k1b4
+k1c
+kc2om4
+k1c2o2
+k5d2
+k1do4
+kdol5
+4k2ed
+ke5da
+k5ede2
+3kee
+ke4g
+k2e4n4d
+ken1o4
+ke2p5t2
+ker5a
+ker1
+k4er2e
+k5erel
+k4er4j
+ker5o
+kes4i
+ket5a
+key4wo
+key3w
+k1f
+kfu4r4
+k3fu
+k3ho
+5k2i1h
+ki2l
+kilo3
+k1in
+k2in.
+3k2i4nd
+kinema4
+kin5et
+k3i4ng
+k2in4i
+k2i4n1s2
+kir3m
+k2ir
+ki4r4r4
+kis4
+3kis.
+k1is2h
+ki2t5c2
+k2i4w
+kk4
+k5ker1
+k2l2
+k3l2a
+k5lea2
+k3ler1
+k3let
+k3li
+k3lo
+k1m
+kn2
+k2no
+1kn4ow
+k2o5a2
+kol4
+ko5m1i
+k2om
+ko5pe
+k1p
+k5ro4
+k3ru
+4k1s
+k3sl4
+ks2mi
+k2s1m4
+ks4t2
+k1t
+ku4r5
+k5v
+k1w
+3kyl
+l2a
+4la.
+5la4a
+lab5a2r
+l1ab
+l2aba
+la1bel4
+l2ab2e4
+5lab1r4
+l4ac
+la2c2a
+la5ceo
+la5cer1
+la4ch
+la2c2o2
+5la5col
+lac5on1
+la3cu
+la4de
+l5a2d1m
+l4ae
+l4af
+la3ger1
+la4g4i4s
+la1g2i
+la2g3r2
+5l2ah4
+la4ic.
+l2ai2
+la1ic
+l4al
+4l2ale
+5laman3dr2
+l2a2m
+lama4n5d
+la1ma2n
+la5mel1li
+lam2e
+lamell2
+lam4ie2
+lam1i
+la1m1o
+l5amu
+lan3at
+la2n
+lan2a
+la4n2d
+3land.
+land3i
+3lan4d1s2
+lan4er1
+lan3et
+lan5tine
+lant2i
+lant1in
+lan4t4r2
+l2a4p
+lap1i4
+lar5a2n
+la2r
+lar5de
+4la2r4ed
+lar2e
+l4as
+lat5al
+l2a2ta
+la4te
+5latil1is
+la4t1i4l
+5latil1iz
+5lat2in1i
+la2t3in
+lat5us
+l2a2tu
+l4au2
+5lau4r
+lav5at
+l2av
+l4aw
+4l2az2
+l3b
+lb2e4
+l4bit
+l4by
+l1c2
+l2c1at
+lce4
+l1cen4
+l4c2er2e
+lcer1
+lch4e2
+l2ch
+l3da2r
+l3d2ed
+l3de1h2
+l5dera
+lder1
+ld3est2
+l5dew
+ldi2
+l3die2
+ld4in4e
+l2d1in
+l5di5ne4s
+ld3is2h
+ldi4s1
+ld5li
+l2dl4
+l3do
+4le.
+3leagu
+lea2
+lea4g
+le5a1t2io2
+leav5er1
+le2av
+l3eb5ra
+le1b
+le2br4
+le3c2a
+le5cha2
+le2ch
+lect5ica
+lect2i4c
+le2ct
+2l2ed
+le5dr2
+leg1a
+l3ega2n
+3le2g1g
+le4gin
+le1g2i
+leg3o
+le3gra
+le2gr2
+lek4
+4l4e4l2ed
+l2ele
+lel5o
+le1lu5
+lem5enc
+le1m2e4
+le1men
+lem3is
+l5em1iz
+5le2m1m2
+l3e4m1n2
+le2mo
+l4em5on
+l5en2da
+l2e4nd
+len5da2r
+lend4e2
+len4do
+l4e1ne
+le5n2ie2
+len1i
+len3o
+4len1t2io2
+lent2i
+l4en5u
+le3on
+leo4s2
+le5q
+2ler1
+le5rec
+l2er2e
+5l4er2i1a2
+l4eric
+le5r2ig
+ler3om
+leros4
+ler3ot
+4l4es.
+le3s2c2o2
+le2sc2
+3le4s4s
+1let
+le5tra
+letr2
+le5tr2e
+5le5tu5
+leu4r5
+2lev
+l3eva
+5leve
+lev5it2a
+levi2t
+le4wi2
+l5ex1a
+1ley
+lf5i2d
+l2fo
+lf3o2n
+l1g2
+l4gal
+l4gem
+lg2i4a2
+l1g2i
+l4gi2d
+l4g2oi
+l3h
+4li.
+li4an1i
+l2i1a2
+lia2n
+lias4
+lib1r4
+l1ic.
+5l4i2ch
+li4cie2
+li1c2i2
+5li5c2io2
+l3ic3on1
+l2i2c2o2
+lict4o
+li2ct
+l2i4cu
+l3id1a
+li2d
+l4ida2r
+5lid3i1f
+3l4ieu
+lie2
+l4i2fe
+l2i1f
+l4i3fo
+lift5er1
+li2ft
+1l2ig
+li5ger1
+li1ge
+light5i
+li2gh
+ligh2t
+5l2i1h
+3l2ik2
+1l4il
+lil4i
+li2m2b
+limet4e
+lim2e
+li1me2t
+lim4p
+l4i2na.
+lin1a
+l4in2as
+l2i4n4d
+l4ine
+5l4in3ea2
+lin4er.
+lin1er1
+lin4e2r1s2
+lin4ger1
+l4inge
+li4ng
+l4in2g3i
+5lingt
+3l4in1gu
+3l4in1q
+lint5i
+3li2o1g
+l2io2
+l4i4ol
+li2o3m
+li3ot4
+li3o4u2
+5liph
+l2ip
+li2pt5
+l2i1q
+3l2ir
+l1is
+l4is2k2
+5lisse
+l2i4s1s
+l1it
+l2it.
+l3it5a
+5liter1
+3l2ith
+5l2i1t2i2a2
+3l2itr2
+lit4u
+l4iv
+l5iv1at
+l2iva
+liv3er1
+liv5i2d
+lkal5o
+lka4l
+lk5at
+lk3er.
+lker1
+lk3e2r1s2
+ll2
+l1l2a
+ll2a4ba
+ll1ab
+lla2ct4
+ll4ac
+l5l4as
+l4l4aw
+l5le1b
+l1lec
+l1leg
+l3lei
+l1lel
+lle5m
+l1len
+l3lep
+l3leu
+l3lev
+ll3f
+l1li
+lli5a2m
+ll2i1a2
+lli4a2n
+llib4e
+llic4
+l4licl2
+ll2i5c2o2
+l5lie2
+llig1at4
+l1l2ig
+l2lin
+l5lin.
+l3lin1a
+l3l4ine
+l5l2io2
+ll4i5v
+ll3m2
+l1lo
+lloc3a
+l1l2oc
+lloc5u
+l1lo2q
+l4lov
+llow5er1
+ll3p
+l4l3s
+ll5t
+l1lu
+llun4
+l5ly1a2
+l2ly
+l3ly1c
+l3ly1g
+l3ly1h
+l3ly1i
+l5lym2
+lm2
+l1ma
+l1m2e
+l4mer1
+lm3i4ng
+l5m2i3p
+l2m3od1
+l1mo
+l1n4
+l3ne
+lneo4
+2lo.
+5load
+l2oa2
+5l4ob3a
+1l2oc
+loc3al
+loc2a
+loc5ul
+lo4cus.
+lo1cus
+2lo1cy
+l3od1i4s2
+3lo3dr2
+1l2o1g
+lo5ga2n
+lo2ga
+4loi.
+l2oi
+lo5m1i
+l2om
+lo2m4m2
+lon4al
+lon1a
+lo2n4e
+l5onel
+lo5ney
+long5in
+lo4ng
+lon2g2i
+3l4o1n2i1a2
+lon1i
+lon2i4e2
+l3onis
+l3on1iz
+loom5er1
+l2oo
+lo2o4m
+loom2e
+lop4e
+5lo5pen
+l3o2p1m
+1lo1q
+l4o2r4ed
+l2or2e
+lor5i3at
+lor1i
+lor2i1a2
+lor4i2fe
+lor3i1f
+lo5rof
+loros4
+l4os.
+lo1so
+lo4ss4
+los5sie2
+lot5at
+l2ot
+loth4ie2
+l4oth
+lo5tu
+5lo2up
+lo4u2
+lp1at
+lp3er1
+lph2
+l5phe4
+l3ph1i4n
+l2pho
+l3p2ie2
+l3pit
+lr4
+l3ri
+l3ro
+l5ru
+4ls
+l5s2a4m
+ls5a2n
+lsi4f2i1a2
+ls2i1f4
+lsi4m
+ls4is2
+l5s2k2
+ls4p
+l1s2t2
+lt4an3e
+lta2n
+l4ta4ng
+lt5ant
+l5ta2r
+l1te
+l4tei4
+lter2n3
+lter1
+lth3i
+lt2i4c2i2
+lt1ic
+ltim4a
+l1tim
+lt1in4
+lti3t
+l3t4iv
+lt4or
+l1tr2
+ltram2ont5
+ltr2a2m
+ltra3m4on
+ltra1mo
+l1tu
+l4tus
+4lu.
+l2u1a2
+lu4ch4
+l4uc
+lu2c5o2
+luc5ra
+lucr2
+lu4cu
+4lue
+lu1en
+lu5er1
+l2u1i2
+lu4it
+lum4bri
+lu2m1b
+lumbr4
+lu4mo
+5lum2p
+lu2m5u
+lunch5eo
+lun1
+lun2ch
+lunche2
+5lune
+l3unta
+lu3or1i
+5l2up
+3lur3o
+lu4r
+lus2k5
+lu4ss4
+lut5a2n
+4lut5a2r
+5lution1iz
+lut2i
+lu3t2io2
+lution1i
+lu5t2oc
+lut2o
+lut5r2
+lu1v2
+lv5ate
+l5vet4
+l4vi
+l4vor
+l1vo
+l3w
+lx4
+2ly
+4ly.
+ly1c
+ly4ca
+lyc4l2
+ly2c5os
+ly1c2o2
+lym2
+lymph5
+lym1p
+l2yp2
+ly4pa
+lypt5o
+ly2pt2
+3lyr
+lys5er1
+l4y2s
+3ly3w
+3lyz
+lz4
+4ma.
+m4ac2a
+mac3ad
+ma5ch2in2e
+ma2ch
+mach1in
+5mach2y
+ma4cis
+m2a1c2i2
+ma2ct4
+4mad.
+4mada
+4ma4d1s2
+ma4ge
+5m4a2g1n2
+2mago4
+2m2ah
+ma5ho
+3m2a4i2
+4m4ai.
+mai2d3
+5m2ak
+mal3a4p
+mal2a
+mal5ar1i
+mala2r
+5m2ale2
+ma2l5ed
+mal3e1f
+m3al1g2
+m3al1is
+m4al4is.
+mal3le
+mall2
+mal4li
+2m2a2m
+mament4
+ma3men
+mam2e
+m5ament.
+1ma2n
+3m4an.
+man3a
+man5da2r
+ma4nd
+man2da
+man3dr2
+man3ic4
+man1i
+man4ica
+ma5n2il
+m4a4n2s
+man3te2l5
+man2te
+2m2ap
+m3aph
+1ma2r
+5mara2n
+mar5ol
+ma5ro4n
+ma3r2oo4
+mar5ri
+m2a4r1r4
+mar4shi
+ma2r2s2
+mars2h
+mar3v2
+ma3son
+m2aso
+massi4
+ma4ss2
+mass5i4ng
+mas2s1in
+3mas1t2
+ma4s4t4ed
+maste2
+mast4ic
+mas4t1in
+m4at.
+m4aten
+m4a3ter1
+mater5n4
+m4at1it
+mat4iti
+m4atiz1a1
+mat1iz
+m4a3t2o1g
+ma2to
+mat5om
+ma3top
+m4a4t1s
+3m4a2t1t4
+ma5tur2e
+m2a2tu
+matu4r
+m2av4
+2m1b
+mba2t4t4
+m2b4d
+m5bec
+mb2e
+m5ber3er1
+m2b2er2e
+mber1
+m4be2r2y
+m4be1s2
+mb2i
+m2bic
+m5b1il5
+m4b3i4ng
+m4b2is
+mb5ist2
+mbival5
+mb2iva
+m5b2ler1
+m2bl2
+m3bli
+mbru4
+mbr4
+mbu3l
+mbu4r4
+m1c
+m5d
+m2e
+2me.
+mea5g
+mea2
+me5a4nd
+mea2n
+me4ba
+me1b
+me4b2i
+2m2ed
+4med.
+3me1d2i1a2
+med5ic1at
+4medie2
+m5ed5ies
+3med1it
+me4do
+m5e2d2y
+me2g
+5meg2a1
+meg1a5t
+4m2ele
+mel5ee
+mel5ler1
+mell2
+mel3on
+mel4t
+melt5er1
+mel1te
+me2m
+4m5e1m2e4
+1men
+3men.
+2men1a
+men4ag
+mend5er1
+m2e4nd
+mende2
+men1d5o
+m4e1ne
+ment5or
+men2t2o
+5men4t1s
+5me2o1g
+me4p
+m5era2n
+mer1
+4m2er2e
+mer4i1a2
+2me2s
+mes5en
+me5s2i4a2
+mes5q
+3me2sti4
+mest2
+1me2t
+meta3t
+met2a
+met1e
+4met4ed
+meth4i
+me2th1
+met1i4c
+met5i1c2i2
+met3o
+met3ri
+metr2
+m1f
+4m3h
+4mi.
+m1ic
+m4i4cin
+mi1c2i2
+m2i3c2o2
+3micro
+m2i1cr2
+m4i2ct
+mi3cul
+m2icu
+mi4cus
+m4idi
+mi2d
+mi2d4in
+mid5on
+mi1do
+mi5fi
+m2i1f
+mig5a
+m2ig
+migh5ti
+mi2gh
+migh2t
+mi2gr2
+4mij
+mi5ka
+m2ik2
+m2il
+m3i2l3a
+mil4ad
+4m5ilie2
+mil5ies
+3mill2
+mi5lo
+mil4t
+3m2im
+mim5i
+5m2i4n4d
+mind5er1
+minde2
+min4er.
+min1er1
+min4e2r1s2
+m4ing5li
+mi4ng
+min2gl2
+min5ie2
+m2in1i
+m4init
+min3ol
+m2ino
+1m4int
+minth5o
+minth2
+m2i3o2
+m2i3p
+mir1ab4
+m2ir
+mir1a
+mi5r2acu
+mira4c
+m2is.
+m4i2s3c2
+mi4se
+4misem
+mis3ha2
+mis2h
+5missi
+m2i4s1s
+m3i4st.
+mist2
+mis4t1in
+m3i2s4t3s
+mi2t
+m5ita2n
+mit1a
+4mity
+3m2i1u2
+5m2ix
+4m1l
+mlo5cut2i
+m1l2oc
+mlun4
+2m1m2
+mma4n4d
+m1ma2n
+mmand5er1
+mmande2
+m3medi
+mm2e
+m2m2ed
+mmel5li
+mmell2
+mmet4e
+m1me2t
+mm2ig3
+mm2in3u
+mmis3
+mmob3
+m1mo
+m5m2oc
+mmor3
+mmut3a
+4m1n2
+mn2i1f4
+mn1i
+m4nin
+mn2i5o2
+mnis4
+mno5l
+1mo
+4mo.
+2m2oc
+mod1
+mod5ifie2
+mod2i1f
+mogast4
+m2o1g
+mo2ga
+mo3ga4s
+mo4go
+mo2g5ri
+mo1gr2
+m5o2ir
+m2oi
+mok4i
+mol3a
+4molog.
+mo1lo
+mo1l2o1g
+4molo2g1s
+4molo2gu
+mo3ly
+m2o1m
+mo4mis
+mom1i
+m4on
+mon1a4
+4m4o2n2ed
+mo2ne
+mo4n1g
+mo4no
+mono1lo4
+monolo3g5i
+mono1l2o1g
+m4op
+mophil5i
+mo5phi4l
+m1o2p4t2
+m3or1ab
+mor1a
+m3orat4
+mor4a2to
+m5ord
+mo5rel
+m2or2e
+3mor2i1a2
+mor1i
+m5or1iz
+mor5on
+3morp
+3mor2se
+mo2r1s2
+mor5tal
+m2ort2
+m4o3sp
+5most2
+m4o3sta
+2m1ous
+mo4u2
+m1p
+m3pa
+m4panc
+mpa2n
+m4pant
+mp4a2th3
+mpel5li
+mpell2
+m5per3er1
+m4p2er2e
+mper1
+mp4er3i
+mpet5it
+m3pet
+mpe2ti
+mphal5o
+mpha2
+m4phe4
+m4p4h2l
+m2pi
+mp5i2d
+m5p2ig
+mp3i2ly
+mp2il
+mp1in
+m3p2ir
+mp3is
+m3po
+mpol5it
+mp2o2t
+mpov5
+mp3to
+m2pt2
+mp5tr2
+m3pu
+m5q
+m3r
+m4r2y
+4m1s
+m5sel5f
+m5si
+ms2ol4
+mtu4
+muc4k4e
+m4uc
+muck1
+mu2ff4
+muf2
+mul1t2
+m5unc
+mun1
+mu5n2io2
+mun2i
+mun3is
+mus5c2o2
+m2usc2
+mu4se
+mus5ke2
+mus2k2
+mu3til
+mut2i
+m1v
+m3w
+2my
+5my3c
+my4d4
+my3e
+3my1i
+5mys1t4
+m4y2s
+3myt
+n1a
+2na.
+na2c
+na2ch4
+na5cious.
+n2a1c2i2
+nac2io2
+nacio4u2
+na5ciou2sl4
+nac4te
+na2ct
+nac5t2iva
+nac2t1iv
+na5cular1i
+nacu1l2a
+nacula2r
+na4d4a
+nadi4
+nad4op
+na2do
+n2ae.
+naf1fi2l4
+na2ff
+naf1fi
+nag4a
+n4a3gen
+5n4a5geri
+nager1
+na4g2i
+n5ago
+5n4a3gr2
+5n2ah
+5nail
+n2ai2
+na5iv
+n2ak2
+4na2l2ed
+n2ale
+n5al1g2
+n4al2i1a2
+n2a3ly4
+1n2a2m
+3nam2e
+na4m4n2
+na5n2as
+na2n
+n1an2a
+nann2ot4
+nan5no
+nan1n4
+nan4t2a
+nan5t4ed
+nan2te
+nan4t2o
+n2a5o
+4n4ard
+na2r
+nar5tisti
+nart2
+nar2t1is
+nartis2t2
+n2as
+nas5i
+nas5p
+na4s3s2
+nas5te2
+nast2
+nat5al
+n2a2ta
+na5ta3t4
+n4atee
+na3the2
+n4a2th
+nat4h4l
+nati4
+n4a4ti.
+nat5i2c
+n4a2to.
+na2to
+na3t2om
+na4tos4
+n2a2t4r2
+na5tur1i
+n2a2tu
+natu4r
+naugh5ti
+n2au2
+nau2gh
+naugh2t
+naus3
+3naut
+naut3i
+n2a2v
+na5vel
+n3b4
+nbarric5
+nba2r
+nb2a4r1r4
+nbar3ri
+nbe2au4
+nb2e
+n3bea2
+nbe4n
+nb4e1ne4
+nbet4
+nbit4
+n1c2a
+n4cal.
+nc1al
+ncarn5at
+n1ca2r
+ncar2n2
+ncarn1a
+ncel4i
+ncen4t5ri
+n1cen2
+n3cent
+ncen1tr2
+n4cept.
+n1cep
+nce2pt2
+n3cer1
+nc2er4e
+n4c4es.
+n5ce2t
+n5cey
+n3cha2
+n2ch
+nch4ie2
+n3cho
+nch5o1lo
+n3chu
+n4cic
+n1c2i2
+ncid5en
+nci2d
+n4c2i3f
+ncip5ie2
+nc2ip
+n1c2l2
+n4cles
+nc2le2
+n3c2oc4
+n1c2o2
+nco5pat
+nco1pa
+n1cr2
+n2c1t
+nc4t1in
+nct4ivi
+nc2t1iv
+nct2o
+n1cu
+ncu4lo
+n4cun1
+n4curvi
+n1cu4r
+ncur1v2
+nc4us4t2
+n1cus
+4nd
+n2da
+n3d2a4c
+n3dal
+n4d4ale
+n3d2a2m
+nd3anc
+nda2n
+nde2
+n3dea2
+nde3c2i2
+n3dec
+n1d2ed
+nde4l
+ndeleg4
+nd2ele
+nd3enc
+ndepr2e4
+nde1p
+nde1pr2
+n3derl
+nder1
+nde4s
+ndes5cr2
+n5de2sc2
+n5dez
+nd4hi
+n4d1h
+n1dic
+nd2ic5u
+ndid5a
+n1di2d
+n3die2
+nd5i2ly
+ndil4
+nd4in4e
+n2d1in
+nd3ise
+ndi4s1
+nd5is4i
+nd5ism.
+ndi2s1m4
+n2d5ity
+nd3ler1
+n2dl4
+nd1li
+n5d2oc
+n1do
+nd2or4
+n2do4u2
+nd5ou4r
+ndrag5
+ndr2
+n3dr2a2m4
+n5dron
+ndu4b
+n1du
+nduc2t5iv
+n3d4uc
+ndu2ct
+n4dun1
+nd2we
+n2d1w
+n3dy1i
+n2d2y
+2ne.
+ne3alo
+nea2
+n3ea2r
+ne2b3u
+ne1b
+5neck1
+ne4cl2
+ne2c2o2
+n5ec1t2om
+ne2ct
+2n2ed
+3nedi
+ne4du4
+neg3a
+ne3go
+5negu
+n4eis4
+2n2ele
+ne5l2i1a2
+ne1l2i4g
+n4e2ly
+ne2mo
+4n1en
+n3e4nd
+neo3l
+neon4
+ne2p
+n1er1
+4n4e2r4ed
+n2er2e
+5neri4ng
+ner3in
+ner5o
+ne4r4r5
+ner2v2
+ner2v5in
+2n4es.
+n1e2sc2
+ne3s2i1a2
+1ne4ss
+n1est2
+nes3t4r2
+net3a
+net3ic
+ne4t2o1g
+net1r2
+neuma5to
+n4eum
+neu1ma
+neut5r2
+nev5er1
+n4ew
+news3
+n4eys.
+ne4y3s2
+n3f
+n1fo4
+nform5er1
+n5f2orm
+nform2e
+nfor1tu5
+nf2ort2
+nfra2n3
+n1fr2
+4ng
+ng2a
+n4gae
+n5gee
+n3geri
+nger1
+n5gero
+n2gh4
+n2g2i
+n5gic
+ngi2o4g
+n3g2io2
+n5glem
+n2gl2
+n3glie2
+n5gl2io2
+n2g1n2
+n1go
+n4g2r2y
+n1gr2
+n1gu
+n2gum
+n1h2
+nh1ab3
+nha2
+nho4
+nh2y2
+nhy1d5
+n1i
+4ni.
+3niac
+n2i1a2
+ni3ba
+n4ic1ab
+ni4cen2
+n4ice
+4nicl2
+nic2t5a
+ni2ct
+ni4cul4
+n2icu
+ni4d2i1o2
+ni2d
+n2ie2
+ni4e2r1s2
+ni1er1
+ni2f4f
+n2i1f
+ni2ft4
+nif5ti
+n2i2g
+night5i
+ni2gh
+nigh2t
+n3i2g1m4
+3ni2gn2
+nik5e
+n2ik2
+n2il
+ni2l4a
+n3im1
+n4im2e
+5ni1me2t
+n4ine4s
+nin4j
+5n2in1n4
+n4in2u
+5n4i1ol
+n2io2
+ni1o4u2
+3nipu
+n2ip
+5n2iq
+n4is.
+n4is2k2
+ni2s4l4
+nis4o
+n5i4s1s
+nis5ter.
+nist2
+niste2
+nister1
+nis5te2r1s2
+nit2ch4
+ni2tc2
+ni4te
+ni3tho
+n2ith
+n4itos
+ni5tra
+n2itr2
+nit5res
+nitr2e
+ni3tri
+nit4u4r
+n2iv
+n2iv4a
+ni3vo
+niv2oc4
+niz5en
+n1iz
+n1j
+nj2a2m2
+n1ja
+njur5i
+nju4r
+4n2k
+nk5a2r
+n5ker5o
+nker1
+n3key
+nk5i1f
+nk5i2l
+4n1l2
+nla4n2d5
+nl2a
+nla2n
+n3le
+n1let4
+n3m
+nm4a3ter4
+nmor5ti
+n1mo
+nm2ort2
+n1n4
+nne4
+nnel5li
+nnell2
+nnerv5a
+nn1er1
+nner2v2
+n3n1i
+nni3ki
+nn2ik2
+nnov3
+n5ny1i
+n2ny2
+4no.
+n5ob2i
+no5b1il
+no2b4l2
+no5blem
+nobser4
+no4b1s2
+n5ocu1l2a
+n2oc
+no4di
+n4o2d2y
+noe4c
+no4f2a
+nois5i
+n2oi
+n4ois
+n5ol.
+no3l2a
+nol4i
+no2m3al
+n2om
+no1ma
+1nom1i
+no2mo
+4no2ne
+3n2oni4c
+non1i
+5nood
+n2oo
+nop5i
+nora4t
+nor1a
+nor5di
+nor4i1a2
+nor1i
+nor4is
+nor3ma
+n2orm
+n4oro
+n2or4t2
+n4os.
+nos4o
+n4o3sp
+not1a
+n2ot
+3note
+n1o4u2
+n4oug4
+3n2oun1
+2nous
+nou5v2
+nova4l
+nove2
+no2v3el
+no4v2el5e
+n4ow
+now5er1
+now3l
+n3p4
+np2il4
+n1pl2a4
+np2l2
+npoin4
+n1po
+np2oi
+npo5l2a
+n3p4os4
+npri4
+n1pr2
+n1q
+n4que1f
+nqu4
+n1r
+nre4i4
+nr2e
+nre3m
+nres5t4r2
+nrest2
+4n1s
+ns2c2
+n2s2c2o2
+ns3c2ot
+n4s1cu
+n5sec
+nsec4te
+nse2ct
+n2s2es
+n5seu
+n3s2h2
+n2si
+n4s3ib
+n4sic
+n5s2ick1
+n3s4i2d
+n3sie2
+ns5ifi
+ns2i1f4
+ns3i4ng
+n2sin
+n3s2io4
+n3s2is2
+ns1i2t
+n4s3iv
+nsolu4
+ns2ol
+n5son
+n4s2or2e
+n4s3o2r2y
+n3sp2ir
+n3s2t2
+nsta4
+nstil4
+n3su
+nsur4e
+nsu4r
+n3swa
+nsw2
+ntab4u
+n2t1ab
+nt3age
+nt1al
+n4t3anc
+nta2n
+nt5a4nd
+ntan5eo
+nt4ane
+n4t3ant
+nt4ar2i1u2
+nta2r
+ntar1i
+n5tas1is2
+ntas3i
+nt3as4t2
+nt1at
+nt5a2th
+nt3ati
+nt5a2t1iv
+n5t2au2
+n1te
+n4tec
+n4tee.
+n4tees
+n3te2l
+ntend5en
+nt2e4nd
+ntende2
+n4te2o
+n4ter.
+nter1
+n3teri
+n5ter2n2
+ntern5al
+ntern1a
+nter5nat
+nth2
+n1the2
+nt4her5
+nth5in2e
+nth1in
+nt2i
+n2t4ib
+n4t3ic.
+nt1ic
+n5ticis
+nt2i1c2i2
+n5tic1iz
+n4ti4c5s4
+nt2ic4u4
+n3ti2d4
+n1tie2
+n4tify.
+n1t2i1f2
+nti3fy
+n3t2ig
+nt5ilati
+nti2l3a
+n5t4ill2
+nt3i4ng
+nt1in
+nt5ing.
+n1t2i3p
+n4ti1pa2r
+n4tis.
+n2t1is
+nt3i2s1m4
+nt3is2t2
+n5ti1t2io2
+nt3iz
+n2tj
+n1t2o
+n3t2om
+nton1i4
+n5top
+n1tr2
+ntr2a3d
+nt3ral
+n4tran2t
+ntra2n
+n3trat
+nt5re4s4s
+ntr2e
+n2t3ril
+ntrol5ler1
+ntrolle2
+ntroll2
+n5trym
+n2t4r2y
+n1tu
+n3t2u1a2
+ntub5
+ntup5li
+nt2up
+ntup2l2
+n5tu4r
+n2ty
+n2u
+n2u1a2
+5n4uc
+3nud
+nud5i
+nu3en
+nug4a
+n2u3i2
+nu4is
+5nuk
+n4u1lo
+n3ult
+nul1tim5
+nu1m2e
+5numenta
+numen4t
+nu1men
+5numer1
+5nu1mi
+3nunc
+nun1
+nu3tat
+n5u2t1iv
+nut2i
+nu4t2o
+nu1tr2
+n3v2
+nve2
+n2vel3
+nv4e1n4e
+nven5o
+nver2s5a2n
+nver1
+nve2r1s2
+nvi4t
+nvoc5at
+n1vo
+nv2oc
+nvoc2a
+n5w
+nwin4
+nwi2
+n3w2om4
+n1wo
+n2x4
+2ny2
+5nyc
+nym5i2t
+nyth4
+n1z2
+nzy4
+2oa2
+o5ace
+o3a2ct
+oad5er1
+oad5i
+o3ag
+oak5er1
+o2ak
+o3ales
+o2ale
+oal4i
+oal5in
+o5al1it
+oan4t
+oa2n
+oap5i
+o2ap
+oar5er1
+oa2r
+oar2e
+oar4se
+oa2r2s2
+oast5er1
+oast2
+oaste2
+o2a2t5a
+oat5ee
+o4at5er1
+4oba
+o1be4l
+ob2e
+ob2i
+ob3i4ng
+2o1b2i3o2
+ob3it
+o3bl2a
+o2bl2
+ob1li
+4obo2
+ob3oc
+o5bol
+o5b2ot
+o3bra
+obr4
+obr2om4
+o2b5t
+ob3ul
+o3bus
+2oc
+oc2a
+o4c1ab
+o3cad
+oc5ag
+o5cal1li
+oc1al
+ocall2
+o4c5a2t1iv
+oc1at
+oc5a2to
+4o3ce2
+o4cea2
+ocen5o
+o1cen2
+ocess4i
+o5ce4ss
+och4e2
+o2ch
+och5in
+o3ch2o4n
+o1cho
+ochro4n
+o3c2hr
+o5chu
+oci3ab
+o1c2i2
+oc2i1a2
+oci4al
+o1cl2
+o2c2le2
+o1cr2
+oc2r2e3
+o2ct2
+oc2te
+oc1to
+ocu4lu
+ocum4
+oc5uo
+ocu4ss4
+o1cus
+ocus5si
+oc3ut5r2
+o1cy
+o5cy4t
+ocyt5o
+od3al.
+o3de4c
+o5de3g
+ode4ga
+o5d2e4n4d
+o3dent
+odes4
+od3ica
+o4d1ie2
+od3iga
+od2ig
+od4il4
+od1i4s2
+o3d2is5i1a2
+od5it
+5od1iz
+od3li
+o2dl4
+o2do
+od5o1lo
+o2d5ous
+odo4u2
+o3dro
+odr2
+od5ru
+o2du
+odu5cer1
+o3d4uc
+o4duct.
+odu2ct
+o4duc4t1s
+od3ul
+o5dyt
+o2d2y
+oe3a2
+oe4b2i
+oe1b
+oe5cu
+o2e4d
+o5ee
+oe5ic
+o3elec
+o2ele
+oel1li4
+oell2
+oelo4
+oe3o4p
+oep5
+o5eq
+o3er1
+oes3t2
+o1et
+o4et.
+oet3i
+oet4r2
+3oeu
+o3ev
+o3ex
+o3flu4
+ofl2
+4o1fo
+o4ful
+o3fu
+ofun4
+2o1g
+o2ga
+o3g2a2m
+og5a2r5
+o3ga4s
+o3gen1
+o5gey
+o3g2i
+o4g2io2
+og2n1a
+o2gn2
+ogon1i4
+o4g2ot
+o2gri
+o1gr2
+o4g4ro
+og4s2h
+o2g1s
+o2gu
+o5gyr
+o2gy
+o1h2
+o3ha2
+oh1ab3
+o3he2
+oher4er1
+oher1
+oh2er2e
+o3ho4
+oh2y4
+2oi
+oi4c
+o3ic.
+o4i5ch
+o2i4d
+4oide
+o2ig4
+oi5ki5
+o2ik2
+oi2l3er1
+oil5i
+oin3de2
+o2i4nd
+o3i4ng
+oin4t5er1
+oin1te
+oin4tr2
+o2i4o2
+4ois
+o3i2s1m4
+oi4t
+oit4al
+oit1a
+o2ith4
+o1j
+ok4ine
+ok1in
+ok3l2
+ok5u
+ol4a4c
+ol2a
+o4lack1
+o5lali
+ol4al
+ol4a2n
+ola4n5d
+ol5ast2
+ol4as
+ol4at5er1
+ola4te
+ol5ch
+ol1c2
+ole2c4
+ol5e1c2i2
+ol5efi
+ole1f
+o3leo
+ole4on
+o3lep
+o2l1er1
+o3lest2
+o3leu
+o1l2i1a2
+ol3ica
+o3l4ice
+ol5ic1iz
+oli1c2i2
+ol5ick1
+ol3i4c5s4
+ol5id.
+oli2d
+oli2e2
+o3li1er1
+ol5i4es.
+o5l2i1f
+ol4i4f3e
+oli5go
+o1l2ig
+o5lin1a
+ol3i4ng
+oli5os
+ol2io2
+ol5ip4
+ol1is4
+ol2it
+olle2
+oll2
+ollim3
+ol1li
+ol4lop4e
+ol1lo
+ol4ly1i
+ol2ly
+ol3mi
+olm2
+o1lo
+4o1l2oc
+ol3o2i4d
+ol2oi
+o4lon1a
+ol5on5el
+olo2n4e
+ol1or
+o3los
+ol1o4u2
+4ol1ub
+o3lu1mi
+o5lun1te
+olun1
+ol3us.
+oly3ph
+o2ly
+ol2yp2
+4olyt
+2om
+o1ma
+o4m1ab
+o2mac
+o2mal
+o4mane
+o1ma2n
+o3mas1t4
+o3mat
+om4b2e
+o2m1b
+o2m2e4d
+om2e
+ome4g
+o5meg5a1
+ome3li
+o2m3en1a
+o1men
+omen4t
+o3meri
+omer1
+om1i
+o3m2i1a2
+om1i2c
+om2i1c5r2
+om4ie.
+omie2
+om2il4
+om4i2ny2
+om2i4s1s4
+om2i2t
+omm2e4
+o2m1m2
+om2n1a
+o4m1n2
+omn1i3
+o4m2oi
+o1mo
+omoli3
+o2m4o4n
+om5o2ny2
+o4mos.
+omo2t5iv
+om2ot
+o2mo4u2
+om5p2il
+om1p
+om2pi
+ompt5er1
+om2pt2
+ona4d
+on1a
+on3ai2
+o5nas.
+on2as
+onast5i
+onast2
+on5a2t1iv
+onati4
+4on2au2
+on1c
+onc1at3
+on1c2a
+on4cho
+on2ch
+5ond5a2r
+o4nd
+on2da
+ond5ent
+onde2
+on3der1
+on3dr2
+on5d2y
+o2ne
+4onea2
+onec4r2
+4o2n2ed
+on1ee
+on5ell2
+o3neo
+o1n3e4ss
+on1et
+ong3at
+o4ng
+ong2a
+on4gu
+4on1h2
+4o1n2i1a2
+on1i
+on5ia2r
+2oni4c
+onic5a
+oni4c1al4
+on4i2d
+on3ies
+on2ie2
+on3i1f
+o5n2i2g
+o1n2io2
+on4k4s
+o4n2k
+4onnes
+on1n4
+onne4
+on5o4di
+on5oi
+o1no4m1i
+on2om
+4o5nom1i2c
+ono3s
+o5not1a
+on2ot
+o4n1s2
+2ont
+ont5a2ne.
+ont4ane
+onta2n
+on4ter1
+on1te
+onti5fi
+ont2i
+on1t2i1f2
+onton5
+on1t2o
+on1t4r2
+on4tr2e
+on5u4r
+on2u
+o5nus
+onvo5lu
+on3v2
+on1vo
+onvo2l
+on2z2
+2oo
+oof3er1
+o2o1i
+ook3er1
+ook3i
+oo4le
+ool5i2e2
+o2o4m
+oon3i
+oo2p
+oop4ie2
+oop1i
+o3o2p1t2
+oo4se
+oost5er1
+oost2
+ooste2
+o2o2t
+oot3er1
+ooz5er1
+o2oz
+o1pa
+o4p1ab
+o5pali
+opa5ra
+o1pa2r
+op4a2th5
+o5pec
+ope4n2s4
+op1er1
+3opera
+4opera4g
+o1pha2
+o4phe4
+oph4ie2
+o5phi4l
+op5hol
+o1pho
+o1ph2y
+ophy5l2a
+o3phy2l
+op1i
+op3ies
+op2ie2
+op5i4ng
+o3p2it
+4op2l2
+oplast4
+o1pl2a
+opl4as
+o4p2oi
+o1po
+opol3i
+op4o2n4
+o2p5o2ny2
+op5or1i
+op2oun4
+opo4u2
+o2p5ov
+op2p2l2
+o4p1p2
+op5pli
+oprac4
+o1pr2
+op3ra2n
+opr2e4
+opro4l
+op5r2op
+op5so
+o2ps2
+1o2p1t2
+op2ta
+op1u
+o5qui3al
+oqu4
+oq2ui2
+oqu2i1a2
+or1a
+or5a2do
+or2ad
+ora4g
+o5r2ai2
+or5al
+4ora4ls
+or2a2m4
+oran3e
+ora2n
+orat1or5
+ora2to
+or2b3in
+or1b
+orb2i
+or4ch
+or1c2
+orch3i
+or4du
+2or2e
+or5ead
+orea4
+ore5a2r
+ore5c2a
+ore3f
+ore3g
+or3ei4
+oreo5l
+or3e2sc2
+ore3s2h
+or3e4ss
+orest5at
+orest2
+or5este2
+or5e2t2t4
+ore4v
+5orex
+or4fr2
+or1f
+or5gn2
+or1g2
+or1i
+4o4ri.
+or3ia.
+or2i1a2
+4oria2n
+ori4c2i2
+ori5ci2d
+or2i1en4
+orie2
+or3i1f
+5or2ig
+ori5ga
+or4i4no
+4orio.
+or2i3o2
+or5ion
+4orios
+ork5a
+or2k
+2orm
+orm1i
+or3n4a
+or2n2
+5or1nis
+orn1i
+or3nit
+or3o2ne
+o5r2oo4
+or5ose
+or5oso
+or1o4u2
+orre2l3
+o4r1r4
+orr2e
+orres3
+or4sc2
+o2r1s2
+or4sey
+or2se
+or4sti
+orst2
+2ort2
+ort3a2n
+ort3at
+ort3er1
+or5t4es.
+or2t2es
+or3th2i
+or4t2h2r
+or4tit
+or2t3iz
+or4t1or
+or1t4o
+or5tra
+ortr2
+ort3r2e
+4or1u
+or4un1
+or2y5p
+o2r2y
+o3s2a5i2
+os3a2l
+osa2r5
+o1sc2
+os4ca
+os4ce
+o2s2ch2
+o4s1c2i2
+osclero5s4
+oscl2
+osc2le2
+osc2ler1
+o3sec
+osec3u
+ose5g
+os5enc
+o3se4n2s4
+os5eo
+oser4
+o2set
+os5eu
+o3s2i1a2
+osi4al
+osi4a2n
+os5i4de
+os4i2d
+o3si1er1
+osie2
+os5i1f4
+o2s1in
+o4s1is2
+o5ske2
+os2k2
+o5son
+o3soph
+os2o2p
+os3o1po
+4osp
+o3spec
+os1pi
+os4sa
+o4ss
+oss5a2r
+os4s2it
+4osta
+ost2
+ost5age
+os4ta2r
+os5tee
+oste2
+os5ten
+osten5t
+ost5ica
+ost1ic
+os3til
+o5stom2e
+ost2om
+ost3or
+4osu
+os1u4r
+2ot
+ot3a4g
+o5tal1it
+ot3a2m
+ot4an3ic
+ota2n
+otan1i
+o3t2ap
+ot4a1t2io2
+o5t2a5v
+o3t4a4x
+o4t4ed
+oter4m
+oter1
+ot5est3a
+o2t2es
+otes4t2
+4oth
+othal2a2m5
+otha4
+othal2a
+oth5er3in
+ot4her1
+othe2
+o5therm
+otherm5a
+o5thor
+o5t2i2a2
+o5t4ill2
+5ot5in1iz
+ot1in
+ot2in1i
+o2t4iv
+o3t2iva
+o5tivi
+o1t2o
+o5to2n4e
+o4tor2n2
+ot1or
+o4to4u2
+4o1tr2
+otur1i4
+otu4r
+oty3le2
+o4u2
+5o2u3a2
+oub2
+ou5br4
+ou5c2a
+o4uc
+ou5c2o2
+oud5i
+4oue
+ou3e4t
+oug4
+ou5ga
+ought5i
+ou2gh
+ough2t
+ou5g2i
+oul4t
+oult5i
+ou3m
+2oun1
+ou4n2d
+oun2d5a
+ound5e4l
+ounde2
+oun5gin
+ou4ng
+oun2g2i
+oun3tr2
+oup5li
+o2up
+oup2l2
+our3er1
+ou4r
+our2e
+ou5sa2n
+2ouse
+5ous2i1a2
+ou4ss4
+out5is2h
+out2i
+ou2t1is
+ou4v5a
+ouv2
+o1v2a3le
+o5va2r
+4ovati
+ov5el3i4ng
+o2vel
+o4ver.
+over1
+o5ver3b
+ove2r3s2
+ov4ete
+ovid5en
+ovi2d
+o1vis
+ovis5o
+o2v5os
+o1vo
+ow3ag
+ow3a2n
+o5w4ay
+owd4i
+ow2d3l4
+ow1el
+owel5li
+owell2
+ow5ha2
+owh2
+owh2ith4
+ow1i2
+ow5in
+owi5n2e
+ows4
+ow5s2h
+ow5sl4
+ow5y2
+o4x
+ox3i
+oxic5ol
+oxi4c
+ox2i2c2o2
+ox5o
+2oy
+oy5a2
+o4y2s4
+2oz
+o1zo
+oz2o5i
+o3zy1g
+4pa.
+pac4te
+pa2ct
+pa5do4u2
+pa2do
+pad4r2
+pae4s4
+pa3ga2n
+4pag1at
+pag4ati
+pain2
+p2ai2
+4pairm
+pa2ir
+pa5la2n
+pal2a
+pal3in
+pa3lo
+p4a4ls
+pan5a2c
+pa2n
+pan2a
+pan1e
+pan3i
+p4a4pa
+p2ap
+pa3pe
+pap3u
+pa3p4y
+1pa2r
+para5s2
+par3l
+pa3r2oc
+pa3rol
+par5o4n
+1p4as
+pass5ive
+pa4ss2
+pas4s1iv
+pas1t2
+pas4t1in
+p4a3ter1
+pa2t3i4n
+p5a2to
+pat4ric
+p2a2tr2
+pat1ri
+pa5tric2i1a2
+patri1c2i2
+5p2au2
+paul5e
+pa2u3p
+pa5vi4l
+p2av
+5paw
+pawk4
+paw5ki
+2p1b
+p1c4
+p5d2
+2pe.
+pear4l5i
+pea2
+pea2r
+pe4c2o2
+pec4tu
+pe2ct
+2p2ed
+5ped3a
+3pede2
+3pedi
+ped3i4s1
+3pe4d1s2
+pe2du
+p4ee
+pe2f
+4p2ele
+pe5le3o
+pel5v4
+pen4at
+pen1a
+5p4enc
+pend5er1
+p2e4nd
+pende2
+pen5dr2
+pen4ic
+pen1i
+3p4en1n4
+pens5ati
+pe4n2s
+pens2a1t
+p4en5u
+pe5on
+5p2er1c2
+per1
+per3cent5
+per1cen2
+4p2er2e
+perem5i
+p4eri
+5p4er3n2
+p3eron
+per4os.
+per5t1in
+pert2
+per2t5is
+per3v2
+p4e2r2y
+2pes
+pe4s4s3
+pes5til
+pe2sti
+pest2
+3pet
+pet5all2
+pet2a
+pet3en
+pe2ti
+pet3r2
+pe4wa
+4pex
+p1f
+p5g
+2ph.
+4phae
+pha2
+pha5g2e4d5
+ph5al.
+ph2a2n
+phant5i
+phan4t
+phe4
+ph5esi
+ph3et1
+3phib
+4ph1ic
+1phi4l
+ph1i4n
+ph1is
+ph2i5th
+p4h2l
+1pho
+4pho2bl2
+4ph4o2n2ed
+ph2o4n
+pho2ne
+3phor
+ph5or1iz
+phor1i
+ph4os3p
+ph3o4u2
+3phra
+p2hr
+4p2h1s
+1phu
+ph2u5i2
+2phy.
+ph2y
+3phy2l
+4pi.
+3pia2r
+p2i1a2
+4pica
+p5i4c1al
+p2i3c2o2
+p2i4cr2
+pi2ct4
+p2ie2
+p4i1es2t2
+pi5eti
+p2i1et
+p5ifie2
+p2i1f
+pi2g3n2
+p2ig
+p2il
+3pile
+pil2l5in
+pill2
+pil1li
+5pilo
+pi3l2ot
+pim2
+pin4e
+pin5et
+3p4inge
+pi4ng
+p4in1n4
+5p4i4n1s2
+3p2i1o2
+pip4a
+p2ip
+pi4pe
+5p2iq
+pir5a4c
+p2ir
+pir1a
+pir4t2
+p4is.
+p4i2s3c2
+p2i4s2s
+pis1s5a
+pis5til
+pist2
+pis4tr2
+p2itu
+2p3k2
+p2l2
+1pl2a
+pla5n1o
+pla2n
+plant5er1
+plan2te
+plas5t2i1c2i2
+pl4as
+plast2
+plast1ic
+pla5t4o
+4p4le.
+4pled.
+p2l2ed
+3pleg
+3plen
+2ples
+4pli2s1m4
+pl1is
+4plist2
+plu2m
+plum4b2e
+plu2m1b
+plumb5er1
+p4ly
+2p1m
+2pn
+pnos4
+1po
+4po.
+po3c2a
+p2oc
+3pod
+4pof
+2p5o2i4d
+p2oi
+pois5i
+p4ois
+po5lem1ic
+po4ly1
+pol4y3s
+po1ma2n5
+p2om
+po1ma
+pom4e
+p4o2n
+pon4a2c
+pon1a
+pon4ce
+pon1c
+pon4i4e2
+pon1i
+3pon3i1f
+pon5ta
+p2ont
+2po2ny2
+po4pa
+po5ple
+p4op2l2
+4pora2to
+por1a
+por3ea4
+p2or2e
+4po2r4ed
+por3i4f
+por1i
+por3p
+3p2ort2
+por5tie2
+3p4os
+po4s1s2
+po1te
+p2ot
+poul1t5e
+po4u2
+poul4t
+pound5er1
+p2oun1
+pou4n2d
+pounde2
+pout5er1
+p5ox3i
+po4x
+5p2oy
+4p1p2
+p1pa2r3
+ppar1at5
+p4p4ene
+p3pet3
+pph4
+ppi4c
+p4p2l2ed
+pp2l2
+p5p2ler1
+p5p1let
+ppres2s5o
+p1pr2
+ppr2e
+ppre4ss
+ppr4ob5a
+1pr2
+prac1
+pr2a5d
+pra2r4
+4p4re.
+pr2e
+pre1b3
+p2r4e1d
+pr2ef5er2e
+pre2fe
+pre1f
+prefer1
+prel5a4te
+pre1l2a
+3prem
+pre5mat
+pren3
+pres3a
+pre5scin
+pre2sc2
+pres1c2i2
+p3rese
+5pressi
+pre4ss
+5pri1c2i2
+pri4es
+prie2
+4pri4m
+pring5er1
+pr4inge
+pri4ng
+pr4in2g5i
+4pr2i3o2
+p5r4i1ol
+pri4os
+pri2s5in
+pr2i4v2
+4pr2iva
+4p4ro.
+pr4o3bo2
+p3roc3a
+pr2oc
+pro4ch
+pro1l
+pron4a
+pro4ph5e4
+pr2op
+pro3pyl5
+pro2p4y
+pro3r2
+pros4i
+pros5tr2
+prost2
+pr4o3th
+pr2ot
+4p2r2y
+2ps2
+p3sac
+ps4al5t
+psa2l
+p3s2h
+p1si
+p5sin.
+p2sin
+p1s2o3m
+p1st2
+psul3i
+p1s2ul
+3psy1c
+ps2y
+2pt2
+p2t3ab
+p4tad
+p4ta2n
+p2ta2r
+pt5ar1c2
+p1t4ed
+p5ten1a
+pt5en1n4
+5pte2r2y
+pter1
+p5tet
+pt4ic
+p5tie2
+p3til
+p2t3in
+pt4ine
+p3tise
+p2t1is
+p5tisi
+p5t2om
+p4tr2
+p1tu
+pub1
+pu5b2e
+p4uc4
+pu4ch4
+pudi4c
+pu5er1
+puff5er1
+puf2
+pu2ff
+puf1fe
+pu4la2r
+pu1l2a
+pu5lar.
+pu5l1is
+pul2i
+p4u4m
+pu1m4o
+p4un1
+pu4n4a4
+3punc
+pun5g2i
+pu4ng
+pun3i
+pun2t
+pu3pi
+p2up
+pur5b
+pu4r
+pur3c2
+p4us
+push4ie2
+pus2h
+pu3tat
+p5u5t1is
+put2i
+pu3tr2
+4p1w
+2p4y
+py3e
+3py1g
+3pyl
+pyr3e
+py5t
+4qf
+qu4
+5qu2ak
+q2ua2
+4qua2r
+qua5t2io2
+2que.
+3quer3a
+quer1
+4qu2er2e
+4qu4es.
+1que4t
+5quin1a
+q2ui2
+5qu2ir
+3quito
+4quitu
+4ra.
+r2a3ba
+r1ab
+5r2ab2e4
+3r2a3bin
+r2abo2
+ra3bol
+rac4a
+r2acu
+rac5u1l2a
+ra5cu1lo
+r2ad
+ra4de
+rad4in4e
+ra2d1in
+ra2g5o4u2
+ra3gr2
+3raill2
+r2ai2
+ra5ist2
+4ral2i1a2
+r2a3ly4
+r5a4m1n2
+r2a2m
+ra3mu
+r4andi
+ra2n
+ra4nd
+ran5dis2h
+randi4s1
+ran4du
+ra5nee
+ran4gen
+ra4ng
+ra3n2i1a2
+ran1i
+ra3n2oi
+ran1o
+ran2t
+ran5t4ed
+ran2te
+5ran3te2l
+rant5in
+rant2i
+ran1t5o
+rapol5
+r2ap
+ra1po
+rap5to
+ra2pt2
+4rar1c2
+ra2r
+rar2e2
+rar3e1f
+rar5ia.
+rar1i
+rar2i1a2
+ras2
+r2as3c2
+r2as2e
+r4as2k2
+r2a3so
+ras1s5a
+ra4ss2
+ras2s5in
+r4as5te2
+rast2
+ra5t2a3p
+r2a2ta
+ra5ta3t4
+rat5eu
+rath4e2
+r4a2th
+ra2t3i1f2
+rat4in.
+ra2t3in
+ra5t2oc
+ra2to
+5r2a5tol
+4r4at2om
+ra4tos4
+ra5t2u1i2
+r2a2tu
+rat5u4m
+rat3u4r
+rav5ai2
+r2av
+rav5eli
+ra2vel
+rav3i2t
+rawn4
+ra3z2ie2
+r2az2
+raz1i
+r1b
+r2ba
+r4bag
+rb3ali
+rb1a2n
+rba2r3
+r2b2e
+rbe5c
+r3bel
+rbel5o
+rb3ent
+r4be1s2
+rb2i
+rbic4
+rb2ic5u
+r2bin
+r5bine
+rbit1
+r2bos
+rbo2
+r4bum
+rbu5t4
+r1c2
+rcant5
+rca2n
+rca4s
+r4c2ele
+rce2n5er1
+r1cen2
+rc4ene
+rcen5ten1a
+r3cent
+rcen1te
+r2ces
+r3ch2a3i2
+r2ch
+rcha2
+rch3al
+rch5ar4d
+rcha2r
+rch5ate
+r3cheo
+rche2
+r4ch1er1
+rch4i1er1
+rchie2
+r4ch1in
+rch3is
+r3chit
+r3cil4
+r1c2i2
+rci5n2o1g
+rc2ino
+rcis2
+rciz4i2
+rc1iz
+r2cl2
+r4c2le2
+r5clo
+rco1lo4
+r1c2o2
+rcrit5
+rcr2
+rcriti4
+r2ct4
+rc5ti
+r5d2a2m
+r4d1a2n4
+rd4an.
+r2da2r
+r5de4l
+r3de4n2s
+r4des
+rd5e4ss
+rd5ia2n
+r1d2i1a2
+r4die2
+r5d2ig
+r2d2in
+rd3i4ng
+r3d2i3o2
+rd1i4s2
+rd5ler1
+r2dl4
+rd3li
+r4dol
+r1do
+r2d5ous
+rdo4u2
+r2e
+4re.
+rea4
+r4ea.
+reac2t5iv
+re1a2ct
+re3af
+re3a4g
+re5alt
+re5a2m1b
+re2a2m
+re3an5i
+rea2n
+re5ant
+re5asc2
+re2as3o
+r5e2au3
+3re2av
+r5ebrate
+re1b
+re2br4
+reb1ra
+re4b5uc
+re3c1al
+rec2a
+rec4ce
+rec1c4
+re3ce
+reced5en
+re2c2ed
+re3cede2
+re3cha2
+re2ch
+reci5si4
+re1c2i2
+r4e1c2r2
+rec4t3r2
+re2ct
+re3cu
+2r4ed
+re1de2
+re3di4s1
+re4dol
+re1do
+re1dr2
+reed5i
+re2ed
+ree3m
+3reer1
+re2fe
+re1f
+re3fin
+re5gali
+re5gra
+re2gr2
+r2e3g4r2e
+reg3ri
+re3g4ro
+reg3ul
+rei4
+r4e3i1f
+re1in
+r4e3is
+reit3
+reit4i
+re1l2a
+r2e1le
+4r4e4l2ed
+re3l2i1a2
+rel3ic
+re5l2ig
+rel2i4q
+rel3li
+rell2
+r5em.
+rem5ac
+rema4n4d
+re1ma2n
+rem5a2to
+r3em1p
+rem5ul
+ren1a4
+ren5at
+r4endi
+r2e4nd
+r4ene2
+ren4es
+r4en1i
+ren3ic5
+ren4it
+ren4ter1
+ren1te
+re5num
+r4en2u
+re3oc
+3re2o1g
+re5ol2a
+reo2l
+re3oli
+3reo1s2
+re1pe
+re4per1
+re5ph1
+rep5i2d
+re3pin
+re3ple
+rep2l2
+r2e4pr2e
+re1pr2
+re1q
+rer4a
+rer1
+r2er2e4
+re5rea4
+r2e3r2u
+2r4es.
+re3scr2
+re2sc2
+re3se4l
+re3sem
+re3ser1
+res5ist2
+res1is2
+re5s1it
+re3spe
+r3esq
+re5stal
+rest2
+rest5er1
+reste2
+re5s1tu
+3reta2r
+ret2a
+re3ten
+re4t4er3
+re5term
+re1t2o
+re5ton
+re3tra
+retr2
+r2e3tr2e
+re5t1ri
+re3tu
+re3un1
+reu4r4
+re1v
+re2v3el
+revi4t
+r1f
+rf4l2
+rfu4m
+r3fu
+r1g2
+r4gag
+rgal4
+r2ge
+r5gee
+r4g4ene
+r3gen
+r3ge4o
+r3ger1
+rg5li
+r2gl2
+rgu5f2
+rh2
+r5hel4
+rhe2
+rhe5o2l
+rhos4
+3r2h2y
+4ri.
+ri3a2m
+r2i1a2
+ri5ap
+2r2ib
+r4i3bo2
+ric2a5t4u
+ric1at
+2r4ice
+rich5om
+r4i2ch
+ri1cho
+rick4en
+r2ick1
+ric4ke
+r4icl2
+ri5cli
+ri3col
+r2i2c2o2
+ri5cor
+ri4cra
+r2i1cr2
+2r2icu
+rid4al
+ri2d
+rid1a
+rid4e
+ri5el
+rie2
+ri3er1
+ri2es
+rift5er1
+r2i1f
+ri2ft
+rif5tie2
+5rifug4a
+ri3fu
+ri5g2a2m
+r2ig
+rig5ant
+riga2n
+ri5l4a
+r4ile
+rill5er.
+rill2
+ril2ler1
+rill5in2g1s
+ril1li
+ril2lin
+rilli4ng
+4rim.
+ri2ma
+rim2a4g
+ri1m5a2n4
+rim3at
+r4i2m1b
+ri1men4
+rim2e
+4ri2m1m2
+4ri4m1s
+rin4e
+r4inet
+ring5ie2
+r4in2g2i
+ri4ng
+rink5er1
+r4i4n2k
+r4ino
+ri4n4s2
+rin3s5i
+rin4t5er1
+rin1te
+r2i3o2
+ri2o4g
+5rio2ne
+ri4op
+ri5or
+ri5p2a
+r2ip
+ri5p2ie2
+rip5lica
+rip2l2
+r2i5r
+ri2s4c2
+r4is4is2
+r2is1p
+ris4pa
+ris4pe
+ris5ter1
+rist2
+riste2
+4risti
+r2i3ton
+r5it5r2
+r2i4v
+riv4al
+r2iva
+ri5vall2
+riv5eli
+ri2vel
+riv3en
+riv3i4l
+5r2i5zo
+r1iz
+r1j
+r2k
+r5kas
+rk5ati
+r5kell2
+rk5en1i
+rk1er1
+r3ket
+r3key
+r3ki1er1
+rkie2
+r5ki1es2t2
+r5k2in.
+rk1in
+r5k2i4n1s2
+rks4m2e
+r4k1s
+rk2s1m4
+r1l2a
+rlat3
+r1le
+r3l4ic
+r3l4ine
+r5li4n1s2
+r4l1it
+r1lo
+r3mac
+rma5ce
+r5mad
+r2mal
+r4manc
+r1ma2n
+r4man1o
+r4mar1i
+r1ma2r
+r4ma2r2y
+rm4as
+r4m3ati
+rma5t2oc
+rma2to
+r5m2a5tol
+rme2a2
+rm2e
+r2m1ic
+rm4ica
+r5m2i2d
+rm4ie2
+r5m2ig
+rm2il5
+rmin4e
+rm3i4ng
+r4ming.
+r4mi4te.
+rmi2t
+r3m2oc
+r1mo
+rmol4
+r1mu
+rmu3l2i
+r2n2
+rn3ab
+rn1a
+r3na2c
+r5nad
+rn5a2r
+rn3ate
+rn5a2t3in
+rnati4
+rn5e2dl4
+r2n2ed
+r3nel
+r3ne4ss
+rn5est2
+r3net
+r3ney
+r5n2i1a2
+rn1i
+rn5ib
+r3nic
+rn3in
+rn4ine
+r1nis
+rn3ist2
+rn2i5v
+rn3iz
+rn5n4
+r3n2oc
+r5n2o1g
+rnt4
+r5n4uc4
+rn2u
+r5nut
+4ro.
+ro4b2e
+rob3le
+ro2bl2
+ro5br4
+5roc1c4
+r2oc
+ro3cu
+r2od
+ro3do
+ro3dy4n1
+ro2d2y
+ro1fe
+ro3gn2
+r2o1g
+4r2oi
+ro3i4c
+ro2i4d3
+ro3l2a
+r4o2l2ed
+rol5ite
+rol2it
+ro3ly
+romant4
+r2om
+ro1ma
+ro1ma2n
+ro5mel
+rom2e
+ro3m2i2t
+rom1i
+romole2c5
+ro1mo
+rom4p
+ro3mu
+ron4a2c
+ron1a
+4ronal
+ro5nate
+ron5ch
+ron1c
+ron4do
+ro4nd
+ron2g5i
+ro4ng
+r5onm2e
+ron3m
+ro1no
+ron4ton5
+r2ont
+ron1t2o
+r2oo4
+1ro2o4m
+5ro2o2t
+r2op
+4rop.
+ro3pel
+rop4in4e
+rop1i
+r4o1pr2
+r5opte
+r1o2p1t2
+ror5d
+4r2or2e
+r4osa
+ro3s2i4a2
+ro5s2ol
+4ro4ss
+ro5stat
+r4osta
+rost2
+ros4ti
+ros5tit
+ro3tat
+r2ot
+ro1te
+ro4ter1
+ro3tu
+5r4oue
+ro4u2
+roul3
+round5er1
+r2oun1
+rou4n2d
+rounde2
+rou5sel
+r2ouse
+4rou4ss4
+r4out
+r4ow
+row3er1
+4ro4x
+rpas2s5in
+r1p4as
+rpa4ss2
+rp3at
+rpe2
+r3pent
+rp5er.
+rper1
+r2ph
+rph5e4
+r3phol
+r1pho
+rp3i4ng
+rp5is
+rpol3a
+r1po
+r2p5o4u2
+rpr2e4
+r1pr2
+rpre4t5er3
+r3pu
+r1q
+4r1r4
+rr2a4h
+rran5g2i
+rra2n
+rra4ng
+rr2ap4
+rre2l
+rr2e
+r4reo4
+rrhe3
+rrh2
+r3ri
+rric4
+r2r2icu4
+rri4fy.
+rr2i1f
+rri3fy
+rr4in5ge
+rri4ng
+rri4os
+rr2i3o2
+rrob3
+rr2o1g5
+rr2o4t
+r5ru
+r2r2y5
+r3ry1i
+r3rym
+2r1s2
+r4sa4g
+r2sa2l
+r5sal1is
+r5sal1iz
+r2sa2n
+r4sa2r
+r2se
+r3se2a2
+r3sec
+rsel4
+rsell5
+rs3er.
+rser1
+2r1s3e2r1s2
+r3set
+r3sha2
+rs2h
+r3shi
+r4shie2
+r5s2i2a2
+r4s3ib
+r5sie2
+r4sil
+rs3i4ng
+r2sin
+r3s2io4
+r4s1it
+r4s3iv
+rs5li
+r2sl4
+rst1or4
+rst2
+rstrat4
+rstr2
+r3su
+r4sus
+rswea2r4
+rsw2
+rswea2
+rt2
+r2t3ab
+rta4g
+rt3age
+r3ta2r
+r4tar2e
+r2t3c2
+r1t4ed
+r4te2dl4
+r3te2l4
+r5t2e4nd
+rt3en1i
+r5ter3er1
+r2t2er2e4
+rter1
+r5tet
+r5teu
+r4th4ene
+rthe2
+rth2i
+rth5ing.
+rth1in
+rthi4ng
+rth3ri4
+r1t2h2r
+r1t4ic
+r4ticl2
+r5t2i1et
+rtie2
+r5ti2l3a
+r5t4ill2
+rtil5le
+rt5i2ly
+r2t1in
+r3tin1a
+rt3i4ng
+r3titi
+rti5tu
+r2t3iv
+r2t1iz
+rt5let
+r2tl
+rt3li
+r1t4o
+rto5l
+rt5ri2d
+rtr2
+rt5s2i
+r4t1s
+r1tu
+r4tus
+rtwis4
+rt1w
+rt2wi2
+r2u3a2
+r4ub2e
+rub3r4
+ru4ce
+r4uc
+r2ud
+rue4l
+r4uf2
+ru3in
+r2ui2
+ruis5i
+ru2l
+r4um2e
+r4u1mi
+ru4m2or2e
+ru1mo
+run4c2l2
+run1
+run1cu4
+runcul5
+ru4n2d4
+run2e
+ru5net
+ru4n4g
+run4t
+r2u2p
+rup5lic
+rup2l2
+ru3pu
+rur4i
+ru4r
+rus4p
+rust5at
+r4ust2
+rust5ee
+ruste2
+rus5t4ic
+rus4t5u
+ru3tal
+ru3t2i
+r1v2
+r4vanc
+rva2n
+r2ve
+rvel4i
+r2vel
+r3ven
+rv4e1n4e
+rv5er.
+rver1
+rv5ers.
+rve2r1s2
+r3vest2
+r3vet
+r3vey
+rvi4t
+r1w
+2r2y
+ry5er1
+5ry2g1m4
+ry1g
+ry4go
+ry2m4b
+3ryn1go
+ryn1
+ry4ng4
+4ryn4gol
+ryp5a
+r2yp
+ry2t
+ryth4i
+r2z
+2sa.
+2s1ab
+s3a2bl2
+5sack1
+sac4q
+s3a2ct
+sac4te
+sad5i
+sa2d5o
+5sae
+sa4g
+3s2ai2
+sain4t
+5s2ak
+sa2l
+sa5l4ac
+sal2a
+3s2ale
+sa3lie2
+s4al4t
+sa3lu
+s2a4m
+sa5min
+sam1i
+sa1m5o
+sam2p4
+san3a
+sa2n
+san4d2ed
+sa4nd
+sande2
+s4an4e
+san5ga2r
+sa4ng
+sang2a
+san5i3f
+san1i
+2sant
+sant5ri
+san1t4r2
+s3ap
+sa2p3r2
+sa2r5s2
+sa2r
+3sas.
+sa4s3s2
+sassem4
+s2a1t
+sa2te
+s5a2t1iv
+s5a4to2r2y
+sa2to
+sat1or
+s2a2t1u
+1s2au2
+sau5c2i2
+s4a4uc
+sau4r5
+savi2
+s2av
+sa3vo4u2
+sa1vo
+4s3b
+s4bei
+sb2e
+sbe4s2
+s2by3
+sc2
+s1ca
+sca5len
+sc1al
+sc2ale
+s1c2a2p
+scar4c2
+s1ca2r
+sc2av3
+s1ce
+s4c2ed
+4scei
+4s4ces
+s2ch2
+sci2d5
+s1c2i2
+s2c2o2
+scof4
+s4c2oi
+3s4cop4e
+5scopic
+scop1i
+5scripti
+scr2
+scr2ip
+scri2pt2
+2s1cu
+4sc4u4ra.
+s1cu4r
+scur1a
+4scuras5
+2s1d2
+2se.
+se2a2
+s4e2a2m
+seas4
+sea3w
+sec4a
+sec5a2n
+se2c2o2
+secon4
+2s2ed
+se4da
+sed4it
+3se2ed
+3sei
+se2i3g2
+5sel2a
+4s2ele
+se3lec
+selen5
+5self
+2s4e1m2e4
+sem2i
+semi5d
+se1m4o
+se4n5g
+3se4n2s
+sen5sati
+sens2a1t
+sen5sor1i
+sent5ee
+sen1te
+5sen4t3m
+seo5l2o1g
+seo2l
+seo1lo
+se2p
+se1p3a
+sep4si
+se2ps2
+3se2pt2
+sep3ti
+ser4a2n
+ser1
+se5r4en4e2
+s2er2e
+ser3en
+ser4t4o
+sert2
+4ser1vo
+ser1v2
+s2es
+4s4es.
+se5s2h
+s5esta
+sest2
+1set
+5s4eum
+3sev
+sev3e4n
+se1wo4
+3sex
+sex1o2
+3sey
+2s1f
+sfac2t5o
+s1f2a
+sfa2ct2
+sfi4
+sf2or5e
+s1fo
+sfra2n5
+s1fr2
+2s1g4
+s2h
+4sh1ab
+sha2
+sh4abi
+sh1er1
+she2
+sh5et1
+shil5li
+shi4l
+shill2
+sh5i1ne4ss
+sh1in
+sh2in2e
+shine4s
+sh3io2
+5sh2i2p
+s3h2o4n
+4shu4
+sh4y2s4
+sh2y
+si4all2
+s2i1a2
+siast5
+4s1ib
+s3ic1at
+3sic1c4
+2s5icl2
+s2i4cu
+si5cul
+s4i2d
+4sid.
+si4de
+side5l
+sid3en
+si1d5eri
+sider1
+4si4d1s2
+5sid5u4a2
+si1du
+si4e2r1s2
+sie2
+si1er1
+s2i1f4
+si2f5f
+s2i4g
+1sili
+sim4p4ly
+sim1p
+simp2l2
+2sin
+s2ine
+sin5et
+5sing5er1
+s4inge
+si4ng
+s2in3i
+5s4i4n2k
+si5nol
+s2ino
+si3nus
+s2in2u
+1s2io4
+4sio.
+si5o5s
+3s2ip
+si4pr2
+s1is2
+4sis2h
+4si2s1m4
+s4ist3a
+sist2
+si4s1t3o
+s1it
+si4te
+sit5om
+4s1iv
+5s2iva
+s1j
+s2k2
+4sk.
+s5ka2r
+ske2
+s3ket
+s5key
+s3ki1er1
+skie2
+s5ki1es2t2
+sk5i2ly
+ski2l
+sk5ine4s
+sk1in
+4s4k1s
+s3ky3l
+2sl4
+slan2g5i
+sl2a
+sla2n
+sla4ng
+s1lat
+3sl4au2
+slav5eri
+sl2av
+slaver1
+s2le
+s5lea2
+s3let
+s5ley
+s3l1it
+s1l2o3c
+slov5
+s5l4uc
+2s1m4
+s3ma2n
+smas4
+s3men
+sm2e
+sm2i3g
+3sm2ith
+smi2t
+smo4d1
+s1mo
+smu5ta1t2io2
+s1n2
+s2n1a
+2so.
+2s3od
+so2d3o
+so2d2y4
+3soe
+4s3o2i4d
+s2oi
+s2ol
+sol3a
+so5l4a2n
+so2l4er1
+so3lic
+3solve
+solv5er1
+1s2o2m
+soma5to
+so1ma
+so3mat
+3so2me.
+som2e
+so5met1e
+so1me2t
+so3mo
+s2on1a
+son5at
+s4o2ne
+son5or
+s2o2p
+4sor3ie2
+sor1i
+5sor2i3o2
+sor4it
+s5or1iz
+sor3o
+s3o2r2y
+sos4
+4sose
+s4o5th
+s2ot
+3so4u2
+sov5e
+so3vi
+spas1t4
+s1p4as
+spens5a
+spe4n2s
+4speo
+3sperm
+sper1
+s5pero
+spers5a
+spe2r1s2
+sph2
+s3pha2
+3spher1
+sphe4
+spic5ul
+sp2icu
+s2pi2d
+sp5id.
+s5pi1er1
+sp2ie2
+spil4l2
+sp2il
+s2pin
+sp3i4ng
+sp2i5n1i
+spital5
+spit1a
+s1p2l2
+sple2
+s4p4ly
+s2po
+5sp2om
+spon5g2i
+sp4o2n
+spo4ng
+3spo4n1s2
+3spoon
+sp2oo
+spr2u5d
+s1pr2
+s4p4y
+s1r
+sr2e2
+sreg5
+sre1p5u
+sre4s
+4ss
+s1sa
+s5s2a4m2
+s1sel
+s5se4n5g
+s3sent
+ssent5er1
+ssen1te
+ss3er.
+sser1
+s5seri
+ss3e2r1s2
+s5seu
+s3sev3
+s3s2i1a2
+s1sic
+s1s2i1f4
+s2s1in
+ss4in.
+s4s2ine
+ss4is.
+ss1is2
+s3s2it
+ss4ivi
+s4s1iv
+ss5li
+s2sl4
+s2s3m4
+s4s1n2
+s1so
+ssol3u
+ss2ol
+ss4ol1u4b
+s4s2or2e
+ssor5ial
+ssor1i
+ssor2i1a2
+ss5po
+s1su
+ss3w2
+st2
+4st.
+s2t1ab2
+sta3bi
+4s1t2ak
+s4t2ale
+stan2t5iv
+sta2n
+stant2i
+s3tas.
+5stat1i2c
+s2t3c2
+ste2
+ste5a2r
+stea2
+ste5at
+s4te1b
+s4tec
+4s1t4ed
+s4te2dl4
+s4te4d1n2
+4s2t2er2e4
+ster1
+ster4i1a2
+s1teri
+s4tern.
+ster2n2
+s3tero
+st5es4t2
+s2t2es
+s1th
+s4tha4
+s4thu
+s3t2i3a2
+3st2ick1
+st1ic
+s3t2ic1u
+stil5ler1
+st4ill2
+s4ti2ly
+st3i4ng
+st1in
+5s4t2ir
+s5t1iz
+4s2tl
+st3ler1
+st3li
+s4toe
+3ston
+sto2n4e3
+ston4ie2
+ston1i
+s5torat
+st1or
+stor1a
+st4or5ia2n
+stor1i
+stor2i1a2
+s4tose
+s2to4u2
+s4tr4ay
+str2
+str2e4
+strep3
+3st4r4uc
+str2u5d
+2s4t3s
+s1tu
+s4tud
+stu4m
+stur4e
+stu4r
+4st1w
+s4ty
+1styl
+4su.
+su5a2n
+s2ua2
+su4b1
+su2b1t2
+su2ct4
+s4uc
+sud4a
+su3e4t
+su2f3f
+suf2
+sug3
+3s2ui2
+su2i5c
+su5i4ng
+1s2ul
+s4u2m
+su1m3i
+su4n4a4
+sun1
+su5pe
+s2up
+su3pin
+supra3
+su2pr2
+sur4as5
+su4r
+sur1a
+sur3c2
+s4ur1g2
+sur3p2l2
+su5su
+su5z
+2s3v
+svers5a
+sver1
+sve2r1s2
+sves4
+sve2st5i
+svest2
+sw2
+5swee
+swel4l5i
+swell2
+4sw4e2r4ed
+swer1
+sw2er2e
+2s1wo
+s2y
+4sy.
+sy4b2i
+s4y1b
+sy1c
+sy4ce
+sy4c2hr
+sy2ch
+sy4d4
+1syl
+3syn1
+syn5e
+sy5pho
+s2yp
+sy2ph
+syr5i
+2ta.
+2t1ab
+ta5blem
+ta2bl2
+3tabli4
+t2abo2
+ta3bol
+ta4bo4u2
+t4a3ce
+ta5ch2om
+ta2ch
+ta1cho
+ta3ch2y
+ta4ci2d
+t2a1c2i2
+t5ade
+tad4i
+5t2ad1j
+ta5d2or
+ta2do
+tad2r2
+tae5n
+taf4
+tage5o
+ta5g2o1g
+3ta2gr2
+3t2ah
+1t2ai2
+3tail
+2ta2ir
+t4ais
+1t2ak
+tal2c2
+tal5ent
+t2ale
+ta5lep
+t4al2i1a2
+t4al1in
+tal4l3a
+tall2
+5tal1lu
+t2alo4
+t2a3ly4
+tam5ar1i
+t2a2m
+ta1ma2r
+5ta3me2t
+tam2e
+tamor2ph5
+ta1mo
+ta3morp
+tan5at
+ta2n
+tan2a
+tand5er1
+ta4nd
+tande2
+t4ane
+5tanel
+tan5ie2
+tan1i
+t5an1iz
+ta2nt5a2n
+tan2t2a
+t4a4pa
+t2ap
+1tard
+ta2r
+tar5ia.
+tar1i
+tar2i1a2
+tark5i
+tar2k
+tar3n2
+3t2a4r1r4
+tas3i
+t3a2s1m4
+5ta4ss2
+tas4t2
+t2a3sta
+tast5i4c
+t4ateu
+3ta2t1is
+t4a2to.
+ta2to
+tat4o4u2
+t2a2t4r2
+ta1t3ut
+t2a2tu
+tau3t2o
+t2au2
+t5awa
+tawn4
+t4a4x
+4t3b
+2tc2
+t1ca
+tcas4
+tch5e2t2t4
+t2ch
+tche2
+tchet1
+tch5u
+4t1d4
+4te.
+te5cha2
+te2ch
+5tec2h1n2
+te3cr2
+t4ed
+te5d2a
+4ted1d4
+4te1do
+4tee1i
+te2g
+5tegic
+te1g2i
+t3ego
+te2g1r2
+teg3u
+tei4
+te2l
+4t4e4l2ed
+t2ele
+tel5iz
+1tell2
+4te3lo
+3te4ls
+tem3a
+4te1m2e4
+t4e5m4on
+te1mo
+ten4ag
+ten1a
+4te2n3a2r
+4t4ene
+t5en3m
+5tenn1a
+ten1n4
+4ten1o
+te5n2o1g
+tent4a
+te2o
+teo5l
+2tep
+te3pe
+tep5i
+tera4c
+ter1
+t4era4g
+t4era2to
+3ter3b
+5t2erd
+2t2er2e4
+ter3e1b
+ter5ec
+5terel
+te3reo
+3tere4s4
+1teri
+ter3i1a2
+ter5i2d
+ter5i1f
+t4er3in
+ter5iorit
+ter2i3o2
+teri5or
+terior1i
+t4er3i2t
+ter5k4
+5tern3it
+ter2n2
+tern1i
+ter5no
+3te4r1r4
+2t2es
+4t4es.
+tesi4
+t3esq
+t3ess.
+te4ss
+t5ess2es
+tes4t2
+test3a
+5teste2
+test5er1
+test5in
+te2sti
+test5or
+tes5tu
+teti4
+tet1r2
+tet1r5o
+tew3a2r
+te1wa
+3tex
+2t3f
+t3g
+2th.
+tha4
+th5al.
+thal3m2
+4t4he.
+the2
+4th2ea2
+th5eas
+4th2ed
+1th4ei
+3theo
+theo3l
+t4her1
+5ther2ap
+th5er1c2
+t5h2erd
+4th4e2r4ed
+th2er2e
+th3er2n2
+th3e2r2y
+4t2hi.
+t5hill2
+thi4l
+3th4i4n2k
+th1in
+5th4io2
+th4is.
+th5lo
+t4hl
+2t2h1m2
+th4mi
+th3oli
+4t5h2oo
+4th1o2p1t2
+4thores
+th2or2e
+3th2ot
+5thoug4
+th2o4u2
+1t2h2r
+2t2h1s
+5thu4r
+5thy2m
+th2y
+3thyr4
+th4y2s4
+4ti.
+1t2i2a2
+ti3ab
+2t3ib
+5t4i5bu
+t1ic
+t3ic.
+tic5as
+t2i1c2i2
+tici5a2r
+tic2i1a2
+3t4i3cin
+t4icity
+ti3col
+t2i2c2o2
+t2ic1u
+4ticule
+t3id.
+ti2d
+t4id1a
+3tidi
+ti3die2
+t5i4d1s2
+3t2i2en
+tie2
+1t2i1f2
+ti3fe
+4ti2ff
+4ti4f3ic.
+3t4i1g2i
+t2ig
+ti3g2i5o2
+4ti2g1m4
+5tigu
+ti4ka
+t2ik2
+ti4let
+5til1in
+t4ill2
+til4l5ag
+til1l2a
+t4ilt
+1tim
+tim1a
+5ti1me2t4
+tim2e
+t1in
+5ti5nad
+tin1a
+4t4i2n2ed
+tin3et
+ti4ng5i4ng
+t4in2g2i
+ti4ng
+3t2in1n4
+4ti4n1s2
+t4int
+tin4te
+tin5t4ed
+tint5er1
+tin3ue
+t2in2u
+1t2io2
+ti3oc
+tiol3a
+t4i1ol
+ti5o3mo
+ti2om
+4tionem
+tio2ne
+1t2ip
+ti5plex
+tip2l2
+ti3pli
+t2i4q
+ti5q2ua2
+tiqu4
+t3iris
+t2ir
+tir1i
+2t1is
+3tis1a2n
+ti4sa
+ti2s4c2
+tish5i
+tis2h
+3t2i4s1s
+tis2t2
+5t4iste2
+t4is1tr2
+ti5t4a2n
+tit1a
+tith4e2
+t2ith
+tit5il
+t3i2t1is
+3ti2tl
+ti3tra
+t2itr2
+3t2i1u2
+2t1iv
+tiv5all2
+t2iva
+t3ive
+tiv3is
+2tl
+t1l2a
+tlant4
+tla2n
+5tle1b
+5tle5dr2
+t2l2ed
+3tle1f
+3tlem
+5tlen
+5tletr2
+t1let
+5tlew
+t1li
+tlin4
+4t3m
+t1me2t2
+tm2e
+tm2o4t5
+t1mo
+2t3n2
+t4n2er2e
+tn1er1
+2to.
+toas4
+t2oa2
+to1b
+4toc1c4
+t2oc
+to3de5c
+tod4i
+to5do
+3toe
+1t2o1g
+2t3o2i4d
+t2oi
+5tok
+4to2l2ed
+tol4l2
+tolu5
+to5ly
+to2m3ac
+t2om
+to1ma
+to1ma4n
+tom2at5ol
+to3mat
+toma2to
+to2m4b
+to4m2o1g
+to1mo
+tom5os
+to2n4e
+t4on5ea2
+3ton1n4
+to4n3s2
+top4e
+to5p2i1a2
+top1i
+to4p4os
+to1po
+t1or
+to5r2ad
+tor1a
+4t2or2e
+tor5er1
+tori4as
+tor1i
+tor2i1a2
+to4r5oi
+tor5p
+tor4q
+3tos.
+t4o3s4p
+tos4t2
+to5str2
+to5tal1is
+t2ot
+to5tal1iz
+to3tem
+tot5u
+tou4f2
+to4u2
+5tou4r
+t3ous
+4tov
+to3wa2r
+t3p
+tr2
+tra4c2o2
+4trad1d4
+tr2ad
+4tra5ist2
+tr2ai2
+tra5q
+trar2ch4
+t4rar1c2
+tra2r
+tra5ven
+tr2av
+tra5ve2r1s2
+traver1
+trav5est2
+3tr4ay
+4t4re.
+tr2e
+4t2r4ed
+tre4mo
+tren4
+tr4end5i
+tr2e4nd
+tre5pr2
+tre4s4s
+4trew
+t5r4icl2
+3t2r2icu
+t2rie2
+tri5fli
+tr2i1f
+tr4i2fl2
+t5rifu5g4a
+tri3fu
+2tril
+tri3li
+tri3m2e
+t2rit
+4tr2ix
+t4r2od
+tro5f
+5troo2p
+tr2oo4
+tro4pha2
+tr2op
+tr4o3sp
+t2r2ot
+t5ro1t2o
+tro1v
+3tr2oy
+t4r4uc
+tr2u3i2
+2t4r2y
+tr4y2s4
+4t1s
+t2sc2
+ts4h
+ts2i
+t4sil
+tst4ay4
+tst2
+2t1t4
+tta4
+t3t1ab
+t5ta2n
+t5tas
+t3t4ed
+t4t2er2e4
+tter1
+t5ter3er1
+t5tes4t2
+t2t2es
+t3ti
+tti3tu
+ttitud4
+ttitu5di
+t3t2ler1
+t2tl
+t3t1li
+t5t2oi
+t5t1or
+t3tos
+t4t5s
+t4tu1pe
+tt2up
+t2ty
+4tu.
+t2u1a2
+tu4al5li
+tu1al
+tuall2
+tuar3i4
+tua2r
+tu4bin
+tu1b2i
+tu5bu
+tu5den
+tud4e
+tud5ie2
+tu5en
+4tuf2
+t2u1i2
+tu4is
+2tum.
+3tu1mi
+4tu4m1s
+3tun1
+tu4n4a4
+tu4ne
+tun5it
+tun2i
+tup5let
+t2up
+tup2l2
+tup5lic
+tu5rac
+tu4r
+tur1a
+t4ura2n
+tur2b3a
+tur1b
+tur4d
+turf5i
+tur2f
+5turit
+tur1i
+tur4n2
+5tur5o
+1tut
+4tu2t4iv
+tut2i
+t1w
+t3wa4
+t2wi2
+twi5li
+t3wit
+t3wo
+twon4
+4ty.
+ty4a2
+5ty2ch
+ty4let
+tyle2
+tyl5i
+ty5mi
+1t2yp
+3type
+1tyr1
+2tz2
+t5z2i1a2
+tz1i
+t5z2ie2
+2ua2
+u2a3c2i2
+u2ag
+u2a5h
+u1al
+ua5lu
+uan4o
+ua2n
+uan2t5is
+uant2i
+uant5it
+uar3a
+ua2r
+uar2d
+uar3i
+uari4n
+uar5te2r1s2
+uart2
+uarter1
+uar4t5i
+ua5ter2n2
+u4ater1
+uba4
+ub5b2ly
+u2b1b2
+ub2bl2
+u1b2i
+u4b2icu
+ub3lin
+u2bl2
+ub5lo
+ub3ra
+ubr4
+4uc
+u1c2a
+uc1cen5
+uc1c4
+u4c2e4nd
+u1cen2
+u4ch
+u5c2hr
+uc3l2
+u4c2om
+u1c2o2
+uc2o5t
+uc2tr2
+u2ct
+uc3ub
+uc5ul
+u5cum
+u5d2ac
+ud1al
+ud4e
+ud5e1p
+u4der1
+udev4
+ud4g
+ud4i4cin
+udi1c2i2
+ud3i2ed
+udie2
+u5dinis
+u2d1in
+ud2in1i
+u3d2i3o2
+u5di1t2io2
+u2do
+u5d2oi
+ud5on
+u5d2or
+ue1b4
+u4ed
+uen4o
+uen4ter1
+uen1te
+uer3a
+uer1
+ue4s4s
+uest5rat
+uest4r2
+uest2
+ues5tri
+ue4t
+uf2
+3u1f2a
+u3fl2
+u4fo
+u2ft4
+uga4c
+ug5l2i1f
+u2gl2
+ug2n1i
+u2gn2
+u4go
+ug3ul
+ug3ur1a
+ugu4r
+uhem3
+uhe2
+2ui2
+ui3al
+u2i1a2
+u2ic
+ui3cent5
+u4ice
+ui1cen2
+ui1d5o
+ui2d
+ui2l4a
+uild5er1
+ui3lib
+uil4t
+uin1c5u
+u2inc
+ui4n4s2
+uint4
+uin4ta
+ui5pr2
+u2ip
+uis3er1
+uis4t2
+uisti4
+uit5er1
+ui5val5
+u2iva
+ui3vo
+u2iz
+4ul.
+u1l2a
+u4l1ab
+4ul4ac
+ul5ard
+ula2r
+u5lat
+ul4bo2
+ul3b
+ul3ca
+ul1c2
+ul4ch
+5ulch4e2
+5ulchr2e4
+ul3c2hr
+4ulea2
+u5lee
+u1len4
+4ulen1c2i2
+u5lent
+u1let4
+u2l4ev
+ul2f2a
+ul2i
+ul4i1a2
+u3l4ine
+ul3i4ng
+ul5is2h
+ul1is
+u5liti
+ul1it
+u5lity
+4ull2
+ul4lat
+ul1l2a
+ul4l5ib
+ul1li
+ul4l1is
+ul4l1it
+ul3m2
+u1lo
+u5l2om
+ulph3i
+ulph2
+ul2ph3o
+ulp5i4ng
+ul4po
+2u4ls
+ul3s2i1f4
+u1lu
+ul1v4
+u1ma
+u2m3a2m
+u1ma2r4
+u5mas
+um4bar.
+u2m1b
+umba2r
+um2b2i
+umen4t
+um2e
+u1men
+u1mi
+u4m1ic
+u2m5i1f
+umi4fy
+umi5l2i1a2
+um2il
+umin4a2r
+umin1a
+u4m4i2n2ed
+u4m3i4ng
+u4mor1a
+u1mo
+u4mos
+um2p
+um4pa
+ump3er1
+ump5li
+ump2l2
+um2pt4
+ump5te
+u1mu
+umu4lo
+un1
+u4n3a4
+un5ab
+unabu4
+un4ae
+un4as.
+un2as
+un2ce
+un4dal
+u4nd
+un2da
+un3d2ed
+unde2
+un1de4t
+undeter5m
+undeter2
+un1di4c
+un4die2
+un3do
+un4dus
+un1du
+u3n2er1
+unho5li
+un1h2
+unho4
+un2i
+u1nic
+un4ie2
+un3in
+un4ine
+un2i5p
+uni3s4o
+un3ist2
+un2i1v
+un3iz
+unk5eri
+u4n2k
+unker1
+un5ket
+un3kn2
+2un1n4
+un4nag
+unn1a
+un5o
+un5r
+u4n3s4
+un5s2h2
+un2t2i
+until4
+un2u4
+un3us
+uo3de
+uo3dent4
+u5oros
+u3os
+uo5t4a1t2io2
+u2ot
+u1o4u2
+2up
+u1pat
+u1pe
+u5p4ee
+uper3
+u1ph
+u5pi2d
+up3i4ng
+u4po
+u5pol
+u2pr2
+upr2e4
+u5que4t
+uqu4
+u4r
+ur1a
+4u4ra.
+ur2a4c2i2
+4urae
+ura2g
+4urant2i
+uran2t
+ura2n
+uras5
+urb5i4ng
+ur1b
+urb2i
+ur2bin
+ur2c2
+urc3a
+ur5den.
+ur5den1i
+ur5die2
+ur4du
+ur3ea4
+ur2e
+ur5ee
+ur1er1
+ur3e2r1s2
+ur1e2t
+ur3e2t2t4
+ur2f
+ur3f2a
+ur1i
+u5r2i5cu
+ur4ie.
+urie2
+ur5ifie2
+ur2i1f
+uril4
+ur4ili
+ur5ion
+ur2i3o2
+uri4os.
+ur2l5er1
+ur1le
+ur5lie2
+url5i4ng
+ur1m4
+urn3al
+ur2n2
+urn1a
+urn3er1
+ur4n5s
+ur1o
+ur2o4d
+ur5o4m
+ur5ot
+uroti4
+ur3pen5t
+urpe2
+ur2ph4
+u2r2s2
+ur2s5a2l
+urs5er1
+ur2se
+ur3s2h
+urs3or
+ur5ta
+urt2
+ur1te
+ur5t2es
+urth2
+ur3the2
+urti4
+ur1u
+ur4va
+ur1v2
+u3sad
+us3a4g
+us3a2l
+us4ap
+us3a1t
+2usc2
+us4ca2n
+us1ca
+ush5a2
+us2h
+us5ia2n
+us2i1a2
+usil5
+u4s1in
+usk5er1
+us2k2
+uske2
+us1p
+us4pa
+uss4e
+u4ss
+4ust2
+us3tac
+us5ta2n
+ust4ic
+us5t2i1c2i2
+ust5ig
+ust3il
+us1to4
+us1tr2
+us4tr2e4
+usur4e
+usu4r
+us5ur1i
+u3t4ane
+uta2n
+utch4e2
+u2tc2
+ut2ch
+ut5en1i
+u5te2o
+u4t2er2e4
+uter1
+ut2i
+u3tie2
+ut3i4ng
+ut1in
+u5t2in1i
+u3t2io2
+ut5i2s1m4
+u2t1is
+ut3is2t2
+5u5t1iz
+ut3le
+u2tl
+ut1li4
+ut2o
+u4to5s
+u4t1ra
+utr2
+u4t1s2
+ut5s1m4
+ut4to2n4e
+u2t1t4
+u3tu
+u4tul
+uu4
+uv2
+u4va
+uve2
+uven3
+uv5eri
+uver1
+u5v1in
+ux2o
+uy4a2
+uy5er1
+4va.
+2v3ab
+5vac
+va1c2a
+va5ceo
+vacu1
+v4ad
+3vag3a
+va4ge
+4va2g2e4d
+vager4
+va2g5r2
+v1al.
+1v2ale
+vali2
+va5lie2
+val4ise
+val1is
+5valu
+5val4v
+vam4i
+v2a2m
+va5mo
+5van1n4
+va2n
+van2t2a4
+4van2tl
+var4is
+va2r
+var1i
+4vas2e
+vas5el5
+v5a4so
+v2ast3a
+vast2
+v4at.
+5vatee
+v4at4in1a
+va2t3in
+4v2a2tu
+2ve.
+ve2ct4
+ve3g
+3vei
+2vel
+vel3at
+vel2a
+4v2ele
+v3e2l1er1
+ve5l4ine
+v1ell2
+v4el1l2a
+vel5ler1
+vel3li
+vel5op1i
+ve4n4al
+ven1a
+ven4do
+v2e4nd
+v4e1ne
+ve5n2i1a2
+ven1i
+ven2t5o
+ven4tr2
+4v4en2u
+v5en5ue
+5ve3o
+5ver1b
+ver1
+verde5v
+v2erd
+4v4er2e4
+ver5ea4
+ver3ei4
+v5er3ie2
+ver3m4
+ver4ne
+ver2n2
+5ver2se
+ve2r1s2
+4v4es.
+4vi.
+5vi3al1it
+v2i1a2
+vi4a2tr2
+vi3at
+vi1b4
+vic2
+vi4ca
+vi5car1i
+v2i1ca2r
+vice3r1
+v4ice
+5vi2ct2
+5v2icu
+5vider1
+vi2d
+vi2gn3
+v2ig
+vi4l
+vil3i
+3vil2i4a2
+v5ilise
+vil1is
+v5ilize
+vil1iz
+vil5lin
+vill2
+vil1li
+vim4
+5vim2e
+2v1in
+vin4a2c
+vin1a
+3vin1c2i2
+v2inc
+vin2e
+5vinit
+v2in1i
+v5in1iz
+vint4
+vin5ta
+3v2i1o2
+v4i1ol3
+vi5om
+5v2i3p
+vir2e4
+v2ir
+vi5r2i4d
+vir1i
+vir3u
+5visecti
+v4i1sec
+vise2ct
+5vi1s2io4
+v3i2s1m4
+2v5ist2
+vi2t
+vit2a
+vi3tal
+vi5te2l
+v5it1ie2
+v2it1r2
+vi3tu
+v3ity
+viv5al
+v2iva
+viv5or
+vi2vo
+v2i5zo
+v1iz
+1vo
+2vo.
+vo2l
+vo5li1t2io2
+vol2it
+vol4u1b2i
+v4ol1ub
+volv4
+4von
+vo5rac
+vor1a
+3vor1c2
+4v2or2e
+3voro
+vo3ta2r
+v2ot
+2vow
+vr4
+v5ra4
+v5ri
+v5ro
+vr2ot4
+4vs
+v3ur2e
+vu4r
+2vv2
+v5ver1
+v5vi
+4vy
+4w1ab
+wag3o
+wais4
+w2ai2
+w3al.
+wal2l5er1
+wall2
+w3a4ls
+wan5gli
+wa2n
+wa4ng
+wan2gl2
+wank5er1
+wa4n2k
+war5d2ed
+wa2r
+ward5er1
+ward5r2
+war4f
+war4te
+wart2
+war5th2i
+war2th
+wa4ss4
+was4t2
+wa1te
+wav4in2e
+w2av
+wa2v1in
+w1b4
+w4bon
+wbo2
+w5c
+w5die2
+w3dr2
+we4b
+w4ed
+3we2ed
+5wei
+weight5i
+we2ig2
+wei2gh
+weigh2t
+we2ir4
+wel3i
+wel1iz4
+wel4iz3i2
+wel4li
+well2
+went4
+wes4
+west3
+w5e4st.
+w5f
+wh2
+w5hi2d
+wi2
+wid4e
+wi2d
+wi5er1
+wie2
+wil2l5in
+will2
+wil1li
+wim2p
+win2e
+wing5er1
+w4inge
+wi4ng
+win4tr2
+3w4ise
+with5eri
+w2ith
+wit4her1
+withe2
+w3l2a
+w2l1er1
+wl1i
+wl4ie2
+w1m
+1wo
+wol4
+wol5ver1
+3w2om
+w2on2t
+word5i
+wot2ch4
+w2ot
+wo2tc2
+w2oun4
+wo4u2
+wp5in
+wra4
+ws5i4ng
+w2sin
+w5ster1
+wst2
+wste2
+wt4
+w5te
+w3to
+wy2
+wz4
+x1a
+x4a2ch
+x4ade
+x2ag
+x3a2g1g
+xa5me2t
+x2a2m
+xam2e
+x3am1i
+xa4n5d
+xa2n
+xan1o4
+x2as
+xas5p
+x3c4
+xc2av3
+xcor5
+x1c2o2
+xe4
+x1ec
+xec3r2
+xe5cu3t2io2
+xecut2i
+xecut5o
+x2e2d
+x5e2dl4
+x5e4d1n2
+x5eg
+x1em
+x3en
+xen4op
+xen1o
+x3er1
+xer4g2
+xer3o
+x1h
+xhort4a
+xh2ort2
+x1i
+x3ia.
+x2i1a2
+x4ias
+xi4c
+x5i1ge
+x2ig
+xim3a
+x4im2e
+xi1me2t4
+x3io2
+x2i4p
+x4it.
+x4i4t1s
+x1o
+x4ode
+x5om
+xo4mat
+xo1ma
+xo4n
+x4os
+xotr2op4
+x2ot
+x4o1tr2
+x3p
+xpel4
+xp4o5n2
+x1po
+xp2oun4
+xpo4u2
+x1s2
+x1t2
+x4t4ed
+xtens5o
+xte4n2s
+x1ter3i
+xter1
+xter4m3
+xter2n3
+x4th
+xti4
+xtr2a5d
+xtr2
+xtr2a3v
+xtr2e4
+xu4o
+x1u4r
+xur4b
+x5us
+x5w
+xx4
+x4y2s4
+xy3t
+y1a2
+y5ac
+1y2a2r
+3yard
+yas4i
+4y1b
+yb2i
+yc2a5m
+y5chede2
+y2ch
+y4ch2ed
+yche2
+ych5is
+y3cho
+y4chose
+yc1l2
+ycl2a2m4
+ycl2a
+y4coli
+y1c2o2
+y4coll2
+yc2om4
+y2cos
+y1d4
+yda4
+yder4
+ydro5s
+ydr2
+y4dro4u2
+y3ee
+yel5o
+y3en
+y1er1
+y3e4st.
+yest2
+yes5te2
+y5e2t2t4
+y5f
+y1g
+y1g2i2
+yg2i5a2
+y3gl2
+yg2o4i
+y1h
+y1i
+y3in
+yle2
+ylin5de2
+yl2i4n4d
+yllab5i
+yll2
+yl1l2a
+yll1ab
+yl3os
+yl5o4u2
+y1m2e4
+y3men
+y5me2t
+y5m2i1a2
+ym5in
+ym2ot4
+y1mo
+ym4pha2
+ym1p
+yn1
+yn5ago4
+yn1a
+yna4nd5
+yna2n
+yn5ap4
+yn5ast2
+yn2as
+yn4c2i2
+y4nd4
+yn2e
+yn3er1
+y4ng4
+yn4gol
+yn1go
+yni4c
+yn1i
+y2n4y2
+y1o2
+yo3d
+yo4g4i4s
+y2o1g
+yo3g2i
+y2oun4
+yo4u2
+you4ng5
+2yp
+yp5al
+yper3
+y5p2er2e
+y4p4eri
+y4pero
+y4pet
+y2ph
+yph4e4
+yph3i
+y4p1i
+y2p1n
+y1po1
+y4po4x
+y2pr2
+yp5ri
+yp4si
+y2ps2
+yp5sy5f
+yps2y
+ypt3a
+y2pt2
+y5pu
+y3rag
+yr3at
+yr3ic
+y5r2ig
+yr3is
+yr3i4t
+yr5o1lo
+y4r4r4
+y2r4s2
+yr5u
+4y2s
+ys5a4g
+ys5a1t
+y3s2c2
+y3s2h
+ys1ic
+y2s3in
+y1s2i4o4
+yso5
+ys4so
+y4ss
+ys1t2
+ys4to
+y3u
+yv4
+y3w
+yz5er1
+yzy4
+z1a1
+2za.
+za4bi
+z1ab
+z2a2i2
+z4as
+za4te
+zd4
+ze1b4
+z2e4d
+zen4a
+z5e4ng
+zer5a
+zer1
+z3et4
+z1i
+zib5
+5zic4
+z2ie2
+zi5m
+zin4c3i2
+z2inc
+z3i4ng
+z4in2g5i
+z4is
+3zlem
+z3ler1
+z3li
+4zo.
+5z2oa2
+zo3a2n
+3z2oo2
+zo3ol
+zo3on
+zo5o2p
+zo5oti
+zo2o2t
+zo5p
+z2ot2
+z5s
+5zum
+4zy.
+zz2
+z3za2r
+zz1a1
+z5z4as
+z3z2ie2
+zz1i
+zzo3
+z5z2ot2
diff --git a/lingucomponent/source/hyphenator/altlinuxhyph/hyphtabs/substrings.pl b/lingucomponent/source/hyphenator/altlinuxhyph/hyphtabs/substrings.pl
new file mode 100755
index 000000000000..2f27b6b8e95d
--- /dev/null
+++ b/lingucomponent/source/hyphenator/altlinuxhyph/hyphtabs/substrings.pl
@@ -0,0 +1,102 @@
+#!/usr/bin/perl
+# A utility for finding substring embeddings in patterns
+
+$fn = $ARGV[0];
+if (!-e $fn) { $fn = "hyphen.us"; }
+open HYPH, $fn;
+open OUT, ">$ARGV[1]";
+
+while (<HYPH>)
+{
+ if (/^\%/) {
+ #comment, ignore
+ } elsif (/^(.+)\%/) {
+ $origpat = $1;
+ $pat = $1;
+ $pat =~ s/\d//g;
+ push @patlist, $pat;
+ $pattab{$pat} = $origpat;
+ } elsif (/^(.+)$/) {
+ $origpat = $1;
+ $pat = $1;
+ $pat =~ s/\d//g;
+ push @patlist, $pat;
+ $pattab{$pat} = $origpat;
+ }
+}
+
+foreach $pat (@patlist) {
+ $patsize = length $pat;
+ for $i (0..$patsize - 1) {
+ for $j (1..$patsize - $i) {
+ $subpat = substr ($pat, $i, $j);
+# print "$pattab{$pat} $i $j $subpat $pattab{$subpat}\n";
+ if (defined $pattab{$subpat}) {
+ print "$pattab{$subpat} is embedded in $pattab{$pat}\n";
+ $newpat = substr $pat, 0, $i + $j;
+ if (!defined $newpattab{$newpat}) {
+ $newpattab{$newpat} =
+ substr ($pat, 0, $i).$pattab{$subpat};
+ $ss = substr ($pat, 0, $i);
+ print "$ss+$pattab{$subpat}\n";
+ push @newpatlist, $newpat;
+ } else {
+ $tmp = $newpattab{$newpat};
+ $newpattab{$newpat} =
+ combine ($newpattab{$newpat}, $pattab{$subpat});
+ print "$tmp + $pattab{$subpat} -> $newpattab{$newpat}\n";
+ }
+ }
+ }
+ }
+}
+
+foreach $pat (@newpatlist) {
+ print OUT $newpattab{$pat}."\n";
+}
+
+#convert 'n1im' to 0n1i0m0 expresed as a list
+sub expand {
+ my ($pat) = @_;
+ my $last = '.';
+ my @exp = ();
+
+ foreach $c (split (//, $pat)) {
+ if ($last =~ /[\D]/ && $c =~ /[\D]/) {
+ push @exp, 0;
+ }
+ push @exp, $c;
+ $last = $c;
+ }
+ if ($last =~ /[\D]/) {
+ push @exp, 0;
+ }
+ return @exp;
+}
+
+# Combine two patterns, i.e. .ad4der + a2d becomes .a2d4der
+# The second pattern needs to be a substring of the first (modulo digits)
+sub combine {
+ my @exp = expand shift;
+ my @subexp = expand shift;
+ my $pat1, $pat2;
+ my $i;
+
+ $pat1 = join ('', map { $_ =~ /\d/ ? () : $_ } @exp);
+ $pat2 = join ('', map { $_ =~ /\d/ ? () : $_ } @subexp);
+
+ for $i (0..length ($pat1) - length ($pat2)) {
+ if (substr ($pat1, $i, length $pat2) eq $subpat) {
+ for ($j = 0; $j < @subexp; $j += 2) {
+# print ("$i $j $subexp[$j] $exp[2 * $i + $j]\n");
+ if ($subexp[$j] > $exp[2 * $i + $j]) {
+ $exp[2 * $i + $j] = $subexp[$j];
+ }
+ }
+ print ("$pat1 includes $pat2 at pos $i\n");
+ }
+ }
+ return join ('', map { $_ eq '0' ? () : $_ } @exp);
+}
+
+
diff --git a/lingucomponent/source/lingutil/makefile.mk b/lingucomponent/source/lingutil/makefile.mk
new file mode 100644
index 000000000000..9cce26d9a4cb
--- /dev/null
+++ b/lingucomponent/source/lingutil/makefile.mk
@@ -0,0 +1,105 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.2 $
+#
+# last change: $Author: hr $ $Date: 2003-03-26 13:02:23 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 by Sun Microsystems, Inc.
+# 901 San Antonio Road, Palo Alto, CA 94303, USA
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License version 2.1, as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ = ..$/..
+
+PRJNAME = lingucomponent
+TARGET = ulingu
+USE_DEFFILE=TRUE
+
+#----- Settings ---------------------------------------------------------
+
+.INCLUDE : settings.mk
+
+
+all_target: ALLTAR DICTIONARY
+
+
+SLOFILES= \
+ $(SLO)$/dictmgr.obj \
+ $(SLO)$/csutil.obj
+
+
+#SHL1TARGET= $(TARGET)
+SHL1TARGET= $(TARGET)$(UPD)$(DLLPOSTFIX)
+
+SHL1STDLIBS=
+
+# build DLL
+SHL1DEPN=
+SHL1IMPLIB= i$(TARGET)
+SHL1LIBS= $(SLB)$/$(TARGET).lib
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+DEF1NAME= $(SHL1TARGET)
+
+
+DIC2BIN= \
+ dictionary.lst
+
+
+DICTIONARY :
+ +$(COPY) $(foreach,i,$(DIC2BIN) $i) $(BIN)
+
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
diff --git a/lingucomponent/source/spellcheck/spell/exports.dxp b/lingucomponent/source/spellcheck/spell/exports.dxp
new file mode 100644
index 000000000000..b0f85bf7bebf
--- /dev/null
+++ b/lingucomponent/source/spellcheck/spell/exports.dxp
@@ -0,0 +1,3 @@
+component_getFactory
+component_getImplementationEnvironment
+component_writeInfo
diff --git a/lingucomponent/source/spellcheck/spell/makefile.mk b/lingucomponent/source/spellcheck/spell/makefile.mk
new file mode 100644
index 000000000000..1523323d58b8
--- /dev/null
+++ b/lingucomponent/source/spellcheck/spell/makefile.mk
@@ -0,0 +1,185 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.6 $
+#
+# last change: $Author: hr $ $Date: 2003-03-26 13:03:01 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 by Sun Microsystems, Inc.
+# 901 San Antonio Road, Palo Alto, CA 94303, USA
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License version 2.1, as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ = ..$/..$/..
+
+PRJNAME = lingucomponent
+TARGET = spell
+ENABLE_EXCEPTIONS=TRUE
+USE_DEFFILE=TRUE
+
+.IF "$(MYSPELLLIB)"==""
+.IF "$(GUI)"=="UNX"
+MYSPELLLIB=-lmyspell
+.ENDIF # unx
+.IF "$(GUI)"=="WNT"
+MYSPELLLIB=libmyspell.lib
+.ENDIF # wnt
+.ENDIF
+
+.IF "$(ULINGULIB)"==""
+.IF "$(GUI)"=="UNX"
+ULINGULIB=-lulingu$(UPD)$(DLLPOSTFIX)
+.ENDIF # unx
+.IF "$(GUI)"=="WNT"
+ULINGULIB=$(LIBPRE) ulingu.lib
+.ENDIF # wnt
+.ENDIF
+
+
+
+
+#----- Settings ---------------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+
+UNOUCRDEP= $(SOLARBINDIR)$/types.rdb
+UNOUCRRDB= $(SOLARBINDIR)$/types.rdb
+
+UNOTYPES=\
+ com.sun.star.linguistic2.DictionaryEvent\
+ com.sun.star.linguistic2.DictionaryEventFlags\
+ com.sun.star.linguistic2.DictionaryListEvent\
+ com.sun.star.linguistic2.DictionaryListEventFlags\
+ com.sun.star.linguistic2.DictionaryType\
+ com.sun.star.linguistic2.LinguServiceEventFlags\
+ com.sun.star.linguistic2.SpellFailure\
+ com.sun.star.linguistic2.XDictionary\
+ com.sun.star.linguistic2.XDictionary1\
+ com.sun.star.linguistic2.XDictionaryEntry\
+ com.sun.star.linguistic2.XDictionaryEventListener\
+ com.sun.star.linguistic2.XDictionaryList\
+ com.sun.star.linguistic2.XDictionaryListEventListener\
+ com.sun.star.linguistic2.XHyphenatedWord\
+ com.sun.star.linguistic2.XHyphenator\
+ com.sun.star.linguistic2.XLinguServiceEventBroadcaster\
+ com.sun.star.linguistic2.XLinguServiceEventListener\
+ com.sun.star.linguistic2.XLinguServiceManager\
+ com.sun.star.linguistic2.XMeaning\
+ com.sun.star.linguistic2.XPossibleHyphens\
+ com.sun.star.linguistic2.XSearchableDictionaryList\
+ com.sun.star.linguistic2.XSpellAlternatives\
+ com.sun.star.linguistic2.XSpellChecker\
+ com.sun.star.linguistic2.XSupportedLocales\
+ com.sun.star.linguistic2.XThesaurus
+
+
+CXXFLAGS += -I..$/myspell -I..$/..$/lingutil
+CFLAGSCXX += -I..$/myspell -I..$/..$/lingutil
+CFLAGSCC += -I..$/myspell -I..$/..$/lingutil
+
+.IF "$(header)" == ""
+
+EXCEPTIONSFILES= \
+ $(SLO)$/sprophelp.obj\
+ $(SLO)$/sspellimp.obj
+
+SLOFILES= \
+ $(SLO)$/sprophelp.obj\
+ $(SLO)$/sreg.obj\
+ $(SLO)$/sspellimp.obj
+
+
+SHL1TARGET= $(TARGET)$(UPD)$(DLLPOSTFIX)
+
+SHL1STDLIBS= \
+ $(CPPULIB) \
+ $(CPPUHELPERLIB) \
+ $(UNOLIB) \
+ $(VOSLIB) \
+ $(TOOLSLIB) \
+ $(SVTOOLLIB) \
+ $(SVLLIB) \
+ $(VCLLIB) \
+ $(SFXLIB) \
+ $(SALLIB) \
+ $(UCBHELPERLIB) \
+ $(UNOTOOLSLIB) \
+ $(LNGLIB) \
+ $(MYSPELLLIB) \
+ $(ULINGULIB)
+
+
+# build DLL
+SHL1LIBS= $(SLB)$/$(TARGET).lib
+SHL1IMPLIB= i$(TARGET)
+SHL1DEPN= $(SHL1LIBS)
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+.IF "$(OS)"!="MACOSX"
+SHL1VERSIONMAP= $(TARGET).map
+.ENDIF
+
+# build DEF file
+DEF1NAME =$(SHL1TARGET)
+#DEF1DEPN =$(MISC)$/$(SHL1TARGET).flt
+#DEFLIB1NAME =$(TARGET)
+#DEF1DES =Linguistic2 main DLL
+DEF1EXPORTFILE= exports.dxp
+
+.ENDIF
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/lingucomponent/source/spellcheck/spell/spell.map b/lingucomponent/source/spellcheck/spell/spell.map
new file mode 100644
index 000000000000..bf1fbe0696c8
--- /dev/null
+++ b/lingucomponent/source/spellcheck/spell/spell.map
@@ -0,0 +1,8 @@
+LEXPS_1_0 {
+ global:
+ component_getFactory;
+ component_getImplementationEnvironment;
+ component_writeInfo;
+ local:
+ *;
+};
diff --git a/lingucomponent/source/spellcheck/spell/spelldta.cxx b/lingucomponent/source/spellcheck/spell/spelldta.cxx
new file mode 100644
index 000000000000..16ca02576fd5
--- /dev/null
+++ b/lingucomponent/source/spellcheck/spell/spelldta.cxx
@@ -0,0 +1,244 @@
+/*************************************************************************
+ *
+ * $RCSfile: spelldta.cxx,v $
+ *
+ * $Revision: 1.3 $
+ *
+ * last change: $Author: hr $ $Date: 2003-03-26 13:03:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _COM_SUN_STAR_UNO_REFERENCE_H_
+#include <com/sun/star/uno/Reference.h>
+#endif
+
+#include <com/sun/star/linguistic2/SpellFailure.hpp>
+
+#ifndef _TOOLS_DEBUG_HXX //autogen wg. DBG_ASSERT
+#include <tools/debug.hxx>
+#endif
+#ifndef _UNOTOOLS_PROCESSFACTORY_HXX_
+#include <unotools/processfactory.hxx>
+#endif
+#ifndef _OSL_MUTEX_HXX_
+#include <osl/mutex.hxx>
+#endif
+
+#include "spelldta.hxx"
+#include "lngsvcmgr.hxx"
+
+
+using namespace utl;
+using namespace osl;
+using namespace rtl;
+using namespace com::sun::star;
+using namespace com::sun::star::beans;
+using namespace com::sun::star::lang;
+using namespace com::sun::star::uno;
+using namespace com::sun::star::linguistic2;
+
+namespace linguistic
+{
+
+///////////////////////////////////////////////////////////////////////////
+
+
+#define MAX_PROPOSALS 40
+
+Reference< XSpellAlternatives > MergeProposals(
+ Reference< XSpellAlternatives > &rxAlt1,
+ Reference< XSpellAlternatives > &rxAlt2)
+{
+ Reference< XSpellAlternatives > xMerged;
+
+ if (!rxAlt1.is())
+ xMerged = rxAlt2;
+ else if (!rxAlt2.is())
+ xMerged = rxAlt1;
+ else
+ {
+ INT32 nAltCount1 = rxAlt1->getAlternativesCount();
+ Sequence< OUString > aAlt1( rxAlt1->getAlternatives() );
+ const OUString *pAlt1 = aAlt1.getConstArray();
+
+ INT32 nAltCount2 = rxAlt2->getAlternativesCount();
+ Sequence< OUString > aAlt2( rxAlt2->getAlternatives() );
+ const OUString *pAlt2 = aAlt2.getConstArray();
+
+ INT32 nCountNew = Min( nAltCount1 + nAltCount2, (INT32) MAX_PROPOSALS );
+ Sequence< OUString > aAltNew( nCountNew );
+ OUString *pAltNew = aAltNew.getArray();
+
+ INT32 nIndex = 0;
+ INT32 i = 0;
+ for (int j = 0; j < 2; j++)
+ {
+ INT32 nCount = j == 0 ? nAltCount1 : nAltCount2;
+ const OUString *pAlt = j == 0 ? pAlt1 : pAlt2;
+ for (i = 0; i < nCount && nIndex < MAX_PROPOSALS; i++)
+ {
+ if (pAlt[i].getLength())
+ pAltNew[ nIndex++ ] = pAlt[ i ];
+ }
+ }
+ DBG_ASSERT(nIndex == nCountNew, "lng : wrong number of proposals");
+
+ SpellAlternatives *pSpellAlt = new SpellAlternatives;
+ pSpellAlt->SetWordLanguage( rxAlt1->getWord(),
+ LocaleToLanguage( rxAlt1->getLocale() ) );
+ pSpellAlt->SetFailureType( rxAlt1->getFailureType() );
+ pSpellAlt->SetAlternatives( aAltNew );
+ xMerged = pSpellAlt;
+ }
+
+ return xMerged;
+}
+
+
+///////////////////////////////////////////////////////////////////////////
+
+
+SpellAlternatives::SpellAlternatives()
+{
+ nLanguage = LANGUAGE_NONE;
+ nType = SpellFailure::IS_NEGATIVE_WORD;
+}
+
+
+SpellAlternatives::SpellAlternatives(
+ const OUString &rWord, INT16 nLang,
+ INT16 nFailureType, const OUString &rRplcWord ) :
+ aWord (rWord),
+ nLanguage (nLang),
+ nType (nFailureType),
+ aAlt ( Sequence< OUString >(1) )
+{
+ if (rRplcWord.getLength())
+ aAlt.getArray()[ 0 ] = rRplcWord;
+ else
+ aAlt.realloc( 0 );
+}
+
+
+SpellAlternatives::~SpellAlternatives()
+{
+}
+
+
+OUString SAL_CALL SpellAlternatives::getWord()
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+ return aWord;
+}
+
+
+Locale SAL_CALL SpellAlternatives::getLocale()
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+ return CreateLocale( nLanguage );
+}
+
+
+sal_Int16 SAL_CALL SpellAlternatives::getFailureType()
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+ return nType;
+}
+
+
+sal_Int16 SAL_CALL SpellAlternatives::getAlternativesCount()
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+ return (INT16) aAlt.getLength();
+}
+
+
+Sequence< OUString > SAL_CALL SpellAlternatives::getAlternatives()
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+ return aAlt;
+}
+
+
+void SpellAlternatives::SetWordLanguage(const OUString &rWord, INT16 nLang)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+ aWord = rWord;
+ nLanguage = nLang;
+}
+
+
+void SpellAlternatives::SetFailureType(INT16 nTypeP)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+ nType = nTypeP;
+}
+
+
+void SpellAlternatives::SetAlternatives( const Sequence< OUString > &rAlt )
+{
+ MutexGuard aGuard( GetLinguMutex() );
+ aAlt = rAlt;
+}
+
+
+///////////////////////////////////////////////////////////////////////////
+
+} // namespace linguistic
+
diff --git a/lingucomponent/source/spellcheck/spell/spelldta.hxx b/lingucomponent/source/spellcheck/spell/spelldta.hxx
new file mode 100644
index 000000000000..703b3603d012
--- /dev/null
+++ b/lingucomponent/source/spellcheck/spell/spelldta.hxx
@@ -0,0 +1,143 @@
+/*************************************************************************
+ *
+ * $RCSfile: spelldta.hxx,v $
+ *
+ * $Revision: 1.3 $
+ *
+ * last change: $Author: hr $ $Date: 2003-03-26 13:03:02 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _LINGUISTIC_SPELLDTA_HXX_
+#define _LINGUISTIC_SPELLDTA_HXX_
+
+
+#ifndef _COM_SUN_STAR_LINGUISTIC2_XSPELLALTERNATIVES_HPP_
+#include <com/sun/star/linguistic2/XSpellAlternatives.hpp>
+#endif
+
+#include <tools/solar.h>
+
+#include <uno/lbnames.h> // CPPU_CURRENT_LANGUAGE_BINDING_NAME macro, which specify the environment type
+#include <cppuhelper/implbase1.hxx> // helper for implementations
+
+
+namespace linguistic
+{
+
+///////////////////////////////////////////////////////////////////////////
+
+::com::sun::star::uno::Reference<
+ ::com::sun::star::linguistic2::XSpellAlternatives >
+ MergeProposals(
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::linguistic2::XSpellAlternatives > &rxAlt1,
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::linguistic2::XSpellAlternatives > &rxAlt2 );
+
+///////////////////////////////////////////////////////////////////////////
+
+
+class SpellAlternatives :
+ public cppu::WeakImplHelper1
+ <
+ ::com::sun::star::linguistic2::XSpellAlternatives
+ >
+{
+ ::com::sun::star::uno::Sequence< ::rtl::OUString > aAlt; // list of alternatives, may be empty.
+ ::rtl::OUString aWord;
+ INT16 nType; // type of failure
+ INT16 nLanguage;
+
+ // disallow copy-constructor and assignment-operator for now
+ SpellAlternatives(const SpellAlternatives &);
+ SpellAlternatives & operator = (const SpellAlternatives &);
+
+public:
+ SpellAlternatives();
+ SpellAlternatives(const ::rtl::OUString &rWord, INT16 nLang, INT16 nFailureType,
+ const ::rtl::OUString &rRplcWord );
+ virtual ~SpellAlternatives();
+
+ // XSpellAlternatives
+ virtual ::rtl::OUString SAL_CALL
+ getWord()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::lang::Locale SAL_CALL
+ getLocale()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL
+ getFailureType()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL
+ getAlternativesCount()
+ throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL
+ getAlternatives()
+ throw(::com::sun::star::uno::RuntimeException);
+
+ // non-interface specific functions
+ void SetWordLanguage(const ::rtl::OUString &rWord, INT16 nLang);
+ void SetFailureType(INT16 nTypeP);
+ void SetAlternatives(
+ const ::com::sun::star::uno::Sequence< ::rtl::OUString > &rAlt );
+};
+
+
+///////////////////////////////////////////////////////////////////////////
+
+} // namespace linguistic
+
+#endif
+
diff --git a/lingucomponent/source/spellcheck/spell/sprophelp.cxx b/lingucomponent/source/spellcheck/spell/sprophelp.cxx
new file mode 100644
index 000000000000..3ca24603beb0
--- /dev/null
+++ b/lingucomponent/source/spellcheck/spell/sprophelp.cxx
@@ -0,0 +1,411 @@
+/*************************************************************************
+ *
+ * $RCSfile: sprophelp.cxx,v $
+ *
+ * $Revision: 1.3 $
+ *
+ * last change: $Author: hr $ $Date: 2003-03-26 13:03:03 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#include <linguistic/misc.hxx>
+
+#include "sprophelp.hxx"
+#include <linguistic/lngprops.hxx>
+
+#ifndef _TOOLS_DEBUG_HXX //autogen wg. DBG_ASSERT
+#include <tools/debug.hxx>
+#endif
+
+#include <com/sun/star/linguistic2/LinguServiceEvent.hpp>
+#include <com/sun/star/linguistic2/LinguServiceEventFlags.hpp>
+#include <com/sun/star/linguistic2/XLinguServiceEventListener.hpp>
+
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+#ifndef _OSL_MUTEX_HXX_
+#include <osl/mutex.hxx>
+#endif
+
+//using namespace utl;
+using namespace osl;
+using namespace rtl;
+using namespace com::sun::star;
+using namespace com::sun::star::beans;
+using namespace com::sun::star::lang;
+using namespace com::sun::star::uno;
+using namespace com::sun::star::linguistic2;
+using namespace linguistic;
+
+
+#define A2OU(x) ::rtl::OUString::createFromAscii( x )
+
+///////////////////////////////////////////////////////////////////////////
+
+
+PropertyChgHelper::PropertyChgHelper(
+ const Reference< XInterface > & rxSource,
+ Reference< XPropertySet > &rxPropSet,
+ const char *pPropNames[], USHORT nPropCount ) :
+ xMyEvtObj (rxSource),
+ xPropSet (rxPropSet),
+ aPropNames (nPropCount),
+ aLngSvcEvtListeners (GetLinguMutex())
+{
+ OUString *pName = aPropNames.getArray();
+ for (INT32 i = 0; i < nPropCount; ++i)
+ {
+ pName[i] = A2OU( pPropNames[i] );
+ }
+}
+
+
+PropertyChgHelper::PropertyChgHelper( const PropertyChgHelper &rHelper ) :
+ aLngSvcEvtListeners (GetLinguMutex())
+{
+ xPropSet = rHelper.xPropSet;
+ aPropNames = rHelper.aPropNames;
+ AddAsPropListener();
+
+ xMyEvtObj = rHelper.xMyEvtObj;
+}
+
+
+PropertyChgHelper::~PropertyChgHelper()
+{
+}
+
+
+void PropertyChgHelper::AddAsPropListener()
+{
+ if (xPropSet.is())
+ {
+ INT32 nLen = aPropNames.getLength();
+ const OUString *pPropName = aPropNames.getConstArray();
+ for (INT32 i = 0; i < nLen; ++i)
+ {
+ if (pPropName[i].getLength())
+ xPropSet->addPropertyChangeListener( pPropName[i], this );
+ }
+ }
+}
+
+void PropertyChgHelper::RemoveAsPropListener()
+{
+ if (xPropSet.is())
+ {
+ INT32 nLen = aPropNames.getLength();
+ const OUString *pPropName = aPropNames.getConstArray();
+ for (INT32 i = 0; i < nLen; ++i)
+ {
+ if (pPropName[i].getLength())
+ xPropSet->removePropertyChangeListener( pPropName[i], this );
+ }
+ }
+}
+
+
+void PropertyChgHelper::LaunchEvent( const LinguServiceEvent &rEvt )
+{
+ cppu::OInterfaceIteratorHelper aIt( aLngSvcEvtListeners );
+ while (aIt.hasMoreElements())
+ {
+ Reference< XLinguServiceEventListener > xRef( aIt.next(), UNO_QUERY );
+ if (xRef.is())
+ xRef->processLinguServiceEvent( rEvt );
+ }
+}
+
+
+void SAL_CALL PropertyChgHelper::disposing( const EventObject& rSource )
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+ if (rSource.Source == xPropSet)
+ {
+ RemoveAsPropListener();
+ xPropSet = NULL;
+ aPropNames.realloc( 0 );
+ }
+}
+
+
+sal_Bool SAL_CALL
+ PropertyChgHelper::addLinguServiceEventListener(
+ const Reference< XLinguServiceEventListener >& rxListener )
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ BOOL bRes = FALSE;
+ if (rxListener.is())
+ {
+ INT32 nCount = aLngSvcEvtListeners.getLength();
+ bRes = aLngSvcEvtListeners.addInterface( rxListener ) != nCount;
+ }
+ return bRes;
+}
+
+
+sal_Bool SAL_CALL
+ PropertyChgHelper::removeLinguServiceEventListener(
+ const Reference< XLinguServiceEventListener >& rxListener )
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ BOOL bRes = FALSE;
+ if (rxListener.is())
+ {
+ INT32 nCount = aLngSvcEvtListeners.getLength();
+ bRes = aLngSvcEvtListeners.removeInterface( rxListener ) != nCount;
+ }
+ return bRes;
+}
+
+///////////////////////////////////////////////////////////////////////////
+
+static const char *aSP[] =
+{
+ UPN_IS_GERMAN_PRE_REFORM,
+ UPN_IS_IGNORE_CONTROL_CHARACTERS,
+ UPN_IS_USE_DICTIONARY_LIST,
+ UPN_IS_SPELL_UPPER_CASE,
+ UPN_IS_SPELL_WITH_DIGITS,
+ UPN_IS_SPELL_CAPITALIZATION
+};
+
+
+PropertyHelper_Spell::PropertyHelper_Spell(
+ const Reference< XInterface > & rxSource,
+ Reference< XPropertySet > &rxPropSet ) :
+ PropertyChgHelper ( rxSource, rxPropSet, aSP, sizeof(aSP) / sizeof(aSP[0]) )
+{
+ SetDefault();
+ INT32 nLen = GetPropNames().getLength();
+ if (rxPropSet.is() && nLen)
+ {
+ const OUString *pPropName = GetPropNames().getConstArray();
+ for (INT32 i = 0; i < nLen; ++i)
+ {
+ BOOL *pbVal = NULL,
+ *pbResVal = NULL;
+
+ if (A2OU( UPN_IS_GERMAN_PRE_REFORM ) == pPropName[i])
+ {
+ pbVal = &bIsGermanPreReform;
+ pbResVal = &bResIsGermanPreReform;
+ }
+ else if (A2OU( UPN_IS_IGNORE_CONTROL_CHARACTERS ) == pPropName[i])
+ {
+ pbVal = &bIsIgnoreControlCharacters;
+ pbResVal = &bResIsIgnoreControlCharacters;
+ }
+ else if (A2OU( UPN_IS_USE_DICTIONARY_LIST ) == pPropName[i])
+ {
+ pbVal = &bIsUseDictionaryList;
+ pbResVal = &bResIsUseDictionaryList;
+ }
+ else if (A2OU( UPN_IS_SPELL_UPPER_CASE ) == pPropName[i])
+ {
+ pbVal = &bIsSpellUpperCase;
+ pbResVal = &bResIsSpellUpperCase;
+ }
+ else if (A2OU( UPN_IS_SPELL_WITH_DIGITS ) == pPropName[i])
+ {
+ pbVal = &bIsSpellWithDigits;
+ pbResVal = &bResIsSpellWithDigits;
+ }
+ else if (A2OU( UPN_IS_SPELL_CAPITALIZATION ) == pPropName[i])
+ {
+ pbVal = &bIsSpellCapitalization;
+ pbResVal = &bResIsSpellCapitalization;
+ }
+
+ if (pbVal && pbResVal)
+ {
+ rxPropSet->getPropertyValue( pPropName[i] ) >>= *pbVal;
+ *pbResVal = *pbVal;
+ }
+ }
+ }
+}
+
+
+PropertyHelper_Spell::~PropertyHelper_Spell()
+{
+}
+
+
+void PropertyHelper_Spell::SetDefault()
+{
+ bResIsGermanPreReform = bIsGermanPreReform = FALSE;
+ bResIsIgnoreControlCharacters = bIsIgnoreControlCharacters = TRUE;
+ bResIsUseDictionaryList = bIsUseDictionaryList = TRUE;
+ bResIsSpellUpperCase = bIsSpellUpperCase = FALSE;
+ bResIsSpellWithDigits = bIsSpellWithDigits = FALSE;
+ bResIsSpellCapitalization = bIsSpellCapitalization = TRUE;
+}
+
+
+void SAL_CALL
+ PropertyHelper_Spell::propertyChange( const PropertyChangeEvent& rEvt )
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ if (GetPropSet().is() && rEvt.Source == GetPropSet())
+ {
+ INT16 nLngSvcFlags = 0;
+ BOOL bSCWA = FALSE, // SPELL_CORRECT_WORDS_AGAIN ?
+ bSWWA = FALSE; // SPELL_WRONG_WORDS_AGAIN ?
+
+ BOOL *pbVal = NULL;
+ switch (rEvt.PropertyHandle)
+ {
+ case UPH_IS_IGNORE_CONTROL_CHARACTERS :
+ {
+ pbVal = &bIsIgnoreControlCharacters;
+ break;
+ }
+ case UPH_IS_GERMAN_PRE_REFORM :
+ {
+ pbVal = &bIsGermanPreReform;
+ bSCWA = bSWWA = TRUE;
+ break;
+ }
+ case UPH_IS_USE_DICTIONARY_LIST :
+ {
+ pbVal = &bIsUseDictionaryList;
+ bSCWA = bSWWA = TRUE;
+ break;
+ }
+ case UPH_IS_SPELL_UPPER_CASE :
+ {
+ pbVal = &bIsSpellUpperCase;
+ bSCWA = FALSE == *pbVal; // FALSE->TRUE change?
+ bSWWA = !bSCWA; // TRUE->FALSE change?
+ break;
+ }
+ case UPH_IS_SPELL_WITH_DIGITS :
+ {
+ pbVal = &bIsSpellWithDigits;
+ bSCWA = FALSE == *pbVal; // FALSE->TRUE change?
+ bSWWA = !bSCWA; // TRUE->FALSE change?
+ break;
+ }
+ case UPH_IS_SPELL_CAPITALIZATION :
+ {
+ pbVal = &bIsSpellCapitalization;
+ bSCWA = FALSE == *pbVal; // FALSE->TRUE change?
+ bSWWA = !bSCWA; // TRUE->FALSE change?
+ break;
+ }
+ default:
+ DBG_ERROR( "unknown property" );
+ }
+ if (pbVal)
+ rEvt.NewValue >>= *pbVal;
+
+ if (bSCWA)
+ nLngSvcFlags |= LinguServiceEventFlags::SPELL_CORRECT_WORDS_AGAIN;
+ if (bSWWA)
+ nLngSvcFlags |= LinguServiceEventFlags::SPELL_WRONG_WORDS_AGAIN;
+ if (nLngSvcFlags)
+ {
+ LinguServiceEvent aEvt( GetEvtObj(), nLngSvcFlags );
+ LaunchEvent( aEvt );
+ }
+ }
+}
+
+
+void PropertyHelper_Spell::SetTmpPropVals( const PropertyValues &rPropVals )
+{
+ // set return value to default value unless there is an
+ // explicitly supplied temporary value
+ bResIsGermanPreReform = bIsGermanPreReform;
+ bResIsIgnoreControlCharacters = bIsIgnoreControlCharacters;
+ bResIsUseDictionaryList = bIsUseDictionaryList;
+ bResIsSpellUpperCase = bIsSpellUpperCase;
+ bResIsSpellWithDigits = bIsSpellWithDigits;
+ bResIsSpellCapitalization = bIsSpellCapitalization;
+ //
+ INT32 nLen = rPropVals.getLength();
+ if (nLen)
+ {
+ const PropertyValue *pVal = rPropVals.getConstArray();
+ for (INT32 i = 0; i < nLen; ++i)
+ {
+ BOOL *pbResVal = NULL;
+ switch (pVal[i].Handle)
+ {
+ case UPH_IS_GERMAN_PRE_REFORM : pbResVal = &bResIsGermanPreReform; break;
+ case UPH_IS_IGNORE_CONTROL_CHARACTERS : pbResVal = &bResIsIgnoreControlCharacters; break;
+ case UPH_IS_USE_DICTIONARY_LIST : pbResVal = &bResIsUseDictionaryList; break;
+ case UPH_IS_SPELL_UPPER_CASE : pbResVal = &bResIsSpellUpperCase; break;
+ case UPH_IS_SPELL_WITH_DIGITS : pbResVal = &bResIsSpellWithDigits; break;
+ case UPH_IS_SPELL_CAPITALIZATION : pbResVal = &bResIsSpellCapitalization; break;
+ default:
+ DBG_ERROR( "unknown property" );
+ }
+ if (pbResVal)
+ pVal[i].Value >>= *pbResVal;
+ }
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////
+
diff --git a/lingucomponent/source/spellcheck/spell/sprophelp.hxx b/lingucomponent/source/spellcheck/spell/sprophelp.hxx
new file mode 100644
index 000000000000..7983a600eb36
--- /dev/null
+++ b/lingucomponent/source/spellcheck/spell/sprophelp.hxx
@@ -0,0 +1,214 @@
+/*************************************************************************
+ *
+ * $RCSfile: sprophelp.hxx,v $
+ *
+ * $Revision: 1.3 $
+ *
+ * last change: $Author: hr $ $Date: 2003-03-26 13:03:03 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _LINGU2_PROPHELP_HXX_
+#define _LINGU2_PROPHELP_HXX_
+
+#include <tools/solar.h>
+
+#include <uno/lbnames.h> // CPPU_CURRENT_LANGUAGE_BINDING_NAME macro, which specify the environment type
+#include <cppuhelper/implbase2.hxx> // helper for implementations
+
+#ifndef _CPPUHELPER_INTERFACECONTAINER_H_
+#include <cppuhelper/interfacecontainer.h>
+#endif
+
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYCHANGELISTENER_HPP_
+#include <com/sun/star/beans/XPropertyChangeListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_PROPERTYVALUES_HPP_
+#include <com/sun/star/beans/PropertyValues.hpp>
+#endif
+
+#include <com/sun/star/linguistic2/XLinguServiceEventBroadcaster.hpp>
+
+namespace com { namespace sun { namespace star { namespace beans {
+ class XPropertySet;
+}}}};
+
+namespace com { namespace sun { namespace star { namespace linguistic2 {
+ struct LinguServiceEvent;
+}}}};
+
+
+using namespace ::rtl;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::linguistic2;
+
+///////////////////////////////////////////////////////////////////////////
+// PropertyChgHelper
+// virtual base class for all XPropertyChangeListener members of the
+// various lingu services.
+// Only propertyChange needs to be implemented.
+
+class PropertyChgHelper :
+ public cppu::WeakImplHelper2
+ <
+ XPropertyChangeListener,
+ XLinguServiceEventBroadcaster
+ >
+{
+ Sequence< OUString > aPropNames;
+ Reference< XInterface > xMyEvtObj;
+ ::cppu::OInterfaceContainerHelper aLngSvcEvtListeners;
+ Reference< XPropertySet > xPropSet;
+
+ // disallow use of copy-constructor and assignment-operator
+ PropertyChgHelper( const PropertyChgHelper & );
+ PropertyChgHelper & operator = ( const PropertyChgHelper & );
+
+public:
+ PropertyChgHelper(
+ const Reference< XInterface > &rxSource,
+ Reference< XPropertySet > &rxPropSet,
+ const char *pPropNames[], USHORT nPropCount );
+ virtual ~PropertyChgHelper();
+
+ // XEventListener
+ virtual void SAL_CALL
+ disposing( const EventObject& rSource )
+ throw(RuntimeException);
+
+ // XPropertyChangeListener
+ virtual void SAL_CALL
+ propertyChange( const PropertyChangeEvent& rEvt )
+ throw(RuntimeException) = 0;
+
+ // XLinguServiceEventBroadcaster
+ virtual sal_Bool SAL_CALL
+ addLinguServiceEventListener(
+ const Reference< XLinguServiceEventListener >& rxListener )
+ throw(RuntimeException);
+ virtual sal_Bool SAL_CALL
+ removeLinguServiceEventListener(
+ const Reference< XLinguServiceEventListener >& rxListener )
+ throw(RuntimeException);
+
+ // non UNO functions
+ void AddAsPropListener();
+ void RemoveAsPropListener();
+ void LaunchEvent( const LinguServiceEvent& rEvt );
+
+ const Sequence< OUString > &
+ GetPropNames() const { return aPropNames; }
+ const Reference< XPropertySet > &
+ GetPropSet() const { return xPropSet; }
+ const Reference< XInterface > &
+ GetEvtObj() const { return xMyEvtObj; }
+};
+
+
+///////////////////////////////////////////////////////////////////////////
+
+
+class PropertyHelper_Spell :
+ public PropertyChgHelper
+{
+ // default values
+ BOOL bIsGermanPreReform;
+ BOOL bIsIgnoreControlCharacters;
+ BOOL bIsUseDictionaryList;
+ BOOL bIsSpellUpperCase;
+ BOOL bIsSpellWithDigits;
+ BOOL bIsSpellCapitalization;
+
+ // return values, will be set to default value or current temporary value
+ BOOL bResIsGermanPreReform;
+ BOOL bResIsIgnoreControlCharacters;
+ BOOL bResIsUseDictionaryList;
+ BOOL bResIsSpellUpperCase;
+ BOOL bResIsSpellWithDigits;
+ BOOL bResIsSpellCapitalization;
+
+
+ // disallow use of copy-constructor and assignment-operator
+ PropertyHelper_Spell( const PropertyHelper_Spell & );
+ PropertyHelper_Spell & operator = ( const PropertyHelper_Spell & );
+
+ void SetDefault();
+
+public:
+ PropertyHelper_Spell(
+ const Reference< XInterface > &rxSource,
+ Reference< XPropertySet > &rxPropSet );
+ virtual ~PropertyHelper_Spell();
+
+ // XPropertyChangeListener
+ virtual void SAL_CALL
+ propertyChange( const PropertyChangeEvent& rEvt )
+ throw(RuntimeException);
+
+ void SetTmpPropVals( const PropertyValues &rPropVals );
+
+ BOOL IsGermanPreReform() const { return bResIsGermanPreReform; }
+ BOOL IsIgnoreControlCharacters() const { return bResIsIgnoreControlCharacters; }
+ BOOL IsUseDictionaryList() const { return bResIsUseDictionaryList; }
+ BOOL IsSpellUpperCase() const { return bResIsSpellUpperCase; }
+ BOOL IsSpellWithDigits() const { return bResIsSpellWithDigits; }
+ BOOL IsSpellCapitalization() const { return bResIsSpellCapitalization; }
+};
+
+///////////////////////////////////////////////////////////////////////////
+
+#endif
+
diff --git a/lingucomponent/source/spellcheck/spell/sreg.cxx b/lingucomponent/source/spellcheck/spell/sreg.cxx
new file mode 100644
index 000000000000..6f6b7ca38259
--- /dev/null
+++ b/lingucomponent/source/spellcheck/spell/sreg.cxx
@@ -0,0 +1,118 @@
+/*************************************************************************
+ *
+ * $RCSfile: sreg.cxx,v $
+ *
+ * $Revision: 1.3 $
+ *
+ * last change: $Author: hr $ $Date: 2003-03-26 13:03:04 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#include <cppuhelper/factory.hxx> // helper for factories
+#ifndef _RTL_STRING_HXX_
+#include <rtl/string.hxx>
+#endif
+
+#include <com/sun/star/registry/XRegistryKey.hpp>
+
+using namespace com::sun::star::lang;
+using namespace com::sun::star::registry;
+
+////////////////////////////////////////
+// declaration of external RegEntry-functions defined by the service objects
+//
+
+extern sal_Bool SAL_CALL SpellChecker_writeInfo(
+ void * /*pServiceManager*/, XRegistryKey * pRegistryKey );
+
+extern void * SAL_CALL SpellChecker_getFactory(
+ const sal_Char * pImplName,
+ XMultiServiceFactory * pServiceManager,
+ void * /*pRegistryKey*/ );
+
+////////////////////////////////////////
+// definition of the two functions that are used to provide the services
+//
+
+extern "C"
+{
+
+sal_Bool SAL_CALL component_writeInfo(
+ void * pServiceManager, XRegistryKey * pRegistryKey )
+{
+ return SpellChecker_writeInfo( pServiceManager, pRegistryKey );
+}
+
+void SAL_CALL component_getImplementationEnvironment(
+ const sal_Char ** ppEnvTypeName, uno_Environment ** ppEnv )
+{
+ *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
+}
+
+void * SAL_CALL component_getFactory(
+ const sal_Char * pImplName, void * pServiceManager, void * pRegistryKey )
+{
+ void * pRet = SpellChecker_getFactory(
+ pImplName,
+ reinterpret_cast< XMultiServiceFactory * >( pServiceManager ),
+ pRegistryKey );
+
+ return pRet;
+}
+
+}
+
+///////////////////////////////////////////////////////////////////////////
+
diff --git a/lingucomponent/source/spellcheck/spell/sspellimp.cxx b/lingucomponent/source/spellcheck/spell/sspellimp.cxx
new file mode 100644
index 000000000000..3c4e996b908a
--- /dev/null
+++ b/lingucomponent/source/spellcheck/spell/sspellimp.cxx
@@ -0,0 +1,735 @@
+/*************************************************************************
+ *
+ * $RCSfile: sspellimp.cxx,v $
+ *
+ * $Revision: 1.9 $
+ *
+ * last change: $Author: hr $ $Date: 2003-03-26 13:03:04 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _COM_SUN_STAR_UNO_REFERENCE_H_
+#include <com/sun/star/uno/Reference.h>
+#endif
+#ifndef _COM_SUN_STAR_LINGUISTIC2_XSEARCHABLEDICTIONARYLIST_HPP_
+#include <com/sun/star/linguistic2/XSearchableDictionaryList.hpp>
+#endif
+
+#include <com/sun/star/linguistic2/SpellFailure.hpp>
+#include <cppuhelper/factory.hxx> // helper for factories
+#include <com/sun/star/registry/XRegistryKey.hpp>
+
+#ifndef _TOOLS_DEBUG_HXX //autogen wg. DBG_ASSERT
+#include <tools/debug.hxx>
+#endif
+#ifndef _UNOTOOLS_PROCESSFACTORY_HXX_
+#include <unotools/processfactory.hxx>
+#endif
+#ifndef _OSL_MUTEX_HXX_
+#include <osl/mutex.hxx>
+#endif
+
+#include <myspell.hxx>
+#include <dictmgr.hxx>
+
+#ifndef _SPELLIMP_HXX
+#include <sspellimp.hxx>
+#endif
+
+#include <linguistic/lngprops.hxx>
+#include "spelldta.hxx"
+
+#ifndef INCLUDED_SVTOOLS_PATHOPTIONS_HXX
+#include <svtools/pathoptions.hxx>
+#endif
+#ifndef INCLUDED_SVTOOLS_USEROPTIONS_HXX
+#include <svtools/useroptions.hxx>
+#endif
+#include <osl/file.hxx>
+
+
+
+using namespace utl;
+using namespace osl;
+using namespace rtl;
+using namespace com::sun::star;
+using namespace com::sun::star::beans;
+using namespace com::sun::star::lang;
+using namespace com::sun::star::uno;
+using namespace com::sun::star::linguistic2;
+using namespace linguistic;
+
+
+///////////////////////////////////////////////////////////////////////////
+
+BOOL operator == ( const Locale &rL1, const Locale &rL2 )
+{
+ return rL1.Language == rL2.Language &&
+ rL1.Country == rL2.Country &&
+ rL1.Variant == rL2.Variant;
+}
+
+///////////////////////////////////////////////////////////////////////////
+
+SpellChecker::SpellChecker() :
+ aEvtListeners ( GetLinguMutex() )
+{
+ bDisposing = FALSE;
+ pPropHelper = NULL;
+ numdict = 0;
+}
+
+
+SpellChecker::~SpellChecker()
+{
+
+ for (int i = 0; i < numdict; i++) {
+ if (aDicts[i]) delete aDicts[i];
+ aDicts[i] = NULL;
+ }
+ delete[] aDicts;
+ aDicts = NULL;
+ delete[] aDEncs;
+ aDEncs = NULL;
+ delete[] aDLocs;
+ aDLocs = NULL;
+ delete[] aDNames;
+ aDNames = NULL;
+ numdict = 0;
+ if (pPropHelper)
+ pPropHelper->RemoveAsPropListener();
+}
+
+
+PropertyHelper_Spell & SpellChecker::GetPropHelper_Impl()
+{
+ if (!pPropHelper)
+ {
+ Reference< XPropertySet > xPropSet( GetLinguProperties(), UNO_QUERY );
+
+ pPropHelper = new PropertyHelper_Spell( (XSpellChecker *) this, xPropSet );
+ xPropHelper = pPropHelper;
+ pPropHelper->AddAsPropListener(); //! after a reference is established
+ }
+ return *pPropHelper;
+}
+
+
+Sequence< Locale > SAL_CALL SpellChecker::getLocales()
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ // this routine should return the locales supported by the installed
+ // dictionaries. So here we need to parse both the user edited
+ // dictionary list and the shared dictionary list
+ // to see what dictionaries the admin/user has installed
+
+ int numusr; // number of user dictionary entries
+ int numshr; // number of shared dictionary entries
+ dictentry * spdict; // shared dict entry pointer
+ dictentry * updict; // user dict entry pointer
+ SvtPathOptions aPathOpt;
+
+ if (!numdict) {
+
+ // invoke a dictionary manager to get the user dictionary list
+ OUString usrlst = aPathOpt.GetUserDictionaryPath() + A2OU("/dictionary.lst");
+ OUString ulst;
+ osl::FileBase::getSystemPathFromFileURL(usrlst,ulst);
+ OString uTmp(OU2ENC(ulst, osl_getThreadTextEncoding()));
+ DictMgr* udMgr = new DictMgr(uTmp.getStr(),"DICT");
+ numusr = 0;
+ if (udMgr)
+ numusr = udMgr->get_list(&updict);
+
+
+ // invoke a second dictionary manager to get the shared dictionary list
+ OUString shrlst = aPathOpt.GetLinguisticPath() + A2OU("/ooo/dictionary.lst");
+ OUString slst;
+ osl::FileBase::getSystemPathFromFileURL(shrlst,slst);
+ OString sTmp(OU2ENC(slst, osl_getThreadTextEncoding()));
+ DictMgr* sdMgr = new DictMgr(sTmp.getStr(),"DICT");
+ numshr = 0;
+ if (sdMgr)
+ numshr = sdMgr->get_list(&spdict);
+
+ // we really should merge these and remove duplicates but since
+ // users can name their dictionaries anything they want it would
+ // be impossible to know if a real duplication exists unless we
+ // add some unique key to each myspell dictionary
+ numdict = numshr + numusr;
+
+ if (numdict) {
+ aDicts = new MySpell* [numdict];
+ aDEncs = new rtl_TextEncoding [numdict];
+ aDLocs = new Locale [numdict];
+ aDNames = new OUString [numdict];
+ aSuppLocales.realloc(numdict);
+ Locale * pLocale = aSuppLocales.getArray();
+ int numlocs = 0;
+ int newloc;
+ int i,j;
+ int k = 0;
+
+ //first add the user dictionaries
+ for (i = 0; i < numusr; i++) {
+ Locale nLoc( A2OU(updict->lang), A2OU(updict->region), OUString() );
+ newloc = 1;
+ for (j = 0; j < numlocs; j++) {
+ if (nLoc == pLocale[j]) newloc = 0;
+ }
+ if (newloc) {
+ pLocale[numlocs] = nLoc;
+ numlocs++;
+ }
+ aDLocs[k] = nLoc;
+ aDicts[k] = NULL;
+ aDEncs[k] = 0;
+ aDNames[k] = aPathOpt.GetUserDictionaryPath() + A2OU("/") + A2OU(updict->filename);
+ k++;
+ updict++;
+ }
+
+ // now add the shared dictionaries
+ for (i = 0; i < numshr; i++) {
+ Locale nLoc( A2OU(spdict->lang), A2OU(spdict->region), OUString() );
+ newloc = 1;
+ for (j = 0; j < numlocs; j++) {
+ if (nLoc == pLocale[j]) newloc = 0;
+ }
+ if (newloc) {
+ pLocale[numlocs] = nLoc;
+ numlocs++;
+ }
+ aDLocs[k] = nLoc;
+ aDicts[k] = NULL;
+ aDEncs[k] = 0;
+ aDNames[k] = aPathOpt.GetLinguisticPath() + A2OU("/ooo/") + A2OU(spdict->filename);
+ k++;
+ spdict++;
+ }
+
+ aSuppLocales.realloc(numlocs);
+
+ } else {
+ /* no dictionary.lst so just use default en_US dictionary at shared location */
+ numdict = 1;
+ aDicts = new MySpell*[1];
+ aDEncs = new rtl_TextEncoding[1];
+ aDLocs = new Locale[1];
+ aDNames = new OUString[1];
+ aSuppLocales.realloc(1);
+ Locale *pLocale = aSuppLocales.getArray();
+ Locale nLoc( A2OU("en"), A2OU("US"), OUString() );
+ pLocale[0] = nLoc;
+ aDLocs[0] = nLoc;
+ aDicts[0] = NULL;
+ aDNames[0] = aPathOpt.GetLinguisticPath() + A2OU("/ooo/") + A2OU("en_US");
+ }
+
+ /* de-allocation of memory is handled inside the DictMgr */
+ updict = NULL;
+ if (udMgr) {
+ delete udMgr;
+ udMgr = NULL;
+ }
+ spdict = NULL;
+ if (sdMgr) {
+ delete sdMgr;
+ sdMgr = NULL;
+ }
+
+ }
+
+ return aSuppLocales;
+}
+
+
+sal_Bool SAL_CALL SpellChecker::hasLocale(const Locale& rLocale)
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ BOOL bRes = FALSE;
+ if (!aSuppLocales.getLength())
+ getLocales();
+
+ INT32 nLen = aSuppLocales.getLength();
+ for (INT32 i = 0; i < nLen; ++i)
+ {
+ const Locale *pLocale = aSuppLocales.getConstArray();
+ if (rLocale == pLocale[i])
+ {
+ bRes = TRUE;
+ break;
+ }
+ }
+ return bRes;
+}
+
+
+INT16 SpellChecker::GetSpellFailure( const OUString &rWord, const Locale &rLocale )
+{
+ MySpell * pMS;
+ rtl_TextEncoding aEnc;
+
+ // initialize a myspell object for each dictionary once
+ // (note: mutex is held higher up in isValid)
+
+
+ INT16 nRes = -1;
+ String aTmp( rWord );
+
+ if (aTmp.Len())
+ {
+
+ for (int i =0; i < numdict; i++) {
+ pMS = NULL;
+ aEnc = 0;
+
+ if (rLocale == aDLocs[i])
+ {
+ if (!aDicts[i])
+ {
+ OUString dicpath = aDNames[i] + A2OU(".dic");
+ OUString affpath = aDNames[i] + A2OU(".aff");
+ OUString dict;
+ OUString aff;
+ osl::FileBase::getSystemPathFromFileURL(dicpath,dict);
+ osl::FileBase::getSystemPathFromFileURL(affpath,aff);
+ OString aTmpaff(OU2ENC(aff,osl_getThreadTextEncoding()));
+ OString aTmpdict(OU2ENC(dict,osl_getThreadTextEncoding()));
+ aDicts[i] = new MySpell(aTmpaff.getStr(),aTmpdict.getStr());
+ aDEncs[i] = 0;
+ if (aDicts[i]) {
+ aDEncs[i] = rtl_getTextEncodingFromUnixCharset(aDicts[i]->get_dic_encoding());
+ }
+ }
+ pMS = aDicts[i];
+ aEnc = aDEncs[i];
+ }
+ if (pMS)
+ {
+ OString aWrd(OU2ENC(rWord,aEnc));
+ int rVal = pMS->spell((char*)aWrd.getStr());
+ if (rVal != 1)
+ {
+ nRes = SpellFailure::SPELLING_ERROR;
+ } else {
+ return -1;
+ }
+ pMS = NULL;
+ }
+ }
+ }
+
+ return nRes;
+}
+
+
+sal_Bool SAL_CALL
+ SpellChecker::isValid( const OUString& rWord, const Locale& rLocale,
+ const PropertyValues& rProperties )
+ throw(IllegalArgumentException, RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ if (rLocale == Locale() || !rWord.getLength())
+ return TRUE;
+
+ if (!hasLocale( rLocale ))
+#ifdef LINGU_EXCEPTIONS
+ throw( IllegalArgumentException() );
+#else
+ return TRUE;
+#endif
+
+ // Get property values to be used.
+ // These are be the default values set in the SN_LINGU_PROPERTIES
+ // PropertySet which are overridden by the supplied ones from the
+ // last argument.
+ // You'll probably like to use a simplier solution than the provided
+ // one using the PropertyHelper_Spell.
+
+ PropertyHelper_Spell &rHelper = GetPropHelper();
+ rHelper.SetTmpPropVals( rProperties );
+
+ INT16 nFailure = GetSpellFailure( rWord, rLocale );
+ if (nFailure != -1)
+ {
+ INT16 nLang = LocaleToLanguage( rLocale );
+ // postprocess result for errors that should be ignored
+ if ( (!rHelper.IsSpellUpperCase() && IsUpper( rWord, nLang ))
+ || (!rHelper.IsSpellWithDigits() && HasDigits( rWord ))
+ || (!rHelper.IsSpellCapitalization()
+ && nFailure == SpellFailure::CAPTION_ERROR)
+ )
+ nFailure = -1;
+ }
+
+ return (nFailure == -1);
+}
+
+
+Reference< XSpellAlternatives >
+ SpellChecker::GetProposals( const OUString &rWord, const Locale &rLocale )
+{
+ // Retrieves the return values for the 'spell' function call in case
+ // of a misspelled word.
+ // Especially it may give a list of suggested (correct) words:
+
+ Reference< XSpellAlternatives > xRes;
+ // note: mutex is held by higher up by spell which covers both
+
+ MySpell* pMS;
+ rtl_TextEncoding aEnc;
+ int count;
+ int numsug = 0;
+
+ String aTmp( rWord );
+ if (aTmp.Len())
+ {
+ INT16 nLang = LocaleToLanguage( rLocale );
+
+ Sequence< OUString > aStr( 0 );
+
+ for (int i =0; i < numdict; i++) {
+ pMS = NULL;
+ aEnc = 0;
+ count = 0;
+
+ if (rLocale == aDLocs[i])
+ {
+ pMS = aDicts[i];
+ aEnc = aDEncs[i];
+ }
+
+
+ if (pMS)
+ {
+ char ** suglst = NULL;
+ OString aWrd(OU2ENC(rWord,aEnc));
+ count = pMS->suggest(&suglst, (const char *) aWrd.getStr());
+
+ if (count) {
+
+ aStr.realloc( numsug + count );
+ OUString *pStr = aStr.getArray();
+ for (int i=0; i < count; i++)
+ {
+ // if needed add: if (suglst[i] == NULL) continue;
+ OUString cvtwrd(suglst[i],strlen(suglst[i]),aEnc);
+ pStr[numsug + i] = cvtwrd;
+ free(suglst[i]);
+ }
+ free(suglst);
+ numsug += count;
+ }
+ }
+ }
+
+ // now return an empty alternative for no suggestions or the list of alternatives if some found
+ SpellAlternatives *pAlt = new SpellAlternatives;
+ pAlt->SetWordLanguage( aTmp, nLang );
+ pAlt->SetFailureType( SpellFailure::SPELLING_ERROR );
+ pAlt->SetAlternatives( aStr );
+ xRes = pAlt;
+ return xRes;
+
+ }
+ return xRes;
+}
+
+
+
+
+Reference< XSpellAlternatives > SAL_CALL
+ SpellChecker::spell( const OUString& rWord, const Locale& rLocale,
+ const PropertyValues& rProperties )
+ throw(IllegalArgumentException, RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ if (rLocale == Locale() || !rWord.getLength())
+ return NULL;
+
+ if (!hasLocale( rLocale ))
+#ifdef LINGU_EXCEPTIONS
+ throw( IllegalArgumentException() );
+#else
+ return NULL;
+#endif
+
+ Reference< XSpellAlternatives > xAlt;
+ if (!isValid( rWord, rLocale, rProperties ))
+ {
+ xAlt = GetProposals( rWord, rLocale );
+ }
+ return xAlt;
+}
+
+
+Reference< XInterface > SAL_CALL SpellChecker_CreateInstance(
+ const Reference< XMultiServiceFactory > & rSMgr )
+ throw(Exception)
+{
+
+ Reference< XInterface > xService = (cppu::OWeakObject*) new SpellChecker;
+ return xService;
+}
+
+
+sal_Bool SAL_CALL
+ SpellChecker::addLinguServiceEventListener(
+ const Reference< XLinguServiceEventListener >& rxLstnr )
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ BOOL bRes = FALSE;
+ if (!bDisposing && rxLstnr.is())
+ {
+ bRes = GetPropHelper().addLinguServiceEventListener( rxLstnr );
+ }
+ return bRes;
+}
+
+
+sal_Bool SAL_CALL
+ SpellChecker::removeLinguServiceEventListener(
+ const Reference< XLinguServiceEventListener >& rxLstnr )
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ BOOL bRes = FALSE;
+ if (!bDisposing && rxLstnr.is())
+ {
+ DBG_ASSERT( xPropHelper.is(), "xPropHelper non existent" );
+ bRes = GetPropHelper().removeLinguServiceEventListener( rxLstnr );
+ }
+ return bRes;
+}
+
+
+OUString SAL_CALL
+ SpellChecker::getServiceDisplayName( const Locale& rLocale )
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+ return A2OU( "OpenOffice.org MySpell SpellChecker" );
+}
+
+
+void SAL_CALL
+ SpellChecker::initialize( const Sequence< Any >& rArguments )
+ throw(Exception, RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ if (!pPropHelper)
+ {
+ INT32 nLen = rArguments.getLength();
+ if (2 == nLen)
+ {
+ Reference< XPropertySet > xPropSet;
+ rArguments.getConstArray()[0] >>= xPropSet;
+ //rArguments.getConstArray()[1] >>= xDicList;
+
+ //! Pointer allows for access of the non-UNO functions.
+ //! And the reference to the UNO-functions while increasing
+ //! the ref-count and will implicitly free the memory
+ //! when the object is not longer used.
+ pPropHelper = new PropertyHelper_Spell( (XSpellChecker *) this, xPropSet );
+ xPropHelper = pPropHelper;
+ pPropHelper->AddAsPropListener(); //! after a reference is established
+ }
+ else
+ DBG_ERROR( "wrong number of arguments in sequence" );
+
+ }
+}
+
+
+void SAL_CALL
+ SpellChecker::dispose()
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ if (!bDisposing)
+ {
+ bDisposing = TRUE;
+ EventObject aEvtObj( (XSpellChecker *) this );
+ aEvtListeners.disposeAndClear( aEvtObj );
+ }
+}
+
+
+void SAL_CALL
+ SpellChecker::addEventListener( const Reference< XEventListener >& rxListener )
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ if (!bDisposing && rxListener.is())
+ aEvtListeners.addInterface( rxListener );
+}
+
+
+void SAL_CALL
+ SpellChecker::removeEventListener( const Reference< XEventListener >& rxListener )
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ if (!bDisposing && rxListener.is())
+ aEvtListeners.removeInterface( rxListener );
+}
+
+
+///////////////////////////////////////////////////////////////////////////
+// Service specific part
+//
+
+OUString SAL_CALL SpellChecker::getImplementationName()
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ return getImplementationName_Static();
+}
+
+
+sal_Bool SAL_CALL SpellChecker::supportsService( const OUString& ServiceName )
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ Sequence< OUString > aSNL = getSupportedServiceNames();
+ const OUString * pArray = aSNL.getConstArray();
+ for( INT32 i = 0; i < aSNL.getLength(); i++ )
+ if( pArray[i] == ServiceName )
+ return TRUE;
+ return FALSE;
+}
+
+
+Sequence< OUString > SAL_CALL SpellChecker::getSupportedServiceNames()
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ return getSupportedServiceNames_Static();
+}
+
+
+Sequence< OUString > SpellChecker::getSupportedServiceNames_Static()
+ throw()
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ Sequence< OUString > aSNS( 1 ); // auch mehr als 1 Service moeglich
+ aSNS.getArray()[0] = A2OU( SN_SPELLCHECKER );
+ return aSNS;
+}
+
+
+sal_Bool SAL_CALL SpellChecker_writeInfo(
+ void * /*pServiceManager*/, registry::XRegistryKey * pRegistryKey )
+{
+
+ try
+ {
+ String aImpl( '/' );
+ aImpl += SpellChecker::getImplementationName_Static().getStr();
+ aImpl.AppendAscii( "/UNO/SERVICES" );
+ Reference< registry::XRegistryKey > xNewKey =
+ pRegistryKey->createKey( aImpl );
+ Sequence< OUString > aServices =
+ SpellChecker::getSupportedServiceNames_Static();
+ for( INT32 i = 0; i < aServices.getLength(); i++ )
+ xNewKey->createKey( aServices.getConstArray()[i] );
+
+ return sal_True;
+ }
+ catch(Exception &)
+ {
+ return sal_False;
+ }
+}
+
+
+void * SAL_CALL SpellChecker_getFactory( const sal_Char * pImplName,
+ XMultiServiceFactory * pServiceManager, void * )
+{
+ void * pRet = 0;
+ if ( !SpellChecker::getImplementationName_Static().compareToAscii( pImplName ) )
+ {
+ Reference< XSingleServiceFactory > xFactory =
+ cppu::createOneInstanceFactory(
+ pServiceManager,
+ SpellChecker::getImplementationName_Static(),
+ SpellChecker_CreateInstance,
+ SpellChecker::getSupportedServiceNames_Static());
+ // acquire, because we return an interface pointer instead of a reference
+ xFactory->acquire();
+ pRet = xFactory.get();
+ }
+ return pRet;
+}
+
+
+///////////////////////////////////////////////////////////////////////////
diff --git a/lingucomponent/source/spellcheck/spell/sspellimp.hxx b/lingucomponent/source/spellcheck/spell/sspellimp.hxx
new file mode 100644
index 000000000000..09ae5c392dce
--- /dev/null
+++ b/lingucomponent/source/spellcheck/spell/sspellimp.hxx
@@ -0,0 +1,237 @@
+/*************************************************************************
+ *
+ * $RCSfile: sspellimp.hxx,v $
+ *
+ * $Revision: 1.5 $
+ *
+ * last change: $Author: hr $ $Date: 2003-03-26 13:03:05 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _LINGU2_SPELLIMP_HXX_
+#define _LINGU2_SPELLIMP_HXX_
+
+#include <uno/lbnames.h> // CPPU_CURRENT_LANGUAGE_BINDING_NAME macro, which specify the environment type
+#include <cppuhelper/implbase1.hxx> // helper for implementations
+#include <cppuhelper/implbase6.hxx> // helper for implementations
+
+#ifndef _COM_SUN_STAR_LANG_XCOMPONENT_HPP_
+#include <com/sun/star/lang/XComponent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XINITIALIZATION_HPP_
+#include <com/sun/star/lang/XInitialization.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XSERVICEDISPLAYNAME_HPP_
+#include <com/sun/star/lang/XServiceDisplayName.hpp>
+#endif
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/beans/PropertyValues.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/linguistic2/XSpellChecker.hpp>
+#include <com/sun/star/linguistic2/XSearchableDictionaryList.hpp>
+#include <com/sun/star/linguistic2/XLinguServiceEventBroadcaster.hpp>
+
+#ifndef _TOOLS_TABLE_HXX
+#include <tools/table.hxx>
+#endif
+
+#include <linguistic/misc.hxx>
+#include "sprophelp.hxx"
+
+using namespace ::rtl;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::linguistic2;
+
+
+#define A2OU(x) ::rtl::OUString::createFromAscii( x )
+
+#define OU2A(rtlOUString) ::rtl::OString((rtlOUString).getStr(), (rtlOUString).getLength(), RTL_TEXTENCODING_ASCII_US).getStr()
+
+#define OU2UTF8(rtlOUString) ::rtl::OString((rtlOUString).getStr(), (rtlOUString).getLength(), RTL_TEXTENCODING_UTF8).getStr()
+
+#define OU2ISO_1(rtlOUString) ::rtl::OString((rtlOUString).getStr(), (rtlOUString).getLength(), RTL_TEXTENCODING_ISO_8859_1).getStr()
+
+#define OU2ENC(rtlOUString, rtlEncoding) ::rtl::OString((rtlOUString).getStr(), (rtlOUString).getLength(), rtlEncoding).getStr()
+
+
+///////////////////////////////////////////////////////////////////////////
+
+
+class SpellChecker :
+ public cppu::WeakImplHelper6
+ <
+ XSpellChecker,
+ XLinguServiceEventBroadcaster,
+ XInitialization,
+ XComponent,
+ XServiceInfo,
+ XServiceDisplayName
+ >
+{
+ Sequence< Locale > aSuppLocales;
+ MySpell ** aDicts;
+ rtl_TextEncoding * aDEncs;
+ Locale * aDLocs;
+ OUString * aDNames;
+ sal_Int32 numdict;
+
+ ::cppu::OInterfaceContainerHelper aEvtListeners;
+ Reference< XPropertyChangeListener > xPropHelper;
+ PropertyHelper_Spell * pPropHelper;
+ BOOL bDisposing;
+
+ // disallow copy-constructor and assignment-operator for now
+ SpellChecker(const SpellChecker &);
+ SpellChecker & operator = (const SpellChecker &);
+
+ PropertyHelper_Spell & GetPropHelper_Impl();
+ PropertyHelper_Spell & GetPropHelper()
+ {
+ return pPropHelper ? *pPropHelper : GetPropHelper_Impl();
+ }
+
+ INT16 GetSpellFailure( const OUString &rWord, const Locale &rLocale );
+ Reference< XSpellAlternatives >
+ GetProposals( const OUString &rWord, const Locale &rLocale );
+
+public:
+ SpellChecker();
+ virtual ~SpellChecker();
+
+ // XSupportedLocales (for XSpellChecker)
+ virtual Sequence< Locale > SAL_CALL
+ getLocales()
+ throw(RuntimeException);
+ virtual sal_Bool SAL_CALL
+ hasLocale( const Locale& rLocale )
+ throw(RuntimeException);
+
+ // XSpellChecker
+ virtual sal_Bool SAL_CALL
+ isValid( const OUString& rWord, const Locale& rLocale,
+ const PropertyValues& rProperties )
+ throw(IllegalArgumentException,
+ RuntimeException);
+ virtual Reference< XSpellAlternatives > SAL_CALL
+ spell( const OUString& rWord, const Locale& rLocale,
+ const PropertyValues& rProperties )
+ throw(IllegalArgumentException,
+ RuntimeException);
+
+ // XLinguServiceEventBroadcaster
+ virtual sal_Bool SAL_CALL
+ addLinguServiceEventListener(
+ const Reference< XLinguServiceEventListener >& rxLstnr )
+ throw(RuntimeException);
+ virtual sal_Bool SAL_CALL
+ removeLinguServiceEventListener(
+ const Reference< XLinguServiceEventListener >& rxLstnr )
+ throw(RuntimeException);
+
+ // XServiceDisplayName
+ virtual OUString SAL_CALL
+ getServiceDisplayName( const Locale& rLocale )
+ throw(RuntimeException);
+
+ // XInitialization
+ virtual void SAL_CALL
+ initialize( const Sequence< Any >& rArguments )
+ throw(Exception, RuntimeException);
+
+ // XComponent
+ virtual void SAL_CALL
+ dispose()
+ throw(RuntimeException);
+ virtual void SAL_CALL
+ addEventListener( const Reference< XEventListener >& rxListener )
+ throw(RuntimeException);
+ virtual void SAL_CALL
+ removeEventListener( const Reference< XEventListener >& rxListener )
+ throw(RuntimeException);
+
+ ////////////////////////////////////////////////////////////
+ // Service specific part
+ //
+
+ // XServiceInfo
+ virtual OUString SAL_CALL
+ getImplementationName()
+ throw(RuntimeException);
+ virtual sal_Bool SAL_CALL
+ supportsService( const OUString& rServiceName )
+ throw(RuntimeException);
+ virtual Sequence< OUString > SAL_CALL
+ getSupportedServiceNames()
+ throw(RuntimeException);
+
+
+ static inline OUString
+ getImplementationName_Static() throw();
+ static Sequence< OUString >
+ getSupportedServiceNames_Static() throw();
+};
+
+inline OUString SpellChecker::getImplementationName_Static() throw()
+{
+ return A2OU( "org.openoffice.lingu.MySpellSpellChecker" );
+}
+
+
+
+///////////////////////////////////////////////////////////////////////////
+
+#endif
+